2769 lines
95 KiB
Plaintext
2769 lines
95 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
PROGRAMA : CCPRMT003
|
|
OBJETIVO : Generacion de Notas de Credito Por Avance a Orden.
|
|
REALIZADO POR : Tadeo A. Ferreras
|
|
FECHA : Enero 26, 1993
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "ccprgb000.4gl"
|
|
DEFINE xvalorck, xvalorCr, xvalorEfectivo, xvalorComision, xvalorLink,
|
|
link_pesos,efectivo_pesos,tarjeta_pesos,ck_pesos,tasa,monto_av, cr_pesos, xefectivo_pesos, xck_pesos, xlink_pesos, xcr_pesos DEC(12, 2) ,ventas int
|
|
DEFINE decenas DYNAMIC ARRAY OF CHAR(20)
|
|
DEFINE centenas DYNAMIC ARRAY OF CHAR(20)
|
|
DEFINE
|
|
unidades1 DYNAMIC ARRAY OF CHAR(20),
|
|
soporteVentas VARCHAR(100),
|
|
tieneorden BOOLEAN,
|
|
xestado VARCHAR(20),
|
|
ptasa, diferencia, remanente, xmontoDeposito, p_comision, v_comision
|
|
DEC(12, 2),
|
|
pventas CHAR(1),
|
|
tipoimprime VARCHAR(2),
|
|
xventas CHAR(1),
|
|
email_cliente,
|
|
vendedorEmail,
|
|
xusername,
|
|
xsmtphost,
|
|
xsmtpport,
|
|
xpassword,
|
|
estado_req
|
|
VARCHAR(100),
|
|
entradaDiario VARCHAR(25),
|
|
i, plataforma SMALLINT,
|
|
deposito, rdeposito,tipo_cuenta INT,
|
|
monto_link DECIMAL(12, 2)
|
|
|
|
DEFINE
|
|
otro_num, recibo_cons, recibo_Ext, psecvend1, XidEntrada INT,
|
|
|
|
psimbolo CHAR(10),
|
|
pmoneda CHAR(20),
|
|
ch_itbis CHAR(2),
|
|
ppaga_itbis CHAR(1),
|
|
fecha_vence DATE
|
|
|
|
DEFINE registroEntrada DYNAMIC ARRAY OF RECORD
|
|
referenciaEntrada VARCHAR(25),
|
|
fecha DATE,
|
|
tipo CHAR(1),
|
|
cuenta_no VARCHAR(8),
|
|
departamento INT,
|
|
detalle VARCHAR(100),
|
|
debito, credito DEC(12, 2)
|
|
END RECORD
|
|
|
|
DEFINE
|
|
valor_orig, montos_avance DECIMAL(12, 2),
|
|
valor_letras CHAR(240)
|
|
|
|
DEFINE nombre1, nombre2, apell CHAR(15)
|
|
DEFINE nombre_ven, nombre_cli STRING
|
|
DEFINE tipo_p CHAR(1)
|
|
|
|
DEFINE
|
|
recibo_nc RECORD
|
|
num_doc INTEGER,
|
|
num_orden INTEGER,
|
|
tipo_cliente INTEGER,
|
|
sec_cliente INTEGER,
|
|
cod_emp_sec INTEGER,
|
|
cuenta_no CHAR(8),
|
|
fecha DATE,
|
|
avance DECIMAL(12, 2)
|
|
END RECORD,
|
|
pcondpago SMALLINT,
|
|
psecvend INT,
|
|
valor_cotizado DEC(12, 2),
|
|
|
|
codigodgii VARCHAR(10),
|
|
comprobante VARCHAR(100)
|
|
|
|
####### Funcion para agregar un recibo de pago Por Avance
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("ccprmt03.log")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
CONNECT TO "marmotech" AS "IFMX" USER usuarios USING clave
|
|
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
|
|
|
|
SELECT a.nombre, a.rnc, a.direccion, a.telefono, a.fax
|
|
INTO p_companias.nombre,
|
|
p_companias.rnc,
|
|
p_companias.direccion,
|
|
p_companias.telefono,
|
|
p_companias.fax
|
|
FROM companias a
|
|
|
|
SELECT UNIQUE a.sucid, a.sucnombre
|
|
INTO codigo_sucursal, nombre_sucursal
|
|
FROM sucursales a, seg0001 b
|
|
WHERE b.usuario = usuarios AND b.sucid = a.sucid
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"USTED NO TIENE LOCALIDAD ASIGNADA, CONTACTE ADMINISTRADOR SISTEMAS",
|
|
"STOP")
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
CALL ccprmt003()
|
|
|
|
END MAIN
|
|
|
|
FUNCTION ccprmt003()
|
|
|
|
OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 22, PROMPT LINE 23
|
|
|
|
#CALL pantalla()
|
|
OPEN FORM ccfmmt003 FROM "ccfmmt003"
|
|
DISPLAY FORM ccfmmt003
|
|
DISPLAY "ccprmt003" AT 4, 3
|
|
DISPLAY "Generacion Nota de Credito Por Avance Orden" AT 6, 18
|
|
DISPLAY nombre_sucursal TO localidad
|
|
|
|
MENU
|
|
ON ACTION nuevo
|
|
LET tipo_p = "A"
|
|
CLEAR FORM
|
|
INITIALIZE recibo_nc.* TO NULL
|
|
LET recibo_nc.fecha = TODAY
|
|
CALL ccpcad003()
|
|
ON ACTION buscar
|
|
|
|
LET tipo_p = "C"
|
|
INITIALIZE recibo_nc.* TO NULL
|
|
SET CONNECTION "IFMX"
|
|
CALL ccpcmf003()
|
|
ON ACTION salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION ccpcad003()
|
|
DEFINE
|
|
hoy DATE,
|
|
generaE BOOLEAN
|
|
LET hoy = NULL
|
|
|
|
LABEL volver:
|
|
|
|
INPUT BY NAME recibo_nc.*,
|
|
tipoimprime,
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr,
|
|
monto_link,
|
|
recibo.comentario,
|
|
ch_itbis,
|
|
plataforma,tasa
|
|
WITHOUT DEFAULTS
|
|
|
|
## AQUI SE PREPARA PARA LA CAPTURA DE INFORMACION
|
|
BEFORE INPUT
|
|
LET monto_efectivo = 0
|
|
LET monto_ck = 0
|
|
LET monto_cr = 0
|
|
LET monto_link = 0
|
|
LET efectivo_pesos=0
|
|
LET ck_pesos=0
|
|
LET tarjeta_pesos=0
|
|
LET link_pesos=0
|
|
# Limpia en pantalla los valores en pesos para que no quede el de un recibo anterior
|
|
DISPLAY BY NAME efectivo_pesos, ck_pesos, tarjeta_pesos, link_pesos
|
|
LET tipoimprime = 'MT'
|
|
DISPLAY BY NAME tipoimprime
|
|
LET ch_itbis = 'SI'
|
|
DISPLAY BY NAME ch_itbis
|
|
CALL plataformapago()
|
|
CALL cuenta()
|
|
NEXT FIELD Num_orden
|
|
SELECT UNIQUE a.sucid, a.sucnombre
|
|
INTO codigo_sucursal, nombre_sucursal
|
|
FROM sucursales a, seg0001 b
|
|
WHERE b.usuario = usuarios AND b.sucid = a.sucid
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"USTED NO TIENE LOCALIDAD ASIGNADA, CONTACTE ADMINISTRADOR SISTEMAS",
|
|
"STOP")
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
AFTER FIELD cod_emp_Sec
|
|
SELECT a.nom1_emp || " " || a.apell1_Emp
|
|
INTO nombre_ven
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = recibo_nc.cod_Emp_sec
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
DISPLAY BY NAME nombre_ven
|
|
AFTER FIELD num_orden
|
|
LET monto_efectivo = 0
|
|
LET monto_ck = 0
|
|
LET monto_cr = 0
|
|
LET monto_link = 0
|
|
IF recibo_nc.num_orden IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_orden
|
|
END IF
|
|
|
|
LET nombre_cli = NULL
|
|
{SELECT UNIQUE a.tipo_cliente,a.sec_cliente,b.nombre,CONVERT(char(10),a.fecha_oc,103)
|
|
INTO recibo_nc.tipo_cliente,recibo_nc.sec_cliente,nombre_cli,
|
|
recibo_nc.fecha
|
|
FROM prtb00012 a, b
|
|
WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente
|
|
AND a.num_oc = recibo_nc.num_orden
|
|
}
|
|
IF tipo_p = 'A' THEN
|
|
LET xnombre_proyecto = NULL
|
|
LET xnombre_provincia = NULL
|
|
LET xdireccion = NULL
|
|
LET nombre_cli = NULL
|
|
LET recibo_nc.avance = 0
|
|
LET psecvend1 = NULL
|
|
LET condicionPago = NULL
|
|
|
|
SET CONNECTION "MSSQL"
|
|
SELECT UNIQUE a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.nombre_cliente,
|
|
a.nombre_proyecto,
|
|
c.nombre_provincia,
|
|
a.direccion_cliente,
|
|
a.cond_pago,
|
|
a.sec_vend,
|
|
a.total_neto,
|
|
a.codigo_dgii,
|
|
ISNULL(a.sec_vend_aux, 0),
|
|
a.ventas,
|
|
d.descrip,
|
|
b.patente,
|
|
a.ventas
|
|
INTO recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
nombre_cli,
|
|
xnombre_proyecto,
|
|
xnombre_provincia,
|
|
xdireccion,
|
|
pcondpago,
|
|
psecvend,
|
|
valor_cotizado,
|
|
codigodgii,
|
|
psecvend1,
|
|
pventas,
|
|
condicionPago,
|
|
email_cliente,
|
|
opcion
|
|
FROM vetb00050 a, vetb00004 b, vetb00020 c, vetb00012 d
|
|
WHERE a.tipo_cliente = b.tipo_cliente
|
|
AND a.sec_cliente = b.sec_cliente
|
|
AND a.cotizacion_no = recibo_nc.num_orden
|
|
AND b.cod_provincia = c.cod_provincia
|
|
AND a.cond_pago = d.cond_pago
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_orden
|
|
END IF
|
|
|
|
# LET nombre_cli = nombre_cli CLIPPED," ",recibo_nc.tipo_cliente USING "<<","-",recibo_nc.sec_cliente USING "<<<<<<<"
|
|
IF psecvend1 = 0 THEN
|
|
LET recibo_nc.cod_emp_sec = psecvend
|
|
ELSE
|
|
LET recibo_nc.cod_emp_sec = psecvend1
|
|
END IF
|
|
# BUSCA DESCRIPCION COMPROBANTE
|
|
SELECT a.tipo_ncf, a.fecha_vencimiento
|
|
INTO comprobante, fecha_vence
|
|
FROM vetb00071 a
|
|
WHERE a.codigo_dgii = codigodgii AND a.disponible = 'S'
|
|
|
|
DISPLAY BY NAME valor_cotizado,
|
|
comprobante,
|
|
codigodgii,
|
|
condicionPago
|
|
#BUSCA LA TASA
|
|
SELECT ISNULL(a.prima, 0)
|
|
INTO ptasa
|
|
FROM vetb00019 a
|
|
WHERE a.disponible = 'S'
|
|
|
|
CALL procesaCliente(recibo_nc.tipo_cliente) RETURNING verdad
|
|
SELECT a.paga_itbis, a.ventas, a.idEntrada
|
|
INTO ppaga_itbis, xventas, XidEntrada
|
|
FROM vetb00060 a
|
|
WHERE a.tipo_cliente = recibo_nc.tipo_cliente
|
|
|
|
IF ppaga_itbis = 'N' THEN
|
|
LET ch_itbis = 'NO'
|
|
ELSE
|
|
LET ch_itbis = "SI"
|
|
END IF
|
|
IF pventas = '1' THEN
|
|
LET diferencia = 100
|
|
ELSE
|
|
LET diferencia = 100 / ptasa
|
|
END IF
|
|
|
|
# LET monto_cr=valor_cotizado
|
|
DISPLAY BY NAME monto_cr, email_cliente
|
|
|
|
#SUMA AVANCES
|
|
LET montos_avance = 0
|
|
SELECT ISNULL(SUM(a.valor), 0)
|
|
INTO montos_avance
|
|
FROM cctb00001 a
|
|
WHERE a.documento_ref = recibo_nc.num_orden
|
|
AND a.tipo_Doc = 'AV'
|
|
AND a.num_doc = a.aplica_a
|
|
AND a.tipo_cliente = recibo_nc.tipo_cliente
|
|
AND a.sec_cliente = recibo_nc.sec_cliente
|
|
AND a.status_t IS NULL
|
|
DISPLAY BY NAME montos_avance
|
|
LET remanente = valor_cotizado - montos_avance
|
|
DISPLAY BY NAME remanente
|
|
END IF
|
|
IF tipo_p = 'C' THEN
|
|
LET condicionPago = NULL
|
|
SELECT UNIQUE a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.nombre_cliente,
|
|
d.descrip,
|
|
a.ventas
|
|
INTO recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
nombre_cli,
|
|
condicionPago,
|
|
opcion
|
|
FROM vetb00050 a, vetb00004 b, vetb00012 d
|
|
WHERE a.tipo_cliente = b.tipo_cliente
|
|
AND a.sec_cliente = b.sec_cliente
|
|
AND a.cotizacion_no = recibo_nc.num_orden
|
|
AND a.cond_pago = d.cond_pago
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_orden
|
|
END IF
|
|
CALL procesaCliente(recibo_nc.tipo_cliente) RETURNING verdad
|
|
END IF
|
|
|
|
LET nombre_cli =
|
|
nombre_cli CLIPPED,
|
|
" ",
|
|
recibo_nc.tipo_cliente USING "<<",
|
|
"-",
|
|
recibo_nc.sec_cliente USING "<<<<<<<"
|
|
# SELECT UNIQUE a.sec_vend INTO recibo_nc.cod_emp_sec FROM vetb00028 a
|
|
# WHERE a.tipo_cliente = recibo_nc.tipo_cliente AND
|
|
# a.sec_cliente = recibo_nc.sec_cliente
|
|
|
|
LET nombre_ven = NULL
|
|
LET nombre1 = NULL
|
|
LET nombre2 = NULL
|
|
LET apell = NULL
|
|
SELECT UNIQUE a.nom1_emp, a.nom2_emp, a.apell1_emp
|
|
INTO nombre1, nombre2, apell
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = recibo_nc.cod_emp_sec
|
|
LET nombre_ven =
|
|
nombre1 CLIPPED, " ", nombre2 CLIPPED, " ", apell CLIPPED
|
|
|
|
DISPLAY BY NAME recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
nombre_cli,
|
|
recibo_nc.cod_emp_sec,
|
|
nombre_ven,
|
|
valor_cotizado
|
|
ATTRIBUTE(REVERSE)
|
|
|
|
DISPLAY BY NAME recibo_nc.fecha ATTRIBUTE(BLUE)
|
|
AFTER FIELD fecha
|
|
IF recibo_nc.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
LET p_fechas = recibo_nc.fecha
|
|
CALL prd(p_fechas, usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha
|
|
END IF
|
|
AFTER FIELD monto_efectivo
|
|
LET recibo_nc.avance = 0
|
|
LET efectivo_pesos=0
|
|
LET recibo_nc.avance =
|
|
monto_ck + monto_efectivo + monto_cr + monto_link
|
|
LET efectivo_pesos=monto_efectivo*tasa
|
|
DISPLAY BY NAME recibo_nc.avance,efectivo_pesos
|
|
|
|
AFTER FIELD monto_ck
|
|
LET recibo_nc.avance = 0
|
|
LET ck_pesos=0
|
|
LET recibo_nc.avance =
|
|
monto_ck + monto_efectivo + monto_cr + monto_link
|
|
LET ck_pesos=monto_ck*tasa
|
|
DISPLAY BY NAME recibo_nc.avance,ck_pesos
|
|
|
|
AFTER FIELD monto_cr
|
|
LET recibo_nc.avance = 0
|
|
LET tarjeta_pesos=0
|
|
LET recibo_nc.avance =
|
|
monto_ck + monto_efectivo + monto_cr + monto_link
|
|
LET tarjeta_pesos=monto_cr*tasa
|
|
DISPLAY BY NAME recibo_nc.avance,tarjeta_pesos
|
|
|
|
AFTER FIELD monto_link
|
|
LET recibo_nc.avance = 0
|
|
LET link_pesos=0
|
|
LET recibo_nc.avance =
|
|
monto_ck + monto_efectivo + monto_cr + monto_link
|
|
LET link_pesos=monto_link*tasa
|
|
DISPLAY BY NAME recibo_nc.avance,link_pesos
|
|
AFTER FIELD tasa
|
|
|
|
IF opcion !=1 AND ventas !=1 THEN
|
|
IF tipo_cuenta = 1 THEN
|
|
# Cuenta en pesos y cliente en dolares: la tasa es obligatoria y no puede ser 1
|
|
IF tasa IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tasa
|
|
ELSE
|
|
IF tasa <= 1 THEN
|
|
CALL fgl_winmessage(
|
|
"TASA NO PERMITIDA",
|
|
"EL CLIENTE ES EN DOLARES Y LA CUENTA DE DEPOSITO ESTA EN PESOS.\n\nDEBE REGISTRAR LA TASA DE CAMBIO (MAYOR QUE 1). NO SE PERMITE DEJARLA EN 1.",
|
|
"STOP")
|
|
NEXT FIELD tasa
|
|
END IF
|
|
END IF
|
|
ELSE
|
|
IF tasa IS NULL OR tasa=0 THEN
|
|
LET tasa=1
|
|
END IF
|
|
END IF
|
|
END IF
|
|
IF opcion !=1 AND ventas=1 THEN
|
|
|
|
IF tasa IS NULL or tasa=0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tasa
|
|
END IF
|
|
END IF
|
|
LET link_pesos=0
|
|
LET tarjeta_pesos=0
|
|
LET ck_pesos=0
|
|
LET efectivo_pesos=0
|
|
LET link_pesos=monto_link*tasa
|
|
LET tarjeta_pesos=monto_cr*tasa
|
|
LET ck_pesos=monto_ck*tasa
|
|
LET efectivo_pesos=monto_efectivo*tasa
|
|
|
|
DISPLAY BY NAME link_pesos,efectivo_pesos,tarjeta_pesos,ck_pesos
|
|
AFTER FIELD plataforma
|
|
IF monto_cr != 0 THEN
|
|
SELECT a.comisiones
|
|
INTO p_comision
|
|
FROM cctb00009 a
|
|
WHERE a.id = plataforma
|
|
LET v_comision = monto_cr * (p_comision / 100)
|
|
DISPLAY BY NAME v_comision, p_comision
|
|
|
|
IF plataforma IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD plataforma
|
|
END IF
|
|
END IF
|
|
BEFORE FIELD avance
|
|
IF monto_ck IS NULL THEN
|
|
LET monto_ck = 0
|
|
END IF
|
|
IF monto_efectivo IS NULL THEN
|
|
LET monto_efectivo = 0
|
|
END IF
|
|
IF monto_cr IS NULL THEN
|
|
LET monto_cr = 0
|
|
END IF
|
|
|
|
IF monto_link IS NULL THEN
|
|
LET monto_link = 0
|
|
END IF
|
|
|
|
DISPLAY BY NAME recibo_nc.avance
|
|
|
|
AFTER FIELD cuenta_no
|
|
SELECT a.ventas INTO tipo_cuenta FROM cgtb00012 a
|
|
WHERE a.cuenta_no=recibo_nc.cuenta_no
|
|
NEXT FIELD tasa
|
|
|
|
|
|
# AFTER FIELD avance
|
|
# IF recibo_nc.avance IS NULL OR recibo_nc.avance < 0 THEN
|
|
# LET numero_msg = 16
|
|
# CALL msg(numero_msg)
|
|
# NEXT FIELD avance
|
|
# END IF
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
IF opcion !=1 AND ventas!=1 AND tipo_cuenta = 1 THEN
|
|
# Cuenta en pesos y cliente en dolares: la tasa es obligatoria y no puede ser 1
|
|
IF tasa IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tasa
|
|
ELSE
|
|
IF tasa <= 1 THEN
|
|
CALL fgl_winmessage(
|
|
"TASA NO PERMITIDA",
|
|
"EL CLIENTE ES EN DOLARES Y LA CUENTA DE DEPOSITO ESTA EN PESOS.\n\nDEBE REGISTRAR LA TASA DE CAMBIO (MAYOR QUE 1). NO SE PERMITE DEJARLA EN 1.",
|
|
"STOP")
|
|
NEXT FIELD tasa
|
|
END IF
|
|
END IF
|
|
END IF
|
|
IF monto_cr > 0 THEN
|
|
IF plataforma IS NULL OR plataforma= 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD plataforma
|
|
END IF
|
|
|
|
END IF
|
|
IF monto_cr = 0 THEN
|
|
|
|
LET plataforma = 0
|
|
END IF
|
|
IF v_comision IS NULL THEN
|
|
LET v_comision = 0
|
|
END IF
|
|
IF monto_ck IS NULL THEN
|
|
LET monto_ck = 0
|
|
END IF
|
|
IF monto_efectivo IS NULL THEN
|
|
LET monto_efectivo = 0
|
|
END IF
|
|
IF monto_cr IS NULL THEN
|
|
LET monto_cr = 0
|
|
END IF
|
|
|
|
IF recibo_nc.num_orden IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_doc
|
|
END IF
|
|
IF recibo_nc.cuenta_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
IF recibo_nc.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
IF monto_efectivo IS NULL
|
|
AND monto_ck IS NULL
|
|
AND monto_cr IS NULL THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"DEBES IDENTIFICAR LA VIA DEL INGRESO, EFECTIVO, CK O TARJETA",
|
|
"INFO")
|
|
NEXT FIELD monto_efectivo
|
|
END IF
|
|
IF recibo_nc.cod_emp_sec IS NULL OR recibo_nc.cod_emp_sec = 0 THEN
|
|
SELECT a.sec_vend, ISNULL(a.sec_vend_aux, 0)
|
|
INTO psecvend, psecvend1
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = recibo_nc.num_orden
|
|
|
|
IF psecvend1 = 0 THEN
|
|
LET recibo_nc.cod_emp_sec = psecvend
|
|
ELSE
|
|
LET recibo_nc.cod_emp_sec = psecvend1
|
|
END IF
|
|
|
|
END IF
|
|
IF monto_ck = 0 AND monto_cr = 0 AND monto_efectivo=0 AND monto_link=0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD monto_efectivo
|
|
END IF
|
|
LET recibo_nc.avance =
|
|
monto_efectivo + monto_ck + monto_cr + monto_link
|
|
DISPLAY BY NAME recibo_nc.avance
|
|
|
|
IF recibo_nc.avance IS NULL OR recibo_nc.avance < 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD monto_efectivo
|
|
END IF
|
|
|
|
IF recibo_nc.avance = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD avance
|
|
END IF
|
|
|
|
IF codigo_sucursal IS NULL THEN
|
|
CALL fgl_Winmessage(
|
|
"ERROR",
|
|
"SUCURSAL ESTA EN BLANCO, USTED POSIBLEMENTE NO TIENE SUCURSAL ASIGNADA",
|
|
"INFO")
|
|
CONTINUE INPUT
|
|
END IF
|
|
# EN CASO QUE LA COTIZACION SEA AL CONTADO DEBE VERIFICAR SI TIENE ORDEN
|
|
IF pcondpago = 4 OR pcondpago = 10 THEN
|
|
CALL verifica_orden()
|
|
IF NOT tieneorden THEN
|
|
CALL msg(1018)
|
|
NEXT FIELD num_orden
|
|
END IF
|
|
END IF
|
|
END INPUT
|
|
INITIALIZE p_companias.* TO NULL
|
|
|
|
SELECT UNIQUE a.sucid, a.sucnombre
|
|
INTO codigo_sucursal, nombre_sucursal
|
|
FROM sucursales a, seg0001 b
|
|
WHERE b.usuario = usuarios AND b.sucid = a.sucid
|
|
#SI ES CLIENTE 17 - EXPORTACION PREGUNTA SI VA A AFECTAR EN FINANZAS
|
|
# POR DEFECTO SI SE AFECTA FINANZAS (IFMX) => afecta_ex = "YES".
|
|
# SOLO AL CLIENTE 17 (EXPORTACION) SE LE PREGUNTA; SI RESPONDE "NO" NO
|
|
# SE AFECTA. TODOS LOS DEMAS CLIENTES AFECTAN POR DEFECTO. LOS 18/19
|
|
# NUNCA VAN A IFMX PORQUE procesacliente() DEVUELVE verdad = FALSE.
|
|
LET afecta_ex = "YES"
|
|
IF recibo_nc.tipo_cliente = 17 THEN
|
|
LET afecta_ex =
|
|
fgl_winquestion(
|
|
"AFECTA",
|
|
"DESEA AFECTAR FINANZAS?",
|
|
"YES",
|
|
"YES|NO",
|
|
"QUESTION",
|
|
0)
|
|
END IF
|
|
#-------------------------------------- AFECTACION A FINANZAS ---------------------------
|
|
|
|
IF tipo_p = "A" THEN
|
|
|
|
# AQUI VIENE LA FUNCION PARA EVALUAR EL CLIENTE
|
|
SET CONNECTION "MSSQL"
|
|
# SE COLOCO EN COMENTARIO PORQUE SE ESTA TOMANDO OTRAS DECICIONES CON RELACION A LA ORDEN Y
|
|
# REQUISICIONES DE DESPACHOS FECHA: 30/12/2020
|
|
CALL genera_orden()
|
|
|
|
{SE PUSO EN COMENTARIO EL 23/12/2022, EN ESTE MOMENTO DESARROLLE UNA FUNCION PARA LOS PAGOS AL CONTADO,
|
|
ESTA PARTE EVALUA AL CLIENTE PARA SABER SI CON EL RECIBO DE INGRESO SE PUEDE AUTORIZAR UNA DE LAS REQUISICIONES
|
|
QUE TIENE
|
|
|
|
IF pcondpago <> 4 AND pcondpago <> 10 THEN
|
|
CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad
|
|
IF verdad THEN
|
|
CALL evalua_clientes()
|
|
END IF
|
|
END IF}
|
|
|
|
CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad
|
|
LET otro_num = 0
|
|
#------------------------------------------------------------------------
|
|
# AFECTACION A FINANZAS (IFMX): SOLO SI afecta_ex = "YES" (CLIENTE 17 + EL
|
|
# USUARIO RESPONDIO YES) Y EL CLIENTE ES AFECTABLE (verdad = TRUE).
|
|
# ESTE BLOQUE ES LO UNICO QUE ESCRIBE EN LA CONEXION IFMX. TODO LO DEMAS
|
|
# (smarmotech / MSSQL) SE EJECUTA SIEMPRE, FUERA DE ESTE IF.
|
|
#------------------------------------------------------------------------
|
|
IF afecta_ex = "YES" AND verdad = TRUE THEN
|
|
SET CONNECTION "IFMX"
|
|
|
|
SELECT a.nombre, a.rnc, a.direccion, a.telefono, a.fax
|
|
INTO p_companias.nombre,
|
|
p_companias.rnc,
|
|
p_companias.direccion,
|
|
p_companias.telefono,
|
|
p_companias.fax
|
|
FROM companias a
|
|
|
|
SELECT a.ult_recibo
|
|
INTO recibo_nc.num_doc
|
|
FROM cctb00003 a
|
|
WHERE a.tipo_doc = "AV"
|
|
|
|
IF recibo_nc.num_doc IS NULL THEN
|
|
LET recibo_nc.num_doc = 0
|
|
END IF
|
|
LET recibo_nc.num_doc = recibo_nc.num_doc + 1
|
|
LET otro_num = recibo_nc.num_doc
|
|
BEGIN WORK
|
|
UPDATE cctb00003
|
|
SET ult_recibo = recibo_nc.num_doc
|
|
WHERE tipo_doc = 'AV'
|
|
|
|
IF otro_num = 0 OR otro_num IS NULL THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR", "PROBLEMAS EN EL CONTROL NUMERO", "STOP")
|
|
RETURN
|
|
END IF
|
|
|
|
DISPLAY BY NAME recibo_nc.num_doc ATTRIBUTE(REVERSE)
|
|
|
|
SELECT UNIQUE a.sucid, a.sucnombre
|
|
INTO codigo_sucursal, nombre_sucursal
|
|
FROM sucursales a, seg0001 b
|
|
WHERE b.usuario = usuarios AND b.sucid = a.sucid
|
|
|
|
INSERT INTO cctb00001(
|
|
cuenta_no,
|
|
cod_cia,
|
|
num_doc,
|
|
tipo_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
aplica_a,
|
|
documento_ref,
|
|
valor,
|
|
monto_desc,
|
|
us_crea,
|
|
fech_crea,
|
|
costo,
|
|
valor_efectivo,
|
|
valor_cheque,
|
|
valor_tarjeta,
|
|
sucid,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,
|
|
valor_link,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos)
|
|
VALUES(recibo_nc.cuenta_no,
|
|
p_companias.cod_comp,
|
|
recibo_nc.num_doc,
|
|
"AV",
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
codigo_sucursal,
|
|
recibo_nc.cod_emp_sec,
|
|
recibo_nc.fecha,
|
|
recibo_nc.num_doc,
|
|
recibo_nc.num_orden,
|
|
recibo_nc.avance,
|
|
0,
|
|
usuarios,
|
|
getdate(),
|
|
'1',
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr,
|
|
codigo_sucursal,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,
|
|
monto_link,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos)
|
|
|
|
INSERT INTO cctb00011(
|
|
cod_cia,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
num_doc,
|
|
tipo_doc,
|
|
comentario,
|
|
us_crea,
|
|
fech_crea,
|
|
sucid,
|
|
valor_efectivo,
|
|
valor_cheque,
|
|
valor_tarjeta)
|
|
VALUES(p_companias.cod_comp,
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
recibo_nc.num_doc,
|
|
'AV',
|
|
recibo.comentario,
|
|
usuarios,
|
|
getdate(),
|
|
codigo_sucursal,
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr)
|
|
COMMIT WORK
|
|
END IF
|
|
#---------------------------------------- TERMINO AFECTACION FINANZAS -------------------
|
|
SET CONNECTION "MSSQL"
|
|
|
|
SELECT a.ult_recibo
|
|
INTO recibo_nc.num_doc
|
|
FROM cctb00003 a
|
|
WHERE a.tipo_doc = "AV"
|
|
|
|
IF recibo_nc.num_doc IS NULL THEN
|
|
LET recibo_nc.num_doc = 0
|
|
END IF
|
|
LET recibo_nc.num_doc = recibo_nc.num_doc + 1
|
|
|
|
SELECT UNIQUE a.sucid, a.sucnombre
|
|
INTO codigo_sucursal, nombre_sucursal
|
|
FROM sucursales a, seg0001 b
|
|
WHERE b.usuario = usuarios AND b.sucid = a.sucid
|
|
|
|
IF recibo_nc.cuenta_no IS NOT NULL THEN
|
|
CALL numeroDeposito(
|
|
recibo_nc.cuenta_no,
|
|
recibo_nc.fecha,
|
|
codigo_sucursal,
|
|
pventas,
|
|
plataforma)
|
|
RETURNING rdeposito,
|
|
xmontoDeposito,
|
|
xvalorck,
|
|
xvalorCr,
|
|
xvalorEfectivo,
|
|
xvalorComision,
|
|
xvalorLink, xefectivo_pesos, xck_pesos, xlink_pesos, xcr_pesos
|
|
DISPLAY "XMONTODEPOSITO: ",xmontoDeposito," xvalorck: ",xvalorck," valorcr: ",xvalorCr,
|
|
" valorefectivo: ",xvalorEfectivo," xvalorComision: ",xvalorComision," valorlink: ",xvalorlink
|
|
IF rdeposito = 0 THEN
|
|
SELECT a.num_doc INTO deposito FROM tetb00009 a
|
|
|
|
IF deposito IS NULL THEN
|
|
LET deposito = 0
|
|
INSERT INTO tetb00009 VALUES(deposito)
|
|
END IF
|
|
|
|
LET deposito = deposito + 1
|
|
UPDATE tetb00009 SET num_doc = deposito
|
|
DISPLAY BY NAME deposito
|
|
|
|
END IF
|
|
END IF
|
|
#----------------------------------------------------------------------------------------------
|
|
# GENERA REGISTROS PARA LA ENTRADA AL DIARIO GENERAL
|
|
#----------------------------------------------------------------------------------------------
|
|
CALL GeneraEntradaDiario(
|
|
usuarios,
|
|
'RECIBOS INGRESOS',
|
|
XidEntrada,
|
|
recibo_nc.cuenta_no,
|
|
recibo_nc.fecha,
|
|
recibo_nc.avance,
|
|
0,
|
|
0,
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
xventas,
|
|
0,
|
|
recibo_nc.num_doc,
|
|
v_comision)
|
|
RETURNING generaE, registroEntrada
|
|
|
|
FOR i = 1 TO registroEntrada.getLength()
|
|
IF registroEntrada[i].referenciaEntrada IS NOT NULL THEN
|
|
LET entradaDiario = registroEntrada[i].referenciaEntrada
|
|
DISPLAY "SECUENCIA DE ENTRADA: ", entradaDiario
|
|
|
|
END IF
|
|
END FOR
|
|
#-----------------------------------------------------------------------------------------------
|
|
|
|
BEGIN WORK
|
|
UPDATE cctb00003
|
|
SET ult_recibo = recibo_nc.num_doc
|
|
WHERE tipo_doc = 'AV'
|
|
IF recibo_nc.tipo_cliente = 19 OR recibo_nc.tipo_cliente = 18 THEN
|
|
LET ch_itbis = 'NO'
|
|
END IF
|
|
|
|
IF rdeposito > 0 THEN
|
|
LET deposito = rdeposito
|
|
END IF
|
|
INSERT INTO cctb00001(
|
|
cuenta_no,
|
|
cod_cia,
|
|
num_doc,
|
|
tipo_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
aplica_a,
|
|
documento_ref,
|
|
valor,
|
|
monto_desc,
|
|
us_crea,
|
|
fech_crea,
|
|
costo,
|
|
valor_efectivo,
|
|
valor_cheque,
|
|
valor_tarjeta,
|
|
factura_ext,
|
|
sucid,
|
|
referenciaEntrada,
|
|
num_doc_deposito,
|
|
valor_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos)
|
|
VALUES(recibo_nc.cuenta_no,
|
|
p_companias.cod_comp,
|
|
recibo_nc.num_doc,
|
|
"AV",
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
codigo_sucursal,
|
|
recibo_nc.cod_emp_sec,
|
|
recibo_nc.fecha,
|
|
recibo_nc.num_doc,
|
|
recibo_nc.num_orden,
|
|
recibo_nc.avance,
|
|
0,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
'1',
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr,
|
|
otro_num,
|
|
codigo_sucursal,
|
|
entradaDiario,
|
|
deposito,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos)
|
|
|
|
INSERT INTO cctb00011(
|
|
cod_cia,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
num_doc,
|
|
tipo_doc,
|
|
comentario,
|
|
us_crea,
|
|
fech_crea,
|
|
chitbis,
|
|
sucid,
|
|
valor_efectivo,
|
|
valor_cheque,
|
|
valor_tarjeta,
|
|
num_doc_relacionado,
|
|
valor_link)
|
|
VALUES(p_companias.cod_comp,
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
recibo_nc.num_doc,
|
|
'AV',
|
|
recibo.comentario,
|
|
usuarios,
|
|
getdate(),
|
|
ch_itbis,
|
|
codigo_sucursal,
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr,
|
|
otro_num,
|
|
monto_link)
|
|
#ACTUALIZACION CONTABILIDAD GENERAL
|
|
IF generaE THEN
|
|
FOR idx = 1 TO registroEntrada.getLength()
|
|
IF registroEntrada[idx].cuenta_no IS NOT NULL THEN
|
|
INSERT INTO cgtb00004(
|
|
fecha,
|
|
tipo,
|
|
ref,
|
|
cuenta_no,
|
|
detalle_1,
|
|
departamento,
|
|
debito,
|
|
credito,
|
|
us_crea,
|
|
fech_crea,
|
|
tipo_doc_cxc,
|
|
num_doc_cxc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
sucid,
|
|
valor_original,
|
|
nombre_proveedor)
|
|
VALUES(registroEntrada[idx].fecha,
|
|
registroEntrada[idx].tipo,
|
|
registroEntrada[idx].referenciaEntrada,
|
|
registroEntrada[idx].cuenta_no,
|
|
registroEntrada[idx].detalle,
|
|
registroEntrada[idx].departamento,
|
|
registroEntrada[idx].debito,
|
|
registroEntrada[idx].credito,
|
|
usuarios,
|
|
GETDATE(),
|
|
'AV',
|
|
recibo_nc.num_doc,
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
codigo_sucursal,
|
|
recibo_nc.avance,
|
|
nombre_cli)
|
|
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
#INSERTAR EN LA TABLA DE DEPOSITOS
|
|
|
|
|
|
IF recibo_nc.cuenta_no IS NOT NULL THEN
|
|
IF tipo_cuenta=1 THEN
|
|
IF opcion!=1 THEN
|
|
LET monto_av=efectivo_pesos+ck_pesos+link_pesos+ck_pesos
|
|
END IF
|
|
ELSE
|
|
LET monto_av=recibo_nc.avance
|
|
END IF
|
|
IF monto_av IS NULL THEN
|
|
LET monto_av=recibo_nc.avance
|
|
END if
|
|
IF rdeposito = 0 THEN
|
|
DISPLAY "en rdeposito =0, XMONTODEPOSITO: ",xmontoDeposito," xvalorck: ",xvalorck," valorcr: ",xvalorCr,
|
|
" valorefectivo: ",xvalorEfectivo," xvalorComision: ",xvalorComision," valorlink: ",xvalorlink
|
|
LET monto_av=0
|
|
|
|
|
|
INSERT INTO tetb00001(
|
|
num_doc,
|
|
cuenta_no,
|
|
fecha,
|
|
monto,
|
|
sucursal,
|
|
us_crea,
|
|
fech_crea,
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_tarjeta,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,
|
|
ventas,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos)
|
|
VALUES(deposito,
|
|
recibo_nc.cuenta_no,
|
|
recibo_nc.fecha,
|
|
monto_av,
|
|
codigo_sucursal,
|
|
usuarios,
|
|
getdate(),
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,
|
|
pventas,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos)
|
|
ELSE
|
|
LET deposito = rdeposito
|
|
DISPLAY "en update rdeposito =0, XMONTODEPOSITO: ",xmontoDeposito," xvalorck: ",xvalorck," valorcr: ",xvalorCr,
|
|
" valorefectivo: ",xvalorEfectivo," xvalorComision: ",xvalorComision," valorlink: ",xvalorlink
|
|
IF xmontoDeposito IS NULL THEN
|
|
LET xmontoDeposito = 0
|
|
END IF
|
|
|
|
UPDATE tetb00001
|
|
SET monto = xmontoDeposito + monto_av,
|
|
monto_efectivo = xvalorEfectivo + monto_efectivo,
|
|
monto_tarjeta = xvalorCr + monto_cr,
|
|
monto_ck = xvalorck + monto_ck,
|
|
v_comision = v_comision + xvalorComision,
|
|
efectivo_pesos=xefectivo_pesos+efectivo_pesos,
|
|
tarjeta_pesos=xcr_pesos+tarjeta_pesos,
|
|
ck_pesos=xck_pesos+ck_pesos,
|
|
link_pesos=xlink_pesos+link_pesos
|
|
WHERE num_doc = rdeposito
|
|
END IF
|
|
|
|
INSERT INTO tetb00008(
|
|
num_doc,
|
|
tipo_doc,
|
|
documento,
|
|
fecha,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
nombre,
|
|
valor,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES(deposito,
|
|
'AV',
|
|
recibo_nc.num_doc,
|
|
recibo_nc.fecha,
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
nombre_cli,
|
|
recibo_nc.avance,
|
|
usuarios,
|
|
getdate())
|
|
END IF
|
|
#------------------------------------------------------------------------------------------------
|
|
|
|
COMMIT WORK
|
|
IF afecta_ex ="YES" THEN
|
|
# RELACIONA EL RECIBO DE IFMX (MARMOTECH, num_doc = otro_num) CON EL
|
|
# NUMERO DE DOCUMENTO DE SMARMOTECH (recibo_nc.num_doc). SOLO CORRE
|
|
# CUANDO EL USUARIO RESPONDIO YES (CLIENTE 17). SI RESPONDIO NO, NO
|
|
# SE AFECTA IFMX Y ESTE UPDATE NO SE EJECUTA.
|
|
SET CONNECTION "IFMX"
|
|
UPDATE cctb00001
|
|
SET factura_ext = recibo_nc.num_doc
|
|
WHERE num_doc = otro_num
|
|
AND tipo_cliente = recibo_nc.tipo_cliente
|
|
AND sec_cliente = recibo_nc.sec_cliente
|
|
AND tipo_doc = 'AV'
|
|
END IF
|
|
SET CONNECTION "MSSQL"
|
|
|
|
# BUSCA EMAIL VENDEDOR
|
|
SELECT a.email
|
|
INTO vendedorEmail
|
|
FROM seg0000 a
|
|
WHERE a.sec_vend = recibo_nc.cod_emp_sec
|
|
# BUSCA SOPORTE VENTAS
|
|
LET soporteVentas = NULL
|
|
SELECT MAX(a.email)
|
|
INTO soporteVentas
|
|
FROM seg0001 a, vetb00093 b
|
|
WHERE b.cotizacion_no = recibo_nc.num_orden
|
|
AND b.sec_vend = a.num_emp
|
|
|
|
IF soporteVentas IS NOT NULL THEN
|
|
LET vendedorEmail = vendedorEmail CLIPPED, ";", soporteVentas
|
|
END IF
|
|
LET chmensaje = "NUMERO RECIBO: ", recibo_nc.num_doc USING "<<<<<<"
|
|
LET subject =
|
|
"AVISO PAGO AVANCE COTIZACION NO. ",
|
|
recibo_nc.num_orden USING "&&&&&&"
|
|
LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
|
|
LET cuerpo_correo = "VENDEDOR : ", nombre_ven CLIPPED
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED,
|
|
" FECHA : ",
|
|
recibo_nc.fecha USING "DD/MM/YYYY"
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED,
|
|
" RECIBO : ",
|
|
recibo_nc.num_doc USING "&&&&&&"
|
|
LET cuerpo_correo =
|
|
cuerpo_correo CLIPPED, " CLIENTE: ", nombre_cli CLIPPED
|
|
|
|
####################
|
|
IF afecta_ex = "YES" THEN
|
|
IF verdad THEN
|
|
INSERT INTO cctb00020(
|
|
cod_cia,
|
|
tipo_doc,
|
|
num_oc,
|
|
fecha,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
factura,
|
|
valor_efectivo,
|
|
num_trans,
|
|
us_crea,
|
|
fech_crea)
|
|
VALUES(p_companias.cod_comp,
|
|
'AV',
|
|
recibo_nc.num_doc,
|
|
recibo_nc.fecha,
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
recibo_nc.num_orden,
|
|
recibo_nc.avance,
|
|
otro_num,
|
|
usuarios,
|
|
getdate())
|
|
END IF
|
|
END IF
|
|
#CREA LA REQUISICION DE DESPACHO SI NO SE HA ADICIONADO ALGUNA, TAMBIEN ADICIONA LA ORDEN EN CASO QUE NO TENGA
|
|
|
|
IF pcondpago = 4 OR pcondpago = 10 THEN
|
|
|
|
CALL autorizacioncontado(
|
|
recibo_nc.num_orden,
|
|
valor_cotizado,
|
|
montos_avance,
|
|
usuarios,
|
|
recibo_nc.avance,
|
|
recibo_nc.num_doc,
|
|
'AV',
|
|
nombre_cli)
|
|
RETURNING estado_req
|
|
DISPLAY BY NAME estado_req
|
|
END IF
|
|
#-------------------------------------------------------------------------
|
|
LET cuerpo_correo = cuerpo_correo CLIPPED, " ", estado_req CLIPPED
|
|
|
|
LET xusername = 'notificacion@marmotech.com.do'
|
|
LET xsmtphost = 'smtp.office365.com'
|
|
LET xsmtpport = '587'
|
|
LET xpassword = 'Lmmjvsd2020'
|
|
# LET vendedoremail = 'jsoto@marmotech.com.do'
|
|
|
|
CALL enviaemail(
|
|
vendedorEmail,
|
|
subject,
|
|
cuerpo_correo,
|
|
NULL,
|
|
xusername,
|
|
xsmtphost,
|
|
xsmtpport,
|
|
xpassword) #RETURNING retorne
|
|
|
|
SET CONNECTION "MSSQL"
|
|
|
|
IF opcion = '1' OR opcion = '2' OR opcion = '3' THEN
|
|
IF email_cliente IS NOT NULL THEN
|
|
CALL envia_encuesta(
|
|
email_cliente,
|
|
recibo_nc.num_orden,
|
|
nombre_cli,
|
|
opcion,
|
|
'RECIBO')
|
|
END IF
|
|
END IF
|
|
|
|
#--- FIN DEL PROCESO TIPO "A" (NUEVO). LO ANTERIOR SIEMPRE SE EJECUTA EN
|
|
# smarmotech/MSSQL; SOLO EL BLOQUE IFMX QUEDO CONDICIONADO A afecta_ex.
|
|
END IF
|
|
|
|
IF tipo_p = "C" THEN
|
|
CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad
|
|
|
|
IF verdad = TRUE AND afecta_ex="YES" THEN
|
|
SET CONNECTION "IFMX"
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
UPDATE cctb00001
|
|
SET (cuenta_no,
|
|
banco,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
valor,
|
|
monto_desc,
|
|
us_mod,
|
|
fech_mod)
|
|
= (recibo_nc.cuenta_no,
|
|
recibo_nc.num_orden,
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
recibo_nc.cod_emp_sec,
|
|
recibo_nc.fecha,
|
|
recibo_nc.avance,
|
|
0,
|
|
usuarios,
|
|
getdate())
|
|
WHERE tipo_doc = "AV"
|
|
AND num_doc = recibo_nc.num_doc
|
|
AND aplica_a = recibo_nc.num_doc
|
|
|
|
UPDATE cctb00011
|
|
SET comentario = recibo.comentario,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE cod_cia = p_companias.cod_comp
|
|
AND num_doc = recibo_nc.num_doc
|
|
AND tipo_doc = 'AV'
|
|
END IF
|
|
|
|
SET CONNECTION "MSSQL"
|
|
|
|
SELECT UNIQUE a.num_trans
|
|
INTO otro_num
|
|
FROM cctb00020 a
|
|
WHERE a.num_trans = recibo_nc.num_doc
|
|
|
|
UPDATE cctb00001
|
|
SET (cuenta_no,
|
|
banco,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
valor,
|
|
monto_desc,
|
|
us_mod,
|
|
fech_mod)
|
|
= (recibo_nc.cuenta_no,
|
|
recibo_nc.num_orden,
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
recibo_nc.cod_emp_sec,
|
|
recibo_nc.fecha,
|
|
recibo_nc.avance,
|
|
0,
|
|
SUSER_SNAME(),
|
|
GETDATE())
|
|
WHERE tipo_doc = "AV"
|
|
AND num_doc = otro_num
|
|
AND aplica_a = recibo_nc.num_doc
|
|
|
|
UPDATE cctb00011
|
|
SET comentario = recibo.comentario,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE cod_cia = p_companias.cod_comp
|
|
AND num_doc = recibo_nc.num_doc
|
|
AND tipo_doc = 'AV'
|
|
|
|
END IF
|
|
# NUMERO DE RECIBO A IMPRIMIR:
|
|
# - SI SE AFECTO IFMX (afecta_ex="YES", cliente 17): se imprime el
|
|
# secuencial de IFMX/MARMOTECH (otro_num), que es el numero con que se
|
|
# actualizo esa base.
|
|
# - SI NO SE AFECTO IFMX: se conserva el numero del flujo de SMARMOTECH
|
|
# que ya viene en recibo_nc.num_doc.
|
|
IF afecta_ex = "YES" AND otro_num IS NOT NULL AND otro_num > 0 THEN
|
|
LET recibo_nc.num_doc = otro_num
|
|
END IF
|
|
|
|
# IMPRESION MATRICIAL
|
|
|
|
IF tipoimprime = 'GR' THEN
|
|
LET r_filename = "ccprmt001a.4rp"
|
|
LET r_output = "SVG"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT cctb01b TO XML HANDLER HANDLER
|
|
OUTPUT TO REPORT cctb01b(
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
recibo_nc.fecha,
|
|
recibo_nc.num_doc,
|
|
recibo_nc.cod_emp_sec,
|
|
'AV',
|
|
NULL,
|
|
NULL,
|
|
recibo_nc.num_orden,
|
|
0,
|
|
recibo_nc.avance,
|
|
nombre_cli,
|
|
nombre_ven,
|
|
' ',
|
|
recibo.comentario)
|
|
FINISH REPORT cctb01b
|
|
END IF
|
|
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 volante TO archivo
|
|
DISPLAY "imprime ", imprime
|
|
DISPLAY BY NAME recibo_nc.num_doc ATTRIBUTE(REVERSE)
|
|
OUTPUT TO REPORT volante(recibo_nc.*)
|
|
FINISH REPORT volante
|
|
|
|
IF tipoimprime = 'MT' THEN
|
|
RUN imprime
|
|
END IF
|
|
END IF
|
|
|
|
{
|
|
LET r_filename = "ccprmt001a.4rp"
|
|
LET r_output = "SVG"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END IF
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
IF verdad THEN
|
|
LET recibo_nc.num_doc = otro_num
|
|
END IF
|
|
|
|
START REPORT cctb01b TO XML HANDLER HANDLER
|
|
OUTPUT TO REPORT cctb01b(recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,recibo_nc.fecha,recibo_nc.num_doc,
|
|
recibo_nc.cod_emp_sec,'AV',null,null,
|
|
recibo_nc.num_orden,0,recibo_nc.avance,
|
|
nombre_cli,nombre_ven,' ',recibo.comentario)
|
|
FINISH REPORT cctb01b
|
|
END IF}
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
END FUNCTION
|
|
|
|
FUNCTION ccpcmf003()
|
|
DEFINE conexion STRING
|
|
|
|
INPUT BY NAME recibo_nc.num_doc
|
|
BEFORE INPUT
|
|
SET CONNECTION "IFMX"
|
|
LET conexion = "IFMX"
|
|
ON KEY(F2)
|
|
SET CONNECTION "IFMX"
|
|
LET conexion = "IFMX"
|
|
ON KEY(F3)
|
|
SET CONNECTION "MSSQL"
|
|
LET conexion = "MSSQL"
|
|
AFTER FIELD num_doc
|
|
LET recibo_cons = NULL
|
|
LET recibo_ext = NULL
|
|
|
|
SELECT a.documento_ref,
|
|
a.tipo_cliente,
|
|
a.sec_cliente,
|
|
a.cod_emp_sec,
|
|
CONVERT(CHAR(10), a.fecha_orig, 103),
|
|
a.valor,
|
|
a.cod_emp,
|
|
a.valor_efectivo,
|
|
a.valor_cheque,
|
|
a.valor_tarjeta,
|
|
b.comentario,
|
|
a.valor_link
|
|
INTO recibo_nc.num_orden,
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
recibo_nc.cod_emp_sec,
|
|
recibo_nc.fecha,
|
|
recibo_nc.avance,
|
|
codigo_sucursal,
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr,
|
|
recibo.comentario,
|
|
monto_link
|
|
FROM cctb00001 a
|
|
LEFT OUTER
|
|
JOIN cctb00011 b
|
|
ON a.tipo_doc = b.tipo_doc
|
|
AND a.num_Doc = b.num_doc
|
|
AND a.sucid = b.sucid
|
|
WHERE a.status_t IS NULL
|
|
AND a.num_doc = a.aplica_a
|
|
AND a.tipo_doc = 'AV'
|
|
AND a.num_Doc = recibo_nc.num_doc
|
|
|
|
# QUITE EL CONTROL DE LA SUCURSAL PARA QUE SE PUDIERA CONSULTAR DE CUALQUIER SUCURSAL
|
|
# AND a.sucid = codigo_sucursal
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD Num_Doc
|
|
END IF
|
|
IF conexion = "MSSQL" THEN
|
|
LET recibo_cons = recibo_nc.num_doc
|
|
ELSE
|
|
LET recibo_ext = recibo_nc.num_doc
|
|
|
|
END IF
|
|
{ IF STATUS = NOTFOUND THEN
|
|
|
|
SET CONNECTION "MSSQL"
|
|
|
|
SELECT a.banco,a.tipo_cliente,a.sec_cliente,a.cod_emp_sec,
|
|
a.fecha_orig,a.valor,a.cod_emp
|
|
INTO recibo_nc.num_orden,recibo_nc.tipo_cliente,recibo_nc.sec_cliente,
|
|
recibo_nc.cod_emp_sec,recibo_nc.fecha,recibo_nc.avance,codigo_sucursal
|
|
FROM cctb00001 a
|
|
WHERE a.status_t IS NULL AND a.num_doc = a.aplica_a AND
|
|
a.tipo_doc = 'AV' AND a.num_Doc = recibo_nc.num_doc
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD Num_Doc
|
|
END IF
|
|
LET recibo_cons = recibo_nc.num_doc
|
|
ELSE
|
|
LET recibo_ext = recibo_nc.num_doc
|
|
END IF
|
|
}
|
|
# SELECT a.nombre INTO nombre_cli FROM vetb00004 a
|
|
# WHERE a.tipo_cliente = recibo_nc.tipo_cliente AND
|
|
# a.sec_cliente = recibo_nc.sec_cliente
|
|
|
|
SELECT a.nombre_cliente
|
|
INTO nombre_cli
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = recibo_nc.num_orden
|
|
|
|
SELECT UNIQUE a.nom1_emp, a.nom2_emp, a.apell1_emp
|
|
INTO nombre1, nombre2, apell
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = recibo_nc.cod_emp_sec
|
|
CALL busca_info()
|
|
|
|
LET nombre_ven =
|
|
nombre1 CLIPPED, " ", nombre2 CLIPPED, " ", apell CLIPPED
|
|
DISPLAY BY NAME recibo_nc.*,
|
|
nombre_cli,
|
|
nombre_ven,
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr,
|
|
monto_link
|
|
DISPLAY codigo_sucursal TO localidad
|
|
|
|
AFTER INPUT
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
MENU
|
|
{ ESTA FUNCIONABILIDAD SE QUITO TEMPORALMENTE, YA QUE EL PROGRAMA TIENE
|
|
QUE ACTUALIZAR DOS BASE DE DATOS DIFERENTES, PERO NO TENGO LA IDENTIFICACION DE
|
|
CUAL SERIA LA PRIMERA
|
|
ON ACTION anular
|
|
LET p_fechas = recibo_nc.fecha
|
|
SET CONNECTION "MSSQL"
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
LET otro_num = recibo_nc.num_doc
|
|
LET recibo_orig = recibo_nc.num_doc
|
|
CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad
|
|
IF verdad THEN
|
|
SET CONNECTION "IFMX"
|
|
|
|
SELECT SUM(a.valor+a.monto_desc) INTO monto1 FROM cctb00001 a
|
|
WHERE a.status_t IS NULL AND a.num_doc = recibo_nc.num_doc AND
|
|
a.num_doc != a.aplica_a AND a.tipo_doc = "AV"
|
|
|
|
|
|
IF monto1 IS NULL THEN
|
|
LET monto1 = 0
|
|
END IF
|
|
|
|
IF monto1 <> 0 THEN
|
|
ERROR "Documento Tiene Aplicaciones... No Puede Ser Eliminado"
|
|
CONTINUE MENU
|
|
END IF
|
|
END IF
|
|
SET CONNECTION "MSSQL"
|
|
IF verdad THEN
|
|
SELECT a.num_oc INTO recibo_nc.num_doc FROM cctb00020 a
|
|
WHERE a.num_trans = otro_num and tipo_Doc = 'AV'
|
|
END IF
|
|
SELECT SUM(a.valor+a.monto_desc) INTO monto1 FROM cctb00001 a
|
|
WHERE a.status_t IS NULL AND a.num_doc = recibo_nc.num_doc AND
|
|
a.num_doc != a.aplica_a AND a.tipo_doc = "AV"
|
|
|
|
IF monto1 IS NULL THEN
|
|
LET monto1 = 0
|
|
END IF
|
|
|
|
IF monto1 <> 0 THEN
|
|
ERROR "Documento Tiene Aplicaciones... No Puede Ser Eliminado"
|
|
CONTINUE MENU
|
|
END IF
|
|
|
|
|
|
LET respuesta = fgl_winquestion("INFO","ESTA SEGURO DE QUERER ANULAR ESTE DOCUMENTO?","NO","NO|YES","question",0)
|
|
IF UPSHIFT(respuesta) = "YES" THEN
|
|
|
|
IF verdad THEN
|
|
SET CONNECTION "IFMX"
|
|
LET recibo_nc.num_doc= recibo_orig
|
|
UPDATE cctb00001 SET (status_t,us_mod,fech_mod) = ( "E",usuarios,getdate())
|
|
WHERE tipo_doc = "AV" AND num_doc = recibo_nc.num_doc AND
|
|
aplica_a = recibo_nc.num_doc and fecha_orig > '03/01/2011'
|
|
|
|
END IF
|
|
SET CONNECTION "MSSQL"
|
|
SELECT a.num_oc INTO recibo_nc.num_doc FROM cctb00020 a
|
|
WHERE a.num_trans = otro_num
|
|
UPDATE cctb00001 SET (status_t,us_mod,fech_mod) = ( "E",SUSER_SNAME(),GETDATE())
|
|
WHERE tipo_doc = "AV" AND num_doc = recibo_nc.num_doc AND
|
|
aplica_a = recibo_nc.num_doc and fecha_orig > '03/01/2011'
|
|
|
|
LET numero_msg = 82
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
}
|
|
ON ACTION rImprimir
|
|
INPUT BY NAME tipoimprime
|
|
CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad
|
|
IF verdad = TRUE THEN
|
|
SET CONNECTION "IFMX"
|
|
SELECT a.rnc, a.direccion, a.telefono, a.fax
|
|
INTO p_companias.rnc,
|
|
p_companias.direccion,
|
|
p_companias.telefono,
|
|
p_companias.fax
|
|
FROM companias a
|
|
END IF
|
|
SET CONNECTION "MSSQL"
|
|
SELECT a.cod_perfil
|
|
INTO pperfil
|
|
FROM seg0001 a
|
|
WHERE a.usuario = usuarios
|
|
|
|
# CALL seg000(usuarios,pperfil,'otroimp') RETURNING acceso
|
|
# CALL fgl_Winmessage("IMP",acceso,"INFO")
|
|
|
|
# IF acceso = "SI" THEN
|
|
|
|
CALL defecto(
|
|
usuarios, clave, impresor)
|
|
RETURNING imprime,
|
|
negrilla_on,
|
|
negrillas_of,
|
|
doble_on,
|
|
doble_off,
|
|
comp_on,
|
|
comp_off,
|
|
doce,
|
|
normal,
|
|
archivo,
|
|
copia
|
|
|
|
IF tipoimprime = 'GR' THEN
|
|
LET r_filename = "ccprmt001a.4rp"
|
|
LET r_output = "SVG"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(
|
|
r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END IF
|
|
|
|
LET handler =
|
|
fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT cctb01b TO XML HANDLER HANDLER
|
|
OUTPUT TO REPORT cctb01b(
|
|
recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,
|
|
recibo_nc.fecha,
|
|
recibo_nc.num_doc,
|
|
recibo_nc.cod_emp_sec,
|
|
'AV',
|
|
NULL,
|
|
NULL,
|
|
recibo_nc.num_orden,
|
|
0,
|
|
recibo_nc.avance,
|
|
nombre_cli,
|
|
nombre_ven,
|
|
' ',
|
|
recibo.comentario)
|
|
FINISH REPORT cctb01b
|
|
END IF
|
|
ELSE
|
|
DISPLAY "archivo ", archivo
|
|
START REPORT volante TO archivo
|
|
OUTPUT TO REPORT volante(recibo_nc.*)
|
|
FINISH REPORT volante
|
|
IF tipoimprime = 'MT' THEN
|
|
RUN imprime
|
|
|
|
END IF
|
|
END IF
|
|
|
|
CALL fgl_winmessage(
|
|
"IMPRESION", "ENVIO INFORMACION A LA IMPRESORA", "STOP")
|
|
|
|
# END IF
|
|
{
|
|
LET r_filename = "ccprmt001a.4rp"
|
|
LET r_output = "SVG"
|
|
LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
IF preview = 0 THEN
|
|
CALL fgl_report_selectPreview(1) -- changing default
|
|
# CALL fgl_report_configureSVGPreview("PrintOnDefaultPrinter")
|
|
ELSE
|
|
CALL fgl_report_selectPreview(preview)
|
|
END IF
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
--run the report
|
|
IF handler IS NOT NULL THEN -- report engine was configured ok
|
|
|
|
START REPORT cctb01b TO XML HANDLER HANDLER
|
|
OUTPUT TO REPORT cctb01b(recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,recibo_nc.fecha,recibo_nc.num_doc,
|
|
recibo_nc.cod_emp_sec,'AV',null,null,
|
|
recibo_nc.num_orden,0,recibo_nc.avance,
|
|
nombre_cli,nombre_ven,' ',recibo.comentario)
|
|
FINISH REPORT cctb01b
|
|
END IF
|
|
}
|
|
{ON ACTION otroimp
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
#CALL configureoutput("PDF") RETURNING HANDLER
|
|
#START REPORT volante1 TO XML HANDLER HANDLER
|
|
START REPORT volante1 TO archivo
|
|
|
|
OUTPUT TO REPORT volante1(recibo_nc.*)
|
|
FINISH REPORT volante1
|
|
|
|
RUN imprime
|
|
CALL fgl_winmessage("IMPRESION","ENVIO INFORMACION A LA IMPRESORA","STOP")
|
|
}
|
|
ON ACTION salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
REPORT volante(x)
|
|
|
|
DEFINE x RECORD
|
|
num_doc INTEGER,
|
|
num_orden INTEGER,
|
|
tipo_cliente INTEGER,
|
|
sec_cliente INTEGER,
|
|
cod_emp_sec INTEGER,
|
|
cuenta_no CHAR(8),
|
|
fecha DATE,
|
|
avance DECIMAL(12, 2)
|
|
END RECORD
|
|
DEFINE doble CHAR(1)
|
|
DEFINE comp_off, negras, negras_of, italic, italic_of CHAR(2)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
PAGE LENGTH 33
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET negras = ASCII 27, ASCII 69
|
|
LET negras_of = ASCII 27, ASCII 70
|
|
LET doble = ASCII 14
|
|
LET italic = ASCII 27, ASCII 52
|
|
LET italic_of = ASCII 27, ASCII 53
|
|
LET comp_off = ASCII 18
|
|
|
|
PRINT COLUMN 70, comp_off, ASCII 27, ASCII 80
|
|
PRINT COLUMN 68, doble, x.num_doc USING "&&&&&&"
|
|
IF NOT verdad THEN
|
|
PRINT " "
|
|
PRINT " "
|
|
ELSE
|
|
PRINT COLUMN 5,
|
|
negras,
|
|
p_companias.nombre CLIPPED,
|
|
negras_of,
|
|
COLUMN 74,
|
|
x.fecha USING "dd/mm/yyyy"
|
|
|
|
PRINT COLUMN 5,
|
|
p_companias.direccion CLIPPED,
|
|
" TEL.",
|
|
p_companias.telefono CLIPPED
|
|
END IF
|
|
|
|
PRINT COLUMN 15, italic, "RECIBO DE INGRESO"
|
|
PRINT COLUMN 15, italic, "AVANCE A COTIZACION"
|
|
|
|
SKIP 1 LINE
|
|
|
|
LET valor_orig = x.avance
|
|
LET valor_letras = NULL
|
|
SELECT a.simbolo, a.descripcion_moneda
|
|
INTO psimbolo, pmoneda
|
|
FROM vetb00061 a, vetb00060 b
|
|
WHERE a.ventas = b.ventas AND b.tipo_cliente = x.tipo_cliente
|
|
|
|
CALL convierte()
|
|
# BUSCA TIPO DE VENTAS
|
|
|
|
PRINT COLUMN 5, "LOCALIDAD: ", nombre_sucursal
|
|
PRINT COLUMN 5,
|
|
"RECIBIMOS DE :",
|
|
negras,
|
|
nombre_cli CLIPPED,
|
|
"(",
|
|
x.tipo_cliente USING "&&",
|
|
"-",
|
|
x.sec_cliente USING "&&&&&&",
|
|
")",
|
|
negras_of
|
|
PRINT COLUMN 5, "DIRECCION :", negras, xdireccion, negras_of
|
|
PRINT COLUMN 5,
|
|
"PROVINCIA :",
|
|
negras,
|
|
xnombre_provincia CLIPPED,
|
|
negras_of
|
|
PRINT COLUMN 5,
|
|
"VENDEDOR :",
|
|
recibo_nc.cod_emp_sec USING "<<<<",
|
|
" ",
|
|
nombre_ven
|
|
PRINT COLUMN 5,
|
|
"PROYECTO :",
|
|
negras,
|
|
xnombre_proyecto CLIPPED,
|
|
negras_of
|
|
PRINT COLUMN 5,
|
|
"LA SUMA DE :",
|
|
negras,
|
|
valor_letras CLIPPED,
|
|
negras_of
|
|
PRINT COLUMN 5,
|
|
"VALOR RECIBIDO:",
|
|
negras,
|
|
psimbolo CLIPPED,
|
|
x.avance USING "<<<,<<<,<<<.##",
|
|
negras_of
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 1,
|
|
"------------------------------------------------------------------------------"
|
|
PRINT COLUMN 5,
|
|
"FECHA",
|
|
COLUMN 40,
|
|
"COTIZACION NO.",
|
|
COLUMN 60,
|
|
"NETO COBRADO"
|
|
PRINT COLUMN 1,
|
|
"------------------------------------------------------------------------------"
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 5,
|
|
x.fecha USING "dd/mm/yyyy",
|
|
COLUMN 40,
|
|
x.num_orden USING "&&&&&&",
|
|
COLUMN 58,
|
|
psimbolo CLIPPED,
|
|
x.avance USING "<<<,<<<,<##.##"
|
|
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 5, "OBSERVACION: ", recibo.comentario
|
|
PRINT COLUMN 5,
|
|
"_______________________________",
|
|
COLUMN 45,
|
|
"_______________________________"
|
|
PRINT COLUMN 10,
|
|
" Preparado Por ",
|
|
COLUMN 45,
|
|
" Autorizado Por"
|
|
|
|
PRINT italic_of
|
|
|
|
END REPORT
|
|
|
|
REPORT volante1(x)
|
|
|
|
DEFINE x RECORD
|
|
num_doc INTEGER,
|
|
num_orden INTEGER,
|
|
tipo_cliente INTEGER,
|
|
sec_cliente INTEGER,
|
|
cod_emp_sec INTEGER,
|
|
fecha DATE,
|
|
avance DECIMAL(12, 2)
|
|
END RECORD
|
|
|
|
DEFINE doble CHAR(1)
|
|
DEFINE comp_off, negras, negras_of, italic, italic_of CHAR(2)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
PAGE LENGTH 33
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
{ LET negras = ASCII 27, ASCII 69
|
|
LET negras_of = ASCII 27, ASCII 70
|
|
LET doble = ASCII 14
|
|
LET italic = ASCII 27, ASCII 52
|
|
LET italic_of = ASCII 27, ASCII 53
|
|
LET comp_off = ASCII 18
|
|
}
|
|
PRINT COLUMN 70, comp_off, ASCII 27, ASCII 80
|
|
PRINT COLUMN 68, doble, x.num_doc USING "&&&&&&"
|
|
IF NOT verdad THEN
|
|
PRINT " "
|
|
PRINT " "
|
|
ELSE
|
|
PRINT COLUMN 5,
|
|
negras,
|
|
p_companias.nombre CLIPPED,
|
|
negras_of,
|
|
COLUMN 74,
|
|
TODAY USING "dd/mm/yyyy"
|
|
|
|
PRINT COLUMN 5,
|
|
p_companias.direccion CLIPPED,
|
|
" TEL.",
|
|
p_companias.telefono CLIPPED
|
|
END IF
|
|
|
|
PRINT COLUMN 15, italic, "RECIBO DE INGRESO"
|
|
PRINT COLUMN 15, italic, "AVANCE A COTIZACION"
|
|
|
|
SKIP 1 LINE
|
|
|
|
LET valor_orig = x.avance
|
|
LET valor_letras = NULL
|
|
CALL convierte()
|
|
SET CONNECTION "MSSQL"
|
|
# BUSCA TIPO DE VENTAS
|
|
SELECT a.simbolo, a.descripcion_moneda
|
|
INTO psimbolo, pmoneda
|
|
FROM vetb00061 a, vetb00060 b
|
|
WHERE a.ventas = b.ventas AND b.tipo_cliente = x.tipo_cliente
|
|
|
|
PRINT COLUMN 60, "LOCALIDAD: ", nombre_sucursal
|
|
PRINT COLUMN 5,
|
|
"RECIBIMOS DE :",
|
|
negras,
|
|
nombre_cli CLIPPED,
|
|
"(",
|
|
x.tipo_cliente USING "&&",
|
|
"-",
|
|
x.sec_cliente USING "&&&&&&",
|
|
")",
|
|
negras_of
|
|
PRINT COLUMN 5, "DIRECCION :", negras, xdireccion, negras_of
|
|
PRINT COLUMN 5,
|
|
"PROVINCIA :",
|
|
negras,
|
|
xnombre_provincia CLIPPED,
|
|
negras_of
|
|
PRINT COLUMN 5,
|
|
"VENDEDOR :",
|
|
recibo_nc.cod_emp_sec USING "<<<<",
|
|
" ",
|
|
nombre_ven
|
|
PRINT COLUMN 5,
|
|
"PROYECTO :",
|
|
negras,
|
|
xnombre_proyecto CLIPPED,
|
|
negras_of
|
|
PRINT COLUMN 5,
|
|
"LA SUMA DE :",
|
|
negras,
|
|
valor_letras CLIPPED,
|
|
negras_of
|
|
PRINT COLUMN 5,
|
|
"VALOR RECIBIDO:",
|
|
negras,
|
|
psimbolo CLIPPED,
|
|
x.avance USING "<<<,<<<,<<<.##",
|
|
negras_of
|
|
PRINT COLUMN 5, "REFERENCIA : ", otro_num USING "&&&&&&"
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 1,
|
|
"------------------------------------------------------------------------------"
|
|
PRINT COLUMN 5,
|
|
"FECHA",
|
|
COLUMN 40,
|
|
"COTIZACION NO.",
|
|
COLUMN 60,
|
|
"NETO COBRADO"
|
|
PRINT COLUMN 1,
|
|
"------------------------------------------------------------------------------"
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 5,
|
|
x.fecha USING "dd/mm/yyyy",
|
|
COLUMN 40,
|
|
x.num_orden USING "&&&&&&",
|
|
COLUMN 58,
|
|
psimbolo CLIPPED,
|
|
x.avance USING "<<<,<<<,<##.##"
|
|
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 5, "OBSERVACION: ", recibo.comentario
|
|
PRINT COLUMN 5,
|
|
"_______________________________",
|
|
COLUMN 45,
|
|
"_______________________________"
|
|
PRINT COLUMN 10,
|
|
" Preparado Por ",
|
|
COLUMN 45,
|
|
" Autorizado Por"
|
|
|
|
PRINT italic_of
|
|
|
|
END REPORT
|
|
|
|
FUNCTION convierte()
|
|
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_orig
|
|
LET cheles = (valor_orig - 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
|
|
IF k > 0 AND k < 10 THEN
|
|
LET unid_c = c - (k * 100) # AQUI FUE
|
|
IF k > 1 THEN
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", centenas[k] CLIPPED
|
|
ELSE
|
|
IF k = 1 THEN
|
|
IF unid_c > 0 THEN
|
|
LET valor_letras =
|
|
valor_letras CLIPPED,
|
|
" ",
|
|
centenas[k] CLIPPED
|
|
ELSE
|
|
LET valor_letras =
|
|
valor_letras CLIPPED,
|
|
" ",
|
|
decenas[81] CLIPPED
|
|
END IF
|
|
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
LET unid_c = c - (k * 100)
|
|
|
|
IF unid_c > 0 AND unid_c < 20 THEN
|
|
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", unidades1[unid_c] CLIPPED
|
|
|
|
ELSE
|
|
LET unid_c = unid_c - 19
|
|
IF unid_c > 0 AND unid_c <= 81 THEN
|
|
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", decenas[unid_c] CLIPPED
|
|
|
|
LET consegui = "S"
|
|
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF c > 82 AND c < 100 AND consegui <> "S" THEN
|
|
LET c = c - 19
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", decenas[c] CLIPPED
|
|
|
|
END IF
|
|
|
|
IF c > 100 AND consegui <> "S" THEN
|
|
LET c = c - 119
|
|
IF c > 0 AND c <= 81 THEN
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", decenas[c] CLIPPED
|
|
LET consegui = "N"
|
|
END IF
|
|
|
|
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 <= 81 THEN
|
|
|
|
LET a = unidades_m - 19
|
|
IF a > 0 AND a <= 81 THEN
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[a] CLIPPED
|
|
LET consegui = "S"
|
|
ELSE
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", unidades1[unidades_m] CLIPPED
|
|
END IF
|
|
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 / 100
|
|
|
|
IF b > 0 AND b <= 9 THEN
|
|
|
|
IF b = 1 THEN
|
|
LET valor_letras = valor_letras CLIPPED, " CIEN "
|
|
ELSE
|
|
LET valor_letras =
|
|
valor_letras CLIPPED, " ", centenas[b] CLIPPED
|
|
END IF
|
|
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 u = u - 19
|
|
# 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
|
|
|
|
IF u >= 1 AND u < 82 THEN
|
|
# LET u = u - 19 # adicione este 13/5/2011 La quite el 30/5/2011
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[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
|
|
LET unidades_mi = unidades_mi - 19
|
|
|
|
IF unidades_mi > 0 AND unidades_mi <= 81 THEN
|
|
LET m = unidades_mi
|
|
LET valor_letras = valor_letras CLIPPED, " ", decenas[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,
|
|
" ",
|
|
pmoneda 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] = "DIECISEIS"
|
|
LET unidades1[17] = "DIECISIETE"
|
|
LET unidades1[18] = "DIECIOCHO"
|
|
LET unidades1[19] = "DIECINUEVE"
|
|
|
|
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 busca_info()
|
|
|
|
SET CONNECTION "MSSQL"
|
|
|
|
SELECT a.nombre
|
|
INTO nombre_cli
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = recibo_nc.tipo_cliente
|
|
AND a.sec_cliente = recibo_nc.sec_cliente
|
|
LET xdireccion = NULL
|
|
SELECT a.direccion_cliente
|
|
INTO xdireccion
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = recibo_nc.num_orden
|
|
|
|
SELECT UNIQUE a.nom1_emp, a.nom2_emp, a.apell1_emp
|
|
INTO nombre1, nombre2, apell
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = recibo_nc.cod_emp_sec
|
|
|
|
LET nombre_ven = nombre1 CLIPPED, " ", nombre2 CLIPPED, " ", apell CLIPPED
|
|
SELECT a.sucnombre
|
|
INTO nombre_sucursal
|
|
FROM sucursales a
|
|
WHERE a.sucid = codigo_sucursal
|
|
|
|
LET otro_num = NULL
|
|
SELECT a.num_trans
|
|
INTO otro_num
|
|
FROM cctb00020 a
|
|
WHERE a.num_oc = recibo_nc.num_doc
|
|
|
|
SELECT a.chitbis
|
|
INTO ch_itbis
|
|
FROM cctb00011 a
|
|
WHERE a.tipo_Doc = 'AV' AND a.num_doc = recibo_nc.num_doc
|
|
|
|
LET nombre_cli =
|
|
nombre_cli CLIPPED,
|
|
" ",
|
|
recibo_nc.tipo_cliente USING "<<",
|
|
"-",
|
|
recibo_nc.sec_cliente USING "<<<<<<"
|
|
|
|
LET condicionPago = NULL
|
|
SELECT a.descrip
|
|
INTO condicionPago
|
|
FROM vetb00012 a, vetb00050 b
|
|
WHERE a.cond_pago = b.cond_pago
|
|
AND b.cotizacion_no = recibo_nc.num_orden
|
|
|
|
SET CONNECTION "IFMX"
|
|
|
|
DISPLAY BY NAME recibo_nc.*, nombre_cli, nombre_ven, ch_itbis
|
|
DISPLAY codigo_sucursal TO Localidad
|
|
|
|
END FUNCTION
|
|
FUNCTION procesacliente(xtipo_cliente)
|
|
DEFINE
|
|
xtipo_cliente SMALLINT,
|
|
verdad1 BOOLEAN
|
|
|
|
LET verdad1 = TRUE
|
|
IF xtipo_cliente = 18 THEN
|
|
LET verdad1 = FALSE
|
|
END IF
|
|
|
|
IF xtipo_cliente = 19 THEN
|
|
LET verdad1 = FALSE
|
|
END IF
|
|
RETURN verdad1
|
|
END FUNCTION
|
|
|
|
FUNCTION evalua_clientes()
|
|
DEFINE
|
|
xnum_req INT,
|
|
xvalor DEC(12, 2),
|
|
xfecha CHAR(10),
|
|
mensaje VARCHAR(100)
|
|
DECLARE busca_req CURSOR FOR
|
|
SELECT CONVERT(char(10), b.fecha, 103), a.num_req, SUM(a.valor)
|
|
FROM cctb00026 a, cctb00025 b
|
|
WHERE a.cotizacion_no = recibo_nc.num_orden
|
|
AND a.num_req = b.num_req
|
|
AND b.estado = "NO AUTORIZADA"
|
|
AND b.status_t IS NULL
|
|
GROUP BY b.fecha, a.num_req
|
|
ORDER BY b.fecha DESC
|
|
LET idx = 1
|
|
FOREACH busca_req INTO xfecha, xnum_req, xvalor
|
|
IF xvalor IS NOT NULL THEN
|
|
IF xvalor <= recibo_nc.avance + montos_avance + diferencia THEN
|
|
{ EL RECIBO DE INGRESO NO VA AUTORIZAR NADA FECHA 19-12-2022
|
|
UPDATE cctb00025 SET estado = "AUTORIZADA",
|
|
us_mod = "MBS",
|
|
fech_mod = getdate()
|
|
WHERE num_req = xnum_req
|
|
DISPLAY "CASO CUATRO "
|
|
LET mensaje ='ESTA REQUISICION FUE AUTORIZADA POR EL RECIBO DE PAGO ',recibo_nc.avance USING "<<<<<<"
|
|
INSERT INTO cctb00031 (fecha,us_crea,sec_vend,tipo_cliente,
|
|
sec_cliente,nombreCliente,num_req,limite_cr,monto_cotizacion,
|
|
balance,estado,tipo_doc_ref,monto_req,num_recibo,monto_avance,cotizacion_no,
|
|
descrip_estado,nombrevendedor,num_oc)
|
|
VALUES (getdate(),'MBS',recibo_nc.cod_emp_sec,recibo_nc.tipo_cliente,
|
|
recibo_nc.sec_cliente,nombre_cli,xnum_req,'0',valor_cotizado,'0',"AUTORIZADA",
|
|
"AV",xvalor,recibo_nc.num_doc,recibo_nc.avance,recibo_nc.num_orden,mensaje,
|
|
nombre_ven,xnum_oc )
|
|
|
|
LET chmensaje = "NUMERO RECIBO: ",recibo_nc.num_doc USING "<<<<<<"
|
|
LET subject = "AUROTIZACION REQUISICION DESPACHO COTIZACION: ",recibo_nc.num_orden USING "&&&&&&"
|
|
}
|
|
# LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
|
|
# LET cuerpo_correo = "VENDEDOR : ",nombre_ven CLIPPED
|
|
# LET cuerpo_correo = cuerpo_correo CLIPPED," FECHA : ",recibo_nc.fecha USING "DD/MM/YYYY"
|
|
# LET cuerpo_correo = cuerpo_correo CLIPPED," RECIBO : ",recibo_nc.num_doc USING "&&&&&&"
|
|
# LET cuerpo_correo = cuerpo_correo CLIPPED," CLIENTE: ",nombre_cli CLIPPED
|
|
|
|
# CALL envia_correo(
|
|
# 'soporteclientes@marmotech.com.do;cxc@marmotech.com.do',
|
|
# vendedorEmail,
|
|
# cuerpo_correo,
|
|
# subject,
|
|
# procedimiento)
|
|
END IF
|
|
END IF
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
IF idx = 1 THEN
|
|
IF pcondpago = 4 OR pcondpago = 10 THEN
|
|
CALL autorizacioncontado(
|
|
recibo_nc.num_orden,
|
|
valor_cotizado,
|
|
montos_avance,
|
|
usuarios,
|
|
montos_avance,
|
|
recibo_nc.num_doc,
|
|
'AV',
|
|
nombre_cli)
|
|
END IF
|
|
END IF
|
|
END FUNCTION
|
|
FUNCTION genera_orden()
|
|
DEFINE
|
|
rcod DYNAMIC ARRAY OF INT,
|
|
xorden DYNAMIC ARRAY OF VARCHAR(10)
|
|
|
|
DECLARE busca_cot CURSOR FOR
|
|
SELECT DISTINCT a.cod_n, b.genera_orden
|
|
FROM vetb00051 a, iptb00020 b
|
|
WHERE a.cotizacion_no = recibo_nc.num_orden AND a.cod_n = b.cod_n
|
|
LET idx = 1
|
|
LET xestado = 'S'
|
|
|
|
FOREACH busca_cot INTO rcod[idx], xorden[idx]
|
|
|
|
IF xorden[idx] = "NO" THEN
|
|
|
|
LET xestado = 'N'
|
|
EXIT FOREACH
|
|
END IF
|
|
LET idx = idx + 1
|
|
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
REPORT cctb01b(
|
|
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),
|
|
pitbis DEC(12, 2),
|
|
labelcliente STRING
|
|
|
|
DEFINE
|
|
hora CHAR(5),
|
|
|
|
p_nombre LIKE vetb00004.nombre,
|
|
p_comentario CHAR(120), #LIKE cctb00011.comentario,
|
|
descuento, total_monto, ditbis DEC(12, 2),
|
|
tipodocumento VARCHAR(50)
|
|
|
|
ORDER BY p_sec_cliente
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = TIME
|
|
|
|
IF p_tipo_doc = 'AV' OR p_tipo_doc = 'PG' THEN
|
|
LET tipodocumento = 'RECIBO DE INGRESOS'
|
|
LET labelcliente = "HEMOS RECIBIDO DE "
|
|
LET p_nombre_tipo = 'AVANCE A COTIZACION'
|
|
ELSE
|
|
LET tipodocumento = 'DOCUMENTO CUENTAS POR COBRAR'
|
|
LET labelcliente = "CLIENTE: "
|
|
END IF
|
|
|
|
BEFORE GROUP OF p_sec_cliente
|
|
SELECT a.itbi INTO pitbis FROM vetb00019 a WHERE a.disponible = "S"
|
|
IF pitbis IS NULL THEN
|
|
LET pitbis = 0
|
|
END IF
|
|
|
|
PRINTX nombre_sucursal,
|
|
p_cuenta_no,
|
|
p_nombre_cta,
|
|
p_banco,
|
|
p_nombre,
|
|
p_tipo_cliente,
|
|
p_sec_cliente,
|
|
p_cod_emp_sec,
|
|
p_nomb_emp,
|
|
p_tipo_doc,
|
|
p_nombre_tipo,
|
|
tipodocumento,
|
|
hora,
|
|
p_companias.nombre,
|
|
p_num_doc,
|
|
p_companias.rnc,
|
|
p_companias.direccion,
|
|
p_fecha_orig,
|
|
p_companias.telefono,
|
|
p_companias.fax,
|
|
fecha_proximo,
|
|
labelcliente,
|
|
nombre_sucursal,
|
|
condicionPago,
|
|
xdireccion
|
|
|
|
ON EVERY ROW
|
|
PRINTX p_aplica_a, p_monto_desc, p_valor, ditbis, p_valor
|
|
|
|
AFTER GROUP OF p_sec_cliente
|
|
# BUSCA TIPO DE VENTAS
|
|
SELECT a.simbolo, a.descripcion_moneda
|
|
INTO psimbolo, pmoneda
|
|
FROM vetb00061 a, vetb00060 b
|
|
WHERE a.ventas = b.ventas AND b.tipo_cliente = p_tipo_cliente
|
|
|
|
LET descuento = GROUP SUM(p_monto_desc)
|
|
LET total_monto = GROUP SUM(p_valor)
|
|
|
|
LET valor_orig = total_monto
|
|
LET valor_letras = NULL
|
|
CALL convierte()
|
|
|
|
PRINTX descuento, total_monto, valor_letras, psimbolo
|
|
|
|
ON LAST ROW
|
|
|
|
PRINTX p_comentario
|
|
|
|
END REPORT
|
|
FUNCTION verifica_orden()
|
|
LET tieneorden = TRUE
|
|
SELECT a.num_oc
|
|
FROM prtb00012 a
|
|
WHERE a.cotizacion_no = recibo_nc.num_orden AND a.status_T IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET tieneorden = FALSE
|
|
END IF
|
|
END FUNCTION
|