Files
MBS/WEBSERVICES/calculo_cotizacion.4gl

106 lines
3.5 KiB
Plaintext

FUNCTION calcula(detalles,pporcitbis)
DEFINE
detalles DYNAMIC ARRAY OF RECORD
secuencia INT,
area SMALLINT,
descripcion_area CHAR(50),
codid VARCHAR(25),
codigo VARCHAR(20),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
# descripcion VARCHAR(100),
cantidad DEC(12,5),
cantidad1 DEC(12,5),
precio DEC(12,2),
porc_desc DEC(12,2),
itbis DEC(12,2),
valor DEC(12,2),
cantidad_reservada DEC(12,5),
fecha_inicio_reserva DATE,
fecha_vence_reserva DATE,
autorizada VARCHAR(10),
idkit INT,
disenoID VARCHAR(50)
END RECORD,
i INT,
valor_bruto, valor_Desc,tbruto,tdesc,tneto,valor_neto,valor_itbis,sub_total,titbis,pporcitbis DEC(12,2),
detalles_out DYNAMIC ARRAY OF RECORD
codid,area,cod_n,cod_grupo,cod_tipo,cod_sec INT,
titulo STRING,
cantidad1,cantidad,valorBruto,valorDescuento,valorItbis,valorTotal DEC(12,2)
END RECORD,
factor DEC(12,5),cantidad_unidades INT
LET valor_bruto = 0
LET valor_desc = 0
LET sub_total = 0
LET valor_itbis = 0
LET tbruto = 0
LET tdesc = 0
LET tneto = 0
LET titbis = 0
FOR i = 1 TO detalles.getLength()
LET detalles_out[i].area = detalles[i].area
LET detalles_out[i].codid = detalles[i].codid
LET detalles_out[i].cod_n = detalles[i].cod_n
LET detalles_out[i].cod_grupo = detalles[i].cod_grupo
LET detalles_out[i].cod_tipo = detalles[i].cod_tipo
LET detalles_out[i].cod_sec = detalles[i].cod_sec
# BUSCA EL FACTOR DE CONVERSION
SELECT a.factor_conv INTO factor FROM iptb00001 a
WHERE a.cod_n = detalles_out[i].cod_n AND a.cod_grupo = detalles_out[i].cod_grupo
AND a.cod_tipo = detalles_out[i].cod_tipo AND a.cod_sec = detalles_out[i].cod_sec
LET detalles[i].cantidad1 = detalles[i].cantidad * factor USING "###,###.##"
#DEBE CALCULARSE NUEVAMENTE EL METRAJE LUEGO DE QUE SE AJUSTE LAS UNIDADES
###################
IF factor <>1 THEN
LET cantidad_unidades =detalles[i].cantidad1 / factor USING "######"
LET detalles[i].cantidad = cantidad_unidades
ELSE
LET detalles[i].cantidad1 = detalles[i].cantidad * factor USING "###,###.##"
END IF
LET detalles[i].cantidad1 = detalles[i].cantidad * factor USING "###,###.##"
LET valor_bruto = detalles[i].cantidad1 * detalles[i].precio
LET valor_Desc = valor_bruto * (detalles[i].porc_desc/100)
LET detalles_out[i].cantidad1 = detalles[i].cantidad1
LET detalles_out[i].cantidad = detalles[i].cantidad
LET detalles_out[i].valorBruto = valor_bruto
LET detalles_out[i].valorDescuento = valor_desc
LET sub_total = valor_bruto - valor_Desc
LET valor_itbis = sub_total * ( pporcitbis/100 )
LET valor_neto = valor_bruto - valor_Desc + valor_itbis
LET detalles_out[i].valorItbis = valor_itbis
LET detalles_out[i].valorTotal = valor_neto
LET tbruto = tbruto + valor_bruto
LET tdesc = tdesc + valor_Desc
LET tneto = tneto + valor_neto
LET titbis = titbis + valor_itbis
END FOR
RETURN tbruto,tdesc,titbis,tneto,detalles_out
END FUNCTION