Files
2026-09-22 20:38:51 -04:00

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