Erstellt vor 23 Monaten
Geschlossen vor 14 Monaten
#2247 closed Fehler (fixed)
wiederkehrende Rechnungen: automatischer Druck enthält nicht alle Variablen
| Erstellt von: | bibi@… | Verantwortlicher: | m.bunkus@… |
|---|---|---|---|
| Priorität: | normal | Meilenstein: | |
| Komponente: | kivitendo ERP | Version: | 3.0.0 unstable |
| Schweregrad: | normal | Stichworte: | |
| Beobachter: |
Beschreibung
Beim automatischen Drucken von wiederkehrenden Rechnungen werden z.B: folgende Vorlagen-Variablen nicht berücksichtigt:
alle template_meta.*
Variablen für jeden Posten auf der Rechnung:
currency
drawing, ean, image, make, model, weight
Anhänge (2)
Änderungshistorie (14)
Geändert vor 23 Monaten durch bibi@…
comment:1 Geändert vor 23 Monaten durch bibi@…
Geändert vor 23 Monaten durch bibi@…
comment:2 Geändert vor 23 Monaten durch bibi@…
Der Patch bug_2247_auto_print_part2.diff setzt $form->{currency} = $form->{curr} in FlattenToForm?. Damit erscheint dann auch currency im Ausdruck.
comment:3 Geändert vor 23 Monaten durch m.bunkus@…
Äh.... dein part1 ist erst einmal eine NOOP -- weil in der existierenden unstable sämtliche Aufrufe von prepare_parts_for_printing ohne Parameter erfolgen. Daher gehe ich einfach mal davon aus, dass du in kundenspezifischem oder noch nicht in die unstable gepushtem Code die Funktion mit entsprechenden Parametern aufrufst. part1 tut aber nicht weh und kann dementsprechend committet werden.
Bei part2 hätte ich höchstens zu bemängeln, dass curr weiter oben erhalten bleibt. Andererseits kann ich nicht sagen, ob curr nicht doch in irgend einer Situation benötigt wird, nachdem das Objekt durch flatten_to_form laufen gelassen wurde. Insofern: so lassen.
Summary: beide so committen.
comment:4 Geändert vor 22 Monaten durch bibi@…
Du hast Recht. Bei part1 habe ich tatsächlich vergessen, die Änderung in SL/IS.pm mit anzuhängen:
IC->prepare_parts_for_printing();
wird zu
IC->prepare_parts_for_printing(myconfig => $myconfig, form => $form);
Da wäre noch die Frage, ob das in OE.pm und DO.pm (order_details) auch gemacht werden soll. Zumindest OE::order_details bekommt myconfig und form auch übergeben.
comment:5 Geändert vor 22 Monaten durch bibi@…
comment:6 Geändert vor 22 Monaten durch m.bunkus@…
Es lohnt sich nur und ausschließlich dann, $form und $myconfig an Funktionen explizit zu übergeben, wenn jemals die Chance bestehen sollte, dass sie sich von den globalen Variablen $::form und %::myconfig unterscheiden. Im Allgemeinen ist das bei Code in den alten Modulen in SL/*.pm nicht der Fall.
comment:7 Geändert vor 22 Monaten durch m.bunkus@…
In der Tat ist es so, dass die Funktion auch auf lokalen Kopien arbeiten können muss (von SL/BackgroundJob/CreatePeriodicInvoice.pm über prepare_for_printing in SL/Form.pm). Insofern sollte das auch auf order_details ausgedehnt werden, ja.
comment:8 Geändert vor 22 Monaten durch bibi@…
comment:9 Geändert vor 22 Monaten durch bibi@…
Mit den commits 79ae46a435c65fa188981f6b5c61e0e15d32fb23/erp und c5651754689f5072d6f9896af9c85312128d6e18/erp ist alles bis auf die fehlenden template_meta.* behoben. Diese werden beim "normalen" Drucken in bin/mozilla/io.pl (sub print_form) gesetzt.
Evtl. ist es sinnvoll, print_form und prepare_for_printing in SL/Form.pm irgendwie zu verheiraten, da da vieles gleich oder ähnlich ist.
comment:10 Geändert vor 22 Monaten durch bibi@…
comment:11 Geändert vor 22 Monaten durch bibi@…
comment:12 Geändert vor 14 Monaten durch m.bunkus@…
- Lösung auf fixed gesetzt
- Status von new nach closed geändert
- Verantwortlicher auf m.bunkus@… gesetzt

Angehängter diff (bug_2247_auto_print_part1.diff) behebt einen Teil des Bugs.