コード例 #1
0
ファイル: SyncHelper.cs プロジェクト: ComuneFerrara/WinTicket
        public void End()
        {
            ResultProcessed = true;

            using (Session session = new Session())
            {
                try
                {
                    Postazione postazione = session.GetObjectByKey <Postazione>(Program.Postazione.Oid);
                    if (Result)
                    {
                        postazione.SyncResult  = EnumSyncResult.Ok;
                        postazione.SyncSuccess = postazione.SyncTry;
                        postazione.Save();
                    }
                    else
                    {
                        postazione.SyncResult = EnumSyncResult.Error;
                        postazione.Save();
                    }
                }
                catch (Exception)
                {
                    // possiamo avere un problema sullo schema del database
                    // ignoriamo e proseguiamo l'operazione ..
                }

                try
                {
                    Messaggio msg = new Messaggio(session);
                    msg.Data = DateTime.Now;

                    if (Result)
                    {
                        //msg.Oggetto = String.Format("SYNCOK {0}: {1} sec. Conflitti ({2}/{3}) Modifiche ({4}/{5})", Environment.MachineName,
                        //    ResultInfo.Durata(),
                        //    ResultInfo.ConflittiSub, ResultInfo.ConflittiPub, ResultInfo.ModificheSub, ResultInfo.ModifichePub);
                        //msg.TestoEsteso = ResultInfo.Info;
                        //msg.Autore = session.GetObjectByKey<Utente>(Program.UtenteCollegato.Oid);
                        //msg.Tipologia = EnumTipoMessaggio.Normale;
                        //msg.Save();
                    }
                    else
                    {
                        msg.Oggetto     = "SYNC_ERR: " + Environment.MachineName;
                        msg.TestoEsteso = ResultInfo.Info;
                        msg.Autore      = session.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                        msg.Tipologia   = EnumTipoMessaggio.SyncError;
                        msg.Save();
                    }
                }
                catch (Exception)
                {
                    // possiamo avere un problema sullo schema del database
                    // ignoriamo e proseguiamo l'operazione ..
                }
            }
        }
コード例 #2
0
        private void simpleButtonForza_Click(object sender, EventArgs e)
        {
            using (Session session = new Session())
            {
                Messaggio msg = new Messaggio(session);
                msg.Data        = DateTime.Now;
                msg.Oggetto     = String.Format("FORZATA CHIUSURA {0}", Program.Postazione.Nome);
                msg.TestoEsteso = string.Empty;
                msg.Autore      = session.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                msg.Tipologia   = EnumTipoMessaggio.SyncDelay;
                msg.Save();
            }

            DialogResult = DialogResult.OK;
        }
コード例 #3
0
        private static bool RecuperaEntratePosticipate()
        {
            try
            {
                using (UnitOfWork ses = new UnitOfWork())
                {
                    Postazione postazione = ses.GetObjectByKey <Postazione>(Program.Postazione.Oid);
                    XPCollection <EntrataPosticipata> entrate = new XPCollection <EntrataPosticipata>(ses,
                                                                                                      new GroupOperator(GroupOperatorType.And, new CriteriaOperator[]
                    {
                        //new BinaryOperator("")
                        new BinaryOperator("Postazione", postazione),
                        new BinaryOperator("Status", EnumStatusEntrata.InCoda)
                    }));

                    foreach (var item in entrate)
                    {
                        XPCollection <Stampa> stampe = new XPCollection <Stampa>(ses,
                                                                                 new GroupOperator(GroupOperatorType.Or,
                                                                                                   new CriteriaOperator[]
                        {
                            new BinaryOperator("BarCode", item.BarCode),
                            new BinaryOperator("CodiceProgressivo", item.BarCode),
                            new BinaryOperator("Card.Codice", item.BarCode)
                        }));
                        stampe.Sorting =
                            new DevExpress.Xpo.SortingCollection(new SortProperty[]
                        {
                            new SortProperty("Vendita.DataOraStampa", DevExpress.Xpo.DB.SortingDirection.Descending)
                        });

                        if (stampe.Count > 0)
                        {
                            Stampa stampa = stampe[0];
                            foreach (PostazioneIngresso ping in postazione.Ingressi)
                            {
                                if (ping.Tipologia == EnumTipologiaPostazioneIngresso.MarcaturaAutomatica)
                                {
                                    foreach (RigaStampaIngresso riga in stampa.RigheStampaIngresso)
                                    {
                                        if (riga.Ingresso == ping.Ingresso)
                                        {
                                            if (riga.TotalePersone > riga.TotaleIngressi)
                                            {
                                                // registra entrate su questo ingresso
                                                Entrata entrata = new Entrata(ses);
                                                entrata.DataOraEntrata     = item.DataOraEntrata;
                                                entrata.Quantita           = riga.TotalePersone - riga.TotaleIngressi;
                                                entrata.RigaStampaIngresso = riga;
                                                entrata.Save();

                                                riga.TotaleIngressi = riga.TotalePersone;
                                                riga.Save();
                                            }
                                        }
                                    }
                                }
                            }

                            item.DataEvasione = DateTime.Now;
                            item.Status       = EnumStatusEntrata.Evasa;
                            item.Save();

                            Messaggio msg = new Messaggio(ses);
                            msg.Data        = DateTime.Now;
                            msg.Oggetto     = String.Format("BarCode {0} evaso", item.BarCode);
                            msg.TestoEsteso = String.Format("BarCode {0} evaso", item.BarCode);
                            msg.Autore      = ses.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                            msg.Tipologia   = EnumTipoMessaggio.RecuperoEntrataPosticipata;
                            msg.Save();
                        }
                        else
                        {
                            if (item.DataOraEntrata.AddMonths(1) < DateTime.Now)
                            {
                                item.DataEvasione = DateTime.Now;
                                item.Status       = EnumStatusEntrata.Annullata;
                                item.Save();

                                Messaggio msg = new Messaggio(ses);
                                msg.Data        = DateTime.Now;
                                msg.Oggetto     = String.Format("BarCode {0} annullato", item.BarCode);
                                msg.TestoEsteso =
                                    String.Format(
                                        "BarCode {0} annullato perche' risale a piu' di un mese fa ed attualmente non ancora presente in archivio ...",
                                        item.BarCode);
                                msg.Autore    = ses.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                                msg.Tipologia = EnumTipoMessaggio.RecuperoEntrataPosticipata;
                                msg.Save();
                            }
                        }
                    }

                    ses.CommitChanges();
                }
            }
            catch (Exception)
            {
                XtraMessageBox.Show(
                    "Errore nel recupero dei codici a barre posticipati. Riavviare il programma e riprovare.", "Errore",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }
            return(true);
        }
コード例 #4
0
        private void simpleButtonVerifica_Click(object sender, EventArgs e)
        {
            string codice = this.buttonEditCodice.Text;

            CoStampa          = new XPCollection <Stampa>(this.unitOfWork1);
            CoStampa.Criteria = new GroupOperator(GroupOperatorType.Or,
                                                  new CriteriaOperator[] {
                new BinaryOperator("BarCode", codice),
                new BinaryOperator("CodiceProgressivo", codice),
                new BinaryOperator("Card.Codice", codice)
            });
            CoStampa.Sorting = new SortingCollection(new SortProperty[] { new SortProperty("Vendita.DataOraStampa", DevExpress.Xpo.DB.SortingDirection.Descending) });

            this.gridControlIngressi.DataSource = CoStampa;

            if (CoStampa.Count == 0)
            {
                Pulisci();
                if (!string.IsNullOrEmpty(codice) && codice.Length > 3)
                {
                    Postazione         postazione = this.unitOfWork1.GetObjectByKey <Postazione>(Program.Postazione.Oid);
                    EntrataPosticipata entrata    = this.unitOfWork1.FindObject <EntrataPosticipata>(new GroupOperator(GroupOperatorType.And, new CriteriaOperator[] {
                        new BinaryOperator("BarCode", codice),
                        new BinaryOperator("Postazione", postazione),
                        new BinaryOperator("Status", EnumStatusEntrata.InCoda)
                    }));

                    if (entrata == null)
                    {
                        entrata                = new EntrataPosticipata(this.unitOfWork1);
                        entrata.BarCode        = codice;
                        entrata.DataOraEntrata = DateTime.Now;
                        entrata.Postazione     = postazione;
                        entrata.Utente         = this.unitOfWork1.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                        entrata.Status         = EnumStatusEntrata.InCoda;
                        entrata.Save();

                        Messaggio msg = new Messaggio(this.unitOfWork1);
                        msg.Data        = DateTime.Now;
                        msg.Oggetto     = String.Format("BarCode {0}", codice);
                        msg.TestoEsteso = String.Format("BarCode {0} non trovato, utente {1}, postazione {2} ! (inserito nella lista per il recupero posticipato)", codice,
                                                        Program.UtenteCollegato.FullName,
                                                        Program.Postazione.Nome);
                        msg.Autore    = entrata.Utente;
                        msg.Tipologia = EnumTipoMessaggio.EntrataPosticipata;
                        msg.Save();

                        this.unitOfWork1.CommitChanges();

                        XtraMessageBox.Show(String.Format("Codice {0} NON trovato! (inserito nella lista per il recupero posticipato)", codice), "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        XtraMessageBox.Show(String.Format("Codice {0} NON trovato! (il codice è già presente nella lista per il recupero posticipato)", codice), "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    XtraMessageBox.Show(String.Format("Codice {0} errato!", codice), "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                this.spinEdit1.Value              = 0;
                this.spinEdit1.Enabled            = false;
                this.simpleButtonRegistra.Enabled = false;
                this.barButtonItemAltre.Enabled   = true;

                this.panelControlInfo.Visible = true;
                this.gridViewIngressi.BestFitColumns();

                this.barButtonItemIngresso.Enabled = true;

                // prendo la prima stampa (dovrebbe essere l'unica, se non ho cercato per vendita.codiceleggibile)
                Stampa stampa = CoStampa[0];
                ImpostaValiditaCard(stampa);
                AbilitaStampaCardMyFE(stampa);

                this.textEditIntestazioneCard.Text = "";
                if (stampa.Card != null)
                {
                    if (stampa.Card.Albergo != null)
                    {
                        this.textEditIntestazioneCard.Text = stampa.Card.Albergo.RagioneSociale;
                    }
                    if (stampa.Card.VendutaOnline)
                    {
                        this.textEditIntestazioneCard.Text = stampa.Card.TitolareCarta;
                    }
                }

                this.textEditBarCode.Text   = stampa.BarCode;
                this.textEditProg.Text      = stampa.CodiceProgressivo;
                this.dateEditStart.DateTime = stampa.InizioValidita;
                this.dateEditEnd.DateTime   = stampa.FineValidita;
                this.textEdit1.Text         = stampa.Vendita.Postazione.Nome;

                this.labelControlStatus.Text      = "Regolare";
                this.labelControlStatus.ForeColor = Color.Green;

                // toglie tutti i check
                foreach (BarItemLink itemLink in this.ribbonPageGroupIngressi.ItemLinks)
                {
                    itemLink.Item.LargeGlyph = WinTicketNext.Properties.Resources.checkbox_unchecked;
                    itemLink.Item.Enabled    = false;
                }

                int qta    = int.MaxValue;
                int totali = 0;
                foreach (PostazioneIngresso postazioneIngresso in Program.Postazione.Ingressi)
                {
                    RigaStampaIngresso elemento = GetElemento(stampa, postazioneIngresso.Ingresso);
                    if (elemento != null)
                    {
                        totali += elemento.TotalePersone;

                        int poq = elemento.TotalePersone - elemento.TotaleIngressi;
                        if (poq > 0)
                        {
                            qta = Math.Min(poq, qta);

                            foreach (BarItemLink itemLink in this.ribbonPageGroupIngressi.ItemLinks)
                            {
                                Ingresso ingre = itemLink.Item.Tag as Ingresso;
                                if (ingre != null && ingre.Oid == elemento.Ingresso.Oid)
                                {
                                    itemLink.Item.LargeGlyph = WinTicketNext.Properties.Resources.checkbox;
                                    itemLink.Item.Enabled    = true;
                                }
                            }
                        }
                    }
                }

                if (qta > 0 && qta < 10000)
                {
                    StampaVenditaOnline(stampa, false);

                    this.spinEdit1.Value              = qta;
                    this.spinEdit1.Enabled            = true;
                    this.simpleButtonRegistra.Enabled = true;
                }
                else
                {
                    if (totali > 0)
                    {
                        this.labelControlStatus.Text      = "Già utilizzato";
                        this.labelControlStatus.ForeColor = Color.Orange;
                    }
                    else
                    {
                        this.labelControlStatus.Text      = "non valido per questa postazione";
                        this.labelControlStatus.ForeColor = Color.Orange;
                    }
                }

                DateTime adesso = DateTime.Now.Date;
                if (adesso >= stampa.InizioValidita && adesso <= stampa.FineValidita)
                {
                    this.dateEditEnd.BackColor   = Color.FromArgb(247, 245, 241);
                    this.dateEditStart.BackColor = Color.FromArgb(247, 245, 241);

                    this.labelControlStatus.Text += " (non scaduto)";
                }
                else
                {
                    this.dateEditEnd.BackColor   = Color.Orange;
                    this.dateEditStart.BackColor = Color.Orange;

                    this.labelControlStatus.Text += " (SCADUTO)";
                }
            }

            MoveFocus();
        }
コード例 #5
0
        private void barButtonItemAnnulla_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (!m_Vendita.PossoEliminarla())
            {
                XtraMessageBox.Show("Non puoi eliminare questa vendita perchè è già stata inserita in un report contabile.", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (!Program.UtenteCollegato.Amministratore)
            {
                if (m_Vendita.Postazione.Oid != Program.Postazione.Oid)
                {
                    XtraMessageBox.Show("Non puoi eliminare questa vendita perchè è stata effettuata da un'altra postazione e non sei amministratore.", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }

            if (m_Vendita.EsistonoCardMyFE())
            {
                if (XtraMessageBox.Show("Attenzione, esistono delle Card MyFE associate a questa vendita. Vuoi proseguire ugualmente (IMPLICA IL RECUPERO DELLE CARD) ?", "Conferma", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                {
                    return;
                }
            }

            if (m_Vendita.EsistonoEntrate())
            {
                if (XtraMessageBox.Show("Attenzione, esistono delle entrate associate a questa vendita. Vuoi proseguire ugualmente ?", "Conferma", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                {
                    return;
                }
            }

            if (XtraMessageBox.Show(string.Format("Confermi l'eliminazione di TUTTA la vendita ({0:c} persone {1}) ?", m_Vendita.TotaleImporto, m_Vendita.TotalePersone), "Conferma", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (string.IsNullOrEmpty(m_Vendita.CodicePrevent))
                {
                    using (Session delSession = new Session())
                    {
                        Vendita toDelete = delSession.GetObjectByKey <Vendita>(m_Vendita.Oid);
                        if (toDelete != null)
                        {
                            Messaggio msg = new Messaggio(delSession);
                            msg.Autore       = delSession.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                            msg.Data         = DateTime.Now;
                            msg.Oggetto      = "Eliminazione " + toDelete.CodiceLeggibile;
                            msg.TestoEsteso  = String.Format("L'utente {0} ha eliminato la vendita {1} di importo totale {2:c} dalla postazione {3}.", Program.UtenteCollegato.FullName, toDelete.CodiceLeggibile, toDelete.TotaleImporto, Program.Postazione.Nome);
                            msg.TestoEsteso += Descrizione(toDelete);
                            msg.Tipologia    = EnumTipoMessaggio.Eliminazione;
                            msg.Save();

                            toDelete.EliminaVendita();
                        }
                    }

                    DialogResult = System.Windows.Forms.DialogResult.OK;
                }
                else
                {
                    if (XtraMessageBox.Show(string.Format("La prenotazione {0} verrà ripristinata al suo stato originario. Vuoi proseguire ?", m_Vendita.CodicePrevent), "Conferma", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        // RIPRISTINO PRENOTAZIONE
                        prevent.verifica.Out obj = RichiestaDelete.MakeDelete(m_Vendita.CodiceLeggibile);
                        if (obj != null && (obj.ReturnCode == "00" || obj.ReturnCode == "51" || obj.ReturnCode == "52"))
                        {
                            using (Session delSession = new Session())
                            {
                                Vendita toDelete = delSession.GetObjectByKey <Vendita>(m_Vendita.Oid);
                                if (toDelete != null)
                                {
                                    Messaggio msg = new Messaggio(delSession);
                                    msg.Autore       = delSession.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                                    msg.Data         = DateTime.Now;
                                    msg.Oggetto      = String.Format("Eliminazione {0} con prenotazione {1}", toDelete.CodiceLeggibile, toDelete.CodicePrevent);
                                    msg.TestoEsteso  = String.Format("L'utente {0} ha eliminato la vendita {1} di importo totale {2:c} dalla postazione {3} associata alla prenotazione {4}.", Program.UtenteCollegato.FullName, toDelete.CodiceLeggibile, toDelete.TotaleImporto, Program.Postazione.Nome, toDelete.CodicePrevent);
                                    msg.TestoEsteso += Descrizione(toDelete);
                                    msg.Tipologia    = EnumTipoMessaggio.EliminazioneConPrenotazione;
                                    msg.Save();

                                    toDelete.EliminaVendita();
                                }
                            }

                            DialogResult = System.Windows.Forms.DialogResult.OK;
                        }
                        else
                        {
                            XtraMessageBox.Show(
                                String.Format("Errore: {0}", RichiestaDelete.UltimoErrore.DescrizioneErrore,
                                              String.Format("Errore Web: {0}", RichiestaDelete.UltimoErrore.ReturnCode), MessageBoxButtons.OK, MessageBoxIcon.Error));
                        }
                    }
                }
            }
        }