241 lines
8.6 KiB
Plaintext
241 lines
8.6 KiB
Plaintext
IMPORT util
|
|
IMPORT os
|
|
|
|
FUNCTION productos(tipo_inventario)
|
|
DEFINE xfecha_conteo DATE
|
|
DEFINE tipo_inventario VARCHAR(50)
|
|
DEFINE p RECORD
|
|
productos DYNAMIC ARRAY OF RECORD
|
|
codid INT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion VARCHAR(100),
|
|
unidad_med VARCHAR(4),
|
|
factor_conv FLOAT,
|
|
existencia DEC(12,5),
|
|
consumo DEC(12,5),
|
|
costo DEC(12,5),
|
|
precio DEC(12,2),
|
|
ordenes DEC(12,5),
|
|
despachado DEC(12,5),
|
|
disponible DEC(12,5),
|
|
dias SMALLINT,
|
|
fecha CHAR(10),
|
|
fecha_conteo CHAR(10)
|
|
|
|
END RECORD #,
|
|
#existencia DYNAMIC ARRAY OF RECORD
|
|
# codid INT,
|
|
# bodega SMALLINT,
|
|
# cantidad FLOAT,
|
|
# fecha DATE
|
|
#END RECORD
|
|
END RECORD,
|
|
r_foto DYNAMIC ARRAY OF RECORD
|
|
foto STRING
|
|
|
|
|
|
END RECORD,
|
|
i int,
|
|
selec,s1 STRING,
|
|
fecha,fecha_ini DATE
|
|
|
|
|
|
LET fecha = TODAY
|
|
LET fecha_ini = fecha - 90
|
|
IF tipo_inventario = "productos" THEN
|
|
SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a
|
|
WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI"
|
|
LET selec =
|
|
"SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,d.factor_conv,'0',",
|
|
"'0', '0','0','0','0' ",
|
|
" FROM iptb00002 a,iptb00001 d where a.status_t is null and ",
|
|
" a.cod_n = d.cod_n and a.cod_grupo = d.cod_grupo and a.cod_tipo = d.cod_tipo and ",
|
|
" a.cod_sec = d.cod_sec and ",
|
|
"a.control_existencia='SI' "
|
|
LET s1 =
|
|
"SELECT a.codid,b.bodega,SUM(b.cantidad_2) FROM iptb00006 b,iptb00002 a WHERE 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 b.status_t is null ",
|
|
" and ",
|
|
"a.control_existencia='SI' ",
|
|
" group by a.codid,b.bodega ",
|
|
" having SUM(b.cantidad_2) > 0 "
|
|
|
|
{"SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,d.factor_conv,SUM(b.cantidad_2),",
|
|
"ISNULL((SELECT SUM(iptb00006.cantidad_2) FROM iptb00006 ", #CONSUMO PRODUCTO
|
|
" WHERE a.cod_n = cod_n AND a.cod_grupo=cod_grupo AND a.cod_tipo = cod_tipo AND a.cod_sec = cod_sec AND ",
|
|
" COD_MOV IN (30,31,55,56) and iptb00006.fecha between '",fecha_ini,"' and '",fecha,"' and status_t IS NULL ),0),",
|
|
" ISNULL(c.material+c.gastos+c.labor,0),ISNULL(x7.precio,0),",
|
|
" ISNULL((SELECT SUM(x1.cantidad) ", # CANTIDAD ORDENES
|
|
" FROM prtb00013 x1,prtb00012 x2 ",
|
|
" WHERE x1.num_oc = x2.num_oc AND ",
|
|
" x2.cerrada = 'N' AND ",
|
|
" x2.status_t IS NULL AND ",
|
|
" (x1.cod_n = a.cod_n AND ",
|
|
" x1.cod_grupo=a.cod_grupo AND ",
|
|
" x1.cod_tipo=a.cod_tipo AND ",
|
|
" x1.cod_sec=a.cod_sec ) ",
|
|
" ),0), ",
|
|
" ISNULL(( SELECT SUM(x5.cantidad_2) ", # DESPACHADO
|
|
" FROM prtb00013 x3,prtb00012 x4,iptb00006 x5,iptb00005 x6 ",
|
|
" WHERE (x3.num_oc = x4.num_oc) AND ",
|
|
" x4.cerrada = 'N' AND ",
|
|
" x4.status_t IS NULL AND ",
|
|
" (x3.cod_n = a.cod_n AND ",
|
|
" x3.cod_grupo=a.cod_grupo AND ",
|
|
" x3.cod_tipo=a.cod_tipo AND ",
|
|
" x3.cod_sec=a.cod_sec) AND ",
|
|
" (x3.cod_n = x5.cod_n AND ",
|
|
" x3.cod_grupo=x5.cod_grupo AND ",
|
|
" x3.cod_tipo=x5.cod_tipo AND ",
|
|
" x3.cod_sec=x5.cod_Sec) AND ",
|
|
" x5.cod_mov = x6.cod_mov AND ",
|
|
" (x6.control_despacho = 'SI' OR x6.control_devolucion = 'SI') AND ",
|
|
" x3.num_oc = x5.num_oc AND ",
|
|
" x5.status_t IS NULL ",
|
|
"),0),a.foto_producto ",
|
|
" FROM iptb00002 a LEFT OUTER JOIN vetb00025 x7 ON ",
|
|
" (a.cod_n = x7.cod_n AND ",
|
|
" a.cod_grupo = x7.cod_grupo AND ",
|
|
" a.cod_tipo = x7.cod_tipo AND ",
|
|
" a.cod_Sec = x7.cod_Sec) AND ",
|
|
" x7.ventas = '3' ",
|
|
" INNER JOIN iptb00001 d ON ",
|
|
" (a.cod_n = d.cod_n AND ",
|
|
" a.cod_grupo = d.cod_grupo AND ",
|
|
" a.cod_tipo = d.cod_tipo AND ",
|
|
" a.cod_Sec = d.cod_Sec) ",
|
|
|
|
" ,iptb00006 b left OUTER JOIN iptb00004 c ON ",
|
|
" (b.cod_n = c.cod_n AND ",
|
|
" b.cod_grupo = c.cod_grupo AND ",
|
|
" b.cod_tipo = c.cod_tipo AND ",
|
|
" b.cod_sec = c.cod_sec AND ",
|
|
" c.ano =", year(fecha),") ",
|
|
" WHERE (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 ",
|
|
" b.status_t IS NULL AND ",
|
|
" a.status_t IS NULL ",
|
|
" GROUP BY d.factor_conv,a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.unidad_med,c.material,c.gastos,c.labor,a.descrip_esp,x7.precio,a.foto_producto "
|
|
}
|
|
END IF
|
|
IF tipo_inventario = "materia_prima" THEN
|
|
SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a
|
|
WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI"
|
|
LET selec =
|
|
"SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,'1','0','0',",
|
|
" '0','0',' ' ",
|
|
" FROM intb00001 a where a.status_t is null "
|
|
LET s1 =
|
|
"SELECT a.codid,b.bodega,SUM(b.cantidad_2) FROM intb00006 b,intb00001 a WHERE 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 b.status_t is null",
|
|
" group by a.codid,b.bodega ",
|
|
" having SUM(b.cantidad_2) > 0 "
|
|
DISPLAY "TIPO INVENTARIO ",tipo_inventario
|
|
|
|
END IF
|
|
IF tipo_inventario = "repuestos" THEN
|
|
SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a
|
|
WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI"
|
|
LET selec =
|
|
"SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,'1','0','0',",
|
|
" '0','0',' ' ",
|
|
" FROM irtb00002 a where a.status_t is null "
|
|
LET s1 =
|
|
"SELECT a.codid,b.bodega,SUM(b.cantidad_2) FROM irtb00006 b,irtb00002 a WHERE 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 b.status_t is null",
|
|
" group by a.codid,b.bodega ",
|
|
" having SUM(b.cantidad_2) > 0 "
|
|
|
|
|
|
END IF
|
|
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE c2 CURSOR FOR comando
|
|
|
|
LET i = 1
|
|
FOREACH c2 INTO p.productos[i].*
|
|
|
|
IF p.productos[i].codid IS NOT NULL THEN
|
|
LET p.productos[i].costo=0
|
|
LET p.productos[i].disponible = p.productos[i].existencia - (p.productos[i].ordenes+p.productos[i].despachado)
|
|
IF p.productos[i].consumo < 0 THEN
|
|
LET p.productos[i].consumo = p.productos[i].consumo * -1
|
|
END IF
|
|
IF p.productos[i].consumo > 0 THEN
|
|
LET p.productos[i].dias =(p.productos[i].disponible/ p.productos[i].consumo) * 90
|
|
ELSE
|
|
LET p.productos[i].dias=0
|
|
END IF
|
|
IF p.productos[i].descripcion IS NULL THEN
|
|
LET p.productos[i].descripcion = "NO TIENE"
|
|
END IF
|
|
IF p.productos[i].unidad_med IS NULL THEN
|
|
LET p.productos[i].unidad_med='UD'
|
|
END if
|
|
# IF pproductos[i].fullpath IS NOT NULL THEN
|
|
# IF os.path.exists(producto.fullpath) THEN
|
|
|
|
# LET producto.nombre_file=os.Path.basename(producto.fullpath)
|
|
# LET producto.nombre_file=producto.nombre_file CLIPPED
|
|
# CALL producto.foto.readFile(producto.fullpath)
|
|
|
|
# END IF
|
|
# END IF
|
|
|
|
# CALL fotos(producto.fullpath) RETURNING s1
|
|
LET p.productos[i].fecha=TODAY USING "dd/mm/yyyy"
|
|
# LET p.r_foto[i].foto = s1
|
|
|
|
# IF p.existencia[i].cantidad IS NULL THEN
|
|
# LET p.existencia[i].cantidad=0
|
|
# END IF
|
|
LET p.productos[i].fecha_conteo = xfecha_conteo
|
|
LET i = i + 1
|
|
END IF
|
|
|
|
|
|
END FOREACH
|
|
DISPLAY "productos ",p.productos.getLength()
|
|
LET i = 1
|
|
|
|
#PREPARE comando2 FROM s1
|
|
#DECLARE c3 CURSOR FOR comando2
|
|
|
|
#FOREACH c3 INTO p.existencia[i].*
|
|
|
|
# LET i = i+1
|
|
# END FOREACH
|
|
|
|
RETURN util.JSON.stringify(p)
|
|
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION fotos(fullpath)
|
|
DEFINE filename, s STRING,
|
|
fullpath VARCHAR(100)
|
|
DEFINE r_photo RECORD
|
|
i BYTE
|
|
END RECORD
|
|
|
|
# primero asignar la variable fullpath con el nombre mas el path-default o como sea en tu caso
|
|
#CALL os.path.join(images_cat_path CLIPPED,pname) RETURNING fullpath
|
|
# después dependiendo de si el archivo existe o no armar el string para enviar al cliente
|
|
IF os.path.exists(fullpath) THEN
|
|
LOCATE r_photo.i IN MEMORY
|
|
CALL r_photo.i.readFile(fullpath)
|
|
LET s=util.JSON.stringify(r_photo)
|
|
FREE r_photo.i
|
|
ELSE
|
|
LET s="FILE_NOT_FOUND"
|
|
END IF
|
|
RETURN s
|
|
|
|
END FUNCTION
|