354 lines
14 KiB
Plaintext
354 lines
14 KiB
Plaintext
SCHEMA smarmotech
|
|
DEFINE p_companias RECORD LIKE companias.*
|
|
DEFINE arr_detalle DYNAMIC ARRAY OF RECORD
|
|
|
|
area,codn,codgrupo,codtipo,codsec INT,
|
|
descripcion STRING,
|
|
cantidad,pendiente,precio FLOAT
|
|
END RECORD,
|
|
gnumreq,idx,pcodn,pcodgrupo,pcodtipo,pcodsec,parea INT,
|
|
gdespachada FLOAT
|
|
|
|
FUNCTION buscareq(pnumoc)
|
|
DEFINE pnumoc INT,
|
|
arr_req DYNAMIC ARRAY OF RECORD
|
|
num_req INT,
|
|
fecha VARCHAR(10),
|
|
nombre STRING,
|
|
precio FLOAT,
|
|
estado STRING
|
|
END RECORD
|
|
DEFINE encabezado STRING
|
|
CALL ui.Interface.loadStyles("formularios")
|
|
OPEN WINDOW w1 WITH FORM "prfmwd013"
|
|
LET encabezado = "BUSQUEDA REQUISICIONES DE LA ORDEN ",pnumoc using "&&&&&&&&"
|
|
DECLARE busca_req1 CURSOR FOR
|
|
SELECT a.num_req,CONVERT(CHAR(10),a.fecha,103),b.nombre,SUM(c.valor),a.estado FROM cctb00025 a,vetb00004 b,cctb00026 c,prtb00012 d
|
|
WHERE a.num_req = c.num_req AND c.num_oc = pnumoc AND c.num_oc = d.num_oc AND
|
|
d.tipo_cliente = b.tipo_cliente AND d.sec_cliente = b.sec_cliente AND
|
|
a.status_t IS NULL
|
|
GROUP BY a.num_req,b.nombre,a.estado,a.fecha
|
|
ORDER BY a.num_req
|
|
LET idx = 1
|
|
FOREACH busca_req1 INTO arr_req[idx].*
|
|
LET idx = idx +1
|
|
END FOREACH
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
DISPLAY ARRAY arr_req TO sreq.*
|
|
BEFORE DISPLAY
|
|
CALL arr_detalle.clear()
|
|
DISPLAY encabezado TO encabezado
|
|
BEFORE FIELD num_req
|
|
LET gnumreq = arr_req[arr_curr()].num_req
|
|
CALL llenadetalle()
|
|
AFTER DISPLAY
|
|
LET gnumreq = arr_req[arr_curr()].num_req
|
|
CALL llenadetalle()
|
|
END DISPLAY
|
|
DISPLAY ARRAY arr_detalle TO sreq_det.*
|
|
ON ACTION imprimir ATTRIBUTE (TEXT="",IMAGE="printer")
|
|
|
|
CALL imprime_Req(gnumreq)
|
|
END DISPLAY
|
|
ON ACTION CANCEL ATTRIBUTE(TEXT="Salir",IMAGE="quit")
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
CLOSE WINDOW w1
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
FUNCTION llenadetalle()
|
|
|
|
DECLARE busca_detalle CURSOR FOR
|
|
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.descrip_esp,SUM(a.cantidad),'0',a.precio
|
|
FROM cctb00026 a,iptb00002 b
|
|
WHERE a.num_req = gnumreq 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
|
|
GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.descrip_esp,a.precio,a.area
|
|
LET idx = 1
|
|
FOREACH busca_detalle INTO arr_Detalle[idx].*
|
|
LET pcodn = arr_detalle[idx].codn
|
|
LET pcodgrupo = arr_detalle[idx].codgrupo
|
|
LET pcodtipo = arr_detalle[idx].codtipo
|
|
LET pcodsec = arr_detalle[idx].codsec
|
|
LET parea = arr_detalle[idx].area
|
|
CALL pendienteReq()
|
|
|
|
LET arr_detalle[idx].pendiente = arr_detalle[idx].cantidad - gdespachada
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END FUNCTION
|
|
|
|
FUNCTION pendientereq()
|
|
LET gdespachada=0
|
|
SELECT ISNULL(SUM(a.cantidad_2),0) INTO gdespachada FROM iptb00006 a
|
|
WHERE (a.num_req = gnumreq) AND (a.cod_n = pcodn AND a.cod_grupo = pcodgrupo
|
|
AND a.cod_tipo = pcodtipo AND a.cod_sec = pcodsec) AND
|
|
a.area = parea AND a.status_t IS NULL
|
|
IF gdespachada <> 0 THEN
|
|
LET gdespachada = gdespachada*-1
|
|
END IF
|
|
END FUNCTION
|
|
FUNCTION imprime_req(xnumreq)
|
|
DEFINE xnumreq INT,
|
|
|
|
handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
|
|
r_filename STRING, -- filename of Report Design Document including .4rp extension
|
|
r_output STRING, -- output format option
|
|
preview INTEGER -- TRUE/FALSE, to set preview option
|
|
|
|
DEFINE mrequisicion RECORD
|
|
numreq INT,
|
|
numoc INT,
|
|
nombre VARCHAR(80),
|
|
vendedor VARCHAR(80),
|
|
fecha VARCHAR(10),
|
|
estatus_req VARCHAR(50),
|
|
direccion VARCHAR(100),
|
|
telefono_r VARCHAR(20),
|
|
telefono_o VARCHAR(20),
|
|
celular VARCHAR(20),
|
|
celular1 VARCHAR(20),
|
|
contacto VARCHAR(60),
|
|
usuario_autoriza VARCHAR(50),
|
|
fecha_autorizacion CHAR(16),
|
|
estado_despacho VARCHAR(50),
|
|
area SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion VARCHAR(80),
|
|
cantidad DEC(12,4),
|
|
aarea SMALLINT,
|
|
codn SMALLINT,
|
|
codgrupo SMALLINT,
|
|
codtipo SMALLINT,
|
|
codsec SMALLINT,
|
|
descripcion1 VARCHAR(60),
|
|
kit INT,
|
|
observacion VARCHAR(180),
|
|
cantidad_1 FLOAT,
|
|
cantidad_despachada_req DEC(12,4),
|
|
cantidad_despachada_ord DEC(12,4),
|
|
cantidad_pendiente_ord DEC(12,4),
|
|
cantidad_pendiente_req DEC(12,4),
|
|
cantidad_ord DEC(12,4),
|
|
codigo CHAR(30)
|
|
END RECORD
|
|
|
|
DECLARE busca_req CURSOR FOR
|
|
SELECT b.num_req,c.num_oc, CAST (a.tipo_cliente AS varchar(2))+'-'+CAST(a.sec_cliente AS varchar(6))+' '+ISNULL(a.nombre,' ') AS cliente,
|
|
CAST(e.num_emp AS varchar(5))+' '+ISNULL(RTRIM(e.nom1_emp),' ')+' '+ISNULL(e.apell1_emp,' ') AS vendedor,
|
|
CONVERT(CHAR(10),b.fecha,103) AS fecha,b.estado,
|
|
RTRIM(d.direccion_proyecto)+ '-'+ISNULL(x2.mensaje,' ') AS direccion,d.telefono_r,d.telefono_o,d.celular,
|
|
d.celular1,d.contacto,
|
|
(SELECT isnull(adtb00003.nom1_emp,' ')+' '+isnull(adtb00003.apell1_Emp,' ') FROM adtb00003 WHERE adtb00003.num_emp = b.sec_vend_aprobado),
|
|
CONVERT(CHAR(10),b.fecha_autorizacion,103),
|
|
b.estado_despacho,
|
|
c.area, c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,f.descrip_esp,
|
|
sum(c.cantidad),
|
|
c.area, c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,(SELECT k1.descrip_esp FROM iptb00002 k1
|
|
WHERE k1.cod_n = c.cod_n AND k1.cod_grupo = c.cod_grupo AND k1.cod_tipo = c.cod_tipo AND
|
|
k1.cod_sec = c.cod_sec),c.id_kit,x3.observacion,SUM(c.cantidad_1)
|
|
FROM vetb00004 a,cctb00025 b LEFT OUTER JOIN cctb00029 x2 ON b.num_req = x2.num_req,
|
|
cctb00026 c,
|
|
vetb00050 d,adtb00003 e,iptb00002 f,prtb00014 x3
|
|
WHERE a.tipo_cliente = d.tipo_cliente AND b.num_req = c.num_req AND
|
|
a.sec_cliente = d.sec_cliente AND
|
|
c.cotizacion_no = d.cotizacion_no AND
|
|
c.cod_n = f.cod_n AND c.cod_grupo =f.cod_grupo AND c.cod_tipo=f.cod_tipo AND
|
|
c.cod_sec = f.cod_Sec AND c.status_t IS NULL AND
|
|
b.num_req = xnumreq AND d.sec_vend = e.num_emp AND
|
|
c.num_oc = x3.num_oc
|
|
GROUP BY b.num_req,a.tipo_cliente,a.sec_cliente,a.nombre, e.num_emp,e.nom1_emp,e.apell1_emp,c.num_oc,
|
|
b.fecha,b.estado,
|
|
c.area,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,f.descrip_esp,b.sec_vend_aprobado,
|
|
b.fecha_autorizacion,b.estado_despacho,
|
|
d.direccion_proyecto,x2.mensaje,
|
|
d.telefono_r,d.telefono_o,d.celular,
|
|
c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,
|
|
c.id_kit,x3.observacion,d.celular1,d.contacto
|
|
ORDER BY b.num_req, c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec
|
|
|
|
LET r_output="SVG"
|
|
LET r_filename = "ccprmt010.4rp"
|
|
LET preview = 1
|
|
|
|
iF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
|
|
|
|
START REPORT CCRP10 TO XML HANDLER HANDLER
|
|
LET idx = 1
|
|
FOREACH busca_req INTO mrequisicion.*
|
|
LET mrequisicion.codigo =mrequisicion.kit USING "<<<<","/", mrequisicion.cod_n USING "&&&&","-",
|
|
mrequisicion.cod_grupo USING "&&&&","-",
|
|
mrequisicion.cod_tipo USING "&&&&","-",
|
|
mrequisicion.cod_sec USING "&&&&&&"
|
|
OUTPUT TO REPORT ccrp10(mrequisicion.*)
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
DISPLAY "idx ",idx
|
|
FINISH REPORT ccrp10
|
|
END IF
|
|
END FUNCTION
|
|
REPORT ccrp10(x)
|
|
DEFINE X RECORD
|
|
numreq INT,
|
|
numoc INT,
|
|
nombre VARCHAR(80),
|
|
vendedor VARCHAR(80),
|
|
fecha VARCHAR(10),
|
|
estatus_req VARCHAR(50),
|
|
direccion VARCHAR(100),
|
|
telefono_r VARCHAR(20),
|
|
telefono_o VARCHAR(20),
|
|
celular VARCHAR(20),
|
|
celular1 VARCHAR(20),
|
|
contacto VARCHAR(60),
|
|
usuario_autoriza VARCHAR(50),
|
|
fecha_autorizacion CHAR(16),
|
|
estado_despacho VARCHAR(50),
|
|
area SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion VARCHAR(80),
|
|
cantidad DEC(12,4),
|
|
aarea SMALLINT,
|
|
codn SMALLINT,
|
|
codgrupo SMALLINT,
|
|
codtipo SMALLINT,
|
|
codsec SMALLINT,
|
|
descripcion1 VARCHAR(60),
|
|
kit INT,
|
|
observacion VARCHAR(180),
|
|
cantidad_1 FLOAT,
|
|
cantidad_despachada_req DEC(12,4),
|
|
cantidad_despachada_ord DEC(12,4),
|
|
cantidad_pendiente_ord DEC(12,4),
|
|
cantidad_pendiente_req DEC(12,4),
|
|
cantidad_ord DEC(12,4),
|
|
codigo CHAR(30)
|
|
END RECORD,
|
|
fecha_imp CHAR(16),
|
|
semaforo BOOLEAN,
|
|
chkit CHAR(100),
|
|
y RECORD
|
|
etiqueta CHAR(30),
|
|
cod_n,cod_grupo,cod_tipo,cod_sec INT,
|
|
lado_1,lado_2,lado_3 FLOAT,
|
|
cantidad_r,medida_r FLOAT
|
|
END RECORD
|
|
|
|
DEFINE darea VARCHAR(50)
|
|
|
|
ORDER BY x.numreq
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
SELECT a.nombre INTO p_companias.nombre FROM companias a
|
|
|
|
LET fecha_imp = TODAY USING "DD/MM/YYYY",":",TIME
|
|
BEFORE GROUP OF x.numreq
|
|
|
|
PRINTX x.numreq,x.estado_despacho,x.estatus_req,x.fecha,x.fecha_autorizacion,p_companias.nombre,
|
|
x.nombre,x.usuario_autoriza,x.vendedor,fecha_imp,x.numoc,X.direccion,X.telefono_r,x.telefono_o,
|
|
x.celular,x.celular1,x.contacto, x.observacion
|
|
|
|
IF x.area IS NULL THEN
|
|
LET x.area = 1
|
|
END IF
|
|
|
|
BEFORE GROUP OF x.area
|
|
|
|
SELECT LTRIM(RTRIM(a.nombre_area)) INTO darea FROM prtb00016 a
|
|
WHERE a.area_num = x.area
|
|
|
|
LET darea = "("CLIPPED,x.area CLIPPED,") ", darea CLIPPED
|
|
|
|
PRINT darea
|
|
|
|
BEFORE GROUP OF x.codigo
|
|
|
|
# BUSCA LAS CANTIDADES PENDIENTES
|
|
LET x.cantidad_despachada_req=0
|
|
SELECT SUM(a.cantidad_2) INTO x.cantidad_despachada_req
|
|
FROM iptb00006 a
|
|
WHERE a.num_req = x.numreq AND a.cod_n = x.cod_n AND
|
|
a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND a.cod_Sec = x.cod_Sec and
|
|
a.area = x.area
|
|
AND a.status_t IS NULL
|
|
|
|
LET x.cantidad_despachada_ord=0
|
|
SELECT SUM(a.cantidad_2) INTO x.cantidad_despachada_ord
|
|
FROM iptb00006 a
|
|
WHERE a.num_oc = x.numoc AND a.cod_n = x.cod_n AND
|
|
a.cod_grupo = x.cod_grupo AND a.cod_mov IN (30,31,55,56,12,13) AND
|
|
a.cod_tipo = x.cod_tipo AND a.cod_Sec = x.cod_Sec AND
|
|
a.area = x.area
|
|
AND a.status_t IS NULL
|
|
|
|
SELECT SUM(a.cantidad) INTO x.cantidad_ord
|
|
FROM prtb00013 a
|
|
WHERE a.num_oc = x.numoc AND a.cod_n = x.cod_n AND
|
|
a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND a.cod_Sec = x.cod_Sec AND
|
|
a.area = x.area AND
|
|
a.status_t IS NULL
|
|
|
|
IF x.cantidad_despachada_req IS NULL THEN
|
|
LET x.cantidad_despachada_req = 0
|
|
END IF
|
|
|
|
IF x.cantidad_despachada_ord IS NULL THEN
|
|
LET x.cantidad_despachada_ord = 0
|
|
END IF
|
|
|
|
|
|
IF x.cantidad_ord IS NULL THEN
|
|
LET x.cantidad_ord = 0
|
|
END IF
|
|
# DISPLAY "datos ",x.cantidad_ord,x.cantidad_despachada_ord,x.cantidad,
|
|
# x.cantidad_despachada_req
|
|
|
|
LET x.cantidad_pendiente_ord=x.cantidad_ord+x.cantidad_despachada_ord
|
|
|
|
LET x.cantidad_pendiente_req=x.cantidad + x.cantidad_despachada_req
|
|
{ #BUSCA DESPIECE
|
|
DECLARE busca_desp CURSOR FOR
|
|
SELECT b.descripcion,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
|
|
FROM vetb00026 b,cctb00027 a
|
|
WHERE b.codid = a.etiqueta AND
|
|
a.cod_n = x.cod_n AND
|
|
a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND
|
|
a.cod_sec = x.cod_sec
|
|
FOREACH busca_desp INTO y.*
|
|
END FOREACH
|
|
}
|
|
PRINTX x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_Sec,x.descripcion,x.cantidad,
|
|
x.cantidad_pendiente_req,x.cantidad_pendiente_ord
|
|
ON EVERY ROW
|
|
# IF x.codn IS NOT NULL THEN
|
|
# LET semaforo = TRUE
|
|
# LET chkit = x.codn USING "&&&&","-",x.codgrupo USING "&&&&","-",x.codtipo USING "&&&&","-",
|
|
# x.codsec USING "&&&&"," ",x.descripcion1
|
|
# ELSE
|
|
LET semaforo = FALSE
|
|
|
|
# END IF
|
|
|
|
PRINTX y.etiqueta,y.lado_1,y.lado_2,y.lado_3,y.cantidad_r,y.medida_r,
|
|
chkit,semaforo,x.cantidad_1,x.cantidad
|
|
END REPORT
|