361 lines
14 KiB
Plaintext
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
|