Files
2026-09-22 20:38:51 -04:00

968 lines
33 KiB
Plaintext

{
==============================================================================
PROGRAMA : LQPRRP001
SISTEMA : Sistema de Liquidacion Materiales
Objetivo : Liquidacion Mercancia Compras Exterior Mat. Prima
Nota: En los gastos y otros se segrega la entrada "ED.64"
PROGRAMADOR : Juan F. Soto
FECHA : Mayo 13, 1994
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
DEFINE entra CHAR(14),
p_fecha CHAR(10)
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 LIKE cgtb00001.cuenta_no,
debito DECIMAL(18,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 "decomarmol" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL lqprrp001()
END MAIN
FUNCTION lqprrp001()
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),
imp_colect DECIMAL(12,2),
imp_aduana DECIMAL(12,2),
tasa DECIMAL(8,2),
mercado CHAR(1),
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
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
INPUT BY NAME p_ano,m_mes,elije,imp_entrada,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
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 chstd = FGL_WINQUESTION("PREGUNTA","Actualiza Costos STD?","yes","Yes|no","question",0)
LET chstd = UPSHIFT(chstd)
LET respuesta = FGL_WINQUESTION("IMPRESION","DESEA REPORTE EN PANTALLA?","NO","NO|YES","QUESTION",0)
LET primera = "S"
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
IF respuesta = "YES" THEN
START REPORT liquida TO SCREEN
ELSE
START REPORT liquida TO archivo
END IF
DISPLAY "<<<Reporte Generandose... Espere por Favor>>>" AT 19,14
ATTRIBUTE(YELLOW)
DELETE FROM cttb00032 WHERE mes = m_mes and ano = p_ano AND tipo = '1'
DELETE FROM cttb00013 WHERE fecha_lq = fecha_final and tipo_lq = elije AND
tipo_orden = 1
DECLARE busca CURSOR FOR
SELECT 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,c.impuesto,c.otros_g,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
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 AND c.tipo = "01" and c.tipo = d.tipo
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(debito-credito) INTO busca_datos.imp_colect FROM cgtb00004
WHERE (cuenta_no = "1161-01" and status_t is null and
fecha <= fecha_final and cod_sec = cod_sec and
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(debito-credito) INTO busca_datos.imp_aduana FROM cgtb00004
WHERE (cuenta_no = "1161" and status_t is null and
fecha <= fecha_final and cod_sec = cod_sec and
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 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 liquida(busca_datos.*)
END FOREACH
FINISH REPORT liquida
IF respuesta <> "YES" THEN
IF imp = "S" THEN
RUN imprime
END IF
END IF
IF imp_entrada = "S" THEN
CALL entrada027()
END IF
CLEAR SCREEN
END FUNCTION
REPORT liquida(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),
imp_colect DECIMAL(12,2),
imp_aduana DECIMAL(12,2),
tasa DECIMAL(8,2),
mercado CHAR(1),
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,
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 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 14
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
LET l = (210 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT COLUMN 2, doce,comp_on,"lqprrp001",
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 Materia Prima"))/2
PRINT COLUMN l, "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 134,"GASTO"
PRINT COLUMN 50, "Reporte",
COLUMN 61, "Ordenes",
COLUMN 96, " COSTO &",
COLUMN 121, " IMPUESTO",
2 SPACES, " ADUANAL",
2 SPACES, " PRIMA ",
2 SPACES, " COSTO EN",
2 SPACES, " UNIDADES",
2 SPACES, " COSTO",
2 SPACES, " PRECIO",
2 SPACES, " COSTO"
PRINT COLUMN 1, "Materiales",
COLUMN 50, "Entrada ",
COLUMN 61, "Compras",
COLUMN 76, "FOB ",
COLUMN 88, "FLETE",
2 SPACES, " FLETE",
2 SPACES, " SEGURO",
2 SPACES, " COLECTOR",
2 SPACES, " Y OTROS",
2 SPACES, " DOLLAR",
2 SPACES, " PLANTA",
2 SPACES, " RECIBIDA",
2 SPACES, " UNIT.",
2 SPACES, " STD",
2 SPACES, " STD",
14 SPACES, " 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 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 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
# Busca la fecha del reporte de entrada para actualizar la tabla de
# liquidacion
SELECT UNIQUE CONVERT(char(10),MAX(fecha),101) INTO p_fecha FROM intb00006
WHERE num_doc = x.entrada and cod_mov in (34,35) AND status_t IS NULL
LET seguro = 0
LET fob = x.precio
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 "##,###,###.##",
2 SPACES, x.flete using "##,###.##",
2 SPACES, c_f using "##,###,###.##",
2 SPACES, seguro using "##,###.##",
2 SPACES, x.imp_colect using "##,###,###.##",
2 SPACES, x.imp_aduana using "##,###,###.##",
2 SPACES, valor using "###,###,###.##",
2 SPACES, cost_pl using "###,###,###.##",
2 SPACES, x.cantidad using "##,###,###.##",
2 SPACES, costo_unit using "##,###,###.####",
2 SPACES, x.cost_std using "##,###,###.####",
2 SPACES, precio_std using "##,###,###.##",
2 SPACES, variacion using "-,---,---,---.##"
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
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,SUSER_SNAME(),GETDATE(),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)
# 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 69, ot_fob using "##,###,###.##",
2 SPACES, ot_flete using "##,###.##",
2 SPACES, ot_cf using "##,###,###.##",
2 SPACES, ot_seguro using "##,###.##",
2 SPACES, ot_impcol using "##,###,###.##",
2 SPACES, ot_impaduana using "##,###,###.##",
2 SPACES, ot_dollar using "###,###,###.##",
2 SPACES, ot_costopl using "###,###,###.##",
2 SPACES, ot_costo using "##,###,###.##",
2 SPACES, ot_precio using "##,###,###.####",
2 SPACES, ot_costst using "##,###,###.####",
17 SPACES, ot_variacion using "-,---,---,---.##"
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 LAST ROW
PRINT COLUMN 1,"------------------------------------------------------",
"------------------------------------------------------",
"------------------------------------------------------",
"------------------------------------------------------",
"----------------------"
PRINT COLUMN 1, "Totales ----> ",
COLUMN 69,t_fob using "##,###,###.##",
2 SPACES, t_flete using "##,###.##",
2 SPACES, t_cf using "##,###,###.##",
2 SPACES, t_seguro using "##,###.##",
2 SPACES, t_impcol using "##,###,###.##",
2 SPACES, t_impaduana using "##,####,###.##",
2 SPACES, t_dollar using "###,###,###.##",
2 SPACES, t_costopl using "###,###,###.##",
2 SPACES, t_costo using "#,###,###.###",
4 SPACES, t_precio using "###,###.####",
2 SPACES, t_costst using "##,###,###.####",
17 SPACES, t_variacion using "--,---,---,---.##"
END REPORT
{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP027
OBJETIVO : Listar las Entrada de Diario Mat. Prima Recibida
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : Mayo 20, 1994.
-------------------------------------------------------------------------------
}
FUNCTION entrada027()
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 "lqfmfu001"
DISPLAY FORM entrada27
#CALL pantalla()
DISPLAY "entrada027" 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
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
BEFORE FIELD fecha1
SELECT MAX(a.fecha) INTO p_fecha FROM cgtb00004 a
WHERE a.ref[1,5] = entra1 AND a.status_t IS NULL
LET fecha1 = p_fecha + 1
DISPLAY BY NAME fecha1
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
LET p_fechas = fecha2 using "ddmmyy"
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha2
END IF
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
START REPORT entrada64 TO archivo
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
##### Loop para enviar informacion al reporte
DECLARE buscar CURSOR FOR
SELECT '1151' as cuenta,SUM(c.cantidad_oc*b.costo_st)
FROM intb00013 b,cgtb00018 c,cgtb00017 d
WHERE b.status_t IS NULL and b.cod_n = b.cod_n and
b.cod_grupo = b.cod_grupo and b.cod_tipo = b.cod_tipo and
b.cod_sec = b.cod_sec and c.num_oc = d.num_oc and
d.fecha BETWEEN fecha1 AND fecha2 AND d.status_t IS NULL AND
c.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 entrada64(diario1.*,fecha1,fecha2,detalla,entra)
END WHILE
FINISH REPORT entrada64
RUN imprime
CLEAR SCREEN
END FUNCTION
#### Funcion para dar salida ordenada a la informacion requerida de
#### una entrada de diario de nominas local
REPORT entrada64(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 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),
nombre_cta LIKE cgtb00001.descripcion
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
##### Selecionado la descripcion del fecha2
LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2
PRINT COLUMN 1, comp_off,"edprrp027",
COLUMN l, p_compania.nombre CLIPPED,
COLUMN 75, "Pag. ",pageno using "###"
PRINT COLUMN 35, "Sistema de Contabilidad",
COLUMN 75, today using "dd/mm/yy"
PRINT COLUMN 24, "Entrada de Diario Mat. Importada Recibida",
COLUMN 78, hora
PRINT COLUMN 34, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2
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
SELECT a.descripcion INTO nombre_cta
FROM cgtb00001 a
WHERE a.cuenta_no = x.cuenta_no
PRINT COLUMN 2, x.cuenta_no,
COLUMN 35, nombre_cta CLIPPED,
COLUMN 66, x.debito using "###,###,##&.&&"
LET debito = debito + x.debito
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,x.cuenta_no,null,null,null,null,
detalle1,null,null,x.debito,0,null,SUSER_SNAME(),GETDATE(),
null,null)
END IF
ON LAST ROW
SELECT a.descripcion INTO nombre_cta
FROM cgtb00001 a
WHERE a.cuenta_no = "1152"
IF credito is null THEN
LET credito = 0
END IF
###### Acumulando totales por columna
PRINT COLUMN 4, "1152",
COLUMN 35, nombre_cta CLIPPED;
IF t_variacion > 0 THEN
PRINT COLUMN 66, t_variacion USING "###,###,##&.&&"
LET debito = debito + t_variacion
IF afecta = "S" THEN
INSERT INTO cgtb00004
VALUES (fecha2,1,entrada,"1152",null,null,null,null,detalle1,
null,null,t_variacion,0,null,SUSER_SNAME(),GETDATE(),null,null)
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
VALUES (fecha2,1,entrada,"1152",null,null,null,null,detalle1,
null,null,0,t_variacion,null,SUSER_SNAME(),GETDATE(),null,null)
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
VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,null,
entrada27[i].num_doc,entrada27[i].cod_aux,
entrada27[i].cod_sec,detalle1,null,null,0,
entrada27[i].valor,null, SUSER_SNAME(),GETDATE(),null,null)
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