Files
MBS/WEBSERVICES/productostodos_1.4gl

334 lines
12 KiB
Plaintext

IMPORT util
IMPORT os
IMPORT security
DEFINE j INT,
tasa DEC(10,2),
pfecha DATE,
cantidad_orden,pcantidadConduce,transito,existencia,reservado DEC(12,5)
DEFINE documento DYNAMIC ARRAY OF RECORD
nombre_file,ruta_file STRING
END RECORD
DEFINE galeria DYNAMIC ARRAY OF RECORD
nombre_file VARCHAR(100),
ruta_foto STRING,
imagen BYTE
END RECORD,
tmpfile,tmpfile_f1,tmpfile_f2,userfolder,userfolder_g,userfolder_f STRING
FUNCTION productostodos(pdata)
DEFINE pdata STRING
DEFINE contenido_file RECORD
nombre_file_foto STRING
# contenido BYTE
END RECORD
DEFINE producto RECORD
codid INT,
cod_n INT,
cod_grupo INT,
cod_tipo INT,
cod_sec INT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
titulo_esp STRING,
categoria_esp STRING,
categoria_us ,
marca STRING,
meta_data STRING,
precio_rd FLOAT,
precio_us FLOAT,
existencia FLOAT,
descripcion_larga_es,descripcion_larga_us TEXT,
internal_id_brand,wooc_id_brand,categoria_padre,sub_categoria,parentcode INT,
sub_categoria_descripcion STRING,
contenido STRING,
ruta_file,codigo_ref STRING
END RECORD
DEFINE credenciales RECORD
usuario,clave VARCHAR(50),
fecha_actualiza DATE
END RECORD,
relacionado RECORD
codid INT,
codid_relacionado INT,
cod_n,cod_grupo, cod_tipo,cod_sec INT,
descripcion STRING,
precio FLOAT
END RECORD
DEFINE p RECORD
productos DYNAMIC ARRAY OF RECORD
codid INT,
cod_n INT,
cod_grupo INT,
cod_tipo INT,
cod_sec INT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
titulo_esp STRING,
categoria_esp STRING,
categoria_us ,
marca STRING,
meta_data STRING,
precio_rd FLOAT,
precio_us FLOAT,
existencia FLOAT,
descripcion_larga_es,descripcion_larga_us STRING,
internal_id_brand,wooc_id_brand,categoria_padre,sub_categoria,parentcode INT,
sub_categoria_descripcion STRING,
contenido ,
ruta_file,codigo_ref STRING
END RECORD,
galerias DYNAMIC ARRAY OF RECORD
codid INT,
nombre_file STRING,
ruta_foto STRING
END RECORD,
documentos DYNAMIC ARRAY OF RECORD
codid INT,
nombre_file,ruta_file STRING
END RECORD,
relacionados DYNAMIC ARRAY OF RECORD
codid INT,
codid_relacionado INT,
cod_n,cod_grupo, cod_tipo,cod_sec INT,
descripcion STRING,
precio FLOAT
END RECORD,
mensajes RECORD
cod_msg INT,
descripcion STRING
END RECORD
END RECORD,
i,j1,j2,j3,i1 int,
selec,nombre_f1,nombre_f2 STRING,
url_files STRING
DISPLAY "LLEGUE: ",pdata
CALL util.JSON.parse(pdata,credenciales)
IF STATUS < 0 THEN
LET p.mensajes.cod_msg=STATUS
LET p.mensajes.descripcion = 'ERROR EN CONEXION ',SQLCA.sqlerrm
RETURN util.JSON.stringify(p)
END IF
CONNECT TO "smarmotech" USER credenciales.usuario USING credenciales.clave
IF STATUS < 0 THEN
LET p.mensajes.cod_msg=STATUS
LET p.mensajes.descripcion = 'ERROR EN CONEXION ',SQLCA.sqlerrm
DISCONNECT CURRENT
RETURN util.JSON.stringify(p)
END IF
DISPLAY "<PRODUCTOSTODOS>USUARIO: ",credenciales.usuario," pass ",credenciales.clave," ",credenciales.fecha_actualiza
#EXSTENCIA
#(SELECT SUM(k.cantidad_2) FROM iptb00006 k WHERE (a.cod_n = k.cod_n and a.cod_grupo = k.cod_grupo AND a.cod_tipo = k.cod_tipo and
# a.cod_sec = k.cod_sec) AND k.status_t IS NULL)
LET pfecha = TODAY
# BUSCA LA TASA VIGENTE EN EL SISTEMA
SELECT a.prima INTO tasa FROM vetb00019 a WHERE a.disponible = 'S'
LET selec =
"SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,
a.descripcion , a.unidad_med,
a.descripcion_user ,
f.descripcion_esp,
f.descripcion_us,
k11.descripcion,
a.metadata,
a.precio,
a.precio_usd
,a.disponible
,a.propiedades
,a.propiedades1
, k11.id_brand
,k11.code
, f.code
, k10.code
, k10.parentcode
, k10.descripcion
,' '
,a.ruta_foto
,' '
,a.nombre_file_foto
,'NO'
FROM iptb00016 a
LEFT OUTER JOIN categorias f ON (a.id_categoria = f.id_categoria)
LEFT OUTER JOIN familia k10 on a.id_familia = k10.id_familia
LEFT OUTER JOIN brand k11 ON k11.id_brand = a.id_brand
LEFT OUTER JOIN product_collection k12 ON k12.id_collection = a.id_product_collection
where
a.status_t IS NULL AND
a.fech_mod >='",credenciales.fecha_actualiza USING "mm/dd/yyyy","' ",
" ORDER BY a.codid"
PREPARE comando FROM selec
DECLARE c2 CURSOR FOR comando
LET selec = "SELECT a.codid,a.codid_relacionado,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion,a.precio FROM
iptb00038 a WHERE a.codid = ? "
PREPARE rcomando FROM SELEC
DECLARE busca_r CURSOR FOR rcomando
LET i = 1
LET i1 =1
LET j = 1
LET j1 = 1
LET userfolder="e:\\imagenestienda\\"
LET userfolder_g="e:\\imagenestienda\\"
LET userfolder_f="e:\\imagenestienda\\"
{
LET cmdfiles = 'DEL /Q ', userfolder CLIPPED,'*.*'
RUN cmdfiles
LET cmdfiles = 'DEL /Q ',userfolder_g CLIPPED,'*.*'
RUN cmdfiles
LET cmdfiles ='DEL /Q ',userfolder_f CLIPPED,'*.*'
RUN cmdfiles
}
# PARA PRUEBAS
# LET url_files = 'http://200.88.67.188:2089/imagenes/'
LET url_files = 'https://ws.marmotech.com.do/imagenes/'
#DISPLAY "path ",fgl_getenv('PATH')
#LOCATE contenido_file.contenido IN MEMORY
LOCATE producto.descripcion_larga_es IN MEMORY
LOCATE producto.descripcion_larga_us IN MEMORY
FOREACH c2 INTO producto.*,contenido_file.*
{ IF contenido_file.contenido IS NOT NULL THEN
IF contenido_file.nombre_file_foto IS NULL THEN
LET contenido_file.nombre_file_foto = producto.cod_n USING "<<<<","-",producto.cod_grupo USING "<<<<","-",
producto.cod_tipo USING "<<<<","-",
producto.cod_sec USING "<<<<<<<"
LET contenido_file.nombre_file_foto =contenido_file.nombre_file_foto CLIPPED,".png"
END IF
LET tmpfile = userfolder CLIPPED,contenido_file.nombre_file_foto CLIPPED
CALL contenido_file.contenido.writeFile(tmpfile)
CALL comprimeImagen(tmpfile,' -resize 500x500 ')
LET producto.ruta_file = url_files CLIPPED, "principal/",contenido_file.nombre_file_foto CLIPPED
ELSE
LET tmpfile=userfolder CLIPPED,'NOTIENE.JPG'
END IF
}
IF contenido_file.nombre_file_foto IS NULL THEN
LET producto.ruta_file = 'NO TIENE'
END IF
# disponible
# CALL disponibles(producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec,pfecha)
# RETURNING cantidad_orden,pcantidadConduce,transito,existencia,reservado
# LET producto.existencia = existencia - (cantidad_orden-pcantidadConduce)-reservado
IF producto.existencia IS NULL OR producto.existencia < 0.959 THEN
LET producto.existencia =0
END IF
LET producto.ruta_file = url_files ,contenido_file.nombre_file_foto CLIPPED
LET nombre_f1 = producto.codid USING "<<<<<<","-esp.txt"
LET nombre_f2 =producto.codid USING "<<<<<<","-us.txt"
LET tmpfile_f1 = userfolder_f CLIPPED,nombre_f1 CLIPPED
LET tmpfile_f2 = userfolder_f CLIPPED,nombre_f2 CLIPPED
LET producto.codigo_ref = producto.cod_n USING "&&&&","-",producto.cod_grupo USING "&&&&&","-",
producto.cod_tipo USING "&&&&&",'-'+producto.cod_sec USING "&&&&&&&"
LET p.productos[i].descripcion_larga_es = producto.descripcion_larga_es
LET p.productos[i].descripcion_larga_us = producto.descripcion_larga_us
LET p.productos[i].codid = producto.codid
LET p.productos[i].categoria_esp = producto.categoria_esp
LET p.productos[i].categoria_us = producto.categoria_us
LET p.productos[i].cod_grupo = producto.cod_grupo
LET p.productos[i].cod_n = producto.cod_n
LET p.productos[i].cod_sec = producto.cod_sec
LET p.productos[i].cod_tipo = producto.cod_tipo
LET p.productos[i].descripcion = producto.descripcion
LET p.productos[i].existencia = producto.existencia
LET p.productos[i].meta_data = producto.meta_data
LET p.productos[i].precio_rd = producto.precio_rd * tasa
LET p.productos[i].precio_us = producto.precio_us
LET p.productos[i].ruta_file = producto.ruta_file
LET p.productos[i].titulo_esp = producto.titulo_esp
LET p.productos[i].unidad_med = producto.unidad_med
LET p.productos[i].categoria_padre = producto.categoria_padre
LET p.productos[i].parentcode = producto.parentcode
LET p.productos[i].sub_categoria = producto.sub_categoria
LET p.productos[i].sub_categoria_descripcion = producto.sub_categoria_descripcion
LET p.productos[i].marca = producto.marca
LET p.productos[i].codigo_ref = producto.codigo_ref
# RELACIONADOS
LET j2 = 1
OPEN busca_r USING producto.codid
FOREACH busca_r INTO relacionado.*
LET p.relacionados[j2].* = relacionado.*
LET j2 = j2 +1
END FOREACH
CALL galerias(producto.codid)
FOR j = 1 TO galeria.getLength()
LET p.galerias[j1].codid = producto.codid
LET p.galerias[j1].nombre_file = galeria[j].nombre_file
LET p.galerias[j1].ruta_foto = url_files CLIPPED,galeria[j].nombre_file
LET j1 = j1 + 1
END FOR
CALL ficha(producto.codid)
FOR j3 = 1 TO documento.getLength()
LET p.documentos[i1].codid = producto.codid
LET p.documentos[i1].nombre_file = documento[j3].nombre_file
LET p.documentos[i1].ruta_file = documento[j3].ruta_file
LET i1 = i1 + 1
END FOR
LET i = i + 1
END FOREACH
DISPLAY "NUMERO DE REGISTROS ",i
DISCONNECT CURRENT
RETURN util.JSON.stringify(p)
END FUNCTION
FUNCTION galerias(pcodid)
DEFINE pcodid,k INT,
imagen BYTE,
fileuser STRING
DECLARE busca_galeria CURSOR FOR
SELECT a.nombre_file,a.ruta_file_foto, a.codid FROM iptb00018 a
WHERE a.codid = pcodid
ORDER BY a.codid
LET k = 1
LOCATE imagen IN MEMORY
FOREACH busca_galeria INTO galeria[k].nombre_file
LET k = k + 1
END FOREACH
END FUNCTION
FUNCTION ficha(pcodid)
DEFINE pcodid,k1 INT
DECLARE busca_ficha CURSOR FOR
SELECT nombre_file_ficha,a.ruta_file_ficha FROM iptb00016 a
WHERE a.status_t IS NULL AND a.ruta_file_ficha IS NOT NULL AND a.codid = pcodid
ORDER BY a.codid
LET k1 = 1
FOREACH busca_ficha INTO documento[k1].*
LET k1 = k1 +1
END FOREACH
END FUNCTION