예제 #1
0
        private void Cumulativo(Vendita item, RigaVenditaVariante rigaVenditaVariante, List <Struttura> strutture)
        {
            if (item.Struttura == _Struttura)
            {
                Cumulativi dato = _Dati.CumulativiCerca(rigaVenditaVariante.Variante);

                if (rigaVenditaVariante.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && rigaVenditaVariante.Variante.PrezzoAttuale.PrezzoRidotto == null)
                {
                }
                else
                {
                    dato.Pax        += rigaVenditaVariante.Quantita;
                    _Dati.TotalePax += rigaVenditaVariante.Quantita;
                }

                if (item.Incasso == EnumIncasso.Contanti)
                {
                    dato.TotaleContanti  += rigaVenditaVariante.PrezzoTotale;
                    _Dati.TotaleContanti += rigaVenditaVariante.PrezzoTotale;
                }
                else
                {
                    dato.TotalePos  += rigaVenditaVariante.PrezzoTotale;
                    _Dati.TotalePos += rigaVenditaVariante.PrezzoTotale;
                }
            }
            else
            {
                // non interessa
                if (strutture.Contains(_Struttura))
                {
                    // mi interessa
                }
            }
        }
예제 #2
0
        private void SoloAltre(Vendita item, RigaVenditaVariante rigaVenditaVariante)
        {
            if (item.Struttura == _Struttura)
            {
                VendutiPerTerzi dato = _Dati.PerAltriCerca(rigaVenditaVariante.Variante.Biglietto.Percorso.Ingressi[0].Struttura);

                dato.Pax        += rigaVenditaVariante.Quantita;
                _Dati.TotalePax += rigaVenditaVariante.Quantita;

                if (item.Incasso == EnumIncasso.Contanti)
                {
                    dato.TotaleContanti  += rigaVenditaVariante.PrezzoTotale;
                    _Dati.TotaleContanti += rigaVenditaVariante.PrezzoTotale;
                }
                else
                {
                    dato.TotalePos  += rigaVenditaVariante.PrezzoTotale;
                    _Dati.TotalePos += rigaVenditaVariante.PrezzoTotale;
                }
            }
            else
            {
                // non interessa
            }
        }
예제 #3
0
        private void SoloQuesta(Vendita item, RigaVenditaVariante rigaVenditaVariante)
        {
            if (item.Struttura == _Struttura)
            {
                BigliettiInProprio dato = _Dati.InProprioCerca(rigaVenditaVariante.Variante);

                dato.Pax        += rigaVenditaVariante.Quantita;
                _Dati.TotalePax += rigaVenditaVariante.Quantita;

                if (item.Incasso == EnumIncasso.Contanti)
                {
                    dato.TotaleContanti  += rigaVenditaVariante.PrezzoTotale;
                    _Dati.TotaleContanti += rigaVenditaVariante.PrezzoTotale;
                }
                else
                {
                    dato.TotalePos  += rigaVenditaVariante.PrezzoTotale;
                    _Dati.TotalePos += rigaVenditaVariante.PrezzoTotale;
                }
            }
            else
            {
                // non interessa
            }
        }
예제 #4
0
        private void AddToList(RigaVenditaVariante riga)
        {
            foreach (Ingresso ingresso in riga.Variante.Biglietto.Percorso.Ingressi)
            {
                //if (ingresso.SoggettoEconomico == _Soggetto)
                if (_Ingressi.Contains(ingresso))
                {
                    DatiReport01b target = null;
                    foreach (DatiReport01b dataReport01 in _List)
                    {
                        if (dataReport01.Museo == ingresso.Descrizione)
                        {
                            target = dataReport01;
                        }
                    }

                    if (target == null)
                    {
                        target        = new DatiReport01b();
                        target.Museo  = ingresso.Descrizione;
                        target.Ordine = ingresso.OrdineReport01;
                        _List.Add(target);
                    }

                    AddToList(target, ingresso, riga);
                }
            }
        }
예제 #5
0
        private void barButtonItemClear_ItemClick(object sender, ItemClickEventArgs e)
        {
            RigaVenditaVariante riga = this.gridViewRigheStampa.GetFocusedRow() as RigaVenditaVariante;

            if (riga != null)
            {
                riga.CodiceSconto = null;
                riga.Save();
                this.unitOfWork1.CommitChanges();
            }
        }
예제 #6
0
 private void SoloAltre(Vendita item, RigaVenditaVariante rigaVenditaVariante)
 {
     if (item.Struttura == _Struttura)
     {
         // non interessa
     }
     else
     {
         // non interessa
     }
 }
예제 #7
0
        private void AddToList(RigaVenditaVariante riga)
        {
            DatiReport07 target = null;

            foreach (DatiReport07 dataReport01 in _List)
            {
                if (dataReport01.Museo == riga.Vendita.Struttura.Descrizione)
                {
                    target = dataReport01;
                }
            }

            if (target == null)
            {
                target        = new DatiReport07();
                target.Museo  = riga.Vendita.Struttura.Descrizione;
                target.Ordine = riga.Vendita.Struttura.Descrizione;
                _List.Add(target);
            }

            AddToList(target, riga.Vendita.Struttura, riga);

            /*
             * foreach (Ingresso ingresso in riga.Variante.Biglietto.Percorso.Ingressi)
             * {
             *  //if (ingresso.SoggettoEconomico == _Soggetto)
             *  if (_Ingressi.Contains(ingresso))
             *  {
             *      DatiReport07 target = null;
             *      foreach (DatiReport07 dataReport01 in _List)
             *      {
             *          if (dataReport01.Museo == ingresso.Descrizione)
             *              target = dataReport01;
             *      }
             *
             *      if (target == null)
             *      {
             *          target = new DatiReport07();
             *          target.Museo = ingresso.Descrizione;
             *          target.Ordine = ingresso.OrdineReport01;
             *          _List.Add(target);
             *      }
             *
             *      AddToList(target, ingresso, riga);
             *  }
             * }
             * */
        }
        private void gridViewRigheStampa_DoubleClick(object sender, EventArgs e)
        {
            RigaVenditaVariante riga = this.gridViewRigheStampa.GetFocusedRow() as RigaVenditaVariante;

            if (riga != null)
            {
                Vendita vendita = riga.Vendita;
                if (vendita != null)
                {
                    XtraFormDettaglioVendita dettaglio = new XtraFormDettaglioVendita();
                    dettaglio.Init(vendita);

                    if (dettaglio.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
                    {
                        //this.xpServerCollectionSourceVendite.Reload();
                        this.xpCollectionRigaVenditaVariante.Reload();
                    }
                }
            }
        }
예제 #9
0
        private void Cumulativo(Vendita item, RigaVenditaVariante rigaVenditaVariante, List <Struttura> strutture)
        {
            if (item.Struttura == _Struttura)
            {
                // non interessa
            }
            else
            {
                if (strutture.Contains(_Struttura))
                {
                    Cumulativi dato = _Dati.CumulativiCerca(rigaVenditaVariante.Variante, item.Struttura);

                    if (rigaVenditaVariante.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && !rigaVenditaVariante.Variante.MyFeComune())
                    {
                    }
                    else
                    {
                        dato.Pax        += rigaVenditaVariante.Quantita;
                        _Dati.TotalePax += rigaVenditaVariante.Quantita;
                    }

                    //dato.Pax += rigaVenditaVariante.Quantita;
                    //_Dati.TotalePax += rigaVenditaVariante.Quantita;

                    if (item.Incasso == EnumIncasso.Contanti)
                    {
                        dato.TotaleContanti  += rigaVenditaVariante.PrezzoTotale;
                        _Dati.TotaleContanti += rigaVenditaVariante.PrezzoTotale;
                    }
                    else
                    {
                        dato.TotalePos  += rigaVenditaVariante.PrezzoTotale;
                        _Dati.TotalePos += rigaVenditaVariante.PrezzoTotale;
                    }
                }
            }
        }
예제 #10
0
        private bool CreaVendita()
        {
            using (UnitOfWork uow = new UnitOfWork())
            {
                Vendita vendita = new Vendita(uow);

                vendita.Incasso         = this.checkEditPos.Checked ? EnumIncasso.Pos : EnumIncasso.Contanti;
                vendita.CodiceLeggibile = Vendita.NuovoCodiceVendita();
                vendita.CodicePrevent   = "";

                vendita.DataContabile = DateTime.Now.Date;
                vendita.DataOraStampa = DateTime.Now;

                vendita.Descrizione = "";

                vendita.Utente        = uow.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                vendita.Postazione    = uow.GetObjectByKey <Postazione>(Program.Postazione.Oid);
                vendita.Struttura     = uow.GetObjectByKey <Struttura>(Program.Postazione.Struttura.Oid);
                vendita.TotalePersone = ElencoCard.Count;
                vendita.TotaleImporto = CalcolaTotale(ElencoCard);
                vendita.Save();

                //Percorso per = uow.FindObject<Percorso>(new BinaryOperator("Descrizione", "MyFE"));
                for (int i = 0; i < ElencoCard.Count; i++)
                {
                    Matricola card  = uow.GetObjectByKey <Matricola>(ElencoCard[i].Oid);
                    Titolo    unife = uow.FindObject <Titolo>(new BinaryOperator("Attributi", "-UNIFE-"));

                    //Variante v1 = per.GetVarianteMyFe("Com", "C", card.TipologiaCard);
                    //Variante v2 = per.GetVarianteMyFe("Pin", "C", card.TipologiaCard);

                    if (unife == null)
                    {
                        XtraMessageBox.Show("Titolo per -UNIFE- mancante", "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }

                    if (card == null)
                    {
                        XtraMessageBox.Show("Tessera unife mancante", "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }

                    if (card.ValidaDal > DateTime.Today)
                    {
                        XtraMessageBox.Show("Tessera " + card.Codice + " valida dal " + card.ValidaDal.ToString("d"), "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }

                    if (card.ValidaAl < DateTime.Today)
                    {
                        XtraMessageBox.Show("Tessera " + card.Codice + " valida fino al " + card.ValidaAl.ToString("d"), "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }

                    decimal totale = 0; // = v1.Prezzo + v2.Prezzo;

                    //List<Ingresso> ingressi = new List<Ingresso>();
                    //ingressi.AddRange(per.Ingressi);

                    foreach (Ingresso ingresso in ElencoIngressi)
                    {
                        Variante v1 = FindVarianteSingoleOmaggio(uow, ingresso);

                        if (v1 == null)
                        {
                            XtraMessageBox.Show("Per ingresso " + ingresso.Descrizione + " non esiste una variante adeguata.", "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return(false);
                        }

                        RigaVenditaVariante rvv1 = new RigaVenditaVariante(uow);
                        rvv1.PrezzoTotale   = v1.Prezzo;
                        rvv1.PrezzoUnitario = v1.Prezzo;
                        rvv1.Profilo        = i;
                        rvv1.Quantita       = 1;
                        rvv1.Variante       = v1;
                        rvv1.Vendita        = vendita;
                        rvv1.Titolo         = unife;
                        //rvv1.Card = card;
                        rvv1.Matricola = card.Codice;
                        rvv1.Save();

                        totale += v1.Prezzo;
                    }

                    //RigaVenditaVariante rvv2 = new RigaVenditaVariante(uow);
                    //rvv2.PrezzoTotale = v2.Prezzo;
                    //rvv2.PrezzoUnitario = v2.Prezzo;
                    //rvv2.Profilo = i;
                    //rvv2.Quantita = 1;
                    //rvv2.Variante = v2;
                    //rvv2.Vendita = vendita;
                    //rvv2.Card = card;
                    //rvv2.Save();

                    DateTime inizioVal = DateTime.Now.Date;
                    DateTime fineVal   = DateTime.Now.Date;

                    Stampa stampa = new Stampa(uow);
                    stampa.Vendita        = vendita;
                    stampa.InizioValidita = inizioVal;
                    stampa.FineValidita   = fineVal;
                    stampa.Quantita       = 1;
                    stampa.ImportoTotale  = totale;
                    stampa.StatoStampa    = i;
                    stampa.TipoStampa     = EnumTipoStampa.Standard;
                    //stampa.Card = card;
                    stampa.Matricola = card.Codice;
                    stampa.Save();
                    stampa.GeneraBarCode(Program.Postazione, ElencoIngressi);

                    //card.Status = EnumStatoCard.Emessa;
                    //card.Stampa = stampa;
                    ////if (_Albergo)
                    ////    card.Albergo = uow.GetObjectByKey<AnagraficaCard>((this.lookUpEditAlbergo.EditValue as AnagraficaCard).Oid);
                    //card.Save();

                    Stampa doppia = uow.FindObject <Stampa>(new BinaryOperator("BarCode", stampa.BarCode));
                    if (doppia != null)
                    {
                        stampa.GeneraBarCode(Program.Postazione, ElencoIngressi);

                        doppia = uow.FindObject <Stampa>(new BinaryOperator("BarCode", stampa.BarCode));
                        if (doppia != null)
                        {
                            stampa.GeneraBarCode(Program.Postazione, ElencoIngressi);

                            doppia = uow.FindObject <Stampa>(new BinaryOperator("BarCode", stampa.BarCode));
                            if (doppia != null)
                            {
                                stampa.GeneraBarCode(Program.Postazione, ElencoIngressi);
                            }
                        }
                    }

                    stampa.Save();

                    foreach (Ingresso ingresso in ElencoIngressi)
                    {
                        RigaStampaIngresso rigaingresso = new RigaStampaIngresso(uow);
                        rigaingresso.Ingresso      = uow.GetObjectByKey <Ingresso>(ingresso.Oid);
                        rigaingresso.Stampa        = stampa;
                        rigaingresso.TotalePersone = 1;
                        rigaingresso.Save();
                    }
                }

                // registra ingressi per QUESTA postazione
                foreach (Stampa item1 in vendita.Stampe)
                {
                    foreach (RigaStampaIngresso item2 in item1.RigheStampaIngresso)
                    {
                        if (VarcoPostazione(item2))
                        {
                            Entrata entrata = new Entrata(uow);
                            entrata.DataOraEntrata     = vendita.DataOraStampa;
                            entrata.Quantita           = item2.TotalePersone;
                            entrata.RigaStampaIngresso = item2;
                            entrata.Save();

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

                uow.CommitChanges();

                m_Vendita = this._UnitOfWork.GetObjectByKey <Vendita>(vendita.Oid);
            }

            return(true);
        }
        private void simpleButtonOk_Click(object sender, EventArgs e)
        {
            Variante   variante    = this.lookUpEditVariante.EditValue as Variante;
            Titolo     titolo      = this.lookUpEditTitolo.EditValue as Titolo;
            Postazione postazione  = this.lookUpEdit1.EditValue as Postazione;
            int        quantita    = (int)this.spinEditQta.Value;
            DateTime   dataVendita = this.dateEditData.DateTime;

            if (dataVendita > DateEnd || dataVendita < DateStart)
            {
                this.dateEditData.ErrorText = string.Format("Deve essere compresa fra {0:g} e {1:g}", DateStart, DateEnd);
                return;
            }

            if (dataVendita > DateTime.Today)
            {
                this.dateEditData.ErrorText = string.Format("Non può essere nel futuro ...");
                return;
            }

            if ((DateTime.Today - dataVendita).TotalDays > 240)
            {
                this.dateEditData.ErrorText = string.Format("Non può essere oltre 8 mesi indietro");
                return;
            }

            if (dataVendita.Year <= 2013)
            {
                this.dateEditData.ErrorText = string.Format("Non può essere nel 2013 o prima");
                return;
            }

            if (variante != null && postazione != null)
            {
                if (!variante.Biglietto.IsAttrib(Biglietto.STR_BIGLIETTO_STORICO))
                {
                    if (dataVendita.Date > new DateTime(2011, 6, 1))
                    {
                        XtraMessageBox.Show("Data deve essere precedente a giugno 2011.", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }

                if (variante.Biglietto.Percorso.Ingressi.Count > 1)
                {
                    XtraMessageBox.Show("Non biglietti cumulativi", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    Ingresso ingresso = variante.Biglietto.Percorso.Ingressi[0];

                    Vendita vendita = new Vendita(this.unitOfWork1);
                    vendita.DataContabile   = dataVendita.Date;
                    vendita.DataOraStampa   = dataVendita.Add(this.timeEditOra.Time.TimeOfDay);
                    vendita.Incasso         = (EnumIncasso)this.imageComboBoxEditIncasso.EditValue;
                    vendita.Postazione      = postazione;
                    vendita.Struttura       = ingresso.Struttura;
                    vendita.TotaleImporto   = variante.PrezzoAttuale.Prezzo * quantita;
                    vendita.TotalePersone   = quantita;
                    vendita.Utente          = this.unitOfWork1.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                    vendita.CodiceLeggibile = Vendita.NuovoCodiceVendita();
                    vendita.Save();

                    RigaVenditaVariante riga = new RigaVenditaVariante(this.unitOfWork1);
                    riga.PrezzoTotale   = vendita.TotaleImporto;
                    riga.PrezzoUnitario = variante.PrezzoAttuale.Prezzo;
                    riga.Quantita       = quantita;
                    riga.Titolo         = titolo;
                    riga.Variante       = variante;
                    riga.Vendita        = vendita;
                    riga.Save();

                    Stampa stampa = new Stampa(this.unitOfWork1);
                    stampa.FineValidita   = vendita.DataContabile;
                    stampa.InizioValidita = vendita.DataContabile;
                    stampa.ImportoTotale  = vendita.TotaleImporto;
                    stampa.Quantita       = quantita;
                    stampa.Vendita        = vendita;
                    stampa.Save();

                    stampa.GeneraBarCode(Program.Postazione, new List <Ingresso>());
                    stampa.Save();

                    RigaStampaIngresso rigastampa = new RigaStampaIngresso(this.unitOfWork1);
                    rigastampa.Ingresso       = ingresso;
                    rigastampa.Stampa         = stampa;
                    rigastampa.TotaleIngressi = quantita;
                    rigastampa.TotalePersone  = quantita;
                    rigastampa.Save();

                    Entrata entrata = new Entrata(this.unitOfWork1);
                    entrata.DataOraEntrata     = vendita.DataOraStampa;
                    entrata.Quantita           = quantita;
                    entrata.RigaStampaIngresso = rigastampa;
                    entrata.Save();

                    this.unitOfWork1.CommitChanges();

                    DialogResult = System.Windows.Forms.DialogResult.OK;
                }
            }
            else
            {
                XtraMessageBox.Show("Selezionare Variante e Postazione", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #12
0
        private void AddToList(Ingresso ingresso, int qta, DateTime dateTime, EnumTipologiaEconomica enumTipologiaEconomica, RigaVenditaVariante riga)
        {
            DatiReport04 target = null;

            foreach (DatiReport04 dato in _List)
            {
                if (dato.Museo == ingresso.Descrizione)
                {
                    target = dato;
                }
            }

            if (target == null)
            {
                target        = new DatiReport04();
                target.Museo  = ingresso.Descrizione;
                target.Tipo   = ingresso.DescrizioneTipo;
                target.Ordine = ingresso.OrdineReport01;

                _List.Add(target);
            }

            if (riga == null)
            {
                target.CalcolaTotale(); return;
            }

            // filtro in base alle giornate di apertura
            //if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_VERIFICA_VALIDITA) && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile))
            //    return;
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_NO_VENDITA_DA_ALTRI) && riga.Vendita.Struttura != ingresso.Struttura)
            {
                return;
            }
            if (riga.Vendita.Struttura != ingresso.Struttura && riga.Vendita.DataContabile.Year <= 2011 && riga.Vendita.DataContabile.Month < 6)
            {
                return;
            }
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_MOD_TERREMOTO_1) && (riga.Vendita.DataContabile > EventoParticolare.EQDataEvento && riga.Vendita.DataContabile.Year < 2015 && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile)))
            {
                return;
            }
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto && riga.Variante.PrezzoAttuale.PrezzoRidotto == null)
            {
                return;
            }
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto)
            {
                return;
            }

            if (dateTime.Year == _AnnoInCorso)
            {
                target.VisAnno1 += qta;
            }
            else if (dateTime.Year == _AnnoInCorso - 1)
            {
                target.VisAnno2 += qta;
            }
            else if (dateTime.Year == _AnnoInCorso - 2)
            {
                target.VisAnno3 += qta;
            }
            else if (dateTime.Year == _AnnoInCorso - 3)
            {
                target.VisAnno4 += qta;
            }
            else if (dateTime.Year == _AnnoInCorso - 4)
            {
                target.VisAnno5 += qta;
            }

            target.CalcolaTotale();
        }
예제 #13
0
        private void AddToList(RigaVenditaVariante riga, Ingresso ingresso)
        {
            int fascia = riga.Vendita.DataOraStampa.Hour;

            DatiReport01 target = null;

            foreach (DatiReport01 dataReport01 in _List)
            {
                if (dataReport01.InizioFasciaOraria == fascia)
                {
                    target = dataReport01;
                }
            }

            if (target == null)
            {
                target       = new DatiReport01();
                target.Museo = ingresso.Descrizione;
                target.InizioFasciaOraria = fascia;

                _List.Add(target);
            }

            // filtro in base alle giornate di apertura
            //if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_VERIFICA_VALIDITA) && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile))
            //    return;
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_NO_VENDITA_DA_ALTRI) && riga.Vendita.Struttura != ingresso.Struttura)
            {
                return;
            }
            if (riga.Vendita.Struttura != ingresso.Struttura && riga.Vendita.DataContabile.Year <= 2011 && riga.Vendita.DataContabile.Month < 6)
            {
                return;
            }
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_MOD_TERREMOTO_1) && (riga.Vendita.DataContabile > EventoParticolare.EQDataEvento && riga.Vendita.DataContabile.Year < 2015 && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile)))
            {
                return;
            }
            // esclusione doppia card provincia per split prezzo
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto && riga.Variante.PrezzoAttuale.PrezzoRidotto == null)
            {
                return;
            }
            // esclusione di tutte le card ridotte (gli omaggio sono del museo di storia naturale e vanno conteggiati)
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto)
            {
                return;
            }

            if (riga.Vendita.Struttura.Oid == ingresso.Struttura.Oid)
            {
                // emesso da questa struttura

                switch (riga.Variante.TipologiaTre)
                {
                case EnumTipologiaTre.Standard:

                    switch (riga.Variante.Biglietto.Tipologia)
                    {
                    case EnumTipologiaBiglietto.Museo:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.MuseoStandardIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.MuseoStandardRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.MuseoOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    case EnumTipologiaBiglietto.Cumulativo:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.MuseoCumulativoIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.MuseoCumulativoRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.MuseoOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    case EnumTipologiaBiglietto.Card:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.MuseoCardIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.MuseoCardRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.MuseoOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    default:
                        throw new Exception(String.Format("Caso non previsto riga.Variante.Biglietto.Tipologia={0}", riga.Variante.Biglietto.Tipologia));
                    }

                    break;

                case EnumTipologiaTre.Bigliettone:
                    target.MuseoBigliettone += riga.Quantita;
                    break;

                case EnumTipologiaTre.OmaggioGruppo:
                    target.MuseoOmaggio += riga.Quantita;
                    break;

                case EnumTipologiaTre.CardMyFE:
                    target.MuseoMyFE += riga.Quantita;
                    break;

                default:
                    throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaTre={0}", riga.Variante.TipologiaTre));
                }
            }
            else
            {
                // altre strutture

                switch (riga.Variante.TipologiaTre)
                {
                case EnumTipologiaTre.Standard:

                    switch (riga.Variante.Biglietto.Tipologia)
                    {
                    case EnumTipologiaBiglietto.Museo:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.AltriStandardIntero += riga.Quantita;
                            //riga.Vendita.Stampe[0].StatoStampa == riga.Profilo;
                            //riga.Vendita.Stampe[0].RigheStampaIngresso[0].Entrate
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.AltriStandardRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.AltriOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    case EnumTipologiaBiglietto.Cumulativo:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.AltriCumulativoIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.AltriCumulativoRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.AltriOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    case EnumTipologiaBiglietto.Card:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.AltriCardIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.AltriCardRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.AltriOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    default:
                        throw new Exception(String.Format("Caso non previsto riga.Variante.Biglietto.Tipologia={0}", riga.Variante.Biglietto.Tipologia));
                    }

                    break;

                case EnumTipologiaTre.Bigliettone:
                    target.AltriBigliettone += riga.Quantita;
                    break;

                case EnumTipologiaTre.OmaggioGruppo:
                    target.AltriOmaggio += riga.Quantita;
                    break;

                case EnumTipologiaTre.CardMyFE:
                    target.AltriMyFE += riga.Quantita;
                    break;

                default:
                    throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaTre={0}", riga.Variante.TipologiaTre));
                }
            }

            target.CalcolaTotali();
        }
예제 #14
0
        private static void CreaVendita(MyFeData myFeData)
        {
            //var aprile = new DateTime(2016, 4, 1);
            //if (myFeData.InseritaIlDateTime.Date >= aprile) return;

            using (UnitOfWork uow = new UnitOfWork())
            {
                Utente     utente     = uow.FindObject <Utente>(new BinaryOperator("AdUsername", "Internet"));
                Postazione postazione = uow.FindObject <Postazione>(new BinaryOperator("CodiceUnivoco", 1));

                if (utente == null)
                {
                    throw new Exception("Manca utente INTERNET");
                }

                if (postazione == null)
                {
                    throw new Exception("Manca postazione INTERNET, CodiceUnivoco==1");
                }

                var obj = uow.FindObject <Card>(new BinaryOperator("Codice", myFeData.CodiceTessera));
                if (obj != null)
                {
                    throw new Exception("VENDITA: Esiste già card con codice: " + myFeData.CodiceTessera);
                }

                TransazioneWeb trans = new TransazioneWeb(uow);
                trans.PuntoVendita       = myFeData.PuntoVendita;
                trans.Cliente            = myFeData.Cliente;
                trans.EmailCliente       = myFeData.EmailCliente;
                trans.IDCliente          = myFeData.IDCliente;
                trans.Transazione        = myFeData.Transazione;
                trans.InseritaIl         = myFeData.InseritaIl;
                trans.TitolareCarta      = myFeData.TitolareCarta;
                trans.EmailTitolare      = myFeData.EmailTitolare;
                trans.Inizio             = myFeData.Inizio;
                trans.Fine               = myFeData.Fine;
                trans.Giorni             = myFeData.Giorni;
                trans.Prodotto           = myFeData.Prodotto;
                trans.CodiceOperazione   = myFeData.CodiceOperazione;
                trans.CodiceTessera      = myFeData.CodiceTessera;
                trans.TipoOperazione     = myFeData.TipoOperazione;
                trans.Quantita           = myFeData.Quantita;
                trans.InseritaIlDateTime = myFeData.InseritaIlDateTime;
                trans.InizioDateTime     = myFeData.InizioDateTime;
                trans.FineDateTime       = myFeData.FineDateTime;
                trans.Save();

                Card card = new Card(uow);
                card.Codice             = myFeData.CodiceTessera;
                card.AssegnataIl        = myFeData.InseritaIlDateTime;
                card.AssegnataStruttura = postazione.Struttura;
                card.AssegnataUtente    = utente;
                card.Status             = EnumStatoCard.Emessa;
                card.Email            = myFeData.EmailTitolare;
                card.Cliente          = myFeData.Cliente;
                card.TitolareCarta    = myFeData.TitolareCarta;
                card.CodiceOperazione = myFeData.CodiceOperazione;
                card.Transazione      = myFeData.Transazione;
                card.VendutaOnline    = true;
                card.EmessoBiglietto  = false;

                switch (myFeData.Giorni)
                {
                case "2":
                    card.TipologiaCard = EnumTipologiaCard.Card2Giorni;
                    break;

                case "3":
                    card.TipologiaCard = EnumTipologiaCard.Card3Giorni;
                    break;

                case "6":
                    card.TipologiaCard = EnumTipologiaCard.Card6Giorni;
                    break;
                }
                card.Save();

                Vendita vendita = new Vendita(uow);

                vendita.Incasso         = EnumIncasso.Internet;
                vendita.CodiceLeggibile = Vendita.NuovoCodiceVendita();
                vendita.CodicePrevent   = "";

                vendita.DataContabile = myFeData.InseritaIlDateTime.Date;
                vendita.DataOraStampa = myFeData.InseritaIlDateTime;

                vendita.Descrizione = myFeData.TitolareCarta;

                vendita.Utente        = utente;
                vendita.Postazione    = postazione;
                vendita.Struttura     = postazione.Struttura;
                vendita.TotalePersone = 1;
                vendita.TotaleImporto = card.Importo;
                vendita.Save();

                Percorso per = uow.FindObject <Percorso>(new BinaryOperator("Descrizione", "MyFE"));

                Variante v1 = per.GetVarianteMyFe("Com", "C", card.TipologiaCard);
                Variante v2 = per.GetVarianteMyFe("Pin", "C", card.TipologiaCard);

                if (v1 == null || v2 == null)
                //if (v1 == null)
                {
                    throw new Exception("Manca tariffa");
                    //XtraMessageBox.Show("Tariffa per le card mancante", "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //return false;
                }

                decimal totale = v1.Prezzo + (v2 != null ? v2.Prezzo : 0);

                List <Ingresso> ingressi = new List <Ingresso>();
                ingressi.AddRange(per.Ingressi);

                RigaVenditaVariante rvv1 = new RigaVenditaVariante(uow);
                rvv1.PrezzoTotale   = v1.Prezzo;
                rvv1.PrezzoUnitario = v1.Prezzo;
                rvv1.Profilo        = 0;
                rvv1.Quantita       = 1;
                rvv1.Variante       = v1;
                rvv1.Vendita        = vendita;
                rvv1.Card           = card;
                rvv1.Save();

                if (v2 != null)
                {
                    RigaVenditaVariante rvv2 = new RigaVenditaVariante(uow);
                    rvv2.PrezzoTotale   = v2.Prezzo;
                    rvv2.PrezzoUnitario = v2.Prezzo;
                    rvv2.Profilo        = 0;
                    rvv2.Quantita       = 1;
                    rvv2.Variante       = v2;
                    rvv2.Vendita        = vendita;
                    rvv2.Card           = card;
                    rvv2.Save();
                }

                DateTime inizioVal = myFeData.InizioDateTime.Date;
                DateTime fineVal   = inizioVal.AddDays(card.Giorni() - 1);

                Stampa stampa = new Stampa(uow);
                stampa.Vendita        = vendita;
                stampa.InizioValidita = inizioVal;
                stampa.FineValidita   = fineVal;
                stampa.Quantita       = 1;
                stampa.ImportoTotale  = totale;
                stampa.StatoStampa    = 0;
                stampa.TipoStampa     = EnumTipoStampa.CardInternet;
                stampa.Card           = card;
                stampa.Save();
                stampa.GeneraBarCode(postazione, ingressi);

                card.Status = EnumStatoCard.Emessa;
                card.Stampa = stampa;
                card.Save();

                Stampa doppia = uow.FindObject <Stampa>(new BinaryOperator("BarCode", stampa.BarCode));
                if (doppia != null)
                {
                    stampa.GeneraBarCode(postazione, ingressi);

                    doppia = uow.FindObject <Stampa>(new BinaryOperator("BarCode", stampa.BarCode));
                    if (doppia != null)
                    {
                        stampa.GeneraBarCode(postazione, ingressi);

                        doppia = uow.FindObject <Stampa>(new BinaryOperator("BarCode", stampa.BarCode));
                        if (doppia != null)
                        {
                            stampa.GeneraBarCode(postazione, ingressi);
                        }
                    }
                }

                stampa.Save();

                foreach (Ingresso ingresso in per.Ingressi)
                {
                    RigaStampaIngresso rigaingresso = new RigaStampaIngresso(uow);
                    rigaingresso.Ingresso      = uow.GetObjectByKey <Ingresso>(ingresso.Oid);
                    rigaingresso.Stampa        = stampa;
                    rigaingresso.TotalePersone = 1;
                    rigaingresso.Save();
                }

                uow.CommitChanges();
            }
        }
예제 #15
0
        private void AddToList(Ingresso ingresso, int qta, DateTime dateTime, EnumTipologiaEconomica enumTipologiaEconomica, RigaVenditaVariante riga)
        {
            DatiReport03b target = null;

            foreach (DatiReport03b datiReport03b in _List)
            {
                if (datiReport03b.Museo == ingresso.Descrizione)
                {
                    target = datiReport03b;
                }
            }

            if (target == null)
            {
                target           = new DatiReport03b();
                target.Museo     = ingresso.Descrizione;
                target.Tipo      = ingresso.DescrizioneTipo;
                target.Ordine    = ingresso.OrdineReport01;
                target.Tipologia = ingresso.Tipologia;

                _List.Add(target);
            }

            if (riga == null)
            {
                target.CalcolaTotale(); return;
            }

            // filtro in base alle giornate di apertura
            //if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_VERIFICA_VALIDITA) && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile))
            //    return;
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_NO_VENDITA_DA_ALTRI) && riga.Vendita.Struttura != ingresso.Struttura)
            {
                return;
            }
            if (riga.Vendita.Struttura != ingresso.Struttura && riga.Vendita.DataContabile.Year <= 2011 && riga.Vendita.DataContabile.Month < 6)
            {
                return;
            }
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_MOD_TERREMOTO_1) && (riga.Vendita.DataContabile > EventoParticolare.EQDataEvento && riga.Vendita.DataContabile.Year < 2015 && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile)))
            {
                return;
            }
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto && riga.Variante.PrezzoAttuale.PrezzoRidotto == null)
            {
                return;
            }
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto)
            {
                return;
            }

            if (enumTipologiaEconomica == EnumTipologiaEconomica.Pagante)
            {
                switch (dateTime.Month)
                {
                case 1:
                    target.M01Pag += qta;
                    break;

                case 2:
                    target.M02Pag += qta;
                    break;

                case 3:
                    target.M03Pag += qta;
                    break;

                case 4:
                    target.M04Pag += qta;
                    break;

                case 5:
                    target.M05Pag += qta;
                    break;

                case 6:
                    target.M06Pag += qta;
                    break;

                case 7:
                    target.M07Pag += qta;
                    break;

                case 8:
                    target.M08Pag += qta;
                    break;

                case 9:
                    target.M09Pag += qta;
                    break;

                case 10:
                    target.M10Pag += qta;
                    break;

                case 11:
                    target.M11Pag += qta;
                    break;

                case 12:
                    target.M12Pag += qta;
                    break;

                default:
                    throw new Exception("Mese non previsto");
                }
            }
            else if (enumTipologiaEconomica == EnumTipologiaEconomica.Gratuito)
            {
                switch (dateTime.Month)
                {
                case 1:
                    target.M01NPag += qta;
                    break;

                case 2:
                    target.M02NPag += qta;
                    break;

                case 3:
                    target.M03NPag += qta;
                    break;

                case 4:
                    target.M04NPag += qta;
                    break;

                case 5:
                    target.M05NPag += qta;
                    break;

                case 6:
                    target.M06NPag += qta;
                    break;

                case 7:
                    target.M07NPag += qta;
                    break;

                case 8:
                    target.M08NPag += qta;
                    break;

                case 9:
                    target.M09NPag += qta;
                    break;

                case 10:
                    target.M10NPag += qta;
                    break;

                case 11:
                    target.M11NPag += qta;
                    break;

                case 12:
                    target.M12NPag += qta;
                    break;

                default:
                    throw new Exception("Mese non previsto");
                }
            }
            else
            {
                throw new Exception("EnumTipologiaEconomica non previsto: " + enumTipologiaEconomica);
            }

            target.CalcolaTotale();
        }
예제 #16
0
        private bool CreaVendita()
        {
            bool result = false;

            using (UnitOfWork uow = new UnitOfWork())
            {
                if (!m_ImponiData)
                {
                    m_DataImposta = DateTime.Now;
                }

                bool     conPrenotazione = false;
                DateTime inizioVal       = m_DataImposta.Date;
                DateTime fineVal         = m_DataImposta.Date;

                if (m_Prenotazione.GestoreProfili.Bigliettone() || m_Prenotazione.GestoreProfili.Cumulativo())
                {
                    fineVal = inizioVal.AddDays(15);
                }

                if (m_Prenotazione.GestoreProfili.CardMusei())
                {
                    fineVal = new DateTime(inizioVal.Year, 12, 31);
                }

                if (m_Prenotazione.GestoreProfili.NumeroCardMyFE() > 0)
                {
                    fineVal = inizioVal.AddDays(Card.GiorniCard(m_Prenotazione.GestoreProfili.TipologiaMyFe) - 1);
                }

                if (m_Prenotazione.ConPrenotazione())
                {
                    conPrenotazione = true;
                    inizioVal       = m_Prenotazione.InizioPrenotazioni(inizioVal);
                    fineVal         = m_Prenotazione.FinePrenotazioni(fineVal);
                }

                Vendita vendita = new Vendita(uow);

                vendita.Incasso         = this.checkEditPos.Checked ? EnumIncasso.Pos : EnumIncasso.Contanti;
                vendita.CodiceLeggibile = m_Prenotazione.CodiceVendita;
                vendita.CodicePrevent   = m_Prenotazione.PrenotazionePrevent;

                vendita.Descrizione = m_Prenotazione.RiferimentoVendita;

                if (m_Prevendita)
                {
                    vendita.Descrizione   = "PREVENDITA";
                    vendita.DataContabile = DateTime.Today;
                    vendita.DataOraStampa = DateTime.Now;
                }
                else
                {
                    vendita.DataContabile = m_DataImposta.Date;
                    vendita.DataOraStampa = m_DataImposta;
                }

                vendita.Provenienza = _provenienza != null?uow.GetObjectByKey <Provenienza>(_provenienza.Oid) : null;

                vendita.Utente        = uow.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                vendita.Postazione    = uow.GetObjectByKey <Postazione>(Program.Postazione.Oid);
                vendita.Struttura     = uow.GetObjectByKey <Struttura>(Program.Postazione.Struttura.Oid);
                vendita.TotalePersone = m_Prenotazione.GestoreProfili.TotalePersone();
                vendita.TotaleImporto = m_Prenotazione.GestoreProfili.TotaleImporto();
                vendita.Save();

                #region PRENOTAZIONE
                prevent.prenotazione.Parametri parametri = new prevent.prenotazione.Parametri();
                //List<prevent.prenotazione.ParametriRigaBiglietti> elencorighe = new List<prevent.prenotazione.ParametriRigaBiglietti>();
                List <prevent.prenotazione.ParametriRigaBiglietti> elencorigheuniche = new List <prevent.prenotazione.ParametriRigaBiglietti>();

                if (conPrenotazione)
                {
                    parametri.CodiceTransWinTicket = vendita.CodiceLeggibile;
                    parametri.Denominazione        = vendita.Descrizione;
                    parametri.PaxTotali            = m_Prenotazione.GestoreProfili.TotalePersone().ToString();
                    parametri.TipoGS             = GestoreCalendario.TipoGS;
                    parametri.Scuola             = GestoreCalendario.TipoScuola;
                    parametri.RigaPercorsoVisita = new prevent.prenotazione.ParametriRigaPercorsoVisita[m_Prenotazione.NumeroTotalePrenotazioni()];

                    // creazione prenotazione
                    int count = 0;
                    foreach (PrenotazioneIngresso prenotazioneIngresso in m_Prenotazione.Prenotazioni)
                    {
                        foreach (SingolaPrenotazione singolaPrenotazione in prenotazioneIngresso.Prenotazioni)
                        {
                            Prenotazione nuovaPrenotazione = new Prenotazione(uow);

                            nuovaPrenotazione.Vendita = vendita;
                            //nuovaPrenotazione.RigaStampaIngresso = elencoingressi[prenotazioneIngresso.Ingresso.Oid];

                            //nuovaPrenotazione.AllDay = item.AllDay;
                            //nuovaPrenotazione.AppointmentType = item.AppointmentType;
                            //nuovaPrenotazione.Description = item.Description;
                            nuovaPrenotazione.Disponibilita = EnumDisponibilita.Disponibile; //item.Disponibilita;
                            nuovaPrenotazione.EndDate       = singolaPrenotazione.OrarioFine;
                            //nuovaPrenotazione.IdRichiesta = item.IdRichiesta;
                            nuovaPrenotazione.Ingresso = uow.GetObjectByKey <Ingresso>(prenotazioneIngresso.Ingresso.Oid);
                            //nuovaPrenotazione.Label = item.Label;
                            //nuovaPrenotazione.Location = item.Location;
                            nuovaPrenotazione.NumeroPersone = singolaPrenotazione.NumeroPersone;
                            nuovaPrenotazione.StartDate     = singolaPrenotazione.Orario;
                            //nuovaPrenotazione.Status = item.Status;
                            nuovaPrenotazione.Subject = singolaPrenotazione.Descrizione;
                            nuovaPrenotazione.Save();

                            parametri.RigaPercorsoVisita[count]            = new prevent.prenotazione.ParametriRigaPercorsoVisita();
                            parametri.RigaPercorsoVisita[count].DataVisita = nuovaPrenotazione.StartDate.Date;
                            parametri.RigaPercorsoVisita[count].IdMostra   = nuovaPrenotazione.Ingresso.CodicePrevent.ToString();
                            parametri.RigaPercorsoVisita[count].PaxVisita  = nuovaPrenotazione.NumeroPersone.ToString();
                            parametri.RigaPercorsoVisita[count].OraVisita  = String.Format("{0:HH}:{1:mm}:{2:ss}.{3:ffffzzz}", nuovaPrenotazione.StartDate, nuovaPrenotazione.StartDate, nuovaPrenotazione.StartDate, nuovaPrenotazione.StartDate);
                            count++;
                        }
                    }
                }
                #endregion

                // Numerazione dei profili
                int profiloCount = 0;
                foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili)
                {
                    profiloCliente.CodiceProgressivo = profiloCount++;
                }

                if (m_Prenotazione.StampaSingolaPersona)
                {
                    // ho già controllato che non ci siano gruppi oppure scuole
                    foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili)
                    {
                        var elencocard = profiloCliente.SoluzionePreferita.GetElencoCardMyFE(uow);

                        List <Ingresso> elenco = profiloCliente.ElencoIngressiSoluzionePreferita();
                        for (int i = 0; i < profiloCliente.NumeroPersone; i++)
                        {
                            CreaStampa(uow, inizioVal, fineVal, vendita, 1,
                                       profiloCliente.SoluzionePreferita.ImportoUnitario, elenco, profiloCliente.CodiceProgressivo, elencocard[i]);
                        }
                    }
                }
                else
                {
                    // DEVE esserci almeno un PROFILO gruppo OPPURE un profilo SCUOLA

                    ProfiloCliente  profiloBase = m_Prenotazione.GestoreProfili.ElencoProfili[0];
                    List <Ingresso> elencoBase  = profiloBase.ElencoIngressiSoluzionePreferita();

                    bool tuttiuguali = true;
                    foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili)
                    {
                        if (Diversi(elencoBase, profiloCliente.ElencoIngressiSoluzionePreferita()))
                        {
                            tuttiuguali = false;
                            break;
                        }
                        if (!profiloCliente.SoluzionePreferita.ContieneGruppoOppureScuola())
                        {
                            tuttiuguali = false;
                            break;
                        }
                    }

                    if (tuttiuguali)
                    {
                        // stampa UNICA per TUTTI i profili
                        if (m_Prenotazione.GestoreProfili.ElencoProfili.Count > 1)
                        {
                            CreaStampa(uow, inizioVal, fineVal, vendita, vendita.TotalePersone, vendita.TotaleImporto, elencoBase, -1);
                        }
                        else
                        {
                            CreaStampa(uow, inizioVal, fineVal, vendita, vendita.TotalePersone, vendita.TotaleImporto, elencoBase, 0);
                        }
                    }
                    else
                    {
                        // una stampa per ogni PROFILO
                        foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili)
                        {
                            List <Ingresso> elenco = profiloCliente.ElencoIngressiSoluzionePreferita();

                            if (profiloCliente.SoluzionePreferita.ContieneGruppoOppureScuola())
                            {
                                // questo profilo è un gruppo
                                CreaStampa(uow, inizioVal, fineVal, vendita, profiloCliente.NumeroPersone, profiloCliente.ImportoTotale, elenco, profiloCliente.CodiceProgressivo);
                            }
                            else
                            {
                                // questo profilo lo tratto come singolo
                                for (int i = 0; i < profiloCliente.NumeroPersone; i++)
                                {
                                    CreaStampa(uow, inizioVal, fineVal, vendita, 1, profiloCliente.SoluzionePreferita.ImportoUnitario, elenco, profiloCliente.CodiceProgressivo);
                                }
                            }
                        }
                    }
                }

                // creazione righe vendita
                foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili)
                {
                    foreach (SoluzioneIngressiItem sol in profiloCliente.SoluzionePreferita.Elenco)
                    {
                        if (profiloCliente.SoluzionePreferita.CardMyFE() && sol.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE)
                        {
                            var elencoCard = profiloCliente.SoluzionePreferita.GetElencoCardMyFE(uow);
                            for (int i = 0; i < sol.Quantita; i++)
                            {
                                RigaVenditaVariante riga = new RigaVenditaVariante(uow);
                                riga.PrezzoTotale   = sol.PrezzoUnitario;
                                riga.PrezzoUnitario = sol.PrezzoUnitario;
                                riga.Quantita       = 1;
                                riga.Vendita        = vendita;
                                riga.Profilo        = profiloCliente.CodiceProgressivo;
                                riga.Variante       = uow.GetObjectByKey <Variante>(sol.Variante.Oid);
                                riga.CodiceSconto   = null;
                                riga.Card           = elencoCard[i];
                                riga.Save();

                                CreaVenditaElencoRigheUniche(elencorigheuniche, riga);
                            }
                        }
                        else
                        {
                            CodiceSconto cs = null;
                            if (profiloCliente.ElencoCodiciSconto.Count > 0 && sol.Titolo != null && sol.Titolo.Bonus())
                            {
                                cs = uow.GetObjectByKey <CodiceSconto>(profiloCliente.ElencoCodiciSconto[0].Oid);
                            }

                            RigaVenditaVariante riga = new RigaVenditaVariante(uow);
                            riga.PrezzoTotale   = sol.PrezzoTotale;
                            riga.PrezzoUnitario = sol.PrezzoUnitario;
                            riga.Quantita       = sol.Quantita;
                            riga.Vendita        = vendita;
                            riga.Profilo        = profiloCliente.CodiceProgressivo;

                            if (sol.Titolo != null)
                            {
                                riga.Titolo = uow.GetObjectByKey <Titolo>(sol.Titolo.Oid);
                            }

                            riga.Variante     = uow.GetObjectByKey <Variante>(sol.Variante.Oid);
                            riga.CodiceSconto = cs;
                            riga.Save();

                            CreaVenditaElencoRigheUniche(elencorigheuniche, riga);
                        }
                    }

                    profiloCount++;
                }

                parametri.RigaBiglietti = elencorigheuniche.ToArray();

                m_Prenotazione.Vendita = vendita;

                // registra ingressi per QUESTA postazione
                foreach (Stampa item1 in vendita.Stampe)
                {
                    foreach (RigaStampaIngresso item2 in item1.RigheStampaIngresso)
                    {
                        if (VarcoPostazione(item2))
                        {
                            Entrata entrata = new Entrata(uow);
                            entrata.DataOraEntrata     = vendita.DataOraStampa;
                            entrata.Quantita           = item2.TotalePersone;
                            entrata.RigaStampaIngresso = item2;
                            entrata.Save();

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

                // QUERY WEB ... per confermare prenotazione
                if (conPrenotazione)
                {
                    if (PrenotazioneFinale.Prenota(parametri, m_Prenotazione.PreventObj))
                    {
                        vendita.CodicePrevent = parametri.CodiceTransWinTicket;
                        vendita.Save();

                        // Salvo tutto ...
                        uow.CommitChanges();
                        result = true;
                    }
                    else
                    {
                        // errore
                        if (PrenotazioneFinale.UltimoErrore != null)
                        {
                            XtraMessageBox.Show(String.Format("Errore: {0}", PrenotazioneFinale.UltimoErrore.DescrizioneErrore), "Errore: " + PrenotazioneFinale.UltimoErrore.ReturnCode, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else
                        {
                            XtraMessageBox.Show("Impossibile completare la prenotazione. Ritornare alla maschera precedente e riprovare.", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
                else
                {
                    // Salvo tutto ...
                    uow.CommitChanges();
                    result = true;
                }
            }

            return(result);
        }
예제 #17
0
        private static void CreaVenditaElencoRigheUniche(List <prevent.prenotazione.ParametriRigaBiglietti> elencorigheuniche, RigaVenditaVariante riga)
        {
            if (!string.IsNullOrEmpty(riga.Variante.CodicePrevent))
            {
                prevent.prenotazione.ParametriRigaBiglietti parariga = new prevent.prenotazione.ParametriRigaBiglietti();
                parariga.Quantita        = riga.Quantita.ToString();
                parariga.IdTipoBiglietto = riga.Variante.CodicePrevent;

                bool found = false;
                foreach (prevent.prenotazione.ParametriRigaBiglietti item in elencorigheuniche)
                {
                    if (item.IdTipoBiglietto == parariga.IdTipoBiglietto)
                    {
                        // devo fare cosi' perche' il campo Quantita e' una stringa
                        string newqta = (int.Parse(item.Quantita) + int.Parse(parariga.Quantita)).ToString();

                        item.Quantita = newqta;

                        found = true;
                    }
                }

                if (!found)
                {
                    elencorigheuniche.Add(parariga);
                }
            }
        }
예제 #18
0
        private void AddToList(RigaVenditaVariante riga, Ingresso ingresso, int level = 0)
        {
            // filtro in base alle giornate di apertura
            //if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_VERIFICA_VALIDITA) && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile))
            //    return;
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_NO_VENDITA_DA_ALTRI) && riga.Vendita.Struttura != ingresso.Struttura)
            {
                return;
            }
            if (riga.Vendita.Struttura != ingresso.Struttura && riga.Vendita.DataContabile.Year <= 2011 && riga.Vendita.DataContabile.Month < 6)
            {
                return;
            }
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_MOD_TERREMOTO_1) && (riga.Vendita.DataContabile > EventoParticolare.EQDataEvento && riga.Vendita.DataContabile.Year < 2015 && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile)))
            {
                return;
            }
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto && riga.Variante.PrezzoAttuale.PrezzoRidotto == null)
            {
                return;
            }
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto)
            {
                return;
            }

            DatiReport02 target = null;

            foreach (DatiReport02 dataReport02 in _List)
            {
                if (riga.Variante.Biglietto.Tipologia == EnumTipologiaBiglietto.Museo)
                {
                    if (riga.Variante.TipologiaTre == EnumTipologiaTre.Bigliettone)
                    {
                        if (dataReport02.Titolo == null && dataReport02.Descrizione == STR_Bigliettone)
                        {
                            target = dataReport02;
                        }
                    }

                    if (riga.Variante.TipologiaTre == EnumTipologiaTre.OmaggioGruppo)
                    {
                        if (riga.Variante.TipologiaUno == EnumTipologiaUno.Gruppo && riga.Variante.TipologiaDue == EnumTipologiaDue.Omaggio && riga.Variante.TipologiaTre == EnumTipologiaTre.OmaggioGruppo)
                        {
                            if (dataReport02.Titolo == null && dataReport02.Descrizione == STR_GruppiIngressoOmaggio)
                            {
                                target = dataReport02;
                            }
                        }
                    }

                    if (riga.Variante.TipologiaTre == EnumTipologiaTre.Standard)
                    {
                        if (riga.Variante.TipologiaUno == EnumTipologiaUno.Singolo)
                        {
                            if (riga.Titolo == null && dataReport02.Titolo == null && dataReport02.Descrizione == STR_BigliettoIntero)
                            {
                                target = dataReport02;
                            }

                            if (riga.Titolo != null && dataReport02.Titolo == riga.Titolo && dataReport02.Tipologia == EnumTipologiaBiglietto.Museo)
                            {
                                target = dataReport02;
                            }
                        }

                        if (riga.Variante.TipologiaUno == EnumTipologiaUno.Gruppo)
                        {
                            if (riga.Titolo == null)
                            {
                                if (dataReport02.Titolo == null && dataReport02.Descrizione == STR_Gruppi)
                                {
                                    target = dataReport02;
                                }
                            }
                            else
                            {
                                if (riga.Titolo != null && dataReport02.Titolo == riga.Titolo && dataReport02.Tipologia == EnumTipologiaBiglietto.Museo)
                                {
                                    target = dataReport02;
                                }
                            }
                        }

                        if (riga.Variante.TipologiaUno == EnumTipologiaUno.Scuola)
                        {
                            if (dataReport02.Titolo == null && dataReport02.Descrizione == STR_Scuola)
                            {
                                target = dataReport02;
                            }
                        }
                    }
                }

                if (riga.Variante.Biglietto.Tipologia == EnumTipologiaBiglietto.Cumulativo)
                {
                    if (riga.Variante.TipologiaDue == EnumTipologiaDue.Intero && dataReport02.Descrizione == STR_CumulativoIntero)
                    {
                        target = dataReport02;
                    }

                    if ((riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto || riga.Variante.TipologiaDue == EnumTipologiaDue.Omaggio) && dataReport02.Descrizione == STR_CumulativoRidotto)
                    {
                        target = dataReport02;
                    }

                    //if (riga.Variante.TipologiaUno == EnumTipologiaUno.Gruppo && riga.Variante.TipologiaDue == EnumTipologiaDue.Omaggio && riga.Variante.TipologiaTre == EnumTipologiaTre.NFR)
                    //{
                    //    if (dataReport02.Titolo == null && dataReport02.Descrizione == STR_GruppiIngressoOmaggio)
                    //        target = dataReport02;
                    //}
                }

                if (riga.Variante.Biglietto.Tipologia == EnumTipologiaBiglietto.Card && riga.Variante.TipologiaTre != EnumTipologiaTre.CardMyFE)
                {
                    if (riga.Variante.TipologiaDue == EnumTipologiaDue.Intero && dataReport02.Descrizione == STR_CardMuseiIntero)
                    {
                        target = dataReport02;
                    }

                    if ((riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto || riga.Variante.TipologiaDue == EnumTipologiaDue.Omaggio) && dataReport02.Descrizione == STR_CardMuseiRidotto)
                    {
                        target = dataReport02;
                    }
                }

                if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE)
                {
                    if (dataReport02.TipologiaTre == EnumTipologiaTre.CardMyFE)
                    {
                        target = dataReport02;
                    }
                }

                if (target != null)
                {
                    break;
                }
            }

            if (target == null)
            {
                //throw new Exception(String.Format("Target not found. Tipologia Variante: {0} / Biglietto: {1} / Titolo: {2}", riga.Variante.Tipologia, riga.Variante.Biglietto.Tipologia, riga.Titolo != null ? riga.Titolo.Descrizione : string.Empty));
                if (riga.Titolo != null && level == 0)
                {
                    AddToList(riga.Titolo, _Descrizione);
                    AddToList(riga, ingresso, level + 1);
                    return;
                }
                else
                {
                    XtraMessageBox.Show(String.Format("Target not found. Variante: {0} / Biglietto: {1} / Titolo: {2}", riga.Variante.Tipologia, riga.Variante.Biglietto.Tipologia, riga.Titolo != null ? riga.Titolo.Descrizione : string.Empty));
                    return;
                }
            }

            if (target.TipologiaTre == EnumTipologiaTre.CardMyFE)
            {
                // card myfe sempre come intero (erano ridotto, ma Zerbinati ha optato per intero il 24/09/2014),
                // anche se museo di storia naturale inserisce cardmye come omaggi
                target.PagantiIntero += riga.Quantita;
            }
            else
            {
                switch (riga.Variante.TipologiaDue)
                {
                case EnumTipologiaDue.Intero:
                    target.PagantiIntero += riga.Quantita;
                    break;

                case EnumTipologiaDue.Ridotto:
                    target.PagantiRidotto += riga.Quantita;
                    break;

                case EnumTipologiaDue.Omaggio:
                    target.NonPaganti += riga.Quantita;
                    break;
                }
            }

            target.CalcolaTotali();
        }
예제 #19
0
        private void AddToList(DatiReport07 target, Struttura struttura, RigaVenditaVariante riga)
        {
            // filtro in base alle giornate di apertura
            //if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_VERIFICA_VALIDITA) && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile))
            //    return;
            //if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_NO_VENDITA_DA_ALTRI) && riga.Vendita.Struttura != ingresso.Struttura)
            //    return;
            //if (riga.Vendita.Struttura != ingresso.Struttura && riga.Vendita.DataContabile.Year <= 2011 && riga.Vendita.DataContabile.Month < 6)
            //    return;
            //if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_MOD_TERREMOTO_1) && (riga.Vendita.DataContabile > EventoParticolare.EQDataEvento && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile)))
            //    return;

            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto && riga.Variante.PrezzoAttuale.PrezzoRidotto == null)
            {
                return;
            }

            // CASO SPECIALE MUSEO DI STORIA NATURALE
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Omaggio)
            {
                return;
            }

            if (riga.Variante.TipologiaTre != EnumTipologiaTre.CardMyFE)
            {
                return;
            }

            // emesso da questa struttura

            switch (riga.Variante.TipologiaTre)
            {
            case EnumTipologiaTre.Standard:

                switch (riga.Variante.Biglietto.Tipologia)
                {
                case EnumTipologiaBiglietto.Museo:
                    switch (riga.Variante.TipologiaDue)
                    {
                    case EnumTipologiaDue.Intero:
                        target.MuseoStandardIntero += riga.Quantita;
                        break;

                    case EnumTipologiaDue.Ridotto:
                        target.MuseoStandardRidotto += riga.Quantita;
                        break;

                    case EnumTipologiaDue.Omaggio:
                        target.MuseoOmaggio += riga.Quantita;
                        break;

                    default:
                        throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                    }
                    break;

                case EnumTipologiaBiglietto.Cumulativo:
                    switch (riga.Variante.TipologiaDue)
                    {
                    case EnumTipologiaDue.Intero:
                        target.MuseoCumulativoIntero += riga.Quantita;
                        break;

                    case EnumTipologiaDue.Ridotto:
                        target.MuseoCumulativoRidotto += riga.Quantita;
                        break;

                    case EnumTipologiaDue.Omaggio:
                        target.MuseoOmaggio += riga.Quantita;
                        break;

                    default:
                        throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                    }
                    break;

                case EnumTipologiaBiglietto.Card:
                    switch (riga.Variante.TipologiaDue)
                    {
                    case EnumTipologiaDue.Intero:
                        target.MuseoCardIntero += riga.Quantita;
                        break;

                    case EnumTipologiaDue.Ridotto:
                        target.MuseoCardRidotto += riga.Quantita;
                        break;

                    case EnumTipologiaDue.Omaggio:
                        target.MuseoOmaggio += riga.Quantita;
                        break;

                    default:
                        throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                    }
                    break;

                default:
                    throw new Exception(String.Format("Caso non previsto riga.Variante.Biglietto.Tipologia={0}", riga.Variante.Biglietto.Tipologia));
                }

                break;

            case EnumTipologiaTre.Bigliettone:
                target.MuseoBigliettone += riga.Quantita;
                break;

            case EnumTipologiaTre.OmaggioGruppo:
                target.MuseoOmaggio += riga.Quantita;
                break;

            case EnumTipologiaTre.CardMyFE:
                if (riga.Variante.Descrizione.Contains("2"))
                {
                    target.MuseoCardMyFE2 += riga.Quantita;
                }
                else if (riga.Variante.Descrizione.Contains("3"))
                {
                    target.MuseoCardMyFE3 += riga.Quantita;
                }
                else if (riga.Variante.Descrizione.Contains("6"))
                {
                    target.MuseoCardMyFE6 += riga.Quantita;
                }
                else
                {
                    throw new Exception(String.Format("Caso non previsto MyFE: {0}", riga.Variante.Descrizione));
                }
                break;

            default:
                throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaTre={0}", riga.Variante.TipologiaTre));
            }

            target.CalcolaTotali();
        }
예제 #20
0
        private void AddToList(DatiReport01b target, Ingresso ingresso, RigaVenditaVariante riga)
        {
            // filtro in base alle giornate di apertura
            //if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_VERIFICA_VALIDITA) && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile))
            //    return;
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_NO_VENDITA_DA_ALTRI) && riga.Vendita.Struttura != ingresso.Struttura)
            {
                return;
            }
            if (riga.Vendita.Struttura != ingresso.Struttura && riga.Vendita.DataContabile.Year <= 2011 && riga.Vendita.DataContabile.Month < 6)
            {
                return;
            }
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_MOD_TERREMOTO_1) && (riga.Vendita.DataContabile > EventoParticolare.EQDataEvento && riga.Vendita.DataContabile.Year < 2015 && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile)))
            {
                return;
            }

            // && riga.Variante.Biglietto.Tipologia == EnumTipologiaBiglietto.Museo

            if (riga.Vendita.Struttura.Oid == ingresso.Struttura.Oid)
            {
                // emesso da questa struttura

                switch (riga.Variante.TipologiaTre)
                {
                case EnumTipologiaTre.Standard:

                    switch (riga.Variante.Biglietto.Tipologia)
                    {
                    case EnumTipologiaBiglietto.Museo:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.MuseoStandardIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.MuseoStandardRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.MuseoOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    case EnumTipologiaBiglietto.Cumulativo:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.MuseoCumulativoIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.MuseoCumulativoRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.MuseoOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    case EnumTipologiaBiglietto.Card:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.MuseoCardIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.MuseoCardRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.MuseoOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    default:
                        throw new Exception(String.Format("Caso non previsto riga.Variante.Biglietto.Tipologia={0}", riga.Variante.Biglietto.Tipologia));
                    }

                    break;

                case EnumTipologiaTre.Bigliettone:
                    target.MuseoBigliettone += riga.Quantita;
                    break;

                case EnumTipologiaTre.OmaggioGruppo:
                    target.MuseoOmaggio += riga.Quantita;
                    break;

                default:
                    throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaTre={0}", riga.Variante.TipologiaTre));
                }
            }
            else
            {
                // altre strutture

                switch (riga.Variante.TipologiaTre)
                {
                case EnumTipologiaTre.Standard:

                    switch (riga.Variante.Biglietto.Tipologia)
                    {
                    case EnumTipologiaBiglietto.Museo:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.AltriStandardIntero += riga.Quantita;
                            //riga.Vendita.Stampe[0].StatoStampa == riga.Profilo;
                            //riga.Vendita.Stampe[0].RigheStampaIngresso[0].Entrate
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.AltriStandardRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.AltriOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    case EnumTipologiaBiglietto.Cumulativo:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.AltriCumulativoIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.AltriCumulativoRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.AltriOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    case EnumTipologiaBiglietto.Card:
                        switch (riga.Variante.TipologiaDue)
                        {
                        case EnumTipologiaDue.Intero:
                            target.AltriCardIntero += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Ridotto:
                            target.AltriCardRidotto += riga.Quantita;
                            break;

                        case EnumTipologiaDue.Omaggio:
                            target.AltriOmaggio += riga.Quantita;
                            break;

                        default:
                            throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaDue={0}", riga.Variante.TipologiaDue));
                        }
                        break;

                    default:
                        throw new Exception(String.Format("Caso non previsto riga.Variante.Biglietto.Tipologia={0}", riga.Variante.Biglietto.Tipologia));
                    }

                    break;

                case EnumTipologiaTre.Bigliettone:
                    target.AltriBigliettone += riga.Quantita;
                    break;

                case EnumTipologiaTre.OmaggioGruppo:
                    target.AltriOmaggio += riga.Quantita;
                    break;

                default:
                    throw new Exception(String.Format("Caso non previsto riga.Variante.TipologiaTre={0}", riga.Variante.TipologiaTre));
                }
            }

            target.CalcolaTotali();
        }
예제 #21
0
        private void AddToList(Ingresso ingresso, int qta, DateTime dateTime, EnumTipologiaEconomica enumTipologiaEconomica, RigaVenditaVariante riga)
        {
            DatiReport06 target = null;

            foreach (DatiReport06 dato in _List)
            {
                if (dato.Museo == ingresso.Descrizione)
                {
                    target = dato;
                }
            }

            if (target == null)
            {
                target           = new DatiReport06();
                target.Museo     = ingresso.Descrizione;
                target.Tipo      = ingresso.DescrizioneTipo;
                target.Ordine    = ingresso.OrdineReport01;
                target.Tipologia = ingresso.Tipologia;

                _List.Add(target);
            }

            if (riga == null)
            {
                target.CalcolaTotale(); return;
            }

            // filtro in base alle giornate di apertura
            //if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_VERIFICA_VALIDITA) && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile))
            //    return;
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_NO_VENDITA_DA_ALTRI) && riga.Vendita.Struttura != ingresso.Struttura)
            {
                return;
            }
            if (riga.Vendita.Struttura != ingresso.Struttura && riga.Vendita.DataContabile.Year <= 2011 && riga.Vendita.DataContabile.Month < 6)
            {
                return;
            }
            if (ingresso.IsAttrib(EventoParticolare.STR_INGRESSI_MOD_TERREMOTO_1) && (riga.Vendita.DataContabile > EventoParticolare.EQDataEvento && riga.Vendita.DataContabile.Year < 2015 && !_Aperture.Valido(ingresso.Oid, riga.Vendita.DataContabile)))
            {
                return;
            }
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto && riga.Variante.PrezzoAttuale.PrezzoRidotto == null)
            {
                return;
            }
            if (riga.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE && riga.Variante.TipologiaDue == EnumTipologiaDue.Ridotto)
            {
                return;
            }

            int mese = dateTime.Month;
            int anno = dateTime.Year;

            if (anno == _AnnoInCorso)
            {
                switch (mese)
                {
                case 1:
                    target.Gennaio += qta;
                    break;

                case 2:
                    target.Febbraio += qta;
                    break;

                case 3:
                    target.Marzo += qta;
                    break;

                case 4:
                    target.Aprile += qta;
                    break;

                case 5:
                    target.Maggio += qta;
                    break;

                case 6:
                    target.Giugno += qta;
                    break;

                case 7:
                    target.Luglio += qta;
                    break;

                case 8:
                    target.Agosto += qta;
                    break;

                case 9:
                    target.Settembre += qta;
                    break;

                case 10:
                    target.Ottobre += qta;
                    break;

                case 11:
                    target.Novembre += qta;
                    break;

                case 12:
                    target.Dicembre += qta;
                    break;

                default:
                    throw new Exception("Mese non previsto");
                }
            }
            else if (anno == _AnnoInCorso - 1)
            {
                target.AnnoMeno1 += qta;
            }
            else if (anno == _AnnoInCorso - 2)
            {
                target.AnnoMeno2 += qta;
            }
            else
            {
                throw new Exception("Anno non valido");
            }

            target.CalcolaTotale();
        }
예제 #22
0
        private bool CreaVendita()
        {
            using (UnitOfWork uow = new UnitOfWork())
            {
                Vendita vendita = new Vendita(uow);

                vendita.Incasso         = this.checkEditPos.Checked ? EnumIncasso.Pos : EnumIncasso.Contanti;
                vendita.CodiceLeggibile = Vendita.NuovoCodiceVendita();
                vendita.CodicePrevent   = "";

                vendita.DataContabile = DateTime.Now.Date;
                vendita.DataOraStampa = DateTime.Now;

                vendita.Descrizione = "";

                vendita.Utente        = uow.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid);
                vendita.Postazione    = uow.GetObjectByKey <Postazione>(Program.Postazione.Oid);
                vendita.Struttura     = uow.GetObjectByKey <Struttura>(Program.Postazione.Struttura.Oid);
                vendita.TotalePersone = ElencoCard.Count;
                vendita.TotaleImporto = CalcolaTotale(ElencoCard);
                vendita.Save();

                Percorso per = uow.FindObject <Percorso>(new BinaryOperator("Descrizione", "MyFE"));
                for (int i = 0; i < ElencoCard.Count; i++)
                {
                    Card card = uow.GetObjectByKey <Card>(ElencoCard[i].Oid);

                    Variante v1 = per.GetVarianteMyFe("Com", "C", card.TipologiaCard);
                    Variante v2 = per.GetVarianteMyFe("Pin", "C", card.TipologiaCard);

                    if (v1 == null || v2 == null)
                    //if (v1 == null)
                    {
                        XtraMessageBox.Show("Tariffa per le card mancante", "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }

                    decimal totale = v1.Prezzo + (v2 != null ? v2.Prezzo : 0);

                    List <Ingresso> ingressi = new List <Ingresso>();
                    ingressi.AddRange(per.Ingressi);

                    RigaVenditaVariante rvv1 = new RigaVenditaVariante(uow);
                    rvv1.PrezzoTotale   = v1.Prezzo;
                    rvv1.PrezzoUnitario = v1.Prezzo;
                    rvv1.Profilo        = i;
                    rvv1.Quantita       = 1;
                    rvv1.Variante       = v1;
                    rvv1.Vendita        = vendita;
                    rvv1.Card           = card;
                    rvv1.Save();

                    if (v2 != null)
                    {
                        RigaVenditaVariante rvv2 = new RigaVenditaVariante(uow);
                        rvv2.PrezzoTotale   = v2.Prezzo;
                        rvv2.PrezzoUnitario = v2.Prezzo;
                        rvv2.Profilo        = i;
                        rvv2.Quantita       = 1;
                        rvv2.Variante       = v2;
                        rvv2.Vendita        = vendita;
                        rvv2.Card           = card;
                        rvv2.Save();
                    }

                    DateTime inizioVal = DateTime.Now.Date;
                    DateTime fineVal   = inizioVal.AddDays(card.Giorni() - 1);

                    Stampa stampa = new Stampa(uow);
                    stampa.Vendita        = vendita;
                    stampa.InizioValidita = inizioVal;
                    stampa.FineValidita   = fineVal;
                    stampa.Quantita       = 1;
                    stampa.ImportoTotale  = totale;
                    stampa.StatoStampa    = i;
                    stampa.TipoStampa     = _Albergo ? EnumTipoStampa.CardAlbergatori : EnumTipoStampa.Card;
                    stampa.Card           = card;
                    stampa.Save();
                    stampa.GeneraBarCode(Program.Postazione, ingressi);

                    card.Status = EnumStatoCard.Emessa;
                    card.Stampa = stampa;
                    if (_Albergo)
                    {
                        card.Albergo = uow.GetObjectByKey <AnagraficaCard>((this.lookUpEditAlbergo.EditValue as AnagraficaCard).Oid);
                    }
                    card.Save();

                    Stampa doppia = uow.FindObject <Stampa>(new BinaryOperator("BarCode", stampa.BarCode));
                    if (doppia != null)
                    {
                        stampa.GeneraBarCode(Program.Postazione, ingressi);

                        doppia = uow.FindObject <Stampa>(new BinaryOperator("BarCode", stampa.BarCode));
                        if (doppia != null)
                        {
                            stampa.GeneraBarCode(Program.Postazione, ingressi);

                            doppia = uow.FindObject <Stampa>(new BinaryOperator("BarCode", stampa.BarCode));
                            if (doppia != null)
                            {
                                stampa.GeneraBarCode(Program.Postazione, ingressi);
                            }
                        }
                    }

                    stampa.Save();

                    foreach (Ingresso ingresso in per.Ingressi)
                    {
                        RigaStampaIngresso rigaingresso = new RigaStampaIngresso(uow);
                        rigaingresso.Ingresso      = uow.GetObjectByKey <Ingresso>(ingresso.Oid);
                        rigaingresso.Stampa        = stampa;
                        rigaingresso.TotalePersone = 1;
                        rigaingresso.Save();
                    }
                }

                if (!_Albergo)
                {
                    // registra ingressi per QUESTA postazione
                    foreach (Stampa item1 in vendita.Stampe)
                    {
                        foreach (RigaStampaIngresso item2 in item1.RigheStampaIngresso)
                        {
                            if (VarcoPostazione(item2))
                            {
                                Entrata entrata = new Entrata(uow);
                                entrata.DataOraEntrata     = vendita.DataOraStampa;
                                entrata.Quantita           = item2.TotalePersone;
                                entrata.RigaStampaIngresso = item2;
                                entrata.Save();

                                item2.TotaleIngressi = item2.TotalePersone;
                                item2.Save();
                            }
                        }
                    }
                }
                else
                {
                }

                uow.CommitChanges();

                m_Vendita = this._UnitOfWork.GetObjectByKey <Vendita>(vendita.Oid);
            }

            return(true);
        }