{"id":4772,"date":"2018-12-21T00:00:00","date_gmt":"2018-12-21T00:00:00","guid":{"rendered":"https:\/\/dev-redoo-unify.oder.media\/1648\/"},"modified":"2019-07-05T12:59:50","modified_gmt":"2019-07-05T12:59:50","slug":"vt6-benutzerdefinierte-produktpreisfelder-fur-spezielle-module-verwenden","status":"publish","type":"post","link":"https:\/\/redoo-networks.com\/de\/vt6-benutzerdefinierte-produktpreisfelder-fur-spezielle-module-verwenden\/","title":{"rendered":"[VT6] benutzerdefinierte Produktpreisfelder f\u00fcr spezielle Module verwenden"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row row_type=&#8220;row&#8220; stretch_row_type=&#8220;no&#8220;][vc_column][vc_column_text]Diese Anleitung erfordert einen sicheren Umgang mit der PHP Sprache, da Sie die Einstellungen im Code anpassen m\u00fcssen.<br \/>\nSie m\u00fcssen wissen, wie unser <a href=\"https:\/\/support.redoo-networks.com\/knowledgebase\/eventhandler-module\/\" target=\"_blank\" rel=\"noopener noreferrer\">EventHandler-Modul<\/a> funktioniert und dieses Modul muss vor dem Start installiert sein.<\/p>\n<p><strong>Diese Anleitung behandelt das folgende Problem:<\/strong><br \/>\nSie haben ein Feld &#8222;Einkaufspreis&#8220; im Produktmodul und m\u00f6chten den Preis aus diesem Feld automatisch laden, anstatt den Standardeinheitspreis, wenn Sie eine Bestellung oder ein anderes benutzerdefiniertes Bestandsmodul anlegen.<\/p>\n<p>Um dies zu l\u00f6sen, definieren wir 3 Events. Wenn Sie Colorizer mit Datei\u00e4nderungen installiert haben, m\u00fcssen Sie nur 2 neue Events in vTiger Source hinzuf\u00fcgen.<\/p>\n<p>Erstellen Sie zun\u00e4chst einen EventHandler, wie ich es in der <a href=\"https:\/\/support.redoo-networks.com\/knowledgebase\/eventhandler-module\/\">EventHandler-Beschreibung<\/a> beschrieben habe. Sie ben\u00f6tigen diese Datei, um die benutzerdefinierten Zuordnungen vornehmen zu k\u00f6nnen.<\/p>\n<p>Beginnen wir mit der Implementierung der Ereignisse im vTiger CRM-Code.<\/p>\n<p>Datei: <strong>layouts\/vlayout\/modules\/Inventory\/resources\/Edit.js<\/strong> ~Line 1712<\/p>\n<p>Suche:<\/p>\n<pre>var dataUrl = \"index.php?module=Inventory&amp;action=GetTaxes&amp;record=\"+selectedItemData.id+\"&amp;currency_id=\"+jQuery('#currency_id option:selected').val();<\/pre>\n<p>Ersetze durch:<\/p>\n<pre>var dataUrl = \"index.php?module=Inventory&amp;action=GetTaxes&amp;record=\"+selectedItemData.id+\"&amp;currency_id=\"+jQuery('#currency_id option:selected').val()+\"&amp;src_module=\" + jQuery('#module').val();<\/pre>\n<p>Datei: <strong>modules\/Products\/models\/Record.php ~Line 17<\/strong><\/p>\n<p><strong>Suche:<\/strong><\/p>\n<pre>return 'index.php?module=Inventory&amp;action=GetTaxes&amp;record='. $this-&gt;getId();<\/pre>\n<p><strong>F\u00fcge zuvor ein:<\/strong><\/p>\n<pre>return EventHandler_Module_Model::do_filter('vtiger.filter.product.gettaxesurl', 'index.php?module=Inventory&amp;action=GetTaxes&amp;record='. $this-&gt;getId(), $this);<\/pre>\n<p>Datei: <strong>modules\/Inventory\/actions\/GetTaxes.php ~Line 36<\/strong><\/p>\n<p><strong>Suche:<\/strong><\/p>\n<pre>$response-&gt;setResult(array(\n\t$recordId =&gt; array(\n\t\t'id'=&gt;$recordId, 'name'=&gt;decode_html($recordModel-&gt;getName()),\n\t\t'taxes'=&gt;$taxes, 'listprice'=&gt;$listPrice, 'listpricevalues'=&gt;$listPriceValues,\n\t\t'description' =&gt; decode_html($recordModel-&gt;get('description')),\n\t\t'quantityInStock' =&gt; $recordModel-&gt;get('qtyinstock')\n\t)));<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Ersetze durch:<\/strong><\/p>\n<pre>$response-&gt;setResult(EventHandler_Module_Model::do_filter('vtiger.filter.productdata',array(\n                  $recordId =&gt; array(\n                     'id'=&gt;$recordId, 'name'=&gt;decode_html($recordModel-&gt;getName()),\n                     'taxes'=&gt;$taxes, 'listprice'=&gt;$listPrice, 'listpricevalues'=&gt;$listPriceValues,\n                     'description' =&gt; decode_html($recordModel-&gt;get('description')),\n                     'quantityInStock' =&gt; $recordModel-&gt;get('qtyinstock')\n                  )), $recordModel));<\/pre>\n<p>&nbsp;<\/p>\n<p>Der n\u00e4chste Schritt muss nur dann gemacht werden, wenn Sie den Colorizer NICHT installiert haben.<br \/>\nSie k\u00f6nnen dies \u00fcberpr\u00fcfen, wenn Sie in der folgenden Datei nach <strong>vtiger.filter.listview.querygenerator.query<\/strong> suchen. Wenn Sie etwas finden, f\u00fcgen Sie <strong>KEIN<\/strong> zweites hinzu.<br \/>\nM\u00f6glicherweise stellt der Colorizer auch eine Anfrage, Ihren manuell hinzugef\u00fcgten Filter zu l\u00f6schen, wenn Sie dieses Modul sp\u00e4ter installieren. Da es sich um den gleichen Filter handelt, ist es kein Problem, ihn zu entfernen und durch den Colorizer automatisch hinzuf\u00fcgen zu lassen.<\/p>\n<p>Datei: <strong>modules\/Products\/models\/ListView.php ~Line 118\u00a0<\/strong><\/p>\n<p>Suche: (Sie weden zwei Treffer in der Datei finden. W\u00e4hlen Sie den in der Funktion aus. <strong>getListViewEntries<\/strong>)<\/p>\n<pre>$listQuery = $this-&gt;getQuery();<\/pre>\n<p>Danach einf\u00fcgen:<\/p>\n<pre>$this-&gt;set(\n   'query_generator',\n   EventHandler_Module_Model::do_filter(\n      array(\n         'vtiger.filter.listview.querygenerator.after',\n         'vtiger.filter.listview.'.strtolower($moduleName).'.querygenerator.after'\n      ),\n      $this-&gt;get('query_generator'),\n      $pagingModel\n   )\n);\n\n$listQuery = EventHandler_Module_Model::do_filter(\"vtiger.filter.listview.querygenerator.query\", $listQuery, $this-&gt;get('query_generator'));<\/pre>\n<p>[\/vc_column_text][vc_column_text]<\/p>\n<p>Das war alles mit dem vTigerCRM Source.<\/p>\n<p>Nun m\u00fcssen Sie Ihren erstellten EventHandler an diese 3 Events anh\u00e4ngen:<\/p>\n<pre>vtiger.filter.product.gettaxesurl\nvtiger.filter.productdata\nvtiger.filter.listview.querygenerator.query<\/pre>\n<p>Wenn Sie die handleFilter-Funktion bereits f\u00fcr andere Filter verwenden, filtern Sie die gew\u00fcnschten Informationen aus der n\u00e4chsten Quelle. Wenn Sie in Ihrer Klasse keine handleFilter-Funktion haben, k\u00f6nnen Sie diese verwenden:<\/p>\n<p>[prism field=handler language=php]<\/p>\n<p>In diesem Beispiel ist das benutzerdefinierte Feld mit dem Preis <strong>cf_852<\/strong>. Das M\u00dcSSEN Sie \u00e4ndern.<br \/>\nWenn Sie auch das Modul \u00e4ndern m\u00f6chten, das dieses Feld ausl\u00f6st, \u00e4ndern Sie &#8222;PurchaseOrder&#8220; auf ein anderes Modul. Es funktioniert f\u00fcr jedes Inventarmodul.<\/p>\n<p>Wie Sie sehen, passiert etwas nur, wenn das Modul korrekt ist. So sollten Sie keine Probleme in anderen Modulen bekommen. Aber wie mit jedem Modifikation: Testen Sie alle m\u00f6glichen Situationen, um sicher zu sein, dass es funktioniert.[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row row_type=&#8220;row&#8220; stretch_row_type=&#8220;no&#8220;][vc_column][vc_column_text]Diese Anleitung erfordert einen sicheren Umgang mit der PHP Sprache, da Sie die Einstellungen im Code anpassen m\u00fcssen. Sie m\u00fcssen wissen, wie unser EventHandler-Modul funktioniert und dieses Modul muss vor dem Start installiert sein. Diese Anleitung behandelt das folgende Problem: Sie haben ein Feld &#8222;Einkaufspreis&#8220; im Produktmodul und m\u00f6chten den Preis aus diesem&hellip;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[157,154,158],"tags":[],"class_list":["post-4772","post","type-post","status-publish","format-standard","hentry","category-modifikationen","category-vtigercrm-de","category-vtigercrm-6-de","category-157","category-154","category-158","description-off"],"_links":{"self":[{"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/posts\/4772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/comments?post=4772"}],"version-history":[{"count":1,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/posts\/4772\/revisions"}],"predecessor-version":[{"id":4843,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/posts\/4772\/revisions\/4843"}],"wp:attachment":[{"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/media?parent=4772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/categories?post=4772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redoo-networks.com\/de\/wp-json\/wp\/v2\/tags?post=4772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}