1389 lines
48 KiB
Plaintext
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 |