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

835 lines
25 KiB
Plaintext

{
-----------------------------------------------------------------------------
PROGRAMA : VEPRMT035
OBJETIVO : Mantenimiento de notas de credito
REALIZADO POR : Juan F. soto
FECHA : Junio 08, 1994
-----------------------------------------------------------------------------
}
GLOBALS
"veprgb000.4gl"
DEFINE arr_recibo ARRAY [200] OF RECORD
aplica_a LIKE cctb00001.aplica_a,
valor_pen DECIMAL(12,2),
desc_p LIKE cctb00001.monto_desc,
val_desc DECIMAL(12,2),
valor_pag DECIMAL(12,2)
END RECORD
DEFINE arr_itbi ARRAY[10] OF DECIMAL(12,2)
DEFINE nombre_emp,nom_cli CHAR(30)
DEFINE p_num_doc,aplicar INTEGER
DEFINE p_itbi,valor_fac,p_total,val_pen,valor2 DECIMAL(12,2)
DEFINE fecha1 DATE
DEFINE codi_cia SMALLINT
DEFINE nombre_cta CHAR(30)
DEFINE p_tipo_cliente,p_sec_cliente SMALLINT
####### Funcion para agregar un recibo de pago
FUNCTION veprmt035()
OPTIONS
FORM LINE 8,
ERROR LINE 24,
COMMENT LINE 22
CALL pantalla()
OPEN FORM vefmmt035 FROM "vefmmt035"
DISPLAY FORM vefmmt035
DISPLAY "veprmt035" AT 4,3
DISPLAY " Notas de Credito" AT 6,31
MENU "OPCION"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Supr> Cancela Operacion"
CALL ccpcad035()
COMMAND "Consultar-modificar"
"<Esc> Busca Registro <Supr> Cancela Operacion"
CALL ccpcmf035()
COMMAND "Salir"
EXIT MENU
END MENU
END FUNCTION
FUNCTION ccpcad035()
DEFINE porc_p DECIMAL(10,2)
DEFINE emp SMALLINT
DEFINE hoy DATE
LET hoy = null
LABEL volver:
LET recibo.fecha_orig = fecha1
# Control Secuencial de las notas de creditos
SELECT ult_recibo INTO p_num_doc FROM cctb00003
WHERE tipo_doc = "DE"
LET p_num_doc = p_num_doc + 1
LET recibo.num_doc = p_num_doc
DISPLAY BY NAME recibo.num_doc ATTRIBUTE (BOLD)
LET recibo.cod_emp_sec = null
LET recibo.fecha_orig = null
LET recibo.tipo_cliente = null
LET recibo.sec_cliente = null
LET recibo.itbi = 0
INPUT BY NAME recibo.* WITHOUT DEFAULTS
## VENTANAS PARA BUSCAR LOS CLIENTES Y LOS EMPLEADOS
{ ON KEY (CONTROL-W)
CASE
WHEN INFIELD(tipo_cliente)
CALL consulta_clientes()
LET recibo.tipo_cliente = cliente_dir.tipo_cliente
LET recibo.sec_cliente = cliente_dir.sec_cliente
SELECT nombre INTO nom_cli FROM vetb00004
WHERE tipo_cliente = recibo.tipo_cliente and
sec_cliente = recibo.sec_cliente
DISPLAY BY NAME recibo.tipo_cliente ATTRIBUTE (BOLD)
DISPLAY BY NAME recibo.sec_cliente ATTRIBUTE(BOLD)
DISPLAY BY NAME nom_cli ATTRIBUTE (BOLD)
NEXT FIELD cod_emp_sec
WHEN INFIELD(sec_cliente)
CALL consulta_clientes()
LET recibo.tipo_cliente = cliente_dir.tipo_cliente
LET recibo.sec_cliente = cliente_dir.sec_cliente
SELECT nombre INTO nom_cli FROM vetb00004
WHERE tipo_cliente = recibo.tipo_cliente and
sec_cliente = recibo.sec_cliente
DISPLAY BY NAME recibo.tipo_cliente ATTRIBUTE (BOLD)
DISPLAY BY NAME recibo.sec_cliente ATTRIBUTE(BOLD)
DISPLAY BY NAME nom_cli ATTRIBUTE (BOLD)
NEXT FIELD cod_emp_sec
WHEN INFIELD(cod_emp_sec)
CALL consulta_empleados()
LET recibo.cod_emp_sec = transportista.sec_transp
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
WHERE num_emp = recibo.cod_emp_sec
DISPLAY BY NAME recibo.cod_emp_sec ATTRIBUTE (BOLD)
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
DISPLAY BY NAME nombre_emp ATTRIBUTE (BOLD)
NEXT FIELD fecha_orig
END CASE
}
AFTER FIELD fecha_orig
IF recibo.fecha_orig IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_orig
END IF
LET p_fechas = recibo.fecha_orig
CALL prd()
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha_orig
END IF
LET fecha1 = recibo.fecha_orig
AFTER FIELD concepto
EXIT INPUT
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
FOR idx = 1 to 3
LET arr_recibo[idx].aplica_a = null
LET arr_recibo[idx].valor_pen = null
LET arr_recibo[idx].valor_pag = null
LET arr_recibo[idx].val_desc = null
DISPLAY arr_recibo[idx].aplica_a to s_recibo[idx].aplica_a
DISPLAY arr_recibo[idx].valor_pen to s_recibo[idx].valor_pen
DISPLAY arr_recibo[idx].valor_pag to s_recibo[idx].valor_pag
DISPLAY arr_recibo[idx].val_desc to s_recibo[idx].val_desc
END FOR
LABEL arreglo:
FOR idx = 1 TO 20
LET arr_recibo[idx].aplica_a = NULL
LET arr_recibo[idx].valor_pen = NULL
LET arr_recibo[idx].valor_pag = NULL
LET arr_recibo[idx].desc_p = NULL
END FOR
## AQUI SE INTRODUCEN LOS DATOS DEL ARREGLO
INPUT ARRAY arr_recibo WITHOUT DEFAULTS FROM s_recibo.*
## VENTANA PARA BUSCAR LOS DOCUMENTOS
BEFORE ROW
LET curr = arr_curr()
LET scr_l = scr_line()
LET p_itbi = 0
AFTER FIELD aplica_a
IF arr_recibo[curr].aplica_a IS NOT NULL THEN
LET bandera = 0
CALL repetir1()
IF bandera = 1 THEN
NEXT FIELD aplica_a
END IF
# Busca el valor pendiente de la factura
SELECT unique a.cod_sp,a.cod_sp_sec,a.cod_cia
INTO p_tipo_cliente,p_sec_cliente,codi_cia
FROM iptb00006 a
WHERE a.num_doc = arr_recibo[curr].aplica_a and
a.cod_mov = 12 and
a.fecha > "010494" and
a.status_t is null
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD aplica_a
END IF
IF recibo.tipo_cliente is null or
recibo.sec_cliente is null THEN
LET recibo.tipo_cliente = p_tipo_cliente
LET recibo.sec_cliente = p_sec_cliente
END IF
IF recibo.sec_cliente != p_sec_cliente THEN
LET numero_msg = 214
CALL msg(numero_msg)
NEXT FIELD aplica_a
END IF
SELECT a.sec_vend INTO recibo.cod_emp_sec
FROM vetb00028 a
WHERE a.tipo_cliente = recibo.tipo_cliente and
a.sec_cliente = recibo.sec_cliente
SELECT b.nombre INTO nom_cli FROM vetb00004 b
WHERE b.tipo_cliente = recibo.tipo_cliente and
b.sec_cliente = recibo.sec_cliente and
b.status_t is null
IF status = notfound THEN
LET nom_cli = "NO E X I S T E"
END IF
DISPLAY BY NAME recibo.tipo_cliente,recibo.sec_cliente,
nom_cli ATTRIBUTE (BOLD)
LET descrip2 = null
LET descrip3 = null
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
WHERE num_emp = recibo.cod_emp_sec
IF status = notfound THEN
LET nombre_emp = "NO E X I S T E"
ELSE
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
END IF
DISPLAY BY NAME recibo.cod_emp_sec,nombre_emp ATTRIBUTE (BOLD)
SET EXPLAIN ON
SELECT sum(a.cantidad_2*b.precio) INTO
valor_fac FROM iptb00006 a,vetb00025 b
WHERE a.num_doc = arr_recibo[curr].aplica_a and
a.cod_n = b.cod_n and
a.cod_grupo = b.cod_grupo and
a.cod_tipo = b.cod_tipo and
a.cod_sec = b.cod_sec and
a.cod_mov = 12 and
b.sec_cliente is null and
b.ventas = "1" and
a.fecha > "010194"
LET arr_recibo[curr].valor_pen = valor_fac
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
END IF
BEFORE FIELD desc_p
LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pen
DISPLAY arr_recibo[curr].valor_pen to s_recibo[scr_l].valor_pen
DISPLAY arr_recibo[curr].desc_p to s_recibo[scr_l].desc_p
AFTER FIELD desc_p
IF arr_recibo[curr].desc_p is null THEN
LET arr_recibo[curr].desc_p = 0
END IF
# El campo VALOR_PEN gruarda el valor bruto de la nota decredito obtenida
# por la multiplicacion de las cantidades devueltas por el movimiento 12
# por el precio actual del producto
LET arr_recibo[curr].val_desc = arr_recibo[curr].valor_pen *
(arr_recibo[curr].desc_p / 100)
LET arr_recibo[curr].valor_pag = arr_recibo[curr].valor_pag -
arr_recibo[curr].val_desc
# Calcula el itbi despues de restar el descuento al monto bruto
LET p_itbi = arr_recibo[curr].valor_pag * .08
LET recibo.itbi = recibo.itbi + p_itbi
DISPLAY BY NAME recibo.itbi
DISPLAY arr_recibo[curr].valor_pag to s_recibo[scr_l].valor_pag
DISPLAY arr_recibo[curr].val_desc to s_recibo[scr_l].val_desc
AFTER FIELD valor_pag
IF arr_recibo[curr].valor_pag is not null THEN
IF arr_recibo[curr].aplica_a IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD aplica_a
END IF
END IF
IF arr_recibo[curr].aplica_a is not null and
arr_recibo[curr].valor_pen is not null THEN
IF arr_recibo[curr].aplica_a IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD aplica_a
END IF
LET bandera = 0
CALL repetir1()
IF bandera = 1 THEN
NEXT FIELD aplica_a
END IF
IF arr_recibo[curr].valor_pag IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD valor_pag
END IF
LET p_total = 0
FOR idx = 1 TO arr_count()
IF arr_recibo[idx].valor_pag is not null THEN
LET p_total = p_total + arr_recibo[idx].valor_pag
END IF
END FOR
DISPLAY BY NAME p_total ATTRIBUTE(BOLD)
# Controla que el valor aplicado a las facturas no exceda el monto del recibo
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
EXIT INPUT
END INPUT
START REPORT credito TO "%USHOME%\\archivo"
UPDATE cctb00003 set ult_recibo = recibo.num_doc,
us_crea = user,
fech_crea = current,
us_mod = user,
fech_mod = current
WHERE tipo_doc in ("DE")
FOR idx = 1 to arr_count()
IF arr_recibo[idx].aplica_a is not null THEN
OUTPUT TO REPORT
credito
(recibo.*,arr_recibo[idx].*,nom_cli,descrip2,descrip3,codi_cia)
END IF
END FOR
FINISH REPORT credito
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET numero_msg = 1
CALL msg(numero_msg)
LET emp = recibo.cod_emp_sec
CLEAR FORM
GOTO volver
END FUNCTION
## Funcion para consultar/modificar un recibo de pago
FUNCTION ccpcmf035()
DEFINE usuario RECORD
us_crea CHAR(9),
fech_crea LIKE cctb00001.fech_crea
END RECORD
# WHENEVER ERROR CONTINUE
## SE PREPARA EL CRITERIO PARA CONSULTAR/MODIFICAR UN REGISTRO
CONSTRUCT CRITERIO ON num_doc,tipo_cliente,sec_cliente
FROM cctb00001.num_doc,
cctb00001.tipo_cliente,cctb00001.sec_cliente
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
LET selec = "SELECT UNIQUE num_doc,tipo_cliente,",
" sec_cliente,cod_emp_sec,fecha_orig ",
" FROM cctb00001 WHERE ",criterio clipped,
" and tipo_doc = 'DE' AND status_t is null ",
" ORDER BY 1,2"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO recibo.*
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
SELECT nombre INTO nom_cli FROM vetb00004
WHERE tipo_cliente = recibo.tipo_cliente and
sec_cliente = recibo.sec_cliente
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
WHERE num_emp = recibo.cod_emp_sec
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp
LABEL vuelve:
MENU "OPCION"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO recibo.*
IF status = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
SELECT nombre INTO nom_cli FROM vetb00004
WHERE tipo_cliente = recibo.tipo_cliente and
sec_cliente = recibo.sec_cliente
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
WHERE num_emp = recibo.cod_emp_sec
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO recibo.*
IF status = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
SELECT nombre INTO nom_cli FROM vetb00004
WHERE tipo_cliente = recibo.tipo_cliente and
sec_cliente = recibo.sec_cliente
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
WHERE num_emp = recibo.cod_emp_sec
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO recibo.*
IF status = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
SELECT nombre INTO nom_cli FROM vetb00004
WHERE tipo_cliente = recibo.tipo_cliente and
sec_cliente = recibo.sec_cliente
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
WHERE num_emp = recibo.cod_emp_sec
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO recibo.*
IF status = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
SELECT nombre INTO nom_cli FROM vetb00004
WHERE tipo_cliente = recibo.tipo_cliente and
sec_cliente = recibo.sec_cliente
SELECT nom1_emp,apell1_emp INTO descrip2,descrip3 FROM adtb00003
WHERE num_emp = recibo.cod_emp_sec
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp
COMMAND KEY ("N") "aNular"
LET p_fechas = recibo.fecha_orig
CALL prd()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
## AQUI SE REALIZA LA ANULACION DE UN REGISTRO
UPDATE cctb00001 set status_t = "E"
WHERE tipo_doc = "DE" and
num_doc = recibo.num_doc
LET numero_msg = 82
CALL msg(numero_msg)
COMMAND "Retornar"
CLEAR FORM
FOR idx = 1 to 3
LET arr_recibo[idx].aplica_a = null
LET arr_recibo[idx].valor_pen = null
LET arr_recibo[idx].valor_pag = null
DISPLAY arr_recibo[idx].aplica_a to s_recibo[idx].aplica_a
DISPLAY arr_recibo[idx].valor_pen to s_recibo[idx].valor_pen
DISPLAY arr_recibo[idx].valor_pag to s_recibo[idx].valor_pag
END FOR
EXIT MENU
END MENU
END FUNCTION
FUNCTION repetir1()
DEFINE ant_art RECORD
aplica_a INTEGER,
valor_pag INTEGER
END RECORD
LET ant_art.aplica_a = arr_recibo[curr].aplica_a
LET ant_art.valor_pag = arr_recibo[curr].valor_pag
FOR idx = 1 to arr_count()
IF idx != curr THEN
IF arr_recibo[idx].aplica_a IS NOT NULL AND
arr_recibo[idx].valor_pag IS NOT NULL THEN
IF arr_recibo[idx].aplica_a = ant_art.aplica_a AND
arr_recibo[idx].valor_pag = ant_art.valor_pag THEN
LET numero_msg = 21
CALL msg(numero_msg)
LET bandera = 1
ELSE
IF bandera != 1 THEN
LET bandera = 0
END IF
END IF
END IF
END IF
END FOR
END FUNCTION
{
FUNCTION consulta_clientes()
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET int_flag = false
CONSTRUCT criterio ON a.nombre FROM nombre
LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre ",
" FROM vetb00004 a",
" WHERE ",
"a.status_t is null AND ",
criterio clipped,
"ORDER BY 1,2 "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO salir_consulta_c
END IF
PREPARE busca_clientes FROM selec2
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
END IF
END IF
DECLARE buscar_clientes CURSOR FOR busca_clientes
LET idx = 1
FOREACH buscar_clientes INTO arr_clientes[idx].*
IF status = NOTFOUND THEN
EXIT FOREACH
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT FOREACH
END IF
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
MESSAGE " <Esc> Selecciona Cliente donde esta el cursor"
DISPLAY ARRAY arr_clientes TO s_clientes.*
LET curr1 = arr_curr()
LET cliente_dir.tipo_cliente = arr_clientes[curr1].tipo_cliente
LET cliente_dir.sec_cliente = arr_clientes[curr1].sec_cliente
LET descrip1 = arr_clientes[curr1].nombre
LABEL salir_consulta_c:
CLOSE WINDOW busqueda
END FUNCTION
FUNCTION consulta_empleados()
OPEN WINDOW busqueda2 AT 7,12 WITH FORM "vefmwd001"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET int_flag = false
CONSTRUCT criterio ON a.nom1_emp FROM descrip6
LET selec2 = "SELECT num_emp,a.nom1_emp,a.apell1_emp ",
" FROM adtb00003 a",
" WHERE ",
"a.status_t is null AND ",
criterio clipped,
"ORDER BY 1 "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO salir_consulta_e
END IF
PREPARE busca_empleados FROM selec2
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
END IF
END IF
DECLARE buscar_empleados CURSOR FOR busca_empleados
LET idx = 1
FOREACH buscar_empleados INTO arr_empleados[idx].*
IF status = NOTFOUND THEN
EXIT FOREACH
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT FOREACH
END IF
LET empleados[idx].cod_emp_sec = arr_empleados[idx].num_emp
LET empleados[idx].descrip6 =
arr_empleados[idx].nom1_emp clipped," ",arr_empleados[idx].apell1_emp clipped
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
DISPLAY ARRAY empleados TO s_empleados.*
LET curr1 = arr_curr()
LET transportista.sec_transp = empleados[curr1].cod_emp_sec
LET descrip6 = empleados[curr1].descrip6
LABEL salir_consulta_e:
CLOSE WINDOW busqueda2
END FUNCTION
}
REPORT credito(x,z,nombre_cli,nombre,apellido,cia)
DEFINE x RECORD
num_doc LIKE cctb00001.num_doc,
tipo_cliente LIKE cctb00001.tipo_cliente,
sec_cliente LIKE cctb00001.sec_cliente,
cod_emp_sec LIKE cctb00001.cod_emp_sec,
fecha_orig LIKE cctb00001.fecha_orig ,
itbi DECIMAL(12,2),
concepto CHAR(60)
END RECORD
DEFINE z RECORD
aplica_a LIKE cctb00001.aplica_a,
valor_pen DECIMAL(12,2),
desc_p LIKE cctb00001.monto_desc,
valor_desc DECIMAL(12,2),
valor_pag DECIMAL(12,2)
END RECORD
DEFINE cia SMALLINT
DEFINE total_nc,total_bruto,sub_total,total_desc,itbis DECIMAL(12,2)
DEFINE nombre_cli,nombre,apellido CHAR(30)
DEFINE comp_on,comp_off,negrillas_on,negrillas_off,doble_on,doble_off CHAR(2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 4
PAGE LENGTH 33
ORDER BY x.num_doc
FORMAT
BEFORE GROUP OF x.num_doc
LET negrillas_on = ASCII 27, ASCII 71
LET negrillas_off = ASCII 27, ASCII 72
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET comp_off = ASCII 18
LET comp_on = ASCII 15
PRINT comp_off
PRINT COLUMN 1, negrillas_on
PRINT COLUMN 17, "E L E C T R O D O M E S T I C O S J U V I A R",
COLUMN 70, "Pag.",
COLUMN 74, pageno using "###"
PRINT COLUMN 28, "Sistema de Ventas ",
COLUMN 70, today using "dd/mm/yyyy"
PRINT COLUMN 70, time
PRINT COLUMN 22,doble_on,negrillas_on,"NOTAS DE CREDITO",doble_off,
negrillas_off
PRINT negrillas_on
PRINT COLUMN 1, "Numero :",doble_on,x.num_doc using "&&&&&&",doble_off,
negrillas_off
PRINT COLUMN 1, "CLiente :",x.tipo_cliente using "&&","-",x.sec_cliente
using "&&&&"," ",nombre_cli
PRINT COLUMN 1, "Vendedor: ",x.cod_emp_sec using "&&&&"," ",nombre clipped,",",
apellido
PRINT COLUMN 1, "Fecha :",x.fecha_orig using "dd/mm/yy"
PRINT COLUMN 1, "Concepto :",x.concepto
LET nombre = null
LET apellido = null
LET nombre_cli = null
PRINT COLUMN 1, negrillas_on,
"--------------------------------------------------------------"
PRINT COLUMN 4, "Documento",
COLUMN 16, "Valor",
COLUMN 24, "Porc",
COLUMN 32, "Valor",
COLUMN 45, "Valor"
PRINT COLUMN 4, "Almacen",
COLUMN 16, "Bruto",
COLUMN 24, "Desc.",
COLUMN 32, "Descuento",
COLUMN 45, "Acreditado"
PRINT COLUMN 1,
"--------------------------------------------------------------",negrillas_off
LET total_bruto = 0
LET total_desc = 0
LET sub_total = 0
ON EVERY ROW
PRINT COLUMN 4, z.aplica_a using "&&&&&&",
COLUMN 14, z.valor_pen using "##,###.##",
COLUMN 24, z.desc_p using "%##.##",
COLUMN 32, z.valor_desc using "##,###.##",
COLUMN 45, Z.valor_pag using "##,###.##"
LET total_bruto = total_bruto + z.valor_pen
LET total_desc = total_desc + z.valor_desc
LET sub_total = sub_total + z.valor_pag
AFTER GROUP OF x.num_doc
PRINT COLUMN 14, "---------",
COLUMN 32, "----------",
COLUMN 45, "----------"
PRINT COLUMN 4, "Sub-Total",
COLUMN 13, total_bruto using "###,###.##",
COLUMN 31, total_desc using "###,###.##",
COLUMN 44, sub_total using "###,###.##"
PRINT COLUMN 4, "Itbi 8% ",
COLUMN 45, x.itbi using "##,###.##"
PRINT COLUMN 45,"----------"
PRINT COLUMN 44, sub_total + x.itbi using "###,###.##"
LET total_nc = sub_total + x.itbi
LET total_nc = total_nc - total_desc
## Agrega registro al la tabla de cuentas por cobrar
# Se esta tomando el campo VALOR_EFECTIVO para guardar el itbi,
# VALOR_CHEQUE para guardar el total bruto,
INSERT INTO cctb00001 values (null,cia,"DE",
x.num_doc,
x.tipo_cliente,x.sec_cliente,null,
x.cod_emp_sec,x.fecha_orig,null,
x.num_doc,null,null,total_nc,
x.itbi,total_bruto,null,
total_desc,null,
USER,CURRENT,null,null)
PAGE TRAILER
SKIP 1 LINE
PRINT COLUMN 6, " Preparado Por",
COLUMN 40, " Autorizado Por"
PRINT
PRINT COLUMN 6, "---------------------------",
COLUMN 36, "---------------------------"
END REPORT