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 caricaCommessa(bool nascondiAnnullate, bool nascondiCompletate)
        {
            try
            {
                SuspendLayout();
                pannello.Controls.Clear();
                //            AnalisiOrdiniVenditaDS.OC_APERTIRow dettaglio = _ds.OC_APERTI.Where(x => x.IDVENDITED == idVendited).FirstOrDefault();
                if (Dettaglio == null)
                {
                    MessageBox.Show("Impossibile trovare i dati di dettaglio", "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                string idVendited = Dettaglio.IDVENDITED;

                aggiungiCommessa(Dettaglio);

                OrdiniVendita ov = new OrdiniVendita();
                ov.FillAccantonatoEsistenzaPerOrigine(_ds, idVendited, (decimal)OrigineAccantonato.OrdineCliente);

                if (_ds.USR_ACCTO_ESI.Count > 0)
                {
                    foreach (AnalisiOrdiniVenditaDS.USR_ACCTO_ESIRow esistenza in _ds.USR_ACCTO_ESI)
                    {
                        aggiungiAccantonatoEsistenza(esistenza);
                    }
                }

                List <AnalisiOrdiniVenditaDS.USR_ACCTO_CON_DOCRow> documentiAccantonato = new List <AnalisiOrdiniVenditaDS.USR_ACCTO_CON_DOCRow>();

                ov.FillAccantonatoConsegnaPerOrigine(_ds, idVendited, (decimal)OrigineAccantonato.OrdineCliente);

                if (_ds.USR_ACCTO_CON.Count > 0)
                {
                    foreach (AnalisiOrdiniVenditaDS.USR_ACCTO_CONRow consegna in _ds.USR_ACCTO_CON)
                    {
                        AccantonatoConsegnaUC uc = new AccantonatoConsegnaUC();
                        uc.Modello              = ov.GetModello(_ds, consegna.IDMAGAZZ_ORI);
                        uc.Destinazione         = string.Format("{0} {1}", ov.GetMagazzino(_ds, consegna.IDMAGAZZ_DEST), consegna.IsCODICECLIFO_DESTNull() ? string.Empty : consegna.CODICECLIFO_DEST);
                        uc.QuantitaOrigine      = consegna.QUANTITA_ORI.ToString();
                        uc.QuantitaDestinazione = consegna.QUANTITA_DEST.ToString();
                        uc.DataConsegna         = consegna.DATACONSEGNA_DEST.ToShortDateString();
                        foreach (AnalisiOrdiniVenditaDS.USR_ACCTO_CON_DOCRow documento in _ds.USR_ACCTO_CON_DOC.Where(x => x.IDACCTOCON == consegna.IDACCTOCON))
                        {
                            uc.AggiungiDocumento(documento.DESTINAZIONE, ov.GetNumeroDocumento(_ds, documento.DESTINAZIONE, documento.IDDESTINAZIONE), documento.QUANTITA_DOC.ToString(), documento.QUANTITA_DOC_ARR.ToString());
                            documentiAccantonato.Add(documento);
                        }
                        pannello.Controls.Add(uc);
                    }
                }


                foreach (AnalisiOrdiniVenditaDS.USR_ACCTO_CON_DOCRow documento in documentiAccantonato)
                {
                    if (documento.DESTINAZIONE == (decimal)DestinazioneAccantonato.FaseDiCommessa)
                    {
                        AnalisiOrdiniVenditaDS.USR_PRD_FASIRow        faseDestinazione = ov.GetFase(_ds, documento.IDDESTINAZIONE);
                        List <AnalisiOrdiniVenditaDS.USR_PRD_FASIRow> fasiLancio       = ov.OrdinaFasiLancio(_ds, faseDestinazione.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 uc = new BaseUC(TipoControllo.Fase,
                                                   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);
                            pannello.Controls.Add(uc);

                            foreach (AnalisiOrdiniVenditaDS.USR_PRD_MATERow materiale in _ds.USR_PRD_MATE.Where(x => x.IDPRDFASE == fase.IDPRDFASE))
                            {
                                uc.AggiungiMateriale(ov.GetModello(_ds, materiale.IDMAGAZZ), materiale.FABBIACCECOM, materiale.FABBIACCOCOM, materiale.FABBITOTCOM);
                            }


                            if (fase.CODICECLIFO.Trim() == "02350")
                            {
                                inserisciInfragruppo(fase.IDPRDFASE, nascondiAnnullate, nascondiCompletate, uc);
                            }
                            else
                            {
                                foreach (AnalisiOrdiniVenditaDS.USR_PRD_MOVFASIRow odl in _ds.USR_PRD_MOVFASI.Where(x => x.IDPRDFASE == fase.IDPRDFASE))
                                {
                                    string testata = string.Empty;
                                    AnalisiOrdiniVenditaDS.USR_CHECKQ_TRow cqt = _ds.USR_CHECKQ_T.Where(x => x.IDPRDMOVFASE == odl.IDPRDMOVFASE).FirstOrDefault();
                                    if (cqt != null)
                                    {
                                        testata = cqt.NUMCHECKQT;
                                    }
                                    uc.AggiungiODL(TipoControllo.Fase, 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(_ds, cqt, uc);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            finally
            {
                ResumeLayout();
            }
        }
        private void inserisciSeguiti(AnalisiOrdiniVenditaDS ds, AnalisiOrdiniVenditaDS.USR_CHECKQ_TRow cqt, BaseUC uc)
        {
            OrdiniVendita          ov        = new OrdiniVendita();
            AnalisiOrdiniVenditaDS dsSeguiti = new AnalisiOrdiniVenditaDS();
            List <AnalisiOrdiniVenditaDS.USR_CHECKQ_SRow> seguiti = ov.GetSeguito(ds, cqt.IDCHECKQT);

            foreach (AnalisiOrdiniVenditaDS.USR_CHECKQ_SRow seguito in seguiti)
            {
                uc.AggiungiDescrizioneSeguito(cqt.IsNUMCHECKQTNull() ? string.Empty : cqt.NUMCHECKQT,
                                              ov.GetDescrizioneSeguito(_ds, seguito.IDSEGUITOCHECKQ),
                                              ov.GetModello(_ds, cqt.IDMAGAZZ),
                                              seguito.DATASEGUITOCHECKQ.ToShortDateString(),
                                              cqt.IsNUMCHECKQTNull() ? string.Empty : cqt.NUMCHECKQT);
                if (!seguito.IsIDPRDMOVFASENull())
                {
                    AnalisiOrdiniVenditaDS.USR_PRD_MOVFASIRow odl = ov.GetODL(ds, seguito.IDPRDMOVFASE);
                    uc.AggiungiODL(TipoControllo.Qualita, odl.NUMMOVFASE, odl.DATAFINE.ToShortDateString(), odl.QTA, odl.QTADATER, odl.QTATER_OK, odl.QTATER_DF, odl.QTATER_NL, odl.QTAANN, string.Empty);
                }

                if (!seguito.IsIDLANCIODNull())
                {
                    ov.CaricaLancio(dsSeguiti, seguito.IDLANCIOD);
                    foreach (AnalisiOrdiniVenditaDS.USR_PRD_FASIRow fase in dsSeguiti.USR_PRD_FASI.Where(x => x.IDLANCIOD == seguito.IDLANCIOD).OrderBy(x => x.SEQFASE))
                    {
                        if (dsSeguiti.USR_PRD_MOVFASI.Where(x => x.IDPRDFASE == fase.IDPRDFASE).Count() > 0)
                        {
                            foreach (AnalisiOrdiniVenditaDS.USR_PRD_MOVFASIRow odl in dsSeguiti.USR_PRD_MOVFASI.Where(x => x.IDPRDFASE == fase.IDPRDFASE))
                            {
                                string faseStr = string.Format("{0} - {1} {2}", fase.CODICECLIFO, ov.GetDescrizioneFase(_ds, fase.IDTABFAS), odl.NUMMOVFASE);
                                uc.AggiungiODL(TipoControllo.Qualita, faseStr, odl.DATAFINE.ToShortDateString(), odl.QTA, odl.QTADATER, odl.QTATER_OK, odl.QTATER_DF, odl.QTATER_NL, odl.QTAANN, string.Empty);
                            }
                        }
                        else
                        {
                            string faseStr = string.Format("{0} - {1}", fase.CODICECLIFO, ov.GetDescrizioneFase(_ds, fase.IDTABFAS));
                            uc.AggiungiODL(TipoControllo.Qualita, faseStr, string.Empty, fase.QTA, fase.QTADATER, fase.QTATER, 0, 0, fase.QTAANN, string.Empty);
                        }
                    }
                }
//                pannello.Controls.Add(suc);
            }
        }