977 lines
34 KiB
Plaintext
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 |