Artikel Attribute in Rechnungs-PDF anzeigen

Hallo,

kann man in der Rechnung die Attribute eines Artikels ausgeben?

Ich habe es mit $oOrderArt->getAttributes() und dann mit einer foreach auslesen versucht.
Es scheitert allerdings schon an $oOrderArt->getAttributes().

Hallo morhinio :slight_smile:

getAttributes() ist sicherlich schon ein guter Ansatz! Aber könntest du bitte dein Vorgehen genauer spezifizieren. Ohne mehr Hintergrundwissen wie du es versuchst zu lösen kann man dir nicht so gut helfen. Vielen Dank!

Viele Grüße
indianer3c

Ich habe es wie folgt in der myorder.php versucht:

// product title
$orderArtTitle = $oOrderArt->oxorderarticles__oxtitle->getRawValue();
$attributes = $oOrderArt->getAttributes();
foreach ($attributes as $oAttr) {
    if ($oAttr->oxattribute__oxtitle->value == "Farbe"){
        $orderArtTitle .= $oAttr->oxattribute__oxvalue->value;
    }
}
$oPdf->text( 47, $iStartPos, substr( strip_tags($this->_replaceExtendedChars($orderArtTitle, true ) ), 0, 58 ) );

Hallo morhinio :slight_smile:

die Variable $oOrderArt dürfte nur die Daten eines Artikels einer Bestellung aus der Tabelle oxorderarticles enthalten. Dadurch hast du aber schon mal die Referenz auf den Artikel mit der Spalte oxorderarticles.OXARTID und kannst über $oOrderArt->oxorderarticles__oxartid->getRawValue() darauf zugreifen.

Mit der Artikel-ID kannst du jetzt auf die Tabelle oxobject2attribute zugreifen und über einen Join mit der Tabelle oxattribute die Attribute des Artikels ermitteln.

Viele Grüße
indianer3c


...
// product list
foreach ( $this->_oArticles as $key => $oOrderArt ) {
  ...
  $oProduct = oxNew( 'oxArticle' );
  $oProduct->load( $oOrderArt->oxorderarticles__oxartid->getRawValue() );
  $attributes = $oProduct->getAttributes();
  foreach ($attributes as $oAttr) { 
    if ($oAttr->oxattribute__oxtitle->value == "Farbe"){ 
        $orderArtTitle .= $oAttr->oxattribute__oxvalue->value; 
    } 
  } 
  $oPdf->text( 47, $iStartPos, substr( strip_tags($this->_replaceExtendedChars($orderArtTitle, true ) ), 0, 58 ) ); 
  ...
}
...

so könntest du es z.B. probieren :slight_smile:

Hat funktioniert.

Vielen Dank für deine Hilfe und auch für die Erklärung.

Super! Gern geschehen :slight_smile: