public void UpdateInfo()
 {
     empty = false;
     if (this.Visibility != Visibility.Visible)
     {
         this.Visibility = Visibility.Visible;
     }
     Bon = MakeBon();
 }
 private void showBonBtn_Click(object sender, RoutedEventArgs e)
 {
     if (!empty)
     {
         var bigbon = new DetailsWindow();
         Bon           = MakeBon();
         bigbon.Width  = Bon.Width + 25;
         bigbon.Height = Bon.Height + 25;
         bigbon.LoadContent(Bon);
         bigbon.Show();
     }
 }
        private ExpertReceipt MakeBon()
        {
            var ctx    = Acumulator.Instance().ctx;
            var tmpBon = new ExpertReceipt();

            if (Acumulator.Instance().OTracker != null && Acumulator.Instance().OTracker.offerteRuimte_ != null)
            {
                GetInstapPrijzen();
                tmpBon.Clear();
                var bouwnr = (from b in Acumulator.Instance().ctx.Bouwnummers
                              where b.B_ID == Acumulator.Instance().Bouwnr
                              select b.Omschrijving).FirstOrDefault();
                tmpBon.AddArticle(bouwnr, -1, true);
                foreach (Ruimte r in Acumulator.Instance().OTracker.offerteRuimte_.Children)
                {
                    tmpBon.AddArticle(r.Omschrijving, -1, true);
                    if (r.GekozenPakket != null)
                    {
                        tmpBon.AddArticle("Pakket: " + r.GekozenPakket.Omschrijving, r.GekozenPakket.PrijsHuidig, false);
                    }
                    foreach (OptieKeuze op in r.GekozenOpties)
                    {
                        op.laad_verder();
                        var dorpelcat = (from dc in Acumulator.Instance().ctx.SubCatPerRuimteDeels
                                         where dc.R_NR == op.OptieID && dc.SCB_NR == "SCB13"
                                         select dc.R_NR).FirstOrDefault();

                        var prijs = 0.0;
                        if (r.GekozenPakket != null)
                        {
                            prijs = op.getMeerprijs(Acumulator.Instance().ctx, (r.GekozenPakket as PakketKeuze).PakketPrijsgroep_NR);
                        }
                        else
                        {
                            var basispakket = (from rpt in ctx.RuimtesPerTypes
                                               where rpt.R_NR == Acumulator.Instance().BB.HuidigRuimte.RuimteID
                                               select rpt.BasisPakket_NR).FirstOrDefault();
                            var optiebasisprijs = 0.0;
                            if (basispakket != null)
                            {
                                var basispakprijs = (from pr in ctx.MeerPrijzenRuimteOpties
                                                     where pr.R_NR == op.OptieID && pr.PP_NR == (from p in ctx.Pakkettens where p.P_ID == basispakket select p.PP_NR).FirstOrDefault()
                                                     select pr.meerprijs).FirstOrDefault();
                                if (basispakprijs != null)
                                {
                                    optiebasisprijs = Acumulator.Instance().BerekenEindPrijs((double)basispakprijs);
                                }
                            }
                            if (optiebasisprijs == 0)
                            {
                                optiebasisprijs = op.BasisPrijs;
                            }
                            prijs = optiebasisprijs;
                        }
                        tmpBon.AddArticle(op.Omschrijving, prijs, false);
                        if (dorpelcat != null && r.GekozenTegels.Count > 0)
                        {
                            if (!Acumulator.Instance().ProjFase.FilterDorpels)
                            {
                                var oms = r.GekozenTegels.Where(x => x.Omschrijving.Contains('€')).FirstOrDefault();
                                if (oms != null)
                                {
                                    var parts = oms.Omschrijving.Split('€');
                                    if (parts[1] != "0,00")
                                    {
                                        tmpBon.AddArticle("Meerprijs Dorpel", double.Parse(parts[1]), false);
                                    }
                                }
                            }
                        }
                    }
                    foreach (var exmtrs in r.AanvullendeMeters)
                    {
                        if (!exmtrs.IsBasis)
                        {
                            var accText  = exmtrs.LinkedProduct != null ?  exmtrs.LinkedProduct.Omschrijving : exmtrs.LinkedHoekProf != null ? exmtrs.LinkedHoekProf.Omschrijving : ""; // + ": " + exmtrs.Meters + " meter voor €" + exmtrs.Meerprijs.ToString() + " per meter";
                            var accPrijs = exmtrs.Meters * exmtrs.Meerprijs;                                                                                                            // +(exmtrs.LinkedProduct != null ? exmtrs.LinkedProduct.VerpakkingsToeslag : exmtrs.LinkedHoekProf != null ? exmtrs.LinkedHoekProf.VerpakkingsToeslag : 0.0);//0.0;
                            tmpBon.AddArticle(accText, accPrijs, false);
                        }
                        if (exmtrs.LinkedProduct != null)
                        {
                            ExpertMethods.instapPrijsCalc(exmtrs.LinkedProduct.ID, exmtrs.LinkedProduct.Omschrijving, instapChecklist, exmtrs.LinkedProduct.VerpakkingsToeslag, HeleDozenLijst);
                        }
                        else if (exmtrs.LinkedHoekProf != null)
                        {
                            ExpertMethods.instapPrijsCalc(exmtrs.LinkedHoekProf.ProfielID, exmtrs.LinkedHoekProf.Omschrijving, instapChecklist, exmtrs.LinkedHoekProf.VerpakkingsToeslag, HeleDozenLijst);
                        }
                    }

                    tmpBon.AddArticle("", -1, true);
                }
                var oruim = Acumulator.Instance().OTracker.offerteRuimte_;

                //instap prijzen aka afname hele dozen
                tmpBon.AddArticle("Afname hele dozen", -1, true);

                double dozenprijs = 0.0;
                foreach (var hd in HeleDozenLijst)
                {
                    tmpBon.AddArticle(hd.Key, hd.Value, false);
                    dozenprijs += hd.Value;
                }


                //if(oruim.Korting != null && oruim.Korting.KortingBedrag > 0.0)
                //{
                //    var kort = oruim.Korting.KortingBedrag * -1;
                //    tmpBon.AddArticle("Korting", kort,true );
                //}

                this.Setprijs(tmpBon.GetTotal());
            }
            return(tmpBon);
        }