266 lines
10 KiB
Plaintext
266 lines
10 KiB
Plaintext
GLOBALS "ipprgb000.4gl"
|
|
DEFINE xnum_doc_tmp INT,
|
|
tmp_cantidad,tmp_cantidad1 DECIMAL(12,5),
|
|
producto CHAR(30),
|
|
xcodn,xcodgrupo,xcodtipo,xcodsec INT
|
|
|
|
DEFINE movi4 DYNAMIC ARRAY OF RECORD
|
|
id_seccion INT,
|
|
d_seccion VARCHAR(50),
|
|
id_tramo INT,
|
|
d_tramo VARCHAR(50),
|
|
cantidad DECIMAL(12,5),
|
|
cantidad_o DECIMAL(12,5)
|
|
END RECORD
|
|
|
|
DEFINE movi5 DYNAMIC ARRAY OF RECORD
|
|
id_seccion1 INT,
|
|
d_seccion1 VARCHAR(50),
|
|
id_tramo1 INT,
|
|
d_tramo1 VARCHAR(50),
|
|
cantidad1,cantidad2 DECIMAL(12,5),
|
|
de_seccion,de_tramo int
|
|
END RECORD
|
|
|
|
FUNCTION insertaUbicacionDH(moviD,num_doc_tmp)
|
|
DEFINE moviD RECORD
|
|
cod_n,cod_Grupo,cod_tipo,cod_sec INT,
|
|
descripcion,observacion STRING,
|
|
book varchar(50)
|
|
,tipos varchar(50)
|
|
,lado_1 decimal(12,5)
|
|
,lado_2 decimal(12,5)
|
|
,lado_3 decimal(12,5)
|
|
,id_bodega, id_seccion1 INT
|
|
,d_seccion1 VARCHAR(50)
|
|
,id_tramo1 INT
|
|
,d_tramo1 VARCHAR(50),
|
|
id_producto VARCHAR(25),
|
|
tipo_material VARCHAR(30)
|
|
,cantidad1,cantidad2,factor_conv DECIMAL(12,5),
|
|
cod_mov INT,
|
|
control_transferencia_ubicaciones VARCHAR(2),
|
|
cod_mov_transferencia INT
|
|
|
|
END RECORD,
|
|
num_doc_tmp,se_seccion,se_tramo INT
|
|
|
|
DEFINE movi10 DYNAMIC ARRAY OF RECORD
|
|
cod_n,cod_Grupo,cod_tipo,cod_sec INT,
|
|
descripcion,observacion STRING,
|
|
book varchar(50)
|
|
,tipos varchar(50)
|
|
,lado_1 decimal(12,5)
|
|
,lado_2 decimal(12,5)
|
|
,lado_3 decimal(12,5)
|
|
,id_bodega, id_seccion1 INT
|
|
,d_seccion1 VARCHAR(50)
|
|
,id_tramo1 INT
|
|
,d_tramo1 VARCHAR(50),
|
|
id_producto VARCHAR(25),
|
|
tipo_material VARCHAR(30),
|
|
cantidad1,cantidad2,factor_conv DECIMAL(12,5),
|
|
cod_mov INT,
|
|
de_seccion,de_tramo int
|
|
END RECORD
|
|
DEFINE p_arr,p_arr2,scr_l2 INT,
|
|
total_c1,total_c2,se_cantidad1,se_cantidad2 DEC(12,5)
|
|
|
|
OPEN WINDOW w1 WITH FORM "ipfmmt046"
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
INPUT BY NAME descripcion
|
|
|
|
BEFORE INPUT
|
|
LET producto = moviD.cod_n USING "<<<&",
|
|
"-",moviD.cod_grupo USING "<<<<&",
|
|
"-",moviD.cod_tipo USING "<<<<&",
|
|
"-",moviD.cod_sec USING "<<<<&"
|
|
LET xcodn = moviD.cod_n
|
|
LET xcodgrupo = moviD.cod_grupo
|
|
LET xcodtipo = moviD.cod_tipo
|
|
LET xcodsec = moviD.cod_sec
|
|
|
|
LET descripcion = moviD.descripcion CLIPPED,"-(",producto CLIPPED,")"
|
|
|
|
LET tmp_cantidad = 0
|
|
LET tmp_Cantidad1 = 0
|
|
CALL movi5.clear()
|
|
CALL movi4.clear()
|
|
LET xnum_Doc_tmp = num_doc_tmp
|
|
CALL cseccionesDH(moviD.*) RETURNING movi4
|
|
|
|
|
|
END INPUT
|
|
|
|
DISPLAY ARRAY movi4 TO recordd.*
|
|
|
|
BEFORE ROW
|
|
LET scr_l = scr_line()
|
|
|
|
ON SELECTION CHANGE
|
|
LET p_arr = arr_curr()
|
|
LET se_seccion =movi4[p_arr].id_seccion
|
|
LET se_tramo =movi4[p_arr].id_tramo
|
|
LET se_cantidad1 = movi4[p_arr].cantidad
|
|
LET se_cantidad2 = movi4[p_arr].cantidad_o
|
|
|
|
CALL ctramosDH(moviD.id_bodega, p_arr,movi4[p_arr].id_seccion,movi4[p_arr].id_tramo,se_seccion,se_tramo,moviD.cod_mov)
|
|
|
|
END DISPLAY
|
|
|
|
INPUT ARRAY movi5 FROM recordh.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
BEFORE ROW
|
|
LET p_arr2 = arr_curr()
|
|
LET scr_l2 = scr_line()
|
|
|
|
LET moviD.descripcion = moviD.descripcion CLIPPED
|
|
|
|
AFTER FIELD cantidad1
|
|
IF movi5[p_arr2].id_seccion1 IS NOT NULL THEN
|
|
IF movi5[p_arr2].cantidad1 >0 THEN
|
|
LET movi5[p_arr2].cantidad2 = movi5[p_arr2].cantidad1*movid.factor_conv
|
|
|
|
IF movi5[p_arr2].cantidad2 > se_cantidad2 THEN
|
|
CALL msg(1004)
|
|
NEXT FIELD cantidad1
|
|
END IF
|
|
END IF
|
|
END IF
|
|
AFTER ROW
|
|
LET tmp_cantidad1 =0
|
|
FOR idx = 1 TO movi5.getLength()
|
|
IF movi5[idx].cantidad1 >0 THEN
|
|
LET tmp_cantidad1 = tmp_cantidad1 +movi5[idx].cantidad2
|
|
CALL insertTemporal(moviD.cod_n,moviD.cod_grupo,moviD.cod_tipo,moviD.cod_sec,moviD.cod_mov,
|
|
moviD.id_bodega,movi5[idx].cantidad1,movi5[idx].cantidad2, movi5[idx].id_seccion1, movi5[idx].id_tramo1,
|
|
se_seccion,se_tramo,'0',xnum_Doc_tmp)
|
|
|
|
IF tmp_cantidad1 > se_cantidad2 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1004)
|
|
NEXT FIELD cantidad1
|
|
ELSE
|
|
COMMIT WORK
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
END INPUT
|
|
|
|
ON ACTION ubicar
|
|
|
|
SELECT ISNULL(SUM(a.cantidad_1),0),ISNULL(SUM(a.cantidad_2),0) INTO total_c1,total_c2 FROM tmpubicacionTramos a
|
|
WHERE (a.num_doc = xnum_doc_tmp AND
|
|
a.bodega = moviD.id_bodega AND
|
|
a.cod_mov = moviD.cod_mov) AND
|
|
(a.cod_n = moviD.cod_n AND a.cod_grupo = moviD.cod_Grupo AND a.cod_tipo = moviD.cod_tipo AND
|
|
a.cod_Sec = moviD.cod_sec) AND
|
|
a.us_crea = suser_sname()
|
|
|
|
EXIT DIALOG
|
|
|
|
ON ACTION CANCEL
|
|
LET int_flag = TRUE
|
|
EXIT DIALOG
|
|
CLOSE WINDOW w1
|
|
END DIALOG
|
|
CLOSE WINDOW w1
|
|
FOR idx =1 TO movi5.getLength()
|
|
LET movi10[idx].cod_n = moviD.cod_n
|
|
LET movi10[idx].cod_grupo = moviD.cod_grupo
|
|
LET movi10[idx].cod_tipo = moviD.cod_tipo
|
|
LET movi10[idx].cod_sec = moviD.cod_sec
|
|
LET movi10[idx].id_bodega = moviD.id_bodega
|
|
LET movi10[idx].cod_mov = moviD.cod_mov
|
|
|
|
LET movi10[idx].id_seccion1 = movi5[idx].id_seccion1
|
|
LET movi10[idx].id_tramo1 = movi5[idx].id_tramo1
|
|
|
|
LET movi10[idx].de_seccion = movi5[idx].de_seccion
|
|
LET movi10[idx].de_tramo = movi5[idx].de_tramo
|
|
|
|
LET movi10[idx].cantidad1 = movi5[idx].cantidad1
|
|
LET movi10[idx].cantidad2 = movi5[idx].cantidad2
|
|
|
|
END FOR
|
|
|
|
RETURN total_c1,total_c2,movi10
|
|
END FUNCTION
|
|
|
|
FUNCTION cseccionesDH(moviD)
|
|
DEFINE moviD RECORD
|
|
cod_n,cod_Grupo,cod_tipo,cod_sec int,
|
|
descripcion,observacion STRING,
|
|
book varchar(50)
|
|
,tipos varchar(50)
|
|
,lado_1 decimal(12,5)
|
|
,lado_2 decimal(12,5)
|
|
,lado_3 decimal(12,5)
|
|
,id_bodega, id_seccion1 INT
|
|
,d_seccion1 VARCHAR(50)
|
|
,id_tramo1 INT
|
|
,d_tramo1 VARCHAR(50),
|
|
id_producto VARCHAR(25),
|
|
tipo_material VARCHAR(30)
|
|
,cantidad1,cantidad2,factor_conv DECIMAL(12,5),
|
|
cod_mov INT,
|
|
control_transferencia_ubicaciones VARCHAR(2),
|
|
cod_mov_transferencia INT
|
|
END RECORD,
|
|
idz INT
|
|
|
|
LET idz = 1
|
|
|
|
DECLARE bseccionesDH CURSOR FOR
|
|
|
|
select b.cod_seccion, b.descripcion,c.cod_tramo, c.descripcion, sum(a.cantidad), sum(a.cantidad2)
|
|
from iptb00050 a
|
|
inner join intb00010 b ON (a.bodega = b.cod_bodega and a.cod_seccion = b.cod_seccion)
|
|
inner join intb00043 c ON (a.bodega = c.cod_bodega AND b.cod_seccion = c.cod_seccion and a.cod_tramo = c.cod_tramo)
|
|
where a.bodega = moviD.id_bodega and a.cod_n = moviD.cod_n and a.cod_grupo = moviD.cod_grupo AND
|
|
a.cod_tipo = moviD.cod_tipo and a.cod_sec = moviD.cod_sec
|
|
group by b.cod_seccion, b.descripcion, c.cod_tramo, c.descripcion
|
|
ORDER BY b.cod_seccion,c.cod_tramo
|
|
|
|
FOREACH bseccionesDH INTO movi4[idz].*
|
|
|
|
LET idz = idz +1
|
|
END FOREACH
|
|
|
|
|
|
RETURN movi4
|
|
END FUNCTION
|
|
--**********************************************--
|
|
|
|
--**********************************************--
|
|
FUNCTION ctramosDH(bodega, indice,seccion,tramo,de_seccion,de_tramo,xcod_mov)
|
|
DEFINE bodega,indice,seccion,tramo,de_seccion,de_tramo,xcod_mov INT,
|
|
idz INT
|
|
|
|
LET idz = 1
|
|
|
|
DECLARE btramosDHtmp CURSOR FOR
|
|
|
|
select b.cod_seccion, b.descripcion,c.cod_tramo, c.descripcion, isnull(sum(a.cantidad_1),0),isnull(SUM(a.cantidad_2),0)
|
|
from intb00010 b inner join intb00043 c ON b.cod_bodega = bodega and b.cod_bodega = c.cod_bodega AND
|
|
b.cod_seccion = c.cod_seccion
|
|
left outer join tmpubicacionTramos a ON
|
|
(a.bodega=b.cod_bodega AND
|
|
a.de_seccion = seccion AND
|
|
a.de_tramo = tramo) and
|
|
(a.num_doc = xnum_doc_tmp AND
|
|
a.bodega = bodega AND
|
|
a.cod_mov = xcod_mov) AND (a.seccion = b.cod_seccion and a.tramo = c.cod_tramo) AND
|
|
(a.cod_n = xcodn AND a.cod_grupo = xcodgrupo AND a.cod_tipo = xcodtipo AND a.cod_sec = xcodtipo)
|
|
|
|
group by b.cod_seccion, b.descripcion, c.cod_tramo, c.descripcion
|
|
ORDER BY b.cod_seccion,c.cod_tramo
|
|
FOREACH btramosDHtmp INTO movi5[idz].*
|
|
|
|
LET movi5[idz].de_seccion = seccion
|
|
LET movi5[idz].de_tramo = tramo
|
|
|
|
LET idz = idz +1
|
|
END FOREACH
|
|
|
|
END FUNCTION |