Files
MBS/PROYECTO/ccdir/ccprmt003_1.4gl
T

1095 lines
36 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)
DEFINE valor_cheque1,p_num_doc,aplicar,otro_num INT,
xdireccion,xnombre_proyecto,xnombre_provincia CHAR(60),
psimbolo CHAR(10),
pmoneda CHAR(20),
xestado CHAR(20),
verdad BOOLEAN,
ch_itbis char(2)
DEFINE valor_orig,valor_nc,nc_pend,valor_ctrl,p_total,val_pen,
valor2,monto1 DECIMAL(12,2),
valor_letras CHAR(240)
DEFINE fecha1 DATE
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 INT
####### 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 "exterior" AS "IFMX"
CONNECT to "smarmotech" 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 porc_p DECIMAL(10,2)
DEFINE emp SMALLINT
DEFINE hoy DATE
LET hoy = null
LABEL volver:
INPUT BY NAME recibo_nc.*,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
NEXT FIELD Num_orden
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
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
INTO recibo_nc.tipo_cliente,recibo_nc.sec_cliente,nombre_cli,
xnombre_proyecto,xnombre_provincia,xdireccion,pcondpago,psecvend
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
CALL procesaCliente(recibo_nc.tipo_cliente) RETURNING verdad
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,vetb00020 c
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 ATTRIBUTE (REVERSE)
DISPLAY BY NAME recibo_nc.fecha ATTRIBUTE(blue)
AFTER FIELD fecha
IF recibo_nc.fecha IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
LET p_fechas = recibo_nc.fecha
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha
END IF
AFTER FIELD 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 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 recibo_nc.avance IS NULL OR recibo_nc.avance < 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD avance
END IF
IF recibo_nc.avance = 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD avance
END IF
END INPUT
INITIALIZE p_companias.* TO NULL
IF tipo_p = "A" THEN
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
IF otro_num = 0 or otro_num IS NULL THEN
CALL fgl_winmessage("ERROR","PROBLEMAS EN EL CONTROL NUMERO","STOP")
RETURN
END IF
UPDATE cctb00003 set ult_recibo = recibo_nc.num_doc where
tipo_doc = 'AV'
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,num_cheque,valor,
monto_desc,us_crea,fech_crea,costo)
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,current,1)
INSERT INTO cctb00011 (cod_cia,tipo_cliente,sec_cliente,
num_doc,tipo_doc,comentario,us_crea,fech_crea)
VALUES (p_companias.cod_comp,recibo_nc.tipo_cliente,recibo_nc.sec_cliente,
recibo_nc.num_doc,'AV',recibo.comentario,usuarios,current)
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
UPDATE cctb00003 set ult_recibo = recibo_nc.num_doc where
tipo_doc = 'AV'
INSERT INTO cctb00001 (cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente,
cod_emp,cod_emp_sec,fecha_orig,aplica_a,num_cheque,valor,
monto_desc,us_crea,fech_crea,costo)
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)
INSERT INTO cctb00011 (cod_cia,tipo_cliente,sec_cliente,
num_doc,tipo_doc,comentario,us_crea,fech_crea,chitbis)
VALUES (p_companias.cod_comp,recibo_nc.tipo_cliente,recibo_nc.sec_cliente,
recibo_nc.num_doc,'AV',recibo.comentario,usuarios,getdate(),ch_itbis)
# AQUI VIENE LA FUNCION PARA EVALUAR EL CLIENTE
CALL evaluaclientes
(recibo_nc.tipo_cliente,recibo_nc.sec_cliente,
pcondpago,recibo_nc.num_orden,psecvend,'AV')
RETURNING xestado
IF xestado ='AUTORIZADA' THEN
UPDATE cctb00025 SET estado = 'AUROTIZADA'
WHERE num_req IN
(SELECT a.num_req FROM cctb00026 a WHERE a.cotizacion_no =recibo_nc.num_orden)
END IF
####################
IF verdad THEN
INSERT INTO cctb00020 (cod_cia,tipo_doc,num_oc,fecha,tipo_cliente,sec_cliente,
factura,valor_efectivo,num_trans,us_crea,fech_crea)
VALUES (p_companias.cod_comp,'AV',recibo_nc.num_doc,recibo_nc.fecha,
recibo_nc.tipo_cliente,
recibo_nc.sec_cliente,recibo_nc.num_orden,
recibo_nc.avance,otro_num,usuarios,getdate())
END IF
END IF
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 (num_cheque,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,current)
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= current
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 (num_cheque,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 recibo_orig INT
INPUT BY NAME recibo_nc.num_doc
AFTER FIELD num_doc
SET CONNECTION "IFMX"
SELECT a.num_cheque,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
SET CONNECTION "MSSQL"
SELECT a.num_cheque,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
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 ATTRIBUTE (REVERSE)
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,current)
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, 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
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,mil,millon,
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
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
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()
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
SET CONNECTION "MSSQL"
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,
xitbis CHAR(1)
LET verdad1 = TRUE
SELECT a.paga_itbis INTO xitbis
FROM vetb00060 a
WHERE a.tipo_cliente = xtipo_cliente
IF xitbis = "N" THEN
LET verdad1 = FALSE
END IF
RETURN verdad1
END FUNCTION