Auftrags-Controller: Lieferadresse: Auswahlliste richtig zusammenbauen
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Thu, 3 Sep 2020 11:28:42 +0000 (13:28 +0200)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Thu, 3 Sep 2020 12:41:56 +0000 (14:41 +0200)
Das behebt einen Fehler, wenn der Kunde nur eine Lieferadresse hat und der
Auftrag geladen wird. Dann wurde keine Lieferadresse angeboten.

Ist nur eine Lieferadresse vorhanden, so wird diese nicht als (erstes)
Array-Element geliefert wird, sondern als Hash.
Anders, wenn mehrere Lieferadressen vorhanden sind - dann wird ein Array
geliefert.
Die import-Methode hätte also einmal als 'shiptos.import([shipto])' und
einmal als 'shiptos.import(shipto)' aufgerufen werden müssen.
Um das zu vermeiden, werden die Adressen jetzt in einer Schleife mit 'push'
hinzugefügt.

Der Fehler kam mit commit "Auftrags-Controller: individuelle Lieferadresse"
(199bd497fa158b819070767fa737b2e23d164b96) rein.

templates/webpages/order/tabs/basic_data.html

index c413fb9..b7086a8 100644 (file)
             <td>
               <span id='shipto_selection' [%- IF !SELF.order.${SELF.cv}.shipto.size %]style='display:none'[%- END %]>
                 [% shiptos = [ { shipto_id => "", displayable_id => LxERP.t8("No/individual shipping address") } ] ;
+                   FOREACH s = SELF.order.${SELF.cv}.shipto ;
+                     shiptos.push(s) ;
+                   END ;
                    L.select_tag('order.shipto_id',
-                                 shiptos.import(SELF.order.${SELF.cv}.shipto),
+                                 shiptos,
                                  default=SELF.order.shipto_id,
                                  title_key='displayable_id',
                                  value_key='shipto_id',