/// <summary> /// Triggert Verandanfrage bei WaWi-Subsystem und gibt aus den zurückkommenden Lieferdaten das späteste zurück. /// </summary> /// <param name="angebot"></param> /// <returns>Das späteste Datum, das ein Posten (Produkt) hat bis es ausgeliefert werden kann, sprich im Lager vorätig ist.</returns> private DateTime VersandanfrageTriggern(Angebot angebot) { //Posten umwandeln um Versandanfrage damit zu stellen IDictionary <int, int> produktnr_Anzahl = new Dictionary <int, int>(); foreach (Posten posten in angebot.Posten) { produktnr_Anzahl.Add(posten.ProduktId, posten.Menge); } //Versandanfrage machen IList <Produkt_LieferdatumTyp> produkt_LieferdatumList = this.VersandAnfrage(produktnr_Anzahl); //spätestes Lieferdatum finden DateTime spaetestesLieferdatum = DateTime.Today; foreach (Produkt_LieferdatumTyp produkt_Lieferdatum in produkt_LieferdatumList) { if (spaetestesLieferdatum < produkt_Lieferdatum.AusliferbarAb) { spaetestesLieferdatum = produkt_Lieferdatum.AusliferbarAb; } } return(spaetestesLieferdatum); }
internal Auftrag(Angebot angebot, string auftragId, DateTime beauftragtAm, DateTime letzterPostenLieferbar, bool istLieferbar = false) { this.AuftragId = auftragId; this.Angebot = angebot; this.BeauftragtAm = beauftragtAm; this.LetzterPostenLieferbar = letzterPostenLieferbar; this.IstLieferbar = istLieferbar; //Auftrag kann nicht abgeschlossen sein wenn er gerade erzeugt wurde IstAbgeschlossen = false; }
internal void DeleteAngebot(Angebot angebot) { using (var session = sessionFactory.OpenSession()) { using (var transaction = session.BeginTransaction()) { #if DEBUG Console.WriteLine("Löschen von: {0}", angebot); #endif session.Delete(angebot); transaction.Commit(); } } }
internal void DeleteAuftrag(Angebot auftrag) { using (var session = sessionFactory.OpenSession()) { using (var transaction = session.BeginTransaction()) { session.Delete(auftrag); transaction.Commit(); #if DEBUG Console.WriteLine("Gelöscht: {0}", auftrag); #endif } } }
/// <summary> /// Erstellt einen Auftrag aus einem zuvor erstellten Angebot. /// </summary> /// <param name="angebotId"></param> /// <param name="beauftragtAm"></param> /// <returns></returns> internal Auftrag AuftragErstellen(string angebotId, DateTime beauftragtAm) { Angebot angebot = this.AngebotVerwalter.GetAngebot(angebotId); // Triggert von Verandanfrage bei WaWi-Subsystem und gibt aus den zurückkommenden Lieferdaten das späteste zurück. DateTime spaetestesLieferdatum = this.VersandanfrageTriggern(angebot); Auftrag auftrag = this.AuftragVerwalter.AuftragErstellen(angebot, GetNextIdForType <Auftrag>(), beauftragtAm, spaetestesLieferdatum); //informiere AuslieferungsKomponente und Rechnungskomponente und setzt auftrag.IstLieferbar = true //wenn alles heute lieferbar ist this.Auslieferung_RechnungTriggern(auftrag, spaetestesLieferdatum); return(auftrag); }
/// <summary> /// Nutzbar wenn kein Angebot vorliegt, sondern direkt Beauftragt wird, /// Mehtode legt intern ein Proxy-Angebot an das vom Moment der Erstellung 14 Tage gültig ist /// </summary> /// <param name="kundennummer"></param> /// <param name="lieferadresse"></param> /// <param name="rechnungsadresse"></param> /// <param name="posten"></param> /// <param name="beauftragtAm"></param> /// <returns></returns> internal Auftrag AuftragErstellen(string kundennummer, AdressTyp lieferadresse, AdressTyp rechnungsadresse, IDictionary <ProduktTyp, int> posten, DateTime beauftragtAm) { //14 Tage auf die gegenwertige DateTime rechnen um das Proxy-Angebot für die Auftragsabwicklung valide zu hatlen DateTime gueltigBis = DateTime.Today.Add(new TimeSpan(14, 0, 0, 0)); Angebot angebot = this.AngebotErstellen(kundennummer, lieferadresse, rechnungsadresse, posten, DateTime.Now, gueltigBis); // Triggert von Verandanfrage bei WaWi-Subsystem und gibt aus den zurückkommenden Lieferdaten das späteste zurück. DateTime spaetestesLieferdatum = this.VersandanfrageTriggern(angebot); Auftrag auftrag = this.AuftragVerwalter.AuftragErstellen(angebot, GetNextIdForType <Auftrag>(), beauftragtAm, spaetestesLieferdatum); //informiere AuslieferungsKomponente und Rechnungskomponente und setzt auftrag.IstLieferbar = true //wenn alles heute lieferbar ist this.Auslieferung_RechnungTriggern(auftrag, spaetestesLieferdatum); return(auftrag); }
internal Angebot AngebotErstellen(string angebotId, string kundennummer, AdressTyp lieferadresse, AdressTyp rechnungsadresse, IDictionary <ProduktTyp, int> posten, DateTime gueltigAb, DateTime gueltigBis) { Angebot angebot = new Angebot(angebotId, kundennummer, lieferadresse, rechnungsadresse, posten, gueltigAb, gueltigBis); //persist the new angebot using (ISession session = sessionFactory.OpenSession()) { using (var transaction = session.BeginTransaction()) { #if DEBUG Console.WriteLine("Speichern von: {0}", angebot); #endif session.Save(angebot); transaction.Commit(); } } return(angebot); }
internal Auftrag AuftragErstellen(Angebot angebot, string auftragId, DateTime beauftragtAm, DateTime letzterPostenLieferbar, bool istLieferbar = false) { Auftrag auftrag = new Auftrag(angebot, auftragId, beauftragtAm, letzterPostenLieferbar, istLieferbar); #if DEBUG Console.WriteLine("Speichern von: {0}", auftrag); #endif //persist the new auftrag using (ISession session = sessionFactory.OpenSession()) { using (var transaction = session.BeginTransaction()) { session.Save(auftrag); transaction.Commit(); } } return(auftrag); }
internal IList <PostenTyp> GetPosten() { return(Angebot.GibTransportObjekt().Posten); }