Files
MBS/PROYECTO/PRDIR/prprmtorden.4gl
T

205 lines
9.0 KiB
Plaintext

{
-----------------------------------------------------------------------
PROGRAMA : PRPRMTORDEN
OBJETIVO : ACTUALIZACION TABLA STATUS ORDEN
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : NOVIEMBRE 5, 2008
-----------------------------------------------------------------------
}
SCHEMA smarmotech
MAIN
DEFINE usuarios,clave CHAR(50)
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuarios USING clave
CALL prprmtorden()
END MAIN
FUNCTION prprmtorden()
DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec SMALLINT,
pexiste DEC(12,3),pcosto DEC(12,4)
DISPLAY "PROCESO STATUS ORDEN..., FAVOR ESPERE...."
DELETE FROM ptordenesgral
INSERT INTO ptordenesgral
SELECT e.ano, f.descrip, a.fecha_oc, a.fecha_entrega, '0' AS Expr1, a.num_oc, '01/01/2001' AS Expr2, '0' AS Expr3, '01/01/2001' AS Expr4, L.producto, m.descripcion, b.cod_n, b.cod_grupo,
b.cod_tipo, b.cod_sec, n.descrip_esp, n.unidad_med, '0' AS Expr5, SUM(b.cantidad) AS Expr6, '0' AS Expr7, x.cantidad_1, b.precio, SUM((b.cantidad * b.precio)
* (b.descuento / 100)) AS Expr8, SUM(b.cantidad * b.precio) AS Expr9, '0' AS Expr10, '0' AS Expr11, '0' AS Expr12, a.tipo_cliente, a.sec_cliente, c.nombre, k.num_emp,
k.nom1_emp, k.apell1_emp, '01/01/2001' AS Expr13, 'ORDEN DE PEDIDOS' AS Expr14, a.cerrada, P1.observacion, '0' AS Expr15, '01/01/2001' AS Expr16
FROM vetb00028 AS d INNER JOIN
prtb00012 AS a INNER JOIN
prtb00013 AS b ON a.num_oc = b.num_oc INNER JOIN
prtb00014 AS P1 ON a.num_oc = P1.num_oc INNER JOIN
vetb00004 AS c ON a.tipo_cliente = c.tipo_cliente AND
a.sec_cliente = c.sec_cliente ON
d.tipo_cliente = c.tipo_cliente AND
d.sec_cliente = c.sec_cliente
INNER JOIN
adtb00003 AS k ON d.sec_vend = k.num_emp
INNER JOIN
iptb00002 AS n ON b.cod_n = n.cod_n AND b.cod_grupo = n.cod_grupo AND
b.cod_tipo = n.cod_tipo AND b.cod_sec = n.cod_sec
INNER JOIN
iptb00022 AS m ON n.cod_cia = m.cod_cia INNER JOIN
iptb00020 AS L ON n.cod_n = L.cod_n LEFT OUTER JOIN
prtb00023 AS x ON b.num_oc = x.num_oc AND b.cod_n = x.cod_grupo AND
b.cod_grupo = x.cod_grupo AND b.cod_tipo = x.cod_tipo AND
b.cod_sec = x.cod_sec,
mestable AS f
INNER JOIN
prdtable AS e ON f.mes = e.mes
WHERE (a.fecha_oc BETWEEN e.fecha_inicio AND e.fecha_corte) AND
(e.ano > 2006) AND (a.status_t IS NULL)
GROUP BY e.ano, f.descrip, a.fecha_oc, a.fecha_entrega, a.num_oc, L.producto, m.descripcion, b.cod_n, b.cod_grupo, b.cod_tipo, b.cod_sec, n.descrip_esp, n.unidad_med,
x.cantidad_1, a.tipo_cliente, a.sec_cliente, c.nombre, k.nom1_emp, k.apell1_emp, a.cerrada, P1.observacion, b.precio, k.num_emp
#INSERTA DOCUMENTOS DE LA ORDEN
INSERT INTO ptordenesgral
SELECT
e.ano,f.descrip,p2.fecha_oc,p2.fecha_entrega,g.num_doc,g.conduce_no,'01/01/2001','0','01/01/2009',L.PRODUCTO,m.descripcion,
g.cod_n,g.cod_grupo,g.cod_tipo,g.cod_sec,n.descrip_esp,n.unidad_med,'0',
'0',g.cantidad_2,g.cantidad_1,'0','0','0','0','0','0',c.tipo_cliente,c.sec_cliente,c.nombre,k.num_emp,k.nom1_emp,k.apell1_emp,
g.fecha,o.descrip_mov,p2.cerrada,p1.observacion,' ','01/01/2001'
FROM vetb00004 c,vetb00028 d,prdtable e,mestable f,adtb00003 k,iptb00020 L,iptb00022 m,
iptb00002 n, iptb00006 g, iptb00005 o,PRTB00014 P1,prtb00012 p2
WHERE
g.fecha BETWEEN e.fecha_inicio AND e.fecha_corte AND
e.mes = f.mes and
c.tipo_cliente = p2.tipo_cliente and
c.sec_cliente = p2.sec_cliente and
g.conduce_no = convert(char,p2.num_oc) AND
(c.tipo_cliente = d.tipo_cliente) AND
(c.sec_cliente = d.sec_cliente) AND
(d.sec_vend = k.num_emp) AND
(n.cod_cia = m.cod_cia) AND
(L.COD_N = N.COD_N) AND
e.ano > "2006" and
p1.num_oc = p2.num_oc and
(n.cod_n = G.cod_n) AND
(n.cod_grupo = G.cod_grupo) AND
(n.cod_tipo = G.cod_tipo) AND
(n.cod_sec = G.cod_sec) AND
(g.cod_mov = o.cod_mov) and g.cod_mov in (30,31,55,70,71,72,12,13) and
(g.cod_sp = c.tipo_cliente and g.cod_sp_sec = c.sec_cliente) and
g.status_t is null
DISPLAY "PROCESO DOCUMENTOS FACTURAS..., FAVOR ESPERE...."
# INSERTA FACTURA DE VENTAS
INSERT INTO ptordenesgral
SELECT
e.ano,f.descrip,x.fecha_oc,x.fecha_entrega,a.factura,a.orden,'01/01/2001','0',a.fecha_factura,
L.PRODUCTO,m.descripcion,
b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,n.descrip_esp,n.unidad_med,'0',
'0',b.cantidad,'0',b.precio,(b.cantidad_2*b.precio)*(b.cantidad_2/100),b.precio*b.cantidad,'0','0','0',a.tipo_cliente,a.sec_cliente,c.nombre,k.num_emp,k.nom1_emp,
k.apell1_emp,' ','FACTURA VENTAS', x.cerrada,p1.observacion,' ','01/01/2001'
FROM VETB00002 a,VETB00003 b,vetb00004 c,vetb00028 d,prdtable e,mestable f,adtb00003 k,iptb00020 L,iptb00022 m,iptb00002 n,
PRTB00014 P1,prtb00012 x
WHERE
(a.factura =b.factura) and
(a.orden = p1.num_oc) and
(a.orden = x.num_oc) and
a.fecha_factura BETWEEN e.fecha_inicio AND e.fecha_corte AND
e.mes = f.mes and
(a.tipo_cliente = c.tipo_cliente) AND
(a.sec_cliente = c.sec_cliente) AND
(c.tipo_cliente = d.tipo_cliente) AND
(c.sec_cliente = d.sec_cliente) AND
(d.sec_vend = k.num_emp) AND
(b.cod_n = n.cod_n) AND
(b.cod_grupo = n.cod_grupo) AND
(b.cod_tipo = n.cod_tipo) AND
(b.cod_sec = n.cod_sec) AND
(n.cod_cia = m.cod_cia) AND
(L.COD_N = N.COD_N) AND
e.ano > "2006" and
a.status_t is null
# PROCESO INSERTA DESPIECE
# PROCESO PARA INSERTA AVANCES
DISPLAY "PROCESO AVANCES..., FAVOR ESPERE...."
INSERT INTO ptordenesgral
SELECT
e.ano,f.descrip,'01/01/2001','01/01/2001',a.num_doc,a.num_cheque,a.fecha_orig,a.valor,'01/01/2001',
'0','0', '0','0','0','0','0','0','0',
'0','0','0','0','0','0','0','0','0',a.tipo_cliente,a.sec_cliente,c.nombre,k.num_emp,k.nom1_emp,k.apell1_emp,'01/01/2001','AVANCE A ORDEN',
p2.cerrada,' ',' ','01/01/2001'
FROM cctb00001 a,vetb00004 c,vetb00028 d,prdtable e,mestable f,adtb00003 k,prtb00012 p2
WHERE
a.fecha_orig BETWEEN e.fecha_inicio AND e.fecha_corte AND
e.mes = f.mes and
(a.tipo_cliente = c.tipo_cliente) AND
(a.sec_cliente = c.sec_cliente) AND
(c.tipo_cliente = d.tipo_cliente) AND
(c.sec_cliente = d.sec_cliente) AND
c.tipo_cliente = p2.tipo_cliente and
c.sec_cliente = p2.sec_cliente and
a.num_cheque = p2.num_oc and
(d.sec_vend = k.num_emp) AND
(a.tipo_Doc = "AV") AND a.num_doc = a.aplica_a AND a.valor > 0 and
e.ano > "2006" and
a.status_t is null
DISPLAY "PROCESO CERRADA-ABIERTAS..., FAVOR ESPERE...."
update ptordenesgral set estado = "ABIERTA" where estado = "N"
update ptordenesgral set estado = "CERRADA" where estado = "S"
update ptordenesgral set estado = (select cerrada from prtb00012 where ptordenesgral.orden = num_oc and
tipo_cliente = ptordenesgral.tipo_cliente and sec_cliente = ptordenesgral.sec_cliente)
where estado not in ("CERRADA","ABIERTA")
update ptordenesgral set estado = "ABIERTA" where estado = "N"
update ptordenesgral set estado = "CERRADA" where estado = "S"
update ptordenesgral set estado = "NO TIENE" where estado IS NULL
update ptordenesgral set fechaactualizacion = GETDATE()
{
DISPLAY "PROCESO EXISTENCIAS..., FAVOR ESPERE...."
DECLARE existe CURSOR FOR
SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,sum(b.cantidad_2) FROM ptordenesgral a,iptb00006 b
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 b.status_t is null
GROUP BY 1,2,3,4
FOREACH existe INTO pcodn,pcodgrupo,pcodtipo,pcodsec,pcosto,pexiste
UPDATE ptordenesgral SET existencia = pexiste
WHERE cod_n = pcodn and cod_grupo = pcodgrupo and
cod_tipo = pcodtipo and cod_sec = pcodsec
END FOREACH
DISPLAY "PROCESO COSTOS..., FAVOR ESPERE...."
DECLARE costos CURSOR FOR
SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.material+a.gastos+a.labor FROM iptb00004 a
WHERE a.ano = 2008 and a.mes_fin = "12" and a.status_t is null
FOREACH costos INTO pcodn,pcodgrupo,pcodtipo,pcodsec,pcosto
UPDATE ptordenesgral SET costo_std= pcosto
WHERE cod_n = pcodn and cod_grupo = pcodgrupo and
cod_tipo = pcodtipo and cod_sec = pcodsec
END FOREACH
UPDATE ptordenesgral SET valorcostostd = cantidadorden * costo_std
}
END FUNCTION