Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,381 @@
|
||||
{
|
||||
=============================================================================
|
||||
PROGRAMA : IPPRCS042.4GL
|
||||
OBJETIVO : BUSCAR INFORMACION RELACIONADA A UN PRODUCTO ESPECIFICO
|
||||
PROGRAMADOR : ING. JUAN SOTO
|
||||
FECHA : ENERO 22,2014
|
||||
============================================================================
|
||||
}
|
||||
|
||||
GLOBALS
|
||||
"ipprgb000.4gl"
|
||||
|
||||
MAIN
|
||||
DEFER INTERRUPT
|
||||
CALL ARG_VAL(1) RETURNING usuarios
|
||||
CALL ARG_VAL(2) RETURNING clave
|
||||
|
||||
CONNECT TO "smarmotech" USER usuarios USING clave
|
||||
CALL ipprcs042()
|
||||
END MAIN
|
||||
FUNCTION ipprcs042()
|
||||
DEFINE p1 RECORD
|
||||
pinventario char(30),
|
||||
pcodn smallint,
|
||||
pcodgrupo smallint,
|
||||
pcodtipo smallint,
|
||||
pcodsec smallint,
|
||||
pfecha_inicial DATE,
|
||||
pfecha_final DATE,
|
||||
palmacen smallint
|
||||
END RECORD
|
||||
|
||||
DEFINE aproveedor DYNAMIC ARRAY OF RECORD
|
||||
proveedor CHAR(80),
|
||||
pais CHAR(50),
|
||||
num_oc INT,
|
||||
fechaOrden DATE,
|
||||
moneda CHAR(20),
|
||||
precio DEC(12,2),
|
||||
unidad CHAR(4),
|
||||
cantidad DEC(12,4),
|
||||
descuento DEC(12,2),
|
||||
totalItem DEC(12,2),
|
||||
costoLQ DEC(12,4),
|
||||
costoSTD DEC(12,2),
|
||||
factorLiquidacion DEC(12,2),
|
||||
tasa DEC(8,2)
|
||||
END RECORD,
|
||||
descripcion VARCHAR(100),
|
||||
entradas,salidas,existencia,pcosto,consumo DEC(12,4),
|
||||
ptasa DEC(8,2)
|
||||
|
||||
DEFINE aprecios DYNAMIC ARRAY OF RECORD
|
||||
pmoneda VARCHAR(30),
|
||||
precio DEC(12,2),
|
||||
factorPrecio DEC(12,2),
|
||||
pcodlista SMALLINT
|
||||
END RECORD,
|
||||
dias,diasinventario smallint
|
||||
OPEN WINDOW Fo1 WITH FORM "ipfmcs042"
|
||||
DIALOG ATTRIBUTE (FIELD ORDER FORM,UNBUFFERED)
|
||||
INPUT BY NAME p1.*
|
||||
AFTER FIELD pfecha_inicial
|
||||
LET p1.pfecha_final = TODAY
|
||||
DISPLAY BY NAME p1.pfecha_inicial
|
||||
|
||||
ON ACTION busca_producto
|
||||
IF p1.pinventario IS NULL THEN
|
||||
CALL fgl_winmessage("ERROR","INVENTARIO NO PUEDE ESTAR EN BLANCO","INFO")
|
||||
LET p1.pinventario = '02'
|
||||
NEXT FIELD pinventario
|
||||
END IF
|
||||
CALL busca_prod(P1.pinventario) RETURNING p1.pcodn,p1.pcodgrupo,p1.pcodtipo,p1.pcodsec,articulos.descrip_esp
|
||||
LET descripcion = articulos.descrip_esp,' ',articulos.unidad_med
|
||||
DISPLAY BY NAME descripcion
|
||||
|
||||
AFTER FIELD pcodsec
|
||||
IF p1.pinventario = '02' THEN
|
||||
|
||||
SELECT a.descrip_esp,a.unidad_med INTO articulos.descrip_esp,articulos.unidad_med
|
||||
FROM iptb00002 a
|
||||
WHERE a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec
|
||||
|
||||
IF STATUS = NOTFOUND THEN
|
||||
CALL fgl_winmessage("ERROR","REGISTRO NO EXISTE","information")
|
||||
NEXT FIELD pcodn
|
||||
END IF
|
||||
|
||||
END IF
|
||||
IF p1.pinventario = '01' THEN
|
||||
|
||||
SELECT a.descrip_esp,a.unidad_med INTO articulos.descrip_esp,articulos.unidad_med
|
||||
FROM intb00001 a
|
||||
WHERE a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec
|
||||
|
||||
IF STATUS = NOTFOUND THEN
|
||||
CALL fgl_winmessage("ERROR","REGISTRO NO EXISTE","information")
|
||||
NEXT FIELD pcodn
|
||||
END IF
|
||||
|
||||
# COSTO STD
|
||||
LET pcosto = 0
|
||||
SELECT a.costo_st INTO pcosto
|
||||
FROM intb00013 a
|
||||
WHERE a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_Sec = p1.pcodsec AND
|
||||
a.ano = YEAR(p1.pfecha_final) AND a.status_t IS NULL
|
||||
|
||||
END IF
|
||||
IF p1.pinventario = '03' THEN
|
||||
|
||||
SELECT a.descrip_esp,a.unidad_med INTO articulos.descrip_esp,articulos.unidad_med
|
||||
FROM irtb00001 a
|
||||
WHERE a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec
|
||||
|
||||
IF STATUS = NOTFOUND THEN
|
||||
CALL fgl_winmessage("ERROR","REGISTRO NO EXISTE","information")
|
||||
NEXT FIELD pcodn
|
||||
END IF
|
||||
|
||||
# COSTO STD
|
||||
LET pcosto = 0
|
||||
SELECT a.costo_st INTO pcosto
|
||||
FROM irtb00013 a
|
||||
WHERE a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_Sec = p1.pcodsec AND
|
||||
a.ano = YEAR(p1.pfecha_final) AND a.status_t IS NULL
|
||||
|
||||
END IF
|
||||
|
||||
LET descripcion = articulos.descrip_esp,' ',articulos.unidad_med
|
||||
DISPLAY BY NAME descripcion
|
||||
|
||||
|
||||
ON ACTION buscar
|
||||
# busca la informacion de los proveedores
|
||||
CALL aproveedor.clear()
|
||||
CALL aprecios.clear()
|
||||
DECLARE busca_prov CURSOR FOR
|
||||
|
||||
SELECT CAST(a.cod_sp AS CHAR(2))+' '+
|
||||
CAST(a.cod_sp_Sec AS CHAR(8))+' '+a.nom_sp,c.nom_pais,b.num_oc,
|
||||
CONVERT(CHAR(10),b.fech_oc,103),f.descrip_mon,d.precio,' ',
|
||||
d.cantidad
|
||||
FROM cotb00001 a,cotb00014 b,cotb00031 f,cotb00015 d, OUTER cotb00018 c
|
||||
WHERE a.cod_sp = b.cod_sp AND
|
||||
a.cod_sp_Sec = b.cod_sp_sec AND
|
||||
a.cod_pais = c.cod_pais AND
|
||||
b.tipo = p1.pinventario AND
|
||||
d.cod_n = p1.pcodn AND
|
||||
d.cod_grupo = p1.pcodgrupo AND
|
||||
d.cod_tipo = p1.pcodtipo AND
|
||||
d.cod_sec = p1.pcodsec AND
|
||||
b.num_oc = d.num_oc AND
|
||||
d.cod_mon = f.cod_mon AND
|
||||
b.fech_oc BETWEEN p1.pfecha_inicial AND p1.pfecha_final AND
|
||||
b.status_t IS NULL
|
||||
LET idx = 1
|
||||
FOREACH busca_prov INTO aproveedor[idx].*
|
||||
IF p1.pinventario = '02' THEN
|
||||
# COSTO STD
|
||||
LET pcosto = 0
|
||||
SELECT a.material+a.labor+a.gastos INTO pcosto
|
||||
FROM iptb00004 a
|
||||
WHERE a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_Sec = p1.pcodsec AND
|
||||
a.ano = YEAR(aproveedor[idx].fechaOrden) AND a.status_t IS NULL
|
||||
END IF
|
||||
IF p1.pinventario = '01' THEN
|
||||
# COSTO STD
|
||||
LET pcosto = 0
|
||||
SELECT a.costo_st INTO pcosto
|
||||
FROM intb00013 a
|
||||
WHERE a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_Sec = p1.pcodsec AND
|
||||
a.ano = YEAR(aproveedor[idx].fechaOrden) AND a.status_t IS NULL
|
||||
END IF
|
||||
|
||||
IF p1.pinventario = '03' THEN
|
||||
# COSTO STD
|
||||
LET pcosto = 0
|
||||
SELECT a.costo_st INTO pcosto
|
||||
FROM intb00013 a
|
||||
WHERE a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_Sec = p1.pcodsec AND
|
||||
a.ano = YEAR(aproveedor[idx].fechaOrden) AND a.status_t IS NULL
|
||||
END IF
|
||||
|
||||
|
||||
# COSTO LIQUIDACION
|
||||
LET aproveedor[idx].costoLQ = 0
|
||||
SELECT MAX(a.costo_lq) INTO aproveedor[idx].costoLQ
|
||||
FROM cttb00013 a
|
||||
WHERE a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_Sec = p1.pcodsec AND
|
||||
a.tipo_orden = p1.pinventario AND
|
||||
a.num_oc = aproveedor[idx].num_oc
|
||||
LET ptasa = 1
|
||||
SELECT AVG(a.prima_us) INTO ptasa
|
||||
FROM cgtb00017 a
|
||||
WHERE a.tipo = p1.pinventario AND
|
||||
a.num_oc = aproveedor[idx].num_oc
|
||||
|
||||
LET aproveedor[idx].costoSTD = pcosto
|
||||
LET aproveedor[idx].tasa = ptasa
|
||||
LET aproveedor[idx].factorLiquidacion = (aproveedor[idx].precio * ptasa) / aproveedor[idx].costoLQ
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
# informacion inventarios
|
||||
LET entradas = 0
|
||||
LET salidas = 0
|
||||
LET existencia = 0
|
||||
IF p1.pinventario = '02' THEN
|
||||
SELECT SUM(a.cantidad_2) INTO entradas
|
||||
FROM iptb00006 a,iptb00005 b
|
||||
WHERE a.cod_mov = b.cod_mov AND
|
||||
a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec AND
|
||||
a.fecha BETWEEN p1.pfecha_inicial AND
|
||||
p1.pfecha_final AND
|
||||
b.status_mov = 1 AND
|
||||
a.status_t IS NULL
|
||||
|
||||
|
||||
SELECT SUM(a.cantidad_2) INTO salidas
|
||||
FROM iptb00006 a,iptb00005 b
|
||||
WHERE a.cod_mov = b.cod_mov AND
|
||||
a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec AND
|
||||
a.fecha BETWEEN p1.pfecha_inicial AND
|
||||
p1.pfecha_final AND
|
||||
b.status_mov = 2 AND
|
||||
a.status_t IS NULL
|
||||
|
||||
|
||||
SELECT SUM(a.cantidad_2) INTO existencia
|
||||
FROM iptb00006 a
|
||||
WHERE
|
||||
a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec AND
|
||||
a.fecha <= p1.pfecha_final AND
|
||||
a.status_t IS NULL
|
||||
|
||||
LET dias = (p1.pfecha_final - p1.pfecha_inicial)+1
|
||||
LET diasinventario = (existencia/(salidas*-1))*dias
|
||||
DISPLAY BY NAME entradas,salidas,existencia,diasinventario
|
||||
END IF
|
||||
|
||||
IF p1.pinventario = '01' THEN
|
||||
SELECT SUM(a.cantidad_2) INTO entradas
|
||||
FROM intb00006 a,iptb00005 b
|
||||
WHERE a.cod_mov = b.cod_mov AND
|
||||
a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec AND
|
||||
a.fecha BETWEEN p1.pfecha_inicial AND
|
||||
p1.pfecha_final AND
|
||||
b.status_mov = 1 AND
|
||||
a.status_t IS NULL
|
||||
|
||||
|
||||
SELECT SUM(a.cantidad_2) INTO salidas
|
||||
FROM intb00006 a,iptb00005 b
|
||||
WHERE a.cod_mov = b.cod_mov AND
|
||||
a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec AND
|
||||
a.fecha BETWEEN p1.pfecha_inicial AND
|
||||
p1.pfecha_final AND
|
||||
b.status_mov = 2 AND
|
||||
a.status_t IS NULL
|
||||
|
||||
|
||||
SELECT SUM(a.cantidad_2) INTO existencia
|
||||
FROM intb00006 a
|
||||
WHERE
|
||||
a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec AND
|
||||
a.fecha <= p1.pfecha_final AND
|
||||
a.status_t IS NULL
|
||||
|
||||
DISPLAY BY NAME entradas,salidas,existencia
|
||||
END IF
|
||||
IF p1.pinventario = '03' THEN
|
||||
SELECT SUM(a.cantidad_2) INTO entradas
|
||||
FROM irtb00006 a,iptb00005 b
|
||||
WHERE a.cod_mov = b.cod_mov AND
|
||||
a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec AND
|
||||
a.fecha BETWEEN p1.pfecha_inicial AND
|
||||
p1.pfecha_final AND
|
||||
b.status_mov = 1 AND
|
||||
a.status_t IS NULL
|
||||
|
||||
|
||||
SELECT SUM(a.cantidad_2) INTO salidas
|
||||
FROM irtb00006 a,iptb00005 b
|
||||
WHERE a.cod_mov = b.cod_mov AND
|
||||
a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec AND
|
||||
a.fecha BETWEEN p1.pfecha_inicial AND
|
||||
p1.pfecha_final AND
|
||||
b.status_mov = 2 AND
|
||||
a.status_t IS NULL
|
||||
|
||||
|
||||
SELECT SUM(a.cantidad_2) INTO existencia
|
||||
FROM irtb00006 a
|
||||
WHERE
|
||||
a.cod_n = p1.pcodn AND
|
||||
a.cod_grupo = p1.pcodgrupo AND
|
||||
a.cod_tipo = p1.pcodtipo AND
|
||||
a.cod_sec = p1.pcodsec AND
|
||||
a.fecha <= p1.pfecha_final AND
|
||||
a.status_t IS NULL
|
||||
|
||||
DISPLAY BY NAME entradas,salidas,existencia
|
||||
END IF
|
||||
|
||||
# INFORMACION PRECIOS
|
||||
DECLARE busca_precio CURSOR FOR
|
||||
SELECT a.descripcion,b.precio,'0',b.cod_lista
|
||||
FROM vetb00061 a,vetb00025 b
|
||||
WHERE a.ventas = b.ventas AND
|
||||
b.cod_n = p1.pcodn AND
|
||||
b.cod_grupo = p1.pcodgrupo AND
|
||||
b.cod_tipo = p1.pcodtipo AND
|
||||
b.cod_sec = p1.pcodsec AND
|
||||
b.status_t IS NULL
|
||||
|
||||
LET idx = 1
|
||||
FOREACH busca_precio INTO aprecios[idx].*
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
END INPUT
|
||||
|
||||
DISPLAY ARRAY aproveedor TO record1.*
|
||||
END DISPLAY
|
||||
DISPLAY ARRAY aprecios TO record3.*
|
||||
END DISPLAY
|
||||
ON ACTION cancel
|
||||
LET INT_FLAG = FALSE
|
||||
RETURN
|
||||
|
||||
END DIALOG
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user