Creare un gestionale per strutture ricettive in C# – 24 – Modifica costi e sconti

Creare un gestionale per strutture ricettive in C# – 24 – Modifica costi e sconti

Creare un gestionale per strutture ricettive in C# – 24 – Modifica costi e sconti: La registrazione degli ospiti è quasi completata, in questo tutorial andiamo a modificare il caricamento di costi extra e sconti.

Creare un gestionale per strutture ricettive in C# – 24 – Modifica costi e sconti

Il codice che avevamo creato nei precedenti tutorial ci ha permesso di reimportare i dati dalla DataGridView ai campi per la modifica.

Erano rimasti fuori da questa azione però Costi Extra e Sconti.

Questo perchè per questi 2 campi non è sufficiente copiare ed incollare il contenuto, ma vanno elaborati.

Infatti per inserire i dati avevamo unito tutte le voci degli sconti e dei costi in un unico campo separato da un punto e virgola.

In questo modo però quando reimportiamo tutto non è possibile separare automaticamente le voci.

Abbiamo quindi la necessità di creare una funzione che separi le varie voci e che vada poi ad assegnare nuovamente i relativi valori di prezzo e sconto.

Query di Aggiornamento Database

La prima modifica di questo tutorial è la creazione della query che va a modificare i valori presenti nel database, per farlo abbiamo scritto:

sqlQuery = "UPDATE [Prenotazioni] SET [Id] = '" + IdPrenotazione + "', [Nome] = '" + CorreggiApici(txtNome.Text) + "', [Cognome] = '"
                    + CorreggiApici(txtCognome.Text) + "', [Indirizzo] = '" + CorreggiApici(txtIndirizzo.Text) + "', [Citta] = '"
                    + CorreggiApici(txtCitta.Text) + "', [CAP] = '" + txtCap.Text + "', [Nazione] = '" + CorreggiApici(cmbNazione.Text)
                    + "', [DataNascita] = '" + ConvertiData(dateNascita.Value.Year, dateNascita.Value.Month, dateNascita.Value.Day)
                    + "', [Nazionalita] = '" + CorreggiApici(cmbNazionalita.Text) + "', [Telefono] = '" + txtTelefono.Text
                    + "', [Email] = '" + txtEmail.Text + "', [TipoDocumento] = '" + CorreggiApici(cmbTipoDocumento.Text)
                    + "', [CodiceDocumento] = '" + txtCodiceDocumento.Text + "', [Documento] = '" + txtCaricaDocumento.Text
                    + "', [DataArrivo] = '" + ConvertiData(dateArrivo.Value.Year, dateArrivo.Value.Month, dateArrivo.Value.Day)
                    + "', [DataPartenza] = '" + ConvertiData(datePartenza.Value.Year, datePartenza.Value.Month, datePartenza.Value.Day)
                    + "', [NumeroNotti] = '" + numNotti.Value + "', [NumeroOspiti] = '" + "', [Camera] = '" + CorreggiApici(cmbCamera.Text)
                    + "', [Note] = '" + txtNote.Text + "', [CostiExtra] = '" + CorreggiApici(StringaCostiExtra) + "', [Sconti]"
                    + CorreggiApici(StringaScontiExtra) + "', [TasseSoggiorno] = '" + SwitchTasseSoggiorno + "', [MotivoEsenzione] = '"
                    + CorreggiApici(txtMotivoEsenzione.Text) + "', [MetodoPagamento] = '" + cmbMetodoPagamento.Text
                    + "', [Totale] = '" + ConvertiPrezzoFinale(txtTotale) + "WHERE [Id] = '" + IdPrenotazione + "';";

Questa query va a prendere l’id dalla variabile creata e lo utilizza per modificare i campi nel database.

Modifica della visualizzazione di Sconti e Costi Extra

Per permettere il riconoscimento univoco di uno sconto o di un costo, abbiamo la necessità di accedere al suo Id.

Per questo motivo andremo ad aggiungere l’id al testo visualizzato.

Per farlo modifichiamo la stringa associata al tasto Aggiunti degli sconti e degli extra da:

while (DatiTabellaScontiExtra.Read())
                    {
                        cmbExtra.Items.Add(new ExtraScontiItem(DatiTabellaScontiExtra.GetString(1), DatiTabellaScontiExtra.GetDecimal(2), DatiTabellaScontiExtra.GetInt32(3)));
                    }

a:

while (DatiTabellaScontiExtra.Read())
                    {
                        cmbExtra.Items.Add(new ExtraScontiItem(DatiTabellaScontiExtra.GetInt32(0) + ":" + DatiTabellaScontiExtra.GetString(1), DatiTabellaScontiExtra.GetDecimal(2), DatiTabellaScontiExtra.GetInt32(3)));
                    }

Funzione di modifica della stringa costi e sconti

La seguente funzione analizza la stringa con l’elenco d icosti e sconti e la scompone per l’utilizzo.

Il primo passaggio è quello di scomporre la stringa in diversi elementi, e per farlo creiamo un array.

Per ogni elemento inserito nell’array andiamo a verificare se è presente il simbolo : se fosse presente controlliamo che prima ci siano dei numeri.

In questo modo possiamo sapere se quel campo fa parte del nuovo metodo di inserimento o del vecchio.

Andiamo poi a confrontare il testo dell’array con quello della combobox per trovare il valore corrispondente ed inserirlo quindi nella listview.

   void ModificaCostiSconti(string TipoExtra, string ElencoExtra)
        {
            string[] ArrayExtra = ElencoExtra.Split(';');

                for (int a = 0; a < ArrayExtra.Length; a++)
                {
                    if (ArrayExtra[a].Contains(":"))
                    {
                        string CaratteriIniziali = ArrayExtra[a].Remove(ArrayExtra[a].IndexOf(":"));
                        bool IndiceNumerico = int.TryParse(CaratteriIniziali, out _);
                        if (IndiceNumerico == true)
                        {
                            //NUOVO METODO
                            CaricaDatabaseCostiSconti();
                            for (int b = 0; b < cmbExtra.Items.Count; b++)
                            {
                                if (ArrayExtra[a] == cmbExtra.GetItemText(cmbExtra.SelectedIndex))
                                {
                                    var ExtraSelezionato = (ExtraScontiItem)cmbExtra.SelectedItem;
                                if (TipoExtra == "costo")
                                {
                                    lstCosti.Items.Add(new ExtraScontiItem(ExtraSelezionato.ToString(), ExtraSelezionato.PrezzoExtra(), ExtraSelezionato.TipologiaExtra()));
                                }
                                else
                                {
                                    lstSconti.Items.Add(new ExtraScontiItem(ExtraSelezionato.ToString(), ExtraSelezionato.PrezzoExtra(), ExtraSelezionato.TipologiaExtra()));
                                }
                                }
                            }
                        }
                        else
                        {
                            // VECCHIO METODO
                            CaricaDatabaseCostiSconti();
                            for (int b = 0; b < cmbExtra.Items.Count; b++)
                            {
                                string ElementoDaControllare = cmbExtra.GetItemText(cmbExtra.SelectedIndex);
                                if (ArrayExtra[a] == ElementoDaControllare.Substring(ElementoDaControllare.IndexOf(":")))
                                {
                                    var ExtraSelezionato = (ExtraScontiItem)cmbExtra.SelectedItem;
                                if (TipoExtra == "costo")
                                {
                                    lstCosti.Items.Add(new ExtraScontiItem(ExtraSelezionato.ToString(), ExtraSelezionato.PrezzoExtra(), ExtraSelezionato.TipologiaExtra()));
                                }
                                else
                                {
                                    lstSconti.Items.Add(new ExtraScontiItem(ExtraSelezionato.ToString(), ExtraSelezionato.PrezzoExtra(), ExtraSelezionato.TipologiaExtra()));
                                }
                            }
                            }
                        }
                    }

                }

        }

Video

Claudio Masci

Sono innanzitutto un appassionato di informatica e tecnologia in generale. Lavoro in ambito informatico da circa 16 anni, spaziando in diversi campi, andando dalla programmazione web, allo sviluppo di software, dalla grafica alla modellazione 3d ed al video editing, ho sempre voluto approfondire ogni aspetto e questo mi ha permesso di lavorare in diversi ambiti informatici.

Rispondi