HC_PayByFinance - Version 2.0.5.0

Version Notes

Change Log:
* HC-200 Additional support for Address Checking
* HC-448 Rounding rules for IFC and IBC
* HC-454 Use the same Shipping/Billing address for finance
* HC-458 Resolve on save issue for certain services
* HC-460 Change text on finance sliders
* HC-497 Update Magento Finance Options text
* HC-500 Additional support for Configurable products
* HC-503 Always display *Grand Total wording when order is financed

Download this release

Release Info

Developer Sandor Czettner
Extension HC_PayByFinance
Version 2.0.5.0
Comparing to
See all releases


Code changes from version 2.0.3.2 to 2.0.5.0

Files changed (30) hide show
  1. app/code/local/HC/PayByFinance/Block/Adminhtml/Paybyfinance/Service/Edit/Tab/Form.php +4 -5
  2. app/code/local/HC/PayByFinance/Block/Adminhtml/Version.php +1 -1
  3. app/code/local/HC/PayByFinance/Helper/Cart.php +32 -0
  4. app/code/local/HC/PayByFinance/Helper/Checkout.php +80 -38
  5. app/code/local/HC/PayByFinance/Helper/Data.php +62 -0
  6. app/code/local/HC/PayByFinance/Helper/Notification.php +49 -3
  7. app/code/local/HC/PayByFinance/Model/Calculator.php +2 -2
  8. app/code/local/HC/PayByFinance/Model/Config/Source/Type.php +12 -0
  9. app/code/local/HC/PayByFinance/Model/Observer.php +31 -0
  10. app/code/local/HC/PayByFinance/Model/Post.php +1 -2
  11. app/code/local/HC/PayByFinance/Model/Post/Abstract.php +11 -1
  12. app/code/local/HC/PayByFinance/controllers/Adminhtml/Paybyfinance/ServiceController.php +6 -2
  13. app/code/local/HC/PayByFinance/controllers/CheckoutController.php +26 -12
  14. app/code/local/HC/PayByFinance/controllers/NotificationController.php +75 -0
  15. app/code/local/HC/PayByFinance/etc/config.xml +35 -1
  16. app/code/local/HC/PayByFinance/etc/system.xml +2 -2
  17. app/code/local/HC/PayByFinance/sql/paybyfinance_setup/html/accepted.html +2 -2
  18. app/code/local/HC/PayByFinance/sql/paybyfinance_setup/html/page-finance-options.html +1092 -188
  19. app/code/local/HC/PayByFinance/sql/paybyfinance_setup/mysql4-upgrade-2.0.3-2.0.4.php +30 -0
  20. app/code/local/HC/PayByFinance/sql/paybyfinance_setup/mysql4-upgrade-2.0.4-2.0.5.php +120 -0
  21. app/design/adminhtml/default/default/layout/paybyfinance.xml +16 -0
  22. app/design/adminhtml/default/default/template/paybyfinance/enhaceaddress/orderview/address/info.phtml +185 -0
  23. app/design/frontend/base/default/layout/paybyfinance.xml +44 -2
  24. app/design/frontend/base/default/template/checkout/onepage/review/info-pbf.phtml +0 -85
  25. app/design/frontend/base/default/template/paybyfinance/enhaceaddress/customer/address/edit.phtml +186 -0
  26. app/design/frontend/base/default/template/paybyfinance/enhaceaddress/customer/address/onepage/billing.phtml +248 -0
  27. app/design/frontend/base/default/template/paybyfinance/enhaceaddress/customer/address/onepage/shipping.phtml +176 -0
  28. app/design/frontend/base/default/template/paybyfinance/selector.phtml +31 -12
  29. package.xml +13 -11
  30. skin/frontend/base/default/js/paybyfinance/adress-enhanced-validation.js +29 -0
app/code/local/HC/PayByFinance/Block/Adminhtml/Paybyfinance/Service/Edit/Tab/Form.php CHANGED
@@ -131,6 +131,7 @@ class HC_PayByFinance_Block_Adminhtml_Paybyfinance_Service_Edit_Tab_Form
131
  'label' => $helper->__('Maximum Loan Amount'),
132
  'required' => false,
133
  'name' => 'max_amount',
 
134
  )
135
  );
136
 
@@ -161,9 +162,7 @@ class HC_PayByFinance_Block_Adminhtml_Paybyfinance_Service_Edit_Tab_Form
161
  ->getStoreValuesForForm(false, true),
162
  )
163
  );
164
-
165
-
166
-
167
  if (Mage::getSingleton('adminhtml/session')->getServiceData()) {
168
  $form->setValues(
169
  Mage::getSingleton('adminhtml/session')->getServiceData()
@@ -184,8 +183,8 @@ class HC_PayByFinance_Block_Adminhtml_Paybyfinance_Service_Edit_Tab_Form
184
  ->addFieldDependence(
185
  'defer_term', 'type',
186
  array((string) HC_PayByFinance_Model_Config_Source_Type::TYPE25,
187
- (string) HC_PayByFinance_Model_Config_Source_Type::TYPE34,
188
- (string) HC_PayByFinance_Model_Config_Source_Type::TYPE35)
189
  )
190
  );
191
 
131
  'label' => $helper->__('Maximum Loan Amount'),
132
  'required' => false,
133
  'name' => 'max_amount',
134
+ 'after_element_html' => '<p class="nm"><small>Leave blank to no limit</small></p>'
135
  )
136
  );
137
 
162
  ->getStoreValuesForForm(false, true),
163
  )
164
  );
165
+
 
 
166
  if (Mage::getSingleton('adminhtml/session')->getServiceData()) {
167
  $form->setValues(
168
  Mage::getSingleton('adminhtml/session')->getServiceData()
183
  ->addFieldDependence(
184
  'defer_term', 'type',
185
  array((string) HC_PayByFinance_Model_Config_Source_Type::TYPE25,
186
+ (string) HC_PayByFinance_Model_Config_Source_Type::TYPE34,
187
+ (string) HC_PayByFinance_Model_Config_Source_Type::TYPE35)
188
  )
189
  );
190
 
app/code/local/HC/PayByFinance/Block/Adminhtml/Version.php CHANGED
@@ -29,7 +29,7 @@
29
  class HC_PayByFinance_Block_Adminhtml_Version extends Mage_Adminhtml_Block_Template
30
  implements Varien_Data_Form_Element_Renderer_Interface
31
  {
32
- const PATCH_LEVEL = 2;
33
 
34
  protected $_template = "paybyfinance/version.phtml";
35
 
29
  class HC_PayByFinance_Block_Adminhtml_Version extends Mage_Adminhtml_Block_Template
30
  implements Varien_Data_Form_Element_Renderer_Interface
31
  {
32
+ const PATCH_LEVEL = 0;
33
 
34
  protected $_template = "paybyfinance/version.phtml";
35
 
app/code/local/HC/PayByFinance/Helper/Cart.php CHANGED
@@ -29,6 +29,8 @@
29
  class HC_PayByFinance_Helper_Cart extends Mage_Core_Helper_Data
30
  {
31
 
 
 
32
  /**
33
  * getEligibleProducts
34
  *
@@ -38,6 +40,9 @@ class HC_PayByFinance_Helper_Cart extends Mage_Core_Helper_Data
38
  */
39
  public function getEligibleProducts($items = null)
40
  {
 
 
 
41
  if ($items === null) {
42
  $cart = Mage::getModel('checkout/cart')->getQuote();
43
  $items = $cart->getAllItems();
@@ -50,6 +55,7 @@ class HC_PayByFinance_Helper_Cart extends Mage_Core_Helper_Data
50
  $eligible[] = $item;
51
  }
52
  }
 
53
 
54
  return $eligible;
55
  }
@@ -91,4 +97,30 @@ class HC_PayByFinance_Helper_Cart extends Mage_Core_Helper_Data
91
  return $amount;
92
  }
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  }
29
  class HC_PayByFinance_Helper_Cart extends Mage_Core_Helper_Data
30
  {
31
 
32
+ protected $_eligibleProducts;
33
+
34
  /**
35
  * getEligibleProducts
36
  *
40
  */
41
  public function getEligibleProducts($items = null)
42
  {
43
+ if (isset($this->_eligibleProducts)) {
44
+ return $this->_eligibleProducts;
45
+ }
46
  if ($items === null) {
47
  $cart = Mage::getModel('checkout/cart')->getQuote();
48
  $items = $cart->getAllItems();
55
  $eligible[] = $item;
56
  }
57
  }
58
+ $this->_eligibleProducts = $eligible;
59
 
60
  return $eligible;
61
  }
97
  return $amount;
98
  }
99
 
100
+ /**
101
+ * getEligibleAmount for redirect POST. This was needed because of rounding conflict HC-469
102
+ *
103
+ * @param Collection $items Product collection or null
104
+ *
105
+ * @return float Sum of price * qty of eligible products.
106
+ */
107
+ public function getEligibleAmountForRedirect($items = null)
108
+ {
109
+ $amount = 0;
110
+ $items = $this->getEligibleProducts($items);
111
+ foreach ($items as $item) {
112
+ if ($item->getQty() != 0) {
113
+ $qty = $item->getQty();
114
+ } else {
115
+ $qty = $item->getQtyOrdered();
116
+ }
117
+ // Line subtotal is always rounded down for Hitachi POST
118
+ $price = $qty * $item->getPriceInclTax();
119
+ // PHP Float issues workaround: convert to string first.
120
+ // Note it would be better to use BCMath as an additional dependency.
121
+ $amount += intval((string) ($price * 100)) / 100;
122
+ }
123
+ return $amount;
124
+ }
125
+
126
  }
app/code/local/HC/PayByFinance/Helper/Checkout.php CHANGED
@@ -46,6 +46,9 @@ class HC_PayByFinance_Helper_Checkout extends Mage_Core_Helper_Data
46
  switch ($parameters['decision']) {
47
  case 'ACCEPTED':
48
  $status = Mage::getStoreConfig($helper::XML_PATH_STATUS_ACCEPTED);
 
 
 
49
  $redirectUrl = 'paybyfinance/status/accepted';
50
  break;
51
  case 'DECLINED':
@@ -70,12 +73,12 @@ class HC_PayByFinance_Helper_Checkout extends Mage_Core_Helper_Data
70
 
71
  $message = $this->getParamText('id', 'id', $parameters);
72
  $message .= $this->getParamText('id2', 'id2', $parameters);
73
- $message .= "\nFinance: " . $parameters['decision'];
74
- $message .= "\nApplication: " . isset($parameters['applicationNo'])?$parameters['applicationNo']:"N/A";
75
- $message .= "\nAuthorization: " . isset($parameters['authorisationcode'])?$parameters['authorisationcode']:"N/A";
76
- $message .= "\nSURL: " . isset($parameters['sourceurl'])?$parameters['sourceurl']:"N/A";
77
- $message .= $this->getParamText('Errreason', 'Reason', $parameters);
78
- $message .= $this->getParamText('Errtext', 'Message', $parameters);
79
 
80
  $state = Mage_Sales_Model_Order::STATE_PROCESSING;
81
  $financeStatus = $order->getFinanceStatus();
@@ -83,32 +86,41 @@ class HC_PayByFinance_Helper_Checkout extends Mage_Core_Helper_Data
83
  $financeStatus = 'ACCEPTED';
84
  }
85
 
86
- if ($parameters['decision'] == 'ACCEPTED') {
87
- $order->sendNewOrderEmail();
88
- $helper->log(
89
- 'New order email has been sent for order: ' . $order->getIncrementId(),
90
- 'post'
91
- );
92
- }
93
 
94
- if ($parameters['decision'] != $financeStatus // Don't change status if not modified.
95
- && !$order->getPaybyfinanceEnable() // Don't change status on second return.
96
- ) {
97
- $order->setState($state, $status);
98
- $order->setFinanceStatus($parameters['decision']);
99
- if ($parameters['decision'] != 'ACCEPTED') {
100
- $orderHelper = Mage::helper('paybyfinance/order');
101
- $orderHelper->sendFailedEmail($order, $parameters['decision']);
102
  $helper->log(
103
- 'Failed order email has been sent for order: ' . $order->getIncrementId() . "\n"
104
- . 'Finance status: ' . $parameters['decision'],
105
  'post'
106
  );
107
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  }
109
- $order->addStatusHistoryComment(nl2br(trim($message), false));
110
- $order->setPaybyfinanceEnable(true);
111
- $order->save();
112
 
113
  return $redirectUrl;
114
  }
@@ -145,21 +157,51 @@ class HC_PayByFinance_Helper_Checkout extends Mage_Core_Helper_Data
145
  {
146
  $helper = Mage::helper('paybyfinance');
147
  $status = Mage::getStoreConfig($helper::XML_PATH_STATUS_ABANDONED);
148
- $message = 'id: ' . $parameters['id'];
149
- $message .= ' id2: ' . $parameters['id2'];
150
- $message .= "\n" . $parameters['decision'];
151
- $message .= "\nApplication: " .
152
- isset($parameters['applicationNo'])?$parameters['applicationNo']:"N/A";
153
- $message .= "\nAuthorization: " .
154
- isset($parameters['authorisationcode'])?$parameters['authorisationcode']:"N/A";
155
- $message .= "\nSURL: " . isset($parameters['sourceurl'])?$parameters['sourceurl']:"N/A";
156
- $message .= "\nReason: " . $parameters['Errreason'];
157
- $message .= "\nMessage: " . $parameters['Errtext'];
158
 
159
  $state = Mage_Sales_Model_Order::STATE_PROCESSING;
160
- $order->setState($state, $status);
161
  $order->addStatusToHistory($status, nl2br(trim($message)), false);
162
- $order->save();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  }
164
 
165
  }
46
  switch ($parameters['decision']) {
47
  case 'ACCEPTED':
48
  $status = Mage::getStoreConfig($helper::XML_PATH_STATUS_ACCEPTED);
49
+ if ($order->getStatus() == 'processing') {
50
+ $status = 'processing'; // HC-261 Race condition on previously REFERRED orders
51
+ }
52
  $redirectUrl = 'paybyfinance/status/accepted';
53
  break;
54
  case 'DECLINED':
73
 
74
  $message = $this->getParamText('id', 'id', $parameters);
75
  $message .= $this->getParamText('id2', 'id2', $parameters);
76
+ $message .= $this->getParamText('decision', 'decision', $parameters);
77
+ $message .= $this->getParamText('applicationNo', 'applicationNo', $parameters);
78
+ $message .= $this->getParamText('authorisationcode', 'authorisationcode', $parameters);
79
+ $message .= $this->getParamText('sourceurl', 'sourceurl', $parameters);
80
+ $message .= $this->getParamText('Errreason', 'Errreason', $parameters);
81
+ $message .= $this->getParamText('Errtext', 'Errtext', $parameters);
82
 
83
  $state = Mage_Sales_Model_Order::STATE_PROCESSING;
84
  $financeStatus = $order->getFinanceStatus();
86
  $financeStatus = 'ACCEPTED';
87
  }
88
 
89
+ //Proceed with emails and saving order changes only in case the status change is allowed
90
+ if (Mage::helper('paybyfinance/checkout')->setOrderStateSafe($order, $state, $status)) {
 
 
 
 
 
91
 
92
+ if ($parameters['decision'] == 'ACCEPTED') {
93
+ $order->sendNewOrderEmail();
 
 
 
 
 
 
94
  $helper->log(
95
+ 'New order email has been sent for order: ' . $order->getIncrementId(),
 
96
  'post'
97
  );
98
  }
99
+
100
+ if ($parameters['decision'] != $financeStatus // Don't change status if not modified.
101
+ && !$order->getPaybyfinanceEnable() // Don't change status on second return.
102
+ ) {
103
+ $order->setFinanceStatus($parameters['decision']);
104
+ if ($parameters['decision'] != 'ACCEPTED') {
105
+ $orderHelper = Mage::helper('paybyfinance/order');
106
+ $orderHelper->sendFailedEmail($order, $parameters['decision']);
107
+ $helper->log(
108
+ 'Failed order email has been sent for order: ' . $order->getIncrementId() . "\n"
109
+ . 'Finance status: ' . $parameters['decision'],
110
+ 'post'
111
+ );
112
+ }
113
+ }
114
+ $order->addStatusHistoryComment(nl2br(trim($message), false));
115
+ $order->setPaybyfinanceEnable(true);
116
+
117
+ $order->save();
118
+ } else {
119
+ $order->addStatusHistoryComment(nl2br(trim($message), false));
120
+
121
+ $order->save();
122
  }
123
+
 
 
124
 
125
  return $redirectUrl;
126
  }
157
  {
158
  $helper = Mage::helper('paybyfinance');
159
  $status = Mage::getStoreConfig($helper::XML_PATH_STATUS_ABANDONED);
160
+ $message = $this->getParamText('id', 'id', $parameters);
161
+ $message .= $this->getParamText('id2', 'id2', $parameters);
162
+ $message .= $this->getParamText('decision', 'decision', $parameters);
163
+ $message .= $this->getParamText('applicationNo', 'applicationNo', $parameters);
164
+ $message .= $this->getParamText('authorisationcode', 'authorisationcode', $parameters);
165
+ $message .= $this->getParamText('sourceurl', 'sourceurl', $parameters);
166
+ $message .= $this->getParamText('Errreason', 'Errreason', $parameters);
167
+ $message .= $this->getParamText('Errtext', 'Errtext', $parameters);
 
 
168
 
169
  $state = Mage_Sales_Model_Order::STATE_PROCESSING;
 
170
  $order->addStatusToHistory($status, nl2br(trim($message)), false);
171
+ //Save order changes only in case the status change is allowed
172
+ if (Mage::helper('paybyfinance/checkout')->setOrderStateSafe($order, $state, $status)) {
173
+ $order->save();
174
+ }
175
+ }
176
+
177
+ /**
178
+ * Sets order state and status and checks all security restrictions before it.
179
+ * Does not save order.
180
+ *
181
+ * @param Mage_Sales_Model_Order $order order
182
+ * @param string $state state
183
+ * @param string $status status
184
+ *
185
+ * @return bool
186
+ */
187
+ public function setOrderStateSafe($order, $state, $status)
188
+ {
189
+ $helper = Mage::helper('paybyfinance');
190
+
191
+ if ($order->getStatus() == HC_PayByFinance_Helper_Data::STATUS_ADDRESS_INCONSISTENT) {
192
+ $helper->log(
193
+ 'Something tried to change order status to ' . $status
194
+ . ' while order is in address inconsistent status. Change rejected.',
195
+ 'post'
196
+ );
197
+ return false;
198
+ }
199
+
200
+ if ($order->getState() != $state || $order->getStatus() != $status) {
201
+ $order->setState($state, $status);
202
+ }
203
+
204
+ return true;
205
  }
206
 
207
  }
app/code/local/HC/PayByFinance/Helper/Data.php CHANGED
@@ -71,6 +71,17 @@ class HC_PayByFinance_Helper_Data extends Mage_Core_Helper_Data
71
  const REGEXP_TITLE = '/[^a-zA-Z\s\.]/';
72
  const REGEXP_STREET = '/[^a-zA-Z0-9\s\.\-\/]/';
73
 
 
 
 
 
 
 
 
 
 
 
 
74
  private $_types;
75
 
76
  /**
@@ -429,4 +440,55 @@ class HC_PayByFinance_Helper_Data extends Mage_Core_Helper_Data
429
 
430
  return null;
431
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
  }
71
  const REGEXP_TITLE = '/[^a-zA-Z\s\.]/';
72
  const REGEXP_STREET = '/[^a-zA-Z0-9\s\.\-\/]/';
73
 
74
+ /**
75
+ * Status for processing state where acceptance notification came and billing
76
+ * and shipping addresses are not same...
77
+ */
78
+ const STATUS_ADDRESS_INCONSISTENT = 'finance_addr_inconsistent';
79
+
80
+ /**
81
+ * order finanace status when billing/shipping address does not match
82
+ */
83
+ const FINANCE_STATUS_FRAUD = 'FRAUD';
84
+
85
  private $_types;
86
 
87
  /**
440
 
441
  return null;
442
  }
443
+
444
+ /**
445
+ * Test if addresses are same in regards with shipping/billing address for fraud checks purposes
446
+ *
447
+ * @param Address $billingAddress address 1
448
+ * @param Address $shippingAddress address 2
449
+ *
450
+ * @return bool
451
+ */
452
+ public function addressessDiffers($billingAddress, $shippingAddress)
453
+ {
454
+ $comparedFields = array(
455
+ 'firstname',
456
+ 'middlename',
457
+ 'lastname',
458
+ 'suffix',
459
+ 'company',
460
+ 'street',
461
+ 'city',
462
+ 'region',
463
+ 'postcode',
464
+ 'country_id',
465
+ 'telephone'
466
+ );
467
+
468
+ $billingAddressFields = $this->filterAddressFields(
469
+ $billingAddress->getData(), $comparedFields
470
+ );
471
+
472
+ $shippingAddressFields = $this->filterAddressFields(
473
+ $shippingAddress->getData(), $comparedFields
474
+ );
475
+
476
+ return count(
477
+ array_diff_assoc($billingAddressFields, $shippingAddressFields)
478
+ ) > 0;
479
+ }
480
+
481
+ /**
482
+ * Removes $excludedFields from $addressData array
483
+ *
484
+ * @param array $addressData address data array
485
+ * @param array $includedFields array of included fields
486
+ *
487
+ * @return array
488
+ */
489
+ private function filterAddressFields($addressData, $includedFields)
490
+ {
491
+ return array_intersect_key($addressData, array_flip($includedFields));
492
+ }
493
+
494
  }
app/code/local/HC/PayByFinance/Helper/Notification.php CHANGED
@@ -67,6 +67,7 @@ class HC_PayByFinance_Helper_Notification extends Mage_Core_Helper_Data
67
  return $this->statuses;
68
  }
69
 
 
70
  /**
71
  * Process notification requests
72
  *
@@ -134,12 +135,33 @@ class HC_PayByFinance_Helper_Notification extends Mage_Core_Helper_Data
134
 
135
  list($orderState, $orderStatus) = $this->getOrderStateAndStatus($parameters);
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  $this->financeStatusChange($status, $order, $orderStatus, $orderState);
138
  $order
139
  ->setFinanceApplicationNo($applicationNo)
140
  ->addStatusHistoryComment($message, false);
141
  return $order->save();
142
  }
 
143
 
144
  /**
145
  * Add totals to the order
@@ -198,17 +220,22 @@ class HC_PayByFinance_Helper_Notification extends Mage_Core_Helper_Data
198
  }
199
 
200
  if ($status == 'ACCEPT' && !in_array($order->getStatus(), $disallowChange)) {
201
- $order->setState($orderState, $orderStatus);
 
 
202
  }
 
203
  if ($origStatus != $status) {
204
  $order->setFinanceStatus($status);
205
- $order->setState($orderState, $orderStatus);
206
- return true;
 
207
  }
208
 
209
  return false;
210
  }
211
 
 
212
  /**
213
  * Calculate order state and status based on notification parameters
214
  *
@@ -255,6 +282,9 @@ class HC_PayByFinance_Helper_Notification extends Mage_Core_Helper_Data
255
  case 'FATAL_ERROR':
256
  $orderStatus = Mage::getStoreConfig($helper::XML_PATH_STATUS_ERROR);
257
  break;
 
 
 
258
  default:
259
  $message = "Unknown status value:>" . $status . "<";
260
  Mage::helper('paybyfinance')->log($message, 'notification');
@@ -263,4 +293,20 @@ class HC_PayByFinance_Helper_Notification extends Mage_Core_Helper_Data
263
 
264
  return array($orderState, $orderStatus);
265
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
  }
67
  return $this->statuses;
68
  }
69
 
70
+ // @codingStandardsIgnoreStart
71
  /**
72
  * Process notification requests
73
  *
135
 
136
  list($orderState, $orderStatus) = $this->getOrderStateAndStatus($parameters);
137
 
138
+ //Check addresses if they are same, otherwise set address exceptional status of order.
139
+ if ($this->addressBillingShippingDiffers($order)) {
140
+ $order->setFinanceStatus($status);
141
+ $order->setFinanceApplicationNo($applicationNo);
142
+ $order->addStatusHistoryComment($message .
143
+ 'Shipping and Billing addresses are not the same!', false
144
+ );
145
+ $order->save();
146
+ //Save order changes only in case the status change is allowed
147
+ if (Mage::helper('paybyfinance/checkout')->setOrderStateSafe(
148
+ $order, Mage_Sales_Model_Order::STATE_PROCESSING,
149
+ HC_PayByFinance_Helper_Data::STATUS_ADDRESS_INCONSISTENT
150
+ )
151
+ ) {
152
+ return $order->save();
153
+ }
154
+
155
+ return $order;
156
+ }
157
+
158
  $this->financeStatusChange($status, $order, $orderStatus, $orderState);
159
  $order
160
  ->setFinanceApplicationNo($applicationNo)
161
  ->addStatusHistoryComment($message, false);
162
  return $order->save();
163
  }
164
+ // @codingStandardsIgnoreEnd
165
 
166
  /**
167
  * Add totals to the order
220
  }
221
 
222
  if ($status == 'ACCEPT' && !in_array($order->getStatus(), $disallowChange)) {
223
+ Mage::helper('paybyfinance/checkout')->setOrderStateSafe(
224
+ $order, $orderState, $orderStatus
225
+ );
226
  }
227
+
228
  if ($origStatus != $status) {
229
  $order->setFinanceStatus($status);
230
+ return Mage::helper('paybyfinance/checkout')->setOrderStateSafe(
231
+ $order, $orderState, $orderStatus
232
+ );
233
  }
234
 
235
  return false;
236
  }
237
 
238
+ // @codingStandardsIgnoreStart
239
  /**
240
  * Calculate order state and status based on notification parameters
241
  *
282
  case 'FATAL_ERROR':
283
  $orderStatus = Mage::getStoreConfig($helper::XML_PATH_STATUS_ERROR);
284
  break;
285
+ case 'PAID':
286
+ // Do not throw exception, so it will show up as an order comment.
287
+ break;
288
  default:
289
  $message = "Unknown status value:>" . $status . "<";
290
  Mage::helper('paybyfinance')->log($message, 'notification');
293
 
294
  return array($orderState, $orderStatus);
295
  }
296
+ // @codingStandardsIgnoreEnd
297
+
298
+
299
+ /**
300
+ * Checks if billing and shipping addresses are same
301
+ *
302
+ * @param Mage_Sales_Model_Order $order order
303
+ *
304
+ * @return bool if differs any field in addresses arrays
305
+ */
306
+ private function addressBillingShippingDiffers($order)
307
+ {
308
+ return Mage::helper('paybyfinance')->addressessDiffers(
309
+ $order->getBillingAddress(), $order->getShippingAddress()
310
+ );
311
+ }
312
  }
app/code/local/HC/PayByFinance/Model/Calculator.php CHANGED
@@ -137,7 +137,7 @@ class HC_PayByFinance_Model_Calculator extends Varien_Object
137
  // Note it would be better to use BCMath as an additional dependency.
138
  $financeAmount = intval((string) ($financeAmount * 100)) / 100;
139
 
140
- if ($service->getType() == 32) {
141
  $monthlyPayment = $this->calcMonthlyPaymentInterestFree($financeAmount);
142
  } else {
143
  $monthlyPayment = $this->calcMonthlyPayment($financeAmount);
@@ -191,7 +191,7 @@ class HC_PayByFinance_Model_Calculator extends Varien_Object
191
  continue;
192
  }
193
 
194
- if ($service->getType() == 32) {
195
  $installment = $this->calcMonthlyPaymentInterestFree($financeAmount, $service);
196
  } else {
197
  $installment = $this->calcMonthlyPayment($financeAmount, $service);
137
  // Note it would be better to use BCMath as an additional dependency.
138
  $financeAmount = intval((string) ($financeAmount * 100)) / 100;
139
 
140
+ if (HC_PayByFinance_Model_Config_Source_Type::isInterestFreeType($service->getType())) {
141
  $monthlyPayment = $this->calcMonthlyPaymentInterestFree($financeAmount);
142
  } else {
143
  $monthlyPayment = $this->calcMonthlyPayment($financeAmount);
191
  continue;
192
  }
193
 
194
+ if (HC_PayByFinance_Model_Config_Source_Type::isInterestFreeType($service->getType())) {
195
  $installment = $this->calcMonthlyPaymentInterestFree($financeAmount, $service);
196
  } else {
197
  $installment = $this->calcMonthlyPayment($financeAmount, $service);
app/code/local/HC/PayByFinance/Model/Config/Source/Type.php CHANGED
@@ -89,4 +89,16 @@ class HC_PayByFinance_Model_Config_Source_Type
89
  || ($serviceType == self::TYPE35);
90
  }
91
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  }
89
  || ($serviceType == self::TYPE35);
90
  }
91
 
92
+ /**
93
+ * Is provided service type interest free one?
94
+ *
95
+ * @param int $serviceType ServiceType
96
+ *
97
+ * @return bool
98
+ */
99
+ public static function isInterestFreeType($serviceType)
100
+ {
101
+ return ($serviceType == self::TYPE32) || ($serviceType == self::TYPE34);
102
+ }
103
+
104
  }
app/code/local/HC/PayByFinance/Model/Observer.php CHANGED
@@ -370,4 +370,35 @@ class HC_PayByFinance_Model_Observer
370
  }
371
  }
372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  }
370
  }
371
  }
372
 
373
+ /**
374
+ * Validation of shipping an billing address
375
+ *
376
+ * @param Event $event Event
377
+ *
378
+ * @return void
379
+ */
380
+ public function customerAddressValidationAfter($event)
381
+ {
382
+ $session = Mage::getSingleton('paybyfinance/session');
383
+ if (!$session->getEnabled()) { //widget did not set "Pay By Finance"
384
+ return;
385
+ }
386
+
387
+ $address = $event->getAddress();
388
+ if ($address) {
389
+ /** @var $address */
390
+ $quote = $address->getQuote();
391
+ if ($quote && $quote->getBillingAddress()) {
392
+ $helper = Mage::helper('paybyfinance');
393
+ $billingAddress = $quote->getBillingAddress();
394
+ if ($helper->addressessDiffers($billingAddress, $address)) {
395
+ $address->addError(
396
+ Mage::helper('customer')->__(
397
+ 'Shipping address is not same as billing address'
398
+ )
399
+ );
400
+ }
401
+ }
402
+ }
403
+ }
404
  }
app/code/local/HC/PayByFinance/Model/Post.php CHANGED
@@ -134,7 +134,7 @@ class HC_PayByFinance_Model_Post extends Mage_Core_Model_Abstract
134
  'paybyfinance/notification',
135
  array('_secure' => true, 'store' => $this->getStoreId())
136
  ),
137
- 'address_checked' => $addressChecked == "1" ? 'Y' : 'N',
138
  'wizard' => $wizard == "1" ? 'new' : 'old',
139
  );
140
  $data = array_merge($data, $fields);
@@ -152,7 +152,6 @@ class HC_PayByFinance_Model_Post extends Mage_Core_Model_Abstract
152
  public function setNotificationData($data)
153
  {
154
  $helper = Mage::helper('paybyfinance');
155
- $adapter = $this->_adapter;
156
 
157
  $fields = array(
158
  'id' => trim(
134
  'paybyfinance/notification',
135
  array('_secure' => true, 'store' => $this->getStoreId())
136
  ),
137
+ 'addChecked' => $addressChecked == "1" ? 'Y' : 'N',
138
  'wizard' => $wizard == "1" ? 'new' : 'old',
139
  );
140
  $data = array_merge($data, $fields);
152
  public function setNotificationData($data)
153
  {
154
  $helper = Mage::helper('paybyfinance');
 
155
 
156
  $fields = array(
157
  'id' => trim(
app/code/local/HC/PayByFinance/Model/Post/Abstract.php CHANGED
@@ -81,6 +81,16 @@ abstract class HC_PayByFinance_Model_Post_Abstract extends Mage_Core_Model_Abstr
81
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
82
  curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, implode(':', $this->_ciphers));
83
  $response = curl_exec($ch);
 
 
 
 
 
 
 
 
 
 
84
  curl_close($ch);
85
 
86
  if ($response !== false) {
@@ -98,7 +108,7 @@ abstract class HC_PayByFinance_Model_Post_Abstract extends Mage_Core_Model_Abstr
98
  public function getRedirectForm()
99
  {
100
  $block = Mage::app()->getLayout()->createBlock('paybyfinance/checkout_redirect')
101
- ->setPostContent($this->_pbfInformation)
102
  ->setPostUrl($this->getPostUrl())
103
  ->setMode($this->getMode())
104
  ->setTemplate('paybyfinance/form.phtml');
81
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
82
  curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, implode(':', $this->_ciphers));
83
  $response = curl_exec($ch);
84
+
85
+ if ($response === false) {
86
+ $helper = Mage::helper('paybyfinance');
87
+ $helper->log(
88
+ "Curl error: " . curl_error($ch) . " when sending data: "
89
+ . $helper->arrayDump($this->_pbfInformation),
90
+ 'post'
91
+ );
92
+ }
93
+
94
  curl_close($ch);
95
 
96
  if ($response !== false) {
108
  public function getRedirectForm()
109
  {
110
  $block = Mage::app()->getLayout()->createBlock('paybyfinance/checkout_redirect')
111
+ ->setPostContent($this->getPostData())
112
  ->setPostUrl($this->getPostUrl())
113
  ->setMode($this->getMode())
114
  ->setTemplate('paybyfinance/form.phtml');
app/code/local/HC/PayByFinance/controllers/Adminhtml/Paybyfinance/ServiceController.php CHANGED
@@ -142,7 +142,6 @@ class HC_PayByFinance_Adminhtml_Paybyfinance_ServiceController
142
  ->setType($postData['type'])
143
  ->setApr($postData['apr'])
144
  ->setTerm($postData['term'])
145
- ->setDeferTerm($postData['defer_term'])
146
  ->setOptionTerm($postData['option_term'])
147
  ->setDeposit($postData['deposit'])
148
  ->setFee($postData['fee'])
@@ -151,8 +150,13 @@ class HC_PayByFinance_Adminhtml_Paybyfinance_ServiceController
151
  ->setRpm($postData['rpm'])
152
  ->setStoreId($storeId);
153
 
 
 
 
 
 
154
 
155
- if ($postData['max_amount'] === '') {
156
  $serviceModel->setMaxAmount(null); //clear the value
157
  } else {
158
  $serviceModel->setMaxAmount($postData['max_amount']);
142
  ->setType($postData['type'])
143
  ->setApr($postData['apr'])
144
  ->setTerm($postData['term'])
 
145
  ->setOptionTerm($postData['option_term'])
146
  ->setDeposit($postData['deposit'])
147
  ->setFee($postData['fee'])
150
  ->setRpm($postData['rpm'])
151
  ->setStoreId($storeId);
152
 
153
+ if (isset($postData['defer_term'])) {
154
+ $serviceModel->setDeferTerm($postData['defer_term']);
155
+ } else {
156
+ $serviceModel->setDeferTerm(0); //clear the value
157
+ }
158
 
159
+ if (!isset($postData['max_amount']) || $postData['max_amount'] === '') {
160
  $serviceModel->setMaxAmount(null); //clear the value
161
  } else {
162
  $serviceModel->setMaxAmount($postData['max_amount']);
app/code/local/HC/PayByFinance/controllers/CheckoutController.php CHANGED
@@ -47,7 +47,7 @@ class HC_PayByFinance_CheckoutController extends Mage_Core_Controller_Front_Acti
47
  }
48
  $order = Mage::getModel('sales/order')->load($orderId);
49
  $eligibleProducts = $cartHelper->getEligibleProducts($order->getAllItems());
50
- $eligibleAmount = $cartHelper->getEligibleAmount($order->getAllItems());
51
  $serviceId = $order->getFinanceService();
52
  $service = Mage::getModel('paybyfinance/service')->load($serviceId);
53
  $address = $order->getBillingAddress();
@@ -57,7 +57,6 @@ class HC_PayByFinance_CheckoutController extends Mage_Core_Controller_Front_Acti
57
  if ($includeShipping) {
58
  $shippingCost = $order->getShippingInclTax();
59
  }
60
- $mode = Mage::getStoreConfig($helper::XML_PATH_CONNECTION_MODE);
61
 
62
  $calculator = Mage::getModel('paybyfinance/calculator');
63
  $calculator->setService($serviceId)
@@ -73,15 +72,18 @@ class HC_PayByFinance_CheckoutController extends Mage_Core_Controller_Front_Acti
73
  $productsInForm = array();
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;
84
- $productCount++;
 
 
 
85
  }
86
 
87
  if ($includeShipping && $order->getShippingInclTax() > 0) {
@@ -122,7 +124,6 @@ class HC_PayByFinance_CheckoutController extends Mage_Core_Controller_Front_Acti
122
  $productsInForm['gp' . ($productCount)] = number_format(
123
  $giftcard, 2, '.', ''
124
  );
125
- $productCount++;
126
  }
127
  $deferredServicesProperties = array();
128
  if (HC_PayByFinance_Model_Config_Source_Type::isDeferredType(
@@ -132,6 +133,12 @@ class HC_PayByFinance_CheckoutController extends Mage_Core_Controller_Front_Acti
132
  $deferredServicesProperties['cdperiod'] = $service->getDeferTerm();
133
  }
134
 
 
 
 
 
 
 
135
 
136
  $post->setQuoteData(
137
  array_merge(
@@ -161,12 +168,19 @@ class HC_PayByFinance_CheckoutController extends Mage_Core_Controller_Front_Acti
161
  : '')
162
  )
163
  ),
 
 
 
 
 
 
164
  'town' => $helper->sanitizeName($address->getCity()),
165
  'postcode' => $address->getPostcode(),
166
  'email' => $order->getCustomerEmail(),
167
  ),
168
  $productsInForm,
169
- $deferredServicesProperties
 
170
  )
171
  );
172
 
47
  }
48
  $order = Mage::getModel('sales/order')->load($orderId);
49
  $eligibleProducts = $cartHelper->getEligibleProducts($order->getAllItems());
50
+ $eligibleAmount = $cartHelper->getEligibleAmountForRedirect($order->getAllItems());
51
  $serviceId = $order->getFinanceService();
52
  $service = Mage::getModel('paybyfinance/service')->load($serviceId);
53
  $address = $order->getBillingAddress();
57
  if ($includeShipping) {
58
  $shippingCost = $order->getShippingInclTax();
59
  }
 
60
 
61
  $calculator = Mage::getModel('paybyfinance/calculator');
62
  $calculator->setService($serviceId)
72
  $productsInForm = array();
73
  $productCount = 0;
74
  $additionalItems = 0;
75
+ foreach ($eligibleProducts as $product) {
76
  $productName = $helper->sanitizeProductName($product->getName());
77
+ // same rules for product names and SKU's
78
+ $productSKU = $helper->sanitizeProductName($product->getSku());
79
+ if ($product->getPriceInclTax() != 0) {
80
+ $productsInForm['gc' . $productCount] = $productSKU;
81
+ $productsInForm['pc' . $productCount] = $productSKU;
82
+ $productsInForm['gd' . $productCount] = $productName;
83
+ $productsInForm['q' . $productCount] = floatval($product->getQtyOrdered());
84
+ $productsInForm['gp' . $productCount] = floatval($product->getPriceInclTax());
85
+ $productCount++;
86
+ }
87
  }
88
 
89
  if ($includeShipping && $order->getShippingInclTax() > 0) {
124
  $productsInForm['gp' . ($productCount)] = number_format(
125
  $giftcard, 2, '.', ''
126
  );
 
127
  }
128
  $deferredServicesProperties = array();
129
  if (HC_PayByFinance_Model_Config_Source_Type::isDeferredType(
133
  $deferredServicesProperties['cdperiod'] = $service->getDeferTerm();
134
  }
135
 
136
+ $interestOptionServicesProperties = array();
137
+ if (HC_PayByFinance_Model_Config_Source_Type::TYPE33 == $service->getType()
138
+ ) {
139
+ $interestOptionServicesProperties['optperiod'] = $service->getOptionTerm();
140
+ }
141
+
142
 
143
  $post->setQuoteData(
144
  array_merge(
168
  : '')
169
  )
170
  ),
171
+ /* One of the below 3 fields are required if "Address Checked" is turned on.
172
+ Because there's no universal way adding it, it's the seller's responsibility
173
+ to add the fields to the checkout templates. */
174
+ 'houseName' => $helper->sanitizeStreet($address->getHouseName()),
175
+ 'houseNumber' => $helper->sanitizeStreet($address->getHouseNumber()),
176
+ 'flatNumber' => $helper->sanitizeStreet($address->getFlatNumber()),
177
  'town' => $helper->sanitizeName($address->getCity()),
178
  'postcode' => $address->getPostcode(),
179
  'email' => $order->getCustomerEmail(),
180
  ),
181
  $productsInForm,
182
+ $deferredServicesProperties,
183
+ $interestOptionServicesProperties
184
  )
185
  );
186
 
app/code/local/HC/PayByFinance/controllers/NotificationController.php CHANGED
@@ -65,6 +65,17 @@ class HC_PayByFinance_NotificationController extends Mage_Core_Controller_Front_
65
  );
66
 
67
  $notificationHelper = Mage::helper('paybyfinance/notification');
 
 
 
 
 
 
 
 
 
 
 
68
  try {
69
  $result = $notificationHelper->processOrder($order, $parameters);
70
  } catch (Exception $e) {
@@ -103,4 +114,68 @@ class HC_PayByFinance_NotificationController extends Mage_Core_Controller_Front_
103
  die();
104
  }
105
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  }
65
  );
66
 
67
  $notificationHelper = Mage::helper('paybyfinance/notification');
68
+ try {
69
+ if (isset($parameters['postcode'])) {
70
+ $this->checkPostCodesSame($parameters, $order);
71
+ }
72
+ } catch (Exception $e) {
73
+ $helper->log(
74
+ $e->getMessage(),
75
+ 'notification'
76
+ );
77
+ }
78
+
79
  try {
80
  $result = $notificationHelper->processOrder($order, $parameters);
81
  } catch (Exception $e) {
114
  die();
115
  }
116
  }
117
+
118
+ /**
119
+ * Checks if postcode sent within notification parameters is same as billing order postcode
120
+ *
121
+ * @param array $parameters array of parameters sent from HCM
122
+ * @param Mage_Sales_Model_Order $order order
123
+ *
124
+ * @return void
125
+ *
126
+ * @throws Exception
127
+ */
128
+ private function checkPostCodesSame($parameters, $order)
129
+ {
130
+ if (isset($parameters['postcode']) && $order) {
131
+ $notificationPostCode = self::normalizeZIP($parameters['postcode']);
132
+ $orderBillingPostCode = self::normalizeZIP($order->getBillingAddress()->getPostcode());
133
+ $orderShippingPostCode = self::normalizeZIP(
134
+ $order->getShippingAddress()->getPostcode()
135
+ );
136
+
137
+ if ($notificationPostCode == $orderBillingPostCode
138
+ && $notificationPostCode == $orderShippingPostCode
139
+ ) {
140
+ return;
141
+ }
142
+ }
143
+
144
+ $applicationNo = '';
145
+ if (isset($parameters['applicationNumber'])) {
146
+ $applicationNo = $parameters['applicationNumber'];
147
+ }
148
+
149
+ $order->setFinanceStatus(HC_PayByFinance_Helper_Data::FINANCE_STATUS_FRAUD);
150
+ $order->setFinanceApplicationNo($applicationNo);
151
+ $order->addStatusHistoryComment(
152
+ 'Billing postcode is not the same as postcode received from HCM Notification!', false
153
+ );
154
+
155
+ Mage::helper('paybyfinance/checkout')->setOrderStateSafe(
156
+ $order, Mage_Sales_Model_Order::STATE_PROCESSING,
157
+ HC_PayByFinance_Helper_Data::STATUS_ADDRESS_INCONSISTENT
158
+ );
159
+
160
+ $order->save();
161
+
162
+
163
+ throw new Exception(
164
+ 'Billing postcode is not the same as postcode received from HCM Notification!'
165
+ );
166
+ }
167
+
168
+ /**
169
+ * Removes all whitechars and makes zip uppercase
170
+ *
171
+ * @param string $postcode postCode
172
+ *
173
+ * @return String
174
+ */
175
+ private static function normalizeZIP($postcode)
176
+ {
177
+ return strtoupper(preg_replace('/\s+/', '', $postcode));
178
+ }
179
+
180
+
181
  }
app/code/local/HC/PayByFinance/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <HC_PayByFinance>
5
- <version>2.0.3</version>
6
  </HC_PayByFinance>
7
  </modules>
8
  <global>
@@ -103,6 +103,31 @@
103
  <to_quote_item>*</to_quote_item>
104
  </paybyfinance_enable>
105
  </sales_convert_order_item>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  </fieldsets>
107
  <resources>
108
  <paybyfinance_setup>
@@ -283,6 +308,15 @@
283
  </observers>
284
  </sales_order_save_after>
285
  <!-- /Sagepay PreAuth -->
 
 
 
 
 
 
 
 
 
286
  </events>
287
  <template>
288
  <email>
2
  <config>
3
  <modules>
4
  <HC_PayByFinance>
5
+ <version>2.0.5</version>
6
  </HC_PayByFinance>
7
  </modules>
8
  <global>
103
  <to_quote_item>*</to_quote_item>
104
  </paybyfinance_enable>
105
  </sales_convert_order_item>
106
+ <sales_convert_quote_address>
107
+ <house_name>
108
+ <to_order_address>*</to_order_address>
109
+ <to_customer_address>*</to_customer_address>
110
+ </house_name>
111
+ <house_number>
112
+ <to_order_address>*</to_order_address>
113
+ <to_customer_address>*</to_customer_address>
114
+ </house_number>
115
+ <flat_number>
116
+ <to_order_address>*</to_order_address>
117
+ <to_customer_address>*</to_customer_address>
118
+ </flat_number>
119
+ </sales_convert_quote_address>
120
+ <customer_address>
121
+ <house_name>
122
+ <to_quote_address>*</to_quote_address>
123
+ </house_name>
124
+ <house_number>
125
+ <to_quote_address>*</to_quote_address>
126
+ </house_number>
127
+ <house_name>
128
+ <to_quote_address>*</to_quote_address>
129
+ </house_name>
130
+ </customer_address>
131
  </fieldsets>
132
  <resources>
133
  <paybyfinance_setup>
308
  </observers>
309
  </sales_order_save_after>
310
  <!-- /Sagepay PreAuth -->
311
+ <customer_address_validation_after>
312
+ <observers>
313
+ <hc_customer_address_validation_after>
314
+ <type>singleton</type>
315
+ <class>paybyfinance/observer</class>
316
+ <method>customerAddressValidationAfter</method>
317
+ </hc_customer_address_validation_after>
318
+ </observers>
319
+ </customer_address_validation_after>
320
  </events>
321
  <template>
322
  <email>
app/code/local/HC/PayByFinance/etc/system.xml CHANGED
@@ -80,7 +80,7 @@
80
  additional fields to be added to the extension and the
81
  eTailer shop before a Y can be passed to PBF. HC-200 -->
82
 
83
- <!--address_checked translate="label">
84
  <label>Address checked</label>
85
  <comment>
86
  If enabled then this means that the e-tailer has checked the address
@@ -95,7 +95,7 @@
95
  <show_in_default>1</show_in_default>
96
  <show_in_website>1</show_in_website>
97
  <show_in_store>1</show_in_store>
98
- </address_checked-->
99
  <wizard>
100
  <label>Responsive credit wizard</label>
101
  <comment>The credit wizard works well on all screen sizes, from mobile phones to desktops</comment>
80
  additional fields to be added to the extension and the
81
  eTailer shop before a Y can be passed to PBF. HC-200 -->
82
 
83
+ <address_checked translate="label">
84
  <label>Address checked</label>
85
  <comment>
86
  If enabled then this means that the e-tailer has checked the address
95
  <show_in_default>1</show_in_default>
96
  <show_in_website>1</show_in_website>
97
  <show_in_store>1</show_in_store>
98
+ </address_checked>
99
  <wizard>
100
  <label>Responsive credit wizard</label>
101
  <comment>The credit wizard works well on all screen sizes, from mobile phones to desktops</comment>
app/code/local/HC/PayByFinance/sql/paybyfinance_setup/html/accepted.html CHANGED
@@ -3,11 +3,11 @@
3
  </div>
4
  <p>I am delighted to confirm that you application has now been accepted ({{var order_id}}) and your order is now reserved in our systems.</p>
5
  <p>
6
- However your order will not be dispatched until either your e-signature has been completed, if offered, or your signed documentation has been returned to Hitachi Capital Consumer Finance at the following address:
7
  </p>
8
  <ul>
9
  <li>PaybyFinance</li>
10
- <li>Hitachi Capital Consumer Finance</li>
11
  <li>Freepost RRYU-HCAT-JEUG</li>
12
  <li>2 Apex View</li>
13
  <li>Leeds, LS11 9BH</li>
3
  </div>
4
  <p>I am delighted to confirm that you application has now been accepted ({{var order_id}}) and your order is now reserved in our systems.</p>
5
  <p>
6
+ However your order will not be dispatched until either your e-signature has been completed, if offered, or your signed documentation has been returned to Hitachi Personal Finance at the following address:
7
  </p>
8
  <ul>
9
  <li>PaybyFinance</li>
10
+ <li>Hitachi Personal Finance</li>
11
  <li>Freepost RRYU-HCAT-JEUG</li>
12
  <li>2 Apex View</li>
13
  <li>Leeds, LS11 9BH</li>
app/code/local/HC/PayByFinance/sql/paybyfinance_setup/html/page-finance-options.html CHANGED
@@ -1,188 +1,1092 @@
1
- <h2>More information</h2>
2
- <p>All we require is a minimum deposit of 10%, you can pay a higher deposit if you wish, and the order must have a value of at least &pound;500.</p>
3
- <p>Item Value: &pound;500-&pound;1000 - 6 months interest free credit.</p>
4
- <p>Item Value: &pound;1000 plus - 6 or 12 months interest free credit.</p>
5
- <p>Credit is available to permanent UK residents only.</p>
6
-
7
- <h2>Interest Free Finance Example</h2>
8
-
9
- <h4>Up to 12 months 0% APR representative interest free finance</h4>
10
- <p>
11
- Spread the cost with our interest free finance available online and in store.
12
- </p>
13
- <p>
14
- Our simple finance options allow you to spread the cost of [insert product/s] over 6 or 12 months.
15
- </p>
16
- <h4>All you need to do is:</h4>
17
- <ul>
18
- <ol>Spend a minimum &pound;350 and above</ol>
19
- <ol>Place a 10% deposit</ol>
20
- <ol>Minimum finance amount after deposit &pound;315 and above</ol>
21
- </ul>
22
- <p>We offer 2 simple finance options to help you spread the cost of your purchases.</p>
23
- <ul>
24
- <li>6 months interest free finance on orders of &pound;350 and above</li>
25
- <li>12 months interest free finance on orders of &pound;1000 and above</li>
26
- </ul>
27
- <p>
28
- The table below shows you how much monthly repayments will be based on the total order value.
29
- </p>
30
- <p>
31
- For help with your finance please call {{config path="general/store_information/phone"}}
32
- </p>
33
- <table>
34
- <tr>
35
- <th>Order value</th>
36
- <th>Term (Months)</th>
37
- <th>Deposit (10%)</th>
38
- <th>Monthly Payments</th>
39
- </tr>
40
- <tr>
41
- <td>&pound;350</td>
42
- <td>6</td>
43
- <td>&pound;35</td>
44
- <td>&pound;35.83</td>
45
- </tr>
46
- <tr>
47
- <td>&pound;700</td>
48
- <td>6</td>
49
- <td>&pound;70</td>
50
- <td>&pound;105</td>
51
- </tr>
52
- <tr>
53
- <td>&pound;1200</td>
54
- <td>12</td>
55
- <td>&pound;120</td>
56
- <td>&pound;90</td>
57
- </tr>
58
- <tr>
59
- <td>&pound;2000</td>
60
- <td>12</td>
61
- <td>&pound;200</td>
62
- <td>&pound;150</td>
63
- </tr>
64
- </table>
65
-
66
- <h4>Representative Example:</h4>
67
-
68
- <ul>
69
- <li>Cash Price &pound;1,200.00</li>
70
- <li>Deposit &pound;120.00</li>
71
- <li>0% APR representative</li>
72
- <li>Interest rate 0% fixed</li>
73
- <li>Number of Payments 12</li>
74
- <li>Monthly Payment &pound;90</li>
75
- <li>Total Amount payable &pound;1,200.00</li>
76
- </ul>
77
-
78
- <h2>Interest Bearing Finance Example</h2>
79
- <h4>Up to 12 months 12.9% APR representative interest bearing finance</h4>
80
- <p>Spread the cost with our interest bearing finance available online and in store.</p>
81
- <p>Our simple finance options allow you to spread the cost of [insert product/s] over 6 or 12 months.</p>
82
- <h4>All you need to do is:</h4>
83
- <ul>
84
- <ol>Spend a minimum &pound;350 and above</ol>
85
- <ol>Place a 10% deposit</ol>
86
- <ol>Minimum finance amount after deposit &pound;315 and above</ol>
87
- </ul>
88
- <p>We offer 2 simple finance options to help you spread the cost of your purchases.</p>
89
- <ul>
90
- <li>6 months interest bearing finance on orders of &pound;350 and above</li>
91
- <li>12 months interest bearing finance on orders of &pound;1000 and above</li>
92
- </ul>
93
- <p>The table below shows you how much monthly repayments will be based on the total order value.</p>
94
- <p>For help with your finance please call {{config path="general/store_information/phone"}}</p>
95
-
96
- <table>
97
- <tr>
98
- <th>Order value</th>
99
- <th>Term (Months)</th>
100
- <th>Deposit (10%)</th>
101
- <th>Monthly Payments</th>
102
- </tr>
103
- <tr>
104
- <td>&pound;350</td>
105
- <td>6</td>
106
- <td>&pound;35</td>
107
- <td>&pound;54.39</td>
108
- </tr>
109
- <tr>
110
- <td>&pound;700</td>
111
- <td>6</td>
112
- <td>&pound;70</td>
113
- <td>&pound;108.77</td>
114
- </tr>
115
- <tr>
116
- <td>&pound;1200</td>
117
- <td>12</td>
118
- <td>&pound;120</td>
119
- <td>&pound;96.06</td>
120
- </tr>
121
- <tr>
122
- <td>&pound;2000</td>
123
- <td>12</td>
124
- <td>&pound;200</td>
125
- <td>&pound;160.09</td>
126
- </tr>
127
- </table>
128
-
129
- <h4>Representative Example:</h4>
130
- <ul>
131
- <li>Cash Price &pound;700</li>
132
- <li>Deposit &pound;70</li>
133
- <li>12.9% APR representative</li>
134
- <li>Interest rate 6.74% fixed</li>
135
- <li>Number of Payments 6</li>
136
- <li>Monthly Payment &pound;108.77</li>
137
- <li>Total Amount payable &pound;783.28</li>
138
- </ul>
139
-
140
- <h2>Finance FAQ</h2>
141
-
142
- <p><strong>How do I choose to pay by Finance?</strong></p>
143
- <p>Just select the finance option on the checkout page or let the sales consultant know if you're buying in our showrooms.</p>
144
-
145
- <p><strong>Who is eligible to apply for online finance?</strong></p>
146
- <p>To apply for finance, you must be over the age of 18, work at least 16 hours a week, or be retired with an income. You must also be a resident of the United Kingdom and have lived in the UK for the last 12 months or more. Unfortunately, we are unable to offer online finance to residents of Eire. Homemakers aren't excluded from applying under their own names; however we will require the employment details of your spouse in order to process your application.</p>
147
-
148
- <p><strong>When do my repayments start?</strong></p>
149
- <p>Your monthly repayments will begin one month after your purchase has been delivered.</p>
150
-
151
- <p><strong>Are there any arrangement fees or hidden extras for credit?</strong></p>
152
- <p>No. There are no arrangement fees or hidden extras.</p>
153
- <p>
154
- Credit subject to status and affordability. Terms &amp; Conditions Apply. [Company Name] are a credit broker and are Authorised and Regulated by the Financial Conduct Authority.
155
- </p>
156
- <p>
157
- Credit is provided by Hitachi Personal Finance, a division of Hitachi Capital (UK) PLC Authorised and Regulated by the Financial Conduct Authority.
158
- </p>
159
-
160
- <p><strong>Applying for online finance</strong></p>
161
- <p>
162
- When you buy online from [Company Name] you have the choice of applying for instant finance by adding your purchase to the shopping basket, selecting the option to PaybyFinance, and completing a finance application form.
163
- </p>
164
- <p>
165
- The whole process only takes a few minutes and is simple and secure. Once your finance application is approved, you will receive an e-mail advising you of how to download the finance agreement. Please read this carefully checking that all the details are correct, then either e-sign the agreement, if offered, or print and sign the finance agreement twice. Post the document to the address shown on the finance agreement.
166
- </p>
167
- <p>
168
- Following receipt of your finance agreement and a few additional checks, your goods will be dispatched.
169
- </p>
170
- <p>
171
- Applying for online finance couldn't be easier or more convenient. Once you've chosen the products you'd like to purchase, simply complete a brief online application form accessed via the 'checkout'. Just follow the simple instructions, entering your personal details as required and we'll do the rest.
172
- </p>
173
-
174
- <p><strong>Your questions answered</strong></p>
175
- <p>Here's some of the most commonly asked questions regarding online finance.</p>
176
-
177
- <p><strong>Once my application is approved, what happens next?</strong></p>
178
- <p>
179
- Within minutes of your application being approved, you will be presented with the option to sign your credit agreement. If you are offered the ability to e-sign your credit agreement and choose to do so, a PDF of your credit agreement will be displayed on screen. You should read the credit agreement carefully before clicking all the relevant sections agreeing to its terms. Once you have agreed to the terms of the credit agreement [Company Name] will be notified and you need do nothing more. If you are presented with the ability to print and return your credit agreement you should print the PDF agreement, read it carefully and then sign the document following the instructions on the covering letter. This signed document should then be posted to the address shown on the covering letter of the credit agreement.
180
- </p>
181
- <p>
182
- Note that products will not be allocated to your order until your completed and signed agreement is returned and received by Hitachi Capital. Shipment of your goods will follow soon after your agreement has been returned to our finance company.
183
- </p>
184
-
185
- <p><strong>Will your credit score me and if so, what does this mean?</strong></p>
186
- <p>
187
- Credit scoring is the process used by financial services companies to evaluate the credit risk of new applicants. This technique will be applied to your application for online finance. Credit scoring works by awarding points for each answer given on the application form such as age, income and occupation, together with information obtained from credit reference agencies. This information allows us to produce consistent decisions, ensuring all our applicants are treated fairly. Credit scoring does not discriminate on the grounds of sex, race, religion or disability.
188
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <H2>Finance Explanation and Representative
2
+ Example</H2>
3
+
4
+ <H1>Accelerated
5
+ Payment Finance Example
6
+ </H1>
7
+
8
+ <P >Up
9
+ to 48 months 5.9% APR representative accelerated payment finance</P>
10
+
11
+ <P >Spread
12
+ the cost with monthly repayments and the option of reducing the
13
+ interest charged against the outstanding balance with additional
14
+ payments.</P>
15
+
16
+ <P >Interest
17
+ is recalculated when any additional payments are made on top of the
18
+ monthly repayment, reducing the amount of interest and duration of
19
+ the finance agreement.</P>
20
+
21
+ <P >
22
+ Our
23
+ simple accelerated payment finance options allow you to spread the
24
+ cost of your purchase over 12, 24, 36 or 48 months.</P>
25
+
26
+ <P >All you
27
+ need to do is:
28
+ </P>
29
+ <OL>
30
+ <LI><P >
31
+ Spend
32
+ a minimum £1100 and above</P>
33
+ <LI><P >
34
+ Place
35
+ a 10% deposit</P>
36
+ <LI><P >
37
+ Minimum
38
+ finance amount after deposit £1000 and above</P>
39
+ </OL>
40
+ <P >
41
+ We
42
+ offer 4 simple finance options to help you spread the cost of your
43
+ purchases.</P>
44
+ <UL>
45
+ <LI><P >
46
+ 12
47
+ months accelerated payment finance on orders of £1100 and above</P>
48
+ <LI><P >
49
+ 24
50
+ months accelerated payment finance on orders of £2200 and above</P>
51
+ <LI><P >
52
+ 36
53
+ months accelerated payment finance on orders of £3300 and above</P>
54
+ <LI><P >
55
+ 48
56
+ months accelerated payment finance on orders of £4400 and above</P>
57
+ </UL>
58
+ <P >Representative
59
+ example:
60
+ </P>
61
+ <UL>
62
+ <LI><P >Cash Price
63
+ £3300</P>
64
+ <LI><P >Deposit
65
+ £300</P>
66
+ </UL>
67
+ <UL>
68
+ <LI><P >Loan amount £3000</P>
69
+ <LI><P >5.9% APR
70
+ representative</P>
71
+ <LI><P >Interest rate
72
+ 3.04% fixed</P>
73
+ <LI><P >36 monthly repayments
74
+ of £90.93</P>
75
+ <LI><P >Total term of loan
76
+ agreement 36 months</P>
77
+ <LI><P >Total charge for
78
+ credit £273.48</P>
79
+ <LI><P >Total Amount payable
80
+ £3573.48</P>
81
+ </UL>
82
+
83
+
84
+ <P ><BR><BR>
85
+ </P>
86
+
87
+ <H1>Buy Now
88
+ Pay Later Finance Example
89
+ </H1>
90
+
91
+ <P >Buy
92
+ now pay later with payments deferred for up to 12 months
93
+ </P>
94
+
95
+ <P >Spread
96
+ the cost with our buy now pay later finance available online and in
97
+ store.</P>
98
+
99
+ <P >Our
100
+ simple buy now pay later finance options allow you to spread the cost
101
+ of your purchase over 48 months with an agreed deferral period.
102
+ </P>
103
+
104
+ <P >Monthly
105
+ repayments will start 6, 10, or 12 months after signing your finance
106
+ agreement. Settle your agreement within the agreed deferral period
107
+ and pay just an early settlement fee of £29.00.
108
+ </P>
109
+
110
+ <P >All you
111
+ need to do is:</P>
112
+ <OL>
113
+ <LI><P >Spend a minimum £300
114
+ and above</P>
115
+ <LI><P >Place a minimum 10%
116
+ deposit</P>
117
+ <LI><P >Minimum finance
118
+ amount after deposit £270 and above</P>
119
+ </OL>
120
+ <P >We offer 3
121
+ simple finance options to help you spread the cost of your purchases.</P>
122
+ <UL>
123
+ <LI><P >48 months buy now pay
124
+ later finance, with the first payment deferred for 6 months on
125
+ orders of £300 and above</P>
126
+ <LI><P >48 months buy now pay
127
+ later finance, with the first payment deferred for 10 months on
128
+ orders of £300 and above</P>
129
+ <LI><P >48 months buy now pay
130
+ later finance, with the first payment deferred for 12 months on
131
+ orders of £300 and above</P>
132
+ </UL>
133
+ <P >The
134
+ table below shows you how much monthly repayments will be based on
135
+ the total order value.</P>
136
+ <TABLE>
137
+ <thead>
138
+ <TR>
139
+ <TD>
140
+ Order<br>Value
141
+ </TD>
142
+ <TD>
143
+ Term<br>(Months)
144
+ </TD>
145
+ <TD>
146
+ Defer Term<br>
147
+ (Months)
148
+ </TD>
149
+ <TD>
150
+ Deposit <BR>(10%)
151
+ </TD>
152
+ <TD>
153
+ Monthly<BR>Payments
154
+ </TD>
155
+ </TR>
156
+
157
+ </thead>
158
+
159
+ <TR>
160
+ <TD>
161
+
162
+ £300
163
+
164
+ </TD>
165
+ <TD>
166
+
167
+
168
+ 48
169
+ </TD>
170
+ <TD>
171
+
172
+
173
+ 6
174
+ </TD>
175
+ <TD>
176
+
177
+
178
+ £30
179
+ </TD>
180
+ <TD>
181
+
182
+
183
+ £10.21
184
+ </TD>
185
+ </TR>
186
+ <TR>
187
+ <TD>
188
+
189
+
190
+ £500
191
+ </TD>
192
+ <TD>
193
+
194
+
195
+ 48
196
+ </TD>
197
+ <TD>
198
+
199
+
200
+ 6
201
+ </TD>
202
+ <TD>
203
+
204
+
205
+ £50
206
+ </TD>
207
+ <TD>
208
+
209
+
210
+ £17.02
211
+ </TD>
212
+ </TR>
213
+ <TR>
214
+ <TD>
215
+
216
+
217
+ £1000
218
+ </TD>
219
+ <TD>
220
+
221
+
222
+ 48
223
+ </TD>
224
+ <TD>
225
+
226
+
227
+ 12
228
+ </TD>
229
+ <TD>
230
+
231
+
232
+ £100
233
+ </TD>
234
+ <TD>
235
+
236
+
237
+ £38.78
238
+ </TD>
239
+ </TR>
240
+ <TR>
241
+ <TD>
242
+
243
+
244
+ £2000
245
+
246
+ </TD>
247
+ <TD>
248
+
249
+
250
+ 48
251
+ </TD>
252
+ <TD>
253
+
254
+
255
+ 12
256
+ </TD>
257
+ <TD>
258
+
259
+
260
+ £200
261
+ </TD>
262
+ <TD>
263
+
264
+
265
+ £77.55
266
+ </TD>
267
+ </TR>
268
+ </TABLE>
269
+ <P ><BR><BR>
270
+ </P>
271
+
272
+ <P >Representative
273
+ example:
274
+ </P>
275
+ <UL>
276
+ <LI>Cash price £1,000
277
+ <LI>Deposit £100
278
+ <LI>Loan amount £900
279
+ <LI>29.8% APR
280
+ representative
281
+ <LI>Interest rate 21.37%
282
+ fixed
283
+ <LI>48 monthly repayments
284
+ of £38.78
285
+ <LI>Total term of loan
286
+ agreement 48 months, with the first payment deferred for 12 months
287
+ <LI>Total charge for
288
+ credit £961.44
289
+ <LI>Total amount payable
290
+ £1961.44
291
+ </UL>
292
+
293
+ <P ><BR><BR>
294
+ </P>
295
+
296
+ <H1>Interest
297
+ Bearing Finance Example
298
+ </H1>
299
+
300
+ <P >Up to
301
+ 48 months 19.9% APR representative interest bearing finance
302
+ </P>
303
+
304
+ <P >Spread the
305
+ cost with our interest bearing finance available online and in store.</P>
306
+
307
+ <P >
308
+ Our
309
+ simple finance options allow you to spread the cost of your purchase
310
+ over 24, 36 or 48 months.</P>
311
+
312
+ <H3>All you need to do is:</H3>
313
+ <OL>
314
+ <LI>Spend a minimum £300
315
+ and above
316
+ <LI>Place a 10% deposit
317
+ <LI>Minimum finance
318
+ amount after deposit £270 and above
319
+ </OL>
320
+ We offer 3
321
+ simple finance options to help you spread the cost of your purchases.
322
+ <UL>
323
+ <LI>24 months interest
324
+ bearing finance on orders of £300 and above
325
+ <LI>36 months interest
326
+ bearing finance on orders of £300 and above
327
+ <LI>48 months interest
328
+ bearing finance on orders of £300 and above
329
+ </UL>
330
+ <P ><BR><BR>
331
+ </P>
332
+
333
+ <P ><BR><BR>
334
+ </P>
335
+
336
+ <P >The table
337
+ below shows you how much monthly repayments will be based on the
338
+ total order value.</P>
339
+ <TABLE>
340
+ <thead>
341
+ <TR>
342
+ <TD>
343
+
344
+
345
+ Order<BR>Value
346
+
347
+ </TD>
348
+ <TD>
349
+
350
+
351
+ Term<BR>(Months)
352
+
353
+ </TD>
354
+ <TD>
355
+
356
+
357
+ Deposit<BR>(10%)
358
+
359
+ </TD>
360
+ <TD>
361
+
362
+
363
+ Monthly<BR>Payments
364
+
365
+ </TD>
366
+ </TR>
367
+ </thead>
368
+ <TR>
369
+ <TD>
370
+
371
+
372
+ £350
373
+
374
+ </TD>
375
+ <TD>
376
+
377
+
378
+ 24
379
+ </TD>
380
+ <TD>
381
+
382
+
383
+ £35
384
+ </TD>
385
+ <TD>
386
+
387
+
388
+ £15.77
389
+ </TD>
390
+ </TR>
391
+ <TR>
392
+ <TD>
393
+
394
+
395
+ £700
396
+
397
+ </TD>
398
+ <TD>
399
+
400
+
401
+ 24
402
+ </TD>
403
+ <TD>
404
+
405
+
406
+ £70
407
+ </TD>
408
+ <TD>
409
+
410
+
411
+ £31.54
412
+ </TD>
413
+ </TR>
414
+ <TR>
415
+ <TD>
416
+
417
+
418
+ £1200
419
+
420
+ </TD>
421
+ <TD>
422
+
423
+
424
+ 36
425
+ </TD>
426
+ <TD>
427
+
428
+
429
+ £120
430
+ </TD>
431
+ <TD>
432
+
433
+
434
+ £39.20
435
+ </TD>
436
+ </TR>
437
+ <TR>
438
+ <TD>
439
+
440
+
441
+ £2000
442
+
443
+ </TD>
444
+ <TD>
445
+
446
+
447
+ 36
448
+ </TD>
449
+ <TD>
450
+
451
+
452
+ £200
453
+ </TD>
454
+ <TD>
455
+
456
+
457
+ £65.34
458
+ </TD>
459
+ </TR>
460
+ </TABLE>
461
+ <P ><BR><BR>
462
+ </P>
463
+
464
+ <P >Representative
465
+ example:
466
+ </P>
467
+ <UL>
468
+ <LI><P >Cash Price £700</P>
469
+ <LI><P >Deposit
470
+ £70</P>
471
+ </UL>
472
+ <UL>
473
+ <LI><P >Loan amount £630</P>
474
+ <LI><P >19.9% APR
475
+ representative</P>
476
+ <LI><P >Interest rate
477
+ 10.23% fixed</P>
478
+ <LI><P >36 monthly repayments
479
+ of £22.87</P>
480
+ <LI><P >Total term of loan
481
+ agreement 36 months</P>
482
+ <LI><P >Total charge for
483
+ credit £193.32
484
+ </P>
485
+ <LI><P >Total Amount payable
486
+ £893.32</P>
487
+ </UL>
488
+
489
+ <P ><BR><BR>
490
+ </P>
491
+
492
+ <P ><BR><BR>
493
+ </P>
494
+
495
+ <H1>Interest
496
+ Free Finance Example
497
+ </H1>
498
+
499
+ <P >
500
+ Up
501
+ to 12 months 0% APR representative interest free finance
502
+ </P>
503
+
504
+ <P >
505
+ Spread
506
+ the cost with our interest free finance available online and in
507
+ store.</P>
508
+
509
+ <P >
510
+ Our
511
+ simple finance options allow you to spread the cost of your purchase
512
+ over 6 or 12 months.</P>
513
+
514
+ <H3>All you need to do is:</H3>
515
+ <OL >
516
+ <LI>
517
+ Spend
518
+ a minimum £350 and above
519
+ <LI>
520
+ Place
521
+ a 10% deposit
522
+ <LI>
523
+ Minimum
524
+ finance amount after deposit £315 and above
525
+ </OL>
526
+
527
+ We
528
+ offer 2 simple finance options to help you spread the cost of your
529
+ purchases.
530
+ <UL>
531
+ <LI>
532
+ 6
533
+ months interest free finance on orders of £350 and above
534
+ <LI>
535
+
536
+ 12
537
+ months interest free finance on orders of £1000 and above
538
+ </LI>
539
+ </UL>
540
+
541
+ The
542
+ table below shows you how much monthly repayments will be based on
543
+ the total order value.
544
+ <TABLE >
545
+ <THEAD>
546
+ <TR>
547
+ <TD>
548
+
549
+
550
+ Order<BR>Value
551
+
552
+ </TD>
553
+ <TD>
554
+
555
+
556
+ Term<BR>(Months)
557
+
558
+ </TD>
559
+ <TD>
560
+
561
+
562
+ Deposit <BR>(10%)
563
+
564
+ </TD>
565
+ <TD>
566
+
567
+
568
+ Monthly<BR>Payments
569
+
570
+ </TD>
571
+ </TR>
572
+ </THEAD>
573
+ <TR>
574
+ <TD>
575
+
576
+
577
+ £350
578
+
579
+ </TD>
580
+ <TD>
581
+
582
+
583
+ 6
584
+ </TD>
585
+ <TD>
586
+
587
+
588
+ £35
589
+ </TD>
590
+ <TD>
591
+
592
+
593
+ £35.83
594
+ </TD>
595
+ </TR>
596
+ <TR>
597
+ <TD>
598
+
599
+
600
+ £700
601
+
602
+ </TD>
603
+ <TD>
604
+
605
+
606
+ 6
607
+ </TD>
608
+ <TD>
609
+
610
+
611
+ £70
612
+ </TD>
613
+ <TD>
614
+
615
+
616
+ £105
617
+ </TD>
618
+ </TR>
619
+ <TR>
620
+ <TD>
621
+
622
+
623
+ £1200
624
+
625
+ </TD>
626
+ <TD>
627
+
628
+
629
+ 12
630
+ </TD>
631
+ <TD>
632
+
633
+
634
+ £120
635
+ </TD>
636
+ <TD>
637
+
638
+
639
+ £90
640
+ </TD>
641
+ </TR>
642
+ <TR>
643
+ <TD>
644
+
645
+
646
+ £2000
647
+
648
+ </TD>
649
+ <TD>
650
+
651
+
652
+ 12
653
+ </TD>
654
+ <TD>
655
+
656
+
657
+ £200
658
+ </TD>
659
+ <TD>
660
+
661
+
662
+ £150
663
+ </TD>
664
+ </TR>
665
+ </TABLE>
666
+ <P ><BR><BR>
667
+ </P>
668
+
669
+ <P ><BR><BR>
670
+ </P>
671
+
672
+ <H1>Interest
673
+ Option Finance Example
674
+ </H1>
675
+
676
+ <P >
677
+ Up
678
+ to 48 months 29.9% APR representative interest option finance
679
+ </P>
680
+
681
+ <P >Spread the
682
+ cost with fixed monthly instalments and a period where you have the
683
+ option to settle interest free available online and in store.</P>
684
+
685
+ <P >
686
+ Our
687
+ simple interest option finance options allow you to spread the cost
688
+ of your purchase over 48 months with an option period of 6, 12 or 18
689
+ months.</P>
690
+
691
+ <P >Provided
692
+ your monthly instalments have been paid promptly, pay the outstanding
693
+ balance before your 6<SUP>th</SUP>, 12<SUP>th</SUP> or 18<SUP>th</SUP>
694
+ payment is due and we will waive all interest charges and just charge
695
+ an administration fee of £29.00.</P>
696
+
697
+ <P >All you
698
+ need to do is:</P>
699
+ <OL>
700
+ <LI>Spend a minimum £300
701
+ and above
702
+ <LI>Place a minimum 10%
703
+ deposit
704
+ <LI>Minimum finance
705
+ amount after deposit £270 and above
706
+ </OL>
707
+ We offer 3
708
+ simple finance options to help you spread the cost of your purchases.
709
+ <UL>
710
+ <LI>48 months interest
711
+ option finance, with the first payment deferred for 6 months on
712
+ orders of £300 and above
713
+ <LI>48 months interest
714
+ option finance, with the first payment deferred for 12 months on
715
+ orders of £300 and above
716
+ <LI>48 months interest
717
+ option finance, with the first payment deferred for 18 months on
718
+ orders of £300 and above
719
+ </UL>
720
+ <P >
721
+ The
722
+ table below shows you how much monthly repayments will be based on
723
+ the total order value.</P>
724
+
725
+
726
+ <P ><BR><BR>
727
+ </P>
728
+ <TABLE >
729
+ <thead>
730
+ <TR>
731
+ <TD>
732
+
733
+
734
+ Order<BR>Value
735
+
736
+ </TD>
737
+ <TD>
738
+
739
+
740
+ Term<BR>(Months)
741
+
742
+ </TD>
743
+ <TD>
744
+
745
+
746
+ Option Term
747
+
748
+
749
+
750
+ (Months)
751
+
752
+ </TD>
753
+ <TD>
754
+
755
+
756
+ Deposit <BR>(10%)
757
+
758
+ </TD>
759
+ <TD>
760
+
761
+
762
+ Monthly<BR>Payments
763
+
764
+ </TD>
765
+ </TR>
766
+ </thead>
767
+ <TR>
768
+ <TD>
769
+
770
+
771
+ £300
772
+
773
+ </TD>
774
+ <TD>
775
+
776
+
777
+ 48
778
+ </TD>
779
+ <TD>
780
+
781
+
782
+ 6
783
+ </TD>
784
+ <TD>
785
+
786
+
787
+ £30
788
+ </TD>
789
+ <TD>
790
+
791
+
792
+ £9.18
793
+ </TD>
794
+ </TR>
795
+ <TR>
796
+ <TD>
797
+
798
+
799
+ £500
800
+
801
+ </TD>
802
+ <TD>
803
+
804
+
805
+ 48
806
+ </TD>
807
+ <TD>
808
+
809
+
810
+ 6
811
+ </TD>
812
+ <TD>
813
+
814
+
815
+ £50
816
+ </TD>
817
+ <TD>
818
+
819
+
820
+ £15.29
821
+ </TD>
822
+ </TR>
823
+ <TR>
824
+ <TD>
825
+
826
+
827
+ £700
828
+
829
+ </TD>
830
+ <TD>
831
+
832
+
833
+ 48
834
+ </TD>
835
+ <TD>
836
+
837
+
838
+ 12
839
+ </TD>
840
+ <TD>
841
+
842
+
843
+ £70
844
+ </TD>
845
+ <TD>
846
+
847
+
848
+ £21.40
849
+ </TD>
850
+ </TR>
851
+ <TR>
852
+ <TD>
853
+
854
+
855
+ £1000
856
+
857
+ </TD>
858
+ <TD>
859
+
860
+
861
+ 48
862
+ </TD>
863
+ <TD>
864
+
865
+
866
+ 12
867
+ </TD>
868
+ <TD>
869
+
870
+
871
+ £100
872
+ </TD>
873
+ <TD>
874
+
875
+
876
+ £30.58
877
+ </TD>
878
+ </TR>
879
+ </TABLE>
880
+ <P ><BR><BR>
881
+ </P>
882
+
883
+ <P >Representative
884
+ example:
885
+ </P>
886
+ <UL>
887
+ <LI>Cash Price £700
888
+ <LI>Deposit
889
+ £70
890
+ </UL>
891
+ <UL>
892
+ <LI>Loan amount £630
893
+ <LI>29.9% APR
894
+ representative
895
+ <LI>Interest rate
896
+ 15.76% fixed
897
+ <LI>48 monthly repayments
898
+ of £21.40
899
+ <LI>Total term of loan
900
+ agreement 48 months
901
+ <LI>Total charge for
902
+ credit £397.20
903
+
904
+ <LI>Total Amount payable
905
+ £1097.20
906
+ </UL>
907
+
908
+
909
+
910
+ <P ><BR><BR>
911
+ </P>
912
+
913
+ <H1>
914
+ Finance FAQ Text</H1>
915
+
916
+ <P >The
917
+ following information should be personalised and used on your Finance
918
+ FAQs page:</P>
919
+
920
+ <H3>How do I choose to pay by finance?</H3>
921
+
922
+ <P >Just
923
+ select the finance option on the checkout page or let the sales
924
+ consultant know if you're buying in our showrooms.</P>
925
+
926
+ <H3>Who is eligible to apply for online
927
+ finance?</H3>
928
+
929
+ <P >To
930
+ apply for online finance, you must be over the age of 18, work at
931
+ least 16 hours a week, or be retired with an income. You must also be
932
+ a resident of the United Kingdom and have lived in the UK for the
933
+ last 12 months or more. Unfortunately, we are unable to offer online
934
+ finance to residents of Eire. Homemakers aren't excluded from
935
+ applying under their own names; however we will require the
936
+ employment details of your spouse in order to process your
937
+ application.</P>
938
+
939
+ <H3>When do my repayments start?</H3>
940
+
941
+ <P >Your
942
+ monthly repayments will begin one month after your purchase has been
943
+ delivered.</P>
944
+
945
+ <H3>Are there any arrangement fees or
946
+ hidden extras for credit?</H3>
947
+
948
+ <P >No.
949
+ There are no arrangement fees or hidden extras.</P>
950
+
951
+ <P >Applying
952
+ for online finance
953
+ </P>
954
+
955
+ <P >Applying
956
+ for online finance couldn't be easier or more convenient. When you
957
+ buy online from &lt;Company Name&gt;
958
+
959
+ you have the choice of applying for finance by
960
+ adding your purchase to the shopping basket, selecting the finance
961
+ option on the checkout page, and completing an online application
962
+ form. Just follow the simple instructions, entering your personal
963
+ details as required and we'll do the rest.</P>
964
+
965
+ <P >The
966
+ whole process only takes a few minutes and is simple and secure. Once
967
+ your finance application is approved, you will then be advised of how
968
+ to sign the finance agreement and you will also receive an email
969
+ confirming these details. Please read the agreement carefully
970
+ checking that all the details are correct, then either e-sign the
971
+ agreement or print and sign the agreement twice. Post the signed
972
+ agreement to the address shown on the covering letter of the
973
+ agreement.</P>
974
+
975
+ <P >Following
976
+ receipt of your finance agreement and a few additional checks, your
977
+ goods will be dispatched.</P>
978
+
979
+ <H3>Your questions answered</H3>
980
+
981
+ <P >Here's
982
+ some of the most commonly asked questions regarding online finance.</P>
983
+
984
+ <H3>Once my application is approved,
985
+ what happens next?</H3>
986
+
987
+ <P >Within
988
+ minutes of your application being approved, you will be presented
989
+ with the options to either e-sign or print and return your finance
990
+ agreement. If you choose to e-sign your agreement, a PDF of your
991
+ agreement will be displayed on screen. You should read the agreement
992
+ carefully before clicking all the relevant sections agreeing to its
993
+ terms. Once you have agreed to the terms of the finance agreement
994
+ &lt;Company Name&gt;
995
+ will
996
+ be notified and you need do nothing more. If you choose to print and
997
+ return your agreement you should print the agreement, read it
998
+ carefully and then sign the document following the instructions on
999
+ the covering letter. This signed document should then be posted to
1000
+ the address shown on the covering letter of the finance agreement.
1001
+ </P>
1002
+
1003
+ <P >Note
1004
+ that products will not be allocated to your order until your
1005
+ completed and signed agreement is returned and received by Hitachi
1006
+ Personal Finance. Shipment of your goods will follow soon after your
1007
+ agreement has been returned and received.</P>
1008
+
1009
+ <H3>Will your credit score me and if so,
1010
+ what does this mean?</H3>
1011
+
1012
+ <P >Credit
1013
+ scoring is the process used by financial services companies to
1014
+ evaluate the credit risk of new applicants. This technique will be
1015
+ applied to your application for online finance. Credit scoring works
1016
+ by awarding points for each answer given on the application form such
1017
+ as age, income and occupation, together with information obtained
1018
+ from credit reference agencies. This information allows us to produce
1019
+ consistent decisions, ensuring all our applicants are treated fairly.
1020
+ Credit scoring does not discriminate on the grounds of sex, race,
1021
+ religion or disability.</P>
1022
+
1023
+ <H3>If you decline my application, what
1024
+ is the reason?</H3>
1025
+
1026
+ <P >In
1027
+ addition to credit scoring, we also take into account confirmation of
1028
+ your identity, validation of certain application details, existing
1029
+ commitments and information held at the credit reference agencies.
1030
+ Though we are unable to provide you with a main reason for decline of
1031
+ your application, it is usually based on one, or a combination of the
1032
+ following:</P>
1033
+ <UL>
1034
+ <LI>Your credit score
1035
+ (note that every finance company will score you differently)
1036
+ <LI>Adverse credit
1037
+ reference agency information
1038
+ <LI>You are considered
1039
+ to be overcommitted
1040
+ <LI>You are aged under
1041
+ 18
1042
+ <LI>Your existing
1043
+ account performance with other lenders
1044
+ </UL>
1045
+ <H3>What type of information do credit
1046
+ reference agencies hold about me?</H3>
1047
+
1048
+ <P >Some of
1049
+ the information is public information, for example electoral roll,
1050
+ County Court Judgements and bankruptcies. Other lenders may also file
1051
+ information about accounts you hold with them for instance this could
1052
+ include your payment history and outstanding balance on these
1053
+ accounts. Any requests for credit, where a credit reference search
1054
+ has been undertaken, will also be filed, although the result of the
1055
+ request is not recorded.</P>
1056
+
1057
+ <H3>How do I obtain a copy of this
1058
+ information?</H3>
1059
+
1060
+ <P >You
1061
+ should send a cheque for £2.00 made payable to the relevant credit
1062
+ reference agency, together with details of all addresses at which you
1063
+ have lived over the last 6 years:</P>
1064
+ <UL>
1065
+ <LI>Experian Limited,
1066
+ Customer Support Centre, PO Box 9000, Nottingham, NG80 7WF
1067
+ <LI>Equifax Ltd.,
1068
+ Customer Service Centre, PO Box 10036, Leicester, LE3 4FS
1069
+ <LI>Callcredit
1070
+ Limited, Consumer Services, PO Box 491, Leeds, LS3 1WZ
1071
+ </UL>
1072
+ <P >The
1073
+ above listed agencies will provide details of information relating to
1074
+ these addresses. If you believe that the information is incorrect,
1075
+ you can ask the agency to correct it.</P>
1076
+
1077
+ <H3>If my application is not successful,
1078
+ can I re-apply?</H3>
1079
+
1080
+ <P >Yes. We
1081
+ acknowledge that your circumstances change and just because we have
1082
+ refused a previous application, it does not mean that we'll
1083
+ automatically turn down a further request. We do suggest however,
1084
+ that you leave at least 6 months between applications.</P>
1085
+
1086
+ <H3>Can I request delivery to an address
1087
+ other than my home?</H3>
1088
+
1089
+ <P >In
1090
+ order to safeguard against fraudulent applications, we regret that
1091
+ we're able only to deliver goods to the home address of the
1092
+ applicant.&nbsp;</P>
app/code/local/HC/PayByFinance/sql/paybyfinance_setup/mysql4-upgrade-2.0.3-2.0.4.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Hitachi Capital Pay By Finance
4
+ *
5
+ * Hitachi Capital Pay By Finance Extension
6
+ *
7
+ * PHP version >= 5.4.*
8
+ *
9
+ * @category HC
10
+ * @package PayByFinance
11
+ * @author Cohesion Digital <support@cohesiondigital.co.uk>
12
+ * @copyright 2014 Hitachi Capital
13
+ * @license http://www.gnu.org/copyleft/gpl.html GPL License
14
+ * @link http://www.cohesiondigital.co.uk/
15
+ *
16
+ */
17
+ // @codingStandardsIgnoreFile
18
+
19
+ //Adding new status for address inconsistency where acceptance notification came and billing and shipping addresses are not same...
20
+
21
+ $updater = $this;
22
+
23
+ $updater->startSetup();
24
+
25
+ $status = Mage::getModel('sales/order_status');
26
+ $status->setStatus(HC_PayByFinance_Helper_Data::STATUS_ADDRESS_INCONSISTENT)->setLabel('Address Data Inconsistent')
27
+ ->assignState(Mage_Sales_Model_Order::STATE_PROCESSING)
28
+ ->save();
29
+
30
+ $updater->endSetup();
app/code/local/HC/PayByFinance/sql/paybyfinance_setup/mysql4-upgrade-2.0.4-2.0.5.php ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Hitachi Capital Pay By Finance
4
+ *
5
+ * Hitachi Capital Pay By Finance Extension
6
+ *
7
+ * PHP version >= 5.4.*
8
+ *
9
+ * @category HC
10
+ * @package PayByFinance
11
+ * @author Cohesion Digital <support@cohesiondigital.co.uk>
12
+ * @copyright 2014 Hitachi Capital
13
+ * @license http://www.gnu.org/copyleft/gpl.html GPL License
14
+ * @link http://www.cohesiondigital.co.uk/
15
+ *
16
+ */
17
+
18
+ $updater = $this;
19
+
20
+ $updater->startSetup();
21
+
22
+ $setup = Mage::getModel('customer/entity_setup', 'core_setup');
23
+
24
+ $setup->addAttribute(
25
+ 'customer_address',
26
+ 'house_name',
27
+ array(
28
+ 'type' => 'varchar',
29
+ 'input' => 'text',
30
+ 'label' => 'House Name',
31
+ 'global' => 1,
32
+ 'visible' => 1,
33
+ 'required' => 0,
34
+ 'user_defined' => 1,
35
+ 'visible_on_front' => 1
36
+ )
37
+ );
38
+ Mage::getSingleton('eav/config')
39
+ ->getAttribute('customer_address', 'house_name')
40
+ ->setData(
41
+ 'used_in_forms',
42
+ array(
43
+ 'customer_register_address',
44
+ 'customer_address_edit',
45
+ 'adminhtml_customer_address'
46
+ )
47
+ )->save();
48
+
49
+ $setup->addAttribute(
50
+ 'customer_address',
51
+ 'house_number',
52
+ array(
53
+ 'type' => 'varchar',
54
+ 'input' => 'text',
55
+ 'label' => 'House Number',
56
+ 'global' => 1,
57
+ 'visible' => 1,
58
+ 'required' => 0,
59
+ 'user_defined' => 1,
60
+ 'visible_on_front' => 1
61
+ )
62
+ );
63
+ Mage::getSingleton('eav/config')
64
+ ->getAttribute('customer_address', 'house_number')
65
+ ->setData(
66
+ 'used_in_forms',
67
+ array(
68
+ 'customer_register_address',
69
+ 'customer_address_edit',
70
+ 'adminhtml_customer_address'
71
+ )
72
+ )->save();
73
+
74
+ $setup->addAttribute(
75
+ 'customer_address',
76
+ 'flat_number',
77
+ array(
78
+ 'type' => 'varchar',
79
+ 'input' => 'text',
80
+ 'label' => 'Flat Number',
81
+ 'global' => 1,
82
+ 'visible' => 1,
83
+ 'required' => 0,
84
+ 'user_defined' => 1,
85
+ 'visible_on_front' => 1
86
+ )
87
+ );
88
+ Mage::getSingleton('eav/config')
89
+ ->getAttribute('customer_address', 'flat_number')
90
+ ->setData(
91
+ 'used_in_forms',
92
+ array(
93
+ 'customer_register_address',
94
+ 'customer_address_edit',
95
+ 'adminhtml_customer_address'
96
+ )
97
+ )->save();
98
+
99
+ $tablequote = $this->getTable('sales/quote_address');
100
+ $tableorder = $this->getTable('sales/order_address');
101
+ $updater->run(
102
+ "ALTER TABLE $tablequote ADD `house_name` varchar(255) NOT NULL"
103
+ );
104
+ $updater->run(
105
+ "ALTER TABLE $tableorder ADD `house_name` varchar(255) NOT NULL"
106
+ );
107
+ $updater->run(
108
+ "ALTER TABLE $tablequote ADD `house_number` varchar(255) NOT NULL"
109
+ );
110
+ $updater->run(
111
+ "ALTER TABLE $tableorder ADD `house_number` varchar(255) NOT NULL"
112
+ );
113
+ $updater->run(
114
+ "ALTER TABLE $tablequote ADD `flat_number` varchar(255) NOT NULL"
115
+ );
116
+ $updater->run(
117
+ "ALTER TABLE $tableorder ADD `flat_number` varchar(255) NOT NULL"
118
+ );
119
+
120
+ $updater->endSetup();
app/design/adminhtml/default/default/layout/paybyfinance.xml CHANGED
@@ -150,4 +150,20 @@
150
  </reference>
151
  </reference>
152
  </adminhtml_sales_order_creditmemo_view>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  </layout>
150
  </reference>
151
  </reference>
152
  </adminhtml_sales_order_creditmemo_view>
153
+
154
+ <!-- Adding order view address house_flat, house_number, house_name -->
155
+ <adminhtml_sales_order_view>
156
+ <reference name="left">
157
+ <reference name="sales_order_tabs">
158
+ <reference name="order_tab_info">
159
+ <reference name="order_info">
160
+ <action method="setTemplate" ifconfig="hc_paybyfinance/general/address_checked">
161
+ <template>paybyfinance/enhaceaddress/orderview/address/info.phtml</template>
162
+ </action>
163
+ </reference>
164
+ </reference>
165
+ </reference>
166
+ </reference>
167
+
168
+ </adminhtml_sales_order_view>
169
  </layout>
app/design/adminhtml/default/default/template/paybyfinance/enhaceaddress/orderview/address/info.phtml ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2006-2014 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_order = $this->getOrder() ?>
28
+ <?php
29
+ $orderAdminDate = $this->formatDate($_order->getCreatedAtDate(), 'medium', true);
30
+ $orderStoreDate = $this->formatDate($_order->getCreatedAtStoreDate(), 'medium', true);
31
+ ?>
32
+ <div class="box-left">
33
+ <!--Order Information-->
34
+ <div class="entry-edit">
35
+ <?php if ($_order->getEmailSent()):
36
+ $_email = Mage::helper('sales')->__('the order confirmation email was sent');
37
+ else:
38
+ $_email = Mage::helper('sales')->__('the order confirmation email is not sent');
39
+ endif; ?>
40
+ <div class="entry-edit-head">
41
+ <?php if ($this->getNoUseOrderLink()): ?>
42
+ <h4 class="icon-head head-account"><?php echo Mage::helper('sales')->__('Order # %s', $_order->getRealOrderId()) ?> (<?php echo $_email ?>)</h4>
43
+ <?php else: ?>
44
+ <a href="<?php echo $this->getViewUrl($_order->getId()) ?>"><?php echo Mage::helper('sales')->__('Order # %s', $_order->getRealOrderId()) ?></a>
45
+ <strong>(<?php echo $_email ?>)</strong>
46
+ <?php endif; ?>
47
+ </div>
48
+ <div class="fieldset">
49
+ <table cellspacing="0" class="form-list">
50
+ <tr>
51
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Order Date') ?></label></td>
52
+ <td class="value"><strong><?php echo $orderAdminDate ?></strong></td>
53
+ </tr>
54
+ <?php if ($orderAdminDate != $orderStoreDate):?>
55
+ <tr>
56
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Order Date (%s)', $_order->getCreatedAtStoreDate()->getTimezone()) ?></label></td>
57
+ <td class="value"><strong><?php echo $orderStoreDate ?></strong></td>
58
+ </tr>
59
+ <?php endif;?>
60
+ <tr>
61
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Order Status') ?></label></td>
62
+ <td class="value"><strong><span id="order_status"><?php echo $_order->getStatusLabel() ?></span></strong></td>
63
+ </tr>
64
+ <tr>
65
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Purchased From') ?></label></td>
66
+ <td class="value"><strong><?php echo $this->getOrderStoreName() ?></strong></td>
67
+ </tr>
68
+ <?php if($_order->getRelationChildId()): ?>
69
+ <tr>
70
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Link to the New Order') ?></label></td>
71
+ <td class="value"><a href="<?php echo $this->getViewUrl($_order->getRelationChildId()) ?>">
72
+ <?php echo $_order->getRelationChildRealId() ?>
73
+ </a></td>
74
+ </tr>
75
+ <?php endif; ?>
76
+ <?php if($_order->getRelationParentId()): ?>
77
+ <tr>
78
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Link to the Previous Order') ?></label></td>
79
+ <td class="value"><a href="<?php echo $this->getViewUrl($_order->getRelationParentId()) ?>">
80
+ <?php echo $_order->getRelationParentRealId() ?>
81
+ </a></td>
82
+ </tr>
83
+ <?php endif; ?>
84
+ <?php if($_order->getRemoteIp() && $this->shouldDisplayCustomerIp()): ?>
85
+ <tr>
86
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Placed from IP') ?></label></td>
87
+ <td class="value"><strong><?php echo $_order->getRemoteIp(); echo ($_order->getXForwardedFor())?' (' . $this->escapeHtml($_order->getXForwardedFor()) . ')':''; ?></strong></td>
88
+ </tr>
89
+ <?php endif; ?>
90
+ <?php if($_order->getGlobalCurrencyCode() != $_order->getBaseCurrencyCode()): ?>
91
+ <tr>
92
+ <td class="label"><label><?php echo Mage::helper('sales')->__('%s / %s rate:', $_order->getGlobalCurrencyCode(), $_order->getBaseCurrencyCode()) ?></label></td>
93
+ <td class="value"><strong><?php echo $_order->getBaseToGlobalRate() ?></strong></td>
94
+ </tr>
95
+ <?php endif; ?>
96
+ <?php if($_order->getBaseCurrencyCode() != $_order->getOrderCurrencyCode()): ?>
97
+ <tr>
98
+ <td class="label"><label><?php echo Mage::helper('sales')->__('%s / %s rate:', $_order->getOrderCurrencyCode(), $_order->getBaseCurrencyCode()) ?></label></td>
99
+ <td class="value"><strong><?php echo $_order->getBaseToOrderRate() ?></strong></td>
100
+ </tr>
101
+ <?php endif; ?>
102
+ </table>
103
+ </div>
104
+ </div>
105
+ </div>
106
+ <div class="box-right">
107
+ <!--Account Information-->
108
+ <div class="entry-edit">
109
+ <div class="entry-edit-head">
110
+ <h4 class="icon-head head-account"><?php echo Mage::helper('sales')->__('Account Information') ?></h4>
111
+ <div class="tools"><?php echo $this->getAccountEditLink()?></div>
112
+ </div>
113
+ <div class="fieldset">
114
+ <div class="hor-scroll">
115
+ <table cellspacing="0" class="form-list">
116
+ <tr>
117
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Customer Name') ?></label></td>
118
+ <td class="value">
119
+ <?php if ($_customerUrl=$this->getCustomerViewUrl()) : ?>
120
+ <a href="<?php echo $_customerUrl ?>" target="_blank"><strong><?php echo $this->escapeHtml($_order->getCustomerName()) ?></strong></a>
121
+ <?php else: ?>
122
+ <strong><?php echo $this->escapeHtml($_order->getCustomerName()) ?></strong>
123
+ <?php endif; ?>
124
+ </td>
125
+ </tr>
126
+ <tr>
127
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Email') ?></label></td>
128
+ <td class="value"><a href="mailto:<?php echo $_order->getCustomerEmail() ?>"><strong><?php echo $_order->getCustomerEmail() ?></strong></a></td>
129
+ </tr>
130
+ <?php if ($_groupName = $this->getCustomerGroupName()) : ?>
131
+ <tr>
132
+ <td class="label"><label><?php echo Mage::helper('sales')->__('Customer Group') ?></label></td>
133
+ <td class="value"><strong><?php echo $_groupName ?></strong></td>
134
+ </tr>
135
+ <?php endif; ?>
136
+ <?php foreach ($this->getCustomerAccountData() as $data):?>
137
+ <tr>
138
+ <td class="label"><label><?php echo $data['label'] ?></label></td>
139
+ <td class="value"><strong><?php echo $data['value'] ?></strong></td>
140
+ </tr>
141
+ <?php endforeach;?>
142
+ </table>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </div>
147
+ <div class="clear"></div>
148
+
149
+ <div class="box-left">
150
+ <!--Billing Address-->
151
+ <div class="entry-edit">
152
+ <div class="entry-edit-head">
153
+ <h4 class="icon-head head-billing-address"><?php echo Mage::helper('sales')->__('Billing Address') ?></h4>
154
+ <div class="tools"><?php echo $this->getAddressEditLink($_order->getBillingAddress())?></div>
155
+ </div>
156
+ <fieldset>
157
+ <address><?php echo $_order->getBillingAddress()->getFormated(true) ?>
158
+ <br>
159
+ House Name: <?php echo $_order->getBillingAddress()->getHouseName() ?> <br>
160
+ House Number: <?php echo $_order->getBillingAddress()->getHouseNumber() ?> <br>
161
+ Flat Number: <?php echo $_order->getBillingAddress()->getFlatNumber() ?>
162
+ </address>
163
+ </fieldset>
164
+ </div>
165
+ </div>
166
+ <?php if (!$this->getOrder()->getIsVirtual()): ?>
167
+ <div class="box-right">
168
+ <!--Shipping Address-->
169
+ <div class="entry-edit">
170
+ <div class="entry-edit-head">
171
+ <h4 class="icon-head head-shipping-address"><?php echo Mage::helper('sales')->__('Shipping Address') ?></h4>
172
+ <div class="tools"><?php echo $this->getAddressEditLink($_order->getShippingAddress())?></div>
173
+ </div>
174
+ <fieldset>
175
+ <address><?php echo $_order->getShippingAddress()->getFormated(true) ?>
176
+ <br>
177
+ House Name: <?php echo $_order->getShippingAddress()->getHouseName() ?> <br>
178
+ House Number: <?php echo $_order->getShippingAddress()->getHouseNumber() ?> <br>
179
+ Flat Number: <?php echo $_order->getShippingAddress()->getFlatNumber() ?>
180
+ </address>
181
+ </fieldset>
182
+ </div>
183
+ </div>
184
+ <div class="clear"></div>
185
+ <?php endif; ?>
app/design/frontend/base/default/layout/paybyfinance.xml CHANGED
@@ -18,9 +18,11 @@
18
  </reference>
19
  </checkout_cart_index>
20
  <checkout_onepage_review>
21
- <reference name="root">
22
- <action method="setTemplate"><template>checkout/onepage/review/info-pbf.phtml</template></action>
 
23
  </reference>
 
24
  <reference name="checkout.onepage.review.info.totals">
25
  <action method="setTemplate"><template>checkout/onepage/review/totals-pbf.phtml</template></action>
26
  </reference>
@@ -229,4 +231,44 @@
229
  </reference>
230
  </sales_email_order_creditmemo_items>
231
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
  </layout>
18
  </reference>
19
  </checkout_cart_index>
20
  <checkout_onepage_review>
21
+ <!-- Adding grand total note -->
22
+ <reference name="checkout.onepage.review.info.items.after">
23
+ <block type="core/template" name="grand.total.pgf.info" template="checkout/onepage/review/grand-total-note-pbf.phtml"/>
24
  </reference>
25
+
26
  <reference name="checkout.onepage.review.info.totals">
27
  <action method="setTemplate"><template>checkout/onepage/review/totals-pbf.phtml</template></action>
28
  </reference>
231
  </reference>
232
  </sales_email_order_creditmemo_items>
233
 
234
+ <!-- Adding customer account edit address house_flat, house_number, house_name -->
235
+ <customer_address_form translate="label">
236
+ <reference name="head">
237
+ <action method="addItem" ifconfig="hc_paybyfinance/general/address_checked">
238
+ <type>skin_js</type>
239
+ <name>js/paybyfinance/adress-enhanced-validation.js</name>
240
+ </action>
241
+ </reference>
242
+
243
+ <reference name="customer_address_edit">
244
+ <action method="setTemplate" ifconfig="hc_paybyfinance/general/address_checked">
245
+ <template>paybyfinance/enhaceaddress/customer/address/edit.phtml</template>
246
+ </action>
247
+
248
+ </reference>
249
+ </customer_address_form>
250
+
251
+ <!-- Adding checkout address edit house_flat, house_number, house_name -->
252
+ <checkout_onepage_index>
253
+ <reference name="head">
254
+ <action method="addItem" ifconfig="hc_paybyfinance/general/address_checked">
255
+ <type>skin_js</type>
256
+ <name>js/paybyfinance/adress-enhanced-validation.js</name>
257
+ </action>
258
+ </reference>
259
+
260
+ <reference name="checkout.onepage.billing">
261
+ <action method="setTemplate" ifconfig="hc_paybyfinance/general/address_checked">
262
+ <template>paybyfinance/enhaceaddress/customer/address/onepage/billing.phtml</template>
263
+ </action>
264
+ </reference>
265
+
266
+ <reference name="checkout.onepage.shipping">
267
+ <action method="setTemplate" ifconfig="hc_paybyfinance/general/address_checked">
268
+ <template>paybyfinance/enhaceaddress/customer/address/onepage/shipping.phtml</template>
269
+ </action>
270
+ </reference>
271
+ </checkout_onepage_index>
272
+
273
+
274
  </layout>
app/design/frontend/base/default/template/checkout/onepage/review/info-pbf.phtml DELETED
@@ -1,85 +0,0 @@
1
- <?php
2
- /**
3
- * Magento Enterprise Edition
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Magento Enterprise Edition License
8
- * that is bundled with this package in the file LICENSE_EE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://www.magentocommerce.com/license/enterprise-edition
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magentocommerce.com for more information.
20
- *
21
- * @category design
22
- * @package base_default
23
- * @copyright Copyright (c) 2014 Magento Inc. (http://www.magentocommerce.com)
24
- * @license http://www.magentocommerce.com/license/enterprise-edition
25
- */
26
- ?>
27
- <?php echo $this->getChildHtml('items_before'); ?>
28
- <div id="checkout-review-table-wrapper">
29
- <table class="data-table" id="checkout-review-table">
30
- <?php if ($this->helper('tax')->displayCartBothPrices()): $colspan = $rowspan = 2; else: $colspan = $rowspan = 1; endif; ?>
31
- <col />
32
- <col width="1" />
33
- <col width="1" />
34
- <col width="1" />
35
- <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
36
- <col width="1" />
37
- <col width="1" />
38
- <?php endif; ?>
39
- <thead>
40
- <tr>
41
- <th rowspan="<?php echo $rowspan ?>"><?php echo $this->__('Product Name') ?></th>
42
- <th colspan="<?php echo $colspan ?>" class="a-center"><?php echo $this->__('Price') ?></th>
43
- <th rowspan="<?php echo $rowspan ?>" class="a-center"><?php echo $this->__('Qty') ?></th>
44
- <th colspan="<?php echo $colspan ?>" class="a-center"><?php echo $this->__('Subtotal') ?></th>
45
- </tr>
46
- <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
47
- <tr>
48
- <th class="a-right"><?php echo $this->helper('tax')->getIncExcTaxLabel(false) ?></th>
49
- <th><?php echo $this->helper('tax')->getIncExcTaxLabel(true) ?></th>
50
- <th class="a-right"><?php echo $this->helper('tax')->getIncExcTaxLabel(false) ?></th>
51
- <th><?php echo $this->helper('tax')->getIncExcTaxLabel(true) ?></th>
52
- </tr>
53
- <?php endif; ?>
54
- </thead>
55
- <?php echo $this->getChildHtml('totals'); ?>
56
- <tbody>
57
- <?php foreach($this->getItems() as $_item): ?>
58
- <?php echo $this->getItemHtml($_item)?>
59
- <?php endforeach ?>
60
- </tbody>
61
- </table>
62
- * Grand total is the amount to be paid by credit/debit card
63
- </div>
64
- <?php echo $this->getChildHtml('items_after'); ?>
65
- <script type="text/javascript">
66
- //<![CDATA[
67
- decorateTable('checkout-review-table');
68
- truncateOptions();
69
- //]]>
70
- </script>
71
- <div id="checkout-review-submit">
72
- <?php echo $this->getChildHtml('agreements') ?>
73
- <div class="buttons-set" id="review-buttons-container">
74
- <p class="f-left"><?php echo $this->__('Forgot an Item?') ?> <a href="<?php echo $this->getUrl('checkout/cart') ?>"><?php echo $this->__('Edit Your Cart') ?></a></p>
75
- <?php echo $this->getChildHtml('button') ?>
76
- <span class="please-wait" id="review-please-wait" style="display:none;">
77
- <img src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" alt="<?php echo $this->__('Submitting order information...') ?>" title="<?php echo $this->__('Submitting order information...') ?>" class="v-middle" /> <?php echo $this->__('Submitting order information...') ?>
78
- </span>
79
- </div>
80
- <script type="text/javascript">
81
- //<![CDATA[
82
- review = new Review('<?php echo $this->getUrl('checkout/onepage/saveOrder', array('form_key' => Mage::getSingleton('core/session')->getFormKey())) ?>', '<?php echo $this->getUrl('checkout/onepage/success') ?>', $('checkout-agreements'));
83
- //]]>
84
- </script>
85
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/base/default/template/paybyfinance/enhaceaddress/customer/address/edit.phtml ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category design
22
+ * @package rwd_default
23
+ * @copyright Copyright (c) 2006-2014 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Edit customer address template
30
+ *
31
+ * @see Mage_Customer_Block_Address_Edit
32
+ */
33
+ ?>
34
+ <?php if($this->getTitle()): ?>
35
+ <div class="page-title">
36
+ <h1><?php echo $this->getTitle() ?></h1>
37
+ </div>
38
+ <?php endif; ?>
39
+ <?php echo $this->getMessagesBlock()->toHtml() ?>
40
+ <form action="<?php echo $this->getSaveUrl() ?>" method="post" id="form-validate" class="scaffold-form" enctype="multipart/form-data">
41
+ <div class="fieldset">
42
+ <?php echo $this->getBlockHtml('formkey')?>
43
+ <input type="hidden" name="success_url" value="<?php echo $this->getSuccessUrl() ?>" />
44
+ <input type="hidden" name="error_url" value="<?php echo $this->getErrorUrl() ?>" />
45
+ <h2 class="legend"><?php echo $this->__('Contact Information') ?></h2>
46
+ <p class="required"><?php echo $this->__('* Required Fields') ?></p>
47
+ <ul class="form-list">
48
+ <li class="fields">
49
+ <?php echo $this->getNameBlockHtml() ?>
50
+ </li>
51
+ <li class="wide">
52
+ <label for="company"><?php echo $this->__('Company') ?></label>
53
+ <div class="input-box">
54
+ <input type="text" name="company" id="company" title="<?php echo $this->__('Company') ?>" value="<?php echo $this->escapeHtml($this->getAddress()->getCompany()) ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('company') ?>" />
55
+ </div>
56
+ </li>
57
+ <li class="fields">
58
+ <div class="field">
59
+ <label for="telephone" class="required"><em>*</em><?php echo $this->__('Telephone') ?></label>
60
+ <div class="input-box">
61
+ <input type="tel" name="telephone" value="<?php echo $this->escapeHtml($this->getAddress()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?>" id="telephone" />
62
+ </div>
63
+ </div>
64
+ <div class="field">
65
+ <label for="fax"><?php echo $this->__('Fax') ?></label>
66
+ <div class="input-box">
67
+ <input type="tel" name="fax" id="fax" title="<?php echo $this->__('Fax') ?>" value="<?php echo $this->escapeHtml($this->getAddress()->getFax()) ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('fax') ?>" />
68
+ </div>
69
+ </div>
70
+ </li>
71
+ </ul>
72
+ </div>
73
+ <div class="fieldset">
74
+ <h2 class="legend"><?php echo $this->__('Address') ?></h2>
75
+ <ul class="form-list">
76
+ <?php $_streetValidationClass = $this->helper('customer/address')->getAttributeValidationClass('street'); ?>
77
+ <li class="wide">
78
+ <label for="street_1" class="required"><em>*</em><?php echo $this->__('Street Address') ?></label>
79
+ <div class="input-box">
80
+ <input type="text" name="street[]" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet(1)) ?>" title="<?php echo $this->__('Street Address') ?>" id="street_1" class="input-text <?php echo $_streetValidationClass ?>" />
81
+ </div>
82
+ </li>
83
+ <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
84
+ <?php for ($_i = 2, $_n = $this->helper('customer/address')->getStreetLines(); $_i <= $_n; $_i++): ?>
85
+ <li class="wide">
86
+ <label for="billing:street<?php echo $_i ?>"><?php echo $this->__('Street Address %s', $_i) ?></label>
87
+ <div class="input-box">
88
+ <input type="text" name="street[]" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet($_i)) ?>" title="<?php echo $this->__('Street Address %s', $_i) ?>" id="street_<?php echo $_i ?>" class="input-text <?php echo $_streetValidationClass ?>" />
89
+ </div>
90
+ </li>
91
+ <?php endfor; ?>
92
+ <?php if ($this->helper('customer/address')->isVatAttributeVisible()) : ?>
93
+ <li class="wide">
94
+ <label for="vat_id"><?php echo $this->__('VAT Number') ?></label>
95
+ <div class="input-box">
96
+ <input type="text" name="vat_id" value="<?php echo $this->escapeHtml($this->getAddress()->getVatId()) ?>" title="<?php echo $this->__('VAT Number') ?>" id="vat_id" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('vat_id') ?>" />
97
+ </div>
98
+ </li>
99
+ <?php endif; ?>
100
+
101
+ <li class="fields">
102
+ <div class="field">
103
+ <label for="house_name" class="required"><em>*</em><?php echo $this->__('House Name') ?></label>
104
+ <div class="input-box">
105
+ <input type="text" name="house_name" reqGroup="additional_address_fields" value="<?php echo $this->htmlEscape($this->getAddress()->getHouseName()) ?>" title="<?php echo $this->__('House Name') ?>" id="house_name" class="input-text validate-one-required-by-reqGroup" />
106
+ </div>
107
+ </div>
108
+ <div class="field">
109
+ <label for="house_number" class="required"><em>*</em><?php echo $this->__('House Number') ?></label>
110
+ <div class="input-box">
111
+ <input type="text" name="house_number" reqGroup="additional_address_fields" value="<?php echo $this->htmlEscape($this->getAddress()->getHouseNumber()) ?>" title="<?php echo $this->__('House Number') ?>" id="house_number" class="input-text validate-one-required-by-reqGroup" />
112
+ </div>
113
+ </div>
114
+ <div class="field">
115
+ <label for="flat_number" class="required"><em>*</em><?php echo $this->__('Flat Number') ?></label>
116
+ <div class="input-box">
117
+ <input type="text" name="flat_number" reqGroup="additional_address_fields" value="<?php echo $this->htmlEscape($this->getAddress()->getFlatNumber()) ?>" title="<?php echo $this->__('Flat Number') ?>" id="flat_number" class="input-text validate-one-required-by-reqGroup" />
118
+ </div>
119
+ </div>
120
+ <div class="field">
121
+ <label for="city" class="required"><em>*</em><?php echo $this->__('City') ?></label>
122
+ <div class="input-box">
123
+ <input type="text" name="city" value="<?php echo $this->escapeHtml($this->getAddress()->getCity()) ?>" title="<?php echo $this->__('City') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('city') ?>" id="city" />
124
+ </div>
125
+ </div>
126
+ <div class="field">
127
+ <label for="region_id" class="required"><em>*</em><?php echo $this->__('State/Province') ?></label>
128
+ <div class="input-box">
129
+ <select id="region_id" name="region_id" title="<?php echo $this->__('State/Province') ?>" class="validate-select" style="display:none;">
130
+ <option value=""><?php echo $this->__('Please select region, state or province') ?></option>
131
+ </select>
132
+ <script type="text/javascript">
133
+ //<![CDATA[
134
+ $('region_id').setAttribute('defaultValue', "<?php echo $this->getAddress()->getRegionId() ?>");
135
+ //]]>
136
+ </script>
137
+ <input type="text" id="region" name="region" value="<?php echo $this->escapeHtml($this->getAddress()->getRegion()) ?>" title="<?php echo $this->__('State/Province') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('region') ?>" />
138
+ </div>
139
+ </div>
140
+ </li>
141
+ <li class="fields">
142
+ <div class="field">
143
+ <label for="zip" class="required"><em>*</em><?php echo $this->__('Zip/Postal Code') ?></label>
144
+ <div class="input-box">
145
+ <input type="text" name="postcode" value="<?php echo $this->escapeHtml($this->getAddress()->getPostcode()) ?>" title="<?php echo $this->__('Zip/Postal Code') ?>" id="zip" class="input-text validate-zip-international <?php echo $this->helper('customer/address')->getAttributeValidationClass('postcode') ?>" />
146
+ </div>
147
+ </div>
148
+ <div class="field">
149
+ <label for="country" class="required"><em>*</em><?php echo $this->__('Country') ?></label>
150
+ <div class="input-box">
151
+ <?php echo $this->getCountryHtmlSelect() ?>
152
+ </div>
153
+ </div>
154
+ </li>
155
+ <li<?php if($this->canSetAsDefaultBilling()) echo ' class="control"' ?>>
156
+ <?php if($this->isDefaultBilling()): ?>
157
+ <strong><?php echo $this->__('Default Billing Address') ?></strong>
158
+ <?php elseif($this->canSetAsDefaultBilling()): ?>
159
+ <input type="checkbox" id="primary_billing" name="default_billing" value="1" title="<?php echo $this->__('Use as My Default Billing Address') ?>" class="checkbox" /><label for="primary_billing"><?php echo $this->__('Use as my default billing address') ?></label>
160
+ <?php else: ?>
161
+ <input type="hidden" name="default_billing" value="1" />
162
+ <?php endif; ?>
163
+ </li>
164
+ <li<?php if($this->canSetAsDefaultShipping()) echo ' class="control"' ?>>
165
+ <?php if($this->isDefaultShipping()): ?>
166
+ <strong><?php echo $this->__('Default Shipping Address') ?></strong>
167
+ <?php elseif($this->canSetAsDefaultShipping()): ?>
168
+ <input type="checkbox" id="primary_shipping" name="default_shipping" value="1" title="<?php echo $this->__('Use as My Default Shipping Address') ?>" class="checkbox" /><label for="primary_shipping"><?php echo $this->__('Use as my default shipping address') ?></label>
169
+ <?php else: ?>
170
+ <input type="hidden" name="default_shipping" value="1" />
171
+ <?php endif; ?>
172
+ </li>
173
+ </ul>
174
+ </div>
175
+ <div class="buttons-set">
176
+ <p class="back-link"><a href="<?php echo $this->escapeUrl($this->getBackUrl()) ?>"><small>&laquo; </small><?php echo $this->__('Back') ?></a></p>
177
+ <button type="submit" title="<?php echo $this->__('Save Address') ?>" class="button"><span><span><?php echo $this->__('Save Address') ?></span></span></button>
178
+ </div>
179
+ </form>
180
+
181
+ <script type="text/javascript">
182
+
183
+ var dataForm = new VarienForm('form-validate', true);
184
+ new RegionUpdater('country', 'region', 'region_id', <?php echo $this->helper('directory')->getRegionJson() ?>, undefined, 'zip');
185
+
186
+ </script>
app/design/frontend/base/default/template/paybyfinance/enhaceaddress/customer/address/onepage/billing.phtml ADDED
@@ -0,0 +1,248 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category design
22
+ * @package rwd_default
23
+ * @copyright Copyright (c) 2006-2014 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ /** @var Mage_Checkout_Block_Onepage_Billing $this */
27
+ ?>
28
+ <form id="co-billing-form" action="">
29
+ <div class="fieldset">
30
+ <p class="required"><?php echo $this->__('* Required Fields') ?></p>
31
+ <ul class="form-list">
32
+ <?php if ($this->customerHasAddresses()): ?>
33
+ <li class="wide">
34
+ <label for="billing-address-select"><?php echo $this->__('Select a billing address from your address book or enter a new address.') ?></label>
35
+ <div class="input-box">
36
+ <?php echo $this->getAddressesHtmlSelect('billing') ?>
37
+ </div>
38
+ </li>
39
+ <?php endif; ?>
40
+ <li id="billing-new-address-form"<?php if ($this->customerHasAddresses()): ?> style="display:none;"<?php endif; ?> class="scaffold-form">
41
+ <div class="fieldset">
42
+ <input type="hidden" name="billing[address_id]" value="<?php echo $this->getAddress()->getId() ?>" id="billing:address_id" />
43
+ <ul>
44
+ <li class="fields"><?php echo $this->getLayout()->createBlock('customer/widget_name')->setObject($this->getAddress()->getFirstname() ? $this->getAddress() : $this->getQuote()->getCustomer())->setForceUseCustomerRequiredAttributes(!$this->isCustomerLoggedIn())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?></li>
45
+ <li class="fields">
46
+ <div class="field">
47
+ <label for="billing:company"><?php echo $this->__('Company') ?></label>
48
+ <div class="input-box">
49
+ <input type="text" id="billing:company" name="billing[company]" value="<?php echo $this->escapeHtml($this->getAddress()->getCompany()) ?>" title="<?php echo $this->__('Company') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('company') ?>" />
50
+ </div>
51
+ </div>
52
+ <?php if(!$this->isCustomerLoggedIn()): ?>
53
+ <div class="field">
54
+ <label for="billing:email" class="required"><em>*</em><?php echo $this->__('Email Address') ?></label>
55
+ <div class="input-box">
56
+ <input type="email" autocapitalize="off" autocorrect="off" spellcheck="false" name="billing[email]" id="billing:email" value="<?php echo $this->escapeHtml($this->getAddress()->getEmail()) ?>" title="<?php echo $this->__('Email Address') ?>" class="input-text validate-email required-entry" />
57
+ </div>
58
+ </div>
59
+ <?php endif; ?>
60
+ </li>
61
+ <?php $_streetValidationClass = $this->helper('customer/address')->getAttributeValidationClass('street'); ?>
62
+ <li class="wide">
63
+ <label for="billing:street1" class="required"><em>*</em><?php echo $this->__('Address') ?></label>
64
+ <div class="input-box">
65
+ <input type="text" title="<?php echo $this->__('Street Address') ?>" name="billing[street][]" id="billing:street1" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet(1)) ?>" class="input-text <?php echo $_streetValidationClass ?>" />
66
+ </div>
67
+ </li>
68
+ <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
69
+ <?php for ($_i = 2, $_n = $this->helper('customer/address')->getStreetLines(); $_i <= $_n; $_i++): ?>
70
+ <li class="wide">
71
+ <label for="billing:street<?php echo $_i ?>"><?php echo $this->__('Street Address %s', $_i) ?></label>
72
+ <div class="input-box">
73
+ <input type="text" title="<?php echo $this->__('Street Address %s', $_i) ?>" name="billing[street][]" id="billing:street<?php echo $_i ?>" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet($_i)) ?>" class="input-text <?php echo $_streetValidationClass ?>" />
74
+ </div>
75
+ </li>
76
+ <?php endfor; ?>
77
+ <li class="wide">
78
+ <label for="billing:house_name"><?php echo $this->__('House Name') ?></label>
79
+ <div class="input-box">
80
+ <input type="text" title="<?php echo $this->__('House Name') ?>" reqGroup="additional_address_fields" name="billing[house_name]" id="billing:house_name" value="<?php echo $this->escapeHtml($this->getAddress()->getHouseName()) ?>" class="input-text validate-one-required-by-reqGroup" />
81
+ </div>
82
+ </li>
83
+ <li class="wide">
84
+ <label for="billing:house_number"><?php echo $this->__('House Number') ?></label>
85
+ <div class="input-box">
86
+ <input type="text" title="<?php echo $this->__('House Number') ?>" reqGroup="additional_address_fields" name="billing[house_number]" id="billing:house_number" value="<?php echo $this->escapeHtml($this->getAddress()->getHouseNumber()) ?>" class="input-text validate-one-required-by-reqGroup" />
87
+ </div>
88
+ </li>
89
+ <li class="wide">
90
+ <label for="billing:flat_number"><?php echo $this->__('Flat Number') ?></label>
91
+ <div class="input-box">
92
+ <input type="text" title="<?php echo $this->__('Flat Number') ?>" reqGroup="additional_address_fields" name="billing[flat_number]" id="billing:flat_number" value="<?php echo $this->escapeHtml($this->getAddress()->getFlatNumber()) ?>" class="input-text validate-one-required-by-reqGroup" />
93
+ </div>
94
+ </li>
95
+
96
+
97
+ <?php if ($this->helper('customer/address')->isVatAttributeVisible()) : ?>
98
+ <li class="wide">
99
+ <label for="billing:vat_id"><?php echo $this->__('VAT Number') ?></label>
100
+ <div class="input-box">
101
+ <input type="text" id="billing:vat_id" name="billing[vat_id]" value="<?php echo $this->escapeHtml($this->getAddress()->getVatId()) ?>" title="<?php echo $this->__('VAT Number') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('vat_id') ?>" />
102
+ </div>
103
+ </li>
104
+ <?php endif; ?>
105
+ <li class="fields">
106
+ <div class="field">
107
+ <label for="billing:city" class="required"><em>*</em><?php echo $this->__('City') ?></label>
108
+ <div class="input-box">
109
+ <input type="text" title="<?php echo $this->__('City') ?>" name="billing[city]" value="<?php echo $this->escapeHtml($this->getAddress()->getCity()) ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('city') ?>" id="billing:city" />
110
+ </div>
111
+ </div>
112
+ <div class="field">
113
+ <label for="billing:region_id" class="required"><em>*</em><?php echo $this->__('State/Province') ?></label>
114
+ <div class="input-box">
115
+ <select id="billing:region_id" name="billing[region_id]" title="<?php echo $this->__('State/Province') ?>" class="validate-select" style="display:none;">
116
+ <option value=""><?php echo $this->__('Please select region, state or province') ?></option>
117
+ </select>
118
+ <script type="text/javascript">
119
+ //<![CDATA[
120
+ $('billing:region_id').setAttribute('defaultValue', "<?php echo $this->getAddress()->getRegionId() ?>");
121
+ //]]>
122
+ </script>
123
+ <input type="text" id="billing:region" name="billing[region]" value="<?php echo $this->escapeHtml($this->getAddress()->getRegion()) ?>" title="<?php echo $this->__('State/Province') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('region') ?>" style="display:none;" />
124
+ </div>
125
+ </div>
126
+ </li>
127
+ <li class="fields">
128
+ <div class="field">
129
+ <label for="billing:postcode" class="required"><em>*</em><?php echo $this->__('Zip/Postal Code') ?></label>
130
+ <div class="input-box">
131
+ <input type="text" title="<?php echo $this->__('Zip/Postal Code') ?>" name="billing[postcode]" id="billing:postcode" value="<?php echo $this->escapeHtml($this->getAddress()->getPostcode()) ?>" class="input-text validate-zip-international <?php echo $this->helper('customer/address')->getAttributeValidationClass('postcode') ?>" />
132
+ </div>
133
+ </div>
134
+ <div class="field">
135
+ <label for="billing:country_id" class="required"><em>*</em><?php echo $this->__('Country') ?></label>
136
+ <div class="input-box">
137
+ <?php echo $this->getCountryHtmlSelect('billing') ?>
138
+ </div>
139
+ </div>
140
+ </li>
141
+ <li class="fields">
142
+ <div class="field">
143
+ <label for="billing:telephone" class="required"><em>*</em><?php echo $this->__('Telephone') ?></label>
144
+ <div class="input-box">
145
+ <input type="tel" name="billing[telephone]" value="<?php echo $this->escapeHtml($this->getAddress()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?>" id="billing:telephone" />
146
+ </div>
147
+ </div>
148
+ <div class="field">
149
+ <label for="billing:fax"><?php echo $this->__('Fax') ?></label>
150
+ <div class="input-box">
151
+ <input type="tel" name="billing[fax]" value="<?php echo $this->escapeHtml($this->getAddress()->getFax()) ?>" title="<?php echo $this->__('Fax') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('fax') ?>" id="billing:fax" />
152
+ </div>
153
+ </div>
154
+ </li>
155
+
156
+ <?php if(!$this->isCustomerLoggedIn()): ?>
157
+
158
+ <?php $_dob = $this->getLayout()->createBlock('customer/widget_dob') ?>
159
+ <?php $_gender = $this->getLayout()->createBlock('customer/widget_gender') ?>
160
+ <?php if ($_dob->isEnabled() || $_gender->isEnabled()): ?>
161
+ <li class="fields">
162
+ <?php if ($_dob->isEnabled()): ?>
163
+ <div class="field">
164
+ <?php echo $_dob->setDate($this->getQuote()->getCustomerDob())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?>
165
+ </div>
166
+ <?php endif; ?>
167
+ <?php if ($_gender->isEnabled()): ?>
168
+ <div class="field">
169
+ <?php echo $_gender->setGender($this->getQuote()->getCustomerGender())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?>
170
+ </div>
171
+ <?php endif ?>
172
+ </li>
173
+ <?php endif ?>
174
+
175
+ <?php if ($this->isTaxvatEnabled()):?>
176
+ <li><?php echo $this->getTaxvatHtml() ?></li>
177
+ <?php endif; ?>
178
+
179
+ <li class="fields" id="register-customer-password">
180
+ <div class="field">
181
+ <label for="billing:customer_password" class="required"><em>*</em><?php echo $this->__('Password') ?></label>
182
+ <div class="input-box">
183
+ <input type="password" name="billing[customer_password]" id="billing:customer_password" title="<?php echo $this->__('Password') ?>" class="input-text required-entry validate-password" />
184
+ </div>
185
+ </div>
186
+ <div class="field">
187
+ <label for="billing:confirm_password" class="required"><em>*</em><?php echo $this->__('Confirm Password') ?></label>
188
+ <div class="input-box">
189
+ <input type="password" name="billing[confirm_password]" title="<?php echo $this->__('Confirm Password') ?>" id="billing:confirm_password" class="input-text required-entry validate-cpassword" />
190
+ </div>
191
+ </div>
192
+ </li>
193
+ <?php echo $this->getChildHtml('persistent.remember.me'); ?>
194
+ <?php endif; ?>
195
+ <?php if ($this->isCustomerLoggedIn() && $this->customerHasAddresses()):?>
196
+ <li class="control">
197
+ <input type="checkbox" name="billing[save_in_address_book]" value="1" title="<?php echo $this->__('Save in address book') ?>" id="billing:save_in_address_book" onchange="if(window.shipping) shipping.setSameAsBilling(false);"<?php if ($this->getAddress()->getSaveInAddressBook()):?> checked="checked"<?php endif;?> class="checkbox" /><label for="billing:save_in_address_book"><?php echo $this->__('Save in address book') ?></label>
198
+ </li>
199
+ <?php else:?>
200
+ <li class="no-display"><input type="hidden" name="billing[save_in_address_book]" value="1" /></li>
201
+ <?php endif; ?>
202
+ <?php echo $this->getChildHtml('form.additional.info'); ?>
203
+ </ul>
204
+ <?php echo $this->getChildHtml('persistent.remember.me.tooltip'); ?>
205
+ </div>
206
+ </li>
207
+ <?php if ($this->canShip()): ?>
208
+ <li class="control">
209
+ <input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_yes" value="1"<?php if ($this->isUseBillingAddressForShipping()) {?> checked="checked"<?php }?> title="<?php echo $this->__('Ship to this address') ?>" onclick="$('shipping:same_as_billing').checked = true;" class="radio" /><label for="billing:use_for_shipping_yes"><?php echo $this->__('Ship to this address') ?></label></li>
210
+ <li class="control">
211
+ <input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_no" value="0"<?php if (!$this->isUseBillingAddressForShipping()) {?> checked="checked"<?php }?> title="<?php echo $this->__('Ship to different address') ?>" onclick="$('shipping:same_as_billing').checked = false;" class="radio" /><label for="billing:use_for_shipping_no"><?php echo $this->__('Ship to different address') ?></label>
212
+ </li>
213
+ <?php endif; ?>
214
+ </ul>
215
+ <?php if (!$this->canShip()): ?>
216
+ <input type="hidden" name="billing[use_for_shipping]" value="1" />
217
+ <?php endif; ?>
218
+ <div class="buttons-set" id="billing-buttons-container">
219
+ <button type="button" title="<?php echo $this->__('Continue') ?>" class="button" onclick="billing.save()"><span><span><?php echo $this->__('Continue') ?></span></span></button>
220
+ <span class="please-wait" id="billing-please-wait" style="display:none;">
221
+ <img src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" alt="<?php echo $this->__('Loading next step...') ?>" title="<?php echo $this->__('Loading next step...') ?>" class="v-middle" /> <?php echo $this->__('Loading next step...') ?>
222
+ </span>
223
+ </div>
224
+ </div>
225
+ </form>
226
+ <script type="text/javascript">
227
+ //<![CDATA[
228
+ var billing = new Billing('co-billing-form', '<?php echo $this->getUrl('checkout/onepage/getAddress') ?>address/', '<?php echo $this->getUrl('checkout/onepage/saveBilling') ?>');
229
+ var billingForm = new VarienForm('co-billing-form');
230
+
231
+ //billingForm.setElementsRelation('billing:country_id', 'billing:region', '<?php echo $this->getUrl('directory/json/childRegion') ?>', '<?php echo $this->__('Select State/Province...') ?>');
232
+ $('billing-address-select') && billing.newAddress(!$('billing-address-select').value);
233
+
234
+ var billingRegionUpdater = new RegionUpdater('billing:country_id', 'billing:region', 'billing:region_id', <?php echo $this->helper('directory')->getRegionJson() ?>, undefined, 'billing:postcode');
235
+ if ($('onepage-guest-register-button')) {
236
+ Event.observe($('onepage-guest-register-button'), 'click', function(event) {
237
+ var billingRememberMe = $('co-billing-form').select('#remember-me-box');
238
+ if (billingRememberMe.length > 0) {
239
+ if ($('login:guest') && $('login:guest').checked) {
240
+ billingRememberMe[0].hide();
241
+ } else if ($('login:register') && ($('login:register').checked || $('login:register').type == 'hidden')) {
242
+ billingRememberMe[0].show();
243
+ }
244
+ }
245
+ });
246
+ }
247
+ //]]>
248
+ </script>
app/design/frontend/base/default/template/paybyfinance/enhaceaddress/customer/address/onepage/shipping.phtml ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magento.com for more information.
20
+ *
21
+ * @category design
22
+ * @package rwd_default
23
+ * @copyright Copyright (c) 2006-2014 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <form action="" id="co-shipping-form">
28
+ <ul class="form-list">
29
+ <?php if ($this->customerHasAddresses()): ?>
30
+ <li class="wide">
31
+ <label for="shipping-address-select"><?php echo $this->__('Select a shipping address from your address book or enter a new address.') ?></label>
32
+ <div class="input-box">
33
+ <?php echo $this->getAddressesHtmlSelect('shipping') ?>
34
+ </div>
35
+ </li>
36
+ <?php endif ?>
37
+ <li id="shipping-new-address-form"<?php if ($this->customerHasAddresses()): ?> style="display:none;"<?php endif ?> class="scaffold-form">
38
+ <div class="fieldset">
39
+ <p class="required"><?php echo $this->__('* Required Fields') ?></p>
40
+ <input type="hidden" name="shipping[address_id]" value="<?php echo $this->getAddress()->getId() ?>" id="shipping:address_id" />
41
+ <ul>
42
+ <li class="fields"><?php echo $this->getLayout()->createBlock('customer/widget_name')->setObject($this->getAddress())->setFieldIdFormat('shipping:%s')->setFieldNameFormat('shipping[%s]')->setFieldParams('onchange="shipping.setSameAsBilling(false)"')->toHtml() ?></li>
43
+ <li class="fields">
44
+ <div class="fields">
45
+ <label for="shipping:company"><?php echo $this->__('Company') ?></label>
46
+ <div class="input-box">
47
+ <input type="text" id="shipping:company" name="shipping[company]" value="<?php echo $this->escapeHtml($this->getAddress()->getCompany()) ?>" title="<?php echo $this->__('Company') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('company') ?>" onchange="shipping.setSameAsBilling(false);" />
48
+ </div>
49
+ </div>
50
+ </li>
51
+ <?php $_streetValidationClass = $this->helper('customer/address')->getAttributeValidationClass('street'); ?>
52
+ <li class="wide">
53
+ <label for="shipping:street1" class="required"><em>*</em><?php echo $this->__('Address') ?></label>
54
+ <div class="input-box">
55
+ <input type="text" title="<?php echo $this->__('Street Address') ?>" name="shipping[street][]" id="shipping:street1" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet(1)) ?>" class="input-text <?php echo $_streetValidationClass ?>" onchange="shipping.setSameAsBilling(false);" />
56
+ </div>
57
+ </li>
58
+ <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
59
+ <?php for ($_i = 2, $_n = $this->helper('customer/address')->getStreetLines(); $_i <= $_n; $_i++): ?>
60
+ <li class="wide">
61
+ <label for="billing:street<?php echo $_i ?>"><?php echo $this->__('Address') ?> <?php echo $_i ?></label>
62
+ <div class="input-box">
63
+ <input type="text" title="<?php echo $this->__('Street Address %s', $_i) ?>" name="shipping[street][]" id="shipping:street<?php echo $_i ?>" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet($_i)) ?>" class="input-text <?php echo $_streetValidationClass ?>" onchange="shipping.setSameAsBilling(false);" />
64
+ </div>
65
+ </li>
66
+ <?php endfor; ?>
67
+ <li class="wide">
68
+ <label for="billing:house_name"><?php echo $this->__('House Name') ?></label>
69
+ <div class="input-box">
70
+ <input type="text" title="<?php echo $this->__('House Name') ?>" reqGroup="additional_address_fields" name="shipping[house_name]" id="shipping:house_name" value="<?php echo $this->escapeHtml($this->getAddress()->getHouseName()) ?>" class="input-text validate-one-required-by-reqGroup" />
71
+ </div>
72
+ </li>
73
+ <li class="wide">
74
+ <label for="billing:house_number"><?php echo $this->__('House Number') ?></label>
75
+ <div class="input-box">
76
+ <input type="text" title="<?php echo $this->__('House Number') ?>" reqGroup="additional_address_fields" name="shipping[house_number]" id="shipping:house_number" value="<?php echo $this->escapeHtml($this->getAddress()->getHouseNumber()) ?>" class="input-text validate-one-required-by-reqGroup" />
77
+ </div>
78
+ </li>
79
+ <li class="wide">
80
+ <label for="billing:flat_number"><?php echo $this->__('Flat Number') ?></label>
81
+ <div class="input-box">
82
+ <input type="text" title="<?php echo $this->__('Flat Number') ?>" reqGroup="additional_address_fields" name="shipping[flat_number]" id="shipping:flat_number" value="<?php echo $this->escapeHtml($this->getAddress()->getFlatNumber()) ?>" class="input-text validate-one-required-by-reqGroup" />
83
+ </div>
84
+ </li>
85
+
86
+ <?php if ($this->helper('customer/address')->isVatAttributeVisible()) : ?>
87
+ <li class="wide">
88
+ <label for="billing:vat_id"><?php echo $this->__('VAT Number'); ?></label>
89
+ <div class="input-box">
90
+ <input type="text" id="shipping:vat_id" name="shipping[vat_id]" value="<?php echo $this->escapeHtml($this->getAddress()->getVatId()); ?>" title="<?php echo $this->__('VAT Number'); ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('vat_id') ?>" />
91
+ </div>
92
+ </li>
93
+ <?php endif; ?>
94
+ <li class="fields">
95
+ <div class="field">
96
+ <label for="shipping:city" class="required"><em>*</em><?php echo $this->__('City') ?></label>
97
+ <div class="input-box">
98
+ <input type="text" title="<?php echo $this->__('City') ?>" name="shipping[city]" value="<?php echo $this->escapeHtml($this->getAddress()->getCity()) ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('city') ?>" id="shipping:city" onchange="shipping.setSameAsBilling(false);" />
99
+ </div>
100
+ </div>
101
+ <div class="field">
102
+ <label for="shipping:region" class="required"><em>*</em><?php echo $this->__('State/Province') ?></label>
103
+ <div class="input-box">
104
+ <select id="shipping:region_id" name="shipping[region_id]" title="<?php echo $this->__('State/Province') ?>" class="validate-select" style="display:none;">
105
+ <option value=""><?php echo $this->__('Please select region, state or province') ?></option>
106
+ </select>
107
+ <script type="text/javascript">
108
+ //<![CDATA[
109
+ $('shipping:region_id').setAttribute('defaultValue', "<?php echo $this->getAddress()->getRegionId() ?>");
110
+ //]]>
111
+ </script>
112
+ <input type="text" id="shipping:region" name="shipping[region]" value="<?php echo $this->escapeHtml($this->getAddress()->getRegion()) ?>" title="<?php echo $this->__('State/Province') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('region') ?>" style="display:none;" />
113
+ </div>
114
+ </div>
115
+ </li>
116
+ <li class="fields">
117
+ <div class="field">
118
+ <label for="shipping:postcode" class="required"><em>*</em><?php echo $this->__('Zip/Postal Code') ?></label>
119
+ <div class="input-box">
120
+ <input type="text" title="<?php echo $this->__('Zip/Postal Code') ?>" name="shipping[postcode]" id="shipping:postcode" value="<?php echo $this->escapeHtml($this->getAddress()->getPostcode()) ?>" class="input-text validate-zip-international <?php echo $this->helper('customer/address')->getAttributeValidationClass('postcode') ?>" onchange="shipping.setSameAsBilling(false);" />
121
+ </div>
122
+ </div>
123
+ <div class="field">
124
+ <label for="shipping:country_id" class="required"><em>*</em><?php echo $this->__('Country') ?></label>
125
+ <div class="input-box">
126
+ <?php echo $this->getCountryHtmlSelect('shipping') ?>
127
+ </div>
128
+ </div>
129
+ </li>
130
+ <li class="fields">
131
+ <div class="field">
132
+ <label for="shipping:telephone" class="required"><em>*</em><?php echo $this->__('Telephone') ?></label>
133
+ <div class="input-box">
134
+ <input type="tel" name="shipping[telephone]" value="<?php echo $this->escapeHtml($this->getAddress()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?>" id="shipping:telephone" onchange="shipping.setSameAsBilling(false);" />
135
+ </div>
136
+ </div>
137
+ <div class="field">
138
+ <label for="shipping:fax"><?php echo $this->__('Fax') ?></label>
139
+ <div class="input-box">
140
+ <input type="tel" name="shipping[fax]" value="<?php echo $this->escapeHtml($this->getAddress()->getFax()) ?>" title="<?php echo $this->__('Fax') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('fax') ?>" id="shipping:fax" onchange="shipping.setSameAsBilling(false);" />
141
+ </div>
142
+ </div>
143
+ </li>
144
+ <?php if ($this->isCustomerLoggedIn() && $this->customerHasAddresses()):?>
145
+ <li class="control">
146
+ <input type="checkbox" name="shipping[save_in_address_book]" value="1" title="<?php echo $this->__('Save in address book') ?>" id="shipping:save_in_address_book" onchange="shipping.setSameAsBilling(false);"<?php if ($this->getAddress()->getSaveInAddressBook()):?> checked="checked"<?php endif;?> class="checkbox" /><label for="shipping:save_in_address_book"><?php echo $this->__('Save in address book') ?></label></li>
147
+ <?php else:?>
148
+ <li class="no-display"><input type="hidden" name="shipping[save_in_address_book]" value="1" /></li>
149
+ <?php endif;?>
150
+ </ul>
151
+ </div>
152
+ </li>
153
+ <li class="control">
154
+ <input type="checkbox" name="shipping[same_as_billing]" id="shipping:same_as_billing" value="1"<?php if($this->getAddress()->getSameAsBilling()): ?> checked="checked"<?php endif; ?> title="<?php echo $this->__('Use Billing Address') ?>" onclick="shipping.setSameAsBilling(this.checked)" class="checkbox" /><label for="shipping:same_as_billing"><?php echo $this->__('Use Billing Address') ?></label>
155
+ </li>
156
+ </ul>
157
+ <div class="buttons-set" id="shipping-buttons-container">
158
+ <p class="back-link"><a href="#" onclick="checkout.back(); return false;"><small>&laquo; </small><?php echo $this->__('Back') ?></a></p>
159
+ <button type="button" class="button" title="<?php echo $this->__('Continue') ?>" onclick="shipping.save()"><span><span><?php echo $this->__('Continue') ?></span></span></button>
160
+ <span id="shipping-please-wait" class="please-wait" style="display:none;">
161
+ <img src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" alt="<?php echo $this->__('Loading next step...') ?>" title="<?php echo $this->__('Loading next step...') ?>" class="v-middle" /> <?php echo $this->__('Loading next step...') ?>
162
+ </span>
163
+ </div>
164
+ </form>
165
+ <script type="text/javascript">
166
+ //<![CDATA[
167
+ var shipping = new Shipping('co-shipping-form', '<?php echo $this->getUrl('checkout/onepage/getAddress') ?>address/', '<?php echo $this->getUrl('checkout/onepage/saveShipping') ?>',
168
+ '<?php echo $this->getUrl('checkout/onepage/shippingMethod') ?>');
169
+ var shippingForm = new VarienForm('co-shipping-form');
170
+ shippingForm.extraChildParams = ' onchange="shipping.setSameAsBilling(false);"';
171
+ //shippingForm.setElementsRelation('shipping:country_id', 'shipping:region', '<?php echo $this->getUrl('directory/json/childRegion') ?>', '<?php echo $this->__('Select State/Province...') ?>');
172
+ $('shipping-address-select') && shipping.newAddress(!$('shipping-address-select').value);
173
+
174
+ var shippingRegionUpdater = new RegionUpdater('shipping:country_id', 'shipping:region', 'shipping:region_id', <?php echo $this->helper('directory')->getRegionJson() ?>, undefined, 'shipping:postcode');
175
+ //]]>
176
+ </script>
app/design/frontend/base/default/template/paybyfinance/selector.phtml CHANGED
@@ -29,16 +29,16 @@ $_secure = $this->getRequest()->isSecure();
29
 
30
  <h3>Would you like to pay by Finance?</h3>
31
  <?php if (!$_product): ?>
32
- <input id="paybyfinance-no" type="radio" name="pbf-checkbox" value="" onclick="$('paybyfinance-container').hide(); $('pbf-cart-btn').show(); pbf_redraw();" checked>
33
  <label for="paybyfinance-no">No</label><br>
34
- <input id="paybyfinance-yes" type="radio" name="pbf-checkbox" value="paybyfinance" onclick="$('paybyfinance-container').show(); $('pbf-cart-btn').show(); pbf_redraw();">
35
  <label for="paybyfinance-yes">Yes</label><br>
36
  <?php endif; ?>
37
  <div id="paybyfinance-container" <?php if (!$_product) echo 'style="display: none;"'; ?>>
38
  <p>Finance Calculation for your <span class="calculated" id="pbf-ordervalue">-</span> order</p>
39
  <p>I would like to pay a deposit of <span class="calculated" id="pbf-deposit">-</span></p>
40
 
41
- <input id="pbf-input-deposit" name="pbf-input-deposit" class="pbf-input-hidden" type="range" min="0" max="6" value ="1"/>
42
 
43
  <?php if (!$this->getIsFixedDepositOnly()): ?>
44
  <div id="pbf-deposit-slider" class="healthy-slider clearfix"> <div class="slider-marker"></div> <div class="slider-pointer"></div> </div>
@@ -79,7 +79,7 @@ $_secure = $this->getRequest()->isSecure();
79
  <?php echo $_service->getName(); ?> (<?php echo $_service->getApr() ?>% APR Representative for <strong><?php echo $_service->getTerm(); ?> months</strong>)
80
  </td>
81
  <td>
82
- <input type="radio" name="service" onclick="javascript:pbf_selector_recalculate();" value="<?php echo $_service->getId(); ?>" <?php echo $checked?'':'checked'; ?> />
83
  </td>
84
  </tr>
85
  <?php $checked = true; ?>
@@ -135,9 +135,9 @@ $_secure = $this->getRequest()->isSecure();
135
  <div class="pbf-footnote">
136
  <p>Total Amount Payable Includes Deposit Amount.</p>
137
  <p>The figures shown are an illustration based on the cost of goods. Final details including shipping and discounts where applicable will be displayed on the checkout page.</p>
138
- <p>Credit is provided by Hitachi Capital Consumer Finance, a division of Hitachi Capital (UK) PLC authorised and regulated by the Financial Conduct Authority.</p>
139
  <p><?php echo $this->getRetailerName(); ?> <?php echo $this->getTradingName(); ?> acts as a credit broker and is authorised and regulated by the Financial Conduct Authority.</p>
140
- <p><strong>IMPORTANT:</strong> Hitachi Capital rounds down the monthly payments, which may result in your total amount payable being less than the total cash price.</p>
141
  </div>
142
  </div>
143
  <?php if ($_product): ?>
@@ -181,8 +181,8 @@ $_secure = $this->getRequest()->isSecure();
181
  var service = pbf_selector_data.services[service_id];
182
  var deposit = Math.round(((value / 100) * pbf_selector_data.amount) * 100) / 100;
183
  var credit = (pbf_selector_data.amount - deposit);
184
- var monthly = Math.floor((credit * service.multiplier) * 100) / 100; // No rounding issues, rounding always down
185
- if (service.type == '32') {
186
  monthly = Math.floor((credit / service.term) * 100) / 100;
187
  }
188
  var payable = (monthly * service.term + deposit);
@@ -273,6 +273,24 @@ $_secure = $this->getRequest()->isSecure();
273
  pbf_selector_recalculate();
274
  }
275
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
276
  function pbf_type_recalculate() {
277
  var typewid = $("pbf-input-type");
278
  var value = 0;
@@ -288,6 +306,7 @@ $_secure = $this->getRequest()->isSecure();
288
  }
289
  window["termSlider"+value].change();
290
  pbf_term_recalculate();
 
291
  }
292
 
293
  function pbf_deposit(val) {
@@ -456,7 +475,7 @@ $_secure = $this->getRequest()->isSecure();
456
 
457
  if (pbf_selector_data.types.length >= 3) {
458
  inputType += '<div class="healthy-slider-shorty clearfix">' +
459
- '<input id="pbf-input-type" name="pbf-input-type" class="pbf-input-hidden" type="range" min="0" max="'+(pbf_selector_data.types.length-1)+'" value ="0"/>' +
460
  '<div id="pbf-types-slider" class="healthy-slider"> <div class="slider-marker"></div> <div class="slider-pointer"></div> </div>' +
461
  '<ul id="pbf-types-ruler" class="healthy-ruler">';
462
  for (index = 0; index < pbf_selector_data.types.length; ++index) {
@@ -466,7 +485,7 @@ $_secure = $this->getRequest()->isSecure();
466
  } else if (pbf_selector_data.types.length == 2) {
467
  inputType += '<div class="healthy-slider-toggle-wrapper">';
468
  inputType += '<div class="healthy-slider-toggle clearfix">' +
469
- '<input id="pbf-input-type" name="pbf-input-type" class="pbf-input-hidden" type="range" min="0" max="'+(pbf_selector_data.types.length-1)+'" value ="0"/>' +
470
  '<div id="pbf-types-slider" class="healthy-slider"> <div class="slider-marker"></div> <div class="slider-pointer"></div> </div>' +
471
  '<ul id="pbf-types-ruler" class="healthy-ruler ruler-toggle">';
472
  for (index = 0; index < pbf_selector_data.types.length; ++index) {
@@ -480,9 +499,9 @@ $_secure = $this->getRequest()->isSecure();
480
 
481
  inputTerm = '<div id="pbf-input-term-wrapper">';
482
  if (pbf_selector_data.terms.length > 1) {
483
- inputTerm += '<input id="pbf-input-term" name="pbf-input-term" class="pbf-input-hidden" type="range" min="0" max="'+(pbf_selector_data.terms.length - 1)+'" value ="0"/>';
484
  pbf_selector_data.types.each(function(type, key){
485
- inputTerm += '<input id="pbf-input-term-'+key+'" name="pbf-input-term-'+key+'" class="pbf-input-hidden" type="range" min="0" max="'+(pbf_selector_data.subterms[key].length-1)+'" value ="0"/>';
486
  inputTerm += '<div id="pbf-term-slider-'+key+'" class="healthy-slider pbf-term-hide"> <div class="slider-marker"></div> <div class="slider-pointer"></div> </div>';
487
  inputTerm += '<ul id="pbf-term-ruler-'+key+'" class="healthy-ruler pbf-term-hide">';
488
  pbf_selector_data.subterms[key].each(function(term, tkey){
29
 
30
  <h3>Would you like to pay by Finance?</h3>
31
  <?php if (!$_product): ?>
32
+ <input id="paybyfinance-no" type="radio" name="pbf-checkbox" autocomplete="off" value="" onclick="$('paybyfinance-container').hide(); $('pbf-cart-btn').show(); pbf_redraw();" checked>
33
  <label for="paybyfinance-no">No</label><br>
34
+ <input id="paybyfinance-yes" type="radio" name="pbf-checkbox" autocomplete="off" value="paybyfinance" onclick="$('paybyfinance-container').show(); $('pbf-cart-btn').show(); pbf_redraw();">
35
  <label for="paybyfinance-yes">Yes</label><br>
36
  <?php endif; ?>
37
  <div id="paybyfinance-container" <?php if (!$_product) echo 'style="display: none;"'; ?>>
38
  <p>Finance Calculation for your <span class="calculated" id="pbf-ordervalue">-</span> order</p>
39
  <p>I would like to pay a deposit of <span class="calculated" id="pbf-deposit">-</span></p>
40
 
41
+ <input id="pbf-input-deposit" name="pbf-input-deposit" class="pbf-input-hidden" type="range" min="0" max="6" autocomplete="off" value ="1"/>
42
 
43
  <?php if (!$this->getIsFixedDepositOnly()): ?>
44
  <div id="pbf-deposit-slider" class="healthy-slider clearfix"> <div class="slider-marker"></div> <div class="slider-pointer"></div> </div>
79
  <?php echo $_service->getName(); ?> (<?php echo $_service->getApr() ?>% APR Representative for <strong><?php echo $_service->getTerm(); ?> months</strong>)
80
  </td>
81
  <td>
82
+ <input type="radio" name="service" onclick="javascript:pbf_selector_recalculate();" autocomplete="off" value="<?php echo $_service->getId(); ?>" <?php echo $checked?'':'checked'; ?> />
83
  </td>
84
  </tr>
85
  <?php $checked = true; ?>
135
  <div class="pbf-footnote">
136
  <p>Total Amount Payable Includes Deposit Amount.</p>
137
  <p>The figures shown are an illustration based on the cost of goods. Final details including shipping and discounts where applicable will be displayed on the checkout page.</p>
138
+ <p>Credit is provided by Hitachi Personal Finance, a division of Hitachi Capital (UK) PLC authorised and regulated by the Financial Conduct Authority.</p>
139
  <p><?php echo $this->getRetailerName(); ?> <?php echo $this->getTradingName(); ?> acts as a credit broker and is authorised and regulated by the Financial Conduct Authority.</p>
140
+ <div id="pbf-footnote-important"><p><strong>IMPORTANT:</strong> Hitachi Personal Finance rounds down the monthly payments, which may result in your total amount payable being less than the total cash price.</p></div>
141
  </div>
142
  </div>
143
  <?php if ($_product): ?>
181
  var service = pbf_selector_data.services[service_id];
182
  var deposit = Math.round(((value / 100) * pbf_selector_data.amount) * 100) / 100;
183
  var credit = (pbf_selector_data.amount - deposit);
184
+ var monthly = Math.ceil((credit * service.multiplier) * 100) / 100; // rounding always up for interest bearing services. Same as \HC_PayByFinance_Model_Calculator::calcMonthlyPayment
185
+ if (service.type == '32' || service.type == '34') {
186
  monthly = Math.floor((credit / service.term) * 100) / 100;
187
  }
188
  var payable = (monthly * service.term + deposit);
273
  pbf_selector_recalculate();
274
  }
275
 
276
+ function pbf_check_hide_note(value) {
277
+ if (typeof(pbf_selector_user) == "undefined") {
278
+ return;
279
+ }
280
+
281
+ if (pbf_selector_data.services.length == 0) {
282
+ return;
283
+ }
284
+
285
+ var serviceId = pbf_selector_user.service;
286
+ var service = pbf_selector_data.services[serviceId];
287
+
288
+ if (service.type == 32) {
289
+ $('pbf-footnote-important').show();
290
+ return;
291
+ }
292
+ $('pbf-footnote-important').hide();
293
+ }
294
  function pbf_type_recalculate() {
295
  var typewid = $("pbf-input-type");
296
  var value = 0;
306
  }
307
  window["termSlider"+value].change();
308
  pbf_term_recalculate();
309
+ pbf_check_hide_note(value);
310
  }
311
 
312
  function pbf_deposit(val) {
475
 
476
  if (pbf_selector_data.types.length >= 3) {
477
  inputType += '<div class="healthy-slider-shorty clearfix">' +
478
+ '<input id="pbf-input-type" name="pbf-input-type" class="pbf-input-hidden" type="range" min="0" max="'+(pbf_selector_data.types.length-1)+'" autocomplete="off" value ="0"/>' +
479
  '<div id="pbf-types-slider" class="healthy-slider"> <div class="slider-marker"></div> <div class="slider-pointer"></div> </div>' +
480
  '<ul id="pbf-types-ruler" class="healthy-ruler">';
481
  for (index = 0; index < pbf_selector_data.types.length; ++index) {
485
  } else if (pbf_selector_data.types.length == 2) {
486
  inputType += '<div class="healthy-slider-toggle-wrapper">';
487
  inputType += '<div class="healthy-slider-toggle clearfix">' +
488
+ '<input id="pbf-input-type" name="pbf-input-type" class="pbf-input-hidden" type="range" min="0" max="'+(pbf_selector_data.types.length-1)+'" autocomplete="off" value ="0"/>' +
489
  '<div id="pbf-types-slider" class="healthy-slider"> <div class="slider-marker"></div> <div class="slider-pointer"></div> </div>' +
490
  '<ul id="pbf-types-ruler" class="healthy-ruler ruler-toggle">';
491
  for (index = 0; index < pbf_selector_data.types.length; ++index) {
499
 
500
  inputTerm = '<div id="pbf-input-term-wrapper">';
501
  if (pbf_selector_data.terms.length > 1) {
502
+ inputTerm += '<input id="pbf-input-term" name="pbf-input-term" class="pbf-input-hidden" type="range" min="0" max="'+(pbf_selector_data.terms.length - 1)+'" autocomplete="off" value ="0"/>';
503
  pbf_selector_data.types.each(function(type, key){
504
+ inputTerm += '<input id="pbf-input-term-'+key+'" name="pbf-input-term-'+key+'" class="pbf-input-hidden" type="range" min="0" max="'+(pbf_selector_data.subterms[key].length-1)+'" autocomplete="off" value ="0"/>';
505
  inputTerm += '<div id="pbf-term-slider-'+key+'" class="healthy-slider pbf-term-hide"> <div class="slider-marker"></div> <div class="slider-pointer"></div> </div>';
506
  inputTerm += '<ul id="pbf-term-ruler-'+key+'" class="healthy-ruler pbf-term-hide">';
507
  pbf_selector_data.subterms[key].each(function(term, tkey){
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>HC_PayByFinance</name>
4
- <version>2.0.3.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.cohesiondigital.co.uk/license.html">Cohesion Digital</license>
7
  <channel>community</channel>
@@ -9,16 +9,18 @@
9
  <summary>Hitachi Capital PaybyFinance</summary>
10
  <description>Hitachi Capital PaybyFinance</description>
11
  <notes>Change Log:&#xD;
12
- * HC-316 PBF Widget Displays For Non-Eligible Products&#xD;
13
- * HC-345 - Adding Google analytics override - sending grand total + financed amount to GA&#xD;
14
- * HC-349 SagePay status initiator&#xD;
15
- * HC-444 Financed amount added to invoice PDF&#xD;
16
- * HC-443 Adding new service types 25, 36 refactored&#xD;
17
- * HC-448 rounding issues fixed</notes>
 
 
18
  <authors><author><name>Sandor Czettner</name><user>MAG000003395</user><email>support@cohesiondigital.co.uk</email></author><author><name>Alistair Macneil</name><user>MAG000006529</user><email>support@cohesiondigital.co.uk</email></author></authors>
19
- <date>2016-08-24</date>
20
- <time>13:26:47</time>
21
- <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="b1a5a3282c17ff6b693346fffc42afbb"/><dir name="Service"><dir name="Edit"><file name="Form.php" hash="9c217d9723cccb39fa599424027d40f0"/><dir name="Tab"><file name="Form.php" hash="2b6a9e88fef570d5316adb3d92bff462"/></dir><file name="Tabs.php" hash="8d1c62bfa212b4d1670599e25449b112"/></dir><file name="Edit.php" hash="7c2216bd809b703b2823f0b38949e4d0"/><file name="Grid.php" hash="1c88aefe5409ec49c8a9a1229ff3e5f6"/></dir><file name="Service.php" hash="13fc20c6ca7d4e2f136086700f6bca85"/></dir><file name="Version.php" hash="1e7c02fd2eb594a731ede278abfcbdbe"/></dir><dir name="Checkout"><file name="Redirect.php" hash="a1e7a9fff08b4843a95c7cd3811746ec"/></dir><dir name="GoogleAnalytics"><file name="Ga.php" hash="4ec9f0261559c47972b3a1b07db301af"/></dir><dir name="Product"><dir name="List"><file name="Finance.php" hash="7bf4a6a47e278f1ea0bd0d148e52040a"/></dir></dir><dir name="Sales"><dir name="Order"><file name="Totals.php" hash="846e2cbee5f5c2106fa635bc3af5151a"/></dir></dir><file name="Selector.php" hash="670c5b4dba5f4a7d4e55fca9d7be55bb"/><file name="Status.php" hash="9a6b5acb2773cf9eefe01eff2cc65b08"/></dir><dir name="Helper"><file name="Cart.php" hash="ab80a789969c53421442e3104c9ced3a"/><file name="Checkout.php" hash="d7e514d70e300738cae7f54ee6ca5da6"/><file name="Data.php" hash="6f018fc2f3bafa7bb99d963129327c83"/><file name="Notification.php" hash="286fcaa4a79f53acbb0f78589f95ea72"/><file name="Order.php" hash="4b294819840ab1bbef3f5469b8deac55"/></dir><dir name="Model"><file name="Calculator.php" hash="d5745f6ca22367bb9cb59bfd74c9e340"/><dir name="Config"><dir name="Source"><dir name="Catalog"><dir name="Product"><file name="Finance.php" hash="a2e1bfb4bacc16a2d1813cdaf67118ca"/><file name="Type.php" hash="95ebea7de54ef5caf05bc8f8535a86c4"/></dir></dir><dir name="Cms"><file name="Block.php" hash="2276b4b94773469b57c42fd355772666"/></dir><file name="Connectionmode.php" hash="a02a3f398069cf0227a4bf90c8aa6a1b"/><dir name="Notification"><file name="Status.php" hash="6a2033c6223f3e4b544646e92d3f7f21"/></dir><file name="Type.php" hash="aa6535b3c8a3fbd7af9e2d0191cf591c"/></dir></dir><file name="Log.php" hash="3f0a884ccb9b13b82d83690edfe4daa3"/><dir name="Mysql4"><dir name="Log"><file name="Collection.php" hash="28946dde732dabe2c8cffe9ba948a79b"/></dir><file name="Log.php" hash="d05d1d95c0d8e2dad48ef0234d877844"/><dir name="Service"><file name="Collection.php" hash="95bc7c6832c807f45a3ad49c891dd61a"/></dir><file name="Service.php" hash="2f66d8f5bbc15065df0e5fe7760e2175"/></dir><file name="Observer.php" hash="2f3e3ffb8a8ffaeafcbff7d0baeefbcb"/><dir name="Paypal"><dir name="Api"><file name="Nvp.php" hash="e307da78b7755ee2b71ef89649f40ae0"/></dir><dir name="Hostedpro"><file name="Request.php" hash="356e602372e486f330364bd3aa102746"/></dir></dir><dir name="PaypalUk"><dir name="Api"><file name="Nvp.php" hash="b63aaa54fbd3ecf7a30b3db81d41ee53"/></dir></dir><dir name="Post"><file name="Abstract.php" hash="0a123f79e8d1c1f27790d409d8b6682e"/><file name="Custom.php" hash="a2b21633bd01d33d9e9616fc6bc2d223"/><file name="Live.php" hash="7ed8e80ca96e53659458adb00938e46c"/><file name="Simulation.php" hash="eae556a5a59d74e0368a05768ccb944d"/><file name="Test.php" hash="0db4044ae854f523a5c4f1202ed6f165"/><file name="Unittest.php" hash="772145018592848e056a555fdeeacdae"/></dir><file name="Post.php" hash="2f481a71a8e4cbb9aa5d73cdd513ec4c"/><dir name="Resource"><file name="Setup.php" hash="4dbb9a07366ad69523865f51956efcb6"/></dir><file name="Sagepayorderstatusobserver.php" hash="a9d54ecbeb5ef71c0bb918c8fdb35f17"/><file name="Sagepaypreauthobserver.php" hash="eaa3b9c77f3821ac1c90787f927f5e25"/><dir name="Sales"><dir name="Order"><dir name="Creditmemo"><file name="Financeamount.php" hash="c49db1b930b78fa3928b2e7a70d1b355"/></dir><dir name="Invoice"><file name="Financeamount.php" hash="9a56f44465d76558fc729bdad8b97d3d"/></dir></dir><dir name="Pdf"><file name="Financeamount.php" hash="f74ff339b26d935340f3db88e41b230c"/></dir><dir name="Quote"><file name="Financeamount.php" hash="5164b3b7b63bc0f827bccacbc5b8dbfc"/><file name="Totalcost.php" hash="ef8e0846f5ec1074db593b84e8f2d113"/></dir></dir><file name="Service.php" hash="4da5316f9e4c61d6e9355d9c75ce852f"/><file name="Session.php" hash="7777988357a7bef6740d3dfd54d24b7d"/><file name="Sessionobserver.php" hash="09b8393d916ab0fb9f9729d2b8cb0d14"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Paybyfinance"><file name="RedirectController.php" hash="311b1e97e6d9ee0c163748d577c3ca0f"/><file name="ServiceController.php" hash="51114686983b9354b5f6dde2f08d7242"/></dir></dir><file name="CheckoutController.php" hash="e91a9189e4f2e5aeb049d030f67fff7f"/><file name="NotificationController.php" hash="5a55000d2b3907938cd2e5a5a09139bf"/><file name="SelectorController.php" hash="60ac94f197c3d371821bf26faa01665b"/><file name="SessionController.php" hash="9e10f8ccfe4a44c7df656dd3be0a7905"/><file name="StatusController.php" hash="a67d6acd7ef820aff069417deabe2779"/></dir><dir name="etc"><file name="adminhtml.xml" hash="216df222a5f5d9fdcf29c238cfd78bd5"/><file name="config.xml" hash="4c468f64fab27c49742e3304d5103884"/><file name="system.xml" hash="1c1c4b6c3e47544b95c34529065eb16d"/></dir><dir name="sql"><dir name="paybyfinance_setup"><dir name="html"><file name="abandoned.html" hash="424f900dbddc267f7dac72e67752df25"/><file name="accepted.html" hash="3cd819649eeb88b108cfbd87d6bb5048"/><file name="declined.html" hash="ca4beeaacc626209d9884a2ed8adb6d0"/><file name="error.html" hash="4a448b052f101b2648dfe84423ad1313"/><file name="page-finance-options.html" hash="d9f090c84559caf2311cabced715b668"/><file name="referred.html" hash="1c143c51776357bcad9e27aff6e6b9b8"/></dir><file name="mysql4-install-2.0.3.php" hash="b01b14d96ed60b0bb02e90878d413a18"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="abc677821714cfc594756f28c923024c"/><file name="mysql4-upgrade-1.0.1-1.0.2.php" hash="7dce9b7e8f4546e7ae648db0dd839076"/><file name="mysql4-upgrade-1.0.3-1.0.4.php" hash="dedd19c542e499d41cbd396e932ced4d"/><file name="mysql4-upgrade-1.0.4-1.0.5.php" hash="48f066bd17de65403b3d2c84123abe67"/><file name="mysql4-upgrade-1.0.5-1.0.6.php" hash="6e50fbb54fc11db7a2daf6162ce25117"/><file name="mysql4-upgrade-1.0.6-1.0.7.php" hash="fd6af4ef0e098c51f617ac0ca085c738"/><file name="mysql4-upgrade-1.0.7-2.0.0.php" hash="9a89d49d50768f895d782cc4c815b5c9"/><file name="mysql4-upgrade-2.0.0-2.0.1.php" hash="6396a705f6bc25a6c2c2637eb7fee1c1"/><file name="mysql4-upgrade-2.0.1-2.0.2.php" hash="4c0ba4904b9ff656f31466fcbdd7f186"/><file name="mysql4-upgrade-2.0.2-2.0.3.php" hash="5876324f8e06f4b458ac0256bc94d8c5"/></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="fc9c4b43b09338aa33ba034b31508869"/></dir></dir></dir><dir name="sales"><dir name="order"><file name="totals.phtml" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir></dir><file name="form.phtml" hash="6f078931f66302a6a0a566c7a4055c05"/><file name="selector-no.phtml" hash="b54c570f68254a2e879464a0b761c7db"/><file name="selector.phtml" hash="5d61200bd80ffc1b1cd8f1195717bb11"/><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="f541883d7e115794fcde3b0a4ac1bb3d"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="paybyfinance.xml" hash="21e409f98bd00b6de93a09610dabdbdd"/></dir><dir name="template"><dir name="paybyfinance"><file name="history.phtml" hash="31fbbbb8477717175da3de1e9fe98f54"/><file name="redirect.phtml" hash="90e7aa306768f5aac337300848c04e6a"/><file name="version.phtml" hash="09a8f416156d853ecc47b24a15744563"/></dir></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="6930043a719765833f6d64de1216b7ad"/><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="58a12daf6bb6aeb8b94471bf605514e5"/></dir></dir></target><target name="mageweb"><dir><dir name="js"><dir name="paybyfinance"><file name="config-edit.js" hash="81817d23afdf99d10b01072d2471ff65"/><file name="service.js" hash="7e1fe3ffe2d4b95eeb5b27c8d07b23f1"/></dir></dir></dir></target><target name="magelocale"><dir><dir name="en_US"><dir name="template"><dir name="email"><dir name="paybyfinance"><file name="order_declined.html" hash="9172511234c33a8e4e78b581064ed1b3"/><file name="order_declined_guest.html" hash="081da356703cf09ce13a86dfce1ab00b"/><file name="order_referred.html" hash="91468313c16e7d8b821d90a954ecaedb"/><file name="order_referred_guest.html" hash="b0c08ecba679a99ad23064649fb6e48d"/></dir></dir></dir></dir></dir></target></contents>
22
  <compatible/>
23
- <dependencies><required><php><min>5.6.24</min><max>7.0.9</max></php></required></dependencies>
24
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>HC_PayByFinance</name>
4
+ <version>2.0.5.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.cohesiondigital.co.uk/license.html">Cohesion Digital</license>
7
  <channel>community</channel>
9
  <summary>Hitachi Capital PaybyFinance</summary>
10
  <description>Hitachi Capital PaybyFinance</description>
11
  <notes>Change Log:&#xD;
12
+ * HC-200 Additional support for Address Checking&#xD;
13
+ * HC-448 Rounding rules for IFC and IBC&#xD;
14
+ * HC-454 Use the same Shipping/Billing address for finance&#xD;
15
+ * HC-458 Resolve on save issue for certain services&#xD;
16
+ * HC-460 Change text on finance sliders&#xD;
17
+ * HC-497 Update Magento Finance Options text&#xD;
18
+ * HC-500 Additional support for Configurable products&#xD;
19
+ * HC-503 Always display *Grand Total wording when order is financed</notes>
20
  <authors><author><name>Sandor Czettner</name><user>MAG000003395</user><email>support@cohesiondigital.co.uk</email></author><author><name>Alistair Macneil</name><user>MAG000006529</user><email>support@cohesiondigital.co.uk</email></author></authors>
21
+ <date>2017-06-13</date>
22
+ <time>16:08:56</time>
23
+ <contents><target name="magelocal"><dir name="HC"><dir name="PayByFinance"><dir name="Block"><dir name="Adminhtml"><dir name="Paybyfinance"><file name="Redirect.php" hash="b1a5a3282c17ff6b693346fffc42afbb"/><dir name="Service"><dir name="Edit"><file name="Form.php" hash="9c217d9723cccb39fa599424027d40f0"/><dir name="Tab"><file name="Form.php" hash="13467d8359f9a9393f0bf95644469ac5"/></dir><file name="Tabs.php" hash="8d1c62bfa212b4d1670599e25449b112"/></dir><file name="Edit.php" hash="7c2216bd809b703b2823f0b38949e4d0"/><file name="Grid.php" hash="1c88aefe5409ec49c8a9a1229ff3e5f6"/></dir><file name="Service.php" hash="13fc20c6ca7d4e2f136086700f6bca85"/></dir><file name="Version.php" hash="f2e3f610be92db448f1676bb8274886f"/></dir><dir name="Checkout"><file name="Redirect.php" hash="a1e7a9fff08b4843a95c7cd3811746ec"/></dir><dir name="GoogleAnalytics"><file name="Ga.php" hash="4ec9f0261559c47972b3a1b07db301af"/></dir><dir name="Product"><dir name="List"><file name="Finance.php" hash="7bf4a6a47e278f1ea0bd0d148e52040a"/></dir></dir><dir name="Sales"><dir name="Order"><file name="Totals.php" hash="846e2cbee5f5c2106fa635bc3af5151a"/></dir></dir><file name="Selector.php" hash="670c5b4dba5f4a7d4e55fca9d7be55bb"/><file name="Status.php" hash="9a6b5acb2773cf9eefe01eff2cc65b08"/></dir><dir name="Helper"><file name="Cart.php" hash="7eb70f88cf17e265705f2bb1c641258b"/><file name="Checkout.php" hash="7e03a51ac7c7cff6dbe6791184dbe26f"/><file name="Data.php" hash="95d9138e718d15b6da375950d7b0315e"/><file name="Notification.php" hash="eca3d190018126061aff78656aeac4ee"/><file name="Order.php" hash="4b294819840ab1bbef3f5469b8deac55"/></dir><dir name="Model"><file name="Calculator.php" hash="54e776056d8b9bd3c1b0687e89d48472"/><dir name="Config"><dir name="Source"><dir name="Catalog"><dir name="Product"><file name="Finance.php" hash="a2e1bfb4bacc16a2d1813cdaf67118ca"/><file name="Type.php" hash="95ebea7de54ef5caf05bc8f8535a86c4"/></dir></dir><dir name="Cms"><file name="Block.php" hash="2276b4b94773469b57c42fd355772666"/></dir><file name="Connectionmode.php" hash="a02a3f398069cf0227a4bf90c8aa6a1b"/><dir name="Notification"><file name="Status.php" hash="6a2033c6223f3e4b544646e92d3f7f21"/></dir><file name="Type.php" hash="6fafcca8b9ed9fa4830ddeedc207935c"/></dir></dir><file name="Log.php" hash="3f0a884ccb9b13b82d83690edfe4daa3"/><dir name="Mysql4"><dir name="Log"><file name="Collection.php" hash="28946dde732dabe2c8cffe9ba948a79b"/></dir><file name="Log.php" hash="d05d1d95c0d8e2dad48ef0234d877844"/><dir name="Service"><file name="Collection.php" hash="95bc7c6832c807f45a3ad49c891dd61a"/></dir><file name="Service.php" hash="2f66d8f5bbc15065df0e5fe7760e2175"/></dir><file name="Observer.php" hash="d1bd3ee46e3d2ee25dd7486398c1191e"/><dir name="Paypal"><dir name="Api"><file name="Nvp.php" hash="e307da78b7755ee2b71ef89649f40ae0"/></dir><dir name="Hostedpro"><file name="Request.php" hash="356e602372e486f330364bd3aa102746"/></dir></dir><dir name="PaypalUk"><dir name="Api"><file name="Nvp.php" hash="b63aaa54fbd3ecf7a30b3db81d41ee53"/></dir></dir><dir name="Post"><file name="Abstract.php" hash="3ebc79b2803b075c00c2a3b86a07c0fd"/><file name="Custom.php" hash="a2b21633bd01d33d9e9616fc6bc2d223"/><file name="Live.php" hash="7ed8e80ca96e53659458adb00938e46c"/><file name="Simulation.php" hash="eae556a5a59d74e0368a05768ccb944d"/><file name="Test.php" hash="0db4044ae854f523a5c4f1202ed6f165"/><file name="Unittest.php" hash="772145018592848e056a555fdeeacdae"/></dir><file name="Post.php" hash="a009a29c906a543803fb3ab9ee1faa01"/><dir name="Resource"><file name="Setup.php" hash="4dbb9a07366ad69523865f51956efcb6"/></dir><file name="Sagepayorderstatusobserver.php" hash="a9d54ecbeb5ef71c0bb918c8fdb35f17"/><file name="Sagepaypreauthobserver.php" hash="eaa3b9c77f3821ac1c90787f927f5e25"/><dir name="Sales"><dir name="Order"><dir name="Creditmemo"><file name="Financeamount.php" hash="c49db1b930b78fa3928b2e7a70d1b355"/></dir><dir name="Invoice"><file name="Financeamount.php" hash="9a56f44465d76558fc729bdad8b97d3d"/></dir></dir><dir name="Pdf"><file name="Financeamount.php" hash="f74ff339b26d935340f3db88e41b230c"/></dir><dir name="Quote"><file name="Financeamount.php" hash="5164b3b7b63bc0f827bccacbc5b8dbfc"/><file name="Totalcost.php" hash="ef8e0846f5ec1074db593b84e8f2d113"/></dir></dir><file name="Service.php" hash="4da5316f9e4c61d6e9355d9c75ce852f"/><file name="Session.php" hash="7777988357a7bef6740d3dfd54d24b7d"/><file name="Sessionobserver.php" hash="09b8393d916ab0fb9f9729d2b8cb0d14"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Paybyfinance"><file name="RedirectController.php" hash="311b1e97e6d9ee0c163748d577c3ca0f"/><file name="ServiceController.php" hash="73c5c2f5c4be326163f2be62ea0a8077"/></dir></dir><file name="CheckoutController.php" hash="af078133a1a9ea31e8dffdaeff295aa2"/><file name="NotificationController.php" hash="cd01fbbd86c8ad191b0df1b36fb42d2f"/><file name="SelectorController.php" hash="60ac94f197c3d371821bf26faa01665b"/><file name="SessionController.php" hash="9e10f8ccfe4a44c7df656dd3be0a7905"/><file name="StatusController.php" hash="a67d6acd7ef820aff069417deabe2779"/></dir><dir name="etc"><file name="adminhtml.xml" hash="216df222a5f5d9fdcf29c238cfd78bd5"/><file name="config.xml" hash="05da5b9406ec2651a229737abf751298"/><file name="system.xml" hash="49c83a3abd180eb95975a1c837ee9dfc"/></dir><dir name="sql"><dir name="paybyfinance_setup"><dir name="html"><file name="abandoned.html" hash="424f900dbddc267f7dac72e67752df25"/><file name="accepted.html" hash="7d6ef0e3b1e980d6091ed25d08ce6d54"/><file name="declined.html" hash="ca4beeaacc626209d9884a2ed8adb6d0"/><file name="error.html" hash="4a448b052f101b2648dfe84423ad1313"/><file name="page-finance-options.html" hash="8b9a15fa22af7062d7705818a2116191"/><file name="referred.html" hash="1c143c51776357bcad9e27aff6e6b9b8"/></dir><file name="mysql4-install-2.0.3.php" hash="b01b14d96ed60b0bb02e90878d413a18"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="abc677821714cfc594756f28c923024c"/><file name="mysql4-upgrade-1.0.1-1.0.2.php" hash="7dce9b7e8f4546e7ae648db0dd839076"/><file name="mysql4-upgrade-1.0.3-1.0.4.php" hash="dedd19c542e499d41cbd396e932ced4d"/><file name="mysql4-upgrade-1.0.4-1.0.5.php" hash="48f066bd17de65403b3d2c84123abe67"/><file name="mysql4-upgrade-1.0.5-1.0.6.php" hash="6e50fbb54fc11db7a2daf6162ce25117"/><file name="mysql4-upgrade-1.0.6-1.0.7.php" hash="fd6af4ef0e098c51f617ac0ca085c738"/><file name="mysql4-upgrade-1.0.7-2.0.0.php" hash="9a89d49d50768f895d782cc4c815b5c9"/><file name="mysql4-upgrade-2.0.0-2.0.1.php" hash="6396a705f6bc25a6c2c2637eb7fee1c1"/><file name="mysql4-upgrade-2.0.1-2.0.2.php" hash="4c0ba4904b9ff656f31466fcbdd7f186"/><file name="mysql4-upgrade-2.0.2-2.0.3.php" hash="5876324f8e06f4b458ac0256bc94d8c5"/><file name="mysql4-upgrade-2.0.3-2.0.4.php" hash="1e19627937b32560196f9ba7d5ce800d"/><file name="mysql4-upgrade-2.0.4-2.0.5.php" hash="182ea2b510a7b0881cdc7e6b75c8f843"/></dir></dir></dir></dir></target><target name="magedesign"><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="fc9c4b43b09338aa33ba034b31508869"/></dir></dir></dir><dir name="enhaceaddress"><dir name="customer"><dir name="address"><file name="edit.phtml" hash="9a643618ae2de57fbddd894680da3a78"/><dir name="onepage"><file name="billing.phtml" hash="724241efcf806b2c9b4208868af68e6d"/><file name="shipping.phtml" hash="962254327f35720203ab9a4d9cca6301"/></dir></dir></dir></dir><dir name="sales"><dir name="order"><file name="totals.phtml" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir></dir><file name="form.phtml" hash="6f078931f66302a6a0a566c7a4055c05"/><file name="selector-no.phtml" hash="b54c570f68254a2e879464a0b761c7db"/><file name="selector.phtml" hash="61c797a47ef9d36b66a28ee1d9ab0d7e"/><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="totals-pbf.phtml" hash="f26e488359433c3814a1cd416006869a"/></dir></dir><file name="cart-pbf.phtml" hash="9f6b1873ed02e5e2ae1966e3e5a1910d"/></dir></dir><dir name="layout"><file name="paybyfinance.xml" hash="1902116cd525f53921cc905b42b06b42"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="paybyfinance.xml" hash="1def0343ce793ed6cf6c41ce9b2a0275"/></dir><dir name="template"><dir name="paybyfinance"><dir name="enhaceaddress"><dir name="orderview"><dir name="address"><file name="info.phtml" hash="973b2339d861303568f902b1fd500c75"/></dir></dir></dir><file name="history.phtml" hash="31fbbbb8477717175da3de1e9fe98f54"/><file name="redirect.phtml" hash="90e7aa306768f5aac337300848c04e6a"/><file name="version.phtml" hash="09a8f416156d853ecc47b24a15744563"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="js"><dir name="paybyfinance"><file name="adress-enhanced-validation.js" hash="cf455e2fa6811c93123826b6bc096f3a"/><file name="checkout.js" hash="6930043a719765833f6d64de1216b7ad"/><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></target><target name="mageetc"><dir name="modules"><file name="HC_PayByFinance.xml" hash="58a12daf6bb6aeb8b94471bf605514e5"/></dir></target><target name="mageweb"><dir name="js"><dir name="paybyfinance"><file name="config-edit.js" hash="81817d23afdf99d10b01072d2471ff65"/><file name="service.js" hash="7e1fe3ffe2d4b95eeb5b27c8d07b23f1"/></dir></dir></target><target name="magelocale"><dir name="en_US"><dir name="template"><dir name="email"><dir name="paybyfinance"><file name="order_declined.html" hash="9172511234c33a8e4e78b581064ed1b3"/><file name="order_declined_guest.html" hash="081da356703cf09ce13a86dfce1ab00b"/><file name="order_referred.html" hash="91468313c16e7d8b821d90a954ecaedb"/><file name="order_referred_guest.html" hash="b0c08ecba679a99ad23064649fb6e48d"/></dir></dir></dir></dir></target></contents>
24
  <compatible/>
25
+ <dependencies><required><php><min>5.6.27</min><max>7.1.6</max></php></required></dependencies>
26
  </package>
skin/frontend/base/default/js/paybyfinance/adress-enhanced-validation.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if(Validation) {
2
+ Validation.addAllThese([
3
+ ['validate-one-required-by-reqGroup', 'Please select one of the options.', function (v,elm) {
4
+ var groupName = elm.getAttribute('reqGroup');
5
+ var inputs = $$('input[reqGroup="' + groupName.replace(/([\\"])/g, '\\$1') + '"]');
6
+ var error = 1;
7
+ for(var i=0;i<inputs.length;i++) {
8
+ if((inputs[i].type == 'checkbox' || inputs[i].type == 'radio') && inputs[i].checked == true) {
9
+ error = 0;
10
+ }
11
+
12
+ if(inputs[i].type == 'text' && inputs[i].value !== "") {
13
+ error = 0;
14
+ }
15
+
16
+ if(Validation.isOnChange && (inputs[i].type == 'checkbox' || inputs[i].type == 'radio')) {
17
+ Validation.reset(inputs[i]);
18
+ }
19
+ }
20
+
21
+ if( error == 0 ) {
22
+ return true;
23
+ } else {
24
+ return false;
25
+ }
26
+ }],
27
+ [ ]
28
+ ])
29
+ }