205 lines
9.0 KiB
Plaintext
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
|
|
|