Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PACKAGE BODY gruppo2 AS
- PROCEDURE autorimessanontrovata(id_sessione int DEFAULT 0, nome VARCHAR2, ruolo VARCHAR2) IS
- -- Parametri della sede corrente
- BEGIN
- modGUI.apriPagina('HoC | ', id_sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('IL VEICOLO SELEZIONATO NON PUO'' ESSERE PARCHEGGIATO NELLA SEDE SELEZIONATA');
- modGUI.chiudiIntestazione(2);
- modGUI.ChiudiPagina;
- END autorimessanontrovata;
- PROCEDURE competentGarageSearch2 (
- id_Sessione VARCHAR2,
- nome VARCHAR2,
- ruolo VARCHAR2,
- idSedeCorrente INTEGER,
- idVeicoloCorrente INTEGER
- ) /*RETURN AREE%ROWTYPE*/
- AS
- tmp Aree%ROWTYPE;
- veicoloCorrente VEICOLI%ROWTYPE;
- SedeCorrente SEDI%ROWTYPE;
- p list_idaree := list_idaree();
- contatore INTEGER :=0;
- vlunghezzamax INTEGER :=2147483648;
- vlarghezzamax INTEGER :=2147483648;
- valtezzamax INTEGER :=2147483648;
- vpesomax INTEGER :=2147483648;
- vid INTEGER :=0;
- arid INTEGER :=0;
- BEGIN
- IF(idveicolocorrente=0) THEN
- modGUI.apriPagina('HoC | Veicolo non selezionato', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriDiv;
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto(' VEICOLO NON SELEZIONATO, SI PREGA DI AGGIUNGERE UN VEICOLO ');
- modGUI.chiudiIntestazione(2);
- ELSE
- SELECT * INTO veicoloCorrente FROM Veicoli WHERE Veicoli.idVeicolo=idVeicoloCorrente;
- SELECT * INTO sedeCorrente FROM Sedi sed WHERE sed.idSede=idSedeCorrente;
- FOR autorimessa IN (SELECT * FROM Autorimesse)
- LOOP
- IF(autorimessa.idSede = SedeCorrente.idsede )
- THEN
- p:=queryricercaArea(id_Sessione, nome, ruolo, autorimessa.idautorimessa,VeicoloCorrente.idveicolo);
- contatore:=p.COUNT;
- FOR i IN 1 .. contatore
- LOOP
- SELECT * INTO tmp FROM Aree WHERE idArea=p(i) AND
- (
- (lunghezzamax<vlunghezzamax OR larghezzamax<=vlarghezzamax OR altezzamax<=valtezzamax OR pesomax<=vpesomax) OR
- (lunghezzamax<=vlunghezzamax OR larghezzamax<vlarghezzamax OR altezzamax<=valtezzamax OR pesomax<=vpesomax) OR
- (lunghezzamax<=vlunghezzamax OR larghezzamax<=vlarghezzamax OR altezzamax<valtezzamax OR pesomax<=vpesomax) OR
- (lunghezzamax<=vlunghezzamax OR larghezzamax<=vlarghezzamax OR altezzamax<=valtezzamax OR pesomax<vpesomax)
- );
- IF tmp.idarea IS NOT NULL THEN
- valtezzamax:=tmp.altezzamax;
- vlunghezzamax:=tmp.lunghezzamax;
- vpesomax:=tmp.pesomax;
- vlarghezzamax:=tmp.larghezzamax;
- vid:=tmp.idarea;
- ELSE NULL; END IF;
- END LOOP;
- ELSE NULL;
- END IF;
- END LOOP;
- IF(vid=0)THEN autorimessanontrovata(id_sessione,nome,ruolo);
- ELSE
- SELECT aree.idautorimessa INTO arid FROM aree WHERE aree.idarea=vid;
- /* update debug
- set numero=vid
- where id=1;*/
- visualizzaAutorimessa(id_Sessione, nome, ruolo,arid);
- END IF;
- END IF;
- END competentGarageSearch2;
- PROCEDURE formRicercaArea(id_Sessione int, nome VARCHAR2, ruolo VARCHAR2) IS
- BEGIN
- modGUI.apriPagina('HoC | Ricerca Area', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('RICERCA AREA');
- modGUI.chiudiIntestazione(2);
- modGUI.apriForm('graphicResultRicercaArea');
- modGUI.inserisciInputHidden('id_Sessione', id_Sessione);
- modGUI.inserisciInputHidden('nome', nome);
- modGUI.inserisciInputHidden('ruolo', ruolo);
- modGUI.apriSelect('autorimessa', 'AUTORIMESSA');
- FOR cur_autorimesse IN (SELECT idAutorimessa, indirizzo FROM Autorimesse)
- LOOP
- modGUI.inserisciOpzioneSelect(cur_autorimesse.idAutorimessa, cur_autorimesse.indirizzo);
- END LOOP;
- modGUI.chiudiSelect;
- modGUI.apriSelect('veicolo', 'VEICOLO', richiesto=>TRUE);
- FOR cur_veicoli IN (
- SELECT Veicoli.idVeicolo, Veicoli.Modello, Veicoli.Produttore , Veicoli.Targa
- FROM Veicoli, VeicoliClienti, Clienti, Sessioni
- WHERE Sessioni.idSessione = id_Sessione AND
- Clienti.idPersona = Sessioni.idPersona AND
- VeicoliClienti.idCliente = Clienti.idCliente AND
- Veicoli.idVeicolo = VeicoliClienti.idVeicolo
- )
- LOOP
- modGUI.inserisciOpzioneSelect(cur_veicoli.idVeicolo, cur_veicoli.Produttore || ' ' || cur_veicoli.Modello || ' - ' || cur_veicoli.Targa);
- END LOOP;
- modGUI.chiudiSelect;
- modGUI.inserisciBottoneReset;
- modGUI.inserisciBottoneForm(testo=>'RICERCA AREA');
- modGUI.chiudiForm;
- modGUI.chiudiPagina;
- END formRicercaArea;
- PROCEDURE introitiparziali(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2, idsedecorrente VARCHAR2, periodo VARCHAR2, datainiziale VARCHAR2, datafinale VARCHAR2) IS
- totaleabb INTEGER :=0;
- totalebigl INTEGER :=0;
- indirizzo VARCHAR2 (100);
- idsededapassare INTEGER :=0;
- --datafinevar varchar2(100);
- --datafinets timestamp;
- BEGIN
- modGUI.apriPagina('HoC | Introiti', id_Sessione, nome, ruolo);
- modgui.acapo;
- IF(datainiziale IS NOT NULL AND datafinale IS NOT NULL AND periodo=1)
- THEN
- IF(idsedecorrente=0) --tutte le sedi con il periodo
- THEN
- --datafinevar:=datafinale||' 23:59:00';
- --datafinets:=TO_TIMESTAMP(datafinevar, 'yyyy-mm-dd hh24:mi:ss');
- modGUI.apriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('Sede');
- modGUI.intestazioneTabella('Introiti Abbonamenti');
- modGUI.intestazioneTabella('Introiti Biglietti');
- modGUI.intestazioneTabella('Dettagli');
- modgui.chiudirigatabella;
- FOR i IN (SELECT * FROM sedi)
- LOOP
- SELECT SUM(abb.costoeffettivo) INTO totaleabb FROM box, abbonamenti abb, aree, autorimesse aut WHERE box.idabbonamento=abb.idabbonamento AND box.idarea=aree.idarea AND aree.idautorimessa=aut.idautorimessa AND aut.idsede=i.idsede AND ((abb.datainizio<TO_DATE('2019-12-19','yyyy-mm-dd') AND abb.datafine>TO_DATE('2019-12-19','yyyy-mm-dd')) OR (abb.datainizio>TO_DATE('2019-12-19','yyyy-mm-dd') AND abb.datainizio<TO_DATE('2021-12-19','yyyy-mm-dd')));
- SELECT SUM(ingora.costo) INTO totalebigl FROM ingressiorari ingora,box, aree, autorimesse aut WHERE ingora.idbox=box.idbox AND box.idarea=aree.idarea AND aree.idautorimessa=aut.idautorimessa AND aut.idsede=i.idsede AND ((ingora.oraentrata<TO_TIMESTAMP(datainiziale,'yyyy-mm-dd') AND ingora.orauscita>TO_TIMESTAMP(datainiziale,'yyyy-mm-dd')) OR (ingora.oraentrata>TO_TIMESTAMP(datainiziale,'yyyy-mm-dd') AND ingora.oraentrata<TO_TIMESTAMP(datafinale||' 23:59:00','yyyy-mm-dd hh24:mi:ss'))) AND ingora.orauscita IS NOT NULL;
- SELECT sedi.indirizzo,sedi.idsede INTO indirizzo,idsededapassare FROM sedi WHERE sedi.idsede=i.idsede;
- IF(totaleabb IS NULL) THEN totaleabb:=0; END IF;
- IF(totalebigl IS NULL) THEN totalebigl:=0; END IF;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(indirizzo);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(totaleabb);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(totalebigl);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.InserisciLente('visualizzaintroitiparzialiabb', id_sessione, nome, ruolo, idsededapassare||'&periodo='||periodo||'&datainiziale='||datainiziale||'&datafinale='||datafinale);
- modgui.chiudielementotabella;
- modgui.chiudirigatabella;
- END LOOP;
- modgui.chiuditabella;
- ELSE --sede specifica con periodo
- SELECT SUM(abb.costoeffettivo) INTO totaleabb FROM box, abbonamenti abb, aree, autorimesse aut WHERE box.idabbonamento=abb.idabbonamento AND box.idarea=aree.idarea AND aree.idautorimessa=aut.idautorimessa AND aut.idsede=idsededapassare AND ((abb.datainizio<TO_DATE('2019-12-19','yyyy-mm-dd') AND abb.datafine>TO_DATE('2019-12-19','yyyy-mm-dd')) OR (abb.datainizio>TO_DATE('2019-12-19','yyyy-mm-dd') AND abb.datainizio<TO_DATE('2021-12-19','yyyy-mm-dd')));
- SELECT SUM(ingora.costo) INTO totalebigl FROM ingressiorari ingora,box, aree, autorimesse aut WHERE ingora.idbox=box.idbox AND box.idarea=aree.idarea AND aree.idautorimessa=aut.idautorimessa AND aut.idsede=idsedecorrente AND ((ingora.oraentrata<TO_TIMESTAMP(datainiziale,'yyyy-mm-dd') AND ingora.orauscita>TO_TIMESTAMP(datainiziale,'yyyy-mm-dd')) OR (ingora.oraentrata>TO_TIMESTAMP(datainiziale,'yyyy-mm-dd') AND ingora.oraentrata<TO_TIMESTAMP(datafinale||' 23:59:00','yyyy-mm-dd hh24:mi:ss'))) AND ingora.orauscita IS NOT NULL;
- SELECT sedi.indirizzo,sedi.idsede INTO indirizzo,idsededapassare FROM sedi WHERE sedi.idsede=idsedecorrente;
- IF(totaleabb IS NULL) THEN totaleabb:=0; END IF;
- IF(totalebigl IS NULL) THEN totalebigl:=0; END IF;
- modGUI.apriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('Sede');
- modGUI.intestazioneTabella('Introiti Abbonamenti');
- modGUI.intestazioneTabella('Introiti Biglietti');
- modGUI.intestazioneTabella('Dettagli');
- modgui.chiudirigatabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(indirizzo);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(totaleabb);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(totalebigl);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.InserisciLente('visualizzaintroitiparzialiabb', id_sessione, nome, ruolo,idsededapassare||'&periodo='||periodo||'&datainiziale='||datainiziale||'&datafinale='||datafinale);
- modgui.chiudielementotabella;
- modgui.chiudirigatabella;
- modgui.chiuditabella;
- END IF;
- ELSE
- IF((datainiziale IS NULL OR datafinale IS NULL) AND periodo=1) THEN
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('Periodo non valido. Introiti totali');
- modGUI.chiudiIntestazione(2);
- END IF;
- IF(idsedecorrente=0)
- THEN --tutte le sedi senza periodo
- modgui.apritabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('Sede');
- modGUI.intestazioneTabella('Introiti Abbonamenti');
- modGUI.intestazioneTabella('Introiti Biglietti');
- modGUI.intestazioneTabella('Dettagli');
- modgui.chiudirigatabella;
- FOR i IN (SELECT * FROM sedi)
- LOOP
- SELECT SUM(abb.costoeffettivo) INTO totaleabb FROM box, abbonamenti abb, aree, autorimesse aut WHERE box.idabbonamento=abb.idabbonamento AND box.idarea=aree.idarea AND aree.idautorimessa=aut.idautorimessa AND aut.idsede=i.idsede;
- SELECT SUM(ingora.costo) INTO totalebigl FROM ingressiorari ingora,box, aree, autorimesse aut WHERE ingora.idbox=box.idbox AND box.idarea=aree.idarea AND aree.idautorimessa=aut.idautorimessa AND aut.idsede=i.idsede AND ingora.orauscita IS NOT NULL;
- SELECT sedi.indirizzo,sedi.idsede INTO indirizzo,idsededapassare FROM sedi WHERE sedi.idsede=i.idsede;
- IF(totaleabb IS NULL) THEN totaleabb:=0; END IF;
- IF(totalebigl IS NULL) THEN totalebigl:=0; END IF;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(indirizzo);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(totaleabb);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(totalebigl);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.InserisciLente('visualizzaintroitiparzialiabb', id_sessione, nome, ruolo, idsededapassare||'&periodo='||periodo||'&datainiziale='||'&datafinale=');
- modgui.chiudielementotabella;
- modgui.chiudirigatabella;---------
- END LOOP;
- modgui.chiuditabella;
- ELSE --sede specifica senza periodo
- SELECT SUM(abb.costoeffettivo) INTO totaleabb FROM box, abbonamenti abb, aree, autorimesse aut WHERE box.idabbonamento=abb.idabbonamento AND box.idarea=aree.idarea AND aree.idautorimessa=aut.idautorimessa AND aut.idsede=idsedecorrente;
- SELECT SUM(ingora.costo) INTO totalebigl FROM ingressiorari ingora,box, aree, autorimesse aut WHERE ingora.idbox=box.idbox AND box.idarea=aree.idarea AND aree.idautorimessa=aut.idautorimessa AND aut.idsede=idsedecorrente AND ingora.orauscita IS NOT NULL;
- SELECT sedi.indirizzo,sedi.idsede INTO indirizzo,idsededapassare FROM sedi WHERE sedi.idsede=idsedecorrente;
- IF(totaleabb IS NULL) THEN totaleabb:=0; END IF;
- IF(totalebigl IS NULL) THEN totalebigl:=0; END IF;
- modGUI.apriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('Sede');
- modGUI.intestazioneTabella('Introiti Abbonamenti');
- modGUI.intestazioneTabella('Introiti Biglietti');
- modGUI.intestazioneTabella('Dettagli');
- modgui.chiudirigatabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(indirizzo);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(totaleabb);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(totalebigl);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.InserisciLente('visualizzaintroitiparzialiabb', id_sessione, nome, ruolo, idsededapassare||'&periodo='||periodo||'&datainiziale='||'&datafinale=');
- modgui.chiudielementotabella;
- modgui.chiudirigatabella;
- modgui.chiuditabella;
- END IF;
- END IF;
- END introitiparziali;
- PROCEDURE graphicResultRicercaArea(id_Sessione int, nome VARCHAR2, ruolo VARCHAR2, autorimessa NUMBER, veicolo VARCHAR2) IS
- altezza_veicolo Veicoli.Altezza%TYPE;
- larghezza_veicolo Veicoli.Larghezza%TYPE;
- lunghezza_veicolo Veicoli.Lunghezza%TYPE;
- peso_veicolo Veicoli.Peso%TYPE;
- alimentazione_veicolo Veicoli.Alimentazione%TYPE;
- checkAlimentazione VARCHAR2(1);
- produttore_veicolo Veicoli.Produttore%TYPE;
- modello_veicolo Veicoli.Modello%TYPE;
- headertab BOOLEAN := TRUE;
- BEGIN
- --Ottengo dimensioni del veicolo--
- SELECT Altezza, Larghezza, Lunghezza, Peso, Alimentazione, Modello, Produttore
- INTO altezza_veicolo, larghezza_veicolo, lunghezza_veicolo, peso_veicolo, alimentazione_veicolo, modello_veicolo, produttore_veicolo
- FROM Veicoli
- WHERE Veicoli.idVeicolo = veicolo;
- IF(alimentazione_veicolo = 'GPL') THEN
- checkAlimentazione := 'T';
- ELSE
- checkAlimentazione := 'F';
- END IF;
- modGUI.apriPagina('HoC | Aree disponibili', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('AREE DISPONIBILI PER: ' || produttore_veicolo || ' ' || modello_veicolo);
- modGUI.chiudiIntestazione(2);
- FOR cur_aree IN (
- SELECT idarea, lunghezzamax, larghezzamax, pesomax, altezzamax, gas
- FROM aree
- WHERE aree.idautorimessa = autorimessa AND
- aree.lunghezzamax >= lunghezza_veicolo AND
- aree.altezzamax >= altezza_veicolo AND
- aree.larghezzamax >= larghezza_veicolo AND
- aree.pesomax >= peso_veicolo AND
- aree.gas = checkAlimentazione
- )
- LOOP
- IF(headertab) THEN
- modGUI.apriDiv;
- modGUI.apriTabella;
- modGUI.apriRigaTabella;
- modGUI.IntestazioneTabella('AREA');
- modGUI.IntestazioneTabella('LUNGHEZZA MAX');
- modGUI.IntestazioneTabella('LARGHEZZA MAX');
- modGUI.IntestazioneTabella('ALTEZZA MAX');
- modGUI.IntestazioneTabella('PESO MAX');
- modGUI.IntestazioneTabella('GAS');
- modGUI.chiudiRigaTabella;
- headertab := FALSE;
- END IF;
- modGUI.apriRigaTabella;
- modGUI.apriElementoTabella;
- modGUI.ElementoTabella(cur_aree.idArea);
- modGUI.chiudiElementoTabella;modGUI.apriElementoTabella;
- modGUI.ElementoTabella(cur_aree.LunghezzaMax);
- modGUI.chiudiElementoTabella;modGUI.apriElementoTabella;
- modGUI.ElementoTabella(cur_aree.LarghezzaMax);
- modGUI.chiudiElementoTabella;modGUI.apriElementoTabella;
- modGUI.ElementoTabella(cur_aree.AltezzaMax);
- modGUI.chiudiElementoTabella;modGUI.apriElementoTabella;
- modGUI.ElementoTabella(cur_aree.PesoMax);
- modGUI.chiudiElementoTabella;modGUI.apriElementoTabella;
- modGUI.ElementoTabella(cur_aree.Gas);
- modGUI.chiudiElementoTabella;
- modGUI.chiudiRigaTabella;
- END LOOP;
- modGUI.chiudiTabella;
- IF(headertab) THEN
- modGUI.esitoOperazione('KO', 'Non è stata trovata nessun''area disponibile per il tuo veicolo!');
- ELSE
- modGUI.chiudiDiv;
- END IF;
- modGUI.chiudiPagina;
- END graphicResultRicercaArea;
- PROCEDURE introiti(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2) IS
- BEGIN
- modGUI.apriPagina('HoC | Visualizza Introiti', id_Sessione, nome, ruolo);
- modgui.acapo;
- modgui.apriForm('introitiparziali');
- modgui.apriparagrafo('rela');
- modgui.inseriscitesto('VISUALIZZA INTROITI ');
- modgui.chiudiparagrafo;
- modgui.inserisciinputhidden('id_Sessione',id_Sessione);
- modgui.inserisciinputhidden('nome',nome);
- modgui.inserisciinputhidden('ruolo',ruolo);
- modGUI.apriSelect('idSedeCorrente', 'Seleziona Sede: ', FALSE, 'defSelect');
- modGUI.inserisciOpzioneSelect('0','Tutte le Sedi',FALSE);
- FOR sede IN (SELECT * FROM sedi)
- LOOP
- modGUI.inserisciOpzioneSelect(sede.idsede,sede.indirizzo,FALSE);
- END LOOP;
- modGUI.chiudiSelect;
- modgui.inserisciradiobutton('Ricerca totale','periodo','0',TRUE);
- modgui.inserisciradiobutton('Ricerca per periodo','periodo','1',FALSE);
- modGUI.inserisciinput('Data inizio', 'date','datainiziale',FALSE,'','defInput');
- modGUI.inserisciinput('Data fine', 'date','datafinale',FALSE,'','defInput');
- modGUI.inserisciBottoneReset('RESET');
- modGUI.inserisciBottoneForm('Submit','defFormButton');
- modgui.chiudiForm;
- modGUI.chiudiPagina;
- END introiti;
- PROCEDURE modificaArea(id_sessione int DEFAULT 0, nome VARCHAR2, ruolo VARCHAR2, idRiga int) AS
- area Aree%ROWTYPE;
- indirizzo_autorimessa Autorimesse.Indirizzo%TYPE;
- id_responsabile Dipendenti.idDipendente%TYPE;
- id_dipendente Dipendenti.idDipendente%TYPE;
- BEGIN
- -- ID del dipendente corrente
- BEGIN
- SELECT Dipendenti.idDipendente
- INTO id_dipendente
- FROM Dipendenti
- join PersoneL ON PersoneL.idPersona = Dipendenti.idPersona
- join Sessioni ON Sessioni.idPersona = PersoneL.idPersona
- WHERE Sessioni.idSessione = id_sessione;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- id_dipendente := NULL;
- END;
- -- ID del dipendente responsabile della sede
- BEGIN
- SELECT Sedi.idDipendente
- INTO id_responsabile
- FROM Sedi
- join Autorimesse ON Autorimesse.idSede = Sedi.idSede
- join Aree ON Aree.idAutorimessa = Autorimesse.idAutorimessa
- WHERE Aree.idArea = idRiga;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- id_responsabile := NULL;
- END;
- SELECT * INTO area
- FROM Aree
- WHERE Aree.idArea = idRiga;
- SELECT Autorimesse.Indirizzo INTO indirizzo_autorimessa
- FROM Autorimesse
- WHERE Autorimesse.idAutorimessa = area.idAutorimessa;
- modGUI.apriPagina('HoC | Modifica Area ' || area.idArea || ' di ' || indirizzo_autorimessa, id_Sessione, nome, ruolo);
- modGUI.apriDiv;
- IF ((ruolo = 'A') OR (ruolo = 'R') OR (ruolo = 'O')) THEN
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('Modifica Area ' || area.idArea || ' di ' || indirizzo_autorimessa);
- modGUI.chiudiIntestazione(2);
- /*
- * Il primo parametro di apriForm indica l'azione da compiere una volta cliccato il tasto di invio
- * (classico esempio reindirizzamento ad una procedura che si occupa della query di inserimento degli input immessi)
- */
- modGUI.apriForm('updateArea');
- modGUI.inserisciInputHidden('id_sessione', id_sessione);
- modGUI.inserisciInputHidden('nome', nome);
- modGUI.inserisciInputHidden('ruolo', ruolo);
- modGUI.inserisciInputHidden('idRiga', idRiga);
- /* esempi di input testo del form*/
- modGUI.inserisciTesto('Posti Totali');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Posti Totali',
- nome => 'var_posti_totali',
- valore => area.PostiTotali,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Posti Liberi');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Posti Liberi',
- nome => 'var_posti_liberi',
- valore => area.PostiLiberi,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Stato');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Stato',
- nome => 'var_stato',
- valore => area.Stato,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Gas');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Gas',
- nome => 'var_gas',
- valore => area.Gas,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Larghezza Massima');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Larghezza Massima',
- nome => 'var_larghezza_max',
- valore => area.LarghezzaMax,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Lunghezza Massima');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Lunghezza Massima',
- nome => 'var_lunghezza_max',
- valore => area.LunghezzaMax,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Altezza Massima');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Altezza Massima',
- nome => 'var_altezza_max',
- valore => area.AltezzaMax,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Peso Massimo');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Peso Massimo',
- nome => 'var_peso_max',
- valore => area.PesoMax,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Costo Abbonamento');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Costo Abbonamento',
- nome => 'var_costo_abbonamento',
- valore => area.CostoAbbonamento,
- richiesto => TRUE
- );
- modGUI.inserisciBottoneReset('RESET');
- modGUI.inserisciBottoneForm();
- modgui.chiudiForm;
- ELSE
- modGUI.esitoOperazione('KO', 'Non sei autorizzato');
- END IF;
- modGUI.ChiudiDiv;
- modGUI.chiudiPagina;
- END modificaArea;
- PROCEDURE modificaAutorimessa(id_sessione int DEFAULT 0, nome VARCHAR2, ruolo VARCHAR2, idRiga int) AS
- autorimessa Autorimesse%ROWTYPE;
- id_dipendente_sede Dipendenti.idDipendente%TYPE;
- id_dipendente_corrente Dipendenti.idDipendente%TYPE;
- BEGIN
- -- ID del dipendente corrente
- BEGIN
- SELECT Dipendenti.idDipendente
- INTO id_dipendente_corrente
- FROM Dipendenti
- join PersoneL ON PersoneL.idPersona = Dipendenti.idPersona
- join Sessioni ON Sessioni.idPersona = PersoneL.idPersona
- WHERE Sessioni.idSessione = id_sessione;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- id_dipendente_corrente := NULL;
- END;
- -- ID del dipendente responsabile della sede
- BEGIN
- SELECT Sedi.idDipendente
- INTO id_dipendente_sede
- FROM Sedi
- join Autorimesse ON Autorimesse.idSede = Sedi.idSede
- WHERE Autorimesse.idAutorimessa = autorimessa.idAutorimessa;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- id_dipendente_sede := NULL;
- END;
- SELECT * INTO autorimessa
- FROM Autorimesse
- WHERE Autorimesse.idAutorimessa = idRiga;
- modGUI.apriPagina('HoC | Modifica Autorimessa di ' || autorimessa.indirizzo, id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriDiv;
- IF (ruolo = 'A' OR (ruolo = 'R' AND (id_dipendente_corrente = id_dipendente_sede))) THEN
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('Modifica Autorimessa di ' || autorimessa.indirizzo);
- modGUI.chiudiIntestazione(2);
- /*
- * Il primo parametro di apriForm indica l'azione da compiere una volta cliccato il tasto di invio
- * (classico esempio reindirizzamento ad una procedura che si occupa della query di inserimento degli input immessi)
- */
- modGUI.apriForm('updateAutorimessa');
- modGUI.inserisciInputHidden('id_sessione', id_sessione);
- modGUI.inserisciInputHidden('nome', nome);
- modGUI.inserisciInputHidden('ruolo', ruolo);
- modGUI.inserisciInputHidden('idRiga', idRiga);
- modGUI.inserisciTesto('Indirizzo');
- modGUI.inserisciInput(
- etichetta => 'Indirizzo',
- nome => 'var_indirizzo',
- valore => autorimessa.indirizzo,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Telefono');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Telefono',
- nome => 'var_telefono',
- valore => autorimessa.telefono,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Coordinate');
- modGUI.inserisciInput(
- etichetta => 'Coordinate',
- nome => 'var_coordinate',
- valore => autorimessa.coordinate,
- richiesto => TRUE
- );
- modGUI.inserisciBottoneReset();
- modGUI.inserisciBottoneForm();
- modgui.chiudiForm;
- ELSE
- modGUI.esitoOperazione('KO', 'Non sei autorizzato a svolgere questa operazione');
- END IF;
- modGUI.ChiudiDiv;
- modGUI.chiudiPagina;
- END modificaAutorimessa;
- PROCEDURE modificaSede(id_sessione int DEFAULT 0, nome VARCHAR2, ruolo VARCHAR2, idRiga int) AS
- sede Sedi%ROWTYPE;
- BEGIN
- SELECT * INTO sede
- FROM Sedi
- WHERE Sedi.idSede = idRiga;
- modGUI.apriPagina('HoC | Modifica Sede di ' || sede.indirizzo, id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriDiv;
- -- Se il ruolo dell'utente non è amministratore esce
- IF (ruolo <> 'A') THEN
- modGUI.esitoOperazione('KO', 'Non sei un amministratore');
- ELSE
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('Modifica Sede di ' || sede.indirizzo);
- modGUI.chiudiIntestazione(2);
- /*
- * Il primo parametro di apriForm indica l'azione da compiere una volta cliccato il tasto di invio
- * (classico esempio reindirizzamento ad una procedura che si occupa della query di inserimento degli input immessi)
- */
- modGUI.apriForm('updateSede');
- modGUI.inserisciInputHidden('id_sessione', id_sessione);
- modGUI.inserisciInputHidden('nome', nome);
- modGUI.inserisciInputHidden('ruolo', ruolo);
- modGUI.inserisciInputHidden('idRiga', idRiga);
- modGUI.inserisciTesto('Indirizzo');
- modGUI.inserisciInput(
- etichetta => 'Indirizzo',
- nome => 'var_indirizzo',
- valore => sede.indirizzo,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Telefono');
- modGUI.inserisciInput(
- tipo => 'number',
- etichetta => 'Telefono',
- nome => 'var_telefono',
- valore => sede.telefono,
- richiesto => TRUE
- );
- modGUI.inserisciTesto('Coordinate');
- modGUI.inserisciInput(
- etichetta => 'Coordinate',
- nome => 'var_coordinate',
- valore => sede.coordinate,
- richiesto => TRUE
- );
- modGUI.inserisciBottoneReset();
- modGUI.inserisciBottoneForm();
- modgui.chiudiForm;
- END IF;
- modGUI.ChiudiDiv;
- modGUI.chiudiPagina;
- END modificaSede;
- FUNCTION queryRicercaArea(id_Sessione int, nome VARCHAR2, ruolo VARCHAR2, autorimessa VARCHAR2, veicolo VARCHAR2)
- RETURN list_idaree IS
- altezza_veicolo Veicoli.Altezza%TYPE;
- larghezza_veicolo Veicoli.Larghezza%TYPE;
- lunghezza_veicolo Veicoli.Lunghezza%TYPE;
- peso_veicolo Veicoli.Peso%TYPE;
- alimentazione_veicolo Veicoli.Alimentazione%TYPE;
- checkAlimentazione VARCHAR2(1);
- produttore_veicolo Veicoli.Produttore%TYPE;
- modello_veicolo Veicoli.Modello%TYPE;
- headertab BOOLEAN := TRUE;
- p list_idaree := list_idaree();
- total INTEGER;
- BEGIN
- --Ottengo dimensioni del veicolo--
- SELECT Altezza, Larghezza, Lunghezza, Peso, Alimentazione, Modello, Produttore
- INTO altezza_veicolo, larghezza_veicolo, lunghezza_veicolo, peso_veicolo, alimentazione_veicolo, modello_veicolo, produttore_veicolo
- FROM Veicoli
- WHERE Veicoli.idVeicolo = veicolo;
- IF(alimentazione_veicolo = 'GPL') THEN
- checkAlimentazione := 'T';
- ELSE
- checkAlimentazione := 'F';
- END IF;
- --Ottengo le aree--
- FOR cur IN (
- SELECT idarea, lunghezzamax, larghezzamax, pesomax, altezzamax, gas
- FROM aree
- WHERE aree.idautorimessa = autorimessa AND
- aree.lunghezzamax >= lunghezza_veicolo AND
- aree.altezzamax >= altezza_veicolo AND
- aree.larghezzamax >= larghezza_veicolo AND
- aree.pesomax >= peso_veicolo AND
- aree.gas = checkAlimentazione
- ) LOOP
- p.extend;
- p(p.COUNT) := cur.idarea;
- END LOOP;
- RETURN p;
- END queryRicercaArea;
- PROCEDURE resSediSovrappopolate(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2, var_giorno VARCHAR2, var_soglia NUMBER) AS
- Sede NUMBER:=0;
- NumeroAttuale NUMBER:=0;
- NumeroNuovo NUMBER:=0;
- indirizzo VARCHAR2(40);
- BEGIN
- modGUI.apriPagina('HoC | Sedi sovrappopolate', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('SEDI SOVRAPPOPOLATE');
- modGUI.aCapo;
- modGUI.inserisciTesto('Giorno: ' || TO_DATE(var_giorno, 'yyyy/mm/dd'));
- modGUI.chiudiIntestazione(3);
- modGUI.apriTabella;
- modGUI.apriRigaTabella;
- modGUI.intestazioneTabella('SEDE');
- modGUI.intestazioneTabella('INGRESSI TOTALI');
- modGUI.chiudiRigaTabella;
- FOR scorriCursoreAbbonamenti IN( WITH
- TotIngressiOrari AS (
- SELECT Sedi.idSede, Sedi.Indirizzo, COUNT(IngressiOrari.idIngressoOrario) AS NumOrari
- FROM IngressiOrari
- join Box ON Box.idBox = IngressiOrari.idBox
- join Aree ON Aree.idArea = Box.idArea
- join Autorimesse ON Autorimesse.idAutorimessa = Aree.idAutorimessa
- join Sedi ON Sedi.idSede = Autorimesse.idSede
- WHERE IngressiOrari.OraEntrata >= TO_TIMESTAMP(var_giorno, 'yyyy-mm-dd')
- AND IngressiOrari.OraUscita <= TO_TIMESTAMP(var_giorno || ' 23:59:00', 'yyyy-mm-dd hh24:mi:ss')
- GROUP BY Sedi.idSede, Sedi.Indirizzo
- ),
- TotIngressiAbbonamenti AS (
- SELECT Sedi.idSede, Sedi.Indirizzo, COUNT(IngressiAbbonamenti.idIngressoAbbonamento) AS NumAbb
- FROM IngressiAbbonamenti
- join Box ON Box.idBox = IngressiAbbonamenti.idBox
- join Aree ON Aree.idArea = Box.idArea
- join Autorimesse ON Autorimesse.idAutorimessa = Aree.idAutorimessa
- join Sedi ON Sedi.idSede = Autorimesse.idSede
- WHERE IngressiAbbonamenti.OraEntrata >= TO_TIMESTAMP(var_giorno, 'yyyy-mm-dd')
- AND IngressiAbbonamenti.OraUscita <= TO_TIMESTAMP(var_giorno || ' 23:59:00', 'yyyy-mm-dd hh24:mi:ss')
- GROUP BY Sedi.idSede, Sedi.Indirizzo
- )
- SELECT TotIngressiOrari.idSede AS IDSede, TotIngressiOrari.Indirizzo AS Indirizzo, COALESCE(TotIngressiAbbonamenti.NumAbb, 0) + COALESCE(TotIngressiOrari.NumOrari, 0) AS TotIngressi
- FROM TotIngressiAbbonamenti
- full outer join TotIngressiOrari ON TotIngressiAbbonamenti.idSede = TotIngressiOrari.idSede
- ORDER BY TotIngressiOrari.idSede)
- LOOP
- Sede:=scorriCursoreAbbonamenti.idsede;
- NumeroAttuale:=scorriCursoreAbbonamenti.TotIngressi;
- indirizzo:=scorriCursoreAbbonamenti.indirizzo;
- IF(NumeroAttuale>var_soglia)THEN
- modGUI.apriRigaTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(indirizzo);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(scorriCursoreAbbonamenti.TotIngressi);
- modGUI.chiudiElementoTabella;
- modGUI.chiudiRigaTabella;
- END IF;
- END LOOP;
- END resSediSovrappopolate;
- PROCEDURE ricercaAutorimessa(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2) IS
- tmp INTEGER;
- idses INTEGER;
- BEGIN
- IF(ruolo='C') THEN
- modGUI.apriPagina('HoC | Inserisci dati', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriDiv;
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto(' RICERCA AUTORIMESSA COMPETENTE ');
- modGUI.chiudiIntestazione(2);
- idses:=TO_NUMBER(id_Sessione);
- /*
- * Il primo parametro di apriForm indica l'azione da compiere una volta cliccato il tasto di invio
- * (classico esempio reindirizzamento ad una procedura che si occupa della query di inserimento degli input immessi)
- */
- /*modgui.apriForm(visualizzaautorimessa,idSessione,nome,ruolo,idSessione,nome,ruolo,'sede','veicolo'); */
- modgui.apriForm('competentGarageSearch2');
- modgui.inserisciinputhidden('id_Sessione',id_Sessione);
- modgui.inserisciinputhidden('nome',nome);
- modgui.inserisciinputhidden('ruolo',ruolo);
- /* esempi di input testo del form*/
- /*esempio di input select del form */
- modGUI.aCapo;
- modGUI.apriSelect('idSedeCorrente', 'Seleziona Sede: ', FALSE, 'defSelect');
- FOR sede IN (SELECT * FROM sedi)
- LOOP
- modGUI.inserisciOpzioneSelect(sede.idsede,sede.indirizzo,FALSE);
- END LOOP;
- modGUI.chiudiSelect;
- modGUI.aCapo;
- modGUI.apriSelect('idVeicoloCorrente', 'Seleziona Veicolo: ', TRUE, 'defSelect');
- SELECT DISTINCT COUNT(*) INTO tmp FROM veicoli vec, veicoliclienti clive, clienti cli, persone pers, sessioni ses WHERE vec.idveicolo=clive.idveicolo AND clive.idcliente= cli.idcliente AND cli.idpersona=pers.idpersona AND pers.idpersona=ses.idpersona AND ses.idsessione=idses; /*vec where exists (select* from sessioni ses, persone pers, clienti cli, veicoliclienti clive where idSessione=ses.idsessione and ses.idpersona=pers.idpersona and cli.idpersona=pers.idpersona and clive.idveicolo=vec.idveicolo and clive.idcliente=cli.idcliente);*/
- IF(tmp=0) THEN
- modGUI.inserisciOpzioneSelect('','Nessun veicolo disponibile',FALSE);
- ELSE
- FOR veicolo IN (SELECT DISTINCT vec.* FROM veicoli vec, veicoliclienti clive, clienti cli, persone pers, sessioni ses WHERE vec.idveicolo=clive.idveicolo AND clive.idcliente= cli.idcliente AND cli.idpersona=pers.idpersona AND pers.idpersona=ses.idpersona AND ses.idsessione=idses)
- LOOP
- modGUI.inserisciOpzioneSelect(veicolo.idveicolo,'Veicolo: ' ||veicolo.produttore ||' '|| veicolo.modello || ' Targa: ' ||veicolo.targa,FALSE);
- END LOOP;
- END IF;
- modGUI.chiudiSelect;
- modGUI.aCapo;
- /*esempio inserimento del bottone di reset dei campi e bottone invio dei dati*/
- modGUI.inserisciBottoneReset('RESET');
- modGUI.inserisciBottoneForm('Submit','defFormButton');
- modgui.chiudiForm;
- ELSE
- modGUI.apriPagina('HoC | Inserisci dati', id_Sessione, nome, ruolo);
- modGUI.esitoOperazione('KO', 'Questa operazione è disponibile soltanto per i clienti');
- END IF;
- modGUI.chiudiPagina;
- END ricercaAutorimessa;
- PROCEDURE classificaSediPiuRedditizie(id_sessione int DEFAULT 0, nome VARCHAR2, ruolo VARCHAR2) IS
- -- ID della sede corrente
- idSede NUMBER;
- indirizzo VARCHAR2(100);
- totale NUMBER;
- -- Cursore che scorre nella query delle sedi ordinate per guadagno
- CURSOR sediCursor IS
- SELECT sedi.idsede, sedi.indirizzo, (SUM(ingressiorari.costo) + SUM(abbonamenti.costoeffettivo)) AS totale
- FROM sedi
- join autorimesse ON sedi.idsede = autorimesse.idsede
- join aree ON autorimesse.idautorimessa = aree.idautorimessa
- join box ON aree.idarea = box.idarea
- join ingressiorari ON box.idbox = ingressiorari.idbox
- join ingressiabbonamenti ON box.idbox = ingressiabbonamenti.idbox
- join abbonamenti ON ingressiabbonamenti.idabbonamento = abbonamenti.idabbonamento
- GROUP BY sedi.idsede, sedi.indirizzo
- ORDER BY totale;
- BEGIN
- -- Crea la pagina e l'intestazione
- modGUI.apriPagina(
- 'HoC | Sedi più Redditizie',
- id_sessione => id_sessione,
- nome => nome,
- ruolo => ruolo
- );
- modGUI.aCapo;
- IF (ruolo <> 'A') THEN
- modGUI.esitoOperazione('KO', 'Non sei autorizzato a vedere');
- ELSE
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('SEDI PIÙ REDDITIZIE');
- modGUI.chiudiIntestazione(3);
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('ID Sede');
- modGUI.intestazioneTabella('Indirizzo');
- modGUI.intestazioneTabella('Totale');
- /*Viene aggiunta una nuova colonna per i bottoni che permetteranno l'eliminazione della riga*/
- modGUI.intestazioneTabella('');
- modGUI.ChiudiRigaTabella;
- -- Apre il cursore
- OPEN sediCursor;
- -- Scorre il cursore
- LOOP
- FETCH sediCursor INTO idSede, indirizzo, totale;
- EXIT WHEN sediCursor%NOTFOUND;
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(idSede);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(indirizzo);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(totale);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- END LOOP;
- -- Chiude il cursore
- CLOSE sediCursor;
- modGUI.chiudiPagina;
- END IF;
- END classificaSediPiuRedditizie;
- PROCEDURE statisticaalimentazione(id_sessione VARCHAR2,nome VARCHAR2, ruolo VARCHAR2) IS
- maxbox INTEGER :=0;
- var_indirizzo VARCHAR2(100);
- var_gas VARCHAR2(1);
- var_risp VARCHAR2(100);
- var_1 VARCHAR2 (100);
- var_2 VARCHAR2 (100);
- BEGIN
- modGUI.apriPagina('HoC | Statistica alimentazione', id_Sessione, nome, ruolo);
- modgui.acapo;
- modgui.apriform('#');
- modgui.apriintestazione(2);
- SELECT tmp.count_box,tmp.indirizzo,tmp.gas INTO maxbox,var_indirizzo,var_gas FROM(
- SELECT COUNT(box.idbox) AS count_box,ar.indirizzo,aree.gas FROM box, aree,autorimesse ar WHERE box.idarea=aree.idarea AND aree.idautorimessa=ar.idautorimessa AND box.occupato='T' GROUP BY ar.indirizzo,aree.gas ORDER BY count_box DESC) tmp
- WHERE ROWNUM=1;
- --if(var_gas='T') then var_risp:='a gas'; else var_risp:='a benzina'; end if;
- SELECT DECODE(var_gas, 'T','a gas','a benzina'), DECODE(maxbox, '1','C''è ','Ci sono ') ,DECODE(maxbox, '1',' veicolo ', ' veicoli ') INTO var_risp, var_1, var_2 FROM dual;
- modgui.inseriscitesto(var_1|| maxbox|| var_2 || 'con alimentazione '||var_risp || ' nel parcheggio di '||var_indirizzo );
- modgui.chiudiintestazione(2);
- modgui.chiudiform;
- modgui.chiudipagina;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- modgui.inseriscitesto('Non ci sono veicoli attualmente parcheggiati');
- modgui.chiudiintestazione(2);
- modgui.chiudiform;
- END statisticaalimentazione;
- PROCEDURE updateArea(
- id_sessione int DEFAULT 0,
- nome VARCHAR2,
- ruolo VARCHAR2,
- idRiga int,
- var_posti_totali Aree.PostiTotali%TYPE,
- var_posti_liberi Aree.PostiLiberi%TYPE,
- var_stato Aree.Stato%TYPE,
- var_gas Aree.Gas%TYPE,
- var_lunghezza_max Aree.LunghezzaMax%TYPE,
- var_larghezza_max Aree.LarghezzaMax%TYPE,
- var_peso_max Aree.PesoMax%TYPE,
- var_costo_abbonamento Aree.CostoAbbonamento%TYPE
- ) AS
- BEGIN
- -- Aggiorna la sede
- UPDATE Aree SET
- Aree.PostiTotali = var_posti_totali,
- Aree.PostiLiberi = var_posti_liberi,
- Aree.Stato = var_stato,
- Aree.Gas = var_gas,
- Aree.LunghezzaMax = var_lunghezza_max,
- Aree.LarghezzaMax = var_larghezza_max,
- Aree.PesoMax = var_peso_max,
- Aree.CostoAbbonamento = var_costo_abbonamento
- WHERE Aree.idArea = idRiga;
- COMMIT;
- -- Richiama la visualizzazione
- visualizzaArea(id_sessione, nome, ruolo, idRiga);
- END updateArea;
- PROCEDURE updateAutorimessa(
- id_sessione int DEFAULT 0,
- nome VARCHAR2,
- ruolo VARCHAR2,
- idRiga int,
- var_indirizzo Autorimesse.Indirizzo%TYPE,
- var_telefono Autorimesse.Telefono%TYPE,
- var_coordinate Autorimesse.Coordinate%TYPE
- ) AS
- id_dipendente_sede Dipendenti.idDipendente%TYPE;
- id_dipendente_corrente Dipendenti.idDipendente%TYPE;
- BEGIN
- -- ID del dipendente corrente
- BEGIN
- SELECT Dipendenti.idDipendente
- INTO id_dipendente_corrente
- FROM Dipendenti
- join PersoneL ON PersoneL.idPersona = Dipendenti.idPersona
- join Sessioni ON Sessioni.idPersona = PersoneL.idPersona
- WHERE Sessioni.idSessione = id_sessione;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- id_dipendente_corrente := NULL;
- END;
- -- ID del dipendente responsabile della sede
- BEGIN
- SELECT Sedi.idDipendente
- INTO id_dipendente_sede
- FROM Sedi
- join Autorimesse ON Autorimesse.idSede = Sedi.idSede
- WHERE Autorimesse.idAutorimessa = idRiga;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- id_dipendente_sede := NULL;
- END;
- IF ((ruolo = 'A') OR ((ruolo = 'R') AND (id_dipendente_corrente = id_dipendente_sede))) THEN
- -- Aggiorna la sede
- UPDATE Autorimesse SET
- Autorimesse.Indirizzo = var_indirizzo,
- Autorimesse.Telefono = var_telefono,
- Autorimesse.Coordinate = var_coordinate
- WHERE Autorimesse.idAutorimessa = idRiga;
- COMMIT;
- ELSE
- modGUI.esitoOperazione('KO', 'Non sei autorizzato ad eseguire questa operazione');
- END IF;
- -- Richiama la visualizzazione
- visualizzaAutorimessa(id_sessione, nome, ruolo, idRiga);
- END updateAutorimessa;
- PROCEDURE updateSede(
- id_sessione int DEFAULT 0,
- nome VARCHAR2,
- ruolo VARCHAR2,
- idRiga int,
- var_indirizzo Sedi.Indirizzo%TYPE,
- var_telefono Sedi.Telefono%TYPE,
- var_coordinate Sedi.Coordinate%TYPE
- ) AS
- BEGIN
- IF (ruolo <> 'A') THEN
- modGUI.apriPagina('HoC | Update Sede', id_sessione, nome, ruolo);
- modGUI.apriDiv;
- modGUI.esitoOperazione('KO', 'Non sei un amministratore');
- modGUI.chiudiDiv;
- modGUI.chiudiPagina;
- ELSE
- -- Aggiorna la sede
- UPDATE Sedi SET
- Sedi.Indirizzo = var_indirizzo,
- Sedi.Telefono = var_telefono,
- Sedi.Coordinate = var_coordinate
- WHERE Sedi.idSede = idRiga;
- COMMIT;
- -- Richiama la visualizzazione
- visualizzaSede(id_sessione, nome, ruolo, idRiga);
- END IF;
- END updateSede;
- PROCEDURE visualizzaArea(id_sessione int DEFAULT 0, nome VARCHAR2, ruolo VARCHAR2, idRiga int) IS
- -- Parametri dell'autorimessa corrente
- area Aree%ROWTYPE;
- -- Indirizzo dell'autorimessa di riferimento
- indirizzo_autorimessa Autorimesse.Indirizzo%TYPE;
- -- ID e indirizzo della sede di riferimento
- id_sede Sedi.idSede%TYPE;
- indirizzo_sede Sedi.Indirizzo%TYPE;
- BEGIN
- BEGIN
- -- Trova la sede
- SELECT * INTO area
- FROM Aree
- WHERE Aree.idArea = idRiga;
- -- Trova ID della sede e indirizzo dell'autorimessa
- SELECT Autorimesse.idSede, Autorimesse.Indirizzo INTO id_sede, indirizzo_autorimessa
- FROM Autorimesse
- WHERE Autorimesse.idAutorimessa = area.idAutorimessa;
- -- Trova l'indirizzo dell'autorimessa
- SELECT Sedi.Indirizzo INTO indirizzo_sede
- FROM Sedi
- WHERE Sedi.idSede = id_sede;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- area := NULL;
- END;
- -- Crea la pagina e l'intestazione
- modGUI.apriPagina('HoC | Area ' || area.idArea || ' di ' || indirizzo_autorimessa, id_sessione, nome, ruolo);
- modGUI.aCapo;
- IF (area.idArea IS NULL) THEN
- modGUI.esitoOperazione('KO', 'Nessuna area trovata');
- ELSE
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('Area ' || area.idArea || ' di ' || indirizzo_autorimessa);
- modGUI.chiudiIntestazione(2);
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('ID Area');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.idArea);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Posti Totali');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.PostiTotali);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Posti Liberi');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.PostiLiberi);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Stato');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.Stato);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Gas');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.Gas);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Lunghezza Massima');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.LunghezzaMax);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Larghezza Massima');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.LarghezzaMax);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Altezza Massima');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.AltezzaMax);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Peso Massimo');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.PesoMax);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Costo Abbonamento');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.CostoAbbonamento);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Autorimessa');
- modGUI.ApriElementoTabella;
- modGUI.Collegamento(indirizzo_autorimessa, 'visualizzaAutorimessa?id_sessione=' || id_sessione || '&nome=' || nome || '&ruolo=' || ruolo || '&idRiga=' || area.idAutorimessa);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ChiudiTabella;
- IF (ruolo <> 'O' AND ruolo <> 'C') THEN
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.InserisciPenna('modificaArea', id_sessione, nome, ruolo, idRiga);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ChiudiTabella;
- END IF;
- -- Tabella delle autorimesse collegate
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('Aree');
- modGUI.chiudiIntestazione(3);
- modGUI.apriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('ID Box');
- modGUI.intestazioneTabella('Numero');
- modGUI.intestazioneTabella('Piano');
- modGUI.intestazioneTabella('Colonna');
- modGUI.intestazioneTabella('Dettaglio');
- FOR box IN (SELECT * FROM Box WHERE Box.idArea = idRiga)
- LOOP
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(box.idBox);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(box.Numero);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(box.Piano);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(box.NumeroColonna);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.inserisciLente('visualizzaBox', id_sessione, nome, ruolo, box.idBox);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- END LOOP;
- modGUI.chiudiTabella;
- END IF;
- modGUI.ChiudiPagina;
- END visualizzaArea;
- PROCEDURE visualizzaAutorimessa(id_sessione int DEFAULT 0, nome VARCHAR2, ruolo VARCHAR2, idRiga int) IS
- -- Parametri dell'autorimessa corrente
- autorimessa Autorimesse%ROWTYPE;
- -- Indirizzo della sede di riferimento
- indirizzo_sede Sedi.Indirizzo%TYPE;
- BEGIN
- BEGIN
- -- Trova la sede
- SELECT * INTO autorimessa
- FROM Autorimesse
- WHERE Autorimesse.idAutorimessa = idRiga;
- -- Trova l'indirizzo della sede
- SELECT Sedi.Indirizzo INTO indirizzo_sede
- FROM Sedi
- WHERE Sedi.idSede = autorimessa.idSede;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- autorimessa := NULL;
- END;
- -- Crea la pagina e l'intestazione
- modGUI.apriPagina('HoC | Autorimessa di ' || autorimessa.indirizzo, id_sessione, nome, ruolo);
- modGUI.aCapo;
- IF (autorimessa.idAutorimessa IS NULL) THEN
- modGUI.esitoOperazione('KO', 'Nessuna autorimessa trovata');
- ELSE
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('Autorimessa di ' || autorimessa.indirizzo);
- modGUI.chiudiIntestazione(2);
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('ID Autorimessa');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(autorimessa.idAutorimessa);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Indirizzo');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(autorimessa.Indirizzo);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Telefono');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(autorimessa.Telefono);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Coordinate');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(autorimessa.Coordinate);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Sede');
- modGUI.ApriElementoTabella;
- modGUI.Collegamento(indirizzo_sede, groupname || 'visualizzaSede?id_sessione=' || id_sessione || '&nome=' || nome || '&ruolo=' || ruolo || '&idRiga=' || autorimessa.idSede);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- IF (ruolo <> 'O' AND ruolo <> 'C') THEN
- modGUI.apriRigaTabella;
- modGUI.intestazioneTabella('Dettagli');
- modGUI.apriElementoTabella;
- modGUI.InserisciPenna(groupname || 'modificaAutorimessa', id_sessione, nome, ruolo, autorimessa.idAutorimessa);
- modGUI.chiudiElementoTabella;
- modGUI.chiudiRigaTabella;
- END IF;
- modGUI.ChiudiTabella;
- -- Tabella delle autorimesse collegate
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('Aree');
- modGUI.chiudiIntestazione(3);
- modGUI.apriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('ID Area');
- modGUI.intestazioneTabella('Larghezza Massima');
- modGUI.intestazioneTabella('Lunghezza Massima');
- modGUI.intestazioneTabella('Altezza Massima');
- modGUI.intestazioneTabella('Peso Massimo');
- modGUI.intestazioneTabella('Dettaglio');
- FOR area IN (SELECT * FROM Aree WHERE Aree.idAutorimessa = idRiga)
- LOOP
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.idArea);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.LarghezzaMax || ' mm');
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.LunghezzaMax || ' mm');
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.AltezzaMax || ' mm');
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(area.PesoMax || ' kg');
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.inserisciLente(groupname || 'visualizzaArea', id_sessione, nome, ruolo, area.idArea);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- END LOOP;
- modGUI.chiudiTabella;
- END IF;
- modGUI.ChiudiPagina;
- END visualizzaAutorimessa;
- PROCEDURE visualizzaBox(id_sessione int DEFAULT 0, nome VARCHAR2, ruolo VARCHAR2, idRiga int) IS
- -- Parametri del box corrente
- var_box Box%ROWTYPE;
- -- Parametri di un eventuale veicolo
- veicolo Veicoli%ROWTYPE;
- -- ID e indirizzo dell'autorimessa di riferimento
- id_autorimessa Autorimesse.idAutorimessa%TYPE;
- indirizzo_autorimessa Autorimesse.Indirizzo%TYPE;
- -- ID dell'area di riferimento
- id_area Aree.idArea%TYPE;
- BEGIN
- BEGIN
- -- Trova la sede
- SELECT * INTO var_box
- FROM Box
- WHERE Box.idBox = idRiga;
- -- Trova ID della sede e indirizzo dell'autorimessa
- SELECT Autorimesse.idSede, Autorimesse.Indirizzo, Aree.idArea INTO id_autorimessa, indirizzo_autorimessa, id_area
- FROM Autorimesse
- join Aree ON Aree.idAutorimessa = Autorimesse.idAutorimessa
- WHERE Aree.idArea = var_box.idArea;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- var_box := NULL;
- END;
- -- Crea la pagina e l'intestazione
- modGUI.apriPagina('HoC | Box ' || idRiga || ' area ' || var_box.idArea || ' di ' || indirizzo_autorimessa, id_sessione, nome, ruolo);
- modGUI.aCapo;
- IF (var_box.idBox IS NULL) THEN
- modGUI.esitoOperazione('KO', 'Nessun box trovato');
- ELSE
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('Box ' || idRiga || ' - Area ' || var_box.idArea || ' di ' || indirizzo_autorimessa);
- modGUI.chiudiIntestazione(2);
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('ID Box');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(var_box.idBox);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Numero');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(var_box.Numero);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Piano');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(var_box.Piano);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Colonna');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(var_box.NumeroColonna);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Occupato');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(var_box.Occupato);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Riservato');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(var_box.Riservato);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Area');
- modGUI.ApriElementoTabella;
- modGUI.Collegamento(var_box.idArea, groupname || 'visualizzaArea?id_sessione=' || id_sessione || '&nome=' || nome || '&ruolo=' || ruolo || '&idRiga=' || id_area);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Autorimessa');
- modGUI.ApriElementoTabella;
- modGUI.Collegamento(indirizzo_autorimessa, groupname || 'visualizzaAutorimessa?id_sessione=' || id_sessione || '&nome=' || nome || '&ruolo=' || ruolo || '&idRiga=' || id_autorimessa);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ChiudiTabella;
- -- Eventuale auto contenuta nel box
- IF (var_box.Occupato = 'T') THEN
- -- Trova il veicolo
- SELECT Veicoli.* INTO veicolo
- FROM Veicoli
- join EffettuaIngressiOrari ON EffettuaIngressiOrari.idVeicolo = Veicoli.idVeicolo
- join IngressiOrari ON IngressiOrari.idIngressoOrario = EffettuaIngressiOrari.idIngressoOrario
- WHERE IngressiOrari.idBox = idRiga
- AND IngressiOrari.OraUscita IS NULL;
- -- Stampa le informazioni del veicolo
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('Veicolo in sosta');
- modGUI.chiudiIntestazione(3);
- modGUI.apriTabella;
- modGUI.apriRigaTabella;
- modGUI.apriIntestazione('ID Veicolo');
- modGUI.apriIntestazione('Targa');
- modGUI.apriIntestazione('Produttore');
- modGUI.apriIntestazione('Modello');
- modGUI.apriIntestazione('Colore');
- modGUI.apriIntestazione('Dettaglio');
- modGUI.chiudiRigaTabella;
- modGUI.apriRigaTabella;
- modGUI.apriElementoTabella;
- modGUI.ElementoTabella(veicolo.idVeicolo);
- modGUI.chiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.apriElementoTabella;
- modGUI.ElementoTabella(veicolo.Targa);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.ElementoTabella(veicolo.Produttore);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.ElementoTabella(veicolo.Modello);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.ElementoTabella(veicolo.Colore);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.InserisciLente('visualizzaVeicolo', id_sessione, nome, ruolo, veicolo.idVeicolo);
- modGUI.chiudiElementoTabella;
- modGUI.chiudiTabella;
- END IF;
- END IF;
- modGUI.ChiudiPagina;
- END visualizzaBox;
- PROCEDURE visualizzaintroitiparzialiabb(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2, idriga VARCHAR2, periodo VARCHAR2, datainiziale VARCHAR2 DEFAULT NULL, datafinale VARCHAR2 DEFAULT NULL) AS
- x_datainiziale VARCHAR2(100) :=NVL(datainiziale, '1900-01-01');
- y_datafinale VARCHAR2(100) := NVL(datafinale, TO_CHAR(SYSDATE+INTERVAL '10' YEAR,'yyyy-mm-dd'));
- BEGIN
- modGUI.apriPagina('HoC | Introiti ', id_Sessione, nome, ruolo);
- FOR i IN (SELECT * FROM autorimesse aut WHERE aut.idsede=idriga)
- LOOP
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('Autorimessa ' || i.indirizzo);
- modGUI.chiudiIntestazione(2);
- modGUI.apriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('ID Abbonamento');
- modGUI.intestazioneTabella('Costo effettivo');
- modGUI.intestazioneTabella('Data inizio');
- modGUI.intestazioneTabella('Data fine');
- modGUI.ChiudiRigaTabella;
- FOR n IN (SELECT abb.* FROM box, abbonamenti abb, aree WHERE box.idabbonamento=abb.idabbonamento AND box.idarea=aree.idarea AND aree.idautorimessa=i.idautorimessa AND ((abb.datainizio<TO_DATE(x_datainiziale,'yyyy-mm-dd') AND abb.datafine>TO_DATE(x_datainiziale,'yyyy-mm-dd')) OR (abb.datainizio>TO_DATE(x_datainiziale,'yyyy-mm-dd') AND abb.datainizio<TO_DATE(y_datafinale,'yyyy-mm-dd'))) ORDER BY abb.idabbonamento)
- --for n in (select abb.* from box, abbonamenti abb, aree where box.idabbonamento=abb.idabbonamento and box.idarea=aree.idarea and aree.idautorimessa=i.idautorimessa order by abb.idabbonamento)
- LOOP
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(n.idabbonamento);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(n.costoeffettivo);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(n.datainizio);
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(n.datafine);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- END LOOP;
- modGUI.ChiudiTabella;
- modGUI.apriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('ID Ingresso Orario');
- modGUI.intestazioneTabella('Costo effettivo');
- modGUI.intestazioneTabella('Data inizio');
- modGUI.intestazioneTabella('Data fine');
- modGUI.ChiudiRigaTabella;
- FOR n IN (SELECT io.* FROM box, ingressiorari io, aree WHERE box.idbox=io.idbox AND box.idarea=aree.idarea AND aree.idautorimessa=i.idautorimessa AND ((io.oraentrata<TO_TIMESTAMP(x_datainiziale,'yyyy-mm-dd') AND io.orauscita>TO_TIMESTAMP(x_datainiziale,'yyyy-mm-dd')) OR (io.oraentrata>TO_TIMESTAMP(x_datainiziale,'yyyy-mm-dd') AND io.oraentrata<TO_TIMESTAMP(y_datafinale||' 23:59:00','yyyy-mm-dd hh24:mi:ss'))) ORDER BY io.idingressoorario)
- --for n in (select io.* from box, ingressiorari io, aree where box.idbox=io.idbox and box.idarea=aree.idarea and aree.idautorimessa=i.idautorimessa and io.oraentrata is not null order by io.idingressoorario)
- LOOP
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(n.idingressoorario);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(n.costo);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(TO_CHAR(n.oraentrata,'dd-MON-yy hh24:mi:ss'));
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(TO_CHAR(n.orauscita,'dd-MON-yy hh24:mi:ss'));
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- END LOOP;
- modGUI.ChiudiTabella;
- END LOOP;
- modgui.chiudipagina;
- END visualizzaintroitiparzialiabb;
- PROCEDURE visualizzaSede(id_sessione int DEFAULT 0, nome VARCHAR2, ruolo VARCHAR2, idRiga int) IS
- -- Parametri della sede corrente
- sede Sedi%ROWTYPE;
- -- Nome del dipendente dirigente
- nome_dirigente Persone.Nome%TYPE;
- cognome_dirigente Persone.Cognome%TYPE;
- BEGIN
- BEGIN
- -- Trova la sede
- SELECT * INTO sede
- FROM Sedi
- WHERE Sedi.idSede = idRiga;
- -- Trova il nome del dirigente
- SELECT nome, cognome INTO nome_dirigente, cognome_dirigente
- FROM Persone P
- join Dipendenti D ON D.idPersona = P.idPersona
- WHERE D.idDipendente = sede.idDipendente;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- sede := NULL;
- END;
- -- Crea la pagina e l'intestazione
- modGUI.apriPagina('HoC | Sede di ' || sede.indirizzo, id_sessione, nome, ruolo);
- modGUI.aCapo;
- IF (sede.idSede IS NULL) THEN
- modGUI.esitoOperazione('KO', 'Nessuna sede trovata');
- ELSE
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('Sede di ' || sede.indirizzo);
- modGUI.chiudiIntestazione(2);
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('ID Sede');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(sede.idSede);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Indirizzo');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(sede.indirizzo);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Telefono');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(sede.telefono);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Coordinate');
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(sede.coordinate);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.IntestazioneTabella('Dirigente');
- modGUI.ApriElementoTabella;
- modGUI.Collegamento(nome_dirigente || ' ' || cognome_dirigente, 'visualizzaDipendente?id_sessione=' || id_sessione || '&nome=' || nome || '&ruolo=' || ruolo || '&idRiga=' || sede.idDipendente);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- IF (ruolo <> 'O' AND ruolo <> 'C') THEN
- modGUI.IntestazioneTabella('Dettagli');
- modGUI.ApriElementoTabella;
- modGUI.InserisciPenna(groupname || 'modificaSede', id_sessione, nome, ruolo, sede.idSede);
- modGUi.ChiudiElementoTabella;
- END IF;
- modGUI.chiudiRigaTabella;
- modGUI.ChiudiTabella;
- -- Tabella delle autorimesse collegate
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('Autorimesse');
- modGUI.chiudiIntestazione(3);
- modGUI.apriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('ID Autorimessa');
- modGUI.intestazioneTabella('Indirizzo');
- modGUI.intestazioneTabella('Telefono');
- modGUI.intestazioneTabella('Coordinate');
- modGUI.intestazioneTabella('Dettaglio');
- FOR autorimessa IN (SELECT * FROM Autorimesse WHERE Autorimesse.idSede = sede.idSede)
- LOOP
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(autorimessa.idAutorimessa);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(autorimessa.indirizzo);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(autorimessa.telefono);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(autorimessa.coordinate);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.inserisciLente(groupname || 'visualizzaAutorimessa', id_sessione, nome, ruolo, autorimessa.idAutorimessa);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- END LOOP;
- modGUI.chiudiTabella;
- END IF;
- modGUI.ChiudiPagina;
- END visualizzaSede;
- PROCEDURE ricercaAuto(id_Sessione int, nome VARCHAR2, ruolo VARCHAR2) IS
- BEGIN
- modGUI.apriPagina('HoC | Ricerca auto', id_Sessione, nome, ruolo);
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('RICERCA AUTO');
- modGUI.chiudiIntestazione(2);
- modGUI.apriForm('resRicercaAuto');
- modGUI.inserisciInputHidden('id_Sessione', id_Sessione);
- modGUI.inserisciInputHidden('nome', nome);
- modGUI.inserisciInputHidden('ruolo', ruolo);
- modGUI.apriSelect('var_idCliente', 'CLIENTE', TRUE);
- FOR cur IN (
- SELECT Clienti.idCliente CIDC, Persone.Nome PN, Persone.Cognome PC
- FROM Clienti, Persone
- WHERE Persone.idPersona = Clienti.idPersona
- ) LOOP
- modGUI.inserisciOpzioneSelect(cur.CIDC, cur.CIDC || ' ' || cur.PN || ' ' || cur.PC);
- END LOOP;
- modGUI.chiudiSelect;
- modGUI.inserisciBottoneReset;
- modGUI.inserisciBottoneForm(testo=>'RICERCA AUTO');
- modGUI.chiudiForm;
- modGUI.chiudiPagina;
- END ricercaAuto;
- PROCEDURE resRicercaAuto(id_Sessione int, nome VARCHAR2, ruolo VARCHAR2, var_idCliente int) IS
- var_check1 BOOLEAN := FALSE;
- var_check2 BOOLEAN := FALSE;
- BEGIN
- modGUI.apriPagina('HoC | Ricerca auto', id_Sessione, nome, ruolo);
- modGUI.apriIntestazione(2);
- modGUI.inserisciTesto('RICERCA AUTO');
- modGUI.chiudiIntestazione(2);
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('PARCHEGGIO/I EFFETTUATO/I CON TICKET');
- modGUI.chiudiIntestazione(3);
- modGUI.apriTabella;
- modGUI.apriRigaTabella;
- modGUI.intestazioneTabella('TARGA');
- modGUI.intestazioneTabella('AUTO');
- modGUI.intestazioneTabella('SEDE');
- modGUI.intestazioneTabella('AUTORIMESSA');
- modGUI.intestazioneTabella('AREA');
- modGUI.intestazioneTabella('BOX');
- modGUI.chiudiRigaTabella;
- FOR curr_or IN (
- SELECT DISTINCT Veicoli.Targa VT, Veicoli.Produttore VP, Veicoli.Modello VM, AR.Indirizzo ARI, S.Indirizzo SI, A.idArea AIA, B.idBox BIB
- FROM Veicoli
- join VeicoliClienti VC ON VC.idCliente = var_idCliente
- join EffettuaIngressiOrari EIO ON EIO.idVeicolo = Veicoli.idVeicolo
- join IngressiOrari IO ON IO.idIngressoOrario = EIO.idIngressoOrario
- join Box B ON B.idBox = IO.idBox
- join Aree A ON A.idArea = B.idArea
- join Autorimesse AR ON AR.idAutorimessa = A.idAutorimessa
- join Sedi S ON S.idSede = AR.idSede
- WHERE Veicoli.idVeicolo = VC.idVeicolo AND
- IO.OraEntrata IS NOT NULL AND
- IO.OraUscita IS NULL
- ) LOOP
- var_check1 := TRUE;
- modGUI.apriRigaTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_or.VT);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_or.VP || ' ' || curr_or.VM);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_or.SI);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_or.ARI);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_or.AIA);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_or.BIB);
- modGUI.chiudiElementoTabella;
- modGUI.chiudiRigaTabella;
- END LOOP;
- modGUI.chiudiTabella;
- IF(var_check1 = FALSE) THEN
- modGUI.apriDiv(centrato=>TRUE);
- modGUI.inserisciTesto('NON CI SONO AUTO ANCORA PARCHEGGIATE');
- modGUI.chiudiDiv;
- modGUI.aCapo;
- modGUI.aCapo;
- modGUI.aCapo;
- modGUI.aCapo;
- END IF;
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('PARCHEGGIO/I EFFETTUATO/I CON ABBONAMENTO/I');
- modGUI.chiudiIntestazione(3);
- modGUI.apriTabella;
- modGUI.apriRigaTabella;
- modGUI.intestazioneTabella('TARGA');
- modGUI.intestazioneTabella('AUTO');
- modGUI.intestazioneTabella('SEDE');
- modGUI.intestazioneTabella('AUTORIMESSA');
- modGUI.intestazioneTabella('AREA');
- modGUI.intestazioneTabella('BOX');
- modGUI.chiudiRigaTabella;
- FOR curr_abb IN (
- SELECT DISTINCT Veicoli.Targa VT, Veicoli.Produttore VP, Veicoli.Modello VM, AR.Indirizzo ARI, S.Indirizzo SI, A.idArea AIA, B.idBox BIB
- FROM Veicoli
- join VeicoliClienti VC ON VC.idCliente = var_idCliente
- join EffettuaIngressiAbbonamenti EIA ON EIA.idVeicolo = Veicoli.idVeicolo
- join IngressiAbbonamenti IA ON IA.idIngressoAbbonamento = EIA.idIngressoAbbonamento
- join Box B ON B.idBox = IA.idBox
- join Aree A ON A.idArea = B.idArea
- join Autorimesse AR ON AR.idAutorimessa = A.idAutorimessa
- join Sedi S ON S.idSede = AR.idSede
- WHERE Veicoli.idVeicolo = VC.idVeicolo AND
- IA.OraEntrata IS NOT NULL AND
- IA.OraUscita IS NULL
- ) LOOP
- modGUI.apriRigaTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_abb.VT);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_abb.VP || ' ' || curr_abb.VM);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_abb.SI);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_abb.ARI);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_abb.AIA);
- modGUI.chiudiElementoTabella;
- modGUI.apriElementoTabella;
- modGUI.elementoTabella(curr_abb.BIB);
- modGUI.chiudiElementoTabella;
- modGUI.chiudiRigaTabella;
- END LOOP;
- modGUI.chiudiTabella;
- IF(var_check2 = FALSE) THEN
- modGUI.apriDiv(centrato=>TRUE);
- modGUI.inserisciTesto('NON CI SONO AUTO ANCORA PARCHEGGIATE');
- modGUI.chiudiDiv;
- END IF;
- modGUI.chiudiPagina;
- END resRicercaAuto;
- PROCEDURE MaggiorPostiRiservati(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2) IS
- --suppongo che l'oprazione sia "con il maggior numero di posti liberi", visto che per ora
- --non esistono box riservati
- --CONTO QUANTI POSTI RISERVATI CI SONO PER OGNI AUTORIMESSA
- CURSOR MioCursore IS SELECT autorimesse.indirizzo,COUNT(box.riservato) AS PostiRiservati
- FROM autorimesse,aree,box
- WHERE autorimesse.idautorimessa=aree.idautorimessa AND aree.idarea=box.idarea AND box.riservato='F'
- GROUP BY autorimesse.indirizzo;
- --VARIABILI
- scorriCursore MioCursore%ROWTYPE;
- nomeSede autorimesse.indirizzo%TYPE;
- posti NUMBER:=0;
- BEGIN
- OPEN MioCursore;
- LOOP
- FETCH MioCursore INTO scorriCursore;
- --SCORRO E TROVO AUTORIMESSA CON MAGGIOR POSTI RISERVATI
- IF(scorriCursore.postiriservati>posti) THEN
- posti:=scorriCursore.postiriservati;
- nomeSede:=scorriCursore.indirizzo;
- END IF;
- EXIT WHEN MioCursore%NOTFOUND;
- END LOOP;
- CLOSE MioCursore;
- --STAMPO
- modGUI.apriPagina('HoC | Visualizza dati', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('AUTORIMESSA CON MAGGIOR NUMERO DI POSTI RISERVATI');
- modGUI.chiudiIntestazione(3);
- modGUI.apriDiv;
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('NomeSede');
- modGUI.intestazioneTabella('NumPostiRiservati');
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(nomeSede);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(posti);
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ChiudiTabella;
- modGUI.chiudiDiv;
- modGUI.chiudiPagina;
- END MaggiorPostiRiservati;
- PROCEDURE AlimentazioneVeicolo(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2) AS
- --variabile che conterra l'autorimessa scelta per la visualizzazione
- codiceAutorimessa autorimesse.idautorimessa%TYPE:=0;
- BEGIN
- modGUI.apriPagina('HoC | Visualizza dati', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('VISUALIZZAZIONE ALIMENTAZIONE VEICOLO PIU PRESENTE');
- modGUI.chiudiIntestazione(3);
- modGui.apriForm('AlimentazioneVeicolo2');
- modGui.inserisciInputHidden('id_Sessione',id_sessione);
- modGui.inserisciInputHidden('nome',nome);
- modGui.inserisciInputHidden('ruolo',ruolo);
- modgui.apriSelect('autorimessaScelta', 'Scegli autorimessa di riferimento');
- --estraggo le autorimesse e le inserisco nella select
- FOR scorriCursore IN (SELECT autorimesse.idautorimessa FROM autorimesse)
- LOOP
- codiceAutorimessa:=scorriCursore.idautorimessa;
- modgui.inserisciOpzioneSelect(TO_CHAR(codiceAutorimessa), TO_CHAR(codiceAutorimessa),TRUE);
- END LOOP;
- --inserisco la possibilita di cercare il veicolo piu presente in tutte le autorimesse
- modgui.inserisciOpzioneSelect('Tutte','Tutte',TRUE);
- modgui.chiudiSelect;
- modGUI.apriDiv;
- modGui.inserisciBottoneForm('SUBMIT');
- modGUI.chiudiDiv;
- modGui.chiudiForm();
- END AlimentazioneVeicolo;
- PROCEDURE AlimentazioneVeicolo2(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2, autorimessaScelta VARCHAR2) AS
- --variabili usate per controllare i veicoli acceduti in ingressi orari
- IdveicoloMaxIO NUMBER;
- PresenzeIO NUMBER:=0;
- AlimentazioneIO VARCHAR2(10);
- --variabili usate per controllare i veicoli acceduti in ingressi abbonamenti
- IdveicoloMaxIA NUMBER;
- PresenzeIA NUMBER:=0;
- AlimentazioneIA VARCHAR2(10);
- ----variabili globali, conterranno il massimo dei valori ottenuti, quindi stampati
- IdveicoloMax NUMBER;
- PresenzeMax NUMBER;
- Alimentazione VARCHAR2(10);
- BEGIN
- modGUI.apriPagina('HoC | Visualizza dati', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(3);
- IF(autorimessaScelta='Tutte')THEN
- modGUI.inserisciTesto('Visualizzazione alimentazione del veicolo piu presente in tutte le autorimesse ');
- ELSE
- modGUI.inserisciTesto('Visualizzazione alimentazione del veicolo piu presente in autorimessa: '||autorimessaScelta);
- END IF;
- modGUI.chiudiIntestazione(3);
- IF(autorimessaScelta='Tutte')THEN
- --ANALIZZO INGRESSI ORARI SU TUTTE LE AUTORIMESSE
- FOR scorriCursore IN (
- SELECT COUNT(ingressiorari.idingressoorario)AS conta, veicoli.idveicolo, veicoli.ALIMENTAZIONE
- FROM ingressiorari, veicoli, effettuaingressiorari
- WHERE ingressiorari.idingressoorario=effettuaingressiorari.idingressoorario AND
- effettuaingressiorari.idveicolo=veicoli.idveicolo
- GROUP BY veicoli.idveicolo, veicoli.ALIMENTAZIONE
- ORDER BY veicoli.idveicolo, veicoli.ALIMENTAZIONE
- )
- LOOP
- IF(scorriCursore.conta>PresenzeIO)THEN
- IdveicoloMaxIO:=scorriCursore.idveicolo;
- PresenzeIO:=scorriCursore.conta;
- AlimentazioneIO:=scorriCursore.alimentazione;
- END IF;
- END LOOP;
- --ANALIZZO INGRESSI ABBONAMENTI SU TUTTE LE AUTORIMESSE
- FOR scorriCursore IN (
- SELECT COUNT(ingressiabbonamenti.idingressoabbonamento)AS conta, veicoli.idveicolo, veicoli.ALIMENTAZIONE
- FROM ingressiabbonamenti, veicoli, effettuaingressiabbonamenti
- WHERE ingressiabbonamenti.idingressoabbonamento=effettuaingressiabbonamenti.idingressoabbonamento AND
- effettuaingressiabbonamenti.idveicolo=veicoli.idveicolo
- GROUP BY veicoli.idveicolo, veicoli.ALIMENTAZIONE
- ORDER BY veicoli.idveicolo, veicoli.ALIMENTAZIONE
- )
- LOOP
- --CALCOLO VALORI MASSIMI
- IF(scorriCursore.conta>PresenzeIA)THEN
- IdveicoloMaxIA:=scorriCursore.idveicolo;
- PresenzeIA:=scorriCursore.conta;
- AlimentazioneIA:=scorriCursore.alimentazione;
- END IF;
- END LOOP;
- ELSE ----CASO IN CUI VOGLIO SINGOLA AUTORIMESSA
- --ANALIZZO INGRESSI ORARI SU SINGOLA AUTORIMESSA
- FOR scorriCursore IN (
- SELECT COUNT(ingressiorari.idingressoorario)AS conta, veicoli.idveicolo, veicoli.ALIMENTAZIONE
- FROM ingressiorari, veicoli, effettuaingressiorari,box,aree,autorimesse
- WHERE ingressiorari.idingressoorario=effettuaingressiorari.idingressoorario AND
- effettuaingressiorari.idveicolo=veicoli.idveicolo AND
- ingressiorari.IDBOX=box.idbox AND
- box.idarea=aree.idarea AND
- aree.idautorimessa=autorimesse.idautorimessa AND
- autorimesse.idautorimessa=TO_NUMBER(autorimessaScelta)
- GROUP BY veicoli.idveicolo,veicoli.ALIMENTAZIONE
- )
- LOOP
- --DETERMINO VALORI MASSIMI
- IF(scorriCursore.conta>PresenzeIO)THEN
- IdveicoloMaxIO:=scorriCursore.idveicolo;
- PresenzeIO:=scorriCursore.conta;
- AlimentazioneIO:=scorriCursore.alimentazione;
- END IF;
- END LOOP;
- --ANALIZZO INGRESSI ABBONAMENTI SU SINGOLA AUTORIMESSA
- FOR scorriCursore IN (
- SELECT COUNT(ingressiabbonamenti.idingressoabbonamento)AS conta, veicoli.idveicolo, veicoli.ALIMENTAZIONE
- FROM ingressiabbonamenti, veicoli, effettuaingressiabbonamenti, box,aree,autorimesse
- WHERE ingressiabbonamenti.idingressoabbonamento=effettuaingressiabbonamenti.idingressoabbonamento AND
- effettuaingressiabbonamenti.idveicolo=veicoli.idveicolo AND
- ingressiabbonamenti.IDBOX=box.idbox AND
- box.idarea=aree.idarea AND
- aree.idautorimessa=autorimesse.idautorimessa AND
- autorimesse.idautorimessa=TO_NUMBER(autorimessaScelta)
- GROUP BY veicoli.idveicolo,veicoli.ALIMENTAZIONE
- )
- LOOP
- --DETERMINO MASSIMI
- IF(scorriCursore.conta>PresenzeIA)THEN
- IdveicoloMaxIA:=scorriCursore.idveicolo;
- PresenzeIA:=scorriCursore.conta;
- AlimentazioneIA:=scorriCursore.alimentazione;
- END IF;
- END LOOP;
- END IF; --DISCRIMINANTE AUTORIMESSE SCELTE
- --CONFRONTO VALORI FINALI E CALCOLO MASSIMO
- IF(PresenzeIA>PresenzeIO)THEN
- PresenzeMax:=PresenzeIA;
- IdveicoloMax:=IdveicoloMaxIA;
- Alimentazione:=AlimentazioneIA;
- ELSE
- PresenzeMax:=PresenzeIO;
- IdveicoloMax:=IdveicoloMaxIO;
- Alimentazione:=AlimentazioneIO;
- END IF;
- --STAMPO VALORI CALCOLATI
- modGUI.apriDiv;
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('Identificativo veicolo');
- modGUI.intestazioneTabella('Alimentazione');
- modGUI.intestazioneTabella('Presenze');
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(IdveicoloMax);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(Alimentazione);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(PresenzeMax);
- modGUI.ChiudiElementoTabella;
- modGui.acapo;
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ChiudiTabella;
- modGUI.chiudiDiv;
- modGUI.chiudiPagina;
- END AlimentazioneVeicolo2;
- PROCEDURE PercentualePostiLiberi2(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2, modalita VARCHAR2, areaScelta VARCHAR2) AS
- --DICHIARO VARIABILI PER STAMPARE
- fasciaOraria fasceorarie.nome%TYPE;
- giorno fasceorarie.giorno%TYPE;
- --DICHIARO VARIABILI PER CALCOLARE
- postiRiservati NUMBER;
- postiTotali NUMBER;
- percentuale NUMBER;
- BEGIN
- --CALCOLO POSTI TOTALI PER L'AREA SCELTA
- SELECT aree.postitotali INTO postiTotali FROM aree WHERE aree.idarea=areaScelta ;
- modGUI.apriPagina('HoC | Visualizza dati', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('Visualizzazione posti liberi per '||modalita||', riguardo area: '||areaScelta);
- modGUI.chiudiIntestazione(3);
- modGUI.apriDiv;
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- IF(modalita='fascia-oraria')THEN
- modGUI.intestazioneTabella('Fascia oraria');
- ELSE
- modGUI.intestazioneTabella('Giorno');
- END IF;
- modGUI.intestazioneTabella('Posti liberi');
- modGUI.ChiudiRigaTabella;
- --CASO IN CUI SCELTA VISUALIZZAZIONE PER FASCIA ORARIA
- IF(modalita='fascia-oraria')THEN
- --CONTO QUANTI POSTI OCCUPATI CI SONO PER OGNI FASCIA ORARIA
- FOR scorriCursoreFasceOrarie IN (
- SELECT DISTINCT fasceorarie.nome, COUNT(ingressiorari.idingressoorario)AS postiRiservati, aree.idarea
- FROM ingressiorari,box,aree,areefasceorarie,fasceorarie
- WHERE ingressiorari.idbox=box.idbox AND
- box.idarea=aree.idarea AND
- aree.idarea=areefasceorarie.idarea AND
- areefasceorarie.idfasciaoraria=fasceorarie.idfasciaoraria AND
- aree.idarea=areaScelta
- GROUP BY aree.idarea, fasceorarie.nome
- ORDER BY fasceorarie.nome,aree.idarea
- )
- LOOP
- modGUI.ApriRigaTabella;
- fasciaOraria:=scorriCursoreFasceOrarie.nome;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(fasciaOraria);
- modGUI.ChiudiElementoTabella;
- --DOPO AVER CONTATO I POSTI TOTALI PER L'AREA(SOPRA)
- --OTTENGO POSTI LIBERI
- postiRiservati:=scorriCursoreFasceOrarie.postiRiservati;
- --CALCOLO QUANTO SONO IN PERCENTUALE
- percentuale:=((postiTotali-postiRiservati)*100)/postiTotali;
- modGUI.ApriElementoTabella;
- IF(percentuale<0)THEN --CASO IN CUI NEL COMPLESSO, TRA MATTINA E SERA, NON CI SONO MAI POSTI LIBERI
- modGUI.ElementoTabella(0||'%');
- ELSE
- modGUI.ElementoTabella(TO_CHAR(percentuale,'fm90.00')||'%');
- END IF;
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- END LOOP;
- ELSE --CASO IN CUI SCELTA VISUALIZZAZIONE PER GIORNO
- FOR scorriCursoreGiorni IN (
- SELECT DISTINCT aree.idarea, fasceorarie.giorno , COUNT(ingressiorari.idingressoorario) AS postiRiservati
- FROM ingressiorari,box,aree,areefasceorarie,fasceorarie
- WHERE ingressiorari.idbox=box.idbox AND
- box.idarea=aree.idarea AND
- aree.idarea=areefasceorarie.idarea AND
- areefasceorarie.idfasciaoraria=fasceorarie.idfasciaoraria AND
- aree.idarea=areaScelta
- GROUP BY fasceorarie.giorno, aree.idarea
- ORDER BY fasceorarie.giorno,aree.idarea
- )
- LOOP
- modGUI.ApriRigaTabella;
- giorno:=scorriCursoreGiorni.giorno;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(giorno);
- modGUI.ChiudiElementoTabella;
- postiRiservati:=scorriCursoreGiorni.postiRiservati;
- percentuale:=((postiTotali-postiRiservati)*100)/postiTotali;
- modGUI.ApriElementoTabella;
- IF(percentuale<0)THEN
- modGUI.ElementoTabella(0||'%');
- ELSE
- modGUI.ElementoTabella(TO_CHAR(percentuale,'fm90.00')||'%');
- END IF;
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- END LOOP;
- END IF;
- END PercentualePostiLiberi2;
- PROCEDURE PercentualiPostiLiberi (id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2) IS
- --VARIABILE CONTENENTE AREA SCELTA
- codiceArea aree.idarea%TYPE;
- BEGIN
- modGUI.apriPagina('HoC | Visualizza dati', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('VISUALIZZAZIONE POSTI LIBERI');
- modGUI.chiudiIntestazione(3);
- modGui.apriForm('PERCENTUALIPOSTILIBERI2');
- modGui.inserisciInputHidden('id_Sessione',id_sessione);
- modGui.inserisciInputHidden('nome',nome);
- modGui.inserisciInputHidden('ruolo',ruolo);
- --RADIO1
- modGUI.apriDiv;
- modGui.inserisciRadioButton('Per fascia oraria', 'modalita', 'fascia-oraria', TRUE);
- modGUI.chiudiDiv;
- modgui.acapo;
- --RADIO2
- modGUI.apriDiv;
- modGui.inserisciRadioButton('Per giorno', 'modalita', 'giorno');
- modGUI.chiudiDiv;
- modgui.acapo;
- --SELECT
- modgui.apriSelect('areaScelta', 'Scegli area riferimento');
- --ESTRAGGO AREE DA QUERY E LE METTO NELLA SELECT
- FOR scorriCursore IN(SELECT aree.idarea FROM aree)
- LOOP
- codiceArea:=scorriCursore.idarea;
- modgui.inserisciOpzioneSelect(TO_CHAR(codiceArea), TO_CHAR(codiceArea),TRUE);
- END LOOP;
- modgui.chiudiSelect;
- modGUI.apriDiv;
- modGui.inserisciBottoneForm('SUBMIT');
- modGUI.chiudiDiv;
- modGui.chiudiForm();
- END PercentualiPostiLiberi;
- PROCEDURE MaxTipoVeicolo(id_Sessione VARCHAR2, nome VARCHAR2, ruolo VARCHAR2) IS
- --VARIABILI STAMPATE
- Lunghezza aree.lunghezzaMax%TYPE;
- Altezza aree.AltezzaMax%TYPE;
- Larghezza aree.LarghezzaMax%TYPE;
- Peso aree.PesoMax%TYPE;
- Area aree.idarea%TYPE;
- --VARIABILI PER CALCOLO
- media NUMBER:=0;
- BEGIN
- --CALCOLO LA MEDIA DEI VALORI DI OGNI AREA
- FOR scorriCursore IN (
- SELECT (aree.lunghezzaMax+aree.larghezzaMax+aree.altezzaMax+aree.pesoMax)/4 AS media,
- aree.lunghezzaMax, aree.larghezzaMax ,aree.altezzaMax,aree.pesoMax, aree.idarea
- FROM aree
- )
- -- TROVO LA MAGGIORE
- LOOP
- IF(scorriCursore.media>media)THEN
- media:=scorriCursore.media;
- Area:=scorriCursore.idarea;
- Lunghezza:=scorriCursore.lunghezzaMax;
- Altezza:=scorriCursore.altezzaMax;
- Larghezza:=scorriCursore.larghezzaMax;
- Peso:=scorriCursore.pesoMax;
- END IF;
- END LOOP;
- --STAMPO
- modGUI.apriPagina('HoC | Visualizza dati', id_Sessione, nome, ruolo);
- modGUI.aCapo;
- modGUI.apriIntestazione(3);
- modGUI.inserisciTesto('IL MAGGIOR TIPO VEICOLO E OSPITATO DALLA SEGUENTE AREA:');
- modGUI.chiudiIntestazione(3);
- modGUI.apriDiv;
- modGUI.ApriTabella;
- modGUI.ApriRigaTabella;
- modGUI.intestazioneTabella('Area');
- modGUI.intestazioneTabella('lunghezzaMax');
- modGUI.intestazioneTabella('larghezzaMax');
- modGUI.intestazioneTabella('pesoMax');
- modGUI.intestazioneTabella('altezzaMax');
- modGUI.ChiudiRigaTabella;
- modGUI.ApriRigaTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(Area);
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(Lunghezza);
- modGUI.ElementoTabella(' cm');
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(Altezza);
- modGUI.ElementoTabella(' cm');
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(Peso);
- modGUI.ElementoTabella('kg');
- modGUI.ChiudiElementoTabella;
- modGUI.ApriElementoTabella;
- modGUI.ElementoTabella(Larghezza);
- modGUI.ElementoTabella(' cm');
- modGUI.ChiudiElementoTabella;
- modGUI.ChiudiRigaTabella;
- modGUI.ChiudiTabella;
- modGUI.chiudiDiv;
- modGUI.chiudiPagina;
- END MaxTipoVeicolo;
- END gruppo2;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement