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

1389 lines
48 KiB
Plaintext

{
-----------------------------------------------------------------------------
PROGRAMA : CCPRMT003
OBJETIVO : Generacion de Notas de Credito Por Avance a Orden.
REALIZADO POR : Tadeo A. Ferreras
FECHA : Enero 26, 1993
-----------------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
DEFINE decenas DYNAMIC ARRAY OF CHAR(20)
DEFINE centenas DYNAMIC ARRAY OF CHAR(20)
DEFINE unidades1 DYNAMIC ARRAY OF CHAR(20),
soporteVentas VARCHAR(100),
exito BOOLEAN,
descripcion_estado VARCHAR(100)
DEFINE otro_num,recibo_cons,recibo_Ext,psecvend1 INT,
xdireccion,xnombre_proyecto,xnombre_provincia CHAR(60),
psimbolo CHAR(10),
pmoneda CHAR(20),
ch_itbis char(2),
ppaga_itbis CHAR(1),
fecha_vence DATE
DEFINE valor_orig,montos_avance,monto_efectivo,monto_ck,monto_cr DECIMAL(12,2),
valor_letras CHAR(240)
DEFINE nombre1,nombre2,apell CHAR(15)
DEFINE nombre_ven,nombre_cli CHAR(30)
DEFINE tipo_p CHAR(1)
DEFINE recibo_nc RECORD
num_doc INTEGER,
num_orden INTEGER,
tipo_cliente INTEGER,
sec_cliente INTEGER,
cod_emp_sec INTEGER,
fecha DATE,
avance DECIMAL(12,2)
END RECORD,
pcondpago SMALLINT,
psecvend,xnum_req,xnum_oc INT,
valor_cotizado DEC(12,2),
xfecha_oc DATE,
codigodgii VARCHAR(10),
comprobante VARCHAR(100)
####### Funcion para agregar un recibo de pago Por Avance
MAIN
DEFER INTERRUPT
CALL STARTLOG("ccprmt03.log")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "marmotech" AS "IFMX" USER usuarios USING clave
CONNECT to "decomarmol" AS "MSSQL" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
SELECT unique a.sucid,a.sucnombre INTO codigo_sucursal,nombre_sucursal
FROM sucursales a,seg0001 b
WHERE b.usuario = usuarios AND b.sucid = a.sucid
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO TIENE LOCALIDAD ASIGNADA, CONTACTE ADMINISTRADOR SISTEMAS","STOP")
EXIT PROGRAM
END IF
CALL ccprmt003()
END MAIN
FUNCTION ccprmt003()
OPTIONS
FORM LINE 8,
ERROR LINE 24,
COMMENT LINE 22,
PROMPT LINE 23
#CALL pantalla()
OPEN FORM ccfmmt003 FROM "ccfmmt003"
DISPLAY FORM ccfmmt003
DISPLAY "ccprmt003" AT 4,3
DISPLAY "Generacion Nota de Credito Por Avance Orden" AT 6,18
DISPLAY nombre_sucursal TO localidad
MENU
ON ACTION nuevo
LET tipo_p = "A"
INITIALIZE recibo_nc.* TO NULL
LET recibo_nc.fecha = today
CALL ccpcad003()
ON ACTION buscar
LET tipo_p = "C"
INITIALIZE recibo_nc.* TO NULL
SET CONNECTION "IFMX"
CALL ccpcmf003()
ON ACTION salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION ccpcad003()
DEFINE hoy DATE
LET hoy = null
LABEL volver:
INPUT BY NAME recibo_nc.*, monto_efectivo,monto_ck,monto_cr,
recibo.comentario,ch_itbis WITHOUT DEFAULTS
## AQUI SE PREPARA PARA LA CAPTURA DE INFORMACION
BEFORE INPUT
LET ch_itbis = 'SI'
DISPLAY BY NAME ch_itbis
LET monto_efectivo=0
LET monto_ck=0
LET monto_cr=0
NEXT FIELD Num_orden
SELECT unique a.sucid,a.sucnombre INTO codigo_sucursal,nombre_sucursal
FROM sucursales a,seg0001 b
WHERE b.usuario = usuarios AND b.sucid = a.sucid
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","USTED NO TIENE LOCALIDAD ASIGNADA, CONTACTE ADMINISTRADOR SISTEMAS","STOP")
EXIT PROGRAM
END IF
AFTER FIELD cod_emp_Sec
SELECT a.nom1_emp||" "||a.apell1_Emp INTO nombre_ven
FROM adtb00003 a
WHERE a.num_emp =recibo_nc.cod_Emp_sec
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD cod_emp_sec
END IF
DISPLAY BY NAME nombre_ven
AFTER FIELD num_orden
IF recibo_nc.num_orden IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_orden
END IF
LET nombre_cli = NULL
{SELECT UNIQUE a.tipo_cliente,a.sec_cliente,b.nombre,CONVERT(char(10),a.fecha_oc,103)
INTO recibo_nc.tipo_cliente,recibo_nc.sec_cliente,nombre_cli,
recibo_nc.fecha
FROM prtb00012 a, b
WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente
AND a.num_oc = recibo_nc.num_orden
}
IF tipo_p = 'A' THEN
LET xnombre_proyecto = NULL
LET xnombre_provincia = NULL
LET xdireccion = NULL
LET nombre_cli = NULL
LET recibo_nc.avance = 0
LET psecvend1 = NULL
SET CONNECTION "MSSQL"
SELECT UNIQUE a.tipo_cliente,a.sec_cliente,b.nombre,
a.nombre_proyecto,c.nombre_provincia,
a.direccion_cliente,a.cond_pago,a.sec_vend,a.total_neto,
a.codigo_dgii,ISNULL(a.sec_vend_aux,0)
INTO recibo_nc.tipo_cliente,recibo_nc.sec_cliente,nombre_cli,
xnombre_proyecto,xnombre_provincia,xdireccion,pcondpago,psecvend,
valor_cotizado,codigodgii,psecvend1
FROM vetb00050 a, vetb00004 b,vetb00020 c
WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente
AND a.cotizacion_no = recibo_nc.num_orden AND
a.cod_provincia = c.cod_provincia
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_orden
END IF
IF psecvend1 = 0 THEN
LET recibo_nc.cod_emp_sec = psecvend
ELSE
LET recibo_nc.cod_emp_sec = psecvend1
END IF
# BUSCA DESCRIPCION COMPROBANTE
SELECT a.tipo_ncf,a.fecha_vencimiento
INTO comprobante,fecha_vence
FROM vetb00071 a WHERE a.codigo_dgii = codigodgii AND a.disponible = 'S'
DISPLAY BY NAME valor_cotizado,comprobante,codigodgii
CALL procesaCliente(recibo_nc.tipo_cliente) RETURNING verdad
SELECT a.paga_itbis INTO ppaga_itbis
FROM vetb00060 a WHERE a.tipo_cliente = recibo_nc.tipo_cliente
IF ppaga_itbis = 'N' THEN
LET ch_itbis = 'NO'
ELSE
LET ch_itbis = "SI"
END IF
# LET monto_cr=valor_cotizado
DISPLAY BY NAME monto_cr
#SUMA AVANCES
LET montos_avance = 0
SELECT SUM(a.valor) INTO montos_avance FROM cctb00001 a
WHERE a.documento_ref = recibo_nc.num_orden AND
a.tipo_Doc ='AV' AND a.num_doc = a.aplica_a AND
a.tipo_cliente = recibo_nc.tipo_cliente AND a.sec_cliente = recibo_nc.sec_cliente AND
a.status_t IS NULL
DISPLAY BY NAME montos_avance
END IF
IF tipo_p = 'C' THEN
SELECT UNIQUE a.tipo_cliente,a.sec_cliente,b.nombre
INTO recibo_nc.tipo_cliente,recibo_nc.sec_cliente,nombre_cli
FROM vetb00050 a, vetb00004 b
WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente
AND a.cotizacion_no = recibo_nc.num_orden
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_orden
END IF
CALL procesaCliente(recibo_nc.tipo_cliente) RETURNING verdad
END IF
# SELECT UNIQUE a.sec_vend INTO recibo_nc.cod_emp_sec FROM vetb00028 a
# WHERE a.tipo_cliente = recibo_nc.tipo_cliente AND
# a.sec_cliente = recibo_nc.sec_cliente
LET nombre_ven = NULL
LET nombre1 = NULL
LET nombre2 = NULL
LET apell = NULL
SELECT UNIQUE a.nom1_emp,a.nom2_emp,a.apell1_emp
INTO nombre1,nombre2,apell FROM adtb00003 a
WHERE a.num_emp = recibo_nc.cod_emp_sec
LET nombre_ven = nombre1 CLIPPED," ",nombre2 CLIPPED," ",apell CLIPPED
DISPLAY BY NAME recibo_nc.tipo_cliente,recibo_nc.sec_cliente,nombre_cli,
recibo_nc.cod_emp_sec,nombre_ven,valor_cotizado ATTRIBUTE (REVERSE)
DISPLAY BY NAME recibo_nc.fecha ATTRIBUTE(blue)
AFTER FIELD fecha
IF recibo_nc.fecha IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
LET p_fechas = recibo_nc.fecha
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha
END IF
BEFORE FIELD avance
IF monto_ck IS NULL THEN
LET monto_ck = 0
END IF
IF monto_efectivo IS NULL THEN
LET monto_efectivo = 0
END IF
IF monto_cr IS NULL THEN
LET monto_cr = 0
END IF
LET recibo_nc.avance = monto_ck+monto_efectivo+monto_cr
DISPLAY BY NAME recibo_nc.avance
# AFTER FIELD avance
# IF recibo_nc.avance IS NULL OR recibo_nc.avance < 0 THEN
# LET numero_msg = 16
# CALL msg(numero_msg)
# NEXT FIELD avance
# END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF monto_ck IS NULL THEN
LET monto_ck = 0
END IF
IF monto_efectivo IS NULL THEN
LET monto_efectivo = 0
END IF
IF monto_cr IS NULL THEN
LET monto_cr = 0
END IF
IF recibo_nc.num_orden IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_doc
END IF
IF recibo_nc.fecha IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
IF monto_efectivo IS NULL AND monto_ck IS NULL AND monto_cr IS NULL THEN
CALL fgl_winmessage("ERROR","DEBES IDENTIFICAR LA VIA DEL INGRESO, EFECTIVO, CK O TARJETA","INFO")
NEXT FIELD monto_efectivo
END IF
IF recibo_nc.cod_emp_sec IS NULL OR recibo_nc.cod_emp_sec = 0 THEN
SELECT a.sec_vend,ISNULL(a.sec_vend_aux,0) INTO psecvend,psecvend1 FROM vetb00050 a
WHERE a.cotizacion_no = recibo_nc.num_orden
IF psecvend1 = 0 THEN
LET recibo_nc.cod_emp_sec = psecvend
ELSE
LET recibo_nc.cod_emp_sec = psecvend1
END IF
END IF
LET recibo_nc.avance =monto_efectivo+monto_ck+monto_cr
DISPLAY BY NAME recibo_nc.avance
IF recibo_nc.avance IS NULL OR recibo_nc.avance < 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD monto_efectivo
END IF
IF recibo_nc.avance = 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD avance
END IF
IF codigo_sucursal IS NULL THEN
CALL fgl_Winmessage("ERROR","SUCURSAL ESTA EN BLANCO, USTED POSIBLEMENTE NO TIENE SUCURSAL ASIGNADA","INFO")
CONTINUE INPUT
END IF
END INPUT
INITIALIZE p_companias.* TO NULL
IF tipo_p = "A" THEN
# AQUI VIENE LA FUNCION PARA EVALUAR EL CLIENTE
SET CONNECTION "MSSQL"
CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad
IF verdad THEN
CALL evalua_clientes()
END IF
CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad
IF verdad=TRUE THEN
SET CONNECTION "IFMX"
SELECT a.* INTO p_companias.* FROM companias a
SELECT a.ult_recibo INTO recibo_nc.num_doc FROM cctb00003 a
WHERE a.tipo_doc = "AV"
IF recibo_nc.num_doc IS NULL THEN
LET recibo_nc.num_doc = 0
END IF
LET recibo_nc.num_doc = recibo_nc.num_doc + 1
LET otro_num = recibo_nc.num_doc
BEGIN WORK
UPDATE cctb00003 set ult_recibo = recibo_nc.num_doc where
tipo_doc = 'AV'
IF otro_num = 0 or otro_num IS NULL THEN
CALL fgl_winmessage("ERROR","PROBLEMAS EN EL CONTROL NUMERO","STOP")
RETURN
END IF
DISPLAY BY NAME recibo_nc.num_doc ATTRIBUTE (REVERSE)
INSERT INTO cctb00001 (cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente,
cod_emp,cod_emp_sec,fecha_orig,aplica_a,documento_ref,valor,
monto_desc,us_crea,fech_crea,costo,
valor_efectivo,valor_cheque,valor_tarjeta,sucid)
VALUES (p_companias.cod_comp,recibo_nc.num_doc,"AV",recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,codigo_sucursal, recibo_nc.cod_emp_sec,recibo_nc.fecha,
recibo_nc.num_doc,recibo_nc.num_orden,recibo_nc.avance,0,
usuarios,getdate(),'1',monto_efectivo,monto_ck, monto_cr,codigo_sucursal)
INSERT INTO cctb00011 (cod_cia,tipo_cliente,sec_cliente,
num_doc,tipo_doc,comentario,us_crea,fech_crea,sucid,
valor_efectivo,valor_cheque,valor_tarjeta)
VALUES (p_companias.cod_comp,recibo_nc.tipo_cliente,recibo_nc.sec_cliente,
recibo_nc.num_doc,'AV',recibo.comentario,usuarios,getdate(),codigo_sucursal,
monto_efectivo,monto_ck,monto_cr)
COMMIT WORK
END IF
SET CONNECTION "MSSQL"
SELECT a.ult_recibo INTO recibo_nc.num_doc FROM cctb00003 a
WHERE a.tipo_doc = "AV"
IF recibo_nc.num_doc IS NULL THEN
LET recibo_nc.num_doc = 0
END IF
LET recibo_nc.num_doc = recibo_nc.num_doc + 1
BEGIN WORK
UPDATE cctb00003 set ult_recibo = recibo_nc.num_doc where
tipo_doc = 'AV'
IF recibo_nc.tipo_cliente = 19 OR recibo_nc.tipo_cliente=18 THEN
LET ch_itbis = 'NO'
END IF
INSERT INTO cctb00001 (cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente,
cod_emp,cod_emp_sec,fecha_orig,aplica_a,documento_ref,valor,
monto_desc,us_crea,fech_crea,costo,
valor_efectivo,valor_cheque,valor_tarjeta,factura_ext)
VALUES (p_companias.cod_comp,recibo_nc.num_doc,"AV",recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,codigo_sucursal, recibo_nc.cod_emp_sec,recibo_nc.fecha,
recibo_nc.num_doc,recibo_nc.num_orden,recibo_nc.avance,0,
SUSER_SNAME(),GETDATE(),'1',monto_efectivo,monto_ck,
monto_cr,otro_num)
INSERT INTO cctb00011 (cod_cia,tipo_cliente,sec_cliente,
num_doc,tipo_doc,comentario,us_crea,fech_crea,chitbis,sucid,
valor_efectivo,valor_cheque,valor_tarjeta,
num_doc_relacionado)
VALUES (p_companias.cod_comp,recibo_nc.tipo_cliente,recibo_nc.sec_cliente,
recibo_nc.num_doc,'AV',recibo.comentario,usuarios,getdate(),ch_itbis,codigo_sucursal,
monto_efectivo,monto_ck,monto_cr,otro_num)
COMMIT WORK
SET CONNECTION "IFMX"
UPDATE cctb00001 SET factura_ext = recibo.num_doc WHERE num_doc = otro_num AND
tipo_cliente = recibo.tipo_cliente AND
sec_cliente = recibo.sec_cliente AND
tipo_doc = 'AV'
SET CONNECTION "MSSQL"
# BUSCA EMAIL VENDEDOR
SELECT a.email INTO vendedorEmail FROM seg0000 a WHERE a.sec_vend = recibo_nc.cod_emp_sec
# BUSCA SOPORTE VENTAS
LET soporteVentas=NULL
SELECT MAX(a.email) INTO soporteVentas FROM seg0001 a,vetb00093 b
WHERE b.cotizacion_no = recibo_nc.num_orden AND b.sec_vend = a.num_emp
IF soporteVentas IS NOT NULL THEN
LET vendedorEmail=vendedorEmail CLIPPED,";",soporteVentas
END IF
LET chmensaje = "NUMERO RECIBO: ",recibo_nc.num_doc USING "<<<<<<"
LET subject = "AVISO PAGO AVANCE COTIZACION NO. ",recibo_nc.num_orden USING "&&&&&&"
LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
LET cuerpo_correo = "VENDEDOR : ",nombre_ven CLIPPED
LET cuerpo_correo = cuerpo_correo CLIPPED," FECHA : ",recibo_nc.fecha USING "DD/MM/YYYY"
LET cuerpo_correo = cuerpo_correo CLIPPED," RECIBO : ",recibo_nc.num_doc USING "&&&&&&"
LET cuerpo_correo = cuerpo_correo CLIPPED," CLIENTE: ",nombre_cli CLIPPED
####################
IF verdad THEN
INSERT INTO cctb00020 (cod_cia,tipo_doc,num_oc,fecha,tipo_cliente,sec_cliente,
factura,valor_efectivo,num_trans,us_crea,fech_crea)
VALUES (p_companias.cod_comp,'AV',recibo_nc.num_doc,recibo_nc.fecha,
recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,recibo_nc.num_orden,
recibo_nc.avance,otro_num,usuarios,getdate())
END IF
{CALL envia_correo('soporteclientes@marmotech.com.do;cxc@marmotech.com.do',vendedorEmail,cuerpo_correo,
subject, procedimiento )}
#CREA LA REQUISICION DE DESPACHO SI NO SE HA ADICIONADO ALGUNA, TAMBIEN ADICIONA LA ORDEN EN CASO QUE NO TENGA
IF pcondpago = 4 THEN
SELECT DISTINCT a.num_req INTO xnum_req FROM cctb00026 a WHERE a.cotizacion_no = recibo_nc.num_orden AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
SELECT a.num_oc,CONVERT(CHAR(10),a.fecha_oc,103)
INTO xnum_oc,xfecha_oc FROM prtb00012 a
WHERE a.cotizacion_no = recibo_nc.num_orden AND a.status_t IS NULL
{ IF STATUS = NOTFOUND THEN
# CALL convierteorden(recibo_nc.num_orden,recibo_nc.num_orden,usuarios,clave,impresor,impresor,'GENERAL')
RETURNING xnum_oc,exito}
IF exito THEN
IF recibo_nc.avance >= valor_cotizado THEN
CALL requisiciondespacho(xnum_oc,recibo_nc.tipo_cliente,recibo_nc.sec_cliente,Pcondpago,valor_cotizado,
xfecha_oc,psecvend,usuarios)
RETURNING xnum_req,valor_cotizado
UPDATE cctb00001 SET num_req = xnum_req
WHERE tipo_doc = 'AV' AND num_doc = recibo_nc.num_doc AND
tipo_cliente = recibo_nc.tipo_cliente AND sec_cliente = recibo_nc.sec_cliente
UPDATE cctb00025 SET estado = 'AUTORIZADA',us_mod = 'MBS',fech_mod = getdate()
WHERE num_req = xnum_req AND estado = 'NO AUTORIZADA'
IF STATUS <> NOTFOUND THEN
LET descripcion_estado = 'REQUISICION AUTORIZADA POR SISTEMA, LA COTIZACION ES AL CONTADO'
INSERT INTO cctb00031 (fecha,us_crea,sec_vend,tipo_cliente,
sec_cliente,nombreCliente,num_req,limite_cr,monto_cotizacion,
balance,estado,tipo_doc_ref,monto_req,num_recibo,tipo_doc,
monto_avance,valor_cotizacion,descrip_estado,cotizacion_no)
VALUES (getdate(),'MBS',recibo_nc.cod_emp_sec,recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,nombre_cli,xnum_req,'0',valor_cotizado,'0',"AUTORIZADA",
"AV",valor_cotizado,recibo_nc.num_doc,'AV',
recibo_nc.avance,valor_cotizado,descripcion_estado,recibo_nc.num_orden )
END IF
END IF
# END IF
ELSE
IF recibo_nc.avance >= valor_cotizado THEN
CALL requisiciondespacho(xnum_oc,recibo_nc.tipo_cliente,recibo_nc.sec_cliente,Pcondpago,valor_cotizado,
xfecha_oc,psecvend,usuarios)
RETURNING xnum_req,valor_cotizado
UPDATE cctb00025 SET estado = 'AUTORIZADA',us_mod = 'MBS',fech_mod = getdate()
WHERE num_req = xnum_req AND estado = 'NO AUTORIZADA'
IF STATUS <> NOTFOUND THEN
LET descripcion_estado = 'REQUISICION AUTORIZADA POR SISTEMA, LA COTIZACION ES AL CONTADO'
INSERT INTO cctb00031 (fecha,us_crea,sec_vend,tipo_cliente,
sec_cliente,nombreCliente,num_req,limite_cr,monto_cotizacion,
balance,estado,tipo_doc_ref,monto_req,num_recibo,tipo_doc,
monto_avance,valor_cotizacion,descrip_estado,cotizacion_no)
VALUES (getdate(),'MBS',recibo_nc.cod_emp_sec,recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,nombre_cli,xnum_req,'0',valor_cotizado,'0',"AUTORIZADA",
"AV",valor_cotizado,recibo_nc.num_doc,'AV',
recibo_nc.avance,valor_cotizado,descripcion_estado,recibo_nc.num_orden )
END IF
END IF
END IF
ELSE
IF recibo_nc.avance >= valor_cotizado THEN
UPDATE cctb00025 SET estado = 'AUTORIZADA',us_mod = 'MBS',fech_mod = getdate()
WHERE num_req = xnum_req AND estado = 'NO AUTORIZADA'
IF STATUS <> NOTFOUND THEN
LET descripcion_estado = 'REQUISICION AUTORIZADA POR SISTEMA, LA COTIZACION ES AL CONTADO'
INSERT INTO cctb00031 (fecha,us_crea,sec_vend,tipo_cliente,
sec_cliente,nombreCliente,num_req,limite_cr,monto_cotizacion,
balance,estado,tipo_doc_ref,monto_req,num_recibo,tipo_doc,
monto_avance,valor_cotizacion,descrip_estado,cotizacion_no)
VALUES (getdate(),'MBS',recibo_nc.cod_emp_sec,recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,nombre_cli,xnum_req,'0',valor_cotizado,'0',"AUTORIZADA",
"AV",valor_cotizado,recibo_nc.num_doc,'AV',
recibo_nc.avance,valor_cotizado,descripcion_estado,recibo_nc.num_orden )
END IF
END IF
END IF
END IF
#-------------------------------------------------------------------------
SET CONNECTION "IFMX"
{ IF pcondpago = 4 THEN
# ESTA PARTE VA PARA EL FLUJO DE RETAIL 19/11/2018
IF recibo_nc.avance+50 >= valor_cotizado THEN
CALL facturar(recibo_nc.num_orden,codigo_sucursal,xnum_oc,usuarios,clave,impresor,
codigodgii,comprobante,fecha_vence)
ELSE
CALL fgl_winmessage("INFO","NO PUDE REALIZAR LA FACTURA PORQUE EL VALOR EN EL RECIBO DIFIERE DEL VALOR COTIZADO","INFO")
END IF
END IF}
SET CONNECTION "MSSQL"
END IF
IF tipo_p = "C" THEN
CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad
IF verdad=TRUE THEN
SET CONNECTION "IFMX"
SELECT a.* INTO p_companias.* FROM companias a
UPDATE cctb00001 SET (banco,tipo_cliente,sec_cliente,cod_emp_sec,
fecha_orig,valor,monto_desc,us_mod,fech_mod) =
(recibo_nc.num_orden,recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,recibo_nc.cod_emp_sec,
recibo_nc.fecha,recibo_nc.avance,0,usuarios,getdate())
WHERE tipo_doc = "AV" AND num_doc = recibo_nc.num_doc AND
aplica_a = recibo_nc.num_doc
UPDATE cctb00011 SET comentario = recibo.comentario,
us_mod = usuarios,
fech_mod= getdate()
WHERE cod_cia = p_companias.cod_comp AND
num_doc = recibo_nc.num_doc AND
tipo_doc = 'AV'
END IF
SET CONNECTION "MSSQL"
SELECT unique a.num_trans INTO otro_num FROM cctb00020 a
WHERE a.num_trans = recibo_nc.num_doc
UPDATE cctb00001 SET (banco,tipo_cliente,sec_cliente,cod_emp_sec,
fecha_orig,valor,monto_desc,us_mod,fech_mod) =
(recibo_nc.num_orden,recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,recibo_nc.cod_emp_sec,
recibo_nc.fecha,recibo_nc.avance,0,SUSER_SNAME(),GETDATE())
WHERE tipo_doc = "AV" AND num_doc = otro_num AND
aplica_a = recibo_nc.num_doc
UPDATE cctb00011 SET comentario = recibo.comentario,
us_mod = usuarios,
fech_mod= getdate()
WHERE cod_cia = p_companias.cod_comp AND
num_doc = recibo_nc.num_doc AND
tipo_doc = 'AV'
END IF
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT volante TO archivo
IF verdad THEN
LET recibo_nc.num_doc = otro_num
END IF
DISPLAY BY NAME recibo_nc.num_doc ATTRIBUTE (REVERSE)
OUTPUT TO REPORT volante(recibo_nc.*)
FINISH REPORT volante
RUN imprime
LET numero_msg = 1
CALL msg(numero_msg)
END FUNCTION
FUNCTION ccpcmf003()
DEFINE conexion STRING
INPUT BY NAME recibo_nc.num_doc
BEFORE INPUT
SET CONNECTION "IFMX"
LET conexion = "IFMX"
ON KEY(F2)
SET CONNECTION "IFMX"
LET conexion = "IFMX"
ON KEY(F3)
SET CONNECTION "MSSQL"
LET conexion = "MSSQL"
AFTER FIELD num_doc
LET recibo_cons = NULL
LET recibo_ext = NULL
SELECT a.documento_ref,a.tipo_cliente,a.sec_cliente,a.cod_emp_sec,
CONVERT(CHAR(10),a.fecha_orig,103),a.valor,a.cod_emp,
a.valor_efectivo,a.valor_cheque,a.valor_tarjeta
INTO recibo_nc.num_orden,recibo_nc.tipo_cliente,recibo_nc.sec_cliente,
recibo_nc.cod_emp_sec,recibo_nc.fecha,recibo_nc.avance,codigo_sucursal,
monto_efectivo,monto_ck,monto_cr
FROM cctb00001 a
WHERE a.status_t IS NULL AND a.num_doc = a.aplica_a AND
a.tipo_doc = 'AV' AND a.num_Doc = recibo_nc.num_doc
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD Num_Doc
END IF
IF conexion = "MSSQL" THEN
LET recibo_cons = recibo_nc.num_doc
ELSE
LET recibo_ext = recibo_nc.num_doc
END IF
{ IF STATUS = NOTFOUND THEN
SET CONNECTION "MSSQL"
SELECT a.banco,a.tipo_cliente,a.sec_cliente,a.cod_emp_sec,
a.fecha_orig,a.valor,a.cod_emp
INTO recibo_nc.num_orden,recibo_nc.tipo_cliente,recibo_nc.sec_cliente,
recibo_nc.cod_emp_sec,recibo_nc.fecha,recibo_nc.avance,codigo_sucursal
FROM cctb00001 a
WHERE a.status_t IS NULL AND a.num_doc = a.aplica_a AND
a.tipo_doc = 'AV' AND a.num_Doc = recibo_nc.num_doc
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD Num_Doc
END IF
LET recibo_cons = recibo_nc.num_doc
ELSE
LET recibo_ext = recibo_nc.num_doc
END IF
}
SELECT a.nombre INTO nombre_cli FROM vetb00004 a
WHERE a.tipo_cliente = recibo_nc.tipo_cliente AND
a.sec_cliente = recibo_nc.sec_cliente
SELECT UNIQUE a.nom1_emp,a.nom2_emp,a.apell1_emp
INTO nombre1,nombre2,apell FROM adtb00003 a
WHERE a.num_emp = recibo_nc.cod_emp_sec
CALL busca_info()
LET nombre_ven = nombre1 CLIPPED," ",nombre2 CLIPPED," ",apell CLIPPED
DISPLAY BY NAME recibo_nc.*,nombre_cli,nombre_ven,monto_efectivo,monto_ck,monto_cr
DISPLAY codigo_sucursal TO localidad
AFTER INPUT
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET INT_FLAG = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
MENU
{ ESTA FUNCIONABILIDAD SE QUITO TEMPORALMENTE, YA QUE EL PROGRAMA TIENE
QUE ACTUALIZAR DOS BASE DE DATOS DIFERENTES, PERO NO TENGO LA IDENTIFICACION DE
CUAL SERIA LA PRIMERA
ON ACTION anular
LET p_fechas = recibo_nc.fecha
SET CONNECTION "MSSQL"
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET otro_num = recibo_nc.num_doc
LET recibo_orig = recibo_nc.num_doc
CALL procesacliente(recibo_nc.tipo_cliente) RETURNING verdad
IF verdad THEN
SET CONNECTION "IFMX"
SELECT SUM(a.valor+a.monto_desc) INTO monto1 FROM cctb00001 a
WHERE a.status_t IS NULL AND a.num_doc = recibo_nc.num_doc AND
a.num_doc != a.aplica_a AND a.tipo_doc = "AV"
IF monto1 IS NULL THEN
LET monto1 = 0
END IF
IF monto1 <> 0 THEN
ERROR "Documento Tiene Aplicaciones... No Puede Ser Eliminado"
CONTINUE MENU
END IF
END IF
SET CONNECTION "MSSQL"
IF verdad THEN
SELECT a.num_oc INTO recibo_nc.num_doc FROM cctb00020 a
WHERE a.num_trans = otro_num and tipo_Doc = 'AV'
END IF
SELECT SUM(a.valor+a.monto_desc) INTO monto1 FROM cctb00001 a
WHERE a.status_t IS NULL AND a.num_doc = recibo_nc.num_doc AND
a.num_doc != a.aplica_a AND a.tipo_doc = "AV"
IF monto1 IS NULL THEN
LET monto1 = 0
END IF
IF monto1 <> 0 THEN
ERROR "Documento Tiene Aplicaciones... No Puede Ser Eliminado"
CONTINUE MENU
END IF
LET respuesta = fgl_winquestion("INFO","ESTA SEGURO DE QUERER ANULAR ESTE DOCUMENTO?","NO","NO|YES","question",0)
IF UPSHIFT(respuesta) = "YES" THEN
IF verdad THEN
SET CONNECTION "IFMX"
LET recibo_nc.num_doc= recibo_orig
UPDATE cctb00001 SET (status_t,us_mod,fech_mod) = ( "E",usuarios,getdate())
WHERE tipo_doc = "AV" AND num_doc = recibo_nc.num_doc AND
aplica_a = recibo_nc.num_doc and fecha_orig > '03/01/2011'
END IF
SET CONNECTION "MSSQL"
SELECT a.num_oc INTO recibo_nc.num_doc FROM cctb00020 a
WHERE a.num_trans = otro_num
UPDATE cctb00001 SET (status_t,us_mod,fech_mod) = ( "E",SUSER_SNAME(),GETDATE())
WHERE tipo_doc = "AV" AND num_doc = recibo_nc.num_doc AND
aplica_a = recibo_nc.num_doc and fecha_orig > '03/01/2011'
LET numero_msg = 82
CALL msg(numero_msg)
END IF
}
ON ACTION rImprimir
SET CONNECTION "MSSQL"
SELECT a.cod_perfil INTO pperfil
FROM seg0001 a
WHERE a.usuario = usuarios
CALL seg000(usuarios,pperfil,'otroimp') RETURNING acceso
IF acceso = "SI" THEN
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT volante TO archivo
OUTPUT TO REPORT volante(recibo_nc.*)
FINISH REPORT volante
RUN imprime
CALL fgl_winmessage("IMPRESION","ENVIO INFORMACION A LA IMPRESORA","STOP")
END IF
ON ACTION otroimp
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT volante1 TO archivo
OUTPUT TO REPORT volante1(recibo_nc.*)
FINISH REPORT volante1
RUN imprime
CALL fgl_winmessage("IMPRESION","ENVIO INFORMACION A LA IMPRESORA","STOP")
ON ACTION salir
EXIT MENU
END MENU
END FUNCTION
REPORT volante (x)
DEFINE x RECORD
num_doc INTEGER,
num_orden INTEGER,
tipo_cliente INTEGER,
sec_cliente INTEGER,
cod_emp_sec INTEGER,
fecha DATE,
avance DECIMAL(12,2)
END RECORD
DEFINE doble CHAR(1)
DEFINE comp_off,negras,negras_of,italic,italic_of CHAR(2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
PAGE LENGTH 33
FORMAT
PAGE HEADER
LET negras = ASCII 27, ASCII 69
LET negras_of = ASCII 27, ASCII 70
LET doble = ASCII 14
LET italic = ASCII 27, ASCII 52
LET italic_of = ASCII 27, ASCII 53
LET comp_off = ASCII 18
PRINT COLUMN 70,comp_off, ASCII 27, ASCII 80
PRINT COLUMN 68,doble, x.num_doc using "&&&&&&"
IF NOT verdad THEN
PRINT " "
PRINT " "
ELSE
PRINT COLUMN 5, negras,p_companias.nombre CLIPPED,negras_of,
COLUMN 74, x.fecha using "dd/mm/yyyy"
PRINT COLUMN 5, p_companias.direccion CLIPPED," TEL.",p_companias.telefono CLIPPED
END IF
PRINT COLUMN 15, italic,"RECIBO DE INGRESO"
PRINT COLUMN 15, italic,"AVANCE A COTIZACION"
SKIP 1 LINE
LET valor_orig = x.avance
LET valor_letras = NULL
SELECT a.simbolo,a.descripcion_moneda
INTO psimbolo,pmoneda FROM vetb00061 a,vetb00060 b
WHERE a.ventas = b.ventas AND
b.tipo_cliente = x.tipo_cliente
CALL convierte()
# BUSCA TIPO DE VENTAS
PRINT COLUMN 5, "LOCALIDAD: ",nombre_sucursal
PRINT COLUMN 5, "RECIBIMOS DE :",negras,nombre_cli clipped,"(",x.tipo_cliente USING "&&","-",x.sec_cliente USING "&&&&&&",")",negras_of
PRINT COLUMN 5, "DIRECCION :",negras,xdireccion,negras_of
PRINT COLUMN 5, "PROVINCIA :",negras,xnombre_provincia CLIPPED,negras_of
PRINT COLUMN 5, "VENDEDOR :",recibo_nc.cod_emp_sec USING "<<<<"," ",nombre_ven
PRINT COLUMN 5, "PROYECTO :",negras,xnombre_proyecto CLIPPED,negras_of
PRINT COLUMN 5, "LA SUMA DE :", negras,valor_letras clipped,negras_of
PRINT COLUMN 5, "VALOR RECIBIDO:", negras,psimbolo CLIPPED,x.avance
using "<<<,<<<,<<<.##",negras_of
SKIP 1 LINE
PRINT COLUMN 1,
"------------------------------------------------------------------------------"
PRINT COLUMN 5, "FECHA",
COLUMN 40, "COTIZACION NO.",
COLUMN 60, "NETO COBRADO"
PRINT COLUMN 1,
"------------------------------------------------------------------------------"
SKIP 1 LINE
PRINT COLUMN 5, x.fecha using "dd/mm/yyyy",
COLUMN 40, x.num_orden using "&&&&&&" ,
COLUMN 58,psimbolo CLIPPED, x.avance using "<<<,<<<,<##.##"
PAGE TRAILER
SKIP 1 LINE
PRINT COLUMN 5, "OBSERVACION: ",recibo.comentario
PRINT COLUMN 5, "_______________________________",
COLUMN 45,"_______________________________"
PRINT COLUMN 10, " Preparado Por ",
COLUMN 45, " Autorizado Por"
PRINT italic_of
END REPORT
REPORT volante1(x)
DEFINE x RECORD
num_doc INTEGER,
num_orden INTEGER,
tipo_cliente INTEGER,
sec_cliente INTEGER,
cod_emp_sec INTEGER,
fecha DATE,
avance DECIMAL(12,2)
END RECORD
DEFINE doble CHAR(1)
DEFINE comp_off,negras,negras_of,italic,italic_of CHAR(2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
PAGE LENGTH 33
FORMAT
PAGE HEADER
LET negras = ASCII 27, ASCII 69
LET negras_of = ASCII 27, ASCII 70
LET doble = ASCII 14
LET italic = ASCII 27, ASCII 52
LET italic_of = ASCII 27, ASCII 53
LET comp_off = ASCII 18
PRINT COLUMN 70,comp_off, ASCII 27, ASCII 80
PRINT COLUMN 68,doble, x.num_doc using "&&&&&&"
IF NOT verdad THEN
PRINT " "
PRINT " "
ELSE
PRINT COLUMN 5, negras,p_companias.nombre CLIPPED,negras_of,
COLUMN 74, today using "dd/mm/yyyy"
PRINT COLUMN 5, p_companias.direccion CLIPPED," TEL.",p_companias.telefono CLIPPED
END IF
PRINT COLUMN 15, italic,"RECIBO DE INGRESO"
PRINT COLUMN 15, italic,"AVANCE A COTIZACION"
SKIP 1 LINE
LET valor_orig = x.avance
LET valor_letras = NULL
CALL convierte()
SET CONNECTION "MSSQL"
# BUSCA TIPO DE VENTAS
SELECT a.simbolo INTO psimbolo FROM vetb00061 a,vetb00060 b
WHERE a.ventas = b.ventas AND
b.tipo_cliente = x.tipo_cliente
PRINT COLUMN 60, "LOCALIDAD: ",nombre_sucursal
PRINT COLUMN 5, "RECIBIMOS DE :",negras,nombre_cli clipped,"(",x.tipo_cliente USING "&&","-",x.sec_cliente USING "&&&&&&",")",negras_of
PRINT COLUMN 5, "DIRECCION :",negras,xdireccion,negras_of
PRINT COLUMN 5, "PROVINCIA :",negras,xnombre_provincia CLIPPED,negras_of
PRINT COLUMN 5, "VENDEDOR :",recibo_nc.cod_emp_sec USING "<<<<"," ",nombre_ven
PRINT COLUMN 5, "PROYECTO :",negras,xnombre_proyecto CLIPPED,negras_of
PRINT COLUMN 5, "LA SUMA DE :", negras,valor_letras clipped,negras_of
PRINT COLUMN 5, "VALOR RECIBIDO:", negras,psimbolo CLIPPED,x.avance
using "<<<,<<<,<<<.##",negras_of
PRINT COLUMN 5, "REFERENCIA : ",otro_num USING "&&&&&&"
SKIP 1 LINE
PRINT COLUMN 1,
"------------------------------------------------------------------------------"
PRINT COLUMN 5, "FECHA",
COLUMN 40, "COTIZACION NO.",
COLUMN 60, "NETO COBRADO"
PRINT COLUMN 1,
"------------------------------------------------------------------------------"
SKIP 1 LINE
PRINT COLUMN 5, x.fecha using "dd/mm/yyyy",
COLUMN 40, x.num_orden using "&&&&&&" ,
COLUMN 58,psimbolo CLIPPED, x.avance using "<<<,<<<,<##.##"
PAGE TRAILER
SKIP 1 LINE
PRINT COLUMN 5, "OBSERVACION: ",recibo.comentario
PRINT COLUMN 5, "_______________________________",
COLUMN 45,"_______________________________"
PRINT COLUMN 10, " Preparado Por ",
COLUMN 45, " Autorizado Por"
PRINT italic_of
END REPORT
FUNCTION convierte()
DEFINE consegui CHAR(1)
DEFINE p,miles,m,k,a,b,d,c,entero,unidades_mi,unidades_m,unidad,
unid_c,u INTEGER
DEFINE cheles DECIMAL (7,2)
CALL letras()
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 THEN
LET valor_letras = valor_letras clipped," ",centenas[k] clipped
END IF
LET unid_c = c - (k * 100)
IF unid_c >= 20 THEN
LET unid_c = unid_c - 19
LET valor_letras = valor_letras clipped," ",decenas[unid_c] clipped
END IF
END IF
LET valor_letras = valor_letras clipped," ","MIL"
END IF
LET c = a
IF c > 100 THEN
LET c = c / 100
LET valor_letras = valor_letras clipped," ",centenas[c] clipped
END IF
IF unidades_m > 0 and unidades_m < 19 THEN
LET a = unidades_m
LET valor_letras = valor_letras clipped, " ",unidades1[a] clipped
END IF
END IF
# Para Controlar cantidades en millones
IF entero > 999999 THEN
LET c = 0
LET miles = entero - 1000000
LET m = miles / 1000
LET p = miles - (m * 1000)
LET u = m / 100
LET u = m - (u * 100)
LET unidades_mi = p
LET unidades_mi = unidades_mi / 100
LET unidades_mi = p - (unidades_mi * 100)
LET valor_letras = null
IF b = 1 THEN
LET valor_letras = "UN MILLON"
END IF
IF b > 1 and b <= 19 THEN
LET valor_letras = valor_letras clipped," ",unidades1[b] clipped," ",
"MILLONES"
END IF
IF b >= 20 and b <= 999999 THEN
IF b < 82 THEN
LET b = b - 19
LET valor_letras = valor_letras clipped," ",decenas[b] clipped," ",
"MILLONES"
ELSE
LET k = b / 100
LET valor_letras = valor_letras clipped," ",centenas[k] clipped," ",
"MILLONES"
END IF
END IF
LET b = m
IF b > 100 THEN
LET b = b / 100
LET valor_letras = valor_letras clipped," ",centenas[b] clipped
IF u > 0 and u <= 19 THEN
IF u = 1 THEN
LET unidades1[1] = "UN"
END IF
LET valor_letras = valor_letras clipped," ",unidades1[u] CLIPPED
END IF
END IF
IF u >= 20 and u <= 999999 THEN
IF u < 82 THEN
LET u = u - 19
LET valor_letras = valor_letras clipped," ",decenas[u] clipped
END IF
END IF
LET valor_letras = valor_letras clipped," ","MIL"
IF p > 100 THEN
LET p = p / 100
LET valor_letras = valor_letras clipped," ",centenas[p] clipped
END IF
IF unidades_mi > 0 and unidades_mi < 19 THEN
LET m = unidades_mi
LET valor_letras = valor_letras clipped, " ",unidades1[m] clipped
END IF
END IF
IF unidad > 0 and unidad < 20 AND consegui = "N" THEN
LET d = unidad
LET valor_letras = valor_letras clipped," ",unidades1[d] clipped
END IF
IF unidad >= 20 AND d <= 81 AND consegui = "N" THEN
LET valor_letras = valor_letras clipped," ",decenas[d] clipped
END IF
LET valor_letras = valor_letras clipped," ",pmoneda
# este era la instruccion original fecha 29/04/2014 LET valor_letras = valor_letras clipped," ","PESOS"
LET valor_letras = valor_letras clipped," ","CON"," ",cheles using "&&",
"/100"
END FUNCTION
FUNCTION letras()
LET unidades1[1] = "UNO"
LET unidades1[2] = "DOS"
LET unidades1[3] = "TRES"
LET unidades1[4] = "CUATRO"
LET unidades1[5] = "CINCO"
LET unidades1[6] = "SEIS"
LET unidades1[7] = "SIETE"
LET unidades1[8] = "OCHO"
LET unidades1[9] = "NUEVE"
LET unidades1[10] = "DIEZ"
LET unidades1[11] = "ONCE"
LET unidades1[12] = "DOCE"
LET unidades1[13] = "TRECE"
LET unidades1[14] = "CATORCE"
LET unidades1[15] = "QUINCE"
LET unidades1[16] = "DIESISEIS"
LET unidades1[17] = "DIESISIETE"
LET unidades1[18] = "DIESIOCHO"
LET unidades1[19] = "DIESINUEVE"
LET decenas[1] = "VEINTE"
LET decenas[2] = "VEINTE Y UNO"
LET decenas[3] = "VEINTE Y DOS"
LET decenas[4] = "VEINTE Y TRES"
LET decenas[5] = "VEINTE Y CUATRO"
LET decenas[6] = "VEINTE Y CINCO"
LET decenas[7] = "VEINTE Y SEIS"
LET decenas[8] = "VEINTE Y SIETE"
LET decenas[9] = "VEINTE Y OCHO"
LET decenas[10] = "VEINTE Y NUEVE"
LET decenas[11] = "TREINTA"
LET decenas[12] = "TREINTA Y UNO"
LET decenas[13] = "TREINTA Y DOS"
LET decenas[14] = "TREINTA Y TRES"
LET decenas[15] = "TREINTA Y CUATRO"
LET decenas[16] = "TREINTA Y CINCO"
LET decenas[17] = "TREINTA Y SEIS"
LET decenas[18] = "TREINTA Y SIETE"
LET decenas[19] = "TREINTA Y OCHO"
LET decenas[20] = "TREINTA Y NUEVE"
LET decenas[21] = "CUARENTA"
LET decenas[22] = "CUARENTA Y UNO"
LET decenas[23] = "CUARENTA Y DOS"
LET decenas[24] = "CUARENTA Y TRES"
LET decenas[25] = "CUARENTA Y CUATRO"
LET decenas[26] = "CUARENTA Y CINCO"
LET decenas[27] = "CUARENTA Y SEIS"
LET decenas[28] = "CUARENTA Y SIETE"
LET decenas[29] = "CUARENTA Y OCHO"
LET decenas[30] = "CUARENTA Y NUEVE"
LET decenas[31] = "CINCUENTA"
LET decenas[32] = "CINCUENTA Y UNO"
LET decenas[33] = "CINCUENTA Y DOS"
LET decenas[34] = "CINCUENTA Y TRES"
LET decenas[35] = "CINCUENTA Y CUATRO"
LET decenas[36] = "CINCUENTA Y CINCO"
LET decenas[37] = "CINCUENTA Y SEIS"
LET decenas[38] = "CINCUENTA Y SIETE"
LET decenas[39] = "CINCUENTA Y OCHO"
LET decenas[40] = "CINCUENTA Y NUEVE"
LET decenas[41] = "SESENTA"
LET decenas[42] = "SESENTA Y UNO"
LET decenas[43] = "SESENTA Y DOS"
LET decenas[44] = "SESENTA Y TRES"
LET decenas[45] = "SESENTA Y CUATRO"
LET decenas[46] = "SESENTA Y CINCO"
LET decenas[47] = "SESENTA Y SEIS"
LET decenas[48] = "SESENTA Y SIETE"
LET decenas[49] = "SESENTA Y OCHO"
LET decenas[50] = "SESENTA Y NUEVE"
LET decenas[51] = "SETENTA"
LET decenas[52] = "SETENTA Y UNO"
LET decenas[53] = "SETENTA Y DOS"
LET decenas[54] = "SETENTA Y TRES"
LET decenas[55] = "SETENTA Y CUATRO"
LET decenas[56] = "SETENTA Y CINCO"
LET decenas[57] = "SETENTA Y SEIS"
LET decenas[58] = "SETENTA Y SIETE"
LET decenas[59] = "SETENTA Y OCHO"
LET decenas[60] = "SETENTA Y NUEVE"
LET decenas[61] = "OCHENTA"
LET decenas[62] = "OCHENTA Y UNO"
LET decenas[63] = "OCHENTA Y DOS"
LET decenas[64] = "OCHENTA Y TRES"
LET decenas[65] = "OCHENTA Y CUATRO"
LET decenas[66] = "OCHENTA Y CINCO"
LET decenas[67] = "OCHENTA Y SEIS"
LET decenas[68] = "OCHENTA Y SIETE"
LET decenas[69] = "OCHENTA Y OCHO"
LET decenas[70] = "OCHENTA Y NUEVE"
LET decenas[71] = "NOVENTA"
LET decenas[72] = "NOVENTA Y UNO"
LET decenas[73] = "NOVENTA Y DOS"
LET decenas[74] = "NOVENTA Y TRES"
LET decenas[75] = "NOVENTA Y CUATRO"
LET decenas[76] = "NOVENTA Y CINCO"
LET decenas[77] = "NOVENTA Y SEIS"
LET decenas[78] = "NOVENTA Y SIETE"
LET decenas[79] = "NOVENTA Y OCHO"
LET decenas[80] = "NOVENTA Y NUEVE"
LET decenas[81] = "CIEN"
LET centenas[1] = "CIENTO"
LET centenas[2] = "DOCIENTOS"
LET centenas[3] = "TRESCIENTOS"
LET centenas[4] = "CUATROCIENTOS"
LET centenas[5] = "QUINIENTOS"
LET centenas[6] = "SEISCIENTOS"
LET centenas[7] = "SETECIENTOS"
LET centenas[8] = "OCHOCIENTOS"
LET centenas[9] = "NOVECIENTOS"
END FUNCTION
FUNCTION busca_info()
SET CONNECTION "MSSQL"
SELECT a.nombre INTO nombre_cli FROM vetb00004 a
WHERE a.tipo_cliente = recibo_nc.tipo_cliente AND
a.sec_cliente = recibo_nc.sec_cliente
SELECT UNIQUE a.nom1_emp,a.nom2_emp,a.apell1_emp
INTO nombre1,nombre2,apell FROM adtb00003 a
WHERE a.num_emp = recibo_nc.cod_emp_sec
LET nombre_ven = nombre1 CLIPPED," ",nombre2 CLIPPED," ",apell CLIPPED
SELECT a.sucnombre INTO nombre_sucursal
FROM sucursales a
WHERE a.sucid = codigo_sucursal
LET otro_num = NULL
SELECT a.num_trans INTO otro_num
FROM cctb00020 a
WHERE a.num_oc = recibo_nc.num_doc
SELECT a.chitbis INTO ch_itbis
FROM cctb00011 a
WHERE a.tipo_Doc = 'AV' AND a.num_doc = recibo_nc.num_doc
SET CONNECTION "IFMX"
DISPLAY BY NAME recibo_nc.*,nombre_cli,nombre_ven,ch_itbis
DISPLAY codigo_sucursal TO Localidad
END FUNCTION
FUNCTION procesacliente(xtipo_cliente)
DEFINE xtipo_cliente SMALLINT,
verdad1 BOOLEAN
LET verdad1 = TRUE
IF xtipo_cliente = 18 THEN
LET verdad1 = FALSE
END IF
IF xtipo_cliente = 19 THEN
LET verdad1 = FALSE
END IF
RETURN verdad1
END FUNCTION
FUNCTION evalua_clientes()
DEFINE xnum_req INT,
xvalor DEC(12,2),
xfecha char(10),
mensaje VARCHAR(100)
DECLARE busca_req CURSOR FOR
SELECT CONVERT(char(10),b.fecha,103),a.num_req,SUM(a.valor) FROM cctb00026 a,cctb00025 b
WHERE a.cotizacion_no = recibo_nc.num_orden AND
a.num_req = b.num_req AND b.estado = "NO AUTORIZADA" AND b.status_t IS NULL
GROUP BY b.fecha,a.num_req
ORDER BY b.fecha DESC
FOREACH busca_req INTO xfecha,xnum_req,xvalor
IF xvalor IS NOT NULL THEN
IF xvalor <= recibo_nc.avance+montos_avance THEN
UPDATE cctb00025 SET estado = "AUTORIZADA",
us_mod = "MBS",
fech_mod = getdate()
WHERE num_req = xnum_req
LET mensaje ='ESTA REQUISICION FUE AUTORIZADA POR EL RECIBO DE PAGO ',recibo_nc.avance USING "<<<<<<"
INSERT INTO cctb00031 (fecha,us_crea,sec_vend,tipo_cliente,
sec_cliente,nombreCliente,num_req,limite_cr,monto_cotizacion,
balance,estado,tipo_doc_ref,monto_req,num_recibo,monto_avance,cotizacion_no,descrip_estado)
VALUES (getdate(),'MBS',recibo_nc.cod_emp_sec,recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,nombre_cli,xnum_req,'0','0','0',"AUTORIZADA",
"AV",xvalor,recibo_nc.num_doc,recibo_nc.avance,recibo_nc.num_orden,mensaje )
END IF
END IF
END FOREACH
END FUNCTION