Auswahl Druckformular
Hallo zusammen.
Ich habe verschiedene Druckvorlagen für Rechnungen, je nachdem ob mit oder ohne Spesen/Rabatt und in D und E, d.h. 8 verschiedene Vorlagen. Jetzt möchte ich 8 verschiedene Buttons machen, die das entsprechende Formular erstellen und sichern.
Ich habe das Script aufgrund der Muster-DB "Rechungen" geschrieben:
let myFileName := Kunde.'Firma kurz' + format(if ReDatum then ReDatum else today() end, "YYMMDD") + ".pdf";
importFile(this, printAndSaveRecord(this, "Rechnungskopie PDF"), myFileName);
'Rechnungskopie PDF' := myFileName
Kann ich irgendwo das Formular definieren?
9 Antworten
-
Habe einen workaround gefunden. Es wird die letzte Vorlage, die man gewählt hat, genutzt. Da man ja die Rechnung eh kontrolliert, sollte es also auch ohne viele Knöpfe gehen.
-
Hallo Marco, du könntest natürlich auch ein Auswahlfeld vor den Button setzen, z.B. mit den Werten "Rechnung", "Angebot", "Lieferschein".... usw...
Deine Drucklayouts benennst Du dann genau gleich und liest Dir aus dem Auswahlfeld den Namen aus
importFile(this, printAndSaveRecord(this, text(AUSWAHLFELD)),myFileName
-
Hallo Tobias. Danke für den Tipp. Mit dem Befehl wird mir das Dokument als "Lieferschein" gesichert. Die Frage ist, wie stelle ich sicher, dass die richtige Druckvorlage gewählt wird?
Es gibt 8 Druckvorlagen für Rechnungen.
Wenn ich also z.B. im Auswahlfeld "Rechnung mit Spesen" wähle, müsste die entsprechende Druckvorlage gewählt werden, ohne dass ich diese vorher manuell anwähle. Das wäre sehr elegant und natürlich ein nice to have.
-
Wenn Du im Drucklayouteditor dein Layout "Rechnung mit Spesen" nennst, und im Auswahlwert die Option auch genau so heißt, wird genau das passieren - ninox nutzt dann dieses Layout und generiert Dir dein PDF
importFile(this, printAndSaveRecord(this, text(AUSWAHLFELD), myFileName)
-
Beim printAndSaveRecord() wird ja der Name des Drucklayouts mit angegeben (in obigem Beispiel "Rechnungskopie PDF"). Diesen Namen kann man auch dynamisch einsetzen. Das einfachste wäre, wenn die Namen der Drucklayouts exakt(!) mit den Texteinträgen des Auswahlfeldes (AUSWAHL) übereinstimmen würden. Dann könnte man es so machen:
let myLayout := text(AUSWAHL);
importFile(this, printAndSaveRecord(this, myLayout), myFileName)
Ansonsten könnte man den Wert auch über eine switch-Konstruktion zuweisen:
let myLayout := switch text(AUSWAHL) do
case "Auswahl 1": "Drucklayout 1"
case "Auswahl 2": "Drucklayout 2"
usw. ...
end
importFile(this, printAndSaveRecord(this, myLayout), myFileName)
Nebenbei: Ich weiß nicht, wie groß die Unterschiede zwischen den Drucklayouts sind. Falls da aber nur ein paar Variablen und Bezeichnungen ausgetauscht werden, könnte man als ganz anderen Ansatz auch überlegen, nur ein Drucklayout zu verwenden und dies in Abhängigkeit der Auswahl mit verschiedenen Inhalten zu füllen. Dann müsste man bei grundlegenden Änderungen nur das eine Drucklayout anpassen und nicht acht.
-
Ach, wieder zu spät. Na ja ...
-
Hallo zusammen. Vielen Dank für die Klärung. Ich mach's jetzt genau so. @Copytexter: Die Unterschiede sind recht gross, d.h. Deutsch und Englisch, unterschiedliche Tabellen, etc. Da war es für mich (Anfänger) einfacher, ein paar Drucklayouts zu machen. Super, euren Support!
-
Bin begeister! Wir haben vor zwei Jahren unternehmensweit ein CRM eingeführt. Hat viel gekostet, ist aufwändig und kann gewisse Abläufe, die wir eigentlich brauchen immer noch nicht. Ganz zu schweigen, was es kostet, ein simples Formular zu erstellen. Nochmals Danke!
-
Content aside
- vor 3 JahrenZuletzt aktiv
- 9Antworten
- 552Ansichten