Files
2026-09-22 20:38:51 -04:00

613 lines
22 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP128
OBJETIVO : Entrada de Diario Cuentas Por Pagar Internacional
Ingresos
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Julio 28, 1993
-------------------------------------------------------------------------------
}
DATABASE marmotech
GLOBALS
###### Variables para busqueda de rango de fecha
DEFINE afecta CHAR(1),
nombre_cta,detalle CHAR(30),
lj,mes SMALLINT ,
ano CHAR(4) ,
tasa DECIMAL(5,2) ,
p_fecha,fecha1, fecha2 DATE ,
nominas CHAR(1),
entra CHAR(14),
entra1 CHAR(5),
tipo_papel SMALLINT,
debito,credito DECIMAL(12,2),
p_cctb01 RECORD LIKE cctb00001.*,
p_companias RECORD LIKE companias.*,
mano_obra,sueldo_ind,monto_banco,interes DECIMAL(12,2),
###### Variables para almacenar los datos selecionados
selec5, selec6 CHAR(1500)
###### Variables que la almacenan la informacion enviada al reporte
DEFINE diario1 RECORD
cuenta_no SMALLINT,
descripcion CHAR(30),
valor DECIMAL(10,2),
monto_desc DECIMAL(10,2)
END RECORD
DEFINE prt_mvto11 RECORD
factura CHAR(10),
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
fecha DATE,
cuenta_no CHAR(11),
departamento SMALLINT,
cod_aux SMALLINT,
cod_sec SMALLINT,
refer CHAR(10),
debito DECIMAL(12,2),
credito DECIMAL(12,2),
id INTEGER,
nom_sp CHAR(45),
valor_fac DECIMAL(12,2)
END RECORD
END GLOBALS
MAIN
DEFER INTERRUPT
SELECT a.* INTO p_companias.* FROM companias a
CALL edprrp128()
END MAIN
FUNCTION edprrp128()
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM edfmrp128 FROM "edfmrp128"
DISPLAY FORM edfmrp128
CALL pantalla()
DISPLAY "edprrp128" AT 4,3
DISPLAY "Entrada de Diario Cuentas Por Pagar Internacional" AT 6,15
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 AND
a.status_t IS NULL
IF STATUS != NOTFOUND THEN
ERROR "(12) REGISTRO EXISTE"
NEXT FIELD entra
END IF
LET entra1 = entra
BEFORE FIELD fecha1
SELECT MAX(a.fecha) INTO p_fecha FROM cgtb00004 a
WHERE a.ref[1,9] = entra1 AND
a.status_t IS NULL
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 a.ref FROM cgtb00004 a where a.ref = entra AND
a.status_t IS NULL
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
# Busca la informacion requerida
DECLARE movto CURSOR FOR
SELECT a.factura,a.cod_sp,a.cod_sp_sec,a.fecha,a.cuenta_no,
a.departamento,a.cod_aux,a.cod_sec,a.num_doc,a.debito,a.credito,
a.rowid," "," ",b.descripcion
FROM cptb00003 a, cgtb00001 b
WHERE (a.cod_sp = 22 AND a.cuenta_no = b.cuenta_no AND
a.status_t IS NULL AND a.fecha BETWEEN fecha1 AND fecha2 AND
b.status_t IS NULL)
ORDER BY a.cod_sp,a.cod_sp_sec,a.factura,a.cuenta_no,a.rowid
DISPLAY "<< Buscando Informacion .... Espere Por Favor. >>" AT 19,14
ATTRIBUTE(REVERSE,BOLD)
START REPORT cuenta_ft TO "C:\\archivo"
DISPLAY "<< " AT 19,14
DISPLAY "<< Impresion En Proceso .... Espere Por Favor. >>" AT 19,14
ATTRIBUTE(REVERSE,BOLD)
FOREACH movto INTO prt_mvto11.*,nombre_cta
# Busca El Valor De La Factura
SELECT UNIQUE a.valor INTO prt_mvto11.valor_fac
FROM cptb00001 a
WHERE a.cod_sp = prt_mvto11.cod_sp AND
a.cod_sp_sec = prt_mvto11.cod_sp_sec AND
a.num_doc = prt_mvto11.factura AND a.tipo_doc = "FT"
SELECT UNIQUE a.nom_sp INTO prt_mvto11.nom_sp
FROM cotb00001 a
WHERE a.cod_sp = prt_mvto11.cod_sp AND
a.cod_sp_sec = prt_mvto11.cod_sp_sec
OUTPUT TO REPORT cuenta_ft(prt_mvto11.*,nombre_cta)
END FOREACH
FINISH REPORT cuenta_ft
START REPORT cuenta_ft1 TO "C:\\archivo"
FOREACH movto INTO prt_mvto11.*,nombre_cta
# Busca El Valor De La Factura
SELECT UNIQUE a.valor INTO prt_mvto11.valor_fac
FROM cptb00001 a
WHERE a.cod_sp = prt_mvto11.cod_sp AND
a.cod_sp_sec = prt_mvto11.cod_sp_sec AND
a.num_doc = prt_mvto11.factura AND a.tipo_doc = "FT"
SELECT UNIQUE a.nom_sp INTO prt_mvto11.nom_sp
FROM cotb00001 a
WHERE a.cod_sp = prt_mvto11.cod_sp AND
a.cod_sp_sec = prt_mvto11.cod_sp_sec
OUTPUT TO REPORT cuenta_ft1(prt_mvto11.*,nombre_cta)
END FOREACH
FINISH REPORT cuenta_ft1
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT cuenta_ft(x,nombre_cta1)
DEFINE x RECORD
factura CHAR(10),
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
fecha DATE,
cuenta_no CHAR(11),
departamento SMALLINT,
cod_aux SMALLINT,
cod_sec SMALLINT,
refer CHAR(10),
debito DECIMAL(12,2),
credito DECIMAL(12,2),
id INTEGER,
nom_sp CHAR(45),
valor_fac DECIMAL(12,2)
END RECORD
DEFINE reg_final RECORD
cuenta_no CHAR(8),
departamento SMALLINT,
cod_aux SMALLINT,
cod_sec SMALLINT,
num_doc CHAR(10),
debito DECIMAL(12,2),
credito DECIMAL(12,2)
END RECORD,
nombre_cta1 CHAR(30),
codigo_a CHAR(7)
DEFINE nom_sup CHAR(45)
DEFINE sale CHAR(1)
DEFINE valor2,valor1,total_debito,total_credito,t_debito,t_credito,
total_supl1,total_supl2,total1 DECIMAL(12,2)
DEFINE comp_on CHAR(3),
comp_off CHAR(3),
doce CHAR(3),
doble_on CHAR(3),
doble_off CHAR(3),
negrillas_on CHAR(6),
negrillas_off CHAR(6),
hora CHAR(5)
OUTPUT
LEFT MARGIN 0
TOP MARGIN 1
BOTTOM MARGIN 4
#ORDER BY x.cod_sp_sec,x.factura,x.cuenta_no,x.id
FORMAT
PAGE HEADER
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET doble_on = ASCII 27, ASCII 14
LET doble_off = ASCII 27, ASCII 20
LET doce = ASCII 27, ASCII 77
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET hora = time
LET lj = (83 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1,comp_off,doce
PRINT COLUMN 1, "cpprrp011",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 76,"Pag. ", pageno using "###"
PRINT COLUMN 1, negrillas_on,
COLUMN 32, "SISTEMA CUENTA POR PAGAR",
COLUMN 76, today using "dd/mm/yy"
PRINT COLUMN 20,
"Validacion Cuentas Afectadas Por Facturacion",
COLUMN 79, hora
PRINT COLUMN 30,"DEL ", fecha1 USING "dd/mm/yy"," AL ",
fecha2 USING "dd/mm/yy"
PRINT comp_on
PRINT COLUMN 1,
"----------------------------------------",
"----------------------------------------",
"----------------------------------------",
"----------------"
PRINT COLUMN 1, "Suplidor",
COLUMN 40, "Factura",
COLUMN 52, "Fecha",
COLUMN 62, "Valor Fact.",
COLUMN 75, "Cuenta",
COLUMN 85, "Dpto. ",
COLUMN 91, "Cta. Aux.",
COLUMN 99, "Refer.",
COLUMN 115, "Debe",
COLUMN 131, "Haber"
PRINT COLUMN 1,
"----------------------------------------",
"----------------------------------------",
"----------------------------------------",
"----------------"
PRINT negrillas_off
BEFORE GROUP OF x.cod_sp_sec
LET total_supl1 = 0
LET total_supl2 = 0
PRINT COLUMN 1, x.cod_sp USING "&&","-",
x.cod_sp_sec USING "&&&&"," ",
x.nom_sp CLIPPED;
BEFORE GROUP OF x.factura
LET total_debito = 0
LET total_credito = 0
PRINT COLUMN 40, x.factura CLIPPED,
COLUMN 52, x.fecha USING "dd/mm/yy",
COLUMN 62, x.valor_fac USING "#,###,###.##";
ON EVERY ROW
IF x.debito IS NULL THEN
LET x.debito = 0
END IF
IF x.credito IS NULL THEN
LET x.credito = 0
END IF
LET total_debito = total_debito + x.debito
LET total_credito = total_credito + x.credito
LET total_supl1 = total_supl1 + x.debito
LET total_supl2 = total_supl2 + x.credito
IF x.cod_aux IS NOT NULL THEN
LET codigo_a = x.cod_aux USING "##","-",x.cod_sec USING "####"
ELSE
LET codigo_a = null
END IF
PRINT COLUMN 75, x.cuenta_no CLIPPED,
COLUMN 85, x.departamento USING "####",
COLUMN 91, codigo_a CLIPPED,
COLUMN 99, x.refer CLIPPED,
COLUMN 111, x.debito USING "###,###,###.##",
COLUMN 126, x.credito USING "###,###,###.##"
AFTER GROUP OF x.factura
PRINT COLUMN 111, "--------------",
COLUMN 126, "--------------"
PRINT COLUMN 111, GROUP SUM(x.debito) USING "###,###,###.##",
COLUMN 126, GROUP SUM(x.credito) USING "###,###,###.##"
SKIP 1 LINE
IF total1 IS NULL THEN
LET total1 = 0
END IF
LET total1 = total1 + x.valor_fac
AFTER GROUP OF x.cod_sp_sec
PRINT COLUMN 111, "--------------",
COLUMN 126, "--------------"
PRINT COLUMN 111, GROUP SUM(x.debito) USING "###,###,###.##",
COLUMN 126, GROUP SUM(x.credito) USING "###,###,###.##"
PRINT COLUMN 111, "==============",
COLUMN 126, "=============="
SKIP 2 LINE
ON LAST ROW
PRINT COLUMN 1,
"-------------------------------------",
"-------------------------------------",
"-------------------------------------",
"-----------------------"
SKIP 1 LINE
PRINT COLUMN 50, "Total Por Cuentas"
SKIP 1 LINE
DECLARE busca1 CURSOR FOR
SELECT a.cuenta_no,a.departamento,a.cod_aux,a.cod_sec,a.num_doc,
SUM(a.debito),SUM(a.credito)
FROM cptb00003 a
WHERE a.status_t IS NULL AND a.fecha BETWEEN fecha1 AND fecha2 AND
a.cod_sp = 22
GROUP BY 1,2,3,4,5 ORDER BY 5 DESC,6 DESC,2
LET t_debito = 0
LET t_credito = 0
FOREACH busca1 INTO reg_final.*
LET t_debito = t_debito + reg_final.debito
LET t_credito = t_credito + reg_final.credito
PRINT COLUMN 75, reg_final.cuenta_no CLIPPED,
COLUMN 85, reg_final.departamento USING "####",
COLUMN 91, reg_final.cod_aux USING "&&"," ",
reg_final.cod_sec USING "&&&&",
COLUMN 99, reg_final.num_doc CLIPPED,
COLUMN 111, reg_final.debito USING "###,###,###.##",
COLUMN 126, reg_final.credito USING "###,###,###.##"
END FOREACH
PRINT COLUMN 111, "--------------",
COLUMN 126, "--------------"
PRINT COLUMN 45, "Total General --->",
COLUMN 65, total1 USING "###,###,###.##",
COLUMN 111, t_debito USING "###,###,###.##",
COLUMN 126, t_credito USING "###,###,###.##"
LET total1 = 0
LET t_debito = 0
LET t_credito = 0
PRINT comp_off
END REPORT
REPORT cuenta_ft1(x,nombre_cta1)
DEFINE x RECORD
factura CHAR(10),
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
fecha DATE,
cuenta_no CHAR(11),
departamento SMALLINT,
cod_aux SMALLINT,
cod_sec SMALLINT,
refer CHAR(10),
debito DECIMAL(12,2),
credito DECIMAL(12,2),
id INTEGER,
nom_sp CHAR(45),
valor_fac DECIMAL(12,2)
END RECORD
DEFINE nombre_cta1 CHAR(50),
codigo_a CHAR(7)
DEFINE nom_sup CHAR(45)
DEFINE sale CHAR(1)
DEFINE valor2,valor1,total_debito,total_credito,t_debito,t_credito,
total_supl1,total_supl2,total1 DECIMAL(12,2)
DEFINE comp_on CHAR(3),
comp_off CHAR(3),
doce CHAR(3),
doble_on CHAR(3),
doble_off CHAR(3),
negrillas_on CHAR(6),
negrillas_off CHAR(6),
hora CHAR(5)
OUTPUT
LEFT MARGIN 0
TOP MARGIN 1
BOTTOM MARGIN 4
ORDER BY x.cuenta_no,x.departamento,x.cod_aux,x.cod_sec
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 030
LET hora = time
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2
PRINT comp_off
PRINT COLUMN 1, "edprrp128",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 75, "Pag. ",pageno using "###"
LET lj = (80 - LENGTH("Sistema de Entradas Al Diario")) / 2
PRINT COLUMN lj, "Sistema de Entradas Al Diario",
COLUMN 75, today using "dd/mm/yy"
LET lj = (80 - LENGTH("Cuentas Por Pagar Internacional")) / 2
PRINT COLUMN lj, "cuentas Por pagar Internacional",
COLUMN 78, hora
PRINT COLUMN 28, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2
USING "dd/mm/yy"
SKIP 1 LINES
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 16, "Auxiliar",
COLUMN 25, "Concepto",
COLUMN 58, "Debe",
COLUMN 71, "Haber",negrillas_off
PRINT COLUMN 1,
"--------------------------------------------------",
"----------------------------------------"
AFTER GROUP OF x.cod_sec
LET debito = 0
LET debito = GROUP SUM(x.debito)
IF debito IS NULL THEN
LET debito = 0
END IF
LET credito = 0
LET credito = GROUP SUM(x.credito)
IF credito IS NULL THEN
LET credito = 0
END IF
IF debito <> 0 THEN
PRINT COLUMN 2, x.cuenta_no CLIPPED,
COLUMN 11, x.departamento USING "####",
COLUMN 16, x.cod_aux USING "##"," ",x.cod_sec USING "####",
COLUMN 25, nombre_cta1[1,24],
COLUMN 50, debito USING "###,###,###.##"
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entra,x.cuenta_no,
x.departamento,null,x.cod_aux,
x.cod_sec,null,detalle,null,
debito,0,null,user,current,null,
null)
END IF
END IF
IF credito <> 0 THEN
PRINT COLUMN 2, x.cuenta_no CLIPPED,
COLUMN 11, x.departamento USING "####",
COLUMN 16, x.cod_aux USING "##"," ",x.cod_sec USING "####",
COLUMN 25, nombre_cta1[1,24],
COLUMN 65, credito USING "###,###,###.##"
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entra,x.cuenta_no,
x.departamento,null,x.cod_aux,
x.cod_sec,null,detalle,null,
0,credito,null,user,current,null,
null)
END IF
END IF
ON LAST ROW
PRINT negrillas_on
PRINT COLUMN 50, "--------------",
COLUMN 65, "--------------"
PRINT COLUMN 35, "Totales",
COLUMN 50, SUM(x.debito) USING "###,###,###.##",
COLUMN 65, SUM(x.credito) USING "###,###,###.##"
SKIP 2 LINE
PRINT detalle
SKIP 4 LINE
PRINT COLUMN 10, "--------------",
COLUMN 35, "--------------",
COLUMN 60, "--------------"
PRINT COLUMN 10, "PREPARADO POR ",
COLUMN 35, " REVISADO POR ",
COLUMN 60, "AUTORIZADO POR"
PRINT negrillas_off
END REPORT
FUNCTION msgrp000(tipo_papel)
DEFINE tipo_papel SMALLINT,
longitud CHAR(11),
linea_papel CHAR(50)
CASE
WHEN tipo_papel = 1
LET longitud = " 9 1/2 x 11"
WHEN tipo_papel = 2
LET longitud = "14 7/8 x 11"
END CASE
LET linea_papel = "Coloque papel ",longitud," en la impresora."
DISPLAY linea_papel
AT 15,14
DISPLAY "Asegurese de que la impresora este encendida."
AT 16,14
DISPLAY "<Esc> Ejecuta impresion <Supr> Cancela impresion"
AT 18,14
END FUNCTION
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
SELECT * INTO p_companias.*
FROM companias
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2
LET fecha = today USING "dd/mm/yy"
LET hora = time
DISPLAY p_companias.nombre CLIPPED AT 4,lj
ATTRIBUTE (REVERSE,blue)
DISPLAY fecha AT 4,70 ATTRIBUTE (blue)
DISPLAY "Sistema de Contabilidad General" AT 5,24
DISPLAY hora AT 6,73 ATTRIBUTE(blue)
CALL fgl_drawbox(5,79,3,1)
CALL fgl_drawbox(1,79,22,1)
END FUNCTION