IMPORT OS SCHEMA "smarmotech" GLOBALS DEFINE datos RECORD cod_n CHAR(10), cod_grupo CHAR(10), cod_tipo CHAR(10), cod_sec CHAR(10), codid INT, online VARCHAR(2), descripcion VARCHAR(100), descripcion_user VARCHAR(100), descripcion_us VARCHAR(100), id_categoria,id_familia,id_subfamilia,id_brand,id_collection INT, metadata VARCHAR(100), factor_conv FLOAT, precio FLOAT, precio_usd FLOAT, unidad_med VARCHAR(10), existencia_min decimal(12,5), lado_1,lado_2,lado_3,lado_4 DEC(12,5), propiedades TEXT, propiedades1 TEXT, us_crea char(50), fech_crea DATE, nombre_file_foto varchar(100), nombre_file_ficha,nombre_file_ficha2 varchar(100), tasa DEC(12,2), ruta_file_foto , ruta_file_ficha, ruta_file_ficha1 VARCHAR(255) END RECORD, filetmp,selec, criterio_productos, comando STRING, usuarios,clave CHAR(50), d_tipos, f_tipos, filedestino, fichadestino,fichadestino1, filedestinovacio, xnombreFile, mensaje, imagen_file, tmpdir_file, dir_file, filepath, l_file, p_res STRING, pimagen,pficha1, pficha BYTE, ficha_tecnica,ficha_tecnica1 byte, respuesta char(3), existe BOOLEAN, operacion CHAR(1), idx INT DEFINE secuencia INT, tipoOperacion VARCHAR(3) DEFINE arr_productos DYNAMIC ARRAY OF RECORD codigo VARCHAR(25), descripcion1 VARCHAR(100), unidadMed VARCHAR(4), categoria VARCHAR(100), existencia DEC(12,5), precio_usd1 DEC(12,2), codn1,codgrupo1,codtipo1,codSec1 INT, nombre_file_foto1,nombre_file_ficha1,nombre_file_ficha3 VARCHAR(100), codn2,codid1 INT, descripcion_us1,descripcion_es1 VARCHAR(100), precio1 DEC(12,2), idcategoria1,idbrand,idfamilia INT, ruta_ficha1,ruta_ficha2,ruta_foto1 STRING, factor DEC(12,5), online1 VARCHAR(2) END RECORD, galeria_fotos DYNAMIC ARRAY OF RECORD nombre_galeria VARCHAR(100), ruta_file_foto STRING END RECORD DEFINE url_ficha,criterio,selec STRING, cantidadReg INT, relacionados DYNAMIC ARRAY OF RECORD cod_n2,cod_grupo2,cod_tipo2,cod_sec2 INT, descripcion2 STRING, precio2 FLOAT, obligatorio VARCHAR(10), codid_relacionado INT END RECORD, sugeridos DYNAMIC ARRAY OF RECORD cod_n1,cod_grupo1,cod_tipo1,cod_sec1 INT, descripcion3 STRING, precio3 FLOAT, obligatorio VARCHAR(10), codid_sugerido INT END RECORD END GLOBALS MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" USER usuarios USING clave CALL pprmt075() END MAIN FUNCTION pprmt075() OPEN WINDOW HOME_FRM WITH FORM 'ipfmmt075' MENU ON ACTION procesar LET operacion = 'N' CLEAR FORM CALL buscaProductos() ON ACTION Salir EXIT MENU END MENU CLOSE WINDOW HOME_FRM END FUNCTION FUNCTION nuevosDatos() DIALOG ATTRIBUTE(UNBUFFERED) INPUT BY NAME datos.* ATTRIBUTE(WITHOUT DEFAULTS) BEFORE INPUT LET int_flag = FALSE CALL otcategorias("input") CALL familia() CALL brand() CALL collection() AFTER FIELD id_familia CALL familiasub(datos.id_familia) ON ACTION busca_imagen LET tipoOperacion = 'PRI' CALL adicionaimagen() ON ACTION busca_ficha_tecnica CALL busca_ficha() ON ACTION busca_ficha_tecnica1 CALL busca_ficha1() ON ACTION abrir_doc CALL abrir_documento() ON ACTION abrir_doc1 CALL abrir_documento1() ON ACTION salvar IF datos.precio IS NULL THEN CALL msg(16) NEXT FIELD precio END IF IF datos.descripcion_user IS NULL THEN CALL msg(16) NEXT FIELD descripcion_user END IF IF datos.online IS NULL THEN LET datos.online = 'NO' END IF IF operacion = "M" THEN BEGIN WORK UPDATE iptb00016 SET descripcion_user = datos.descripcion_user, precio = datos.precio, precio_usd = datos.precio_usd, descripcion_us = datos.descripcion_us, existencia_minima = datos.existencia_min, us_mod = usuarios, fech_mod = getdate(), id_categoria = datos.id_categoria, id_familia = datos.id_familia, id_subfamilia = datos.id_subfamilia, id_brand = datos.id_brand, id_product_collection = datos.id_collection, propiedades = datos.propiedades, propiedades1 = datos.propiedades1, metadata = datos.metadata, nombre_file_foto = datos.nombre_file_foto, nombre_file_ficha = datos.nombre_file_ficha, nombre_file_ficha1 = datos.nombre_file_ficha2, online = datos.online, # ficha_tecnica1 = pficha1, lado_1 = datos.lado_1, lado_2 = datos.lado_2, lado_3 = datos.lado_3, lado_4 = datos.lado_4, ruta_foto = datos.ruta_file_foto, ruta_file_ficha = datos.ruta_file_ficha, ruta_file_ficha1 = datos.ruta_file_ficha1, factor_conv = datos.factor_conv WHERE cod_n = datos.cod_n AND cod_grupo = datos.cod_grupo AND cod_tipo = datos.cod_tipo AND cod_sec =datos.cod_sec DELETE FROM iptb00018 WHERE codid = datos.codid FOR idx = 1 TO galeria_fotos.getLength() IF galeria_fotos[idx].nombre_galeria IS NOT NULL AND galeria_fotos[idx].ruta_file_foto IS NOT NULL THEN INSERT INTO iptb00018 (nombre_file,codid,cod_n,cod_grupo,cod_tipo,cod_sec,ruta_file_foto) VALUES (galeria_fotos[idx].nombre_galeria,datos.codid,datos.cod_n,datos.cod_grupo, datos.cod_tipo,datos.cod_sec,galeria_fotos[idx].ruta_file_foto) END IF END FOR # PRODUCTOS RELACIONADOS DELETE FROM iptb00038 WHERE codid = datos.codid FOR idx = 1 TO relacionados.getLength() IF relacionados[idx].cod_n2 IS NOT NULL THEN IF relacionados[idx].precio2 IS NULL THEN ROLLBACK WORK CALL msg(85) END IF IF relacionados[idx].obligatorio IS NULL THEN ROLLBACK WORK CALL msg(16) END IF IF relacionados[idx].codid_relacionado = datos.codid THEN ROLLBACK WORK CALL msg(1002) END IF #VERIFICA SI EL PRODUCTO ESTA EN LA TABLA DE LA TIENDA RELACIONADO SELECT a.codid FROM iptb00016 a WHERE a.cod_n = relacionados[idx].cod_n2 AND a.cod_Grupo = relacionados[idx].cod_grupo2 AND a.cod_tipo = relacionados[idx].cod_tipo2 AND a.cod_Sec = relacionados[idx].cod_sec2 IF STATUS = NOTFOUND THEN ROLLBACK WORK CALL msg(1003) END IF INSERT INTO iptb00038 (codid,codid_relacionado,cod_n,cod_grupo,cod_tipo,cod_sec,descripcion,precio, obligatorio ) VALUES (datos.codid, relacionados[idx].codid_relacionado, relacionados[idx].cod_n2,relacionados[idx].cod_grupo2,relacionados[idx].cod_tipo2, relacionados[idx].cod_sec2,relacionados[idx].descripcion2,relacionados[idx].precio2, relacionados[idx].obligatorio) END IF END FOR # PRODUCTOS SUGERIDOS DELETE FROM iptb00039 WHERE codid = datos.codid FOR idx = 1 TO sugeridos.getLength() IF sugeridos[idx].cod_n1 IS NOT NULL THEN IF sugeridos[idx].precio3 IS NULL THEN ROLLBACK WORK CALL msg(85) END IF IF sugeridos[idx].codid_sugerido = datos.codid THEN ROLLBACK WORK CALL msg(1002) END IF #VERIFICA SI EL PRODUCTO ESTA EN LA TABLA DE LA TIENDA PARA LOS SUGERIDOS SELECT a.codid FROM iptb00016 a WHERE a.cod_n = sugeridos[idx].cod_n1 AND a.cod_Grupo = sugeridos[idx].cod_grupo1 AND a.cod_tipo = sugeridos[idx].cod_tipo1 AND a.cod_Sec = sugeridos[idx].cod_sec1 IF STATUS = NOTFOUND THEN ROLLBACK WORK CALL msg(1003) END IF INSERT INTO iptb00039 (codid,codid_sugerido,cod_n,cod_grupo,cod_tipo,cod_sec,descripcion,precio, obligatorio ) VALUES (datos.codid, sugeridos[idx].codid_sugerido, sugeridos[idx].cod_n1,sugeridos[idx].cod_grupo1,sugeridos[idx].cod_tipo1, sugeridos[idx].cod_sec1,sugeridos[idx].descripcion3,sugeridos[idx].precio3, sugeridos[idx].obligatorio) END IF END FOR COMMIT WORK CALL msg(13) ELSE BEGIN WORK INSERT INTO iptb00016(codid, cod_n, cod_grupo, cod_tipo, cod_sec, descripcion, unidad_med, precio, precio_usd, descripcion_user, fech_crea, us_crea, nombre_file_foto, nombre_file_ficha, existencia_minima, id_categoria,id_familia,id_brand,id_product_collection,propiedades,descripcion_us, tasa,nombre_file_ficha1,metadata,propiedades1, lado_1,lado_2,lado_3,lado_4,ruta_foto,ruta_file_ficha,ruta_file_ficha1, factor_conv,id_subfamilia,online,fech_mod ) VALUES(datos.codid, datos.cod_n, datos.cod_grupo, datos.cod_tipo, datos.cod_sec, datos.descripcion, datos.unidad_med, datos.precio, datos.precio_usd, datos.descripcion_user, getdate(), usuarios, datos.nombre_file_foto, datos.nombre_file_ficha, datos.existencia_min, datos.id_categoria,datos.id_familia,datos.id_brand,datos.id_collection, datos.propiedades,datos.descripcion_us,datos.tasa,datos.nombre_file_ficha2,datos.metadata, datos.propiedades1,datos.lado_1,datos.lado_2,datos.lado_3,datos.lado_4, datos.ruta_file_foto,datos.ruta_file_ficha,datos.ruta_file_ficha1,datos.factor_conv, datos.id_subfamilia,datos.online,getdate()) FOR idx = 1 TO galeria_fotos.getLength() IF galeria_fotos[idx].nombre_galeria IS NOT NULL AND galeria_fotos[idx].ruta_file_foto IS NOT NULL THEN INSERT INTO iptb00018 (nombre_file,codid,cod_n,cod_grupo,cod_tipo,cod_sec,ruta_file_foto) VALUES (galeria_fotos[idx].nombre_galeria,datos.codid,datos.cod_n,datos.cod_grupo, datos.cod_tipo,datos.cod_sec,galeria_fotos[idx].ruta_file_foto) END IF END FOR # PRODUCTOS RELACIONADOS FOR idx = 1 TO relacionados.getLength() IF relacionados[idx].cod_n2 IS NOT NULL THEN IF relacionados[idx].precio2 IS NULL THEN ROLLBACK WORK CALL msg(85) END IF IF relacionados[idx].obligatorio IS NULL THEN ROLLBACK WORK CALL msg(16) END IF IF relacionados[idx].codid_relacionado = datos.codid THEN ROLLBACK WORK CALL msg(1002) END IF #VERIFICA SI EL PRODUCTO ESTA EN LA TABLA DE LA TIENDA RELACIONADOS SELECT a.codid FROM iptb00016 a WHERE a.cod_n = relacionados[idx].cod_n2 AND a.cod_Grupo = relacionados[idx].cod_grupo2 AND a.cod_tipo = relacionados[idx].cod_tipo2 AND a.cod_Sec = relacionados[idx].cod_sec2 IF STATUS = NOTFOUND THEN ROLLBACK WORK CALL msg(1003) END IF INSERT INTO iptb00038 (codid,codid_relacionado,cod_n,cod_grupo,cod_tipo,cod_sec,descripcion,precio, obligatorio ) VALUES (datos.codid,relacionados[idx].codid_relacionado, relacionados[idx].cod_n2,relacionados[idx].cod_grupo2,relacionados[idx].cod_tipo2, relacionados[idx].cod_sec2,relacionados[idx].descripcion2,relacionados[idx].precio2, relacionados[idx].obligatorio) END IF END FOR # PRODUCTOS SUGERIDOS FOR idx = 1 TO sugeridos.getLength() IF sugeridos[idx].cod_n1 IS NOT NULL THEN IF sugeridos[idx].precio3 IS NULL THEN ROLLBACK WORK CALL msg(85) END IF IF sugeridos[idx].codid_sugerido = datos.codid THEN ROLLBACK WORK CALL msg(1002) END IF #VERIFICA SI EL PRODUCTO ESTA EN LA TABLA DE LA TIENDA SUGERIDOS SELECT a.codid FROM iptb00016 a WHERE a.cod_n = sugeridos[idx].cod_n1 AND a.cod_Grupo = sugeridos[idx].cod_grupo1 AND a.cod_tipo = sugeridos[idx].cod_tipo1 AND a.cod_Sec = sugeridos[idx].cod_sec1 IF STATUS = NOTFOUND THEN ROLLBACK WORK CALL msg(1003) END IF INSERT INTO iptb00039 (codid,codid_relacionado,cod_n,cod_grupo,cod_tipo,cod_sec,descripcion,precio, obligatorio ) VALUES (datos.codid,sugeridos[idx].codid_sugerido, sugeridos[idx].cod_n1,sugeridos[idx].cod_grupo1,sugeridos[idx].cod_tipo1, sugeridos[idx].cod_sec1,sugeridos[idx].descripcion3,sugeridos[idx].precio3, sugeridos[idx].obligatorio) END IF END FOR COMMIT WORK CALL msg(1) LET operacion ="M" END IF CALL refrescar() AFTER FIELD lado_2 IF datos.lado_2 IS NOT NULL THEN IF datos.lado_1 IS NULL THEN CALL msg(16) NEXT FIELD lado_1 END IF LET datos.lado_4 = datos.lado_1 * datos.lado_2 DISPLAY BY NAME datos.lado_4 END IF AFTER FIELD lado_3 IF datos.lado_3 IS NOT NULL THEN IF datos.lado_1 IS NULL THEN CALL msg(16) NEXT FIELD lado_1 END IF IF datos.lado_2 IS NULL THEN CALL msg(16) NEXT FIELD lado_2 END IF LET datos.lado_4 = datos.lado_1 * datos.lado_2 * datos.lado_3 DISPLAY BY NAME datos.lado_4 END IF END INPUT # Galeria de fotos INPUT ARRAY galeria_fotos FROM sfotos1.* # BEFORE INPUT # IF operacion = "M" THEN # CALL callImagen() # END IF BEFORE FIELD nombre_galeria IF galeria_fotos[arr_curr()].nombre_galeria IS NOT NULL AND Operacion = 'M' THEN LET filetmp = galeria_fotos[arr_curr()].ruta_file_foto DISPLAY filetmp TO foto_producto1 END IF AFTER FIELD nombre_galeria IF galeria_fotos[arr_curr()].nombre_galeria IS NOT NULL THEN LET filetmp = galeria_fotos[arr_curr()].ruta_file_foto DISPLAY filetmp TO foto_producto1 END IF ON ACTION buscar LET tipoOperacion = "ARR" LET secuencia = arr_curr() CALL adicionaimagen() LET galeria_fotos[arr_curr()].nombre_galeria = xnombreFile DISPLAY "galeria ",galeria_fotos[arr_curr()].nombre_galeria DISPLAY galeria_fotos[arr_curr()].nombre_galeria TO sfotos1[scr_line()].nombre_galeria END INPUT INPUT ARRAY relacionados FROM srelacionados.* ATTRIBUTE(WITHOUT DEFAULTS) BEFORE ROW LET idx = arr_curr() ON ACTION producto ATTRIBUTE(TEXT="Buca Productos",IMAGE="find") CALL busca_productos('SI',0,0,0,0) RETURNING relacionados[idx].cod_n2,relacionados[idx].cod_grupo2, relacionados[idx].cod_tipo2,relacionados[idx].cod_sec2, relacionados[idx].descripcion2,relacionados[idx].precio2, relacionados[idx].codid_relacionado DISPLAY relacionados[arr_curr()].descripcion2 TO srelacionados[scr_line()].descripcion2 DISPLAY relacionados[arr_curr()].precio2 TO srelacionados[scr_line()].precio2 AFTER FIELD cod_sec2 IF relacionados[idx].cod_sec2 IS NOT NULL THEN CALL busca_productos('NO',relacionados[idx].cod_n2,relacionados[idx].cod_grupo2,relacionados[idx].cod_tipo2, relacionados[idx].cod_sec2) RETURNING relacionados[idx].cod_n2,relacionados[idx].cod_grupo2, relacionados[idx].cod_tipo2,relacionados[idx].cod_sec2, relacionados[idx].descripcion2,relacionados[idx].precio2, relacionados[idx].codid_relacionado IF relacionados[idx].precio2 IS NULL THEN CALL msg(85) NEXT FIELD cod_n2 END IF DISPLAY relacionados[arr_curr()].descripcion2 TO srelacionados[scr_line()].descripcion2 DISPLAY relacionados[arr_curr()].precio2 TO srelacionados[scr_line()].precio2 IF relacionados[idx].codid_relacionado = datos.codid THEN CALL msg(1002) NEXT FIELD cod_n2 END IF #VERIFICA SI EL PRODUCTO ESTA EN LA TABLA DE LA TIENDA SELECT a.codid FROM iptb00016 a WHERE a.cod_n = relacionados[idx].cod_n2 AND a.cod_Grupo = relacionados[idx].cod_grupo2 AND a.cod_tipo = relacionados[idx].cod_tipo2 AND a.cod_Sec = relacionados[idx].cod_sec2 IF STATUS = NOTFOUND THEN CALL msg(1003) NEXT FIELD cod_n2 END IF END IF AFTER FIELD obligatorio IF relacionados[idx].cod_sec2 IS NOT NULL THEN IF relacionados[idx].obligatorio IS NULL THEN CALL msg(16) NEXT FIELD cod_n2 END IF END IF END INPUT INPUT ARRAY sugeridos FROM ssugeridos.* ATTRIBUTE(WITHOUT DEFAULTS) BEFORE ROW LET idx = arr_curr() ON ACTION producto ATTRIBUTE(TEXT="Buca Productos",IMAGE="find") CALL busca_productos('SI',0,0,0,0) RETURNING sugeridos[idx].cod_n1,sugeridos[idx].cod_grupo1, sugeridos[idx].cod_tipo1,sugeridos[idx].cod_sec1, sugeridos[idx].descripcion3,sugeridos[idx].precio3, sugeridos[idx].codid_sugerido DISPLAY sugeridos[arr_curr()].descripcion3 TO ssugeridos[scr_line()].descripcion3 DISPLAY sugeridos[arr_curr()].precio3 TO ssugeridos[scr_line()].precio3 AFTER FIELD cod_sec1 IF sugeridos[idx].cod_sec1 IS NOT NULL THEN CALL busca_productos('NO',sugeridos[idx].cod_n1,sugeridos[idx].cod_grupo1,sugeridos[idx].cod_tipo1, sugeridos[idx].cod_sec1) RETURNING sugeridos[idx].cod_n1,sugeridos[idx].cod_grupo1, sugeridos[idx].cod_tipo1,sugeridos[idx].cod_sec1, sugeridos[idx].descripcion3,sugeridos[idx].precio3, sugeridos[idx].codid_sugerido IF sugeridos[idx].precio3 IS NULL THEN CALL msg(85) NEXT FIELD cod_n1 END IF DISPLAY sugeridos[arr_curr()].descripcion3 TO ssugeridos[scr_line()].descripcion3 DISPLAY sugeridos[arr_curr()].precio3 TO ssugeridos[scr_line()].precio3 IF sugeridos[idx].codid_sugerido = datos.codid THEN CALL msg(1002) NEXT FIELD cod_n1 END IF #VERIFICA SI EL PRODUCTO ESTA EN LA TABLA DE LA TIENDA SELECT a.codid FROM iptb00016 a WHERE a.cod_n = sugeridos[idx].cod_n1 AND a.cod_Grupo = sugeridos[idx].cod_grupo1 AND a.cod_tipo = sugeridos[idx].cod_tipo1 AND a.cod_Sec = sugeridos[idx].cod_sec1 IF STATUS = NOTFOUND THEN CALL msg(1003) NEXT FIELD cod_n1 END IF END IF END INPUT ON ACTION cancel CALL msg(2) INITIALIZE datos.* TO NULL RETURN END DIALOG END FUNCTION FUNCTION adicionaImagen() LET d_tipos="Images" LET f_tipos="*.jpg *.png *.gif" LET mensaje=%"Elige Imagen" LET imagen_file = "*.jpg" CALL ui.interface.frontcall("standard","openfile",[imagen_file,d_tipos,f_tipos,mensaje],filepath) IF filepath IS NOT NULL THEN IF secuencia IS NULL THEN LET secuencia = 0 END IF IF tipoOperacion = "PRI" THEN LET datos.nombre_file_foto = datos.cod_n USING '&&&&','-',datos.cod_grupo USING '&&&&','-',datos.cod_tipo USING '&&&&','-',datos.cod_sec USING '&&&&&&', # "-", # secuencia USING "&&&", '.', OS.Path.extension(filepath) CALL rutadefecto() LET filedestino = filedestino CLIPPED,datos.nombre_file_foto DISPLAY filedestino TO nombre_file_Foto DISPLAY "rutas ",filepath," fi ",filedestino CALL fgl_getfile(filepath,filedestino) CALL comprimeImagen(filedestino,' -resize 500x500 ') LET datos.ruta_file_foto = filedestino DISPLAY filedestino TO ruta_file_foto DISPLAY BY NAME datos.nombre_file_foto ELSE IF secuencia IS NULL THEN LET secuencia = 1 END IF LET xnombreFile='G', datos.cod_n USING '&&&&','-',datos.cod_grupo USING '&&&&','-',datos.cod_tipo USING '&&&&','-',datos.cod_sec USING '&&&&&&', "-", secuencia USING "&&&", '.', OS.Path.extension(filepath) CALL rutadefecto() LET filedestino = filedestino CLIPPED,xnombreFile CLIPPED DISPLAY filedestino TO nombre_file_foto LET galeria_fotos[secuencia].nombre_galeria = xnombrefile CLIPPED LET galeria_fotos[secuencia].ruta_file_foto = filedestino CALL fgl_getfile(filepath,filedestino) CALL comprimeImagen(filedestino,' -resize 200x300 ') # CALL rutadefecto() DISPLAY filedestino TO foto_producto1 END IF END IF END FUNCTION FUNCTION callImagen() DISPLAY BY NAME datos.* # LOCATE pimagen IN MEMORY SELECT a.nombre_file_foto,a.ruta_foto INTO datos.nombre_file_foto,datos.ruta_file_foto FROM iptb00016 a WHERE a.cod_n = datos.cod_n AND a.cod_grupo = datos.cod_grupo AND a.cod_tipo = datos.cod_tipo AND a.cod_sec = datos.cod_sec IF datos.nombre_file_foto IS NULL THEN LET datos.nombre_file_foto = datos.cod_n USING '&&&&','-',datos.cod_grupo USING '&&&&','-',datos.cod_tipo USING '&&&&','-',datos.cod_sec USING '&&&&&&', '.', OS.Path.extension(datos.ruta_file_foto) END IF DISPLAY datos.ruta_file_foto TO ruta_file_foto DECLARE busca_galeria CURSOR FOR SELECT a.nombre_file,a.ruta_file_foto FROM iptb00018 a WHERE a.codid = datos.codid LET idx = 1 FOREACH busca_galeria INTO galeria_fotos[idx].* LET idx = idx + 1 END FOREACH END FUNCTION FUNCTION galerias() DECLARE busca_galeria1 CURSOR FOR SELECT a.nombre_file,a.ruta_file_foto FROM iptb00018 a WHERE a.codid = datos.codid LET idx = 1 FOREACH busca_galeria1 INTO galeria_fotos[idx].* LET idx = idx + 1 END FOREACH END FUNCTION FUNCTION relacionadosData() DECLARE busca_rel CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion,a.precio,a.obligatorio,a.codid_relacionado FROM iptb00038 a WHERE a.codid = datos.codid LET idx = 1 FOREACH busca_rel INTO relacionados[idx].* LET idx = idx + 1 END FOREACH END FUNCTION FUNCTION sugeridosData() DECLARE busca_sug CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion,a.precio,a.obligatorio,a.codid_sugerido FROM iptb00039 a WHERE a.codid = datos.codid LET idx = 1 FOREACH busca_sug INTO sugeridos[idx].* LET idx = idx + 1 END FOREACH END FUNCTION FUNCTION callFicha() SELECT a.ruta_file_ficha,a.ruta_file_ficha1 INTO datos.ruta_file_ficha,datos.ruta_file_ficha1 FROM iptb00016 a WHERE a.cod_n = datos.cod_n AND a.cod_grupo = datos.cod_grupo AND a.cod_tipo = datos.cod_tipo AND a.cod_sec = datos.cod_sec # CALL pficha1.writeFile(fichadestino) DISPLAY BY NAME datos.nombre_file_ficha2,datos.ruta_file_ficha,datos.ruta_file_ficha1 --LET l_file = l_file CLIPPED,"\\",datos.nombre_file_ficha --CALL fgl_putfile(tmpdir_file,l_file) DISPLAY "nombre file p2 ",datos.nombre_file_ficha END FUNCTION FUNCTION busca_ficha() LET d_tipos="Archivos" LET f_tipos="*.pdf *.xls *.txt *.doc *.docx *.png *.jpg" LET mensaje=%"Elige Ficha Tecnica" LET dir_file = "*.pdf" CALL rutadefecto() CALL ui.Interface.frontCall("standard","openfile", [dir_file,d_tipos,f_tipos,mensaje], [filepath] ) IF filepath IS NOT NULL THEN IF downshift(os.Path.extension(filepath)) = "pdf" OR downshift(os.Path.extension(filepath)) = "txt" OR downshift(os.Path.extension(filepath)) = "doc" OR downshift(os.Path.extension(filepath)) = "xls" OR downshift(os.Path.extension(filepath)) = "docx" OR downshift(os.Path.extension(filepath)) = "png" OR downshift(os.Path.extension(filepath)) = "jpg" OR downshift(os.Path.extension(filepath)) = "xlsx" THEN LET dir_file = os.Path.basename(filepath) DISPLAY filepath TO ruta_file_ficha LET fichadestino = filedestino , datos.cod_n USING '&&&&','-',datos.cod_grupo USING '&&&&','-',datos.cod_tipo USING '&&&&','-',datos.cod_sec USING '&&&&&&&','-01','.', OS.Path.extension(filepath) CALL fgl_getfile(filepath,fichadestino) LET datos.nombre_file_ficha = datos.cod_n USING '&&&&','-',datos.cod_grupo USING '&&&&','-',datos.cod_tipo USING '&&&&','-',datos.cod_sec USING '&&&&&&&','-01','.', OS.Path.extension(filepath) LET datos.ruta_file_ficha = url_ficha CLIPPED,datos.nombre_file_ficha CLIPPED DISPLAY BY NAME datos.ruta_file_ficha,datos.nombre_file_ficha ELSE CALL fgl_winmessage("ERROR","EL FILE DEBE SER PDF, JPG, PNG, XLS, DOC, DOCX","INFO") END IF END IF END FUNCTION FUNCTION busca_ficha1() LET d_tipos="Archivos" LET f_tipos="*.pdf *.xls *.txt *.doc *.docx *.png *.jpg" LET mensaje=%"Elige Ficha Tecnica" LET dir_file = "*.pdf" CALL ui.Interface.frontCall("standard","openfile", [dir_file,d_tipos,f_tipos,mensaje], [filepath] ) IF filepath IS NOT NULL THEN IF downshift(os.Path.extension(filepath)) = "pdf" OR downshift(os.Path.extension(filepath)) = "txt" OR downshift(os.Path.extension(filepath)) = "doc" OR downshift(os.Path.extension(filepath)) = "xls" OR downshift(os.Path.extension(filepath)) = "docx" OR downshift(os.Path.extension(filepath)) = "png" OR downshift(os.Path.extension(filepath)) = "jpg" OR downshift(os.Path.extension(filepath)) = "xlsx" THEN LET fichadestino1 = filedestino CLIPPED, datos.cod_n USING '&&&&','-',datos.cod_grupo USING '&&&&','-',datos.cod_tipo USING '&&&&','-',datos.cod_sec USING '&&&&&&&','-02','.', OS.Path.extension(filepath) LET dir_file = os.Path.basename(filepath) DISPLAY filepath TO ruta_file_ficha1 CALL fgl_getfile(filepath,fichadestino1) LET datos.nombre_file_ficha2 = datos.cod_n USING '&&&&','-',datos.cod_grupo USING '&&&&','-',datos.cod_tipo USING '&&&&','-',datos.cod_sec USING '&&&&&&&','-02','.', OS.Path.extension(filepath) CALL rutadefecto() LET datos.ruta_file_ficha1 = url_ficha CLIPPED,datos.nombre_file_ficha2 DISPLAY BY NAME datos.ruta_file_ficha1, datos.nombre_file_ficha2 ELSE CALL fgl_winmessage("ERROR","EL FILE DEBE SER PDF, JPG, PNG, XLS, DOC, DOCX","INFO") END IF END IF END FUNCTION FUNCTION abrir_documento() TRY LET tmpdir_file = datos.ruta_file_ficha CLIPPED DISPLAY "ruta ficha ",tmpdir_file # CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [l_file] ) # LET l_file = l_file CLIPPED,"\\",datos.nombre_file_ficha # CALL fgl_putfile(tmpdir_file,l_file) # DISPLAY "lfile ",l_file # CALL ui.Interface.frontCall("standard","shellexec", [l_file],[p_res]) CALL ui.Interface.frontCall("standard","launchURL",[datos.ruta_file_ficha],[]) CATCH CALL fgl_winmessage("ERROR",err_get(STATUS),"INFO") END TRY END FUNCTION FUNCTION abrir_documento1() DISPLAY "file ",datos.nombre_file_ficha2 TRY LET tmpdir_file = datos.ruta_file_ficha1 CLIPPED CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [l_file] ) LET l_file = l_file CLIPPED,"\\",datos.nombre_file_ficha2 CALL fgl_putfile(tmpdir_file,l_file) CALL ui.Interface.frontCall("standard","shellexec", [l_file],[p_res]) CATCH CALL fgl_winmessage("ERROR",err_get(STATUS),"INFO") END TRY END FUNCTION FUNCTION buscaProductos() DEFINE mensajes VARCHAR(100), tasa DEC(12,2) CALL ui.Interface.LoadStyles("mbsStyle") DIALOG ATTRIBUTE(UNBUFFERED) DISPLAY ARRAY arr_productos TO sproductos.* BEFORE DISPLAY CALL arr_productos.clear() CALL criterioBusqueda() RETURNING mensajes IF mensajes = "NO EXISTEN REGISTROS CON ESA CONDICION" THEN CALL fgl_winmessage("INFO",mensajes,"INFO") RETURN END IF ON ACTION actualiza ATTRIBUTE(TEXT="Actualizar") INITIALIZE datos.* TO NULL LOCATE datos.propiedades IN MEMORY LOCATE datos.propiedades1 IN MEMORY CALL galeria_fotos.clear() CALL relacionados.clear() DISPLAY BY NAME datos.* LET datos.id_categoria = arr_productos[arr_curr()].idcategoria1 LET datos.id_familia = arr_productos[arr_curr()].idfamilia LET datos.id_brand = arr_productos[arr_curr()].idbrand LET datos.online = arr_productos[arr_curr()].online1 LET datos.precio_usd = arr_productos[arr_curr()].precio_usd1 SELECT ISNULL(a.prima,1) INTO datos.tasa FROM vetb00019 a WHERE a.disponible = 'S' IF arr_productos[arr_curr()].codn2 IS NULL THEN LET operacion = 'N' SELECT ISNULL(AVG(a.precio),0) INTO datos.precio_usd FROM vetb00025 a WHERE a.cod_n = arr_productos[arr_curr()].codn1 AND a.cod_grupo = arr_productos[arr_curr()].codgrupo1 AND a.cod_tipo = arr_productos[arr_curr()].codtipo1 AND a.cod_sec = arr_productos[arr_curr()].codSec1 AND a.ventas = 3 LET datos.precio = datos.precio_usd * datos.tasa LET datos.factor_conv =0 SELECT a.factor_conv INTO datos.factor_conv FROM iptb00001 a WHERE a.cod_n = arr_productos[arr_curr()].codn1 AND a.cod_grupo = arr_productos[arr_curr()].codgrupo1 AND a.cod_tipo = arr_productos[arr_curr()].codtipo1 AND a.cod_sec = arr_productos[arr_curr()].codSec1 ELSE LET operacion = 'M' LET datos.precio_usd = arr_productos[arr_curr()].precio_usd1 LET datos.factor_conv = arr_productos[arr_curr()].factor END IF IF arr_productos[arr_curr()].precio1 IS NULL THEN LET datos.precio = arr_productos[arr_curr()].precio_usd1 * datos.tasa ELSE LET datos.precio = arr_productos[arr_curr()].precio1 END IF LET datos.codid =arr_productos[arr_curr()].codid1 LET datos.cod_n = arr_productos[arr_curr()].codn1 LET datos.cod_tipo = arr_productos[arr_curr()].codtipo1 LET datos.cod_grupo = arr_productos[arr_curr()].codgrupo1 LET datos.cod_sec = arr_productos[arr_curr()].codsec1 LET datos.descripcion = arr_productos[arr_curr()].descripcion1 LET datos.unidad_med = arr_productos[arr_curr()].unidadMed LET datos.descripcion_us = arr_productos[arr_curr()].descripcion_us1 LET datos.descripcion_user = arr_productos[arr_curr()].descripcion_es1 #LET datos.precio = arr_productos[arr_curr()].precio1 LET datos.ruta_file_ficha = arr_productos[arr_curr()].ruta_ficha1 LET datos.ruta_file_ficha1 = arr_productos[arr_curr()].ruta_ficha2 LET datos.ruta_file_foto = arr_productos[arr_curr()].ruta_foto1 LET datos.nombre_file_ficha = arr_productos[arr_curr()].nombre_file_ficha1 LET datos.nombre_file_ficha2 = arr_productos[arr_curr()].nombre_file_ficha3 LET datos.existencia_min = arr_productos[arr_curr()].existencia SELECT a.propiedades,a.metadata,a.lado_1,a.lado_2,a.lado_3,a.lado_4 INTO datos.propiedades,datos.metadata,datos.lado_1,datos.lado_2,datos.lado_3,datos.lado_4 FROM iptb00016 a WHERE a.codid = datos.codid SELECT a.propiedades1 INTO datos.propiedades1 FROM iptb00016 a WHERE a.codid = datos.codid DISPLAY "ruta ",datos.ruta_file_foto DISPLAY BY NAME datos.propiedades,datos.precio,datos.precio_usd, datos.propiedades1,datos.metadata,datos.lado_1,datos.lado_2, datos.lado_3,datos.lado_4,datos.ruta_file_foto,datos.factor_conv, datos.online CALL galerias() CALL relacionadosData() CALL sugeridosData() { IF arr_productos[arr_curr()].nombre_file_foto1 IS NOT NULL THEN LET filedestino = 'tmp\\',arr_productos[arr_curr()].nombre_file_foto1 CLIPPED CALL callImagen() END IF IF arr_productos[arr_curr()].nombre_file_ficha1 IS NOT NULL THEN LET fichadestino = 'tmp\\',arr_productos[arr_curr()].nombre_file_ficha1 CLIPPED LET datos.nombre_file_ficha = arr_productos[arr_curr()].nombre_file_ficha1 CALL callFicha() END IF IF arr_productos[arr_curr()].nombre_file_ficha3 IS NOT NULL THEN LET fichadestino1 = 'tmp\\',arr_productos[arr_curr()].nombre_file_ficha3 CLIPPED LET datos.nombre_file_ficha2 = arr_productos[arr_curr()].nombre_file_ficha3 CALL callFicha1() END IF } CALL nuevosDatos() ON ACTION CANCEL CALL fgl_winmessage("INFO","OPERACION ABORTADA","INFO") RETURN END DISPLAY END DIALOG END FUNCTION FUNCTION criterioBusqueda() CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, b.id_categoria FROM codn,codgrupo,codtipo,codsec, idcategoria BEFORE CONSTRUCT # CALL clase() # CALL grupos() CLEAR FORM CALL otcategorias("CONSTRUCT") AFTER CONSTRUCT EXIT CONSTRUCT END CONSTRUCT IF int_flag THEN LET int_flag = FALSE RETURN "EXITO" END IF LET selec = "select '',a.descrip_esp,a.unidad_med,ISNULL(c.descripcion_esp,'NO TIENE'),SUM(d.cantidad_2),isnull(b.precio_usd,k.precio), a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.nombre_file_foto,b.nombre_file_ficha,b.nombre_file_ficha1, b.cod_n,a.codid,b.descripcion_us,b.descripcion_user,b.precio,b.id_categoria,b.id_brand,b.id_familia, b.ruta_file_ficha,b.ruta_file_ficha1,b.ruta_foto,b.factor_conv,b.online FROM iptb00002 a LEFT OUTER JOIN iptb00016 b ON 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 ", " LEFT OUTER JOIN iptb00001 k1 ON a.cod_n = k1.cod_n AND a.cod_grupo = k1.cod_grupo AND a.cod_tipo = k1.cod_tipo AND ", " a.cod_Sec = k1.cod_sec ", " LEFT OUTER JOIN vetb00025 k ON k.cod_n = a.cod_n AND k.cod_grupo = a.cod_grupo AND k.cod_tipo = a.cod_tipo AND k.cod_sec = a.cod_Sec and k.ventas = '3' ", " LEFT OUTER JOIN categorias c ON c.id_categoria = b.id_categoria ", " LEFT OUTER JOIN iptb00006 d ON (d.cod_n = a.cod_n and d.cod_grupo = a.cod_grupo and d.cod_tipo = a.cod_tipo and d.cod_sec = a.cod_Sec) ", " INNER JOIN intb00009 k2 ON k2.cod_bodega = d.bodega AND k2.control_existencia = 'SI' ", " WHERE a.status_t IS NULL AND ", " d.status_t is null AND ", criterio CLIPPED, " GROUP BY a.descrip_esp,a.unidad_med,c.descripcion_esp,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec, b.nombre_file_foto,b.nombre_file_ficha,b.foto,b.ficha_tecnica,b.cod_n,a.codid,b.descripcion_us,b.descripcion_user, ", " b.precio,b.precio_usd,k.precio,b.nombre_file_ficha1,b.id_categoria,b.id_brand,b.id_familia, b.ruta_file_ficha,b.ruta_file_ficha1,b.ruta_foto,b.factor_conv,b.online ", " ORDER BY a.descrip_esp " PREPARE comando FROM selec DECLARE buscar CURSOR FOR comando LET idx = 1 FOREACH buscar INTO arr_productos[idx].* LET arr_productos[idx].codigo =arr_productos[idx].codn1 USING "&&&&","-", arr_productos[idx].codgrupo1 USING "&&&&",'-', arr_productos[idx].codtipo1 USING "&&&&&",'-', arr_productos[idx].codsec1 USING "&&&&&" LET idx = idx + 1 END FOREACH IF idx = 1 THEN RETURN "NO EXISTEN REGISTROS CON ESA CONDICION" END IF LET cantidadReg = arr_productos.getLength() DISPLAY BY NAME cantidadReg RETURN "EXITO" END FUNCTION FUNCTION refrescar() LET selec = "select '',a.descrip_esp,a.unidad_med,ISNULL(c.descripcion_esp,'NO TIENE'),SUM(d.cantidad_2),isnull(b.precio_usd,k.precio), a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.nombre_file_foto,b.nombre_file_ficha,b.nombre_file_ficha1, b.cod_n,a.codid,b.descripcion_us,b.descripcion_user,b.precio,b.id_categoria,b.id_brand,b.id_familia, b.ruta_file_ficha,b.ruta_file_ficha1,b.ruta_foto,b.factor_conv,b.online FROM iptb00002 a LEFT OUTER JOIN iptb00016 b ON 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 ", " LEFT OUTER JOIN iptb00001 k1 ON a.cod_n = k1.cod_n AND a.cod_grupo = k1.cod_grupo AND a.cod_tipo = k1.cod_tipo AND ", " a.cod_Sec = k1.cod_sec ", " LEFT OUTER JOIN vetb00025 k ON k.cod_n = a.cod_n AND k.cod_grupo = a.cod_grupo AND k.cod_tipo = a.cod_tipo AND k.cod_sec = a.cod_Sec and k.ventas = '3' ", " LEFT OUTER JOIN categorias c ON c.id_categoria = b.id_categoria ", " LEFT OUTER JOIN iptb00006 d ON (d.cod_n = a.cod_n and d.cod_grupo = a.cod_grupo and d.cod_tipo = a.cod_tipo and d.cod_sec = a.cod_Sec) ", " WHERE a.status_t IS NULL AND ", " d.status_t is null AND ", criterio CLIPPED, " GROUP BY a.descrip_esp,a.unidad_med,c.descripcion_esp,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec, b.nombre_file_foto,b.nombre_file_ficha,b.foto,b.ficha_tecnica,b.cod_n,a.codid,b.descripcion_us,b.descripcion_user, ", " b.precio,b.precio_usd,k.precio,b.nombre_file_ficha1,b.id_categoria,b.id_brand,b.id_familia, b.ruta_file_ficha,b.ruta_file_ficha1,b.ruta_foto,b.factor_conv,b.online ", " ORDER BY a.descrip_esp " PREPARE comando1 FROM selec DECLARE buscar1 CURSOR FOR comando1 LET idx = 1 FOREACH buscar1 INTO arr_productos[idx].* LET arr_productos[idx].codigo =arr_productos[idx].codn1 USING "&&&&","-", arr_productos[idx].codgrupo1 USING "&&&&",'-', arr_productos[idx].codtipo1 USING "&&&&&",'-', arr_productos[idx].codsec1 USING "&&&&&" LET idx = idx + 1 END FOREACH END FUNCTION FUNCTION rutadefecto() LET filedestino='..\\..\\imagenestienda\\' LET fichadestino='..\\..\\imagenestienda\\' LET fichadestino1='..\\..\\imagenestienda\\' { LET filedestino = 'C:\\Users\\jsoto\\Documents\\PROYECTOS\\BDL320\\IMAGENES' LET fichadestino = 'C:\\Users\\jsoto\\Documents\\PROYECTOS\\BDL320\\IMAGENES' LET fichadestino1 = 'C:\\Users\\jsoto\\Documents\\PROYECTOS\\BDL320\\IMAGENES' } LET url_ficha = 'https://ws.marmotech.com.do/imagenes/' CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [tmpdir_file] ) END FUNCTION