{ ------------------------------------------------------------------------------------ PROGRAMA : VEPRRP051(607) OBJETIVO : VENTAS ANUALES PARA LA DGII(DIRECCION DE IMPUESTOS INTERNOS) PROGRAMADOR : JUAN F. SOTO FECHA REALIZACION : Enero 28, 2008 ------------------------------------------------------------------------------------- } SCHEMA smarmotech GLOBALS DEFINE encabezado RECORD codigo_id SMALLINT, rnc CHAR(11), periodo SMALLINT, cantidad_r SMALLINT, total CHAR(16) END RECORD, pcel,prow,p_res SMALLINT, archivo1 CHAR(200), documento,prnc,pcedula CHAR(11), tipo_trx CHAR(20), mess CHAR(50),numero_c,numero_c1,numero_c2 SMALLINT, responde char(3), periodo char(6) DEFINE detalle RECORD tipo_doc CHAR(2), ventas CHAR(30), tipo_cliente SMALLINT, sec_cliente INT, rnc CHAR(11), tipo_id CHAR(1), codigodgii CHAR(11), comprobante INT, comprobante_m CHAR(19), fecha DATE, itbis CHAR(12), monto CHAR(12), cod_motivo SMALLINT, documento INT, aplica_a INT, nombre_cli CHAR(30), cod_ventas smallint, localidad SMALLINT, cotizacion_no INT, avance INT, mes char(20), MONTO_ORIG DEC(12,2), TASA DEC(12,2), ano SMALLINT, efectivo DEC(12,2), cheques DEC(12,2), tarjetas DEC(12,2) END RECORD, fecha1,fecha2 DATE, pmes SMALLINT, ptasa DEC(12,2) DEFINE pano,l,xi SMALLINT DEFINE fecha_2 CHAR(8), etiqueta1,cels CHAR(40), archivo,sysos CHAR(120), cnt,numero_msg SMALLINT , decide,idioma_office,fila_excel CHAR(1), rcol,prog VARCHAR(10), usuarios,clave CHAR(50), p_companias RECORD LIKE companias.* CONSTANT filename_a= "dgi607" CONSTANT filename_n= "dgi608" END GLOBALS MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL STARTLOG("VERP051.LOG") CONNECT to "marmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL veprrp048() END MAIN FUNCTION veprrp048() define codigo_m CHAR(20), ncf_m INT OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM vefmrp048 FROM "vefmrp051" DISPLAY FORM vefmrp048 # CALL pantalla() DISPLAY "veprrp048" AT 4,3 DISPLAY "VENTAS PARA DGII ANUAL" AT 6,25 ###### Aceptando los valores para el rango de fecha LET prow = 12 INPUT BY NAME fecha1,fecha2,idioma_office,tipo_trx IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = false RETURN END IF # SELECT MIN(a.fecha_inicio),MAX(a.fecha_corte) # INTO fecha1,fecha2 # FROM prdtable a # WHERE a.ano = pano LET pano = YEAR(fecha1) DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) LET prog = "EXCEL" IF idioma_office = "E" THEN LET fila_excel = "F" ELSE LET fila_excel = "R" END IF if TIPO_TRX = "ACTIVAS" THEN { CALL ui.Interface.frontCall("standard","getenv", ["USDGII607"], [filename] ) CALL ui.Interface.frontCall("standard","shellexec", [filename], [p_res] ) CALL chqDdeError(p_res,"shellexec "||filename) CALL ui.Interface.frontCall("WINDDE","DDEConnect", [prog,filename], [p_res] ) CALL chqDdeError(p_res,"DDEConnect "||filename) CALL ui.Interface.refresh() ELSE CALL ui.Interface.frontCall("standard","getenv", ["USDGII608"], [filename] ) DISPLAY BY NAME filename CALL ui.Interface.frontCall("standard","shellexec", [filename], [p_res] ) CALL chqDdeError(p_res,"shellexec "||filename) CALL ui.Interface.frontCall("WINDDE","DDEConnect", [prog,filename], [p_res] ) CALL chqDdeError(p_res,"DDEConnect "||filename) CALL ui.Interface.refresh() END IF } IF tipo_trx = "ACTIVAS" THEN # SELECT itbi INTO pitbis FROM vetb00019 WHERE disponible = "S" DECLARE busca CURSOR FOR SELECT 'FT',e.descripcion,c.tipo_cliente,a.sec_cliente,a.num_rnc,a.zona_postal,b.codigo_dgii,b.ncf,'0', CONVERT(CHAR(10),c.fecha_factura,103),c.monto_itbi,c.sub_total-c.monto_desc,'0',b.documento, b.documento ,a.nombre,d.ventas,c.sucid,c.conduce FROM vetb00004 a,vetb00061 d, vetb00002 c , vetb00072 b,vetb00060 e WHERE a.tipo_cliente = c.tipo_cliente and a.sec_cliente = c.sec_cliente and c.factura = b.documento AND #c.factura IN (5620) AND d.ventas = e.ventas AND c.tipo_cliente = d.tipo_cliente AND c.sucid = b.sucid AND b.tipo_doc = "FT" and c.ventas = d.ventas and c.fecha_factura BETWEEN fecha1 AND fecha2 AND c.status_t IS NULL #AND c.conduce = 120201 UNION SELECT c.tipo_doc,e.descripcion,c.tipo_cliente,a.sec_cliente,a.num_rnc,a.zona_postal,b.codigo_dgii,b.ncf,'0', CONVERT(CHAR(10),c.fecha_orig,103),SUM(c.valor_cheque),SUM(c.valor-c.valor_cheque),'0',c.num_doc, c.aplica_a,a.nombre,d.ventas,c.localidad_aplica_a,f.conduce FROM vetb00004 a,vetb00072 b,cctb00001 c,vetb00061 d,vetb00060 e,vetb00002 f WHERE a.tipo_cliente = c.tipo_cliente and a.tipo_cliente = d.tipo_cliente and d.ventas = e.ventas and a.sec_cliente = c.sec_cliente AND c.aplica_a = f.factura AND c.tipo_cliente = f.tipo_cliente AND c.sec_cliente = f.sec_cliente AND c.num_doc = b.documento AND c.localidad_aplica_a = b.sucid AND b.tipo_doc =c.tipo_doc and c.tipo_doc IN ("NC","ND") and c.fecha_orig between fecha1 and fecha2 AND c.status_t IS NULL #AND c.banco = 94338 GROUP BY c.tipo_doc,e.descripcion,c.tipo_cliente,a.num_rnc,a.zona_postal,b.codigo_dgii,b.ncf,c.fecha_orig,C.NUM_DOC,c.aplica_a,a.nombre,d.ventas, c.localidad_aplica_a,f.conduce,a.sec_cliente ORDER BY b.codigo_dgii,b.ncf LET numero_c1 = 0 SELECT COUNT(*) INTO numero_c1 FROM vetb00002 c, vetb00072 b WHERE c.factura = b.documento and b.tipo_doc in( "FT","FE") AND b.sucid = c.sucid AND c.fecha_factura BETWEEN fecha1 AND fecha2 AND c.status_t IS NULL LET numero_c2 = 0 SELECT COUNT(*) INTO numero_c2 FROM vetb00004 a,vetb00072 b,cctb00001 c,vetb00061 d,vetb00060 e,vetb00002 f WHERE a.tipo_cliente = c.tipo_cliente and a.tipo_cliente = d.tipo_cliente and d.ventas = e.ventas and a.sec_cliente = c.sec_cliente AND c.aplica_a = f.factura AND c.tipo_cliente = f.tipo_cliente AND c.sec_cliente = f.sec_cliente AND c.num_doc = b.documento AND c.localidad_aplica_a = b.sucid AND b.tipo_doc =c.tipo_doc and c.tipo_doc IN ("NC","ND") and c.fecha_orig between fecha1 and fecha2 AND c.status_t IS NULL LET numero_c = numero_c1 + numero_c2 LET periodo = pano USING "&&&&",month(fecha1) USING "&&" LET rcol = "C3" LET xi = 4 CALL pru_new_dde(p_companias.rnc,rcol,xi) LET rcol = "C3" LET xi = 5 CALL pru_new_dde(periodo,rcol,xi) {CANTIDAD REGISTORS} LET rcol = "C3" LET xi = 6 CALL pru_new_dde(numero_c,rcol,xi) LET rcol = "C3" LET xi = 5 CALL pru_new_dde(periodo,rcol,xi) LET responde = fgl_winquestion("WARNING","Precione el boton de INICIO en el formulario para iniciar descarga informacion", "yes","yes|no","question",1) LET responde = UPSHIFT(responde) IF responde = "YES" then START REPORT reporte4 FOREACH busca INTO detalle.* LET DETALLE.ano = pano SELECT UNIQUE a.mes INTO pmes FROM prdtable a WHERE a.fecha_inicio <= detalle.fecha AND a.fecha_corte >= detalle.fecha AND a.ano = pano select descrip INTO detalle.mes FROM mestable where mes = pmes LET detalle.monto_orig = detalle.monto let PTASA = 1 SELECT UNIQUE a.mes INTO pmes FROM prdtable a WHERE a.fecha_inicio <= detalle.fecha AND a.fecha_corte >= detalle.fecha AND a.ano = pano SELECT a.tasa INTO ptasa FROM cgtb00084 a WHERE a.mes = pmes and a.ano = pano AND a.tipo_cliente = detalle.tipo_cliente AND a.ventas = detalle.cod_ventas IF ptasa IS NULL THEN LET ptasa = 1 end IF # BUSCA DESGLOCE PAGOS LET detalle.efectivo =0 LET detalle.tarjetas=0 LET detalle.cheques=0 SELECT ISNULL(SUM(a.valor_efectivo),0) INTO detalle.efectivo FROM cctb00001 a,vetb00002 b WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND b.factura = detalle.documento AND a.aplica_a = a.num_doc AND a.documento_ref = b.conduce AND a.tipo_doc = 'AV' IF detalle.efectivo =0 THEN SELECT ISNULL(SUM(a.valor_efectivo),0) INTO detalle.efectivo FROM cctb00001 a,vetb00002 b WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND b.factura = detalle.documento AND a.aplica_a = b.factura AND a.tipo_doc = 'PG' END IF SELECT ISNULL(SUM(a.valor_cheque),0) INTO detalle.cheques FROM cctb00001 a,vetb00002 b WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND b.factura = detalle.documento AND a.aplica_a = a.num_doc AND a.documento_ref = b.conduce AND a.tipo_doc = 'AV' IF detalle.cheques = 0 THEN SELECT ISNULL(SUM(a.valor_cheque),0) INTO detalle.cheques FROM cctb00001 a,vetb00002 b WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND b.factura = detalle.documento AND a.aplica_a = b.factura AND a.tipo_doc = 'PG' END IF SELECT ISNULL(SUM(a.valor_tarjeta),0) INTO detalle.tarjetas FROM cctb00001 a,vetb00002 b WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND b.factura = detalle.documento AND a.aplica_a = a.num_doc AND a.documento_ref = b.conduce AND a.tipo_doc = 'AV' IF detalle.tarjetas = 0 THEN SELECT ISNULL(SUM(a.valor_tarjeta),0) INTO detalle.tarjetas FROM cctb00001 a,vetb00002 b WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND b.factura = detalle.documento AND a.aplica_a = b.factura AND a.tipo_doc = 'PG' END IF { DISPLAY "documento ",detalle.documento SELECT a.num_doc INTO detalle.avance FROM cctb00001 a WHERE a.tipo_doc = 'AP' AND a.aplica_a = detalle.documento AND a.tipo_cliente = detalle.tipo_cliente AND a.sec_cliente = detalle.sec_cliente AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND a.status_t IS null SELECT a.valor_efectivo INTO detalle.efectivo FROM cctb00001 a WHERE a.tipo_cliente = detalle.tipo_cliente AND a.sec_cliente = detalle.sec_cliente AND a.num_doc = detalle.avance AND a.tipo_doc = 'AV' AND a.num_doc = a.aplica_a SELECT a.valor_cheque INTO detalle.cheques FROM cctb00001 a WHERE a.tipo_cliente = detalle.tipo_cliente AND a.sec_cliente = detalle.sec_cliente AND a.num_doc = detalle.avance AND a.tipo_doc = 'AV' AND a.num_doc = a.aplica_a SELECT a.valor_tarjeta INTO detalle.tarjetas FROM cctb00001 a WHERE a.tipo_cliente = detalle.tipo_cliente AND a.sec_cliente = detalle.sec_cliente AND a.num_doc = detalle.avance AND a.tipo_doc = 'AV' AND a.num_doc = a.aplica_a } IF detalle.efectivo IS NULL THEN LET detalle.efectivo =0 END IF IF detalle.cheques IS NULL THEN LET detalle.cheques=0 END IF IF detalle.tarjetas IS NULL THEN LET detalle.tarjetas=0 END IF LET detalle.monto = detalle.monto * ptasa LET detalle.itbis = detalle.itbis * ptasa LET detalle.efectivo = detalle.efectivo * ptasa LET detalle.cheques = detalle.cheques * ptasa LET detalle.tarjetas = detalle.tarjetas * ptasa LET detalle.tasa = ptasa IF detalle.monto <0 THEN LET detalle.monto = detalle.monto *-1 END IF IF detalle.itbis <0 THEN LET detalle.itbis = detalle.itbis *-1 END IF LET detalle.comprobante_m = null IF detalle.tipo_doc = "NC" OR detalle.tipo_Doc = "ND" THEN SELECT a.codigo_dgii,a.ncf INTO codigo_m,ncf_m FROM vetb00072 a WHERE a.tipo_doc IN ("FT","FE") and a.documento = detalle.aplica_a AND a.sucid = detalle.localidad LET detalle.comprobante_m = codigo_m CLIPPED,ncf_m USING "&&&&&&&&" END IF OUTPUT TO REPORT reporte4(detalle.*,pano) END FOREACH FINISH REPORT reporte4 END IF ELSE ########## DOCUMENTOS NULOS ##################################################3 DECLARE busca1 CURSOR FOR SELECT 'FT',e.descripcion,c.tipo_cliente,a.num_rnc,a.zona_postal,b.codigo_dgii,b.ncf,'0', CONVERT(CHAR(10),c.fecha_factura,103),c.monto_itbi,c.sub_total-c.monto_desc,'0',b.documento, b.documento ,a.nombre,d.ventas,c.sucid FROM vetb00004 a,vetb00061 d,vetb00002 c, vetb00072 b,vetb00060 e WHERE a.tipo_cliente = c.tipo_cliente and a.sec_cliente = c.sec_cliente and c.factura = b.documento AND d.ventas = e.ventas AND c.tipo_cliente = d.tipo_cliente AND c.sucid = b.sucid AND b.tipo_doc = "FT" and c.ventas = d.ventas and c.fecha_factura BETWEEN fecha1 AND fecha2 AND c.status_t IS NOT NULL UNION SELECT c.tipo_doc,e.descripcion,c.tipo_cliente,a.num_rnc,a.zona_postal,b.codigo_dgii,b.ncf,'0', CONVERT(CHAR(10),c.fecha_orig,103),SUM(c.valor_cheque),SUM(c.valor-c.valor_cheque),'0',c.num_doc, c.aplica_a,a.nombre,d.ventas,c.localidad_aplica_a FROM vetb00004 a,vetb00072 b,cctb00001 c,vetb00061 d,vetb00060 e WHERE a.tipo_cliente = c.tipo_cliente and a.tipo_cliente = d.tipo_cliente and d.ventas = e.ventas and a.sec_cliente = c.sec_cliente and c.num_doc = b.documento AND c.localidad_aplica_a = b.sucid AND b.tipo_doc =c.tipo_doc and c.tipo_doc IN ("NC","ND") and c.fecha_orig between fecha1 and fecha2 AND c.status_t IS NOT null GROUP BY c.tipo_doc,e.descripcion,c.tipo_cliente,a.num_rnc,a.zona_postal,b.codigo_dgii,b.ncf,c.fecha_orig,C.NUM_DOC,c.aplica_a,a.nombre,d.ventas, c.localidad_aplica_a LET numero_c1 = 0 SELECT COUNT(*) INTO numero_c1 FROM vetb00002 c, vetb00072 b WHERE c.factura = b.documento and b.tipo_doc in( "FT","FE") AND b.sucid = c.sucid AND c.fecha_factura BETWEEN fecha1 AND fecha2 AND c.status_t IS NOT NULL LET numero_c2 = 0 SELECT COUNT(*) INTO numero_c2 FROM vetb00072 b,cctb00001 c,vetb00002 d WHERE c.num_doc = b.documento and b.tipo_doc in("NC","ND") and c.tipo_doc =b.tipo_Doc AND c.aplica_a = d.factura AND c.localidad_aplica_a = d.sucid AND d.fecha_factura between fecha1 and fecha2 and c.status_t is NOT NULL IF numero_c2 IS NULL THEN LET numero_c2 = 0 END IF LET numero_c = numero_c1 + numero_c2 LET rcol = "C3" LET xi = 4 CALL pru_new_dde(p_companias.rnc,rcol,xi) LET rcol = "C3" LET xi = 5 CALL pru_new_dde(pano,rcol,xi) {CANTIDAD REGISTORS} LET rcol = "C3" LET xi = 6 CALL pru_new_dde(numero_c,rcol,xi) LET responde = fgl_winquestion("WARNING","Precione el boton de INICIO en el formulario para iniciar descarga informacion", "yes","yes|no","question",1) LET responde = UPSHIFT(responde) IF responde = "YES" then START REPORT reporte41 FOREACH busca1 INTO detalle.* IF detalle.tipo_doc = "NC" OR detalle.tipo_Doc = "ND" THEN SELECT a.codigo_dgii,a.ncf INTO codigo_m,ncf_m FROM vetb00072 a WHERE a.tipo_doc IN ("FT","FE") and a.documento = detalle.aplica_a AND a.sucid = detalle.localidad LET detalle.comprobante_m = codigo_m CLIPPED,ncf_m USING "&&&&&&&&" END IF OUTPUT TO REPORT reporte41(detalle.*,pano) END FOREACH FINISH REPORT reporte41 END IF END IF END FUNCTION REPORT reporte4(x,xano) DEFINE x RECORD tipo_doc CHAR(2), ventas char(30), tipo_cliente SMALLINT, sec_cliente INT, rnc CHAR(11), tipo_id CHAR(1), codigodgii CHAR(11), comprobante INT, comprobante_m CHAR(19), fecha DATE, itbis CHAR(12), monto CHAR(12), cod_motivo SMALLINT, documento INT, aplica_a INT, nombre_cli CHAR(30), cod_ventas smallint, localidad SMALLINT, cotizacion_no INT, avance INT, mes char(20), MONTO_ORIG DEC(12,2), TASA DEC(12,2), ano SMALLINT, efectivo DEC(12,2), cheques DEC(12,2), tarjetas DEC(12,2) END RECORD,xano SMALLINT, strfiscal CHAR(19),chfecha CHAR(8), total_monto,total_pagado,remanente_efectivo,remanente_cheques,remanente_tarjetas DEC(12,2), diferencia,i SMALLINT OUTPUT PAGE LENGTH 3000 TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 0 order by x.codigodgii,x.comprobante FORMAT first page header if TOTAL_MONTO is null then let TOTAL_MONTO = 0 END IF LET total_pagado = 0 BEFORE GROUP OF x.cotizacion_no LET remanente_efectivo =x.efectivo LET remanente_cheques=x.cheques LET remanente_tarjetas = x.tarjetas DISPLAY "REMANENTE_EFECTIVO ",remanente_efectivo DISPLAY "REMANENTE_cheq ",remanente_cheques DISPLAY "REMANENTE_tar ",remanente_tarjetas DISPLAY "COT ",x.cotizacion_no ON EVERY ROW IF x.tipo_id ='2' THEN IF LENGTH(x.rnc) < 11 THEN LET diferencia = 11 - LENGTH(x.rnc) FOR i = 1 TO diferencia LET x.rnc = '0',x.rnc CLIPPED END FOR END IF END IF LET total_pagado = x.efectivo+x.cheques+x.tarjetas LET rcol = "C2" LET xi = prow CALL pru_new_dde(x.rnc clipped,rcol,xi) LET rcol = "C3" LET xi = prow CALL pru_new_dde(x.tipo_id,rcol,xi) LET strfiscal = x.codigodgii CLIPPED,x.comprobante USING "&&&&&&&&" LET rcol = "C4" LET xi = prow CALL pru_new_dde(strfiscal clipped,rcol,xi) LET rcol = "C5" LET xi = prow CALL pru_new_dde(x.comprobante_m,rcol,xi) # CALL pru_new_dde(x.cotizacion_no,rcol,xi) LET rcol = "C6" LET xi = prow CALL pru_new_dde('01',rcol,xi) LET chfecha = x.fecha USING "yyyymmdd" LET rcol = "C7" LET xi = prow CALL pru_new_dde(chfecha,rcol,xi) LET rcol = "C9" LET xi = prow CALL pru_new_dde(x.monto,rcol,xi) LET rcol = "C10" LET xi = prow CALL pru_new_dde(x.itbis,rcol,xi) LET rcol = "C18" LET xi = prow CALL pru_new_dde(x.efectivo,rcol,xi) LET rcol = "C19" LET xi = prow CALL pru_new_dde(x.cheques,rcol,xi) LET rcol = "C20" LET xi = prow CALL pru_new_dde(x.tarjetas,rcol,xi) IF total_pagado < x.monto+x.itbis THEN LET rcol = "C21" LET xi = prow CALL pru_new_dde((x.monto+x.itbis)-total_pagado,rcol,xi) ELSE IF (x.monto+x.itbis) > total_pagado THEN LET rcol = "C21" LET xi = prow CALL pru_new_dde(x.monto+x.itbis,rcol,xi) ELSE LET rcol = "C21" LET xi = prow CALL pru_new_dde(0,rcol,xi) END IF END IF #----------------------------------------------- { IF remanente_efectivo > 0 THEN IF remanente_efectivo > x.monto+x.itbis THEN LET rcol = "C18" LET xi = prow CALL pru_new_dde(x.monto+x.itbis,rcol,xi) ELSE LET remanente_efectivo = remanente_efectivo -(x.monto+x.itbis) IF remanente_efectivo IS NULL THEN LET remanente_efectivo =0 END IF LET rcol = "C21" LET xi = prow IF remanente_efectivo < 0 THEN CALL pru_new_dde('0.00',rcol,xi) ELSE CALL pru_new_dde(remanente_efectivo,rcol,xi) END IF END IF END IF IF remanente_cheques > 0 THEN IF remanente_cheques > x.monto+x.itbis THEN LET rcol = "C19" LET xi = prow CALL pru_new_dde(x.monto+x.itbis,rcol,xi) ELSE LET remanente_cheques = remanente_cheques -(x.monto+x.itbis) IF remanente_cheques IS NULL THEN LET remanente_cheques =0 END IF LET rcol = "C21" LET xi = prow IF remanente_cheques < 0 THEN CALL pru_new_dde('0.00',rcol,xi) ELSE CALL pru_new_dde(remanente_cheques,rcol,xi) END IF END IF END IF IF remanente_tarjetas > 0 THEN IF remanente_tarjetas > x.monto+x.itbis THEN LET rcol = "C20" LET xi = prow CALL pru_new_dde(x.monto+x.itbis,rcol,xi) LET rcol = "C21" ELSE IF remanente_tarjetas IS NULL THEN LET remanente_tarjetas =0 END IF LET rcol = "C21" LET xi = prow IF (x.monto+x.itbis) > remanente_tarjetas THEN LET rcol = "C20" LET xi = prow CALL pru_new_dde(remanente_tarjetas,rcol,xi) LET remanente_tarjetas = (x.monto+x.itbis) - remanente_tarjetas ELSE LET remanente_tarjetas = remanente_tarjetas - (x.monto+x.itbis) END IF IF remanente_tarjetas < 0 THEN CALL pru_new_dde('0.00',rcol,xi) ELSE CALL pru_new_dde(remanente_tarjetas,rcol,xi) END IF DISPLAY "REMANENTE2_TAR ",remanente_tarjetas END IF END IF IF total_pagado = 0 OR total_pagado IS NULL THEN LET rcol = "C21" LET xi = prow CALL pru_new_dde(x.monto+x.itbis,rcol,xi) ELSE IF total_pagado > x.monto+x.itbis THEN LET rcol = "C21" LET xi = prow CALL pru_new_dde('0.00',rcol,xi) ELSE LET rcol = "C21" LET xi = prow CALL pru_new_dde((x.monto+x.itbis)-total_pagado,rcol,xi) END IF END IF } LET prow = prow + 1 {AFTER GROUP OF x.cotizacion_no IF remanente_efectivo > 0 THEN IF remanente_efectivo > x.monto+x.itbis THEN LET rcol = "C21" LET xi = prow CALL pru_new_dde(0,rcol,xi) ELSE LET remanente_efectivo = remanente_efectivo -(x.monto+x.itbis) LET rcol = "C21" LET xi = prow #CALL pru_new_dde((x.monto+x.itbis)-total_pagado,rcol,xi) CALL pru_new_dde(remanente_efectivo,rcol,xi) END IF END IF IF remanente_cheques > 0 THEN IF remanente_cheques > x.monto+x.itbis THEN LET rcol = "C21" LET xi = prow CALL pru_new_dde(0,rcol,xi) ELSE LET remanente_cheques = remanente_cheques -(x.monto+x.itbis) LET rcol = "C21" LET xi = prow #CALL pru_new_dde((x.monto+x.itbis)-total_pagado,rcol,xi) CALL pru_new_dde(remanente_cheques,rcol,xi) END IF END IF IF remanente_tarjetas > 0 THEN LET remanente_efectivo = remanente_tarjetas -(x.monto+x.itbis) LET rcol = "C21" LET xi = prow #CALL pru_new_dde((x.monto+x.itbis)-total_pagado,rcol,xi) CALL pru_new_dde(remanente_tarjetas,rcol,xi) END IF } ON LAST ROW LET prow = prow - 1 LET rcol = "C3" LET xi = 6 CALL pru_new_dde(prow,rcol,xi) END REPORT REPORT reporte41(x,xano) DEFINE x RECORD tipo_doc CHAR(2), ventas char(30), tipo_cliente SMALLINT, sec_cliente INT, rnc CHAR(11), tipo_id CHAR(1), codigodgii CHAR(11), comprobante INT, comprobante_m CHAR(19), fecha DATE, itbis CHAR(12), monto CHAR(12), cod_motivo SMALLINT, documento INT, aplica_a INT, nombre_cli CHAR(30), cod_ventas smallint, localidad smallint, cotizacion_no INT, avance INT, mes char(20), MONTO_ORIG DEC(12,2), TASA DEC(12,2), ano SMALLINT, efectivo DEC(12,2), cheques DEC(12,2), tarjetas DEC(12,2) END RECORD, xano SMALLINT, strfiscal CHAR(19),chfecha CHAR(8) OUTPUT PAGE LENGTH 3000 TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 0 ORDER BY x.tipo_doc FORMAT # FIRST PAGE HEADER # PRINT "608101521262 ",pano USING "<<<<",COUNT(*) USING "&&&&&&&&&&&&",SUM(x.monto) USING "&&&&&&&&&&&&&.&&" ON EVERY ROW { PRINT x.rnc,x.tipo_id,x.codigodgii,x.comprobante using "&&&&&&&&"," ",x.fecha USING "yyyymmdd", x.itbis USING "&&&&&&&&&&&&",x.monto USING "&&&&&&&&&.&&",x.cod_motivo USING "&&" PRINT x.rnc,"|",x.tipo_id,"|",x.codigodgii,x.comprobante using "&&&&&&&&",X.NOMBRE_CLI,"|"," ","|",x.fecha USING "yyyymmdd","|", x.itbis USING "&&&&&&&&&&&&","|",x.monto USING "&&&&&&&&&.&&","|",x.cod_motivo USING "&&","|",x.documento,"|",X.MES } IF x.rnc = '0 ' THEN let x.rnc = ' ' end IF LET rcol = "C2" LET xi = prow CALL pru_new_dde(x.rnc,rcol,xi) LET rcol = "C3" LET xi = prow CALL pru_new_dde(x.tipo_id,rcol,xi) LET strfiscal = x.codigodgii CLIPPED,x.comprobante USING "&&&&&&&&" LET rcol = "C4" LET xi = prow CALL pru_new_dde(strfiscal,rcol,xi) LET rcol = "C5" LET xi = prow CALL pru_new_dde(x.comprobante_m,rcol,xi) LET chfecha = x.fecha USING "yyyymmdd" LET rcol = "C6" LET xi = prow CALL pru_new_dde(chfecha,rcol,xi) LET rcol = "C7" LET xi = prow CALL pru_new_dde(x.itbis,rcol,xi) LET rcol = "C8" LET xi = prow CALL pru_new_dde(x.monto,rcol,xi) LET prow = prow + 1 {AFTER group OF x.codigodgii SKIP 1 LINE PRINT x.codigodgii,"==> ",GROUP SUM(x.monto) USING "###,###,###.##"} END REPORT FUNCTION pantalla() DEFINE fecha CHAR(8), hora char(5) SELECT * INTO p_companias.* FROM companias LET l = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2 LET fecha = today USING "dd/mm/yy" LET hora = time DISPLAY p_companias.nombre CLIPPED AT 4,l ATTRIBUTE (REVERSE,YELLOW) DISPLAY fecha AT 4,70 ATTRIBUTE (YELLOW) DISPLAY "Sistema de Contabilidad General" AT 5,24 DISPLAY hora AT 6,73 ATTRIBUTE(YELLOW) CALL fgl_drawbox(5,79,3,1) CALL fgl_drawbox(1,79,22,1) END FUNCTION FUNCTION pru_new_dde(xval,xcol,i) DEFINE celda,rval,xval,xcol STRING DEFINE i INTEGER LET celda = fila_excel,i USING "<<<<&",xcol CLIPPED LET rval = xval # CALL fgl_winmessage("PROGRAMA",prog,"stop") # CALL fgl_winmessage("FILE",file,"stop") # CALL fgl_winmessage("CELDA",celda,"stop") # CALL fgl_winmessage("rVAL",rval,"stop") # CALL fgl_winmessage("P_RES",p_res,"stop") CALL ui.Interface.frontCall("WINDDE","DDEPoke", [prog,filename,celda,rval], [p_res] ) CALL chqDdeError(p_res,"DDEPoke "||celda) { MESSAGE "Salvando la planilla ",file CLIPPED," !" CALL ui.Interface.refresh() LET p_cmd="[save()]" CALL ui.Interface.frontCall("WINDDE","DDEExecute", [prog,file,p_cmd], [p_res] ) IF p_res THEN CALL fgl_winmessage("Planilla salvada", "Nombre = "||file, "information") ELSE CALL chqDdeError(p_res,"DDEExecute save") END IF CAL ui.Interface.frontCall("WINDDE","DDEFinish", [prog,file], [p_res] ) CALL chqDdeError(p_res,"DDEFinish") CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [p_res] ) CALL chqDdeError(p_res,"DDEFinishAll") } END FUNCTION FUNCTION chqDdeError(p_res,p_msg) DEFINE p_res INTEGER, p_msg STRING, m_err STRING, m_log STRING IF p_res THEN RETURN END IF CALL ui.Interface.frontCall("WINDDE","DDEError",[],[m_err]) CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [p_res] ) LET m_log="DDE Error: ",m_err CLIPPED," (",p_msg,")" # CALL errorlog(m_log) LET m_log="Se ha producido un Error en '",p_msg CLIPPED,"'. Para mas detalle revise el LOG de errores." CALL fgl_winmessage("DDE Error", m_log, "stop") EXIT PROGRAM END FUNCTION