Files
DECOMARMOL/PROYECTO/vedir/veprcs001.4gl
T
2026-09-22 20:38:51 -04:00

448 lines
15 KiB
Plaintext

{
--------------------------------------------------------------------------
PROGRAMA : VEPRCS001
OBJETIVO : Este programa consulta la factura comercial
REALIZADO POR : Tadeo A. Ferreras.
FECHA : Mayo 27,1993.
--------------------------------------------------------------------------
MODIFICACION : INDICAR CUANDO LA FACTURA ES DE PLAN RANCHERO O NO
REALIZADO POR : ING. JOSE ALFREDO PAULINO ALEJO
FECHA : ENERO 20,1997.
--------------------------------------------------------------------------
}
GLOBALS
"veprgb000.4gl"
DEFINE estatus,p_impresion CHAR(1)
DEFINE estado RECORD
nula CHAR(6),
impresa CHAR(6)
END RECORD,
doc_Referencia CHAR(15)
DEFINE cons_fact RECORD
cod_cia LIKE vetb00002.cod_cia,
ventas LIKE vetb00002.ventas ,
zona LIKE vetb00002.zona ,
factura LIKE vetb00002.factura,
fecha_factura CHAR(10),
tipo_cliente LIKE vetb00002.tipo_cliente,
sec_cliente LIKE vetb00002.sec_cliente,
cond_pago LIKE vetb00002.cond_pago,
porc_desc LIKE vetb00002.porc_desc,
prima_us LIKE vetb00002.prima_us,
orden int,
fecha_orden CHAR(10),
conduce int,
fecha_conduce CHAR(10),
porc_itbi LIKE vetb00002.porc_itbi,
sec_vend LIKE vetb00002.sec_vend,
fecha_embarque CHAR(10),
sub_total LIKE vetb00002.sub_total,
desc_valor LIKE vetb00002.monto_desc,
itbi LIKE vetb00002.monto_itbi,
total_fact LIKE vetb00002.neto,
codigo_dgii CHAR(20),
kncf INT,
descripcion_ncf VARCHAR(40),
bodega SMALLINT,
nombre CHAR(30),
direccion CHAR(50),
ciudad CHAR(15),
nombre_desc CHAR(25),
descrip CHAR(25),
nombre_vend CHAR(29),
cod_transp LIKE iptb00006.cod_transp,
sec_transp LIKE iptb00006.sec_transp,
nombre_tran LIKE vetb00015.nombre,
placa_transp LIKE iptb00006.placa,
cod_tarifa LIKE iptb00006.cod_tarifa,
descrip5 CHAR(15),
descrip6 CHAR(15),
descrip1 CHAR(30),
nombre_tipo CHAR(15),
compania CHAR(50),
telefono CHAR(20),
rnc CHAR(11)
END RECORD,
otradb CHAR(1),
codigo_ncf CHAR(19)
DEFINE arr_disp DYNAMIC ARRAY OF RECORD
cod_n LIKE vetb00003.cod_n,
cod_grupo LIKE vetb00003.cod_grupo,
cod_tipo LIKE vetb00003.cod_tipo,
cod_sec LIKE vetb00003.cod_sec,
descrip_esp CHAR(40),
unidad_med CHAR(3),
cantidad LIKE vetb00003.cantidad,
precio LIKE vetb00003.precio,
monto_fact DECIMAl(10,2)
END RECORD
DEFINE t_valor,valor_p,balance DECIMAL(12,2)
DEFINE p_provincia SMALLINT
DEFINE p_descr1,p_descr2 CHAR(14)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CALL ARG_VAL(7) RETURNING strconect
LET otradb = 'N'
IF strconect = 'marmotech' THEN
CONNECT to strconect USER 'conecta' USING 'conecta'
ELSE
CONNECT to strconect USER usuarios USING clave
END IF
CALL veprcs001()
END MAIN
FUNCTION veprcs001()
DEFINE hoy DATE
OPTIONS
FORM LINE 3,
ERROR LINE 24,
COMMENT LINE 23,
PROMPT LINE 22
CLEAR SCREEN
OPEN FORM vefmcs001 FROM "vefmcs001"
DISPLAY FORM vefmcs001
DISPLAY "veprcs001" AT 1,1 ATTRIBUTE (blue)
LET hoy = today
DISPLAY hoy using "dd/mm/yy" AT 1,70 ATTRIBUTE (blue)
DISPLAY "Factura de Ventas" AT 3,30 ATTRIBUTE (blue)
DISPLAY "<Esc> Busqueda de Registro" AT 3,1 ATTRIBUTE (BOLD)
DISPLAY "<Delete> Cancela Operacion" AT 3,54 ATTRIBUTE (BOLD)
# WHENEVER ERROR CONTINUE
# DIALOG ATTRIBUTES(UNBUFFERED, FIELD ORDER FORM)
IF strconect = 'marmotech' THEN
CONSTRUCT criterio ON a.cod_cia,a.ventas,a.zona,a.factura,a.bodega,
a.tipo_cliente,a.sec_cliente,a.cond_pago,a.prima_us,
a.orden,a.fecha_orden,a.conduce,
a.porc_itbi,a.sec_vend,a.cod_vend
FROM cod_cia,ventas,zona,factura,bodega,
tipo_cliente,sec_cliente,cond_pago,prima_us,orden,
fecha_orden,conduce,porc_itbi,sec_vend,
factura_e
BEFORE CONSTRUCT
INITIALIZE cons_fact.* TO NULL
CALL bodegas('1')
LET otradb = "N"
AFTER CONSTRUCT
IF INT_FLAG THEN
LET INT_FLAG = FALSE
CALL msg(2)
RETURN
END IF
EXIT CONSTRUCT
END CONSTRUCT
LET selec= "SELECT ' ',a.cod_vend,a.sucid,a.ventas,a.zona,a.factura,CONVERT(CHAR(10),a.fecha_factura,103), ",
" a.tipo_cliente,a.sec_cliente,a.cond_pago,a.porc_desc,a.prima_us, ",
" a.orden,CONVERT(CHAR(10),a.fecha_orden,103),a.conduce,CONVERT(CHAR(10),a.fecha_conduce,103),a.porc_itbi, ",
" a.sec_vend,CONVERT(ChAR(10),a.fecha_embarque,103),a.sub_total,a.monto_desc, ",
" a.monto_itbi,a.neto,b.codigo_dgii,b.ncf,c.tipo_ncf,a.bodega ",
"FROM vetb00002 a,vetb00072 b,vetb00071 c WHERE ",criterio clipped,
" AND a.sucid = b.sucid and b.sucid = c.sucid AND a.factura = b.documento AND b.tipo_doc IN ('FT','FE') ",
" and b.codigo_dgii = c.codigo_dgii and c.disponible = 'S' ",
" ORDER BY a.factura,a.fecha_factura "
ELSE
CONSTRUCT criterio ON a.cod_cia,a.ventas,a.zona,a.factura,a.bodega,
a.tipo_cliente,a.sec_cliente,a.cond_pago,a.prima_us,
a.orden,a.fecha_orden,a.conduce,
a.porc_itbi,a.sec_vend,a.cod_vend,a.documento_ref
FROM cod_cia,ventas,zona,factura,bodega,
tipo_cliente,sec_cliente,cond_pago,prima_us,orden,
fecha_orden,conduce,porc_itbi,sec_vend,
factura_e,doc_referencia
BEFORE CONSTRUCT
INITIALIZE cons_fact.* TO NULL
CALL bodegas('1')
LET otradb = "N"
AFTER CONSTRUCT
IF INT_FLAG THEN
LET INT_FLAG = FALSE
CALL msg(2)
RETURN
END IF
EXIT CONSTRUCT
END CONSTRUCT
LET selec =
"SELECT a.documento_ref, a.cod_vend,a.bodega,a.ventas,a.zona,a.factura,CONVERT(CHAR(10),a.fecha_factura,103), ",
" a.tipo_cliente,a.sec_cliente,a.cond_pago,a.porc_desc,a.prima_us, ",
" a.orden,CONVERT(CHAR(10),a.fecha_orden,103),a.conduce,CONVERT(CHAR(10),a.fecha_conduce,103),a.porc_itbi, ",
" a.sec_vend,CONVERT(CHAR(10),a.fecha_embarque,103),a.sub_total,a.monto_desc, ",
" a.monto_itbi,a.neto,a.cod_vend,a.bodega ",
"FROM vetb00002 a WHERE ",criterio clipped,
" ORDER BY a.factura,a.fecha_factura "
END IF
PREPARE comando FROM selec
DECLARE buscar SCROLL CURSOR FOR comando
OPEN buscar
FETCH FIRST buscar INTO doc_referencia,factura_e,cons_fact.*,estado.*
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
IF STATUS < 0 THEN
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CALL informacion()
MENU "Opciones"
COMMAND "Siguiente" "Ver proximo registro"
FETCH NEXT buscar INTO doc_referencia,factura_e,cons_fact.*,estado.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL informacion()
COMMAND "Anterior" "Ver registro anterior"
FETCH PREVIOUS buscar INTO doc_referencia,factura_e,cons_fact.*,estado.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL informacion()
COMMAND "Primero" "Ver primer registro"
FETCH FIRST buscar INTO doc_referencia,factura_e,cons_fact.*,estado.*
LET numero_msg = 5
CALL msg(numero_msg)
CALL informacion()
COMMAND "Ultimo" "Ver ultimo registro"
FETCH LAST buscar INTO doc_referencia,factura_e,cons_fact.*,estado.*
LET numero_msg = 4
CALL msg(numero_msg)
CALL informacion()
COMMAND "Ver" "Ver Productos"
CALL visualizar()
COMMAND "Retornar"
EXIT MENU
END MENU
# END DIALOG
END FUNCTION
FUNCTION visualizar()
LET int_flag = FALSE
CALL arr_disp.clear()
IF strconect = 'decomarmol' THEN
LET selec =
" SELECT m.cod_n,m.cod_grupo,m.cod_tipo,m.cod_sec,a.descrip_esp, ",
" a.unidad_med,m.cantidad,m.precio,m.cantidad*m.precio ",
" FROM vetb00003 m, iptb00002 a ",
" WHERE m.cod_n = a.cod_n AND m.cod_grupo = a.cod_grupo AND ",
" m.cod_tipo = a.cod_tipo AND m.cod_sec = a.cod_sec AND ",
" m.factura = ? ",
" UNION ",
" SELECT m.cod_n,m.cod_grupo,m.cod_tipo,m.cod_sec,a.descrip_esp, ",
" a.unidad_med,m.cantidad,m.precio,m.cantidad*m.precio ",
" FROM historicomtech.dbo.vetb00003 m, historicomtech.dbo.iptb00002 a ",
" WHERE m.cod_n = a.cod_n AND m.cod_grupo = a.cod_grupo AND ",
" m.cod_tipo = a.cod_tipo AND m.cod_sec = a.cod_sec AND ",
" m.factura =? "
ELSE
LET selec =
" SELECT m.cod_n,m.cod_grupo,m.cod_tipo,m.cod_sec,a.descrip_esp, ",
" a.unidad_med,m.cantidad,m.precio,m.cantidad*m.precio ",
" FROM vetb00003 m, iptb00002 a ",
" WHERE m.cod_n = a.cod_n AND m.cod_grupo = a.cod_grupo AND ",
" m.cod_tipo = a.cod_tipo AND m.cod_sec = a.cod_sec AND ",
" m.factura = ? and m.sucid= ?"
END IF
PREPARE cmdfact FROM selec
DECLARE buscar1 CURSOR FOR cmdfact
IF strconect = 'decomarmol' THEN
OPEN buscar1 USING cons_fact.factura, cons_fact.factura
ELSE
OPEN buscar1 USING cons_fact.factura,cons_fact.cod_cia
END IF
LET curr = 1
FOREACH buscar1 INTO arr_disp[curr].*
LET curr = curr + 1
END FOREACH
CALL SET_COUNT(curr - 1)
DISPLAY ARRAY arr_disp TO s_fact.*
ON ACTION imprimir
CALL impresion_fact(cons_fact.*,arr_disp)
AFTER DISPLAY
IF int_flag THEN
LET numero_msg = 12
CALL msg(numero_msg)
EXIT DISPLAY
END IF
END DISPLAY
IF INT_FLAG THEN
LET int_flag = FALSE
RETURN
END IF
END FUNCTION
FUNCTION informacion()
IF cons_fact.cod_cia = 1 THEN
LET cons_fact.compania = p_companias.nombre CLIPPED
END IF
DISPLAY BY NAME cons_fact.compania,factura_e
SELECT a.nombre,a.cod_provincia,a.telefono,a.num_rnc
INTO cons_fact.nombre,p_provincia,cons_fact.telefono,cons_fact.rnc
FROM vetb00004 a
WHERE a.tipo_cliente = cons_fact.tipo_cliente and
a.sec_cliente = cons_fact.sec_cliente
DISPLAY BY NAME cons_fact.nombre,cons_fact.telefono,cons_fact.rnc
SELECT b.calle,b.casa_num,b.barrio INTO descrip1,descrip2,descrip3
FROM vetb00005 b
WHERE b.tipo_cliente = cons_fact.tipo_cliente and
b.sec_cliente = cons_fact.sec_cliente and
b.status_t IS NULL
SELECT q.nombre_provincia INTO cons_fact.ciudad
FROM vetb00020 q
WHERE q.cod_provincia = p_provincia
AND q.status_t IS NULL
LET cons_fact.direccion = descrip1 clipped," ",descrip2 clipped,
", ",descrip3 clipped
DISPLAY BY NAME cons_fact.direccion,cons_fact.ciudad
LET estatus = NULL
SELECT UNIQUE status_t,status_impresion INTO estatus,p_impresion
FROM vetb00002 WHERE factura = cons_fact.factura
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.cod_cia = 1 THEN
LET cons_fact.compania = p_companias.nombre CLIPPED
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
DISPLAY BY NAME estado.* ATTRIBUTE(REVERSE,blue)
SELECT a.nombre,a.cod_provincia INTO cons_fact.nombre,p_provincia
FROM vetb00004 a
WHERE a.tipo_cliente = cons_fact.tipo_cliente and
a.sec_cliente = cons_fact.sec_cliente
SELECT b.calle,b.casa_num,b.barrio INTO p_descr1,p_descr2,descrip3
FROM vetb00005 b
WHERE b.tipo_cliente = cons_fact.tipo_cliente and
b.sec_cliente = cons_fact.sec_cliente and b.status_t IS NULL
SELECT q.nombre_provincia INTO cons_fact.ciudad
FROM vetb00020 q
WHERE q.cod_provincia = p_provincia AND q.status_t IS NULL
LET cons_fact.direccion =p_descr1 clipped," ",p_descr2 clipped,
", ",descrip3 clipped
IF cons_fact.ventas = "1" THEN
SELECT descrip INTO cons_fact.descrip1 FROM vetb00008
WHERE cod_zona = cons_fact.zona
END IF
IF cons_fact.ventas = "2" THEN
SELECT unique nom_pais INTO cons_fact.descrip1 FROM cotb00018
WHERE cod_pais = cons_fact.zona
END IF
SELECT a.descrip,a.dias INTO cons_fact.descrip,dias_v
FROM vetb00012 a WHERE a.cond_pago = cons_fact.cond_pago
SELECT UNIQUE nom1_emp,apell1_emp INTO p_descr1,p_descr2
FROM adtb00003 WHERE num_emp = cons_fact.sec_vend
LET cons_fact.nombre_vend = p_descr1 clipped," ",p_descr2 clipped
DISPLAY BY NAME cons_fact.nombre_vend
SELECT UNIQUE a.cod_transp,a.sec_transp,a.placa,a.cod_tarifa
INTO cons_fact.cod_transp,cons_fact.sec_transp,cons_fact.placa_transp,
cons_fact.cod_tarifa
FROM iptb00006 a
WHERE (a.status_t IS NULL) AND (a.num_doc=cons_fact.factura) AND
(a.cod_mov IN (30,31)) AND a.fecha > "01/01/2007" AND
a.cod_cia = cons_fact.cod_cia AND a.bodega = cons_fact.bodega
SELECT a.nombre INTO cons_fact.nombre_tran FROM vetb00015 a
WHERE a.cod_transp = cons_fact.cod_transp and
a.sec_transp = cons_fact.sec_transp and a.status_t is null
SELECT a.descrip INTO descrip6 FROM vetb00023 a
WHERE a.cod_tarifa = cons_fact.cod_tarifa and a.status_t is null
LET cons_fact.descrip5 = descrip6[1,15] clipped
LET cons_fact.descrip6 = descrip6[16,30] CLIPPED
LET cons_fact.codigo_dgii = cons_fact.codigo_dgii CLIPPED,cons_fact.kncf USING "&&&&&&&&"
DISPLAY BY NAME cons_fact.*,factura_e,doc_referencia
END FUNCTION