예제 #1
0
        //public void ProcessVorgang(SI_Belege QuellBeleg, SI_Belege NewBeleg)
        //{
        //    if (QuellBeleg == null)
        //    {
        //        throw new ArgumentNullException("Quellbeleg darf nicht Null sein");
        //    }

        //    SI_Vorgaenge Vorgang;


        //    if (QuellBeleg.id_Vorgang == 0 || QuellBeleg.id_Vorgang == null)
        //    {
        //        if (QuellBeleg.firma == null)
        //        {
        //            throw new ArgumentNullException("Quellbeleg Firma kann nicht Null sein.");
        //        }

        //        if (NewBeleg.firma == null)
        //        {

        //        }

        //        Vorgang = CreateNewVorgang(NewBeleg.firma);
        //        if (QuellBeleg.firma != NewBeleg.firma)
        //        {
        //            throw new ArgumentOutOfRangeException("Quellbeleg und Folgebeleg müssen sich auf dieselbe Firma beziehen");
        //        }
        //        QuellBeleg.SI_Vorgaenge = Vorgang;
        //        ProcessBelegPositionen(Vorgang, QuellBeleg);


        //    }
        //    else
        //    {
        //       // Vorgang = GetVorgang((int)QuellBeleg.id_Vorgang);
        //        Vorgang = QuellBeleg.SI_Vorgaenge;
        //    }

        //    NewBeleg.id_Quellbeleg = QuellBeleg.id;
        //    NewBeleg.SI_Vorgaenge = Vorgang;
        //    ProcessBelegPositionen(Vorgang, NewBeleg);


        //}



        public bool ProcessVorgang(SI_Belege QuellBeleg, SI_Belege NewBeleg)
        {
            if (QuellBeleg == null)
            {
                return(false);
            }

            SI_Vorgaenge Vorgang;


            if (QuellBeleg.id_Vorgang == 0 || QuellBeleg.id_Vorgang == null)
            {
                Vorgang = CreateNewVorgang(NewBeleg.firma);
                if (QuellBeleg.firma != NewBeleg.firma)
                {
                    return(false);
                }
                QuellBeleg.SI_Vorgaenge = Vorgang;
                ProcessBelegPositionen(Vorgang, QuellBeleg);
            }
            else
            {
                Vorgang = GetVorgang((int)QuellBeleg.id_Vorgang);
            }

            NewBeleg.id_Quellbeleg = QuellBeleg.id;
            NewBeleg.SI_Vorgaenge  = Vorgang;
            return(ProcessBelegPositionen(Vorgang, NewBeleg));
        }
예제 #2
0
        public bool AddToVorgang(SI_Vorgaenge Vorgang, SI_Belege NewBeleg)
        {
            if (Vorgang != null && NewBeleg != null)
            {
                if (Vorgang.firma == NewBeleg.firma)
                {
                    NewBeleg.SI_Vorgaenge = Vorgang;
                    ProcessBelegPositionen(Vorgang, NewBeleg);
                    return(true);
                }

                return(false);
            }
            return(false);
        }
예제 #3
0
 public void CreateAndProcessNewVorgang(SI_Belege Beleg)
 {
     try
     {
         if (Beleg.SI_Vorgaenge == null)
         {
             Beleg.SI_Vorgaenge = CreateNewVorgang(Beleg.firma);
             ProcessBelegPositionen(Beleg.SI_Vorgaenge, Beleg);
         }
     }
     catch (Exception ex)
     {
         // CommonTools.Tools.UserMessage.NotifyUser(ex.Message);
         throw;
     }
 }
예제 #4
0
        private void btnTest_Click(object sender, RoutedEventArgs e)
        {
            using (var test = new SteinbachEntities())
            {
                var beleg = new SI_Belege();
                beleg.id_Quelllager = 1;
                beleg.id_Ziellager  = 2;
                test.AddToSI_Belege(beleg);

                var bwg = test.lagerliste_addremove.Where(i => i.id == 16471).SingleOrDefault();
                bwg.id_Quelllager = 2;
                bwg.id_Ziellager  = 1;
                //test.AddTolagerliste_addremove(bwg);

                test.SaveChanges();
            }
        }
예제 #5
0
        public LagerbuchungResult Lagerbuchung(SI_Belege Beleg)
        {
            bool posError = false;
            var  bw       = (StammBewegungsarten)Beleg.StammBelegarten.StammBewegungsarten;

            if (bw.Lagerbuchung == 0)
            {
                return(LagerbuchungResult.BelegartNichtBuchbar);
            }



            foreach (var item in Beleg.SI_BelegePositionen)
            {
                try
                {
                    if ((int)item.Handelsware != 1)
                    {
                        bool resQ     = false;
                        bool resZ     = false;
                        var  belegart = db.StammBelegarten.Where(n => n.id == Beleg.Belegart).SingleOrDefault();
                        var  lb       = new lagerliste_addremove();

                        lb.id_user = Session.User.id;

                        lb.isConfirmed   = 0;
                        lb.created       = DateTime.Now;
                        lb.id_Quelllager = Beleg.id_Quelllager;
                        lb.id_Ziellager  = Beleg.id_Ziellager;
                        lb.id_lagerliste = item.id_Artikel;
                        // lb.bemerkung = item.SI_Belege.Bemerkung;
                        lb.anzahl                = (int)item.Menge;
                        lb.addtype               = bw.id;
                        lb.id_projekt            = Beleg.id_Projekt ?? 0;
                        lb.id_BelegPosition      = item.id;
                        lb.id_Firma              = Beleg.id_Firma;
                        lb.Quelllager_BestandAlt = GetBestandLagerort((int)item.id_Artikel, (int)Beleg.id_Quelllager);
                        lb.Ziellager_BestandAlt  = GetBestandLagerort((int)item.id_Artikel, (int)Beleg.id_Ziellager);
                        db.AddTolagerliste_addremove(lb);
                        if (bw.WirkungQuelllager != 0)
                        {
                            resQ = Lagerbuchung((int)Beleg.id_Quelllager, (int)item.id_Artikel, (int)item.Menge * (int)bw.WirkungQuelllager);
                        }
                        else
                        {
                            resQ = true;
                        }
                        // Änderung Wirkung Belegart
                        resZ = Lagerbuchung((int)Beleg.id_Ziellager, (int)item.id_Artikel, (int)item.Menge * (int)bw.WirkungZiellager);

                        if (resQ == true && resZ == true)
                        {
                            lb.isConfirmed  = -1;
                            item.istGebucht = 1;
                            // db.SaveChanges();
                        }

                        lb.Quelllager_BestandNeu = GetBestandLagerort((int)item.id_Artikel, (int)Beleg.id_Quelllager);
                        lb.Ziellager_BestandNeu  = GetBestandLagerort((int)item.id_Artikel, (int)Beleg.id_Ziellager);

                        // db.SaveChanges();
                    }
                }


                catch (Exception ex)
                {
                    CommonTools.Tools.ErrorMethods.HandleStandardError(ex, "Lagerbuchung  fehlgeschlagen.");
                    posError = true;
                }
            }
            if (posError)
            {
                return(LagerbuchungResult.PositionsbuchungFehlgeschlagen);
            }
            else
            {
                return(LagerbuchungResult.BuchungOK);
            }
        }
예제 #6
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);
        }
예제 #7
0
        public bool AddToVorgang(int id_Vorgang, SI_Belege NewBeleg)
        {
            var vorgang = GetVorgang(id_Vorgang);

            return(AddToVorgang(vorgang, NewBeleg));
        }
        private bool MakeBuchungsbeleg()
        {
            bool result = false;

            try
            {
                int count = invPositionen.Where(n => (n.Differenz != 0 && n.Differenz != null) && (n.IstGebucht == 0 || n.IstGebucht == null)).Count();
                if (count > 0)
                {
                    SI_Belege b = null;
                    if (!BelegID.HasValue || BelegID == 0)
                    {
                        b = new SI_Belege();
                        db.AddToSI_Belege(b);

                        b.created       = DateTime.Now;
                        b.Belegart      = "inv";
                        b.id_Ziellager  = db.StammLagerorte.Where(n => n.istStandardLagerort == 1).SingleOrDefault().id;
                        b.id_Quelllager = 4;
                        b.Belegdatum    = this.Inventurdatum;
                        b.Bemerkung     = "Inventur : " + id;
                        b.Belegnummer   = "Inventur : " + id;
                        b.id_user       = Session.User.id;
                        b.id_Sprache    = 1;
                        b.istGebucht    = 0;
                    }
                    else
                    {
                        b = db.SI_Belege.Where(id => id.id == BelegID).SingleOrDefault();
                    }


                    if (invPositionen != null)
                    {
                        foreach (var item in invPositionen.Where(n => (n.Differenz != 0 && n.Differenz != null) && (n.IstGebucht == 0 || n.IstGebucht == null)))
                        {
                            var pos    = (SI_InventurenPositionen)item;
                            var posBel = new SI_BelegePositionen();
                            posBel.SI_Belege  = b;
                            posBel.Menge      = pos.Differenz;
                            posBel.id_Artikel = pos.id_artikel;

                            db.AddToSI_BelegePositionen(posBel);


                            if (pos.IstGebucht == 0 || pos.IstGebucht == null)
                            {
                                if (pos.id_artikel != null && pos.Differenz != null && pos.Differenz != 0)
                                {
                                    int ProId = pos.id_inventur;


                                    pos.IstGebucht = 1;
                                }
                            }
                        }
                    }

                    db.SaveChanges();
                    if (!BelegID.HasValue || BelegID == 0)
                    {
                        BelegID = b.id;
                    }
                    Inventurgebucht  = 1;
                    isGebuchtEnabled = false;
                    isDirty          = false;
                    db.SaveChanges();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(false);
            }
        }