495 lines
17 KiB
Plaintext
495 lines
17 KiB
Plaintext
IMPORT util
|
|
IMPORT os
|
|
|
|
TYPE t_sync_cmd RECORD
|
|
oper STRING,
|
|
data STRING
|
|
END RECORD
|
|
FUNCTION gen_nombre_archivo(tip_sal)
|
|
|
|
DEFINE tip_sal,nom_arc STRING,
|
|
nro_rep INT
|
|
|
|
LET nro_rep=nro_rep+1
|
|
|
|
LET nom_arc="./ArchEnviados/rep_",fgl_getpid() USING "<<<<<<<<<&",
|
|
"-",nro_rep USING "<<<<<<<<<&",".",DOWNSHIFT(tip_sal)
|
|
|
|
RETURN nom_arc
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION rep_cotizacion(s)
|
|
DEFINE s,s_out STRING
|
|
|
|
DEFINE p RECORD
|
|
cotizaciones RECORD
|
|
cotizacion_no INT,
|
|
fecha DATE,
|
|
ventas VARCHAR(1),
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente INT,
|
|
nombre VARCHAR(80),
|
|
rnc VARCHAR(11),
|
|
nombre_proyecto VARCHAR(50),
|
|
direccion_proyecto VARCHAR(50),
|
|
direccion_cliente VARCHAR(50),
|
|
cond_pago SMALLINT,
|
|
descripcion VARCHAR(50),
|
|
celular VARCHAR(15),
|
|
email VARCHAR(60),
|
|
sec_vend INT,
|
|
total_bruto DEC(12,2),
|
|
monto_desc DEC(12,2),
|
|
monto_itbis DEC(12,2),
|
|
total_cotizacion DEC(12,2),
|
|
etiqueta_cotizacion VARCHAR(60),
|
|
contacto VARCHAR(60),
|
|
nombre_ciudad VARCHAR(60),
|
|
telefono_o VARCHAR(20),
|
|
telefono_r VARCHAR(20),
|
|
celular1 VARCHAR(20),
|
|
soporte VARCHAR(200),
|
|
instalador VARCHAR(200),
|
|
vendedor_aux VARCHAR(100),
|
|
sec_vend_aux INT,
|
|
cod_provincia SMALLINT,
|
|
nombre_vend VARCHAR(60),
|
|
porc_itbis DEC(8,2),
|
|
plazo_entrega VARCHAR(100),
|
|
comentario VARCHAR(100)
|
|
|
|
END RECORD,
|
|
detalles DYNAMIC ARRAY OF RECORD
|
|
area SMALLINT,
|
|
descripcion_area CHAR(50),
|
|
codid VARCHAR(25),
|
|
codigo VARCHAR(20),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion VARCHAR(100),
|
|
cantidad DEC(12,5),
|
|
cantidad1 DEC(12,5),
|
|
precio DEC(12,2),
|
|
porc_desc DEC(12,2),
|
|
itbis DEC(12,2),
|
|
valor DEC(12,2),
|
|
imagen STRING
|
|
END RECORD,
|
|
|
|
pprima,pitbis DEC(12,2),
|
|
puser,pfecha_crea VARCHAR(50)
|
|
END RECORD
|
|
|
|
DEFINE cotizacion RECORD
|
|
cotizacion_no INT,
|
|
fecha DATE,
|
|
ventas VARCHAR(1),
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente INT,
|
|
nombre VARCHAR(80),
|
|
rnc VARCHAR(11),
|
|
nombre_proyecto VARCHAR(50),
|
|
direccion_proyecto VARCHAR(50),
|
|
direccion_cliente VARCHAR(50),
|
|
cond_pago SMALLINT,
|
|
descripcion VARCHAR(50),
|
|
celular VARCHAR(15),
|
|
email VARCHAR(60),
|
|
sec_vend INT,
|
|
total_bruto DEC(12,2),
|
|
monto_desc DEC(12,2),
|
|
monto_itbis DEC(12,2),
|
|
total_cotizacion DEC(12,2),
|
|
etiqueta_cotizacion VARCHAR(60),
|
|
contacto VARCHAR(60),
|
|
nombre_ciudad VARCHAR(60),
|
|
telefono_o VARCHAR(20),
|
|
telefono_r VARCHAR(20),
|
|
celular1 VARCHAR(20),
|
|
soporte VARCHAR(200),
|
|
instalador VARCHAR(200),
|
|
vendedor_aux VARCHAR(100),
|
|
sec_vend_aux INT,
|
|
cod_provincia SMALLINT,
|
|
nombre_vend VARCHAR(60),
|
|
porc_itbis DEC(8,2) ,
|
|
plazo_entrega VARCHAR(100),
|
|
comentario VARCHAR(100)
|
|
|
|
END RECORD,
|
|
detalle RECORD
|
|
area SMALLINT,
|
|
descripcion_area CHAR(50),
|
|
codid VARCHAR(25),
|
|
codigo VARCHAR(20),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion VARCHAR(100),
|
|
cantidad DEC(12,5),
|
|
cantidad1 DEC(12,5),
|
|
precio DEC(12,2),
|
|
porc_desc DEC(12,2),
|
|
itbis DEC(12,2),
|
|
valor DEC(12,2),
|
|
imagen STRING
|
|
END RECORD
|
|
DEFINE rep_out RECORD
|
|
cotizcion_no INT,
|
|
contenido STRING,
|
|
nomb_arch STRING
|
|
END RECORD,
|
|
pcotizacion_no INT
|
|
|
|
DEFINE r RECORD
|
|
ERROR STRING
|
|
END RECORD
|
|
|
|
DEFINE tip_sal,arc_sal STRING
|
|
DEFINE p_hand om.SaxDocumentHandler
|
|
|
|
DEFINE i INT
|
|
|
|
TRY
|
|
CALL util.JSON.parse(s, p)
|
|
|
|
CATCH
|
|
LET r.error = "FGL ERROR: ", err_get(status)
|
|
RETURN util.JSON.stringify(r)
|
|
END TRY
|
|
IF p.cotizaciones.cotizacion_no =0 OR p.cotizaciones.cotizacion_no IS NULL THEN
|
|
SELECT a.cotizacion_no INTO pcotizacion_no FROM vetb00053 a
|
|
IF pcotizacion_no IS NULL THEN
|
|
LET pcotizacion_no = 0
|
|
END IF
|
|
LET pcotizacion_no = pcotizacion_no + 1
|
|
|
|
BEGIN WORK
|
|
UPDATE vetb00053 SET cotizacion_no =pcotizacion_no
|
|
ELSE
|
|
BEGIN WORK
|
|
END IF
|
|
|
|
DECLARE det1 CURSOR FOR INSERT INTO cotizacion_detalle (
|
|
cotizacion_no_mob ,
|
|
area ,
|
|
descripcion_area ,
|
|
cod_n ,
|
|
cod_grupo ,
|
|
cod_tipo ,
|
|
cod_sec ,
|
|
descripcion ,
|
|
cantidad ,
|
|
cantidad1 ,
|
|
precio ,
|
|
porc_desc ,
|
|
itbis ,
|
|
valor ,
|
|
codid,
|
|
us_crea,
|
|
fech_crea ,
|
|
cotizacion_no
|
|
)
|
|
VALUES(cotizacion.cotizacion_no,detalle.area,detalle.descripcion_area,
|
|
detalle.cod_n,detalle.cod_grupo,detalle.cod_tipo,detalle.cod_sec,
|
|
detalle.descripcion,detalle.cantidad,detalle.cantidad1,detalle.precio,
|
|
detalle.porc_desc,detalle.itbis,detalle.valor,detalle.codid, p.puser,p.pfecha_crea,
|
|
pcotizacion_no)
|
|
|
|
OPEN det1
|
|
FOR i = 1 TO p.detalles.getLength()
|
|
IF p.detalles[i].area IS NOT NULL THEN
|
|
|
|
LET detalle.* = p.detalles[i].*
|
|
INSERT INTO vetb00051 (cod_cia,ventas,cotizacion_no,area,descripcion_area,
|
|
cod_n,cod_grupo,cod_tipo,cod_Sec,descripcion,
|
|
cantidad_1,cantidad,porc_desc,precio,us_crea,fech_crea)
|
|
VALUES ('1',cotizacion.ventas,pcotizacion_no,p.detalles[i].area,p.detalles[i].descripcion_area,
|
|
p.detalles[i].cod_n,p.detalles[i].cod_grupo,
|
|
p.detalles[i].cod_tipo,p.detalles[i].cod_sec,p.detalles[i].descripcion,
|
|
p.detalles[i].cantidad,p.detalles[i].cantidad1,
|
|
p.detalles[i].porc_desc,p.detalles[i].precio,p.puser,p.pfecha_crea)
|
|
PUT det1
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
LET rep_out.cotizcion_no = 0
|
|
LET rep_out.contenido = 'VACIO'
|
|
LET rep_out.nomb_arch='notiene.pdf'
|
|
LET s_out=util.JSON.stringify(rep_out)
|
|
RETURN s_out
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
CLOSE det1
|
|
|
|
DECLARE ma1 CURSOR FOR INSERT INTO cotizacion ( cotizacion_no,
|
|
fecha ,
|
|
ventas ,
|
|
tipo_cliente ,
|
|
sec_cliente ,
|
|
nombre ,
|
|
rnc ,
|
|
nombre_proyecto ,
|
|
direccion_proyecto ,
|
|
direccion_cliente ,
|
|
cond_pago ,
|
|
descripcion ,
|
|
celular ,
|
|
email ,
|
|
sec_vend ,
|
|
total_bruto ,
|
|
monto_desc ,
|
|
monto_itbis ,
|
|
total_cotizacion ,
|
|
etiqueta_cotizacion ,
|
|
contacto ,
|
|
nombre_ciudad ,
|
|
telefono_o ,
|
|
telefono_r ,
|
|
celular1 ,
|
|
soporte ,
|
|
instalador ,
|
|
vendedor_aux ,
|
|
sec_vend_aux ,
|
|
cod_provincia ,
|
|
nombre_vend ,
|
|
porc_itbis ,
|
|
plazo_entrega ,
|
|
comentario ,
|
|
us_crea,
|
|
fech_crea
|
|
|
|
)
|
|
VALUES(cotizacion.*,p.puser,p.pfecha_crea)
|
|
OPEN ma1
|
|
|
|
LET cotizacion.* = p.cotizaciones.*
|
|
|
|
PUT ma1
|
|
CLOSE ma1
|
|
|
|
|
|
UPDATE cotizacion SET cotizacion_no = pcotizacion_no
|
|
WHERE cotizacion_no_mob = cotizacion.cotizacion_no AND cotizacion_no IS NULL
|
|
|
|
UPDATE cotizacion_detalle SET cotizacion_no = pcotizacion_no
|
|
WHERE cotizacion_no_mob = cotizacion.cotizacion_no AND cotizacion_no IS NULL
|
|
|
|
INSERT INTO vetb00050 ( cod_cia ,
|
|
ventas ,cotizacion_no ,tipo_cliente ,sec_cliente ,nombre_cliente ,rnc ,nombre_proyecto ,
|
|
direccion_cliente , direccion_proyecto ,email ,celular ,prima, porc_itbi,
|
|
fecha , comentario ,cond_pago , sec_vend ,
|
|
total_bruto , sub_total , monto_desc , monto_itbi , total_neto ,
|
|
us_crea , fech_crea,cod_provincia,telefono_o,telefono_r,celular1,sec_vend_aux,contacto,
|
|
plazo_entrega)
|
|
VALUES
|
|
("1",cotizacion.ventas,pcotizacion_no,cotizacion.tipo_cliente,cotizacion.sec_cliente,
|
|
cotizacion.nombre,cotizacion.rnc,cotizacion.nombre_proyecto,cotizacion.direccion_cliente,
|
|
cotizacion.direccion_proyecto,cotizacion.email,cotizacion.celular,P.pprima,P.pitbis,cotizacion.fecha,
|
|
cotizacion.descripcion,cotizacion.cond_pago,cotizacion.sec_vend,cotizacion.total_bruto,
|
|
cotizacion.total_bruto-cotizacion.monto_desc,cotizacion.monto_desc,cotizacion.monto_itbis,
|
|
cotizacion.total_cotizacion, P.puser,p.pfecha_crea,cotizacion.cod_provincia,cotizacion.telefono_o,
|
|
cotizacion.telefono_r,cotizacion.celular1,cotizacion.sec_vend_aux,cotizacion.contacto,
|
|
cotizacion.plazo_entrega )
|
|
|
|
|
|
COMMIT WORK
|
|
|
|
LET tip_sal = "PDF"
|
|
IF NOT fgl_report_loadCurrentSettings("veprmt049_mob.4rp") THEN
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
|
|
LET arc_sal=gen_nombre_archivo(tip_sal)
|
|
|
|
CALL fgl_report_selectDevice(UPSHIFT(tip_sal))
|
|
CALL fgl_report_selectPreview(false)
|
|
CALL fgl_report_setOutputFileName(arc_sal)
|
|
|
|
LET p_hand=fgl_report_commitCurrentSettings()
|
|
|
|
IF p_hand IS NOT NULL THEN
|
|
START REPORT imprimeO TO XML HANDLER p_hand
|
|
|
|
FOR i = 1 TO p.detalles.getLength()
|
|
IF p.detalles[i].area IS NOT NULL THEN
|
|
LET detalle.area = p.detalles[i].area
|
|
LET detalle.cantidad = p.detalles[i].cantidad
|
|
LET detalle.cantidad1=p.detalles[i].cantidad1
|
|
|
|
LET detalle.cod_grupo=p.detalles[i].cod_grupo
|
|
LET detalle.cod_n=p.detalles[i].cod_n
|
|
LET detalle.cod_sec=p.detalles[i].cod_sec
|
|
LET detalle.cod_tipo=p.detalles[i].cod_tipo
|
|
LET detalle.descripcion=p.detalles[i].descripcion
|
|
LET detalle.descripcion_area=p.detalles[i].descripcion_area
|
|
LET detalle.precio = p.detalles[i].precio
|
|
LET detalle.porc_desc = p.detalles[i].porc_desc
|
|
LET detalle.valor = p.detalles[i].valor
|
|
OUTPUT TO REPORT imprimeO(cotizacion.*,detalle.*)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT imprimeO
|
|
END IF
|
|
|
|
IF os.Path.exists(arc_sal) THEN
|
|
CALL file_to_b64(arc_sal) RETURNING rep_out.contenido
|
|
LET rep_out.nomb_arch=os.path.basename(arc_sal)
|
|
LET rep_out.cotizcion_no= pcotizacion_no
|
|
# DISPLAY "GRW file '",rep_out.nomb_arch,"' sent."
|
|
ELSE
|
|
LET rep_out.nomb_arch="ERROR"
|
|
DISPLAY "Error generating the GRW report"
|
|
END IF
|
|
|
|
LET s_out=util.JSON.stringify(rep_out)
|
|
#DISPLAY "data ",s_out
|
|
|
|
RETURN s_out
|
|
END FUNCTION
|
|
|
|
REPORT imprimeO(y,z)
|
|
|
|
DEFINE y RECORD
|
|
cotizacion_no INT,
|
|
fecha DATE,
|
|
ventas VARCHAR(1),
|
|
tipo_cliente SMALLINT,
|
|
sec_cliente INT,
|
|
nombre VARCHAR(80),
|
|
rnc VARCHAR(11),
|
|
nombre_proyecto VARCHAR(50),
|
|
direccion_proyecto VARCHAR(50),
|
|
direccion_cliente VARCHAR(50),
|
|
cond_pago SMALLINT,
|
|
descripcion VARCHAR(50),
|
|
celular VARCHAR(15),
|
|
email VARCHAR(60),
|
|
sec_vend INT,
|
|
sub_total DEC(12,2),
|
|
monto_desc DEC(12,2),
|
|
monto_itbis DEC(12,2),
|
|
total_cotizacion DEC(12,2),
|
|
etiqueta_cotizacion VARCHAR(60),
|
|
contacto VARCHAR(60),
|
|
nombre_ciudad VARCHAR(60),
|
|
telefono_o VARCHAR(20),
|
|
telefono_r VARCHAR(20),
|
|
celular1 VARCHAR(20),
|
|
soporte VARCHAR(200),
|
|
instalador VARCHAR(200),
|
|
vendedor_aux VARCHAR(100),
|
|
sec_vend_aux INT,
|
|
cod_provincia SMALLINT,
|
|
nombre_vend VARCHAR(60),
|
|
porc_itbis DEC(8,2),
|
|
plazo_entrega VARCHAR(100),
|
|
comentario VARCHAR(100)
|
|
END RECORD,
|
|
z RECORD
|
|
area SMALLINT,
|
|
descripcion_area CHAR(50),
|
|
codid VARCHAR(25),
|
|
codigo VARCHAR(20),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion VARCHAR(100),
|
|
cantidad DEC(12,5),
|
|
cantidad1 DEC(12,5),
|
|
precio DEC(12,2),
|
|
porc_desc DEC(12,2),
|
|
itbis DEC(12,2),
|
|
valor DEC(12,2),
|
|
imagen VARCHAR(250)
|
|
END RECORD
|
|
,
|
|
xnombre_a CHAR(30),
|
|
xnombre_p CHAR(50),
|
|
xmedida CHAR(3),
|
|
xtotal_p,bruto,descuento,neto,total_area DEC(12,2),
|
|
pfecha,hora,etiqueta,etiqueta1,etiqueta2,etiqueta3,etiqueta4,etiqueta5 CHAR(100),
|
|
xorden INT,
|
|
p_companias RECORD
|
|
nombre CHAR(60),
|
|
direccion VARCHAR(80),
|
|
rnc VARCHAR(11),
|
|
telefono VARCHAR(20),
|
|
fax VARCHAR(20),
|
|
paginaweb VARCHAR(80),
|
|
telefono1 VARCHAR(20),
|
|
fax1 VARCHAR(20)
|
|
END RECORD,
|
|
nombre_vend VARCHAR(60),
|
|
psimbolo VARCHAR(4),
|
|
xarch STRING,
|
|
imagen BYTE
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 0
|
|
|
|
ORDER BY z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_sec
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
LET pfecha = TODAY USING "DD/MM/YYYY"
|
|
LET hora = TIME
|
|
LET etiqueta = "FORMA DE PAGO: "#,y.descrip
|
|
LET etiqueta3 = "PLAZO ENTREGA: "#,y.plazo_entrega
|
|
LET etiqueta4 = "COMENTARIO: "
|
|
LET etiqueta5 = "Entre la empresa ",p_companias.nombre CLIPPED," de una parte y de la otra parte:"
|
|
|
|
LET etiqueta1 = "Las variaciones en las tonalidades y vetas se entienden como parte de la naturaleza de las piedras naturales."
|
|
LET etiqueta2 = " No somos responsables en las tardanzas en la entrega cuando esten sujetas a especificaciones de medidas y/o terminaciones. "
|
|
LOCATE imagen IN MEMORY
|
|
SELECT a.simbolo INTO psimbolo FROM vetb00061 a WHERE a.ventas = y.ventas
|
|
SELECT ISNULL(a.nom1_emp,' ')||" "||ISNULL(a.apell1_emp,' ') INTO nombre_vend FROM adtb00003 a
|
|
WHERE a.num_emp = y.sec_vend
|
|
SELECT a.nombre,a.direccion,a.rnc,a.telefono,a.telefono1,a.fax,a.fax1,a.paginaweb
|
|
INTO p_companias.nombre,p_companias.direccion,p_companias.rnc,p_companias.telefono,
|
|
p_companias.telefono1,p_companias.fax,p_companias.fax1,p_companias.paginaweb
|
|
FROM companias a
|
|
|
|
BEFORE GROUP OF z.area
|
|
LET total_area = 0
|
|
|
|
ON EVERY ROW
|
|
# BUSCA ORDEN
|
|
LET xorden = null
|
|
#SELECT a.num_oc INTO xorden
|
|
#FROM prtb00012 a
|
|
#WHERE a.cotizacion_no = y.cotizacion_no AND a.status_t IS NULL
|
|
|
|
LET bruto = 0
|
|
LET descuento = 0
|
|
|
|
LET bruto = z.cantidad1 * z.precio
|
|
LET descuento = (z.cantidad1*z.precio*(z.porc_Desc/100))
|
|
LET xtotal_p = bruto - descuento
|
|
# LET y.sub_total = y.sub_total + y.monto_desc
|
|
LET xnombre_p = z.descripcion
|
|
LET xnombre_a = z.descripcion_area
|
|
IF z.imagen IS NOT NULL THEN
|
|
CALL file_to_b64(z.imagen) RETURNING xarch
|
|
CALL imagen.readFile(xarch)
|
|
|
|
END IF
|
|
PRINTX p_companias.*,y.*,z.*,bruto,descuento,neto,
|
|
etiqueta,etiqueta2,etiqueta3,etiqueta4,etiqueta5,
|
|
xnombre_a,xnombre_p,xmedida,xtotal_p,xorden,nombre_vend,psimbolo,imagen
|
|
|
|
|
|
AFTER GROUP OF z.area
|
|
LET total_area = GROUP SUM(z.cantidad1*z.precio)
|
|
|
|
PRINTX total_area
|
|
|
|
END REPORT
|