Files
MBS/PROYECTO/vedir/veprmt014.4gl
T

1555 lines
56 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IPPRMT014
OBJETIVO : REALIZAR INGRESOS Y EGRESOS DE LA CAJA.
PROGRAMADOR : Ing. Brahian A. Pena Nunez
FECHA REALIZACION : JUNIO 16, 2008.
OBSERVACIONES : Los KE son entrada por cambio y los KS son salida por cambio (de efectivo)
esto es K(cambio) E(entrada),S(salida). salida(s) y entrada(s) de dinero de la caja, por k(cambio).
los TS son transacciones este se incrementara independiente siempre. cada vez que realicemos una transaccion.
------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
define formdoc char(12) #forma de la factura ejemplo reimpresion, original para darme cuenta fisicamente cuando se imprime
define descripcion_cliente,descripcion_cia,descripcion_banco,descripcion_doc char(50)
define num_oc,status_mov,arr,scr,idx,arr2,scr2,num_trans,num_dev integer
define valor_total,total_desglozado,total_dev_desg,monto_pagado,total_devolver decimal(8,2)
define desglozar,desglozar_Dev,insertar char(2)
define opc2 char(3),cxc char(1)
define selec_coti char(300)
define lj int
define nombre_cajera char(50)
define nombre_cobrador char(50)
define telefono_cli char(13)
define num_rnc char(14)
DEFINE fecha_doc DATE
#record para la informacion general
DEFINE COTIZA record
TIPO_DOC char (2),
ORDEN INT,
cond_pago SMALLINT,
NOMBRE CHAR(50),
TIPO_CLIENTE SMALLINT,
SEC_CLIENTE INT,
NETO DEC(12,2),
MONTO_ADICIONAL DEC(12,2),
MONTO_INICIAL DEC(12,2),
FECHA_ORDEN DEC(12,2)
END RECORD
DEFINE ing_egre record
cod_cia SMALLINT,
tipo_doc CHAR(2),
tipo_cliente SMALLINT,
sec_cliente INT,
cajera like cctb00020.cajera,
cobrador like cctb00020.cobrador,
tipo_tarjeta like cctb00020.tipo_tarjeta,
referencia like cctb00020.referencia,
banco like cctb00020.banco,
otro_valor like cctb00020.otro_valor,
valor_efectivo like cctb00020.valor_efectivo,
observacion like cctb00020.observacion
END RECORD
#record para el desgloce cuando hay pago en efectivo
DEFINE Desgloce array[100] of record
cod_moneda like cctb00023.cod_moneda,
descripcion_m like cctb00022.descripcion,
simbolo like cotb00031.simbolo,
tasa like cotb00031.tasa_cambio,
valor decimal(8,2),
cantidad like cctb00023.cantidad,
total decimal(8,2)
END RECORD
#record para el desgloce cuando hay devoluciones de dinero
DEFINE Desgloce_dev array[100] of record
cod_moneda1 like cctb00023.cod_moneda,
descripcion_m1 like cctb00022.descripcion,
simbolo1 like cotb00031.simbolo,
tasa1 like cotb00031.tasa_cambio,
valor1 like cctb00023.valor,
cantidad1 like cctb00023.cantidad,
total1 decimal(8,2)
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(4) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
CALL veprmt014()
END MAIN
FUNCTION veprmt014()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 27,
COMMENT LINE 28
OPEN FORM vefmmt021 FROM "vefmmt021"
DISPLAY FORM vefmmt021
# CALL pantalla()
DISPLAY "veprmt014" AT 2,3
DISPLAY "Ingresos Y Egresos" AT 6,32
call fgl_init4js()
CALL fgl_setsize(30,80)
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
let int_flag = false
CLEAR FORM
let int_flag = false
let cotiza.tipo_doc = null
let cotiza.orden = null
let ing_egre.tipo_doc = null
let ing_egre.tipo_cliente = null
let ing_egre.sec_cliente = null
let ing_egre.tipo_tarjeta = null
let ing_egre.referencia = null
let ing_egre.banco = null
let ing_egre.otro_valor = 0.00
let ing_egre.valor_efectivo = 0.00
let ing_egre.observacion = null
let insertar = "NO"
let descripcion_cliente = null
let descripcion_cia = null
let descripcion_banco = null
let descripcion_doc = null
let num_oc = 0
let status_mov = 0
let arr = 0
let scr = 0
let idx = 0
let arr2 = 0
let scr2 = 0
let num_trans = 0
let num_dev = 0
let valor_total = 0
let total_desglozado = 0
let total_dev_desg = 0
let monto_pagado = 0
let total_devolver = 0
let desglozar = "NO"
let desglozar_Dev = "NO"
let insertar = "NO"
DISPLAY BY NAME DESCRIPCION_CLIENTE,
DESCRIPCION_CIA,DESCRIPCION_BANCO,
descripcion_doc,VALOR_TOTAL
call adicionar2()
COMMAND "Reimprimir" "Reimprime recibos realizados"
let int_flag = false
CLEAR FORM
let int_flag = false
let cotiza.tipo_doc = null
let cotiza.orden = null
let ing_egre.tipo_doc = null
let ing_egre.tipo_cliente = null
let ing_egre.sec_cliente = null
let ing_egre.tipo_tarjeta = null
let ing_egre.referencia = null
let ing_egre.banco = null
let ing_egre.otro_valor = 0.00
let ing_egre.valor_efectivo = 0.00
let ing_egre.observacion = null
let insertar = "NO"
let descripcion_cliente = null
let descripcion_cia = null
let descripcion_banco = null
let descripcion_doc = null
let num_oc = 0
let status_mov = 0
let arr = 0
let scr = 0
let idx = 0
let arr2 = 0
let scr2 = 0
let num_trans = 0
let num_dev = 0
let valor_total = 0
let total_desglozado = 0
let total_dev_desg = 0
let monto_pagado = 0
let total_devolver = 0
let desglozar = "NO"
let desglozar_Dev = "NO"
let insertar = "NO"
call reimprime_caja()
COMMAND "Anular" "Anular Movimiento de caja"
let int_flag = false
CLEAR FORM
let int_flag = false
let cotiza.tipo_doc = null
let cotiza.orden = null
let ing_egre.tipo_doc = null
let ing_egre.tipo_cliente = null
let ing_egre.sec_cliente = null
let ing_egre.tipo_tarjeta = null
let ing_egre.referencia = null
let ing_egre.banco = null
let ing_egre.otro_valor = 0.00
let ing_egre.valor_efectivo = 0.00
let ing_egre.observacion = null
let insertar = "NO"
let descripcion_cliente = null
let descripcion_cia = null
let descripcion_banco = null
let descripcion_doc = null
let num_oc = 0
let status_mov = 0
let arr = 0
let scr = 0
let idx = 0
let arr2 = 0
let scr2 = 0
let num_trans = 0
let num_dev = 0
let valor_total = 0
let total_desglozado = 0
let total_dev_desg = 0
let monto_pagado = 0
let total_devolver = 0
let desglozar = "NO"
let desglozar_Dev = "NO"
let insertar = "NO"
call anular_caja()
COMMAND "Recuperar" "Recuperar Movimiento de caja"
let int_flag = false
CLEAR FORM
let int_flag = false
let cotiza.tipo_doc = null
let cotiza.orden = null
let ing_egre.tipo_doc = null
let ing_egre.tipo_cliente = null
let ing_egre.sec_cliente = null
let ing_egre.tipo_tarjeta = null
let ing_egre.referencia = null
let ing_egre.banco = null
let ing_egre.otro_valor = 0.00
let ing_egre.valor_efectivo = 0.00
let ing_egre.observacion = null
let insertar = "NO"
let descripcion_cliente = null
let descripcion_cia = null
let descripcion_banco = null
let descripcion_doc = null
let num_oc = 0
let status_mov = 0
let arr = 0
let scr = 0
let idx = 0
let arr2 = 0
let scr2 = 0
let num_trans = 0
let num_dev = 0
let valor_total = 0
let total_desglozado = 0
let total_dev_desg = 0
let monto_pagado = 0
let total_devolver = 0
let desglozar = "NO"
let desglozar_Dev = "NO"
let insertar = "NO"
call recuperar_caja()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
function anular_caja()
input by name ing_egre.cod_cia,ing_egre.tipo_doc,num_oc
after field cod_cia
select unique nombre into descripcion_cia from companias where cod_comp=ing_egre.cod_cia
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
next field cod_cia
END IF
display by name descripcion_cia
after field tipo_doc
if (ing_egre.tipo_doc is not null) or (ing_egre.tipo_doc <> 0 ) then
select unique a.descripcion,a.status_mov,a.cxc into descripcion_doc,status_mov,cxc from cctb00021 a
where a.tipo_doc= ing_egre.tipo_doc and a.status_t is null and a.cod_cia=ing_egre.cod_cia
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
next field tipo_doc
END IF
else
CALL fgl_winmessage("Error","No valido","stop")
next field tipo_doc
end if
display by name descripcion_doc
after field num_oc
if (num_oc is not null) and (num_oc <> 0) and (num_oc > 0) then
select a.fecha,a.tipo_cliente,a.sec_cliente,a.factura,a.tipo_tarjeta,
a.referencia,a.valor_efectivo,a.otro_valor,a.observacion,a.devuelta,
a.num_trans,a.tipo_aplica,banco
into fecha_doc,ing_egre.tipo_cliente,ing_egre.sec_cliente,cotiza.orden,
ing_egre.tipo_tarjeta,ing_egre.referencia,ing_egre.valor_efectivo,
ing_egre.otro_valor,ing_egre.observacion,total_devolver,num_trans,
cotiza.tipo_doc,ing_egre.banco
from cctb00020 a
where a.tipo_doc=ing_egre.tipo_doc
and a.cod_cia=ing_egre.cod_cia
and a.num_oc=num_oc
and a.status_t is null
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("No existe","No se encontro el registro","stop")
return
END IF
if (ing_egre.tipo_cliente > 0) and (ing_egre.sec_cliente > 0) then
select a.nombre,a.telefono,a.num_rnc into descripcion_cliente,telefono_cli,num_rnc from vetb00004 a
where a.tipo_cliente=ing_egre.tipo_cliente
and a.sec_cliente=ing_egre.sec_cliente
end if
if ing_egre.valor_efectivo is null then
let ing_egre.valor_efectivo=0
end if
if ing_egre.otro_valor is null then
let ing_egre.otro_valor=0
end if
let valor_total=ing_egre.valor_efectivo+ing_egre.otro_valor
let monto_pagado=valor_total+total_devolver
if ing_egre.banco is not null then
select nombre_bc into descripcion_banco from bancos where cod_banco=ing_egre.banco
display by name descripcion_banco
end if
display by name valor_total,descripcion_cliente
display by name ing_egre.*
end if
LET opc2 = fgl_winquestion("Confirmacion","Desea anular el documento","Yes","Yes|No","question",1)
IF opc2="Yes" then
update cctb00020
set cctb00020.status_t="E",cctb00020.us_mod=suser_sname(),cctb00020.fech_mod=getdate()
where cctb00020.cod_cia=ing_egre.cod_cia
and cctb00020.tipo_doc=ing_egre.tipo_doc
and cctb00020.num_oc=num_oc
and status_t is null
call fgl_winmessage("Exito","Se ha anulado correctamente el documento","confirmation")
end if
end input
end function
function recuperar_caja()
input by name ing_egre.cod_cia,ing_egre.tipo_doc,num_oc
after field cod_cia
select unique nombre into descripcion_cia from companias where cod_comp=ing_egre.cod_cia
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
next field cod_cia
END IF
display by name descripcion_cia
after field tipo_doc
if (ing_egre.tipo_doc is not null) or (ing_egre.tipo_doc <> 0 ) then
select unique a.descripcion,a.status_mov,a.cxc into descripcion_doc,status_mov,cxc from cctb00021 a
where a.tipo_doc= ing_egre.tipo_doc and a.status_t is null and a.cod_cia=ing_egre.cod_cia
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
next field tipo_doc
END IF
else
CALL fgl_winmessage("Error","No valido","stop")
next field tipo_doc
end if
display by name descripcion_doc
after field num_oc
if (num_oc is not null) and (num_oc <> 0) and (num_oc > 0) then
select a.fecha,a.tipo_cliente,a.sec_cliente,a.factura,a.tipo_tarjeta,
a.referencia,a.valor_efectivo,a.otro_valor,a.observacion,a.devuelta,
a.num_trans,a.tipo_aplica,banco
into fecha_doc,ing_egre.tipo_cliente,ing_egre.sec_cliente,cotiza.orden,
ing_egre.tipo_tarjeta,ing_egre.referencia,ing_egre.valor_efectivo,
ing_egre.otro_valor,ing_egre.observacion,total_devolver,num_trans,
cotiza.tipo_doc,ing_egre.banco
from cctb00020 a
where a.tipo_doc=ing_egre.tipo_doc
and a.cod_cia=ing_egre.cod_cia
and a.num_oc=num_oc
and a.status_t is not null
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("No existe","No se encontro el registro","stop")
return
END IF
if (ing_egre.tipo_cliente > 0) and (ing_egre.sec_cliente > 0) then
select a.nombre,a.telefono,a.num_rnc into descripcion_cliente,telefono_cli,num_rnc from vetb00004 a
where a.tipo_cliente=ing_egre.tipo_cliente
and a.sec_cliente=ing_egre.sec_cliente
end if
if ing_egre.valor_efectivo is null then
let ing_egre.valor_efectivo=0
end if
if ing_egre.otro_valor is null then
let ing_egre.otro_valor=0
end if
let valor_total=ing_egre.valor_efectivo+ing_egre.otro_valor
let monto_pagado=valor_total+total_devolver
if ing_egre.banco is not null then
select nombre_bc into descripcion_banco from bancos where cod_banco=ing_egre.banco
display by name descripcion_banco
end if
display by name valor_total,descripcion_cliente
display by name ing_egre.*
end if
LET opc2 = fgl_winquestion("Confirmacion","Desea recuperar el documento","Yes","Yes|No","question",1)
IF opc2="Yes" then
update cctb00020
set cctb00020.status_t=null,cctb00020.us_mod=suser_sname(),cctb00020.fech_mod=getdate()
where cctb00020.cod_cia=ing_egre.cod_cia
and cctb00020.tipo_doc=ing_egre.tipo_doc
and cctb00020.num_oc=num_oc
and status_t is not null
call fgl_winmessage("Exito","Se ha recuperado correctamente el documento","confirmation")
end if
end input
end function
function reimprime_caja()
input by name ing_egre.cod_cia,ing_egre.tipo_doc,num_oc
after field cod_cia
select unique nombre into descripcion_cia from companias where cod_comp=ing_egre.cod_cia
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
next field cod_cia
END IF
display by name descripcion_cia
after field tipo_doc
if (ing_egre.tipo_doc is not null) or (ing_egre.tipo_doc <> 0 ) then
select unique a.descripcion,a.status_mov,a.cxc into descripcion_doc,status_mov,cxc from cctb00021 a
where a.tipo_doc= ing_egre.tipo_doc and a.status_t is null and a.cod_cia=ing_egre.cod_cia
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
next field tipo_doc
END IF
else
CALL fgl_winmessage("Error","No valido","stop")
next field tipo_doc
end if
display by name descripcion_doc
after field num_oc
if (num_oc is not null) and (num_oc <> 0) and (num_oc > 0) then
select a.fecha,a.tipo_cliente,a.sec_cliente,a.factura,a.tipo_tarjeta,
a.referencia,a.valor_efectivo,a.otro_valor,a.observacion,a.devuelta,
a.num_trans,a.tipo_aplica,banco
into fecha_doc,ing_egre.tipo_cliente,ing_egre.sec_cliente,cotiza.orden,
ing_egre.tipo_tarjeta,ing_egre.referencia,ing_egre.valor_efectivo,
ing_egre.otro_valor,ing_egre.observacion,total_devolver,num_trans,
cotiza.tipo_doc,ing_egre.banco
from cctb00020 a
where a.tipo_doc=ing_egre.tipo_doc
and a.cod_cia=ing_egre.cod_cia
and a.num_oc=num_oc
and a.status_t is null
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("No existe","No se encontro el registro","stop")
return
END IF
if (ing_egre.tipo_cliente > 0) and (ing_egre.sec_cliente > 0) then
select a.nombre,a.telefono,a.num_rnc into descripcion_cliente,telefono_cli,num_rnc from vetb00004 a
where a.tipo_cliente=ing_egre.tipo_cliente
and a.sec_cliente=ing_egre.sec_cliente
end if
let formdoc="Reimpresion"
if ing_egre.valor_efectivo is null then
let ing_egre.valor_efectivo=0
end if
if ing_egre.otro_valor is null then
let ing_egre.otro_valor=0
end if
let valor_total=ing_egre.valor_efectivo+ing_egre.otro_valor
let monto_pagado=valor_total+total_devolver
if ing_egre.banco is not null then
select nombre_bc into descripcion_banco from bancos where cod_banco=ing_egre.banco
display by name descripcion_banco
end if
display by name valor_total,descripcion_cliente
display by name ing_egre.*
end if
LET opc2 = fgl_winquestion("Confirmacion","Desea procesar la factura?","Yes","Yes|No","question",1)
IF opc2="Yes" then
call procesar_impresion()
return
end if
end input
end function
FUNCTION adicionar2()
let formdoc="ORIGINAL"
INPUT BY NAME ing_egre.* WITHOUT DEFAULTS
before input
select sucursal into ing_egre.cod_cia from seg0000 where usuario=suser_sname()
select nombre into descripcion_cia from companias where cod_comp=ing_egre.cod_cia
display by name ing_egre.cod_cia,descripcion_cia
let ing_egre.valor_efectivo=0.00
let ing_egre.otro_valor=0.00
display by name ing_egre.valor_efectivo,ing_egre.otro_valor
after field cajera
if (ing_egre.cajera is null) or (ing_egre.cajera=0 ) or (ing_egre.cajera < 0 )then
CALL fgl_winmessage("Error","No valido","stop")
next field cajera
end if
select unique c.nom1_emp +' '+ c.apell1_emp into nombre_cajera
from adtb00003 c
where c.num_emp=ing_egre.cajera
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
let nombre_cajera=""
display by name nombre_cajera
next field cajera
END IF
display by name nombre_cajera
after field cobrador
if (ing_egre.cobrador is not null) and (ing_egre.cobrador <> 0 ) or (ing_egre.cobrador > 0 )then
select unique c.nom1_emp +' '+ c.apell1_emp into nombre_cobrador
from adtb00003 c
where c.num_emp=ing_egre.cobrador
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
let nombre_cobrador=""
display by name nombre_cobrador
next field cobrador
END IF
display by name nombre_cobrador
end if
after field sec_cliente
if (ing_egre.sec_cliente is not null) and (ing_egre.tipo_cliente is not null) and (ing_egre.sec_cliente <> 0) and (ing_egre.tipo_cliente <> 0) then
select a.nombre,a.telefono,a.num_rnc into descripcion_cliente,telefono_cli,num_rnc from vetb00004 a
where a.tipo_cliente=ing_egre.tipo_cliente
and a.sec_cliente=ing_egre.sec_cliente
and a.status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
next field tipo_cliente
END IF
display by name descripcion_cliente
end if
after field tipo_doc
if (ing_egre.tipo_doc is not null) or (ing_egre.tipo_doc <> 0 ) then
select unique a.descripcion,a.status_mov,a.cxc into descripcion_doc,status_mov,cxc from cctb00021 a
where a.tipo_doc= ing_egre.tipo_doc and a.status_t is null and a.cod_cia=ing_egre.cod_cia
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
next field tipo_doc
END IF
else
CALL fgl_winmessage("Error","No valido","stop")
next field tipo_doc
end if
display by name descripcion_doc
if cxc="S" then
OPEN window vefmwd018 AT 4,10 with form "vefmwd018" ATTRIBUTE (BORDER, form line first + 1)
input by name COTIZA.TIPO_DOC,COTIZA.ORDEN
ON KEY (F10)
if (cotiza.monto_inicial is null) or (cotiza.monto_inicial =0) then
CALL fgl_winmessage("Error","Monto aplicar en Cero","stop")
return
end if
if cotiza.monto_inicial < 0 then
let cotiza.monto_inicial=cotiza.monto_inicial*-1
end if
if cotiza.cond_pago=1 then
CALL fgl_winmessage("Error","Esta cotizacion es a contado debe ser a credito","stop")
return
end if
LET ING_EGRE.TIPO_CLIENTE=COTIZA.TIPO_CLIENTE
LET ING_EGRE.SEC_CLIENTE=COTIZA.SEC_CLIENTE
EXIT INPUT
CLOSE WINDOW VEFMWD018
DISPLAY BY NAME ING_EGRE.TIPO_CLIENTE,ING_EGRE.SEC_CLIENTE
ON KEY (F5)
INITIALIZE COTIZA.* TO NULL
CALL fgl_winmessage("Cancelacion","Operacion Cancelada","stop")
RETURN
BEFORE INPUT
DISPLAY "ACEPTAR" TO ACEPTAR
DISPLAY "CANCELAR" TO CANCELAR
LET COTIZA.TIPO_DOC="CT"
DISPLAY COTIZA.TIPO_DOC
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
AFTER FIELD TIPO_DOC
IF COTIZA.TIPO_DOC=ING_EGRE.TIPO_DOC THEN
NEXT FIELD TIPO_DOC
END IF
after input
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
if cotiza.orden is not null then
IF COTIZA.TIPO_DOC="CT" THEN
LET SELEC_coti = "select a.cond_pago,a.nombre,a.tipo_cliente,a.sec_cliente,",
" a.neto,a.monto_adicional,a.monto_inicial,a.fecha_orden",
" from vetb00050 a ",
" where a.status_t is null and a.orden=",cotiza.orden,
" and a.cod_cia=",ing_egre.cod_cia
ELSE
LET SELEC_coti = "select 2,'',a.tipo_cliente,a.sec_cliente,",
" a.valor,0,a.valor,a.fecha_orig",
" from cctb00001 a ",
" where a.status_t is null and a.num_doc=",cotiza.orden,
" and a.cod_cia=",ing_egre.cod_cia,
" and a.tipo_doc='",cotiza.tipo_doc clipped,"'"
END IF
PREPARE busca2 FROM selec_coti
# CALL integridad()
#IF bandera = 1 THEN
# LET bandera = 0
# RETURN
#END IF
DECLARE datos2 SCROLL CURSOR FOR busca2
OPEN datos2
FETCH FIRST datos2 INTO cotiza.cond_pago,cotiza.nombre,cotiza.tipo_cliente,cotiza.sec_cliente,
cotiza.neto,cotiza.monto_adicional,cotiza.monto_inicial,cotiza.fecha_orden
# IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
# ELSE
# CALL integridad()
# IF bandera = 1 THEN
# LET bandera = 0
# RETURN
# END IF
# END IF
select unique a.nombre into cotiza.nombre from vetb00004 a
where a.tipo_cliente=cotiza.tipo_cliente and a.sec_cliente=cotiza.sec_cliente
display by name cotiza.nombre,cotiza.tipo_cliente,cotiza.sec_cliente,
cotiza.neto,cotiza.monto_adicional,cotiza.monto_inicial,cotiza.fecha_orden
NEXT FIELD ORDEN
end if
end input
close window vefmwd018
if cotiza.orden is null then
next field tipo_doc
else
next field sec_cliente
end if
end if
after field referencia
if ing_egre.tipo_tarjeta <> "Efectivo" then
if ing_egre.referencia is null then
CALL fgl_winmessage("Error","No valido","stop")
next field referencia
end if
end if
after field banco
if (ing_egre.banco is not null) and (ing_egre.tipo_tarjeta <> "Efectivo") and (ing_egre.banco <> 0)then
select nombre_bc into descripcion_banco from bancos where cod_banco=ing_egre.banco
display by name descripcion_banco
next field otro_valor
else
let descripcion_banco=null
display by name descripcion_banco
next field tipo_tarjeta
end if
after field tipo_tarjeta
IF CXC="S" THEN
if ING_EGRE.TIPO_TARJETA="Efectivo" then
let ing_egre.valor_efectivo=cotiza.monto_inicial
let ing_egre.otro_valor=0
display by name ing_egre.valor_efectivo
else
let ing_egre.otro_valor=cotiza.monto_inicial
let ing_egre.valor_efectivo=0
display by name ing_egre.otro_valor
end if
END IF
if ing_egre.tipo_tarjeta="Efectivo" then
let ing_egre.banco=null
display by name ing_egre.banco
next field valor_efectivo
else
next field referencia
end if
after field valor_efectivo
IF (CXC="S") and (ING_EGRE.TIPO_TARJETA="Efectivo" )THEN
if ing_egre.valor_efectivo <> cotiza.monto_inicial then
let ing_egre.valor_efectivo=cotiza.monto_inicial
display by name ing_egre.valor_efectivo
end if
END IF
if ing_egre.valor_efectivo is null then
let ing_egre.valor_efectivo=0.00
let desglozar="NO"
let desglozar_dev="NO"
end if
if ing_egre.otro_valor is null then
let ing_egre.otro_valor=0.00
let desglozar="NO"
let desglozar_dev="NO"
end if
if ing_egre.valor_efectivo is not null then
let valor_total=ing_egre.valor_efectivo + ing_egre.otro_valor
display by name valor_total
end if
if ing_egre.tipo_tarjeta="Efectivo" then
let ing_egre.otro_valor=0.00
let valor_total=ing_egre.valor_efectivo + ing_egre.otro_valor
let desglozar="SI"
display by name ing_egre.otro_valor, valor_total
else
if ing_egre.valor_Efectivo > 0 then
let valor_total=ing_egre.valor_efectivo + ing_egre.otro_valor
let desglozar="SI"
display by name ing_egre.otro_valor, ing_egre.valor_efectivo,valor_total
else
let valor_total=ing_egre.valor_efectivo + ing_egre.otro_valor
let desglozar="NO"
display by name ing_egre.otro_valor, ing_egre.valor_efectivo,valor_total
end if
end if
if ing_egre.tipo_tarjeta="Efectivo" and (ing_egre.valor_efectivo <=0) then
let ing_egre.otro_valor=0.00
CALL fgl_winmessage("Error","No valido","stop")
next field valor_efectivo
end if
after field otro_valor
IF (CXC="S") and (ING_EGRE.TIPO_TARJETA <> "Efectivo" )THEN
if ing_egre.otro_valor <> cotiza.monto_inicial then
let ing_egre.otro_valor=cotiza.monto_inicial
display by name ing_egre.otro_valor
end if
END IF
if ing_egre.valor_efectivo is null then
let ing_egre.valor_efectivo=0.00
let valor_total=ing_egre.valor_efectivo + ing_egre.otro_valor
let desglozar="NO"
display by name ing_egre.otro_valor, ing_egre.valor_efectivo,valor_total
end if
if ing_egre.otro_valor is null then
let ing_egre.otro_valor=0.00
end if
if (ing_egre.otro_valor is not null) and (ing_egre.otro_valor > 0)then
let valor_total=ing_egre.valor_efectivo + ing_egre.otro_valor
display by name valor_total,ing_egre.otro_valor
end if
after field observacion
if ((ing_egre.sec_cliente is null) or (ing_egre.tipo_cliente is null) or (ing_egre.sec_cliente=0) or (ing_egre.tipo_cliente=0)) and (ing_egre.observacion is null )then
CALL fgl_winmessage("Error","Debe especificar una observacion","stop")
next field observacion
end if
if ((ing_egre.sec_cliente is not null) or (ing_egre.tipo_cliente is not null) or (ing_egre.sec_cliente <> 0) or (ing_egre.tipo_cliente <> 0)) and (ing_egre.observacion is null )then
Let ing_egre.observacion=ing_egre.tipo_doc," aplicado a ",ing_egre.tipo_cliente using "#","-",ing_egre.sec_cliente using "####"," ",descripcion_cliente
display by name ing_egre.observacion
end if
if ing_egre.valor_efectivo > 0 then
let desglozar="SI"
else
if ing_egre.otro_valor > 0 then
let desglozar="NO"
let insertar="SI"
end if
let desglozar="NO"
end if
LET opc2 = fgl_winquestion("Confirmacion","Toda la informacion es correcta?","Yes","Yes|No","question",1)
IF opc2="Yes" then
if desglozar="SI" then
Call desglozar()
end if
if insertar="SI" then
LET opc2 = fgl_winquestion("Confirmacion","Seguro que desea realizar la transaccion?","Yes","Yes|No","question",1)
IF opc2="Yes" then
call inserta_veprmt014()
call procesar_impresion()
else
next field tipo_doc
end if
end if
# else
# if insertar="SI" then
# LET opc2 = fgl_winquestion("Confirmacion","Seguro que desea realizar la transaccion?","Yes","Yes|No","question",1)
# IF opc2="Yes" then
# call inserta_veprmt014()
# else
# next field tipo_doc
# end if
# end if
# end if
# else
# if insertar="SI" then
# LET opc2 = fgl_winquestion("Confirmacion","Seguro que desea realizar la transaccion?","Yes","Yes|No","question",1)
# IF opc2="Yes" then
# call inserta_veprmt014()
# else
# next field tipo_doc
# end if
# end if
#End if
else
next field tipo_doc
end if
END INPUT
end function
Function inserta_veprmt014()
let fecha_doc=today
#buscar secuencia de la tabla de tipos de documentos
select unique secuencia into num_oc from cctb00021 a
where a.cod_cia= ing_egre.cod_cia and a.tipo_doc=ing_egre.tipo_doc and a.status_t is null
IF STATUS = NOTFOUND THEN
return
END IF
if num_oc is null then
let num_oc =0
end if
let num_oc=num_oc+1
#busco el numero de transaccion.
select unique secuencia into num_trans from cctb00021 a
where a.tipo_doc="TS" and a.status_t is null and a.cod_cia=ing_egre.cod_cia
#SI NO EXISTE INSERTO EL REGISTRO DE LA SECUENCIA DE TRANSACCION
IF STATUS = NOTFOUND THEN
insert into cctb00021(cod_cia,tipo_doc,descripcion,status_mov,status_t,us_crea,fech_crea,secuencia)
values(ing_egre.cod_cia,"TS","TRANSACCIONES",0,NULL,SUSER_SNAME(),GETDATE(),0)
LET NUM_TRANS=0
END IF
if NUM_TRANS is null then
let num_trans =0
end if
let NUM_TRANS=num_TRANS+1
update cctb00021
set cctb00021 .secuencia=NUM_TRANS
where cctb00021.tipo_doc="TS"
and cctb00021.status_t is null
and cctb00021.cod_cia=ing_egre.cod_cia
#insertar datos en la tabla de cuadre
if status_mov=1 then
if cxc="S" then
insert into cctb00020(cod_cia,tipo_doc,num_oc,fecha,tipo_cliente,sec_cliente,tipo_tarjeta,banco,referencia,
valor_efectivo,otro_valor,observacion,factura,status_t,us_crea,fech_crea,devuelta,NUM_TRANS,
tipo_aplica,cajera,cobrador)
values(ing_egre.cod_cia,ing_egre.tipo_doc,num_oc,today,ing_egre.tipo_cliente,ing_egre.sec_cliente,
ing_egre.tipo_tarjeta,ing_egre.banco,ing_egre.referencia,ing_egre.valor_efectivo,ing_egre.otro_valor,
ing_egre.observacion,cotiza.orden,null,suser_sname(),getdate(),total_devolver,NUM_TRANS,cotiza.tipo_doc,
ing_egre.cajera,ing_egre.cobrador)
INSERT INTO cctb00001(cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,fecha_orig,
fecha_ven,aplica_a,valor,valor_efectivo,valor_cheque,costo,status_t,fech_crea,us_crea)
VALUES (ing_egre.cod_cia,ing_egre.tipo_doc,num_oc,
ing_egre.tipo_cliente,ing_egre.sec_cliente,getdate(),getdate(),
COTIZA.ORDEN,((ing_egre.valor_efectivo + ing_egre.otro_valor)*-1),0,0,0,null,getdate(),suser_sname())
else
insert into cctb00020(cod_cia,tipo_doc,num_oc,fecha,tipo_cliente,sec_cliente,tipo_tarjeta,banco,referencia,
valor_efectivo,otro_valor,observacion,factura,status_t,us_crea,fech_crea,devuelta,NUM_TRANS,
cajera,cobrador)
values(ing_egre.cod_cia,ing_egre.tipo_doc,num_oc,today,ing_egre.tipo_cliente,ing_egre.sec_cliente,
ing_egre.tipo_tarjeta,ing_egre.banco,ing_egre.referencia,ing_egre.valor_efectivo,ing_egre.otro_valor,
ing_egre.observacion,null,null,suser_sname(),getdate(),total_devolver,NUM_TRANS,ing_egre.cajera,ing_egre.cobrador)
end if
else
IF cxc="S" then
insert into cctb00020(cod_cia,tipo_doc,num_oc,fecha,tipo_cliente,sec_cliente,tipo_tarjeta,banco,referencia,
valor_efectivo,otro_valor,observacion,factura,status_t,us_crea,fech_crea,devuelta,NUM_TRANS,tipo_aplica,cajera,cobrador)
values(ing_egre.cod_cia,ing_egre.tipo_doc,num_oc,TODAY,ing_egre.tipo_cliente,ing_egre.sec_cliente,
ing_egre.tipo_tarjeta,ing_egre.banco,ing_egre.referencia,(ing_egre.valor_efectivo*(-1)),(ing_egre.otro_valor*(-1)),
ing_egre.observacion,cotiza.orden,null,suser_sname(),getdate(),total_devolver,NUM_TRANS,cotiza.tipo_doc,ing_egre.cajera,ing_egre.cobrador)
INSERT INTO cctb00001(cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,fecha_orig,
fecha_ven,aplica_a,valor,valor_efectivo,valor_cheque,costo,status_t,fech_crea,us_crea)
VALUES (ing_egre.cod_cia,ing_egre.tipo_doc,num_oc,
ing_egre.tipo_cliente,ing_egre.sec_cliente,getdate(),getdate(),
COTIZA.ORDEN,(ing_egre.valor_efectivo + ing_egre.otro_valor),0,0,0,null,getdate(),suser_sname())
else
insert into cctb00020(cod_cia,tipo_doc,num_oc,fecha,tipo_cliente,sec_cliente,tipo_tarjeta,banco,referencia,
valor_efectivo,otro_valor,observacion,factura,status_t,us_crea,fech_crea,devuelta,NUM_TRANS,cajera,cobrador)
values(ing_egre.cod_cia,ing_egre.tipo_doc,num_oc,TODAY,ing_egre.tipo_cliente,ing_egre.sec_cliente,
ing_egre.tipo_tarjeta,ing_egre.banco,ing_egre.referencia,(ing_egre.valor_efectivo*(-1)),(ing_egre.otro_valor*(-1)),
ing_egre.observacion,null,null,suser_sname(),getdate(),total_devolver,NUM_TRANS,ing_egre.cajera,ing_egre.cobrador)
end if
end if
#actualizar tabla de tipos de documentos
update cctb00021
set cctb00021.secuencia=num_oc
where cctb00021.tipo_doc=ing_egre.tipo_doc and cctb00021.cod_cia=ing_egre.cod_cia
and cctb00021.status_t is null
let idx=0
{
#inserta desgloce
if desglozar="SI" then
if status_mov=1 then
for idx=1 to arr
if desgloce[idx].cantidad > 0 then
insert into cctb00023(cod_cia,num_doc,fecha,cod_moneda,cantidad,valor,tipo_doc,tasa,status_t,us_crea,fech_crea,NUM_TRANS)
values(ing_egre.cod_cia,num_oc,getdate(),Desgloce[idx].cod_moneda,Desgloce[idx].cantidad,Desgloce[idx].valor,
ing_egre.tipo_doc,desgloce[idx].tasa,
null,suser_sname(),getdate(),NUM_TRANS)
end if
end for
else
for idx=1 to arr_count()
if desgloce[idx].cantidad > 0 then
insert into cctb00023(cod_cia,num_doc,fecha,cod_moneda,cantidad,valor,tipo_doc,tasa,status_t,us_crea,fech_crea,NUM_TRANS)
values(ing_egre.cod_cia,num_oc,getdate(),Desgloce[idx].cod_moneda,(Desgloce[idx].cantidad*(-1)),Desgloce[idx].valor,
ing_egre.tipo_doc,desgloce[idx].tasa,null,suser_sname(),getdate(),NUM_TRANS)
end if
end for
end if
end if
}
#idetifico si hay un devoluciones , por lo tanto genero un ks(salida por cambio)
{
if desglozar_dev="SI" then
#buscar secuencia de salida por cambio (ks)
select unique secuencia into num_dev from cctb00021 a
where a.tipo_doc="KS" and a.status_t is null and a.cod_cia=ing_egre.cod_cia
#SI NO EXISTE ENTONCES INSERTO ESTE TIPO DE DOCUMENTO YA QUE ES CASI OBLIGATORIO
IF STATUS = NOTFOUND THEN
insert into cctb00021(cod_cia,tipo_doc,descripcion,status_mov,status_t,us_crea,fech_crea,secuencia)
values(ing_egre.cod_cia,"KS","SALIDA POR CAMBIO",2,NULL,SUSER_SNAME(),GETDATE(),0)
LET NUM_DEV=0
END IF
if num_dev is null then
let num_dev =0
end if
let num_dev=num_dev+1
update cctb00021
set cctb00021 .secuencia=num_dev
where cctb00021.tipo_doc="KS"
and cctb00021.status_t is null
and cctb00021.cod_cia=ing_egre.cod_cia
for idx=1 to arr2
if desgloce_dev[idx].cantidad1 > 0 then
insert into cctb00023(cod_cia,num_doc,fecha,cod_moneda,cantidad,valor,tipo_doc,tasa,status_t,us_crea,fech_crea,NUM_TRANS)
values(ing_egre.cod_cia,num_dev,getdate(),Desgloce_dev[idx].cod_moneda1,
(Desgloce_dev[idx].cantidad1*(-1)),Desgloce_dev[idx].valor1,
"KS",desgloce_dev[idx].tasa1,null,suser_sname(),getdate(),NUM_TRANS)
end if
end for
end if
}
CALL FGL_WINMESSAGE("Gravado","Se ha gravado exitosamente,prepare la impresora para su impresion ","information")
End Function
function desglozar()
OPEN window vefmmt024 AT 4,10 with form "vefmmt024" ATTRIBUTE (BORDER, form line first + 1)
display ing_egre.valor_efectivo to total_a
input by name monto_pagado
before input
after input
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
Let insertar ="NO"
Let desglozar ="NO"
Let desglozar_Dev="NO"
return
END IF
let total_devolver=0
if monto_pagado > ing_egre.valor_efectivo then
let total_devolver=monto_pagado-ing_egre.valor_efectivo
display by name total_devolver
let insertar="SI"
end if
if monto_pagado < ing_egre.valor_efectivo then
CALL fgl_winmessage("Error","El monto a pagar no puede ser menor en efectivo a pagar","stop")
continue input
end if
let insertar="SI"
end input
close window vefmmt024
end function
########################################################
{
function desglozar()
OPEN window vefmmt024 AT 4,10 with form "vefmmt024" ATTRIBUTE (BORDER, form line first + 1)
display ing_egre.valor_efectivo to total_a
input by name monto_pagado
before input
if ing_egre.tipo_doc="ke" then
let monto_pagado=ing_egre.valor_efectivo
display by name monto_pagado
end if
after input
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
Let insertar ="NO"
Let desglozar ="NO"
Let desglozar_Dev="NO"
return
END IF
if monto_pagado > ing_egre.valor_efectivo then
let total_devolver=monto_pagado-ing_egre.valor_efectivo
display by name total_devolver
end if
if ing_egre.tipo_doc="ke" then
let total_devolver=ing_egre.valor_efectivo
display by name total_devolver
end if
if monto_pagado < ing_egre.valor_efectivo then
CALL fgl_winmessage("Error","El monto a pagar no puede ser menor en efectivo a pagar","stop")
continue input
end if
DECLARE busca_moneda CURSOR FOR
select a.cod_moneda,a.descripcion,b.simbolo,b.tasa_cambio,a.valor,0,0.00
from cctb00022 a,cotb00031 b
where a.status_t is null and b.status_t is null and b.cod_mon=a.tipo_moneda
order by a.valor
let idx=1
FOREACH busca_moneda INTO desgloce[idx].*
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
let idx=1
FOREACH busca_moneda INTO desgloce_dev[idx].*
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
end input
input array Desgloce WITHOUT DEFAULTS from desgloce_scr.*
before row
if (monto_pagado is null) or (monto_pagado=0) or (monto_pagado< ing_egre.valor_efectivo) then
exit input
close window vefmmt024
end if
let arr=arr_curr()
LET scr = scr_line()
after field cod_moneda
if desgloce[arr].cod_moneda is not null then
select a.descripcion,a.valor,b.simbolo,b.tasa_cambio
into desgloce[arr].descripcion_m,desgloce[arr].valor,
desgloce[arr].simbolo,desgloce[arr].tasa from cctb00022 a,cotb00031 b
where a.cod_moneda=desgloce[arr].cod_moneda and a.status_t is null
and b.cod_mon=a.tipo_moneda and b.status_t is null
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
next field cod_moneda
END IF
let idx=0
for idx=1 to arr_count()
if (desgloce[arr_curr()].cod_moneda= desgloce[idx].cod_moneda)and (idx<>arr_curr()) then
CALL fgl_winmessage("Error","Codigo Repetido","stop")
next field cod_moneda
end if
end for
end if
display desgloce[arr].descripcion_m to desgloce_scr[scr].descripcion_m
display desgloce[arr].valor to desgloce_scr[scr].valor
display desgloce[arr].tasa to desgloce_scr[scr].tasa
display desgloce[arr].simbolo to desgloce_scr[scr].simbolo
after field cantidad
if (desgloce[arr].cantidad is not null) and (desgloce[arr].cantidad >= 0 )then
let desgloce[arr].total=desgloce[arr].tasa*desgloce[arr].valor*desgloce[arr].cantidad
call after_desg()
if total_desglozado > monto_pagado then
CALL fgl_winmessage("Error","monto desglozado mayor que monto pagado","stop")
display by name total_desglozado
next field cod_moneda
end if
display desgloce[arr].total to desgloce_scr[scr].total
else
CALL fgl_winmessage("Error","No valido","stop")
next field cantidad
end if
after row
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
Let insertar ="NO"
Let desglozar ="NO"
Let desglozar_Dev="NO"
return
END IF
call after_desg()
if (total_desglozado=monto_pagado) then
if ing_egre.tipo_doc="ke" then
let total_devolver=ing_egre.valor_efectivo
display by name total_devolver
else
let total_devolver=monto_pagado - ing_egre.valor_efectivo
display by name total_devolver
end if
if (total_devolver is not null) and (total_devolver > 0)then
let desglozar_Dev="SI"
let arr2=arr_count()
call desglozar_dev()
exit input
end if
let insertar="SI"
end if
display by name total_desglozado
if total_desglozado > monto_pagado then
CALL fgl_winmessage("Error","monto desglozado mayor que monto pagado","stop")
next field cod_moneda
end if
end input
close window vefmmt024
end function
function desglozar_dev()
input array Desgloce_dev WITHOUT DEFAULTS from desgloce_dev_scr.*
before row
let arr2=arr_curr()
LET scr2 = scr_line()
after field cod_moneda1
if desgloce_dev[arr2].cod_moneda1 is not null then
select a.descripcion,a.valor,b.simbolo,b.tasa_cambio
into desgloce_dev[arr2].descripcion_m1,desgloce_dev[arr2].valor1,
desgloce_dev[arr].simbolo1,desgloce_dev[arr2].tasa1 from cctb00022 a,cotb00031 b
where a.cod_moneda=desgloce_dev[arr2].cod_moneda1 and a.status_t is null
and b.cod_mon=a.tipo_moneda and b.status_t is null
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("Error","No valido","stop")
next field cod_moneda1
END IF
let idx=0
for idx=1 to arr_count()
if (desgloce_dev[arr_curr()].cod_moneda1= desgloce_dev[idx].cod_moneda1)and (idx<>arr_curr()) then
CALL fgl_winmessage("Error","Codigo Repetido","stop")
next field cod_moneda1
end if
end for
end if
display desgloce_dev[arr2].descripcion_m1 to desgloce_dev_scr[scr2].descripcion_m1
display desgloce_dev[arr2].valor1 to desgloce_dev_scr[scr2].valor1
display desgloce_dev[arr2].tasa1 to desgloce_dev_scr[scr2].tasa1
display desgloce_dev[arr2].simbolo1 to desgloce_dev_scr[scr2].simbolo1
after field cantidad1
if (desgloce_dev[arr2].cantidad1 is not null) and (desgloce_dev[arr2].cantidad1 >= 0 )then
let desgloce_dev[arr2].total1=desgloce_dev[arr2].tasa1*desgloce_dev[arr2].valor1*desgloce_dev[arr2].cantidad1
call after_desg_dev()
if total_dev_desg > total_devolver then
CALL fgl_winmessage("Error","monto a devolver mayor que total a devolver","stop")
display by name total_dev_desg
next field cod_moneda1
end if
display desgloce_dev[arr2].total1 to desgloce_dev_scr[scr2].total1
else
CALL fgl_winmessage("Error","No valido","stop")
next field cantidad1
end if
after row
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
Let insertar ="NO"
Let desglozar ="NO"
Let desglozar_Dev="NO"
return
END IF
call after_desg_dev()
if total_dev_desg=total_devolver then
let insertar="SI"
let arr2=arr_count()
return
end if
display by name total_dev_desg
end input
end function
function after_desg_dev()
let idx=0
let total_dev_desg=0
for idx=1 to arr_count()
if desgloce_Dev[idx].cod_moneda1 is not null then
let total_dev_desg=total_dev_desg + desgloce_dev[idx].total1
end if
end for
display by name total_dev_desg
end function
function after_desg()
let idx=0
let total_desglozado=0
for idx=1 to arr_count()
if desgloce[idx].cod_moneda is not null then
let total_desglozado=total_desglozado + desgloce[idx].total
end if
end for
display by name total_desglozado
end function
}
########################################################
function procesar_impresion()
LET impresor = FGL_GETENV("IMP")
CALL defecto(impresor) RETURNING negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT rpt_ing_egre TO archivo
OUTPUT TO REPORT rpt_ing_egre(ING_EGRE.*)
FINISH REPORT rpt_ing_egre
Run imprime
END FUNCTION
REPORT rpt_ing_egre(x)
DEFINE x RECORD
cod_cia like cctb00020.cod_cia,
tipo_doc like cctb00021.tipo_doc,
tipo_cliente like cctb00020.tipo_cliente,
sec_cliente like cctb00020.sec_cliente,
cajera like cctb00020.cajera,
cobrador like cctb00020.cobrador,
tipo_tarjeta like cctb00020.tipo_tarjeta,
referencia like cctb00020.referencia,
banco like cctb00020.banco,
otro_valor like cctb00020.otro_valor,
valor_efectivo like cctb00020.valor_efectivo,
observacion like cctb00020.observacion
END RECORD
define l integer
DEFINE hora CHAR(5),
pfecha DATE,
imprime CHAR(1),
telefono CHAR(30)
OUTPUT
TOP MARGIN 0
PAGE LENGTH 66
LEFT MARGIN 0
FORMAT
PAGE HEADER
{
LET hora = time
LET l = (80 - LENGTH (descripcion_cia)) / 2
PRINT COLUMN 1, letras.doce
PRINT COLUMN 1, "veprmt014",
COLUMN l, descripcion_cia clipped,
COLUMN 90, "Trans: ",num_trans using "#########"
LET l = (80 - LENGTH (descripcion_doc)) / 2
PRINT COLUMN l, descripcion_doc,
COLUMN 90, today using "dd/mm/yyyy"," ",hora
}
LET lj = (80 - LENGTH(FORMDOC CLIPPED))/2
PRINT COLUMN 1, "veprmt014",
COLUMN LJ,formdoc CLIPPED
SELECT a.* INTO p_companias.* FROM companias a WHERE a.cod_comp = ing_egre.cod_cia
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
LET hora = time
PRINT COLUMN 3, doce
PRINT COLUMN 10,doble_on,
COLUMN 14,negrilla_on,
COLUMN 19, p_companias.nombre,
negrillas_of,
COLUMN 40, "Pag. ",
COLUMN 45, pageno using "<<<<<"
LET lj = (80 - LENGTH(p_companias.direccion CLIPPED))/2
PRINT COLUMN lj,p_companias.direccion
LET telefono = "TELEFONO: ",p_companias.telefono," FAX:",p_companias.fax
LET lj = (80 - LENGTH(telefono CLIPPED))/2
PRINT COLUMN lj, telefono
LET telefono = "RNC: ",p_companias.rnc
LET lj = (80 - LENGTH(telefono CLIPPED))/2
PRINT COLUMN lj, telefono
LET l = (80 - LENGTH (descripcion_doc)) / 2
skip 1 lines
PRINT COLUMN l, descripcion_doc,
COLUMN 80, "Impreso:",today using "dd/mm/yyyy"," ",hora
if (cxc="S") or (cotiza.tipo_doc is not null) then
PRINT COLUMN 1,"Documento : ",x.tipo_doc clipped," ",num_oc using "#########", " Aplicado a ",cotiza.tipo_doc clipped," .No: ",cotiza.orden
PRINT COLUMN 1,"Fecha : ",fecha_doc using "dd/mm/yyyy"
else
PRINT COLUMN 1,"Documento: ",x.tipo_doc clipped," ",num_oc using "#########"
PRINT COLUMN 1,"Fecha: ",fecha_doc using "dd/mm/yyyy"
end if
PRINT COLUMN 1,"Cliente : ",x.tipo_cliente using "#","-",x.sec_cliente using "#####"," ",descripcion_cliente clipped
PRINT COLUMN 1,"Cedula : " ,num_rnc clipped,
COLUMN 26,"Telefono: ",telefono_cli clipped
PRINT COLUMN 1,"Observacion: ",x.observacion
skip 1 lines
PRINT COLUMN 1, "------",
"--------------------------------------------------" ,
"--------------------------------------------------"
{PRINT COLUMN 1,"Billete",
COLUMN 36,"Cantidad",
COLUMN 56,"Tasa",
COLUMN 66,"Valor",
COLUMN 76,"Total"
}
PRINT COLUMN 1, "------",
"--------------------------------------------------" ,
"--------------------------------------------------"
skip 1 lines
on every row
{
if desglozar="SI" then
for idx=1 to arr
if desgloce[idx].cantidad > 0 then
PRINT COLUMN 1, desgloce[idx].descripcion_m clipped,
COLUMN 33,desgloce[idx].cantidad using "###,###.##",
COLUMN 53,desgloce[idx].tasa using "###.##",
COLUMN 63,desgloce[idx].valor using "###,###",
COLUMN 73,desgloce[idx].total using "###,###,###.##"
end if
END FOR
end if
if desglozar_dev="SI" then
PRINT COLUMN 1,"-------------------------- DESGLOCE DE DEVUELTA (KS) SALIDA POR CAMBIO No.",
num_dev using "#####","--------------------------"
for idx=1 to arr2
if desgloce_dev[idx].cantidad1 > 0 then
PRINT COLUMN 1, desgloce_dev[idx].descripcion_m1 clipped,
COLUMN 33,desgloce_dev[idx].cantidad1 using "###,###.##",
COLUMN 53,desgloce_dev[idx].tasa1 using "###.##",
COLUMN 63,desgloce_dev[idx].valor1 using "###,###",
COLUMN 73,desgloce_dev[idx].total1 using "###,###,###.##"
end if
END FOR
end if
}
PAGE TRAILER
# SKIP 1 LINES
PRINT COLUMN 1, "------------------",
COLUMN 22, "------------------",
COLUMN 45, "------------------",
COLUMN 65, "------------------"
PRINT COLUMN 5, "Entregado Por",
COLUMN 24, "Recibido Por",
COLUMN 48, "Verificado Por",
COLUMN 68, "Aprobado Por"
# PRINT COLUMN 2,
#"Original: Cliente Copia: ",descripcion_cia clipped
PRINT letras.normal
ON LAST ROW
skip 1 lines
print column 75,"Valor Efectivo : ",x.valor_efectivo using "###,###,###.##"
print column 75,"Otro Valor : ",x.otro_valor using "###,###,###.##"
print column 75,"Monto A Pagar : ",valor_total using "###,###,###.##"
print column 75,"Monto Pagado : ",monto_pagado using "###,###,###.##"
print column 75,"A devolver : ",total_devolver using "###,###,###.##"
PRINT letras.comp_off
END REPORT