Se añade procedimiento almacenado para cierre y apertura de ejercicios
git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@391 f4e31baf-9722-1c47-927c-6f952f962d4b
This commit is contained in:
parent
d4163548f0
commit
0a73f1cdff
@ -382,6 +382,91 @@ BEGIN
|
||||
END^
|
||||
|
||||
|
||||
CREATE PROCEDURE PROC_CIERRE_APERTURA (
|
||||
id_ejercicio_cierre integer,
|
||||
id_ejercicio_apertura integer)
|
||||
as
|
||||
declare variable id_subcuenta_apertura integer;
|
||||
declare variable id_subcuenta_cierre integer;
|
||||
declare variable ref_subcuenta varchar(255);
|
||||
declare variable subcuenta varchar(255);
|
||||
declare variable num_orden integer;
|
||||
declare variable diferencia numeric(11,2);
|
||||
declare variable estado_ejercicio_cierre varchar(255);
|
||||
declare variable estado_ejercicio_apertura varchar(255);
|
||||
declare variable nombre_ejercicio_cierre varchar(255);
|
||||
declare variable nombre_ejercicio_apertura varchar(255);
|
||||
declare variable id_asiento_cierre integer;
|
||||
declare variable id_asiento_apertura integer;
|
||||
declare variable id_apunte_apertura integer;
|
||||
declare variable id_apunte_cierre integer;
|
||||
begin
|
||||
/*Seleccionamos el ejercicio de cierre*/
|
||||
select ESTADO, NOMBRE, GEN_ID(gen_cont_asientos_id, 1)
|
||||
from cont_ejercicios
|
||||
where id = :id_ejercicio_cierre
|
||||
into :estado_ejercicio_cierre, :nombre_ejercicio_cierre, :id_asiento_cierre;
|
||||
|
||||
/*Seleccionamos el ejercicio de apertura*/
|
||||
select ESTADO, NOMBRE, GEN_ID(gen_cont_asientos_id, 1)
|
||||
from cont_ejercicios
|
||||
where id = :id_ejercicio_apertura
|
||||
into :estado_ejercicio_apertura, :nombre_ejercicio_apertura, :id_asiento_apertura;
|
||||
|
||||
/*Si los ejercicios no estan abiertos no hacemos nada*/
|
||||
if ((estado_ejercicio_cierre = 'ABIERTO') and (estado_ejercicio_apertura = 'ABIERTO')) then
|
||||
begin
|
||||
/* Añadimos asiento de cierre*/
|
||||
insert into CONT_ASIENTOS (ID, FECHA_ASIENTO, TIPO)
|
||||
values (:id_asiento_cierre, current_date, 'x');
|
||||
|
||||
/* Añadimos asiento de apertura*/
|
||||
insert into CONT_ASIENTOS (ID, FECHA_ASIENTO, TIPO)
|
||||
values (:id_asiento_apertura, current_date, 'a');
|
||||
|
||||
num_orden = 1;
|
||||
|
||||
/* Para cada cuenta descuadrada se inserta un apunte de cierre asociado al asiento creado anteriormente*/
|
||||
for select ID_SUBCUENTA, REF_SUBCUENTA, SUBCUENTA, SUM(COALESCE(DEBE,0))-SUM(COALESCE(HABER,0)) as DIFERENCIA,
|
||||
GEN_ID(gen_cont_apuntes_id, 1), GEN_ID(gen_cont_apuntes_id, 1)
|
||||
from v_cont_diario where (ID_EJERCICIO = :ID_EJERCICIO_CIERRE)
|
||||
group by 1, 2, 3
|
||||
having (SUM(COALESCE(DEBE,0))-SUM(COALESCE(HABER,0))) <> 0
|
||||
into :id_subcuenta_cierre, :ref_subcuenta, :subcuenta, :diferencia, :id_apunte_cierre, :id_apunte_apertura do
|
||||
begin
|
||||
/*Buscamos la subcuenta equibalente en el ejericio de apertura*/
|
||||
select ID from cont_subcuentas
|
||||
where REF_SUBCUENTA = :ref_subcuenta
|
||||
and DESCRIPCION = :subcuenta
|
||||
and ID_EJERCICIO = :id_ejercicio_apertura
|
||||
into :id_subcuenta_apertura;
|
||||
|
||||
if (diferencia > 0) then
|
||||
begin
|
||||
/*APUNTE DE CIERRE*/
|
||||
insert into CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, HABER)
|
||||
values (:id_apunte_cierre, :id_asiento_cierre, :id_subcuenta_cierre, :num_orden, 'Asiento de cierre ' || :nombre_ejercicio_cierre, :diferencia);
|
||||
|
||||
/*APUNTE DE APERTURA*/
|
||||
insert into CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, DEBE)
|
||||
values (:id_apunte_apertura, :id_asiento_apertura, :id_subcuenta_apertura, :num_orden, 'Asiento de apertura ' || :nombre_ejercicio_apertura, :diferencia);
|
||||
end
|
||||
else
|
||||
begin
|
||||
/*APUNTE DE CIERRE*/
|
||||
insert into CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, DEBE)
|
||||
values (:id_apunte_cierre, :id_asiento_cierre, :id_subcuenta_cierre, :num_orden, 'Asiento de cierre ' || :nombre_ejercicio_cierre, (:diferencia)*-1);
|
||||
|
||||
/*APUNTE DE APERTURA*/
|
||||
insert into CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, HABER)
|
||||
values (:id_apunte_apertura, :id_asiento_apertura, :id_subcuenta_apertura, :num_orden, 'Asiento de apertura ' || :nombre_ejercicio_apertura, (:diferencia)*-1);
|
||||
end
|
||||
num_orden = num_orden + 1;
|
||||
end
|
||||
end
|
||||
|
||||
suspend;
|
||||
end^
|
||||
|
||||
SET TERM ; ^
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user