diff --git a/Makefile b/Makefile index 3018ed2e9ec0b3f12c30572af5b76c15cc1ab522..0a22fc76f885a37727f4b0195817119a9f8b8945 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ BASE=ordernumber PLUGINTYPE=vmshopper -VERSION=4.0 +VERSION=4.0.1 PLUGINFILES=$(BASE).php ordernumber_helper_joomla.php $(BASE).script.php $(BASE).xml index.html library/ diff --git a/ordernumber.php b/ordernumber.php index c6df509d447beaac880173610f4a61ad5eef3a9f..287b1cfc9f2e701fd2f8c81b61492550abecf129 100644 --- a/ordernumber.php +++ b/ordernumber.php @@ -210,6 +210,8 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { ); $customvars = $this->helper->transposeCustomVariables($this->params->get ('replacements', array())); $number = $this->helper->createNumber ($fmt, $type, $order, $customvars, $ctrsettings); + JPluginHelper::importPlugin('vmshopper'); + JDispatcher::getInstance()->trigger('onVmOrdernumberPostprocessNumber',array(&$number, $type, $order)); return $number; } else { return false; diff --git a/ordernumber.xml b/ordernumber.xml index 0ad01ace513aad332e9ea82cf3afe55cf35943c6..cd5418b9f02a0558c1b1e660af452704e2093a66 100644 --- a/ordernumber.xml +++ b/ordernumber.xml @@ -7,7 +7,7 @@ <authorUrl>http://www.open-tools.net/</authorUrl> <copyright>Copyright (C) 2012-2015 Reinhold Kainhofer. All rights reserved.</copyright> <license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPLv3</license> - <version>4.0</version> + <version>4.0.1</version> <releaseDate>2015-05-23</releaseDate> <releaseType>Minor update</releaseType> <downloadUrl>http://open-tools.net/virtuemart/advanced-ordernumbers.html</downloadUrl> diff --git a/plugins/ordernumber_checksum/Makefile b/plugins/ordernumber_checksum/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..960da882558fd02d4d0b9a88bc338a34f662db6f --- /dev/null +++ b/plugins/ordernumber_checksum/Makefile @@ -0,0 +1,17 @@ +BASE=ordernumber_checksum +PLUGINTYPE=vmshopper +ZIPBASE=opentools_vmshopper +VERSION=1.0 + +PLUGINFILES=$(BASE).php $(BASE).xml index.html + +ZIPFILE=plg_$(ZIPBASE)_$(BASE)_v$(VERSION).zip + +all: zip + +zip: $(PLUGINFILES) $(ADVANCEDFILES) + @echo "Packing all files into distribution file $(ZIPFILE):" + @zip -r $(ZIPFILE) $(PLUGINFILES) + +clean: + rm -f $(ZIPFILE) diff --git a/plugins/ordernumber_checksum/index.html b/plugins/ordernumber_checksum/index.html new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/plugins/ordernumber_checksum/ordernumber_checksum.php b/plugins/ordernumber_checksum/ordernumber_checksum.php new file mode 100644 index 0000000000000000000000000000000000000000..ff9b4e928446e3d6ab871176a54ebf974d21129f --- /dev/null +++ b/plugins/ordernumber_checksum/ordernumber_checksum.php @@ -0,0 +1,44 @@ +<?php + +defined ('_JEXEC') or die('Restricted access'); + +/** + * Plugin providing checksums for the VM Ordernumber plugin + * + * @copyright Copyright (C) 2016 Reinhold Kainhofer, office@open-tools.net + * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.txt + * VirtueMart is free software. This version may have been modified pursuant + * to the GNU General Public License, and as distributed it includes or + * is derivative of works licensed under the GNU General Public License or + * other free or open source software licenses. + * + * http://open-tools.net/ + * + */ +if (!class_exists('vmShopperPlugin')) + require(JPATH_VM_PLUGINS . DS . 'vmshopperplugin.php'); + +/** Extension plugin for the Ordernumber plugin for VirtueMart + */ +class plgVmShopperOrdernumber_checksum extends VmShopperPlugin { + // Unfortunately, this dummy function needs to be implementd, because it's abstract in the parent class! + public function plgVmOnUpdateOrderBEShopper($_orderID) {} + + /** Trigger to postprocess generated numbers (e.g. to add checksums or call + * external bookkeeping systems to store an invoice number). + * The number can be changed by simply assigning a new value to $number. + * + * Possible values for $type are "ordernumber", "invoice_number", "customer_number", etc. + */ + function onVmOrdernumberPostprocessNumber(&$number, $type, $order) { + // Example: Append the length of the number to the number +error_log("Called onVmOrdernumberPostprocessNumber with number $number and type $type"); + if ($type=="order_number") { + $checksum = strlen($number); + $number .= $checksum; + } + } + +} + +// No closing tag diff --git a/plugins/ordernumber_checksum/ordernumber_checksum.xml b/plugins/ordernumber_checksum/ordernumber_checksum.xml new file mode 100644 index 0000000000000000000000000000000000000000..da805d974bf0f8100031fc5e66fe2254260adf85 --- /dev/null +++ b/plugins/ordernumber_checksum/ordernumber_checksum.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<extension version="2.5" type="plugin" group="vmshopper" method="upgrade"> + <name>VM Advanced Ordernumbers - Append Checksum</name> + <creationDate>2016-04-27</creationDate> + <author>Reinhold Kainhofer, Open Tools</author> + <authorUrl>http://www.open-tools.net</authorUrl> + <copyright>Copyright (C) 2016, Reinhold Kainhofer</copyright> + <license>GPL v3+</license> + <version>1.0</version> + <description>Appends a customized checksum to order numbers generated by the Advanced Ordernumbers plugin for VirtueMart.</description> + <files> + <filename plugin="ordernumber_checksum">ordernumber_checksum.php</filename> + </files> + + <!-- Joomla 2.x and 3.x support (fields rather than params): --> + <config></config> + +</extension> diff --git a/plugins/ordernumber_checksum/plg_opentools_vmshopper_ordernumber_checksum_v1.0.zip b/plugins/ordernumber_checksum/plg_opentools_vmshopper_ordernumber_checksum_v1.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..07a3043c1d7eab43ed53341699b86ee073c59668 Binary files /dev/null and b/plugins/ordernumber_checksum/plg_opentools_vmshopper_ordernumber_checksum_v1.0.zip differ diff --git a/plugins/template/YOUR_PLUGIN_NAME.php b/plugins/template/YOUR_PLUGIN_NAME.php index a226baed4806cf0344e3786d88de59359e6aa21b..0ef26babf4f61062224290aa0ef272cd344f4ab8 100644 --- a/plugins/template/YOUR_PLUGIN_NAME.php +++ b/plugins/template/YOUR_PLUGIN_NAME.php @@ -23,6 +23,7 @@ if (!class_exists('vmShopperPlugin')) class plgVmShopperYOUR_PLUGIN_NAME extends VmShopperPlugin { // Unfortunately, this dummy function needs to be implementd, because it's abstract in the parent class! public function plgVmOnUpdateOrderBEShopper($_orderID) {} + /** Trigger to add variables to be used in the number formats * You can add new variables to the $cartvals array or modify existing ones. They will be directly * available in all formats. This trigger will be called whenever the ordernumber plugin creates a @@ -44,6 +45,26 @@ class plgVmShopperYOUR_PLUGIN_NAME extends VmShopperPlugin { // You can also modify existing variables: $reps['[second]'] = $reps['[second]'] + 15; } + + /** Trigger to postprocess generated numbers (e.g. to add checksums or call + * external bookkeeping systems to store an invoice number). + * The number can be changed by simply assigning a new value to $number. + * + * Possible values for $type are "order_number", "order_password", "invoice_number", "customer_number", etc. + */ + function onVmOrdernumberPostprocessNumber(&$number, $type, $order) { + // Example: Append the length of the number to the number + if ($type=="order_number") { + $checksum=strlen($number); + $number .= $checksum; + } + // Example 2: Store the invoice number in an external bookkeeping system + if ($type=="invoice_number") { + // simply take $number and trigger a webservice call sending that value + // (and e.g. the order ID stored in the $order object) to the bookkeeping system + } + } + } // No closing tag diff --git a/releases/plg_vmshopper_ordernumber_v4.0.1.zip b/releases/plg_vmshopper_ordernumber_v4.0.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..abe1f3f5c1dd14784a3c11083aaeeb279858cc2f Binary files /dev/null and b/releases/plg_vmshopper_ordernumber_v4.0.1.zip differ