public static List <FaseOrdineProduzione> EstraiListaFaseOrdineProduzione(string codiceOrdineProduzione)
        {
            OrdiniProduzioneDS ds = new OrdiniProduzioneDS();

            using (OrdiniProduzioneBusiness bOrdineProduzione = new OrdiniProduzioneBusiness())
            {
                bOrdineProduzione.FillFasiOrdiniProduzione(ds, codiceOrdineProduzione);
                bOrdineProduzione.FillVersamentiFasiOrdiniProduzione(ds, codiceOrdineProduzione);
            }

            List <FaseOrdineProduzione> fasi = new List <FaseOrdineProduzione>();

            foreach (OrdiniProduzioneDS.FasiOrdiniProduzioneRow riga in ds.FasiOrdiniProduzione)
            {
                FaseOrdineProduzione fase = CreaFaseOrdineProduzione(riga);
                OrdiniProduzioneDS.VersamentiFasiOrdiniProduzioneRow versamento = ds.VersamentiFasiOrdiniProduzione.Where(x => x.Operation_No_ == fase.Operazione).FirstOrDefault();
                if (versamento != null)
                {
                    fase.DataVersamento = versamento.Document_Date.ToShortDateString();
                    if (fase.WIP)
                    {
                        fase.QuantitaOutput = versamento.Invoiced_Quantity;
                    }
                    else
                    {
                        fase.QuantitaOutput = versamento.Output_Quantity;
                    }
                }
                fasi.Add(fase);
            }
            return(fasi);
        }
        private static OrdineProduzione CreaOrdineProduzione(OrdiniProduzioneDS.ArticoliOrdiniProduzioneRow riga)
        {
            if (riga == null)
            {
                return(null);
            }
            OrdineProduzione oProduzioneand = new OrdineProduzione();

            oProduzioneand.Status                 = riga.Status;
            oProduzioneand.Operazione             = riga.Line_No_;
            oProduzioneand.CodiceOrdineProduzione = riga.Prod__Order_No_;
            oProduzioneand.Anagrafica             = riga.Item_No_;
            oProduzioneand.Descrizione            = riga.Description;
            oProduzioneand.Magazzino              = riga.Location_Code;
            oProduzioneand.Collocazione           = riga.Bin_Code;
            oProduzioneand.Quantita               = Decimal.Round(riga.Quantity, 2, MidpointRounding.AwayFromZero);
            oProduzioneand.QuantitaFinita         = Decimal.Round(riga.Finished_Quantity, 2, MidpointRounding.AwayFromZero);
            oProduzioneand.QuantitaResidua        = Decimal.Round(riga.Remaining_Quantity, 2, MidpointRounding.AwayFromZero);
            oProduzioneand.QuantitaScarti         = Decimal.Round(riga.Scrap__, 2, MidpointRounding.AwayFromZero);
            oProduzioneand.DataInizio             = riga.Starting_Date;
            oProduzioneand.OraInizio              = riga.Starting_Time;
            oProduzioneand.DataFine               = riga.Ending_Date;
            oProduzioneand.OraFine                = riga.Ending_Time;
            oProduzioneand.Articolo               = riga.Routing_No_;

            oProduzioneand.Avanzamento = Avanzamento.InTempo;

            oProduzioneand.Fasi = FaseOrdineProduzione.EstraiListaFaseOrdineProduzione(riga.Prod__Order_No_);
            return(oProduzioneand);
        }
        private static FaseOrdineProduzione CreaFaseOrdineProduzione(OrdiniProduzioneDS.FasiOrdiniProduzioneRow riga)
        {
            if (riga == null)
            {
                return(null);
            }
            FaseOrdineProduzione oProduzioneand = new FaseOrdineProduzione();

            oProduzioneand.OrdineProduzione          = riga.Prod__Order_No_;
            oProduzioneand.Operazione                = riga.Operation_No_;
            oProduzioneand.AreaProduzione            = riga.Work_Center_No_;
            oProduzioneand.DescrizioneAreaProduzione = riga.Description;
            oProduzioneand.Setup   = riga.Setup_Time;
            oProduzioneand.Run     = riga.Run_Time;
            oProduzioneand.Wait    = riga.Wait_Time;
            oProduzioneand.Move    = Decimal.Round(riga.Move_Time, 2, MidpointRounding.AwayFromZero);
            oProduzioneand.Lotto   = riga.Lot_Size;// Decimal.Round(riga.Finished_Quantity, 2, MidpointRounding.AwayFromZero);
            oProduzioneand.SetupUM = riga.Setup_Time_Unit_of_Meas__Code;
            oProduzioneand.RunUM   = riga.Run_Time_Unit_of_Meas__Code;
            oProduzioneand.WaitUM  = riga.Wait_Time_Unit_of_Meas__Code;
            oProduzioneand.MoveUM  = riga.Move_Time_Unit_of_Meas__Code;
            oProduzioneand.Task    = riga.Standard_Task_Code;

            oProduzioneand.OraInizio      = riga.Starting_Time;
            oProduzioneand.DataFine       = riga.Ending_Date;
            oProduzioneand.OraFine        = riga.Ending_Time;
            oProduzioneand.Ciclo          = riga.Routing_No_;
            oProduzioneand.QuantitaInput  = riga.Input_Quantity;
            oProduzioneand.WIP            = riga.WIP_Item == 0;
            oProduzioneand.QuantitaOutput = 0;
            oProduzioneand.DataVersamento = string.Empty;

            oProduzioneand.Avanzamento = Avanzamento.InTempo;
            return(oProduzioneand);
        }