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();
        }
        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();
        }
        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();
        }
        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();
        }
Exemple #5
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();
        }
        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();
        }