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

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