Christian Rott
Wie gesagt, da ich nichts über Datenmodell und -struktur weiß, kann ich leider keine konkrete, befriedigende Antwort bzw. Lösung liefern. Dazu ist das Thema zu komplex, die Fragestellung zu allgemein.
Grundüberlegung sollte immer sein: Welche Informationen benötige ich für welchen Vorgang? Beim ersten Erfassen eines Lead/Interessenten genügen vielleicht noch die Kontaktdaten des Kunden und der Produktbereich, für den er sich interessiert. Für alles weitere vom Angebot über Auftragsbestätigung und Lieferschein bis zur Rechnung braucht man detaillierte Informationen zum Kunden und den Artikeln, die man ihm anbietet, liefert oder berechnet.
Angebote, Aufträge und Rechnungen werden in der Regel mit einer entsprechenden Tabelle erfasst, welche die Kopfdaten beinhaltet (Angebots-/Auftrags-/Rechnungs-Nummer, Kunde, Datum, Gesamtpreis, Konditionen usw.), sowie eine Untertabelle, in der die einzelnen Positionen erfasst werden (Artikel, Spezifikationen, Menge, Preis). Das Prinzip kann man sich bspw. in der Ninox-Vorlage "Rechnungen" ansehen ("Neue Datenbank", Vorlage auswählen).
Der Vorgang lässt sich natürlich auch mit einem Script automatisieren. Mal angenommen, es gibt bereits Tabellen für Kunden, Artikel, Angebote und Angebotspositionen. Weiterhin angenommen, es wurde auch bereits ein Kunde zugeordnet und das im Screenshot abgebildete Auswahlfeld namens 'F-Line Mittel' enthält Artikelbezeichnungen. Dann könnte man mit einer Schaltfläche namens "Angebot erstellen" oder so anhand des ausgewählten Eintrags "F-160" den dazugehörigen Artikel-Datensatz ermitteln und ein neues Angebot mit einer Position erstellen:
let me := this;
let myArtikel := first(select Artikel where Bezeichnung = me.text('F-Line Mittel'));
let newAngebot := (create Angebote);
new.Angebot.(Kunden := me.Kunde);
let newPosition := (create Angebotspositionen);
newPosition.(Angebote := new.Angebot);
newPosition.(Artikel := myArtikel);
newPosition.(Menge := 1);
newPosition.(Preis := myArtikel.Einzelpreis);
openRecord(newAngebot)
Als Ergebnis hätte man einen neuen Datensatz in der Tabelle 'Angebote', der mit dem betreffenden Kunden verknüpft wäre und eine Angebotsposition mit einem Stück Artikel "F-160" enthielte. Zuletzt würde der neu erstellte Angebots-Datensatz geöffnet und könnte um weitere Informationen ergänzt werden.
Das aber nur als simpler theoretischer Ansatz. In der Praxis hätte man wahrscheinlich mehrere Artikel, vielleicht noch Varianten oder bestimmte Ausstattungsmerkmale, die den Preis beeinflussen. Unter den Auswahlfeldern befinden sich möglicherweise Mehrfachauswahlfelder, die anders ausgewertet werden müssen. Und und und ...