Eigen attribuut toevoegen aan bestellingen en winkelwagen items

Recentelijk was ik op zoek naar een goede manier om een eigen attribuut toe te voegen aan bestelling items (sales_flat_order_item) en winkelwagen items (sales_flat_quote_item). In dit artikel leg ik je op een simpele manier uit hoe je een eigen attribuut kunt toevoegen aan bestellingen en winkelwagen items.

Custom attributes in Magento

photo credit: danielfoster437 via photopin cc

Ik ga er vanuit dat je al een eigen module hebt aangemaakt, en dat je weet om te gaan met upgrade scripts. We gaan de attribuut aanmaken met behulp van een upgrade script. Voeg onderstaande code toe aan de config.xml van je module.

Maak nu een nieuw bestand aan genaamd: upgrade-0.5.0-0.5.1.php, gebruik hierbij je eigen versie nummering. In dit voorbeeld is mijn module CustomAttributes van versie 0.5.0, en wij gaan deze bijwerken naar versie 0.5.1. Vandaar de bestandsnaam: upgrade-0.5.0-0.5.1.php, Magento voert deze upgrade scripts op chronologische volgorde uit. We gaan een attribuut aanmaken waar een getal in kan worden opgeslagen, bijvoorbeeld: external_id.

Na het uitvoeren van bovenstaand upgrade script zul je een nieuwe kolom zien in de database tabel “sales_flat_order_item” en “sales_flat_quote_item“. Nu gaan we het mechanisme implementeren die de waardes converteert naar de uiteindelijk de tabel “sales_flat_order_item“. Open de config.xml van je module en voer onderstaande regels toe op de juiste plek:

Bovenstaande regel maakt de external_id attribuut beschikbaar om te converteren naar de juiste tabellen. Dit is tevens onze volgende stap in dit proces, en hiervoor gaan we een observer gebruiken. Voer onderstaande XML code toe aan de config.xml van je module:

De XML regels hierboven defineren dat de waarde in de kolom external_id van “sales_quote_item” naar “order_item” moet worden geconverteerd, en vica versa.

Defineer vervolgens een observer in je module door deze code toe te voegen aan de config.xml:

Open app/code/local/Marcobax/CustomAttributes/Model/Observer.php (of maak deze aan) en voer onderstaande code toe:

Dat is het! Plaats een (test) bestelling en kijk in de database tabel “sales_flat_order_item” en “sales_flat_quote_item” en je zult zien dat de waarde voor external_id 123456 is.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *