{ ----------------------------------------------------------------------- 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