FUNCTION visualiza_kit(pcodn1,pcodgrupo1,pcodtipo1,pcodsec1,rkit,xparametro) DEFINE idx,pcodn1,pcodgrupo1,pcodtipo1,pcodsec1 INTEGER DEFINE arr_kit DYNAMIC ARRAY OF RECORD selecciona VARCHAR(2), pkit_id INT, pcodn SMALLINT, pcodgrupo SMALLINT, pcodtipo SMALLINT, pcodsec SMALLINT, pdescripcion VARCHAR(100), descripcion_p VARCHAR(100), valor_total DEC(12,2), cantidad_kit DEC(12,5) END RECORD, rkit INT, pvalor DEC(12,2), xdescripcion VARCHAR(100), selecciono CHAR(15), xparametro CHAR(10), selec STRING # 35-1436-3690-16485 IF pcodn1 IS NOT NULL THEN IF xparametro = "'SI','NO'" THEN LET selec = " SELECT 'NO',a.id_kit,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion ,b.descrip_esp,a.valor_total FROM vetb00029 a,iptb00002 b WHERE a.cod_n = ",pcodn1 USING "&&&&&"," AND ", "a.cod_grupo = ",pcodgrupo1 USING "&&&&&", " AND ", "a.cod_tipo = ", pcodtipo1 USING "&&&&&&"," AND ", "a.cod_sec =", pcodsec1 USING "&&&&&&", " AND ", "a.cod_n = b.cod_n AND ", "a.cod_grupo = b.cod_grupo AND ", "a.cod_tipo = b.cod_tipo AND ", "a.cod_sec = b.cod_sec AND ", "a.disponible IN ('SI','NO')" ELSE LET selec = " SELECT 'NO',a.id_kit,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion ,b.descrip_esp,a.valor_total FROM vetb00029 a,iptb00002 b WHERE a.cod_n = ",pcodn1 USING "&&&&&"," AND ", "a.cod_grupo = ",pcodgrupo1 USING "&&&&&", " AND ", "a.cod_tipo = ", pcodtipo1 USING "&&&&&&"," AND ", "a.cod_sec =", pcodsec1 USING "&&&&&&", " AND ", "a.cod_n = b.cod_n AND ", "a.cod_grupo = b.cod_grupo AND ", "a.cod_tipo = b.cod_tipo AND ", "a.cod_sec = b.cod_sec AND ", "a.disponible IN ('SI')" END IF PREPARE comando FROM selec DECLARE buscar CURSOR FOR comando OPEN buscar LET idx = 1 FOREACH buscar INTO arr_kit[idx].* IF arr_kit[idx].pkit_id = rkit THEN LET arr_kit[idx].selecciona = "SI" END IF LET idx = idx + 1 END FOREACH OPEN WINDOW w1 WITH FORM "visualiza_kit" INPUT ARRAY arr_kit FROM skit.* ATTRIBUTE(WITHOUT DEFAULTS) AFTER INPUT IF INT_FLAG THEN LET selecciono = "NADA" FOR idx=1 TO arr_kit.getLength() IF arr_kit[idx].selecciona = 'SI' THEN LET selecciono="ALGO" END IF END FOR IF selecciono = "NADA" THEN CALL fgl_winmessage("ERROR","NO PUEDE ABANDONAR ESTA VENTANA SIN ELEJIR UN KIT","INFO") CONTINUE INPUT END IF LET INT_FLAG = FALSE END IF FOR idx = 1 TO arr_kit.getLength() IF arr_kit[idx].pcodsec IS NOT NULL THEN IF arr_kit[idx].selecciona = 'SI' THEN LET rkit = arr_kit[idx].pkit_id LET pvalor = arr_kit[idx].valor_total LET xdescripcion = arr_kit[idx].pdescripcion EXIT INPUT END IF END IF END FOR END INPUT CLOSE WINDOW w1 END IF RETURN rkit,pvalor,xdescripcion END FUNCTION FUNCTION visualiza_detalle_kit(pkit) DEFINE pkit INT, idx SMALLINT DEFINE arr_kit1 DYNAMIC ARRAY OF RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion VARCHAR(100), cantidad DEC(12,5), precio DEC(12,2), porc_desc DEC(12,2), valor DEC(12,2) END RECORD, arr_kit_p DYNAMIC ARRAY OF RECORD area SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion VARCHAR(100), cantidad DEC(12,5), precio DEC(12,2), porc_desc DEC(12,2) END RECORD, pfactor DEC(12,5) OPEN WINDOW w1 WITH FORM "visualiza_detalle_kit" DECLARE busca_kit CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,a.cantidad,a.porc_desc,a.precio FROM vetb00030 a,iptb00002 b WHERE a.id_kit = pkit AND a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec LET idx = 1 FOREACH busca_kit INTO arr_kit1[idx].* SELECT a.factor_conv INTO pfactor FROM iptb00001 a WHERE a.cod_n = arr_kit1[idx].cod_n AND a.cod_grupo = arr_kit1[idx].cod_grupo AND a.cod_tipo = arr_kit1[idx].cod_tipo AND a.cod_sec = arr_kit1[idx].cod_sec IF pfactor IS NULL THEN LET pfactor = 1 END IF LET arr_kit_p[idx].area =1 LET arr_kit_p[idx].cod_n =arr_kit1[idx].cod_n LET arr_kit_p[idx].cod_grupo =arr_kit1[idx].cod_grupo LET arr_kit_p[idx].cod_tipo =arr_kit1[idx].cod_tipo LET arr_kit_p[idx].cod_sec =arr_kit1[idx].cod_sec LET arr_kit_p[idx].cantidad =arr_kit1[idx].cantidad *pfactor LET arr_kit_p[idx].precio =arr_kit1[idx].precio LET arr_kit_p[idx].porc_desc = arr_kit1[idx].porc_desc LET arr_kit1[idx].valor = (arr_kit1[idx].cantidad*arr_kit1[idx].precio) # - ((arr_kit1[idx].cantidad*arr_kit1[idx].precio) * (arr_kit1[idx].porc_desc/100)) LET idx = idx + 1 END FOREACH DISPLAY ARRAY arr_kit1 TO record1.* CLOSE WINDOW w1 RETURN arr_kit_p END FUNCTION FUNCTION duplica_kit(xkit) DEFINE kid,xkit INT, inserta STRING SELECT MAX(a.id_kit) INTO kid FROM vetb00029 a IF kid IS NULL THEN LET kid = 0 END IF LET kid = kid + 1 LET inserta = "INSERT INTO vetb00029 (cod_n,cod_grupo,cod_tipo,cod_sec,id_kit,descripcion,disponible,valor_total,us_crea,fech_crea) ", "SELECT cod_n,cod_grupo,cod_tipo,cod_sec,'",kid,"',descripcion,disponible,valor_total,us_crea,fech_crea ", " FROM vetb00029 ", " WHERE id_kit =?" PREPARE inscomando FROM inserta EXECUTE inscomando USING xkit LET inserta = "INSERT INTO vetb00030 (cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,porc_Desc,id_kit) ", "SELECT cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,porc_desc,'",kid,"'", " FROM vetb00030 ", " WHERE id_kit =?" PREPARE inscomando1 FROM inserta EXECUTE inscomando1 USING xkit RETURN kid END FUNCTION FUNCTION modifica_detalle_kit(pkit,pcotizacion) DEFINE pkit,pcotizacion INT, idx SMALLINT DEFINE arr_kit1 DYNAMIC ARRAY OF RECORD area SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion VARCHAR(100), cantidad DEC(12,5), precio DEC(12,2), porc_desc DEC(12,2), valor DEC(12,2) END RECORD, total_neto,total_bruto,total_desc DEC(12,2) OPEN WINDOW w1 WITH FORM "modifica_detalle_kit" DECLARE busca_kit_cotizado CURSOR FOR SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,a.cantidad,a.precio,a.porc_desc FROM vetb00031 a,iptb00002 b WHERE a.id_kit = pkit AND a.cotizacion_no = pcotizacion AND a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec LET idx = 1 LET total_bruto = 0 LET total_neto = 0 LET total_desc = 0 FOREACH busca_kit_cotizado INTO arr_kit1[idx].* let total_bruto = (arr_kit1[idx].cantidad* arr_kit1[idx].precio) + total_bruto LET total_desc = ((arr_kit1[idx].cantidad* arr_kit1[idx].precio) * (arr_kit1[idx].porc_desc/100) ) + total_desc LET arr_kit1[idx].valor = (arr_kit1[idx].cantidad *arr_kit1[idx].precio) - ((arr_kit1[idx].cantidad*arr_kit1[idx].precio) * (arr_kit1[idx].porc_desc/100)) LET idx = idx + 1 END FOREACH LET total_neto = total_bruto - total_Desc DISPLAY BY NAME total_bruto,total_desc,total_neto CALL set_count(idx-1) INPUT ARRAY arr_kit1 WITHOUT DEFAULTS FROM record1.* BEFORE INPUT NEXT FIELD precio AFTER ROW LET total_bruto = 0 LET total_neto = 0 LET total_desc = 0 FOR idx = 1 TO arr_kit1.getLength() IF arr_kit1[idx].cod_n IS NOT NULL THEN let total_bruto = (arr_kit1[idx].cantidad* arr_kit1[idx].precio) + total_bruto LET total_desc = ((arr_kit1[idx].cantidad* arr_kit1[idx].precio) * (arr_kit1[idx].porc_desc/100) ) + total_desc LET arr_kit1[idx].valor = (arr_kit1[idx].cantidad *arr_kit1[idx].precio) - ((arr_kit1[idx].cantidad*arr_kit1[idx].precio) * (arr_kit1[idx].porc_desc/100)) END IF END FOR LET total_neto = total_bruto - total_Desc DISPLAY BY NAME total_bruto,total_desc,total_neto AFTER INPUT IF INT_FLAG THEN CALL fgl_winmessage("SALIR","OPERACION CANCELADA","INFO") EXIT INPUT END IF BEGIN WORK DELETE FROM vetb00031 WHERE cotizacion_no = pcotizacion AND id_kit = pkit FOR idx = 1 TO arr_kit1.getLength() IF arr_kit1[idx].cod_n IS NOT NULL THEN INSERT INTO vetb00031 (cotizacion_no,id_kit,area,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,porc_desc) VALUES (pcotizacion,pkit,arr_kit1[idx].area,arr_kit1[idx].cod_n,arr_kit1[idx].cod_grupo,arr_kit1[idx].cod_tipo,arr_kit1[idx].cod_sec, arr_kit1[idx].cantidad,arr_kit1[idx].precio,arr_kit1[idx].porc_desc) IF STATUS < 0 THEN ROLLBACK WORK CALL fgl_winmessage("ERROR","OCURRIO UN ERROR AL TRATAR DE MODIFICAR LOS COMPONENTES DEL KIT","INFO") EXIT FOR END IF END IF END FOR COMMIT WORK CALL fgl_winmessage("ACTUALIZAR","ACTUALIZACION EXITOSA","INFO") EXIT INPUT END INPUT LET INT_FLAG = FALSE CLOSE WINDOW w1 END FUNCTION