Files
MBS/PROYECTO/vedir/veprmtact.4gl
T

199 lines
11 KiB
Plaintext

{
-----------------------------------------------------------------------
PROGRAMA : VEPRMTACT1
OBJETIVO : ACTUALIZACION TABLA ptventasgral
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : MAYO 21, 2008
-----------------------------------------------------------------------
}
GLOBALS
DEFINE usuarios,clave CHAR(80),
pitbis DEC(12,2),
progreso smallint
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()
DEFINE pano,pmes SMALLINT
OPEN WINDOW vefmmtact AT 10,10 WITH FORM "vefmmtact"
LET progreso = 20
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
LET pano = 2026
LET pmes = 0
DELETE FROM ptventasgral WHERE ano = pano and numero_MES >pmes
{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 ,x20.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 ,'0','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.area
,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 *x5.cantidad,
k.labor *x5.cantidad ,
k.gastos*x5.cantidad ,A.TASA,"0","0","0","0","0","0"," ",x0.ventas,x11.descripcion,
x0.zona,x12.descrip,' ',' ',x8.cod_provincia,
x21.nombre_provincia,x5.cantidad_2,x5.precio / (1+(x5.cantidad_2/100)),x9.departamento,
ISNULL(x25.nom1_emp," ")+" "+ISNULL(x25.apell1_emp," ")
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
vetb00008 AS x12 ON x0.zona = x12.cod_zona INNER JOIN
vetb00084 AS x1 ON x0.sec_vend = x1.sec_vend INNER JOIN
adtb00003 AS x10 ON x0.sec_vend = x10.num_emp INNER JOIN
vetb00004 AS x8 ON x0.tipo_cliente = x8.tipo_cliente AND x0.sec_cliente = x8.sec_cliente INNER JOIN
vetb00020 AS x21 ON x8.cod_provincia = x21.cod_provincia 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
iptb00029 x11 ON x9.cod_grupo = x11.cod_grupo 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 INNER JOIN
iptb00024 x20 ON x9.cod_tipo = x20.cod_tipo LEFT OUTER JOIN
adtb00003 x25 ON x9.num_emp = x25.num_emp
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 AND k.status_t IS null 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 x0.status_t IS NULL
AND x6.ano IN (pano) and x6.mes >pmes
# DEVOLUCIONES
LET progreso = 50
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
INSERT INTO ptventasgral
select DISTINCT x0.cod_cia ,x1.nombre ,'DEVOLUCIONES',x2.descripcion ,x3.descripcion ,
x4.producto ,x20.descripcion,AVG(x0.cantidad_2*-1) * AVG(x5.precio) ,k.porc_itbi,
(AVG(x0.cantidad_2*-1) * AVG(x5.precio)) * AVG(x5.cantidad_2/100),'0'
,x0.factura ,k.conduce,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.area
,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' , '0' ,
'0', '0' , '0',
A.TASA,"0","0","0","0","0","0",x30.nombre,k.ventas,x11.descripcion,k.zona,x12.descrip,' ',' ',
x8.cod_provincia,x21.nombre_provincia,x5.cantidad_2,x5.precio / (1+(x5.cantidad_2/100)),x9.departamento,
ISNULL(x25.nom1_emp," ")+" "+ISNULL(x25.apell1_emp," ")
FROM cctb00011 AS f RIGHT OUTER JOIN
iptb00020 AS x4 INNER JOIN
vetb00002 AS k INNER JOIN
vetb00008 AS X12 ON k.zona = x12.cod_zona INNER JOIN
vetb00084 AS x1 ON k.sec_vend = x1.sec_vend INNER JOIN
iptb00006 AS x0 LEFT OUTER JOIN vetb00015 AS x30 ON x0.cod_transp =
x30.cod_transp AND x0.sec_transp = x30.sec_transp
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.factura 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 AND
x0.area = x5.area 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
vetb00020 AS x21 ON x8.cod_provincia = x21.cod_provincia INNER JOIN
cgtb00084 AS a ON k.tipo_cliente = a.tipo_cliente AND
x8.tipo_cliente = a.tipo_cliente AND
a.ano= pano AND
a.mes>pmes 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
iptb00029 x11 ON x9.cod_grupo = x11.cod_grupo INNER JOIN
iptb00024 x20 ON x9.cod_tipo = x20.cod_tipo LEFT OUTER JOIN
adtb00003 x25 ON x9.num_emp = x25.num_emp 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/2007') AND x0.fecha BETWEEN x6.fecha_inicio AND x6.fecha_corte 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 > '2012') AND (x0.status_t IS NULL) AND (x6.ano = pano) and x6.mes >pmes
GROUP BY x0.cod_cia, x1.nombre, x2.descripcion, x3.descripcion, x4.producto, x0.factura, 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,x20.descripcion,k.conduce,
x30.nombre,k.ventas,k.porc_itbi,
x5.area,x11.descripcion,k.zona,x12.descrip,x8.cod_provincia,x21.nombre_provincia,x5.precio,x5.cantidad_2,
x9.departamento,x25.nom1_emp,x25.apell1_emp
LET progreso = 80
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
UPDATE ptventasgral SET itbis = 0,us_crea = usuarios,fech_crea =getdate() WHERE itbis IS NULL AND ano = pano and numero_mes >pmes
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 = pano and numero_mes >pmes
UPDATE ptventasgral SET ITBIS = (valor_bruto - descuento) * (porc_itbi/100)
WHERE tipotransaccion = 'DEVOLUCIONES' AND ano = pano and numero_mes>pmes
and documentocxc in (SELECT DISTINCT num_Doc FROM cctb00001
WHERE tipo_Doc = 'NC' and status_t IS NULL AND
fecha_orig > '01/01/2014' and valor_efectivo > 1)
UPDATE ptventasgral SET NETO = (valor_bruto - descuento) + ITBIS,
valorRD = valor_bruto * tasa,
descuentoRD = descuento * tasa,
itbisrd = itbis * tasa
WHERE ano = pano and numero_mes >pmes
LET progreso = 90
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
UPDATE ptventasgral SET NETOrd = neto * tasa,fech_crea = getdate() WHERE ano = pano and numero_mes >pmes
UPDATE ptventasgral SET descrip_p = "CONTADO" where cond_pago = 1 and ano = pano and numero_mes >pmes
UPDATE ptventasgral SET descrip_p = "CREDITO" where cond_pago > 1 AND ano = pano and numero_mes >pmes
LET progreso = 100
DISPLAY progreso TO progreso
CALL ui.Interface.refresh()
CALL fgl_winmessage("INFORMACION","PROCESO TERMINADO","STOP")
CLOSE WINDOW vefmmtact
END FUNCTION