{ ----------------------------------------------------------------------- PROGRAMA : VEPRMTACT1 OBJETIVO : ACTUALIZACION TABLA ptventasgral PROGRAMADOR : JUAN SOTO FECHA REALIZACION : MAYO 21, 2008 ----------------------------------------------------------------------- } GLOBALS DEFINE usuarios,clave CHAR(80), pitbis DEC(12,2) END GLOBALS MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" USER usuarios USING clave CALL prprmt011() END MAIN FUNCTION prprmt011() DISPLAY "PROCESO VENTAS..., FAVOR ESPERE...." DELETE FROM ptventasgral WHERE ano = "2010" #and numero_MES =12 {QUERY ORIGINAL, SE COPIPO POR LA EMIGRACION A SQL SERVER 2008 POR EL OUTER} INSERT INTO ptventasgral select UNIQUE x0.cod_cia ,x1.nombre ,'VENTAS', x2.descripcion ,x3.descripcion ,x4.producto ,x11.descripcion,x5.cantidad * x5.precio , x0.porc_itbi / 100,(x5.cantidad * x5.precio) * (x5.cantidad_2 / 100), ((x5.cantidad * x5.precio) - ((x5.cantidad * x5.precio) * (x5.cantidad_2 / 100))) * (x0.porc_itbi / 100) ,x0.factura ,x0.conduce,'0','0',CAST(f.detalle AS CHAR(60)),'0',x0.cond_pago,' ',x0.fecha_factura ,x6.mes ,x6.ano ,x7.descrip, x8.tipo_cliente,x8.sec_cliente,x8.nombre ,x8.num_rnc ,x0.orden ,x10.num_emp,x10.nom1_emp ,x10.apell1_emp ,x5.cod_n ,x5.cod_grupo ,x5.cod_tipo ,x5.cod_sec ,x9.descrip_esp ,x9.unidad_med ,x5.cantidad ,x5.precio ,k.material + k.labor + k.gastos ,(k.material + k.labor + k.gastos) * x5.cantidad ,A.TASA,"0","0","0","0","0","0" FROM mestable AS x7 INNER JOIN iptb00020 AS x4 INNER JOIN vetb00061 AS x2 INNER JOIN vetb00002 AS x0 INNER JOIN vetb00003 AS x5 ON x0.factura = x5.factura AND x0.cod_cia = x5.cod_cia INNER JOIN vetb00084 AS x1 ON x0.sec_vend = x1.sec_vend INNER JOIN vetb00028 AS b INNER JOIN adtb00003 AS x10 ON b.sec_vend = x10.num_emp ON x0.tipo_cliente = b.tipo_cliente AND x0.sec_cliente = b.sec_cliente INNER JOIN vetb00004 AS x8 ON x0.tipo_cliente = x8.tipo_cliente AND x0.sec_cliente = x8.sec_cliente INNER JOIN prdtable AS x6 INNER JOIN cgtb00084 AS a ON x6.ano = a.ano AND x6.mes = a.mes ON x0.tipo_cliente = a.tipo_cliente AND x8.tipo_cliente = a.tipo_cliente AND x0.ventas = a.ventas AND x0.tipo_cliente = a.tipo_cliente ON x2.ventas = a.ventas AND x2.ventas = x0.ventas INNER JOIN iptb00002 AS x9 INNER JOIN iptb00024 AS x11 ON x9.cod_n = x11 AND x9.cod_tipo = x11.cod_tipo INNER JOIN iptb00022 AS x3 ON x9.cod_cia = x3.cod_cia ON x5.cod_n = x9.cod_n AND x5.cod_grupo = x9.cod_grupo AND x5.cod_tipo = x9.cod_tipo AND x5.cod_sec = x9.cod_sec ON x4.cod_n = x5.cod_n ON x7.mes = x6.mes LEFT OUTER JOIN iptb00004 as k ON x6.ano = k.ano AND x5.cod_n = k.cod_n AND x5.cod_grupo = k.cod_grupo AND x5.cod_tipo = k.cod_tipo AND x5.cod_sec = k.cod_sec LEFT OUTER JOIN vetb00048 f ON x0.factura = f.factura WHERE x0.fecha_factura BETWEEN x6.fecha_inicio AND x6.fecha_corte AND x5.cantidad IS NOT NULL AND x6.ano = '2010' AND x0.status_t IS NULL AND x6.ano IN (2010) #and x6.mes =12 # DEVOLUCIONES INSERT INTO ptventasgral select DISTINCT x0.cod_cia ,x1.nombre ,'DEVOLUCIONES',x2.descripcion ,x3.descripcion , x4.producto ,AVG(x0.cantidad_2*-1) * AVG(x5.precio) ,'0' ,(AVG(x0.cantidad_2*-1) * AVG(x5.precio)) * AVG(x5.cantidad_2/100),'0' ,x0.fact_no ,x0.num_doc,x0.num_doc,h.num_doc,MAX(CAST(f.comentario AS CHAR(60))),x0.cod_mov,'0',' ',x0.fecha ,x6.mes ,x6.ano ,x7.descrip ,x8.tipo_cliente,x8.sec_cliente,x8.nombre ,x8.num_rnc ,k.orden ,x10.num_emp,x10.nom1_emp , x10.apell1_emp ,x5.cod_n ,x5.cod_grupo ,x5.cod_tipo ,x5.cod_sec ,x9.descrip_esp ,x9.unidad_med ,AVG(x0.cantidad_2*-1) ,AVG(x5.precio) ,'0' , '0' ,A.TASA,"0","0","0","0","0","0" FROM cctb00011 AS f RIGHT OUTER JOIN iptb00020 AS x4 INNER JOIN vetb00002 AS k INNER JOIN vetb00084 AS x1 ON k.sec_vend = x1.sec_vend INNER JOIN iptb00006 AS x0 INNER JOIN cctb00001 AS h ON x0.num_doc = h.num_cheque AND x0.cod_mov = h.banco AND x0.cod_sp = h.tipo_cliente AND x0.cod_sp_sec = h.sec_cliente ON k.factura = x0.fact_no INNER JOIN vetb00003 AS x5 ON k.factura = x5.factura AND x0.cod_cia = x5.cod_cia AND x0.cod_n = x5.cod_n AND x0.cod_grupo = x5.cod_grupo AND x0.cod_tipo = x5.cod_tipo AND x0.cod_sec = x5.cod_sec INNER JOIN adtb00003 AS x10 ON k.sec_vend = x10.num_emp INNER JOIN vetb00004 AS x8 ON x0.cod_sp = x8.tipo_cliente AND x0.cod_sp_sec = x8.sec_cliente INNER JOIN cgtb00084 AS a ON k.tipo_cliente = a.tipo_cliente AND k.tipo_cliente = a.tipo_cliente AND x8.tipo_cliente = a.tipo_cliente AND YEAR(x0.fecha) = a.ano AND MONTH(x0.fecha) = a.mes INNER JOIN vetb00061 AS x2 ON a.ventas = x2.ventas AND k.ventas = x2.ventas INNER JOIN iptb00022 AS x3 INNER JOIN iptb00002 AS x9 ON x3.cod_cia = x9.cod_cia ON x5.cod_n = x9.cod_n AND x5.cod_grupo = x9.cod_grupo AND x5.cod_tipo = x9.cod_tipo AND x5.cod_sec = x9.cod_sec ON x4.cod_n = x5.cod_n INNER JOIN mestable AS x7 INNER JOIN prdtable AS x6 ON x7.mes = x6.mes ON a.mes = x6.mes ON f.num_doc = h.num_doc AND f.tipo_doc = h.tipo_doc WHERE (x0.num_doc = x0.num_doc) AND (h.status_t IS NULL) AND (k.fecha_factura >= '01/01/2010') AND (h.tipo_doc = 'NC') AND (h.fecha_orig BETWEEN x6.fecha_inicio AND x6.fecha_corte) AND (x0.cod_mov IN (12, 13)) AND (x6.ano > '2008') AND (x0.status_t IS NULL) AND (x6.ano = 2010) #and x6.mes = 12 GROUP BY x0.cod_cia, x1.nombre, x2.descripcion, x3.descripcion, x4.producto, x0.fact_no, x0.fecha, x6.mes, x6.ano, x7.descrip, x8.nombre, x8.num_rnc, k.orden, x10.nom1_emp, x10.apell1_emp, x5.cod_n, x5.cod_grupo, x5.cod_tipo, x5.cod_sec, x9.descrip_esp, x9.unidad_med, a.tasa, x0.num_doc, x0.cod_mov, x8.tipo_cliente, x8.sec_cliente, x10.num_emp, h.num_doc UPDATE ptventasgral SET costostd = (select AVG(a.material+a.labor+a.gastos) from iptb00004 a WHERE a.ano = 2010 and ptventasgral.cod_n = a.cod_n and ptventasgral.cod_grupo = a.cod_grupo and ptventasgral.cod_tipo = a.cod_tipo and ptventasgral.cod_Sec = a.cod_Sec and a.status_t is null) WHERE ano = 2010 and (costostd = 0 OR costostd IS NULL) and tipotransaccion in('DEVOLUCIONES','VEMTAS') and fecha >= '01/01/2010' UPDATE ptventasgral SET valorcosto = cantidad * costostd WHERE ano = 2010 and tipotransaccion = 'DEVOLUCIONES' AND fecha >= '01/01/2010' UPDATE ptventasgral SET itbis = 0 WHERE itbis IS NULL AND ano = 2010 #and numero_mes =12 SELECT a.itbi iNTO pitbis FROM vetb00019 a WHERE a.disponible = 'S' # RECALCULA EL VALOR BRUTO DE LA DEVOLUCION UPDATE ptventasgral SET valor_bruto = cantidad*precio WHERE tipotransaccion = 'DEVOLUCIONES' AND ano = 2010 #and numero_mes =12 UPDATE ptventasgral SET ITBIS = (valor_bruto - descuento) * (pitbis/100), porc_itbi = pitbis WHERE tipotransaccion = 'DEVOLUCIONES' AND ano = 2010 #and numero_mes=12 and documentocxc in (SELECT DISTINCT num_Doc FROM cctb00001 WHERE tipo_Doc = 'NC' and status_t IS NULL AND fecha_orig > '01/01/2010' and valor_efectivo > 0) UPDATE ptventasgral SET NETO = (valor_bruto - descuento) + ITBIS, valorRD = valor_bruto * tasa, descuentoRD = descuento * tasa, itbisrd = itbis * tasa WHERE ano = 2010 #and numero_mes =12 UPDATE ptventasgral SET margen = valorRD - valorcosto where ano = 2010 and tipotransaccion = "VENTAS" #and numero_mes =12 UPDATE ptventasgral SET NETOrd = neto * tasa WHERE ano = 2010 #and numero_mes =12 UPDATE ptventasgral SET descrip_p = "CONTADO" where cond_pago = 1 and ano = 2010 #and numero_mes =12 UPDATE ptventasgral SET descrip_p = "CREDITO" where cond_pago > 1 AND ano = 2010 #and numero_mes =12 END FUNCTION