Version Notes
Change Log:
* Remove JavaScript warnings
* HC-195 Deposit rounding issue
* HC-188 Rounding Down the finance amount
* HC-175 Fix illegal chars in product name
* HC-156 Finance offer on product lists
* HC-173 implement changes according to updated specification (notification url)
* HC-201 Invoice base_grand_total calculation fix
Download this release
Release Info
| Developer | Sandor Czettner |
| Extension | HC_PayByFinance |
| Version | 1.0.5.1 |
| Comparing to | |
| See all releases | |
Code changes from version 1.0.4.1 to 1.0.5.1
- app/code/local/HC/PayByFinance/Block/Product/List/Finance.php +58 -0
- app/code/local/HC/PayByFinance/Helper/Data.php +18 -6
- app/code/local/HC/PayByFinance/Helper/Notification.php +63 -36
- app/code/local/HC/PayByFinance/Model/Calculator.php +59 -6
- app/code/local/HC/PayByFinance/Model/Config/Source/Notification/Status.php +43 -0
- app/code/local/HC/PayByFinance/Model/Observer.php +24 -0
- app/code/local/HC/PayByFinance/Model/Sales/Order/Creditmemo/Financeamount.php +1 -1
- app/code/local/HC/PayByFinance/Model/Sales/Order/Invoice/Financeamount.php +1 -1
- app/code/local/HC/PayByFinance/controllers/CheckoutController.php +2 -1
- app/code/local/HC/PayByFinance/controllers/NotificationController.php +4 -4
- app/code/local/HC/PayByFinance/etc/config.xml +13 -1
- app/code/local/HC/PayByFinance/etc/system.xml +10 -0
- app/code/local/HC/PayByFinance/sql/paybyfinance_setup/{mysql4-install-1.0.4.php → mysql4-install-1.0.5.php} +1 -1
- app/code/local/HC/PayByFinance/sql/paybyfinance_setup/mysql4-upgrade-1.0.4-1.0.5.php +34 -0
- app/design/frontend/base/default/layout/paybyfinance.xml +6 -0
- app/design/frontend/base/default/template/paybyfinance/catalog/product/list/finance.phtml +5 -0
- app/design/frontend/base/default/template/paybyfinance/selector.phtml +1 -1
- package.xml +11 -7
app/code/local/HC/PayByFinance/Block/Product/List/Finance.php
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Hitachi Capital Pay By Finance
|
| 4 |
+
*
|
| 5 |
+
* Hitachi Capital Pay By Finance Extension
|
| 6 |
+
*
|
| 7 |
+
* PHP version >= 5.3.*
|
| 8 |
+
*
|
| 9 |
+
* @category HC
|
| 10 |
+
* @package PayByFinance
|
| 11 |
+
* @author Healthy Websites <support@healthywebsites.co.uk>
|
| 12 |
+
* @copyright 2014 Hitachi Capital
|
| 13 |
+
* @license http://www.gnu.org/copyleft/gpl.html GPL License
|
| 14 |
+
* @link http://www.healthywebsites.co.uk/
|
| 15 |
+
*
|
| 16 |
+
*/
|
| 17 |
+
|
| 18 |
+
/**
|
| 19 |
+
* Finance display on product lists
|
| 20 |
+
*
|
| 21 |
+
* @uses Mage_Core_Block_Template
|
| 22 |
+
*
|
| 23 |
+
* @category HC
|
| 24 |
+
* @package PayByFinance
|
| 25 |
+
* @author Healthy Websites <support@healthywebsites.co.uk>
|
| 26 |
+
* @license http://www.gnu.org/copyleft/gpl.html GPL License
|
| 27 |
+
* @link http://www.healthywebsites.co.uk/
|
| 28 |
+
*/
|
| 29 |
+
class HC_PayByFinance_Block_Product_List_Finance extends Mage_Core_Block_Template
|
| 30 |
+
{
|
| 31 |
+
|
| 32 |
+
/**
|
| 33 |
+
* Current product has finance?
|
| 34 |
+
*
|
| 35 |
+
* @return bool
|
| 36 |
+
*/
|
| 37 |
+
public function hasFinance()
|
| 38 |
+
{
|
| 39 |
+
$product = $this->getProduct();
|
| 40 |
+
$finaceFromPrice = $product->getData('finance_from_price');
|
| 41 |
+
|
| 42 |
+
return (bool) $finaceFromPrice;
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
/**
|
| 46 |
+
* Format the minimum installment price
|
| 47 |
+
*
|
| 48 |
+
* @return string
|
| 49 |
+
*/
|
| 50 |
+
public function getFinanceFromPrice()
|
| 51 |
+
{
|
| 52 |
+
$product = $this->getProduct();
|
| 53 |
+
$finaceFromPrice = $product->getData('finance_from_price');
|
| 54 |
+
$price = Mage::helper('core')->currency($finaceFromPrice, true, false);
|
| 55 |
+
|
| 56 |
+
return $price;
|
| 57 |
+
}
|
| 58 |
+
}
|
app/code/local/HC/PayByFinance/Helper/Data.php
CHANGED
|
@@ -35,6 +35,7 @@ class HC_PayByFinance_Helper_Data extends Mage_Core_Helper_Data
|
|
| 35 |
const XML_PATH_INCLUDE_SHIPPING = 'hc_paybyfinance/general/include_shipping';
|
| 36 |
const XML_PATH_ADDRESS_CHECKED = 'hc_paybyfinance/general/address_checked';
|
| 37 |
const XML_PATH_WIZARD = 'hc_paybyfinance/general/wizard';
|
|
|
|
| 38 |
const XML_PATH_STATUS_ACCEPTED = 'hc_paybyfinance/order_status/accepted';
|
| 39 |
const XML_PATH_STATUS_REFERRED = 'hc_paybyfinance/order_status/referred';
|
| 40 |
const XML_PATH_STATUS_DECLINED = 'hc_paybyfinance/order_status/declined';
|
|
@@ -212,15 +213,12 @@ class HC_PayByFinance_Helper_Data extends Mage_Core_Helper_Data
|
|
| 212 |
if (!file_exists(Mage::getBaseDir('var').'/log/paybyfinance')) {
|
| 213 |
mkdir(Mage::getBaseDir('var').'/log/paybyfinance');
|
| 214 |
}
|
|
|
|
| 215 |
if ($type == 'log') {
|
| 216 |
Mage::log($data, null, self::ERROR_LOG_PATH_LOG);
|
| 217 |
-
}
|
| 218 |
-
|
| 219 |
-
if ($type == 'post') {
|
| 220 |
Mage::log($data, null, self::ERROR_LOG_PATH_POST);
|
| 221 |
-
}
|
| 222 |
-
|
| 223 |
-
if ($type == 'notification') {
|
| 224 |
Mage::log($data, null, self::ERROR_LOG_PATH_NOTIFICATION);
|
| 225 |
}
|
| 226 |
|
|
@@ -296,6 +294,20 @@ class HC_PayByFinance_Helper_Data extends Mage_Core_Helper_Data
|
|
| 296 |
return $text;
|
| 297 |
}
|
| 298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 299 |
/**
|
| 300 |
* Processing user input for extra security, removing php open tags
|
| 301 |
*
|
| 35 |
const XML_PATH_INCLUDE_SHIPPING = 'hc_paybyfinance/general/include_shipping';
|
| 36 |
const XML_PATH_ADDRESS_CHECKED = 'hc_paybyfinance/general/address_checked';
|
| 37 |
const XML_PATH_WIZARD = 'hc_paybyfinance/general/wizard';
|
| 38 |
+
const XML_PATH_PROCESS_ORDER = 'hc_paybyfinance/general/process_order';
|
| 39 |
const XML_PATH_STATUS_ACCEPTED = 'hc_paybyfinance/order_status/accepted';
|
| 40 |
const XML_PATH_STATUS_REFERRED = 'hc_paybyfinance/order_status/referred';
|
| 41 |
const XML_PATH_STATUS_DECLINED = 'hc_paybyfinance/order_status/declined';
|
| 213 |
if (!file_exists(Mage::getBaseDir('var').'/log/paybyfinance')) {
|
| 214 |
mkdir(Mage::getBaseDir('var').'/log/paybyfinance');
|
| 215 |
}
|
| 216 |
+
|
| 217 |
if ($type == 'log') {
|
| 218 |
Mage::log($data, null, self::ERROR_LOG_PATH_LOG);
|
| 219 |
+
} elseif ($type == 'post') {
|
|
|
|
|
|
|
| 220 |
Mage::log($data, null, self::ERROR_LOG_PATH_POST);
|
| 221 |
+
} elseif ($type == 'notification') {
|
|
|
|
|
|
|
| 222 |
Mage::log($data, null, self::ERROR_LOG_PATH_NOTIFICATION);
|
| 223 |
}
|
| 224 |
|
| 294 |
return $text;
|
| 295 |
}
|
| 296 |
|
| 297 |
+
/**
|
| 298 |
+
* Sanitize Product Name
|
| 299 |
+
* Allow chars: 0-9 A-Z a-z . - _ ( ) + @ : / ? '
|
| 300 |
+
*
|
| 301 |
+
* @param string $productName Product name
|
| 302 |
+
*
|
| 303 |
+
* @return string Cleaned string
|
| 304 |
+
*/
|
| 305 |
+
public function sanitizeProductName($productName)
|
| 306 |
+
{
|
| 307 |
+
$cleanedName = preg_replace('/[^a-zA-Z0-9\s@\.\-\(\)\+:\/\?\']/', '', $productName);
|
| 308 |
+
return $cleanedName;
|
| 309 |
+
}
|
| 310 |
+
|
| 311 |
/**
|
| 312 |
* Processing user input for extra security, removing php open tags
|
| 313 |
*
|
app/code/local/HC/PayByFinance/Helper/Notification.php
CHANGED
|
@@ -29,6 +29,44 @@
|
|
| 29 |
class HC_PayByFinance_Helper_Notification extends Mage_Core_Helper_Data
|
| 30 |
{
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
/**
|
| 33 |
* Process notification requests
|
| 34 |
*
|
|
@@ -40,48 +78,37 @@ class HC_PayByFinance_Helper_Notification extends Mage_Core_Helper_Data
|
|
| 40 |
*/
|
| 41 |
public function processOrder($order, $parameters)
|
| 42 |
{
|
|
|
|
| 43 |
$orderStatus = $order->getStatus();
|
| 44 |
$orderState = $order->getState();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
break;
|
| 58 |
-
case 'A':
|
| 59 |
-
$message = 'Status: Accepted';
|
| 60 |
-
break;
|
| 61 |
-
case 'R':
|
| 62 |
-
$message = 'Status: Referred for manual underwriting';
|
| 63 |
-
break;
|
| 64 |
-
case 'D':
|
| 65 |
-
$message = 'Status: Declined';
|
| 66 |
-
break;
|
| 67 |
-
case 'G':
|
| 68 |
-
$message = 'Status: Goods dispatched';
|
| 69 |
-
break;
|
| 70 |
-
case 'C':
|
| 71 |
-
$message = 'Status: Cancelled';
|
| 72 |
-
$orderState = $orderStatus = Mage_Sales_Model_Order::STATE_CANCELED;
|
| 73 |
-
break;
|
| 74 |
-
case 'F':
|
| 75 |
-
$message = 'Status: Fraud';
|
| 76 |
-
$orderState = $orderStatus = Mage_Sales_Model_Order::STATE_CANCELED;
|
| 77 |
-
break;
|
| 78 |
-
default:
|
| 79 |
-
$message = 'Status: Unknown: ' . $parameters['status'];
|
| 80 |
-
break;
|
| 81 |
}
|
| 82 |
|
| 83 |
$message = "<strong>Hitachi Capital Pay By Finance"
|
| 84 |
-
. "</strong> notification received: " . $message;
|
| 85 |
$order->setFinanceStatus($status)
|
| 86 |
->setFinanceApplicationNo($applicationNo)
|
| 87 |
->setState($orderState, $orderStatus)
|
| 29 |
class HC_PayByFinance_Helper_Notification extends Mage_Core_Helper_Data
|
| 30 |
{
|
| 31 |
|
| 32 |
+
private $statuses = array(
|
| 33 |
+
'PENDING' => 'An Application decision has not yet been reached.',
|
| 34 |
+
'ACCEPT' => 'The application has been accepted.',
|
| 35 |
+
'DECLINE' => 'The application has been declined.',
|
| 36 |
+
'REFER' => 'The application has been referred to the underwriting
|
| 37 |
+
department.',
|
| 38 |
+
'CONDITIONAL_ACCEPT' => 'The application has been accepted but further
|
| 39 |
+
information is needed before it can be completed.',
|
| 40 |
+
'FATAL_ERROR' => 'A fatal error has occured.',
|
| 41 |
+
'SUPPLIER_CANCELLED' => 'The supplier/retailer has cancelled the application.',
|
| 42 |
+
'HCCF_CANCELLED' => 'Hitachi Capital has cancelled the application.',
|
| 43 |
+
'CONSUMER_CANCELLED' => 'The customer has cancelled the application.',
|
| 44 |
+
'AMEND_CANCELLED' => 'This application has been cancelled since a new
|
| 45 |
+
one has been created sa an amendment of this application.',
|
| 46 |
+
'PAID' => 'The application has been paid.',
|
| 47 |
+
'COOLING_OFF' => 'The application is in a cooling off period.',
|
| 48 |
+
'ON_HOLD' => 'The application is on hold.',
|
| 49 |
+
'SEND_BACK' => 'Documents have been sent back; awaiting their return',
|
| 50 |
+
);
|
| 51 |
+
|
| 52 |
+
// These statuses will cancel the order.
|
| 53 |
+
protected $cancelStatus = array(
|
| 54 |
+
'SUPPLIER_CANCELLED',
|
| 55 |
+
'HCCF_CANCELLED',
|
| 56 |
+
'CONSUMER_CANCELLED',
|
| 57 |
+
'AMEND_CANCELLED',
|
| 58 |
+
);
|
| 59 |
+
|
| 60 |
+
/**
|
| 61 |
+
* Get notification statuses
|
| 62 |
+
*
|
| 63 |
+
* @return array Statuses
|
| 64 |
+
*/
|
| 65 |
+
public function getStatuses()
|
| 66 |
+
{
|
| 67 |
+
return $this->statuses;
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
/**
|
| 71 |
* Process notification requests
|
| 72 |
*
|
| 78 |
*/
|
| 79 |
public function processOrder($order, $parameters)
|
| 80 |
{
|
| 81 |
+
$helper = Mage::helper('paybyfinance');
|
| 82 |
$orderStatus = $order->getStatus();
|
| 83 |
$orderState = $order->getState();
|
| 84 |
+
$applicationNo = $parameters['applicationNumber'];
|
| 85 |
+
$status = strtoupper($parameters['status']);
|
| 86 |
+
|
| 87 |
+
if (!array_key_exists($status, $this->statuses)) {
|
| 88 |
+
$message = 'Status Unknown: "' . $parameters['status'].'"';
|
| 89 |
+
} else {
|
| 90 |
+
$message = $this->statuses[$status];
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
if (in_array($status, $this->cancelStatus)) {
|
| 94 |
+
$orderState = $orderStatus = Mage_Sales_Model_Order::STATE_CANCELED;
|
| 95 |
+
}
|
| 96 |
|
| 97 |
+
$canShipStatus = Mage::getStoreConfig($helper::XML_PATH_PROCESS_ORDER);
|
| 98 |
+
if ($status == $canShipStatus) {
|
| 99 |
+
$message .= ' Awaiting dispatch of goods. authorisationNumber: '
|
| 100 |
+
. $parameters['authorisationNumber'];
|
| 101 |
+
$orderState = $orderStatus = Mage_Sales_Model_Order::STATE_PROCESSING;
|
| 102 |
+
$order->setTotalPaid(
|
| 103 |
+
$order->getTotalPaid() + abs($order->getFinanceAmount())
|
| 104 |
+
);
|
| 105 |
+
$order->setBaseTotalPaid(
|
| 106 |
+
$order->getBaseTotalPaid() + abs($order->getFinanceAmount())
|
| 107 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
}
|
| 109 |
|
| 110 |
$message = "<strong>Hitachi Capital Pay By Finance"
|
| 111 |
+
. "</strong> notification received: " . $status . ': ' . $message;
|
| 112 |
$order->setFinanceStatus($status)
|
| 113 |
->setFinanceApplicationNo($applicationNo)
|
| 114 |
->setState($orderState, $orderStatus)
|
app/code/local/HC/PayByFinance/Model/Calculator.php
CHANGED
|
@@ -29,6 +29,7 @@
|
|
| 29 |
class HC_PayByFinance_Model_Calculator extends Varien_Object
|
| 30 |
{
|
| 31 |
private $_service;
|
|
|
|
| 32 |
|
| 33 |
/**
|
| 34 |
* Set service by id
|
|
@@ -82,13 +83,16 @@ class HC_PayByFinance_Model_Calculator extends Varien_Object
|
|
| 82 |
/**
|
| 83 |
* Calculating monthly payments
|
| 84 |
*
|
| 85 |
-
* @param float
|
|
|
|
| 86 |
*
|
| 87 |
* @return float Monthly installment
|
| 88 |
*/
|
| 89 |
-
public function calcMonthlyPayment($amount)
|
| 90 |
{
|
| 91 |
-
$service
|
|
|
|
|
|
|
| 92 |
// No rounding issues, rounding always down.
|
| 93 |
$monthlyPayment = floor(($amount * $service->getMultiplier()) * 100) / 100;
|
| 94 |
|
|
@@ -98,13 +102,16 @@ class HC_PayByFinance_Model_Calculator extends Varien_Object
|
|
| 98 |
/**
|
| 99 |
* Calculating monthly payments (Interst Free, type=32)
|
| 100 |
*
|
| 101 |
-
* @param float
|
|
|
|
| 102 |
*
|
| 103 |
* @return float Monthly installment
|
| 104 |
*/
|
| 105 |
-
public function calcMonthlyPaymentInterestFree($amount)
|
| 106 |
{
|
| 107 |
-
$service
|
|
|
|
|
|
|
| 108 |
$monthlyPayment = floor(($amount / $service->getTerm()) * 100) / 100;
|
| 109 |
|
| 110 |
return $monthlyPayment;
|
|
@@ -124,7 +131,9 @@ class HC_PayByFinance_Model_Calculator extends Varien_Object
|
|
| 124 |
$giftcard = abs($this->getGiftcard()); // Giftcard (EE) is a positive value
|
| 125 |
|
| 126 |
$depositAmount = ($amount - $discount - $giftcard) * ($deposit / 100);
|
|
|
|
| 127 |
$financeAmount = $amount - $depositAmount - $discount - $giftcard;
|
|
|
|
| 128 |
|
| 129 |
if ($service->getType() == 32) {
|
| 130 |
$monthlyPayment = $this->calcMonthlyPaymentInterestFree($financeAmount);
|
|
@@ -141,4 +150,48 @@ class HC_PayByFinance_Model_Calculator extends Varien_Object
|
|
| 141 |
|
| 142 |
return $results;
|
| 143 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 144 |
}
|
| 29 |
class HC_PayByFinance_Model_Calculator extends Varien_Object
|
| 30 |
{
|
| 31 |
private $_service;
|
| 32 |
+
private $_allServices;
|
| 33 |
|
| 34 |
/**
|
| 35 |
* Set service by id
|
| 83 |
/**
|
| 84 |
* Calculating monthly payments
|
| 85 |
*
|
| 86 |
+
* @param float $amount Credit amount
|
| 87 |
+
* @param HC_PayByFinance_Model_Service $service Service
|
| 88 |
*
|
| 89 |
* @return float Monthly installment
|
| 90 |
*/
|
| 91 |
+
public function calcMonthlyPayment($amount, $service = null)
|
| 92 |
{
|
| 93 |
+
if ($service === null) {
|
| 94 |
+
$service = $this->getService();
|
| 95 |
+
}
|
| 96 |
// No rounding issues, rounding always down.
|
| 97 |
$monthlyPayment = floor(($amount * $service->getMultiplier()) * 100) / 100;
|
| 98 |
|
| 102 |
/**
|
| 103 |
* Calculating monthly payments (Interst Free, type=32)
|
| 104 |
*
|
| 105 |
+
* @param float $amount Credit amount
|
| 106 |
+
* @param HC_PayByFinance_Model_Service $service Service
|
| 107 |
*
|
| 108 |
* @return float Monthly installment
|
| 109 |
*/
|
| 110 |
+
public function calcMonthlyPaymentInterestFree($amount, $service = null)
|
| 111 |
{
|
| 112 |
+
if ($service === null) {
|
| 113 |
+
$service = $this->getService();
|
| 114 |
+
}
|
| 115 |
$monthlyPayment = floor(($amount / $service->getTerm()) * 100) / 100;
|
| 116 |
|
| 117 |
return $monthlyPayment;
|
| 131 |
$giftcard = abs($this->getGiftcard()); // Giftcard (EE) is a positive value
|
| 132 |
|
| 133 |
$depositAmount = ($amount - $discount - $giftcard) * ($deposit / 100);
|
| 134 |
+
$depositAmount = round($depositAmount, 2);
|
| 135 |
$financeAmount = $amount - $depositAmount - $discount - $giftcard;
|
| 136 |
+
$financeAmount = floor($financeAmount * 100) / 100;
|
| 137 |
|
| 138 |
if ($service->getType() == 32) {
|
| 139 |
$monthlyPayment = $this->calcMonthlyPaymentInterestFree($financeAmount);
|
| 150 |
|
| 151 |
return $results;
|
| 152 |
}
|
| 153 |
+
|
| 154 |
+
/**
|
| 155 |
+
* Get cached all services collection instance
|
| 156 |
+
*
|
| 157 |
+
* @return HC_PayByFinance_Model_Mysql4_Service_Collection Services collection
|
| 158 |
+
*/
|
| 159 |
+
public function getAllServices()
|
| 160 |
+
{
|
| 161 |
+
if (!$this->_allServices) {
|
| 162 |
+
$this->_allServices = Mage::getModel('paybyfinance/service')->getCollection();
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
return $this->_allServices;
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
/**
|
| 169 |
+
* Get lowest monthly installment based on product price from all available services
|
| 170 |
+
*
|
| 171 |
+
* @param float $price Product price
|
| 172 |
+
*
|
| 173 |
+
* @return float|bool Cheapest monthly installment, false if no service available
|
| 174 |
+
*/
|
| 175 |
+
public function getLowestMonthlyInstallment($price)
|
| 176 |
+
{
|
| 177 |
+
$minInstallment = false;
|
| 178 |
+
foreach ($this->getAllServices() as $service) {
|
| 179 |
+
$depositAmount = ($price) * ($service->getDeposit() / 100);
|
| 180 |
+
$depositAmount = round($depositAmount, 2);
|
| 181 |
+
$financeAmount = $price - $depositAmount;
|
| 182 |
+
$financeAmount = floor($financeAmount * 100) / 100;
|
| 183 |
+
|
| 184 |
+
if ($service->getType() == 32) {
|
| 185 |
+
$installment = $this->calcMonthlyPaymentInterestFree($financeAmount, $service);
|
| 186 |
+
} else {
|
| 187 |
+
$installment = $this->calcMonthlyPayment($financeAmount, $service);
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
if ($minInstallment === false || $minInstallment > $installment) {
|
| 191 |
+
$minInstallment = $installment;
|
| 192 |
+
}
|
| 193 |
+
}
|
| 194 |
+
|
| 195 |
+
return $minInstallment;
|
| 196 |
+
}
|
| 197 |
}
|
app/code/local/HC/PayByFinance/Model/Config/Source/Notification/Status.php
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Hitachi Capital Pay By Finance
|
| 4 |
+
*
|
| 5 |
+
* Hitachi Capital Pay By Finance Extension
|
| 6 |
+
*
|
| 7 |
+
* PHP version >= 5.3.*
|
| 8 |
+
*
|
| 9 |
+
* @category HC
|
| 10 |
+
* @package PayByFinance
|
| 11 |
+
* @author Healthy Websites <support@healthywebsites.co.uk>
|
| 12 |
+
* @copyright 2015 Hitachi Capital
|
| 13 |
+
* @license http://www.gnu.org/copyleft/gpl.html GPL License
|
| 14 |
+
* @link http://www.healthywebsites.co.uk/
|
| 15 |
+
*
|
| 16 |
+
*/
|
| 17 |
+
|
| 18 |
+
/**
|
| 19 |
+
* Provides the list statuses sent by Hitachi Capital during notification.
|
| 20 |
+
*
|
| 21 |
+
* @category HC
|
| 22 |
+
* @package PayByFinance
|
| 23 |
+
* @author Healthy Websites <support@healthywebsites.co.uk>
|
| 24 |
+
* @license http://www.gnu.org/copyleft/gpl.html GPL License
|
| 25 |
+
* @link http://www.healthywebsites.co.uk/
|
| 26 |
+
*/
|
| 27 |
+
class HC_PayByFinance_Model_Config_Source_Notification_Status
|
| 28 |
+
{
|
| 29 |
+
/**
|
| 30 |
+
* toOptionArray
|
| 31 |
+
*
|
| 32 |
+
* @return array Indexed array of options.
|
| 33 |
+
*/
|
| 34 |
+
public function toOptionArray()
|
| 35 |
+
{
|
| 36 |
+
$options = array(
|
| 37 |
+
'PAID' => 'PAID: The application has been paid.',
|
| 38 |
+
'COOLING_OFF' => 'COOLING_OFF: The application is in a cooling off period.',
|
| 39 |
+
);
|
| 40 |
+
|
| 41 |
+
return $options;
|
| 42 |
+
}
|
| 43 |
+
}
|
app/code/local/HC/PayByFinance/Model/Observer.php
CHANGED
|
@@ -215,4 +215,28 @@ class HC_PayByFinance_Model_Observer
|
|
| 215 |
return $this;
|
| 216 |
}
|
| 217 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
}
|
| 215 |
return $this;
|
| 216 |
}
|
| 217 |
|
| 218 |
+
/**
|
| 219 |
+
* Calculate lowest finance instalment based on product price and available
|
| 220 |
+
* services.
|
| 221 |
+
*
|
| 222 |
+
* @param Varien_Event_Observer $observer Observer
|
| 223 |
+
*
|
| 224 |
+
* @return void
|
| 225 |
+
*/
|
| 226 |
+
public function collectionLoadAfter(Varien_Event_Observer $observer)
|
| 227 |
+
{
|
| 228 |
+
$helper = Mage::helper('paybyfinance');
|
| 229 |
+
$calculator = Mage::getModel('paybyfinance/calculator');
|
| 230 |
+
|
| 231 |
+
$collection = $observer->getCollection();
|
| 232 |
+
|
| 233 |
+
foreach ($collection as $product) {
|
| 234 |
+
if ($helper->isProductEligible($product)) {
|
| 235 |
+
$product->setData('has_finance', true);
|
| 236 |
+
$minInstallment = $calculator->getLowestMonthlyInstallment($product->getPrice());
|
| 237 |
+
$product->setData('finance_from_price', $minInstallment);
|
| 238 |
+
}
|
| 239 |
+
}
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
}
|
app/code/local/HC/PayByFinance/Model/Sales/Order/Creditmemo/Financeamount.php
CHANGED
|
@@ -56,7 +56,7 @@ class HC_PayByFinance_Model_Sales_Order_Creditmemo_FInanceamount
|
|
| 56 |
|
| 57 |
$creditmemo->setGrandTotal($creditmemo->getGrandTotal() + $creditmemo->getFinanceAmount());
|
| 58 |
$creditmemo->setBaseGrandTotal(
|
| 59 |
-
$creditmemo->getBaseGrandTotal()
|
| 60 |
);
|
| 61 |
|
| 62 |
return $this;
|
| 56 |
|
| 57 |
$creditmemo->setGrandTotal($creditmemo->getGrandTotal() + $creditmemo->getFinanceAmount());
|
| 58 |
$creditmemo->setBaseGrandTotal(
|
| 59 |
+
$creditmemo->getBaseGrandTotal() + $creditmemo->getBaseFinanceAmount()
|
| 60 |
);
|
| 61 |
|
| 62 |
return $this;
|
app/code/local/HC/PayByFinance/Model/Sales/Order/Invoice/Financeamount.php
CHANGED
|
@@ -56,7 +56,7 @@ class HC_PayByFinance_Model_Sales_Order_Invoice_Financeamount
|
|
| 56 |
|
| 57 |
$invoice->setGrandTotal($invoice->getGrandTotal() + $invoice->getFinanceAmount());
|
| 58 |
$invoice->setBaseGrandTotal(
|
| 59 |
-
$invoice->getBaseGrandTotal()
|
| 60 |
);
|
| 61 |
|
| 62 |
return $this;
|
| 56 |
|
| 57 |
$invoice->setGrandTotal($invoice->getGrandTotal() + $invoice->getFinanceAmount());
|
| 58 |
$invoice->setBaseGrandTotal(
|
| 59 |
+
$invoice->getBaseGrandTotal() + $invoice->getBaseFinanceAmount()
|
| 60 |
);
|
| 61 |
|
| 62 |
return $this;
|
app/code/local/HC/PayByFinance/controllers/CheckoutController.php
CHANGED
|
@@ -74,9 +74,10 @@ class HC_PayByFinance_CheckoutController extends Mage_Core_Controller_Front_Acti
|
|
| 74 |
$productCount = 0;
|
| 75 |
$additionalItems = 0;
|
| 76 |
foreach ($eligibleProducts as $key => $product) {
|
|
|
|
| 77 |
$productsInForm['gc' . $productCount] = $product->getSku();
|
| 78 |
$productsInForm['pc' . $productCount] = $product->getSku();
|
| 79 |
-
$productsInForm['gd' . $productCount] = $
|
| 80 |
$productsInForm['q' . $productCount] = intval($product->getQtyOrdered());
|
| 81 |
$productsInForm['gp' . $productCount] =
|
| 82 |
floor($product->getPriceInclTax() * 10000) / 10000;
|
| 74 |
$productCount = 0;
|
| 75 |
$additionalItems = 0;
|
| 76 |
foreach ($eligibleProducts as $key => $product) {
|
| 77 |
+
$productName = $helper->sanitizeProductName($product->getName());
|
| 78 |
$productsInForm['gc' . $productCount] = $product->getSku();
|
| 79 |
$productsInForm['pc' . $productCount] = $product->getSku();
|
| 80 |
+
$productsInForm['gd' . $productCount] = $productName;
|
| 81 |
$productsInForm['q' . $productCount] = intval($product->getQtyOrdered());
|
| 82 |
$productsInForm['gp' . $productCount] =
|
| 83 |
floor($product->getPriceInclTax() * 10000) / 10000;
|
app/code/local/HC/PayByFinance/controllers/NotificationController.php
CHANGED
|
@@ -38,10 +38,10 @@ class HC_PayByFinance_NotificationController extends Mage_Core_Controller_Front_
|
|
| 38 |
$parameters = $this->getRequest()->getParams();
|
| 39 |
$helper = Mage::helper('paybyfinance');
|
| 40 |
|
| 41 |
-
if (!array_key_exists('
|
| 42 |
-
|| !is_numeric($parameters['
|
| 43 |
|| !array_key_exists('status', $parameters)
|
| 44 |
-
|| !array_key_exists('
|
| 45 |
) {
|
| 46 |
$helper->log(
|
| 47 |
'Error in notification parameters: ' . $helper->arrayDump($parameters),
|
|
@@ -51,7 +51,7 @@ class HC_PayByFinance_NotificationController extends Mage_Core_Controller_Front_
|
|
| 51 |
die();
|
| 52 |
}
|
| 53 |
|
| 54 |
-
$orderId = $parameters['
|
| 55 |
|
| 56 |
$order = Mage::getModel('sales/order')->load($orderId);
|
| 57 |
if (!$order->getId()) {
|
| 38 |
$parameters = $this->getRequest()->getParams();
|
| 39 |
$helper = Mage::helper('paybyfinance');
|
| 40 |
|
| 41 |
+
if (!array_key_exists('supplierReference', $parameters)
|
| 42 |
+
|| !is_numeric($parameters['supplierReference'])
|
| 43 |
|| !array_key_exists('status', $parameters)
|
| 44 |
+
|| !array_key_exists('applicationNumber', $parameters)
|
| 45 |
) {
|
| 46 |
$helper->log(
|
| 47 |
'Error in notification parameters: ' . $helper->arrayDump($parameters),
|
| 51 |
die();
|
| 52 |
}
|
| 53 |
|
| 54 |
+
$orderId = $parameters['supplierReference'];
|
| 55 |
|
| 56 |
$order = Mage::getModel('sales/order')->load($orderId);
|
| 57 |
if (!$order->getId()) {
|
app/code/local/HC/PayByFinance/etc/config.xml
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
<config>
|
| 3 |
<modules>
|
| 4 |
<HC_PayByFinance>
|
| 5 |
-
<version>1.0.
|
| 6 |
</HC_PayByFinance>
|
| 7 |
</modules>
|
| 8 |
<global>
|
|
@@ -205,6 +205,17 @@
|
|
| 205 |
</args>
|
| 206 |
</hc_paybyfinance>
|
| 207 |
</routers>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 208 |
</frontend>
|
| 209 |
|
| 210 |
<adminhtml>
|
|
@@ -251,6 +262,7 @@
|
|
| 251 |
<include_shipping>1</include_shipping>
|
| 252 |
<address_checked>0</address_checked>
|
| 253 |
<wizard>0</wizard>
|
|
|
|
| 254 |
</general>
|
| 255 |
<order_status>
|
| 256 |
<accepted>finance_accepted</accepted>
|
| 2 |
<config>
|
| 3 |
<modules>
|
| 4 |
<HC_PayByFinance>
|
| 5 |
+
<version>1.0.5</version>
|
| 6 |
</HC_PayByFinance>
|
| 7 |
</modules>
|
| 8 |
<global>
|
| 205 |
</args>
|
| 206 |
</hc_paybyfinance>
|
| 207 |
</routers>
|
| 208 |
+
<events>
|
| 209 |
+
<catalog_product_collection_load_after>
|
| 210 |
+
<observers>
|
| 211 |
+
<hc_paybyfinance_product_collection_load_after>
|
| 212 |
+
<type>singleton</type>
|
| 213 |
+
<class>paybyfinance/observer</class>
|
| 214 |
+
<method>collectionLoadAfter</method>
|
| 215 |
+
</hc_paybyfinance_product_collection_load_after>
|
| 216 |
+
</observers>
|
| 217 |
+
</catalog_product_collection_load_after>
|
| 218 |
+
</events>
|
| 219 |
</frontend>
|
| 220 |
|
| 221 |
<adminhtml>
|
| 262 |
<include_shipping>1</include_shipping>
|
| 263 |
<address_checked>0</address_checked>
|
| 264 |
<wizard>0</wizard>
|
| 265 |
+
<process_order>PAID</process_order>
|
| 266 |
</general>
|
| 267 |
<order_status>
|
| 268 |
<accepted>finance_accepted</accepted>
|
app/code/local/HC/PayByFinance/etc/system.xml
CHANGED
|
@@ -102,6 +102,16 @@
|
|
| 102 |
<show_in_website>1</show_in_website>
|
| 103 |
<show_in_store>1</show_in_store>
|
| 104 |
</wizard>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 105 |
</fields>
|
| 106 |
</general>
|
| 107 |
<order_status>
|
| 102 |
<show_in_website>1</show_in_website>
|
| 103 |
<show_in_store>1</show_in_store>
|
| 104 |
</wizard>
|
| 105 |
+
<process_order>
|
| 106 |
+
<label>Process orders after received status</label>
|
| 107 |
+
<comment>Hitachi Capital sends statuses in notification, then this status will process the order</comment>
|
| 108 |
+
<frontend_type>select</frontend_type>
|
| 109 |
+
<source_model>paybyfinance/config_source_notification_status</source_model>
|
| 110 |
+
<sort_order>9</sort_order>
|
| 111 |
+
<show_in_default>1</show_in_default>
|
| 112 |
+
<show_in_website>1</show_in_website>
|
| 113 |
+
<show_in_store>1</show_in_store>
|
| 114 |
+
</process_order>
|
| 115 |
</fields>
|
| 116 |
</general>
|
| 117 |
<order_status>
|
app/code/local/HC/PayByFinance/sql/paybyfinance_setup/{mysql4-install-1.0.4.php → mysql4-install-1.0.5.php}
RENAMED
|
@@ -190,7 +190,7 @@ $setup->addAttribute(
|
|
| 190 |
'comparable' => true,
|
| 191 |
'visible_on_front' => false,
|
| 192 |
'visible_in_advanced_search' => false,
|
| 193 |
-
'used_in_product_listing' =>
|
| 194 |
'used_for_sort_by' => false,
|
| 195 |
'unique' => false,
|
| 196 |
'apply_to' => '',
|
| 190 |
'comparable' => true,
|
| 191 |
'visible_on_front' => false,
|
| 192 |
'visible_in_advanced_search' => false,
|
| 193 |
+
'used_in_product_listing' => true,
|
| 194 |
'used_for_sort_by' => false,
|
| 195 |
'unique' => false,
|
| 196 |
'apply_to' => '',
|
app/code/local/HC/PayByFinance/sql/paybyfinance_setup/mysql4-upgrade-1.0.4-1.0.5.php
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Hitachi Capital Pay By Finance
|
| 4 |
+
*
|
| 5 |
+
* Hitachi Capital Pay By Finance Extension
|
| 6 |
+
*
|
| 7 |
+
* PHP version >= 5.3.*
|
| 8 |
+
*
|
| 9 |
+
* @category HC
|
| 10 |
+
* @package PayByFinance
|
| 11 |
+
* @author Healthy Websites <support@healthywebsites.co.uk>
|
| 12 |
+
* @copyright 2014 Hitachi Capital
|
| 13 |
+
* @license http://www.gnu.org/copyleft/gpl.html GPL License
|
| 14 |
+
* @link http://www.healthywebsites.co.uk/
|
| 15 |
+
*
|
| 16 |
+
*/
|
| 17 |
+
|
| 18 |
+
$updater = $this; // $this is class Mage_Eav_Model_Entity_Setup
|
| 19 |
+
$updater->startSetup();
|
| 20 |
+
|
| 21 |
+
$installer = Mage::getModel('eav/entity_setup', 'core_setup');
|
| 22 |
+
$entityTypeId = $installer->getEntityTypeId('catalog_product');
|
| 23 |
+
|
| 24 |
+
// replace <my_attribute_code> with your attribute code
|
| 25 |
+
$idAttribute = $installer->getAttribute($entityTypeId, 'paybyfinance_enable', 'attribute_id');
|
| 26 |
+
$installer->updateAttribute(
|
| 27 |
+
$entityTypeId,
|
| 28 |
+
$idAttribute,
|
| 29 |
+
array(
|
| 30 |
+
'used_in_product_listing' => 1
|
| 31 |
+
)
|
| 32 |
+
);
|
| 33 |
+
|
| 34 |
+
$updater->endSetup();
|
app/design/frontend/base/default/layout/paybyfinance.xml
CHANGED
|
@@ -39,6 +39,12 @@
|
|
| 39 |
</reference>
|
| 40 |
</default>
|
| 41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
<catalog_product_view>
|
| 43 |
<reference name="product.info">
|
| 44 |
<block type="paybyfinance/selector" name="paybyfinance.selector" as="pbfselector" template="paybyfinance/selector.phtml">
|
| 39 |
</reference>
|
| 40 |
</default>
|
| 41 |
|
| 42 |
+
<product_list>
|
| 43 |
+
<reference name="product_list.name.after">
|
| 44 |
+
<block type="paybyfinance/product_list_finance" name="product_list.paybyfinance" template="paybyfinance/catalog/product/list/finance.phtml"/>
|
| 45 |
+
</reference>
|
| 46 |
+
</product_list>
|
| 47 |
+
|
| 48 |
<catalog_product_view>
|
| 49 |
<reference name="product.info">
|
| 50 |
<block type="paybyfinance/selector" name="paybyfinance.selector" as="pbfselector" template="paybyfinance/selector.phtml">
|
app/design/frontend/base/default/template/paybyfinance/catalog/product/list/finance.phtml
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php if ($this->hasFinance()) : ?>
|
| 2 |
+
<div class="productlist-paybyfinance-label">
|
| 3 |
+
<?php echo $this->__('Finance Available From %s', $this->getFinanceFromPrice()) ?>
|
| 4 |
+
</div>
|
| 5 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/paybyfinance/selector.phtml
CHANGED
|
@@ -172,7 +172,7 @@ $_secure = $this->getRequest()->isSecure();
|
|
| 172 |
var value = $("pbf-input-deposit").value * 10;
|
| 173 |
var service_id = $$('#paybyfinance input:checked[name=service]')[0].value;
|
| 174 |
var service = pbf_selector_data.services[service_id];
|
| 175 |
-
var deposit = ((value / 100) * pbf_selector_data.amount);
|
| 176 |
var credit = (pbf_selector_data.amount - deposit);
|
| 177 |
var monthly = Math.floor((credit * service.multiplier) * 100) / 100; // No rounding issues, rounding always down
|
| 178 |
if (service.type == '32') {
|
| 172 |
var value = $("pbf-input-deposit").value * 10;
|
| 173 |
var service_id = $$('#paybyfinance input:checked[name=service]')[0].value;
|
| 174 |
var service = pbf_selector_data.services[service_id];
|
| 175 |
+
var deposit = Math.round(((value / 100) * pbf_selector_data.amount) * 100) / 100;
|
| 176 |
var credit = (pbf_selector_data.amount - deposit);
|
| 177 |
var monthly = Math.floor((credit * service.multiplier) * 100) / 100; // No rounding issues, rounding always down
|
| 178 |
if (service.type == '32') {
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>HC_PayByFinance</name>
|
| 4 |
-
<version>1.0.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://www.healthywebsites.co.uk/license.html">Healthy Websites</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -9,13 +9,17 @@
|
|
| 9 |
<summary>Hitachi Capital Pay By Finance</summary>
|
| 10 |
<description>Hitachi Capital Pay By Finance</description>
|
| 11 |
<notes>Change Log:
|
| 12 |
-
*
|
| 13 |
-
* HC-
|
| 14 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
<authors><author><name>Sandor Czettner</name><user>MAG000003395</user><email>support@healthywebsites.co.uk</email></author><author><name>Alistair Macneil</name><user>MAG000006529</user><email>support@healthywebsites.co.uk</email></author><author><name>Rhuaridh Clark</name><user>MAG002562063</user><email>support@healthywebsites.co.uk</email></author></authors>
|
| 16 |
-
<date>2015-
|
| 17 |
-
<time>
|
| 18 |
-
<contents><target name="magelocal"><dir><dir name="HC"><dir name="PayByFinance"><dir name="Block"><dir name="Adminhtml"><dir name="Paybyfinance"><file name="Redirect.php" hash="b7aadc98068529d4fb08219a83b2e69b"/><dir name="Service"><dir name="Edit"><file name="Form.php" hash="19f94b6405f5ec45510022c5aff868c2"/><dir name="Tab"><file name="Form.php" hash="77316baf7e8d387037007b97067fff8b"/></dir><file name="Tabs.php" hash="5af9151c310841d8dd0b6f7e8f984625"/></dir><file name="Edit.php" hash="d73f958b0abaebff8aff703f650c5a01"/><file name="Grid.php" hash="38f482f561c0be60b8a7ac6f49e74df9"/></dir><file name="Service.php" hash="26112ba2733a9db951addfef4e0152e8"/></dir><file name="Version.php" hash="a5781fa3cd366242d76295b7b62ab43f"/></dir><dir name="Checkout"><file name="Redirect.php" hash="30f1cf1f682abc985e872619b67a86d7"/></dir><dir name="Sales"><dir name="Order"><file name="Totals.php" hash="1fe522dd0d6a4c890374b2602b840d3b"/></dir></dir><file name="Selector.php" hash="cec4b9a148b8b06458bddc03f3a7747d"/><file name="Status.php" hash="338f52aa781e3e7703862e180339a1aa"/></dir><dir name="Helper"><file name="Cart.php" hash="121aa99b2d5ceb953a1e790e244d02eb"/><file name="Checkout.php" hash="2e5c242b333cda10fa0993b036b9cbf4"/><file name="Data.php" hash="
|
| 19 |
<compatible/>
|
| 20 |
<dependencies><required><php><min>5.4.26</min><max>5.6.7</max></php></required></dependencies>
|
| 21 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>HC_PayByFinance</name>
|
| 4 |
+
<version>1.0.5.1</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://www.healthywebsites.co.uk/license.html">Healthy Websites</license>
|
| 7 |
<channel>community</channel>
|
| 9 |
<summary>Hitachi Capital Pay By Finance</summary>
|
| 10 |
<description>Hitachi Capital Pay By Finance</description>
|
| 11 |
<notes>Change Log:
|
| 12 |
+
* Remove JavaScript warnings
|
| 13 |
+
* HC-195 Deposit rounding issue
|
| 14 |
+
* HC-188 Rounding Down the finance amount
|
| 15 |
+
* HC-175 Fix illegal chars in product name
|
| 16 |
+
* HC-156 Finance offer on product lists
|
| 17 |
+
* HC-173 implement changes according to updated specification (notification url)
|
| 18 |
+
* HC-201 Invoice base_grand_total calculation fix</notes>
|
| 19 |
<authors><author><name>Sandor Czettner</name><user>MAG000003395</user><email>support@healthywebsites.co.uk</email></author><author><name>Alistair Macneil</name><user>MAG000006529</user><email>support@healthywebsites.co.uk</email></author><author><name>Rhuaridh Clark</name><user>MAG002562063</user><email>support@healthywebsites.co.uk</email></author></authors>
|
| 20 |
+
<date>2015-06-12</date>
|
| 21 |
+
<time>14:23:19</time>
|
| 22 |
+
<contents><target name="magelocal"><dir><dir name="HC"><dir name="PayByFinance"><dir name="Block"><dir name="Adminhtml"><dir name="Paybyfinance"><file name="Redirect.php" hash="b7aadc98068529d4fb08219a83b2e69b"/><dir name="Service"><dir name="Edit"><file name="Form.php" hash="19f94b6405f5ec45510022c5aff868c2"/><dir name="Tab"><file name="Form.php" hash="77316baf7e8d387037007b97067fff8b"/></dir><file name="Tabs.php" hash="5af9151c310841d8dd0b6f7e8f984625"/></dir><file name="Edit.php" hash="d73f958b0abaebff8aff703f650c5a01"/><file name="Grid.php" hash="38f482f561c0be60b8a7ac6f49e74df9"/></dir><file name="Service.php" hash="26112ba2733a9db951addfef4e0152e8"/></dir><file name="Version.php" hash="a5781fa3cd366242d76295b7b62ab43f"/></dir><dir name="Checkout"><file name="Redirect.php" hash="30f1cf1f682abc985e872619b67a86d7"/></dir><dir name="Product"><dir name="List"><file name="Finance.php" hash="a9dd554c1c95fc4c912f71ab3ac94d2c"/></dir></dir><dir name="Sales"><dir name="Order"><file name="Totals.php" hash="1fe522dd0d6a4c890374b2602b840d3b"/></dir></dir><file name="Selector.php" hash="cec4b9a148b8b06458bddc03f3a7747d"/><file name="Status.php" hash="338f52aa781e3e7703862e180339a1aa"/></dir><dir name="Helper"><file name="Cart.php" hash="121aa99b2d5ceb953a1e790e244d02eb"/><file name="Checkout.php" hash="2e5c242b333cda10fa0993b036b9cbf4"/><file name="Data.php" hash="4a3797487c6128b07f3502266e2862eb"/><file name="Notification.php" hash="a72c5a8885a83051e28fe77d6a8f36a7"/></dir><dir name="Model"><file name="Calculator.php" hash="a81e3a8a548a349660d513e79ba521f2"/><dir name="Config"><dir name="Source"><dir name="Catalog"><dir name="Product"><file name="Finance.php" hash="68dfc0233403f61c82aa62009cdd2da7"/><file name="Type.php" hash="4494b3f46eddc7455e363281072df315"/></dir></dir><dir name="Cms"><file name="Block.php" hash="a4302b47926c40f480ea84f81420070f"/></dir><file name="Connectionmode.php" hash="a734e5ae89d3dd72ba80c97b358d3923"/><dir name="Notification"><file name="Status.php" hash="0e9792c4ea7e27e61472d60e07227c5e"/></dir><file name="Type.php" hash="ce4604dccb55c6ce450fd34d4fa8ad4d"/></dir></dir><file name="Log.php" hash="446fc48510a09b279ad725bf87b839ff"/><dir name="Mysql4"><dir name="Log"><file name="Collection.php" hash="6ebe6b95b2565601cd77f1d4db264ff4"/></dir><file name="Log.php" hash="914cb47c3274c2cce6a3913302a2d4e3"/><dir name="Service"><file name="Collection.php" hash="c68147d484d42d4b6b6f4fedc2ac6cc7"/></dir><file name="Service.php" hash="3dac2e956f57c9a1467e52a0f008fefd"/></dir><file name="Observer.php" hash="3e51b9b64e9f7882478d43d4500ea89a"/><dir name="Paypal"><dir name="Api"><file name="Nvp.php" hash="5d1f7b687e2ca293ac1dc0c0425d1b8f"/></dir><dir name="Hostedpro"><file name="Request.php" hash="11ba073df9037d899eecb211c062d5f5"/></dir></dir><dir name="PaypalUk"><dir name="Api"><file name="Nvp.php" hash="49ba8cbd3145939a3d78e4964d1fe27e"/></dir></dir><dir name="Post"><file name="Abstract.php" hash="f6eeda7e77637957a68071f10b9954ce"/><file name="Live.php" hash="dd7b6a145f11ac7e5521541ba9a04111"/><file name="Simulation.php" hash="cb9b14475150e9303cd92831bb1eff6d"/><file name="Test.php" hash="749fb1a3384695e9f24f2fbf5fd82d47"/><file name="Unittest.php" hash="fe5d5590d720d4d2c824bcaf3ca83e55"/></dir><file name="Post.php" hash="c45665581817d711048d37bed0ecb67b"/><dir name="Resource"><file name="Setup.php" hash="c20cba205135fbfb01055518102b4681"/></dir><dir name="Sales"><dir name="Order"><dir name="Creditmemo"><file name="Financeamount.php" hash="d21bf32738a9cd371cfd2140c5e8d5d6"/></dir><dir name="Invoice"><file name="Financeamount.php" hash="f6515a9330b30eab9254f2f34e6d1cfb"/></dir></dir><dir name="Quote"><file name="Financeamount.php" hash="6ab0b4a17a0e2b09cc17e4bf58f080e1"/><file name="Totalcost.php" hash="54d35aa594ede6d873b17ef3df180b9b"/></dir></dir><file name="Service.php" hash="5cc3d5959b8e08b11ca754da67776efd"/><file name="Session.php" hash="c2cdc285f6297ad2dc100973022ec6d4"/><file name="Sessionobserver.php" hash="b7ec4aa8a95845dd731522eb7f66196a"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Paybyfinance"><file name="RedirectController.php" hash="8098982cfa01371e3427d0b7a8da6829"/><file name="ServiceController.php" hash="0f394469d41e6b37f9f39d3e666a719f"/></dir></dir><file name="CheckoutController.php" hash="8597b8ce4ce0b3564996e636358ac693"/><file name="NotificationController.php" hash="3a1ad67da91acc34a623ad52d12fcf44"/><file name="SelectorController.php" hash="42a24424f721f425fca70de6dbeff767"/><file name="SessionController.php" hash="b3756993e0d8e6e49434354c824f837e"/><file name="StatusController.php" hash="9e8681654954590f2694780f18ab0675"/></dir><dir name="etc"><file name="adminhtml.xml" hash="216df222a5f5d9fdcf29c238cfd78bd5"/><file name="config.xml" hash="8b67383c26c3856e76b2b1bd0bfee0a8"/><file name="system.xml" hash="f399289f1632bd5476543ff47e61359a"/></dir><dir name="sql"><dir name="paybyfinance_setup"><dir name="html"><file name="abandoned.html" hash="424f900dbddc267f7dac72e67752df25"/><file name="accepted.html" hash="5a12318275410a8bf62d7508422d9503"/><file name="declined.html" hash="bd3e7565c3d98645629d9f6274e4bf24"/><file name="error.html" hash="4a448b052f101b2648dfe84423ad1313"/><file name="information.html" hash="b364458ba3d9ad7579fa4935e3449b46"/><file name="page-finance-options.html" hash="d6786a27e4bf82a73e3134df0f98888b"/><file name="referred.html" hash="5955befddbb2e274f350ba71458b6151"/></dir><file name="mysql4-install-1.0.5.php" hash="36e8a0c020334703bf748374129cb566"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="35e40e56f4eaa482cf76861bf268b9d7"/><file name="mysql4-upgrade-1.0.1-1.0.2.php" hash="f88bb5dae696c130c0038c05e86dfd9c"/><file name="mysql4-upgrade-1.0.3-1.0.4.php" hash="abd3f7c7e68120a6bcad82470f62db25"/><file name="mysql4-upgrade-1.0.4-1.0.5.php" hash="54fa31133574e43e44b3a9694bdb729f"/></dir></dir></dir></dir></dir></target><target name="magedesign"><dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="paybyfinance"><dir><dir name="catalog"><dir name="product"><dir name="list"><file name="finance.phtml" hash="30f6500bc535bdf851ff6d5768e383dc"/></dir></dir></dir><dir name="sales"><dir name="order"><file name="totals.phtml" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir></dir><file name="form.phtml" hash="6f583d5629e39fe564d4b86535242c7a"/><file name="selector-no.phtml" hash="b54c570f68254a2e879464a0b761c7db"/><file name="selector.phtml" hash="2a4c293be0ec3b13d40a6080725dd8eb"/><file name="status.phtml" hash="9e02cb668c470d72612bccc09e34c51a"/></dir><dir name="checkout"><dir name="cart"><file name="totals-pbf.phtml" hash="f14878e618aa3c8943f3728128aadaa6"/></dir><dir name="onepage"><dir name="review"><file name="info-pbf.phtml" hash="e4c7c70c798f1956ae7aaa5c09114fab"/><file name="totals-pbf.phtml" hash="f26e488359433c3814a1cd416006869a"/></dir></dir><file name="cart-pbf.phtml" hash="9f6b1873ed02e5e2ae1966e3e5a1910d"/></dir></dir><dir name="layout"><file name="paybyfinance.xml" hash="2e607a75275674c94d13869b6f1eaac6"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="paybyfinance.xml" hash="6dd419ed31a10c3fc409a5a58f89fe01"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="js"><dir name="paybyfinance"><file name="checkout.js" hash="21051d8691dd773427d3e761403896ab"/><file name="functions.js" hash="98c27381b3f7eaeaa845271dbe763f05"/><file name="slider.js" hash="16d83f4f0faa449276c926d2afac75fb"/></dir></dir><dir name="css"><file name="paybyfinance.css" hash="25d02dc5cf228662c30d908d7c2f1356"/><file name="paybyfinance-ie8.css" hash="a6be9c7af8b95300bc62e4fe9ef252ac"/></dir><dir name="images"><dir name="paybyfinance"><file name="bullet.png" hash="ea2baab34b2eb7d0aacb7a67d5b080f1"/><file name="pointer-toggle.png" hash="e661d42aed7a5562f75828312c7a635a"/><file name="pointer.png" hash="68c58b28d6ebd77d415f8666c301a199"/><file name="progress.png" hash="6d46a109cc9e38a663678918142d89f2"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir><dir name="modules"><file name="HC_PayByFinance.xml" hash="7cbf54af53b5b2fe9047988444fd407c"/></dir></dir></target></contents>
|
| 23 |
<compatible/>
|
| 24 |
<dependencies><required><php><min>5.4.26</min><max>5.6.7</max></php></required></dependencies>
|
| 25 |
</package>
|
