예제 #1
0
        //public Vorgaenge()
        //{

        //}


        private bool ProcessBelegPositionen(SI_Vorgaenge vorgang, SI_Belege beleg)
        {
            if (vorgang == null)
            {
                throw new ArgumentNullException("Vorgang", VorgangKannNichtNullSeinMessage);
            }

            if (beleg == null)
            {
                throw new ArgumentNullException("Beleg", BelegKannNichtNullSeinMessage);
            }

            if (vorgang != null && beleg != null && beleg.SI_BelegePositionen != null)
            {
                foreach (var item in beleg.SI_BelegePositionen)
                {
                    var vPos = vorgang.SI_VorgaengePositionen.Where(n => n.id_Artikel == item.id_Artikel).SingleOrDefault();
                    if (vPos == null)
                    {
                        vPos = new SI_VorgaengePositionen();
                        vPos.SI_Vorgaenge = vorgang;
                        vPos.id_Artikel   = item.id_Artikel;
                        vorgang.SI_VorgaengePositionen.Add(vPos);
                        db.AddToSI_VorgaengePositionen(vPos);
                    }
                    switch (beleg.StammBelegarten.CalculateColumn)
                    {
                    case "ab":
                        if (vPos.MengeAB.HasValue)
                        {
                            vPos.MengeAB += ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }
                        else
                        {
                            vPos.MengeAB = ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }

                        break;

                    case "re":
                        if (vPos.MengeRg.HasValue)
                        {
                            vPos.MengeRg += ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }
                        else
                        {
                            vPos.MengeRg = ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }

                        break;

                    case "gs":
                        if (vPos.MengeGS.HasValue)
                        {
                            vPos.MengeGS += ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }
                        else
                        {
                            vPos.MengeGS = ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }

                        break;


                    case "ls":
                        if (vPos.MengeLS.HasValue)
                        {
                            vPos.MengeLS += ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }
                        else
                        {
                            vPos.MengeLS = ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }

                        break;

                    case "rls":
                        if (vPos.MengeLS.HasValue)
                        {
                            vPos.MengeRLS += ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }
                        else
                        {
                            vPos.MengeRLS = ((decimal)item.Menge * beleg.StammBelegarten.Wirkung);
                        }

                        break;

                    default:
                        break;
                    }
                }

                return(true);
            }

            return(false);
        }