Files
MBS/PROYECTO/cgdir/edprrp004.4gl
T

609 lines
21 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP004
OBJETIVO : Listar las Entrada de Diario de Ventas
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Julio 28, 1993
-------------------------------------------------------------------------------
}
SCHEMA smarmotech
GLOBALS
DEFINE p_vetb02 RECORD LIKE vetb00002.*
DEFINE p_vetb03 RECORD LIKE vetb00003.*
DEFINE p_iptb02 RECORD LIKE iptb00002.*
DEFINE p_vetb04 RECORD LIKE vetb00004.*
DEFINE p_iptb20 RECORD LIKE iptb00020.*
DEFINE p_vetb60 RECORD LIKE vetb00060.*
DEFINE p_compania RECORD LIKE companias.*
DEFINE salir CHAR(1)
DEFINE debito,debito1,credito,credito1 DECIMAL(12,2)
DEFINE select_ac,usuarios,clave,impresor,selec_v,archivo,archivo1 STRING
DEFINE lj,idx_ac,ano,idx_a,idx_c,l SMALLINT
DEFINE ano_act,c_ano CHAR(4)
DEFINE fecha_2 CHAR(8)
DEFINE nombre_cta CHAR(30)
DEFINE fecha_ini_per CHAR(8),
iptb05 RECORD LIKE iptb00005.*,
Pclave CHAR(12),
HANDLER om.SaxDocumentHandler,
r_output,afecta,detalle_ent STRING
DEFINE normal,negrilla_on,negrillas_of,comp_on,comp_off,doce,doble_on,doble_off
CHAR(3),
cmd,imprime,copia CHAR(150)
DEFINE detalle CHAR(30)
DEFINE mes SMALLINT
DEFINE tasa DECIMAL(5,2)
DEFINE p_fecha,fecha1, fecha2 DATE
DEFINE nominas CHAR(1)
DEFINE entra CHAR(14)
DEFINE entra1 CHAR(5)
DEFINE tipo_papel SMALLINT
DEFINE mano_ob,material,material9,material6,gastos DECIMAL(12,2)
###### Variables para almacenar los datos selecionados
###### Variables que la almacenan la informacion enviada al reporte
DEFINE salir1 CHAR(1)
DEFINE idx INTEGER
END GLOBALS
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_compania.* FROM companias
CALL edprrp004()
END MAIN
FUNCTION edprrp004()
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM edfmrp004 FROM "edfmrp004"
DISPLAY FORM edfmrp004
DISPLAY "edprrp004" AT 4,3
DISPLAY "Entrada de Diario Pilas Donadas Y Promociones" AT 6,17
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
###### Aceptando los valores para el rango de fecha
INPUT BY NAME entra,fecha1,fecha2,afecta,detalle
AFTER FIELD entra
SELECT unique a.ref FROM cgtb00004 a
WHERE a.ref = entra
IF STATUS != NOTFOUND THEN
ERROR "(12) REGISTRO EXISTE"
# NEXT FIELD entra
END IF
LET entra1 = 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
###### Selecionando en rango de fecha de la tabla de periodo para el fecha2
SELECT UNIQUE ref FROM cgtb00004 where ref = entra
IF STATUS != NOTFOUND THEN
ERROR "(12) REGISTRO EXISTE"
#NEXT FIELD fecha2
END IF
END INPUT
##### Creando la facilidad para cancelar proceso con DELETE O SUPR
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
LET debito1 = 0
LET debito = 0
LET credito1 = 0
LET credito = 0
# Busca la informacion requerida
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
# Busca los codigos de los productos terminados
# Busca las ventas reales del ano actual hasta el mes indicado anteriormente
LET selec_v =
"SELECT a.*,b.*,c.*,e.* FROM vetb00002 a INNER JOIN vetb00060 e ON a.ventas = e.ventas,vetb00003 b, iptb00002 c ",
"WHERE a.factura = b.factura AND b.cod_n = c.cod_n AND ",
" b.cod_grupo = c.cod_grupo AND b.cod_tipo = c.cod_tipo AND ",
" b.cod_sec = c.cod_sec AND CONVERT(DATE,a.fecha_factura,103) BETWEEN '",fecha1," '",
" AND '",fecha2," '"," AND a.cond_pago=1 AND a.ventas = '1' AND ",
" a.status_t IS NULL"
DISPLAY " " AT 19,14
DISPLAY "<<Buscando Informacion... Espere Por Favor" AT 19,14
PREPARE busca_vr FROM selec_v
DECLARE movi_vr CURSOR FOR busca_vr
OPEN movi_vr
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
START REPORT reporte4 TO XML HANDLER HANDLER
#START REPORT entrada04 TO XML HANDLER handler
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
FOREACH movi_vr INTO p_vetb02.*,p_vetb03.*,p_iptb02.*, p_vetb60.*
IF int_flag THEN
CALL msg(2)
LET int_flag = false
RETURN
END IF
LET p_vetb02.sub_total = p_vetb03.cantidad * p_vetb03.precio
LET p_vetb02.monto_desc = (p_vetb03.cantidad * p_vetb03.precio) *
(p_vetb02.porc_desc/100)
LET p_vetb02.monto_itbi = (p_vetb02.sub_total - p_vetb02.monto_desc)*
(p_vetb02.porc_desc/100)
LET p_vetb02.neto = p_vetb02.sub_total - p_vetb02.monto_desc +
p_vetb02.monto_itbi
OUTPUT TO REPORT reporte4(p_vetb02.*,p_vetb03.*,p_iptb02.*,p_vetb60.*)
#OUTPUT TO REPORT entrada04(p_vetb02.*,p_vetb03.*,p_iptb02.*,p_vetb60.*)
END FOREACH
FINISH REPORT reporte4
#FINISH REPORT entrada04
END FUNCTION
REPORT reporte4(x,v,b,c)
DEFINE x RECORD LIKE vetb00002.*
DEFINE v RECORD LIKE vetb00003.*
DEFINE b RECORD LIKE iptb00002.*
DEFINE c RECORD LIKE vetb00060.*
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
ORDER BY x.sec_vend,b.cod_cia,v.cod_n
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 = (80 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT comp_off
PRINT COLUMN 1, "edprrp025",
COLUMN lj, p_compania.nombre CLIPPED,
COLUMN 75, "Pag. ",pageno using "###"
LET l = (80 - LENGTH("Sistema de Entradas Al Diario")) / 2
PRINT COLUMN l, "Sistema de Entradas Al Diario",
COLUMN 75, today using "dd/mm/yyyy"
LET l = (80 - LENGTH("Ventas al Contado")) / 2
PRINT COLUMN l, "Ventas ",
COLUMN 78, hora
PRINT COLUMN 34, "Al ",fecha2 USING "dd/mm/yyyy"
{
IF pageno > 1 THEN
PRINT COLUMN 1,ASCII 18,ASCII 27, ASCII 80
PRINT COLUMN 01,"Entrada de Diario No.",
doble_on,entra,doble_off
PRINT COLUMN 1,"Observaciones: _____________________________________"
PRINT COLUMN 1," _____________________________________"
PRINT COLUMN 1,
"--------------------------------------------------",
"----------------------------------------",
negrillas_on
PRINT COLUMN 2, "Cuenta ",
COLUMN 11, "Dpto",
COLUMN 18, "Concepto",
COLUMN 50, "Debe",
COLUMN 71, "Haber",negrillas_off
PRINT COLUMN 1,
"--------------------------------------------------",
"----------------------------------------"
ELSE
}
# PRINT COLUMN 1,ASCII 27, ASCII 80
PRINT COLUMN 1,comp_on
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"------------------------------"
PRINT COLUMN 49, "MONTO",
COLUMN 64, "MONTO",
COLUMN 79, "MONTO",
COLUMN 94, "MONTO",
COLUMN 121, "CANTIDADES"
PRINT COLUMN 1, "PRODUCTO",
COLUMN 49, "BRUTO",
COLUMN 60, "DESCUENTO",
COLUMN 79, "ITBI",
COLUMN 94, "NETO",
COLUMN 123, "VENDIDAS"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"------------------------------"
SKIP 1 LINE
--END IF
BEFORE GROUP OF x.sec_vend
SKIP 2 LINE
IF x.sec_vend = 144 THEN
PRINT "**** SAN CRISTOBAL ****"
ELSE
PRINT "**** SANTO DOMINGO ****"
END IF
BEFORE GROUP OF b.cod_cia
SKIP 1 LINE
IF b.cod_cia = 1 THEN
PRINT "PRODUCTO LOCAL"
ELSE
PRINT "PRODUCTO IMPORTADO"
END IF
BEFORE GROUP OF v.cod_n
SELECT a.producto INTO p_iptb20.producto FROM iptb00020 a
WHERE a.cod_n = v.cod_n
AFTER GROUP OF v.cod_n
PRINT COLUMN 1, v.cod_n USING "&"," ",p_iptb20.producto CLIPPED,
COLUMN 40, GROUP SUM(x.sub_total) USING "###,###,###.##",
COLUMN 55, GROUP SUM(x.monto_desc) USING "###,###,###.##",
COLUMN 70, GROUP SUM(x.monto_itbi) USING "###,###,###.##",
COLUMN 85, GROUP SUM(x.neto) USING "###,###,###.##",
COLUMN 115, GROUP SUM(v.cantidad) USING "###,###,###.###"
AFTER GROUP OF b.cod_cia
PRINT COLUMN 40, "--------------",
COLUMN 55, "--------------",
COLUMN 70, "--------------",
COLUMN 85, "--------------",
COLUMN 115, "---------------"
PRINT COLUMN 1, "Total Por Origen Producto ---> ",
COLUMN 40, GROUP SUM(x.sub_total) USING "###,###,###.##",
COLUMN 55, GROUP SUM(x.monto_desc) USING "###,###,###.##",
COLUMN 70, GROUP SUM(x.monto_itbi) USING "###,###,###.##",
COLUMN 85, GROUP SUM(x.neto) USING "###,###,###.##",
COLUMN 115, GROUP SUM(v.cantidad) USING "###,###,###.###"
AFTER GROUP OF x.sec_vend
PRINT COLUMN 40, "--------------",
COLUMN 55, "--------------",
COLUMN 70, "--------------",
COLUMN 85, "--------------",
COLUMN 115, "---------------"
PRINT COLUMN 1, "Total Por Localidad ---> ",
COLUMN 40, GROUP SUM(x.sub_total) USING "###,###,###.##",
COLUMN 55, GROUP SUM(x.monto_desc) USING "###,###,###.##",
COLUMN 70, GROUP SUM(x.monto_itbi) USING "###,###,###.##",
COLUMN 85, GROUP SUM(x.neto) USING "###,###,###.##",
COLUMN 115, GROUP SUM(v.cantidad) USING "###,###,###.###"
ON LAST ROW
PRINT COLUMN 40, "--------------",
COLUMN 55, "--------------",
COLUMN 70, "--------------",
COLUMN 85, "--------------",
COLUMN 115, "---------------"
PRINT COLUMN 1, "Total Ventas ---> ",
COLUMN 40, SUM(x.sub_total) USING "###,###,###.##",
COLUMN 55, SUM(x.monto_desc) USING "###,###,###.##",
COLUMN 70, SUM(x.monto_itbi) USING "###,###,###.##",
COLUMN 85, SUM(x.neto) USING "###,###,###.##",
COLUMN 115, SUM(v.cantidad) USING "###,###,###.###"
PRINT COLUMN 40, "==============",
COLUMN 55, "==============",
COLUMN 70, "==============",
COLUMN 85, "==============",
COLUMN 115, "==============="
PRINT ASCII 27, ASCII 80
SKIP TO TOP OF PAGE
END REPORT
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
SELECT * INTO p_compania.*
FROM companias
LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2
LET fecha = today USING "dd/mm/yyyy"
LET hora = time
DISPLAY p_compania.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
REPORT entrada04(x,v,b,f,p_clave)
DEFINE x RECORD LIKE vetb00002.*
DEFINE v RECORD LIKE vetb00003.*
DEFINE b RECORD LIKE iptb00002.*
DEFINE f RECORD
cuenta_no VARCHAR(8),
departamento INTEGER,
cod_n INTEGER,
sec_vend INTEGER,
cod_cia SMALLINT,
id VARCHAR(2)
END RECORD
DEFINE vendedor,imp,imp1 CHAR (1)
DEFINE descrip_venta CHAR(22)
DEFINE descrip1 CHAR(30)
DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off,
doce,normal CHAR(2)
DEFINE hora CHAR(5),
p_clave CHAR(12)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY p_clave #x.sec_vend,b.cod_cia,v.cod_n
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 = (80 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT comp_off
PRINT COLUMN 1, "edprrp004",
COLUMN lj, p_compania.nombre CLIPPED,
COLUMN 75, "Pag. ",pageno using "###"
LET l = (80 - LENGTH("Sistema de Entradas Al Diario")) / 2
PRINT COLUMN l, "Sistema de Entradas Al Diario",
COLUMN 75, today using "dd/mm/yyyy"
LET l = (80 - LENGTH("Ventas al Contado")) / 2
PRINT COLUMN l, "Ventas al Contado",
COLUMN 78, hora
PRINT COLUMN 34, "Al ",fecha2 USING "dd/mm/yyyy"
-- IF pageno > 1 THEN
PRINT COLUMN 1,ASCII 18,ASCII 27, ASCII 80
PRINT COLUMN 01,"Entrada de Diario No.",
doble_on,entra,doble_off
PRINT COLUMN 1,"Observaciones: _____________________________________"
PRINT COLUMN 1," _____________________________________"
PRINT COLUMN 1,
"--------------------------------------------------",
"----------------------------------------",
negrillas_on
PRINT COLUMN 2, "Cuenta ",
COLUMN 11, "Dpto",
COLUMN 18, "Concepto",
COLUMN 50, "Debe",
COLUMN 71, "Haber",negrillas_off
PRINT COLUMN 1,
"--------------------------------------------------",
"----------------------------------------"
AFTER GROUP OF p_clave
DISPLAY "P_CLAVE ", p_clave
# BUSCA EL NOMBRE DE LA CUENTA
# BUSCA NOMBRE DE LA CUENTA
LET nombre_cta = NULL
SELECT a.descripcion INTO nombre_cta
FROM cgtb00001 a WHERE a.cuenta_no = f.cuenta_no
IF STATUS = NOTFOUND THEN
LET nombre_cta = "NO EXISTE CTA"
END IF
LET debito1 = 0
CASE
WHEN f.id = "DE"
LET debito1 = GROUP SUM(x.monto_desc)
IF debito1 IS NULL THEN
LET debito1 = 0
END IF
IF debito1 IS NULL THEN
LET debito1 = 0
END IF
IF debito1 <> 0 THEN
display "debito ",debito1
LET debito = debito + debito1
PRINT COLUMN 2, f.cuenta_no,
COLUMN 11, f.departamento USING "<<<<",
COLUMN 18, nombre_cta CLIPPED,
COLUMN 50, debito1 using "((#,###,##&.&&)"
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entra,f.cuenta_no,f.departamento,null,
null,null,null,detalle,null,debito1,
0,null,user,current,null,null)
END IF
END IF
WHEN f.id = "BR"
LET credito1 = GROUP SUM(x.sub_total)
IF credito1 IS NULL THEN
LET credito1 = 0
END IF
IF credito1 <> 0 THEN
display "credito ",credito1
LET credito = credito + credito1
PRINT COLUMN 2, f.cuenta_no,
COLUMN 11, f.departamento USING "<<<<",
COLUMN 18, nombre_cta CLIPPED,
COLUMN 50, credito1 using "((#,###,##&.&&)"
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entra,f.cuenta_no,f.departamento,null,
null,null,null,detalle,null,0,credito1,
0,null,user,current,null,null)
END IF
END IF
END CASE
ON LAST ROW
SELECT a.descripcion INTO nombre_cta
FROM cgtb00001 a WHERE a.cuenta_no = "1100"
IF STATUS = NOTFOUND THEN
LET nombre_cta = "NO EXISTE CTA"
END IF
LET debito1 = 0
LET debito1 = SUM(x.neto) using "(((,(((,##&.&&)"
DISPLAY "DEBITO ",debito1
IF debito1 IS NULL THEN
LET debito1 = 0
END IF
IF debito1 IS NULL THEN
LET debito1 = 0
END IF
IF debito1 <> 0 THEN
LET debito = debito + debito1
PRINT COLUMN 2, "1100",
COLUMN 18, nombre_cta CLIPPED,
COLUMN 50, debito1 using "(((,(((,##&.&&)"
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entra,"1100",null,null,null,
null,null,detalle,null,debito1,0,null,
user,current,null,null)
END IF
END IF
#-----------------------------------------------------------------------------
LET nombre_cta = NULL
SELECT a.descripcion INTO nombre_cta
FROM cgtb00001 a WHERE a.cuenta_no = "2128-01"
IF STATUS = NOTFOUND THEN
LET nombre_cta = "NO EXISTE CTA"
END IF
LET credito1 = 0
LET credito1 = SUM(x.monto_itbi) using "(((,(((,##&.&&)"
display "credito ",credito1
IF credito1 IS NULL THEN
LET credito1 = 0
END IF
IF credito1 <> 0 THEN
LET credito = credito + credito1
PRINT COLUMN 2, "2128-01",
COLUMN 18, nombre_cta CLIPPED,
COLUMN 65, credito1 using "((#,###,##&.&&)"
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entra,"2128-01",null,null,
null,null,null,detalle,null,0,
credito1,null,user,current,null,null)
END IF
END IF
PRINT COLUMN 50,"--------------",
COLUMN 65,"--------------"
PRINT COLUMN 35,"Totales-->",
COLUMN 50,debito USING "###,###,##&.&&",
COLUMN 65,credito USING "###,###,##&.&&",negrillas_off
#LET material1 = 0
#LET mano_ob1 = 0
#LET gasto1 = 0
##LET material6 = 0
#LET total1 = 0
SKIP 2 LINE
PRINT COLUMN 1, detalle
PRINT COLUMN 1,comp_off,negrillas_off
SKIP 4 LINE
END REPORT