1249 lines
44 KiB
Plaintext
1249 lines
44 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
PROGRAMA : VEPRMT031
|
|
OBJETIVO : de notas de credito
|
|
REALIZADO POR : Juan F. soto
|
|
FECHA : Junio 08, 1994
|
|
MODIFICADO POR : Juan F. Soto
|
|
DESCRIPCION : Despues de la ultima modificacion que consistia en la
|
|
impresion de los codigos de los productos que se habian
|
|
devueltos. Esta Modificacion Consiste en quitar el codigo
|
|
del usuario 9999 y que el precio para el calculo de nota
|
|
de credito sea el precio de venta que tiene el producto en
|
|
el momento de hacer este documento.
|
|
FECHA : Agosto 1, 1995.
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"veprgb000.4gl"
|
|
|
|
DEFINE arr_recibo ARRAY [1] OF RECORD
|
|
cod_mov LIKE iptb00006.cod_mov,
|
|
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,
|
|
busca1,busca2,p_status,reimpresion,chitbis CHAR(10),
|
|
pitbis,pdescuento,xporc_Desc DEC(12,2),
|
|
xbodega VARCHAR(30)
|
|
|
|
|
|
DEFINE nombre_emp,nom_cli CHAR(30)
|
|
DEFINE p_num_doc INTEGER
|
|
DEFINE p_itbi,valor_fac,p_total DECIMAL(12,2)
|
|
DEFINE fecha1 DATE
|
|
DEFINE codi_cia SMALLINT
|
|
|
|
DEFINE p_tipo_cliente,p_sec_cliente SMALLINT,
|
|
salir,via CHAR(1),
|
|
ptotalb,xdescuento DEC(12,2)
|
|
|
|
DEFINE normal,negrilla_on,negrillas_of,comp_on,comp_off,doce,doble_on,doble_off
|
|
CHAR(3),
|
|
usuarios,clave CHAR(80),
|
|
HANDLER om.SaxDocumentHandler,
|
|
salida VARCHAR(4)
|
|
DEFINE p_companias RECORD LIKE companias.*,
|
|
r_output STRING
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(4) RETURNING impresor
|
|
# CONNECT to "marmotech" AS "IFMX"
|
|
CONNECT TO "smarmotech" USER usuarios USING clave
|
|
SELECT * INTO p_companias.* FROM companias
|
|
CALL veprmt031()
|
|
END MAIN
|
|
|
|
|
|
####### Funcion para agregar un recibo de pago
|
|
|
|
FUNCTION veprmt031()
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 24,
|
|
COMMENT LINE 22,
|
|
PROMPT LINE 22
|
|
|
|
|
|
OPEN FORM vefmmt031 FROM "vefmmt031"
|
|
DISPLAY FORM vefmmt031
|
|
|
|
MENU
|
|
ON ACTION nuevo
|
|
|
|
CALL ccpcad001()
|
|
ON ACTION buscar
|
|
|
|
CALL ccpcmf001()
|
|
ON ACTION salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION ccpcad001()
|
|
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
|
|
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
|
|
LET reimpresion="N"
|
|
|
|
|
|
LET chitbis = fgl_winquestion("PREGUNTA","Esta nota de credito calcula ITBIS?","NO","NO|YES|CANCEL","QUESTION",0)
|
|
|
|
LET chitbis = UPSHIFT(chitbis)
|
|
|
|
INPUT BY NAME recibo.fecha_orig,recibo.concepto,fact_gral.bodega WITHOUT DEFAULTS
|
|
BEFORE INPUT
|
|
CALL bodegas(1)
|
|
## VENTANAS PARA BUSCAR LOS CLIENTES Y LOS EMPLEADOS
|
|
BEFORE FIELD fecha_orig
|
|
SELECT UNIQUE a.num_doc FROM cctb00001 a
|
|
WHERE a.tipo_doc = "NC" AND a.num_doc = recibo.num_doc
|
|
IF STATUS != NOTFOUND THEN
|
|
SELECT MAX(a.num_doc)+1 INTO recibo.num_doc FROM cctb00001 a
|
|
WHERE a.tipo_doc = "NC"
|
|
|
|
DISPLAY BY NAME recibo.num_doc ATTRIBUTE(BOLD)
|
|
END IF
|
|
|
|
LET recibo.fecha_orig = today
|
|
DISPLAY BY NAME recibo.fecha_orig
|
|
AFTER FIELD bodega
|
|
SELECT a.descripcion INTO xbodega FROM intb00009 a
|
|
WHERE a.cod_bodega = fact_gral.bodega
|
|
|
|
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 INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
IF fact_gral.bodega IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD bodega
|
|
END IF
|
|
END INPUT
|
|
|
|
LABEL arreglo:
|
|
|
|
## 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 fact_gral.bodega IS NULL THEN
|
|
CALL fgl_winmessage("ERROR","BODEGA EN BALNCO","INFO")
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
# Chequea que la devolucion tenga su nota de credito
|
|
SELECT unique a.num_cheque
|
|
FROM cctb00001 a
|
|
WHERE a.num_cheque = arr_recibo[curr].aplica_a AND
|
|
a.tipo_doc = "NC" AND a.banco = arr_recibo[curr].cod_mov AND
|
|
a.bodega = fact_gral.bodega and
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 364
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF bandera = 1 THEN
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
# Busca el codigo del cliente y chequea que el documento de almacen
|
|
# exista
|
|
LET fact_gral.factura = NULL
|
|
SELECT unique a.cod_sp,a.cod_sp_sec,a.cod_cia,a.factura,a.status_t
|
|
INTO p_tipo_cliente,p_sec_cliente,codi_cia,fact_gral.factura,
|
|
p_status
|
|
FROM iptb00006 a
|
|
WHERE (a.num_doc = arr_recibo[curr].aplica_a) and
|
|
(a.cod_mov = arr_recibo[curr].cod_mov) AND
|
|
(a.bodega = fact_gral.bodega)
|
|
|
|
|
|
IF status = notfound or
|
|
p_status = "E" 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
|
|
DISPLAY BY NAME fact_gral.factura
|
|
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,a.calle||' '||a.casa_num||' '||a.urbanizacion||' '||a.barrio,c.ventas
|
|
INTO nom_cli,fact_gral.direccion,fact_gral.ventas
|
|
FROM vetb00004 b,vetb00060 c,OUTER vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente AND
|
|
b.tipo_cliente = c.tipo_cliente
|
|
|
|
|
|
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)
|
|
# BUSCA PORCENTAJE ITBIS FACTURA
|
|
LET pitbis = 0
|
|
IF chitbis <> "NO" THEN
|
|
SELECT a.porc_itbi INTO pitbis FROM vetb00002 a
|
|
WHERE a.factura = fact_gral.factura
|
|
|
|
IF pitbis IS NULL OR pitbis = 0 THEN
|
|
CALL fgl_winmessage("ITBIS","ITBIS EN BLANCO","INFO")
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
|
|
IF fact_gral.bodega IS NULL THEN
|
|
CALL fgl_winmessage("BODEGA","BODEGA EN BLANCO","INFO")
|
|
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
LET busca1 = "S"
|
|
SELECT sum(a.cantidad_2*b.precio) INTO valor_fac
|
|
FROM iptb00006 a,vetb00003 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 = arr_recibo[curr].cod_mov)
|
|
and (b.factura = a.factura) AND
|
|
a.area = b.area AND
|
|
(a.bodega = fact_gral.bodega)
|
|
|
|
LET arr_recibo[curr].valor_pen = valor_fac
|
|
DISPLAY arr_recibo[curr].valor_pen TO s_recibo[scr_l].valor_pen
|
|
|
|
|
|
IF valor_fac IS NULL THEN
|
|
CALL fgl_winmessage("INFO","VALOR DEL PRODUCTO EN CERO","INFO")
|
|
NEXT FIELD aplica
|
|
LET busca2 = "S"
|
|
LET busca1 = "N"
|
|
{
|
|
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 = arr_recibo[curr].cod_mov) and
|
|
a.bodega = fact_gral.bodega
|
|
and b.ventas = "1" and b.tipo_cliente is null}
|
|
END IF
|
|
LET arr_recibo[curr].valor_pen = valor_fac
|
|
DISPLAY arr_recibo[curr].valor_pen TO s_recibo[scr_l].valor_pen
|
|
|
|
LET pdescuento = 0
|
|
# BUSCA EL DESCUENTO
|
|
SELECT SUM(a.cantidad_2 * b.precio *(b.cantidad_2/100)),AVG(b.cantidad_2) INTO pdescuento,xporc_desc
|
|
FROM iptb00006 a,vetb00003 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 = arr_recibo[curr].cod_mov)
|
|
and (b.factura = fact_gral.factura) AND a.area = b.area AND
|
|
a.bodega = fact_gral.bodega
|
|
IF pdescuento IS NULL THEN
|
|
LET pdescuento = 0
|
|
END IF
|
|
LET arr_recibo[curr].val_desc = pdescuento
|
|
LET arr_recibo[curr].desc_p = xporc_Desc
|
|
DISPLAY arr_recibo[curr].val_desc to s_recibo[scr_l].val_desc
|
|
DISPLAY arr_recibo[curr].desc_p to s_recibo[scr_l].desc_p
|
|
|
|
END IF
|
|
|
|
LET arr_recibo[curr].val_desc=pdescuento
|
|
|
|
|
|
# El campo VALOR_PEN gruarda el valor bruto de la nota de credito 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)
|
|
|
|
# Calcula el itbi despues de restar el descuento al monto bruto
|
|
|
|
IF chitbis = "YES" THEN
|
|
LET p_itbi = (arr_recibo[curr].valor_pen - arr_recibo[curr].val_desc) * (pitbis / 100)
|
|
LET recibo.itbi = recibo.itbi + p_itbi
|
|
ELSE
|
|
LET recibo.itbi = 0
|
|
END IF
|
|
|
|
LET arr_recibo[curr].valor_pag = (arr_recibo[curr].valor_pen -
|
|
arr_recibo[curr].val_desc) + 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].aplica_a IS NOT NULL THEN
|
|
IF arr_recibo[curr].valor_pag is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
|
|
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)
|
|
|
|
END IF
|
|
EXIT INPUT
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
IF arr_recibo[curr].aplica_a IS NOT NULL THEN
|
|
IF arr_recibo[curr].valor_pag is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD valor_pag
|
|
END IF
|
|
END IF
|
|
IF arr_recibo[curr].valor_pag is null THEN
|
|
LET arr_recibo[curr].valor_pag = 0
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
LET via = "S"
|
|
IF via = "S" THEN
|
|
INPUT BY NAME recibo.tipo_cliente,recibo.sec_cliente,recibo.cod_emp_sec WITHOUT DEFAULTS
|
|
|
|
AFTER FIELD sec_cliente
|
|
SELECT b.nombre,a.calle||' '||a.casa_num||' '||a.urbanizacion||' '||a.barrio
|
|
INTO nom_cli,fact_gral.direccion
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_cliente
|
|
END IF
|
|
DISPLAY BY NAME nom_cli
|
|
|
|
AFTER FIELD cod_emp_sec
|
|
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 nombre_emp
|
|
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
|
|
END IF
|
|
# SECUENCIA RECIBO
|
|
SELECT ult_recibo INTO p_num_doc FROM cctb00003
|
|
WHERE tipo_doc = "NC"
|
|
|
|
LET p_num_doc = p_num_doc + 1
|
|
LET recibo.num_doc = p_num_doc
|
|
DISPLAY BY NAME recibo.num_doc ATTRIBUTE (BOLD)
|
|
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
|
|
IF salida IS NULL THEN
|
|
LET salida = 'PDF'
|
|
END IF
|
|
|
|
CALL configureoutput(salida) RETURNING HANDLER
|
|
|
|
START REPORT cr_edito TO XML HANDLER HANDLER
|
|
|
|
|
|
IF arr_recibo[1].aplica_a is not null THEN
|
|
|
|
OUTPUT TO REPORT cr_edito (recibo.*,arr_recibo[1].*,nom_cli,
|
|
descrip2,descrip3,codi_cia)
|
|
END IF
|
|
|
|
FINISH REPORT cr_edito
|
|
#RUN imprime
|
|
|
|
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 ccpcmf001()
|
|
|
|
DEFINE usuario RECORD
|
|
us_crea CHAR(9),
|
|
fech_crea LIKE cctb00001.fech_crea
|
|
END RECORD
|
|
|
|
## SE PREPARA EL CRITERIO PARA CONSULTAR/MODIFICAR UN REGISTRO
|
|
CONSTRUCT CRITERIO ON a.num_doc,a.tipo_cliente,a.sec_cliente
|
|
FROM num_doc,tipo_cliente,
|
|
sec_cliente
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
LET reimpresion="N"
|
|
LET selec = "SELECT distinct a.num_doc,a.tipo_cliente,a.sec_cliente,a.cod_emp_sec, ",
|
|
" a.fecha_orig,a.valor_efectivo,b.comentario,a.banco,a.num_cheque,a.valor*-1,a.valor_cheque,a.monto_desc, ",
|
|
" b.bodega,b.factura ",
|
|
"FROM cctb00001 a, cctb00011 b ",
|
|
"WHERE ",criterio clipped," and a.tipo_doc = 'NC' AND ",
|
|
" a.num_doc = b.num_doc and a.tipo_doc = b.tipo_doc and a.status_t is null ORDER BY a.num_doc"
|
|
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO recibo.*,arr_recibo[1].cod_mov,arr_recibo[1].aplica_a,arr_recibo[1].valor_pag,ptotalb,xdescuento,
|
|
fact_gral.bodega,fact_gral.factura
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
CALL informacion()
|
|
|
|
LABEL vuelve:
|
|
MENU "OPCION"
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT datos INTO recibo.*,arr_recibo[1].cod_mov,arr_recibo[1].aplica_a,arr_recibo[1].valor_pag,ptotalb,xdescuento,
|
|
fact_gral.bodega,fact_gral.factura
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL informacion()
|
|
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO recibo.*,arr_recibo[1].cod_mov,arr_recibo[1].aplica_a,arr_recibo[1].valor_pag,ptotalb,xdescuento,
|
|
fact_gral.bodega
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
CALL informacion()
|
|
|
|
COMMAND "Primero"
|
|
"Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO recibo.*,arr_recibo[1].cod_mov,arr_recibo[1].aplica_a,arr_recibo[1].valor_pag,ptotalb,xdescuento,
|
|
fact_gral.bodega
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL informacion()
|
|
|
|
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO recibo.*,arr_recibo[1].cod_mov,arr_recibo[1].aplica_a,arr_recibo[1].valor_pag,ptotalb,xdescuento,
|
|
fact_gral.bodega
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL informacion()
|
|
COMMAND KEY ("N") "aNular"
|
|
LET p_fechas = recibo.fecha_orig
|
|
CALL prd()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
CONTINUE MENU
|
|
END IF
|
|
|
|
## AQUI SE REALIZA LA ANULACION DE UN REGISTRO
|
|
UPDATE cctb00001 set status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE tipo_doc = "NC" and num_doc = recibo.num_doc
|
|
|
|
LET numero_msg = 82
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND KEY("P") "imPrimir"
|
|
LET reimpresion = "S"
|
|
LET busca1 = "N"
|
|
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
IF salida IS NULL THEN
|
|
LET salida = 'PDF'
|
|
END IF
|
|
|
|
CALL configureoutput(salida) RETURNING HANDLER
|
|
|
|
START REPORT cr_edito TO XML HANDLER HANDLER
|
|
|
|
|
|
IF arr_recibo[1].aplica_a is not null THEN
|
|
OUTPUT TO REPORT cr_edito (recibo.*,arr_recibo[1].*,nom_cli,
|
|
descrip2,descrip3,codi_cia)
|
|
END IF
|
|
|
|
FINISH REPORT cr_edito
|
|
RUN imprime
|
|
|
|
COMMAND "Retornar"
|
|
CLEAR FORM
|
|
|
|
CALL arr_recibo.clear()
|
|
|
|
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 cr_edito(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
|
|
cod_mov LIKE iptb00006.cod_mov,
|
|
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,
|
|
doce,normal CHAR(2)
|
|
DEFINE reg_i RECORD
|
|
area SMALLINT,
|
|
cod_n INTEGER,
|
|
cod_grupo INTEGER,
|
|
cod_tipo INTEGER,
|
|
cod_sec INTEGER,
|
|
descrip_esp CHAR(30),
|
|
cantidad DEC(18,5),
|
|
precio DECIMAL(12,2),
|
|
descuento DEC(12,2)
|
|
END RECORD,
|
|
lj,j,i,h SMALLINT,
|
|
factura_ncf INT,
|
|
xtipo_doc 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 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET comp_off = ASCII 18
|
|
LET comp_on = ASCII 15
|
|
|
|
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
LET j = (90 - LENGTH(p_companias.direccion CLIPPED))/2
|
|
LET i = (90 - LENGTH(p_companias.telefono CLIPPED))/2
|
|
LET h = (90 - LENGTH(p_companias.rnc CLIPPED))/2
|
|
PRINT comp_on
|
|
PRINT COLUMN lj, normal,doble_on,p_companias.nombre CLIPPED
|
|
PRINT COLUMN j+3, p_companias.direccion
|
|
PRINT COLUMN i-9, "Tels : ",p_companias.telefono ,
|
|
" Fax : ",p_companias.fax
|
|
PRINT COLUMN h-1, "RNC : ",p_companias.rnc CLIPPED,
|
|
COLUMN 100, "Pag. ", pageno using "###"
|
|
PRINT COLUMN h, "NOTAS DE CREDITOS"
|
|
IF reimpresion = "S" THEN
|
|
PRINT COLUMN i,"RE-IMPRESION"
|
|
ELSE
|
|
PRINT " "
|
|
END IF
|
|
|
|
|
|
PRINT negrillas_on
|
|
|
|
LET total_bruto = 0
|
|
LET total_Desc = 0
|
|
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, "Direccion: ",fact_gral.direccion
|
|
PRINT COLUMN 1, "Vendedor : ",x.cod_emp_sec using "&&&&"," ",nombre clipped,",",
|
|
apellido
|
|
PRINT COLUMN 1, "Fecha : ",x.fecha_orig using "dd/mm/yy",negrillas_on
|
|
PRINT COLUMN 1, "Doc. Dev : ",z.aplica_a USING "&&&&&&"," Factura : ",fact_gral.factura USING "&&&&&&"
|
|
PRINT COLUMN 1, "Bodega : ",xbodega
|
|
PRINT COLUMN 1, "Concepto : ",x.concepto CLIPPED
|
|
|
|
PRINT COLUMN 1,"-----------------------------------------------------------",
|
|
"------------------------------------------"
|
|
PRINT COLUMN 1, "Producto",
|
|
COLUMN 53, "Cantidad",
|
|
COLUMN 64, "Precio",
|
|
COLUMN 74, "%Desc",
|
|
COLUMN 86, "Valor Desc",
|
|
COLUMN 97, "Total"
|
|
PRINT COLUMN 1,"-----------------------------------------------------------",
|
|
"------------------------------------------"
|
|
PRINT COLUMN 1, negrillas_off
|
|
|
|
AFTER GROUP OF x.num_doc
|
|
|
|
IF busca1 = "S" THEN
|
|
# DISPLAY "bodega ",fact_gral.bodega," COD_MOV ",z.cod_mov," aplica ",z.aplica_a
|
|
DECLARE venta1 CURSOR FOR
|
|
SELECT DISTINCT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,
|
|
SUM(a.cantidad_2),c.precio,avg(c.cantidad_2)
|
|
FROM iptb00006 a, iptb00002 b, vetb00003 c
|
|
WHERE 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_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND
|
|
a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND
|
|
a.factura = c.factura AND a.cod_mov = z.cod_mov AND
|
|
a.num_doc = z.aplica_a AND a.bodega = fact_gral.bodega AND a.area = c.area
|
|
GROUP BY a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,c.precio
|
|
ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
|
END IF
|
|
|
|
IF busca2 = "S" THEN
|
|
DECLARE venta2 CURSOR FOR
|
|
SELECT DISTINCT a.area, a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
|
|
c.descrip_esp,SUM(a.cantidad_2),b.precio,'0'
|
|
FROM iptb00006 a,vetb00025 b,iptb00002 c
|
|
WHERE (a.num_doc = z.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_n = c.cod_n) AND (a.cod_grupo=c.cod_grupo) AND
|
|
(a.cod_tipo = c.cod_tipo) AND (a.cod_sec = c.cod_sec) AND
|
|
(a.cod_mov = z.cod_mov) AND
|
|
a.bodega = fact_gral.bodega
|
|
and b.ventas = "1" and b.tipo_cliente is null
|
|
GROUP BY a.area, a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.precio, c.descrip_esp
|
|
END IF
|
|
|
|
LET total_bruto = 0
|
|
LET salir = "N"
|
|
IF busca1 = "S" THEN
|
|
FOREACH venta1 INTO reg_i.area,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.descrip_esp,
|
|
reg_i.cantidad,reg_i.precio,reg_i.descuento
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET total_bruto = total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
LET pdescuento = (reg_i.cantidad * reg_i.precio) * (reg_i.descuento/100)
|
|
LET total_desc = pdescuento + total_desc
|
|
|
|
PRINT COLUMN 1,reg_i.area," ", reg_i.cod_n USING "&&&&",'-',reg_i.cod_grupo USING "&&&&","-",
|
|
reg_i.cod_tipo USING "&&&","-",reg_i.cod_sec USING "&&&&",
|
|
" ",reg_i.descrip_esp CLIPPED,
|
|
COLUMN 40, reg_i.cantidad USING "###,###.#####",
|
|
2 spaces, reg_i.precio USING "##,###.##",
|
|
2 spaces, reg_i.descuento USING "##,###.##",
|
|
2 spaces, pdescuento USING "###,###.##",
|
|
COLUMN 88, reg_i.cantidad * reg_i.precio USING "###,###,###.##"
|
|
IF reimpresion = "N" THEN
|
|
INSERT INTO cctb00004 (tipo_Doc,num_Doc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,descuento,cod_mov,num_doc_almacen,bodega,
|
|
porc_Desc)
|
|
VALUES ('NC',x.num_doc,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.cantidad,reg_i.precio,pdescuento,
|
|
z.cod_mov,z.aplica_a,fact_gral.bodega,reg_i.descuento)
|
|
|
|
END IF
|
|
END FOREACH
|
|
END IF
|
|
|
|
IF busca2 = "S" THEN
|
|
FOREACH venta2 INTO reg_i.area,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.descrip_esp,
|
|
reg_i.cantidad,reg_i.precio,reg_i.descuento
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
LET pdescuento = (reg_i.cantidad * reg_i.precio) * (reg_i.descuento/100)
|
|
LET total_desc = pdescuento + total_desc
|
|
# LET reg_i.descuento = pdescuento
|
|
IF reimpresion = "N" THEN
|
|
LET total_bruto = total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
|
|
ELSE
|
|
LET total_bruto = ptotalb
|
|
END IF
|
|
|
|
PRINT COLUMN 1, reg_i.cod_n USING "&&&&",'-',reg_i.cod_grupo USING "&&&&","-",
|
|
reg_i.cod_tipo USING "&&&&","-",reg_i.cod_sec USING "&&&&",
|
|
" ",reg_i.descrip_esp CLIPPED,
|
|
COLUMN 40, reg_i.cantidad USING "###,###.####",
|
|
2 spaces, reg_i.precio USING "##,###.##",
|
|
2 spaces, reg_i.descuento USING "##,###.##",
|
|
2 spaces, pdescuento USING "###,###.##",
|
|
COLUMN 88, (reg_i.cantidad * reg_i.precio) - pdescuento
|
|
USING "###,###,###.##"
|
|
IF reimpresion = "N" THEN
|
|
INSERT INTO cctb00004 (tipo_Doc,num_Doc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,precio,descuento,cod_mov,num_doc_almacen,bodega,
|
|
porc_Desc)
|
|
VALUES ('NC',x.num_doc,reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.cantidad,reg_i.precio,pdescuento,
|
|
z.cod_mov,z.aplica_a,fact_gral.bodega,reg_i.descuento)
|
|
|
|
END IF
|
|
END FOREACH
|
|
END IF
|
|
IF reimpresion ="S" THEN
|
|
DECLARE busca_codigos CURSOR FOR
|
|
SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,a.cantidad,a.precio,a.porc_desc
|
|
FROM cctb00004 a,iptb00002 b
|
|
WHERE a.tipo_doc = 'NC' AND a.num_doc = x.num_doc 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
|
|
LET total_Desc = 0
|
|
LET total_bruto = 0
|
|
FOREACH busca_codigos INTO reg_i.cod_n,reg_i.cod_grupo,reg_i.cod_tipo,reg_i.cod_sec,reg_i.descrip_esp,
|
|
reg_i.cantidad,reg_i.precio,reg_i.descuento
|
|
|
|
IF reg_i.cantidad IS NULL THEN
|
|
LET reg_i.cantidad = 0
|
|
END IF
|
|
IF reg_i.precio IS NULL THEN
|
|
LET reg_i.precio = 0
|
|
END IF
|
|
|
|
LET pdescuento = (reg_i.cantidad * reg_i.precio) * (reg_i.descuento/100)
|
|
LET total_desc = pdescuento + total_desc
|
|
LET total_bruto = total_bruto + (reg_i.cantidad * reg_i.precio)
|
|
|
|
PRINT COLUMN 1, reg_i.cod_n USING "&&&&",'-',reg_i.cod_grupo USING "&&&&","-",
|
|
reg_i.cod_tipo USING "&&&&","-",reg_i.cod_sec USING "&&&&",
|
|
" ",reg_i.descrip_esp CLIPPED,
|
|
COLUMN 40, reg_i.cantidad USING "###,###.####",
|
|
2 spaces, reg_i.precio USING "##,###.##",
|
|
2 spaces, pdescuento USING "##,###.##",
|
|
COLUMN 88, (reg_i.cantidad * reg_i.precio) - pdescuento
|
|
USING "###,###,###.##"
|
|
END FOREACH
|
|
|
|
END IF
|
|
IF z.valor_desc IS NULL THEN
|
|
LET z.valor_desc = 0
|
|
END IF
|
|
IF pitbis IS NULL THEN LET pitbis = 0 END IF
|
|
IF x.itbi IS NULL THEN LET x.itbi = 0 END IF
|
|
IF reimpresion = "N" THEN
|
|
IF chitbis ="YES" THEN
|
|
LET x.itbi = (total_bruto - total_desc) * (pitbis/100)
|
|
ELSE
|
|
LET x.itbi = 0
|
|
END IF
|
|
END IF
|
|
PRINT COLUMN 88, "--------------"
|
|
PRINT COLUMN 60, " BRUTO : ",
|
|
COLUMN 88, total_bruto USING "###,###,###.##"
|
|
PRINT COLUMN 60, " DESC : ",
|
|
COLUMN 88, total_Desc using "---,---,###.##"
|
|
PRINT COLUMN 60, "SUB-TOTAL : ",
|
|
COLUMN 88, (total_bruto - total_desc) USING "---,---,###.##"
|
|
PRINT COLUMN 60, " ITBIS : ",pitbis USING "<<<.##","% : ",
|
|
COLUMN 88, x.itbi using "---,---,###.##"
|
|
PRINT COLUMN 60, " NETO : ",
|
|
COLUMN 88, total_bruto - total_desc + x.itbi USING "---,---,###.##"
|
|
|
|
LET total_nc = (total_bruto + x.itbi)
|
|
IF z.valor_desc IS NULL THEN
|
|
LET z.valor_desc = 0
|
|
END IF
|
|
IF x.itbi IS NULL THEN
|
|
LET x.itbi = 0
|
|
END IF
|
|
|
|
{
|
|
ACTUALIZACION DE LA TABLA DE CUENTAS POR COBRAR
|
|
===============================================
|
|
|
|
VALOR NETO (total_nc) SE GUARDA EN EL CAMPO: valor,
|
|
ITBI (x.itbi) SE GUARDA EN EL CAMPO: valor_efectivo,
|
|
EL VALOR BRUTO (total_bruto) SE GUARDA EN EN CAMPO: valor_cheque,
|
|
MONTO DE DESCUENTO(total_desc) EN EL CAMPO: monto_desc
|
|
EL CAMPO NUM_CHEQUE SE UTILIZA PARA EL NUMERO DE DOCUMENTOS
|
|
DE INVENTARIO DEL MOVIMIENTO 12 DE PRODUCTO TERMINADOS}
|
|
IF reimpresion= "N" THEN
|
|
IF chitbis = 'YES' THEN
|
|
LET chitbis = 'SI'
|
|
ELSE
|
|
LET chitbis = 'NO'
|
|
END IF
|
|
|
|
INSERT INTO cctb00011 (num_doc,tipo_doc,tipo_cliente,sec_cliente,comentario,chitbis,bodega,porc_itbis,valor_recibo,descuento,
|
|
monto_itbis,valor_bruto)
|
|
VALUES (x.num_doc,"NC",x.tipo_cliente,x.sec_cliente,recibo.concepto,chitbis,fact_gral.bodega,pitbis,total_nc,
|
|
total_desc,x.itbi,total_bruto)
|
|
|
|
LET total_nc = total_nc * -1
|
|
LET total_bruto = total_bruto * -1
|
|
IF fact_gral.ventas = '1' THEN
|
|
LET xtipo_doc ='FT'
|
|
ELSE
|
|
LET xtipo_Doc = 'FE'
|
|
END IF
|
|
INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig,
|
|
aplica_a,banco,num_cheque,valor,valor_efectivo,valor_cheque,monto_desc,
|
|
us_crea,fech_crea,bodega,tipo_doc_aplica ) VALUES
|
|
(cia,"NC",x.num_doc,x.tipo_cliente,
|
|
x.sec_cliente,x.cod_emp_sec,x.fecha_orig,
|
|
fact_gral.factura,z.cod_mov,z.aplica_a,
|
|
total_nc,x.itbi,
|
|
total_bruto,total_desc,
|
|
SUSER_SNAME(),GETDATE(),fact_gral.bodega,xtipo_doc)
|
|
|
|
{SET CONNECTION "IFMX"
|
|
LET factura_ncf = 0
|
|
SELECT a.factura INTO factura_ncf FROM vetb00002 a WHERE a.factura_c = fact_gral.factura
|
|
IF STATUS <> NOTFOUND THEN
|
|
INSERT INTO cctb00001 values (null,cia,"NC",x.num_doc,x.tipo_cliente,
|
|
x.sec_cliente,null,x.cod_emp_sec,x.fecha_orig,
|
|
null,factura_ncf,z.cod_mov,z.aplica_a,
|
|
total_nc,x.itbi,
|
|
total_bruto,null,total_desc,null,
|
|
SUSER_SNAME(),GETDATE(),null,null,fact_gral.bodega,fact_gral.factura)
|
|
ELSE
|
|
CALL fgl_winmessage("INFO","NO SE ENCONTRO FACTURA CON NCF","INFO")
|
|
END IF
|
|
}
|
|
END IF
|
|
PRINT normal
|
|
PAGE TRAILER
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 6, " Preparado Por",
|
|
COLUMN 40, " Autorizado Por"
|
|
|
|
PRINT " "
|
|
|
|
PRINT COLUMN 6, "---------------------------",
|
|
COLUMN 36, "---------------------------"
|
|
|
|
ON LAST ROW
|
|
IF reimpresion = "N" THEN
|
|
UPDATE cctb00003 set ult_recibo = x.num_doc,
|
|
us_crea = SUSER_SNAME(),
|
|
fech_crea = GETDATE(),
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE tipo_doc in ("NC")
|
|
END IF
|
|
END REPORT
|
|
|
|
FUNCTION integridad()
|
|
IF sqlca.sqlcode < 0 THEN
|
|
LET numero_msg = sqlca.sqlcode
|
|
CALL msg(numero_msg)
|
|
#DISPLAY numero_msg AT 23,70
|
|
LET bandera = 1
|
|
LET status = 0
|
|
#SLEEP 2
|
|
RETURN
|
|
END IF
|
|
RETURN
|
|
END FUNCTION
|
|
|
|
|
|
FUNCTION prd()
|
|
LET a_ano = year(p_fechas)
|
|
LET mes_control = MONTH(today)
|
|
LET mes_calc = mes_control
|
|
|
|
IF mes_calc = 01 THEN
|
|
LET mes_calc = 13
|
|
LET a_ano = year(today - 32)
|
|
END IF
|
|
|
|
#Aqui la funcion se posicionaba en dos meses para el control del documento
|
|
#LET mes_calc = mes_calc - 2
|
|
|
|
IF mes_calc <= 0 THEN
|
|
LET mes_calc = 12
|
|
LET a_ano = year(today) - 1
|
|
END IF
|
|
|
|
LET c_ano = year(today)
|
|
|
|
SELECT MIN(fecha_corte) INTO fecha_c FROM prdtable
|
|
WHERE fecha_corte >= p_fechas
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 58
|
|
CALL msg(numero_msg)
|
|
LET bandera = 1
|
|
END IF
|
|
|
|
SELECT MIN(dias_gracia) INTO dia FROM prdtable
|
|
WHERE fecha_corte = fecha_c
|
|
|
|
IF dia IS NULL THEN
|
|
LET dia = 0
|
|
END IF
|
|
|
|
SELECT UNIQUE a.usuario FROM seg0003 a
|
|
WHERE a.usuario = SUSER_SNAME()
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET fecha_c = fecha_c + dia
|
|
END IF
|
|
LET comp_fech = fecha_c
|
|
LET comp_fech1 = TODAY
|
|
|
|
IF comp_fech < comp_fech1 THEN
|
|
LET numero_msg = 57
|
|
CALL msg(numero_msg)
|
|
LET bandera = 1
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION informacion()
|
|
CALL bodegas(1)
|
|
SELECT a.descripcion INTO xbodega FROM intb00009 a
|
|
WHERE a.cod_bodega = fact_gral.bodega
|
|
|
|
SELECT b.nombre,a.calle||' '||a.casa_num||' '||a.urbanizacion||' '||a.barrio
|
|
INTO nom_cli,fact_gral.direccion
|
|
FROM vetb00004 b,vetb00005 a
|
|
WHERE (b.tipo_cliente = recibo.tipo_cliente) and
|
|
(b.sec_cliente = recibo.sec_cliente) AND
|
|
b.tipo_cliente = a.tipo_cliente AND
|
|
b.sec_cliente = a.sec_cliente
|
|
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO descrip2,descrip3 FROM adtb00003 a
|
|
WHERE a.num_emp = recibo.cod_emp_sec
|
|
|
|
LET nombre_emp = descrip2 clipped," ",descrip3 clipped
|
|
DISPLAY BY NAME recibo.*,nom_cli,nombre_emp,fact_gral.bodega
|
|
DISPLAY arr_recibo[1].cod_mov TO s_recibo[1].cod_mov
|
|
DISPLAY arr_recibo[1].aplica_a TO s_recibo[1].aplica_a
|
|
DISPLAY arr_recibo[1].valor_pag TO s_recibo[1].valor_pag
|
|
DISPLAY arr_recibo[1].valor_pag TO s_recibo[1].valor_pag
|
|
DISPLAY xdescuento TO s_recibo[1].val_desc
|
|
DISPLAY ptotalb TO s_recibo[1].valor_pen
|
|
|
|
END FUNCTION |