1013 lines
34 KiB
Plaintext
1013 lines
34 KiB
Plaintext
{
|
|
------------------------------------------------------------------------------
|
|
PROGRAMA : LQPRMT001
|
|
OBJETIVO : Darle mantenimiento a los datos de liquidacion de Materiales
|
|
PROGRAMADOR : Ing. Juan F. Soto
|
|
FECHA : Marzo 23, 1994.
|
|
-----------------------------------------------------------------------------
|
|
}
|
|
|
|
GLOBALS
|
|
"lqprgb000.4gl"
|
|
DEFINE repuestos,opt_el,piezas_r,piezas_h,led_1,mat_prima,prod_term CHAR(1)
|
|
DEFINE selec_it,select_1 CHAR(1000)
|
|
DEFINE total_cantidad,total_fob,total_impuesto,total_gastos,total_flete
|
|
DECIMAL(12,2),
|
|
factor_imp,factor_ga,factor_flete DEC(12,4)
|
|
DEFINE i SMALLINT
|
|
|
|
|
|
DEFINE pcodn,pcodg,pcodt,pcods SMALLINT
|
|
|
|
DEFINE p_liquida RECORD
|
|
tipo SMALLINT,
|
|
num_oc INTEGER,
|
|
fecha DATE,
|
|
rep_entrada INTEGER,
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
nombre_sp CHAR(30),
|
|
factura CHAR(12),
|
|
prima_us DECIMAL(8,2),
|
|
s_liqui CHAR(12),
|
|
s_cerrada CHAR(12),
|
|
s_pagada CHAR(12),
|
|
usa_calculo CHAR(10),
|
|
timpuestos DEC(12,2),
|
|
tgastos DEC(12,2),
|
|
tflete DEC(12,2)
|
|
END RECORD
|
|
|
|
DEFINE p_arr_liq DYNAMIC ARRAY OF RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion CHAR(100),
|
|
cantidad_oc DECIMAL(12,5),
|
|
fob DECIMAL(12,4),
|
|
valor_fob DEC(12,2),
|
|
costo_flete DECIMAL(12,4),
|
|
impuesto DECIMAL(12,2),
|
|
otros_g DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE arr_liq DYNAMIC ARRAY OF RECORD
|
|
codigo CHAR(30),
|
|
descripcion CHAR(100),
|
|
cantidad_oc DECIMAL(12,5),
|
|
fob DECIMAL(12,4),
|
|
costo_flete DECIMAL(12,2),
|
|
valor_fob DEC(12,2),
|
|
impuesto DECIMAL(12,2),
|
|
otros_g DECIMAL(12,2)
|
|
END RECORD,
|
|
unidad CHAR(3)
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT to "decomarmol" USER usuarios USING clave
|
|
|
|
CALL lqprmt001()
|
|
END MAIN
|
|
|
|
FUNCTION lqprmt001()
|
|
OPTIONS
|
|
ERROR LINE 24,
|
|
FORM LINE 9,
|
|
COMMENT LINE 23,
|
|
PROMPT LINE 22
|
|
|
|
OPEN FORM lqfmmt001 FROM "lqfmmt001"
|
|
DISPLAY FORM lqfmmt001
|
|
DISPLAY "lqprmt001" AT 4,3
|
|
|
|
MENU
|
|
|
|
ON ACTION nuevo
|
|
LET int_flag = FALSE
|
|
CALL arr_liq.clear()
|
|
CALL lqprad07()
|
|
ON ACTION buscar
|
|
CALL arr_liq.clear()
|
|
LET int_flag = false
|
|
CALL lqprmod07()
|
|
ON ACTION salir
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
# Funcion para adicionar las ordenes con fletes y fob
|
|
FUNCTION lqprad07()
|
|
INITIALIZE p_liquida.* TO NULL
|
|
|
|
LABEL vuelve:
|
|
INPUT BY NAME p_liquida.* ATTRIBUTE (BOLD)
|
|
BEFORE INPUT
|
|
CALL busca_liquidacion() RETURNING p_liquida.tipo,p_liquida.num_oc,p_liquida.rep_entrada,
|
|
p_liquida.cod_sp,p_liquida.cod_sp_sec,
|
|
p_liquida.nombre_sp
|
|
DISPLAY BY NAME p_liquida.tipo,p_liquida.num_oc,p_liquida.cod_sp,p_liquida.cod_sp_sec,
|
|
p_liquida.nombre_sp,p_liquida.rep_entrada
|
|
ON KEY (CONTROL-F)
|
|
IF INFIELD(rep_entrada) THEN
|
|
CALL busca_entradas()
|
|
DISPLAY BY NAME p_liquida.rep_entrada
|
|
END IF
|
|
|
|
# ON KEY(CONTROL-W)
|
|
# CALL busca_orden()
|
|
|
|
AFTER FIELD fecha
|
|
IF p_liquida.fecha is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
LET p_fechas = p_liquida.fecha
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
# RETURN
|
|
END IF
|
|
|
|
AFTER FIELD num_oc
|
|
IF p_liquida.num_oc is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
LET total_flete = 0
|
|
SELECT a.fech_oc,a.cod_sp,a.cod_sp_sec,b.nom_sp
|
|
INTO p_liquida.fecha,p_liquida.cod_sp,p_liquida.cod_sp_sec,
|
|
p_liquida.nombre_sp
|
|
FROM cotb00001 b,cotb00014 a
|
|
WHERE a.tipo = p_liquida.tipo and a.num_oc = p_liquida.num_oc and
|
|
a.cod_sp = b.cod_sp and a.cod_sp_sec = b.cod_sp_sec
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
|
|
|
|
DISPLAY BY NAME p_liquida.*
|
|
|
|
# Chequo del status de la orden:liquidada,cerrada,pagada
|
|
SELECT cierre INTO led_1 FROM cotb00014
|
|
WHERE num_oc = p_liquida.num_oc and tipo = p_liquida.tipo
|
|
|
|
IF led_1 = "S" THEN
|
|
LET p_liquida.s_cerrada = "CERRADA"
|
|
ELSE
|
|
LET p_liquida.s_cerrada = "NO CERRADA"
|
|
END IF
|
|
|
|
LET bandera = 0
|
|
LET prod_term = "N"
|
|
LET mat_prima = "N"
|
|
LET repuestos = "N"
|
|
CASE
|
|
WHEN p_liquida.tipo = "01"
|
|
LET prod_term = "N"
|
|
LET mat_prima = "S"
|
|
LET repuestos = "N"
|
|
SELECT MAX(a.num_doc) INTO p_liquida.rep_entrada
|
|
FROM intb00006 a
|
|
WHERE a.orden_compra = p_liquida.num_oc AND status_t IS NULL
|
|
|
|
DISPLAY BY NAME p_liquida.rep_entrada
|
|
|
|
EXIT CASE
|
|
WHEN p_liquida.tipo = "02"
|
|
LET prod_term = "S"
|
|
LET mat_prima = "N"
|
|
LET repuestos = "N"
|
|
SELECT MAX(a.num_doc) INTO p_liquida.rep_entrada
|
|
FROM iptb00006 a
|
|
WHERE a.orden_compra = p_liquida.num_oc AND status_t IS NULL
|
|
|
|
DISPLAY BY NAME p_liquida.rep_entrada
|
|
|
|
EXIT CASE
|
|
WHEN p_liquida.tipo = "03"
|
|
LET prod_term = "N"
|
|
LET mat_prima = "N"
|
|
LET repuestos = "S"
|
|
SELECT MAX(a.num_doc) INTO p_liquida.rep_entrada
|
|
FROM irtb00006 a
|
|
WHERE a.orden_compra = p_liquida.num_oc AND status_t IS NULL
|
|
|
|
DISPLAY BY NAME p_liquida.rep_entrada
|
|
|
|
EXIT CASE
|
|
END CASE
|
|
# Chequea que el reporte de entrada este en almacen
|
|
AFTER FIELD rep_entrada
|
|
IF p_liquida.rep_entrada is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD rep_entrada
|
|
END IF
|
|
|
|
# Chequea Que la Orden Este Liquidada
|
|
SELECT UNIQUE a.num_oc FROM cgtb00017 a
|
|
WHERE a.num_oc = p_liquida.num_oc AND a.tipo = p_liquida.tipo AND
|
|
a.rep_entrada = p_liquida.rep_entrada
|
|
|
|
IF status != notfound THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
# Busqueda en la tabla de MATERIA PRIMA
|
|
IF mat_prima = "S" THEN
|
|
SELECT unique num_doc FROM intb00006
|
|
WHERE (num_doc = p_liquida.rep_entrada) and (cod_mov in (34,35,47)) and
|
|
(tipo = p_liquida.tipo and orden_compra = p_liquida.num_oc) and
|
|
status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD rep_entrada
|
|
END IF
|
|
END IF
|
|
|
|
# Busqueda en la tabla de PRODUCTOS TERMINADOS
|
|
IF prod_term = "S" THEN
|
|
SELECT unique a.num_doc FROM iptb00006 a
|
|
WHERE a.num_doc = p_liquida.rep_entrada and a.cod_mov = 10
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD rep_entrada
|
|
END IF
|
|
END IF
|
|
# Busqueda en la tabla de REPUESTOS
|
|
IF repuestos = "S" THEN
|
|
SELECT unique a.num_doc FROM irtb00006 a
|
|
WHERE a.num_doc = p_liquida.rep_entrada and a.cod_mov in (34,35,47)
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD rep_entrada
|
|
END IF
|
|
END IF
|
|
BEFORE FIELD prima_us
|
|
SELECT a.prima INTO p_liquida.prima_us FROM vetb00019 a WHERE a.disponible = 'S'
|
|
DISPLAY BY NAME p_liquida.prima_us
|
|
|
|
AFTER FIELD prima_us
|
|
IF p_liquida.prima_us is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD prima_us
|
|
END IF
|
|
IF p_liquida.prima_us = 0 THEN
|
|
LET p_liquida.s_liqui = "L"
|
|
ELSE
|
|
LET p_liquida.s_liqui = "E"
|
|
END IF
|
|
AFTER FIELD factura
|
|
IF p_liquida.factura is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
END IF
|
|
{
|
|
# Busca factura en el modulo de cuentas por pagar
|
|
SELECT unique num_doc FROM cptb00001
|
|
WHERE num_doc = p_liquida.factura and tipo_doc = "FT" AND
|
|
cod_sp = p_liquida.cod_sp and cod_sp_sec = p_liquida.cod_sp_sec
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
END IF
|
|
|
|
# Chequea si la factura esta pagada
|
|
SELECT sum(valor) INTO p_valor FROM cptb00001
|
|
WHERE aplica_a = p_liquida.factura and cod_sp = p_liquida.cod_sp and
|
|
cod_sp_sec = p_liquida.cod_sp_sec
|
|
|
|
IF p_valor > 0 THEN
|
|
LET p_liquida.s_pagada = "NO PAGADA"
|
|
ELSE
|
|
LET p_liquida.s_pagada = "PAGADA"
|
|
END IF
|
|
|
|
IF p_valor is null or p_valor < 0 THEN
|
|
LET p_liquida.s_pagada = null
|
|
END IF}
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
CALL integridad()
|
|
DISPLAY BY NAME p_liquida.* ATTRIBUTE (BOLD)
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
CALL arr_liq.clear()
|
|
# Busqueda de los codigos de la orden
|
|
DISPLAY " " AT 24,1
|
|
DISPLAY "Buscando ITEMS para liquidar... Espere" AT 24,1 ATTRIBUTE (BOLD)
|
|
# Busqueda de los datos de la tabla de materia prima
|
|
|
|
LET totaL_cantidad = 0
|
|
LET total_fob = 0
|
|
LET factor_ga = 0
|
|
LET factor_imp = 0
|
|
LET factor_flete=0
|
|
LET total_impuesto = 0
|
|
LET total_gastos = 0
|
|
LET total_flete = 0
|
|
|
|
IF p_liquida.tipo = "01" THEN
|
|
|
|
# BUSCA EL TOTAL de la recepcion de la mercancia
|
|
|
|
SELECT SUM(c.cantidad_2),SUM(c.cantidad_2*a.precio) INTO
|
|
total_cantidad,total_fob
|
|
FROM cotb00015 a,intb00001 b,intb00006 c
|
|
WHERE a.tipo = p_liquida.tipo and a.num_oc = p_liquida.num_oc 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 = c.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 = b.cod_sec and
|
|
c.num_doc = p_liquida.rep_entrada and a.num_oc = c.orden_compra
|
|
and c.cod_mov in (34,35,47)
|
|
|
|
LET factor_ga = p_liquida.tgastos / total_fob
|
|
LET factor_imp = p_liquida.timpuestos / total_fob
|
|
LET factor_flete = p_liquida.tflete / total_fob
|
|
LET total_fob = 0
|
|
DECLARE busca CURSOR FOR
|
|
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,
|
|
c.cantidad_2,a.precio,c.cantidad_2*a.precio
|
|
FROM cotb00015 a,intb00001 b,intb00006 c
|
|
WHERE a.tipo = p_liquida.tipo and a.num_oc = p_liquida.num_oc 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 = c.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 = b.cod_sec and
|
|
c.num_doc = p_liquida.rep_entrada and a.num_oc = c.orden_compra
|
|
and c.cod_mov in (34,35,47)
|
|
ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
|
|
|
LET idx = 1
|
|
FOREACH busca INTO p_arr_liq[idx].*
|
|
LET arr_liq[idx].codigo = p_arr_liq[idx].cod_n using "&&&&","-",
|
|
p_arr_liq[idx].cod_grupo using "&&&&","-",
|
|
p_arr_liq[idx].cod_tipo using "&&&&","-",
|
|
p_arr_liq[idx].cod_sec using "&&&&"
|
|
LET arr_liq[idx].descripcion = p_arr_liq[idx].descripcion
|
|
LET arr_liq[idx].cantidad_oc = p_arr_liq[idx].cantidad_oc
|
|
LET arr_liq[idx].fob = p_arr_liq[idx].fob
|
|
LET arr_liq[idx].valor_fob = arr_liq[idx].cantidad_oc*arr_liq[idx].fob
|
|
LET arr_liq[idx].impuesto= factor_imp * arr_liq[idx].valor_fob
|
|
LET arr_liq[idx].otros_g= factor_ga * arr_liq[idx].valor_fob
|
|
LET arr_liq[idx].costo_flete = factor_flete * arr_liq[idx].valor_fob
|
|
|
|
LET total_flete = arr_liq[idx].costo_flete + total_Flete
|
|
LET total_impuesto = arr_liq[idx].impuesto + total_impuesto
|
|
LET total_gastos = arr_liq[idx].otros_g + total_gastos
|
|
LET total_fob = arr_liq[idx].valor_fob + total_fob
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
|
|
# Busqueda de los datos de la tabla de productos terminados
|
|
IF p_liquida.tipo = "02" THEN
|
|
|
|
SELECT SUM(c.cantidad_2),SUM(c.cantidad_2*a.precio)
|
|
INTO total_cantidad,total_fob
|
|
FROM cotb00015 a,iptb00002 b,iptb00006 c
|
|
WHERE a.tipo = p_liquida.tipo and a.num_oc = p_liquida.num_oc 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
|
|
b.cod_n = c.cod_n and b.cod_grupo = c.cod_grupo and
|
|
b.cod_tipo = c.cod_tipo and b.cod_sec = c.cod_sec and
|
|
c.num_doc = p_liquida.rep_entrada and a.num_oc = c.orden_compra
|
|
|
|
LET factor_ga = p_liquida.tgastos / total_fob
|
|
LET factor_imp = p_liquida.timpuestos / total_fob
|
|
LET factor_flete = p_liquida.tflete / total_fob
|
|
|
|
DECLARE busca1 CURSOR FOR
|
|
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,
|
|
c.cantidad_2,a.precio,c.cantidad_2*a.precio
|
|
FROM cotb00015 a,iptb00002 b,iptb00006 c
|
|
WHERE a.tipo = p_liquida.tipo and a.num_oc = p_liquida.num_oc 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
|
|
b.cod_n = c.cod_n and b.cod_grupo = c.cod_grupo and
|
|
b.cod_tipo = c.cod_tipo and b.cod_sec = c.cod_sec and
|
|
c.num_doc = p_liquida.rep_entrada and a.num_oc = c.orden_compra
|
|
#ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
|
LET idx = 1
|
|
LET total_fob = 0
|
|
FOREACH busca1 INTO p_arr_liq[idx].*
|
|
LET arr_liq[idx].codigo = p_arr_liq[idx].cod_n using "&&&&","-",
|
|
p_arr_liq[idx].cod_grupo using "&&&&","-",
|
|
p_arr_liq[idx].cod_tipo using "&&&&","-",
|
|
p_arr_liq[idx].cod_sec using "&&&&"
|
|
LET arr_liq[idx].descripcion = p_arr_liq[idx].descripcion
|
|
LET arr_liq[idx].cantidad_oc = p_arr_liq[idx].cantidad_oc
|
|
LET arr_liq[idx].fob = p_arr_liq[idx].fob
|
|
LET arr_liq[idx].valor_fob = arr_liq[idx].cantidad_oc*arr_liq[idx].fob
|
|
LET arr_liq[idx].impuesto= factor_imp * arr_liq[idx].valor_fob
|
|
LET arr_liq[idx].otros_g= factor_ga * arr_liq[idx].valor_fob
|
|
LET arr_liq[idx].costo_flete = factor_flete * arr_liq[idx].valor_fob
|
|
LET total_flete = arr_liq[idx].costo_flete + total_Flete
|
|
|
|
LET total_impuesto = arr_liq[idx].impuesto + total_impuesto
|
|
LET total_gastos = arr_liq[idx].otros_g + total_gastos
|
|
LET total_fob = arr_liq[idx].valor_fob + total_fob
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
|
|
# Busqueda de los datos de la tabla de REPUESTOS
|
|
IF p_liquida.tipo = "03" THEN
|
|
|
|
SELECT SUM(c.cantidad_2),SUM(c.cantidad_2*a.precio)
|
|
INTO total_cantidad,total_fob
|
|
FROM cotb00015 a,irtb00002 b,irtb00006 c,cotb00014 d
|
|
WHERE a.tipo = p_liquida.tipo and a.num_oc = p_liquida.num_oc AND
|
|
a.tipo = d.tipo AND a.num_oc = d.num_oc 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
|
|
b.cod_n = c.cod_n and b.cod_grupo = c.cod_grupo and
|
|
b.cod_tipo = c.cod_tipo and b.cod_sec = c.cod_sec and
|
|
c.num_doc = p_liquida.rep_entrada and a.num_oc = c.orden_compra
|
|
|
|
|
|
LET factor_ga = p_liquida.tgastos / total_fob
|
|
LET factor_imp = p_liquida.timpuestos / total_fob
|
|
LET factor_flete = p_liquida.tflete / total_fob
|
|
LET total_fob = 0
|
|
|
|
DECLARE busca3 CURSOR FOR
|
|
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,
|
|
c.cantidad_2,a.precio,c.cantidad_2*a.precio
|
|
FROM cotb00015 a,irtb00002 b,irtb00006 c
|
|
WHERE a.tipo = p_liquida.tipo and a.num_oc = p_liquida.num_oc 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
|
|
b.cod_n = c.cod_n and b.cod_grupo = c.cod_grupo and
|
|
b.cod_tipo = c.cod_tipo and b.cod_sec = c.cod_sec and
|
|
c.num_doc = p_liquida.rep_entrada and a.num_oc = c.orden_compra
|
|
# ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
|
|
|
LET idx = 1
|
|
FOREACH busca3 INTO p_arr_liq[idx].*
|
|
LET arr_liq[idx].codigo = p_arr_liq[idx].cod_n using "&&&&","-",
|
|
p_arr_liq[idx].cod_grupo using "&&&&","-",
|
|
p_arr_liq[idx].cod_tipo using "&&&&","-",
|
|
p_arr_liq[idx].cod_sec using "&&&&"
|
|
LET arr_liq[idx].descripcion = p_arr_liq[idx].descripcion
|
|
LET arr_liq[idx].cantidad_oc = p_arr_liq[idx].cantidad_oc
|
|
LET arr_liq[idx].fob = p_arr_liq[idx].fob
|
|
LET arr_liq[idx].valor_fob = arr_liq[idx].cantidad_oc*arr_liq[idx].fob
|
|
LET arr_liq[idx].impuesto= factor_imp * arr_liq[idx].valor_fob
|
|
LET arr_liq[idx].otros_g= factor_ga * arr_liq[idx].valor_fob
|
|
LET arr_liq[idx].costo_flete = factor_flete * arr_liq[idx].valor_fob
|
|
|
|
LET total_flete = arr_liq[idx].costo_flete + total_Flete
|
|
LET total_fob = arr_liq[idx].valor_fob + total_fob
|
|
LET total_impuesto = arr_liq[idx].impuesto + total_impuesto
|
|
LET total_gastos = arr_liq[idx].otros_g + total_gastos
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
DISPLAY BY NAME total_impuesto,total_gastos,total_flete,total_fob
|
|
|
|
CALL set_count(idx -1)
|
|
|
|
INPUT ARRAY arr_liq WITHOUT DEFAULTS FROM s_lq.*
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
LET pcodn = arr_liq[curr].codigo[1,2]
|
|
LET pcodg = arr_liq[curr].codigo[4,6]
|
|
LET pcodt = arr_liq[curr].codigo[8,11]
|
|
LET pcods = arr_liq[curr].codigo[13,16]
|
|
|
|
AFTER FIELD fob
|
|
IF arr_liq[curr].cantidad_oc IS NOT NULL THEN
|
|
LET arr_liq[curr].valor_fob = arr_liq[curr].cantidad_oc * arr_liq[curr].fob
|
|
END IF
|
|
DISPLAY arr_liq[curr].valor_fob TO s_lq[scr_l].valor_fob
|
|
|
|
AFTER FIELD costo_flete
|
|
IF arr_liq[curr].codigo is not null THEN
|
|
IF arr_liq[curr].costo_flete is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD costo_flete
|
|
END IF
|
|
END IF
|
|
AFTER ROW
|
|
LET total_impuesto = 0
|
|
LET total_gastos = 0
|
|
FOR idx = 1 TO arr_liq.getLength()
|
|
LET total_impuesto = arr_liq[idx].impuesto + total_impuesto
|
|
LET total_gastos = arr_liq[idx].otros_g + total_gastos
|
|
|
|
END FOR
|
|
DISPLAY BY NAME total_impuesto,total_gastos
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
LET total_impuesto = 0
|
|
LET total_gastos = 0
|
|
LET total_fob=0
|
|
FOR idx = 1 TO arr_liq.getLength()
|
|
LET total_impuesto = arr_liq[idx].impuesto + total_impuesto
|
|
LET total_gastos = arr_liq[idx].otros_g + total_gastos
|
|
LET total_fob = total_fob + arr_liq[idx].valor_fob
|
|
END FOR
|
|
|
|
DISPLAY BY NAME total_impuesto,total_gastos,total_fob
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
|
|
# Inserta Registros en la tabla 17 de contabilidad
|
|
INSERT INTO cgtb00017
|
|
(tipo,num_oc,fecha,liquidada,cerrada, pagada, rep_entrada,factura,
|
|
prima_us,cod_sp,cod_sp_sec,timpuestos,tgastos,tflete,usa_calculo,us_crea,fech_crea)
|
|
VALUES
|
|
(p_liquida.tipo,p_liquida.num_oc,p_liquida.fecha,p_liquida.s_liqui,
|
|
p_liquida.s_cerrada,p_liquida.s_pagada,p_liquida.rep_entrada,
|
|
p_liquida.factura,p_liquida.prima_us,
|
|
p_liquida.cod_sp,p_liquida.cod_sp_sec,p_liquida.timpuestos,p_liquida.tgastos,
|
|
p_liquida.tflete,p_liquida.usa_calculo,SUSER_SNAME(),GETDATE())
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
#IF arr_liq[idx].costo_flete is not null THEN
|
|
INSERT INTO cgtb00018 VALUES
|
|
(p_liquida.tipo,p_liquida.num_oc,p_liquida.rep_entrada,
|
|
p_arr_liq[idx].cod_n,p_arr_liq[idx].cod_grupo,p_arr_liq[idx].cod_tipo,
|
|
p_arr_liq[idx].cod_sec,arr_liq[idx].cantidad_oc,arr_liq[idx].fob,
|
|
arr_liq[idx].costo_flete,arr_liq[idx].impuesto,arr_liq[idx].otros_g,null,SUSER_SNAME(),GETDATE(),null,null)
|
|
# END IF
|
|
END FOR
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
GOTO vuelve
|
|
|
|
END FUNCTION
|
|
|
|
# Modificacion de la liquidacion
|
|
FUNCTION lqprmod07()
|
|
CLEAR FORM
|
|
CONSTRUCT BY NAME criterio ON a.tipo,a.num_oc,a.cod_sp,a.cod_sp_sec,
|
|
a.rep_entrada
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
LET select_1 =
|
|
"SELECT a.tipo,a.num_oc,a.fecha,a.rep_entrada,a.cod_sp,a.cod_sp_sec, ",
|
|
" b.nom_sp,a.factura,a.prima_us,a.liquidada,a.cerrada,a.pagada,",
|
|
" a.usa_calculo,a.timpuestos,a.tgastos, ",
|
|
" a.tflete ",
|
|
"FROM cgtb00017 a,cotb00001 b ",
|
|
"WHERE ",criterio clipped," and a.cod_sp = b.cod_sp ",
|
|
" and a.cod_sp_sec = b.cod_sp_sec and a.status_t is null ",
|
|
"ORDER BY a.fecha"
|
|
|
|
PREPARE comando FROM select_1
|
|
DECLARE busca10 SCROLL CURSOR FOR comando
|
|
OPEN busca10
|
|
|
|
FETCH FIRST busca10 INTO p_liquida.*
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
DISPLAY BY NAME p_liquida.* ATTRIBUTE(BOLD)
|
|
MENU "OPCION"
|
|
COMMAND "Siguiente" "Ver Siguiente Registro Cumple Condicion"
|
|
FETCH NEXT busca10 INTO p_liquida.*
|
|
IF status = notfound THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
DISPLAY BY NAME p_liquida.* ATTRIBUTE(BOLD)
|
|
|
|
COMMAND "Anterior" "Ver Registro Anterior Cumple Condicion"
|
|
FETCH PREVIOUS busca10 INTO p_liquida.*
|
|
IF status = notfound THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
DISPLAY BY NAME p_liquida.* ATTRIBUTE(BOLD)
|
|
|
|
COMMAND "Primero" "Ver Primer Registro Cumple Condicion"
|
|
FETCH FIRST busca10 INTO p_liquida.*
|
|
IF status = notfound THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
DISPLAY BY NAME p_liquida.* ATTRIBUTE(BOLD)
|
|
|
|
COMMAND "Ultimo" " Ver Ultimo Registro Cumple Condicion"
|
|
FETCH LAST busca10 INTO p_liquida.*
|
|
IF status = notfound THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
DISPLAY BY NAME p_liquida.* ATTRIBUTE(BOLD)
|
|
COMMAND "Escoger" "<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
|
|
|
|
INPUT BY NAME p_liquida.* WITHOUT DEFAULTS
|
|
AFTER FIELD prima_us
|
|
IF p_liquida.prima_us is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD prima_us
|
|
END IF
|
|
IF p_liquida.prima_us = 0 THEN
|
|
LET p_liquida.s_liqui = "L"
|
|
ELSE
|
|
LET p_liquida.s_liqui = "E"
|
|
END IF
|
|
DISPLAY BY NAME p_liquida.s_liqui
|
|
AFTER FIELD fecha
|
|
IF p_liquida.fecha is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
LET p_fechas = p_liquida.fecha
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
CALL integridad()
|
|
BEFORE FIELD tipo
|
|
NEXT FIELD fecha
|
|
|
|
AFTER FIELD num_oc
|
|
IF p_liquida.num_oc is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
SELECT a.fech_oc,a.cod_sp,a.cod_sp_sec,b.nom_sp
|
|
INTO p_liquida.fecha,p_liquida.cod_sp,p_liquida.cod_sp_sec,
|
|
p_liquida.nombre_sp
|
|
FROM cotb00001 b,cotb00014 a
|
|
WHERE a.tipo = p_liquida.tipo and a.num_oc = p_liquida.num_oc and
|
|
a.cod_sp = b.cod_sp and a.cod_sp_sec = b.cod_sp_sec
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
DISPLAY BY NAME p_liquida.* ATTRIBUTE (BOLD)
|
|
|
|
# Chequo del status de la orden:liquidada,cerrada,pagada
|
|
SELECT cierre INTO led_1 FROM cotb00014
|
|
WHERE num_oc = p_liquida.num_oc and tipo = p_liquida.tipo
|
|
|
|
IF led_1 = "S" THEN
|
|
LET p_liquida.s_cerrada = "CERRADA"
|
|
ELSE
|
|
LET p_liquida.s_cerrada = "NO CERRADA"
|
|
END IF
|
|
|
|
BEFORE FIELD rep_entrada
|
|
NEXT FIELD factura
|
|
|
|
AFTER FIELD factura
|
|
IF p_liquida.factura is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
END IF
|
|
{
|
|
# Busca factura en el modulo de cuentas por pagar
|
|
SELECT unique num_doc FROM cptb00001
|
|
WHERE num_doc = p_liquida.factura and tipo_doc = "FT" AND
|
|
cod_sp = p_liquida.cod_sp and cod_sp_sec = p_liquida.cod_sp_sec
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD factura
|
|
END IF
|
|
|
|
# Chequea si la factura esta pagada
|
|
SELECT sum(valor) INTO p_valor FROM cptb00001
|
|
WHERE aplica_a = p_liquida.factura and cod_sp=p_liquida.cod_sp and
|
|
cod_sp_sec = p_liquida.cod_sp_sec
|
|
|
|
IF p_valor > 0 THEN
|
|
LET p_liquida.s_pagada = "NO PAGADA"
|
|
ELSE
|
|
LET p_liquida.s_pagada = "PAGADA"
|
|
END IF
|
|
|
|
IF p_valor is null or p_valor < 0 THEN
|
|
LET p_liquida.s_pagada = null
|
|
END IF}
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
DISPLAY BY NAME p_liquida.* ATTRIBUTE (BOLD)
|
|
EXIT INPUT
|
|
END INPUT
|
|
LET total_Flete =0
|
|
LET total_gastos =0
|
|
LET total_impuesto =0
|
|
LET total_Fob = 0
|
|
|
|
# Busqueda de los codigos de la orden
|
|
DISPLAY " " AT 24,1
|
|
DISPLAY "Buscando ITEMS para liquidar... Espere" AT 24,1 ATTRIBUTE (BOLD)
|
|
|
|
|
|
IF p_liquida.tipo = "01" THEN
|
|
LET selec_it =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp, ",
|
|
" a.cantidad_oc,a.fob,a.cantidad_oc*a.fob,a.costo_flete,a.impuesto,a.otros_g ",
|
|
"FROM cgtb00018 a,intb00001 b ",
|
|
"WHERE a.tipo = '",p_liquida.tipo," '"," and a.num_oc = '",p_liquida.num_oc,
|
|
" '"," 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.rep_entrada = '",p_liquida.rep_entrada," '"," "
|
|
|
|
END IF
|
|
IF p_liquida.tipo = "02" THEN
|
|
LET selec_it =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_Esp,",
|
|
" a.cantidad_oc,a.fob,a.cantidad_oc*a.fob,a.costo_flete,a.impuesto,a.otros_g ",
|
|
"FROM cgtb00018 a,iptb00002 b ",
|
|
"WHERE a.tipo = '",p_liquida.tipo," '"," and a.num_oc = '",p_liquida.num_oc,
|
|
" '"," 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.rep_entrada = '",p_liquida.rep_entrada," '"," "
|
|
END IF
|
|
|
|
IF p_liquida.tipo = "03" THEN
|
|
LET selec_it =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_Esp,",
|
|
" a.cantidad_oc,a.fob,a.cantidad_oc*a.fob,a.costo_flete,a.impuesto,a.otros_g ",
|
|
"FROM cgtb00018 a,irtb00002 b ",
|
|
"WHERE a.tipo = '",p_liquida.tipo," '"," and a.num_oc = '",p_liquida.num_oc,
|
|
" '"," 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.rep_entrada = '",p_liquida.rep_entrada," '"," "
|
|
END IF
|
|
PREPARE comando1 FROM selec_it
|
|
DECLARE busca4 CURSOR FOR comando1
|
|
|
|
LET idx = 1
|
|
FOREACH busca4 INTO p_arr_liq[idx].*
|
|
LET arr_liq[idx].codigo = p_arr_liq[idx].cod_n using "&&&&","-",
|
|
p_arr_liq[idx].cod_grupo using "&&&&","-",
|
|
p_arr_liq[idx].cod_tipo using "&&&&","-",
|
|
p_arr_liq[idx].cod_sec using "&&&&"
|
|
LET arr_liq[idx].descripcion = p_arr_liq[idx].descripcion
|
|
LET arr_liq[idx].cantidad_oc = p_arr_liq[idx].cantidad_oc
|
|
LET arr_liq[idx].impuesto = p_arr_liq[idx].impuesto
|
|
LET arr_liq[idx].otros_g = p_arr_liq[idx].otros_g
|
|
LET arr_liq[idx].fob = p_arr_liq[idx].fob
|
|
LET arr_liq[idx].valor_fob = arr_liq[idx].cantidad_oc * arr_liq[idx].fob
|
|
LET arr_liq[idx].costo_flete = p_arr_liq[idx].costo_flete
|
|
|
|
LET total_flete = arr_liq[idx].costo_flete + total_Flete
|
|
LET total_impuesto = arr_liq[idx].impuesto + total_impuesto
|
|
LET total_gastos = arr_liq[idx].otros_g + total_gastos
|
|
LET total_fob = arr_liq[idx].valor_fob + total_fob
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
DISPLAY BY NAME total_flete,total_impuesto,total_gastos,total_fob
|
|
CALL set_count(idx - 1)
|
|
INPUT ARRAY arr_liq WITHOUT DEFAULTS FROM s_lq.*
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
|
|
{ AFTER FIELD costo_flete
|
|
IF arr_liq[curr].codigo is not null THEN
|
|
IF arr_liq[curr].costo_flete is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD costo_flete
|
|
END IF
|
|
END IF}
|
|
|
|
AFTER FIELD fob
|
|
IF arr_liq[curr].cantidad_oc IS NOT NULL THEN
|
|
LET arr_liq[curr].valor_fob = arr_liq[curr].cantidad_oc * arr_liq[curr].fob
|
|
END IF
|
|
DISPLAY arr_liq[curr].valor_fob TO s_lq[scr_l].valor_fob
|
|
|
|
AFTER ROW
|
|
LET total_impuesto = 0
|
|
LET total_gastos = 0
|
|
LET total_fob = 0
|
|
FOR idx = 1 TO arr_liq.getLength()
|
|
LET total_impuesto = arr_liq[idx].impuesto + total_impuesto
|
|
LET total_gastos = arr_liq[idx].otros_g + total_gastos
|
|
LET total_flete = arr_liq[idx].costo_flete + total_flete
|
|
LET total_fob = total_fob + arr_liq[idx].valor_fob
|
|
END FOR
|
|
DISPLAY BY NAME total_impuesto,total_gastos,total_flete,total_fob
|
|
|
|
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
|
|
|
|
# Actualizacion de la tabla general de la liquidacion
|
|
UPDATE cgtb00017 set fecha = p_liquida.fecha,
|
|
liquidada = p_liquida.s_liqui,
|
|
cerrada = p_liquida.s_cerrada,
|
|
pagada = p_liquida.s_pagada,
|
|
factura = p_liquida.factura,
|
|
prima_us = p_liquida.prima_us,
|
|
cod_sp = p_liquida.cod_sp,
|
|
cod_sp_sec = p_liquida.cod_sp_sec,
|
|
timpuestos = p_liquida.timpuestos,
|
|
tgastos = p_liquida.tgastos,
|
|
tflete = p_liquida.tflete,
|
|
usa_calculo = p_liquida.usa_calculo,
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE tipo = p_liquida.tipo and
|
|
num_oc = p_liquida.num_oc and
|
|
rep_entrada = p_liquida.rep_entrada
|
|
|
|
# Borrar datos para actualizar
|
|
DELETE FROM cgtb00018 WHERE tipo = p_liquida.tipo and
|
|
num_oc = p_liquida.num_oc and
|
|
rep_entrada = p_liquida.rep_entrada
|
|
|
|
# Actualizacion
|
|
FOR idx = 1 TO arr_liq.getLength()
|
|
# IF arr_liq[idx].costo_flete is not null OR
|
|
# arr_liq[idx].fob is not null THEN
|
|
INSERT INTO cgtb00018 VALUES
|
|
(p_liquida.tipo,p_liquida.num_oc,p_liquida.rep_entrada,
|
|
p_arr_liq[idx].cod_n,
|
|
p_arr_liq[idx].cod_grupo,p_arr_liq[idx].cod_tipo,
|
|
p_arr_liq[idx].cod_sec,arr_liq[idx].cantidad_oc,arr_liq[idx].fob,
|
|
arr_liq[idx].costo_flete,arr_liq[idx].impuesto,arr_liq[idx].otros_g,null,usuarios,GETDATE(),usuarios,getdate())
|
|
# END IF
|
|
END FOR
|
|
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
COMMAND KEY("L") "eLiminar" "Eliminacion de Reporte de Entrada Liquidado"
|
|
PROMPT "Esta Seguro de Eliminar Este Reporte De Entrada(S/N)?"
|
|
FOR opt_el
|
|
LET opt_el = upshift(opt_el)
|
|
|
|
IF opt_el = "S" THEN
|
|
DELETE FROM cgtb00017
|
|
WHERE tipo = p_liquida.tipo and num_oc = p_liquida.num_oc and
|
|
rep_entrada = p_liquida.rep_entrada
|
|
|
|
DELETE FROM cgtb00018
|
|
WHERE tipo = p_liquida.tipo and num_oc = p_liquida.num_oc and
|
|
rep_entrada = p_liquida.rep_entrada
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
COMMAND "Retornar"
|
|
CLEAR FORM
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_entradas()
|
|
DEFINE p_datos ARRAY[50] OF RECORD
|
|
rep_entrada INTEGER,
|
|
fecha DATE
|
|
END RECORD
|
|
OPEN WINDOW facturas AT 12,5 WITH FORM "lqfmwd001" ATTRIBUTE (BORDER,
|
|
COMMENT LINE LAST -1,FORM LINE FIRST + 1)
|
|
|
|
IF mat_prima = "S" THEN
|
|
DECLARE busca_m CURSOR FOR
|
|
SELECT unique num_doc,fecha FROM intb00006
|
|
WHERE orden_compra = p_liquida.num_oc and tipo = p_liquida.tipo and
|
|
status_t is null
|
|
|
|
LET idx = 1
|
|
FOREACH busca_m INTO p_datos[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY p_datos TO s_datos.*
|
|
LET scr_l = scr_line()
|
|
LET p_liquida.rep_entrada = p_datos[scr_l].rep_entrada
|
|
END IF
|
|
|
|
IF prod_term = "S" THEN
|
|
DECLARE busca_p CURSOR FOR
|
|
SELECT unique num_doc,fecha FROM iptb00006
|
|
WHERE orden_compra = p_liquida.num_oc and tipo = p_liquida.tipo and
|
|
status_t is null
|
|
|
|
LET idx = 1
|
|
FOREACH busca_p INTO p_datos[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY p_datos TO s_datos.*
|
|
LET scr_l = scr_line()
|
|
LET p_liquida.rep_entrada = p_datos[scr_l].rep_entrada
|
|
END IF
|
|
|
|
IF piezas_r = "S" THEN
|
|
DECLARE busca_r CURSOR FOR
|
|
SELECT unique num_doc,fecha FROM irtb00006
|
|
WHERE orden_compra = p_liquida.num_oc and tipo = p_liquida.tipo and
|
|
status_t is null
|
|
|
|
LET idx = 1
|
|
FOREACH busca_r INTO p_datos[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY p_datos TO s_datos.*
|
|
LET scr_l = scr_line()
|
|
|
|
LET p_liquida.rep_entrada = p_datos[scr_l].rep_entrada
|
|
END IF
|
|
|
|
IF piezas_h = "S" THEN
|
|
DECLARE busca_h CURSOR FOR
|
|
SELECT unique num_doc,fecha FROM ihtb00006
|
|
WHERE orden_compra = p_liquida.num_oc and tipo = p_liquida.tipo and
|
|
status_t is null
|
|
|
|
LET idx = 1
|
|
FOREACH busca_h INTO p_datos[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY p_datos TO s_datos.*
|
|
LET scr_l = scr_line()
|
|
|
|
LET p_liquida.rep_entrada = p_datos[scr_l].rep_entrada
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
END IF
|
|
CLOSE WINDOW facturas
|
|
END FUNCTION
|