{ ------------------------------------------------------------------------------- PROGRAMA : CCPRRP039 OBJETIVO : Estado de Cuentas de Clientes a una fecha especifica tomando en cuenta el historial de debitos y creditos MODIFICACION PARA IMPRIMIR EL CONDUCE DE INVENTARIO, NO IMPRIME LA FACTURA 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) ##### 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), num_oc INT, cotizacion_no INT, conduce INT END RECORD MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CALL ARG_VAL(7) RETURNING strconect { IF strconect = 'marmotech' THEN CONNECT to strconect USER 'conecta' USING 'conecta' ELSE CONNECT to strconect USER usuarios USING clave END IF } CONNECT TO "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL ccprrp039() END MAIN FUNCTION ccprrp039() 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 LET pflag = "N" CONSTRUCT criterio ON a.tipo_cliente,a.sec_cliente FROM tipo_cliente, sec_cliente AFTER CONSTRUCT END CONSTRUCT ##### Aceptando la fecha de corte para busqueda de informacion INPUT BY NAME prima,fecha_inicial,fecha_final ON KEY (F2) LET pflag = "S" 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 AFTER INPUT ###### Creando facilidad para cancelar operacion mediante la tecla DELETE ###### o SUPR IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF fecha_final is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF EXIT INPUT END INPUT IF prima IS NULL THEN LET prima = 1 END IF # Busca los documentos que esten en el rango de fechas especificado LET selec5 = "SELECT c.tipo_cliente,c.sec_cliente,b.nombre,b.limite_credito,b.num_rnc, ", " b.cod_zona,c.num_doc,c.aplica_a,c.tipo_doc,CONVERT(CHAR(10),c.fecha_orig,103), ", " (c.valor+a.monto_desc), b.nombre ", "FROM cctb00001 c,vetb00004 b,vetb00002 a ", "WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ", " a.status_t is null AND c.fecha_orig <= ? AND ", " c.aplica_a = a.factura and c.status_t is null and ", " c.tipo_cliente = a.tipo_cliente and c.sec_cliente = a.sec_cliente and ", " c.tipo_doc in ('PG','FT','FE','NC','ND','OC','DV') 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 idx = 1 THEN CALL seleccionarSalida() RETURNING salida CALL configureOutput(salida) RETURNING handler START REPORT report14 TO XML HANDLER HANDLER END IF LET mvtos1.cliente = mvtos1.tipo_cliente using "&&", mvtos1.sec_cliente using "&&&&" LET mvtos1.valor = mvtos1.valor * prima LET progreso = progreso + 10 IF progreso > 50 THEN LET progreso = 50 END IF # busca cotizacion # LET mvtos1.cotizacion_no =NULL # SELECT DISTINCT a.cotizacion_no INTO mvtos1.cotizacion_no FROM vetb00002 a # WHERE a.factura = mvtos1.aplica_a OUTPUT TO REPORT report14(mvtos1.*) DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET idx = idx + 1 END FOREACH IF idx = 1 THEN CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS CON ESTA CONDICION","INFO") EXIT PROGRAM END IF 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,a.fecha_orig, ", " a.valor+a.monto_desc,a.documento_ref ", "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 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 # IF mvtos1.tipo ='AV' THEN # SELECT a.cotizacion_no INTO mvtos1.cotizacion_no # FROM cctb00001 a # WHERE a.tipo_doc='AV' AND a.num_doc = mvtos1.num_doc AND # a.num_doc =a.aplica_a # END IF # BUSCA ORDEN LET mvtos1.num_oc=NULL SELECT MAX(a.num_oc) INTO mvtos1.num_oc FROM prtb00012 a WHERE a.cotizacion_no = mvtos1.cotizacion_no AND a.tipo_cliente = mvtos1.tipo_cliente AND a.sec_cliente = mvtos1.sec_cliente AND a.status_t IS NULL SELECT a.conduce,a.cotizacion_no,a.orden INTO mvtos1.conduce,mvtos1.cotizacion_no,mvtos1.num_oc 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 OUTPUT TO REPORT report14(mvtos1.*) DISPLAY progreso TO progreso CALL ui.Interface.refresh() END FOREACH LET progreso = 100 DISPLAY progreso TO progreso CALL ui.Interface.refresh() FINISH REPORT report14 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), num_oc INT, cotizacion_no INT, conduce INT 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 x RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, tipo_doc CHAR(2), num_doc INTEGER, fecha_doc DATE, aplica_a INTEGER, valor DECIMAL(10,2), monto_desc LIKE cctb00001.monto_desc, nombre CHAR(30), limite DECIMAL(12,2), num_rnc CHAR(10), zona SMALLINT, cliente CHAR(6) , balance DECIMAL(12,2) END RECORD DEFINE conduce,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) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 #### Proceso para sortear la informacion ORDER BY j.cliente,j.cotizacion_no ###### Diseno de la salida de la informacion FORMAT PAGE HEADER # 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 LET hora = time LET lj = (100 - LENGTH(p_companias.nombre CLIPPED))/2 # PRINT COLUMN 1,comp_on, "ccprrp014", # COLUMN lj, p_companias.nombre CLIPPED, PRINT COLUMN 93, "Pag. ",pageno using "###" # PRINT COLUMN 35, "Sistema de Cuentas por Cobrar", PRINT 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" IF j.tipo_cliente = 12 THEN PRINT COLUMN 48, "RD$" ELSE PRINT COLUMN 48, "US$" END IF ##### Si el cliente es local el valor de la prima de la moneda es nulo IF j.tipo_cliente = 12 THEN LET prima = null END IF 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 IF j.tipo_cliente = 12 THEN LET tipo = "FT" ELSE LET tipo = "FE" 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, "Bal. Inicial", COLUMN 15, fecha_inicial USING "dd/mm/yyyy", COLUMN 86, b_balance-j.valor using "((((,(((,((&.&&)" 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 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 LET j.cotizacion_no = NULL LET j.num_oc=NULL 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 IF j.tipo = 'FT' or j.tipo = 'FE' THEN LET j.num_doc = j.conduce END IF IF conduce IS NULL THEN LET j.aplica_a = 0 ELSE LET j.aplica_a = J.conduce 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 36, tipo1, COLUMN 39, j.cotizacion_no USING "&&&&&&", COLUMN 46, j.num_oc USING "&&&&&&", 2 SPACES, j.conduce USING "<<<<<<<"; IF j.valor < 0 THEN PRINT COLUMN 70, j.valor using "###,###,##&.&&", COLUMN 86, b_balance using "((((,(((,((&.&&)" LET credito = credito + j.valor ELSE PRINT COLUMN 50, j.valor using "###,###,##&.&&", COLUMN 86, 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, "PG-Pago, FT-Factura Local, FE-Factura ", "Exterior, ND-Nota Debito, NC-Nota Credito, 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 }