Files
MBS/PROYECTO/vedir/veprrp051.4gl
T

977 lines
34 KiB
Plaintext

{
------------------------------------------------------------------------------------
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