Files
MBS/PROYECTO/indir/inprrp018.4gl
T
jpeguero efdf8953dd Reorganiza MATERIA PRIMA a PROYECTO y avanza inprmt002/005/013/046
- Mueve todo el contenido de PROYECTOS/indir y varias funciones
  compartidas de PROYECTOS/otrodir hacia PROYECTO, siguiendo
  instruccion de Johnny (PROYECTOS se va a eliminar).
- inprmt002: agrega campo Desglose faltante, corrige typo "eLiminar".
- inprmt005: agrega formulario y 3 campos faltantes (Consumo,
  Requiere Autorizacion, Requisiciones), corrige typo "eLiminar".
- inprmt013: agrega formulario, titulo, corrige typo "eLiminar".
- inprmt046: agrega formulario y varias funciones/dependencias
  faltantes (cincodmov, clasf_bloque, medidas, defecto,
  buscaEmp, consultaTransportista, busca_departamento);
  corrige nombres de campo desalineados con el codigo
  (depto_a, bodega) y los convierte a ComboBox donde el
  codigo lo requiere.
- Corrige dependencia faltante de FORMULARIOS_IN a la libreria
  Database (bloqueaba todo el modulo de MATERIA PRIMA).
2026-08-26 13:31:09 -04:00

533 lines
16 KiB
Plaintext

{
============================================================================
PROGRAMA : INPRRP018
SISTEMA : Sistema de inventario de materiales ( LEY 69)
OBJETIVO : Registrar los Movimiento de las fianzas en un rango de fecha
dado.
AUTOR : Tadeo A. Ferreras
Fecha : Agosto 04, 1993
=============================================================================
}
GLOBALS "inprgb000.4gl"
#### Registro para busqueda de informacion a imprimir
DEFINE movfi RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(15),
fecha DATE,
num_fianza INTEGER,
tipo_doc CHAR(1),
cantidad_f DECIMAL(12,2),
cantidad_c DECIMAL(12,2),
codigo CHAR(11),
factura INTEGER,
fecha_e DATE,
cantidad_e DECIMAL(12,2),
balance DECIMAL(12,2),
letrero CHAR(10)
END RECORD
DEFINE fianza3 RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(30)
END RECORD
DEFINE fianza1 RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
fecha DATE,
num_fianza INTEGER,
tipo_doc CHAR(1),
cantidad_f DECIMAL(12,2),
cantidad_c DECIMAL(12,2)
END RECORD
DEFINE fianza2 RECORD
factura INTEGER,
fecha_e DATE,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad_e DECIMAL(12,2)
END RECORD
DEFINE fecha1,fecha2,fecha8 DATE ### Variables de los valores del rango
DEFINE idx_1 INTEGER
DEFINE salir2,salir,salir1 CHAR(1)
DEFINE selec4,selec5 CHAR(1000)
DEFINE cantidad_b DECIMAL(12,2)
####### Funcion que hace la busqueda de informacion a imprimir
FUNCTION inprrp018()
DEFINE idx1,idx2 SMALLINT
DEFINE fecha_c DATE
DEFINE fact1 INTEGER
LET int_flag = false
OPTIONS
FORM LINE 8
OPEN FORM infmrp018 FROM "infmrp018"
DISPLAY FORM infmrp018
CALL pantalla()
DISPLAY "inprrp018" AT 4,3 ATTRIBUTE(YELLOW)
DISPLAY "Movimientos de las Fianzas" AT 6,27 ATTRIBUTE(YELLOW)
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
##### Aceptando los valores para busqueda en un rango de fecha
INPUT BY NAME fecha1,fecha2
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
BEFORE FIELD fecha2
LET fecha2 = today
DISPLAY BY NAME fecha2
AFTER FIELD fecha2
IF fecha2 IS NULL THEN
LET fecha2 = today
END IF
DISPLAY BY NAME fecha2
IF fecha1 > fecha2 THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
END INPUT
CONSTRUCT BY NAME criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
######## En caso de que presione DELETE cancela la operacion
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
############ Selecionando la informacion a imprimir
LET selec =
"SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp, ",
"b.unidad_med ,a.tipo_doc ",
"FROM intb00022 b,intb00020 a ",
"WHERE (a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
"a.cod_tipo=b.cod_tipo and a.cod_sec=b.cod_sec) AND ",
"a.status_t IS NULL AND ",criterio CLIPPED,
" AND (a.fecha BETWEEN ? AND ?) ORDER BY 7,1,2,3,4 "
DISPLAY "<< Buscando Materiales ... Espere por Favor. >>" AT 19,14
ATTRIBUTE(BOLD)
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
OPEN busca USING fecha1,fecha2
DECLARE busca1 SCROLL CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.fecha,a.num_fianza,a.tipo_doc,
SUM(a.cantidad),SUM(a.cantidad_c)
FROM intb00020 a
WHERE a.status_t IS NULL AND (a.fecha BETWEEN fecha1 AND fecha2 )
GROUP BY 6,1,2,3,4,5,7 ORDER BY 7,1,2,3,4,5
DISPLAY "<< Buscando las fianzas ... Espere por Favor. >>" AT 19,14
ATTRIBUTE(BOLD)
OPEN busca1
DECLARE busca2 SCROLL CURSOR FOR
SELECT b.factura,b.fecha,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,
SUM((b.cantidad*c.cantidad)/1000)
FROM intb00021 b,intb00016 c
WHERE (b.cod_n = c.cod_n_p AND b.cod_grupo = c.cod_grupo_p) AND
(b.status_t IS NULL) AND (b.fecha BETWEEN fecha1 AND fecha2) AND
c.status_t IS NULL
GROUP BY 1,2,3,4,5,6 ORDER BY 3,4,5,6,2,1
DISPLAY "<< Buscando Exportaciones... Favor Esperar >>" AT 19,14
ATTRIBUTE(BOLD)
OPEN busca2
START REPORT fianza TO "C:\\archivo"
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14
ATTRIBUTE(REVERSE)
###### Loop que envia la informacion a la funcion de reporte
INITIALIZE movfi.* TO NULL
# BUSQUEDA DE LOS MATERIALES A IMPRIMIR
LET salir = "N"
WHILE salir != "S"
FETCH busca INTO fianza3.*
IF STATUS = NOTFOUND THEN
LET salir = "S"
EXIT WHILE
END IF
#### En caso que presione DELETE o SUPR cancela la impresion
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET movfi.codigo = fianza3.cod_n USING "&"," ",fianza3.cod_grupo USING "&",
" ",fianza3.cod_tipo USING "&&&","-",
fianza3.cod_sec USING "&&&"
LET movfi.cod_n = fianza3.cod_n
LET movfi.cod_grupo = fianza3.cod_grupo
LET movfi.cod_tipo = fianza3.cod_tipo
LET movfi.cod_sec = fianza3.cod_sec
LET movfi.descrip_esp = fianza3.descrip_esp
LET movfi.unidad_med = fianza3.unidad_med
LET movfi.balance = 0
LET movfi.letrero = NULL
LET movfi.fecha = 1
LET fecha8 = NULL
LET fact1 = 0
# BUSQUEDA DE LAS FIANZAS
LET fecha_c = 1
LET salir1 = "N"
LET idx1 = 1
WHILE salir1 != "S"
FETCH ABSOLUTE idx1 busca1 INTO fianza1.*
IF STATUS = NOTFOUND THEN
LET salir1 = "S"
LET idx1 = 1
EXIT WHILE
END IF
LET idx1 = idx1 + 1
IF fianza1.cod_n = movfi.cod_n AND
fianza1.cod_grupo = movfi.cod_grupo AND
fianza1.cod_tipo = movfi.cod_tipo AND
fianza1.cod_sec = movfi.cod_sec THEN
LET movfi.fecha = fianza1.fecha
LET movfi.num_fianza = fianza1.num_fianza
LET movfi.tipo_doc = fianza1.tipo_doc
LET movfi.cantidad_f = fianza1.cantidad_f
LET movfi.cantidad_c = fianza1.cantidad_c
LET movfi.factura = NULL
LET movfi.fecha_e = NULL
LET movfi.cantidad_e = 0
LET movfi.balance = movfi.balance+fianza1.cantidad_c
IF movfi.balance <= 0 THEN
LET movfi.letrero = "CERRADA"
ELSE
LET movfi.letrero = NULL
END IF
LET idx = 0
IF movfi.balance > 0 THEN
IF fianza1.fecha > fecha8 THEN
LET movfi.balance = fianza1.cantidad_c
END IF
# BUSCA LAS EXPORTACIONES
LET idx2 = 1
LET salir2 = "N"
WHILE salir2 != "S"
FETCH ABSOLUTE idx2 busca2 INTO fianza2.*
IF STATUS = NOTFOUND THEN
LET salir2 = "S"
LET idx2 = 1
EXIT WHILE
END IF
LET idx2 = idx2 + 1
IF movfi.cod_n = fianza2.cod_n AND
movfi.cod_grupo = fianza2.cod_grupo AND
movfi.cod_tipo = fianza2.cod_tipo AND
movfi.cod_sec = fianza2.cod_sec AND
fianza2.fecha_e >= movfi.fecha AND
((fianza2.fecha_e-movfi.fecha)<3670000) AND
movfi.balance > 0 AND
fianza2.fecha_e >= fecha_c THEN
LET movfi.factura = fianza2.factura
LET movfi.fecha_e = fianza2.fecha_e
LET movfi.cantidad_e = fianza2.cantidad_e #* cantidad_b
LET fecha8 = fianza2.fecha_e
IF fecha_c <> movfi.fecha_e THEN
LET fact1 = 0
END IF
IF movfi.factura > fact1 THEN
LET movfi.balance = movfi.balance-fianza2.cantidad_e
IF movfi.balance <= 0 THEN
LET movfi.letrero = "CERRADA"
ELSE
LET movfi.letrero = NULL
END IF
OUTPUT TO REPORT fianza(movfi.*,fecha1,fecha2)
LET idx = idx + 1
LET fact1 = movfi.factura
LET fecha_c = movfi.fecha_e
END IF
IF movfi.balance <= 0 THEN
LET salir2 = "S"
EXIT WHILE
END IF
END IF
END WHILE
END IF
IF idx = 0 THEN
LET movfi.factura = null
LET movfi.cantidad_e = 0
LET movfi.fecha_e = null
LET fecha8 = 0
OUTPUT TO REPORT fianza(movfi.*,fecha1,fecha2)
END IF
END IF
END WHILE
LET fecha8 = 0
END WHILE
FINISH REPORT fianza
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
#### Funcion que genera el reporte
REPORT fianza(x,fecha3,fecha4)
##### Variables con las informaciones a imprimir
DEFINE x RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(15),
fecha DATE,
num_fianza INTEGER,
tipo_doc CHAR(1),
cantidad_f DECIMAL(12,2),
cantidad_c DECIMAL(12,2),
codigo CHAR(11),
factura INTEGER,
fecha_e DATE,
cantidad_e DECIMAL(12,2),
balance DECIMAL(12,2),
letrero CHAR(10)
END RECORD,
cantidad_b DECIMAL(12,2),
balance,balance1 DECIMAL(12,2),
letrero CHAR(15),
intb27 RECORD LIKE intb00027.*,
i SMALLINT
DEFINE fact2 INTEGER
DEFINE fech DATE
DEFINE cantidad1 DECIMAL(12,2)
DEFINE codd CHAR(10)
DEFINE fecha3,fecha4,fecha5 DATE
DEFINE idx,idx1,no_fianza,fac_num INTEGER
DEFINE fact,fact1 CHAR(1)
DEFINE descrip,p_descrip CHAR(30)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(6)
DEFINE negrillas_off CHAR(6)
DEFINE comp_on CHAR(3)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE normall CHAR(3)
DEFINE comp CHAR(3)
DEFINE hora CHAR(5)
DEFINE tipo CHAR(2)
DEFINE imp_cli CHAR(1)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
##### Sorteando la salida de la informacion.
#ORDER BY x.codigo,x.fecha,x.num_fianza,x.fecha_e,x.factura
###### Diseno de la salida de la informacion
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 031
LET comp_off = ASCII 18
LET comp = ASCII 031
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET normall = ASCII 030
LET hora = time
LET lj = (152 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, doce
PRINT COLUMN 1, "inprrp018",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 145, "Pag. ",pageno USING "###"
PRINT COLUMN 58, " Sistema de Inventario de Materiales (Ley-69) ",
COLUMN 145, today using "dd/mm/yyyy"
PRINT COLUMN 69, "Movimientos de la Fianza",
COLUMN 148, hora
PRINT COLUMN 69, "Del ",fecha3 USING "dd/mm/yyyy",
" Al ",fecha4 using "dd/mm/yyyy"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
"----------------------------------------------------"
, negrillas_on
PRINT COLUMN 48,"Numero",
COLUMN 63,"Fecha",
COLUMN 75,"Cantidad a",
COLUMN 87,"Fecha de",
COLUMN 97,"Numero",
COLUMN 107,"Fecha",
COLUMN 125,"Cantidad",
COLUMN 145,"Balance"
PRINT COLUMN 1,"Material",
COLUMN 48,"Fianza",
COLUMN 63,"Fianza",
COLUMN 75,"Cancelar",
COLUMN 87,"Vencim.",
COLUMN 97,"Factura",
COLUMN 107,"Export.",
COLUMN 125,"Factura",
COLUMN 145,"Material",negrillas_off
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------" ,
"----------------------------------------------------"
PRINT COLUMN 1, " "
BEFORE GROUP OF x.tipo_doc
IF x.tipo_doc = "F" THEN
PRINT COLUMN 1, negrillas_on,"I M P O R T A D A S",negrillas_off
ELSE
PRINT COLUMN 1, negrillas_on, "L O C A L E S",negrillas_off
END IF
BEFORE GROUP OF x.codigo
LET fact2 = 0
PRINT negrillas_on
PRINT COLUMN 1, x.cod_n USING "&"," ",x.cod_grupo USING "&"," ",
x.cod_tipo USING "&&&","-",x.cod_sec USING "&&&"," ",
x.descrip_esp CLIPPED,
COLUMN 44, x.unidad_med CLIPPED,negrillas_off;
BEFORE GROUP OF x.num_fianza
PRINT COLUMN 51, x.num_fianza USING "######"," ",x.tipo_doc,
COLUMN 61, x.fecha USING "dd/mm/yyyy",
COLUMN 71, x.cantidad_c USING "###,###,##&.&&",
COLUMN 86, x.fecha + 365 USING "dd/mm/yyyy";
BEFORE GROUP OF x.fecha_e
LET fact2 = 0
LET fech = x.fecha_e
ON EVERY ROW
##### Proceso para balancear las cantidades de las fianzas contra las
##### cantidades de la factura y asi poder cancelar las fianzas.
IF fech IS NULL THEN
LET fech = x.fecha_e
LET fact2 = x.factura
END IF
IF fech <> x.fecha_e THEN
LET fact2 = 0
END IF
IF x.fecha_e IS NULL OR (fech = x.fecha_e AND x.factura > fact2) THEN
#----------------------------------------------------------------------------
PRINT COLUMN 97, x.factura USING "#########",
COLUMN 107, x.fecha_e USING "dd/mm/yyyy",
COLUMN 120, x.cantidad_e USING "###,###,###.###",
COLUMN 137, x.balance USING "---,---,---.###",
COLUMN 155, x.letrero CLIPPED
ELSE
PRINT COLUMN 155, " "
END IF
AFTER GROUP OF x.num_fianza
# IMPRIME LAS INFORMACIONES ADICIONALES DE LA FIANZA CUANDO ESTA ESTE CERRADA
# MODIFICADO POR: JUAN F. SOTO
# FECHA: DICIEMBRE 17, 1996.
INITIALIZE intb27.* TO NULL
SELECT a.* INTO intb27.*
FROM intb00027 a
WHERE a.num_fianza = x.num_fianza
PRINT COLUMN 1, "FORM.3111: ",negrillas_on,
intb27.num_form using "######",
negrillas_off,
"PLANILLA/LIQ: ",negrillas_on,
intb27.no_pla_liq CLIPPED,negrillas_off,
"NO. RESOLUCION: ",negrillas_on,
intb27.num_res_canc USING "######",negrillas_off,
"NUM.OFICIO: ",negrillas_on,intb27.num_oficio CLIPPED,
negrillas_off
PRINT negrillas_off
AFTER GROUP OF x.codigo
SKIP 1 LINE
ON LAST ROW
LET balance = 0
PRINT COLUMN 1,normal,negrillas_off
PAGE TRAILER
SKIP 1 LINE
PRINT COLUMN 2,
"Tipo de Documento: F=Internamiento por Fianza L=Internamiento Material Local"
END REPORT