1 line
32 KiB
Plaintext
1 line
32 KiB
Plaintext
{
|
|
==============================================================================
|
|
PROGRAMA : LQPRRP007
|
|
SISTEMA : Sistema de Liquidacion Materiales
|
|
Objetivo : Liquidacion Mercancia Compras Exterior REPUESTSO
|
|
Nota: En los gastos y otros se segrega la entrada "ED.64"
|
|
PROGRAMADOR : Juan F. Soto
|
|
FECHA : Noviembre 26, 1996
|
|
MODIFICADO :
|
|
FECHA :
|
|
==============================================================================
|
|
}
|
|
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 fecha1, fecha2 DATE ,p_fecha char(10)
|
|
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 CHAR(8),
|
|
debito DECIMAL(10,2)
|
|
END RECORD
|
|
|
|
DEFINE i SMALLINT
|
|
DEFINE fecha_inicial,fecha_final DATE
|
|
DEFINE tasa DECIMAL(8,2)
|
|
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
|
|
|
|
CALL lqprrp007()
|
|
END MAIN
|
|
|
|
FUNCTION lqprrp007()
|
|
|
|
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 DECIMAL(12,3),
|
|
clave CHAR(6)
|
|
END RECORD
|
|
|
|
LET int_flag = FALSE
|
|
|
|
OPTIONS
|
|
FORM LINE 8
|
|
|
|
OPEN FORM lqfmrp007 FROM "lqfmrp007"
|
|
DISPLAY FORM lqfmrp007
|
|
DISPLAY "lqprrp007" AT 4,3
|
|
DISPLAY "Liquidacion Partes y Repuestos" AT 6,24
|
|
|
|
LET tipo_papel = 2
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
INPUT BY NAME p_ano,m_mes,elije,imp_entrada,imp,chstd
|
|
|
|
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.29-000/",chequea_ent
|
|
|
|
|
|
LET p_fechas = fecha_final using "ddmmyy"
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD p_ano
|
|
END IF
|
|
|
|
AFTER FIELD elije
|
|
IF elije = "E" THEN
|
|
SELECT unique a.ref FROM cgtb00004 a WHERE a.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"
|
|
|
|
LET HANDLER = configureOutput("XLS")
|
|
START REPORT liquida7 TO XML HANDLER handler
|
|
|
|
|
|
|
|
DISPLAY "<<<Reporte Generandose... Espere por Favor>>>" AT 19,14
|
|
ATTRIBUTE(YELLOW)
|
|
|
|
DELETE FROM cttb00032 WHERE mes = m_mes and ano = p_ano AND tipo = '3'
|
|
DELETE FROM cttb00013 WHERE fecha_lq = fecha_final and tipo_lq = elije AND tipo_orden =3
|
|
INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp007','ELIMINO')
|
|
|
|
|
|
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.cantidad_oc*c.fob,c.costo_flete,d.prima_us,d.liquidada,c.impuesto,c.otros_g
|
|
FROM irtb00002 a,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
|
|
c.rep_entrada = d.rep_entrada and d.liquidada = 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
|
|
c.tipo = 3 AND
|
|
d.status_t is null ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
|
|
|
FOREACH busca INTO busca_datos.*
|
|
LET orden = busca_datos.num_oc USING "<<<<<<"
|
|
IF elije != "L" THEN
|
|
{# Busca el monto pagado al colector
|
|
SELECT sum(a.debito-a.credito) INTO busca_datos.imp_colect FROM cgtb00004 a
|
|
WHERE (a.cuenta_no = "1161-01" and a.status_t is null and
|
|
a.fecha <= fecha_final and a.cod_sec = a.cod_sec and
|
|
a.num_doc = orden)
|
|
}
|
|
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
|
|
|
|
#Busca la entrada 64 del rango especificado
|
|
SELECT sum(a.debito-a.credito) INTO val_64 FROM cgtb00004 a
|
|
WHERE (a.fecha between fecha_inicial and fecha_final and
|
|
a.ref[1,5] = "ED.64") AND (a.cod_aux = a.cod_aux and a.cod_sec = a.cod_sec
|
|
and a.num_doc = orden and a.status_t is null)
|
|
|
|
IF val_64 is null THEN
|
|
LET val_64 = 0
|
|
END IF
|
|
|
|
{# Busca los gastos aduanales
|
|
SELECT sum(a.debito-a.credito) INTO busca_datos.imp_aduana FROM cgtb00004 a
|
|
WHERE (cuenta_no = "1161" and a.status_t is null and
|
|
a.fecha <= fecha_final and a.cod_sec = a.cod_sec and
|
|
a.num_doc = orden)
|
|
}
|
|
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
|
|
|
|
IF busca_datos.imp_aduana != 0 THEN
|
|
LET busca_datos.imp_aduana = busca_datos.imp_aduana - val_64
|
|
END IF
|
|
# Busca el costos standard
|
|
LET busca_datos.cost_std = 0
|
|
SELECT a.costo_st INTO busca_datos.cost_std FROM irtb00013 a
|
|
WHERE a.ano = p_Ano 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.mes_fin = 12
|
|
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 liquida7(busca_datos.*)
|
|
END FOREACH
|
|
|
|
FINISH REPORT liquida7
|
|
|
|
|
|
IF imp_entrada = "S" THEN
|
|
CALL entrada0271()
|
|
END IF
|
|
CLEAR SCREEN
|
|
END FUNCTION
|
|
|
|
REPORT liquida7(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 DECIMAL(12,3),
|
|
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,
|
|
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)
|
|
|
|
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
|
|
PAGE LENGTH 150
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = time
|
|
|
|
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
|
|
|
|
LET l = (210 - LENGTH(p_compania.nombre CLIPPED))/2
|
|
PRINT COLUMN 2, comp_on,"lqprrp007",
|
|
COLUMN l, p_compania.nombre CLIPPED,
|
|
COLUMN 210, "Pag. ",pageno using "###"
|
|
LET l = (210 - LENGTH("Sistema de Contabilidad de Costo"))/2
|
|
PRINT COLUMN l, "Sistema de Contabilidad de Costo",
|
|
COLUMN 210, today using "dd/mm/yy"
|
|
LET l = (210 - LENGTH("Liquidacion Mercancia Partes y Repuestos"))/2
|
|
PRINT COLUMN l, "Liquidacion Mercancia Partes y Repuestos",
|
|
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
|
|
|
|
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
|
|
|
|
ON EVERY ROW
|
|
# Busca la fecha del reporte de entrada para actualizar la tabla de
|
|
# liquidacion
|
|
LET selec =
|
|
"SELECT DISTINCT a.fecha FROM irtb00006 a ",
|
|
"WHERE a.num_doc = ? and ",
|
|
" a.cod_mov in (1,2) ",
|
|
" and a.status_t IS NULL"
|
|
|
|
PREPARE comando FROM selec
|
|
EXECUTE comando USING x.entrada INTO p_fecha
|
|
LET fob = x.precio
|
|
#-----------------------------------------------
|
|
LET seguro = 0
|
|
#-----------------------------------------------
|
|
|
|
LET c_f = fob + x.flete
|
|
# jhonny 10/4/99 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 177, costo_unit using "###,###.####",
|
|
COLUMN 188, x.cost_std using "####,###.####",
|
|
COLUMN 202, precio_std using "#####,###.##",
|
|
COLUMN 214, variacion using "--,---,---.##"
|
|
|
|
IF chstd = "S" THEN
|
|
SELECT a.cod_n FROM irtb00013 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.mes_ini = "01" AND a.mes_fin = "12"
|
|
AND a.ano = p_ano
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
INSERT INTO irtb00013
|
|
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
|
|
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 ,us_mod ,fech_mod,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,SUSER_SNAME(),GETDATE(),null,null,x.tipo)
|
|
|
|
INSERT INTO cttb00032
|
|
VALUES (p_ano,m_mes,elije,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.cod_sp,
|
|
x.cod_sp_sec,x.entrada,x.num_oc,x.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,null,SUSER_SNAME(),GETDATE(),null,null)
|
|
|
|
INSERT INTO cttb000log2
|
|
(fecha_lq ,fecha ,tipo_lq ,num_oc ,cod_n ,cod_grupo
|
|
,cod_tipo ,cod_sec ,cantidad ,costo_lq ,status_t,us_crea
|
|
,fech_crea ,us_mod ,fech_mod,tipo_orden,programa)
|
|
|
|
|
|
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,SUSER_SNAME(),GETDATE(),null,null,x.tipo,'lqprrp007')
|
|
|
|
# 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
|
|
|
|
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[idx].cuenta_no = "1161"
|
|
LET entrada27[idx].cod_aux = x.cod_sp
|
|
LET entrada27[idx].cod_sec = x.cod_sp_sec
|
|
LET entrada27[idx].num_doc = x.num_oc
|
|
LET entrada27[idx].valor = o_impaduana
|
|
LET o_impaduana = 0
|
|
LET idx = idx + 1
|
|
LET entrada27[idx].cuenta_no = "1161-01"
|
|
LET entrada27[idx].cod_aux = x.cod_sp
|
|
LET entrada27[idx].cod_sec = x.cod_sp_sec
|
|
LET entrada27[idx].num_doc = x.num_oc
|
|
LET entrada27[idx].valor = o_impcolect
|
|
LET o_impcolect = 0
|
|
LET idx = idx + 1
|
|
|
|
LET entrada27[idx].cuenta_no = "1161-02"
|
|
LET entrada27[idx].cod_aux = x.cod_sp
|
|
LET entrada27[idx].cod_sec = x.cod_sp_sec
|
|
LET entrada27[idx].num_doc = x.num_oc
|
|
LET entrada27[idx].valor = o_dollar
|
|
LET o_dollar = 0
|
|
LET idx = idx + 1
|
|
|
|
LET entrada27[idx].cuenta_no = "1161-03"
|
|
LET entrada27[idx].cod_aux = x.cod_sp
|
|
LET entrada27[idx].cod_sec = x.cod_sp_sec
|
|
LET entrada27[idx].num_doc = x.num_oc
|
|
LET entrada27[idx].valor = o_cf
|
|
LET o_cf = 0
|
|
LET idx = idx + 1
|
|
END IF
|
|
PRINT COLUMN 1,"------------------------------------------------------",
|
|
"------------------------------------------------------",
|
|
"------------------------------------------------------",
|
|
"------------------------------------------------------",
|
|
"----------"
|
|
|
|
PRINT COLUMN 1, "Totales orden-> ",
|
|
COLUMN 67, ot_fob using "#,###,###.##",
|
|
COLUMN 80, ot_flete using "##,###.##",
|
|
COLUMN 91, ot_cf using "###,###.##",
|
|
COLUMN 102, ot_seguro using "##,###.##",
|
|
COLUMN 113, ot_impcol using "####,###.##",
|
|
COLUMN 124, ot_impaduana using "####,###.##",
|
|
COLUMN 134, ot_dollar using "##,###,###.##",
|
|
COLUMN 148, ot_costopl using "##,###,###.##",
|
|
COLUMN 175, ot_costo using "####,###.##",
|
|
COLUMN 187, ot_precio using "####,###.####",
|
|
COLUMN 199, ot_costst using "##,###,###.####",
|
|
COLUMN 213, ot_variacion using "--,---,---.##"
|
|
SKIP 1 LINE
|
|
#-------------------------------------------------------------------------
|
|
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 175, t_costo using "####,###.##",
|
|
COLUMN 187, t_precio using "####,###.####",
|
|
COLUMN 199, t_costst using "##,###,###.####",
|
|
COLUMN 213, t_variacion using "--,---,---.##"
|
|
END REPORT
|
|
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : EDPRRP027
|
|
OBJETIVO : Listar las Entrada de Diario Partes y Repuestos
|
|
PROGRAMADOR : Juan F. Soto
|
|
FECHA REALIZACION : Noviembre 27, 1996.
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
FUNCTION entrada0271()
|
|
DEFINE longitud SMALLINT
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
##### Abriendo y desplegando el formulario de captura de datos
|
|
|
|
OPEN FORM entrada27 FROM "lqfmfu002"
|
|
DISPLAY FORM entrada27
|
|
DISPLAY "entrada027" AT 4,3
|
|
DISPLAY "Entrada de Diario Partes y Repuestos" AT 6,16
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
###### Aceptando los valores para el rango de fecha
|
|
|
|
INPUT BY NAME entra,fecha1,fecha2,afecta,detalla
|
|
|
|
AFTER FIELD entra
|
|
LET longitud = LENGTH(entra)
|
|
IF longitud != 14 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD entra
|
|
END IF
|
|
SELECT unique a.ref FROM cgtb00004 a WHERE a.ref=entra AND a.status_t IS NULL
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
ERROR "(12) REGISTRO EXISTE"
|
|
NEXT FIELD entra
|
|
END IF
|
|
|
|
LET entra1 = entra
|
|
|
|
|
|
AFTER FIELD fecha1
|
|
IF fecha1 IS NULL THEN
|
|
ERROR "(16) CAMPO EN BLANCO"
|
|
NEXT FIELD fecha1
|
|
END IF
|
|
|
|
IF fecha1 <= p_fecha THEN
|
|
LET existe = "S"
|
|
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
|
|
END INPUT
|
|
##### Creando la facilidad para cancelar proceso con SUPR
|
|
|
|
LET idx = idx - 1
|
|
# Busca la informacion requerida
|
|
|
|
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
|
|
ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
|
|
|
|
##### Envia la Informacion al printer de contabilidad
|
|
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia
|
|
|
|
|
|
LET HANDLER = configureOutput("XLS")
|
|
START REPORT entrada641 TO XML HANDLER handler
|
|
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
##### Loop para enviar informacion al reporte
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT '1135-01',SUM(c.cantidad_oc*b.costo_st)
|
|
FROM irtb00013 b,cgtb00018 c,cgtb00017 d
|
|
WHERE b.status_t IS NULL 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_oc = d.num_oc) and
|
|
d.fecha BETWEEN fecha1 AND fecha2 AND d.status_t IS NULL
|
|
|
|
OPEN buscar
|
|
WHILE STATUS != NOTFOUND
|
|
FETCH buscar INTO diario1.*
|
|
|
|
IF status = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
ERROR "(2) OPERACION CANCELADA"
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
LET diario1.debito = t_costst
|
|
OUTPUT TO REPORT entrada641(diario1.*,fecha1,fecha2,detalla,entra)
|
|
END WHILE
|
|
FINISH REPORT entrada641
|
|
CLEAR SCREEN
|
|
END FUNCTION
|
|
|
|
#### Funcion para dar salida ordenada a la informacion requerida de
|
|
#### una entrada de diario de nominas local
|
|
|
|
REPORT entrada641(x,fecha1,fecha2,detalle1,entrada)
|
|
|
|
DEFINE x RECORD
|
|
cuenta_no CHAR(8),
|
|
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 mano_obra,sueldo_ind,monto_banco DECIMAL(12,2)
|
|
DEFINE total1,total2,total3,total4,total5,total6 DECIMAL(12,2)
|
|
DEFINE total7,total8 DECIMAL(12,2) ## Acumula los totales DEBITO Y CREDITO
|
|
DEFINE tasa1 DECIMAL(5,2) ## Almacena la tasa de la tasa de cambio
|
|
DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
|
|
DEFINE nomina CHAR(1)
|
|
DEFINE doble_on CHAR(2)
|
|
DEFINE doble_off CHAR(2)
|
|
DEFINE negrillas_on CHAR(6)
|
|
DEFINE negrillas_off CHAR(6)
|
|
DEFINE comp_on CHAR(2)
|
|
DEFINE comp_off CHAR(2)
|
|
DEFINE doce CHAR(2)
|
|
DEFINE normal CHAR(2)
|
|
DEFINE normall CHAR(3)
|
|
DEFINE comprimido CHAR(3)
|
|
DEFINE hora CHAR(5)
|
|
DEFINE dpto INTEGER
|
|
DEFINE nomina1 CHAR(24)
|
|
DEFINE entrada CHAR(14)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
PAGE LENGTH 150
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET hora = time
|
|
|
|
##### Selecionado la descripcion del fecha2
|
|
|
|
LET l = (100 - LENGTH(p_compania.nombre CLIPPED))/2
|
|
PRINT COLUMN 2, normal,doce,comp_off,comp_on,"lqprrp007",
|
|
COLUMN l, p_compania.nombre CLIPPED,
|
|
COLUMN 90, "Pag. ",pageno using "###"
|
|
LET l = (100 - LENGTH("Sistema de Contabilidad de Costo"))/2
|
|
PRINT COLUMN l, "Sistema de Contabilidad de Costo",
|
|
COLUMN 90, today using "dd/mm/yy"
|
|
LET l = (100 - LENGTH("Entrada de Diario Liquidacion Partes Y Repuestos"))/2
|
|
PRINT COLUMN l, "Entrada de Diario Liquidacion Partes Y Repuestos",
|
|
COLUMN 90, hora
|
|
PRINT COLUMN 1, "Del ",fecha_inicial USING "dd/mm/yy"," Al ",
|
|
fecha_final USING "dd/mm/yy"
|
|
# , negrillas_off
|
|
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 01,"Entrada de Diario No.",
|
|
doble_on,entrada
|
|
|
|
PRINT COLUMN 1,"Observaciones: _____________________________________"
|
|
PRINT COLUMN 1," _____________________________________"
|
|
|
|
PRINT doce
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
negrillas_on
|
|
|
|
PRINT COLUMN 2, "Cuenta ",
|
|
COLUMN 11, "Dpto",
|
|
COLUMN 17, "Catalogo",
|
|
COLUMN 26, "Refe",
|
|
COLUMN 41, "Concepto",
|
|
COLUMN 75, "Debe",
|
|
COLUMN 93, "Haber",negrillas_off
|
|
|
|
PRINT COLUMN 1,
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
negrillas_off
|
|
SKIP 1 LINE
|
|
|
|
IF debito is null THEN
|
|
LET debito = 0
|
|
END IF
|
|
ON EVERY ROW
|
|
PRINT COLUMN 4, x.cuenta_no,
|
|
COLUMN 35, "INVENTARIO REPUESTOS",
|
|
COLUMN 66, x.debito using "###,###,##&.&&"
|
|
LET debito = debito + x.debito
|
|
|
|
IF afecta = "S" THEN
|
|
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,SUSER_SNAME(),GETDATE())
|
|
|
|
END IF
|
|
|
|
ON LAST ROW
|
|
IF credito is null THEN
|
|
LET credito = 0
|
|
END IF
|
|
###### Acumulando totales por columna
|
|
PRINT COLUMN 4, "5501",
|
|
COLUMN 35, "VARIACION COSTO INDIRECTO";
|
|
|
|
IF t_variacion > 0 THEN
|
|
PRINT COLUMN 66, t_variacion USING "###,###,##&.&&"
|
|
LET debito = debito + 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,"5501",detalle1,
|
|
t_variacion,0,SUSER_SNAME(),GETDATE())
|
|
END IF
|
|
ELSE
|
|
PRINT COLUMN 84, t_variacion using "###,###,##&.&&"
|
|
LET t_variacion = t_variacion * -1
|
|
LET credito = credito + 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,"5501",detalle1,
|
|
0,t_variacion,SUSER_SNAME(),GETDATE())
|
|
END IF
|
|
END IF
|
|
# Impresion detalle de la entrada con ordenes de compras
|
|
FOR i = 1 TO idx
|
|
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
|
|
|
|
PRINT COLUMN 4, entrada27[i].cuenta_no,
|
|
COLUMN 17, entrada27[i].cod_aux using "&&","-",
|
|
entrada27[i].cod_sec using "&&&&",
|
|
COLUMN 26, entrada27[i].num_doc using "&&&&&&",
|
|
COLUMN 84, entrada27[i].valor using "###,###,##&.&&"
|
|
IF entrada27[i].valor is not null THEN
|
|
LET credito = credito + entrada27[i].valor
|
|
END IF
|
|
END IF
|
|
|
|
IF afecta = "S" 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 FOR
|
|
|
|
###### Imprime total DEBITO y total CREDITO
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1,negrillas_on
|
|
PRINT COLUMN 66,"--------------",
|
|
COLUMN 84,"--------------"
|
|
PRINT COLUMN 35,"Totales-->",
|
|
COLUMN 66,debito USING "###,###,##&.&&",
|
|
COLUMN 84,credito USING "###,###,##&.&&",negrillas_off
|
|
LET debito = 0
|
|
LET credito = 0
|
|
SKIP 2 LINE
|
|
PRINT COLUMN 1, detalle1
|
|
PRINT COLUMN 1,comp_off,negrillas_off
|
|
SKIP 4 LINE
|
|
END REPORT
|