From 9b9188a4e066526b888a8e01a550ca1b11b011e8 Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer <reinhold@kainhofer.com> Date: Thu, 5 Jan 2017 00:40:09 +0100 Subject: [PATCH] VMCoupon_V1.0: Add helper plugin to provide VM coupon discounts in the variables SalesPriceAfterCoupon and CouponValue --- plugins/vmcouponprice/Makefile | 19 ++++ plugins/vmcouponprice/index.html | 0 ...n-GB.plg_vmshipmentrules_vmcouponprice.ini | 6 ++ ....plg_vmshipmentrules_vmcouponprice.sys.ini | 6 ++ .../vmcouponprice/language/en-GB/index.html | 1 + plugins/vmcouponprice/language/index.html | 1 + ...ols_vmshipmentrules_vmcouponprice_v1.0.zip | Bin 0 -> 5720 bytes plugins/vmcouponprice/vmcouponprice.php | 79 ++++++++++++++++ .../vmcouponprice/vmcouponprice.script.php | 88 ++++++++++++++++++ plugins/vmcouponprice/vmcouponprice.xml | 27 ++++++ 10 files changed, 227 insertions(+) create mode 100644 plugins/vmcouponprice/Makefile create mode 100644 plugins/vmcouponprice/index.html create mode 100644 plugins/vmcouponprice/language/en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.ini create mode 100644 plugins/vmcouponprice/language/en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.sys.ini create mode 100644 plugins/vmcouponprice/language/en-GB/index.html create mode 100644 plugins/vmcouponprice/language/index.html create mode 100644 plugins/vmcouponprice/plg_opentools_vmshipmentrules_vmcouponprice_v1.0.zip create mode 100644 plugins/vmcouponprice/vmcouponprice.php create mode 100644 plugins/vmcouponprice/vmcouponprice.script.php create mode 100644 plugins/vmcouponprice/vmcouponprice.xml diff --git a/plugins/vmcouponprice/Makefile b/plugins/vmcouponprice/Makefile new file mode 100644 index 0000000..df0c814 --- /dev/null +++ b/plugins/vmcouponprice/Makefile @@ -0,0 +1,19 @@ +BASE=vmcouponprice +PLUGINTYPE=vmshipmentrules +ZIPBASE=opentools_vmshipmentrules +VERSION=1.0 + +PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html + +TRANSLATIONS=$(call wildcard,language/en*/*.plg_$(PLUGINTYPE)_$(BASE).*ini) +INDEXFILES=language/index.html $(call wildcard,language/**/index.html) +ZIPFILE=plg_$(ZIPBASE)_$(BASE)_v$(VERSION).zip + +all: zip + +zip: $(PLUGINFILES) $(TRANSLATIONS) $(ADVANCEDFILES) $(INDEXFILES) + @echo "Packing all files into distribution file $(ZIPFILE):" + @zip -r $(ZIPFILE) $(PLUGINFILES) $(TRANSLATIONS) $(INDEXFILES) + +clean: + rm -f $(ZIPFILE) diff --git a/plugins/vmcouponprice/index.html b/plugins/vmcouponprice/index.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/vmcouponprice/language/en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.ini b/plugins/vmcouponprice/language/en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.ini new file mode 100644 index 0000000..56172e5 --- /dev/null +++ b/plugins/vmcouponprice/language/en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.ini @@ -0,0 +1,6 @@ +; VM Rule-based Shipping plugin: Extension plugin to provide coupon-related variables +; Copyright (C) 2017 Reinhold Kainhofer, Open Tools. All rights reserved. +; License http://www.gnu.org/licenses/gpl.html GNU/GPL +; Note : All ini files need to be saved as UTF-8 - No BOM +VMSHIPMENTRULES_VMCOUPONPRICE="VM Shipping by Rules - Coupon handler" +VMSHIPMENTRULES_VMCOUPONPRICE_DESC="<p>This plugin extends the shipping by rules plugin with two variables (couponValue and AmountAfterCoupon / salesPriceAfterCoupon) that take into account coupon discounts by the stock virtuemart coupon system.</p><p>By default, VirtueMart evaluates shipping costs first and coupons afterwards, so when shipping is calculated, the coupon discount is not yet calculated in general. To work around this issue, this small plugin adds to trickery to manually calculate the coupon during shipping cost evaluation. As this might interfere with VM (we have not yet run into issues, but who knows...), this functionality is not included by default, but only with this small extension plugin.</p>" diff --git a/plugins/vmcouponprice/language/en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.sys.ini b/plugins/vmcouponprice/language/en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.sys.ini new file mode 100644 index 0000000..56172e5 --- /dev/null +++ b/plugins/vmcouponprice/language/en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.sys.ini @@ -0,0 +1,6 @@ +; VM Rule-based Shipping plugin: Extension plugin to provide coupon-related variables +; Copyright (C) 2017 Reinhold Kainhofer, Open Tools. All rights reserved. +; License http://www.gnu.org/licenses/gpl.html GNU/GPL +; Note : All ini files need to be saved as UTF-8 - No BOM +VMSHIPMENTRULES_VMCOUPONPRICE="VM Shipping by Rules - Coupon handler" +VMSHIPMENTRULES_VMCOUPONPRICE_DESC="<p>This plugin extends the shipping by rules plugin with two variables (couponValue and AmountAfterCoupon / salesPriceAfterCoupon) that take into account coupon discounts by the stock virtuemart coupon system.</p><p>By default, VirtueMart evaluates shipping costs first and coupons afterwards, so when shipping is calculated, the coupon discount is not yet calculated in general. To work around this issue, this small plugin adds to trickery to manually calculate the coupon during shipping cost evaluation. As this might interfere with VM (we have not yet run into issues, but who knows...), this functionality is not included by default, but only with this small extension plugin.</p>" diff --git a/plugins/vmcouponprice/language/en-GB/index.html b/plugins/vmcouponprice/language/en-GB/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/plugins/vmcouponprice/language/en-GB/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><title></title> diff --git a/plugins/vmcouponprice/language/index.html b/plugins/vmcouponprice/language/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/plugins/vmcouponprice/language/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><title></title> diff --git a/plugins/vmcouponprice/plg_opentools_vmshipmentrules_vmcouponprice_v1.0.zip b/plugins/vmcouponprice/plg_opentools_vmshipmentrules_vmcouponprice_v1.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..867b08877e158584d0329a6833feb1139fd0dc24 GIT binary patch literal 5720 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 literal 0 HcmV?d00001 diff --git a/plugins/vmcouponprice/vmcouponprice.php b/plugins/vmcouponprice/vmcouponprice.php new file mode 100644 index 0000000..c8d8e6b --- /dev/null +++ b/plugins/vmcouponprice/vmcouponprice.php @@ -0,0 +1,79 @@ +<?php + +defined ('_JEXEC') or die('Restricted access'); + +/** + * Plugin providing Custom variables for VM Shipping by Rules + * + * @subpackage Plugins - VmShipmentRules + * @copyright Copyright (C) 2017 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 ('VmPlugin')) { + require(JPATH_VM_PLUGINS . DS . 'vmplugin.php'); +} + +/** Extension plugin for the "Shipping by Rules" shipping plugin for VirtueMart + */ +class plgVmShipmentRulesVMCouponPrice extends VmPlugin { + /** Trigger to add variables to the cart values + * You can add new variables to the $cartvals array or modify existing ones. They will be directly + * available in all rules. + * This trigger will be first called right before any rule is evaluated. In that case, $products + * will contain all products in the cart and $cart_prices will be an arrow containing the calculated + * prices of the order. + * Please notice that this function might also be called for only a subset of products of the cart + * when the plugin evaluates a scoping function like evaluate_for_categories(...). + */ + function onVmShippingRulesGetCartValues(&$cartvals, $cart, $products, $method) { + // The coupon code is in general not yet set (will be set by the cart controller AFTER shipping is handled! + // -> set the coupon code now from the coupon_code REQUEST variable. + // If the coupon is not changed, the coupon variables are already properly set in the cartPrices + $coupon_code = trim(vRequest::getString('coupon_code', '')); + if(!empty($coupon_code)){ + $this->couponHandler(/*$cart->couponCode*/$coupon_code, $cart); + } + $cartvals['salespriceaftercoupon']= $cart->cartPrices['salesPrice'] + (isset($cart->cartPrices['salesPriceCoupon'])?$cart->cartPrices['salesPriceCoupon']:0); + $cartvals['amountaftercoupon']= $cart->cartPrices['salesPrice'] + (isset($cart->cartPrices['salesPriceCoupon'])?$cart->cartPrices['salesPriceCoupon']:0); + $cartvals['couponvalue'] = isset($cart->cartPrices['couponValue'])?$cart->cartPrices['couponValue']:0; + + } + + # As the coupon handler in calculationh.php is protected, we need to + # duplicate all code here instead of calling the VM coupon handler directly.... + protected function couponHandler($_code, &$cart) { + JPluginHelper::importPlugin('vmcoupon'); + $dispatcher = JDispatcher::getInstance(); + $returnValues = $dispatcher->trigger('plgVmCouponHandler', array($cart->couponCode, &$cart->cartData, &$cart->cartPrices)); + if(!empty($returnValues)){ + foreach ($returnValues as $returnValue) { + if ($returnValue !== null ) { + return $returnValue; + } + } + } + + if (!class_exists('CouponHelper')) + require(VMPATH_SITE . DS . 'helpers' . DS . 'coupon.php'); + if (!($_data = CouponHelper::getCouponDetails($_code))) { + return; // TODO give some error here + } + + $_value_is_total = ($_data->percent_or_total == 'total'); + + $cart->cartPrices['salesPriceCoupon'] = ($_value_is_total ? $_data->coupon_value * -1 : ($cart->cartPrices['salesPrice'] * ($_data->coupon_value / 100)) * -1); + $cart->cartPrices['couponTax'] = 0; + $cart->cartPrices['couponValue'] = $cart->cartPrices['salesPriceCoupon'] - $cart->cartPrices['couponTax']; + + } + +} + +// No closing tag diff --git a/plugins/vmcouponprice/vmcouponprice.script.php b/plugins/vmcouponprice/vmcouponprice.script.php new file mode 100644 index 0000000..3671a9f --- /dev/null +++ b/plugins/vmcouponprice/vmcouponprice.script.php @@ -0,0 +1,88 @@ +<?php +defined('_JEXEC') or die('Restricted access'); + +/** + * Installation script for the plugin + * + * @copyright Copyright (C) 2014 Reinhold Kainhofer, office@open-tools.net + * @license GPL v3+, http://www.gnu.org/copyleft/gpl.html + */ + +// Adjust the class name. It has to be of the form: +// plgVmShipmentVMCouponPriceInstallerScript +class plgVmShipmentRulesVMCouponPriceInstallerScript +{ + /** + * Constructor + * + * @param JAdapterInstance $adapter The object responsible for running this script + */ +// public function __constructor(JAdapterInstance $adapter); + + /** + * Called before any type of action + * + * @param string $route Which action is happening (install|uninstall|discover_install) + * @param JAdapterInstance $adapter The object responsible for running this script + * + * @return boolean True on success + */ +// public function preflight($route, JAdapterInstance $adapter); + + /** + * Called after any type of action + * + * @param string $route Which action is happening (install|uninstall|discover_install) + * @param JAdapterInstance $adapter The object responsible for running this script + * + * @return boolean True on success + */ +// public function postflight($route, JAdapterInstance $adapter); + + /** + * Called on installation + * + * @param JAdapterInstance $adapter The object responsible for running this script + * + * @return boolean True on success + */ + public function install(JAdapterInstance $adapter) + { + // enabling plugin upon installation + $db = JFactory::getDBO(); + $db->setQuery('update #__extensions set enabled = 1 where type = "plugin" and element = "vmcouponprice" and folder = "vmshipmentrules"'); + $db->query(); + + return True; + } + + /** + * Called on update + * + * @param JAdapterInstance $adapter The object responsible for running this script + * + * @return boolean True on success + */ +// public function update(JAdapterInstance $adapter) +// { +// jimport( 'joomla.filesystem.file' ); +// $file = JPATH_ROOT . DS . "administrator" . DS . "language" . DS . "en-GB" . DS . "en-GB.plg_vmshipmentrules_vmcouponprice.sys.ini"; +// if (JFile::exists($file)) JFile::delete($file); +// $file = JPATH_ROOT . DS . "administrator" . DS . "language" . DS . "de-DE" . DS . "de-DE.plg_vmshipmentrules_vmcouponprice.sys.ini"; +// if (JFile::exists($file)) JFile::delete($file); +// return true; +// } + + /** + * Called on uninstallation + * + * @param JAdapterInstance $adapter The object responsible for running this script + */ +// public function uninstall(JAdapterInstance $adapter) +// { +// // Remove plugin table +// $db =& JFactory::getDBO(); +// $db->setQuery('DROP TABLE IF EXISTS `#__virtuemart_vmshipmentrulesles_vmcouponprice`;'); +// $db->query(); +// } +} diff --git a/plugins/vmcouponprice/vmcouponprice.xml b/plugins/vmcouponprice/vmcouponprice.xml new file mode 100644 index 0000000..1f3a8e2 --- /dev/null +++ b/plugins/vmcouponprice/vmcouponprice.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<extension version="2.5" type="plugin" group="vmshipmentrules" method="upgrade"> + <name>VM Shipping by Rules - Coupon handler</name> + <creationDate>2017-01-04</creationDate> + <author>Reinhold Kainhofer, Open Tools</author> + <authorUrl>http://www.open-tools.net</authorUrl> + <copyright>Copyright (C) 2017, Reinhold Kainhofer</copyright> + <license>GPL v3+</license> + <version>1.0</version> + <description>VMSHIPMENTRULES_VMCOUPONPRICE_DESC</description> + <files> + <filename plugin="vmcouponprice">vmcouponprice.php</filename> + <folder>language</folder> + </files> + <languages folder="language"> + <language tag="en-GB">en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.ini</language> + <language tag="en-GB">en-GB/en-GB.plg_vmshipmentrules_vmcouponprice.sys.ini</language> + </languages> + <scriptfile>vmcouponprice.script.php</scriptfile> + + <!-- VM 3.x support (fields rather than params): --> + <vmconfig></vmconfig> + + <!-- VM 2.0 support (params rather than fields): --> + <params></params> + +</extension> -- GitLab