Initial commit
This commit is contained in:
84
docs/functions/F_LIST_PRELIEVO_ADD_ARTICOLO.md
Normal file
84
docs/functions/F_LIST_PRELIEVO_ADD_ARTICOLO.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# F_LIST_PRELIEVO_ADD_ARTICOLO
|
||||
|
||||
## Codice Sorgente
|
||||
|
||||
```sql
|
||||
function f_list_prelievo_add_articolo(
|
||||
p_event_id number,
|
||||
p_articolo_add varchar2,
|
||||
p_qta_aperitivo NUMBER := 0,
|
||||
p_qta_seduto NUMBER := 0,
|
||||
p_qta_dolci NUMBER := 0
|
||||
)
|
||||
return varchar2
|
||||
as
|
||||
v_qta_imp number;
|
||||
v_qta_giac number;
|
||||
v_data_evento date;
|
||||
v_cod_art varchar2(10);
|
||||
v_error_json varchar2(4000);
|
||||
v_qta_da_imp NUMBER;
|
||||
v_qta_da_imp_test NUMBER;
|
||||
v_num_evt_imp number;
|
||||
BEGIN
|
||||
|
||||
v_cod_art := p_articolo_add;
|
||||
v_qta_da_imp := nvl(p_qta_aperitivo, 0) + nvl(p_qta_seduto, 0) + nvl(p_qta_dolci, 0);
|
||||
|
||||
begin
|
||||
|
||||
select trunc(data) as data
|
||||
into v_data_evento
|
||||
from eventi where id = p_event_id;
|
||||
exception when no_data_found then
|
||||
rollback;
|
||||
RETURN '{"type":"error","code":"'||SQLCODE||'","stack":"'||SQLERRM||'","message":"Evento non trovato"}';
|
||||
end;
|
||||
begin
|
||||
select qta_giac
|
||||
into v_qta_giac
|
||||
from articoli
|
||||
where COD_ARTICOLO = v_cod_art;
|
||||
exception when no_data_found then
|
||||
rollback;
|
||||
RETURN '{"type":"error","code":"'||SQLCODE||'","stack":"'||SQLERRM||'","message":"Articolo non trovato"}';
|
||||
end;
|
||||
|
||||
|
||||
select count(*)
|
||||
into v_num_evt_imp
|
||||
from V_IMPEGNI_ARTICOLI
|
||||
where COD_ARTICOLO = v_cod_art
|
||||
and data between v_data_evento - 2 and v_data_evento + 2;
|
||||
|
||||
v_qta_imp := nvl(f_get_qta_impegnata (v_cod_art, v_data_evento - 2, v_data_evento + 2 ) , 0);
|
||||
|
||||
--insert impegno articolo
|
||||
begin
|
||||
insert into eventi_det_prel (id_evento, cod_articolo,QTA_MAN_APE,QTA_MAN_SEDU,QTA_MAN_BUFDOL, COSTO_ARTICOLO)
|
||||
values (p_event_id, p_articolo_add, p_qta_aperitivo, p_qta_seduto, p_qta_dolci, f_get_costo_articolo(v_cod_art, v_data_evento));
|
||||
|
||||
-- aggiorna liste prelievo
|
||||
EVENTI_AGGIORNA_QTA_LISTA(
|
||||
P_ID_EVENTO => p_event_id
|
||||
);
|
||||
|
||||
-- Controlla banalmente se sono stati prelevati su altri eventi
|
||||
if v_qta_imp + v_qta_da_imp > v_qta_giac then
|
||||
RETURN '{"type":"warning","message":"Attenzione: Non hai abbastanza articoli di questo tipo a magazzino"}';
|
||||
end if;
|
||||
|
||||
-- Se trovo articoli già impegnati in quel giorno mostro un messaggio - 16/11/2022
|
||||
-- Continuo lo stesso ma do un messaggio di errore anzichè di successo
|
||||
if(v_qta_imp > 0 and v_num_evt_imp > 0) then
|
||||
RETURN '{"type":"warning","code":"'||SQLCODE||'","stack":"'||SQLERRM||'","message":"Attenzione! Articolo '||p_articolo_add||' già impegnato '||v_num_evt_imp||' '||(case when v_num_evt_imp > 1 then 'volte' else 'volta' end)||' dal '||to_char(v_data_evento - 2, 'dd-mm-yyyy')||' al '||to_char(v_data_evento + 2, 'dd-mm-yyyy')||'"}';
|
||||
end if;
|
||||
|
||||
RETURN '{"type":"success","message":"Articolo aggiunto con successo"}';
|
||||
exception when others then
|
||||
RETURN '{"type":"success","message":"Articolo aggiunto con errori: '||replace(replace(SQLERRM, 'ORA-20000: Errore:', ''), '-20000 - ', '')||'"}';
|
||||
end;
|
||||
|
||||
rollback;
|
||||
return '{"type":"error","code":"","stack":"","message":"Errore sconosciuto"}';
|
||||
end f_list_prelievo_add_articolo;```
|
||||
Reference in New Issue
Block a user