4183 lines
152 KiB
Plaintext
4183 lines
152 KiB
Plaintext
{
|
|
--------------------------------------------------------------------------
|
|
PROGRAMA : VEPRMT022
|
|
OBJETIVO : Este programa captura la factura comercial
|
|
REALIZADO POR : Ing. Juan Fco. Soto.
|
|
FECHA : Enero 12,1993.
|
|
MODIFICADO POR: Victor Gomez C.
|
|
FECHA : Saturday, July 07, 2001
|
|
OBJETIVO : Registrar el descuento aplicado a cada producto por separado,
|
|
se utilizaran los campos cantidad_2 y bonificacion de la tabla
|
|
vetb00003.
|
|
--------------------------------------------------------------------------
|
|
}
|
|
IMPORT os
|
|
GLOBALS
|
|
"veprgb000.4gl"
|
|
DEFINE 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 salida STRING
|
|
DEFINE pcotizacion int
|
|
DEFINE estado RECORD
|
|
nula CHAR(6),
|
|
impresa CHAR(6)
|
|
END RECORD,
|
|
att dynamic array of record
|
|
col1 string,
|
|
col2 STRING
|
|
END record
|
|
DEFINE estatus,p_impresion CHAR(1)
|
|
DEFINE porce,valor_desc,cant_vend,porcentaje_n DECIMAL (12,2)
|
|
DEFINE codigo_provincia,t_arr,kncf,num_req,xdocumento_almacen INTEGER,
|
|
xconduce_almacen INT,
|
|
documento_ref CHAR(25),exito1 BOOLEAN,
|
|
descripcion_bodega,filedestino VARCHAR(100),
|
|
pubicacion LIKE prtb00012.ubicacion,
|
|
control_cantidad, chpath CHAR(1),
|
|
simbolo CHAR(6),
|
|
pconduce int,
|
|
purbanizacion,nombre_ad CHAR(30),
|
|
pperfil smallint,
|
|
accesso CHAR(2),
|
|
num_rnc VARCHAR(25),
|
|
direccion_sucursal VARCHAR(100)
|
|
|
|
DEFINE cons_fact RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
ventas LIKE vetb00002.ventas ,
|
|
zona LIKE vetb00002.zona ,
|
|
nombre_tipo CHAR(11),
|
|
factura LIKE vetb00002.factura,
|
|
fecha_factura LIKE vetb00002.fecha_factura,
|
|
tipo_cliente LIKE vetb00002.tipo_cliente,
|
|
sec_cliente LIKE vetb00002.sec_cliente,
|
|
nombre CHAR(30),
|
|
direccion CHAR(50),
|
|
ciudad CHAR(15),
|
|
prima_us LIKE vetb00002.prima_us,
|
|
porc_desc LIKE vetb00002.porc_desc,
|
|
nombre_desc CHAR(25),
|
|
cond_pago LIKE vetb00002.cond_pago,
|
|
descrip CHAR(25),
|
|
orden int,
|
|
fecha_orden LIKE vetb00002.fecha_orden,
|
|
conduce int,
|
|
fecha_conduce LIKE vetb00002.fecha_conduce,
|
|
porc_itbi LIKE vetb00002.porc_itbi,
|
|
cod_vend int,
|
|
sec_vend int,
|
|
nombre_vend CHAR(29),
|
|
cod_transp LIKE iptb00006.cod_transp,
|
|
sec_transp LIKE iptb00006.sec_transp,
|
|
cod_tarifa LIKE iptb00006.cod_tarifa,
|
|
nombre_tran LIKE vetb00015.nombre,
|
|
fecha_embarque LIKE vetb00002.fecha_embarque,
|
|
placa_transp LIKE iptb00006.placa,
|
|
sub_total LIKE vetb00002.sub_total,
|
|
desc_valor LIKE vetb00002.monto_desc,
|
|
itbi LIKE vetb00002.monto_itbi,
|
|
total_fact LIKE vetb00002.neto
|
|
END RECORD,
|
|
cantidad_req,balance_req DEC(12,4)
|
|
|
|
DEFINE lleva_parcial,ch_itbi CHAR(1),
|
|
fecha_cotizacion,fecha_vencimiento DATE,
|
|
cuenta_arr INTEGER,
|
|
observacion CHAR(180) ,
|
|
obs1,obs2,obs3 CHAR(50),obs4 CHAR(30),
|
|
xnombre_provincia VARCHAR(100)
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(5) RETURNING impresor
|
|
|
|
CALL STARTLOG("veprmt22.txt")
|
|
#CONNECT TO "smarmotech" AS "MSSQL_C" USER usuarios USING clave
|
|
|
|
CONNECT to "smarmotech" AS "MSSQL_E" USER usuarios USING clave
|
|
|
|
SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc,a.cod_perfil
|
|
INTO localidad,sucnombre,direccion_sucursal,xnombre_provincia,
|
|
p_companias.telefono,p_companias.fax,p_companias.rnc,pperfil
|
|
FROM seg0001 a,sucursales b,vetb00020 c
|
|
WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia
|
|
|
|
IF localidad IS NULL THEN
|
|
CALL fgl_winmessage("ERROR","USUARIO NO TIENE LOCALIDAD","INFO")
|
|
EXIT PROGRAM
|
|
END IF
|
|
# LET p_companias.nombre= sucnombre
|
|
|
|
|
|
OPTIONS
|
|
FORM LINE 2,
|
|
ERROR LINE 24,
|
|
COMMENT LINE 23,
|
|
PROMPT LINE 22
|
|
|
|
CLEAR SCREEN
|
|
call ui.Interface.loadStyles("formularios")
|
|
OPEN FORM vefmmt022 FROM "vefmmt022"
|
|
DISPLAY FORM vefmmt022
|
|
SELECT a.nombre INTO p_companias.nombre FROM companias a
|
|
|
|
SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc
|
|
INTO localidad,sucnombre,direccion_sucursal,xnombre_provincia,
|
|
p_companias.telefono,p_companias.fax,p_companias.rnc
|
|
FROM seg0001 a,sucursales b,vetb00020 c
|
|
WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia
|
|
DISPLAY p_companias.nombre TO compania
|
|
DISPLAY BY NAME sucnombre
|
|
DISPLAY "E:\\MARMOTECH\\BIN320\\IMAGENES\\LOGO_DCM.PNG" TO logo_cia
|
|
MENU
|
|
ON ACTION nuevo
|
|
LET num_req = NULL
|
|
|
|
|
|
IF localidad IS NULL THEN
|
|
CALL fgl_winmessage("ERROR","USUARIO NO TIENE LOCALIDAD","INFO")
|
|
EXIT PROGRAM
|
|
END IF
|
|
# LET p_companias.nombre= sucnombre
|
|
|
|
CALL fact_det.clear()
|
|
CALL veprmt022()
|
|
CALL fact_det.clear()
|
|
ON ACTION buscar
|
|
call veprmf001()
|
|
{ ON ACTION facturadas
|
|
CALL busca_facturas()}
|
|
ON ACTION salir
|
|
exit menu
|
|
END MENU
|
|
END MAIN
|
|
|
|
FUNCTION veprmt022()
|
|
|
|
DEFINE t_valor DECIMAL(12,2)
|
|
DEFINE tipo_fact,p_cod,p_bonif,
|
|
cod_fact SMALLINT,
|
|
credito DEC(12,2)
|
|
|
|
DEFINE hoy DATE
|
|
DEFINE hice,primera,opt1,opt CHAR(1)
|
|
DEFINE tipo_f CHAR(2)
|
|
DEFINE tipo1 SMALLINT
|
|
DEFINE tot_porc1,porc_desc,tot_porc DECIMAL(8,3)
|
|
|
|
LET hoy = today
|
|
|
|
DISPLAY hoy using "dd/mm/yyyy" AT 1,68 ATTRIBUTE (blue)
|
|
|
|
LET fact_gral.fecha_factura = today
|
|
LABEL exito:
|
|
|
|
INITIALIZE salida,fact_gral.*,primera,documento_ref TO NULL
|
|
LET porc_desc = 0
|
|
LET descrip1 = NULL
|
|
LET descrip2 = NULL
|
|
LET p_bonif = NULL
|
|
LET fact_gral.cod_cia = 1
|
|
|
|
LET tot_porc1 = 0
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
LET tot_porc = 0
|
|
DISPLAY BY NAME descrip1
|
|
CALL fact_det.clear()
|
|
|
|
|
|
LABEL vuelve:
|
|
LET descrip1 = NULL
|
|
LET descrip2 = NULL
|
|
LET descrip3 = NULL
|
|
LET p_bonif = NULL
|
|
LET tot_porc1 = 0
|
|
LET t_valor = 0
|
|
LET xdocumento_almacen=NULL
|
|
LET xconduce_almacen = NULL
|
|
LET fact_gral.cond_pago = 2
|
|
LET fact_gral.porc_itbi = NULL
|
|
LET fact_gral.prima_us = 1
|
|
DISPLAY BY NAME fact_gral.porc_itbi,fact_gral.prima_us,descrip1
|
|
LET hice = "S"
|
|
LET h = 1
|
|
|
|
LABEL otravez:
|
|
INITIALIZE detalle TO NULL
|
|
LET ch_itbi = "S"
|
|
LABEL regresa:
|
|
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
|
|
INPUT BY NAME pconduce,num_req,codigodgii,fact_gral.*,documento_ref,ch_itbi,observacion WITHOUT DEFAULTS ATTRIBUTE (blue)
|
|
AFTER FIELD ch_itbi
|
|
IF ch_itbi = 'N' THEN
|
|
LET fact_gral.porc_itbi =0
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.porc_itbi
|
|
AFTER FIELD codigodgii
|
|
IF codigodgii IS NOT NULL THEN
|
|
SELECT UNIQUE a.itbis INTO ch_itbi FROM vetb00071 a
|
|
WHERE a.tipo_doc = "FT" and a.codigo_dgii = codigodgii AND
|
|
a.sucid = localidad AND disponible = "S"
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg =391
|
|
CALL msg(numero_msg)
|
|
CONTINUE INPUT
|
|
END IF
|
|
END IF
|
|
IF ch_itbi = 'N' THEN
|
|
LET fact_gral.porc_itbi=0
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.porc_itbi,ch_itbi
|
|
BEFORE INPUT
|
|
|
|
INITIALIZE detalle TO NULL
|
|
LET descripcion_bodega = NULL
|
|
CLEAR FORM
|
|
|
|
SELECT a.nombre INTO p_companias.nombre FROM companias a
|
|
|
|
SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc
|
|
INTO localidad,sucnombre,direccion_sucursal,xnombre_provincia,
|
|
p_companias.telefono,p_companias.fax,p_companias.rnc
|
|
FROM seg0001 a,sucursales b,vetb00020 c
|
|
WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia
|
|
DISPLAY p_companias.nombre TO compania
|
|
DISPLAY BY NAME sucnombre
|
|
DISPLAY "E:\\MARMOTECH\\BIN320\\IMAGENES\\LOGO_DCM.PNG" TO logo_cia
|
|
LET salida ="MA"
|
|
LET fact_gral.conduce=NULL
|
|
DISPLAY BY NAME fact_gral.conduce
|
|
|
|
|
|
CALL ccondicion()
|
|
|
|
|
|
ON KEY (F2)
|
|
IF fact_gral.orden IS NOT NULL THEN
|
|
LET codigodgii = NULL
|
|
LET descripcion = NULL
|
|
SET CONNECTION "MSSQL_E"
|
|
CALL btipo_fact(1) RETURNING codigodgii,descripcion,fecha_vencimiento
|
|
# SET CONNECTION "MSSQL_C"
|
|
LET int_flag = FALSE
|
|
DISPLAY BY NAME codigodgii
|
|
DISPLAY descripcion TO descripcion_ncf
|
|
DISPLAY BY NAME fecha_vencimiento
|
|
ELSE
|
|
NEXT FIELD orden
|
|
END IF
|
|
ON KEY (CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD(cod_tarifa)
|
|
CALL tarifas()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_tarifa
|
|
END IF
|
|
LET descrip5 = descrip6[1,15] clipped
|
|
LET descrip6 = descrip6[16,30] clipped
|
|
DISPLAY BY NAME fact_gral.cod_tarifa,descrip6 ATTRIBUTE (BOLD)
|
|
NEXT FIELD cod_tarifa
|
|
|
|
WHEN INFIELD(zona)
|
|
IF fact_gral.ventas = "1" THEN
|
|
# CALL busca_zona1()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD zona
|
|
END IF
|
|
ELSE
|
|
# CALL busca_pais()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD zona
|
|
END IF
|
|
END IF
|
|
|
|
LET p_cod = fact_gral.zona
|
|
LET fact_gral.zona = p_cod using "&&&"
|
|
DISPLAY BY NAME fact_gral.zona,descrip1 ATTRIBUTE (BOLD)
|
|
NEXT FIELD fecha_factura
|
|
|
|
WHEN INFIELD(cond_pago)
|
|
CALL condiciones()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.cond_pago ATTRIBUTE(blue)
|
|
DISPLAY BY NAME condicion.descrip ATTRIBUTE(blue)
|
|
NEXT FIELD orden
|
|
END CASE
|
|
AFTER FIELD pconduce
|
|
IF pconduce IS NOT NULL OR pconduce <> 0 THEN
|
|
# SET CONNECTION "MSSQL_C"
|
|
# SELECT a.tipo_cliente,a.sec_cliente,b.nombre,c.calle||' '||c.casa_num||' '||c.urbanizacion||' '||c.barrio,
|
|
SELECT a.tipo_cliente,a.sec_cliente,b.nombre,c.direccion_cliente,
|
|
d.cotizacion_no,a.orden,a.documento,a.conduce,c.rnc,
|
|
a.bodega
|
|
INTO fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion,
|
|
fact_gral.conduce,fact_gral.orden,documento_ref,xconduce_almacen,num_rnc,fact_gral.bodega
|
|
FROM vetb00002 a,vetb00004 b, prtb00012 d,OUTER vetb00050 c
|
|
WHERE a.factura = pconduce AND
|
|
a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente AND
|
|
a.tipo_cliente = c.tipo_cliente AND
|
|
a.sec_cliente = c.sec_cliente AND
|
|
a.cotizacion_no = c.cotizacion_no AND
|
|
a.orden = d.num_oc AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","CONDUCE NO EXISTE","INFO")
|
|
NEXT FIELD pconduce
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion,
|
|
fact_gral.orden,fact_gral.conduce,fact_gral.fecha_factura,documento_ref
|
|
# DESCRIPCION BODEGA
|
|
SELECT a.descripcion INTO descripcion_bodega
|
|
FROM intb00009 a WHERE cod_bodega = fact_gral.bodega
|
|
|
|
END IF
|
|
AFTER FIELD orden
|
|
# SET CONNECTION "MSSQL_C"
|
|
|
|
SELECT a.ventas,a.cod_provincia,a.tipo_cliente,a.sec_cliente,
|
|
a.cond_pago,
|
|
f.descrip,CONVERT(CHAR(10),a.fecha,103),a.porc_itbi,a.sec_vend,
|
|
f.dias,b.num_oc,c.nombre,c.limite_credito,c.cod_provincia,c.telefono,
|
|
d.nom1_emp, d.apell1_emp,a.cotizacion_no,CONVERT(CHAR(10),b.fecha_oc,103),
|
|
b.nombre_file,a.direccion_cliente,a.rnc
|
|
INTO fact_gral.ventas,fact_gral.zona,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.cond_pago,condicion.descrip,
|
|
fecha_cotizacion,fact_gral.porc_itbi,
|
|
fact_gral.sec_vend,condicion.dias,fact_gral.orden,
|
|
fact_gral.nombre,credito,codigo_provincia,
|
|
cliente_bas.telefono,
|
|
descrip5,descrip6,fact_gral.conduce,fact_gral.fecha_orden,
|
|
documento_ref,fact_gral.direccion,num_rnc
|
|
FROM vetb00012 f,vetb00050 a,prtb00012 b,vetb00004 c,adtb00003 d
|
|
WHERE b.num_oc = fact_gral.orden AND
|
|
a.cotizacion_no = b.cotizacion_no AND
|
|
b.tipo_cliente = c.tipo_cliente AND
|
|
b.sec_cliente = c.sec_cliente AND
|
|
a.sec_vend = d.num_emp AND
|
|
b.status_t IS NULL AND
|
|
a.cond_pago = f.cond_pago
|
|
IF status = notfound then
|
|
CALL msg(3)
|
|
NEXT FIELD orden
|
|
end IF
|
|
|
|
LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 CLIPPED
|
|
|
|
|
|
|
|
SELECT a.sec_vend FROM vetb00084 a WHERE a.sec_vend = fact_gral.sec_vend
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","VENDEDOR NO EXISTE EN LA TABLA VETB00084, FAVOR DE NOTIFICAR A INFORMATICA","INFO")
|
|
NEXT FIELD conduce
|
|
END IF
|
|
|
|
LET purbanizacion = NULL
|
|
{ COLOQUE LA DIRECCION DEL CLIENTE, YA QUE VOY A UTILIZAR LA DIRECCION DE FACTURACION
|
|
QUE ADICIONE EN LA TABLA VETB00050 FECHA ACTUALIZACION 21/05/2018
|
|
|
|
SELECT b.calle,b.casa_num,b.urbanizacion,b.barrio
|
|
INTO descrip1,descrip2,purbanizacion,descrip3
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = fact_gral.tipo_cliente AND
|
|
b.sec_cliente = fact_gral.sec_cliente
|
|
|
|
}
|
|
SELECT d.nombre_provincia INTO fact_gral.ciudad
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
|
|
|
|
# LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ",
|
|
# descrip3 clipped,purbanizacion
|
|
DISPLAY BY NAME fact_gral.*,fecha_cotizacion,documento_ref
|
|
|
|
AFTER FIELD conduce
|
|
IF fact_gral.conduce IS not NULL THEN
|
|
|
|
# informacion de la cotizacion
|
|
|
|
SELECT a.ventas,a.cod_provincia,a.tipo_cliente,a.sec_cliente,
|
|
a.cond_pago,
|
|
f.descrip,CONVERT(CHAR(10),a.fecha,103),a.porc_itbi,a.sec_vend,
|
|
f.dias,b.num_oc,b.nombre_file,a.direccion_facturacion,a.rnc
|
|
INTO fact_gral.ventas,fact_gral.zona,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.cond_pago,condicion.descrip,
|
|
fecha_cotizacion,fact_gral.porc_itbi,
|
|
fact_gral.sec_vend,condicion.dias,fact_gral.orden,
|
|
documento_ref,fact_gral.direccion,num_rnc
|
|
FROM vetb00012 f,vetb00050 a,prtb00012 b
|
|
WHERE a.cotizacion_no = fact_gral.conduce AND
|
|
a.cotizacion_no = b.cotizacion_no AND
|
|
b.status_t IS NULL AND f.status_t IS NULL AND
|
|
a.cond_pago = f.cond_pago
|
|
IF status = notfound then
|
|
CALL msg(3)
|
|
NEXT FIELD conduce
|
|
end IF
|
|
|
|
DISPLAY BY NAME fact_gral.cond_pago
|
|
LET tipo1 = fact_gral.zona
|
|
SELECT unique descrip INTO descrip1 FROM vetb00008
|
|
WHERE cod_zona = tipo1
|
|
|
|
let fact_gral.zona = tipo1 using "&&&"
|
|
SELECT a.nombre,a.limite_credito,a.cod_provincia,a.telefono
|
|
INTO fact_gral.nombre,credito,codigo_provincia,
|
|
cliente_bas.telefono
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND
|
|
a.sec_cliente = fact_gral.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
LET nombre_ad = NULL
|
|
SELECT a.solicitante_s INTO nombre_ad FROM vetb00006 a
|
|
WHERE a.tipo_cliente_s = fact_gral.tipo_cliente AND
|
|
a.sec_cliente_s = fact_gral.sec_cliente
|
|
|
|
SELECT nom1_emp, apell1_emp INTO descrip5,descrip6
|
|
FROM adtb00003 WHERE num_emp = fact_gral.sec_vend
|
|
|
|
SELECT a.sec_vend FROM vetb00084 a WHERE a.sec_vend = fact_gral.sec_vend
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","VENDEDOR NO EXISTE EN LA TABLA VETB00084, FAVOR DE NOTIFICAR A INFORMATICA","INFO")
|
|
NEXT FIELD conduce
|
|
END IF
|
|
LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 CLIPPED
|
|
DISPLAY BY NAME fact_gral.nombre_vend,documento_ref
|
|
|
|
LET fact_gral.nombre = fact_gral.nombre CLIPPED," ",nombre_ad
|
|
DISPLAY BY NAME fact_gral.nombre ATTRIBUTE (blue)
|
|
LET descrip1 = NULL
|
|
LET descrip3 = NULL
|
|
SELECT prima
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00019 WHERE disponible = "S" AND status_t IS NULL
|
|
|
|
LET purbanizacion = NULL
|
|
{
|
|
SELECT b.calle,b.casa_num,b.urbanizacion,b.barrio
|
|
INTO descrip1,descrip2,purbanizacion,descrip3
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = fact_gral.tipo_cliente AND
|
|
b.sec_cliente = fact_gral.sec_cliente
|
|
|
|
}
|
|
SELECT d.nombre_provincia INTO fact_gral.ciudad
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
|
|
|
|
# LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ",
|
|
# descrip3 clipped,purbanizacion
|
|
|
|
DISPLAY BY NAME fact_gral.direccion ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.ciudad ATTRIBUTE (blue)
|
|
DISPLAY BY NAME fact_gral.prima_us
|
|
LET porcentaje_n = 0
|
|
SELECT a.porc_negocio INTO porcentaje_n
|
|
FROM vetb00086 a
|
|
WHERE a.cotizacion_no = fact_gral.conduce
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET porcentaje_n = 0
|
|
END IF
|
|
LET pubicacion = NULL
|
|
SELECT UNIQUE CONVERT(CHAR(10),a.fecha_oc,103),a.ubicacion,a.num_oc,nombre_file
|
|
INTO
|
|
fact_gral.fecha_orden,pubicacion,fact_gral.orden,documento_ref FROM prtb00012 a
|
|
WHERE a.num_oc = fact_gral.orden AND
|
|
a.tipo_cliente = fact_gral.tipo_cliente AND
|
|
a.sec_cliente = fact_gral.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
display by name fact_gral.*,porcentaje_n,fecha_cotizacion
|
|
end IF
|
|
{ ESTA EN COMENTARIO PORQUE NO SE ESTA UTILIZANDO 9/12/2015
|
|
AFTER FIELD num_req
|
|
IF num_req IS NOT NULL THEN
|
|
SELECT a.num_req FROM cctb00025 a
|
|
WHERE a.num_rea = num_req AND a.estado = 'AUTORIZADA' AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","REQUISICION NO EXISTE O NO ESTA AUTORIZADA","INFO")
|
|
NEXT FIELD num_req
|
|
END IF
|
|
END IF
|
|
}
|
|
AFTER FIELD ventas
|
|
IF fact_gral.ventas IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
SELECT prima
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00019 WHERE disponible = "S" AND status_t IS null
|
|
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET p_codigo = 30
|
|
LET tipo_f = "FT"
|
|
LET tipo_fact = 30
|
|
LET fact_gral.prima_us = 1
|
|
ELSE
|
|
IF fact_gral.ventas = "2" THEN
|
|
LET tipo_fact = 31
|
|
LET p_codigo = 31
|
|
LET tipo_f = "FE"
|
|
|
|
END IF
|
|
IF fact_gral.ventas = "3" THEN
|
|
LET tipo_fact = 55
|
|
LET p_codigo = 55
|
|
LET tipo_f = "FE"
|
|
END IF
|
|
|
|
IF fact_gral.ventas = "4" THEN
|
|
SELECT porciento
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00019 WHERE disponible = "S" AND status_t IS null
|
|
|
|
|
|
LET tipo_fact = 56
|
|
LET p_codigo = 56
|
|
LET tipo_f = "FE"
|
|
END IF
|
|
|
|
|
|
END IF
|
|
|
|
IF ch_itbi = "S" THEN
|
|
|
|
SELECT prima,@itbi,porciento
|
|
INTO fact_gral.prima_us,fact_gral.porc_itbi,porce
|
|
FROM vetb00019 WHERE disponible = "S" AND status_t IS null
|
|
|
|
IF fact_gral.ventas = "1" THEN
|
|
IF fact_gral.porc_itbi IS NULL THEN
|
|
LET fact_gral.porc_itbi = 0
|
|
END IF
|
|
|
|
LET fact_gral.prima_us = 1
|
|
ELSE
|
|
IF fact_gral.ventas = "2" THEN
|
|
LET fact_gral.porc_itbi = NULL
|
|
IF fact_gral.prima_us IS NULL THEN
|
|
SELECT prima
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00019 WHERE disponible = "S" AND status_t IS null
|
|
|
|
|
|
END IF
|
|
|
|
|
|
END IF
|
|
|
|
IF fact_gral.ventas = "4" THEN
|
|
LET fact_gral.porc_itbi = NULL
|
|
IF fact_gral.prima_us IS NULL THEN
|
|
SELECT porciento
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00019 WHERE disponible = "S"
|
|
|
|
|
|
END IF
|
|
LET simbolo = "EURO$"
|
|
|
|
|
|
END IF
|
|
|
|
END IF
|
|
END IF
|
|
if ch_itbi = 'N' then
|
|
let fact_gral.porc_itbi=0
|
|
end if
|
|
DISPLAY BY NAME fact_gral.porc_desc,fact_gral.prima_us,
|
|
fact_gral.porc_itbi
|
|
DISPLAY BY NAME fact_gral.ventas
|
|
DISPLAY BY NAME descrip1
|
|
|
|
AFTER FIELD porc_desc
|
|
IF fact_gral.porc_desc < 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD zona
|
|
END IF
|
|
|
|
AFTER FIELD cond_pago
|
|
IF fact_gral.cond_pago IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cond_pago
|
|
END IF
|
|
|
|
BEFORE FIELD porc_itbi
|
|
IF fact_gral.ventas = "2" THEN
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
|
|
AFTER FIELD sec_vend
|
|
IF fact_gral.sec_vend IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
|
|
IF fact_gral.cond_pago != 1 OR fact_gral.sec_vend !=8888 THEN
|
|
SELECT nom1_emp, apell1_emp INTO descrip5,descrip6
|
|
FROM adtb00003 WHERE num_emp = fact_gral.sec_vend
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_vend
|
|
END IF
|
|
|
|
LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 clipped
|
|
DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (blue)
|
|
|
|
END IF
|
|
|
|
BEFORE FIELD cod_transp
|
|
LET fact_gral.nombre_tran = NULL
|
|
LET p_cedula = NULL
|
|
LET p_serie = NULL
|
|
|
|
IF fact_gral.cond_pago = 1 or fact_gral.ventas = "2" THEN
|
|
NEXT FIELD fecha_embarque
|
|
END IF
|
|
|
|
AFTER FIELD cod_transp
|
|
IF fact_gral.cod_transp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
# NEXT FIELD cod_transp
|
|
END IF
|
|
|
|
AFTER FIELD sec_transp
|
|
IF fact_gral.sec_transp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD sec_transp
|
|
ELSE
|
|
|
|
LET fact_gral.nombre_tran = NULL
|
|
LET p_cedula = NULL
|
|
LET p_serie = NULL
|
|
SELECT a.nombre,a.cedula,a.serie
|
|
INTO fact_gral.nombre_tran,p_cedula,p_serie FROM vetb00015 a
|
|
WHERE a.cod_transp = fact_gral.cod_transp AND
|
|
a.sec_transp = fact_gral.sec_transp AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS < 0 THEN
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
ELSE
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_transp
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue)
|
|
END IF
|
|
|
|
AFTER FIELD cod_tarifa
|
|
IF fact_gral.cod_tarifa IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD cod_tarifa
|
|
ELSE
|
|
LET descrip6 = NULL
|
|
SELECT descrip INTO descrip6 FROM vetb00023
|
|
WHERE cod_tarifa = fact_gral.cod_tarifa AND status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_tarifa
|
|
END IF
|
|
LET descrip5 = descrip6[1,15] clipped
|
|
LET descrip6 = descrip6[16,30] clipped
|
|
DISPLAY BY NAME descrip5,descrip6 ATTRIBUTE (BOLD)
|
|
END IF
|
|
|
|
BEFORE FIELD fecha_factura
|
|
LET fact_gral.fecha_factura = hoy
|
|
DISPLAY BY NAME fact_gral.fecha_factura
|
|
AFTER FIELD fecha_factura
|
|
CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD fecha_factura
|
|
END IF
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
DELETE FROM vetb00042 WHERE factura = fact_gral.factura AND
|
|
cod_mov = p_codigo
|
|
RETURN
|
|
END IF
|
|
IF fact_gral.fecha_factura IS NULL THEN
|
|
LET fact_gral.fecha_factura = TODAY
|
|
DISPLAY BY NAME fact_gral.fecha_factura
|
|
END IF
|
|
|
|
# Control orden de pedidos
|
|
SELECT UNIQUE CONVERT(CHAR(10),a.fecha_oc,103),a.ubicacion,a.num_oc,a.cotizacion_no INTO
|
|
fact_gral.fecha_orden,pubicacion,fact_gral.orden,fact_gral.conduce FROM prtb00012 a
|
|
WHERE a.num_oc = fact_gral.orden AND
|
|
a.tipo_cliente = fact_gral.tipo_cliente AND
|
|
a.sec_cliente = fact_gral.sec_cliente AND
|
|
a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","ORDEN PEDIDOS NO EXISTE","INFO")
|
|
NEXT FIELD orden
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.fecha_orden,fact_gral.orden,fact_gral.conduce
|
|
LET p_fechas = fact_gral.fecha_factura
|
|
LET hoy = fact_gral.fecha_factura
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
#NEXT FIELD fecha_factura
|
|
END IF
|
|
IF fact_gral.ventas IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ventas
|
|
END IF
|
|
|
|
IF ch_itbi = "S" THEN
|
|
SELECT prima,@itbi,porciento
|
|
INTO fact_gral.prima_us,fact_gral.porc_itbi,porce
|
|
FROM vetb00019 WHERE disponible = "S" AND status_t IS null
|
|
DISPLAY " 1 itbis ",fact_gral.porc_itbi
|
|
|
|
IF fact_gral.ventas = "1" THEN
|
|
IF fact_gral.porc_itbi IS NULL THEN
|
|
LET fact_gral.porc_itbi = 0
|
|
END IF
|
|
LET tipo_fact = 30
|
|
LET tipo_f = "FT"
|
|
|
|
LET fact_gral.prima_us = 1
|
|
ELSE
|
|
IF fact_gral.ventas = "3" THEN
|
|
|
|
ELSE
|
|
DISPLAY " 3 itbis ",fact_gral.porc_itbi," ventas ",fact_gral.ventas
|
|
LET fact_gral.porc_itbi = NULL
|
|
IF fact_gral.prima_us IS NULL THEN
|
|
LET fact_gral.prima_us = 1
|
|
END IF
|
|
|
|
LET tipo_fact = 31
|
|
LET tipo_f = "FE"
|
|
END IF
|
|
END IF
|
|
|
|
|
|
END IF
|
|
IF fact_gral.prima_us IS NULL THEN
|
|
LET numero_msg = 87
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
DISPLAY BY NAME fact_gral.prima_us,fact_gral.porc_itbi
|
|
DISPLAY BY NAME fact_gral.ventas
|
|
DISPLAY BY NAME descrip1
|
|
|
|
IF fact_gral.sec_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
# SET CONNECTION "MSSQL_C"
|
|
SELECT a.paga_itbis INTO control_cantidad FROM vetb00060 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente
|
|
# FORZANDO EL CONTROL DE LA CANTIDAD
|
|
LET control_cantidad = 'S'
|
|
|
|
# Control Conduce
|
|
SET CONNECTION "MSSQL_E"
|
|
|
|
SELECT a.factura_c FROM vetb00002 a
|
|
WHERE a.factura_c = pconduce AND a.status_t IS NULL
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","CONDUCE YA TIENE FACTURA","INFO")
|
|
NEXT FIELD pconduce
|
|
END IF
|
|
|
|
SELECT DISTINCT a.orden FROM vetb00002 a
|
|
WHERE a.orden = fact_gral.orden AND
|
|
a.sucid <> localidad AND
|
|
a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","ORDEN HA SIDO FACTURADA POR UNA LOCALIDAD","INFO")
|
|
NEXT FIELD orden
|
|
END IF
|
|
SELECT a.tipo_cliente FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND
|
|
a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","CLIENTE NO EXISTE EN BASE DE DATOS, CONSULTE ADMINISTRADOR","INFO")
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
#CALL detalles()
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
LET tot_porc = 0
|
|
|
|
# SET CONNECTION "MSSQL_C"
|
|
LABEL alla:
|
|
IF num_req IS NULL THEN
|
|
IF pconduce IS NULL AND fact_gral.orden IS NOT NULL THEN
|
|
DECLARE buscame CURSOR FOR
|
|
SELECT unique a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med,
|
|
a.cantidad,d.precio,d.porc_desc,d.id_kit
|
|
FROM prtb00013 a,iptb00002 b,prtb00012 c,vetb00051 d
|
|
WHERE c.cotizacion_no = fact_gral.conduce AND
|
|
a.num_oc = fact_gral.orden AND
|
|
a.num_oc = c.num_oc AND
|
|
c.cotizacion_no = d.cotizacion_no AND
|
|
a.area = d.area 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 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
|
|
UNION
|
|
SELECT unique a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med,
|
|
a.cantidad,d.precio,d.porc_desc,d.id_kit
|
|
FROM prtb00013 a,iptb00002 b,prtb00012 c,vetb00031 d
|
|
WHERE c.cotizacion_no = fact_gral.conduce AND
|
|
a.num_oc = fact_gral.orden AND
|
|
a.num_oc = c.num_oc AND
|
|
c.cotizacion_no = d.cotizacion_no AND
|
|
a.area = d.area 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 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
|
|
|
|
LET idx = 1
|
|
FOREACH buscame INTO fact_det[idx].area,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].descrip_esp,
|
|
fact_det[idx].unidad_med,
|
|
fact_det[idx].cantidad,
|
|
fact_det[idx].precio,
|
|
fact_det[idx].cantidad_2,
|
|
fact_det[idx].kit_id
|
|
|
|
|
|
IF porcentaje_n > 0 THEN
|
|
LET fact_det[idx].precio = fact_det[idx].precio *(porcentaje_n /100)
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
IF pconduce IS NOT NULL THEN
|
|
|
|
DECLARE busca_factura CURSOR FOR
|
|
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med,
|
|
a.cantidad,a.precio,a.cantidad_2,a.id_kit
|
|
FROM vetb00003 a,iptb00002 b
|
|
WHERE a.factura = pconduce 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
|
|
|
|
LET idx = 1
|
|
FOREACH busca_factura INTO fact_det[idx].area,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].descrip_esp,
|
|
fact_det[idx].unidad_med,
|
|
fact_det[idx].cantidad,
|
|
fact_det[idx].precio,
|
|
fact_det[idx].cantidad_2
|
|
|
|
|
|
IF porcentaje_n > 0 THEN
|
|
LET fact_det[idx].precio = fact_det[idx].precio *(porcentaje_n /100)
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
ELSE
|
|
DECLARE busca_req CURSOR FOR
|
|
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med,
|
|
SUM(a.cantidad),a.precio,SUM(a.cantidad)
|
|
FROM cctb00026 a,iptb00002 b
|
|
WHERE a.num_req = num_req 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.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med,
|
|
a.precio
|
|
LET idx = 1
|
|
FOREACH busca_req INTO fact_det[idx].area,
|
|
fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,
|
|
fact_det[idx].descrip_esp,
|
|
fact_det[idx].unidad_med,
|
|
fact_det[idx].cantidad,
|
|
fact_det[idx].precio,
|
|
fact_det[idx].cantidad_2
|
|
LET cantidad_req = 0
|
|
LET balance_req = 0
|
|
SELECT SUM(a.cantidad) INTO cantidad_req
|
|
FROM vetb00092 a
|
|
WHERE a.num_req = num_req AND
|
|
a.area = fact_det[idx].area AND
|
|
a.cod_n = fact_det[idx].cod_n AND
|
|
a.cod_grupo = fact_det[idx].cod_grupo AND
|
|
a.cod_tipo = fact_det[idx].cod_tipo AND
|
|
a.cod_sec = fact_det[idx].cod_sec AND
|
|
a.status_t IS NULL
|
|
|
|
LET balance_req = fact_det[idx].cantidad_2 - cantidad_req
|
|
IF balance_req <=0 THEN
|
|
CONTINUE FOREACH
|
|
END IF
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
IF idx = 1 THEN
|
|
CALL fgl_winmessage("ERROR","REQUISICION NO TIENE PENDIENTES POR FACTURAR, FAVOR REVISAR","INFO")
|
|
GOTO regresa
|
|
END IF
|
|
|
|
END IF
|
|
|
|
SET CONNECTION "MSSQL_E"
|
|
# IMPORTACION DATOS
|
|
{ LET filedestino = NULL
|
|
SELECT DISTINCT a.num_oc FROM prtb00013 a WHERE a.num_oc = fact_gral.orden
|
|
IF STATUS = NOTFOUND THEN
|
|
# EXPORTAR DATA DESDE EL C
|
|
|
|
SET CONNECTION "MSSQL_C"
|
|
CALL os.Path.separator() RETURNING chpath
|
|
LET filedestino = "C:\\USERS\\SISTEMA\\MARMOTECH\\\IMPORT"
|
|
LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&"
|
|
|
|
CALL os.Path.mkdir(filedestino CLIPPED) RETURNING exito1
|
|
|
|
LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&","-01.txt"
|
|
UNLOAD TO filedestino SELECT a.ventas,a.cotizacion_no,a.num_oc,
|
|
a.tipo_cliente,a.sec_cliente,a.nombre_file,a.sec_Vend,a.direccion,a.telefono,
|
|
a.cond_pago,a.itbis,a.ubicacion,a.cerrada,
|
|
a.observacion,a.nombre_file2,a.us_crea
|
|
|
|
FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL
|
|
|
|
LET filedestino = "C:\\USERS\\SISTEMA\\MARMOTECH\\\IMPORT"
|
|
LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&",
|
|
chpath,fact_gral.orden USING "&&&&&&","-02.txt"
|
|
UNLOAD TO filedestino SELECT num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,precio,id_kit
|
|
FROM prtb00013 WHERE num_oc = fact_gral.orden
|
|
|
|
# ADICIONA DATA DESDE EN EL E
|
|
SET CONNECTION "MSSQL_E"
|
|
DELETE FROM prtb00012 WHERE num_oc = fact_gral.orden
|
|
DELETE FROM prtb00013 WHERE num_oc = fact_gral.orden
|
|
|
|
LET filedestino = "C:\\USERS\\SISTEMA\\MARMOTECH\\\IMPORT"
|
|
LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&",
|
|
chpath,fact_gral.orden USING "&&&&&&","-01.txt"
|
|
|
|
LOAD FROM filedestino INSERT INTO prtb00012 (ventas,cotizacion_no,num_oc,
|
|
tipo_cliente,sec_cliente,nombre_file,sec_Vend,direccion,telefono,
|
|
cond_pago,itbis,ubicacion,cerrada,
|
|
observacion,nombre_file2,us_crea)
|
|
|
|
LET filedestino = "C:\\USERS\\SISTEMA\\MARMOTECH\\\IMPORT"
|
|
LET filedestino = filedestino CLIPPED,chpath,fact_gral.orden USING "&&&&&&",
|
|
chpath,fact_gral.orden USING "&&&&&&","-02.txt"
|
|
|
|
LOAD FROM filedestino INSERT INTO prtb00013 (num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,precio,id_kit)
|
|
|
|
|
|
END IF}
|
|
SET CONNECTION "MSSQL_E"
|
|
CALL set_count(idx-1)
|
|
INPUT ARRAY fact_det WITHOUT DEFAULTS FROM s_fact.*
|
|
BEFORE INPUT
|
|
{ IF pconduce IS NULL THEN
|
|
call dialog.setCellAttributes(att)
|
|
IF control_cantidad = "S" THEN
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
CALL control_cotizacion(fact_det[idx].area,fact_det[idx].cod_n,fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,fact_det[idx].cod_sec,
|
|
fact_det[idx].cantidad,fact_gral.orden) RETURNING xverdad,
|
|
fact_det[idx].cantidad_orden,
|
|
fact_det[idx].pendiente,
|
|
fact_det[idx].facturada
|
|
|
|
LET fact_det[idx].pendiente =fact_det[idx].cantidad_orden-fact_det[idx].facturada
|
|
IF xverdad THEN
|
|
DISPLAY fact_det[idx].cantidad TO s_fact[idx].cantidad ATTRIBUTE(RED)
|
|
DISPLAY fact_det[idx].cantidad_orden TO s_fact[idx].cantidad_orden
|
|
DISPLAY fact_det[idx].pendiente TO s_fact[idx].pendiente
|
|
DISPLAY fact_det[idx].facturada TO s_fact[idx].facturada ATTRIBUTE(BLACK)
|
|
ELSE
|
|
DISPLAY fact_det[idx].cantidad TO s_fact[idx].cantidad ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[idx].cantidad_orden TO s_fact[idx].cantidad_orden ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[idx].pendiente TO s_fact[idx].pendiente ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[idx].facturada TO s_fact[idx].facturada ATTRIBUTE(BLACK)
|
|
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
END IF}
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
AFTER ROW
|
|
LET t_arr = arr_count()
|
|
CALL after_all()
|
|
{
|
|
ON KEY (CONTROL-W)
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
CASE
|
|
WHEN INFIELD (cod_n)
|
|
CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET fact_det[curr].cod_n = pterminado.cod_n
|
|
LET fact_det[curr].cod_grupo = pterminado.cod_grupo
|
|
LET fact_det[curr].cod_tipo = pterminado.cod_tipo
|
|
LET fact_det[curr].cod_sec = pterminado.cod_sec
|
|
|
|
CALL repite_codigo()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET verdad = NULL
|
|
CALL precios()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
|
|
SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a,OUTER iptb00006 b
|
|
WHERE a.cod_n = fact_det[curr].cod_n AND
|
|
a.cod_grupo = fact_det[curr].cod_grupo AND
|
|
a.cod_tipo = fact_det[curr].cod_tipo AND
|
|
a.cod_sec = fact_det[curr].cod_sec AND
|
|
b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND
|
|
b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND
|
|
a.status_t IS NULL AND b.status_t IS NULL
|
|
GROUP BY a.descrip_esp,a.unidad_med
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
|
|
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
|
|
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
|
|
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
|
|
DISPLAY fact_det[curr].descrip_esp TO s_fact[scr_l].descrip_esp
|
|
DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med
|
|
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
|
|
|
|
WHEN INFIELD (cod_grupo)
|
|
# CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET fact_det[curr].cod_n = pterminado.cod_n
|
|
LET fact_det[curr].cod_grupo = pterminado.cod_grupo
|
|
LET fact_det[curr].cod_tipo = pterminado.cod_tipo
|
|
LET fact_det[curr].cod_sec = pterminado.cod_sec
|
|
|
|
LET verdad = NULL
|
|
CALL precios()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a, OUTER iptb00006 b
|
|
WHERE a.cod_n = fact_det[curr].cod_n AND
|
|
a.cod_grupo = fact_det[curr].cod_grupo AND
|
|
a.cod_tipo = fact_det[curr].cod_tipo AND
|
|
a.cod_sec = fact_det[curr].cod_sec AND
|
|
b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND
|
|
b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND
|
|
a.status_t IS NULL AND b.status_t IS NULL GROUP BY 1,2
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
|
|
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
|
|
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
|
|
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
|
|
DISPLAY fact_det[curr].descrip_esp TO s_fact[scr_l].descrip_esp
|
|
DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med
|
|
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
|
|
|
|
WHEN INFIELD (cod_tipo)
|
|
# CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET fact_det[curr].cod_n = pterminado.cod_n
|
|
LET fact_det[curr].cod_grupo = pterminado.cod_grupo
|
|
LET fact_det[curr].cod_tipo = pterminado.cod_tipo
|
|
LET fact_det[curr].cod_sec = pterminado.cod_sec
|
|
|
|
LET verdad = NULL
|
|
CALL precios()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a, OUTER iptb00006 b
|
|
WHERE a.cod_n = fact_det[curr].cod_n AND
|
|
a.cod_grupo = fact_det[curr].cod_grupo AND
|
|
a.cod_tipo = fact_det[curr].cod_tipo AND
|
|
a.cod_sec = fact_det[curr].cod_sec AND
|
|
b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND
|
|
b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND
|
|
a.status_t IS NULL AND b.status_t IS NULL GROUP BY 1,2
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
|
|
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
|
|
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
|
|
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
|
|
DISPLAY fact_det[curr].descrip_esp TO s_fact[scr_l].descrip_esp
|
|
DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med
|
|
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
|
|
|
|
WHEN INFIELD (cod_sec)
|
|
# CALL busca_pt()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET fact_det[curr].cod_n = pterminado.cod_n
|
|
LET fact_det[curr].cod_grupo = pterminado.cod_grupo
|
|
LET fact_det[curr].cod_tipo = pterminado.cod_tipo
|
|
LET fact_det[curr].cod_sec = pterminado.cod_sec
|
|
|
|
LET verdad = NULL
|
|
CALL precios()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a, OUTER iptb00006 b
|
|
WHERE a.cod_n = fact_det[curr].cod_n AND
|
|
a.cod_grupo = fact_det[curr].cod_grupo AND
|
|
a.cod_tipo = fact_det[curr].cod_tipo AND
|
|
a.cod_sec = fact_det[curr].cod_sec AND
|
|
b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND
|
|
b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND
|
|
a.status_t IS NULL AND b.status_t IS NULL GROUP BY 1,2
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n
|
|
DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo
|
|
DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo
|
|
DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec
|
|
DISPLAY fact_det[curr].descrip_esp TO s_fact[scr_l].descrip_esp
|
|
DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med
|
|
DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio
|
|
|
|
END CASE
|
|
}
|
|
|
|
|
|
AFTER FIELD cod_sec
|
|
LET curr = arr_curr()
|
|
IF fact_det[curr].cod_n IS NOT NULL AND
|
|
fact_det[curr].cod_grupo IS NOT NULL AND
|
|
fact_det[curr].cod_tipo IS NOT NULL AND
|
|
fact_det[curr].cod_sec IS NOT NULL THEN
|
|
|
|
# Busca la descripcion del producto con su existencia
|
|
LET fact_det[curr].descrip_esp = NULL
|
|
LET fact_det[curr].unidad_med = NULL
|
|
|
|
LET p_existencia = 0
|
|
SELECT a.descrip_esp,a.unidad_med
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = fact_det[curr].cod_n AND
|
|
a.cod_grupo = fact_det[curr].cod_grupo AND
|
|
a.cod_tipo = fact_det[curr].cod_tipo AND
|
|
a.cod_sec = fact_det[curr].cod_sec AND
|
|
a.status_t IS NULL
|
|
GROUP BY a.descrip_esp,a.unidad_med
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
# BUSCA LA MARCA DEL PRODUCTO
|
|
IF p_existencia IS NULL THEN
|
|
LET p_existencia = 0
|
|
END IF
|
|
|
|
LET verdad = NULL
|
|
#CALL precios()
|
|
#IF verdad = "S" THEN
|
|
# NEXT FIELD cod_n
|
|
#END IF
|
|
DISPLAY fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
fact_det[curr].precio
|
|
TO s_fact[scr_l].descrip_esp,s_fact[scr_l].unidad_med,
|
|
s_fact[scr_l].precio
|
|
|
|
AFTER FIELD cantidad
|
|
{IF fact_det[curr].cod_n IS NOT NULL AND
|
|
fact_det[curr].cod_grupo IS NOT NULL AND
|
|
fact_det[curr].cod_tipo IS NOT NULL AND
|
|
fact_det[curr].cod_sec IS NOT NULL THEN
|
|
|
|
IF control_cantidad = "S" THEN
|
|
CALL control_cotizacion(fact_det[curr].area, fact_Det[curr].cod_n,fact_det[curr].cod_grupo,fact_det[curr].cod_tipo,fact_det[curr].cod_sec,fact_det[curr].cantidad,fact_gral.orden)
|
|
RETURNING xverdad,fact_det[curr].cantidad_orden,fact_det[curr].pendiente,fact_det[curr].facturada
|
|
|
|
LET fact_det[idx].pendiente =fact_det[idx].cantidad_orden-fact_det[idx].facturada
|
|
DISPLAY fact_det[curr].facturada TO s_fact[scr_l].facturada ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[curr].cantidad_orden TO s_fact[scr_l].cantidad_orden ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[curr].pendiente TO s_fact[scr_l].pendiente ATTRIBUTE(BLACK)
|
|
|
|
IF xverdad THEN
|
|
CALL fgl_winmessage("ERROR","INCLUYENDO ESTA FACTURA, LA CANTIDAD EXCEDE A LA CANTIDAD ORDENADA","INFO")
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END IF}
|
|
|
|
AFTER FIELD cantidad_2 #-> Aqui se digita el % de descto. al producto.
|
|
IF fact_det[curr].cod_n IS NOT NULL AND
|
|
fact_det[curr].cod_grupo IS NOT NULL AND
|
|
fact_det[curr].cod_tipo IS NOT NULL AND
|
|
fact_det[curr].cod_sec IS NOT NULL THEN
|
|
LET verdad = "N"
|
|
CALL repite_codigo()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
IF fact_det[curr].cantidad_2 IS NULL THEN
|
|
LET fact_det[curr].cantidad_2 = 0
|
|
END IF
|
|
|
|
IF fact_det[curr].precio IS NULL THEN
|
|
LET fact_det[curr].precio = 0
|
|
END IF
|
|
|
|
IF fact_det[curr].cantidad IS NOT NULL THEN
|
|
LET fact_det[curr].monto_fact = fact_det[curr].cantidad * fact_det[curr].precio
|
|
|
|
IF fact_det[curr].cantidad_2 > 0 THEN #-> calcula el valor en descuento para cada articulo vg
|
|
LET valor_desc = 0
|
|
LET valor_desc = fact_det[curr].monto_fact * (fact_det[curr].cantidad_2 / 100)
|
|
LET fact_gral.desc_valor = fact_gral.desc_valor + valor_desc
|
|
LET fact_det[curr].monto_fact = fact_det[curr].monto_fact - valor_desc
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY fact_det[curr].monto_fact to s_fact[scr_l].monto_fact
|
|
|
|
AFTER INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
DELETE FROM vetb00042 WHERE factura = fact_gral.factura AND
|
|
cod_mov = p_codigo
|
|
RETURN
|
|
END IF
|
|
IF ch_itbi = 'N' THEN
|
|
LET fact_gral.porc_itbi =0
|
|
END IF
|
|
DISPLAY BY NAME fact_gral.porc_itbi
|
|
|
|
{ IF pconduce IS NULL THEN
|
|
call dialog.setCellAttributes(att)
|
|
IF control_cantidad = "S" THEN
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
CALL control_cotizacion(fact_det[idx].area, fact_Det[idx].cod_n,fact_det[idx].cod_grupo,
|
|
fact_det[idx].cod_tipo,fact_det[idx].cod_sec,
|
|
fact_det[idx].cantidad,fact_gral.orden) RETURNING xverdad,
|
|
fact_det[idx].cantidad_orden,
|
|
fact_det[idx].pendiente,
|
|
fact_det[idx].facturada
|
|
|
|
LET fact_det[idx].pendiente =fact_det[idx].cantidad_orden-fact_det[idx].facturada
|
|
|
|
IF xverdad THEN
|
|
DISPLAY fact_det[idx].cantidad TO s_fact[idx].cantidad ATTRIBUTE(RED)
|
|
DISPLAY fact_det[idx].cantidad_orden TO s_fact[idx].cantidad_orden
|
|
DISPLAY fact_det[idx].pendiente TO s_fact[idx].pendiente
|
|
DISPLAY fact_det[idx].facturada TO s_fact[idx].facturada ATTRIBUTE(BLACK)
|
|
CALL fgl_winmessage("ERROR","EXISTE UN ARTICULO QUE PUEDE EXCEDER LA CANTIDAD EN LA ORDEN","INFO")
|
|
NEXT FIELD cod_n
|
|
ELSE
|
|
DISPLAY fact_det[idx].cantidad TO s_fact[idx].cantidad ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[idx].cantidad_orden TO s_fact[idx].cantidad_orden ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[idx].pendiente TO s_fact[idx].pendiente ATTRIBUTE(BLACK)
|
|
DISPLAY fact_det[idx].facturada TO s_fact[idx].facturada ATTRIBUTE(BLACK)
|
|
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
END IF}
|
|
IF fact_det[curr].cod_n IS NOT NULL AND
|
|
fact_det[curr].cod_grupo IS NOT NULL AND
|
|
fact_det[curr].cod_tipo IS NOT NULL AND
|
|
fact_det[curr].cod_sec IS NOT NULL THEN
|
|
|
|
# Busca la descripcion del producto con su existencia
|
|
LET fact_det[curr].descrip_esp = NULL
|
|
LET fact_det[curr].unidad_med = NULL
|
|
LET p_existencia = 0
|
|
SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2)
|
|
INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med,
|
|
p_existencia
|
|
FROM iptb00002 a,OUTER iptb00006 b
|
|
WHERE a.cod_n = fact_det[curr].cod_n AND
|
|
a.cod_grupo = fact_det[curr].cod_grupo AND
|
|
a.cod_tipo = fact_det[curr].cod_tipo AND
|
|
a.cod_sec = fact_det[curr].cod_sec AND
|
|
b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND
|
|
b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND
|
|
a.status_t IS NULL AND b.status_t IS NULL
|
|
GROUP BY a.descrip_esp,a.unidad_med
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
|
|
|
|
|
|
END INPUT
|
|
|
|
# NCF
|
|
SET CONNECTION "MSSQL_E"
|
|
|
|
LABEL anterior:
|
|
PROMPT "Las Informaciones Estan Correctas (S/N)" FOR CHAR opt
|
|
LET cuenta_arr = arr_count()
|
|
LET opt = UPSHIFT(opt)
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
IF opt IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
GOTO anterior
|
|
END IF
|
|
|
|
IF (opt != "S" AND opt != "N") THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO anterior
|
|
END IF
|
|
|
|
IF opt = "S" THEN
|
|
|
|
|
|
LABEL aqui:
|
|
LET verdad = "S"
|
|
|
|
IF (opt4 != "S" AND opt4 != "s") THEN
|
|
IF (opt4 != "n" AND opt4 != "N") THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO aqui
|
|
END IF
|
|
END IF
|
|
|
|
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET fact_gral.prima_us = 1
|
|
END IF
|
|
LET lleva_parcial = "N"
|
|
# Actualizacion NCF
|
|
IF fact_gral.fecha_factura > "12312006" THEN
|
|
SELECT a.ncf INTO kncf FROM vetb00073 a
|
|
WHERE a.tipo_doc = "FT" and
|
|
a.codigo_dgii = codigodgii AND
|
|
a.sucid =1
|
|
|
|
# SELECT MAX(a.ncf) INTO kncf FROM vetb00072 a
|
|
# WHERE a.tipo_doc = "FT" and
|
|
# a.codigo_dgii = codigodgii
|
|
|
|
IF kncf IS NULL THEN
|
|
LET kncf = 0
|
|
END IF
|
|
LET kncf = kncf + 1
|
|
DISPLAY BY NAME kncf
|
|
|
|
SELECT UNIQUE a.itbis INTO ch_itbi FROM vetb00071 a
|
|
WHERE kncf BETWEEN a.ncf_inicial AND a.ncf_final and
|
|
a.tipo_doc = "FT" and a.codigo_dgii = codigodgii AND disponible = "S"
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg =391
|
|
CALL msg(numero_msg)
|
|
CALL fgl_winmessage("ERROR","EXISTE PROBLEMA EN LA SECUENCIA DE LOS NCF","INFO")
|
|
GOTO regresa
|
|
END IF
|
|
|
|
END IF
|
|
|
|
LABEL brinca:
|
|
# Actualiza la tabla de datos generales de la factura
|
|
LET fact_gral.factura = 0
|
|
SELECT ult_factura INTO fact_gral.factura FROM vetb00001 WHERE sucid = localidad
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
insert into vetb00001 (ult_factura,us_crea,sucid)
|
|
values (0,usuarios,localidad)
|
|
let fact_gral.factura = 0
|
|
END IF
|
|
LET fact_gral.factura = fact_gral.factura + 1
|
|
BEGIN WORK
|
|
UPDATE vetb00073 SET ncf = kncf,us_crea = usuarios,fech_crea =getdate()
|
|
WHERE tipo_doc = "FT" and
|
|
codigo_dgii = codigodgii AND
|
|
sucid =1
|
|
UPDATE vetb00001 SET ult_factura = fact_gral.factura,
|
|
us_crea = usuarios,
|
|
fech_crea = getdate()
|
|
WHERE sucid =localidad
|
|
|
|
DISPLAY BY NAME fact_gral.factura
|
|
IF fact_gral.factura IS NOT NULL THEN
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET p_codigo = 30
|
|
LET tipo_f = "FT"
|
|
LET tipo_fact = 30
|
|
LET fact_gral.prima_us = 1
|
|
END IF
|
|
IF fact_gral.ventas = "2" THEN
|
|
LET tipo_fact = 31
|
|
LET p_codigo = 31
|
|
LET tipo_f = "FE"
|
|
|
|
END IF
|
|
IF fact_gral.ventas = "3" THEN
|
|
LET tipo_fact = 55
|
|
LET p_codigo = 55
|
|
LET tipo_f = "FE"
|
|
END IF
|
|
|
|
IF fact_gral.ventas = "4" THEN
|
|
SELECT porciento
|
|
INTO fact_gral.prima_us
|
|
FROM vetb00019 WHERE disponible = "S" AND status_t IS null
|
|
|
|
|
|
LET tipo_fact = 56
|
|
LET p_codigo = 56
|
|
LET tipo_f = "FE"
|
|
END IF
|
|
|
|
# INSERTA DOCUMENTO EN TRANSACCIONES NCF
|
|
INSERT INTO vetb00072 VALUES
|
|
(fact_gral.factura,"FT",codigodgii,kncf,usuarios,getdate(),localidad)
|
|
|
|
|
|
INSERT INTO vetb00002 (cod_cia,factura,fecha_factura,ventas,zona,orden,
|
|
fecha_orden,conduce,fecha_conduce,tipo_cliente,
|
|
sec_cliente,cod_vend,sec_vend,cond_pago,porc_itbi,
|
|
porc_desc,prima_us,sub_total,monto_desc,monto_itbi,
|
|
neto,fecha_embarque,status_impresion,status_t,us_crea,
|
|
fech_crea, us_mod, fech_mod,sucid,factura_c,documento,conduce_almacen,
|
|
nombre_cliente,direccion_cliente,rnc,observaciones)
|
|
VALUES (fact_gral.cod_cia, fact_gral.factura, fact_gral.fecha_factura,
|
|
fact_gral.ventas,fact_gral.zona,fact_gral.orden,
|
|
fact_gral.fecha_orden,fact_gral.conduce,fecha_cotizacion,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,pconduce,fact_gral.sec_vend,
|
|
fact_gral.cond_pago,fact_gral.porc_itbi,fact_gral.porc_desc,
|
|
fact_gral.prima_us,fact_gral.sub_total,fact_gral.desc_valor,
|
|
fact_gral.itbi,fact_gral.total_fact,fact_gral.fecha_embarque,
|
|
impresion,NULL,usuarios,getdate(),NULL,NULL,localidad,pconduce,documento_ref,xconduce_almacen,
|
|
fact_gral.nombre,fact_gral.direccion,num_rnc,observacion)
|
|
|
|
|
|
# Actualiza la tabla control de la numeracion de la factura
|
|
END IF
|
|
{CALL busca_avance(fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.conduce,fact_gral.total_fact,fact_gral.fecha_factura,
|
|
fact_gral.sec_vend,localidad,fact_gral.factura,usuarios)}
|
|
# Actualizacion de la tabla de cuentas por cobrar
|
|
|
|
IF fact_gral.cond_pago > 1 THEN
|
|
|
|
|
|
LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias
|
|
|
|
INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,
|
|
fecha_ven,aplica_a,localidad_aplica_a,valor,costo,monto_desc,
|
|
us_crea,fech_crea,bodega,sucid,documento_ref,banco,num_oc)
|
|
VALUES (fact_gral.cod_cia,tipo_f,fact_gral.factura,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven,
|
|
fact_gral.factura, localidad,fact_gral.total_fact,
|
|
t_costos,0, usuarios,getdate(), localidad,localidad,pconduce,fact_gral.conduce,fact_gral.orden)
|
|
|
|
END IF
|
|
#----------------------------------------------------------------------------------------------------
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL THEN
|
|
INSERT INTO vetb00003 (cod_cia,factura,area,cod_n,cod_grupo,cod_tipo,cod_Sec,
|
|
cantidad,cantidad_2,bonificacion,precio,us_crea,fech_crea,sucid,descripcion)
|
|
VALUES (fact_gral.cod_cia,fact_gral.factura,fact_det[idx].area, fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,fact_det[idx].cantidad,fact_det[idx].cantidad_2,
|
|
valor_desc,fact_det[idx].precio,usuarios,getdate(),localidad,fact_det[idx].descrip_esp)
|
|
|
|
# Actualizando la tabla de movimientos de inventario cuando la factura es
|
|
# normal o Tiene Cantidad a despachar
|
|
|
|
LET fact_det[idx].cantidad = fact_det[idx].cantidad * -1
|
|
|
|
# IF fact_det[idx].cod_n != 5 THEN
|
|
|
|
INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_transp,sec_transp,
|
|
cod_sp,cod_sp_sec,placa,cod_tarifa,cod_mov,cod_n,
|
|
cod_grupo,cod_tipo,cod_sec,cantidad_2,
|
|
bodega,us_crea,fech_crea,cotizacion_no,num_oc)
|
|
VALUES (fact_gral.cod_cia,fact_gral.factura,fact_gral.factura,
|
|
fact_gral.fecha_factura,fact_gral.cod_transp,fact_gral.sec_transp,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.placa_transp,
|
|
fact_gral.cod_tarifa,tipo_fact,fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,fact_det[idx].cantidad,localidad,usuarios,getdate(),fact_gral.conduce,
|
|
fact_gral.orden)
|
|
|
|
# END IF
|
|
LET fact_det[idx].cantidad = fact_det[idx].cantidad * -1
|
|
|
|
LET cant_pend[idx] = cant_pend[idx] * -1
|
|
|
|
IF p_bonifica[idx] IS NULL THEN
|
|
LET p_bonifica[idx] = 0
|
|
END IF
|
|
|
|
IF opt4 = "N" or opt4 = "n" THEN
|
|
LET p_bonifica[idx] = 0
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
COMMIT WORK
|
|
# AFECTA REGISTRO PARA LA PRODUCCION. FECHA 15/04/2018. POR JOHNNY SOTO
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
# IDENTIFICA EL PRODUCTO POR SU ORIGEN
|
|
SELECT a.cod_cia INTO cons_fact.cod_cia FROM iptb00002 a
|
|
WHERE a.cod_n = fact_det[idx].cod_n AND a.cod_grupo = fact_det[idx].cod_grupo AND
|
|
a.cod_tipo = fact_Det[idx].cod_tipo AND a.cod_Sec = fact_det[idx].cod_sec
|
|
|
|
IF cons_fact.cod_cia = 1 OR cons_fact.cod_cia = 2 THEN
|
|
|
|
# BUSCA DOCUMENTO SECUENCIA PRODUCCION
|
|
SELECT a.num_doc INTO xdocumento_almacen FROM iptb00007 a WHERE cod_mov = 20
|
|
IF xdocumento_almacen IS NULL THEN
|
|
LET xdocumento_almacen =0
|
|
END IF
|
|
|
|
LET xdocumento_almacen=xdocumento_almacen +1
|
|
UPDATE iptb00007 SET num_doc = xdocumento_almacen WHERE cod_mov = 20
|
|
|
|
INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_mov,cod_n,
|
|
cod_grupo,cod_tipo,cod_sec,cantidad_2,
|
|
bodega,us_crea,fech_crea,cotizacion_no,num_oc)
|
|
VALUES (fact_gral.cod_cia,xdocumento_almacen,fact_gral.factura,
|
|
fact_gral.fecha_factura,20,fact_det[idx].cod_n,
|
|
fact_det[idx].cod_grupo,fact_det[idx].cod_tipo,
|
|
fact_det[idx].cod_sec,fact_det[idx].cantidad,localidad,usuarios,getdate(),fact_gral.conduce,
|
|
fact_gral.orden)
|
|
END IF
|
|
END FOR
|
|
|
|
ELSE
|
|
GOTO regresa
|
|
END IF
|
|
|
|
#CALL actualiza_st(fact_gral.orden) #-> Actualiza el status de la orden de produccion vg COLOCO COMENTARIO EN FECHA 27/12/2013
|
|
|
|
# Impresion de la factura
|
|
{ IF salida = "SVG" OR salida = "PDF" THEN
|
|
LET HANDLER = configureOutput(salida)
|
|
START REPORT imp_fact1 TO XML HANDLER handler
|
|
ELSE
|
|
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
|
|
START REPORT imp_fact1 TO archivo
|
|
END IF
|
|
|
|
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cod_grupo IS NOT NULL AND
|
|
fact_det[idx].cod_tipo IS NOT NULL AND
|
|
fact_det[idx].cod_sec IS NOT NULL AND
|
|
fact_det[idx].cantidad IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
LET cod_fact = 1
|
|
OUTPUT TO REPORT imp_fact1(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact,kncf,codigodgii)
|
|
END IF
|
|
END FOR
|
|
|
|
|
|
FINISH REPORT imp_fact1
|
|
|
|
IF salida = "MA" THEN
|
|
RUN imprime
|
|
END IF
|
|
}
|
|
LET impresion = "S"
|
|
-----------IMPRESION TEST--------------------------------------------
|
|
{ IF salida = "MA" THEN
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
|
|
START REPORT imp_fact1 TO archivo
|
|
|
|
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cod_grupo IS NOT NULL AND
|
|
fact_det[idx].cod_tipo IS NOT NULL AND
|
|
fact_det[idx].cod_sec IS NOT NULL AND
|
|
fact_det[idx].cantidad IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
LET cod_fact = 1
|
|
OUTPUT TO REPORT imp_fact1(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact,kncf,codigodgii)
|
|
END IF
|
|
END FOR
|
|
|
|
|
|
FINISH REPORT imp_fact1
|
|
|
|
RUN imprime
|
|
LET impresion = "S"
|
|
ELSE
|
|
}
|
|
DISPLAY "Estoy aqui"
|
|
LET r_filename ='veprmt022.4rp'
|
|
LET r_output=salida
|
|
LET preview = TRUE
|
|
|
|
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
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT imp_factura TO XML HANDLER handler
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cod_grupo IS NOT NULL AND
|
|
fact_det[idx].cod_tipo IS NOT NULL AND
|
|
fact_det[idx].cod_sec IS NOT NULL AND
|
|
fact_det[idx].cantidad IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
LET cod_fact = 1
|
|
OUTPUT TO REPORT imp_factura(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact,kncf,codigodgii)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT imp_factura
|
|
|
|
END IF
|
|
# END IF
|
|
---------------------------------------------------------------------
|
|
#LET opt3 = fgl_winquestion("PAGO","DESEA EMITIR EL VOLANTE DE PAGO?","NO","YES|NO","QUESTION",0)
|
|
|
|
IF opt3 = "YES" THEN
|
|
CALL veprfu001()
|
|
END IF
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
|
|
CALL fact_det.clear()
|
|
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
GOTO otravez
|
|
END FUNCTION
|
|
|
|
FUNCTION repite_codigo()
|
|
|
|
LET verdad = NULL
|
|
LET ant_art.area = fact_det[curr].area
|
|
LET ant_art.cod_n = fact_det[curr].cod_n
|
|
LET ant_art.cod_grupo = fact_det[curr].cod_grupo
|
|
LET ant_art.cod_tipo = fact_det[curr].cod_tipo
|
|
LET ant_art.cod_sec = fact_det[curr].cod_sec
|
|
LET ant_art.cantidad = fact_det[curr].cantidad
|
|
LET ant_art.precio = fact_det[curr].precio
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != curr THEN
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cod_grupo IS NOT NULL AND
|
|
fact_det[idx].cod_tipo IS NOT NULL AND
|
|
fact_det[idx].cod_sec IS NOT NULL THEN
|
|
|
|
IF fact_det[idx].cod_n = ant_art.cod_n AND
|
|
fact_det[idx].cod_grupo = ant_art.cod_grupo AND
|
|
fact_det[idx].cod_tipo = ant_art.cod_tipo AND
|
|
fact_det[idx].cod_sec = ant_art.cod_sec AND
|
|
fact_det[idx].cantidad = ant_art.cantidad AND
|
|
fact_det[idx].area = ant_art.area AND
|
|
fact_det[idx].precio = ant_art.precio THEN
|
|
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET verdad = "S"
|
|
ELSE
|
|
IF verdad != "S" THEN
|
|
LET verdad = "N"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END FUNCTION
|
|
|
|
FUNCTION tarifas()
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd014"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET int_flag = false
|
|
CONSTRUCT criterio ON a.descrip FROM descrip
|
|
|
|
LET selec2 = "SELECT a.cod_tarifa,a.descrip,a.tarifa_pago FROM vetb00023 a ",
|
|
"WHERE a.status_t IS NULL AND ",criterio clipped," ORDER BY 1 "
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_tarifa
|
|
END IF
|
|
|
|
PREPARE busca_tarifa FROM selec2
|
|
IF STATUS >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_tarifa CURSOR FOR busca_tarifa
|
|
|
|
LET idx = 1
|
|
FOREACH buscar_tarifa INTO arr_tarifa[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE
|
|
" <Esc> Selecciona Tarifa del Transportista Donde Esta el cursor"
|
|
DISPLAY ARRAY arr_tarifa TO s_datos.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET fact_gral.cod_tarifa = arr_tarifa[curr1].cod_tarifa
|
|
LET descrip6 = arr_tarifa[curr1].descrip
|
|
|
|
LABEL salir_tarifa:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
FUNCTION condiciones()
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd011"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET int_flag = false
|
|
CONSTRUCT BY NAME criterio ON a.descrip
|
|
|
|
LET selec2 = "SELECT a.cond_pago, a.descrip",
|
|
" FROM vetb00012 a",
|
|
" WHERE ",
|
|
"a.status_t IS NULL AND ",
|
|
criterio clipped,
|
|
"ORDER BY 1 "
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_e
|
|
END IF
|
|
|
|
PREPARE busca_cond1 FROM selec2
|
|
IF STATUS >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_cond CURSOR FOR busca_cond1
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_cond INTO arr_condicion[idx].*
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
|
|
DISPLAY ARRAY arr_condicion TO s_condicion.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET fact_gral.cond_pago = arr_condicion[curr1].cond_pago
|
|
LET condicion.descrip = arr_condicion[curr1].descrip
|
|
|
|
LABEL salir_consulta_e:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
FUNCTION cons_transp()
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd012"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET int_flag = false
|
|
CONSTRUCT criterio ON a.nombre FROM descrip6
|
|
|
|
LET selec2 = "SELECT a.cod_transp,a.sec_transp, a.nombre FROM vetb00015 a ",
|
|
"WHERE a.status_t IS NULL AND ",criterio clipped," ORDER BY 1,2"
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_e
|
|
END IF
|
|
|
|
PREPARE busca_transp1 FROM selec2
|
|
IF STATUS >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
|
|
DECLARE buscar_transp CURSOR FOR busca_transp1
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_transp INTO arr_transp[idx].*
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
|
|
DISPLAY ARRAY arr_transp TO s_transp.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET fact_gral.cod_transp = arr_transp[curr1].cod_transp
|
|
LET fact_gral.sec_transp = arr_transp[curr1].sec_transp
|
|
LET fact_gral.nombre_tran = arr_transp[curr1].nombre
|
|
|
|
LABEL salir_consulta_e:
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
REPORT imp_fact(x,z,porciento,bonifica,cod_f,pncf,Pcodigodgii)
|
|
|
|
DEFINE x RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
ventas LIKE vetb00002.ventas,
|
|
zona CHAR(3),
|
|
factura LIKE vetb00002.factura,
|
|
bodega SMALLINT,
|
|
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(80),
|
|
ciudad CHAR(20),
|
|
prima_us LIKE vetb00002.prima_us,
|
|
porc_desc LIKE vetb00002.porc_desc,
|
|
cond_pago LIKE vetb00002.cond_pago,
|
|
orden INT,
|
|
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),
|
|
itbi DECIMAL(12,2),
|
|
total_fact DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE z RECORD
|
|
area SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(50),
|
|
unidad_med CHAR(5),
|
|
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
|
|
|
|
END RECORD,
|
|
Pcodigodgii LIKE vetb00071.codigo_dgii
|
|
|
|
DEFINE cantidad_p INTEGER,
|
|
i,cod_f SMALLINT
|
|
DEFINE c_cajas,bonifica,pncf INTEGER
|
|
DEFINE tot_b,tot_n,tot_m,peso_n,medida,peso_b,valor_kit DECIMAL(12,2),
|
|
ch_fech CHAR(20)
|
|
DEFINE porciento DECIMAL(8,3)
|
|
DEFINE valor_porc DECIMAL (12,2)
|
|
DEFINE normal,doce,negras,negras_off,doble CHAR(2)
|
|
DEFINE rnc CHAR(11)
|
|
DEFINE nombre_vend,apellido_vend CHAR(15)
|
|
DEFINE comprimido,comprimido_of CHAR(1)
|
|
DEFINE presenta LIKE iptb00010.conversion
|
|
DEFINE j,lj,h INTEGER,
|
|
descripcion_kit VARCHAR(100),
|
|
cantidad_kit DEC(12,2)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 2
|
|
LEFT MARGIN 0
|
|
PAGE LENGTH 65
|
|
BOTTOM MARGIN 3
|
|
|
|
ORDER BY x.factura,z.id_kit,z.cod_n,z.cod_sec
|
|
|
|
FORMAT
|
|
|
|
BEFORE GROUP OF x.factura
|
|
IF salida = "MA" THEN
|
|
LET comprimido = ASCII 15
|
|
LET comprimido_of = ASCII 18
|
|
LET negras = ASCII 27, ASCII 69
|
|
LET negras_off = ASCII 27, ASCII 70
|
|
LET doble = ASCII 14
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
ELSE
|
|
LET comprimido = NULL
|
|
LET comprimido_of = NULL
|
|
LET negras = NULL
|
|
LET negras_off = NULL
|
|
LET doble = NULL
|
|
LET doce = NULL
|
|
LET normal = NULL
|
|
|
|
END IF
|
|
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
LET j = (90 - LENGTH(p_companias.direccion CLIPPED))/2
|
|
LET i = (90 - LENGTH(p_companias.telefono CLIPPED))/2
|
|
LET h = (90 - LENGTH(p_companias.rnc CLIPPED))/2
|
|
|
|
PRINT COLUMN lj, normal,doble,p_companias.nombre CLIPPED
|
|
PRINT COLUMN j, p_companias.direccion CLIPPED,", ",xnombre_provincia
|
|
PRINT COLUMN i-9, "Tels : ",p_companias.telefono ,
|
|
" Fax : ",p_companias.fax
|
|
PRINT COLUMN h-1, "RNC : ",p_companias.rnc CLIPPED,
|
|
COLUMN 100, "Pag. ", pageno using "###"
|
|
|
|
SELECT num_rnc INTO rnc FROM vetb00004
|
|
WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente
|
|
|
|
#PRINT normal,comprimido_of
|
|
IF x.ventas = "1" THEN
|
|
PRINT COLUMN 4,normal,comprimido_of, negras,"SENORES :"
|
|
ELSE
|
|
PRINT COLUMN 4, "SIR :"
|
|
END IF
|
|
|
|
PRINT COLUMN 4, x.nombre CLIPPED," COD.#",x.tipo_cliente using "&&","-",
|
|
x.sec_cliente using "&&&&&&"
|
|
PRINT COLUMN 4, x.direccion CLIPPED," ",cliente_bas.telefono
|
|
PRINT COLUMN 4, x.ciudad CLIPPED," RNC #",rnc,
|
|
COLUMN 50, doble,"FACTURA ",x.factura using "&&&&&&&&"
|
|
PRINT COLUMN 4, pubicacion
|
|
|
|
PRINT COLUMN 4, "NCF: ",pcodigodgii CLIPPED,pncf USING "&&&&&&&&"
|
|
PRINT COLUMN 4, descripcion
|
|
PRINT comprimido
|
|
|
|
|
|
PRINT "======================================================================================================",
|
|
"================================="
|
|
PRINT COLUMN 2, "COTIZACION",
|
|
COLUMN 15, "ORDEN",
|
|
COLUMN 25, "FECHA",
|
|
COLUMN 37, "SALIDA",
|
|
COLUMN 60, "CONDICION",
|
|
COLUMN 80, "VENDEDOR",
|
|
|
|
COLUMN 111, "DOCUMENTO",
|
|
COLUMN 123, "FECHA FACTURA"
|
|
|
|
PRINT COLUMN 2,x.conduce USING "<<<<<<<",
|
|
COLUMN 14, x.orden using "&&&&&&",
|
|
COLUMN 24, x.fecha_orden using "dd/mm/yyyy",
|
|
COLUMN 37, xconduce_almacen USING "&&&&&&&",
|
|
COLUMN 60, condicion.descrip CLIPPED,
|
|
COLUMN 80, "(",x.sec_vend using "&&&&&",") ",x.nombre_vend CLIPPED,
|
|
|
|
COLUMN 111,documento_ref[1,14],
|
|
COLUMN 126, x.fecha_factura using "dd/mm/yyyy"
|
|
PRINT "======================================================================================================",
|
|
"================================="
|
|
|
|
LET tot_n = 0
|
|
LET tot_b = 0
|
|
LET tot_m = 0
|
|
PRINT COLUMN 5,"CODIGO",
|
|
COLUMN 21, "CANTIDAD",
|
|
COLUMN 37, "UNIDADES",
|
|
COLUMN 50, "DESCRIPCION",
|
|
COLUMN 102, "PRECIO",
|
|
COLUMN 114, "DESC.",
|
|
COLUMN 131, "TOTAL"
|
|
|
|
PRINT "======================================================================================================",
|
|
"================================="
|
|
|
|
BEFORE GROUP OF z.id_kit
|
|
LET descripcion_kit = NULL
|
|
LET cantidad_kit =0
|
|
LET valor_kit = 0
|
|
IF z.id_kit IS NOT NULL THEN
|
|
SELECT a.descrip_esp INTO descripcion_kit FROM iptb00002 a,vetb00051 b
|
|
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.id_kit = z.id_kit AND
|
|
b.cotizacion_no = x.conduce AND b.area = z.area
|
|
|
|
SELECT a.cantidad INTO cantidad_kit FROM vetb00097 a WHERE a.factura = pconduce AND
|
|
a.id_kit = z.id_kit
|
|
|
|
|
|
PRINT COLUMN 13, cantidad_kit USING "#,###.##",
|
|
"(",z.id_kit USING "<<<<",")", descripcion_kit[1,40],
|
|
COLUMN 123,valor_kit USING "##,###,###.##"
|
|
|
|
SKIP 1 LINE
|
|
END IF
|
|
ON EVERY ROW
|
|
|
|
IF z.cantidad <> 0 THEN
|
|
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
|
|
|
|
IF p_iptb01.factor_conv IS NULL OR p_iptb01.factor_conv = 0 THEN
|
|
LET p_iptb01.factor_conv = 1
|
|
LET p_iptb01.unidad = z.unidad_med
|
|
END IF
|
|
|
|
PRINT COLUMN 5, z.cod_n USING "&&&&","-",z.cod_grupo USING "&&&&","-",
|
|
z.cod_tipo USING "&&&&","-",z.cod_sec USING "&&&&",
|
|
COLUMN 13, z.cantidad USING "###,###.###"," ",z.unidad_med CLIPPED,
|
|
COLUMN 32, z.cantidad/p_iptb01.factor_conv USING "###,###",
|
|
COLUMN 50, z.descrip_esp CLIPPED,
|
|
COLUMN 98, z.precio USING "##,###,###.###",
|
|
COLUMN 114, z.cantidad_2 USING "##.&&",
|
|
COLUMN 123, z.monto_fact USING "##,###,###.##"
|
|
END IF
|
|
|
|
AFTER GROUP OF z.id_kit
|
|
IF z.id_kit IS NOT NULL THEN
|
|
LET valor_kit = GROUP SUM(z.monto_fact)
|
|
PRINT COLUMN 123,"=============="
|
|
PRINT COLUMN 123,valor_kit USING "##,###,###.##"
|
|
END IF
|
|
AFTER GROUP OF x.factura
|
|
# Impresion de informaciones que pertenecen a facturas de exportacion
|
|
IF x.ventas = "2" or x.ventas = "4" THEN
|
|
|
|
|
|
PRINT COLUMN 122,"--------------"
|
|
PRINT COLUMN 78, "VALOR BRUTO ",
|
|
COLUMN 122, x.sub_total using "###,###,###.##"
|
|
|
|
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DISCOUNT",
|
|
COLUMN 122, x.desc_valor using "###,###,###.##"
|
|
END IF
|
|
PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "TOTAL F.O.B. PLANT, D.R.",
|
|
COLUMN 122, x.total_fact using "###,###,###.##"
|
|
PRINT COLUMN 122, "______________"
|
|
PRINT COLUMN 122, "--------------"
|
|
|
|
LET ch_fech = x.fecha_embarque using "ddd, mmm. dd, yyyy"
|
|
LET ch_fech = upshift(ch_fech)
|
|
PRINT COLUMN 47, "INLAND FREIGHT : COLLECT"
|
|
PRINT COLUMN 47, "INSURANCE : TO BE COVERED BY CUSTOMER"
|
|
PRINT COLUMN 47, "TO BE SHIPPED : ", ch_fech
|
|
#PRINT COLUMN 47, "EXCHANGE RATE : ", x.prima_us USING "###.##"
|
|
END IF
|
|
|
|
# Impresion de datos que concierne solamente a tipos de facturas locales
|
|
|
|
IF x.ventas = "1" THEN
|
|
#->PRINT COLUMN 122, "--------------"
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 78, "VALOR BRUTO ",
|
|
COLUMN 122, x.sub_total using "###,###,###.##"
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 77, x.porc_desc using "##"," %DESCUENTO",
|
|
COLUMN 093, x.desc_valor using "###,###,###.##"
|
|
#COLUMN 122, x.desc_valor using "###,###,###.##"
|
|
END IF
|
|
|
|
#-> PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "SUB-TOTAL",
|
|
COLUMN 119, x.sub_total-x.desc_valor using "RD$###,###,###.##"
|
|
IF x.porc_itbi > 0 THEN
|
|
PRINT COLUMN 78,x.porc_itbi using "###.##","%"," ITBIS",
|
|
COLUMN 122, x.itbi using "###,###,###.##"
|
|
END IF
|
|
PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "VALOR NETO ",
|
|
COLUMN 119, x.total_fact using "RD$###,###,###.##"
|
|
PRINT COLUMN 122, "=============="
|
|
|
|
END IF
|
|
|
|
IF x.ventas = "3" THEN
|
|
#->PRINT COLUMN 122, "--------------"
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 78, "VALOR BRUTO ",
|
|
COLUMN 118, x.sub_total using "USD$###,###,###.##"
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 77, x.porc_desc using "##"," %DESCUENTO",
|
|
COLUMN 093, x.desc_valor using "###,###,###.##"
|
|
#COLUMN 122, x.desc_valor using "###,###,###.##"
|
|
END IF
|
|
|
|
#-> PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "SUB-TOTAL",
|
|
COLUMN 122, x.sub_total-x.desc_valor using "###,###,###.##"
|
|
IF x.porc_itbi > 0 THEN
|
|
PRINT COLUMN 78, x.porc_itbi using "###.##","%"," ITBIS",
|
|
COLUMN 122, x.itbi using "###,###,###.##"
|
|
END IF
|
|
PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "VALOR NETO ",
|
|
COLUMN 118, x.total_fact using "USD$###,###,###.##"
|
|
PRINT COLUMN 122, "=============="
|
|
|
|
END IF
|
|
|
|
PRINT comprimido_of
|
|
#SKIP 8 LINE
|
|
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT doce,comprimido_of
|
|
|
|
LET obs1=observacion[1,50]
|
|
LET obs2=observacion[51,101]
|
|
LET obs3=observacion[102,152]
|
|
LET obs4=observacion[152,180]
|
|
|
|
PRINT COLUMN 3, "OBSERVACIONES: ",UPSHIFT(obs1) CLIPPED," ", UPSHIFT(obs2) CLIPPED
|
|
PRINT COLUMN 3, " ",UPSHIFT(obs3) CLIPPED," ", UPSHIFT(obs4) CLIPPED
|
|
# IF x.ventas = 3 THEN
|
|
# PRINT COLUMN 3, "EXCHANGE RATE : ", x.prima_us USING "###.##"
|
|
# ELSE
|
|
# PRINT " "
|
|
# END IF
|
|
SKIP 2 LINES
|
|
|
|
PRINT COLUMN 4, "NOMBRE TRANSPORTISTA: ",x.nombre_tran, " ",
|
|
"CEDULA: ",p_cedula using "&&&&&&&&&",
|
|
" SERIE: ",p_serie using "&&&"
|
|
|
|
PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x.placa_transp
|
|
{
|
|
SKIP 10 LINES
|
|
PRINT COLUMN 12, x.nombre CLIPPED
|
|
CALL convierte(x.total_fact)
|
|
|
|
PRINT COLUMN 05, valor_letras clipped,
|
|
COLUMN 72, x.total_fact using "###,###,###.##"
|
|
PRINT COLUMN 72, x.factura using "&&&&&"
|
|
|
|
PRINT COLUMN 10, condicion.dias USING "&&"
|
|
}
|
|
SKIP 3 LINES
|
|
PRINT COLUMN 4,"-------------------------------",20 SPACES,
|
|
"-------------------------------"
|
|
|
|
PRINT COLUMN 4," FACTURADO POR ",20 SPACES,
|
|
" REVISADO POR "
|
|
|
|
|
|
SKIP 4 LINES
|
|
END REPORT
|
|
REPORT imp_factura(x,z,porciento,bonifica,cod_f,pncf,pcodigodgii)
|
|
DEFINE x RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
ventas LIKE vetb00002.ventas,
|
|
zona LIKE vetb00002.zona,
|
|
factura LIKE vetb00002.factura,
|
|
bodega SMALLINT,
|
|
conduce LIKE vetb00002.conduce,
|
|
fecha_conduce LIKE vetb00002.fecha_conduce,
|
|
fecha_factura LIKE vetb00002.fecha_factura,
|
|
tipo_cliente LIKE vetb00002.tipo_cliente,
|
|
sec_cliente LIKE vetb00002.sec_cliente,
|
|
nombre CHAR(30),
|
|
direccion CHAR(80),
|
|
ciudad CHAR(20),
|
|
prima_us LIKE vetb00002.prima_us,
|
|
porc_desc LIKE vetb00002.porc_desc,
|
|
cond_pago LIKE vetb00002.cond_pago,
|
|
orden INT,
|
|
fecha_orden LIKE vetb00002.fecha_orden,
|
|
porc_itbi LIKE vetb00002.porc_itbi,
|
|
sec_vend LIKE vetb00002.sec_vend,
|
|
nombre_vend CHAR(30),
|
|
cod_transp LIKE iptb00006.cod_transp,
|
|
sec_transp LIKE iptb00006.sec_transp,
|
|
cod_tarifa LIKE iptb00006.cod_tarifa,
|
|
nombre_tran CHAR(30),
|
|
fecha_embarque LIKE vetb00002.fecha_embarque,
|
|
placa_transp LIKE iptb00006.placa,
|
|
sub_total DECIMAL(12,2),
|
|
desc_valor DECIMAL(12,2),
|
|
itbi DECIMAL(12,2),
|
|
total_fact DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE z RECORD
|
|
area SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(50),
|
|
unidad_med CHAR(4),
|
|
cantidad DECIMAL(12,5),
|
|
precio DECIMAL(12,3),
|
|
cantidad_2 DEC(8,2),
|
|
monto_fact DECIMAL(12,3),
|
|
kit_id INT
|
|
END RECORD
|
|
DEFINE bonifica INTEGER,
|
|
i,cod_f SMALLINT,
|
|
plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5),
|
|
pncf INT, pcodigodgii CHAR(16)
|
|
|
|
|
|
DEFINE tot_b,tot_n,tot_m DECIMAL(12,2),
|
|
ch_fech CHAR(20),
|
|
descripcion_area CHAR(30)
|
|
DEFINE porciento DECIMAL(8,3)
|
|
DEFINE normal,doce,negras,negras_off,doble CHAR(2)
|
|
|
|
DEFINE nombre_vend,apellido_vend CHAR(15)
|
|
DEFINE comprimido,comprimido_of CHAR(1)
|
|
|
|
DEFINE j,lj,h INTEGER,
|
|
etiqueta CHAR(30),
|
|
pfecha_ncf DATE,
|
|
rnc char(11),
|
|
ch_ncf char(30)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 2
|
|
LEFT MARGIN 0
|
|
#PAGE LENGTH 65
|
|
BOTTOM MARGIN 3
|
|
|
|
ORDER BY x.factura,z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_Sec
|
|
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
SELECT b.ncf INTO pncf FROM vetb00072 b
|
|
WHERE b.documento=x.factura AND tipo_doc='FT'
|
|
# CALL fgl_winmessage("INFO",p_companias.rnc,"INFO")
|
|
LET ch_ncf =pcodigodgii CLIPPED,pncf USING "&&&&&&&&"
|
|
|
|
SELECT num_rnc INTO rnc FROM vetb00004
|
|
WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente
|
|
|
|
SELECT a.fecha_vencimiento,a.tipo_ncf INTO pfecha_ncf,descripcion FROM vetb00071 a
|
|
WHERE (a.tipo_doc = "FT" and
|
|
a.codigo_dgii = pcodigodgii)
|
|
|
|
DISPLAY "fecha",pfecha_ncf," ",kncf," ",pcodigodgii
|
|
|
|
PRINT comprimido
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO p_adtb03.nom1_emp,p_adtb03.apell1_emp
|
|
FROM adtb00003 a WHERE a.num_emp = fact_gral.sec_vend
|
|
|
|
IF x.cond_pago > 1 AND x.ventas = "1" THEN
|
|
|
|
LET nombre_vend = p_adtb03.nom1_emp CLIPPED
|
|
LET apellido_vend = p_adtb03.apell1_emp CLIPPED
|
|
END IF
|
|
|
|
IF x.ventas = "2" THEN
|
|
LET nombre_vend = p_adtb03.nom1_emp
|
|
LET apellido_vend = NULL
|
|
END IF
|
|
{ IF genera_ncf = "NO" THEN
|
|
LET ch_ncf=" "
|
|
LET pfecha_ncf=""
|
|
END IF
|
|
}
|
|
|
|
LET tot_n = 0
|
|
LET tot_b = 0
|
|
LET tot_m = 0
|
|
|
|
BEFORE GROUP OF z.area
|
|
SELECT a.nombre_area INTO descripcion_area
|
|
FROM prtb00016 a
|
|
WHERE a.area_num=Z.area
|
|
|
|
ON EVERY ROW
|
|
PRINTX x.*,p_companias.*,rnc,condicion.descrip,pcodigodgii,pncf,descripcion,
|
|
documento_ref,z.*,observacion,cliente_bas.*,fecha_vencimiento,ch_ncf,pfecha_ncf,pcotizacion
|
|
|
|
ON LAST ROW
|
|
|
|
PAGE TRAILER
|
|
|
|
END REPORT
|
|
|
|
REPORT imp_fact1(x,z,porciento,bonifica,cod_f,pncf,Pcodigodgii)
|
|
|
|
DEFINE x RECORD
|
|
cod_cia LIKE vetb00002.cod_cia,
|
|
ventas LIKE vetb00002.ventas,
|
|
zona CHAR(3),
|
|
factura LIKE vetb00002.factura,
|
|
bodega SMALLINT,
|
|
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,
|
|
orden INT,
|
|
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),
|
|
itbi DECIMAL(12,2),
|
|
total_fact DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE z RECORD
|
|
area SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(50),
|
|
unidad_med CHAR(5),
|
|
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
|
|
|
|
END RECORD,
|
|
Pcodigodgii LIKE vetb00071.codigo_dgii
|
|
|
|
DEFINE cantidad_p INTEGER,
|
|
i,cod_f SMALLINT
|
|
DEFINE c_cajas,bonifica,pncf INTEGER
|
|
DEFINE tot_b,tot_n,tot_m,peso_n,medida,peso_b,valor_kit DECIMAL(12,2),
|
|
ch_fech CHAR(20)
|
|
DEFINE porciento DECIMAL(8,3)
|
|
DEFINE valor_porc DECIMAL (12,2)
|
|
DEFINE normal,doce,negras,negras_off,doble CHAR(2)
|
|
DEFINE rnc CHAR(11)
|
|
DEFINE nombre_vend,apellido_vend CHAR(15)
|
|
DEFINE comprimido,comprimido_of CHAR(1)
|
|
DEFINE presenta LIKE iptb00010.conversion
|
|
DEFINE j,lj,h INTEGER,
|
|
descripcion_kit VARCHAR(100),
|
|
cantidad_kit DEC(12,2)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 4
|
|
LEFT MARGIN 0
|
|
PAGE LENGTH 65
|
|
BOTTOM MARGIN 3
|
|
|
|
ORDER BY x.factura,z.id_kit,z.cod_n,z.cod_sec
|
|
|
|
FORMAT
|
|
|
|
PAGE HEADER
|
|
IF salida = "MA" THEN
|
|
LET comprimido = ASCII 15
|
|
LET comprimido_of = ASCII 18
|
|
LET negras = ASCII 27, ASCII 69
|
|
LET negras_off = ASCII 27, ASCII 70
|
|
LET doble = ASCII 14
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
ELSE
|
|
LET comprimido = NULL
|
|
LET comprimido_of = NULL
|
|
LET negras = NULL
|
|
LET negras_off = NULL
|
|
LET doble = NULL
|
|
LET doce = NULL
|
|
LET normal = NULL
|
|
|
|
END IF
|
|
|
|
SELECT num_rnc INTO rnc FROM vetb00004
|
|
WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente AND
|
|
status_t IS NULL
|
|
|
|
|
|
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
LET j = (90 - LENGTH(p_companias.direccion CLIPPED))/2
|
|
LET i = (90 - LENGTH(p_companias.telefono CLIPPED))/2
|
|
LET h = (90 - LENGTH(p_companias.rnc CLIPPED))/2
|
|
|
|
|
|
SELECT a.nombre INTO p_companias.nombre FROM companias a
|
|
#--------------------------------------------------------
|
|
PRINT COLUMN 1, normal,doble,p_companias.nombre CLIPPED
|
|
|
|
PRINT COLUMN 1,doce, p_companias.direccion CLIPPED," ",xnombre_provincia," ",
|
|
COLUMN 61, descripcion[1,29]
|
|
PRINT COLUMN 1, sucnombre,
|
|
COLUMN 61,descripcion[30,60]
|
|
PRINT COLUMN 1, "RNC : ",p_companias.rnc,
|
|
COLUMN 60,"NCF: ",pcodigodgii CLIPPED,pncf USING "&&&&&&&&"
|
|
|
|
PRINT COLUMN 1, "Tels : ",p_companias.telefono ,
|
|
" Fax : ",p_companias.fax,
|
|
COLUMN 61, "Valida Hasta: ",fecha_vencimiento USING "dd/mm/yyyy"
|
|
|
|
PRINT COLUMN 1, "Pag. ", pageno using "###"
|
|
|
|
|
|
SKIP 1 LINE
|
|
|
|
#--------------------------------------------------------
|
|
|
|
|
|
SELECT a.num_rnc INTO rnc FROM vetb00004 a
|
|
WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
PRINT COLUMN 1,"----------------------------------------------------------------------------------------------"
|
|
PRINT COLUMN 1, "RNC CLIENTE: ",rnc
|
|
IF x.ventas = "1" THEN
|
|
PRINT COLUMN 1, negras,"SENORES :"
|
|
ELSE
|
|
PRINT COLUMN 1, "SIR :"
|
|
END IF
|
|
|
|
PRINT COLUMN 1, x.nombre CLIPPED," COD.#",x.tipo_cliente using "&&","-",
|
|
x.sec_cliente using "&&&&&&"
|
|
PRINT COLUMN 1, x.direccion CLIPPED," ",cliente_bas.telefono
|
|
PRINT COLUMN 1, x.ciudad CLIPPED
|
|
|
|
PRINT COLUMN 1, pubicacion[1,70]
|
|
PRINT COLUMN 1, pubicacion[71,80]
|
|
|
|
PRINT COLUMN 60, doble,"FACTURA ",x.factura using "&&&&&&&&"
|
|
PRINT COLUMN 1,"--------------------------------------------------------------------------------------------"
|
|
|
|
PRINT normal,comprimido
|
|
|
|
|
|
PRINT "======================================================================================================",
|
|
"================================="
|
|
PRINT COLUMN 2, "COTIZACION",
|
|
COLUMN 15, "ORDEN",
|
|
COLUMN 25, "FECHA",
|
|
COLUMN 37, "SALIDA",
|
|
COLUMN 60, "CONDICION",
|
|
COLUMN 80, "VENDEDOR",
|
|
|
|
COLUMN 111, "DOCUMENTO",
|
|
COLUMN 123, "FECHA FACTURA"
|
|
|
|
PRINT COLUMN 2,x.conduce USING "<<<<<<<",
|
|
COLUMN 14, x.orden using "&&&&&&",
|
|
COLUMN 24, x.fecha_orden using "dd/mm/yyyy",
|
|
COLUMN 37, xconduce_almacen USING "&&&&&&&",
|
|
COLUMN 60, condicion.descrip CLIPPED,
|
|
COLUMN 80, "(",x.sec_vend using "&&&&&",") ",x.nombre_vend CLIPPED,
|
|
|
|
COLUMN 111,documento_ref[1,14],
|
|
COLUMN 126, x.fecha_factura using "dd/mm/yyyy"
|
|
PRINT "======================================================================================================",
|
|
"================================="
|
|
|
|
LET tot_n = 0
|
|
LET tot_b = 0
|
|
LET tot_m = 0
|
|
PRINT COLUMN 5,"CODIGO",
|
|
COLUMN 21, "CANTIDAD",
|
|
COLUMN 37, "UNIDADES",
|
|
COLUMN 50, "DESCRIPCION",
|
|
COLUMN 102, "PRECIO",
|
|
COLUMN 114, "DESC.",
|
|
COLUMN 131, "TOTAL"
|
|
|
|
PRINT "======================================================================================================",
|
|
"================================="
|
|
|
|
BEFORE GROUP OF z.id_kit
|
|
LET descripcion_kit = NULL
|
|
LET cantidad_kit =0
|
|
LET valor_kit = 0
|
|
IF z.id_kit IS NOT NULL THEN
|
|
SELECT a.descrip_esp INTO descripcion_kit FROM iptb00002 a,vetb00051 b
|
|
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.id_kit = z.id_kit AND
|
|
b.cotizacion_no = x.conduce AND b.area = z.area
|
|
|
|
SELECT a.cantidad INTO cantidad_kit FROM vetb00097 a WHERE a.factura = pconduce AND
|
|
a.id_kit = z.id_kit
|
|
|
|
|
|
PRINT COLUMN 13, cantidad_kit USING "#,###.##",
|
|
"(",z.id_kit USING "<<<<",")", descripcion_kit[1,40],
|
|
COLUMN 123,valor_kit USING "##,###,###.##"
|
|
|
|
SKIP 1 LINE
|
|
END IF
|
|
ON EVERY ROW
|
|
|
|
IF z.cantidad <> 0 THEN
|
|
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
|
|
|
|
IF p_iptb01.factor_conv IS NULL OR p_iptb01.factor_conv = 0 THEN
|
|
LET p_iptb01.factor_conv = 1
|
|
LET p_iptb01.unidad = z.unidad_med
|
|
END IF
|
|
|
|
PRINT COLUMN 5, z.cod_n USING "&&&&","-",z.cod_grupo USING "&&&&","-",
|
|
z.cod_tipo USING "&&&&","-",z.cod_sec USING "&&&&",
|
|
COLUMN 13, z.cantidad USING "###,###.###"," ",z.unidad_med CLIPPED,
|
|
COLUMN 32, z.cantidad/p_iptb01.factor_conv USING "###,###",
|
|
COLUMN 50, z.descrip_esp CLIPPED,
|
|
COLUMN 98, z.precio USING "##,###,###.###",
|
|
COLUMN 114, z.cantidad_2 USING "##.&&",
|
|
COLUMN 123, z.monto_fact USING "##,###,###.##"
|
|
END IF
|
|
|
|
AFTER GROUP OF z.id_kit
|
|
IF z.id_kit IS NOT NULL THEN
|
|
LET valor_kit = GROUP SUM(z.monto_fact)
|
|
PRINT COLUMN 123,"=============="
|
|
PRINT COLUMN 123,valor_kit USING "##,###,###.##"
|
|
END IF
|
|
AFTER GROUP OF x.factura
|
|
# Impresion de informaciones que pertenecen a facturas de exportacion
|
|
IF x.ventas = "2" or x.ventas = "4" THEN
|
|
|
|
|
|
PRINT COLUMN 122,"--------------"
|
|
PRINT COLUMN 78, "VALOR BRUTO ",
|
|
COLUMN 122, x.sub_total using "###,###,###.##"
|
|
|
|
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DISCOUNT",
|
|
COLUMN 122, x.desc_valor using "###,###,###.##"
|
|
END IF
|
|
PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "TOTAL F.O.B. PLANT, D.R.",
|
|
COLUMN 122, x.total_fact using "###,###,###.##"
|
|
PRINT COLUMN 122, "______________"
|
|
PRINT COLUMN 122, "--------------"
|
|
|
|
LET ch_fech = x.fecha_embarque using "ddd, mmm. dd, yyyy"
|
|
LET ch_fech = upshift(ch_fech)
|
|
PRINT COLUMN 47, "INLAND FREIGHT : COLLECT"
|
|
PRINT COLUMN 47, "INSURANCE : TO BE COVERED BY CUSTOMER"
|
|
PRINT COLUMN 47, "TO BE SHIPPED : ", ch_fech
|
|
#PRINT COLUMN 47, "EXCHANGE RATE : ", x.prima_us USING "###.##"
|
|
END IF
|
|
|
|
# Impresion de datos que concierne solamente a tipos de facturas locales
|
|
|
|
IF x.ventas = "1" THEN
|
|
#->PRINT COLUMN 122, "--------------"
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 78, "VALOR BRUTO ",
|
|
COLUMN 122, x.sub_total using "###,###,###.##"
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 77, x.porc_desc using "##"," %DESCUENTO",
|
|
COLUMN 093, x.desc_valor using "###,###,###.##"
|
|
#COLUMN 122, x.desc_valor using "###,###,###.##"
|
|
END IF
|
|
|
|
#-> PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "SUB-TOTAL",
|
|
COLUMN 119, x.sub_total-x.desc_valor using "RD$###,###,###.##"
|
|
IF x.porc_itbi > 0 THEN
|
|
PRINT COLUMN 78,x.porc_itbi using "###.##","%"," ITBIS",
|
|
COLUMN 122, x.itbi using "###,###,###.##"
|
|
END IF
|
|
PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "VALOR NETO ",
|
|
COLUMN 119, x.total_fact using "RD$###,###,###.##"
|
|
PRINT COLUMN 122, "=============="
|
|
|
|
END IF
|
|
|
|
IF x.ventas = "3" THEN
|
|
#->PRINT COLUMN 122, "--------------"
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 78, "VALOR BRUTO ",
|
|
COLUMN 118, x.sub_total using "USD$###,###,###.##"
|
|
|
|
IF x.desc_valor <> 0 THEN
|
|
|
|
PRINT COLUMN 77, x.porc_desc using "##"," %DESCUENTO",
|
|
COLUMN 093, x.desc_valor using "###,###,###.##"
|
|
#COLUMN 122, x.desc_valor using "###,###,###.##"
|
|
END IF
|
|
|
|
#-> PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "SUB-TOTAL",
|
|
COLUMN 122, x.sub_total-x.desc_valor using "###,###,###.##"
|
|
IF x.porc_itbi > 0 THEN
|
|
PRINT COLUMN 78, x.porc_itbi using "###.##","%"," ITBIS",
|
|
COLUMN 122, x.itbi using "###,###,###.##"
|
|
END IF
|
|
PRINT COLUMN 122, "--------------"
|
|
PRINT COLUMN 78, "VALOR NETO ",
|
|
COLUMN 118, x.total_fact using "USD$###,###,###.##"
|
|
PRINT COLUMN 122, "=============="
|
|
|
|
END IF
|
|
|
|
PRINT comprimido_of
|
|
#SKIP 8 LINE
|
|
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT doce,comprimido_of
|
|
|
|
LET obs1=observacion[1,50]
|
|
LET obs2=observacion[51,101]
|
|
LET obs3=observacion[102,152]
|
|
LET obs4=observacion[152,180]
|
|
|
|
PRINT COLUMN 3, "OBSERVACIONES: ",UPSHIFT(obs1) CLIPPED," ", UPSHIFT(obs2) CLIPPED
|
|
PRINT COLUMN 3, " ",UPSHIFT(obs3) CLIPPED," ", UPSHIFT(obs4) CLIPPED
|
|
# IF x.ventas = 3 THEN
|
|
# PRINT COLUMN 3, "EXCHANGE RATE : ", x.prima_us USING "###.##"
|
|
# ELSE
|
|
# PRINT " "
|
|
# END IF
|
|
SKIP 2 LINES
|
|
|
|
PRINT COLUMN 4, "NOMBRE TRANSPORTISTA: ",x.nombre_tran, " ",
|
|
"CEDULA: ",p_cedula using "&&&&&&&&&",
|
|
" SERIE: ",p_serie using "&&&"
|
|
|
|
PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x.placa_transp
|
|
{
|
|
SKIP 10 LINES
|
|
PRINT COLUMN 12, x.nombre CLIPPED
|
|
CALL convierte(x.total_fact)
|
|
|
|
PRINT COLUMN 05, valor_letras clipped,
|
|
COLUMN 72, x.total_fact using "###,###,###.##"
|
|
PRINT COLUMN 72, x.factura using "&&&&&"
|
|
|
|
PRINT COLUMN 10, condicion.dias USING "&&"
|
|
}
|
|
SKIP 3 LINES
|
|
PRINT COLUMN 4,"-------------------------------",20 SPACES,
|
|
"-------------------------------"
|
|
|
|
PRINT COLUMN 4," FACTURADO POR ",20 SPACES,
|
|
" REVISADO POR "
|
|
|
|
|
|
SKIP 4 LINES
|
|
END REPORT
|
|
FUNCTION veprfu001()
|
|
DEFINE pagos RECORD
|
|
documento LIKE vetb00002.factura,
|
|
detalle CHAR(30),
|
|
factura LIKE vetb00002.factura,
|
|
cheque_no LIKE cctb00001.num_cheque,
|
|
banco LIKE cctb00001.banco,
|
|
valor_cheque DECIMAL(12,2),
|
|
valor_efectivo DECIMAL (12,2),
|
|
valor_total DEC(12,2)
|
|
END RECORD,
|
|
recibo_existe CHAR(2)
|
|
|
|
OPEN WINDOW captura AT 7,12 WITH FORM "vefmwd013"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST)
|
|
LET recibo_existe = "SI"
|
|
SELECT a.num_doc,a.nombre,a.fecha,a.tipo_cliente,a.sec_cliente,a.documento_ref,a.banco,a.otro_valor,
|
|
a.valor,a.factura
|
|
INTO pagos.documento,pagos.detalle,fact_gral.fecha_factura,fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,pagos.cheque_no,pagos.banco,pagos.valor_cheque,pagos.valor_efectivo,pagos.factura
|
|
FROM cctb00042 a WHERE a.factura = fact_gral.factura AND a.sucid = localidad
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
INPUT BY NAME pagos.*
|
|
BEFORE INPUT
|
|
|
|
|
|
LET pagos.factura = fact_gral.factura
|
|
LET pagos.valor_efectivo = fact_gral.total_fact
|
|
LET pagos.detalle = fact_gral.nombre
|
|
LET recibo_existe = "NO"
|
|
|
|
LET pagos.valor_total = pagos.valor_efectivo
|
|
DISPLAY BY NAME pagos.factura,pagos.valor_efectivo,pagos.detalle,pagos.valor_total,
|
|
pagos.documento,pagos.cheque_no,pagos.factura
|
|
|
|
|
|
AFTER FIELD detalle
|
|
IF pagos.detalle IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD detalle
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET opt3 = fgl_winquestion("SALIR","ESTA SEGURO DE CANCELAR LA OPERACION?","NO","YES|NO","QUESTION",0)
|
|
IF opt3 = "YES" THEN
|
|
|
|
EXIT INPUT
|
|
ELSE
|
|
CONTINUE INPUT
|
|
END IF
|
|
END IF
|
|
IF pagos.valor_cheque IS NULL THEN
|
|
LET pagos.valor_cheque = 0
|
|
END IF
|
|
IF pagos.valor_efectivo IS NULL THEN
|
|
LET pagos.valor_efectivo = 0
|
|
END IF
|
|
|
|
LET pagos.valor_total = pagos.valor_cheque+pagos.valor_efectivo
|
|
DISPLAY BY NAME pagos.valor_total ATTRIBUTE(BOLD)
|
|
|
|
LET opt3 = "NO"
|
|
# LET opt3 = fgl_winquestion("EJECUTAR","ESTA SEGURO DE EMITIR ESTE RECIBO?","YES","YES|NO","QUESTION",0)
|
|
IF opt3 = "NO" THEN
|
|
CONTINUE INPUT
|
|
END IF
|
|
END INPUT
|
|
IF INT_FLAG THEN
|
|
LET int_flag = FALSE
|
|
CLOSE WINDOW captura
|
|
RETURN
|
|
END IF
|
|
LET p_fecha_ven = "01/01/01"
|
|
LET fact_gral.total_fact = fact_gral.total_fact * -1
|
|
|
|
IF fact_gral.total_fact IS NULL THEN
|
|
LET fact_gral.total_fact = 0
|
|
END IF
|
|
IF recibo_existe = "NO" THEN
|
|
IF fact_gral.total_fact <> 0 THEN
|
|
LET pagos.documento = 0
|
|
# para marmotech se esta continuando con la secuencia en el tipo de documento AV
|
|
SELECT ult_recibo INTO pagos.documento FROM cctb00003 WHERE tipo_doc = "RC"
|
|
|
|
IF pagos.documento IS NULL THEN
|
|
LET pagos.documento = 0
|
|
END IF
|
|
LET pagos.documento = pagos.documento + 1
|
|
DISPLAY BY NAME pagos.documento
|
|
|
|
INSERT INTO cctb00042 (num_doc,tipo_doc,nombre,fecha,tipo_cliente,sec_cliente,documento_ref,
|
|
banco,otro_valor,
|
|
valor,us_crea,fech_crea,sucid)
|
|
VALUES (pagos.documento,'RC',fact_gral.nombre,fact_gral.fecha_factura,fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
pagos.cheque_no,pagos.banco,pagos.valor_cheque,pagos.valor_efectivo,usuarios,getdate(),localidad)
|
|
|
|
|
|
INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,
|
|
fecha_ven,aplica_a,localidad_aplica_a,num_cheque,valor,valor_efectivo,
|
|
valor_cheque,monto_Desc,
|
|
us_crea,fech_crea,bodega,sucid,documento_ref,banco)
|
|
VALUES (fact_gral.cod_cia,"RC",pagos.documento,
|
|
fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven,
|
|
fact_gral.factura,localidad,pagos.cheque_no,
|
|
fact_gral.total_fact,pagos.valor_efectivo,pagos.valor_cheque,
|
|
0,usuarios,getdate(),localidad,localidad,pconduce,fact_gral.conduce)
|
|
|
|
LET fact_gral.total_fact = fact_gral.total_fact * -1
|
|
UPDATE cctb00003 SET ult_recibo = pagos.documento WHERE tipo_doc = "RC"
|
|
|
|
END IF
|
|
ELSE
|
|
DISPLAY BY NAME pagos.*
|
|
END IF
|
|
LET opt3 = "NO"
|
|
#LET opt3 = fgl_winquestion("EJECUTAR","ESTA SEGURO DE EMITIR ESTE RECIBO?","YES","YES|NO","QUESTION",0)
|
|
IF opt3 = "YES" THEN
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
LET p_companias.nombre= sucnombre
|
|
START REPORT volante TO archivo
|
|
OUTPUT TO REPORT volante(fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.fecha_factura,
|
|
pagos.documento,fact_gral.sec_vend,"RC"," ",pagos.banco,fact_gral.factura,
|
|
0,pagos.valor_total,fact_gral.nombre,fact_gral.nombre_vend," ",pagos.banco)
|
|
|
|
|
|
|
|
FINISH REPORT volante
|
|
IF salida = "MA" THEN
|
|
RUN imprime
|
|
END IF
|
|
|
|
END IF
|
|
CLOSE WINDOW captura
|
|
END IF
|
|
END FUNCTION
|
|
|
|
FUNCTION anular()
|
|
DEFINE motivo VARCHAR(200)
|
|
LET p_fact_no = fact_gral.factura
|
|
|
|
INPUT BY NAME motivo
|
|
AFTER INPUT
|
|
IF motivo IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD motivo
|
|
END IF
|
|
LET bandera = 0
|
|
CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
EXIT INPUT
|
|
END IF
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
IF bandera = 1 THEN
|
|
RETURN
|
|
END IF
|
|
SET CONNECTION "MSSQL_E"
|
|
|
|
#CONTROL DOCUMENTO CUENTAS POR COBRAR
|
|
|
|
SELECT DISTINCT a.aplica_a FROM cctb00001 a
|
|
WHERE a.aplica_a = p_fact_no AND
|
|
a.tipo_cliente = fact_gral.tipo_cliente AND
|
|
a.sec_cliente = fact_gral.sec_cliente AND
|
|
a.tipo_doc NOT IN ("FT","FE",'AP','PC') AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage("ERROR","NO PUEDE ANULAR FACTURA, TIENE DOCUMENTOS EN CUENTAS POR COBRAR","INFO")
|
|
RETURN
|
|
END IF
|
|
|
|
BEGIN WORK
|
|
UPDATE vetb00002 SET observaciones = motivo,
|
|
status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE factura = p_fact_no AND sucid = localidad
|
|
|
|
UPDATE iptb00006 SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_doc = p_fact_no AND cod_mov IN (30,31,32,55) AND
|
|
bodega = localidad
|
|
|
|
UPDATE vetb00003 SET status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE factura = p_fact_no AND sucid =localidad
|
|
|
|
UPDATE cctb00001 SET status_t = "E",
|
|
us_mod = USUARIOS,
|
|
fech_mod = getdate()
|
|
WHERE num_doc = p_fact_no AND (tipo_doc = "FT" or tipo_doc = "FE") AND
|
|
sucid = localidad
|
|
UPDATE cctb00001 SET status_t = "E",
|
|
us_mod = USUARIOS,
|
|
fech_mod = getdate()
|
|
WHERE aplica_a = p_fact_no AND tipo_doc = "RC" AND
|
|
sucid = localidad
|
|
|
|
COMMIT WORK
|
|
# SET CONNECTION "MSSQL_C"
|
|
|
|
UPDATE vetb00002 SET factura_ext = NULL,us_mod = usuarios,fech_mod = getdate()
|
|
WHERE factura_Ext =p_fact_no AND sucoid = localidad AND status_t IS null
|
|
|
|
CALL fgl_Winmessage("INFO","FACTURA ANULADA","INFO")
|
|
|
|
END FUNCTION
|
|
FUNCTION precios()
|
|
# AQUI HAY QUE BUSCAR EL PRECIO PARA CALCULAR POR CLIENTE
|
|
LET p_costos1 = 0
|
|
SELECT precio INTO p_costos1 FROM vetb00025
|
|
WHERE ventas = fact_gral.ventas AND tipo_cliente = fact_gral.tipo_cliente AND
|
|
sec_cliente = fact_gral.sec_cliente AND cod_n=fact_det[curr].cod_n AND
|
|
cod_grupo=fact_det[curr].cod_grupo AND cod_tipo=fact_det[curr].cod_tipo
|
|
AND cod_sec = fact_det[curr].cod_sec AND status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
SELECT precio INTO p_costos1 FROM vetb00025
|
|
WHERE ventas = fact_gral.ventas AND tipo_cliente IS NULL AND
|
|
sec_cliente IS NULL AND cod_n = fact_det[curr].cod_n AND
|
|
cod_grupo = fact_det[curr].cod_grupo AND
|
|
cod_tipo = fact_det[curr].cod_tipo AND
|
|
cod_sec = fact_det[curr].cod_sec AND status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 85
|
|
CALL msg(numero_msg)
|
|
LET verdad = "N"
|
|
END IF
|
|
{IF fact_det[curr].cod_n = 2 THEN
|
|
LET verdad = "N"
|
|
END IF}
|
|
END IF
|
|
|
|
LET fact_det[curr].precio = p_costos1
|
|
END FUNCTION
|
|
|
|
FUNCTION ver_desc()
|
|
OPEN WINDOW descuentos AT 10,5 WITH FORM "vefmwd007" ATTRIBUTE
|
|
(BORDER,FORM LINE FIRST +1,COMMENT LINE LAST -1,MESSAGE LINE LAST)
|
|
CALL set_count(h-1)
|
|
DISPLAY ARRAY descuenta TO s_desc.*
|
|
CLOSE WINDOW descuentos
|
|
END FUNCTION
|
|
|
|
FUNCTION detalles()
|
|
OPEN WINDOW wdetalle AT 12,2 WITH FORM "vefmwd075"
|
|
ATTRIBUTE(BORDER,FORM LINE FIRST +1)
|
|
INPUT BY NAME observacion WITHOUT DEFAULTS
|
|
CLOSE WINDOW wdetalle
|
|
END FUNCTION
|
|
|
|
FUNCTION cantidad_desp(forden,fcod_n,fcod_tipo,fcod_grupo,fcod_sec)
|
|
DEFINE forden INTEGER,
|
|
fcod_n,fcod_tipo,fcod_grupo,fcod_sec SMALLINT
|
|
|
|
SELECT SUM(b.cantidad) INTO cant_vend
|
|
FROM vetb00002 a, vetb00003 b
|
|
WHERE a.orden = forden AND a.fecha_factura > "31122000"
|
|
AND a.factura = b.factura
|
|
AND b.cod_n = fcod_n
|
|
AND b.cod_tipo = fcod_tipo
|
|
AND b.cod_grupo = fcod_grupo
|
|
AND b.cod_sec = fcod_sec
|
|
AND a.status_t IS NULL
|
|
and b.status_t is NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET cant_vend = 0
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION actualiza_st(forden)
|
|
DEFINE forden INTEGER,
|
|
prod_total,vent_total DEC(8,2)
|
|
|
|
SELECT SUM(a.cantidad) INTO prod_total FROM prtb00013 a
|
|
WHERE a.num_oc = forden
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET prod_total = 0
|
|
END IF
|
|
|
|
SELECT SUM(b.cantidad) INTO vent_total
|
|
FROM vetb00002 a, vetb00003 b
|
|
WHERE a.orden = forden AND a.fecha_factura > "31122000"
|
|
AND a.factura = b.factura
|
|
AND a.tipo_cliente = fact_gral.tipo_cliente
|
|
AND a.sec_cliente = fact_gral.sec_cliente
|
|
AND a.status_t IS NULL
|
|
AND b.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET vent_total = 0
|
|
END IF
|
|
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION convierte(valor_origen) # Funcion para convertir de valor a letras
|
|
DEFINE valor_origen DECIMAL(12,2)
|
|
DEFINE consegui CHAR(1)
|
|
DEFINE p,miles,m,k,a,b,d,c,entero,unidades_mi,unidades_m,unidad,mil,millon,
|
|
unid_c,u INTEGER
|
|
DEFINE cheles DECIMAL (7,2)
|
|
CALL letras()
|
|
LET valor_letras = null
|
|
LET consegui = "N"
|
|
LET entero = valor_origen
|
|
LET cheles = (valor_origen - entero) * 100
|
|
LET unidad = entero / 100
|
|
LET unidad = entero - (unidad * 100)
|
|
LET a = entero / 1000
|
|
LET a = entero - (a * 1000)
|
|
LET d = entero - 19
|
|
|
|
IF d >= 82 THEN
|
|
LET c = entero / 100
|
|
# Para Controlar los miles y los cientos
|
|
IF c <= 9 THEN
|
|
LET valor_letras = valor_letras clipped," ",centenas[c] clipped
|
|
ELSE
|
|
LET c = entero / 1000
|
|
LET b = entero / 1000000
|
|
END IF
|
|
|
|
IF d > 19 THEN
|
|
LET d = unidad - 19
|
|
END IF
|
|
|
|
IF unidad > 0 and unidad < 20 THEN
|
|
LET d = unidad
|
|
LET valor_letras = valor_letras clipped," ",unidades1[d] clipped
|
|
LET consegui = "S"
|
|
END IF
|
|
|
|
ELSE
|
|
IF d > 0 AND d <= 81 THEN
|
|
LET valor_letras = valor_letras clipped," ",decenas[d] clipped
|
|
LET consegui = "S"
|
|
END IF
|
|
END IF
|
|
|
|
# Para controlar los miles
|
|
|
|
IF entero > 999 THEN
|
|
LET unidades_m = a / 100
|
|
LET unidades_m = a - (unidades_m * 100)
|
|
LET valor_letras = null
|
|
|
|
IF c = 1 THEN
|
|
LET valor_letras = "MIL"
|
|
END IF
|
|
|
|
IF c > 1 and c <= 19 THEN
|
|
LET valor_letras = valor_letras clipped," ",unidades1[c] clipped," ","MIL"
|
|
END IF
|
|
|
|
IF c >= 20 and c <= 999 THEN
|
|
|
|
IF c < 82 THEN
|
|
LET c = c - 19
|
|
LET valor_letras = valor_letras clipped," ",decenas[c] clipped
|
|
ELSE
|
|
LET k = c / 100
|
|
LET valor_letras = valor_letras clipped," ",centenas[k] clipped
|
|
LET unid_c = c - (k * 100)
|
|
|
|
IF unid_c >= 20 THEN
|
|
LET unid_c = unid_c - 19
|
|
LET valor_letras = valor_letras clipped," ",decenas[unid_c] clipped
|
|
END IF
|
|
END IF
|
|
LET valor_letras = valor_letras clipped," ","MIL"
|
|
END IF
|
|
|
|
LET c = a
|
|
IF c > 100 THEN
|
|
LET c = c / 100
|
|
LET valor_letras = valor_letras clipped," ",centenas[c] clipped
|
|
END IF
|
|
|
|
IF c = 100 THEN
|
|
LET valor_letras = valor_letras clipped," ",decenas[81] clipped
|
|
END IF
|
|
|
|
IF unidades_m > 0 and unidades_m <= 19 THEN
|
|
LET a = unidades_m
|
|
LET valor_letras = valor_letras clipped, " ",unidades1[a] clipped
|
|
{ ELSE
|
|
LET a = unidades_m - 19
|
|
LET valor_letras = valor_letras clipped, " ",unidades1[a] clipped}
|
|
END IF
|
|
END IF
|
|
|
|
# Para Controlar cantidades en millones
|
|
|
|
IF entero > 999999 THEN
|
|
LET c = 0
|
|
LET miles = entero - 1000000
|
|
LET m = miles / 1000
|
|
LET p = miles - (m * 1000)
|
|
LET u = m / 100
|
|
LET u = m - (u * 100)
|
|
LET unidades_mi = p
|
|
LET unidades_mi = unidades_mi / 100
|
|
LET unidades_mi = p - (unidades_mi * 100)
|
|
LET valor_letras = null
|
|
|
|
IF b = 1 THEN
|
|
LET valor_letras = "UN MILLON"
|
|
END IF
|
|
|
|
IF b > 1 and b <= 19 THEN
|
|
LET valor_letras = valor_letras clipped," ",unidades1[b] clipped," ",
|
|
"MILLONES"
|
|
END IF
|
|
|
|
IF b >= 20 and b <= 999999 THEN
|
|
IF b < 82 THEN
|
|
LET b = b - 19
|
|
LET valor_letras = valor_letras clipped," ",decenas[b] clipped," ",
|
|
"MILLONES"
|
|
ELSE
|
|
LET k = b / 100
|
|
LET valor_letras = valor_letras clipped," ",centenas[k] clipped," ",
|
|
"MILLONES"
|
|
END IF
|
|
END IF
|
|
|
|
LET b = m
|
|
IF b > 100 THEN
|
|
LET b = b / 100
|
|
LET valor_letras = valor_letras clipped," ",centenas[b] clipped
|
|
|
|
IF u > 0 and u <= 19 THEN
|
|
|
|
IF u = 1 THEN
|
|
LET unidades1[1] = "UN"
|
|
END IF
|
|
|
|
LET valor_letras = valor_letras clipped," ",unidades1[u] clipped
|
|
END IF
|
|
LET valor_letras = valor_letras clipped," ","MIL"
|
|
END IF
|
|
|
|
IF p > 100 THEN
|
|
LET p = p / 100
|
|
LET valor_letras = valor_letras clipped," ",centenas[p] clipped
|
|
END IF
|
|
|
|
IF unidades_mi > 0 and unidades_mi < 19 THEN
|
|
LET m = unidades_mi
|
|
LET valor_letras = valor_letras clipped, " ",unidades1[m] clipped
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF unidad > 0 and unidad < 20 AND consegui = "N" THEN
|
|
LET d = unidad
|
|
LET valor_letras = valor_letras clipped," ",unidades1[d] clipped
|
|
END IF
|
|
|
|
IF unidad >= 20 AND d <= 81 AND consegui = "N" THEN
|
|
LET valor_letras = valor_letras clipped," ",decenas[d] clipped
|
|
END IF
|
|
LET valor_letras = valor_letras clipped," ","CON"," ",
|
|
cheles using "&&", "/100"
|
|
END FUNCTION
|
|
|
|
FUNCTION letras()
|
|
|
|
LET unidades1[1] = "UNO"
|
|
LET unidades1[2] = "DOS"
|
|
LET unidades1[3] = "TRES"
|
|
LET unidades1[4] = "CUATRO"
|
|
LET unidades1[5] = "CINCO"
|
|
LET unidades1[6] = "SEIS"
|
|
LET unidades1[7] = "SIETE"
|
|
LET unidades1[8] = "OCHO"
|
|
LET unidades1[9] = "NUEVE"
|
|
LET unidades1[10] = "DIEZ"
|
|
LET unidades1[11] = "ONCE"
|
|
LET unidades1[12] = "DOCE"
|
|
LET unidades1[13] = "TRECE"
|
|
LET unidades1[14] = "CATORCE"
|
|
LET unidades1[15] = "QUINCE"
|
|
LET unidades1[16] = "DIESISEIS"
|
|
LET unidades1[17] = "DIESISIETE"
|
|
LET unidades1[18] = "DIESIOCHO"
|
|
LET unidades1[19] = "DIESINUEVE"
|
|
|
|
|
|
LET decenas[1] = "VEINTE"
|
|
LET decenas[2] = "VEINTE Y UNO"
|
|
LET decenas[3] = "VEINTE Y DOS"
|
|
LET decenas[4] = "VEINTE Y TRES"
|
|
LET decenas[5] = "VEINTE Y CUATRO"
|
|
LET decenas[6] = "VEINTE Y CINCO"
|
|
LET decenas[7] = "VEINTE Y SEIS"
|
|
LET decenas[8] = "VEINTE Y SIETE"
|
|
LET decenas[9] = "VEINTE Y OCHO"
|
|
LET decenas[10] = "VEINTE Y NUEVE"
|
|
LET decenas[11] = "TREINTA"
|
|
LET decenas[12] = "TREINTA Y UNO"
|
|
LET decenas[13] = "TREINTA Y DOS"
|
|
LET decenas[14] = "TREINTA Y TRES"
|
|
LET decenas[15] = "TREINTA Y CUATRO"
|
|
LET decenas[16] = "TREINTA Y CINCO"
|
|
LET decenas[17] = "TREINTA Y SEIS"
|
|
LET decenas[18] = "TREINTA Y SIETE"
|
|
LET decenas[19] = "TREINTA Y OCHO"
|
|
LET decenas[20] = "TREINTA Y NUEVE"
|
|
LET decenas[21] = "CUARENTA"
|
|
LET decenas[22] = "CUARENTA Y UNO"
|
|
LET decenas[23] = "CUARENTA Y DOS"
|
|
LET decenas[24] = "CUARENTA Y TRES"
|
|
LET decenas[25] = "CUARENTA Y CUATRO"
|
|
LET decenas[26] = "CUARENTA Y CINCO"
|
|
LET decenas[27] = "CUARENTA Y SEIS"
|
|
LET decenas[28] = "CUARENTA Y SIETE"
|
|
LET decenas[29] = "CUARENTA Y OCHO"
|
|
LET decenas[30] = "CUARENTA Y NUEVE"
|
|
LET decenas[31] = "CINCUENTA"
|
|
LET decenas[32] = "CINCUENTA Y UNO"
|
|
LET decenas[33] = "CINCUENTA Y DOS"
|
|
LET decenas[34] = "CINCUENTA Y TRES"
|
|
LET decenas[35] = "CINCUENTA Y CUATRO"
|
|
LET decenas[36] = "CINCUENTA Y CINCO"
|
|
LET decenas[37] = "CINCUENTA Y SEIS"
|
|
LET decenas[38] = "CINCUENTA Y SIETE"
|
|
LET decenas[39] = "CINCUENTA Y OCHO"
|
|
LET decenas[40] = "CINCUENTA Y NUEVE"
|
|
LET decenas[41] = "SESENTA"
|
|
LET decenas[42] = "SESENTA Y UNO"
|
|
LET decenas[43] = "SESENTA Y DOS"
|
|
LET decenas[44] = "SESENTA Y TRES"
|
|
LET decenas[45] = "SESENTA Y CUATRO"
|
|
LET decenas[46] = "SESENTA Y CINCO"
|
|
LET decenas[47] = "SESENTA Y SEIS"
|
|
LET decenas[48] = "SESENTA Y SIETE"
|
|
LET decenas[49] = "SESENTA Y OCHO"
|
|
LET decenas[50] = "SESENTA Y NUEVE"
|
|
LET decenas[51] = "SETENTA"
|
|
LET decenas[52] = "SETENTA Y UNO"
|
|
LET decenas[53] = "SETENTA Y DOS"
|
|
LET decenas[54] = "SETENTA Y TRES"
|
|
LET decenas[55] = "SETENTA Y CUATRO"
|
|
LET decenas[56] = "SETENTA Y CINCO"
|
|
LET decenas[57] = "SETENTA Y SEIS"
|
|
LET decenas[58] = "SETENTA Y SIETE"
|
|
LET decenas[59] = "SETENTA Y OCHO"
|
|
LET decenas[60] = "SETENTA Y NUEVE"
|
|
LET decenas[61] = "OCHENTA"
|
|
LET decenas[62] = "OCHENTA Y UNO"
|
|
LET decenas[63] = "OCHENTA Y DOS"
|
|
LET decenas[64] = "OCHENTA Y TRES"
|
|
LET decenas[65] = "OCHENTA Y CUATRO"
|
|
LET decenas[66] = "OCHENTA Y CINCO"
|
|
LET decenas[67] = "OCHENTA Y SEIS"
|
|
LET decenas[68] = "OCHENTA Y SIETE"
|
|
LET decenas[69] = "OCHENTA Y OCHO"
|
|
LET decenas[70] = "OCHENTA Y NUEVE"
|
|
LET decenas[71] = "NOVENTA"
|
|
LET decenas[72] = "NOVENTA Y UNO"
|
|
LET decenas[73] = "NOVENTA Y DOS"
|
|
LET decenas[74] = "NOVENTA Y TRES"
|
|
LET decenas[75] = "NOVENTA Y CUATRO"
|
|
LET decenas[76] = "NOVENTA Y CINCO"
|
|
LET decenas[77] = "NOVENTA Y SEIS"
|
|
LET decenas[78] = "NOVENTA Y SIETE"
|
|
LET decenas[79] = "NOVENTA Y OCHO"
|
|
LET decenas[80] = "NOVENTA Y NUEVE"
|
|
LET decenas[81] = "CIEN"
|
|
|
|
LET centenas[1] = "CIENTO"
|
|
LET centenas[2] = "DOCIENTOS"
|
|
LET centenas[3] = "TRESCIENTOS"
|
|
LET centenas[4] = "CUATROCIENTOS"
|
|
LET centenas[5] = "QUINIENTOS"
|
|
LET centenas[6] = "SEISCIENTOS"
|
|
LET centenas[7] = "SETECIENTOS"
|
|
LET centenas[8] = "OCHOCIENTOS"
|
|
LET centenas[9] = "NOVECIENTOS"
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION after_all()
|
|
|
|
# Calculo del sub-total de la factura
|
|
LET fact_gral.itbi = 0
|
|
LET fact_gral.sub_total = 0
|
|
LET fact_gral.total_fact = 0
|
|
LET fact_gral.desc_valor = 0
|
|
|
|
FOR idx = 1 to t_arr
|
|
IF fact_det[idx].cantidad IS NOT NULL THEN
|
|
LET fact_gral.sub_total = fact_gral.sub_total + (fact_det[idx].cantidad * fact_det[idx].precio)
|
|
END IF
|
|
END FOR
|
|
|
|
DISPLAY BY NAME fact_gral.sub_total
|
|
|
|
FOR idx = 1 to arr_count()
|
|
IF fact_det[idx].cantidad IS NOT NULL THEN
|
|
LET fact_det[idx].monto_fact = fact_det[idx].cantidad * fact_det[idx].precio
|
|
|
|
IF fact_det[idx].cantidad_2 > 0 THEN #-> calcula el valor en descuento para cada articulo vg
|
|
LET valor_desc = 0
|
|
LET valor_desc = fact_det[idx].monto_fact * (fact_det[idx].cantidad_2 / 100)
|
|
LET fact_gral.desc_valor = fact_gral.desc_valor + valor_desc
|
|
LET fact_det[idx].monto_fact = fact_det[idx].monto_fact - valor_desc
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
DISPLAY BY NAME fact_gral.desc_valor
|
|
|
|
# Calcula el porciento de ITBIS de la factura dependiendo del porciento
|
|
# especificado por el usuario
|
|
DISPLAY "CH ITBIS ",ch_itbi," porc itbis ",fact_gral.porc_itbi
|
|
IF ch_itbi = 'N' THEN
|
|
LET fact_gral.porc_itbi=0
|
|
END IF
|
|
|
|
IF fact_gral.porc_itbi IS NOT NULL THEN
|
|
LET fact_gral.itbi=((fact_gral.sub_total - fact_gral.desc_valor)* fact_gral.porc_itbi/100)
|
|
#- LET fact_gral.itbi=(fact_gral.sub_total * fact_gral.porc_itbi/100)
|
|
ELSE
|
|
LET fact_gral.itbi=0
|
|
END IF
|
|
|
|
LET itbi = fact_gral.itbi using "###,###,###.##"
|
|
DISPLAY BY NAME fact_gral.itbi ATTRIBUTE (BOLD)
|
|
|
|
# Calculo total de la factura
|
|
|
|
LET fact_gral.total_fact = (fact_gral.sub_total - fact_gral.desc_valor)+ fact_gral.itbi
|
|
|
|
DISPLAY BY NAME fact_gral.total_fact,fact_gral.porc_itbi ATTRIBUTE (BOLD)
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION veprmf001()
|
|
DEFINE tot_porc dec(8,2),
|
|
cod_fact,mes_chequeo SMALLINT
|
|
SET CONNECTION "MSSQL_E"
|
|
|
|
INPUT BY NAME salida
|
|
CONSTRUCT criterio ON a.factura,a.fecha_factura,a.tipo_cliente,a.sec_cliente,a.orden,
|
|
a.cod_vend,a.conduce
|
|
FROM factura,fecha_factura,tipo_cliente,sec_cliente,orden,factura_e,
|
|
conduce
|
|
IF INT_FLAG THEN
|
|
LET INT_FLAG = FALSE
|
|
CALL msg(2)
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec =
|
|
"SELECT a.cod_cia,a.ventas,a.zona,a.factura,CONVERT(CHAR(10),a.fecha_factura,103), ",
|
|
" a.tipo_cliente,a.sec_cliente,d.nombre,A.PRIMA_US,A.PORC_DESC,a.cond_pago,",
|
|
" a.orden,CONVERT(CHAR(10),a.fecha_orden,103),a.conduce,CONVERT(CHAR(10),a.fecha_conduce,103),a.porc_itbi,a.cod_vend, ",
|
|
" a.sec_vend,RTRIM(f.nom1_emp)+' '+RTRIM(f.apell1_Emp),a.sub_total,a.monto_desc, ",
|
|
" a.monto_itbi,a.neto,c.codigo_dgii,c.NCF,' ',d.cod_provincia,a.cod_vend, ",
|
|
" g.tipo_ncf,h.sucnombre,h.sucid,a.documento,CONVERT(CHAR(10),g.fecha_vencimiento,103),
|
|
d.telefono,d.telex,a.factura_c,a.observaciones ",
|
|
"FROM vetb00002 a LEFT OUTER JOIN vetb00072 c ON c.documento = a.factura AND c.tipo_Doc = 'FT' and a.sucid = c.sucid
|
|
LEFT OUTER JOIN vetb00071 g ON g.codigo_dgii = c.codigo_dgii,
|
|
vetb00004 d,adtb00003 f,sucursales h where ",criterio clipped,
|
|
" AND ",
|
|
" a.tipo_cliente = d.tipo_cliente and a.sec_cliente = d.sec_cliente ",
|
|
" and a.sec_vend = f.num_emp and ",
|
|
" a.sucid = h.sucid ",
|
|
" ORDER BY a.cod_cia,a.factura"
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE consulta SCROLL CURSOR FOR comando
|
|
OPEN consulta
|
|
|
|
FETCH FIRST consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us,
|
|
cons_fact.porc_desc,
|
|
cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce,
|
|
cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend,
|
|
cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact,
|
|
codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre,
|
|
localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex,pconduce,
|
|
observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
CALL info()
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
DISPLAY descripcion TO descripcion_ncf
|
|
DISPLAY pubicacion TO sucnombre
|
|
|
|
DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us,
|
|
cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,
|
|
cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total,
|
|
cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact,
|
|
cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre,
|
|
codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento,
|
|
pconduce,observacion
|
|
MENU "NAVEGACION:"
|
|
COMMAND "Siguiente"
|
|
FETCH NEXT consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us,cons_fact.porc_desc,
|
|
cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce,
|
|
cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend,
|
|
cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact,
|
|
codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre,
|
|
localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex,pconduce,
|
|
observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
DISPLAY descripcion TO descripcion_ncf
|
|
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
|
|
CALL ccondicion()
|
|
|
|
CALL info()
|
|
DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us,
|
|
cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,
|
|
cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total,
|
|
cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact,
|
|
cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre,
|
|
codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento,
|
|
pconduce,observacion
|
|
DISPLAY p_companias.nombre TO sucnombre
|
|
|
|
COMMAND "Anterior"
|
|
FETCH PREVIOUS consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us,cons_fact.porc_desc,
|
|
cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce,
|
|
cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend,
|
|
cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact,
|
|
codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre,
|
|
localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex,pconduce
|
|
,observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
DISPLAY descripcion TO descripcion_ncf
|
|
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
|
|
CALL ccondicion()
|
|
CALL info()
|
|
DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us,
|
|
cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,
|
|
cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total,
|
|
cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact,
|
|
cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre,
|
|
codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento,
|
|
pconduce,observacion
|
|
DISPLAY p_companias.nombre TO sucnombre
|
|
|
|
|
|
COMMAND "Primero"
|
|
FETCH FIRST consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us,cons_fact.porc_desc,
|
|
cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce,
|
|
cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend,
|
|
cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact,
|
|
codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre,
|
|
localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex,
|
|
pconduce,observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
DISPLAY descripcion TO descripcion_ncf
|
|
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
CALL info()
|
|
DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us,
|
|
cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,
|
|
cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total,
|
|
cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact,
|
|
cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre,
|
|
codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento,
|
|
pconduce,observacion
|
|
DISPLAY p_companias.nombre TO sucnombre
|
|
|
|
COMMAND "Ultimo"
|
|
FETCH LAST consulta INTO cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.factura,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.nombre,cons_fact.prima_us,cons_fact.porc_desc,
|
|
cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,cons_fact.conduce,cons_fact.fecha_conduce,
|
|
cons_fact.porc_itbi,cons_fact.cod_vend,cons_fact.sec_vend,cons_fact.nombre_vend,
|
|
cons_Fact.sub_total,cons_fact.desc_valor,cons_fact.itbi,cons_fact.total_fact,
|
|
codigodgii,kncf,pubicacion,codigo_provincia,pconduce,descripcion,p_companias.nombre,
|
|
localidad,documento_ref,fecha_vencimiento,cliente_bas.telefono,cliente_bas.telex,
|
|
pconduce,observacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
DISPLAY descripcion TO descripcion_ncf
|
|
|
|
LET pcondicion = ui.ComboBox.forName("formonly.cond_pago")
|
|
CALL ccondicion()
|
|
|
|
CALL info()
|
|
DISPLAY BY NAME cons_fact.cod_cia,cons_fact.ventas,cons_fact.zona,cons_fact.fecha_factura,
|
|
cons_fact.tipo_cliente,cons_fact.sec_cliente,cons_fact.prima_us,
|
|
cons_fact.porc_desc,cons_fact.cond_pago,cons_fact.orden,cons_fact.fecha_orden,
|
|
cons_fact.fecha_conduce,cons_fact.fecha_embarque,cons_fact.sub_total,
|
|
cons_fact.itbi,cons_fact.nombre_vend,cons_fact.porc_itbi,cons_fact.total_fact,
|
|
cons_fact.desc_valor,cons_fact.conduce,cons_fact.nombre,
|
|
codigodgii,kncf,cons_fact.sec_vend,pconduce,cons_fact.factura,documento_ref,fecha_vencimiento,
|
|
pconduce,observacion
|
|
|
|
DISPLAY p_companias.nombre TO sucnombre
|
|
|
|
# COMMAND "Recibo"
|
|
# CALL veprfu001()
|
|
COMMAND "ITEMS"
|
|
LET xconduce_almacen = NULL
|
|
LET descripcion_bodega =null
|
|
|
|
LET selec =
|
|
"SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descripcion,b.unidad_med, ",
|
|
" a.cantidad,a.precio,a.cantidad_2,(a.cantidad*a.precio)*(a.cantidad_2/100), ",
|
|
" (a.cantidad*a.precio) -(a.cantidad*a.precio)*(a.cantidad_2/100),'0','0',a.id_kit ",
|
|
" FROM vetb00003 a LEFT OUTER JOIN iptb00002 b ON ",
|
|
" 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 ",
|
|
" WHERE a.factura = ? AND ",
|
|
" a.sucid = ",localidad
|
|
|
|
PREPARE cmdfact FROM selec
|
|
DECLARE busca_items CURSOR FOR cmdfact
|
|
OPEN busca_items USING cons_fact.factura
|
|
|
|
CALL fact_det.clear()
|
|
|
|
LET idx = 1
|
|
FOREACH busca_items INTO fact_Det[idx].*
|
|
LET valor_Desc = (fact_det[idx].cantidad * fact_det[idx].precio) * (fact_Det[idx].cantidad_2 / 100)
|
|
IF valor_desc IS NULL THEN
|
|
LET valor_desc = 0
|
|
END IF
|
|
IF fact_det[idx].descrip_esp IS NULL THEN
|
|
SELECT a.descrip_esp INTO fact_det[idx].descrip_esp FROM iptb00002 a
|
|
WHERE a.cod_n = fact_det[idx].cod_n AND
|
|
a.cod_grupo = fact_det[idx].cod_grupo AND
|
|
a.cod_tipo = fact_det[idx].cod_tipo AND
|
|
a.cod_sec = fact_det[idx].cod_sec
|
|
END IF
|
|
LET fact_det[idx].monto_fact = (fact_Det[idx].precio * fact_det[idx].cantidad)- valor_desc
|
|
LET cod_fact = 1
|
|
LET p_bonifica[idx] = 0
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx-1)
|
|
|
|
DISPLAY ARRAY fact_det TO s_fact.*
|
|
AFTER DISPLAY
|
|
IF INT_FLAG THEN
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT DISPLAY
|
|
END DISPLAY
|
|
|
|
|
|
IF pconduce IS NOT NULL THEN
|
|
CALL conduces()
|
|
SET CONNECTION "MSSQL_E"
|
|
END IF
|
|
|
|
SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc,a.cod_perfil
|
|
INTO localidad,sucnombre,direccion_sucursal,xnombre_provincia,
|
|
p_companias.telefono,p_companias.fax,p_companias.rnc,pperfil
|
|
FROM seg0001 a,sucursales b,vetb00020 c
|
|
WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia
|
|
|
|
{ IF salida = "MA" THEN
|
|
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
START REPORT imp_fact1 TO archivo
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
OUTPUT TO REPORT imp_fact1(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact,kncf,codigodgii)
|
|
|
|
END FOR
|
|
FINISH REPORT imp_fact1
|
|
RUN imprime
|
|
}
|
|
# ELSE
|
|
LET r_filename ='veprmt022.4rp'
|
|
|
|
LET r_output=salida
|
|
LET preview = TRUE
|
|
|
|
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
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT imp_factura TO XML HANDLER handler
|
|
|
|
FOR idx = 1 TO fact_det.getLength()
|
|
IF fact_det[idx].cod_n IS NOT NULL AND
|
|
fact_det[idx].cod_grupo IS NOT NULL AND
|
|
fact_det[idx].cod_tipo IS NOT NULL AND
|
|
fact_det[idx].cod_sec IS NOT NULL AND
|
|
fact_det[idx].cantidad IS NOT NULL AND
|
|
fact_det[idx].cantidad > 0 THEN
|
|
LET cod_fact = 1
|
|
|
|
OUTPUT TO REPORT imp_factura(fact_gral.*,fact_det[idx].*,tot_porc,
|
|
p_bonifica[idx],cod_fact,kncf,codigodgii)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT imp_factura
|
|
END IF
|
|
# END IF
|
|
ON ACTION anular
|
|
CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
CONTINUE MENU
|
|
END IF
|
|
|
|
CALL seg000(usuarios,pperfil,'anular.veprmt022') RETURNING accesso
|
|
|
|
IF accesso = "SI" THEN
|
|
|
|
LET opt1 = fgl_winquestion("ANULAR","ESTA SEGURO DE ANULAR ESTA FACTURA?","NO","NO|YES","QUESTION",0)
|
|
IF opt1 = "YES" THEN
|
|
LET mes_chequeo = MONTH(TODAY)
|
|
CALL anular()
|
|
UPDATE seg0001 SET ultimo_programa_ejecutado = 'anular.veprmt022',
|
|
fecha_ultimo_login = getdate()
|
|
WHERE usuario = usuarios
|
|
END IF
|
|
ELSE
|
|
CALL fgl_winmessage("INFO","USTED NO TIENE PERMISOS PARA UTILIZAR ESTA OPCION","INFO")
|
|
CONTINUE MENU
|
|
END IF
|
|
|
|
COMMAND "Retornar"
|
|
CLEAR FORM
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
|
|
FUNCTION info()
|
|
DEFINE bdireccion STRING
|
|
LET estatus = NULL
|
|
SELECT UNIQUE status_t,status_impresion INTO estatus,p_impresion
|
|
FROM vetb00002 WHERE factura = cons_fact.factura AND sucid = localidad
|
|
|
|
IF estatus = "E" THEN
|
|
LET estado.nula = "NULA"
|
|
ELSE
|
|
LET estado.nula = "ACTIVA"
|
|
END IF
|
|
|
|
IF p_impresion = "S" THEN
|
|
LET estado.impresa = "Impresa"
|
|
ELSE
|
|
LET estado.impresa = "N Impre"
|
|
END IF
|
|
|
|
IF cons_fact.ventas = 1 THEN
|
|
LET cons_fact.nombre_tipo = "L O C A L"
|
|
END IF
|
|
|
|
IF cons_fact.ventas = 2 THEN
|
|
LET cons_fact.nombre_tipo = "EXPORTACION"
|
|
END IF
|
|
|
|
LET purbanizacion = NULL
|
|
{ SE COLOCO EN COMENTARIO LA DIRECCION DEL CLIENTE PORQUE SE ESTA
|
|
BUSCANDO DE LA COTIZACION EN FECHA 27-08-2021
|
|
SELECT b.calle,b.casa_num,b.urbanizacion,b.barrio
|
|
INTO descrip1,descrip2,purbanizacion,descrip3
|
|
FROM vetb00005 b
|
|
WHERE b.tipo_cliente = cons_fact.tipo_cliente AND
|
|
b.sec_cliente = cons_fact.sec_cliente
|
|
LET fact_gral.direccion = descrip1 clipped,descrip2 clipped,", ",
|
|
descrip3 CLIPPED,purbanizacion
|
|
}
|
|
LET bdireccion =
|
|
"SELECT ISNULL(a.direccion_cliente,'NO TIENE') FROM marmotech.dbo.vetb00050 a WHERE a.cotizacion_no = ? "
|
|
|
|
PREPARE cdireccion FROM bdireccion
|
|
EXECUTE cdireccion INTO fact_gral.direccion USING cons_fact.conduce
|
|
|
|
|
|
SELECT d.nombre_provincia INTO cons_fact.ciudad
|
|
FROM vetb00020 d
|
|
WHERE d.cod_provincia = codigo_provincia
|
|
|
|
|
|
LET fact_gral.direccion = fact_gral.direccion CLIPPED," ",cons_fact.ciudad
|
|
|
|
DISPLAY BY NAME fact_gral.direccion,cons_fact.ciudad
|
|
|
|
DISPLAY BY NAME estado.* ATTRIBUTE(REVERSE,blue)
|
|
SELECT a.descrip INTO condicion.descrip FROM vetb00012 a WHERE a.cond_pago = cons_fact.cond_pago
|
|
|
|
LET fact_gral.factura = cons_fact.factura
|
|
LET fact_gral.cod_cia = cons_fact.cod_cia
|
|
LET fact_gral.ventas = cons_fact.ventas
|
|
LET fact_gral.zona = cons_fact.zona
|
|
LET fact_gral.fecha_factura = cons_fact.fecha_factura
|
|
LET fact_Gral.tipo_cliente= cons_fact.tipo_cliente
|
|
LET fact_gral.sec_cliente= cons_fact.sec_cliente
|
|
LET fact_gral.prima_us = cons_fact.prima_us
|
|
LET fact_gral.porc_desc = cons_fact.porc_desc
|
|
LET fact_gral.cond_pago= cons_fact.cond_pago
|
|
LET fact_gral.orden= cons_fact.orden
|
|
LET fact_gral.fecha_orden= cons_fact.fecha_orden
|
|
LET fact_gral.fecha_conduce=cons_fact.fecha_conduce
|
|
LET fact_gral.fecha_embarque= cons_fact.fecha_embarque
|
|
LET fact_gral.sub_total= cons_fact.sub_total
|
|
LET fact_gral.itbi= cons_fact.itbi
|
|
LET fact_gral.nombre_Vend= cons_fact.nombre_vend
|
|
LET fact_gral.porc_itbi= cons_fact.porc_itbi
|
|
LET fact_gral.total_fact= cons_fact.total_fact
|
|
LET fact_gral.desc_valor= cons_fact.desc_valor
|
|
LET fact_gral.conduce= cons_fact.conduce
|
|
LET fact_gral.nombre =cons_fact.nombre
|
|
LET fact_gral.sec_vend = cons_fact.sec_vend
|
|
LET fact_gral.nombre_vend = cons_fact.nombre_vend
|
|
END FUNCTION
|
|
|
|
REPORT volante(p_tipo_cliente,p_sec_cliente,p_fecha_orig,
|
|
p_num_doc,p_cod_emp_sec,p_tipo_doc,
|
|
p_cuenta_no,p_banco,p_aplica_a,
|
|
p_monto_desc,p_valor,p_nombre,
|
|
p_nomb_emp,p_nombre_cta,p_comentario)
|
|
|
|
DEFINE p_tipo_cliente LIKE cctb00001.tipo_cliente,
|
|
p_sec_cliente LIKE cctb00001.sec_cliente,
|
|
p_fecha_orig LIKE cctb00001.fecha_orig,
|
|
p_num_doc LIKE cctb00001.num_doc,
|
|
p_cod_emp_sec LIKE cctb00001.cod_emp_sec,
|
|
p_tipo_doc LIKE cctb00001.tipo_doc,
|
|
p_cuenta_no LIKE cctb00001.cuenta_no,
|
|
p_banco LIKE cctb00001.banco,
|
|
p_aplica_a LIKE cctb00001.aplica_a,
|
|
p_monto_desc LIKE cctb00001.monto_desc,
|
|
p_valor LIKE cctb00001.valor,
|
|
p_nomb_emp CHAR(40),
|
|
p_nombre_cta CHAR(30),
|
|
p_cod_cia LIKE cctb00001.cod_cia,
|
|
pitbis DEC(12,2)
|
|
|
|
define
|
|
hora char(5),
|
|
l smallint,
|
|
p_nombre LIKE vetb00004.nombre,
|
|
p_comentario CHAR(120) #LIKE cctb00011.comentario
|
|
|
|
|
|
DEFINE negrillas_on CHAR(2)
|
|
DEFINE negrillas_off CHAR(2)
|
|
DEFINE normal CHAR(2),
|
|
ditbis DEC(12,2),
|
|
p_nombre_tipo VARCHAR(30)
|
|
|
|
|
|
output
|
|
top margin 0
|
|
bottom margin 5
|
|
left margin 0
|
|
|
|
ORDER BY p_sec_cliente,p_num_doc
|
|
|
|
format
|
|
page header
|
|
LET hora = time
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
LET lj = (110 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
|
|
LET p_nombre_tipo= "INGRESOS CXC"
|
|
print column 2, "ccprmt001",
|
|
column 15, negrillas_on,
|
|
column lj, p_companias.nombre,
|
|
column 65, negrillas_off,
|
|
column 90, "Pag. ", pageno using "###"
|
|
print column lj, "RNC: ",p_companias.rnc
|
|
LET lj = (110 - LENGTH(p_companias.direccion CLIPPED))/2
|
|
print column 1, negrillas_on,
|
|
column lj, p_companias.direccion," ",xnombre_provincia,
|
|
column 65, negrillas_off,
|
|
column 90, today using "dd/mm/yyyy"
|
|
LET lj = (110 - LENGTH(p_nombre_tipo))/2
|
|
print column 1, negrillas_on,
|
|
column lj, p_nombre_tipo CLIPPED,
|
|
column 65, negrillas_off,
|
|
column 93, hora
|
|
|
|
SKIP 3 LINES
|
|
|
|
|
|
BEFORE GROUP OF p_sec_cliente
|
|
SELECT a.itbi INTO pitbis FROM vetb00019 a
|
|
WHERE a.disponible = "S" AND status_t IS null
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
|
|
PRINT COLUMN 5, "LOCALIDAD :",sucnombre
|
|
PRINT COLUMN 5, " NUMERO DOCUM. : ", p_num_doc using "########"
|
|
PRINT COLUMN 5, " CUENTA : ",p_cuenta_no CLIPPED," - ",p_nombre_cta CLIPPED,
|
|
COLUMN 70," DEPOSITO : ", p_banco
|
|
PRINT COLUMN 5, " CLIENTE : ",p_tipo_cliente,"-",p_sec_cliente USING "<<<<<"," - ",
|
|
p_nombre CLIPPED,
|
|
COLUMN 70," FECHA : ",p_fecha_orig USING "dd/mm/yyyy"
|
|
PRINT COLUMN 5, " VENDEDOR : ",fact_gral.sec_vend USING "&&&&","-",p_nomb_emp CLIPPED
|
|
PRINT COLUMN 5, " TIPO PAGO : ",p_tipo_doc CLIPPED," - ",p_nombre_tipo CLIPPED
|
|
|
|
|
|
|
|
#PRINT doce
|
|
|
|
|
|
PRINT p_cod_cia USING "<<<<"
|
|
print column 1,
|
|
"===============================================================",
|
|
"================================"
|
|
print column 5, "Aplica Factura ",
|
|
column 23, " Descuento",
|
|
column 37, " Valor ",
|
|
column 54, " ITBIS",
|
|
column 70, " TOTAL"
|
|
|
|
print column 37, " S/ITBIS"
|
|
|
|
print column 1,
|
|
"===============================================================",
|
|
"================================"
|
|
|
|
SKIP 1 LINE
|
|
|
|
on every ROW
|
|
print column 5, p_aplica_a USING "#######",
|
|
column 23, p_monto_desc USING "#,###,###.##",
|
|
column 37, p_valor USING "##,###,###.##",
|
|
column 54, ditbis USING "##,###,###.##",
|
|
column 70, p_valor + ditbis USING "###,###,###.##"
|
|
let l = 12
|
|
|
|
|
|
AFTER GROUP OF p_sec_cliente
|
|
|
|
SKIP 1 LINE
|
|
|
|
|
|
PRINT COLUMN 5, "Total----> ",
|
|
COLUMN 23, GROUP SUM(p_monto_desc) USING "#,###,###.##",
|
|
COLUMN 37, GROUP SUM(p_valor) USING "##,###,###.##"
|
|
|
|
on last row
|
|
|
|
SKIP 2 LINES
|
|
|
|
PRINT COLUMN 2, "COMENTARIOS : "
|
|
PRINT COLUMN 5, p_comentario[1,60] CLIPPED
|
|
PRINT COLUMN 5, p_comentario[61,120] CLIPPED
|
|
|
|
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 10, "_________________________________________",
|
|
COLUMN 60, "_________________________________________"
|
|
PRINT COLUMN 10, " Preparado Por ",
|
|
COLUMN 60, " Autorizado Por "
|
|
|
|
print normal
|
|
END REPORT
|
|
|
|
FUNCTION conduces()
|
|
# SET CONNECTION "MSSQL_C"
|
|
LET xconduce_almacen = null
|
|
# SELECT a.tipo_cliente,a.sec_cliente,b.nombre,c.calle||' '||c.casa_num||' '||c.urbanizacion||' '||c.barrio,
|
|
SELECT a.tipo_cliente,a.sec_cliente,b.nombre,c.direccion_cliente,
|
|
d.cotizacion_no,a.orden,a.documento,a.conduce,c.rnc,
|
|
a.bodega
|
|
INTO fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.nombre,fact_gral.direccion,
|
|
fact_gral.conduce,fact_gral.orden,documento_ref,xconduce_almacen,num_rnc,fact_gral.bodega
|
|
FROM vetb00002 a,vetb00004 b, prtb00012 d,OUTER vetb00050 c
|
|
WHERE a.factura = pconduce AND
|
|
a.tipo_cliente = b.tipo_cliente AND
|
|
a.sec_cliente = b.sec_cliente AND
|
|
a.tipo_cliente = c.tipo_cliente AND
|
|
a.sec_cliente = c.sec_cliente AND
|
|
a.cotizacion_no = c.cotizacion_no AND
|
|
a.orden = d.num_oc AND
|
|
a.status_t IS NULL
|
|
|
|
# DESCRIPCION BODEGA
|
|
LET descripcion_bodega =null
|
|
SELECT a.descripcion INTO descripcion_bodega
|
|
FROM intb00009 a WHERE cod_bodega = fact_gral.bodega
|
|
|
|
END FUNCTION |