Files

551 lines
22 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : ipprrp057 (Diario)
OBJETIVO : PROCESO PARA LLENAR TABLA Y POSTERIORMENTE HACER PIVOT TABLE,
ESTE PROCESO SE EJECUTARA AUTOMATICAMENTE DE ACUERDO AL SCHEDULE QUE SE ESPECIFIQUE
PROGRAMADOR : Ing. Juan Francisco Soto
FECHA REALIZACION : Julio 4, 2005
MODIFICACDO POR : Ing. Juan Francisco Soto
FECHA : Julio 18, 2005
-------------------------------------------------------------------------------
}
GLOBALS "ipprgb000.4gl"
DEFINE pcosto_tp,pprima,ptasa_tp,precio,tasa_tp DECIMAL(8,4),
pidentifica,pnum_oc,tipo_valor,pmes,mesant INTEGER,
archivo,filename,sysos CHAR(120),
cels CHAR(20),
cnt,n,pano,dep_ant,n_row,ppresenta integer,
fecha_tp,fecha_lq1,fecha1,fecha2 DATE,
desc_pagos,tasa DEC(12,4),
pparametro,tipo_rp1 CHAR(1),
total_tp DEC(12,2),
ano_ant CHAR(1)
MAIN
DEFER INTERRUPT
CALL pantalla()
CALL ipprrp057()
END MAIN
FUNCTION ipprrp057()
DEFINE producto RECORD LIKE analisis.*
{
factura INTEGER,
orden INTEGER,
fecha DATE,
sec_vend CHAR(40),
tipo_cliente SMALLINT,
sec_cliente INTEGER,
nombre CHAR(60),
cod_n LIKE iptb00002.cod_n,
cod_grupo LIKE iptb00002.cod_grupo,
cod_tipo LIKE iptb00002.cod_tipo,
cod_sec LIKE iptb00002.cod_sec,
codigo CHAR(25),
descrip_t LIKE iptb00021.descripcion,
grupo_local CHAR(30),
ptipo LIKE iptb00021.descripcion,
descrip_esp CHAR(60),
unidad_med LIKE intb00001.unidad_med,
ventas CHAR(1),
Zona_geografica CHAR(30),
pais CHAR(30),
tipo_negocio SMALLINT,
descripcion LIKE cctb00013.descripcion,
unidad_b INTEGER,
valor_b DEC(12,2),
cantidad_dev INTEGER,
precio_dev DEC(12,2),
unidad_boni INTEGER,
valor_boni DEC(12,2),
costo_real DEC(12,4),
costo_unid_b DEC(12,4),
costo_unid_n DEC(12,4),
costo_unid_n_us DEC(12,4),
costo_std DEC(12,4),
costo_std_b DEC(12,4),
costo_std_n DEC(12,4),
costo_tp DEC(12,4),
descuento DEC(12,2),
costo_tp1 DEC(12,4),
costo_tp2 DEC(12,4),
unidad_pres LIKE iptb00010.conversion,
unidad_n INTEGER,
ano SMALLINT,
mes SMALLINT,
tasa_tp DEC(10,3),
ventas_netas DEC(12,2),
valor_rd DEC(12,2),
valor_us DEC(12,2),
gastos_m_ind DEC(12,2),
gastos_d DEC(12,2),
gastos_directos DEC(12,2),
margen_b_rd DEC(12,2),
margen_b_US DEC(12,2),
margen_stp_rd DEC(12,2),
margen_stp_US DEC(12,2),
identifica INTEGER,
tipo_producto LIKE iptb00028.descripcion,
cantidad_boni INTEGER,
costo_boni DEC(12,2),
costo_s_tp DEC(12,4),
valor_tp DEC(12,2),
pcosto DEC(12,4),
descuento_p DEC(12,3),
kano SMALLINT,
kmes SMALLINT,
ptasa DEC(8,3),
costo DEC(12,4)
END RECORD},
codigo CHAR(10),
codigo_n integer,
nombre CHAR(50),
seleccion CHAR(200)
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
{
OPEN FORM ipfmrp057 FROM "ipfmrp057"
DISPLAY FORM ipfmrp057
CALL pantalla()
DISPLAY "ipprrp057" AT 4,3
DISPLAY "DETERMINAR TP PRODUCTOS" AT 6,20
SELECT MAX(a.ano) INTO pano
FROM prdtable a
}
display "aqui 1"
# SELECT MAX(a.ano) INTO pano
# FROM prdtable a
display "aqui 2"
#SELECT MAX(a.mes) INTO pmes FROM prdtable a
#WHERE a.ano = pano AND
# a.fecha_inicio <= TODAY
display "aqui 3"
LET pano = 2007
display "aqui 4"
DISPLAY "Actualizando campos en NULL... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
DISPLAY "Borrando data de ANALISIS ... Espere Por Favor" AT 19,14
DELETE FROM analisis WHERE ano = pano
DISPLAY "Insertando Ventas Locales... Espere Por Favor" AT 19,14
INSERT INTO analisis
SELECT b.cod_cia,'FACTURAS', d.factura,d.orden,d.fecha_factura,m.nom1_emp,d.tipo_cliente,d.sec_cliente,j.nombre,
b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,
B.nomenclatura,x1.producto,x2.descripcion,' ',
b.descrip_esp,b.unidad_med, x3.descripcion,
x.descrip,y.nombre_provincia,'1','TIPO NEGOCIO',
f.cantidad,f.cantidad*f.precio,'0','0','0',
' ',
'0','0','0','0','0','0','0','0',(f.precio*f.cantidad_2)*(cantidad_2/100),'0','0','0','0',
p.ano,p.mes,'0','0','0','0','0','0','0','0','0','0','0'
FROM iptb00002 b,vetb00002 d,vetb00003 f,OUTER iptb00024 x2,
vetb00004 j,prdtable p,adtb00003 m,vetb00008 x,OUTER vetb00020 y,OUTER vetb00009 z,vetb00059 x3,iptb00020 x1
WHERE
(b.cod_n = f.cod_n and b.cod_grupo = f.cod_grupo and b.cod_tipo = f.cod_tipo and
b.cod_sec = f.cod_sec) AND
b.cod_tipo = x2.cod_tipo and
b.cod_n = x2.cod_n AND
p.ano = pano and # p.mes = pmes AND
x1.cod_n = b.cod_n AND
j.cod_zona = x.cod_zona AND
j.cod_provincia = y.cod_provincia AND
j.cod_zona = z.cod_zona AND
j.cod_provincia = z.cod_provincia AND
d.sec_vend = m.num_emp AND
d.fecha_factura between p.fecha_inicio AND p.fecha_corte AND d.factura = f.factura AND
d.tipo_cliente = j.tipo_cliente and
d.sec_cliente = j.sec_cliente and
d.ventas = x3.ventas AND
f.status_t IS NULL AND
(b.cod_n = f.cod_n and b.cod_grupo = f.cod_grupo and b.cod_tipo = f.cod_tipo and
b.cod_sec = f.cod_sec) AND
d.status_t IS NULL
DISPLAY "Insertando Devoluciones ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
INSERT INTO analisis
SELECT b.cod_cia,'DEVOLUCIONES', x4.num_doc,d.factura,x4.fecha,m.nom1_emp,d.tipo_cliente,d.sec_cliente,j.nombre,
b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,
B.nomenclatura,x1.producto,x2.descripcion,' ',
b.descrip_esp,b.unidad_med, x3.descripcion,
x.descrip,y.nombre_provincia,'1','TIPO NEGOCIO',
x4.cantidad_2*-1,x4.cantidad_2*f.precio*-1,'0','0','0',
' ',
'0','0','0','0','0','0','0','0','0','0','0','0','0',
p.ano,p.mes,'0','0','0','0','0','0','0','0','0','0','0'
FROM iptb00002 b,vetb00002 d,vetb00003 f,OUTER iptb00024 x2,
vetb00004 j,prdtable p,adtb00003 m,vetb00008 x,OUTER vetb00020 y,OUTER vetb00009 z,vetb00059 x3,iptb00020 x1,
iptb00006 x4
WHERE
(b.cod_n = f.cod_n and b.cod_grupo = f.cod_grupo and b.cod_tipo = f.cod_tipo and
b.cod_sec = f.cod_sec) AND
(b.cod_n = x4.cod_n and b.cod_grupo = x4.cod_grupo and b.cod_tipo = x4.cod_tipo and
b.cod_sec = x4.cod_sec) AND
x4.cod_mov in (12,13) AND
d.factura = x4.fact_no AND
b.cod_tipo = x2.cod_tipo and
b.cod_n = x2.cod_n AND
p.ano = pano and # p.mes = pmes AND
x1.cod_n = b.cod_n AND
j.cod_zona = x.cod_zona AND
j.cod_provincia = y.cod_provincia AND
j.cod_zona = z.cod_zona AND
j.cod_provincia = z.cod_provincia AND
d.sec_vend = m.num_emp AND
X4.fecha between p.fecha_inicio AND p.fecha_corte AND d.factura = f.factura AND
d.tipo_cliente = j.tipo_cliente and
d.sec_cliente = j.sec_cliente and
d.ventas = x3.ventas AND
f.status_t IS NULL AND
(b.cod_n = f.cod_n and b.cod_grupo = f.cod_grupo and b.cod_tipo = f.cod_tipo and
b.cod_sec = f.cod_sec) AND
d.status_t IS NULL AND
x4.status_t IS NULL
{VERSION RAYOVAC
SELECT d.factura,d.orden,d.fecha_factura,m.nom1_emp,d.tipo_cliente,d.sec_cliente,j.nombre,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,
x2.nomenclatura,x1.descripcion,x4.descripcion,e.descripcion,
b.descrip_esp,b.unidad_med, x3.descripcion,
x.descrip,y.nombre_provincia,c.tipo_negocio,h.descripcion,
f.cantidad,f.cantidad*f.precio,'0','0',f.bonificacion*i.cantidad,
f.bonificacion*i.cantidad*f.precio,
'0','0','0','0','0','0','0','0',(f.cantidad-(i.cantidad*f.bonificacion))*f.precio*f.cantidad_2/100,'0','0','0','0',
p.ano,p.mes,'0','0','0','0','0','0','0','0','0','0','0'
FROM iptb00022 a,iptb00021 e,intb00001 b,vetb00002 d,vetb00003 f,
cctb00012 c,cctb00013 h ,vetb00014 i,vetb00004 j,prdtable p,adtb00003 m,vetb00008 x,vetb00020 y,vetb00009 z,
iptb00028 x1,iptb00002 x2,vetb00059 x3,cotb00051 x4
WHERE
(a.cod_n = f.cod_n and a.cod_grupo = f.cod_grupo and a.cod_tipo = f.cod_tipo and
a.cod_sec = f.cod_sec) AND
(a.cod_n = i.cod_n and a.cod_grupo = i.cod_grupo and a.cod_tipo = i.cod_tipo and
a.cod_sec = i.cod_sec) AND
(a.cod_n = x2.cod_n and a.cod_grupo = x2.cod_grupo and a.cod_tipo = x2.cod_tipo and
a.cod_sec = x2.cod_sec) AND
x2.codigo = x4.codigo AND
a.cod_tamano = e.cod_tamano AND
a.pcod_grupo = x1.cod_grupo AND
p.ano = pano AND d.fecha_factura = TODAY AND
j.cod_zona = x.cod_zona AND
j.cod_provincia = y.cod_provincia AND
j.cod_zona = z.cod_zona AND
j.cod_provincia = z.cod_provincia AND
d.sec_vend = m.num_emp AND
d.fecha_factura between p.fecha_inicio AND p.fecha_corte AND d.factura = f.factura AND
d.tipo_cliente = c.tipo_cliente and
d.sec_cliente = c.sec_cliente and
d.tipo_cliente = j.tipo_cliente and
d.sec_cliente = j.sec_cliente and
c.tipo_negocio = h.tipo_negocio and
d.ventas = x3.ventas AND
f.status_t IS NULL AND
h.status_t IS NULL AND
(b.cod_n = f.cod_n and b.cod_grupo = f.cod_grupo and b.cod_tipo = f.cod_tipo and
b.cod_sec = f.cod_sec) AND
d.status_t IS NULL AND d.us_crea = f.us_crea and
b.status_t is NULL AND f.fech_crea > datetime (2005-09-30 08:00) year to minute
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY "Insertando Devoluciones ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
INSERT INTO analisis
SELECT k.factura,f.fecha,m.nom1_emp,f.tipo_cliente,f.sec_cliente,j.nombre,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,
x2.nomenclatura,x1.descripcion,x4.descripcion,e.descripcion,
b.descrip_esp,b.unidad_med, 'DOMINICANA',
x.descrip,y.nombre_provincia,c.tipo_negocio,h.descripcion, '0','0',
f.cantidad,f.cantidad*k.precio,'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0',
n.ano,n.mes,'0','0','0','0','0','0','0','0','0','0','0'
FROM iptb00022 a,iptb00021 e,intb00001 b,iptb00023 f,
cctb00012 c,cctb00013 h ,vetb00003 k,vetb00004 j,prdtable n,adtb00003 m,vetb00008 x,vetb00020 y,vetb00009 z,
iptb00028 x1,iptb00002 x2,cotb00051 x4
WHERE
(a.cod_n = f.cod_n and a.cod_grupo = f.cod_grupo and a.cod_tipo = f.cod_tipo and
a.cod_sec = f.cod_sec) AND
(a.cod_n = x2.cod_n and a.cod_grupo = x2.cod_grupo and a.cod_tipo = x2.cod_tipo and
a.cod_sec = x2.cod_sec) AND
a.cod_tamano = e.cod_tamano AND
a.pcod_grupo = x1.cod_grupo AND
x2.codigo = x4.codigo AND
f.fecha between n.fecha_inicio AND n.fecha_corte AND
n.ano = pano AND f.fecha = TODAY AND
f.tipo_cliente = c.tipo_cliente and
f.sec_cliente = c.sec_cliente and
f.tipo_cliente = j.tipo_cliente and
f.sec_cliente = j.sec_cliente and
c.tipo_negocio = h.tipo_negocio and
f.sec_vend = m.num_emp AND
x.cod_zona = j.cod_zona AND
y.cod_provincia = j.cod_provincia AND
x.cod_zona = z.cod_zona AND
y.cod_provincia = z.cod_provincia AND
f.status_t IS NULL AND
h.status_t IS NULL AND
(a.cod_n = k.cod_n and a.cod_grupo = k.cod_grupo and a.cod_tipo = k.cod_tipo and
a.cod_sec = k.cod_sec) AND
(f.factura = k.factura) and
(b.cod_n = f.cod_n and b.cod_grupo = f.cod_grupo and b.cod_tipo = f.cod_tipo and
b.cod_sec = f.cod_sec) AND
b.status_t is NULL
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY "Insertando Ventas EXTERIOR... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
# VENTAS EXTERIOR
INSERT INTO analisis
SELECT k.factura,k.fecha_factura,m.nom1_emp,k.tipo_cliente,k.sec_cliente,j.nombre,'0','0','0','0',
a.codigo,X1.descripcion,b.descripcion,g.descripcion,a.descripcion,d.unidad_med,'CARIBBEAN',x.descrip,
y.nombre_provincia,c.tipo_negocio,
h.descripcion,f.cant_emb,f.cant_emb*f.precio, '0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0',
n.ano,n.mes,'0','0','0','0','0','0','0','0','0','0','0'
FROM cotb00052 a,cotb00051 b,cotb00073 d,cotb00056 f,cotb00057 k,
cctb00012 c,cctb00013 h, iptb00002 p,vetb00004 j,prdtable n,adtb00003 m,vetb00008 x,vetb00020 y,vetb00009 z,
iptb00022 e, iptb00021 g,IPTB00028 X1
WHERE
a.codigo = f.codigo and f.factura = k.factura AND
a.tipo = b.codigo AND k.num_emp = m.num_emp AND
k.fecha_factura between n.fecha_inicio AND n.fecha_corte AND
n.ano = pano AND k.fecha_factura = TODAY AND
f.codigo = p.nomenclatura AND
a.codigo = p.nomenclatura AND
d.codigo = p.nomenclatura AND
p.cod_n = e.cod_n AND
p.cod_grupo = e.cod_grupo AND
p.cod_tipo = e.cod_tipo AND
p.cod_sec = e.cod_sec AND
e.cod_tamano = g.cod_tamano AND
e.pcod_grupo = x1.cod_grupo AND
x.cod_zona = j.cod_zona AND
y.cod_provincia = j.cod_provincia AND
x.cod_zona = z.cod_zona AND x.cod_zona !=100 AND
y.cod_provincia = z.cod_provincia AND
k.tipo_cliente = c.tipo_cliente and
k.sec_cliente = c.sec_cliente and
k.tipo_cliente = j.tipo_cliente and
k.sec_cliente = j.sec_cliente and
c.tipo_negocio = h.tipo_negocio and
f.status_t IS NULL AND
h.status_t IS NULL
# VENTAS HAITI
INSERT INTO analisis
SELECT k.factura,k.fecha_factura,m.nom1_emp,k.tipo_cliente,k.sec_cliente,j.nombre,'0','0','0','0',
a.codigo,X1.descripcion,b.descripcion,g.descripcion,a.descripcion,d.unidad_med,'HAITI',x.descrip,
y.nombre_provincia,c.tipo_negocio,
h.descripcion,f.cant_emb,f.cant_emb*f.precio, '0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0',
n.ano,n.mes,'0','0','0','0','0','0','0','0','0','0','0'
FROM cotb00052 a,cotb00051 b,cotb00073 d,cotb00056 f,cotb00057 k,
cctb00012 c,cctb00013 h, iptb00002 p,vetb00004 j,prdtable n,adtb00003 m,vetb00008 x,vetb00020 y,vetb00009 z,
iptb00022 e, iptb00021 g,IPTB00028 X1
WHERE
a.codigo = f.codigo and f.factura = k.factura AND
a.tipo = b.codigo AND k.num_emp = m.num_emp AND
k.fecha_factura between n.fecha_inicio AND n.fecha_corte AND
n.ano = pano AND k.fecha_factura = TODAY AND
f.codigo = p.nomenclatura AND
a.codigo = p.nomenclatura AND
d.codigo = p.nomenclatura AND
p.cod_n = e.cod_n AND
p.cod_grupo = e.cod_grupo AND
p.cod_tipo = e.cod_tipo AND
p.cod_sec = e.cod_sec AND
e.cod_tamano = g.cod_tamano AND
e.pcod_grupo = x1.cod_grupo AND
x.cod_zona = j.cod_zona AND
y.cod_provincia = j.cod_provincia AND
x.cod_zona = z.cod_zona AND x.cod_zona = 100 AND # PARA IDENTIFICAR HAITI
y.cod_provincia = z.cod_provincia AND
k.tipo_cliente = c.tipo_cliente and
k.sec_cliente = c.sec_cliente and
k.tipo_cliente = j.tipo_cliente and
k.sec_cliente = j.sec_cliente and
c.tipo_negocio = h.tipo_negocio and
f.status_t IS NULL AND
h.status_t IS NULL
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
}
# BUSCA EL MONTO DEL TP GLOBAL
DISPLAY "Buscando informacion para costo ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
LET seleccion =
# "SELECT a.*,a.rowid FROM analisis a WHERE a.ano = ? AND a.mes = ? "
"SELECT a.*,a.rowid FROM analisis a WHERE a.ano = ? "
PREPARE comando FROM seleccion
DECLARE accion SCROLL CURSOR FOR comando
OPEN accion USING pano
# OPEN accion USING pano,pmes
LET cnt = 9
LET mesant = 0
FOREACH accion INTO producto.*,pidentifica
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET codigo = producto.cod_n USING "&","-",
producto.cod_grupo using "&","-",
producto.cod_tipo using "&&","-",
producto.cod_sec using "&&&"
# BUSCA COSTO REAL
LET producto.costo_real = 0
LET fecha_lq1 = NULL
SELECT MAX(fecha_lq) INTO fecha_lq1
FROM cttb00013 a,prdtable b
WHERE a.cod_n = producto.cod_n AND
a.cod_grupo = producto.cod_grupo AND
a.cod_tipo = producto.cod_tipo AND
a.cod_sec = producto.cod_sec AND
b.ano = pano AND
b.mes = producto.mes AND
a.tipo_lq != "T" AND
a.fecha_lq <= b.fecha_corte
SELECT AVG(a.costo_lq) INTO producto.costo_real
FROM cttb00013 a
WHERE a.cod_n = producto.cod_n AND
a.cod_grupo = producto.cod_grupo AND
a.cod_tipo = producto.cod_tipo AND
a.cod_sec = producto.cod_sec AND
a.tipo_lq != "T" AND
a.fecha_lq = fecha_lq1
#-------------------------------------------------------------------------------------------
# COSTO STANDARD
#-------------------------------------------------------------------------------------------
IF producto.ventas = "LOCAL RD$" THEN
LET producto.costo_std = 0
SELECT AVG(a.material+a.labor+a.gastos) INTO producto.costo_std
FROM iptb00004 a
WHERE a.mes_fin = 12 AND
a.cod_n = producto.cod_n AND
a.cod_grupo = producto.cod_grupo AND
a.cod_tipo = producto.cod_tipo AND
a.cod_sec = producto.cod_sec AND
a.ventas = 1 AND
a.ano = pano AND a.status_t is null
END IF
IF producto.ventas = "LOCAL USD$" THEN
LET producto.costo_std = 0
SELECT AVG(a.material+a.labor+a.gastos) INTO producto.costo_std
FROM iptb00004 a
WHERE a.mes_fin = 12 AND
a.cod_n = producto.cod_n AND
a.cod_grupo = producto.cod_grupo AND
a.cod_tipo = producto.cod_tipo AND
a.cod_sec = producto.cod_sec AND
a.ventas = 3 AND
a.ano = pano AND a.status_t is null
END IF
IF producto.ventas = "EXTERIOR USD$" THEN
LET producto.costo_std = 0
SELECT AVG(a.material+a.labor+a.gastos) INTO producto.costo_std
FROM iptb00004 a
WHERE a.mes_fin = 12 AND
a.cod_n = producto.cod_n AND
a.cod_grupo = producto.cod_grupo AND
a.cod_tipo = producto.cod_tipo AND
a.cod_sec = producto.cod_sec AND
a.ventas = 2 AND
a.ano = pano AND a.status_t is null
END IF
IF producto.costo_std IS NULL THEN
LET producto.costo_std = 0
END IF
# BUSCA TRANSFER PRICE
IF producto.costo_real is null THEN
LET producto.costo_real = 0
END IF
LET producto.ventas_netas = producto.valor_bruto - producto.valor_devuelto - producto.valor_bonfica - producto.descuento
display "VENTAS ",producto.valor_bruto," Dev ",producto.valor_devuelto," Boni ",producto.valor_bonfica," Des ",producto.descuento
IF producto.cod_cia = 1 THEN
LET producto.origen_producto = "LOCAL"
ELSE
LET producto.origen_producto = "EXPORTACION"
END IF
UPDATE analisis set analisis.costo_real = producto.costo_real,
analisis.costo_unid_b = producto.costo_real*producto.unidades_brutas,
analisis.costo_std = producto.costo_std,
analisis.costo_std_b = producto.costo_std*producto.unidades_brutas,
analisis.costo_std_n = producto.costo_std*producto.unidades_brutas,
analisis.ventas_netas = producto.ventas_netas - producto.descuento
WHERE rowid = pidentifica
END FOREACH
END FUNCTION