Plugin: sales Feld aus s_articles_details in Detailansicht

Hallo Community, ich würde gerne das Sales-Feld aus der Datenbanktabelle s_articles_details in der Detailansicht eines Artikels im Backend anzeigen lassen und ändern können. Dazu habe ich mir ein Plugin erstellt. public function postDispatchBackendArticle(Enlight\_Event\_EventArgs $args) { $args-\>getSubject()-\>View()-\>addTemplateDir( $this-\>Path() . 'Views/' ); if ($args-\>getRequest()-\>getActionName() === 'load') { $args-\>getSubject()-\>View()-\>extendsTemplate( 'backend/Articlesales/article/model/article.js' ); $args-\>getSubject()-\>View()-\>extendsTemplate( 'backend/Articlesales/article/view/detail/base.js' ); } } Somit kann ich die Ansicht erweitern. Die article.js erweitere ich wie folgt: //{block name="backend/article/model/article/fields" append} { name: 'sales', type: 'int', useNull: true }, //{/block} Und die base.js: //{block name="backend/article/view/detail/base" append} Ext.override(Shopware.apps.Article.view.detail.Base, { createRightElements: function() { var me = this, fields = me.callParent(arguments); fields.push({ xtype: 'textfield', name: 'mainDetail[sales]', dataIndex: 'mainDetail[sales]', store: me.article, translatable: false, allowBlank: true, fieldLabel: 'Verkauf' }); return fields; } }); //{/block} Damit wird mir zumindest schon einmal ein Feld mit Verkauf oben rechts angezeigt. Leider werden mir noch keine Verkäufe angezeigt und speichern kann ich auch nichts. Wie kann ich das Plugin oder die Templatedateien erweitern, damit mir die Daten aus dem Feld sales der Datenbanktabelle s_articles_details angezeigt werden und ich diese auch ändern kann? Vielen Dank im Voraus! Viele Grüße Mathias

Hallo, das Problem ist, dass dieses Feld im Artikel Datenbank-Model nicht vorhanden ist, deshalb wird das auch nicht angezeigt. Wir werden das mit 4.0.8 anpassen.

Was noch besser wäre, da das sales-field ja Stornos nicht berücksichtigt: Du könntest dich per Event in die loadStoresAction (Backend-Controller Article) subscriben und dort die View-Variable data[article] modifizieren - also in etwa wie folgt: $data = $this-\>getSubject()-\>View(); $article = $data["data"]["article"]; $articleId = $article["id"]; $article["sales"] = Shopware()-\>Db()-\>fetchOne(" SELECT SUM(quantity) FROM s\_order\_details, s\_order WHERE articleID = ? AND s\_order.id = s\_order\_details.orderID AND s\_order.status NOT IN (-1,5) ",array($articleId)); $data["data"]["article"] = $article; $this-\>getSubject()-\>View()-\>data = $data;

1 „Gefällt mir“

Vielen Dank für die Hilfe! Ich habe es mittlerweile anders gelöst. Zuerst habe ich im Backend ein Attribut (attr20) unter Grundeinstellungen zugewiesen. Dann habe ich zwei Trigger und zwei Procedures in der Datenbank erstellt. Wenn die Tabelle s_articles_details aktualisiert wird, wird auch die Tabelle s_articles_attributes aktualisert und anders herum. DELIMITER $$ CREATE TRIGGER articles\_details\_update AFTER UPDATE ON s\_articles\_details FOR EACH ROW BEGIN CALL update\_article\_attributes(NEW.articleID); END; [code] DELIMITER $$ CREATE PROCEDURE update_article_attributes(IN id INT) BEGIN DECLARE tmpAttr20 INTEGER; DECLARE tmpSales INTEGER; SELECT attr20 INTO tmpAttr20 FROM s_articles_attributes WHERE articleID= id; SELECT sales INTO tmpSales FROM s_articles_details WHERE articleID = id; IF tmpAttr20