Files

221 lines
6.8 KiB
Plaintext

{
----------------------------------------------------------------------------
PROGRAMA : INPRRP042
FUNCION : Comparativo de la existencia calculada por movimientos y
existencia en conteo fisico
PROGRAMADOR : Juan Fco. Soto
FECHA : Diciembre 01, 2009
----------------------------------------------------------------------------
}
GLOBALS
"irprgb000.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 inprrp014()
END MAIN
FUNCTION inprrp014()
DEFINE idx_c SMALLINT
DEFINE salir CHAR(1)
DEFINE p_ano CHAR(4)
DEFINE p_mes INTEGER
DEFINE comparativo RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(3),
existencia DEC(12,4),
movimiento LIKE irtb00006.cantidad_2,
costo DECIMAL(10,4)
END RECORD
DEFINE select_cost CHAR (1000)
OPTIONS
FORM LINE 8,
ERROR LINE 24,
COMMENT LINE 21
OPEN FORM INFMRP014 FROM "infmrp014"
CALL PANTALLA()
DISPLAY FORM INFMRP014
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
INPUT BY NAME datos_cons.fech_fi
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CONSTRUCT criterio ON c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT dife1 TO archivo
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET p_ano = YEAR(datos_cons.fech_fi)
LET p_mes = 12
LET selec =
" SELECT irtb00002.cod_n, irtb00002.cod_grupo, ",
" irtb00002.cod_tipo, irtb00002.cod_sec, ",
" irtb00002.descrip_esp, ",
" irtb00002.unidad_med, ",
" irtb00011.cantidad, ",
" irtb00011.balance, ",
" irtb00013.costo_st ",
" FROM irtb00002 LEFT OUTER JOIN ",
" irtb00013 ON irtb00002.cod_n = irtb00013.cod_n AND ",
" irtb00002.cod_grupo = irtb00013.cod_grupo AND ",
" irtb00002.cod_tipo = irtb00013.cod_tipo AND ",
" irtb00002.cod_sec = irtb00013.cod_sec LEFT OUTER JOIN ",
" irtb00011 ON irtb00002.cod_n = irtb00011.cod_n AND ",
" irtb00002.cod_grupo = irtb00011.cod_grupo AND ",
" irtb00002.cod_tipo = irtb00011.cod_tipo AND ",
" irtb00002.cod_sec = irtb00011.cod_sec ",
" WHERE irtb00011.fecha = CONVERT(DATETIME, ?) AND ",
" (irtb00013.ano = ?) AND (irtb00013.mes_fin = ?) ",
" ORDER BY irtb00002.cod_n, irtb00002.cod_grupo, ",
" irtb00002.cod_tipo, irtb00002.cod_sec"
DISPLAY "<< Buscando Informacion ... Espere Por Favor>>" AT 19,14 ATTRIBUTE
(REVERSE,BOLD)
PREPARE busca_maestra FROM selec
DECLARE diferencia CURSOR FOR busca_maestra
OPEN diferencia USING datos_cons.fech_fi,p_ano,p_mes
DISPLAY "<< Reporte Generandose ... Por Favor Espere>> " AT 19,14 ATTRIBUTE
(REVERSE,BOLD)
FOREACH diferencia INTO comparativo.*
IF STATUS = notfound THEN
EXIT FOREACH
END IF
OUTPUT TO REPORT dife1(comparativo.*)
END FOREACH
FINISH REPORT dife1
CLEAR SCREEN
display "imprime ",imprime
RUN imprime
END FUNCTION
REPORT dife1(x)
DEFINE x RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(3),
existencia DEC(12,4),
movimiento LIKE irtb00006.cantidad_2,
costo DECIMAL(10,4)
END RECORD,
hora char(5),
normal char(3)
DEFINE dsiete CHAR(3)
DEFINE valor_libro,valor,no_igual,valor_no_igual,total_libro,total_df
DECIMAL(12,2)
OUTPUT
LEFT MARGIN 2
ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec
FORMAT
PAGE HEADER
LET hora = time
LET normal = ASCII 27, ASCII 80
LET dsiete = ASCII 27, ASCII 77
LET lj = (155 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT dsiete
PRINT COLUMN 1, "inprrp014",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 148, "Pag. ", pageno USING "###"
PRINT COLUMN 76, "Sistema de Inventarios",
COLUMN 148, today USING "dd/mm/yyyy"
PRINT COLUMN 57, "Inventario Comparativo Teorico Fisico al Cierre",
COLUMN 151, hora
PRINT COLUMN 1, "Al ",datos_cons.fech_fi USING "dd/mm/yyyy"
PRINT COLUMN 1,
"--------------------------------------------------------------------------------",
"---------------------------------------------------------------------------"
PRINT COLUMN 60, "Cantidad",
COLUMN 73, "Costo" ,
COLUMN 92, "Valor En",
COLUMN 110, "Cantidad",
COLUMN 127, "Diferencia",
COLUMN 145, "Valor"
PRINT COLUMN 20, "ARTICULOS",
COLUMN 60, "En Libro",
COLUMN 73, "Standard",
COLUMN 92, "Libro",
COLUMN 111, "Fisico",
COLUMN 127, "Cantidad",
COLUMN 145, "Diferencia"
PRINT COLUMN 1,
"--------------------------------------------------------------------------------",
"----------------------------------------------------------------------------"
SKIP 1 LINE
ON EVERY ROW
LET existe = "S"
IF x.existencia is null THEN
LET x.existencia = 0
END IF
IF x.costo is null THEN
LET x.costo = 0
END IF
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ",
x.descrip_esp," ", x.unidad_med,
COLUMN 54, x.movimiento USING "---,---,---.##",
COLUMN 72, x.costo USING "#,###,###.####",
COLUMN 86, x.movimiento*x.costo USING "---,---,---.##",
COLUMN 104, x.existencia USING "---,---,---.##",
COLUMN 123, x.existencia - x.movimiento USING "---,---,---.##",
COLUMN 140, (x.existencia-x.movimiento)*x.costo USING "---,---,---.##"
ON LAST ROW
PRINT COLUMN 87, "--------------",
COLUMN 140, "--------------"
PRINT COLUMN 86, SUM(x.movimiento*x.costo) USING "---,---,---.##",
COLUMN 140, SUM((x.existencia-x.movimiento)*x.costo)
USING "---,---,---.##"
PRINT COLUMN 10, "Total Registros ==> ",count(*) USING "#,###"
END REPORT