Files
ROMFASTSQL/oracle/roa-romconstruct/PACK_CONTAFIN.pck
Marius 1da4c2347c Fix Oracle 10g compatibility in PACK_CONTAFIN SCRIE_JC_2007 procedure
Replace FORALL bulk operations with FOR loops to avoid PLS-00436 error
on Oracle 10.2.0.5. The older Oracle version does not support referencing
record fields from collection in FORALL statements.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 13:06:17 +02:00

8991 lines
371 KiB
Plaintext

CREATE OR REPLACE PACKAGE "PACK_CONTAFIN" is
-- Author : GEORGIANA.VOICU
-- Created : 14.10.2004 11:35:49
-- Purpose : SCRIE,STERGE DIN FISIERE
-- Public type declarations
--type <TypeName> is <Datatype>;
-- Public constant declarations
--<ConstantName> constant <Datatype> := <Value>;
-- Public variable declarations
--<VariableName> <Datatype>;
-- Public function and procedure declarations
--function <FunctionName>(<Parameter> <Datatype>) return <Datatype>;
type tip_ref_cursor is ref cursor;
nCod act_temp.cod%Type;
dDataOra act_temp.dataora%Type;
nIdFact act_temp.id_fact%Type;
nIdUtil act_temp.id_util%Type;
nAnRon act_temp.an%Type;
nLunaRon act_temp.luna%Type;
nScriere number(1) := 0;
nRefacere number(1) := 1;
nStergere number(1) := 2;
nIdSucursala act_temp.id_sucursala%type;
nIdFirma act_temp.id_sucursala%type;
nSuprascriereCod number(1) := 1;
nSuprascriereAnLuna number(1) := 1;
nDateCompletate number(1) := 0; -- se suprascriu cod, an, luna
nDateCompletateCod number(1) := 1; -- nu se suprascrie cod
nDateCompletateCodAnLuna number(1) := 2; -- nu se suprascrie cod, an, luna
nScriereStoc number(1) := 1; -- se scrie in stoc, rul
nTipValidareAutomata number(1) := 1;
nTipValidareRefacere number(1) := 2;
nTipValidareManuala number(1) := 3;
FUNCTION GENEREAZA_COD(V_GCS VARCHAR2) RETURN ACT_TEMP.COD%TYPE;
PROCEDURE SET_COD(V_GCS IN VARCHAR2);
FUNCTION GET_COD return ACT_TEMP.COD%TYPE;
PROCEDURE SET_ID_SUCURSALA(tnIdSucursala act_temp.id_sucursala%type);
FUNCTION GET_ID_SUCURSALA RETURN act_temp.id_sucursala%type;
PROCEDURE SET_ID_FIRMA(tnIdFirma act_temp.id_sucursala%type);
FUNCTION GET_ID_FIRMA RETURN act_temp.id_sucursala%type;
/* PROCEDURE SET_IDFACT(tdDataAct ACT_TEMP.DATAACT%TYPE,
tcSerie_Act ACT_TEMP.SERIE_ACT%TYPE,
tnNrAct ACT_TEMP.NRACT%TYPE,
tnId_Ctr ACT_TEMP.ID_CTR%TYPE);*/
PROCEDURE SET_IDFACT(V_GCS IN VARCHAR2);
FUNCTION GET_IDFACT return ACT_TEMP.ID_FACT%TYPE;
PROCEDURE SET_DATAORA(V_DATAORA IN ACT_TEMP.DATAORA%TYPE);
FUNCTION GET_DATAORA RETURN ACT_TEMP.DATAORA%TYPE;
PROCEDURE SET_IDUTIL(tnIdUtil act_temp.id_util%Type);
FUNCTION GET_IDUTIL RETURN ACT_TEMP.ID_UTIL%TYPE;
PROCEDURE SET_DATA_RON(V_GCS VARCHAR2);
FUNCTION GET_ANRON RETURN ACT_TEMP.AN%TYPE;
FUNCTION GET_LUNARON RETURN ACT_TEMP.LUNA%TYPE;
function getCotaTVAStandard(V_LUNA IN NUMBER, V_AN IN NUMBER) return number;
PROCEDURE SETARE_FACTURA(tcS VARCHAR2); --RETURN NUMBER;
FUNCTION LISTA_CAMPURI(V_GCS VARCHAR2, tcTableName IN VARCHAR2)
RETURN VARCHAR2;
FUNCTION SCRIE_IN_FISIERE RETURN NUMBER;
PROCEDURE SCRIE_IN_ACT(V_GCS VARCHAR2);
FUNCTION GETVALIDARE(tcTabel tabele_validare.tabel%type DEFAULT NULL,
tnAn tabele_validare.an%type DEFAULT NULL,
tnLuna tabele_validare.luna%type DEFAULT NULL,
tcCont tabele_validare.cont%type DEFAULT NULL,
tnIdGestiune tabele_validare.id_gestiune%type DEFAULT NULL)
RETURN NUMBER;
PROCEDURE VALIDARE_INVALIDARE(tnTipValidare tabele_validare.tip_validare%type DEFAULT NULL,
tcTabel tabele_validare.tabel%type DEFAULT NULL,
tnAn tabele_validare.an%type DEFAULT NULL,
tnLuna tabele_validare.luna%type DEFAULT NULL,
tcCont tabele_validare.cont%type DEFAULT NULL,
tnIdGestiune tabele_validare.id_gestiune%type DEFAULT NULL);
PROCEDURE VALIDAREINREGISTRARI(tnAn IN act.an%type,
tnLuna act.luna%type,
tnIdUtil act.id_Utilv%type,
tnCod act.cod%type);
procedure EXECUTA_SCRIE_TVA(V_GCS VARCHAR2,
tcNumeTabel varchar2,
tnProcTvaStR number,
tnProcTvaRedR number,
tcCorespDTva varchar2,
tcCorespDBaza varchar2,
tcCorespCTva varchar2,
tcCorespCBaza varchar2,
tcContTva varchar2,
tcExceptii varchar2,
tnAn number,
tnLuna number,
tnScrie number);
procedure SCRIE2_TVA(V_GCS VARCHAR2,
tcNumeTabel varchar2,
tnProcTvaStR number,
tnProcTvaRedR number,
tcCorespDTva varchar2,
tcCorespDBaza varchar2,
tcCorespCTva varchar2,
tcCorespCBaza varchar2,
tcContTva varchar2,
tcExceptii varchar2,
tnAn number,
tnLuna number,
tnScrie number,
tnIdFact number,
tnNrAct number,
tdDataAct date);
PROCEDURE STERGE_DIN_ACT(V_GCS VARCHAR2,
tnAn in number,
tnLuna in number,
tnCod in number,
tnId_utils in number,
tnTip IN NUMBER);
PROCEDURE STERGE_DIN_RUL(V_GCS VARCHAR2,
tnAn in number,
tnLuna in number,
tnCod in number,
tnId_utils in number);
PROCEDURE STERGE_DIN_RUL_OBINV(V_GCS VARCHAR2,
tnAn in number,
tnLuna in number,
tnCod in number,
tnId_utils in number);
PROCEDURE SCRIE_IN_RUL(tcS IN VARCHAR2);
PROCEDURE SCRIE_IN_RUL_OBINV(tcS IN VARCHAR2);
PROCEDURE SCRIE_IN_STOC_OLD(tcS IN VARCHAR2,
tnAn in number,
tnLuna in number,
tnScrie number,
tcTabel in varchar2,
tcIdTabel in varchar2,
tcCondSpec in varchar2);
PROCEDURE SCRIE_IN_STOC(tcS IN VARCHAR2,
tnAn in number,
tnLuna in number,
tnScrie number,
tcTabel in varchar2,
tcIdTabel in varchar2,
tcCondSpec in varchar2);
PROCEDURE SCRIE_IN_STOC(tnAn in number,
tnLuna in number,
tnScrie number,
tnIdGestiune IN RUL.ID_GESTIUNE%TYPE DEFAULT NULL);
PROCEDURE SCRIE_IN_STOC_OBINV_OLD(tcS IN VARCHAR2,
tnAn in number,
tnLuna in number,
tnScrie number,
tcTabel in varchar2,
tcIdTabel in varchar2,
tcCondSpec in varchar2);
PROCEDURE SCRIE_IN_STOC_OBINV(tcS IN VARCHAR2,
tnAn in number,
tnLuna in number,
tnScrie number,
tcTabel in varchar2,
tcIdTabel in varchar2,
tcCondSpec in varchar2);
PROCEDURE SCRIE_IN_STOC_OBINV(tnAn in number,
tnLuna in number,
tnScrie number);
PROCEDURE set_suprascriereCod(V_VALOARE IN NUMBER);
PROCEDURE set_suprascriereAnLuna(V_VALOARE IN NUMBER);
PROCEDURE RESET_VARIABLES;
procedure SCRIE_JV_2007(tnAn JV2007.AN%TYPE,
tnLuna JV2007.LUNA%TYPE,
tnScrie number);
procedure SCRIE_JC_2007(tnAn JC2007.AN%TYPE,
tnLuna JC2007.LUNA%TYPE,
tnScrie number);
Procedure COMPLETEAZA_JV_2007(tnAn IN JV2007.AN%TYPE,
tnLuna IN JV2007.LUNA%TYPE,
tcTabelSursa IN VARCHAR2,
tcCondSucursala IN VARCHAR2);
Procedure COMPLETEAZA_JC_2007(tnAn IN JC2007.AN%TYPE,
tnLuna IN JC2007.LUNA%TYPE,
tcTabelSursa IN VARCHAR2,
tcCondSucursala IN VARCHAR2);
Procedure COMPLETEAZA_IREG_PARTENERI(tnAn in IREG_PARTENERI.AN%TYPE,
tnLuna in IREG_PARTENERI.LUNA%TYPE,
tcTabelSursa IN VARCHAR2,
tcCondSucursala IN VARCHAR2,
tcCondInPlus IN VARCHAR2,
tcCont IN VARCHAR2,
tnIdPart IN NUMBER);
FUNCTION VERIFICA_NOTE_CONTABILE(tlVerificAnalitic IN NUMBER) RETURN NUMBER;
PROCEDURE SCRIE_IN_BALANTA(tcS in varchar2,
tnAn in BAL.AN%TYPE,
tnLuna in BAL.LUNA%TYPE,
tnScrie in number);
PROCEDURE SCRIE_IN_BALANTA_PARTENERI(tcs in varchar2,
tnAn in BALANTA_PARTENERI.AN%TYPE,
tnLuna in BALANTA_PARTENERI.LUNA%TYPE,
tcCont in BALANTA_PARTENERI.CONT%TYPE,
tnScrie in number,
tnIdPart in BALANTA_PARTENERI.ID_PART%TYPE DEFAULT NULL);
PROCEDURE SCRIE_IN_IREG_PARTENERI(tnAn in IREG_PARTENERI.AN%TYPE,
tnLuna in IREG_PARTENERI.LUNA%TYPE,
tcCont in IREG_PARTENERI.CONT%TYPE,
tnScrie in number,
tnIdPart in IREG_PARTENERI.ID_PART%TYPE DEFAULT NULL);
PROCEDURE EXECUTA_SCRIE_IN_IREG(tcS VARCHAR2,
tnAn in number,
tnLuna in number,
tcCont in varchar2,
tnScrie number,
tnVenChelt number);
PROCEDURE STERGE_TEMP_ACTRUL;
Procedure INIT_SCRIERE_ACT_RUL_LOCAL(tnIdUtil SYN_UTILIZATORI.ID_UTIL%TYPE,
tnAn ACT.AN%TYPE,
tnLuna ACT.LUNA%TYPE,
tnSuprascriereCod NUMBER,
tnScrieSterge NUMBER,
tnIdSucursala ACT.ID_SUCURSALA%TYPE);
PROCEDURE INITIALIZEAZA_SCRIERE_ACT_RUL(tnIdUtil ACT.ID_UTIL%TYPE,
tdDataOra ACT.DATAORA%TYPE,
tnAn ACT.AN%TYPE,
tnLuna ACT.LUNA%TYPE,
tnSuprascriereCod NUMBER,
tnSuprascriereAnLuna NUMBER,
tnScrieSterge NUMBER,
tnIdSucursala ACT.ID_SUCURSALA%TYPE);
procedure sterge_document(tnCod in number,
tnAn in number,
tnLuna in number,
tnIdUtil in number);
procedure sterge_document(V_cod in number);
procedure finalizeaza_document_verif(tnAn IN NUMBER,
tnLuna IN NUMBER,
tnScrieSterge IN number,
tnDateCompletate IN number,
tnScadereStoc IN number,
tnCod IN ACT.COD%type,
tnIdUtil IN ACT.ID_UTIL%TYPE,
tdDataOra IN ACT.DATAORA%TYPE,
tnIdSucursala IN ACT.ID_SUCURSALA%TYPE,
tcSirModificariAcont IN VARCHAR2,
tcSirModificariPart IN VARCHAR2,
CURSOR_VERIFICARE OUT PACK_TYPES.tip_cursor);
procedure finalizeaza_document_compl(V_SIR_MODIFICARI_ACONT IN VARCHAR2,
V_SIR_MODIFICARI_PART IN VARCHAR2);
PROCEDURE cursor_verificare(V_CURSOR_VERIFICARE OUT PACK_TYPES.tip_cursor);
Procedure final_scriere_act_rul_local(tnIdUtil SYN_UTILIZATORI.ID_UTIL%TYPE,
tnAn ACT.AN%TYPE,
tnLuna ACT.LUNA%TYPE,
tnCod ACT.COD%TYPE,
tnScrieSterge NUMBER,
tnModificareNota NUMBER,
tcMesajRefacereNota OUT VARCHAR2);
procedure finalizeaza_scriere_act_rul;
procedure finalizeaza_scriere_act_rul(tnIdUtil SYN_UTILIZATORI.ID_UTIL%TYPE,
tnCod ACT.COD%TYPE,
tnScrieSterge NUMBER, -- 0 = scriere, 1 = refacere, 2 = stergere
tnModificareNota NUMBER, -- 0 = modificare, 1 = stergere
tnScrieCumpVanz NUMBER, -- 0 = cump + vanz, 1 = cumparari, 2 = vanzari
tcMesajRefacereNota OUT VARCHAR2);
PROCEDURE finalizeaza_modificare_nota(tnLuna IN NUMBER,
tnAn IN NUMBER,
tdDataOra IN DATE,
tnIdSet IN NUMBER,
tnCod IN NUMBER,
tnIdFact IN NUMBER,
tnIdFactD IN NUMBER,
tnIdUtil IN NUMBER);
PROCEDURE finalizeaza_stergere_nota(tnLuna IN NUMBER,
tnAn IN NUMBER,
tdDataOra IN DATE,
tnIdSet IN NUMBER,
tnCod IN NUMBER,
tnIdFact IN NUMBER,
tnIdFactD IN NUMBER,
tnIdUtil IN NUMBER);
PROCEDURE completeaza_analitice;
PROCEDURE completeaza_analitice_rul;
PROCEDURE completeaza_parteneri_gestiuni;
PROCEDURE sterge_analitice_gresite;
PROCEDURE sterge_analitice_gresite_rul;
FUNCTION verifica_id_documente(lcSirIdFact IN VARCHAR2) RETURN VARCHAR2;
function GetRulajAuxiliarFurnizor(tnIdFurnizor rul_auxiliar.id_furnizor%type)
return rul_auxiliar.id_rul_aux%type;
procedure GetRulajAuxiliarFurnizor(tnIdFurnizor IN rul_auxiliar.id_furnizor%type,
tnIdRulAux OUT rul_auxiliar.id_rul_aux%type);
end PACK_CONTAFIN;
/
CREATE OR REPLACE PACKAGE BODY "PACK_CONTAFIN" is
-- 11.02.2010
-- marius.mutu
-- scrie_in_ireg_parteneri
-- nu se mai ia in considerare la selectia de facturi nota 419 = 4111 cu documente pereche (regularizare avans)
-- nota se ia in considerare la incasari/plati
-- 23.02.2010
-- marius.mutu
-- scrie_in_rul, scrie_in_rul_obinv
-- nu se mai suprascrie id_sucursala pe inregistrarile deja completate
-- 11.03.2010
-- marius.mutu
-- scrie_in_ireg_parteneri
-- la incasari/plati se lua max(curs) pentru reevaluarea soldurilor in valuta (id_set 90501)
-- am considerat cursul 0 pentru operatiile <> 90501, cursul din 90501 putea sa fie mai mic decat cursul de pe o operatie din luna
-- 17.05.2010
-- marius.mutu
-- REFAC_STOC, SCRIE_IN_STOC - REFACERE PENTRU FIECARE GESTIUNE IN PARTE
-- 15.07.2010
-- marius.mutu
-- SCRIE_JV_2007, SCRIE_JC_2007 - COTA TVA 24%
-- 30.06.2011
-- marius.mutu
-- SCRIE_IN_BALANTA_PARTENERI, SCRIE_IN_IREG_PARTENERI - parametru ID_PART (scriere/refacere pentru un singur partener)
-- 08.11.2012
-- marius.mutu
-- SCRIE_JC_2007
-- s-a introdus coloana ROTN (limitare deducere TVA 4426 id_jtva_coloana = 1001)
-- partenerul pentru nota x = 4426 id_jtva_coloana = 1001, introdusa in afara pachetului de note de factura achizitie,
-- se ia din factura cu max(id_part) dupa nract, dataact, id_fdoc in loc de nract, dataact, id_fdoc, cod
-- 12.02.2013
-- marius.mutu
-- SCRIE_JV_2007, SCRIE_JC_2007
-- TVA_INCASARE - CORECTIE SUMA PLATITA
-- 13.02.2013
-- marius.mutu
-- SCRIE_IN_IREG_PARTENERI
-- LA INREGISTRAREA 408 AM ID_JTVA_COLOANA RO09BFB, RO09BVB...., IAR LA REGULARIZARE 408 POT SA AM RO09NB (TVA INCASARE NEEXIGIBIL)
-- SI NU SE MAI PUPA INREGISTRARILE SI DUPA ID_JTVA_COLOANA
-- INCERC SA LE PUP DOAR DUPA PROC_TVA (STIU CA POATE SA SARA IN AER) :)
-- 26.03.2013
-- marius.mutu
-- SCRIE_IN_IREG_PARTENERI
-- LA INREGISTRAREA 408 POT SA AM O 2 REGULARIZARI 408 = 401 CU ACELASI PROC_TVA, DAR ID_JTVA_COLOANA DIFERITE (EX: ACH INT 24, ACH INT NEEX 24)
-- NU STIU DE CE AR EXISTA SITUATIA, DAR S-A INTAMPLAT
-- DA EROARE LA MERGE (NU SE POATE OBTINE UN SET DE RANDURI STABILE IN TABELA SURSA)
-- AM FACUT GRUPAREA DOAR DUPA PROC_TVA, IAR ID_JTVA_COLOANA IL FAC MAX(ID_JTVA_COLOANA)
-- 18.04.2013
-- marius.mutu
-- + procedura finalizeaza_document_verif (initializeaza_act_rul + finalizeaza_document + cursor_verificare)
-- + cursor_verificare
-- + completeaza_analitice
-- + completeaza_analitice_rul
-- + completeaza_parteneri_gestiuni
-- + sterge_analitice_gresite
-- + sterge_analitice_gresite_rul
-- 09.08.2013
-- marius.mutu
-- STERGE_DIN_ACT
-- Nu mai sterg din DOCUMENTE
-- Cand se sterge o plata cu o inregistrare TVA incasare (ID_FACT TVA INCASARE = ID_FACT FACTURA ORIGINALA)
-- se marcheaza documentul sters si nu se mai pot face plati ulterioare pe factura respectiva
-- mesaj: Documentul nu exista in baza de date
-- 12.11.2013
-- marius.mutu
-- STERGE_DIN_ACT - nu se sterg din documente id_set 90501 reevaluare sold in valuta la 31.LL
-- 05.12.2013
-- marius.mutu
-- SCRIE_IN_STOC - s-a reparat datain, dataout - lua max(r.dataact) in loc de max(r.datain) si max(r.dataout)
-- 27.02.2014
-- marius.mutu
-- SCRIE_IN_ACT - nu completez ID_FACTD, ID_FACTC cu ID_FACT-ul documentului curent
-- la factura + chitanta cu acelasi NRACT, se completa ID_FACTC cu ID_FACT chitanta
-- 12.03.2014
-- marius.atanasiu
-- SCRIE_IN_ACT : daca am completat id_factd / id_factc pe o inregistrare noua ( cu id_act = -1 ),
-- il suprascriu in caz ca gasesc un alt document cu acelasi numar, dar cu serie document diferita
-- 04.06.2014
-- marius.mutu
-- SCRIE_JC_2007 : s-a introdus contul 4511,462 in lista conturilor creditoare pentru regularizarea 408 = 401/404/4511/462
-- 05.06.2014
-- marius.mutu
-- SCRIE_JV_2007 : s-a introdus contul 461,4511,4118 in lista conturilor creditoare pentru regularizarea 4111/461/4511/4118 = 418
-- 26.11.2014
-- marius.mutu
-- SET_DATA_RON - tratare no_data_found
-- 17.04.2015
-- marius.mutu
-- finalizeaza_scriere_act_rul: Optiune SETURI_SITUATII_NU_SCRIE: LISTA ID_SET PENTRU CARE NU SE APELEAZA SCRIEREA IN SITUATII (25052|BV,BP,IP,TVA,STOC)
-- 08.10.2015
-- marius.mutu
-- scrie_jc2007, scrie_jv2007 -- nu se iau in considerare operatiile 10621, 10622 - compensari 419, 409
-- 15.12.2015
-- marius.mutu
-- getCotaTVAStandard - 20% din 01/2016
-- SCRIE_JC_2007, SCRIE_JV_2007 cota tva 20%
-- 11.03.2016
-- marius.mutu
-- SCRIE_JV_2007 - corectie JV2007.RO5NB/RO5NT - se suprascria eronat cu RO5B/RO5NT din luna curenta in loc de RO5NB/RO5NT, pentru facturile preluate din luna precedenta
-- 21.04.2016
-- marius.mutu
-- completeaza analitice
-- La vanzarea de marfuri la pret de vanzare 4428 = 371 are completata ID_GESTOUT
-- functioneaza pentru contul 371 pe credit, dar nu pentru contul 4428 pe debit
-- mai repet o data completarea analiticelor si cu ID_GESTIN/ID_GESTOUT pentru analiticele ramase necompletate
-- 16.06.2016
-- marius.mutu
-- + VALIDARE_INVALIDARE - intretinere invalidare tabel (BAL, BALANTA_PARTENERI, IREG_PARTENERI, JV2007, JC2007, +STOC, + STOC_OBINV) an, luna, cont
-- pentru a se da refaceri/redeschideri automate doar la situatiile invalidate
-- ex: la CONPRESS se face redeschidere de luna la ultimele 4 luni deschise. Nu este nevoie de refaceri la toate conturile si la toate 4 lunile daca nu s-a modificat nimic in lunile anterioare
-- + GETVALIDARE - intoarce situatia validarii unei luni
-- 11.07.2016
-- marius.mutu
-- VALIDARE_INVALIDARE - se invalideaza si situatiile din luna operatiei, daca ID_SET nu se scrie in anumite tabele (bv, bp, ip, tva), ex: bon fiscal conpress
-- daca nu se marcheaza situatiile invalidate, nu se refac, desi nu sunt scrise
-- 27.10.2016
-- marius.muut
-- COMPLETEAZA_JC_2007, COMPLETEAZA_JV_2007, SCRIE_JC_2007, SCRIE_JV_2007 + DATAIREG
-- 03.11.2016
-- marius.mutu
-- SCRIE_JC_2007, SCRIE_JV_2007 - DOCUMENTE.DATAIREG
-- 29.12.2016
-- marius.mutu
-- getCotaTVAStandard - 19% din 01/2017
-- SCRIE_JC_2007, SCRIE_JV_2007 - TVA NEEX. 19% de la 01/2017
-- 25.01.2017
-- marius.mutu
-- SCRIE_JC_2007 +CE19SB, CE19ST
-- 07.02.2017
-- marius.mutu
-- SCRIE_JC_2007, SCRIE_JV_2007 - ID_FDOC act/documente - si dupa coloanele id_set, serie_act
-- s-a intamplat sa am tva exigibilizat la plata cu acelasi nr. doc si data document ca la factura
-- si sa puna id_fdoc de la nota tva exigibilizat (ordin plata) in loc de factura
-- 09.02.2017
-- marius.mutu
-- scrie_jc_2007 - calcul baza exigibila 19% pentru exigibilizare TVA incasare
-- 23.03.2017
-- marius.mutu
-- scrie_jc_2007 - calcul totctva din regularizare 408 = 401 cu TVA incasare 19%
-- scrie_jv_2007 - calcul totctva din regularizare 4111 = 418 cu TVA incasare si exigibilizare TVA - se scadea TVA de 3 ori
-- 24.06.2017
-- marius.mutu
-- SCRIE_IN_IREG_PARTENERI: ACONT SE IA IN FUNCTIE DE CONTUL DEBITOR-ACTIV/CREDITOR-PASIV + EXCEPTIE
-- NU TRATA CORECT NOTA 462.3 = 462.9. PUNEA ANALITICUL 3 IN LOC DE 9
-- sterge_document. actualizat procedura cu pack_contafin.finalizeaza_stergere_nota
-- pentru folosire in ROAGEST corectie NIR/Bon
-- 28.09.2017
-- marius.mutu
-- SCRIE_IN_RUL
-- Completare RUL.ID_RUL_AUX SI RUL_AUX.ID_FURNIZOR la intrari daca este setata optiunea
-- 06.10.2017
-- marius.mutu
-- + procedure GetRulajAuxiliarFurnizor
-- 11.01.2018
-- marius.mutu
-- STERGE_DIN_ACT - hint IDX_COD
-- 22.05.2018
-- marius.mutu
-- SCRIE_JC_2007: corectare totftvatax pentru 19% regularizare 408=401
-- 20.06.2018
-- marius.mutu
-- SCRIE_JV_2007: corectare totctva pentru 19% regularizare 4111=418
-- 20.07.2018
-- marius.mutu
-- COMPLETEAZA_IREG_PARTENERI - se iau din ireg_parteneri ultima inregistrare din luna < decat luna curenta, ultima luna diferita de luna curenta
-- 23.01.2020
-- marius.mutu
-- STERGE_DIN_ACT - nu mai sterg din documente pentru id_Set = 90021 inchidere 461 = 542, pentru ca are acelasi id_fact ca si 542.id_factc si se sterg id_docurile 542
-- 23.06.2020
-- marius.mutu
-- SCRIE_JC_2007, SCRIE_JV_2007 nvl(scd/scc) la selectia din act.
-- este posibil ca scd/scc sa fie null si sa aiba id_jtva_coloana completat si nu sunt luate in considerare
-- 09.07.2020
-- marius.mutu
-- VALIDARE_INVALIDARE + ID_UTIL_VALIDARE, DATAORA_VALIDARE
-- 08.02.2021
-- SCRIE_IN_STOC_OBINV - se pot scrie si alte conturi in afara de 8039 in stoc_obinv
-- 08.06.2021
-- SCRIE_IN_STOC_OBINV - corectie selectie MERGE GROUP BY nvl(id_rul_aux)
-- 25.01.2022
-- SCRIE_JC_2007 - + xx19ti, ROTN50, ROTN100
-- 06.03.2022
-- SCRIE_JC_2007 + CE19CTB, CE19CTT,CE9CTB, CE9CTT,CE5CTB, CE5CTT, RORTD24..RORTD5
-- SCRIE_JV_2007 + RORTC24..RORTC5
-- 24.03.2022
-- SCRIE_IN_ACT. ID_SUCURSALA, TAXCODE, PAYMENTCODE = NULL IN LOC DE 0
-- 05.04.2022
-- SCRIE_JV_2007. TRATARE REGULARIZARE 461 = 418
-- 18.07.2023
-- SCRIE_IN_STOC_OBINV + stoc_obinv.lot
-- 31.08.2023
-- SCRIE_JV_2007 + WRSCDDAB, WRSCDDCD
-- 12.05.2025
-- SCRIE_JC_2007 + XX19TIB
-- 01.08.2025
-- getCotaTVAStandard - obtinere cota TVA STANDARD din COTE_TVA, COTA 21% din 08/2025
-- 05.08.2025
-- SCRIE_JC_2007, SCRIE_JV_2007 COTE TVA 21% SI 11% din 08/2025
-- 19.08.2025
-- SCRIE_JC_2007 - corectie TOTAL CU TVA
-- 01.09.2025
-- getCotaTVAStandard - corectat pentru deschidere de luna
-- 23.09.2025
-- SCRIE_JC_2007
-- BUG ORACLE XE 11: [Oracle][ODBC][Ora]ORA-00600: cod de eroare intern?, argumente: [13013], [5001], [80451], [21241702], [11], [21241702], [17], [], [], [], [], []
-- Pentru incasarile/platile cu TVA la incasare
-- NO_QUERY_TRANSFORMATION dezactiveaza TOATE transformarile (view merging, subquery unnesting, query rewrite, etc.)
-- 01.10.2025
-- SCRIE_JC_2007
-- NO_QUERY_TRANSFORMATION nu stiu de ce nu facea corect (nu scadea valoarea bazei) in cazul discount-urilor 401 = 767
-- MERGE replaced with FORALL BULK operations to avoid Oracle XE bugs and improve performance
-- 17.10.2025
-- SCRIE_JV_2007 - CORECTARE RO21B nu se scadea TVA regularizare 418
-- 28.10.2025
-- SCRIE_IN_RUL COMPLETARE ID_FACT PENTRU ACHIZITIE DIN IMPORT SI ACHIZITIE+PLATA
-- LA ACHIZITIE DIN IMPORT SE PUNEA MIN(ID_FACT) SI NU ERA INTOTDEAUNA FACTURA DE ACHIZITIE
---------------------------------------------------------------
FUNCTION SCRIE_IN_FISIERE RETURN NUMBER IS
V_RETURN NUMBER := 0;
BEGIN
RETURN V_RETURN;
END;
---------------------------------------------------------------
PROCEDURE SCRIE_IN_ACT(V_GCS VARCHAR2) IS
LN_COD NUMBER(20) := 0;
lnIdFact NUMBER(20) := 0;
LD_DATAORA DATE;
LC_INSERT VARCHAR2(10000) := '';
V_LISTA_CAMPURI VARCHAR2(2000) := '';
lnID_Util act_temp.id_util%Type := 0;
LNAN ACT_TEMP.AN%TYPE;
LNLUNA ACT_TEMP.LUNA%TYPE;
lnAutoValidare number(10) := 0;
lnBlocatROACONT NUMBER(1) := 0;
lnBlocatROAGEST NUMBER(1) := 0;
lnInchis number(1) := 0;
lnIdSucursala act_temp.id_sucursala%type;
lnIdFirma act_temp.id_sucursala%type;
lnTvaIncasare act_temp.tva_incasare%type;
BEGIN
V_LISTA_CAMPURI := pack_contafin.LISTA_CAMPURI(V_GCS, 'ACT');
LN_COD := pack_contafin.GET_COD();
LD_DATAORA := pack_contafin.GET_DATAORA();
LNID_UTIL := pack_contafin.GET_IDUTIL();
LNAN := pack_sesiune.GETAN();
LNLUNA := pack_sesiune.GETLUNA();
lnIdSucursala := pack_contafin.GET_ID_SUCURSALA();
lnIdFirma := pack_contafin.GET_ID_FIRMA();
-- VERIFIC DACA LUNA ESTE BLOCATA
PACK_FIRMA.IS_LUNA_BLOCATA(user,
pack_sesiune.nIdeROACONT,
lnAn,
lnLuna,
lnBlocatROACONT);
-- PACK_FIRMA.IS_LUNA_BLOCATA(tcS, pack_sesiune.nIdeROAGEST, tnAn, tnLuna, lnBlocatROAGEST);
lnInchis := lnBlocatROACONT + lnBlocatROAGEST;
if lnInchis = 1 then
RAISE_APPLICATION_ERROR(-20000, 'LUNA CONTABILA ESTE BLOCATA');
end if;
-- SCRIE IN GCS.ACT_TEMP ---------------------------
PACK_CONTAFIN.SETARE_FACTURA(V_GCS);
-- 12.03.2014 : pun ID_ACT -1 ca sa stiu care sunt inregistrarile noi atunci cand completez id_factd si id_factc
update ACT_TEMP set ID_ACT = -1 where id_fact = -1;
-- cursor crsFacturi is select distinct nract, dataact, dataireg from act_temp where id_fact = -1 ;
-- 03.10.2007
-- MARIUS.MUTU
-- selectez nract, dataact in ordinea fizica (sper!!!!!) - astfel incat id_fact-urile generate sa fie in aceeasi ordine
-- pentru ca min(id_fact) se scrie in rull ( vezi nir din import, factura+chitanta)
/*select distinct nract, dataact
from act_temp
where id_fact = -1*/
-- 12.02.2009
-- MARIUS.ATANASIU
-- am adaugat si id_ctr ca sa pot da id_fact diferit pentru fiecare contract,
-- in caz ca emit o factura pentru mai multe contracte
for itemfact in (select nract,
dataact,
dataireg,
serie_act,
min(rn),
id_ctr,
min(id_ctr2) as id_ctr2,
max(tva_incasare) as tva_incasare,
id_set
from (select nract,
dataact,
dataireg,
serie_act,
rownum as rn,
decode(NVL(id_ctr, 0),
0,
max(id_ctr) over(partition by nract,
dataact,
dataireg,
serie_act),
id_ctr) as id_ctr,
NVL(id_ctr, 0) as id_ctr2,
tva_incasare,
id_set
from act_temp
where id_fact = -1)
group by nract,
dataact,
dataireg,
serie_act,
id_ctr,
id_set
order by 4) loop
pack_contafin.set_idfact(V_GCS);
/* 25.02.2013 : se face cumularea id_fact pe listarea din RC/RJ
PACK_CONTAFIN.SET_IDFACT(itemfact.dataact,
itemfact.serie_act,
itemfact.nract,
itemfact.id_ctr);*/
lnIdFact := get_idFact();
if itemfact.id_ctr = itemfact.id_ctr2 then
update act_temp
set id_fact = lnIdFact
where nract = itemfact.nract
and dataact = itemfact.dataact
and dataireg = itemfact.dataireg
and NVL(serie_act, '+_') = NVL(itemfact.serie_act, '+_')
and id_ctr = itemfact.id_ctr
and id_fact = -1;
-- 12.03.2014 : completez id_factd sau il suprascriu ( in cazul in care l-am completat deja si
-- mai gasesc un document pereche care are serie_act diferita de a documentului )
update act_temp
set id_factd = lnIdFact
where pereched = itemfact.nract
and (id_factd = -1 or
(id_factd <> -1 and id_act = -1 and
NVL(serie_act, '+_') <> NVL(itemfact.serie_act, '+_')))
and id_ctr = itemfact.id_ctr;
-- 12.03.2014 : completez id_factc sau il suprascriu ( in cazul in care l-am completat deja si
-- mai gasesc un document pereche care are serie_act diferita de a documentului )
update act_temp
set id_factc = lnIdFact
where perechec = itemfact.nract
and (id_factc = -1 or
(id_factc <> -1 and id_act = -1 and
NVL(serie_act, '+_') <> NVL(itemfact.serie_act, '+_')))
and id_ctr = itemfact.id_ctr;
else
update act_temp
set id_fact = lnIdFact
where nract = itemfact.nract
and dataact = itemfact.dataact
and dataireg = itemfact.dataireg
and NVL(serie_act, '+_') = NVL(itemfact.serie_act, '+_')
and NVL(id_ctr, 0) in (itemfact.id_ctr, 0)
and id_fact = -1;
-- 12.03.2014 : completez id_factd sau il suprascriu ( in cazul in care l-am completat deja si
-- mai gasesc un document pereche care are serie_act diferita de a documentului )
update act_temp
set id_factd = lnIdFact
where pereched = itemfact.nract
and (id_factd = -1 or
(id_factd <> -1 and id_act = -1 and
NVL(serie_act, '+_') <> NVL(itemfact.serie_act, '+_')))
and NVL(id_ctr, 0) in (itemfact.id_ctr, 0);
-- 12.03.2014 : completez id_factc sau il suprascriu ( in cazul in care l-am completat deja si
-- mai gasesc un document pereche care are serie_act diferita de a documentului )
update act_temp
set id_factc = lnIdFact
where perechec = itemfact.nract
and (id_factc = -1 or
(id_factc <> -1 and id_act = -1 and
NVL(serie_act, '+_') <> NVL(itemfact.serie_act, '+_')))
and NVL(id_ctr, 0) in (itemfact.id_ctr, 0);
end if;
-- SCRIE IN DOCUMENTE
lnTvaIncasare := case
when itemfact.tva_incasare > 0 then
1
else
0
end;
-- 25.02.2013 : am repus insertul pentru ca se face cumularea id_fact pe listarea din RC/RJ
INSERT INTO DOCUMENTE
(ID_DOC,
ID_UTIL,
DATAORA,
TVA_INCASARE,
SERIE_ACT,
NRACT,
DATAACT,
DATAIREG,
ID_CTR,
ID_SET)
VALUES
(lnIdFact,
lnID_Util,
LD_DATAORA,
lnTvaIncasare,
itemfact.serie_act,
itemfact.nract,
itemfact.dataact,
itemfact.dataireg,
decode(itemfact.id_ctr, 0, NULL, itemfact.id_ctr),
itemfact.id_set);
/*
-- modificare ROACONT v 2.4.0 ( 27.12.2012 ) : am adaugat serie_act, nract, dataact
-- modificare 21.02.2013 : am adaugat id_ctr
MERGE INTO DOCUMENTE A
USING (SELECT lnIdFact as ID_DOC,
itemfact.serie_act as SERIE_ACT,
itemfact.nract as NRACT,
itemfact.dataact as DATAACT,
decode(itemfact.id_ctr, 0, NULL, itemfact.id_ctr) AS ID_CTR
FROM DUAL) B
ON (A.ID_DOC = B.ID_DOC)
WHEN NOT MATCHED THEN
INSERT
(ID_DOC,
ID_UTIL,
DATAORA,
TVA_INCASARE,
SERIE_ACT,
NRACT,
DATAACT,
ID_CTR)
VALUES
(B.ID_DOC,
lnID_Util,
LD_DATAORA,
lnTvaIncasare,
B.SERIE_ACT,
B.NRACT,
B.DATAACT,
B.ID_CTR);*/
end loop;
update act_temp set id_factd = 0 where id_factd = -1;
update act_temp set id_factc = 0 where id_factc = -1;
-- modificare 21.02.2013 : daca s-au modificat serie_act/nract/dataact, atunci trebuie sa modific
-- si in tabela DOCUMENTE ; am pus merge-ul inainte de completare id_fact pentru notele cu id_fact = -5
-- ( notele cu 4426-4428/4428-4427 ) deoarece acolo pot sa am serie act/nr.act/data act de la doc. de
-- plata/incasare si id_fact de la factura si atunci mi-ar pune datele documentului de plata/incasare
-- pe id_fact-ul facturii in DOCUMENTE
MERGE INTO DOCUMENTE A
USING (SELECT DISTINCT ID_FACT AS ID_DOC,
SERIE_ACT,
NRACT,
DATAACT,
DATAIREG,
MAX(DECODE(ID_CTR, 0, NULL, ID_CTR)) AS ID_CTR
FROM ACT_TEMP
WHERE STERS = 0
AND ID_FACT <> -5
AND NOT (SCD = '4426' AND SCC = '4428')
AND NOT (SCD = '4428' AND SCC = '4427')
AND ID_SET <> 90501
GROUP BY ID_FACT, SERIE_ACT, NRACT, DATAACT, DATAIREG) B
ON (A.ID_DOC = B.ID_DOC)
WHEN MATCHED THEN
UPDATE
SET SERIE_ACT = B.SERIE_ACT,
NRACT = B.NRACT,
DATAACT = B.DATAACT,
DATAIREG = B.DATAIREG,
ID_CTR = B.ID_CTR,
STERS = 0;
-- modificare ROACONT v 2.4.0 ( 24.12.2012 ) : pe notele 4426-4428 / 4428-4427
-- care le fac o data cu factura pun id_fact = id_fact_factura
merge into act_temp a
using (select distinct nract, id_fact
from act_temp
where id_fact <> -5
and id_factc = 0
and id_factd = 0) b
on (decode(a.pereched, 0, a.perechec, a.pereched) = b.nract and ((a.scd = '4426' and a.scc = '4428') or (a.scd = '4428' and a.scc = '4427')))
when matched then
update set id_fact = decode(a.id_fact, -5, b.id_fact, a.id_fact);
-- SCRIE IN ACT_TEMP ----------------
if nvl(pack_contafin.nSuprascriereCod, 1) = 1 then
UPDATE ACT_TEMP
SET COD = LN_COD,
DATAORA = LD_DATAORA,
ID_UTIL = LNID_UTIL,
AN = LNAN,
LUNA = LNLUNA;
else
if NVL(pack_contafin.nSuprascriereAnLuna, 1) = 1 then
UPDATE ACT_TEMP
SET DATAORA = LD_DATAORA,
ID_UTIL = LNID_UTIL,
AN = LNAN,
LUNA = LNLUNA;
else
UPDATE ACT_TEMP SET DATAORA = LD_DATAORA, ID_UTIL = LNID_UTIL;
end if;
end if;
-- 04.04.2008
-- Nu se suprascrie id_sucursala completat deja in act_temp
UPDATE ACT_TEMP
SET ID_SUCURSALA = lnIdSucursala
WHERE NVL(ID_SUCURSALA, 0) = 0;
-- 04.04.2008 ^
-- COMPLETEZ MONEDA NATIONALA DACA ID_VALUTA = 0
UPDATE ACT_TEMP
SET ID_VALUTA = pack_def.GetIdMonedaNationala()
where id_valuta = 0;
-- Completez NULL campurile care sunt NULL in act
update act_temp
set id_sucursala = DECODE(id_sucursala, 0, null, id_sucursala),
taxcode = decode(taxcode, 0, null, taxcode),
paymentcode = decode(paymentcode, 0, null, paymentcode);
-- 02.06.2008 USER - PACK_CONTAFIN.ID_FIRMA
-- 16.11.2007 MARIUS.MUTU
-- AUTOVALIDARE INREGISTRARI
/* SELECT CONTAFIN_ORACLE.PACK_DREPTURI.UtilHasValidare(USER,
PACK_CONTAFIN.GET_IDUTIL(),
'AUTOVALIDARE')
INTO lnAutoValidare
FROM DUAL;*/
SELECT CONTAFIN_ORACLE.PACK_DREPTURI.UtilHasValidare(lnIdFirma,
PACK_CONTAFIN.GET_IDUTIL(),
'AUTOVALIDARE')
INTO lnAutoValidare
FROM DUAL;
if nvl(lnAutoValidare, 0) > 0 then
UPDATE ACT_TEMP
SET VALIDAT = 1,
ID_UTILV = PACK_CONTAFIN.GET_IDUTIL(),
DATAORAV = SYSDATE;
end if;
-- 16.11.2007 MARIUS.MUTU ^
-- SCRIE IN ACT
LC_INSERT := 'INSERT INTO ' || V_GCS || '.ACT(' || V_LISTA_CAMPURI ||
') (SELECT ' || V_LISTA_CAMPURI || ' FROM ACT_TEMP)';
EXECUTE IMMEDIATE LC_INSERT;
-- ACTUALIZARE TABELE_VALIDARE
PACK_CONTAFIN.VALIDARE_INVALIDARE(nTipValidareAutomata,
NULL,
lnAn,
lnLuna);
END SCRIE_IN_ACT;
---------------------------------------------------------------------------------------
-- INTOARCE STAREA VALIDARII UNEI SITUATII INTR-O LUNA
-- PENTRU REFACEREA SITUATIEI RESPECTIVE IN PROCEDURA DESCHIDERE_LUNA
-- DACA NU GASESC INREGISTRAREA PENTRU LUNA RESPECTIVA, CONSIDER LUNA INVALIDATA
-- RETURN: 1 = VALIDAT; 0 = INVALIDAT
FUNCTION GETVALIDARE(tcTabel tabele_validare.tabel%type DEFAULT NULL,
tnAn tabele_validare.an%type DEFAULT NULL,
tnLuna tabele_validare.luna%type DEFAULT NULL,
tcCont tabele_validare.cont%type DEFAULT NULL,
tnIdGestiune tabele_validare.id_gestiune%type DEFAULT NULL)
return number is
ldInvalidat tabele_validare.dinvalidat%type;
begin
begin
select DINVALIDAT
INTO ldInvalidat
from TABELE_VALIDARE
WHERE TABEL = tcTabel
and an = tnAn
and luna = tnLuna
and nvl(cont, 'x') = nvl(tcCont, 'x')
and nvl(id_gestiune, 0) = nvl(tnIdGestiune, 0);
exception
when NO_DATA_FOUND then
ldInvalidat := sysdate; -- daca nu gasesc inregistrari consider luna invalidata
end;
return case when ldInvalidat is null then 1 else 0 end;
end;
-- ACTUALIZARE TABELE_VALIDARE (BAL, BALANTA_PARTENERI, IREG_PARTENERI, JV2007, JC2007)
-- INVALIDARE LUNI URMATOARE
-- SE FOLOSESTE PENTRU REFACEREA DOAR A SITUATIILOR DIN LUNILE INVALIDATE
PROCEDURE VALIDARE_INVALIDARE(tnTipValidare tabele_validare.tip_validare%type DEFAULT NULL,
tcTabel tabele_validare.tabel%type DEFAULT NULL,
tnAn tabele_validare.an%type DEFAULT NULL,
tnLuna tabele_validare.luna%type DEFAULT NULL,
tcCont tabele_validare.cont%type DEFAULT NULL,
tnIdGestiune tabele_validare.id_gestiune%type DEFAULT NULL) IS
ldDataAnt date;
lnAnAnt tabele_validare.an%type;
lnLunaAnt tabele_validare.luna%type;
ldInvalidatAnterior tabele_validare.dinvalidat%type;
lnIdUtil tabele_validare.id_util_validare%type := pack_contafin.GET_IDUTIL();
lnAn act.an%type := tnAn;
lnLuna act.luna%type := tnLuna;
lcSetNuScrie optiuni.varvalue%type;
lnIdSet act.id_set%type;
lcSituatiiNuScrie optiuni.varvalue%type;
lnScrieBV number(1) := 1;
lnScrieBP number(1) := 1;
lnScrieIP number(1) := 1;
lnScrieTVA number(1) := 1;
lnScrieSTOC number(1) := 1;
BEGIN
-- tip_validare: 1 = Validare automata (Operatia este facuta in luna curenta. Situatia este validata automat), 2 = Validare prin refacere (Situatia se valideaza in cazul unei refaceri), 3 = Validare manuala
IF tnTipValidare = nTipValidareRefacere THEN
-- se verifica daca luna anterioara este valida: DINVALIDAT = NULL
-- luna cu refacerea se valideaza doar daca luna anterioara este valida
ldDataAnt := TO_DATE(to_char(tnAn) || lpad(tnLuna, 2, '0'), 'yyyymm') - 1;
lnAnAnt := extract(year from ldDataAnt);
lnLunaAnt := extract(month from ldDataAnt);
select max(DINVALIDAT)
INTO ldInvalidatAnterior
from TABELE_VALIDARE
WHERE TABEL = tcTabel
and an = lnAnAnt
and luna = lnLunaAnt
and nvl(cont, 'x') = nvl(tcCont, 'x')
and nvl(id_gestiune, 0) = nvl(tnIdGestiune, 0);
-- validare prin refacere
UPDATE TABELE_VALIDARE
SET DULTIMA_REFACERE = SYSDATE,
DINVALIDAT = case
when ldInvalidatAnterior is null then
NULL
else
DINVALIDAT
end,
TIP_VALIDARE = case
when ldInvalidatAnterior is null then
tnTipValidare
else
TIP_VALIDARE
end,
ID_UTIL_INVALIDARE = case
when ldInvalidatAnterior is null then
NULL
else
ID_UTIL_INVALIDARE
end,
EXPLICATIE = case
when ldInvalidatAnterior is null then
NULL
else
EXPLICATIE
end,
ID_UTIL_VALIDARE = lnIdUtil,
DATAORA_VALIDARE = SYSDATE
WHERE TABEL = tcTabel
and an = tnAn
and luna = tnLuna
and nvl(cont, 'x') = nvl(tcCont, 'x')
and nvl(id_gestiune, 0) = nvl(tnIdGestiune, 0);
ELSIF tnTipValidare = nTipValidareManuala THEN
-- validare manuala - nu se face nici o verificare a validarii lunii anterioare pentru ca doresc sa fortez validarea
UPDATE TABELE_VALIDARE
SET DINVALIDAT = NULL,
TIP_VALIDARE = tnTipValidare,
ID_UTIL_INVALIDARE = NULL,
EXPLICATIE = NULL,
ID_UTIL_VALIDARE = lnIdUtil,
DATAORA_VALIDARE = SYSDATE
WHERE TABEL = tcTabel
and an = tnAn
and luna = tnLuna
and nvl(cont, 'x') = nvl(tcCont, 'x')
and nvl(id_gestiune, 0) = nvl(tnIdGestiune, 0);
ELSE
-- INVALIDARE SITUATII PE BAZA LA INREGISTRARILE DIN ACT_TEMP (SCRIERE/MODIFICARE/STERGERE)
-- se valideaza automat luna operatiei doar daca operatia este in ultima luna deschisa si daca luna anterioara este validata
-- LISTA DE SETURI PENTRU CARE NU SE APELEAZA SCRIEREA balanta, balanta parteneri, inregistrari parteneri, tva, stoc
-- Bonurile fiscale de la chioscuri
-- Se refac situatiile doar prin refaceri/redeschidere de luna FORTAT PENTRU LUNA DOCUMENTELOR
lcSetNuScrie := PACK_SESIUNE.getOptiuneFirma('SETURI_SITUATII_NU_SCRIE'); -- '25052|BV,BP,IP,TVA;'
select max(id_set) into lnIdSet from act_temp;
IF lcSetNuScrie IS NOT NULL and lnIdSet is not null THEN
SELECT MAX(UPPER(SITUATII))
into lcSituatiiNuScrie
FROM (SELECT GETWORDNUM(SET_SITUATII, 1, '|') AS ID_SET,
GETWORDNUM(SET_SITUATII, 2, '|') AS SITUATII
FROM (SELECT getwordnum(lcSetNuScrie, B.RAND, ';') AS SET_SITUATII
FROM DUAL A,
(SELECT ROWNUM AS RAND
FROM USER_OBJECTS
WHERE ROWNUM < 100) B)
WHERE SET_SITUATII IS NOT NULL)
WHERE ID_SET = to_char(lnIdSet);
if lcSituatiiNuScrie LIKE '%BV%' then
lnScrieBV := 0;
end if;
if lcSituatiiNuScrie LIKE '%BP%' then
lnScrieBP := 0;
end if;
if lcSituatiiNuScrie LIKE '%IP%' then
lnScrieIP := 0;
end if;
if lcSituatiiNuScrie LIKE '%TVA%' then
lnScrieTVA := 0;
end if;
if lcSituatiiNuScrie LIKE '%STOC%' then
lnScrieSTOC := 0;
end if;
END IF;
MERGE INTO TABELE_VALIDARE A
USING (select c.tabel,
lnAn as an,
lnLuna as luna,
cal.an as can,
cal.luna as cluna,
c.cont,
c.id_gestiune,
case
when lnAn = cal.an and lnLuna = cal.luna then
sysdate
else
cast(null as date)
end as dultima_operatie,
case
when (lnAn = cal.an and lnLuna = cal.luna) and
(TABEL = 'BAL' AND lnScrieBV = 1) THEN
cast(null as date)
when (lnAn = cal.an and lnLuna = cal.luna) and
(TABEL = 'BALANTA_PARTENERI' AND lnScrieBP = 1) THEN
cast(null as date)
when (lnAn = cal.an and lnLuna = cal.luna) and
(TABEL = 'IREG_PARTENERI' AND lnScrieIP = 1) THEN
cast(null as date)
when (lnAn = cal.an and lnLuna = cal.luna) and
(TABEL = 'JV2007' AND lnScrieTVA = 1) THEN
cast(null as date)
when (lnAn = cal.an and lnLuna = cal.luna) and
(TABEL = 'JC2007' AND lnScrieTVA = 1) THEN
cast(null as date)
when (lnAn = cal.an and lnLuna = cal.luna) and
(TABEL = 'STOC' AND lnScrieSTOC = 1) THEN
cast(null as date)
when (lnAn = cal.an and lnLuna = cal.luna) and
(TABEL = 'STOC_OBINV' AND lnScrieSTOC = 1) THEN
cast(null as date)
else
sysdate
end as dinvalidat
from (WITH cContAct as (SELECT SCD AS CONT, ID_JTVA_COLOANA
FROM ACT_TEMP
UNION
SELECT SCC AS CONT, ID_JTVA_COLOANA
FROM ACT_TEMP), cContStoc as (SELECT DISTINCT '' AS CONT,
ID_GESTIUNE
FROM RUL_TEMP), cContStocO as (SELECT DISTINCT '' AS CONT,
ID_GESTIUNE
FROM Rul_Temp_Obinv)
SELECT DISTINCT 'BAL' AS tabel,
'' as CONT,
CAST(NULL AS NUMBER) AS ID_GESTIUNE
FROM cContAct B
UNION
SELECT DISTINCT 'BALANTA_PARTENERI' AS tabel,
B.CONT,
CAST(NULL AS NUMBER) AS ID_GESTIUNE
FROM cContAct B
where b.cont in (select cont from config_cont_ireg)
UNION
SELECT DISTINCT 'IREG_PARTENERI' AS tabel,
B.CONT,
CAST(NULL AS NUMBER) AS ID_GESTIUNE
FROM cContAct B
where b.cont in (select cont
from config_cont_ireg
where cu_inregistrari = 1)
UNION
SELECT DISTINCT 'JV2007' AS tabel,
'' AS CONT,
CAST(NULL AS NUMBER) AS ID_GESTIUNE
FROM cContAct B
WHERE ID_JTVA_COLOANA IN
(SELECT ID_JTVA_COLOANA
FROM JTVA_COLOANE
WHERE JV = 1)
UNION
SELECT DISTINCT 'JC2007' AS tabel,
'' AS CONT,
CAST(NULL AS NUMBER) AS ID_GESTIUNE
FROM cContAct B
WHERE ID_JTVA_COLOANA IN
(SELECT ID_JTVA_COLOANA
FROM JTVA_COLOANE
WHERE JC = 1)
UNION
SELECT DISTINCT 'STOC' AS tabel,
'' as CONT,
B.ID_GESTIUNE
FROM cContStoc B
UNION
SELECT DISTINCT 'STOC_OBINV' AS tabel,
'' as CONT,
CAST(NULL AS NUMBER) AS ID_GESTIUNE
FROM cContStocO B) c
join calendar cal
on cal.an * 12 + cal.luna >= lnAn * 12 + lnLuna
) D
ON (A.TABEL = d.TABEL AND A.AN = D.cAN AND A.LUNA = D.cLUNA AND nvl(A.CONT, 'X') = NVL(D.CONT, 'X') AND NVL(A.ID_GESTIUNE, 0) = NVL(D.ID_GESTIUNE, 0))
WHEN NOT MATCHED THEN
INSERT
(tabel,
an,
luna,
cont,
id_gestiune,
dultima_operatie,
dinvalidat,
id_util_invalidare,
explicatie)
values
(d.tabel,
d.can,
d.cluna,
d.cont,
d.id_gestiune,
d.dultima_operatie,
d.dinvalidat,
lnIdUtil,
lpad(tnLuna, 2, '0') || '/' || tnAn)
WHEN MATCHED THEN
UPDATE
set a.dultima_operatie = nvl(d.dultima_operatie,
a.dultima_operatie),
a.dinvalidat = nvl(d.dinvalidat, a.dinvalidat),
a.id_util_invalidare = lnIdUtil,
a.explicatie = lpad(tnLuna, 2, '0') || '/' || tnAn;
END IF; -- tcTabel is not null
END VALIDARE_INVALIDARE;
-- MARCHEAZA INREGISTRARILE CA VALIDATE
PROCEDURE VALIDAREINREGISTRARI(tnAn IN act.an%type,
tnLuna act.luna%type,
tnIdUtil act.id_Utilv%type,
tnCod act.cod%type) IS
lnDreptValidare number(10) := 0;
lnBlocatROACONT NUMBER(1) := 0;
lnBlocatROAGEST NUMBER(1) := 0;
lnInchis number(1) := 0;
BEGIN
PACK_FIRMA.IS_LUNA_BLOCATA(user,
pack_sesiune.nIdeROACONT,
tnAn,
tnLuna,
lnBlocatROACONT);
-- PACK_FIRMA.IS_LUNA_BLOCATA(tcS, pack_sesiune.nIdeROAGEST, tnAn, tnLuna, lnBlocatROAGEST);
lnInchis := lnBlocatROACONT + lnBlocatROAGEST;
if lnInchis = 1 then
goto sfarsit;
end if;
SELECT CONTAFIN_ORACLE.PACK_DREPTURI.UtilHasValidare(pack_contafin.GET_ID_FIRMA(),
tnIdUtil,
'DREPTVALIDARE')
INTO lnDreptValidare
FROM DUAL;
if nvl(lnDreptValidare, 0) > 0 then
UPDATE ACT
SET VALIDAT = 1, ID_UTILV = tnIdUtil, DATAORAV = SYSDATE
WHERE AN = tnAn
and LUNA = tnLuna
and COD = tnCod
and NVL(STERS, 0) = 0;
else
RAISE_APPLICATION_ERROR(-20000,
'Nu aveti drepturi pentru validarea inregistrarilor');
end if;
<<sfarsit>>
null;
END VALIDAREINREGISTRARI;
---------------------------------------------------------------------------------------
procedure EXECUTA_SCRIE_TVA(V_GCS VARCHAR2,
tcNumeTabel varchar2,
tnProcTvaStR number,
tnProcTvaRedR number,
tcCorespDTva varchar2,
tcCorespDBaza varchar2,
tcCorespCTva varchar2,
tcCorespCBaza varchar2,
tcContTva varchar2,
tcExceptii varchar2,
tnAn number,
tnLuna number,
tnScrie number) IS
cursor c_DOCUMENTE is
select distinct nvl(ID_FACT, 0) as id_fact, nract, dataact
from act_temp;
cLinieD c_DOCUMENTE%rowtype;
tnProcTvaSt act_temp.proc_tva%Type := tnProcTvaStR;
tnProcTvaRed act_temp.proc_tva%Type := tnProcTvaRedR;
v_sumaTVA act_temp.suma%type := 0;
V_LISTA_CAMPURI varchar2(5000);
BEGIN
V_LISTA_CAMPURI := pack_contafin.LISTA_CAMPURI(USER, 'ACT_temp_ireg');
-- citesc cota tva standard si redus din cote_tva
BEGIN
EXECUTE IMMEDIATE 'SELECT MAX(proc_tva) from ' || V_GCS ||
'.cote_tva
where an = :1 and luna = :2 and descriere like :3'
INTO tnProcTvaSt
USING tnAn, tnLuna, '%STANDARD%';
EXCEPTION
WHEN OTHERS THEN
tnProcTvaSt := tnProcTvaStR;
END;
IF tnProcTvaSt IS NULL THEN
tnProcTvaSt := tnProcTvaStR;
END IF;
BEGIN
EXECUTE IMMEDIATE 'SELECT MAX(proc_tva) from ' || V_GCS ||
'.cote_tva
where an = :1 and luna = :2 and descriere like :3'
INTO tnProcTvaRed
USING tnAn, tnLuna, '%REDUS%';
EXCEPTION
WHEN OTHERS THEN
tnProcTvaRed := tnProcTvaRedR;
END;
IF tnProcTvaRed IS NULL THEN
tnProcTvaRed := tnProcTvaRedR;
END IF;
open c_DOCUMENTE;
fetch c_DOCUMENTE
into cLinieD;
while c_DOCUMENTE%found loop
delete from act_temp_ireg;
execute immediate 'INSERT INTO ACT_TEMP_IREG (' || v_lista_campuri ||
') SELECT ' || v_lista_campuri ||
' from act_temp where id_fact = :1 and nract = :2 and dataact = :3'
using cLinieD.id_fact, cLinieD.nract, cLinieD.dataact;
-- 07.12.2006
-- MARIUS.MUTU
-- AM CALCULAT SUMA TVA PENTRU FIECARE COTA TVA IN AFARA DE 0 SAU 1 (NEIMPOZABIL)
-- APOI SCAD SUMA DIN PRIMA SUMA CU TVA CU ACEA COTA DE TVA
-- temporar, pt regularizare facturi nesosite, neintocmite
FOR cota_tva in (select distinct proc_tva
from act_temp_ireg
where proc_tva not in (0, 1)) LOOP
begin
select suma
INTO v_sumaTVA
from act_temp_ireg
where proc_tva = cota_tva.proc_tva
and ((scd = '4426' and scc = '4428') or
(scd = '4428' and scc = '4427'));
EXCEPTION
WHEN OTHERS THEN
v_sumaTVA := 0;
end;
-- 22.11.2006
-- MARIUS.MUTU
-- ROWNUM = 1 SA NU SE SCADA TVA-UL DE MAI MULTE ORI
-- dbms_output.put_line('suma TVA : '||cLinieD.nract || ', ' || v_sumaTVA);
UPDATE act_temp_ireg
set suma = suma - v_sumaTVA
where rownum = 1
and ((scd = '4111' and scc = '418') or
(scd = '408' and scc = '401'))
and proc_tva = cota_tva.proc_tva;
END LOOP;
-----
pack_contafin.SCRIE2_TVA(V_GCS,
tcNumeTabel,
tnProcTvaSt,
tnProcTvaRed,
tcCorespDTva,
tcCorespDBaza,
tcCorespCTva,
tcCorespCBaza,
tcContTva,
tcExceptii,
tnAn,
tnLuna,
tnScrie,
cLinieD.id_fact,
cLinieD.nract,
cLinieD.dataact);
fetch c_DOCUMENTE
into cLinieD;
end loop;
close c_DOCUMENTE;
execute immediate 'delete from act_temp_ireg';
END EXECUTA_SCRIE_TVA;
---------------------------------------------------------------
procedure SCRIE2_TVA(V_GCS VARCHAR2,
tcNumeTabel varchar2,
tnProcTvaStR number,
tnProcTvaRedR number,
tcCorespDTva varchar2,
tcCorespDBaza varchar2,
tcCorespCTva varchar2,
tcCorespCBaza varchar2,
tcContTva varchar2,
tcExceptii varchar2,
tnAn number,
tnLuna number,
tnScrie number,
tnIdFact number,
tnNrAct number,
tdDataAct date) IS
lnAct number(20);
lnCumpVanz number(10);
lnSumaNeimpozab number(24, 4);
lnSumaTvam number(24, 4);
lnSumaTvai number(24, 4);
lnSumaTotalm number(24, 4);
lnSumaTotali number(24, 4);
lcAn varchar2(4);
lcLuna varchar2(2);
lcIdTabel varchar2(20);
lnScrie_tva number(1);
V_APARITII_scd number(2) := 0;
V_APARITII_scc number(2) := 0;
V_APARITII number(2) := 0;
lcContCoresp varchar2(3);
lcCont varchar2(3);
lcContulCoresp varchar2(4);
lcContul varchar2(4);
lcCorespTva varchar2(1000);
lcCorespBaza varchar2(1000);
lcCorespondente varchar2(1000);
ldDataact date;
ldDataireg date;
lnNract number(20);
lnId_fdoc number(5);
lnCod number(20);
lnId_part number(10);
lcScd varchar2(4);
lcScc varchar2(4);
lnNeimpozab number(24, 4);
ignore number(1);
lnGasit number(1) := 0;
lnGasitPart number(1) := 0;
lnIdRand number(35);
cursor c_act_temp is
select *
from act_temp_ireg
where id_fact = tnIdFact
and nract = tnNrAct
and dataact = tdDataAct
order by id_act;
cLinie c_act_temp%rowtype;
tnProcTvaSt act_temp.proc_tva%Type := tnProcTvaStR;
tnProcTvaRed act_temp.proc_tva%Type := tnProcTvaRedR;
begin
lcAn := to_char(tnAn);
lcLuna := TO_CHAR(tnLuna);
lnScrie_tva := 0;
/* -- citesc cota tva standard si redus din cote_tva
BEGIN
EXECUTE IMMEDIATE 'SELECT MAX(proc_tva) from ' || V_GCS ||
'.cote_tva
where an = :1 and luna = :2 and descriere like :3'
INTO tnProcTvaSt
USING tnAn, tnLuna, '%STANDARD%';
EXCEPTION
WHEN OTHERS THEN
tnProcTvaSt := tnProcTvaStR;
END;
IF tnProcTvaSt IS NULL THEN
tnProcTvaSt := tnProcTvaStR;
END IF;*/
/* BEGIN
EXECUTE IMMEDIATE 'SELECT MAX(proc_tva) from ' || V_GCS ||
'.cote_tva
where an = :1 and luna = :2 and descriere like :3'
INTO tnProcTvaRed
USING tnAn, tnLuna, '%REDUS%';
EXCEPTION
WHEN OTHERS THEN
tnProcTvaRed := tnProcTvaRedR;
END;
IF tnProcTvaRed IS NULL THEN
tnProcTvaRed := tnProcTvaRedR;
END IF;*/
lnAct := dbms_sql.open_cursor;
lnCumpVanz := dbms_sql.open_cursor;
lnId_part := 0;
if tcContTva = '4426' then
execute immediate 'SELECT COUNT(*) FROM ACT_TEMP_ireg WHERE (SCD = :1 OR (proc_tva <> 0 and to_number(scc) <> 4427 and to_number(scc) in (' ||
tcCorespDBaza || ') and to_number(scd) not in (' ||
tcCorespDBaza ||
')) OR (proc_tva<>0 and to_number(scd) in (' ||
tcCorespDBaza || ') and to_number(scc) in (' ||
tcExceptii ||
'))) and id_fact = :2 and nract = :3 and dataact = :4'
into V_APARITII_scd
using tcContTVA, tnIdFact, tnNrAct, tdDataAct;
else
V_APARITII_scd := 0;
end if;
if tcContTva = '4427' then
execute immediate 'SELECT COUNT(*) FROM ACT_TEMP_ireg WHERE (SCC = :1 OR (proc_tva <> 0 and to_number(scd) <> 4426 and to_number(scd) in (' ||
tcCorespCBaza || ') and to_number(scc) not in (' ||
tcCorespCBaza ||
')) OR (proc_tva<>0 and to_number(scc) in (' ||
tcCorespCBaza || ') and to_number(scd) in (' ||
tcExceptii ||
'))) and id_fact = :2 and nract = :3 and dataact = :4'
into V_APARITII_scc
using tcContTVA, tnIdFact, tnNrAct, tdDataAct;
else
V_APARITII_scc := 0;
end if;
if V_APARITII_scd > 0 then
-- 4426
lcContCoresp := 'scc';
lcCont := 'scd';
lnScrie_tva := 1;
lcCorespTVA := tcCorespDTVA;
LcCorespBaza := tcCorespDBaza;
end if;
if V_APARITII_scc > 0 then
-- 4427
lcContCoresp := 'scd';
lcCont := 'scc';
lnScrie_tva := 1;
lcCorespTVA := tcCorespCTVA;
lcCorespBaza := tcCorespCBaza;
end if;
if lnScrie_tva = 1 then
open c_act_temp;
fetch c_act_temp
into cLinie;
while c_act_temp%found loop
if lcCont = 'scd' then
-- 4426
lcCorespondente := tcCorespDBaza || ',' || tcExceptii;
lcContul := cLinie.scd;
lcContulCoresp := cLinie.scc;
else
-- 4427
lcCorespondente := tcCorespCBaza || ',' || tcExceptii;
lcContul := cLinie.scc;
lcContulCoresp := cLinie.scd;
end if;
lnNeimpozab := cLinie.proc_tva;
-- dbms_output.put_line(cLinie.nract || ',' || lnNeimpozab || ',' ||
-- lcContulCoresp || ',' || lcCorespondente);
if (lcContul = tcContTVA OR
instr(lcCorespondente, lcContulCoresp) > 0) and lnNeimpozab <> 0 then
-- dbms_output.put_line(cLinie.nract || ' a intrat');
if lnGasit = 0 then
lnGasit := 1;
/* lnNract := cLinie.nract;
ldDataact := cLinie.dataact;*/
lcScd := cLinie.scd;
lcScc := cLinie.scc;
lnCod := cLinie.cod;
ldDataireg := cLinie.dataireg;
lnId_fdoc := cLinie.id_fdoc;
end if;
if lcCont = 'scd' then
-- 4426
if instr(tcCorespDBaza, lcContulCoresp) > 0 /*and lcContul <> tcContTva*/
then
lnId_part := cLinie.id_partc;
lnGasitPart := 1;
elsif instr(tcCorespDBaza, lcContul) > 0 and
instr(tcExceptii, lcContulCoresp) > 0 then
lnId_part := cLinie.id_partd;
lnGasitPart := 1;
end if;
else
--4427
if instr(tcCorespCBaza, lcContulCoresp) > 0 /*and lcContul <> tcContTva*/
then
if instr(tcExceptii, lcContul) > 0 then
-- 419
lcScd := lcContul;
lnId_part := cLinie.id_partc;
lnGasitPart := 1;
else
lnId_part := cLinie.id_partd;
lnGasitPart := 1;
end if;
elsif instr(tcCorespCBaza, lcContul) > 0 and
instr(tcExceptii, lcContulCoresp) > 0 then
lnId_part := cLinie.id_partc;
lnGasitPart := 1;
end if;
end if;
end if;
if lnGasit = 1 and lnGasitPart = 1 then
exit;
end if;
fetch c_act_temp
into cLinie;
end loop;
close c_act_temp;
if lnGasit <> 1 then
/* lnNract := cLinie.nract;
ldDataact := cLinie.dataact;*/
lcScd := cLinie.scd;
lcScc := cLinie.scc;
lnCod := cLinie.cod;
ldDataireg := cLinie.dataireg;
lnId_fdoc := cLinie.id_fdoc;
end if;
lnNract := tnNrAct;
ldDataact := tdDataAct;
lcIdTabel := 'Id_' || tcNumeTabel;
execute immediate 'SELECT COUNT(*), min(' || lcIdTabel || ') FROM ' ||
V_GCS || '.' || tcNumeTabel ||
' WHERE an = :1 and luna = :2 and ID_PART = :3 AND NRACT =:4 AND DATAACT =:5'
into v_aparitii, lnIdRand
using tnAn, tnLuna, lnId_part, lnNract, ldDataact;
-- UPDATE Cump, Vanz
if V_APARITII = 0 and tnscrie <> 2 then
EXECUTE IMMEDIATE 'INSERT INTO ' || V_GCS || '.' || tcNumeTabel ||
'(LUNA, AN, scd, scc, dataact, ID_PART, nract, cod, dataireg, id_fdoc)
VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10)'
USING tnLuna, tnAn, lcScd, LcScc, ldDataact, lnId_part, lnNract, lnCod, ldDataireg, lnId_fdoc;
if tnScrie = 2 then
return;
end if;
end if;
DBMS_SQL.PARSE(lnCumpVanz,
'update ' || v_gcs || '.' || tcNumeTabel ||
' set neimpozab = neimpozab + :lnSumaNeimpozab, tvam = tvam + :lnSumaTvaM, tvai = tvai + :lnSumaTvaI,' ||
'totftvam = totftvam + :lnSumaTotalM - :lnSumaTvaM, totftvai = totftvai + :lnSumaTotalI - :lnSumaTvaI ' ||
'where an = ' || lcAn || ' and luna = ' || lcLuna ||
'and dataact = :ldDataact and nract = :lnNract and id_part = :lnId_part',
DBMS_SQL.native);
-- 'totctva = totftvam + totftvai + tvam + tvai + neimpozab' ||
DBMS_SQL.PARSE(lnAct,
'select sum(suma) as neimpozab, sum(0.0000) as tvam, sum(0.0000) as tvai, sum(0.0000) as Totctvam, sum(0.0000) as Totctvai
from act_temp_ireg where to_number(' ||
lcContCoresp || ') in (' || lcCorespBaza ||
') and not to_number(' || lcCont || ') in (' ||
lcCorespBaza || ') and proc_tva = 1 and id_fact = ' ||
tnIdFact || ' group by an UNION ' ||
'select sum(-suma) as neimpozab, sum(0.0000) as tvam, sum(0.0000) as tvai, sum(0.0000) as Totctvam, sum(0.0000) as Totctvai
from act_temp_ireg where to_number(' ||
lcContCoresp || ') in (' || tcExceptii ||
') and to_number(' || lcCont || ') in (' ||
lcCorespBaza || ') and proc_tva = 1 and id_fact = ' ||
tnIdFact || ' group by an ' ||
'UNION select sum(0.0000) as neimpozab, sum(suma) as tvam, sum(0.0000) as tvai, sum(0.0000) as Totctvam, sum(0.0000) as Totctvai
from act_temp_ireg where to_number(' ||
lcCont || ') = ' || tcContTva || ' and proc_tva = ' ||
tnProcTvaSt || ' and id_fact = ' || tnIdFact ||
' group by an UNION ' ||
'select sum(0.0000) as neimpozab, sum(0.0000) as tvam, sum(suma) as tvai, sum(0.0000) as Totctvam, sum(0.0000) as Totctvai
from act_temp_ireg where to_number(' ||
lcCont || ') = ' || tcContTva || ' and proc_tva = ' ||
tnProcTvaRed || ' and id_fact = ' || tnIdFact ||
' group by an UNION ' ||
'select sum(0.0000) as neimpozab, sum(0.0000) as tvam, sum(0.0000) as tvai, sum(suma) as Totctvam, sum(0.0000) as Totctvai
from act_temp_ireg where ((to_number(' ||
lcContCoresp || ') in (' || lcCorespBaza ||
') and not to_number(' || lcCont || ') in (' ||
lcCorespBaza || ')) OR ' || lcCont || '= ' ||
tcContTva || ') and proc_tva = ' || tnProcTvaSt ||
' and id_fact = ' || tnIdFact || ' group by an UNION ' ||
'select sum(0.0000) as neimpozab, sum(0.0000) as tvam, sum(0.0000) as tvai, sum(-suma) as Totctvam, sum(0.0000) as Totctvai
from act_temp_ireg where to_number(' ||
lcContCoresp || ') in (' || tcExceptii ||
') and to_number(' || lcCont || ') in (' ||
lcCorespBaza || ') and proc_tva = ' || tnProcTvaSt ||
' and id_fact = ' || tnIdFact || ' group by an UNION ' ||
'select sum(0.0000) as neimpozab, sum(0.0000) as tvam, sum(0.0000) as tvai, sum(0.0000) as Totctvam, sum(suma) as Totctvai
from act_temp_ireg where ((to_number(' ||
lcContCoresp || ') in (' || lcCorespBaza ||
') and not to_number(' || lcCont || ') in (' ||
lcCorespBaza || ')) OR ' || lcCont || '= ' ||
tcContTva || ') and proc_tva = ' || tnProcTvaRed ||
' and id_fact = ' || tnIdFact || ' group by an UNION ' ||
'select sum(0.0000) as neimpozab, sum(0.0000) as tvam, sum(0.0000) as tvai, sum(0.0000) as Totctvam, sum(-suma) as Totctvai
from act_temp_ireg where to_number(' ||
lcContCoresp || ') in (' || tcExceptii ||
') and to_number(' || lcCont || ') in (' ||
lcCorespBaza || ') and proc_tva = ' || tnProcTvaRed ||
' group by an ',
DBMS_SQL.native);
DBMS_SQL.DEFINE_COLUMN(lnAct, 1, lnSumaNeimpozab);
DBMS_SQL.DEFINE_COLUMN(lnAct, 2, lnSumaTvam);
DBMS_SQL.DEFINE_COLUMN(lnAct, 3, lnSumaTvai);
DBMS_SQL.DEFINE_COLUMN(lnAct, 4, lnSumaTotalm);
DBMS_SQL.DEFINE_COLUMN(lnAct, 5, lnSumaTotali);
ignore := DBMS_SQL.EXECUTE(lnAct);
LOOP
IF DBMS_SQL.FETCH_ROWS(lnAct) > 0 THEN
-- get column values of the row
DBMS_SQL.COLUMN_VALUE(lnAct, 1, lnSumaNeimpozab);
DBMS_SQL.COLUMN_VALUE(lnAct, 2, lnSumaTvam);
DBMS_SQL.COLUMN_VALUE(lnAct, 3, lnSumaTvai);
DBMS_SQL.COLUMN_VALUE(lnAct, 4, lnSumaTotalm);
DBMS_SQL.COLUMN_VALUE(lnAct, 5, lnSumaTotali);
DBMS_SQL.BIND_VARIABLE(lnCumpVanz,
':lnSumaNeimpozab',
lnSumaNeimpozab);
DBMS_SQL.BIND_VARIABLE(lnCumpVanz, ':lnSumaTvam', lnSumaTvam);
DBMS_SQL.BIND_VARIABLE(lnCumpVanz, ':lnSumaTvai', lnSumaTvai);
DBMS_SQL.BIND_VARIABLE(lnCumpVanz, ':lnSumaTotalm', lnSumaTotalm);
DBMS_SQL.BIND_VARIABLE(lnCumpVanz, ':lnSumaTotali', lnSumaTotali);
DBMS_SQL.BIND_VARIABLE(lnCumpVanz, ':ldDataact', ldDataact);
DBMS_SQL.BIND_VARIABLE(lnCumpVanz, ':lnNract', lnNract);
DBMS_SQL.BIND_VARIABLE(lnCumpVanz, ':lnId_part', lnId_part);
ignore := DBMS_SQL.EXECUTE(lnCumpVanz);
execute immediate 'update ' || v_gcs || '.' || tcNumeTabel ||
' set totctva = totftvam + totftvai + tvam + tvai + neimpozab ' ||
'where an = ' || lcAn || ' and luna = ' ||
lcLuna ||
'and dataact = :1 and nract = :2 and id_part = :3'
using ldDataact, lnNract, lnId_part;
-- if tnscrie = 2 then
-- sterg inregistrarile cu suma 0
execute immediate 'delete from ' || v_gcs || '.' || tcNumeTabel ||
' where totctva = 0 and totftvam = 0 and totftvai = 0 and tvam = 0 and tvai = 0 and neimpozab = 0 and ' ||
lcIdTabel || ' = :1'
using lnIdRand;
-- end if;
else
exit;
end if;
end loop;
end if; -- a gasit TVA
dbms_sql.close_cursor(lnAct);
dbms_sql.close_cursor(lnCumpVanz);
end scrie2_tva;
---------------------------------------------------------------
PROCEDURE STERGE_DIN_ACT(V_GCS VARCHAR2,
tnAn in number,
tnLuna in number,
tnCod in number,
tnId_utils in number,
tnTip IN NUMBER) is
-- tnTip : 0 = modificare ; 1 = stergere
LD_DATAORA ACT_TEMP.DATAORA%TYPE;
LC_UPDATE VARCHAR2(10000) := '';
LNID_UTIL ACT_TEMP.ID_UTIL%TYPE;
lnTip number(1) := 0;
lnId_Fact act_temp.id_fact%Type := 0;
BEGIN
if tnTip is not null then
lnTip := tnTip;
end if;
LD_DATAORA := PACK_CONTAFIN.GET_DATAORA();
LNID_UTIL := PACK_CONTAFIN.GET_IDUTIL();
UPDATE /*+ index(ACT IDX_COD) */ ACT
SET STERS = 1, DATAORAS = LD_DATAORA, ID_UTILS = lnId_util
WHERE COD = tnCod
and an = tnAn
and luna = tnLuna;
IF lnTip = 1 THEN
UPDATE DOCUMENTE
SET STERS = 1, ID_UTILS = LNID_UTIL, DATAORAS = LD_DATAORA
WHERE ID_DOC IN
(SELECT /*+ index(ACT IDX_COD) */
DISTINCT ID_FACT
FROM ACT
WHERE COD = tnCod
and an = tnAn
and luna = tnLuna
AND ID_FACT <> 0
and ID_SET not in (90501, 90021)
AND NOT (SCD = '4426' AND SCC = '4428')
AND NOT (SCD = '4428' AND SCC = '4427'));
END IF;
update act_temp set suma = -suma, suma_val = -suma_val;
END STERGE_DIN_ACT;
---------------------------------------------------------------
PROCEDURE STERGE_DIN_RUL(V_GCS VARCHAR2,
tnAn in number,
tnLuna in number,
tnCod in number,
tnId_utils in number) is
LD_DATAORA RUL_TEMP.DATAORA%TYPE := PACK_CONTAFIN.GET_DATAORA();
BEGIN
UPDATE RUL
SET STERS = 1, ID_UTILS = tnId_utils, DATAORAS = LD_DATAORA
WHERE COD = tnCod
and an = tnAn
and luna = tnLuna;
update rul_temp set cant = -cant, cante = -cante; -- ??
END STERGE_DIN_RUL;
---------------------------------------------------------------
PROCEDURE STERGE_DIN_RUL_OBINV(V_GCS VARCHAR2,
tnAn in number,
tnLuna in number,
tnCod in number,
tnId_utils in number) is
LD_DATAORA RUL_TEMP.DATAORA%TYPE := PACK_CONTAFIN.GET_DATAORA();
BEGIN
UPDATE RUL_OBINV
SET STERS = 1, ID_UTILS = tnId_utils, DATAORAS = LD_DATAORA
WHERE COD = tnCod
and an = tnAn
and luna = tnLuna;
update rul_temp_OBINV set cant = -cant, cante = -cante; -- ??
END STERGE_DIN_RUL_OBINV;
---------------------------------------------------------------
------------------------------------------------------------------------------------
PROCEDURE SCRIE_IN_RUL(tcS IN VARCHAR2) IS
V_LISTA_CAMPURI VARCHAR2(2000) := '';
LN_COD NUMBER(20) := 0;
lnIdFact NUMBER(20) := 0;
lnCuFacturi NUMBER(5) := 0;
LD_DATAORA DATE;
LC_UPDATE VARCHAR2(100) := '';
LC_INSERT VARCHAR2(10000) := '';
lnId_Util act_temp.id_util%Type;
LNAN ACT_TEMP.AN%TYPE;
LNLUNA ACT_TEMP.LUNA%TYPE;
lnIdSucursala act.id_sucursala%type;
lnProcTvaStandard act_temp.proc_tva%TYPE;
lcRulajFurnizor OPTIUNI.VARVALUE%TYPE;
lnRulajFurnizor NUMBER(1) := 0;
lnIdFurnizor nom_parteneri.id_part%type;
lnIdRulAux rul_auxiliar.id_rul_aux%type;
BEGIN
lnIdSucursala := PACK_CONTAFIN.GET_ID_SUCURSALA();
V_LISTA_CAMPURI := pack_contafin.LISTA_CAMPURI(tcS, 'RUL');
LN_COD := pack_contafin.GET_COD();
LD_DATAORA := pack_contafin.GET_DATAORA();
lnId_Util := pack_contafin.GET_IDUTIL();
LNAN := pack_sesiune.GETAN();
LNLUNA := pack_sesiune.GETLUNA();
lnProcTvaStandard := pack_contafin.getCotaTVAStandard(LNLUNA, LNAN);
lcRulajFurnizor := PACK_SESIUNE.getOptiuneFirma('RULAJFURNIZOR');
IF lcRulajFurnizor IS NULL THEN
lnRulajFurnizor := 0;
ELSE
lnRulajFurnizor := to_number(lcRulajFurnizor);
END IF;
-- 25.10.2006
-- mutu.marius
-- in cazul factura achizitie + plata - se generau 2 id_fact, iar in rulaj se ducea ultimul id_fact (plata)
-- probleme la listare - iau doar inregistrarile fara trezorerie ('5')
-- lnIdFact := get_idFact();
select min(id_fact)
into lnIdFact
from act_temp
where substr(scd, 1, 1) <> '5'
and substr(scc, 1, 1) <> '5';
if nvl(pack_contafin.nSuprascriereCod, 1) = 1 then
UPDATE RUL_TEMP
SET COD = LN_COD,
DATAORA = LD_DATAORA,
ID_UTIL = lnId_Util,
AN = lnAn,
LUNA = lnLuna;
-- LA ACHIZITIE DIN IMPORT SE PUNEA ALT ID_FACT DECAT LA PRIMA FACTURA CARE AVEA NNIR <> 0
MERGE INTO RUL_TEMP A
USING (SELECT DISTINCT NRACT, COD, ID_FACT, NNIR
FROM ACT_TEMP
WHERE NVL(ID_FACT, 0) <> 0
AND substr(scd, 1, 1) <> '5'
and substr(scc, 1, 1) <> '5') B
ON (A.NRACT = B.NRACT AND A.COD = B.COD AND A.NNIR = B.NNIR)
WHEN MATCHED THEN
UPDATE SET A.ID_FACT = B.ID_FACT;
UPDATE RUL_TEMP SET ID_FACT = lnIdFact WHERE NVL(ID_FACT,0) = 0;
/*if lnIdFact <> 0 and lnIdFact is not null then
-- la modificare nu setez id_fact
-- UPDATE RUL_TEMP SET ID_FACT = lnIdFact;
end if;*/
else
if nvl(pack_contafin.nSuprascriereAnLuna, 1) = 1 then
UPDATE RUL_TEMP
SET DATAORA = LD_DATAORA,
ID_UTIL = lnId_Util,
AN = lnAn,
LUNA = lnLuna;
else
UPDATE RUL_TEMP SET DATAORA = LD_DATAORA, ID_UTIL = lnId_Util;
end if;
MERGE INTO RUL_TEMP A
USING (SELECT DISTINCT NRACT, COD, ID_FACT, NNIR FROM ACT_TEMP) B
ON (A.NRACT = B.NRACT AND A.COD = B.COD AND A.NNIR = B.NNIR)
WHEN MATCHED THEN
UPDATE SET A.ID_FACT = B.ID_FACT;
end if;
-- 23.02.2010
-- Nu se suprascrie id_sucursala completat deja in act_temp
UPDATE RUL_TEMP
SET ID_SUCURSALA = lnIdSucursala
WHERE NVL(ID_SUCURSALA, 0) = 0;
-- 23.02.2010 ^
UPDATE RUL_TEMP SET DATAIN = dataact WHERE CANT <> 0;
UPDATE RUL_TEMP SET DATAOUT = dataact WHERE CANTE <> 0;
UPDATE RUL_TEMP SET ID_RUL_AUX = NULL WHERE ID_RUL_AUX = 0;
-- Completare RUL.ID_RUL_AUX SI RUL_AUX.ID_FURNIZOR la intrari daca este setata optiunea
if lnRulajFurnizor = 1 then
SELECT max(id_partc)
into lnIdFurnizor
from act_temp
where scc in ('401', '404', '408', '462')
and id_fact in (select id_fact from rul_temp where cant <> 0);
if lnIdFurnizor is not null then
lnIdRulAux := GetRulajAuxiliarFurnizor(lnIdFurnizor);
update rul_temp set id_rul_aux = lnIdRulAux;
end if;
end if;
LC_INSERT := 'INSERT INTO ' || tcS || '.RUL (' || V_LISTA_CAMPURI ||
') (SELECT ' || V_LISTA_CAMPURI || ' FROM RUL_TEMP)';
-- LC_INSERT := 'INSERT INTO ' || tcS || '.RUL (SELECT ' || V_LISTA_CAMPURI || ' FROM RUL_TEMP)';
EXECUTE IMMEDIATE LC_INSERT;
END SCRIE_IN_RUL;
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
PROCEDURE SCRIE_IN_STOC_OLD(tcS IN VARCHAR2,
tnAn in number,
tnLuna in number,
tnScrie number,
tcTabel in varchar2,
tcIdTabel in varchar2,
tcCondSpec in varchar2) IS
CURSOR CRS_TEMP IS
SELECT R.*, 00 AS TIPG FROM RUL_TEMP R WHERE 1 = 2;
pCursor tip_ref_cursor;
lnId_Stoc Act_Temp.Id_Act%Type;
lcSelect varchar2(1000);
lcSearcha varchar2(1000);
lcSearchv varchar2(1000);
lnStoca number;
lnStocv number;
item crs_temp%Rowtype;
ignore number := 0;
lnAn act_temp.an%Type := tnAn;
lnLuna act_temp.luna%Type := tnLuna;
lcTabel varchar2(50) := tcTabel;
lcIdTabel varchar2(50) := tcIdTabel;
lcCondSpec varchar2(100) := tcCondSpec;
lcUpdateStoc varchar2(1000);
lnIdSucursala act.id_sucursala%type;
lcWhereSucursale varchar2(1000);
BEGIN
lnIdSucursala := PACK_CONTAFIN.GET_ID_SUCURSALA();
if lnIdSucursala is not null then
lcWhereSucursale := ' and r.id_sucursala = ' || lnIdSucursala;
end if;
if lcTabel is null then
lcTabel := 'Stoc';
end if;
if lcIdTabel is null then
lcIdTabel := 'id_Stoc';
end if;
if tcCondSpec is null then
lcCondSpec := '2=2';
end if;
lcSearcha := 'select ' || lcIdTabel || ' from ' || tcs || '.' ||
lcTabel ||
' where an = :1 and luna = :2 and id_articol = :3 and id_gestiune = :4
and cont = :5 and nvl(acont,''XXXX'') = :6 and pret = :7
and NVL(id_rul_aux,0) = :8 and NVL(serie,''+_'') = :9
and NVL(pretd,0) = :10 and NVL(id_valuta,0) = :11
and NVL(LOT,''+_'') = :12
AND NVL(ADATA_EXPIRARE, to_date(''1900-01-01'',''YYYY-MM-DD'')) = :13 and NVL(id_sucursala, 0) = :14
AND NVL(ID_LUCRARE_REZ,0) = :15 AND NVL(ID_PART_REZ,0) = :16 AND ' ||
lcCondSpec;
lcSearchv := 'select ' || lcIdTabel || ' from ' || tcs || '.' ||
lcTabel ||
' where an = :1 and luna = :2 and id_articol = :3 and id_gestiune = :4
and cont = :5 and NVL(acont,''XXXX'') = :6 and pret = :7
and NVL(id_rul_aux,0) = :8 and NVL(serie,''+_'') = :9
and pretv = :10 and tvav = :11 and proc_tvav = :12
and NVL(pretd,0) = :13 and NVL(id_valuta,0) = :14
and NVL(LOT,''+_'') = :15
AND NVL(ADATA_EXPIRARE, to_date(''1900-01-01'',''YYYY-MM-DD'')) = :16 and NVL(id_sucursala, 0) = :17
AND NVL(ID_LUCRARE_REZ,0) = :18 AND NVL(ID_PART_REZ,0) = :19 AND ' ||
lcCondSpec;
IF tnScrie = 1 THEN
-- REFACERE
lnAn := tnAn;
lnLuna := tnLuna;
lcSelect := 'select r.*,decode(nvl(g.nr_pag,00),6,1,7,1,0) as tipg
from rul r
left join vnom_gestiuni g on r.id_gestiune = g.id_gestiune
where r.an = :1 and r.luna = :2 and substr(r.cont,1,2)<>''80'' and r.sters=0 ' ||
lcWhereSucursale;
ELSE
-- SCRIERE
/* lnAn := pack_contafin.GET_AN();
lnLuna := pack_contafin.GET_LUNA();*/
lnAn := tnAn;
lnLuna := tnLuna;
lcSelect := 'select r.*,decode(nvl(g.nr_pag,00),6,1,7,1,0) as tipg
from rul_Temp r
left join vnom_gestiuni g on r.id_gestiune = g.id_gestiune
where r.an = :1 and r.luna = :2 and substr(r.cont,1,2)<>''80'' ';
-- lcSelect := 'select * from Xrul_temp';
END IF;
lnStoca := dbms_sql.open_cursor;
lnStocv := dbms_sql.open_cursor;
DBMS_SQL.PARSE(lnStoca, lcSearcha, DBMS_SQL.native);
DBMS_SQL.PARSE(lnStocv, lcSearchv, DBMS_SQL.native);
DBMS_SQL.DEFINE_COLUMN(lnStoca, 1, lnId_Stoc);
DBMS_SQL.DEFINE_COLUMN(lnStocv, 1, lnId_Stoc);
open pCursor for lcSelect
USING lnAn, lnLuna;
loop
fetch pCursor
into item;
exit when pCursor%notfound;
item.acont := NVL(item.acont, 'XXXX');
-- pinfo('item.tva ' || item.tva);
if item.tipg = 0 then
-- pinfo('tipg = 0 item.tva ' || item.tva);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':1', item.an);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':2', item.luna);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':3', item.id_articol);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':4', item.id_gestiune);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':5', item.cont);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':6', item.acont);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':7', item.pret);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':8', NVL(item.id_rul_aux, 0));
DBMS_SQL.BIND_VARIABLE(lnStoca, ':9', NVL(item.serie, '+_'), 100);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':10', NVL(item.pretd, 0));
DBMS_SQL.BIND_VARIABLE(lnStoca, ':11', NVL(item.id_valuta, 0));
DBMS_SQL.BIND_VARIABLE(lnStoca, ':12', NVL(item.lot, '+_'), 100);
DBMS_SQL.BIND_VARIABLE(lnStoca,
':13',
NVL(item.adata_expirare,
TO_DATE('1900-01-01', 'YYYY-MM-DD')));
DBMS_SQL.BIND_VARIABLE(lnStoca, ':14', NVL(item.id_sucursala, 0));
DBMS_SQL.BIND_VARIABLE(lnStoca, ':15', NVL(item.id_lucrare_rez, 0));
DBMS_SQL.BIND_VARIABLE(lnStoca, ':16', NVL(item.id_part_rez, 0));
ignore := DBMS_SQL.EXECUTE(lnStoca);
if item.acont = 'XXXX' then
item.acont := '';
END IF;
IF DBMS_SQL.FETCH_ROWS(lnStoca) > 0 THEN
DBMS_SQL.COLUMN_VALUE(lnStoca, 1, lnId_Stoc);
-- pinfo('tipg = 0, update stoc.id_stoc ' || lnId_Stoc);
-- modificare
lcUpdateStoc := 'UPDATE ' || tcs || '.' || lcTabel ||
' set cant = cant + :1, cante = cante + :2, dataora = :3';
if item.dataout is not null and item.cante > 0 then
lcUpdateStoc := lcUpdateStoc || ',dataout = to_date(''' ||
to_char(item.dataout, 'DDMMYYYY') ||
''',''DDMMYYYY'')';
end if;
if item.datain is not null and item.cant > 0 then
lcUpdateStoc := lcUpdateStoc || ',datain = to_date(''' ||
to_char(item.datain, 'DDMMYYYY') ||
''',''DDMMYYYY'')';
end if;
lcUpdateStoc := lcUpdateStoc || ' where ' || lcIdTabel || ' = :4';
EXECUTE IMMEDIATE lcUpdateStoc
USING item.cant, item.cante, item.dataora, lnId_Stoc;
-- modificare ^
ELSE
-- pinfo('tipg = 0, insert stoc tva ' || item.tva);
EXECUTE IMMEDIATE 'INSERT INTO ' || tcs || '.' || lcTabel ||
' (an, luna, id_articol, pret, cant, cante, cont, acont, id_gestiune,
dataora, datain, dataout, id_rul_aux,serie,tva,pretd,id_valuta,lot,adata_expirare,id_sucursala,id_lucrare_rez,id_part_rez)
VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13,:14,:15,:16,:17,:18,:19,:20,:21,:22)'
USING item.an, item.luna, item.id_articol, item.pret, item.cant, item.cante, item.cont, item.acont, item.id_gestiune, item.dataora, item.datain, item.dataout, item.id_rul_aux, item.serie, item.tva, item.pretd, item.id_valuta, item.lot, item.adata_expirare, item.id_sucursala, item.id_lucrare_rez, item.id_part_rez;
END IF;
else
DBMS_SQL.BIND_VARIABLE(lnStocv, ':1', item.an);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':2', item.luna);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':3', item.id_articol);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':4', item.id_gestiune);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':5', item.cont);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':6', item.acont);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':7', item.pret);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':8', NVL(item.id_rul_aux, 0));
DBMS_SQL.BIND_VARIABLE(lnStocv, ':9', NVL(item.serie, '+_'), 100);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':10', item.pretv);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':11', item.tvav);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':12', item.proc_tvav);
DBMS_SQL.BIND_VARIABLE(lnStocv, ':13', NVL(item.pretd, 0));
DBMS_SQL.BIND_VARIABLE(lnStocv, ':14', NVL(item.id_valuta, 0));
DBMS_SQL.BIND_VARIABLE(lnStocv, ':15', NVL(item.lot, '+_'), 100);
DBMS_SQL.BIND_VARIABLE(lnStocv,
':16',
NVL(item.adata_expirare,
TO_DATE('1900-01-01', 'YYYY-MM-DD')));
DBMS_SQL.BIND_VARIABLE(lnStocv, ':17', NVL(item.id_sucursala, 0));
DBMS_SQL.BIND_VARIABLE(lnStocv, ':18', NVL(item.id_lucrare_rez, 0));
DBMS_SQL.BIND_VARIABLE(lnStocv, ':19', NVL(item.id_part_rez, 0));
ignore := DBMS_SQL.EXECUTE(lnStocv);
if item.acont = 'XXXX' then
item.acont := '';
END IF;
-- pinfo('tipg = 1 item.tva ' || item.tva);
IF DBMS_SQL.FETCH_ROWS(lnStocv) > 0 THEN
DBMS_SQL.COLUMN_VALUE(lnStocv, 1, lnId_Stoc);
-- pinfo('UPDATE STOC.ID ' || lnId_Stoc);
-- modificare
lcUpdateStoc := 'UPDATE ' || tcs || '.' || lcTabel ||
' set cant = cant + :1, cante = cante + :2, dataora = :3';
if item.dataout is not null then
lcUpdateStoc := lcUpdateStoc || ',dataout = to_date(''' ||
to_char(item.dataout, 'DDMMYYYY') ||
''',''DDMMYYYY'')';
end if;
if item.datain is not null then
lcUpdateStoc := lcUpdateStoc || ',datain = to_date(''' ||
to_char(item.datain, 'DDMMYYYY') ||
''',''DDMMYYYY'')';
end if;
lcUpdateStoc := lcUpdateStoc || ' where ' || lcIdTabel || ' = :4';
EXECUTE IMMEDIATE lcUpdateStoc
USING item.cant, item.cante, item.dataora, lnId_Stoc;
-- modificare ^
ELSE
-- pinfo('INSERT INTO STOC.TVA ' || item.tva);
EXECUTE IMMEDIATE 'INSERT INTO ' || tcs || '.' || lcTabel ||
' (an, luna, id_articol, pret, pretv, tvav, proc_tvav, cant, cante, cont, acont, id_gestiune,
dataora, datain, dataout, id_rul_aux, serie, tva, pretd, id_valuta,lot,adata_expirare,id_sucursala,id_lucrare_rez,id_part_rez)
VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15,:16,:17,:18,:19,:20,:21,:22,:23,:24,:25)'
USING item.an, item.luna, item.id_articol, item.pret, item.pretv, item.tvav, item.proc_tvav, item.cant, item.cante, item.cont, item.acont, item.id_gestiune, item.dataora, item.datain, item.dataout, item.id_rul_aux, item.serie, item.tva, item.pretd, item.id_valuta, item.lot, item.adata_expirare, item.id_sucursala, item.id_lucrare_rez, item.id_part_rez;
END IF;
end if;
end loop;
close pCursor;
DBMS_SQL.close_cursor(lnStoca);
DBMS_SQL.close_cursor(lnStocv);
END SCRIE_IN_STOC_OLD;
--------------------------------------------------------------------------------
PROCEDURE SCRIE_IN_STOC(tcS IN VARCHAR2,
tnAn in number,
tnLuna in number,
tnScrie number,
tcTabel in varchar2,
tcIdTabel in varchar2,
tcCondSpec in varchar2) IS
BEGIN
SCRIE_IN_STOC(tnAn, tnLuna, tnScrie);
END;
PROCEDURE SCRIE_IN_STOC(tnAn in number,
tnLuna in number,
tnScrie number,
tnIdGestiune IN RUL.ID_GESTIUNE%TYPE DEFAULT NULL) IS
lnAn act_temp.an%Type := tnAn;
lnLuna act_temp.luna%Type := tnLuna;
lnIdSucursala act.id_sucursala%type;
lcWhereSucursale varchar2(1000);
lcFrom varchar2(1000);
lcFromV varchar2(1000);
lcSql varchar2(32000);
lcWhereGestiune varchar2(1000);
BEGIN
--pinfo('SCRIE_IN_STOC 1');
lnIdSucursala := PACK_CONTAFIN.GET_ID_SUCURSALA();
if lnIdSucursala is not null then
lcWhereSucursale := ' and r.id_sucursala = ' || lnIdSucursala;
end if;
-- SE REFACE FIECARE GESTIUNE
if tnIdGestiune is not null then
lcWhereGestiune := ' and r.id_gestiune = ' || tnIdGestiune;
end if;
lnAn := tnAn;
lnLuna := tnLuna;
IF tnScrie = 1 THEN
-- REFACERE
lcFromV := 'rul r
join vnom_gestiuni g on r.id_gestiune = g.id_gestiune
where r.an = ' || lnAn || ' and r.luna = ' ||
lnLuna ||
' and substr(r.cont,1,2)<>''80'' and r.sters=0 and g.nr_pag in (6,7) ' ||
lcWhereGestiune || lcWhereSucursale;
lcFrom := 'rul r
join vnom_gestiuni g on r.id_gestiune = g.id_gestiune
where r.an = ' || lnAn || ' and r.luna = ' ||
lnLuna ||
' and substr(r.cont,1,2)<>''80'' and r.sters=0 and g.nr_pag not in (6,7)' ||
lcWhereGestiune || lcWhereSucursale;
ELSE
-- SCRIERE
lcFromV := 'rul_temp r
join vnom_gestiuni g on r.id_gestiune = g.id_gestiune
where r.an = ' || lnAn || ' and r.luna = ' ||
lnLuna ||
' and substr(r.cont,1,2)<>''80'' and g.nr_pag in (6,7)';
lcFrom := 'rul_temp r
join vnom_gestiuni g on r.id_gestiune = g.id_gestiune
where r.an = ' || lnAn || ' and r.luna = ' ||
lnLuna ||
' and substr(r.cont,1,2)<>''80'' and g.nr_pag not in (6,7)';
END IF;
-- MARFA LA PRET DE VANZARE (nom_gestiuni.nr_pag in (6,7))
-- are in plus coloanele pretv, tvav, proc_tvav
-- nu grupez si nu fac merge dupa "tva", doar in bag in stoc - pentru ca nici in procedura veche nu cautam dupa tva
lcSql := 'merge into stoc s1
using (select r.an,
r.luna,
r.id_articol,
r.pret,
max(r.tva) as tva,
r.pretv,
r.tvav,
r.proc_tvav,
r.pretd,
r.cont,
r.acont,
r.id_gestiune,
decode(NVL(r.id_rul_aux, 0), 0, NULL, r.id_rul_aux) as id_rul_aux,
r.serie,
decode(NVL(r.id_valuta, 0), 0, NULL, r.id_valuta) as id_valuta,
r.lot,
r.adata_expirare,
decode(NVL(r.id_sucursala, 0), 0, NULL, r.id_sucursala) as id_sucursala,
decode(NVL(r.ID_LUCRARE_REZ, 0), 0, NULL, r.ID_LUCRARE_REZ) as id_lucrare_rez,
decode(NVL(r.ID_PART_REZ, 0), 0, NULL, r.ID_PART_REZ) as id_part_rez,
0 AS CANTS,
SUM(r.CANT) as cant,
SUM(r.CANTE) as cante,
MAX(r.dataora) as dataora,
MAX(nvl(r.datain,r.dataact)) AS datain,
MAX(nvl(r.dataout, r.dataact)) AS dataout
from ' || lcFromV || '
GROUP BY
r.an,
r.luna,
r.id_articol,
r.pret,
r.pretv,
r.tvav,
r.proc_tvav,
r.pretd,
r.cont,
r.acont,
r.id_gestiune,
decode(NVL(r.id_rul_aux, 0), 0, NULL, r.id_rul_aux),
r.serie,
decode(NVL(r.id_valuta, 0), 0, NULL, r.id_valuta),
r.LOT,
r.ADATA_EXPIRARE,
decode(NVL(r.id_sucursala, 0), 0, NULL, r.id_sucursala),
decode(NVL(r.ID_LUCRARE_REZ, 0), 0, NULL, r.ID_LUCRARE_REZ),
decode(NVL(r.ID_PART_REZ, 0), 0, NULL, r.ID_PART_REZ)) s0
ON (s0.an = s1.an and
s0.luna = s1.luna and
s0.id_articol = s1.id_articol and
s0.pret = s1.pret and
s0.pretv = s1.pretv and
s0.tvav = s1.tvav and
s0.proc_tvav = s1.proc_tvav and
NVL(s0.pretd, 0) = NVL(s1.pretd, 0) and
s0.cont = s1.cont and
NVL(s0.acont, ''XXXX'') = NVL(s1.acont, ''XXXX'') and
s0.id_gestiune = s1.id_gestiune and
NVL(s0.id_rul_aux, 0) = NVL(s1.id_rul_aux, 0) and
NVL(s0.serie, ''+_'') = NVL(s1.serie, ''+_'') and
NVL(s0.id_valuta, 0) = NVL(s1.id_valuta, 0) and
NVL(s0.LOT, ''+_'') = NVL(s1.LOT, ''+_'') AND
NVL(s0.ADATA_EXPIRARE, to_date(''1900-01-01'', ''YYYY-MM-DD'')) = NVL(s1.ADATA_EXPIRARE, to_date(''1900-01-01'', ''YYYY-MM-DD'')) and
NVL(s0.id_sucursala, 0) = NVL(s1.id_sucursala, 0) AND
NVL(s0.ID_LUCRARE_REZ, 0) = NVL(s1.ID_LUCRARE_REZ, 0) AND
NVL(s0.ID_PART_REZ, 0) = NVL(s1.ID_PART_REZ, 0))
WHEN MATCHED THEN
UPDATE set s1.cant = s1.cant + s0.cant, s1.cante = s1.cante + s0.cante, s1.dataora = s0.dataora, s1.datain = s0.datain, s1.dataout = s0.dataout, s1.tva = s0.tva
WHEN NOT MATCHED THEN
insert
(an,
luna,
id_articol,
pret,
tva,
pretv,
tvav,
proc_tvav,
pretd,
cant,
cante,
cont,
acont,
id_gestiune,
dataora,
datain,
dataout,
id_rul_aux,
serie,
id_valuta,
lot,
adata_expirare,
id_sucursala,
id_part_rez,
id_lucrare_rez)
values
(s0.an,
s0.luna,
s0.id_articol,
s0.pret,
s0.tva,
s0.pretv,
s0.tvav,
s0.proc_tvav,
s0.pretd,
s0.cant,
s0.cante,
s0.cont,
s0.acont,
s0.id_gestiune,
s0.dataora,
s0.datain,
s0.dataout,
s0.id_rul_aux,
s0.serie,
s0.id_valuta,
s0.lot,
s0.adata_expirare,
s0.id_sucursala,
s0.id_part_rez,
s0.id_lucrare_rez)';
-- pinfo(lcSql);
-- pinfo('SCRIE_IN_STOC 2 ' || lcSql);
execute immediate lcSql;
-- pinfo('SCRIE_IN_STOC 2 ^');
-- MATERII PRIME/MARFA LA PRET DE ACHIZITIE (nom_gestiuni.nr_pag not in (6,7))
lcSql := 'merge into stoc s1
using (select r.an,
r.luna,
r.id_articol,
r.pret,
max(r.tva) as tva,
0 as pretv,
0 as tvav,
0 as proc_tvav,
r.pretd,
r.cont,
r.acont,
r.id_gestiune,
decode(NVL(r.id_rul_aux, 0), 0, NULL, r.id_rul_aux) as id_rul_aux,
r.serie,
decode(NVL(r.id_valuta, 0), 0, NULL, r.id_valuta) as id_valuta,
r.lot,
r.adata_expirare,
decode(NVL(r.id_sucursala, 0), 0, NULL, r.id_sucursala) as id_sucursala,
decode(NVL(r.ID_LUCRARE_REZ, 0), 0, NULL, r.ID_LUCRARE_REZ) as id_lucrare_rez,
decode(NVL(r.ID_PART_REZ, 0), 0, NULL, r.ID_PART_REZ) as id_part_rez,
0 AS CANTS,
SUM(r.CANT) as cant,
SUM(r.CANTE) as cante,
MAX(r.dataora) as dataora,
MAX(nvl(r.datain,r.dataact)) AS datain,
MAX(nvl(r.dataout, r.dataact)) AS dataout
from ' || lcFrom || '
GROUP BY
r.an,
r.luna,
r.id_articol,
r.pret,
r.pretd,
r.cont,
r.acont,
r.id_gestiune,
decode(NVL(r.id_rul_aux, 0), 0, NULL, r.id_rul_aux),
r.serie,
decode(NVL(r.id_valuta, 0), 0, NULL, r.id_valuta),
r.LOT,
r.ADATA_EXPIRARE,
decode(NVL(r.id_sucursala, 0), 0, NULL, r.id_sucursala),
decode(NVL(r.ID_LUCRARE_REZ, 0), 0, NULL, r.ID_LUCRARE_REZ),
decode(NVL(r.ID_PART_REZ, 0), 0, NULL, r.ID_PART_REZ)) s0
ON (s0.an = s1.an and
s0.luna = s1.luna and
s0.id_articol = s1.id_articol and
s0.pret = s1.pret and
NVL(s0.pretd, 0) = NVL(s1.pretd, 0) and
s0.cont = s1.cont and
NVL(s0.acont, ''XXXX'') = NVL(s1.acont, ''XXXX'') and
s0.id_gestiune = s1.id_gestiune and
NVL(s0.id_rul_aux, 0) = NVL(s1.id_rul_aux, 0) and
NVL(s0.serie, ''+_'') = NVL(s1.serie, ''+_'') and
NVL(s0.id_valuta, 0) = NVL(s1.id_valuta, 0) and
NVL(s0.LOT, ''+_'') = NVL(s1.LOT, ''+_'') AND
NVL(s0.ADATA_EXPIRARE, to_date(''1900-01-01'', ''YYYY-MM-DD'')) = NVL(s1.ADATA_EXPIRARE, to_date(''1900-01-01'', ''YYYY-MM-DD'')) and
NVL(s0.id_sucursala, 0) = NVL(s1.id_sucursala, 0) AND
NVL(s0.ID_LUCRARE_REZ, 0) = NVL(s1.ID_LUCRARE_REZ, 0) AND
NVL(s0.ID_PART_REZ, 0) = NVL(s1.ID_PART_REZ, 0))
WHEN MATCHED THEN
UPDATE set s1.cant = s1.cant + s0.cant, s1.cante = s1.cante + s0.cante, s1.dataora = s0.dataora, s1.datain = s0.datain, s1.dataout = s0.dataout, s1.tva = s0.tva
WHEN NOT MATCHED THEN
insert
(an,
luna,
id_articol,
pret,
tva,
pretv,
tvav,
proc_tvav,
pretd,
cant,
cante,
cont,
acont,
id_gestiune,
dataora,
datain,
dataout,
id_rul_aux,
serie,
id_valuta,
lot,
adata_expirare,
id_sucursala,
id_part_rez,
id_lucrare_rez)
values
(s0.an,
s0.luna,
s0.id_articol,
s0.pret,
s0.tva,
s0.pretv,
s0.tvav,
s0.proc_tvav,
s0.pretd,
s0.cant,
s0.cante,
s0.cont,
s0.acont,
s0.id_gestiune,
s0.dataora,
s0.datain,
s0.dataout,
s0.id_rul_aux,
s0.serie,
s0.id_valuta,
s0.lot,
s0.adata_expirare,
s0.id_sucursala,
s0.id_part_rez,
s0.id_lucrare_rez)';
--pinfo('SCRIE_IN_STOC 3 ' || lcSql);
execute immediate lcSql;
-- pinfo('SCRIE_IN_STOC 3 ^');
END SCRIE_IN_STOC;
------------------------------------------------------------------------------------
PROCEDURE SCRIE_IN_RUL_OBINV(tcS IN VARCHAR2) IS
V_LISTA_CAMPURI VARCHAR2(2000) := '';
LN_COD NUMBER(20) := 0;
lnIdFact NUMBER(20) := 0;
lnCuFacturi NUMBER(5) := 0;
LD_DATAORA DATE;
LC_UPDATE VARCHAR2(100) := '';
LC_INSERT VARCHAR2(10000) := '';
lnId_Util act_temp.id_util%Type;
LNAN ACT_TEMP.AN%TYPE;
LNLUNA ACT_TEMP.LUNA%TYPE;
lnIdSucursala act.id_sucursala%type;
BEGIN
lnIdSucursala := PACK_CONTAFIN.GET_ID_SUCURSALA();
V_LISTA_CAMPURI := pack_contafin.LISTA_CAMPURI(tcS, 'RUL_OBINV');
LN_COD := pack_contafin.GET_COD();
LD_DATAORA := pack_contafin.GET_DATAORA();
lnId_Util := pack_contafin.GET_IDUTIL();
lnIdFact := get_idFact();
LNAN := pack_sesiune.GETAN();
LNLUNA := pack_sesiune.GETLUNA();
if nvl(pack_contafin.nSuprascriereCod, 1) = 1 then
UPDATE RUL_TEMP_OBINV
SET COD = LN_COD,
DATAORA = LD_DATAORA,
ID_UTIL = lnId_Util,
AN = lnAn,
LUNA = lnLuna;
else
if nvl(pack_contafin.nSuprascriereAnLuna, 1) = 1 then
UPDATE RUL_TEMP_OBINV
SET DATAORA = LD_DATAORA,
ID_UTIL = lnId_Util,
AN = lnAn,
LUNA = lnLuna;
else
UPDATE RUL_TEMP_OBINV
SET DATAORA = LD_DATAORA, ID_UTIL = lnId_Util;
end if;
end if;
if lnIdFact <> 0 and lnIdFact is not null then
-- la modificare nu setez id_fact
UPDATE RUL_TEMP SET ID_FACT = lnIdFact;
end if;
-- 23.02.2010
-- Nu se suprascrie id_sucursala completat deja in act_temp
UPDATE RUL_TEMP_OBINV
SET ID_SUCURSALA = lnIdSucursala
WHERE NVL(ID_SUCURSALA, 0) = 0;
-- 23.02.2010 ^
UPDATE RUL_TEMP_OBINV SET DATAIN = dataact WHERE CANT <> 0;
UPDATE RUL_TEMP_OBINV SET DATAOUT = dataact WHERE CANTE <> 0;
LC_INSERT := 'INSERT INTO ' || tcS || '.RUL_OBINV (' || V_LISTA_CAMPURI ||
') (SELECT ' || V_LISTA_CAMPURI || ' FROM RUL_TEMP_OBINV)';
-- LC_INSERT := 'INSERT INTO ' || tcS || '.RUL (SELECT ' || V_LISTA_CAMPURI || ' FROM RUL_TEMP)';
EXECUTE IMMEDIATE LC_INSERT;
-- DBMS_OUTPUT.PUT_LINE('INREGISTRARI INSERATE: ' || SQL%ROWCOUNT);
END SCRIE_IN_RUL_OBINV;
------------------------------------------------------------------------------------
PROCEDURE SCRIE_IN_STOC_OBINV(tcS IN VARCHAR2,
tnAn in number,
tnLuna in number,
tnScrie number,
tcTabel in varchar2,
tcIdTabel in varchar2,
tcCondSpec in varchar2) IS
BEGIN
SCRIE_IN_STOC_OBINV(tnAn, tnLuna, tnScrie);
END SCRIE_IN_STOC_OBINV;
------------------------------------------------------------------------------------
PROCEDURE SCRIE_IN_STOC_OBINV(tnAn in number,
tnLuna in number,
tnScrie number) IS
lcSql varchar2(32000);
lcFrom varchar2(1000);
lnAn act_temp.an%Type := tnAn;
lnLuna act_temp.luna%Type := tnLuna;
lcContObInv stoc_obinv.cont%Type;
lnIdSucursala act.id_sucursala%type;
lcWhereSucursale varchar2(1000);
BEGIN
lnIdSucursala := PACK_CONTAFIN.GET_ID_SUCURSALA();
if lnIdSucursala is not null then
lcWhereSucursale := ' and id_sucursala = ' || lnIdSucursala;
end if;
lcContObInv := pack_sesiune.getOptiuneFirma(USER, 'CONTOBINV');
if lcContObinv is null then
lcContObinv := '8039';
end if;
IF tnScrie = 1 THEN
-- REFACERE
lcFrom := 'rul_obinv where sters = 0 and an = ' || lnAn ||
' and luna = ' || lnLuna || lcWhereSucursale;
ELSE
-- SCRIERE
lcFrom := 'rul_temp_obinv where an = ' || lnAn || ' and luna = ' ||
lnLuna;
END IF;
lcSql := 'merge into stoc_obinv s1
using (select an,
luna,
id_articol,
pret,
max(tva) as tva,
max(pretv) as pretv,
max(tvav) as tvav,
max(proc_tvav) as proc_tvav,
max(pretd) as pretd,
0 as cants,
sum(cant) as cant,
sum(cante) as cante,
(case when substr(cont,1,2) = ''80'' then ''' ||
lcContObInv || ''' else cont end) as cont,
acont,
id_gestiune,
max(dataora) as dataora,
max(datain) as datain,
max(dataout) as dataout,
DATAPIF,
DNS_LUNI,
decode(NVL(id_responsabil, 0), 0, NULL, id_responsabil) as id_responsabil,
decode(NVL(id_rul_aux, 0), 0, NULL, id_rul_aux) as id_rul_aux,
serie,
lot,
decode(NVL(id_sucursala, 0), 0, NULL, id_sucursala) as id_sucursala
from ' || lcFrom || '
group by an,
luna,
id_articol,
pret,
case when substr(cont,1,2) = ''80'' then ''' ||
lcContObInv || ''' else cont end,
acont,
id_gestiune,
DATAPIF,
DNS_LUNI,
decode(NVL(id_responsabil, 0), 0, NULL, id_responsabil),
decode(NVL(id_rul_aux, 0), 0, NULL, id_rul_aux),
serie,
lot,
decode(NVL(id_sucursala, 0), 0, NULL, id_sucursala)) s0
ON (s0.an = s1.an and
s0.luna = s1.luna and
s0.id_articol = s1.id_articol and
s0.pret = s1.pret and
s0.cont = s1.cont and
NVL(s0.acont, ''XXXX'') = NVL(s1.acont, ''XXXX'') and
s0.id_gestiune = s1.id_gestiune and
NVL(s0.DATAPIF, to_date(''1900-01-01'', ''YYYY-MM-DD'')) = NVL(s1.DATAPIF, to_date(''1900-01-01'', ''YYYY-MM-DD'')) and
NVL(s0.dns_luni, 0) = NVL(s1.dns_luni, 0) AND
NVL(s0.id_responsabil, 0) = NVL(s1.id_responsabil, 0) and
NVL(s0.id_rul_aux, 0) = NVL(s1.id_rul_aux, 0) and
NVL(s0.serie, ''+_'') = NVL(s1.serie, ''+_'') and
NVL(s0.lot, ''+_'') = NVL(s1.lot, ''+_'') and
NVL(s0.id_sucursala, 0) = NVL(s1.id_sucursala, 0))
WHEN MATCHED THEN
UPDATE set s1.cant = s1.cant + s0.cant, s1.cante = s1.cante + s0.cante, s1.dataora = s0.dataora, s1.datain = s0.datain, s1.dataout = s0.dataout,
s1.tva = s0.tva, s1.pretv = s0.pretv, s1.tvav = s0.tvav, s1.proc_tvav = s0.proc_tvav, s1.pretd = s0.pretd
WHEN NOT MATCHED THEN
insert
(an,
luna,
id_articol,
pret,
tva,
pretv,
tvav,
proc_tvav,
pretd,
cants,
cant,
cante,
cont,
acont,
id_gestiune,
dataora,
datain,
dataout,
DATAPIF,
DNS_LUNI,
id_responsabil,
id_rul_aux,
serie,
lot,
id_sucursala)
values
(s0.an,
s0.luna,
s0.id_articol,
s0.pret,
s0.tva,
s0.pretv,
s0.tvav,
s0.proc_tvav,
s0.pretd,
s0.cants,
s0.cant,
s0.cante,
s0.cont,
s0.acont,
s0.id_gestiune,
s0.dataora,
s0.datain,
s0.dataout,
s0.DATAPIF,
s0.DNS_LUNI,
s0.id_responsabil,
s0.id_rul_aux,
s0.serie,
s0.lot,
s0.id_sucursala)';
-- PINFO(lcSql);
execute immediate lcSql;
END SCRIE_IN_STOC_OBINV;
------------------------------------------------------------------------------------
PROCEDURE SCRIE_IN_STOC_OBINV_OLD(tcS IN VARCHAR2,
tnAn in number,
tnLuna in number,
tnScrie number,
tcTabel in varchar2,
tcIdTabel in varchar2,
tcCondSpec in varchar2) IS
CURSOR CRS_TEMP IS
SELECT an,
luna,
id_articol,
id_gestiune,
cont,
acont,
pret,
id_responsabil,
datapif,
dns_luni,
cant,
cante,
dataora,
dataout,
datain,
id_rul_aux,
serie,
tva,
id_sucursala
FROM RUL_TEMP_OBINV
WHERE 1 = 2;
pCursor tip_ref_cursor;
lnId_Stoc Act_Temp.Id_Act%Type;
lcSelect varchar2(1000);
lcSearcha varchar2(1000);
lnStoca number;
item CRS_TEMP%Rowtype;
ignore number := 0;
V_DATAPIF DATE;
v_acont varchar2(4) := '';
-- V_LISTA_CAMPURI VARCHAR2(2000) := '';
lnAn act_temp.an%Type := tnAn;
lnLuna act_temp.luna%Type := tnLuna;
lcTabel varchar2(50) := tcTabel;
lcIdTabel varchar2(50) := tcIdTabel;
lcCondSpec varchar2(100) := tcCondSpec;
lcContObInv stoc_obinv.cont%Type;
lcUpdateStoc varchar2(1000);
lnIdSucursala act.id_sucursala%type;
lcWhereSucursale varchar2(1000);
BEGIN
lnIdSucursala := PACK_CONTAFIN.GET_ID_SUCURSALA();
if lnIdSucursala is not null then
lcWhereSucursale := ' and id_sucursala = ' || lnIdSucursala;
end if;
lcContObInv := pack_sesiune.getOptiuneFirma(tcS, 'CONTOBINV');
if lcContObinv is null then
lcContObinv := '8039';
end if;
if lcTabel is null then
lcTabel := 'Stoc_obinv';
end if;
if lcIdTabel is null then
lcIdTabel := 'id_Stoc';
end if;
if tcCondSpec is null then
lcCondSpec := '2=2';
end if;
/* V_LISTA_CAMPURI := pack_contafin.LISTA_CAMPURI('contafin_oracle',
'RUL_TEMP_OBINV');*/
lcSearcha := 'select ' || lcIdTabel || ' from ' || tcs || '.' ||
lcTabel ||
' where an = :1 and luna = :2 and id_articol = :3 and id_gestiune = :4 and cont = :5 and nvl(acont,''XXXX'') = :6 and pret = :7 and NVL(id_responsabil,0) = NVL(:8,0) and nvl(datapif,to_date(''1900-01-01'',''YYYY-MM-DD'')) = :9 and dns_luni = :10 and NVL(id_rul_aux,0) = :11 and NVL(serie,''+_'') = :12 and nvl(id_sucursala,0) = :13 and ' ||
lcCondSpec;
IF tnScrie = 1 THEN
-- REFACERE
lnAn := tnAn;
lnLuna := tnLuna;
lcSelect := 'select an, luna, id_articol, id_gestiune, cont, acont, pret, id_responsabil, datapif, dns_luni, cant, cante, dataora, dataout, datain, id_rul_aux, serie, tva, id_sucursala
from ' || tcS ||
'.rul_obinv
where an = :1 and luna = :2 and sters = 0 ' ||
lcWhereSucursale;
ELSE
-- SCRIERE
/* lnAn := pack_contafin.GET_AN();
lnLuna := pack_contafin.GET_LUNA();*/
lnAn := tnAn;
lnLuna := tnLuna;
lcSelect := 'select an, luna, id_articol, id_gestiune, cont, acont, pret, id_responsabil, datapif, dns_luni, cant, cante, dataora, dataout, datain, id_rul_aux, serie, tva, id_sucursala
from rul_Temp_OBINV
where an = :1 and luna = :2 ';
END IF;
lnStoca := dbms_sql.open_cursor;
DBMS_SQL.PARSE(lnStoca, lcSearcha, DBMS_SQL.native);
DBMS_SQL.DEFINE_COLUMN(lnStoca, 1, lnId_Stoc);
open pCursor for lcSelect
USING lnAn, lnLuna;
loop
fetch pCursor
into item;
exit when pCursor%notfound;
if item.acont is null then
v_acont := 'XXXX';
else
v_acont := item.acont;
END IF;
if item.DATAPIF is null then
V_DATAPIF := TO_DATE('1900-01-01', 'YYYY-MM-DD');
ELSE
V_DATAPIF := item.DATAPIF;
END IF;
DBMS_SQL.BIND_VARIABLE(lnStoca, ':1', item.an);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':2', item.luna);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':3', item.id_articol);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':4', item.id_gestiune);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':5', item.cont);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':6', V_ACONT);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':7', item.pret);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':8', item.id_responsabil);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':9', V_DATAPIF);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':10', item.dns_luni);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':11', NVL(item.id_rul_aux, 0));
DBMS_SQL.BIND_VARIABLE(lnStoca, ':12', NVL(item.serie, '+_'), 100);
DBMS_SQL.BIND_VARIABLE(lnStoca, ':13', NVL(item.id_sucursala, 0));
ignore := DBMS_SQL.EXECUTE(lnStoca);
IF DBMS_SQL.FETCH_ROWS(lnStoca) > 0 THEN
DBMS_SQL.COLUMN_VALUE(lnStoca, 1, lnId_Stoc);
-- modificare
lcUpdateStoc := 'UPDATE ' || tcs || '.' || lcTabel ||
' set cant = cant + :1, cante = cante + :2, dataora = :3';
if item.dataout is not null and item.cante > 0 then
lcUpdateStoc := lcUpdateStoc || ',dataout = to_date(''' ||
to_char(item.dataout, 'DDMMYYYY') ||
''',''DDMMYYYY'')';
end if;
if item.datain is not null and item.cant > 0 then
lcUpdateStoc := lcUpdateStoc || ',datain = to_date(''' ||
to_char(item.datain, 'DDMMYYYY') ||
''',''DDMMYYYY'')';
end if;
lcUpdateStoc := lcUpdateStoc || ' where ' || lcIdTabel || ' = :4';
EXECUTE IMMEDIATE lcUpdateStoc
USING item.cant, item.cante, item.dataora, lnId_Stoc;
-- modificare ^
ELSE
EXECUTE IMMEDIATE 'INSERT INTO ' || tcs || '.' || lcTabel ||
' (an, luna, id_articol, pret, cant, cante, cont, acont, id_gestiune, dataora, datain, dataout, id_responsabil, datapif, dns_luni,id_rul_aux, serie,tva,id_sucursala)
VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17,:18,:19)'
USING item.an, item.luna, item.id_articol, item.pret, item.cant, item.cante, item.cont, item.acont, item.id_gestiune, item.dataora, item.datain, item.dataout, item.id_responsabil, item.datapif, item.dns_luni, item.id_rul_aux, item.serie, item.tva, item.id_sucursala;
END IF;
end loop;
close pCursor;
DBMS_SQL.close_cursor(lnStoca);
END SCRIE_IN_STOC_OBINV_OLD;
------------------------------------------------------------------------------------
PROCEDURE SET_DATAORA(V_DATAORA IN ACT_TEMP.DATAORA%TYPE) IS
BEGIN
if V_DATAORA IS NULL THEN
pack_contafin.dDataOra := SYSDATE;
else
pack_contafin.dDataOra := V_DATAORA;
end if;
END SET_DATAORA;
------------------------------------------------------------------------------------
FUNCTION GET_DATAORA RETURN ACT_TEMP.DATAORA%TYPE IS
BEGIN
RETURN PACK_CONTAFIN.dDataOra;
END GET_DATAORA;
------------------------------------------------------------------------------------
/* -- 25.02.2013 : am comentat pentru ca se face unirea id_fact pe listarea din JC/JV
PROCEDURE SET_IDFACT(tdDataAct ACT_TEMP.DATAACT%TYPE,
tcSerie_Act ACT_TEMP.SERIE_ACT%TYPE,
tnNrAct ACT_TEMP.NRACT%TYPE,
tnId_Ctr ACT_TEMP.ID_CTR%TYPE) IS
V_ID_FACT DOCUMENTE.ID_DOC%TYPE;
BEGIN
BEGIN
SELECT ID_DOC
into pack_contafin.nIdFact
FROM DOCUMENTE
WHERE NRACT = tnNrAct
AND NVL(SERIE_ACT, '+-') = NVL(tcSerie_Act, '+-')
AND DATAACT = tdDataAct
AND NVL(ID_CTR, 0) = NVL(tnId_Ctr, 0)
AND STERS = 0;
EXCEPTION
WHEN NO_DATA_FOUND THEN
SELECT SEQ_IdFact.NEXTVAL into pack_contafin.nIdFact FROM DUAL;
END;
END SET_IDFACT;*/
------------------------------------------------------------------------------------
PROCEDURE SET_IDFACT(V_GCS IN VARCHAR2) IS
BEGIN
SELECT SEQ_IdFact.NEXTVAL into pack_contafin.nIdFact FROM DUAL;
END SET_IDFACT;
---------------------------------------------------------------
FUNCTION GET_IDFACT return act_temp.id_fact%Type as
BEGIN
return pack_contafin.nIdFact;
END GET_IDFACT;
---------------------------------------------------------------
FUNCTION GENEREAZA_COD(V_GCS VARCHAR2) RETURN ACT_TEMP.COD%TYPE IS
BEGIN
SELECT SEQ_COD.NEXTVAL INTO PACK_CONTAFIN.nCod FROM DUAL;
return PACK_CONTAFIN.nCod;
END GENEREAZA_COD;
---------------------------------------------------------------
PROCEDURE SET_COD(V_GCS VARCHAR2) IS
BEGIN
SELECT SEQ_COD.NEXTVAL INTO PACK_CONTAFIN.nCod FROM DUAL;
END;
---------------------------------------------------------------
FUNCTION GET_COD return ACT_TEMP.COD%TYPE as
BEGIN
return PACK_CONTAFIN.nCod;
END GET_COD;
---------------------------------------------------------------
PROCEDURE SET_ID_SUCURSALA(tnIdSucursala act_temp.id_sucursala%type) IS
BEGIN
PACK_CONTAFIN.nIdSucursala := tnIdSucursala;
END SET_ID_SUCURSALA;
---------------------------------------------------------------
FUNCTION GET_ID_SUCURSALA RETURN act_temp.id_sucursala%type is
BEGIN
RETURN PACK_CONTAFIN.nIdSucursala;
END GET_ID_SUCURSALA;
---------------------------------------------------------------
PROCEDURE SET_ID_FIRMA(tnIdFirma act_temp.id_sucursala%type) IS
BEGIN
PACK_CONTAFIN.nIdFirma := tnIdFirma;
END SET_ID_FIRMA;
---------------------------------------------------------------
FUNCTION GET_ID_FIRMA RETURN act_temp.id_sucursala%type is
BEGIN
RETURN PACK_CONTAFIN.nIdFirma;
END GET_ID_FIRMA;
---------------------------------------------------------------
PROCEDURE SET_DATA_RON(V_GCS VARCHAR2) IS
lcDataRon varchar2(50);
BEGIN
BEGIN
SELECT varvalue
into lcDataRon
from optiuni
where upper(varname) = 'DATARON';
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
if lcDataRon is not null then
pack_contafin.nAnRON := to_number(substr(lcDataRon, 4, 4));
pack_contafin.nLunaRON := to_number(substr(lcDataRon, 1, 2));
else
pack_contafin.nAnRON := 2005;
pack_contafin.nLunaRON := 7;
end if;
END;
---------------------------------------------------------------
FUNCTION GET_ANRON RETURN ACT_TEMP.AN%TYPE IS
BEGIN
return pack_contafin.nAnRON;
END GET_ANRON;
---------------------------------------------------------------
FUNCTION GET_LUNARON RETURN ACT_TEMP.LUNA%TYPE IS
BEGIN
return pack_contafin.nLunaRon;
END GET_LUNARON;
---------------------------------------------------------------
function getCotaTVAStandard(V_LUNA IN NUMBER, V_AN IN NUMBER) return number is
V_COTA_TVA NUMBER(10, 3);
begin
-- Daca fac select max(proc_tva) from cote_tva, da eroare la deschidere de luna cand fac INSERT INTO cote_tva
/* select MAX(PROC_TVA)
INTO V_COTA_TVA
from cote_tva
where an = V_AN
and luna = V_LUNA
and descriere = 'STANDARD';
IF NVL(V_COTA_TVA, 0) = 0 THEN*/
if V_AN * 12 + V_LUNA >= 2025 * 12 + 8 then
V_COTA_TVA := 1.21;
elsif (V_AN * 12 + V_LUNA >= 2017 * 12 + 1) then
V_COTA_TVA := 1.19;
elsif (V_AN * 12 + V_LUNA >= 2016 * 12 + 1) then
V_COTA_TVA := 1.20;
elsif (V_AN * 12 + V_LUNA >= 2015 * 12 + 1) then
V_COTA_TVA := 1.24;
else
V_COTA_TVA := 1.21;
end if;
/* END IF;*/
return V_COTA_TVA;
end getCotaTVAStandard;
---------------------------------------------------------------
PROCEDURE SET_IDUTIL(tnIdUtil act_temp.id_util%Type) IS
BEGIN
pack_contafin.nIdUtil := tnIdUtil;
END SET_IDUTIL;
---------------------------------------------------------------
FUNCTION GET_IDUTIL RETURN ACT_TEMP.ID_UTIL%TYPE IS
BEGIN
return pack_contafin.nIdUtil;
END GET_IDUTIL;
---------------------------------------------------------------
PROCEDURE SETARE_FACTURA(tcs VARCHAR2) --RETURN NUMBER IS
IS
-- E_FACTURA NUMBER(1) := 0;
lcFromD varchar2(1000);
lcFromC varchar2(1000);
lcSelect varchar2(1000);
-- lcWhere varchar2(1000);
lcUnion varchar2(1000);
-- lcFrom varchar2(1000);
lcJoin varchar2(1000);
lnCont pls_integer; --number(10);
-- lcS varchar2(100) := tcS;
lcCont varchar2(4);
lcExceptie varchar2(4);
lnPozitie number(1);
lnFelCont number(1);
lnInvers number(1);
lcScd varchar2(4);
lcScc varchar2(4);
ignore number(1);
BEGIN
lcSelect := 'SELECT DISTINCT C.CONT, D.FEL_CONT, E.CONT_C AS EXCEPTIE, E.INVERS, E.DEBIT FROM ';
lcFromD := '(select distinct cont from ' || tcs ||
'.vconfig_cont_ireg where cu_inregistrari = 1 INTERSECT select distinct scd ' ||
'from act_temp) C
left join ' || tcs ||
'.vconfig_cont_ireg D on C.CONT = D.CONT
left join ' || tcs ||
'.exceptii_ireg E on C.CONT = E.CONT AND E.INVERS = 1 ';
lcFromC := '(select distinct cont from ' || tcs ||
'.vconfig_cont_ireg where cu_inregistrari = 1 INTERSECT select distinct scc ' ||
'from act_temp) C
left join ' || tcs ||
'.vconfig_cont_ireg D on C.CONT = D.CONT
left join ' || tcs ||
'.exceptii_ireg E on C.CONT = E.CONT AND E.INVERS = 1';
lcUnion := ' UNION ';
-- 12.10.2006
-- MARIUS.MUTU
-- CURATARE -1 DE PE ID_FACT
UPDATE ACT_TEMP SET ID_FACTD = 0 WHERE ID_FACTD = -1;
UPDATE ACT_TEMP SET ID_FACTC = 0 WHERE ID_FACTC = -1;
lnCont := dbms_sql.open_cursor;
-- selectez toate conturile din ACT_TEMP care au INREGISTRARI + exceptiile lor
DBMS_SQL.PARSE(lnCont,
lcSelect || lcFromD || lcJoin || lcUnion || lcSelect ||
lcFromC || lcJoin || ' order by 1',
DBMS_SQL.native);
DBMS_SQL.DEFINE_COLUMN(lnCont, 1, lcCont, 4);
DBMS_SQL.DEFINE_COLUMN(lnCont, 2, lnFelCont);
DBMS_SQL.DEFINE_COLUMN(lnCont, 3, lcExceptie, 4);
DBMS_SQL.DEFINE_COLUMN(lnCont, 4, lnInvers);
DBMS_SQL.DEFINE_COLUMN(lnCont, 5, lnPozitie);
ignore := DBMS_SQL.EXECUTE(lnCont);
LOOP
IF DBMS_SQL.FETCH_ROWS(lnCont) > 0 THEN
-- get column values of the row
DBMS_SQL.COLUMN_VALUE(lnCont, 1, lcCont);
DBMS_SQL.COLUMN_VALUE(lnCont, 2, lnFelCont);
DBMS_SQL.COLUMN_VALUE(lnCont, 3, lcExceptie);
DBMS_SQL.COLUMN_VALUE(lnCont, 4, lnInvers);
DBMS_SQL.COLUMN_VALUE(lnCont, 5, lnPozitie);
lnInvers := nvl(lnInvers, -1);
lnPozitie := nvl(lnPozitie, -1);
lcExceptie := nvl(lcExceptie, 'XXXX');
/*
TODO: owner="marius.mutu" category="Fix" priority="1 - High" created="30.10.2006"
text="ID_FACTD,ID_FACTC = -1 UNDE CONT_EXCEPTIE <> TOATE CONTURILE DE EXCEPTIE"
*/
if lnFelCont = 0 then
EXECUTE IMMEDIATE 'UPDATE ACT_TEMP SET id_fact = -1 where scd = :1 and (id_fact = 0 or id_fact is null) '
USING lcCont;
EXECUTE IMMEDIATE 'UPDATE ACT_TEMP SET id_factc = -1 where scc = :1 and scd <> :2 and (id_factc = 0 or id_factc is null) '
USING lcCont, lcExceptie;
else
EXECUTE IMMEDIATE 'UPDATE ACT_TEMP SET id_fact = -1 where scc = :1 and (id_fact = 0 or id_fact is null)'
USING lcCont;
EXECUTE IMMEDIATE 'UPDATE ACT_TEMP SET id_factd = -1 where scd = :1 and scc <> :2 and (id_factd = 0 or id_factd is null) '
USING lcCont, lcExceptie;
end if;
if lnInvers = 1 then
if lnPozitie = 0 then
lcScd := lcCont;
lcScc := lcExceptie;
EXECUTE IMMEDIATE 'UPDATE ACT_TEMP SET id_fact = -1 where scd = :1 and scc = :2 and (id_fact = 0 or id_fact is null)'
USING lcScd, lcScc;
end if;
if lnPozitie = 1 then
lcScc := lcCont;
lcScD := lcExceptie;
EXECUTE IMMEDIATE 'UPDATE ACT_TEMP SET id_fact = -1 where scd = :1 and scc = :2 and (id_fact = 0 or id_fact is null)'
USING lcScd, lcScc;
end if;
end if;
else
exit;
end if;
end loop;
dbms_sql.close_cursor(lnCont);
-- 05.04.2005 -- MARIUS, AM PUS ID_FACT = -1 AI SA GENEREZE ID_FACT LA ORICE DOCUMENT
EXECUTE IMMEDIATE 'UPDATE ACT_TEMP SET id_fact = -1 where (id_fact = 0 or id_fact is null) ';
-- RETURN E_FACTURA;
END SETARE_FACTURA;
---------------------------------------------------------------
FUNCTION LISTA_CAMPURI(V_GCS VARCHAR2, tcTableName IN VARCHAR2)
RETURN VARCHAR2 IS
V_LISTA_CAMPURI VARCHAR2(2000) := '';
-- I NUMBER;
lcTableName varchar2(100) := upper(tcTableName);
BEGIN
-- I := 0;
FOR item in (select column_name
from all_tab_columns t
where t.TABLE_NAME = lcTableName
AND t.OWNER = upper(V_GCS)) LOOP
-- I := I + 1;
-- DBMS_OUTPUT.put_line(I || ', ' || ITEM.COLUMN_NAME);
V_LISTA_CAMPURI := V_LISTA_CAMPURI || ITEM.COLUMN_NAME || ',';
END LOOP;
IF LENGTH(V_LISTA_CAMPURI) > 1 THEN
V_LISTA_CAMPURI := SUBSTR(V_LISTA_CAMPURI,
1,
LENGTH(V_LISTA_CAMPURI) - 1);
END IF;
RETURN V_LISTA_CAMPURI;
END LISTA_CAMPURI;
------------------------------------------------------------------------------
PROCEDURE set_suprascriereCod(V_VALOARE IN NUMBER) IS
BEGIN
pack_contafin.nSuprascriereCod := V_VALOARE;
END set_suprascriereCod;
------------------------------------------------------------------------------
PROCEDURE set_suprascriereAnLuna(V_VALOARE IN NUMBER) IS
BEGIN
pack_contafin.nSuprascriereAnLuna := V_VALOARE;
END set_suprascriereAnLuna;
------------------------------------------------------------------------------
PROCEDURE RESET_VARIABLES IS
BEGIN
nCod := 0;
nIdFact := 0;
nIdUtil := 0;
dDataOra := SYSDATE;
nSuprascriereCod := 1;
nSuprascriereAnLuna := 1;
END RESET_VARIABLES;
--------------------------
procedure SCRIE_JV_2007(tnAn JV2007.AN%TYPE,
tnLuna JV2007.LUNA%TYPE,
tnScrie number) IS
lcSql VARCHAR2(32767);
lcContTvaDeductibil ACT.SCD%TYPE := '4426';
lcContTvaColectat ACT.SCD%TYPE := '4427';
lcContTvaNeexigibil ACT.SCD%TYPE := '4428';
lcContDebitRegularizare VARCHAR2(100) := '4111,461,4511,4118';
lcContCreditRegularizare VARCHAR2(100) := '418';
lnIdMinJtvaColoana JTVA_COLOANE.ID_JTVA_COLOANA%TYPE := 1;
lnIdMaxJtvaColoana JTVA_COLOANE.ID_JTVA_COLOANA%TYPE := 100;
lcTabelSursa VARCHAR2(100);
lcCondSucursala VARCHAR2(1000);
begin
-- tnScrie: 0 - scriere; 1 - refacere; 2 - stergere
-- 0,2 - selectie din act_temp
-- 1 - selectie din act
if pack_contafin.get_id_sucursala() is not null then
lcCondSucursala := ' AND ALIAS.ID_SUCURSALA = ' ||
pack_contafin.GET_ID_SUCURSALA();
end if;
if tnScrie in (pack_contafin.nScriere, pack_contafin.nStergere) then
lcTabelSursa := 'act_temp'; -- scriere, stergere
else
lcTabelSursa := 'act'; -- refacere
end if;
pack_contafin.completeaza_jv_2007(tnAn,
tnLuna,
lcTabelSursa,
lcCondSucursala);
MERGE INTO JV2007 J
USING (SELECT AN,
LUNA,
ID_FDOC,
ID_FACT,
NRACT,
SERIE_ACT,
DATAACT,
DATAIREG,
ID_PART,
COD,
(CASE
WHEN NOTA_TVA_EX = 1 THEN
0
WHEN REGULARIZARE > 0 THEN
TOTCTVA - DECODE(RO24NB, 0, 0, RO24B) -
DECODE(RO20NB, 0, 0, RO20B) - DECODE(RO21NB, 0, 0, RO21B) -
DECODE(RO11NB, 0, 0, RO11B) - DECODE(RO19NB, 0, 0, RO19B) -
DECODE(RO9NB, 0, 0, RO9B) - DECODE(RO5NB, 0, 0, RO5B) -
DECODE(RO24NT, 0, 0, RO24T) - DECODE(RO20NT, 0, 0, RO20T) -
DECODE(RO21NT, 0, 0, RO21T) - DECODE(RO11NT, 0, 0, RO11T) -
DECODE(RO19NT, 0, 0, RO19T) - DECODE(RO9NT, 0, 0, RO9T) -
DECODE(RO5NT, 0, 0, RO5T) -
DECODE(RO24NTR, 0, RO24TR, RO24NTR) -
DECODE(RO20NTR, 0, RO20TR, RO20NTR) -
DECODE(RO21NTR, 0, RO21TR, RO21NTR) -
DECODE(RO11NTR, 0, RO11TR, RO11NTR) -
DECODE(RO19NTR, 0, RO19TR, RO19NTR) -
DECODE(RO9NTR, 0, RO9TR, RO9NTR) -
DECODE(RO5NTR, 0, RO5TR, RO5NTR)
ELSE
TOTCTVA - DECODE(RO24NB, 0, 0, RO24B) -
DECODE(RO20NB, 0, 0, RO20B) - DECODE(RO21NB, 0, 0, RO21B) -
DECODE(RO11NB, 0, 0, RO11B) - DECODE(RO19NB, 0, 0, RO19B) -
DECODE(RO9NB, 0, 0, RO9B) - DECODE(RO5NB, 0, 0, RO5B) -
DECODE(RO24NT, 0, 0, RO24T) - DECODE(RO20NT, 0, 0, RO20T) -
DECODE(RO21NT, 0, 0, RO21T) - DECODE(RO11NT, 0, 0, RO11T) -
DECODE(RO19NT, 0, 0, RO19T) - DECODE(RO9NT, 0, 0, RO9T) -
DECODE(RO5NT, 0, 0, RO5T)
END) AS TOTCTVA,
(CASE
WHEN NOTA_TVA_EX = 1 THEN
0
WHEN REGULARIZARE > 0 THEN
DECODE(RO24NB, 0, RO24B, RO24NB) +
DECODE(RO20NB, 0, RO20B, RO20NB) +
DECODE(RO21NB, 0, RO21B, RO21NB) +
DECODE(RO11NB, 0, RO11B, RO11NB) +
DECODE(RO19NB, 0, RO19B, RO19NB) +
DECODE(RO9NB, 0, RO9B, RO9NB) +
DECODE(RO5NB, 0, RO5B, RO5NB) -
DECODE(RO24NB, 0, RO24TR, RO24NTR) -
DECODE(RO20NB, 0, RO20TR, RO20NTR) -
DECODE(RO21NB, 0, RO21TR, RO21NTR) -
DECODE(RO11NB, 0, RO11TR, RO11NTR) -
DECODE(RO19NB, 0, RO19TR, RO19NTR) -
DECODE(RO9NB, 0, RO9TR, RO9NTR) -
DECODE(RO5NB, 0, RO5TR, RO5NTR)
ELSE
DECODE(RO24NB, 0, RO24B, RO24NB) +
DECODE(RO20NB, 0, RO20B, RO20NB) +
DECODE(RO21NB, 0, RO21B, RO21NB) +
DECODE(RO11NB, 0, RO11B, RO11NB) +
DECODE(RO19NB, 0, RO19B, RO19NB) +
DECODE(RO9NB, 0, RO9B, RO9NB) +
DECODE(RO5NB, 0, RO5B, RO5NB)
END) AS TOTFTVATAX,
DECODE(NOTA_TVA_EX,
1,
0,
DECODE(RO24NT, 0, RO24T, RO24NT) +
DECODE(RO20NT, 0, RO20T, RO20NT) +
DECODE(RO21NT, 0, RO21T, RO21NT) +
DECODE(RO11NT, 0, RO11T, RO11NT) +
DECODE(RO19NT, 0, RO19T, RO19NT) +
DECODE(RO9NT, 0, RO9T, RO9NT) +
DECODE(RO5NT, 0, RO5T, RO5NT)) AS TOTTVATAX,
ROTI + CESCDD1 + CESCDD2 + CEOPTR + CESVDD + CESVFDD +
CESVFS + WRSCDD + WRSCDDAB + WRSCDDCD + FODD + FOFDD +
WRSCFDD + WRN AS TOTNETAX,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO24B,
0,
DECODE(RO24T, 0, 0, ROUND(RO24T / 0.24, 2)),
RO24B - RO24TR)
ELSE
DECODE(RO24B,
0,
DECODE(RO24T, 0, 0, ROUND(RO24T / 0.24, 2)),
RO24B)
END) AS RO24B,
RO24T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO20B,
0,
DECODE(RO20T, 0, 0, ROUND(RO20T / 0.20, 2)),
RO20B - RO20TR)
ELSE
DECODE(RO20B,
0,
DECODE(RO20T, 0, 0, ROUND(RO20T / 0.20, 2)),
RO20B)
END) AS RO20B,
RO20T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO21B,
0,
DECODE(RO21T, 0, 0, ROUND(RO21T / 0.21, 2)),
RO21B - RO21TR)
ELSE
DECODE(RO21B,
0,
DECODE(RO21T, 0, 0, ROUND(RO21T / 0.21, 2)),
RO21B)
END) AS RO21B,
RO21T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO11B,
0,
DECODE(RO11T, 0, 0, ROUND(RO11T / 0.11, 2)),
RO11B - RO11TR)
ELSE
DECODE(RO11B,
0,
DECODE(RO11T, 0, 0, ROUND(RO11T / 0.11, 2)),
RO11B)
END) AS RO11B,
RO11T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO19B,
0,
DECODE(RO19T, 0, 0, ROUND(RO19T / 0.19, 2)),
RO19B - RO19TR)
ELSE
DECODE(RO19B,
0,
DECODE(RO19T, 0, 0, ROUND(RO19T / 0.19, 2)),
RO19B)
END) AS RO19B,
RO19T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO9B,
0,
DECODE(RO9T, 0, 0, ROUND(RO9T / 0.09, 2)),
RO9B - RO9TR)
ELSE
DECODE(RO9B,
0,
DECODE(RO9T, 0, 0, ROUND(RO9T / 0.09, 2)),
RO9B)
END) AS RO9B,
RO9T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO5B,
0,
DECODE(RO5T, 0, 0, ROUND(RO5T / 0.05, 2)),
RO5B - RO5TR)
ELSE
DECODE(RO5B,
0,
DECODE(RO5T, 0, 0, ROUND(RO5T / 0.05, 2)),
RO5B)
END) AS RO5B,
RO5T,
(CASE
WHEN REGULARIZARE > 0 THEN
RO24NB - RO24NTR
ELSE
RO24NB
END) AS RO24NB,
RO24NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO20NB - RO20NTR
ELSE
RO20NB
END) AS RO20NB,
RO20NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO21NB - RO21NTR
ELSE
RO21NB
END) AS RO21NB,
RO21NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO11NB - RO11NTR
ELSE
RO11NB
END) AS RO11NB,
RO11NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO19NB - RO19NTR
ELSE
RO19NB
END) AS RO19NB,
RO19NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO9NB - RO9NTR
ELSE
RO9NB
END) AS RO9NB,
RO9NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO5NB - RO5NTR
ELSE
RO5NB
END) AS RO5NB,
RO5NT,
ROTI,
CESCDD1,
CESCDD2,
CEOPTR,
CESVDD,
CESVFDD,
CESVFS,
WRSCDD,
WRSCDDAB,
WRSCDDCD,
FODD,
FOFDD,
WRSCFDD,
WRN,
RORTC24,
RORTC20,
RORTC21,
RORTC11,
RORTC19,
RORTC9,
RORTC5,
ID_SUCURSALA
FROM (SELECT JV.AN,
JV.LUNA,
MAX(JV.ID_FDOC) AS ID_FDOC,
JV.ID_FACT,
JV.NRACT,
JV.SERIE_ACT,
JV.DATAACT,
JV.DATAIREG,
MAX(JV.ID_PART) AS ID_PART,
JV.ID_SUCURSALA,
MIN(JV.COD) AS COD,
MIN(JV.NOTA_TVA_EX) AS NOTA_TVA_EX,
sum(CASE
WHEN NVL(JV.ID_JTVA_COLOANA, 0) BETWEEN 1 AND 100 THEN
JV.suma
ELSE
0
END) TOTCTVA,
sum(DECODE(JV.ID_JTVA_COLOANA, 15, JV.suma, 0)) RO24B,
sum(DECODE(JV.ID_JTVA_COLOANA, 16, JV.suma, 0)) RO24T,
sum(DECODE(JV.ID_JTVA_COLOANA, 27, JV.suma, 0)) RO20B,
sum(DECODE(JV.ID_JTVA_COLOANA, 28, JV.suma, 0)) RO20T,
sum(DECODE(JV.ID_JTVA_COLOANA, 35, JV.suma, 0)) RO21B,
sum(DECODE(JV.ID_JTVA_COLOANA, 36, JV.suma, 0)) RO21T,
sum(DECODE(JV.ID_JTVA_COLOANA, 1, JV.suma, 0)) RO19B,
sum(DECODE(JV.ID_JTVA_COLOANA, 2, JV.suma, 0)) RO19T,
sum(DECODE(JV.ID_JTVA_COLOANA, 3, JV.suma, 0)) RO9B,
sum(DECODE(JV.ID_JTVA_COLOANA, 4, JV.suma, 0)) RO9T,
sum(DECODE(JV.ID_JTVA_COLOANA, 13, JV.suma, 0)) RO5B,
sum(DECODE(JV.ID_JTVA_COLOANA, 14, JV.suma, 0)) RO5T,
sum(DECODE(JV.ID_JTVA_COLOANA, 39, JV.suma, 0)) RO11B,
sum(DECODE(JV.ID_JTVA_COLOANA, 40, JV.suma, 0)) RO11T,
sum(DECODE(JV.ID_JTVA_COLOANA, 5, JV.suma, 0)) ROTI,
sum(DECODE(JV.ID_JTVA_COLOANA, 6, JV.suma, 0)) CESCDD1,
sum(DECODE(JV.ID_JTVA_COLOANA, 7, JV.suma, 0)) CESCDD2,
sum(DECODE(JV.ID_JTVA_COLOANA, 17, JV.suma, 0)) CEOPTR,
sum(DECODE(JV.ID_JTVA_COLOANA, 18, JV.suma, 0)) CESVDD,
sum(DECODE(JV.ID_JTVA_COLOANA, 19, JV.suma, 0)) CESVFDD,
sum(DECODE(JV.ID_JTVA_COLOANA, 20, JV.suma, 0)) CESVFS,
sum(DECODE(JV.ID_JTVA_COLOANA, 8, JV.suma, 0)) WRSCDD,
sum(DECODE(JV.ID_JTVA_COLOANA, 33, JV.suma, 0)) WRSCDDAB,
sum(DECODE(JV.ID_JTVA_COLOANA, 34, JV.suma, 0)) WRSCDDCD,
sum(DECODE(JV.ID_JTVA_COLOANA, 9, JV.suma, 0)) FODD,
sum(DECODE(JV.ID_JTVA_COLOANA, 10, JV.suma, 0)) FOFDD,
sum(DECODE(JV.ID_JTVA_COLOANA, 11, JV.suma, 0)) WRSCFDD,
sum(DECODE(JV.ID_JTVA_COLOANA, 12, JV.suma, 0)) WRN,
sum(DECODE(JV.ID_JTVA_COLOANA, 1006, JV.suma, 0)) RORTC24,
sum(DECODE(JV.ID_JTVA_COLOANA, 1007, JV.suma, 0)) RORTC20,
sum(DECODE(JV.ID_JTVA_COLOANA, 1016, JV.suma, 0)) RORTC21,
sum(DECODE(JV.ID_JTVA_COLOANA, 1017, JV.suma, 0)) RORTC11,
sum(DECODE(JV.ID_JTVA_COLOANA, 1008, JV.suma, 0)) RORTC19,
sum(DECODE(JV.ID_JTVA_COLOANA, 1009, JV.suma, 0)) RORTC9,
sum(DECODE(JV.ID_JTVA_COLOANA, 1010, JV.suma, 0)) RORTC5,
sum(DECODE(JV.ID_JTVA_COLOANA, 21, JV.suma, 0)) RO24NB,
sum(DECODE(JV.ID_JTVA_COLOANA, 22, JV.suma, 0)) RO24NT,
sum(DECODE(JV.ID_JTVA_COLOANA, 29, JV.suma, 0)) RO20NB,
sum(DECODE(JV.ID_JTVA_COLOANA, 30, JV.suma, 0)) RO20NT,
sum(DECODE(JV.ID_JTVA_COLOANA, 37, JV.suma, 0)) RO21NB,
sum(DECODE(JV.ID_JTVA_COLOANA, 38, JV.suma, 0)) RO21NT,
sum(DECODE(JV.ID_JTVA_COLOANA, 41, JV.suma, 0)) RO11NB,
sum(DECODE(JV.ID_JTVA_COLOANA, 42, JV.suma, 0)) RO11NT,
sum(DECODE(JV.ID_JTVA_COLOANA, 31, JV.suma, 0)) RO19NB,
sum(DECODE(JV.ID_JTVA_COLOANA, 32, JV.suma, 0)) RO19NT,
sum(DECODE(JV.ID_JTVA_COLOANA, 23, JV.suma, 0)) RO9NB,
sum(DECODE(JV.ID_JTVA_COLOANA, 24, JV.suma, 0)) RO9NT,
sum(DECODE(JV.ID_JTVA_COLOANA, 25, JV.suma, 0)) RO5NB,
sum(DECODE(JV.ID_JTVA_COLOANA, 26, JV.suma, 0)) RO5NT,
SUM(JV.REGULARIZARE) AS REGULARIZARE,
SUM(CASE
WHEN JV.ID_JTVA_COLOANA = 16 AND JV.SCD = '4428' THEN
JV.SUMA
ELSE
0
END) RO24TR,
SUM(CASE
WHEN JV.ID_JTVA_COLOANA = 28 AND JV.SCD = '4428' THEN
JV.SUMA
ELSE
0
END) RO20TR,
SUM(CASE
WHEN JV.ID_JTVA_COLOANA = 36 AND JV.SCD = '4428' THEN
JV.SUMA
ELSE
0
END) RO21TR,
SUM(CASE
WHEN JV.ID_JTVA_COLOANA = 40 AND JV.SCD = '4428' THEN
JV.SUMA
ELSE
0
END) RO11TR,
SUM(CASE
WHEN JV.ID_JTVA_COLOANA = 2 AND JV.SCD = '4428' THEN
JV.SUMA
ELSE
0
END) RO19TR,
SUM(CASE
WHEN JV.ID_JTVA_COLOANA = 4 AND JV.SCD = '4428' THEN
JV.SUMA
ELSE
0
END) RO9TR,
SUM(CASE
WHEN JV.ID_JTVA_COLOANA = 14 AND JV.SCD = '4428' THEN
JV.SUMA
ELSE
0
END) RO5TR,
SUM(CASE
WHEN JV.ID_JTVA_COLOANA = 1016 AND JV.SCD = '4428' THEN
JV.SUMA
ELSE
0
END) RORTD21,
SUM(CASE
WHEN JV.ID_JTVA_COLOANA = 1017 AND JV.SCD = '4428' THEN
JV.SUMA
ELSE
0
END) RORTD11,
SUM(CASE
WHEN ID_JTVA_COLOANA = 22 AND SCD = '4428' THEN
SUMA
ELSE
0
END) RO24NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 30 AND SCD = '4428' THEN
SUMA
ELSE
0
END) RO20NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 32 AND SCD = '4428' THEN
SUMA
ELSE
0
END) RO19NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 24 AND SCD = '4428' THEN
SUMA
ELSE
0
END) RO9NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 26 AND SCD = '4428' THEN
SUMA
ELSE
0
END) RO5NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 38 AND SCD = '4428' THEN
SUMA
ELSE
0
END) RO21NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 42 AND SCD = '4428' THEN
SUMA
ELSE
0
END) RO11NTR
FROM (SELECT A.AN,
A.LUNA,
(CASE
WHEN A.NRACT <> D.NRACT or
A.DATAACT <> D.DATAACT THEN
1
ELSE
0
END) AS NOTA_TVA_EX,
(CASE
WHEN A.NRACT <> D.NRACT or
A.DATAACT <> D.DATAACT OR
A.ID_SET <> D.ID_SET OR
NVL(A.SERIE_ACT, 'X') <>
NVL(D.SERIE_ACT, 'X') THEN
NULL
ELSE
A.ID_FDOC
END) AS ID_FDOC,
A.ID_FACT,
(CASE
WHEN A.NRACT <> D.NRACT THEN
D.NRACT
ELSE
A.NRACT
END) AS NRACT,
D.SERIE_ACT,
(CASE
WHEN A.NRACT <> D.NRACT or
A.DATAACT <> D.DATAACT THEN
TRUNC(D.DATAACT)
ELSE
TRUNC(A.DATAACT)
END) AS DATAACT,
(CASE
WHEN A.NRACT <> D.NRACT or
NVL(A.DATAIREG, A.DATAACT) <>
NVL(D.DATAIREG, D.DATAACT) THEN
TRUNC(NVL(D.DATAIREG, D.DATAACT))
ELSE
TRUNC(NVL(A.DATAIREG, A.DATAACT))
END) AS DATAIREG,
A.COD,
A.SCD,
A.SCC,
-- 4426 = 4427 sau 4428 = 4427 nu au parteneri
MAX(DECODE(E.EXCEPTIE,
1,
A.ID_PARTC,
(CASE
-- ESTE POSIBIL SA FIE DOAR 5121 = 419 FARA 4111 = 4427, TREBUIE PARTENERUL 419
WHEN A.SCC = '419' THEN
A.ID_PARTC
WHEN A.SCD IN (lcContTvaDeductibil,
lcContTvaNeexigibil) OR
SUBSTR(A.SCD, 1, 1) = '5' THEN
-9999999999
ELSE
A.ID_PARTD
END))) OVER(PARTITION BY A.AN, A.LUNA, A.ID_FDOC, A.NRACT, A.DATAACT, A.COD) AS ID_PART,
-- INVERSARE SUME LA EXCEPTII
DECODE(A.ID_SET, 10616, -1, 1) *
DECODE(E.EXCEPTIE, 1, -A.SUMA, A.SUMA) AS SUMA,
-- MARCA REGULARIZARE FACTURI NEINTOCMITE
(CASE
WHEN INSTR(lcContDebitRegularizare, A.scd) > 0 and
INSTR(lcContCreditRegularizare, A.scc) > 0 THEN
1
ELSE
0
END) AS REGULARIZARE,
A.ID_JTVA_COLOANA,
A.ID_SUCURSALA
FROM (SELECT AN,
LUNA,
ID_FDOC,
ID_FACT,
NRACT,
SERIE_ACT,
DATAACT,
DATAIREG,
COD,
SCD,
SCC,
ID_PARTC,
ID_PARTD,
ID_SET,
SUMA,
ID_JTVA_COLOANA,
ID_SUCURSALA,
STERS
FROM ACT_TEMP
WHERE lcTabelSursa = 'act_temp'
AND AN = tnAn
AND LUNA = tnLuna
AND STERS = 0
AND (ID_JTVA_COLOANA BETWEEN
lnIdMinJtvaColoana AND
lnIdMaxJtvaColoana OR
ID_JTVA_COLOANA BETWEEN 1006 AND 1010)
AND ID_SET <> 10621
UNION ALL
SELECT AN,
LUNA,
ID_FDOC,
ID_FACT,
NRACT,
SERIE_ACT,
DATAACT,
DATAIREG,
COD,
SCD,
SCC,
ID_PARTC,
ID_PARTD,
ID_SET,
SUMA,
ID_JTVA_COLOANA,
ID_SUCURSALA,
STERS
FROM ACT
WHERE lcTabelSursa = 'act'
AND AN = tnAn
AND LUNA = tnLuna
AND STERS = 0
AND (ID_JTVA_COLOANA BETWEEN
lnIdMinJtvaColoana AND
lnIdMaxJtvaColoana OR
ID_JTVA_COLOANA BETWEEN 1006 AND 1010)
AND ID_SET <> 10621) A
LEFT JOIN (SELECT DISTINCT 1 AS EXCEPTIE,
DECODE(DEBIT,
1,
CONT_C,
CONT) AS SCD,
DECODE(DEBIT,
1,
CONT,
CONT_C) AS SCC
FROM EXCEPTII_IREG
WHERE INVERS = 1
AND IN_TVA = 1) E
ON A.SCD = E.SCD
AND A.SCC = E.SCC
LEFT JOIN DOCUMENTE D
ON A.ID_FACT = D.ID_DOC
WHERE A.AN = tnAn
and A.LUNA = tnLuna
and A.STERS = 0
AND (A.ID_JTVA_COLOANA between lnIdMinJtvaColoana and
lnIdMaxJtvaColoana OR
A.ID_JTVA_COLOANA BETWEEN 1006 AND 1010)
-- IN JURNALUL DE VANZARI NU INTRA FACTURILE NEINTOCMITE + INCASARILE
-- SAU COMPENSARI 419 CU EXPLICATIE TVA
AND A.ID_SET <> 10621
AND NOT (TRIM(NVL(A.SCD, 'X')) = '418' OR
(TRIM(NVL(A.SCD, 'X')) not in
('4111', '461', '4511', '4118') AND
TRIM(NVL(A.SCC, 'X')) = '418'))
AND nvl2(pack_contafin.GET_ID_SUCURSALA(),
A.ID_SUCURSALA,
0) =
nvl(pack_contafin.GET_ID_SUCURSALA(), 0)) JV
GROUP BY JV.AN,
JV.LUNA,
JV.ID_FACT,
JV.NRACT,
JV.SERIE_ACT,
JV.DATAACT,
JV.DATAIREG,
JV.ID_SUCURSALA)) S
ON (J.AN = S.AN AND J.LUNA = S.LUNA AND J.ID_FACT = S.ID_FACT AND NVL(J.ID_SUCURSALA, -99) = NVL(S.ID_SUCURSALA, -99))
WHEN MATCHED THEN
UPDATE
SET J.TOTCTVA = J.TOTCTVA + (CASE
WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND
EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN
S.TOTCTVA
ELSE
0
END),
J.TOTFTVATAX = J.TOTFTVATAX + (CASE
WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND
EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN
S.TOTFTVATAX
ELSE
0
END),
J.TOTTVATAX = J.TOTTVATAX + (CASE
WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND
EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN
S.TOTTVATAX
ELSE
0
END),
J.TOTNETAX = J.TOTNETAX + (CASE
WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND
EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN
S.TOTNETAX
ELSE
0
END),
J.RO24B = J.RO24B + NVL(S.RO24B, 0) + (CASE
WHEN NVL(S.RO24B, 0) <> 0 AND NVL(J.RO24NT, 0) <> 0 AND
NVL(J.RO24NT, 0) - (NVL(J.RO24T, 0) + NVL(S.RO24T, 0)) = 0 THEN
NVL(J.RO24NB, 0) - (NVL(J.RO24B, 0) + NVL(S.RO24B, 0))
ELSE
0
END),
J.RO24T = J.RO24T + S.RO24T,
J.RO20B = J.RO20B + NVL(S.RO20B, 0) + (CASE
WHEN NVL(S.RO20B, 0) <> 0 AND NVL(J.RO20NT, 0) <> 0 AND
NVL(J.RO20NT, 0) - (NVL(J.RO20T, 0) + NVL(S.RO20T, 0)) = 0 THEN
NVL(J.RO20NB, 0) - (NVL(J.RO20B, 0) + NVL(S.RO20B, 0))
ELSE
0
END),
J.RO20T = J.RO20T + S.RO20T,
J.RO21B = J.RO21B + NVL(S.RO21B, 0) + (CASE
WHEN NVL(S.RO21B, 0) <> 0 AND NVL(J.RO21NT, 0) <> 0 AND
NVL(J.RO21NT, 0) - (NVL(J.RO21T, 0) + NVL(S.RO21T, 0)) = 0 THEN
NVL(J.RO21NB, 0) - (NVL(J.RO21B, 0) + NVL(S.RO21B, 0))
ELSE
0
END),
J.RO21T = J.RO21T + S.RO21T,
J.RO11B = J.RO11B + NVL(S.RO11B, 0) + (CASE
WHEN NVL(S.RO11B, 0) <> 0 AND NVL(J.RO11NT, 0) <> 0 AND
NVL(J.RO11NT, 0) - (NVL(J.RO11T, 0) + NVL(S.RO11T, 0)) = 0 THEN
NVL(J.RO11NB, 0) - (NVL(J.RO11B, 0) + NVL(S.RO11B, 0))
ELSE
0
END),
J.RO11T = J.RO11T + S.RO11T,
J.RO19B = J.RO19B + NVL(S.RO19B, 0) + (CASE
WHEN NVL(S.RO19B, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND
NVL(J.RO19NT, 0) - (NVL(J.RO19T, 0) + NVL(S.RO19T, 0)) = 0 THEN
NVL(J.RO19NB, 0) - (NVL(J.RO19B, 0) + NVL(S.RO19B, 0))
ELSE
0
END),
J.RO19T = J.RO19T + S.RO19T,
J.RO9B = J.RO9B + NVL(S.RO9B, 0) + (CASE
WHEN NVL(S.RO9B, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND
NVL(J.RO9NT, 0) - (NVL(J.RO9T, 0) + NVL(S.RO9T, 0)) = 0 THEN
NVL(J.RO9NB, 0) - (NVL(J.RO9B, 0) + NVL(S.RO9B, 0))
ELSE
0
END),
J.RO9T = J.RO9T + S.RO9T,
J.RO5B = J.RO5B + NVL(S.RO5B, 0) + (CASE
WHEN NVL(S.RO5B, 0) <> 0 AND NVL(J.RO5NT, 0) <> 0 AND
NVL(J.RO5NT, 0) - (NVL(J.RO5T, 0) + NVL(S.RO5T, 0)) = 0 THEN
NVL(J.RO5NB, 0) - (NVL(J.RO5B, 0) + NVL(S.RO5B, 0))
ELSE
0
END),
J.RO5T = J.RO5T + S.RO5T,
J.RO24NB = J.RO24NB + S.RO24NB,
J.RO24NT = J.RO24NT + S.RO24NT,
J.RO20NB = J.RO20NB + S.RO20NB,
J.RO20NT = J.RO20NT + S.RO20NT,
J.RO21NB = J.RO21NB + S.RO21NB,
J.RO21NT = J.RO21NT + S.RO21NT,
J.RO11NB = J.RO11NB + S.RO11NB,
J.RO11NT = J.RO11NT + S.RO11NT,
J.RO19NB = J.RO19NB + S.RO19NB,
J.RO19NT = J.RO19NT + S.RO19NT,
J.RO9NB = J.RO9NB + S.RO9NB,
J.RO9NT = J.RO9NT + S.RO9NT,
J.RO5NB = J.RO5NB + S.RO5NB,
J.RO5NT = J.RO5NT + S.RO5NT,
J.ROTI = J.ROTI + S.ROTI,
J.CESCDD1 = J.CESCDD1 + S.CESCDD1,
J.CESCDD2 = J.CESCDD2 + S.CESCDD2,
J.CEOPTR = J.CEOPTR + S.CEOPTR,
J.CESVDD = J.CESVDD + S.CESVDD,
J.CESVFDD = J.CESVFDD + S.CESVFDD,
J.CESVFS = J.CESVFS + S.CESVFS,
J.WRSCDD = J.WRSCDD + S.WRSCDD,
J.WRSCDDAB = J.WRSCDDAB + S.WRSCDDAB,
J.WRSCDDCD = J.WRSCDDCD + S.WRSCDDCD,
J.FODD = J.FODD + S.FODD,
J.FOFDD = J.FOFDD + S.FOFDD,
J.WRSCFDD = J.WRSCFDD + S.WRSCFDD,
J.WRN = J.WRN + S.WRN,
J.RORTC24 = J.RORTC24 + S.RORTC24,
J.RORTC20 = J.RORTC20 + S.RORTC20,
J.RORTC21 = J.RORTC21 + S.RORTC21,
J.RORTC11 = J.RORTC11 + S.RORTC11,
J.RORTC19 = J.RORTC19 + S.RORTC19,
J.RORTC9 = J.RORTC9 + S.RORTC9,
J.RORTC5 = J.RORTC5 + S.RORTC5 DELETE
WHERE ' || tnScrie || ' = ' ||
pack_contafin.nStergere || '
and J.TOTCTVA = 0
AND J.TOTFTVATAX = 0
AND J.TOTTVATAX = 0
AND J.TOTNETAX = 0
AND J.RO24B = 0
AND J.RO24T = 0
AND J.RO20B = 0
AND J.RO20T = 0
AND J.RO19B = 0
AND J.RO19T = 0
AND J.RO9B = 0
AND J.RO9T = 0
AND J.RO5B = 0
AND J.RO5T = 0
AND J.RO24NB = 0
AND J.RO24NT = 0
AND J.RO20NB = 0
AND J.RO20NT = 0
AND J.RO19NB = 0
AND J.RO19NT = 0
AND J.RO9NB = 0
AND J.RO9NT = 0
AND J.RO5NB = 0
AND J.RO5NT = 0
AND J.ROTI = 0
AND J.CESCDD1 = 0
AND J.CESCDD2 = 0
AND J.CEOPTR = 0
AND J.CESVDD = 0
AND J.CESVFDD = 0
AND J.CESVFS = 0
AND J.WRSCDD = 0
AND J.WRSCDDAB = 0
AND J.WRSCDDCD = 0
AND J.FODD = 0
AND J.FOFDD = 0
AND J.WRSCFDD = 0
AND J.WRN = 0
AND J.RORTC24 = 0
AND J.RORTC20 = 0
AND J.RORTC19 = 0
AND J.RORTC9 = 0
AND J.RORTC5 = 0 WHEN NOT MATCHED THEN INSERT(AN, LUNA, ID_FACT, NRACT, SERIE_ACT, ID_FDOC, DATAACT, DATAIREG, ID_PART, TOTCTVA, TOTFTVATAX, TOTTVATAX, TOTNETAX, RO24B, RO24T, RO20B, RO20T, RO21B, RO21T, RO11B, RO11T, RO19B, RO19T, RO9B, RO9T, RO5B, RO5T, RO24NB, RO24NT, RO20NB, RO20NT, RO21NB, RO21NT, RO11NB, RO11NT, RO19NB, RO19NT, RO9NB, RO9NT, RO5NB, RO5NT, ROTI, CESCDD1, CESCDD2, CEOPTR, CESVDD, CESVFDD, CESVFS, WRSCDD, WRSCDDAB, WRSCDDCD, FODD, FOFDD, WRSCFDD, WRN, RORTC24, RORTC20, RORTC21, RORTC11, RORTC19, RORTC9, RORTC5, COD, ID_SUCURSALA) VALUES(S.AN, S.LUNA, S.ID_FACT, S.NRACT, S.SERIE_ACT, S.ID_FDOC, S.DATAACT, S.DATAIREG, S.ID_PART, S.TOTCTVA, S.TOTFTVATAX, S.TOTTVATAX, S.TOTNETAX,(CASE
WHEN NVL(S.RO24B, 0) <> 0 AND NVL(S.RO24NT, 0) <> 0 AND
NVL(S.RO24NT, 0) = NVL(S.RO24T, 0) THEN
NVL(S.RO24NB, 0)
ELSE
NVL(S.RO24B, 0)
END), S.RO24T,(CASE
WHEN NVL(S.RO20B, 0) <> 0 AND NVL(S.RO20NT, 0) <> 0 AND
NVL(S.RO20NT, 0) = NVL(S.RO20T, 0) THEN
NVL(S.RO20NB, 0)
ELSE
NVL(S.RO20B, 0)
END), S.RO20T,(CASE
WHEN NVL(S.RO21B, 0) <> 0 AND NVL(S.RO21NT, 0) <> 0 AND
NVL(S.RO21NT, 0) = NVL(S.RO21T, 0) THEN
NVL(S.RO21NB, 0)
ELSE
NVL(S.RO21B, 0)
END), S.RO21T,(CASE
WHEN NVL(S.RO11B, 0) <> 0 AND NVL(S.RO11NT, 0) <> 0 AND
NVL(S.RO11NT, 0) = NVL(S.RO11T, 0) THEN
NVL(S.RO11NB, 0)
ELSE
NVL(S.RO11B, 0)
END), S.RO11T,(CASE
WHEN NVL(S.RO19B, 0) <> 0 AND NVL(S.RO19NT, 0) <> 0 AND
NVL(S.RO19NT, 0) = NVL(S.RO19T, 0) THEN
NVL(S.RO19NB, 0)
ELSE
NVL(S.RO19B, 0)
END), S.RO19T,(CASE
WHEN NVL(S.RO9B, 0) <> 0 AND NVL(S.RO9NT, 0) <> 0 AND
NVL(S.RO9NT, 0) = NVL(S.RO9T, 0) THEN
NVL(S.RO9NB, 0)
ELSE
NVL(S.RO9B, 0)
END), S.RO9T,(CASE
WHEN NVL(S.RO5B, 0) <> 0 AND NVL(S.RO5NT, 0) <> 0 AND
NVL(S.RO5NT, 0) = NVL(S.RO5T, 0) THEN
NVL(S.RO5NB, 0)
ELSE
NVL(S.RO5B, 0)
END), S.RO5T, S.RO24NB, S.RO24NT, S.RO20NB, S.RO20NT, S.RO21NB, S.RO21NT, S.RO11NB, S.RO11NT, S.RO19NB, S.RO19NT, S.RO9NB, S.RO9NT, S.RO5NB, S.RO5NT, S.ROTI, S.CESCDD1, S.CESCDD2, S.CEOPTR, S.CESVDD, S.CESVFDD, S.CESVFS, S.WRSCDD, S.WRSCDDAB, S.WRSCDDCD, S.FODD, S.FOFDD, S.WRSCFDD, S.WRN, S.RORTC24, S.RORTC20, S.RORTC21, S.RORTC11, S.RORTC19, S.RORTC9, S.RORTC5, S.COD, S.ID_SUCURSALA);
END SCRIE_JV_2007;
-------------------------------------------------------------------
procedure SCRIE_JC_2007(tnAn JC2007.AN%TYPE,
tnLuna JC2007.LUNA%TYPE,
tnScrie number) IS
lcSql clob;
lcContTvaDeductibil ACT.SCD%TYPE := '4426';
lcContTvaColectat ACT.SCD%TYPE := '4427';
lcContTvaNeexigibil ACT.SCD%TYPE := '4428';
lcContDebitRegularizare VARCHAR2(100) := '408';
lcContCreditRegularizare VARCHAR2(100) := '401,404,4511,462';
lnIdMinJtvaColoana JTVA_COLOANE.ID_JTVA_COLOANA%TYPE := 101;
lnIdMaxJtvaColoana JTVA_COLOANE.ID_JTVA_COLOANA%TYPE := 500;
lcTabelSursa VARCHAR2(100);
lcCondSucursala VARCHAR2(1000);
begin
-- tnScrie: 0 - scriere; 1 - refacere; 2 - stergere
-- 0,2 - selectie din act_temp
-- 1 - selectie din act
if pack_contafin.get_id_sucursala() is not null then
lcCondSucursala := ' AND ALIAS.ID_SUCURSALA = ' ||
pack_contafin.GET_ID_SUCURSALA();
end if;
if tnScrie in (pack_contafin.nScriere, pack_contafin.nStergere) then
lcTabelSursa := 'act_temp'; -- scriere, stergere
else
lcTabelSursa := 'act'; -- refacere
end if;
-- COMPLETARE JC2007 CU ID_SET 10616 STORNARE PLATA/INCASARE
pack_contafin.completeaza_jc_2007(tnAn,
tnLuna,
lcTabelSursa,
lcCondSucursala);
-- MERGE replaced with FORALL BULK operations to avoid Oracle XE bugs and improve performance
DECLARE
CURSOR c_source IS
SELECT ID_SUCURSALA,
AN,
LUNA,
ID_FACT,
ID_FDOC,
NRACT,
SERIE_ACT,
DATAACT,
DATAIREG,
ID_PART,
COD,
(CASE
WHEN NOTA_TVA_EX = 1 THEN
0
WHEN REGULARIZARE > 0 THEN
TOTCTVA - RO24TR - RO20TR - RO21TR - RO11TR - RO19BCTR -
RO19BVTR - RO19BFTR - RO09BCTR - RO09BVTR - RO09BFTR -
RO05TR - FO21TR - FO24TR - FO20TR - FO19BCTR - FO19BVTR -
FO19BFTR - FO09BCTR - FO09BVTR - FO09BFTR - CE24TR -
CE20TR - CE5STR - CE9STR - CE21STR - CE24STR - CE20STR -
CE19STR - CEBCTR - CEBVTR - CEBFTR - TI21TR - TI11TR -
TI24TR - TI20TR - TI19BCTR - TI19BVTR - TI19BFTR -
TI09BVTR - TI09BFTR - RO24NTR - RO20NTR - RO21NTR -
RO11NTR - RO19NTR - RO09NTR - RO05NTR
ELSE
TOTCTVA - DECODE(RO21NB, 0, 0, RO21B) -
DECODE(RO11NB, 0, 0, RO11B) - DECODE(RO24NB, 0, 0, RO24B) -
DECODE(RO20NB, 0, 0, RO20B) -
DECODE(RO19NB, 0, 0, RO19BCB + RO19BVB + RO19BFB) -
DECODE(RO9NB, 0, 0, RO09BCB + RO09BVB + RO09BFB) -
DECODE(RO5NB, 0, 0, RO05B) - DECODE(RO21NT, 0, 0, RO21T) -
DECODE(RO11NT, 0, 0, RO11T) - DECODE(RO24NT, 0, 0, RO24T) -
DECODE(RO20NT, 0, 0, RO20T) -
DECODE(RO19NT, 0, 0, RO19BCT + RO19BVT + RO19BFT) -
DECODE(RO9NT, 0, 0, RO09BCT + RO09BVT + RO09BFT) -
DECODE(RO5NT, 0, 0, RO05T)
END) AS TOTCTVA,
(CASE
WHEN NOTA_TVA_EX = 1 THEN
0
WHEN REGULARIZARE > 0 THEN
DECODE(RO24NB, 0, RO24B, RO24NB) +
DECODE(RO20NB, 0, RO20B, RO20NB) +
DECODE(RO21NB, 0, RO21B, RO21NB) +
DECODE(RO11NB, 0, RO11B, RO11NB) +
DECODE(RO19NB, 0, RO19BCB + RO19BVB + RO19BFB, RO19NB) +
DECODE(RO9NB, 0, RO09BCB + RO09BVB + RO09BFB, RO9NB) +
DECODE(RO5NB, 0, RO05B, RO5NB) -
DECODE(RO24NB, 0, RO24TR, RO24NTR) -
DECODE(RO20NB, 0, RO20TR, RO20NTR) -
DECODE(RO21NB, 0, RO21TR, RO21NTR) -
DECODE(RO11NB, 0, RO11TR, RO11NTR) -
DECODE(RO19NB, 0, RO19BCTR + RO19BVTR + RO19BFTR, RO19NTR) -
DECODE(RO9NB, 0, RO09BCTR + RO09BVTR + RO09BFTR, RO09NTR) -
DECODE(RO5NB, 0, RO05TR, RO05NTR) - FO21TR - FO24TR -
FO20TR - FO19BCTR - FO19BVTR - FO19BFTR - FO09BCTR -
FO09BVTR - FO09BFTR - CE24TR - CE20TR - CE5STR - CE9STR -
CE21STR - CE24STR - CE20STR - CE19STR - CEBCTR - CEBVTR -
CEBFTR - TI21TR - TI11TR - TI24TR - TI20TR - TI19BCTR -
TI19BVTR - TI19BFTR - TI09BVTR - TI09BFTR
ELSE
DECODE(RO24NB, 0, RO24B, RO24NB) +
DECODE(RO20NB, 0, RO20B, RO20NB) +
DECODE(RO21NB, 0, RO21B, RO21NB) +
DECODE(RO11NB, 0, RO11B, RO11NB) +
DECODE(RO19NB, 0, RO19BCB + RO19BVB + RO19BFB, RO19NB) +
DECODE(RO9NB, 0, RO09BCB + RO09BVB + RO09BFB, RO9NB) +
DECODE(RO5NB, 0, RO05B, RO5NB)
END) AS TOTFTVATAX,
DECODE(NOTA_TVA_EX,
1,
0,
DECODE(RO24NT, 0, RO24T, RO24NT) +
DECODE(RO20NT, 0, RO20T, RO20NT) +
DECODE(RO21NT, 0, RO21T, RO21NT) +
DECODE(RO11NT, 0, RO11T, RO11NT) +
DECODE(RO19NT, 0, RO19BCT + RO19BVT + RO19BFT, RO19NT) +
DECODE(RO9NT, 0, RO09BCT + RO09BVT + RO09BFT, RO9NT) +
DECODE(RO5NT, 0, RO05T, RO5NT)) AS TOTTVATAX,
ROSCN + FOSCN + (CASE
WHEN REGULARIZARE > 0 THEN
CEBCB - CEBCTR
ELSE
CEBCB
END) + CEBCT + (CASE
WHEN REGULARIZARE > 0 THEN
CEBVB - CEBVTR
ELSE
CEBVB
END) + CEBVT + CEBVSC + CEBVN + (CASE
WHEN REGULARIZARE > 0 THEN
CEBFB - CEBFTR
ELSE
CEBFB
END) + CEBFT + CEBFSC + CEBFN + ROTN + ROTN50 + ROTN100 AS TOTNETAX,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO24B,
0,
DECODE(RO24T, 0, 0, ROUND(RO24T / 0.24, 2)),
RO24B - RO24TR)
ELSE
DECODE(RO24B,
0,
DECODE(RO24T, 0, 0, ROUND(RO24T / 0.24, 2)),
RO24B)
END) AS RO24B,
RO24T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO20B,
0,
DECODE(RO20T, 0, 0, ROUND(RO20T / 0.20, 2)),
RO20B - RO20TR)
ELSE
DECODE(RO20B,
0,
DECODE(RO20T, 0, 0, ROUND(RO20T / 0.20, 2)),
RO20B)
END) AS RO20B,
RO20T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO21B,
0,
DECODE(RO21T, 0, 0, ROUND(RO21T / 0.21, 2)),
RO21B - RO21TR)
ELSE
DECODE(RO21B,
0,
DECODE(RO21T, 0, 0, ROUND(RO21T / 0.21, 2)),
RO21B)
END) AS RO21B,
RO21T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO11B,
0,
DECODE(RO11T, 0, 0, ROUND(RO11T / 0.11, 2)),
RO11B - RO11TR)
ELSE
DECODE(RO11B,
0,
DECODE(RO11T, 0, 0, ROUND(RO11T / 0.11, 2)),
RO11B)
END) AS RO11B,
RO11T,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO19BCB,
0,
DECODE(RO19BCT, 0, 0, ROUND(RO19BCT / 0.19, 2)),
RO19BCB - RO19BCTR)
ELSE
DECODE(RO19BCB,
0,
DECODE(RO19BCT, 0, 0, ROUND(RO19BCT / 0.19, 2)),
RO19BCB)
END) AS RO19BCB,
RO19BCT,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO19BVB,
0,
DECODE(RO19BVT, 0, 0, ROUND(RO19BVT / 0.19, 2)),
RO19BVB - RO19BVTR)
ELSE
DECODE(RO19BVB,
0,
DECODE(RO19BVT, 0, 0, ROUND(RO19BVT / 0.19, 2)),
RO19BVB)
END) AS RO19BVB,
RO19BVT,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO19BFB,
0,
DECODE(RO19BFT, 0, 0, ROUND(RO19BFT / 0.19, 2)),
RO19BFB - RO19BFTR)
ELSE
DECODE(RO19BFB,
0,
DECODE(RO19BFT, 0, 0, ROUND(RO19BFT / 0.19, 2)),
RO19BFB)
END) AS RO19BFB,
RO19BFT,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO09BCB,
0,
DECODE(RO09BCT, 0, 0, ROUND(RO09BCT / 0.09, 2)),
RO09BCB - RO09BCTR)
ELSE
DECODE(RO09BCB,
0,
DECODE(RO09BCT, 0, 0, ROUND(RO09BCT / 0.09, 2)),
RO09BCB)
END) AS RO09BCB,
RO09BCT,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO09BVB,
0,
DECODE(RO09BVT, 0, 0, ROUND(RO09BVT / 0.09, 2)),
RO09BVB - RO09BVTR)
ELSE
DECODE(RO09BVB,
0,
DECODE(RO09BVT, 0, 0, ROUND(RO09BVT / 0.09, 2)),
RO09BVB)
END) AS RO09BVB,
RO09BVT,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO09BFB,
0,
DECODE(RO09BFT, 0, 0, ROUND(RO09BFT / 0.09, 2)),
RO09BFB - RO09BFTR)
ELSE
DECODE(RO09BFB,
0,
DECODE(RO09BFT, 0, 0, ROUND(RO09BFT / 0.09, 2)),
RO09BFB)
END) AS RO09BFB,
RO09BFT,
(CASE
WHEN REGULARIZARE > 0 THEN
DECODE(RO05B,
0,
DECODE(RO05T, 0, 0, ROUND(RO05T / 0.05, 2)),
RO05B - RO05TR)
ELSE
DECODE(RO05B,
0,
DECODE(RO05T, 0, 0, ROUND(RO05T / 0.05, 2)),
RO05B)
END) AS RO05B,
RO05T,
ROSCN,
(CASE
WHEN REGULARIZARE > 0 THEN
FO21B - FO21TR
ELSE
FO21B
END) AS FO21B,
FO21T,
(CASE
WHEN REGULARIZARE > 0 THEN
FO24B - FO24TR
ELSE
FO24B
END) AS FO24B,
FO24T,
(CASE
WHEN REGULARIZARE > 0 THEN
FO20B - FO20TR
ELSE
FO20B
END) AS FO20B,
FO20T,
(CASE
WHEN REGULARIZARE > 0 THEN
FO19BCB - FO19BCTR
ELSE
FO19BCB
END) AS FO19BCB,
FO19BCT,
(CASE
WHEN REGULARIZARE > 0 THEN
FO19BVB - FO19BVTR
ELSE
FO19BVB
END) AS FO19BVB,
FO19BVT,
(CASE
WHEN REGULARIZARE > 0 THEN
FO19BFB - FO19BFTR
ELSE
FO19BFB
END) AS FO19BFB,
FO19BFT,
(CASE
WHEN REGULARIZARE > 0 THEN
XX21TIB - XX21TITR
ELSE
XX21TIB
END) AS XX21TIB,
XX21TIT,
(CASE
WHEN REGULARIZARE > 0 THEN
XX11TIB - XX11TITR
ELSE
XX11TIB
END) AS XX11TIB,
XX11TIT,
(CASE
WHEN REGULARIZARE > 0 THEN
XX19TIB - XX19TITR
ELSE
XX19TIB
END) AS XX19TIB,
XX19TIT,
(CASE
WHEN REGULARIZARE > 0 THEN
XX9TIB - XX9TITR
ELSE
XX9TIB
END) AS XX9TIB,
XX9TIT,
(CASE
WHEN REGULARIZARE > 0 THEN
FO09BCB - FO09BCTR
ELSE
FO09BCB
END) AS FO09BCB,
FO09BCT,
(CASE
WHEN REGULARIZARE > 0 THEN
FO09BVB - FO09BVTR
ELSE
FO09BVB
END) AS FO09BVB,
FO09BVT,
(CASE
WHEN REGULARIZARE > 0 THEN
FO09BFB - FO09BFTR
ELSE
FO09BFB
END) AS FO09BFB,
FO09BFT,
FOSCN,
(CASE
WHEN REGULARIZARE > 0 THEN
CE24B - CE24TR
ELSE
CE24B
END) AS CE24B,
CE24T,
(CASE
WHEN REGULARIZARE > 0 THEN
CE20B - CE20TR
ELSE
CE20B
END) AS CE20B,
CE20T,
(CASE
WHEN REGULARIZARE > 0 THEN
CE5SB - CE5STR
ELSE
CE5SB
END) AS CE5SB,
CE5ST,
(CASE
WHEN REGULARIZARE > 0 THEN
CE9SB - CE9STR
ELSE
CE9SB
END) AS CE9SB,
CE9ST,
(CASE
WHEN REGULARIZARE > 0 THEN
CE24SB - CE24STR
ELSE
CE24SB
END) AS CE24SB,
CE24ST,
(CASE
WHEN REGULARIZARE > 0 THEN
CE20SB - CE20STR
ELSE
CE20SB
END) AS CE20SB,
CE20ST,
(CASE
WHEN REGULARIZARE > 0 THEN
CE21SB - CE21STR
ELSE
CE21SB
END) AS CE21SB,
CE21ST,
(CASE
WHEN REGULARIZARE > 0 THEN
CE19SB - CE19STR
ELSE
CE19SB
END) AS CE19SB,
CE19ST,
(CASE
WHEN REGULARIZARE > 0 THEN
CEBCB - CEBCTR
ELSE
CEBCB
END) AS CEBCB,
CEBCT,
(CASE
WHEN REGULARIZARE > 0 THEN
CEBVB - CEBVTR
ELSE
CEBVB
END) AS CEBVB,
CEBVT,
CEBVSC,
CEBVN,
(CASE
WHEN REGULARIZARE > 0 THEN
CEBFB - CEBFTR
ELSE
CEBFB
END) AS CEBFB,
CEBFT,
CEBFSC,
CEBFN,
(CASE
WHEN REGULARIZARE > 0 THEN
CE21CTB - CE21CTTR
ELSE
CE21CTB
END) AS CE21CTB,
CE21CTT,
(CASE
WHEN REGULARIZARE > 0 THEN
CE11CTB - CE11CTTR
ELSE
CE11CTB
END) AS CE11CTB,
CE11CTT,
(CASE
WHEN REGULARIZARE > 0 THEN
CE19CTB - CE19CTTR
ELSE
CE19CTB
END) AS CE19CTB,
CE19CTT,
(CASE
WHEN REGULARIZARE > 0 THEN
CE9CTB - CE9CTTR
ELSE
CE9CTB
END) AS CE9CTB,
CE9CTT,
(CASE
WHEN REGULARIZARE > 0 THEN
CE5CTB - CE5CTTR
ELSE
CE5CTB
END) AS CE5CTB,
CE5CTT,
(CASE
WHEN REGULARIZARE > 0 THEN
CE21FTB - CE21FTTR
ELSE
CE21FTB
END) AS CE21FTB,
CE21FTT,
(CASE
WHEN REGULARIZARE > 0 THEN
CE11FTB - CE11FTTR
ELSE
CE11FTB
END) AS CE11FTB,
CE11FTT,
(CASE
WHEN REGULARIZARE > 0 THEN
CE19FTB - CE19FTTR
ELSE
CE19FTB
END) AS CE19FTB,
CE19FTT,
(CASE
WHEN REGULARIZARE > 0 THEN
CE9FTB - CE9FTTR
ELSE
CE9FTB
END) AS CE9FTB,
CE9FTT,
(CASE
WHEN REGULARIZARE > 0 THEN
CE5FTB - CE5FTTR
ELSE
CE5FTB
END) AS CE5FTB,
CE5FTT,
(CASE
WHEN REGULARIZARE > 0 THEN
TI24B - TI24TR
ELSE
TI24B
END) AS TI24B,
TI24T,
(CASE
WHEN REGULARIZARE > 0 THEN
TI20B - TI20TR
ELSE
TI20B
END) AS TI20B,
TI20T,
(CASE
WHEN REGULARIZARE > 0 THEN
TI21B - TI21TR
ELSE
TI21B
END) AS TI21B,
TI21T,
(CASE
WHEN REGULARIZARE > 0 THEN
TI11B - TI11TR
ELSE
TI11B
END) AS TI11B,
TI11T,
(CASE
WHEN REGULARIZARE > 0 THEN
TI19BCB - TI19BCTR
ELSE
TI19BCB
END) AS TI19BCB,
TI19BCT,
(CASE
WHEN REGULARIZARE > 0 THEN
TI19BVB - TI19BVTR
ELSE
TI19BVB
END) AS TI19BVB,
TI19BVT,
(CASE
WHEN REGULARIZARE > 0 THEN
TI19BFB - TI19BFTR
ELSE
TI19BFB
END) AS TI19BFB,
TI19BFT,
(CASE
WHEN REGULARIZARE > 0 THEN
TI09BVB - TI09BVTR
ELSE
TI09BVB
END) AS TI09BVB,
TI09BVT,
(CASE
WHEN REGULARIZARE > 0 THEN
TI09BFB - TI09BFTR
ELSE
TI09BFB
END) AS TI09BFB,
TI09BFT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO24NB - RO24NTR
ELSE
RO24NB
END) AS RO24NB,
RO24NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO20NB - RO20NTR
ELSE
RO20NB
END) AS RO20NB,
RO20NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO21NB - RO21NTR
ELSE
RO21NB
END) AS RO21NB,
RO21NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO11NB - RO11NTR
ELSE
RO11NB
END) AS RO11NB,
RO11NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO19NB - RO19NTR
ELSE
RO19NB
END) AS RO19NB,
RO19NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO9NB - RO09NTR
ELSE
RO9NB
END) AS RO9NB,
RO9NT,
(CASE
WHEN REGULARIZARE > 0 THEN
RO5NB - RO05NTR
ELSE
RO5NB
END) AS RO5NB,
RO5NT,
ROTN,
ROTN50,
ROTN100,
RORTD24,
RORTD20,
RORTD19,
RORTD9,
RORTD5,
RORTD21,
RORTD11
FROM (SELECT JC.ID_SUCURSALA,
JC.AN,
JC.LUNA,
JC.ID_FACT,
MAX(JC.ID_FDOC) AS ID_FDOC,
JC.NRACT,
JC.SERIE_ACT,
JC.DATAACT,
JC.DATAIREG,
MAX(JC.ID_PART) AS ID_PART,
MIN(JC.COD) AS COD,
MIN(JC.NOTA_TVA_EX) AS NOTA_TVA_EX,
sum(CASE
WHEN NVL(JC.ID_JTVA_COLOANA, 0) > 100 and
JC.ID_JTVA_COLOANA NOT IN (1001, 1004, 1005) THEN
JC.suma
ELSE
0
END) TOTCTVA,
SUM(CASE
WHEN ID_JTVA_COLOANA In (156,
176,
208,
212,
107,
109,
111,
154,
170,
172,
174,
178,
210,
214,
101,
103,
105,
188) THEN
JC.suma
ELSE
0
END) As totftvatax,
SUM(CASE
WHEN ID_JTVA_COLOANA In (157,
177,
209,
213,
108,
110,
112,
155,
171,
173,
175,
179,
211,
215,
102,
104,
106,
189) THEN
JC.suma
ELSE
0
END) As tottvatax,
sum(DECODE(JC.ID_JTVA_COLOANA, 156, JC.suma, 0)) RO24B,
sum(DECODE(JC.ID_JTVA_COLOANA, 157, JC.suma, 0)) RO24T,
sum(DECODE(JC.ID_JTVA_COLOANA, 176, JC.suma, 0)) RO20B,
sum(DECODE(JC.ID_JTVA_COLOANA, 177, JC.suma, 0)) RO20T,
sum(DECODE(JC.ID_JTVA_COLOANA, 208, JC.suma, 0)) RO21B,
sum(DECODE(JC.ID_JTVA_COLOANA, 209, JC.suma, 0)) RO21T,
sum(DECODE(JC.ID_JTVA_COLOANA, 101, JC.suma, 0)) RO19BCB,
sum(DECODE(JC.ID_JTVA_COLOANA, 102, JC.suma, 0)) RO19BCT,
sum(DECODE(JC.ID_JTVA_COLOANA, 103, JC.suma, 0)) RO19BVB,
sum(DECODE(JC.ID_JTVA_COLOANA, 104, JC.suma, 0)) RO19BVT,
sum(DECODE(JC.ID_JTVA_COLOANA, 105, JC.suma, 0)) RO19BFB,
sum(DECODE(JC.ID_JTVA_COLOANA, 106, JC.suma, 0)) RO19BFT,
sum(DECODE(JC.ID_JTVA_COLOANA, 107, JC.suma, 0)) RO09BCB,
sum(DECODE(JC.ID_JTVA_COLOANA, 108, JC.suma, 0)) RO09BCT,
sum(DECODE(JC.ID_JTVA_COLOANA, 109, JC.suma, 0)) RO09BVB,
sum(DECODE(JC.ID_JTVA_COLOANA, 110, JC.suma, 0)) RO09BVT,
sum(DECODE(JC.ID_JTVA_COLOANA, 111, JC.suma, 0)) RO09BFB,
sum(DECODE(JC.ID_JTVA_COLOANA, 112, JC.suma, 0)) RO09BFT,
sum(DECODE(JC.ID_JTVA_COLOANA, 154, JC.suma, 0)) RO05B,
sum(DECODE(JC.ID_JTVA_COLOANA, 155, JC.suma, 0)) RO05T,
sum(DECODE(JC.ID_JTVA_COLOANA, 212, JC.suma, 0)) RO11B,
sum(DECODE(JC.ID_JTVA_COLOANA, 213, JC.suma, 0)) RO11T,
sum(DECODE(JC.ID_JTVA_COLOANA, 113, JC.suma, 0)) ROSCN,
sum(DECODE(JC.ID_JTVA_COLOANA, 158, JC.suma, 0)) FO24B,
sum(DECODE(JC.ID_JTVA_COLOANA, 159, JC.suma, 0)) FO24T,
sum(DECODE(JC.ID_JTVA_COLOANA, 180, JC.suma, 0)) FO20B,
sum(DECODE(JC.ID_JTVA_COLOANA, 181, JC.suma, 0)) FO20T,
sum(DECODE(JC.ID_JTVA_COLOANA, 220, JC.suma, 0)) FO21B,
sum(DECODE(JC.ID_JTVA_COLOANA, 221, JC.suma, 0)) FO21T,
sum(DECODE(JC.ID_JTVA_COLOANA, 114, JC.suma, 0)) FO19BCB,
sum(DECODE(JC.ID_JTVA_COLOANA, 115, JC.suma, 0)) FO19BCT,
sum(DECODE(JC.ID_JTVA_COLOANA, 116, JC.suma, 0)) FO19BVB,
sum(DECODE(JC.ID_JTVA_COLOANA, 117, JC.suma, 0)) FO19BVT,
sum(DECODE(JC.ID_JTVA_COLOANA, 118, JC.suma, 0)) FO19BFB,
sum(DECODE(JC.ID_JTVA_COLOANA, 119, JC.suma, 0)) FO19BFT,
sum(DECODE(JC.ID_JTVA_COLOANA, 192, JC.suma, 0)) XX19TIB,
sum(DECODE(JC.ID_JTVA_COLOANA, 193, JC.suma, 0)) XX19TIT,
sum(DECODE(JC.ID_JTVA_COLOANA, 224, JC.suma, 0)) XX21TIB,
sum(DECODE(JC.ID_JTVA_COLOANA, 225, JC.suma, 0)) XX21TIT,
sum(DECODE(JC.ID_JTVA_COLOANA, 230, JC.suma, 0)) XX11TIB,
sum(DECODE(JC.ID_JTVA_COLOANA, 231, JC.suma, 0)) XX11TIT,
sum(DECODE(JC.ID_JTVA_COLOANA, 206, JC.suma, 0)) XX9TIB,
sum(DECODE(JC.ID_JTVA_COLOANA, 207, JC.suma, 0)) XX9TIT,
sum(DECODE(JC.ID_JTVA_COLOANA, 120, JC.suma, 0)) FO09BCB,
sum(DECODE(JC.ID_JTVA_COLOANA, 121, JC.suma, 0)) FO09BCT,
sum(DECODE(JC.ID_JTVA_COLOANA, 122, JC.suma, 0)) FO09BVB,
sum(DECODE(JC.ID_JTVA_COLOANA, 123, JC.suma, 0)) FO09BVT,
sum(DECODE(JC.ID_JTVA_COLOANA, 124, JC.suma, 0)) FO09BFB,
sum(DECODE(JC.ID_JTVA_COLOANA, 125, JC.suma, 0)) FO09BFT,
sum(DECODE(JC.ID_JTVA_COLOANA, 126, JC.suma, 0)) FOSCN,
sum(DECODE(JC.ID_JTVA_COLOANA, 160, JC.suma, 0)) CE24B,
sum(DECODE(JC.ID_JTVA_COLOANA, 161, JC.suma, 0)) CE24T,
sum(DECODE(JC.ID_JTVA_COLOANA, 182, JC.suma, 0)) CE20B,
sum(DECODE(JC.ID_JTVA_COLOANA, 183, JC.suma, 0)) CE20T,
sum(DECODE(JC.ID_JTVA_COLOANA, 164, JC.suma, 0)) CE5SB,
sum(DECODE(JC.ID_JTVA_COLOANA, 165, JC.suma, 0)) CE5ST,
sum(DECODE(JC.ID_JTVA_COLOANA, 166, JC.suma, 0)) CE9SB,
sum(DECODE(JC.ID_JTVA_COLOANA, 167, JC.suma, 0)) CE9ST,
sum(DECODE(JC.ID_JTVA_COLOANA, 168, JC.suma, 0)) CE24SB,
sum(DECODE(JC.ID_JTVA_COLOANA, 169, JC.suma, 0)) CE24ST,
sum(DECODE(JC.ID_JTVA_COLOANA, 184, JC.suma, 0)) CE20SB,
sum(DECODE(JC.ID_JTVA_COLOANA, 185, JC.suma, 0)) CE20ST,
sum(DECODE(JC.ID_JTVA_COLOANA, 190, JC.suma, 0)) CE19SB,
sum(DECODE(JC.ID_JTVA_COLOANA, 191, JC.suma, 0)) CE19ST,
sum(DECODE(JC.ID_JTVA_COLOANA, 222, JC.suma, 0)) CE21SB,
sum(DECODE(JC.ID_JTVA_COLOANA, 223, JC.suma, 0)) CE21ST,
sum(DECODE(JC.ID_JTVA_COLOANA,
127,
JC.suma,
148,
JC.suma,
0)) CEBCB,
sum(DECODE(JC.ID_JTVA_COLOANA,
128,
JC.suma,
149,
JC.suma,
0)) CEBCT,
sum(DECODE(JC.ID_JTVA_COLOANA,
129,
JC.suma,
150,
JC.suma,
0)) CEBVB,
sum(DECODE(JC.ID_JTVA_COLOANA,
130,
JC.suma,
151,
JC.suma,
0)) CEBVT,
sum(DECODE(JC.ID_JTVA_COLOANA, 131, JC.suma, 0)) CEBVSC,
sum(DECODE(JC.ID_JTVA_COLOANA, 132, JC.suma, 0)) CEBVN,
sum(DECODE(JC.ID_JTVA_COLOANA,
133,
JC.suma,
152,
JC.suma,
0)) CEBFB,
sum(DECODE(JC.ID_JTVA_COLOANA,
134,
JC.suma,
153,
JC.suma,
0)) CEBFT,
sum(DECODE(JC.ID_JTVA_COLOANA, 135, JC.suma, 0)) CEBFSC,
sum(DECODE(JC.ID_JTVA_COLOANA, 136, JC.suma, 0)) CEBFN,
sum(DECODE(JC.ID_JTVA_COLOANA, 194, JC.suma, 0)) CE19CTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 195, JC.suma, 0)) CE19CTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 226, JC.suma, 0)) CE21CTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 227, JC.suma, 0)) CE21CTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 232, JC.suma, 0)) CE11CTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 233, JC.suma, 0)) CE11CTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 196, JC.suma, 0)) CE9CTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 197, JC.suma, 0)) CE9CTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 198, JC.suma, 0)) CE5CTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 199, JC.suma, 0)) CE5CTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 200, JC.suma, 0)) CE19FTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 201, JC.suma, 0)) CE19FTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 228, JC.suma, 0)) CE21FTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 229, JC.suma, 0)) CE21FTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 234, JC.suma, 0)) CE11FTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 235, JC.suma, 0)) CE11FTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 202, JC.suma, 0)) CE9FTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 203, JC.suma, 0)) CE9FTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 204, JC.suma, 0)) CE5FTB,
sum(DECODE(JC.ID_JTVA_COLOANA, 205, JC.suma, 0)) CE5FTT,
sum(DECODE(JC.ID_JTVA_COLOANA, 162, JC.suma, 0)) TI24B,
sum(DECODE(JC.ID_JTVA_COLOANA, 163, JC.suma, 0)) TI24T,
sum(DECODE(JC.ID_JTVA_COLOANA, 186, JC.suma, 0)) TI20B,
sum(DECODE(JC.ID_JTVA_COLOANA, 187, JC.suma, 0)) TI20T,
sum(DECODE(JC.ID_JTVA_COLOANA, 216, JC.suma, 0)) TI21B,
sum(DECODE(JC.ID_JTVA_COLOANA, 217, JC.suma, 0)) TI21T,
sum(DECODE(JC.ID_JTVA_COLOANA, 218, JC.suma, 0)) TI11B,
sum(DECODE(JC.ID_JTVA_COLOANA, 219, JC.suma, 0)) TI11T,
sum(DECODE(JC.ID_JTVA_COLOANA, 137, JC.suma, 0)) TI19BCB,
sum(DECODE(JC.ID_JTVA_COLOANA, 138, JC.suma, 0)) TI19BCT,
sum(DECODE(JC.ID_JTVA_COLOANA, 139, JC.suma, 0)) TI19BVB,
sum(DECODE(JC.ID_JTVA_COLOANA, 140, JC.suma, 0)) TI19BVT,
sum(DECODE(JC.ID_JTVA_COLOANA, 141, JC.suma, 0)) TI19BFB,
sum(DECODE(JC.ID_JTVA_COLOANA, 142, JC.suma, 0)) TI19BFT,
sum(DECODE(JC.ID_JTVA_COLOANA, 143, JC.suma, 0)) TI09BVB,
sum(DECODE(JC.ID_JTVA_COLOANA, 144, JC.suma, 0)) TI09BVT,
sum(DECODE(JC.ID_JTVA_COLOANA, 145, JC.suma, 0)) TI09BFB,
sum(DECODE(JC.ID_JTVA_COLOANA, 146, JC.suma, 0)) TI09BFT,
sum(DECODE(JC.ID_JTVA_COLOANA, 170, JC.suma, 0)) RO24NB,
sum(DECODE(JC.ID_JTVA_COLOANA, 171, JC.suma, 0)) RO24NT,
sum(DECODE(JC.ID_JTVA_COLOANA, 178, JC.suma, 0)) RO20NB,
sum(DECODE(JC.ID_JTVA_COLOANA, 179, JC.suma, 0)) RO20NT,
sum(DECODE(JC.ID_JTVA_COLOANA, 210, JC.suma, 0)) RO21NB,
sum(DECODE(JC.ID_JTVA_COLOANA, 211, JC.suma, 0)) RO21NT,
sum(DECODE(JC.ID_JTVA_COLOANA, 214, JC.suma, 0)) RO11NB,
sum(DECODE(JC.ID_JTVA_COLOANA, 215, JC.suma, 0)) RO11NT,
sum(DECODE(JC.ID_JTVA_COLOANA, 188, JC.suma, 0)) RO19NB,
sum(DECODE(JC.ID_JTVA_COLOANA, 189, JC.suma, 0)) RO19NT,
sum(DECODE(JC.ID_JTVA_COLOANA, 172, JC.suma, 0)) RO9NB,
sum(DECODE(JC.ID_JTVA_COLOANA, 173, JC.suma, 0)) RO9NT,
sum(DECODE(JC.ID_JTVA_COLOANA, 174, JC.suma, 0)) RO5NB,
sum(DECODE(JC.ID_JTVA_COLOANA, 175, JC.suma, 0)) RO5NT,
SUM(JC.REGULARIZARE) AS REGULARIZARE,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 209 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO21TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 213 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO11TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 157 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO24TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 177 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO20TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 102 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO19BCTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 104 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO19BVTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 106 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO19BFTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 108 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO09BCTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 110 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO09BVTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 112 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO09BFTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 155 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) RO05TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 159 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) FO24TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 181 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) FO20TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 221 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) FO21TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 115 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) FO19BCTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 117 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) FO19BVTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 119 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) FO19BFTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 225 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) XX21TITR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 231 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) XX11TITR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 193 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) XX19TITR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 207 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) XX9TITR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 121 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) FO09BCTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 123 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) FO09BVTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 125 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) FO09BFTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 161 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE24TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 183 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE20TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 165 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE5STR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 167 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE9STR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 169 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE24STR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 185 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE20STR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 223 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE21STR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 191 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE19STR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA in (128, 149) AND
JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CEBCTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA in (130, 151) AND
JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CEBVTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA in (134, 153) AND
JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CEBFTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 227 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE21CTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 233 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE11CTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 195 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE19CTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 197 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE9CTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 199 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE5CTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 229 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE21FTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 235 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE11FTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 201 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE19FTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 203 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE9FTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 205 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) CE5FTTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 217 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) TI21TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 219 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) TI11TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 163 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) TI24TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 187 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) TI20TR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 138 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) TI19BCTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 140 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) TI19BVTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 142 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) TI19BFTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 144 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) TI09BVTR,
SUM(CASE
WHEN JC.ID_JTVA_COLOANA = 146 AND JC.SCC = '4428' THEN
JC.suma
ELSE
0
END) TI09BFTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 171 AND SCC = '4428' THEN
SUMA
ELSE
0
END) RO24NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 179 AND SCC = '4428' THEN
SUMA
ELSE
0
END) RO20NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 211 AND SCC = '4428' THEN
SUMA
ELSE
0
END) RO21NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 215 AND SCC = '4428' THEN
SUMA
ELSE
0
END) RO11NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 189 AND SCC = '4428' THEN
SUMA
ELSE
0
END) RO19NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 173 AND SCC = '4428' THEN
SUMA
ELSE
0
END) RO09NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 175 AND SCC = '4428' THEN
SUMA
ELSE
0
END) RO05NTR,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1001 THEN
SUMA
ELSE
0
END) ROTN,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1004 THEN
SUMA
ELSE
0
END) ROTN50,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1005 THEN
SUMA
ELSE
0
END) ROTN100,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1011 THEN
SUMA
ELSE
0
END) RORTD24,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1012 THEN
SUMA
ELSE
0
END) RORTD20,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1013 THEN
SUMA
ELSE
0
END) RORTD19,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1014 THEN
SUMA
ELSE
0
END) RORTD9,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1015 THEN
SUMA
ELSE
0
END) RORTD5,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1018 THEN
SUMA
ELSE
0
END) RORTD21,
SUM(CASE
WHEN ID_JTVA_COLOANA = 1019 THEN
SUMA
ELSE
0
END) RORTD11
FROM (SELECT A.ID_SUCURSALA,
A.AN,
A.LUNA,
(CASE
WHEN A.NRACT <> D.NRACT or
A.DATAACT <> D.DATAACT THEN
1
ELSE
0
END) AS NOTA_TVA_EX,
(CASE
WHEN A.NRACT <> D.NRACT or
A.DATAACT <> D.DATAACT OR
A.ID_SET <> D.ID_SET OR
NVL(A.SERIE_ACT, 'X') <>
NVL(D.SERIE_ACT, 'X') THEN
NULL
ELSE
A.ID_FDOC
END) AS ID_FDOC,
A.ID_FACT,
(CASE
WHEN A.NRACT <> D.NRACT THEN
D.NRACT
ELSE
A.NRACT
END) AS NRACT,
D.SERIE_ACT,
(CASE
WHEN A.NRACT <> D.NRACT or
A.DATAACT <> D.DATAACT THEN
TRUNC(D.DATAACT)
ELSE
TRUNC(A.DATAACT)
END) AS DATAACT,
(CASE
WHEN A.NRACT <> D.NRACT or
NVL(A.DATAIREG, A.DATAACT) <>
NVL(D.DATAIREG, D.DATAACT) THEN
TRUNC(NVL(D.DATAIREG, D.DATAACT))
ELSE
TRUNC(NVL(A.DATAIREG, A.DATAACT))
END) AS DATAIREG,
A.COD,
A.SCD,
A.SCC,
-- 4426 = 4427 sau 4428 = 4427 nu au parteneri
MAX(DECODE(E.EXCEPTIE,
1,
A.ID_PARTD,
(CASE
WHEN A.SCC IN
(lcContTvaColectat, lcContTvaNeexigibil) OR
SUBSTR(A.SCC, 1, 1) = '5' OR
ID_JTVA_COLOANA in (1001, 1004, 1005) THEN
-9999999999
ELSE
A.ID_PARTC
END))) OVER(PARTITION BY A.AN, A.LUNA, A.ID_FDOC, A.NRACT, A.DATAACT, A.COD) AS ID_PART,
-- INVERSARE SUME LA EXCEPTII
DECODE(A.ID_SET, 10616, -1, 1) *
DECODE(E.EXCEPTIE, 1, -A.SUMA, A.SUMA) AS SUMA,
-- MARCA REGULARIZARE FACTURI NESOSITE
(CASE
WHEN INSTR(lcContDebitRegularizare, A.scd) > 0 and
INSTR(lcContCreditRegularizare, A.scc) > 0 THEN
1
ELSE
0
END) AS REGULARIZARE,
ID_JTVA_COLOANA,
ROW_NUMBER() OVER(PARTITION BY a.nract ORDER BY a.nract) AS RN
FROM (SELECT ID_SUCURSALA,
AN,
LUNA,
ID_FDOC,
ID_FACT,
NRACT,
SERIE_ACT,
DATAACT,
DATAIREG,
COD,
SCD,
SCC,
ID_PARTD,
ID_PARTC,
ID_SET,
SUMA,
ID_JTVA_COLOANA,
STERS
FROM ACT_TEMP
WHERE lcTabelSursa = 'act_temp'
AND AN = tnAn
AND LUNA = tnLuna
AND STERS = 0
AND (ID_JTVA_COLOANA BETWEEN
lnIdMinJtvaColoana AND
lnIdMaxJtvaColoana OR
ID_JTVA_COLOANA in
(1001,
1004,
1005,
1011,
1012,
1013,
1014,
1015,
1018,
1019))
AND ID_SET <> 10622
UNION ALL
SELECT ID_SUCURSALA,
AN,
LUNA,
ID_FDOC,
ID_FACT,
NRACT,
SERIE_ACT,
DATAACT,
DATAIREG,
COD,
SCD,
SCC,
ID_PARTD,
ID_PARTC,
ID_SET,
SUMA,
ID_JTVA_COLOANA,
STERS
FROM ACT
WHERE lcTabelSursa = 'act'
AND AN = tnAn
AND LUNA = tnLuna
AND STERS = 0
AND (ID_JTVA_COLOANA BETWEEN
lnIdMinJtvaColoana AND
lnIdMaxJtvaColoana OR
ID_JTVA_COLOANA in
(1001,
1004,
1005,
1011,
1012,
1013,
1014,
1015,
1018,
1019))
AND ID_SET <> 10622) A
LEFT JOIN (SELECT DISTINCT 1 AS EXCEPTIE,
DECODE(DEBIT,
1,
CONT_C,
CONT) AS SCD,
DECODE(DEBIT,
1,
CONT,
CONT_C) AS SCC
FROM EXCEPTII_IREG
WHERE INVERS = 1
AND IN_TVA = 1) E
ON A.SCD = E.SCD
AND A.SCC = E.SCC
LEFT JOIN DOCUMENTE D
ON A.ID_FACT = D.ID_DOC
WHERE A.AN = tnAn
and A.LUNA = tnLuna
and A.STERS = 0
AND (A.ID_JTVA_COLOANA BETWEEN lnIdMinJtvaColoana AND
lnIdMaxJtvaColoana OR
A.ID_JTVA_COLOANA in
(1001,
1004,
1005,
1011,
1012,
1013,
1014,
1015,
1018,
1019))
-- IN JURNALUL DE CUMPARARI NU INTRA FACTURILE NESOSITE + INCASARILE
-- SAU COMPENSARI 409 CU EXPLICATIE TVA
AND A.ID_SET <> 10622
AND NOT (TRIM(NVL(A.SCC, 'X')) =
lcContDebitRegularizare OR
(TRIM(NVL(A.SCD, 'X')) =
lcContDebitRegularizare AND
INSTR(lcContCreditRegularizare,
TRIM(NVL(A.SCC, 'X'))) = 0))
AND nvl2(pack_contafin.GET_ID_SUCURSALA(),
A.ID_SUCURSALA,
0) =
nvl(pack_contafin.GET_ID_SUCURSALA(), 0)) JC
GROUP BY JC.AN,
JC.LUNA,
JC.ID_FACT,
JC.NRACT,
JC.SERIE_ACT,
JC.DATAACT,
JC.DATAIREG,
JC.ID_SUCURSALA);
TYPE t_source_tab IS TABLE OF c_source%ROWTYPE;
S t_source_tab; -- Renamed from l_data for better readability
-- Dedicated collections for INSERT and DELETE operations
SI t_source_tab := t_source_tab(); -- Source Insert
SD t_source_tab := t_source_tab(); -- Source Delete
BEGIN
-- Bulk load all data into PGA
OPEN c_source;
FETCH c_source BULK COLLECT
INTO S;
CLOSE c_source;
-- Exit if no data
IF S.COUNT = 0 THEN
RETURN;
END IF;
-- UPDATE all rows using FOR loop (Oracle 10g compatible)
FOR i IN 1 .. S.COUNT LOOP
UPDATE JC2007 J
SET J.TOTCTVA = J.TOTCTVA + (CASE
WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND
EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN
S(i).TOTCTVA
ELSE
0
END),
J.TOTFTVATAX = J.TOTFTVATAX + (CASE
WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND
EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN
S(i).TOTFTVATAX
ELSE
0
END),
J.TOTTVATAX = J.TOTTVATAX + (CASE
WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND
EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN
S(i).TOTTVATAX
ELSE
0
END),
J.TOTNETAX = J.TOTNETAX + (CASE
WHEN EXTRACT(MONTH FROM J.DATAACT) = J.LUNA AND
EXTRACT(YEAR FROM J.DATAACT) = J.AN THEN
S(i).TOTNETAX
ELSE
0
END),
J.RO21B = J.RO21B + NVL(S(i).RO21B, 0) + (CASE
WHEN NVL(S(i).RO21B, 0) <> 0 AND NVL(J.RO21NT, 0) <> 0 AND
NVL(J.RO21NT, 0) - (NVL(J.RO21T, 0) + NVL(S(i).RO21T, 0)) = 0 THEN
NVL(J.RO21NB, 0) - (NVL(J.RO21B, 0) + NVL(S(i).RO21B, 0))
ELSE
0
END),
J.RO21T = J.RO21T + S(i).RO21T,
J.RO11B = J.RO11B + NVL(S(i).RO11B, 0) + (CASE
WHEN NVL(S(i).RO11B, 0) <> 0 AND NVL(J.RO11NT, 0) <> 0 AND
NVL(J.RO11NT, 0) - (NVL(J.RO11T, 0) + NVL(S(i).RO11T, 0)) = 0 THEN
NVL(J.RO11NB, 0) - (NVL(J.RO11B, 0) + NVL(S(i).RO11B, 0))
ELSE
0
END),
J.RO11T = J.RO11T + S(i).RO11T,
J.RO24B = J.RO24B + NVL(S(i).RO24B, 0) + (CASE
WHEN NVL(S(i).RO24B, 0) <> 0 AND NVL(J.RO24NT, 0) <> 0 AND
NVL(J.RO24NT, 0) - (NVL(J.RO24T, 0) + NVL(S(i).RO24T, 0)) = 0 THEN
NVL(J.RO24NB, 0) - (NVL(J.RO24B, 0) + NVL(S(i).RO24B, 0))
ELSE
0
END),
J.RO24T = J.RO24T + S(i).RO24T,
J.RO20B = J.RO20B + NVL(S(i).RO20B, 0) + (CASE
WHEN NVL(S(i).RO20B, 0) <> 0 AND NVL(J.RO20NT, 0) <> 0 AND
NVL(J.RO20NT, 0) - (NVL(J.RO20T, 0) + NVL(S(i).RO20T, 0)) = 0 THEN
NVL(J.RO20NB, 0) - (NVL(J.RO20B, 0) + NVL(S(i).RO20B, 0))
ELSE
0
END),
J.RO20T = J.RO20T + S(i).RO20T,
J.RO19BCB = J.RO19BCB + NVL(S(i).RO19BCB, 0) + (CASE
WHEN NVL(S(i).RO19BCB, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND
NVL(S(i).RO19BVB, 0) = 0 AND NVL(S(i).RO19BFB, 0) = 0 AND
NVL(J.RO19NT, 0) - (NVL(J.RO19BCT, 0) + NVL(S(i).RO19BCT, 0)) = 0 THEN
NVL(J.RO19NB, 0) - (NVL(J.RO19BCB, 0) + NVL(S(i).RO19BCB, 0))
ELSE
0
END),
J.RO19BCT = J.RO19BCT + S(i).RO19BCT,
J.RO19BVB = J.RO19BVB + NVL(S(i).RO19BVB, 0) + (CASE
WHEN NVL(S(i).RO19BVB, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND
NVL(S(i).RO19BFB, 0) = 0 AND
NVL(J.RO19NT, 0) - (NVL(J.RO19BVT, 0) + NVL(S(i).RO19BVT, 0)) = 0 THEN
NVL(J.RO19NB, 0) - (NVL(J.RO19BVB, 0) + NVL(S(i).RO19BVB, 0))
ELSE
0
END),
J.RO19BVT = J.RO19BVT + S(i).RO19BVT,
J.RO19BFB = J.RO19BFB + NVL(S(i).RO19BFB, 0) + (CASE
WHEN NVL(S(i).RO19BFB, 0) <> 0 AND NVL(J.RO19NT, 0) <> 0 AND
NVL(J.RO19NT, 0) - (NVL(J.RO19BFT, 0) + NVL(S(i).RO19BFT, 0)) = 0 THEN
NVL(J.RO19NB, 0) - (NVL(J.RO19BFB, 0) + NVL(S(i).RO19BFB, 0))
ELSE
0
END),
J.RO19BFT = J.RO19BFT + S(i).RO19BFT,
J.RO09BCB = J.RO09BCB + NVL(S(i).RO09BCB, 0) + (CASE
WHEN NVL(S(i).RO09BCB, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND
NVL(S(i).RO09BVB, 0) = 0 AND NVL(S(i).RO09BFB, 0) = 0 AND
NVL(J.RO9NT, 0) - (NVL(J.RO09BCT, 0) + NVL(S(i).RO09BCT, 0)) = 0 THEN
NVL(J.RO9NB, 0) - (NVL(J.RO09BCB, 0) + NVL(S(i).RO09BCB, 0))
ELSE
0
END),
J.RO09BCT = J.RO09BCT + S(i).RO09BCT,
J.RO09BVB = J.RO09BVB + NVL(S(i).RO09BVB, 0) + (CASE
WHEN NVL(S(i).RO09BVB, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND
NVL(S(i).RO09BFB, 0) = 0 AND
NVL(J.RO9NT, 0) - (NVL(J.RO09BVT, 0) + NVL(S(i).RO09BVT, 0)) = 0 THEN
NVL(J.RO9NB, 0) - (NVL(J.RO09BVB, 0) + NVL(S(i).RO09BVB, 0))
ELSE
0
END),
J.RO09BVT = J.RO09BVT + S(i).RO09BVT,
J.RO09BFB = J.RO09BFB + NVL(S(i).RO09BFB, 0) + (CASE
WHEN NVL(S(i).RO09BFB, 0) <> 0 AND NVL(J.RO9NT, 0) <> 0 AND
NVL(J.RO9NT, 0) - (NVL(J.RO09BFT, 0) + NVL(S(i).RO09BFT, 0)) = 0 THEN
NVL(J.RO9NB, 0) - (NVL(J.RO09BFB, 0) + NVL(S(i).RO09BFB, 0))
ELSE
0
END),
J.RO09BFT = J.RO09BFT + S(i).RO09BFT,
J.RO05B = J.RO05B + NVL(S(i).RO05B, 0) + (CASE
WHEN NVL(S(i).RO05B, 0) <> 0 AND NVL(J.RO5NB, 0) <> 0 AND
NVL(J.RO5NT, 0) - (NVL(J.RO05T, 0) + NVL(S(i).RO05T, 0)) = 0 THEN
NVL(J.RO5NB, 0) - (NVL(J.RO05B, 0) + NVL(S(i).RO05B, 0))
ELSE
0
END),
J.RO05T = J.RO05T + S(i).RO05T,
J.RO21NB = J.RO21NB + S(i).RO21NB,
J.RO21NT = J.RO21NT + S(i).RO21NT,
J.RO11NB = J.RO11NB + S(i).RO11NB,
J.RO11NT = J.RO11NT + S(i).RO11NT,
J.RO24NB = J.RO24NB + S(i).RO24NB,
J.RO24NT = J.RO24NT + S(i).RO24NT,
J.RO19NB = J.RO19NB + S(i).RO19NB,
J.RO19NT = J.RO19NT + S(i).RO19NT,
J.RO20NB = J.RO20NB + S(i).RO20NB,
J.RO20NT = J.RO20NT + S(i).RO20NT,
J.RO9NB = J.RO9NB + S(i).RO9NB,
J.RO9NT = J.RO9NT + S(i).RO9NT,
J.RO5NB = J.RO5NB + S(i).RO5NB,
J.RO5NT = J.RO5NT + S(i).RO5NT,
J.ROSCN = J.ROSCN + S(i).ROSCN,
J.FO21B = J.FO21B + S(i).FO21B,
J.FO21T = J.FO21T + S(i).FO21T,
J.FO24B = J.FO24B + S(i).FO24B,
J.FO24T = J.FO24T + S(i).FO24T,
J.FO20B = J.FO20B + S(i).FO20B,
J.FO20T = J.FO20T + S(i).FO20T,
J.FO19BCB = J.FO19BCB + S(i).FO19BCB,
J.FO19BCT = J.FO19BCT + S(i).FO19BCT,
J.FO19BVB = J.FO19BVB + S(i).FO19BVB,
J.FO19BVT = J.FO19BVT + S(i).FO19BVT,
J.FO19BFB = J.FO19BFB + S(i).FO19BFB,
J.FO19BFT = J.FO19BFT + S(i).FO19BFT,
J.XX21TIB = J.XX21TIB + S(i).XX21TIB,
J.XX21TIT = J.XX21TIT + S(i).XX21TIT,
J.XX11TIB = J.XX11TIB + S(i).XX11TIB,
J.XX11TIT = J.XX11TIT + S(i).XX11TIT,
J.XX19TIB = J.XX19TIB + S(i).XX19TIB,
J.XX19TIT = J.XX19TIT + S(i).XX19TIT,
J.XX9TIB = J.XX9TIB + S(i).XX9TIB,
J.XX9TIT = J.XX9TIT + S(i).XX9TIT,
J.FO09BCB = J.FO09BCB + S(i).FO09BCB,
J.FO09BCT = J.FO09BCT + S(i).FO09BCT,
J.FO09BVB = J.FO09BVB + S(i).FO09BVB,
J.FO09BVT = J.FO09BVT + S(i).FO09BVT,
J.FO09BFB = J.FO09BFB + S(i).FO09BFB,
J.FO09BFT = J.FO09BFT + S(i).FO09BFT,
J.FOSCN = J.FOSCN + S(i).FOSCN,
J.CE24B = J.CE24B + S(i).CE24B,
J.CE24T = J.CE24T + S(i).CE24T,
J.CE20B = J.CE20B + S(i).CE20B,
J.CE20T = J.CE20T + S(i).CE20T,
J.CE5SB = J.CE5SB + S(i).CE5SB,
J.CE5ST = J.CE5ST + S(i).CE5ST,
J.CE9SB = J.CE9SB + S(i).CE9SB,
J.CE9ST = J.CE9ST + S(i).CE9ST,
J.CE21SB = J.CE21SB + S(i).CE21SB,
J.CE21ST = J.CE21ST + S(i).CE21ST,
J.CE24SB = J.CE24SB + S(i).CE24SB,
J.CE24ST = J.CE24ST + S(i).CE24ST,
J.CE20SB = J.CE20SB + S(i).CE20SB,
J.CE20ST = J.CE20ST + S(i).CE20ST,
J.CE19SB = J.CE19SB + S(i).CE19SB,
J.CE19ST = J.CE19ST + S(i).CE19ST,
J.CEBCB = J.CEBCB + S(i).CEBCB,
J.CEBCT = J.CEBCT + S(i).CEBCT,
J.CEBVB = J.CEBVB + S(i).CEBVB,
J.CEBVT = J.CEBVT + S(i).CEBVT,
J.CEBVSC = J.CEBVSC + S(i).CEBVSC,
J.CEBVN = J.CEBVN + S(i).CEBVN,
J.CEBFB = J.CEBFB + S(i).CEBFB,
J.CEBFT = J.CEBFT + S(i).CEBFT,
J.CEBFSC = J.CEBFSC + S(i).CEBFSC,
J.CEBFN = J.CEBFN + S(i).CEBFN,
J.CE21CTB = J.CE21CTB + S(i).CE21CTB,
J.CE21CTT = J.CE21CTT + S(i).CE21CTT,
J.CE11CTB = J.CE11CTB + S(i).CE11CTB,
J.CE11CTT = J.CE11CTT + S(i).CE11CTT,
J.CE19CTB = J.CE19CTB + S(i).CE19CTB,
J.CE19CTT = J.CE19CTT + S(i).CE19CTT,
J.CE9CTB = J.CE9CTB + S(i).CE9CTB,
J.CE9CTT = J.CE9CTT + S(i).CE9CTT,
J.CE5CTB = J.CE5CTB + S(i).CE5CTB,
J.CE5CTT = J.CE5CTT + S(i).CE5CTT,
J.CE21FTB = J.CE21FTB + S(i).CE21FTB,
J.CE21FTT = J.CE21FTT + S(i).CE21FTT,
J.CE11FTB = J.CE11FTB + S(i).CE11FTB,
J.CE11FTT = J.CE11FTT + S(i).CE11FTT,
J.CE19FTB = J.CE19FTB + S(i).CE19FTB,
J.CE19FTT = J.CE19FTT + S(i).CE19FTT,
J.CE9FTB = J.CE9FTB + S(i).CE9FTB,
J.CE9FTT = J.CE9FTT + S(i).CE9FTT,
J.CE5FTB = J.CE5FTB + S(i).CE5FTB,
J.CE5FTT = J.CE5FTT + S(i).CE5FTT,
J.TI21B = J.TI21B + S(i).TI21B,
J.TI21T = J.TI21T + S(i).TI21T,
J.TI11B = J.TI11B + S(i).TI11B,
J.TI11T = J.TI11T + S(i).TI11T,
J.TI24B = J.TI24B + S(i).TI24B,
J.TI24T = J.TI24T + S(i).TI24T,
J.TI20B = J.TI20B + S(i).TI20B,
J.TI20T = J.TI20T + S(i).TI20T,
J.TI19BCB = J.TI19BCB + S(i).TI19BCB,
J.TI19BCT = J.TI19BCT + S(i).TI19BCT,
J.TI19BVB = J.TI19BVB + S(i).TI19BVB,
J.TI19BVT = J.TI19BVT + S(i).TI19BVT,
J.TI19BFB = J.TI19BFB + S(i).TI19BFB,
J.TI19BFT = J.TI19BFT + S(i).TI19BFT,
J.TI09BVB = J.TI09BVB + S(i).TI09BVB,
J.TI09BVT = J.TI09BVT + S(i).TI09BVT,
J.TI09BFB = J.TI09BFB + S(i).TI09BFB,
J.TI09BFT = J.TI09BFT + S(i).TI09BFT,
J.ROTN = J.ROTN + S(i).ROTN,
J.ROTN50 = J.ROTN50 + S(i).ROTN50,
J.ROTN100 = J.ROTN100 + S(i).ROTN100,
J.RORTD21 = J.RORTD21 + S(i).RORTD21,
J.RORTD11 = J.RORTD11 + S(i).RORTD11,
J.RORTD24 = J.RORTD24 + S(i).RORTD24,
J.RORTD20 = J.RORTD20 + S(i).RORTD20,
J.RORTD19 = J.RORTD19 + S(i).RORTD19,
J.RORTD9 = J.RORTD9 + S(i).RORTD9,
J.RORTD5 = J.RORTD5 + S(i).RORTD5
WHERE J.AN = S(i).AN
AND J.LUNA = S(i).LUNA
AND J.ID_FACT = S(i).ID_FACT
AND NVL(J.ID_SUCURSALA, -99) = NVL(S(i).ID_SUCURSALA, -99);
-- Check result of UPDATE and populate SI/SD collections
IF SQL%ROWCOUNT = 0 THEN
-- No row was updated -> need to INSERT
SI.EXTEND;
SI(SI.COUNT) := S(i);
ELSIF tnScrie = pack_contafin.nStergere THEN
-- Row was updated and it's a deletion operation -> candidate for DELETE
SD.EXTEND;
SD(SD.COUNT) := S(i);
END IF;
END LOOP;
-- INSERT for new rows (Oracle 10g compatible)
IF SI.COUNT > 0 THEN
FOR i IN 1 .. SI.COUNT LOOP
INSERT INTO JC2007
(AN,
LUNA,
ID_FACT,
NRACT,
SERIE_ACT,
ID_FDOC,
DATAACT,
DATAIREG,
ID_PART,
COD,
TOTCTVA,
TOTFTVATAX,
TOTTVATAX,
TOTNETAX,
RO21B,
RO21T,
RO11B,
RO11T,
RO24B,
RO24T,
RO20B,
RO20T,
RO19BCB,
RO19BCT,
RO19BVB,
RO19BVT,
RO19BFB,
RO19BFT,
RO09BCB,
RO09BCT,
RO09BVB,
RO09BVT,
RO09BFB,
RO09BFT,
RO05B,
RO05T,
RO21NB,
RO21NT,
RO11NB,
RO11NT,
RO24NB,
RO24NT,
RO20NB,
RO20NT,
RO19NB,
RO19NT,
RO9NB,
RO9NT,
RO5NB,
RO5NT,
ROSCN,
FO21B,
FO21T,
FO24B,
FO24T,
FO20B,
FO20T,
FO19BCB,
FO19BCT,
FO19BVB,
FO19BVT,
FO19BFB,
FO19BFT,
XX21TIB,
XX21TIT,
XX11TIB,
XX11TIT,
XX19TIB,
XX19TIT,
XX9TIB,
XX9TIT,
FO09BCB,
FO09BCT,
FO09BVB,
FO09BVT,
FO09BFB,
FO09BFT,
FOSCN,
CE24B,
CE24T,
CE20B,
CE20T,
CE5SB,
CE5ST,
CE9SB,
CE9ST,
CE21SB,
CE21ST,
CE24SB,
CE24ST,
CE20SB,
CE20ST,
CE19SB,
CE19ST,
CEBCB,
CEBCT,
CEBVB,
CEBVT,
CEBVSC,
CEBVN,
CEBFB,
CEBFT,
CEBFSC,
CEBFN,
CE21CTB,
CE21CTT,
CE11CTB,
CE11CTT,
CE19CTB,
CE19CTT,
CE9CTB,
CE9CTT,
CE5CTB,
CE5CTT,
CE21FTB,
CE21FTT,
CE11FTB,
CE11FTT,
CE19FTB,
CE19FTT,
CE9FTB,
CE9FTT,
CE5FTB,
CE5FTT,
TI21B,
TI21T,
TI11B,
TI11T,
TI24B,
TI24T,
TI20B,
TI20T,
TI19BCB,
TI19BCT,
TI19BVB,
TI19BVT,
TI19BFB,
TI19BFT,
TI09BVB,
TI09BVT,
TI09BFB,
TI09BFT,
ROTN,
ROTN50,
ROTN100,
RORTD21,
RORTD11,
RORTD24,
RORTD20,
RORTD19,
RORTD9,
RORTD5,
ID_SUCURSALA)
VALUES
(SI(i).AN,
SI(i).LUNA,
SI(i).ID_FACT,
SI(i).NRACT,
SI(i).SERIE_ACT,
SI(i).ID_FDOC,
SI(i).DATAACT,
SI(i).DATAIREG,
SI(i).ID_PART,
SI(i).COD,
SI(i).TOTCTVA,
SI(i).TOTFTVATAX,
SI(i).TOTTVATAX,
SI(i).TOTNETAX,
(CASE
WHEN NVL(SI(i).RO21B, 0) <> 0 AND NVL(SI(i).RO21NT, 0) <> 0 AND
NVL(SI(i).RO21NT, 0) = NVL(SI(i).RO21T, 0) THEN
NVL(SI(i).RO21NB, 0)
ELSE
NVL(SI(i).RO21B, 0)
END),
SI(i).RO21T,
(CASE
WHEN NVL(SI(i).RO11B, 0) <> 0 AND NVL(SI(i).RO11NT, 0) <> 0 AND
NVL(SI(i).RO11NT, 0) = NVL(SI(i).RO11T, 0) THEN
NVL(SI(i).RO11NB, 0)
ELSE
NVL(SI(i).RO11B, 0)
END),
SI(i).RO11T,
(CASE
WHEN NVL(SI(i).RO24B, 0) <> 0 AND NVL(SI(i).RO24NT, 0) <> 0 AND
NVL(SI(i).RO24NT, 0) = NVL(SI(i).RO24T, 0) THEN
NVL(SI(i).RO24NB, 0)
ELSE
NVL(SI(i).RO24B, 0)
END),
SI(i).RO24T,
(CASE
WHEN NVL(SI(i).RO20B, 0) <> 0 AND NVL(SI(i).RO20NT, 0) <> 0 AND
NVL(SI(i).RO20NT, 0) = NVL(SI(i).RO20T, 0) THEN
NVL(SI(i).RO20NB, 0)
ELSE
NVL(SI(i).RO20B, 0)
END),
SI(i).RO20T,
(CASE
WHEN NVL(SI(i).RO19BCB, 0) <> 0 AND NVL(SI(i).RO19BVB, 0) = 0 AND
NVL(SI(i).RO19BFB, 0) = 0 AND NVL(SI(i).RO19NT, 0) <> 0 AND
NVL(SI(i).RO19NT, 0) = NVL(SI(i).RO19BCT, 0) THEN
NVL(SI(i).RO19NB, 0)
ELSE
NVL(SI(i).RO19BCB, 0)
END),
SI(i).RO19BCT,
(CASE
WHEN NVL(SI(i).RO19BVB, 0) <> 0 AND NVL(SI(i).RO19BFB, 0) = 0 AND
NVL(SI(i).RO19NT, 0) <> 0 AND
NVL(SI(i).RO19NT, 0) = NVL(SI(i).RO19BVT, 0) THEN
NVL(SI(i).RO19NB, 0)
ELSE
NVL(SI(i).RO19BVB, 0)
END),
SI(i).RO19BVT,
(CASE
WHEN NVL(SI(i).RO19BFB, 0) <> 0 AND NVL(SI(i).RO19NT, 0) <> 0 AND
NVL(SI(i).RO19NT, 0) = NVL(SI(i).RO19BFT, 0) THEN
NVL(SI(i).RO19NB, 0)
ELSE
NVL(SI(i).RO19BFB, 0)
END),
SI(i).RO19BFT,
(CASE
WHEN NVL(SI(i).RO09BCB, 0) <> 0 AND NVL(SI(i).RO09BVB, 0) = 0 AND
NVL(SI(i).RO09BFB, 0) = 0 AND NVL(SI(i).RO9NT, 0) <> 0 AND
NVL(SI(i).RO9NT, 0) = NVL(SI(i).RO09BCT, 0) THEN
NVL(SI(i).RO9NB, 0)
ELSE
NVL(SI(i).RO09BCB, 0)
END),
SI(i).RO09BCT,
(CASE
WHEN NVL(SI(i).RO09BVB, 0) <> 0 AND NVL(SI(i).RO09BFB, 0) = 0 AND
NVL(SI(i).RO9NT, 0) <> 0 AND
NVL(SI(i).RO9NT, 0) = NVL(SI(i).RO09BVT, 0) THEN
NVL(SI(i).RO9NB, 0)
ELSE
NVL(SI(i).RO09BVB, 0)
END),
SI(i).RO09BVT,
(CASE
WHEN NVL(SI(i).RO09BFB, 0) <> 0 AND NVL(SI(i).RO9NT, 0) <> 0 AND
NVL(SI(i).RO9NT, 0) = NVL(SI(i).RO09BFT, 0) THEN
NVL(SI(i).RO9NB, 0)
ELSE
NVL(SI(i).RO09BFB, 0)
END),
SI(i).RO09BFT,
(CASE
WHEN NVL(SI(i).RO05B, 0) <> 0 AND NVL(SI(i).RO5NT, 0) <> 0 AND
NVL(SI(i).RO5NT, 0) = NVL(SI(i).RO05T, 0) THEN
NVL(SI(i).RO5NB, 0)
ELSE
NVL(SI(i).RO05B, 0)
END),
SI(i).RO05T,
SI(i).RO21NB,
SI(i).RO21NT,
SI(i).RO11NB,
SI(i).RO11NT,
SI(i).RO24NB,
SI(i).RO24NT,
SI(i).RO20NB,
SI(i).RO20NT,
SI(i).RO19NB,
SI(i).RO19NT,
SI(i).RO9NB,
SI(i).RO9NT,
SI(i).RO5NB,
SI(i).RO5NT,
SI(i).ROSCN,
SI(i).FO21B,
SI(i).FO21T,
SI(i).FO24B,
SI(i).FO24T,
SI(i).FO20B,
SI(i).FO20T,
SI(i).FO19BCB,
SI(i).FO19BCT,
SI(i).FO19BVB,
SI(i).FO19BVT,
SI(i).FO19BFB,
SI(i).FO19BFT,
SI(i).XX21TIB,
SI(i).XX21TIT,
SI(i).XX11TIB,
SI(i).XX11TIT,
SI(i).XX19TIB,
SI(i).XX19TIT,
SI(i).XX9TIB,
SI(i).XX9TIT,
SI(i).FO09BCB,
SI(i).FO09BCT,
SI(i).FO09BVB,
SI(i).FO09BVT,
SI(i).FO09BFB,
SI(i).FO09BFT,
SI(i).FOSCN,
SI(i).CE24B,
SI(i).CE24T,
SI(i).CE20B,
SI(i).CE20T,
SI(i).CE5SB,
SI(i).CE5ST,
SI(i).CE9SB,
SI(i).CE9ST,
SI(i).CE21SB,
SI(i).CE21ST,
SI(i).CE24SB,
SI(i).CE24ST,
SI(i).CE20SB,
SI(i).CE20ST,
SI(i).CE19SB,
SI(i).CE19ST,
SI(i).CEBCB,
SI(i).CEBCT,
SI(i).CEBVB,
SI(i).CEBVT,
SI(i).CEBVSC,
SI(i).CEBVN,
SI(i).CEBFB,
SI(i).CEBFT,
SI(i).CEBFSC,
SI(i).CEBFN,
SI(i).CE21CTB,
SI(i).CE21CTT,
SI(i).CE11CTB,
SI(i).CE11CTT,
SI(i).CE19CTB,
SI(i).CE19CTT,
SI(i).CE9CTB,
SI(i).CE9CTT,
SI(i).CE5CTB,
SI(i).CE5CTT,
SI(i).CE21FTB,
SI(i).CE21FTT,
SI(i).CE11FTB,
SI(i).CE11FTT,
SI(i).CE19FTB,
SI(i).CE19FTT,
SI(i).CE9FTB,
SI(i).CE9FTT,
SI(i).CE5FTB,
SI(i).CE5FTT,
SI(i).TI21B,
SI(i).TI21T,
SI(i).TI11B,
SI(i).TI11T,
SI(i).TI24B,
SI(i).TI24T,
SI(i).TI20B,
SI(i).TI20T,
SI(i).TI19BCB,
SI(i).TI19BCT,
SI(i).TI19BVB,
SI(i).TI19BVT,
SI(i).TI19BFB,
SI(i).TI19BFT,
SI(i).TI09BVB,
SI(i).TI09BVT,
SI(i).TI09BFB,
SI(i).TI09BFT,
SI(i).ROTN,
SI(i).ROTN50,
SI(i).ROTN100,
SI(i).RORTD21,
SI(i).RORTD11,
SI(i).RORTD24,
SI(i).RORTD20,
SI(i).RORTD19,
SI(i).RORTD9,
SI(i).RORTD5,
SI(i).ID_SUCURSALA);
END LOOP;
END IF;
-- DELETE for rows where all values became 0 after UPDATE (Oracle 10g compatible)
-- Only executed when tnScrie = nStergere
IF SD.COUNT > 0 AND tnScrie = pack_contafin.nStergere THEN
FOR i IN 1 .. SD.COUNT LOOP
DELETE FROM JC2007 J
WHERE J.AN = SD(i).AN
AND J.LUNA = SD(i).LUNA
AND J.ID_FACT = SD(i).ID_FACT
AND NVL(J.ID_SUCURSALA, -99) = NVL(SD(i).ID_SUCURSALA, -99)
AND J.TOTCTVA = 0
AND J.TOTFTVATAX = 0
AND J.TOTTVATAX = 0
AND J.TOTNETAX = 0
AND J.RO24B = 0
AND J.RO24T = 0
AND J.RO20B = 0
AND J.RO20T = 0
AND J.RO21B = 0
AND J.RO21T = 0
AND J.RO11B = 0
AND J.RO11T = 0
AND J.RO19BCB = 0
AND J.RO19BCT = 0
AND J.RO19BVB = 0
AND J.RO19BVT = 0
AND J.RO19BFB = 0
AND J.RO19BFT = 0
AND J.RO09BCB = 0
AND J.RO09BCT = 0
AND J.RO09BVB = 0
AND J.RO09BVT = 0
AND J.RO09BFB = 0
AND J.RO09BFT = 0
AND J.RO05B = 0
AND J.RO05T = 0
AND J.RO21NB = 0
AND J.RO21NT = 0
AND J.RO11NB = 0
AND J.RO11NT = 0
AND J.RO24NB = 0
AND J.RO24NT = 0
AND J.RO20NB = 0
AND J.RO20NT = 0
AND J.RO19NB = 0
AND J.RO19NT = 0
AND J.RO9NB = 0
AND J.RO9NT = 0
AND J.RO5NB = 0
AND J.RO5NT = 0
AND J.ROSCN = 0
AND J.FO21B = 0
AND J.FO21T = 0
AND J.FO24B = 0
AND J.FO24T = 0
AND J.FO20B = 0
AND J.FO20T = 0
AND J.FO19BCB = 0
AND J.FO19BCT = 0
AND J.FO19BVB = 0
AND J.FO19BVT = 0
AND J.FO19BFB = 0
AND J.FO19BFT = 0
AND J.XX21TIB = 0
AND J.XX21TIT = 0
AND J.XX11TIB = 0
AND J.XX11TIT = 0
AND J.XX19TIB = 0
AND J.XX19TIT = 0
AND J.XX9TIB = 0
AND J.XX9TIT = 0
AND J.FO09BCB = 0
AND J.FO09BCT = 0
AND J.FO09BVB = 0
AND J.FO09BVT = 0
AND J.FO09BFB = 0
AND J.FO09BFT = 0
AND J.FOSCN = 0
AND J.CE24B = 0
AND J.CE24T = 0
AND J.CE20B = 0
AND J.CE20T = 0
AND J.CE5SB = 0
AND J.CE5ST = 0
AND J.CE9SB = 0
AND J.CE9ST = 0
AND J.CE21SB = 0
AND J.CE21ST = 0
AND J.CE24SB = 0
AND J.CE24ST = 0
AND J.CE20SB = 0
AND J.CE20ST = 0
AND J.CE19SB = 0
AND J.CE19ST = 0
AND J.CEBCB = 0
AND J.CEBCT = 0
AND J.CEBVB = 0
AND J.CEBVT = 0
AND J.CEBVSC = 0
AND J.CEBVN = 0
AND J.CEBFB = 0
AND J.CEBFT = 0
AND J.CEBFSC = 0
AND J.CEBFN = 0
AND J.CE21CTB = 0
AND J.CE21CTT = 0
AND J.CE11CTB = 0
AND J.CE11CTT = 0
AND J.CE19CTB = 0
AND J.CE19CTT = 0
AND J.CE9CTB = 0
AND J.CE9CTT = 0
AND J.CE5CTB = 0
AND J.CE5CTT = 0
AND J.CE21FTB = 0
AND J.CE21FTT = 0
AND J.CE11FTB = 0
AND J.CE11FTT = 0
AND J.CE19FTB = 0
AND J.CE19FTT = 0
AND J.CE9FTB = 0
AND J.CE9FTT = 0
AND J.CE5FTB = 0
AND J.CE5FTT = 0
AND J.TI21B = 0
AND J.TI21T = 0
AND J.TI11B = 0
AND J.TI11T = 0
AND J.TI24B = 0
AND J.TI24T = 0
AND J.TI20B = 0
AND J.TI20T = 0
AND J.TI19BCB = 0
AND J.TI19BCT = 0
AND J.TI19BVB = 0
AND J.TI19BVT = 0
AND J.TI19BFB = 0
AND J.TI19BFT = 0
AND J.TI09BVB = 0
AND J.TI09BVT = 0
AND J.TI09BFB = 0
AND J.TI09BFT = 0
AND J.ROTN = 0
AND J.ROTN50 = 0
AND J.ROTN100 = 0;
END LOOP;
END IF;
END;
<<sfarsit_procedura>>
null;
end SCRIE_JC_2007;
-------------------------------------------------------------------
-- COMPLETARE JV2007 CU ID_SET 10616 STORNARE PLATA/INCASARE
-------------------------------------------------------------------
Procedure COMPLETEAZA_JV_2007(tnAn IN JV2007.AN%TYPE,
tnLuna IN JV2007.LUNA%TYPE,
tcTabelSursa IN VARCHAR2,
tcCondSucursala IN VARCHAR2) is
lcMerge VARCHAR2(32000);
begin
lcMerge := 'MERGE INTO JV2007 A ' ||
'USING (select :1 as an,
:2 as luna,
dataact,
dataireg,
nract,
id_part,
id_fdoc,
totctva,
cod,
serie_act,
id_sucursala,
id_fact,
totftvatax,
tottvatax,
totnetax
from (select row_number() over(partition by a1.id_fact order by a1.an desc, a1.luna desc) as nrcrt,
a1.*
from jv2007 a1
where a1.id_Fact in (select distinct a2.id_factc
from ' || tcTabelSursa ||
' a2 left join documente b2 on a2.id_factc = b2.id_doc
where a2.id_set = 10616
and a2.an = :3
and a2.luna = :4
and a2.sters = 0
and a2.id_factc <> 0
and NVL(b2.tva_incasare,0) = 1 ' ||
REPLACE(tcCondSucursala, 'ALIAS.', 'A2.') || ')
' ||
REPLACE(tcCondSucursala, 'ALIAS.', 'A1.') ||
') where nrcrt = 1
and an * 12 + luna <> :5 * 12 + :6) B ' ||
'ON (A.AN = B.AN AND A.LUNA = B.LUNA AND A.ID_FACT = B.ID_FACT AND NVL(A.ID_SUCURSALA,-99)=NVL(B.ID_SUCURSALA,-99)) ' ||
'WHEN NOT MATCHED THEN ' ||
'insert (an,luna,dataact,dataireg,nract,id_part,id_fdoc,totctva,cod,serie_act,id_sucursala,id_fact,totftvatax,tottvatax,totnetax) ' ||
'values (b.an,b.luna,b.dataact,b.dataireg,b.nract,b.id_part,b.id_fdoc,b.totctva,b.cod,b.serie_act,b.id_sucursala,b.id_fact,b.totftvatax,b.tottvatax,b.totnetax)';
execute immediate lcMerge
using tnAn, tnLuna, tnAn, tnLuna, tnAn, tnLuna;
end COMPLETEAZA_JV_2007;
-------------------------------------------------------------------
-- COMPLETARE JC2007 CU ID_SET 10616 STORNARE PLATA/INCASARE
-------------------------------------------------------------------
Procedure COMPLETEAZA_JC_2007(tnAn IN JC2007.AN%TYPE,
tnLuna IN JC2007.LUNA%TYPE,
tcTabelSursa IN VARCHAR2,
tcCondSucursala IN VARCHAR2) is
lcMerge VARCHAR2(32000);
begin
lcMerge := 'MERGE INTO JC2007 A ' ||
'USING (select :1 as an,
:2 as luna,
dataact,
dataireg,
nract,
id_part,
id_fdoc,
totctva,
cod,
serie_act,
id_sucursala,
id_fact,
totftvatax,
tottvatax,
totnetax
from (select row_number() over(partition by a1.id_fact order by a1.an desc, a1.luna desc) as nrcrt,
a1.*
from jc2007 a1
where a1.id_Fact in (select distinct a2.id_factd
from ' || tcTabelSursa ||
' a2 left join documente b2 on a2.id_factd = b2.id_doc
where a2.id_set = 10616
and a2.an = :3
and a2.luna = :4
and a2.sters = 0
and a2.id_factd <> 0
and NVL(b2.tva_incasare,0) = 1 ' ||
REPLACE(tcCondSucursala, 'ALIAS.', 'A2.') || ')
' ||
REPLACE(tcCondSucursala, 'ALIAS.', 'A1.') ||
') where nrcrt = 1
and an * 12 + luna <> :5 * 12 + :6) B ' ||
'ON (A.AN = B.AN AND A.LUNA = B.LUNA AND A.ID_FACT = B.ID_FACT AND NVL(A.ID_SUCURSALA,-99)=NVL(B.ID_SUCURSALA,-99)) ' ||
'WHEN NOT MATCHED THEN ' ||
'insert (an,luna,dataact,dataireg,nract,id_part,id_fdoc,totctva,cod,serie_act,id_sucursala,id_fact,totftvatax,tottvatax,totnetax) ' ||
'values (b.an,b.luna,b.dataact,b.dataireg,b.nract,b.id_part,b.id_fdoc,b.totctva,b.cod,b.serie_act,b.id_sucursala,b.id_fact,b.totftvatax,b.tottvatax,b.totnetax)';
execute immediate lcMerge
using tnAn, tnLuna, tnAn, tnLuna, tnAn, tnLuna;
end COMPLETEAZA_JC_2007;
-----------------------------------------------------------------------
Procedure COMPLETEAZA_IREG_PARTENERI(tnAn in IREG_PARTENERI.AN%TYPE,
tnLuna in IREG_PARTENERI.LUNA%TYPE,
tcTabelSursa IN VARCHAR2,
tcCondSucursala IN VARCHAR2,
tcCondInPlus IN VARCHAR2,
tcCont IN VARCHAR2,
tnIdPart IN NUMBER) is
ldDataNull DATE := TO_DATE('19700101', 'YYYYMMDD');
lcMerge VARCHAR2(32000);
begin
-- conditia de la ON e luata de la incasari
-- inregistrarile vechi din IREG_PARTENERI le iau in functie de ID_FACTC/ID_FACTD pentru ca,
-- atunci cand a fost ales documentul pereche pe nota initiala, ID_FACT-ul respectiv exista in IREG_PARTENERI, indiferent daca
-- refacerea s-a facut dupa numar act sau id_fact
lcMerge := 'MERGE INTO IREG_PARTENERI I ' || 'USING ' ||
'(select id_sucursala,
:1 as an,
:2 as luna,
cont,
acont,
id_part,
id_valuta,
id_fact,
id_fdoc,
id_lucrare,
id_set,
id_ctr,
id_jtva_coloana,
id_venchelt,
proc_tva,
curs,
dataact,
dataireg,
datascad,
nract,
serie_act,
id_responsabil,
cod,
explicatia,
explicatia4,
explicatia5,
precdeb + debit as precdeb,
preccred + credit as preccred,
precvaldeb + valdebit as precvaldeb,
precvalcred + valcredit as precvalcred
from (select row_number() over(partition by a1.id_fact order by a1.an desc, a1.luna desc) as nrcrt,
a1.*
from ireg_parteneri a1
where a1.id_Fact in
(select distinct id_factc
from ' || tcTabelSursa || ' a2
WHERE A2.AN = :3
and A2.LUNA = :4
and A2.STERS = 0
and A2.ID_SET = 10616
and A2.SCC = :5
and NVL(A2.ID_FACTC,0) <> 0
and NVL2(:6,A2.ID_PARTC,-1) = NVL(:7,-1) ' ||
REPLACE(tcCondSucursala, 'ALIAS.', 'A2.') || '
UNION ALL
select distinct id_factd
from ' || tcTabelSursa || ' a2
WHERE A2.AN = :8
and A2.LUNA = :9
and A2.STERS = 0
and A2.ID_SET = 10616
and A2.SCD = :10
and NVL(A2.ID_FACTD,0) <> 0
and NVL2(:11,A2.ID_PARTD,-1) = NVL(:12,-1) ' ||
REPLACE(tcCondSucursala, 'ALIAS.', 'A2.') || ')
and A1.cont = :13
and A1.dataact is not null
and A1.an * 12 + A1.luna < :14 * 12 + :15)
where nrcrt = 1) S ' ||
'ON (I.AN = S.AN AND I.LUNA = S.LUNA AND I.CONT = S.CONT AND NVL(I.ACONT, ''XXXX'') = NVL(S.ACONT, ''XXXX'') AND
NVL(I.NRACT,0) = NVL(S.NRACT,0) AND NVL(I.SERIE_ACT,''+_'')=NVL(S.SERIE_ACT,''+_'') AND NVL(I.DATAACT,:16) = NVL(S.DATAACT,:17) AND
NVL(I.DATAIREG,:18) = NVL(S.DATAIREG,:19) AND NVL(I.DATASCAD,:20) = NVL(S.DATASCAD,:21) AND
NVL(I.ID_PART,0) = NVL(S.ID_PART,0) AND NVL(I.ID_VALUTA,0) = NVL(S.ID_VALUTA,0) AND NVL(I.ID_SUCURSALA,0) = NVL(S.ID_SUCURSALA,0) ' ||
tcCondInPlus || ')' || 'WHEN NOT MATCHED THEN ' ||
'INSERT (id_sucursala, an, luna, cont, acont, id_part, id_valuta,' ||
'id_fact, id_fdoc, id_lucrare, id_set, id_ctr, id_jtva_coloana,' ||
'id_venchelt, proc_tva, curs, dataact, dataireg, datascad, nract,serie_act,' ||
'id_responsabil, cod, explicatia, explicatia4, explicatia5,' ||
'precdeb, preccred, precvaldeb, precvalcred)' ||
'VALUES (S.id_sucursala, S.an, S.luna, S.cont, S.acont, S.id_part, S.id_valuta,' ||
'S.id_fact, S.id_fdoc, S.id_lucrare, S.id_set, S.id_ctr, S.id_jtva_coloana,' ||
'S.id_venchelt, S.proc_tva, S.curs, S.dataact, S.dataireg, S.datascad, S.nract, S.serie_act,' ||
'S.id_responsabil, S.cod, S.explicatia, S.explicatia4, S.explicatia5,' ||
'S.precdeb, S.preccred, S.precvaldeb, S.precvalcred)';
--pinfo(lcMerge, 'CompleteazaIregPart');
execute immediate lcMerge
using tnAn, tnLuna, tnAn, tnLuna, tcCont, tnIdPart, tnIdPart, tnAn, tnLuna, tcCont, tnIdPart, tnIdPart, tcCont, tnAn, tnLuna, ldDataNull, ldDataNull, ldDataNull, ldDataNull, ldDataNull, ldDataNull;
end COMPLETEAZA_IREG_PARTENERI;
-----------------------------------------------------------------------
FUNCTION VERIFICA_NOTE_CONTABILE(tlVerificAnalitic IN NUMBER) RETURN NUMBER IS
V_TOTAL NUMBER(10);
BEGIN
V_TOTAL := 0;
select sum(completare_partener +
DECODE(tlVerificAnalitic, 1, completare_analitic, 0) +
completare_pereche) as total
INTO V_TOTAL
from (select a.cont,
a.id_part,
a.analitic,
a.pereche,
a.cont_p,
a.cont_d,
b.cont as contpart,
b.fel_cont,
b.cu_inregistrari,
b.explicatie as explic_cont,
c.cont_c as exceptie,
c.debit as pozitie,
c.invers,
c1.lista,
NVL2(b.cont, decode(a.id_part, 0, 1, 0), 0) as completare_partener,
NVL2(d.cont, NVL2(a.analitic, 0, 1), 0) as completare_analitic,
NVL2(b.cont,
decode(a.cont_d,
1,
(case
when a.pereche = 0 and b.cu_inregistrari = 1 and
b.fel_cont = 1 then
(case
when instr(c1.lista, a.cont_p) > 0 and c.debit = 0 and
c.invers = 1 then
0
else
1
end)
else
0
end),
0,
(case
when a.pereche = 0 and b.cu_inregistrari = 1 and
b.fel_cont = 0 then
(case
when instr(c1.lista, a.cont_p) > 0 and c.debit = 1 and
c.invers = 1 then
0
else
1
end)
else
0
end)),
0) as completare_pereche
from (select distinct scd as cont,
id_partd as id_part,
ascd as analitic,
pereched as pereche,
scc as cont_p,
1 as cont_d
from act_temp
where sters = 0
and scd is not null
and suma <> 0
union all
select distinct scc as cont,
id_partc as id_part,
ascc as analitic,
perechec as pereche,
scd as cont_p,
0 as cont_d
from act_temp
where sters = 0
and scc is not null
and suma <> 0) a
left join vcoresp_tip_cont b
on a.cont = b.cont
left join exceptii_ireg c
on b.cont = c.cont
and c.invers = 1
left join (select cont, stringagg(cont_c) as lista
from exceptii_ireg
where invers = 1
group by cont) c1
on b.cont = c1.cont
left join (select distinct cont
from vplcont_analitic
where inactiv = 0
and an = pack_sesiune.getan()) d
on a.cont = d.cont);
RETURN V_TOTAL;
END VERIFICA_NOTE_CONTABILE;
--------------------------------------------------------------------------
---------------------------------------------------------------------------------------
PROCEDURE SCRIE_IN_BALANTA(tcS in varchar2,
tnAn in BAL.AN%TYPE,
tnLuna in BAL.LUNA%TYPE,
tnScrie in number) IS
lnScrie NUMBER(1); -- 0/2 = SCRIERE/STERGERE; 1 = REFACERE
lcAct VARCHAR2(100);
lcMerge VARCHAR2(10000);
lnIdSucursala act.id_sucursala%type;
lcWhereSucursale varchar2(1000);
BEGIN
lnIdSucursala := PACK_CONTAFIN.GET_ID_SUCURSALA();
if lnIdSucursala is not null then
lcWhereSucursale := ' and id_sucursala = ' || lnIdSucursala;
end if;
lnScrie := NVL(tnScrie, 0);
IF lnScrie = pack_contafin.nRefacere then
lcAct := 'ACT';
ELSE
lcAct := 'ACT_TEMP';
END IF;
-- BALANTA SINTETICA
lcMerge := 'MERGE INTO BAL B
USING (SELECT ID_SUCURSALA, CONT, SUM(DEBIT) AS DEBIT, SUM(CREDIT) AS CREDIT
FROM (SELECT ID_SUCURSALA, scd as cont,
sum(suma) as DEBIT,
sum(0.0000) AS CREDIT
FROM ' || lcAct ||
' WHERE STERS = 0
AND AN = :1
AND LUNA = :2
AND SCD IS NOT NULL ' ||
lcWhereSucursale || '
GROUP BY ID_SUCURSALA, SCD
UNION ALL
SELECT ID_SUCURSALA, scc as cont,
sum(0.0000) AS DEBIT,
sum(suma) as CREDIT
FROM ' || lcAct ||
' WHERE STERS = 0
AND AN = :3
AND LUNA = :4
AND SCC IS NOT NULL ' ||
lcWhereSucursale || '
GROUP BY ID_SUCURSALA, SCC)
GROUP BY ID_SUCURSALA, CONT) A
ON (B.AN = :5 AND B.LUNA = :6 AND NVL(B.CONT, ''XXXX'') = NVL(A.CONT, ''XXXX'')
AND NVL(B.id_sucursala,0) = NVL(A.id_sucursala,0))
WHEN MATCHED THEN
UPDATE
SET B.RULDEB = B.RULDEB + A.DEBIT,
B.RULCRED = B.RULCRED + A.CREDIT
WHEN NOT MATCHED THEN
INSERT
(ID_SUCURSALA, AN, LUNA, CONT, RULDEB, RULCRED)
VALUES
(A.ID_SUCURSALA, :7, :8, A.CONT, A.DEBIT, A.CREDIT)';
EXECUTE IMMEDIATE lcMerge
USING tnAn, tnLuna, tnAn, tnLuna, tnAn, tnLuna, tnAn, tnLuna;
-- BALANTA ANALITICA
lcMerge := 'MERGE INTO BALANA B
USING
(SELECT ID_SUCURSALA, CONT, ACONT, SUM(DEBIT) AS DEBIT, SUM(CREDIT) AS CREDIT
FROM (SELECT ID_SUCURSALA, scd as cont, ascd as acont, sum(suma) as DEBIT, sum(0.0000) AS CREDIT
FROM ' || lcAct || ' WHERE STERS = 0 AND SCD IS NOT NULL AND ASCD IS NOT NULL AND AN = :1
AND LUNA = :2 ' || lcWhereSucursale || '
GROUP BY ID_SUCURSALA, SCD, ASCD
UNION ALL
SELECT ID_SUCURSALA, scc as cont, ascc as acont, sum(0.0000) AS DEBIT, sum(suma) as CREDIT
FROM ' || lcAct || ' WHERE STERS = 0 AND SCC IS NOT NULL AND ASCC IS NOT NULL AND AN = :3
AND LUNA = :4 ' || lcWhereSucursale || '
GROUP BY ID_SUCURSALA, SCC, ASCC)
GROUP BY ID_SUCURSALA, CONT, ACONT) A
ON (B.AN = :5 AND B.LUNA = :6 AND NVL(B.CONT,''XXXX'') = NVL(A.CONT,''XXXX'') AND NVL(B.ACONT,''XXXX'') = NVL(A.ACONT,''XXXX'')
AND NVL(B.id_sucursala,0) = NVL(A.id_sucursala,0))
WHEN MATCHED THEN
UPDATE SET B.RULDEB = B.RULDEB + A.DEBIT, B.RULCRED = B.RULCRED + A.CREDIT
WHEN NOT MATCHED THEN
INSERT (ID_SUCURSALA, AN, LUNA, CONT, ACONT, RULDEB, RULCRED)
VALUES (A.ID_SUCURSALA, :7, :8, A.CONT, A.ACONT, A.DEBIT, A.CREDIT)';
EXECUTE IMMEDIATE lcMerge
USING tnAn, tnLuna, tnAn, tnLuna, tnAn, tnLuna, tnAn, tnLuna;
END SCRIE_IN_BALANTA;
---------------------------------------------------------------
PROCEDURE SCRIE_IN_BALANTA_PARTENERI(tcs in varchar2,
tnAn in BALANTA_PARTENERI.AN%TYPE,
tnLuna in BALANTA_PARTENERI.LUNA%TYPE,
tcCont in BALANTA_PARTENERI.CONT%TYPE,
tnScrie in number,
tnIdPart in BALANTA_PARTENERI.ID_PART%TYPE DEFAULT NULL) IS
lnScrie NUMBER(1); -- 0/2 = SCRIERE/STERGERE; 1 = REFACERE
lcAct VARCHAR2(100);
lcMerge VARCHAR2(10000);
lnIdSucursala act.id_sucursala%type;
lcWhereSucursale varchar2(1000);
lcUpdWherePartD varchar2(1000);
lcUpdWherePartC varchar2(1000);
BEGIN
lnIdSucursala := PACK_CONTAFIN.GET_ID_SUCURSALA();
if lnIdSucursala is not null then
lcWhereSucursale := ' and id_sucursala = ' || lnIdSucursala;
end if;
-- 30.06.2011
if tnIdPart is not null then
lcUpdWherePartD := ' and id_partd = ' || tnIdPart;
lcUpdWherePartC := ' and id_partc = ' || tnIdPart;
end if;
-- 30.06.2011 ^
lnScrie := NVL(tnScrie, 0);
IF lnScrie = pack_contafin.nRefacere then
lcAct := 'ACT';
ELSE
lcAct := 'ACT_TEMP';
END IF;
-- id_set 77772, 77773, 77774 - note reglare denominare 01-07-2005
lcMerge := 'MERGE INTO BALANTA_PARTENERI B
USING (SELECT J.ID_SUCURSALA,
J.CONT,
J.ACONT,
J.ID_PART,
J.ID_VALUTA,
SUM(J.DEBIT) AS DEBIT,
SUM(J.CREDIT) AS CREDIT,
SUM(J.VALDEBIT) AS VALDEBIT,
SUM(J.VALCREDIT) AS VALCREDIT
FROM (SELECT ID_SUCURSALA,
scd as cont,
ascd as acont,
id_partd as id_part,
id_valuta,
sum(suma) as DEBIT,
0.0000 AS CREDIT,
sum(suma_val) as VALDEBIT,
0.0000 AS VALCREDIT
FROM ' || lcAct ||
' WHERE STERS = 0
and scd is not null
AND AN = :1
AND LUNA = :2 ' || lcUpdWherePartD ||
lcWhereSucursale || case
when tcCont is not null then
'AND scd = :3'
else
''
end || ' AND ID_SET NOT IN (77772, 77773, 77774)
GROUP BY ID_SUCURSALA, SCD, ASCD, ID_PARTD, ID_VALUTA
UNION ALL
SELECT ID_SUCURSALA, scc as cont,
ascc as acont,
id_partc as id_part,
id_valuta,
0.0000 AS DEBIT,
sum(suma) as CREDIT,
0.0000 AS VALDEBIT,
sum(suma_val) as VALCREDIT
FROM ' || lcAct ||
' WHERE STERS = 0
and scc is not null
AND AN = :4
AND LUNA = :5 ' || lcUpdWherePartC ||
lcWhereSucursale || case
when tcCont is not null then
'AND scc = :6'
else
''
end || ' AND ID_SET NOT IN (77772, 77773, 77774)
GROUP BY ID_SUCURSALA, SCC, ASCC, ID_PARTC, ID_VALUTA ) J join config_cont_ireg CI on J.cont=CI.cont
GROUP BY J.ID_SUCURSALA, J.CONT, J.ACONT, J.ID_PART, J.ID_VALUTA) A
ON (B.AN = :7 AND B.LUNA = :8 AND NVL(B.CONT, ''XXXX'') = NVL(A.CONT, ''XXXX'')
AND NVL(B.ACONT, ''XXXX'') = NVL(A.ACONT, ''XXXX'') AND B.ID_PART = A.ID_PART
AND B.ID_VALUTA = A.ID_VALUTA
AND NVL(B.id_sucursala,0) = NVL(A.id_sucursala,0))
WHEN MATCHED THEN
UPDATE
SET B.DEBIT = B.DEBIT + A.DEBIT,
B.CREDIT = B.CREDIT + A.CREDIT,
B.VALDEBIT = B.VALDEBIT + A.VALDEBIT,
B.VALCREDIT = B.VALCREDIT + A.VALCREDIT
WHEN NOT MATCHED THEN
INSERT
(ID_SUCURSALA,
AN,
LUNA,
CONT,
ACONT,
ID_PART,
ID_VALUTA,
DEBIT,
CREDIT,
VALDEBIT,
VALCREDIT)
VALUES
(A.ID_SUCURSALA,
:9,
:10,
A.CONT,
A.ACONT,
A.ID_PART,
A.ID_VALUTA,
A.DEBIT,
A.CREDIT,
A.VALDEBIT,
A.VALCREDIT)';
if tcCont is not null then
EXECUTE IMMEDIATE lcMerge
USING tnAn, tnLuna, tcCont, tnAn, tnLuna, tcCont, tnAn, tnLuna, tnAn, tnLuna;
else
EXECUTE IMMEDIATE lcMerge
USING tnAn, tnLuna, tnAn, tnLuna, tnAn, tnLuna, tnAn, tnLuna;
end if;
END SCRIE_IN_BALANTA_PARTENERI;
PROCEDURE SCRIE_IN_IREG_PARTENERI(tnAn in IREG_PARTENERI.AN%TYPE,
tnLuna in IREG_PARTENERI.LUNA%TYPE,
tcCont in IREG_PARTENERI.CONT%TYPE,
tnScrie in number,
tnIdPart in IREG_PARTENERI.ID_PART%TYPE DEFAULT NULL) IS
lnScrie NUMBER(1); -- 0/2 = SCRIERE/STERGERE; 1 = REFACERE
lcAct VARCHAR2(100);
lcMerge VARCHAR2(32000);
lcRefacereNumarAct OPTIUNI.VARVALUE%Type;
lnRefacereNumarAct number(10) := 0;
lnFelCont CONFIG_CONT_IREG.FEL_CONT%TYPE;
lnCuInregistrari CONFIG_CONT_IREG.CU_INREGISTRARI%TYPE;
lnCuVenchelt CONFIG_CONT_IREG.CU_VENCHELT%TYPE;
lnCuProcTva CONFIG_CONT_IREG.CU_PROC_TVA%TYPE;
lcCondInPlus VARCHAR2(1000);
lcSelInPlus VARCHAR2(1000);
lcGrupInPlus VARCHAR2(1000);
lcInsertColInPlus VARCHAR2(1000);
lcInsertValInPlus VARCHAR2(1000);
tcAcontNull VARCHAR2(4) := 'XXXX';
ldDataNull DATE := TO_DATE('19700101', 'YYYYMMDD');
lnIdSucursala act.id_sucursala%type;
lcWhereSucursale varchar2(1000);
lcUpdWherePartAct varchar2(1000);
lcUpdWherePart varchar2(1000);
BEGIN
lnIdSucursala := PACK_CONTAFIN.GET_ID_SUCURSALA();
if lnIdSucursala is not null then
lcWhereSucursale := ' and ALIAS.id_sucursala = ' || lnIdSucursala;
end if;
-- 30.06.2011
if tnIdPart is not null then
lcUpdWherePartAct := ' and (ALIAS.id_partd = ' || tnIdPart ||
' OR ALIAS.id_partc = ' || tnIdPart || ')';
lcUpdWherePart := ' and ALIAS.id_part = ' || tnIdPart;
end if;
-- 30.06.2011 ^
lnScrie := NVL(tnScrie, 0);
IF lnScrie = 1 then
lcAct := 'ACT';
ELSE
lcAct := 'ACT_TEMP';
END IF;
-- folosesc imperecherea de inregistrari dupa numar act sau id_fact
lcRefacereNumarAct := PACK_SESIUNE.getOptiuneFirma('REFACERENUMARACT');
IF lcRefacereNumarAct IS NULL THEN
lnRefacereNumarAct := 0;
ELSE
lnRefacereNumarAct := to_number(lcRefacereNumarAct);
END IF;
-- felul contului;
begin
SELECT C.FEL_CONT, C.CU_INREGISTRARI, C.CU_VENCHELT, C.CU_PROC_TVA
INTO lnFelCont, lnCuInregistrari, lnCuVenchelt, lnCuProcTva
FROM VCONFIG_CONT_IREG C
WHERE CONT = tcCont
AND CU_INREGISTRARI = 1;
exception
when no_data_found then
lnCuInregistrari := 0;
end;
IF lnCuInregistrari = 0 THEN
GOTO EndProc;
END IF;
-- IMPERECHERE DUPA ID_FACT
IF lnRefacereNumarAct = 0 THEN
lcCondInPlus := lcCondInPlus || ' AND I.ID_FACT = S.ID_FACT ';
lcSelInPlus := lcSelInPlus || ', ID_FACT ';
lcGrupInPlus := lcGrupInPlus || ', ID_FACT ';
lcInsertColInPlus := lcInsertColInPlus || ', ID_FACT ';
lcInsertValInPlus := lcInsertValInPlus || ', S.ID_FACT ';
ELSE
lcSelInPlus := lcSelInPlus || ', MAX(ID_FACT) AS ID_FACT ';
lcInsertColInPlus := lcInsertColInPlus || ', ID_FACT ';
lcInsertValInPlus := lcInsertValInPlus || ', S.ID_FACT ';
END IF;
-- GRUPARE DUPA TIP VENIT/CHELTUIALA
IF lnCuVenchelt = 1 THEN
lcCondInPlus := lcCondInPlus ||
' AND I.ID_VENCHELT = S.ID_VENCHELT ';
lcSelInPlus := lcSelInPlus || ', ID_VENCHELT ';
lcGrupInPlus := lcGrupInPlus || ',ID_VENCHELT ';
lcInsertColInPlus := lcInsertColInPlus || ', ID_VENCHELT ';
lcInsertValInPlus := lcInsertValInPlus || ', S.ID_VENCHELT ';
ELSE
lcSelInPlus := lcSelInPlus ||
', MAX(ID_VENCHELT) AS ID_VENCHELT ';
lcInsertColInPlus := lcInsertColInPlus || ', ID_VENCHELT ';
lcInsertValInPlus := lcInsertValInPlus || ', S.ID_VENCHELT ';
END IF;
-- GRUPARE DUPA PROCENT TVA/ID_JTVA
IF lnCuProcTva = 1 THEN
-- LA INREGISTRAREA 408 AM ID_JTVA_COLOANA RO09BFB, RO09BVB...., IAR LA REGULARIZARE 408 POT SA AM RO09NB (TVA INCASARE NEEXIGIBIL)
-- SI NU SE MAI PUPA INREGISTRARILE SI DUPA ID_JTVA_COLOANA
-- INCERC SA LE PUP DOAR DUPA PROC_TVA (STIU CA POATE SA SARA IN AER) :)
-- lcCondInPlus := lcCondInPlus || ' AND NVL(I.PROC_TVA,0) = NVL(S.PROC_TVA,0) AND NVL(I.ID_JTVA_COLOANA,0) = NVL(S.ID_JTVA_COLOANA,0) ';
lcCondInPlus := lcCondInPlus ||
' AND NVL(I.PROC_TVA,0) = NVL(S.PROC_TVA,0) ';
lcSelInPlus := lcSelInPlus ||
', PROC_TVA, MAX(ID_JTVA_COLOANA) AS ID_JTVA_COLOANA';
lcGrupInPlus := lcGrupInPlus || ', PROC_TVA ';
lcInsertColInPlus := lcInsertColInPlus ||
', PROC_TVA, ID_JTVA_COLOANA ';
lcInsertValInPlus := lcInsertValInPlus ||
', S.PROC_TVA, S.ID_JTVA_COLOANA ';
END IF;
pack_contafin.COMPLETEAZA_IREG_PARTENERI(tnAn,
tnLuna,
lcAct,
lcWhereSucursale,
lcCondInPlus,
tcCont,
tnIdPart);
-- SELECTEZ TOATE FACTURILE DIN REGISTRUL JURNAL
-- (CONTUL ESTE PE DEBIT SI ESTE ACTIV SAU
-- CONTUL ESTE PE CREDIT SI ESTE ACTIV SI ESTE EXCEPTIE SAU REEVALUARE IN VALUTA ETC.
-- NU ESTE 4111 = 4427 CU PERECHED SAU ID_FACTD COMPLETAT (REGULARIZARE AVANS) 419 = 4111; 4111 = 4427)
-- INVERSEZ SUME, CONTURI, PARTENERI PENTRU EXCEPTII SI REEVALUARE IN VALUTA
-- GRUPEZ DUPA NRACT, DATACT ETC.
-- MERGE IN IREG_PARTENERI
-- WHEN MATCHED : ACTUALIZEZ SUMELE SI CURSUL VALUTAR PENTRU REEVALUARE SOLDURI IN VALUTA
-- : STERG LINIA DACA OPERATIA ESTE STERGERE SI AM NUMAI ZERO-URI
-- WHEN NOT MATCHED : ADAUG LINIE IN IREG_PARTENERI
-- ID_SET = 90501 : REEVALUARE SOLDURI IN VALUTA LA 31.12.XXXX
-- A.ID_SET NOT IN (77771,77772,77773,77774) : NOTE REGULARIZARE DENOMINARE - AFECTEAZA DOAR BALANTA DE VERIFICARE
lcMerge := 'MERGE INTO IREG_PARTENERI I USING (SELECT an,
luna,
cont,
acont,
nract,
serie_act,
dataact,
dataireg,
MAX(datascad) AS DATASCAD,
id_part,
id_valuta,
id_sucursala,
SUM(debit) AS DEBIT,
SUM(credit) AS CREDIT,
SUM(valdebit) AS VALDEBIT,
SUM(valcredit) AS VALCREDIT,
max(curs) as curs,
max(id_fdoc) as id_fdoc,
max(id_lucrare) as id_lucrare,
max(id_set) as id_set,
max(id_ctr) as id_ctr,
max(id_responsabil) as id_responsabil,
max(cod) as cod,
max(explicatia) as explicatia,
max(explicatia4) as explicatia4,
max(explicatia5) as explicatia5 ' || lcSelInPlus ||
' FROM (SELECT A.AN,
A.LUNA,
A.COD,
A.NRACT,
A.SERIE_ACT,
TRUNC(A.DATAACT) AS DATAACT,
TRUNC(A.DATASCAD) AS DATASCAD,
TRUNC(A.DATAIREG) AS DATAIREG,
:1 AS CONT,
(CASE
WHEN ((A.SCD = :2 AND CD.FEL_CONT IN (0,2) AND NVL(E.EXCEPTIE, 0) = 0) OR
(A.SCC = :3 AND CC.FEL_CONT IN (0,2) AND NVL(E.EXCEPTIE, 0) = 1))
THEN CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN A.ASCC ELSE A.ASCD END
ELSE CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN A.ASCD ELSE A.ASCC END
END) AS ACONT,
(CASE
WHEN ((A.SCD = :4 AND CD.FEL_CONT IN (0,2) AND NVL(E.EXCEPTIE, 0) = 0) OR
(A.SCC = :5 AND CC.FEL_CONT IN (0,2) AND NVL(E.EXCEPTIE, 0) = 1))
THEN CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN -SUMA ELSE SUMA END
ELSE 0.00
END) AS DEBIT,
(CASE
WHEN ((A.SCC = :6 AND CC.FEL_CONT IN (1,2) AND NVL(E.EXCEPTIE, 0) = 0) OR
(A.SCD = :7 AND CD.FEL_CONT IN (1,2) AND NVL(E.EXCEPTIE, 0) = 1))
THEN CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN -SUMA ELSE SUMA END
ELSE 0.00
END) AS CREDIT,
(CASE
WHEN ((A.SCD = :8 AND CD.FEL_CONT IN (0,2) AND NVL(E.EXCEPTIE, 0) = 0) OR
(A.SCC = :9 AND CC.FEL_CONT IN (0,2) AND NVL(E.EXCEPTIE, 0) = 1 ))
THEN CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN -SUMA_VAL ELSE SUMA_VAL END
ELSE 0.00
END) AS VALDEBIT,
(CASE
WHEN ((A.SCC = :10 AND CC.FEL_CONT IN (1,2) AND NVL(E.EXCEPTIE, 0) = 0) OR
(A.SCD = :11 AND CD.FEL_CONT IN (1,2) AND NVL(E.EXCEPTIE, 0) = 1))
THEN CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN -SUMA_VAL ELSE SUMA_VAL END
ELSE 0.00
END) AS VALCREDIT,
(CASE
WHEN (A.SCD = :12 AND CD.FEL_CONT IN (0,2)) OR
(A.SCD = :13 AND CD.FEL_CONT IN (1,2) AND NVL(E.EXCEPTIE, 0) = 1)
THEN ID_PARTD
WHEN (A.SCC = :14 AND CC.FEL_CONT IN (1,2)) OR
(A.SCC = :15 AND CC.FEL_CONT IN (0,2) AND NVL(E.EXCEPTIE, 0) = 1)
THEN ID_PARTC
ELSE 0
END) ID_PART,
A.ID_FACT,
A.ID_FDOC,
A.ID_VALUTA,
A.ID_SUCURSALA,
A.ID_CTR,
A.ID_LUCRARE,
A.ID_RESPONSABIL,
A.ID_SET,
A.ID_VENCHELT,
NVL(T.ID_BAZA, A.ID_JTVA_COLOANA) AS ID_JTVA_COLOANA,
A.PROC_TVA,
A.CURS,
A.explicatia,
A.explicatia4,
A.explicatia5
FROM ' || lcAct || ' A
LEFT JOIN (SELECT DISTINCT 1 AS EXCEPTIE,
DECODE(DEBIT, 1, CONT_C, CONT) AS SCD,
DECODE(DEBIT, 1, CONT, CONT_C) AS SCC
FROM EXCEPTII_IREG
WHERE INVERS = 1
AND CONT = ''' || tcCont ||
''') E ON A.SCD = E.SCD
AND A.SCC = E.SCC
LEFT JOIN CONFIG_CONT_IREG CD ON A.SCD = CD.CONT
LEFT JOIN CONFIG_CONT_IREG CC ON A.SCC = CC.CONT
LEFT JOIN (select id_jtva_coloana,
connect_by_root id_jtva_coloana as id_baza
from jtva_coloane
where level > 1
start with id_tva is not null
connect by prior id_tva = id_jtva_coloana) T ON A.ID_JTVA_COLOANA = T.ID_JTVA_COLOANA
WHERE A.AN = :16
and A.LUNA = :17
and A.STERS = 0 ' ||
REPLACE(lcWhereSucursale, 'ALIAS.', 'A.') ||
REPLACE(lcUpdWherePartAct, 'ALIAS.', 'A.') || '
AND A.ID_SET NOT IN (77771,77772,77773,77774, 90501) ' || CASE
WHEN tcCont = '4111' THEN
' AND NOT (A.SCD = ''4111'' AND A.SCC = ''4427'' AND (NVL(PERECHED,0) <> 0 OR NVL(ID_FACTD,0)<>0))
AND NOT (A.SCD = ''419'' AND A.SCC = ''4111'' AND (NVL(ID_FACTD,0) <> 0 AND NVL(ID_FACTC,0)<>0))'
ELSE
''
END || ' AND ((A.SCD = :18 AND CD.FEL_CONT IN (0,2) AND NVL(A.ID_FACTD,0) = 0) OR
(A.SCC = :19 AND CC.FEL_CONT IN (0,2) AND NVL(E.EXCEPTIE, 0) = 1) OR
(A.SCC = :20 AND CC.FEL_CONT IN (1,2) AND NVL(A.ID_FACTC,0) = 0) OR
(A.SCD = :21 AND CD.FEL_CONT IN (1,2) AND NVL(E.EXCEPTIE, 0) = 1)))
group by an,
luna,
cont,
acont,
nract,
serie_act,
dataact,
dataireg,
id_part,
id_valuta, id_sucursala ' || lcGrupInPlus || ') S
ON (I.AN = :22 AND I.LUNA = :23 AND I.CONT = :24 AND NVL(I.ACONT, :25) = NVL(S.ACONT, :26) AND
NVL(I.NRACT,0) = NVL(S.NRACT,0) AND NVL(I.SERIE_ACT,''+_'')=NVL(S.SERIE_ACT,''+_'') AND NVL(I.DATAACT,:27) = NVL(S.DATAACT,:28) AND
NVL(I.DATAIREG,:29) = NVL(S.DATAIREG,:30) AND NVL(I.DATASCAD,:31) = NVL(S.DATASCAD,:32) AND
NVL(I.ID_PART,0) = NVL(S.ID_PART,0) AND NVL(I.ID_VALUTA,0) = NVL(S.ID_VALUTA,0) AND NVL(I.ID_SUCURSALA,0) = NVL(S.ID_SUCURSALA,0) ' ||
lcCondInPlus || ') WHEN MATCHED THEN
UPDATE
SET I.DEBIT = I.DEBIT + S.DEBIT,
I.CREDIT = I.CREDIT + S.CREDIT,
I.VALDEBIT = I.VALDEBIT + S.VALDEBIT,
I.VALCREDIT = I.VALCREDIT + S.VALCREDIT
DELETE WHERE ' || lnScrie || ' = ' || pack_contafin.nStergere ||
' and I.precdeb = 0
and I.preccred = 0
and I.precvaldeb = 0
and I.precvalcred = 0
and I.debit = 0
and I.credit = 0
and I.valdebit = 0
and I.valcredit = 0
WHEN NOT MATCHED THEN
INSERT
(AN, LUNA, CONT, ACONT, ID_PART, ID_VALUTA, ID_SUCURSALA,
id_fdoc, id_lucrare, id_set, id_ctr,
curs, dataact, dataireg, datascad, nract, serie_act,
id_responsabil, cod, explicatia, explicatia4, explicatia5,
DEBIT, CREDIT, VALDEBIT, VALCREDIT ' ||
lcInsertColInPlus || ')
VALUES
(:33, :34, S.CONT, S.ACONT, S.ID_PART, S.id_valuta, S.id_sucursala,
S.id_fdoc, S.id_lucrare, S.id_set, S.id_ctr,
S.curs, S.dataact, S.dataireg, S.datascad, S.nract, S.serie_act,
S.id_responsabil, S.cod, S.explicatia, S.explicatia4, S.explicatia5,
S.DEBIT, S.CREDIT, S.VALDEBIT, S.VALCREDIT ' ||
lcInsertValInPlus || ')';
-- pInfo(lcMerge, 'SCRIE_IREG INCASARI 1');
EXECUTE IMMEDIATE lcMerge
USING tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tnAn, tnLuna, tcCont, tcCont, tcCont, tcCont, tnAn, tnLuna, tcCont, tcAcontNull, tcAcontNull, ldDataNull, ldDataNull, ldDataNull, ldDataNull, ldDataNull, ldDataNull, tnAn, tnLuna;
-- IMPERECHERE INCASARI/PLATI (CONT ACTIV PE CREDIT SAU PASIV PE DEBIT SI NU SUNT EXCEPTII)
-- GRUPEZ DUPA NRACT, MIN(IREG_PARTENERI.DATACT) ETC.
-- MERGE IN IREG_PARTENERI
-- WHEN MATCHED : ACTUALIZEZ SUMELE
-- : STERG LINIA DACA OPERATIA ESTE STERGERE SI AM NUMAI ZERO-URI
-- WHEN NOT MATCHED : ADAUG LINIE IN IREG_PARTENERI
-- ID_SET = 90501 : REEVALUARE SOLDURI IN VALUTA LA 31.12.XXXX
-- A.ID_SET NOT IN (77771,77772,77773,77774) : NOTE REGULARIZARE DENOMINARE - AFECTEAZA DOAR BALANTA DE VERIFICARE
lcMerge := 'MERGE INTO IREG_PARTENERI I USING (' || CASE lnRefacereNumarAct
WHEN 1 THEN
'SELECT S1.an,
S1.luna,
S1.cont,
S1.acont,
S1.nract,
S1.id_part,
S1.id_valuta,
S1.id_sucursala,
S1.curs,' || CASE
WHEN lnCuProcTva = 1 THEN
'S1.PROC_TVA, S1.ID_JTVA_COLOANA,'
ELSE
''
END || CASE
WHEN lnCuVenchelt = 1 THEN
'S1.ID_VENCHELT,'
ELSE
''
END || 'S1.DEBIT,
S1.CREDIT,
S1.VALDEBIT,
S1.VALCREDIT,
S1.ID_FACT,
MIN(I1.DATAACT) AS DATAACT,
MAX(S1.ID_VENCHELT) AS ID_VENCHELT
FROM ('
ELSE
''
END || 'SELECT an,
luna,
cont,
acont,
nract,
id_part,
id_valuta,
id_sucursala,
MAX(curs) AS CURS,
SUM(debit) AS DEBIT,
SUM(credit) AS CREDIT,
SUM(valdebit) AS VALDEBIT,
SUM(valcredit) AS VALCREDIT ' || lcSelInPlus ||
' FROM (SELECT A.AN,
A.LUNA,
A.COD,
CASE
WHEN (A.SCC = :1 AND NVL(CC.FEL_CONT, 0) = 0) OR
(A.SCC = :2 AND NVL(CC.FEL_CONT, 0) IN (1,2) AND NVL(A.PERECHEC, 0) <> 0) THEN
A.PERECHEC
WHEN (A.SCD = :3 AND NVL(CD.FEL_CONT, 0) = 1) OR
(A.SCD = :4 AND NVL(CD.FEL_CONT, 0) IN (0,2) AND NVL(A.PERECHED, 0) <> 0) THEN
A.PERECHED
ELSE
0
END NRACT,
CASE
WHEN (A.SCC = :5 AND NVL(CC.FEL_CONT, 0) = 0) OR
(A.SCC = :6 AND NVL(CC.FEL_CONT, 0) IN (1,2) AND NVL(A.ID_FACTC, 0) <> 0) THEN
A.ID_FACTC
WHEN (A.SCD = :7 AND NVL(CD.FEL_CONT, 0) = 1) OR
(A.SCD = :8 AND NVL(CD.FEL_CONT, 0) IN (0,2) AND NVL(A.ID_FACTD, 0) <> 0) THEN
A.ID_FACTD
ELSE
0
END ID_FACT,
:9 AS CONT,
DECODE(A.SCD, :10, A.ASCD, A.ASCC) AS ACONT,
(CASE
WHEN (A.SCD = :11 AND ((CD.FEL_CONT IN(1,2) AND A.ID_SET <> 90501) OR
(CD.FEL_CONT = 0 AND A.ID_SET = 90501))) OR
(A.SCC = :12 AND ((CC.FEL_CONT = 0 AND A.ID_SET = 90501) OR
(CC.FEL_CONT = 1 AND A.ID_SET <> 90501 AND NVL(A.ID_FACTC, 0) <> 0))) THEN
(CASE
WHEN A.SCC = :13 AND ((CC.FEL_CONT = 0 AND A.ID_SET = 90501) OR
(CC.FEL_CONT = 1 AND A.ID_SET <> 90501 AND NVL(A.ID_FACTC, 0) <> 0)) THEN
-A.SUMA
ELSE
A.SUMA
END) ELSE 0.00 END) AS DEBIT,
(CASE
WHEN (A.SCC = :14 AND ((CC.FEL_CONT IN(0,2) AND A.ID_SET <> 90501) OR
(CC.FEL_CONT = 1 AND A.ID_SET = 90501))) OR
(A.SCD = :15 AND ((CD.FEL_CONT = 1 AND A.ID_SET = 90501) OR
(CD.FEL_CONT = 0 AND A.ID_SET <> 90501 AND NVL(A.ID_FACTD, 0) <> 0))) THEN
(CASE
WHEN A.SCD = :16 AND ((CD.FEL_CONT = 1 AND A.ID_SET = 90501) OR
(CD.FEL_CONT = 0 AND A.ID_SET <> 90501 AND NVL(A.ID_FACTD, 0) <> 0)) THEN
-A.SUMA
ELSE
A.SUMA
END) ELSE 0.00 END) AS CREDIT,
(CASE
WHEN (A.SCD = :17 AND ((NVL(CD.FEL_CONT,0) IN(1,2) AND A.ID_SET <> 90501) OR
(NVL(CD.FEL_CONT,0) = 0 AND A.ID_SET = 90501))) OR
(A.SCC = :18 AND ((NVL(CC.FEL_CONT,0) = 0 AND A.ID_SET = 90501) OR
(NVL(CC.FEL_CONT,0) = 1 AND A.ID_SET <> 90501 AND NVL(A.ID_FACTC, 0) <> 0)))
THEN
(CASE WHEN A.SCC = :19 AND ((NVL(CC.FEL_CONT,0) = 0 AND A.ID_SET = 90501) OR
(NVL(CC.FEL_CONT,0) = 1 AND A.ID_SET <> 90501 AND NVL(A.ID_FACTC, 0) <> 0))
THEN
-A.SUMA_VAL
ELSE
A.SUMA_VAL
END)
ELSE
0.00
END) AS VALDEBIT,
(CASE
WHEN (A.SCC = :20 AND ((NVL(CC.FEL_CONT,0) IN(0,2) AND A.ID_SET <> 90501) OR
(NVL(CC.FEL_CONT,0) = 1 AND A.ID_SET = 90501))) OR
(A.SCD = :21 AND ((NVL(CD.FEL_CONT,0) = 1 AND A.ID_SET = 90501) OR
(NVL(CD.FEL_CONT,0) = 0 AND A.ID_SET <> 90501 AND NVL(A.ID_FACTD, 0) <> 0)))
THEN
(CASE WHEN A.SCD = :22 AND ((NVL(CD.FEL_CONT,0) = 1 AND A.ID_SET = 90501) OR
(NVL(CD.FEL_CONT,0) = 0 AND A.ID_SET <> 90501 AND NVL(A.ID_FACTD, 0) <> 0))
THEN
-A.SUMA_VAL
ELSE
A.SUMA_VAL
END)
ELSE
0.00
END) AS VALCREDIT,
CASE
WHEN (A.SCC = :23 AND (CC.FEL_CONT IN(0,2) OR (CC.FEL_CONT = 1 AND A.ID_SET = 90501)))
THEN A.ID_PARTC
WHEN (A.SCD = :24 AND (CD.FEL_CONT IN(1,2) OR (CD.FEL_CONT = 0 AND (A.ID_SET = 90501 OR NVL(PERECHED,0)<>0 OR NVL(ID_FACTD,0)<>0))))
THEN A.ID_PARTD
ELSE 0
END ID_PART,
A.ID_VALUTA,
A.ID_SUCURSALA,
CASE WHEN A.ID_SET = 90501 THEN A.CURS ELSE 0 END AS CURS,
A.ID_VENCHELT,
A.ID_JTVA_COLOANA,
A.PROC_TVA
FROM ' || lcAct || ' A
LEFT JOIN (SELECT DISTINCT 1 AS EXCEPTIE,
DECODE(DEBIT, 1, CONT_C, CONT) AS SCD,
DECODE(DEBIT, 1, CONT, CONT_C) AS SCC
FROM EXCEPTII_IREG
WHERE INVERS = 1
AND CONT = ''' || tcCont ||
''') E ON A.SCD = E.SCD
AND A.SCC = E.SCC
LEFT JOIN CONFIG_CONT_IREG CD ON A.SCD = CD.CONT
LEFT JOIN CONFIG_CONT_IREG CC ON A.SCC = CC.CONT
WHERE A.AN = :25
and A.LUNA = :26
and A.STERS = 0 ' ||
REPLACE(lcWhereSucursale, 'ALIAS.', 'A.') ||
REPLACE(lcUpdWherePartAct, 'ALIAS.', 'A.') || '
AND A.ID_SET NOT IN (77771,77772,77773,77774)
AND ((A.SCC = :27 AND CC.FEL_CONT = 0 AND NVL(E.EXCEPTIE, 0) = 0) OR
(A.SCD = :28 AND CD.FEL_CONT = 1 AND NVL(E.EXCEPTIE, 0) = 0) OR
(A.SCC = :29 AND CC.FEL_CONT IN (1,2) AND NVL(E.EXCEPTIE, 0) = 0 AND NVL(A.ID_FACTC, 0) <> 0) OR
(A.SCD = :30 AND CD.FEL_CONT IN (0,2) AND NVL(E.EXCEPTIE, 0) = 0 AND NVL(A.ID_FACTD, 0) <> 0) OR
((A.SCD = :31 OR A.SCC = :32) AND A.ID_SET = 90501) ' ||
-- 4111 = 4427 (AVANS 419)
CASE
WHEN tcCont = '4111' THEN
' OR (A.SCD = ''4111'' AND A.SCC = ''4427'' AND (NVL(A.PERECHED,0) <> 0 OR NVL(A.ID_FACTD,0)<>0))
OR (A.SCD = ''419'' AND A.SCC = ''4111'' AND (NVL(A.ID_FACTD,0) <> 0 AND NVL(A.ID_FACTC,0)<>0))'
ELSE
''
END || '))
group by an,
luna,
cont,
acont,
nract,
id_part,
id_valuta,id_sucursala' || lcGrupInPlus || CASE lnRefacereNumarAct
WHEN 1 THEN
') S1
LEFT JOIN IREG_PARTENERI I1 ON I1.AN = ' || tnAn ||
' AND I1.LUNA = ' || tnLuna ||
-- AM FOST NEVOIT - SA NU STRIC CELELALTE VARIABILE LEGATE :(
' AND I1.CONT = ' || tcCont ||
' AND NVL(I1.ACONT, ''XXXX'') =
NVL(S1.ACONT, ''XXXX'')
AND I1.NRACT = S1.NRACT
AND I1.ID_PART = S1.ID_PART
AND I1.ID_VALUTA = S1.ID_VALUTA
AND NVL(I1.ID_SUCURSALA,0) = NVL(S1.ID_SUCURSALA,0) ' ||
REPLACE(lcUpdWherePart, 'ALIAS.', 'I1.') ||
' GROUP BY S1.an,
S1.luna,
S1.cont,
S1.acont,
S1.nract,
S1.id_part,
S1.id_valuta,
S1.id_sucursala,
S1.curs,' || CASE
WHEN lnCuProcTva = 1 THEN
'S1.PROC_TVA, S1.ID_JTVA_COLOANA,'
ELSE
''
END || CASE
WHEN lnCuVenchelt = 1 THEN
'S1.ID_VENCHELT,'
ELSE
''
END || 'S1.DEBIT,
S1.CREDIT,
S1.VALDEBIT,
S1.VALCREDIT,
S1.ID_FACT'
ELSE
''
END || ') S
ON (I.AN = :33 AND I.LUNA = :34 AND I.CONT = :35 AND NVL(I.ACONT, :36) = NVL(S.ACONT, :37) AND NVL(I.NRACT,0) = NVL(S.NRACT,0) AND ' ||
CASE lnRefacereNumarAct
WHEN 1 THEN
' NVL(I.DATAACT,TO_DATE(''19700101'', ''YYYYMMDD'')) = NVL(S.DATAACT,TO_DATE(''19700101'', ''YYYYMMDD'')) AND '
ELSE
''
END ||
' NVL(I.ID_PART,0) = NVL(S.ID_PART,0) AND NVL(I.ID_VALUTA,0) = NVL(S.ID_VALUTA,0) AND NVL(I.ID_SUCURSALA,0) = NVL(S.ID_SUCURSALA,0) ' ||
lcCondInPlus || ') WHEN MATCHED THEN
UPDATE
SET I.DEBIT = I.DEBIT + S.DEBIT,
I.CREDIT = I.CREDIT + S.CREDIT,
I.VALDEBIT = I.VALDEBIT + S.VALDEBIT,
I.VALCREDIT = I.VALCREDIT + S.VALCREDIT,
I.CURS = (CASE NVL(S.CURS,0) WHEN 0 THEN I.CURS ELSE S.CURS END)
DELETE WHERE ' || lnScrie || ' = ' || pack_contafin.nStergere ||
' and I.precdeb = 0
and I.preccred = 0
and I.precvaldeb = 0
and I.precvalcred = 0
and I.debit = 0
and I.credit = 0
and I.valdebit = 0
and I.valcredit = 0
WHEN NOT MATCHED THEN
INSERT
(AN, LUNA, CONT, ACONT, ID_PART, ID_VALUTA, ID_SUCURSALA,
nract, DEBIT, CREDIT, VALDEBIT, VALCREDIT ' ||
lcInsertColInPlus || ')
VALUES
(:38, :39, S.CONT, S.ACONT, S.ID_PART, S.ID_VALUTA, S.ID_SUCURSALA,
S.nract, S.DEBIT, S.CREDIT, S.VALDEBIT, S.VALCREDIT' ||
lcInsertValInPlus || ')';
-- pInfo(lcMerge, 'SCRIE_IREG INCASARI 2');
EXECUTE IMMEDIATE lcMerge
USING tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tnAn, tnLuna, tcCont, tcCont, tcCont, tcCont, tcCont, tcCont, tnAn, tnLuna, tcCont, tcAcontNull, tcAcontNull, tnAn, tnLuna;
<<EndProc>>
NULL;
END SCRIE_IN_IREG_PARTENERI;
---------------------------------------------------------------
PROCEDURE EXECUTA_SCRIE_IN_IREG(tcS VARCHAR2,
tnAn in number,
tnLuna in number,
tcCont in varchar2,
tnScrie number,
tnVenChelt number) IS
BEGIN
-- TNSCRIE: 0 = SCRIERE; 2 = STERGERE
-- SE APELEAZA DOAR PENTRU ACT_TEMP, FARA CONT PRECIZAT
FOR ITEM IN (SELECT SCD AS CONT
FROM ACT_TEMP
UNION
SELECT SCC AS CONT
FROM ACT_TEMP) LOOP
SCRIE_IN_IREG_PARTENERI(tnAn, tnLuna, ITEM.CONT, tnScrie, null);
END LOOP;
END EXECUTA_SCRIE_IN_IREG;
-------------------------------------------------------------------
PROCEDURE STERGE_TEMP_ACTRUL IS
BEGIN
DELETE FROM ACT_TEMP;
DELETE FROM RUL_TEMP;
DELETE FROM RUL_TEMP_OBINV;
END STERGE_TEMP_ACTRUL;
-------------------------------------------------------------------
Procedure INIT_SCRIERE_ACT_RUL_LOCAL(tnIdUtil SYN_UTILIZATORI.ID_UTIL%TYPE,
tnAn ACT.AN%TYPE,
tnLuna ACT.LUNA%TYPE,
tnSuprascriereCod NUMBER,
tnScrieSterge NUMBER,
tnIdSucursala ACT.ID_SUCURSALA%TYPE) is
-- se apeleaza inainte de completarea act_temp din Fox
-- tnScrie_Sterge: 0 = scriere, 1 = refacere, 2 = stergere
begin
pack_contafin.STERGE_TEMP_ACTRUL();
pack_contafin.INITIALIZEAZA_SCRIERE_ACT_RUL(tnIdUtil,
NULL,
tnAn,
tnLuna,
tnSuprascriereCod,
1,
tnScrieSterge,
tnIdSucursala);
end;
-------------------------------------------------------------------
PROCEDURE INITIALIZEAZA_SCRIERE_ACT_RUL(tnIdUtil ACT.ID_UTIL%TYPE,
tdDataOra ACT.DATAORA%TYPE,
tnAn ACT.AN%TYPE,
tnLuna ACT.LUNA%TYPE,
tnSuprascriereCod NUMBER,
tnSuprascriereAnLuna NUMBER,
tnScrieSterge NUMBER,
tnIdSucursala ACT.ID_SUCURSALA%TYPE) IS
-- tnScrie_Sterge: 0 = scriere, 1 = refacere, 2 = stergere
BEGIN
pack_contafin.reset_variables();
if tnSuprascriereCod = 0 then
pack_contafin.set_suprascriereCod(tnSuprascriereCod);
Else
if tnScrieSterge <> 2 then
pack_contafin.SET_COD(user);
end if;
end if;
pack_contafin.set_suprascriereAnLuna(tnSuprascriereAnLuna);
pack_contafin.set_idutil(tnIdUtil);
pack_contafin.set_dataora(NVL(tdDataOra, SYSDATE));
pack_sesiune.setan(tnAn);
pack_sesiune.setluna(tnLuna);
pack_contafin.set_id_sucursala(tnIdSucursala);
END INITIALIZEAZA_SCRIERE_ACT_RUL;
-------------------------------------------------------------------
-------------------------------------------------------------------
-- sterge un document direct din baza de date, complet
-------------------------------------------------------------------
procedure sterge_document(tnCod in number,
tnAn in number,
tnLuna in number,
tnIdUtil in number) is
begin
pack_sesiune.setan(tnAn);
pack_sesiune.setluna(tnLuna);
pack_sesiune.set_id_util(tnIdUtil);
pack_contafin.sterge_document(tnCod);
end sterge_document;
-------------------------------------------------------------------
-- sterge un document direct din baza de date, complet
-- trebuie configurat an, luna, id_util
-------------------------------------------------------------------
procedure sterge_document(V_cod in number) is
lnAn number(4) := 0;
lnLuna number(2) := 0;
lnAreReferinte number(1) := 0;
lnIdVanzare vanzari.id_vanzare%type;
lcMesajRefacere varchar2(3000);
lnIdUtil syn_utilizatori.id_util%type;
lnIdSet act.id_set%type;
lnIdFact act.id_fact%type;
lnIdFactD act.id_factd%type;
begin
lnAn := pack_sesiune.getan();
lnLuna := pack_sesiune.getluna();
lnIdUtil := pack_sesiune.get_id_util();
lnAreReferinte := pack_documente.ReferinteDocumenteNota(lnAn,
lnLuna,
V_cod);
if lnAreReferinte = 1 THEN
RAISE_APPLICATION_ERROR(-20000,
'Documentul are referinte (incasari/plati). Nu poate fi sters.');
goto sfarsit_procedura;
end if;
insert into act_temp
(luna,
an,
cod,
dataireg,
nract,
dataact,
explicatia,
scd,
ascd,
scc,
ascc,
suma,
pereched,
perechec,
suma_val,
curs,
datascad,
neimpozab,
nnir,
id_util,
dataora,
id_utils,
dataoras,
id_responsabil,
id_venchelt,
id_sectie,
id_set,
id_fact,
id_partd,
id_partc,
id_sucursala,
id_fdoc,
explicatia4,
explicatia5,
id_lucrare,
id_gestin,
id_gestout,
id_valuta,
proc_tva,
id_act,
sters,
id_factd,
id_factc,
id_ctr,
id_jtva_coloana,
serie_act,
validat,
id_utilv,
dataorav)
select luna,
an,
cod,
dataireg,
nract,
dataact,
explicatia,
scd,
ascd,
scc,
ascc,
suma,
pereched,
perechec,
suma_val,
curs,
datascad,
neimpozab,
nnir,
id_util,
dataora,
id_utils,
dataoras,
id_responsabil,
id_venchelt,
id_sectie,
id_set,
id_fact,
id_partd,
id_partc,
id_sucursala,
id_fdoc,
explicatia4,
explicatia5,
id_lucrare,
id_gestin,
id_gestout,
id_valuta,
proc_tva,
id_act,
sters,
id_factd,
id_factc,
id_ctr,
id_jtva_coloana,
serie_act,
validat,
id_utilv,
dataorav
from act
where an = lnAn
and luna = lnLuna
and cod = V_cod
order by id_act;
insert into rul_temp
(id_rul,
an,
luna,
cod,
nnir,
id_articol,
id_gestiune,
pret,
pretv,
tva,
tvav,
cant,
cante,
cont,
adaos,
id_lucrare,
id_responsabil,
dataact,
procent,
curs,
pretd,
id_util,
dataora,
id_sectie,
alcooltutun,
pretvtva,
acont,
datain,
dataout,
proc_disc,
discunitar,
proc_tva,
id_fact,
sters,
discount_tva,
adaos_tva,
proc_tvav,
valoare,
valoarev,
valtva,
valtvav,
valoare_adaos,
valtva_adaos,
valoare_discount,
valtva_discount,
id_gestiunec,
id_responsabilc,
id_tip_rulaj,
id_reteta,
id_set,
id_sucursala,
id_obiect_depozit,
id_rul_aux,
nract,
id_utils,
dataoras,
serie,
id_valuta,
serie_act,
lot,
adata_expirare,
id_part_rez,
id_lucrare_rez)
select id_rul,
an,
luna,
cod,
nnir,
id_articol,
id_gestiune,
pret,
pretv,
tva,
tvav,
cant,
cante,
cont,
adaos,
id_lucrare,
id_responsabil,
dataact,
procent,
curs,
pretd,
id_util,
dataora,
id_sectie,
alcooltutun,
pretvtva,
acont,
datain,
dataout,
proc_disc,
discunitar,
proc_tva,
id_fact,
sters,
discount_tva,
adaos_tva,
proc_tvav,
valoare,
valoarev,
valtva,
valtvav,
valoare_adaos,
valtva_adaos,
valoare_discount,
valtva_discount,
id_gestiunec,
id_responsabilc,
id_tip_rulaj,
id_reteta,
id_set,
id_sucursala,
id_obiect_depozit,
id_rul_aux,
nract,
id_utils,
dataoras,
serie,
id_valuta,
serie_act,
lot,
adata_expirare,
id_part_rez,
id_lucrare_rez
from rul
where an = lnAn
and luna = lnLuna
and cod = V_cod
order by id_rul;
insert into rul_temp_obinv
(id_rul_obinv,
an,
luna,
cod,
nnir,
id_articol,
id_gestiune,
pret,
pretv,
tva,
tvav,
cant,
cante,
cont,
adaos,
id_lucrare,
id_responsabil,
dataact,
procent,
curs,
pretd,
id_util,
dataora,
id_sectie,
alcooltutun,
pretvtva,
acont,
datain,
dataout,
proc_disc,
discunitar,
proc_tva,
id_fact,
sters,
discount_tva,
adaos_tva,
proc_tvav,
datapif,
dns_luni,
dns_ramas,
valoare,
valoarev,
valtva,
valtvav,
valoare_adaos,
valtva_adaos,
valoare_discount,
valtva_discount,
id_gestiunec,
id_responsabilc,
id_tip_rulaj,
id_set,
pret_imputare,
nract,
id_utils,
dataoras,
id_rul_aux,
serie,
id_valuta,
serie_act,
id_sucursala)
select id_rul_obinv,
an,
luna,
cod,
nnir,
id_articol,
id_gestiune,
pret,
pretv,
tva,
tvav,
cant,
cante,
cont,
adaos,
id_lucrare,
id_responsabil,
dataact,
procent,
curs,
pretd,
id_util,
dataora,
id_sectie,
alcooltutun,
pretvtva,
acont,
datain,
dataout,
proc_disc,
discunitar,
proc_tva,
id_fact,
sters,
discount_tva,
adaos_tva,
proc_tvav,
datapif,
dns_luni,
dns_ramas,
valoare,
valoarev,
valtva,
valtvav,
valoare_adaos,
valtva_adaos,
valoare_discount,
valtva_discount,
id_gestiunec,
id_responsabilc,
id_tip_rulaj,
id_set,
pret_imputare,
nract,
id_utils,
dataoras,
id_rul_aux,
serie,
id_valuta,
serie_act,
id_sucursala
from rul_obinv
where an = lnAn
and luna = lnLuna
and cod = v_cod
order by id_rul_obinv;
pack_contafin.finalizeaza_scriere_act_rul(lnIdUtil,
v_cod,
2,
0,
0,
lcMesajRefacere);
begin
select max(id_set), max(id_fact), max(id_factd)
into lnIdSet, lnIdFact, lnIdFactD
from act_temp;
pack_contafin.finalizeaza_stergere_nota(lnLuna,
lnAn,
sysdate,
lnIdSet,
v_cod,
lnIdFact,
lnIdFactD,
lnIdUtil);
exception
WHEN NO_DATA_FOUND THEN
NULL;
END;
<<sfarsit_procedura>>
null;
end sterge_document;
--------------------------------------------------------------------------
-- initializeaza_act_rul + finalizeaza_document + cursor_verificare)
--------------------------------------------------------------------------
procedure finalizeaza_document_verif(tnAn IN NUMBER,
tnLuna IN NUMBER,
tnScrieSterge IN number,
tnDateCompletate IN number,
tnScadereStoc IN number,
tnCod IN ACT.COD%type,
tnIdUtil IN ACT.ID_UTIL%TYPE,
tdDataOra IN ACT.DATAORA%TYPE,
tnIdSucursala IN ACT.ID_SUCURSALA%TYPE,
tcSirModificariAcont IN VARCHAR2,
tcSirModificariPart IN VARCHAR2,
CURSOR_VERIFICARE OUT PACK_TYPES.tip_cursor) is
lcMesajRefacere VARCHAR2(3000);
begin
-- tnDateCompletate = 0 / 1 - cod / 2 - cod + an + luna
-- tnScrieSterge = 0 scriere/ 1- refacere / 2-stergere
-- completare analitice si parteneri din configurari
pack_contafin.completeaza_analitice;
pack_contafin.completeaza_analitice_rul;
pack_contafin.completeaza_parteneri_gestiuni;
pack_contafin.sterge_analitice_gresite;
pack_contafin.sterge_analitice_gresite_rul;
-- completare analitice si parteneri din verificare note contabile
if tcSirModificariAcont is not null or tcSirModificariPart is not null then
pack_contafin.finalizeaza_document_compl(tcSirModificariAcont,
tcSirModificariPart);
end if;
-- verificare note contabile la scriere
if tnScrieSterge = 0 and pack_contafin.verifica_note_contabile(1) > 0 then
pack_contafin.cursor_verificare(CURSOR_VERIFICARE);
else
pack_contafin.initializeaza_scriere_act_rul(tnIdUtil,
tdDataOra,
tnAn,
tnLuna,
1,
1,
tnScrieSterge,
tnIdSucursala);
pack_contafin.finalizeaza_scriere_act_rul(tnIdUtil,
tnCod,
tnScrieSterge,
0,
0,
lcMesajRefacere);
OPEN CURSOR_VERIFICARE FOR
SELECT * FROM ACT_TEMP WHERE 1 = 2;
end if;
end finalizeaza_document_verif;
-----------------------------------------------------------------------
-- completeaza act_temp cu analitice, parteneri din formularul de verificare
-- se apeleaza din finalizeaza_document_verif
-----------------------------------------------------------------------
procedure finalizeaza_document_compl(V_SIR_MODIFICARI_ACONT IN VARCHAR2,
V_SIR_MODIFICARI_PART IN VARCHAR2) is
V_SEPARATOR_LINIE VARCHAR2(5) := ';';
V_SEPARATOR VARCHAR2(5) := '|';
BEGIN
-- de mutat in pack_contafin
IF V_SIR_MODIFICARI_ACONT IS NOT NULL THEN
MERGE INTO ACT_TEMP A
USING (select to_number(substr(lista || V_SEPARATOR,
1,
instr(lista, V_SEPARATOR) - 1)) as id_act,
substr(lista || V_SEPARATOR || V_SEPARATOR,
instr(lista || V_SEPARATOR || V_SEPARATOR,
V_SEPARATOR) + 1,
instr(lista || V_SEPARATOR || V_SEPARATOR,
V_SEPARATOR,
1,
2) -
instr(lista || V_SEPARATOR || V_SEPARATOR,
V_SEPARATOR) - 1) as ascd,
rtrim(substr(lista || V_SEPARATOR || V_SEPARATOR,
instr(lista || V_SEPARATOR || V_SEPARATOR,
V_SEPARATOR,
1,
2) + 1),
V_SEPARATOR) as ascc
from (SELECT X as LISTA
FROM table(charc2collection(V_SIR_MODIFICARI_ACONT,
V_SEPARATOR_LINIE))
)) B
ON (A.ID_ACT = B.ID_ACT)
WHEN MATCHED THEN
UPDATE SET ASCD = B.ASCD, ASCC = B.ASCC;
END IF;
IF V_SIR_MODIFICARI_PART IS NOT NULL THEN
MERGE INTO ACT_TEMP A
USING (select to_number(substr(lista || V_SEPARATOR,
1,
instr(lista, V_SEPARATOR) - 1)) as id_act,
nvl(to_number(substr(lista || V_SEPARATOR || V_SEPARATOR,
instr(lista || V_SEPARATOR ||
V_SEPARATOR,
V_SEPARATOR) + 1,
instr(lista || V_SEPARATOR ||
V_SEPARATOR,
V_SEPARATOR,
1,
2) -
instr(lista || V_SEPARATOR ||
V_SEPARATOR,
V_SEPARATOR) - 1)),
0) as id_partd,
nvl(to_number(rtrim(substr(lista || V_SEPARATOR ||
V_SEPARATOR,
instr(lista || V_SEPARATOR ||
V_SEPARATOR,
V_SEPARATOR,
1,
2) + 1),
V_SEPARATOR)),
0) as id_partc
from (SELECT X as LISTA
FROM table(charc2collection(V_SIR_MODIFICARI_PART,
V_SEPARATOR_LINIE)))) B
ON (A.ID_ACT = B.ID_ACT)
WHEN MATCHED THEN
UPDATE SET ID_PARTD = B.ID_PARTD, ID_PARTC = B.ID_PARTC;
END IF;
end finalizeaza_document_compl;
PROCEDURE cursor_verificare(V_CURSOR_VERIFICARE OUT PACK_TYPES.tip_cursor) IS
BEGIN
OPEN V_CURSOR_VERIFICARE FOR
SELECT A.ID_ACT,
A.LUNA,
A.AN,
A.DATAIREG as datairegt,
A.NRACT,
A.SERIE_ACT,
A.DATAACT as dataactt,
A.suma,
A.EXPLICATIA,
A.SCD,
A.ASCD,
A.ASCD as ascd1,
A.SCC,
A.ASCC,
A.ASCC as ascc1,
A.PERECHED,
A.PERECHEC,
A.SUMA_VAL,
A.EXPLICATIA4,
A.EXPLICATIA5,
A.CURS,
A.DATASCAD as datascadt,
A.NEIMPOZAB,
A.NNIR,
A.ID_UTIL,
UTIL2.UTILIZATOR AS UTIL,
A.DATAORA,
A.ID_UTILS,
UTIL1.UTILIZATOR AS UTILS,
A.DATAORAS,
A.ID_RESPONSABIL,
RESP.DENUMIRE AS NRESP,
A.ID_VENCHELT,
VENCHELT.EXPLICATIE AS DST_CHLT,
A.ID_LUCRARE,
LUCR.NRORD,
A.ID_CTR,
CTR.CONTRACT,
A.ID_SECTIE,
SECTII.SECTIE,
A.PROC_TVA,
A.ID_SET,
A.ID_FACT,
A.ID_FACTD,
A.ID_FACTC,
A.ID_PARTD,
A.ID_PARTD AS ID_PARTD1,
PART1.NUME AS PARTD,
A.ID_PARTC,
A.ID_PARTC AS ID_PARTC1,
PART.NUME AS PARTC,
A.ID_SUCURSALA,
S.FIRMA AS SUCURSALA,
A.ID_FDOC,
FDOC.FEL_DOCUMENT AS FDOC,
A.ID_GESTIN,
A.ID_JTVA_COLOANA,
G1.NUME_GESTIUNE AS GESTIN,
A.ID_GESTOUT,
G2.NUME_GESTIUNE AS GESTOUT,
A.ID_VALUTA,
V.NUME_VAL,
0000000000 as id_pol,
lpad(' ', 30, ' ') as nume_lista_preturi,
A.TVA_INCASARE
FROM ACT_TEMP A
LEFT JOIN NOM_FDOC FDOC
ON A.ID_FDOC = FDOC.ID_FDOC
LEFT JOIN SYN_NOM_FIRME S
ON A.ID_SUCURSALA = S.ID_FIRMA
LEFT JOIN NOM_PARTENERI PART
ON A.ID_PARTC = PART.ID_PART
LEFT JOIN NOM_PARTENERI PART1
ON A.ID_PARTD = PART1.ID_PART
LEFT JOIN VNOM_VENCHEL VENCHELT
ON A.ID_VENCHELT = VENCHELT.ID_VENCHELT
LEFT JOIN NOM_PARTENERI RESP
ON A.ID_RESPONSABIL = RESP.ID_PART
LEFT JOIN SYN_UTILIZATORI UTIL1
ON A.ID_UTILS = UTIL1.ID_UTIL
LEFT JOIN SYN_UTILIZATORI UTIL2
ON A.ID_UTIL = UTIL2.ID_UTIL
LEFT JOIN VNOM_LUCRARI LUCR
ON A.ID_LUCRARE = LUCR.ID_LUCRARE
LEFT JOIN VCONTRACTE CTR
ON A.ID_CTR = CTR.ID_CTR
LEFT JOIN NOM_GESTIUNI G1
ON A.ID_GESTIN = G1.ID_GESTIUNE
LEFT JOIN NOM_GESTIUNI G2
ON A.ID_GESTOUT = G2.ID_GESTIUNE
LEFT JOIN NOM_VALUTE V
ON A.ID_VALUTA = V.ID_VALUTA
LEFT JOIN NOM_SECTII SECTII
ON A.ID_SECTIE = SECTII.ID_SECTIE
WHERE A.STERS = 0;
END cursor_verificare;
------------------------------------------------------------
Procedure final_scriere_act_rul_local(tnIdUtil SYN_UTILIZATORI.ID_UTIL%TYPE,
tnAn ACT.AN%TYPE,
tnLuna ACT.LUNA%TYPE,
tnCod ACT.COD%TYPE,
tnScrieSterge NUMBER,
tnModificareNota NUMBER,
tcMesajRefacereNota OUT VARCHAR2) is
-- se apeleaza dupa pack_contafin.init_scriere_act_rul_local si dupa completarea act_temp din Fox
begin
pack_contafin.finalizeaza_scriere_act_rul(tnIdUtil,
tnCod,
tnScrieSterge,
tnModificareNota,
0, -- tnScrieCumpVanz
tcMesajRefacereNota);
end final_scriere_act_rul_local;
------------------------------------------------------------
procedure finalizeaza_scriere_act_rul is
lcMesajRefacereNota VARCHAR2(3000);
begin
pack_contafin.finalizeaza_scriere_act_rul(pack_contafin.GET_IDUTIL(),
null,
0,
0,
2,
lcMesajRefacereNota);
end finalizeaza_scriere_act_rul;
------------------------------------------------------------
procedure finalizeaza_scriere_act_rul(tnIdUtil SYN_UTILIZATORI.ID_UTIL%TYPE,
tnCod ACT.COD%TYPE,
tnScrieSterge NUMBER, -- 0 = scriere, 1 = refacere, 2 = stergere
tnModificareNota NUMBER, -- 0 = modificare, 1 = stergere
tnScrieCumpVanz NUMBER, -- 0 = cump + vanz, 1 = cumparari, 2 = vanzari
tcMesajRefacereNota OUT VARCHAR2) is
-- se apeleaza dupa pack_contafin.init_scriere_act_rul_local si dupa completarea act_temp din Fox
lcCorespDTva varchar2(100);
lcCorespD varchar2(100);
lcCorespCTva varchar2(100);
lcCorespC varchar2(100);
lcExceptii varchar2(2000);
lnNrInregRul number(10);
lnNrInregRulObinv number(10);
lnAn ACT.AN%type;
lnLuna ACT.LUNA%type;
lcSetNuScrie optiuni.varvalue%type;
lnIdSet act.id_set%type;
lcSituatiiNuScrie optiuni.varvalue%type;
lnScrieBV number(1) := 1;
lnScrieBP number(1) := 1;
lnScrieIP number(1) := 1;
lnScrieTVA number(1) := 1;
lnScrieSTOC number(1) := 1;
begin
lnAn := pack_sesiune.getan();
lnLuna := pack_sesiune.getluna();
-- LISTA DE SETURI PENTRU CARE NU SE APELEAZA SCRIEREA balanta, balanta parteneri, inregistrari parteneri, tva, stoc
-- Bonurile fiscale de la chioscuri
-- Se refac situatiile doar prin refaceri/redeschidere de luna
lcSetNuScrie := PACK_SESIUNE.getOptiuneFirma('SETURI_SITUATII_NU_SCRIE'); -- '25052|BV,BP,IP,TVA;'
select max(id_set) into lnIdSet from act_temp;
IF lcSetNuScrie IS NOT NULL and lnIdSet is not null THEN
SELECT MAX(UPPER(SITUATII))
into lcSituatiiNuScrie
FROM (SELECT GETWORDNUM(SET_SITUATII, 1, '|') AS ID_SET,
GETWORDNUM(SET_SITUATII, 2, '|') AS SITUATII
FROM (SELECT getwordnum(lcSetNuScrie, B.RAND, ';') AS SET_SITUATII
FROM DUAL A,
(SELECT ROWNUM AS RAND
FROM USER_OBJECTS
WHERE ROWNUM < 100) B)
WHERE SET_SITUATII IS NOT NULL)
WHERE ID_SET = to_char(lnIdSet);
if lcSituatiiNuScrie LIKE '%BV%' then
lnScrieBV := 0;
end if;
if lcSituatiiNuScrie LIKE '%BP%' then
lnScrieBP := 0;
end if;
if lcSituatiiNuScrie LIKE '%IP%' then
lnScrieIP := 0;
end if;
if lcSituatiiNuScrie LIKE '%TVA%' then
lnScrieTVA := 0;
end if;
if lcSituatiiNuScrie LIKE '%STOC%' then
lnScrieSTOC := 0;
end if;
END IF;
if tnScrieSterge <> 2 then
pack_contafin.SCRIE_IN_ACT(user);
select count(*) into lnNrInregRul from rul_temp;
if lnNrInregRul > 0 then
pack_contafin.SCRIE_IN_RUL(user);
end if;
select count(*) into lnNrInregRulObinv from rul_temp_obinv;
if lnNrInregRulObinv > 0 then
pack_contafin.SCRIE_IN_RUL_OBINV(user);
end if;
else
pack_contafin.STERGE_DIN_ACT(user,
lnAn,
lnLuna,
tnCod,
tnIdUtil,
tnModificareNota);
select count(*) into lnNrInregRul from rul where cod = tnCod;
if lnNrInregRul > 0 then
pack_contafin.STERGE_DIN_RUL(user, lnAn, lnLuna, tnCod, tnIdUtil);
end if;
select count(*)
into lnNrInregRulObinv
from rul_obinv
where cod = tnCod;
if lnNrInregRulObinv > 0 then
pack_contafin.STERGE_DIN_RUL_OBINV(user,
lnAn,
lnLuna,
tnCod,
tnIdUtil);
end if;
end if;
if lnScrieBV = 1 then
pack_contafin.scrie_in_balanta(user, lnAn, lnLuna, tnScrieSterge);
end if;
if lnScrieBP = 1 then
pack_contafin.scrie_in_balanta_parteneri(user,
lnAn,
lnLuna,
NULL,
tnScrieSterge);
end if;
if lnScrieIP = 1 then
pack_contafin.executa_scrie_in_ireg(user,
lnAn,
lnLuna,
Null,
tnScrieSterge,
0);
end if;
if tnScrieCumpVanz <> 2 and lnScrieTVA = 1 then
If lnAn >= 2007 then
pack_contafin.SCRIE_JC_2007(lnAn, lnLuna, tnScrieSterge);
-- tnScrieSterge ar trebui sa aiba valoarea 0 sau 2
Else
lcCorespDTva := '401,404,5121,5124,542,4427,4428';
lcCorespD := '401,404,5121,5124,542,4427';
lcCorespCTva := '0';
lcCorespC := '0';
select stringagg(cont_c)
INTO lcExceptii
from (select distinct cont_c
from exceptii_ireg
where cont in
(SELECT X as CONT
FROM table(charc2collection(lcCorespD, ',')))
and invers = 1
union all
select '-1'
from dual);
pack_contafin.EXECUTA_SCRIE_TVA(user,
'cump',
pack_contafin.getCotaTVAStandard(lnLuna,
lnAn),
CASE WHEN
lnAn * 12 + lnLuna >= 2025 * 12 + 8 THEN 1.11 ELSE 1.09 END,
lcCorespDtva,
lcCorespD,
lcCorespCtva,
lcCorespC,
'4426',
lcExceptii,
lnAn,
lnLuna,
tnScrieSterge);
End if;
end if;
if tnScrieCumpVanz <> 1 and lnScrieTVA = 1 then
If lnAn >= 2007 then
pack_contafin.SCRIE_JV_2007(lnAn, lnLuna, tnScrieSterge);
-- tnScrieSterge ar trebui sa aiba valoarea 0 sau 2
Else
lcCorespDTva := '411,4111,4112,4113,4114,4115,4116,4117,4428,4118';
lcCorespD := '411,4111,4112,4113,4114,4115,4116,4117,4428,4118';
lcCorespCTva := '411,4111,4112,4113,4114,4115,4116,4117,461,428,4281,4282,4426,4428';
lcCorespC := '411,4111,4112,4113,4114,4115,4116,4117,461,428,4281,4282,4426,5121,5311';
select stringagg(cont_c)
INTO lcExceptii
from (select distinct cont_c
from exceptii_ireg
where cont in
(SELECT X as CONT
FROM table(charc2collection(lcCorespC, ',')))
and invers = 1
union all
select '419' as cont_c
from dual);
pack_contafin.EXECUTA_SCRIE_TVA(user,
'vanz',
pack_contafin.getCotaTVAStandard(lnLuna,
lnAn),
CASE WHEN
lnAn * 12 + lnLuna >= 2025 * 12 + 8 THEN 1.11 ELSE 1.09 END,
lcCorespDtva,
lcCorespD,
lcCorespCtva,
lcCorespC,
'4427',
lcExceptii,
lnAn,
lnLuna,
tnScrieSterge);
End if;
End if;
if lnNrInregRul > 0 and lnScrieSTOC = 1 then
pack_contafin.scrie_in_stoc(user,
lnAn,
lnLuna,
0,
'STOC',
'ID_STOC',
'2=2');
end if;
if lnNrInregRulObinv > 0 and lnScrieSTOC = 1 then
pack_contafin.scrie_in_stoc_obinv(user,
lnAn,
lnLuna,
0,
'STOC_OBINV',
'ID_STOC',
'2=2');
end if;
pack_refacere_nota.refacere_nota(lnAn, lnLuna, tcMesajRefacereNota);
end finalizeaza_scriere_act_rul;
-----------------------------------------------
PROCEDURE finalizeaza_modificare_nota(tnLuna IN NUMBER,
tnAn IN NUMBER,
tdDataOra IN DATE,
tnIdSet IN NUMBER,
tnCod IN NUMBER,
tnIdFact IN NUMBER,
tnIdFactD IN NUMBER,
tnIdUtil IN NUMBER) IS
lnEInVanzari NUMBER(10);
lnCodNou NUMBER(10);
BEGIN
lnCodNou := pack_contafin.get_cod();
SELECT COUNT(*) INTO lnEInVanzari FROM vanzari WHERE cod = tnCod;
IF lnEInVanzari > 0 THEN
pack_facturare.actualizeaza_vanzari(tnCod, lnCodNou);
END IF;
UPDATE atasamente_vanzari SET cod = lnCodNou WHERE cod = tnCod;
CASE
WHEN tnIdSet = 90101 THEN
UPDATE gest_inventar
SET dataora_validat = pack_contafin.GET_DATAORA(),
validat = decode(validat, 0, 1, validat) -- pentru cazul in care se repuneau inregistrarile sterse
WHERE dataora_validat = tdDataOra
AND an = tnAn
AND luna = tnLuna;
WHEN tnIdSet IN (31003, 31004, 31005, 31011) THEN
-- daca se modifica o inregistrare stearsa, atunci trebuie sa repun si id_fact in nom_lucrari
UPDATE NOM_LUCRARI
SET ID_FACT = tnIdFact
WHERE ID_LUCRARE IN (SELECT DISTINCT ID_LUCRARE
FROM ACT
WHERE COD = lnCodNou
AND AN = tnAn
AND LUNA = tnLuna)
AND ID_FACT IS NULL;
/* WHEN tnIdSet = 90011 THEN
-- 426-5311 achitare drepturi neridicate lichidare
UPDATE sal_stat
SET achitlicnerid = 0
WHERE id_fact_lic = tnIdFactD;
WHEN tnIdSet = 90013 THEN
-- 426-5311 achitare drepturi neridicate avans
UPDATE sal_stat SET achitavnerid = 0 WHERE id_fact_av = tnIdFactD;*/
ELSE
lnEInVanzari := 0;
END CASE;
END finalizeaza_modificare_nota;
-----------------------------------------------
PROCEDURE finalizeaza_stergere_nota(tnLuna IN NUMBER,
tnAn IN NUMBER,
tdDataOra IN DATE,
tnIdSet IN NUMBER,
tnCod IN NUMBER,
tnIdFact IN NUMBER,
tnIdFactD IN NUMBER,
tnIdUtil IN NUMBER) IS
lnEInVanzari NUMBER(10);
BEGIN
SELECT COUNT(*) INTO lnEInVanzari FROM vanzari WHERE cod = tnCod;
IF lnEInVanzari > 0 THEN
pack_facturare.sterge_din_vanzari(tnCod, tnAn, tnLuna, tnIdUtil);
END IF;
UPDATE atasamente_vanzari
SET sters = 1, id_utils = tnIdUtil, dataoras = sysdate
WHERE cod = tnCod;
CASE
WHEN tnIdSet = 90101 THEN
UPDATE gest_inventar
SET validat = 0
WHERE dataora_validat = tdDataOra
AND an = tnAn
AND luna = tnLuna;
WHEN tnIdSet = 90010 THEN
-- 421-426 drepturi neridicate lichidare
UPDATE sal_stat
SET bifalicnerid = 0, sumalicnerid = 0, id_fact_lic = 0
WHERE id_fact_lic = tnIdFact;
WHEN tnIdSet = 90011 THEN
-- 426-5311 achitare drepturi neridicate lichidare
UPDATE sal_stat
SET achitlicnerid = 0
WHERE id_fact_lic = tnIdFactD;
WHEN tnIdSet = 90012 THEN
-- 425-426 drepturi neridicate avans
UPDATE sal_stat
SET bifaavnerid = 0, sumaavnerid = 0, id_fact_av = 0
WHERE id_fact_av = tnIdFact;
WHEN tnIdSet = 90013 THEN
-- 426-5311 achitare drepturi neridicate avans
UPDATE sal_stat SET achitavnerid = 0 WHERE id_fact_av = tnIdFactD;
WHEN tnIdSet IN (31003, 31004, 31005, 31011) THEN
UPDATE nom_lucrari SET id_fact = Null WHERE id_fact = tnIdFact;
WHEN tnIdSet IN (32000, 32003, 32011, 32013) THEN
-- ROADEVIZE : raport de productie, inchidere comenzi regie/garantie, factura finala 1, factura finala 2
UPDATE dev_oper
SET sters = 1, id_utils = tnIdUtil, dataoras = sysdate
WHERE id_fact = tnIdFact;
ELSE
lnEInVanzari := 0;
END CASE;
END finalizeaza_stergere_nota;
-----------------------------------------------
PROCEDURE completeaza_analitice IS
cursor crs is
select a.cont,
a.tabel_prefix,
a.col_prefix,
a.tabel_sufix,
a.col_sufix,
a.camp_leg_prefix,
a.camp_leg_sufix,
a.poz_start_prefix,
a.nr_return_prefix,
a.poz_start_sufix,
a.nr_return_sufix,
b.tip
from config_analitice a
join (select distinct scd as cont, 1 as tip
from act_temp
where ascd is null
union
select distinct scc as cont, 2 as tip
from act_temp
where ascc is null) b
on a.cont = b.cont;
crs_linie crs%rowtype;
lcMerge VARCHAR2(10000);
lcAnalitic VARCHAR2(1000);
lcColoanaP VARCHAR2(100);
lcColoanaS VARCHAR2(100);
lcTipCont VARCHAR(4);
lcTipAcont VARCHAR(4);
lcNumeColoanaP VARCHAR2(1000);
lcNumeColoanaS VARCHAR2(1000);
BEGIN
open crs;
loop
fetch crs
into crs_linie;
exit when crs%NOTFOUND;
if crs_linie.tip = 1 then
lcTipCont := 'SCD';
lcTipAcont := 'ASCD';
else
lcTipCont := 'SCC';
lcTipAcont := 'ASCC';
end if;
lcAnalitic := '';
lcColoanaP := '';
lcColoanaS := '';
if crs_linie.tabel_prefix is not null then
lcColoanaP := 'A.' || crs_linie.camp_leg_prefix;
lcNumeColoanaP := crs_linie.camp_leg_prefix;
if UPPER(TRIM(crs_linie.camp_leg_prefix)) = 'ID_GESTIUNE' then
if crs_linie.tip = 1 then
lcNumeColoanaP := 'ID_GESTIN';
else
lcNumeColoanaP := 'ID_GESTOUT';
end if;
lcColoanaP := lcColoanaP || ' AS ' || lcNumeColoanaP;
end if;
lcAnalitic := 'substr(a.' || crs_linie.col_prefix || ',' ||
crs_linie.poz_start_prefix || ',' ||
crs_linie.nr_return_prefix || ')';
end if;
if crs_linie.tabel_sufix is not null then
lcColoanaS := 'B.' || crs_linie.camp_leg_sufix;
lcNumeColoanaS := crs_linie.camp_leg_sufix;
if UPPER(TRIM(crs_linie.camp_leg_sufix)) = 'ID_GESTIUNE' then
if crs_linie.tip = 1 then
lcNumeColoanaS := 'ID_GESTIN';
else
lcNumeColoanaS := 'ID_GESTOUT';
end if;
lcColoanaS := lcColoanaS || ' AS ' || lcNumeColoanaS;
end if;
lcAnalitic := lcAnalitic || '||substr(b.' || crs_linie.col_sufix || ',' ||
crs_linie.poz_start_sufix || ',' ||
crs_linie.nr_return_sufix || ')';
end if;
lcMerge := 'MERGE INTO ACT_TEMP A1 USING (SELECT ''' || crs_linie.cont ||
''' AS ' || lcTipCont || ',' || lcAnalitic || ' AS ' ||
lcTipAcont || ',' || lcColoanaP || (CASE
WHEN lcColoanaS IS NULL THEN
''
ELSE
',' || lcColoanaS
END) || ' FROM ' || crs_linie.tabel_prefix || ' A ' || (CASE
WHEN lcColoanaS IS NULL THEN
''
ELSE
'LEFT JOIN ' || crs_linie.tabel_sufix ||
' B ON 1=1 AND A.STERS = 0 AND B.STERS = 0 '
END) || 'WHERE A.STERS = 0) A2 ' || 'ON (A1.' || lcTipCont ||
'=A2.' || lcTipCont || ' AND A1.' || (CASE
WHEN UPPER(lcNumeColoanaP) = 'CONT' THEN
lcTipCont
ELSE
lcNumeColoanaP
END) || '=A2.' || lcNumeColoanaP || ' ' || (CASE
WHEN lcColoanaS IS NULL THEN
''
ELSE
'AND A1.' || (CASE
WHEN UPPER(lcNumeColoanaS) = 'CONT' THEN
lcTipCont
ELSE
lcNumeColoanaS
END) || '=A2.' || lcNumeColoanaS
END) || ') ' || 'WHEN MATCHED THEN UPDATE SET A1.' ||
lcTipAcont || '=NVL(A1.' || lcTipAcont || ',A2.' || lcTipAcont || ')';
/* begin*/
-- PINFO(lcMerge,'COMPLETEAZA_ANALITICE');
EXECUTE IMMEDIATE lcMerge;
/* exception
when others then
raise_application_error(-20000, lcMerge);
end;*/
-- La vanzarea de marfuri la pret de vanzare 4428 = 371 are completata ID_GESTOUT
-- functioneaza pentru contul 371 pe credit, dar nu pentru contul 4428 pe debit
-- mai repet o data completarea analiticelor si cu ID_GESTIN/ID_GESTOUT pentru analiticele ramase necompletate
if UPPER(TRIM(crs_linie.camp_leg_prefix)) = 'ID_GESTIUNE' then
if lcNumeColoanaP = 'ID_GESTIN' THEN
lcMerge := replace(lcMerge, 'ID_GESTIN', 'ID_GESTOUT');
else
lcMerge := replace(lcMerge, 'ID_GESTOUT', 'ID_GESTIN');
end if;
EXECUTE IMMEDIATE lcMerge;
end if;
end loop;
close crs;
-- verificarea daca exista analitic in planul de conturi se face in sterge_analitice_gresite
END completeaza_analitice;
-----------------------------------------------------------------------
PROCEDURE completeaza_analitice_rul IS
cursor crs is
select a.cont,
a.tabel_prefix,
a.col_prefix,
a.tabel_sufix,
a.col_sufix,
a.camp_leg_prefix,
a.camp_leg_sufix,
a.poz_start_prefix,
a.nr_return_prefix,
a.poz_start_sufix,
a.nr_return_sufix
from config_analitice a
where a.cont in
(select distinct cont from rul_temp where acont is null);
crs_linie crs%rowtype;
lcMerge VARCHAR2(10000);
lcAnalitic VARCHAR2(1000);
lcColoanaP VARCHAR2(100);
lcColoanaS VARCHAR2(100);
lcNumeColoanaP VARCHAR2(1000);
lcNumeColoanaS VARCHAR2(1000);
BEGIN
open crs;
loop
fetch crs
into crs_linie;
exit when crs%NOTFOUND;
lcAnalitic := '';
lcColoanaP := '';
lcColoanaS := '';
if crs_linie.tabel_prefix is not null then
lcColoanaP := 'A.' || crs_linie.camp_leg_prefix;
lcNumeColoanaP := crs_linie.camp_leg_prefix;
lcAnalitic := 'substr(a.' || crs_linie.col_prefix || ',' ||
crs_linie.poz_start_prefix || ',' ||
crs_linie.nr_return_prefix || ')';
end if;
if crs_linie.tabel_sufix is not null then
lcColoanaS := 'B.' || crs_linie.camp_leg_sufix;
lcNumeColoanaS := crs_linie.camp_leg_prefix;
lcAnalitic := lcAnalitic || '||substr(b.' ||
crs_linie.col_sufix || ',' ||
crs_linie.poz_start_sufix || ',' ||
crs_linie.nr_return_sufix || ')';
end if;
lcMerge := 'MERGE INTO RUL_TEMP A1 USING (SELECT ''' || crs_linie.cont ||
''' AS CONT,' || lcAnalitic || ' AS ACONT,' || lcColoanaP ||
(CASE
WHEN lcColoanaS IS NULL THEN
''
ELSE
',' || lcColoanaS
END) || ' FROM ' || crs_linie.tabel_prefix || ' A ' || (CASE
WHEN lcColoanaS IS NULL THEN
''
ELSE
'LEFT JOIN ' || crs_linie.tabel_sufix ||
' B ON 1=1 AND A.STERS = 0 AND B.STERS = 0 '
END) || 'WHERE A.STERS = 0) A2 ' ||
'ON (A1.CONT=A2.CONT AND A1.' || lcNumeColoanaP || '=A2.' ||
lcNumeColoanaP || ' ' || (CASE
WHEN lcColoanaS IS NULL THEN
''
ELSE
'AND A1.' || lcNumeColoanaS || '=A2.' || lcNumeColoanaS
END) || ') ' ||
'WHEN MATCHED THEN UPDATE SET A1.ACONT=NVL(A1.ACONT,A2.ACONT)';
/* begin*/
EXECUTE IMMEDIATE lcMerge;
/* exception
when others then
raise_application_error(-20000, lcMerge);
end;*/
end loop;
close crs;
-- verificarea daca exista analitic in planul de conturi se face in sterge_analitice_gresite_rul
END completeaza_analitice_rul;
-----------------------------------------------------------------------
PROCEDURE completeaza_parteneri_gestiuni IS
BEGIN
MERGE INTO ACT_TEMP A
USING (SELECT ID_PART, ID_GESTIUNE, CONT
FROM ASOCIERE_PARTENERI_GESTIUNI
WHERE ID_GESTIUNE IN (SELECT DISTINCT ID_GESTIN FROM ACT_TEMP)
AND CONT IN (SELECT CONT FROM config_cont_ireg)) B
ON (B.ID_GESTIUNE = A.ID_GESTIN AND B.CONT = A.SCD)
WHEN MATCHED THEN
UPDATE
SET ID_PARTD = DECODE(NVL(A.ID_PARTD, 0), 0, B.ID_PART, A.ID_PARTD);
MERGE INTO ACT_TEMP A
USING (SELECT ID_PART, ID_GESTIUNE, CONT
FROM ASOCIERE_PARTENERI_GESTIUNI
WHERE ID_GESTIUNE IN (SELECT DISTINCT ID_GESTOUT FROM ACT_TEMP)
-- = pack_facturare.nid_gestiune_sursa
AND CONT IN (SELECT CONT FROM config_cont_ireg)) B
ON (B.ID_GESTIUNE = A.ID_GESTOUT AND B.CONT = A.SCC)
WHEN MATCHED THEN
UPDATE
SET ID_PARTC = DECODE(NVL(A.ID_PARTC, 0), 0, B.ID_PART, A.ID_PARTC);
END completeaza_parteneri_gestiuni;
-----------------------------------------------------------------------
PROCEDURE sterge_analitice_gresite IS
BEGIN
MERGE INTO ACT_TEMP A
USING (SELECT ID_ACT, SUM(TIP) AS TIP
FROM (SELECT ID_ACT, 1 AS TIP
FROM ACT_TEMP
WHERE ASCD IS NOT NULL
AND TRIM(SCD) || '.' || TRIM(ASCD) NOT IN
(SELECT TRIM(CONT) || '.' || TRIM(ACONT)
FROM VPLCONT_ANALITIC
WHERE AN = pack_sesiune.getan())
UNION ALL
SELECT ID_ACT, 2 AS TIP
FROM ACT_TEMP
WHERE ASCC IS NOT NULL
AND TRIM(SCC) || '.' || TRIM(ASCC) NOT IN
(SELECT TRIM(CONT) || '.' || TRIM(ACONT)
FROM VPLCONT_ANALITIC
WHERE AN = pack_sesiune.getan()))
GROUP BY ID_ACT) B
ON (A.ID_ACT = B.ID_ACT)
WHEN MATCHED THEN
UPDATE
SET ASCD = DECODE(B.TIP, 1, NULL, 3, NULL, A.ASCD),
ASCC = DECODE(B.TIP, 2, NULL, 3, NULL, A.ASCC);
END sterge_analitice_gresite;
-----------------------------------------------------------------------
PROCEDURE sterge_analitice_gresite_rul IS
BEGIN
UPDATE RUL_TEMP
SET ACONT = NULL
WHERE ACONT IS NOT NULL
AND TRIM(CONT) || '.' || TRIM(ACONT) NOT IN
(SELECT TRIM(CONT) || '.' || TRIM(ACONT)
FROM VPLCONT_ANALITIC
WHERE AN = pack_sesiune.getan());
END sterge_analitice_gresite_rul;
-----------------------------------------------------------------------
FUNCTION verifica_id_documente(lcSirIdFact IN VARCHAR2) RETURN VARCHAR2 IS
lcSeparator VARCHAR2(1) := ',';
lcMesaj VARCHAR2(2000);
BEGIN
select stringagg(serie_act || ' ' || nract || '/' ||
to_char(dataact, 'DD.MM.YYYY')) as mesaj
into lcMesaj
from documente
where sters = 1
and id_doc in
(SELECT X as id_doc
FROM table(charn2collection(lcSirIdFact, lcSeparator)));
Return lcMesaj;
END;
---------------------------------------------------------------------
-- caut o inregistrare cu id_furnizor in rul_auxiliar si o intorc - pentru reciclarea inregistrarilor din rul_auxiliar
-- daca nu gasesc inregistrare, adaug una noua
---------------------------------------------------------------------
function GetRulajAuxiliarFurnizor(tnIdFurnizor rul_auxiliar.id_furnizor%type)
return rul_auxiliar.id_rul_aux%type is
tnIdRulAux rul_auxiliar.id_rul_aux%type;
begin
select min(id_rul_aux)
into tnIdRulAux
from rul_auxiliar
where id_furnizor = tnIdFurnizor;
if tnIdRulAux is null then
insert into rul_auxiliar
(id_furnizor)
values
(tnIdFurnizor)
returning id_rul_aux into tnIdRulAux;
end if;
return tnIdRulAux;
end GetRulajAuxiliarFurnizor;
procedure GetRulajAuxiliarFurnizor(tnIdFurnizor IN rul_auxiliar.id_furnizor%type,
tnIdRulAux OUT rul_auxiliar.id_rul_aux%type) is
begin
tnIdRulAux := GetRulajAuxiliarFurnizor(tnIdFurnizor);
end;
BEGIN
nCod := 0;
dDataOra := SYSDATE;
nIdFact := 0;
nIdUtil := 0;
end PACK_CONTAFIN;
/