{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP014 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 : Junio 1, 1993 MODIFICADO : Tadeo A. Ferreras FECHA MODIFICACION : Julio 28, 1993 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE prima DECIMAL(10,2) ## Variable que equivale a la prima de otra moneda DEFINE idx_1 SMALLINT ## Variables usadas para formar arreglos DEFINE fecha_inicial,fecha_final DATE ## Varible busqueda por fecha de corte DEFINE selec5 CHAR(1500) ## Variables para almacenar busquedas DEFINE tipo1 CHAR(2) ####### 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), cliente CHAR(6) END RECORD MAIN DEFER INTERRUPT CALL STARTLOG("ccprrp014.log") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CALL ARG_VAL(7) RETURNING strconect DISPLAY "ccprrp014: ",strconect IF strconect = 'marmotech' THEN CONNECT to strconect USER 'conecta' USING 'conecta' ELSE CONNECT to strconect USER usuarios USING clave END IF SELECT a.* INTO p_companias.* FROM companias a CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia DISPLAY "ESTOY " CALL ccprrp014() END MAIN FUNCTION ccprrp014() OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ####### Abriendo y desplegando formulario de captura de datos OPEN FORM ccfmrp014 FROM "ccfmrp014" DISPLAY FORM ccfmrp014 #CALL pantalla() DISPLAY "ccprrp014" AT 4,3 DISPLAY "Estado de Cuentas" AT 6,31 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ##### Creando el criterio de busqueda DIALOG ATTRIBUTE (FIELD ORDER FORM, UNBUFFERED) CONSTRUCT criterio ON a.tipo_cliente,a.sec_cliente FROM tipo_cliente, sec_cliente END CONSTRUCT ##### Aceptando la fecha de corte para busqueda de informacion INPUT BY NAME prima,fecha_inicial,fecha_final,salida BEFORE INPUT LET prima =1 DISPLAY BY NAME prima AFTER FIELD fecha_inicial IF fecha_inicial is null OR fecha_inicial < fecha_final THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF BEFORE FIELD fecha_final LET fecha_final = today AFTER FIELD fecha_final IF fecha_final is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF ON ACTION busca_informacion # Busca los documentos que esten en el rango de fechas especificado LET selec5 = "SELECT a.tipo_cliente,a.sec_cliente,b.nombre,b.limite_credito,b.num_rnc, ", " b.cod_zona,a.num_doc,a.aplica_a,a.tipo_doc,CONVERT(CHAR(10),a.fecha_orig,103), ", " (a.valor+a.monto_desc) ", "FROM cctb00001 a,vetb00004 b ", "WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ", " a.status_t is null AND a.fecha_orig <=? AND ", " a.tipo_doc in ('PG','FT','FE','NC','ND','DV','OC','OD','RC') and ",criterio CLIPPED LET progreso = 20 DISPLAY progreso TO progreso CALL ui.Interface.refresh() ###### Comienza el loop para enviar informacion al reporte PREPARE movi FROM selec5 DECLARE mvtos_cli CURSOR FOR movi OPEN mvtos_cli USING fecha_final LET idx = 1 FOREACH mvtos_cli INTO mvtos1.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF idx = 1 THEN IF salida = "SVG" OR salida = "PDF" THEN LET HANDLER = configureOutput(salida) START REPORT report14 TO XML HANDLER handler ELSE START REPORT report14 TO archivo END IF END IF LET mvtos1.cliente = mvtos1.tipo_cliente using "&&", mvtos1.sec_cliente using "&&&&" IF prima IS NULL THEN LET prima = 1 END IF LET mvtos1.valor = mvtos1.valor * prima LET progreso = progreso + 10 IF progreso > 50 THEN LET progreso = 50 END IF OUTPUT TO REPORT report14(mvtos1.*) DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET idx = idx + 1 END FOREACH LET selec5 = "SELECT a.tipo_cliente,a.sec_cliente,b.nombre,b.limite_credito,b.num_rnc, ", " b.cod_zona,a.num_doc,a.aplica_a,a.tipo_doc,CONVERT(CHAR(10),a.fecha_orig,103), ", " a.valor+a.monto_desc ", "FROM cctb00001 a,vetb00004 b ", "WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ", " a.status_t is null AND a.fecha_orig <= ? AND ", " a.tipo_doc = 'AV' AND a.aplica_a = a.num_doc AND ",criterio clipped LET progreso = progreso + 10 DISPLAY progreso TO progreso CALL ui.Interface.refresh() PREPARE movi1 FROM selec5 DECLARE mvtos_cli1 CURSOR FOR movi1 OPEN mvtos_cli1 USING fecha_final FOREACH mvtos_cli1 INTO mvtos1.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF idx = 1 THEN IF salida = "SVG" OR salida = "PDF" THEN LET HANDLER = configureOutput(salida) START REPORT report14 TO XML HANDLER handler ELSE START REPORT report14 TO archivo END IF END IF LET mvtos1.cliente = mvtos1.tipo_cliente using "&&", mvtos1.sec_cliente using "&&&&" LET mvtos1.valor = (mvtos1.valor * prima) * -1 LET mvtos1.tipo = "AV" LET progreso = progreso + 1 IF progreso > 95 THEN LET progreso = 95 END IF OUTPUT TO REPORT report14(mvtos1.*) DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET idx = idx + 1 END FOREACH LET progreso = 100 DISPLAY progreso TO progreso CALL ui.Interface.refresh() IF idx > 1 THEN FINISH REPORT report14 IF salida = "MA" THEN RUN imprime END IF END IF EXIT DIALOG END INPUT ON ACTION CANCEL LET INT_FLAG = FALSE EXIT PROGRAM END DIALOG 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), cliente CHAR(6) END RECORD DEFINE k RECORD tipo_doc CHAR(2), num_doc INTEGER, fecha_doc1 DATE, fecha_doc DATE, aplica_a INTEGER, valor DECIMAL(10,2), monto_desc LIKE cctb00001.monto_desc END RECORD DEFINE dias INTEGER ## Variable que almacena la diferencia de dias DEFINE p_calle,p_descrip CHAR(30) DEFINE p_casa CHAR(10) DEFINE doble_on,doble_off,comp_on,comp_off,doce,normal,tipo CHAR(2) DEFINE negrillas_on,negrillas_off CHAR(6) DEFINE hora CHAR(5) DEFINE credito,debito,tcredito,tdebito,balance,tbalance,limite,b_balance, cte,v1_30,v31_45,v46_60,vm_60 DECIMAL(12,2), psimbolo CHAR(3) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 #### Proceso para sortear la informacion ORDER BY j.cliente,j.fecha,j.aplica_a ###### Diseno de la salida de la informacion FORMAT PAGE HEADER IF salida = "MA" THEN LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 END IF LET hora = time LET lj = (100 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1,comp_on, "ccprrp014", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 93, "Pag. ",pageno using "###" PRINT COLUMN 35, "Sistema de Cuentas por Cobrar", COLUMN 93, today using "dd/mm/yyyy" PRINT COLUMN 41, "Estado de Cuentas", COLUMN 96, hora PRINT COLUMN 44, "Al ", fecha_final using "dd/mm/yyyy" ##### 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 IF tdebito IS NULL THEN LET tdebito = 0 END IF IF tcredito IS NULL THEN LET tcredito = 0 END IF IF tbalance IS NULL THEN LET tbalance = 0 END IF #### Seleciona los datos generales de identificacion del cliente 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 balance = 0 IF limite IS NULL THEN LET limite = 0 END IF IF prima is not null THEN PRINT COLUMN 1,"Prima: ", prima using "###.##" END IF PRINT COLUMN 1, "-------------------------------------------------", "-------------------------------------------------" PRINT COLUMN 1, "Cliente:", COLUMN 10, j.tipo_cliente using "&&","-",j.sec_cliente using "&&&&&&", COLUMN 18, j.nombre clipped, COLUMN 49, "Limite Credito", COLUMN 64, j.limite using "####,###,###.##" PRINT COLUMN 10, p_calle clipped," ",p_casa; IF j.num_rnc IS NOT NULL THEN PRINT COLUMN 24, "RNC: ", j.num_rnc ELSE PRINT COLUMN 24, " " END IF PRINT COLUMN 10, p_descrip, COLUMN 49, "ZONA POSTAL: ",j.zona PRINT COLUMN 1, "-------------------------------------------------", "-------------------------------------------------" PRINT COLUMN 4, "D O C U M E N T O", COLUMN 29, "A F E C T A" PRINT COLUMN 1, "|---------------------|", COLUMN 27, "|---------------|" PRINT COLUMN 3, "Numero", COLUMN 10, "Tipo", COLUMN 15, "Fecha", COLUMN 29, "Numero", COLUMN 38, "Tipo", COLUMN 53, "D E B I T O", COLUMN 71, "C R E D I T O", COLUMN 88, "B A L A N C E" PRINT COLUMN 1, "-------------------------------------------------", "-------------------------------------------------" SKIP 1 LINE LET debito = 0 LET credito = 0 LET b_balance = 0 LET idx_1 = 0 ON EVERY ROW #BUSCA SIMBOLO IF strconect='marmotech' THEN SELECT a.simbolo INTO psimbolo FROM vetb00060 a,vetb00061 b WHERE b.tipo_cliente = j.tipo_cliente AND a.ventas = b.ventas ELSE SELECT a.simbolo INTO psimbolo FROM vetb00061 a,vetb00060 b WHERE b.tipo_cliente = j.tipo_cliente AND a.ventas = b.ventas END IF IF j.valor IS NULL THEN LET j.valor = 0 END IF LET b_balance = b_balance + j.valor IF j.fecha < fecha_inicial THEN LET idx_1 = 0 END IF IF j.fecha >= fecha_inicial THEN LET idx_1 = idx_1 + 1 IF idx_1 = 1 THEN PRINT COLUMN 1, "Bal. Inicial", COLUMN 15, fecha_inicial USING "dd/mm/yyyy", COLUMN 86,psimbolo CLIPPED, b_balance-j.valor using "(<<<,<<<,<<&.&&)" {IF (b_balance-j.valor) > 0 THEN PRINT COLUMN 50, b_balance-j.valor using "###,###,##&.&&", COLUMN 86, b_balance-j.valor using "(((,(((,((&.&&)" ELSE PRINT COLUMN 70, b_balance-j.valor using "###,###,##&.&&", COLUMN 86, b_balance-j.valor using "(((,(((,((&.&&)" END IF} END IF IF j.tipo = "FT" OR j.tipo = "AV" THEN LET tipo1 = j.tipo ELSE SELECT MAX(a.tipo_doc) INTO tipo1 FROM cctb00001 a WHERE a.tipo_cliente = mvtos1.tipo_cliente AND a.sec_cliente = mvtos1.sec_cliente AND (a.num_doc = a.aplica_a AND a.num_doc = j.aplica_a) END IF PRINT COLUMN 3, j.num_doc using "######", COLUMN 11, j.tipo, COLUMN 15, j.fecha using "dd/mm/yyyy", COLUMN 29, j.aplica_a using "######", COLUMN 38, tipo1 using "######"; IF j.valor < 0 THEN PRINT COLUMN 70,psimbolo CLIPPED, j.valor using "<<<,<<<,<<&.&&", COLUMN 86,psimbolo CLIPPED, b_balance using "(<<,<<<,<<&.&&)" LET credito = credito + j.valor ELSE PRINT COLUMN 50, psimbolo CLIPPED,j.valor using "<<<,<<<,<<&.&&", COLUMN 86, psimbolo CLIPPED,b_balance using "(<<<,<<<,<<&.&&)" LET debito = debito + j.valor END IF END IF 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 < 46 THEN LET v31_45 = v31_45 + j.valor END IF IF dias > 45 and dias < 61 THEN LET v46_60 = v46_60 + j.valor END IF IF dias > 60 THEN LET vm_60 = vm_60 + j.valor END IF AFTER GROUP OF j.cliente IF idx_1 = 0 THEN PRINT COLUMN 1, "Bal. Inicial", COLUMN 15, fecha_inicial USING "dd/mm/yyyy", COLUMN 86, b_balance using "((((,(((,((&.&&)" END IF SKIP 1 LINE PRINT COLUMN 1, "NOTA: LE ROGAMOS REVISAR ESTE ESTADO Y NOTIFICAR A", "NUESTRO DEPARTAMENTO DE CONTABILIDAD CUALQUIER" PRINT COLUMN 1, " DISCREPANCIA O REPARO, A LA MAYOR BREVEDAD", " POSIBLE." PRINT COLUMN 1, " APRECIAMOS SU RESPUESTA, POR TANTO QUEDAREMO", "S AGRADECIDOS POR SU ATENCION, SIRVANSE USAR COPIA" PRINT COLUMN 1, " DE ESTE ESTADO PARA SU CONFIRMACION." PAGE TRAILER PRINT COLUMN 1, "RC-Pago, FT-Factura Local, ", "ND-Nota Debito, NC-Nota Credito, OC-Otros Creditos, OD-Otros Debitos, AV-Avance Orden", comp_off # SKIP TO TOP OF PAGE 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 }