private void inserisciInfragruppo(string idPrdFaseOrigine, bool nascondiAnnullate, bool nascondiCompletate, BaseUC ucPadre)
        {
            AnalisiOrdiniVenditaDS dsInfragruppo = new AnalisiOrdiniVenditaDS();
            OrdiniVendita          ov            = new OrdiniVendita();

            string idLancioD = ov.CaricaFasiInfragruppo(dsInfragruppo, idPrdFaseOrigine);

            if (string.IsNullOrEmpty(idLancioD))
            {
                return;
            }

            List <AnalisiOrdiniVenditaDS.USR_PRD_FASIRow> fasiLancio = ov.OrdinaFasiLancio(dsInfragruppo, idLancioD);

            foreach (AnalisiOrdiniVenditaDS.USR_PRD_FASIRow fase in fasiLancio)
            {
                if (nascondiAnnullate && fase.QTA == fase.QTAANN && fase.QTATER == 0)
                {
                    continue;
                }
                if (nascondiCompletate && fase.QTA == fase.QTATER && fase.QTADATER == 0)
                {
                    continue;
                }

                BaseUC infragruppo = new BaseUC(TipoControllo.Infragruppo,
                                                ov.GetModello(_ds, fase.IDMAGAZZ),
                                                string.Format("{0} - {1}", fase.CODICECLIFO, ov.GetDescrizioneFase(_ds, fase.IDTABFAS)),
                                                string.Empty,
                                                fase.QTA,
                                                fase.QTADATER,
                                                fase.QTATER,
                                                0,
                                                0,
                                                fase.QTAANN,
                                                string.Empty);

                foreach (AnalisiOrdiniVenditaDS.USR_PRD_MOVFASIRow odl in dsInfragruppo.USR_PRD_MOVFASI.Where(x => x.IDPRDFASE == fase.IDPRDFASE))
                {
                    string testata = string.Empty;
                    AnalisiOrdiniVenditaDS.USR_CHECKQ_TRow cqt = dsInfragruppo.USR_CHECKQ_T.Where(x => x.IDPRDMOVFASE == odl.IDPRDMOVFASE).FirstOrDefault();
                    if (cqt != null)
                    {
                        testata = cqt.NUMCHECKQT;
                    }

                    ucPadre.AggiungiODL(TipoControllo.Infragruppo, odl.NUMMOVFASE, odl.DATAFINE.ToShortDateString(), odl.QTA, odl.QTADATER, odl.QTATER_OK, odl.QTATER_DF, odl.QTATER_NL, odl.QTAANN, testata);

                    if (cqt != null)
                    {
                        inserisciSeguiti(dsInfragruppo, cqt, ucPadre);
                    }
                }
            }
        }
        private void inserisciInfragruppo(string idPrdFaseOrigine, bool nascondiAnnullate, bool nascondiCompletate)
        {
            AnalisiOrdiniVenditaDS dsInfragruppo = new AnalisiOrdiniVenditaDS();
            OrdiniVendita          ov            = new OrdiniVendita();

            string idLancioD = ov.CaricaFasiInfragruppo(dsInfragruppo, idPrdFaseOrigine);

            if (string.IsNullOrEmpty(idLancioD))
            {
                return;
            }

            List <AnalisiOrdiniVenditaDS.USR_PRD_FASIRow> fasiLancio = ov.OrdinaFasiLancio(dsInfragruppo, idLancioD);

            foreach (AnalisiOrdiniVenditaDS.USR_PRD_FASIRow fase in fasiLancio)
            {
                if (nascondiAnnullate && fase.QTA == fase.QTAANN && fase.QTATER == 0)
                {
                    continue;
                }
                if (nascondiCompletate && fase.QTA == fase.QTATER && fase.QTADATER == 0)
                {
                    continue;
                }

                FaseModel faseInfragruppo = new FaseModel();
                faseInfragruppo.Livello1            = string.Empty;
                faseInfragruppo.Livello2            = string.Format("{0} - {1}", fase.CODICECLIFO, ov.GetDescrizioneFase(_ds, fase.IDTABFAS));
                faseInfragruppo.Livello3            = string.Empty;
                faseInfragruppo.Tipologia           = Etichette.Infragruppo;
                faseInfragruppo.Modello             = ov.GetModello(_ds, fase.IDMAGAZZ);
                faseInfragruppo.DataConsegna        = string.Empty;
                faseInfragruppo.Quantita            = fase.QTA.ToString();
                faseInfragruppo.QuantitaDaTerminare = fase.QTADATER.ToString();
                faseInfragruppo.QuantitaOK          = fase.QTATER.ToString();
                faseInfragruppo.QuantitaDifettosa   = string.Empty;
                faseInfragruppo.QuantitaNonLavorata = string.Empty;
                faseInfragruppo.QuantitaAnnullata   = fase.QTAANN.ToString();
                fasi.Add(faseInfragruppo);

                foreach (AnalisiOrdiniVenditaDS.USR_PRD_MOVFASIRow odl in dsInfragruppo.USR_PRD_MOVFASI.Where(x => x.IDPRDFASE == fase.IDPRDFASE))
                {
                    string testata = string.Empty;
                    AnalisiOrdiniVenditaDS.USR_CHECKQ_TRow cqt = dsInfragruppo.USR_CHECKQ_T.Where(x => x.IDPRDMOVFASE == odl.IDPRDMOVFASE).FirstOrDefault();
                    if (cqt != null)
                    {
                        testata = cqt.NUMCHECKQT;
                    }

                    FaseModel faseODL = new FaseModel();
                    faseODL.Livello1            = string.Empty;
                    faseODL.Livello2            = odl.NUMMOVFASE;
                    faseODL.Livello3            = string.Empty;
                    faseODL.Tipologia           = Etichette.InfragruppoODL;
                    faseODL.Modello             = ov.GetModello(_ds, fase.IDMAGAZZ);
                    faseODL.DataConsegna        = odl.DATAFINE.ToShortDateString();
                    faseODL.Quantita            = odl.QTA.ToString();
                    faseODL.QuantitaDaTerminare = odl.QTADATER.ToString();
                    faseODL.QuantitaOK          = odl.QTATER_OK.ToString();
                    faseODL.QuantitaDifettosa   = odl.QTATER_DF.ToString();
                    faseODL.QuantitaNonLavorata = odl.QTATER_NL.ToString();
                    faseODL.QuantitaAnnullata   = odl.QTAANN.ToString();
                    faseODL.ControlloQualità    = testata;
                    fasi.Add(faseODL);

                    if (cqt != null)
                    {
                        inserisciSeguiti(dsInfragruppo, cqt);
                    }
                }
            }
        }