3 lines
29 KiB
Plaintext
3 lines
29 KiB
Plaintext
{==============================================================================
|
|
PROGRAMA : LQPRRP004
|
|
SISTEMA : Sistema de Liquidacion Materiales
|
|
Objetivo : Liquidacion Mercancia Compras Exterior Prod. Terminados
|
|
PROGRAMADOR : Juan F. Soto
|
|
FECHA : Mayo 13, 1994
|
|
MODIFICADO : VALENTIN RODRIGUEZ
|
|
FECHA : MAYO, 2019
|
|
==============================================================================}
|
|
GLOBALS "lqprgb000.4gl" ###### Variables para busqueda de rango de fecha
|
|
DEFINE elije,imp,afecta,tipo_inventario CHAR(1)
|
|
DEFINE p_ano,m_mes SMALLINT
|
|
DEFINE fecha1, fecha2 DATE ,
|
|
p_fecha CHAR(10)
|
|
DEFINE entra CHAR(25)
|
|
DEFINE t_costst DECIMAL(12,2)
|
|
DEFINE detalla CHAR(30)
|
|
DEFINE orden CHAR(10)
|
|
DEFINE t_variacion DECIMAL(12,2)
|
|
DEFINE debe, haber DECIMAL(12,2),
|
|
idz INT
|
|
|
|
###### Variables que la almacenan la informacion enviada al reporte
|
|
DEFINE diario1 RECORD
|
|
cuenta_no LIKE cgtb00001.cuenta_no,
|
|
debito DECIMAL(18,2)
|
|
END RECORD
|
|
|
|
DEFINE i SMALLINT
|
|
DEFINE fecha_inicial,fecha_final DATE
|
|
DEFINE primera,imp_entrada CHAR(1)
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
SELECT a.* INTO p_compania.* FROM companias a
|
|
CALL lqprrp004()
|
|
END MAIN
|
|
|
|
FUNCTION lqprrp004()
|
|
|
|
DEFINE busca_datos RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion CHAR(30),
|
|
unidad CHAR(3),
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
proveedor CHAR(7),
|
|
num_doc INTEGER,
|
|
num_oc INTEGER,
|
|
tipo CHAR(2),
|
|
cantidad DECIMAL(12,5),
|
|
precio DECIMAL(12,5),
|
|
flete DECIMAL(12,5),
|
|
imp_colect DECIMAL(12,5),
|
|
imp_aduana DECIMAL(12,5),
|
|
tasa DECIMAL(8,2),
|
|
cost_std LIKE intb00013.costo_st
|
|
END RECORD
|
|
|
|
LET int_flag = FALSE
|
|
|
|
OPTIONS
|
|
FORM LINE 8
|
|
|
|
OPEN FORM lqfmrp004 FROM "lqfmrp004"
|
|
DISPLAY FORM lqfmrp004
|
|
DISPLAY "lqprrp004" AT 4,3
|
|
DISPLAY "Liquidacion Mercancia pt" AT 6,28
|
|
|
|
LET tipo_papel = 2
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
CONSTRUCT criterio ON c.num_oc,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec
|
|
FROM num_oc,cod_n,cod_grupo,cod_tipo,cod_sec
|
|
AFTER CONSTRUCT
|
|
IF INT_FLAG THEN
|
|
CALL msg(2)
|
|
LET INT_FLAG = FALSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
INPUT BY NAME tipo_inventario, p_ano,m_mes,elije,imp_entrada,imp
|
|
|
|
AFTER FIELD m_mes
|
|
SELECT fecha_inicio, fecha_corte INTO fecha_inicial,fecha_final
|
|
FROM prdtable where mes = m_mes AND ano = p_ano
|
|
|
|
DISPLAY BY NAME fecha_inicial,fecha_final
|
|
|
|
LET p_fechas = fecha_final using "ddmmyyyy"
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
# NEXT FIELD p_ano
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
EXIT INPUT
|
|
END INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
LET chstd = FGL_WINQUESTION("PREGUNTA","Actualiza Costos STD?","yes","Yes|no","question",0)
|
|
|
|
LET chstd = UPSHIFT(chstd)
|
|
|
|
|
|
LET primera = "S"
|
|
IF tipo_inventario = '2' THEN
|
|
LET selec =
|
|
"SELECT DISTINCT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
|
|
" a.unidad_med,b.cod_sp,b.cod_sp_sec,b.nom_sp,c.rep_entrada,c.num_oc, ",
|
|
" c.tipo,c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us ",
|
|
"FROM iptb00002 a,cotb00001 b,cgtb00018 c,cgtb00017 d ",
|
|
"WHERE (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 ",
|
|
" (d.fecha between '", fecha_inicial USING "MM/DD/YYYY","' and '",
|
|
fecha_final USING "MM/DD/YYYY","') and ",
|
|
" (c.num_oc = d.num_oc) and (c.tipo=d.tipo) and (d.cod_sp=b.cod_sp AND ",
|
|
" d.cod_sp_sec = b.cod_sp_sec) and (c.rep_entrada = d.rep_entrada) and ",
|
|
" (c.status_t is null) and d.liquidada='",elije,"' and c.tipo = '2' ",
|
|
" AND (a.status_t IS NULL) AND (d.status_t IS NULL) and ",
|
|
criterio CLIPPED,
|
|
" ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec "
|
|
ELSE
|
|
LET selec =
|
|
"SELECT DISTINCT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
|
|
" a.unidad_med,b.cod_sp,b.cod_sp_sec,b.nom_sp,c.rep_entrada,c.num_oc, ",
|
|
" c.tipo,c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us ",
|
|
"FROM intb00001 a,cotb00001 b,cgtb00018 c,cgtb00017 d ",
|
|
"WHERE (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 ",
|
|
" (d.fecha between '", fecha_inicial USING "MM/dd/YYYY","' and '",
|
|
fecha_final USING "MM/dd/YYYY","') and ",
|
|
" (c.num_oc = d.num_oc) and (c.tipo=d.tipo) and (d.cod_sp=b.cod_sp AND ",
|
|
" d.cod_sp_sec = b.cod_sp_sec) and (c.rep_entrada = d.rep_entrada) and ",
|
|
" (c.status_t is null) and d.liquidada='",elije,"' and c.tipo = 1 ",
|
|
" AND (a.status_t IS NULL) AND (d.status_t IS NULL) and ",
|
|
criterio CLIPPED,
|
|
" ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec "
|
|
END IF
|
|
DISPLAY selec
|
|
DISPLAY "elije ",elije
|
|
LET idx = 1
|
|
PREPARE comando FROM selec
|
|
DECLARE busca CURSOR FOR comando
|
|
|
|
INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp004','ELIMINO')
|
|
FOREACH busca INTO busca_datos.*
|
|
DISPLAY "datos ",busca_datos.cod_sp_sec," ",busca_datos.descripcion
|
|
LET orden = busca_datos.num_oc USING "<<<<<<"
|
|
|
|
IF busca_datos.imp_colect is null THEN
|
|
LET busca_datos.imp_colect = 0
|
|
END IF
|
|
|
|
IF busca_datos.imp_colect < 0 THEN
|
|
LET busca_datos.imp_colect = busca_datos.imp_colect * -1
|
|
END IF
|
|
|
|
IF busca_datos.imp_aduana is null THEN
|
|
LET busca_datos.imp_aduana = 0
|
|
END IF
|
|
|
|
IF busca_datos.imp_aduana < 0 THEN
|
|
LET busca_datos.imp_aduana = busca_datos.imp_aduana * -1
|
|
END IF
|
|
|
|
# Busca el costos standard
|
|
LET busca_datos.cost_std = 0
|
|
IF tipo_inventario = '2' THEN
|
|
SELECT AVG(a.material+a.labor+a.gastos) INTO busca_datos.cost_std
|
|
FROM iptb00004 a
|
|
WHERE a.ventas = "1" and
|
|
a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and
|
|
a.cod_grupo = busca_datos.cod_grupo and
|
|
a.cod_tipo = busca_datos.cod_tipo and
|
|
a.cod_sec = busca_datos.cod_sec and a.status_t is NULL
|
|
ELSE
|
|
SELECT AVG(a.costo_st) INTO busca_datos.cost_std
|
|
FROM intb00013 a
|
|
WHERE a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and
|
|
a.cod_grupo = busca_datos.cod_grupo and
|
|
a.cod_tipo = busca_datos.cod_tipo and
|
|
a.cod_sec = busca_datos.cod_sec and a.status_t is NULL
|
|
|
|
END IF
|
|
IF STATUS = NOTFOUND THEN
|
|
LET busca_datos.cost_std = 0
|
|
END IF
|
|
|
|
IF busca_datos.cost_std is null THEN
|
|
LET busca_datos.cost_std = 0
|
|
END IF
|
|
|
|
IF chstd = "yes" THEN
|
|
|
|
DELETE FROM cttb00013 WHERE (fecha_lq = fecha_final AND
|
|
tipo_lq = elije AND
|
|
tipo_orden = 2 AND
|
|
num_oc = busca_datos.num_oc)
|
|
END IF
|
|
|
|
IF imp="S" THEN
|
|
LET r_filename ="lqprrp004.4rp"
|
|
IF idx = 1 THEN
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN
|
|
LET preview=1
|
|
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
# CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
END IF
|
|
LET idx = 2
|
|
START REPORT liquida1 TO XML HANDLER HANDLER
|
|
END IF
|
|
DISPLAY "DATOS "
|
|
OUTPUT TO REPORT liquida1(busca_datos.*)
|
|
END IF
|
|
END FOREACH
|
|
|
|
IF imp = "S" THEN
|
|
IF idx > 1 THEN
|
|
FINISH REPORT liquida1
|
|
END IF
|
|
END IF
|
|
|
|
IF imp_entrada = "S" THEN
|
|
CALL edprrp0271()
|
|
END IF
|
|
END FUNCTION
|
|
|
|
REPORT liquida1(x)
|
|
DEFINE x RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion CHAR(30),
|
|
unidad CHAR(3),
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
proveedor CHAR(7),
|
|
num_doc INTEGER,
|
|
num_oc INTEGER,
|
|
tipo CHAR(2),
|
|
cantidad DECIMAL(12,5),
|
|
precio DECIMAL(12,5),
|
|
flete DECIMAL(12,5),
|
|
imp_colect DECIMAL(12,5),
|
|
imp_aduana DECIMAL(12,5),
|
|
tasa DECIMAL(8,2),
|
|
cost_std LIKE intb00013.costo_st
|
|
END RECORD
|
|
|
|
DEFINE valor DECIMAL(12,2)
|
|
DEFINE variacion,precio_std,fob,c_f,seguro,cost_pl,
|
|
t_fob,t_flete,t_seguro,t_cf,t_impcol,t_impaduana,t_dollar,
|
|
t_costopl,t_recibida,t_precio,o_variacion
|
|
DECIMAL(12,2)
|
|
|
|
DEFINE no_reg SMALLINT
|
|
DEFINE total_cf,t_costo, costo_unit DECIMAL(12,2),
|
|
o_impaduana,o_impcolect,o_dollar,o_cf
|
|
DECIMAL(12,2)
|
|
DEFINE ot_fob,
|
|
ot_flete,
|
|
ot_cf,
|
|
ot_seguro,
|
|
ot_impcol,
|
|
ot_impaduana,
|
|
ot_dollar,
|
|
ot_costopl,
|
|
ot_costo,
|
|
ot_precio,
|
|
ot_costst,
|
|
ot_variacion DECIMAL(12,2)
|
|
|
|
## DEFINICION DE LAS VARIABLES DE IMPRESION
|
|
DEFINE hora CHAR(5)
|
|
DEFINE fechaActual, orden_tipo CHAR(12)
|
|
DEFINE codigo CHAR(25)
|
|
DEFINE codigos_sp, tituloFecha CHAR(25)
|
|
DEFINE material,titulo STRING
|
|
|
|
{OUTPUT
|
|
## DEFINICION DE LOS MARGENES DE IMPRESION
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 3
|
|
PAGE LENGTH 150}
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = TIME
|
|
LET fechaActual = today using "dd/mm/yy"
|
|
IF tipo_inventario = '2' THEN
|
|
LET titulo = 'Liquidacion Mercancias Productos Terminados'
|
|
ELSE
|
|
LET titulo = 'Liquidacion Mercancias Materia Prima'
|
|
END IF
|
|
IF primera = "S" THEN
|
|
LET t_fob = 0
|
|
LET t_flete = 0
|
|
LET t_seguro = 0
|
|
LET t_cf = 0
|
|
LET t_impcol = 0
|
|
LET t_impaduana = 0
|
|
LET t_dollar = 0
|
|
LET t_costopl = 0
|
|
LET t_recibida = 0
|
|
LET t_costo = 0
|
|
LET t_precio = 0
|
|
LET t_costst = 0
|
|
LET t_variacion = 0
|
|
LET o_variacion = 0
|
|
LET primera = "N"
|
|
LET idz = 1
|
|
END IF
|
|
|
|
BEFORE GROUP OF x.num_oc
|
|
|
|
IF total_cf is null THEN
|
|
LET total_cf = 0
|
|
END IF
|
|
|
|
LET ot_fob =0
|
|
LET ot_flete =0
|
|
LET ot_cf =0
|
|
LET ot_seguro =0
|
|
LET ot_impcol =0
|
|
LET ot_impaduana =0
|
|
LET ot_dollar =0
|
|
LET ot_costopl =0
|
|
LET ot_costo =0
|
|
LET ot_precio =0
|
|
LET ot_costst =0
|
|
LET ot_variacion =0
|
|
LET tituloFecha = "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy"
|
|
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
|
|
PRINTX p_compania.nombre, hora,tituloFecha, fechaActual,fecha_inicial USING "dd/mm/yy",
|
|
fecha_final USING "dd/mm/yy",titulo
|
|
ON EVERY ROW
|
|
|
|
LET seguro = 0
|
|
LET codigo = x.cod_n using "&&&&&","-",x.cod_grupo using "&&&&&","-",
|
|
x.cod_tipo using "&&&&&","-",x.cod_sec using "&&&&&"
|
|
LET codigos_sp = x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&"
|
|
LET orden_tipo = x.num_oc using "&&&&&","-",x.tipo
|
|
|
|
SELECT CONVERT(CHAR(10),MIN(a.fecha),101) INTO p_fecha FROM iptb00006 a
|
|
WHERE a.num_doc = x.num_doc and cod_mov in (10) AND status_t IS NULL
|
|
|
|
LET fob = x.precio
|
|
|
|
LET c_f = fob + x.flete
|
|
LET valor = c_f * x.tasa
|
|
|
|
IF elije = "L" THEN
|
|
LET seguro = 0
|
|
END IF
|
|
|
|
IF no_reg > 1 THEN
|
|
LET x.imp_aduana = (x.imp_aduana / total_cf) * c_f
|
|
LET x.imp_colect = (x.imp_colect / total_cf) * c_f
|
|
END IF
|
|
|
|
LET cost_pl = seguro + c_f + x.imp_colect + x.imp_aduana + valor
|
|
LET costo_unit = cost_pl / x.cantidad
|
|
LET precio_std = x.cantidad * x.cost_std
|
|
LET variacion = cost_pl - precio_std
|
|
LET material = "(",codigo,")","-",x.descripcion CLIPPED
|
|
|
|
PRINTX material, codigos_sp,x.proveedor, orden_tipo,
|
|
fob, x.flete, c_f, seguro, x.imp_colect, x.imp_aduana,
|
|
valor, cost_pl, x.cantidad, costo_unit, x.cost_std, precio_std,
|
|
variacion
|
|
|
|
IF tipo_inventario = '2' THEN
|
|
IF chstd = "YES" THEN
|
|
SELECT UNIQUE a.cod_n FROM iptb00004 a
|
|
WHERE a.cod_n = x.cod_n AND
|
|
a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND
|
|
a.cod_sec = x.cod_sec AND
|
|
a.ano = p_ano and
|
|
a.mes_ini = 1 AND
|
|
a.mes_fin = 12
|
|
IF STATUS = NOTFOUND THEN
|
|
INSERT INTO iptb00004 (ventas,mes_ini,mes_fin,ano,cod_n,cod_grupo,cod_tipo,cod_Sec,material,labor,gastos,us_crea,fech_crea)
|
|
VALUES ('1','01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,costo_unit,0,0,SUSER_SNAME(),GETDATE())
|
|
END IF
|
|
END IF
|
|
ELSE
|
|
IF chstd = "YES" THEN
|
|
SELECT UNIQUE a.cod_n FROM intb00013 a
|
|
WHERE a.cod_n = x.cod_n AND
|
|
a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND
|
|
a.cod_sec = x.cod_sec AND
|
|
a.ano = p_ano AND
|
|
a.mes_ini = 1 AND
|
|
a.mes_fin = 12
|
|
IF STATUS = NOTFOUND THEN
|
|
INSERT INTO intb00013 VALUES ('01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo,
|
|
x.cod_sec,costo_unit,null,SUSER_SNAME(),GETDATE(),null,
|
|
NULL)
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
|
|
INSERT INTO cttb00013 (fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,costo_lq,status_t,us_crea,fech_crea,tipo_orden)
|
|
VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,
|
|
x.cod_sec,x.cantidad,costo_unit,null,usuarios,GETDATE(),x.tipo)
|
|
|
|
INSERT INTO cttb000log2
|
|
(fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec)
|
|
VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec)
|
|
|
|
# Acumulacion de totales
|
|
IF o_impaduana is null THEN
|
|
LET o_impaduana = 0
|
|
END IF
|
|
IF o_variacion is null THEN
|
|
LET o_variacion = 0
|
|
END IF
|
|
IF o_impcolect is null THEN
|
|
LET o_impcolect = 0
|
|
END IF
|
|
IF o_dollar is null THEN
|
|
LET o_dollar = 0
|
|
END IF
|
|
IF o_cf is null THEN
|
|
LET o_cf = 0
|
|
END IF
|
|
|
|
LET t_fob = t_fob + fob
|
|
LET t_flete = t_flete + x.flete
|
|
LET t_seguro = t_seguro + seguro
|
|
LET t_cf = t_cf + c_f
|
|
LET t_impcol = t_impcol + x.imp_colect
|
|
LET t_impaduana = t_impaduana + x.imp_aduana
|
|
LET t_dollar = t_dollar + valor
|
|
LET t_costopl = t_costopl + cost_pl
|
|
LET t_costo = t_costo + costo_unit
|
|
LET t_precio = t_precio + x.cost_std
|
|
LET t_costst = t_costst + precio_std
|
|
LET t_variacion = t_variacion + variacion
|
|
|
|
LET o_variacion = o_variacion + cost_pl
|
|
LET o_impaduana = o_impaduana + x.imp_aduana + seguro
|
|
LET o_impcolect = o_impcolect + x.imp_colect
|
|
LET o_dollar = o_dollar + valor
|
|
LET o_cf = o_cf + c_f
|
|
|
|
LET ot_fob = ot_fob + fob
|
|
LET ot_flete = ot_flete + x.flete
|
|
LET ot_cf = ot_cf + c_f
|
|
LET ot_seguro = ot_seguro + seguro
|
|
LET ot_impcol = ot_impcol + x.imp_colect
|
|
LET ot_impaduana = ot_impaduana + x.imp_aduana
|
|
LET ot_dollar = ot_dollar + valor
|
|
LET ot_costopl = ot_costopl + cost_pl
|
|
LET ot_costo = ot_costo + costo_unit
|
|
LET ot_precio = ot_precio + x.cost_std
|
|
LET ot_costst = ot_costst + precio_std
|
|
LET ot_variacion = ot_variacion + variacion
|
|
|
|
AFTER GROUP OF x.num_oc
|
|
# Validacion del arreglo para imprimir la entrada 27
|
|
|
|
IF imp_entrada = "S" THEN
|
|
LET entrada27[idz].cuenta_no = "1161"
|
|
LET entrada27[idz].cod_aux = x.cod_sp
|
|
LET entrada27[idz].cod_sec = x.cod_sp_sec
|
|
LET entrada27[idz].num_doc = x.num_oc
|
|
LET entrada27[idz].valor = o_impaduana
|
|
LET o_impaduana = 0
|
|
LET idz = idz + 1
|
|
|
|
LET entrada27[idz].cuenta_no = "1161-01"
|
|
LET entrada27[idz].cod_aux = x.cod_sp
|
|
LET entrada27[idz].cod_sec = x.cod_sp_sec
|
|
LET entrada27[idz].num_doc = x.num_oc
|
|
LET entrada27[idz].valor = o_impcolect
|
|
LET o_impcolect = 0
|
|
LET idz = idz + 1
|
|
|
|
LET entrada27[idz].cuenta_no = "1161-02"
|
|
LET entrada27[idz].cod_aux = x.cod_sp
|
|
LET entrada27[idz].cod_sec = x.cod_sp_sec
|
|
LET entrada27[idz].num_doc = x.num_oc
|
|
LET entrada27[idz].valor = o_dollar
|
|
LET o_dollar = 0
|
|
LET idz = idz + 1
|
|
|
|
LET entrada27[idz].cuenta_no = "1161-03"
|
|
LET entrada27[idz].cod_aux = x.cod_sp
|
|
LET entrada27[idz].cod_sec = x.cod_sp_sec
|
|
LET entrada27[idz].num_doc = x.num_oc
|
|
LET entrada27[idz].valor = o_cf
|
|
LET o_cf = 0
|
|
LET idz = idz + 1
|
|
|
|
END IF
|
|
|
|
PRINTX ot_fob,ot_flete,ot_cf,ot_seguro,ot_impcol,ot_impaduana, ot_dollar,
|
|
ot_costopl,ot_costo, ot_precio,ot_costst,ot_variacion
|
|
|
|
ON LAST ROW
|
|
|
|
PRINTX t_fob, t_flete, t_cf,t_seguro,t_impcol,t_impaduana,t_dollar,
|
|
t_costopl,t_costo,t_precio,t_costst,t_variacion
|
|
|
|
LET o_impaduana = 0
|
|
LET o_impcolect = 0
|
|
LET o_dollar = 0
|
|
LET o_cf = 0
|
|
END REPORT
|
|
|
|
{-------------------------------------------------------------------------------
|
|
PROGRAMA : EDPRRP027
|
|
OBJETIVO : Listar las Entrada de Diario Productos Terminados
|
|
PROGRAMADOR : Juan F. Soto
|
|
FECHA REALIZACION : Mayo 20, 1994.
|
|
-------------------------------------------------------------------------------}
|
|
|
|
FUNCTION edprrp0271()
|
|
|
|
#WHENEVER ERROR CONTINUE
|
|
DEFINE longitud,u_mes,numero_ent,i SMALLINT,
|
|
ch_ano CHAR(4)
|
|
LET r_filename ="lqprrp004b.4rp"
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
##### Abriendo y desplegando el formulario de captura de datos
|
|
OPEN FORM edfmrp027 FROM "edfmrp027"
|
|
DISPLAY FORM edfmrp027
|
|
|
|
{ DISPLAY "edprrp027" AT 4,3
|
|
DISPLAY "Entrada de Diario Mat. Importada Rec." AT 6,21}
|
|
|
|
{ LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)}
|
|
|
|
###### Aceptando los valores para el rango de fecha
|
|
|
|
INPUT BY NAME entra,fecha1,fecha2,afecta,detalla
|
|
BEFORE INPUT
|
|
LET numero_ent = 27
|
|
LET fecha1 =fecha_inicial
|
|
LET fecha2 =fecha_final
|
|
DISPLAY BY NAME fecha1,fecha2
|
|
|
|
CALL controlNumericoED(numero_ent, fecha1, NULL) RETURNING entra
|
|
DISPLAY BY NAME entra
|
|
|
|
AFTER FIELD entra
|
|
LET longitud = LENGTH(entra)
|
|
IF longitud != 16 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD entra
|
|
END IF
|
|
LET existe = "N"
|
|
SELECT unique a.ref FROM cgtb00004 a WHERE a.ref = entra
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET existe = "S"
|
|
END IF
|
|
|
|
AFTER FIELD fecha1
|
|
IF fecha1 IS NULL THEN
|
|
ERROR "(16) CAMPO EN BLANCO"
|
|
NEXT FIELD fecha1
|
|
END IF
|
|
|
|
AFTER FIELD fecha2
|
|
IF fecha2 is null THEN
|
|
ERROR "(16) CAMPO EN BLANCO"
|
|
NEXT FIELD fecha2
|
|
END IF
|
|
|
|
IF fecha1 > fecha2 THEN
|
|
ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR"
|
|
NEXT FIELD fecha1
|
|
END IF
|
|
|
|
###### Selecionando en rango de fecha de la tabla de periodo para el fecha2
|
|
|
|
AFTER INPUT
|
|
|
|
IF int_flag THEN
|
|
ERROR "(2) OPERACION CANCELADA"
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
IF fecha2 > TODAY THEN
|
|
CALL msg(57)
|
|
END IF
|
|
END INPUT
|
|
##### Creando la facilidad para cancelar proceso con DELETE O SUPR
|
|
|
|
LET i = 1
|
|
|
|
{CALL configureoutput("XLS") RETURNING handler
|
|
START REPORT entrada271 TO XML HANDLER handler}
|
|
IF i = 1 THEN
|
|
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN
|
|
|
|
LET preview=1
|
|
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
|
|
END IF
|
|
LET i = 2
|
|
START REPORT entrada271 TO XML HANDLER HANDLER
|
|
END IF
|
|
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
##### Loop para enviar informacion al reporte
|
|
|
|
LET diario1.debito = t_costst
|
|
IF tipo_inventario = "2" THEN
|
|
LET diario1.cuenta_no = "1131-02"
|
|
ELSE
|
|
LET diario1.cuenta_no = "1151"
|
|
END IF
|
|
OUTPUT TO REPORT entrada271(diario1.*,fecha1,fecha2,detalla,entra)
|
|
|
|
IF i > 1 THEN
|
|
FINISH REPORT entrada271
|
|
END IF
|
|
END FUNCTION
|
|
|
|
#### Funcion para dar salida ordenada a la informacion requerida de
|
|
#### una entrada de diario de nominas local
|
|
|
|
REPORT entrada271(x,fecha1,fecha2,detalle1,entrada)
|
|
|
|
DEFINE x RECORD
|
|
cuenta_no LIKE cgtb00001.cuenta_no,
|
|
debito DECIMAL(10,2)
|
|
END RECORD
|
|
|
|
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
|
|
DEFINE debito,credito DECIMAL(12,2)
|
|
DEFINE detalle1 CHAR(30)
|
|
DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
|
|
DEFINE cod_aux_sec CHAR(6)
|
|
DEFINE doce CHAR(2)
|
|
DEFINE hora,referencia CHAR(5)
|
|
DEFINE entrada CHAR(25),
|
|
nombre_cta LIKE cgtb00001.descripcion
|
|
DEFINE fechaActual CHAR(12)
|
|
|
|
{ OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
PAGE LENGTH 150}
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = TIME
|
|
LET fechaActual = today using "dd/mm/yy"
|
|
|
|
##### Selecionado la descripcion del fecha
|
|
|
|
BEFORE GROUP OF x.cuenta_no
|
|
PRINTX p_compania.nombre,hora,fechaActual,fecha1,fecha2,entrada,doce
|
|
|
|
ON EVERY ROW
|
|
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
|
|
WHERE a.cuenta_no = x.cuenta_no
|
|
|
|
IF debito is null THEN
|
|
LET debito = 0
|
|
END IF
|
|
|
|
PRINTX x.cuenta_no, x.debito, nombre_cta
|
|
|
|
LET debito = debito + x.debito
|
|
|
|
IF afecta = "S" THEN
|
|
IF x.cuenta_no IS NOT NULL THEN
|
|
BEGIN WORK
|
|
|
|
CALL controlNumericoED(numero_ent, fecha1, usuarios) RETURNING entra
|
|
DISPLAY BY NAME entra
|
|
|
|
LET entrada = entra
|
|
|
|
INSERT INTO cgtb00004
|
|
(fecha,tipo,ref,cuenta_no,detalle_1,debito,credito,us_crea,fech_crea)
|
|
VALUES(fecha2,1,entrada,x.cuenta_no,detalle1,x.debito,0,usuarios,GETDATE())
|
|
END IF
|
|
END IF
|
|
|
|
ON LAST ROW
|
|
IF tipo_inventario = "2" THEN
|
|
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
|
|
WHERE a.cuenta_no = "5615"
|
|
|
|
LET debe = 0
|
|
LET haber = 0
|
|
LET referencia = "5615"
|
|
ELSE
|
|
SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a
|
|
WHERE a.cuenta_no = "1152"
|
|
|
|
LET debe = 0
|
|
LET haber = 0
|
|
LET referencia = "1152"
|
|
END IF
|
|
IF credito is null THEN
|
|
LET credito = 0
|
|
END IF
|
|
IF debito is null THEN
|
|
LET debito = 0
|
|
END IF
|
|
|
|
IF t_variacion > 0 THEN
|
|
LET debito = debito + t_variacion
|
|
LET debe = t_variacion
|
|
IF afecta = "S" THEN
|
|
IF tipo_inventario = "2" THEN
|
|
INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
|
|
,credito,us_crea,fech_crea)
|
|
VALUES(fecha2,1,entrada,"5615",detalle1,t_variacion,0,usuarios,GETDATE())
|
|
ELSE
|
|
INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
|
|
,credito,us_crea,fech_crea)
|
|
VALUES(fecha2,1,entrada,"1152",detalle1,t_variacion,0,usuarios,GETDATE())
|
|
END IF
|
|
END IF
|
|
ELSE
|
|
LET t_variacion = t_variacion * -1
|
|
LET credito = credito + t_variacion
|
|
LET haber = t_variacion
|
|
|
|
IF afecta = "S" THEN
|
|
INSERT INTO cgtb00004(fecha,tipo,ref,cuenta_no,detalle_1,debito
|
|
,credito,us_crea,fech_crea)
|
|
VALUES(fecha2,1,entrada,"5615",detalle1,0,t_variacion,SUSER_SNAME(),GETDATE() )
|
|
END IF
|
|
END IF
|
|
|
|
###### Acumulando totales por columna
|
|
PRINTX referencia, nombre_cta, debe, haber
|
|
LET credito = 0
|
|
# Impresion detalle de la entrada con ordenes de compras
|
|
FOR i = 1 TO idz
|
|
# IF entrada27[i].cuenta_no IS NOT NULL THEN
|
|
# IF entrada27[i].cod_aux is not null THEN
|
|
|
|
IF entrada27[i].valor < 0 THEN
|
|
LET entrada27[i].valor = entrada27[i].valor * -1
|
|
END IF
|
|
|
|
LET cod_aux_sec = entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
|
|
IF cod_aux_sec IS NULL THEN
|
|
LET cod_aux_sec = ' '
|
|
END IF
|
|
# DISPLAY "datos ",i USING "<<<"," ",entrada27[i].cod_aux using "&&","-",entrada27[i].cod_sec using "&&&&"
|
|
PRINTX entrada27[i].cuenta_no, cod_aux_sec, entrada27[i].num_doc,
|
|
entrada27[i].valor
|
|
IF entrada27[i].valor IS NULL THEN
|
|
LET entrada27[i].valor=0
|
|
END IF
|
|
LET credito = credito + entrada27[i].valor
|
|
|
|
IF afecta = "S" THEN
|
|
IF entrada27[i].valor < 0 THEN
|
|
LET entrada27[i].valor = entrada27[i].valor * -1
|
|
END IF
|
|
IF entrada27[i].cuenta_no IS NOT NULL THEN
|
|
INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,num_doc,cod_aux
|
|
,cod_sec,detalle_1,debito,credito,us_crea,fech_crea)
|
|
VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,
|
|
entrada27[i].num_doc,entrada27[i].cod_aux,
|
|
entrada27[i].cod_sec,detalle1,0,
|
|
entrada27[i].valor,SUSER_SNAME(),GETDATE())
|
|
END IF
|
|
END IF
|
|
# END IF
|
|
#END IF
|
|
END FOR
|
|
IF afecta = "S" THEN
|
|
COMMIT WORK
|
|
END IF
|
|
###### Imprime total DEBITO y total CREDITO
|
|
PRINTX debito,credito,detalle1
|
|
LET debito = 0
|
|
LET credito = 0
|
|
END REPORT
|
|
|