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

431 lines
13 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP043
OBJETIVO : Entrada de Diario de Divisas Pendientes de Pago
PROGRAMADOR : Tadeo Ferrera
FECHA REALIZACION : Marzo 29, 1993
-------------------------------------------------------------------------------
}
DATABASE rayovac
GLOBALS
DEFINE salir CHAR(1)
DEFINE select_ac,select_ant,select_p CHAR(1000)
DEFINE idx_ac,ano,idx_a,idx_c SMALLINT
DEFINE ano_act,c_ano CHAR(4)
DEFINE fecha_2 CHAR(8)
DEFINE fecha_ini_per CHAR(8)
DEFINE ventas RECORD
factura INTEGER,
fecha_factura DATE,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre CHAR(30),
monto_bruto DECIMAL(10,2),
monto_desc DECIMAL(10,2),
monto_itbi DECIMAL(10,2),
monto_neto DECIMAL(10,2),
prima DECIMAL(10,2),
status_t CHAR(1)
END RECORD
DEFINE acumulado_a RECORD
cod_mov LIKE intb00005.cod_mov,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo LIKE intb00006.cantidad_2,
material LIKE iptb00004.material
END RECORD
DEFINE acumulado_ac RECORD
cod_mov LIKE intb00005.cod_mov,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo INTEGER,
cantidad LIKE vetb00014.cantidad
END RECORD
DEFINE costos RECORD
ventas CHAR(1),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
mes CHAR(2)
END RECORD
###### Variables para busqueda de rango de fecha
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 afecta CHAR(1)
DEFINE mano_ob,material,material6,gasto_ind DECIMAL(12,2)
###### Variables para almacenar los datos selecionados
DEFINE selec5, selec6 CHAR(1500)
###### Variables que la almacenan la informacion enviada al reporte
DEFINE salir1 CHAR(1)
DEFINE idx INTEGER
END GLOBALS
MAIN
DEFER INTERRUPT
CALL edprrp043()
END MAIN
FUNCTION edprrp043()
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM edfmrp043 FROM "edfmrp043"
DISPLAY FORM edfmrp043
CALL pantalla()
DISPLAY "edprrp045" AT 4,3
DISPLAY "Entrada de Diario de Divisas Pendiente de Pago" AT 6,16
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 ref FROM cgtb00004
WHERE 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 select_p =
"SELECT UNIQUE a.num_doc, a.fecha_orig, a.tipo_cliente, ",
"a.sec_cliente, c.nombre,b.sub_total, b.monto_desc, b.monto_itbi, ",
"a.valor, b.prima_us, a.status_t ",
"FROM cctb00001 a, vetb00002 b,vetb00004 c ",
"WHERE a.num_doc = b.factura and a.cod_cia = b.cod_cia and ",
"a.fecha_orig between ? and ? and a.tipo_doc = 'FE' and ",
"b.sec_cliente = c.sec_cliente AND c.status_t IS NULL AND ",
"a.status_t IS NULL ORDER BY 3,1,2 "
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
PREPARE ventas_l FROM select_p
DECLARE facturas CURSOR FOR ventas_l
OPEN facturas USING fecha1, fecha2
START REPORT ventas_ft TO PIPE "lp -dcentral"
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET salir = "N"
WHILE salir != "S"
FETCH facturas INTO ventas.*
IF status = NOTFOUND THEN
LET salir = "S"
EXIT WHILE
END IF
IF int_flag THEN
LET int_flag = false
RETURN
END IF
OUTPUT TO REPORT ventas_ft(ventas.*)
END WHILE
FINISH REPORT ventas_ft
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT ventas_ft(x)
DEFINE x RECORD
factura INTEGER,
fecha_factura DATE,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre CHAR(30),
monto_bruto DECIMAL(10,2),
monto_desc DECIMAL(10,2),
monto_itbi DECIMAL(10,2),
monto_neto DECIMAL(10,2),
prima DECIMAL(10,2),
status_t CHAR(1)
END RECORD
DEFINE tot_1,tot_2,tot_3,tot_4,tot_5 DECIMAL(10,2)
DEFINE total1,cta_1122,cta_4100,descuento DECIMAL(12,2)
DEFINE valor_factura DECIMAL(10,2)
DEFINE doble_on CHAR(3)
DEFINE doble_off CHAR(3)
DEFINE negrillas_on CHAR(6)
DEFINE negrillas_off CHAR(6)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(3)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE normall CHAR(3)
DEFINE comprimido CHAR(3)
DEFINE hora CHAR(5)
DEFINE cuenta CHAR(8)
DEFINE concepto CHAR(30)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
#ORDER BY x.compania
FORMAT
PAGE HEADER
LET doble_on = ASCII 001
LET doble_off = ASCII 002
LET negrillas_on = ASCII 027, ASCII 098
LET negrillas_off = ASCII 027, ASCII 099
LET comp_on = ASCII 31
LET comp_off = ASCII 029
LET comprimido = ASCII 031
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET normall = ASCII 030
LET hora = time
PRINT COLUMN 1, comp_on
PRINT COLUMN 1, "edprrp043",
COLUMN 43, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 126, "Pag.",
COLUMN 131, pageno using "###"
PRINT COLUMN 54, "Sistema de Contabilidad",
COLUMN 124, today using "dd/mm/yyyy"
PRINT COLUMN 44, "Entrada de Diario Divisas Pendiente de Pago",
COLUMN 129, hora
PRINT COLUMN 59," Al ", fecha2 using "dd/mm/yy"
SKIP 1 LINES
SKIP 1 LINE
PRINT COLUMN 1,"Entrada de Diario No. ",doble_on,entra,doble_off
PRINT COLUMN 1,"Observaciones: ",
COLUMN 17,"_________________________________________________"
PRINT COLUMN 17,"_________________________________________________"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
"----------------------------------"
PRINT COLUMN 1, "Cuenta_no",
COLUMN 20, "Dpto.",
COLUMN 36, "Ref. ",
COLUMN 48, "Concepto",
COLUMN 91, "Debe",
COLUMN 108, "Haber"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------" ,
"----------------------------------"
# , negrillas_off
ON EVERY ROW
IF x.monto_neto <> 0 THEN
PRINT COLUMN 1, "2116-01",
COLUMN 36, x.factura USING "######",
COLUMN 48, "BANCO CENTRAL",
COLUMN 102, x.monto_neto using "####,###,###.##"
IF x.monto_neto < 0 THEN LET x.monto_neto = x.monto_neto * -1 END IF
LET total1 = x.monto_neto
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES
(fecha2,1,entra,"2116-01",null,x.factura,null,null,
null,detalle,null,0,total1,null,user,current,null,null)
END IF
IF cta_1122 IS NULL THEN
LET cta_1122 = 0
END IF
IF cta_4100 IS NULL THEN
LET cta_4100 = 0
END IF
LET cta_4100 = cta_4100 + x.monto_neto
LET cta_1122 = cta_1122 + (x.monto_neto *(x.prima-1))
PRINT COLUMN 1, "2116-02",
COLUMN 36, x.factura USING "######",
COLUMN 48, "DIVISAS PEND. DE CANJE",
COLUMN 102, x.monto_neto*(x.prima-1) using "###,###,###.##"
LET total1 = x.monto_neto*(x.prima-1)
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entra,"2116-02",null,x.factura,null,null,
null,detalle,null,0,total1,null,user,current,null,null)
END IF
END IF
ON LAST ROW
IF cta_4100 <> 0 THEN
PRINT COLUMN 1, "1118-11",
COLUMN 48, "BANCO CENTRAL",
COLUMN 85, cta_4100 USING "###,###,###.##"
IF afecta = "S" THEN
IF cta_4100 < 0 THEN LET cta_4100 = cta_4100 * -1 END IF
INSERT INTO cgtb00004 VALUES(fecha2,1,entra,"1118-11",null,null,null,null,
null,detalle,null,cta_4100,0,null,user,current,null,null)
END IF
END IF
IF cta_1122 <> 0 THEN
PRINT COLUMN 1, "1118-10",
COLUMN 48, "DIVISAS PEND. DE CANJE",
COLUMN 85, cta_1122 USING "###,###,###.##"
IF afecta = "S" THEN
IF cta_1122 < 0 THEN LET cta_1122 = cta_1122 * -1 END IF
INSERT INTO cgtb00004 VALUES(fecha2,1,entra,"1118-10",null,null,null,null,
null,detalle,null,cta_1122,0,null,user,current,null,null)
END IF
END IF
SKIP 2 LINE
PRINT COLUMN 85, "--------------",
COLUMN 102, "--------------"
IF cta_4100 <> 0 THEN
LET total1 = cta_1122 + cta_4100
PRINT COLUMN 48, "Totales ---> ",
COLUMN 85, total1 USING "###,###,###.##",
COLUMN 102, total1 USING "###,###,###.##"
END IF
PRINT COLUMN 85, "==============",
COLUMN 102, "=============="
PRINT COLUMN 1 ,negrillas_on,detalle
PRINT comp_off
END REPORT
#### Funcion para dar salida ordenada a la informacion requerida de
#### una entrada de diario de nominas local
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
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
LET fecha = today USING "dd/mm/yy"
LET hora = time
DISPLAY "R A Y . O . V A C D O M I N I C A N A, S. A." AT 4,17
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)
RUN "type C:\\archivo > %USPRINT%" END FUNCTION