public void TestPlanungZweiWegeWähleTransportplanSuccess() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); SendungspositionDTO sp1 = new SendungspositionDTO(); saDTO.Sendungspositionen.Add(sp1); saDTO.AbholzeitfensterStart = DateTime.Parse("01.09.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("10.09.2013"); saDTO.AngebotGültigBis = DateTime.Now.AddHours(1); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = shanghaiLokation.LokNr; frachtfuehrerServicesMock.Setup(ffs => ffs.SendeFrachtauftragAnFrachtfuehrer( It.Is<FrachtauftragDTO>((fraDTO) => fraDTO.FrachtfuehrerRahmenvertrag.FrvNr == frv_hh_bhv.FrvNr))) .Callback<FrachtauftragDTO>((fraDTO) => { bool ok = true; ok &= fraDTO.PlanStartzeit == DateTime.Parse("03.09.2013 8:00"); ok &= fraDTO.PlanEndezeit == DateTime.Parse("05.09.2013 8:00"); ok &= fraDTO.VerwendeteKapazitaetTEU == 1; ok &= fraDTO.VerwendeteKapazitaetFEU == 0; if (!ok) { throw new ArgumentException(); } }) .Verifiable(); frachtfuehrerServicesMock.Setup(ffs => ffs.SendeFrachtauftragAnFrachtfuehrer( It.Is<FrachtauftragDTO>((fraDTO) => fraDTO.FrachtfuehrerRahmenvertrag.FrvNr == frv_bhv_sh.FrvNr))) .Callback<FrachtauftragDTO>((fraDTO) => { bool ok = true; ok &= fraDTO.PlanStartzeit == DateTime.Parse("05.09.2013 10:00"); ok &= fraDTO.PlanEndezeit == DateTime.Parse("10.09.2013 10:00"); ok &= fraDTO.VerwendeteKapazitaetTEU == 1; ok &= fraDTO.VerwendeteKapazitaetFEU == 0; if (!ok) { throw new ArgumentException(); } }) .Verifiable(); auftragsServices.CreateSendungsanfrage(ref saDTO); auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 2); //// Inhalte geprüft durch TestPlanungZweiWegeSuccess() TransportplanDTO planÜberBhv = pläne.Find((plan) => { return plan.TransportplanSchritte.ToList().Find((tps) => { TransportAktivitaetDTO ta = tps as TransportAktivitaetDTO; if (ta != null) { return ta.FuerTransportAufTransportbeziehung == hh_bhv.TbNr; } else { return false; } }) != null; }); Assert.IsTrue(planÜberBhv != null); Assert.IsTrue(planÜberBhv.TransportplanSchritte.Count == 2); auftragsServices.NimmAngebotAn(saDTO.SaNr); transportplanungServicesFuerSendung.FühreTransportplanAus(planÜberBhv.TpNr); pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1); Assert.IsTrue(pläne[0].TpNr == planÜberBhv.TpNr); frachtfuehrerServicesMock.Verify(); }
public void TestErstelleSendungsanfrageUndOrdneRechungenZuSuccess() { Adresse kundenadresse = new Adresse() { Strasse = "ABC-Strasse", Hausnummer = "123", Land = "Nimmerland", PLZ = "4567", Wohnort = "hinterm Baum" }; IList<AdresseDTO> adressen = new List<AdresseDTO>(); adressen.Add(kundenadresse.ToDTO()); GeschaeftspartnerDTO gpDTO = new GeschaeftspartnerDTO() { Adressen = adressen, Email = new EMailType("*****@*****.**"), Vorname = "Hans", Nachname = "Peter", }; geschaeftspartnerServices.CreateGeschaeftspartner(ref gpDTO); SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); SendungspositionDTO sp1 = new SendungspositionDTO(); saDTO.Sendungspositionen.Add(sp1); saDTO.AbholzeitfensterStart = DateTime.Parse("01.09.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("10.09.2013"); saDTO.AngebotGültigBis = DateTime.Now.AddHours(1); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = shanghaiLokation.LokNr; saDTO.Auftraggeber = 1; auftragsServices.CreateSendungsanfrage(ref saDTO); auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count >= 1); TransportplanDTO planÜberBhv = pläne.Find((plan) => { return plan.TransportplanSchritte.ToList().Find((tps) => { TransportAktivitaetDTO ta = tps as TransportAktivitaetDTO; if (ta != null) { return ta.FuerTransportAufTransportbeziehung == hh_bhv.TbNr; } else { return false; } }) != null; }); Assert.IsTrue(planÜberBhv != null); Assert.IsTrue(planÜberBhv.TransportplanSchritte.Count == 2); pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1); Assert.IsTrue(pläne[0].TpNr == planÜberBhv.TpNr); foreach (TransportplanDTO tpDTO in pläne) { Sendungsanfrage sa = auftragsServices.FindSendungsanfrage(tpDTO.SaNr).ToEntity(); auftragsServices.NimmAngebotAn(sa.SaNr); sendungServices.ErstelleSendung(tpDTO.TpNr, saDTO.SaNr); } FrachtabrechnungDTO fab1DTO = new FrachtabrechnungDTO { Frachtauftrag = 1, IstBestaetigt = true }; buchhaltungServices.PayFrachtabrechnung(ref fab1DTO); FrachtabrechnungDTO fab2DTO = new FrachtabrechnungDTO { Frachtauftrag = 2, IstBestaetigt = true }; buchhaltungServices.PayFrachtabrechnung(ref fab2DTO); buchhaltungServiceFuerSendung.ErstelleKundenrechnung(1, 1); var tokenSource = new CancellationTokenSource(); var token = tokenSource.Token; var t = Task.Factory.StartNew( () => { bankAdapter.EmpfangeZahlungseingaengenAusQueue(); token.ThrowIfCancellationRequested(); }, token); Thread.Sleep(10000); bankAdapter.EmpfangeZahlungseingaenge(false); Thread.Sleep(5000); tokenSource.Cancel(); }
public void TestPlanungZweiSegmenteSuccess() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); SendungspositionDTO sp1 = new SendungspositionDTO(); saDTO.Sendungspositionen.Add(sp1); saDTO.AbholzeitfensterStart = DateTime.Parse("29.07.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("04.08.2013"); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = shanghaiLokation.LokNr; auftragsServices.CreateSendungsanfrage(ref saDTO); auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1); TransportplanDTO plan = pläne.First(); Assert.IsTrue(plan.TransportplanSchritte.Count == 2); Assert.IsTrue(plan.AbholungAm == DateTime.Parse("30.07.2013 08:00:00")); Assert.IsTrue(plan.LieferungAm == DateTime.Parse("06.08.2013 10:00:00")); Assert.IsTrue(plan.Dauer == TimeSpan.Parse("7.02:00")); // HH: 32 Stunden * 10 // HH->BHV: 1000 + 100 // BHV: 2 Stunden * 15 // BHV->SH: 2000 + 200 Assert.IsTrue(plan.Kosten == 3650); }
public void TestPlanungZweiWegeSuccess() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); SendungspositionDTO sp1 = new SendungspositionDTO(); saDTO.Sendungspositionen.Add(sp1); saDTO.AbholzeitfensterStart = DateTime.Parse("01.09.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("10.09.2013"); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = shanghaiLokation.LokNr; auftragsServices.CreateSendungsanfrage(ref saDTO); auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 2); TransportplanDTO plan1 = pläne.Find((plan) => { return plan.TransportplanSchritte.ToList().Find((tps) => { TransportAktivitaetDTO ta = tps as TransportAktivitaetDTO; if (ta != null) { return ta.FuerTransportAufTransportbeziehung == hh_bhv.TbNr; } else { return false; } }) != null; }); Assert.IsTrue(plan1 != null); Assert.IsTrue(plan1.TransportplanSchritte.Count == 2); Assert.IsTrue(plan1.AbholungAm == DateTime.Parse("03.09.2013 08:00:00")); Assert.IsTrue(plan1.LieferungAm == DateTime.Parse("10.09.2013 10:00:00")); Assert.IsTrue(plan1.Dauer == TimeSpan.Parse("7.02:00")); Assert.IsTrue(plan1.Frachteinheiten.Count == 1); // HH: 56 Stunden * 10 // HH->BHV: 1000 + 100 // BHV: 2 Stunden * 15 // BHV->SH: 2000 + 200 Assert.IsTrue(plan1.Kosten == 3890); TransportplanDTO plan2 = pläne.Find((plan) => { return plan.TransportplanSchritte.ToList().Find((tps) => { TransportAktivitaetDTO ta = tps as TransportAktivitaetDTO; if (ta != null) { return ta.FuerTransportAufTransportbeziehung == hh_rtd.TbNr; } else { return false; } }) != null; }); Assert.IsTrue(plan2 != null); Assert.IsTrue(plan2.TransportplanSchritte.Count == 2); Assert.IsTrue(plan2.AbholungAm == DateTime.Parse("02.09.2013 08:00:00")); Assert.IsTrue(plan2.LieferungAm == DateTime.Parse("12.09.2013 10:00:00")); Assert.IsTrue(plan2.Dauer == TimeSpan.Parse("10.02:00")); Assert.IsTrue(plan2.Frachteinheiten.Count == 1); // HH: 32 Stunden * 10 // HH->RTD: 2000 + 200 // RTD: 2 Stunden * 20 // RTD->SH: 3000 + 300 Assert.IsTrue(plan2.Kosten == 5860); }
public void TestPlanungEinSegmentZweiTEUSuccess() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); SendungspositionDTO sp1 = new SendungspositionDTO(); sp1.Bruttogewicht = TEU.MAXZULADUNG_TONS; saDTO.Sendungspositionen.Add(sp1); SendungspositionDTO sp2 = new SendungspositionDTO(); sp2.Bruttogewicht = TEU.MAXZULADUNG_TONS; saDTO.Sendungspositionen.Add(sp2); saDTO.AbholzeitfensterStart = DateTime.Parse("29.07.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("04.08.2013"); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = bremerhavenLokation.LokNr; auftragsServices.CreateSendungsanfrage(ref saDTO); auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1); TransportplanDTO plan = pläne.First(); Assert.IsTrue(plan.TransportplanSchritte.Count == 1); Assert.IsTrue(plan.AbholungAm == DateTime.Parse("30.07.2013 08:00:00")); Assert.IsTrue(plan.LieferungAm == DateTime.Parse("01.08.2013 08:00:00")); Assert.IsTrue(plan.Dauer == TimeSpan.Parse("2")); // Fixkosten 1000 // Wartezeit 32 Stunden * 10 = 320 // Transport 2 TEU = 200 Assert.IsTrue(plan.Kosten == 1520); }
public void TestPlanungEinSegmentDreiTEUFailWegenZuGeringerKapazität() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); SendungspositionDTO sp1 = new SendungspositionDTO(); sp1.Bruttogewicht = TEU.MAXZULADUNG_TONS; saDTO.Sendungspositionen.Add(sp1); SendungspositionDTO sp2 = new SendungspositionDTO(); sp2.Bruttogewicht = TEU.MAXZULADUNG_TONS; saDTO.Sendungspositionen.Add(sp2); SendungspositionDTO sp3 = new SendungspositionDTO(); sp3.Bruttogewicht = TEU.MAXZULADUNG_TONS; saDTO.Sendungspositionen.Add(sp3); saDTO.AbholzeitfensterStart = DateTime.Parse("29.07.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("04.08.2013"); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = bremerhavenLokation.LokNr; auftragsServices.CreateSendungsanfrage(ref saDTO); auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); List<TransportplanDTO> pläne2 = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne2.Count == 0); // Kapazität des FRV nur zwei TEU }
public void TestPlanungEinSegmentMitFEUundTEUSuccess() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); //// Erzeugt werden sollen 1 FEU und 1 TEU SendungspositionDTO spDTO = new SendungspositionDTO(); spDTO.Bruttogewicht = TEU.MAXZULADUNG_TONS; saDTO.Sendungspositionen.Add(spDTO); spDTO = new SendungspositionDTO(); spDTO.Bruttogewicht = TEU.MAXZULADUNG_TONS + 1; // zu groß für TEU -> FEU soll erzeugt werden saDTO.Sendungspositionen.Add(spDTO); saDTO.AbholzeitfensterStart = DateTime.Parse("29.07.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("04.08.2013"); saDTO.StartLokation = bremerhavenLokation.LokNr; saDTO.ZielLokation = shanghaiLokation.LokNr; auftragsServices.CreateSendungsanfrage(ref saDTO); auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1); TransportplanDTO plan = pläne.First(); Assert.IsTrue(plan.TransportplanSchritte.Count == 1); Assert.IsTrue(plan.AbholungAm == DateTime.Parse("29.07.2013 08:00:00")); Assert.IsTrue(plan.LieferungAm == DateTime.Parse("03.08.2013 08:00:00")); Assert.IsTrue(plan.Dauer == TimeSpan.Parse("5")); Assert.IsTrue(plan.Frachteinheiten.Count == 2); Assert.IsTrue(plan.Frachteinheiten.Any((fe) => { return fe.FraeTyp == FrachteinheitTyp.TEU; })); Assert.IsTrue(plan.Frachteinheiten.Any((fe) => { return fe.FraeTyp == FrachteinheitTyp.FEU; })); // Fixkosten 2000 // Wartezeit 8 Stunden * 15 = 120 // Transport 1 FEU = 400, 1 TEU 200 Assert.IsTrue(plan.Kosten == 2720); }
public void TestPlanungEinSegmentFailWegenZuSchwererSendungsposition() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); SendungspositionDTO spDTO = new SendungspositionDTO(); spDTO.Bruttogewicht = FEU.MAXZULADUNG_TONS + 1; // Es können auf Grund des Gewichtes keine Frachteinheiten erzeugt werden saDTO.Sendungspositionen.Add(spDTO); saDTO.AbholzeitfensterStart = DateTime.Parse("29.07.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("04.08.2013"); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = bremerhavenLokation.LokNr; auftragsServices.CreateSendungsanfrage(ref saDTO); List<TransportplanungMeldung> meldungen = auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); Assert.IsTrue(meldungen.Count == 1); Assert.IsTrue(meldungen[0].Tag == TransportplanungMeldungTag.FrachteinheitenBildungNichtMöglich); }
public void TestPlanungZweiWegeWähleTransportplanSuccess() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); saDTO.SaNr = 7; SendungspositionDTO sp1 = new SendungspositionDTO(); saDTO.Sendungspositionen.Add(sp1); saDTO.AbholzeitfensterStart = DateTime.Parse("01.09.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("10.09.2013"); saDTO.AngebotGültigBis = DateTime.Now.AddHours(1); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = shanghaiLokation.LokNr; saDTO.Status = SendungsanfrageStatusTyp.Angenommen; auftragsServicesFürTransportplanungMock.Setup(aus => aus.FindSendungsanfrageEntity(saDTO.SaNr)) .Returns(saDTO.ToEntity()); ITransportplanungJob job = transportplanungsServicesFürAuftrag.StarteTransportplanungAsync(saDTO.SaNr); job.Wait(); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 2); //// Inhalte geprüft durch TestPlanungZweiWegeSuccess() TransportplanDTO planÜberBhv = pläne.Find((plan) => { return plan.TransportplanSchritte.ToList().Find((tps) => { TransportAktivitaetDTO ta = tps as TransportAktivitaetDTO; if (ta != null) { return ta.FuerTransportAufTransportbeziehung == hh_bhv.TbNr; } else { return false; } }) != null; }); Assert.IsTrue(planÜberBhv != null); TransportplanDTO planÜberRtd = pläne.Find((plan) => { return plan.TransportplanSchritte.ToList().Find((tps) => { TransportAktivitaetDTO ta = tps as TransportAktivitaetDTO; if (ta != null) { return ta.FuerTransportAufTransportbeziehung == hh_rtd.TbNr; } else { return false; } }) != null; }); Assert.IsTrue(planÜberRtd != null); auftragsServicesFürTransportplanungMock.Setup(aus => aus.UpdateSendungsanfrageStatus(saDTO.SaNr, SendungsanfrageStatusTyp.InAusfuehrung)) .Verifiable(); Assert.IsTrue(planÜberBhv.TransportplanSchritte.Count == 2); pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 2); // es sollten noch beide Pläne vor Wahl eines Plans gespeichert sein transportplanungsServicesFuerSendung.FühreTransportplanAus(planÜberBhv.TpNr); auftragsServicesFürTransportplanungMock.Verify(); pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1, "Plan über Rtd sollte gelöscht sein."); Assert.IsTrue(pläne[0].TpNr == planÜberBhv.TpNr, "Plan über Bhv sollte vorhanden sein."); }
private static void BefuelleDatenbank() { IPersistenceServices persistenceService = null; ITransactionServices transactionService = null; ITransportplanungServices transportplanungsServices = null; IAuftragServices auftragsServices = null; IUnterbeauftragungServices unterbeauftragungsServices = null; ITransportnetzServices transportnetzServices = null; IFrachtfuehrerServicesFürUnterbeauftragung frachtfuehrerServices = null; LokationDTO hamburgLokation; LokationDTO bremerhavenLokation; LokationDTO shanghaiLokation; TransportbeziehungDTO hh_bhv; TransportbeziehungDTO bhv_sh; log4net.Config.XmlConfigurator.Configure(); PersistenceServicesFactory.CreateSimpleMySQLPersistenceService(out persistenceService, out transactionService); var timeServicesMock = new Mock<ITimeServices>(); //// Wir müssen einen fixen Zeitpunkt simulieren, ansonsten sind bei der Ausführung/Planung evtl. die Verträge oder Angebote abgelaufen timeServicesMock.Setup(ts => ts.Now) .Returns(DateTime.Parse("31.08.2013 12:00")); transportnetzServices = new TransportnetzKomponenteFacade(); auftragsServices = new AuftragKomponenteFacade(persistenceService, transactionService, timeServicesMock.Object); IAuftragServicesFürTransportplanung auftragsServicesFürTransportplanung = auftragsServices as IAuftragServicesFürTransportplanung; ////frachtfuehrerServices = new FrachtfuehrerAdapterFacade(); unterbeauftragungsServices = new UnterbeauftragungKomponenteFacade(persistenceService, transactionService, frachtfuehrerServices); transportplanungsServices = new TransportplanungKomponenteFacade(persistenceService, transactionService, auftragsServicesFürTransportplanung, unterbeauftragungsServices as IUnterbeauftragungServicesFürTransportplanung, transportnetzServices as ITransportnetzServicesFürTransportplanung, timeServicesMock.Object); auftragsServicesFürTransportplanung.RegisterTransportplanungServiceFürAuftrag(transportplanungsServices as ITransportplanungServicesFürAuftrag); hamburgLokation = new LokationDTO("Hamburg", TimeSpan.Parse("10"), 10); bremerhavenLokation = new LokationDTO("Bremerhaven", TimeSpan.Parse("15"), 15); shanghaiLokation = new LokationDTO("Shanghai", TimeSpan.Parse("10"), 10); transportnetzServices.CreateLokation(ref hamburgLokation); transportnetzServices.CreateLokation(ref bremerhavenLokation); transportnetzServices.CreateLokation(ref shanghaiLokation); hh_bhv = new TransportbeziehungDTO(hamburgLokation, bremerhavenLokation); bhv_sh = new TransportbeziehungDTO(bremerhavenLokation, shanghaiLokation); transportnetzServices.CreateTransportbeziehung(ref hh_bhv); transportnetzServices.CreateTransportbeziehung(ref bhv_sh); FrachtfuehrerDTO frfHH_BHV = new FrachtfuehrerDTO(); unterbeauftragungsServices.CreateFrachtfuehrer(ref frfHH_BHV); FrachtfuehrerRahmenvertragDTO frv_hh_bhv = new FrachtfuehrerRahmenvertragDTO(); frv_hh_bhv.GueltigkeitAb = DateTime.Parse("01.01.2013"); frv_hh_bhv.GueltigkeitBis = DateTime.Parse("31.12.2013"); frv_hh_bhv.Abfahrtszeiten = new System.Collections.Generic.List<StartzeitDTO>() { new StartzeitDTO() { Wochentag = DayOfWeek.Tuesday, Uhrzeit = 8 }, new StartzeitDTO() { Wochentag = DayOfWeek.Wednesday, Uhrzeit = 8 }, new StartzeitDTO() { Wochentag = DayOfWeek.Friday, Uhrzeit = 8 } }; frv_hh_bhv.KapazitaetTEU = 2; frv_hh_bhv.KostenFix = 1000; frv_hh_bhv.KostenProTEU = 100; frv_hh_bhv.KostenProFEU = 200; frv_hh_bhv.FuerTransportAufTransportbeziehung = hh_bhv.TbNr; frv_hh_bhv.Frachtfuehrer = frfHH_BHV; frv_hh_bhv.Zeitvorgabe = TimeSpan.Parse("2"); // 2 Tage unterbeauftragungsServices.CreateFrachtfuehrerRahmenvertrag(ref frv_hh_bhv); FrachtfuehrerDTO frfBHV = new FrachtfuehrerDTO(); unterbeauftragungsServices.CreateFrachtfuehrer(ref frfBHV); FrachtfuehrerRahmenvertragDTO frv_bhv_sh = new FrachtfuehrerRahmenvertragDTO(); frv_bhv_sh.GueltigkeitAb = DateTime.Parse("01.01.2013"); frv_bhv_sh.GueltigkeitBis = DateTime.Parse("31.12.2013"); frv_bhv_sh.Abfahrtszeiten = new System.Collections.Generic.List<StartzeitDTO>() { new StartzeitDTO() { Wochentag = DayOfWeek.Monday, Uhrzeit = 8 }, new StartzeitDTO() { Wochentag = DayOfWeek.Thursday, Uhrzeit = 10 }, new StartzeitDTO() { Wochentag = DayOfWeek.Saturday, Uhrzeit = 8 } }; frv_bhv_sh.KapazitaetTEU = 4; frv_bhv_sh.KostenFix = 2000; frv_bhv_sh.KostenProTEU = 200; frv_bhv_sh.KostenProFEU = 400; frv_bhv_sh.FuerTransportAufTransportbeziehung = bhv_sh.TbNr; frv_bhv_sh.Frachtfuehrer = frfBHV; frv_bhv_sh.Zeitvorgabe = TimeSpan.Parse("5"); // 5 Tage unterbeauftragungsServices.CreateFrachtfuehrerRahmenvertrag(ref frv_bhv_sh); SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); SendungspositionDTO sp1 = new SendungspositionDTO(); saDTO.Sendungspositionen.Add(sp1); saDTO.AbholzeitfensterStart = DateTime.Parse("01.09.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("10.09.2013"); saDTO.AngebotGültigBis = DateTime.Now.AddHours(1); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = shanghaiLokation.LokNr; auftragsServices.CreateSendungsanfrage(ref saDTO); auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); TransportplanDTO planÜberBhv = pläne.Find((plan) => { return plan.TransportplanSchritte.ToList().Find((tps) => { TransportAktivitaetDTO ta = tps as TransportAktivitaetDTO; if (ta != null) { return ta.FuerTransportAufTransportbeziehung == hh_bhv.TbNr; } else { return false; } }) != null; }); for (int i = 0; i < 5; i++) { FrachtauftragDTO faDTO = new FrachtauftragDTO() { FrachtfuehrerRahmenvertrag = frv_bhv_sh, PlanEndezeit = new DateTime(), PlanStartzeit = new DateTime(), VerwendeteKapazitaetFEU = 5, VerwendeteKapazitaetTEU = 5 }; unterbeauftragungServices.SpeichereFrachtauftrag(ref faDTO); } }
public void TestPlanungEinSegmentZweiTEUSuccessDreiTEUFailWegenZuGeringerKapazität() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); saDTO.SaNr = 1; SendungspositionDTO sp1 = new SendungspositionDTO(); sp1.Bruttogewicht = TEU.MAXZULADUNG_TONS; saDTO.Sendungspositionen.Add(sp1); SendungspositionDTO sp2 = new SendungspositionDTO(); sp2.Bruttogewicht = TEU.MAXZULADUNG_TONS; saDTO.Sendungspositionen.Add(sp2); saDTO.AbholzeitfensterStart = DateTime.Parse("29.07.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("04.08.2013"); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = bremerhavenLokation.LokNr; auftragsServicesFürTransportplanungMock.Setup(aus => aus.FindSendungsanfrageEntity(saDTO.SaNr)) .Returns(saDTO.ToEntity()); ITransportplanungJob job = transportplanungsServicesFürAuftrag.StarteTransportplanungAsync(saDTO.SaNr); job.Wait(); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1); TransportplanDTO plan = pläne.First(); Assert.IsTrue(plan.TransportplanSchritte.Count == 1); Assert.IsTrue(plan.AbholungAm == DateTime.Parse("30.07.2013 08:00:00")); Assert.IsTrue(plan.LieferungAm == DateTime.Parse("01.08.2013 08:00:00")); Assert.IsTrue(plan.Dauer == TimeSpan.Parse("2")); // Fixkosten 1000 // Wartezeit 32 Stunden * 10 = 320 // Transport 2 TEU = 200 Assert.IsTrue(plan.Kosten == 1520); SendungspositionDTO sp3 = new SendungspositionDTO(); sp3.Bruttogewicht = TEU.MAXZULADUNG_TONS; saDTO.Sendungspositionen.Add(sp3); auftragsServicesFürTransportplanungMock.Setup(aus => aus.FindSendungsanfrageEntity(saDTO.SaNr)) .Returns(saDTO.ToEntity()); job = transportplanungsServicesFürAuftrag.StarteTransportplanungAsync(saDTO.SaNr); job.Wait(); List<TransportplanDTO> pläne2 = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne2.Count == 0); // Kapazität des FRV nur zwei TEU }
public void TestPlanungEinSegmentFailWegenZuSchwererSendungsposition() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); saDTO.SaNr = 1; SendungspositionDTO sp = new SendungspositionDTO(); sp.Bruttogewicht = FEU.MAXZULADUNG_TONS + 1; // Es können auf Grund des Gewichtes keine Frachteinheiten erzeugt werden saDTO.Sendungspositionen.Add(sp); saDTO.AbholzeitfensterStart = DateTime.Parse("29.07.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("04.08.2013"); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = bremerhavenLokation.LokNr; auftragsServicesFürTransportplanungMock.Setup(aus => aus.FindSendungsanfrageEntity(saDTO.SaNr)) .Returns(saDTO.ToEntity()); ITransportplanungJob job = transportplanungsServicesFürAuftrag.StarteTransportplanungAsync(saDTO.SaNr); job.Wait(); Assert.IsTrue(job.Status == TransportplanungJobStatusTyp.BeendetNok); Assert.IsTrue(job.Meldungen.Count == 1); Assert.IsTrue(job.Meldungen[0].Tag == TransportplanungMeldungTag.FrachteinheitenBildungNichtMöglich); }
public void TestPlanungEinSegmentMitFEUSuccess() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); saDTO.SaNr = 1; //// Erzeugt werden soll 1 FEU SendungspositionDTO sp = new SendungspositionDTO(); sp.Bruttogewicht = TEU.MAXZULADUNG_TONS + 1; // zu groß für TEU -> FEU soll erzeugt werden saDTO.Sendungspositionen.Add(sp); saDTO.AbholzeitfensterStart = DateTime.Parse("29.07.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("04.08.2013"); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = bremerhavenLokation.LokNr; auftragsServicesFürTransportplanungMock.Setup(aus => aus.FindSendungsanfrageEntity(saDTO.SaNr)) .Returns(saDTO.ToEntity()); ITransportplanungJob job = transportplanungsServicesFürAuftrag.StarteTransportplanungAsync(saDTO.SaNr); job.Wait(); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1); TransportplanDTO plan = pläne.First(); Assert.IsTrue(plan.TransportplanSchritte.Count == 1); Assert.IsTrue(plan.AbholungAm == DateTime.Parse("30.07.2013 08:00:00")); Assert.IsTrue(plan.LieferungAm == DateTime.Parse("01.08.2013 08:00:00")); Assert.IsTrue(plan.Dauer == TimeSpan.Parse("2")); Assert.IsTrue(plan.Frachteinheiten.Count == 1); Assert.IsTrue(plan.Frachteinheiten.Any((fe) => { return fe.FraeTyp == FrachteinheitTyp.FEU; })); // Fixkosten 1000 // Wartezeit 32 Stunden * 10 = 320 // Transport 1 FEU = 200 Assert.IsTrue(plan.Kosten == 1520); }
public void TestPlanungWähleUndBeauftrageTransportplanSuccess() { SendungsanfrageDTO saDTO = new SendungsanfrageDTO(); SendungspositionDTO sp1 = new SendungspositionDTO(); saDTO.Sendungspositionen.Add(sp1); saDTO.AbholzeitfensterStart = DateTime.Parse("01.09.2013"); saDTO.AbholzeitfensterEnde = DateTime.Parse("10.09.2013"); saDTO.AngebotGültigBis = DateTime.Now.AddHours(1); saDTO.StartLokation = hamburgLokation.LokNr; saDTO.ZielLokation = shanghaiLokation.LokNr; auftragsServices.CreateSendungsanfrage(ref saDTO); auftragsServices.PlaneSendungsanfrage(saDTO.SaNr); List<TransportplanDTO> pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1); TransportplanDTO planÜberBhv = pläne.Find((plan) => { return plan.TransportplanSchritte.ToList().Find((tps) => { TransportAktivitaetDTO ta = tps as TransportAktivitaetDTO; if (ta != null) { return ta.FuerTransportAufTransportbeziehung == hh_bhv.TbNr; } else { return false; } }) != null; }); Assert.IsTrue(planÜberBhv != null); Assert.IsTrue(planÜberBhv.TransportplanSchritte.Count == 2); auftragsServices.NimmAngebotAn(saDTO.SaNr); transportplanungsServicesFuerSendung.FühreTransportplanAus(planÜberBhv.TpNr); pläne = transportplanungsServices.FindTransportplaeneZuSendungsanfrage(saDTO.SaNr); Assert.IsTrue(pläne.Count == 1); Assert.IsTrue(pläne[0].TpNr == planÜberBhv.TpNr); // Manuell prüfen, ob folgende Daten an Frachtführer-Nachbarsystem gesendet wurden: // FraNr: 1, FrfNr: 1, FrvNr: 1, Plan Abholzeit: 03.09.2013 8:00, Plan Ende: 05.09.2013 8:00, TEU: 1, FEU: 0 // FraNr: 2, FrfNr: 2, FrvNr: 2, Plan Abholzeit: 05.09.2013 10:00, Plan Ende: 10.09.2013 10:00, TEU: 1, FEU: 0 }
private void Btn_SendungspositionHinzufuegen_Click(object sender, RoutedEventArgs e) { decimal positionGewicht = GetBruttogewichtFromTextbox(); ////BL SendungspositionDTO sp = new SendungspositionDTO() { Bruttogewicht = positionGewicht }; saDTO.Sendungspositionen.Add(sp); ////Design string position = positionenCount++ + ": " + positionGewicht; lb_hinzugefuegtePositionen.Items.Add(new TextBlock() { Text = position }); this.Height += 20; }