Files
MBS/PROYECTO/indir/inprrp046.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

316 lines
10 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : INPRRP045 (COPIA DEL INPRRP011)
OBJETIVO : OPERACIONES POR TIPO DE MOVIMIENTO
PROGRAMADOR : Ing. Juan Fco. Soto
FECHA REALIZACION : Octubre 01, 1992
MODIFICACION : Rompimiento Por Tipo de Movimiento, Con <Esc> Todos los
movimientos, Salir un movimiento por pagina.
FECHA MODIFICACION : Octubre 22, 1992.
MODIFICADO POR : Juan Fco. Soto.
-------------------------------------------------------------------------------
}
GLOBALS "inprgb000.4gl"
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_companias.* FROM companias
CALL inprrp011()
END MAIN
FUNCTION inprrp011()
DEFINE idx_ac,ano,idx_a,idx_c SMALLINT
DEFINE ano_act CHAR(4)
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
END RECORD
DEFINE costos RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
mes CHAR(2),
costo LIKE intb00013.costo_st
END RECORD
DEFINE acumulado RECORD
cod_mov LIKE intb00006.cod_mov,
depto_a SMALLINT,
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE intb00005.descrip_mov,
consumo DECIMAL(10,2),
costo LIKE intb00013.costo_st,
bodega SMALLINT,
titulo_bodega VARCHAR(100)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM infmrp046 FROM "infmrp046"
DISPLAY FORM infmrp046
CALL pantalla()
DISPLAY "infmrp046" AT 4,3
DISPLAY "Operaciones Por Movimientos SIN COSTOS" AT 6,26
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
AFTER FIELD fech_in
IF datos_cons.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CONSTRUCT criterio ON c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.bodega
FROM cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec,bodega
BEFORE CONSTRUCT
CALL bodegas('1')
AFTER CONSTRUCT
IF int_flag THEN
EXIT PROGRAM
END IF
EXIT CONSTRUCT
END CONSTRUCT
LET ano = YEAR(datos_cons.fech_in)
LET selec =
"SELECT c.cod_mov,c.depto_a,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec, ",
" a.descrip_esp,a.unidad_med,b.descrip_mov,SUM(c.cantidad_2),AVG(d.costo_st),c.bodega,f.descripcion ",
" FROM intb00005 b,intb00006 c inner join intb00009 f on f.cod_bodega = c.bodega,intb00001 a left outer join intb00013 d on ",
" a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ",
" a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec and d.ano = ? ",
" WHERE c.cod_n = a.cod_n AND c.cod_grupo = a.cod_grupo AND ",
" c.cod_tipo = a.cod_tipo AND c.cod_sec = a.cod_sec AND ",
" c.cod_mov = b.cod_mov AND ", criterio clipped, "and ",
" c.fecha between ? and ? and c.status_t is NULL ",
" GROUP BY c.cod_mov,c.depto_a,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec, ",
" a.descrip_esp,a.unidad_med,b.descrip_mov,c.bodega,f.descripcion
ORDER BY c.bodega,c.cod_mov,c.depto_a,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec "
DISPLAY "<< Estoy Buscando Acumulado Del Periodo Dado >>"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
DISPLAY " " AT 19,14
LET ano_act = year(datos_cons.fech_fi)
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING handler
START REPORT opera TO XML HANDLER HANDLER
PREPARE busca_p FROM selec
DECLARE periodo SCROLL CURSOR FOR busca_p
OPEN periodo using ano_act,datos_cons.fech_in,datos_cons.fech_fi
FOREACH periodo INTO acumulado.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
OUTPUT TO REPORT opera(acumulado.*)
END FOREACH
FINISH REPORT opera
CLEAR SCREEN
END FUNCTION
REPORT opera(x)
DEFINE x RECORD
cod_mov LIKE intb00006.cod_mov,
depto_a SMALLINT,
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE intb00005.descrip_mov,
consumo DECIMAL(10,2),
costo LIKE intb00013.costo_st,
bodega SMALLINT,
titulo_bodega VARCHAR(100)
END RECORD
DEFINE c_ano1 char(4),
nombre_d CHAR(30)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(3)
DEFINE comp_off CHAR(3)
DEFINE doce CHAR(3)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE total_p,total_m DECIMAL(12,4)
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 = (91 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT comp_on
PRINT COLUMN 1, "inprrp011",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 84, "Pag. ",pageno using "###"
PRINT COLUMN 23, " Sistema de Inventario de Materia Prima",
COLUMN 84, today using "dd/mm/yyyy"
PRINT COLUMN 23, " Operacion por Movimiento SIN COSTO",
COLUMN 87, hora
SKIP 1 LINES
PRINT COLUMN 2, "Desde ",datos_cons.fech_in using "dd/mm/yyyy",
COLUMN 21, "Hasta ", datos_cons.fech_fi using "dd/mm/yyyy"
PRINT COLUMN 1, "--------------------------------------------------",
"-----------------------------------------"
#PRINT COLUMN 66, "Costo"
PRINT COLUMN 4, "Movimiento",
COLUMN 51, "Cantidad",
# COLUMN 66, "Standard",
COLUMN 87, "Total"
PRINT COLUMN 1, "--------------------------------------------------",
"-----------------------------------------"
BEFORE GROUP OF x.bodega
PRINT COLUMN 1,"BODEGA: ",x.titulo_bodega
BEFORE GROUP OF x.cod_mov
LET x.descrip_mov = NULL
SELECT descrip_mov INTO x.descrip_mov FROM intb00005
WHERE cod_mov = x.cod_mov
IF status = notfound THEN
LET status = 0
END IF
PRINT COLUMN 1, x.cod_mov using "##",
COLUMN 7, x.descrip_mov
SKIP 1 LINE
LET total_m = 0
BEFORE GROUP OF x.depto_a
SELECT a.nom_dpto INTO nombre_d FROM adtb00001 a
WHERE a.departamento = x.depto_a
SKIP 1 LINE
PRINT negrillas_on,"Departamento: ",nombre_d
PRINT negrillas_off
ON EVERY ROW
# IF x.consumo IS NOT NULL THEN
# LET total_p = x.costo * x.consumo
# LET total_m = total_m + total_p
PRINT COLUMN 1, x.cod_n USING "&","-",
COLUMN 3, x.cod_grupo USING "&","-",
COLUMN 5, x.cod_tipo USING "&&","-",
COLUMN 8, x.cod_sec USING "&&&",
COLUMN 14, x.descrip_esp[1,30],
COLUMN 35, x.unidad_med,
COLUMN 40, x.consumo USING "##,###,###.##"
# COLUMN 57, x.costo USING "#,###,###.####",
# COLUMN 79, total_p USING "##,###,###.##"
# END IF
AFTER GROUP OF x.cod_mov
PRINT COLUMN 63, "Total ---->",
COLUMN 79, GROUP SUM(x.consumo) USING "##,###,###.##"
SKIP TO TOP OF PAGE
ON LAST ROW
PRINT COLUMN 27, "Total Consumo", "===============",
COLUMN 79, "============"
PRINT COLUMN 40, SUM(x.consumo) USING "###,###,###.###"
PRINT normal
END REPORT