{ ------------------------------------------------------------------------------- PROGRAMA : ENVIOESTADOCXC OBJETIVO : Estado de Cuentas de Clientes a una fecha especifica tomando en cuenta el historial de debitos y creditos PROGRAMADOR : Ing. Juan F. Soto FECHA REALIZACION : Noviembre 8, 2022 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE prima DECIMAL(10,2) ## Variable que equivale a la prima de otra moneda , imprimeencabezado VARCHAR(2) DEFINE fecha_inicial,fecha_final DATE ## Varible busqueda por fecha de corte DEFINE selec5,selec6,selec7, attachment,rutafile STRING ## Variables para almacenar busquedas DEFINE tipo1 CHAR(2) DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings() r_filename STRING, -- filename of Report Design Document including .4rp extension r_output STRING, -- output format option preview INTEGER -- TRUE/FALSE, to set preview option ####### Variables para desplegar resultados por pantalla ante de la impresion ##### Registro que almacena la infoprmacion a imprimir #### DEFINE mvtos1 RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), limite DECIMAL(12,2), num_rnc CHAR(10), zona SMALLINT, num_doc INTEGER, aplica_a INTEGER, tipo CHAR(2), fecha DATE, valor DECIMAL(10,2), cotizacion_no INT, cliente CHAR(20), orden INT, conduce INT END RECORD, valor2,balance DEC(12,2), borden INT, psimbolo CHAR(3), xcotizacion,xorden INT, tipoinfo CHAR(2) MAIN DEFER INTERRUPT CALL STARTLOG("envioestadocxc.log") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to 'marmotech' AS 'SQL_E' USER usuarios USING clave CALL VariacionBalances(15,1456) END MAIN FUNCTION ccprrp014(ptipocliente,seccliente) DEFINE ordenado STRING, ptipocliente,seccliente INT, xtipoconection VARCHAR(20) OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 # Busca los documentos que esten en el rango de fechas especificado LET fecha_final = TODAY LET fecha_inicial = TODAY - 30 LET idx = 1 IF prima IS NULL THEN LET prima = 1 END IF LET imprime = "SI" SELECT a.* INTO p_companias.* FROM companias a LET selec3= "SELECT a.num_doc,a.aplica_a,a.tipo_doc,CONVERT(CHAR(10),a.fecha_orig,103), (a.valor+a.monto_desc),a.documento_ref FROM cctb00001 a WHERE a.tipo_cliente=? AND a.sec_cliente=? AND a.status_t is null AND a.fecha_orig BETWEEN ? AND ? AND a.tipo_doc in ('PG','FT','FE','NC','ND','DV','OC','OD','RC','PC','BI') UNION SELECT a.num_doc,a.aplica_a,a.tipo_doc,CONVERT(CHAR(10),a.fecha_orig,103), (a.valor+a.monto_desc)*-1,a.documento_ref FROM cctb00001 a WHERE a.tipo_cliente=? AND a.sec_cliente= ? AND a.status_t is null AND a.fecha_orig BETWEEN ? AND ? AND a.tipo_doc = 'AV' AND a.aplica_a = a.num_doc " LET selec = "SELECT SUM(a.valor+a.monto_desc) FROM cctb00001 a WHERE a.tipo_cliente = ? AND a.sec_cliente =? AND a.tipo_doc in ('PG','FT','FE','NC','ND','DV','OC','OD','RC','PC','BI') AND a.fecha_orig < ? AND a.status_t IS NULL" LET selec1 = "SELECT SUM(a.valor+a.monto_desc) FROM cctb00001 a WHERE a.tipo_cliente = ? AND a.sec_cliente = ? AND a.tipo_doc IN ('AV') AND a.num_doc = a.aplica_a AND a.fecha_orig < ? AND a.status_t IS NULL" IF strconect ='smarmotech' THEN LET selec4 = "SELECT MAX(a.orden),MAX(a.cotizacion_no) FROM vetb00002 a WHERE (a.factura = ?) AND (a.tipo_cliente = ? AND a.sec_cliente=?)" ELSE LET selec4 = "SELECT MAX(a.orden),MAX(a.conduce) FROM vetb00002 a WHERE (a.factura = ?) AND (a.tipo_cliente = ? AND a.sec_cliente=?)" END IF LET selec6= "SELECT MAX(a.documento_ref) FROM cctb00001 a WHERE a.num_doc = ? AND a.num_doc = a.aplica_a AND a.tipo_doc ='AV' AND a.tipo_cliente = ? AND a.sec_cliente = ?" LET selec7 = "SELECT MAX(a.num_oc) FROM prtb00012 a WHERE a.cotizacion_no=? AND a.tipo_cliente = ? AND a.sec_cliente = ? AND a.status_t IS NULL" LET selec5 = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre,a.limite_credito,a.num_rnc,a.cod_zona ", " FROM vetb00004 a WHERE a.tipo_cliente = ? and a.sec_cliente = ?" LET selec1 = "SELECT SUM(a.valor+a.monto_desc) FROM cctb00001 a WHERE a.tipo_cliente = ? AND a.sec_cliente = ? AND a.tipo_doc IN ('AV') AND a.num_doc = a.aplica_a AND a.fecha_orig < ? AND a.status_t IS NULL" #-------------------------------------------------------------------------------------------------------- PREPARE bcotizacion2 FROM selec4 PREPARE bdclientes FROM selec3 PREPARE balance1 FROM selec PREPARE balance2 FROM selec1 PREPARE cotizacion1 FROM selec6 PREPARE orden1 FROM selec7 DISPLAY "PARAMETRO: ",ptipocliente," ",seccliente PREPARE clientes FROM selec5 DECLARE bclientes CURSOR FOR clientes OPEN bclientes USING ptipocliente,seccliente LET r_filename = 'envioestado.4rp' LET rutafile ='.\\FILES\\' LET attachment = rutafile CLIPPED,'estado.pdf' LET idx = 1 FOREACH bclientes INTO mvtos1.tipo_cliente,mvtos1.sec_cliente,mvtos1.nombre,mvtos1.limite,mvtos1.num_rnc, mvtos1.zona LET mvtos1.cliente = mvtos1.tipo_cliente using "&&","-", mvtos1.sec_cliente using "&&&&&&" DISPLAY "estoy en reporte: ", mvtos1.cliente IF idx = 1 THEN IF fgl_report_loadCurrentSettings(r_filename) THEN #LET preview=1 CALL fgl_report_setOutputFileName(attachment) CALL fgl_report_selectDevice("PDF") -- changing default CALL fgl_report_selectPreview(FALSE) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF # IF ordenado = "orden" THEN # START REPORT report14 TO XML HANDLER HANDLER # ELSE START REPORT report14 TO XML HANDLER HANDLER # END IF END IF # BALANCE INICIAL LET valor1 = 0 LET valor2 = 0 # busca balance1 EXECUTE balance1 INTO valor1 USING mvtos1.tipo_cliente,mvtos1.sec_cliente,fecha_inicial IF valor1 IS NULL THEN LET valor1 = 0 END IF # busca balance 2 EXECUTE balance2 INTO valor2 USING mvtos1.tipo_cliente,mvtos1.sec_cliente,fecha_inicial IF valor2 IS NULL THEN LET valor2 = 0 END IF PREPARE comando1 FROM SELEC5 LET balance = valor1 - valor2 LET balance = balance*prima LET mvtos1.valor = 0 LET mvtos1.fecha = fecha_inicial #### Seleciona los datos generales de identificacion del cliente OUTPUT TO REPORT report14(mvtos1.*) LET idx = idx +1 # ENVIO DETALLE DECLARE dclientes CURSOR FOR bdclientes OPEN dclientes USING mvtos1.tipo_cliente,mvtos1.sec_cliente,fecha_inicial,fecha_final, mvtos1.tipo_cliente,mvtos1.sec_cliente,fecha_inicial,fecha_final FOREACH dclientes INTO mvtos1.num_doc,mvtos1.aplica_a,mvtos1.tipo,mvtos1.fecha, mvtos1.valor LET mvtos1.valor = mvtos1.valor * prima LET tipo1 = mvtos1.tipo LET mvtos1.orden = NULL LET xcotizacion = NULL IF strconect='marmotech' THEN SELECT a.simbolo INTO psimbolo FROM vetb00060 a,vetb00061 b WHERE b.tipo_cliente = mvtos1.tipo_cliente AND a.ventas = b.ventas EXECUTE bcotizacion2 INTO mvtos1.orden,mvtos1.cotizacion_no USING mvtos1.aplica_a,mvtos1.tipo_cliente,mvtos1.sec_cliente IF tipo1='AV' THEN # busqueda de la cotizacion en cxc EXECUTE cotizacion1 INTO mvtos1.cotizacion_no USING mvtos1.aplica_a,mvtos1.tipo_cliente,mvtos1.sec_cliente EXECUTE orden1 INTO mvtos1.orden USING mvtos1.cotizacion_no,mvtos1.tipo_cliente,mvtos1.sec_cliente END IF ELSE SELECT a.simbolo INTO psimbolo FROM vetb00060 a,vetb00061 b WHERE b.tipo_cliente = mvtos1.tipo_cliente AND a.ventas = b.ventas # busca orden y cotizacion EXECUTE bcotizacion2 INTO mvtos1.orden,mvtos1.cotizacion_no USING mvtos1.aplica_a,mvtos1.tipo_cliente,mvtos1.sec_cliente IF tipo1='AV' THEN # busqueda de la cotizacion en cxc EXECUTE cotizacion1 INTO mvtos1.cotizacion_no USING mvtos1.aplica_a,mvtos1.tipo_cliente,mvtos1.sec_cliente EXECUTE orden1 INTO mvtos1.orden USING mvtos1.cotizacion_no,mvtos1.tipo_cliente,mvtos1.sec_cliente ELSE #CONDUCE ALMACEN SELECT MAX(a.conduce),MAX(a.documento),MAX(a.orden) INTO mvtos1.conduce,mvtos1.cotizacion_no,mvtos1.orden FROM vetb00002 a WHERE a.factura = mvtos1.aplica_a AND a.tipo_cliente = mvtos1.tipo_cliente and a.sec_cliente = mvtos1.sec_cliente and a.status_t IS NULL END IF END IF OUTPUT TO REPORT report14(mvtos1.*) END FOREACH END FOREACH IF idx > 1 THEN FINISH REPORT report14 END IF END FUNCTION ####### Funcion para dar salida a la informacion REPORT report14(j) DEFINE j RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), limite DECIMAL(12,2), num_rnc CHAR(10), zona SMALLINT, num_doc INTEGER, aplica_a INTEGER, tipo CHAR(2), fecha DATE, valor DECIMAL(10,2), cotizacion_no INT, cliente CHAR(20), orden INT, conduce INT END RECORD DEFINE p_calle,p_descrip CHAR(30), c_direccion VARCHAR(100) DEFINE p_casa CHAR(10) DEFINE hora CHAR(5) DEFINE d_debito,d_credito,d_balance, credito,debito,tcredito,tdebito,tbalance,limite,b_balance, cte,v1_30,v31_45,v46_60,vm_60,balance_orden,bvalor1,bvalor2 DECIMAL(12,2), chfecha CHAR(20), dias INT OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 #### Proceso para sortear la informacion ORDER BY j.cliente,j.orden,j.fecha ###### Diseno de la salida de la informacion FORMAT PAGE HEADER LET hora = TIME IF j.tipo_cliente =19 OR j.tipo_cliente=18 THEN LET imprimeencabezado="NO" ELSE LET imprimeencabezado = 'SI' END IF LET chfecha = today using "dd/mm/yyyy"," ",hora ##### Si el cliente es local el valor de la prima de la moneda es nulo SKIP 1 LINES BEFORE GROUP OF j.cliente LET b_balance = 0 LET v1_30 = 0 LET v31_45 = 0 LET v46_60 = 0 LET vm_60 = 0 LET cte = 0 SELECT c.calle,c.casa_num INTO p_calle,p_casa FROM vetb00005 c WHERE c.tipo_cliente=j.tipo_cliente and c.sec_cliente = j.sec_cliente and c.status_t is null SELECT d.descrip INTO p_descrip FROM vetb00008 d WHERE d.cod_zona = j.zona AND d.status_t IS NULL LET c_direccion = p_calle CLIPPED,' ',p_casa CLIPPED,' ',p_descrip IF limite IS NULL THEN LET limite = 0 END IF PRINTX j.cliente, j.nombre,j.limite,prima,p_companias.nombre, fecha_final,chfecha,p_calle,p_casa,j.num_rnc,c_direccion,fecha_inicial,balance,imprime, imprimeencabezado LET debito = 0 LET credito = 0 LET b_balance = balance BEFORE GROUP OF j.orden LET balance_orden = 0 LET bvalor1 = 0 LET bvalor2 = 0 SELECT SUM(a.valor+a.monto_desc) INTO bvalor1 FROM cctb00001 a WHERE a.tipo_cliente = mvtos1.tipo_cliente AND a.sec_cliente = mvtos1.sec_cliente AND a.tipo_doc in ('PG','FT','FE','NC','ND','DV','OC','OD','RC','BI') AND a.documento_ref = j.cotizacion_no AND a.fecha_orig < fecha_inicial AND a.status_t IS NULL IF bvalor1 IS NULL THEN LET bvalor1 = 0 END IF SELECT SUM(a.valor+a.monto_desc) INTO bvalor2 FROM cctb00001 a WHERE a.tipo_cliente = mvtos1.tipo_cliente AND a.sec_cliente = mvtos1.sec_cliente AND a.tipo_doc IN ('AV') AND a.num_doc = a.aplica_a AND a.fecha_orig < fecha_inicial AND a.documento_ref = j.cotizacion_no AND a.status_t IS NULL IF bvalor2 IS NULL THEN LET bvalor2 = 0 END IF LET balance_orden = bvalor1 - bvalor2 ON EVERY ROW IF b_balance IS NULL THEN LET b_balance = 0 END IF # IF j.fecha >= fecha_inicial THEN LET b_balance = b_balance + j.valor LET d_credito = 0 LET d_debito = 0 IF j.valor < 0 THEN LET d_credito = j.valor LET credito = credito + j.valor ELSE LET d_debito = j.valor LET debito = debito + j.valor END IF LET balance_orden = balance_orden + j.valor #END IF PRINTX j.num_doc, j.tipo, j.fecha, j.aplica_a,j.orden,j.cotizacion_no,d_debito,d_credito,d_balance, psimbolo,b_balance,balance_orden,j.conduce LET dias = 0 LET dias = fecha_final - j.fecha LET imprime = "SI" IF dias <= 0 THEN LET cte = j.valor + cte END IF IF dias > 0 AND dias < 30 THEN LET v1_30 = v1_30 + j.valor END IF IF dias > 30 and dias < 60 THEN LET v31_45 = v31_45 + j.valor END IF IF dias > 61 and dias < 90 THEN LET v46_60 = v46_60 + j.valor END IF IF dias > 90 THEN LET vm_60 = vm_60 + j.valor END IF AFTER GROUP OF j.cliente PRINTX cte,v1_30,v31_45,v46_60, vm_60 END REPORT REPORT report14b(j) DEFINE j RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), limite DECIMAL(12,2), num_rnc CHAR(10), zona SMALLINT, num_doc INTEGER, aplica_a INTEGER, tipo CHAR(2), fecha DATE, valor DECIMAL(10,2), cotizacion_no INT, cliente CHAR(20), orden INT, conduce INT END RECORD DEFINE p_calle,p_descrip CHAR(30), c_direccion VARCHAR(100) DEFINE p_casa CHAR(10) DEFINE hora CHAR(5) DEFINE d_debito,d_credito,d_balance, credito,debito,tcredito,tdebito,tbalance,limite,b_balance, cte,v1_30,v31_45,v46_60,vm_60 DECIMAL(12,2), chfecha CHAR(20) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 #### Proceso para sortear la informacion ORDER BY j.cliente,j.fecha ###### Diseno de la salida de la informacion FORMAT PAGE HEADER LET hora = TIME IF j.tipo_cliente =19 OR j.tipo_cliente=18 THEN LET imprimeencabezado="NO" ELSE LET imprimeencabezado = 'SI' END IF LET chfecha = today using "dd/mm/yyyy"," ",hora ##### Si el cliente es local el valor de la prima de la moneda es nulo SKIP 1 LINES BEFORE GROUP OF j.cliente LET b_balance = 0 LET v1_30 = 0 LET v31_45 = 0 LET v46_60 = 0 LET vm_60 = 0 LET cte = 0 SELECT c.calle,c.casa_num INTO p_calle,p_casa FROM vetb00005 c WHERE c.tipo_cliente=j.tipo_cliente and c.sec_cliente = j.sec_cliente and c.status_t is null SELECT d.descrip INTO p_descrip FROM vetb00008 d WHERE d.cod_zona = j.zona AND d.status_t IS NULL LET c_direccion = p_calle CLIPPED,' ',p_casa CLIPPED,' ',p_descrip IF limite IS NULL THEN LET limite = 0 END IF PRINTX j.cliente, j.nombre,j.limite,prima,p_companias.nombre, fecha_final,chfecha,p_calle,p_casa,j.num_rnc,c_direccion,fecha_inicial,balance,imprime, j.tipo_cliente,imprimeencabezado LET debito = 0 LET credito = 0 LET b_balance = balance ON EVERY ROW IF b_balance IS NULL THEN LET b_balance = 0 END IF # IF j.fecha >= fecha_inicial THEN LET b_balance = b_balance + j.valor LET d_credito = 0 LET d_debito = 0 IF j.valor < 0 THEN LET d_credito = j.valor LET credito = credito + j.valor ELSE LET d_debito = j.valor LET debito = debito + j.valor END IF #END IF PRINTX j.num_doc, j.tipo, j.fecha, j.aplica_a,j.orden,j.cotizacion_no,d_debito,d_credito,d_balance, psimbolo,b_balance,j.conduce { LET dias = 0 LET dias = fecha_final - j.fecha IF dias <= 0 THEN LET cte = j.valor + cte END IF IF dias > 0 AND dias < 30 THEN LET v1_30 = v1_30 + j.valor END IF IF dias > 30 and dias < 60 THEN LET v31_45 = v31_45 + j.valor END IF IF dias > 61 and dias < 90 THEN LET v46_60 = v46_60 + j.valor END IF IF dias > 90 THEN LET vm_60 = vm_60 + j.valor END IF} AFTER GROUP OF j.cliente PRINTX cte,v1_30,v31_45,v46_60, vm_60 END REPORT { FUNCTION e_ccrp18() DEFINE primera,imprime_ana,imprime_cliente CHAR(1), cliente CHAR(70), codigo_g,codigo_ant,codigo_act CHAR(6), ret CHAR(30), ejecuta,localiza CHAR(80), documento CHAR(9) --# CALL fgl_init4js() --# LET archivo = NULL --# LET filename = NULL --# LET filename = FGL_GETENV("USPROGRAM") --# LET archivo = "G:\\\\ESTADO.XLS" --# LET sysos = FGL_GETENV("OS") --# IF sysos = "Windows_NT" THEN --# LET filename = filename CLIPPED," G:\\\\ESTADO.XLS" --# LET localiza = "G:\\ESTADOS\\" --# LET ejecuta = "DEL /S /Q ",localiza CLIPPED,"*.*" RUN ejecuta LET ejecuta = NULL --# ELSE --# LET filename = "C:\\\\ARCHIV~1\\\\MICROS~1\\\\OFFICE\\\\EXCEL.EXE G:\\\\ESTADO.XLS" --# LET localiza = "G:\\ESTADOS\\" --# LET archivo = "G:\\\\ESTADO.XLS" --# LET ejecuta = "DEL ",localiza CLIPPED,"*.xls" RUN ejecuta LET ejecuta = NULL --# END IF # CREACION TABLA TEMPORAL CREATE TABLE estado ( tipo_cliente SMALLINT, sec_cliente SMALLINT, aplica_a INTEGER, fecha_venc DATE, valor DECIMAL(12,2) ) LET primera = "S" LET salir = "N" WHILE salir != "S" FETCH movtos_cli INTO movtos.* IF status = NOTFOUND THEN LET salir = "S" EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF prima IS NOT NULL THEN LET movtos.valor = movtos.valor * prima END IF SELECT MAX(a.fecha_orig) INTO fecha3 FROM cctb00001 a WHERE a.num_doc = movtos.aplica_a AND a.status_t IS NULL AND a.aplica_a = a.num_doc INSERT INTO estado VALUES (movtos.tipo_cliente,movtos.sec_cliente, movtos.aplica_a,fecha3,movtos.valor) END WHILE --# IF winexec(filename) THEN --# IF DDEconnect("EXCEL",archivo) THEN --# LET cels = "R",6 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,fecha_final) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF DECLARE buscate CURSOR FOR SELECT a.tipo_cliente,a.sec_cliente,a.aplica_a,SUM(a.valor) FROM estado a GROUP BY 1,2,3 ORDER BY 1,2 LET primera = "S" LET cnt = 16 LET balance = 0 LET codigo_ant = "1" LET codigo_Act = NULL FOREACH buscate INTO movtos.* LET codigo_Act = movtos.tipo_cliente USING "##",movtos.sec_cliente USING "&&&&" LET imprime_ana = "N" IF primera = "S" THEN LET codigo_ant = codigo_Act END IF IF codigo_ant != codigo_act THEN LET codigo_ant = codigo_Act LET primera = "S" LET imprime_ana = "S" --# LET cels = "R",38 USING "<<","C2" --# IF DDEpoke("EXCEL",archivo,cels,no_v) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",38 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,v1_30) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",38 USING "<<","C4" --# IF DDEpoke("EXCEL",archivo,cels,v31_45) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",38 USING "<<","C5" --# IF DDEpoke("EXCEL",archivo,cels,v46_60) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",38 USING "<<","C7" --# IF DDEpoke("EXCEL",archivo,cels,vm_60) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET command = "Run(\\\"ESTADO.XLS!SALVAR\\\";FALSE)" --# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret --# IF sysos = "Windows_NT" THEN LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\", codigo_g,".xls" --# ELSE LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\", codigo_g,".xls" --# END IF RUN ejecuta --# LET command = "Run(\\\"ESTADO.XLS!LIMPIAR\\\";FALSE)" --# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret LET cnt = 16 --# END IF --# IF primera = "S" THEN LET primera = "N" LET imprime_cliente = "S" LET no_v = 0 LET v1_30 = 0 LET v31_45 = 0 LET v46_60 = 0 LET vm_60 = 0 #### Seleciona los datos generales de identificacion del cliente LET codigo_g = movtos.tipo_cliente USING "##",movtos.sec_cliente USING "&&&&" SELECT UNIQUE b.nombre,b.limite_credito,b.zona_postal,b.num_rnc,c.calle, c.casa_num,b.telefono,b.cod_zona,b.cod_provincia,c.barrio INTO p_nombre,p_limite_credito,p_zona,p_numero,p_calle,p_casa, ptelefono,pzona,pprovincia,pbarrio FROM vetb00004 b ,vetb00005 c WHERE b.tipo_cliente = movtos.tipo_cliente and b.sec_cliente = movtos.sec_cliente and b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente and b.status_t is null SELECT a.descrip INTO nombre_zona FROM vetb00008 a WHERE a.cod_zona = pzona SELECT b.nombre_provincia INTO nombre_p FROM vetb00009 a, vetb00020 b WHERE a.cod_zona = pzona AND a.cod_provincia = pprovincia AND b.cod_provincia = a.cod_provincia --# LET cliente = p_nombre CLIPPED," ","(",movtos.tipo_cliente USING "##","-", movtos.sec_cliente USING "&&&&",")" --# LET cliente = cliente CLIPPED --# LET cels = "R",8 USING "<<","C2" --# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF LET balance = 0 --# LET cliente = null --# LET cliente = p_calle CLIPPED," #",p_casa CLIPPED,", ",pbarrio CLIPPED," Tel. ",ptelefono CLIPPED --# LET cels = "R",9 USING "<<","C2" --# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cliente = null --# LET cliente = "LIMITE: ",p_limite_credito USING "##,###,###.##"," ", "RNC: ",p_numero --# LET cels = "R",10 USING "<<","C2" --# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cliente = null --# LET cliente = nombre_zona CLIPPED,", ",nombre_p CLIPPED --# LET cels = "R",11 USING "<<","C2" --# IF DDEpoke("EXCEL",archivo,cels,cliente) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# END IF SELECT UNIQUE a.tipo_doc,MIN(a.fecha_orig) INTO tipo,fecha2 FROM cctb00001 a WHERE a.num_doc = movtos.aplica_a AND a.status_t IS NULL AND a.aplica_a = a.num_doc GROUP BY 1 --# LET documento = movtos.aplica_a USING "<<<<<<","-",tipo --# LET cels = "R",cnt USING "<<","C2" --# IF DDEpoke("EXCEL",archivo,cels,documento) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",cnt USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,fecha2) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET balance = balance + movtos.valor --# LET cels = "R",cnt USING "<<","C5" --# IF DDEpoke("EXCEL",archivo,cels,movtos.valor) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET balance = balance + movtos.valor --# LET cels = "R",cnt USING "<<","C7" --# IF DDEpoke("EXCEL",archivo,cels,balance) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",35 USING "<<","C7" --# IF DDEpoke("EXCEL",archivo,cels,balance) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF #LET dias = (fecha_final - fecha2) - dias2 LET dias = (fecha_final - fecha3) - dias2 IF dias > 0 AND dias < 31 THEN LET v1_30 = movtos.valor + v1_30 END IF IF dias > 30 and dias < 46 THEN LET v31_45 = movtos.valor + v31_45 END IF IF dias > 45 and dias < 61 THEN LET v46_60 = movtos.valor + v46_60 END IF IF dias > 60 THEN LET vm_60 = vm_60 + movtos.valor END IF --# LET cnt = cnt + 1 --# END FOREACH IF imprime_ana = "N" THEN --# LET cels = "R",38 USING "<<","C2" --# IF DDEpoke("EXCEL",archivo,cels,no_v) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",38 USING "<<","C3" --# IF DDEpoke("EXCEL",archivo,cels,v1_30) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",38 USING "<<","C4" --# IF DDEpoke("EXCEL",archivo,cels,v31_45) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",38 USING "<<","C5" --# IF DDEpoke("EXCEL",archivo,cels,v46_60) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# LET cels = "R",38 USING "<<","C7" --# IF DDEpoke("EXCEL",archivo,cels,vm_60) THEN --# ELSE --# LET numero_msg =391 --# CALL msg(numero_msg) --# END IF --# IF sysos = "Windows_NT" THEN LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\", codigo_g,".xls" --# ELSE LET ejecuta = "COPY G:\\ESTADO.XLS G:\\ESTADOS\\", codigo_g,".xls" --# END IF RUN ejecuta --# LET command = "Run(\\\"ESTADO.XLS!LIMPIAR\\\";FALSE)" --# CALL DDEExecute ("EXCEL",archivo,command) RETURNING ret END IF end if end if DROP TABLE estado --# END FUNCTION }