- deploy.ps1, iis-web.config: Windows Server deployment scripts - api/app/routers/sync.py, dashboard.py: router updates - api/app/services/import_service.py, sync_service.py: service updates - api/app/static/css/style.css, js/*.js: UI updates - api/database-scripts/08_PACK_FACTURARE.pck: Oracle package - .gitignore: add .gittoken - CLAUDE.md, agent configs: documentation updates Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
16929 lines
772 KiB
Plaintext
16929 lines
772 KiB
Plaintext
CREATE OR REPLACE PACKAGE "PACK_FACTURARE" is
|
|
|
|
-- Author : MARIUS.ATANASIU
|
|
-- Created : 05/09/2005 09:25:00 AM
|
|
-- Purpose :
|
|
|
|
-- 30.10.2009
|
|
-- marius.mutu
|
|
-- nTipVanzareRetail in contabilizeaza_articol, scrie_tva
|
|
-- nTipIncasare: scrie_incsare2
|
|
-- descarca_gestiune - tva adaos
|
|
|
|
cnume_program VARCHAR(30) := 'ROAFACTURARE';
|
|
|
|
TYPE cursor_facturare IS REF CURSOR;
|
|
TYPE tip_date_gestiune IS RECORD(
|
|
id_gestiune NOM_GESTIUNI.ID_GESTIUNE%TYPE,
|
|
id_tip_gest TIPURI_GESTIUNI.ID_TIPGEST%TYPE,
|
|
cont NOM_GESTIUNI.CONT%TYPE,
|
|
acont NOM_GESTIUNI.ACONT%TYPE);
|
|
|
|
TYPE linie_stoc IS RECORD(
|
|
TIP NUMBER(1),
|
|
pret RUL.PRET%TYPE,
|
|
pretv RUL.PRETV%TYPE,
|
|
acont RUL.ACONT%TYPE,
|
|
cants STOC.CANTS%TYPE,
|
|
cant RUL.CANT%TYPE,
|
|
cante RUL.CANTE%TYPE,
|
|
tvav RUL.TVAV%TYPE,
|
|
proc_tvav RUL.PROC_TVAV%TYPE,
|
|
tva RUL.TVA%TYPE,
|
|
datain RUL.DATAIN%TYPE,
|
|
id_rul_aux RUL.ID_RUL_AUX%TYPE,
|
|
pretd RUL.PRETD%TYPE,
|
|
id_valuta RUL.ID_VALUTA%TYPE,
|
|
LOT RUL.LOT%TYPE,
|
|
ADATA_EXPIRARE RUL.ADATA_EXPIRARE%TYPE,
|
|
serie RUL.SERIE%TYPE,
|
|
ID_LUCRARE_REZ RUL.ID_LUCRARE_REZ%TYPE,
|
|
ID_PART_REZ RUL.ID_PART_REZ%TYPE,
|
|
PRETACHCTVA NOM_ARTICOLE.PRETACHCTVA%TYPE);
|
|
TYPE tab_stoc_type IS TABLE OF linie_stoc;
|
|
|
|
TYPE articol_aviz IS RECORD(
|
|
ID_VANZARE VANZARI_DETALII.ID_VANZARE%TYPE,
|
|
ID_VANZARE_DET VANZARI_DETALII.ID_VANZARE_DET%TYPE,
|
|
CANTITATE VANZARI_DETALII.CANTITATE%TYPE,
|
|
CUSTODIE VANZARI_DETALII.CUSTODIE%TYPE,
|
|
COD ACT.COD%TYPE,
|
|
ID_FACT ACT.ID_FACT%TYPE,
|
|
NRACT ACT.NRACT%TYPE,
|
|
SERIE_ACT ACT.SERIE_ACT%TYPE,
|
|
DATAACT ACT.DATAACT%TYPE,
|
|
ASCD ACT.ASCD%TYPE,
|
|
ID_SECTIE ACT.ID_SECTIE%TYPE);
|
|
TYPE tab_articole_aviz_type IS TABLE OF articol_aviz;
|
|
|
|
nid_tipnir SERII_TIPDOC.ID_TIPDOC%TYPE := 1;
|
|
nid_tipbon SERII_TIPDOC.ID_TIPDOC%TYPE := 2;
|
|
nid_tipfactura SERII_TIPDOC.ID_TIPDOC%TYPE := 5;
|
|
nid_tipaviz SERII_TIPDOC.ID_TIPDOC%TYPE := 6;
|
|
|
|
-- 30.10.2009
|
|
nTipVanzareRetail VANZARI.TIP%TYPE := 43;
|
|
-- 30.10.2009 ^
|
|
-- 26.08.2009
|
|
nTipFacturaHotel VANZARI.TIP%TYPE := 44;
|
|
nTipFacturaRestaurant VANZARI.TIP%TYPE := 45;
|
|
-- 26.08.2009 ^
|
|
nTipNotaPlata VANZARI.TIP%TYPE := 46;
|
|
|
|
nTipFacturaACN VANZARI.TIP%TYPE := 51;
|
|
|
|
/*** Valori pentru (lnIdSet,tnTip)
|
|
** Facturare
|
|
** (25000,1) - pe baza de lista de preturi ( 25010 - daca e cu scadere din gestiune )
|
|
** (25001,2) - pe baza de contracte ( 25011 - daca e cu scadere din gestiune )
|
|
** (25002,3) - pe baza de comenzi ( 25012 - daca e cu scadere din gestiune )
|
|
** (25003,4) - pe baza de avize ( 25013 - daca e cu scadere din gestiune )
|
|
** (25004,5) - pe baza de lista de preturi in valuta ( 25014 - daca e cu scadere din gestiune )
|
|
** (25005,6) - pe baza de contract in valuta ( 25015 - daca e cu scadere din gestiune )
|
|
** (25006,7) - credit note
|
|
** (25007,8) - retur factura in lei ( 25017 )
|
|
** (25008,9) - retur factura in valuta ( 25018 )
|
|
** (25009,10) - factura fiscala in valuta ( 25019 )
|
|
** (25042,43) - bon fiscal ROARETAIL ( 25052 - daca e cu scadere din gestiune )
|
|
** (25043,44) - factura hotel
|
|
** (25044,45) - factura restaurant ( 25054 )
|
|
** (25045,46) - nota de plata restaurant ( 25055 )
|
|
** (25047,48) - factura marfa custodie cu desc. k ( 25057 )
|
|
** (25048,49) - factura marfa custodie fara desc. k ( 25058 )
|
|
** (25051,52) - pe baza de contract factura fiscala in valuta ( 25061 - daca e cu scadere din gestiune )
|
|
|
|
** Avize de expeditie
|
|
** (25020,21) - catre clienti din comanda ( 25030 - daca e cu scadere din gestiune )
|
|
** (25021,22) - catre clienti din lista ( 25031 - daca e cu scadere din gestiune )
|
|
** (25022,23) - transfer catre subunitati din lista ( 25032 - daca e cu scadere din gestiune )
|
|
** (25023,24) - aviz de retur ( 25033 - daca e cu scadere din gestiune )
|
|
** (25024,25) - transfer catre subunitati din comanda ( 25034 - daca e cu scadere din gestiune )
|
|
** (25025,26) - catre clienti din contract ( 25035 - daca e cu scadere din gestiune )
|
|
** (25026,27) - transfer catre subunitati pe baza de lucrare( 25036 - daca e cu scadere din gestiune )
|
|
** (25027,28) - catre clienti debitori din comanda ( 25037 - daca e cu scadere din gestiune )
|
|
** (25028,29) - catre clienti debitori din lista ( 25038 - daca e cu scadere din gestiune )
|
|
** (25029,30) - transfer catre subunitati pe baza de NIR ( 25039 - daca e cu scadere din gestiune )
|
|
** (25040,41) - retur transfer catre subunitati lista pret ( 25050 - daca e cu scadere din gestiune )
|
|
** (25041,42) - catre clienti custodie pe baza de comanda ( 25051 - daca e cu scadere din gestiune )
|
|
** (25046,47) - catre clienti custodie pe baza de comanda ptr. descarcare cu K ( 25056 - daca e cu scadere din gestiune )
|
|
** (25049,50) - in lucru retur de la clienti custodie ( 25059 - daca e cu scadere din gestiune )
|
|
|
|
** ROAGEST
|
|
** (236/240/241/242,-6) - retur de la gestiune valorica
|
|
**
|
|
** ROARETAIL
|
|
** (25042,43) - bonuri fiscale colectate de la magazine ( 25052 - daca e cu scadere din gestiune )
|
|
|
|
** ROAACNPRO
|
|
** (50100,51) - factura ROAACNPRO ( 25060 - daca e cu scadere din gestiune )
|
|
*/
|
|
|
|
--------------------------------------
|
|
nTipIncasareBonFiscal NUMBER := 2;
|
|
nTipIncasareCardBancar NUMBER := 3;
|
|
nTipIncasareTichete NUMBER := 5;
|
|
nTipIncasareChitanta NUMBER := 11;
|
|
------------------------------------
|
|
nSaftPaymentCodeNumerar varchar2(9) := '10';
|
|
nSaftPaymentCodeCard varchar2(9) := '48';
|
|
------------------------------------
|
|
nid_act ACT.ID_ACT%TYPE;
|
|
nid_serie SERII.ID_SERIE%TYPE;
|
|
cserie_act SERII.SERIE%TYPE;
|
|
v_date_gestiune tip_date_gestiune;
|
|
ddata_curs DATE;
|
|
ddata_ireg ACT.DATAIREG%TYPE;
|
|
nid_fdoc ACT.ID_FDOC%TYPE;
|
|
ddata_act ACT.DATAACT%TYPE;
|
|
ddata_scadenta ACT.DATASCAD%TYPE;
|
|
nnumar_act ACT.NRACT%TYPE;
|
|
nid_part ACT.ID_PARTD%TYPE;
|
|
nid_part_rez ACT.ID_PARTD%TYPE;
|
|
nid_lucrare NOM_LUCRARI.ID_LUCRARE%TYPE;
|
|
nid_sectie_stoc NOM_SECTII.ID_SECTIE%TYPE; -- id_sectie pentru politica de preturi cu facturare din stoc
|
|
nid_gestiune_sursa NOM_GESTIUNI.ID_GESTIUNE%TYPE;
|
|
nid_responsabil ACT.ID_RESPONSABIL%TYPE;
|
|
cexplicatia4 ACT.EXPLICATIA4%TYPE;
|
|
nid_ordl DEV_ORDL.ID_ORDL%TYPE;
|
|
nid_set ACT.ID_SET%TYPE;
|
|
nid_util SYN_UTILIZATORI.ID_UTIL%TYPE;
|
|
nproc_tva_max ACT.PROC_TVA%TYPE;
|
|
cdescriere ACT.EXPLICATIA%TYPE;
|
|
ntip NUMBER(2);
|
|
nid_moneda_nationala NOM_VALUTE.ID_VALUTA%TYPE;
|
|
nid_fact ACT.ID_FACT%TYPE;
|
|
nid_factc ACT.ID_FACTC%TYPE;
|
|
nperechec ACT.PERECHEC%TYPE;
|
|
nid_partc ACT.ID_PARTC%TYPE;
|
|
nid_jtva_coloana ACT.ID_JTVA_COLOANA%TYPE;
|
|
nTaxCode ACT.TAXCODE%TYPE;
|
|
ntva_incasare NUMBER(1);
|
|
nid_comanda COMENZI.ID_COMANDA%TYPE;
|
|
nin_valuta VANZARI.IN_VALUTA%TYPE;
|
|
nid_valuta NOM_VALUTE.ID_VALUTA%TYPE;
|
|
nid_politica_stoc CRM_POLITICI_PRETURI.ID_POL%TYPE;
|
|
nid_sucursala SYN_NOM_FIRME.ID_FIRMA%TYPE;
|
|
nid_venchelt NOM_VENIT_CHELTUIELI.ID_VENCHELT%TYPE;
|
|
ntotftva ACT.SUMA%TYPE;
|
|
ntottva ACT.SUMA%TYPE;
|
|
ndifftva VANZARI.DIFTOTFTVA%TYPE;
|
|
ndiftva VANZARI.DIFTOTTVA%TYPE;
|
|
nfactavizcust NUMBER(1);
|
|
nafisare_scadenta VANZARI.AFISARE_SCADENTA%TYPE;
|
|
ncoeficient_k VANZARI.COEFICIENT_K%TYPE;
|
|
cserie_act_incasare SERII.SERIE%TYPE;
|
|
nnumar_act_incasare ACT.NRACT%TYPE;
|
|
ntip_doc_incasare NUMBER(2); -- 2 (BON FISCAL) sau 11 (CHITANTA) pentru SCRIE_IN_VANZARI
|
|
nsuma_incasare ACT.SUMA%TYPE; -- SUMA pentru SCRIE_IN_VANZARI
|
|
-- in rate sau articole
|
|
clistaid VARCHAR2(3000);
|
|
clistaid_avize VARCHAR2(3000); -- folosit pentru facturare din avize
|
|
nid_vanzare VANZARI.ID_VANZARE%TYPE;
|
|
ccod_retur VARCHAR2(3000);
|
|
|
|
clista_cursuri VARCHAR2(1000);
|
|
|
|
nluna ACT.LUNA%TYPE;
|
|
nan ACT.AN%TYPE;
|
|
nzecimale_procent NUMBER(2);
|
|
nscadere_stoc NUMBER(1) := 0;
|
|
ndiscount_evidentiat NUMBER(1) := 0;
|
|
cascc ACT.ASCC%TYPE;
|
|
cascd ACT.ASCD%TYPE;
|
|
|
|
nnumar_bon ACT.NNIR%TYPE := 0;
|
|
nanalitice_378 NUMBER(1) := 0;
|
|
|
|
ntip_factura VANZARI.TIP_FACTURA%TYPE;
|
|
nid_beneficiar VANZARI.ID_BENEFICIAR%TYPE;
|
|
ntip_saft VANZARI.TIP_SAFT%TYPE; -- EFACTURA 380/381/751
|
|
|
|
PROCEDURE verificare_setari_program(V_ID_UTIL IN NUMBER,
|
|
V_MESAJ OUT VARCHAR2);
|
|
|
|
PROCEDURE initializeaza_facturare(V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE initializeaza_seturi_temp;
|
|
|
|
PROCEDURE initializeaza_date_factura(V_DATA_IREG IN DATE,
|
|
V_ID_FDOC IN NUMBER,
|
|
V_DATA_ACT IN DATE,
|
|
V_DATA_SCADENTA IN DATE,
|
|
V_SERIE_FACTURA IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_CLIENT IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_RESPONSABIL IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_DESCRIERE IN VARCHAR2,
|
|
V_TIP IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_DATA_CURS IN DATE,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_TVA_INCASARE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE initializeaza_date_factura(V_DATA_IREG IN DATE,
|
|
V_ID_FDOC IN NUMBER,
|
|
V_DATA_ACT IN DATE,
|
|
V_DATA_SCADENTA IN DATE,
|
|
V_SERIE_FACTURA IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_CLIENT IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_RESPONSABIL IN NUMBER,
|
|
V_EXPLICATIA4 IN VARCHAR2,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_DESCRIERE IN VARCHAR2,
|
|
V_TIP IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_DATA_CURS IN DATE,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_TVA_INCASARE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE initializeaza_date_factura(V_DATA_IREG IN DATE,
|
|
V_ID_FDOC IN NUMBER,
|
|
V_DATA_ACT IN DATE,
|
|
V_DATA_SCADENTA IN DATE,
|
|
V_SERIE_FACTURA IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_CLIENT IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_RESPONSABIL IN NUMBER,
|
|
V_EXPLICATIA4 IN VARCHAR2,
|
|
V_ID_ORDL IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_DESCRIERE IN VARCHAR2,
|
|
V_TIP IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_DATA_CURS IN DATE,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_TVA_INCASARE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE initializeaza_date_factura(V_DATA_IREG IN DATE,
|
|
V_ID_FDOC IN NUMBER,
|
|
V_DATA_ACT IN DATE,
|
|
V_DATA_SCADENTA IN DATE,
|
|
V_SERIE_FACTURA IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_CLIENT IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_RESPONSABIL IN NUMBER,
|
|
V_EXPLICATIA4 IN VARCHAR2,
|
|
V_ID_ORDL IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_DESCRIERE IN VARCHAR2,
|
|
V_TIP IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_DATA_CURS IN DATE,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_TVA_INCASARE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_TIP_FACTURA IN NUMBER,
|
|
V_ID_BENEFICIAR IN NUMBER,
|
|
V_TIP_SAFT IN NUMBER DEFAULT 380);
|
|
|
|
PROCEDURE initializeaza_setari_facturare;
|
|
|
|
PROCEDURE initializeaza_date_gestiune(V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_TIPGEST IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_ACONT IN VARCHAR2);
|
|
|
|
PROCEDURE citeste_setari_document(V_TIP IN NUMBER,
|
|
V_ID_FDOC OUT NUMBER,
|
|
V_FDOC OUT VARCHAR2);
|
|
|
|
PROCEDURE citeste_setari_partener(V_TIP IN NUMBER,
|
|
V_ID_PART OUT NUMBER,
|
|
V_DENUMIRE OUT VARCHAR2);
|
|
|
|
PROCEDURE citeste_setari_pol_pret(V_TIP IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_POL OUT NUMBER,
|
|
V_DENUMIRE OUT VARCHAR2);
|
|
|
|
PROCEDURE genereaza_numar_proforma(V_NR_PROFORMA OUT NUMBER);
|
|
|
|
PROCEDURE completare_politica_stoc;
|
|
|
|
PROCEDURE modificare_politica_stoc(V_ID_POL IN NUMBER);
|
|
|
|
PROCEDURE cursor_preturi(V_DATA_CURS IN DATE,
|
|
V_TIP IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_ID_GESTIUNE_INIT IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_contract(V_DATA_CURS IN DATE,
|
|
V_TIP IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_GESTIUNE_INIT IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_AGENT OUT NUMBER,
|
|
V_NUME_AGENT OUT VARCHAR2,
|
|
V_CURSOR OUT cursor_facturare,
|
|
V_CURSOR2 OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_comanda(V_DATA_CURS IN DATE,
|
|
V_TIP IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_lucrare(V_DATA_CURS IN DATE,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_articole_k(V_DATA_CURS IN DATE,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_avize(V_LISTAID IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_DISCOUNT OUT NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_aviz_nir(V_ID_GESTIUNE_DEST IN NUMBER,
|
|
V_ID_FURNIZOR IN NUMBER,
|
|
V_NR_ACT IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_retur(V_IN_VALUTA IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_retur_document(V_IN_VALUTA IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_COPIERE IN NUMBER,
|
|
V_PROFORMA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_copiere(V_IN_VALUTA IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_gestiune(V_DATA_CURS IN DATE,
|
|
V_ID_POL IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_gestiuni_articol(V_ID_ARTICOL IN NUMBER,
|
|
V_TIP IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_gestiuni_articol_stoc0(V_ID_ARTICOL IN NUMBER,
|
|
V_TIP IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE cursor_gestiuni_articol_retur(V_ID_ARTICOL IN NUMBER,
|
|
V_TIP IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_PRETV IN NUMBER,
|
|
V_DISCOUNT IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
PROCEDURE adauga_articol_factura_deviz(V_ID_ARTICOL IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_CONT IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_ID_JTVA_COLOANA_EX IN NUMBER DEFAULT NULL,
|
|
V_ID_CTR IN NUMBER DEFAULT NULL,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL,
|
|
V_LOT IN VARCHAR2 DEFAULT NULL);
|
|
|
|
PROCEDURE adauga_articol_factura_stoc(V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_CONT IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_ID_RUL_AUX IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL,
|
|
V_LOT IN VARCHAR2 DEFAULT NULL);
|
|
|
|
PROCEDURE adauga_articol_factura_stoc(V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_CONT IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER);
|
|
|
|
PROCEDURE adauga_articol_lucrare_pret(V_ID_COMANDA IN NUMBER,
|
|
V_ID_ARTICOL IN NUMBER,
|
|
V_ID_POL IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_ID_GESTIUNE_DEST IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_PRETIN in number);
|
|
|
|
PROCEDURE adauga_articol_set(V_ID_VANZARE_SET IN NUMBER,
|
|
V_DENUMIRE IN VARCHAR2,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_UM IN VARCHAR2,
|
|
V_SERIE IN VARCHAR2,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER);
|
|
|
|
PROCEDURE adauga_articol_factura(V_ID_TEMP IN NUMBER,
|
|
V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_ID_POL IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_PRET_ACHIZITIE_TEMP IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRET_TEMP IN NUMBER,
|
|
V_ID_VALUTA_TEMP IN NUMBER,
|
|
V_PRETURI_CU_TVA_TEMP IN NUMBER,
|
|
V_IN_STOC_TEMP IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_ID_PART_REZ IN NUMBER,
|
|
V_ID_LUCRARE_REZ IN NUMBER,
|
|
V_PRETV_ORIG IN NUMBER,
|
|
V_ID_VANZARE_SET IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL,
|
|
V_LOT IN VARCHAR2 DEFAULT NULL);
|
|
|
|
PROCEDURE sterge_articol_factura(V_ID_TEMP IN NUMBER,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE adauga_diferente_pret(V_SIR_ID_TEMP IN VARCHAR2,
|
|
V_SIR_DIFERENTA IN VARCHAR,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE adauga_rata_factura(V_ID_RATA IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL);
|
|
|
|
PROCEDURE sterge_rata_factura(V_ID_RATA IN NUMBER, V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE sterge_proforma_old(V_ID_PROFORMA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE sterge_factura(V_ID_VANZARE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE sterge_proforma(V_ID_VANZARE IN NUMBER, V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE scrie_proforma_old(V_DISCOUNT_PROFORMA IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_ID_PROFORMA OUT NUMBER,
|
|
V_NUMAR_ACT OUT NUMBER);
|
|
|
|
PROCEDURE scrie_proforma(V_TOTFTVA IN NUMBER,
|
|
V_TOTTVA IN NUMBER,
|
|
V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER);
|
|
|
|
PROCEDURE inchide_comanda;
|
|
|
|
PROCEDURE scrie_avize_lucrare(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_ID_SERIE_ACT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare);
|
|
|
|
/* PROCEDURE scrie_factura2(V_TOTFTVA IN NUMBER,
|
|
V_TOTTVA IN NUMBER,
|
|
V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare);*/
|
|
|
|
PROCEDURE scrie_factura2(V_TOTFTVA IN NUMBER,
|
|
V_TOTTVA IN NUMBER,
|
|
V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare);
|
|
|
|
/* PROCEDURE scrie_factura_avize_retur(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_TEXT_ADITIONAL_RETUR IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR2,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_SERIE_ACT IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_ID_VANZARE_RETUR OUT NUMBER,
|
|
V_CURSOR_RETUR OUT cursor_facturare);*/
|
|
|
|
PROCEDURE scrie_factura_avize_retur(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_TEXT_ADITIONAL_RETUR IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR2,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_SERIE_ACT IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_ID_VANZARE_RETUR OUT NUMBER,
|
|
V_CURSOR_RETUR OUT cursor_facturare);
|
|
|
|
/* PROCEDURE scrie_factura_avize(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_VERIFICARE_FACTURAT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare);*/
|
|
|
|
PROCEDURE scrie_factura_avize(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_VERIFICARE_FACTURAT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare);
|
|
|
|
/* PROCEDURE scrie_aviz_retur(V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_SCRIS OUT NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare);*/
|
|
|
|
PROCEDURE scrie_aviz_retur(V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_SCRIS OUT NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare);
|
|
|
|
FUNCTION contabilizeaza_articol(detalii_articol VANZARI_DETALII_TEMP%ROWTYPE)
|
|
RETURN NUMBER;
|
|
|
|
FUNCTION contabilizeaza_rata(detalii_rata VANZARI_DETALII_TEMP%ROWTYPE)
|
|
RETURN NUMBER;
|
|
|
|
PROCEDURE descarca_gestiune(V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRETV_ALES IN NUMBER,
|
|
V_PRET_UNITAR IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_CANTE IN NUMBER,
|
|
V_DISCOUNT IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_PART_REZ IN NUMBER,
|
|
V_ID_LUCRARE_REZ IN NUMBER);
|
|
|
|
PROCEDURE descarca_gestiune(V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRETV_ALES IN NUMBER,
|
|
V_PRET_UNITAR IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_CANTE IN NUMBER,
|
|
V_DISCOUNT IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_PART_REZ IN NUMBER,
|
|
V_ID_LUCRARE_REZ IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_TAXCODE IN NUMBER);
|
|
|
|
PROCEDURE scrie_fact_aviz_custodie(V_COD IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_ARTICOL IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRETV IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER);
|
|
|
|
PROCEDURE transfera_articol(detalii_articol VANZARI_DETALII_TEMP%ROWTYPE);
|
|
|
|
FUNCTION scrie_nota(V_CANTITATE IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER, -- 0 DACA V_PRET NU CONTINE SI TVA-UL ( PRETUL FOLOSIT CA REFERINTA )
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_SCD IN VARCHAR2,
|
|
V_ASCD IN VARCHAR2,
|
|
V_SCC IN VARCHAR2,
|
|
V_ASCC IN VARCHAR2,
|
|
V_ID_GESTIN IN NUMBER,
|
|
V_ID_GESTOUT IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_CU_TVA IN NUMBER, -- 0 DACA SE SCRIE SI NOTA DE TVA
|
|
V_PTVA IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL,
|
|
V_PAYMENTCODE IN NUMBER DEFAULT NULL) RETURN NUMBER;
|
|
|
|
PROCEDURE scrie_tva(V_SUMA IN NUMBER,
|
|
V_SUMA_VAL IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_ACONT IN VARCHAR2,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_PTVA IN NUMBER,
|
|
V_ID_FACT IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER);
|
|
|
|
FUNCTION scrie_discount(V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_ASCC IN VARCHAR2,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_CU_TVA IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL)
|
|
RETURN NUMBER;
|
|
|
|
PROCEDURE scrie_descarcare_k(V_COEFICIENT_K IN NUMBER);
|
|
|
|
PROCEDURE scrie_avans(V_SUMA IN NUMBER);
|
|
|
|
Procedure scrie_incasari(V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_CTR IN NUMBER);
|
|
|
|
PROCEDURE scrie_incasare2(V_TIP IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_ID_BANCASA IN NUMBER,
|
|
V_SUMA IN NUMBER,
|
|
V_ASCC IN ACT.ASCC%TYPE DEFAULT NULL,
|
|
V_PSCD IN ACT.SCD%TYPE DEFAULT NULL,
|
|
V_ASCD IN ACT.ASCD%TYPE DEFAULT NULL);
|
|
|
|
/* PROCEDURE scrie_incasare(V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_ID_CASA IN NUMBER,
|
|
V_SUMA IN NUMBER);*/
|
|
|
|
PROCEDURE scrie_note_banca_compensari;
|
|
|
|
/* PROCEDURE scrie_in_vanzari(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_ID_VANZARE OUT NUMBER);*/
|
|
|
|
PROCEDURE scrie_in_vanzari(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_ID_VANZARE OUT NUMBER);
|
|
|
|
PROCEDURE scrie_atasamente_factura(V_ID_VANZARE IN NUMBER,
|
|
V_NUME_FRX IN NUMBER,
|
|
V_WDOCUMENT IN BLOB,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE scrie_seturi;
|
|
|
|
PROCEDURE scrie_seturi_proforma;
|
|
|
|
PROCEDURE initializeaza_part_rez(V_ID_PART IN NUMBER);
|
|
|
|
PROCEDURE cumuleaza_note_act;
|
|
|
|
PROCEDURE cumuleaza_note_act_temp;
|
|
|
|
PROCEDURE cursor_verificare(V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare);
|
|
|
|
PROCEDURE modifica_date_factura(V_ID_VANZARE IN NUMBER,
|
|
V_ID_RUTA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_FACTURARE IN VANZARI.ID_FACTURARE%TYPE,
|
|
V_LISTARE_DETALIATA IN VANZARI.LISTARE_DETALIATA%TYPE,
|
|
V_TEXT_ADITIONAL IN VANZARI.TEXT_ADITIONAL%TYPE,
|
|
V_TIP_SAFT IN VANZARI.TIP_SAFT%TYPE DEFAULT NULL,
|
|
V_EFACTURA IN VANZARI.EFACTURA%TYPE DEFAULT NULL,
|
|
V_DATA_ACT IN VANZARI.DATA_ACT%TYPE DEFAULT NULL,
|
|
V_DATA_SCAD IN VANZARI.DATA_SCAD%TYPE DEFAULT NULL,
|
|
V_NUMAR_ACT IN VANZARI.NUMAR_ACT%TYPE DEFAULT NULL,
|
|
V_SERIE_ACT IN VANZARI.SERIE_ACT%TYPE DEFAULT NULL);
|
|
|
|
PROCEDURE modifica_explicatie_articol(V_ID_VANZARE_DET IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL);
|
|
|
|
PROCEDURE initializeaza_moneda_nationala;
|
|
|
|
PROCEDURE scrie_cursuri_proforma(V_ID_PROFORMA IN NUMBER);
|
|
|
|
PROCEDURE scrie_cursuri(V_ID_VANZARE IN NUMBER);
|
|
|
|
PROCEDURE scrie_rate_factura(V_DATAORA IN DATE);
|
|
|
|
FUNCTION calculeaza_k RETURN NUMBER;
|
|
|
|
PROCEDURE calculeaza_pret(V_PRET_UNITAR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_TIP IN NUMBER,
|
|
V_PRET_FARA_TVA OUT NUMBER,
|
|
V_PRET_TVA OUT NUMBER,
|
|
V_PRET_CU_TVA OUT NUMBER);
|
|
|
|
/* function calculeaza_pret_fara_tva(V_PRET_UNITAR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER) return number;
|
|
|
|
function calculeaza_pret_TVA(V_PRET_UNITAR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER) return number;
|
|
|
|
function calculeaza_pret_cu_tva(V_PRET_UNITAR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER) return number;*/
|
|
|
|
PROCEDURE calculeaza_sume(V_PRET_UNITAR IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ZECIMALE_PRET IN NUMBER,
|
|
V_ZECIMALE_SUMA IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_SUMA_FARA_TVA OUT NUMBER,
|
|
V_SUMA_TVA OUT NUMBER,
|
|
V_SUMA_CU_TVA OUT NUMBER);
|
|
|
|
/* PROCEDURE finalizeaza_factura(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER);*/
|
|
|
|
PROCEDURE finalizeaza_factura(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER);
|
|
|
|
PROCEDURE finalizeaza_avize_lucrare(V_DISCOUNT_FACTURA IN NUMBER);
|
|
|
|
/* PROCEDURE finalizeaza_scriere_verificare(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER);*/
|
|
|
|
PROCEDURE finalizeaza_scriere_verificare(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER);
|
|
|
|
PROCEDURE finalizeaza_scriere_verificare(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER);
|
|
|
|
Procedure initializeaza_scriere_actrul(tdDataOra IN DATE,
|
|
tnSuprascriereCod IN NUMBER DEFAULT 1);
|
|
|
|
PROCEDURE finalizeaza_scriere_actrul;
|
|
|
|
PROCEDURE marcheaza_facturat(V_VERIFICARE IN NUMBER);
|
|
|
|
PROCEDURE scrie_cantitati_vanzari_avize;
|
|
|
|
PROCEDURE scrie_corespondente_vanzari(V_TIP IN NUMBER);
|
|
|
|
PROCEDURE cauta_date_ultima_factura(V_ID_PART IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_DELEGAT OUT NUMBER,
|
|
V_NUME_DELEGAT OUT VARCHAR2,
|
|
V_SERIE_BI OUT VARCHAR2,
|
|
V_CNP OUT VARCHAR2,
|
|
V_ID_MASINA OUT NUMBER,
|
|
V_NRINMAT OUT VARCHAR2);
|
|
|
|
PROCEDURE cauta_date_ultima_factura_tip(V_TIP IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_DELEGAT OUT NUMBER,
|
|
V_NUME_DELEGAT OUT VARCHAR2,
|
|
V_SERIE_BI OUT VARCHAR2,
|
|
V_CNP OUT VARCHAR2,
|
|
V_ID_MASINA OUT NUMBER,
|
|
V_NRINMAT OUT VARCHAR2);
|
|
|
|
PROCEDURE cauta_date_comanda(V_ID_CLIENT IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_DATA_FACTURA IN DATE,
|
|
V_LISTAID OUT VARCHAR2,
|
|
V_DESCRIERE OUT VARCHAR2);
|
|
|
|
PROCEDURE cauta_date_comanda_gest(V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_DATA_FACTURA IN DATE,
|
|
V_LISTAID OUT VARCHAR2,
|
|
V_DESCRIERE OUT VARCHAR2);
|
|
|
|
FUNCTION calculeaza_total_cu_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER;
|
|
|
|
FUNCTION calculeaza_total_cu_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ZECIMALE_PRET IN NUMBER,
|
|
V_ZECIMALE_SUMA IN NUMBER)
|
|
RETURN NUMBER;
|
|
|
|
FUNCTION calculeaza_total_cu_tva_fact(V_PRET IN NUMBER,
|
|
V_DIFERENTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER;
|
|
|
|
FUNCTION calculeaza_total_fara_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER;
|
|
|
|
FUNCTION calculeaza_total_fara_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ZECIMALE_PRET IN NUMBER,
|
|
V_ZECIMALE_SUMA IN NUMBER)
|
|
RETURN NUMBER;
|
|
|
|
FUNCTION calculeaza_total_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER;
|
|
|
|
FUNCTION calculeaza_total_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ZECIMALE_PRET IN NUMBER,
|
|
V_ZECIMALE_SUMA IN NUMBER)
|
|
RETURN NUMBER;
|
|
|
|
FUNCTION calculeaza_total_fara_tva_fact(V_PRET IN NUMBER,
|
|
V_DIFERENTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER;
|
|
|
|
FUNCTION calculeaza_total_tva_fact(V_PRET IN NUMBER,
|
|
V_DIFERENTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER;
|
|
|
|
PROCEDURE actualizeaza_vanzari(V_COD_VECHI IN NUMBER,
|
|
V_COD_NOU IN NUMBER);
|
|
|
|
PROCEDURE sterge_din_vanzari(V_COD IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE verifica_cursuri_valute(V_DATA_CURS IN DATE,
|
|
V_ID_UTIL IN NUMBER);
|
|
|
|
PROCEDURE verifica_total_document;
|
|
|
|
PROCEDURE verifica_analitice378;
|
|
|
|
function GetAnaliticByGrupUtilizatori(tnIdUtilizator ACT.ID_UTIL%TYPE,
|
|
tcCont ACT.SCD%TYPE)
|
|
return ACT.ASCD%TYPE;
|
|
|
|
FUNCTION GetAnaliticByArticol(tcCont RUL.CONT%TYPE,
|
|
tnIdGestiune RUL.ID_GESTIUNE%TYPE DEFAULT NULL,
|
|
tnIdArticol RUL.ID_ARTICOL%TYPE DEFAULT NULL)
|
|
return RUL.ACONT%TYPE;
|
|
|
|
Procedure citeste_vanzari_seturi(V_COD IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
Procedure citeste_proforme_seturi(V_ID_PROFORMA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare);
|
|
|
|
procedure adauga_note_tva_incasare;
|
|
|
|
function citeste_lungcampexplart return NUMBER;
|
|
|
|
function getAnaliticK(tnProcTvaV IN NUMBER) return VARCHAR2;
|
|
|
|
procedure getSoldClient(tnAn IN NUMBER,
|
|
tnLuna IN NUMBER,
|
|
tnIdPart IN NUMBER,
|
|
tnIdFact IN NUMBER default 0,
|
|
V_CURSOR OUT cursor_facturare);
|
|
end PACK_FACTURARE;
|
|
/
|
|
CREATE OR REPLACE PACKAGE BODY "PACK_FACTURARE" is
|
|
-- ultima eroare atribuita : FACT-024
|
|
|
|
-- 09.02.2010
|
|
-- marius.mutu
|
|
-- la vanzarea din stoc din ROARETAIL - aflu preturile de achizitie/vanzare, seria, gestiunea si trebuie sa intru pe ramura default
|
|
-- DESCARCAREA DE GESTIUNE OFFLINE TREBUIE RESCRISA SA FOLOSEASCA PROCEDURA PACK_RETAIL_STOC.SALVEAZABON
|
|
|
|
-- 29.03.2010
|
|
-- marius.mutu
|
|
-- adaugare GetAnaliticByArticol pentru obtinerea analiticului 607,608, 378,388
|
|
-- dupa configurare_analitice pe gestiuni/articole in procedura descarcare_gestiune
|
|
|
|
-- 08.07.2010
|
|
-- marius.mutu
|
|
-- descarca_gestiune - In mesaj Eroare FACT-007 se afiseaza Id gestiune, Id articol
|
|
|
|
-- 11.08.2010
|
|
-- marius.mutu
|
|
-- scrie_incasari, transmit parametri V_SCD, V_ASCD la scrie_incasare2 + optiune pentru CONT DEBIT V_SCD
|
|
|
|
-- 08.11.2010
|
|
-- transfera_articol
|
|
-- (25040,41) - retur transfer catre subunitati lista pret ( 25050 - daca e cu scadere din gestiune )
|
|
-- la retur transfer, trebuie schimbat semnul diferentei de pret
|
|
|
|
-- 05.07.2011
|
|
-- marius.mutu
|
|
-- contabilizeaza_articol - tratare exceptie NO_DATA_FOUND FACT-024
|
|
|
|
-- 13.01.2014
|
|
-- marius.mutu
|
|
-- Am completat ID_RESPONSABIL la instructiunile INSERT INTO ACT_TEMP
|
|
|
|
-- 03.02.2015
|
|
-- marius.mutu
|
|
-- citeste_setari_document: adaugat PROFORMA, BON FISCAL
|
|
|
|
-- 16.02.2015
|
|
-- marius.mutu
|
|
-- CURSOR_PRETURI
|
|
-- FACTURARE LISTA PRETURI: se selecteaza toate articolele din lista de preturi, indiferent daca au stoc > 0
|
|
-- optiunea RF_FACTURARE_FARA_STOC = 1
|
|
-- descarca_gestiune: se pot vinde pe factura si articole retur (cante < 0) si articole care nu sunt in stoc (RF_FACTURARE_FARA_STOC)
|
|
|
|
-- 06.03.2015
|
|
-- marius.mutu
|
|
-- descarca_gestiune: la factura de vanzare lista de preturi se descarca mai intai
|
|
-- articolele retur din facturi anterioare, apoi
|
|
-- articolele din stoc (indiferent daca cantitate este pozitiva sau negativa), apoi
|
|
-- articolele fara stoc (RF_FACTURARE_FARA_STOC)
|
|
-- asa se pot factura articole din stoc, cu cantitate < 0 (retur, fara factura anterioara)
|
|
|
|
-- 30.04.2015
|
|
-- marius.mutu
|
|
-- descarca gestiune: la factura de vanzare lista de preturi s-au pus 2 ramuri
|
|
-- tip = 1 daca exista cantitate retur < 0 si lista articole retur din rulaj + tip = 2,3
|
|
-- tip = 2,3 daca nu exista cantitate retur < 0 + lista articole retur din rulaj
|
|
-- pentru ca la conpress group statea sa parcurga tot rulajul de la tip = 1, chiar daca v_cante nu era < 0
|
|
|
|
-- 16.06.2015
|
|
-- marius.mutu
|
|
-- modifica_date_factura
|
|
-- + id_facturare,listare_detaliata
|
|
|
|
-- 01.02.2016
|
|
-- marius.mutu
|
|
-- cumuleaza_note_act
|
|
-- sterg inregistrarile cu suma 0 doar daca am inregistrari cu suma <> 0
|
|
-- altfel nu se inregistreaza nimic in Reg. Jurnal ACT, doar in RUL si VANZARI/VANZARI_DETALII
|
|
|
|
-- getAnaliticK: tratare caz cota TVA 1.24, 1.20, 1.19
|
|
|
|
-- 18.03.2016
|
|
-- marius.mutu
|
|
-- descarca_gestiune: PROC_TVAV_ORIG se ia din STOC daca este gestiune mf la pret de vz sau stoc.proc_tvav <> 0
|
|
-- in loc sa se calculeze pack_sesiune.tva2proctva
|
|
|
|
-- 14.07.2016
|
|
-- marius.mutu
|
|
-- modifica_date_factura - adaugare parametru V_TEXT_ADITIONAL
|
|
|
|
-- 08.12.2016
|
|
-- marius.mutu
|
|
-- cursor_avize - factura din aviz. se iau si cantitatile negative, nu numai cele pozitive (avize de retur)
|
|
|
|
-- 12.12.2016
|
|
-- marius.mutu
|
|
-- scrie_factura_avize - daca articolele aveau discount unitar si nu era evidentiat distinct contabil, valoarea 4111 = 418 era (pret diminuat cu discount) - discount
|
|
-- am facut discountul = 0 pe ramura cu discount neevidentiat in notele contabile, dupa ce l-am extras din pret.
|
|
|
|
-- 03.02.2017
|
|
-- marius.mutu
|
|
-- cursor_preturi - la factura in valuta nu aducea articole discount 667. nu stiu de ce. la facturile in lei nu era restrictia.
|
|
|
|
-- 03.02.2017
|
|
-- marius.mutu
|
|
-- cursor_preturi - aviz de expeditie - se afiseaza si articole negestionabile
|
|
|
|
-- 20.03.2017
|
|
-- marius.mutu
|
|
-- denormalizare vanzari - completare date redundante pentru a nu se mai selecta de fiecare data pentru fact_vfacturi
|
|
-- scrie_incasari - se completeaza pack_Facturi.ntip_doc_incasare CHITANTA/BON FISCAL
|
|
-- scrie_in_vanzari - completare vanzari cu sume calculate din vanzari_detalii si act pentru a nu se mai calcula la fiecare selectie din fact_vfacturi
|
|
-- scrie_corespondente_vanzari - completare vanzari.avize cu seria/nr avize facturate pentru a nu se mai selecta din fact_vdetalii_avize
|
|
|
|
-- 11.10.2017
|
|
-- marius.mutu
|
|
-- pack_facturare.getAnaliticK - se folosesc optiuni noi pentru fiecare cota TVA
|
|
|
|
-- 27.10.2017
|
|
-- marius.mutu
|
|
-- pack_facturare.descarca_gestiune - vanzare de articole fara stoc - analiticul se completeaza conform configurarilor
|
|
|
|
-- 16.03.2018
|
|
-- marius.mutu
|
|
-- scrie_factura2 - tratare aviz retur tip = 24
|
|
|
|
-- 05.02.2019
|
|
-- marius.mutu
|
|
-- scrie_in_vanzari, finalizeaza_avize_lucrare: corectate vanzari.total_fara_tva si total_cu_tva pe ramura cu seturi
|
|
|
|
-- 21.03.2019
|
|
-- marius.mutu
|
|
-- citeste_setari_document: adaugat FACTURA ROAACNPRO 51
|
|
|
|
-- 10.04.2019
|
|
-- marius.mutu
|
|
-- adauga_articol_factura_stoc, adauga_articol_factura_deviz - completare VANZARI_DETALII_TEMP.ID_TEMP CU 0 (NOT NULL)
|
|
-- scrie_in_vanzari tip = 51 factura ACN
|
|
|
|
-- 09.08.2019
|
|
-- marius.mutu
|
|
-- adauga_articol_factura_deviz : V_ID_CTR
|
|
-- scrie_in_vanzari: VANZARI_DETALII_TEMP.ID_JTVA_COLOANA_EX
|
|
|
|
-- 28.08.2019
|
|
-- marius.mutu
|
|
-- finalizeaza_factura - completez id_fact
|
|
-- scrie_in_vanzari - completeaza data_scad, id_ctr
|
|
-- scrie_in_vanzari - completeaza id_valuta, curs, multiplicator. nu stiu de ce nu se completau
|
|
|
|
-- 02.09.2019
|
|
-- marius.mutu
|
|
-- scrie_in_vanzari - completeaza vanzari.valval, tvaval, totval
|
|
|
|
-- 29.10.2019
|
|
-- marius.mutu
|
|
-- sterge_factura pack_acn.sterge_vanzare pentru tip = 51 (ROAACNPRO)
|
|
-- initializeaza_date_factura, scrie_in_vanzari - completare vanzari.tip_factura, id_beneficiar
|
|
|
|
-- 06.11.2019
|
|
-- marius.mutu
|
|
-- scrie_nota, scrie_tva, verifica_totaluri - tratare cont 709 (rabat), la fel ca si 667 (discount)
|
|
|
|
-- 03.07.2020
|
|
-- marius.mutu
|
|
-- initializeaza_date_factura se initializeaza cu NULL ntip_doc_incasare, nsuma_incasare, clistaid_avize
|
|
-- ramaneau completate pe facturile urmatoare de la o factura anterioara
|
|
|
|
-- 28.01.2021
|
|
-- marius.mutu
|
|
-- MODIFICARE PACK_FACTURARE.SCRIE_PROFORMA, STERGE_PROFORMA sa scrie in VANZARI
|
|
-- + PACK_FACTURARE.cursor_retur_document = PACK_FACTURARE.cursor_retur + parametrul eproforma
|
|
|
|
-- 26.03.2021
|
|
-- marius.mutu
|
|
-- cursor_retur_document + parametru v_copiere, pentru atributul gestionabil
|
|
|
|
-- 05.07.2021
|
|
-- marius.mutu
|
|
-- scrie_in_vanzari - text aditional repl chr(170) cu chr(13) + chr(10) - bug da eroare la CHR(13) + chr(10)
|
|
|
|
-- 27.07.2021
|
|
-- marius.mutu
|
|
-- cursor_retur_document - completat cu coloane din vanzari_detalii
|
|
|
|
-- 22.11.2021
|
|
-- marius.mutu
|
|
-- scrie_incasare2 - INCASARE CARD 5125 IN LOC DE 5312
|
|
-- citeste_setari_document
|
|
|
|
-- 26.11.2021
|
|
-- marius.mutu
|
|
-- scrie_incasari - initializare ntip_doc_incasare cu ultimul tip de incasare folosit
|
|
|
|
-- 04.03.2022
|
|
-- scrie_tva - explicatia in registrul jurnal fara 'TVA '
|
|
|
|
-- 22.03.2022
|
|
-- ADAUGA_ARTICOL_FACTURA, ADAUGA_ARTICOL_FACTURA_DEVIZ, ADAUGA_ARTICOL_FACTURA_STOC, adauga_rata_factura, cumuleaza_note_act + V_TAXCODE (COD TAXA SAFT)
|
|
-- incasari - SAFT ACT.paymentcode
|
|
|
|
-- 27.03.2022
|
|
-- ADAUGA_ARTICOL_FACTURA, ADAUGA_ARTICOL_FACTURA_DEVIZ, ADAUGA_ARTICOL_FACTURA_STOC, adauga_rata_factura, TAXCODE NULL
|
|
|
|
-- 09.06.2022
|
|
-- SCRIE_TVA: COMPLETEAZA TAXCODE PE LINIA DE TVA
|
|
|
|
-- 24.06.2022
|
|
-- modifica_date_factura - COMPLETARE VANZARI.TIP_SAFT
|
|
|
|
-- 27.01.2023
|
|
-- scrie_in_vanzari corectare calcul valori in lei, daca factura este in valuta, total_ron = sum(pret_ron * cantitatea), in loc de total_valuta * curs
|
|
|
|
-- 08.02.2023
|
|
-- modifica_date_factura + efactura
|
|
|
|
-- 22.02.2023
|
|
-- scrie_in_vanzari corectare calcul valori in lei, daca factura este in valuta sau invoice, total_ron = sum(pret_ron * cantitatea), in loc de total_valuta * curs
|
|
|
|
-- 08.05.2023
|
|
-- verifica_total_document - completare TAXCODE SAFT
|
|
-- scrie_nota - tratare 512x - la incasarea cu cardul 5125 se aduna si suma de plata la total, apoi se scadea la verifica_total_document
|
|
|
|
-- 22.05.2023
|
|
-- modifica_explicatie_articol - completare TAXCODE SAFT
|
|
|
|
-- 13.06.2023
|
|
-- scriere ID_JTVA_COLOANA, SAFT.TAXCODE in RUL
|
|
-- descarca_gestiune + ID_JTVA_COLOANA, TAXCODE
|
|
-- facturare_articole2, contabilizeaza_articol > descarca_gestiune
|
|
|
|
-- finalizeaza_factura - corectie vanzari.id_Fact daca factura este incasata
|
|
|
|
-- 09.10.2023
|
|
-- + getSoldClient
|
|
|
|
-- 09.11.2023
|
|
-- verifica_total_document - se exclud notele 512x = 4111 din valoarea facturii
|
|
|
|
-- 17.11.2023
|
|
-- adaugat tipul 52 factura fiscala in valuta pe contract
|
|
-- scrie_factura2
|
|
|
|
-- 22.11.2023
|
|
-- getSoldClient - nu mai scad soldul 419. Presupun ca pentru avansuri 419 se emit facturi de avans 4111 si se storneaza avansul 419 pe factura finala
|
|
|
|
-- 10.12.2023
|
|
-- descarca_gestiune - 345: pun 711 = 345 valoare de achizitie, in loc de valoarea de vanzare
|
|
-- descarca_gestiune - 345: am pus 348 = 345, in loc de 348 = 711
|
|
-- descarca_gestiune - 345: Se inregistreaza 345 = 348, 348 = 345 doar daca lnDescarcare345FaraAdaos = 0
|
|
|
|
-- 21.12.2023 scrie_nota - scrie_discount se completeaza taxcode pe linia 667 = 4111
|
|
|
|
-- 15.01.2024
|
|
-- scrie_discount - corectie note 667 = 4111 pentru bonuri fiscale magazine, tip 43, scria 667 = 418
|
|
|
|
-- 23.04.2024
|
|
-- GetAnaliticByGrupUtilizatori: se tine cont de inregistrarile sterse
|
|
|
|
-- 04.06.2024
|
|
-- cursor_gestiuni_articol, adauga_articol_factura, adauga_articol_factura_stoc, adauga_articol_factura_deviz, scrie_in_vanzari + LOT
|
|
|
|
-- 18.10.2024
|
|
-- initializeaza_date_factura.tip_saft
|
|
|
|
-- 23.06.2025
|
|
-- pack_facturare.modifica_date_factura - se pot modifica data_act, data_scad, numar_Act, serie_act
|
|
|
|
-- 17.09.2025
|
|
-- contabilizeaza_articol - limitare explicatie la 100 caractere
|
|
-- scrie_corespondente_vanzari - VANZARI.AVIZE maxim 1000 caractere
|
|
|
|
PROCEDURE verificare_setari_program(V_ID_UTIL IN NUMBER,
|
|
V_MESAJ OUT VARCHAR2) IS
|
|
V_NR_INREGISTRARI NUMBER(5);
|
|
V_ID_TIPENTITATE SERII_TIPENTITATI.ID_TIPENTITATE%TYPE;
|
|
V_LUNA DATE;
|
|
BEGIN
|
|
V_MESAJ := NULL;
|
|
V_LUNA := to_date(pack_sesiune.getan() || pack_sesiune.getluna(),
|
|
'YYYYMM');
|
|
|
|
-- verificare drepturi politici de preturi
|
|
SELECT COUNT(ID_POLITICA)
|
|
INTO V_NR_INREGISTRARI
|
|
FROM UTILIZATORI_ROL_INTERN A
|
|
LEFT JOIN POLITICI_GRUPURI B
|
|
ON A.ID_GRUP = B.ID_GRUP
|
|
WHERE A.STERS = 0
|
|
AND B.STERS = 0
|
|
AND A.ID_UTIL = V_ID_UTIL;
|
|
|
|
IF V_NR_INREGISTRARI = 0 THEN
|
|
V_MESAJ := 'Nu aveti drepturi pe politicile de preturi! (ROAPRETURI)';
|
|
END IF;
|
|
--
|
|
-- verificare setari bonuri
|
|
SELECT ID_TIPENTITATE
|
|
INTO V_ID_TIPENTITATE
|
|
FROM SERII_TIPDOC
|
|
WHERE ID_TIPDOC = pack_facturare.nid_tipbon;
|
|
|
|
CASE
|
|
WHEN V_ID_TIPENTITATE = 1 THEN
|
|
-- pe gestiuni
|
|
SELECT COUNT(B.ID_GESTIUNE)
|
|
INTO V_NR_INREGISTRARI
|
|
FROM GEST_CORESP_UTIL_GRUPE A
|
|
LEFT JOIN GEST_CORESP_GRUPE_GESTIUNI B
|
|
ON A.ID_GRUPE = B.ID_GRUPE
|
|
WHERE A.STERS = 0
|
|
AND B.STERS = 0
|
|
AND A.ID_UTIL = V_ID_UTIL
|
|
AND B.ID_GESTIUNE IN
|
|
(SELECT ID_ENTITATE
|
|
FROM PLAJE_NUMERE
|
|
WHERE STERS = 0
|
|
AND INACTIV = 0
|
|
AND ID_TIPDOC = pack_facturare.nid_tipbon
|
|
AND ID_TIPENTITATE = V_ID_TIPENTITATE
|
|
AND V_LUNA BETWEEN DATAI AND DATAS);
|
|
|
|
IF V_NR_INREGISTRARI = 0 THEN
|
|
V_MESAJ := V_MESAJ || CHR(13) || CHR(10) ||
|
|
'Nu aveti drepturi pe gestiunile pentru care sunt configurate seriile de bonuri! (ROAGEST)';
|
|
END IF;
|
|
|
|
WHEN V_ID_TIPENTITATE = 2 THEN
|
|
-- o singura serie
|
|
V_MESAJ := V_MESAJ;
|
|
|
|
WHEN V_ID_TIPENTITATE = 3 THEN
|
|
-- pe gestionar
|
|
SELECT COUNT(ID_PLAJA)
|
|
INTO V_NR_INREGISTRARI
|
|
FROM PLAJE_NUMERE
|
|
WHERE STERS = 0
|
|
AND INACTIV = 0
|
|
AND ID_TIPDOC = pack_facturare.nid_tipbon
|
|
AND ID_TIPENTITATE = V_ID_TIPENTITATE
|
|
AND V_LUNA BETWEEN DATAI AND DATAS;
|
|
|
|
IF V_NR_INREGISTRARI = 0 THEN
|
|
V_MESAJ := V_MESAJ || CHR(13) || CHR(10) ||
|
|
'Nu aveti setata plaja de numere pentru bonuri! (ROAGEST)';
|
|
END IF;
|
|
|
|
ELSE
|
|
V_MESAJ := V_MESAJ || CHR(13) || CHR(10) ||
|
|
'Setare incorecta pentru seriile de bonuri! (ROAGEST)';
|
|
END CASE;
|
|
|
|
-- verificare drepturi gestiuni
|
|
SELECT COUNT(ID_GESTIUNE)
|
|
INTO V_NR_INREGISTRARI
|
|
FROM GEST_CORESP_UTIL_GRUPE A
|
|
LEFT JOIN GEST_CORESP_GRUPE_GESTIUNI B
|
|
ON A.ID_GRUPE = B.ID_GRUPE
|
|
WHERE A.STERS = 0
|
|
AND B.STERS = 0
|
|
AND A.ID_UTIL = V_ID_UTIL;
|
|
|
|
IF V_NR_INREGISTRARI = 0 THEN
|
|
V_MESAJ := V_MESAJ || CHR(13) || CHR(10) ||
|
|
'Nu aveti drepturi pe gestiuni! (ROAGEST)';
|
|
END IF;
|
|
|
|
-- verificare curs valutar
|
|
SELECT COUNT(ID_CURS)
|
|
INTO V_NR_INREGISTRARI
|
|
FROM CURS A
|
|
WHERE A.STERS = 0
|
|
AND A.DATA <= TRUNC(SYSDATE)
|
|
AND A.DATA2 >= TRUNC(SYSDATE);
|
|
|
|
IF V_NR_INREGISTRARI = 0 THEN
|
|
V_MESAJ := V_MESAJ || CHR(13) || CHR(10) ||
|
|
'Nu este setat cursul valutar pentru ziua de azi!';
|
|
END IF;
|
|
|
|
IF V_MESAJ IS NOT NULL THEN
|
|
V_MESAJ := V_MESAJ || CHR(13) || CHR(10) || CHR(13) || CHR(10) ||
|
|
'Faceti setarile necesare! ';
|
|
END IF;
|
|
|
|
END verificare_setari_program;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_facturare(V_ID_UTIL IN NUMBER) IS
|
|
V_DENUMIRE_POL CRM_POLITICI_PRETURI.NUME_LISTA_PRETURI%TYPE;
|
|
BEGIN
|
|
pack_facturare.initializeaza_moneda_nationala();
|
|
/* pack_facturare.nzecimale_pretval := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PVAL');
|
|
pack_facturare.nzecimale_sumaval := pack_facturare.nzecimale_pretval;
|
|
pack_facturare.nzecimale_preta := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PPRET');
|
|
pack_facturare.nzecimale_sumaa := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PC');
|
|
pack_facturare.nzecimale_pretv := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PPRETV');
|
|
pack_facturare.nzecimale_sumav := pack_facturare.nzecimale_sumaa;*/
|
|
pack_facturare.nzecimale_procent := 3;
|
|
pack_facturare.citeste_setari_pol_pret(1,
|
|
V_ID_UTIL,
|
|
pack_facturare.nid_politica_stoc,
|
|
V_DENUMIRE_POL);
|
|
END initializeaza_facturare;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_seturi_temp IS
|
|
begin
|
|
DELETE FROM VANZARI_SETURI_TEMP;
|
|
end initializeaza_seturi_temp;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_date_factura(V_DATA_IREG IN DATE,
|
|
V_ID_FDOC IN NUMBER,
|
|
V_DATA_ACT IN DATE,
|
|
V_DATA_SCADENTA IN DATE,
|
|
V_SERIE_FACTURA IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_CLIENT IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_RESPONSABIL IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_DESCRIERE IN VARCHAR2,
|
|
V_TIP IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_DATA_CURS IN DATE,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_TVA_INCASARE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER) IS
|
|
begin
|
|
-- pentru compatibilitate cu restul aplicatiilor care apeleaza fara v_explicatia4, v_id_ordl
|
|
pack_facturare.initializeaza_date_factura(V_DATA_IREG,
|
|
V_ID_FDOC,
|
|
V_DATA_ACT,
|
|
V_DATA_SCADENTA,
|
|
V_SERIE_FACTURA,
|
|
V_NUMAR_ACT,
|
|
V_ID_CLIENT,
|
|
V_ID_LUCRARE,
|
|
V_ID_SECTIE,
|
|
V_ID_VENCHELT,
|
|
V_ID_RESPONSABIL,
|
|
NULL,
|
|
NULL,
|
|
V_LISTAID,
|
|
V_DESCRIERE,
|
|
V_TIP,
|
|
V_ID_SET,
|
|
V_DATA_CURS,
|
|
V_ID_VALUTA,
|
|
V_IN_VALUTA,
|
|
V_TVA_INCASARE,
|
|
V_ID_SUCURSALA,
|
|
V_ID_UTIL,
|
|
NULL,
|
|
NULL,
|
|
NULL);
|
|
end initializeaza_date_factura;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_date_factura(V_DATA_IREG IN DATE,
|
|
V_ID_FDOC IN NUMBER,
|
|
V_DATA_ACT IN DATE,
|
|
V_DATA_SCADENTA IN DATE,
|
|
V_SERIE_FACTURA IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_CLIENT IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_RESPONSABIL IN NUMBER,
|
|
V_EXPLICATIA4 IN VARCHAR2,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_DESCRIERE IN VARCHAR2,
|
|
V_TIP IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_DATA_CURS IN DATE,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_TVA_INCASARE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER) IS
|
|
BEGIN
|
|
-- pentru compatibilitate cu restul aplicatiilor care apeleaza fara v_id_ordl
|
|
pack_facturare.initializeaza_date_factura(V_DATA_IREG,
|
|
V_ID_FDOC,
|
|
V_DATA_ACT,
|
|
V_DATA_SCADENTA,
|
|
V_SERIE_FACTURA,
|
|
V_NUMAR_ACT,
|
|
V_ID_CLIENT,
|
|
V_ID_LUCRARE,
|
|
V_ID_SECTIE,
|
|
V_ID_VENCHELT,
|
|
V_ID_RESPONSABIL,
|
|
V_EXPLICATIA4,
|
|
NULL,
|
|
V_LISTAID,
|
|
V_DESCRIERE,
|
|
V_TIP,
|
|
V_ID_SET,
|
|
V_DATA_CURS,
|
|
V_ID_VALUTA,
|
|
V_IN_VALUTA,
|
|
V_TVA_INCASARE,
|
|
V_ID_SUCURSALA,
|
|
V_ID_UTIL,
|
|
NULL,
|
|
NULL,
|
|
NULL);
|
|
END initializeaza_date_factura;
|
|
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_date_factura(V_DATA_IREG IN DATE,
|
|
V_ID_FDOC IN NUMBER,
|
|
V_DATA_ACT IN DATE,
|
|
V_DATA_SCADENTA IN DATE,
|
|
V_SERIE_FACTURA IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_CLIENT IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_RESPONSABIL IN NUMBER,
|
|
V_EXPLICATIA4 IN VARCHAR2,
|
|
V_ID_ORDL IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_DESCRIERE IN VARCHAR2,
|
|
V_TIP IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_DATA_CURS IN DATE,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_TVA_INCASARE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER) IS
|
|
BEGIN
|
|
-- pentru compatibilitate cu restul aplicatiilor care apeleaza fara v_tip_factura, v_id_beneficiar
|
|
pack_facturare.initializeaza_date_factura(V_DATA_IREG,
|
|
V_ID_FDOC,
|
|
V_DATA_ACT,
|
|
V_DATA_SCADENTA,
|
|
V_SERIE_FACTURA,
|
|
V_NUMAR_ACT,
|
|
V_ID_CLIENT,
|
|
V_ID_LUCRARE,
|
|
V_ID_SECTIE,
|
|
V_ID_VENCHELT,
|
|
V_ID_RESPONSABIL,
|
|
V_EXPLICATIA4,
|
|
V_ID_ORDL,
|
|
V_LISTAID,
|
|
V_DESCRIERE,
|
|
V_TIP,
|
|
V_ID_SET,
|
|
V_DATA_CURS,
|
|
V_ID_VALUTA,
|
|
V_IN_VALUTA,
|
|
V_TVA_INCASARE,
|
|
V_ID_SUCURSALA,
|
|
V_ID_UTIL,
|
|
NULL,
|
|
NULL,
|
|
NULL);
|
|
END initializeaza_date_factura;
|
|
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_date_factura(V_DATA_IREG IN DATE,
|
|
V_ID_FDOC IN NUMBER,
|
|
V_DATA_ACT IN DATE,
|
|
V_DATA_SCADENTA IN DATE,
|
|
V_SERIE_FACTURA IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_CLIENT IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_RESPONSABIL IN NUMBER,
|
|
V_EXPLICATIA4 IN VARCHAR2,
|
|
V_ID_ORDL IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_DESCRIERE IN VARCHAR2,
|
|
V_TIP IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_DATA_CURS IN DATE,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_TVA_INCASARE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_TIP_FACTURA IN NUMBER,
|
|
V_ID_BENEFICIAR IN NUMBER,
|
|
V_TIP_SAFT IN NUMBER DEFAULT 380) IS
|
|
BEGIN
|
|
DELETE FROM VANZARI_DETALII_TEMP;
|
|
pack_facturare.nid_act := 0;
|
|
pack_facturare.ntotftva := 0;
|
|
pack_facturare.ntottva := 0;
|
|
pack_facturare.ndifftva := 0;
|
|
pack_facturare.ndiftva := 0;
|
|
pack_facturare.nid_fact := -1;
|
|
|
|
pack_facturare.nfactavizcust := 0;
|
|
pack_facturare.nid_util := V_ID_UTIL;
|
|
pack_facturare.nid_sucursala := V_ID_SUCURSALA;
|
|
|
|
pack_facturare.initializeaza_facturare(pack_facturare.nid_util);
|
|
pack_facturare.initializeaza_seturi_temp();
|
|
|
|
v_date_gestiune.id_gestiune := NULL;
|
|
v_date_gestiune.id_tip_gest := NULL;
|
|
v_date_gestiune.cont := NULL;
|
|
v_date_gestiune.acont := NULL;
|
|
|
|
pack_facturare.ndiscount_evidentiat := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'DISCOUNTEVIDENTIAT');
|
|
pack_facturare.cascd := NULL;
|
|
pack_facturare.cascc := NULL;
|
|
pack_facturare.nid_jtva_coloana := NULL;
|
|
pack_facturare.nTaxCode := NULL;
|
|
pack_facturare.ddata_curs := V_DATA_CURS;
|
|
pack_facturare.ddata_ireg := V_DATA_IREG;
|
|
pack_facturare.nid_fdoc := V_ID_FDOC;
|
|
pack_facturare.ddata_act := V_DATA_ACT;
|
|
pack_facturare.ddata_scadenta := V_DATA_SCADENTA;
|
|
pack_facturare.cserie_act := TRIM(V_SERIE_FACTURA);
|
|
pack_facturare.nnumar_act := V_NUMAR_ACT;
|
|
IF V_TIP IN (23, 25, 27, 30, 41, -6) THEN
|
|
pack_facturare.nid_gestiune_sursa := V_ID_CLIENT;
|
|
pack_facturare.nid_part := 0;
|
|
ELSE
|
|
pack_facturare.nid_gestiune_sursa := 0;
|
|
pack_facturare.nid_part := V_ID_CLIENT;
|
|
END IF;
|
|
pack_facturare.nid_lucrare := nvl(V_ID_LUCRARE, 0);
|
|
pack_facturare.nid_venchelt := V_ID_VENCHELT;
|
|
pack_facturare.nid_sectie_stoc := V_ID_SECTIE;
|
|
pack_facturare.nid_responsabil := V_ID_RESPONSABIL;
|
|
pack_facturare.nid_ordl := V_ID_ORDL;
|
|
pack_facturare.cexplicatia4 := V_EXPLICATIA4;
|
|
pack_facturare.nid_set := V_ID_SET;
|
|
pack_facturare.ntip := V_TIP;
|
|
pack_facturare.clistaid := V_LISTAID;
|
|
pack_facturare.cdescriere := V_DESCRIERE;
|
|
pack_facturare.nproc_tva_max := -1;
|
|
pack_facturare.clista_cursuri := NULL;
|
|
pack_facturare.nperechec := 0;
|
|
pack_facturare.nid_factc := 0;
|
|
pack_facturare.nid_partc := 0;
|
|
pack_facturare.nan := EXTRACT(YEAR FROM V_DATA_IREG);
|
|
pack_facturare.nluna := EXTRACT(MONTH FROM V_DATA_IREG);
|
|
pack_facturare.ntva_incasare := V_TVA_INCASARE;
|
|
pack_facturare.cserie_act_incasare := NULL;
|
|
pack_facturare.nnumar_act_incasare := NULL;
|
|
|
|
pack_facturare.ntip_doc_incasare := NULL;
|
|
pack_facturare.nsuma_incasare := NULL;
|
|
pack_facturare.clistaid_avize := NULL;
|
|
|
|
pack_facturare.verifica_analitice378();
|
|
|
|
pack_facturare.nin_valuta := V_IN_VALUTA;
|
|
pack_facturare.nid_valuta := V_ID_VALUTA;
|
|
|
|
IF pack_facturare.ntip IN (3, 21, 28, 42, 47) THEN
|
|
-- facturare de pe comanda
|
|
-- aviz de pe comanda
|
|
pack_facturare.nid_comanda := to_number(pack_facturare.clistaid);
|
|
ELSE
|
|
pack_facturare.nid_comanda := NULL;
|
|
END IF;
|
|
|
|
pack_facturare.ntip_factura := V_TIP_FACTURA;
|
|
pack_facturare.nid_beneficiar := V_ID_BENEFICIAR;
|
|
pack_facturare.ntip_saft := V_TIP_SAFT;
|
|
|
|
END initializeaza_date_factura;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_setari_facturare IS
|
|
BEGIN
|
|
BEGIN
|
|
SELECT TO_NUMBER(NVL(VARVALUE, '0'))
|
|
INTO pack_facturare.nscadere_stoc
|
|
FROM OPTIUNI
|
|
WHERE PROGRAM = pack_facturare.cnume_program
|
|
AND VARNAME = 'SCADERESTOC';
|
|
|
|
IF pack_facturare.nscadere_stoc = 1 AND pack_facturare.ntip <> 4 THEN
|
|
SELECT MAX(NVL(IN_STOC, 0))
|
|
INTO pack_facturare.nscadere_stoc
|
|
FROM VANZARI_DETALII_TEMP
|
|
WHERE ID_RATA IS NULL;
|
|
|
|
IF pack_facturare.nscadere_stoc = 1 THEN
|
|
pack_serii_numere.aloca_numar(pack_facturare.nid_tipbon,
|
|
NULL,
|
|
pack_facturare.nid_gestiune_sursa,
|
|
pack_facturare.nid_util,
|
|
pack_facturare.nid_sucursala,
|
|
pack_facturare.nnumar_bon);
|
|
END IF;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
pack_facturare.nscadere_stoc := 0;
|
|
END;
|
|
END initializeaza_setari_facturare;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_date_gestiune(V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_TIPGEST IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_ACONT IN VARCHAR2) IS
|
|
BEGIN
|
|
v_date_gestiune.id_gestiune := V_ID_GESTIUNE;
|
|
v_date_gestiune.id_tip_gest := V_ID_TIPGEST;
|
|
v_date_gestiune.cont := V_CONT;
|
|
v_date_gestiune.acont := V_ACONT;
|
|
END initializeaza_date_gestiune;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE citeste_setari_document(V_TIP IN NUMBER,
|
|
V_ID_FDOC OUT NUMBER,
|
|
V_FDOC OUT VARCHAR2) IS
|
|
V_VARNAME OPTIUNI.VARNAME%TYPE;
|
|
BEGIN
|
|
CASE
|
|
WHEN V_TIP BETWEEN 1 AND 20 OR V_TIP BETWEEN - 4 AND - 1 OR
|
|
V_TIP IN (-8, -11, -12, 45, 48, 49, 50, 51, 52) THEN
|
|
-- id_fdoc_factura
|
|
V_VARNAME := 'ID_FDOC_FACT';
|
|
WHEN V_TIP IN (24, 41, -6, -7, -13) THEN
|
|
-- id_fdoc_aviz_retur
|
|
V_VARNAME := 'ID_FDOC_AVIZ_RETUR';
|
|
WHEN V_TIP BETWEEN 21 AND 40 OR V_TIP in (47, 42, -9, -10) THEN
|
|
-- id_fdoc_aviz
|
|
V_VARNAME := 'ID_FDOC_AVIZ';
|
|
WHEN V_TIP = 0 THEN
|
|
-- id_fdoc_compensare
|
|
V_VARNAME := 'ID_FDOC_COMPENSARE';
|
|
WHEN V_TIP = -100 THEN
|
|
-- id_fdoc_chitanta
|
|
V_VARNAME := 'ID_FDOC_CHITANTA';
|
|
WHEN V_TIP = -101 THEN
|
|
-- id_fdoc_bonfiscal
|
|
V_VARNAME := 'ID_FDOC_BONFISCAL';
|
|
WHEN V_TIP = -102 THEN
|
|
-- id_fdoc_proforma
|
|
V_VARNAME := 'ID_FDOC_PROFORMA';
|
|
WHEN V_TIP = -103 THEN
|
|
-- id_fdoc_card
|
|
V_VARNAME := 'ID_FDOC_CARD';
|
|
ELSE
|
|
-- id_fdoc_factura
|
|
V_VARNAME := 'ID_FDOC_FACT';
|
|
END CASE;
|
|
|
|
BEGIN
|
|
SELECT TO_NUMBER(A.VARVALUE), B.FEL_DOCUMENT
|
|
INTO V_ID_FDOC, V_FDOC
|
|
FROM OPTIUNI A
|
|
LEFT JOIN NOM_FDOC B
|
|
ON TO_NUMBER(A.VARVALUE) = B.ID_FDOC
|
|
WHERE A.VARNAME = V_VARNAME
|
|
AND (A.PROGRAM = pack_facturare.cnume_program OR
|
|
A.PROGRAME LIKE '%' || pack_facturare.cnume_program || '%')
|
|
AND B.STERS = 0;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_FDOC := NULL;
|
|
V_FDOC := '';
|
|
END;
|
|
END citeste_setari_document;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE citeste_setari_partener(V_TIP IN NUMBER,
|
|
V_ID_PART OUT NUMBER,
|
|
V_DENUMIRE OUT VARCHAR2) IS
|
|
V_VARNAME OPTIUNI.VARNAME%TYPE;
|
|
BEGIN
|
|
CASE
|
|
WHEN V_TIP = 0 THEN
|
|
-- id_part_banca_comp
|
|
V_VARNAME := 'ID_PART_BANCA_COMP';
|
|
WHEN V_TIP = 1 THEN
|
|
V_VARNAME := 'ID_PART_CASA';
|
|
END CASE;
|
|
|
|
BEGIN
|
|
SELECT TO_NUMBER(A.VARVALUE), B.DENUMIRE
|
|
INTO V_ID_PART, V_DENUMIRE
|
|
FROM OPTIUNI A
|
|
LEFT JOIN NOM_PARTENERI B
|
|
ON TO_NUMBER(A.VARVALUE) = B.ID_PART
|
|
WHERE A.PROGRAM = pack_facturare.cnume_program
|
|
AND A.VARNAME = V_VARNAME
|
|
AND B.STERS = 0;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_PART := NULL;
|
|
V_DENUMIRE := '';
|
|
END;
|
|
END citeste_setari_partener;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE citeste_setari_pol_pret(V_TIP IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_POL OUT NUMBER,
|
|
V_DENUMIRE OUT VARCHAR2) IS
|
|
BEGIN
|
|
BEGIN
|
|
CASE
|
|
WHEN V_TIP IN (23, 30, 41) THEN
|
|
SELECT TO_NUMBER(A.VARVALUE), B.NUME
|
|
INTO V_ID_POL, V_DENUMIRE
|
|
FROM OPTIUNI A
|
|
LEFT JOIN CRM_VPOLPRETCURUTIL B
|
|
ON TO_NUMBER(A.VARVALUE) = B.ID_POL
|
|
WHERE A.PROGRAM = pack_facturare.cnume_program
|
|
AND A.VARNAME = 'ID_POL_PRET_TR'
|
|
AND B.ID_UTIL = V_ID_UTIL;
|
|
WHEN V_TIP = 1 THEN
|
|
SELECT TO_NUMBER(A.VARVALUE), B.NUME
|
|
INTO V_ID_POL, V_DENUMIRE
|
|
FROM OPTIUNI A
|
|
LEFT JOIN CRM_VPOLPRETCURUTIL B
|
|
ON TO_NUMBER(A.VARVALUE) = B.ID_POL
|
|
WHERE A.PROGRAM = pack_facturare.cnume_program
|
|
AND A.VARNAME = 'ID_POL_PRET_STOC'
|
|
AND B.ID_UTIL = V_ID_UTIL;
|
|
WHEN V_TIP IN (48, 49) THEN
|
|
SELECT TO_NUMBER(A.VARVALUE), B.NUME
|
|
INTO V_ID_POL, V_DENUMIRE
|
|
FROM OPTIUNI A
|
|
LEFT JOIN CRM_VPOLPRETCURUTIL B
|
|
ON TO_NUMBER(A.VARVALUE) = B.ID_POL
|
|
WHERE A.PROGRAM = pack_facturare.cnume_program
|
|
AND A.VARNAME = 'IDPOLPRETFACTK'
|
|
AND B.ID_UTIL = V_ID_UTIL;
|
|
END CASE;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_POL := NULL;
|
|
V_DENUMIRE := '';
|
|
END;
|
|
END citeste_setari_pol_pret;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE genereaza_numar_proforma(V_NR_PROFORMA OUT NUMBER) IS
|
|
BEGIN
|
|
pack_serii_numere.dezaloca_numar(pack_facturare.nid_tipfactura);
|
|
|
|
SELECT SEQ_NR_PROFORME.NEXTVAL INTO V_NR_PROFORMA FROM DUAL;
|
|
|
|
pack_facturare.nnumar_act := V_NR_PROFORMA;
|
|
END genereaza_numar_proforma;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE completare_politica_stoc IS
|
|
BEGIN
|
|
IF pack_facturare.nid_politica_stoc IS NOT NULL THEN
|
|
MERGE INTO CRM_POLITICI_PRET_ART A
|
|
USING (SELECT ID_ARTICOL
|
|
FROM NOM_ARTICOLE
|
|
WHERE STERS = 0
|
|
AND INACTIV = 0
|
|
AND IN_STOC = 1) B
|
|
ON (A.ID_POL = pack_facturare.nid_politica_stoc AND A.ID_ARTICOL = B.ID_ARTICOL)
|
|
WHEN NOT MATCHED THEN
|
|
INSERT
|
|
(ID_POL, ID_ARTICOL, ID_VALUTA)
|
|
VALUES
|
|
(pack_facturare.nid_politica_stoc,
|
|
B.ID_ARTICOL,
|
|
pack_facturare.nid_moneda_nationala);
|
|
|
|
UPDATE NOM_ARTICOLE
|
|
SET IN_CRM = 1
|
|
WHERE ID_ARTICOL IN
|
|
(SELECT ID_ARTICOL
|
|
FROM CRM_POLITICI_PRET_ART
|
|
WHERE STERS = 0
|
|
AND ID_POL = pack_facturare.nid_politica_stoc)
|
|
AND IN_CRM = 0;
|
|
END IF;
|
|
END completare_politica_stoc;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE modificare_politica_stoc(V_ID_POL IN NUMBER) is
|
|
BEGIN
|
|
UPDATE CRM_POLITICI_PRETURI
|
|
SET ID_VALUTA = pack_def.GetIdMonedaNationala()
|
|
WHERE ID_POL = V_ID_POL;
|
|
|
|
UPDATE CRM_POLITICI_PRET_ART
|
|
SET PRET = 0,
|
|
PRETFTVA = 0,
|
|
PRETCTVA = 0,
|
|
PROC_TVAV = NULL,
|
|
DISCOUNT_UNITAR = NULL,
|
|
ID_VALUTA = pack_def.GetIdMonedaNationala()
|
|
WHERE ID_POL = V_ID_POL;
|
|
END modificare_politica_stoc;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_preturi(V_DATA_CURS IN DATE,
|
|
V_TIP IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_ID_GESTIUNE_INIT IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
lnFacturareFaraStoc NUMBER(1) := 0;
|
|
BEGIN
|
|
pack_facturare.initializeaza_facturare(V_ID_UTIL);
|
|
|
|
pack_facturare.completare_politica_stoc();
|
|
|
|
pack_facturare.verifica_cursuri_valute(V_DATA_CURS, V_ID_UTIL);
|
|
|
|
-- FACTURARE LISTA PRETURI: se selecteaza toate articolele din lista de preturi, indiferent daca au stoc > 0
|
|
lnFacturareFaraStoc := TO_NUMBER(NVL(pack_sesiune.getoptiunefirma('RF_FACTURARE_FARA_STOC'),
|
|
'0'));
|
|
|
|
CASE
|
|
WHEN V_TIP = 45 THEN
|
|
-- factura restaurant
|
|
OPEN V_CURSOR FOR
|
|
SELECT rownum as id_c,
|
|
B.ID_ARTICOL,
|
|
NULL AS LOT,
|
|
NULL as SERIE,
|
|
A.ID_POL,
|
|
B.ID_VALUTA,
|
|
A.NUME_LISTA_PRETURI,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(F.CURS, 0) *
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(F.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
C.CODMAT,
|
|
C.CODBARE,
|
|
C.DENUMIRE,
|
|
NVL(C.UM, '') AS UM,
|
|
C.IN_STOC AS GESTIONABIL,
|
|
1 AS CANTITATE,
|
|
B.PROC_TVAV,
|
|
A.PRETURI_CU_TVA,
|
|
F.CURS,
|
|
F.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(F.CURS, 0) *
|
|
ROUND(NVL(B.PRET, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(F.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.PRET, 0), pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.PRET, 0), pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(G.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
G.NUME_VAL,
|
|
DECODE(A.ID_POL,
|
|
NVL(pack_facturare.nid_politica_stoc, A.ID_POL + 1),
|
|
1,
|
|
0) AS MODIFICABIL,
|
|
A.ID_GESTIUNE,
|
|
'371' AS CONT
|
|
FROM (select a1.id_util,
|
|
a3.id_pol,
|
|
a3.preturi_cu_tva,
|
|
a3.nume_lista_preturi,
|
|
a3.id_nota,
|
|
a6.id_gestiune
|
|
from utilizatori_rol_intern a1
|
|
left join politici_grupuri a2
|
|
on a1.id_grup = a2.id_grup
|
|
left join crm_politici_preturi a3
|
|
on a2.id_politica = a3.id_pol
|
|
left join crm_note_vanzari a4
|
|
on a3.id_nota = a4.id_nota
|
|
left join note_contabile a5
|
|
on a4.id_set = a5.id_set
|
|
left join rest_coresp_pol_gest a6
|
|
on a3.id_pol = a6.id_pol
|
|
where a1.sters = 0
|
|
and a2.sters = 0
|
|
and a3.sters = 0
|
|
and a1.id_util = V_ID_UTIL
|
|
and NVL(a5.in_valuta, 0) = 0
|
|
and least(NVL(last_day(to_date(V_AN || V_LUNA, 'YYYYMM')),
|
|
sysdate),
|
|
sysdate) between a3.datai and
|
|
NVL(a3.datas, to_date('300012', 'YYYYMM'))
|
|
and NVL(a1.ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
and nvl(a6.id_rest_locatie, 0) =
|
|
NVL(V_ID_GESTIUNE_INIT, -1)) A
|
|
LEFT JOIN CRM_POLITICI_PRET_ART B
|
|
ON A.ID_POL = B.ID_POL
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON B.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) F
|
|
ON B.ID_VALUTA = F.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE G
|
|
ON B.ID_VALUTA = G.ID_VALUTA
|
|
ORDER BY C.DENUMIRE;
|
|
WHEN V_TIP IN (1, 2) THEN
|
|
-- factura in lei
|
|
OPEN V_CURSOR FOR
|
|
SELECT rownum as id_c,
|
|
B.ID_ARTICOL,
|
|
NULL AS LOT,
|
|
NULL as SERIE,
|
|
A.ID_POL,
|
|
B.ID_VALUTA,
|
|
A.NUME_LISTA_PRETURI,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(F.CURS, 0) *
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(F.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
C.CODMAT,
|
|
C.CODBARE,
|
|
C.DENUMIRE,
|
|
NVL(C.UM, '') AS UM,
|
|
C.IN_STOC AS GESTIONABIL,
|
|
(CASE
|
|
WHEN lnFacturareFaraStoc = 1 AND E.CANTITATE < 0 THEN
|
|
0
|
|
ELSE
|
|
NVL(E.CANTITATE, 0)
|
|
END) AS CANTITATE,
|
|
B.PROC_TVAV,
|
|
A.PRETURI_CU_TVA,
|
|
F.CURS,
|
|
F.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(F.CURS, 0) *
|
|
ROUND(NVL(B.PRET, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(F.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.PRET, 0), pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.PRET, 0), pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(G.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
G.NUME_VAL,
|
|
DECODE(A.ID_POL,
|
|
NVL(pack_facturare.nid_politica_stoc, A.ID_POL + 1),
|
|
1,
|
|
0) AS MODIFICABIL
|
|
FROM (select a1.id_util,
|
|
a3.id_pol,
|
|
a3.preturi_cu_tva,
|
|
a3.nume_lista_preturi,
|
|
a3.id_nota
|
|
from utilizatori_rol_intern a1
|
|
left join politici_grupuri a2
|
|
on a1.id_grup = a2.id_grup
|
|
left join crm_politici_preturi a3
|
|
on a2.id_politica = a3.id_pol
|
|
left join crm_note_vanzari a4
|
|
on a3.id_nota = a4.id_nota
|
|
left join note_contabile a5
|
|
on a4.id_set = a5.id_set
|
|
where a1.sters = 0
|
|
and a2.sters = 0
|
|
and a3.sters = 0
|
|
and a1.id_util = V_ID_UTIL
|
|
and NVL(a5.in_valuta, 0) = 0
|
|
and least(NVL(last_day(to_date(V_AN || V_LUNA, 'YYYYMM')),
|
|
sysdate),
|
|
sysdate) between a3.datai and
|
|
NVL(a3.datas, to_date('300012', 'YYYYMM'))
|
|
and NVL(a1.ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)) A
|
|
LEFT JOIN CRM_POLITICI_PRET_ART B
|
|
ON A.ID_POL = B.ID_POL
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON B.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_ARTICOL,
|
|
SUM(CANTS + CANT - CANTE) AS CANTITATE
|
|
FROM STOC
|
|
WHERE LUNA = V_LUNA
|
|
AND AN = V_AN
|
|
AND NVL(ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
AND ID_GESTIUNE IN
|
|
(SELECT DISTINCT D1.ID_GESTIUNE
|
|
FROM GEST_CORESP_GRUPE_GESTIUNI D1
|
|
LEFT JOIN GEST_CORESP_UTIL_GRUPE D2
|
|
ON D1.ID_GRUPE = D2.ID_GRUPE
|
|
WHERE D1.STERS = 0
|
|
AND D2.STERS = 0
|
|
AND D2.ID_UTIL = V_ID_UTIL
|
|
AND NVL2(V_ID_GESTIUNE_INIT,
|
|
D1.ID_GESTIUNE,
|
|
-1) = NVL(V_ID_GESTIUNE_INIT, -1))
|
|
GROUP BY ID_ARTICOL) E
|
|
ON B.ID_ARTICOL = E.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) F
|
|
ON B.ID_VALUTA = F.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE G
|
|
ON B.ID_VALUTA = G.ID_VALUTA
|
|
WHERE (lnFacturareFaraStoc = 1 and NVL(E.CANTITATE, 0) <= 0)
|
|
OR DECODE(NVL(C.IN_STOC, 2), 1, NVL(E.CANTITATE, 0), 2, 0, 1) > 0
|
|
ORDER BY C.DENUMIRE;
|
|
|
|
WHEN V_TIP IN (5, 6, 10, 52) THEN
|
|
-- factura in valuta
|
|
OPEN V_CURSOR FOR
|
|
SELECT rownum as id_c,
|
|
A.ID_ARTICOL,
|
|
NULL AS LOT,
|
|
NULL as SERIE,
|
|
A.ID_POL,
|
|
V_ID_VALUTA AS ID_VALUTA, -- A.ID_VALUTA
|
|
A.NUME_LISTA_PRETURI,
|
|
ROUND(NVL(D.CURS, 0) *
|
|
ROUND(A.DISCOUNT_UNITAR,
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(D.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv) AS DISCOUNT_UNITAR,
|
|
ROUND(A.DISCOUNT_UNITAR, pack_sesiune.nzecimale_pretvval) AS DISCOUNT_UNITAR_VAL,
|
|
A.CODMAT,
|
|
A.CODBARE,
|
|
A.DENUMIRE,
|
|
NVL(A.UM, '') AS UM,
|
|
A.GESTIONABIL,
|
|
(CASE
|
|
WHEN lnFacturareFaraStoc = 1 AND C.CANTITATE < 0 THEN
|
|
0
|
|
ELSE
|
|
NVL(C.CANTITATE, 0)
|
|
END) AS CANTITATE,
|
|
A.PROC_TVAV,
|
|
A.PRETURI_CU_TVA,
|
|
D.CURS,
|
|
D.MULTIPLICATOR,
|
|
ROUND(NVL(D.CURS, 0) *
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) /
|
|
NVL(D.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv) AS PRET,
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) AS PRET_VAL,
|
|
1 AS TIP_VALUTA,
|
|
E.NUME_VAL
|
|
FROM FACT_VPRETURI_UTILIZATOR A
|
|
LEFT JOIN (SELECT ID_ARTICOL,
|
|
SUM(CANTS + CANT - CANTE) AS CANTITATE
|
|
FROM STOC
|
|
WHERE LUNA = V_LUNA
|
|
AND AN = V_AN
|
|
AND NVL(ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
AND ID_GESTIUNE IN
|
|
(SELECT DISTINCT A1.ID_GESTIUNE
|
|
FROM GEST_CORESP_GRUPE_GESTIUNI A1
|
|
LEFT JOIN GEST_CORESP_UTIL_GRUPE A2
|
|
ON A1.ID_GRUPE = A2.ID_GRUPE
|
|
WHERE A1.STERS = 0
|
|
AND A2.STERS = 0
|
|
AND A2.ID_UTIL = V_ID_UTIL
|
|
AND NVL2(V_ID_GESTIUNE_INIT,
|
|
A1.ID_GESTIUNE,
|
|
-1) = NVL(V_ID_GESTIUNE_INIT, -1))
|
|
GROUP BY ID_ARTICOL) C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
/* AND NVL(C.ID_RUL_AUX, 0) = 0*/
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) D
|
|
ON V_ID_VALUTA = D.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE E
|
|
ON V_ID_VALUTA = E.ID_VALUTA
|
|
WHERE A.ID_UTIL = V_ID_UTIL
|
|
-- AND A.ID_VALUTA = V_ID_VALUTA AND A.IN_VALUTA = 1
|
|
AND ((A.ID_VALUTA = V_ID_VALUTA AND A.IN_VALUTA = 1) OR
|
|
A.ID_POL = pack_facturare.nid_politica_stoc)
|
|
AND ((lnFacturareFaraStoc = 1 and NVL(C.CANTITATE, 0) <= 0) OR
|
|
DECODE(A.GESTIONABIL, 1, NVL(C.CANTITATE, 0), 1) > 0)
|
|
ORDER BY A.DENUMIRE;
|
|
|
|
WHEN V_TIP = 7 THEN
|
|
-- credit note
|
|
OPEN V_CURSOR FOR
|
|
SELECT rownum as id_c,
|
|
A.ID_ARTICOL,
|
|
NULL AS LOT,
|
|
NULL as SERIE,
|
|
A.ID_POL,
|
|
V_ID_VALUTA AS ID_VALUTA, -- A.ID_VALUTA
|
|
A.NUME_LISTA_PRETURI,
|
|
ROUND(NVL(D.CURS, 0) *
|
|
ROUND(A.DISCOUNT_UNITAR,
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(D.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv) AS DISCOUNT_UNITAR,
|
|
ROUND(A.DISCOUNT_UNITAR, pack_sesiune.nzecimale_pretvval) AS DISCOUNT_UNITAR_VAL,
|
|
A.CODMAT,
|
|
A.CODBARE,
|
|
A.DENUMIRE,
|
|
NVL(A.UM, '') AS UM,
|
|
A.GESTIONABIL,
|
|
(CASE
|
|
WHEN lnFacturareFaraStoc = 1 AND C.CANTITATE < 0 THEN
|
|
0
|
|
ELSE
|
|
NVL(C.CANTITATE, 0)
|
|
END) AS CANTITATE,
|
|
A.PROC_TVAV,
|
|
A.PRETURI_CU_TVA,
|
|
D.CURS,
|
|
D.MULTIPLICATOR,
|
|
ROUND(NVL(D.CURS, 0) *
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) /
|
|
NVL(D.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv) AS PRET,
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) AS PRET_VAL,
|
|
1 AS TIP_VALUTA,
|
|
E.NUME_VAL
|
|
FROM FACT_VPRETURI_UTILIZATOR A
|
|
LEFT JOIN (SELECT ID_ARTICOL,
|
|
SUM(CANTS + CANT - CANTE) AS CANTITATE
|
|
FROM STOC
|
|
WHERE LUNA = V_LUNA
|
|
AND AN = V_AN
|
|
AND NVL(ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
AND ID_GESTIUNE IN
|
|
(SELECT DISTINCT A1.ID_GESTIUNE
|
|
FROM GEST_CORESP_GRUPE_GESTIUNI A1
|
|
LEFT JOIN GEST_CORESP_UTIL_GRUPE A2
|
|
ON A1.ID_GRUPE = A2.ID_GRUPE
|
|
WHERE A1.STERS = 0
|
|
AND A2.STERS = 0
|
|
AND A2.ID_UTIL = V_ID_UTIL
|
|
AND NVL2(V_ID_GESTIUNE_INIT,
|
|
A1.ID_GESTIUNE,
|
|
-1) = NVL(V_ID_GESTIUNE_INIT, -1))
|
|
GROUP BY ID_ARTICOL) C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND ID_VALUTA = V_ID_VALUTA
|
|
AND STERS = 0) D
|
|
ON V_ID_VALUTA = D.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE E
|
|
ON V_ID_VALUTA = E.ID_VALUTA
|
|
WHERE A.ID_UTIL = V_ID_UTIL
|
|
AND A.ID_VALUTA = V_ID_VALUTA
|
|
AND A.IN_VALUTA = 1
|
|
AND NVL(A.nota_discount, 0) = 1
|
|
AND ((lnFacturareFaraStoc = 1 and NVL(C.CANTITATE, 0) <= 0) OR
|
|
DECODE(A.GESTIONABIL, 1, NVL(C.CANTITATE, 0), 1) > 0)
|
|
ORDER BY A.DENUMIRE;
|
|
ELSE
|
|
-- aviz
|
|
OPEN V_CURSOR FOR
|
|
SELECT rownum as id_c,
|
|
A.ID_ARTICOL,
|
|
NULL AS LOT,
|
|
NULL as SERIE,
|
|
A.ID_POL,
|
|
A.ID_VALUTA,
|
|
A.NUME_LISTA_PRETURI,
|
|
(CASE
|
|
WHEN NVL(E.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(D.CURS, 0) *
|
|
ROUND(A.DISCOUNT_UNITAR,
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(D.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A.DISCOUNT_UNITAR, pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(E.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.DISCOUNT_UNITAR, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
A.CODMAT,
|
|
A.CODBARE,
|
|
A.DENUMIRE,
|
|
NVL(A.UM, '') AS UM,
|
|
A.GESTIONABIL,
|
|
(CASE
|
|
WHEN lnFacturareFaraStoc = 1 AND C.CANTITATE < 0 THEN
|
|
0
|
|
ELSE
|
|
NVL(C.CANTITATE, 0)
|
|
END) AS CANTITATE,
|
|
A.PROC_TVAV,
|
|
A.PRETURI_CU_TVA,
|
|
D.CURS,
|
|
D.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(E.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(D.CURS, 0) *
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) /
|
|
NVL(D.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(E.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(E.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
E.NUME_VAL,
|
|
DECODE(A.ID_POL,
|
|
NVL(pack_facturare.nid_politica_stoc, A.ID_POL + 1),
|
|
1,
|
|
0) AS MODIFICABIL
|
|
FROM FACT_VPRETURI_UTILIZATOR A
|
|
LEFT JOIN (SELECT ID_ARTICOL,
|
|
SUM(CANTS + CANT - CANTE) AS CANTITATE
|
|
FROM STOC
|
|
WHERE LUNA = V_LUNA
|
|
AND AN = V_AN
|
|
AND NVL(ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
AND ID_GESTIUNE IN
|
|
(SELECT DISTINCT A1.ID_GESTIUNE
|
|
FROM GEST_CORESP_GRUPE_GESTIUNI A1
|
|
LEFT JOIN GEST_CORESP_UTIL_GRUPE A2
|
|
ON A1.ID_GRUPE = A2.ID_GRUPE
|
|
WHERE A1.STERS = 0
|
|
AND A2.STERS = 0
|
|
AND A2.ID_UTIL = V_ID_UTIL
|
|
AND NVL2(V_ID_GESTIUNE_INIT,
|
|
A1.ID_GESTIUNE,
|
|
-1) = NVL(V_ID_GESTIUNE_INIT, -1))
|
|
GROUP BY ID_ARTICOL) C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) D
|
|
ON A.ID_VALUTA = D.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE E
|
|
ON A.ID_VALUTA = E.ID_VALUTA
|
|
WHERE A.ID_UTIL = V_ID_UTIL
|
|
AND ((lnFacturareFaraStoc = 1 and NVL(C.CANTITATE, 0) <= 0) OR
|
|
DECODE(NVL(A.GESTIONABIL, 2),
|
|
1,
|
|
NVL(C.CANTITATE, 0),
|
|
2,
|
|
0,
|
|
1) > 0)
|
|
ORDER BY A.DENUMIRE;
|
|
|
|
END CASE;
|
|
END cursor_preturi;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_contract(V_DATA_CURS IN DATE,
|
|
V_TIP IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_GESTIUNE_INIT IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_AGENT OUT NUMBER,
|
|
V_NUME_AGENT OUT VARCHAR2,
|
|
V_CURSOR OUT cursor_facturare,
|
|
V_CURSOR2 OUT cursor_facturare) IS
|
|
V_NR_INREGISTRARI NUMBER(10);
|
|
V_NR_INREGISTRARI_TOT NUMBER(10);
|
|
V_SEPARATOR VARCHAR2(10) := ',';
|
|
BEGIN
|
|
pack_facturare.initializeaza_facturare(V_ID_UTIL);
|
|
|
|
BEGIN
|
|
SELECT DISTINCT ID_AGENT, NUME_AGENT
|
|
INTO V_ID_AGENT, V_NUME_AGENT
|
|
FROM VCONTRACTE
|
|
WHERE ID_CTR IN
|
|
(SELECT X as ID_CTR
|
|
FROM table(charn2collection(V_LISTAID, V_SEPARATOR)));
|
|
EXCEPTION
|
|
WHEN TOO_MANY_ROWS THEN
|
|
V_ID_AGENT := NULL;
|
|
V_NUME_AGENT := NULL;
|
|
END;
|
|
|
|
-- verificare ca exista cursul pentru valutele din CTR_SCADENTAR si CTR_ARTICOLE
|
|
WITH CRS AS
|
|
(SELECT X as ID_CTR
|
|
FROM table(charn2collection(V_LISTAID, V_SEPARATOR)))
|
|
SELECT SUM(CASE
|
|
WHEN B.ID_VALUTA <> pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END),
|
|
SUM(CASE
|
|
WHEN A.ID_VALUTA <> pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END)
|
|
INTO V_NR_INREGISTRARI, V_NR_INREGISTRARI_TOT
|
|
FROM (SELECT DISTINCT NVL(C.ID_VALUTA, B.ID_VALUTA) AS ID_VALUTA
|
|
FROM CONTRACTE A
|
|
LEFT JOIN CTR_ARTICOLE B
|
|
ON A.ID_CTR = B.ID_CTR
|
|
AND A.OPT_FACTURARE = 3
|
|
LEFT JOIN CTR_SCADENTAR C
|
|
ON A.ID_CTR = B.ID_CTR
|
|
AND A.OPT_FACTURARE IN (1, 2)
|
|
WHERE A.ID_CTR IN (SELECT ID_CTR FROM CRS)
|
|
AND A.STERS = 0
|
|
AND A.INACTIV = 0) A
|
|
LEFT JOIN CURS B
|
|
ON A.ID_VALUTA = B.ID_VALUTA
|
|
AND B.STERS = 0
|
|
AND B.DATA <= V_DATA_CURS
|
|
AND B.DATA2 >= V_DATA_CURS;
|
|
|
|
IF V_NR_INREGISTRARI <> V_NR_INREGISTRARI_TOT THEN
|
|
RAISE_APPLICATION_ERROR(-20005,
|
|
'Nu este setat cursul din data de ' ||
|
|
to_char(V_DATA_CURS, 'DD/MM/YYYY') || ' !');
|
|
END IF;
|
|
|
|
OPEN V_CURSOR2 FOR
|
|
WITH CRS AS
|
|
(SELECT X as ID_CTR
|
|
FROM table(charn2collection(V_LISTAID, V_SEPARATOR)))
|
|
SELECT rownum - 10000 as id_c,
|
|
id_ctr,
|
|
id_articol,
|
|
id_rata,
|
|
id_pol,
|
|
id_valuta,
|
|
numar || '/' || to_char(data, 'DD.MM.YYYY') as numar_contract,
|
|
numar,
|
|
data,
|
|
discount_unitar,
|
|
discount_unitar_val,
|
|
codmat,
|
|
codbare,
|
|
denumire,
|
|
preturi_cu_tva,
|
|
um,
|
|
gestionabil,
|
|
cantitate,
|
|
proc_tvav,
|
|
curs,
|
|
multiplicator,
|
|
pret,
|
|
pret_val,
|
|
tip_valuta,
|
|
nume_val,
|
|
nr_rata,
|
|
data_rata,
|
|
data_scadenta,
|
|
explicatie,
|
|
opt_facturare
|
|
FROM (SELECT A.ID_CTR,
|
|
C.ID_ARTICOL,
|
|
NULL as id_rata,
|
|
C.ID_POL,
|
|
B.ID_VALUTA,
|
|
A.NUMAR,
|
|
A.DATA,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(F.CURS, 0) *
|
|
ROUND(ROUND(B.PRET_UNITAR,
|
|
pack_sesiune.nzecimale_pretvval)
|
|
|
|
* B.COEF_DISCOUNT / 100,
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(F.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(ROUND(B.PRET_UNITAR,
|
|
pack_sesiune.nzecimale_pretv) *
|
|
B.COEF_DISCOUNT / 100,
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(ROUND(B.PRET_UNITAR,
|
|
pack_sesiune.nzecimale_pretvval) *
|
|
B.COEF_DISCOUNT / 100,
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
E.CODMAT,
|
|
E.CODBARE,
|
|
E.DENUMIRE,
|
|
B.PRET_CU_TVA AS PRETURI_CU_TVA,
|
|
NVL(E.UM, '') AS UM,
|
|
E.IN_STOC AS GESTIONABIL,
|
|
B.CANT AS CANTITATE,
|
|
C.PROC_TVAV,
|
|
F.CURS,
|
|
F.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(F.CURS, 0) *
|
|
ROUND(B.PRET_UNITAR,
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(F.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(B.PRET_UNITAR, pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(G.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(B.PRET_UNITAR, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(G.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
G.NUME_VAL,
|
|
NULL as NR_RATA,
|
|
null as data_rata,
|
|
null as data_scadenta,
|
|
'' as explicatie,
|
|
A.OPT_FACTURARE
|
|
FROM (SELECT ID_CTR, NUMAR, DATA, OPT_FACTURARE
|
|
FROM CONTRACTE
|
|
WHERE ID_CTR in (SELECT ID_CTR FROM CRS)
|
|
AND OPT_FACTURARE = 3
|
|
AND STERS = 0) A
|
|
LEFT JOIN CTR_ARTICOLE B
|
|
ON A.ID_CTR = B.ID_CTR
|
|
LEFT JOIN CRM_POLITICI_PRET_ART C
|
|
ON B.ID_POL_ART = C.ID_POL_ART
|
|
LEFT JOIN NOM_ARTICOLE E
|
|
ON C.ID_ARTICOL = E.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) F
|
|
ON B.ID_VALUTA = F.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE G
|
|
ON B.ID_VALUTA = G.ID_VALUTA
|
|
UNION ALL
|
|
SELECT A01.ID_CTR,
|
|
null as id_articol,
|
|
B01.ID_RATA,
|
|
NULL AS ID_POL,
|
|
B01.ID_VALUTA,
|
|
A01.NUMAR,
|
|
A01.DATA,
|
|
0 as discount_unitar,
|
|
0 as discount_unitar_val,
|
|
null as codmat,
|
|
null as codbare,
|
|
B01.DEN_RATA as denumire,
|
|
B01.PRET_CU_TVA AS PRETURI_CU_TVA,
|
|
NULL AS UM,
|
|
0 as gestionabil,
|
|
1 as cantitate,
|
|
(A01.PROC_TVA + 100) / 100 AS PROC_TVAV,
|
|
E01.CURS,
|
|
E01.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(F01.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(E01.CURS, 0) *
|
|
(ROUND(B01.VALRATA,
|
|
pack_sesiune.nzecimale_pretvval) -
|
|
DECODE(B01.PRET_CU_TVA,
|
|
0,
|
|
NVL(D01.VALVALUTA, 0),
|
|
NVL(D01.VALVALUTACTVA, 0))) /
|
|
NVL(E01.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(ROUND(B01.VALRATA, pack_sesiune.nzecimale_pretv) -
|
|
DECODE(B01.PRET_CU_TVA,
|
|
0,
|
|
NVL(D01.VALVALUTA, 0),
|
|
NVL(D01.VALVALUTACTVA, 0)),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(F01.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(ROUND(B01.VALRATA,
|
|
pack_sesiune.nzecimale_pretvval) -
|
|
DECODE(B01.PRET_CU_TVA,
|
|
0,
|
|
NVL(D01.VALVALUTA, 0),
|
|
NVL(D01.VALVALUTACTVA, 0)),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(F01.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
F01.NUME_VAL,
|
|
B01.NR_RATA,
|
|
B01.DATA_RATA,
|
|
B01.DATA_SCADENTA,
|
|
UPPER(NVL(C01.DENUMIRE, B01.DEN_RATA)) AS EXPLICATIE,
|
|
A01.OPT_FACTURARE
|
|
FROM (SELECT ID_CTR, NUMAR, DATA, OPT_FACTURARE, PROC_TVA
|
|
FROM CONTRACTE
|
|
WHERE STERS = 0
|
|
AND ID_CTR in (SELECT ID_CTR FROM CRS)
|
|
AND OPT_FACTURARE IN (1, 2)) A01
|
|
LEFT JOIN CTR_SCADENTAR B01
|
|
ON A01.ID_CTR = B01.ID_CTR
|
|
AND B01.STERS = 0
|
|
LEFT JOIN (SELECT DENUMIRE, ID_CTR AS ID_CONTRACT
|
|
FROM (SELECT C1.ID_CTR,
|
|
C3.DENUMIRE,
|
|
ROW_NUMBER() OVER(PARTITION BY C1.ID_CTR ORDER BY C1.ID_CTR_ART) AS NRCRT
|
|
FROM CTR_ARTICOLE C1
|
|
LEFT JOIN CRM_POLITICI_PRET_ART C2
|
|
ON C1.ID_POL_ART = C2.ID_POL_ART
|
|
LEFT JOIN NOM_ARTICOLE C3
|
|
ON C2.ID_ARTICOL = C3.ID_ARTICOL
|
|
WHERE C1.id_ctr in
|
|
(SELECT ID_CTR FROM CRS))
|
|
WHERE NRCRT = 1) C01
|
|
ON A01.ID_CTR = C01.ID_CONTRACT
|
|
AND A01.OPT_FACTURARE = 2
|
|
-- 14.11.2012 : am scos round(...) de la valvaluta si valvalutactva - trebuie rotunjite in fct. de id_valuta
|
|
LEFT JOIN (SELECT SUM(VALVALUTA) AS VALVALUTA,
|
|
SUM(VALVALUTACTVA) AS VALVALUTACTVA,
|
|
ID_RATA
|
|
FROM CTR_RATE_FACTURI
|
|
WHERE STERS = 0
|
|
GROUP BY ID_RATA) D01
|
|
ON B01.ID_RATA = D01.ID_RATA
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) E01
|
|
ON B01.ID_VALUTA = E01.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE F01
|
|
ON B01.ID_VALUTA = F01.ID_VALUTA
|
|
-- 14.11.2012 : am scos round(...) de la valrata - trebuie rotunjita in fct. de id_valuta
|
|
WHERE B01.VALRATA -
|
|
DECODE(B01.PRET_CU_TVA,
|
|
0,
|
|
NVL(D01.VALVALUTA, 0),
|
|
NVL(D01.VALVALUTACTVA, 0)) > 0)
|
|
ORDER BY data, numar, data_rata, denumire;
|
|
|
|
pack_facturare.cursor_preturi(V_DATA_CURS,
|
|
V_TIP,
|
|
V_ID_VALUTA,
|
|
V_ID_GESTIUNE_INIT,
|
|
V_LUNA,
|
|
V_AN,
|
|
V_ID_UTIL,
|
|
V_ID_SUCURSALA,
|
|
V_CURSOR);
|
|
|
|
END cursor_contract;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_comanda(V_DATA_CURS IN DATE,
|
|
V_TIP IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
V_ID_COMANDA COMENZI.ID_COMANDA%TYPE;
|
|
V_NR_INREGISTRARI NUMBER(10);
|
|
V_NR_INREGISTRARI_TOT NUMBER(10);
|
|
BEGIN
|
|
pack_facturare.initializeaza_facturare(V_ID_UTIL);
|
|
V_ID_COMANDA := TO_NUMBER(V_LISTAID);
|
|
|
|
-- verificare ca exista cursul pentru valutele din COMENZI_ELEMENTE
|
|
SELECT SUM(CASE
|
|
WHEN B.ID_VALUTA <> pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END),
|
|
SUM(CASE
|
|
WHEN A.ID_VALUTA <> pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END)
|
|
INTO V_NR_INREGISTRARI, V_NR_INREGISTRARI_TOT
|
|
FROM (SELECT DISTINCT ID_VALUTA
|
|
FROM COMENZI_ELEMENTE
|
|
WHERE ID_COMANDA = V_ID_COMANDA) A
|
|
LEFT JOIN CURS B
|
|
ON A.ID_VALUTA = B.ID_VALUTA
|
|
AND B.STERS = 0
|
|
AND B.DATA <= V_DATA_CURS
|
|
AND B.DATA2 >= V_DATA_CURS;
|
|
|
|
IF V_NR_INREGISTRARI <> V_NR_INREGISTRARI_TOT THEN
|
|
RAISE_APPLICATION_ERROR(-20005,
|
|
'Nu este setat cursul din data de ' ||
|
|
to_char(V_DATA_CURS, 'DD/MM/YYYY') || ' !');
|
|
END IF;
|
|
|
|
IF V_TIP <= 20 THEN
|
|
-- factura
|
|
OPEN V_CURSOR FOR
|
|
SELECT ROWNUM as id_c,
|
|
A.ID_ARTICOL,
|
|
NULL AS LOT,
|
|
NULL as SERIE,
|
|
A.ID_POL,
|
|
A.ID_VALUTA,
|
|
G.NUME_LISTA_PRETURI,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(E.CURS, 0) *
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0) +
|
|
NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(E.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0) +
|
|
NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0) +
|
|
NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
C.CODMAT,
|
|
C.CODBARE,
|
|
C.DENUMIRE,
|
|
NVL(C.UM, '') AS UM,
|
|
C.IN_STOC AS GESTIONABIL,
|
|
A.CANTITATE - NVL(D.CANTITATE, 0) AS CANTITATE,
|
|
B.PROC_TVAV,
|
|
A.PRET_CU_TVA AS PRETURI_CU_TVA,
|
|
E.CURS,
|
|
E.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(E.CURS, 0) *
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) /
|
|
NVL(E.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(F.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
F.NUME_VAL
|
|
FROM COMENZI_ELEMENTE A
|
|
LEFT JOIN CRM_POLITICI_PRET_ART B
|
|
ON A.ID_POL = B.ID_POL
|
|
AND A.ID_ARTICOL = B.ID_ARTICOL
|
|
LEFT JOIN CRM_POLITICI_PRETURI G
|
|
ON B.ID_POL = G.ID_POL
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN (SELECT B1.ID_ARTICOL, SUM(B1.CANTITATE) AS CANTITATE
|
|
FROM VANZARI A1
|
|
LEFT JOIN VANZARI_DETALII B1
|
|
ON A1.ID_VANZARE = B1.ID_VANZARE
|
|
AND B1.STERS = 0
|
|
WHERE A1.STERS = 0
|
|
AND A1.ID_COMANDA = V_ID_COMANDA
|
|
GROUP BY B1.ID_ARTICOL) D
|
|
ON A.ID_ARTICOL = D.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) E
|
|
ON A.ID_VALUTA = E.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE F
|
|
ON A.ID_VALUTA = F.ID_VALUTA
|
|
WHERE A.STERS = 0
|
|
AND A.ID_COMANDA = V_ID_COMANDA
|
|
AND A.CANTITATE - NVL(D.CANTITATE, 0) > 0
|
|
ORDER BY C.DENUMIRE;
|
|
ELSE
|
|
-- aviz
|
|
OPEN V_CURSOR FOR
|
|
SELECT ROWNUM as id_c,
|
|
A.ID_ARTICOL,
|
|
NULL AS LOT,
|
|
NULL as SERIE,
|
|
A.ID_POL,
|
|
A.ID_VALUTA,
|
|
G.NUME_LISTA_PRETURI,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(E.CURS, 0) *
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0) +
|
|
NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(E.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0) +
|
|
NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0) +
|
|
NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
C.CODMAT,
|
|
C.CODBARE,
|
|
C.DENUMIRE,
|
|
NVL(C.UM, '') AS UM,
|
|
C.IN_STOC AS GESTIONABIL,
|
|
A.CANTITATE - NVL(D.CANTITATE, 0) AS CANTITATE,
|
|
B.PROC_TVAV,
|
|
A.PRET_CU_TVA AS PRETURI_CU_TVA,
|
|
E.CURS,
|
|
E.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(E.CURS, 0) *
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) /
|
|
NVL(E.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(F.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
F.NUME_VAL
|
|
FROM COMENZI_ELEMENTE A
|
|
LEFT JOIN CRM_POLITICI_PRET_ART B
|
|
ON A.ID_POL = B.ID_POL
|
|
AND A.ID_ARTICOL = B.ID_ARTICOL
|
|
LEFT JOIN CRM_POLITICI_PRETURI G
|
|
ON B.ID_POL = G.ID_POL
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN (SELECT B1.ID_ARTICOL, SUM(B1.CANTITATE) AS CANTITATE
|
|
FROM VANZARI A1
|
|
LEFT JOIN VANZARI_DETALII B1
|
|
ON A1.ID_VANZARE = B1.ID_VANZARE
|
|
AND B1.STERS = 0
|
|
WHERE A1.STERS = 0
|
|
AND A1.ID_COMANDA = V_ID_COMANDA
|
|
GROUP BY B1.ID_ARTICOL) D
|
|
ON A.ID_ARTICOL = D.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) E
|
|
ON A.ID_VALUTA = E.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE F
|
|
ON A.ID_VALUTA = F.ID_VALUTA
|
|
WHERE A.STERS = 0
|
|
AND A.ID_COMANDA = V_ID_COMANDA
|
|
AND SIGN(A.CANTITATE) * (A.CANTITATE - NVL(D.CANTITATE, 0)) > 0
|
|
ORDER BY C.DENUMIRE;
|
|
END IF;
|
|
END cursor_comanda;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_lucrare(V_DATA_CURS IN DATE,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_LUCRARE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
V_NR_INREGISTRARI NUMBER(10);
|
|
V_NR_INREGISTRARI_TOT NUMBER(10);
|
|
BEGIN
|
|
pack_facturare.initializeaza_facturare(V_ID_UTIL);
|
|
|
|
-- verificare ca exista cursul pentru valutele din COMENZI_ELEMENTE
|
|
SELECT SUM(CASE
|
|
WHEN B.ID_VALUTA <> pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END),
|
|
SUM(CASE
|
|
WHEN A.ID_VALUTA <> pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END)
|
|
INTO V_NR_INREGISTRARI, V_NR_INREGISTRARI_TOT
|
|
FROM (SELECT DISTINCT ID_VALUTA
|
|
FROM COMENZI_ELEMENTE
|
|
WHERE ID_COMANDA IN
|
|
(SELECT ID_COMANDA
|
|
FROM COMENZI
|
|
WHERE ID_LUCRARE = V_ID_LUCRARE
|
|
AND STERS = 0
|
|
AND ID_SUCURSALA = V_ID_SUCURSALA)) A
|
|
LEFT JOIN CURS B
|
|
ON A.ID_VALUTA = B.ID_VALUTA
|
|
AND B.STERS = 0
|
|
AND B.DATA <= V_DATA_CURS
|
|
AND B.DATA2 >= V_DATA_CURS;
|
|
|
|
IF V_NR_INREGISTRARI <> V_NR_INREGISTRARI_TOT THEN
|
|
RAISE_APPLICATION_ERROR(-20005,
|
|
'Nu este setat cursul din data de ' ||
|
|
to_char(V_DATA_CURS, 'DD/MM/YYYY') || ' !');
|
|
END IF;
|
|
|
|
IF TO_NUMBER(NVL(pack_sesiune.getoptiunefirma('FACTALGREPCOM'), '0')) = 1 THEN
|
|
-- in gestiunea sursa exista un singur cont
|
|
OPEN V_CURSOR FOR
|
|
select A1.id_articol,
|
|
A1.id_comanda,
|
|
A1.id_comanda_element,
|
|
A1.id_gestiune,
|
|
A1.id_pol,
|
|
A1.cont,
|
|
A3.nume_gestiune,
|
|
A2.codmat,
|
|
A2.codbare,
|
|
A2.denumire,
|
|
A1.cant_com,
|
|
A1.cant_ramasa,
|
|
A1.cant_stoc,
|
|
A1.cantitate,
|
|
A1.cant_stoc -
|
|
(SUM(a1.cantitate) over(partition by a1.id_articol)) as cant_disp,
|
|
A1.ID_VALUTA,
|
|
NVL(A4.PROC_TVAV, 1) AS PROC_TVAV,
|
|
A1.PRET_CU_TVA AS PRETURI_CU_TVA,
|
|
NVL(A5.CURS, 0) AS CURS,
|
|
NVL(A5.MULTIPLICATOR, 1) AS MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(A6.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A5.CURS, 0) *
|
|
(ROUND(A1.PRET, pack_sesiune.nzecimale_pretvval) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)) /
|
|
NVL(A5.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A1.PRET, pack_sesiune.nzecimale_pretv) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
1 - NVL(A6.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
A6.NUME_VAL,
|
|
(CASE
|
|
WHEN NVL(A6.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A5.CURS, 0) *
|
|
(ROUND(A1.PRET, pack_sesiune.nzecimale_pretvval) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)) /
|
|
NVL(A5.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A1.PRET, pack_sesiune.nzecimale_pretv) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) + ROUND((CASE
|
|
WHEN NVL(A6.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A5.CURS, 0) *
|
|
(ROUND(A1.PRET, pack_sesiune.nzecimale_pretvval) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)) /
|
|
NVL(A5.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A1.PRET, pack_sesiune.nzecimale_pretv) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) * (CASE
|
|
WHEN A1.PRET_CU_TVA = 0 THEN
|
|
A4.PROC_TVAV - 1
|
|
ELSE
|
|
0
|
|
END),
|
|
pack_sesiune.nzecimale_pretv) AS PRETCTVA
|
|
from (SELECT CRS.ID_ARTICOL,
|
|
CRS.ID_VALUTA,
|
|
CRS.PRET_CU_TVA,
|
|
CRS.PRET,
|
|
CRS.ID_POL,
|
|
CRS.ID_COMANDA_ELEMENT,
|
|
CRS.ID_COMANDA,
|
|
CRS.ID_GESTIUNE,
|
|
CRS.CONT,
|
|
CRS.PROCENT,
|
|
CRS.CANT_COM,
|
|
CRS.CANT_RAMASA,
|
|
CRS.CANT_STOC,
|
|
CRS.CANT_REP,
|
|
CRS.INCOMPLET,
|
|
CRS.cant_rep + (case
|
|
when CRS.incomplet = 1 and CRS.cant_stoc > 0 and
|
|
CRS.cant_stoc - sum(CRS.cant_rep)
|
|
over(partition by CRS.id_articol) > 0 then
|
|
trunc((CRS.cant_stoc - sum(CRS.cant_rep)
|
|
over(partition by CRS.id_articol)) /
|
|
sum(CRS.incomplet)
|
|
over(partition by CRS.id_articol)) +
|
|
(case
|
|
when mod((CRS.cant_stoc - sum(CRS.cant_rep)
|
|
over(partition by CRS.id_articol)),
|
|
sum(CRS.incomplet)
|
|
over(partition by CRS.id_articol)) >=
|
|
row_number()
|
|
over(partition by CRS.id_articol order by
|
|
CRS.incomplet desc,
|
|
CRS.procent desc) then
|
|
1
|
|
else
|
|
0
|
|
end)
|
|
else
|
|
0
|
|
end) as cantitate
|
|
FROM (SELECT A.ID_ARTICOL,
|
|
A.ID_VALUTA,
|
|
A.PRET_CU_TVA,
|
|
A.PRET - NVL(A.DISCOUNT_UNITAR, 0) AS PRET,
|
|
A.ID_POL,
|
|
A.ID_COMANDA_ELEMENT,
|
|
COM.ID_COMANDA,
|
|
COM.ID_GESTIUNE,
|
|
STOC.CONT,
|
|
FLOOR(RATIO_TO_REPORT(A.CANTITATE -
|
|
NVL(D.CANTITATE, 0))
|
|
OVER(PARTITION BY A.ID_ARTICOL) * 100) / 100 as procent,
|
|
A.CANTITATE AS CANT_COM,
|
|
A.CANTITATE - NVL(D.CANTITATE, 0) AS CANT_RAMASA,
|
|
NVL(STOC.CANT_STOC, 0) AS CANT_STOC,
|
|
(case
|
|
when NVL(STOC.CANT_STOC, 0) -
|
|
(SUM(A.CANTITATE - NVL(D.CANTITATE, 0))
|
|
OVER(PARTITION BY A.ID_ARTICOL)) > 0 and
|
|
A.CANTITATE - NVL(D.CANTITATE, 0) > 0 and
|
|
NVL(STOC.CANT_STOC, 0) > 0 then
|
|
A.CANTITATE - NVL(D.CANTITATE, 0)
|
|
when NVL(STOC.CANT_STOC, 0) > 0 and
|
|
A.CANTITATE - NVL(D.CANTITATE, 0) > 0 then
|
|
LEAST(A.CANTITATE - NVL(D.CANTITATE, 0),
|
|
FLOOR(FLOOR(RATIO_TO_REPORT(A.CANTITATE -
|
|
NVL(D.CANTITATE,
|
|
0))
|
|
OVER(PARTITION BY
|
|
A.ID_ARTICOL) * 100) / 100 *
|
|
NVL(STOC.CANT_STOC, 0)))
|
|
else
|
|
0
|
|
end) AS CANT_REP,
|
|
(case
|
|
when NVL(STOC.CANT_STOC, 0) -
|
|
(SUM(A.CANTITATE - NVL(D.CANTITATE, 0))
|
|
OVER(PARTITION BY A.ID_ARTICOL)) > 0 and
|
|
A.CANTITATE - NVL(D.CANTITATE, 0) > 0 and
|
|
NVL(STOC.CANT_STOC, 0) > 0 then
|
|
0
|
|
when A.CANTITATE - NVL(D.CANTITATE, 0) -
|
|
FLOOR(FLOOR(RATIO_TO_REPORT(A.CANTITATE -
|
|
NVL(D.CANTITATE,
|
|
0))
|
|
OVER(PARTITION BY
|
|
A.ID_ARTICOL) * 100) / 100 *
|
|
NVL(STOC.CANT_STOC, 0)) > 0 AND
|
|
NVL(STOC.CANT_STOC, 0) > 0 AND
|
|
A.CANTITATE - NVL(D.CANTITATE, 0) > 0 then
|
|
1
|
|
else
|
|
0
|
|
end) AS incomplet
|
|
FROM COMENZI COM
|
|
LEFT JOIN COMENZI_ELEMENTE A
|
|
ON COM.ID_COMANDA = A.ID_COMANDA
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN (SELECT B1.ID_ARTICOL,
|
|
A1.ID_COMANDA,
|
|
SUM(B1.CANTITATE) AS CANTITATE
|
|
FROM VANZARI A1
|
|
LEFT JOIN VANZARI_DETALII B1
|
|
ON A1.ID_VANZARE = B1.ID_VANZARE
|
|
AND B1.STERS = 0
|
|
WHERE A1.STERS = 0
|
|
GROUP BY B1.ID_ARTICOL, A1.ID_COMANDA) D
|
|
ON A.ID_ARTICOL = D.ID_ARTICOL
|
|
AND A.ID_COMANDA = D.ID_COMANDA
|
|
LEFT JOIN (SELECT ID_ARTICOL,
|
|
SUM(CANTS + CANT - CANTE) AS CANT_STOC,
|
|
CONT
|
|
FROM STOC
|
|
WHERE AN = V_AN
|
|
AND LUNA = V_LUNA
|
|
AND ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND NVL2(V_ID_SUCURSALA,
|
|
ID_SUCURSALA,
|
|
-99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
GROUP BY ID_ARTICOL, CONT) STOC
|
|
ON A.ID_ARTICOL = STOC.ID_ARTICOL
|
|
WHERE A.STERS = 0
|
|
AND COM.ID_LUCRARE = V_ID_LUCRARE
|
|
AND COM.STERS = 0
|
|
AND COM.ID_SECTIE IN
|
|
(SELECT ID_SECTIE
|
|
FROM NOM_SECTII
|
|
WHERE STERS = 0
|
|
AND NVL2(V_ID_SUCURSALA, ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99))
|
|
AND C.IN_STOC = 1
|
|
AND A.CANTITATE - NVL(D.CANTITATE, 0) > 0
|
|
AND COM.ID_GESTIUNE IS NOT NULL
|
|
order by 1, 2 desc) CRS) A1
|
|
LEFT JOIN NOM_ARTICOLE A2
|
|
ON A1.ID_ARTICOL = A2.ID_ARTICOL
|
|
LEFT JOIN NOM_GESTIUNI A3
|
|
ON A1.ID_GESTIUNE = A3.ID_GESTIUNE
|
|
LEFT JOIN CRM_POLITICI_PRET_ART A4
|
|
ON A1.ID_POL = A4.ID_POL
|
|
AND A1.ID_ARTICOL = A4.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) A5
|
|
ON A1.ID_VALUTA = A5.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE A6
|
|
ON A1.ID_VALUTA = A6.ID_VALUTA
|
|
ORDER BY a2.denumire, a2.codmat, a3.nume_gestiune;
|
|
|
|
ELSE
|
|
|
|
OPEN V_CURSOR FOR
|
|
select A1.id_articol,
|
|
A1.id_comanda,
|
|
A1.id_comanda_element,
|
|
A1.id_gestiune,
|
|
A1.id_pol,
|
|
A1.cont,
|
|
A3.nume_gestiune,
|
|
A2.codmat,
|
|
A2.codbare,
|
|
A2.denumire,
|
|
A1.cant_com,
|
|
A1.cant_ramasa,
|
|
A1.cant_stoc,
|
|
A1.CANT_REP as cantitate,
|
|
A1.cant_stoc -
|
|
(SUM(a1.CANT_REP) over(partition by a1.id_articol)) as cant_disp,
|
|
A1.ID_VALUTA,
|
|
NVL(A4.PROC_TVAV, 1) AS PROC_TVAV,
|
|
A1.PRET_CU_TVA AS PRETURI_CU_TVA,
|
|
NVL(A5.CURS, 0) AS CURS,
|
|
NVL(A5.MULTIPLICATOR, 1) AS MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(A6.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A5.CURS, 0) *
|
|
(ROUND(A1.PRET, pack_sesiune.nzecimale_pretvval) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)) /
|
|
NVL(A5.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A1.PRET, pack_sesiune.nzecimale_pretv) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
1 - NVL(A6.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
A6.NUME_VAL,
|
|
(CASE
|
|
WHEN NVL(A6.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A5.CURS, 0) *
|
|
(ROUND(A1.PRET, pack_sesiune.nzecimale_pretvval) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)) /
|
|
NVL(A5.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A1.PRET, pack_sesiune.nzecimale_pretv) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) + ROUND((CASE
|
|
WHEN NVL(A6.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A5.CURS, 0) *
|
|
(ROUND(A1.PRET, pack_sesiune.nzecimale_pretvval) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)) /
|
|
NVL(A5.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A1.PRET, pack_sesiune.nzecimale_pretv) -
|
|
ROUND(NVL(A4.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) * (CASE
|
|
WHEN A1.PRET_CU_TVA = 0 THEN
|
|
A4.PROC_TVAV - 1
|
|
ELSE
|
|
0
|
|
END),
|
|
pack_sesiune.nzecimale_pretv) AS PRETCTVA
|
|
from (SELECT A.ID_ARTICOL,
|
|
A.ID_VALUTA,
|
|
A.PRET_CU_TVA,
|
|
A.PRET - NVL(A.DISCOUNT_UNITAR, 0) AS PRET,
|
|
A.ID_POL,
|
|
A.ID_COMANDA_ELEMENT,
|
|
COM.ID_COMANDA,
|
|
COM.ID_GESTIUNE,
|
|
STOC.CONT,
|
|
A.CANTITATE AS CANT_COM,
|
|
A.CANTITATE - NVL(D.CANTITATE, 0) AS CANT_RAMASA,
|
|
NVL(STOC.CANT_STOC, 0) AS CANT_STOC,
|
|
(CASE
|
|
WHEN NVL(STOC.CANT_STOC, 0) > 0 THEN
|
|
A.CANTITATE - NVL(D.CANTITATE, 0)
|
|
ELSE
|
|
0
|
|
END) AS CANT_REP,
|
|
0 AS incomplet
|
|
FROM COMENZI COM
|
|
LEFT JOIN COMENZI_ELEMENTE A
|
|
ON COM.ID_COMANDA = A.ID_COMANDA
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN (SELECT B1.ID_ARTICOL,
|
|
A1.ID_COMANDA,
|
|
SUM(B1.CANTITATE) AS CANTITATE
|
|
FROM VANZARI A1
|
|
LEFT JOIN VANZARI_DETALII B1
|
|
ON A1.ID_VANZARE = B1.ID_VANZARE
|
|
AND B1.STERS = 0
|
|
WHERE A1.STERS = 0
|
|
GROUP BY B1.ID_ARTICOL, A1.ID_COMANDA) D
|
|
ON A.ID_ARTICOL = D.ID_ARTICOL
|
|
AND A.ID_COMANDA = D.ID_COMANDA
|
|
LEFT JOIN (SELECT ID_ARTICOL,
|
|
SUM(CANTS + CANT - CANTE) AS CANT_STOC,
|
|
CONT
|
|
FROM STOC
|
|
WHERE AN = V_AN
|
|
AND LUNA = V_LUNA
|
|
AND ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND NVL2(V_ID_SUCURSALA, ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
GROUP BY ID_ARTICOL, CONT) STOC
|
|
ON A.ID_ARTICOL = STOC.ID_ARTICOL
|
|
WHERE A.STERS = 0
|
|
AND COM.ID_LUCRARE = V_ID_LUCRARE
|
|
AND COM.STERS = 0
|
|
AND COM.ID_SECTIE IN
|
|
(SELECT ID_SECTIE
|
|
FROM NOM_SECTII
|
|
WHERE STERS = 0
|
|
AND NVL2(V_ID_SUCURSALA, ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99))
|
|
AND C.IN_STOC = 1
|
|
AND A.CANTITATE - NVL(D.CANTITATE, 0) > 0
|
|
AND COM.ID_GESTIUNE IS NOT NULL
|
|
order by 1, 2 desc) A1
|
|
LEFT JOIN NOM_ARTICOLE A2
|
|
ON A1.ID_ARTICOL = A2.ID_ARTICOL
|
|
LEFT JOIN NOM_GESTIUNI A3
|
|
ON A1.ID_GESTIUNE = A3.ID_GESTIUNE
|
|
LEFT JOIN CRM_POLITICI_PRET_ART A4
|
|
ON A1.ID_POL = A4.ID_POL
|
|
AND A1.ID_ARTICOL = A4.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) A5
|
|
ON A1.ID_VALUTA = A5.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE A6
|
|
ON A5.ID_VALUTA = A6.ID_VALUTA
|
|
ORDER BY a2.denumire, a2.codmat, a3.nume_gestiune;
|
|
END IF;
|
|
|
|
END cursor_lucrare;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_articole_k(V_DATA_CURS IN DATE,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
BEGIN
|
|
pack_facturare.initializeaza_facturare(V_ID_UTIL);
|
|
|
|
OPEN V_CURSOR FOR
|
|
SELECT rownum as id_c,
|
|
B.ID_ARTICOL,
|
|
NULL AS LOT,
|
|
NULL as SERIE,
|
|
A.ID_POL,
|
|
B.ID_VALUTA,
|
|
A.NUME_LISTA_PRETURI,
|
|
(CASE
|
|
WHEN NVL(E.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(D.CURS, 0) *
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(D.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(E.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
C.CODMAT,
|
|
C.CODBARE,
|
|
C.DENUMIRE,
|
|
NVL(C.UM, '') AS UM,
|
|
C.IN_STOC AS GESTIONABIL,
|
|
0 AS CANTITATE,
|
|
B.PROC_TVAV,
|
|
A.PRETURI_CU_TVA,
|
|
D.CURS,
|
|
D.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(E.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(D.CURS, 0) *
|
|
ROUND(NVL(B.PRET, 0), pack_sesiune.nzecimale_pretvval) /
|
|
NVL(D.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.PRET, 0), pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(E.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.PRET, 0), pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(E.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
E.NUME_VAL
|
|
FROM (select a1.id_util,
|
|
a3.id_pol,
|
|
a3.preturi_cu_tva,
|
|
a3.nume_lista_preturi,
|
|
a3.id_nota
|
|
from utilizatori_rol_intern a1
|
|
left join politici_grupuri a2
|
|
on a1.id_grup = a2.id_grup
|
|
left join crm_politici_preturi a3
|
|
on a2.id_politica = a3.id_pol
|
|
left join crm_note_vanzari a4
|
|
on a3.id_nota = a4.id_nota
|
|
left join note_contabile a5
|
|
on a4.id_set = a5.id_set
|
|
where a1.sters = 0
|
|
and a2.sters = 0
|
|
and a3.sters = 0
|
|
and a1.id_util = V_ID_UTIL
|
|
and NVL(a5.in_valuta, 0) = 0
|
|
and least(NVL(last_day(to_date(V_AN || V_LUNA, 'YYYYMM')),
|
|
sysdate),
|
|
sysdate) between a3.datai and
|
|
NVL(a3.datas, to_date('300012', 'YYYYMM'))
|
|
and NVL(a1.ID_SUCURSALA, -99) = NVL(V_ID_SUCURSALA, -99)
|
|
and a3.id_pol =
|
|
to_number(pack_sesiune.getoptiunefirma('IDPOLPRETFACTK'))) A
|
|
LEFT JOIN CRM_POLITICI_PRET_ART B
|
|
ON A.ID_POL = B.ID_POL
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON B.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) D
|
|
ON B.ID_VALUTA = D.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE E
|
|
ON B.ID_VALUTA = E.ID_VALUTA
|
|
WHERE C.IN_STOC = 0
|
|
AND C.IN_CRM = 1
|
|
AND C.STERS = 0
|
|
AND C.INACTIV = 0
|
|
ORDER BY C.DENUMIRE;
|
|
|
|
END cursor_articole_k;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_avize(V_LISTAID IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_DISCOUNT OUT NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
V_SEPARATOR VARCHAR2(10) := ',';
|
|
BEGIN
|
|
pack_facturare.initializeaza_facturare(V_ID_UTIL);
|
|
|
|
V_DISCOUNT := 0;
|
|
|
|
OPEN V_CURSOR FOR
|
|
WITH CRS AS
|
|
(SELECT X as ID_VANZARE
|
|
FROM table(charn2collection(V_LISTAID, V_SEPARATOR)))
|
|
SELECT ROWNUM AS ID_C,
|
|
A.ID_ARTICOL,
|
|
A.LOT,
|
|
A.SERIE,
|
|
A.ID_POL,
|
|
A.ID_VALUTA,
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.CURS *
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(A.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
C.CODMAT,
|
|
C.CODBARE,
|
|
C.DENUMIRE,
|
|
NVL(C.UM, '') AS UM,
|
|
0 AS GESTIONABIL,
|
|
A.CANTITATE - NVL(B.CANTITATE, 0) AS CANTITATE,
|
|
A.PROC_TVAV,
|
|
A.ID_JTVA_COLOANA,
|
|
A.ID_GESTIUNE,
|
|
A.CONT,
|
|
A.PRET_CU_TVA AS PRETURI_CU_TVA,
|
|
A.CURS,
|
|
A.MULTIPLICATOR,
|
|
A.PRET_ACHIZITIE,
|
|
A.PRETD,
|
|
A.ID_VALUTAD AS ID_VALUTA_D,
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.CURS *
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) /
|
|
NVL(A.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(D.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
D.NUME_VAL
|
|
FROM (SELECT A1.ID_ARTICOL,
|
|
A1.LOT,
|
|
A1.SERIE,
|
|
A1.ID_POL,
|
|
A1.DISCOUNT_UNITAR,
|
|
SUM(A1.CANTITATE) AS CANTITATE,
|
|
A1.PROC_TVAV,
|
|
A1.ID_JTVA_COLOANA,
|
|
NVL(A1.ID_GESTIUNE, -1000) AS ID_GESTIUNE,
|
|
NVL(A1.CONT, 'XXXX') AS CONT,
|
|
A1.PRET_CU_TVA,
|
|
A1.PRET_ACHIZITIE,
|
|
A1.PRETD,
|
|
A1.ID_VALUTAD,
|
|
A1.PRET,
|
|
A1.ID_VALUTA,
|
|
NVL(B1.CURS, 0) AS CURS,
|
|
NVL(B1.MULTIPLICATOR, 1) AS MULTIPLICATOR
|
|
FROM VANZARI_DETALII A1
|
|
LEFT JOIN VANZARI_CURSURI B1
|
|
ON A1.ID_VANZARE = B1.ID_VANZARE
|
|
AND A1.ID_VALUTA = B1.ID_VALUTA
|
|
WHERE A1.STERS = 0
|
|
AND A1.ID_VANZARE IN (SELECT ID_VANZARE FROM CRS)
|
|
GROUP BY A1.ID_ARTICOL,
|
|
A1.ID_POL,
|
|
A1.LOT,
|
|
A1.SERIE,
|
|
A1.DISCOUNT_UNITAR,
|
|
A1.PROC_TVAV,
|
|
A1.ID_JTVA_COLOANA,
|
|
NVL(A1.ID_GESTIUNE, -1000),
|
|
NVL(A1.CONT, 'XXXX'),
|
|
A1.PRET_CU_TVA,
|
|
A1.PRET_ACHIZITIE,
|
|
A1.PRETD,
|
|
A1.ID_VALUTAD,
|
|
A1.PRET,
|
|
A1.ID_VALUTA,
|
|
NVL(B1.CURS, 0),
|
|
NVL(B1.MULTIPLICATOR, 1)) A
|
|
LEFT JOIN (SELECT A2.ID_ARTICOL,
|
|
A2.LOT,
|
|
A2.SERIE,
|
|
A2.ID_POL,
|
|
A2.DISCOUNT_UNITAR,
|
|
SUM(B2.CANTITATE) AS CANTITATE,
|
|
A2.PROC_TVAV,
|
|
A2.ID_JTVA_COLOANA,
|
|
NVL(A2.ID_GESTIUNE, -1000) AS ID_GESTIUNE,
|
|
NVL(A2.CONT, 'XXXX') AS CONT,
|
|
A2.PRET_CU_TVA,
|
|
A2.PRET_ACHIZITIE,
|
|
A2.PRETD,
|
|
A2.ID_VALUTAD,
|
|
A2.PRET,
|
|
A2.ID_VALUTA
|
|
FROM VANZARI_DETALII A2
|
|
RIGHT JOIN VANZARI_CANTITATI B2
|
|
ON A2.ID_VANZARE_DET = B2.ID_VANZARE_DET_AVIZ
|
|
WHERE A2.STERS = 0
|
|
AND A2.ID_VANZARE IN (SELECT ID_VANZARE FROM CRS)
|
|
AND B2.STERS = 0
|
|
GROUP BY A2.ID_ARTICOL,
|
|
A2.ID_POL,
|
|
A2.LOT,
|
|
A2.SERIE,
|
|
A2.DISCOUNT_UNITAR,
|
|
A2.PROC_TVAV,
|
|
A2.ID_JTVA_COLOANA,
|
|
NVL(A2.ID_GESTIUNE, -1000),
|
|
NVL(A2.CONT, 'XXXX'),
|
|
A2.PRET_CU_TVA,
|
|
A2.PRET_ACHIZITIE,
|
|
A2.PRETD,
|
|
A2.ID_VALUTAD,
|
|
A2.PRET,
|
|
A2.ID_VALUTA) B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
AND A.ID_POL = B.ID_POL
|
|
AND NVL(A.LOT, '+_') = NVL(B.LOT, '+_')
|
|
AND NVL(A.SERIE, '+_') = NVL(B.SERIE, '+_')
|
|
AND A.DISCOUNT_UNITAR = B.DISCOUNT_UNITAR
|
|
AND A.PROC_TVAV = B.PROC_TVAV
|
|
AND NVL(A.ID_JTVA_COLOANA, -9999) = NVL(B.ID_JTVA_COLOANA, -9999)
|
|
AND NVL(A.ID_GESTIUNE, -9999) = NVL(B.ID_GESTIUNE, -9999)
|
|
AND NVL(A.CONT, 'XXXX') = NVL(B.CONT, 'XXXX')
|
|
AND A.PRET_CU_TVA = B.PRET_CU_TVA
|
|
AND A.PRET = B.PRET
|
|
AND A.ID_VALUTA = B.ID_VALUTA
|
|
AND NVL(A.PRET_ACHIZITIE, 0) = NVL(B.PRET_ACHIZITIE, 0)
|
|
AND NVL(A.PRETD, 0) = NVL(B.PRETD, 0)
|
|
AND NVL(A.ID_VALUTAD, -99) = NVL(B.ID_VALUTAD, -99)
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN NOM_VALUTE D
|
|
ON A.ID_VALUTA = D.ID_VALUTA
|
|
WHERE A.CANTITATE <> NVL(B.CANTITATE, 0)
|
|
ORDER BY C.DENUMIRE;
|
|
|
|
END cursor_avize;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_aviz_nir(V_ID_GESTIUNE_DEST IN NUMBER,
|
|
V_ID_FURNIZOR IN NUMBER,
|
|
V_NR_ACT IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
|
|
BEGIN
|
|
OPEN V_CURSOR FOR
|
|
select rownum as id_c,
|
|
rownum as id_temp,
|
|
a.ID_ARTICOL,
|
|
a.LOT,
|
|
a.SERIE,
|
|
a.ID_GESTIUNE,
|
|
b.ID_VALUTA,
|
|
0 as discount_unitar,
|
|
c.CODMAT,
|
|
c.DENUMIRE,
|
|
Nvl(c.UM, Chr(32)) as um,
|
|
1 as gestionabil,
|
|
a.CANT as cantitate,
|
|
a.PROC_TVAV,
|
|
decode(d.nr_pag, 6, 1, 7, 1, 0) as preturi_cu_tva,
|
|
0 as CURS,
|
|
1 as multiplicator,
|
|
a.PRET as preta,
|
|
a.pretv + a.tvav as pretctva,
|
|
a.pretv as pretftva,
|
|
a.tvav,
|
|
0 as pret_val,
|
|
b.nume_val,
|
|
0 as discount_unitar_val,
|
|
0 as tip_valuta,
|
|
a.cont,
|
|
a.pretd,
|
|
a.id_valuta as id_valuta_d
|
|
from rul A
|
|
left join (select id_valuta, nume_val
|
|
from vnom_valute
|
|
where moneda_nationala = 1
|
|
and rownum = 1) b
|
|
on 1 = 1
|
|
left join nom_articole c
|
|
on a.id_articol = c.id_articol
|
|
left join nom_gestiuni d
|
|
on a.id_gestiune = d.id_gestiune
|
|
where a.sters = 0
|
|
and a.id_gestiune = V_ID_GESTIUNE_DEST
|
|
and a.cod in (select max(a1.cod)
|
|
from act a1
|
|
where a1.sters = 0
|
|
and a1.id_partc = V_ID_FURNIZOR
|
|
and a1.scc = '401'
|
|
and a1.nract = V_NR_ACT
|
|
and NVL2(V_ID_SUCURSALA, a1.id_sucursala, -1) =
|
|
NVL(V_ID_SUCURSALA, -1));
|
|
END cursor_aviz_nir;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_retur(V_IN_VALUTA IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
V_COPIERE NUMBER := 0;
|
|
V_PROFORMA NUMBER := 0;
|
|
BEGIN
|
|
pack_facturare.cursor_retur_document(V_IN_VALUTA,
|
|
V_LISTAID,
|
|
V_COPIERE,
|
|
V_PROFORMA,
|
|
V_ID_UTIL,
|
|
V_CURSOR);
|
|
END;
|
|
|
|
PROCEDURE cursor_retur_document(V_IN_VALUTA IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_COPIERE IN NUMBER,
|
|
V_PROFORMA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
V_SEPARATOR VARCHAR2(10) := ',';
|
|
-- V_COPIERE: 1 (COPIERE) GESTIONABIL = NOM_ARTICOLE.IN_STOC, 0 (RETUR) GESTIONABIL = VANZARI_DETALII.ID_GEST <> 0
|
|
-- V_PROFORMA: Daca este proforma (1), fac articolele negestionabile sa pot alege orice cantitate
|
|
BEGIN
|
|
pack_facturare.initializeaza_facturare(V_ID_UTIL);
|
|
|
|
OPEN V_CURSOR FOR
|
|
WITH CRS AS
|
|
(SELECT X as ID_VANZARE
|
|
FROM table(charn2collection(V_LISTAID, V_SEPARATOR)))
|
|
SELECT ROWNUM AS ID_C,
|
|
A.ID_ARTICOL,
|
|
A.LOT,
|
|
A.SERIE,
|
|
A.ID_POL,
|
|
A.ID_VALUTA,
|
|
(CASE
|
|
WHEN NVL(C.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.CURS *
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(A.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(C.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
B.CODMAT,
|
|
B.CODBARE,
|
|
B.DENUMIRE,
|
|
NVL(B.UM, '') AS UM,
|
|
(case
|
|
when V_PROFORMA = 1 then
|
|
0
|
|
when V_COPIERE = 1 then
|
|
B.IN_STOC
|
|
else
|
|
A.GESTIONABIL
|
|
end) AS GESTIONABIL,
|
|
A.CANTITATE,
|
|
A.PROC_TVAV,
|
|
A.ID_JTVA_COLOANA,
|
|
A.PRET_CU_TVA AS PRETURI_CU_TVA,
|
|
A.CURS,
|
|
A.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(C.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.CURS *
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) /
|
|
NVL(A.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretv)
|
|
END) + A.DIFERENTA AS PRET,
|
|
(CASE
|
|
WHEN NVL(C.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(C.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
C.NUME_VAL,
|
|
A.EXPLICATIE,
|
|
nvl(A.ID_GESTIUNE, 0) as ID_GESTIUNE,
|
|
A.PRET_ACHIZITIE,
|
|
A.PRETD,
|
|
A.ID_JTVA_COLOANA_EX
|
|
FROM (SELECT A1.ID_ARTICOL,
|
|
A1.LOT,
|
|
A1.SERIE,
|
|
A1.ID_POL,
|
|
A1.DISCOUNT_UNITAR,
|
|
A1.DIFERENTA,
|
|
--SUM(A1.CANTITATE) AS CANTITATE,
|
|
A1.CANTITATE,
|
|
A1.PROC_TVAV,
|
|
A1.ID_JTVA_COLOANA,
|
|
NVL2(A1.ID_GESTIUNE, 1, 0) AS GESTIONABIL,
|
|
A1.PRET_CU_TVA,
|
|
A1.PRET,
|
|
A1.ID_VALUTA,
|
|
NVL(A2.CURS, 0) AS CURS,
|
|
NVL(A2.MULTIPLICATOR, 1) AS MULTIPLICATOR,
|
|
A1.EXPLICATIE,
|
|
A1.ID_GESTIUNE,
|
|
A1.PRET_ACHIZITIE,
|
|
A1.PRETD,
|
|
A1.ID_JTVA_COLOANA_EX
|
|
FROM VANZARI_DETALII A1
|
|
LEFT JOIN VANZARI_CURSURI A2
|
|
ON A1.ID_VANZARE = A2.ID_VANZARE
|
|
AND A1.ID_VALUTA = A2.ID_VALUTA
|
|
WHERE A1.STERS = 0
|
|
AND A1.ID_VANZARE IN (SELECT ID_VANZARE FROM CRS)) A
|
|
LEFT JOIN NOM_ARTICOLE B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
LEFT JOIN NOM_VALUTE C
|
|
ON A.ID_VALUTA = C.ID_VALUTA
|
|
ORDER BY B.DENUMIRE;
|
|
|
|
END cursor_retur_document;
|
|
-----------------------------------------------------------------
|
|
PROCEDURE cursor_copiere(V_IN_VALUTA IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
V_SEPARATOR VARCHAR2(10) := ',';
|
|
BEGIN
|
|
pack_facturare.initializeaza_facturare(V_ID_UTIL);
|
|
|
|
OPEN V_CURSOR FOR
|
|
WITH CRS AS
|
|
(SELECT X as ID_VANZARE
|
|
FROM table(charn2collection(V_LISTAID, V_SEPARATOR)))
|
|
SELECT ROWNUM AS ID_C,
|
|
A.ID_ARTICOL,
|
|
A.LOT,
|
|
A.SERIE,
|
|
A.ID_POL,
|
|
A.ID_VALUTA,
|
|
(CASE
|
|
WHEN NVL(C.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.CURS *
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(A.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(C.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
B.CODMAT,
|
|
B.CODBARE,
|
|
B.DENUMIRE,
|
|
NVL(B.UM, '') AS UM,
|
|
A.GESTIONABIL,
|
|
A.CANTITATE,
|
|
A.PROC_TVAV,
|
|
A.ID_JTVA_COLOANA,
|
|
A.PRET_CU_TVA AS PRETURI_CU_TVA,
|
|
A.CURS,
|
|
A.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(C.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.CURS *
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval) /
|
|
NVL(A.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretv)
|
|
END) + A.DIFERENTA AS PRET,
|
|
(CASE
|
|
WHEN NVL(C.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(A.PRET, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(C.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
C.NUME_VAL
|
|
FROM (SELECT A1.ID_ARTICOL,
|
|
A1.LOT,
|
|
A1.SERIE,
|
|
A1.ID_POL,
|
|
A1.DISCOUNT_UNITAR,
|
|
A1.DIFERENTA,
|
|
--SUM(A1.CANTITATE) AS CANTITATE,
|
|
A1.CANTITATE,
|
|
A1.PROC_TVAV,
|
|
A1.ID_JTVA_COLOANA,
|
|
NVL2(A1.ID_GESTIUNE, 1, 0) AS GESTIONABIL,
|
|
A1.PRET_CU_TVA,
|
|
A1.PRET,
|
|
A1.ID_VALUTA,
|
|
NVL(A2.CURS, 0) AS CURS,
|
|
NVL(A2.MULTIPLICATOR, 1) AS MULTIPLICATOR
|
|
FROM VANZARI_DETALII A1
|
|
LEFT JOIN VANZARI_CURSURI A2
|
|
ON A1.ID_VANZARE = A2.ID_VANZARE
|
|
AND A1.ID_VALUTA = A2.ID_VALUTA
|
|
WHERE A1.STERS = 0
|
|
AND A1.ID_VANZARE IN (SELECT ID_VANZARE FROM CRS)) A
|
|
LEFT JOIN NOM_ARTICOLE B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
LEFT JOIN NOM_VALUTE C
|
|
ON A.ID_VALUTA = C.ID_VALUTA
|
|
ORDER BY B.DENUMIRE;
|
|
|
|
END cursor_copiere;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_gestiune(V_DATA_CURS IN DATE,
|
|
V_ID_POL IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
V_NR_INREGISTRARI NUMBER(10);
|
|
V_NR_INREGISTRARI_TOT NUMBER(10);
|
|
BEGIN
|
|
pack_facturare.initializeaza_facturare(V_ID_UTIL);
|
|
|
|
-- verificare ca exista cursul pentru valutele din CRM_POLITICI_PRET_ART
|
|
SELECT SUM(CASE
|
|
WHEN B.ID_VALUTA <> pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END),
|
|
SUM(CASE
|
|
WHEN A.ID_VALUTA <> pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END)
|
|
INTO V_NR_INREGISTRARI, V_NR_INREGISTRARI_TOT
|
|
FROM (SELECT DISTINCT A2.ID_VALUTA
|
|
FROM STOC A1
|
|
LEFT JOIN CRM_POLITICI_PRET_ART A2
|
|
ON A1.ID_ARTICOL = A2.ID_ARTICOL
|
|
WHERE A1.ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND A2.ID_POL = V_ID_POL
|
|
AND NVL(A1.ID_SUCURSALA, -99) = NVL(V_ID_SUCURSALA, -99)) A
|
|
LEFT JOIN CURS B
|
|
ON A.ID_VALUTA = B.ID_VALUTA
|
|
AND B.STERS = 0
|
|
AND B.DATA <= V_DATA_CURS
|
|
AND B.DATA2 >= V_DATA_CURS;
|
|
|
|
IF V_NR_INREGISTRARI <> V_NR_INREGISTRARI_TOT THEN
|
|
RAISE_APPLICATION_ERROR(-20005,
|
|
'Nu este setat cursul din data de ' ||
|
|
to_char(V_DATA_CURS, 'DD/MM/YYYY') || ' !');
|
|
END IF;
|
|
|
|
-- nu se mai verifica dreptul pe gestiune
|
|
-- v_id_gestiune este dintre gestiunile pe care are drepturi utilizatorul
|
|
OPEN V_CURSOR FOR
|
|
SELECT ROWNUM as id_c, A.*
|
|
FROM (SELECT A.ID_ARTICOL,
|
|
NULL AS LOT,
|
|
NULL AS SERIE,
|
|
V_ID_GESTIUNE AS ID_GESTIUNE,
|
|
--A.CONT,
|
|
B.ID_POL,
|
|
B.ID_VALUTA,
|
|
D.NUME_LISTA_PRETURI,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(E.CURS, 0) *
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(E.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
C.CODMAT,
|
|
C.CODBARE,
|
|
C.DENUMIRE,
|
|
NVL(C.UM, '') AS UM,
|
|
1 AS GESTIONABIL,
|
|
SUM(NVL(A.CANTS + A.CANT - A.CANTE, 0)) AS CANTITATE,
|
|
B.PROC_TVAV,
|
|
D.PRETURI_CU_TVA,
|
|
E.CURS,
|
|
E.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(E.CURS, 0) *
|
|
ROUND(B.PRET, pack_sesiune.nzecimale_pretvval) /
|
|
NVL(E.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(B.PRET, pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(B.PRET, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
1 - NVL(F.MONEDA_NATIONALA, 1) AS TIP_VALUTA,
|
|
F.NUME_VAL,
|
|
DECODE(B.ID_POL,
|
|
NVL(pack_facturare.nid_politica_stoc,
|
|
B.ID_POL + 1),
|
|
1,
|
|
0) AS MODIFICABIL
|
|
FROM (SELECT ID_ARTICOL, CANT, CANTS, CANTE
|
|
FROM STOC
|
|
WHERE AN = V_AN
|
|
AND LUNA = V_LUNA
|
|
AND ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND NVL(ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)) A
|
|
JOIN (SELECT ID_ARTICOL,
|
|
ID_POL,
|
|
ID_VALUTA,
|
|
DISCOUNT_UNITAR,
|
|
PROC_TVAV,
|
|
PRET
|
|
FROM CRM_POLITICI_PRET_ART
|
|
WHERE ID_POL = V_ID_POL) B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN CRM_POLITICI_PRETURI D
|
|
ON B.ID_POL = D.ID_POL
|
|
LEFT JOIN (SELECT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM CURS
|
|
WHERE DATA <= V_DATA_CURS
|
|
AND DATA2 >= V_DATA_CURS
|
|
AND STERS = 0) E
|
|
ON B.ID_VALUTA = E.ID_VALUTA
|
|
LEFT JOIN NOM_VALUTE F
|
|
ON B.ID_VALUTA = F.ID_VALUTA
|
|
GROUP BY A.ID_ARTICOL,
|
|
-- A.CONT,
|
|
B.ID_POL,
|
|
B.ID_VALUTA,
|
|
D.NUME_LISTA_PRETURI,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(E.CURS, 0) *
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(E.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END),
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(B.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END),
|
|
C.CODMAT,
|
|
C.CODBARE,
|
|
C.DENUMIRE,
|
|
NVL(C.UM, ''),
|
|
C.IN_STOC,
|
|
B.PROC_TVAV,
|
|
D.PRETURI_CU_TVA,
|
|
E.CURS,
|
|
E.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(E.CURS, 0) *
|
|
ROUND(B.PRET,
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(E.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(B.PRET, pack_sesiune.nzecimale_pretv)
|
|
END),
|
|
(CASE
|
|
WHEN NVL(F.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(B.PRET, pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END),
|
|
1 - NVL(F.MONEDA_NATIONALA, 1),
|
|
F.NUME_VAL
|
|
ORDER BY C.DENUMIRE) A
|
|
WHERE A.CANTITATE > 0;
|
|
|
|
END cursor_gestiune;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_gestiuni_articol(V_ID_ARTICOL IN NUMBER,
|
|
V_TIP IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
BEGIN
|
|
OPEN V_CURSOR FOR
|
|
SELECT 0 AS ALES,
|
|
A.ID_GESTIUNE,
|
|
A.CANTITATE,
|
|
A.CONT,
|
|
A.ACONT,
|
|
A.LOT,
|
|
A.SERIE,
|
|
A.PRET,
|
|
A.PRETD,
|
|
A.ID_VALUTA,
|
|
B.NUME_GESTIUNE,
|
|
A.DATAIN,
|
|
A.PRETV,
|
|
A.PRETVCTVA,
|
|
A.ID_PART_REZ,
|
|
A.ID_LUCRARE_REZ,
|
|
C.DENUMIRE AS PART_REZ,
|
|
D.NRORD AS NRORD_REZ,
|
|
E.NUME_VAL
|
|
FROM (SELECT A1.ID_GESTIUNE,
|
|
A2.ID_ARTICOL,
|
|
A2.PRET,
|
|
A2.PRETD,
|
|
A2.ID_VALUTA,
|
|
A2.LOT,
|
|
A2.SERIE,
|
|
SUM(NVL(A2.CANTS + A2.CANT - A2.CANTE, 0)) AS CANTITATE,
|
|
A2.CONT,
|
|
A2.ACONT,
|
|
A2.DATAIN,
|
|
A2.PRETV,
|
|
A2.PRETV + A2.TVAV as PRETVCTVA,
|
|
A2.ID_PART_REZ,
|
|
A2.ID_LUCRARE_REZ
|
|
FROM (SELECT DISTINCT A11.ID_GESTIUNE
|
|
FROM GEST_CORESP_GRUPE_GESTIUNI A11
|
|
LEFT JOIN GEST_CORESP_UTIL_GRUPE A12
|
|
ON A11.ID_GRUPE = A12.ID_GRUPE
|
|
WHERE A11.STERS = 0
|
|
AND A12.STERS = 0
|
|
AND A12.ID_UTIL = V_ID_UTIL
|
|
AND NVL2(V_ID_GESTIUNE, A11.ID_GESTIUNE, 2) =
|
|
NVL(V_ID_GESTIUNE, 2)) A1
|
|
LEFT JOIN STOC A2
|
|
ON A1.ID_GESTIUNE = A2.ID_GESTIUNE
|
|
AND A2.LUNA = V_LUNA
|
|
AND A2.AN = V_AN
|
|
AND NVL2(V_ID_SUCURSALA, A2.ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
AND A2.ID_ARTICOL = V_ID_ARTICOL
|
|
GROUP BY A1.ID_GESTIUNE,
|
|
A2.ID_ARTICOL,
|
|
A2.PRET,
|
|
A2.PRETD,
|
|
A2.ID_VALUTA,
|
|
A2.LOT,
|
|
A2.SERIE,
|
|
A2.CONT,
|
|
A2.ACONT,
|
|
A2.DATAIN,
|
|
A2.PRETV,
|
|
A2.TVAV,
|
|
A2.ID_PART_REZ,
|
|
A2.ID_LUCRARE_REZ) A
|
|
LEFT JOIN NOM_GESTIUNI B
|
|
ON A.ID_GESTIUNE = B.ID_GESTIUNE
|
|
LEFT JOIN NOM_PARTENERI C
|
|
ON A.ID_PART_REZ = C.ID_PART
|
|
LEFT JOIN VNOM_LUCRARI D
|
|
ON A.ID_LUCRARE_REZ = D.ID_LUCRARE
|
|
LEFT JOIN NOM_VALUTE E
|
|
ON A.ID_VALUTA = E.ID_VALUTA
|
|
WHERE A.CANTITATE > 0
|
|
ORDER BY A.DATAIN,
|
|
B.NUME_GESTIUNE,
|
|
A.LOT,
|
|
A.SERIE,
|
|
A.PRET,
|
|
A.PRETV,
|
|
A.CONT,
|
|
A.ACONT,
|
|
C.DENUMIRE,
|
|
D.NRORD;
|
|
|
|
END cursor_gestiuni_articol;
|
|
|
|
-------------------------------------------------------------------
|
|
-- adaugare articol gestionabil pe factura, daca nu exista in stoc
|
|
-- pentru optiunea RF_FACTURARE_FARA_STOC = 1
|
|
-- se selecteaza din stoc datele de pe ultima intrare, ultimele 12 luni
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_gestiuni_articol_stoc0(V_ID_ARTICOL IN NUMBER,
|
|
V_TIP IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
BEGIN
|
|
OPEN V_CURSOR FOR
|
|
SELECT 0 AS ALES,
|
|
A.ID_GESTIUNE,
|
|
A.CANTITATE,
|
|
CAST(NVL2(B.CONT, B.CONT, NVL2(A.CONT, A.CONT, '371')) AS
|
|
VARCHAR2(4)) AS CONT,
|
|
A.ACONT,
|
|
A.LOT,
|
|
A.SERIE,
|
|
NVL(A.PRET, 0.00) AS PRET,
|
|
NVL(A.PRETD, 0.00) AS PRETD,
|
|
A.ID_VALUTA,
|
|
B.NUME_GESTIUNE,
|
|
A.DATAIN,
|
|
NVL(A.PRETV, 0.00) AS PRETV,
|
|
NVL(A.PRETVCTVA, 0.00) AS PRETVCTVA,
|
|
A.ID_PART_REZ,
|
|
A.ID_LUCRARE_REZ,
|
|
C.DENUMIRE AS PART_REZ,
|
|
D.NRORD AS NRORD_REZ,
|
|
E.NUME_VAL
|
|
FROM (SELECT A1.ID_GESTIUNE,
|
|
A2.ID_ARTICOL,
|
|
A2.PRET,
|
|
A2.PRETD,
|
|
A2.ID_VALUTA,
|
|
A2.LOT,
|
|
A2.SERIE,
|
|
1000 AS CANTITATE, -- cantitate suficienta 1000 pentru vanzarea articolelor gestionabile fara stoc
|
|
A2.CONT,
|
|
A2.ACONT,
|
|
A2.DATAIN,
|
|
A2.PRETV,
|
|
A2.PRETV + A2.TVAV as PRETVCTVA,
|
|
CAST(NULL AS Number(10, 0)) AS ID_PART_REZ,
|
|
CAST(NULL AS Number(10, 0)) AS ID_LUCRARE_REZ
|
|
FROM (SELECT DISTINCT A11.ID_GESTIUNE
|
|
FROM GEST_CORESP_GRUPE_GESTIUNI A11
|
|
JOIN GEST_CORESP_UTIL_GRUPE A12
|
|
ON A11.ID_GRUPE = A12.ID_GRUPE
|
|
JOIN NOM_GESTIUNI A13
|
|
ON A11.ID_GESTIUNE = A13.ID_GESTIUNE
|
|
WHERE A11.STERS = 0
|
|
AND A12.STERS = 0
|
|
AND A12.ID_UTIL = V_ID_UTIL
|
|
AND A13.STERS = 0
|
|
AND A13.INACTIV = 0
|
|
AND A13.NR_PAG IN (2, 4, 5, 6, 7)
|
|
AND NVL2(V_ID_GESTIUNE, A11.ID_GESTIUNE, 2) =
|
|
NVL(V_ID_GESTIUNE, 2)) A1
|
|
LEFT JOIN STOC A2
|
|
ON A1.ID_GESTIUNE = A2.ID_GESTIUNE
|
|
AND A2.AN >= V_AN - 1 -- anul precedent si anul curent
|
|
AND A2.PRET <> 0
|
|
AND NVL2(V_ID_SUCURSALA, A2.ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
AND A2.ID_ARTICOL = V_ID_ARTICOL
|
|
GROUP BY A1.ID_GESTIUNE,
|
|
A2.ID_ARTICOL,
|
|
A2.PRET,
|
|
A2.PRETD,
|
|
A2.ID_VALUTA,
|
|
A2.LOT,
|
|
A2.SERIE,
|
|
A2.CONT,
|
|
A2.ACONT,
|
|
A2.DATAIN,
|
|
A2.PRETV,
|
|
A2.TVAV,
|
|
A2.ID_PART_REZ,
|
|
A2.ID_LUCRARE_REZ) A
|
|
LEFT JOIN NOM_GESTIUNI B
|
|
ON A.ID_GESTIUNE = B.ID_GESTIUNE
|
|
LEFT JOIN NOM_PARTENERI C
|
|
ON A.ID_PART_REZ = C.ID_PART
|
|
LEFT JOIN VNOM_LUCRARI D
|
|
ON A.ID_LUCRARE_REZ = D.ID_LUCRARE
|
|
LEFT JOIN NOM_VALUTE E
|
|
ON A.ID_VALUTA = E.ID_VALUTA
|
|
ORDER BY NVL(A.DATAIN, TO_DATE('1900', 'YYYY')) DESC,
|
|
B.NUME_GESTIUNE,
|
|
A.LOT,
|
|
A.SERIE,
|
|
A.PRET,
|
|
A.PRETV,
|
|
A.CONT,
|
|
A.ACONT,
|
|
C.DENUMIRE,
|
|
D.NRORD;
|
|
|
|
END cursor_gestiuni_articol_stoc0;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_gestiuni_articol_retur(V_ID_ARTICOL IN NUMBER,
|
|
V_TIP IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_PRETV IN NUMBER,
|
|
V_DISCOUNT IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_LISTAID IN VARCHAR2,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) IS
|
|
V_SEPARATOR VARCHAR2(10) := ',';
|
|
BEGIN
|
|
OPEN V_CURSOR FOR
|
|
WITH CRS AS
|
|
(
|
|
|
|
SELECT X as ID_VANZARE
|
|
FROM table(charn2collection(V_LISTAID, V_SEPARATOR))
|
|
|
|
)
|
|
SELECT 0 AS ALES,
|
|
A1.ID_GESTIUNE,
|
|
A2.CANTITATE,
|
|
A2.CONT,
|
|
A2.ACONT,
|
|
A2.LOT,
|
|
A2.SERIE,
|
|
A2.PRET,
|
|
A2.PRETD,
|
|
A2.ID_VALUTA,
|
|
B.NUME_GESTIUNE,
|
|
A2.DATAIN,
|
|
A2.PRETV,
|
|
A2.PRETVCTVA,
|
|
A2.ID_PART_REZ,
|
|
A2.ID_LUCRARE_REZ,
|
|
C.DENUMIRE AS PART_REZ,
|
|
D.NRORD AS NRORD_REZ,
|
|
E.NUME_VAL
|
|
FROM (SELECT DISTINCT A11.ID_GESTIUNE
|
|
FROM GEST_CORESP_GRUPE_GESTIUNI A11
|
|
LEFT JOIN GEST_CORESP_UTIL_GRUPE A12
|
|
ON A11.ID_GRUPE = A12.ID_GRUPE
|
|
WHERE A11.STERS = 0
|
|
AND A12.STERS = 0
|
|
AND A12.ID_UTIL = V_ID_UTIL
|
|
AND NVL2(V_ID_GESTIUNE, A11.ID_GESTIUNE, 2) =
|
|
NVL(V_ID_GESTIUNE, 2)) A1
|
|
LEFT JOIN (SELECT SUM(A22.CANTE) AS CANTITATE,
|
|
A22.ID_GESTIUNE,
|
|
A23.NR_PAG,
|
|
A22.ID_ARTICOL,
|
|
A22.PRET,
|
|
A22.PRETD,
|
|
A22.ID_VALUTA,
|
|
A22.LOT,
|
|
A22.SERIE,
|
|
A22.CONT,
|
|
A22.ACONT,
|
|
A22.DATAIN,
|
|
A22.PRETV,
|
|
A22.PRETV + A22.TVAV AS PRETVCTVA,
|
|
A22.ID_PART_REZ,
|
|
A22.ID_LUCRARE_REZ
|
|
FROM (SELECT COD
|
|
FROM VANZARI
|
|
WHERE ID_VANZARE IN (SELECT ID_VANZARE FROM CRS)) A21
|
|
LEFT JOIN RUL A22
|
|
ON A21.COD = A22.COD
|
|
AND A22.STERS = 0
|
|
AND A22.ID_TIP_RULAJ = 0
|
|
AND A22.ID_ARTICOL = V_ID_ARTICOL
|
|
AND NVL2(V_ID_SUCURSALA, A22.ID_SUCURSALA, -99) =
|
|
NVL(V_ID_SUCURSALA, -99)
|
|
LEFT JOIN NOM_GESTIUNI A23
|
|
ON A22.ID_GESTIUNE = A23.ID_GESTIUNE
|
|
GROUP BY A22.ID_GESTIUNE,
|
|
A23.NR_PAG,
|
|
A22.ID_ARTICOL,
|
|
A22.PRET,
|
|
A22.PRETD,
|
|
A22.ID_VALUTA,
|
|
A22.LOT,
|
|
A22.SERIE,
|
|
A22.CONT,
|
|
A22.ACONT,
|
|
A22.DATAIN,
|
|
A22.PRETV,
|
|
A22.TVAV,
|
|
A22.ID_PART_REZ,
|
|
A22.ID_LUCRARE_REZ) A2
|
|
ON A1.ID_GESTIUNE = A2.ID_GESTIUNE
|
|
LEFT JOIN NOM_GESTIUNI B
|
|
ON A1.ID_GESTIUNE = B.ID_GESTIUNE
|
|
LEFT JOIN NOM_PARTENERI C
|
|
ON A2.ID_PART_REZ = C.ID_PART
|
|
LEFT JOIN VNOM_LUCRARI D
|
|
ON A2.ID_LUCRARE_REZ = D.ID_LUCRARE
|
|
LEFT JOIN NOM_VALUTE E
|
|
ON A2.ID_VALUTA = E.ID_VALUTA
|
|
WHERE A2.CANTITATE > 0
|
|
ORDER BY A2.DATAIN,
|
|
B.NUME_GESTIUNE,
|
|
A2.LOT,
|
|
A2.SERIE,
|
|
A2.PRET,
|
|
A2.PRETV,
|
|
A2.CONT,
|
|
A2.ACONT,
|
|
C.DENUMIRE,
|
|
D.NRORD;
|
|
|
|
END cursor_gestiuni_articol_retur;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE adauga_articol_factura_deviz(V_ID_ARTICOL IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_CONT IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_ID_JTVA_COLOANA_EX IN NUMBER DEFAULT NULL,
|
|
V_ID_CTR IN NUMBER DEFAULT NULL,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL,
|
|
V_LOT IN VARCHAR2 DEFAULT NULL) IS
|
|
BEGIN
|
|
INSERT INTO VANZARI_DETALII_TEMP
|
|
(ID_ARTICOL,
|
|
EXPLICATIA,
|
|
SERIE,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
PRET,
|
|
PROC_TVAV,
|
|
ID_JTVA_COLOANA,
|
|
ID_JTVA_COLOANA_EX,
|
|
CANTITATE,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
CONT,
|
|
ID_VALUTA,
|
|
CURS,
|
|
MULTIPLICATOR,
|
|
PRET_CU_TVA,
|
|
IN_STOC,
|
|
ID_TEMP,
|
|
ID_CTR,
|
|
TAXCODE,
|
|
LOT)
|
|
VALUES
|
|
(V_ID_ARTICOL,
|
|
V_EXPLICATIE,
|
|
V_SERIE,
|
|
V_PRET_ACHIZITIE,
|
|
V_PRETD,
|
|
V_ID_VALUTAD,
|
|
V_PRET,
|
|
V_PROC_TVAV,
|
|
V_ID_JTVA_COLOANA,
|
|
V_ID_JTVA_COLOANA_EX,
|
|
V_CANTITATE,
|
|
V_DISCOUNT_UNITAR,
|
|
V_ID_GESTIUNE,
|
|
V_CONT,
|
|
NVL(V_ID_VALUTA, pack_facturare.nid_moneda_nationala),
|
|
DECODE(V_CURS, 0, 1, V_CURS),
|
|
V_MULTIPLICATOR,
|
|
V_PRET_CU_TVA,
|
|
1,
|
|
0,
|
|
V_ID_CTR,
|
|
decode(V_TAXCODE, 0, null, V_TAXCODE),
|
|
V_LOT);
|
|
END adauga_articol_factura_deviz;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE adauga_articol_factura_stoc(V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_CONT IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_ID_RUL_AUX IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL,
|
|
V_LOT IN VARCHAR2 DEFAULT NULL) IS
|
|
lcExplicatia varchar2(240);
|
|
BEGIN
|
|
if pack_facturare.ntip = 50 and nvl(V_ID_RUL_AUX, 0) <> 0 then
|
|
select to_char(V_CANTITATE / ROUND(LUNGIME * LATIME / 1000000, 2)) ||
|
|
' buc. - ' || to_char(LUNGIME) || 'x' || to_char(LATIME)
|
|
into lcExplicatia
|
|
from DEV_ESTIMARI_PRODUSE
|
|
where id_dev_estimare_prod in
|
|
(select id_dev_estimare_prod
|
|
from rul_auxiliar
|
|
where id_rul_aux = V_ID_RUL_AUX)
|
|
and sters = 0;
|
|
end if;
|
|
INSERT INTO VANZARI_DETALII_TEMP
|
|
(ID_ARTICOL,
|
|
SERIE,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
PRET,
|
|
PROC_TVAV,
|
|
ID_JTVA_COLOANA,
|
|
CANTITATE,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
CONT,
|
|
ID_VALUTA,
|
|
CURS,
|
|
MULTIPLICATOR,
|
|
PRET_CU_TVA,
|
|
IN_STOC,
|
|
EXPLICATIA,
|
|
ID_TEMP,
|
|
TAXCODE,
|
|
LOT)
|
|
VALUES
|
|
(V_ID_ARTICOL,
|
|
V_SERIE,
|
|
V_PRET_ACHIZITIE,
|
|
V_PRETD,
|
|
V_ID_VALUTAD,
|
|
V_PRET,
|
|
V_PROC_TVAV,
|
|
V_ID_JTVA_COLOANA,
|
|
V_CANTITATE,
|
|
V_DISCOUNT_UNITAR,
|
|
V_ID_GESTIUNE,
|
|
V_CONT,
|
|
NVL(V_ID_VALUTA, pack_facturare.nid_moneda_nationala),
|
|
DECODE(V_CURS, 0, 1, V_CURS),
|
|
V_MULTIPLICATOR,
|
|
V_PRET_CU_TVA,
|
|
1,
|
|
lcExplicatia,
|
|
0,
|
|
decode(V_TAXCODE, 0, NULL, V_TAXCODE),
|
|
V_LOT);
|
|
END adauga_articol_factura_stoc;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE adauga_articol_factura_stoc(V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_CONT IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER) is
|
|
begin
|
|
adauga_articol_factura_stoc(V_ID_ARTICOL,
|
|
V_SERIE,
|
|
V_PRET_ACHIZITIE,
|
|
V_PRETD,
|
|
V_ID_VALUTAD,
|
|
V_PRET,
|
|
V_ID_VALUTA,
|
|
V_CURS,
|
|
V_MULTIPLICATOR,
|
|
V_PROC_TVAV,
|
|
V_ID_JTVA_COLOANA,
|
|
V_CANTITATE,
|
|
V_DISCOUNT_UNITAR,
|
|
V_ID_GESTIUNE,
|
|
V_CONT,
|
|
V_PRET_CU_TVA,
|
|
null,
|
|
null,
|
|
null,
|
|
null);
|
|
end;
|
|
-------------------------------------------------------------------
|
|
|
|
PROCEDURE adauga_articol_lucrare_pret(V_ID_COMANDA IN NUMBER,
|
|
V_ID_ARTICOL IN NUMBER,
|
|
V_ID_POL IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_ID_GESTIUNE_DEST IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_PRETIN IN NUMBER) IS
|
|
V_PRET CRM_POLITICI_PRET_ART.PRET%TYPE;
|
|
V_DISCOUNT_UNITAR CRM_POLITICI_PRET_ART.DISCOUNT_UNITAR%TYPE;
|
|
V_PROC_TVAV CRM_POLITICI_PRET_ART.PROC_TVAV%TYPE;
|
|
V_ID_VALUTA CRM_POLITICI_PRET_ART.ID_VALUTA%TYPE;
|
|
V_PRETURI_CU_TVA CRM_POLITICI_PRETURI.PRETURI_CU_TVA%TYPE;
|
|
V_DENUMIRE NOM_ARTICOLE.DENUMIRE%TYPE;
|
|
V_CODMAT NOM_ARTICOLE.CODMAT%TYPE;
|
|
V_NR_COMANDA COMENZI.NR_COMANDA%TYPE;
|
|
BEGIN
|
|
BEGIN
|
|
SELECT NVL(V_PRETIN, A.PRET) as PRET,
|
|
NVL(C.PROC_TVAV, (D.COTA_TVA + 100) / 100),
|
|
C.ID_VALUTA,
|
|
B.PRETURI_CU_TVA,
|
|
NVL(C.DISCOUNT_UNITAR, 0) + NVL(A.DISCOUNT_UNITAR, 0)
|
|
INTO V_PRET,
|
|
V_PROC_TVAV,
|
|
V_ID_VALUTA,
|
|
V_PRETURI_CU_TVA,
|
|
V_DISCOUNT_UNITAR
|
|
FROM COMENZI_ELEMENTE A
|
|
LEFT JOIN CRM_POLITICI_PRETURI B
|
|
ON A.ID_POL = B.ID_POL
|
|
LEFT JOIN CRM_POLITICI_PRET_ART C
|
|
ON A.ID_POL = C.ID_POL
|
|
AND A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN JTVA_COLOANE D
|
|
ON D.ID_JTVA_COLOANA = V_ID_JTVA_COLOANA
|
|
WHERE A.ID_COMANDA = V_ID_COMANDA
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_POL = V_ID_POL
|
|
AND A.STERS = 0;
|
|
EXCEPTION
|
|
WHEN TOO_MANY_ROWS THEN
|
|
SELECT DENUMIRE, CODMAT
|
|
INTO V_DENUMIRE, V_CODMAT
|
|
FROM NOM_ARTICOLE
|
|
WHERE ID_ARTICOL = V_ID_ARTICOL;
|
|
|
|
SELECT NR_COMANDA
|
|
INTO V_NR_COMANDA
|
|
FROM COMENZI
|
|
WHERE ID_COMANDA = V_ID_COMANDA;
|
|
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Articolul ' || V_DENUMIRE || ' cu codul ' ||
|
|
V_CODMAT || ' este dublat pe comanda ' ||
|
|
V_NR_COMANDA || ' !');
|
|
END;
|
|
|
|
INSERT INTO VANZARI_DETALII_TEMP
|
|
(ID_ARTICOL,
|
|
ID_POL,
|
|
PRET,
|
|
PRET_CU_TVA,
|
|
PROC_TVAV,
|
|
CANTITATE,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
CONT,
|
|
ID_VALUTA,
|
|
CURS,
|
|
MULTIPLICATOR,
|
|
ID_JTVA_COLOANA,
|
|
IN_STOC,
|
|
ID_GESTIUNE_DEST,
|
|
ID_COMANDA,
|
|
ID_UTIL,
|
|
ID_TEMP)
|
|
SELECT V_ID_ARTICOL,
|
|
V_ID_POL,
|
|
V_PRET,
|
|
V_PRETURI_CU_TVA,
|
|
V_PROC_TVAV,
|
|
V_CANTITATE,
|
|
V_DISCOUNT_UNITAR,
|
|
pack_facturare.nid_gestiune_sursa,
|
|
V_CONT,
|
|
V_ID_VALUTA,
|
|
DECODE(V_CURS, 0, 1, V_CURS),
|
|
V_MULTIPLICATOR,
|
|
V_ID_JTVA_COLOANA,
|
|
1,
|
|
V_ID_GESTIUNE_DEST,
|
|
V_ID_COMANDA,
|
|
V_ID_UTIL,
|
|
COUNT(*) + 1
|
|
FROM VANZARI_DETALII_TEMP;
|
|
|
|
END adauga_articol_lucrare_pret;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE adauga_articol_set(V_ID_VANZARE_SET IN NUMBER,
|
|
V_DENUMIRE IN VARCHAR2,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_UM IN VARCHAR2,
|
|
V_SERIE IN VARCHAR2,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER) is
|
|
begin
|
|
INSERT INTO VANZARI_SETURI_TEMP
|
|
(ID_VANZARE_SET,
|
|
DENUMIRE,
|
|
EXPLICATIE,
|
|
CANTITATE,
|
|
UM,
|
|
SERIE,
|
|
PRET,
|
|
DISCOUNT_UNITAR)
|
|
VALUES
|
|
((-1) * V_ID_VANZARE_SET,
|
|
V_DENUMIRE,
|
|
V_EXPLICATIE,
|
|
V_CANTITATE,
|
|
V_UM,
|
|
V_SERIE,
|
|
V_PRET,
|
|
V_DISCOUNT_UNITAR);
|
|
end adauga_articol_set;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE adauga_articol_factura(V_ID_TEMP IN NUMBER,
|
|
V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_ID_POL IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_PRET_ACHIZITIE_TEMP IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRET_TEMP IN NUMBER,
|
|
V_ID_VALUTA_TEMP IN NUMBER,
|
|
V_PRETURI_CU_TVA_TEMP IN NUMBER,
|
|
V_IN_STOC_TEMP IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_ID_PART_REZ IN NUMBER,
|
|
V_ID_LUCRARE_REZ IN NUMBER,
|
|
V_PRETV_ORIG IN NUMBER,
|
|
V_ID_VANZARE_SET IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL,
|
|
V_LOT IN VARCHAR2 DEFAULT NULL) IS
|
|
V_ID_GESTIUNE2 NOM_GESTIUNI.ID_GESTIUNE%TYPE;
|
|
V_CONT2 VARCHAR2(4);
|
|
V_ID_COMANDA COMENZI.ID_COMANDA%TYPE;
|
|
|
|
V_PRET_ACHIZITIE VANZARI_DETALII.PRET_ACHIZITIE%TYPE;
|
|
V_ID_POLITICA_PRETACH CRM_POLITICI_PRETURI.ID_POL%TYPE;
|
|
V_PROCENT_ADAOS NUMBER(10, 2);
|
|
|
|
V_PRET CRM_POLITICI_PRET_ART.PRET%TYPE;
|
|
V_PROC_TVAV CRM_POLITICI_PRET_ART.PROC_TVAV%TYPE;
|
|
V_ID_VALUTA CRM_POLITICI_PRET_ART.ID_VALUTA%TYPE;
|
|
V_PRETURI_CU_TVA CRM_POLITICI_PRETURI.PRETURI_CU_TVA%TYPE;
|
|
V_IN_STOC NOM_ARTICOLE.IN_STOC%TYPE;
|
|
V_OPT_FACTURARE CONTRACTE.OPT_FACTURARE%TYPE;
|
|
BEGIN
|
|
V_PRET_ACHIZITIE := V_PRET_ACHIZITIE_TEMP;
|
|
IF V_ID_GESTIUNE <> -1000 THEN
|
|
V_ID_GESTIUNE2 := V_ID_GESTIUNE;
|
|
END IF;
|
|
IF V_CONT <> 'XXXX' THEN
|
|
V_CONT2 := V_CONT;
|
|
END IF;
|
|
|
|
IF pack_facturare.ntip IN (2, 6, 26, 52) THEN
|
|
-- factura / aviz pe baza de contract
|
|
BEGIN
|
|
SELECT NVL(OPT_FACTURARE, 3)
|
|
INTO V_OPT_FACTURARE
|
|
FROM CONTRACTE
|
|
WHERE ID_CTR = V_ID_CTR;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_OPT_FACTURARE := 4;
|
|
END;
|
|
END IF;
|
|
|
|
CASE
|
|
WHEN pack_facturare.ntip IN (3, 21, 28, 42, 47) THEN
|
|
-- facturare/aviz din comenzi
|
|
V_ID_COMANDA := to_number(pack_facturare.clistaid);
|
|
|
|
SELECT A.PRET,
|
|
C.PROC_TVAV,
|
|
C.ID_VALUTA,
|
|
B.PRETURI_CU_TVA,
|
|
D.IN_STOC
|
|
INTO V_PRET,
|
|
V_PROC_TVAV,
|
|
V_ID_VALUTA,
|
|
V_PRETURI_CU_TVA,
|
|
V_IN_STOC
|
|
FROM COMENZI_ELEMENTE A
|
|
LEFT JOIN CRM_POLITICI_PRETURI B
|
|
ON A.ID_POL = B.ID_POL
|
|
LEFT JOIN CRM_POLITICI_PRET_ART C
|
|
ON A.ID_POL = C.ID_POL
|
|
AND A.ID_ARTICOL = C.ID_ARTICOL
|
|
LEFT JOIN NOM_ARTICOLE D
|
|
ON A.ID_ARTICOL = D.ID_ARTICOL
|
|
WHERE A.ID_COMANDA = V_ID_COMANDA
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.STERS = 0;
|
|
|
|
WHEN pack_facturare.ntip = 4 THEN
|
|
-- facturare din avize
|
|
SELECT DISTINCT A.PRET,
|
|
A.PROC_TVAV,
|
|
A.ID_VALUTA,
|
|
A.PRET_CU_TVA,
|
|
B.IN_STOC
|
|
INTO V_PRET,
|
|
V_PROC_TVAV,
|
|
V_ID_VALUTA,
|
|
V_PRETURI_CU_TVA,
|
|
V_IN_STOC
|
|
FROM VANZARI_DETALII A
|
|
LEFT JOIN NOM_ARTICOLE B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
WHERE A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_POL = V_ID_POL
|
|
AND NVL(A.ID_GESTIUNE, -1000) = V_ID_GESTIUNE
|
|
AND A.DISCOUNT_UNITAR = V_DISCOUNT_UNITAR
|
|
AND NVL(A.CONT, 'XXXX') = V_CONT
|
|
AND A.ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(cast(CHARN2COLLECTION(pack_facturare.clistaid,
|
|
',') AS num_tab)));
|
|
WHEN pack_facturare.ntip = 45 THEN
|
|
-- facturare restaurant
|
|
BEGIN
|
|
V_ID_POLITICA_PRETACH := to_number(pack_sesiune.getoptiunefirma('ID_POLPRODREST'));
|
|
V_PROCENT_ADAOS := to_number(pack_sesiune.getoptiunefirma('RESTPROCADAOS'));
|
|
V_PRET := V_PRET_TEMP;
|
|
V_ID_VALUTA := V_ID_VALUTA_TEMP;
|
|
V_PRETURI_CU_TVA := V_PRETURI_CU_TVA_TEMP;
|
|
V_IN_STOC := V_IN_STOC_TEMP;
|
|
|
|
SELECT ROUND((A.COTA_TVA + 100) / 100, 2),
|
|
NVL2(B.PRETFTVA,
|
|
round(decode(B.ID_VALUTA,
|
|
pack_def.GetIdMonedaNationala(),
|
|
1,
|
|
V_CURS) * NVL(B.PRETFTVA, 0),
|
|
pack_sesiune.nzecimale_preta),
|
|
NVL2(V_PROCENT_ADAOS,
|
|
round(pack_sesiune.calculeaza_pret_fara_tva(V_PRET,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
(A.COTA_TVA + 100) / 100,
|
|
V_PRETURI_CU_TVA,
|
|
1) * 100 /
|
|
(100 + V_PROCENT_ADAOS),
|
|
pack_sesiune.nzecimale_preta),
|
|
0))
|
|
INTO V_PROC_TVAV, V_PRET_ACHIZITIE
|
|
FROM JTVA_COLOANE A
|
|
LEFT JOIN (SELECT PRETFTVA, ID_VALUTA
|
|
FROM CRM_POLITICI_PRET_ART
|
|
WHERE NVL2(V_ID_POLITICA_PRETACH, ID_POL, 1) =
|
|
NVL(V_ID_POLITICA_PRETACH, 2)
|
|
AND ID_ARTICOL = V_ID_ARTICOL) B
|
|
ON 1 = 1
|
|
WHERE A.ID_JTVA_COLOANA = V_ID_JTVA_COLOANA;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu a fost gasita cota de TVA! (FACT-018 : ' ||
|
|
V_ID_ARTICOL || ')');
|
|
END;
|
|
WHEN V_OPT_FACTURARE = 3 THEN
|
|
-- facturare/aviz de pe contract cu preturile de pe contract
|
|
BEGIN
|
|
SELECT DECODE(A.PRET_UNITAR, 0, V_PRET_TEMP, A.PRET_UNITAR),
|
|
B.PROC_TVAV,
|
|
B.ID_VALUTA,
|
|
A.PRET_CU_TVA,
|
|
C.IN_STOC
|
|
INTO V_PRET,
|
|
V_PROC_TVAV,
|
|
V_ID_VALUTA,
|
|
V_PRETURI_CU_TVA,
|
|
V_IN_STOC
|
|
FROM CTR_ARTICOLE A
|
|
LEFT JOIN CRM_POLITICI_PRET_ART B
|
|
ON A.ID_POL_ART = B.ID_POL_ART
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON B.ID_ARTICOL = C.ID_ARTICOL
|
|
WHERE B.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_CTR = V_ID_CTR
|
|
AND B.ID_POL = V_ID_POL;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
BEGIN
|
|
SELECT ROUND((COTA_TVA + 100) / 100, 2)
|
|
INTO V_PROC_TVAV
|
|
FROM JTVA_COLOANE
|
|
WHERE ID_JTVA_COLOANA = V_ID_JTVA_COLOANA;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu a fost gasita cota de TVA! (FACT-012 : ' ||
|
|
V_ID_ARTICOL || ')');
|
|
END;
|
|
|
|
V_PRET := V_PRET_TEMP;
|
|
V_ID_VALUTA := V_ID_VALUTA_TEMP;
|
|
V_PRETURI_CU_TVA := V_PRETURI_CU_TVA_TEMP;
|
|
V_IN_STOC := V_IN_STOC_TEMP;
|
|
END;
|
|
|
|
ELSE
|
|
BEGIN
|
|
SELECT ROUND((COTA_TVA + 100) / 100, 2)
|
|
INTO V_PROC_TVAV
|
|
FROM JTVA_COLOANE
|
|
WHERE ID_JTVA_COLOANA = V_ID_JTVA_COLOANA;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu a fost gasita cota de TVA! (FACT-013 : ' ||
|
|
V_ID_ARTICOL || ')');
|
|
END;
|
|
|
|
V_PRET := V_PRET_TEMP;
|
|
V_ID_VALUTA := V_ID_VALUTA_TEMP;
|
|
V_PRETURI_CU_TVA := V_PRETURI_CU_TVA_TEMP;
|
|
V_IN_STOC := V_IN_STOC_TEMP;
|
|
/* SELECT A.PRET,
|
|
A.PROC_TVAV,
|
|
A.ID_VALUTA,
|
|
B.PRETURI_CU_TVA,
|
|
C.IN_STOC
|
|
INTO V_PRET,
|
|
V_PROC_TVAV,
|
|
V_ID_VALUTA,
|
|
V_PRETURI_CU_TVA,
|
|
V_IN_STOC
|
|
FROM CRM_POLITICI_PRET_ART A
|
|
LEFT JOIN CRM_POLITICI_PRETURI B ON A.ID_POL = B.ID_POL
|
|
LEFT JOIN NOM_ARTICOLE C ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
WHERE A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_POL = V_ID_POL;*/
|
|
|
|
END CASE;
|
|
|
|
INSERT INTO VANZARI_DETALII_TEMP
|
|
(ID_TEMP,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
LOT,
|
|
EXPLICATIA,
|
|
ID_POL,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
PRET,
|
|
PRET_CU_TVA,
|
|
PROC_TVAV,
|
|
CANTITATE,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
CONT,
|
|
ID_VALUTA,
|
|
CURS,
|
|
MULTIPLICATOR,
|
|
ID_JTVA_COLOANA,
|
|
IN_STOC,
|
|
ID_VANZARE_SET,
|
|
ID_PART_REZ,
|
|
ID_LUCRARE_REZ,
|
|
PRETV_ORIG,
|
|
CUSTODIE,
|
|
ID_CTR,
|
|
ID_UTIL,
|
|
TAXCODE)
|
|
VALUES
|
|
(V_ID_TEMP,
|
|
V_ID_ARTICOL,
|
|
V_SERIE,
|
|
V_LOT,
|
|
V_EXPLICATIE,
|
|
V_ID_POL,
|
|
NVL(V_PRET_ACHIZITIE, 0),
|
|
NVL(V_PRETD, 0),
|
|
V_ID_VALUTAD,
|
|
V_PRET,
|
|
V_PRETURI_CU_TVA,
|
|
V_PROC_TVAV,
|
|
V_CANTITATE,
|
|
V_DISCOUNT_UNITAR,
|
|
V_ID_GESTIUNE2,
|
|
V_CONT2,
|
|
V_ID_VALUTA,
|
|
DECODE(V_CURS, 0, 1, V_CURS),
|
|
V_MULTIPLICATOR,
|
|
V_ID_JTVA_COLOANA,
|
|
V_IN_STOC,
|
|
(-1) * V_ID_VANZARE_SET,
|
|
V_ID_PART_REZ,
|
|
V_ID_LUCRARE_REZ,
|
|
V_PRETV_ORIG,
|
|
(CASE WHEN pack_facturare.ntip IN (42, 47) OR
|
|
pack_facturare.v_date_gestiune.cont = '357' THEN 1 ELSE 0 END),
|
|
V_ID_CTR,
|
|
V_ID_UTIL,
|
|
decode(V_TAXCODE, 0, NULL, V_TAXCODE));
|
|
|
|
END adauga_articol_factura;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE sterge_articol_factura(V_ID_TEMP IN NUMBER,
|
|
V_ID_UTIL IN NUMBER) IS
|
|
BEGIN
|
|
DELETE FROM VANZARI_DETALII_TEMP WHERE ID_TEMP = V_ID_TEMP;
|
|
END sterge_articol_factura;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE adauga_diferente_pret(V_SIR_ID_TEMP IN VARCHAR2,
|
|
V_SIR_DIFERENTA IN VARCHAR,
|
|
V_ID_UTIL IN NUMBER) IS
|
|
V_SEPARATOR VARCHAR2(1) := '|';
|
|
BEGIN
|
|
MERGE INTO VANZARI_DETALII_TEMP A
|
|
USING (SELECT ID_TEMP, SUM(DIFERENTA) AS DIFERENTA
|
|
FROM (SELECT to_number(substr(V_SIR_ID_TEMP,
|
|
decode(rownum,
|
|
1,
|
|
1,
|
|
instr(V_SIR_ID_TEMP,
|
|
V_SEPARATOR,
|
|
1,
|
|
rownum - 1) + 1),
|
|
instr(V_SIR_ID_TEMP,
|
|
V_SEPARATOR,
|
|
1,
|
|
rownum) -
|
|
decode(rownum,
|
|
1,
|
|
0,
|
|
instr(V_SIR_ID_TEMP,
|
|
V_SEPARATOR,
|
|
1,
|
|
rownum - 1)) - 1)) AS ID_TEMP,
|
|
to_number(substr(V_SIR_DIFERENTA,
|
|
decode(rownum,
|
|
1,
|
|
1,
|
|
instr(V_SIR_DIFERENTA,
|
|
V_SEPARATOR,
|
|
1,
|
|
rownum - 1) + 1),
|
|
instr(V_SIR_DIFERENTA,
|
|
V_SEPARATOR,
|
|
1,
|
|
rownum) -
|
|
decode(rownum,
|
|
1,
|
|
0,
|
|
instr(V_SIR_DIFERENTA,
|
|
V_SEPARATOR,
|
|
1,
|
|
rownum - 1)) - 1)) AS DIFERENTA
|
|
FROM dual
|
|
CONNECT BY level <=
|
|
length(V_SIR_ID_TEMP) -
|
|
length(REPLACE(V_SIR_ID_TEMP, V_SEPARATOR)))
|
|
GROUP BY ID_TEMP) B
|
|
ON (A.ID_TEMP = B.ID_TEMP)
|
|
WHEN MATCHED THEN
|
|
UPDATE SET DIFERENTA = B.DIFERENTA;
|
|
END adauga_diferente_pret;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE adauga_rata_factura(V_ID_RATA IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_MULTIPLICATOR IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL) IS
|
|
V_CANTITATE VANZARI_DETALII.CANTITATE%TYPE := 1;
|
|
V_PRETURI_CU_TVA VANZARI_DETALII.PRET_CU_TVA%TYPE;
|
|
V_PROC_TVAV VANZARI_DETALII.PROC_TVAV%TYPE;
|
|
V_ID_CTR CONTRACTE.ID_CTR%TYPE;
|
|
|
|
V_ID_VALUTA NOM_VALUTE.ID_VALUTA%TYPE;
|
|
lnIdTemp NUMBER(10);
|
|
BEGIN
|
|
SELECT (B.PROC_TVA + 100) / 100 AS PROC_TVAV,
|
|
A.ID_VALUTA,
|
|
A.ID_CTR,
|
|
A.PRET_CU_TVA
|
|
INTO V_PROC_TVAV, V_ID_VALUTA, V_ID_CTR, V_PRETURI_CU_TVA
|
|
FROM CTR_SCADENTAR A
|
|
LEFT JOIN CONTRACTE B
|
|
ON A.ID_CTR = B.ID_CTR
|
|
WHERE A.ID_RATA = V_ID_RATA;
|
|
|
|
SELECT COUNT(*) + 1 INTO lnIdTemp from vanzari_detalii_temp;
|
|
|
|
INSERT INTO VANZARI_DETALII_TEMP
|
|
(ID_RATA,
|
|
PRET,
|
|
PROC_TVAV,
|
|
CANTITATE,
|
|
ID_VALUTA,
|
|
CURS,
|
|
MULTIPLICATOR,
|
|
EXPLICATIA,
|
|
PRET_CU_TVA,
|
|
ID_JTVA_COLOANA,
|
|
ID_CTR,
|
|
ID_UTIL,
|
|
ID_TEMP,
|
|
TAXCODE)
|
|
VALUES
|
|
(V_ID_RATA,
|
|
V_PRET,
|
|
V_PROC_TVAV,
|
|
V_CANTITATE,
|
|
V_ID_VALUTA,
|
|
V_CURS,
|
|
V_MULTIPLICATOR,
|
|
V_EXPLICATIE,
|
|
V_PRETURI_CU_TVA,
|
|
V_ID_JTVA_COLOANA,
|
|
V_ID_CTR,
|
|
V_ID_UTIL,
|
|
lnIdTemp,
|
|
decode(V_TAXCODE, 0, NULL, V_TAXCODE));
|
|
|
|
END adauga_rata_factura;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE sterge_rata_factura(V_ID_RATA IN NUMBER, V_ID_UTIL IN NUMBER) IS
|
|
BEGIN
|
|
DELETE FROM VANZARI_DETALII_TEMP WHERE ID_RATA = V_ID_RATA;
|
|
END sterge_rata_factura;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE sterge_proforma_old(V_ID_PROFORMA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER) IS
|
|
V_STERS NUMBER(1) := 1;
|
|
V_NESTERS NUMBER(1) := 0;
|
|
V_DATAORA DATE := SYSDATE;
|
|
|
|
BEGIN
|
|
UPDATE PROFORME_DETALII
|
|
SET STERS = V_STERS, ID_UTILS = V_ID_UTIL, DATAORAS = V_DATAORA
|
|
WHERE ID_PROFORMA = V_ID_PROFORMA
|
|
AND STERS = V_NESTERS;
|
|
|
|
UPDATE PROFORME
|
|
SET STERS = V_STERS, ID_UTILS = V_ID_UTIL, DATAORAS = V_DATAORA
|
|
WHERE ID_PROFORMA = V_ID_PROFORMA;
|
|
|
|
END sterge_proforma_old;
|
|
|
|
-------------------------------------------------------------------
|
|
PROCEDURE sterge_factura(V_ID_VANZARE IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_ID_UTIL IN NUMBER) IS
|
|
TYPE sir_id_rata IS TABLE OF VANZARI_DETALII.ID_RATA%TYPE;
|
|
arr_id_rata sir_id_rata;
|
|
|
|
V_COD ACT.COD%TYPE;
|
|
V_ID_SET XSETS.ID_SET%TYPE := 0;
|
|
V_STERS NUMBER(1) := 1;
|
|
V_NESTERS NUMBER(1) := 0;
|
|
V_DATAORA DATE := SYSDATE;
|
|
V_TIP VANZARI.TIP%TYPE;
|
|
|
|
V_NR_AVIZE_FACT NUMBER(10);
|
|
V_NR_FACT_RETUR NUMBER(10);
|
|
V_ID_COMANDA COMENZI.ID_COMANDA%TYPE;
|
|
BEGIN
|
|
-- pentru o factura :
|
|
-- verific daca exista facturi de retur
|
|
SELECT COUNT(*)
|
|
INTO V_NR_FACT_RETUR
|
|
FROM VANZARI_CORESP
|
|
WHERE STERS = 0
|
|
AND ID_VANZARE_AVIZ = V_ID_VANZARE
|
|
AND TIP = 3;
|
|
|
|
IF V_NR_FACT_RETUR > 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Pentru acesta factura s-au emis facturi de retur. Trebuie sa stergeti mai intai factura de retur!');
|
|
END IF;
|
|
|
|
-- ptr. un aviz normal:
|
|
-- verific daca exista facturi sau avize de retur pe avizul resp.
|
|
SELECT COUNT(*)
|
|
INTO V_NR_AVIZE_FACT
|
|
FROM VANZARI_CORESP
|
|
WHERE STERS = 0
|
|
AND ID_VANZARE_AVIZ = V_ID_VANZARE
|
|
AND TIP IN (1, 2);
|
|
|
|
IF V_NR_AVIZE_FACT > 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Pe acest aviz s-au emis facturi / aviz de retur. Trebuie sa stergeti mai intai facturile / avizul de retur!');
|
|
END IF;
|
|
|
|
-- ptr. o factura din aviz:
|
|
-- verific daca sunt avize de retur pe avizele pentru care s-a emis factura resp.
|
|
SELECT COUNT(*)
|
|
INTO V_NR_AVIZE_FACT
|
|
FROM VANZARI_CORESP
|
|
WHERE STERS = 0
|
|
AND ID_VANZARE_AVIZ IN (SELECT ID_VANZARE_AVIZ
|
|
FROM VANZARI_CORESP
|
|
WHERE ID_VANZARE_FACT = V_ID_VANZARE
|
|
AND TIP = 1)
|
|
AND TIP = 2;
|
|
|
|
IF V_NR_AVIZE_FACT > 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Pe unul dintre avizele facturate s-a emis si aviz de retur! ' ||
|
|
'Trebuie sa stergeti avizul de retur mai intai!');
|
|
END IF;
|
|
|
|
UPDATE VANZARI
|
|
SET STERS = V_STERS, ID_UTILS = V_ID_UTIL, DATAORAS = V_DATAORA
|
|
WHERE ID_VANZARE = V_ID_VANZARE
|
|
RETURNING COD, TIP, ID_COMANDA INTO V_COD, V_TIP, V_ID_COMANDA;
|
|
|
|
CASE
|
|
WHEN V_TIP = 24 THEN
|
|
-- aviz de retur
|
|
UPDATE VANZARI
|
|
SET FACTURAT = 0, ID_UTILFACT = NULL, DATA_FACTURAT = NULL
|
|
WHERE ID_VANZARE IN (SELECT ID_VANZARE_AVIZ
|
|
FROM VANZARI_CORESP
|
|
WHERE ID_VANZARE_FACT = V_ID_VANZARE
|
|
AND STERS = 0)
|
|
AND FACTURAT = 1;
|
|
|
|
WHEN V_TIP > 20 and
|
|
V_TIP not in (pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
pack_facturare.nTipNotaPlata) THEN
|
|
-- alte tipuri de avize
|
|
UPDATE VANZARI_CANTITATI
|
|
SET STERS = 1
|
|
WHERE ID_VANZARE_DET_AVIZ IN
|
|
(SELECT ID_VANZARE_DET AS ID_VANZARE_DET_AVIZ
|
|
FROM VANZARI_DETALII
|
|
WHERE ID_VANZARE = V_ID_VANZARE
|
|
AND STERS = 0);
|
|
|
|
WHEN V_TIP = 4 THEN
|
|
-- factura din aviz
|
|
UPDATE VANZARI
|
|
SET FACTURAT = 0, ID_UTILFACT = NULL, DATA_FACTURAT = NULL
|
|
WHERE ID_VANZARE IN (SELECT ID_VANZARE_AVIZ
|
|
FROM VANZARI_CORESP
|
|
WHERE ID_VANZARE_FACT = V_ID_VANZARE
|
|
AND STERS = 0)
|
|
AND FACTURAT = 1;
|
|
|
|
UPDATE VANZARI_CANTITATI
|
|
SET STERS = 1
|
|
WHERE ID_VANZARE_DET IN
|
|
(SELECT ID_VANZARE_DET
|
|
FROM VANZARI_DETALII
|
|
WHERE ID_VANZARE = V_ID_VANZARE);
|
|
|
|
WHEN V_TIP = pack_facturare.nTipFacturaRestaurant THEN
|
|
SELECT DISTINCT ID_SET
|
|
INTO V_ID_SET
|
|
FROM ACT
|
|
WHERE COD IN
|
|
(SELECT COD FROM VANZARI WHERE ID_VANZARE = V_ID_VANZARE);
|
|
|
|
ELSE
|
|
V_STERS := 1;
|
|
END CASE;
|
|
|
|
IF V_ID_COMANDA IS NOT NULL THEN
|
|
UPDATE COMENZI_ELEMENTE
|
|
SET STERS = V_STERS, DATAORAS = V_DATAORA, ID_UTILS = V_ID_UTIL
|
|
WHERE ID_COMANDA = V_ID_COMANDA
|
|
AND CANTITATE < 0;
|
|
END IF;
|
|
|
|
UPDATE VANZARI_DETALII
|
|
SET STERS = V_STERS, ID_UTILS = V_ID_UTIL, DATAORAS = V_DATAORA
|
|
WHERE ID_VANZARE = V_ID_VANZARE
|
|
AND STERS = V_NESTERS
|
|
RETURNING ID_RATA BULK COLLECT INTO arr_id_rata;
|
|
|
|
IF V_TIP IN (2, 6, 52) THEN
|
|
FOR i IN arr_id_rata.FIRST .. arr_id_rata.LAST LOOP
|
|
IF arr_id_rata(i) IS NOT NULL THEN
|
|
UPDATE CTR_RATE_FACTURI
|
|
SET STERS = V_STERS,
|
|
ID_UTILS = V_ID_UTIL,
|
|
DATAORAS = V_DATAORA
|
|
WHERE ID_FACT IN
|
|
(SELECT DISTINCT ID_FACT FROM ACT WHERE COD = V_COD)
|
|
AND ID_RATA = arr_id_rata(i)
|
|
AND STERS = V_NESTERS;
|
|
END IF;
|
|
END LOOP;
|
|
|
|
END IF;
|
|
|
|
UPDATE VANZARI_CORESP
|
|
SET STERS = V_STERS
|
|
WHERE ID_VANZARE_FACT = V_ID_VANZARE
|
|
OR ID_VANZARE_AVIZ = V_ID_VANZARE;
|
|
|
|
CASE
|
|
WHEN V_TIP IN (pack_facturare.nTipFacturaRestaurant, nTipNotaPlata) AND
|
|
V_ID_SET <>
|
|
25000 + pack_facturare.nTipFacturaRestaurant - 1 + 10 then
|
|
pack_restaurant.sterge_vanzare(V_ID_VANZARE, V_ID_UTIL);
|
|
|
|
WHEN V_TIP = pack_facturare.nTipFacturaHotel then
|
|
pack_hotel.sterge_vanzare(V_ID_VANZARE, V_ID_UTIL);
|
|
|
|
WHEN V_TIP = pack_facturare.nTipFacturaACN then
|
|
-- apelez cu execute immediate pentru ca nu exista pack_acn decat pe firma ACN
|
|
if pack_migrare.ObjectExist('PACK_ACN') = 1 then
|
|
execute immediate 'begin pack_acn.sterge_vanzare(:1, :2); end;'
|
|
using V_ID_VANZARE, V_ID_UTIL;
|
|
end if;
|
|
|
|
ELSE
|
|
NULL;
|
|
END CASE;
|
|
|
|
END sterge_factura;
|
|
|
|
-------------------------------------------------------------------
|
|
PROCEDURE sterge_proforma(V_ID_VANZARE IN NUMBER, V_ID_UTIL IN NUMBER) IS
|
|
TYPE sir_id_rata IS TABLE OF VANZARI_DETALII.ID_RATA%TYPE;
|
|
arr_id_rata sir_id_rata;
|
|
|
|
V_COD ACT.COD%TYPE;
|
|
V_ID_SET XSETS.ID_SET%TYPE := 0;
|
|
V_STERS NUMBER(1) := 1;
|
|
V_NESTERS NUMBER(1) := 0;
|
|
V_DATAORA DATE := SYSDATE;
|
|
V_TIP VANZARI.TIP%TYPE;
|
|
|
|
V_NR_AVIZE_FACT NUMBER(10);
|
|
V_NR_FACT_RETUR NUMBER(10);
|
|
V_ID_COMANDA COMENZI.ID_COMANDA%TYPE;
|
|
BEGIN
|
|
|
|
UPDATE VANZARI
|
|
SET STERS = V_STERS, ID_UTILS = V_ID_UTIL, DATAORAS = V_DATAORA
|
|
WHERE ID_VANZARE = V_ID_VANZARE;
|
|
|
|
UPDATE VANZARI_DETALII
|
|
SET STERS = V_STERS, ID_UTILS = V_ID_UTIL, DATAORAS = V_DATAORA
|
|
WHERE ID_VANZARE = V_ID_VANZARE
|
|
AND STERS = V_NESTERS;
|
|
|
|
END sterge_proforma;
|
|
|
|
PROCEDURE scrie_proforma(V_TOTFTVA IN NUMBER,
|
|
V_TOTTVA IN NUMBER,
|
|
V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER) is
|
|
begin
|
|
pack_facturare.scrie_in_vanzari(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
pack_facturare.nid_vanzare);
|
|
if pack_facturare.nid_vanzare is not null then
|
|
V_ID_VANZARE := pack_facturare.nid_vanzare;
|
|
|
|
-- completez vanzari.eproforma
|
|
update vanzari
|
|
set eproforma = 1
|
|
where id_vanzare = pack_facturare.nid_vanzare;
|
|
end if;
|
|
end;
|
|
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_proforma_old(V_DISCOUNT_PROFORMA IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_ID_PROFORMA OUT NUMBER,
|
|
V_NUMAR_ACT OUT NUMBER) IS
|
|
|
|
V_DATAORA DATE := SYSDATE;
|
|
|
|
BEGIN
|
|
pack_serii_numere.dezaloca_numar(pack_facturare.nid_tipfactura);
|
|
pack_facturare.ndiscount_evidentiat := V_DISCOUNT_EVIDENTIAT;
|
|
pack_facturare.genereaza_numar_proforma(V_NUMAR_ACT);
|
|
|
|
INSERT /*+ APPEND */
|
|
INTO PROFORME
|
|
(id_util,
|
|
dataora,
|
|
id_part,
|
|
id_comanda,
|
|
numar_act,
|
|
tip,
|
|
data_act,
|
|
discount,
|
|
discount_evidentiat,
|
|
text_aditional,
|
|
in_valuta,
|
|
id_sucursala)
|
|
VALUES
|
|
(pack_facturare.nid_util,
|
|
V_DATAORA,
|
|
pack_facturare.nid_part,
|
|
pack_facturare.nid_comanda,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.ntip,
|
|
pack_facturare.ddata_act,
|
|
V_DISCOUNT_PROFORMA,
|
|
pack_facturare.ndiscount_evidentiat,
|
|
REPLACE(V_TEXT_ADITIONAL, CHR(13) || CHR(10), CHR(32)),
|
|
pack_facturare.nin_valuta,
|
|
pack_facturare.nid_sucursala)
|
|
RETURNING ID_PROFORMA INTO V_ID_PROFORMA;
|
|
|
|
pack_facturare.scrie_cursuri_proforma(V_ID_PROFORMA);
|
|
|
|
pack_facturare.scrie_seturi_proforma;
|
|
|
|
INSERT /*+ APPEND */
|
|
INTO PROFORME_DETALII
|
|
(ID_PROFORMA,
|
|
ID_ARTICOL,
|
|
ID_POL,
|
|
CANTITATE,
|
|
PRET,
|
|
PROC_TVAV,
|
|
ID_JTVA_COLOANA,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
ID_VALUTA,
|
|
EXPLICATIE,
|
|
CONT,
|
|
PRET_CU_TVA,
|
|
SERIE,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
ID_CTR,
|
|
ID_PROFORMA_SET)
|
|
SELECT V_ID_PROFORMA AS ID_PROFORMA,
|
|
ID_ARTICOL,
|
|
ID_POL,
|
|
CANTITATE,
|
|
PRET,
|
|
PROC_TVAV,
|
|
ID_JTVA_COLOANA,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
ID_VALUTA,
|
|
EXPLICATIA AS EXPLICATIE,
|
|
CONT,
|
|
PRET_CU_TVA,
|
|
SERIE,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
ID_CTR,
|
|
DECODE(ID_VANZARE_SET, 0, NULL, ID_VANZARE_SET) AS ID_PROFORMA_SET
|
|
FROM VANZARI_DETALII_TEMP;
|
|
|
|
IF SQL%ROWCOUNT = 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu exista articole in lista de vanzare! (FACT-001)');
|
|
END IF;
|
|
|
|
END scrie_proforma_old;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE inchide_comanda IS
|
|
BEGIN
|
|
INSERT INTO COMENZI_ELEMENTE
|
|
(ID_COMANDA,
|
|
ID_ARTICOL,
|
|
ID_POL,
|
|
PRET,
|
|
DISCOUNT_UNITAR,
|
|
CANTITATE,
|
|
ID_VALUTA,
|
|
PRET_CU_TVA)
|
|
SELECT to_number(pack_facturare.clistaid) AS ID_COMANDA,
|
|
A.ID_ARTICOL,
|
|
A.ID_POL,
|
|
A.PRET,
|
|
A.DISCOUNT_UNITAR,
|
|
NVL(C.CANTITATE, 0) + NVL(B.CANTITATE, 0) - A.CANTITATE AS CANTITATE,
|
|
A.ID_VALUTA,
|
|
A.PRET_CU_TVA
|
|
FROM COMENZI_ELEMENTE A
|
|
LEFT JOIN (SELECT ID_ARTICOL,
|
|
ID_POL,
|
|
ID_VALUTA,
|
|
SUM(CANTITATE) AS CANTITATE
|
|
FROM VANZARI_DETALII_TEMP
|
|
GROUP BY ID_ARTICOL, ID_POL, ID_VALUTA) B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
AND A.ID_POL = B.ID_POL
|
|
AND A.ID_VALUTA = B.ID_VALUTA
|
|
LEFT JOIN (SELECT B.ID_ARTICOL,
|
|
B.ID_POL,
|
|
B.ID_VALUTA,
|
|
SUM(B.CANTITATE) AS CANTITATE
|
|
FROM VANZARI A
|
|
LEFT JOIN VANZARI_DETALII B
|
|
ON A.ID_VANZARE = B.ID_VANZARE
|
|
AND B.STERS = 0
|
|
WHERE A.ID_COMANDA = to_number(pack_facturare.clistaid)
|
|
AND A.STERS = 0
|
|
GROUP BY B.ID_ARTICOL, B.ID_POL, B.ID_VALUTA) C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
AND A.ID_POL = C.ID_POL
|
|
AND A.ID_VALUTA = C.ID_VALUTA
|
|
WHERE A.STERS = 0
|
|
AND A.ID_COMANDA = to_number(pack_facturare.clistaid)
|
|
AND A.CANTITATE > NVL(C.CANTITATE, 0) + NVL(B.CANTITATE, 0);
|
|
|
|
END inchide_comanda;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_avize_lucrare(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_ID_SERIE_ACT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare) IS
|
|
CURSOR CRS IS
|
|
SELECT ROWNUM AS NRCRT, ID_COMANDA, ID_GESTIUNE
|
|
FROM (SELECT ID_COMANDA, ID_GESTIUNE
|
|
FROM COMENZI
|
|
WHERE STERS = 0
|
|
AND ID_LUCRARE = pack_facturare.nid_lucrare
|
|
-- modificare 11.07
|
|
AND ID_COMANDA IN
|
|
(SELECT ID_COMANDA FROM VANZARI_DETALII_TEMP)
|
|
-- AND ID_GESTIUNE IN
|
|
-- (SELECT DISTINCT ID_GESTIUNE_DEST FROM VANZARI_DETALII_TEMP)
|
|
-- modificare 11.07 ^
|
|
ORDER BY ID_COMANDA);
|
|
CRS_LINIE CRS%ROWTYPE;
|
|
|
|
TYPE tab_detalii_type IS TABLE OF vanzari_detalii_temp%ROWTYPE;
|
|
tab_detalii tab_detalii_type;
|
|
|
|
NR_AVIZ NUMBER(5) := 0;
|
|
NR_ELEMENT NUMBER(5) := 0;
|
|
ELEM_OPTIUNE NUMBER(5) := 0;
|
|
BEGIN
|
|
DELETE FROM VANZARI_TEMP;
|
|
pack_contafin.sterge_temp_actrul();
|
|
pack_facturare.initializeaza_setari_facturare();
|
|
pack_facturare.ndiscount_evidentiat := V_DISCOUNT_EVIDENTIAT;
|
|
pack_facturare.nid_serie := V_ID_SERIE_ACT;
|
|
ELEM_OPTIUNE := NVL(pack_sesiune.getoptiunefirma('NRMAXELEMPAG'),
|
|
9999);
|
|
|
|
OPEN CRS;
|
|
LOOP
|
|
FETCH CRS
|
|
INTO CRS_LINIE;
|
|
EXIT WHEN CRS%NOTFOUND;
|
|
|
|
IF CRS_LINIE.NRCRT > 1 THEN
|
|
IF pack_facturare.nid_serie IS NULL THEN
|
|
pack_facturare.nnumar_act := pack_facturare.nnumar_act + 1;
|
|
ELSE
|
|
pack_serii_numere.aloca_numar(pack_facturare.nid_tipaviz,
|
|
pack_facturare.nid_serie,
|
|
NULL,
|
|
pack_facturare.nid_util,
|
|
pack_facturare.nid_sucursala,
|
|
pack_facturare.nnumar_act);
|
|
END IF;
|
|
END IF;
|
|
|
|
pack_facturare.nid_comanda := CRS_LINIE.ID_COMANDA;
|
|
pack_facturare.v_date_gestiune.id_gestiune := CRS_LINIE.ID_GESTIUNE;
|
|
pack_facturare.v_date_gestiune.acont := NULL;
|
|
|
|
SELECT NR_PAG, CONT, ACONT
|
|
INTO pack_facturare.v_date_gestiune.id_tip_gest,
|
|
pack_facturare.v_date_gestiune.cont,
|
|
pack_facturare.v_date_gestiune.acont
|
|
FROM NOM_GESTIUNI
|
|
WHERE ID_GESTIUNE = pack_facturare.v_date_gestiune.id_gestiune;
|
|
|
|
INSERT INTO VANZARI_TEMP
|
|
(id_gestiune_dest, id_lucrare, numar_act, id_comanda, id_gestiune)
|
|
values
|
|
(pack_facturare.v_date_gestiune.id_gestiune,
|
|
pack_facturare.nid_lucrare,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.nid_comanda,
|
|
pack_facturare.nid_gestiune_sursa);
|
|
|
|
pack_serii_numere.aloca_numar(pack_facturare.nid_tipbon,
|
|
NULL,
|
|
pack_facturare.nid_gestiune_sursa,
|
|
pack_facturare.nid_util,
|
|
pack_facturare.nid_sucursala,
|
|
pack_facturare.nnumar_bon);
|
|
|
|
SELECT *
|
|
BULK COLLECT
|
|
INTO tab_detalii
|
|
FROM VANZARI_DETALII_TEMP
|
|
WHERE ID_COMANDA = CRS_LINIE.ID_COMANDA;
|
|
-- modificare 11.07 : WHERE ID_GESTIUNE_DEST = pack_facturare.v_date_gestiune.id_gestiune;
|
|
|
|
IF SQL%ROWCOUNT = 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu exista articole in lista de vanzare! (FACT-002)');
|
|
END IF;
|
|
|
|
NR_AVIZ := 1;
|
|
NR_ELEMENT := 0;
|
|
|
|
FOR i IN tab_detalii.first .. tab_detalii.last LOOP
|
|
-- modificare 01.07.2008
|
|
-- daca depasesc un anumit numar de elemente pe aviz, generez datele pentru urmatorul
|
|
NR_ELEMENT := NR_ELEMENT + 1;
|
|
IF NR_AVIZ < FLOOR((NR_ELEMENT - 1) / ELEM_OPTIUNE) + 1 THEN
|
|
NR_AVIZ := NR_AVIZ + 1;
|
|
IF pack_facturare.nid_serie IS NULL THEN
|
|
pack_facturare.nnumar_act := pack_facturare.nnumar_act + 1;
|
|
ELSE
|
|
pack_serii_numere.aloca_numar(pack_facturare.nid_tipaviz,
|
|
pack_facturare.nid_serie,
|
|
NULL,
|
|
pack_facturare.nid_util,
|
|
pack_facturare.nid_sucursala,
|
|
pack_facturare.nnumar_act);
|
|
END IF;
|
|
|
|
INSERT INTO VANZARI_TEMP
|
|
(id_gestiune_dest,
|
|
id_lucrare,
|
|
numar_act,
|
|
id_comanda,
|
|
id_gestiune)
|
|
values
|
|
(pack_facturare.v_date_gestiune.id_gestiune,
|
|
pack_facturare.nid_lucrare,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.nid_comanda,
|
|
pack_facturare.nid_gestiune_sursa);
|
|
|
|
pack_serii_numere.aloca_numar(pack_facturare.nid_tipbon,
|
|
NULL,
|
|
pack_facturare.nid_gestiune_sursa,
|
|
pack_facturare.nid_util,
|
|
pack_facturare.nid_sucursala,
|
|
pack_facturare.nnumar_bon);
|
|
|
|
END IF;
|
|
-- modificare 01.07.2008 ^
|
|
|
|
pack_facturare.transfera_articol(tab_detalii(i));
|
|
END LOOP;
|
|
END LOOP;
|
|
|
|
CLOSE CRS;
|
|
|
|
-- cumulare note
|
|
pack_facturare.cumuleaza_note_act();
|
|
-- pack_facturare.completeaza_analitice(); am mutat-o in cumuleaza_note_act
|
|
|
|
if pack_contafin.verifica_note_contabile(1) > 0 then
|
|
pack_facturare.cursor_verificare(V_CURSOR_VERIFICARE);
|
|
else
|
|
pack_facturare.finalizeaza_avize_lucrare(V_DISCOUNT_FACTURA);
|
|
|
|
OPEN V_CURSOR_VERIFICARE FOR
|
|
SELECT * FROM ACT_TEMP WHERE 1 = 2;
|
|
end if;
|
|
V_ID_VANZARE := NULL;
|
|
|
|
END scrie_avize_lucrare;
|
|
-------------------------------------------------------------------
|
|
/* PROCEDURE scrie_factura2(V_TOTFTVA IN NUMBER,
|
|
V_TOTTVA IN NUMBER,
|
|
V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare) IS
|
|
|
|
lnIdFacturare NUMBER(10) := null;
|
|
lnListareDetaliata NUMBER(1) := 0;
|
|
begin
|
|
pack_facturare.scrie_factura2(V_TOTFTVA,
|
|
V_TOTTVA,
|
|
V_DISCOUNT_FACTURA,
|
|
V_SERIE_ACT_INCASARE,
|
|
V_NUMAR_ACT_INCASARE,
|
|
V_LISTA_INCASARE,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
lnIdFacturare,
|
|
lnListareDetaliata,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_PARAMETRU_ADITIONAL,
|
|
V_ID_VANZARE,
|
|
V_CURSOR_VERIFICARE);
|
|
|
|
end;*/
|
|
-------------------------------------------------------------------
|
|
|
|
PROCEDURE scrie_factura2(V_TOTFTVA IN NUMBER,
|
|
V_TOTTVA IN NUMBER,
|
|
V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare) IS
|
|
-- V_LISTA_INCASARE : tip1|valoare1|id_bancasa1;tip2|valoare2|id_bancasa2 (pentru incasari cu mai multe tipuri ex: NUMERAR + CARD + TICHETE)
|
|
|
|
TYPE tab_detalii_type IS TABLE OF vanzari_detalii_temp%ROWTYPE;
|
|
tab_detalii tab_detalii_type;
|
|
|
|
V_INCASAT_CALCUL ACT.SUMA%TYPE := 0;
|
|
V_DISCOUNT_TOTAL_CU_TVA ACT.SUMA%TYPE := 0;
|
|
V_ASCD ACT.ASCD%TYPE;
|
|
V_ID_SECTIE ACT.ID_SECTIE%TYPE;
|
|
V_ID_CTR ACT.ID_CTR%TYPE;
|
|
V_SEPARATOR VARCHAR2(1) := ',';
|
|
BEGIN
|
|
pack_contafin.sterge_temp_actrul();
|
|
pack_facturare.ntotftva := V_TOTFTVA;
|
|
pack_facturare.ntottva := V_TOTTVA;
|
|
|
|
pack_facturare.initializeaza_setari_facturare();
|
|
|
|
IF pack_facturare.nscadere_stoc = 0 AND
|
|
pack_facturare.ntip IN (23, 25, 30, 41) THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu exista configurari pentru transfer intre subunitati fara scadere din stoc! (FACT-003)');
|
|
END IF;
|
|
|
|
pack_facturare.ndiscount_evidentiat := V_DISCOUNT_EVIDENTIAT;
|
|
|
|
SELECT * BULK COLLECT INTO tab_detalii FROM VANZARI_DETALII_TEMP;
|
|
|
|
IF SQL%ROWCOUNT = 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu exista articole in lista de vanzare! (FACT-004)');
|
|
END IF;
|
|
|
|
FOR i IN tab_detalii.first .. tab_detalii.last LOOP
|
|
|
|
CASE
|
|
WHEN pack_facturare.ntip IN (23, 25, 30, 41) THEN
|
|
-- transfer intre subunitati
|
|
V_INCASAT_CALCUL := 0;
|
|
pack_facturare.transfera_articol(tab_detalii(i));
|
|
/* WHEN pack_facturare.ntip = pack_facturare.nTipNotaPlata THEN
|
|
pack_facturare.descarca_gestiune(tab_detalii(i).id_articol,
|
|
tab_detalii(i).serie,
|
|
tab_detalii(i).pret_achizitie,
|
|
tab_detalii(i).pretd,
|
|
tab_detalii(i).id_valutad,
|
|
tab_detalii(i).pretv_orig,
|
|
tab_detalii(i).pret,
|
|
tab_detalii(i).diferenta,
|
|
tab_detalii(i).proc_tvav,
|
|
tab_detalii(i).pret_cu_tva,
|
|
tab_detalii(i).cantitate,
|
|
tab_detalii(i).discount_unitar,
|
|
tab_detalii(i).id_gestiune,
|
|
pack_facturare.nid_sectie_stoc, -- V_ID_SECTIE
|
|
tab_detalii(i).cont,
|
|
pack_facturare.nid_venchelt, -- V_ID_VENCHELT
|
|
tab_detalii(i).id_valuta,
|
|
tab_detalii(i).curs,
|
|
NULL, -- V_ID_PART_REZ
|
|
NULL);*/
|
|
WHEN pack_facturare.ntip IN (42, 47) THEN
|
|
V_INCASAT_CALCUL := 0;
|
|
pack_facturare.nfactavizcust := 1;
|
|
pack_facturare.descarca_gestiune(tab_detalii (i).id_articol,
|
|
tab_detalii (i).serie,
|
|
tab_detalii (i).pret_achizitie,
|
|
tab_detalii (i).pretd,
|
|
tab_detalii (i).id_valutad,
|
|
tab_detalii (i).pretv_orig,
|
|
tab_detalii (i).pret,
|
|
tab_detalii (i).diferenta,
|
|
tab_detalii (i).proc_tvav,
|
|
tab_detalii (i).pret_cu_tva,
|
|
tab_detalii (i).cantitate,
|
|
tab_detalii (i).discount_unitar,
|
|
tab_detalii (i).id_gestiune,
|
|
pack_facturare.nid_sectie_stoc, -- V_ID_SECTIE
|
|
tab_detalii (i).cont,
|
|
pack_facturare.nid_venchelt, -- V_ID_VENCHELT
|
|
tab_detalii (i).id_valuta,
|
|
tab_detalii (i).curs / tab_detalii(i).multiplicator,
|
|
NULL, -- V_ID_PART_REZ
|
|
NULL,
|
|
tab_detalii (i).id_jtva_coloana,
|
|
tab_detalii (i).taxcode);
|
|
pack_facturare.nfactavizcust := 0;
|
|
WHEN pack_facturare.ntip IN (2, 6, 52) AND
|
|
NVL(tab_detalii(i).id_rata, 0) <> 0 THEN
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL +
|
|
pack_facturare.contabilizeaza_rata(tab_detalii(i));
|
|
ELSE
|
|
-- 24 = AVIZ RETUR
|
|
IF pack_facturare.ntip = 24 THEN
|
|
SELECT STRINGAGG(COD)
|
|
INTO pack_facturare.ccod_retur
|
|
FROM VANZARI
|
|
WHERE ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(charn2collection(pack_facturare.clistaid,
|
|
V_SEPARATOR)));
|
|
END IF;
|
|
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL +
|
|
pack_facturare.contabilizeaza_articol(tab_detalii(i));
|
|
END CASE;
|
|
|
|
END LOOP;
|
|
|
|
IF pack_facturare.ntip in (48, 49) THEN
|
|
pack_facturare.scrie_descarcare_k(V_PARAMETRU_ADITIONAL);
|
|
END IF;
|
|
|
|
BEGIN
|
|
SELECT ID_CTR
|
|
INTO V_ID_CTR
|
|
FROM (SELECT SUM(SUMA), ID_CTR
|
|
FROM ACT_TEMP
|
|
WHERE SCD IN ('4111', '418')
|
|
GROUP BY ID_CTR
|
|
ORDER BY 1)
|
|
WHERE ROWNUM < 2;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_CTR := NULL;
|
|
END;
|
|
|
|
IF V_DISCOUNT_FACTURA <> 0 THEN
|
|
SELECT DISTINCT ASCD, ID_SECTIE
|
|
INTO V_ASCD, V_ID_SECTIE
|
|
FROM ACT_TEMP
|
|
WHERE SCD IN ('4111', '418', '461')
|
|
AND ROWNUM < 2;
|
|
|
|
V_DISCOUNT_TOTAL_CU_TVA := pack_facturare.scrie_discount(1,
|
|
V_DISCOUNT_FACTURA,
|
|
pack_facturare.nid_valuta,
|
|
pack_facturare.nin_valuta,
|
|
V_ASCD,
|
|
V_ID_SECTIE,
|
|
V_ID_CTR,
|
|
1,
|
|
(100 +
|
|
pack_facturare.nproc_tva_max) / 100,
|
|
0,
|
|
1, -- V_CU_TVA
|
|
pack_facturare.nid_jtva_coloana,
|
|
pack_facturare.nTaxCode);
|
|
END IF;
|
|
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL - V_DISCOUNT_TOTAL_CU_TVA;
|
|
|
|
/* IF V_AVANS <> 0 THEN
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL - ABS(v_avans);
|
|
pack_facturare.scrie_avans(V_ID_CONTRACT, (-1) * ABS(v_avans));
|
|
END IF;*/
|
|
|
|
IF V_LISTA_INCASARE IS NOT NULL THEN
|
|
pack_facturare.scrie_incasari(V_SERIE_ACT_INCASARE,
|
|
V_NUMAR_ACT_INCASARE,
|
|
V_LISTA_INCASARE,
|
|
V_ID_CTR);
|
|
END IF;
|
|
|
|
-- cumulare note
|
|
pack_facturare.cumuleaza_note_act();
|
|
|
|
if pack_contafin.verifica_note_contabile(1) > 0 then
|
|
pack_facturare.cursor_verificare(V_CURSOR_VERIFICARE);
|
|
V_ID_VANZARE := NULL;
|
|
else
|
|
pack_facturare.finalizeaza_factura(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_PARAMETRU_ADITIONAL);
|
|
|
|
OPEN V_CURSOR_VERIFICARE FOR
|
|
SELECT * FROM VACT WHERE 1 = 2;
|
|
V_ID_VANZARE := pack_facturare.nid_vanzare;
|
|
end if;
|
|
|
|
END scrie_factura2;
|
|
-------------------------------------------------------------------
|
|
/* PROCEDURE scrie_factura_avize_retur(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_TEXT_ADITIONAL_RETUR IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR2,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_SERIE_ACT IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_ID_VANZARE_RETUR OUT NUMBER,
|
|
V_CURSOR_RETUR OUT cursor_facturare) is
|
|
lnIdFacturare NUMBER(10) := null;
|
|
lnListareDetaliata NUMBER(1) := 0;
|
|
begin
|
|
pack_facturare.scrie_factura_avize_retur(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
lnIdFacturare,
|
|
lnListareDetaliata,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_TEXT_ADITIONAL,
|
|
V_TEXT_ADITIONAL_RETUR,
|
|
V_SIR_MODIFICARI_ACONT,
|
|
V_SIR_MODIFICARI_PART,
|
|
V_PARAMETRU_ADITIONAL,
|
|
V_SERIE_ACT,
|
|
V_NUMAR_ACT,
|
|
V_ID_VANZARE,
|
|
V_ID_VANZARE_RETUR,
|
|
V_CURSOR_RETUR);
|
|
end;*/
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_factura_avize_retur(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_TEXT_ADITIONAL_RETUR IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR2,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_SERIE_ACT IN VARCHAR2,
|
|
V_NUMAR_ACT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_ID_VANZARE_RETUR OUT NUMBER,
|
|
V_CURSOR_RETUR OUT cursor_facturare) IS
|
|
|
|
lcSirIdFacturi VARCHAR2(3000);
|
|
V_NUME_DOC NOM_FDOC.FEL_DOCUMENT%TYPE;
|
|
V_CURSOR_VERIFICARE cursor_facturare;
|
|
V_SCRIS NUMBER(1);
|
|
V_SEPARATOR VARCHAR2(1) := ',';
|
|
BEGIN
|
|
IF V_SIR_MODIFICARI_ACONT IS NOT NULL OR
|
|
V_SIR_MODIFICARI_PART IS NOT NULL THEN
|
|
-- nu a fost scrisa factura la prima apelare
|
|
pack_facturare.finalizeaza_scriere_verificare(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_SIR_MODIFICARI_ACONT,
|
|
V_SIR_MODIFICARI_PART,
|
|
V_PARAMETRU_ADITIONAL,
|
|
V_ID_VANZARE);
|
|
END IF;
|
|
-- scrie avizul de retur
|
|
DELETE FROM VANZARI_DETALII_TEMP;
|
|
|
|
SELECT STRINGAGG(COD)
|
|
INTO pack_facturare.ccod_retur
|
|
FROM VANZARI
|
|
WHERE ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(charn2collection(pack_facturare.clistaid,
|
|
V_SEPARATOR)));
|
|
|
|
SELECT STRINGAGG(ID_VANZARE_FACT)
|
|
INTO lcSirIdFacturi
|
|
FROM (SELECT DISTINCT ID_VANZARE_FACT
|
|
FROM VANZARI_CORESP
|
|
WHERE ID_VANZARE_AVIZ IN
|
|
(SELECT X AS ID_VANZARE_AVIZ
|
|
FROM table(charn2collection(pack_Facturare.clistaid,
|
|
V_SEPARATOR)))
|
|
AND STERS = 0
|
|
AND TIP = 1);
|
|
|
|
INSERT INTO VANZARI_DETALII_TEMP
|
|
(CUSTODIE,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_POL,
|
|
DISCOUNT_UNITAR,
|
|
PRET,
|
|
CANTITATE,
|
|
PROC_TVAV,
|
|
ID_GESTIUNE,
|
|
CONT,
|
|
ID_UTIL,
|
|
ID_VALUTA,
|
|
PRET_CU_TVA,
|
|
ID_JTVA_COLOANA,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
IN_STOC,
|
|
CURS,
|
|
MULTIPLICATOR)
|
|
SELECT CUSTODIE,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_POL,
|
|
DISCOUNT_UNITAR,
|
|
PRET,
|
|
CANTITATE,
|
|
PROC_TVAV,
|
|
ID_GESTIUNE,
|
|
CONT,
|
|
ID_UTIL,
|
|
ID_VALUTA,
|
|
PRET_CU_TVA,
|
|
(CASE
|
|
WHEN ID_JTVA_COLOANA IS NULL THEN
|
|
(CASE PROC_TVAV
|
|
WHEN 1.24 THEN
|
|
15
|
|
WHEN 1.19 THEN
|
|
1
|
|
WHEN 1.09 THEN
|
|
3
|
|
ELSE
|
|
8
|
|
END)
|
|
ELSE
|
|
ID_JTVA_COLOANA
|
|
END) AS ID_JTVA_COLOANA,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
1 AS IN_STOC,
|
|
CURS,
|
|
MULTIPLICATOR
|
|
FROM (SELECT A.CUSTODIE,
|
|
A.ID_ARTICOL,
|
|
A.SERIE,
|
|
A.ID_POL,
|
|
NVL(A.DISCOUNT_UNITAR, 0) AS DISCOUNT_UNITAR,
|
|
A.PRET,
|
|
SUM(CASE
|
|
WHEN A.ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(charn2collection(lcSirIdFacturi,
|
|
V_SEPARATOR))) THEN
|
|
A.CANTITATE
|
|
ELSE
|
|
(-1) * A.CANTITATE
|
|
END) AS CANTITATE,
|
|
A.PROC_TVAV,
|
|
A.ID_GESTIUNE,
|
|
A.CONT,
|
|
pack_facturare.nid_util AS ID_UTIL,
|
|
A.ID_VALUTA,
|
|
A.PRET_CU_TVA,
|
|
A.PRET_ACHIZITIE,
|
|
A.PRETD,
|
|
A.ID_VALUTAD,
|
|
NVL(B.CURS, 1) AS CURS,
|
|
NVL(B.MULTIPLICATOR, 1) AS MULTIPLICATOR,
|
|
A.ID_JTVA_COLOANA
|
|
FROM VANZARI_DETALII A
|
|
LEFT JOIN VANZARI_CURSURI B
|
|
ON A.ID_VANZARE = B.ID_VANZARE
|
|
AND A.ID_VALUTA = B.ID_VALUTA
|
|
WHERE A.STERS = 0
|
|
AND A.ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(charn2collection(pack_facturare.clistaid ||
|
|
V_SEPARATOR ||
|
|
lcSirIdFacturi,
|
|
V_SEPARATOR)))
|
|
GROUP BY A.CUSTODIE,
|
|
A.ID_ARTICOL,
|
|
A.ID_POL,
|
|
NVL(A.DISCOUNT_UNITAR, 0),
|
|
A.SERIE,
|
|
A.PRET_ACHIZITIE,
|
|
A.PRETD,
|
|
A.ID_VALUTAD,
|
|
A.PRET,
|
|
A.PROC_TVAV,
|
|
A.ID_JTVA_COLOANA,
|
|
A.ID_GESTIUNE,
|
|
A.CONT,
|
|
A.ID_VALUTA,
|
|
A.PRET_CU_TVA,
|
|
NVL(B.CURS, 1),
|
|
NVL(B.MULTIPLICATOR, 1))
|
|
WHERE CANTITATE < 0;
|
|
|
|
/* lcSelect_discount := 'SELECT (-1)*SUM(DISCOUNT) FROM VANZARI WHERE ID_VANZARE IN (' ||
|
|
pack_facturare.v_listaid || ')';
|
|
|
|
EXECUTE IMMEDIATE lcSelect_discount
|
|
INTO V_DISCOUNT_AVIZ;*/
|
|
|
|
pack_facturare.nperechec := 0;
|
|
pack_facturare.nid_factc := 0;
|
|
|
|
pack_facturare.ntip := 24;
|
|
-- numar aviz retur
|
|
pack_facturare.cserie_act := V_SERIE_ACT;
|
|
pack_facturare.nnumar_act := V_NUMAR_ACT;
|
|
|
|
pack_facturare.nid_set := 25000 + pack_facturare.ntip - 1 +
|
|
pack_facturare.nscadere_stoc * 10;
|
|
|
|
pack_facturare.citeste_setari_document(pack_facturare.ntip,
|
|
pack_facturare.nid_fdoc,
|
|
V_NUME_DOC);
|
|
-- numar de bon pentru retur
|
|
pack_serii_numere.aloca_numar(pack_facturare.nid_tipbon,
|
|
NULL,
|
|
pack_facturare.nid_gestiune_sursa,
|
|
pack_facturare.nid_util,
|
|
pack_facturare.nid_sucursala,
|
|
pack_facturare.nnumar_bon);
|
|
|
|
pack_facturare.scrie_aviz_retur(V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL_RETUR,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_SCRIS,
|
|
V_ID_VANZARE_RETUR,
|
|
V_CURSOR_VERIFICARE);
|
|
|
|
CLOSE V_CURSOR_VERIFICARE;
|
|
|
|
IF V_SCRIS = 0 THEN
|
|
pack_facturare.finalizeaza_factura(0,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL_RETUR,
|
|
0);
|
|
V_ID_VANZARE_RETUR := pack_facturare.nid_vanzare;
|
|
END IF;
|
|
|
|
OPEN V_CURSOR_RETUR FOR
|
|
SELECT ID_VANZARE_DET,
|
|
NULL AS EXPLICATIE,
|
|
DENUMIRE,
|
|
SERIE,
|
|
DISCOUNT_UNITAR,
|
|
DISCOUNT_UNITAR_VAL,
|
|
PRET,
|
|
PRET_VAL,
|
|
CURS,
|
|
MULTIPLICATOR,
|
|
CANTITATE,
|
|
PROC_TVAV,
|
|
UM,
|
|
ID_VALUTA,
|
|
PRET_CU_TVA,
|
|
TIP_VALUTA,
|
|
CODMAT,
|
|
CODMATF,
|
|
ID_JTVA_COLOANA,
|
|
CODBARE,
|
|
0 AS PRET_ACHIZITIE,
|
|
NULL AS ID_VANZARE_SET,
|
|
0 AS ID_GESTIUNE,
|
|
0 AS ID_CTR,
|
|
NULL AS NUMAR_CONTRACT,
|
|
NUME_VAL
|
|
FROM (SELECT MIN(A.ID_VANZARE_DET) AS ID_VANZARE_DET,
|
|
B.DENUMIRE,
|
|
A.SERIE,
|
|
C.CURS,
|
|
C.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(C.CURS, 0) *
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(C.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END) AS DISCOUNT_UNITAR,
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS DISCOUNT_UNITAR_VAL,
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(C.CURS, 0) *
|
|
ROUND(NVL(A.PRET, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(C.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(A.PRET, 0), pack_sesiune.nzecimale_pretv)
|
|
END) AS PRET,
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A.PRET, 0), pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END) AS PRET_VAL,
|
|
SUM(CASE
|
|
WHEN A.ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(charn2collection(lcSirIdFacturi,
|
|
V_SEPARATOR))) THEN
|
|
A.CANTITATE
|
|
ELSE
|
|
(-1) * A.CANTITATE
|
|
END) AS CANTITATE,
|
|
A.PROC_TVAV,
|
|
B.UM,
|
|
A.ID_VALUTA,
|
|
A.PRET_CU_TVA,
|
|
(CASE
|
|
WHEN A.ID_VALUTA <>
|
|
pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END) AS TIP_VALUTA,
|
|
B.CODMAT,
|
|
B.CODMATF,
|
|
A.ID_JTVA_COLOANA,
|
|
B.CODBARE,
|
|
D.NUME_VAL
|
|
FROM VANZARI_DETALII A
|
|
LEFT JOIN NOM_ARTICOLE B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
LEFT JOIN VANZARI_CURSURI C
|
|
ON A.ID_VALUTA = C.ID_VALUTA
|
|
AND A.ID_VANZARE = C.ID_VANZARE
|
|
LEFT JOIN NOM_VALUTE D
|
|
ON A.ID_VALUTA = D.ID_VALUTA
|
|
WHERE A.STERS = 0
|
|
AND A.ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(charn2collection(pack_facturare.clistaid ||
|
|
V_SEPARATOR ||
|
|
lcSirIdFacturi,
|
|
V_SEPARATOR)))
|
|
GROUP BY B.DENUMIRE,
|
|
A.SERIE,
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(C.CURS, 0) *
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(C.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretv)
|
|
END),
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A.DISCOUNT_UNITAR, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END),
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(C.CURS, 0) *
|
|
ROUND(NVL(A.PRET, 0),
|
|
pack_sesiune.nzecimale_pretvval) /
|
|
NVL(C.MULTIPLICATOR, 1),
|
|
pack_sesiune.nzecimale_pretv)
|
|
ELSE
|
|
ROUND(NVL(A.PRET, 0), pack_sesiune.nzecimale_pretv)
|
|
END),
|
|
(CASE
|
|
WHEN NVL(D.MONEDA_NATIONALA, 1) <> 1 THEN
|
|
ROUND(NVL(A.PRET, 0),
|
|
pack_sesiune.nzecimale_pretvval)
|
|
ELSE
|
|
0
|
|
END),
|
|
A.PROC_TVAV,
|
|
A.ID_JTVA_COLOANA,
|
|
B.UM,
|
|
B.CODMAT,
|
|
B.CODMATF,
|
|
B.CODBARE,
|
|
A.ID_VALUTA,
|
|
A.PRET_CU_TVA,
|
|
C.CURS,
|
|
C.MULTIPLICATOR,
|
|
(CASE
|
|
WHEN A.ID_VALUTA <>
|
|
pack_facturare.nid_moneda_nationala THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END),
|
|
D.NUME_VAL)
|
|
WHERE CANTITATE < 0;
|
|
|
|
END scrie_factura_avize_retur;
|
|
/* -------------------------------------------------------------------
|
|
PROCEDURE scrie_factura_avize(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_VERIFICARE_FACTURAT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare) is
|
|
lnIdFacturare NUMBER(10) := null;
|
|
lnListareDetaliata NUMBER(1) := 0;
|
|
begin
|
|
pack_facturare.scrie_factura_avize(V_DISCOUNT_FACTURA,
|
|
V_SERIE_ACT_INCASARE,
|
|
V_NUMAR_ACT_INCASARE,
|
|
V_LISTA_INCASARE,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
lnIdFacturare,
|
|
lnListareDetaliata,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_VERIFICARE_FACTURAT,
|
|
V_ID_VANZARE,
|
|
V_CURSOR_VERIFICARE);
|
|
end;*/
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_factura_avize(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_VERIFICARE_FACTURAT IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare) IS
|
|
|
|
TYPE tab_detalii_type IS TABLE OF vanzari_detalii_temp%ROWTYPE;
|
|
tab_detalii tab_detalii_type;
|
|
articole_aviz tab_articole_aviz_type;
|
|
|
|
V_INCASAT_CALCUL ACT.SUMA%TYPE := 0;
|
|
V_DISCOUNT_TOTAL_CU_TVA ACT.SUMA%TYPE := 0;
|
|
|
|
V_PRET ACT.SUMA%TYPE;
|
|
V_ID_VENCHELT ACT.ID_VENCHELT%TYPE;
|
|
V_ID_SECTIE ACT.ID_SECTIE%TYPE;
|
|
V_EXPLICATIE ACT.EXPLICATIA%TYPE;
|
|
V_ASCD ACT.ASCD%TYPE;
|
|
V_SCD ACT.SCD%TYPE;
|
|
V_SCC ACT.SCC%TYPE;
|
|
V_CU_TVA NOTE_CONTABILE.CU_TVA%TYPE;
|
|
V_IN_VALUTA NOTE_CONTABILE.IN_VALUTA%TYPE;
|
|
V_CANTITATE VANZARI_DETALII.CANTITATE%TYPE;
|
|
V_CANTITATE_RAMASA VANZARI_DETALII.CANTITATE%TYPE;
|
|
V_PTVA NUMBER(4);
|
|
|
|
V_LISTAID VARCHAR2(32000) := '<>';
|
|
V_ID_CTR ACT.ID_CTR%TYPE;
|
|
|
|
V_DISCOUNT_UNITAR VANZARI_DETALII.DISCOUNT_UNITAR%TYPE;
|
|
BEGIN
|
|
pack_contafin.sterge_temp_actrul();
|
|
pack_facturare.ndiscount_evidentiat := V_DISCOUNT_EVIDENTIAT;
|
|
pack_facturare.initializeaza_setari_facturare();
|
|
|
|
V_SCD := '4111';
|
|
V_SCC := '418';
|
|
V_ID_VENCHELT := 0;
|
|
V_CU_TVA := 0;
|
|
V_IN_VALUTA := 0;
|
|
|
|
V_EXPLICATIE := SUBSTR('FACTURARE AVIZE ' || pack_facturare.cdescriere,
|
|
1,
|
|
100);
|
|
|
|
pack_facturare.nid_partc := pack_facturare.nid_part;
|
|
|
|
SELECT * BULK COLLECT INTO tab_detalii FROM VANZARI_DETALII_TEMP;
|
|
|
|
IF SQL%ROWCOUNT = 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu exista articole in lista de vanzare! (FACT-005)');
|
|
END IF;
|
|
|
|
FOR i IN tab_detalii.first .. tab_detalii.last LOOP
|
|
|
|
IF tab_detalii(i).proc_tvav > 1 THEN
|
|
V_CU_TVA := 1;
|
|
V_PTVA := (tab_detalii(i).proc_tvav - 1) * 100;
|
|
ELSE
|
|
V_CU_TVA := 0;
|
|
V_PTVA := 0;
|
|
END IF;
|
|
|
|
IF pack_facturare.nproc_tva_max < V_PTVA THEN
|
|
pack_facturare.nproc_tva_max := V_PTVA;
|
|
pack_facturare.nid_jtva_coloana := tab_detalii(i).id_jtva_coloana;
|
|
pack_facturare.nTaxCode := tab_detalii(i).taxcode;
|
|
END IF;
|
|
|
|
SELECT A.ID_VANZARE,
|
|
A.ID_VANZARE_DET,
|
|
A.CANTITATE,
|
|
A.CUSTODIE,
|
|
C.COD,
|
|
C.ID_FACT,
|
|
C.NRACT,
|
|
C.SERIE_ACT,
|
|
C.DATAACT,
|
|
MIN(C.ASCD) AS ASCD,
|
|
NVL(B.ID_SECTIE, E.ID_SECTIE) AS ID_SECTIE
|
|
BULK COLLECT
|
|
INTO articole_aviz
|
|
FROM VANZARI_DETALII A
|
|
LEFT JOIN VANZARI B
|
|
ON A.ID_VANZARE = B.ID_VANZARE
|
|
LEFT JOIN ACT C
|
|
ON B.COD = C.COD
|
|
AND C.SCD = DECODE(B.TIP, 42, '357', '418')
|
|
AND DECODE(B.TIP, 42, '4428', C.SCC) = '4428'
|
|
LEFT JOIN CRM_POLITICI_PRETURI D
|
|
ON A.ID_POL = D.ID_POL
|
|
LEFT JOIN CRM_NOTE_VANZARI E
|
|
ON D.ID_NOTA = E.ID_NOTA
|
|
WHERE A.ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(cast(CHARN2COLLECTION(pack_facturare.clistaid,
|
|
',') as num_tab)))
|
|
AND A.ID_ARTICOL = tab_detalii(i).id_articol
|
|
AND A.DISCOUNT_UNITAR = tab_detalii(i).discount_unitar
|
|
AND A.ID_POL = tab_detalii(i).id_pol
|
|
AND A.ID_VALUTA = tab_detalii(i).id_valuta
|
|
AND A.PRET = tab_detalii(i).pret
|
|
AND A.PRET_ACHIZITIE = tab_detalii(i).pret_achizitie
|
|
AND NVL(A.PRETD, 0) = NVL(tab_detalii(i).pretd, NVL(A.PRETD, 0))
|
|
AND NVL(A.ID_VALUTAD, -99) =
|
|
NVL(tab_detalii(i).id_valutad, NVL(A.ID_VALUTAD, -99))
|
|
AND NVL(A.ID_GESTIUNE, -9999) =
|
|
NVL(tab_detalii(i).id_gestiune, -9999)
|
|
AND NVL(A.CONT, 'XXXX') = NVL(tab_detalii(i).cont, 'XXXX')
|
|
AND NVL(A.SERIE, '+_') = NVL(tab_detalii(i).serie, '+_')
|
|
GROUP BY A.ID_VANZARE,
|
|
A.ID_VANZARE_DET,
|
|
A.CANTITATE,
|
|
A.CUSTODIE,
|
|
C.COD,
|
|
C.ID_FACT,
|
|
C.NRACT,
|
|
C.SERIE_ACT,
|
|
C.DATAACT,
|
|
NVL(B.ID_SECTIE, E.ID_SECTIE)
|
|
ORDER BY 6;
|
|
|
|
V_CANTITATE_RAMASA := tab_detalii(i).cantitate;
|
|
|
|
IF SQL%ROWCOUNT = 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu au fost gasite articolele! (FACT-015)');
|
|
END IF;
|
|
|
|
FOR j IN articole_aviz.first .. articole_aviz.last LOOP
|
|
EXIT WHEN V_CANTITATE_RAMASA = 0;
|
|
|
|
pack_facturare.nid_factc := articole_aviz(j).id_fact;
|
|
pack_facturare.nperechec := articole_aviz(j).nract;
|
|
|
|
V_CANTITATE := articole_aviz(j).cantitate;
|
|
|
|
IF V_CANTITATE_RAMASA >= V_CANTITATE THEN
|
|
V_CANTITATE_RAMASA := V_CANTITATE_RAMASA - V_CANTITATE;
|
|
|
|
ELSE
|
|
V_CANTITATE := V_CANTITATE_RAMASA;
|
|
V_CANTITATE_RAMASA := 0;
|
|
END IF;
|
|
|
|
-- modificare 20.11
|
|
IF instr(V_LISTAID, '<' || articole_aviz(j).id_vanzare || '>') = 0 THEN
|
|
V_LISTAID := V_LISTAID || '<' || articole_aviz(j).id_vanzare || '>,';
|
|
END IF;
|
|
|
|
IF articole_aviz(j).custodie = 1 THEN
|
|
pack_facturare.nfactavizcust := 1;
|
|
tab_detalii(i).cantitate := V_CANTITATE;
|
|
tab_detalii(i).id_rata := articole_aviz(j).cod;
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL +
|
|
pack_facturare.contabilizeaza_articol(tab_detalii(i));
|
|
|
|
UPDATE VANZARI_DETALII_TEMP
|
|
SET CANTITATE = CANTITATE - V_CANTITATE
|
|
WHERE ID_TEMP = tab_detalii(i).id_temp;
|
|
|
|
MERGE INTO VANZARI_DETALII_TEMP A
|
|
USING DUAL B
|
|
ON (A.ID_ARTICOL = tab_detalii(i).id_articol AND A.ID_POL = tab_detalii(i).id_pol AND A.PRET = tab_detalii(i).pret AND A.PRET_CU_TVA = tab_detalii(i).pret_cu_tva AND A.PROC_TVAV = tab_detalii(i).proc_tvav AND A.DISCOUNT_UNITAR = tab_detalii(i).discount_unitar AND A.ID_GESTIUNE = tab_detalii(i).id_gestiune AND NVL(A.CONT, 'XXXX') = NVL(tab_detalii(i).cont, 'XXX') AND NVL(A.ID_VALUTA, -1) = NVL(tab_detalii(i).id_valuta, -1) AND NVL(A.CURS, 1) = NVL(tab_detalii(i).curs, 1) AND A.ID_JTVA_COLOANA = tab_detalii(i).id_jtva_coloana AND A.IN_STOC = tab_detalii(i).in_stoc AND NVL(A.ID_GESTIUNE_DEST, -99) = NVL(tab_detalii(i).id_gestiune_dest, -99) AND NVL(A.ID_UTIL, 0) = NVL(tab_detalii(i).id_util, 0) AND A.PRET_ACHIZITIE = tab_detalii(i).pret_achizitie AND NVL(A.ID_VANZARE_SET, -99) = NVL(tab_detalii(i).id_vanzare_set, -99) AND A.CUSTODIE = articole_aviz(j).custodie)
|
|
WHEN MATCHED THEN
|
|
UPDATE SET CANTITATE = CANTITATE + V_CANTITATE
|
|
WHEN NOT MATCHED THEN
|
|
INSERT
|
|
(ID_ARTICOL,
|
|
ID_POL,
|
|
PRET,
|
|
PRET_CU_TVA,
|
|
PROC_TVAV,
|
|
CANTITATE,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
CONT,
|
|
ID_VALUTA,
|
|
CURS,
|
|
MULTIPLICATOR,
|
|
ID_JTVA_COLOANA,
|
|
IN_STOC,
|
|
ID_GESTIUNE_DEST,
|
|
ID_COMANDA,
|
|
ID_UTIL,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
ID_VANZARE_SET,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ,
|
|
NUMAR_ACT,
|
|
CUSTODIE,
|
|
ID_TEMP)
|
|
VALUES
|
|
(tab_detalii(i).id_articol,
|
|
tab_detalii(i).id_pol,
|
|
tab_detalii(i).pret,
|
|
tab_detalii(i).pret_cu_tva,
|
|
tab_detalii(i).proc_tvav,
|
|
V_CANTITATE,
|
|
tab_detalii(i).discount_unitar,
|
|
tab_detalii(i).id_gestiune,
|
|
tab_detalii(i).cont,
|
|
tab_detalii(i).id_valuta,
|
|
tab_detalii(i).curs,
|
|
tab_detalii(i).multiplicator,
|
|
tab_detalii(i).id_jtva_coloana,
|
|
tab_detalii(i).in_stoc,
|
|
tab_detalii(i).id_gestiune_dest,
|
|
tab_detalii(i).id_comanda,
|
|
tab_detalii(i).id_util,
|
|
tab_detalii(i).pret_achizitie,
|
|
NVL(tab_detalii(i).pretd, 0),
|
|
tab_detalii(i).id_valutad,
|
|
tab_detalii(i).id_vanzare_set,
|
|
tab_detalii(i).id_lucrare_rez,
|
|
tab_detalii(i).id_part_rez,
|
|
pack_facturare.nnumar_act,
|
|
articole_aviz(j).custodie,
|
|
-1000);
|
|
|
|
pack_facturare.nfactavizcust := 0;
|
|
ELSE
|
|
IF pack_facturare.ndiscount_evidentiat = 1 AND tab_detalii(i).discount_unitar <> 0 THEN
|
|
V_PRET := tab_detalii(i).pret;
|
|
V_DISCOUNT_UNITAR := tab_detalii(i).discount_unitar;
|
|
|
|
V_DISCOUNT_TOTAL_CU_TVA := V_DISCOUNT_TOTAL_CU_TVA +
|
|
pack_facturare.scrie_discount(V_CANTITATE,
|
|
tab_detalii (i).discount_unitar,
|
|
tab_detalii (i).id_valuta,
|
|
V_IN_VALUTA,
|
|
articole_aviz(j).ascd, -- ASCD
|
|
articole_aviz(j).id_sectie,
|
|
tab_detalii (i).id_ctr,
|
|
tab_detalii (i).curs / tab_detalii(i).multiplicator,
|
|
tab_detalii (i).proc_tvav,
|
|
tab_detalii (i).pret_cu_tva,
|
|
V_CU_TVA,
|
|
tab_detalii (i).id_jtva_coloana);
|
|
ELSE
|
|
V_PRET := tab_detalii(i).pret - tab_detalii(i).discount_unitar;
|
|
V_DISCOUNT_UNITAR := 0;
|
|
END IF;
|
|
|
|
-- scriere nota in act
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL +
|
|
pack_facturare.scrie_nota(V_CANTITATE,
|
|
V_PRET,
|
|
V_DISCOUNT_UNITAR,
|
|
tab_detalii (i).pret_cu_tva,
|
|
tab_detalii (i).id_valuta,
|
|
V_IN_VALUTA,
|
|
tab_detalii (i).curs / tab_detalii(i).multiplicator,
|
|
V_ID_VENCHELT,
|
|
articole_aviz (j).id_sectie,
|
|
tab_detalii (i).id_ctr,
|
|
V_EXPLICATIE,
|
|
V_SCD,
|
|
articole_aviz (j).ascd, -- ascd
|
|
V_SCC,
|
|
articole_aviz (j).ascd, -- ascc
|
|
0, -- V_ID_GESTIN
|
|
0, -- V_ID_GESTOUT
|
|
pack_facturare.nid_set, -- V_ID_SET
|
|
V_CU_TVA,
|
|
tab_detalii (i).proc_tvav * 100 - 100,
|
|
tab_detalii (i).id_jtva_coloana,
|
|
tab_detalii (i).taxcode,
|
|
null);
|
|
END IF;
|
|
END LOOP;
|
|
|
|
END LOOP;
|
|
|
|
BEGIN
|
|
SELECT ID_CTR
|
|
INTO V_ID_CTR
|
|
FROM (SELECT SUM(SUMA), ID_CTR
|
|
FROM ACT_TEMP
|
|
WHERE SCD IN ('4111', '418')
|
|
GROUP BY ID_CTR
|
|
ORDER BY 1)
|
|
WHERE ROWNUM < 2;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_CTR := NULL;
|
|
END;
|
|
|
|
IF V_DISCOUNT_FACTURA <> 0 THEN
|
|
SELECT DISTINCT ASCD, ID_SECTIE
|
|
INTO V_ASCD, V_ID_SECTIE
|
|
FROM ACT_TEMP
|
|
WHERE SCD = '4111'
|
|
AND ROWNUM < 2;
|
|
|
|
V_DISCOUNT_TOTAL_CU_TVA := V_DISCOUNT_TOTAL_CU_TVA +
|
|
pack_facturare.scrie_discount(1,
|
|
V_DISCOUNT_FACTURA,
|
|
pack_facturare.nid_valuta,
|
|
pack_facturare.nin_valuta,
|
|
V_ASCD,
|
|
V_ID_SECTIE,
|
|
V_ID_CTR,
|
|
1,
|
|
(100 +
|
|
pack_facturare.nproc_tva_max) / 100,
|
|
1,
|
|
1, -- V_CU_TVA
|
|
pack_facturare.nid_jtva_coloana,
|
|
pack_facturare.nTaxCode);
|
|
END IF;
|
|
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL - V_DISCOUNT_TOTAL_CU_TVA;
|
|
|
|
/* IF V_AVANS <> 0 THEN
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL - ABS(v_avans);
|
|
pack_facturare.scrie_avans((-1) * ABS(v_avans));
|
|
END IF;*/
|
|
|
|
IF V_LISTA_INCASARE IS NOT NULL THEN
|
|
pack_facturare.scrie_incasari(V_SERIE_ACT_INCASARE,
|
|
V_NUMAR_ACT_INCASARE,
|
|
V_LISTA_INCASARE,
|
|
V_ID_CTR);
|
|
END IF;
|
|
|
|
-- modificare 22.08.2008
|
|
DELETE FROM VANZARI_DETALII_TEMP WHERE CANTITATE = 0;
|
|
|
|
-- cumulare note
|
|
pack_facturare.cumuleaza_note_act();
|
|
|
|
pack_facturare.clistaid_avize := REPLACE(REPLACE(V_LISTAID, '<'), '>');
|
|
|
|
if pack_contafin.verifica_note_contabile(1) > 0 then
|
|
pack_facturare.cursor_verificare(V_CURSOR_VERIFICARE);
|
|
V_ID_VANZARE := NULL;
|
|
else
|
|
pack_facturare.finalizeaza_factura(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_VERIFICARE_FACTURAT);
|
|
|
|
OPEN V_CURSOR_VERIFICARE FOR
|
|
SELECT * FROM ACT_TEMP WHERE 1 = 2;
|
|
V_ID_VANZARE := pack_facturare.nid_vanzare;
|
|
end if;
|
|
|
|
END scrie_factura_avize;
|
|
-------------------------------------------------------------------
|
|
/* PROCEDURE scrie_aviz_retur(V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_SCRIS OUT NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare) IS
|
|
lnIdFacturare NUMBER(10) := null;
|
|
lnListareDetaliata NUMBER(1) := 0;
|
|
begin
|
|
pack_facturare.scrie_aviz_retur(V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
lnIdFacturare,
|
|
lnListareDetaliata,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_SCRIS,
|
|
V_ID_VANZARE,
|
|
V_CURSOR_VERIFICARE);
|
|
end;*/
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_aviz_retur(V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_SCRIS OUT NUMBER,
|
|
V_ID_VANZARE OUT NUMBER,
|
|
V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare) IS
|
|
|
|
TYPE tab_detalii_type IS TABLE OF vanzari_detalii_temp%ROWTYPE;
|
|
tab_detalii tab_detalii_type;
|
|
|
|
V_INCASAT_CALCUL ACT.SUMA%TYPE := 0;
|
|
BEGIN
|
|
pack_contafin.sterge_temp_actrul();
|
|
pack_facturare.ndiscount_evidentiat := V_DISCOUNT_EVIDENTIAT;
|
|
pack_facturare.initializeaza_setari_facturare();
|
|
|
|
SELECT * BULK COLLECT INTO tab_detalii FROM VANZARI_DETALII_TEMP;
|
|
|
|
IF SQL%ROWCOUNT = 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu exista articole in lista de vanzare! (FACT-006)');
|
|
END IF;
|
|
|
|
FOR i IN tab_detalii.first .. tab_detalii.last LOOP
|
|
pack_facturare.nfactavizcust := tab_detalii(i).custodie;
|
|
IF pack_facturare.nfactavizcust = 1 THEN
|
|
pack_facturare.descarca_gestiune(tab_detalii (i).id_articol,
|
|
tab_detalii (i).serie,
|
|
tab_detalii (i).pret_achizitie,
|
|
tab_detalii (i).pretd,
|
|
tab_detalii (i).id_valutad,
|
|
tab_detalii (i).pretv_orig,
|
|
tab_detalii (i).pret,
|
|
tab_detalii (i).diferenta,
|
|
tab_detalii (i).proc_tvav,
|
|
tab_detalii (i).pret_cu_tva,
|
|
tab_detalii (i).cantitate,
|
|
tab_detalii (i).discount_unitar,
|
|
tab_detalii (i).id_gestiune,
|
|
pack_facturare.nid_sectie_stoc, -- V_ID_SECTIE
|
|
tab_detalii (i).cont,
|
|
pack_facturare.nid_venchelt, -- ID_VENCHELT,
|
|
tab_detalii (i).id_valuta,
|
|
tab_detalii (i).curs / tab_detalii(i).multiplicator,
|
|
NULL, -- V_ID_PART_REZ
|
|
NULL,
|
|
tab_detalii (i).id_jtva_coloana,
|
|
tab_detalii (i).taxcode);
|
|
ELSE
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL +
|
|
pack_facturare.contabilizeaza_articol(tab_detalii(i));
|
|
END IF;
|
|
pack_facturare.nfactavizcust := 0;
|
|
END LOOP;
|
|
|
|
-- cumulare note
|
|
pack_facturare.scrie_note_banca_compensari();
|
|
pack_facturare.cumuleaza_note_act();
|
|
|
|
if pack_contafin.verifica_note_contabile(1) > 0 then
|
|
pack_facturare.cursor_verificare(V_CURSOR_VERIFICARE);
|
|
V_SCRIS := 0;
|
|
V_ID_VANZARE := NULL;
|
|
else
|
|
pack_facturare.finalizeaza_factura(0, -- V_DISCOUNT_FACTURA
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
0); -- V_VERIFICAT_FACTURAT
|
|
|
|
OPEN V_CURSOR_VERIFICARE FOR
|
|
SELECT * FROM ACT_TEMP WHERE 1 = 2;
|
|
|
|
V_SCRIS := 1;
|
|
V_ID_VANZARE := pack_facturare.nid_vanzare;
|
|
end if;
|
|
|
|
END scrie_aviz_retur;
|
|
-------------------------------------------------------------------
|
|
FUNCTION contabilizeaza_articol(detalii_articol VANZARI_DETALII_TEMP%ROWTYPE)
|
|
RETURN NUMBER IS
|
|
V_COMPUS NUMBER(1);
|
|
V_ID_POL_ART CRM_POLITICI_PRET_ART.Id_Pol_Art%TYPE;
|
|
|
|
V_INCASAT_CALCUL ACT.SUMA%TYPE := 0;
|
|
|
|
V_SCD ACT.SCD%TYPE;
|
|
V_ASCD ACT.ASCD%TYPE;
|
|
V_SCC ACT.SCC%TYPE;
|
|
V_ASCC ACT.ASCC%TYPE;
|
|
V_EXPLICATIE ACT.EXPLICATIA%TYPE;
|
|
V_IN_VALUTA NUMBER(1) := 0;
|
|
|
|
/* CURSOR cursor_elemente_pachet IS
|
|
SELECT A.ID_POL_ART,
|
|
B.ID_POL,
|
|
B.ID_ARTICOL,
|
|
B.PRET,
|
|
B.PROC_TVAV,
|
|
B.ID_VALUTA,
|
|
C.ID_NOTA,
|
|
C.PRETURI_CU_TVA,
|
|
NVL(B.ID_VENCHELT, D.ID_VENCHELT) AS ID_VENCHELT,
|
|
DECODE(B.ID_POL,
|
|
NVL(pack_facturare.nid_politica_stoc, -99),
|
|
pack_facturare.nid_sectie_stoc,
|
|
D.ID_SECTIE) as ID_SECTIE,
|
|
D.ID_SET,
|
|
E.EXPLICATIE,
|
|
E.SCD,
|
|
E.ASCD,
|
|
E.SCC,
|
|
E.ASCC,
|
|
E.CU_TVA,
|
|
E.IN_VALUTA
|
|
FROM CRM_PACHETE_ARTICOLE A
|
|
LEFT JOIN CRM_POLITICI_PRET_ART B ON A.ID_POL_ART = B.ID_POL_ART
|
|
LEFT JOIN CRM_POLITICI_PRETURI C ON B.ID_POL = C.ID_POL
|
|
LEFT JOIN CRM_NOTE_VANZARI D ON C.ID_NOTA = D.ID_NOTA
|
|
LEFT JOIN NOTE_CONTABILE E ON D.ID_SET = E.ID_SET
|
|
WHERE A.STERS = 0
|
|
AND A.ID_PACHET = V_ID_POL_ART;
|
|
crs_rand_elemente_pachet cursor_elemente_pachet%rowtype;*/
|
|
|
|
CURSOR cursor_articol IS
|
|
SELECT A.ID_POL_ART,
|
|
A.ID_POL,
|
|
A.ID_ARTICOL,
|
|
A.PRET,
|
|
(CASE
|
|
WHEN A.ID_POL = pack_facturare.nid_politica_stoc AND
|
|
pack_facturare.nin_valuta = 1 THEN
|
|
pack_facturare.nid_valuta
|
|
ELSE
|
|
A.ID_VALUTA
|
|
END) AS ID_VALUTA,
|
|
B.ID_NOTA,
|
|
B.PRETURI_CU_TVA,
|
|
/* (CASE
|
|
WHEN (A.ID_POL = pack_facturare.nid_politica_stoc AND
|
|
pack_facturare.nid_venchelt IS NOT NULL) OR
|
|
(A.ID_VENCHELT IS NULL AND C.ID_VENCHELT IS NULL) THEN
|
|
pack_facturare.nid_venchelt
|
|
ELSE
|
|
NVL(A.ID_VENCHELT, C.ID_VENCHELT)
|
|
END) AS ID_VENCHELT,
|
|
DECODE(A.ID_POL,
|
|
NVL(pack_facturare.nid_politica_stoc, -99),
|
|
pack_facturare.nid_sectie_stoc,
|
|
C.ID_SECTIE) as ID_SECTIE,*/
|
|
NVL(pack_facturare.nid_venchelt,
|
|
NVL(A.ID_VENCHELT, C.ID_VENCHELT)) AS ID_VENCHELT,
|
|
NVL(pack_facturare.nid_sectie_stoc, C.ID_SECTIE) as ID_SECTIE,
|
|
C.ID_SET,
|
|
D.EXPLICATIE,
|
|
D.SCD,
|
|
D.ASCD,
|
|
D.SCC,
|
|
D.ASCC,
|
|
D.CU_TVA,
|
|
(CASE
|
|
WHEN A.ID_POL = pack_facturare.nid_politica_stoc AND
|
|
pack_facturare.nin_valuta = 1 THEN
|
|
1
|
|
ELSE
|
|
D.IN_VALUTA
|
|
END) AS IN_VALUTA
|
|
FROM CRM_POLITICI_PRET_ART A
|
|
LEFT JOIN CRM_POLITICI_PRETURI B
|
|
ON A.ID_POL = B.ID_POL
|
|
LEFT JOIN CRM_NOTE_VANZARI C
|
|
ON B.ID_NOTA = C.ID_NOTA
|
|
LEFT JOIN NOTE_CONTABILE D
|
|
ON C.ID_SET = D.ID_SET
|
|
WHERE
|
|
-- A.STERS = 0 AND
|
|
A.ID_POL = detalii_articol.id_pol
|
|
AND A.ID_ARTICOL = detalii_articol.id_articol;
|
|
crs_rand_articol cursor_articol%rowtype;
|
|
lcArticol nom_articole.denumire%type;
|
|
lcPolitica crm_politici_preturi.nume_lista_preturi%type;
|
|
BEGIN
|
|
|
|
-- 05.07.2011
|
|
BEGIN
|
|
SELECT COMPUS, ID_POL_ART
|
|
INTO V_COMPUS, V_ID_POL_ART
|
|
FROM VCRM_POLITICI_PRET_ART
|
|
WHERE ID_ARTICOL = detalii_articol.id_articol
|
|
AND ID_POL = detalii_articol.id_pol;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
SELECT DENUMIRE
|
|
INTO lcArticol
|
|
FROM NOM_ARTICOLE
|
|
where id_articol = detalii_articol.id_articol;
|
|
|
|
SELECT NUME_LISTA_PRETURI
|
|
INTO lcPolitica
|
|
FROM CRM_POLITICI_PRETURI
|
|
where id_pol = detalii_articol.id_pol;
|
|
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Articolul ' || detalii_articol.id_articol || '|' ||
|
|
lcArticol ||
|
|
' nu este definit in politica de preturi ' ||
|
|
detalii_articol.id_pol || '|' || lcPolitica ||
|
|
'! (FACT-024)');
|
|
END;
|
|
-- 05.07.2011 ^
|
|
|
|
IF V_COMPUS = 1 THEN
|
|
-- articol compus
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu sunt facute configurarile pentru articolele compuse! (FACT-016 : ' ||
|
|
detalii_articol.id_articol || '.' ||
|
|
detalii_articol.id_pol || ' )');
|
|
-- in_valuta = ?
|
|
|
|
/* OPEN cursor_elemente_pachet;
|
|
FETCH cursor_elemente_pachet
|
|
INTO crs_rand_elemente_pachet;
|
|
WHILE cursor_elemente_pachet%FOUND LOOP
|
|
|
|
CASE
|
|
WHEN pack_facturare.v_tip <= 20 THEN
|
|
-- factura
|
|
V_SCD := crs_rand_elemente_pachet.scd;
|
|
V_ASCD := crs_rand_elemente_pachet.ascd;
|
|
V_SCC := crs_rand_elemente_pachet.scc;
|
|
V_ASCC := crs_rand_elemente_pachet.ascc;
|
|
ELSE
|
|
-- aviz
|
|
V_SCD := '418';
|
|
V_ASCD := crs_rand_elemente_pachet.ascd;
|
|
V_SCC := crs_rand_elemente_pachet.scc;
|
|
V_ASCC := crs_rand_elemente_pachet.ascc;
|
|
END CASE;
|
|
|
|
IF pack_facturare.v_discount_evidentiat = 0 THEN
|
|
V_PRET := crs_rand_elemente_pachet.pret -
|
|
detalii_articol.discount_unitar *
|
|
ROUND(crs_rand_elemente_pachet.pret /
|
|
detalii_articol.pret,
|
|
pack_facturare.v_zecimale_procent);
|
|
ELSE
|
|
V_PRET := crs_rand_elemente_pachet.pret;
|
|
END IF;
|
|
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL +
|
|
pack_facturare.scrie_nota(detalii_articol.cantitate,
|
|
V_PRET,
|
|
detalii_articol.pret_cu_tva,
|
|
detalii_articol.id_valuta,
|
|
crs_rand_elemente_pachet.in_valuta,
|
|
detalii_articol.curs,
|
|
crs_rand_elemente_pachet.id_venchelt,
|
|
crs_rand_elemente_pachet.id_sectie,
|
|
crs_rand_elemente_pachet.explicatie,
|
|
V_SCD,
|
|
V_ASCD,
|
|
V_SCC,
|
|
V_ASCC,
|
|
0,
|
|
0,
|
|
V_ID_CONTRACT,
|
|
pack_facturare.v_id_set,
|
|
crs_rand_elemente_pachet.cu_tva,
|
|
detalii_articol.proc_tvav * 100 - 100,
|
|
detalii_articol.id_jtva_coloana);
|
|
|
|
IF pack_facturare.v_scadere_stoc = 1 AND
|
|
detalii_articol.id_gestiune <> -1000 AND
|
|
detalii_articol.in_stoc = 1 THEN
|
|
pack_facturare.descarca_gestiune(crs_rand_elemente_pachet.id_articol,
|
|
detalii_articol.serie,
|
|
crs_rand_elemente_pachet.pret,
|
|
crs_rand_elemente_pachet.proc_tvav,
|
|
detalii_articol.pret_cu_tva,
|
|
detalii_articol.cantitate,
|
|
detalii_articol.discount_unitar *
|
|
ROUND(crs_rand_elemente_pachet.pret /
|
|
detalii_articol.pret,
|
|
pack_facturare.v_zecimale_procent),
|
|
detalii_articol.id_gestiune,
|
|
detalii_articol.cont,
|
|
detalii_articol.id_valuta,
|
|
detalii_articol.curs);
|
|
END IF;
|
|
|
|
FETCH cursor_elemente_pachet
|
|
INTO crs_rand_elemente_pachet;
|
|
END LOOP;
|
|
CLOSE cursor_elemente_pachet;
|
|
|
|
-- discount ? */
|
|
|
|
ELSE
|
|
-- articol simplu
|
|
OPEN cursor_articol;
|
|
FETCH cursor_articol
|
|
INTO crs_rand_articol;
|
|
WHILE cursor_articol%FOUND LOOP
|
|
|
|
CASE
|
|
-- 30.10.2009
|
|
WHEN pack_facturare.ntip <= 20 or
|
|
pack_facturare.ntip IN (pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
pack_facturare.nTipNotaPlata,
|
|
pack_facturare.nTipVanzareRetail,
|
|
48,
|
|
49,51,52) THEN
|
|
-- 30.10.2009 ^
|
|
-- factura,factura roahotel
|
|
V_SCD := crs_rand_articol.scd;
|
|
V_ASCD := NVL(crs_rand_articol.ascd,
|
|
PACK_FACTURARE.GetAnaliticByGrupUtilizatori(pack_facturare.nid_util,
|
|
V_SCD));
|
|
WHEN pack_facturare.ntip in (28, 29) THEN
|
|
-- aviz catre clienti debitori
|
|
V_SCD := '461';
|
|
V_ASCD := PACK_FACTURARE.GetAnaliticByGrupUtilizatori(pack_facturare.nid_util,
|
|
V_SCD);
|
|
ELSE
|
|
-- aviz
|
|
V_SCD := '418';
|
|
V_ASCD := PACK_FACTURARE.GetAnaliticByGrupUtilizatori(pack_facturare.nid_util,
|
|
V_SCD);
|
|
END CASE;
|
|
|
|
V_SCC := crs_rand_articol.scc;
|
|
V_ASCC := NVL(crs_rand_articol.ascc,
|
|
PACK_FACTURARE.GetAnaliticByGrupUtilizatori(pack_facturare.nid_util,
|
|
V_SCC));
|
|
|
|
CASE
|
|
WHEN pack_facturare.ntip = 7 THEN
|
|
V_EXPLICATIE := SUBSTR(TRIM(crs_rand_articol.explicatie) ||
|
|
' INVOICE:' || pack_facturare.cdescriere, 1, 100);
|
|
WHEN pack_facturare.ntip IN (8, 9) THEN
|
|
V_EXPLICATIE := SUBSTR(TRIM(crs_rand_articol.explicatie) ||
|
|
' RETUR FACTURA:' || pack_facturare.cdescriere, 1,100);
|
|
ELSE
|
|
V_EXPLICATIE := crs_rand_articol.explicatie;
|
|
END CASE;
|
|
|
|
IF pack_facturare.nTip <> pack_facturare.nTipNotaPlata THEN
|
|
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL +
|
|
pack_facturare.scrie_nota(detalii_articol.cantitate,
|
|
detalii_articol.pret,
|
|
detalii_articol.discount_unitar,
|
|
detalii_articol.pret_cu_tva,
|
|
detalii_articol.id_valuta,
|
|
crs_rand_articol.in_valuta,
|
|
detalii_articol.curs /
|
|
detalii_articol.multiplicator,
|
|
crs_rand_articol.id_venchelt,
|
|
crs_rand_articol.id_sectie,
|
|
detalii_articol.id_ctr,
|
|
V_EXPLICATIE,
|
|
V_SCD,
|
|
V_ASCD,
|
|
V_SCC,
|
|
V_ASCC,
|
|
0,
|
|
0,
|
|
pack_facturare.nid_set,
|
|
crs_rand_articol.cu_tva,
|
|
detalii_articol.proc_tvav * 100 - 100,
|
|
detalii_articol.id_jtva_coloana,
|
|
detalii_articol.taxcode,
|
|
null);
|
|
END IF;
|
|
|
|
V_IN_VALUTA := crs_rand_articol.in_valuta;
|
|
|
|
IF pack_facturare.ntip <> 4 THEN
|
|
IF pack_facturare.nscadere_stoc = 1 AND
|
|
detalii_articol.id_gestiune <> -1000 AND
|
|
detalii_articol.in_stoc = 1 THEN
|
|
pack_facturare.descarca_gestiune(detalii_articol.id_articol,
|
|
detalii_articol.serie,
|
|
detalii_articol.pret_achizitie,
|
|
detalii_articol.pretd,
|
|
detalii_articol.id_valutad,
|
|
detalii_articol.pretv_orig,
|
|
detalii_articol.pret,
|
|
detalii_articol.diferenta,
|
|
detalii_articol.proc_tvav,
|
|
detalii_articol.pret_cu_tva,
|
|
detalii_articol.cantitate,
|
|
detalii_articol.discount_unitar,
|
|
detalii_articol.id_gestiune,
|
|
crs_rand_articol.id_sectie,
|
|
detalii_articol.cont,
|
|
crs_rand_articol.id_venchelt,
|
|
detalii_articol.id_valuta,
|
|
detalii_articol.curs /
|
|
detalii_articol.multiplicator,
|
|
detalii_articol.id_part_rez,
|
|
detalii_articol.id_lucrare_rez,
|
|
detalii_articol.id_jtva_coloana,
|
|
detalii_articol.taxcode);
|
|
END IF;
|
|
|
|
IF detalii_articol.discount_unitar <> 0 AND
|
|
pack_facturare.ndiscount_evidentiat = 1 THEN
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL -
|
|
pack_facturare.scrie_discount(detalii_articol.cantitate,
|
|
detalii_articol.discount_unitar,
|
|
detalii_articol.id_valuta,
|
|
V_IN_VALUTA,
|
|
V_ASCD,
|
|
crs_rand_articol.id_sectie,
|
|
detalii_articol.id_ctr,
|
|
detalii_articol.curs /
|
|
detalii_articol.multiplicator,
|
|
detalii_articol.proc_tvav,
|
|
detalii_articol.pret_cu_tva,
|
|
crs_rand_articol.cu_tva,
|
|
detalii_articol.id_jtva_coloana,
|
|
detalii_articol.taxcode);
|
|
END IF;
|
|
|
|
ELSE
|
|
pack_facturare.scrie_fact_aviz_custodie(detalii_articol.id_rata, -- V_COD
|
|
crs_rand_articol.id_sectie,
|
|
detalii_articol.id_articol,
|
|
detalii_articol.id_gestiune,
|
|
detalii_articol.cont,
|
|
detalii_articol.cantitate,
|
|
detalii_articol.pret_cu_tva,
|
|
detalii_articol.pret_achizitie,
|
|
detalii_articol.pretd,
|
|
detalii_articol.id_valutad,
|
|
detalii_articol.pret,
|
|
detalii_articol.discount_unitar,
|
|
detalii_articol.id_valuta,
|
|
detalii_articol.curs /
|
|
detalii_articol.multiplicator,
|
|
detalii_articol.proc_tvav);
|
|
END IF;
|
|
|
|
FETCH cursor_articol
|
|
INTO crs_rand_articol;
|
|
END LOOP;
|
|
CLOSE cursor_articol;
|
|
|
|
END IF;
|
|
|
|
RETURN V_INCASAT_CALCUL;
|
|
END contabilizeaza_articol;
|
|
-------------------------------------------------------------------
|
|
FUNCTION contabilizeaza_rata(detalii_rata VANZARI_DETALII_TEMP%ROWTYPE)
|
|
RETURN NUMBER IS
|
|
V_INCASAT_CALCUL ACT.SUMA%TYPE := 0;
|
|
|
|
V_ID_VENCHELT ACT.ID_VENCHELT%TYPE;
|
|
V_ID_SECTIE ACT.ID_SECTIE%TYPE;
|
|
V_ID_SET ACT.ID_SET%TYPE;
|
|
V_EXPLICATIE ACT.EXPLICATIA%TYPE;
|
|
V_SCD ACT.SCD%TYPE;
|
|
V_ASCD ACT.ASCD%TYPE;
|
|
V_SCC ACT.SCC%TYPE;
|
|
V_ASCC ACT.ASCC%TYPE;
|
|
V_CU_TVA NOTE_CONTABILE.CU_TVA%TYPE;
|
|
V_IN_VALUTA NOTE_CONTABILE.IN_VALUTA%TYPE;
|
|
BEGIN
|
|
BEGIN
|
|
SELECT NVL(B.ID_VENCHELT, pack_facturare.nid_venchelt),
|
|
NVL(pack_facturare.nid_sectie_stoc, B.ID_SECTIE) AS ID_SECTIE,
|
|
B.ID_SET,
|
|
C.EXPLICATIE,
|
|
C.SCD,
|
|
C.ASCD,
|
|
C.SCC,
|
|
C.ASCC,
|
|
C.CU_TVA,
|
|
C.IN_VALUTA
|
|
INTO V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
V_ID_SET,
|
|
V_EXPLICATIE,
|
|
V_SCD,
|
|
V_ASCD,
|
|
V_SCC,
|
|
V_ASCC,
|
|
V_CU_TVA,
|
|
V_IN_VALUTA
|
|
FROM CONTRACTE A
|
|
LEFT JOIN CRM_NOTE_VANZARI B
|
|
ON A.ID_NOTA = B.ID_NOTA
|
|
LEFT JOIN NOTE_CONTABILE C
|
|
ON B.ID_SET = C.ID_SET
|
|
WHERE A.STERS = 0
|
|
AND A.ID_CTR = detalii_rata.id_ctr
|
|
AND B.STERS = 0;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu sunt configurate notele de vanzare pentru acest contract!');
|
|
END;
|
|
|
|
IF pack_facturare.ndiscount_evidentiat = 1 AND
|
|
detalii_rata.discount_unitar > 0 THEN
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL -
|
|
pack_facturare.scrie_discount(detalii_rata.cantitate,
|
|
detalii_rata.discount_unitar,
|
|
detalii_rata.id_valuta,
|
|
V_IN_VALUTA,
|
|
V_ASCD,
|
|
V_ID_SECTIE,
|
|
detalii_rata.id_ctr,
|
|
detalii_rata.curs /
|
|
detalii_rata.multiplicator,
|
|
detalii_rata.proc_tvav,
|
|
detalii_rata.pret_cu_tva,
|
|
V_CU_TVA,
|
|
detalii_rata.id_jtva_coloana,
|
|
detalii_rata.taxcode);
|
|
END IF;
|
|
|
|
-- scriere nota in act
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL +
|
|
pack_facturare.scrie_nota(detalii_rata.cantitate,
|
|
detalii_rata.pret,
|
|
detalii_rata.discount_unitar,
|
|
detalii_rata.pret_cu_tva,
|
|
detalii_rata.id_valuta,
|
|
V_IN_VALUTA,
|
|
detalii_rata.curs /
|
|
detalii_rata.Multiplicator,
|
|
V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
detalii_rata.id_ctr,
|
|
detalii_rata.explicatia,
|
|
V_SCD,
|
|
V_ASCD,
|
|
V_SCC,
|
|
V_ASCC,
|
|
0, -- V_ID_GESTIN
|
|
0, -- V_ID_GESTOUT
|
|
pack_facturare.nid_set, -- V_ID_SET
|
|
V_CU_TVA,
|
|
detalii_rata.proc_tvav * 100 - 100,
|
|
detalii_rata.id_jtva_coloana,
|
|
detalii_Rata.Taxcode,
|
|
null); --(tab_detalii(i).proc_tvav - 1) * 100
|
|
|
|
RETURN V_INCASAT_CALCUL;
|
|
END;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE descarca_gestiune(V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRETV_ALES IN NUMBER,
|
|
V_PRET_UNITAR IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_CANTE IN NUMBER,
|
|
V_DISCOUNT IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_PART_REZ IN NUMBER,
|
|
V_ID_LUCRARE_REZ IN NUMBER) IS
|
|
begin
|
|
|
|
PACK_FACTURARE.descarca_gestiune(V_ID_ARTICOL => V_ID_ARTICOL,
|
|
V_SERIE => V_SERIE,
|
|
V_PRET_ACHIZITIE => V_PRET_ACHIZITIE,
|
|
V_PRETD => V_PRETD,
|
|
V_ID_VALUTAD => V_ID_VALUTAD,
|
|
V_PRETV_ALES => V_PRETV_ALES,
|
|
V_PRET_UNITAR => V_PRET_UNITAR,
|
|
V_AJUSTARE => V_AJUSTARE,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_PRET_ARE_TVA => V_PRET_ARE_TVA,
|
|
V_CANTE => V_CANTE,
|
|
V_DISCOUNT => V_DISCOUNT,
|
|
V_ID_GESTIUNE => V_ID_GESTIUNE,
|
|
V_ID_SECTIE => V_ID_SECTIE,
|
|
V_CONT => V_CONT,
|
|
V_ID_VENCHELT => V_ID_VENCHELT,
|
|
V_ID_VALUTA => V_ID_VALUTA,
|
|
V_CURS => V_CURS,
|
|
V_ID_PART_REZ => V_ID_PART_REZ,
|
|
V_ID_LUCRARE_REZ => V_ID_LUCRARE_REZ,
|
|
V_ID_JTVA_COLOANA => NULL,
|
|
V_TAXCODE => NULL);
|
|
end;
|
|
|
|
PROCEDURE descarca_gestiune(V_ID_ARTICOL IN NUMBER,
|
|
V_SERIE IN VARCHAR2,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRETV_ALES IN NUMBER,
|
|
V_PRET_UNITAR IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_CANTE IN NUMBER,
|
|
V_DISCOUNT IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_PART_REZ IN NUMBER,
|
|
V_ID_LUCRARE_REZ IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_TAXCODE IN NUMBER) IS
|
|
V_PRET STOC.PRET%TYPE;
|
|
V_TVA STOC.TVA%TYPE;
|
|
V_PRETV_ORIG STOC.PRETV%TYPE;
|
|
V_ACONT STOC.ACONT%TYPE;
|
|
V_ACONT_REST STOC.ACONT%TYPE;
|
|
|
|
V_ACONT_GEST NOM_GESTIUNI.ACONT%TYPE;
|
|
|
|
V_ADAOS RUL.ADAOS%TYPE;
|
|
V_ADAOS_ORIG RUL.ADAOS%TYPE;
|
|
V_PRETV RUL.PRETV%TYPE;
|
|
V_TVAV RUL.PRETV%TYPE;
|
|
V_PRETVTVA RUL.PRETVTVA%TYPE;
|
|
V_TVAV_ORIG RUL.PRETV%TYPE;
|
|
V_PROC_TVAV_ORIG RUL.PROC_TVAV%TYPE;
|
|
V_DISCOUNT_UNITAR RUL.DISCUNITAR%TYPE;
|
|
V_DISCOUNT_TVA RUL.DISCOUNT_TVA%TYPE;
|
|
V_DISCOUNT_CU_TVA RUL.DISCUNITAR%TYPE;
|
|
V_PROC_DISCOUNT RUL.PROC_DISC%TYPE;
|
|
V_PROCENT RUL.PROCENT%TYPE;
|
|
V_PROCENT_ORIG RUL.PROCENT%TYPE;
|
|
|
|
V_EXPLICATIE ACT.EXPLICATIA%TYPE;
|
|
V_SUMA ACT.SUMA%TYPE;
|
|
V_INCASAT_CALCUL ACT.SUMA%TYPE;
|
|
V_CONT2 ACT.SCD%TYPE;
|
|
V_CONT3 ACT.SCD%TYPE;
|
|
V_ACONT2 ACT.ASCD%TYPE;
|
|
V_ANALITICCUST ACT.ASCD%TYPE;
|
|
|
|
V_TIP_GESTIUNE NOM_GESTIUNI.NR_PAG%TYPE;
|
|
tab_stoc tab_stoc_type;
|
|
|
|
V_CANTITATE STOC.CANTS%TYPE;
|
|
V_CANTITATE_RAMASA STOC.CANTS%TYPE;
|
|
V_DENUMIRE NOM_ARTICOLE.DENUMIRE%TYPE;
|
|
|
|
V_ID_TIP_RULAJ NOM_TIP_RULAJ.ID_TIP_RULAJ%TYPE := 3;
|
|
--V_ZECIMALE_PRETV NUMBER(1) := pack_sesiune.nzecimale_pretv;
|
|
V_VALOARE_PRET ACT.SUMA%TYPE;
|
|
V_VALOARE_PRETV ACT.SUMA%TYPE;
|
|
V_VALOARE_PRETV_ORIG ACT.SUMA%TYPE;
|
|
V_VALOARE_TVA ACT.SUMA%TYPE;
|
|
V_VALOARE_TVAV ACT.SUMA%TYPE;
|
|
V_VALOARE_TVAV_ORIG ACT.SUMA%TYPE;
|
|
V_VALOARE_ADAOS ACT.SUMA%TYPE;
|
|
V_VALOARE_ADAOS_ORIG ACT.SUMA%TYPE;
|
|
V_VALOARE_DIFERENTA_PRETV ACT.SUMA%TYPE;
|
|
V_VALOARE_DIFERENTA_TVAV ACT.SUMA%TYPE;
|
|
V_VALOARE_PRETVTVA ACT.SUMA%TYPE;
|
|
V_PROC_TVA ACT.PROC_TVA%TYPE;
|
|
V_TIP_INREG RUL.AN%TYPE;
|
|
V_DATAIN RUL.DATAIN%TYPE;
|
|
-- diferenta dintre pretul de lista si pretul de vanzare din stoc
|
|
|
|
V_DISCOUNT_EVIDENTIAT_AVIZ VANZARI.DISCOUNT_EVIDENTIAT%TYPE;
|
|
|
|
lcAcont607 ACT.ASCD%TYPE;
|
|
lcAcont608 ACT.ASCD%TYPE;
|
|
lcAcont378 ACT.ASCD%TYPE;
|
|
lcAcont388 ACT.ASCD%TYPE;
|
|
V_ACONT3 ACT.ASCD%TYPE;
|
|
lnFacturareFaraStoc NUMBER(1) := 0;
|
|
lnDescarcare345FaraAdaos NUMBER(1) := 0;
|
|
lnInStoc number(10) := 1;
|
|
|
|
BEGIN
|
|
lnFacturareFaraStoc := TO_NUMBER(NVL(pack_sesiune.getoptiunefirma('RF_FACTURARE_FARA_STOC'),
|
|
'0'));
|
|
|
|
lnDescarcare345FaraAdaos := TO_NUMBER(NVL(pack_sesiune.getoptiunefirma('RF_DESCARCARE_345_FARA_ADAOS'),
|
|
'0'));
|
|
|
|
-- NU SE DESCARCA GESTIUNEA PENTRU ARTICOLELE NEGESTIONABILE
|
|
-- ASTFEL INCAT SA SE POATA FACE OPERATII GEN AVIZ DIN CUSTODIE INCLUSIV CU ARTICOLE NEGESTIONABILE
|
|
SELECT MAX(IN_STOC)
|
|
INTO lnInStoc
|
|
FROM NOM_ARTICOLE
|
|
WHERE ID_ARTICOL = V_ID_ARTICOL;
|
|
if lnInStoc = 0 then
|
|
GOTO SFARSIT;
|
|
end if;
|
|
-- V_PRETV_ORIG si V_PRETV_ALES
|
|
V_EXPLICATIE := NULL;
|
|
|
|
pack_facturare.calculeaza_pret(V_PRET_UNITAR,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVAV,
|
|
V_PRET_ARE_TVA,
|
|
2,
|
|
V_PRETV,
|
|
V_TVAV,
|
|
V_PRETVTVA);
|
|
|
|
pack_facturare.calculeaza_pret(V_DISCOUNT,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVAV,
|
|
V_PRET_ARE_TVA,
|
|
2,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_TVA,
|
|
V_DISCOUNT_CU_TVA);
|
|
|
|
IF V_PRETVTVA <> 0 THEN
|
|
V_PROC_DISCOUNT := ROUND(V_DISCOUNT_CU_TVA / V_PRETVTVA,
|
|
pack_facturare.nzecimale_procent) * 100;
|
|
ELSE
|
|
V_PROC_DISCOUNT := 0;
|
|
END IF;
|
|
|
|
-- modificare pentru discount evidentiat
|
|
IF pack_facturare.ndiscount_evidentiat = 0 THEN
|
|
V_PRETV := V_PRETV - V_DISCOUNT_UNITAR;
|
|
V_TVAV := V_TVAV - V_DISCOUNT_TVA;
|
|
V_PRETVTVA := V_PRETVTVA - V_DISCOUNT_CU_TVA;
|
|
V_DISCOUNT_UNITAR := 0;
|
|
V_DISCOUNT_TVA := 0;
|
|
V_DISCOUNT_CU_TVA := 0;
|
|
END IF;
|
|
|
|
-- modificare pentru facturile in valuta
|
|
IF V_AJUSTARE <> 0 THEN
|
|
V_PRETV := V_PRETV + V_AJUSTARE;
|
|
V_TVAV := V_TVAV + ROUND(V_AJUSTARE * V_PROC_TVAV,
|
|
pack_sesiune.nzecimale_pretv);
|
|
V_PRETVTVA := V_PRETV + V_TVAV;
|
|
END IF;
|
|
--
|
|
|
|
BEGIN
|
|
SELECT NR_PAG, NVL(ACONT, 'XXXX')
|
|
INTO V_TIP_GESTIUNE, V_ACONT_GEST
|
|
FROM NOM_GESTIUNI
|
|
WHERE ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND STERS = 0;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Eroare la selectarea gestiunii! (FACT-007 : ' ||
|
|
V_ID_GESTIUNE || '.' || V_ID_ARTICOL || ')');
|
|
END;
|
|
|
|
CASE
|
|
WHEN pack_facturare.ntip IN (8, 9) THEN
|
|
-- factura de retur
|
|
SELECT 1 as tip,
|
|
a.pret,
|
|
a.pretv,
|
|
a.acont,
|
|
0 as cants,
|
|
a.cante as cant,
|
|
0 as cante,
|
|
a.tvav,
|
|
a.proc_tvav,
|
|
a.tva,
|
|
a.datain,
|
|
a.id_rul_aux,
|
|
a.pretd,
|
|
a.id_valuta,
|
|
a.lot,
|
|
a.adata_expirare,
|
|
a.serie,
|
|
a.id_lucrare_rez,
|
|
a.id_part_rez,
|
|
b.PRETACHCTVA
|
|
BULK COLLECT
|
|
INTO tab_stoc
|
|
FROM RUL A
|
|
LEFT JOIN NOM_ARTICOLE B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
WHERE A.STERS = 0
|
|
AND NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = V_CONT
|
|
AND NVL(A.SERIE, '+_') = NVL(V_SERIE, '+_')
|
|
AND A.PRETV = V_PRETV_ALES
|
|
AND A.PRET = NVL(V_PRET_ACHIZITIE, A.PRET)
|
|
AND NVL(A.PRETD, 0) = NVL(V_PRETD, NVL(A.PRETD, 0))
|
|
AND NVL(A.ID_VALUTA, 0) =
|
|
NVL(DECODE(V_ID_VALUTAD, -99, 0, V_ID_VALUTAD),
|
|
NVL(A.ID_VALUTA, 0))
|
|
AND A.CANTE <> 0
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(V_ID_LUCRARE_REZ, 0)
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(V_ID_PART_REZ, 0)
|
|
AND A.ID_TIP_RULAJ = 0
|
|
AND A.COD IN
|
|
(SELECT COD
|
|
FROM VANZARI
|
|
WHERE ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(cast(CHARN2COLLECTION(pack_facturare.clistaid,
|
|
',') as num_tab))));
|
|
WHEN pack_Facturare.ntip = 24 THEN
|
|
BEGIN
|
|
SELECT DISTINCT DISCOUNT_EVIDENTIAT
|
|
INTO V_DISCOUNT_EVIDENTIAT_AVIZ
|
|
FROM VANZARI
|
|
WHERE COD IN
|
|
(SELECT X AS COD
|
|
FROM table(cast(CHARN2COLLECTION(pack_facturare.ccod_retur,
|
|
',') as num_tab)));
|
|
EXCEPTION
|
|
WHEN TOO_MANY_ROWS THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'O parte dintre avize sunt cu discount evidentiat,iar altele sunt fara! (FACT-022)');
|
|
END;
|
|
-- aviz de retur
|
|
SELECT 1 as tip,
|
|
A.pret,
|
|
A.pretv,
|
|
A.acont,
|
|
0 as cants,
|
|
A.cante as cant,
|
|
0 as cante,
|
|
A.tvav,
|
|
A.proc_tvav,
|
|
A.tva,
|
|
A.datain,
|
|
A.id_rul_aux,
|
|
A.pretd,
|
|
A.id_valuta,
|
|
A.lot,
|
|
A.adata_expirare,
|
|
A.serie,
|
|
A.id_lucrare_rez,
|
|
A.id_part_rez,
|
|
B.PRETACHCTVA
|
|
BULK COLLECT
|
|
INTO tab_stoc
|
|
FROM RUL A
|
|
LEFT JOIN NOM_ARTICOLE B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
WHERE A.STERS = 0
|
|
AND A.ID_TIP_RULAJ = 0
|
|
AND NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = V_CONT
|
|
AND NVL(A.SERIE, '+_') = NVL(V_SERIE, '+_')
|
|
AND A.PRETV = DECODE(V_DISCOUNT_EVIDENTIAT_AVIZ,
|
|
1,
|
|
V_PRETV,
|
|
V_PRETV - V_DISCOUNT_UNITAR)
|
|
AND A.PRET = NVL(V_PRET_ACHIZITIE, A.PRET)
|
|
AND NVL(A.PRETD, 0) = NVL(V_PRETD, NVL(A.PRETD, 0))
|
|
AND NVL(A.ID_VALUTA, 0) =
|
|
NVL(DECODE(V_ID_VALUTAD, -99, 0, V_ID_VALUTAD),
|
|
NVL(A.ID_VALUTA, 0))
|
|
AND A.CANTE <> 0
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(V_ID_LUCRARE_REZ, 0)
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(V_ID_PART_REZ, 0)
|
|
AND A.COD IN
|
|
(SELECT X AS COD
|
|
FROM table(cast(CHARN2COLLECTION(pack_facturare.ccod_retur,
|
|
',') as num_tab)));
|
|
|
|
WHEN pack_Facturare.ntip = pack_facturare.nTipFacturaHotel THEN
|
|
-- 09.02.2010
|
|
-- la vanzarea din stoc din ROARETAIL - aflu preturile de achizitie/vanzare, seria, gestiunea si trebuie sa intru pe ramura default
|
|
-- DESCARCAREA DE GESTIUNE OFFLINE TREBUIE RESCRISA SA FOLOSEASCA PROCEDURA PACK_RETAIL_STOC.SALVEAZABON
|
|
-- pack_Facturare.ntip = pack_gestiuni_retail.nTipVanzareRetail
|
|
-- BONURI FISCALE DIN ROARETAIL (NU AM PRETUL DE ACHIZITIE, CONTUL) PACK_GESTIUNI_RETAIL.DESCARCARE_RETAIL
|
|
-- 09.02.2010 ^
|
|
SELECT 1 as tip,
|
|
a.pret,
|
|
a.pretv,
|
|
a.acont,
|
|
a.cants,
|
|
a.cant,
|
|
a.cante,
|
|
a.tvav,
|
|
a.proc_tvav,
|
|
a.tva,
|
|
a.datain,
|
|
a.id_rul_aux,
|
|
a.pretd,
|
|
a.id_valuta,
|
|
a.lot,
|
|
a.adata_expirare,
|
|
a.serie,
|
|
a.id_lucrare_rez,
|
|
a.id_part_rez,
|
|
b.PRETACHCTVA
|
|
BULK COLLECT
|
|
INTO tab_stoc
|
|
FROM STOC A
|
|
LEFT JOIN NOM_ARTICOLE B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
WHERE NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND A.LUNA = pack_facturare.nluna
|
|
AND A.AN = pack_facturare.nan
|
|
AND A.CANTS + A.CANT > a.cante
|
|
ORDER BY A.PRET;
|
|
|
|
WHEN pack_Facturare.ntip in
|
|
(pack_facturare.nTipFacturaRestaurant,
|
|
pack_facturare.nTipNotaPlata) THEN
|
|
V_ACONT_REST := NULL;
|
|
|
|
SELECT *
|
|
BULK COLLECT
|
|
INTO tab_stoc
|
|
FROM (SELECT 1 as tip,
|
|
a.pret,
|
|
a.pretv,
|
|
a.acont,
|
|
a.cants,
|
|
a.cant + nvl(b.cant, 0) as cant,
|
|
a.cante + nvl(b.cante, 0) as cante,
|
|
a.tvav,
|
|
a.proc_tvav,
|
|
a.tva,
|
|
a.datain,
|
|
a.id_rul_aux,
|
|
a.pretd,
|
|
a.id_valuta,
|
|
a.lot,
|
|
a.adata_expirare,
|
|
a.serie,
|
|
a.id_lucrare_rez,
|
|
a.id_part_rez,
|
|
c.pretachctva
|
|
FROM STOC A
|
|
LEFT JOIN (select sum(cant) as cant,
|
|
sum(cante) as cante,
|
|
id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare
|
|
from rul_temp
|
|
where an = 1
|
|
group by id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare) B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
AND A.ID_GESTIUNE = B.ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = NVL(B.CONT, 'XXXX')
|
|
AND NVL(A.ACONT, 'XXXX') = NVL(B.ACONT, 'XXXX')
|
|
AND A.PRET = B.PRET
|
|
AND A.PRETV = B.PRETV
|
|
AND NVL(A.SERIE, '+_') = NVL(B.SERIE, '+_')
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(B.ID_PART_REZ, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(B.ID_LUCRARE_REZ, 0)
|
|
AND A.PROC_TVAV = B.PROC_TVAV
|
|
AND NVL(A.ID_RUL_AUX, 0) = NVL(B.ID_RUL_AUX, 0)
|
|
AND A.PRETD = B.PRETD
|
|
AND NVL(A.ID_VALUTA, 0) = NVL(B.ID_VALUTA, 0)
|
|
AND NVL(A.LOT, '_') = NVL(B.LOT, '_')
|
|
AND NVL(A.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY')) =
|
|
NVL(B.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY'))
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
WHERE NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND A.LUNA = pack_facturare.nluna
|
|
AND A.AN = pack_facturare.nan
|
|
AND A.CANTS + A.CANT + nvl(b.cant, 0) >
|
|
a.cante + nvl(b.cante, 0)
|
|
UNION ALL
|
|
SELECT 2 AS TIP,
|
|
NVL(V_PRET_ACHIZITIE, 0) as pret,
|
|
NVL(V_PRETV_ALES, 0) as pretv,
|
|
V_ACONT_REST as acont,
|
|
V_CANTE as cants,
|
|
0 as cant,
|
|
0 as cante,
|
|
pack_sesiune.calculeaza_pret_tva(V_PRETV_ALES,
|
|
1,
|
|
pack_Facturare.nid_moneda_nationala,
|
|
V_PROC_TVAV,
|
|
0,
|
|
2) as tvav,
|
|
V_PROC_TVAV as proc_tvav,
|
|
pack_sesiune.calculeaza_pret_tva(V_PRET_ACHIZITIE,
|
|
1,
|
|
pack_facturare.nid_moneda_nationala,
|
|
V_PROC_TVAV,
|
|
0,
|
|
1) as tva,
|
|
NULL as datain,
|
|
NULL as id_rul_aux,
|
|
V_PRETD as pretd,
|
|
V_ID_VALUTAD as id_valuta,
|
|
NULL as lot,
|
|
NULL as adata_expirare,
|
|
V_SERIE as serie,
|
|
V_ID_LUCRARE_REZ as id_lucrare_rez,
|
|
V_ID_PART_REZ as id_part_rez,
|
|
pretachctva
|
|
FROM NOM_ARTICOLE
|
|
WHERE ID_ARTICOL = V_ID_ARTICOL)
|
|
ORDER BY TIP, PRET;
|
|
|
|
WHEN V_CANTE < 0 and pack_facturare.clistaid is not null and
|
|
instr(pack_facturare.clistaid, ':') > 0 THEN
|
|
-- tip = 1 facturare cu articole retur din rulaj, nu din stoc
|
|
-- am facut ramura separata pt ca la conpress group bon fiscal de la chiosc
|
|
-- statea foarte mult sa parcurga rulajul,
|
|
-- desi nu aveam nici V_CANTE < 0 nici pack_facturare.clista_id
|
|
-- este la fel ca ramura else, dar cu tip = 1 in plus
|
|
-- tip = 2 facturare articole din stoc (cantitate pozitiva sau negativa)
|
|
-- tip = 3 facturare articole fara stoc, din nomenclatorul de articole, RF_FACTURARE_FARA_STOC = 1
|
|
SELECT *
|
|
BULK COLLECT
|
|
INTO tab_stoc
|
|
FROM (SELECT 1 as tip, -- ARTICOLE RETUR, DIN RUL
|
|
a.pret,
|
|
a.pretv,
|
|
a.acont,
|
|
0 as cants,
|
|
a.cante as cant,
|
|
0 as cante,
|
|
a.tvav,
|
|
a.proc_tvav,
|
|
a.tva,
|
|
a.datain,
|
|
a.id_rul_aux,
|
|
a.pretd,
|
|
a.id_valuta,
|
|
a.lot,
|
|
a.adata_expirare,
|
|
a.serie,
|
|
a.id_lucrare_rez,
|
|
a.id_part_rez,
|
|
b.PRETACHCTVA
|
|
FROM RUL A
|
|
LEFT JOIN NOM_ARTICOLE B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
WHERE V_CANTE < 0
|
|
AND A.STERS = 0
|
|
AND NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = V_CONT
|
|
AND NVL(A.SERIE, '+_') = NVL(V_SERIE, '+_')
|
|
AND A.PRETV = V_PRETV_ALES
|
|
AND A.PRET = NVL(V_PRET_ACHIZITIE, A.PRET)
|
|
AND NVL(A.PRETD, 0) = NVL(V_PRETD, NVL(A.PRETD, 0))
|
|
AND NVL(A.ID_VALUTA, 0) =
|
|
NVL(DECODE(V_ID_VALUTAD, -99, 0, V_ID_VALUTAD),
|
|
NVL(A.ID_VALUTA, 0))
|
|
AND A.CANTE <> 0
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(V_ID_LUCRARE_REZ, 0)
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(V_ID_PART_REZ, 0)
|
|
AND A.ID_TIP_RULAJ = 0
|
|
AND A.COD IN
|
|
(SELECT COD
|
|
FROM VANZARI
|
|
WHERE ID_VANZARE IN
|
|
(select id_vanzare
|
|
from (select cast(getwordnum(id_articol_id_vanzare,
|
|
1,
|
|
':') as
|
|
number(20, 0)) as id_articol,
|
|
cast(getwordnum(id_articol_id_vanzare,
|
|
2,
|
|
':') as
|
|
number(20, 0)) as id_vanzare
|
|
from (select x as id_articol_id_vanzare
|
|
FROM table(cast(CHARC2COLLECTION(pack_facturare.clistaid,
|
|
',') as
|
|
char_tab))))
|
|
where id_articol = V_ID_ARTICOL)) -- ID_ARTICOL:ID_VANZARE,ID_ARTICOL:ID_VANZARE
|
|
UNION ALL
|
|
SELECT 2 as tip, -- FARA ARTICOLE RETUR, DIN STOC. ulterior am inclus si articolele vandute normal (nu din rulaj) dar cu cantitate negativa, care exista in stoc
|
|
a.pret,
|
|
a.pretv,
|
|
a.acont,
|
|
a.cants,
|
|
a.cant + nvl(b.cant, 0) as cant,
|
|
a.cante + nvl(b.cante, 0) as cante,
|
|
a.tvav,
|
|
a.proc_tvav,
|
|
a.tva,
|
|
a.datain,
|
|
a.id_rul_aux,
|
|
a.pretd,
|
|
a.id_valuta,
|
|
a.lot,
|
|
a.adata_expirare,
|
|
a.serie,
|
|
a.id_lucrare_rez,
|
|
a.id_part_rez,
|
|
c.pretachctva
|
|
FROM STOC A
|
|
LEFT JOIN (select sum(cant) as cant,
|
|
sum(cante) as cante,
|
|
id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare
|
|
from rul_temp
|
|
where an = 1
|
|
group by id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare) B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
AND A.ID_GESTIUNE = B.ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = NVL(B.CONT, 'XXXX')
|
|
AND NVL(A.ACONT, 'XXXX') = NVL(B.ACONT, 'XXXX')
|
|
AND A.PRET = B.PRET
|
|
AND A.PRETV = B.PRETV
|
|
AND NVL(A.SERIE, '+_') = NVL(B.SERIE, '+_')
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(B.ID_PART_REZ, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(B.ID_LUCRARE_REZ, 0)
|
|
AND A.PROC_TVAV = B.PROC_TVAV
|
|
AND NVL(A.ID_RUL_AUX, 0) = NVL(B.ID_RUL_AUX, 0)
|
|
AND A.PRETD = B.PRETD
|
|
AND NVL(A.ID_VALUTA, 0) = NVL(B.ID_VALUTA, 0)
|
|
AND NVL(A.LOT, '_') = NVL(B.LOT, '_')
|
|
AND NVL(A.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY')) =
|
|
NVL(B.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY'))
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
WHERE V_CANTE <> 0
|
|
AND NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = V_CONT
|
|
AND A.PRET = V_PRET_ACHIZITIE
|
|
AND A.PRETD = V_PRETD
|
|
AND NVL(A.ID_VALUTA, 0) =
|
|
DECODE(V_ID_VALUTAD, -99, 0, NVL(V_ID_VALUTAD, 0))
|
|
AND A.PRETV = V_PRETV_ALES -- modificare v 2.0.19
|
|
AND NVL(A.SERIE, '+_') = NVL(V_SERIE, '+_')
|
|
AND A.LUNA = pack_facturare.nluna
|
|
AND A.AN = pack_facturare.nan
|
|
AND A.CANTS + A.CANT + nvl(b.cant, 0) >
|
|
a.cante + nvl(b.cante, 0)
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(V_ID_PART_REZ, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(V_ID_LUCRARE_REZ, 0)
|
|
UNION ALL
|
|
SELECT 3 AS TIP, -- ARTICOLE FARA STOC, DIN NOMENCLATORUL DE ARTICOLE, RF_FACTURARE_FARA_STOC = 1
|
|
NVL(V_PRET_ACHIZITIE, 0) as pret,
|
|
NVL(V_PRETV_ALES, 0) as pretv,
|
|
pack_facturare.getanaliticbyarticol(V_CONT,
|
|
V_ID_GESTIUNE,
|
|
V_ID_ARTICOL) as acont,
|
|
V_CANTE as cants,
|
|
0 as cant,
|
|
0 as cante,
|
|
pack_sesiune.calculeaza_pret_tva(V_PRETV_ALES,
|
|
1,
|
|
pack_Facturare.nid_moneda_nationala,
|
|
V_PROC_TVAV,
|
|
0,
|
|
2) as tvav,
|
|
V_PROC_TVAV as proc_tvav,
|
|
pack_sesiune.calculeaza_pret_tva(V_PRET_ACHIZITIE,
|
|
1,
|
|
pack_facturare.nid_moneda_nationala,
|
|
V_PROC_TVAV,
|
|
0,
|
|
1) as tva,
|
|
NULL as datain,
|
|
NULL as id_rul_aux,
|
|
V_PRETD as pretd,
|
|
V_ID_VALUTAD as id_valuta,
|
|
NULL as lot,
|
|
NULL as adata_expirare,
|
|
V_SERIE as serie,
|
|
V_ID_LUCRARE_REZ as id_lucrare_rez,
|
|
V_ID_PART_REZ as id_part_rez,
|
|
pretachctva
|
|
FROM NOM_ARTICOLE
|
|
WHERE lnFacturareFaraStoc = 1
|
|
and ID_ARTICOL = V_ID_ARTICOL)
|
|
ORDER BY TIP, PRET;
|
|
|
|
ELSE
|
|
SELECT *
|
|
BULK COLLECT
|
|
INTO tab_stoc
|
|
FROM (SELECT 2 as tip, -- FARA ARTICOLE RETUR, DIN STOC. ulterior am inclus si articolele vandute normal (nu din rulaj) dar cu cantitate negativa, care exista in stoc
|
|
a.pret,
|
|
a.pretv,
|
|
a.acont,
|
|
a.cants,
|
|
a.cant + nvl(b.cant, 0) as cant,
|
|
a.cante + nvl(b.cante, 0) as cante,
|
|
a.tvav,
|
|
a.proc_tvav,
|
|
a.tva,
|
|
a.datain,
|
|
a.id_rul_aux,
|
|
a.pretd,
|
|
a.id_valuta,
|
|
a.lot,
|
|
a.adata_expirare,
|
|
a.serie,
|
|
a.id_lucrare_rez,
|
|
a.id_part_rez,
|
|
c.pretachctva
|
|
FROM STOC A
|
|
LEFT JOIN (select sum(cant) as cant,
|
|
sum(cante) as cante,
|
|
id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare
|
|
from rul_temp
|
|
where an = 1
|
|
group by id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare) B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
AND A.ID_GESTIUNE = B.ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = NVL(B.CONT, 'XXXX')
|
|
AND NVL(A.ACONT, 'XXXX') = NVL(B.ACONT, 'XXXX')
|
|
AND A.PRET = B.PRET
|
|
AND A.PRETV = B.PRETV
|
|
AND NVL(A.SERIE, '+_') = NVL(B.SERIE, '+_')
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(B.ID_PART_REZ, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(B.ID_LUCRARE_REZ, 0)
|
|
AND A.PROC_TVAV = B.PROC_TVAV
|
|
AND NVL(A.ID_RUL_AUX, 0) = NVL(B.ID_RUL_AUX, 0)
|
|
AND A.PRETD = B.PRETD
|
|
AND NVL(A.ID_VALUTA, 0) = NVL(B.ID_VALUTA, 0)
|
|
AND NVL(A.LOT, '_') = NVL(B.LOT, '_')
|
|
AND NVL(A.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY')) =
|
|
NVL(B.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY'))
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
WHERE V_CANTE <> 0
|
|
AND NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = V_CONT
|
|
AND A.PRET = V_PRET_ACHIZITIE
|
|
AND A.PRETD = V_PRETD
|
|
AND NVL(A.ID_VALUTA, 0) =
|
|
DECODE(V_ID_VALUTAD, -99, 0, NVL(V_ID_VALUTAD, 0))
|
|
AND A.PRETV = V_PRETV_ALES -- modificare v 2.0.19
|
|
AND NVL(A.SERIE, '+_') = NVL(V_SERIE, '+_')
|
|
AND A.LUNA = pack_facturare.nluna
|
|
AND A.AN = pack_facturare.nan
|
|
AND A.CANTS + A.CANT + nvl(b.cant, 0) >
|
|
a.cante + nvl(b.cante, 0)
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(V_ID_PART_REZ, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(V_ID_LUCRARE_REZ, 0)
|
|
UNION ALL
|
|
SELECT 3 AS TIP, -- ARTICOLE FARA STOC, DIN NOMENCLATORUL DE ARTICOLE, RF_FACTURARE_FARA_STOC = 1
|
|
NVL(V_PRET_ACHIZITIE, 0) as pret,
|
|
NVL(V_PRETV_ALES, 0) as pretv,
|
|
pack_facturare.getanaliticbyarticol(V_CONT,
|
|
V_ID_GESTIUNE,
|
|
V_ID_ARTICOL) as acont,
|
|
V_CANTE as cants,
|
|
0 as cant,
|
|
0 as cante,
|
|
pack_sesiune.calculeaza_pret_tva(V_PRETV_ALES,
|
|
1,
|
|
pack_Facturare.nid_moneda_nationala,
|
|
V_PROC_TVAV,
|
|
0,
|
|
2) as tvav,
|
|
V_PROC_TVAV as proc_tvav,
|
|
pack_sesiune.calculeaza_pret_tva(V_PRET_ACHIZITIE,
|
|
1,
|
|
pack_facturare.nid_moneda_nationala,
|
|
V_PROC_TVAV,
|
|
0,
|
|
1) as tva,
|
|
NULL as datain,
|
|
NULL as id_rul_aux,
|
|
V_PRETD as pretd,
|
|
V_ID_VALUTAD as id_valuta,
|
|
NULL as lot,
|
|
NULL as adata_expirare,
|
|
V_SERIE as serie,
|
|
V_ID_LUCRARE_REZ as id_lucrare_rez,
|
|
V_ID_PART_REZ as id_part_rez,
|
|
pretachctva
|
|
FROM NOM_ARTICOLE
|
|
WHERE lnFacturareFaraStoc = 1
|
|
and ID_ARTICOL = V_ID_ARTICOL)
|
|
ORDER BY TIP, PRET;
|
|
-- AND NVL(A.ID_RUL_AUX, 0) = 0
|
|
END CASE;
|
|
|
|
IF SQL%ROWCOUNT = 0 THEN
|
|
BEGIN
|
|
SELECT DENUMIRE
|
|
INTO V_DENUMIRE
|
|
FROM NOM_ARTICOLE
|
|
WHERE ID_ARTICOL = V_ID_ARTICOL;
|
|
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Articolul ' || V_DENUMIRE ||
|
|
' nu mai e in stoc! (FACT-008)');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Unul dintre articole nu mai exista in stoc! (FACT-009)');
|
|
END;
|
|
END IF;
|
|
|
|
V_CANTITATE_RAMASA := V_CANTE;
|
|
|
|
FOR i IN tab_stoc.first .. tab_stoc.last LOOP
|
|
|
|
EXIT WHEN V_CANTITATE_RAMASA = 0;
|
|
|
|
V_TIP_INREG := 1;
|
|
V_PRET := tab_stoc(i).PRET;
|
|
V_TVA := tab_stoc(i).TVA;
|
|
V_PRETV_ORIG := tab_stoc(i).PRETV;
|
|
V_ACONT := tab_stoc(i).ACONT;
|
|
V_DATAIN := tab_stoc(i).DATAIN;
|
|
|
|
-- 29.03.2010
|
|
lcAcont607 := GetAnaliticByArticol('607', V_ID_GESTIUNE, V_ID_ARTICOL);
|
|
lcAcont607 := CASE
|
|
WHEN lcAcont607 IS NULL THEN
|
|
REPLACE(V_ACONT, 'X')
|
|
ELSE
|
|
lcAcont607
|
|
END;
|
|
|
|
lcAcont608 := GetAnaliticByArticol('608', V_ID_GESTIUNE, V_ID_ARTICOL);
|
|
lcAcont608 := CASE
|
|
WHEN lcAcont608 IS NULL THEN
|
|
REPLACE(V_ACONT, 'X')
|
|
ELSE
|
|
lcAcont608
|
|
END;
|
|
|
|
lcAcont378 := GetAnaliticByArticol('378', V_ID_GESTIUNE, V_ID_ARTICOL);
|
|
lcAcont378 := CASE
|
|
WHEN lcAcont378 IS NULL THEN
|
|
REPLACE(V_ACONT, 'X')
|
|
ELSE
|
|
lcAcont378
|
|
END;
|
|
|
|
lcAcont388 := GetAnaliticByArticol('388', V_ID_GESTIUNE, V_ID_ARTICOL);
|
|
lcAcont388 := CASE
|
|
WHEN lcAcont388 IS NULL THEN
|
|
REPLACE(V_ACONT, 'X')
|
|
ELSE
|
|
lcAcont388
|
|
END;
|
|
-- 29.03.2010
|
|
|
|
V_CANTITATE := tab_stoc(i).CANTS + tab_stoc(i).CANT - tab_stoc(i).CANTE;
|
|
|
|
IF V_CANTITATE_RAMASA >= V_CANTITATE THEN
|
|
V_CANTITATE_RAMASA := V_CANTITATE_RAMASA - V_CANTITATE;
|
|
ELSE
|
|
V_CANTITATE := V_CANTITATE_RAMASA;
|
|
V_CANTITATE_RAMASA := 0;
|
|
END IF;
|
|
|
|
V_ADAOS := V_PRETV - V_PRET;
|
|
V_ADAOS_ORIG := V_PRETV_ORIG - V_PRET;
|
|
|
|
IF V_PRET <> 0 THEN
|
|
V_PROCENT := ROUND(V_ADAOS * 100 / V_PRET,
|
|
pack_facturare.nzecimale_procent);
|
|
V_PROCENT_ORIG := ROUND(V_ADAOS_ORIG * 100 / V_PRET,
|
|
pack_facturare.nzecimale_procent);
|
|
ELSE
|
|
V_PROCENT := 0;
|
|
V_PROCENT_ORIG := 0;
|
|
END IF;
|
|
|
|
V_TVAV_ORIG := tab_stoc(i).TVAV;
|
|
|
|
-- gestiune marfa la pret de vanzare sau marfa pret de achizitie* (defalcata in stoc si dupa pretul de vanzare)
|
|
IF V_TIP_GESTIUNE in (6, 7) OR tab_stoc(i).TVAV <> 0 THEN
|
|
V_PROC_TVAV_ORIG := tab_stoc(i).PROC_TVAV;
|
|
ELSE
|
|
V_PROC_TVAV_ORIG := pack_sesiune.TVA2PROCTVA(V_TVAV_ORIG,
|
|
V_PRETV_ORIG,
|
|
pack_facturare.nan,
|
|
pack_facturare.nluna);
|
|
END IF;
|
|
|
|
V_SUMA := 0;
|
|
V_INCASAT_CALCUL := 0;
|
|
|
|
/* V_VALOARE_TVAV_ORIG := pack_facturare.calculeaza_total_tva(V_PRET => CASE V_PRET_ARE_TVA WHEN 0 THEN V_PRETV_ORIG ELSE V_PRETV_ORIG + V_TVAV_ORIG END, V_AJUSTARE => 0, V_CURS => 1, V_DISCOUNT_UNITAR => 0, V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat, V_CANTITATE => V_CANTITATE, V_PRET_CU_TVA => V_PRET_ARE_TVA, V_PROC_TVAV => V_PROC_TVAV, V_ZECIMALE_PRET => V_ZECIMALE_PRET);*/
|
|
V_VALOARE_TVAV_ORIG := pack_facturare.calculeaza_total_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV_ORIG
|
|
ELSE
|
|
V_PRETV_ORIG +
|
|
V_TVAV_ORIG
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => 0,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV_ORIG,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
V_VALOARE_TVAV := pack_facturare.calculeaza_total_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV
|
|
ELSE
|
|
V_PRETV +
|
|
V_TVAV
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_DISCOUNT_UNITAR
|
|
ELSE
|
|
V_DISCOUNT_CU_TVA
|
|
END,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
V_VALOARE_DIFERENTA_TVAV := V_VALOARE_TVAV - V_VALOARE_TVAV_ORIG;
|
|
|
|
/* V_VALOARE_PRETV_ORIG := pack_facturare.calculeaza_total_fara_tva(V_PRET => CASE V_PRET_ARE_TVA WHEN 0 THEN V_PRETV_ORIG ELSE V_PRETV_ORIG + V_TVAV_ORIG END, V_AJUSTARE => 0, V_CURS => 1, V_DISCOUNT_UNITAR => 0, V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat, V_CANTITATE => V_CANTITATE, V_PRET_CU_TVA => V_PRET_ARE_TVA, V_PROC_TVAV => V_PROC_TVAV, V_ZECIMALE_PRET => V_ZECIMALE_PRET);*/
|
|
V_VALOARE_PRETV_ORIG := pack_facturare.calculeaza_total_fara_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV_ORIG
|
|
ELSE
|
|
V_PRETV_ORIG +
|
|
V_TVAV_ORIG
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => 0,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV_ORIG,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
V_VALOARE_PRETV := pack_facturare.calculeaza_total_fara_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV
|
|
ELSE
|
|
V_PRETV +
|
|
V_TVAV
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_DISCOUNT_UNITAR
|
|
ELSE
|
|
V_DISCOUNT_CU_TVA
|
|
END,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
V_VALOARE_DIFERENTA_PRETV := V_VALOARE_PRETV - V_VALOARE_PRETV_ORIG;
|
|
|
|
V_PROC_TVA := pack_sesiune.TVA2PROCTVA(V_TVA,
|
|
V_PRET,
|
|
pack_facturare.nan,
|
|
pack_facturare.nluna);
|
|
|
|
V_VALOARE_PRET := pack_facturare.calculeaza_total_fara_tva(V_PRET => (CASE
|
|
WHEN tab_stoc(i).pretachctva = 1 THEN
|
|
V_PRET + V_TVA
|
|
ELSE
|
|
V_PRET
|
|
END),
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => 0,
|
|
V_DISCOUNT_EVIDENTIAT => 0,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => tab_stoc(i).pretachctva,
|
|
V_PROC_TVAV => V_PROC_TVA,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_preta,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumaa);
|
|
V_VALOARE_TVA := pack_facturare.calculeaza_total_fara_tva(V_PRET => (CASE
|
|
WHEN tab_stoc(i).pretachctva = 1 THEN
|
|
V_PRET + V_TVA
|
|
ELSE
|
|
V_TVA
|
|
END),
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => 0,
|
|
V_DISCOUNT_EVIDENTIAT => 0,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => tab_stoc(i).pretachctva,
|
|
V_PROC_TVAV => V_PROC_TVA,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_preta,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumaa);
|
|
V_VALOARE_ADAOS := V_VALOARE_PRETV - V_VALOARE_PRET;
|
|
V_VALOARE_ADAOS_ORIG := V_VALOARE_PRETV_ORIG - V_VALOARE_PRET;
|
|
V_VALOARE_PRETVTVA := pack_facturare.calculeaza_total_cu_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV
|
|
ELSE
|
|
V_PRETV +
|
|
V_TVAV
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => 0,
|
|
V_DISCOUNT_EVIDENTIAT => 0,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
CASE
|
|
WHEN V_CONT = '371' AND pack_facturare.ntip = 47 THEN
|
|
V_ANALITICCUST := pack_facturare.getAnaliticK(V_PROC_TVAV);
|
|
|
|
-- 357-371.C
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
(CASE
|
|
WHEN V_TIP_GESTIUNE = 6 THEN
|
|
V_VALOARE_PRETVTVA
|
|
ELSE
|
|
V_VALOARE_PRET
|
|
END),
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'357',
|
|
NULL,
|
|
'371',
|
|
V_ANALITICCUST,
|
|
0,
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
-- 371.C-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
V_ANALITICCUST,
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
0,
|
|
V_ID_GESTIUNE,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
IF V_TIP_GESTIUNE = 6 THEN
|
|
--371.C-378.C
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'371',
|
|
V_ANALITICCUST,
|
|
'378',
|
|
V_ANALITICCUST,
|
|
0, -- id_gestin
|
|
0,
|
|
2,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
--371.C-4428.C
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'371',
|
|
V_ANALITICCUST,
|
|
'4428',
|
|
V_ANALITICCUST,
|
|
0, -- id_gestin
|
|
0,
|
|
2,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
--378-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'378',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
V_ID_GESTIUNE, -- id_gestin
|
|
V_ID_GESTIUNE,
|
|
2,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
--4428-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'4428',
|
|
NULL,
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
V_ID_GESTIUNE, -- id_gestin
|
|
V_ID_GESTIUNE,
|
|
2,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
END IF;
|
|
|
|
IF V_TIP_GESTIUNE IN (6, 7) AND
|
|
(V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV OR
|
|
V_DISCOUNT_UNITAR <> 0) THEN
|
|
|
|
IF V_TIP_GESTIUNE = 6 THEN
|
|
--371-378
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_PRETV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE,
|
|
0),
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
'378',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
V_ID_GESTIUNE, -- id_gestin
|
|
V_ID_GESTIUNE,
|
|
2,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
--371-4428
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE,
|
|
0),
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
'4428',
|
|
NULL,
|
|
V_ID_GESTIUNE, -- id_gestin
|
|
V_ID_GESTIUNE,
|
|
2,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
END IF;
|
|
|
|
IF (V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV) THEN
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
V_ID_ARTICOL,
|
|
tab_stoc(i).serie,
|
|
V_ID_GESTIUNE,
|
|
NVL(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
V_CONT as CONT,
|
|
REPLACE(V_ACONT, 'X', '') as ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum, 1, tab_stoc(i).proc_Tvav, V_PROC_TVAV) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
3 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
END IF;
|
|
END IF;
|
|
|
|
WHEN V_CONT = '371' AND pack_facturare.nfactavizcust = 1
|
|
/* (pack_facturare.ntip = 42 or (pack_facturare.ntip = 24 and pack_facturare.nfactavizcust = 1))*/
|
|
THEN
|
|
-- 357-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
(CASE
|
|
WHEN V_TIP_GESTIUNE = 6 THEN
|
|
V_VALOARE_PRETVTVA
|
|
ELSE
|
|
V_VALOARE_PRET
|
|
END),
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'357',
|
|
NULL,
|
|
'371',
|
|
REPLACE(V_ACONT, 'X', ''),
|
|
0,
|
|
V_ID_GESTIUNE,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
IF V_TIP_GESTIUNE IN (6, 7) AND
|
|
(V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV OR
|
|
V_DISCOUNT_UNITAR <> 0) THEN
|
|
|
|
IF V_TIP_GESTIUNE = 6 THEN
|
|
--371-378
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_PRETV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE,
|
|
0),
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
'378',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
V_ID_GESTIUNE, -- id_gestin
|
|
V_ID_GESTIUNE,
|
|
2,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
--371-4428
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE,
|
|
0),
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
'4428',
|
|
NULL,
|
|
V_ID_GESTIUNE, -- id_gestin
|
|
V_ID_GESTIUNE,
|
|
2,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
END IF;
|
|
|
|
IF (V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV) THEN
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
V_ID_ARTICOL,
|
|
tab_stoc(i).serie,
|
|
V_ID_GESTIUNE,
|
|
NVL(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
V_CONT as CONT,
|
|
REPLACE(V_ACONT, 'X', '') as ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum, 1, tab_stoc(i).proc_Tvav, V_PROC_TVAV) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
3 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
END IF;
|
|
END IF;
|
|
|
|
WHEN V_CONT IN ('371', '357') AND V_TIP_GESTIUNE <> 6 AND
|
|
pack_facturare.nfactavizcust = 0 THEN
|
|
--607-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET ARE TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'607',
|
|
lcAcont607, -- REPLACE(V_ACONT, 'X')
|
|
V_CONT,
|
|
REPLACE(V_ACONT, 'X'),
|
|
0, -- ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
3,
|
|
0,
|
|
0,
|
|
NULL);
|
|
--371-378
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET ARE TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- V_ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
V_CONT,
|
|
REPLACE(V_ACONT, 'X'),
|
|
'378',
|
|
lcAcont378, -- REPLACE(V_ACONT, 'X')
|
|
V_ID_GESTIUNE, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
3,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
--378-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET ARE TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'378',
|
|
lcAcont378, -- REPLACE(V_ACONT, 'X')
|
|
V_CONT,
|
|
REPLACE(V_ACONT, 'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
3,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
IF V_CONT = '357' THEN
|
|
-- 371 - 357
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
V_CONT,
|
|
NULL,
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
3,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
END IF;
|
|
|
|
IF V_TIP_GESTIUNE = 7 AND
|
|
(V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV) THEN
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
V_ID_ARTICOL,
|
|
tab_stoc(i).serie,
|
|
V_ID_GESTIUNE,
|
|
NVL(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
V_CONT as CONT,
|
|
REPLACE(V_ACONT, 'X', '') as ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum, 1, tab_stoc(i).proc_Tvav, V_PROC_TVAV) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
3 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
END IF;
|
|
|
|
WHEN V_CONT IN ('371', '357') AND V_TIP_GESTIUNE = 6 THEN
|
|
--607-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'607',
|
|
lcAcont607, -- REPLACE(V_ACONT, 'X'),
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
0,
|
|
V_ID_GESTIUNE,
|
|
4,
|
|
0,
|
|
0,
|
|
NULL);
|
|
--378-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS_ORIG,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'378',
|
|
lcAcont378, -- REPLACE(V_ACONT, 'X'),
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
4,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
--4428-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_TVAV_ORIG,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'4428',
|
|
NULL,
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
4,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
IF V_CONT = '357' THEN
|
|
-- 371 - 357
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET +
|
|
V_VALOARE_ADAOS_ORIG +
|
|
V_VALOARE_TVAV_ORIG,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
V_CONT,
|
|
NULL,
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
4,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
END IF;
|
|
|
|
IF (V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV) THEN
|
|
|
|
INSERT INTO RUL_TEMP
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANTE,
|
|
CANT,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
ID_RUL_AUX,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
V_ID_ARTICOL,
|
|
tab_stoc(i).serie,
|
|
V_ID_GESTIUNE,
|
|
nvl(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
V_CONT,
|
|
V_ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum, 1, tab_stoc(i).proc_Tvav, V_PROC_TVAV) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET,
|
|
V_TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
V_ID_TIP_RULAJ,
|
|
tab_stoc(i).LOT,
|
|
tab_stoc(i).ADATA_EXPIRARE,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM DUAL
|
|
CONNECT BY level <= 2;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
|
|
--378-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_PRETV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'378',
|
|
lcAcont378, --REPLACE(V_ACONT,'X'),
|
|
V_CONT,
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
V_ID_GESTIUNE, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
5,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
-- 30.10.2009
|
|
--4428-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
'4428',
|
|
NULL,
|
|
V_CONT,
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
V_ID_GESTIUNE, -- id_gestin
|
|
V_ID_GESTIUNE,
|
|
5,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
-- 30.10.2009 ^
|
|
|
|
--371-378
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_PRETV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
V_CONT,
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
'378',
|
|
lcAcont378, --REPLACE(V_ACONT,'X'),
|
|
V_ID_GESTIUNE, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
5,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
-- 30.10.2009
|
|
--371-4428
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
V_CONT,
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
'4428',
|
|
NULL,
|
|
V_ID_GESTIUNE, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
5,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
-- 30.10.2009 ^
|
|
|
|
END IF;
|
|
WHEN V_CONT IN ('341', '345', '346', '381') AND
|
|
pack_facturare.nfactavizcust = 0 THEN
|
|
-- 711 - 34X / 608 - 381
|
|
IF V_CONT = '381' THEN
|
|
V_CONT2 := '608';
|
|
V_CONT3 := '388';
|
|
V_SUMA := V_VALOARE_PRET;
|
|
V_ACONT2 := lcAcont608;
|
|
V_ACONT3 := lcAcont388;
|
|
ELSE
|
|
V_CONT2 := '711';
|
|
V_CONT3 := '348';
|
|
V_SUMA := V_VALOARE_PRET;
|
|
V_ACONT2 := REPLACE(V_ACONT, 'X');
|
|
V_ACONT3 := REPLACE(V_ACONT, 'X');
|
|
END IF;
|
|
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_SUMA,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
V_CONT2,
|
|
V_ACONT2, -- REPLACE(V_ACONT, 'X'),
|
|
V_CONT,
|
|
REPLACE(V_ACONT, 'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
6,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
IF V_VALOARE_ADAOS <> 0 AND lnDescarcare345FaraAdaos = 0 THEN
|
|
-- 34X -348 / 381 - 388
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
V_CONT,
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
V_CONT3,
|
|
V_ACONT3, -- REPLACE(V_ACONT,'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
7,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
-- 348 - 34x / 388 - 381
|
|
/* IF V_CONT = '381' THEN
|
|
V_CONT2 := V_CONT;
|
|
V_ACONT2 := REPLACE(V_ACONT, 'X');
|
|
ELSE
|
|
V_ACONT2 := NULL;
|
|
END IF;*/
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
V_CONT3,
|
|
V_ACONT3, -- REPLACE(V_ACONT,'X'),
|
|
V_CONT,
|
|
REPLACE(V_ACONT, 'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
7,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
END IF;
|
|
|
|
IF (V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV) AND
|
|
V_TIP_GESTIUNE IN (6, 7) THEN
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
V_ID_ARTICOL,
|
|
tab_stoc(i).serie,
|
|
V_ID_GESTIUNE,
|
|
NVL(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
V_CONT as CONT,
|
|
REPLACE(V_ACONT, 'X', '') as ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum, 1, tab_stoc(i).proc_Tvav, V_PROC_TVAV) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
3 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
END IF;
|
|
|
|
WHEN V_CONT <> '371' AND pack_facturare.nfactavizcust = 0 THEN
|
|
--371-x
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
V_CONT,
|
|
REPLACE(V_ACONT, 'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
8,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
--607-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'607',
|
|
lcAcont607, -- REPLACE(V_ACONT, 'X'),
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
8,
|
|
0,
|
|
0,
|
|
NULL);
|
|
--371-378
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
'378',
|
|
lcAcont378, -- REPLACE(V_ACONT, 'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
8,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
--378-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'378',
|
|
lcAcont378, -- REPLACE(V_ACONT, 'X'),
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
0, -- V_ID_GESTIN
|
|
V_ID_GESTIUNE,
|
|
8,
|
|
0,
|
|
(V_PROC_TVAV - 1) * 100,
|
|
NULL);
|
|
|
|
IF (V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV) AND
|
|
V_TIP_GESTIUNE IN (6, 7) THEN
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
V_ID_ARTICOL,
|
|
tab_stoc(i).serie,
|
|
V_ID_GESTIUNE,
|
|
NVL(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
V_CONT as CONT,
|
|
REPLACE(V_ACONT, 'X', '') as ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum, 1, tab_stoc(i).proc_Tvav, V_PROC_TVAV) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
3 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
END IF;
|
|
|
|
ELSE
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Combinatie invalida! (FACT-010 : ' ||
|
|
V_ID_ARTICOL || '.' || V_ID_GESTIUNE || '.' ||
|
|
V_CONT || ')');
|
|
END CASE;
|
|
|
|
INSERT INTO RUL_TEMP
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
DISCUNITAR,
|
|
DISCOUNT_TVA,
|
|
PROC_DISC,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_RUL_AUX,
|
|
ID_SET,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ,
|
|
ID_JTVA_COLOANA,
|
|
TAXCODE)
|
|
VALUES
|
|
(V_TIP_INREG,
|
|
V_ID_ARTICOL,
|
|
tab_stoc(i).serie,
|
|
V_ID_GESTIUNE,
|
|
nvl(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
V_CANTITATE,
|
|
V_CONT,
|
|
V_ACONT,
|
|
V_PRETV,
|
|
V_TVAV,
|
|
V_PRETVTVA,
|
|
V_PROC_TVAV,
|
|
V_PROC_TVAV,
|
|
V_PRET,
|
|
V_TVA,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_TVA,
|
|
V_PROC_DISCOUNT,
|
|
V_ADAOS,
|
|
V_PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
V_DATAIN,
|
|
pack_facturare.ddata_act,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
tab_stoc(i).id_rul_aux,
|
|
pack_facturare.nid_set,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ,
|
|
V_ID_JTVA_COLOANA,
|
|
V_TAXCODE);
|
|
|
|
END LOOP;
|
|
|
|
<<SFARSIT>>
|
|
NULL;
|
|
END descarca_gestiune;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_fact_aviz_custodie(V_COD IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_ARTICOL IN NUMBER,
|
|
V_ID_GESTIUNE IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_PRET_ACHIZITIE IN NUMBER,
|
|
V_PRETD IN NUMBER,
|
|
V_ID_VALUTAD IN NUMBER,
|
|
V_PRETV IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER) IS
|
|
V_VALOARE_TVAV ACT.SUMA%TYPE;
|
|
V_VALOARE_PRETV ACT.SUMA%TYPE;
|
|
V_VALOARE_PRET ACT.SUMA%TYPE;
|
|
V_VALOARE_ADAOS ACT.SUMA%TYPE;
|
|
V_VALOARE_PRETVTVA ACT.SUMA%TYPE;
|
|
V_PRETACHCTVA NOM_ARTICOLE.PRETACHCTVA%TYPE;
|
|
|
|
V_INCASAT_CALCUL ACT.SUMA%TYPE := 0;
|
|
|
|
V_PROC_TVA RUL.PROC_TVA%TYPE;
|
|
V_ACONT RUL.ACONT%TYPE;
|
|
V_TVA RUL.TVA%TYPE;
|
|
V_PRETV_RON RUL.PRETV%TYPE;
|
|
|
|
V_DISCOUNT_EVIDENTIAT_AVIZ NUMBER(1);
|
|
BEGIN
|
|
SELECT DISCOUNT_EVIDENTIAT
|
|
INTO V_DISCOUNT_EVIDENTIAT_AVIZ
|
|
FROM VANZARI
|
|
WHERE COD = V_COD;
|
|
|
|
IF V_PRET_ARE_TVA = 1 THEN
|
|
IF V_DISCOUNT_EVIDENTIAT_AVIZ = 1 THEN
|
|
V_PRETV_RON := pack_sesiune.calculeaza_pret_cu_tva(V_PRETV,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVA,
|
|
V_PRET_ARE_TVA,
|
|
2);
|
|
ELSE
|
|
V_PRETV_RON := pack_sesiune.calculeaza_pret_cu_tva(V_PRETV -
|
|
V_DISCOUNT_UNITAR,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVA,
|
|
V_PRET_ARE_TVA,
|
|
2);
|
|
END IF;
|
|
ELSE
|
|
IF V_DISCOUNT_EVIDENTIAT_AVIZ = 1 THEN
|
|
V_PRETV_RON := pack_sesiune.calculeaza_pret_fara_tva(V_PRETV,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVA,
|
|
V_PRET_ARE_TVA,
|
|
2);
|
|
ELSE
|
|
V_PRETV_RON := pack_sesiune.calculeaza_pret_fara_tva(V_PRETV -
|
|
V_DISCOUNT_UNITAR,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVA,
|
|
V_PRET_ARE_TVA,
|
|
2);
|
|
END IF;
|
|
END IF;
|
|
|
|
SELECT A.PROC_TVA, A.TVA, A.ACONT, B.PRETACHCTVA
|
|
INTO V_PROC_TVA, V_TVA, V_ACONT, V_PRETACHCTVA
|
|
FROM RUL A
|
|
LEFT JOIN NOM_ARTICOLE B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
WHERE A.COD = V_COD
|
|
AND A.STERS = 0
|
|
AND A.ID_ARTICOL = V_ID_ARTICOL
|
|
AND A.PRET = V_PRET_ACHIZITIE
|
|
AND A.PRETD = V_PRETD
|
|
AND NVL(A.ID_VALUTA, 0) = NVL(V_ID_VALUTAD, 0)
|
|
AND DECODE(V_PRET_ARE_TVA, 1, A.PRETV + A.TVAV, A.PRETV) =
|
|
V_PRETV_RON
|
|
AND A.ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND A.ID_TIP_RULAJ = 0
|
|
AND ROWNUM = 1;
|
|
|
|
V_VALOARE_TVAV := pack_facturare.calculeaza_total_tva(V_PRET => V_PRETV,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => V_CURS,
|
|
V_DISCOUNT_UNITAR => V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
|
|
V_VALOARE_PRETV := pack_facturare.calculeaza_total_fara_tva(V_PRET => V_PRETV,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => V_CURS,
|
|
V_DISCOUNT_UNITAR => V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
|
|
V_VALOARE_PRET := pack_facturare.calculeaza_total_fara_tva(V_PRET => V_PRET_ACHIZITIE +
|
|
(CASE
|
|
WHEN V_PRETACHCTVA = 1 THEN
|
|
V_TVA
|
|
ELSE
|
|
0
|
|
END),
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => 0,
|
|
V_DISCOUNT_EVIDENTIAT => 0,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRETACHCTVA,
|
|
V_PROC_TVAV => V_PROC_TVA,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_preta,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumaa);
|
|
V_VALOARE_ADAOS := V_VALOARE_PRETV - V_VALOARE_PRET;
|
|
|
|
V_VALOARE_PRETVTVA := pack_facturare.calculeaza_total_cu_tva(V_PRET => V_PRETV,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => V_CURS,
|
|
V_DISCOUNT_UNITAR => V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
|
|
IF V_CONT = '371' THEN
|
|
-- 371 - 357
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRETVTVA,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
0, -- V_ID_CTR
|
|
NULL,
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
'357',
|
|
NULL,
|
|
0,
|
|
V_ID_GESTIUNE,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
--607-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR
|
|
NULL,
|
|
'607',
|
|
REPLACE(V_ACONT, 'X', ''),
|
|
'371',
|
|
REPLACE(V_ACONT, 'X', ''),
|
|
0,
|
|
V_ID_GESTIUNE,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
--378-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR
|
|
NULL,
|
|
'378',
|
|
REPLACE(V_ACONT, 'X'),
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
V_ID_GESTIUNE,
|
|
V_ID_GESTIUNE,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL);
|
|
--4428-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
NVL(V_ID_SECTIE, 0),
|
|
NULL, -- V_ID_CTR
|
|
NULL,
|
|
'4428',
|
|
NULL,
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
V_ID_GESTIUNE,
|
|
V_ID_GESTIUNE,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL);
|
|
ELSE
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Nu exista configurari pentru contul ' ||
|
|
V_CONT || ' ! (FACT-011)');
|
|
END IF;
|
|
END scrie_fact_aviz_custodie;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE transfera_articol(detalii_articol VANZARI_DETALII_TEMP%ROWTYPE) IS
|
|
V_PRET STOC.PRET%TYPE;
|
|
V_PRETV_ORIG STOC.PRETV%TYPE;
|
|
V_ACONT STOC.ACONT%TYPE;
|
|
|
|
V_ACONT_GEST NOM_GESTIUNI.ACONT%TYPE;
|
|
|
|
V_ID_SECTIE RUL.ID_SECTIE%TYPE;
|
|
V_ADAOS RUL.ADAOS%TYPE;
|
|
V_ADAOS_ORIG RUL.ADAOS%TYPE;
|
|
V_PRETV RUL.PRETV%TYPE;
|
|
V_TVAV RUL.PRETV%TYPE;
|
|
V_PRETVTVA RUL.PRETVTVA%TYPE;
|
|
V_TVAV_ORIG RUL.PRETV%TYPE;
|
|
V_DISCOUNT_CU_TVA RUL.DISCUNITAR%TYPE;
|
|
V_DISCOUNT_UNITAR RUL.DISCUNITAR%TYPE;
|
|
V_DISCOUNT_TVA RUL.DISCOUNT_TVA%TYPE;
|
|
-- V_PROC_DISCOUNT RUL.PROC_DISC%TYPE;
|
|
V_PROCENT RUL.PROCENT%TYPE;
|
|
V_PROCENT_ORIG RUL.PROCENT%TYPE;
|
|
V_DATAIN RUL.DATAIN%TYPE;
|
|
|
|
V_CONT2 ACT.SCD%TYPE;
|
|
V_CONT3 ACT.SCD%TYPE;
|
|
V_ACONT2 ACT.ASCC%TYPE;
|
|
|
|
V_EXPLICATIE ACT.EXPLICATIA%TYPE;
|
|
V_SUMA ACT.SUMA%TYPE;
|
|
V_INCASAT_CALCUL ACT.SUMA%TYPE;
|
|
|
|
V_TIP_GESTIUNE NOM_GESTIUNI.NR_PAG%TYPE;
|
|
tab_stoc tab_stoc_type;
|
|
|
|
V_CANTITATE STOC.CANTS%TYPE;
|
|
V_CANTITATE_RAMASA STOC.CANTS%TYPE;
|
|
V_DENUMIRE NOM_ARTICOLE.DENUMIRE%TYPE;
|
|
|
|
V_VALOARE_PRET ACT.SUMA%TYPE;
|
|
V_VALOARE_PRETV ACT.SUMA%TYPE;
|
|
V_VALOARE_PRETV_ORIG ACT.SUMA%TYPE;
|
|
V_VALOARE_PRETVTVA ACT.SUMA%TYPE;
|
|
V_VALOARE_TVAV ACT.SUMA%TYPE;
|
|
V_VALOARE_TVAV_ORIG ACT.SUMA%TYPE;
|
|
V_VALOARE_ADAOS ACT.SUMA%TYPE;
|
|
V_VALOARE_ADAOS_ORIG ACT.SUMA%TYPE;
|
|
V_VALOARE_DIFERENTA_PRETV ACT.SUMA%TYPE;
|
|
V_VALOARE_DIFERENTA_TVAV ACT.SUMA%TYPE;
|
|
|
|
V_PRET_ARE_TVA NUMBER(1) := 0;
|
|
V_PROC_TVAV RUL.PROC_TVAV%TYPE;
|
|
V_PROC_TVA ACT.PROC_TVA%TYPE;
|
|
V_TVA ACT.SUMA%TYPE;
|
|
-- V_ZECIMALE_PRET NUMBER(1) := pack_facturare.nzecimale_calcul_ach;
|
|
|
|
V_TIP_INREG RUL.AN%TYPE;
|
|
BEGIN
|
|
IF pack_facturare.nid_sectie_stoc IS NULL THEN
|
|
BEGIN
|
|
SELECT B.ID_SECTIE
|
|
INTO V_ID_SECTIE
|
|
FROM CRM_POLITICI_PRETURI A
|
|
LEFT JOIN CRM_NOTE_VANZARI B
|
|
ON A.ID_NOTA = B.ID_NOTA
|
|
WHERE A.ID_POL = detalii_articol.id_pol;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_SECTIE := 0;
|
|
END;
|
|
ELSE
|
|
V_ID_SECTIE := pack_facturare.nid_sectie_stoc;
|
|
END IF;
|
|
|
|
V_EXPLICATIE := NULL;
|
|
|
|
pack_facturare.calculeaza_pret(detalii_articol.pret,
|
|
detalii_articol.curs /
|
|
detalii_articol.multiplicator,
|
|
detalii_articol.id_valuta,
|
|
detalii_articol.proc_tvav,
|
|
detalii_articol.pret_cu_tva,
|
|
2,
|
|
V_PRETV,
|
|
V_TVAV,
|
|
V_PRETVTVA);
|
|
|
|
pack_facturare.calculeaza_pret(detalii_articol.discount_unitar,
|
|
detalii_articol.curs /
|
|
detalii_articol.multiplicator,
|
|
detalii_articol.id_valuta,
|
|
detalii_articol.proc_tvav,
|
|
detalii_articol.pret_cu_tva,
|
|
2,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_TVA,
|
|
V_DISCOUNT_CU_TVA);
|
|
|
|
-- modificare pentru discount evidentiat
|
|
IF pack_facturare.ndiscount_evidentiat = 0 THEN
|
|
V_PRETV := V_PRETV - V_DISCOUNT_UNITAR;
|
|
V_TVAV := V_TVAV - V_DISCOUNT_TVA;
|
|
V_PRETVTVA := V_PRETVTVA - V_DISCOUNT_CU_TVA;
|
|
V_DISCOUNT_UNITAR := 0;
|
|
V_DISCOUNT_TVA := 0;
|
|
V_DISCOUNT_CU_TVA := 0;
|
|
END IF;
|
|
|
|
/* IF V_PRETVTVA <> 0 THEN
|
|
V_PROC_DISCOUNT := ROUND(V_DISCOUNT_CU_TVA / V_PRETVTVA,
|
|
pack_facturare.nzecimale_procent) * 100;
|
|
ELSE
|
|
V_PROC_DISCOUNT := 0;
|
|
END IF;*/
|
|
|
|
BEGIN
|
|
SELECT NR_PAG, NVL(ACONT, 'XXXX')
|
|
INTO V_TIP_GESTIUNE, V_ACONT_GEST
|
|
FROM NOM_GESTIUNI
|
|
WHERE ID_GESTIUNE = detalii_articol.id_gestiune
|
|
AND STERS = 0;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Eroare la selectarea gestiunii! (FACT-019 : ' ||
|
|
detalii_articol.id_gestiune || ')');
|
|
END;
|
|
|
|
CASE
|
|
WHEN pack_facturare.ntip = 27 THEN
|
|
-- (25026,27) - transfer catre subunitati pe baza de lucrare( 25036 - daca e cu scadere din gestiune )
|
|
SELECT 1 as tip,
|
|
a.pret,
|
|
a.pretv,
|
|
a.acont,
|
|
a.cants,
|
|
a.cant + nvl(b.cant, 0) as cant,
|
|
a.cante + nvl(b.cante, 0) as cante,
|
|
a.tvav,
|
|
a.proc_tvav,
|
|
a.tva,
|
|
a.datain,
|
|
a.id_rul_aux,
|
|
a.pretd,
|
|
a.id_valuta,
|
|
a.lot,
|
|
a.adata_expirare,
|
|
a.serie,
|
|
a.id_lucrare_rez,
|
|
a.id_part_rez,
|
|
c.pretachctva
|
|
BULK COLLECT
|
|
INTO tab_stoc
|
|
FROM STOC a
|
|
LEFT JOIN (select sum(cant) as cant,
|
|
sum(cante) as cante,
|
|
id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare
|
|
from rul_temp
|
|
where an = 1
|
|
group by id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare) B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
AND A.ID_GESTIUNE = B.ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = NVL(B.CONT, 'XXXX')
|
|
AND NVL(A.ACONT, 'XXXX') = NVL(B.ACONT, 'XXXX')
|
|
AND A.PRET = B.PRET
|
|
AND A.PRETV = B.PRETV
|
|
AND NVL(A.SERIE, '+_') = NVL(B.SERIE, '+_')
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(B.ID_PART_REZ, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(B.ID_LUCRARE_REZ, 0)
|
|
AND A.PROC_TVAV = B.PROC_TVAV
|
|
AND NVL(A.ID_RUL_AUX, 0) = NVL(B.ID_RUL_AUX, 0)
|
|
AND NVL(A.PRETD, 0) = NVL(B.PRETD, 0)
|
|
AND NVL(A.ID_VALUTA, 0) = NVL(B.ID_VALUTA, 0)
|
|
AND NVL(A.LOT, '_') = NVL(B.LOT, '_')
|
|
AND NVL(A.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY')) =
|
|
NVL(B.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY'))
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
WHERE NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = detalii_articol.id_articol
|
|
AND A.ID_GESTIUNE = detalii_articol.id_gestiune
|
|
AND NVL(A.CONT, 'XXXX') = detalii_articol.cont
|
|
AND A.LUNA = pack_facturare.nluna
|
|
AND A.AN = pack_facturare.nan
|
|
AND A.CANTS + A.CANT + NVL(B.CANT, 0) >
|
|
A.CANTE + NVL(B.CANTE, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) =
|
|
NVL(detalii_articol.id_lucrare_rez, 0)
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(detalii_articol.id_part_rez, 0)
|
|
ORDER BY A.PRET;
|
|
WHEN pack_facturare.ntip = 30 THEN
|
|
-- (25029,30) - transfer catre subunitati pe baza de NIR ( 25039 - daca e cu scadere din gestiune )
|
|
SELECT 1 as tip,
|
|
a.pret,
|
|
a.pretv,
|
|
a.acont,
|
|
a.cants,
|
|
a.cant + nvl(b.cant, 0) as cant,
|
|
a.cante + nvl(b.cante, 0) as cante,
|
|
a.tvav,
|
|
a.proc_tvav,
|
|
a.tva,
|
|
a.datain,
|
|
a.id_rul_aux,
|
|
a.pretd,
|
|
a.id_valuta,
|
|
a.lot,
|
|
a.adata_expirare,
|
|
a.serie,
|
|
a.id_lucrare_rez,
|
|
a.id_part_rez,
|
|
c.pretachctva
|
|
BULK COLLECT
|
|
INTO tab_stoc
|
|
FROM STOC A
|
|
LEFT JOIN (select sum(cant) as cant,
|
|
sum(cante) as cante,
|
|
id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare
|
|
from rul_temp
|
|
where an = 1
|
|
group by id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare) B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
AND A.ID_GESTIUNE = B.ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = NVL(B.CONT, 'XXXX')
|
|
AND NVL(A.ACONT, 'XXXX') = NVL(B.ACONT, 'XXXX')
|
|
AND A.PRET = B.PRET
|
|
AND A.PRETV = B.PRETV
|
|
AND NVL(A.SERIE, '+_') = NVL(B.SERIE, '+_')
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(B.ID_PART_REZ, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(B.ID_LUCRARE_REZ, 0)
|
|
AND A.PROC_TVAV = B.PROC_TVAV
|
|
AND NVL(A.ID_RUL_AUX, 0) = NVL(B.ID_RUL_AUX, 0)
|
|
AND A.PRETD = B.PRETD
|
|
AND NVL(A.ID_VALUTA, 0) = NVL(B.ID_VALUTA, 0)
|
|
AND NVL(A.LOT, '_') = NVL(B.LOT, '_')
|
|
AND NVL(A.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY')) =
|
|
NVL(B.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY'))
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
WHERE NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = detalii_articol.id_articol
|
|
AND NVL(A.SERIE, '+_') = NVL(detalii_articol.serie, '+_')
|
|
AND A.ID_GESTIUNE = detalii_articol.id_gestiune
|
|
AND A.PRETV = V_PRETV
|
|
AND A.PRETD = detalii_articol.pretd
|
|
AND NVL(A.ID_VALUTA, 0) =
|
|
decode(detalii_articol.id_valutad,
|
|
-99,
|
|
0,
|
|
NVL(detalii_articol.id_valutad, 0))
|
|
AND A.PRET = detalii_articol.pret_achizitie
|
|
AND NVL(A.CONT, 'XXXX') = detalii_articol.cont
|
|
AND A.LUNA = pack_facturare.nluna
|
|
AND A.AN = pack_facturare.nan
|
|
AND A.CANTS + A.CANT + NVL(B.CANT, 0) >
|
|
A.CANTE + NVL(B.CANTE, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) =
|
|
NVL(detalii_articol.id_lucrare_rez, 0)
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(detalii_articol.id_part_rez, 0)
|
|
/* AND NVL(ID_RUL_AUX, 0) = 0*/
|
|
ORDER BY A.PRET;
|
|
ELSE
|
|
SELECT 1 as tip,
|
|
a.pret,
|
|
a.pretv,
|
|
a.acont,
|
|
a.cants,
|
|
a.cant + nvl(b.cant, 0) as cant,
|
|
a.cante + nvl(b.cante, 0) as cante,
|
|
a.tvav,
|
|
a.proc_tvav,
|
|
a.tva,
|
|
a.datain,
|
|
a.id_rul_aux,
|
|
a.pretd,
|
|
a.id_valuta,
|
|
a.lot,
|
|
a.adata_expirare,
|
|
a.serie,
|
|
a.id_lucrare_rez,
|
|
a.id_part_rez,
|
|
c.pretachctva
|
|
BULK COLLECT
|
|
INTO tab_stoc
|
|
FROM STOC A
|
|
LEFT JOIN (select sum(cant) as cant,
|
|
sum(cante) as cante,
|
|
id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare
|
|
from rul_temp
|
|
where an = 1
|
|
group by id_articol,
|
|
id_gestiune,
|
|
cont,
|
|
acont,
|
|
serie,
|
|
pret,
|
|
pretv,
|
|
id_lucrare_rez,
|
|
id_part_rez,
|
|
proc_tvav,
|
|
id_rul_aux,
|
|
pretd,
|
|
id_valuta,
|
|
lot,
|
|
adata_expirare) B
|
|
ON A.ID_ARTICOL = B.ID_ARTICOL
|
|
AND A.ID_GESTIUNE = B.ID_GESTIUNE
|
|
AND NVL(A.CONT, 'XXXX') = NVL(B.CONT, 'XXXX')
|
|
AND NVL(A.ACONT, 'XXXX') = NVL(B.ACONT, 'XXXX')
|
|
AND A.PRET = B.PRET
|
|
AND A.PRETV = B.PRETV
|
|
AND NVL(A.SERIE, '+_') = NVL(B.SERIE, '+_')
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(B.ID_PART_REZ, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) = NVL(B.ID_LUCRARE_REZ, 0)
|
|
AND A.PROC_TVAV = B.PROC_TVAV
|
|
AND NVL(A.ID_RUL_AUX, 0) = NVL(B.ID_RUL_AUX, 0)
|
|
AND A.PRETD = B.PRETD
|
|
AND NVL(A.ID_VALUTA, 0) = NVL(B.ID_VALUTA, 0)
|
|
AND NVL(A.LOT, '_') = NVL(B.LOT, '_')
|
|
AND NVL(A.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY')) =
|
|
NVL(B.ADATA_EXPIRARE, to_date('01011500', 'DDMMYYYY'))
|
|
LEFT JOIN NOM_ARTICOLE C
|
|
ON A.ID_ARTICOL = C.ID_ARTICOL
|
|
WHERE NVL(A.ID_SUCURSALA, -99) =
|
|
NVL(pack_facturare.nid_sucursala, -99)
|
|
AND A.ID_ARTICOL = detalii_articol.id_articol
|
|
AND NVL(A.SERIE, '+_') = NVL(detalii_articol.serie, '+_')
|
|
AND A.ID_GESTIUNE = detalii_articol.id_gestiune
|
|
AND A.PRET = detalii_articol.pret_achizitie
|
|
AND A.PRETV = detalii_articol.pretv_orig -- modificare v 2.0.19
|
|
AND NVL(A.CONT, 'XXXX') = detalii_articol.cont
|
|
AND A.LUNA = pack_facturare.nluna
|
|
AND A.AN = pack_facturare.nan
|
|
AND A.CANTS + A.CANT + NVL(B.CANT, 0) >
|
|
A.CANTE + NVL(B.CANTE, 0)
|
|
AND NVL(A.ID_LUCRARE_REZ, 0) =
|
|
NVL(detalii_articol.id_lucrare_rez, 0)
|
|
AND NVL(A.ID_PART_REZ, 0) = NVL(detalii_articol.id_part_rez, 0)
|
|
/* AND NVL(ID_RUL_AUX, 0) = 0*/
|
|
ORDER BY PRET;
|
|
END CASE;
|
|
|
|
IF SQL%ROWCOUNT = 0 THEN
|
|
BEGIN
|
|
SELECT DENUMIRE
|
|
INTO V_DENUMIRE
|
|
FROM NOM_ARTICOLE
|
|
WHERE ID_ARTICOL = detalii_articol.id_articol;
|
|
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Articolul ' || V_DENUMIRE ||
|
|
' nu mai e in stoc! (FACT-020)');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Unul dintre articole nu mai exista in stoc! (FACT-021 : ' ||
|
|
detalii_articol.id_articol || ')');
|
|
END;
|
|
END IF;
|
|
|
|
V_CANTITATE_RAMASA := detalii_articol.cantitate;
|
|
|
|
IF pack_facturare.ntip = 27 THEN
|
|
-- (25026,27) - transfer catre subunitati pe baza de lucrare( 25036 - daca e cu scadere din gestiune )
|
|
DELETE FROM VANZARI_DETALII_TEMP
|
|
WHERE ID_TEMP = detalii_articol.id_temp;
|
|
END IF;
|
|
|
|
FOR i IN tab_stoc.first .. tab_stoc.last LOOP
|
|
|
|
EXIT WHEN V_CANTITATE_RAMASA = 0;
|
|
|
|
V_TIP_INREG := 1;
|
|
V_TVA := tab_stoc(i).TVA;
|
|
V_PRET := tab_stoc(i).PRET;
|
|
V_PRETV_ORIG := tab_stoc(i).PRETV;
|
|
V_ACONT := tab_stoc(i).ACONT;
|
|
V_DATAIN := tab_stoc(i).DATAIN;
|
|
|
|
V_CANTITATE := tab_stoc(i).CANTS + tab_stoc(i).CANT - tab_stoc(i).CANTE;
|
|
|
|
IF V_CANTITATE_RAMASA >= V_CANTITATE THEN
|
|
V_CANTITATE_RAMASA := V_CANTITATE_RAMASA - V_CANTITATE;
|
|
ELSE
|
|
V_CANTITATE := V_CANTITATE_RAMASA;
|
|
V_CANTITATE_RAMASA := 0;
|
|
END IF;
|
|
|
|
V_ADAOS := V_PRETV - V_PRET;
|
|
V_ADAOS_ORIG := V_PRETV_ORIG - V_PRET;
|
|
IF V_PRET <> 0 THEN
|
|
V_PROCENT := ROUND(V_ADAOS * 100 / V_PRET,
|
|
pack_facturare.nzecimale_procent);
|
|
V_PROCENT_ORIG := ROUND(V_ADAOS_ORIG * 100 / V_PRET,
|
|
pack_facturare.nzecimale_procent);
|
|
ELSE
|
|
V_PROCENT := 0;
|
|
V_PROCENT_ORIG := 0;
|
|
END IF;
|
|
|
|
V_TVAV_ORIG := tab_stoc(i).TVAV;
|
|
|
|
V_SUMA := 0;
|
|
V_INCASAT_CALCUL := 0;
|
|
|
|
V_PRET_ARE_TVA := detalii_articol.pret_cu_tva;
|
|
V_PROC_TVAV := detalii_articol.proc_tvav;
|
|
V_VALOARE_TVAV := pack_facturare.calculeaza_total_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV
|
|
ELSE
|
|
V_PRETV +
|
|
V_TVAV
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_DISCOUNT_UNITAR
|
|
ELSE
|
|
V_DISCOUNT_CU_TVA
|
|
END,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
/* V_VALOARE_TVAV_ORIG := pack_facturare.calculeaza_total_tva(V_PRET => CASE V_PRET_ARE_TVA WHEN 0 THEN V_PRETV_ORIG ELSE V_PRETV_ORIG + V_TVAV_ORIG END, V_AJUSTARE => 0, V_CURS => 1, V_DISCOUNT_UNITAR => 0, V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat, V_CANTITATE => V_CANTITATE, V_PRET_CU_TVA => V_PRET_ARE_TVA, V_PROC_TVAV => V_PROC_TVAV, V_ZECIMALE_PRET => V_ZECIMALE_PRET);*/
|
|
V_VALOARE_TVAV_ORIG := pack_facturare.calculeaza_total_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV_ORIG
|
|
ELSE
|
|
V_PRETV_ORIG +
|
|
V_TVAV_ORIG
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => 0,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => pack_sesiune.TVA2PROCTVA(V_TVAV_ORIG,
|
|
V_PRETV_ORIG,
|
|
pack_facturare.nan,
|
|
pack_facturare.nluna),
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
V_VALOARE_DIFERENTA_TVAV := V_VALOARE_TVAV - V_VALOARE_TVAV_ORIG;
|
|
V_VALOARE_PRETV := pack_facturare.calculeaza_total_fara_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV
|
|
ELSE
|
|
V_PRETV +
|
|
V_TVAV
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_DISCOUNT_UNITAR
|
|
ELSE
|
|
V_DISCOUNT_CU_TVA
|
|
END,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
/* V_VALOARE_PRETV_ORIG := pack_facturare.calculeaza_total_fara_tva(V_PRET => CASE V_PRET_ARE_TVA WHEN 0 THEN V_PRETV_ORIG ELSE V_PRETV_ORIG + V_TVAV_ORIG END, V_AJUSTARE => 0, V_CURS => 1, V_DISCOUNT_UNITAR => 0, V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat, V_CANTITATE => V_CANTITATE, V_PRET_CU_TVA => V_PRET_ARE_TVA, V_PROC_TVAV => V_PROC_TVAV, V_ZECIMALE_PRET => V_ZECIMALE_PRET);*/
|
|
V_VALOARE_PRETV_ORIG := pack_facturare.calculeaza_total_fara_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV_ORIG
|
|
ELSE
|
|
V_PRETV_ORIG +
|
|
V_TVAV_ORIG
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => 0,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => pack_sesiune.TVA2PROCTVA(V_TVAV_ORIG,
|
|
V_PRETV_ORIG,
|
|
pack_facturare.nan,
|
|
pack_facturare.nluna),
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
V_VALOARE_DIFERENTA_PRETV := V_VALOARE_PRETV - V_VALOARE_PRETV_ORIG;
|
|
V_VALOARE_PRETVTVA := pack_facturare.calculeaza_total_cu_tva(V_PRET => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_PRETV
|
|
ELSE
|
|
V_PRETV +
|
|
V_TVAV
|
|
END,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => CASE
|
|
V_PRET_ARE_TVA
|
|
WHEN 0 THEN
|
|
V_DISCOUNT_UNITAR
|
|
ELSE
|
|
V_DISCOUNT_CU_TVA
|
|
END,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_pretv,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumav);
|
|
|
|
V_PROC_TVA := pack_sesiune.TVA2PROCTVA(V_TVA,
|
|
V_PRET,
|
|
pack_facturare.nan,
|
|
pack_facturare.nluna);
|
|
V_VALOARE_PRET := pack_facturare.calculeaza_total_fara_tva(V_PRET => (CASE
|
|
WHEN tab_stoc(i).pretachctva = 1 THEN
|
|
V_PRET + V_TVA
|
|
ELSE
|
|
V_PRET
|
|
END),
|
|
V_AJUSTARE => 0,
|
|
V_CURS => 1,
|
|
V_DISCOUNT_UNITAR => 0,
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => tab_stoc(i).pretachctva,
|
|
V_PROC_TVAV => V_PROC_TVA,
|
|
V_ZECIMALE_PRET => pack_sesiune.nzecimale_preta,
|
|
V_ZECIMALE_SUMA => pack_sesiune.nzecimale_sumaa);
|
|
|
|
V_VALOARE_ADAOS := V_VALOARE_PRETV - V_VALOARE_PRET;
|
|
V_VALOARE_ADAOS_ORIG := V_VALOARE_PRETV_ORIG - V_VALOARE_PRET;
|
|
|
|
-- 08.11.2010
|
|
-- (25040,41) - retur transfer catre subunitati lista pret ( 25050 - daca e cu scadere din gestiune )
|
|
-- la retur transfer, trebuie schimbat semnul diferentei de pret
|
|
if pack_facturare.ntip = 41 then
|
|
V_VALOARE_DIFERENTA_TVAV := -V_VALOARE_DIFERENTA_TVAV;
|
|
V_VALOARE_DIFERENTA_PRETV := -V_VALOARE_DIFERENTA_PRETV;
|
|
end if;
|
|
-- 08.11.2010 ^
|
|
|
|
CASE
|
|
WHEN detalii_articol.cont IN ('341', '345', '346', '381') THEN
|
|
-- x - 345 / 341 / 346 / 381
|
|
IF detalii_articol.cont = '381' THEN
|
|
V_CONT2 := '388';
|
|
V_CONT3 := detalii_articol.cont;
|
|
ELSE
|
|
V_CONT2 := '348';
|
|
V_CONT3 := '711';
|
|
END IF;
|
|
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.cont
|
|
else
|
|
pack_facturare.v_date_gestiune.cont
|
|
end), -- scd
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(V_ACONT, 'X', '')
|
|
else
|
|
REPLACE(pack_facturare.v_date_gestiune.acont,
|
|
'X',
|
|
'')
|
|
end), -- ascd
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.cont
|
|
else
|
|
detalii_articol.cont
|
|
end), -- scc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(pack_facturare.v_date_gestiune.acont,
|
|
'X',
|
|
'')
|
|
else
|
|
REPLACE(V_ACONT, 'X', '')
|
|
end), -- ascc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.id_gestiune
|
|
else
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
end), -- gestin
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- gestout
|
|
1,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
IF V_VALOARE_ADAOS <> 0 THEN
|
|
-- 341 / 345 / 346 - 348 / 381 - 388
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
detalii_articol.cont,
|
|
REPLACE(V_ACONT,
|
|
'X',
|
|
''),
|
|
V_CONT2,
|
|
NULL,
|
|
pack_facturare.v_date_gestiune.id_gestiune, -- V_ID_GESTIN
|
|
detalii_articol.id_gestiune,
|
|
2,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
-- 348 - 711 / 388 - 381
|
|
IF V_CONT3 = '711' THEN
|
|
V_ACONT2 := NULL;
|
|
ELSE
|
|
V_ACONT2 := REPLACE(V_ACONT, 'X');
|
|
END IF;
|
|
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
V_CONT2,
|
|
NULL,
|
|
V_CONT3,
|
|
V_ACONT2,
|
|
0, -- V_ID_GESTIN
|
|
detalii_articol.id_gestiune,
|
|
2,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
END IF;
|
|
|
|
WHEN V_TIP_GESTIUNE <> 6 AND
|
|
pack_facturare.v_date_gestiune.id_tip_gest <> 6 THEN
|
|
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.cont
|
|
else
|
|
pack_facturare.v_date_gestiune.cont
|
|
end), -- scd
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(V_ACONT, 'X')
|
|
else
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
end), -- ascd
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.cont
|
|
else
|
|
detalii_articol.cont
|
|
end), -- scc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
else
|
|
REPLACE(V_ACONT, 'X')
|
|
end), -- ascc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.id_gestiune
|
|
else
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
end), -- id_gestin
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- id_gestout
|
|
3,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
IF V_TIP_GESTIUNE = 7 AND
|
|
(V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV OR
|
|
V_DISCOUNT_UNITAR <> 0) THEN
|
|
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
detalii_articol.id_articol,
|
|
tab_stoc(i).serie,
|
|
detalii_articol.id_gestiune,
|
|
nvl(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
-- decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
(case
|
|
when (rownum = 1 and pack_facturare.ntip = 41) or
|
|
(rownum = 2 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANT,
|
|
-- decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
(case
|
|
when (rownum = 2 and pack_facturare.ntip = 41) or
|
|
(rownum = 1 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANTE,
|
|
detalii_articol.cont as CONT,
|
|
REPLACE(V_ACONT, 'X', '') as ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).proc_Tvav,
|
|
detalii_articol.proc_tvav) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
3 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
|
|
END IF;
|
|
|
|
WHEN V_TIP_GESTIUNE = pack_facturare.v_date_gestiune.id_tip_gest AND
|
|
pack_facturare.v_date_gestiune.id_tip_gest = 6 THEN
|
|
-- SCHIMB PRETUL DE VANZARE IN GESTIUNEA SURSA SI APOI IL TRANSFER LA NOUL PRET DE VANZARE
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRETVTVA,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.cont
|
|
else
|
|
pack_facturare.v_date_gestiune.cont
|
|
end), -- scd
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(V_ACONT, 'X')
|
|
else
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
end), -- ascd
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.cont
|
|
else
|
|
detalii_articol.cont
|
|
end), -- scc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
else
|
|
REPLACE(V_ACONT, 'X')
|
|
end), -- ascc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.id_gestiune
|
|
else
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
end), -- id_gestin
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- id_gestout
|
|
4,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
IF V_TIP_GESTIUNE = 6 AND
|
|
(V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV OR
|
|
V_DISCOUNT_UNITAR <> 0) THEN
|
|
-- SCHIMB PRETUL DE VANZARE IN GESTIUNEA SURSA SI APOI IL TRANSFER LA NOUL PRET DE VANZARE
|
|
--371-378
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_PRETV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT, -- pack_facturare.v_date_gestiune.acont,
|
|
'X'),
|
|
'378',
|
|
NULL, -- pack_facturare.v_date_gestiune.acont,
|
|
detalii_articol.id_gestiune,
|
|
detalii_articol.id_gestiune, -- pack_facturare.v_date_gestiune.id_gestiune,
|
|
5,
|
|
0,
|
|
(detalii_articol.proc_tvav - 1) * 100,
|
|
NULL);
|
|
--371-4428
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT, -- pack_facturare.v_date_gestiune.acont,
|
|
'X'),
|
|
'4428',
|
|
NULL,
|
|
detalii_articol.id_gestiune,
|
|
detalii_articol.id_gestiune, -- pack_facturare.v_date_gestiune.id_gestiune,
|
|
5,
|
|
0,
|
|
(detalii_articol.proc_tvav - 1) * 100,
|
|
NULL);
|
|
|
|
IF V_DISCOUNT_UNITAR = 0 THEN
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_GESTIUNEC,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
detalii_articol.id_articol,
|
|
tab_stoc(i).serie,
|
|
detalii_articol.id_gestiune,
|
|
pack_facturare.v_date_gestiune.id_gestiune,
|
|
nvl(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
-- decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
(case
|
|
when (rownum = 1 and pack_facturare.ntip = 41) or
|
|
(rownum = 2 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANT,
|
|
-- decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
(case
|
|
when (rownum = 2 and pack_facturare.ntip = 41) or
|
|
(rownum = 1 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANTE,
|
|
detalii_articol.cont as CONT,
|
|
REPLACE(V_ACONT, 'X', '') as ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).proc_Tvav,
|
|
detalii_articol.proc_tvav) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
3 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
END IF;
|
|
END IF;
|
|
|
|
-- daca are analitice la adaos : trebuie sa transfer adaosul dintr-un analitic in altul
|
|
IF pack_facturare.nanalitice_378 = 1 THEN
|
|
-- 378 - 378
|
|
V_INCASAT_CALCUL := scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'378', -- scd
|
|
Null, -- ascd
|
|
'378', -- scc
|
|
Null, -- ascc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- id_gestin
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.id_gestiune
|
|
else
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
end), -- id_gestout
|
|
4,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
IF NVL(V_ACONT, '') <>
|
|
NVL(pack_facturare.v_date_gestiune.acont, '') THEN
|
|
-- 4428 - 4428
|
|
V_INCASAT_CALCUL := scrie_nota(1,
|
|
V_VALOARE_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'4428', -- scd
|
|
Null, -- ascd
|
|
'4428', -- scc
|
|
Null, -- ascc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- id_gestin
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.id_gestiune
|
|
else
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
end), -- id_gestout
|
|
4,
|
|
0,
|
|
0,
|
|
NULL);
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
WHEN (V_TIP_GESTIUNE IN (4, 5, 7) AND
|
|
pack_facturare.v_date_gestiune.id_tip_gest = 6 and
|
|
pack_facturare.ntip <> 41) OR
|
|
(pack_facturare.ntip = 41 AND V_TIP_GESTIUNE = 6 AND
|
|
pack_facturare.v_date_gestiune.id_tip_gest IN (4, 5, 7)) THEN
|
|
-- achizitie > vanzare
|
|
-- 371- x
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- V_ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.cont
|
|
else
|
|
'371'
|
|
end), -- scd
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(V_ACONT, 'X')
|
|
else
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
end), --ascd
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
'371'
|
|
else
|
|
detalii_articol.cont
|
|
end), -- scc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
else
|
|
REPLACE(V_ACONT, 'X')
|
|
end), -- ascc
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.id_gestiune
|
|
else
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
end), -- id_gestin
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- id_gestout
|
|
6,
|
|
0,
|
|
0,
|
|
NULL);
|
|
--371-378
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- V_ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371', -- scd
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(V_ACONT, 'X')
|
|
else
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
end), -- ascd
|
|
'378',
|
|
NULL, -- ascc
|
|
(case
|
|
when pack_facturare.ntip <> 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- id_gestin
|
|
(case
|
|
when pack_facturare.ntip <> 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- id_gestout
|
|
6,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
--371-4428
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371', -- scd
|
|
(case
|
|
when pack_facturare.ntip <> 41 then
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
else
|
|
REPLACE(V_ACONT, 'X')
|
|
end), -- ascd
|
|
'4428',
|
|
NULL, -- ascc
|
|
(case
|
|
when pack_facturare.ntip <> 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- id_gestin
|
|
(case
|
|
when pack_facturare.ntip <> 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- id_gestout
|
|
6,
|
|
0,
|
|
(detalii_articol.proc_tvav - 1) * 100,
|
|
NULL);
|
|
|
|
IF ((V_TIP_GESTIUNE = 7 AND pack_facturare.ntip <> 41) or
|
|
(pack_facturare.v_date_gestiune.id_tip_gest = 7 AND
|
|
pack_facturare.ntip = 41)) AND
|
|
(V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV OR
|
|
V_DISCOUNT_UNITAR <> 0) THEN
|
|
|
|
IF pack_facturare.v_date_gestiune.id_tip_gest = 7 and
|
|
V_TIP_GESTIUNE = 6 and pack_facturare.ntip = 41 THEN
|
|
-- 371-378
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_PRETV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
'378',
|
|
NULL,
|
|
detalii_articol.id_gestiune,
|
|
detalii_articol.id_gestiune,
|
|
7,
|
|
0,
|
|
(detalii_articol.proc_tvav - 1) * 100,
|
|
NULL);
|
|
--371-4428
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT,
|
|
'X'),
|
|
'4428',
|
|
NULL,
|
|
detalii_articol.id_gestiune,
|
|
detalii_articol.id_gestiune,
|
|
7,
|
|
0,
|
|
(detalii_articol.proc_tvav - 1) * 100,
|
|
NULL);
|
|
|
|
END IF;
|
|
|
|
IF V_DISCOUNT_UNITAR = 0 THEN
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
detalii_articol.id_articol,
|
|
tab_stoc(i).serie,
|
|
detalii_articol.id_gestiune,
|
|
nvl(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
(case
|
|
when (rownum = 1 and pack_facturare.ntip = 41) or
|
|
(rownum = 2 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANT,
|
|
(case
|
|
when (rownum = 2 and pack_facturare.ntip = 41) or
|
|
(rownum = 1 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANTE,
|
|
detalii_articol.cont as CONT,
|
|
REPLACE(V_ACONT, 'X', '') as ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).proc_Tvav,
|
|
detalii_articol.proc_tvav) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
3 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
WHEN (V_TIP_GESTIUNE = 6 AND
|
|
pack_facturare.v_date_gestiune.id_tip_gest IN (4, 5, 7) and
|
|
pack_facturare.ntip <> 41) OR
|
|
(pack_facturare.ntip = 41 AND V_TIP_GESTIUNE IN (4, 5, 7) AND
|
|
pack_facturare.v_date_gestiune.id_tip_gest = 6) THEN
|
|
-- vanzare > achizitie
|
|
-- retur achizitie > vanzare
|
|
-- pack_facturare.ntip = 41 = retur transfer
|
|
|
|
--x-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_PRET,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
'371'
|
|
else
|
|
pack_facturare.v_date_gestiune.cont
|
|
end),
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(V_ACONT, 'X')
|
|
else
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
end),
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.cont
|
|
else
|
|
'371'
|
|
end),
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
else
|
|
REPLACE(V_ACONT, 'X')
|
|
end),
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
detalii_articol.id_gestiune
|
|
else
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
end), -- V_ID_GESTIN
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end),
|
|
8,
|
|
0,
|
|
0,
|
|
NULL);
|
|
--378-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_ADAOS,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'378',
|
|
NULL,
|
|
'371',
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
else
|
|
REPLACE(V_ACONT, 'X')
|
|
end),
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- V_ID_GESTIN
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end),
|
|
8,
|
|
0,
|
|
(detalii_articol.proc_tvav - 1) * 100,
|
|
NULL);
|
|
|
|
--4428-371
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'4428',
|
|
NULL,
|
|
'371',
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')
|
|
else
|
|
REPLACE(V_ACONT, 'X')
|
|
end),
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end), -- V_ID_GESTIN
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end),
|
|
8,
|
|
0,
|
|
(detalii_articol.proc_tvav - 1) * 100,
|
|
NULL);
|
|
|
|
IF (V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV OR
|
|
V_DISCOUNT_UNITAR <> 0) and pack_facturare.ntip <> 41 THEN
|
|
-- SCHIMB PRETUL DE VANZARE IN GESTIUNEA SURSA SI APOI IL TRANSFER LA NOUL PRET DE VANZARE
|
|
--371-378
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_PRETV,
|
|
0, -- DISCOUNT_UNITAR
|
|
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT, 'X'),
|
|
'378',
|
|
NULL,
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end),
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end),
|
|
9,
|
|
0,
|
|
(detalii_articol.proc_tvav - 1) * 100,
|
|
NULL);
|
|
|
|
--371-4428
|
|
V_INCASAT_CALCUL := pack_facturare.scrie_nota(1,
|
|
V_VALOARE_DIFERENTA_TVAV,
|
|
0, -- DISCOUNT_UNITAR
|
|
|
|
0, -- PRET CU TVA
|
|
pack_facturare.nid_moneda_nationala, -- V_ID_VALUTA
|
|
0, -- V_IN_VALUTA
|
|
0, -- V_CURS,
|
|
0, -- ID_VENCHELT
|
|
V_ID_SECTIE,
|
|
NULL, -- V_ID_CTR
|
|
V_EXPLICATIE,
|
|
'371',
|
|
REPLACE(V_ACONT, -- pack_facturare.v_date_gestiune.acont,
|
|
'X'),
|
|
'4428',
|
|
NULL,
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end),
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end),
|
|
9,
|
|
0,
|
|
(detalii_articol.proc_tvav - 1) * 100,
|
|
NULL);
|
|
END IF;
|
|
|
|
IF ((V_PRETV_ORIG <> V_PRETV OR V_TVAV_ORIG <> V_TVAV) AND
|
|
V_DISCOUNT_UNITAR = 0 AND
|
|
(pack_facturare.ntip <> 41 OR
|
|
(pack_facturare.ntip = 41 AND V_TIP_GESTIUNE = 7))) THEN
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
detalii_articol.id_articol,
|
|
tab_stoc(i).serie,
|
|
(case
|
|
when pack_facturare.ntip = 41 then
|
|
pack_facturare.v_date_gestiune.id_gestiune
|
|
else
|
|
detalii_articol.id_gestiune
|
|
end),
|
|
nvl(pack_facturare.nid_lucrare, 0),
|
|
pack_facturare.nid_responsabil,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
-- decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
(case
|
|
when (rownum = 1 and pack_facturare.ntip = 41) or
|
|
(rownum = 2 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANT,
|
|
-- decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
(case
|
|
when (rownum = 2 and pack_facturare.ntip = 41) or
|
|
(rownum = 1 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANTE,
|
|
detalii_articol.cont as CONT,
|
|
REPLACE(V_ACONT, 'X', '') as ACONT,
|
|
decode(rownum, 1, V_PRETV_ORIG, V_PRETV) as PRETV,
|
|
decode(rownum, 1, tab_stoc(i).tvav, V_TVAV) as TVAV,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).pretv + tab_stoc(i).tvav,
|
|
V_PRETVTVA) as PRETVTVA,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).proc_Tvav,
|
|
detalii_articol.proc_tvav) as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
decode(rownum, 1, V_ADAOS_ORIG, V_ADAOS) as ADAOS,
|
|
decode(rownum, 1, V_PROCENT_ORIG, V_PROCENT) as PROCENT,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.nnumar_bon,
|
|
decode(rownum,
|
|
1,
|
|
tab_stoc(i).datain,
|
|
pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, null) as dataout,
|
|
tab_stoc(i).pretd,
|
|
tab_stoc(i).id_valuta,
|
|
pack_facturare.nid_set,
|
|
3 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
tab_stoc(i).ID_PART_REZ
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
V_TIP_INREG := V_TIP_INREG - 1;
|
|
V_DATAIN := pack_facturare.ddata_act;
|
|
END IF;
|
|
|
|
ELSE
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Combinatie invalida de gestiuni! (FACT-014 : ' ||
|
|
detalii_articol.cont || '.' ||
|
|
detalii_articol.id_gestiune || '.' ||
|
|
pack_facturare.v_date_gestiune.id_gestiune || ')');
|
|
END CASE;
|
|
|
|
-- pe randul 1 e iesirea
|
|
-- pe randul 2 e intrarea
|
|
INSERT INTO rul_temp
|
|
(AN,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_GESTIUNE,
|
|
ID_GESTIUNEC,
|
|
ID_LUCRARE,
|
|
ID_RESPONSABIL,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
CANT,
|
|
CANTE,
|
|
CONT,
|
|
ACONT,
|
|
PRETV,
|
|
TVAV,
|
|
PRETVTVA,
|
|
PROC_TVAV,
|
|
PROC_TVA,
|
|
PRET,
|
|
TVA,
|
|
ADAOS,
|
|
PROCENT,
|
|
DATAACT,
|
|
NNIR,
|
|
DATAIN,
|
|
DATAOUT,
|
|
PRETD,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
ID_TIP_RULAJ,
|
|
LOT,
|
|
ADATA_EXPIRARE,
|
|
ID_RUL_AUX,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ)
|
|
SELECT decode(rownum, 1, V_TIP_INREG, 0),
|
|
detalii_articol.id_articol as ID_ARTICOL,
|
|
tab_stoc(i).serie as SERIE,
|
|
decode(rownum,
|
|
1,
|
|
detalii_articol.id_gestiune,
|
|
pack_facturare.v_date_gestiune.id_gestiune) as ID_GESTIUNE,
|
|
decode(rownum,
|
|
2,
|
|
detalii_articol.id_gestiune,
|
|
pack_facturare.v_date_gestiune.id_gestiune) as ID_GESTIUNEC,
|
|
nvl(pack_facturare.nid_lucrare, 0) as ID_LUCRARE,
|
|
pack_facturare.nid_responsabil as ID_RESPONSABIL,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
-- decode(rownum, 2, V_CANTITATE, 0) as CANT,
|
|
(case
|
|
when (rownum = 1 and pack_facturare.ntip = 41) or
|
|
(rownum = 2 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANT,
|
|
-- decode(rownum, 1, V_CANTITATE, 0) as CANTE,
|
|
(case
|
|
when (rownum = 2 and pack_facturare.ntip = 41) or
|
|
(rownum = 1 and pack_facturare.ntip <> 41) then
|
|
V_CANTITATE
|
|
else
|
|
0
|
|
end) as CANTE,
|
|
decode(rownum,
|
|
1,
|
|
detalii_articol.cont,
|
|
pack_facturare.v_date_gestiune.cont) as CONT,
|
|
decode(rownum,
|
|
1,
|
|
REPLACE(V_ACONT, 'X'),
|
|
REPLACE(pack_facturare.v_date_gestiune.acont, 'X')) as ACONT,
|
|
(case
|
|
when rownum = 1 and V_TIP_GESTIUNE IN (6, 7) then
|
|
V_PRETV
|
|
when rownum = 2 and
|
|
pack_facturare.v_date_gestiune.id_tip_gest in (6, 7) then
|
|
V_PRETV - V_DISCOUNT_UNITAR
|
|
else
|
|
0
|
|
end) as PRETV,
|
|
(case
|
|
when rownum = 1 and V_TIP_GESTIUNE IN (6, 7) then
|
|
V_TVAV
|
|
when rownum = 2 and
|
|
pack_facturare.v_date_gestiune.id_tip_gest in (6, 7) then
|
|
V_TVAV - V_DISCOUNT_TVA
|
|
else
|
|
0
|
|
end) as TVAV,
|
|
(case
|
|
when rownum = 1 and V_TIP_GESTIUNE in (6, 7) then
|
|
V_PRETVTVA
|
|
when rownum = 2 and
|
|
pack_facturare.v_date_gestiune.id_tip_gest in (6, 7) then
|
|
V_PRETVTVA - V_DISCOUNT_CU_TVA
|
|
else
|
|
0
|
|
end) as PRETVTVA,
|
|
detalii_articol.proc_tvav as PROC_TVAV,
|
|
V_PROC_TVA as PROC_TVA,
|
|
V_PRET as PRET,
|
|
V_TVA AS TVA,
|
|
V_ADAOS as ADAOS,
|
|
V_PROCENT as PROCENT,
|
|
pack_facturare.ddata_act as DATAACT,
|
|
pack_facturare.nnumar_bon as NNIR,
|
|
decode(rownum, 1, V_DATAIN, pack_facturare.ddata_act) as datain,
|
|
decode(rownum, 1, pack_facturare.ddata_act, NULL) as dataout,
|
|
tab_stoc(i).pretd as PRETD,
|
|
tab_stoc(i).id_valuta as ID_VALUTA,
|
|
pack_facturare.nid_set as ID_SET,
|
|
1 as ID_TIP_RULAJ,
|
|
tab_stoc(i).lot,
|
|
tab_stoc(i).adata_expirare,
|
|
tab_stoc(i).id_rul_aux,
|
|
tab_stoc(i).ID_LUCRARE_REZ,
|
|
(case
|
|
when rownum = 2 and pack_facturare.ntip in (23, 25) and
|
|
pack_facturare.v_date_gestiune.cont = '357' then
|
|
pack_facturare.nid_part_rez
|
|
else
|
|
tab_stoc(i).ID_PART_REZ
|
|
end)
|
|
FROM dual
|
|
CONNECT BY level <= 2;
|
|
|
|
IF pack_facturare.ntip = 27 THEN
|
|
MERGE INTO VANZARI_DETALII_TEMP A
|
|
USING DUAL B
|
|
ON (A.ID_ARTICOL = detalii_articol.id_articol AND A.ID_POL = detalii_articol.id_pol AND A.PRET = detalii_articol.pret AND A.PRET_CU_TVA = detalii_articol.pret_cu_tva AND A.PROC_TVAV = detalii_articol.proc_tvav AND A.DISCOUNT_UNITAR = detalii_articol.discount_unitar AND A.ID_GESTIUNE = detalii_articol.id_gestiune AND NVL(A.CONT, 'XXXX') = NVL(detalii_articol.cont, 'XXX') AND NVL(A.ID_VALUTA, -1) = NVL(detalii_articol.id_valuta, -1) AND NVL(A.MULTIPLICATOR, 1) = NVL(detalii_articol.multiplicator, 1) AND NVL(A.CURS, 1) = NVL(detalii_articol.curs, 1) AND A.ID_JTVA_COLOANA = detalii_articol.id_jtva_coloana AND A.IN_STOC = detalii_articol.in_stoc AND NVL(A.ID_GESTIUNE_DEST, -99) = NVL(detalii_articol.id_gestiune_dest, -99) AND NVL(A.ID_UTIL, 0) = NVL(detalii_articol.id_util, 0) AND A.PRET_ACHIZITIE = V_PRET AND NVL(A.ID_VANZARE_SET, -99) = NVL(detalii_articol.id_vanzare_set, -99) AND NVL(A.PRETD, 0) = NVL(tab_stoc(i).pretd, 0) AND NVL(A.ID_VALUTAD, -99) = NVL(tab_stoc(i).id_valuta, -99))
|
|
WHEN MATCHED THEN
|
|
UPDATE SET CANTITATE = CANTITATE + V_CANTITATE
|
|
WHEN NOT MATCHED THEN
|
|
INSERT
|
|
(ID_ARTICOL,
|
|
ID_POL,
|
|
PRET,
|
|
PRET_CU_TVA,
|
|
PROC_TVAV,
|
|
CANTITATE,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
CONT,
|
|
ID_VALUTA,
|
|
CURS,
|
|
MULTIPLICATOR,
|
|
ID_JTVA_COLOANA,
|
|
IN_STOC,
|
|
ID_GESTIUNE_DEST,
|
|
ID_COMANDA,
|
|
ID_UTIL,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
ID_VANZARE_SET,
|
|
ID_LUCRARE_REZ,
|
|
ID_PART_REZ,
|
|
NUMAR_ACT,
|
|
ID_TEMP)
|
|
VALUES
|
|
(detalii_articol.id_articol,
|
|
detalii_articol.id_pol,
|
|
detalii_articol.pret,
|
|
detalii_articol.pret_cu_tva,
|
|
detalii_articol.proc_tvav,
|
|
V_CANTITATE,
|
|
detalii_articol.discount_unitar,
|
|
detalii_articol.id_gestiune,
|
|
detalii_articol.cont,
|
|
detalii_articol.id_valuta,
|
|
detalii_articol.curs,
|
|
detalii_articol.multiplicator,
|
|
detalii_articol.id_jtva_coloana,
|
|
detalii_articol.in_stoc,
|
|
detalii_articol.id_gestiune_dest,
|
|
detalii_articol.id_comanda,
|
|
detalii_articol.id_util,
|
|
V_PRET,
|
|
tab_stoc (i).pretd,
|
|
tab_stoc (i).id_valuta,
|
|
detalii_articol.id_vanzare_set,
|
|
detalii_articol.id_lucrare_rez,
|
|
detalii_articol.id_part_rez,
|
|
pack_facturare.nnumar_act,
|
|
detalii_articol.id_temp);
|
|
|
|
END IF;
|
|
END LOOP;
|
|
END transfera_articol;
|
|
-------------------------------------------------------------------
|
|
FUNCTION scrie_nota(V_CANTITATE IN NUMBER,
|
|
V_PRET IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_SCD IN VARCHAR2,
|
|
V_ASCD IN VARCHAR2,
|
|
V_SCC IN VARCHAR2,
|
|
V_ASCC IN VARCHAR2,
|
|
V_ID_GESTIN IN NUMBER,
|
|
V_ID_GESTOUT IN NUMBER,
|
|
V_ID_SET IN NUMBER,
|
|
V_CU_TVA IN NUMBER, -- 0 DACA SE SCRIE SI NOTA DE TVA
|
|
V_PTVA IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL,
|
|
V_PAYMENTCODE IN NUMBER DEFAULT NULL) RETURN NUMBER IS
|
|
V_INCASAT_CALCUL ACT_TEMP.SUMA%TYPE := 0;
|
|
V_SUMA ACT_TEMP.SUMA%TYPE;
|
|
V_SUMA_FARA_TVA ACT_TEMP.SUMA%TYPE;
|
|
V_SUMA_TVA ACT_TEMP.SUMA%TYPE;
|
|
V_SUMA_CU_TVA ACT_TEMP.SUMA%TYPE := 0;
|
|
V_SUMA_VAL ACT_TEMP.SUMA_VAL%TYPE := 0;
|
|
V_SUMA_FARA_TVA_VAL ACT_TEMP.SUMA_VAL%TYPE := 0;
|
|
V_SUMA_TVA_VAL ACT_TEMP.SUMA_VAL%TYPE := 0;
|
|
V_SUMA_CU_TVA_VAL ACT_TEMP.SUMA_VAL%TYPE := 0;
|
|
V_PROCENT_TVA ACT_TEMP.PROC_TVA%TYPE;
|
|
V_ID_FACT ACT_TEMP.ID_FACT%TYPE := -1;
|
|
V_ZECIMALE_PRET NUMBER(2);
|
|
V_ZECIMALE_SUMA NUMBER(2);
|
|
V_SEMN NUMBER(1) := 1; -- V_SEMN = -1 DACA AM 667 = 4111 (INTRU CU SUMA NEGATIVA SI O PUN POZITIVA, O LAS NEGATIVA LA SCRIE_TVA)
|
|
|
|
BEGIN
|
|
V_PROCENT_TVA := (V_PTVA + 100) / 100;
|
|
|
|
IF NVL(V_ID_GESTIN, 0) <> 0 OR NVL(V_ID_GESTOUT, 0) <> 0 THEN
|
|
V_ZECIMALE_PRET := pack_sesiune.nzecimale_preta;
|
|
V_ZECIMALE_SUMA := pack_sesiune.nzecimale_sumaa;
|
|
ELSE
|
|
V_ZECIMALE_PRET := pack_sesiune.nzecimale_pretv;
|
|
V_ZECIMALE_SUMA := pack_sesiune.nzecimale_sumav;
|
|
END IF;
|
|
|
|
pack_facturare.calculeaza_sume(V_PRET,
|
|
V_DISCOUNT_UNITAR,
|
|
V_ZECIMALE_PRET,
|
|
V_ZECIMALE_SUMA,
|
|
V_CANTITATE,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROCENT_TVA,
|
|
V_PRET_ARE_TVA,
|
|
V_SUMA_FARA_TVA,
|
|
V_SUMA_TVA,
|
|
V_SUMA_CU_TVA);
|
|
|
|
IF V_IN_VALUTA = 1 THEN
|
|
pack_facturare.calculeaza_sume(V_PRET,
|
|
V_DISCOUNT_UNITAR,
|
|
pack_sesiune.nzecimale_pretvval,
|
|
pack_sesiune.nzecimale_sumaval,
|
|
V_CANTITATE,
|
|
1,
|
|
V_ID_VALUTA,
|
|
V_PROCENT_TVA,
|
|
V_PRET_ARE_TVA,
|
|
V_SUMA_FARA_TVA_VAL,
|
|
V_SUMA_TVA_VAL,
|
|
V_SUMA_CU_TVA_VAL);
|
|
END IF;
|
|
|
|
IF V_SCD in ('667', '267', '2678', '709') AND
|
|
((pack_facturare.ntip <= 20 AND pack_facturare.ntip <> 7) or
|
|
pack_facturare.ntip in
|
|
(pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
pack_facturare.nTipNotaPlata)) THEN
|
|
-- FACTURA DISCOUNT ( in afara de credit note )
|
|
V_SEMN := -1;
|
|
END IF;
|
|
|
|
IF V_SCD NOT IN ('5311', '5314', '5125', '5121', '5124', '5126') THEN
|
|
IF V_CU_TVA = 0 THEN
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL + V_SUMA_FARA_TVA;
|
|
ELSE
|
|
V_INCASAT_CALCUL := V_INCASAT_CALCUL + V_SUMA_CU_TVA;
|
|
END IF;
|
|
END IF;
|
|
|
|
IF pack_facturare.ntip = 4 AND pack_facturare.nfactavizcust = 0 THEN
|
|
V_SUMA := V_SUMA_CU_TVA;
|
|
V_SUMA_VAL := V_SUMA_CU_TVA_VAL;
|
|
ELSE
|
|
V_SUMA := V_SUMA_FARA_TVA;
|
|
V_SUMA_VAL := V_SUMA_FARA_TVA_VAL;
|
|
END IF;
|
|
|
|
/* IF V_SUMA IS NULL THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
V_CANTITATE || ' ; ' || V_PRET || ' ; ' ||
|
|
V_DISCOUNT_UNITAR || ' ; ' || V_PRET_ARE_TVA ||
|
|
' ; ' || V_ID_VALUTA || ' ; ' || V_IN_VALUTA ||
|
|
' ; ' || V_CURS || ' ; ' || V_ID_VENCHELT ||
|
|
' ; ' || V_ID_SECTIE || ' ; ' || V_EXPLICATIE ||
|
|
' ; ' || V_SCD || ' ; ' || V_ASCD || ' ; ' ||
|
|
V_SCC || ' ; ' || V_ASCC || ' ; ' ||
|
|
V_ID_GESTIN || ' ; ' || V_ID_GESTOUT || ' ; ' ||
|
|
V_ID_SET || ' ; ' || V_CU_TVA || ' ; ' ||
|
|
V_PTVA || ' ; ' || V_ID_JTVA_COLOANA);
|
|
END IF;*/
|
|
|
|
-- cursul il completez in cumuleaza_note_act
|
|
pack_facturare.nid_act := pack_facturare.nid_act + 1;
|
|
|
|
INSERT INTO ACT_TEMP
|
|
(ID_ACT,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
DATAIREG,
|
|
DATAACT,
|
|
DATASCAD,
|
|
ID_VALUTA,
|
|
ID_VENCHELT,
|
|
ID_LUCRARE,
|
|
ID_SECTIE,
|
|
ID_SET,
|
|
EXPLICATIA,
|
|
SCD,
|
|
ASCD,
|
|
SCC,
|
|
ASCC,
|
|
SUMA,
|
|
SUMA_VAL,
|
|
CURS,
|
|
PROC_TVA,
|
|
ID_FDOC,
|
|
ID_PARTD,
|
|
ID_GESTIN,
|
|
ID_GESTOUT,
|
|
NNIR,
|
|
ID_CTR,
|
|
ID_FACT,
|
|
PERECHEC,
|
|
ID_FACTC,
|
|
ID_PARTC,
|
|
ID_JTVA_COLOANA,
|
|
EXPLICATIA4,
|
|
ID_RESPONSABIL,
|
|
TAXCODE,
|
|
PAYMENTCODE)
|
|
VALUES
|
|
(pack_facturare.nid_act,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
pack_facturare.ddata_ireg,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.ddata_scadenta,
|
|
DECODE(V_IN_VALUTA,
|
|
1,
|
|
V_ID_VALUTA,
|
|
pack_facturare.nid_moneda_nationala),
|
|
V_ID_VENCHELT,
|
|
NVL(pack_Facturare.nid_lucrare, 0),
|
|
NVL(V_ID_SECTIE, 0),
|
|
V_ID_SET,
|
|
V_EXPLICATIE,
|
|
V_SCD,
|
|
V_ASCD,
|
|
V_SCC,
|
|
V_ASCC,
|
|
V_SEMN * V_SUMA,
|
|
DECODE(V_IN_VALUTA, 1, V_SEMN * V_SUMA_VAL, 0),
|
|
DECODE(V_IN_VALUTA, 1, V_CURS, 0),
|
|
V_PROCENT_TVA,
|
|
pack_facturare.nid_fdoc,
|
|
(CASE WHEN
|
|
V_SCD LIKE '41%' OR V_SCD LIKE '46%' OR V_SCD LIKE '45%' OR
|
|
(V_SCD = '357' AND pack_facturare.ntip in (42, 47)) OR
|
|
(pack_facturare.ntip = 24 and pack_facturare.nfactavizcust = 1) THEN
|
|
pack_facturare.nid_part WHEN V_SCD = '357' THEN
|
|
pack_facturare.nid_part_rez ELSE 0 END),
|
|
V_ID_GESTIN,
|
|
V_ID_GESTOUT,
|
|
pack_facturare.nnumar_bon,
|
|
V_ID_CTR,
|
|
V_ID_FACT,
|
|
pack_facturare.nperechec,
|
|
pack_facturare.nid_factc,
|
|
DECODE(V_SCC,
|
|
'419',
|
|
pack_facturare.nid_part,
|
|
'4111',
|
|
pack_facturare.nid_part,
|
|
'357',
|
|
pack_facturare.nid_part,
|
|
pack_facturare.nid_partc),
|
|
V_ID_JTVA_COLOANA,
|
|
pack_facturare.cexplicatia4,
|
|
NVL(pack_facturare.nid_responsabil, 0),
|
|
V_TAXCODE,
|
|
V_PAYMENTCODE);
|
|
|
|
IF V_CU_TVA = 1 THEN
|
|
IF pack_facturare.nproc_tva_max < V_PTVA THEN
|
|
pack_facturare.nproc_tva_max := V_PTVA;
|
|
pack_facturare.nid_jtva_coloana := V_ID_JTVA_COLOANA;
|
|
pack_facturare.nTaxCode := V_TAXCODE;
|
|
END IF;
|
|
|
|
pack_facturare.scrie_tva(V_SUMA_TVA,
|
|
V_SUMA_TVA_VAL,
|
|
V_ID_VALUTA,
|
|
V_IN_VALUTA,
|
|
V_SCD,
|
|
V_ASCD,
|
|
V_CURS,
|
|
V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
V_ID_CTR,
|
|
V_EXPLICATIE,
|
|
V_PROCENT_TVA,
|
|
V_ID_FACT,
|
|
V_ID_JTVA_COLOANA);
|
|
END IF;
|
|
|
|
RETURN V_INCASAT_CALCUL;
|
|
END scrie_nota;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_tva(V_SUMA IN NUMBER,
|
|
V_SUMA_VAL IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_CONT IN VARCHAR2,
|
|
V_ACONT IN VARCHAR2,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VENCHELT IN NUMBER,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_PTVA IN NUMBER,
|
|
V_ID_FACT IN NUMBER,
|
|
V_ID_JTVA_COLOANA IN NUMBER) IS
|
|
V_EXPLICATIA ACT_TEMP.EXPLICATIA%TYPE;
|
|
V_SCD ACT_TEMP.SCD%TYPE;
|
|
V_ASCD ACT_TEMP.ASCD%TYPE;
|
|
V_SCC ACT_TEMP.SCC%TYPE;
|
|
V_ID_PARTD ACT_TEMP.ID_PARTD%TYPE;
|
|
V_ID_TVA ACT_TEMP.ID_JTVA_COLOANA%TYPE;
|
|
lnAn ACT_TEMP.AN%TYPE;
|
|
lnLuna ACT_TEMP.LUNA%TYPE;
|
|
lnTaxCode ACT_TEMP.TAXCODE%TYPE;
|
|
BEGIN
|
|
CASE
|
|
-- 30.10.2009
|
|
-- 26.08.2009
|
|
-- WHEN V_CONT = '667' AND pack_facturare.ntip <= 20 THEN
|
|
WHEN V_CONT in ('667', '267', '2678', '709') AND
|
|
(pack_facturare.ntip <= 20 or
|
|
pack_facturare.ntip in (pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
pack_facturare.nTipNotaPlata,
|
|
pack_facturare.nTipVanzareRetail,
|
|
48,
|
|
49,51,52)) THEN
|
|
-- 26.08.2009 ^
|
|
-- 30.10.2009 ^
|
|
-- FACTURA DISCOUNT
|
|
V_SCD := '4111';
|
|
V_ASCD := NULL;
|
|
V_SCC := '4427';
|
|
V_ID_PARTD := pack_facturare.nid_part;
|
|
WHEN pack_facturare.ntip = 4 AND pack_facturare.nfactavizcust = 0 THEN
|
|
-- factura din aviz
|
|
V_SCD := '4428';
|
|
V_ASCD := NULL;
|
|
V_SCC := '4427';
|
|
V_ID_PARTD := 0;
|
|
|
|
-- 30.10.2009
|
|
-- 26.08.2009
|
|
-- WHEN pack_facturare.ntip <= 20 OR pack_facturare.ntip in (28, 29) THEN
|
|
WHEN pack_facturare.ntip <= 20 OR
|
|
pack_facturare.ntip in (28,
|
|
29,
|
|
pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
pack_facturare.nTipNotaPlata,
|
|
pack_facturare.nTipVanzareRetail,
|
|
48,
|
|
49,51,52) THEN
|
|
-- 26.08.2009 ^
|
|
-- 30.10.2009 ^
|
|
-- factura
|
|
V_SCD := V_CONT;
|
|
V_ASCD := V_ACONT;
|
|
V_SCC := '4427';
|
|
V_ID_PARTD := pack_facturare.nid_part;
|
|
ELSE
|
|
-- aviz
|
|
V_SCD := '418';
|
|
V_ASCD := V_ACONT;
|
|
V_SCC := '4428';
|
|
V_ID_PARTD := pack_facturare.nid_part;
|
|
END CASE;
|
|
|
|
BEGIN
|
|
SELECT ID_TVA
|
|
INTO V_ID_TVA
|
|
FROM JTVA_COLOANE
|
|
WHERE ID_JTVA_COLOANA = V_ID_JTVA_COLOANA;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_TVA := NULL;
|
|
END;
|
|
lnAn := pack_sesiune.getan();
|
|
lnLuna := pack_sesiune.getluna();
|
|
lnTaxCode := PACK_SAFT.GetTaxCode(lnAn,
|
|
lnLuna,
|
|
pack_facturare.ddata_act,
|
|
V_ID_TVA);
|
|
|
|
-- V_EXPLICATIA := 'TVA ' || V_EXPLICATIE;
|
|
pack_facturare.nid_act := pack_facturare.nid_act + 1;
|
|
INSERT INTO ACT_TEMP
|
|
(ID_ACT,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
DATAIREG,
|
|
DATAACT,
|
|
DATASCAD,
|
|
ID_VALUTA,
|
|
ID_VENCHELT,
|
|
ID_LUCRARE,
|
|
ID_SECTIE,
|
|
ID_SET,
|
|
EXPLICATIA,
|
|
SCD,
|
|
ASCD,
|
|
SCC,
|
|
SUMA,
|
|
SUMA_VAL,
|
|
CURS,
|
|
PROC_TVA,
|
|
ID_CTR,
|
|
ID_FDOC,
|
|
ID_PARTD,
|
|
ID_FACT,
|
|
ID_JTVA_COLOANA,
|
|
EXPLICATIA4,
|
|
ID_RESPONSABIL,
|
|
TAXCODE)
|
|
VALUES
|
|
(pack_facturare.nid_act,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
pack_facturare.ddata_ireg,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.ddata_scadenta,
|
|
DECODE(V_IN_VALUTA,
|
|
1,
|
|
V_ID_VALUTA,
|
|
pack_facturare.nid_moneda_nationala),
|
|
V_ID_VENCHELT,
|
|
nvl(pack_facturare.nid_lucrare, 0),
|
|
V_ID_SECTIE,
|
|
pack_facturare.nid_set,
|
|
V_EXPLICATIA,
|
|
V_SCD,
|
|
V_ASCD,
|
|
V_SCC,
|
|
V_SUMA,
|
|
DECODE(V_IN_VALUTA, 1, V_SUMA_VAL, 0),
|
|
DECODE(V_IN_VALUTA, 1, V_CURS, 0),
|
|
V_PTVA,
|
|
V_ID_CTR,
|
|
pack_facturare.nid_fdoc,
|
|
V_ID_PARTD,
|
|
V_ID_FACT,
|
|
V_ID_TVA,
|
|
pack_facturare.cexplicatia4,
|
|
NVL(pack_facturare.nid_responsabil, 0),
|
|
lnTaxCode);
|
|
END;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_descarcare_k(V_COEFICIENT_K IN NUMBER) IS
|
|
V_ANALITICCUST ACT.ASCC%TYPE;
|
|
V_INCASAT ACT.SUMA%TYPE;
|
|
BEGIN
|
|
for grup in (SELECT SUM(pack_facturare.calculeaza_total_fara_tva(pret,
|
|
diferenta,
|
|
curs,
|
|
0,
|
|
0,
|
|
cantitate,
|
|
pret_cu_tva,
|
|
proc_tvav)) as totalfaratvafaradisc,
|
|
SUM(pack_facturare.calculeaza_total_fara_tva(pret,
|
|
diferenta,
|
|
curs,
|
|
discount_unitar,
|
|
pack_facturare.ndiscount_evidentiat,
|
|
cantitate,
|
|
pret_cu_tva,
|
|
proc_tvav)) as totalfaratva,
|
|
SUM(pack_facturare.calculeaza_total_tva(pret,
|
|
diferenta,
|
|
curs,
|
|
discount_unitar,
|
|
pack_facturare.ndiscount_evidentiat,
|
|
cantitate,
|
|
pret_cu_tva,
|
|
proc_tvav)) as totaltva,
|
|
proc_tvav
|
|
FROM VANZARI_DETALII_TEMP
|
|
GROUP BY PROC_TVAV) loop
|
|
|
|
V_ANALITICCUST := pack_facturare.getAnaliticK(grup.proc_tvav);
|
|
|
|
-- 371-357
|
|
V_INCASAT := pack_facturare.scrie_nota(1,
|
|
grup.totalfaratva +
|
|
grup.totaltva,
|
|
0,
|
|
0,
|
|
pack_def.getidmonedanationala(),
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL,
|
|
'DESCARCARE CU K',
|
|
'371',
|
|
V_ANALITICCUST,
|
|
'357',
|
|
NULL,
|
|
0,
|
|
0,
|
|
pack_facturare.nid_set,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
IF pack_facturare.ntip = 48 THEN
|
|
pack_facturare.ncoeficient_k := V_COEFICIENT_K;
|
|
|
|
-- 607-371
|
|
V_INCASAT := pack_facturare.scrie_nota(1,
|
|
ROUND(grup.totalfaratvafaradisc *
|
|
pack_facturare.ncoeficient_k / 100,
|
|
pack_sesiune.nzecimale_sumav),
|
|
0,
|
|
0,
|
|
pack_def.getidmonedanationala(),
|
|
0,
|
|
1,
|
|
pack_facturare.nid_venchelt,
|
|
0,
|
|
NULL,
|
|
'DESCARCARE CU K',
|
|
'607',
|
|
NULL,
|
|
'371',
|
|
V_ANALITICCUST,
|
|
0,
|
|
0,
|
|
pack_facturare.nid_set,
|
|
0,
|
|
0,
|
|
NULL);
|
|
-- 378-371
|
|
V_INCASAT := pack_facturare.scrie_nota(1,
|
|
grup.totalfaratva -
|
|
ROUND(grup.totalfaratvafaradisc *
|
|
pack_facturare.ncoeficient_k / 100,
|
|
pack_sesiune.nzecimale_sumav),
|
|
0,
|
|
0,
|
|
pack_def.getidmonedanationala(),
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL,
|
|
'DESCARCARE CU K',
|
|
'378',
|
|
V_ANALITICCUST,
|
|
'371',
|
|
V_ANALITICCUST,
|
|
0,
|
|
0,
|
|
pack_facturare.nid_set,
|
|
0,
|
|
0,
|
|
NULL);
|
|
|
|
-- 4428-371
|
|
V_INCASAT := pack_facturare.scrie_nota(1,
|
|
grup.totaltva,
|
|
0,
|
|
0,
|
|
pack_def.getidmonedanationala(),
|
|
0,
|
|
1,
|
|
0,
|
|
0,
|
|
NULL,
|
|
'DESCARCARE CU K',
|
|
'4428',
|
|
V_ANALITICCUST,
|
|
'371',
|
|
V_ANALITICCUST,
|
|
0,
|
|
0,
|
|
pack_facturare.nid_set,
|
|
0,
|
|
0,
|
|
NULL);
|
|
END IF;
|
|
end loop;
|
|
END scrie_descarcare_k;
|
|
-------------------------------------------------------------------
|
|
FUNCTION scrie_discount(V_CANTITATE IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_IN_VALUTA IN NUMBER,
|
|
V_ASCC IN VARCHAR2,
|
|
V_ID_SECTIE IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_CU_TVA IN NUMBER, -- daca se scrie si nota pentru TVA
|
|
V_ID_JTVA_COLOANA IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL)
|
|
RETURN NUMBER IS
|
|
V_EXPLICATIA ACT.EXPLICATIA%TYPE;
|
|
V_SCD ACT.SCD%TYPE;
|
|
V_ASCD ACT.ASCD%TYPE;
|
|
V_SCC ACT.SCC%TYPE;
|
|
V_ID_PARTD ACT.ID_PARTD%TYPE := 0;
|
|
V_ID_FACT ACT.ID_FACT%TYPE := -1;
|
|
V_DATA_SCADENTA ACT.DATASCAD%TYPE;
|
|
V_ID_SET ACT.ID_SET%TYPE;
|
|
V_SUMA_DISCOUNT ACT.SUMA%TYPE;
|
|
V_SUMA_TVA_DISCOUNT ACT.SUMA%TYPE;
|
|
|
|
V_DISCOUNT_TOTAL_FARA_TVA ACT.SUMA%TYPE := 0;
|
|
V_DISCOUNT_TOTAL_TVA ACT.SUMA%TYPE := 0;
|
|
V_DISCOUNT_TOTAL_CU_TVA ACT.SUMA%TYPE := 0;
|
|
|
|
V_SUMA_DISCOUNT_VAL ACT.SUMA_VAL%TYPE;
|
|
V_SUMA_TVA_DISCOUNT_VAL ACT.SUMA_VAL%TYPE;
|
|
V_DISCOUNT_TOTAL_FARA_TVA_VAL ACT.SUMA_VAL%TYPE := 0;
|
|
V_DISCOUNT_TOTAL_TVA_VAL ACT.SUMA_VAL%TYPE := 0;
|
|
V_DISCOUNT_TOTAL_CU_TVA_VAL ACT.SUMA_VAL%TYPE := 0;
|
|
|
|
BEGIN
|
|
V_EXPLICATIA := 'DISCOUNT';
|
|
|
|
V_ID_SET := pack_facturare.nid_set;
|
|
V_DATA_SCADENTA := pack_facturare.ddata_scadenta;
|
|
|
|
pack_facturare.ddata_scadenta := NULL;
|
|
pack_facturare.nid_set := pack_facturare.nid_set + 5;
|
|
|
|
pack_facturare.calculeaza_sume(V_DISCOUNT_UNITAR,
|
|
0,
|
|
pack_sesiune.nzecimale_pretv,
|
|
pack_sesiune.nzecimale_sumav,
|
|
V_CANTITATE,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVAV,
|
|
V_PRET_CU_TVA,
|
|
V_DISCOUNT_TOTAL_FARA_TVA,
|
|
V_DISCOUNT_TOTAL_TVA,
|
|
V_DISCOUNT_TOTAL_CU_TVA);
|
|
|
|
IF V_IN_VALUTA = 1 THEN
|
|
pack_facturare.calculeaza_sume(V_DISCOUNT_UNITAR,
|
|
0,
|
|
pack_sesiune.nzecimale_pretvval,
|
|
pack_sesiune.nzecimale_sumaval,
|
|
V_CANTITATE,
|
|
1,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVAV,
|
|
V_PRET_CU_TVA,
|
|
V_DISCOUNT_TOTAL_FARA_TVA_VAL,
|
|
V_DISCOUNT_TOTAL_TVA_VAL,
|
|
V_DISCOUNT_TOTAL_CU_TVA_VAL);
|
|
END IF;
|
|
|
|
CASE
|
|
WHEN pack_facturare.ntip = 4 THEN
|
|
-- facturare din aviz
|
|
V_SCD := '4111';
|
|
V_ASCD := V_ASCC;
|
|
V_SCC := '418';
|
|
V_SUMA_DISCOUNT := (-1) * V_DISCOUNT_TOTAL_CU_TVA;
|
|
V_SUMA_TVA_DISCOUNT := (-1) * V_DISCOUNT_TOTAL_TVA;
|
|
|
|
V_SUMA_DISCOUNT_VAL := (-1) * V_DISCOUNT_TOTAL_CU_TVA_VAL;
|
|
V_SUMA_TVA_DISCOUNT_VAL := (-1) * V_DISCOUNT_TOTAL_TVA_VAL;
|
|
V_ID_PARTD := pack_facturare.nid_part;
|
|
WHEN pack_facturare.ntip <= 20 OR
|
|
pack_facturare.nTip in
|
|
(pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
pack_facturare.nTipNotaPlata,
|
|
pack_facturare.nTipVanzareRetail,
|
|
48,49,51,52) THEN
|
|
-- factura
|
|
V_SCD := '667';
|
|
V_ASCD := NULL;
|
|
V_SCC := '4111';
|
|
V_SUMA_DISCOUNT := V_DISCOUNT_TOTAL_FARA_TVA;
|
|
V_SUMA_TVA_DISCOUNT := (-1) * V_DISCOUNT_TOTAL_TVA;
|
|
|
|
V_SUMA_DISCOUNT_VAL := V_DISCOUNT_TOTAL_FARA_TVA_VAL;
|
|
V_SUMA_TVA_DISCOUNT_VAL := (-1) * V_DISCOUNT_TOTAL_TVA_VAL;
|
|
ELSE
|
|
-- aviz
|
|
V_SCD := '667';
|
|
V_ASCD := NULL;
|
|
V_SCC := '418';
|
|
V_SUMA_DISCOUNT := V_DISCOUNT_TOTAL_FARA_TVA;
|
|
V_SUMA_TVA_DISCOUNT := (-1) * V_DISCOUNT_TOTAL_TVA;
|
|
|
|
V_SUMA_DISCOUNT_VAL := V_DISCOUNT_TOTAL_FARA_TVA_VAL;
|
|
V_SUMA_TVA_DISCOUNT_VAL := (-1) * V_DISCOUNT_TOTAL_TVA_VAL;
|
|
END CASE;
|
|
|
|
pack_facturare.nid_act := pack_facturare.nid_act + 1;
|
|
INSERT INTO ACT_TEMP
|
|
(ID_ACT,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
DATAIREG,
|
|
DATAACT,
|
|
DATASCAD,
|
|
EXPLICATIA,
|
|
SCD,
|
|
ASCD,
|
|
SCC,
|
|
ASCC,
|
|
SUMA,
|
|
SUMA_VAL,
|
|
CURS,
|
|
ID_SECTIE,
|
|
ID_LUCRARE,
|
|
ID_CTR,
|
|
ID_SET,
|
|
ID_FDOC,
|
|
ID_PARTD,
|
|
ID_PARTC,
|
|
ID_FACT,
|
|
ID_VALUTA,
|
|
PROC_TVA,
|
|
PERECHEC,
|
|
ID_FACTC,
|
|
ID_JTVA_COLOANA,
|
|
EXPLICATIA4,
|
|
ID_RESPONSABIL,
|
|
TAXCODE)
|
|
VALUES
|
|
(pack_facturare.nid_act,
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
pack_facturare.ddata_ireg,
|
|
pack_facturare.ddata_act,
|
|
pack_facturare.ddata_scadenta,
|
|
V_EXPLICATIA,
|
|
V_SCD,
|
|
V_ASCD,
|
|
V_SCC,
|
|
V_ASCC,
|
|
V_SUMA_DISCOUNT,
|
|
DECODE(V_IN_VALUTA, 1, V_SUMA_DISCOUNT_VAL, 0),
|
|
DECODE(V_IN_VALUTA, 1, V_CURS, 0),
|
|
NVL(V_ID_SECTIE, 0),
|
|
NVL(pack_facturare.nid_lucrare, 0),
|
|
V_ID_CTR,
|
|
pack_facturare.nid_set,
|
|
pack_facturare.nid_fdoc,
|
|
V_ID_PARTD,
|
|
pack_facturare.nid_part,
|
|
V_ID_FACT,
|
|
DECODE(V_IN_VALUTA,
|
|
1,
|
|
V_ID_VALUTA,
|
|
pack_facturare.nid_moneda_nationala),
|
|
V_PROC_TVAV,
|
|
pack_facturare.nperechec,
|
|
pack_facturare.nid_factc,
|
|
V_ID_JTVA_COLOANA,
|
|
pack_facturare.cexplicatia4,
|
|
NVL(pack_facturare.nid_responsabil, 0),
|
|
V_TAXCODE);
|
|
|
|
IF V_CU_TVA = 1 THEN
|
|
pack_facturare.scrie_tva(V_SUMA_TVA_DISCOUNT,
|
|
V_SUMA_TVA_DISCOUNT_VAL,
|
|
V_ID_VALUTA,
|
|
V_IN_VALUTA,
|
|
V_SCC,
|
|
V_ASCC,
|
|
V_CURS, -- V_CURS,
|
|
0, -- V_ID_VENCHELT,
|
|
V_ID_SECTIE,
|
|
V_ID_CTR,
|
|
V_EXPLICATIA,
|
|
V_PROC_TVAV,
|
|
V_ID_FACT,
|
|
V_ID_JTVA_COLOANA);
|
|
END IF;
|
|
pack_facturare.nid_set := V_ID_SET;
|
|
pack_facturare.ddata_scadenta := V_DATA_SCADENTA;
|
|
RETURN V_DISCOUNT_TOTAL_CU_TVA;
|
|
END;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_avans(V_SUMA IN NUMBER) IS
|
|
/* V_EXPLICATIA ACT.EXPLICATIA%TYPE;
|
|
V_SCD ACT.SCD%TYPE := '4111';
|
|
V_SCC ACT.SCC%TYPE := '419';
|
|
V_SUMA_AVANS ACT.SUMA%TYPE := 0;*/
|
|
BEGIN
|
|
DBMS_OUTPUT.PUT_LINE('Explicatie TVA pentru stornare avans!');
|
|
/* V_EXPLICATIA := 'STORNARE AVANS';
|
|
IF V_SUMA <> 0 THEN
|
|
V_SUMA_AVANS := pack_facturare.scrie_nota(1,
|
|
V_SUMA,
|
|
1, -- PRET CU TVA
|
|
pack_facturare.v_id_moneda_nationala, -- ID_VALUTA,
|
|
0, -- CURS,
|
|
0, -- ID_VENCHELT
|
|
NULL, -- ID_SECTIE
|
|
V_EXPLICATIA,
|
|
V_SCD,
|
|
'',
|
|
V_SCC,
|
|
'',
|
|
0,
|
|
0,
|
|
V_ID_CONTRACT,
|
|
pack_facturare.v_id_set,
|
|
1,
|
|
pack_facturare.v_proc_tva_max,
|
|
V_ID_JTVA_COLOANA);
|
|
END IF;*/
|
|
END;
|
|
-------------------------------------------------------------------
|
|
Procedure scrie_incasari(V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_LISTA_INCASARE IN VARCHAR2,
|
|
V_ID_CTR IN NUMBER) is
|
|
V_INCASAT ACT.SUMA%TYPE := 0;
|
|
V_TIP NUMBER(10);
|
|
V_ID_BANCASA ACT.ID_PARTD%TYPE;
|
|
V_ASCC ACT.ASCC%TYPE;
|
|
V_SCD ACT.SCD%TYPE;
|
|
V_ASCD ACT.ASCD%TYPE;
|
|
begin
|
|
pack_facturare.cserie_act_incasare := V_SERIE_ACT_INCASARE;
|
|
pack_facturare.nnumar_act_incasare := V_NUMAR_ACT_INCASARE;
|
|
pack_facturare.ntip_doc_incasare := pack_facturare.nTipIncasareChitanta;
|
|
pack_facturare.nsuma_incasare := 0;
|
|
-- daca se incaseaza factura in valuta : trebuie sa trimit si cursul, suma in valuta, id_valuta
|
|
-- V_LISTA_INCASARE : tip|valoare|id_bancasa|ascc|scd|ascd
|
|
-- daca ascc, scd, ascd sunt nule primesc 'xxxx' pentru ca getwordnume nu considera cuvant valoarea NULL si sare peste ea, decaland restul valorilor
|
|
|
|
FOR R_INCASARE IN (SELECT X as LINIE_INCASARE
|
|
FROM table(charc2collection(V_LISTA_INCASARE, ';'))) LOOP
|
|
V_TIP := TO_NUMBER(getwordnum(R_INCASARE.LINIE_INCASARE,
|
|
1,
|
|
'|'));
|
|
V_INCASAT := TO_NUMBER(getwordnum(R_INCASARE.LINIE_INCASARE,
|
|
2,
|
|
'|'));
|
|
V_ID_BANCASA := TO_NUMBER(getwordnum(R_INCASARE.LINIE_INCASARE,
|
|
3,
|
|
'|'));
|
|
|
|
V_ASCC := getwordnum(R_INCASARE.LINIE_INCASARE, 4, '|');
|
|
-- 11.08.2010
|
|
V_SCD := getwordnum(R_INCASARE.LINIE_INCASARE, 5, '|');
|
|
V_ASCD := getwordnum(R_INCASARE.LINIE_INCASARE, 6, '|');
|
|
IF lower(V_ASCC) = 'xxxx' THEN
|
|
V_ASCC := NULL;
|
|
END IF;
|
|
IF lower(V_SCD) = 'xxxx' THEN
|
|
V_SCD := NULL;
|
|
END IF;
|
|
IF lower(V_ASCD) = 'xxxx' THEN
|
|
V_ASCD := NULL;
|
|
END IF;
|
|
|
|
pack_facturare.nsuma_incasare := pack_facturare.nsuma_incasare +
|
|
V_INCASAT;
|
|
|
|
IF V_INCASAT <> 0 THEN
|
|
pack_facturare.ntip_doc_incasare := V_TIP;
|
|
if V_TIP not in (pack_facturare.nTipIncasareChitanta,
|
|
pack_facturare.nTipIncasareCardBancar,
|
|
pack_facturare.nTipIncasareBonFiscal) then
|
|
pack_facturare.ntip_doc_incasare := pack_facturare.nTipIncasareBonFiscal;
|
|
end if;
|
|
|
|
pack_facturare.scrie_incasare2(V_TIP,
|
|
V_SERIE_ACT_INCASARE,
|
|
V_NUMAR_ACT_INCASARE,
|
|
V_ID_CTR,
|
|
V_ID_BANCASA,
|
|
V_INCASAT,
|
|
V_ASCC,
|
|
V_SCD,
|
|
V_ASCD);
|
|
END IF;
|
|
-- 11.08.2010 ^
|
|
END LOOP;
|
|
|
|
end scrie_incasari;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_incasare2(V_TIP IN NUMBER,
|
|
V_SERIE_ACT_INCASARE IN VARCHAR2,
|
|
V_NUMAR_ACT_INCASARE IN NUMBER,
|
|
V_ID_CTR IN NUMBER,
|
|
V_ID_BANCASA IN NUMBER,
|
|
V_SUMA IN NUMBER,
|
|
V_ASCC IN ACT.ASCC%TYPE DEFAULT NULL,
|
|
V_PSCD IN ACT.SCD%TYPE DEFAULT NULL,
|
|
V_ASCD IN ACT.ASCD%TYPE DEFAULT NULL) IS
|
|
V_EXPLICATIA VARCHAR2(100);
|
|
V_SCD VARCHAR2(4);
|
|
V_FDOC VARCHAR2(20);
|
|
V_PAYMENTCODE ACT_TEMP.PAYMENTCODE%TYPE;
|
|
lcMesaj varchar2(1000);
|
|
lnD406 number;
|
|
BEGIN
|
|
lnD406 := TO_NUMBER(NVL(pack_sesiune.getoptiunefirma('D406'), '0'));
|
|
-- 11.08.2010
|
|
V_PAYMENTCODE := case lnD406
|
|
when 1 then
|
|
nSaftPaymentCodeNumerar
|
|
else
|
|
NULL
|
|
end;
|
|
V_SCD := V_PSCD;
|
|
CASE
|
|
WHEN V_TIP = nTipIncasareBonFiscal THEN
|
|
V_EXPLICATIA := 'INCASARE NUMERAR';
|
|
V_FDOC := 'ID_FDOC_BONFISCAL';
|
|
|
|
IF V_SCD IS NULL THEN
|
|
V_SCD := PACK_SESIUNE.getoptiunefirma('RF_CONT_INCASARE_BONFISCAL');
|
|
END IF;
|
|
IF V_SCD IS NULL THEN
|
|
V_SCD := '5311';
|
|
END IF;
|
|
|
|
WHEN V_TIP = nTipIncasareCardBancar THEN
|
|
V_EXPLICATIA := 'INCASARE CARD BANCAR';
|
|
V_FDOC := 'ID_FDOC_CARD';
|
|
|
|
IF V_SCD IS NULL THEN
|
|
V_SCD := PACK_SESIUNE.getoptiunefirma('RF_CONT_INCASARE_CARDBANCAR');
|
|
END IF;
|
|
IF V_SCD IS NULL THEN
|
|
V_SCD := '5125';
|
|
END IF;
|
|
V_PAYMENTCODE := case lnD406
|
|
when 1 then
|
|
nSaftPaymentCodeCard
|
|
else
|
|
NULL
|
|
end;
|
|
|
|
WHEN V_TIP = nTipIncasareTichete THEN
|
|
V_EXPLICATIA := 'INCASARE TICHETE';
|
|
V_FDOC := 'ID_FDOC_BONFISCAL';
|
|
IF V_SCD IS NULL THEN
|
|
V_SCD := PACK_SESIUNE.getoptiunefirma('RF_CONT_INCASARE_TICHETE');
|
|
END IF;
|
|
IF V_SCD IS NULL THEN
|
|
V_SCD := '5323';
|
|
END IF;
|
|
|
|
WHEN V_TIP = nTipIncasareChitanta THEN
|
|
V_EXPLICATIA := 'INCASARE NUMERAR';
|
|
V_FDOC := 'ID_FDOC_CHITANTA';
|
|
IF V_SCD IS NULL THEN
|
|
V_SCD := PACK_SESIUNE.getoptiunefirma('RF_CONT_INCASARE_CHITANTA');
|
|
END IF;
|
|
IF V_SCD IS NULL THEN
|
|
V_SCD := '5311';
|
|
END IF;
|
|
END CASE;
|
|
-- 11.08.2010 ^
|
|
|
|
-- select pack_sesiune.getoptiunefirma(user, 'ID_FDOC_BONFISCAL') into lcMesaj from dual;
|
|
/* pinfo('V_FDOC: ' || V_FDOC || ' VALOARE: ' || V_SUMA,'SCRIE_INCASARE2');*/
|
|
|
|
pack_facturare.nid_act := pack_facturare.nid_act + 1;
|
|
INSERT INTO ACT_TEMP
|
|
(ID_ACT,
|
|
SERIE_ACT,
|
|
NRACT,
|
|
DATAIREG,
|
|
DATAACT,
|
|
EXPLICATIA,
|
|
PERECHEC,
|
|
SCD,
|
|
ASCD,
|
|
SCC,
|
|
ASCC,
|
|
SUMA,
|
|
ID_CTR,
|
|
ID_LUCRARE,
|
|
ID_FDOC,
|
|
ID_PARTC,
|
|
ID_PARTD,
|
|
ID_SECTIE,
|
|
ID_VENCHELT,
|
|
ID_RESPONSABIL,
|
|
PAYMENTCODE)
|
|
SELECT pack_facturare.nid_act as ID_ACT,
|
|
V_SERIE_ACT_INCASARE as serie_act,
|
|
V_NUMAR_ACT_INCASARE as nract,
|
|
pack_facturare.ddata_ireg as dataireg,
|
|
pack_facturare.ddata_act as dataact,
|
|
V_EXPLICATIA as explicatia,
|
|
pack_facturare.nnumar_act as perechec,
|
|
V_SCD as scd,
|
|
V_ASCD as ascd, -- 11.08.2010
|
|
SCD as scc,
|
|
CASE
|
|
WHEN V_ASCC IS NULL THEN
|
|
max(ASCD)
|
|
ELSE
|
|
V_ASCC
|
|
END as ascc, -- 03.09.2009 -- 18.05.2010
|
|
V_SUMA as suma,
|
|
V_ID_CTR,
|
|
NVL(pack_facturare.nid_lucrare, 0) as id_lucrare,
|
|
TO_NUMBER(pack_sesiune.getoptiunefirma(user, V_FDOC)) as id_fdoc,
|
|
pack_facturare.nid_part as id_partc,
|
|
V_ID_BANCASA as id_partd,
|
|
MAX(ID_SECTIE) as id_sectie,
|
|
MAX(ID_VENCHELT) as id_venchelt,
|
|
NVL(pack_facturare.nid_responsabil, 0),
|
|
V_PAYMENTCODE
|
|
FROM ACT_TEMP
|
|
WHERE SCD = '4111'
|
|
GROUP BY SCD;
|
|
|
|
/* IF pack_facturare.ntva_incasare = 1 THEN
|
|
INSERT INTO ACT_TEMP(ID_ACT,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
DATAIREG,
|
|
DATAACT,
|
|
ID_VALUTA,
|
|
ID_VENCHELT,
|
|
ID_LUCRARE,
|
|
ID_SECTIE,
|
|
ID_SET,
|
|
EXPLICATIA,
|
|
SCD,
|
|
ASCD,
|
|
SCC,
|
|
ASCC,
|
|
SUMA,
|
|
SUMA_VAL,
|
|
CURS,
|
|
PROC_TVA,
|
|
ID_FDOC,
|
|
NNIR,
|
|
ID_CTR,
|
|
PERECHEC,
|
|
ID_FACT,
|
|
ID_JTVA_COLOANA,
|
|
EXPLICATIA4)
|
|
SELECT pack_facturare.nid_act as ID_ACT,
|
|
V_NUMAR_ACT_INCASARE as nract,
|
|
V_SERIE_ACT_INCASARE as serie_act,
|
|
pack_facturare.ddata_ireg as dataireg,
|
|
pack_facturare.ddata_act as dataact,
|
|
ID_VALUTA, -- ??
|
|
ID_VENCHELT, -- ??
|
|
NVL(pack_facturare.nid_lucrare, 0) as ID_LUCRARE,
|
|
ID_SECTIE, -- ??
|
|
ID_SET, -- ??
|
|
V_EXPLICATIA as explicatia,
|
|
SCD, -- ??
|
|
ASCD, -- ??
|
|
SCC, -- ??
|
|
ASCC, -- ??
|
|
SUMA, -- ??
|
|
SUMA_VAL, -- ??
|
|
CURS, -- ??
|
|
PROC_TVA, -- ??
|
|
TO_NUMBER(pack_sesiune.getoptiunefirma(user, V_FDOC)) as ID_FDOC,
|
|
NNIR, -- ??
|
|
V_ID_CTR as ID_CTR,
|
|
pack_facturare.nnumar_act as perechec,
|
|
-5 AS ID_FACT,
|
|
ID_JTVA_COLOANA,
|
|
EXPLICATIA4
|
|
END IF;*/
|
|
END scrie_incasare2;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_note_banca_compensari IS
|
|
V_ID_BANCA NOM_PARTENERI.ID_PART%TYPE := 0;
|
|
V_NUME_BANCA NOM_PARTENERI.DENUMIRE%TYPE := NULL;
|
|
V_ID_FDOC_COMP NOM_FDOC.ID_FDOC%TYPE := 0;
|
|
V_NUME_FDOC NOM_FDOC.FEL_DOCUMENT%TYPE := NULL;
|
|
BEGIN
|
|
pack_facturare.citeste_setari_document(0, V_ID_FDOC_COMP, V_NUME_FDOC);
|
|
pack_facturare.citeste_setari_partener(0, V_ID_BANCA, V_NUME_BANCA);
|
|
|
|
-- compensare aviz retur
|
|
INSERT INTO ACT_TEMP
|
|
(ID_ACT,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
DATAIREG,
|
|
DATAACT,
|
|
ID_VALUTA,
|
|
ID_SET,
|
|
EXPLICATIA,
|
|
SCD,
|
|
SCC,
|
|
SUMA,
|
|
PROC_TVA,
|
|
ID_JTVA_COLOANA,
|
|
ID_FDOC,
|
|
ID_PARTD,
|
|
PERECHEC,
|
|
ID_PARTC)
|
|
SELECT 9998 as ID_ACT,
|
|
pack_facturare.nnumar_act AS NRACT,
|
|
pack_facturare.cserie_act,
|
|
DATAIREG,
|
|
DATAACT,
|
|
ID_VALUTA,
|
|
MIN(ID_SET) AS ID_SET,
|
|
'COMPENSARE AVIZ ' || pack_facturare.nnumar_act AS EXPLICATIA,
|
|
'5121' AS SCD,
|
|
'418' AS SCC,
|
|
SUM(CASE
|
|
WHEN SCD in ('667', '267', '2678', '709') THEN
|
|
(-1) * SUMA
|
|
ELSE
|
|
SUMA
|
|
END) AS SUMA,
|
|
PROC_TVA,
|
|
MAX(CASE
|
|
WHEN SCC = '4428' THEN
|
|
0
|
|
ELSE
|
|
ID_JTVA_COLOANA
|
|
END) AS ID_JTVA_COLOANA,
|
|
V_ID_FDOC_COMP AS ID_FDOC,
|
|
V_ID_BANCA AS ID_PARTD,
|
|
pack_facturare.nnumar_act AS PERECHEC,
|
|
pack_facturare.nid_part ID_PARTC
|
|
FROM ACT_TEMP
|
|
WHERE SCD = '418'
|
|
OR (SCD in ('667', '267', '2678', '709') AND SCC = '418')
|
|
GROUP BY DATAIREG, DATAACT, ID_VALUTA, PROC_TVA;
|
|
|
|
-- compensari avize - aici
|
|
INSERT INTO ACT_TEMP
|
|
(ID_ACT,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
DATAIREG,
|
|
DATAACT,
|
|
ID_VALUTA,
|
|
ID_VENCHELT,
|
|
ID_SET,
|
|
EXPLICATIA,
|
|
SCD,
|
|
SCC,
|
|
SUMA,
|
|
PROC_TVA,
|
|
ID_JTVA_COLOANA,
|
|
ID_FDOC,
|
|
ID_PARTD,
|
|
PERECHEC,
|
|
ID_FACTC,
|
|
ID_PARTC)
|
|
SELECT 9999 as ID_ACT,
|
|
pack_facturare.nnumar_act AS NRACT,
|
|
pack_facturare.cserie_act,
|
|
to_date(to_char(pack_facturare.ddata_ireg, 'YYYYMMDD'),
|
|
'YYYYMMDD') AS DATAIREG,
|
|
to_date(to_char(pack_facturare.ddata_act, 'YYYYMMDD'),
|
|
'YYYYMMDD') AS DATAACT,
|
|
ID_VALUTA,
|
|
ID_VENCHELT,
|
|
pack_Facturare.nid_set AS ID_SET,
|
|
'COMPENSARE AVIZ ' || NRACT AS EXPLICATIA,
|
|
'5121' AS SCD,
|
|
'418' AS SCC,
|
|
debit + precdeb - credit - preccred AS SUMA,
|
|
PROC_TVA,
|
|
ID_JTVA_COLOANA,
|
|
V_ID_FDOC_COMP AS ID_FDOC,
|
|
V_ID_BANCA AS ID_PARTD,
|
|
NRACT AS PERECHEC,
|
|
ID_FACT AS ID_FACTC,
|
|
ID_PART AS ID_PARTC
|
|
FROM IREG_PARTENERI
|
|
WHERE CONT = '418'
|
|
AND COD IN
|
|
(SELECT COD
|
|
FROM VANZARI
|
|
WHERE ID_VANZARE IN
|
|
(SELECT X AS ID_VANZARE
|
|
FROM table(cast(CHARN2COLLECTION(pack_facturare.clistaid,
|
|
',') AS num_tab))))
|
|
AND AN = pack_facturare.nan
|
|
AND LUNA = pack_facturare.nluna
|
|
AND debit + precdeb - credit - preccred > 0;
|
|
|
|
END scrie_note_banca_compensari;
|
|
|
|
-------------------------------------------------------------------
|
|
/* PROCEDURE scrie_in_vanzari(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_ID_VANZARE OUT NUMBER) is
|
|
lnIdFacturare NUMBER(10) := null;
|
|
lnListareDetaliata NUMBER(1) := 0;
|
|
begin
|
|
pack_facturare.scrie_in_vanzari(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
lnIdFacturare,
|
|
lnListareDetaliata,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_ID_VANZARE);
|
|
end;*/
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_in_vanzari(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_ID_VANZARE OUT NUMBER) IS
|
|
|
|
V_DATAORA DATE := SYSDATE;
|
|
V_FACTURAT VANZARI.FACTURAT%TYPE := 0;
|
|
lnDiscountTVA VANZARI.DISCOUNT_TVA%TYPE;
|
|
lnValoareAchizitie VANZARI.VALOARE_ACHIZITIE%TYPE;
|
|
lnSerieIncasat ACT.SERIE_ACT%TYPE;
|
|
lnNrIncasat ACT.NRACT%TYPE;
|
|
lnSumaIncasat ACT.SUMA%TYPE;
|
|
lnTipIncasat NUMBER(2);
|
|
lnTotalFaraTVA VANZARI.TOTAL_FARA_TVA%TYPE;
|
|
lnTotalTVA VANZARI.TOTAL_TVA%TYPE;
|
|
lnTotalCuTVA VANZARI.TOTAL_CU_TVA%TYPE;
|
|
lnIdGestiune VANZARI.ID_GESTIUNE%TYPE;
|
|
lnIdValuta VANZARI.Id_Valuta%TYPE;
|
|
lnCurs VANZARI.CURS%TYPE;
|
|
lnMultiplicator VANZARI.MULTIPLICATOR%TYPE;
|
|
lnIdCtr VANZARI.ID_CTR%TYPE;
|
|
lnValVal VANZARI.VALVAL%TYPE;
|
|
lnTVAVal VANZARI.TVAVAL%TYPE;
|
|
lnTotVal VANZARI.TOTVAL%TYPE;
|
|
lnPrecizieCalcul NUMBER(2) := pack_sesiune.getOptiuneFirma('PC');
|
|
lnPreciziePretV NUMBER(2) := pack_sesiune.getOptiuneFirma('PPRETV');
|
|
|
|
BEGIN
|
|
-- 1 - 20 facturi, 51 factura ACN
|
|
-- 21 - 42, 47 avize
|
|
-- -6 retur transfer din gestiune valorica (ROAGEST)
|
|
-- -7 retur aviz ( valoric ) ( ROAGEST )
|
|
-- -8 retur factura ( valorica ) ( ROAGEST )
|
|
-- -13 retur marfa din custodie ( valoric ) ( ROAFACTURARE )
|
|
IF pack_facturare.ntip between 1 and 20 OR
|
|
pack_facturare.ntip in (-8,
|
|
pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
-12,
|
|
48,
|
|
49,
|
|
51,
|
|
52) THEN
|
|
V_FACTURAT := 1;
|
|
ELSE
|
|
V_FACTURAT := 0;
|
|
END IF;
|
|
|
|
IF pack_facturare.ntip in (2,6,52) THEN
|
|
SELECT NVL(MAX(AFISARE_SCADENTA), 1)
|
|
INTO pack_facturare.nafisare_scadenta
|
|
FROM VCONTRACTE
|
|
WHERE ID_CTR IN (SELECT DISTINCT ID_CTR FROM VANZARI_DETALII_TEMP);
|
|
ELSE
|
|
pack_facturare.nafisare_scadenta := 1;
|
|
END IF;
|
|
|
|
-- 23,25,27,30 ROAFACTURARE aviz transfer catre subunitati
|
|
-- 41 = ROAFACTURARE retur transfer catre subunitati;
|
|
-- 6 = ROAGEST retur de la gestiune valorica
|
|
if pack_facturare.ntip in (23, 25, 27, 30, 41) then
|
|
lnIdGestiune := pack_facturare.v_date_gestiune.id_gestiune;
|
|
elsif pack_facturare.ntip = -6 then
|
|
lnIdGestiune := pack_facturare.nid_gestiune_sursa;
|
|
end if;
|
|
|
|
if (lnIdGestiune is null and pack_facturare.ntip in (41, -6)) then
|
|
select min(id_gestiune) into lnIdGestiune from vanzari_detalii_temp;
|
|
end if;
|
|
|
|
-- completez vanzari.id_ctr, ca sa nu mai caut in vanzari_detalii
|
|
SELECT MAX(ID_CTR) INTO lnIdCtr FROM VANZARI_DETALII_TEMP;
|
|
|
|
-- nu stiu de ce nu se completa id_valuta, curs, multiplicator mai jos
|
|
-- il selectez direct din vanzari_detalii_temp, in loc de vanzari_cursuri
|
|
SELECT max(ID_VALUTA), max(CURS), max(MULTIPLICATOR)
|
|
INTO lnIdValuta, lnCurs, lnMultiplicator
|
|
FROM (SELECT DISTINCT ID_VALUTA, CURS, MULTIPLICATOR
|
|
FROM VANZARI_DETALII_TEMP
|
|
WHERE ID_VALUTA <> pack_facturare.nid_moneda_nationala)
|
|
WHERE ROWNUM = 1;
|
|
|
|
INSERT INTO VANZARI
|
|
(id_util,
|
|
dataora,
|
|
id_part,
|
|
numar_act,
|
|
serie_act,
|
|
facturat,
|
|
data_facturat,
|
|
id_utilfact,
|
|
id_lucrare,
|
|
id_comanda,
|
|
tip,
|
|
id_gestiune,
|
|
cod,
|
|
id_delegat,
|
|
id_masina,
|
|
id_facturare,
|
|
listare_detaliata,
|
|
dataora_exp,
|
|
data_act,
|
|
discount,
|
|
discount_evidentiat,
|
|
id_agent,
|
|
text_aditional,
|
|
in_valuta,
|
|
id_sucursala,
|
|
id_sectie,
|
|
diftotftva,
|
|
diftottva,
|
|
afisare_scadenta,
|
|
coeficient_k,
|
|
id_ordl,
|
|
tva_incasare,
|
|
data_scad,
|
|
id_ctr,
|
|
tip_factura,
|
|
id_beneficiar,
|
|
tip_saft)
|
|
VALUES
|
|
(pack_facturare.nid_util,
|
|
V_DATAORA,
|
|
DECODE(pack_facturare.ntip,
|
|
23,
|
|
NULL,
|
|
25,
|
|
NULL,
|
|
41,
|
|
NULL,
|
|
-6,
|
|
NULL,
|
|
pack_facturare.nid_part),
|
|
pack_facturare.nnumar_act,
|
|
pack_facturare.cserie_act,
|
|
V_FACTURAT,
|
|
(CASE WHEN
|
|
pack_facturare.ntip < 20 OR
|
|
pack_facturare.ntip in (pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
-12,
|
|
48,
|
|
49,51,52) THEN V_DATAORA ELSE NULL END),
|
|
(CASE WHEN
|
|
pack_facturare.ntip < 20 OR
|
|
pack_facturare.ntip in (pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
-12,
|
|
48,
|
|
49,51,52) THEN pack_facturare.nid_util ELSE NULL END),
|
|
pack_facturare.nid_lucrare,
|
|
pack_facturare.nid_comanda,
|
|
pack_facturare.ntip,
|
|
lnIdGestiune,
|
|
pack_contafin.get_cod(),
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
pack_facturare.ddata_act,
|
|
V_DISCOUNT_FACTURA,
|
|
pack_facturare.ndiscount_evidentiat,
|
|
V_ID_AGENT,
|
|
REPLACE(V_TEXT_ADITIONAL, CHR(170), CHR(13) || CHR(10)),
|
|
pack_facturare.nin_valuta,
|
|
pack_facturare.nid_sucursala,
|
|
pack_facturare.nid_sectie_stoc,
|
|
pack_facturare.ndifftva,
|
|
pack_facturare.ndiftva,
|
|
pack_facturare.nafisare_scadenta,
|
|
pack_facturare.ncoeficient_k,
|
|
pack_facturare.nid_ordl,
|
|
pack_facturare.ntva_incasare,
|
|
pack_facturare.ddata_scadenta,
|
|
lnIdCtr,
|
|
pack_facturare.ntip_factura,
|
|
pack_facturare.nid_beneficiar,
|
|
pack_facturare.ntip_saft)
|
|
RETURNING ID_VANZARE INTO V_ID_VANZARE;
|
|
|
|
pack_facturare.scrie_cursuri(V_ID_VANZARE);
|
|
|
|
pack_facturare.scrie_seturi;
|
|
|
|
INSERT /*+ APPEND */
|
|
INTO VANZARI_DETALII
|
|
(ID_VANZARE,
|
|
ID_ARTICOL,
|
|
LOT,
|
|
SERIE,
|
|
ID_RATA,
|
|
ID_POL,
|
|
CANTITATE,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
PRET,
|
|
PROC_TVAV,
|
|
ID_JTVA_COLOANA,
|
|
ID_JTVA_COLOANA_EX,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
ID_VALUTA,
|
|
CONT,
|
|
EXPLICATIE,
|
|
PRET_CU_TVA,
|
|
DIFERENTA,
|
|
CUSTODIE,
|
|
ID_VANZARE_SET,
|
|
ID_CTR,
|
|
TAXCODE)
|
|
SELECT V_ID_VANZARE as ID_VANZARE,
|
|
ID_ARTICOL,
|
|
LOT,
|
|
SERIE,
|
|
ID_RATA,
|
|
ID_POL,
|
|
CANTITATE,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
PRET,
|
|
PROC_TVAV,
|
|
ID_JTVA_COLOANA,
|
|
ID_JTVA_COLOANA_EX,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
ID_VALUTA,
|
|
CONT,
|
|
EXPLICATIA,
|
|
PRET_CU_TVA,
|
|
DIFERENTA,
|
|
CUSTODIE,
|
|
DECODE(ID_VANZARE_SET, 0, NULL, ID_VANZARE_SET),
|
|
ID_CTR,
|
|
TAXCODE
|
|
FROM VANZARI_DETALII_TEMP;
|
|
|
|
-- Completare totaluri in vanzari din vanzari_detalii pentru a usura selectiile din fact_vfacturi
|
|
begin
|
|
select DISC_TVA_VAL AS DISCOUNT_TVA,
|
|
VALOARE_ACHIZITIE,
|
|
a.suma_fara_tva_ron - a.disc_fara_tva_ron as TOTAL_FARA_TVA,
|
|
a.suma_tva_ron - a.disc_tva_ron as TOTAL_TVA,
|
|
a.suma_fara_tva_ron - a.disc_fara_tva_ron + a.suma_tva_ron -
|
|
a.disc_tva_ron as TOTAL_CU_TVA,
|
|
a.suma_fara_tva_val - a.disc_fara_tva_val as VALVAL,
|
|
a.suma_tva_val - a.disc_tva_val as TVAVAL,
|
|
a.suma_fara_tva_val - a.disc_fara_tva_val + a.suma_tva_val -
|
|
a.disc_tva_val as TOTVAL,
|
|
id_valuta,
|
|
curs,
|
|
multiplicator,
|
|
pack_facturare.cserie_act_incasare as SERIE_INCASAT,
|
|
pack_facturare.nnumar_act_incasare as NR_INCASAT,
|
|
pack_facturare.nsuma_incasare AS SUMA_INCASAT,
|
|
pack_facturare.ntip_doc_incasare as TIP_INCASAT
|
|
INTO lnDiscountTVA,
|
|
lnValoareAchizitie,
|
|
lnTotalFaraTVA,
|
|
lnTotalTVA,
|
|
lnTotalCuTVA,
|
|
lnValVal,
|
|
lnTVAVal,
|
|
lnTotVal,
|
|
lnIdValuta,
|
|
lnCurs,
|
|
lnMultiplicator,
|
|
lnSerieIncasat,
|
|
lnNrIncasat,
|
|
lnSumaIncasat,
|
|
lnTipIncasat
|
|
FROM (select MAX(decode(pack_facturare.nin_valuta,
|
|
1,
|
|
ROUND(a1.curs * NVL(V_DISCOUNT_FACTURA, 0) /
|
|
a1.multiplicator,
|
|
lnPreciziePretV),
|
|
NVL(V_DISCOUNT_FACTURA, 0))) as DISC_FARA_TVA_RON,
|
|
NVL(V_DISCOUNT_FACTURA, 0) as DISC_FARA_TVA_VAL,
|
|
pack_facturare.nin_valuta AS IN_VALUTA,
|
|
MAX(ROUND(decode(pack_facturare.nin_valuta,
|
|
1,
|
|
ROUND(a1.curs *
|
|
NVL(V_DISCOUNT_FACTURA, 0) /
|
|
a1.multiplicator,
|
|
lnPreciziePretV),
|
|
NVL(V_DISCOUNT_FACTURA, 0)) *
|
|
(a1.proc_tvav - 1),
|
|
lnPreciziePretV)) as DISC_TVA_RON,
|
|
MAX(ROUND(NVL(V_DISCOUNT_FACTURA, 0) *
|
|
(a1.proc_tvav - 1),
|
|
lnPreciziePretV)) as DISC_TVA_VAL,
|
|
sum(pack_facturare.calculeaza_total_fara_tva_fact(a1.pret_ron,
|
|
0,
|
|
1,
|
|
NVL(a1.discount_unitar_ron,
|
|
0),
|
|
pack_facturare.ndiscount_evidentiat,
|
|
a1.cantitate,
|
|
a1.pret_cu_tva,
|
|
a1.proc_tvav)) AS SUMA_FARA_TVA_RON,
|
|
sum(pack_facturare.calculeaza_total_tva_fact(a1.pret_ron,
|
|
0,
|
|
1,
|
|
NVL(a1.discount_unitar_ron,
|
|
0),
|
|
pack_facturare.ndiscount_evidentiat,
|
|
a1.cantitate,
|
|
a1.pret_cu_tva,
|
|
a1.proc_tvav)) as SUMA_TVA_RON,
|
|
sum(pack_facturare.calculeaza_total_fara_tva_fact(a1.pret_val,
|
|
0,
|
|
1,
|
|
NVL(a1.discount_unitar_val,
|
|
0),
|
|
pack_facturare.ndiscount_evidentiat,
|
|
a1.cantitate,
|
|
a1.pret_cu_tva,
|
|
a1.proc_tvav)) AS SUMA_FARA_TVA_VAL,
|
|
sum(pack_facturare.calculeaza_total_tva_fact(a1.pret_val,
|
|
0,
|
|
1,
|
|
NVL(a1.discount_unitar_val,
|
|
0),
|
|
pack_facturare.ndiscount_evidentiat,
|
|
a1.cantitate,
|
|
a1.pret_cu_tva,
|
|
a1.proc_tvav)) as SUMA_TVA_VAL,
|
|
sum(round(a1.cantitate * a1.pret_achizitie,
|
|
lnPrecizieCalcul)) AS VALOARE_ACHIZITIE,
|
|
max(a1.id_valuta) as id_valuta,
|
|
max(a1.curs) as curs,
|
|
max(a1.multiplicator) as multiplicator
|
|
from (select vd.id_vanzare_set,
|
|
(case
|
|
when (pack_facturare.nin_valuta = 1 or
|
|
vd.id_valuta <>
|
|
pack_def.GetIdMonedaNationala()) then
|
|
ROUND(vc.curs * vd.pret / vc.multiplicator,
|
|
lnPreciziePretV)
|
|
else
|
|
vd.pret
|
|
end) as pret_ron,
|
|
vd.pret as pret_val,
|
|
vd.proc_tvav,
|
|
vd.cantitate,
|
|
vd.diferenta,
|
|
(case
|
|
when (pack_facturare.nin_valuta = 1 or
|
|
vd.id_valuta <>
|
|
pack_def.GetIdMonedaNationala()) then
|
|
ROUND(vc.curs * vd.discount_unitar /
|
|
vc.multiplicator,
|
|
lnPreciziePretV)
|
|
else
|
|
vd.discount_unitar
|
|
end) as discount_unitar_ron,
|
|
vd.discount_unitar as discount_unitar_val,
|
|
vd.id_valuta,
|
|
vd.pret_cu_tva,
|
|
vd.pret_achizitie,
|
|
vc.curs,
|
|
vc.multiplicator
|
|
from (select a.id_vanzare_set,
|
|
a.pret,
|
|
a.proc_tvav,
|
|
a.cantitate,
|
|
a.diferenta,
|
|
a.discount_unitar,
|
|
a.id_valuta,
|
|
a.pret_cu_tva,
|
|
a.pret_achizitie
|
|
from VANZARI_DETALII_TEMP a
|
|
where nvl(a.id_vanzare_set, 0) = 0
|
|
union all
|
|
select b.id_vanzare_set,
|
|
b.pret,
|
|
max(c.proc_tvav) as proc_tvav,
|
|
b.cantitate,
|
|
0 as diferenta,
|
|
b.discount_unitar,
|
|
decode(pack_facturare.nin_valuta,
|
|
0,
|
|
pack_def.GetIdMonedaNationala(),
|
|
c.id_valuta) as id_valuta,
|
|
b.pret_cu_tva,
|
|
sum(decode(b.cantitate,
|
|
0,
|
|
0,
|
|
c.pret_achizitie * c.cantitate /
|
|
b.cantitate)) as pret_achizitie
|
|
from vanzari_detalii_temp c
|
|
left join vanzari_seturi b
|
|
on b.id_vanzare_set = c.id_vanzare_set
|
|
where nvl(c.id_vanzare_set, 0) <> 0
|
|
and nvl(pack_facturare.nin_valuta, -1) > -1
|
|
group by b.id_vanzare_set,
|
|
b.pret,
|
|
b.cantitate,
|
|
b.discount_unitar,
|
|
b.pret_cu_tva,
|
|
decode(pack_facturare.nin_valuta,
|
|
0,
|
|
pack_def.GetIdMonedaNationala(),
|
|
c.id_valuta)) vd
|
|
left join vanzari_cursuri vc
|
|
on vc.id_vanzare = V_ID_VANZARE
|
|
and vd.id_valuta = vc.id_valuta) a1) a;
|
|
|
|
update vanzari
|
|
set discount_tva = lnDiscountTVA,
|
|
valoare_achizitie = lnValoareAchizitie,
|
|
total_fara_tva = lnTotalFaraTVA,
|
|
total_tva = lnTotalTVA,
|
|
total_cu_tva = lnTotalCuTVA,
|
|
valval = lnValVal,
|
|
tvaval = lnTVAVal,
|
|
totval = lnTotVal,
|
|
id_valuta = lnIdValuta,
|
|
curs = lnCurs,
|
|
multiplicator = lnMultiplicator,
|
|
serie_incasat = lnSerieIncasat,
|
|
nr_incasat = lnNrIncasat,
|
|
suma_incasat = lnSumaIncasat,
|
|
tip_incasat = lnTipIncasat
|
|
where id_vanzare = V_ID_VANZARE;
|
|
|
|
exception
|
|
when NO_DATA_FOUND then
|
|
null;
|
|
end;
|
|
|
|
END scrie_in_vanzari;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_atasamente_factura(V_ID_VANZARE IN NUMBER,
|
|
V_NUME_FRX IN NUMBER,
|
|
V_WDOCUMENT IN BLOB,
|
|
V_ID_UTIL IN NUMBER) IS
|
|
V_TIP NUMBER(2) := 0;
|
|
V_FORMAT ATASAMENTE_VANZARI.FORMAT%TYPE;
|
|
begin
|
|
CASE
|
|
WHEN UPPER(TRIM(V_NUME_FRX)) LIKE 'FACTURA_VAL' THEN
|
|
V_TIP := 2;
|
|
WHEN UPPER(TRIM(V_NUME_FRX)) LIKE 'FACTURA%' THEN
|
|
V_TIP := 1;
|
|
WHEN UPPER(TRIM(V_NUME_FRX)) LIKE 'INVOICE%' THEN
|
|
V_TIP := 3;
|
|
WHEN UPPER(TRIM(V_NUME_FRX)) = 'RECAPITULATIE' THEN
|
|
V_TIP := 4;
|
|
WHEN UPPER(TRIM(V_NUME_FRX)) LIKE 'AVIZ%' THEN
|
|
V_TIP := 5;
|
|
END CASE;
|
|
|
|
IF UPPER(TRIM(V_NUME_FRX)) LIKE '%_A5' THEN
|
|
V_FORMAT := 'A5';
|
|
ELSE
|
|
V_FORMAT := 'A4';
|
|
END IF;
|
|
|
|
IF V_WDOCUMENT IS NOT NULL THEN
|
|
INSERT INTO ATASAMENTE_VANZARI
|
|
(ID_VANZARE, TIP, FORMAT, DOCUMENT)
|
|
VALUES
|
|
(V_ID_VANZARE, V_TIP, V_FORMAT, V_WDOCUMENT);
|
|
END IF;
|
|
|
|
end scrie_atasamente_factura;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_seturi is
|
|
cursor crs is
|
|
SELECT * FROM VANZARI_SETURI_TEMP;
|
|
linie_crs crs%ROWTYPE;
|
|
V_ID VANZARI_SETURI.ID_VANZARE_SET%TYPE;
|
|
begin
|
|
open crs;
|
|
loop
|
|
fetch crs
|
|
into linie_crs;
|
|
exit when crs%NOTFOUND;
|
|
INSERT INTO VANZARI_SETURI
|
|
(DENUMIRE,
|
|
EXPLICATIE,
|
|
CANTITATE,
|
|
UM,
|
|
SERIE,
|
|
PRET,
|
|
DISCOUNT_UNITAR,
|
|
PRET_CU_TVA)
|
|
VALUES
|
|
(linie_crs.denumire,
|
|
linie_crs.explicatie,
|
|
linie_crs.cantitate,
|
|
linie_crs.um,
|
|
linie_crs.serie,
|
|
linie_crs.pret,
|
|
linie_crs.discount_unitar,
|
|
linie_crs.pret_cu_tva)
|
|
RETURNING ID_VANZARE_SET INTO V_ID;
|
|
UPDATE VANZARI_DETALII_TEMP
|
|
SET ID_VANZARE_SET = V_ID
|
|
WHERE ID_VANZARE_SET = linie_crs.id_vanzare_set;
|
|
end loop;
|
|
close crs;
|
|
end scrie_seturi;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_seturi_proforma is
|
|
cursor crs is
|
|
SELECT * FROM VANZARI_SETURI_TEMP;
|
|
linie_crs crs%ROWTYPE;
|
|
V_ID NUMBER(10);
|
|
begin
|
|
open crs;
|
|
loop
|
|
fetch crs
|
|
into linie_crs;
|
|
exit when crs%NOTFOUND;
|
|
INSERT INTO PROFORME_SETURI
|
|
(DENUMIRE,
|
|
EXPLICATIE,
|
|
CANTITATE,
|
|
UM,
|
|
SERIE,
|
|
PRET,
|
|
DISCOUNT_UNITAR,
|
|
PRET_CU_TVA)
|
|
VALUES
|
|
(linie_crs.denumire,
|
|
linie_crs.explicatie,
|
|
linie_crs.cantitate,
|
|
linie_crs.um,
|
|
linie_crs.serie,
|
|
linie_crs.pret,
|
|
linie_crs.discount_unitar,
|
|
linie_crs.pret_cu_tva)
|
|
RETURNING ID_PROFORMA_SET INTO V_ID;
|
|
UPDATE VANZARI_DETALII_TEMP
|
|
SET ID_VANZARE_SET = V_ID
|
|
WHERE ID_VANZARE_SET = linie_crs.id_vanzare_set;
|
|
end loop;
|
|
close crs;
|
|
|
|
end scrie_seturi_proforma;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_part_rez(V_ID_PART IN NUMBER) IS
|
|
BEGIN
|
|
pack_facturare.nid_part_rez := V_ID_PART;
|
|
END initializeaza_part_rez;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cumuleaza_note_act IS
|
|
lnInregSumaNot0 NUMBER(10) := 0;
|
|
BEGIN
|
|
-- era apelata la sfarsitul procedurii
|
|
pack_contafin.completeaza_parteneri_gestiuni();
|
|
--IF pack_facturare.ntip = 27 THEN
|
|
pack_contafin.completeaza_analitice();
|
|
--END IF;
|
|
UPDATE ACT_TEMP
|
|
SET STERS = 1, TVA_INCASARE = pack_facturare.ntva_incasare;
|
|
|
|
-- verific daca am vreo inregistrare cu suma <> 0
|
|
-- sterg inregistrarile cu suma 0 doar daca am inregistrari cu suma <> 0
|
|
-- altfel nu se inregistreaza nimic in Reg. Jurnal ACT, doar in RUL si VANZARI/VANZARI_DETALII
|
|
SELECT COUNT(*) INTO lnInregSumaNot0 from ACT_TEMP where SUMA <> 0;
|
|
if lnInregSumaNot0 > 0 then
|
|
DELETE FROM ACT_TEMP
|
|
WHERE SUMA = 0
|
|
AND NOT ((SCD LIKE '4%' OR SCC LIKE '4%') AND SCC NOT LIKE '4427')
|
|
AND ID_SET <> 32003;
|
|
end if;
|
|
|
|
pack_facturare.cumuleaza_note_act_temp();
|
|
|
|
if pack_facturare.ntip <> pack_facturare.nTipNotaPlata then
|
|
pack_facturare.verifica_total_document();
|
|
end if;
|
|
pack_contafin.sterge_analitice_gresite();
|
|
|
|
if pack_facturare.ntip in
|
|
(pack_facturare.nTipFacturaRestaurant, pack_facturare.nTipNotaPlata) then
|
|
pack_contafin.completeaza_analitice_rul();
|
|
pack_contafin.sterge_analitice_gresite_rul();
|
|
end if;
|
|
|
|
pack_facturare.adauga_note_tva_incasare();
|
|
|
|
END cumuleaza_note_act;
|
|
-----------------------------------------------------------
|
|
PROCEDURE cumuleaza_note_act_temp IS
|
|
lcMesaj xmltype;
|
|
BEGIN
|
|
|
|
/* SELECT DBMS_XMLGEN.GETXMLTYPE('SELECT * FROM ACT_TEMP') INTO lcMesaj FROM DUAL;
|
|
|
|
PINFO(lcMesaj.getClobVal(), 'cumuleaza_note_act_temp');*/
|
|
|
|
UPDATE ACT_TEMP SET STERS = 1, ID_ACT = ROWNUM;
|
|
|
|
INSERT INTO ACT_TEMP
|
|
(ID_ACT,
|
|
LUNA,
|
|
AN,
|
|
COD,
|
|
DATAIREG,
|
|
NRACT,
|
|
SERIE_ACT,
|
|
DATAACT,
|
|
EXPLICATIA,
|
|
SCD,
|
|
ASCD,
|
|
SCC,
|
|
ASCC,
|
|
SUMA,
|
|
SUMA_VAL,
|
|
CURS,
|
|
PERECHED,
|
|
PERECHEC,
|
|
DATASCAD,
|
|
NEIMPOZAB,
|
|
NNIR,
|
|
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_FACTD,
|
|
ID_FACTC,
|
|
ID_CTR,
|
|
ID_JTVA_COLOANA,
|
|
TVA_INCASARE,
|
|
TAXCODE,
|
|
PAYMENTCODE)
|
|
SELECT ROW_NUMBER() OVER(ORDER BY A.ID_SET, A.ID_ACT) AS ID_ACT,
|
|
A.LUNA,
|
|
A.AN,
|
|
A.COD,
|
|
A.DATAIREG,
|
|
A.NRACT,
|
|
A.SERIE_ACT,
|
|
A.DATAACT,
|
|
A.EXPLICATIA,
|
|
A.SCD,
|
|
A.ASCD,
|
|
A.SCC,
|
|
A.ASCC,
|
|
(CASE
|
|
WHEN pack_facturare.nin_valuta = 1 AND
|
|
A.ID_VALUTA NOT IN
|
|
(0, pack_facturare.nid_moneda_nationala) THEN
|
|
ROUND(A.SUMA_VAL * A.CURS, pack_sesiune.nzecimale_sumav)
|
|
ELSE
|
|
A.SUMA
|
|
END) AS SUMA,
|
|
A.SUMA_VAL,
|
|
A.CURS,
|
|
A.PERECHED,
|
|
A.PERECHEC,
|
|
A.DATASCAD,
|
|
A.NEIMPOZAB,
|
|
A.NNIR,
|
|
A.ID_RESPONSABIL,
|
|
A.ID_VENCHELT,
|
|
A.ID_SECTIE,
|
|
pack_facturare.nid_set AS ID_SET,
|
|
A.ID_FACT,
|
|
A.ID_PARTD,
|
|
A.ID_PARTC,
|
|
A.ID_SUCURSALA,
|
|
A.ID_FDOC,
|
|
A.EXPLICATIA4,
|
|
A.EXPLICATIA5,
|
|
A.ID_LUCRARE,
|
|
A.ID_GESTIN,
|
|
A.ID_GESTOUT,
|
|
A.ID_VALUTA,
|
|
A.PROC_TVA,
|
|
A.ID_FACTD,
|
|
A.ID_FACTC,
|
|
A.ID_CTR,
|
|
A.ID_JTVA_COLOANA,
|
|
pack_facturare.ntva_incasare as TVA_INCASARE,
|
|
A.TAXCODE,
|
|
A.PAYMENTCODE
|
|
FROM (SELECT MIN(A11.ID_ACT) AS ID_ACT,
|
|
A11.ID_SET,
|
|
A11.LUNA,
|
|
A11.AN,
|
|
A11.COD,
|
|
A11.DATAIREG,
|
|
A11.NRACT,
|
|
A11.SERIE_ACT,
|
|
A11.DATAACT,
|
|
A11.EXPLICATIA,
|
|
A11.SCD,
|
|
A11.ASCD,
|
|
A11.SCC,
|
|
A11.ASCC,
|
|
SUM(A11.SUMA) AS SUMA,
|
|
SUM(A11.SUMA_VAL) AS SUMA_VAL,
|
|
A11.CURS,
|
|
A11.PERECHED,
|
|
A11.PERECHEC,
|
|
A11.DATASCAD,
|
|
A11.NEIMPOZAB,
|
|
A11.NNIR,
|
|
DECODE(pack_facturare.ntip,
|
|
2,
|
|
NVL(A12.ID_RESPONSABIL, A11.ID_RESPONSABIL),
|
|
A11.ID_RESPONSABIL) AS ID_RESPONSABIL,
|
|
A11.ID_VENCHELT,
|
|
A11.ID_SECTIE,
|
|
A11.ID_FACT,
|
|
A11.ID_PARTD,
|
|
A11.ID_PARTC,
|
|
A11.ID_SUCURSALA,
|
|
A11.ID_FDOC,
|
|
A11.EXPLICATIA4,
|
|
A11.EXPLICATIA5,
|
|
A11.ID_LUCRARE,
|
|
A11.ID_GESTIN,
|
|
A11.ID_GESTOUT,
|
|
A11.ID_VALUTA,
|
|
(CASE
|
|
WHEN A11.ID_JTVA_COLOANA IS NOT NULL THEN
|
|
A11.PROC_TVA
|
|
ELSE
|
|
0
|
|
END) AS PROC_TVA,
|
|
A11.ID_FACTD,
|
|
A11.ID_FACTC,
|
|
A11.ID_CTR,
|
|
A11.ID_JTVA_COLOANA,
|
|
A11.TAXCODE,
|
|
A11.PAYMENTCODE
|
|
FROM ACT_TEMP A11
|
|
LEFT JOIN CONTRACTE A12
|
|
ON A11.ID_CTR = A12.ID_CTR
|
|
GROUP BY A11.LUNA,
|
|
A11.AN,
|
|
A11.COD,
|
|
A11.DATAIREG,
|
|
A11.SERIE_ACT,
|
|
A11.NRACT,
|
|
A11.DATAACT,
|
|
A11.EXPLICATIA,
|
|
A11.SCD,
|
|
A11.ASCD,
|
|
A11.SCC,
|
|
A11.ASCC,
|
|
A11.PERECHED,
|
|
A11.PERECHEC,
|
|
A11.DATASCAD,
|
|
A11.NEIMPOZAB,
|
|
A11.NNIR,
|
|
A11.ID_SET,
|
|
DECODE(pack_facturare.ntip,
|
|
2,
|
|
NVL(A12.ID_RESPONSABIL, A11.ID_RESPONSABIL),
|
|
A11.ID_RESPONSABIL),
|
|
A11.ID_VENCHELT,
|
|
A11.ID_SECTIE,
|
|
A11.ID_SET,
|
|
A11.ID_FACT,
|
|
A11.ID_PARTD,
|
|
A11.ID_PARTC,
|
|
A11.ID_SUCURSALA,
|
|
A11.ID_FDOC,
|
|
A11.EXPLICATIA4,
|
|
A11.EXPLICATIA5,
|
|
A11.ID_LUCRARE,
|
|
A11.ID_GESTIN,
|
|
A11.ID_GESTOUT,
|
|
A11.ID_VALUTA,
|
|
A11.CURS,
|
|
A11.PROC_TVA,
|
|
A11.ID_FACTD,
|
|
A11.ID_FACTC,
|
|
A11.ID_CTR,
|
|
A11.ID_JTVA_COLOANA,
|
|
A11.TAXCODE,
|
|
A11.PAYMENTCODE) A;
|
|
|
|
/* SELECT DBMS_XMLGEN.GETXMLTYPE('SELECT * FROM ACT_TEMP') INTO lcMesaj FROM DUAL;
|
|
PINFO(lcMesaj.getClobVal(), 'cumuleaza_note_act_temp');
|
|
*/
|
|
|
|
DELETE FROM ACT_TEMP WHERE STERS = 1;
|
|
END cumuleaza_note_act_temp;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cursor_verificare(V_CURSOR_VERIFICARE OUT pack_facturare.cursor_facturare) 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,
|
|
jtva.denumire as explicatie_tva,
|
|
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,
|
|
a.taxcode,
|
|
st.descriere as saft_descriere,
|
|
st.procent_taxa as saft_procent,
|
|
st.taxname,
|
|
a.paymentcode,
|
|
sp.methodcode,
|
|
sp.name as paymentmechanism,
|
|
sp.methodname as paymentmethod,
|
|
sp.paymentname
|
|
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
|
|
LEFT JOIN jtva_coloane jtva
|
|
ON a.id_jtva_coloana = jtva.id_jtva_coloana
|
|
left join vsaft_taxtable st
|
|
on a.taxcode = st.taxcode
|
|
left join vsaft_mecanisme_plati sp
|
|
on a.paymentcode = sp.mechanismcode
|
|
WHERE A.STERS = 0;
|
|
END cursor_verificare;
|
|
-------------------------------------------------------------------
|
|
-- MODIFICA NUMAR, DATA, DATA_SCAD si in restul tabelelor
|
|
-------------------------------------------------------------------
|
|
PROCEDURE modifica_date_factura(V_ID_VANZARE IN NUMBER,
|
|
V_ID_RUTA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_FACTURARE IN VANZARI.ID_FACTURARE%TYPE,
|
|
V_LISTARE_DETALIATA IN VANZARI.LISTARE_DETALIATA%TYPE,
|
|
V_TEXT_ADITIONAL IN VANZARI.TEXT_ADITIONAL%TYPE,
|
|
V_TIP_SAFT IN VANZARI.TIP_SAFT%TYPE DEFAULT NULL,
|
|
V_EFACTURA IN VANZARI.EFACTURA%TYPE DEFAULT NULL,
|
|
V_DATA_ACT IN VANZARI.DATA_ACT%TYPE DEFAULT NULL,
|
|
V_DATA_SCAD IN VANZARI.DATA_SCAD%TYPE DEFAULT NULL,
|
|
V_NUMAR_ACT IN VANZARI.NUMAR_ACT%TYPE DEFAULT NULL,
|
|
V_SERIE_ACT IN VANZARI.SERIE_ACT%TYPE DEFAULT NULL) IS
|
|
lnIdFact VANZARI.ID_FACT%TYPE;
|
|
lnNrAct VANZARI.NUMAR_ACT%TYPE;
|
|
ldDataAct VANZARI.DATA_ACT%TYPE;
|
|
ldDataScad VANZARI.DATA_SCAD%TYPE;
|
|
lcSerieAct VANZARI.SERIE_ACT%TYPE;
|
|
BEGIN
|
|
UPDATE VANZARI
|
|
SET ID_RUTA = V_ID_RUTA,
|
|
ID_DELEGAT = V_ID_DELEGAT,
|
|
ID_AGENT = V_ID_AGENT,
|
|
ID_MASINA = V_ID_MASINA,
|
|
DATAORA_EXP = V_DATAORA_EXP,
|
|
ID_FACTURARE = V_ID_FACTURARE,
|
|
LISTARE_DETALIATA = NVL(V_LISTARE_DETALIATA, 0),
|
|
TEXT_ADITIONAL = V_TEXT_ADITIONAL,
|
|
TIP_SAFT = V_TIP_SAFT,
|
|
EFACTURA = V_EFACTURA
|
|
WHERE ID_VANZARE = V_ID_VANZARE;
|
|
|
|
select id_fact, numar_act, data_act, data_scad, serie_act into lnIdFact, lnNrAct, ldDataAct, ldDataScad, lcSerieAct from vanzari where ID_VANZARE = V_ID_VANZARE;
|
|
|
|
IF V_SERIE_ACT IS NOT NULL AND V_SERIE_ACT <> NVL(lcSerieAct, '') THEN
|
|
UPDATE VANZARI SET SERIE_ACT = V_SERIE_ACT WHERE ID_VANZARE = V_ID_VANZARE;
|
|
UPDATE DOCUMENTE SET SERIE_ACT = V_SERIE_ACT WHERE ID_DOC = lnIdFact;
|
|
UPDATE ACT SET SERIE_ACT = V_SERIE_ACT WHERE ID_FACT = lnIdFact;
|
|
UPDATE IREG_PARTENERI SET SERIE_ACT = V_SERIE_ACT WHERE ID_FACT = lnIdFact;
|
|
UPDATE JV2007 SET SERIE_ACT = V_SERIE_ACT WHERE ID_FACT = lnIdFact;
|
|
UPDATE RUL SET SERIE_ACT = V_SERIE_ACT WHERE ID_FACT = lnIdFact;
|
|
END IF;
|
|
|
|
|
|
IF V_NUMAR_ACT IS NOT NULL AND V_NUMAR_ACT <> NVL(lnNrAct, 0) THEN
|
|
UPDATE VANZARI SET NUMAR_ACT = V_NUMAR_ACT WHERE ID_VANZARE = V_ID_VANZARE;
|
|
UPDATE DOCUMENTE SET NRACT = V_NUMAR_ACT WHERE ID_DOC = lnIdFact;
|
|
UPDATE ACT SET NRACT = V_NUMAR_ACT WHERE ID_FACT = lnIdFact;
|
|
UPDATE IREG_PARTENERI SET NRACT = V_NUMAR_ACT WHERE ID_FACT = lnIdFact;
|
|
UPDATE JV2007 SET NRACT = V_NUMAR_ACT WHERE ID_FACT = lnIdFact;
|
|
UPDATE RUL SET NRACT = V_NUMAR_ACT WHERE ID_FACT = lnIdFact;
|
|
END IF;
|
|
|
|
IF V_DATA_ACT IS NOT NULL and V_DATA_ACT <> NVL(ldDataAct, SYSDATE) THEN
|
|
UPDATE VANZARI SET DATA_ACT = V_DATA_ACT WHERE ID_VANZARE = V_ID_VANZARE;
|
|
UPDATE DOCUMENTE SET DATAACT = V_DATA_ACT WHERE ID_DOC = lnIdFact;
|
|
UPDATE ACT SET DATAACT = V_DATA_ACT WHERE ID_FACT = lnIdFact;
|
|
UPDATE IREG_PARTENERI SET DATAACT = V_DATA_ACT WHERE ID_FACT = lnIdFact;
|
|
UPDATE JV2007 SET DATAACT = V_DATA_ACT WHERE ID_FACT = lnIdFact;
|
|
UPDATE RUL SET DATAACT = V_DATA_ACT, DATAOUT = V_DATA_ACT WHERE ID_FACT = lnIdFact;
|
|
END IF;
|
|
|
|
IF V_DATA_SCAD IS NOT NULL and V_DATA_SCAD <> NVL(ldDataScad, sysdate) THEN
|
|
UPDATE VANZARI SET DATA_SCAD = V_DATA_SCAD WHERE ID_VANZARE = V_ID_VANZARE;
|
|
UPDATE ACT SET DATASCAD = V_DATA_SCAD WHERE ID_FACT = lnIdFact;
|
|
UPDATE IREG_PARTENERI SET DATASCAD = V_DATA_SCAD WHERE ID_FACT = lnIdFact;
|
|
END IF;
|
|
|
|
END modifica_date_factura;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE modifica_explicatie_articol(V_ID_VANZARE_DET IN NUMBER,
|
|
V_EXPLICATIE IN VARCHAR2,
|
|
V_ID_UTIL IN NUMBER,
|
|
V_TAXCODE IN NUMBER DEFAULT NULL) is
|
|
BEGIN
|
|
UPDATE VANZARI_DETALII
|
|
SET EXPLICATIE = V_EXPLICATIE, TAXCODE = V_TAXCODE
|
|
WHERE ID_VANZARE_DET = V_ID_VANZARE_DET;
|
|
END modifica_explicatie_articol;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE initializeaza_moneda_nationala IS
|
|
BEGIN
|
|
pack_facturare.nid_moneda_nationala := pack_def.GetIdMonedaNationala();
|
|
END initializeaza_moneda_nationala;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_cursuri_proforma(V_ID_PROFORMA IN NUMBER) IS
|
|
BEGIN
|
|
INSERT INTO PROFORME_CURSURI
|
|
(ID_PROFORMA, ID_VALUTA, CURS, MULTIPLICATOR)
|
|
SELECT DISTINCT V_ID_PROFORMA AS ID_PROFORMA,
|
|
ID_VALUTA,
|
|
CURS,
|
|
MULTIPLICATOR
|
|
FROM VANZARI_DETALII_TEMP
|
|
WHERE ID_VALUTA <> pack_facturare.nid_moneda_nationala;
|
|
END scrie_cursuri_proforma;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_cursuri(V_ID_VANZARE IN NUMBER) IS
|
|
BEGIN
|
|
INSERT INTO VANZARI_CURSURI
|
|
(ID_VANZARE, ID_VALUTA, CURS, MULTIPLICATOR)
|
|
SELECT DISTINCT V_ID_VANZARE AS ID_VANZARE,
|
|
ID_VALUTA,
|
|
CURS,
|
|
MULTIPLICATOR
|
|
FROM VANZARI_DETALII_TEMP
|
|
WHERE ID_VALUTA <> pack_facturare.nid_moneda_nationala;
|
|
END scrie_cursuri;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_rate_factura(V_DATAORA IN DATE) IS
|
|
BEGIN
|
|
INSERT INTO CTR_RATE_FACTURI
|
|
(ID_RATA,
|
|
ID_FACT,
|
|
VALVALUTA,
|
|
VALVALUTACTVA,
|
|
PROCTVA,
|
|
ID_VALUTA,
|
|
CURS,
|
|
ID_UTIL,
|
|
DATAORA)
|
|
SELECT A.ID_RATA,
|
|
B.ID_FACT,
|
|
pack_facturare.calculeaza_total_fara_tva(A.PRET,
|
|
A.DIFERENTA,
|
|
1,
|
|
A.DISCOUNT_UNITAR,
|
|
pack_facturare.ndiscount_evidentiat,
|
|
A.CANTITATE,
|
|
A.PRET_CU_TVA,
|
|
A.PROC_TVAV,
|
|
pack_sesiune.nzecimale_pretvval,
|
|
pack_sesiune.nzecimale_sumaval) as VALVALUTA,
|
|
pack_facturare.calculeaza_total_cu_tva(A.PRET,
|
|
A.DIFERENTA,
|
|
1,
|
|
A.DISCOUNT_UNITAR,
|
|
pack_facturare.ndiscount_evidentiat,
|
|
A.CANTITATE,
|
|
A.PRET_CU_TVA,
|
|
A.PROC_TVAV,
|
|
pack_sesiune.nzecimale_pretvval,
|
|
pack_sesiune.nzecimale_sumaval) as VALVALUTACTVA,
|
|
(A.PROC_TVAV - 1) * 100 AS PROC_TVAV,
|
|
A.ID_VALUTA,
|
|
A.CURS / NVL(A.MULTIPLICATOR, 1) AS CURS,
|
|
pack_facturare.nid_util as ID_UTIL,
|
|
V_DATAORA as DATAORA
|
|
FROM VANZARI_DETALII_TEMP A
|
|
LEFT JOIN (SELECT DISTINCT ID_FACT, ID_CTR
|
|
FROM ACT_TEMP
|
|
WHERE STERS = 0
|
|
AND SCD LIKE '4%') B
|
|
ON A.ID_CTR = B.ID_CTR
|
|
WHERE A.ID_RATA IS NOT NULL;
|
|
|
|
END scrie_rate_factura;
|
|
-------------------------------------------------------------------
|
|
FUNCTION calculeaza_k RETURN NUMBER IS
|
|
BEGIN
|
|
RETURN 0;
|
|
END calculeaza_k;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE calculeaza_pret(V_PRET_UNITAR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_TIP IN NUMBER,
|
|
V_PRET_FARA_TVA OUT NUMBER,
|
|
V_PRET_TVA OUT NUMBER,
|
|
V_PRET_CU_TVA OUT NUMBER) IS
|
|
BEGIN
|
|
V_PRET_FARA_TVA := pack_sesiune.calculeaza_pret_fara_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip);
|
|
V_PRET_TVA := pack_sesiune.calculeaza_pret_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip);
|
|
V_PRET_CU_TVA := pack_sesiune.calculeaza_pret_cu_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip);
|
|
END calculeaza_pret;
|
|
-------------------------------------------------------------------
|
|
/* function calculeaza_pret_fara_tva(V_PRET_UNITAR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_TIP IN NUMBER) return number IS
|
|
BEGIN
|
|
|
|
return pack_sesiune.calculeaza_pret_fara_tva(V_PRET_UNITAR,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVA,
|
|
V_PRET_ARE_TVA, V_TIP);
|
|
END calculeaza_pret_fara_tva;*/
|
|
|
|
-------------------------------------------------------------------
|
|
/* function calculeaza_pret_TVA(V_PRET_UNITAR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_TIP IN NUMBER) return NUMBER IS
|
|
V_PRET_TVA number := 0;
|
|
BEGIN
|
|
return pack_sesiune.calculeaza_pret_TVA(V_PRET_UNITAR,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVA,
|
|
V_PRET_ARE_TVA);
|
|
END calculeaza_pret_TVA;*/
|
|
-------------------------------------------------------------------
|
|
/* function calculeaza_pret_cu_tva(V_PRET_UNITAR IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER) RETURN NUMBER IS
|
|
BEGIN
|
|
return pack_sesiune.calculeaza_pret_cu_tva(V_PRET_UNITAR,
|
|
V_CURS,
|
|
V_ID_VALUTA,
|
|
V_PROC_TVA,
|
|
V_PRET_ARE_TVA);
|
|
END calculeaza_pret_cu_tva;*/
|
|
-------------------------------------------------------------------
|
|
PROCEDURE calculeaza_sume(V_PRET_UNITAR IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_ZECIMALE_PRET IN NUMBER,
|
|
V_ZECIMALE_SUMA IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_ID_VALUTA IN NUMBER,
|
|
V_PROC_TVA IN NUMBER,
|
|
V_PRET_ARE_TVA IN NUMBER,
|
|
V_SUMA_FARA_TVA OUT NUMBER,
|
|
V_SUMA_TVA OUT NUMBER,
|
|
V_SUMA_CU_TVA OUT NUMBER) IS
|
|
V_CURS_NOU NUMBER;
|
|
BEGIN
|
|
IF NVL(V_CURS, 0) = 0 THEN
|
|
V_CURS_NOU := 1;
|
|
ELSE
|
|
V_CURS_NOU := V_CURS;
|
|
END IF;
|
|
V_SUMA_FARA_TVA := pack_facturare.calculeaza_total_fara_tva(V_PRET => V_PRET_UNITAR,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => V_CURS_NOU,
|
|
V_DISCOUNT_UNITAR => (CASE
|
|
pack_facturare.ndiscount_evidentiat
|
|
WHEN 0 THEN
|
|
V_DISCOUNT_UNITAR
|
|
ELSE
|
|
0
|
|
END),
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVA,
|
|
V_ZECIMALE_PRET => V_ZECIMALE_PRET,
|
|
V_ZECIMALE_SUMA => V_ZECIMALE_SUMA);
|
|
V_SUMA_TVA := pack_facturare.calculeaza_total_tva(V_PRET => V_PRET_UNITAR,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => V_CURS_NOU,
|
|
V_DISCOUNT_UNITAR => (CASE
|
|
pack_facturare.ndiscount_evidentiat
|
|
WHEN 0 THEN
|
|
V_DISCOUNT_UNITAR
|
|
ELSE
|
|
0
|
|
END),
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVA,
|
|
V_ZECIMALE_PRET => V_ZECIMALE_PRET,
|
|
V_ZECIMALE_SUMA => V_ZECIMALE_SUMA);
|
|
V_SUMA_CU_TVA := pack_facturare.calculeaza_total_cu_tva(V_PRET => V_PRET_UNITAR,
|
|
V_AJUSTARE => 0,
|
|
V_CURS => V_CURS_NOU,
|
|
V_DISCOUNT_UNITAR => (CASE
|
|
pack_facturare.ndiscount_evidentiat
|
|
WHEN 0 THEN
|
|
V_DISCOUNT_UNITAR
|
|
ELSE
|
|
0
|
|
END),
|
|
V_DISCOUNT_EVIDENTIAT => pack_facturare.ndiscount_evidentiat,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_ARE_TVA,
|
|
V_PROC_TVAV => V_PROC_TVA,
|
|
V_ZECIMALE_PRET => V_ZECIMALE_PRET,
|
|
V_ZECIMALE_SUMA => V_ZECIMALE_SUMA);
|
|
|
|
END calculeaza_sume;
|
|
-------------------------------------------------------------------
|
|
/* PROCEDURE finalizeaza_factura(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER) IS
|
|
lnIdFacturare NUMBER(10) := null;
|
|
lnListareDetaliata NUMBER(1) := 0;
|
|
begin
|
|
pack_facturare.finalizeaza_factura(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
lnIdFacturare,
|
|
lnListareDetaliata,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_PARAMETRU_ADITIONAL);
|
|
end;
|
|
*/
|
|
-------------------------------------------------------------------
|
|
PROCEDURE finalizeaza_factura(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER) IS
|
|
V_DATAORA DATE := SYSDATE;
|
|
lnIdFact vanzari.id_fact%type;
|
|
lnIdFact2 vanzari.id_fact%type;
|
|
BEGIN
|
|
pack_facturare.nid_vanzare := NULL;
|
|
|
|
pack_facturare.initializeaza_scriere_actrul(V_DATAORA);
|
|
|
|
pack_facturare.scrie_in_vanzari(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
pack_facturare.nid_vanzare);
|
|
|
|
pack_facturare.finalizeaza_scriere_actrul();
|
|
|
|
-- completez id_fact dupa generarea id_fact la scrierea in contabilitate
|
|
-- daca este factura cu incasare, pack_contafin.id_fact este id_fact-ul documentului de incasare, nu id_fact-ul facturii
|
|
lnIdFact := pack_contafin.get_idFact();
|
|
select min(id_fact)
|
|
into lnIdFact2
|
|
from act
|
|
where cod in (select cod
|
|
from act
|
|
where id_fact = lnIdFact
|
|
and sters = 0)
|
|
and scd not like '5%';
|
|
if lnIdFact <> lnIdFact2 then
|
|
lnIdFact := lnIdFact2;
|
|
end if;
|
|
|
|
update vanzari
|
|
set id_fact = lnIdFact
|
|
where id_vanzare = pack_facturare.nid_vanzare;
|
|
|
|
CASE
|
|
WHEN V_PARAMETRU_ADITIONAL = 1 AND
|
|
pack_facturare.ntip IN (3, 21, 25, 28, 42, 47) THEN
|
|
-- daca e comanda, atunci V_PARAMETRU_ADITIONAL este V_INCHIDERE_COMANDA
|
|
pack_facturare.inchide_comanda();
|
|
WHEN pack_facturare.ntip = 4 THEN
|
|
-- daca e facturare din aviz, atunci V_PARAMETRU_ADITIONAL este V_VERIFICARE_FACTURAT
|
|
pack_facturare.scrie_cantitati_vanzari_avize;
|
|
pack_facturare.scrie_corespondente_vanzari(1);
|
|
pack_facturare.marcheaza_facturat(V_PARAMETRU_ADITIONAL);
|
|
WHEN pack_facturare.ntip = 24 THEN
|
|
-- daca e aviz de retur, atunci V_PARAMETRU_ADITIONAL este V_VERIFICARE_FACTURAT ( = 0 )
|
|
pack_facturare.scrie_corespondente_vanzari(2);
|
|
pack_facturare.marcheaza_facturat(V_PARAMETRU_ADITIONAL);
|
|
WHEN pack_facturare.ntip in ( 2, 6, 52) THEN
|
|
pack_facturare.scrie_rate_factura(V_DATAORA);
|
|
WHEN pack_facturare.ntip in (8, 9) THEN
|
|
-- daca e factura de retur
|
|
pack_facturare.scrie_corespondente_vanzari(3);
|
|
ELSE
|
|
dbms_output.put_line('---');
|
|
END CASE;
|
|
|
|
IF pack_facturare.nid_set =
|
|
25000 + pack_facturare.nTipFacturaRestaurant - 1 +
|
|
pack_facturare.nscadere_stoc * 10 AND
|
|
to_number(pack_sesiune.getoptiunefirma('DESCARCAREGESTZ')) = 1 THEN
|
|
pack_grestaurant.descarcare_automata_zi(pack_facturare.ddata_act,
|
|
pack_facturare.nid_vanzare,
|
|
NULL,
|
|
NULL,
|
|
pack_facturare.nid_sucursala,
|
|
pack_facturare.nid_util);
|
|
END IF;
|
|
END finalizeaza_factura;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE finalizeaza_avize_lucrare(V_DISCOUNT_FACTURA IN NUMBER) IS
|
|
V_DATAORA DATE := SYSDATE;
|
|
V_ID_DELEGAT VANZARI.ID_DELEGAT%TYPE;
|
|
V_ID_MASINA VANZARI.ID_MASINA%TYPE;
|
|
V_ID_AGENT VANZARI.ID_AGENT%TYPE;
|
|
V_ID_RUTA VANZARI.ID_RUTA%TYPE;
|
|
V_COD VANZARI.COD%TYPE;
|
|
i NUMBER(10);
|
|
V_NUME_GESTIUNE NOM_GESTIUNI.NUME_GESTIUNE%TYPE;
|
|
|
|
TYPE tab_vanzari_type IS TABLE OF vanzari_temp%ROWTYPE;
|
|
tab_vanz tab_vanzari_type;
|
|
|
|
lnDiscountTVA VANZARI.DISCOUNT_TVA%TYPE;
|
|
lnValoareAchizitie VANZARI.VALOARE_ACHIZITIE%TYPE;
|
|
lnSerieIncasat ACT.SERIE_ACT%TYPE;
|
|
lnNrIncasat ACT.NRACT%TYPE;
|
|
lnSumaIncasat ACT.SUMA%TYPE;
|
|
lnTipIncasat NUMBER(2);
|
|
lnTotalFaraTVA VANZARI.TOTAL_FARA_TVA%TYPE;
|
|
lnTotalTVA VANZARI.TOTAL_TVA%TYPE;
|
|
lnTotalCuTVA VANZARI.TOTAL_CU_TVA%TYPE;
|
|
lnIdGestiune VANZARI.ID_GESTIUNE%TYPE;
|
|
lnIdValuta VANZARI.Id_Valuta%TYPE;
|
|
lnCurs VANZARI.CURS%TYPE;
|
|
lnMultiplicator VANZARI.MULTIPLICATOR%TYPE;
|
|
BEGIN
|
|
pack_facturare.nid_vanzare := NULL;
|
|
-- nu se mai genereaza codul la initializare, trebuie sa-l generez la fiecare document
|
|
-- pana acum aveam conditia sa-l genereze doar de la i > 1
|
|
pack_facturare.initializeaza_scriere_actrul(V_DATAORA, 0);
|
|
|
|
SELECT * BULK COLLECT INTO tab_vanz FROM VANZARI_TEMP;
|
|
|
|
FOR I IN tab_vanz.first .. tab_vanz.last LOOP
|
|
|
|
V_COD := pack_contafin.GENEREAZA_COD(user);
|
|
|
|
BEGIN
|
|
SELECT ID_DELEGAT, ID_MASINA, ID_AGENT, ID_RUTA
|
|
INTO V_ID_DELEGAT, V_ID_MASINA, V_ID_AGENT, V_ID_RUTA
|
|
FROM FACT_NOM_RUTE
|
|
WHERE ID_RUTA IN (SELECT ID_RUTA
|
|
FROM FACT_NOM_RUTEGEST
|
|
WHERE ID_GESTIUNE = tab_vanz(i).id_gestiune_dest
|
|
AND STERS = 0)
|
|
AND STERS = 0;
|
|
EXCEPTION
|
|
WHEN TOO_MANY_ROWS THEN
|
|
SELECT NUME_GESTIUNE
|
|
INTO V_NUME_GESTIUNE
|
|
FROM NOM_GESTIUNI
|
|
WHERE ID_GESTIUNE = tab_vanz(i).id_gestiune_dest;
|
|
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Pentru gestiunea ' || V_NUME_GESTIUNE ||
|
|
' aveti configurate mai multe rute! (FACT-023)');
|
|
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_DELEGAT := NULL;
|
|
V_ID_MASINA := NULL;
|
|
V_ID_AGENT := NULL;
|
|
V_ID_RUTA := NULL;
|
|
END;
|
|
|
|
INSERT INTO VANZARI
|
|
(id_util,
|
|
dataora,
|
|
numar_act,
|
|
serie_act,
|
|
id_lucrare,
|
|
id_comanda,
|
|
tip,
|
|
id_gestiune,
|
|
cod,
|
|
data_act,
|
|
discount,
|
|
discount_evidentiat,
|
|
id_delegat,
|
|
id_masina,
|
|
id_agent,
|
|
id_ruta,
|
|
id_sucursala,
|
|
id_sectie)
|
|
VALUES
|
|
(pack_facturare.nid_util,
|
|
V_DATAORA,
|
|
tab_vanz (i).numar_act,
|
|
pack_facturare.cserie_act,
|
|
tab_vanz (i).id_lucrare,
|
|
tab_vanz (i).id_comanda,
|
|
pack_facturare.ntip,
|
|
tab_vanz (i).id_gestiune_dest,
|
|
V_COD,
|
|
pack_facturare.ddata_act,
|
|
V_DISCOUNT_FACTURA,
|
|
pack_facturare.ndiscount_evidentiat,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_AGENT,
|
|
V_ID_RUTA,
|
|
pack_facturare.nid_sucursala,
|
|
pack_facturare.nid_sectie_stoc)
|
|
RETURNING ID_VANZARE INTO pack_facturare.nid_vanzare;
|
|
|
|
pack_facturare.scrie_cursuri(pack_facturare.nid_vanzare);
|
|
|
|
INSERT /*+ APPEND */
|
|
INTO VANZARI_DETALII
|
|
(ID_VANZARE,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_POL,
|
|
CANTITATE,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
PRET,
|
|
PROC_TVAV,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
ID_VALUTA,
|
|
CONT,
|
|
PRET_CU_TVA,
|
|
ID_JTVA_COLOANA)
|
|
SELECT pack_facturare.nid_vanzare as ID_VANZARE,
|
|
ID_ARTICOL,
|
|
SERIE,
|
|
ID_POL,
|
|
CANTITATE,
|
|
PRET_ACHIZITIE,
|
|
PRETD,
|
|
ID_VALUTAD,
|
|
PRET,
|
|
PROC_TVAV,
|
|
DISCOUNT_UNITAR,
|
|
ID_GESTIUNE,
|
|
ID_VALUTA,
|
|
CONT,
|
|
PRET_CU_TVA,
|
|
ID_JTVA_COLOANA
|
|
FROM VANZARI_DETALII_TEMP
|
|
WHERE ID_COMANDA = tab_vanz(i).id_comanda
|
|
AND NUMAR_ACT = tab_vanz(i).numar_act
|
|
ORDER BY ID_TEMP;
|
|
|
|
UPDATE RUL_TEMP SET COD = V_COD WHERE nract = tab_vanz(i).numar_act;
|
|
UPDATE ACT_TEMP SET COD = V_COD WHERE nract = tab_vanz(i).numar_act;
|
|
|
|
-- Completare totaluri in vanzari din vanzari_detalii pentru a usura selectiile din fact_vfacturi
|
|
begin
|
|
select DISC_TVA AS DISCOUNT_TVA,
|
|
VALOARE_ACHIZITIE,
|
|
decode(a.in_valuta,
|
|
1,
|
|
ROUND(a.curs * (a.suma_fara_tva - a.disc_fara_tva) /
|
|
a.multiplicator,
|
|
pack_sesiune.getOptiuneFirma('PC')),
|
|
a.suma_fara_tva - a.disc_fara_tva) as TOTAL_FARA_TVA,
|
|
decode(a.in_valuta,
|
|
1,
|
|
ROUND(a.curs * (a.suma_tva - a.disc_tva) /
|
|
a.multiplicator,
|
|
pack_sesiune.getOptiuneFirma('PC')),
|
|
a.suma_tva - a.disc_tva) as TOTAL_TVA,
|
|
decode(a.in_valuta,
|
|
1,
|
|
ROUND(a.curs * (a.suma_fara_tva - a.disc_fara_tva) /
|
|
a.multiplicator,
|
|
pack_sesiune.getOptiuneFirma('PC')),
|
|
a.suma_fara_tva - a.disc_fara_tva) +
|
|
decode(a.in_valuta,
|
|
1,
|
|
ROUND(a.curs * (a.suma_tva - a.disc_tva) /
|
|
a.multiplicator,
|
|
pack_sesiune.getOptiuneFirma('PC')),
|
|
a.suma_tva - a.disc_tva) as TOTAL_CU_TVA,
|
|
pack_facturare.cserie_act_incasare as SERIE_INCASAT,
|
|
pack_facturare.nnumar_act_incasare as NR_INCASAT,
|
|
pack_facturare.nsuma_incasare AS SUMA_INCASAT,
|
|
pack_facturare.ntip_doc_incasare as TIP_INCASAT,
|
|
a.id_valuta,
|
|
a.curs,
|
|
a.multiplicator
|
|
INTO lnDiscountTVA,
|
|
lnValoareAchizitie,
|
|
lnTotalFaraTVA,
|
|
lnTotalTVA,
|
|
lnTotalCuTVA,
|
|
lnSerieIncasat,
|
|
lnNrIncasat,
|
|
lnSumaIncasat,
|
|
lnTipIncasat,
|
|
lnIdValuta,
|
|
lnCurs,
|
|
lnMultiplicator
|
|
FROM (select NVL(V_DISCOUNT_FACTURA, 0) as DISC_FARA_TVA,
|
|
pack_facturare.nin_valuta AS IN_VALUTA,
|
|
ROUND(NVL(V_DISCOUNT_FACTURA, 0) *
|
|
max(vd.proc_tvav - 1),
|
|
pack_sesiune.getOptiuneFirma('PPRETV')) as DISC_TVA,
|
|
sum(pack_facturare.calculeaza_total_fara_tva_fact(vd.pret /
|
|
decode(pack_facturare.nin_valuta,
|
|
1,
|
|
1,
|
|
NVL(vc.multiplicator,
|
|
1)),
|
|
decode(pack_facturare.nin_valuta,
|
|
1,
|
|
0,
|
|
vd.diferenta),
|
|
decode(pack_facturare.nin_valuta,
|
|
1,
|
|
1,
|
|
NVL(vc.curs,
|
|
1)),
|
|
NVL(vd.discount_unitar,
|
|
0) /
|
|
decode(pack_facturare.nin_valuta,
|
|
1,
|
|
1,
|
|
NVL(vc.multiplicator,
|
|
1)),
|
|
pack_facturare.ndiscount_evidentiat,
|
|
vd.cantitate,
|
|
vd.pret_cu_tva,
|
|
vd.proc_tvav)) AS SUMA_FARA_TVA,
|
|
sum(pack_facturare.calculeaza_total_tva_fact(vd.pret /
|
|
decode(pack_facturare.nin_valuta,
|
|
1,
|
|
1,
|
|
NVL(vc.multiplicator,
|
|
1)),
|
|
decode(pack_facturare.nin_valuta,
|
|
1,
|
|
0,
|
|
vd.diferenta),
|
|
decode(pack_facturare.nin_valuta,
|
|
1,
|
|
1,
|
|
NVL(vc.curs,
|
|
1)),
|
|
NVL(vd.discount_unitar,
|
|
0) /
|
|
decode(pack_facturare.nin_valuta,
|
|
1,
|
|
1,
|
|
NVL(vc.multiplicator,
|
|
1)),
|
|
pack_facturare.ndiscount_evidentiat,
|
|
vd.cantitate,
|
|
vd.pret_cu_tva,
|
|
vd.proc_tvav)) as SUMA_TVA,
|
|
sum(round(vd.cantitate * vd.pret_achizitie,
|
|
pack_sesiune.getOptiuneFirma('PC'))) AS VALOARE_ACHIZITIE,
|
|
max(decode(pack_facturare.nin_valuta,
|
|
1,
|
|
vc.id_valuta,
|
|
0)) as id_valuta,
|
|
max(decode(pack_facturare.nin_valuta, 1, vc.curs, 1)) as curs,
|
|
max(decode(pack_facturare.nin_valuta,
|
|
1,
|
|
vc.multiplicator,
|
|
1)) as multiplicator
|
|
from (select a.id_vanzare_set,
|
|
a.pret,
|
|
a.proc_tvav,
|
|
a.cantitate,
|
|
a.diferenta,
|
|
a.discount_unitar,
|
|
a.id_valuta,
|
|
a.pret_cu_tva,
|
|
a.pret_achizitie
|
|
FROM VANZARI_DETALII_TEMP a
|
|
WHERE a.ID_COMANDA = tab_vanz(i).id_comanda
|
|
AND a.NUMAR_ACT = tab_vanz(i).numar_act
|
|
and nvl(a.id_vanzare_set, 0) = 0
|
|
union all
|
|
select b.id_vanzare_set,
|
|
b.pret,
|
|
max(c.proc_tvav) as proc_tvav,
|
|
b.cantitate,
|
|
0 as diferenta,
|
|
b.discount_unitar,
|
|
decode(pack_facturare.nin_valuta,
|
|
0,
|
|
pack_def.GetIdMonedaNationala(),
|
|
c.id_valuta) as id_valuta,
|
|
b.pret_cu_tva,
|
|
sum(decode(b.cantitate,
|
|
0,
|
|
0,
|
|
c.pret_achizitie * c.cantitate /
|
|
b.cantitate)) as pret_achizitie
|
|
from vanzari_detalii_temp c
|
|
left join vanzari_seturi b
|
|
on b.id_vanzare_set = c.id_vanzare_set
|
|
WHERE nvl(c.id_vanzare_set, 0) <> 0
|
|
and c.ID_COMANDA = tab_vanz(i).id_comanda
|
|
AND c.NUMAR_ACT = tab_vanz(i).numar_act
|
|
and nvl(pack_facturare.nin_valuta, -1) > -1
|
|
group by b.id_vanzare_set,
|
|
b.pret,
|
|
b.cantitate,
|
|
b.discount_unitar,
|
|
b.pret_cu_tva,
|
|
decode(pack_facturare.nin_valuta,
|
|
0,
|
|
pack_def.GetIdMonedaNationala(),
|
|
c.id_valuta)) vd
|
|
left join vanzari_cursuri vc
|
|
on vc.id_vanzare = pack_facturare.nid_vanzare
|
|
and vd.id_valuta = vc.id_valuta) a;
|
|
|
|
update vanzari
|
|
set discount_tva = lnDiscountTVA,
|
|
valoare_achizitie = lnValoareAchizitie,
|
|
total_fara_tva = lnTotalFaraTVA,
|
|
total_tva = lnTotalTVA,
|
|
total_cu_tva = lnTotalCuTVA,
|
|
serie_incasat = lnSerieIncasat,
|
|
nr_incasat = lnNrIncasat,
|
|
suma_incasat = lnSumaIncasat,
|
|
tip_incasat = lnTipIncasat,
|
|
id_valuta = lnIdValuta,
|
|
curs = lnCurs,
|
|
multiplicator = lnMultiplicator
|
|
where id_vanzare = pack_facturare.nid_vanzare;
|
|
|
|
exception
|
|
when NO_DATA_FOUND then
|
|
null;
|
|
end;
|
|
---------------------------------------------
|
|
END LOOP;
|
|
|
|
pack_facturare.finalizeaza_scriere_actrul();
|
|
|
|
END finalizeaza_avize_lucrare;
|
|
|
|
-------------------------------------------------------------------
|
|
/* PROCEDURE finalizeaza_scriere_verificare(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER) is
|
|
lnIdFacturare NUMBER(10) := null;
|
|
lnListareDetaliata NUMBER(1) := 0;
|
|
begin
|
|
pack_facturare.finalizeaza_scriere_verificare(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
lnIdFacturare,
|
|
lnListareDetaliata,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_SIR_MODIFICARI_ACONT,
|
|
V_SIR_MODIFICARI_PART,
|
|
V_PARAMETRU_ADITIONAL,
|
|
V_ID_VANZARE);
|
|
end;*/
|
|
|
|
-------------------------------------------------------------------
|
|
PROCEDURE finalizeaza_scriere_verificare(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER) IS
|
|
V_ID_FACTURARE NUMBER(20) := NULL;
|
|
V_LISTARE_DETALIATA NUMBER(20) := NULL;
|
|
BEGIN
|
|
finalizeaza_scriere_verificare(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_SIR_MODIFICARI_ACONT,
|
|
V_SIR_MODIFICARI_PART,
|
|
V_PARAMETRU_ADITIONAL,
|
|
V_ID_VANZARE);
|
|
END;
|
|
|
|
PROCEDURE finalizeaza_scriere_verificare(V_DISCOUNT_FACTURA IN NUMBER,
|
|
V_ID_DELEGAT IN NUMBER,
|
|
V_ID_MASINA IN NUMBER,
|
|
V_ID_FACTURARE IN NUMBER,
|
|
V_LISTARE_DETALIATA IN NUMBER,
|
|
V_DATAORA_EXP IN DATE,
|
|
V_ID_AGENT IN NUMBER,
|
|
V_TEXT_ADITIONAL IN VARCHAR2,
|
|
V_SIR_MODIFICARI_ACONT IN VARCHAR2,
|
|
V_SIR_MODIFICARI_PART IN VARCHAR,
|
|
V_PARAMETRU_ADITIONAL IN NUMBER,
|
|
V_ID_VANZARE OUT NUMBER) IS
|
|
V_SEPARATOR_LINIE VARCHAR2(5) := ';';
|
|
V_SEPARATOR VARCHAR2(5) := '|';
|
|
BEGIN
|
|
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;
|
|
|
|
IF pack_facturare.ntip = 27 THEN
|
|
pack_facturare.finalizeaza_avize_lucrare(V_DISCOUNT_FACTURA);
|
|
V_ID_VANZARE := NULL;
|
|
ELSE
|
|
pack_facturare.finalizeaza_factura(V_DISCOUNT_FACTURA,
|
|
V_ID_DELEGAT,
|
|
V_ID_MASINA,
|
|
V_ID_FACTURARE,
|
|
V_LISTARE_DETALIATA,
|
|
V_DATAORA_EXP,
|
|
V_ID_AGENT,
|
|
V_TEXT_ADITIONAL,
|
|
V_PARAMETRU_ADITIONAL);
|
|
V_ID_VANZARE := pack_facturare.nid_vanzare;
|
|
END IF;
|
|
|
|
END finalizeaza_scriere_verificare;
|
|
-------------------------------------------------------------------
|
|
Procedure initializeaza_scriere_actrul(tdDataOra IN DATE,
|
|
tnSuprascriereCod IN NUMBER DEFAULT 1) IS
|
|
BEGIN
|
|
pack_contafin.initializeaza_scriere_act_rul(pack_facturare.nid_util,
|
|
tdDataOra,
|
|
pack_facturare.nan,
|
|
pack_facturare.nluna,
|
|
tnSuprascriereCod,
|
|
1, -- tnSuprascriereAnLuna
|
|
0, -- tnScrie_Sterge: 0 = scriere, 1 = refacere, 2 = stergere
|
|
pack_facturare.nid_sucursala);
|
|
END initializeaza_scriere_actrul;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE finalizeaza_scriere_actrul IS
|
|
BEGIN
|
|
pack_contafin.finalizeaza_scriere_act_rul();
|
|
END finalizeaza_scriere_actrul;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE marcheaza_facturat(V_VERIFICARE IN NUMBER) IS
|
|
BEGIN
|
|
IF V_VERIFICARE = 0 THEN
|
|
UPDATE VANZARI
|
|
SET FACTURAT = 1, ID_UTILFACT = pack_facturare.nid_util
|
|
WHERE ID_VANZARE IN
|
|
(SELECT id_vanzare_aviz as id_vanzare
|
|
FROM vanzari_coresp
|
|
WHERE id_vanzare_Fact = pack_facturare.nid_vanzare
|
|
AND sters = 0
|
|
AND tip <> 3) -- modificare v 2.0.56 : tip <> 3
|
|
AND FACTURAT = 0;
|
|
ELSE
|
|
UPDATE VANZARI
|
|
SET FACTURAT = 1, ID_UTILFACT = pack_facturare.nid_util
|
|
WHERE ID_VANZARE IN
|
|
(select id_vanzare
|
|
from (select a.id_vanzare,
|
|
sum(a.cantitate - NVL(b.cantitate, 0)) as ramas
|
|
from vanzari_detalii a
|
|
left join (select sum(cantitate) as cantitate,
|
|
id_vanzare_det_aviz as id_vanzare_det
|
|
from vanzari_cantitati
|
|
where sters = 0
|
|
group by id_vanzare_det_aviz) b
|
|
on a.id_vanzare_det = b.id_vanzare_det
|
|
where a.id_vanzare in
|
|
(select id_vanzare_aviz as id_vanzare
|
|
from vanzari_coresp
|
|
where id_vanzare_Fact =
|
|
pack_facturare.nid_vanzare
|
|
and sters = 0
|
|
and tip <> 3) -- modificare v 2.0.56 : sters = 0 and tip <> 3
|
|
group by a.id_vanzare)
|
|
where ramas = 0);
|
|
|
|
END IF;
|
|
END marcheaza_facturat;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_cantitati_vanzari_avize IS
|
|
V_SEPARATOR VARCHAR2(10) := ',';
|
|
V_LISTA VARCHAR2(3000) := '';
|
|
BEGIN
|
|
V_LISTA := pack_facturare.clistaid_avize || V_SEPARATOR ||
|
|
pack_facturare.nid_vanzare || V_SEPARATOR;
|
|
|
|
INSERT INTO VANZARI_CANTITATI
|
|
(ID_VANZARE_DET, ID_VANZARE_DET_AVIZ, CANTITATE)
|
|
SELECT A.MAX_IDT AS ID_VANZARE_DET,
|
|
A.ID_VANZARE_DET AS ID_VANZARE_DET_AVIZ,
|
|
(CASE
|
|
WHEN A.TOTAL >= 0 THEN
|
|
A.CANTITATE
|
|
ELSE
|
|
A.CANTITATE + A.TOTAL
|
|
END) AS CANTITATE
|
|
FROM (SELECT MAX(A.ID_VANZARE) OVER(PARTITION BY A.ID_ARTICOL, A.SERIE, A.DISCOUNT_UNITAR, A.ID_POL, A.ID_VALUTA, A.PRET, A.ID_GESTIUNE, A.CONT) AS MAX_ID,
|
|
MAX(A.ID_VANZARE_DET) OVER(PARTITION BY A.ID_ARTICOL, A.SERIE, A.DISCOUNT_UNITAR, A.ID_POL, A.ID_VALUTA, A.PRET, A.ID_GESTIUNE, A.CONT) AS MAX_IDT,
|
|
SUM(DECODE(A.ID_VANZARE,
|
|
pack_facturare.nid_vanzare,
|
|
A.CANTITATE,
|
|
(-1) * A.CANTITATE)) OVER(PARTITION BY A.ID_ARTICOL, A.SERIE, A.DISCOUNT_UNITAR, A.ID_POL, A.ID_VALUTA, A.PRET, A.ID_GESTIUNE, A.CONT ORDER BY DECODE(A.ID_VANZARE, pack_facturare.nid_vanzare, 0, A.ID_VANZARE_DET)) AS TOTAL,
|
|
A.ID_VANZARE,
|
|
DECODE(A.ID_VANZARE,
|
|
pack_facturare.nid_vanzare,
|
|
0,
|
|
A.ID_VANZARE_DET) AS ID_VANZARE_DET,
|
|
DECODE(A.ID_VANZARE,
|
|
pack_facturare.nid_vanzare,
|
|
0,
|
|
A.CANTITATE) AS CANTITATE,
|
|
A.ID_ARTICOL,
|
|
A.SERIE,
|
|
A.DISCOUNT_UNITAR,
|
|
A.ID_POL,
|
|
A.ID_VALUTA,
|
|
A.PRET,
|
|
A.ID_GESTIUNE,
|
|
A.CONT
|
|
FROM VANZARI_DETALII A
|
|
WHERE A.ID_VANZARE IN
|
|
(SELECT X as ID_VANZARE
|
|
FROM table(charn2collection(V_LISTA, V_SEPARATOR)))
|
|
AND A.STERS = 0
|
|
ORDER BY A.ID_ARTICOL,
|
|
A.SERIE,
|
|
A.DISCOUNT_UNITAR,
|
|
A.ID_POL,
|
|
A.ID_VALUTA,
|
|
A.PRET,
|
|
A.ID_GESTIUNE,
|
|
A.CONT,
|
|
A.ID_VANZARE_DET DESC) A
|
|
WHERE A.MAX_ID = pack_facturare.nid_vanzare
|
|
AND A.ID_VANZARE_DET <> 0
|
|
AND A.CANTITATE + A.TOTAL > 0
|
|
ORDER BY A.MAX_IDT, A.ID_VANZARE_DET;
|
|
|
|
END scrie_cantitati_vanzari_avize;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE scrie_corespondente_vanzari(V_TIP IN NUMBER) IS
|
|
V_LISTAID VARCHAR2(2000);
|
|
V_SEPARATOR VARCHAR2(1) := ',';
|
|
BEGIN
|
|
IF V_TIP = 1 THEN
|
|
-- facturare din aviz:
|
|
V_LISTAID := SUBSTR(pack_facturare.clistaid_avize,
|
|
1,
|
|
LENGTH(pack_facturare.clistaid_avize) - 1);
|
|
ELSE
|
|
V_LISTAID := pack_facturare.clistaid;
|
|
END IF;
|
|
|
|
INSERT INTO VANZARI_CORESP
|
|
(ID_VANZARE_FACT, ID_VANZARE_AVIZ, TIP)
|
|
SELECT pack_facturare.nid_vanzare as ID_VANZARE_FACT,
|
|
ID_VANZARE as ID_VANZARE_AVIZ,
|
|
V_TIP as TIP
|
|
FROM VANZARI
|
|
WHERE ID_VANZARE IN
|
|
(SELECT X as ID_VANZARE
|
|
FROM table(charn2collection(V_LISTAID, V_SEPARATOR))
|
|
|
|
);
|
|
-- Completez VANZARI.AVIZE redundant, pentru a nu face mai rapid fact_vfacturi (selecta din fact_vdetalii_avize)
|
|
UPDATE VANZARI
|
|
SET AVIZE =
|
|
SUBSTR((select stringagg(nvl(a2.serie_act, '') || CHR(32) ||
|
|
a2.numar_act) as nr_avize
|
|
from vanzari_coresp a1
|
|
join vanzari a2
|
|
on a1.id_vanzare_aviz = a2.id_vanzare
|
|
where a1.id_vanzare_fact = pack_facturare.nid_vanzare),1,1000);
|
|
|
|
END scrie_corespondente_vanzari;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE cauta_date_ultima_factura(V_ID_PART IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_DELEGAT OUT NUMBER,
|
|
V_NUME_DELEGAT OUT VARCHAR2,
|
|
V_SERIE_BI OUT VARCHAR2,
|
|
V_CNP OUT VARCHAR2,
|
|
V_ID_MASINA OUT NUMBER,
|
|
V_NRINMAT OUT VARCHAR2) IS
|
|
BEGIN
|
|
BEGIN
|
|
SELECT A.ID_DELEGAT,
|
|
B.DENUMIRE,
|
|
B.REG_COMERT,
|
|
B.COD_FISCAL,
|
|
A.ID_MASINA,
|
|
C.NRINMAT
|
|
INTO V_ID_DELEGAT,
|
|
V_NUME_DELEGAT,
|
|
V_SERIE_BI,
|
|
V_CNP,
|
|
V_ID_MASINA,
|
|
V_NRINMAT
|
|
FROM (SELECT ID_DELEGAT,
|
|
ID_MASINA,
|
|
ROW_NUMBER() OVER(ORDER BY DATA_ACT DESC) AS NRCRT
|
|
FROM VANZARI
|
|
WHERE STERS = 0
|
|
AND ID_PART = V_ID_PART
|
|
AND NVL(ID_SUCURSALA, -99) = NVL(V_ID_SUCURSALA, -99)) A
|
|
LEFT JOIN NOM_PARTENERI B
|
|
ON A.ID_DELEGAT = B.ID_PART
|
|
AND B.STERS = 0
|
|
AND B.INACTIV = 0
|
|
LEFT JOIN NOM_MASINI C
|
|
ON A.ID_MASINA = C.ID_MASINA
|
|
AND C.STERS = 0
|
|
AND C.INACTIV = 0
|
|
WHERE A.NRCRT = 1;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
BEGIN
|
|
-- daca nu am gasit datele de pe ultima factura, iar id_part corespunde unei persoane fizice,
|
|
-- atunci iau datele acesteia
|
|
SELECT ID_PART, DENUMIRE, REG_COMERT, COD_FISCAL
|
|
INTO V_ID_DELEGAT, V_NUME_DELEGAT, V_SERIE_BI, V_CNP
|
|
FROM NOM_PARTENERI
|
|
WHERE ID_PART = V_ID_PART
|
|
AND TIP_PERSOANA = 2;
|
|
|
|
MERGE INTO CORESP_TIP_PART
|
|
USING DUAL
|
|
ON (ID_TIP_PART = pack_sesiune.getoptiunefirma(USER, 'IDTIPDELEGATI') AND ID_PART = V_ID_PART)
|
|
WHEN NOT MATCHED THEN
|
|
INSERT
|
|
(ID_TIP_PART, ID_PART)
|
|
VALUES
|
|
(pack_sesiune.getoptiunefirma(USER, 'IDTIPDELEGATI'),
|
|
V_ID_PART);
|
|
|
|
MERGE INTO CORESP_DELEGATI_PART
|
|
USING DUAL
|
|
ON (ID_DELEGAT = V_ID_PART AND ID_PART = V_ID_PART)
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (ID_DELEGAT, ID_PART) VALUES (V_ID_PART, V_ID_PART);
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_DELEGAT := NULL;
|
|
V_NUME_DELEGAT := '';
|
|
V_SERIE_BI := '';
|
|
V_CNP := '';
|
|
END;
|
|
V_ID_MASINA := NULL;
|
|
V_NRINMAT := '';
|
|
END;
|
|
END cauta_date_ultima_factura;
|
|
--------------------------------------------------------------------------------------------------------------
|
|
-- caut datele ultimei facturi dupa tip (pentru avize de transfer intre subunitati, nu am client)
|
|
PROCEDURE cauta_date_ultima_factura_tip(V_TIP IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_ID_DELEGAT OUT NUMBER,
|
|
V_NUME_DELEGAT OUT VARCHAR2,
|
|
V_SERIE_BI OUT VARCHAR2,
|
|
V_CNP OUT VARCHAR2,
|
|
V_ID_MASINA OUT NUMBER,
|
|
V_NRINMAT OUT VARCHAR2) IS
|
|
BEGIN
|
|
BEGIN
|
|
SELECT A.ID_DELEGAT,
|
|
B.DENUMIRE,
|
|
B.REG_COMERT,
|
|
B.COD_FISCAL,
|
|
A.ID_MASINA,
|
|
C.NRINMAT
|
|
INTO V_ID_DELEGAT,
|
|
V_NUME_DELEGAT,
|
|
V_SERIE_BI,
|
|
V_CNP,
|
|
V_ID_MASINA,
|
|
V_NRINMAT
|
|
FROM (SELECT ID_DELEGAT,
|
|
ID_MASINA,
|
|
ROW_NUMBER() OVER(ORDER BY ID_VANZARE DESC) AS NRCRT
|
|
FROM VANZARI
|
|
WHERE STERS = 0
|
|
AND TIP = V_TIP
|
|
AND NVL(ID_SUCURSALA, -99) = NVL(V_ID_SUCURSALA, -99)) A
|
|
LEFT JOIN NOM_PARTENERI B
|
|
ON A.ID_DELEGAT = B.ID_PART
|
|
AND B.STERS = 0
|
|
AND B.INACTIV = 0
|
|
LEFT JOIN NOM_MASINI C
|
|
ON A.ID_MASINA = C.ID_MASINA
|
|
AND C.STERS = 0
|
|
AND C.INACTIV = 0
|
|
WHERE A.NRCRT = 1;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_ID_DELEGAT := NULL;
|
|
V_NUME_DELEGAT := '';
|
|
V_SERIE_BI := '';
|
|
V_CNP := '';
|
|
V_ID_MASINA := NULL;
|
|
V_NRINMAT := '';
|
|
END;
|
|
|
|
END cauta_date_ultima_factura_tip;
|
|
----------------------------------------------------------------------------
|
|
PROCEDURE cauta_date_comanda(V_ID_CLIENT IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_DATA_FACTURA IN DATE,
|
|
V_LISTAID OUT VARCHAR2,
|
|
V_DESCRIERE OUT VARCHAR2) is
|
|
BEGIN
|
|
BEGIN
|
|
SELECT TO_CHAR(ID_COMANDA), NR_COMANDA
|
|
INTO V_LISTAID, V_DESCRIERE
|
|
FROM (SELECT ROW_NUMBER() OVER(ORDER BY DATA_LIVRARE) AS NR_CRT,
|
|
ID_COMANDA,
|
|
NR_COMANDA
|
|
FROM VCOMENZI
|
|
WHERE FACTURAT = 0
|
|
AND INTERNA = 2
|
|
AND ID_PART = V_ID_CLIENT
|
|
AND NVL(ID_SUCURSALA, -99) = NVL(V_ID_SUCURSALA, -99)
|
|
AND TRUNC(DATA_LIVRARE) = TRUNC(V_DATA_FACTURA))
|
|
WHERE NR_CRT = 1;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_LISTAID := NULL;
|
|
V_DESCRIERE := NULL;
|
|
END;
|
|
END cauta_date_comanda;
|
|
----------------------------------------------------------------------------
|
|
PROCEDURE cauta_date_comanda_gest(V_ID_GESTIUNE IN NUMBER,
|
|
V_ID_SUCURSALA IN NUMBER,
|
|
V_DATA_FACTURA IN DATE,
|
|
V_LISTAID OUT VARCHAR2,
|
|
V_DESCRIERE OUT VARCHAR2) is
|
|
BEGIN
|
|
BEGIN
|
|
SELECT TO_CHAR(ID_COMANDA), NR_COMANDA
|
|
INTO V_LISTAID, V_DESCRIERE
|
|
FROM (SELECT ROW_NUMBER() OVER(ORDER BY DATA_LIVRARE) AS NR_CRT,
|
|
ID_COMANDA,
|
|
NR_COMANDA
|
|
FROM VCOMENZI
|
|
WHERE FACTURAT = 0
|
|
AND NVL(ID_SUCURSALA, -99) = NVL(V_ID_SUCURSALA, -99)
|
|
AND INTERNA = 3
|
|
AND ID_GESTIUNE = V_ID_GESTIUNE
|
|
AND TRUNC(DATA_LIVRARE) = TRUNC(V_DATA_FACTURA))
|
|
WHERE NR_CRT = 1;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_LISTAID := NULL;
|
|
V_DESCRIERE := NULL;
|
|
END;
|
|
END cauta_date_comanda_gest;
|
|
----------------------------------------------------------------------------
|
|
-- e folosita in view-urile fact_vrap_centralizator_* ( in afara de _fact )
|
|
FUNCTION calculeaza_total_cu_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER IS
|
|
BEGIN
|
|
-- APELEZ calculeaza_total_cu_tva cu V_ZECIMALE_PRET = 0
|
|
RETURN pack_sesiune.calculeaza_total_cu_tva(V_PRET => V_PRET,
|
|
V_AJUSTARE => V_AJUSTARE,
|
|
V_CURS => V_CURS,
|
|
V_DISCOUNT_UNITAR => V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT => V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_CU_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => NULL,
|
|
V_ZECIMALE_SUMA => NULL);
|
|
|
|
END calculeaza_total_cu_tva;
|
|
-------------------------------------------------------------------
|
|
FUNCTION calculeaza_total_cu_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ZECIMALE_PRET IN NUMBER,
|
|
V_ZECIMALE_SUMA IN NUMBER)
|
|
RETURN NUMBER IS
|
|
BEGIN
|
|
RETURN pack_sesiune.calculeaza_total_cu_tva(V_PRET,
|
|
V_AJUSTARE,
|
|
V_CURS,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE,
|
|
V_PRET_CU_TVA,
|
|
V_PROC_TVAV,
|
|
V_ZECIMALE_PRET,
|
|
V_ZECIMALE_SUMA);
|
|
END calculeaza_total_cu_tva;
|
|
-------------------------------------------------------------------
|
|
-- e folosita in view-ul fact_vrap_centralizator_fact
|
|
FUNCTION calculeaza_total_cu_tva_fact(V_PRET IN NUMBER,
|
|
V_DIFERENTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER IS
|
|
V_ZECIMALE_SUMA NUMBER(1) := pack_sesiune.getOptiuneFirma('PC');
|
|
V_ZECIMALE_PRETV NUMBER(1) := pack_sesiune.getOptiuneFirma('PPRETV');
|
|
V_SUMA_CU_TVA ACT.SUMA%TYPE;
|
|
BEGIN
|
|
IF V_PRET_CU_TVA = 1 THEN
|
|
IF V_DISCOUNT_EVIDENTIAT = 1 THEN
|
|
V_SUMA_CU_TVA := ROUND((ROUND(NVL(V_CURS, 1) * V_PRET,
|
|
V_ZECIMALE_PRETV) -
|
|
ROUND(V_DIFERENTA * V_PROC_TVAV,
|
|
V_ZECIMALE_PRETV)) * V_CANTITATE,
|
|
V_ZECIMALE_SUMA) -
|
|
ROUND(ROUND(NVL(V_CURS, 1) *
|
|
NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALE_PRETV) * V_CANTITATE,
|
|
V_ZECIMALE_SUMA);
|
|
ELSE
|
|
V_SUMA_CU_TVA := ROUND((ROUND(NVL(V_CURS, 1) *
|
|
ROUND(V_PRET, V_ZECIMALE_PRETV),
|
|
V_ZECIMALE_PRETV) -
|
|
ROUND(NVL(V_CURS, 1) *
|
|
ROUND(NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALE_PRETV) -
|
|
ROUND(V_DIFERENTA * V_PROC_TVAV,
|
|
V_ZECIMALE_PRETV),
|
|
V_ZECIMALE_PRETV)) * V_CANTITATE,
|
|
V_ZECIMALE_SUMA);
|
|
END IF;
|
|
ELSE
|
|
V_SUMA_CU_TVA := pack_facturare.calculeaza_total_fara_tva_fact(V_PRET,
|
|
V_DIFERENTA,
|
|
V_CURS,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE,
|
|
V_PRET_CU_TVA,
|
|
V_PROC_TVAV) +
|
|
pack_facturare.calculeaza_total_tva_fact(V_PRET,
|
|
V_DIFERENTA,
|
|
V_CURS,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE,
|
|
V_PRET_CU_TVA,
|
|
V_PROC_TVAV);
|
|
END IF;
|
|
RETURN V_SUMA_CU_TVA;
|
|
END calculeaza_total_cu_tva_fact;
|
|
-------------------------------------------------------------------
|
|
-- e folosita in view-urile fact_vrap_centralizator_* ( in afara de _fact )
|
|
FUNCTION calculeaza_total_fara_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER IS
|
|
BEGIN
|
|
-- APELEZ calculeaza_total_cu_tva cu V_ZECIMALE_PRET = 0
|
|
RETURN pack_sesiune.calculeaza_total_fara_tva(V_PRET => V_PRET,
|
|
V_AJUSTARE => V_AJUSTARE,
|
|
V_CURS => V_CURS,
|
|
V_DISCOUNT_UNITAR => V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT => V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_CU_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => NULL,
|
|
V_ZECIMALE_SUMA => NULL);
|
|
|
|
END calculeaza_total_fara_tva;
|
|
-------------------------------------------------------------------
|
|
FUNCTION calculeaza_total_fara_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ZECIMALE_PRET IN NUMBER,
|
|
V_ZECIMALE_SUMA IN NUMBER)
|
|
RETURN NUMBER IS
|
|
BEGIN
|
|
RETURN pack_sesiune.calculeaza_total_fara_tva(V_PRET,
|
|
V_AJUSTARE,
|
|
V_CURS,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE,
|
|
V_PRET_CU_TVA,
|
|
V_PROC_TVAV,
|
|
V_ZECIMALE_PRET,
|
|
V_ZECIMALE_SUMA);
|
|
END calculeaza_total_fara_tva;
|
|
-------------------------------------------------------------------
|
|
-- e folosita in view-ul fact_vrap_centralizator_fact
|
|
FUNCTION calculeaza_total_fara_tva_fact(V_PRET IN NUMBER,
|
|
V_DIFERENTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER IS
|
|
V_ZECIMALE_SUMA NUMBER(1) := pack_sesiune.getOptiuneFirma('PC');
|
|
V_ZECIMALE_PRETV NUMBER(1) := pack_sesiune.getOptiuneFirma('PPRETV');
|
|
V_SUMA_FARA_TVA ACT.SUMA%TYPE;
|
|
BEGIN
|
|
IF V_PRET_CU_TVA = 1 THEN
|
|
V_SUMA_FARA_TVA := pack_facturare.calculeaza_total_cu_tva_fact(V_PRET,
|
|
V_DIFERENTA,
|
|
V_CURS,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE,
|
|
V_PRET_CU_TVA,
|
|
V_PROC_TVAV) -
|
|
pack_facturare.calculeaza_total_tva_fact(V_PRET,
|
|
V_DIFERENTA,
|
|
V_CURS,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE,
|
|
V_PRET_CU_TVA,
|
|
V_PROC_TVAV);
|
|
ELSE
|
|
IF V_DISCOUNT_EVIDENTIAT = 1 THEN
|
|
V_SUMA_FARA_TVA := ROUND((ROUND(NVL(V_CURS, 1) * V_PRET,
|
|
V_ZECIMALE_PRETV) - V_DIFERENTA) *
|
|
V_CANTITATE,
|
|
V_ZECIMALE_SUMA) -
|
|
ROUND(ROUND(NVL(V_CURS, 1) *
|
|
NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALE_PRETV) * V_CANTITATE,
|
|
V_ZECIMALE_SUMA);
|
|
ELSE
|
|
V_SUMA_FARA_TVA := ROUND((ROUND(NVL(V_CURS, 1) *
|
|
ROUND(V_PRET, V_ZECIMALE_PRETV),
|
|
V_ZECIMALE_PRETV) -
|
|
ROUND(NVL(V_CURS, 1) *
|
|
ROUND(NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALE_PRETV),
|
|
V_ZECIMALE_PRETV) - V_DIFERENTA) *
|
|
V_CANTITATE,
|
|
V_ZECIMALE_SUMA);
|
|
END IF;
|
|
END IF;
|
|
RETURN V_SUMA_FARA_TVA;
|
|
END calculeaza_total_fara_tva_fact;
|
|
-------------------------------------------------------------------
|
|
-- e folosita in view-urile fact_vrap_centralizator_* ( in afara de _fact )
|
|
FUNCTION calculeaza_total_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER IS
|
|
BEGIN
|
|
-- APELEZ calculeaza_total_cu_tva cu V_ZECIMALE_PRET = 0
|
|
Return pack_sesiune.calculeaza_total_tva(V_PRET => V_PRET,
|
|
V_AJUSTARE => V_AJUSTARE,
|
|
V_CURS => V_CURS,
|
|
V_DISCOUNT_UNITAR => V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT => V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE => V_CANTITATE,
|
|
V_PRET_CU_TVA => V_PRET_CU_TVA,
|
|
V_PROC_TVAV => V_PROC_TVAV,
|
|
V_ZECIMALE_PRET => NULL,
|
|
V_ZECIMALE_SUMA => NULL);
|
|
|
|
END calculeaza_total_tva;
|
|
-------------------------------------------------------------------
|
|
FUNCTION calculeaza_total_tva(V_PRET IN NUMBER,
|
|
V_AJUSTARE IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER,
|
|
V_ZECIMALE_PRET IN NUMBER,
|
|
V_ZECIMALE_SUMA IN NUMBER)
|
|
RETURN NUMBER IS
|
|
BEGIN
|
|
RETURN pack_sesiune.calculeaza_total_tva(V_PRET,
|
|
V_AJUSTARE,
|
|
V_CURS,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE,
|
|
V_PRET_CU_TVA,
|
|
V_PROC_TVAV,
|
|
V_ZECIMALE_PRET,
|
|
V_ZECIMALE_SUMA);
|
|
END calculeaza_total_tva;
|
|
----------------------------------------------------------------------------------------
|
|
-- e folosita in view-ul fact_vrap_centralizator_fact
|
|
FUNCTION calculeaza_total_tva_fact(V_PRET IN NUMBER,
|
|
V_DIFERENTA IN NUMBER,
|
|
V_CURS IN NUMBER,
|
|
V_DISCOUNT_UNITAR IN NUMBER,
|
|
V_DISCOUNT_EVIDENTIAT IN NUMBER,
|
|
V_CANTITATE IN NUMBER,
|
|
V_PRET_CU_TVA IN NUMBER,
|
|
V_PROC_TVAV IN NUMBER)
|
|
RETURN NUMBER IS
|
|
V_ZECIMALE_SUMA NUMBER(1) := pack_sesiune.getOptiuneFirma('PC');
|
|
V_ZECIMALE_PRETV NUMBER(1) := pack_sesiune.getOptiuneFirma('PPRETV');
|
|
V_SUMA_TVA ACT.SUMA%TYPE;
|
|
BEGIN
|
|
IF V_PRET_CU_TVA = 1 THEN
|
|
V_SUMA_TVA := ROUND(pack_facturare.calculeaza_total_cu_tva_fact(V_PRET,
|
|
V_DIFERENTA,
|
|
V_CURS,
|
|
V_DISCOUNT_UNITAR,
|
|
V_DISCOUNT_EVIDENTIAT,
|
|
V_CANTITATE,
|
|
V_PRET_CU_TVA,
|
|
V_PROC_TVAV) *
|
|
(V_PROC_TVAV - 1) / V_PROC_TVAV,
|
|
V_ZECIMALE_SUMA);
|
|
ELSE
|
|
IF V_DISCOUNT_EVIDENTIAT = 1 THEN
|
|
V_SUMA_TVA := ROUND(ROUND((ROUND(NVL(V_CURS, 1) * V_PRET,
|
|
V_ZECIMALE_PRETV) - V_DIFERENTA) *
|
|
V_CANTITATE,
|
|
V_ZECIMALE_SUMA) * (V_PROC_TVAV - 1),
|
|
V_ZECIMALE_SUMA) -
|
|
ROUND(ROUND(ROUND(NVL(V_CURS, 1) *
|
|
NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALE_PRETV) * V_CANTITATE,
|
|
V_ZECIMALE_SUMA) * (V_PROC_TVAV - 1),
|
|
V_ZECIMALE_SUMA);
|
|
ELSE
|
|
V_SUMA_TVA := ROUND(ROUND((ROUND(NVL(V_CURS, 1) *
|
|
ROUND(V_PRET, V_ZECIMALE_PRETV),
|
|
V_ZECIMALE_PRETV) -
|
|
ROUND(NVL(V_CURS, 1) *
|
|
ROUND(NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALE_PRETV),
|
|
V_ZECIMALE_PRETV) - V_DIFERENTA) *
|
|
V_CANTITATE,
|
|
V_ZECIMALE_SUMA) * (V_PROC_TVAV - 1),
|
|
V_ZECIMALE_SUMA);
|
|
END IF;
|
|
END IF;
|
|
RETURN V_SUMA_TVA;
|
|
END calculeaza_total_tva_fact;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE actualizeaza_vanzari(V_COD_VECHI IN NUMBER,
|
|
V_COD_NOU IN NUMBER) is
|
|
BEGIN
|
|
-- de modificat in caz ca il las sa stearga manual inregistrari din VANZARI_DETALII
|
|
-- acum se marcheaza cu STERS = 1 doar cand se sterge toata factura
|
|
UPDATE VANZARI_DETALII
|
|
SET STERS = 0
|
|
WHERE ID_VANZARE IN
|
|
(SELECT ID_VANZARE FROM VANZARI WHERE COD = V_COD_VECHI);
|
|
UPDATE VANZARI SET COD = V_COD_NOU, STERS = 0 WHERE COD = V_COD_VECHI;
|
|
END actualizeaza_vanzari;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE sterge_din_vanzari(V_COD IN NUMBER,
|
|
V_AN IN NUMBER,
|
|
V_LUNA IN NUMBER,
|
|
V_ID_UTIL IN NUMBER) is
|
|
V_ID_VANZARE VANZARI.ID_VANZARE%TYPE;
|
|
BEGIN
|
|
BEGIN
|
|
SELECT ID_VANZARE INTO V_ID_VANZARE FROM VANZARI WHERE COD = V_COD;
|
|
pack_facturare.sterge_factura(V_ID_VANZARE, V_LUNA, V_AN, V_ID_UTIL);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR(-20000,
|
|
'Aceasta factura nu a fost inregistrata in ROAFACTURARE! (FACT-017 : ' ||
|
|
V_COD || ')');
|
|
END;
|
|
END sterge_din_vanzari;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE verifica_cursuri_valute(V_DATA_CURS IN DATE,
|
|
V_ID_UTIL IN NUMBER) IS
|
|
V_NUME_VALUTE VARCHAR2(100);
|
|
BEGIN
|
|
-- verificare ca exista cursul pentru valutele din FACT_VPRETURI_UTILIZATOR
|
|
SELECT STRINGAGG(B.NUME_VAL)
|
|
INTO V_NUME_VALUTE
|
|
FROM (SELECT A.ID_VALUTA, B.CURS
|
|
FROM (SELECT DISTINCT ID_VALUTA
|
|
FROM FACT_VPRETURI_UTILIZATOR
|
|
WHERE ID_UTIL = V_ID_UTIL) A
|
|
LEFT JOIN CURS B
|
|
ON A.ID_VALUTA = B.ID_VALUTA
|
|
AND B.STERS = 0
|
|
AND B.DATA <= V_DATA_CURS
|
|
AND B.DATA2 >= V_DATA_CURS) A
|
|
LEFT JOIN NOM_VALUTE B
|
|
ON A.ID_VALUTA = B.ID_VALUTA
|
|
WHERE A.CURS IS NULL
|
|
AND A.ID_VALUTA <> pack_facturare.nid_moneda_nationala;
|
|
|
|
IF V_NUME_VALUTE IS NOT NULL THEN
|
|
RAISE_APPLICATION_ERROR(-20005,
|
|
'Nu este setat cursul din data de ' ||
|
|
to_char(V_DATA_CURS, 'DD/MM/YYYY') ||
|
|
' pentru ' || V_NUME_VALUTE || '!');
|
|
END IF;
|
|
END verifica_cursuri_valute;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE verifica_total_document IS
|
|
V_TOTFTVA_VER ACT.SUMA%TYPE;
|
|
V_ID_TOTFTVA ACT.SUMA%TYPE;
|
|
V_TOTTVA_VER ACT.SUMA%TYPE;
|
|
V_ID_TOTTVA ACT.SUMA%TYPE;
|
|
BEGIN
|
|
IF pack_facturare.ntip < 20 or
|
|
pack_facturare.ntip in (pack_facturare.nTipFacturaHotel,
|
|
pack_facturare.nTipFacturaRestaurant,
|
|
48,
|
|
49,51,52) THEN
|
|
SELECT SUM(CASE
|
|
WHEN SCD in ('667', '267', '2678', '709') THEN
|
|
(-1) * SUMA
|
|
WHEN SCC <> '4427' THEN
|
|
SUMA
|
|
ELSE
|
|
0
|
|
END),
|
|
SUM(CASE
|
|
WHEN SCC = '4427' THEN
|
|
SUMA
|
|
ELSE
|
|
0
|
|
END),
|
|
MIN(CASE
|
|
WHEN SCC <> '4427' AND
|
|
SCD not in ('667', '267', '2678', '709') THEN
|
|
ID_ACT
|
|
ELSE
|
|
9999999
|
|
END),
|
|
MIN(CASE
|
|
WHEN SCC = '4427' THEN
|
|
ID_ACT
|
|
ELSE
|
|
9999999
|
|
END)
|
|
INTO V_TOTFTVA_VER, V_TOTTVA_VER, V_ID_TOTFTVA, V_ID_TOTTVA
|
|
FROM ACT_TEMP
|
|
WHERE (SCD = '4111' OR (SCC = '4111' AND SCD not in ('5311','5314','5121','5125','5126')));
|
|
ELSE
|
|
SELECT SUM(CASE
|
|
WHEN SCD in ('667', '267', '2678', '709') THEN
|
|
(-1) * SUMA
|
|
WHEN SCC <> '4428' THEN
|
|
SUMA
|
|
ELSE
|
|
0
|
|
END),
|
|
SUM(CASE
|
|
WHEN SCC = '4428' THEN
|
|
SUMA
|
|
ELSE
|
|
0
|
|
END),
|
|
MIN(CASE
|
|
WHEN SCC <> '4428' AND
|
|
SCD not in ('667', '267', '2678', '709') THEN
|
|
ID_ACT
|
|
ELSE
|
|
9999999
|
|
END),
|
|
MIN(CASE
|
|
WHEN SCC = '4428' THEN
|
|
ID_ACT
|
|
ELSE
|
|
9999999
|
|
END)
|
|
INTO V_TOTFTVA_VER, V_TOTTVA_VER, V_ID_TOTFTVA, V_ID_TOTTVA
|
|
FROM ACT_TEMP
|
|
WHERE (SCD = '418' OR SCC = '418');
|
|
END IF;
|
|
IF NVL(pack_facturare.ntotftva, 0) <> 0 and
|
|
NVL(pack_facturare.ntotftva, 0) <> V_TOTFTVA_VER THEN
|
|
|
|
pack_facturare.ndifftva := pack_facturare.ntotftva - V_TOTFTVA_VER;
|
|
insert into act_temp
|
|
(id_act,
|
|
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,
|
|
sters,
|
|
id_factd,
|
|
id_factc,
|
|
id_ctr,
|
|
id_jtva_coloana,
|
|
serie_act,
|
|
tva_incasare,
|
|
validat,
|
|
id_utilv,
|
|
dataorav,
|
|
taxcode)
|
|
select b.id_act,
|
|
a.luna,
|
|
a.an,
|
|
a.cod,
|
|
a.dataireg,
|
|
a.nract,
|
|
a.dataact,
|
|
a.explicatia,
|
|
a.scd,
|
|
a.ascd,
|
|
a.scc,
|
|
a.ascc,
|
|
pack_facturare.ndifftva as suma,
|
|
a.pereched,
|
|
a.perechec,
|
|
0 as suma_val,
|
|
a.curs,
|
|
a.datascad,
|
|
a.neimpozab,
|
|
a.nnir,
|
|
a.id_util,
|
|
a.dataora,
|
|
a.id_utils,
|
|
a.dataoras,
|
|
a.id_responsabil,
|
|
a.id_venchelt,
|
|
a.id_sectie,
|
|
a.id_set,
|
|
a.id_fact,
|
|
a.id_partd,
|
|
a.id_partc,
|
|
a.id_sucursala,
|
|
a.id_fdoc,
|
|
a.explicatia4,
|
|
a.explicatia5,
|
|
a.id_lucrare,
|
|
a.id_gestin,
|
|
a.id_gestout,
|
|
a.id_valuta,
|
|
a.proc_tva,
|
|
a.sters,
|
|
a.id_factd,
|
|
a.id_factc,
|
|
a.id_ctr,
|
|
a.id_jtva_coloana,
|
|
a.serie_act,
|
|
pack_facturare.ntva_incasare,
|
|
a.validat,
|
|
a.id_utilv,
|
|
a.dataorav,
|
|
a.taxcode
|
|
from act_temp a
|
|
left join (select max(id_act) + 1 as id_act, 0 as sters
|
|
from act_temp) b
|
|
on a.sters = b.sters
|
|
where a.id_act = V_ID_TOTFTVA;
|
|
END IF;
|
|
IF NVL(pack_facturare.ntottva, 0) <> 0 and
|
|
NVL(pack_facturare.ntottva, 0) <> V_TOTTVA_VER THEN
|
|
|
|
pack_facturare.ndiftva := pack_facturare.ntottva - V_TOTTVA_VER;
|
|
|
|
insert into act_temp
|
|
(id_act,
|
|
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,
|
|
sters,
|
|
id_factd,
|
|
id_factc,
|
|
id_ctr,
|
|
id_jtva_coloana,
|
|
serie_act,
|
|
tva_incasare,
|
|
validat,
|
|
id_utilv,
|
|
dataorav,
|
|
taxcode)
|
|
select b.id_act,
|
|
a.luna,
|
|
a.an,
|
|
a.cod,
|
|
a.dataireg,
|
|
a.nract,
|
|
a.dataact,
|
|
a.explicatia,
|
|
a.scd,
|
|
a.ascd,
|
|
a.scc,
|
|
a.ascc,
|
|
pack_facturare.ndiftva as suma,
|
|
a.pereched,
|
|
a.perechec,
|
|
0 as suma_val,
|
|
a.curs,
|
|
a.datascad,
|
|
a.neimpozab,
|
|
a.nnir,
|
|
a.id_util,
|
|
a.dataora,
|
|
a.id_utils,
|
|
a.dataoras,
|
|
a.id_responsabil,
|
|
a.id_venchelt,
|
|
a.id_sectie,
|
|
a.id_set,
|
|
a.id_fact,
|
|
a.id_partd,
|
|
a.id_partc,
|
|
a.id_sucursala,
|
|
a.id_fdoc,
|
|
a.explicatia4,
|
|
a.explicatia5,
|
|
a.id_lucrare,
|
|
a.id_gestin,
|
|
a.id_gestout,
|
|
a.id_valuta,
|
|
a.proc_tva,
|
|
a.sters,
|
|
a.id_factd,
|
|
a.id_factc,
|
|
a.id_ctr,
|
|
a.id_jtva_coloana,
|
|
a.serie_act,
|
|
pack_facturare.ntva_incasare,
|
|
a.validat,
|
|
a.id_utilv,
|
|
a.dataorav,
|
|
a.taxcode
|
|
from act_temp a
|
|
left join (select max(id_act) + 1 as id_act, 0 as sters
|
|
from act_temp) b
|
|
on a.sters = b.sters
|
|
where a.id_act = V_ID_TOTTVA;
|
|
END IF;
|
|
|
|
IF pack_facturare.ntip in (48, 49) AND
|
|
((NVL(pack_facturare.ntottva, 0) <> 0 and
|
|
NVL(pack_facturare.ntottva, 0) <> V_TOTTVA_VER) OR
|
|
(NVL(pack_facturare.ntotftva, 0) <> 0 and
|
|
NVL(pack_facturare.ntotftva, 0) <> V_TOTFTVA_VER)) THEN
|
|
insert into act_temp
|
|
(id_act,
|
|
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,
|
|
sters,
|
|
id_factd,
|
|
id_factc,
|
|
id_ctr,
|
|
id_jtva_coloana,
|
|
serie_act,
|
|
tva_incasare,
|
|
validat,
|
|
id_utilv,
|
|
dataorav)
|
|
select b.id_act,
|
|
a.luna,
|
|
a.an,
|
|
a.cod,
|
|
a.dataireg,
|
|
a.nract,
|
|
a.dataact,
|
|
a.explicatia,
|
|
a.scd,
|
|
a.ascd,
|
|
a.scc,
|
|
a.ascc,
|
|
pack_facturare.ndifftva + pack_facturare.ndiftva as suma,
|
|
a.pereched,
|
|
a.perechec,
|
|
0 as suma_val,
|
|
a.curs,
|
|
a.datascad,
|
|
a.neimpozab,
|
|
a.nnir,
|
|
a.id_util,
|
|
a.dataora,
|
|
a.id_utils,
|
|
a.dataoras,
|
|
a.id_responsabil,
|
|
a.id_venchelt,
|
|
a.id_sectie,
|
|
a.id_set,
|
|
a.id_fact,
|
|
a.id_partd,
|
|
a.id_partc,
|
|
a.id_sucursala,
|
|
a.id_fdoc,
|
|
a.explicatia4,
|
|
a.explicatia5,
|
|
a.id_lucrare,
|
|
a.id_gestin,
|
|
a.id_gestout,
|
|
a.id_valuta,
|
|
a.proc_tva,
|
|
a.sters,
|
|
a.id_factd,
|
|
a.id_factc,
|
|
a.id_ctr,
|
|
a.id_jtva_coloana,
|
|
a.serie_act,
|
|
pack_facturare.ntva_incasare,
|
|
a.validat,
|
|
a.id_utilv,
|
|
a.dataorav
|
|
from act_temp a
|
|
left join (select max(id_act) + 1 as id_act, 0 as sters
|
|
from act_temp) b
|
|
on a.sters = b.sters
|
|
where a.scc = '357';
|
|
END IF;
|
|
|
|
END verifica_total_document;
|
|
-------------------------------------------------------------------
|
|
PROCEDURE verifica_analitice378 is
|
|
BEGIN
|
|
SELECT DECODE(X, 0, 0, 1)
|
|
INTO PACK_FACTURARE.NANALITICE_378
|
|
FROM (SELECT COUNT(*) AS X
|
|
FROM plcont
|
|
WHERE CONT = '378'
|
|
AND AN = PACK_FACTURARE.nan
|
|
AND TIP_CONT = 1
|
|
AND INACTIV = 0);
|
|
END verifica_analitice378;
|
|
-------------------------------------------------------------------
|
|
function GetAnaliticByGrupUtilizatori(tnIdUtilizator ACT.ID_UTIL%TYPE,
|
|
tcCont ACT.SCD%TYPE)
|
|
return ACT.ASCD%TYPE IS
|
|
lcAcont ACT.ASCD%TYPE;
|
|
BEGIN
|
|
BEGIN
|
|
select ga.acont
|
|
into lcAcont
|
|
from config_gruputil_analitice ga
|
|
join utilizatori_rol_intern u
|
|
on ga.id_grup = u.id_grup
|
|
where u.id_util = tnIdUtilizator
|
|
and ga.cont = tcCont
|
|
and u.sters = 0;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
NULL;
|
|
END;
|
|
return lcAcont;
|
|
end GetAnaliticByGrupUtilizatori;
|
|
-------------------------------------------------------------------
|
|
-- intoarce analiticul unui cont (371,607,378 etc.)
|
|
-- pe baza configurarilor din config_analitice si a GESTIUNII/ARTICOLULUI
|
|
FUNCTION GetAnaliticByArticol(tcCont RUL.CONT%TYPE,
|
|
tnIdGestiune RUL.ID_GESTIUNE%TYPE DEFAULT NULL,
|
|
tnIdArticol RUL.ID_ARTICOL%TYPE DEFAULT NULL)
|
|
return RUL.ACONT%TYPE IS
|
|
|
|
crs_linie config_analitice%rowtype;
|
|
lcSelect VARCHAR2(10000);
|
|
lcAnalitic VARCHAR2(1000);
|
|
lcColoanaP VARCHAR2(100);
|
|
lcColoanaS VARCHAR2(100);
|
|
lcNumeColoanaP VARCHAR2(1000);
|
|
lcNumeColoanaS VARCHAR2(1000);
|
|
lcAcont RUL.ACONT%TYPE;
|
|
lcParametruP VARCHAR2(100);
|
|
lcParametruS VARCHAR2(100);
|
|
BEGIN
|
|
|
|
begin
|
|
select *
|
|
into crs_linie
|
|
from config_analitice a
|
|
where a.cont = tcCont;
|
|
exception
|
|
when NO_DATA_FOUND then
|
|
return lcAcont;
|
|
end;
|
|
|
|
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;
|
|
|
|
lcParametruP := CASE UPPER(lcNumeColoanaP)
|
|
WHEN 'ID_GESTIUNE' THEN
|
|
'tnIdGestiune'
|
|
WHEN 'ID_ARTICOL' THEN
|
|
'tnIdArticol'
|
|
ELSE
|
|
''
|
|
END;
|
|
lcParametruS := CASE UPPER(lcNumeColoanaS)
|
|
WHEN 'ID_GESTIUNE' THEN
|
|
'tnIdGestiune'
|
|
WHEN 'ID_ARTICOL' THEN
|
|
'tnIdArticol'
|
|
ELSE
|
|
''
|
|
END;
|
|
if lcParametruP is not null then
|
|
lcSelect := 'SELECT ' || lcAnalitic || ' AS ACONT
|
|
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 ' || CASE UPPER(lcNumeColoanaP)
|
|
WHEN 'ID_GESTIUNE' THEN
|
|
tnIdGestiune
|
|
WHEN 'ID_ARTICOL' THEN
|
|
tnIdArticol
|
|
END || ' = ' || lcNumeColoanaP || ' ' || (CASE
|
|
WHEN lcColoanaS IS NULL or lcParametruS IS NULL THEN
|
|
''
|
|
ELSE
|
|
'AND ' || CASE UPPER(lcNumeColoanaS)
|
|
WHEN 'ID_GESTIUNE' THEN
|
|
'tnIdGestiune'
|
|
WHEN 'ID_ARTICOL' THEN
|
|
'tnIdArticol'
|
|
END || ' = ' || lcNumeColoanaS
|
|
END);
|
|
|
|
EXECUTE IMMEDIATE lcSelect
|
|
into lcAcont;
|
|
END IF; -- lcParametruP
|
|
|
|
return lcAcont;
|
|
END GetAnaliticByArticol;
|
|
-----------------------------------------------------------------------------------------------
|
|
Procedure citeste_vanzari_seturi(V_COD IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) is
|
|
begin
|
|
OPEN V_CURSOR FOR
|
|
select b2.id_vanzare_set,
|
|
cast(a2.id_vanzare_det as number(10)) as id_vanzare_det,
|
|
b2.denumire,
|
|
b2.explicatie,
|
|
b2.cantitate,
|
|
b2.um,
|
|
b2.serie,
|
|
cast(decode(a2.in_valuta,
|
|
1,
|
|
round(b2.pret * a2.curs / a2.multiplicator,
|
|
pack_sesiune.nzecimale_pretv),
|
|
b2.pret) as number(14, 4)) as pret,
|
|
cast(decode(a2.in_valuta, 1, b2.pret, 0) as number(14, 4)) as pret_val,
|
|
a2.id_valuta,
|
|
a2.in_valuta as tip_valuta,
|
|
c2.nume_val,
|
|
decode(a2.in_valuta,
|
|
1,
|
|
round(Nvl(b2.discount_unitar, 0) * a2.curs /
|
|
a2.multiplicator,
|
|
pack_sesiune.nzecimale_pretv),
|
|
Nvl(b2.discount_unitar, 0)) as discount_unitar,
|
|
decode(a2.in_valuta, 1, Nvl(b2.discount_unitar, 0), 0) as discount_unitar_val,
|
|
b2.pret_cu_tva as pret_cu_tva,
|
|
a2.curs,
|
|
a2.multiplicator,
|
|
cast(0 as number(18)) as id_ctr, -- a2.id_ctr,
|
|
cast(null as varchar2(100)) as numar_contract, -- c2.numar_contract,
|
|
cast(a2.proc_tvav as number(8, 4)) as proc_Tvav,
|
|
cast(a2.id_jtva_coloana as number(10)) as id_jtva_coloana,
|
|
cast(a2.gestionabil as number(1)) as gestionabil,
|
|
cast(null as varchar2(100)) as codmat,
|
|
cast(null as varchar2(100)) as codmatf,
|
|
cast(null as varchar2(100)) as codbare,
|
|
cast(0 as number(14, 4)) as pret_achizitie,
|
|
cast(null as number(10)) as id_gestiune
|
|
from (select b.id_vanzare_set,
|
|
a.in_valuta,
|
|
-- b.id_ctr,
|
|
max(b.proc_tvav) as proc_tvav,
|
|
max(nvl2(b.id_gestiune, 1, 0)) as gestionabil,
|
|
min(b.id_jtva_coloana) as id_jtva_coloana,
|
|
min(b.id_vanzare_det) as id_vanzare_det,
|
|
c.curs,
|
|
c.multiplicator,
|
|
decode(a.in_valuta,
|
|
1,
|
|
c.id_valuta,
|
|
pack_def.getidmonedanationala()) as id_valuta
|
|
from (select id_vanzare, in_valuta
|
|
from vanzari
|
|
where cod = V_COD
|
|
and sters = 0) a
|
|
left join vanzari_detalii b
|
|
on a.id_vanzare = b.id_vanzare
|
|
and b.sters = 0
|
|
left join vanzari_cursuri c
|
|
on decode(a.in_valuta, 1, b.id_valuta, -10000) =
|
|
decode(a.in_valuta, 1, c.id_valuta, -9999)
|
|
and a.id_vanzare = c.id_vanzare
|
|
where b.id_vanzare_set is not null
|
|
group by b.id_vanzare_set,
|
|
a.in_valuta,
|
|
b.id_ctr,
|
|
c.curs,
|
|
c.multiplicator,
|
|
decode(a.in_valuta,
|
|
1,
|
|
c.id_valuta,
|
|
pack_def.getidmonedanationala())) a2
|
|
left join vanzari_seturi b2
|
|
on a2.id_vanzare_set = b2.id_vanzare_set
|
|
left join nom_valute c2
|
|
on a2.id_valuta = c2.id_valuta;
|
|
|
|
end citeste_vanzari_seturi;
|
|
-----------------------------------------------------------------------------------------------
|
|
Procedure citeste_proforme_seturi(V_ID_PROFORMA IN NUMBER,
|
|
V_CURSOR OUT cursor_facturare) is
|
|
begin
|
|
OPEN V_CURSOR FOR
|
|
select b2.id_proforma_set as id_vanzare_set,
|
|
cast(a2.id_proforma_det as number(10)) as id_vanzare_det,
|
|
b2.denumire,
|
|
b2.explicatie,
|
|
b2.cantitate,
|
|
b2.um,
|
|
b2.serie,
|
|
cast(round(decode(a2.in_valuta,
|
|
1,
|
|
round(b2.pret * a2.curs / a2.multiplicator,
|
|
pack_sesiune.nzecimale_pretv),
|
|
b2.pret),
|
|
pack_sesiune.nzecimale_pretv) as number(14, 4)) as pret,
|
|
cast(round(decode(a2.in_valuta, 1, b2.pret, 0),
|
|
pack_sesiune.nzecimale_pretvval) as number(14, 4)) as pret_val,
|
|
a2.id_valuta,
|
|
a2.in_valuta as tip_valuta,
|
|
c2.nume_val,
|
|
decode(a2.in_valuta,
|
|
1,
|
|
round(Nvl(b2.discount_unitar, 0) * a2.curs /
|
|
a2.multiplicator,
|
|
pack_sesiune.nzecimale_pretv),
|
|
Nvl(b2.discount_unitar, 0)) as discount_unitar,
|
|
decode(a2.in_valuta, 1, Nvl(b2.discount_unitar, 0), 0) as discount_unitar_val,
|
|
b2.pret_cu_tva as pret_cu_tva,
|
|
a2.curs,
|
|
a2.multiplicator,
|
|
cast(0 as number(18)) as id_ctr, -- a2.id_ctr,
|
|
cast(null as varchar2(100)) as numar_contract, -- c2.numar_contract,
|
|
cast(a2.proc_tvav as number(8, 4)) as proc_Tvav,
|
|
cast(a2.id_jtva_coloana as number(10)) as id_jtva_coloana,
|
|
cast(a2.gestionabil as number(1)) as gestionabil,
|
|
cast(null as varchar2(100)) as codmat,
|
|
cast(null as varchar2(100)) as codmatf,
|
|
cast(null as varchar2(100)) as codbare,
|
|
cast(0 as number(14, 4)) as pret_achizitie,
|
|
cast(null as number(10)) as id_gestiune
|
|
from (select b.id_proforma_set,
|
|
a.in_valuta,
|
|
-- b.id_ctr,
|
|
max(b.proc_tvav) as proc_tvav,
|
|
max(nvl2(b.id_gestiune, 1, 0)) as gestionabil,
|
|
min(b.id_jtva_coloana) as id_jtva_coloana,
|
|
min(b.id_proforma_det) as id_proforma_det,
|
|
c.curs,
|
|
c.multiplicator,
|
|
decode(a.in_valuta,
|
|
1,
|
|
c.id_valuta,
|
|
pack_def.getidmonedanationala()) as id_valuta
|
|
from (select id_proforma, in_valuta
|
|
from proforme
|
|
where id_proforma = V_ID_PROFORMA
|
|
and sters = 0) a
|
|
left join proforme_detalii b
|
|
on a.id_proforma = b.id_proforma
|
|
and b.sters = 0
|
|
left join proforme_cursuri c
|
|
on decode(a.in_valuta, 1, b.id_valuta, -10000) =
|
|
decode(a.in_valuta, 1, c.id_valuta, -9999)
|
|
and a.id_proforma = c.id_proforma
|
|
where b.id_proforma_set is not null
|
|
group by b.id_proforma_set,
|
|
a.in_valuta,
|
|
b.id_ctr,
|
|
c.curs,
|
|
c.multiplicator,
|
|
decode(a.in_valuta,
|
|
1,
|
|
c.id_valuta,
|
|
pack_def.getidmonedanationala())) a2
|
|
left join proforme_seturi b2
|
|
on a2.id_proforma_set = b2.id_proforma_set
|
|
left join nom_valute c2
|
|
on a2.id_valuta = c2.id_valuta;
|
|
|
|
end citeste_proforme_seturi;
|
|
-----------------------------------------------------------------------------------------------
|
|
procedure adauga_note_tva_incasare is
|
|
begin
|
|
UPDATE ACT_TEMP
|
|
SET SCC = '4428'
|
|
WHERE SCC = '4427'
|
|
AND TVA_INCASARE = 1
|
|
AND ID_JTVA_COLOANA IN
|
|
(SELECT ID_TVA
|
|
FROM JTVA_COLOANE
|
|
WHERE ID_JTVA_COLOANA IN (SELECT ID_JTVA_NEEX
|
|
FROM JTVA_COLOANE
|
|
WHERE STERS = 0
|
|
AND JV = 1));
|
|
|
|
INSERT INTO ACT_TEMP
|
|
(ID_ACT,
|
|
SERIE_ACT,
|
|
NRACT,
|
|
DATAIREG,
|
|
DATAACT,
|
|
PERECHEC,
|
|
SCD,
|
|
ASCD,
|
|
SCC,
|
|
ASCC,
|
|
SUMA,
|
|
ID_JTVA_COLOANA,
|
|
PROC_TVA,
|
|
ID_CTR,
|
|
ID_LUCRARE,
|
|
ID_FDOC,
|
|
ID_SECTIE,
|
|
ID_VENCHELT,
|
|
ID_FACT,
|
|
TVA_INCASARE,
|
|
ID_SET)
|
|
SELECT pack_facturare.nid_act + rownum as ID_ACT,
|
|
pack_facturare.cserie_act_incasare as serie_act,
|
|
pack_facturare.nnumar_act_incasare as nract,
|
|
pack_facturare.ddata_ireg as dataireg,
|
|
pack_facturare.ddata_act as dataact,
|
|
pack_facturare.nnumar_act as perechec,
|
|
'4428' as scd,
|
|
A1.ACONT as ascd,
|
|
'4427' as scc,
|
|
'' as ascc,
|
|
ROUND((CASE
|
|
WHEN A1.DIF <= 0 THEN
|
|
A1.totctva
|
|
ELSE
|
|
A1.totctva - A1.DIF
|
|
END) / A1.proc_tva * (A1.proc_tva - 1),
|
|
pack_sesiune.getoptiunefirma('PC')) as suma,
|
|
A3.ID_TVA AS ID_JTVA_COLOANA,
|
|
A1.PROC_TVA,
|
|
Null as id_ctr,
|
|
NVL(pack_facturare.nid_lucrare, 0) as id_lucrare,
|
|
A1.ID_FDOC,
|
|
A1.ID_SECTIE,
|
|
A1.ID_VENCHELT,
|
|
-5 AS id_fact,
|
|
pack_facturare.ntva_incasare,
|
|
pack_facturare.nid_set as id_set
|
|
FROM (select MAX(ID_FDOC) OVER() as id_fdoc,
|
|
acont,
|
|
proc_tva,
|
|
id_jtva_coloana,
|
|
baza,
|
|
tva,
|
|
totctva,
|
|
id_sectie,
|
|
id_venchelt,
|
|
SUM(totctva) OVER(ORDER BY PROC_TVA DESC, ACONT) as DIF
|
|
from (SELECT MAX(ID_FDOC) AS ID_FDOC,
|
|
NULL AS ACONT,
|
|
2 AS PROC_TVA,
|
|
0 as baza,
|
|
0 as tva,
|
|
(-1) * sum(suma) AS totctva,
|
|
NULL AS ID_JTVA_COLOANA,
|
|
NULL AS ID_SECTIE,
|
|
NULL AS ID_VENCHELT
|
|
FROM act_temp
|
|
WHERE scc = '4111'
|
|
and id_jtva_coloana is null
|
|
UNION ALL
|
|
select null as id_fdoc,
|
|
a.ascc as acont,
|
|
a.proc_tva,
|
|
c.baza,
|
|
a.tva,
|
|
c.baza + a.tva as totctva,
|
|
a.id_jtva_coloana,
|
|
a.id_sectie,
|
|
a.id_venchelt
|
|
from (select ascc,
|
|
proc_tva,
|
|
sum(suma) as tva,
|
|
id_jtva_coloana,
|
|
max(id_sectie) as id_sectie,
|
|
max(id_venchelt) as id_venchelt
|
|
from act_temp
|
|
where id_jtva_coloana in
|
|
(SELECT ID_TVA
|
|
FROM VJTVA_COLOANE
|
|
WHERE ID_JTVA_EX IS NOT NULL)
|
|
group by proc_tva, id_jtva_coloana, ascc) a
|
|
left join jtva_coloane b
|
|
on a.id_jtva_coloana = b.id_tva
|
|
left join (select sum(decode(scc, '4111', -1, 1) * suma) as baza,
|
|
id_jtva_coloana
|
|
from act_temp
|
|
where id_jtva_coloana in
|
|
(SELECT ID_JTVA_COLOANA
|
|
FROM VJTVA_COLOANE
|
|
WHERE ID_JTVA_EX IS NOT NULL)
|
|
group by id_jtva_coloana) c
|
|
on b.id_jtva_coloana = c.id_jtva_coloana)) A1
|
|
LEFT JOIN VJTVA_COLOANE A2
|
|
ON A1.ID_JTVA_COLOANA = A2.ID_TVA
|
|
LEFT JOIN VJTVA_COLOANE A3
|
|
ON A2.ID_JTVA_EX = A3.ID_JTVA_COLOANA
|
|
WHERE A1.ID_JTVA_COLOANA IS NOT NULL
|
|
AND A1.totctva > A1.DIF;
|
|
|
|
end adauga_note_tva_incasare;
|
|
-----------------------------------------------------------------------------------------------
|
|
function citeste_lungcampexplart return NUMBER is
|
|
V_LUNGIME NUMBER(10);
|
|
begin
|
|
select data_length
|
|
into V_LUNGIME
|
|
from user_tab_columns
|
|
where column_name = 'EXPLICATIE'
|
|
and table_name = 'VANZARI_DETALII';
|
|
return V_LUNGIME;
|
|
end citeste_lungcampexplart;
|
|
-----------------------------------------------------------------------------------------------
|
|
function getAnaliticK(tnProcTvaV IN NUMBER) return VARCHAR2 is
|
|
V_ANALITICCUST ACT.ASCC%TYPE;
|
|
lnProcTVA number(2);
|
|
begin
|
|
if tnProcTvaV between 1 and 2 then
|
|
lnProcTVA := round((tnProcTvaV - 1) * 100, 0);
|
|
else
|
|
lnProcTVA := tnProcTvaV;
|
|
end if;
|
|
|
|
-- analiticele tip nou 371,378,4428 pentru descarcarea K
|
|
-- tnProcTvaV = 5/9/19/20/24 sau 1.05/1.09/1.19/1.20/1.24
|
|
-- optiuni de tipul FACTANALITICCUSTK_5/FACTANALITICCUSTK_9/FACTANALITICCUSTK_19...
|
|
V_ANALITICCUST := pack_sesiune.getoptiunefirma('FACTANALITICCUSTK_' ||
|
|
lnProcTVA);
|
|
if V_ANALITICCUST is null then
|
|
-- daca nu gasesc analitice cu optiuni de tip nou, caut optiunile vechi pentru cota standard si cota redusa 5%
|
|
if tnProcTvaV in (1.24, 1.20, 1.19) then
|
|
V_ANALITICCUST := pack_sesiune.getoptiunefirma('FACTANALITICCUSTK2');
|
|
else
|
|
V_ANALITICCUST := pack_sesiune.getoptiunefirma('FACTANALITICCUSTK');
|
|
end if;
|
|
end if;
|
|
return V_ANALITICCUST;
|
|
end getAnaliticK;
|
|
|
|
----------------------------
|
|
-- Obtine sold client 4111 + 461 -419 din balanta_parteneri sau din ireg_parteneri pana la numarul facturii
|
|
-- Pentru afisarea in raportul factura
|
|
procedure getSoldClient(tnAn IN NUMBER,
|
|
tnLuna IN NUMBER,
|
|
tnIdPart IN NUMBER,
|
|
tnIdFact IN NUMBER default 0,
|
|
V_CURSOR OUT cursor_facturare) is
|
|
begin
|
|
IF nvl(tnIdFact, 0) = 0 then
|
|
OPEN V_CURSOR FOR
|
|
SELECT SUM(semn * (precdeb + debit - preccred - credit)) as sold_lei,
|
|
SUM(semn * (precvaldeb + valdebit - precvalcred - valcredit)) as sold_valuta
|
|
from (select 1 as semn,
|
|
precdeb,
|
|
debit,
|
|
preccred,
|
|
credit,
|
|
precvaldeb,
|
|
valdebit,
|
|
precvalcred,
|
|
valcredit
|
|
from balanta_parteneri
|
|
WHERE an = tnAn
|
|
AND luna = tnLuna
|
|
and id_part = tnIdPart
|
|
AND cont in ('4111', '461'));
|
|
ELSE
|
|
|
|
OPEN V_CURSOR FOR
|
|
SELECT SUM(semn * (precdeb + debit - preccred - credit)) as sold_lei,
|
|
SUM(semn * (precvaldeb + valdebit - precvalcred - valcredit)) as sold_valuta
|
|
from (select 1 as semn,
|
|
precdeb,
|
|
debit,
|
|
preccred,
|
|
credit,
|
|
precvaldeb,
|
|
valdebit,
|
|
precvalcred,
|
|
valcredit
|
|
from ireg_parteneri
|
|
WHERE an = tnAn
|
|
AND luna = tnLuna
|
|
and id_part = tnIdPart
|
|
AND cont in ('4111', '461')
|
|
and (dataact < (select max(dataact)
|
|
from ireg_parteneri
|
|
where an = tnAn
|
|
and luna = tnLuna
|
|
and id_part = tnIdPart
|
|
and id_fact = tnIdFact) or
|
|
nract <= (select max(nract)
|
|
from ireg_parteneri
|
|
where an = tnAn
|
|
and luna = tnLuna
|
|
and id_part = tnIdPart
|
|
and id_fact = tnIdFact)));
|
|
|
|
END IF;
|
|
end getSoldClient;
|
|
|
|
end PACK_FACTURARE;
|
|
/
|