private void AddToList(DatiReport01t 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;
            }
            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;
            }

            // && 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;

                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));
                }
            }
            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:
                    if (riga.Variante.Descrizione.Contains("2"))
                    {
                        target.AltriCardMyFE2 += riga.Quantita;
                    }
                    else if (riga.Variante.Descrizione.Contains("3"))
                    {
                        target.AltriCardMyFE3 += riga.Quantita;
                    }
                    else if (riga.Variante.Descrizione.Contains("6"))
                    {
                        target.AltriCardMyFE6 += 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();
        }