public void ErstelleKundenrechnung(int tpNr, int saNr)
        {
            Check.Argument(tpNr > 0, "TpNr > 0");
            Check.Argument(saNr > 0, "saNr > 0");

            Check.OperationCondition(!transactionService.IsTransactionActive, "Keine aktive Transaktion erlaubt.");

            Kundenrechnung kr = new Kundenrechnung();
            kr.RechnungBezahlt = false;
            TransportplanDTO tpDTO = transportplanServiceFuerBuchhaltung.FindeTransportplanUeberTpNr(tpNr);
            kr.Sendungsanfrage = saNr;
            IList<TransportplanSchrittDTO> tpSchritte = tpDTO.TransportplanSchritte;

            decimal kostenSumme = 0;
            foreach (TransportplanSchrittDTO tpsDTO in tpSchritte)
            {
                kostenSumme += tpsDTO.Kosten;
            }

            kr.Rechnungsbetrag = new WaehrungsType(kostenSumme);
            kr.Sendungsanfrage = saNr;
            SendungsanfrageDTO saDTO = auftragServiceFuerBuchhaltung.FindeSendungsanfrageUeberSaNr(saNr);
            GeschaeftspartnerDTO gpDTO = geschaeftspartnerService.FindGeschaeftspartner(saDTO.Auftraggeber);
            kr.Rechnungsadresse = gpDTO.Adressen.First<AdresseDTO>().Id;

            transactionService.ExecuteTransactional(
                () =>
                {
                    bh_REPO.SpeichereKundenrechnung(kr);
                });
            KundenrechnungDTO krDTO = kr.ToDTO();
            pDFErzeugungsServiceFuerBuchhaltung.ErstelleKundenrechnungPDF(ref krDTO, tpSchritte);
        }
 public void SpeichereKundenrechnung(Kundenrechnung kr)
 {
     persistenceService.Save(kr);
 }