Angebote verstehen

Der Angebots-Lebenszyklus

Angefragt, entworfen, gesendet, verhandelt, angenommen oder abgelaufen — und wer jeden Schritt bewegen darf.

Ein Angebot hat ein eigenes Leben, bevor es eine Bestellung wird. Dieser Artikel beschreibt dieses Leben als Zustandsmaschine: was jeder Zustand bedeutet, wer ihn bewegen darf und was in dem Moment einfriert, in dem Sie auf Senden drücken.

So wird es funktionieren. Die Angebots-App ist geplant und auf Ihrem Tenant noch nicht verfügbar. Das Modell auf dieser Seite ist entschieden; die Screens, die es beschreibt, kommen mit der App.

Das Szenario

Ein Instandhaltungseinkäufer bei einem Maschinenbauer braucht 500 Meter Hydraulikschlauch in DN 12, geliefert an zwei Standorte, dazu 40 Verschraubungen. Ihr Katalog bepreist alles davon. Er fragt trotzdem ein Angebot an, weil seine Einkaufsrichtlinie über 5.000 € zwei schriftliche Angebote verlangt — und weil er die Lieferaufteilung schwarz auf weiß will.

Ihr Innendienst kalkuliert: Schlauch zu 4,80 € statt der 5,60 €-Staffel, Verschraubungen zum Listenpreis, Fracht separat angeboten. Das Angebot geht an einem Dienstag raus, vier Wochen gültig. Am Donnerstag fragt der Einkäufer, ob 600 Meter die Zahl ändern. Tun sie. Sie senden eine zweite Version. Elf Tage später legt sein ERP eine Bestellung gegen Version 2 an.

Diese ganze Abfolge — von der Anfrage bis zur Bestellung — ist der Angebots-Lebenszyklus. Jeder Zustand unten existiert, weil ihn jemand in dieser Geschichte gebraucht hat.

Die Zustände

ZustandHeißtBewegt von
requestedEin Käufer hat gefragt. Noch ist nichts bepreist.Dem Käufer, aus der Storefront — oder einem Vertriebler, der einen Anruf erfasst
draftJemand arbeitet daran. Bearbeitbar. Für den Käufer unsichtbar.Ihrem Innendienst
pending_approvalRabatt oder Wert übersteigen, was der Autor allein gewähren darf.Der Autor reicht ein; ein Freigeber entscheidet
sentDas Angebot ist draußen. Preise eingefroren. Nicht bearbeitbar.Wer die Sendeberechtigung hält
acceptedDer Käufer hat Ja gesagt.Dem Käufer in der Storefront, oder einem Vertriebler, der eine Annahme per Mail erfasst
declinedDer Käufer hat Nein gesagt, mit Grund.Dem Käufer, oder einem Vertriebler, der den Verlust erfasst
expiredvalid_until ist ohne Antwort verstrichen.Niemandem. Der Uhr.
cancelledVon Ihnen zurückgezogen.Ihrem Innendienst
convertedEs existiert jetzt eine Bestellung dazu.Dem System, bei der Umwandlung

Vier davon sind endgültig: declined, expired, cancelled und converted. Die übrigen können sich noch bewegen.

requested ist nicht draft. Eine Anfrage ist der Text des Käufers: Mengen, ein Liefertermin, eine Freitextnotiz, manchmal eine angehängte Stückliste. Ein Entwurf ist Ihre Antwort darauf. Die beiden auseinanderzuhalten ist das, was Ihre Antwortzeit messbar macht — und was verhindert, dass eine halb bepreiste Antwort je einen Käufer erreicht.

Die zwei Übergänge, auf die es ankommt

Alles andere ist Buchführung. Diese zwei ändern, was die Plattform tun darf.

draftsent friert die Preise ein

Ein Angebot in draft zeigt lebende Preise. Öffnen Sie es morgen, können sich die Zahlen bewegt haben, denn sie werden aufgelöst wie jeder andere Preis der Plattform; siehe So funktioniert die Preisfindung.

Mit dem Senden hört das auf. Jede Zeile speichert den für sie aufgelösten Einzelpreis, die Mengenstufe, aus der er kam, die Währung, die Netto/Brutto-Basis und den Steuersatz — und löst nie wieder auf. Ein Angebot ist ein Snapshot, keine Live-Ansicht.

Das ist keine Bequemlichkeit. Es ist der Unterschied zwischen einem Angebot und einer Preisauskunft. Ein Käufer, der ein schriftliches Angebot erhält und auf der Auftragsbestätigung eine andere Zahl findet, hat einen Grund bekommen, anzurufen statt zu klicken — und genau diesen Fehlerfall soll die ganze Plattform vermeiden.

acceptedconverted erzeugt eine Bestellung

Die Annahme ist ein kaufmännischer Fakt. Die Umwandlung ist ein Systemereignis, und die Trennung ist Absicht: Die entstehende Bestellung unterliegt denselben Freigaberegeln wie jede andere. Ein Käufer mit orders.request, aber ohne orders.create nimmt ein Angebot an und bekommt eine Bestellung in pending, die auf seinen eigenen Freigeber wartet; die zwei Türen in diesen Zustand stehen in Angebote, Freigaben und Verhandlung.

Was „eingefroren“ tatsächlich umfasst

Der Einzelpreis ist der offensichtliche Teil. Ein Angebot, über das sich später streiten lässt, ist eines, bei dem diese Dinge nicht eingefroren waren:

Beim Senden eingefrorenWarum es sein muss
Einzelpreis je ZeileDas Angebot
Die Mengenstufe, aus der er kamDamit eine Teilannahme zu geringerer Menge sichtbar ein anderer Preis ist
WährungEin CHF-Angebot wird kein EUR-Angebot, weil sich der Markt des Käufers geändert hat
Netto- oder Brutto-BasisSonst bedeutet dieselbe Zahl zwei Dinge — siehe Währungen und Steuern
Steuersatz und SteuerklasseDie Bruttosumme auf dem PDF muss im März noch herleitbar sein
Rundungsmodus und GenauigkeitZwei Systeme, die verschieden runden, erzeugen einen Zwei-Cent-Streit auf einem 40.000-€-Angebot
Fracht und ZuschlägeDer angebotene Palettenpreis ist Teil des Angebots

Eine angebotene Zeile hält genug fest, um aus sich selbst nachgerechnet zu werden. Können Sie die Summe eines gesendeten Angebots nicht aus dem Angebot selbst reproduzieren, ohne die Preisfindung irgendetwas zu fragen, ist der Snapshot unvollständig.

Ein gesendetes Angebot zu bearbeiten ist nicht erlaubt, und Sie sollten es auch nicht wollen. Der Käufer hält ein PDF mit einer Zahl darauf. Den Datensatz hinter dieser Zahl ohne neue Version zu ändern zerstört die Nachvollziehbarkeit und, im Streitfall, Ihre Position. Überarbeiten Sie stattdessen: eine neue Version, ein neues Gültigkeitsdatum, ein sichtbarer Vorgänger. Siehe Verhandeln und überarbeiten.

Gültigkeit und Ablauf

valid_until ist ein Zeitstempel, kein Datum. Er wird in der Zeitzone des Tenants ausgewertet: Ein „bis 30. April“ gültiges Angebot läuft am Ende des 30. April Ortszeit ab — nicht um Mitternacht UTC, was für einen deutschen Tenant im Sommer zwei Stunden zu früh wäre und Leute schon Abschlüsse gekostet hat.

Der Ablauf ist passiv. Nichts wird gelöscht, kein Preis neu berechnet, und der Käufer kann das Dokument weiter öffnen. Was sich ändert: Die Aktion Annehmen ist weg. Ein abgelaufenes Angebot lässt sich nicht umwandeln, denn die Preise darin waren ein Angebot für einen Zeitraum, der geendet hat.

Setzen Sie eine Standard-Gültigkeit in den Angebotseinstellungen und übersteuern Sie sie je Angebot. Dreißig Tage sind im Mittelstand ein üblicher Standard. Wählen Sie bewusst: Eine Gültigkeit, die länger ist als die Stabilität Ihrer eigenen Einkaufspreise, ist ein Versprechen, das Sie womöglich nicht halten können — und eine, die kürzer ist als der Freigabezyklus des Käufers, garantiert den Ablauf.

Was umgewandelt wird, und was nicht

Die Annahme kann teilweise sein. Der Käufer nimmt den Schlauch und nicht die Verschraubungen. Zwei ehrliche Arten, das zu modellieren, und eine davon müssen Sie als Regel festlegen:

  • Alles oder nichts. Das Angebot ist ein kaufmännisches Paket; eine Teilannahme ist ein Gegenangebot und wird eine neue Version. Richtig, wo der Preis am ganzen Warenkorb hing.
  • Annahme je Zeile. Der Käufer nimmt Zeilen einzeln an. Die Bestellung trägt die angenommenen Zeilen; der Rest des Angebots schließt als declined.

Die zweite ist freundlicher, die erste sicherer. Haben Sie einen Bündelrabatt wegen des Gesamtvolumens gegeben, verschenkt die Annahme je Zeile den Rabatt ohne das Volumen dahinter.

So wird das in der Revenue Cloud aussehen

Angebote leben unter Sales › Angebote. Die Tabelle zeigt Nummer, Konto, Wert, Zustand, Version und die Tage bis zum Ablauf — sortiert nach Ablauf, sodass der Kopf der Liste die Nachfassliste ist. Anfragen kommen unter Sales › Angebote › Anfragen an und bleiben dort, bis jemand daraus entwirft.

Eine Angebotsnummer kommt aus einem Nummernkreis derselben Form wie Ihre Bestellnummern (Präfix, Auffüllung, Zähler, Schritt), konfiguriert unter Configuration › Nummernkreise. Geben Sie Angeboten einen eigenen Kreis — AN-000412 neben SO-000198 sagt jedem, welches Dokument er in der Hand hält.

Weiter