4379 lines
158 KiB
Plaintext
4379 lines
158 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
PROGRAMA : CCPRMT001
|
|
OBJETIVO : Mantenimiento de Recibo de Pago y otros Movimientos
|
|
REALIZADO POR : JUAN SOTO
|
|
FECHA : Enero 1997
|
|
MODIFICACION : El campo cod_emp de la tabla cctb00001 se guarda el codigo de la sucursale quien
|
|
emite el recibo
|
|
En el campo costo de la tabla cctb00001 seguarda 1-Si el documento
|
|
debe salir en el reporte de cobros de la encargada y 0- En caso
|
|
contrario
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
IMPORT os
|
|
GLOBALS "ccprgb000.4gl"
|
|
DEFINE xvalorck, xvalorCr, xvalorEfectivo, xvalorComision, xvalorLink,xefectivopesos,xckpesos,xlinkpesos,xcrpesos DEC(12, 2)
|
|
DEFINE monto_efectivo, monto_ck, monto_cr, monto_link,link_pesos,kefectivo_pesos,tarjeta_pesos,ck_pesos DECIMAL(12, 2),tipo_cuenta int
|
|
DEFINE efectivo, ck, cr,tasa DECIMAL(12, 2)
|
|
DEFINE decenas DYNAMIC ARRAY OF CHAR(20)
|
|
DEFINE centenas DYNAMIC ARRAY OF CHAR(20),ventas int
|
|
DEFINE
|
|
unidades1 DYNAMIC ARRAY OF CHAR(20),
|
|
valor_fact_original DYNAMIC ARRAY OF DEC(12, 2),
|
|
num_recibo_ing, deposito, XidEntrada INT,
|
|
foto CHAR(200),
|
|
nombre_file_foto CHAR(100),
|
|
imagefac, d_tipos, f_tipos, mensaje, filepath, filedestino, extension
|
|
STRING,
|
|
pimagen BYTE,
|
|
xventas CHAR(1)
|
|
|
|
DEFINE valor_cheque1,
|
|
p_num_doc,
|
|
xcotizacion,
|
|
xorden,
|
|
xfactura_ext,
|
|
numero_doc,
|
|
sec_vend_a
|
|
INTEGER
|
|
DEFINE
|
|
valor_ctrl1,
|
|
valor_nc,
|
|
nc_pend,
|
|
valor_ctrl,
|
|
p_total,
|
|
valor_orig,
|
|
remanente,
|
|
valor_aplicado,
|
|
valor2,
|
|
p_comision,
|
|
v_comision
|
|
DECIMAL(12, 2),
|
|
psimbolo, pmoneda, valor_letras STRING
|
|
DEFINE fecha1 DATE
|
|
DEFINE nombre_cta CHAR(30)
|
|
DEFINE tipo_ant, tipo_doc2, tipo_doc1 CHAR(2)
|
|
DEFINE
|
|
opc CHAR(1),
|
|
avance, generaE BOOLEAN,
|
|
navance, plataforma SMALLINT,
|
|
ch_itbis CHAR(2),
|
|
ppaga_itbis, encontre_factura CHAR(1),
|
|
avance_e DYNAMIC ARRAY OF INT,
|
|
actualiza VARCHAR(2)
|
|
|
|
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,
|
|
entradaDiario VARCHAR(25),
|
|
i SMALLINT,
|
|
rdeposito INT,
|
|
xmontoDeposito DEC(12, 2)
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("ccprmt01.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.* INTO p_companias.* FROM companias a
|
|
SELECT 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 ccprmt001()
|
|
END MAIN
|
|
|
|
####### Funcion para agregar un recibo de pago
|
|
|
|
FUNCTION ccprmt001()
|
|
|
|
OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 22, PROMPT LINE 23
|
|
|
|
# CALL pantalla()
|
|
OPEN FORM ccfmmt001 FROM "ccfmmt001"
|
|
DISPLAY FORM ccfmmt001
|
|
DISPLAY "ccprmt001" AT 4, 3
|
|
DISPLAY "Movimientos de CXC" AT 6, 31
|
|
DISPLAY nombre_sucursal TO localidad
|
|
|
|
LET fecha1 = TODAY
|
|
MENU "OPCION"
|
|
ON ACTION Adicionar
|
|
LET INT_FLAG = FALSE
|
|
CALL ccpcad001()
|
|
ON ACTION Consultar_modificar
|
|
CALL ccpcmf001()
|
|
ON ACTION Salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION ccpcad001()
|
|
|
|
DEFINE emp SMALLINT
|
|
DEFINE hoy DATE
|
|
|
|
INITIALIZE recibo.tipo_doc,
|
|
recibo.cuenta_no,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
recibo.cod_emp_sec,
|
|
recibo.fecha_orig,
|
|
recibo.comentario,
|
|
valor_ctrl,
|
|
ch_itbis,
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr,
|
|
plataforma,
|
|
monto_link,link_pesos,kefectivo_pesos,tarjeta_pesos,ck_pesos,tasa TO NULL
|
|
|
|
LET hoy = NULL
|
|
|
|
LABEL volver:
|
|
LET recibo.fecha_orig = fecha1
|
|
LET valor_ctrl = NULL
|
|
LET tipo_ant = "PG"
|
|
DISPLAY nombre_sucursal TO localidad
|
|
|
|
INPUT BY NAME recibo.*,
|
|
valor_ctrl,
|
|
ch_itbis,
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_cr,
|
|
monto_link,
|
|
plataforma,tasa
|
|
WITHOUT DEFAULTS
|
|
|
|
## VENTANAS PARA BUSCAR LOS CLIENTES Y LOS EMPLEADOS
|
|
BEFORE INPUT
|
|
LET tasa = null
|
|
|
|
CALL cuenta()
|
|
CALL plataformapago()
|
|
LET ch_itbis = 'SI'
|
|
LET aplicacion_antiguas = 'NO'
|
|
DISPLAY BY NAME ch_itbis
|
|
# Limpia en pantalla los valores en pesos para que no quede el de un recibo anterior
|
|
LET kefectivo_pesos = 0
|
|
LET ck_pesos = 0
|
|
LET tarjeta_pesos = 0
|
|
LET link_pesos = 0
|
|
DISPLAY BY NAME kefectivo_pesos, ck_pesos, tarjeta_pesos, link_pesos
|
|
BEFORE FIELD num_doc
|
|
IF recibo.tipo_doc = 'PG' THEN
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
ON KEY(CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD(tipo_cliente)
|
|
CALL consulta_clientes()
|
|
|
|
LET recibo.tipo_cliente = cliente_dir.tipo_cliente
|
|
LET recibo.sec_cliente = cliente_dir.sec_cliente
|
|
|
|
SELECT a.nombre
|
|
INTO nom_cli
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.status_t IS NULL
|
|
|
|
DISPLAY BY NAME recibo.tipo_cliente ATTRIBUTE(BOLD)
|
|
DISPLAY BY NAME recibo.sec_cliente ATTRIBUTE(BOLD)
|
|
DISPLAY BY NAME nom_cli ATTRIBUTE(BOLD)
|
|
|
|
# NEXT FIELD cod_emp_sec
|
|
|
|
WHEN INFIELD(sec_cliente)
|
|
CALL consulta_clientes()
|
|
|
|
LET recibo.tipo_cliente = cliente_dir.tipo_cliente
|
|
LET recibo.sec_cliente = cliente_dir.sec_cliente
|
|
|
|
SELECT nombre
|
|
INTO nom_cli
|
|
FROM vetb00004
|
|
WHERE tipo_cliente = recibo.tipo_cliente
|
|
AND sec_cliente = recibo.sec_cliente
|
|
LET nom_cli =
|
|
nom_cli CLIPPED,
|
|
" ",
|
|
recibo.tipo_cliente USING "<<",
|
|
"-",
|
|
recibo.sec_cliente USING "<<<<<<<"
|
|
DISPLAY BY NAME recibo.tipo_cliente ATTRIBUTE(BOLD)
|
|
DISPLAY BY NAME recibo.sec_cliente ATTRIBUTE(BOLD)
|
|
DISPLAY BY NAME nom_cli ATTRIBUTE(BOLD)
|
|
|
|
# NEXT FIELD cod_emp_sec
|
|
|
|
WHEN INFIELD(cod_emp_sec)
|
|
CALL consulta_empleados()
|
|
|
|
LET recibo.cod_emp_sec = transportista.sec_transp
|
|
SELECT nom1_emp, apell1_emp
|
|
INTO descrip2, descrip3
|
|
FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
DISPLAY BY NAME recibo.cod_emp_sec ATTRIBUTE(BOLD)
|
|
LET nombre_emp = descrip2 CLIPPED, " ", descrip3 CLIPPED
|
|
DISPLAY BY NAME nombre_emp ATTRIBUTE(BOLD)
|
|
|
|
NEXT FIELD fecha_orig
|
|
END CASE
|
|
## AQUI SE PREPARA PARA LA CAPTURA DE INFORMACION
|
|
|
|
BEFORE FIELD tipo_doc
|
|
LET recibo.tipo_doc = tipo_ant
|
|
|
|
AFTER FIELD tipo_doc
|
|
IF recibo.tipo_doc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_doc
|
|
ELSE
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
CALL dialog.setFieldActive("cuenta_no", TRUE)
|
|
NEXT FIELD cuenta_no
|
|
ELSE
|
|
CALL dialog.setFieldActive("cuenta_no", FALSE)
|
|
END IF
|
|
END IF
|
|
|
|
CASE
|
|
WHEN recibo.tipo_doc = "PG"
|
|
LET nombre_tipo = "PAGOS A FACTURAS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "OC"
|
|
LET nombre_tipo = "OTROS CREDITOS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "NC"
|
|
LET nombre_tipo = "NOTA CREDITO"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "ND"
|
|
LET nombre_tipo = "NOTA DEBITO"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "PI"
|
|
LET nombre_tipo = "PAGO INTER."
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "DV"
|
|
LET nombre_tipo = "DEVOLUCION DINERO"
|
|
EXIT CASE
|
|
END CASE
|
|
#DISPLAY BY NAME nombre_tipo ATTRIBUTE (BOLD)
|
|
LET p_nombre_tipo = nombre_tipo
|
|
|
|
#IF recibo.tipo_doc <> "RM" AND recibo.tipo_doc <> 'RC' THEN
|
|
SELECT ISNULL(a.ult_recibo, 0)
|
|
INTO p_num_doc
|
|
FROM cctb00003 a
|
|
WHERE a.tipo_doc = recibo.tipo_doc
|
|
IF STATUS = NOTFOUND THEN
|
|
LET p_num_doc = 0
|
|
END IF
|
|
DISPLAY "ULTIMO ", p_num_doc
|
|
LET p_num_doc = p_num_doc + 1
|
|
LET recibo.num_doc = p_num_doc
|
|
DISPLAY recibo.num_doc
|
|
ON ACTION busca_foto ATTRIBUTE(TEXT = "Foto", IMAGE = "upload")
|
|
|
|
LET d_tipos = "Images"
|
|
LET f_tipos = "*.jpg *.png *.gif *.jpeg"
|
|
LET mensaje = %"Elige Imagen"
|
|
LET imagefac = "*.jpg"
|
|
|
|
CALL ui.interface.frontcall(
|
|
"standard",
|
|
"openfile",
|
|
[imagefac, d_tipos, f_tipos, mensaje],
|
|
filepath)
|
|
DISPLAY filepath
|
|
|
|
LOCATE pimagen IN MEMORY
|
|
# CALL FGL_WINMESSAGE("W",filedestino,"stop")
|
|
DISPLAY "aqui es", filepath
|
|
IF filepath IS NOT NULL THEN
|
|
LET filedestino =
|
|
FGL_GETENV("imagenrecibo"), "\\", nombre_file_foto CLIPPED
|
|
LET filedestino = os.Path.basename(filepath)
|
|
CALL fgl_getfile(filepath, filedestino)
|
|
|
|
CALL pimagen.readFile(filedestino)
|
|
|
|
DISPLAY filedestino TO foto
|
|
LET extension = os.Path.extension(filedestino)
|
|
|
|
END IF
|
|
|
|
LET foto = filedestino
|
|
|
|
## CHEQUEA QUE EL REGISTRO NO SE REPITA
|
|
|
|
AFTER FIELD num_doc
|
|
|
|
SELECT UNIQUE a.num_doc
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_doc = recibo.tipo_doc
|
|
AND a.num_doc = recibo.num_doc
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
SELECT a.paga_itbis
|
|
INTO ppaga_itbis
|
|
FROM vetb00060 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
|
|
IF ppaga_itbis = 'N' THEN
|
|
LET ch_itbis = 'NO'
|
|
ELSE
|
|
LET ch_itbis = "SI"
|
|
END IF
|
|
|
|
## CHEQUEA QUE EL CLIENTE EXISTA, SI EXISTE DESPLEGA SU NOMBRE
|
|
AFTER FIELD tipo_cliente
|
|
SELECT a.ventas INTO ventas FROM vetb00060 a
|
|
WHERE a.tipo_cliente=recibo.tipo_cliente
|
|
SELECT a.ventas INTO tipo_cuenta FROM cgtb00012 a
|
|
WHERE a.cuenta_no=recibo.cuenta_no
|
|
|
|
IF recibo.tipo_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
# Controla que el TIPO DE MOVIMIENTO FI solo sea a tipo clientes 13
|
|
IF recibo.tipo_doc = "FI" AND recibo.tipo_cliente = 12 THEN
|
|
LET numero_msg = 240
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
AFTER FIELD sec_cliente
|
|
IF recibo.sec_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_cliente
|
|
END IF
|
|
|
|
SELECT b.nombre,
|
|
ISNULL(c.calle, ' ') + ISNULL(c.casa_num, ' ')
|
|
+ ISNULL(c.urbanizacion, ' ')
|
|
+ ISNULL(c.barrio, ' '),
|
|
a.ventas
|
|
INTO nom_cli, xdireccion, xventas
|
|
FROM vetb00004 b
|
|
INNER
|
|
JOIN vetb00060 a
|
|
ON a.tipo_cliente = recibo.tipo_cliente
|
|
LEFT OUTER
|
|
JOIN vetb00005 c
|
|
ON b.tipo_cliente = c.tipo_cliente
|
|
AND b.sec_cliente = c.sec_cliente
|
|
WHERE b.tipo_cliente = recibo.tipo_cliente
|
|
AND b.sec_cliente = recibo.sec_cliente
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
LET nom_cli =
|
|
nom_cli CLIPPED,
|
|
" ",
|
|
recibo.tipo_cliente USING "<<",
|
|
"-",
|
|
recibo.sec_cliente USING "<<<<<<<"
|
|
DISPLAY BY NAME nom_cli ATTRIBUTE(BOLD)
|
|
# BUSCA EL VENDEDOR PARA ESTE CLIENTE
|
|
SELECT a.sec_vend
|
|
INTO recibo.cod_emp_sec
|
|
FROM vetb00028 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
DISPLAY BY NAME recibo.cod_emp_sec
|
|
IF recibo.cod_emp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_cliente
|
|
END IF
|
|
SELECT nom1_emp, apell1_emp
|
|
INTO descrip2, descrip3
|
|
FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 CLIPPED, " ", descrip3
|
|
DISPLAY BY NAME nombre_emp ATTRIBUTE(BOLD)
|
|
|
|
NEXT FIELD fecha_orig
|
|
SELECT a.ventas INTO ventas FROM vetb00060 a
|
|
WHERE a.tipo_cliente=recibo.tipo_cliente
|
|
SELECT a.ventas INTO tipo_cuenta FROM cgtb00012 a
|
|
WHERE a.cuenta_no=recibo.cuenta_no
|
|
|
|
|
|
|
|
#CHEQUEA SI LA CUENTA DE BANCO ES EN PESOS O DOLARES
|
|
|
|
{ AFTER FIELD tasa
|
|
|
|
IF tasa IS NULL THEN
|
|
# CALL fgl_winmessage("aqui","entro","Stop")
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tasa
|
|
|
|
END IF }
|
|
AFTER FIELD cod_emp_sec
|
|
IF recibo.tipo_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
IF recibo.cod_emp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
|
|
SELECT nom1_emp, apell1_emp
|
|
INTO descrip2, descrip3
|
|
FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
|
|
LET nombre_emp = descrip2 CLIPPED, " ", descrip3 CLIPPED
|
|
DISPLAY BY NAME nombre_emp ATTRIBUTE(BOLD)
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
SELECT sec_vend
|
|
FROM vetb00028
|
|
WHERE tipo_cliente = recibo.tipo_cliente
|
|
AND sec_cliente = recibo.sec_cliente
|
|
|
|
IF status != NOTFOUND THEN
|
|
LET numero_msg = 357
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
END IF
|
|
|
|
## VERIFICA EL ULTIMO NUMERO DE RECIBO DEL VENDEDOR
|
|
{ IF recibo.tipo_doc = "PG" THEN
|
|
SELECT ult_recibo INTO p_num_doc FROM cctb00003
|
|
WHERE sec_vend = recibo.cod_emp_sec and status_t is null and
|
|
tipo_doc = "PG"
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 128
|
|
CALL msg(numero_msg)
|
|
SLEEP 2
|
|
RETURN
|
|
END IF
|
|
|
|
LET p_num_doc = p_num_doc + 1
|
|
# Chequea que el recibo del vendedor este fuera de secuencia
|
|
|
|
IF recibo.num_doc != p_num_doc THEN
|
|
LET numero_msg = 155
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
DISPLAY BY NAME recibo.num_doc ATTRIBUTE (BOLD)
|
|
|
|
# Controlando que el numero del recibo este dentro de la secuencia
|
|
# del vendedor
|
|
|
|
SELECT max(sec_de),max(sec_a),max(fecha)
|
|
INTO relacion.sec_de,relacion.sec_a,relacion.fecha
|
|
FROM cctb00002
|
|
WHERE sec_vend = recibo.cod_emp_sec and status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 123
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
IF recibo.num_doc < relacion.sec_de OR
|
|
recibo.num_doc > relacion.sec_a THEN
|
|
LET numero_msg = 125
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
END IF}
|
|
|
|
AFTER FIELD fecha_orig
|
|
IF recibo.fecha_orig IS NULL OR recibo.fecha_orig > TODAY THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
LET p_fechas = recibo.fecha_orig
|
|
|
|
CALL prd(p_fechas, usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha_orig
|
|
END IF
|
|
|
|
LET fecha1 = recibo.fecha_orig
|
|
|
|
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 valor_ctrl
|
|
LET valor_ctrl = NULL
|
|
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_ck IS NULL THEN
|
|
LET monto_ck = 0
|
|
END IF
|
|
IF v_comision IS NULL THEN
|
|
LET v_comision = 0
|
|
END IF
|
|
IF monto_link IS NULL THEN
|
|
LET monto_link = 0
|
|
END IF
|
|
IF recibo.tipo_Doc <> 'NC' THEN
|
|
LET valor_ctrl =
|
|
monto_efectivo + monto_cr + monto_ck + monto_link
|
|
|
|
LET kefectivo_pesos=tasa*monto_efectivo
|
|
LET ck_pesos=tasa*monto_ck
|
|
LET tarjeta_pesos=tasa*monto_cr
|
|
LET link_pesos=tasa*monto_link
|
|
|
|
END IF
|
|
DISPLAY BY NAME valor_ctrl,kefectivo_pesos,ck_pesos,tarjeta_pesos,link_pesos
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
IF recibo.tipo_doc = 'PG' THEN
|
|
IF tipo_cuenta = 1 AND ventas<>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 tasa IS NULL THEN
|
|
LET tasa = 1
|
|
END IF
|
|
IF monto_efectivo IS NULL THEN
|
|
LET monto_efectivo = 0
|
|
END IF
|
|
IF monto_cr != 0 THEN
|
|
IF plataforma IS NULL 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_cr IS NULL THEN
|
|
LET monto_cr = 0
|
|
END IF
|
|
IF monto_ck IS NULL THEN
|
|
LET monto_ck = 0
|
|
END IF
|
|
|
|
LET valor_ctrl =
|
|
monto_efectivo + monto_cr + monto_ck + monto_link
|
|
LET kefectivo_pesos=tasa*monto_efectivo
|
|
LET ck_pesos=tasa*monto_ck
|
|
LET tarjeta_pesos=tasa*monto_cr
|
|
LET link_pesos=tasa*monto_link
|
|
|
|
IF kefectivo_pesos =0 AND ck_pesos =0 AND tarjeta_pesos =0 AND link_pesos = 0 THEN
|
|
CALL msg(16)
|
|
NEXT FIELD monto_efectivo
|
|
END IF
|
|
DISPLAY "valor ", valor_ctrl
|
|
|
|
DISPLAY BY NAME valor_ctrl,kefectivo_pesos,ck_pesos,tarjeta_pesos,link_pesos
|
|
|
|
END IF
|
|
|
|
SELECT nom1_emp, apell1_emp
|
|
INTO descrip2, descrip3
|
|
FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 CLIPPED, " ", descrip3
|
|
|
|
SELECT a.paga_itbis, a.ventas, a.identrada
|
|
INTO ppaga_itbis, xventas, XidEntrada
|
|
FROM vetb00060 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
|
|
IF ppaga_itbis = 'N' THEN
|
|
LET ch_itbis = 'NO'
|
|
ELSE
|
|
LET ch_itbis = "SI"
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
IF recibo.cuenta_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
|
|
CALL arr_recibo.clear()
|
|
|
|
IF valor_ctrl IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
|
|
# IF aplicacion_antiguas = "SI" THEN
|
|
# CALL aplica_mas_antiguas()
|
|
# END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
LABEL arreglo1:
|
|
## AQUI SE INTRODUCEN LOS DATOS DEL ARREGLO
|
|
INPUT ARRAY arr_recibo WITHOUT DEFAULTS FROM s_recibo.*
|
|
BEFORE INPUT
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CALL busca_avance()
|
|
RETURNING arr_recibo[curr].num_nc,
|
|
arr_recibo[curr].valor_pen,
|
|
arr_recibo[curr].cotizacion_no
|
|
LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pen
|
|
DISPLAY arr_recibo[curr].num_nc TO s_recibo[scr_l].num_nc
|
|
DISPLAY arr_recibo[curr].valor_pen TO s_recibo[scr_l].valor_pen
|
|
DISPLAY arr_recibo[curr].valor_pag TO s_recibo[scr_l].valor_pag
|
|
DISPLAY arr_recibo[curr].aplica_a TO s_recibo[scr_l].aplica_a
|
|
DISPLAY arr_recibo[curr].cotizacion_no
|
|
TO s_recibo[scr_l].cotizacion_no
|
|
END IF
|
|
## VENTANA PARA BUSCAR LOS DOCUMENTOS
|
|
ON ACTION aplicacion
|
|
CASE
|
|
WHEN INFIELD(aplica_a)
|
|
CALL busca_aplicacion()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF existe = "N" THEN
|
|
LET existe = "S"
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
DISPLAY arr_recibo[curr].aplica_a
|
|
TO s_recibo[scr_l].aplica_a
|
|
DISPLAY arr_recibo[curr].valor_pen
|
|
TO s_recibo[scr_l].valor_pen
|
|
LET bandera = 0
|
|
CALL repetir()
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
NEXT FIELD aplica_a
|
|
WHEN INFIELD(num_nc)
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CALL busca_avance()
|
|
RETURNING arr_recibo[curr].num_nc,
|
|
arr_recibo[curr].valor_pen,
|
|
arr_recibo[curr].cotizacion_no
|
|
LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pen
|
|
DISPLAY arr_recibo[curr].num_nc TO s_recibo[scr_l].num_nc
|
|
DISPLAY arr_recibo[curr].valor_pen
|
|
TO s_recibo[scr_l].valor_pen
|
|
DISPLAY arr_recibo[curr].valor_pag
|
|
TO s_recibo[scr_l].valor_pag
|
|
DISPLAY arr_recibo[curr].aplica_a
|
|
TO s_recibo[scr_l].aplica_a
|
|
DISPLAY arr_recibo[curr].cotizacion_no
|
|
TO s_recibo[scr_l].cotizacion_no
|
|
|
|
END CASE
|
|
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
AFTER FIELD tipo_doc_recibo
|
|
IF recibo.tipo_doc = 'ND' OR recibo.tipo_doc = 'OD' THEN
|
|
IF arr_recibo[curr].num_cheque IS NOT NULL THEN
|
|
SELECT MAX(a.num_doc)
|
|
INTO num_recibo_ing
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = arr_recibo[curr].num_cheque
|
|
AND a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.status_t IS NULL
|
|
IF num_recibo_ing IS NULL THEN
|
|
CALL msg(3)
|
|
NEXT FIELD num_cheque
|
|
END IF
|
|
IF arr_recibo[curr].tipo_doc_recibo IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD tipo_doc_recibo
|
|
END IF
|
|
SELECT ISNULL(SUM(a.valor + a.monto_desc), 0)
|
|
INTO arr_recibo[curr].valor_cheque
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.tipo_doc = arr_recibo[curr].tipo_doc_recibo
|
|
AND a.num_doc = arr_recibo[curr].num_cheque
|
|
AND a.aplica_a = arr_recibo[curr].aplica_a
|
|
AND a.status_t IS NULL
|
|
LET arr_recibo[curr].valor_cheque =
|
|
arr_recibo[curr].valor_cheque * -1
|
|
IF arr_recibo[curr].valor_cheque = 0 THEN
|
|
DISPLAY arr_recibo[curr].valor_cheque
|
|
TO s_recibo[scr_l].valor_cheque
|
|
ATTRIBUTE(RED)
|
|
CALL msg(3)
|
|
NEXT FIELD num_cheque
|
|
END IF
|
|
END IF
|
|
DISPLAY arr_recibo[curr].valor_cheque
|
|
TO s_recibo[scr_l].valor_cheque
|
|
ATTRIBUTE(BLUE)
|
|
|
|
ELSE
|
|
IF arr_recibo[idx].num_cheque IS NOT NULL THEN
|
|
CALL msg(1007)
|
|
NEXT FIELD num_cheque
|
|
END IF
|
|
END IF
|
|
AFTER FIELD num_nc
|
|
LET nc_pend = 0
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
LET arr_recibo[curr].num_nc = NULL
|
|
DISPLAY arr_recibo[curr].num_nc TO s_recibo[scr_l].num_nc
|
|
END IF
|
|
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
SELECT UNIQUE num_doc
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_doc = "AV"
|
|
AND a.status_t IS NULL
|
|
AND a.num_doc = arr_recibo[curr].num_nc
|
|
AND a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_nc
|
|
END IF
|
|
|
|
LET valor_nc = 0
|
|
SELECT SUM(a.valor + a.monto_desc)
|
|
INTO valor_nc
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_doc = "AV"
|
|
AND a.status_t IS NULL
|
|
AND a.num_doc = arr_recibo[curr].num_nc
|
|
AND a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
|
|
IF valor_nc IS NULL THEN
|
|
LET valor_nc = 0
|
|
END IF
|
|
|
|
LET nc_pend = valor_nc
|
|
LET arr_recibo[curr].valor_pen = nc_pend
|
|
DISPLAY arr_recibo[curr].valor_pen TO s_recibo[scr_l].valor_pen
|
|
|
|
DISPLAY BY NAME nc_pend
|
|
END IF
|
|
|
|
AFTER FIELD aplica_a
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
IF arr_recibo[curr].aplica_a IS NULL THEN
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"DEBE COLOCAR EL DOCUMENTO DE FACTURA APLICAR EL AVANCE",
|
|
"INFO")
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
IF arr_recibo[curr].aplica_a IS NOT NULL THEN
|
|
LET bandera = 0
|
|
CALL repetir()
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
# Controla que el documento factura pertenezca al cliente
|
|
# IF recibo.tipo_doc = "PG" OR recibo.tipo_doc='ND' THEN
|
|
SELECT UNIQUE a.tipo_cliente
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = arr_recibo[curr].aplica_a
|
|
AND a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND (a.tipo_doc = arr_recibo[curr].tipo_doc_aplica)
|
|
AND a.status_t IS NULL
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 126
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
# END IF
|
|
# busca cotizacion y orden
|
|
LET xcotizacion = NULL
|
|
LET xorden = NULL
|
|
LET condicionPago = 'NO TIENE'
|
|
IF arr_recibo[curr].tipo_doc_aplica = 'FT'
|
|
OR arr_recibo[curr].tipo_doc_aplica = 'FE' THEN
|
|
SELECT MAX(a.cotizacion_no),
|
|
MAX(a.orden),
|
|
MAX(b.descrip),
|
|
MAX(a.neto)
|
|
INTO xcotizacion,
|
|
xorden,
|
|
condicionPago,
|
|
valor_fact_original[curr]
|
|
FROM vetb00002 a, vetb00012 b
|
|
WHERE (a.factura = arr_recibo[curr].aplica_a)
|
|
AND a.status_t IS NULL
|
|
AND a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.cond_pago = b.cond_pago
|
|
|
|
IF xcotizacion IS NOT NULL THEN
|
|
SELECT ISNULL(a.sec_vend_aux, 0)
|
|
INTO sec_vend_a
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = xcotizacion
|
|
|
|
LET recibo.cod_emp_sec = sec_vend_a
|
|
END IF
|
|
END IF
|
|
# Busca el valor pendiente de la factura
|
|
|
|
IF arr_recibo[curr].num_nc IS NULL THEN
|
|
SELECT SUM(a.valor + a.monto_desc)
|
|
INTO valor_fac
|
|
FROM cctb00001 a
|
|
WHERE (a.aplica_a = arr_recibo[curr].aplica_a)
|
|
AND (a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente)
|
|
AND a.tipo_doc NOT IN ('AV', 'AP')
|
|
AND a.status_t IS NULL
|
|
|
|
IF arr_recibo[curr].valor_pag IS NULL THEN
|
|
LET arr_recibo[curr].valor_pag = valor_fac
|
|
END IF
|
|
IF aplicacion_antiguas = "NO" THEN
|
|
LET arr_recibo[curr].valor_pen = valor_fac
|
|
END IF
|
|
ELSE
|
|
SELECT SUM(a.valor + a.monto_desc)
|
|
INTO valor_fac
|
|
FROM cctb00001 a
|
|
WHERE (a.aplica_a = arr_recibo[curr].num_nc)
|
|
AND (a.tipo_doc IN ('AV', 'AP'))
|
|
AND (a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente)
|
|
AND a.status_t IS NULL
|
|
|
|
LET arr_recibo[curr].valor_pen = valor_fac
|
|
END IF
|
|
DISPLAY arr_recibo[curr].valor_pen TO s_recibo[scr_l].valor_pen
|
|
END IF
|
|
|
|
BEFORE FIELD desc_p
|
|
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
NEXT FIELD valor_pag
|
|
ELSE
|
|
LET arr_recibo[curr].desc_p = 0
|
|
IF aplicacion_antiguas = "NO" THEN
|
|
LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pen
|
|
END IF
|
|
DISPLAY arr_recibo[curr].valor_pen TO s_recibo[scr_l].valor_pen
|
|
DISPLAY arr_recibo[curr].desc_p TO s_recibo[scr_l].desc_p
|
|
END IF
|
|
|
|
AFTER FIELD desc_p
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
ELSE
|
|
|
|
IF arr_recibo[curr].desc_p IS NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
END IF
|
|
|
|
LET arr_recibo[curr].valor_pag =
|
|
arr_recibo[curr].valor_pag - arr_recibo[curr].desc_p
|
|
END IF
|
|
DISPLAY arr_recibo[curr].valor_pag TO s_recibo[scr_l].valor_pag
|
|
|
|
AFTER FIELD valor_pag
|
|
|
|
IF arr_recibo[curr].aplica_a IS NULL
|
|
AND arr_recibo[curr].num_nc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF arr_recibo[curr].valor_pag IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF recibo.tipo_doc <> 'ND'
|
|
AND recibo.tipo_doc <> 'OC'
|
|
AND recibo.tipo_doc <> 'NC' THEN
|
|
IF recibo.tipo_doc <> 'OD' THEN
|
|
IF arr_recibo[curr].valor_pen < 0 THEN
|
|
CALL msg(1005)
|
|
LET arr_recibo[curr].valor_pag = 0
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF arr_recibo[curr].valor_pen > 0 THEN
|
|
IF arr_recibo[curr].valor_pag
|
|
> arr_recibo[curr].valor_pen THEN
|
|
CALL msg(1006)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
END IF
|
|
IF arr_recibo[curr].num_cheque IS NOT NULL THEN
|
|
IF arr_recibo[curr].valor_pag
|
|
< arr_recibo[curr].valor_cheque THEN
|
|
CALL msg(1008)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc = 'OD' OR recibo.tipo_doc = 'ND' THEN
|
|
IF arr_recibo[curr].num_cheque IS NULL THEN
|
|
IF arr_recibo[curr].valor_pen + arr_recibo[curr].valor_pag
|
|
> valor_fact_original[curr] THEN
|
|
CALL msg(1009)
|
|
# NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
------ CONTROL VALOR RECIBO DE INGRESOS ------------------------------
|
|
# IF recibo.tipo_doc = 'PG' THEN
|
|
LET p_total = 0
|
|
LET remanente = valor_ctrl
|
|
FOR idx = 1 TO arr_Recibo.getLength()
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
LET p_total = p_total + arr_recibo[idx].valor_pag
|
|
LET remanente =
|
|
remanente - arr_recibo[idx].valor_pag
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
IF p_total < 0 THEN
|
|
LET p_total = p_total * -1
|
|
END IF
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
IF p_total > valor_ctrl THEN
|
|
LET numero_msg = 178
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME p_total ATTRIBUTE(BOLD)
|
|
|
|
DISPLAY BY NAME remanente ATTRIBUTE(BLUE)
|
|
# END IF
|
|
# Controla que el valor aplicado a las facturas no exceda el monto del recibo
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
IF arr_recibo[idx].aplica_a IS NOT NULL THEN
|
|
# BUSCA VALOR FACTURA
|
|
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
SELECT SUM(a.valor + a.monto_desc)
|
|
INTO valor_fac
|
|
FROM cctb00001 a
|
|
WHERE (a.aplica_a = arr_recibo[idx].aplica_a)
|
|
AND (a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente)
|
|
AND a.tipo_doc NOT IN ('AV', 'AP')
|
|
AND a.status_t IS NULL
|
|
|
|
IF arr_recibo[idx].valor_pag IS NULL THEN
|
|
LET arr_recibo[idx].valor_pag = valor_fac
|
|
END IF
|
|
IF aplicacion_antiguas = "NO" THEN
|
|
LET arr_recibo[idx].valor_pen = valor_fac
|
|
END IF
|
|
ELSE
|
|
SELECT SUM(a.valor + a.monto_desc)
|
|
INTO valor_fac
|
|
FROM cctb00001 a
|
|
WHERE (a.aplica_a = arr_recibo[idx].num_nc)
|
|
AND (a.tipo_doc IN ('AV', 'AP'))
|
|
AND (a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente)
|
|
AND a.status_t IS NULL
|
|
|
|
LET arr_recibo[idx].valor_pen = valor_fac
|
|
END IF
|
|
IF recibo.tipo_doc <> 'ND' THEN
|
|
IF recibo.tipo_doc <> 'OD' THEN
|
|
IF arr_recibo[idx].valor_pen < 0 THEN
|
|
CALL fgl_winmessage(
|
|
"INFO",
|
|
"NO PUEDE APLICAR VALOR A ESTE DOCUMENTO, ESTA EN NEGATIVO",
|
|
"INFO")
|
|
LET arr_recibo[idx].valor_pag = 0
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
# CONTROL CHEQUE DEVUELTO
|
|
IF recibo.tipo_doc = 'ND' OR recibo.tipo_doc = 'OD' THEN
|
|
IF arr_recibo[idx].num_cheque IS NOT NULL THEN
|
|
IF arr_recibo[idx].tipo_doc_recibo IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD tipo_doc_recibo
|
|
END IF
|
|
SELECT a.num_recibo_dev
|
|
FROM cctb00001 a
|
|
WHERE a.num_recibo_dev
|
|
=
|
|
arr_recibo[idx].num_cheque
|
|
AND a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.status_t IS NULL
|
|
IF STATUS != NOTFOUND THEN
|
|
CALL msg(1015)
|
|
NEXT FIELD num_cheque
|
|
END IF
|
|
SELECT ISNULL(SUM(a.valor + a.monto_desc), 0)
|
|
INTO arr_recibo[idx].valor_cheque
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.tipo_doc
|
|
=
|
|
arr_recibo[idx].tipo_doc_recibo
|
|
AND a.num_doc
|
|
=
|
|
arr_recibo[idx].num_cheque
|
|
AND a.aplica_a
|
|
=
|
|
arr_recibo[idx].aplica_a
|
|
AND a.status_t IS NULL
|
|
|
|
LET arr_recibo[idx].valor_cheque =
|
|
arr_recibo[idx].valor_cheque * -1
|
|
IF arr_recibo[idx].valor_cheque = 0 THEN
|
|
DISPLAY arr_recibo[idx].valor_cheque
|
|
TO s_recibo[scr_l].valor_cheque
|
|
ATTRIBUTE(RED)
|
|
CALL msg(3)
|
|
NEXT FIELD num_cheque
|
|
END IF
|
|
END IF
|
|
DISPLAY arr_recibo[idx].valor_cheque
|
|
TO s_recibo[scr_l].valor_cheque
|
|
ATTRIBUTE(BLUE)
|
|
|
|
ELSE
|
|
IF arr_recibo[idx].num_cheque IS NOT NULL THEN
|
|
CALL msg(1007)
|
|
NEXT FIELD num_cheque
|
|
END IF
|
|
END IF
|
|
#------------------------------------- TERMINA PROCESO CHEQUE DEVUELTO
|
|
IF arr_recibo[curr].num_cheque IS NOT NULL THEN
|
|
IF arr_recibo[curr].valor_pag
|
|
< arr_recibo[curr].valor_cheque THEN
|
|
CALL msg(1008)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc = 'OD' OR recibo.tipo_doc = 'ND' THEN
|
|
IF arr_recibo[curr].num_cheque IS NULL THEN
|
|
IF arr_recibo[curr].valor_pen
|
|
+ arr_recibo[curr].valor_pag
|
|
> valor_fact_original[curr] THEN
|
|
CALL msg(1009)
|
|
# NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
END IF
|
|
{ DEBI QUITAR EL CONTROL PARA CUANDO EL DOCUMENTO ES UNA OD O ND FECHA 08-09-2022
|
|
IF arr_recibo[idx].valor_pen > 0 AND arr_recibo[idx].num_cheque IS NULL THEN
|
|
# VALOR ORIGINAL FACTURA
|
|
SELECT ISNULL(a.neto,0) INTO valor_fact_original[idx] FROM vetb00002 a
|
|
WHERE a.factura = arr_recibo[idx].aplica_a AND a.status_t IS NULL
|
|
IF arr_recibo[idx].valor_pag + arr_recibo[idx].valor_pen > valor_fact_original[idx] THEN
|
|
CALL fgl_winmessage("INFO","NO PUEDE APLICAR VALOR MAYOR AL VALOR PENDIENTE","INFO")
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF}
|
|
END IF
|
|
END IF
|
|
|
|
------ CONTROL VALOR RECIBO DE INGRESOS ------------------------------
|
|
IF recibo.tipo_doc = 'PG' THEN
|
|
LET p_total = 0
|
|
LET remanente = valor_ctrl
|
|
FOR idx = 1 TO arr_Recibo.getLength()
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
LET p_total =
|
|
p_total + arr_recibo[idx].valor_pag
|
|
LET remanente =
|
|
remanente - arr_recibo[idx].valor_pag
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
IF p_total < 0 THEN
|
|
LET p_total = p_total * -1
|
|
END IF
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
IF p_total > valor_ctrl THEN
|
|
LET numero_msg = 178
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME p_total ATTRIBUTE(BOLD)
|
|
|
|
DISPLAY BY NAME remanente ATTRIBUTE(BLUE)
|
|
END IF
|
|
END FOR
|
|
END INPUT
|
|
LET p_companias.cod_comp = 1
|
|
|
|
LET opc = NULL
|
|
LET valor_cheque1 = NULL
|
|
LET afecta_ex = "YES"
|
|
IF recibo.tipo_doc = 'OD' OR recibo.tipo_doc = 'OC' THEN
|
|
LET afecta_ex =
|
|
fgl_winquestion(
|
|
"AFECTA",
|
|
"DESEA AFECTAR CXC FISCAL?",
|
|
"YES",
|
|
"YES|NO",
|
|
"QUESTION",
|
|
0)
|
|
END IF
|
|
#SI ES CLIENTE 17 - EXPORTACION PREGUNTA SI VA A FECTAR EN FINANZAS
|
|
IF recibo.tipo_doc = 'PG' AND recibo.tipo_cliente=17 THEN
|
|
LET afecta_ex =
|
|
fgl_winquestion(
|
|
"AFECTA",
|
|
"DESEA AFECTAR FINANZAS?",
|
|
"YES",
|
|
"YES|NO",
|
|
"QUESTION",
|
|
0)
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
PROMPT "NOTA DE DEBITO ES DEBIDO A CHEQUE DEVUELTO...[S/N]? "
|
|
FOR CHAR opc
|
|
LET opc = UPSHIFT(opc)
|
|
|
|
IF opc = "S" THEN
|
|
SELECT sec_vend
|
|
INTO recibo.cod_emp_sec
|
|
FROM vetb00028
|
|
WHERE tipo_cliente = recibo.tipo_cliente
|
|
AND sec_cliente = recibo.sec_cliente
|
|
DISPLAY BY NAME recibo.cod_emp_sec
|
|
LET valor_cheque1 = recibo.num_doc
|
|
|
|
ELSE
|
|
LET valor_cheque1 = NULL
|
|
END IF
|
|
END IF
|
|
|
|
{ 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 cctb01 TO archivo
|
|
}
|
|
|
|
SELECT a.ult_recibo
|
|
INTO p_num_doc
|
|
FROM cctb00003 a
|
|
WHERE a.tipo_doc = recibo.tipo_doc
|
|
IF STATUS = NOTFOUND THEN
|
|
LET p_num_doc = 0
|
|
END IF
|
|
LET p_num_doc = p_num_doc + 1
|
|
LET recibo.num_doc = p_num_doc
|
|
DISPLAY BY NAME recibo.num_doc
|
|
IF filepath IS NOT NULL THEN
|
|
|
|
LET nombre_file_foto =
|
|
recibo.tipo_doc, "-", recibo.num_doc USING "<<<<<<", ".jpg"
|
|
DISPLAY "nombre ", recibo.tipo_doc, "-", nombre_file_foto
|
|
LET filedestino =
|
|
FGL_GETENV("imagenrecibo"), "\\", nombre_file_foto CLIPPED
|
|
# LET filedestino = "D:\\genero fuentes\\DECOMARMOL320\\decomarmol\\IMAGENFACTURA\\",nombre_file_foto CLIPPED
|
|
DISPLAY "2 foto", filedestino
|
|
# LET filedestino = os.Path.basename(filepath)
|
|
LOCATE pimagen IN MEMORY
|
|
CALL fgl_getfile(filepath, filedestino)
|
|
|
|
CALL pimagen.readFile(filedestino)
|
|
|
|
DISPLAY filedestino TO foto
|
|
LET extension = os.Path.extension(filedestino)
|
|
|
|
LET foto = filedestino
|
|
DISPLAY BY NAME nombre_file_foto
|
|
END IF
|
|
# LOCATE pimagen IN MEMORY
|
|
|
|
# GENERA REGISTRO PARA ACTUALIZAR EL MAYOR GENERAL
|
|
LET generaE = FALSE
|
|
LET registroEntrada[1].referenciaEntrada = NULL
|
|
IF recibo.tipo_doc = 'PG' THEN
|
|
CALL GeneraEntradaDiario(
|
|
usuarios,
|
|
'RECIBOS INGRESOS',
|
|
XidEntrada,
|
|
recibo.cuenta_no,
|
|
recibo.fecha_orig,
|
|
valor_ctrl,
|
|
0,
|
|
0,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
xventas,
|
|
0,
|
|
recibo.num_doc,
|
|
xvalorComision)
|
|
RETURNING generaE, registroEntrada
|
|
FOR i = 1 TO registroEntrada.getLength()
|
|
IF registroEntrada[i].referenciaEntrada IS NOT NULL THEN
|
|
LET entradaDiario = registroEntrada[i].referenciaEntrada
|
|
DISPLAY "SECUENCIA ENTRADA DIARIO: ", entradaDiario
|
|
END IF
|
|
END FOR
|
|
# CONTROL NUMERICO DEPOSITOS
|
|
IF recibo.cuenta_no IS NOT NULL THEN
|
|
CALL numeroDeposito(
|
|
recibo.cuenta_no,
|
|
recibo.fecha_orig,
|
|
codigo_sucursal,
|
|
xventas,
|
|
plataforma)
|
|
RETURNING rdeposito,
|
|
xmontoDeposito,
|
|
xvalorck,
|
|
xvalorCr,
|
|
xvalorEfectivo,
|
|
xvalorComision,
|
|
xvalorLink,xefectivopesos,xckpesos,xlinkpesos,xcrpesos
|
|
|
|
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
|
|
END IF
|
|
END IF
|
|
#--------------------------------------------------------------------------------
|
|
|
|
END IF
|
|
# INSERTA EL COMENTARIO
|
|
BEGIN WORK
|
|
|
|
IF filepath IS NULL OR filepath = "" THEN
|
|
|
|
LET nombre_file_foto = NULL
|
|
LET filedestino = NULL
|
|
LET pimagen = NULL
|
|
END IF
|
|
UPDATE cctb00003
|
|
SET ult_recibo = recibo.num_doc,
|
|
us_crea = SUSER_SNAME(),
|
|
fech_crea = GETDATE(),
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE tipo_doc = recibo.tipo_doc
|
|
|
|
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_ck IS NULL THEN
|
|
LET monto_ck = 0
|
|
END IF
|
|
|
|
INSERT INTO cctb00011(
|
|
cod_cia,
|
|
num_doc,
|
|
tipo_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
comentario,
|
|
us_crea,
|
|
fech_crea,
|
|
SucID,
|
|
chitbis,
|
|
cod_emp_sec,
|
|
valor_recibo,
|
|
valor_efectivo,
|
|
valor_tarjeta,
|
|
valor_cheque,
|
|
valor_link)
|
|
VALUES(p_companias.cod_comp,
|
|
recibo.num_doc,
|
|
recibo.tipo_Doc,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
recibo.comentario,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
codigo_sucursal,
|
|
ch_itbis,
|
|
recibo.cod_emp_sec,
|
|
valor_ctrl,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_ck,
|
|
monto_link)
|
|
|
|
IF SQLSTATE > 02 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR", "NO FUE POSIBLE GUARDAR LA TRANSACCION", "STOP")
|
|
RETURN
|
|
END IF
|
|
|
|
LET avance = FALSE
|
|
LET navance = 1
|
|
SELECT sec_vend
|
|
INTO recibo.cod_emp_sec
|
|
FROM vetb00028
|
|
WHERE tipo_cliente = recibo.tipo_cliente
|
|
AND sec_cliente = recibo.sec_cliente
|
|
DISPLAY BY NAME recibo.cod_emp_sec
|
|
|
|
## SI NO OCURRE NINGUN ERROR SE PROCEDE A INSERTAR EL REGISTRO
|
|
LET actualiza = 'NO'
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
IF arr_recibo[idx].aplica_a IS NOT NULL THEN
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
IF recibo.cod_emp_sec IS NULL OR recibo.cod_emp_sec = 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR", "NO TIENE VENDEDOR", "STOP")
|
|
GOTO arreglo1
|
|
END IF
|
|
END IF
|
|
|
|
IF recibo.tipo_doc != "ND" AND recibo.tipo_doc != "DV" THEN
|
|
IF recibo.tipo_doc != "FI" THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
END IF
|
|
END IF
|
|
# ESTAS INSTRUCCIONES ES PARA ENTRAR LOS AV-AVANCES POR ESTE PROGRAMA
|
|
# SUPONGO QUE ESTAS LINEAS SERAN TEMPORALES HASTA QUE LOS AVANCES SE
|
|
# INTRODUZCAN POR OTRO MANTENIMIENTO
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
IF arr_recibo[idx].num_nc IS NOT NULL THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"El Campo de Numero de Avancve Debe Estar En Nulo",
|
|
"STOP")
|
|
RETURN
|
|
END IF
|
|
IF arr_recibo[idx].aplica_a != recibo.num_doc THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR", "Documento Debe Aplicarse a Si Mismo", "STOP")
|
|
RETURN
|
|
END IF
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
END IF
|
|
#--------------------------------------------------------------------------
|
|
LET navance = 1
|
|
LET tipo_doc1 = NULL
|
|
IF tipo_doc1 = 'PG' THEN
|
|
LET navance = 1
|
|
END IF
|
|
LET numero_doc = arr_recibo[idx].num_nc
|
|
IF arr_recibo[idx].num_nc IS NOT NULL THEN
|
|
LET tipo_doc1 = "AV"
|
|
LET avance = TRUE
|
|
LET navance = 0
|
|
SELECT a.num_trans
|
|
INTO avance_e[idx]
|
|
FROM cctb00020 a
|
|
WHERE a.num_oc = arr_recibo[idx].num_nc
|
|
|
|
ELSE
|
|
LET numero_doc = recibo.num_doc
|
|
# LET arr_recibo[idx].num_nc = recibo.num_doc ASI ERA QUE ESTABA ANTES DEL 3/6/2019
|
|
LET tipo_doc1 = recibo.tipo_doc
|
|
LET avance = FALSE
|
|
LET navance = 1
|
|
END IF
|
|
|
|
LET actualiza = 'SI'
|
|
|
|
IF recibo.tipo_doc = "DV" OR recibo.tipo_doc = 'OD' THEN
|
|
IF arr_recibo[idx].tipo_doc_aplica = 'AV' THEN
|
|
LET valor_aplicado = arr_recibo[idx].valor_pag * -1
|
|
IF arr_recibo[idx].valor_pag > 0 THEN
|
|
LET valor_aplicado = arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
SELECT a.num_trans
|
|
INTO avance_e[idx]
|
|
FROM cctb00020 a
|
|
WHERE a.num_oc = arr_recibo[idx].aplica_a
|
|
|
|
# PARA REAPLICAR LOS AVANCES CUANDO ES POR DEVOLUCION DE DINERO DEL AVANCE ORIGINAL
|
|
INSERT INTO cctb00001(
|
|
cuenta_no,
|
|
cod_cia,
|
|
tipo_doc,
|
|
num_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
fecha_ven,
|
|
aplica_a,
|
|
num_cheque,
|
|
valor,
|
|
valor_cheque,
|
|
costo,
|
|
monto_desc,
|
|
us_crea,
|
|
fech_crea,
|
|
banco,
|
|
tipo_doc_aplica,
|
|
documento_ref,
|
|
num_oc,
|
|
sucid,
|
|
valor_efectivo,
|
|
valor_tarjeta,
|
|
valor_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision)
|
|
VALUES(recibo.cuenta_no,
|
|
p_companias.cod_comp,
|
|
'AP',
|
|
arr_recibo[idx].aplica_a,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
codigo_sucursal,
|
|
recibo.cod_emp_sec,
|
|
recibo.fecha_orig,
|
|
"010101",
|
|
arr_recibo[idx].aplica_a,
|
|
recibo.num_doc,
|
|
valor_aplicado,
|
|
monto_ck,
|
|
navance,
|
|
arr_recibo[idx].desc_p,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
arr_recibo[idx].cotizacion_no,
|
|
arr_recibo[idx].tipo_doc_aplica,
|
|
xcotizacion,
|
|
xorden,
|
|
codigo_sucursal,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision)
|
|
END IF
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
|
|
END IF
|
|
LET p_companias.cod_comp = 1
|
|
IF arr_recibo[idx].desc_p IS NULL THEN
|
|
LET arr_recibo[idx].desc_p = 0
|
|
END IF
|
|
INSERT INTO cctb00001(
|
|
cuenta_no,
|
|
cod_cia,
|
|
tipo_doc,
|
|
num_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
fecha_ven,
|
|
aplica_a,
|
|
num_cheque,
|
|
valor,
|
|
valor_cheque,
|
|
costo,
|
|
monto_desc,
|
|
us_crea,
|
|
fech_crea,
|
|
banco,
|
|
tipo_doc_aplica,
|
|
documento_ref,
|
|
num_oc,
|
|
sucid,
|
|
num_recibo_dev,
|
|
valor_recibo_dev,
|
|
tipo_doc_recibo,
|
|
valor_efectivo,
|
|
valor_tarjeta,
|
|
num_doc_deposito,
|
|
referenciaEntrada,
|
|
valor_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,tasa,efectivo_pesos,ck_pesos,tarjeta_pesos,link_pesos)
|
|
VALUES(recibo.cuenta_no,
|
|
p_companias.cod_comp,
|
|
tipo_doc1,
|
|
numero_doc,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
codigo_sucursal,
|
|
recibo.cod_emp_sec,
|
|
recibo.fecha_orig,
|
|
"010101",
|
|
arr_recibo[idx].aplica_a,
|
|
recibo.num_doc,
|
|
arr_recibo[idx].valor_pag,
|
|
monto_ck,
|
|
navance,
|
|
arr_recibo[idx].desc_p,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
arr_recibo[idx].cotizacion_no,
|
|
arr_recibo[idx].tipo_doc_aplica,
|
|
xcotizacion,
|
|
xorden,
|
|
codigo_sucursal,
|
|
arr_recibo[idx].num_cheque,
|
|
arr_recibo[idx].valor_cheque,
|
|
arr_recibo[idx].tipo_doc_recibo,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
deposito,
|
|
entradaDiario,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,tasa,kefectivo_pesos,ck_pesos,tarjeta_pesos,link_pesos)
|
|
|
|
IF filedestino IS NOT NULL THEN
|
|
UPDATE cctb00001
|
|
SET foto = filedestino,
|
|
imagen = pimagen,
|
|
nombre_file_foto = nombre_file_foto
|
|
WHERE num_doc = numero_doc AND tipo_doc = tipo_doc1
|
|
END IF
|
|
|
|
IF SQLSTATE > 02 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR", "NO FUE POSIBLE GUARDAR LA TRANSACCION", "STOP")
|
|
RETURN
|
|
END IF
|
|
INSERT INTO cctb00005(
|
|
num_doc, tipo_Doc, aplica_a, valor_pagado)
|
|
VALUES(recibo.num_doc,
|
|
recibo.tipo_doc,
|
|
arr_recibo[idx].aplica_a,
|
|
arr_recibo[idx].valor_pag)
|
|
IF SQLSTATE > 02 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR", "NO FUE POSIBLE GUARDAR LA TRANSACCION", "STOP")
|
|
RETURN
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
#INSERTAR EN LA TABLA DE DEPOSITOS
|
|
IF recibo.cuenta_no IS NOT NULL THEN
|
|
CALL numeroDeposito(
|
|
recibo.cuenta_no,
|
|
recibo.fecha_orig,
|
|
codigo_sucursal,
|
|
xventas,
|
|
plataforma)
|
|
RETURNING rdeposito,
|
|
xmontoDeposito,
|
|
xvalorck,
|
|
xvalorCr,
|
|
xvalorEfectivo,
|
|
xvalorComision,
|
|
xvalorLink,xefectivopesos,xckpesos,xlinkpesos,xcrpesos
|
|
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
|
|
|
|
DISPLAY BY NAME deposito
|
|
|
|
END IF
|
|
|
|
IF rdeposito = 0 THEN
|
|
UPDATE tetb00009 SET num_doc = deposito
|
|
END IF
|
|
DISPLAY BY NAME deposito
|
|
|
|
IF valor_ctrl < 0 THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
END IF
|
|
IF ventas!= 1 THEN
|
|
IF tipo_cuenta=1 THEN
|
|
LET valor_ctrl=kefectivo_pesos+link_pesos+ck_pesos+tarjeta_pesos
|
|
END IF
|
|
END IF
|
|
IF rdeposito = 0 THEN
|
|
|
|
INSERT INTO tetb00001(
|
|
num_doc,
|
|
cuenta_no,
|
|
fecha,
|
|
monto,
|
|
sucursal,
|
|
us_crea,
|
|
fech_crea,
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_link,
|
|
monto_tarjeta,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,
|
|
ventas,efectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos)
|
|
VALUES(deposito,
|
|
recibo.cuenta_no,
|
|
recibo.fecha_orig,
|
|
valor_ctrl,
|
|
p_companias.cod_comp,
|
|
usuarios,
|
|
getdate(),
|
|
monto_efectivo,
|
|
monto_ck,
|
|
monto_link,
|
|
monto_cr,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,
|
|
xventas,kefectivo_pesos,tarjeta_pesos,ck_pesos,link_pesos)
|
|
|
|
ELSE
|
|
LET deposito = rdeposito
|
|
UPDATE tetb00001
|
|
SET monto = xmontoDeposito + valor_ctrl,
|
|
monto_efectivo = xvalorEfectivo + monto_efectivo,
|
|
monto_tarjeta = xvalorCr + monto_cr,
|
|
monto_ck = xvalorck +monto_ck,
|
|
monto_link = xvalorLink+monto_link,
|
|
v_comision = v_comision + xvalorComision,
|
|
efectivo_pesos=xefectivopesos+kefectivo_pesos,
|
|
tarjeta_pesos=xcrpesos+tarjeta_pesos,
|
|
ck_pesos=xckpesos+ck_pesos,
|
|
link_pesos=xlinkpesos+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,
|
|
RECIBO.tipo_doc,
|
|
RECIBO.num_doc,
|
|
recibo.fecha_orig,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
nom_cli,
|
|
valor_ctrl,
|
|
usuarios,
|
|
getdate())
|
|
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
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
OUTPUT TO REPORT cctb01b(
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
recibo.fecha_orig,
|
|
recibo.num_doc,
|
|
recibo.cod_emp_sec,
|
|
recibo.tipo_doc,
|
|
recibo.cuenta_no,
|
|
NULL,
|
|
arr_recibo[idx].aplica_a,
|
|
arr_recibo[idx].desc_p,
|
|
arr_recibo[idx].valor_pag,
|
|
nom_cli,
|
|
nombre_emp,
|
|
nombre_cta,
|
|
recibo.comentario)
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT cctb01b
|
|
|
|
END IF
|
|
|
|
# FINISH REPORT cctb01
|
|
|
|
# RUN imprime
|
|
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
ROLLBACK WORK
|
|
RETURN
|
|
END IF
|
|
IF actualiza = "NO" THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("INFO", "NO FUE POSIBLE ADICIONAR REGISTRO", "INFO")
|
|
EXIT PROGRAM
|
|
ELSE
|
|
#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(),
|
|
recibo.tipo_doc,
|
|
recibo.num_doc,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
codigo_sucursal,
|
|
valor_ctrl,
|
|
nom_cli)
|
|
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
COMMIT WORK
|
|
END IF
|
|
|
|
# ACTUALIZA OTRA DB
|
|
IF afecta_ex = "YES" THEN
|
|
|
|
SET CONNECTION "IFMX"
|
|
LET encontre_factura = 'S'
|
|
IF recibo.tipo_doc = 'PG' THEN
|
|
LET recibo.tipo_doc = 'RC'
|
|
END IF
|
|
SELECT a.ult_recibo
|
|
INTO p_num_doc
|
|
FROM cctb00003 a
|
|
WHERE a.tipo_doc = recibo.tipo_doc
|
|
IF STATUS = NOTFOUND THEN
|
|
LET p_num_doc = 0
|
|
END IF
|
|
LET p_num_doc = p_num_doc + 1
|
|
LET recibo.num_doc = p_num_doc
|
|
DISPLAY BY NAME recibo.num_doc
|
|
|
|
# INSERTA EL COMENTARIO
|
|
BEGIN WORK
|
|
UPDATE cctb00003
|
|
SET ult_recibo = recibo.num_doc,
|
|
us_crea = SUSER_SNAME(),
|
|
fech_crea = GETDATE(),
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE tipo_doc = recibo.tipo_doc
|
|
|
|
INSERT INTO cctb00011(
|
|
cod_cia,
|
|
num_doc,
|
|
tipo_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
comentario,
|
|
us_crea,
|
|
fech_crea,
|
|
SucID,
|
|
cod_emp_sec,
|
|
valor_recibo,
|
|
valor_efectivo,
|
|
valor_tarjeta,
|
|
valor_cheque)
|
|
VALUES(p_companias.cod_comp,
|
|
recibo.num_doc,
|
|
recibo.tipo_Doc,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
recibo.comentario,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
codigo_sucursal,
|
|
recibo.cod_emp_sec,
|
|
valor_ctrl,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_ck)
|
|
|
|
IF SQLSTATE > 02 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR", "NO FUE POSIBLE GUARDAR LA TRANSACCION", "STOP")
|
|
RETURN
|
|
END IF
|
|
|
|
LET avance = FALSE
|
|
LET navance = 1
|
|
## SI NO OCURRE NINGUN ERROR SE PROCEDE A INSERTAR EL REGISTRO
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_recibo[idx].aplica_a IS NOT NULL THEN
|
|
IF recibo.tipo_doc = "RC" THEN
|
|
IF recibo.cod_emp_sec IS NULL OR recibo.cod_emp_sec = 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR", "NO TIENE VENDEDOR", "STOP")
|
|
LET encontre_factura = 'N'
|
|
EXIT FOR
|
|
END IF
|
|
END IF
|
|
|
|
IF recibo.tipo_doc != "ND" AND recibo.tipo_doc != "DV" THEN
|
|
IF recibo.tipo_doc != "FI" THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
END IF
|
|
END IF
|
|
# ESTAS INSTRUCCIONES ES PARA ENTRAR LOS AV-AVANCES POR ESTE PROGRAMA
|
|
# SUPONGO QUE ESTAS LINEAS SERAN TEMPORALES HASTA QUE LOS AVANCES SE
|
|
# INTRODUZCAN POR OTRO MANTENIMIENTO
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
IF arr_recibo[idx].num_nc IS NOT NULL THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"El Campo de Numero de Avancve Debe Estar En Nulo",
|
|
"STOP")
|
|
RETURN
|
|
END IF
|
|
IF arr_recibo[idx].aplica_a != recibo.num_doc THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"Documento Debe Aplicarse a Si Mismo",
|
|
"STOP")
|
|
RETURN
|
|
END IF
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
END IF
|
|
#--------------------------------------------------------------------------
|
|
LET navance = 1
|
|
LET tipo_doc1 = NULL
|
|
IF tipo_doc1 = 'RC' THEN
|
|
LET navance = 1
|
|
END IF
|
|
|
|
IF arr_recibo[idx].num_nc IS NOT NULL THEN
|
|
|
|
LET tipo_doc1 = "AV"
|
|
LET avance = TRUE
|
|
LET navance = 0
|
|
ELSE
|
|
LET arr_recibo[idx].num_nc = recibo.num_doc
|
|
LET tipo_doc1 = recibo.tipo_doc
|
|
LET avance = FALSE
|
|
LET navance = 1
|
|
END IF
|
|
# DEVOLUCION DINERO
|
|
IF recibo.tipo_doc = "DV" THEN
|
|
IF arr_recibo[idx].tipo_doc_aplica = 'AV' THEN
|
|
LET valor_aplicado = arr_recibo[idx].valor_pag * -1
|
|
IF arr_recibo[idx].valor_pag > 0 THEN
|
|
LET valor_aplicado = arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
|
|
# PARA REAPLICAR LOS AVANCES CUANDO ES POR DEVOLUCION DE DINERO DEL AVANCE ORIGINAL
|
|
INSERT INTO cctb00001(
|
|
cuenta_no,
|
|
cod_cia,
|
|
tipo_doc,
|
|
num_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
fecha_ven,
|
|
aplica_a,
|
|
num_cheque,
|
|
valor,
|
|
valor_cheque,
|
|
costo,
|
|
monto_desc,
|
|
us_crea,
|
|
fech_crea,
|
|
banco,
|
|
tipo_doc_aplica,
|
|
documento_ref,
|
|
num_oc,
|
|
sucid,
|
|
valor_efectivo,
|
|
valor_tarjeta,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision)
|
|
VALUES(recibo.cuenta_no,
|
|
p_companias.cod_comp,
|
|
'AP',
|
|
avance_e[idx],
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
codigo_sucursal,
|
|
recibo.cod_emp_sec,
|
|
recibo.fecha_orig,
|
|
"010101",
|
|
avance_e[idx],
|
|
recibo.num_doc,
|
|
valor_aplicado,
|
|
monto_ck,
|
|
avance_e[idx],
|
|
arr_recibo[idx].desc_p,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
arr_recibo[idx].cotizacion_no,
|
|
arr_recibo[idx].tipo_doc_aplica,
|
|
xcotizacion,
|
|
xorden,
|
|
codigo_sucursal,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision)
|
|
END IF
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
END IF
|
|
LET p_companias.cod_comp = 1
|
|
LET xfactura_ext = NULL
|
|
IF arr_recibo[idx].tipo_doc_aplica = 'AV' THEN
|
|
SELECT DISTINCT a.num_doc
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_doc = arr_recibo[idx].tipo_doc_aplica
|
|
AND a.num_doc = avance_e[idx]
|
|
AND a.num_doc = a.aplica_a
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
ROLLBACK WORK
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
IF arr_recibo[idx].tipo_doc_aplica = 'FT'
|
|
OR arr_recibo[idx].tipo_doc_aplica = 'FE' THEN
|
|
SELECT a.factura, a.orden
|
|
INTO xfactura_ext, xorden
|
|
FROM vetb00002 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.factura_c = arr_recibo[idx].aplica_a
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
ROLLBACK WORK
|
|
LET encontre_factura = 'N'
|
|
EXIT FOR
|
|
END IF
|
|
LET xcotizacion = NULL
|
|
SELECT a.cotizacion_no
|
|
INTO xcotizacion
|
|
FROM prtb00012 a
|
|
WHERE a.num_oc = xorden
|
|
|
|
END IF
|
|
IF tipo_Doc1 = 'RC' AND arr_recibo[idx].valor_pag > 0 THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
IF tipo_Doc1 = 'OC' AND arr_recibo[idx].valor_pag > 0 THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
SELECT a.factura
|
|
INTO avance_e[idx]
|
|
FROM vetb00002 a
|
|
WHERE a.factura_c = arr_recibo[idx].aplica_a
|
|
AND a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
ROLLBACK WORK
|
|
LET encontre_factura = 'N'
|
|
|
|
EXIT FOR
|
|
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_ck IS NULL THEN
|
|
LET monto_ck = 0
|
|
END IF
|
|
LET efectivo = monto_efectivo
|
|
INSERT INTO cctb00001(
|
|
cuenta_no,
|
|
cod_cia,
|
|
tipo_doc,
|
|
num_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp,
|
|
cod_emp_sec,
|
|
fecha_orig,
|
|
fecha_ven,
|
|
aplica_a,
|
|
num_cheque,
|
|
valor,
|
|
valor_cheque,
|
|
costo,
|
|
monto_desc,
|
|
us_crea,
|
|
fech_crea,
|
|
banco,
|
|
tipo_doc_aplica,
|
|
documento_ref,
|
|
num_oc,
|
|
sucid,
|
|
valor_efectivo,
|
|
valor_tarjeta,
|
|
valor_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,tasa,efectivo_pesos,ck_pesos,tarjeta_pesos,link_pesos)
|
|
VALUES(recibo.cuenta_no,
|
|
p_companias.cod_comp,
|
|
tipo_doc1,
|
|
arr_recibo[idx].num_nc,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
codigo_sucursal,
|
|
recibo.cod_emp_sec,
|
|
recibo.fecha_orig,
|
|
"010101",
|
|
xfactura_ext,
|
|
recibo.num_doc,
|
|
arr_recibo[idx].valor_pag,
|
|
monto_ck,
|
|
avance_e[idx],
|
|
arr_recibo[idx].desc_p,
|
|
SUSER_SNAME(),
|
|
GETDATE(),
|
|
arr_recibo[idx].cotizacion_no,
|
|
arr_recibo[idx].tipo_doc_aplica,
|
|
xcotizacion,
|
|
xorden,
|
|
codigo_sucursal,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision,tasa,kefectivo_pesos,ck_pesos,tarjeta_pesos,link_pesos)
|
|
|
|
IF SQLSTATE > 02 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage(
|
|
"ERROR",
|
|
"NO FUE POSIBLE GUARDAR LA TRANSACCION",
|
|
"STOP")
|
|
RETURN
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
IF encontre_factura = 'S' THEN
|
|
COMMIT WORK
|
|
END IF
|
|
END IF
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
LET emp = recibo.cod_emp_sec
|
|
CLEAR FORM
|
|
LET INT_FLAG = FALSE
|
|
SET CONNECTION "MSSQL"
|
|
GOTO volver
|
|
END FUNCTION
|
|
|
|
## Funcion para consultar/modificar un recibo de pago
|
|
FUNCTION ccpcmf001()
|
|
|
|
DEFINE usuario RECORD
|
|
us_crea CHAR(9),
|
|
fech_crea LIKE cctb00001.fech_crea
|
|
END RECORD
|
|
|
|
## SE PREPARA EL CRITERIO PARA CONSULTAR/MODIFICAR UN REGISTRO
|
|
CONSTRUCT CRITERIO
|
|
ON b.tipo_doc,
|
|
b.num_doc,
|
|
b.tipo_cliente,
|
|
b.sec_cliente,
|
|
b.cod_emp_sec,
|
|
a.cuenta_no,
|
|
b.fecha_orig
|
|
FROM tipo_doc,
|
|
num_doc,
|
|
tipo_cliente,
|
|
sec_cliente,
|
|
cod_emp_sec,
|
|
cuenta_no,
|
|
fecha_orig
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec =
|
|
"SELECT b.tipo_doc,b.num_doc,b.tipo_cliente, ",
|
|
" b.sec_cliente,a.cod_emp_sec,a.cuenta_no,a.fecha_orig,b.comentario,b.chitbis,a.cod_emp_sec,b.valor_recibo,a.foto, ",
|
|
" b.valor_efectivo,b.valor_tarjeta,b.valor_cheque,a.plataforma,a.p_comision,a.v_comision ",
|
|
"FROM cctb00011 b,cctb00001 a ",
|
|
"WHERE ",
|
|
criterio CLIPPED,
|
|
" AND ",
|
|
" a.num_cheque = b.num_doc AND ",
|
|
" b.tipo_Doc = a.tipo_Doc AND ",
|
|
" a.cod_emp = b.sucid AND ",
|
|
" a.status_t is null ORDER BY b.tipo_Doc,b.num_doc"
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos
|
|
INTO recibo.*,
|
|
ch_itbis,
|
|
recibo.cod_emp_sec,
|
|
valor_ctrl,
|
|
filedestino,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_ck,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
CALL datos_doc()
|
|
DISPLAY filedestino TO foto
|
|
MENU "OPCION"
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT datos
|
|
INTO recibo.*,
|
|
ch_itbis,
|
|
recibo.cod_emp_sec,
|
|
valor_ctrl,
|
|
filedestino,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_ck,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL datos_doc()
|
|
DISPLAY "archivo", filedestino
|
|
DISPLAY filedestino TO foto
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos
|
|
INTO recibo.*,
|
|
ch_itbis,
|
|
recibo.cod_emp_sec,
|
|
valor_ctrl,
|
|
filedestino,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_ck,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL datos_doc()
|
|
DISPLAY filedestino TO foto
|
|
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos
|
|
INTO recibo.*,
|
|
ch_itbis,
|
|
recibo.cod_emp_sec,
|
|
valor_ctrl,
|
|
filedestino,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_ck,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL datos_doc()
|
|
DISPLAY filedestino TO foto
|
|
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos
|
|
INTO recibo.*,
|
|
ch_itbis,
|
|
recibo.cod_emp_sec,
|
|
valor_ctrl,
|
|
filedestino,
|
|
monto_efectivo,
|
|
monto_cr,
|
|
monto_ck,
|
|
monto_link,
|
|
plataforma,
|
|
p_comision,
|
|
v_comision
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL datos_doc()
|
|
DISPLAY filedestino TO foto
|
|
{ COMMAND KEY("I") "re-Imprimir"
|
|
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 cctb01 TO archivo
|
|
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
LET selec =
|
|
"SELECT a.num_doc,a.aplica_a,a.valor,a.monto_desc,a.valor ",
|
|
"FROM cctb00001 a ",
|
|
"WHERE ((a.tipo_doc = ? OR a.tipo_doc = 'AV') AND ",
|
|
" a.num_cheque = ?) AND (a.tipo_cliente = ? AND ",
|
|
" a.sec_cliente = ?) ORDER BY 2,1 "
|
|
ELSE
|
|
LET selec =
|
|
"SELECT num_doc,aplica_a,valor,monto_desc,valor FROM cctb00001 ",
|
|
"WHERE (tipo_doc=? AND num_cheque=?)AND (tipo_cliente = ? AND ",
|
|
" sec_cliente = ?) ORDER BY 2,1 "
|
|
END IF
|
|
|
|
PREPARE comando1 FROM selec
|
|
DECLARE buscar11 CURSOR FOR comando1
|
|
OPEN buscar11 USING recibo.tipo_doc,recibo.num_doc,recibo.tipo_cliente,
|
|
recibo.sec_cliente
|
|
|
|
LET idx = 1
|
|
WHILE STATUS != NOTFOUND
|
|
FETCH buscar11 INTO arr_recibo[idx].*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF arr_recibo[idx].num_nc = recibo.num_doc THEN
|
|
LET arr_recibo[idx].num_nc = NULL
|
|
END IF
|
|
IF recibo.tipo_doc != "ND" AND recibo.tipo_doc != "OD" THEN
|
|
LET arr_recibo[idx].valor_pen = arr_recibo[idx].valor_pen * -1
|
|
ELSE
|
|
IF arr_recibo[idx].valor_pen < 0 THEN
|
|
LET arr_recibo[idx].valor_pen = arr_recibo[idx].valor_pen *-1
|
|
END IF
|
|
END IF
|
|
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pen
|
|
LET arr_recibo[idx].valor_pen = 0
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
OUTPUT TO REPORT cctb01(recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.fecha_orig,recibo.num_doc,
|
|
recibo.cod_emp_sec,recibo.tipo_doc,null,null,
|
|
arr_recibo[idx].aplica_a,arr_recibo[idx].desc_p,arr_recibo[idx].valor_pag,
|
|
nom_cli,nombre_emp,nombre_cta,recibo.comentario)
|
|
|
|
LET idx = idx + 1
|
|
END WHILE
|
|
FINISH REPORT cctb01
|
|
RUN imprime
|
|
COMMAND "Escoger"
|
|
INPUT BY NAME recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.cod_emp_sec,valor_ctrl,
|
|
recibo.comentario,ch_itbis
|
|
WITHOUT DEFAULTS
|
|
## CHEQUEA QUE EL CLIENTE EXISTA, SI EXISTE DESPLEGA SU NOMBRE
|
|
AFTER FIELD tipo_cliente
|
|
IF recibo.tipo_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
# Controla que el TIPO DE MOVIMIENTO FI solo sea a tipo clientes 13
|
|
IF recibo.tipo_doc = "FI" AND recibo.tipo_cliente = 12 THEN
|
|
LET numero_msg = 240
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
AFTER FIELD sec_cliente
|
|
IF recibo.sec_cliente IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_cliente
|
|
END IF
|
|
|
|
SELECT b.nombre INTO nom_cli FROM vetb00004 b
|
|
WHERE b.tipo_cliente = recibo.tipo_cliente and
|
|
b.sec_cliente = recibo.sec_cliente
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
|
|
DISPLAY BY NAME nom_cli ATTRIBUTE (BOLD)
|
|
|
|
AFTER FIELD cod_emp_sec
|
|
IF recibo.cod_emp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
|
|
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
DISPLAY BY NAME nombre_emp ATTRIBUTE (BOLD)
|
|
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
SELECT sec_vend FROM vetb00028
|
|
WHERE tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente
|
|
|
|
IF status != notfound THEN
|
|
LET numero_msg = 357
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD valor_ctrl
|
|
IF valor_ctrl IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_ctrl
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
GO TO vuelve
|
|
END IF
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
LET selec =
|
|
"SELECT a.num_doc,a.aplica_a,a.valor,a.monto_desc,a.valor ",
|
|
"FROM cctb00001 a ",
|
|
"WHERE ((a.tipo_doc = ? OR a.tipo_doc = 'AV') AND ",
|
|
" a.num_cheque = ?) AND (a.tipo_cliente = ? AND ",
|
|
" a.sec_cliente = ?) ORDER BY 2,1 "
|
|
ELSE
|
|
LET selec =
|
|
"SELECT num_doc,aplica_a,valor,monto_desc,valor FROM cctb00001 ",
|
|
"WHERE (tipo_doc=? AND num_cheque=?)AND (tipo_cliente = ? AND ",
|
|
" sec_cliente = ?) ORDER BY 2,1 "
|
|
END IF
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE buscar1 CURSOR FOR comando
|
|
OPEN buscar1 USING recibo.tipo_doc,recibo.num_doc,recibo.tipo_cliente,
|
|
recibo.sec_cliente
|
|
|
|
LET idx = 1
|
|
WHILE STATUS != NOTFOUND
|
|
FETCH buscar1 INTO arr_recibo[idx].*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF arr_recibo[idx].num_nc = recibo.num_doc THEN
|
|
LET arr_recibo[idx].num_nc = null
|
|
END IF
|
|
IF recibo.tipo_doc != "ND" AND recibo.tipo_doc != "OD" THEN
|
|
LET arr_recibo[idx].valor_pen = arr_recibo[idx].valor_pen * -1
|
|
ELSE
|
|
IF arr_recibo[idx].valor_pen < 0 THEN
|
|
LET arr_recibo[idx].valor_pen = arr_recibo[idx].valor_pen *-1
|
|
END IF
|
|
END IF
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pen
|
|
LET arr_recibo[idx].valor_pen = 0
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
|
|
SELECT sum(valor) INTO valor2 FROM cctb00001
|
|
WHERE tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente and
|
|
aplica_a = arr_recibo[idx].aplica_a and
|
|
status_t is null AND num_cheque = recibo.num_doc
|
|
|
|
LET arr_recibo[idx].valor_pen = valor2
|
|
LET idx = idx + 1
|
|
END WHILE
|
|
|
|
CALL set_count(idx - 1)
|
|
|
|
LABEL arreglo2:
|
|
## AQUI SE MODIFICAN/ACTUALIZAN LOS CAMPOS DEL ARREGLO
|
|
INPUT ARRAY arr_recibo WITHOUT DEFAULTS FROM s_recibo.*
|
|
|
|
## VENTANA PARA BUSCAR LOS DOCUMENTOS
|
|
ON KEY (CONTROL-W)
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CASE
|
|
WHEN INFIELD (aplica_a)
|
|
CALL busca_aplicacion()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF existe = "N" THEN
|
|
LET existe = "S"
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
DISPLAY arr_recibo[curr].aplica_a to s_recibo[scr_l].aplica_a
|
|
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
|
|
LET bandera = 0
|
|
CALL repetir()
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
NEXT FIELD aplica_a
|
|
END CASE
|
|
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
AFTER FIELD num_nc
|
|
LET nc_pend = 0
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
LET arr_recibo[curr].num_nc = NULL
|
|
DISPLAY arr_recibo[curr].num_nc TO s_recibo[scr_l].num_nc
|
|
END IF
|
|
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
SELECT UNIQUE num_doc FROM cctb00001 a
|
|
WHERE a.tipo_doc = "AV" AND a.status_t IS NULL AND
|
|
a.num_doc = arr_recibo[curr].num_nc AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_nc
|
|
END IF
|
|
|
|
LET valor_nc = 0
|
|
SELECT SUM(a.valor+a.monto_desc) INTO valor_nc FROM cctb00001 a
|
|
WHERE a.tipo_doc = "AV" AND a.status_t IS NULL AND
|
|
a.num_doc = arr_recibo[curr].num_nc AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente
|
|
|
|
IF valor_nc IS NULL THEN
|
|
LET valor_nc = 0
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD aplica_a
|
|
IF arr_recibo[curr].aplica_a IS NOT NULL THEN
|
|
LET bandera = 0
|
|
CALL repetir()
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF recibo.tipo_doc = "AV" THEN
|
|
IF recibo.num_doc != arr_recibo[curr].aplica_a THEN
|
|
ERROR "Si Es Un Avance Debe Aplicarse a Si Mismo"
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
#IF recibo.tipo_doc != "AV" AND
|
|
# arr_recibo[curr].aplica_a = recibo.num_doc THEN
|
|
# LET numero_msg = 131
|
|
# CALL msg(numero_msg)
|
|
# NEXT FIELD aplica_a
|
|
#END IF
|
|
# Controla que la factura pertenezca al cliente
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
SELECT unique tipo_cliente FROM cctb00001
|
|
WHERE num_doc = arr_recibo[curr].aplica_a and
|
|
tipo_cliente = recibo.tipo_cliente and
|
|
sec_cliente = recibo.sec_cliente and
|
|
(tipo_doc IN ("FT","FE","FI","ND")) and status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 126
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
|
|
# Busca el valor pendiente de la factura
|
|
|
|
IF arr_recibo[curr].num_nc IS NULL THEN
|
|
SELECT sum(a.valor+a.monto_desc) INTO valor_fac
|
|
FROM cctb00001 a
|
|
WHERE a.aplica_a=arr_recibo[curr].aplica_a and
|
|
a.status_t is null AND
|
|
a.tipo_cliente = recibo.tipo_cliente AND
|
|
a.sec_cliente = recibo.sec_cliente
|
|
|
|
LET arr_recibo[curr].valor_pen = valor_fac
|
|
ELSE
|
|
LET arr_recibo[curr].valor_pen = 0
|
|
END IF
|
|
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
|
|
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
|
|
END IF
|
|
|
|
BEFORE FIELD desc_p
|
|
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
|
|
IF arr_recibo[curr].desc_p IS NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
END IF
|
|
|
|
DISPLAY arr_recibo[curr].desc_p to s_recibo[scr_l].desc_p
|
|
|
|
AFTER FIELD desc_p
|
|
IF arr_recibo[curr].num_nc IS NOT NULL THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
ELSE
|
|
|
|
IF arr_recibo[curr].desc_p is null THEN
|
|
LET arr_recibo[curr].desc_p = 0
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD valor_pag
|
|
|
|
IF arr_recibo[curr].aplica_a IS NULL AND
|
|
arr_recibo[curr].num_nc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF arr_recibo[curr].valor_pag IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
|
|
LET remanente = valor_ctrl
|
|
LET p_total = 0
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_recibo[idx].valor_pag is not null THEN
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
LET p_total = p_total - arr_recibo[idx].valor_pag
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
IF p_total < 0 THEN
|
|
LET p_total = p_total * -1
|
|
END IF
|
|
DISPLAY BY NAME remanente ATTRIBUTE(blue)
|
|
IF p_total != valor_ctrl THEN
|
|
LET numero_msg = 178
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
DISPLAY BY NAME p_total ATTRIBUTE(BOLD)
|
|
|
|
# Controla que el valor aplicado a las facturas no exceda el monto del recibo
|
|
|
|
END INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
IF p_total != valor_ctrl THEN
|
|
LET numero_msg = 178
|
|
CALL msg(numero_msg)
|
|
GOTO arreglo2
|
|
END IF
|
|
|
|
LET opc = NULL
|
|
LET valor_cheque1 = NULL
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
PROMPT "NOTA DE DEBITO ES DEBIDO A CHEQUE DEVUELTO...[S/N]? " FOR CHAR opc
|
|
LET opc = UPSHIFT(opc)
|
|
|
|
IF opc = "S" THEN
|
|
LET valor_cheque1 = recibo.num_doc
|
|
ELSE
|
|
LET valor_cheque1 = NULL
|
|
END IF
|
|
END IF
|
|
|
|
## AQUI SE REALIZA LA MODIFICACION DEL REGISTRO
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
BEGIN WORK
|
|
DELETE FROM cctb00001 WHERE num_cheque= recibo.num_doc and
|
|
tipo_doc IN ("PG","AV") AND valor < 0 AND fecha_orig = recibo.fecha_orig
|
|
|
|
IF SQLSTATE > 02 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO FUE POSIBLE GUARDAR LA TRANSACCION","STOP")
|
|
RETURN
|
|
END IF
|
|
|
|
ELSE
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
SELECT unique a.valor_cheque INTO valor_cheque1
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = recibo.num_doc AND
|
|
a.tipo_doc = "ND"
|
|
END IF
|
|
BEGIN WORK
|
|
UPDATE cctb00011 SET comentario = recibo.comentario,
|
|
cod_emp_Sec = recibo.cod_emp_sec,
|
|
valor_recibo = valor_ctrl,
|
|
fecha_orig = recibo.fecha_orig,
|
|
cctb00011.chitis = chitbis,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
WHERE num_doc = recibo.num_doc AND tipo_doc = recibo.tipo_doc
|
|
DELETE FROM cctb00005 WHERE num_Doc = recibo.num_doc AND tipo_Doc = recibo.tipo_doc
|
|
|
|
IF SQLSTATE > 02 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO FUE POSIBLE GUARDAR LA TRANSACCION","STOP")
|
|
|
|
RETURN
|
|
END IF
|
|
|
|
DELETE FROM cctb00001 WHERE cctb00001.num_doc= recibo.num_doc and
|
|
cctb00001.tipo_doc = recibo.tipo_doc and CONVERT (CHAR(10),fech_crea,101) > '01/01/2009'
|
|
|
|
IF SQLSTATE > 02 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO FUE POSIBLE GUARDAR LA TRANSACCION","STOP")
|
|
|
|
RETURN
|
|
END IF
|
|
|
|
END IF
|
|
|
|
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 cctb01 TO archivo
|
|
|
|
|
|
LET avance = FALSE
|
|
FOR idx = 1 to arr_count()
|
|
IF arr_recibo[idx].aplica_a is not null OR
|
|
arr_recibo[idx].num_nc is not null THEN
|
|
|
|
IF recibo.tipo_doc != "ND" AND recibo.tipo_doc != "OD" THEN
|
|
IF recibo.tipo_doc != "FI" THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag * -1
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
END IF
|
|
END IF
|
|
|
|
LET tipo_doc1 = NULL
|
|
LET navance = 1
|
|
IF arr_recibo[idx].num_nc IS NOT NULL THEN
|
|
LET tipo_doc1 = "AV"
|
|
LET avance = TRUE
|
|
LET navance = 1
|
|
ELSE
|
|
LET arr_recibo[idx].num_nc = recibo.num_doc
|
|
LET tipo_doc1 = recibo.tipo_doc
|
|
LET avance = FALSE
|
|
LET navance = 0
|
|
END IF
|
|
IF recibo.tipo_doc = "DV" THEN
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag *-1
|
|
END IF
|
|
END IF
|
|
IF recibo.tipo_doc = "ND" THEN
|
|
IF arr_recibo[idx].valor_pag < 0 THEN
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pag *-1
|
|
END IF
|
|
END IF
|
|
IF avance = FALSE THEN # CONTROL AVANCE
|
|
INSERT INTO cctb00001
|
|
VALUES (p_companias.cod_comp,null,tipo_doc1,arr_recibo[idx].num_nc,
|
|
recibo.tipo_cliente,recibo.sec_cliente,codigo_sucursal,recibo.cod_emp_sec,
|
|
recibo.fecha_orig,"010101",arr_recibo[idx].aplica_a,null,
|
|
recibo.num_doc,arr_recibo[idx].valor_pag,null,valor_cheque1,navance,
|
|
arr_recibo[idx].desc_p,null,SUSER_SNAME(),GETDATE(),null,null,NULL)
|
|
IF SQLSTATE > 02 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","NO FUE POSIBLE GUARDAR LA TRANSACCION","STOP")
|
|
|
|
RETURN
|
|
END IF
|
|
|
|
|
|
OUTPUT TO REPORT cctb01(recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.fecha_orig,recibo.num_doc,
|
|
recibo.cod_emp_sec,tipo_doc1,null,null,
|
|
arr_recibo[idx].aplica_a,arr_recibo[idx].desc_p,arr_recibo[idx].valor_pag,
|
|
nom_cli,nombre_emp,nombre_cta,recibo.comentario)
|
|
|
|
END IF # IF DEL AVANCE
|
|
END IF
|
|
END FOR
|
|
COMMIT WORK
|
|
FINISH REPORT cctb01
|
|
|
|
RUN imprime
|
|
COMMIT WORK
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
}
|
|
COMMAND KEY("N") "aNular"
|
|
## AQUI SE REALIZA LA ANULACION DE UN REGISTRO
|
|
|
|
LET p_fechas = recibo.fecha_orig
|
|
CALL prd(p_fechas, usuarios) RETURNING bandera
|
|
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
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 recibo.tipo_doc = "PG" THEN
|
|
UPDATE cctb00001
|
|
SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE tipo_doc IN ("AV", "PG")
|
|
AND num_cheque = recibo.num_doc
|
|
AND tipo_cliente = recibo.tipo_cliente
|
|
AND sec_cliente = recibo.sec_cliente
|
|
ELSE
|
|
UPDATE cctb00001
|
|
SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE tipo_doc = recibo.tipo_doc
|
|
AND num_cheque = recibo.num_doc
|
|
END IF
|
|
|
|
LET numero_msg = 82
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
COMMAND "Retornar"
|
|
CLEAR FORM
|
|
|
|
FOR idx = 1 TO 3
|
|
LET arr_recibo[idx].aplica_a = NULL
|
|
LET arr_recibo[idx].valor_pen = NULL
|
|
LET arr_recibo[idx].valor_pag = NULL
|
|
|
|
DISPLAY arr_recibo[idx].aplica_a TO s_recibo[idx].aplica_a
|
|
DISPLAY arr_recibo[idx].valor_pen TO s_recibo[idx].valor_pen
|
|
DISPLAY arr_recibo[idx].valor_pag TO s_recibo[idx].valor_pag
|
|
END FOR
|
|
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_aplicacion()
|
|
OPEN WINDOW busqueda1
|
|
AT 10, 10
|
|
WITH FORM "ccfmwd001"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, COMMENT LINE LAST)
|
|
CALL ui.Interface.LoadStyles("mbsStyle")
|
|
DECLARE aplicar CURSOR FOR
|
|
SELECT a.aplica_a,
|
|
SUM(a.valor + a.monto_desc),
|
|
b.fecha_factura,
|
|
b.cotizacion_no,
|
|
b.orden
|
|
FROM cctb00001 a, vetb00002 b
|
|
WHERE (a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.tipo_cliente = b.tipo_cliente
|
|
AND a.sec_cliente = b.sec_cliente)
|
|
AND (a.tipo_doc NOT IN ('AV', 'AP') AND a.aplica_a = b.factura)
|
|
AND a.status_t IS NULL
|
|
GROUP BY b.fecha_factura, a.aplica_a, b.cotizacion_no, b.orden
|
|
HAVING SUM(a.valor + a.monto_desc) > 0
|
|
ORDER BY b.fecha_factura
|
|
|
|
LET existe = "N"
|
|
LET idx = 1
|
|
FOREACH aplicar
|
|
INTO aplica_wd[idx].aplica_a,
|
|
aplica_wd[idx].pendiente,
|
|
aplica_wd[idx].fecha,
|
|
aplica_wd[idx].cotizacion_no,
|
|
aplica_wd[idx].num_oc
|
|
IF status = NOTFOUND THEN
|
|
LET existe = "N"
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
CALL integridad()
|
|
|
|
# Busca el tipo de movimiento
|
|
SELECT MAX(a.tipo_doc)
|
|
INTO tipo_doc2
|
|
FROM cctb00001 a
|
|
WHERE (a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.tipo_doc NOT IN ("PG", "AV")
|
|
AND a.num_doc = aplica_wd[idx].aplica_a)
|
|
AND a.status_t IS NULL
|
|
|
|
IF status < 0 THEN
|
|
CALL integridad()
|
|
LET tipo_doc2 = "SQ"
|
|
END IF
|
|
|
|
LET aplica_wd[idx].tipo_doc = tipo_doc2
|
|
# Busca ordes y cotizacion de la factura
|
|
IF tipo_Doc2 = 'FT' OR tipo_Doc2 = 'FE' THEN
|
|
SELECT a.orden,
|
|
a.cotizacion_no,
|
|
a.factura_ext,
|
|
CONVERT(CHAR(10), a.fecha_factura, 103)
|
|
INTO aplica_wd[idx].num_oc,
|
|
aplica_wd[idx].cotizacion_no,
|
|
aplica_wd[idx].factura_e,
|
|
aplica_wd[idx].fecha
|
|
FROM vetb00002 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.factura = aplica_wd[idx].aplica_a
|
|
END IF
|
|
# Busca Nota de credito
|
|
LET valor_ctrl1 = 0
|
|
IF tipo_doc2 = "AV" THEN
|
|
LET aplica_wd[idx].cotizacion_no = NULL
|
|
SELECT MAX(a.banco)
|
|
INTO aplica_wd[idx].cotizacion_no
|
|
FROM cctb00001 a
|
|
WHERE a.num_doc = aplica_wd[idx].num_oc
|
|
AND a.num_doc = a.aplica_a
|
|
|
|
SELECT SUM(a.valor * - 1)
|
|
INTO valor_ctrl1
|
|
FROM cctb00001 a
|
|
WHERE (a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.num_doc = aplica_wd[idx].aplica_a
|
|
AND a.tipo_doc = "AV"
|
|
AND a.num_doc != a.aplica_a)
|
|
AND a.status_t IS NULL
|
|
|
|
IF valor_ctrl1 IS NULL THEN
|
|
LET valor_ctrl1 = 0
|
|
END IF
|
|
LET aplica_wd[idx].pendiente =
|
|
aplica_wd[idx].pendiente - valor_ctrl1
|
|
END IF
|
|
|
|
LET existe = "S"
|
|
IF aplica_wd[idx].pendiente != 0 THEN
|
|
LET idx = idx + 1
|
|
END IF
|
|
|
|
END FOREACH
|
|
|
|
IF existe = "N" AND idx = 1 THEN
|
|
LET numero_msg = 127
|
|
CALL msg(numero_msg)
|
|
GOTO salir
|
|
END IF
|
|
|
|
CALL set_count(idx - 1)
|
|
DISPLAY ARRAY aplica_wd TO consart.*
|
|
LET INT_FLAG = FALSE
|
|
LET curr1 = arr_curr()
|
|
|
|
LET arr_recibo[curr].aplica_a = aplica_wd[curr1].aplica_a
|
|
LET arr_recibo[curr].valor_pen = aplica_wd[curr1].pendiente
|
|
LABEL salir:
|
|
CLOSE WINDOW busqueda1
|
|
END FUNCTION
|
|
|
|
FUNCTION repetir()
|
|
|
|
DEFINE ant_art RECORD
|
|
num_nc INTEGER,
|
|
aplica_a INTEGER,
|
|
valor_pag DECIMAL(12, 2)
|
|
END RECORD
|
|
LET ant_art.num_nc = arr_recibo[curr].num_nc
|
|
LET ant_art.aplica_a = arr_recibo[curr].aplica_a
|
|
LET ant_art.valor_pag = arr_recibo[curr].valor_pag
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != curr THEN
|
|
IF arr_recibo[idx].aplica_a IS NOT NULL
|
|
AND arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
|
|
IF arr_recibo[idx].num_nc = ant_art.num_nc
|
|
AND arr_recibo[idx].aplica_a = ant_art.aplica_a
|
|
AND arr_recibo[idx].valor_pag = ant_art.valor_pag THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET bandera = 1
|
|
ELSE
|
|
IF bandera != 1 THEN
|
|
LET bandera = 0
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END FUNCTION
|
|
{
|
|
FUNCTION consulta_clientes()
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET int_flag = false
|
|
CONSTRUCT criterio ON a.nombre FROM nombre
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
GO TO salir_consulta_c
|
|
END IF
|
|
|
|
LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre ",
|
|
"FROM vetb00004 a ",
|
|
"WHERE a.status_t is null AND ",criterio clipped," ORDER BY 1,2 "
|
|
|
|
PREPARE busca_clientes FROM selec2
|
|
DECLARE buscar_clientes CURSOR FOR busca_clientes
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_clientes INTO arr_clientes[idx].*
|
|
|
|
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 Cliente donde esta el cursor"
|
|
DISPLAY ARRAY arr_clientes TO s_clientes.*
|
|
LET curr1 = arr_curr()
|
|
|
|
LET cliente_dir.tipo_cliente = arr_clientes[curr1].tipo_cliente
|
|
LET cliente_dir.sec_cliente = arr_clientes[curr1].sec_cliente
|
|
LET descrip1 = arr_clientes[curr1].nombre
|
|
|
|
LABEL salir_consulta_c:
|
|
CLOSE WINDOW busqueda
|
|
|
|
END FUNCTION
|
|
}
|
|
|
|
{
|
|
FUNCTION anular()
|
|
OPEN WINDOW anula AT 7,5 WITH FORM "vefmwd006" ATTRIBUTE (BORDER,
|
|
COMMENT LINE LAST - 1,PROMPT LINE LAST,FORM LINE FIRST + 1)
|
|
|
|
LABEL vuelve:
|
|
INPUT BY NAME p_fact_no
|
|
|
|
AFTER FIELD p_fact_no
|
|
SELECT UNIQUE fecha_factura,orden,tipo_cliente,sec_cliente,neto
|
|
INTO fact_gral.fecha_factura,fact_gral.orden,fact_gral.tipo_cliente,
|
|
fact_gral.sec_cliente,fact_gral.total_fact
|
|
FROM vetb00002
|
|
WHERE factura = p_fact_no AND status_t IS NULL AND
|
|
fech_crea > datetime (1994-03-31 08:00) year to minute
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 102
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD p_fact_no
|
|
END IF
|
|
SELECT a.nombre
|
|
INTO fact_gral.nombre
|
|
FROM vetb00004 a
|
|
WHERE a.tipo_cliente = fact_gral.tipo_cliente AND
|
|
a.sec_cliente = fact_gral.sec_cliente
|
|
|
|
DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente,
|
|
fact_gral.total_fact,fact_gral.nombre ATTRIBUTE(blue)
|
|
|
|
IF fact_gral.fecha_factura < "310394" THEN
|
|
LET numero_msg = 58
|
|
CALL msg(numero_msg)
|
|
GOTO salir
|
|
END IF
|
|
LET p_fechas = fact_gral.fecha_factura
|
|
IF fact_gral.fecha_factura != TODAY THEN
|
|
ERROR "NO PUEDE ANULAR FACTURA QUE NO SEAN DEL DIA DE HOY"
|
|
RETURN
|
|
END IF
|
|
CALL prd()
|
|
IF bandera =1 THEN
|
|
SLEEP 2
|
|
EXIT INPUT
|
|
END IF
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
EXIT INPUT
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
GOTO salir
|
|
END IF
|
|
|
|
# Este Int_flag es porque tuve que salir del input con el int_flag verdadero
|
|
# y asi poder salir del window sin problemas
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
GOTO salir
|
|
END IF
|
|
|
|
LABEL atras:
|
|
PROMPT "Esta seguro de Anular Esta Factura? (S/N)" FOR CHAR opt3
|
|
LET opt3 = UPSHIFT(opt3)
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
GOTO salir
|
|
END IF
|
|
|
|
IF opt3 != "S" AND opt3 != "N" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO atras
|
|
END IF
|
|
|
|
IF opt3 = "N" THEN
|
|
GOTO salir
|
|
END IF
|
|
|
|
IF opt3 = "S" THEN
|
|
UPDATE vetb00002 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE factura = p_fact_no AND fech_crea > datetime (1994-03-31 08:00)
|
|
year to minute
|
|
|
|
UPDATE iptb00006 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE num_doc = p_fact_no AND cod_mov IN (30,31,32) AND
|
|
fech_crea > datetime (1994-03-31 08:00) year to minute
|
|
|
|
UPDATE vetb00003 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE factura = p_fact_no AND fech_crea > datetime (1994-03-31 08:00)
|
|
year to minute
|
|
|
|
UPDATE cctb00001 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE num_doc = p_fact_no AND (tipo_doc = "FT" or tipo_doc = "FE") AND
|
|
fech_crea > datetime (1994-03-31 08:00) year to minute
|
|
|
|
UPDATE cctb00001 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE aplica_a = p_fact_no AND tipo_doc = "PC"
|
|
|
|
# ANULACION DE LAS SERIES
|
|
IF fact_gral.ventas = "1" THEN
|
|
LET p_codigo = 30
|
|
ELSE
|
|
LET p_codigo = 31
|
|
END IF
|
|
UPDATE vetb00042 set status_t = "E", us_mod = SUSER_SNAME(), fech_mod = GETDATE()
|
|
WHERE factura = p_fact_no AND cod_mov = p_codigo
|
|
|
|
LET numero_msg = 82
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
LABEL salir:
|
|
LET fact_gral.fecha_factura = TODAY
|
|
#CLOSE FORM vefmwd006
|
|
CLOSE WINDOW anula
|
|
END FUNCTION
|
|
}
|
|
|
|
REPORT cctb01(
|
|
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 VARCHAR(100),
|
|
p_comentario, tipo_documento CHAR(120), #LIKE cctb00011.comentario,
|
|
ditbis, total_doc, total_desc DEC(12, 2)
|
|
|
|
ORDER BY p_sec_cliente, p_num_doc
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = TIME
|
|
|
|
IF p_tipo_doc = 'PG' THEN
|
|
LET tipo_documento = 'RECIBO INGRESOS'
|
|
ELSE
|
|
LET tipo_documento = 'DOCUMENTOS'
|
|
END IF
|
|
PRINTX p_companias.nombre,
|
|
p_num_doc,
|
|
p_companias.rnc,
|
|
p_companias.direccion,
|
|
p_fecha_orig,
|
|
hora,
|
|
tipo_documento
|
|
|
|
BEFORE GROUP OF p_sec_cliente
|
|
|
|
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
|
|
|
|
ON EVERY ROW
|
|
PRINTX p_aplica_a, p_monto_desc, p_valor, p_valor
|
|
|
|
AFTER GROUP OF p_sec_cliente
|
|
|
|
LET total_doc = GROUP SUM(p_valor)
|
|
LET total_desc = GROUP SUM(p_monto_desc)
|
|
|
|
ON LAST ROW
|
|
|
|
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
|
|
|
|
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, pnombreTipo 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
|
|
|
|
LET p_nombre_tipo = pnombreTipo CLIPPED
|
|
IF p_tipo_doc = 'PG' THEN
|
|
LET tipodocumento = 'RECIBO DE INGRESOS'
|
|
LET labelcliente = "HEMOS RECIBIDO DE "
|
|
|
|
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,
|
|
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, a.ventas
|
|
INTO psimbolo, pmoneda, xventas
|
|
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 busca_avance()
|
|
DEFINE
|
|
ravances DYNAMIC ARRAY OF RECORD
|
|
fecha DATE,
|
|
aplica_a INT,
|
|
pcotizacion INT,
|
|
|
|
nombre_proyecto VARCHAR(100),
|
|
pendiente DEC(12, 2)
|
|
END RECORD,
|
|
pnombre_proyecto VARCHAR(100)
|
|
OPEN WINDOW busqueda1
|
|
AT 10, 10
|
|
WITH FORM "ccfmwd005"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, COMMENT LINE LAST)
|
|
CALL ui.Interface.LoadStyles("mbsStyle")
|
|
DECLARE avances CURSOR FOR
|
|
SELECT a.num_doc, a.banco, SUM(a.valor + a.monto_desc)
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.status_t IS NULL
|
|
AND a.tipo_Doc IN ('AV', 'AP')
|
|
GROUP BY a.num_doc, a.banco
|
|
HAVING SUM(a.valor + a.monto_desc) <> 0
|
|
ORDER BY a.num_doc
|
|
|
|
LET existe = "N"
|
|
LET idx = 1
|
|
FOREACH avances
|
|
INTO ravances[idx].aplica_a,
|
|
ravances[idx].pcotizacion,
|
|
ravances[idx].pendiente
|
|
IF status = NOTFOUND THEN
|
|
LET existe = "N"
|
|
EXIT FOREACH
|
|
END IF
|
|
# busca nombre del proyecto
|
|
LET pnombre_proyecto = NULL
|
|
SELECT a.nombre_proyecto
|
|
INTO pnombre_proyecto
|
|
FROM vetb00050 a
|
|
WHERE a.cotizacion_no = ravances[idx].pcotizacion
|
|
LET ravances[idx].nombre_proyecto = pnombre_proyecto
|
|
LET ravances[idx].nombre_proyecto = pnombre_proyecto
|
|
|
|
SELECT DISTINCT CONVERT(CHAR(10), a.fecha_orig, 103)
|
|
INTO ravances[idx].fecha
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_doc = 'AV'
|
|
AND a.num_doc = ravances[idx].aplica_a
|
|
AND a.num_doc = a.aplica_a
|
|
AND a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
|
|
LET existe = "S"
|
|
IF ravances[idx].pendiente != 0 THEN
|
|
LET idx = idx + 1
|
|
ELSE
|
|
CONTINUE FOREACH
|
|
END IF
|
|
|
|
END FOREACH
|
|
IF existe = "S" THEN
|
|
DISPLAY ARRAY ravances TO savance.*
|
|
END IF
|
|
IF INT_FLAG THEN
|
|
LET INT_FLAG = FALSE
|
|
END IF
|
|
LET curr1 = arr_curr()
|
|
CLOSE WINDOW busqueda1
|
|
RETURN ravances[curr1].aplica_a,
|
|
ravances[curr1].pendiente,
|
|
ravances[curr1].pcotizacion
|
|
|
|
END FUNCTION
|
|
FUNCTION datos_doc()
|
|
CASE
|
|
WHEN recibo.tipo_doc = "PG"
|
|
LET nombre_tipo = "PAGOS A FACTURAS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "OC"
|
|
LET nombre_tipo = "OTROS CREDITOS"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "NC"
|
|
LET nombre_tipo = "NOTA CREDITO"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "ND"
|
|
LET nombre_tipo = "NOTA DEBITO"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "PI"
|
|
LET nombre_tipo = "PAGO INTER."
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "DV"
|
|
LET nombre_tipo = "DEVOLUCION DINERO"
|
|
EXIT CASE
|
|
END CASE
|
|
LET p_nombre_tipo = nombre_tipo
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
SELECT SUM((a.valor) * - 1)
|
|
INTO valor_ctrl
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.tipo_doc = "PG"
|
|
AND a.num_doc = recibo.num_doc
|
|
AND a.cod_emp_sec = recibo.cod_emp_sec
|
|
AND a.status_t IS NULL
|
|
ELSE
|
|
SELECT SUM((a.valor) * - 1)
|
|
INTO valor_ctrl
|
|
FROM cctb00001 a
|
|
WHERE a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.tipo_doc = recibo.tipo_doc
|
|
AND a.num_cheque = recibo.num_doc
|
|
AND a.cod_emp_sec = recibo.cod_emp_sec
|
|
AND a.status_t IS NULL
|
|
END IF
|
|
|
|
IF valor_ctrl IS NULL THEN
|
|
LET valor_ctrl = 0
|
|
END IF
|
|
|
|
IF recibo.tipo_doc = "ND" OR recibo.tipo_doc = "OD" THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
IF valor_ctrl < 0 THEN
|
|
LET valor_ctrl = valor_ctrl * -1
|
|
END IF
|
|
END IF
|
|
SELECT b.nombre,
|
|
ISNULL(c.calle, ' ') + ISNULL(c.casa_num, ' ')
|
|
+ ISNULL(c.urbanizacion, ' ')
|
|
+ ISNULL(c.barrio, ' ')
|
|
INTO nom_cli, xdireccion
|
|
FROM vetb00004 b
|
|
LEFT OUTER
|
|
JOIN vetb00005 c
|
|
ON b.tipo_cliente = c.tipo_cliente AND b.sec_cliente = c.sec_cliente
|
|
WHERE b.tipo_cliente = recibo.tipo_cliente
|
|
AND b.sec_cliente = recibo.sec_cliente
|
|
|
|
SELECT nom1_emp, apell1_emp
|
|
INTO descrip2, descrip3
|
|
FROM adtb00003
|
|
WHERE num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 CLIPPED, " ", descrip3 CLIPPED
|
|
{
|
|
SELECT descripcion INTO nombre_cta FROM cgtb00001
|
|
WHERE cuenta_no = recibo.cuenta_no
|
|
}
|
|
DISPLAY BY NAME recibo.*, nom_cli, nombre_emp, valor_ctrl
|
|
|
|
IF recibo.tipo_doc = "PG" THEN
|
|
LET selec =
|
|
"SELECT a.num_doc,a.documento_ref,a.tipo_doc_aplica,a.aplica_a,a.valor,a.num_recibo_dev,a.tipo_doc_recibo,a.valor_recibo_dev,a.monto_desc,a.valor ",
|
|
"FROM cctb00001 a ",
|
|
"WHERE ((a.tipo_doc = ? OR a.tipo_doc = 'AV') AND ",
|
|
" a.num_cheque = ?) AND (a.tipo_cliente = ? AND ",
|
|
" a.sec_cliente = ?) ORDER BY 2,1 "
|
|
ELSE
|
|
LET selec =
|
|
"SELECT a.num_doc,a.documento_ref,a.tipo_doc_aplica,aplica_a,valor,a.num_recibo_dev,a.tipo_doc_recibo,a.valor_recibo_dev,a.monto_desc,a.valor FROM cctb00001 a ",
|
|
"WHERE (a.tipo_doc=? AND a.num_cheque=?)AND (a.tipo_cliente = ? AND ",
|
|
" a.sec_cliente = ?) ORDER BY a.banco,a.num_Doc "
|
|
END IF
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE buscar1 CURSOR FOR comando
|
|
OPEN buscar1
|
|
USING recibo.tipo_doc,
|
|
recibo.num_doc,
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente
|
|
|
|
LET idx = 1
|
|
WHILE STATUS != NOTFOUND
|
|
FETCH buscar1 INTO arr_recibo[idx].*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF arr_recibo[idx].num_nc = recibo.num_doc THEN
|
|
LET arr_recibo[idx].num_nc = NULL
|
|
END IF
|
|
IF recibo.tipo_doc != "ND" AND recibo.tipo_doc != "OD" THEN
|
|
LET arr_recibo[idx].valor_pen = arr_recibo[idx].valor_pen * -1
|
|
ELSE
|
|
IF arr_recibo[idx].valor_pen < 0 THEN
|
|
LET arr_recibo[idx].valor_pen = arr_recibo[idx].valor_pen * -1
|
|
END IF
|
|
END IF
|
|
LET arr_recibo[idx].valor_pag = arr_recibo[idx].valor_pen
|
|
LET arr_recibo[idx].valor_pen = 0
|
|
LET arr_recibo[idx].desc_p = arr_recibo[idx].desc_p * -1
|
|
|
|
SELECT SUM(valor)
|
|
INTO valor2
|
|
FROM cctb00001
|
|
WHERE tipo_cliente = recibo.tipo_cliente
|
|
AND sec_cliente = recibo.sec_cliente
|
|
AND aplica_a = arr_recibo[idx].aplica_a
|
|
AND status_t IS NULL
|
|
AND num_cheque = recibo.num_doc
|
|
|
|
LET arr_recibo[idx].valor_pen = valor2
|
|
LET idx = idx + 1
|
|
END WHILE
|
|
DISPLAY ARRAY arr_recibo TO s_recibo.*
|
|
ON ACTION imprimir
|
|
{
|
|
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 cctb01 TO archivo
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
OUTPUT TO REPORT cctb01(recibo.tipo_cliente,
|
|
recibo.sec_cliente,recibo.fecha_orig,recibo.num_doc,
|
|
recibo.cod_emp_sec,recibo.tipo_doc,null,null,
|
|
arr_recibo[idx].aplica_a,arr_recibo[idx].desc_p,arr_recibo[idx].valor_pag,
|
|
nom_cli,nombre_emp,nombre_cta,recibo.comentario)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT cctb01
|
|
RUN imprime}
|
|
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
|
|
|
|
FOR idx = 1 TO arr_recibo.getLength()
|
|
IF arr_recibo[idx].num_nc IS NULL THEN
|
|
IF arr_recibo[idx].valor_pag IS NOT NULL THEN
|
|
OUTPUT TO REPORT cctb01b(
|
|
recibo.tipo_cliente,
|
|
recibo.sec_cliente,
|
|
recibo.fecha_orig,
|
|
recibo.num_doc,
|
|
recibo.cod_emp_sec,
|
|
recibo.tipo_doc,
|
|
recibo.cuenta_no,
|
|
NULL,
|
|
arr_recibo[idx].aplica_a,
|
|
arr_recibo[idx].desc_p,
|
|
arr_recibo[idx].valor_pag,
|
|
nom_cli,
|
|
nombre_emp,
|
|
nombre_cta,
|
|
recibo.comentario)
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT cctb01b
|
|
|
|
END IF
|
|
AFTER DISPLAY
|
|
EXIT DISPLAY
|
|
END DISPLAY
|
|
END FUNCTION
|
|
FUNCTION aplica_mas_antiguas()
|
|
DEFINE
|
|
balance, valor_aplicando DEC(12, 2),
|
|
j INT,
|
|
pventas CHAR(1)
|
|
DECLARE busca_antiguas CURSOR FOR
|
|
SELECT a.aplica_a,
|
|
SUM(a.valor + a.monto_desc),
|
|
b.ventas,
|
|
b.fecha_factura
|
|
FROM cctb00001 a, vetb00002 b
|
|
WHERE (a.tipo_cliente = recibo.tipo_cliente
|
|
AND a.sec_cliente = recibo.sec_cliente
|
|
AND a.tipo_cliente = b.tipo_cliente
|
|
AND a.sec_cliente = b.sec_cliente)
|
|
AND (a.tipo_doc NOT IN ('AV', 'AP') AND a.aplica_a = b.factura)
|
|
AND a.status_t IS NULL
|
|
GROUP BY a.aplica_a, b.fecha_factura, b.ventas
|
|
HAVING SUM(a.valor + a.monto_desc) > 0
|
|
ORDER BY b.fecha_factura
|
|
LET idx = 1
|
|
LET j = 1
|
|
LET valor_aplicando = 0
|
|
LET balance = valor_ctrl
|
|
FOREACH busca_antiguas
|
|
INTO aplica_wd[idx].aplica_a, aplica_wd[idx].pendiente, pventas
|
|
LET balance = balance - aplica_wd[idx].pendiente
|
|
|
|
IF balance < 0 THEN
|
|
IF valor_aplicando < valor_ctrl THEN
|
|
|
|
IF pventas = '1' THEN
|
|
LET arr_recibo[j].tipo_doc_aplica = 'FT'
|
|
ELSE
|
|
LET arr_recibo[j].tipo_doc_aplica = 'FE'
|
|
END IF
|
|
|
|
LET arr_recibo[j].aplica_a = aplica_wd[idx].aplica_a
|
|
LET arr_recibo[j].valor_pen = aplica_wd[idx].pendiente
|
|
LET arr_recibo[j].valor_pag = valor_ctrl - valor_aplicando
|
|
DISPLAY "DATA2 ",
|
|
arr_recibo[j].aplica_a,
|
|
" V ",
|
|
arr_recibo[j].valor_pag
|
|
END IF
|
|
EXIT FOREACH
|
|
ELSE
|
|
IF pventas = '1' THEN
|
|
LET arr_recibo[j].tipo_doc_aplica = 'FT'
|
|
ELSE
|
|
LET arr_recibo[j].tipo_doc_aplica = 'FE'
|
|
END IF
|
|
LET arr_recibo[j].aplica_a = aplica_wd[idx].aplica_a
|
|
LET arr_recibo[j].valor_pen = aplica_wd[idx].pendiente
|
|
IF balance > aplica_wd[idx].pendiente THEN
|
|
LET valor_aplicando = valor_aplicando + aplica_wd[idx].pendiente
|
|
LET arr_recibo[j].valor_pag = aplica_wd[idx].pendiente
|
|
END IF
|
|
DISPLAY "DATA ",
|
|
arr_recibo[j].aplica_a,
|
|
" V ",
|
|
arr_recibo[j].valor_pag
|
|
LET j = j + 1
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END FUNCTION
|
|
|
|
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
|