cursor_comanda in PACK_FACTURARE now reads RF_SORTARE_COMANDA from OPTIUNI: 1=alphabetical (default, existing behavior), 0=original web order (by ID_COMANDA_ELEMENT). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1180 lines
49 KiB
Plaintext
1180 lines
49 KiB
Plaintext
create or replace package pack_sesiune is
|
|
|
|
-- Author : LIANA.MACINIC
|
|
-- Created : 1/6/2005 3:32:39 PM
|
|
-- Purpose :
|
|
|
|
-- 30.09.2009
|
|
-- marius.mutu
|
|
-- calculeaza_total_cu_tva, calculeaza_total_fara_tva, calculeaza_total_tva - nvl(V_AJUSTARE,0)
|
|
|
|
-- Public type declarations
|
|
V_Schema varchar2(64);
|
|
dev_idLucrare number(20);
|
|
dev_idOrdl number(20);
|
|
dev_idOper number(20);
|
|
anbal number(4);
|
|
lunabal number(2);
|
|
dev_an number(4);
|
|
dev_luna number(2);
|
|
an number(4);
|
|
luna number(2);
|
|
gest_data_init date;
|
|
gest_data_final date;
|
|
sal_idStat number(10);
|
|
id_prg_owner syn_nom_programe.id_program%Type;
|
|
id_prg syn_def_programe.id_prog%Type;
|
|
comenzi_idSectie number(5);
|
|
|
|
-- cont plcont.cont%type;
|
|
cont VARCHAR2(4);
|
|
|
|
nIdeROASTART number(2) := 0;
|
|
nIdeROADEF number(2) := 1;
|
|
nIdeROACONT number(2) := 2;
|
|
nIdeROASAL number(2) := 3;
|
|
nIdeROARES number(2) := 4;
|
|
nIdeROAGEST number(2) := 5;
|
|
nIdeROAIMOB number(2) := 6;
|
|
nIdeROAMANAGER number(2) := 7;
|
|
nIdeROAAUTO number(2) := 8;
|
|
nIdeROANOR number(2) := 9;
|
|
nIdeROADECL number(2) := 10;
|
|
nIdeROARETAIL number(2) := 58;
|
|
nID_UTIL syn_utilizatori.id_util%Type;
|
|
nid_moneda_nationala nom_valute.id_valuta%TYPE;
|
|
nzecimale_pretv number(2);
|
|
nzecimale_preta number(2);
|
|
nzecimale_pretaval number(2);
|
|
nzecimale_pretvval number(2);
|
|
nzecimale_sumav number(2);
|
|
nzecimale_sumaa number(2);
|
|
nzecimale_sumaval number(2);
|
|
|
|
function id_sesiune RETURN NUMBER;
|
|
function get_data_init return date;
|
|
function get_data_final return date;
|
|
procedure set_data_init(tcdata date);
|
|
procedure set_data_final(tcdata date);
|
|
procedure setlunabal(V_LUNA in number);
|
|
procedure setanbal(V_AN in number);
|
|
procedure setLuna(V_LUNA in number);
|
|
procedure setAn(V_AN in number);
|
|
procedure setcont(V_CONT IN varchar2);
|
|
procedure setSchema(v_gcs in varchar2);
|
|
function getlunabal return number;
|
|
function getanbal return number;
|
|
function getluna return number;
|
|
function getan return number;
|
|
function getcont return varchar2;
|
|
function getultimazi return date;
|
|
function getSchema return varchar2;
|
|
PROCEDURE set_data_ron(V_GCS VARCHAR2);
|
|
FUNCTION get_anron RETURN ACT_TEMP.AN%TYPE;
|
|
FUNCTION get_lunaron RETURN ACT_TEMP.LUNA%TYPE;
|
|
FUNCTION suma_ron(TNSUMA NUMBER, TNAN NUMBER, TNLUNA NUMBER) RETURN NUMBER;
|
|
FUNCTION suma_ron(TNSUMA NUMBER,
|
|
TNAN NUMBER,
|
|
TNLUNA NUMBER,
|
|
TNPRECIZIE NUMBER) RETURN NUMBER;
|
|
FUNCTION suma_ron(TNSUMA NUMBER, TDDATA DATE) RETURN NUMBER;
|
|
procedure set_id_stat(tn_id_stat in number);
|
|
function get_id_stat return number;
|
|
FUNCTION getoptiunefirma(tcS IN VARCHAR2, tcOptiune IN VARCHAR2)
|
|
RETURN VARCHAR2;
|
|
FUNCTION getOptiuneFirma(tcOptiune IN VARCHAR2) RETURN VARCHAR2;
|
|
PROCEDURE set_id_prg_owner(tnId_Prg_Owner IN syn_nom_programe.id_program%Type);
|
|
PROCEDURE set_id_prg(tnId_Prg IN syn_def_programe.id_prog%Type);
|
|
FUNCTION get_id_prg_owner return syn_nom_programe.id_program%Type;
|
|
FUNCTION get_id_prg return syn_def_programe.id_prog%Type;
|
|
PROCEDURE set_id_util(tnId_Util IN syn_utilizatori.id_util%Type);
|
|
FUNCTION get_id_util RETURN syn_utilizatori.id_util%Type;
|
|
procedure set_id_sectie_comenzi(tn_id_sectie IN NUMBER);
|
|
function get_id_sectie_comenzi return number;
|
|
function e_mama(tnIdFirma IN NUMBER) return number;
|
|
PROCEDURE SetOptiuneUtilizator(tcVarname IN OPTIUNI_UTIL.VARNAME%TYPE,
|
|
tnIdUtil OPTIUNI_UTIL.ID_UTIL%TYPE,
|
|
tcVarvalue OPTIUNI_UTIL.VARVALUE%TYPE,
|
|
tcVardesc OPTIUNI_UTIL.VARDESC%TYPE := NULL);
|
|
PROCEDURE SetOptiune(tcVarname IN OPTIUNI.VARNAME%TYPE,
|
|
tcVarvalue OPTIUNI.VARVALUE%TYPE,
|
|
tcVarType OPTIUNI.VARTYPE%TYPE DEFAULT 'CHARACTER',
|
|
tcVardesc OPTIUNI.VARDESC%TYPE DEFAULT NULL);
|
|
|
|
PROCEDURE SetOptiune2(tcVarname IN OPTIUNI.VARNAME%TYPE,
|
|
tcVarvalue OPTIUNI.VARVALUE2%TYPE,
|
|
tcVarType OPTIUNI.VARTYPE%TYPE DEFAULT 'CHARACTER',
|
|
tcVardesc OPTIUNI.VARDESC%TYPE DEFAULT NULL);
|
|
|
|
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;
|
|
|
|
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;
|
|
|
|
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,
|
|
V_TIP IN NUMBER) return number;
|
|
|
|
function converteste_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;
|
|
|
|
function converteste_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;
|
|
|
|
function converteste_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,
|
|
V_TIP 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_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,
|
|
V_ZECIMALE_PRET IN NUMBER,
|
|
V_ZECIMALE_SUMA IN NUMBER)
|
|
return number;
|
|
|
|
function tva2proctva(V_TVA IN ACT.SUMA%TYPE,
|
|
V_PRET IN ACT.SUMA%TYPE,
|
|
V_AN IN ACT.AN%TYPE,
|
|
V_LUNA IN ACT.LUNA%TYPE) RETURN ACT.PROC_TVA%TYPE;
|
|
|
|
function tva2proctva(V_TVA IN ACT.SUMA%TYPE, V_PRET IN ACT.SUMA%TYPE)
|
|
RETURN ACT.PROC_TVA%TYPE;
|
|
|
|
FUNCTION verifica_acces(V_TABELA IN VARCHAR2,
|
|
V_ID IN NUMBER,
|
|
V_MINUTE_MAX IN NUMBER) RETURN VARCHAR2;
|
|
|
|
FUNCTION verifica_acces(V_TABELA IN VARCHAR2,
|
|
V_ID IN NUMBER,
|
|
V_MINUTE_MAX IN NUMBER,
|
|
V_TIP IN NUMBER) RETURN VARCHAR2;
|
|
|
|
PROCEDURE blocheaza_acces(V_TABELA IN VARCHAR2,
|
|
V_ID IN NUMBER,
|
|
V_MINUTE_MAX IN NUMBER);
|
|
|
|
PROCEDURE deblocheaza_acces(V_SID IN NUMBER);
|
|
|
|
PROCEDURE deblocheaza_acces(V_TABELA IN VARCHAR2, V_ID IN NUMBER);
|
|
|
|
PROCEDURE deblocheaza_acces_expirat(V_TABELA IN VARCHAR2, V_ID IN NUMBER);
|
|
end pack_sesiune;
|
|
/
|
|
create or replace package body pack_sesiune is
|
|
|
|
-- 17.03.2016
|
|
-- marius.mutu
|
|
-- tva2proctva - s-a calculat si procent tva 5% din raportul tva/pret,
|
|
-- la 5% aparea cota standard ex: 20% 2016
|
|
|
|
-- 18.10.2016
|
|
-- marius.mutu
|
|
-- + SetOptiune
|
|
|
|
-- 13.11.2020
|
|
-- marius.mutu
|
|
-- + SetOptiune2 (salveaza in optiuni.varvalue2 clob in loc de optiuni.varvalue varchar2)
|
|
|
|
FUNCTION id_sesiune RETURN NUMBER IS
|
|
V_RETURN NUMBER(20) := 0;
|
|
BEGIN
|
|
V_RETURN := DEV_IDLUCRARE;
|
|
RETURN V_RETURN;
|
|
END;
|
|
|
|
FUNCTION get_data_init RETURN date IS
|
|
BEGIN
|
|
|
|
return gest_data_init;
|
|
END;
|
|
|
|
FUNCTION get_data_final RETURN date IS
|
|
BEGIN
|
|
|
|
return gest_data_final;
|
|
END;
|
|
|
|
procedure set_data_init(tcdata in date) is
|
|
|
|
lcdata date := tcdata;
|
|
begin
|
|
gest_data_init := lcdata;
|
|
end;
|
|
|
|
procedure set_data_final(tcdata in date) is
|
|
|
|
lcdata date := tcdata;
|
|
begin
|
|
gest_data_final := lcdata;
|
|
end;
|
|
------------------------------------------------------------------
|
|
procedure setlunabal(V_LUNA IN NUMBER) is
|
|
begin
|
|
lunabal := V_LUNA;
|
|
end;
|
|
------------------------------------------------------------------
|
|
procedure setanbal(V_AN IN NUMBER) is
|
|
begin
|
|
anbal := V_AN;
|
|
end;
|
|
------------------------------------------------------------------
|
|
procedure setluna(V_LUNA IN NUMBER) is
|
|
begin
|
|
dev_luna := V_LUNA;
|
|
luna := V_LUNA;
|
|
end;
|
|
------------------------------------------------------------------
|
|
procedure setan(V_AN IN NUMBER) is
|
|
begin
|
|
dev_an := V_AN;
|
|
an := V_AN;
|
|
end;
|
|
------------------------------------------------------------------
|
|
procedure setcont(V_CONT IN varchar2) is
|
|
begin
|
|
cont := V_CONT;
|
|
end;
|
|
------------------------------------------------------------------
|
|
procedure setschema(V_gcs IN varchar2) is
|
|
begin
|
|
V_schema := v_gcs;
|
|
end;
|
|
------------------------------------------------------------------
|
|
function getlunabal return number is
|
|
begin
|
|
return lunabal;
|
|
end;
|
|
------------------------------------------------------------------
|
|
function getanbal return number is
|
|
begin
|
|
return anbal;
|
|
end;
|
|
------------------------------------------------------------------
|
|
function getluna return number is
|
|
begin
|
|
return dev_luna;
|
|
end;
|
|
------------------------------------------------------------------
|
|
function getan return number is
|
|
begin
|
|
return dev_an;
|
|
end;
|
|
------------------------------------------------------------------
|
|
function getcont return varchar2 is
|
|
begin
|
|
return cont;
|
|
end;
|
|
------------------------------------------------------------------
|
|
function getultimazi return date is
|
|
begin
|
|
return last_day(to_date(dev_an || '/' || dev_luna || '/01',
|
|
'YYYY/MM/DD'));
|
|
end;
|
|
|
|
---------------------------------------------------------------
|
|
function getschema return varchar2 is
|
|
begin
|
|
return v_schema;
|
|
end;
|
|
|
|
---------------------------------------------------------------
|
|
FUNCTION getoptiunefirma(tcS IN VARCHAR2, tcOptiune IN VARCHAR2)
|
|
RETURN VARCHAR2 IS
|
|
lcValue Optiuni.Varvalue%Type := '';
|
|
BEGIN
|
|
BEGIN
|
|
select varvalue
|
|
INTO lcValue
|
|
from optiuni
|
|
where UPPER(TRIM(VARNAME)) = UPPER(TRIM(tcOptiune));
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
lcValue := '';
|
|
END;
|
|
RETURN lcValue;
|
|
END;
|
|
|
|
---------------------------------------------------------------
|
|
FUNCTION getOptiuneFirma(tcOptiune IN VARCHAR2) RETURN VARCHAR2 IS
|
|
lcValue Optiuni.Varvalue%Type := '';
|
|
BEGIN
|
|
lcValue := getOptiuneFirma(user, tcOptiune);
|
|
return lcValue;
|
|
END;
|
|
|
|
---------------------------------------------------------------
|
|
PROCEDURE set_data_ron(V_GCS VARCHAR2) IS
|
|
lcDataRon varchar2(50);
|
|
|
|
BEGIN
|
|
execute immediate 'SELECT varvalue from ' || V_GCS ||
|
|
'.optiuni where upper(varname) = ''DATARON'''
|
|
into lcDataRon;
|
|
if lcDataRon is not null then
|
|
pack_contafin.nAnRON := to_number(substr(lcDataRon, 4, 4));
|
|
pack_contafin.nLunaRON := to_number(substr(lcDataRon, 1, 2));
|
|
else
|
|
pack_contafin.nAnRON := 2005;
|
|
pack_contafin.nLunaRON := 7;
|
|
end if;
|
|
END;
|
|
|
|
---------------------------------------------------------------
|
|
FUNCTION get_anron RETURN ACT_TEMP.AN%TYPE IS
|
|
BEGIN
|
|
return pack_contafin.nAnRON;
|
|
END GET_ANRON;
|
|
|
|
---------------------------------------------------------------
|
|
|
|
FUNCTION get_lunaron RETURN ACT_TEMP.LUNA%TYPE IS
|
|
BEGIN
|
|
return pack_contafin.nLunaRon;
|
|
END GET_LUNARON;
|
|
|
|
---------------------------------------------------------------
|
|
|
|
FUNCTION suma_ron(TNSUMA NUMBER, TNAN NUMBER, TNLUNA NUMBER) RETURN NUMBER IS
|
|
|
|
BEGIN
|
|
|
|
IF (tnluna + tnan * 12 <
|
|
pack_sesiune.GET_ANRON() * 12 + pack_sesiune.GET_LUNARON()) AND
|
|
(pack_sesiune.getAn() * 12 + pack_sesiune.getLuna() >=
|
|
pack_sesiune.GET_ANRON() * 12 + pack_sesiune.GET_LUNARON()) THEN
|
|
RETURN NVL(TNSUMA, 0) / 10000;
|
|
ELSE
|
|
RETURN NVL(TNSUMA, 0);
|
|
END IF;
|
|
|
|
END SUMA_RON;
|
|
|
|
---------------------------------------------------------------
|
|
|
|
FUNCTION suma_ron(TNSUMA NUMBER,
|
|
TNAN NUMBER,
|
|
TNLUNA NUMBER,
|
|
TNPRECIZIE NUMBER) RETURN NUMBER IS
|
|
|
|
BEGIN
|
|
|
|
IF (tnluna + tnan * 12 <
|
|
pack_sesiune.GET_ANRON() * 12 + pack_sesiune.GET_LUNARON()) AND
|
|
(pack_sesiune.getAn() * 12 + pack_sesiune.getLuna() >=
|
|
pack_sesiune.GET_ANRON() * 12 + pack_sesiune.GET_LUNARON()) THEN
|
|
RETURN round(NVL(TNSUMA, 0) / 10000, TNPRECIZIE);
|
|
ELSE
|
|
RETURN ROUND(NVL(TNSUMA, 0), TNPRECIZIE);
|
|
END IF;
|
|
|
|
END SUMA_RON;
|
|
----------------------------
|
|
FUNCTION suma_ron(TNSUMA NUMBER, TDDATA DATE) RETURN NUMBER IS
|
|
lnAn number(4);
|
|
lnLuna number(2);
|
|
BEGIN
|
|
lnAn := extract(year from TDDATA);
|
|
lnLuna := extract(month from TDDATA);
|
|
RETURN pack_sesiune.suma_ron(TNSUMA, LNAN, LNLUNA);
|
|
|
|
END SUMA_RON;
|
|
----------------------------
|
|
procedure set_id_stat(tn_id_stat IN NUMBER) is
|
|
begin
|
|
sal_idStat := tn_id_stat;
|
|
end;
|
|
-----------------------------------
|
|
function get_id_stat return number is
|
|
begin
|
|
return sal_idStat;
|
|
end;
|
|
-----------------------------------
|
|
PROCEDURE set_id_prg_owner(tnId_Prg_Owner IN syn_nom_programe.id_program%Type) IS
|
|
BEGIN
|
|
id_prg_owner := tnId_Prg_Owner;
|
|
END set_id_prg_owner;
|
|
-----------------------------------
|
|
PROCEDURE set_id_prg(tnId_Prg IN syn_def_programe.id_prog%Type) IS
|
|
BEGIN
|
|
id_prg := tnId_Prg;
|
|
END set_id_prg;
|
|
-----------------------------------
|
|
FUNCTION get_id_prg_owner return syn_nom_programe.id_program%Type IS
|
|
BEGIN
|
|
RETURN id_prg_owner;
|
|
END get_id_prg_owner;
|
|
-----------------------------------
|
|
FUNCTION get_id_prg return syn_def_programe.id_prog%Type IS
|
|
BEGIN
|
|
RETURN id_prg;
|
|
END get_id_prg;
|
|
-----------------------------------
|
|
-----------------------------------
|
|
PROCEDURE set_id_util(tnId_Util IN syn_utilizatori.id_util%Type) IS
|
|
v_utilizator syn_vutilizatori.UTILIZATOR%type;
|
|
BEGIN
|
|
nId_Util := tnId_Util;
|
|
begin
|
|
SELECT UTILIZATOR
|
|
INTO v_utilizator
|
|
FROM syn_vutilizatori
|
|
WHERE ID_UTIL = tnId_Util
|
|
AND INACTIV = 0;
|
|
exception
|
|
when NO_DATA_FOUND then
|
|
v_utilizator := '';
|
|
end;
|
|
dbms_session.set_identifier(v_utilizator);
|
|
END set_id_util;
|
|
-----------------------------------
|
|
FUNCTION get_id_util RETURN syn_utilizatori.id_util%Type IS
|
|
BEGIN
|
|
RETURN nId_Util;
|
|
END get_id_util;
|
|
-----------------------------------
|
|
procedure set_id_sectie_comenzi(tn_id_sectie IN NUMBER) is
|
|
begin
|
|
comenzi_idSectie := tn_id_sectie;
|
|
end;
|
|
-----------------------------------
|
|
function get_id_sectie_comenzi return number is
|
|
begin
|
|
return comenzi_idSectie;
|
|
end;
|
|
-----------------------------------
|
|
function e_mama(tnIdFirma IN NUMBER) return number is
|
|
V_E_MAMA NUMBER(1) := 0;
|
|
begin
|
|
if tnIdFirma IS NOT NULL then
|
|
V_E_MAMA := 0;
|
|
else
|
|
select max(NVL(e_mama, 0))
|
|
into V_E_MAMA
|
|
from syn_nom_firme
|
|
where schema = USER;
|
|
end if;
|
|
|
|
return v_e_mama;
|
|
end;
|
|
-----------------------------------
|
|
PROCEDURE SetOptiuneUtilizator(tcVarname IN OPTIUNI_UTIL.VARNAME%TYPE,
|
|
tnIdUtil OPTIUNI_UTIL.ID_UTIL%TYPE,
|
|
tcVarvalue OPTIUNI_UTIL.VARVALUE%TYPE,
|
|
tcVardesc OPTIUNI_UTIL.VARDESC%TYPE := NULL) IS
|
|
|
|
BEGIN
|
|
|
|
MERGE INTO optiuni_util
|
|
USING dual
|
|
on (upper(varname) = upper(tcVarname) and id_util = tnIdUtil)
|
|
WHEN MATCHED THEN
|
|
UPDATE SET varvalue = tcVarvalue
|
|
WHEN NOT MATCHED THEN
|
|
INSERT
|
|
(varname, id_util, vardesc, varvalue)
|
|
VALUES
|
|
(upper(tcVarname), tnIdUtil, tcVardesc, tcVarvalue);
|
|
|
|
END SetOptiuneUtilizator;
|
|
-----------------------------------
|
|
PROCEDURE SetOptiune(tcVarname IN OPTIUNI.VARNAME%TYPE,
|
|
tcVarvalue OPTIUNI.VARVALUE%TYPE,
|
|
tcVarType OPTIUNI.VARTYPE%TYPE DEFAULT 'CHARACTER',
|
|
tcVardesc OPTIUNI.VARDESC%TYPE DEFAULT NULL) IS
|
|
|
|
BEGIN
|
|
|
|
MERGE INTO optiuni
|
|
USING dual
|
|
on (upper(varname) = upper(tcVarname))
|
|
WHEN MATCHED THEN
|
|
UPDATE SET varvalue = tcVarvalue
|
|
WHEN NOT MATCHED THEN
|
|
INSERT
|
|
(varname, varvalue, vartype, vardesc)
|
|
VALUES
|
|
(upper(tcVarname), tcVarvalue, tcVarType, tcVardesc);
|
|
|
|
END SetOptiune;
|
|
|
|
----------------------------------------------------------------------------
|
|
PROCEDURE SetOptiune2(tcVarname IN OPTIUNI.VARNAME%TYPE,
|
|
tcVarvalue OPTIUNI.VARVALUE2%TYPE,
|
|
tcVarType OPTIUNI.VARTYPE%TYPE DEFAULT 'CHARACTER',
|
|
tcVardesc OPTIUNI.VARDESC%TYPE DEFAULT NULL) IS
|
|
BEGIN
|
|
MERGE INTO optiuni
|
|
USING dual
|
|
on (upper(varname) = upper(tcVarname))
|
|
WHEN MATCHED THEN
|
|
UPDATE SET varvalue2 = tcVarvalue
|
|
WHEN NOT MATCHED THEN
|
|
INSERT
|
|
(varname, varvalue2, vartype, vardesc)
|
|
VALUES
|
|
(upper(tcVarname), tcVarvalue, tcVarType, tcVardesc);
|
|
|
|
END SetOptiune2;
|
|
|
|
----------------------------------------------------------------------------
|
|
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
|
|
V_PRET_FARA_TVA number := 0;
|
|
V_ZECIMALE number(2);
|
|
V_ZECIMALEVAL number(2);
|
|
BEGIN
|
|
IF V_TIP = 1 THEN
|
|
-- achizitie
|
|
V_ZECIMALE := pack_sesiune.nzecimale_preta;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretaval;
|
|
ELSE
|
|
-- vanzare
|
|
V_ZECIMALE := pack_sesiune.nzecimale_pretv;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretvval;
|
|
END IF;
|
|
IF V_PRET_ARE_TVA = 0 THEN
|
|
-- pretul de referinta este fara tva
|
|
IF NVL(V_ID_VALUTA, pack_sesiune.nid_moneda_nationala) <>
|
|
pack_sesiune.nid_moneda_nationala THEN
|
|
-- pretul este in valuta
|
|
V_PRET_FARA_TVA := ROUND(V_CURS *
|
|
ROUND(V_PRET_UNITAR, V_ZECIMALEVAL),
|
|
V_ZECIMALE);
|
|
ELSE
|
|
V_PRET_FARA_TVA := ROUND(V_PRET_UNITAR, V_ZECIMALE);
|
|
END IF;
|
|
ELSE
|
|
-- pretul de referinta este cu tva
|
|
V_PRET_FARA_TVA := ROUND(calculeaza_pret_cu_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip)
|
|
|
|
/ V_PROC_TVA,
|
|
V_ZECIMALE);
|
|
END IF;
|
|
return V_PRET_FARA_TVA;
|
|
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;
|
|
V_ZECIMALE number(2);
|
|
V_ZECIMALEVAL number(2);
|
|
BEGIN
|
|
IF V_TIP = 1 THEN
|
|
-- achizitie
|
|
V_ZECIMALE := pack_sesiune.nzecimale_preta;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretaval;
|
|
ELSE
|
|
-- vanzare
|
|
V_ZECIMALE := pack_sesiune.nzecimale_pretv;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretvval;
|
|
END IF;
|
|
IF V_PRET_ARE_TVA = 0 THEN
|
|
-- pretul de referinta este fara tva
|
|
V_PRET_TVA := ROUND(pack_sesiune.calculeaza_pret_fara_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip) *
|
|
(V_PROC_TVA - 1),
|
|
V_ZECIMALE);
|
|
ELSE
|
|
-- pretul de referinta este cu tva
|
|
V_PRET_TVA := pack_sesiune.calculeaza_pret_cu_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip) -
|
|
pack_sesiune.calculeaza_pret_fara_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip);
|
|
END IF;
|
|
return V_PRET_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,
|
|
V_TIP IN NUMBER) RETURN NUMBER IS
|
|
V_PRET_CU_TVA number := 0;
|
|
V_ZECIMALE number(2);
|
|
V_ZECIMALEVAL number(2);
|
|
BEGIN
|
|
IF V_TIP = 1 THEN
|
|
-- achizitie
|
|
V_ZECIMALE := pack_sesiune.nzecimale_preta;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretaval;
|
|
ELSE
|
|
-- vanzare
|
|
V_ZECIMALE := pack_sesiune.nzecimale_pretv;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretvval;
|
|
END IF;
|
|
IF V_PRET_ARE_TVA = 0 THEN
|
|
V_PRET_CU_TVA := pack_sesiune.calculeaza_pret_fara_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip) +
|
|
pack_sesiune.calculeaza_pret_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip);
|
|
ELSE
|
|
-- pretul de referinta este cu tva
|
|
IF NVL(V_ID_VALUTA, pack_sesiune.nid_moneda_nationala) <>
|
|
pack_sesiune.nid_moneda_nationala THEN
|
|
-- pretul este in valuta
|
|
V_PRET_CU_TVA := ROUND(V_CURS * ROUND(V_PRET_UNITAR, V_ZECIMALEVAL),
|
|
V_ZECIMALE);
|
|
ELSE
|
|
V_PRET_CU_TVA := ROUND(V_PRET_UNITAR, V_ZECIMALE);
|
|
END IF;
|
|
END IF;
|
|
return V_PRET_CU_TVA;
|
|
end calculeaza_pret_cu_tva;
|
|
----------------------------------------------------------------------------
|
|
function converteste_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
|
|
V_PRET_FARA_TVA number := 0;
|
|
V_ZECIMALE number(2);
|
|
V_ZECIMALEVAL number(2);
|
|
BEGIN
|
|
IF V_TIP = 1 THEN
|
|
-- achizitie
|
|
V_ZECIMALE := pack_sesiune.nzecimale_preta;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretaval;
|
|
ELSE
|
|
-- vanzare
|
|
V_ZECIMALE := pack_sesiune.nzecimale_pretv;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretvval;
|
|
END IF;
|
|
IF V_PRET_ARE_TVA = 0 THEN
|
|
-- pretul de referinta este fara tva
|
|
IF NVL(V_ID_VALUTA, pack_sesiune.nid_moneda_nationala) <>
|
|
pack_sesiune.nid_moneda_nationala THEN
|
|
-- pretul este in valuta
|
|
V_PRET_FARA_TVA := ROUND(ROUND(V_PRET_UNITAR, V_ZECIMALE) / V_CURS,
|
|
V_ZECIMALEVAL);
|
|
ELSE
|
|
V_PRET_FARA_TVA := ROUND(V_PRET_UNITAR, V_ZECIMALE);
|
|
END IF;
|
|
ELSE
|
|
-- pretul de referinta este cu tva
|
|
V_PRET_FARA_TVA := ROUND(pack_sesiune.converteste_pret_cu_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip)
|
|
|
|
/ V_PROC_TVA,
|
|
(CASE
|
|
WHEN NVL(V_ID_VALUTA,
|
|
pack_sesiune.nid_moneda_nationala) <>
|
|
pack_sesiune.nid_moneda_nationala THEN
|
|
V_ZECIMALEVAL
|
|
ELSE
|
|
V_ZECIMALE
|
|
END));
|
|
END IF;
|
|
return V_PRET_FARA_TVA;
|
|
END converteste_pret_fara_tva;
|
|
----------------------------------------------------------------------------
|
|
function converteste_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;
|
|
V_ZECIMALE number(2);
|
|
V_ZECIMALEVAL number(2);
|
|
BEGIN
|
|
IF V_TIP = 1 THEN
|
|
-- achizitie
|
|
V_ZECIMALE := pack_sesiune.nzecimale_preta;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretaval;
|
|
ELSE
|
|
-- vanzare
|
|
V_ZECIMALE := pack_sesiune.nzecimale_pretv;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretvval;
|
|
END IF;
|
|
IF V_PRET_ARE_TVA = 0 THEN
|
|
-- pretul de referinta este fara tva
|
|
V_PRET_TVA := ROUND(pack_sesiune.converteste_pret_fara_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip) *
|
|
(V_PROC_TVA - 1),
|
|
(CASE
|
|
WHEN NVL(V_ID_VALUTA, pack_sesiune.nid_moneda_nationala) <>
|
|
pack_sesiune.nid_moneda_nationala THEN
|
|
V_ZECIMALEVAL
|
|
ELSE
|
|
V_ZECIMALE
|
|
END));
|
|
ELSE
|
|
-- pretul de referinta este cu tva
|
|
V_PRET_TVA := pack_sesiune.converteste_pret_cu_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip) -
|
|
pack_sesiune.converteste_pret_fara_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip);
|
|
END IF;
|
|
return V_PRET_TVA;
|
|
END converteste_pret_TVA;
|
|
----------------------------------------------------------------------------
|
|
function converteste_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,
|
|
V_TIP IN NUMBER) RETURN NUMBER IS
|
|
V_PRET_CU_TVA number := 0;
|
|
V_ZECIMALE number(2);
|
|
V_ZECIMALEVAL number(2);
|
|
BEGIN
|
|
IF V_TIP = 1 THEN
|
|
-- achizitie
|
|
V_ZECIMALE := pack_sesiune.nzecimale_preta;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretaval;
|
|
ELSE
|
|
-- vanzare
|
|
V_ZECIMALE := pack_sesiune.nzecimale_pretv;
|
|
V_ZECIMALEVAL := pack_sesiune.nzecimale_pretvval;
|
|
END IF;
|
|
IF V_PRET_ARE_TVA = 0 THEN
|
|
V_PRET_CU_TVA := pack_sesiune.converteste_pret_fara_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip) +
|
|
pack_sesiune.converteste_pret_tva(v_pret_unitar,
|
|
v_curs,
|
|
v_id_valuta,
|
|
v_proc_tva,
|
|
v_pret_are_tva,
|
|
v_tip);
|
|
ELSE
|
|
-- pretul de referinta este cu tva
|
|
IF NVL(V_ID_VALUTA, pack_sesiune.nid_moneda_nationala) <>
|
|
pack_sesiune.nid_moneda_nationala THEN
|
|
-- pretul este in valuta
|
|
V_PRET_CU_TVA := ROUND(ROUND(V_PRET_UNITAR, V_ZECIMALE) / V_CURS,
|
|
V_ZECIMALEVAL);
|
|
ELSE
|
|
V_PRET_CU_TVA := ROUND(V_PRET_UNITAR, V_ZECIMALE);
|
|
END IF;
|
|
END IF;
|
|
return V_PRET_CU_TVA;
|
|
end converteste_pret_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
|
|
V_SUMA_CU_TVA ACT.SUMA%TYPE;
|
|
V_ZECIMALEPRET NUMBER(1) := NVL(V_ZECIMALE_PRET,
|
|
pack_sesiune.nzecimale_pretv);
|
|
V_ZECIMALESUMA NUMBER(1) := NVL(V_ZECIMALE_SUMA,
|
|
pack_sesiune.nzecimale_sumav);
|
|
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_ZECIMALEPRET) +
|
|
ROUND(NVL(V_AJUSTARE, 0) * V_PROC_TVAV,
|
|
V_ZECIMALEPRET)) * V_CANTITATE,
|
|
V_ZECIMALESUMA) -
|
|
ROUND(ROUND(NVL(V_CURS, 1) *
|
|
NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALEPRET) * V_CANTITATE,
|
|
V_ZECIMALESUMA);
|
|
ELSE
|
|
V_SUMA_CU_TVA := ROUND((ROUND(NVL(V_CURS, 1) *
|
|
ROUND(V_PRET, V_ZECIMALEPRET),
|
|
V_ZECIMALEPRET) -
|
|
ROUND(NVL(V_CURS, 1) *
|
|
ROUND(NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALEPRET),
|
|
V_ZECIMALEPRET) +
|
|
ROUND(NVL(V_AJUSTARE, 0) * V_PROC_TVAV,
|
|
V_ZECIMALEPRET)) * V_CANTITATE,
|
|
V_ZECIMALESUMA);
|
|
END IF;
|
|
ELSE
|
|
V_SUMA_CU_TVA := 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_ZECIMALEPRET,
|
|
V_ZECIMALESUMA) +
|
|
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_ZECIMALEPRET,
|
|
V_ZECIMALESUMA);
|
|
END IF;
|
|
RETURN V_SUMA_CU_TVA;
|
|
END calculeaza_total_cu_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
|
|
V_SUMA_FARA_TVA ACT.SUMA%TYPE;
|
|
V_ZECIMALEPRET NUMBER(1) := NVL(V_ZECIMALE_PRET,
|
|
pack_sesiune.nzecimale_pretv);
|
|
V_ZECIMALESUMA NUMBER(1) := NVL(V_ZECIMALE_SUMA,
|
|
pack_sesiune.nzecimale_sumav);
|
|
BEGIN
|
|
IF V_PRET_CU_TVA = 1 THEN
|
|
V_SUMA_FARA_TVA := 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_ZECIMALEPRET,
|
|
V_ZECIMALESUMA) -
|
|
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_ZECIMALEPRET,
|
|
V_ZECIMALESUMA);
|
|
ELSE
|
|
IF V_DISCOUNT_EVIDENTIAT = 1 THEN
|
|
V_SUMA_FARA_TVA := ROUND((ROUND(NVL(V_CURS, 1) * V_PRET,
|
|
V_ZECIMALEPRET) +
|
|
NVL(V_AJUSTARE, 0)) * V_CANTITATE,
|
|
V_ZECIMALESUMA) -
|
|
ROUND(ROUND(NVL(V_CURS, 1) *
|
|
NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALEPRET) * V_CANTITATE,
|
|
V_ZECIMALESUMA);
|
|
ELSE
|
|
V_SUMA_FARA_TVA := ROUND((ROUND(NVL(V_CURS, 1) *
|
|
ROUND(V_PRET, V_ZECIMALEPRET),
|
|
V_ZECIMALEPRET) -
|
|
ROUND(NVL(V_CURS, 1) *
|
|
ROUND(NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALEPRET),
|
|
V_ZECIMALEPRET) +
|
|
NVL(V_AJUSTARE, 0)) * V_CANTITATE,
|
|
V_ZECIMALESUMA);
|
|
END IF;
|
|
END IF;
|
|
RETURN V_SUMA_FARA_TVA;
|
|
END calculeaza_total_fara_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
|
|
V_SUMA_TVA ACT.SUMA%TYPE;
|
|
V_ZECIMALEPRET NUMBER(1) := NVL(V_ZECIMALE_PRET,
|
|
pack_sesiune.nzecimale_pretv);
|
|
V_ZECIMALESUMA NUMBER(1) := NVL(V_ZECIMALE_SUMA,
|
|
pack_sesiune.nzecimale_sumav);
|
|
BEGIN
|
|
IF V_PRET_CU_TVA = 1 THEN
|
|
V_SUMA_TVA := ROUND(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_ZECIMALEPRET,
|
|
V_ZECIMALESUMA) *
|
|
(V_PROC_TVAV - 1) / V_PROC_TVAV,
|
|
V_ZECIMALESUMA);
|
|
|
|
ELSE
|
|
IF V_DISCOUNT_EVIDENTIAT = 1 THEN
|
|
V_SUMA_TVA := ROUND(ROUND((ROUND(NVL(V_CURS, 1) * V_PRET,
|
|
V_ZECIMALEPRET) +
|
|
NVL(V_AJUSTARE, 0)) * V_CANTITATE,
|
|
V_ZECIMALESUMA) * (V_PROC_TVAV - 1),
|
|
V_ZECIMALESUMA) -
|
|
ROUND(ROUND(ROUND(NVL(V_CURS, 1) *
|
|
NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALEPRET) * V_CANTITATE,
|
|
V_ZECIMALESUMA) * (V_PROC_TVAV - 1),
|
|
V_ZECIMALESUMA);
|
|
ELSE
|
|
V_SUMA_TVA := ROUND(ROUND((ROUND(NVL(V_CURS, 1) *
|
|
ROUND(V_PRET, V_ZECIMALEPRET),
|
|
V_ZECIMALEPRET) -
|
|
ROUND(NVL(V_CURS, 1) *
|
|
ROUND(NVL(V_DISCOUNT_UNITAR, 0),
|
|
V_ZECIMALEPRET),
|
|
V_ZECIMALEPRET) +
|
|
NVL(V_AJUSTARE, 0)) * V_CANTITATE,
|
|
V_ZECIMALESUMA) * (V_PROC_TVAV - 1),
|
|
V_ZECIMALESUMA);
|
|
END IF;
|
|
END IF;
|
|
RETURN V_SUMA_TVA;
|
|
END calculeaza_total_tva;
|
|
----------------------------------------------------------------------------
|
|
function tva2proctva(V_TVA IN ACT.SUMA%TYPE,
|
|
V_PRET IN ACT.SUMA%TYPE,
|
|
V_AN IN ACT.AN%TYPE,
|
|
V_LUNA IN ACT.LUNA%TYPE) RETURN ACT.PROC_TVA%TYPE is
|
|
V_PROC_TVA ACT.PROC_TVA%TYPE;
|
|
BEGIN
|
|
|
|
if V_PRET = 0 or V_TVA = 0 then
|
|
V_PROC_TVA := 1;
|
|
else
|
|
V_PROC_TVA := ROUND(V_TVA / V_PRET, 2);
|
|
if V_PROC_TVA between 0.03 and 0.07 then
|
|
V_PROC_TVA := 1.05;
|
|
elsif V_PROC_TVA between 0.08 and 0.11 then
|
|
V_PROC_TVA := 1.09;
|
|
else
|
|
V_PROC_TVA := pack_contafin.getCotaTVAStandard(V_LUNA, V_AN);
|
|
end if;
|
|
end if;
|
|
return V_PROC_TVA;
|
|
END tva2proctva;
|
|
----------------------------------------------------------------------------
|
|
function tva2proctva(V_TVA IN ACT.SUMA%TYPE, V_PRET IN ACT.SUMA%TYPE)
|
|
RETURN ACT.PROC_TVA%TYPE is
|
|
BEGIN
|
|
return pack_sesiune.tva2proctva(V_TVA,
|
|
V_PRET,
|
|
pack_sesiune.an,
|
|
pack_sesiune.luna);
|
|
END tva2proctva;
|
|
----------------------------------------------------------------------------
|
|
FUNCTION verifica_acces(V_TABELA IN VARCHAR2,
|
|
V_ID IN NUMBER,
|
|
V_MINUTE_MAX IN NUMBER) RETURN VARCHAR2 IS
|
|
BEGIN
|
|
RETURN pack_sesiune.verifica_acces(V_TABELA, V_ID, V_MINUTE_MAX, 1);
|
|
END verifica_acces;
|
|
----------------------------------------------------------------------------
|
|
FUNCTION verifica_acces(V_TABELA IN VARCHAR2,
|
|
V_ID IN NUMBER,
|
|
V_MINUTE_MAX IN NUMBER,
|
|
V_TIP IN NUMBER) RETURN VARCHAR2 IS
|
|
-- V_TIP = 1 - verifica si blocheaza
|
|
-- = 2 - doar verifica
|
|
V_MESAJ VARCHAR2(1000);
|
|
V_DATAORAE DATE;
|
|
V_DATA_ACTUALA DATE;
|
|
BEGIN
|
|
BEGIN
|
|
SELECT MAX(DATAORAE) AS DATAORAE, SYSDATE
|
|
INTO V_DATAORAE, V_DATA_ACTUALA
|
|
FROM TABELE_BLOCATE
|
|
WHERE TABELA = V_TABELA
|
|
AND ID = V_ID;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
V_DATAORAE := NULL;
|
|
V_DATA_ACTUALA := NULL;
|
|
END;
|
|
|
|
IF V_DATAORAE IS NULL THEN
|
|
V_MESAJ := NULL;
|
|
IF V_TIP = 1 THEN
|
|
pack_sesiune.blocheaza_acces(V_TABELA, V_ID, NVL(V_MINUTE_MAX, 60));
|
|
END IF;
|
|
ELSE
|
|
IF V_DATA_ACTUALA > V_DATAORAE THEN
|
|
V_MESAJ := NULL;
|
|
pack_sesiune.deblocheaza_acces_expirat(V_TABELA, V_ID);
|
|
IF V_TIP = 1 THEN
|
|
pack_sesiune.blocheaza_acces(V_TABELA,
|
|
V_ID,
|
|
NVL(V_MINUTE_MAX, 60));
|
|
END IF;
|
|
ELSE
|
|
V_MESAJ := 'Nu puteti face operatii asupra acestei inregistrari! Sesiunea expira la ' ||
|
|
to_char(V_DATAORAE, 'DD/MM/YYYY HH24:mi:ss') || ' !';
|
|
END IF;
|
|
END IF;
|
|
RETURN V_MESAJ;
|
|
END verifica_acces;
|
|
----------------------------------------------------------------------------
|
|
PROCEDURE blocheaza_acces(V_TABELA IN VARCHAR2,
|
|
V_ID IN NUMBER,
|
|
V_MINUTE_MAX IN NUMBER) is
|
|
BEGIN
|
|
INSERT INTO TABELE_BLOCATE
|
|
(SID, TABELA, ID, DATAORAE)
|
|
VALUES
|
|
(sys_context('userenv', 'SID'),
|
|
V_TABELA,
|
|
V_ID,
|
|
SYSDATE + NVL(V_MINUTE_MAX, 60) / (24 * 60));
|
|
END blocheaza_acces;
|
|
----------------------------------------------------------------------------
|
|
PROCEDURE deblocheaza_acces(V_SID IN NUMBER) is
|
|
BEGIN
|
|
DELETE FROM TABELE_BLOCATE WHERE SID = V_SID;
|
|
END deblocheaza_acces;
|
|
----------------------------------------------------------------------------
|
|
PROCEDURE deblocheaza_acces(V_TABELA IN VARCHAR2, V_ID IN NUMBER) is
|
|
BEGIN
|
|
DELETE FROM TABELE_BLOCATE
|
|
WHERE SID = sys_context('userenv', 'SID')
|
|
AND TABELA = V_TABELA
|
|
AND ID = V_ID;
|
|
END deblocheaza_acces;
|
|
----------------------------------------------------------------------------
|
|
PROCEDURE deblocheaza_acces_expirat(V_TABELA IN VARCHAR2, V_ID IN NUMBER) is
|
|
BEGIN
|
|
DELETE FROM TABELE_BLOCATE
|
|
WHERE TABELA = V_TABELA
|
|
AND ID = V_ID;
|
|
END deblocheaza_acces_expirat;
|
|
----------------------------------------------------------------------------
|
|
begin
|
|
pack_sesiune.nid_moneda_nationala := pack_def.GetIdMonedaNationala();
|
|
pack_sesiune.nzecimale_preta := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PPRET');
|
|
pack_sesiune.nzecimale_pretv := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PPRETV');
|
|
pack_sesiune.nzecimale_pretaval := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PPRETVAL');
|
|
pack_sesiune.nzecimale_pretvval := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PVAL');
|
|
pack_sesiune.nzecimale_sumaa := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PC');
|
|
pack_sesiune.nzecimale_sumav := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PC');
|
|
pack_sesiune.nzecimale_sumaval := PACK_SESIUNE.getoptiunefirma(USER,
|
|
'PVAL');
|
|
end pack_sesiune;
|
|
/
|