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