Beispiel #1
0
        /// <summary>
        /// Tworzy rozliczenie RW dla pozycji mieszanki wraz z idTowaru z Subiekt oraz udzialami
        /// </summary>
        /// <param name="mieszanka">encje NormZuzycia dla mieszanki</param>
        /// <returns></returns>
        public async Task <IEnumerable <tblProdukcjaRozliczenie_RW> > GenerujRozliczenieRWAsync(tblProdukcjaRozliczenie_PW wybranaPozycjaKonfekcjiDoRozliczenia)
        {
            if (wybranaPozycjaKonfekcjiDoRozliczenia is null)
            {
                throw new ArgumentNullException($"Brak zlecenia jako argumentu funkcji {nameof(GenerujRozliczenieRWAsync)}.");
            }

            var mieszanka = await PobierzMieszankeDlaZleceniaAsync(wybranaPozycjaKonfekcjiDoRozliczenia.IDZlecenie);

            var rozliczenieLista = new List <tblProdukcjaRozliczenie_RW>();

            foreach (var pozycja in mieszanka)
            {
                var surowiecZSubiekt = await surowiecStrategy.PobierzSurowiecZSubiektDla(pozycja.Surowiec);

                if (surowiecZSubiekt is null)
                {
                    throw new ArgumentNullException("Nie znaleziono surowca do rozliczenia w bazie danych.");
                }

                rozliczenieLista.Add(new ProdukcjaRozliczenieRWAdapter(
                                         pozycja,
                                         surowiecZSubiekt,
                                         PobierzIdSurowcaZNazwyMsAccess(pozycja.Surowiec))
                                     .Konwertuj()
                                     );
            }

            return(rozliczenieLista);
        }
Beispiel #2
0
        private async Task <vwMagazynRuchGTX> PobierzSurowiecDostepny(tblProdukcjaZlecenieProdukcyjne_Mieszanka surowiec)
        {
            var towar = await unitOfWork.vwTowarGTX.SingleOrDefaultAsync(e => e.IdTowar == surowiec.IDTowar);

            vwMagazynRuchGTX surowiecDostepny = null;
            var surowiecDostepnyNaMagazynie   = await unitOfWork.vwMagazynRuchGTX.WhereAsync(e => e.IdTowar == surowiec.IDTowar);

            if (surowiecDostepnyNaMagazynie is null || surowiecDostepnyNaMagazynie.Sum(s => s.Ilosc) == 0)
            {
                surowiecDostepny = await surowiecSubiektStrategy.PobierzSurowiecZSubiektDla(towar.Symbol.Replace("_", ""));
            }

            return(surowiecDostepnyNaMagazynie.FirstOrDefault());
        }