3318 lines
148 KiB
Plaintext
3318 lines
148 KiB
Plaintext
CREATE OR REPLACE PACKAGE pack_imob IS
|
|
imob_data_operatie date;
|
|
|
|
nNrLuniCurent number; -- an*12+luna curenta
|
|
nLunaCurenta number;
|
|
nAnCurent number;
|
|
dDataCurenta date; -- 01/ll/aaaa
|
|
|
|
type tip_valori_mf is record(
|
|
data_test date,
|
|
id_mf number,
|
|
id_lista_mf number,
|
|
id_operatie_mf number,
|
|
id_operatie_prec number,
|
|
id_calcul_rate number,
|
|
denumire varchar2(500),
|
|
data_achizitie date,
|
|
data_pif date,
|
|
explicatia varchar2(500),
|
|
nract number,
|
|
nr_pif number,
|
|
procent number,
|
|
coeficient number,
|
|
id_tip_imobilizare number,
|
|
tip_imobilizare varchar2(50),
|
|
id_tip_amortizare number,
|
|
tip_amortizare varchar2(50),
|
|
dns_luni number,
|
|
cont varchar2(4),
|
|
acont varchar2(4),
|
|
cod_mf varchar2(20),
|
|
id_gestiune number,
|
|
gestiune varchar2(50),
|
|
id_lucrare number,
|
|
nrord varchar2(50),
|
|
id_responsabil number,
|
|
responsabil varchar2(50),
|
|
id_sectie number,
|
|
sectie varchar2(50),
|
|
id_sucursala number,
|
|
sucursala varchar2(100),
|
|
nr_inventar number,
|
|
lper_in varchar2(7),
|
|
lper_fin varchar2(7),
|
|
amort_max_deductibil number,
|
|
data_operatie date,
|
|
id_tip_operatie number,
|
|
ultima_operatie varchar2(50),
|
|
cauza varchar2(50),
|
|
uzura_prec number,
|
|
dns_ramas number,
|
|
iesit_din_gest number,
|
|
cota_an number,
|
|
cota_luna number,
|
|
data_expirare date,
|
|
ultima_rata number,
|
|
valoare number,
|
|
valoare_ramasa number,
|
|
valoare_reziduala number,
|
|
rata number,
|
|
--valoare_ramasa_amort number,
|
|
amort_prec number,
|
|
--amort_prec_rata number,
|
|
uzura number,
|
|
uzura_rata number,
|
|
rper_in varchar2(7),
|
|
rper_fin varchar2(7),
|
|
valoare_rol number,
|
|
valoare_ramasa_rol number,
|
|
rata_rol number,
|
|
ultima_rata_rol number,
|
|
valoare_achizitie number,
|
|
valoare_prec number,
|
|
id_tip_iesire number,
|
|
tip_iesire varchar2(100),
|
|
durata_ramasa number);
|
|
|
|
procedure setlunacurenta(v_data IN DATE);
|
|
function getNrLuniCurent return number;
|
|
function getDataCurenta return date;
|
|
|
|
PROCEDURE adauga_mf(v_schema IN VARCHAR2,
|
|
v_data IN DATE,
|
|
v_nract IN NUMBER,
|
|
v_dataact IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatia IN VARCHAR2,
|
|
v_valoare IN NUMBER,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_nr_inventar IN NUMBER,
|
|
v_cod IN VARCHAR2,
|
|
v_dns IN NUMBER,
|
|
v_uzura IN NUMBER,
|
|
v_amort_prec IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_id_fact IN NUMBER,
|
|
v_tip_operatie IN NUMBER,
|
|
v_explicatia_operatie in varchar2,
|
|
v_bunCapital in number,
|
|
v_bazatva in number,
|
|
v_tva in number,
|
|
v_id_cotatva in number,
|
|
v_prorataTva in number);
|
|
|
|
PROCEDURE adauga_mf(v_id_mf IN OUT NUMBER,
|
|
v_schema IN VARCHAR2,
|
|
v_data IN DATE,
|
|
v_nract IN NUMBER,
|
|
v_dataact IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatia IN VARCHAR2,
|
|
v_valoare IN NUMBER,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_nr_inventar IN NUMBER,
|
|
v_cod IN VARCHAR2,
|
|
v_dns IN NUMBER,
|
|
v_uzura IN NUMBER,
|
|
v_amort_prec IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_id_fact IN NUMBER,
|
|
v_tip_operatie IN NUMBER,
|
|
v_explicatia_operatie in varchar2,
|
|
v_bunCapital in number,
|
|
v_bazatva in number,
|
|
v_tva in number,
|
|
v_id_cotatva in number,
|
|
v_prorataTva in number);
|
|
|
|
PROCEDURE adauga_mf(v_id_mf IN OUT NUMBER,
|
|
v_schema IN VARCHAR2,
|
|
v_data IN DATE,
|
|
v_nract IN NUMBER,
|
|
v_dataact IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatia IN VARCHAR2,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_reziduala IN NUMBER,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_nr_inventar IN NUMBER,
|
|
v_cod IN VARCHAR2,
|
|
v_dns IN NUMBER,
|
|
v_uzura IN NUMBER,
|
|
v_amort_prec IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_id_fact IN NUMBER,
|
|
v_tip_operatie IN NUMBER,
|
|
v_explicatia_operatie in varchar2,
|
|
v_bunCapital in number,
|
|
v_bazatva in number,
|
|
v_tva in number,
|
|
v_id_cotatva in number,
|
|
v_prorataTva in number);
|
|
|
|
PROCEDURE adauga_rata(v_schema IN VARCHAR2,
|
|
v_id_operatie_mf IN NUMBER,
|
|
v_id_tip_operatie IN NUMBER,
|
|
v_id_mf IN NUMBER,
|
|
v_dns_ramas IN NUMBER,
|
|
v_data_calcul IN DATE,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_uzura_prec in number,
|
|
v_fiscala in number);
|
|
|
|
PROCEDURE inreg_majorare(v_schema IN VARCHAR2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf IN NUMBER,
|
|
v_valoare IN NUMBER,
|
|
v_datareeval IN DATE,
|
|
v_explicatia in varchar2,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_bazaTva in number,
|
|
v_idcotaTva in number,
|
|
v_Tva in number,
|
|
v_prorataTva in number);
|
|
|
|
PROCEDURE inreg_reevaluare(v_schema IN VARCHAR2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf IN NUMBER,
|
|
v_valoare IN NUMBER,
|
|
v_amortizare IN NUMBER,
|
|
v_datareeval IN DATE,
|
|
v_explicatia in varchar2,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_valreev in number);
|
|
|
|
PROCEDURE inreg_schimbdns_reevaluare(v_schema in varchar2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf in number,
|
|
v_cod IN VARCHAR2, -- codul nou
|
|
v_dns IN NUMBER, -- dns nou
|
|
v_valoare in number, -- valoarea noua de inventar
|
|
v_amortizare in number, -- valoarea noua total amortizata
|
|
v_uzura IN NUMBER, -- uzura noua totala
|
|
v_valoare_reziduala IN NUMBER, -- valoarea noua reziduala
|
|
v_datareeval in date,
|
|
v_explicatia in varchar2,
|
|
v_id_util in number,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_valreev in number);
|
|
|
|
PROCEDURE inreg_conservare(v_schema IN VARCHAR2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf IN NUMBER,
|
|
v_tip IN NUMBER,
|
|
v_cauza IN VARCHAR2,
|
|
v_dataconservare IN DATE,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_bazatva in number,
|
|
v_idcotatva in number,
|
|
v_tva in number,
|
|
v_prorataTva in number);
|
|
|
|
PROCEDURE inreg_schimbdns(v_schema IN VARCHAR2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf IN NUMBER,
|
|
v_codnou IN VARCHAR2,
|
|
v_dnsnou IN NUMBER,
|
|
v_dataschimbare IN DATE,
|
|
v_cauza IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number);
|
|
|
|
PROCEDURE inreg_gest(v_schema IN VARCHAR2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf IN NUMBER,
|
|
v_tip IN NUMBER,
|
|
v_cauza IN VARCHAR2,
|
|
v_dataschimbare IN DATE,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_bazatva in number,
|
|
v_idcotaTva in number,
|
|
v_tva in number,
|
|
v_prorataTva in number,
|
|
v_id_tip_iesire in imob_tipuri_iesire.id%type default null);
|
|
|
|
PROCEDURE inreg_transformare_in_mf(v_schema IN VARCHAR2,
|
|
v_id_mf IN NUMBER,
|
|
v_id_mf_nou IN NUMBER,
|
|
v_datamodificare IN DATE,
|
|
v_nract IN NUMBER,
|
|
v_dataact IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatia IN VARCHAR2,
|
|
v_valoare IN NUMBER,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_nr_inventar IN NUMBER,
|
|
v_cod IN VARCHAR2,
|
|
v_dns IN NUMBER,
|
|
v_uzura IN NUMBER,
|
|
v_dns_ramas IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_valoare_retinuta IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_id_tip_operatie in number DEFAULT 3);
|
|
|
|
FUNCTION getLuniOperatie RETURN NUMBER;
|
|
|
|
|
|
procedure schimba_mf(v_id_mf IN NUMBER,
|
|
v_nract IN NUMBER,
|
|
v_data_achizitie IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatie_n IN VARCHAR2,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_id_lista_mf IN NUMBER,
|
|
v_dns_luni IN NUMBER,
|
|
v_Cod_mf IN VARCHAR2,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_nr_inventar IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_lper_in in VARCHAR2,
|
|
v_lper_fin in VARCHAR2,
|
|
v_id_operatie_mf IN NUMBER,
|
|
v_id_tip_operatie in NUMBER,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_dns_ramas in NUMBER,
|
|
v_valoare_reziduala IN NUMBER,
|
|
v_data_operatie in DATE,
|
|
v_explicatie_o in VARCHAR2,
|
|
v_uzura_prec in NUMBER,
|
|
v_id_rata in NUMBER,
|
|
v_rper_in in VARCHAR2,
|
|
v_rper_fin in VARCHAR2,
|
|
v_rata in NUMBER,
|
|
v_cota_an in NUMBER,
|
|
v_cota_luna in NUMBER,
|
|
v_ultima_rata in NUMBER,
|
|
v_data_ultima_rata in DATE,
|
|
v_fiscala in NUMBER,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_nrdoc IN IMOB_OPERATII_MF.NRDOC%TYPE DEFAULT NULL,
|
|
v_datadoc in IMOB_OPERATII_MF.DATADOC%TYPE DEFAULT NULL);
|
|
|
|
procedure sterge_mf(v_id_mf IN NUMBER, v_id_util IN number default null);
|
|
|
|
/* function add_operatie_mf(v_schema IN VARCHAR2,
|
|
v_id_mf IN NUMBER,
|
|
v_id_tip_operatie IN NUMBER,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_dns_ramas IN NUMBER,
|
|
v_data_operatie IN DATE,
|
|
v_explicatia_operatie IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_id_tip_iesire in imob_tipuri_iesire.id%type default null)
|
|
return number;*/
|
|
|
|
function add_operatie_mf(v_id_mf IN NUMBER,
|
|
v_id_tip_operatie IN NUMBER,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_dns_ramas IN NUMBER,
|
|
v_valoare_reziduala IN NUMBER,
|
|
v_data_operatie IN DATE,
|
|
v_explicatia_operatie IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_id_tip_iesire in imob_tipuri_iesire.id%type default null)
|
|
return number;
|
|
|
|
procedure add_in_lista_mf(v_schema IN VARCHAR2,
|
|
v_id_mf IN NUMBER,
|
|
v_dns IN NUMBER,
|
|
v_cod_mf IN VARCHAR2,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_nr_inventar IN NUMBER,
|
|
v_id_util IN NUMBER,
|
|
v_data_calcul IN DATE,
|
|
v_durata IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER);
|
|
|
|
procedure adauga_la_transformare(v_id_mf_nou IN NUMBER,
|
|
v_id_operatie_nou IN NUMBER,
|
|
v_id_mf_curs IN NUMBER,
|
|
v_id_operatie_curs IN NUMBER,
|
|
v_valoare IN NUMBER);
|
|
|
|
procedure undo_in_imobilizare_in_curs(v_id_tip_imobilizare IN NUMBER,
|
|
v_id_operatie IN NUMBER);
|
|
|
|
procedure recalculat_expirarea(v_schema IN VARCHAR2,
|
|
v_id_operatie_prec IN NUMBER,
|
|
v_fiscala IN NUMBER);
|
|
|
|
FUNCTION get_max_id(v_schema IN VARCHAR2,
|
|
v_tabela IN VARCHAR2,
|
|
v_nume_id IN VARCHAR2) RETURN NUMBER;
|
|
|
|
procedure CALCUL_SITUATIE_LUNARA(v_datain in date,
|
|
v_datasf in date,
|
|
v_cond in varchar2,
|
|
v_fiscala in number,
|
|
v_id_sucursala in number,
|
|
crsMF out PACK_TYPES.tip_cursor);
|
|
|
|
procedure CALCUL_SITUATIE_LUNARA2(v_datain in date,
|
|
v_datasf in date,
|
|
v_cond in varchar2,
|
|
v_fiscala in number,
|
|
v_id_sucursala in number,
|
|
v_tip_selectie in number,
|
|
crsMF out PACK_TYPES.tip_cursor);
|
|
|
|
function valori_calcul(v_schema in varchar2,
|
|
v_id_sucursala in IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_datain in date,
|
|
v_datasf in date,
|
|
v_cond in varchar2,
|
|
v_fiscala in number)
|
|
return PACK_TYPES.tip_cursor;
|
|
|
|
function valori_calcul_view(v_id_mf in number,
|
|
v_data in date,
|
|
v_fiscala in number)
|
|
return PACK_TYPES.tip_cursor;
|
|
|
|
procedure sterge_operatie_mf(v_id_operatie IN NUMBER,
|
|
v_id_operatie_prec IN NUMBER,
|
|
v_fiscala IN NUMBER);
|
|
|
|
procedure modifica_lista_mf(v_id_mf IN IMOB_LISTA_MF.ID_MF%TYPE,
|
|
v_id_lista_mf IN IMOB_LISTA_MF.ID_LISTA_MF%TYPE,
|
|
v_dns_luni IN IMOB_LISTA_MF.DNS_LUNI%TYPE,
|
|
v_Cod_mf IN IMOB_LISTA_MF.COD_MF%TYPE,
|
|
v_cont IN IMOB_LISTA_MF.CONT%TYPE,
|
|
v_acont IN IMOB_LISTA_MF.ACONT%TYPE,
|
|
v_nr_inventar IN IMOB_LISTA_MF.NR_INVENTAR%TYPE,
|
|
v_id_gestiune IN IMOB_LISTA_MF.ID_GESTIUNE%TYPE,
|
|
v_id_responsabil IN IMOB_LISTA_MF.ID_RESPONSABIL%TYPE,
|
|
v_id_sectie IN IMOB_LISTA_MF.ID_SECTIE%TYPE,
|
|
v_id_lucrare IN IMOB_LISTA_MF.ID_LUCRARE%TYPE,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_util IN IMOB_LISTA_MF.ID_UTIL%TYPE,
|
|
v_an IN IMOB_LISTA_MF.AN%TYPE,
|
|
v_luna IN IMOB_LISTA_MF.LUNA%TYPE,
|
|
v_an_exp IN IMOB_LISTA_MF.AN%TYPE,
|
|
v_luna_exp IN IMOB_LISTA_MF.LUNA%TYPE,
|
|
v_amort_max_deductibil IN IMOB_LISTA_MF.AMORT_MAX_DEDUCTIBIL%TYPE);
|
|
|
|
procedure adauga_buncapital(v_id_mf in imob_bunuricapital.id_mf%type,
|
|
v_nrdoc in imob_bunuricapital.nrdoc%type,
|
|
v_datadoc in imob_bunuricapital.datadoc%type,
|
|
v_bazatva in imob_bunuricapital.bazatva%type,
|
|
v_tva in imob_bunuricapital.tva%type,
|
|
v_id_cota_tva in imob_bunuricapital.id_cota_tva%type,
|
|
v_ajustare in imob_bunuricapital.ajustare%type,
|
|
v_id_tip_operatie in imob_bunuricapital.id_tip_operatie%type,
|
|
v_tvaDatorat in imob_bunuricapital.tva_datorat%type,
|
|
v_prorataTva in imob_bunuricapital.proratatva%type);
|
|
procedure modifica_buncapital(v_id_mf in imob_bunuricapital.id_mf%type,
|
|
v_nrdoc in imob_bunuricapital.nrdoc%type,
|
|
v_datadoc in imob_bunuricapital.datadoc%type,
|
|
v_bazatva in imob_bunuricapital.bazatva%type,
|
|
v_tva in imob_bunuricapital.tva%type,
|
|
v_id_cota_tva in imob_bunuricapital.id_cota_tva%type,
|
|
v_ajustare in imob_bunuricapital.ajustare%type,
|
|
v_id_tip_operatie in imob_bunuricapital.id_tip_operatie%type,
|
|
v_tvaDatorat in imob_bunuricapital.tva_datorat%type,
|
|
v_id_regbc in imob_bunuricapital.id_regbc%type,
|
|
v_prorataTva in imob_bunuricapital.proratatva%type);
|
|
procedure sterge_buncapital(v_id_regbc in imob_bunuricapital.id_regbc%type);
|
|
|
|
FUNCTION verifica_nr_inventar(v_nr_inventar IN IMOB_LISTA_MF.NR_INVENTAR%TYPE,
|
|
v_data IN DATE,
|
|
v_id_tip_imobilizare IN NUMBER DEFAULT 1)
|
|
RETURN NUMBER;
|
|
|
|
END pack_imob;
|
|
/
|
|
CREATE OR REPLACE PACKAGE BODY pack_imob is
|
|
/*TIP OPERATII
|
|
1 INTRODUCERE
|
|
2 PRELUARE
|
|
3 TRANSFORMARE IN MF
|
|
4 IESIRE DIN GESTIUNE
|
|
5 INTRARE IN GESTIUNE
|
|
6 MAJORARE VALOARE INVENTAR
|
|
7 REEVALUARE VALOARE INVENTAR
|
|
8 SCHIMBARE DNS
|
|
9 RECALCULARE RATA
|
|
10 CONSERVARE
|
|
11 SCOATERE DIN CONSERVARE
|
|
12 MODIFICARE CU ISTORIC
|
|
13 INCHIDERE
|
|
14 DENOMINARE
|
|
15 SCHIMBARE DNS + REEVALUARE */
|
|
|
|
-- 25.03.2013
|
|
-- marius.mutu
|
|
-- + v_amort_max_deductibil in add_in_lista_mf, adauga_transformare,
|
|
|
|
-- 15.05.2014
|
|
-- marius.mutu
|
|
-- + tabel IMOB_TIPURI_IESIRE cu valori predefinite pentru tipul de iesire din gestiune: 1=VANZARE, 2=CASARE, 3=FURT, 4=ALTE
|
|
-- foloseste la PACK_MG_EVOLUTIE pentru bilant F40 (active imobilizate) - reduceri amortizare provenite din CASARE
|
|
-- CALCUL_SITUATIE_LUNARA, type tip_valori_mf: + coloane valoare_prec, id_tip_iesire, tip_iesire
|
|
-- inreg_gest (iesire din gestiune), add_operatie_mf: + v_id_tip_iesire
|
|
|
|
-- marius.atanasiu
|
|
-- CALCUL_SITUATIE_LUNARA: + parametru v_tip_selectie: 0 (default), 1 = se apeleaza selectul din pack_mg_evolutie cu mai putine coloane
|
|
|
|
-- 09.10.2014
|
|
-- marius.mutu
|
|
-- overloading-ul la IMOB_CALCUL_SITUATIE_LUNARA am redenumit in IMOB_CALCUL_SITUATIE_LUNARA2 pentru ca dadea eroare la ODBC instantclient 11.2
|
|
-- nu stia probabil ce declaratie sa foloseasca (in ODBC 10x functiona)
|
|
|
|
-- 12.11.2019
|
|
-- marius.mutu
|
|
-- inreg_majorare - calculez dns_ramas = dns_ramas_anterior - uzura de la ultima operatie, in loc de DNS - uzura totala
|
|
-- UTMIDIA avea imobilizari la care marise DNS RAMAS, si nu mai corespundea cu DNS
|
|
|
|
-- 16.04.2020
|
|
-- marius.mutu
|
|
-- adauga_mf + id_mf
|
|
|
|
-- 21.05.2020
|
|
-- marius.mutu
|
|
-- schimba_mf - tratare transformare imobilizari in curs in mijloace fixe nu se transmite id_rata
|
|
-- probabil ca dadea eroare la selectie din imob_calcul_rate si nu se inregistra in imob_operatii si imob_calculc_rate
|
|
-- nu apare eroare din cauza unui bug in Oracle
|
|
|
|
-- inreg_modificare este acum inreg_transformare_in_mf
|
|
-- am eliminat adauga_transformare - apelez din inreg_transformare_in_mf
|
|
|
|
-- 09.06.2020
|
|
-- marius.mutu
|
|
-- + setlunacurenta.
|
|
-- se apeleaza inainte de imob_vsituatie_lunara, imobf_vsituatie_lunara
|
|
|
|
-- 07.07.2021
|
|
-- marius.mutu
|
|
-- add_in_lista_mf trim(v_cod)
|
|
|
|
-- 25.01.2021
|
|
-- marius.mutu
|
|
-- adaugare valoare_reziduala in imob_operatii_mf, imobf_operatii_mf si modificare proceduri
|
|
|
|
-- 28.01.2021
|
|
-- marius.mutu
|
|
-- + PACK_IMOB.calcul_situatie_lunara2 + durata_ramasa
|
|
|
|
-- 02.02.2021
|
|
-- pack_imob.tip_valori_mf + durata_ramasa
|
|
|
|
-- 02.04.2021
|
|
-- marius.mutu
|
|
-- inreg_gest, inreg_majorare, inreg_reevaluare, inreg_schimbdns, inreg_conservare
|
|
-- s-a corectat selectia din view-ul contabil/fiscal
|
|
-- se lua din cel fiscal, chiar si pentru calculele amortizare contabila.
|
|
|
|
-- 02.06.2021
|
|
-- marius.mutu
|
|
-- adaugare inreg_schimbdns_reevaluare (schimbare DNS si reevaluare)
|
|
-- corectare valoare ramasa la inreg_schimbdns (era scazuta valoarea reziduala)
|
|
|
|
-- 06.12.2021
|
|
-- marius.mutu
|
|
-- schimba_mf - tratare id_tip_imobilizare = 3
|
|
-- imobilizarile in curs nu au operatii si dadea eroare
|
|
|
|
-- 16.02.2022
|
|
-- marius.mutu
|
|
-- sterge_mf - se sterge si din imob_nom_mf
|
|
|
|
-- 23.03.2023
|
|
-- + tip_valori_mf.id_operatie_prec pentru ca s-a modificat view-ul imob_vsituatie_lunara
|
|
|
|
-- 28.08.2024
|
|
-- schimba_mf - modificarea operatiilor/ratelor se executa si pentru id_tip_imob = 3 (imobilizari in curs)
|
|
-- am adaugat informatiile lipsa in ROAIMOB > modificare operatie
|
|
|
|
-- 19.02.2026
|
|
-- + verifica_nr_inventar - verifica numar inventar duplicat in lista de imobilizari curenta
|
|
-- schimba_mf + nrdoc, datadoc
|
|
-- am sters definitia schimba_mf cu parametri vechi
|
|
|
|
-- 19.02.2026
|
|
-- schimba_mf + nrdoc, datadoc DEFAULT NULL, pentru ca este apelata din ROACONT - definire rate venituri/cheltuieli in avans
|
|
|
|
-- 24.06.2026
|
|
-- inreg_schimbdns - am calculat durata ramasa de calcul = dns nou - uzura totala
|
|
|
|
procedure setlunacurenta(v_data IN DATE) is
|
|
begin
|
|
dDataCurenta := v_data;
|
|
nLunaCurenta := extract(month from v_data);
|
|
nAnCurent := extract(year from v_data);
|
|
nNrLuniCurent := nAnCurent * 12 + nLunaCurenta;
|
|
end;
|
|
|
|
function getNrLuniCurent return number is
|
|
begin
|
|
return nNrLuniCurent;
|
|
end;
|
|
|
|
function getDataCurenta return date is
|
|
begin
|
|
return dDataCurenta;
|
|
end;
|
|
---------------------------------------------------------------------------------------------
|
|
PROCEDURE adauga_mf(v_schema IN VARCHAR2,
|
|
v_data IN DATE,
|
|
v_nract IN NUMBER,
|
|
v_dataact IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatia IN VARCHAR2,
|
|
v_valoare IN NUMBER,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_nr_inventar IN NUMBER,
|
|
v_cod IN VARCHAR2,
|
|
v_dns IN NUMBER,
|
|
v_uzura IN NUMBER,
|
|
v_amort_prec IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_id_fact IN NUMBER,
|
|
v_tip_operatie IN NUMBER,
|
|
v_explicatia_operatie in varchar2,
|
|
v_bunCapital in number,
|
|
v_bazatva in number,
|
|
v_tva in number,
|
|
v_id_cotatva in number,
|
|
v_prorataTva in number) is
|
|
v_id_mf number := 0;
|
|
begin
|
|
adauga_mf(v_id_mf,
|
|
v_schema,
|
|
v_data,
|
|
v_nract,
|
|
v_dataact,
|
|
v_denumire,
|
|
v_explicatia,
|
|
v_valoare,
|
|
v_data_pif,
|
|
v_nr_pif,
|
|
v_nr_inventar,
|
|
v_cod,
|
|
v_dns,
|
|
v_uzura,
|
|
v_amort_prec,
|
|
v_id_gestiune,
|
|
v_id_responsabil,
|
|
v_id_sectie,
|
|
v_id_lucrare,
|
|
v_id_sucursala,
|
|
v_id_tip_amortizare,
|
|
v_procent,
|
|
v_coeficient,
|
|
v_id_tip_imobilizare,
|
|
v_cont,
|
|
v_acont,
|
|
v_id_util,
|
|
v_amort_max_deductibil,
|
|
v_id_fact,
|
|
v_tip_operatie,
|
|
v_explicatia_operatie,
|
|
v_bunCapital,
|
|
v_bazatva,
|
|
v_tva,
|
|
v_id_cotatva,
|
|
v_prorataTva);
|
|
end adauga_mf;
|
|
|
|
---------------------------------------------------------------------------------------------
|
|
PROCEDURE adauga_mf(v_id_mf IN OUT NUMBER,
|
|
v_schema IN VARCHAR2,
|
|
v_data IN DATE,
|
|
v_nract IN NUMBER,
|
|
v_dataact IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatia IN VARCHAR2,
|
|
v_valoare IN NUMBER,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_nr_inventar IN NUMBER,
|
|
v_cod IN VARCHAR2,
|
|
v_dns IN NUMBER,
|
|
v_uzura IN NUMBER,
|
|
v_amort_prec IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_id_fact IN NUMBER,
|
|
v_tip_operatie IN NUMBER,
|
|
v_explicatia_operatie in varchar2,
|
|
v_bunCapital in number,
|
|
v_bazatva in number,
|
|
v_tva in number,
|
|
v_id_cotatva in number,
|
|
v_prorataTva in number) is
|
|
v_valoare_reziduala number := 0;
|
|
begin
|
|
adauga_mf(v_id_mf,
|
|
v_schema,
|
|
v_data,
|
|
v_nract,
|
|
v_dataact,
|
|
v_denumire,
|
|
v_explicatia,
|
|
v_valoare,
|
|
v_valoare_reziduala,
|
|
v_data_pif,
|
|
v_nr_pif,
|
|
v_nr_inventar,
|
|
v_cod,
|
|
v_dns,
|
|
v_uzura,
|
|
v_amort_prec,
|
|
v_id_gestiune,
|
|
v_id_responsabil,
|
|
v_id_sectie,
|
|
v_id_lucrare,
|
|
v_id_sucursala,
|
|
v_id_tip_amortizare,
|
|
v_procent,
|
|
v_coeficient,
|
|
v_id_tip_imobilizare,
|
|
v_cont,
|
|
v_acont,
|
|
v_id_util,
|
|
v_amort_max_deductibil,
|
|
v_id_fact,
|
|
v_tip_operatie,
|
|
v_explicatia_operatie,
|
|
v_bunCapital,
|
|
v_bazatva,
|
|
v_tva,
|
|
v_id_cotatva,
|
|
v_prorataTva);
|
|
end adauga_mf;
|
|
|
|
PROCEDURE adauga_mf(v_id_mf IN OUT NUMBER,
|
|
v_schema IN VARCHAR2,
|
|
v_data IN DATE,
|
|
v_nract IN NUMBER,
|
|
v_dataact IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatia IN VARCHAR2,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_reziduala IN NUMBER,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_nr_inventar IN NUMBER,
|
|
v_cod IN VARCHAR2,
|
|
v_dns IN NUMBER,
|
|
v_uzura IN NUMBER,
|
|
v_amort_prec IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_id_fact IN NUMBER,
|
|
v_tip_operatie IN NUMBER,
|
|
v_explicatia_operatie in varchar2,
|
|
v_bunCapital in number,
|
|
v_bazatva in number,
|
|
v_tva in number,
|
|
v_id_cotatva in number,
|
|
v_prorataTva in number) IS
|
|
|
|
v_valoare_ramasa number := 0;
|
|
v_data_operatie date;
|
|
v_dns_ramas number := 0;
|
|
v_id_tip_operatie number := 0;
|
|
v_scd varchar2(4) := '';
|
|
v_id_operatie_mfc number := 0;
|
|
v_id_operatie_mff number := 0;
|
|
v_data_calcul date;
|
|
v_id_tip_iesire imob_tipuri_iesire.id%type;
|
|
BEGIN
|
|
--SAVEPOINT A;
|
|
INSERT /*+APPEND*/
|
|
INTO IMOB_NOM_MF
|
|
(DENUMIRE,
|
|
EXPLICATIA,
|
|
DATA_ACHIZITIE,
|
|
DATA_PIF,
|
|
ID_TIP_AMORTIZARE,
|
|
ID_TIP_IMOBILIZARE,
|
|
ID_UTIL,
|
|
NRACT,
|
|
NR_PIF,
|
|
ID_FACT)
|
|
VALUES
|
|
(v_denumire,
|
|
v_explicatia,
|
|
v_dataact,
|
|
v_data_pif,
|
|
v_id_tip_amortizare,
|
|
v_id_tip_imobilizare,
|
|
v_id_util,
|
|
v_nract,
|
|
v_nr_pif,
|
|
v_id_fact)
|
|
RETURNING ID_MF INTO v_id_mf;
|
|
|
|
-- IF v_id_mf > 0 THEN
|
|
-- BEGIN
|
|
v_scd := v_cont;
|
|
|
|
v_data_operatie := v_data;
|
|
case v_tip_operatie
|
|
when 1 then
|
|
-- Introducere
|
|
v_id_tip_operatie := 1;
|
|
when 2 then
|
|
-- Preluare
|
|
v_id_tip_operatie := 2;
|
|
when 3 then
|
|
-- Transformare imobilizare in curs in mijloc fix
|
|
v_id_tip_operatie := 3;
|
|
end case;
|
|
|
|
v_valoare_ramasa := v_valoare - v_amort_prec;
|
|
v_dns_ramas := v_dns - v_uzura;
|
|
|
|
pack_imob.add_in_lista_mf(v_schema,
|
|
v_id_mf,
|
|
v_dns,
|
|
v_cod,
|
|
v_scd,
|
|
v_acont,
|
|
v_id_lucrare,
|
|
v_id_gestiune,
|
|
v_id_sectie,
|
|
v_id_responsabil,
|
|
v_id_sucursala,
|
|
v_nr_inventar,
|
|
v_id_util,
|
|
v_data_operatie,
|
|
v_dns_ramas,
|
|
v_amort_max_deductibil);
|
|
|
|
-- amortizare contabila
|
|
v_id_operatie_mfc := pack_imob.add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas,
|
|
v_valoare_reziduala,
|
|
v_data_operatie,
|
|
v_explicatia_operatie,
|
|
v_id_util,
|
|
0,
|
|
v_data,
|
|
v_nract,
|
|
v_id_tip_iesire);
|
|
-- amortizare fiscala
|
|
v_id_operatie_mff := pack_imob.add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas,
|
|
v_valoare_reziduala,
|
|
v_data_operatie,
|
|
v_explicatia_operatie,
|
|
v_id_util,
|
|
1,
|
|
v_data,
|
|
v_nract,
|
|
v_id_tip_iesire);
|
|
IF v_id_tip_imobilizare <> 3 THEN
|
|
|
|
IF (extract(year from v_data_pif) * 12 +
|
|
extract(month from v_data_pif) =
|
|
extract(year from v_data_operatie) * 12 +
|
|
extract(month from v_data_operatie)) AND v_uzura = 0 THEN
|
|
v_data_calcul := add_months(v_data_operatie, 1);
|
|
ELSE
|
|
v_data_calcul := v_data_operatie;
|
|
END IF;
|
|
-- amortizare contabila
|
|
pack_imob.adauga_rata(v_schema,
|
|
v_id_operatie_mfc,
|
|
v_id_tip_operatie,
|
|
v_id_mf,
|
|
v_dns_ramas,
|
|
v_data_calcul,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_uzura,
|
|
0);
|
|
-- amortizare fiscala
|
|
pack_imob.adauga_rata(v_schema,
|
|
v_id_operatie_mff,
|
|
v_id_tip_operatie,
|
|
v_id_mf,
|
|
v_dns_ramas,
|
|
v_data_calcul,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_uzura,
|
|
1);
|
|
END IF;
|
|
if v_bunCapital = 1 then
|
|
pack_imob.adauga_buncapital(v_id_mf,
|
|
v_nract,
|
|
v_dataact,
|
|
v_bazatva,
|
|
v_tva,
|
|
v_id_cotatva,
|
|
0,
|
|
v_tip_operatie,
|
|
0,
|
|
v_prorataTva);
|
|
end if;
|
|
-- EXCEPTION
|
|
-- WHEN OTHERS THEN
|
|
-- ROLLBACK TO SAVEPOINT A;
|
|
-- RAISE;
|
|
--RAISE_APPLICATION_ERROR(-20000, SQLERRM);
|
|
-- END;
|
|
-- ELSE
|
|
-- ROLLBACK TO SAVEPOINT A;
|
|
-- END IF;
|
|
|
|
END adauga_mf;
|
|
---------------------------------------------------------------------------------------------
|
|
PROCEDURE adauga_rata(v_schema IN VARCHAR2,
|
|
v_id_operatie_mf IN NUMBER,
|
|
v_id_tip_operatie IN NUMBER,
|
|
v_id_mf IN NUMBER,
|
|
v_dns_ramas IN NUMBER,
|
|
v_data_calcul IN DATE,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_uzura_prec in number,
|
|
v_fiscala in number) IS
|
|
v_an number;
|
|
v_luna number;
|
|
v_data_exp date;
|
|
v_an_exp number;
|
|
v_luna_exp number;
|
|
v_data_prec date;
|
|
v_an_prec number;
|
|
v_luna_prec number;
|
|
v_rata number;
|
|
v_cota_luna number;
|
|
v_cota_an number;
|
|
v_rata_ultima number;
|
|
v_amort_prec number;
|
|
nPrecizie number := 0;
|
|
v_table varchar2(30) := 'IMOB_CALCUL_RATE';
|
|
v_valoare_reziduala number;
|
|
v_valoare_amortizabila number;
|
|
|
|
BEGIN
|
|
if v_dns_ramas <> 0 then
|
|
v_data_exp := add_months(v_data_calcul, v_dns_ramas - 1);
|
|
else
|
|
v_data_exp := v_data_calcul;
|
|
end if;
|
|
v_an := extract(year from v_data_calcul);
|
|
v_luna := extract(month from v_data_calcul);
|
|
v_an_exp := extract(year from v_data_exp);
|
|
v_luna_exp := extract(month from v_data_exp);
|
|
pack_contafin.SET_DATA_RON(v_schema);
|
|
if v_luna + v_an * 12 >=
|
|
pack_contafin.nAnRon * 12 + pack_contafin.nLunaRon then
|
|
nPrecizie := 2;
|
|
end if;
|
|
|
|
IF v_dns_ramas = 0 OR v_id_tip_operatie = 4 OR v_id_tip_operatie = 10 THEN
|
|
-- iesire din gestiune sau conservare
|
|
v_cota_luna := 0;
|
|
v_cota_an := 0;
|
|
ELSE
|
|
v_cota_luna := ROUND(100 / v_dns_ramas, 2);
|
|
v_cota_an := ROUND((1 / v_dns_ramas) * 100 * 12, 2);
|
|
END IF;
|
|
IF V_FISCALA = 0 THEN
|
|
select valoare_reziduala
|
|
into v_valoare_reziduala
|
|
from imob_operatii_mf
|
|
where id_operatie_mf = v_id_operatie_mf;
|
|
ELSE
|
|
select valoare_reziduala
|
|
into v_valoare_reziduala
|
|
from imobf_operatii_mf
|
|
where id_operatie_mf = v_id_operatie_mf;
|
|
END IF;
|
|
|
|
v_valoare_amortizabila := v_valoare_ramasa - v_valoare_reziduala;
|
|
v_rata := ROUND(v_valoare_amortizabila * v_cota_an / 12 / 100,
|
|
nPrecizie);
|
|
v_data_prec := add_months(v_data_calcul, -1);
|
|
v_an_prec := extract(year from v_data_prec);
|
|
v_luna_prec := extract(month from v_data_prec);
|
|
|
|
IF v_dns_ramas = 0 OR v_id_tip_operatie = 4 OR v_id_tip_operatie = 10 THEN
|
|
v_rata_ultima := 0;
|
|
else
|
|
v_rata_ultima := v_valoare_amortizabila -
|
|
v_rata *
|
|
(12 * v_an_exp + v_luna_exp - (12 * v_an + v_luna));
|
|
END IF;
|
|
|
|
IF V_FISCALA = 1 THEN
|
|
v_table := 'IMOBF_CALCUL_RATE';
|
|
end if;
|
|
SAVEPOINT A;
|
|
EXECUTE IMMEDIATE 'UPDATE ' || v_schema || '.' || v_table ||
|
|
' SET AN_EXP=:1,LUNA_EXP=:2 WHERE ID_MF=:3 AND' ||
|
|
' AN_EXP*12+LUNA_EXP>=:4 AND STERS=0'
|
|
USING v_an_prec, v_luna_prec, v_id_mf, v_an * 12 + v_luna;
|
|
|
|
IF SQL%ROWCOUNT > 1 THEN
|
|
ROLLBACK;
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Pe acest mijloc fix s-au facut mai multe operatii dupa data specificata!');
|
|
END IF;
|
|
v_amort_prec := v_valoare - v_valoare_ramasa;
|
|
|
|
EXECUTE IMMEDIATE 'INSERT /*+APPEND*/ INTO ' || v_schema || '.' ||
|
|
v_table ||
|
|
' (ID_OPERATIE_MF,ID_MF,AN,LUNA,AN_EXP,LUNA_EXP,RATA,COTA_LUNA,COTA_AN,ULTIMA_RATA,DATA_ULTIMA_RATA,UZURA_PREC,AMORTIZARE_PREC) ' ||
|
|
'VALUES (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13)'
|
|
USING v_id_operatie_mf, v_id_mf, v_an, v_luna, v_an_exp, v_luna_exp, v_rata, v_cota_luna, v_cota_an, v_rata_ultima, v_data_exp, v_uzura_prec, v_amort_prec;
|
|
END adauga_rata;
|
|
---------------------------------------------------------------------------------------------
|
|
/* FUNCTION calculeaza_rata_amort(v_amort_prec in number,
|
|
v_an in number,
|
|
v_luna in number,
|
|
v_rata in number) return number is
|
|
v_luni_c number;
|
|
v_luni_dc number;
|
|
v_suma number;
|
|
BEGIN
|
|
v_luni_c := pack_sesiune.getluna() + pack_sesiune.getan() * 12;
|
|
v_luni_dc := v_luna + v_an * 12;
|
|
v_suma := v_rata * (v_luni_c - v_luni_dc);
|
|
return(v_amort_prec + v_suma);
|
|
END calculeaza_rata_amort;
|
|
---------------------------------------------------------------------------------------------
|
|
FUNCTION calculeaza_uzura(v_dns_luni in number,
|
|
v_dns_ramas in number,
|
|
v_luna_calcul in number,
|
|
v_an_calcul in number) return number is
|
|
v_luni_c number;
|
|
v_luni_dc number;
|
|
v_uzura number;
|
|
BEGIN
|
|
v_luni_c := pack_sesiune.getluna() + pack_sesiune.getan() * 12;
|
|
v_luni_dc := v_luna_calcul + v_an_calcul * 12;
|
|
v_uzura := v_dns_luni - v_dns_ramas + (v_luni_c - v_luni_dc);
|
|
-- raise_application_error(-20000,v_luna_calcul||' '||v_an_calcul);
|
|
return(v_uzura);
|
|
END calculeaza_uzura;
|
|
---------------------------------------------------------------------------------------------
|
|
FUNCTION calculeaza_uzura_prec(v_dns_vechi in number,
|
|
v_dns_ramas in number,
|
|
v_luna_calcul in number,
|
|
v_an_calcul in number,
|
|
v_data_operatie_noua in date) return number is
|
|
v_luni_c number;
|
|
v_luni_dc number;
|
|
v_uzura number;
|
|
BEGIN
|
|
v_luni_c := extract(month from v_data_operatie_noua) +
|
|
extract(year from v_data_operatie_noua) * 12;
|
|
v_luni_dc := v_luna_calcul + v_an_calcul * 12;
|
|
v_uzura := v_dns_vechi - v_dns_ramas + (v_luni_c - v_luni_dc);
|
|
return(v_uzura);
|
|
END calculeaza_uzura_prec;*/
|
|
---------------------------------------------------------------------------------------------
|
|
FUNCTION getLuniOperatie return number is
|
|
BEGIN
|
|
return(extract(year from imob_data_operatie) * 12 +
|
|
(extract(month from imob_data_operatie)));
|
|
END getLuniOperatie;
|
|
---------------------------------------------------------------------------------------------
|
|
PROCEDURE inreg_majorare(v_schema in varchar2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf in number,
|
|
v_valoare in number,
|
|
v_datareeval in date,
|
|
v_explicatia in varchar2,
|
|
v_id_util in number,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_bazaTva in number,
|
|
v_idcotaTva in number,
|
|
v_Tva in number,
|
|
v_prorataTva in number) is
|
|
|
|
v_verificareluni number;
|
|
v_valoare_prec number;
|
|
v_valoare_finala number;
|
|
v_valoare_ramasa number;
|
|
v_dns_ramas number;
|
|
v_dns number;
|
|
v_amort_prec number;
|
|
-- v_amort_prec_rata number;
|
|
v_rata number;
|
|
v_id_tip_operatie number;
|
|
-- v_data_operatie date;
|
|
v_data_calcul date;
|
|
v_id_operatie_mf number;
|
|
v_uzura number;
|
|
v_uzura_rata number;
|
|
v_data date;
|
|
v_cond varchar2(250);
|
|
i number(1);
|
|
crsMf pack_types.tip_cursor;
|
|
item tip_valori_mf;
|
|
v_valoare_reziduala number;
|
|
v_id_tip_iesire imob_tipuri_iesire.id%type;
|
|
|
|
BEGIN
|
|
v_verificareluni := months_between(v_datareeval,
|
|
pack_sesiune.getUltimaZi());
|
|
|
|
IF v_verificareluni > -1 and v_verificareluni <= 0 THEN
|
|
-- operatia trebuie sa fie din luna curenta
|
|
|
|
v_data := to_date(extract(month from v_datareeval) || '/' ||
|
|
extract(year from v_datareeval),
|
|
'MM/YYYY');
|
|
v_cond := 'n.id_mf = ' || to_char(v_id_mf);
|
|
|
|
i := 0;
|
|
for i in 0 .. v_fiscala loop
|
|
-- pinfo(TO_CHAR(V_DATA) || ' ' || V_COND || ' ' || TO_CHAR(I));
|
|
|
|
/* crsMf := pack_imob.valori_calcul(v_schema,
|
|
v_id_sucursala,
|
|
v_data,
|
|
v_data,
|
|
v_cond,
|
|
i);*/
|
|
|
|
crsMF := pack_imob.valori_calcul_view(v_id_mf, v_data, i);
|
|
|
|
fetch crsMf
|
|
into item;
|
|
|
|
v_valoare_prec := item.valoare;
|
|
v_dns_ramas := item.dns_ramas; -- durata ramasa la operatia anterioara
|
|
v_dns := item.dns_luni;
|
|
v_uzura_rata := item.uzura_rata; -- uzura in luni de la operatia anterioara pana la luna curenta inclusiv
|
|
v_uzura := item.uzura;
|
|
v_amort_prec := item.amort_prec;
|
|
v_rata := item.rata;
|
|
v_valoare_reziduala := item.valoare_reziduala;
|
|
|
|
close crsMf;
|
|
|
|
-- majorare
|
|
v_id_tip_operatie := 6;
|
|
v_valoare_finala := v_valoare_prec + v_valoare;
|
|
v_valoare_ramasa := v_valoare_finala - v_amort_prec - v_rata;
|
|
v_dns_ramas := v_dns_ramas - v_uzura_rata; -- durata ramasa la operatia anterioara - uzura de la operatia anterioara 12.11.2019 (UTMIDIA)
|
|
|
|
v_id_operatie_mf := pack_imob.add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare_finala,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas,
|
|
v_valoare_reziduala,
|
|
v_datareeval,
|
|
v_explicatia,
|
|
v_id_util,
|
|
i,
|
|
v_datadoc,
|
|
v_nrdoc,
|
|
v_id_tip_iesire);
|
|
|
|
v_data_calcul := add_months(v_data, 1);
|
|
pack_imob.adauga_rata(v_schema,
|
|
v_id_operatie_mf,
|
|
v_id_tip_operatie,
|
|
v_id_mf,
|
|
v_dns_ramas,
|
|
v_data_calcul,
|
|
v_valoare_finala,
|
|
v_valoare_ramasa,
|
|
v_uzura,
|
|
i);
|
|
|
|
end loop;
|
|
if v_buncapital = 1 then
|
|
pack_imob.adauga_buncapital(v_id_mf,
|
|
v_nrdoc,
|
|
v_datadoc,
|
|
v_bazaTva,
|
|
v_tva,
|
|
v_idcotaTva,
|
|
0,
|
|
v_id_tip_operatie,
|
|
0,
|
|
v_prorataTva);
|
|
end if;
|
|
ELSE
|
|
RAISE_APPLICATION_ERROR(-20001,
|
|
'Data majorarii trebuie sa fie din luna curenta!');
|
|
END IF;
|
|
END inreg_majorare;
|
|
---------------------------------------------------------------------------------------------
|
|
PROCEDURE inreg_reevaluare(v_schema in varchar2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf in number,
|
|
v_valoare in number,
|
|
v_amortizare in number,
|
|
v_datareeval in date,
|
|
v_explicatia in varchar2,
|
|
v_id_util in number,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_valreev in number) is
|
|
v_verificareluni number;
|
|
v_valoare_finala number;
|
|
v_valoare_ramasa number;
|
|
v_dns_ramas number;
|
|
v_dns number;
|
|
v_id_tip_operatie number;
|
|
v_data_calcul date;
|
|
v_id_operatie_mf number;
|
|
v_uzura number;
|
|
i number;
|
|
--v_uzura_rata number;
|
|
v_data date;
|
|
v_cond varchar2(250);
|
|
crsMf pack_types.tip_cursor;
|
|
item tip_valori_mf;
|
|
v_valoare_reziduala number;
|
|
v_id_tip_iesire imob_tipuri_iesire.id%type;
|
|
|
|
BEGIN
|
|
v_verificareluni := months_between(v_datareeval,
|
|
pack_sesiune.getUltimaZi());
|
|
|
|
IF v_verificareluni > -1 and v_verificareluni <= 0 THEN
|
|
-- operatia trebuie sa fie din luna curenta
|
|
|
|
v_data := to_date(extract(month from v_datareeval) || '/' ||
|
|
extract(year from v_datareeval),
|
|
'MM/YYYY');
|
|
v_cond := 'n.id_mf = ' || to_char(v_id_mf);
|
|
i := 0;
|
|
for i in 0 .. v_fiscala loop
|
|
/* crsMf := pack_imob.valori_calcul(v_schema,
|
|
v_id_sucursala,
|
|
v_data,
|
|
v_data,
|
|
v_cond,
|
|
i);*/
|
|
crsMF := pack_imob.valori_calcul_view(v_id_mf, v_data, i);
|
|
|
|
fetch crsMf
|
|
into item;
|
|
|
|
--v_dns_ramas := item.dns_ramas;
|
|
v_dns := item.dns_luni;
|
|
v_uzura := item.uzura;
|
|
v_valoare_reziduala := item.valoare_reziduala;
|
|
--v_uzura_rata := item.uzura_rata;
|
|
|
|
close crsMf;
|
|
|
|
-- reevaluare
|
|
v_id_tip_operatie := 7;
|
|
v_valoare_finala := v_valoare;
|
|
v_valoare_ramasa := v_valoare - v_amortizare;
|
|
--v_dns_ramas := v_dns_ramas - v_uzura_rata;
|
|
v_dns_ramas := v_dns - v_uzura;
|
|
|
|
v_id_operatie_mf := pack_imob.add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare_finala,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas,
|
|
v_valoare_reziduala,
|
|
v_datareeval,
|
|
v_explicatia,
|
|
v_id_util,
|
|
i,
|
|
v_datadoc,
|
|
v_nrdoc,
|
|
v_id_tip_iesire);
|
|
|
|
v_data_calcul := add_months(v_data, 1);
|
|
|
|
pack_imob.adauga_rata(v_schema,
|
|
v_id_operatie_mf,
|
|
v_id_tip_operatie,
|
|
v_id_mf,
|
|
v_dns_ramas,
|
|
v_data_calcul,
|
|
v_valoare_finala,
|
|
v_valoare_ramasa,
|
|
v_uzura,
|
|
i);
|
|
end loop;
|
|
if v_buncapital = 1 then
|
|
update imob_bunuricapital
|
|
set valreev = v_valreev
|
|
where id_mf = v_id_mf
|
|
and id_tip_operatie in (1, 2);
|
|
end if;
|
|
ELSE
|
|
RAISE_APPLICATION_ERROR(-20001,
|
|
'Data reevaluarii trebuie sa fie din luna curenta!');
|
|
END IF;
|
|
END inreg_reevaluare;
|
|
|
|
---------------------------------------------------------------------
|
|
-- schimbare DNS si reevaluarea valorii de inventar si amortizarii totale
|
|
---------------------------------------------------------------------
|
|
PROCEDURE inreg_schimbdns_reevaluare(v_schema in varchar2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf in number,
|
|
v_cod IN VARCHAR2, -- codul nou
|
|
v_dns IN NUMBER, -- dns nou
|
|
v_valoare in number, -- valoarea noua de inventar
|
|
v_amortizare in number, -- valoarea noua total amortizata
|
|
v_uzura IN NUMBER, -- uzura noua totala
|
|
v_valoare_reziduala IN NUMBER, -- valoarea noua reziduala
|
|
v_datareeval in date,
|
|
v_explicatia in varchar2,
|
|
v_id_util in number,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_valreev in number) is
|
|
v_verificareluni number;
|
|
v_codvechi imob_lista_mf.cod_mf%type;
|
|
v_dns_vechi imob_lista_mf.dns_luni%type;
|
|
v_valoare_ramasa number;
|
|
v_dns_ramas number;
|
|
v_id_tip_operatie number := 15;
|
|
v_data_calcul date;
|
|
v_id_operatie_mf number;
|
|
i number;
|
|
v_data date;
|
|
-- v_cond varchar2(250);
|
|
crsMf pack_types.tip_cursor;
|
|
item tip_valori_mf;
|
|
v_id_tip_iesire imob_tipuri_iesire.id%type;
|
|
|
|
BEGIN
|
|
v_verificareluni := months_between(v_datareeval,
|
|
pack_sesiune.getUltimaZi());
|
|
|
|
IF v_verificareluni = 0 THEN
|
|
-- operatia trebuie sa fie din luna curenta
|
|
|
|
v_data := to_date(extract(month from v_datareeval) || '/' ||
|
|
extract(year from v_datareeval),
|
|
'MM/YYYY');
|
|
-- v_cond := 'n.id_mf = ' || to_char(v_id_mf);
|
|
i := 0;
|
|
for i in 0 .. v_fiscala loop
|
|
/* crsMf := pack_imob.valori_calcul(v_schema,
|
|
v_id_sucursala,
|
|
v_data,
|
|
v_data,
|
|
v_cond,
|
|
i);*/
|
|
crsMF := pack_imob.valori_calcul_view(v_id_mf, v_data, i);
|
|
|
|
fetch crsMf
|
|
into item;
|
|
|
|
v_dns_vechi := item.dns_luni;
|
|
v_codvechi := item.cod_mf;
|
|
|
|
close crsMf;
|
|
|
|
-- valoarea ramasa = valoarea noua de inventar - amortizarea noua totala
|
|
v_valoare_ramasa := v_valoare - v_amortizare;
|
|
-- durata ramasa = DNS - uzura noua totala
|
|
v_dns_ramas := v_dns - v_uzura;
|
|
|
|
-- schimbare DNS
|
|
IF (v_codvechi <> v_cod OR v_dns_vechi <> v_dns) and i = 0 THEN
|
|
--sa intre doar o data
|
|
pack_imob.add_in_lista_mf(v_schema,
|
|
v_id_mf,
|
|
v_dns,
|
|
v_cod,
|
|
item.cont,
|
|
item.acont,
|
|
item.id_lucrare,
|
|
item.id_gestiune,
|
|
item.id_sectie,
|
|
item.id_responsabil,
|
|
item.id_sucursala,
|
|
item.nr_inventar,
|
|
v_id_util,
|
|
v_datareeval,
|
|
v_dns_ramas,
|
|
item.amort_max_deductibil);
|
|
|
|
END IF;
|
|
|
|
v_id_operatie_mf := pack_imob.add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas,
|
|
v_valoare_reziduala,
|
|
v_datareeval,
|
|
v_explicatia,
|
|
v_id_util,
|
|
i,
|
|
v_datadoc,
|
|
v_nrdoc,
|
|
v_id_tip_iesire);
|
|
|
|
v_data_calcul := add_months(v_data, 1);
|
|
|
|
pack_imob.adauga_rata(v_schema,
|
|
v_id_operatie_mf,
|
|
v_id_tip_operatie,
|
|
v_id_mf,
|
|
v_dns_ramas,
|
|
v_data_calcul,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_uzura,
|
|
i);
|
|
end loop;
|
|
if v_buncapital = 1 then
|
|
update imob_bunuricapital
|
|
set valreev = v_valreev
|
|
where id_mf = v_id_mf
|
|
and id_tip_operatie in (1, 2);
|
|
end if;
|
|
ELSE
|
|
RAISE_APPLICATION_ERROR(-20001,
|
|
'Data reevaluarii trebuie sa fie din luna curenta!');
|
|
END IF;
|
|
END inreg_schimbdns_reevaluare;
|
|
|
|
---------------------------------------------------------------------------------------------
|
|
PROCEDURE inreg_conservare(v_schema IN VARCHAR2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf IN NUMBER,
|
|
v_tip IN NUMBER,
|
|
v_cauza IN VARCHAR2,
|
|
v_dataconservare IN DATE,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_bazatva in number,
|
|
v_idcotaTva in number,
|
|
v_tva in number,
|
|
v_prorataTva in number) IS
|
|
v_verificareluni number;
|
|
v_valoare number;
|
|
v_valoare_ramasa number;
|
|
v_dns_ramas number;
|
|
v_dns number;
|
|
v_id_tip_operatie number;
|
|
v_data_calcul date;
|
|
v_data date;
|
|
v_amort_prec number;
|
|
v_id_operatie_mf number;
|
|
v_uzura number;
|
|
--v_uzura_rata number;
|
|
v_uzura_prec number;
|
|
v_rata number;
|
|
v_mesaj varchar2(50);
|
|
v_cond varchar2(250);
|
|
i number;
|
|
crsMf pack_types.tip_cursor;
|
|
item tip_valori_mf;
|
|
v_valoare_reziduala number;
|
|
v_id_tip_iesire imob_tipuri_iesire.id%type;
|
|
|
|
BEGIN
|
|
v_verificareluni := months_between(v_dataconservare,
|
|
pack_sesiune.getUltimaZi());
|
|
|
|
IF v_verificareluni > -1 and v_verificareluni <= 0 THEN
|
|
-- operatia trebuie sa fie din luna curenta
|
|
|
|
v_data := to_date(extract(month from v_dataconservare) || '/' ||
|
|
extract(year from v_dataconservare),
|
|
'MM/YYYY');
|
|
v_cond := 'n.id_mf = ' || to_char(v_id_mf);
|
|
i := 0;
|
|
for i in 0 .. v_fiscala loop
|
|
/* crsMf := pack_imob.valori_calcul(v_schema,
|
|
v_id_sucursala,
|
|
v_data,
|
|
v_data,
|
|
v_cond,
|
|
i);*/
|
|
crsMF := pack_imob.valori_calcul_view(v_id_mf, v_data, i);
|
|
|
|
fetch crsMf
|
|
into item;
|
|
v_valoare := item.valoare;
|
|
--v_dns_ramas := item.dns_ramas;
|
|
v_dns := item.dns_luni;
|
|
--v_valoare_ramasa := item.valoare_ramasa_amort;
|
|
v_amort_prec := item.amort_prec;
|
|
v_rata := item.rata;
|
|
v_uzura := item.uzura;
|
|
--v_uzura_rata := item.uzura_rata;
|
|
v_uzura_prec := item.uzura_prec;
|
|
v_valoare_reziduala := item.valoare_reziduala;
|
|
|
|
close crsMf;
|
|
|
|
IF v_tip = 1 THEN
|
|
-- intrare in conservare
|
|
v_id_tip_operatie := 10;
|
|
ELSE
|
|
-- iesire din conservare
|
|
v_id_tip_operatie := 11;
|
|
v_uzura := v_uzura_prec; --(nu stiu dc numar si lunile de conservare)
|
|
END IF;
|
|
|
|
v_valoare_ramasa := v_valoare - v_amort_prec - v_rata;
|
|
v_dns_ramas := v_dns - v_uzura;
|
|
|
|
v_id_operatie_mf := pack_imob.add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas,
|
|
v_valoare_reziduala,
|
|
v_dataconservare,
|
|
v_cauza,
|
|
v_id_util,
|
|
i,
|
|
v_datadoc,
|
|
v_nrdoc,
|
|
v_id_tip_iesire);
|
|
|
|
v_data_calcul := add_months(v_data, 1);
|
|
|
|
pack_imob.adauga_rata(v_schema,
|
|
v_id_operatie_mf,
|
|
v_id_tip_operatie,
|
|
v_id_mf,
|
|
v_dns_ramas,
|
|
v_data_calcul,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_uzura,
|
|
i);
|
|
end loop;
|
|
if v_buncapital = 1 then
|
|
if v_tip = 1 then
|
|
pack_imob.adauga_buncapital(v_id_mf,
|
|
v_nrdoc,
|
|
v_datadoc,
|
|
v_bazaTva,
|
|
0,
|
|
v_idcotaTva,
|
|
0,
|
|
v_id_tip_operatie,
|
|
v_tva,
|
|
v_prorataTva);
|
|
else
|
|
pack_imob.adauga_buncapital(v_id_mf,
|
|
v_nrdoc,
|
|
v_datadoc,
|
|
v_bazaTva,
|
|
0,
|
|
v_idcotaTva,
|
|
v_tva,
|
|
v_id_tip_operatie,
|
|
0,
|
|
v_prorataTva);
|
|
end if;
|
|
end if;
|
|
ELSE
|
|
IF v_tip = 1 THEN
|
|
v_mesaj := 'Data intrarii in conservare trebuie sa fie din luna curenta!';
|
|
ELSE
|
|
v_mesaj := 'Data iesirii din conservare trebuie sa fie din luna curenta!';
|
|
END IF;
|
|
RAISE_APPLICATION_ERROR(-20001, v_mesaj);
|
|
END IF;
|
|
END inreg_conservare;
|
|
---------------------------------------------------------------------------------------------
|
|
PROCEDURE inreg_schimbdns(v_schema IN VARCHAR2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf IN NUMBER,
|
|
v_codnou IN VARCHAR2,
|
|
v_dnsnou IN NUMBER,
|
|
v_dataschimbare IN DATE,
|
|
v_cauza IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number) IS
|
|
|
|
v_verificareluni number;
|
|
v_valoare number;
|
|
v_valoare_ramasa number;
|
|
--v_rata number;
|
|
v_uzura_calc number;
|
|
v_codvechi varchar2(30);
|
|
v_dns_ramas_nou number;
|
|
v_dns_vechi number;
|
|
v_id_tip_operatie number := 8;
|
|
v_uzura_prec number;
|
|
v_data_calcul date;
|
|
v_id_operatie_mf number;
|
|
i number;
|
|
--v_cauza varchar2(10);
|
|
v_data date;
|
|
v_cond varchar2(250);
|
|
crsMf pack_types.tip_cursor;
|
|
item tip_valori_mf;
|
|
v_valoare_reziduala number;
|
|
v_id_tip_iesire imob_tipuri_iesire.id%type;
|
|
|
|
BEGIN
|
|
|
|
v_verificareluni := months_between(v_dataschimbare,
|
|
pack_sesiune.getUltimaZi());
|
|
|
|
IF v_verificareluni > -1 and v_verificareluni <= 0 THEN
|
|
-- operatia trebuie sa fie din luna curenta
|
|
|
|
v_data := to_date(extract(month from v_dataschimbare) || '/' ||
|
|
extract(year from v_dataschimbare),
|
|
'MM/YYYY');
|
|
v_cond := 'n.id_mf = ' || to_char(v_id_mf);
|
|
i := 0;
|
|
for i in 0 .. v_fiscala loop
|
|
/* crsMf := pack_imob.valori_calcul(v_schema,
|
|
v_id_sucursala,
|
|
v_data,
|
|
v_data,
|
|
v_cond,
|
|
i);*/
|
|
crsMF := pack_imob.valori_calcul_view(v_id_mf, v_data, i);
|
|
|
|
fetch crsMf
|
|
into item;
|
|
v_valoare := item.valoare;
|
|
v_dns_vechi := item.dns_luni;
|
|
v_valoare_ramasa := item.valoare - item.amort_prec;
|
|
v_uzura_calc := item.uzura - 1;
|
|
v_codvechi := item.cod_mf;
|
|
v_valoare_reziduala := item.valoare_reziduala;
|
|
|
|
close crsMf;
|
|
|
|
-- 27.02.2013 : am pus case in loc de 1 - (v_uzura_calc / v_dns_vechi) pentru cazul
|
|
--in care aveam v_dns_vechi = 0
|
|
IF v_dns_vechi = 0 THEN
|
|
v_dns_ramas_nou := v_dnsnou;
|
|
ELSE
|
|
v_dns_ramas_nou := (v_dnsnou-nvl(v_uzura_calc,0));
|
|
END IF;
|
|
|
|
IF (v_codvechi <> v_codnou OR v_dns_vechi <> v_dnsnou) and i = 0 THEN
|
|
--sa intre doar o data
|
|
pack_imob.add_in_lista_mf(v_schema,
|
|
v_id_mf,
|
|
v_dnsnou,
|
|
v_codnou,
|
|
item.cont,
|
|
item.acont,
|
|
item.id_lucrare,
|
|
item.id_gestiune,
|
|
item.id_sectie,
|
|
item.id_responsabil,
|
|
item.id_sucursala,
|
|
item.nr_inventar,
|
|
v_id_util,
|
|
v_dataschimbare,
|
|
v_dns_ramas_nou,
|
|
item.amort_max_deductibil);
|
|
|
|
END IF;
|
|
|
|
v_id_operatie_mf := pack_imob.add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas_nou,
|
|
v_valoare_reziduala,
|
|
v_dataschimbare,
|
|
v_cauza,
|
|
v_id_util,
|
|
i,
|
|
v_datadoc,
|
|
v_nrdoc,
|
|
v_id_tip_iesire);
|
|
|
|
v_data_calcul := v_dataschimbare;
|
|
v_uzura_prec := v_dnsnou - v_dns_ramas_nou;
|
|
|
|
pack_imob.adauga_rata(v_schema,
|
|
v_id_operatie_mf,
|
|
v_id_tip_operatie,
|
|
v_id_mf,
|
|
v_dns_ramas_nou,
|
|
v_data_calcul,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_uzura_prec,
|
|
i);
|
|
end loop;
|
|
ELSE
|
|
RAISE_APPLICATION_ERROR(-20001,
|
|
'Data schimbarii DNS trebuie sa fie din luna curenta!');
|
|
END IF;
|
|
END inreg_schimbdns;
|
|
---------------------------------------------------------------------------------------------
|
|
PROCEDURE inreg_gest(v_schema IN VARCHAR2,
|
|
v_id_sucursala in imob_lista_mf.id_sucursala%type,
|
|
v_id_mf IN NUMBER,
|
|
v_tip IN NUMBER,
|
|
v_cauza IN VARCHAR2,
|
|
v_dataschimbare IN DATE,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_buncapital in number,
|
|
v_bazatva in number,
|
|
v_idcotaTva in number,
|
|
v_tva in number,
|
|
v_prorataTva in number,
|
|
v_id_tip_iesire in imob_tipuri_iesire.id%type default null) IS
|
|
|
|
v_verificareluni number;
|
|
v_valoare number;
|
|
v_valoare_ramasa number;
|
|
v_dns_ramas number;
|
|
v_dns number;
|
|
v_id_tip_operatie number;
|
|
--v_amortizare number;
|
|
v_id_operatie_mf number;
|
|
v_mesaj varchar2(100);
|
|
v_uzura_prec number;
|
|
--v_uzura_rata number;
|
|
v_uzura number;
|
|
v_amort_prec number;
|
|
i number;
|
|
--v_rata number;
|
|
v_data date;
|
|
v_cond varchar2(200);
|
|
crsMF PACK_TYPES.tip_cursor;
|
|
item tip_valori_mf;
|
|
v_valoare_reziduala number;
|
|
|
|
BEGIN
|
|
v_verificareluni := months_between(v_dataschimbare,
|
|
pack_sesiune.getUltimaZi());
|
|
|
|
IF v_verificareluni > -1 and v_verificareluni <= 0 THEN
|
|
-- operatia trebuie sa fie din luna curenta
|
|
|
|
v_data := to_date(extract(month from v_dataschimbare) || '/' ||
|
|
extract(year from v_dataschimbare),
|
|
'MM/YYYY');
|
|
v_cond := 'n.id_mf = ' || to_char(v_id_mf);
|
|
i := 0;
|
|
for i in 0 .. v_fiscala loop
|
|
/* crsMf := pack_imob.valori_calcul(v_schema,
|
|
v_id_sucursala,
|
|
v_data,
|
|
v_data,
|
|
v_cond,
|
|
i);*/
|
|
crsMF := pack_imob.valori_calcul_view(v_id_mf, v_data, i);
|
|
|
|
fetch crsMf
|
|
into item;
|
|
|
|
v_valoare := item.valoare;
|
|
v_dns := item.dns_luni;
|
|
v_amort_prec := item.amort_prec;
|
|
--v_rata := item.rata;
|
|
v_uzura := item.uzura - 1;
|
|
v_uzura_prec := item.uzura_prec;
|
|
v_valoare_reziduala := item.valoare_reziduala;
|
|
--dbms_output.put_line('valoare ' || v_valoare);
|
|
close crsMf;
|
|
|
|
IF v_tip = 1 THEN
|
|
-- iesire din gestiune
|
|
v_id_tip_operatie := 4;
|
|
ELSE
|
|
-- intrare in gestiune
|
|
v_id_tip_operatie := 5;
|
|
v_uzura := v_uzura_prec; --(nu stiu dc numar si lunile de iesire)
|
|
END IF;
|
|
|
|
v_valoare_ramasa := v_valoare - v_amort_prec;
|
|
v_dns_ramas := v_dns - v_uzura;
|
|
|
|
v_id_operatie_mf := pack_imob.add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas,
|
|
v_valoare_reziduala,
|
|
v_dataschimbare,
|
|
v_cauza,
|
|
v_id_util,
|
|
i,
|
|
v_datadoc,
|
|
v_nrdoc,
|
|
v_id_tip_iesire);
|
|
|
|
pack_imob.adauga_rata(v_schema,
|
|
v_id_operatie_mf,
|
|
v_id_tip_operatie,
|
|
v_id_mf,
|
|
v_dns_ramas,
|
|
v_data,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_uzura,
|
|
i);
|
|
end loop;
|
|
if v_buncapital = 1 then
|
|
if v_tip = 1 then
|
|
pack_imob.adauga_buncapital(v_id_mf,
|
|
v_nrdoc,
|
|
v_datadoc,
|
|
v_bazaTva,
|
|
0,
|
|
v_idcotaTva,
|
|
0,
|
|
v_id_tip_operatie,
|
|
v_tva,
|
|
v_prorataTva);
|
|
else
|
|
pack_imob.adauga_buncapital(v_id_mf,
|
|
v_nrdoc,
|
|
v_datadoc,
|
|
v_bazaTva,
|
|
0,
|
|
v_idcotaTva,
|
|
v_tva,
|
|
v_id_tip_operatie,
|
|
0,
|
|
v_prorataTva);
|
|
end if;
|
|
end if;
|
|
ELSE
|
|
IF v_tip = 1 THEN
|
|
v_mesaj := 'Data iesirii din gestiune trebuie sa fie din luna curenta!';
|
|
ELSE
|
|
v_mesaj := 'Data intrarii in gestiune trebuie sa fie din luna curenta!';
|
|
END IF;
|
|
RAISE_APPLICATION_ERROR(-20001, v_mesaj);
|
|
END IF;
|
|
END inreg_gest;
|
|
|
|
---------------------------------------------------------------------------------------------
|
|
-- SE ADAUGA OPERATIA TRANSFORMARE IN MIJLOC FIX PENTRU IMOBILIZARI IN CURS
|
|
---------------------------------------------------------------------------------------------
|
|
PROCEDURE inreg_transformare_in_mf(v_schema IN VARCHAR2,
|
|
v_id_mf IN NUMBER,
|
|
v_id_mf_nou IN NUMBER,
|
|
v_datamodificare IN DATE,
|
|
v_nract IN NUMBER,
|
|
v_dataact IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatia IN VARCHAR2,
|
|
v_valoare IN NUMBER,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_nr_inventar IN NUMBER,
|
|
v_cod IN VARCHAR2,
|
|
v_dns IN NUMBER,
|
|
v_uzura IN NUMBER,
|
|
v_dns_ramas IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_valoare_retinuta IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_id_tip_operatie in number DEFAULT 3) IS
|
|
|
|
v_id_operatie_mf number := 0;
|
|
v_id_operatie_nou number := 0;
|
|
v_valoare_reziduala number := 0; -- valoare reziduala a unei imobilizari in curs = 0
|
|
v_id_tip_iesire imob_tipuri_iesire.id%type;
|
|
|
|
BEGIN
|
|
IF nvl(v_id_mf, 0) = 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu este completat id-ul imobilizarii in curs!');
|
|
END IF;
|
|
|
|
UPDATE IMOB_NOM_MF
|
|
SET DENUMIRE = v_denumire,
|
|
EXPLICATIA = v_explicatia,
|
|
DATA_ACHIZITIE = v_dataact,
|
|
DATA_PIF = v_data_pif,
|
|
ID_TIP_AMORTIZARE = v_id_tip_amortizare,
|
|
ID_TIP_IMOBILIZARE = v_id_tip_imobilizare,
|
|
ID_UTIL = v_id_util,
|
|
NRACT = v_nract,
|
|
NR_PIF = v_nr_pif
|
|
WHERE ID_MF = v_id_mf;
|
|
|
|
pack_imob.add_in_lista_mf(v_schema,
|
|
v_id_mf,
|
|
v_dns,
|
|
v_cod,
|
|
v_cont,
|
|
v_acont,
|
|
v_id_lucrare,
|
|
v_id_gestiune,
|
|
v_id_sectie,
|
|
v_id_responsabil,
|
|
v_id_sucursala,
|
|
v_nr_inventar,
|
|
v_id_util,
|
|
v_datamodificare,
|
|
v_dns_ramas,
|
|
v_amort_max_deductibil);
|
|
|
|
v_id_operatie_mf := pack_imob.add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas,
|
|
v_valoare_reziduala,
|
|
v_datamodificare,
|
|
v_explicatia,
|
|
v_id_util,
|
|
v_fiscala,
|
|
v_datadoc,
|
|
v_nrdoc,
|
|
v_id_tip_iesire);
|
|
|
|
pack_imob.adauga_rata(v_schema,
|
|
v_id_operatie_mf,
|
|
v_id_tip_operatie,
|
|
v_id_mf,
|
|
v_dns_ramas,
|
|
v_datamodificare,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_uzura,
|
|
v_fiscala);
|
|
|
|
-- inregistrez (id_mf_nou, id_operatie_nou, id_imobilizare_curs, id_operatie_curs, valoare)
|
|
select min(id_operatie_mf)
|
|
into v_id_operatie_nou
|
|
from imob_operatii_mf
|
|
where id_mf = v_id_mf_nou;
|
|
|
|
pack_imob.adauga_la_transformare(v_id_mf_nou,
|
|
v_id_operatie_nou,
|
|
v_id_mf,
|
|
v_id_operatie_mf,
|
|
v_valoare_retinuta);
|
|
|
|
END inreg_transformare_in_mf;
|
|
|
|
---------------------------------------------------------------------------------------------
|
|
-- MODIFICARE CU ISTORIC
|
|
-- schimba_mf: cand se modifica valori din nomenclator/lista/operatie/rata mobilizare (lista, operatie, rata)
|
|
-- din butonul frm_lista.modificare()
|
|
-- se sterg vechile operatii, rate si se adauga inregistrari noi
|
|
---------------------------------------------------------------------------------------------
|
|
---------------------------------------------------------------------------------------------
|
|
|
|
|
|
procedure schimba_mf(v_id_mf IN NUMBER,
|
|
v_nract IN NUMBER,
|
|
v_data_achizitie IN DATE,
|
|
v_denumire IN VARCHAR2,
|
|
v_explicatie_n IN VARCHAR2,
|
|
v_data_pif IN DATE,
|
|
v_nr_pif IN NUMBER,
|
|
v_procent IN NUMBER,
|
|
v_coeficient IN NUMBER,
|
|
v_id_tip_amortizare IN NUMBER,
|
|
v_id_tip_imobilizare IN NUMBER,
|
|
v_id_lista_mf IN NUMBER,
|
|
v_dns_luni IN NUMBER,
|
|
v_Cod_mf IN VARCHAR2,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_nr_inventar IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_lper_in in VARCHAR2,
|
|
v_lper_fin in VARCHAR2,
|
|
v_id_operatie_mf IN NUMBER,
|
|
v_id_tip_operatie in NUMBER,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_dns_ramas in NUMBER,
|
|
v_valoare_reziduala IN NUMBER,
|
|
v_data_operatie in DATE,
|
|
v_explicatie_o in VARCHAR2,
|
|
v_uzura_prec in NUMBER,
|
|
v_id_rata in NUMBER,
|
|
v_rper_in in VARCHAR2,
|
|
v_rper_fin in VARCHAR2,
|
|
v_rata in NUMBER,
|
|
v_cota_an in NUMBER,
|
|
v_cota_luna in NUMBER,
|
|
v_ultima_rata in NUMBER,
|
|
v_data_ultima_rata in DATE,
|
|
v_fiscala in NUMBER,
|
|
v_id_util IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER,
|
|
v_nrdoc IN IMOB_OPERATII_MF.NRDOC%TYPE DEFAULT NULL,
|
|
v_datadoc in IMOB_OPERATII_MF.DATADOC%TYPE DEFAULT NULL) IS
|
|
|
|
tnLuna number := 0;
|
|
tnLunaExp number := 0;
|
|
tnAn number := 0;
|
|
tnAnExp number := 0;
|
|
v_amort_prec number := 0;
|
|
v_table_operatii varchar2(30);
|
|
v_table_rate varchar2(30);
|
|
|
|
v_row_op imob_operatii_mf%ROWTYPE;
|
|
v_row_opf imobf_operatii_mf%ROWTYPE;
|
|
|
|
v_row_rate imob_calcul_rate%ROWTYPE;
|
|
v_row_ratef imobf_calcul_rate%ROWTYPE;
|
|
ldDataOra date := sysdate;
|
|
lnIdRata imob_calcul_rate.id_calcul_rate%type := v_id_rata;
|
|
begin
|
|
|
|
if v_fiscala = 0 then
|
|
v_table_operatii := 'imob_operatii_mf';
|
|
v_table_rate := 'imob_calcul_rate';
|
|
else
|
|
v_table_operatii := 'imobf_operatii_mf';
|
|
v_table_rate := 'imobf_calcul_rate';
|
|
end if;
|
|
|
|
UPDATE IMOB_NOM_MF
|
|
SET nract = v_nract,
|
|
data_achizitie = v_data_achizitie,
|
|
denumire = v_denumire,
|
|
explicatia = v_explicatie_n,
|
|
data_pif = v_data_pif,
|
|
nr_pif = v_nr_pif,
|
|
procent = v_procent,
|
|
coeficient = v_coeficient,
|
|
id_tip_amortizare = v_id_tip_amortizare,
|
|
id_tip_imobilizare = v_id_tip_imobilizare
|
|
WHERE ID_MF = v_id_mf;
|
|
|
|
tnLuna := to_number(substr(v_lper_in, 1, 2));
|
|
tnAn := to_number(substr(v_lper_in, 3, 4));
|
|
tnLunaExp := to_number(substr(v_lper_fin, 1, 2));
|
|
tnAnExp := to_number(substr(v_lper_fin, 3, 4));
|
|
/* EXECUTE IMMEDIATE 'UPDATE ' || v_schema || '.IMOB_LISTA_MF ' ||
|
|
'SET NR_INVENTAR=:1,id_lucrare=:2,id_gestiune=:3,' ||
|
|
'id_sectie=:4,id_responsabil=:5,dns_luni=:6,cod_mf=:7,cont=:8,acont=:9,an=:10,luna=:11,an_exp=:12,luna_exp=:13 WHERE ID_LISTA_MF =:14 '
|
|
USING v_nr_inventar, v_id_lucrare, v_id_gestiune, v_id_sectie, v_id_responsabil, v_dns_luni, v_Cod_mf, v_cont, v_acont, tnAn, tnLuna, tnAnExp, tnLunaExp, v_id_lista_mf;*/
|
|
|
|
pack_imob.modifica_lista_mf(v_id_mf,
|
|
v_id_lista_mf,
|
|
v_dns_luni,
|
|
v_Cod_mf,
|
|
v_cont,
|
|
v_acont,
|
|
v_nr_inventar,
|
|
v_id_gestiune,
|
|
v_id_responsabil,
|
|
v_id_sectie,
|
|
v_id_lucrare,
|
|
v_id_sucursala,
|
|
v_id_util,
|
|
tnAn,
|
|
tnLuna,
|
|
tnAnExp,
|
|
tnLunaExp,
|
|
v_amort_max_deductibil);
|
|
|
|
--------------------------------------
|
|
tnLuna := to_number(substr(v_rper_in, 1, 2));
|
|
tnAn := to_number(substr(v_rper_in, 3, 4));
|
|
tnLunaExp := to_number(substr(v_rper_fin, 1, 2));
|
|
tnAnExp := to_number(substr(v_rper_fin, 3, 4));
|
|
v_amort_prec := v_valoare - v_valoare_ramasa;
|
|
|
|
-- if v_id_tip_imobilizare <> 3 then
|
|
-- imobilizarile in curs nu au operatii si rate
|
|
if v_fiscala = 0 then
|
|
-- imobilizarile in curs nu transmit informatiile despre rate (nu au rate), dar sunt necesare
|
|
-- determin id_rata in functie de id_operate
|
|
if v_id_tip_imobilizare = 3 and nvl(lnIdRata, 0) = 0 then
|
|
select id_calcul_rate
|
|
into lnIdRata
|
|
from imob_calcul_rate a
|
|
where a.id_operatie_mf = v_id_operatie_mf;
|
|
end if;
|
|
|
|
if nvl(v_id_operatie_mf, 0) = 0 or nvl(lnIdRata, 0) = 0 then
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu este completat Id operatie sau Id rata!');
|
|
end if;
|
|
|
|
select *
|
|
into v_row_op
|
|
from imob_operatii_mf
|
|
where id_operatie_mf = v_id_operatie_mf;
|
|
|
|
select *
|
|
into v_row_rate
|
|
from imob_calcul_rate
|
|
where id_calcul_rate = lnIdRata;
|
|
|
|
UPDATE imob_operatii_mf
|
|
SET sters = 1,
|
|
id_util_sters = v_id_util,
|
|
dataora_sters = ldDataOra
|
|
WHERE id_operatie_mf = v_id_operatie_mf;
|
|
|
|
v_row_op.valoare := v_valoare;
|
|
v_row_op.valoare_ramasa := v_valoare_ramasa;
|
|
v_row_op.dns_ramas := v_dns_ramas;
|
|
v_row_op.valoare_reziduala := v_valoare_reziduala;
|
|
v_row_op.data_operatie := v_data_operatie;
|
|
v_row_op.explicatia := v_explicatie_o;
|
|
v_row_op.id_tip_operatie := v_id_tip_operatie;
|
|
v_row_op.id_util := v_id_util;
|
|
v_row_op.dataora := ldDataOra;
|
|
v_row_op.nrdoc := NVL(v_nrdoc, v_row_op.nrdoc);
|
|
v_row_op.datadoc := NVL(v_datadoc, v_row_op.datadoc);
|
|
|
|
insert into imob_operatii_mf
|
|
values v_row_op
|
|
returning id_operatie_mf into v_row_op.id_operatie_mf;
|
|
|
|
UPDATE imob_calcul_rate
|
|
SET sters = 1
|
|
WHERE id_calcul_rate = lnIdRata;
|
|
|
|
v_row_rate.rata := v_rata;
|
|
v_row_rate.cota_An := v_cota_an;
|
|
v_row_rate.cota_luna := v_cota_luna;
|
|
v_row_rate.ultima_rata := v_ultima_rata;
|
|
v_row_rate.data_ultima_rata := v_data_ultima_rata;
|
|
v_row_rate.an := tnAn;
|
|
v_row_rate.luna := tnLuna;
|
|
v_row_rate.an_exp := tnAnExp;
|
|
v_row_rate.luna_exp := tnLunaExp;
|
|
v_row_rate.uzura_prec := v_uzura_prec;
|
|
v_row_rate.amortizare_prec := v_amort_prec;
|
|
v_row_rate.id_operatie_mf := v_row_op.id_operatie_mf;
|
|
|
|
insert into imob_calcul_rate
|
|
values v_row_rate
|
|
returning id_calcul_rate into v_row_rate.id_calcul_rate;
|
|
|
|
else
|
|
-- imobilizarile in curs nu transmit informatiile despre rate (nu au rate), dar sunt necesare
|
|
-- determin id_rata in functie de id_operate
|
|
if v_id_tip_imobilizare = 3 and nvl(lnIdRata, 0) = 0 then
|
|
begin
|
|
select id_calcul_rate
|
|
into lnIdRata
|
|
from imobf_calcul_rate a
|
|
where a.id_operatie_mf = v_id_operatie_mf;
|
|
exception
|
|
when NO_DATA_FOUND then
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu este completat Id operatie sau Id rata!');
|
|
end;
|
|
end if;
|
|
|
|
if nvl(v_id_operatie_mf, 0) = 0 or nvl(lnIdRata, 0) = 0 then
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu este completat Id operatie sau Id rata!');
|
|
end if;
|
|
|
|
select *
|
|
into v_row_opf
|
|
from imobf_operatii_mf
|
|
where id_operatie_mf = v_id_operatie_mf;
|
|
|
|
select *
|
|
into v_row_ratef
|
|
from imobf_calcul_rate
|
|
where id_calcul_rate = lnIdRata;
|
|
|
|
UPDATE imobf_operatii_mf
|
|
SET sters = 1,
|
|
id_util_sters = v_id_util,
|
|
dataora_sters = ldDataOra
|
|
WHERE id_operatie_mf = v_id_operatie_mf;
|
|
|
|
v_row_opf.valoare := v_valoare;
|
|
v_row_opf.valoare_ramasa := v_valoare_ramasa;
|
|
v_row_opf.dns_ramas := v_dns_ramas;
|
|
v_row_opf.data_operatie := v_data_operatie;
|
|
v_row_opf.explicatia := v_explicatie_o;
|
|
v_row_opf.id_tip_operatie := v_id_tip_operatie;
|
|
|
|
insert into imobf_operatii_mf
|
|
values v_row_opf
|
|
returning id_operatie_mf into v_row_opf.id_operatie_mf;
|
|
|
|
UPDATE imobf_calcul_rate
|
|
SET sters = 1
|
|
WHERE id_calcul_rate = lnIdRata;
|
|
|
|
v_row_ratef.rata := v_rata;
|
|
v_row_ratef.cota_An := v_cota_an;
|
|
v_row_ratef.cota_luna := v_cota_luna;
|
|
v_row_ratef.ultima_rata := v_ultima_rata;
|
|
v_row_ratef.data_ultima_rata := v_data_ultima_rata;
|
|
v_row_ratef.an := tnAn;
|
|
v_row_ratef.luna := tnLuna;
|
|
v_row_ratef.an_exp := tnAnExp;
|
|
v_row_ratef.luna_exp := tnLunaExp;
|
|
v_row_ratef.uzura_prec := v_uzura_prec;
|
|
v_row_ratef.amortizare_prec := v_amort_prec;
|
|
v_row_ratef.id_operatie_mf := v_row_opf.id_operatie_mf;
|
|
|
|
insert into imobf_calcul_rate
|
|
values v_row_ratef
|
|
returning id_calcul_rate into v_row_ratef.id_calcul_rate;
|
|
|
|
end if;
|
|
-- end if;
|
|
|
|
end schimba_mf;
|
|
|
|
------------------------------------------------------------------------------------------------
|
|
procedure sterge_mf(v_id_mf IN NUMBER, v_id_util IN number default null) IS
|
|
begin
|
|
for item in (select id_operatie_mf, id_operatie_prec, 0 as fiscala
|
|
from imob_operatii_mf
|
|
where id_mf = v_id_mf
|
|
order by id_operatie_mf desc) loop
|
|
pack_imob.sterge_operatie_mf(item.id_operatie_mf,
|
|
item.id_operatie_prec,
|
|
item.fiscala);
|
|
end loop;
|
|
|
|
for item in (select id_operatie_mf, id_operatie_prec, 1 as fiscala
|
|
from imobf_operatii_mf
|
|
where id_mf = v_id_mf
|
|
order by id_operatie_mf desc) loop
|
|
pack_imob.sterge_operatie_mf(item.id_operatie_mf,
|
|
item.id_operatie_prec,
|
|
item.fiscala);
|
|
end loop;
|
|
|
|
UPDATE imob_lista_mf
|
|
SET sters = 1
|
|
WHERE id_mf = v_id_mf
|
|
and sters = 0;
|
|
|
|
update imob_nom_mf
|
|
set sters = 1, dataora_sters = sysdate, id_util_sters = v_id_util
|
|
where id_mf = v_id_mf;
|
|
|
|
end sterge_mf;
|
|
------------------------------------------------------------------------------------------------
|
|
/* function add_operatie_mf(v_schema IN VARCHAR2,
|
|
v_id_mf IN NUMBER,
|
|
v_id_tip_operatie IN NUMBER,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_dns_ramas IN NUMBER,
|
|
v_data_operatie IN DATE,
|
|
v_explicatia_operatie IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_id_tip_iesire in imob_tipuri_iesire.id%type default null)
|
|
return number as
|
|
-- am adaugat v_valoare_reziduala pentru compatibilitate
|
|
v_id_operatie_mf number := 0;
|
|
v_valoare_reziduala number := 0;
|
|
begin
|
|
v_id_operatie_mf := add_operatie_mf(v_id_mf,
|
|
v_id_tip_operatie,
|
|
v_valoare,
|
|
v_valoare_ramasa,
|
|
v_dns_ramas,
|
|
v_valoare_reziduala,
|
|
v_data_operatie,
|
|
v_explicatia_operatie,
|
|
v_id_util,
|
|
v_fiscala,
|
|
v_datadoc,
|
|
v_nrdoc,
|
|
v_id_tip_iesire);
|
|
|
|
end add_operatie_mf;*/
|
|
|
|
function add_operatie_mf(v_id_mf IN NUMBER,
|
|
v_id_tip_operatie IN NUMBER,
|
|
v_valoare IN NUMBER,
|
|
v_valoare_ramasa IN NUMBER,
|
|
v_dns_ramas IN NUMBER,
|
|
v_valoare_reziduala IN NUMBER,
|
|
v_data_operatie IN DATE,
|
|
v_explicatia_operatie IN VARCHAR2,
|
|
v_id_util IN NUMBER,
|
|
v_fiscala in number,
|
|
v_datadoc in date,
|
|
v_nrdoc in number,
|
|
v_id_tip_iesire in imob_tipuri_iesire.id%type default null)
|
|
return number as
|
|
|
|
v_id_operatie_prec number := 0;
|
|
v_id_operatie_mf number := 0;
|
|
v_view varchar2(30) := 'imob_vultima_operatie';
|
|
v_table varchar2(30) := 'IMOB_OPERATII_MF';
|
|
|
|
begin
|
|
if v_fiscala = 1 then
|
|
v_view := 'imobf_vultima_operatie_fiscala';
|
|
v_table := 'IMOBF_OPERATII_MF';
|
|
else
|
|
v_view := 'imob_vultima_operatie';
|
|
v_table := 'IMOB_OPERATII_MF';
|
|
end if;
|
|
BEGIN
|
|
Execute immediate 'SELECT id_operatie_mf FROM ' || v_view ||
|
|
' where id_mf = :1'
|
|
into v_id_operatie_prec
|
|
using v_id_mf;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
v_id_operatie_prec := 0;
|
|
END;
|
|
|
|
EXECUTE IMMEDIATE 'INSERT /*+APPEND*/ INTO ' || v_table ||
|
|
'(ID_MF,ID_TIP_OPERATIE,VALOARE,valoare_ramasa,DNS_RAMAS,VALOARE_REZIDUALA,DATA_OPERATIE,EXPLICATIA,ID_UTIL,id_operatie_prec,datadoc,nrdoc, id_tip_iesire) ' ||
|
|
'VALUES(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13) RETURNING ID_OPERATIE_MF INTO :14'
|
|
USING v_id_mf, v_id_tip_operatie, v_valoare, v_valoare_ramasa, v_dns_ramas, v_valoare_reziduala, v_data_operatie, v_explicatia_operatie, v_id_util, v_id_operatie_prec, v_datadoc, v_nrdoc, v_id_tip_iesire
|
|
RETURNING INTO v_id_operatie_mf;
|
|
|
|
return v_id_operatie_mf;
|
|
|
|
end add_operatie_mf;
|
|
---------------------------------------------------------------------------------------------
|
|
procedure add_in_lista_mf(v_schema IN VARCHAR2,
|
|
v_id_mf IN NUMBER,
|
|
v_dns IN NUMBER,
|
|
v_cod_mf IN VARCHAR2,
|
|
v_cont IN VARCHAR2,
|
|
v_acont IN VARCHAR2,
|
|
v_id_lucrare IN NUMBER,
|
|
v_id_gestiune IN NUMBER,
|
|
v_id_sectie IN NUMBER,
|
|
v_id_responsabil IN NUMBER,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_nr_inventar IN NUMBER,
|
|
v_id_util IN NUMBER,
|
|
v_data_calcul IN DATE,
|
|
v_durata IN NUMBER,
|
|
v_amort_max_deductibil IN NUMBER) IS
|
|
v_data_exp date;
|
|
v_an number;
|
|
v_luna number;
|
|
v_an_exp number;
|
|
v_luna_exp number;
|
|
v_data_prec date;
|
|
v_an_prec number;
|
|
v_luna_prec number;
|
|
|
|
begin
|
|
|
|
v_data_exp := add_months(v_data_calcul, v_durata);
|
|
v_an := extract(year from v_data_calcul);
|
|
v_luna := extract(month from v_data_calcul);
|
|
v_an_exp := extract(year from v_data_exp);
|
|
v_luna_exp := extract(month from v_data_exp);
|
|
v_data_prec := add_months(v_data_calcul, -1);
|
|
v_an_prec := extract(year from v_data_prec);
|
|
v_luna_prec := extract(month from v_data_prec);
|
|
|
|
-- inactivez inregistrarile precedente pt un MF dc sunt facute in aceeasi luna
|
|
/* EXECUTE IMMEDIATE 'UPDATE ' || v_schema || '.IMOB_LISTA_MF ' ||
|
|
'SET inactiv = 1 ' ||
|
|
'WHERE ID_MF=:1 AND AN*12+LUNA =:2 AND STERS=0'
|
|
USING v_id_mf, v_an * 12 + v_luna;*/
|
|
|
|
-- setez data expirare pt precedenta activa
|
|
UPDATE IMOB_LISTA_MF
|
|
SET an_exp = v_an_prec, luna_exp = v_luna_prec
|
|
WHERE ID_MF = v_id_mf
|
|
and AN_EXP * 12 + LUNA_EXP > v_an * 12 + v_luna
|
|
AND STERS = 0
|
|
AND INACTIV = 0;
|
|
|
|
-- inserez linie noua
|
|
INSERT /*+APPEND*/
|
|
INTO IMOB_LISTA_MF
|
|
(ID_MF,
|
|
DNS_LUNI,
|
|
NR_INVENTAR,
|
|
COD_MF,
|
|
CONT,
|
|
ACONT,
|
|
ID_LUCRARE,
|
|
ID_GESTIUNE,
|
|
ID_SECTIE,
|
|
ID_RESPONSABIL,
|
|
ID_SUCURSALA,
|
|
ID_UTIL,
|
|
AN,
|
|
LUNA,
|
|
AN_EXP,
|
|
LUNA_EXP,
|
|
AMORT_MAX_DEDUCTIBIL)
|
|
VALUES
|
|
(v_id_mf,
|
|
v_dns,
|
|
v_nr_inventar,
|
|
trim(v_cod_mf),
|
|
trim(v_cont),
|
|
trim(v_acont),
|
|
v_id_lucrare,
|
|
v_id_gestiune,
|
|
v_id_sectie,
|
|
v_id_responsabil,
|
|
v_id_sucursala,
|
|
v_id_util,
|
|
v_an,
|
|
v_luna,
|
|
v_an_exp,
|
|
v_luna_exp,
|
|
v_amort_max_deductibil);
|
|
|
|
end add_in_lista_mf;
|
|
------------------------------------------------------------------------------------------
|
|
procedure adauga_la_transformare(v_id_mf_nou IN NUMBER,
|
|
v_id_operatie_nou IN NUMBER,
|
|
v_id_mf_curs IN NUMBER,
|
|
v_id_operatie_curs IN NUMBER,
|
|
v_valoare IN NUMBER) IS
|
|
begin
|
|
|
|
INSERT INTO IMOB_TRANSFORMARE_MF
|
|
(ID_MF_NOU, ID_OPERATIE_NOU, ID_MF_VECHI, ID_OPERATIE_CURS, VALOARE)
|
|
VALUES
|
|
(v_id_mf_nou,
|
|
v_id_operatie_nou,
|
|
v_id_mf_curs,
|
|
v_id_operatie_curs,
|
|
v_valoare);
|
|
|
|
end adauga_la_transformare;
|
|
|
|
-------------------------------------------------------------------------------------------------------
|
|
-- se apeleaza din sterge_operatie_mf cand sterg operatia de transformare imobilizare in curs in mijlocul fix
|
|
-------------------------------------------------------------------------------------------------------
|
|
procedure undo_in_imobilizare_in_curs(v_id_tip_imobilizare IN NUMBER,
|
|
v_id_operatie IN NUMBER) IS
|
|
lnIdUtil imob_operatii_mf.id_util%type;
|
|
lnIdOperatieCurs imob_operatii_mf.id_operatie_mf%type;
|
|
begin
|
|
lnIdUtil := pack_contafin.GET_IDUTIL();
|
|
|
|
IF v_id_tip_imobilizare <> 3 THEN
|
|
-- sterg operatia de transformare in mijloc fix
|
|
-- doar daca operatia apartine unei imobilizari corporale/necorporale
|
|
-- nu si pentru o imobilizare in curs
|
|
UPDATE IMOB_OPERATII_MF
|
|
SET STERS = 1, DATAORA_STERS = SYSDATE, ID_UTIL_STERS = lnIdUtil
|
|
WHERE id_operatie_mf in
|
|
(SELECT ID_OPERATIE_CURS
|
|
FROM IMOB_TRANSFORMARE_MF
|
|
WHERE ID_OPERATIE_NOU = v_id_operatie);
|
|
DELETE FROM IMOB_TRANSFORMARE_MF
|
|
WHERE ID_OPERATIE_NOU = v_id_operatie;
|
|
else
|
|
DELETE FROM IMOB_TRANSFORMARE_MF
|
|
WHERE ID_OPERATIE_CURS = v_id_operatie;
|
|
END IF;
|
|
|
|
end undo_in_imobilizare_in_curs;
|
|
-------------------------------------------------------------------------------------------------------
|
|
procedure recalculat_expirarea(v_schema IN VARCHAR2,
|
|
v_id_operatie_prec IN NUMBER,
|
|
v_fiscala IN NUMBER) is
|
|
|
|
v_an_exp number;
|
|
v_luna_exp number;
|
|
v_dns_ramas number;
|
|
v_data date;
|
|
v_table_operatii varchar2(30);
|
|
v_table_rate varchar2(30);
|
|
|
|
begin
|
|
|
|
if v_fiscala = 0 then
|
|
v_table_operatii := 'imob_operatii_mf';
|
|
v_table_rate := 'imob_calcul_rate';
|
|
else
|
|
v_table_operatii := 'imobf_operatii_mf';
|
|
v_table_rate := 'imobf_calcul_rate';
|
|
end if;
|
|
|
|
EXECUTE IMMEDIATE 'SELECT dns_ramas FROM ' || v_schema || '.' ||
|
|
v_table_operatii || ' WHERE ID_operatie_mf=:1'
|
|
INTO v_dns_ramas
|
|
USING v_id_operatie_prec;
|
|
|
|
EXECUTE IMMEDIATE 'SELECT an,luna FROM ' || v_schema || '.' ||
|
|
v_table_rate || ' WHERE ID_operatie_mf=:1'
|
|
INTO v_an_exp, v_luna_exp
|
|
USING v_id_operatie_prec;
|
|
|
|
v_data := to_date(to_char(v_an_exp) ||
|
|
lpad(to_char(v_luna_exp), 2, 0) || '01',
|
|
'yyyymmdd');
|
|
v_data := add_months(v_data, v_dns_ramas - 1);
|
|
v_an_exp := extract(year from v_data);
|
|
v_luna_exp := extract(month from v_data);
|
|
|
|
EXECUTE IMMEDIATE 'UPDATE ' || v_schema || '.' || v_table_rate ||
|
|
'SET an_exp=:1,luna_exp=:2 WHERE ID_operatie_mf =:3'
|
|
USING v_an_exp, v_luna_exp, v_id_operatie_prec;
|
|
|
|
end recalculat_expirarea;
|
|
------------------------------------------------------------------------------------------------------
|
|
FUNCTION get_max_id(v_schema IN VARCHAR2,
|
|
v_tabela IN VARCHAR2,
|
|
v_nume_id IN VARCHAR2) return number is
|
|
v_id_max NUMBER := 0;
|
|
|
|
begin
|
|
|
|
EXECUTE IMMEDIATE 'SELECT MAX(' || V_NUME_ID || ') AS ID_MAX FROM ' ||
|
|
V_SCHEMA || '.' || V_TABELA
|
|
INTO V_ID_MAX;
|
|
return v_id_max;
|
|
end get_max_id;
|
|
-------------------------------------------------------------------------------------------------------
|
|
procedure CALCUL_SITUATIE_LUNARA(v_datain in date,
|
|
v_datasf in date,
|
|
v_cond in varchar2,
|
|
v_fiscala in number,
|
|
v_id_sucursala in number,
|
|
crsMF out PACK_TYPES.tip_cursor) is
|
|
begin
|
|
|
|
pack_imob.CALCUL_SITUATIE_LUNARA2(v_datain,
|
|
v_datasf,
|
|
v_cond,
|
|
v_fiscala,
|
|
v_id_sucursala,
|
|
0,
|
|
crsMF);
|
|
end;
|
|
------------------------------------------------------------------------------------------------------
|
|
/* PROCEDURE VIZUALIZARE_LISTA(V_DATAIN IN DATE,
|
|
V_DATASF IN DATE,
|
|
V_COND IN VARCHAR2,
|
|
V_FISCALA IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_TIP_SELECTIE IN NUMBER DEFAULT 0,
|
|
CRSMF OUT PACK_TYPES.TIP_CURSOR) IS
|
|
CRSMF PACK_TYPES.TIP_CURSOR;
|
|
BEGIN
|
|
PACK_IMOB.CALCUL_SITUATIE_LUNARA2(V_DATAIN => :V_DATAIN,
|
|
V_DATASF => :V_DATASF,
|
|
V_COND => :V_COND,
|
|
V_FISCALA => :V_FISCALA,
|
|
V_ID_SUCURSALA => :V_ID_SUCURSALA,
|
|
V_TIP_SELECTIE => :V_TIP_SELECTIE,
|
|
CRSMF => :CRSMF);
|
|
|
|
END VIZUALIZARE_LISTA;*/
|
|
|
|
procedure CALCUL_SITUATIE_LUNARA2(v_datain in date,
|
|
v_datasf in date,
|
|
v_cond in varchar2,
|
|
v_fiscala in number,
|
|
v_id_sucursala in number,
|
|
v_tip_selectie in number,
|
|
crsMF out PACK_TYPES.tip_cursor) is
|
|
|
|
-- v_tip_selectie: 0 (default), 1 = se apeleaza selectul din pack_mg_evolutie cu mai putine coloane
|
|
|
|
lcSql varchar2(32000);
|
|
/* uw_selection uw_sel_tab := uw_sel_tab();*/
|
|
lnMf number(10) := 0;
|
|
lnIdMf number(10) := 0;
|
|
lnIdLista number(10) := 0;
|
|
lnIdOperatie number(10) := 0;
|
|
lnIdOperatieAchizitie number(10) := 0;
|
|
lnIdOperatiePrec number(10) := 0;
|
|
lnIdCalcul number(10) := 0;
|
|
lnIdListaRezerva number(10) := 0;
|
|
lnIdCalculRezerva number(10) := 0;
|
|
ignore number(4);
|
|
lnDataTest number(10) := 0;
|
|
llInserez number(1) := 0;
|
|
v_table_operatii varchar2(40) := 'IMOB_OPERATII_MF';
|
|
v_table_rata varchar2(40) := 'IMOB_CALCUL_RATE';
|
|
v_view_operatii varchar2(40) := 'IMOB_VOPERATII_MF';
|
|
v_view_rata varchar2(40) := 'IMOB_VCALCUL_RATE';
|
|
lcWhere varchar2(1000);
|
|
|
|
i number(20) := 0;
|
|
begin
|
|
DELETE FROM TUW_SEL_TAB;
|
|
|
|
if v_id_sucursala is not null then
|
|
lcWhere := case
|
|
when v_cond is not null then
|
|
v_cond || ' and l.id_sucursala = ' || v_id_sucursala
|
|
else
|
|
' l.id_sucursala = ' || v_id_sucursala
|
|
end;
|
|
else
|
|
lcWhere := v_cond;
|
|
end if;
|
|
if lcWhere is not null then
|
|
lcWhere := ' where ' || lcWhere;
|
|
end if;
|
|
|
|
if v_fiscala = 1 then
|
|
v_table_operatii := 'IMOBF_OPERATII_MF';
|
|
v_table_rata := 'IMOBF_CALCUL_RATE';
|
|
v_view_operatii := 'IMOBF_VOPERATII_MF';
|
|
v_view_rata := 'IMOBF_VCALCUL_RATE';
|
|
end if;
|
|
lcSql := 'select nvl(n.id_mf, 0) as id_mf,
|
|
nvl(l.id_lista_mf, 0) as id_lista_mf,
|
|
nvl(o.id_operatie_mf, 0) as id_operatie_mf,
|
|
nvl(o.id_operatie_achizitie, 0) as id_operatie_achizitie,
|
|
nvl(o.id_operatie_prec, 0) as id_operatie_prec,
|
|
nvl(c.id_calcul_rate, 0) as id_calcul_rate,
|
|
nvl(s.id_lista_rezerva, 0) as id_lista_rezerva,
|
|
nvl(x.id_calcul_rate, 0) as id_calcul_rezerva
|
|
from (select o1.id_operatie_mf, o1.id_mf, o1.id_operatie_prec, o2.id_operatie_achizitie from (select id_operatie_mf, id_mf, id_operatie_prec from ' ||
|
|
v_table_operatii || ' where sters = 0) o1 join (select distinct first_value(id_operatie_mf) over(partition by id_mf order by data_operatie desc) as id_operatie_mf,
|
|
first_value(id_operatie_mf) over(partition by id_mf order by data_operatie asc) as id_operatie_achizitie
|
|
from ' || v_table_operatii || '
|
|
where extract(month from data_operatie) +
|
|
extract(year from data_operatie) * 12 <= :1
|
|
and sters = 0
|
|
and id_operatie_mf in (select distinct id_operatie_mf
|
|
from ' ||
|
|
v_table_rata || '
|
|
where sters = 0)) o2 on o1.id_operatie_mf =
|
|
o2.id_operatie_mf) o
|
|
join imob_nom_mf n on o.id_mf = n.id_mf and n.sters = 0
|
|
left join (select distinct max(id_lista_mf) over(partition by id_mf) as id_lista_mf,id_mf
|
|
from imob_lista_mf
|
|
where :2 between
|
|
(an * 12 + luna) and
|
|
(an_exp * 12 +
|
|
luna_exp)
|
|
and sters = 0) l on o.id_mf = l.id_mf
|
|
left join (select id_mf, id_lista_mf as id_lista_rezerva from imob_lista_mf where id_lista_mf in (select first_value(id_lista_mf) over (partition by id_mf order by (an*12 + luna) desc) as id_lista_rezerva from imob_lista_mf
|
|
where an*12 + luna <= :3 and
|
|
(an_exp*12 + luna_exp - an*12 -luna)>=0 and sters=0)) s on s.id_mf = o.id_mf
|
|
left join (select distinct max(id_calcul_rate) over(partition by id_mf) as id_calcul_rate,id_mf
|
|
from ' ||
|
|
v_table_rata || '
|
|
where :4 between
|
|
(an * 12 + luna) and
|
|
(an_exp * 12 +
|
|
luna_exp)
|
|
and sters = 0) c on o.id_mf = c.id_mf
|
|
left join (select distinct min(id_calcul_rate) over(partition by id_operatie_mf) as id_calcul_rate, id_operatie_mf from ' ||
|
|
v_table_rata ||
|
|
' where sters = 0) x on x.id_operatie_mf = o.id_operatie_mf';
|
|
|
|
--pinfo(lcSql, 'IMOBILIZARI 1');
|
|
|
|
FOR ITEM IN (SELECT data_test
|
|
FROM ani_luni
|
|
where data_test between v_datain and v_datasf
|
|
order by data_test) LOOP
|
|
|
|
lnDataTest := extract(month from item.data_test) +
|
|
extract(year from item.data_test) * 12;
|
|
|
|
/* execute immediate 'SELECT uw_sel_row(data_test, id_mf, id_lista_mf, id_operatie_mf, id_calcul_rate)
|
|
BULK COLLECT INTO uw_selection
|
|
FROM (' || lcSql || ')'
|
|
using item.data_test,lnDataTest, lnDataTest;*/
|
|
|
|
lnMF := dbms_sql.open_cursor;
|
|
DBMS_SQL.PARSE(lnMf, lcSql, DBMS_SQL.native);
|
|
|
|
DBMS_SQL.DEFINE_COLUMN(lnMf, 1, lnIdMf);
|
|
DBMS_SQL.DEFINE_COLUMN(lnMf, 2, lnIdLista);
|
|
DBMS_SQL.DEFINE_COLUMN(lnMf, 3, lnIdOperatie);
|
|
DBMS_SQL.DEFINE_COLUMN(lnMf, 4, lnIdOperatieAchizitie);
|
|
DBMS_SQL.DEFINE_COLUMN(lnMf, 5, lnIdOperatiePrec);
|
|
DBMS_SQL.DEFINE_COLUMN(lnMf, 6, lnIdCalcul);
|
|
DBMS_SQL.DEFINE_COLUMN(lnMf, 7, lnIdListaRezerva);
|
|
DBMS_SQL.DEFINE_COLUMN(lnMf, 8, lnIdCalculRezerva);
|
|
|
|
dbms_sql.bind_variable(lnMf, ':1', lnDataTest);
|
|
dbms_sql.bind_variable(lnMf, ':2', lnDataTest);
|
|
dbms_sql.bind_variable(lnMf, ':3', lnDataTest);
|
|
dbms_sql.bind_variable(lnMf, ':4', lnDataTest);
|
|
|
|
ignore := DBMS_SQL.EXECUTE(lnMf);
|
|
LOOP
|
|
IF DBMS_SQL.FETCH_ROWS(lnMf) > 0 THEN
|
|
-- get column values of the row
|
|
DBMS_SQL.COLUMN_VALUE(lnMf, 1, lnIdMf);
|
|
DBMS_SQL.COLUMN_VALUE(lnMf, 2, lnIdLista);
|
|
DBMS_SQL.COLUMN_VALUE(lnMf, 3, lnIdOperatie);
|
|
DBMS_SQL.COLUMN_VALUE(lnMf, 4, lnIdOperatieAchizitie);
|
|
DBMS_SQL.COLUMN_VALUE(lnMf, 5, lnIdOperatiePrec);
|
|
DBMS_SQL.COLUMN_VALUE(lnMf, 6, lnIdCalcul);
|
|
DBMS_SQL.COLUMN_VALUE(lnMf, 7, lnIdListaRezerva);
|
|
DBMS_SQL.COLUMN_VALUE(lnMf, 8, lnIdCalculRezerva);
|
|
|
|
if lnIdLista = 0 then
|
|
lnIdLista := lnIdListaRezerva;
|
|
end if;
|
|
|
|
if lnIdCalcul = 0 then
|
|
--select nvl(id_calcul_rate,0) into lnIdCalcul from imob_calcul_rate where id_operatie_mf = lnIdOperatie ;
|
|
lnIdCalcul := lnIdCalculRezerva;
|
|
end if;
|
|
|
|
if lnIdCalcul <> 0 then
|
|
llInserez := 1;
|
|
else
|
|
llInserez := 0;
|
|
end if;
|
|
|
|
if llInserez = 1 then
|
|
I := I + 1;
|
|
/* uw_selection.extend;
|
|
uw_selection(i) := uw_sel_row(item.data_test,
|
|
lnIdMf,
|
|
lnIdLista,
|
|
lnIdOperatie,
|
|
lnIdOperatieAchizitie,
|
|
lnIdCalcul);*/
|
|
insert into tuw_sel_tab
|
|
(data_test,
|
|
id_mf,
|
|
id_lista_mf,
|
|
id_operatie_mf,
|
|
id_operatie_achizitie,
|
|
id_operatie_prec,
|
|
id_calcul_rate)
|
|
values
|
|
(item.data_test,
|
|
lnIdMf,
|
|
lnIdLista,
|
|
lnIdOperatie,
|
|
lnIdOperatieAchizitie,
|
|
lnIdOperatiePrec,
|
|
lnIdCalcul);
|
|
end if;
|
|
else
|
|
exit;
|
|
end if; -- DBMS_SQL.FETCH_ROWS(lnMf) > 0
|
|
end loop;
|
|
|
|
dbms_sql.close_cursor(lnMf);
|
|
end loop;
|
|
if v_tip_selectie = 0 then
|
|
-- 04.04.2007
|
|
-- rata doar daca o.id_tip_operatie <> 4 (ultima operatie nu este iesire din gestiune)
|
|
lcSql := 'select a.data_test,a.id_mf,a.id_lista_mf,a.id_operatie_mf,a.id_calcul_rate
|
|
,n.denumire, n.data_achizitie, n.data_pif,n.explicatia,n.nract,n.nr_pif,n.procent,n.coeficient,n.id_tip_imobilizare,n.tip_imobilizare,n.id_tip_amortizare,n.tip_amortizare
|
|
,l.dns_luni,l.cont,l.acont,l.cod_mf,l.id_gestiune,l.gestiune,l.id_lucrare,l.nrord,l.id_responsabil,l.responsabil,l.id_sectie,l.sectie,l.id_sucursala,l.sucursala,l.nr_inventar,lpad(l.luna,2,''0'')|| l.an as lper_in,lpad(l.luna_exp,2,''0'')|| l.an_exp as lper_fin, l.amort_max_deductibil
|
|
,o.data_operatie,o.id_tip_operatie,o.denumire as ultima_operatie,o.explicatia as cauza,r.uzura_prec,o.dns_ramas
|
|
,(case o.id_tip_operatie when 4 then 1 else 0 end) as iesit_din_gest
|
|
,nvl(r.cota_an,0) as cota_an,nvl(r.cota_luna,0) as cota_luna,r.data_ultima_rata as data_expirare,nvl(r.ultima_rata,0) as ultima_rata
|
|
,o.valoare, o.valoare_ramasa, o.valoare_reziduala
|
|
,(case when a.data_test>= r.data_ultima_rata then (case when a.data_test = r.data_ultima_rata and o.id_tip_operatie <> 4 then r.ultima_rata else 0 end) else (case when a.data_test>=to_date(r.luna || ''/'' || r.an,''MM/YYYY'') and o.id_tip_operatie <> 4 then r.rata else 0 end) end) as rata ' ||
|
|
--',o.valoare_ramasa - (case when o.id_operatie_mf = r.id_operatie_mf then (r.rata*GREATEST(0,months_between(trunc(least(a.data_test,r.data_ultima_rata),''MM''),to_date(r.luna || ''/'' || r.an,''MM/YYYY''))) + (case when a.data_test >= r.data_ultima_rata then ultima_rata else (case when a.data_test<to_date(r.luna || ''/'' || r.an,''MM/YYYY'') THEN 0 ELSE rata END) end)) else 0 end) as valoare_ramasa_amort ' ||
|
|
--',o.valoare-o.valoare_ramasa + (case when trunc(o.data_operatie,''MM'') <= to_date(r.luna || ''/'' || r.an,''MM/YYYY'') then r.rata*GREATEST(0,months_between(trunc(least(a.data_test,r.data_ultima_rata),''MM''),to_date(r.luna || ''/'' || r.an,''MM/YYYY''))) + (case when a.data_test > r.data_ultima_rata then ultima_rata else 0 end) else 0 end) as amort_prec ' ||
|
|
',r.amortizare_prec + r.rata*GREATEST(0,months_between(trunc(least(a.data_test,r.data_ultima_rata),''MM''),to_date(r.luna || ''/'' || r.an,''MM/YYYY''))) + (case when a.data_test > r.data_ultima_rata then r.ultima_rata else 0 end) as amort_prec ' ||
|
|
--',r.rata*GREATEST(0,months_between(trunc(least(a.data_test,r.data_ultima_rata),''MM''),to_date(r.luna || ''/'' || r.an,''MM/YYYY''))) + (case when a.data_test > r.data_ultima_rata then ultima_rata else 0 end) as amort_prec_rata
|
|
',r.uzura_prec + greatest(0,months_between(trunc(least(a.data_test,r.data_ultima_rata),''MM''),to_date(r.luna || ''/'' || r.an,''MM/YYYY'')) + 1) as uzura
|
|
,greatest(0,months_between(trunc(least(a.data_test,r.data_ultima_rata),''MM''),to_date(r.luna || ''/'' || r.an,''MM/YYYY'')) + 1) as uzura_rata
|
|
,lpad(r.luna,2,''0'')|| r.an as rper_in,lpad(r.luna_exp,2,''0'')|| r.an_exp as rper_fin
|
|
,o.valoare_rol,o.valoare_ramasa_rol,r.rata_rol,r.ultima_rata_rol, o2.valoare as valoare_achizitie, o3.valoare as valoare_prec, o.id_tip_iesire, i.tip as tip_iesire,
|
|
greatest(0, months_between(r.data_ultima_rata,a.data_test)) as durata_ramasa ';
|
|
else
|
|
-- pentru apelul din pack_mg_evolutie
|
|
lcSql := 'select l.cont, o.data_operatie, o.id_tip_iesire,o.valoare ';
|
|
end if;
|
|
|
|
--'from TABLE(cast(:1 as uw_sel_tab)) a ' ||
|
|
lcSql := lcSql || 'from tuw_sel_tab a ' || 'left join imob_vnom_mf n on a.id_mf = n.id_mf
|
|
left join imob_vlista_mf l on a.id_lista_mf = l.id_lista_mf
|
|
left join ' || v_view_operatii || ' o on a.id_operatie_mf = o.id_operatie_mf
|
|
left join ' || v_view_operatii || ' o2 on a.id_operatie_achizitie = o2.id_operatie_mf
|
|
left join ' || v_view_operatii || ' o3 on a.id_operatie_prec = o3.id_operatie_mf
|
|
left join ' || v_view_rata ||
|
|
' r on a.id_calcul_rate = r.id_calcul_rate
|
|
left join imob_tipuri_iesire i on o.id_tip_iesire = i.id ' ||
|
|
lcWhere;
|
|
|
|
--pinfo(lcSql, 'IMOBILIZARI 2');
|
|
|
|
open crsMF for lcSql;
|
|
/* open crsMF for lcSql
|
|
using uw_selection;*/
|
|
DELETE FROM TUW_SEL_TAB;
|
|
|
|
end;
|
|
|
|
-----------------------------------------------------------------------------------
|
|
function valori_calcul(v_schema in varchar2,
|
|
v_id_sucursala in IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_datain in date,
|
|
v_datasf in date,
|
|
v_cond in varchar2,
|
|
v_fiscala in number)
|
|
return PACK_TYPES.tip_cursor is
|
|
crsMF PACK_TYPES.tip_cursor;
|
|
begin
|
|
|
|
pack_imob.CALCUL_SITUATIE_LUNARA2(v_datain,
|
|
v_datasf,
|
|
v_cond,
|
|
v_fiscala,
|
|
v_id_sucursala,
|
|
0,
|
|
crsMF);
|
|
|
|
return crsMF;
|
|
end valori_calcul;
|
|
|
|
-----------------------------------------------------------------------------------
|
|
-- folosesc imob_vsituatie_lunara in loc de procedura calcul_situatie_lunara2
|
|
-----------------------------------------------------------------------------------
|
|
function valori_calcul_view(v_id_mf in number,
|
|
v_data in date,
|
|
v_fiscala in number)
|
|
return PACK_TYPES.tip_cursor is
|
|
crsMF PACK_TYPES.tip_cursor;
|
|
begin
|
|
|
|
pack_imob.setlunacurenta(v_data);
|
|
if v_fiscala = 0 then
|
|
open crsMF for
|
|
select * from imob_vsituatie_lunara where id_mf = v_id_mf;
|
|
else
|
|
open crsMF for
|
|
select * from imobf_vsituatie_lunara where id_mf = v_id_mf;
|
|
end if;
|
|
|
|
return crsMF;
|
|
end valori_calcul_view;
|
|
|
|
-----------------------------------------------------------------------------------
|
|
|
|
procedure sterge_operatie_mf(v_id_operatie IN NUMBER,
|
|
v_id_operatie_prec IN NUMBER,
|
|
v_fiscala IN NUMBER) IS
|
|
|
|
lnID_Util act_temp.id_util%Type := 0;
|
|
LD_DATAORA DATE;
|
|
v_ultima_operatie number;
|
|
v_dataop date;
|
|
v_table_operatii varchar2(30);
|
|
v_table_rate varchar2(30);
|
|
v_id_tip_operatie imob_operatii_mf.id_tip_operatie%type;
|
|
v_id_tip_imobilizare imob_nom_mf.id_tip_imobilizare%type;
|
|
begin
|
|
|
|
if v_fiscala = 0 then
|
|
v_table_operatii := 'imob_operatii_mf';
|
|
v_table_rate := 'imob_calcul_rate';
|
|
else
|
|
v_table_operatii := 'imobf_operatii_mf';
|
|
v_table_rate := 'imobf_calcul_rate';
|
|
end if;
|
|
begin
|
|
EXECUTE IMMEDIATE 'SELECT max(nvl(id_operatie_mf,0)), max(data_operatie) from ' ||
|
|
v_table_operatii ||
|
|
' where id_operatie_prec = :1 and sters = 0 group by id_operatie_prec'
|
|
into v_ultima_operatie, v_dataop
|
|
using v_id_operatie;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
v_ultima_operatie := 0;
|
|
end;
|
|
|
|
if v_ultima_operatie = 0 or v_ultima_operatie is null then
|
|
EXECUTE IMMEDIATE 'SELECT max(id_tip_operatie), max(m.id_tip_imobilizare) from ' ||
|
|
v_table_operatii ||
|
|
' o join imob_nom_mf m on o.id_mf = m.id_mf where id_operatie_mf = :1'
|
|
into v_id_tip_operatie, v_id_tip_imobilizare
|
|
using v_id_operatie;
|
|
|
|
LNID_UTIL := pack_contafin.GET_IDUTIL();
|
|
LD_DATAORA := pack_contafin.GET_DATAORA();
|
|
|
|
EXECUTE IMMEDIATE 'UPDATE ' || v_table_operatii ||
|
|
' SET STERS=1, id_util_sters = :1, dataora_sters = :2 WHERE ID_operatie_mf =: 3'
|
|
USING lnId_Util, ld_dataora, v_id_operatie;
|
|
|
|
EXECUTE IMMEDIATE 'UPDATE ' || v_table_rate ||
|
|
' SET STERS=1 WHERE ID_operatie_mf =: 1'
|
|
USING v_id_operatie;
|
|
|
|
if v_id_operatie_prec <> 0 then
|
|
EXECUTE IMMEDIATE 'UPDATE ' || v_table_rate ||
|
|
' SET an_exp = extract(year from data_ultima_rata), luna_exp = extract(month from data_ultima_rata) WHERE ID_operatie_mf =: 1'
|
|
using v_id_operatie_prec;
|
|
end if;
|
|
|
|
-- anulare transformare imobilizare in curs in mijloc fix
|
|
-- doar daca sterg operatia din imobilizari corporale/necorporale
|
|
-- nu apelez daca sterg operatia din imobilizari in curs
|
|
if v_id_tip_operatie = 3 then
|
|
pack_imob.undo_in_imobilizare_in_curs(v_id_tip_imobilizare,
|
|
v_id_operatie);
|
|
end if;
|
|
|
|
else
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'*Nu se poate sterge aceasta operatie. Exista o operatie pe acest MF in data de ' ||
|
|
v_dataop || '.*');
|
|
END IF;
|
|
|
|
end sterge_operatie_mf;
|
|
-----------------------------------------------------------------------------------------------------------------------------
|
|
procedure modifica_lista_mf(v_id_mf IN IMOB_LISTA_MF.ID_MF%TYPE,
|
|
v_id_lista_mf IN IMOB_LISTA_MF.ID_LISTA_MF%TYPE,
|
|
v_dns_luni IN IMOB_LISTA_MF.DNS_LUNI%TYPE,
|
|
v_Cod_mf IN IMOB_LISTA_MF.COD_MF%TYPE,
|
|
v_cont IN IMOB_LISTA_MF.CONT%TYPE,
|
|
v_acont IN IMOB_LISTA_MF.ACONT%TYPE,
|
|
v_nr_inventar IN IMOB_LISTA_MF.NR_INVENTAR%TYPE,
|
|
v_id_gestiune IN IMOB_LISTA_MF.ID_GESTIUNE%TYPE,
|
|
v_id_responsabil IN IMOB_LISTA_MF.ID_RESPONSABIL%TYPE,
|
|
v_id_sectie IN IMOB_LISTA_MF.ID_SECTIE%TYPE,
|
|
v_id_lucrare IN IMOB_LISTA_MF.ID_LUCRARE%TYPE,
|
|
v_id_sucursala IN IMOB_LISTA_MF.ID_SUCURSALA%TYPE,
|
|
v_id_util IN IMOB_LISTA_MF.ID_UTIL%TYPE,
|
|
v_an IN IMOB_LISTA_MF.AN%TYPE,
|
|
v_luna IN IMOB_LISTA_MF.LUNA%TYPE,
|
|
v_an_exp IN IMOB_LISTA_MF.AN%TYPE,
|
|
v_luna_exp IN IMOB_LISTA_MF.LUNA%TYPE,
|
|
v_amort_max_deductibil in IMOB_LISTA_MF.AMORT_MAX_DEDUCTIBIL%TYPE) is
|
|
|
|
lnAnMin IMOB_LISTA_MF.AN%TYPE;
|
|
lnLunaMin IMOB_LISTA_MF.LUNA%TYPE;
|
|
lnIdListaMax IMOB_LISTA_MF.ID_LISTA_MF%TYPE;
|
|
lnFoundMin NUMBER(1) := 1;
|
|
lnFoundMax NUMBER(1) := 1;
|
|
|
|
lnAn IMOB_LISTA_MF.AN%TYPE := v_an;
|
|
lnLuna IMOB_LISTA_MF.LUNA%TYPE := v_luna;
|
|
lnAnExp IMOB_LISTA_MF.AN%TYPE := v_an_exp;
|
|
lnLunaExp IMOB_LISTA_MF.LUNA%TYPE := v_luna_exp;
|
|
|
|
ldDataInc DATE;
|
|
ldDataExp DATE;
|
|
ldDataExpPerAnt DATE;
|
|
ldDataIncPerUrm DATE;
|
|
v_rowcount number;
|
|
|
|
begin
|
|
-- pinfo('id_mf ' || v_id_mf || ' an ' || v_an || ' luna ' || v_luna || ' id_lucrare' || v_id_lucrare, 'modifica_lista_mf');
|
|
|
|
-- daca mai exista luna in imob_lista_mf, modific datele pentru luna operatiei
|
|
MERGE INTO IMOB_LISTA_MF
|
|
USING DUAL
|
|
ON (AN = v_an and LUNA = v_luna and ID_MF = v_id_mf)
|
|
WHEN MATCHED THEN
|
|
UPDATE
|
|
SET NR_INVENTAR = v_nr_inventar,
|
|
id_lucrare = v_id_lucrare,
|
|
id_gestiune = v_id_gestiune,
|
|
id_sectie = v_id_sectie,
|
|
id_responsabil = v_id_responsabil,
|
|
id_sucursala = v_id_sucursala,
|
|
dns_luni = v_dns_luni,
|
|
cod_mf = v_Cod_mf,
|
|
cont = v_cont,
|
|
acont = v_acont,
|
|
id_util = v_id_util,
|
|
amort_max_deductibil = v_amort_max_deductibil;
|
|
|
|
-- DACA EXISTA LUNA OPERATIEI TREBUIE DOAR SA MODIFIC DATELE
|
|
-- pinfo('SQL%ROWCOUNT ' || SQL%ROWCOUNT, 'modifica_lista_mf');
|
|
v_rowcount := SQL%ROWCOUNT;
|
|
IF v_rowcount > 0 THEN
|
|
GOTO END_PROC;
|
|
END IF;
|
|
|
|
-- ALTFEL, TREBUIE SA MODIFIC DATA DE EXPIRARE PENTRU OPERATIA PRECEDENTA SI, EVENTUAL, DATA DE EXPIRARARE A OPERATIEI
|
|
|
|
-- OPERATIA PRECEDENTA
|
|
-- selectez luna maxima mai mica decat luna operatiei
|
|
BEGIN
|
|
select ID_LISTA_MF
|
|
INTO lnIdListaMax
|
|
from (SELECT ID_LISTA_MF, AN, LUNA, MAXLUNA
|
|
FROM (SELECT ID_LISTA_MF,
|
|
AN,
|
|
LUNA,
|
|
(SELECT MAX(AN * 12 + LUNA)
|
|
FROM IMOB_LISTA_MF
|
|
WHERE ID_MF = v_id_mf
|
|
AND AN * 12 + LUNA < v_an * 12 + v_luna) AS MAXLUNA
|
|
FROM IMOB_LISTA_MF
|
|
WHERE ID_MF = v_id_mf)
|
|
where an * 12 + luna = MAXLUNA);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
lnFoundMax := 0;
|
|
END;
|
|
|
|
-- daca am gasit operatia precedenta
|
|
-- modific data de expirare a operatiei precedente cu luna operatiei - 1
|
|
IF lnFoundMax = 1 THEN
|
|
ldDataInc := TO_DATE(LPAD(TO_CHAR(v_an), 4, '0') ||
|
|
LPAD(TO_CHAR(v_luna), 2, '0') || '01',
|
|
'YYYYMMDD');
|
|
ldDataExpPerAnt := ADD_MONTHS(ldDataInc, -1);
|
|
UPDATE IMOB_LISTA_MF
|
|
SET AN_EXP = EXTRACT(YEAR FROM ldDataExpPerAnt),
|
|
LUNA_EXP = EXTRACT(MONTH FROM ldDataExpPerAnt)
|
|
WHERE ID_LISTA_MF = lnIdListaMax;
|
|
END IF;
|
|
|
|
-- OPERATIA URMATOARE
|
|
-- selectez luna minima mai mare decat luna operatiei
|
|
BEGIN
|
|
select an, luna
|
|
INTO lnAnMin, lnLunaMin
|
|
from (SELECT ID_LISTA_MF, AN, LUNA, MINLUNA
|
|
FROM (SELECT ID_LISTA_MF,
|
|
AN,
|
|
LUNA,
|
|
(SELECT MIN(AN * 12 + LUNA)
|
|
FROM IMOB_LISTA_MF
|
|
WHERE ID_MF = v_id_mf
|
|
AND AN * 12 + LUNA > v_an * 12 + v_luna) AS MINLUNA
|
|
FROM IMOB_LISTA_MF
|
|
WHERE ID_MF = v_id_mf)
|
|
WHERE an * 12 + luna = MINLUNA);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
lnFoundMin := 0;
|
|
END;
|
|
|
|
-- daca am gasit operatia urmatoare, data de expirare a operatiei devine luna de inceput a operatie urmatoare - 1
|
|
-- daca nu am gasit - luna expirarii = luna de inceput
|
|
IF lnFoundMin = 1 THEN
|
|
ldDataIncPerUrm := TO_DATE(LPAD(TO_CHAR(lnAnMin), 4, '0') ||
|
|
LPAD(TO_CHAR(lnLunaMin), 2, '0') || '01',
|
|
'YYYYMMDD');
|
|
ldDataExp := ADD_MONTHS(ldDataIncPerUrm, -1);
|
|
lnAnExp := EXTRACT(YEAR FROM ldDataExp);
|
|
lnLunaExp := EXTRACT(MONTH FROM ldDataExp);
|
|
ELSE
|
|
lnAnExp := lnAn;
|
|
lnLunaExp := lnLuna;
|
|
END IF;
|
|
|
|
INSERT INTO IMOB_LISTA_MF
|
|
(ID_MF,
|
|
DNS_LUNI,
|
|
NR_INVENTAR,
|
|
COD_MF,
|
|
CONT,
|
|
ACONT,
|
|
ID_LUCRARE,
|
|
ID_GESTIUNE,
|
|
ID_SECTIE,
|
|
ID_RESPONSABIL,
|
|
ID_SUCURSALA,
|
|
ID_UTIL,
|
|
AN,
|
|
LUNA,
|
|
AN_EXP,
|
|
LUNA_EXP,
|
|
AMORT_MAX_DEDUCTIBIL)
|
|
VALUES
|
|
(v_id_mf,
|
|
v_dns_luni,
|
|
v_nr_inventar,
|
|
v_cod_mf,
|
|
v_cont,
|
|
v_acont,
|
|
v_id_lucrare,
|
|
v_id_gestiune,
|
|
v_id_sectie,
|
|
v_id_responsabil,
|
|
v_id_sucursala,
|
|
v_id_util,
|
|
lnAn,
|
|
lnLuna,
|
|
lnAnExp,
|
|
lnLunaExp,
|
|
v_amort_max_deductibil);
|
|
|
|
<<END_PROC>>
|
|
NULL;
|
|
end modifica_lista_mf;
|
|
-----------------------------------------------------------------------------------
|
|
procedure adauga_buncapital(v_id_mf in imob_bunuricapital.id_mf%type,
|
|
v_nrdoc in imob_bunuricapital.nrdoc%type,
|
|
v_datadoc in imob_bunuricapital.datadoc%type,
|
|
v_bazatva in imob_bunuricapital.bazatva%type,
|
|
v_tva in imob_bunuricapital.tva%type,
|
|
v_id_cota_tva in imob_bunuricapital.id_cota_tva%type,
|
|
v_ajustare in imob_bunuricapital.ajustare%type,
|
|
v_id_tip_operatie in imob_bunuricapital.id_tip_operatie%type,
|
|
v_tvaDatorat in imob_bunuricapital.tva_datorat%type,
|
|
v_prorataTVA in imob_bunuricapital.proratatva%type) is
|
|
begin
|
|
insert into imob_bunuricapital
|
|
(id_mf,
|
|
nrdoc,
|
|
datadoc,
|
|
bazatva,
|
|
tva,
|
|
ajustare,
|
|
id_cota_tva,
|
|
id_util,
|
|
id_tip_operatie,
|
|
tva_datorat,
|
|
prorataTVA)
|
|
values
|
|
(v_id_mf,
|
|
v_nrdoc,
|
|
v_datadoc,
|
|
v_bazatva,
|
|
v_tva,
|
|
v_ajustare,
|
|
v_id_cota_tva,
|
|
pack_sesiune.get_id_util(),
|
|
v_id_tip_operatie,
|
|
v_tvadatorat,
|
|
v_prorataTVA);
|
|
|
|
end adauga_buncapital;
|
|
-----------------------------------------------------------------------------------
|
|
procedure modifica_buncapital(v_id_mf in imob_bunuricapital.id_mf%type,
|
|
v_nrdoc in imob_bunuricapital.nrdoc%type,
|
|
v_datadoc in imob_bunuricapital.datadoc%type,
|
|
v_bazatva in imob_bunuricapital.bazatva%type,
|
|
v_tva in imob_bunuricapital.tva%type,
|
|
v_id_cota_tva in imob_bunuricapital.id_cota_tva%type,
|
|
v_ajustare in imob_bunuricapital.ajustare%type,
|
|
v_id_tip_operatie in imob_bunuricapital.id_tip_operatie%type,
|
|
v_tvaDatorat in imob_bunuricapital.tva_datorat%type,
|
|
v_id_regbc in imob_bunuricapital.id_regbc%type,
|
|
v_prorataTva in imob_bunuricapital.proratatva%type) is
|
|
begin
|
|
update imob_bunuricapital
|
|
set id_mf = v_id_mf,
|
|
nrdoc = v_nrdoc,
|
|
datadoc = v_datadoc,
|
|
bazatva = v_bazatva,
|
|
tva = v_tva,
|
|
id_cota_tva = v_id_cota_tva,
|
|
ajustare = v_ajustare,
|
|
id_tip_operatie = v_id_tip_operatie,
|
|
tva_Datorat = v_tvaDatorat,
|
|
proratatva = v_prorataTva
|
|
where id_regbc = v_id_regBc;
|
|
|
|
end modifica_buncapital;
|
|
-------------------------------------------------------------------------------------
|
|
|
|
procedure sterge_buncapital(v_id_regbc in imob_bunuricapital.id_regbc%type) is
|
|
begin
|
|
update imob_bunuricapital set sters = 1 where id_regbc = v_id_regbc;
|
|
end sterge_buncapital;
|
|
|
|
-------------------------------------------------------------------------------------------
|
|
/*
|
|
Caut daca mai exista numarul de inventar
|
|
*/
|
|
|
|
FUNCTION verifica_nr_inventar(v_nr_inventar IN IMOB_LISTA_MF.NR_INVENTAR%TYPE,
|
|
v_data IN DATE,
|
|
v_id_tip_imobilizare IN NUMBER DEFAULT 1)
|
|
RETURN NUMBER IS
|
|
lnNrDuplicate NUMBER;
|
|
BEGIN
|
|
pack_imob.setlunacurenta(v_data);
|
|
|
|
SELECT COUNT(*)
|
|
INTO lnNrDuplicate
|
|
FROM IMOB_VSITUATIE_LUNARA t
|
|
WHERE t.id_tip_imobilizare = v_id_tip_imobilizare
|
|
AND t.nr_inventar = v_nr_inventar;
|
|
|
|
RETURN lnNrDuplicate;
|
|
END verifica_nr_inventar;
|
|
-------------------------------------------------------------------------------------
|
|
/* begin
|
|
setlunacurenta(to_date(pack_sesiune.getan() || '/' ||
|
|
pack_sesiune.getluna(),
|
|
'YYYY/MM'));*/
|
|
|
|
END pack_imob;
|
|
/
|