Files

361 lines
14 KiB
Plaintext

IMPORT util
SCHEMA smarmotech
DEFINE p_companias RECORD LIKE companias.*,
p_iptb01 RECORD LIKE iptb00001.* ,
r_filename,r_output,nombre_file STRING ,
preview BOOLEAN,
HANDLER om.SaxDocumentHandler,
fecha_vencimiento DATE
FUNCTION imprime_factura(s)
DEFINE s,res STRING,
informacion RECORD
ordene,usuario,clave STRING
END RECORD
DEFINE factura RECORD
cod_cia LIKE vetb00002.cod_cia, #DEJAR EN BLANCO
ventas LIKE vetb00002.ventas,
zona CHAR(3),
factura LIKE vetb00002.factura,
conduce LIKE vetb00002.conduce,
fecha_conduce DATE,
fecha_factura DATE,
tipo_cliente LIKE vetb00002.tipo_cliente,
sec_cliente LIKE vetb00002.sec_cliente,
nombre CHAR(30),
direccion CHAR(170),
ciudad CHAR(20),
prima_us LIKE vetb00002.prima_us,
porc_desc LIKE vetb00002.porc_desc,
cond_pago LIKE vetb00002.cond_pago, # AUTOMATICO
num_req INT, # AUTOMATICO
orden INT,
orden_externa STRING,
fecha_orden DATE,
porc_itbi LIKE vetb00002.porc_itbi,
sec_vend LIKE vetb00002.sec_vend,
nombre_vend CHAR(60),
cod_transp LIKE iptb00006.cod_transp,
sec_transp LIKE iptb00006.sec_transp,
cod_tarifa LIKE iptb00006.cod_tarifa,
nombre_tran CHAR(30),
fecha_embarque DATE,
placa_transp LIKE iptb00006.placa,
sub_total DECIMAL(12,2),
desc_valor DECIMAL(12,2),
itbis DECIMAL(12,2),
total_fact DECIMAL(12,2),
valor_envio FLOAT,
correo_electronico STRING,
metodo_pago STRING,
num_rnc,pais,telefono_casa,telefono_cel,strncf,codigo_dgii,usuario,clave,tipo_envio,referencia,contacto,
titulo_ncf
STRING,
provincia INT,
contacto_obra,telefono_contacto_obra STRING
END RECORD,
detalle RECORD
area SMALLINT, #AUTOMATICO
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(50),
unidad_med CHAR(5),
cantidad1,
cantidad DEC(12,5),
precio LIKE vetb00003.precio,
cantidad_2 LIKE vetb00003.cantidad_2,
monto_fact DECIMAL(12,2),
cantidad_orden DEC(12,5),
facturada DEC(12,5),
pendiente DEC(12,5),
id_kit INT,
codid INT
END RECORD
DEFINE respuesta RECORD
cod_msg INT,
descripcion STRING,
url STRING
END RECORD,
idx int
CALL util.JSON.parse(s,informacion)
DISPLAY "LLEGO ORDEN ",informacion.ordene
CONNECT TO "marmotech" USER informacion.usuario USING informacion.clave
IF STATUS < 0 THEN
LET respuesta.cod_msg=STATUS
LET respuesta.descripcion = 'ERROR EN CONEXION DB ',SQLCA.sqlerrm
LET respuesta.url = 'NO TIENE'
DISCONNECT CURRENT
RETURN util.JSON.stringify(respuesta)
END IF
#BUSCA INFORMACION
LET idx = 1
LET factura.orden_externa = informacion.ordene
DECLARE buscar_factura CURSOR FOR
SELECT a.factura,a.tipo_cliente,a.sec_cliente,a.nombre_cliente,a.direccion_cliente,a.rnc,b.telefono,b.telex,
a.orden,a.ventas,a.fecha_factura,a.sub_total,a.porc_itbi,a.monto_itbi,a.monto_desc,a.neto,
c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.descripcion,c.cantidad,c.precio,c.cantidad_2,
a.fecha_Vencimiento_ncf,a.cond_pago,a.ncf,a.titulo_ncf,a.valor_envio
FROM vetb00002 a,vetb00004 b,vetb00003 c
WHERE a.documento = informacion.ordene AND
a.tipo_cliente = b.tipo_cliente AND
a.sec_cliente = b.sec_cliente AND
a.sucid = 20 AND
a.factura = c.factura and a.sucid =c.sucid and a.status_t is null
FOREACH buscar_factura
INTO factura.factura,factura.tipo_cliente,factura.sec_cliente,factura.nombre,factura.direccion,factura.num_rnc,
factura.telefono_cel,factura.telefono_casa,factura.orden,factura.ventas,
factura.fecha_factura,factura.sub_total,factura.porc_itbi,factura.itbis,factura.desc_valor,
factura.total_fact,
detalle.cod_n,detalle.cod_grupo,detalle.cod_tipo,detalle.cod_sec,detalle.descrip_esp,
detalle.cantidad,detalle.precio,detalle.cantidad_2,fecha_vencimiento,
factura.cond_pago,factura.strncf,factura.titulo_ncf,factura.valor_envio
IF idx = 1 THEN
# IMPRESION FACTURA
LET r_filename ='veprmt022.4rp'
LET nombre_file = 'E:\\facturas\\',informacion.ordene clipped,".pdf"
LET r_output='PDF'
LET preview = FALSE
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
CALL fgl_report_setOutputFileName(nombre_file)
LET handler = fgl_report_commitCurrentSettings() -- commit changes
IF handler IS NOT NULL THEN -- report engine was configured ok
START REPORT imp_factura TO XML HANDLER HANDLER
ELSE
LET respuesta.cod_msg=404
LET respuesta.descripcion = 'ERROR EN GENERACION FACTURA, LLAME A MARMOTECH, 809-227-1322 '
LET respuesta.url = 'NO TIENE'
DISCONNECT CURRENT
RETURN util.JSON.stringify(respuesta)
END IF
END IF
END IF
OUTPUT TO REPORT imp_factura(factura.*,detalle.*,fecha_vencimiento)
LET idx = idx + 1
END FOREACH
IF idx > 1 THEN
FINISH REPORT imp_factura
ELSE
LET respuesta.cod_msg=404
LET respuesta.descripcion = 'ORDEN NO ENCONTRADA, DEBE COMUNICARSE CON EL DEPTO. TECNOLOGIA MARMOTECH 809-528-0650, EXT. 5280'
LET respuesta.url = 'NO TIENE'
DISCONNECT CURRENT
RETURN util.JSON.stringify(respuesta)
END IF
LET respuesta.cod_msg=200
LET respuesta.descripcion = 'GENERACION FACTURA EXITOSA ',SQLCA.sqlerrm
LET respuesta.url = 'https://ws.marmotech.com.do/facturas/',informacion.ordene clipped,".pdf"
DISCONNECT CURRENT
RETURN util.JSON.stringify(respuesta)
END FUNCTION
REPORT imp_factura(x,z,xfecha_Vence)
DEFINE x RECORD
cod_cia LIKE vetb00002.cod_cia, #DEJAR EN BLANCO
ventas LIKE vetb00002.ventas,
zona CHAR(3),
factura LIKE vetb00002.factura,
conduce LIKE vetb00002.conduce,
fecha_conduce DATE,
fecha_factura DATE,
tipo_cliente LIKE vetb00002.tipo_cliente,
sec_cliente LIKE vetb00002.sec_cliente,
nombre CHAR(30),
direccion CHAR(170),
ciudad CHAR(20),
prima_us LIKE vetb00002.prima_us,
porc_desc LIKE vetb00002.porc_desc,
cond_pago LIKE vetb00002.cond_pago, # AUTOMATICO
num_req INT, # AUTOMATICO
orden INT,
orden_externa STRING,
fecha_orden DATE,
porc_itbi LIKE vetb00002.porc_itbi,
sec_vend LIKE vetb00002.sec_vend,
nombre_vend CHAR(60),
cod_transp LIKE iptb00006.cod_transp,
sec_transp LIKE iptb00006.sec_transp,
cod_tarifa LIKE iptb00006.cod_tarifa,
nombre_tran CHAR(30),
fecha_embarque DATE,
placa_transp LIKE iptb00006.placa,
sub_total DECIMAL(12,2),
desc_valor DECIMAL(12,2),
itbis DECIMAL(12,2),
total_fact DECIMAL(12,2),
valor_envio FLOAT,
correo_electronico STRING,
metodo_pago STRING,
num_rnc,pais,telefono_casa,telefono_cel,strncf,codigo_dgii,usuario,clave,tipo_envio,referencia,contacto,
titulo_ncf
STRING,
provincia INT,
contacto_obra,telefono_contacto_obra STRING
END RECORD
DEFINE z RECORD
area SMALLINT, #AUTOMATICO
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(50),
unidad_med CHAR(5),
cantidad1,
cantidad DEC(12,5),
precio LIKE vetb00003.precio,
cantidad_2 LIKE vetb00003.cantidad_2,
monto_fact DECIMAL(12,2),
cantidad_orden DEC(12,5),
facturada DEC(12,5),
pendiente DEC(12,5),
id_kit INT,
codid INT
END RECORD,
xdireccion,chventas,descrip1,descrip2,descrip3, purbanizacion,usuarios,sucnombre,
direccion_sucursal,pubicacion,descripcion,descrip_cond_pago,descripcion_bodega,pconduce,xconduce_almacen VARCHAR(100),
ch_fecha VARCHAR(10),
filedestino,xobservacion STRING
DEFINE cod_f SMALLINT
DEFINE bonifica,pncf INTEGER
DEFINE tot_b,tot_n,tot_m,descuento DECIMAL(12,2)
DEFINE rnc CHAR(11),
vimagen BOOLEAN,
imagen BYTE,
nombre_file,simbolo VARCHAR(50),
xfecha_vence DATE
FORMAT
PAGE HEADER
LET pconduce=0
LET xconduce_almacen = 0
SELECT a.nombre,a.direccion,a.rnc,a.telefono INTO sucnombre,direccion_sucursal,p_companias.rnc,p_companias.telefono
FROM companias a WHERE a.cod_comp = 1
# CONDICION DE PAGO
LET descrip_cond_pago = NULL
SELECT a.descrip INTO descrip_cond_pago FROM vetb00012 a WHERE a.cond_pago = x.cond_pago
#BODEGA
SELECT a.descripcion INTO descripcion_bodega FROM intb00009 a WHERE cod_bodega = 4
SELECT a.descripcion,a.simbolo INTO chventas,simbolo FROM vetb00060 a WHERE a.ventas = x.ventas
SELECT a.num_rnc INTO rnc FROM vetb00004 a
WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente
LET xdireccion = descrip1 CLIPPED," ",descrip2 CLIPPED," ",purbanizacion CLIPPED," ",descrip3
{ LET vimagen=TRUE
LOCATE imagen IN MEMORY
SELECT a.firmafactura,a.nombre_file_firma INTO imagen,nombre_file FROM seg0001 a WHERE a.usuario = usuarios
LET filedestino = 'E:\\MARMOTECH\\test\\IMAGENES\\tmp\\',usuarios CLIPPED,nombre_file CLIPPED
IF imagen IS NULL THEN
LET vimagen=FALSE
ELSE
CALL imagen.writeFile(filedestino)
CALL comprimeImagen(filedestino,' -resize 200x200 ')
CALL imagen.readFile(filedestino)
END IF}
LET tot_n = x.sub_total-x.desc_valor+x.itbis+x.valor_envio
LET tot_b = x.sub_total-x.desc_valor+x.valor_envio
LET tot_m = 0
ON EVERY ROW
LET p_iptb01.factor_conv = 1
LET p_iptb01.unidad = z.unidad_med
SELECT a.factor_conv,a.unidad INTO p_iptb01.factor_conv,p_iptb01.unidad
FROM iptb00001 a
WHERE a.cod_n = z.cod_n AND a.cod_grupo = z.cod_grupo AND
a.cod_tipo = z.cod_tipo AND a.cod_sec = z.cod_sec
LET p_iptb01.factor_conv = 1
LET p_iptb01.unidad = z.unidad_med
LET descuento = (z.cantidad * z.precio)*(z.cantidad_2/100)
IF descuento IS NULL THEN
LET descuento = 0
END IF
LET z.monto_fact = (z.cantidad * z.precio) - descuento
LET ch_fecha = fecha_Vencimiento USING "dd/mm/yyyy"
PRINTX z.cod_n,z.cod_grupo,
z.cod_tipo ,z.cod_sec ,
z.cantidad,
z.unidad_med,
z.cantidad/p_iptb01.factor_conv ,
z.descrip_esp ,
z.precio ,
z.cantidad_2 ,
z.monto_fact,
sucnombre,
direccion_sucursal ,
p_companias.telefono ,
p_companias.fax,
p_companias.rnc,
x.nombre,x.tipo_cliente,
x.sec_cliente,
x.direccion ,
x.ciudad,rnc,
x.factura,
x.referencia,
x.strncf,
x.titulo_ncf,
x.orden,
x.fecha_orden,
descrip_cond_pago,
x.sec_vend ,x.nombre_vend,
x.conduce,
x.fecha_factura ,
xdireccion,
x.telefono_casa,
x.telefono_cel,
x.prima_us,
vimagen,imagen,
descripcion_bodega,
pconduce,
chventas,
xconduce_almacen,x.orden_externa,
x.valor_envio,tot_n,tot_b
PRINTX x.sub_total,
x.desc_valor,
x.porc_itbi,
x.itbis,
x.total_fact,
xobservacion,
#x.nombre_tran,
#x.placa_transp ,
# p_cedula,p_serie,
ch_fecha
END REPORT