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

804 lines
27 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,val_64 DECIMAL(12,2)
DEFINE orden CHAR(10)
DEFINE t_variacion DECIMAL(12,2)
DEFINE idz, idy INTEGER
###### 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_companias.* FROM companias a
CALL lqprrp001()
END MAIN
FUNCTION lqprrp001()
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER
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
LET selec = "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 = '",elije ,"' and
d.fecha between '",fecha_inicial USING "mm/dd/yyyy" , "' and '",fecha_final USING "mm/dd/yyyy","' 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"
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
LET r_filename ="lqprrp001.4rp"
LET idy = 1
FOREACH busca INTO busca_datos.*
LET orden = busca_datos.num_oc USING "<<<<"
IF elije != "L" THEN
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
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
IF idy = 1 THEN
DISPLAY 'entro: ',idy
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 idy = 2
START REPORT liquida TO XML HANDLER HANDLER
END IF
OUTPUT TO REPORT liquida(busca_datos.*)
END FOREACH
IF idy > 1 THEN
FINISH REPORT liquida
ELSE
CALL fgl_winmessage("INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO")
--NEXT FIELD fecha_final
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,
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 material, rep_entrada1 STRING
DEFINE t_costo, costo_unit DECIMAL(12,4)
DEFINE orden_compra CHAR(15)
DEFINE hora CHAR(5)
FORMAT
PAGE HEADER
LET hora = time
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
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
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
LET material = x.cod_n using "&&&&&","-",x.cod_grupo using "&&&&&","-",
x.cod_tipo using "&&&&&","-",x.cod_sec using "&&&&&"," ",x.descripcion CLIPPED
DISPLAY 'material: ',material
LET rep_entrada1 = x.cod_sp,"-",x.cod_sp_sec
LET orden_compra = x.num_oc,"-",x.tipo
PRINTX material, rep_entrada1, x.entrada, orden_compra, 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 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
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
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
PRINTX t_fob, t_flete, t_cf, t_seguro, t_impcol, t_impaduana,
t_dollar, t_costo, t_precio, t_costst, t_variacion
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
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename2 STRING -- filename of Report Design Document including .4rp extension
--r_output STRING, -- output format option
-- preview INTEGER
# WHENEVER ERROR CONTINUE
##### 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
LET idz = 1
LET r_filename2 ="lqprrp002.4rp"
# 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
# CALL configureoutput("SVG") RETURNING handler
# START REPORT entrada64 TO XML HANDLER handler
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename2) THEN
--LET preview=1
CALL fgl_report_selectDevice("SVG") -- changing default
--CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
LET idx = 2
START REPORT entrada64 TO XML HANDLER HANDLER
END IF
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 fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
DEFINE hora CHAR(5)
DEFINE cuenta CHAR(30)
DEFINE entrada, hoy CHAR(14),
nombre_cta LIKE cgtb00001.descripcion
FORMAT
PAGE HEADER
LET hora = TIME
LET hoy = today using "dd/mm/yy"
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
PRINTX x.cuenta_no, nombre_cta, x.debito
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
LET cuenta = "1152 ",nombre_cta
PRINTX cuenta, t_variacion
IF t_variacion > 0 THEN
--PRINTX t_variacion
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
--PRINTX t_variacion
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
--LET entrada27[i].cuenta_no
--LET entrada27[i].cod_aux
--LET entrada27[i].cod_sec
--LET entrada27[i].num_doc
--LET entrada27[i].valor
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
{PRINTX entrada27[i].cuenta_no, entrada27[i].cod_aux,
entrada27[i].cod_sec, entrada27[i].num_doc,
entrada27[i].valor}
IF entrada27[i].valor is not null THEN
LET credito = credito + entrada27[i].valor
END IF
END IF
PRINTX entrada27[i].cuenta_no, entrada27[i].cod_aux,
entrada27[i].cod_sec, entrada27[i].num_doc,
entrada27[i].valor
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
--PRINT COLUMN 35,"Totales-->",
PRINTX debito, credito
LET debito = 0
LET credito = 0
PRINTX detalle1
END REPORT