Files
MBS/PROYECTO/lqdir/lqprrp008.4gl
T

431 lines
14 KiB
Plaintext

{
==============================================================================
PROGRAMA : LQPRRP008
SISTEMA : Sistema de Liquidacion Materiales
Objetivo : Re-Liquidacion Mercancia Compras Exterior Mat. Prima
Nota: En los gastos y otros se segrega la entrada "ED.64"
PROGRAMADOR : Juan F. Soto
FECHA : Diciembre 19, 1996.
==============================================================================
}
GLOBALS
"lqprgb000.4gl"
###### Variables para busqueda de rango de fecha
DEFINE elije,imp,afecta CHAR(1)
DEFINE m_mes,mes SMALLINT
DEFINE chequea_ent,p_ano CHAR(4)
DEFINE detalla CHAR(30)
DEFINE no_entrada CHAR(14)
DEFINE p_fecha,fecha1, fecha2 DATE
DEFINE entra CHAR(14)
DEFINE entra1 CHAR(5)
DEFINE t_costst,p_fob,valor,mano_obra,sueldo_ind,monto_banco,
interes,val_64 DECIMAL(12,2)
DEFINE orden CHAR(10)
DEFINE t_variacion DECIMAL(12,2)
###### Variables que la almacenan la informacion enviada al reporte
DEFINE diario1 RECORD
cuenta_no SMALLINT,
debito DECIMAL(10,2)
END RECORD
DEFINE i SMALLINT
DEFINE fecha_inicial,fecha_final DATE
DEFINE tasa DECIMAL(8,2)
DEFINE primera CHAR(1)
FUNCTION lqprrp008()
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,
entrada INTEGER,
num_doc INTEGER,
num_oc INTEGER,
tipo CHAR(2),
cantidad DECIMAL(12,2),
precio DECIMAL(12,2),
flete DECIMAL(12,2),
tasa DECIMAL(8,2),
mercado CHAR(1),
imp_colect DECIMAL(12,2),
imp_aduana DECIMAL(12,2),
cost_std LIKE intb00013.costo_st,
clave CHAR(6)
END RECORD
LET int_flag = FALSE
OPTIONS
FORM LINE 8
OPEN FORM lqfmrp001 FROM "lqfmrp001"
DISPLAY FORM lqfmrp001
DISPLAY "lqprrp008" AT 4,3
DISPLAY "Liquidacion Mercancia mp" AT 6,28
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
INPUT BY NAME p_ano,m_mes,elije,imp
AFTER FIELD p_ano
IF p_ano is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_ano
END IF
AFTER FIELD m_mes
IF m_mes is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD m_mes
END IF
SELECT a.fecha_inicio,a.fecha_corte INTO fecha_inicial,fecha_final
FROM prdtable a WHERE a.mes = m_mes and a.ano = p_ano
DISPLAY BY NAME fecha_inicial,fecha_final ATTRIBUTE(BOLD)
LET chequea_ent = m_mes using "&&",p_ano[3,4]
LET no_entrada = "ED.27-000/",chequea_ent
AFTER FIELD elije
IF elije = "E" THEN
SELECT unique ref FROM cgtb00004 WHERE ref = no_entrada
IF status != notfound THEN
LET numero_msg = 222
CALL msg(numero_msg)
#NEXT FIELD p_ano
END IF
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET primera = "S"
START REPORT liquida8 TO "rplq01"
DISPLAY "<<<Reporte Generandose... Espere por Favor>>>" AT 19,14
ATTRIBUTE(YELLOW)
DECLARE busca CURSOR FOR
SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
a.descrip_esp,a.unidad_med,
d.cod_sp,d.cod_sp_sec,d.rep_entrada,c.rep_entrada,c.num_oc,c.tipo,
c.cantidad_oc,c.fob,c.costo_flete,d.prima_us,d.liquidada
FROM intb00001 a,cgtb00018 c,cgtb00017 d
WHERE a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and c.cod_n = 1 AND
a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec and
c.rep_entrada = d.rep_entrada and d.liquidada[1] = elije and
d.fecha between fecha_inicial and fecha_final and c.status_t is null
AND c.num_oc = d.num_oc and c.tipo = d.tipo AND c.status_t IS NULL AND
d.status_t is null ORDER BY c.num_oc,1,2,3,4
FOREACH busca INTO busca_datos.*
LET orden = busca_datos.num_oc
IF elije != "L" THEN
# Busca el monto pagado al colector
SELECT a.impuesto_c,a.gasto_ad ,a.prima_d
INTO busca_datos.imp_colect,busca_datos.imp_aduana,busca_datos.tasa
FROM cttb00040 a
WHERE
a.ano = p_ano AND a.mes = m_mes AND
a.num_oc = orden
END IF
IF busca_datos.imp_colect is null THEN
LET busca_datos.imp_colect = 0
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
SELECT 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
IF busca_datos.cost_std is null THEN
LET busca_datos.cost_std = 0
END IF
LET busca_datos.clave = busca_datos.num_oc using "<<<<",busca_datos.tipo
OUTPUT TO REPORT liquida8(busca_datos.*)
END FOREACH
FINISH REPORT liquida8
IF imp = "S" THEN
RUN "cat rplq01 |lp -dcentral"
END IF
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT liquida8(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,
entrada INTEGER,
num_doc INTEGER,
num_oc INTEGER,
tipo CHAR(2),
cantidad DECIMAL(12,2),
precio DECIMAL(12,2),
flete DECIMAL(12,2),
tasa DECIMAL(8,2),
mercado CHAR(1),
imp_colect DECIMAL(12,2),
imp_aduana DECIMAL(12,2),
cost_std LIKE intb00013.costo_st,
clave CHAR(6)
END RECORD
DEFINE n_reg SMALLINT
DEFINE fecha1,fecha2 DATE
DEFINE variacion,precio_std,fob,c_f,seguro,cost_pl,valor,t_fob,t_flete,
t_seguro,t_cf,t_impcol,t_impaduana,t_dollar,t_costopl,t_recibida,
t_precio,o_variacion,total_cf,o_impaduana,o_impcolect,o_dollar,o_cf,
balan_act DECIMAL(12,2)
DEFINE descrip1 CHAR(30)
DEFINE t_costo, costo_unit DECIMAL(12,4)
DEFINE p_cuenta CHAR(8)
DEFINE otras_cta CHAR(8)
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
FORMAT
PAGE HEADER
LET doble_on = ASCII 001
LET doble_off = ASCII 002
LET negrillas_on = ASCII 027, ASCII 098
LET negrillas_off = ASCII 027, ASCII 099
LET comp_on = ASCII 31
LET comp_off = ASCII 29
LET doce = ASCII 30
LET normal = ASCII 029
LET hora = time
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT COLUMN 1, comp_on,
COLUMN 2, "lqprrp008",
COLUMN 14, negrillas_on,
COLUMN 15, doble_on,
COLUMN 48, "R A Y . O . V A C D O M I N I C A N A, S. A.",
negrillas_off,
doble_off,
COLUMN 140, "Pag. ",pageno using "###"
PRINT COLUMN 95, "Sistema de Contabilidad de Costo",
COLUMN 210, today using "dd/mm/yy"
PRINT COLUMN 93, "Liquidacion Mercancia Materia Prima",
COLUMN 210, hora
PRINT COLUMN 98, "Del ",fecha_inicial USING "dd/mm/yy"," Al ",
fecha_final USING "dd/mm/yy"
PRINT negrillas_on
PRINT COLUMN 1, "---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------------------",
"----------------------"
PRINT COLUMN 128,"GASTO"
PRINT COLUMN 50, "Reporte",
COLUMN 61, "Ordenes",
COLUMN 96, "COSTO &",
COLUMN 115, "IMPUESTO",
COLUMN 128, "ADUANAL",
COLUMN 141, "PRIMA ",
COLUMN 153, "COSTO EN",
COLUMN 166, "UNIDADES",
COLUMN 183, "COSTO",
COLUMN 194, "PRECIO",
COLUMN 206, "COSTO"
PRINT COLUMN 1, "Materiales",
COLUMN 50, "Entrada ",
COLUMN 61, "Compras",
COLUMN 76, "FOB",
COLUMN 83, "FLETE",
COLUMN 96, "FLETE",
COLUMN 104, "SEGURO",
COLUMN 115, "COLECTOR",
COLUMN 128, "Y OTROS",
COLUMN 141, "DOLLAR",
COLUMN 153, "PLANTA",
COLUMN 166, "RECIBIDA",
COLUMN 183, "UNIT.",
COLUMN 195, "STD",
COLUMN 206, "STD",
COLUMN 218, "VARIACION"
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------",
"----------------------------------------------------",
"----------------------------------------------------",
"------------------"
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 o_impaduana = 0
LET o_impcolect = 0
LET o_dollar = 0
LET o_cf = 0
LET idx = 1
LET primera = "N"
END IF
BEFORE GROUP OF x.clave
# Busca La suma del costo y flete
SELECT SUM(a.fob+a.costo_flete),count(*) INTO total_cf,n_reg
FROM cgtb00018 a,cgtb00017 b
WHERE (a.num_oc = x.num_oc) and (a.tipo = x.tipo) and
(b.fecha between fecha_inicial and fecha_final) and
(a.num_oc = b.num_oc and a.tipo = b.tipo) and
(a.status_t is null) and (a.rep_entrada = b.rep_entrada)
IF total_cf is null THEN
LET total_cf = 0
END IF
PRINT negrillas_off
ON EVERY ROW
LET fob = x.precio
LET c_f = fob + x.flete
LET seguro = (c_f * .10)
LET valor = c_f * x.tasa
IF n_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
IF x.mercado = "L" THEN
LET seguro = 0
LET x.imp_colect = 0
LET x.imp_aduana = 0
LET valor = 0
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
PRINT COLUMN 1, x.cod_n using "&","-",x.cod_grupo using "&","-",
x.cod_tipo using "&&","-",x.cod_sec using "&&&",
" ",x.descripcion," ",x.unidad,
COLUMN 38, x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&",
COLUMN 47, x.entrada using "&&&&&&",
COLUMN 60, x.num_oc using "&&&&&","-",x.tipo,
COLUMN 69, fob using "#,###,###.##",
COLUMN 80, x.flete using "##,###.##",
COLUMN 91, c_f using "#,###,###.##",
COLUMN 103, seguro using "##,###.##",
COLUMN 113, x.imp_colect using "#,###,###.##",
COLUMN 125, x.imp_aduana using "###,###.##",
COLUMN 137, valor using "####,###.##",
COLUMN 149, cost_pl using "####,###.##",
COLUMN 161, x.cantidad using "##,###,###.##",
COLUMN 176, costo_unit using "##,###.####",
COLUMN 189, x.cost_std using "##,###.####",
COLUMN 202, precio_std using "#####,###.##",
COLUMN 214, variacion using "--,---,---.##"
# Acumulacion de totales
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
#-------------------------------------------------------------------------
ON LAST ROW
PRINT COLUMN 1,"------------------------------------------------------",
"------------------------------------------------------",
"------------------------------------------------------",
"------------------------------------------------------",
"----------"
PRINT COLUMN 1, "Totales ----> ",
COLUMN 67,t_fob using "#,###,###.##",
COLUMN 80, t_flete using "##,###.##",
COLUMN 91, t_cf using "###,###.##",
COLUMN 102, t_seguro using "##,###.##",
COLUMN 113, t_impcol using "####,###.##",
COLUMN 124, t_impaduana using "####,###.##",
COLUMN 134, t_dollar using "##,###,###.##",
COLUMN 148, t_costopl using "##,###,###.##",
COLUMN 177, t_costo using "##,###.###",
COLUMN 187, t_precio using "##,###.####",
COLUMN 199, t_costst using "##,###,###.####",
COLUMN 213, t_variacion using "--,---,---.##"
END REPORT