DEFINE arr_bultos DYNAMIC ARRAY OF RECORD id,num_oc,num_oc_externa INT, titulo_bulto STRING, fecha VARCHAR(10), seleccionar VARCHAR(1) END RECORD, gpnum_oc,gpnum_externa,pbulto_id INT, pcliente,pdireccion STRING FUNCTION empacar(arr_empaque,encabezadoe,pnum_oc,pnum_externa,cliente,direccion) DEFINE arr_empaque DYNAMIC ARRAY OF RECORD producto, unidad STRING, cantidad,cantidad_orden FLOAT, pcodn,pcodgrupo,pcodtipo,pcodsec INT END RECORD, encabezadoe,titulo_empaque,cliente,direccion STRING, idx,pcodid,pnum_oc,pnum_externa INT CALL revisa_bultos() OPEN WINDOW w3 WITH FORM "prfmmt021b" DIALOG ATTRIBUTE(UNBUFFERED) INPUT BY NAME titulo_empaque BEFORE INPUT LET gpnum_oc = pnum_oc LET gpnum_externa = pnum_externa SELECT a.titulo_bulto INTO titulo_empaque from iptb00054 a WHERE a.bulto_id = pbulto_id IF titulo_empaque IS NULL THEN LET titulo_empaque = "BULTO ORD.",pnum_externa USING "&&&&&&&&" END IF LET pcliente = cliente LET pdireccion = direccion DISPLAY BY NAME encabezadoe,titulo_empaque AFTER INPUT IF titulo_empaque IS NULL THEN NEXT FIELD titulo_empaque END IF END INPUT INPUT ARRAY arr_empaque FROM sempaque.* ON ACTION salvar ATTRIBUTE(TEXT="Guardar",IMAGE="save") SELECT a.bulto_id INTO pbulto_id FROM iptb00055 a IF pbulto_id IS NULL THEN LET pbulto_id = 0 INSERT INTO iptb00055 (pbulto_id,us_crea,fech_crea) VALUES (0,SUSER_SNAME(),GETDADTE()) END IF LET pbulto_id = pbulto_id + 1 BEGIN WORK UPDATE iptb00054 SET bulto_id = pbulto_id,us_crea = SUSER_SNAME(),fech_crea = GETDATE() #INFORMACION BULTO GENERAL INSERT INTO iptb00054 (bulto_id,num_oc,num_oc_externa,cliente,direccion,estado,us_crea,fech_crea,fecha, titulo_bulto) VALUES (pbulto_id,gpnum_oc,gpnum_externa,pcliente,pdireccion,'EN PROCESO',SUSER_SNAME(),GETDATE(),GETDATE(), titulo_empaque) FOR idx = 1 TO arr_empaque.getLength() IF arr_empaque[idx].cantidad IS NOT NULL THEN SELECT a.codid INTO pcodid FROM iptb00002 a WHERE a.cod_n = arr_empaque[idx].pcodn AND a.cod_grupo = arr_empaque[idx].pcodgrupo AND a.cod_tipo = arr_empaque[idx].pcodtipo AND a.cod_sec = arr_empaque[idx].pcodsec INSERT INTO iptb00053 (codid,cod_n,cod_grupo,cod_tipo,cod_sec,descripcion,cantidad, cantidad_orden,us_crea,fech_crea,num_oc,num_oc_externa,bulto_id) VALUES (pcodid,arr_empaque[idx].pcodn,arr_empaque[idx].pcodgrupo,arr_empaque[idx].pcodtipo, arr_empaque[idx].pcodsec,arr_empaque[idx].producto,arr_empaque[idx].cantidad, arr_empaque[idx].cantidad_orden,SUSER_SNAME(),GETDATE(), gpnum_oc,gpnum_externa,pbulto_id) END IF END FOR COMMIT WORK CALL msg(1) EXIT DIALOG END INPUT ON ACTION CANCEL EXIT DIALOG END DIALOG CLOSE WINDOW w3 END FUNCTION FUNCTION revisa_bultos() DEFINE i,cuenta INT, opcion STRING SELECT COUNT(*) INTO cuenta FROM iptb00054 WHERE num_oc = gpnum_oc IF cuenta > 0 THEN DECLARE busca_bultos CURSOR FOR SELECT a.bulto_id,a.num_oc,a.num_oc_externa,a.titulo_bulto,a.fecha,'N' FROM iptb00054 a WHERE a.num_oc = gpnum_oc LET i = i + 1 FOREACH busca_bultos INTO arr_bultos[i].* LET i = i+1 END FOREACH OPEN WINDOW w5 WITH FORM "prfmmt021c" INPUT ARRAY arr_bultos FROM sbultos.* ATTRIBUTE(WITHOUT DEFAULTS) ON ACTION DELETE LET opcion = fgl_winquestion("INFO","DESEA ELIMINAR ESTE BULTO? ","NO","YES|NO","QUESTION",0) IF opcion = "YES" THEN DELETE FROM iptb00054 WHERE bulto_id = arr_bultos[arr_curr()].id DELETE FROM iptb00053 WHERE bulto_id = arr_bultos[arr_curr()].id CALL arr_bultos.deleteElement(arr_curr()) END IF AFTER INPUT LET pbulto_id = arr_bultos[arr_curr()].id EXIT INPUT END INPUT CLOSE WINDOW w5 END IF END FUNCTION