CONSTANT file = "dgi606" CONSTANT prog = "EXCEL" DEFINE usuarios,clave,rnc VARCHAR(50), idioma_office,fila_office varchar(1), fecha1,fecha2 date, pcod_sp,NUMERO_C,kmes,kano SMALLINT, periodo char(6) DEFINE res INTEGER, dir_file VARCHAR(60), d_tipos,mensaje,f_tipos,filepath,p_res STRING MAIN -- Excel must be open beforehand DEFINE val, rval,col,fila STRING DEFINE fecha1,fecha2 date, pcodsp,pcodspsec INT, periodo CHAR(6), pnumdoc,xcuenta_no CHAR(10), kmes,kano,numero_c,pcod_sp,xcodigo_isr,pcodigofiscal,pcel,prow SMALLINT, facturado,pitbis,pvalor,retencion,itbisretenido,xvalor DEC(12,2), prnc CHAR(11), pdescripcion CHAR(30), strfiscal,xtipo_cuenta,xselectivo_consumo CHAR(40), pncf CHAR(19), pfecha DATE, periodo1 CHAR(6), idioma_office CHAR(20), total_facturado DEC(12,2) CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "decomarmol" user usuarios USING clave SELECT a.rnc INTO rnc FROM companias a OPEN WINDOW w1 AT 1,1 WITH FORM "cpfmrp018" INPUT BY NAME fecha1,fecha2,idioma_office,pcod_sp ON ACTION abrir CALL ui.Interface.frontCall("standard","openfile", [dir_file,d_tipos,f_tipos,mensaje], [filepath] ) CALL ui.Interface.frontCall("standard","shellexec", [filepath], [p_res] ) { CALL fgl_winmessage("INFO",dir_file,"INFO") CALL fgl_winmessage("INFO",f_tipos,"INFO") CALL fgl_winmessage("INFO",mensaje,"INFO") CALL fgl_winmessage("INFO",filepath,"INFO")} AFTER INPUT IF INT_FLAG THEN LET INT_FLAG = FALSE RETURN END IF SELECT COUNT(*) INTO numero_c FROM cptb00004 a,cptb00001 b WHERE (a.cod_sp = b.cod_sp) AND (a.cod_sp = pcod_sp) AND (a.cod_sp_Sec = b.cod_sp_sec AND a.ncf=a.ncf AND a.num_doc = a.num_doc) AND (a.num_doc = b.num_doc) AND b.tipo_doc <> 'CK' AND b.fecha_orig BETWEEN fecha1 AND fecha2 AND b.status_t IS NULL IF idioma_office = 'I' THEN LET fila_office = 'R' ELSE LET fila_office = 'F' END IF EXIT INPUT END INPUT CALL terminaDDE() CALL conectarDDE() LET val = rnc LET fila = 4 LET col = 3 CALL enviaDDE(fila,col,val) LET kmes = MONTH(fecha2) LET kano = YEAR(fecha2) LET periodo = kano USING "&&&&",kmes USING "&&" LET col = 3 LET fila = 5 LET val = periodo CALL enviaDDE(fila,col,val) LET val = numero_c LET col = 3 LET fila = 6 CALL enviaDDE(fila,col,val) CALL fgl_winmessage("Hoja de Excel Formulario 606", "Debe Ejecutar el boton INICIO en la hoja de excel","Info") DECLARE busca_datos CURSOR FOR SELECT TRIM(a.rnc),b.codigo_fiscal,c.descripcion,b.ncf,d.fecha_orig,AVG(b.monto_itbi),AVG(d.valor)-AVG(b.monto_itbi), b.num_doc,a.cod_sp,a.cod_sp_sec,f.tipo_cuenta,f.selectivo_consumo, SUM(g.debito+g.credito),x1.codigo_isr FROM cotb00001 a,cptb00004 b,cgtb00074 c,cptb00001 d,cgtb00001 f LEFT OUTER JOIN cgtb00077 x1 ON f.codigo_isr = x1.codigo_isr, cptb00003 g WHERE a.cod_sp = pcod_sp AND a.cod_sp = b.cod_sp AND a.cod_sp_Sec = b.cod_sp_sec AND a.cod_sp = d.cod_sp AND a.cod_sp_sec = d.cod_sp_sec AND b.codigo_fiscal = c.codigo_fiscal AND b.num_doc = d.num_doc AND d.tipo_doc = 'FT' AND g.cuenta_no = f.cuenta_no AND (f.tipo_cuenta in ('BIENES','SERVICIOS') OR f.selectivo_consumo='SI') AND g.cod_sp = d.cod_sp AND g.cod_sp_sec = d.cod_sp_sec AND g.factura =d.num_doc AND g.cod_sp = b.cod_sp AND g.cod_sp_sec = b.cod_sp_sec and d.fecha_orig BETWEEN fecha1 AND fecha2 AND d.status_t IS NULL GROUP BY a.rnc,b.codigo_fiscal,c.descripcion,b.ncf,d.fecha_orig,b.num_doc, a.cod_sp,a.cod_sp_sec,f.tipo_cuenta,f.selectivo_consumo,x1.codigo_isr ORDER BY a.rnc LET prow = 12 FOREACH busca_datos INTO prnc,pcodigofiscal,pdescripcion,pncf,pfecha,pitbis,pvalor, pnumdoc,pcodsp,pcodspsec,xtipo_cuenta,xselectivo_consumo, xvalor,xcodigo_isr,xcuenta_no LET val = prnc LET col = 2 LET fila = prow USING "<<<" CALL enviaDDE(fila,col,val) LET strfiscal = pcodigofiscal USING "&&","-",pdescripcion CLIPPED LET val = strfiscal LET col = 4 CALL enviaDDE(fila,col,val) LET val = pncf LET col = 5 CALL enviaDDE(fila,col,val) LET periodo1 = YEAR(pfecha) USING "&&&&",MONTH(pfecha) USING "&&" LET val = periodo1 LET col = 7 CALL enviaDDE(fila,col,val) LET val = DAY(pfecha) LET col = 8 CALL enviaDDE(fila,col,val) LET val = periodo1 LET col = 9 CALL enviaDDE(fila,col,val) LET val = DAY(pfecha) LET col = 10 CALL enviaDDE(fila,col,val) LET col = 11 IF xtipo_cuenta = "SERVICIOS" THEN LET val = xvalor ELSE LET val = 0 END IF CALL enviaDDE(fila,col,val) LET col = 12 IF xtipo_cuenta = "BIENES" THEN LET val = xvalor ELSE LET val=0 END IF CALL enviaDDE(fila,col,val) IF pvalor IS NULL THEN LET pvalor = 0 END IF LET col = 13 LET val = pvalor CALL enviaDDE(fila,col,val) LET total_facturado = total_facturado + pvalor LET col=14 LET val = pitbis CALL enviaDDE(fila,col,val) IF xcodigo_isr IS NOT NULL THEN LET retencion = 0 SELECT SUM(a.credito) INTO retencion FROM cptb00003 a WHERE a.cod_sp = pcodsp AND a.cod_sp_Sec = pcodspsec AND a.factura = pnumdoc and a.cuenta_no = xcuenta_no LET itbisretenido = 0 SELECT SUM(a.credito) INTO itbisretenido FROM cptb00003 a WHERE a.cod_sp = pcodsp AND a.cod_sp_Sec = pcodspsec AND a.factura = pnumdoc and a.cuenta_no = xcuenta_no LET col = 15 LET val = itbisretenido CALL enviaDDE(fila,col,val) LET col = 16 LET val = retencion CALL enviaDDE(fila,col,val) LET col = 26 LET val = '07 - MIXTO' CALL enviaDDE(fila,col,val) END IF LET prow = prow + 1 END FOREACH CALL terminaDDE() CLOSE WINDOW w1 END MAIN FUNCTION checkError(res) DEFINE res INTEGER DEFINE mess STRING IF res THEN RETURN END IF DISPLAY "DDE Error:" CALL ui.Interface.frontCall("WINDDE","DDEError",[],[mess]); DISPLAY mess CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [res] ); DISPLAY "Exit with DDE Error." EXIT PROGRAM (-1) END FUNCTION FUNCTION conectarDDE() CALL ui.Interface.frontCall("WINDDE","DDEConnect", [prog,file], [res] ) { CALL fgl_winmessage("INFO",prog,"INFO") CALL fgl_winmessage("INFO",file,"INFO") CALL fgl_winmessage("INFO",res,"INFO")} CALL checkError(res) END FUNCTION FUNCTION terminaDDE() CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [res] ); CALL checkError(res) END FUNCTION FUNCTION enviaDDE(xfila,xcol,xval) DEFINE xfila,xcol,xval,xcelda STRING DISPLAY "enviado ",xfila," c ",xcol," v ",xval LET xcelda = fila_office CLIPPED,xfila CLIPPED,"C",xcol CLIPPED DISPLAY "celda ",xcelda LET xval=xval CLIPPED CALL ui.Interface.frontCall("WINDDE","DDEPoke", [prog,file,xcelda,xval], [res] ); CALL checkError(res) END FUNCTION