1952 lines
60 KiB
Plaintext
1952 lines
60 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
PROGRAMA : CGPRMT005
|
|
OBJETIVO : Mantenimiento de Cheques de pago en RD$
|
|
REALIZADO POR : Ing. Juan F. Soto
|
|
FECHA : Octubre 18, 1993.
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "cgprgb000.4gl"
|
|
DEFINE formato CHAR(18)
|
|
DEFINE numdoc INT,
|
|
autorizar,usada CHAR(2),xcomentario CHAR(100)
|
|
###### Funcion que adiciona informacion referente a la aplicacion de un pago
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(5) RETURNING impresor
|
|
CALL STARTLOG("cgprmt5.txt")
|
|
CONNECT to "sistemas" AS "MSSQL" USER usuarios USING clave
|
|
SELECT a.* INTO p_compania.* FROM companias a
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
#DISPLAY "USUARIOS ",usuarios,"IMPRESOR ",impresor,"archivo ",archivo," imprime ",imprime
|
|
CALL cgprmt005()
|
|
END MAIN
|
|
|
|
FUNCTION cgprmt005()
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
COMMENT LINE 22,
|
|
PROMPT LINE 23
|
|
|
|
|
|
OPEN FORM cgfmmt005 FROM "cgfmmt005"
|
|
DISPLAY FORM cgfmmt005
|
|
DISPLAY "cgprmt005" AT 4,3 ATTRIBUTE(blue)
|
|
DISPLAY "Registro De Cheques en RD$" AT 6,27 ATTRIBUTE(blue)
|
|
|
|
MENU "Mant."
|
|
COMMAND "Adicionar"
|
|
"Presione ESC Para Grabar Ctrl-C Para Cancelar Ctrl-F Moverse en Pantalla"
|
|
LET int_flag = FALSE
|
|
CALL cgprad005()
|
|
COMMAND "Salir"
|
|
LET int_flag = FALSE
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION cgprad005()
|
|
LET hoy = TODAY
|
|
LABEL volver1:
|
|
INITIALIZE recibo.* TO NULL
|
|
CLEAR FORM
|
|
LABEL volver:
|
|
IF opc = "S" OR opc IS NULL THEN
|
|
LET recibo.nom_sup = NULL
|
|
LET recibo.monto = NULL
|
|
LET opc = NULL
|
|
END IF
|
|
#### Aceptando los valores a insertar referentes al pago
|
|
INPUT BY NAME numdoc,recibo.*,valor_letras WITHOUT DEFAULTS
|
|
|
|
AFTER FIELD numdoc
|
|
|
|
CALL busca_solicitud(numdoc) RETURNING recibo.cuenta_p,recibo.fecha,recibo.monto,recibo.cod_sp,
|
|
recibo.cod_sp_sec,recibo.nom_sup,xcomentario,autorizar,usada
|
|
|
|
IF autorizar IS NULL OR autorizar ="NO" THEN
|
|
CALL fgl_winmessage("ERROR","SOLICITUD NO ESTA AUTORIZADA","STOP")
|
|
NEXT FIELD numdoc
|
|
END IF
|
|
|
|
IF usada IS NULL OR usada ="S" THEN
|
|
CALL fgl_winmessage("ERROR","SOLICITUD YA HA SIDO PAGADA","STOP")
|
|
NEXT FIELD numdoc
|
|
END IF
|
|
|
|
DISPLAY BY NAME recibo.*
|
|
|
|
|
|
AFTER FIELD codigo
|
|
LET p_descrip = NULL
|
|
IF recibo.codigo IS not NULL THEN
|
|
SELECT a.descripcion INTO p_descrip
|
|
FROM tetb00003 a
|
|
WHERE a.codigo = recibo.codigo
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD codigo
|
|
END IF
|
|
DISPLAY BY NAME p_descrip
|
|
END IF
|
|
AFTER FIELD monto
|
|
IF recibo.monto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD monto
|
|
END IF
|
|
CALL convierte()
|
|
DISPLAY BY NAME valor_letras
|
|
|
|
AFTER FIELD cuenta_p
|
|
IF recibo.cuenta_p IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_p
|
|
END IF
|
|
SELECT a.cheque_no,a.formato INTO numero,formato FROM cgtb00012 a
|
|
WHERE a.cuenta_no = recibo.cuenta_p AND a.tipo_doc = 'CK'
|
|
|
|
IF STATUS = notfound THEN
|
|
LET numero_msg = 205
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_p
|
|
END IF
|
|
LET numero = numero + 1
|
|
LET recibo.numero = numero
|
|
DISPLAY BY NAME recibo.numero
|
|
|
|
SELECT a.* INTO datos_ck.* FROM cgtb00012 a
|
|
WHERE a.cuenta_no = recibo.cuenta_p AND a.tipo_doc ='CK'
|
|
|
|
AFTER FIELD cod_sp_sec
|
|
|
|
##### Selecionando datos referentes al suplidor
|
|
IF recibo.cod_sp_sec IS not NULL THEN
|
|
IF recibo.cod_sp != 1 THEN
|
|
SELECT a.nom_sp INTO recibo.nom_sup FROM cotb00001 a
|
|
WHERE a.cod_sp = recibo.cod_sp AND
|
|
a.cod_sp_sec = recibo.cod_sp_sec
|
|
|
|
IF STATUS = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
DISPLAY BY NAME recibo.cod_sp,recibo.cod_sp_sec,recibo.nom_sup
|
|
NEXT FIELD nom_sup
|
|
END IF
|
|
END IF
|
|
|
|
IF recibo.cod_sp = 1 THEN
|
|
SELECT nom1_emp,apell1_emp,departamento,nomina
|
|
INTO nombre_emp,apellido_emp,depto,tipo_d FROM adtb00003
|
|
WHERE num_emp = recibo.cod_sp_sec
|
|
|
|
IF STATUS = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp_sec
|
|
END IF
|
|
|
|
LET recibo.nom_sup = nombre_emp clipped," ",apellido_emp clipped
|
|
DISPLAY BY NAME recibo.nom_sup
|
|
END IF
|
|
|
|
BEFORE FIELD tipo_doc
|
|
LET recibo.tipo_doc = "CK"
|
|
|
|
AFTER FIELD tipo_doc
|
|
IF recibo.tipo_doc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_doc
|
|
END IF
|
|
##### Igualando la descripcion de la operacion dependiendo de la clave
|
|
##### digitada en el proceso.
|
|
|
|
LET tipo_doc1 = recibo.tipo_doc
|
|
CASE
|
|
WHEN recibo.tipo_doc = "CK"
|
|
LET nom_tipo = "CHEQUE"
|
|
EXIT CASE
|
|
WHEN recibo.tipo_doc = "CP"
|
|
LET nom_tipo = "PAGO ADELANTADO"
|
|
EXIT CASE
|
|
END CASE
|
|
DISPLAY BY NAME nom_tipo ATTRIBUTE (BOLD)
|
|
|
|
BEFORE FIELD fecha
|
|
LET recibo.fecha = hoy
|
|
DISPLAY BY NAME recibo.fecha
|
|
|
|
AFTER FIELD fecha
|
|
LET hoy = recibo.fecha
|
|
IF recibo.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
|
|
LET p_fechas = recibo.fecha
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
|
|
####### Creando la facilidad para cancelar proceso mediante CTRL-C
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
IF recibo.monto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD monto
|
|
END IF
|
|
|
|
SELECT UNIQUE cheque_no FROM cgtb00005
|
|
WHERE cheque_no = recibo.numero and
|
|
cuenta_no = recibo.cuenta_p
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_doc
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
# Funcion que captura 5 lineas de detalles
|
|
CALL detallado()
|
|
|
|
IF opc = "S" OR opc IS NULL THEN
|
|
CALL arr_recibo.clear()
|
|
END IF
|
|
|
|
IF recibo.cod_sp = 1 THEN
|
|
GOTO vuelve
|
|
END IF
|
|
|
|
IF recibo.cod_sp_sec IS not NULL THEN
|
|
# Entrada de documentos que se pagaran con este cheque si el usuario
|
|
LABEL vuelta:
|
|
PROMPT "Afecta Cuentas Por Pagar?(S/N) " FOR CHAR opcion
|
|
LET opcion = UPSHIFT(opcion)
|
|
|
|
IF opcion != "S" AND
|
|
opcion != "N" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO vuelta
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
# Validar Cuando No Afecta Cuentas Por Pagar
|
|
|
|
IF opcion = "N" THEN
|
|
CALL arr_recibo.clear()
|
|
END IF
|
|
|
|
#----------------------------------------------------------
|
|
# Captura de las facturas y/o documentos de cuentas por pagar
|
|
|
|
IF opcion = "S" THEN
|
|
LET remanente = 0
|
|
LABEL arr2:
|
|
LET sale_arr = "N"
|
|
LET selec1=" SELECT a.tipo,a.num_oc,a.num_doc,a.valor_pagado ",
|
|
"FROM cgtb00039 a ",
|
|
"WHERE a.numdoc=",numdoc," and status_t is null "
|
|
|
|
PREPARE comand4 FROM selec1
|
|
DECLARE busca1 CURSOR FOR comand4
|
|
LET idx=1
|
|
FOREACH busca1 INTO arr_recibo[idx].tipo,arr_recibo[idx].orden_no,arr_recibo[idx].aplica_a,
|
|
arr_recibo[idx].valor_pag
|
|
|
|
|
|
LET idx=idx=1
|
|
END FOREACH
|
|
|
|
{ DISPLAY arr_recibo[curr1].aplica_a TO s_recibo[scr_l].aplica_a
|
|
DISPLAY arr_recibo[curr1].orden_no TO s_recibo[scr_l].orden_no
|
|
DISPLAY arr_recibo[curr1].tipo TO s_recibo[scr_l].tipo
|
|
DISPLAY arr_recibo[curr1].valor_pag TO s_recibo[scr_l].valor_pag}
|
|
|
|
INPUT ARRAY arr_recibo WITHOUT DEFAULTS FROM s_recibo.*
|
|
ON KEY (CONTROL-F)
|
|
LET sale_arr = "S"
|
|
EXIT INPUT
|
|
|
|
ON KEY (CONTROL-W)
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
###### Proceso para abrir window en caso de desconocer el numero de orden
|
|
###### perteneciente a la factura que se aplicara el pago.
|
|
CASE
|
|
WHEN INFIELD (aplica_a)
|
|
LET curr = arr_curr()
|
|
CALL busca_aplicacion(recibo.cod_sp,recibo.cod_sp_sec)
|
|
RETURNING arr_recibo[curr].aplica_a,arr_recibo[curr].valor_pen
|
|
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 arr_recibo[curr].valor_pag =
|
|
arr_recibo[curr].valor_pen
|
|
DISPLAY arr_recibo[curr].valor_pag to
|
|
s_recibo[scr_l].valor_pag
|
|
NEXT FIELD valor_pag
|
|
LET verdad = "N"
|
|
CALL repetir1()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END CASE
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
AFTER FIELD orden_no
|
|
IF arr_recibo[curr].orden_no != 999999 THEN #IS NOT NULL THEN
|
|
IF recibo.cod_sp IS NULL THEN
|
|
|
|
##### Chequeando que el numero de orden a digitar exista en la maestra de pago[
|
|
|
|
SELECT UNIQUE a.tipo,a.orden_no,a.cod_sp,a.cod_sp_sec
|
|
INTO p_tipo,p_orden,recibo.cod_sp,recibo.cod_sp_sec
|
|
FROM cptb00001 a
|
|
WHERE a.tipo = arr_recibo[curr].tipo AND
|
|
a.orden_no = arr_recibo[curr].orden_no
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
###### Chequeando que el numero de orden exista en la maestra de orden
|
|
|
|
SELECT b.num_oc
|
|
FROM cotb00014 b
|
|
WHERE b.tipo = arr_recibo[curr].tipo AND
|
|
b.num_oc = arr_recibo[curr].orden_no AND
|
|
b.cod_sp = recibo.cod_sp AND
|
|
b.cod_sp_sec = recibo.cod_sp_sec
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
END IF
|
|
ELSE
|
|
IF recibo.tipo_doc = "CP" THEN
|
|
LET arr_recibo[curr].tipo = "99"
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD aplica_a
|
|
LET tipo_doc1 = recibo.tipo_doc
|
|
IF arr_recibo[curr].orden_no IS not NULL AND
|
|
arr_recibo[curr].aplica_a IS NULL THEN
|
|
LET tipo_doc1= "CP"
|
|
END IF
|
|
|
|
IF arr_recibo[curr].orden_no IS not NULL and
|
|
arr_recibo[curr].aplica_a IS not NULL THEN
|
|
|
|
LET numero_msg = 212
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF arr_recibo[curr].aplica_a IS NOT NULL THEN
|
|
IF recibo.cod_sp != 1 THEN
|
|
IF recibo.tipo_doc = "CP" THEN
|
|
IF arr_recibo[curr].orden_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD orden_no
|
|
ELSE
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
|
|
IF arr_recibo[curr].aplica_a IS NOT NULL THEN
|
|
LET verdad = "N"
|
|
CALL repetir1()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF arr_recibo[curr].aplica_a IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
# Controla que la factura pertenezca al suplidor
|
|
|
|
SELECT a.tipo,a.orden_no,a.valor
|
|
INTO arr_recibo[curr].tipo,arr_recibo[curr].orden_no,
|
|
valor_fac
|
|
FROM cptb00001 a
|
|
WHERE (a.cod_sp=recibo.cod_sp AND a.cod_sp_sec=recibo.cod_sp_sec
|
|
AND a.tipo_doc = "FT" AND a.num_doc = arr_recibo[curr].aplica_a)
|
|
AND a.status_t IS NULL
|
|
|
|
IF STATUS = notfound THEN
|
|
LET numero_msg = 126
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
# Busca el valor pendiente de la factura
|
|
|
|
SELECT sum(a.valor*-1) INTO valor_fac1 FROM cptb00001 a
|
|
WHERE a.cod_sp = recibo.cod_sp
|
|
AND a.cod_sp_sec = recibo.cod_sp_sec
|
|
AND a.aplica_a = arr_recibo[curr].aplica_a
|
|
AND a.tipo_doc not matches "*FT*"
|
|
AND a.status_t IS NULL
|
|
|
|
IF valor_fac1 IS NULL THEN
|
|
LET valor_fac1 = 0
|
|
END IF
|
|
|
|
IF valor_fac IS NULL THEN
|
|
LET valor_fac = 0
|
|
END IF
|
|
####### Controla que el documento que digite el usuario no exista como
|
|
####### otro documento que no sea una factura
|
|
|
|
SELECT unique a.num_doc
|
|
FROM cptb00001 a
|
|
WHERE (a.cod_sp = recibo.cod_sp and
|
|
a.cod_sp_sec = recibo.cod_sp_sec and
|
|
a.tipo_doc not in ("FT","CP","CK") and
|
|
a.num_doc = arr_recibo[curr].aplica_a) and
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS != notfound THEN
|
|
LET numero_msg = 234
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
####### Calculando el valor pendiente de la factura
|
|
|
|
LET arr_recibo[curr].valor_pen = valor_fac - valor_fac1
|
|
IF numdoc IS NULL THEN
|
|
LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pen
|
|
END if
|
|
DISPLAY arr_recibo[curr].valor_pag to
|
|
s_recibo[scr_l].valor_pag
|
|
DISPLAY arr_recibo[curr].valor_pen to
|
|
s_recibo[scr_l].valor_pen
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD valor_pag
|
|
IF recibo.tipo_doc = "CP" THEN
|
|
IF arr_recibo[curr].orden_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD orden_no
|
|
END IF
|
|
END IF
|
|
|
|
IF arr_recibo[curr].aplica_a IS NOT NULL AND
|
|
arr_recibo[curr].valor_pen IS NOT NULL THEN
|
|
|
|
LET verdad = "N"
|
|
|
|
CALL repetir1()
|
|
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
|
|
IF arr_recibo[curr].valor_pag IS NULL THEN
|
|
LET arr_recibo[curr].valor_pag = 0
|
|
END IF
|
|
|
|
IF arr_recibo[curr].aplica_a IS not NULL THEN
|
|
IF arr_recibo[curr].valor_pag = 0 THEN
|
|
LET numero_msg = 207
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
|
|
LET valor = 0
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_recibo[idx].valor_pag IS NULL THEN
|
|
LET arr_recibo[idx].valor_pag = 0
|
|
END IF
|
|
LET valor = arr_recibo[idx].valor_pag + valor
|
|
LET remanente = recibo.monto - valor
|
|
DISPLAY BY NAME remanente attribute (bold)
|
|
END FOR
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
IF sale_arr = "S" THEN
|
|
LET opc = "N"
|
|
GOTO volver
|
|
END IF
|
|
|
|
# Sumariza el valor de las facturas para que sean iguales
|
|
LET valor_f = 0
|
|
LET ins_cp = arr_count()
|
|
|
|
FOR idx= 1 to arr_recibo.getLength()
|
|
IF arr_recibo[idx].aplica_a IS NULL and
|
|
arr_recibo[idx].orden_no IS NULL THEN
|
|
LET arr_recibo[idx].valor_pag = 0
|
|
END IF
|
|
|
|
IF arr_recibo[idx].valor_pag IS NULL THEN
|
|
LET arr_recibo[idx].valor_pag = 0
|
|
END IF
|
|
|
|
LET valor_f = arr_recibo[idx].valor_pag + valor_f
|
|
END FOR
|
|
|
|
#------------------------------------------------------------------------
|
|
|
|
END IF
|
|
END IF
|
|
|
|
IF opc = "N" THEN
|
|
GOTO vuelve
|
|
END IF
|
|
|
|
CALL arr_cuenta1.clear()
|
|
|
|
LET arr_cuenta1[1].cod_aux = recibo.cod_sp
|
|
LET arr_cuenta1[1].cod_sec = recibo.cod_sp_sec
|
|
|
|
LABEL vuelve:
|
|
# Captura de la codificacion del cheque para contabilidad
|
|
LABEL arr3:
|
|
|
|
LET sale_arr = "N"
|
|
|
|
LET selec1 =
|
|
" SELECT a.cuenta_no,a.departamento,a.id_auxiliar,a.cod_sec,a.nom_cuenta,a.debito,a.credito ",
|
|
"FROM cgtb00041 a ",
|
|
"WHERE a.numdoc=",numdoc," and status_t is null "
|
|
|
|
PREPARE comand5 FROM selec1
|
|
DECLARE busca3 CURSOR FOR comand5
|
|
LET idx=1
|
|
FOREACH busca3 INTO arr_cuenta1[idx].cuenta_no,arr_cuenta1[idx].departamento,arr_cuenta1[idx].cod_aux,
|
|
arr_cuenta1[idx].cod_sec,arr_cuenta1[idx].nom_cuenta,arr_cuenta1[idx].debito,arr_cuenta1[idx].credito
|
|
|
|
LET idx=idx+1
|
|
END FOREACH
|
|
|
|
|
|
{ DISPLAY arr_cuenta1[arr_curr()].cod_aux TO s_cuenta[scr_line()].cod_aux
|
|
DISPLAY arr_cuenta1[arr_curr()].cod_sec TO s_cuenta[scr_line()].cod_sec
|
|
DISPLAY arr_cuenta1[arr_curr()].credito TO s_cuenta[scr_line()].credito
|
|
DISPLAY arr_cuenta1[arr_curr()].debito TO s_cuenta[scr_line()].debito
|
|
DISPLAY arr_cuenta1[arr_curr()].cuenta_no TO s_cuenta[scr_line()].cuenta_no
|
|
DISPLAY arr_cuenta1[arr_curr()].departamento TO s_cuenta[scr_line()].departamento
|
|
DISPLAY arr_cuenta1[arr_curr()].nom_cuenta TO s_cuenta[scr_line()].nom_cuenta}
|
|
INPUT ARRAY arr_cuenta1 WITHOUT DEFAULTS FROM s_cuenta.*
|
|
|
|
ON KEY (CONTROL-F)
|
|
LET opc = "N"
|
|
LET sale_arr = "S"
|
|
EXIT INPUT
|
|
|
|
ON KEY (CONTROL-P)
|
|
NEXT FIELD cuenta_no
|
|
BEFORE INPUT
|
|
|
|
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
AFTER FIELD cuenta_no
|
|
IF arr_cuenta1[curr].cuenta_no IS not NULL THEN
|
|
SELECT a.descripcion,a.origen,a.depto,a.nivel,a.ref,a.cata
|
|
INTO p_descripcion,p_origen,acept_dpto,p_nivel,p_ref,p_cata
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = arr_cuenta1[curr].cuenta_no and
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
LET arr_cuenta1[curr].nom_cuenta = p_descripcion
|
|
DISPLAY arr_cuenta1[curr].nom_cuenta TO
|
|
s_cuenta[scr_l].nom_cuenta
|
|
|
|
# Controla que si digitan las cuentas 2113,2117,2114 el programa controle
|
|
# que digiten el suplidor
|
|
IF arr_cuenta1[curr].cuenta_no = "2113-01" or
|
|
arr_cuenta1[curr].cuenta_no = "2117" or
|
|
arr_cuenta1[curr].cuenta_no = "2114"
|
|
THEN
|
|
IF recibo.cod_sp_sec IS NULL THEN
|
|
LET numero_msg = 217
|
|
CALL msg(numero_msg)
|
|
LET arr_cuenta1[curr].cuenta_no = NULL
|
|
DISPLAY arr_cuenta1[curr].cuenta_no TO
|
|
s_cuenta[scr_l].cuenta_no
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
|
|
# Controla que la cuenta del banco no sea igual a una cuenta digitada
|
|
# en el arreglo
|
|
LET cuenta_a = arr_cuenta1[curr].cuenta_no clipped
|
|
LET cuenta_b = recibo.cuenta_p clipped
|
|
|
|
IF cuenta_a = cuenta_b THEN
|
|
LET numero_msg = 192
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
#-----------------------------------------------------------------------------
|
|
|
|
IF arr_cuenta1[curr].cuenta_no = "2113-01" or
|
|
arr_cuenta1[curr].cuenta_no = "2117" or
|
|
arr_cuenta1[curr].cuenta_no = "2114" THEN
|
|
FOR idx = 1 TO arr_count()
|
|
CASE
|
|
WHEN arr_cuenta1[curr].cuenta_no = "2113-01"
|
|
IF arr_cuenta1[idx].cuenta_no = "2117" or
|
|
arr_cuenta1[idx].cuenta_no = "2114" THEN
|
|
LET numero_msg = 208
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
EXIT CASE
|
|
WHEN arr_cuenta1[curr].cuenta_no = "2117"
|
|
IF arr_cuenta1[idx].cuenta_no = "2113-01" or
|
|
arr_cuenta1[idx].cuenta_no = "2114" THEN
|
|
LET numero_msg = 208
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
EXIT CASE
|
|
WHEN arr_cuenta1[curr].cuenta_no = "2113-01"
|
|
IF arr_cuenta1[idx].cuenta_no = "2117" or
|
|
arr_cuenta1[idx].cuenta_no = "2114" THEN
|
|
|
|
LET numero_msg = 208
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
EXIT CASE
|
|
END CASE
|
|
END FOR
|
|
END IF
|
|
|
|
IF p_nivel < 3 THEN
|
|
LET numero_msg = 175
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
IF acept_dpto = "S" THEN
|
|
NEXT FIELD departamento
|
|
ELSE
|
|
LET arr_cuenta1[curr].departamento = NULL
|
|
DISPLAY arr_cuenta1[curr].departamento TO
|
|
s_cuenta[scr_l].departamento
|
|
END IF
|
|
IF p_cata = "S" THEN
|
|
NEXT FIELD cod_aux
|
|
ELSE
|
|
LET arr_cuenta1[curr].cod_aux = NULL
|
|
LET arr_cuenta1[curr].cod_sec = NULL
|
|
DISPLAY arr_cuenta1[curr].cod_aux TO s_cuenta[scr_l].cod_aux
|
|
DISPLAY arr_cuenta1[curr].cod_sec TO s_cuenta[scr_l].cod_sec
|
|
IF p_ref = "S" THEN
|
|
NEXT FIELD num_doc
|
|
ELSE
|
|
LET arr_cuenta1[curr].num_doc = NULL
|
|
DISPLAY arr_cuenta1[curr].num_doc TO s_cuenta[scr_l].num_doc
|
|
END IF
|
|
NEXT FIELD debito
|
|
END IF
|
|
|
|
END IF
|
|
|
|
AFTER FIELD departamento
|
|
IF arr_cuenta1[curr].cuenta_no IS not NULL THEN
|
|
IF acept_dpto = "S" THEN
|
|
IF arr_cuenta1[curr].departamento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
SELECT a.nom_dpto INTO nombre_dpto FROM adtb00001 a
|
|
WHERE a.departamento = arr_cuenta1[curr].departamento and
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
DISPLAY BY NAME nombre_dpto ATTRIBUTE(blue)
|
|
|
|
IF p_cata = "S" THEN
|
|
LET arr_cuenta1[curr].cod_aux=recibo.cod_sp
|
|
LET arr_cuenta1[curr].cod_sec=recibo.cod_sp_sec
|
|
LET nombre_cata=recibo.nom_sup
|
|
DISPLAY arr_cuenta1[curr].cod_aux TO s_cuenta[scr_l].cod_aux
|
|
DISPLAY arr_cuenta1[curr].cod_sec TO s_cuenta[scr_l].cod_sec
|
|
DISPLAY BY NAME nombre_cata
|
|
NEXT FIELD cod_aux
|
|
ELSE
|
|
IF p_ref = "S" THEN
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
END IF
|
|
ELSE
|
|
LET arr_cuenta1[curr].departamento = NULL
|
|
DISPLAY arr_cuenta1[curr].departamento TO
|
|
s_cuenta[scr_l].departamento
|
|
|
|
IF p_cata = "S" THEN
|
|
NEXT FIELD cod_aux
|
|
ELSE
|
|
IF p_ref = "S" THEN
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
NEXT FIELD debito
|
|
|
|
BEFORE FIELD cod_aux
|
|
IF p_cata != "S" THEN
|
|
LET arr_cuenta1[curr].cod_aux = NULL
|
|
LET arr_cuenta1[curr].cod_sec = NULL
|
|
DISPLAY arr_cuenta1[curr].cod_aux TO s_cuenta[scr_l].cod_aux
|
|
DISPLAY arr_cuenta1[curr].cod_sec TO s_cuenta[scr_l].cod_sec
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
AFTER FIELD cod_aux
|
|
IF arr_cuenta1[curr].cuenta_no IS not NULL THEN
|
|
IF p_cata = "S" THEN
|
|
IF arr_cuenta1[curr].cod_aux IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_aux
|
|
END IF
|
|
ELSE
|
|
LET arr_cuenta1[curr].cod_aux = NULL
|
|
LET arr_cuenta1[curr].cod_sec = NULL
|
|
DISPLAY arr_cuenta1[curr].cod_aux TO s_cuenta[scr_l].cod_aux
|
|
DISPLAY arr_cuenta1[curr].cod_sec TO s_cuenta[scr_l].cod_sec
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD cod_sec
|
|
IF arr_cuenta1[curr].cuenta_no IS not NULL THEN
|
|
IF p_cata = "S" THEN
|
|
IF arr_cuenta1[curr].cod_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_aux
|
|
END IF
|
|
|
|
IF arr_cuenta1[curr].cod_aux != 1 THEN
|
|
SELECT a.nom_sp INTO nombre_cata FROM cotb00001 a
|
|
WHERE a.cod_sp = arr_cuenta1[curr].cod_aux AND
|
|
a.cod_sp_sec = arr_cuenta1[curr].cod_sec
|
|
|
|
IF STATUS = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_aux
|
|
END IF
|
|
DISPLAY BY NAME nombre_cata ATTRIBUTE(blue)
|
|
END IF
|
|
|
|
IF arr_cuenta1[curr].cod_aux = 1 THEN
|
|
SELECT nom1_emp,apell1_emp,departamento,nomina
|
|
INTO nombre_cata
|
|
FROM adtb00003
|
|
WHERE num_emp = arr_cuenta1[curr].cod_sec
|
|
|
|
IF STATUS = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_aux
|
|
END IF
|
|
DISPLAY BY NAME nombre_cata
|
|
IF p_ref = "S" THEN
|
|
NEXT FIELD num_doc
|
|
ELSE
|
|
LET arr_cuenta1[curr].num_doc = NULL
|
|
DISPLAY arr_cuenta1[curr].num_doc TO
|
|
s_cuenta[scr_l].num_doc
|
|
NEXT FIELD debito
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
BEFORE FIELD num_doc
|
|
IF p_ref != "S" THEN
|
|
NEXT FIELD debito
|
|
END IF
|
|
|
|
AFTER FIELD num_doc
|
|
IF arr_cuenta1[curr].cuenta_no IS not NULL THEN
|
|
IF p_ref = "S" THEN
|
|
IF arr_cuenta1[curr].num_doc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
ELSE
|
|
LET arr_cuenta1[curr].num_doc = NULL
|
|
DISPLAY arr_cuenta1[curr].num_doc TO
|
|
s_cuenta[scr_l].num_doc
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD debito
|
|
|
|
IF arr_cuenta1[curr].debito IS not NULL or
|
|
arr_cuenta1[curr].debito != 0 THEN
|
|
|
|
IF arr_cuenta1[curr].debito != 0 THEN
|
|
|
|
IF arr_cuenta1[curr].cuenta_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
AFTER ROW
|
|
IF arr_cuenta1[curr].cuenta_no IS not NULL THEN
|
|
IF arr_cuenta1[curr].debito = 0 and
|
|
arr_cuenta1[curr].credito = 0 THEN
|
|
LET numero_msg = 207
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
IF valor_f IS NULL THEN
|
|
LET valor_f = 0
|
|
END IF
|
|
IF arr_cuenta1[curr].debito IS not NULL THEN
|
|
IF arr_cuenta1[curr].cuenta_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
IF arr_cuenta1[curr].credito IS not NULL THEN
|
|
IF arr_cuenta1[curr].cuenta_no IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
# Controla que las facturas digitadas en el arreglo de cuentas por pagar
|
|
# sumen el mismo monto que las cuentas digitadas en contabilidad
|
|
IF recibo.cod_sp_sec IS not NULL THEN
|
|
IF opcion = "S" THEN
|
|
LET valor_cxp = 0
|
|
LET chequea = "N"
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_cuenta1[idx].cuenta_no IS not NULL THEN
|
|
IF arr_cuenta1[idx].cuenta_no = "2114" or
|
|
arr_cuenta1[idx].cuenta_no = "2117" or
|
|
arr_cuenta1[idx].cuenta_no = "2113-01" THEN
|
|
LET chequea = "S"
|
|
LET valor_cxp = valor_cxp + arr_cuenta1[idx].debito
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
DISPLAY "valor f",valor_f
|
|
DISPLAY "valor csp",valor_cxp
|
|
IF chequea = "S" THEN
|
|
IF valor_f != valor_cxp THEN
|
|
LET numero_msg = 206
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD debito
|
|
END IF
|
|
END IF
|
|
{
|
|
# Controla las cuentas por pagar si se digito una cuenta perteneciente
|
|
# a las cuentas por pagar y no se le dice al programa que no afecta
|
|
# las cuentas por pagar
|
|
LET ctrl_cxp = "N"
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_cuenta1[idx].cuenta_no IS not NULL THEN
|
|
IF opcion = "S" THEN
|
|
IF arr_cuenta1[idx].cuenta_no = "2113-01" THEN
|
|
LET ctrl_cxp = "S"
|
|
END IF
|
|
IF arr_cuenta1[idx].cuenta_no = "2117" THEN
|
|
LET ctrl_cxp = "S"
|
|
END IF
|
|
IF arr_cuenta1[idx].cuenta_no = "2114" THEN
|
|
LET ctrl_cxp = "S"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
IF ctrl_cxp = "N" THEN
|
|
LET numero_msg = 210
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
}
|
|
END IF
|
|
# Controla las cuentas por cobrar si se digito una cuenta perteneciente
|
|
# a las cuentas por cobrar y no se le dice al programa que no afecta
|
|
# las cuentas por cobrar
|
|
LET ctrl_cxp = "N"
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_cuenta1[idx].cuenta_no IS not NULL THEN
|
|
IF opcion IS NULL OR opcion = "N" THEN
|
|
IF arr_cuenta1[idx].cuenta_no = "2113-01" or
|
|
arr_cuenta1[idx].cuenta_no = "2117" or
|
|
arr_cuenta1[idx].cuenta_no = "2114" THEN
|
|
LET ctrl_cxp = "S"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
IF ctrl_cxp = "S" THEN
|
|
LET numero_msg = 209
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
|
|
LET tiene_cta = "N"
|
|
FOR idx = 1 TO arr_cuenta1.getLength()
|
|
IF arr_cuenta1[idx].cuenta_no IS not NULL THEN
|
|
LET tiene_cta = "S"
|
|
END IF
|
|
END FOR
|
|
IF tiene_cta = "N" THEN
|
|
LET numero_msg = 84
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
|
|
LET monto = 0
|
|
LET valor = 0
|
|
|
|
FOR idx = 1 TO arr_cuenta1.getLength()
|
|
IF arr_cuenta1[idx].debito IS NULL THEN
|
|
LET arr_cuenta1[idx].debito = 0
|
|
END IF
|
|
|
|
IF arr_cuenta1[idx].credito IS NULL THEN
|
|
LET arr_cuenta1[idx].credito = 0
|
|
END IF
|
|
|
|
LET valor = valor + arr_cuenta1[idx].debito
|
|
LET monto = arr_cuenta1[idx].credito + monto
|
|
END FOR
|
|
DISPLAY "valor",valor
|
|
DISPLAY "monto",monto
|
|
LET monto = valor - monto
|
|
LET monto=monto*(-1)
|
|
DISPLAY "monto",monto
|
|
DISPLAY "monto1",recibo.monto
|
|
IF monto != recibo.monto THEN
|
|
LET numero_msg = 178
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD debito
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
IF sale_arr = "S" THEN
|
|
GOTO arr2
|
|
|
|
END IF
|
|
|
|
|
|
|
|
PROMPT "Toda la Informacion Esta Correcta (S/N) ?" FOR char opc
|
|
LET opc = UPSHIFT(opc)
|
|
LET limpia = "N"
|
|
LET opc1 = "N"
|
|
IF opc = "S" THEN
|
|
LET limpia = "S"
|
|
# chequea que el archivo de impresion del cheque este creado
|
|
|
|
#PROMPT "Desea Imprimir el Cheque Ahora (S/N) ?" FOR char opc1
|
|
#LET opc1 = UPSHIFT(opc1)
|
|
LET opc1 = "S"
|
|
SELECT a.cheque_no,a.formato INTO numero,formato FROM cgtb00012 a
|
|
WHERE a.cuenta_no = recibo.cuenta_p AND a.tipo_doc = 'CK'
|
|
|
|
LET numero = numero + 1
|
|
LET recibo.numero = numero
|
|
DISPLAY BY NAME recibo.numero
|
|
|
|
|
|
IF formato = "FORMATO1" THEN
|
|
START REPORT cheque TO archivo
|
|
END IF
|
|
|
|
IF formato = "FORMATO2" THEN
|
|
START REPORT cheque2 TO archivo
|
|
END IF
|
|
|
|
#WHENEVER ERROR CONTINUE
|
|
BEGIN WORK
|
|
# Actualizacion de las tablas de cuentas por pagar y contabilidad general
|
|
IF recibo.cod_sp > 1 THEN
|
|
IF opcion = "S" THEN
|
|
LET opcion = NULL
|
|
LET numero1 = recibo.numero
|
|
FOR idx = 1 to ins_cp
|
|
IF arr_recibo[idx].valor_pag <> 0 and
|
|
arr_recibo[idx].valor_pag IS not NULL THEN
|
|
|
|
##### Proceso para insertar valores en cuentas por pagar
|
|
IF arr_recibo[idx].valor_pag > 0 THEN
|
|
LET arr_recibo[idx].valor_pag =
|
|
arr_recibo[idx].valor_pag * -1
|
|
END IF
|
|
|
|
IF arr_recibo[idx].aplica_a IS NOT NULL THEN
|
|
|
|
INSERT INTO cptb00001
|
|
(tipo_doc,num_doc,cod_sp,cod_sp_sec,fecha_orig,fecha_proc,orden_no,tipo,aplica_a,
|
|
cta_ctble,valor,detalle,us_crea,fech_crea,bienes,servicios)
|
|
VALUES (tipo_doc1,recibo.numero,recibo.cod_sp,
|
|
recibo.cod_sp_sec,recibo.fecha,recibo.fecha,
|
|
arr_recibo[idx].orden_no,arr_recibo[idx].tipo,
|
|
arr_recibo[idx].aplica_a,recibo.cuenta_p,
|
|
arr_recibo[idx].valor_pag,detalle_1,usuarios,
|
|
getdate(),0,0)
|
|
IF STATUS < 0 THEN
|
|
ERROR "NO FUE POSIBLE INSERTAR EN LA TABLA CPTB00001"
|
|
EXIT FOR
|
|
ROLLBACK WORK
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
END IF
|
|
END IF
|
|
|
|
# Actualizacion de la tabla datos generales del cheque
|
|
INSERT INTO cgtb00005(cuenta_no,cheque_no,fecha,portador,tasa,monto,status_impresion,us_crea,fech_crea,tipo_Doc,solicitud) values
|
|
(recibo.cuenta_p,recibo.numero,recibo.fecha,
|
|
recibo.nom_sup,recibo.tasa,recibo.monto,opc1,
|
|
usuarios,getdate(),recibo.tipo_doc,numdoc)
|
|
UPDATE cgtb00040
|
|
SET usada="S"
|
|
WHERE @numdoc=numdoc
|
|
|
|
IF STATUS < 0 THEN
|
|
ERROR "NO FUE POSIBLE INSERTAR EN LA TABLA CGTB00005"
|
|
ROLLBACK WORK
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
# Actualizacion de la tabla control de los cheques
|
|
UPDATE cgtb00012 set cheque_no = recibo.numero
|
|
WHERE cuenta_no = recibo.cuenta_p AND tipo_Doc = recibo.tipo_doc
|
|
IF STATUS < 0 THEN
|
|
ERROR "NO FUE POSIBLE INSERTAR EN LA TABLA CGTB00012"
|
|
ROLLBACK WORK
|
|
END IF
|
|
|
|
# Actualizacion de la tabla transacciones de contabildad general
|
|
LET referencia = "CK.",recibo.numero using "&&&&&&"
|
|
FOR idx = 1 TO arr_count()
|
|
IF arr_cuenta1[idx].cuenta_no IS not NULL THEN
|
|
IF arr_recibo[idx].orden_no IS not NULL THEN
|
|
LET refe[idx] = arr_recibo[idx].orden_no
|
|
END IF
|
|
|
|
IF arr_recibo[idx].orden_no IS not NULL THEN
|
|
LET refe[idx] = arr_recibo[idx].tipo using "&&","-",
|
|
arr_recibo[idx].aplica_a using "&&&&&&"
|
|
END IF
|
|
|
|
IF arr_recibo[idx].aplica_a IS not NULL THEN
|
|
LET refe[idx] = arr_recibo[idx].aplica_a
|
|
END IF
|
|
|
|
|
|
INSERT INTO cgtb00004
|
|
(fecha,tipo,ref,cuenta_no,departamento,num_doc,cod_aux,cod_sec,detalles,detalle_1,
|
|
detalle_2,debito,credito,us_crea,fech_crea)
|
|
|
|
values (recibo.fecha,2,referencia,
|
|
arr_cuenta1[idx].cuenta_no,
|
|
arr_cuenta1[idx].departamento,
|
|
arr_cuenta1[idx].num_doc,
|
|
arr_cuenta1[idx].cod_aux,
|
|
arr_cuenta1[idx].cod_sec,recibo.cuenta_p
|
|
,detalle_1,detalle_2,
|
|
arr_cuenta1[idx].debito,
|
|
arr_cuenta1[idx].credito,
|
|
usuarios,getdate())
|
|
IF STATUS < 0 THEN
|
|
ERROR "NO FUE POSIBLE INSERTAR EN LA TABLA CGTB00004"
|
|
ROLLBACK WORK
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
# Impresion del cheque de pago
|
|
IF formato = "FORMATO1" THEN
|
|
OUTPUT TO REPORT cheque(recibo.*,arr_cuenta1[idx].*)
|
|
END IF
|
|
|
|
IF formato = "FORMATO2" THEN
|
|
OUTPUT TO REPORT cheque2(recibo.*,arr_cuenta1[idx].*)
|
|
END IF
|
|
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
# Inserta los registros necesarios para la tabla de tesoreria
|
|
INSERT INTO tetb00006 values (recibo.numero,recibo.cuenta_p,
|
|
recibo.codigo,NULL,usuarios,getdate(),NULL,NULL)
|
|
|
|
IF STATUS < 0 THEN
|
|
ERROR "NO FUE POSIBLE INSERTAR EN LA TABLA TETB00006"
|
|
ROLLBACK WORK
|
|
EXIT PROGRAM
|
|
END IF
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
|
|
INSERT INTO cgtb00004
|
|
(fecha,tipo,ref,cuenta_no,detalles,detalle_1,
|
|
detalle_2,debito,credito,us_crea,fech_crea)
|
|
|
|
values (recibo.fecha,2,referencia,
|
|
recibo.cuenta_p,recibo.cuenta_p,
|
|
detalle_1,detalle_2,0,recibo.monto,
|
|
usuarios,getdate())
|
|
|
|
IF STATUS < 0 THEN
|
|
ERROR "NO FUE POSIBLE INSERTAR EL BANCO EN LA TABLA CGTB00004"
|
|
ROLLBACK WORK
|
|
EXIT PROGRAM
|
|
END IF
|
|
COMMIT WORK
|
|
|
|
SELECT descripcion INTO p_descripcion FROM cgtb00001
|
|
WHERE cuenta_no = recibo.cuenta_p
|
|
|
|
LET arr_cuenta1[1].cuenta_no = recibo.cuenta_p
|
|
LET arr_cuenta1[1].nom_cuenta = p_descripcion
|
|
LET arr_cuenta1[1].debito = 0
|
|
LET arr_cuenta1[1].num_doc = NULL
|
|
LET arr_cuenta1[1].departamento = NULL
|
|
LET arr_cuenta1[1].cod_aux = NULL
|
|
LET arr_cuenta1[1].cod_sec = NULL
|
|
LET arr_cuenta1[1].credito = recibo.monto
|
|
IF formato = "FORMATO1" THEN
|
|
OUTPUT TO REPORT cheque(recibo.*,arr_cuenta1[1].*)
|
|
|
|
FINISH REPORT cheque
|
|
END IF
|
|
IF formato = "FORMATO2" THEN
|
|
OUTPUT TO REPORT cheque2(recibo.*,arr_cuenta1[1].*)
|
|
|
|
FINISH REPORT cheque2
|
|
END IF
|
|
|
|
RUN imprime
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
|
|
CALL arr_cuenta1.clear()
|
|
|
|
END IF
|
|
IF opc = "N" THEN
|
|
GOTO volver
|
|
END IF
|
|
END FUNCTION
|
|
REPORT cheque(x,z)
|
|
DEFINE z RECORD
|
|
cuenta_no LIKE cgtb00004.cuenta_no,
|
|
departamento LIKE cgtb00004.departamento,
|
|
cod_aux LIKE cgtb00004.cod_aux,
|
|
cod_sec LIKE cgtb00004.cod_sec,
|
|
num_doc LIKE cgtb00004.num_doc,
|
|
nom_cuenta CHAR(30),
|
|
debito LIKE cgtb00004.debito,
|
|
credito LIKE cgtb00004.credito
|
|
END RECORD
|
|
|
|
DEFINE x RECORD
|
|
tipo_doc LIKE cptb00001.tipo_doc,
|
|
cuenta_p LIKE cgtb00004.cuenta_no,
|
|
numero INTEGER,
|
|
cod_sp LIKE cptb00001.cod_sp,
|
|
cod_sp_sec LIKE cptb00001.cod_sp_sec,
|
|
nom_sup CHAR(60),
|
|
fecha LIKE cgtb00004.fecha,
|
|
tasa LIKE cgtb00005.tasa,
|
|
monto DECIMAL(12,2),
|
|
codigo LIKE tetb00003.codigo
|
|
END RECORD,
|
|
ano CHAR(4)
|
|
DEFINE nombre_mes CHAR(10)
|
|
DEFINE orden,fact CHAR(30)
|
|
DEFINE doble_on,negrillas_on,negrillas_off,italica,italica_of,doce_on,doble_of,
|
|
doce_of,normal,un_octavo CHAR(2)
|
|
DEFINE in_mes INTEGER
|
|
DEFINE comprime_on,comprime_of CHAR(1)
|
|
DEFINE
|
|
lineas CHAR(5)
|
|
DEFINE valor_mask CHAR(13),
|
|
l SMALLINT
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 4
|
|
PAGE LENGTH 51
|
|
BOTTOM MARGIN 0
|
|
|
|
ORDER BY x.numero
|
|
|
|
FORMAT
|
|
|
|
BEFORE GROUP OF x.numero
|
|
LET un_octavo = ASCII 27, ASCII 48
|
|
LET doble_on = ASCII 14
|
|
LET doble_of = ASCII 20
|
|
LET doce_on = ASCII 27, ASCII 77
|
|
LET doce_of = ASCII 27, ASCII 80
|
|
LET italica = ASCII 27, ASCII 52
|
|
LET italica_of = ASCII 27, ASCII 53
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET comprime_on = ASCII 15
|
|
LET comprime_of = ASCII 18
|
|
LET normal = ASCII 27, ASCII 80
|
|
|
|
LET in_mes = month(recibo.fecha)
|
|
|
|
CALL busca_mes()
|
|
LET nombre_mes = meses[in_mes]
|
|
|
|
SKIP 4 LINE
|
|
|
|
|
|
LET ano = year(recibo.fecha)
|
|
PRINT COLUMN 61, day(recibo.fecha) using "&&",
|
|
COLUMN 65, MONTH(recibo.fecha) using "&&",
|
|
COLUMN 69, ano
|
|
|
|
SKIP 2 LINE
|
|
# PRINT un_octavo
|
|
PRINT COLUMN 17, recibo.nom_sup clipped,
|
|
COLUMN 60, recibo.monto using "***,***,***.##"
|
|
|
|
#CALL convierte()
|
|
LET l = (80 - LENGTH(valor_letras CLIPPED)) / 2
|
|
|
|
PRINT comprime_on
|
|
PRINT COLUMN l, "*",valor_letras clipped
|
|
PRINT comprime_of
|
|
|
|
LET valor_mask = recibo.monto using "<<,<<<,<<<.##" clipped
|
|
|
|
SKIP 4 LINE
|
|
|
|
#PRINT COLUMN 3, negrillas_on,comprime_on,
|
|
# " Mmotech",doble_on,comprime_of,"RD$",
|
|
# valor_mask clipped,
|
|
# " Ctvos",negrillas_off
|
|
|
|
|
|
PRINT doce_on
|
|
#PRINT COLUMN 8 , datos_ck.nombre_bco,doce_of,negrillas_off,comprime_on
|
|
#PRINT COLUMN 11, datos_ck.direccion
|
|
#PRINT COLUMN 11, "Cuenta No. ",datos_ck.cuenta_bank
|
|
PRINT comprime_of
|
|
SKIP 9 LINES
|
|
|
|
PRINT COLUMN 6, detalle_1," ",valor_1 using "(((,(((,((#.##)"
|
|
PRINT COLUMN 6, detalle_2," ",valor_2 using "(((,(((,((#.##)"
|
|
PRINT COLUMN 6, detalle_3," ",valor_3 using "(((,(((,((#.##)"
|
|
# PRINT COLUMN 6, detalle_4," ",valor_4 using "(((,(((,((#.##)"
|
|
|
|
PRINT COLUMN 6, detalle_5," ",valor_5,
|
|
COLUMN 77, recibo.monto using "#,###,###.##"
|
|
|
|
SKIP 3 LINES
|
|
PRINT comprime_on
|
|
|
|
ON EVERY ROW
|
|
|
|
PRINT COLUMN 6, z.cuenta_no,
|
|
COLUMN 18, z.departamento using "####",
|
|
COLUMN 27, z.cod_aux using "##","-",z.cod_sec using "####",
|
|
COLUMN 37, z.num_doc ,
|
|
COLUMN 50, z.nom_cuenta,
|
|
COLUMN 119, z.debito using "##,###,###.##",
|
|
COLUMN 142, z.credito using "##,###,###.##"
|
|
PAGE TRAILER
|
|
PRINT COLUMN 10, x.codigo using "&&&&"," ",p_descrip
|
|
PRINT COLUMN 1,comprime_of,doble_on,
|
|
COLUMN 1, x.numero USING "&&&&&&"
|
|
PRINT doble_of,normal
|
|
SKIP 8 LINES
|
|
END REPORT
|
|
REPORT cheque2(x,z)
|
|
DEFINE z RECORD
|
|
cuenta_no LIKE cgtb00004.cuenta_no,
|
|
departamento LIKE cgtb00004.departamento,
|
|
cod_aux LIKE cgtb00004.cod_aux,
|
|
cod_sec LIKE cgtb00004.cod_sec,
|
|
num_doc LIKE cgtb00004.num_doc,
|
|
nom_cuenta CHAR(30),
|
|
debito LIKE cgtb00004.debito,
|
|
credito LIKE cgtb00004.credito
|
|
END RECORD
|
|
|
|
DEFINE x RECORD
|
|
tipo_doc LIKE cptb00001.tipo_doc,
|
|
cuenta_p LIKE cgtb00004.cuenta_no,
|
|
numero INTEGER,
|
|
cod_sp LIKE cptb00001.cod_sp,
|
|
cod_sp_sec LIKE cptb00001.cod_sp_sec,
|
|
nom_sup CHAR(60),
|
|
fecha LIKE cgtb00004.fecha,
|
|
tasa LIKE cgtb00005.tasa,
|
|
monto DECIMAL(12,2),
|
|
codigo LIKE tetb00003.codigo
|
|
END RECORD,
|
|
ano CHAR(4)
|
|
DEFINE nombre_mes CHAR(10)
|
|
DEFINE orden,fact CHAR(30)
|
|
DEFINE doble_on,negrillas_on,negrillas_off,italica,italica_of,doce_on,doble_of,
|
|
doce_of,normal,un_octavo CHAR(2)
|
|
DEFINE in_mes INTEGER
|
|
DEFINE comprime_on,comprime_of CHAR(1)
|
|
DEFINE
|
|
lineas CHAR(5)
|
|
DEFINE valor_mask CHAR(13)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 3
|
|
LEFT MARGIN 4
|
|
PAGE LENGTH 43
|
|
BOTTOM MARGIN 0
|
|
|
|
ORDER BY x.numero
|
|
|
|
FORMAT
|
|
|
|
BEFORE GROUP OF x.numero
|
|
LET un_octavo = ASCII 27, ASCII 48
|
|
LET doble_on = ASCII 14
|
|
LET doble_of = ASCII 20
|
|
LET doce_on = ASCII 27, ASCII 77
|
|
LET doce_of = ASCII 27, ASCII 80
|
|
LET italica = ASCII 27, ASCII 52
|
|
LET italica_of = ASCII 27, ASCII 53
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET comprime_on = ASCII 15
|
|
LET comprime_of = ASCII 18
|
|
LET normal = ASCII 27, ASCII 80
|
|
|
|
LET in_mes = month(recibo.fecha)
|
|
|
|
# CALL busca_mes()
|
|
# LET nombre_mes = meses[in_mes]
|
|
|
|
SKIP 1 LINE
|
|
|
|
|
|
LET ano = year(recibo.fecha)
|
|
PRINT COLUMN 63, day(recibo.fecha) using "&&",
|
|
COLUMN 66, MONTH(recibo.fecha) using "&&",
|
|
COLUMN 70, ano
|
|
|
|
SKIP 2 LINE
|
|
# PRINT un_octavo
|
|
PRINT COLUMN 17, recibo.nom_sup clipped,
|
|
COLUMN 60, recibo.monto using "***,***,***.##"
|
|
|
|
|
|
|
|
# CALL convierte()
|
|
LET l = (80 - LENGTH(valor_letras CLIPPED)) / 2
|
|
|
|
PRINT comprime_on
|
|
PRINT COLUMN l, "*",valor_letras clipped
|
|
PRINT comprime_of
|
|
|
|
LET valor_mask = recibo.monto using "<<,<<<,<<<.##" clipped
|
|
|
|
SKIP 2 LINE
|
|
|
|
# PRINT COLUMN 3, negrillas_on,comprime_on,
|
|
# " Mmotech",doble_on,comprime_of,"RD$",
|
|
# valor_mask clipped,
|
|
# " Ctvos",negrillas_off
|
|
|
|
PRINT doce_on
|
|
#PRINT COLUMN 8 , datos_ck.nombre_bco,doce_of,negrillas_off,comprime_on
|
|
#PRINT COLUMN 11, datos_ck.direccion
|
|
#PRINT COLUMN 11, "Cuenta No. ",datos_ck.cuenta_bank
|
|
PRINT comprime_of
|
|
SKIP 9 LINES
|
|
|
|
PRINT COLUMN 6, detalle_1," ",valor_1 using "(((,(((,((#.##)"
|
|
PRINT COLUMN 6, detalle_2," ",valor_2 using "(((,(((,((#.##)"
|
|
PRINT COLUMN 6, detalle_3," ",valor_3 using "(((,(((,((#.##)"
|
|
# PRINT COLUMN 6, detalle_4," ",valor_4 using "(((,(((,((#.##)"
|
|
|
|
PRINT COLUMN 6, detalle_5," ",valor_5,
|
|
COLUMN 77, recibo.monto using "#,###,###.##"
|
|
|
|
SKIP 3 LINES
|
|
PRINT comprime_on
|
|
|
|
ON EVERY ROW
|
|
|
|
PRINT COLUMN 6, z.cuenta_no,
|
|
COLUMN 18, z.departamento using "####",
|
|
COLUMN 27, z.cod_aux using "##","-",z.cod_sec using "####",
|
|
COLUMN 37, z.num_doc ,
|
|
COLUMN 50, z.nom_cuenta,
|
|
COLUMN 119, z.debito using "##,###,###.##",
|
|
COLUMN 142, z.credito using "##,###,###.##"
|
|
ON LAST ROW
|
|
PRINT COLUMN 10, x.codigo using "&&&&"," ",p_descrip
|
|
PRINT COLUMN 1,comprime_of,doble_on,
|
|
COLUMN 1, x.numero USING "&&&&&&"
|
|
PRINT doble_of,normal
|
|
|
|
END REPORT
|
|
{
|
|
FUNCTION busca_mes()
|
|
LET meses[1] = "ENERO"
|
|
LET meses[2] = "FEBRERO"
|
|
LET meses[3] = "MARZO"
|
|
LET meses[4] = "ABRIL"
|
|
LET meses[5] = "MAYO"
|
|
LET meses[6] = "JUNIO"
|
|
LET meses[7] = "JULIO"
|
|
LET meses[8] = "AGOSTO"
|
|
LET meses[9] = "SEPTIEMBRE"
|
|
LET meses[10] = "OCTUBRE"
|
|
LET meses[11] = "NOVIEMBRE"
|
|
LET meses[12] = "DICIEMBRE"
|
|
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 = recibo.monto
|
|
LET cheles = (recibo.monto - 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," PESOS ","CON"," ",
|
|
cheles using "&&", "/100"
|
|
|
|
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION letras()
|
|
|
|
LET unidades1[1] = "UNO"
|
|
LET unidades1[2] = "DOS"
|
|
LET unidades1[3] = "TRES"
|
|
LET unidades1[4] = "CUATRO"
|
|
LET unidades1[5] = "CINCO"
|
|
LET unidades1[6] = "SEIS"
|
|
LET unidades1[7] = "SIETE"
|
|
LET unidades1[8] = "OCHO"
|
|
LET unidades1[9] = "NUEVE"
|
|
LET unidades1[10] = "DIEZ"
|
|
LET unidades1[11] = "ONCE"
|
|
LET unidades1[12] = "DOCE"
|
|
LET unidades1[13] = "TRECE"
|
|
LET unidades1[14] = "CATORCE"
|
|
LET unidades1[15] = "QUINCE"
|
|
LET unidades1[16] = "DIECISEIS"
|
|
LET unidades1[17] = "DIECISIETE"
|
|
LET unidades1[18] = "DIECIOCHO"
|
|
LET unidades1[19] = "DIECINUEVE"
|
|
|
|
|
|
LET decenas[1] = "VEINTE"
|
|
LET decenas[2] = "VEINTE Y UNO"
|
|
LET decenas[3] = "VEINTE Y DOS"
|
|
LET decenas[4] = "VEINTE Y TRES"
|
|
LET decenas[5] = "VEINTE Y CUATRO"
|
|
LET decenas[6] = "VEINTE Y CINCO"
|
|
LET decenas[7] = "VEINTE Y SEIS"
|
|
LET decenas[8] = "VEINTE Y SIETE"
|
|
LET decenas[9] = "VEINTE Y OCHO"
|
|
LET decenas[10] = "VEINTE Y NUEVE"
|
|
LET decenas[11] = "TREINTA"
|
|
LET decenas[12] = "TREINTA Y UNO"
|
|
LET decenas[13] = "TREINTA Y DOS"
|
|
LET decenas[14] = "TREINTA Y TRES"
|
|
LET decenas[15] = "TREINTA Y CUATRO"
|
|
LET decenas[16] = "TREINTA Y CINCO"
|
|
LET decenas[17] = "TREINTA Y SEIS"
|
|
LET decenas[18] = "TREINTA Y SIETE"
|
|
LET decenas[19] = "TREINTA Y OCHO"
|
|
LET decenas[20] = "TREINTA Y NUEVE"
|
|
LET decenas[21] = "CUARENTA"
|
|
LET decenas[22] = "CUARENTA Y UNO"
|
|
LET decenas[23] = "CUARENTA Y DOS"
|
|
LET decenas[24] = "CUARENTA Y TRES"
|
|
LET decenas[25] = "CUARENTA Y CUATRO"
|
|
LET decenas[26] = "CUARENTA Y CINCO"
|
|
LET decenas[27] = "CUARENTA Y SEIS"
|
|
LET decenas[28] = "CUARENTA Y SIETE"
|
|
LET decenas[29] = "CUARENTA Y OCHO"
|
|
LET decenas[30] = "CUARENTA Y NUEVE"
|
|
LET decenas[31] = "CINCUENTA"
|
|
LET decenas[32] = "CINCUENTA Y UNO"
|
|
LET decenas[33] = "CINCUENTA Y DOS"
|
|
LET decenas[34] = "CINCUENTA Y TRES"
|
|
LET decenas[35] = "CINCUENTA Y CUATRO"
|
|
LET decenas[36] = "CINCUENTA Y CINCO"
|
|
LET decenas[37] = "CINCUENTA Y SEIS"
|
|
LET decenas[38] = "CINCUENTA Y SIETE"
|
|
LET decenas[39] = "CINCUENTA Y OCHO"
|
|
LET decenas[40] = "CINCUENTA Y NUEVE"
|
|
LET decenas[41] = "SESENTA"
|
|
LET decenas[42] = "SESENTA Y UNO"
|
|
LET decenas[43] = "SESENTA Y DOS"
|
|
LET decenas[44] = "SESENTA Y TRES"
|
|
LET decenas[45] = "SESENTA Y CUATRO"
|
|
LET decenas[46] = "SESENTA Y CINCO"
|
|
LET decenas[47] = "SESENTA Y SEIS"
|
|
LET decenas[48] = "SESENTA Y SIETE"
|
|
LET decenas[49] = "SESENTA Y OCHO"
|
|
LET decenas[50] = "SESENTA Y NUEVE"
|
|
LET decenas[51] = "SETENTA"
|
|
LET decenas[52] = "SETENTA Y UNO"
|
|
LET decenas[53] = "SETENTA Y DOS"
|
|
LET decenas[54] = "SETENTA Y TRES"
|
|
LET decenas[55] = "SETENTA Y CUATRO"
|
|
LET decenas[56] = "SETENTA Y CINCO"
|
|
LET decenas[57] = "SETENTA Y SEIS"
|
|
LET decenas[58] = "SETENTA Y SIETE"
|
|
LET decenas[59] = "SETENTA Y OCHO"
|
|
LET decenas[60] = "SETENTA Y NUEVE"
|
|
LET decenas[61] = "OCHENTA"
|
|
LET decenas[62] = "OCHENTA Y UNO"
|
|
LET decenas[63] = "OCHENTA Y DOS"
|
|
LET decenas[64] = "OCHENTA Y TRES"
|
|
LET decenas[65] = "OCHENTA Y CUATRO"
|
|
LET decenas[66] = "OCHENTA Y CINCO"
|
|
LET decenas[67] = "OCHENTA Y SEIS"
|
|
LET decenas[68] = "OCHENTA Y SIETE"
|
|
LET decenas[69] = "OCHENTA Y OCHO"
|
|
LET decenas[70] = "OCHENTA Y NUEVE"
|
|
LET decenas[71] = "NOVENTA"
|
|
LET decenas[72] = "NOVENTA Y UNO"
|
|
LET decenas[73] = "NOVENTA Y DOS"
|
|
LET decenas[74] = "NOVENTA Y TRES"
|
|
LET decenas[75] = "NOVENTA Y CUATRO"
|
|
LET decenas[76] = "NOVENTA Y CINCO"
|
|
LET decenas[77] = "NOVENTA Y SEIS"
|
|
LET decenas[78] = "NOVENTA Y SIETE"
|
|
LET decenas[79] = "NOVENTA Y OCHO"
|
|
LET decenas[80] = "NOVENTA Y NUEVE"
|
|
LET decenas[81] = "CIEN"
|
|
|
|
LET centenas[1] = "CIENTO"
|
|
LET centenas[2] = "DOCIENTOS"
|
|
LET centenas[3] = "TRESCIENTOS"
|
|
LET centenas[4] = "CUATROCIENTOS"
|
|
LET centenas[5] = "QUINIENTOS"
|
|
LET centenas[6] = "SEISCIENTOS"
|
|
LET centenas[7] = "SETECIENTOS"
|
|
LET centenas[8] = "OCHOCIENTOS"
|
|
LET centenas[9] = "NOVECIENTOS"
|
|
|
|
END FUNCTION
|
|
|
|
|
|
|
|
FUNCTION detallado()
|
|
OPEN WINDOW wind10 AT 13,5 WITH FORM "cgfmwd007" ATTRIBUTE (BORDER,
|
|
FORM LINE FIRST + 1,COMMENT LINE LAST)
|
|
|
|
IF limpia = "S" THEN
|
|
LET detalle_1 = NULL
|
|
LET detalle_2 = NULL
|
|
LET detalle_3 = NULL
|
|
LET detalle_4 = NULL
|
|
LET detalle_5 = NULL
|
|
LET valor_1 = NULL
|
|
LET valor_2 = NULL
|
|
LET valor_3 = NULL
|
|
LET valor_4 = NULL
|
|
LET valor_5 = NULL
|
|
END IF
|
|
|
|
INPUT BY NAME detalle_1,valor_1,detalle_2,valor_2,detalle_3,valor_3,
|
|
detalle_4,valor_4,detalle_5,valor_5 WITHOUT DEFAULTS
|
|
|
|
AFTER INPUT
|
|
LET detalle_1 = UPSHIFT(detalle_1)
|
|
LET detalle_2 = UPSHIFT(detalle_2)
|
|
LET detalle_3 = UPSHIFT(detalle_3)
|
|
LET detalle_4 = UPSHIFT(detalle_4)
|
|
LET detalle_5 = UPSHIFT(detalle_5)
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET detalle_1 = NULL
|
|
LET detalle_2 = NULL
|
|
LET detalle_3 = NULL
|
|
LET detalle_4 = NULL
|
|
LET detalle_5 = NULL
|
|
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
CLOSE WINDOW wind10
|
|
END FUNCTION
|