Files
DECOMARMOL/PROYECTO/cgdir/edprrp004.4gl
T
2026-09-22 20:38:51 -04:00

373 lines
12 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP001
OBJETIVO : Validacion Facturas
PROGRAMADOR : Juan Soto
FECHA REALIZACION : Enero 20, 1993
-------------------------------------------------------------------------------
}
GLOBALS "cgprgb000.4gl"
DEFINE p_vetb03 RECORD LIKE vetb00003.*
DEFINE p_iptb20 RECORD LIKE iptb00020.*
DEFINE p_cgtb34 RECORD LIKE cgtb00034.*,
tasa decimal(12,2)
DEFINE vetb60 RECORD
cuenta_no_ventas char(10),
cuenta_no_itbis char(10),
cuenta_no_descuento char(10),
cuenta_no_ingresos char(10),
cuenta_no_prima char(10)
END record
DEFINE selec_v CHAR(1000)
DEFINE p_iptb02 RECORD
bodega LIKE iptb00002.bodega,
cod_cia LIKE iptb00002.cod_cia,
cod_grupo LIKE iptb00002.cod_grupo,
cod_n LIKE iptb00002.cod_n,
cod_sec LIKE iptb00002.cod_sec,
cod_tipo LIKE iptb00002.cod_tipo,
codid LIKE iptb00002.codid,
control_existencia LIKE iptb00002.control_existencia,
control_itbis LIKE iptb00002.control_itbis,
descrip_esp LIKE iptb00002.descrip_esp,
descrip_ing LIKE iptb00002.descrip_ing,
nomenclatura LIKE iptb00002.nomenclatura,
porc_desc LIKE iptb00002.porc_desc,
status_t LIKE iptb00002.status_t,
unidad_med LIKE iptb00002.unidad_med,
us_crea LIKE iptb00002.us_crea,
us_mod LIKE iptb00002.us_mod
END RECORD
DEFINE debito,debito1,credito,credito1 DECIMAL(12,2)
DEFINE p_ventas RECORD LIKE vetb00002.*
DEFINE p_vetb04 RECORD LIKE vetb00004.*,
psub LIKE vetb00002.sub_total,
pvalor_bruto, pdescuento,psub_total,pitbis,
pneto DEC(12,2),
factura_ext INT,pclave char(12),entra char(14)
DEFINE historico CHAR(2)
DEFINE fecha1,fecha2 DATE,detalle char(30)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT TO "decomarmol" user usuarios USING clave
SELECT * INTO p_compania.* FROM companias
CALL edprrp004()
END MAIN
FUNCTION edprrp004()
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21,
PROMPT LINE 14
OPEN FORM edfmrp004 FROM "edfmrp004"
DISPLAY FORM edfmrp004
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME ventas,fecha1,fecha2,entra,afecta,detalle
BEFORE INPUT
LET pventas = ui.combobox.forname("formonly.ventas")
CALL cventas()
DISPLAY pventas
BEFORE FIELD entra
LET c_ano = YEAR(fecha1)
LET entra = "ED.14-",MONTH(fecha1) USING "&&",c_ano[3,4]
DISPLAY BY NAME entra
BEFORE FIELD fecha1
SELECT MAX(fecha) INTO p_fecha FROM cgtb00004
WHERE ref[1,5] = entra1
LET fecha1 = p_fecha + 1
DISPLAY BY NAME fecha1
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
ERROR "(16) CAMPO EN BLANCO"
#NEXT FIELD fecha1
END IF
IF fecha1 <= p_fecha THEN
ERROR "(179) EXISTE ENTRADA DE DIARIO CON ESA FECHA"
#NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 is null THEN
ERROR "(16) CAMPO EN BLANCO"
#NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR"
#NEXT FIELD fecha1
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF fecha1 IS NULL OR fecha1 > TODAY THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
IF fecha2 IS NULL OR fecha2 < fecha1 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
EXIT INPUT
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
# Busca los codigos de los productos terminados
# Busca las ventas reales del ano actual hasta el mes indicado anteriormente
LET selec_v =
"SELECT unique a.factura,a.prima_us,a.sub_total,a.monto_desc,a.monto_itbi, ",
" a.neto,d.cuenta_no_ventas,d.cuenta_no_itbis,d.cuenta_no_descuento,",
" d.cuenta_no_prima,d.cuenta_no_ingresos,c.tasa ",
" FROM vetb00002 a,vetb00060 d,cgtb00084 c ",
"WHERE CONVERT(date,a.fecha_factura,103) BETWEEN ?",
" AND ? AND a.ventas = ",ventas," AND c.ano = ",YEAR(fecha1)," AND c.mes = ",MONTH(fecha2),"",
" and a.status_t IS NULL and d.tipo_cliente=a.tipo_cliente and d.tipo_cliente=c.tipo_cliente "
DISPLAY " " AT 19,14
DISPLAY "<<Buscando Informacion... Espere Por Favor" AT 19,14
DISPLAY " " AT 19,14
PREPARE busca_vr FROM selec_v
DECLARE movi_vr CURSOR FOR busca_vr
OPEN movi_vr USING fecha1,fecha2
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING handler
START REPORT p_ventas1 TO XML HANDLER HANDLER
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET idx=1
FOREACH movi_vr INTO p_ventas.factura,p_ventas.prima_us,p_ventas.sub_total,
p_ventas.monto_desc,p_ventas.monto_itbi,p_ventas.neto,vetb60.cuenta_no_ventas,
vetb60.cuenta_no_itbis,vetb60.cuenta_no_descuento,vetb60.cuenta_no_prima,
vetb60.cuenta_no_ingresos,tasa
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF p_ventas.sec_vend != 144 THEN
LET p_ventas.sec_vend = 145
END IF
IF p_ventas.porc_desc IS NULL THEN
LET p_ventas.porc_desc = 0
END IF
IF p_ventas.porc_itbi IS NULL THEN
LET p_ventas.porc_itbi = 0
END IF
{ LET p_ventas.sub_total = p_vetb03.cantidad * p_vetb03.precio
LET p_ventas.monto_desc = (p_vetb03.cantidad * p_vetb03.precio) *
(p_ventas.porc_desc/100)
LET p_ventas.monto_itbi = (p_ventas.sub_total - p_ventas.monto_desc)*
(p_ventas.porc_desc/100)
LET p_ventas.neto = p_ventas.sub_total - p_ventas.monto_desc +
p_ventas.monto_itbi}
OUTPUT TO REPORT p_ventas1(p_ventas.*,p_vetb03.*,p_iptb02.*)
LET idx = idx + 1
END FOREACH
IF idx = 1 THEN
CALL fgl_winmessage("ERROR","NO EXISTEN REGISTROS","INFO")
RETURN
ELSE
FINISH REPORT p_ventas1
CALL entrada (p_ventas.*,p_cgtb34.*,P_CLAVE,vetb60.*,
pitbis,pneto,pdescuento,fecha2,ventas,pvalor_bruto,entra,tasa,afecta,r_output)
END IF
{
DISPLAY pvalor_bruto TO valor_bruto
DISPLAY pdescuento TO descuento
DISPLAY psub_total TO sub_total
DISPLAY pitbis TO itbis
DISPLAY pneto TO neto
}
END FUNCTION
REPORT p_ventas1(x,v,b)
DEFINE x RECORD LIKE vetb00002.*
DEFINE v RECORD LIKE vetb00003.*
DEFINE b RECORD
bodega LIKE iptb00002.bodega,
cod_cia LIKE iptb00002.cod_cia,
cod_grupo LIKE iptb00002.cod_grupo,
cod_n LIKE iptb00002.cod_n,
cod_sec LIKE iptb00002.cod_sec,
cod_tipo LIKE iptb00002.cod_tipo,
codid LIKE iptb00002.codid,
control_existencia LIKE iptb00002.control_existencia,
control_itbis LIKE iptb00002.control_itbis,
descrip_esp LIKE iptb00002.descrip_esp,
descrip_ing LIKE iptb00002.descrip_ing,
nomenclatura LIKE iptb00002.nomenclatura,
porc_desc LIKE iptb00002.porc_desc,
status_t LIKE iptb00002.status_t,
unidad_med LIKE iptb00002.unidad_med,
us_crea LIKE iptb00002.us_crea,
us_mod LIKE iptb00002.us_mod
END RECORD
DEFINE vendedor,imp,imp1 CHAR (1)
DEFINE descrip_venta CHAR(22)
DEFINE descrip1 CHAR(50)
DEFINE pventas CHAR(30)
DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off,
doce,normal CHAR(2)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 100
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_compania.nombre CLIPPED))/2
PRINT COLUMN 1,doce
PRINT COLUMN 1,"edprrp004",
COLUMN lj,p_compania.nombre CLIPPED,
COLUMN 93, "Pag. ", pageno using "###"
PRINT COLUMN 41, "Sistema de Contabilidad",
COLUMN 93, today using "dd/mm/yy"
LET l = (80 - LENGTH("Sistema de Entradas Al Diario")) / 2
PRINT COLUMN l, "Sistema de Entradas Al Diario",
COLUMN 96, hora
PRINT COLUMN 1, "DEL ",fecha1 USING "DD/MM/YYYY"," AL ",
fecha2 USING "DD/MM/YYYY"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 56, "MONTO",
COLUMN 65, "MONTO",
COLUMN 82, "MONTO",
COLUMN 95, "MONTO"
PRINT COLUMN 1, "FACTURA",
COLUMN 56, "BRUTO",
COLUMN 65, "DESCUENTO",
COLUMN 82, "ITBI",
COLUMN 95, "NETO"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
BEFORE GROUP OF x.ventas
IF x.ventas = "1" THEN
PRINT "MERCADO LOCAL"
ELSE
IF x.ventas = "2" THEN
PRINT "MERCADO EXPORTACION"
END IF
IF x.ventas = "3" THEN
PRINT "MERCADO LOCAL USD$"
END IF
END IF
ON EVERY ROW
PRINT COLUMN 1, x.factura USING "&&&&&&",
COLUMN 48, x.sub_total USING "##,###,###.##",
COLUMN 62, x.monto_desc USING "#,###,###.##",
COLUMN 74, x.monto_itbi USING "#,###,###.##",
COLUMN 87, x.neto USING "#,###,###.##",
2 SPACES, factura_ext
IF ventas=1 THEN
LET pventas="VENTAS LOCALES"
END IF
IF ventas=2 THEN
LET pventas="VENTAS EXPORTACION"
END IF
IF ventas=3 THEN
LET pventas="VENTAS LOCALES USD$"
END IF
IF ventas=4 THEN
LET pventas="VENTAS EURO"
END IF
AFTER GROUP OF x.ventas
PRINT COLUMN 48, "-------------",
COLUMN 62, "-------------",
COLUMN 74, "-------------",
COLUMN 87, "-------------"
PRINT COLUMN 1, "Total Facturado: ",pventas,
COLUMN 48, GROUP SUM(x.sub_total) USING "##,###,###.##",
COLUMN 62, GROUP SUM(x.monto_desc) USING "#,###,###.##",
COLUMN 74, GROUP SUM(x.monto_itbi) USING "##,###,###.##",
COLUMN 87, GROUP SUM(x.neto) USING "###,###,###,###.##"
LET pvalor_bruto = GROUP SUM(x.sub_total)
LET pdescuento = GROUP SUM(x.monto_desc)
LET psub_total = pvalor_bruto - pdescuento
LET pitbis = GROUP SUM(x.monto_itbi)
LET pneto = GROUP SUM(x.neto)
END REPORT