BillSAFE_3 - Version 14.03.27

Version Notes

Stable Release

Download this release

Release Info

Developer Kristian Büsch
Extension BillSAFE_3
Version 14.03.27
Comparing to
See all releases


Code changes from version 13.12.13 to 14.03.27

Files changed (25) hide show
  1. app/code/community/Netresearch/Billsafe/Helper/Customer.php +15 -17
  2. app/code/community/Netresearch/Billsafe/Helper/Order.php +18 -30
  3. app/code/community/Netresearch/Billsafe/Model/Adminhtml/System/Config/Source/Gender.php +25 -0
  4. app/code/community/Netresearch/Billsafe/Model/Client/Base.php +6 -1
  5. app/code/community/Netresearch/Billsafe/Model/Config.php +20 -1
  6. app/code/community/Netresearch/Billsafe/Model/Config/Abstract.php +23 -0
  7. app/code/community/Netresearch/Billsafe/Model/Config/Maxamount.php +19 -2
  8. app/code/community/Netresearch/Billsafe/Model/Config/Maxfee.php +23 -5
  9. app/code/community/Netresearch/Billsafe/Model/Observer.php +15 -2
  10. app/code/community/Netresearch/Billsafe/Model/Payment.php +122 -86
  11. app/code/community/Netresearch/Billsafe/Model/Pdf/Engine/Invoice/Default.php +48 -0
  12. app/code/community/Netresearch/Billsafe/Test/Block/Customer/Widget/DobTest.php +30 -0
  13. app/code/community/Netresearch/Billsafe/Test/Controller/PaymentControllerTest.php +3 -0
  14. app/code/community/Netresearch/Billsafe/Test/Helper/CustomerTest.php +53 -23
  15. app/code/community/Netresearch/Billsafe/Test/Helper/OrderTest.php +19 -11
  16. app/code/community/Netresearch/Billsafe/Test/Model/ClientTest.php +128 -27
  17. app/code/community/Netresearch/Billsafe/Test/Model/ConfigTest.php +15 -2
  18. app/code/community/Netresearch/Billsafe/Test/Model/PaymentTest.php +223 -5
  19. app/code/community/Netresearch/Billsafe/controllers/PaymentController.php +2 -2
  20. app/code/community/Netresearch/Billsafe/etc/config.xml +18 -1
  21. app/code/community/Netresearch/Billsafe/etc/system.xml +11 -0
  22. app/locale/de_DE/Netresearch_Billsafe.csv +4 -1
  23. doc/Netresearch_Billsafe/ChangeLog.pdf +186 -23
  24. doc/Netresearch_Billsafe/README.pdf +83 -66
  25. package.xml +1 -1
app/code/community/Netresearch/Billsafe/Helper/Customer.php CHANGED
@@ -36,26 +36,24 @@ class Netresearch_Billsafe_Helper_Customer extends Mage_Customer_Helper_Data
36
  * @param Mage_Customer_Model_Address $address
37
  * @param Mage_Sales_Model_Order $order
38
  * @param Mage_Customer_Model_Customer $customer
39
- * @return void
40
  */
41
  public function getCustomerGender($address, $order, $customer)
42
  {
43
- $prefix = strtolower(Mage::helper('billsafe/data')->coalesce(
44
- $this->getGenderText($address, 'gender'),
45
- $this->getGenderText($order, 'customer_gender'),
46
- $this->getGenderText($customer, 'gender'),
47
- $address->getPrefix(),
48
- $order->getCustomerPrefix(),
49
- $customer->getPrefix()
50
- ));
51
- if (in_array($prefix,
52
- array('mrs.', 'mrs', 'frau', 'fr.', 'fr', 'fräulein', 'frau dr.',
53
- 'female'))) {
54
- return 'f';
55
  }
56
- return 'm';
57
- }
58
 
 
 
 
 
 
 
 
 
 
59
 
60
 
61
  /**
@@ -82,13 +80,13 @@ class Netresearch_Billsafe_Helper_Customer extends Mage_Customer_Helper_Data
82
 
83
 
84
  /**
85
- * Retrive text of gender attribute of given entity.
86
  *
87
  * @param Mage_Core_Model_Abstract $entity
88
  * @param string $attributeCode
89
  * @return string
90
  */
91
- protected function getGenderText($entity, $attributeCode)
92
  {
93
  return Mage::getSingleton('eav/config')
94
  ->getAttribute('customer', 'gender')
36
  * @param Mage_Customer_Model_Address $address
37
  * @param Mage_Sales_Model_Order $order
38
  * @param Mage_Customer_Model_Customer $customer
39
+ * @return string
40
  */
41
  public function getCustomerGender($address, $order, $customer)
42
  {
43
+ if ($address->getCompany()) {
44
+ // B2B, no gender necessary
45
+ return '';
 
 
 
 
 
 
 
 
 
46
  }
 
 
47
 
48
+ $gender = Mage::helper('billsafe/data')->coalesce(
49
+ $this->getGenderText($address, 'gender'),
50
+ $this->getGenderText($order, 'customer_gender'),
51
+ $this->getGenderText($customer, 'gender'),
52
+ Mage::getModel('billsafe/config')->getDefaultCustomerGender($order->getStoreId())
53
+ );
54
+
55
+ return ($gender === 'Female') ? 'f' : 'm';
56
+ }
57
 
58
 
59
  /**
80
 
81
 
82
  /**
83
+ * Retrieve text of gender attribute of given entity.
84
  *
85
  * @param Mage_Core_Model_Abstract $entity
86
  * @param string $attributeCode
87
  * @return string
88
  */
89
+ public function getGenderText($entity, $attributeCode)
90
  {
91
  return Mage::getSingleton('eav/config')
92
  ->getAttribute('customer', 'gender')
app/code/community/Netresearch/Billsafe/Helper/Order.php CHANGED
@@ -85,7 +85,8 @@ class Netresearch_Billsafe_Helper_Order extends Mage_Payment_Helper_Data
85
  * gets relevant parts from the customers address
86
  *
87
  * @param Mage_Sales_Model_Quote_Address $address
88
- * @param bool $includeEmail
 
89
  *
90
  * @return array - the parts for billSAFE
91
  */
@@ -138,8 +139,12 @@ class Netresearch_Billsafe_Helper_Order extends Mage_Payment_Helper_Data
138
  */
139
  public function prevalidateOrder($quote)
140
  {
141
- $params = $this->prepareParamsForPrevalidateOrder($quote);
142
- return Mage::getModel('billsafe/client')->prevalidateOrder($params);
 
 
 
 
143
  }
144
 
145
  /**
@@ -164,7 +169,7 @@ class Netresearch_Billsafe_Helper_Order extends Mage_Payment_Helper_Data
164
  'order' => $this->getOrderParamsForProcessOrder(
165
  $quote, $order
166
  ),
167
- 'customer' => $this->getCustomerDataForProcessOrder($quote),
168
  'articleList' => $this->buildArticleList($order, self::TYPE_PO),
169
  'product' => 'invoice',
170
  'sessionId' => md5(
@@ -184,7 +189,14 @@ class Netresearch_Billsafe_Helper_Order extends Mage_Payment_Helper_Data
184
  return $params;
185
  }
186
 
187
- protected function getCustomerDataForProcessOrder($quote)
 
 
 
 
 
 
 
188
  {
189
  $customerData = $this->getCustomerData(
190
  $quote->getBillingAddress(), true, true
@@ -666,15 +678,8 @@ class Netresearch_Billsafe_Helper_Order extends Mage_Payment_Helper_Data
666
  $cancelUrl = Mage::getUrl('billsafe/payment/cancellation');
667
  }
668
 
669
- $customer = $order->getCustomer();
670
- $address = $order->getBillingAddress();
671
- $street = $address->getStreet();
672
  $quote = Mage::getModel('checkout/cart')->getQuote();
673
 
674
- $email = Mage::helper('billsafe/data')->coalesce(
675
- $customer->getEmail(), $order->getCustomerEmail(), $quote->getCustomerEmail()
676
- );
677
- $customerHelper = Mage::helper('billsafe/customer');
678
  $params = array(
679
  'order' => array(
680
  'number' => $order->getIncrementId(),
@@ -686,24 +691,7 @@ class Netresearch_Billsafe_Helper_Order extends Mage_Payment_Helper_Data
686
  ),
687
  'currencyCode' => 'EUR',
688
  ),
689
- 'customer' => array(
690
- 'company' => $address->getCompany(),
691
- 'gender' => $customerHelper->getCustomerGender(
692
- $address, $order, $customer
693
- ),
694
- 'firstname' => $address->getFirstname(),
695
- 'lastname' => $address->getLastname(),
696
- 'street' => implode(' ', $street),
697
- 'houseNumber' => '',
698
- 'postcode' => $address->getPostcode(),
699
- 'city' => $address->getCity(),
700
- 'country' => 'DE',
701
- 'email' => $email,
702
- 'dateOfBirth' => $customerHelper->getCustomerDob(
703
- $customer, $order
704
- ),
705
- 'phone' => $address->getTelephone(),
706
- ),
707
  'articleList' => $this->buildArticleList($order, self::TYPE_PO),
708
  'product' => 'invoice',
709
  'url' => array(
85
  * gets relevant parts from the customers address
86
  *
87
  * @param Mage_Sales_Model_Quote_Address $address
88
+ * @param bool $includeEmail - returned data contain customer's e-mail address if true
89
+ * @param bool $useNames - return data contains customer's first- and lastname if true
90
  *
91
  * @return array - the parts for billSAFE
92
  */
139
  */
140
  public function prevalidateOrder($quote)
141
  {
142
+ try {
143
+ $params = $this->prepareParamsForPrevalidateOrder($quote);
144
+ return Mage::getModel('billsafe/client')->prevalidateOrder($params);
145
+ } catch (Exception $e) {
146
+ return new stdClass();
147
+ }
148
  }
149
 
150
  /**
169
  'order' => $this->getOrderParamsForProcessOrder(
170
  $quote, $order
171
  ),
172
+ 'customer' => $this->getFullCustomerData($quote),
173
  'articleList' => $this->buildArticleList($order, self::TYPE_PO),
174
  'product' => 'invoice',
175
  'sessionId' => md5(
189
  return $params;
190
  }
191
 
192
+ /**
193
+ * retrieves the complete customer data for calls to BillSAFE
194
+ *
195
+ * @param Mage_Sales_Model_Quote $quote - the current quote
196
+ *
197
+ * @return array - the customer data including dob and gender
198
+ */
199
+ protected function getFullCustomerData(Mage_Sales_Model_Quote $quote)
200
  {
201
  $customerData = $this->getCustomerData(
202
  $quote->getBillingAddress(), true, true
678
  $cancelUrl = Mage::getUrl('billsafe/payment/cancellation');
679
  }
680
 
 
 
 
681
  $quote = Mage::getModel('checkout/cart')->getQuote();
682
 
 
 
 
 
683
  $params = array(
684
  'order' => array(
685
  'number' => $order->getIncrementId(),
691
  ),
692
  'currencyCode' => 'EUR',
693
  ),
694
+ 'customer' => $this->getFullCustomerData($quote),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
695
  'articleList' => $this->buildArticleList($order, self::TYPE_PO),
696
  'product' => 'invoice',
697
  'url' => array(
app/code/community/Netresearch/Billsafe/Model/Adminhtml/System/Config/Source/Gender.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Netresearch_Billsafe_Model_Adminhtml_System_Config_Source_Gender
4
+ {
5
+ /**
6
+ * Query genders from customer eav source.
7
+ *
8
+ * @return array
9
+ */
10
+ public function toOptionArray()
11
+ {
12
+ $options = array();
13
+
14
+ $genders = Mage::getSingleton('eav/config')
15
+ ->getAttribute('customer', 'gender')
16
+ ->getSource()
17
+ ->getAllOptions(false);
18
+
19
+ foreach ($genders as $gender) {
20
+ $options[$gender['label']] = Mage::helper('billsafe/data')->__($gender['label']);
21
+ }
22
+
23
+ return $options;
24
+ }
25
+ }
app/code/community/Netresearch/Billsafe/Model/Client/Base.php CHANGED
@@ -16,7 +16,12 @@ class Netresearch_Billsafe_Model_Client_Base extends Zend_Soap_Client
16
  $helper = Mage::helper('billsafe');
17
 
18
  try {
19
- $response = parent::__call($name, $arguments);
 
 
 
 
 
20
  } catch (Exception $e) {
21
  $helper->log($e->getMessage());
22
  $msg = $helper->__(
16
  $helper = Mage::helper('billsafe');
17
 
18
  try {
19
+ // Check if WSDL is available before SoapClient raises an uncatchable PHP fatal error.
20
+ if (get_headers($this->getWsdl())) {
21
+ $response = parent::__call($name, $arguments);
22
+ } else {
23
+ Mage::throwException("WSDL is currently not available.");
24
+ }
25
  } catch (Exception $e) {
26
  $helper->log($e->getMessage());
27
  $msg = $helper->__(
app/code/community/Netresearch/Billsafe/Model/Config.php CHANGED
@@ -121,6 +121,12 @@ class Netresearch_Billsafe_Model_Config extends Varien_Object
121
  */
122
  const CONFIG_PATH_BILLSAFE_PUBLIC_KEY = 'payment/billsafe/merchant_public_key';
123
 
 
 
 
 
 
 
124
  /**
125
  * getter for billsafe exeeding min fee amount
126
  *
@@ -392,7 +398,7 @@ class Netresearch_Billsafe_Model_Config extends Varien_Object
392
  *
393
  * @param int $storeId - the store which confing should be used
394
  *
395
- * @retugetCustomerGenderrn string - the merchants public key
396
  */
397
  public function getPublicKey($storeId = null)
398
  {
@@ -401,6 +407,19 @@ class Netresearch_Billsafe_Model_Config extends Varien_Object
401
  );
402
  }
403
 
 
 
 
 
 
 
 
 
 
 
 
 
 
404
  /**
405
  * Fetches and returns handling charges (payment fee)
406
  *
121
  */
122
  const CONFIG_PATH_BILLSAFE_PUBLIC_KEY = 'payment/billsafe/merchant_public_key';
123
 
124
+ /**
125
+ * BillSAFE default customer gender config path
126
+ * @var string
127
+ */
128
+ const CONFIG_PATH_BILLSAFE_CUSTOMER_GENDER = 'payment/billsafe/default_gender';
129
+
130
  /**
131
  * getter for billsafe exeeding min fee amount
132
  *
398
  *
399
  * @param int $storeId - the store which confing should be used
400
  *
401
+ * @return string - the merchants public key
402
  */
403
  public function getPublicKey($storeId = null)
404
  {
407
  );
408
  }
409
 
410
+ /**
411
+ * Return default gender as set in module configuration.
412
+ *
413
+ * @param mixed $storeId
414
+ * @return string Gender label
415
+ */
416
+ public function getDefaultCustomerGender($storeId = null)
417
+ {
418
+ return Mage::getStoreConfig(
419
+ self::CONFIG_PATH_BILLSAFE_CUSTOMER_GENDER, $storeId
420
+ );
421
+ }
422
+
423
  /**
424
  * Fetches and returns handling charges (payment fee)
425
  *
app/code/community/Netresearch/Billsafe/Model/Config/Abstract.php CHANGED
@@ -7,6 +7,29 @@
7
  */
8
  class Netresearch_Billsafe_Model_Config_Abstract extends Mage_Core_Model_Config_Data
9
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  protected $_realConfigData = array();
11
 
12
  /**
7
  */
8
  class Netresearch_Billsafe_Model_Config_Abstract extends Mage_Core_Model_Config_Data
9
  {
10
+ protected $dataHelper = null;
11
+
12
+ /**
13
+ * @param null $dataHelper
14
+ */
15
+ public function setDataHelper($dataHelper)
16
+ {
17
+ $this->dataHelper = $dataHelper;
18
+ }
19
+
20
+ /**
21
+ * @return null
22
+ */
23
+ public function getDataHelper()
24
+ {
25
+ if (null === $this->dataHelper) {
26
+ $this->dataHelper = Mage::helper('billsafe/data');
27
+ }
28
+ return $this->dataHelper;
29
+ }
30
+
31
+
32
+
33
  protected $_realConfigData = array();
34
 
35
  /**
app/code/community/Netresearch/Billsafe/Model/Config/Maxamount.php CHANGED
@@ -18,7 +18,7 @@ class Netresearch_Billsafe_Model_Config_Maxamount
18
  $storeId = Mage::app()->getStore()->getId();
19
  $config = $this->getTempConfig();
20
  if ($config->isPaymentFeeEnabled($storeId)) {
21
- $max = Mage::getModel('billsafe/config')->getFeeMaxAmount();
22
  if ($max < $this->getValue()) {
23
  $this->setValue($max);
24
  }
@@ -49,7 +49,7 @@ class Netresearch_Billsafe_Model_Config_Maxamount
49
  $msg = 'Maximum order amount is a required entry!';
50
  throw new Exception(Mage::helper('billsafe')->__($msg));
51
  }
52
- $max = Mage::getModel('billsafe/config')->getFeeMaxAmount();
53
  if (is_null($max)) {
54
  throw new Exception(Mage::helper('billsafe')->__(
55
  'No connection to BillSAFE. Please check your credentials.'
@@ -68,4 +68,21 @@ class Netresearch_Billsafe_Model_Config_Maxamount
68
 
69
  parent::_beforeSave();
70
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  }
18
  $storeId = Mage::app()->getStore()->getId();
19
  $config = $this->getTempConfig();
20
  if ($config->isPaymentFeeEnabled($storeId)) {
21
+ $max = $this->getMax();
22
  if ($max < $this->getValue()) {
23
  $this->setValue($max);
24
  }
49
  $msg = 'Maximum order amount is a required entry!';
50
  throw new Exception(Mage::helper('billsafe')->__($msg));
51
  }
52
+ $max = $this->getMax();
53
  if (is_null($max)) {
54
  throw new Exception(Mage::helper('billsafe')->__(
55
  'No connection to BillSAFE. Please check your credentials.'
68
 
69
  parent::_beforeSave();
70
  }
71
+
72
+ /**
73
+ * gets the max amount for the payment fee from BillSAFE
74
+ *
75
+ * @return float - the maximum amount of the payment fee or null if it couldn't be obtained
76
+ */
77
+ protected function getMax()
78
+ {
79
+ $max = null;
80
+ try {
81
+ $max = Mage::getModel('billsafe/config')->getFeeMaxAmount();
82
+ } catch (Exception $e) {
83
+ $this->getDataHelper()->log('error obtaining the max fee amount ' . $e->getMessage());
84
+ Mage::logException($e);
85
+ }
86
+ return $max;
87
+ }
88
  }
app/code/community/Netresearch/Billsafe/Model/Config/Maxfee.php CHANGED
@@ -20,7 +20,7 @@ class Netresearch_Billsafe_Model_Config_Maxfee
20
  $storeId = Mage::app()->getStore()->getId();
21
  $config = $this->getTempConfig();
22
  if ($config->isPaymentFeeEnabled($storeId)) {
23
- $max = Mage::getModel('billsafe/config')->getMaxFee();
24
  if ($max < $this->getValue()) {
25
  $this->setValue($max);
26
  }
@@ -43,20 +43,21 @@ class Netresearch_Billsafe_Model_Config_Maxfee
43
  && strlen($config->getMerchantId($storeId))
44
  && strlen($config->getMerchantLicense($storeId))
45
  ) {
 
46
  if ($this->getValue() == '') {
47
  $msg = 'Maximum/Default fee is required entry!';
48
- throw new Exception(Mage::helper('billsafe')->__($msg));
49
  }
50
- $max = Mage::getModel('billsafe/config')->getMaxFee();
51
  if (is_null($max)) {
52
- throw new Exception(Mage::helper('billsafe')->__(
53
  'No connection to BillSAFE. Please check your credentials.'
54
  ));
55
  }
56
  if ($max < $this->getValue()) {
57
  $msg
58
  = 'Maximum/Default fee %s exceeded the allowed maximum by BillSAFE of %s.';
59
- throw new Exception(Mage::helper('billsafe')->__(
60
  $msg, $this->getValue(), $max
61
  ));
62
  }
@@ -65,4 +66,21 @@ class Netresearch_Billsafe_Model_Config_Maxfee
65
 
66
  parent::_beforeSave();
67
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  }
20
  $storeId = Mage::app()->getStore()->getId();
21
  $config = $this->getTempConfig();
22
  if ($config->isPaymentFeeEnabled($storeId)) {
23
+ $max = $this->getMaxFee();
24
  if ($max < $this->getValue()) {
25
  $this->setValue($max);
26
  }
43
  && strlen($config->getMerchantId($storeId))
44
  && strlen($config->getMerchantLicense($storeId))
45
  ) {
46
+ $dataHelper = $this->getDataHelper();
47
  if ($this->getValue() == '') {
48
  $msg = 'Maximum/Default fee is required entry!';
49
+ throw new Exception($dataHelper->__($msg));
50
  }
51
+ $max = $this->getMaxFee();
52
  if (is_null($max)) {
53
+ throw new Exception($dataHelper->__(
54
  'No connection to BillSAFE. Please check your credentials.'
55
  ));
56
  }
57
  if ($max < $this->getValue()) {
58
  $msg
59
  = 'Maximum/Default fee %s exceeded the allowed maximum by BillSAFE of %s.';
60
+ throw new Exception($dataHelper->__(
61
  $msg, $this->getValue(), $max
62
  ));
63
  }
66
 
67
  parent::_beforeSave();
68
  }
69
+
70
+ /**
71
+ * gets the payment fee from BillSAFE
72
+ *
73
+ * @return float the amount for the payment fee, null if it couldn't be obtained
74
+ */
75
+ protected function getMaxFee()
76
+ {
77
+ $max = null;
78
+ try {
79
+ $max = Mage::getModel('billsafe/config')->getMaxFee();
80
+ } catch (Exception $e) {
81
+ $this->getDataHelper()->log('error obtaining the max fee ' . $e->getMessage());
82
+ Mage::logException($e);
83
+ }
84
+ return $max;
85
+ }
86
  }
app/code/community/Netresearch/Billsafe/Model/Observer.php CHANGED
@@ -99,7 +99,6 @@ class Netresearch_Billsafe_Model_Observer
99
  return Mage::getSingleton('checkout/type_onepage');
100
  }
101
 
102
-
103
  public function cleanUpSession($observer)
104
  {
105
  if (Mage::getSingleton('customer/session')->getData(
@@ -127,5 +126,19 @@ class Netresearch_Billsafe_Model_Observer
127
  $dob = $observer->getEvent()->getInput()->getDob();
128
  Mage::getSingleton('checkout/session')->setData('customer_dob', $dob);
129
  }
130
- }
131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  return Mage::getSingleton('checkout/type_onepage');
100
  }
101
 
 
102
  public function cleanUpSession($observer)
103
  {
104
  if (Mage::getSingleton('customer/session')->getData(
126
  $dob = $observer->getEvent()->getInput()->getDob();
127
  Mage::getSingleton('checkout/session')->setData('customer_dob', $dob);
128
  }
 
129
 
130
+ /**
131
+ * Adds the billsafe payment and legal notes to the invoice notes
132
+ */
133
+ public function firegentoPdfInvoiceInsertNotice(Varien_Event_Observer $observer)
134
+ {
135
+ $order = $observer->getEvent()->getOrder();
136
+ $result = $observer->getEvent()->getResult();
137
+ if ($order->getPayment()->getMethod() == Netresearch_Billsafe_Model_Payment::CODE) {
138
+ $notes = $result->getNotes();
139
+ $infoText = Mage::helper('payment')->getInfoBlock($order->getPayment())->toMrgPdf() . "\n";
140
+ $notes = array_merge($notes, explode("\n", $infoText));
141
+ $result->setNotes($notes);
142
+ }
143
+ }
144
+ }
app/code/community/Netresearch/Billsafe/Model/Payment.php CHANGED
@@ -52,6 +52,28 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
52
  return $this->_config;
53
  }
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  /**
56
  * Check if payment method is available for current order
57
  *
@@ -61,14 +83,11 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
61
  */
62
  public function isAvailable($quote = null)
63
  {
64
- if (Mage::getModel('billsafe/config')->isBillsafeDirectEnabled() && true === Mage::getSingleton('customer/session')->getData(
65
- 'authorize_failed'
66
- ) && $quote instanceof Mage_Sales_Model_Quote && Mage::helper('billsafe/order')->generateAddressHash(
67
- $quote->getBillingAddress()
68
- ) ==
69
- Mage::getSingleton('customer/session')->getData(
70
- 'billsafe_billingAddrHash'
71
- )
72
  ) {
73
  return false;
74
  }
@@ -85,26 +104,16 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
85
  if ($quote) {
86
  // total amount must fit between min and max amount
87
  $total = (float) $quote->getGrandTotal();
88
- $minAmount = $this->getConfig()->getBillSafeMinAmount(
89
- $quote->getStoreId()
90
- );
91
- $maxAmount = $this->getConfig()->getBillSafeMaxAmount(
92
- $quote->getStoreId()
93
- );
94
  if ($total < $minAmount || $total > $maxAmount) {
95
  return false;
96
  }
97
  // Check Min and Fax of Fee
98
- if (Mage::getModel('billsafe/config')->isPaymentFeeEnabled(
99
- $quote->getStoreId()
100
- )
101
- ) {
102
- $feeProduct = Mage::helper('paymentfee/data')
103
- ->getUpdatedFeeProduct();
104
- $avoidOverMax = $this->getConfig()
105
- ->isBillsafeExeedingMaxFeeAmount($quote->getStoreId());
106
- $avoidBelowMin = $this->getConfig()
107
- ->isBillsafeExeedingMinFeeAmount($quote->getStoreId());
108
 
109
  if ($avoidOverMax && $feeProduct->getExceedsMaxAmount()) {
110
  return false;
@@ -125,16 +134,21 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
125
  $shippingAddress = $quote->getShippingAddress();
126
  if (false == $shippingAddress->getSameAsBilling()) {
127
  $shippingData = $this->serializeAddress($shippingAddress);
128
- $billingData = $this->serializeAddress(
129
- $quote->getBillingAddress()
130
- );
131
 
132
  if (0 != strcmp($shippingData, $billingData)) {
133
  return false;
134
  }
135
  }
136
-
137
- $this->prevalidateOrder($quote);
 
 
 
 
 
 
 
138
  }
139
 
140
  return true;
@@ -167,26 +181,39 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
167
  return $result;
168
  }
169
 
170
- public function prevalidateOrder($quote)
 
 
 
 
 
 
 
171
  {
172
- if ($quote->getBillingAddress()
173
- instanceof Mage_Sales_Model_Quote_Address && 0 < strlen($quote->getBillingAddress()->getPostcode())
174
- ) {
175
- $prevalidateResult = Mage::helper('billsafe/order')
176
- ->prevalidateOrder($quote);
177
- if (strtolower(trim($prevalidateResult->ack)) != 'ok' || (property_exists($prevalidateResult, 'invoice') && (bool) $prevalidateResult->invoice->isAvailable == false)
178
- ) {
179
- if (property_exists($prevalidateResult, 'invoice')) {
180
- $this->_unavailableMessage
181
- = $prevalidateResult->invoice->message;
 
 
 
 
182
  }
183
- $this->_availableCheck = false;
184
- return false;
185
  }
 
 
 
 
 
 
 
186
  }
187
- $this->_availableCheck = true;
188
- $this->_unavailableMessage = '';
189
- return true;
190
  }
191
 
192
  /**
@@ -265,37 +292,30 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
265
  {
266
 
267
  parent::authorize($payment, $amount);
 
 
 
268
  if (true == Mage::getModel('billsafe/config')->isBillSafeDirectEnabled()
269
  ) {
270
-
271
- $order = $this->getInfoInstance()->getOrder();
272
  $quote = $order->getQuote();
273
  $result = array();
274
- $section = 'shipping_method';
275
- if (false === ($order->getShippingAddress() instanceof
276
- Mage_Sales_Model_Order_Address) || 0 == strlen($order->getShippingAddress()->getPostcode())
277
- ) {
278
- $section = 'billing';
279
- }
280
- $buyerMessage = "Please select another payment method!";
281
  try {
282
- $result = Mage::helper('billsafe/order')->processOrder(
283
- $quote, $order
284
- );
285
- Mage::helper('billsafe/data')->log(
286
- 'result ' . Zend_Json::encode($result)
287
- );
288
- if (!array_key_exists('success', $result) || $result['success'] === false
289
- ) {
290
  if (array_key_exists('buyerMessage', $result)) {
291
  $buyerMessage = $result['buyerMessage'];
292
  Mage::getSingleton('customer/session')->setData(
293
- 'authorize_failed', true
 
294
  );
295
  $addressHash = Mage::helper('billsafe/order')
296
  ->generateAddressHash($quote->getBillingAddress());
297
  Mage::getSingleton('customer/session')->setData(
298
- 'billsafe_billingAddrHash', $addressHash
 
299
  );
300
  }
301
  Mage::getSingleton('checkout/type_onepage')->getCheckout()
@@ -309,7 +329,7 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
309
  ->setIsTransactionPending(false)
310
  ->setIsTransactionClosed(false)
311
  ->setPreparedMessage(
312
- $this->getHelper()->__(
313
  'Payment registered at Billsafe'
314
  )
315
  )
@@ -321,12 +341,9 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
321
  $state = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT;
322
  }
323
 
324
- $text
325
- = 'Successful BillSAFE payment.<br/>Transaction ID: ' .
326
  '%d.<br/>BillSAFE Transaction Status: ACCEPTED.';
327
- $notice = Mage::helper('billsafe')->__(
328
- $text, $result['transactionId']
329
- );
330
  Mage::helper('billsafe/order')->getPaymentInstruction($order);
331
  $order->setState($state, true, $notice)->save();
332
  }
@@ -338,42 +355,44 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
338
  $this->cancel($payment);
339
  }
340
  } catch (Exception $e) {
341
- $this->getHelper()->log($e->getMessage());
342
  }
343
  Mage::getSingleton('checkout/type_onepage')->getCheckout()
344
  ->setGotoSection($section);
345
  Mage::throwException(
346
  sprintf(
347
- '%s', Mage::helper('billsafe/data')->__($buyerMessage)
 
348
  )
349
  );
350
  }
351
  } else {
352
-
353
- $token = $this->getClient()
354
- ->prepareOrder($this->getInfoInstance()->getOrder())
355
- ->getResponseToken();
356
-
 
 
 
357
  if (!$token) {
358
- throw new Mage_Checkout_Exception('No Billsafe token');
 
359
  }
360
  Mage::register(
361
- Netresearch_Billsafe_Model_Config::TOKEN_REGISTRY_KEY, $token
 
362
  );
363
  $payment
364
  ->setIsTransactionPending(true)
365
  ->setIsTransactionClosed(false)
366
  ->setPreparedMessage(
367
- $this->getHelper()->__('Payment registered at Billsafe')
368
  )
369
  ->setTransactionId($token);
370
  }
371
  }
372
 
373
- public function getHelper()
374
- {
375
- return Mage::helper('billsafe/data');
376
- }
377
 
378
  /**
379
  * Capture
@@ -386,7 +405,7 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
386
  public function capture(Varien_Object $payment, $amount)
387
  {
388
  if (!$this->areAllCaptureItemsSent($payment)) {
389
- throw new Mage_Core_Exception($this->getHelper()->__(
390
  'Count of items to invoice does not match sent items count. ' .
391
  'Please change to items to be invoiced to match shipped items!'
392
  ));
@@ -407,7 +426,7 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
407
  */
408
  protected function areAllCaptureItemsSent($payment)
409
  {
410
- if ($this->getHelper()->isDoShipment() || $this->getHelper()->isCaptureOffline()
411
  ) {
412
  return true;
413
  }
@@ -511,4 +530,21 @@ class Netresearch_Billsafe_Model_Payment extends Mage_Payment_Model_Method_Abstr
511
  {
512
  return $this->_unavailableMessage;
513
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
514
  }
52
  return $this->_config;
53
  }
54
 
55
+ /**
56
+ * @param null $dataHelper
57
+ */
58
+ public function setDataHelper(Netresearch_Billsafe_Helper_Data $dataHelper)
59
+ {
60
+ $this->dataHelper = $dataHelper;
61
+ }
62
+
63
+ /**
64
+ * @return Netresearch_Billsafe_Helper_Data
65
+ */
66
+ public function getDataHelper()
67
+ {
68
+ if (null == $this->dataHelper) {
69
+ $this->dataHelper = Mage::helper('billsafe/data');
70
+ }
71
+ return $this->dataHelper;
72
+ }
73
+
74
+
75
+
76
+
77
  /**
78
  * Check if payment method is available for current order
79
  *
83
  */
84
  public function isAvailable($quote = null)
85
  {
86
+ if (Mage::getModel('billsafe/config')->isBillsafeDirectEnabled()
87
+ && true === Mage::getSingleton('customer/session')->getData('authorize_failed')
88
+ && $quote instanceof Mage_Sales_Model_Quote
89
+ && Mage::helper('billsafe/order')->generateAddressHash($quote->getBillingAddress())
90
+ == Mage::getSingleton('customer/session')->getData('billsafe_billingAddrHash')
 
 
 
91
  ) {
92
  return false;
93
  }
104
  if ($quote) {
105
  // total amount must fit between min and max amount
106
  $total = (float) $quote->getGrandTotal();
107
+ $minAmount = $this->getConfig()->getBillSafeMinAmount($quote->getStoreId());
108
+ $maxAmount = $this->getConfig()->getBillSafeMaxAmount($quote->getStoreId());
 
 
 
 
109
  if ($total < $minAmount || $total > $maxAmount) {
110
  return false;
111
  }
112
  // Check Min and Fax of Fee
113
+ if (Mage::getModel('billsafe/config')->isPaymentFeeEnabled($quote->getStoreId())) {
114
+ $feeProduct = Mage::helper('paymentfee/data')->getUpdatedFeeProduct();
115
+ $avoidOverMax = $this->getConfig()->isBillsafeExeedingMaxFeeAmount($quote->getStoreId());
116
+ $avoidBelowMin = $this->getConfig()->isBillsafeExeedingMinFeeAmount($quote->getStoreId());
 
 
 
 
 
 
117
 
118
  if ($avoidOverMax && $feeProduct->getExceedsMaxAmount()) {
119
  return false;
134
  $shippingAddress = $quote->getShippingAddress();
135
  if (false == $shippingAddress->getSameAsBilling()) {
136
  $shippingData = $this->serializeAddress($shippingAddress);
137
+ $billingData = $this->serializeAddress($quote->getBillingAddress());
 
 
138
 
139
  if (0 != strcmp($shippingData, $billingData)) {
140
  return false;
141
  }
142
  }
143
+ /*
144
+ * in cases the quote couldn't be handled by BillSAFE isAvailable return true in order to display a
145
+ * detailed message to the customer, technical errors leads to unavailbilty of BillSAFE payment method
146
+ */
147
+ try {
148
+ $this->prevalidateOrder($quote);
149
+ } catch (Mage_Core_Exception $e) {
150
+ return false;
151
+ }
152
  }
153
 
154
  return true;
181
  return $result;
182
  }
183
 
184
+ /**
185
+ * executes prevalidateOrder call and evaluates the result
186
+ *
187
+ * @param Mage_Sales_Model_Quote $quote - the quote which needs to be checked for BillSAFe payment
188
+ *
189
+ * @return bool - true if the quote is valid for billSAFE payment, false otherwise
190
+ */
191
+ public function prevalidateOrder(Mage_Sales_Model_Quote $quote)
192
  {
193
+ try {
194
+ if ($quote->getBillingAddress() instanceof Mage_Sales_Model_Quote_Address
195
+ && 0 < strlen($quote->getBillingAddress()->getPostcode())) {
196
+ $prevalidateResult = Mage::helper('billsafe/order')->prevalidateOrder($quote);
197
+ if (strtolower(trim($prevalidateResult->ack)) != 'ok' ||
198
+ (property_exists($prevalidateResult, 'invoice') &&
199
+ (bool) $prevalidateResult->invoice->isAvailable == false)
200
+ ) {
201
+ if (property_exists($prevalidateResult, 'invoice')) {
202
+ $this->_unavailableMessage
203
+ = $prevalidateResult->invoice->message;
204
+ }
205
+ $this->_availableCheck = false;
206
+ return false;
207
  }
 
 
208
  }
209
+ $this->_availableCheck = true;
210
+ $this->_unavailableMessage = '';
211
+ return true;
212
+ } catch (Exception $e) {
213
+ $this->getDataHelper()->log('Exception during prevalidateOrder call ' . $e->getMessage());
214
+ $this->_availableCheck = false;
215
+ Mage::throwException($e);
216
  }
 
 
 
217
  }
218
 
219
  /**
292
  {
293
 
294
  parent::authorize($payment, $amount);
295
+ $order = $this->getInfoInstance()->getOrder();
296
+ $section = $this->getCheckoutSection($order);
297
+ $buyerMessage = "Please select another payment method!";
298
  if (true == Mage::getModel('billsafe/config')->isBillSafeDirectEnabled()
299
  ) {
 
 
300
  $quote = $order->getQuote();
301
  $result = array();
302
+
303
+
 
 
 
 
 
304
  try {
305
+ $result = Mage::helper('billsafe/order')->processOrder($quote, $order);
306
+ Mage::helper('billsafe/data')->log('result ' . Zend_Json::encode($result));
307
+ if (!array_key_exists('success', $result) || $result['success'] === false) {
 
 
 
 
 
308
  if (array_key_exists('buyerMessage', $result)) {
309
  $buyerMessage = $result['buyerMessage'];
310
  Mage::getSingleton('customer/session')->setData(
311
+ 'authorize_failed',
312
+ true
313
  );
314
  $addressHash = Mage::helper('billsafe/order')
315
  ->generateAddressHash($quote->getBillingAddress());
316
  Mage::getSingleton('customer/session')->setData(
317
+ 'billsafe_billingAddrHash',
318
+ $addressHash
319
  );
320
  }
321
  Mage::getSingleton('checkout/type_onepage')->getCheckout()
329
  ->setIsTransactionPending(false)
330
  ->setIsTransactionClosed(false)
331
  ->setPreparedMessage(
332
+ $this->getDataHelper()->__(
333
  'Payment registered at Billsafe'
334
  )
335
  )
341
  $state = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT;
342
  }
343
 
344
+ $text = 'Successful BillSAFE payment.<br/>Transaction ID: ' .
 
345
  '%d.<br/>BillSAFE Transaction Status: ACCEPTED.';
346
+ $notice = $this->getDataHelper()->__($text, $result['transactionId']);
 
 
347
  Mage::helper('billsafe/order')->getPaymentInstruction($order);
348
  $order->setState($state, true, $notice)->save();
349
  }
355
  $this->cancel($payment);
356
  }
357
  } catch (Exception $e) {
358
+ $this->getDataHelper()->log($e->getMessage());
359
  }
360
  Mage::getSingleton('checkout/type_onepage')->getCheckout()
361
  ->setGotoSection($section);
362
  Mage::throwException(
363
  sprintf(
364
+ '%s',
365
+ Mage::helper('billsafe/data')->__($buyerMessage)
366
  )
367
  );
368
  }
369
  } else {
370
+ $token = null;
371
+ try {
372
+ $token = $this->getClient()
373
+ ->prepareOrder($this->getInfoInstance()->getOrder())
374
+ ->getResponseToken();
375
+ } catch (Exception $e) {
376
+ $this->getDataHelper()->log('error getting the token ' . $e->getMessage());
377
+ }
378
  if (!$token) {
379
+ Mage::getSingleton('checkout/type_onepage')->getCheckout()->setGotoSection($section);
380
+ Mage::throwException($this->getDataHelper()->__($buyerMessage));
381
  }
382
  Mage::register(
383
+ Netresearch_Billsafe_Model_Config::TOKEN_REGISTRY_KEY,
384
+ $token
385
  );
386
  $payment
387
  ->setIsTransactionPending(true)
388
  ->setIsTransactionClosed(false)
389
  ->setPreparedMessage(
390
+ $this->getDataHelper()->__('Payment registered at Billsafe')
391
  )
392
  ->setTransactionId($token);
393
  }
394
  }
395
 
 
 
 
 
396
 
397
  /**
398
  * Capture
405
  public function capture(Varien_Object $payment, $amount)
406
  {
407
  if (!$this->areAllCaptureItemsSent($payment)) {
408
+ throw new Mage_Core_Exception($this->getDataHelper()->__(
409
  'Count of items to invoice does not match sent items count. ' .
410
  'Please change to items to be invoiced to match shipped items!'
411
  ));
426
  */
427
  protected function areAllCaptureItemsSent($payment)
428
  {
429
+ if ($this->getDataHelper()->isDoShipment() || $this->getDataHelper()->isCaptureOffline()
430
  ) {
431
  return true;
432
  }
530
  {
531
  return $this->_unavailableMessage;
532
  }
533
+
534
+ /**
535
+ * gets the checkout section in case of errors
536
+ *
537
+ * @param $order
538
+ *
539
+ * @return string
540
+ */
541
+ protected function getCheckoutSection($order)
542
+ {
543
+ $section = 'shipping_method';
544
+ if (false === ($order->getShippingAddress() instanceof Mage_Sales_Model_Order_Address)
545
+ || 0 === strlen(trim($order->getShippingAddress()->getPostcode()))) {
546
+ $section = 'billing';
547
+ }
548
+ return $section;
549
+ }
550
  }
app/code/community/Netresearch/Billsafe/Model/Pdf/Engine/Invoice/Default.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Netresearch_Billsafe_Model_Pdf_Engine_Invoice_Default
3
+ extends FireGento_Pdf_Model_Engine_Invoice_Default
4
+ {
5
+ /**
6
+ * Insert footer
7
+ *
8
+ * @param Zend_Pdf_Page $page Current page object of Zend_Pdf
9
+ * @return void
10
+ */
11
+ protected function _insertFooter(&$page)
12
+ {
13
+ $page->setLineColor($this->colors['black']);
14
+ $page->setLineWidth(0.5);
15
+ $page->drawLine($this->margin['left'] - 20, $this->y - 5, $this->margin['right'] + 30, $this->y - 5);
16
+
17
+ $this->Ln(15);
18
+ $this->_insertFooterAddress($page);
19
+
20
+ $fields = array(
21
+ 'telephone' => Mage::helper('firegento_pdf')->__('Telephone:'),
22
+ 'fax' => Mage::helper('firegento_pdf')->__('Fax:'),
23
+ 'email' => Mage::helper('firegento_pdf')->__('E-Mail:'),
24
+ 'web' => Mage::helper('firegento_pdf')->__('Web:'),
25
+ );
26
+ $this->_insertFooterBlock($page, $fields, 70, 40, 140);
27
+
28
+ if ($this->getOrder()->getPayment()->getMethod() != Netresearch_Billsafe_Model_Payment::CODE) {
29
+ $fields = array(
30
+ 'bank_name' => Mage::helper('firegento_pdf')->__('Bank name:'),
31
+ 'bank_account' => Mage::helper('firegento_pdf')->__('Account:'),
32
+ 'bank_code_number' => Mage::helper('firegento_pdf')->__('Bank number:'),
33
+ 'bank_account_owner' => Mage::helper('firegento_pdf')->__('Account owner:'),
34
+ 'swift' => Mage::helper('firegento_pdf')->__('SWIFT:'),
35
+ 'iban' => Mage::helper('firegento_pdf')->__('IBAN:'),
36
+ );
37
+ $this->_insertFooterBlock($page, $fields, 215, 50, 140);
38
+ }
39
+
40
+ $fields = array(
41
+ 'tax_number' => Mage::helper('firegento_pdf')->__('Tax number:'),
42
+ 'vat_id' => Mage::helper('firegento_pdf')->__('VAT-ID:'),
43
+ 'register_number' => Mage::helper('firegento_pdf')->__('Register number:'),
44
+ 'ceo' => Mage::helper('firegento_pdf')->__('CEO:'),
45
+ );
46
+ $this->_insertFooterBlock($page, $fields, 355, 60, $this->margin['right'] - 355 - 10);
47
+ }
48
+ }
app/code/community/Netresearch/Billsafe/Test/Block/Customer/Widget/DobTest.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Netresearch_Billsafe_Test_Block_Customer_Widget_DobTest
3
+ extends EcomDev_PHPUnit_Test_Case
4
+ {
5
+ /**
6
+ * @test
7
+ */
8
+ public function isRequired()
9
+ {
10
+ $storeId = Mage_Core_Model_App::DISTRO_STORE_ID;
11
+ $isDirectEnabled = true;
12
+
13
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
14
+ $dataHelperMock->expects($this->any())
15
+ ->method('getStoreIdfromQuote')
16
+ ->will($this->returnValue($storeId));
17
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
18
+
19
+ $configMock = $this->getModelMock('billsafe/config', array('isBillSafeDirectEnabled'));
20
+ $configMock->expects($this->any())
21
+ ->method('isBillSafeDirectEnabled')
22
+ ->will($this->returnValue($isDirectEnabled));
23
+ $this->replaceByMock('model', 'billsafe/config', $configMock);
24
+
25
+ /* @var $dobBlock Netresearch_Billsafe_Block_Customer_Widget_Dob */
26
+ $dobBlock = Mage::app()->getLayout()->createBlock('billsafe/customer_widget_dob');
27
+ $this->assertEquals($isDirectEnabled, $dobBlock->isRequired());
28
+ $this->assertStringStartsWith('billsafe', $dobBlock->getTemplate());
29
+ }
30
+ }
app/code/community/Netresearch/Billsafe/Test/Controller/PaymentControllerTest.php CHANGED
@@ -13,6 +13,9 @@ class Netresearch_Billsafe_Test_Controller_PaymentControllerTest
13
 
14
  public function testVerifyActionRedirectsToCart()
15
  {
 
 
 
16
  $clientMock = $this->getModelMock('billsafe/client', array('isValid', 'isAccepted', 'getResponse', 'getTransactionResult'));
17
  $clientMock->expects($this->any())
18
  ->method('isValid')
13
 
14
  public function testVerifyActionRedirectsToCart()
15
  {
16
+ $customerSessionMock = $this->getModelMock('checkout/session', array('init', 'save', 'addError', 'isLoggedIn'));
17
+ $this->replaceByMock('model', 'checkout/session', $customerSessionMock);
18
+
19
  $clientMock = $this->getModelMock('billsafe/client', array('isValid', 'isAccepted', 'getResponse', 'getTransactionResult'));
20
  $clientMock->expects($this->any())
21
  ->method('isValid')
app/code/community/Netresearch/Billsafe/Test/Helper/CustomerTest.php CHANGED
@@ -10,8 +10,6 @@
10
  class Netresearch_Billsafe_Test_Helper_CustomerTest
11
  extends EcomDev_PHPUnit_Test_Case
12
  {
13
-
14
-
15
  public function testGetCustomerDob()
16
  {
17
  $helper = Mage::helper('billsafe/customer');
@@ -44,28 +42,60 @@ class Netresearch_Billsafe_Test_Helper_CustomerTest
44
  $address = new Varien_Object();
45
  $customer = new Varien_Object();
46
  $order = new Varien_Object();
47
- $address->setPrefix('');
48
- $customer->setPrefix('');
49
- $helperMock = $this->getMockedGenderTextHelper(null);
50
- $this->assertEquals(
51
- 'm', $helperMock->getCustomerGender($address, $order, $customer)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  );
53
- $femaleValues = array('mrs.', 'mrs', 'frau', 'fr.', 'fr',
54
- 'fräulein', 'frau dr.', 'female');
55
- foreach ($femaleValues as $femaleValue) {
56
- $helperMock = $this->getMockedGenderTextHelper($femaleValue);
57
- $this->assertEquals(
58
- 'f', $helperMock->getCustomerGender($address, $order, $customer)
59
- );
60
- }
61
- $maleValues = array('mr.', 'mr', 'herr', 'herr dr.',
62
- 'male');
63
- foreach ($maleValues as $maleValue) {
64
- $helperMock = $this->getMockedGenderTextHelper($maleValue);
65
- $this->assertEquals(
66
- 'm', $helperMock->getCustomerGender($address, $order, $customer)
67
- );
68
- }
69
  }
70
 
71
  public function testGetGenderText()
10
  class Netresearch_Billsafe_Test_Helper_CustomerTest
11
  extends EcomDev_PHPUnit_Test_Case
12
  {
 
 
13
  public function testGetCustomerDob()
14
  {
15
  $helper = Mage::helper('billsafe/customer');
42
  $address = new Varien_Object();
43
  $customer = new Varien_Object();
44
  $order = new Varien_Object();
45
+
46
+ $defaultGender = 'Female';
47
+
48
+ $configMock = $this->getModelMock('billsafe/config', array(
49
+ 'getDefaultCustomerGender',
50
+ ));
51
+ $configMock->expects($this->any())
52
+ ->method('getDefaultCustomerGender')
53
+ ->will($this->returnValue($defaultGender));
54
+ $this->replaceByMock('model', 'billsafe/config', $configMock);
55
+
56
+ $helperMock = $this->getHelperMock(
57
+ 'billsafe/customer', array('getGenderText')
58
+ );
59
+ $helperMock->expects($this->any())
60
+ ->method('getGenderText')
61
+ ->will($this->onConsecutiveCalls(
62
+ null, null, null,
63
+ null, null, 'MyCustomerGender',
64
+ null, 'MyOrderGender', null,
65
+ 'MyAddressGender', null, null
66
+ ));
67
+ $this->replaceByMock('helper', 'billsafe/customer', $helperMock);
68
+
69
+ // Fallback to default gender as configured (transformed)
70
+ $gender = Mage::helper('billsafe/customer')->getCustomerGender(
71
+ $address, $order, $customer
72
+ );
73
+ $this->assertEquals('f', $gender);
74
+
75
+ // Gender as given in customer account (transformed)
76
+ $gender = Mage::helper('billsafe/customer')->getCustomerGender(
77
+ $address, $order, $customer
78
+ );
79
+ $this->assertEquals('m', $gender);
80
+
81
+ // Gender as given in order (transformed)
82
+ $gender = Mage::helper('billsafe/customer')->getCustomerGender(
83
+ $address, $order, $customer
84
+ );
85
+ $this->assertEquals('m', $gender);
86
+
87
+ // Gender as given in address (transformed)
88
+ $gender = Mage::helper('billsafe/customer')->getCustomerGender(
89
+ $address, $order, $customer
90
+ );
91
+ $this->assertEquals('m', $gender);
92
+
93
+ // Gender not necessary with B2B orders
94
+ $address->setCompany('Foo AG');
95
+ $gender = Mage::helper('billsafe/customer')->getCustomerGender(
96
+ $address, $order, $customer
97
  );
98
+ $this->assertEquals('', $gender);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  }
100
 
101
  public function testGetGenderText()
app/code/community/Netresearch/Billsafe/Test/Helper/OrderTest.php CHANGED
@@ -1029,6 +1029,9 @@ class Netresearch_Billsafe_Test_Helper_OrderTest
1029
  */
1030
  public function testGetPreparedOrderParams()
1031
  {
 
 
 
1032
  $sessionMock = $this->getModelMockBuilder('checkout/session')
1033
  ->disableOriginalConstructor(
1034
  ) // This one removes session_start and other methods usage
@@ -1041,7 +1044,10 @@ class Netresearch_Billsafe_Test_Helper_OrderTest
1041
  ->getMock();
1042
  $this->replaceByMock('singleton', 'core/session', $sessionMock);
1043
 
1044
- $fakeQuote = new Varien_Object();
 
 
 
1045
  $cartMock = $this->getModelMock('checkout/cart', array('getQuote'));
1046
  $cartMock->expects($this->any())
1047
  ->method('getQuote')
@@ -1076,13 +1082,9 @@ class Netresearch_Billsafe_Test_Helper_OrderTest
1076
  ->method('buildArticleList')
1077
  ->will($this->returnValue(array('name' => 'item 1')));
1078
 
1079
- $order = Mage::getModel('sales/order')->load(13);
1080
- $customer = new Varien_Object();
1081
- $customer->setEmail('a@b.com');
1082
  $order->setCustomer($customer);
1083
 
1084
- $billingAddress = $this->getBillingAddress();
1085
- $order->setBillingAddress($billingAddress);
1086
  $result = $orderHelperMock->getPreparedOrderParams($order);
1087
 
1088
  $this->resultAssertions($result, $order, $dataHelperMock,
@@ -1131,16 +1133,18 @@ class Netresearch_Billsafe_Test_Helper_OrderTest
1131
  implode(' ', $billingAddress->getStreet()),
1132
  $result['customer']['street']
1133
  );
1134
- $this->assertEquals('', $result['customer']['houseNumber']);
1135
  $this->assertEquals(
1136
  $billingAddress->getPostcode(), $result['customer']['postcode']
1137
  );
 
1138
  $this->assertEquals(
1139
  $billingAddress->getCity(), $result['customer']['city']
1140
  );
1141
- $this->assertEquals('DE', $result['customer']['country']);
1142
  $this->assertEquals('a@b.com', $result['customer']['email']);
1143
- $this->assertEquals('1981-01-01', $result['customer']['dateOfBirth']);
 
 
1144
  $this->assertEquals(
1145
  $billingAddress->getTelephone(), $result['customer']['phone']
1146
  );
@@ -1164,9 +1168,13 @@ class Netresearch_Billsafe_Test_Helper_OrderTest
1164
  $this->assertEquals('bar', $result['url']['cancel']);
1165
  }
1166
 
1167
- protected function getBillingAddress()
1168
  {
1169
- $billingAddress = Mage::getModel('sales/order_address');
 
 
 
 
1170
  $billingAddress->setStreet('Nonnenstr. 11');
1171
  $billingAddress->setCompany('NR');
1172
  $billingAddress->setFirstname('Net');
1029
  */
1030
  public function testGetPreparedOrderParams()
1031
  {
1032
+ $order = Mage::getModel('sales/order')->load(13);
1033
+ $billingAddress = $this->getBillingAddress();
1034
+ $order->setBillingAddress($billingAddress);
1035
  $sessionMock = $this->getModelMockBuilder('checkout/session')
1036
  ->disableOriginalConstructor(
1037
  ) // This one removes session_start and other methods usage
1044
  ->getMock();
1045
  $this->replaceByMock('singleton', 'core/session', $sessionMock);
1046
 
1047
+ $fakeQuote = Mage::getModel('sales/quote');
1048
+ $billingAddressQuote = $this->getBillingAddress(false);
1049
+ $billingAddressQuote->setEmail('a@b.com');
1050
+ $fakeQuote->setBillingAddress($billingAddressQuote);
1051
  $cartMock = $this->getModelMock('checkout/cart', array('getQuote'));
1052
  $cartMock->expects($this->any())
1053
  ->method('getQuote')
1082
  ->method('buildArticleList')
1083
  ->will($this->returnValue(array('name' => 'item 1')));
1084
 
1085
+ $customer = Mage::getModel('customer/customer');
 
 
1086
  $order->setCustomer($customer);
1087
 
 
 
1088
  $result = $orderHelperMock->getPreparedOrderParams($order);
1089
 
1090
  $this->resultAssertions($result, $order, $dataHelperMock,
1133
  implode(' ', $billingAddress->getStreet()),
1134
  $result['customer']['street']
1135
  );
 
1136
  $this->assertEquals(
1137
  $billingAddress->getPostcode(), $result['customer']['postcode']
1138
  );
1139
+
1140
  $this->assertEquals(
1141
  $billingAddress->getCity(), $result['customer']['city']
1142
  );
1143
+ $this->assertEquals($billingAddress->getCountry(), $result['customer']['country']);
1144
  $this->assertEquals('a@b.com', $result['customer']['email']);
1145
+ if (0 === strlen(trim($billingAddress->getCompany()))) {
1146
+ $this->assertEquals('1981-01-01', $result['customer']['dateOfBirth']);
1147
+ }
1148
  $this->assertEquals(
1149
  $billingAddress->getTelephone(), $result['customer']['phone']
1150
  );
1168
  $this->assertEquals('bar', $result['url']['cancel']);
1169
  }
1170
 
1171
+ protected function getBillingAddress($useForOrder = true)
1172
  {
1173
+ if ($useForOrder) {
1174
+ $billingAddress = Mage::getModel('sales/order_address');
1175
+ } else {
1176
+ $billingAddress = Mage::getModel('sales/quote_address');
1177
+ }
1178
  $billingAddress->setStreet('Nonnenstr. 11');
1179
  $billingAddress->setCompany('NR');
1180
  $billingAddress->setFirstname('Net');
app/code/community/Netresearch/Billsafe/Test/Model/ClientTest.php CHANGED
@@ -32,6 +32,12 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
32
  ->will($this->returnValue($params));
33
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
34
 
 
 
 
 
 
 
35
  $result = Mage::getModel('billsafe/client')->prevalidateOrder($params);
36
  $this->assertTrue(is_array($result));
37
  $this->assertArrayHasKey("ack", $result);
@@ -72,15 +78,20 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
72
  ->will($this->returnValue($response));
73
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
74
 
 
 
 
 
 
 
75
  $orderHelperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
76
  $orderHelperMock->expects($this->any())
77
  ->method('buildArticleList')
78
  ->will($this->returnValue(array()));
 
79
 
80
  $this->setExpectedException('Mage_Exception');
81
  Mage::getModel('billsafe/client')->updateArticleList($order, $context);
82
-
83
-
84
  }
85
 
86
  /**
@@ -106,17 +117,21 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
106
  $baseClientMock->expects($this->any())
107
  ->method('updateArticleList')
108
  ->will($this->returnValue($response));
109
-
110
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
111
 
 
 
 
 
 
 
112
  $orderHelperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
113
  $orderHelperMock->expects($this->any())
114
  ->method('buildArticleList')
115
  ->will($this->returnValue(array('amount' => 10, 'tax_amount' => '11')));
116
  $this->replaceByMock('helper', 'billsafe/order', $orderHelperMock);
117
- $client = Mage::getModel('billsafe/client');
118
-
119
 
 
120
  $result = $client->updateArticleList($order, $context);
121
  Mage::unregister('current_creditmemo');
122
  $this->assertEquals($client, $result);
@@ -142,9 +157,19 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
142
  $baseClientMock->expects($this->any())
143
  ->method('updateArticleList')
144
  ->will($this->returnValue($response));
145
-
146
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
147
 
 
 
 
 
 
 
 
 
 
 
 
148
  $orderHelperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
149
  $orderHelperMock->expects($this->any())
150
  ->method('buildArticleList')
@@ -159,6 +184,13 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
159
 
160
  public function testGetAgreedHandlingCharges()
161
  {
 
 
 
 
 
 
 
162
  $response = new stdClass();
163
  $response->agreedCharge = null;
164
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getAgreedHandlingCharges'));
@@ -170,6 +202,7 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
170
  $client = Mage::getModel('billsafe/client');
171
  $this->assertEquals(null, $client->getAgreedHandlingCharges());
172
 
 
173
  $response = new stdClass();
174
  $response->agreedCharge = 200;
175
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getAgreedHandlingCharges'));
@@ -181,6 +214,7 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
181
  $client = Mage::getModel('billsafe/client');
182
  $this->assertEquals(200, $client->getAgreedHandlingCharges());
183
 
 
184
  $response = new stdClass();
185
  $response->agreedCharge = new stdClass();
186
  $response->agreedCharge->foo = 300;
@@ -197,16 +231,24 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
197
 
198
  public function testGetPaymentInstruction()
199
  {
 
 
 
 
 
 
 
200
  $response = new stdClass();
201
  $response->ack = 'ERR';
202
  $response->errorList = new stdClass();
203
  $response->errorList->code = 302;
 
204
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getPaymentInstruction'));
205
  $baseClientMock->expects($this->any())
206
  ->method('getPaymentInstruction')
207
  ->will($this->returnValue($response));
208
-
209
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
 
210
  $client = Mage::getModel('billsafe/client');
211
  $order = new Varien_Object();
212
  $order->setIncrementId(1);
@@ -216,27 +258,30 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
216
  $response = new stdClass();
217
  $response->ack = 'OK';
218
  $response->instruction = 'instruction';
 
219
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getPaymentInstruction'));
220
  $baseClientMock->expects($this->any())
221
  ->method('getPaymentInstruction')
222
  ->will($this->returnValue($response));
223
-
224
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
 
225
  $client = Mage::getModel('billsafe/client');
226
  $order = new Varien_Object();
227
  $order->setIncrementId(1);
228
  $this->assertEquals('instruction', $client->getPaymentInstruction($order));
229
 
 
230
  $response = new stdClass();
231
  $response->ack = 'ERR';
232
  $response->errorList = new stdClass();
233
  $response->errorList->code = 303;
 
234
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getPaymentInstruction'));
235
  $baseClientMock->expects($this->any())
236
  ->method('getPaymentInstruction')
237
  ->will($this->returnValue($response));
238
-
239
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
 
240
  $client = Mage::getModel('billsafe/client');
241
  $order = new Varien_Object();
242
  $order->setIncrementId(1);
@@ -250,6 +295,12 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
250
 
251
  public function testGetConfig()
252
  {
 
 
 
 
 
 
253
  $config = Mage::getModel('billsafe/client')->getConfig();
254
  $this->assertInstanceOf('Netresearch_Billsafe_Model_Config', $config);
255
  }
@@ -260,10 +311,16 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
260
  $configMock->expects($this->any())
261
  ->method('getMerchantId')
262
  ->will($this->returnValue('12345'));
 
 
 
 
 
 
 
263
  $model = Mage::getModel('billsafe/client');
264
  $this->assertInstanceOf('Netresearch_Billsafe_Model_Client', $model->setConfig($configMock));
265
  $this->assertEquals($configMock->getMerchantId(), $model->getConfig()->getMerchantId());
266
-
267
  }
268
 
269
  public function testGetOptions()
@@ -275,9 +332,14 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
275
  $baseClientMock->expects($this->any())
276
  ->method('getConnectionTimeout')
277
  ->will($this->returnValue(30));
278
-
279
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
280
 
 
 
 
 
 
 
281
  $result = Mage::getModel('billsafe/client')->getOptions();
282
  $this->assertTrue(is_array($result));
283
  $this->assertEquals(1, $result['merchantId']);
@@ -290,13 +352,19 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
290
  $response = new stdClass();
291
  $response->ack = 'OK';
292
  $response->status = 'ACCEPTED';
293
- $baseClientMock = $this->getModelMock('billsafe/client_base', array('getTransactionResult'));
294
 
 
295
  $baseClientMock->expects($this->any())
296
  ->method('getTransactionResult')
297
  ->will($this->returnValue($response));
298
-
299
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
 
 
 
 
 
 
 
300
  $client = Mage::getModel('billsafe/client');
301
  try {
302
  $this->assertTrue($client->isValid());
@@ -325,16 +393,20 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
325
  $response = new stdClass();
326
  $response->ack = 'OK';
327
  $response->status = 'ACCEPTED';
328
- $baseClientMock = $this->getModelMock('billsafe/client_base', array('prepareOrder'));
329
-
330
  $order = Mage::getModel('sales/order')->load(13);
331
 
 
332
  $baseClientMock->expects($this->any())
333
  ->method('prepareOrder')
334
  ->will($this->returnValue($response));
335
-
336
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
337
 
 
 
 
 
 
 
338
  $helperMock = $this->getHelperMock('billsafe/order', array('getPreparedOrderParams'));
339
  $helperMock->expects($this->any())
340
  ->method('getPreparedOrderParams')
@@ -353,15 +425,20 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
353
  $response = new stdClass();
354
  $response->ack = 'OK';
355
  $response->status = 'ACCEPTED';
356
- $baseClientMock = $this->getModelMock('billsafe/client_base', array('reportShipment'));
357
-
358
  $shipment = Mage::getModel('sales/order_shipment')->load(1);
 
 
359
  $baseClientMock->expects($this->any())
360
  ->method('reportShipment')
361
  ->will($this->returnValue($response));
362
-
363
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
364
 
 
 
 
 
 
 
365
  $helperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
366
  $helperMock->expects($this->any())
367
  ->method('buildArticleList')
@@ -370,7 +447,6 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
370
 
371
  $client = Mage::getModel('billsafe/client');
372
  $this->assertEquals($client, $client->reportShipment($shipment));
373
-
374
  }
375
 
376
  /**
@@ -382,12 +458,18 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
382
  $response = new stdClass();
383
  $response->ack = 'NOK';
384
  $response->status = 'NOT ACCEPTED';
385
- $baseClientMock = $this->getModelMock('billsafe/client_base', array('reportShipment'));
386
 
387
- $shipment = Mage::getModel('sales/order_shipment')->load(1);
388
  $baseClientMock->expects($this->any())
389
  ->method('reportShipment')
390
  ->will($this->returnValue($response));
 
 
 
 
 
 
 
391
 
392
  $helperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
393
  $helperMock->expects($this->any())
@@ -395,8 +477,6 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
395
  ->will($this->returnValue(array()));
396
  $this->replaceByMock('helper', 'billsafe/order', $helperMock);
397
 
398
- $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
399
-
400
  $client = Mage::getModel('billsafe/client');
401
  try {
402
  $client->reportShipment($shipment);
@@ -411,12 +491,19 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
411
  $response->ack = 'OK';
412
  $response->status = 'ACCEPTED';
413
  $response->transactionId = '0815';
414
- $baseClientMock = $this->getModelMock('billsafe/client_base', array('processOrder'));
415
 
 
416
  $baseClientMock->expects($this->any())
417
  ->method('processOrder')
418
  ->will($this->returnValue($response));
419
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
 
 
 
 
 
 
 
420
  $client = Mage::getModel('billsafe/client');
421
  $result = $client->processOrder(array());
422
  $this->assertTrue($result['success']);
@@ -430,12 +517,19 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
430
  $response->status = 'DECLINED';
431
  $response->declineReason = new stdClass();
432
  $response->declineReason->buyerMessage = 'Du kommst hier net rein';
433
- $baseClientMock = $this->getModelMock('billsafe/client_base', array('processOrder'));
434
 
 
435
  $baseClientMock->expects($this->any())
436
  ->method('processOrder')
437
  ->will($this->returnValue($response));
438
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
 
 
 
 
 
 
 
439
  $client = Mage::getModel('billsafe/client');
440
  $result = $client->processOrder(array());
441
  $this->assertFalse($result['success']);
@@ -448,12 +542,19 @@ class Netresearch_Billsafe_Test_Model_ClientTest extends EcomDev_PHPUnit_Test_Ca
448
  $response->ack = 'NOK';
449
  $response->errorList = new stdClass();
450
  $response->errorList->message = 'Request failed';
451
- $baseClientMock = $this->getModelMock('billsafe/client_base', array('processOrder'));
452
 
 
453
  $baseClientMock->expects($this->any())
454
  ->method('processOrder')
455
  ->will($this->returnValue($response));
456
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
 
 
 
 
 
 
 
457
  $client = Mage::getModel('billsafe/client');
458
  $result = $client->processOrder(array());
459
  $this->assertFalse($result['success']);
32
  ->will($this->returnValue($params));
33
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
34
 
35
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
36
+ $dataHelperMock->expects($this->any())
37
+ ->method('getStoreIdfromQuote')
38
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
39
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
40
+
41
  $result = Mage::getModel('billsafe/client')->prevalidateOrder($params);
42
  $this->assertTrue(is_array($result));
43
  $this->assertArrayHasKey("ack", $result);
78
  ->will($this->returnValue($response));
79
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
80
 
81
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
82
+ $dataHelperMock->expects($this->any())
83
+ ->method('getStoreIdfromQuote')
84
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
85
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
86
+
87
  $orderHelperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
88
  $orderHelperMock->expects($this->any())
89
  ->method('buildArticleList')
90
  ->will($this->returnValue(array()));
91
+ $this->replaceByMock('helper', 'billsafe/order', $orderHelperMock);
92
 
93
  $this->setExpectedException('Mage_Exception');
94
  Mage::getModel('billsafe/client')->updateArticleList($order, $context);
 
 
95
  }
96
 
97
  /**
117
  $baseClientMock->expects($this->any())
118
  ->method('updateArticleList')
119
  ->will($this->returnValue($response));
 
120
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
121
 
122
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
123
+ $dataHelperMock->expects($this->any())
124
+ ->method('getStoreIdfromQuote')
125
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
126
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
127
+
128
  $orderHelperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
129
  $orderHelperMock->expects($this->any())
130
  ->method('buildArticleList')
131
  ->will($this->returnValue(array('amount' => 10, 'tax_amount' => '11')));
132
  $this->replaceByMock('helper', 'billsafe/order', $orderHelperMock);
 
 
133
 
134
+ $client = Mage::getModel('billsafe/client');
135
  $result = $client->updateArticleList($order, $context);
136
  Mage::unregister('current_creditmemo');
137
  $this->assertEquals($client, $result);
157
  $baseClientMock->expects($this->any())
158
  ->method('updateArticleList')
159
  ->will($this->returnValue($response));
 
160
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
161
 
162
+ $response = new stdClass();
163
+ $response->ack = 'ERR';
164
+ $response->errorList = new stdClass();
165
+ $response->errorList->code = 302;
166
+
167
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
168
+ $dataHelperMock->expects($this->any())
169
+ ->method('getStoreIdfromQuote')
170
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
171
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
172
+
173
  $orderHelperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
174
  $orderHelperMock->expects($this->any())
175
  ->method('buildArticleList')
184
 
185
  public function testGetAgreedHandlingCharges()
186
  {
187
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
188
+ $dataHelperMock->expects($this->any())
189
+ ->method('getStoreIdfromQuote')
190
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
191
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
192
+
193
+
194
  $response = new stdClass();
195
  $response->agreedCharge = null;
196
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getAgreedHandlingCharges'));
202
  $client = Mage::getModel('billsafe/client');
203
  $this->assertEquals(null, $client->getAgreedHandlingCharges());
204
 
205
+
206
  $response = new stdClass();
207
  $response->agreedCharge = 200;
208
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getAgreedHandlingCharges'));
214
  $client = Mage::getModel('billsafe/client');
215
  $this->assertEquals(200, $client->getAgreedHandlingCharges());
216
 
217
+
218
  $response = new stdClass();
219
  $response->agreedCharge = new stdClass();
220
  $response->agreedCharge->foo = 300;
231
 
232
  public function testGetPaymentInstruction()
233
  {
234
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
235
+ $dataHelperMock->expects($this->any())
236
+ ->method('getStoreIdfromQuote')
237
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
238
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
239
+
240
+
241
  $response = new stdClass();
242
  $response->ack = 'ERR';
243
  $response->errorList = new stdClass();
244
  $response->errorList->code = 302;
245
+
246
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getPaymentInstruction'));
247
  $baseClientMock->expects($this->any())
248
  ->method('getPaymentInstruction')
249
  ->will($this->returnValue($response));
 
250
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
251
+
252
  $client = Mage::getModel('billsafe/client');
253
  $order = new Varien_Object();
254
  $order->setIncrementId(1);
258
  $response = new stdClass();
259
  $response->ack = 'OK';
260
  $response->instruction = 'instruction';
261
+
262
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getPaymentInstruction'));
263
  $baseClientMock->expects($this->any())
264
  ->method('getPaymentInstruction')
265
  ->will($this->returnValue($response));
 
266
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
267
+
268
  $client = Mage::getModel('billsafe/client');
269
  $order = new Varien_Object();
270
  $order->setIncrementId(1);
271
  $this->assertEquals('instruction', $client->getPaymentInstruction($order));
272
 
273
+
274
  $response = new stdClass();
275
  $response->ack = 'ERR';
276
  $response->errorList = new stdClass();
277
  $response->errorList->code = 303;
278
+
279
  $baseClientMock = $this->getModelMock('billsafe/client_base', array('getPaymentInstruction'));
280
  $baseClientMock->expects($this->any())
281
  ->method('getPaymentInstruction')
282
  ->will($this->returnValue($response));
 
283
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
284
+
285
  $client = Mage::getModel('billsafe/client');
286
  $order = new Varien_Object();
287
  $order->setIncrementId(1);
295
 
296
  public function testGetConfig()
297
  {
298
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
299
+ $dataHelperMock->expects($this->any())
300
+ ->method('getStoreIdfromQuote')
301
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
302
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
303
+
304
  $config = Mage::getModel('billsafe/client')->getConfig();
305
  $this->assertInstanceOf('Netresearch_Billsafe_Model_Config', $config);
306
  }
311
  $configMock->expects($this->any())
312
  ->method('getMerchantId')
313
  ->will($this->returnValue('12345'));
314
+
315
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
316
+ $dataHelperMock->expects($this->any())
317
+ ->method('getStoreIdfromQuote')
318
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
319
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
320
+
321
  $model = Mage::getModel('billsafe/client');
322
  $this->assertInstanceOf('Netresearch_Billsafe_Model_Client', $model->setConfig($configMock));
323
  $this->assertEquals($configMock->getMerchantId(), $model->getConfig()->getMerchantId());
 
324
  }
325
 
326
  public function testGetOptions()
332
  $baseClientMock->expects($this->any())
333
  ->method('getConnectionTimeout')
334
  ->will($this->returnValue(30));
 
335
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
336
 
337
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
338
+ $dataHelperMock->expects($this->any())
339
+ ->method('getStoreIdfromQuote')
340
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
341
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
342
+
343
  $result = Mage::getModel('billsafe/client')->getOptions();
344
  $this->assertTrue(is_array($result));
345
  $this->assertEquals(1, $result['merchantId']);
352
  $response = new stdClass();
353
  $response->ack = 'OK';
354
  $response->status = 'ACCEPTED';
 
355
 
356
+ $baseClientMock = $this->getModelMock('billsafe/client_base', array('getTransactionResult'));
357
  $baseClientMock->expects($this->any())
358
  ->method('getTransactionResult')
359
  ->will($this->returnValue($response));
 
360
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
361
+
362
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
363
+ $dataHelperMock->expects($this->any())
364
+ ->method('getStoreIdfromQuote')
365
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
366
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
367
+
368
  $client = Mage::getModel('billsafe/client');
369
  try {
370
  $this->assertTrue($client->isValid());
393
  $response = new stdClass();
394
  $response->ack = 'OK';
395
  $response->status = 'ACCEPTED';
 
 
396
  $order = Mage::getModel('sales/order')->load(13);
397
 
398
+ $baseClientMock = $this->getModelMock('billsafe/client_base', array('prepareOrder'));
399
  $baseClientMock->expects($this->any())
400
  ->method('prepareOrder')
401
  ->will($this->returnValue($response));
 
402
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
403
 
404
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
405
+ $dataHelperMock->expects($this->any())
406
+ ->method('getStoreIdfromQuote')
407
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
408
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
409
+
410
  $helperMock = $this->getHelperMock('billsafe/order', array('getPreparedOrderParams'));
411
  $helperMock->expects($this->any())
412
  ->method('getPreparedOrderParams')
425
  $response = new stdClass();
426
  $response->ack = 'OK';
427
  $response->status = 'ACCEPTED';
 
 
428
  $shipment = Mage::getModel('sales/order_shipment')->load(1);
429
+
430
+ $baseClientMock = $this->getModelMock('billsafe/client_base', array('reportShipment'));
431
  $baseClientMock->expects($this->any())
432
  ->method('reportShipment')
433
  ->will($this->returnValue($response));
 
434
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
435
 
436
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
437
+ $dataHelperMock->expects($this->any())
438
+ ->method('getStoreIdfromQuote')
439
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
440
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
441
+
442
  $helperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
443
  $helperMock->expects($this->any())
444
  ->method('buildArticleList')
447
 
448
  $client = Mage::getModel('billsafe/client');
449
  $this->assertEquals($client, $client->reportShipment($shipment));
 
450
  }
451
 
452
  /**
458
  $response = new stdClass();
459
  $response->ack = 'NOK';
460
  $response->status = 'NOT ACCEPTED';
 
461
 
462
+ $baseClientMock = $this->getModelMock('billsafe/client_base', array('reportShipment'));
463
  $baseClientMock->expects($this->any())
464
  ->method('reportShipment')
465
  ->will($this->returnValue($response));
466
+ $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
467
+
468
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
469
+ $dataHelperMock->expects($this->any())
470
+ ->method('getStoreIdfromQuote')
471
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
472
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
473
 
474
  $helperMock = $this->getHelperMock('billsafe/order', array('buildArticleList'));
475
  $helperMock->expects($this->any())
477
  ->will($this->returnValue(array()));
478
  $this->replaceByMock('helper', 'billsafe/order', $helperMock);
479
 
 
 
480
  $client = Mage::getModel('billsafe/client');
481
  try {
482
  $client->reportShipment($shipment);
491
  $response->ack = 'OK';
492
  $response->status = 'ACCEPTED';
493
  $response->transactionId = '0815';
 
494
 
495
+ $baseClientMock = $this->getModelMock('billsafe/client_base', array('processOrder'));
496
  $baseClientMock->expects($this->any())
497
  ->method('processOrder')
498
  ->will($this->returnValue($response));
499
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
500
+
501
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
502
+ $dataHelperMock->expects($this->any())
503
+ ->method('getStoreIdfromQuote')
504
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
505
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
506
+
507
  $client = Mage::getModel('billsafe/client');
508
  $result = $client->processOrder(array());
509
  $this->assertTrue($result['success']);
517
  $response->status = 'DECLINED';
518
  $response->declineReason = new stdClass();
519
  $response->declineReason->buyerMessage = 'Du kommst hier net rein';
 
520
 
521
+ $baseClientMock = $this->getModelMock('billsafe/client_base', array('processOrder'));
522
  $baseClientMock->expects($this->any())
523
  ->method('processOrder')
524
  ->will($this->returnValue($response));
525
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
526
+
527
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
528
+ $dataHelperMock->expects($this->any())
529
+ ->method('getStoreIdfromQuote')
530
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
531
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
532
+
533
  $client = Mage::getModel('billsafe/client');
534
  $result = $client->processOrder(array());
535
  $this->assertFalse($result['success']);
542
  $response->ack = 'NOK';
543
  $response->errorList = new stdClass();
544
  $response->errorList->message = 'Request failed';
 
545
 
546
+ $baseClientMock = $this->getModelMock('billsafe/client_base', array('processOrder'));
547
  $baseClientMock->expects($this->any())
548
  ->method('processOrder')
549
  ->will($this->returnValue($response));
550
  $this->replaceByMock('model', 'billsafe/client_base', $baseClientMock);
551
+
552
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
553
+ $dataHelperMock->expects($this->any())
554
+ ->method('getStoreIdfromQuote')
555
+ ->will($this->returnValue(Mage::app()->getStore()->getId()));
556
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
557
+
558
  $client = Mage::getModel('billsafe/client');
559
  $result = $client->processOrder(array());
560
  $this->assertFalse($result['success']);
app/code/community/Netresearch/Billsafe/Test/Model/ConfigTest.php CHANGED
@@ -3,6 +3,10 @@
3
  class Netresearch_Billsafe_Test_Model_ConfigTest
4
  extends EcomDev_PHPUnit_Test_Case
5
  {
 
 
 
 
6
 
7
  public function setUp()
8
  {
@@ -478,8 +482,7 @@ class Netresearch_Billsafe_Test_Model_ConfigTest
478
 
479
  public function testGetMerchantPublicKey()
480
  {
481
- $path
482
- = Netresearch_Billsafe_Model_Config::CONFIG_PATH_BILLSAFE_PUBLIC_KEY;
483
  $storeFirst = Mage::app()->getStore(0)->load(0);
484
 
485
  $storeFirst->setConfig($path, 'default public key');
@@ -498,6 +501,16 @@ class Netresearch_Billsafe_Test_Model_ConfigTest
498
  */
499
  }
500
 
 
 
 
 
 
 
 
 
 
 
501
  public function testGetMaxFee()
502
  {
503
  $sessionMock = $this->getModelMockBuilder('checkout/session')
3
  class Netresearch_Billsafe_Test_Model_ConfigTest
4
  extends EcomDev_PHPUnit_Test_Case
5
  {
6
+ /**
7
+ * @var Netresearch_Billsafe_Model_Config
8
+ */
9
+ protected $config;
10
 
11
  public function setUp()
12
  {
482
 
483
  public function testGetMerchantPublicKey()
484
  {
485
+ $path = Netresearch_Billsafe_Model_Config::CONFIG_PATH_BILLSAFE_PUBLIC_KEY;
 
486
  $storeFirst = Mage::app()->getStore(0)->load(0);
487
 
488
  $storeFirst->setConfig($path, 'default public key');
501
  */
502
  }
503
 
504
+ public function testGetDefaultCustomerGender()
505
+ {
506
+ $defaultGender = 'Female';
507
+ $path = Netresearch_Billsafe_Model_Config::CONFIG_PATH_BILLSAFE_CUSTOMER_GENDER;
508
+
509
+ $code = Mage_Core_Model_Store::DEFAULT_CODE;
510
+ Mage::app()->getStore($code)->setConfig($path, $defaultGender);
511
+ $this->assertEquals($this->config->getDefaultCustomerGender($code), $defaultGender);
512
+ }
513
+
514
  public function testGetMaxFee()
515
  {
516
  $sessionMock = $this->getModelMockBuilder('checkout/session')
app/code/community/Netresearch/Billsafe/Test/Model/PaymentTest.php CHANGED
@@ -56,6 +56,32 @@ class Netresearch_Billsafe_Test_Model_PaymentTest extends EcomDev_PHPUnit_Test_C
56
  $this->assertEquals('foo', $model->getUnavailableMessage());
57
  }
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  /**
60
  * @loadFixture ../../../var/fixtures/orders.yaml
61
  */
@@ -201,6 +227,92 @@ class Netresearch_Billsafe_Test_Model_PaymentTest extends EcomDev_PHPUnit_Test_C
201
  $this->assertEquals(Mage_Sales_Model_Order::STATE_PROCESSING, $order->getState());
202
  }
203
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  /**
205
  * @loadFixture ../../../var/fixtures/orders.yaml
206
  */
@@ -365,10 +477,13 @@ class Netresearch_Billsafe_Test_Model_PaymentTest extends EcomDev_PHPUnit_Test_C
365
  ->will($this->returnValue(10));
366
  $this->replaceByMock('model', 'billsafe/config', $configModelMock);
367
 
368
- $paymentModelMock = $this->getModelMock('billsafe/payment', array('getConfigData'));
369
  $paymentModelMock->expects($this->any())
370
  ->method('getConfigData')
371
  ->will($this->returnValue(true));
 
 
 
372
  $this->assertFalse($paymentModelMock->isAvailable($quote));
373
  }
374
 
@@ -410,10 +525,13 @@ class Netresearch_Billsafe_Test_Model_PaymentTest extends EcomDev_PHPUnit_Test_C
410
 
411
  $this->replaceByMock('model', 'billsafe/config', $configModelMock);
412
 
413
- $paymentModelMock = $this->getModelMock('billsafe/payment', array('getConfigData'));
414
  $paymentModelMock->expects($this->any())
415
  ->method('getConfigData')
416
  ->will($this->returnValue(true));
 
 
 
417
 
418
  $feeProduct = new Varien_Object();
419
  $feeProduct->setExceedsMaxAmount(true);
@@ -470,10 +588,13 @@ class Netresearch_Billsafe_Test_Model_PaymentTest extends EcomDev_PHPUnit_Test_C
470
 
471
  $this->replaceByMock('model', 'billsafe/config', $configModelMock);
472
 
473
- $paymentModelMock = $this->getModelMock('billsafe/payment', array('getConfigData'));
474
  $paymentModelMock->expects($this->any())
475
  ->method('getConfigData')
476
  ->will($this->returnValue(true));
 
 
 
477
 
478
  $feeProduct = new Varien_Object();
479
  $feeProduct->setExceedsMaxAmount(false);
@@ -521,11 +642,15 @@ class Netresearch_Billsafe_Test_Model_PaymentTest extends EcomDev_PHPUnit_Test_C
521
 
522
  $this->replaceByMock('model', 'billsafe/config', $configModelMock);
523
 
524
- $paymentModelMock = $this->getModelMock('billsafe/payment', array('getConfigData'));
525
  $paymentModelMock->expects($this->any())
526
  ->method('getConfigData')
527
  ->will($this->returnValue(true));
528
 
 
 
 
 
529
  $feeProduct = new Varien_Object();
530
 
531
  $feeDataHelperMock = $this->getHelperMock('paymentfee/data', array('getUpdatedFeeProduct'));
@@ -579,7 +704,8 @@ class Netresearch_Billsafe_Test_Model_PaymentTest extends EcomDev_PHPUnit_Test_C
579
 
580
  $paymentModelMock = $this->getModelMock('billsafe/payment', array(
581
  'getConfigData',
582
- 'checkIfAllItemsAreVirtual'
 
583
  )
584
  );
585
  $paymentModelMock->expects($this->any())
@@ -599,6 +725,76 @@ class Netresearch_Billsafe_Test_Model_PaymentTest extends EcomDev_PHPUnit_Test_C
599
  $this->replaceByMock('helper', 'paymentfee/data', $feeDataHelperMock);
600
 
601
  $this->assertTrue($paymentModelMock->isAvailable($quote));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
602
  }
603
 
604
  /**
@@ -761,4 +957,26 @@ class Netresearch_Billsafe_Test_Model_PaymentTest extends EcomDev_PHPUnit_Test_C
761
  ->will($this->returnValue($client));
762
  $this->assertEquals('', $paymentModelMock->getOrderPlaceRedirectUrl());
763
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
764
  }
56
  $this->assertEquals('foo', $model->getUnavailableMessage());
57
  }
58
 
59
+ /**
60
+ * @loadFixture ../../../var/fixtures/orders.yaml
61
+ * @expectedException Mage_Core_Exception
62
+ */
63
+ public function testPrevalidateOrderWithException()
64
+ {
65
+ $quote = Mage::getModel('sales/quote')->load(1);
66
+ $fakeCheckoutSession = $this->getModelMock('checkout/session', array('init', 'save'));
67
+ $this->replaceByMock('model', 'checkout/session', $fakeCheckoutSession);
68
+ $fakeCustomerSession = $this->getModelMock('customer/session', array('init', 'save'));
69
+ $this->replaceByMock('model', 'customer/session', $fakeCustomerSession);
70
+ $fakeResponse = new stdClass();
71
+ $fakeResponse->ack = 'OK';
72
+ $invoice = new stdClass();
73
+ $invoice->isAvailable = true;
74
+ $fakeResponse->invoice = $invoice;
75
+
76
+ $helperMock = $this->getHelperMock('billsafe/order', array('prevalidateOrder'));
77
+ $helperMock->expects($this->any())
78
+ ->method('prevalidateOrder')
79
+ ->will($this->throwException(new Exception()));
80
+ $this->replaceByMock('helper', 'billsafe/order', $helperMock);
81
+ $model = Mage::getModel('billsafe/payment');
82
+ $model->prevalidateOrder($quote);
83
+ }
84
+
85
  /**
86
  * @loadFixture ../../../var/fixtures/orders.yaml
87
  */
227
  $this->assertEquals(Mage_Sales_Model_Order::STATE_PROCESSING, $order->getState());
228
  }
229
 
230
+ /**
231
+ * @loadFixture ../../../var/fixtures/orders.yaml
232
+ */
233
+ public function testAuthorizeWithToken()
234
+ {
235
+ $this->mockSessions();
236
+ $this->mockDataHelperForQuote();
237
+
238
+ $order = Mage::getModel('sales/order')->load(11);
239
+ $payment = $order->getPayment();
240
+ $amount = $order->getBaseGrandTotal();
241
+ $infoInstance = new Varien_Object();
242
+ $infoInstance->setOrder($order);
243
+
244
+ $configMock = $this->getModelMock('billsafe/config', array(
245
+ 'isBillSafeDirectEnabled',
246
+ 'getBillSafeOrderStatus'
247
+ )
248
+ );
249
+ $configMock->expects($this->any())
250
+ ->method('isBillSafeDirectEnabled')
251
+ ->will($this->returnValue(false));
252
+
253
+ $configMock->expects($this->any())
254
+ ->method('getBillSafeOrderStatus')
255
+ ->will($this->returnValue('pending'));
256
+ $this->replaceByMock('model', 'billsafe/config', $configMock);
257
+
258
+ $fakeResponse = new Varien_Object();
259
+ $fakeResponse->setResponseToken('token');
260
+ $clientMock = $this->getModelMock('billsafe/client', array('prepareOrder'));
261
+ $clientMock->expects($this->once())
262
+ ->method('prepareOrder')
263
+ ->will($this->returnValue($fakeResponse));
264
+ $this->replaceByMock('model', 'billsafe/client', $clientMock);
265
+
266
+ $paymentModelMock = $this->getModelMock('billsafe/payment', array('getInfoInstance', 'cancel'));
267
+ $paymentModelMock->expects($this->any())
268
+ ->method('getInfoInstance')
269
+ ->will($this->returnValue($infoInstance));
270
+ $paymentModelMock->expects($this->any())
271
+ ->method('cancel')
272
+ ->will($this->returnValue(null));
273
+ $paymentModelMock->authorize($payment, $amount);
274
+ $this->assertEquals('token', Mage::registry(Netresearch_Billsafe_Model_Config::TOKEN_REGISTRY_KEY));
275
+
276
+ }
277
+
278
+ /**
279
+ * @loadFixture ../../../var/fixtures/orders.yaml
280
+ * @expectedException Mage_Core_Exception
281
+ */
282
+ public function testAuthorizeWithTokenFails()
283
+ {
284
+ $this->mockSessions();
285
+ $this->mockDataHelperForQuote();
286
+
287
+ $order = Mage::getModel('sales/order')->load(11);
288
+ ;
289
+ $infoInstance = new Varien_Object();
290
+ $infoInstance->setOrder($order);
291
+
292
+ $configMock = $this->getModelMock('billsafe/config', array(
293
+ 'isBillSafeDirectEnabled',
294
+ )
295
+ );
296
+ $configMock->expects($this->any())
297
+ ->method('isBillSafeDirectEnabled')
298
+ ->will($this->returnValue(false));
299
+
300
+ $clientMock = $this->getModelMock('billsafe/client', array('prepareOrder'));
301
+ $clientMock->expects($this->once())
302
+ ->method('prepareOrder')
303
+ ->will($this->throwException(new Exception('catch me')));
304
+ $this->replaceByMock('model', 'billsafe/client', $clientMock);
305
+ $paymentModelMock = $this->getModelMock('billsafe/payment', array('getInfoInstance', 'cancel'));
306
+ $paymentModelMock->expects($this->any())
307
+ ->method('getInfoInstance')
308
+ ->will($this->returnValue($infoInstance));
309
+ $paymentModelMock->expects($this->any())
310
+ ->method('cancel')
311
+ ->will($this->returnValue(null));
312
+ $paymentModelMock->authorize($order->getPayment(), $order->getBaseGrandTotal());
313
+
314
+ }
315
+
316
  /**
317
  * @loadFixture ../../../var/fixtures/orders.yaml
318
  */
477
  ->will($this->returnValue(10));
478
  $this->replaceByMock('model', 'billsafe/config', $configModelMock);
479
 
480
+ $paymentModelMock = $this->getModelMock('billsafe/payment', array('getConfigData', 'checkIfAllItemsAreVirtual'));
481
  $paymentModelMock->expects($this->any())
482
  ->method('getConfigData')
483
  ->will($this->returnValue(true));
484
+ $paymentModelMock->expects($this->any())
485
+ ->method('checkIfAllItemsAreVirtual')
486
+ ->will($this->returnValue(false));
487
  $this->assertFalse($paymentModelMock->isAvailable($quote));
488
  }
489
 
525
 
526
  $this->replaceByMock('model', 'billsafe/config', $configModelMock);
527
 
528
+ $paymentModelMock = $this->getModelMock('billsafe/payment', array('getConfigData', 'checkIfAllItemsAreVirtual'));
529
  $paymentModelMock->expects($this->any())
530
  ->method('getConfigData')
531
  ->will($this->returnValue(true));
532
+ $paymentModelMock->expects($this->any())
533
+ ->method('checkIfAllItemsAreVirtual')
534
+ ->will($this->returnValue(false));
535
 
536
  $feeProduct = new Varien_Object();
537
  $feeProduct->setExceedsMaxAmount(true);
588
 
589
  $this->replaceByMock('model', 'billsafe/config', $configModelMock);
590
 
591
+ $paymentModelMock = $this->getModelMock('billsafe/payment', array('getConfigData', 'checkIfAllItemsAreVirtual'));
592
  $paymentModelMock->expects($this->any())
593
  ->method('getConfigData')
594
  ->will($this->returnValue(true));
595
+ $paymentModelMock->expects($this->any())
596
+ ->method('checkIfAllItemsAreVirtual')
597
+ ->will($this->returnValue(false));
598
 
599
  $feeProduct = new Varien_Object();
600
  $feeProduct->setExceedsMaxAmount(false);
642
 
643
  $this->replaceByMock('model', 'billsafe/config', $configModelMock);
644
 
645
+ $paymentModelMock = $this->getModelMock('billsafe/payment', array('getConfigData', 'checkIfAllItemsAreVirtual'));
646
  $paymentModelMock->expects($this->any())
647
  ->method('getConfigData')
648
  ->will($this->returnValue(true));
649
 
650
+ $paymentModelMock->expects($this->any())
651
+ ->method('checkIfAllItemsAreVirtual')
652
+ ->will($this->returnValue(false));
653
+
654
  $feeProduct = new Varien_Object();
655
 
656
  $feeDataHelperMock = $this->getHelperMock('paymentfee/data', array('getUpdatedFeeProduct'));
704
 
705
  $paymentModelMock = $this->getModelMock('billsafe/payment', array(
706
  'getConfigData',
707
+ 'checkIfAllItemsAreVirtual',
708
+ 'prevalidateOrder'
709
  )
710
  );
711
  $paymentModelMock->expects($this->any())
725
  $this->replaceByMock('helper', 'paymentfee/data', $feeDataHelperMock);
726
 
727
  $this->assertTrue($paymentModelMock->isAvailable($quote));
728
+ $quote->getShippingAddress()->setStreet('not equal anymore');
729
+ $this->assertFalse($paymentModelMock->isAvailable($quote));
730
+ }
731
+
732
+ /**
733
+ * @loadFixture ../../../var/fixtures/orders.yaml
734
+ */
735
+ public function testIsAvailableReturnsFalseIfPrevalidateOrdercheckFails()
736
+ {
737
+
738
+ $tax = new Varien_Object();
739
+ $tax->setValue(10);
740
+ $quote = $this->getModelMock('sales/quote', array('getTotals'));
741
+ $quote->expects($this->any())
742
+ ->method('getTotals')
743
+ ->will($this->returnValue(array('tax' => $tax)));
744
+
745
+ $quote->setGrandTotal(110);
746
+
747
+ $sessionMock = $this->getModelMockBuilder('customer/session', array('getCustomer'))
748
+ ->disableOriginalConstructor() // This one removes session_start and other methods usage
749
+ ->getMock();
750
+ $customer = Mage::getModel('customer/customer');
751
+ $customer->setGroupId(1);
752
+ $sessionMock->expects($this->any())
753
+ ->method('getCustomer')
754
+ ->will($this->returnValue($customer));
755
+ $this->replaceByMock('singleton', 'customer/session', $sessionMock);
756
+
757
+ $configModelMock = $this->getModelMock('billsafe/config', array(
758
+ 'getBillSafeMinAmount',
759
+ 'getBillSafeMaxAmount',
760
+ )
761
+ );
762
+ $configModelMock->expects($this->any())
763
+ ->method('getBillSafeMinAmount')
764
+ ->will($this->returnValue(15));
765
+
766
+ $configModelMock->expects($this->any())
767
+ ->method('getBillSafeMaxAmount')
768
+ ->will($this->returnValue(999));
769
+
770
+ $this->replaceByMock('model', 'billsafe/config', $configModelMock);
771
+
772
+ $paymentModelMock = $this->getModelMock('billsafe/payment', array(
773
+ 'getConfigData',
774
+ 'checkIfAllItemsAreVirtual',
775
+ 'prevalidateOrder'
776
+ )
777
+ );
778
+ $paymentModelMock->expects($this->any())
779
+ ->method('checkIfAllItemsAreVirtual')
780
+ ->will($this->returnValue(false));
781
+
782
+ $paymentModelMock->expects($this->any())
783
+ ->method('getConfigData')
784
+ ->will($this->returnValue(true));
785
+ $paymentModelMock->expects($this->any())
786
+ ->method('prevalidateOrder')
787
+ ->will($this->throwException(new Mage_Core_Exception('test exception')));
788
+
789
+ $feeProduct = new Varien_Object();
790
+
791
+ $feeDataHelperMock = $this->getHelperMock('paymentfee/data', array('getUpdatedFeeProduct'));
792
+ $feeDataHelperMock->expects($this->any())
793
+ ->method('getUpdatedFeeProduct')
794
+ ->will($this->returnValue($feeProduct));
795
+ $this->replaceByMock('helper', 'paymentfee/data', $feeDataHelperMock);
796
+
797
+ $this->assertFalse($paymentModelMock->isAvailable($quote));
798
  }
799
 
800
  /**
957
  ->will($this->returnValue($client));
958
  $this->assertEquals('', $paymentModelMock->getOrderPlaceRedirectUrl());
959
  }
960
+
961
+ protected function mockSessions()
962
+ {
963
+ $sessionMock = $this->getModelMockBuilder('checkout/session')
964
+ ->disableOriginalConstructor() // This one removes session_start and other methods usage
965
+ ->getMock();
966
+ $this->replaceByMock('singleton', 'checkout/session', $sessionMock);
967
+
968
+ $sessionMock = $this->getModelMockBuilder('customer/session')
969
+ ->disableOriginalConstructor() // This one removes session_start and other methods usage
970
+ ->getMock();
971
+ $this->replaceByMock('singleton', 'customer/session', $sessionMock);
972
+ }
973
+
974
+ protected function mockDataHelperForQuote()
975
+ {
976
+ $dataHelperMock = $this->getHelperMock('billsafe/data', array('getStoreIdfromQuote'));
977
+ $dataHelperMock->expects($this->any())
978
+ ->method('getStoreIdfromQuote')
979
+ ->will($this->returnValue(null));
980
+ $this->replaceByMock('helper', 'billsafe/data', $dataHelperMock);
981
+ }
982
  }
app/code/community/Netresearch/Billsafe/controllers/PaymentController.php CHANGED
@@ -18,7 +18,7 @@ class Netresearch_Billsafe_PaymentController extends Mage_Core_Controller_Front_
18
  if (property_exists($response, 'declineReason') && property_exists($response->declineReason, 'buyerMessage')) {
19
  $msg = $response->declineReason->buyerMessage;
20
  }
21
- Mage::getSingleton('core/session')->addError(Mage::helper('billsafe')->__($msg));
22
 
23
  return $this->_redirect('checkout/cart');
24
  }
@@ -58,7 +58,7 @@ class Netresearch_Billsafe_PaymentController extends Mage_Core_Controller_Front_
58
  $this->cancelLastOrderAndRestoreCart();
59
  // Set flash message
60
  $msg = 'Billsafe payment has been cancelled';
61
- Mage::getSingleton('core/session')->addNotice($this->getHelper()->__($msg));
62
 
63
  return $this->_redirect('checkout/cart');
64
  }
18
  if (property_exists($response, 'declineReason') && property_exists($response->declineReason, 'buyerMessage')) {
19
  $msg = $response->declineReason->buyerMessage;
20
  }
21
+ Mage::getSingleton('checkout/session')->addError(Mage::helper('billsafe')->__($msg));
22
 
23
  return $this->_redirect('checkout/cart');
24
  }
58
  $this->cancelLastOrderAndRestoreCart();
59
  // Set flash message
60
  $msg = 'Billsafe payment has been cancelled';
61
+ Mage::getSingleton('checkout/session')->addNotice($this->getHelper()->__($msg));
62
 
63
  return $this->_redirect('checkout/cart');
64
  }
app/code/community/Netresearch/Billsafe/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Netresearch_Billsafe>
5
- <version>13.12.13</version>
6
  </Netresearch_Billsafe>
7
  </modules>
8
 
@@ -27,6 +27,7 @@
27
  <timeout>5</timeout>
28
  <allowspecific>1</allowspecific>
29
  <specificcountry>DE</specificcountry>
 
30
  </billsafe>
31
  </payment>
32
  <payment_services>
@@ -43,11 +44,18 @@
43
  <billsafe>
44
  <class>Netresearch_Billsafe_Model</class>
45
  </billsafe>
 
46
  <invoicepdf>
47
  <rewrite>
48
  <pdf_items_invoice_info>Netresearch_Billsafe_Model_Pdf_Items_Invoice_Info</pdf_items_invoice_info>
49
  </rewrite>
50
  </invoicepdf>
 
 
 
 
 
 
51
  </models>
52
  <helpers>
53
  <billsafe>
@@ -94,6 +102,15 @@
94
  </billsafe_observer>
95
  </observers>
96
  </sales_order_invoice_load_after>
 
 
 
 
 
 
 
 
 
97
  </events>
98
  </global>
99
  <adminhtml>
2
  <config>
3
  <modules>
4
  <Netresearch_Billsafe>
5
+ <version>14.03.27</version>
6
  </Netresearch_Billsafe>
7
  </modules>
8
 
27
  <timeout>5</timeout>
28
  <allowspecific>1</allowspecific>
29
  <specificcountry>DE</specificcountry>
30
+ <default_gender>Male</default_gender>
31
  </billsafe>
32
  </payment>
33
  <payment_services>
44
  <billsafe>
45
  <class>Netresearch_Billsafe_Model</class>
46
  </billsafe>
47
+ <!-- Symmetrics_InvoicePdf -->
48
  <invoicepdf>
49
  <rewrite>
50
  <pdf_items_invoice_info>Netresearch_Billsafe_Model_Pdf_Items_Invoice_Info</pdf_items_invoice_info>
51
  </rewrite>
52
  </invoicepdf>
53
+ <!-- FireGento_Pdf -->
54
+ <firegento_pdf>
55
+ <rewrite>
56
+ <engine_invoice_default>Netresearch_Billsafe_Model_Pdf_Engine_Invoice_Default</engine_invoice_default>
57
+ </rewrite>
58
+ </firegento_pdf>
59
  </models>
60
  <helpers>
61
  <billsafe>
102
  </billsafe_observer>
103
  </observers>
104
  </sales_order_invoice_load_after>
105
+ <firegento_pdf_invoice_insert_note>
106
+ <observers>
107
+ <billsafe_observer>
108
+ <type>singleton</type>
109
+ <class>billsafe/observer</class>
110
+ <method>firegentoPdfInvoiceInsertNotice</method>
111
+ </billsafe_observer>
112
+ </observers>
113
+ </firegento_pdf_invoice_insert_note>
114
  </events>
115
  </global>
116
  <adminhtml>
app/code/community/Netresearch/Billsafe/etc/system.xml CHANGED
@@ -299,6 +299,17 @@
299
  <active>1</active>
300
  </depends>
301
  </specificcountry>
 
 
 
 
 
 
 
 
 
 
 
302
  </fields>
303
  </billsafe>
304
  </groups>
299
  <active>1</active>
300
  </depends>
301
  </specificcountry>
302
+
303
+ <default_gender>
304
+ <label>Default Customer Gender</label>
305
+ <comment>If customer gender cannot be determined from account data, use this as default value.</comment>
306
+ <frontend_type>select</frontend_type>
307
+ <sort_order>130</sort_order>
308
+ <source_model>billsafe/adminhtml_system_config_source_gender</source_model>
309
+ <show_in_default>1</show_in_default>
310
+ <show_in_website>1</show_in_website>
311
+ <show_in_store>1</show_in_store>
312
+ </default_gender>
313
  </fields>
314
  </billsafe>
315
  </groups>
app/locale/de_DE/Netresearch_Billsafe.csv CHANGED
@@ -67,4 +67,7 @@
67
  "I agree with the <a href=""%s"" target=""_blank"">privacy policy</a>, the <a href=""%s"" target=""_blank"">credit check</a> of <a href=""%s"" target=""_blank"">Paypal</a>.", "Ich stimme den <a href=""%s"" target=""_blank"">Datenschutzgrundsätzen</a> und der <a href=""%s"" target=""_blank"">Bonitätsprüfung</a> von <a href=""%s"" target=""_blank"">PayPal</a> zu."
68
  "The <a href=""%s"" target=""_blank"">BillSAFE terms and conditions</a> are applied.", "Es gelten die <a href=""%s"" target=""_blank"">Allgemeinen Geschäftsbedingungen</a> für den Rechnungskauf."
69
  "Please select another payment method!", "Bitte wählen Sie eine andere Zahlungsart!"
70
-
 
 
 
67
  "I agree with the <a href=""%s"" target=""_blank"">privacy policy</a>, the <a href=""%s"" target=""_blank"">credit check</a> of <a href=""%s"" target=""_blank"">Paypal</a>.", "Ich stimme den <a href=""%s"" target=""_blank"">Datenschutzgrundsätzen</a> und der <a href=""%s"" target=""_blank"">Bonitätsprüfung</a> von <a href=""%s"" target=""_blank"">PayPal</a> zu."
68
  "The <a href=""%s"" target=""_blank"">BillSAFE terms and conditions</a> are applied.", "Es gelten die <a href=""%s"" target=""_blank"">Allgemeinen Geschäftsbedingungen</a> für den Rechnungskauf."
69
  "Please select another payment method!", "Bitte wählen Sie eine andere Zahlungsart!"
70
+ "Default Customer Gender","Standardwert für Geschlecht"
71
+ "If customer gender cannot be determined from account data, use this as default value.","Dieser Wert wird genutzt wenn keine Angaben in den Kundendaten gefunden werden konnten."
72
+ "Male","männlich"
73
+ "Female","weiblich"
doc/Netresearch_Billsafe/ChangeLog.pdf CHANGED
@@ -71,7 +71,7 @@ endobj
71
  % 'R7': class PDFInfo
72
  7 0 obj
73
  << /Author ()
74
- /CreationDate (D:20131213165217-01'00')
75
  /Keywords ()
76
  /Producer (ReportLab http://www.reportlab.com)
77
  /Subject (\(unspecified\))
@@ -87,7 +87,7 @@ endobj
87
  % 'R9': class PDFStream
88
  9 0 obj
89
  % page stream
90
- << /Length 7224 >>
91
  stream
92
  1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
93
  q
@@ -108,23 +108,25 @@ q
108
  1 0 0 1 62.69291 638.3307 cm
109
  Q
110
  q
111
- 1 0 0 1 62.69291 356.3307 cm
112
  1 1 1 rg
113
- n 0 282 469.8898 -18 re f*
114
  .878431 .878431 .878431 rg
115
- n 0 264 469.8898 -120 re f*
116
  1 1 1 rg
117
- n 0 144 469.8898 -54 re f*
118
  .878431 .878431 .878431 rg
119
- n 0 90 469.8898 -54 re f*
120
  1 1 1 rg
 
 
121
  n 0 36 469.8898 -36 re f*
122
  .960784 .960784 .862745 rg
123
- n 0 282 469.8898 -18 re f*
124
  0 .533333 .603922 rg
125
  BT /F1 10 Tf 12 TL ET
126
  q
127
- 1 0 0 1 6 267 cm
128
  q
129
  .960784 .960784 .862745 rg
130
  n 0 0 46.73622 12 re f*
@@ -135,7 +137,7 @@ BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 2.52811 0 Td (Revision) Tj T* -2.52811 0 Td
135
  Q
136
  Q
137
  q
138
- 1 0 0 1 64.73622 267 cm
139
  q
140
  .960784 .960784 .862745 rg
141
  n 0 0 46.73622 12 re f*
@@ -146,7 +148,7 @@ BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 12.53311 0 Td (Date) Tj T* -12.53311 0 Td E
146
  Q
147
  Q
148
  q
149
- 1 0 0 1 123.4724 267 cm
150
  q
151
  .960784 .960784 .862745 rg
152
  n 0 0 340.4173 12 re f*
@@ -158,6 +160,166 @@ Q
158
  Q
159
  0 0 0 rg
160
  q
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
  1 0 0 1 6 249 cm
162
  q
163
  0 0 0 rg
@@ -523,23 +685,24 @@ q
523
  1 j
524
  0 0 0 RG
525
  .25 w
 
526
  n 0 264 m 469.8898 264 l S
527
  n 0 144 m 469.8898 144 l S
528
  n 0 90 m 469.8898 90 l S
529
  n 0 36 m 469.8898 36 l S
530
- n 58.73622 0 m 58.73622 282 l S
531
- n 117.4724 0 m 117.4724 282 l S
532
- n 0 282 m 469.8898 282 l S
533
  n 0 0 m 469.8898 0 l S
534
- n 0 0 m 0 282 l S
535
- n 469.8898 0 m 469.8898 282 l S
536
  Q
537
  Q
538
  q
539
- 1 0 0 1 62.69291 356.3307 cm
540
  Q
541
  q
542
- 1 0 0 1 62.69291 356.3307 cm
543
  Q
544
  q
545
  1 0 0 1 426.3422 728.5039 cm
@@ -601,17 +764,17 @@ xref
601
  0000018047 00000 n
602
  0000018280 00000 n
603
  0000018385 00000 n
604
- 0000025711 00000 n
605
- 0000025794 00000 n
606
- 0000025887 00000 n
607
  trailer
608
  << /ID
609
  % ReportLab generated PDF document -- digest (http://www.reportlab.com)
610
- [(\017k\\\274$\306\026\250\023\333\237\206\333E_\330) (\017k\\\274$\306\026\250\023\333\237\206\333E_\330)]
611
 
612
  /Info 7 0 R
613
  /Root 6 0 R
614
  /Size 13 >>
615
  startxref
616
- 25934
617
  %%EOF
71
  % 'R7': class PDFInfo
72
  7 0 obj
73
  << /Author ()
74
+ /CreationDate (D:20140327143413-01'00')
75
  /Keywords ()
76
  /Producer (ReportLab http://www.reportlab.com)
77
  /Subject (\(unspecified\))
87
  % 'R9': class PDFStream
88
  9 0 obj
89
  % page stream
90
+ << /Length 9701 >>
91
  stream
92
  1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
93
  q
108
  1 0 0 1 62.69291 638.3307 cm
109
  Q
110
  q
111
+ 1 0 0 1 62.69291 212.3307 cm
112
  1 1 1 rg
113
+ n 0 426 469.8898 -18 re f*
114
  .878431 .878431 .878431 rg
115
+ n 0 408 469.8898 -144 re f*
116
  1 1 1 rg
117
+ n 0 264 469.8898 -120 re f*
118
  .878431 .878431 .878431 rg
119
+ n 0 144 469.8898 -54 re f*
120
  1 1 1 rg
121
+ n 0 90 469.8898 -54 re f*
122
+ .878431 .878431 .878431 rg
123
  n 0 36 469.8898 -36 re f*
124
  .960784 .960784 .862745 rg
125
+ n 0 426 469.8898 -18 re f*
126
  0 .533333 .603922 rg
127
  BT /F1 10 Tf 12 TL ET
128
  q
129
+ 1 0 0 1 6 411 cm
130
  q
131
  .960784 .960784 .862745 rg
132
  n 0 0 46.73622 12 re f*
137
  Q
138
  Q
139
  q
140
+ 1 0 0 1 64.73622 411 cm
141
  q
142
  .960784 .960784 .862745 rg
143
  n 0 0 46.73622 12 re f*
148
  Q
149
  Q
150
  q
151
+ 1 0 0 1 123.4724 411 cm
152
  q
153
  .960784 .960784 .862745 rg
154
  n 0 0 340.4173 12 re f*
160
  Q
161
  0 0 0 rg
162
  q
163
+ 1 0 0 1 6 393 cm
164
+ q
165
+ 0 0 0 rg
166
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (14.03.27) Tj T* ET
167
+ Q
168
+ Q
169
+ q
170
+ 1 0 0 1 64.73622 393 cm
171
+ q
172
+ 0 0 0 rg
173
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (2014-03-27) Tj T* ET
174
+ Q
175
+ Q
176
+ q
177
+ 1 0 0 1 123.4724 393 cm
178
+ q
179
+ 0 0 0 rg
180
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Features:) Tj T* ET
181
+ Q
182
+ Q
183
+ q
184
+ 1 0 0 1 123.4724 387 cm
185
+ Q
186
+ q
187
+ 1 0 0 1 123.4724 387 cm
188
+ Q
189
+ q
190
+ 1 0 0 1 123.4724 375 cm
191
+ 0 0 0 rg
192
+ BT /F1 10 Tf 12 TL ET
193
+ q
194
+ 1 0 0 1 6 -3 cm
195
+ q
196
+ 0 0 0 rg
197
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET
198
+ Q
199
+ Q
200
+ q
201
+ 1 0 0 1 23 -3 cm
202
+ q
203
+ 0 0 0 rg
204
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Configure customer default gender for API transmission) Tj T* ET
205
+ Q
206
+ Q
207
+ q
208
+ Q
209
+ Q
210
+ q
211
+ 1 0 0 1 123.4724 369 cm
212
+ Q
213
+ q
214
+ 1 0 0 1 123.4724 345 cm
215
+ 0 0 0 rg
216
+ BT /F1 10 Tf 12 TL ET
217
+ q
218
+ 1 0 0 1 6 9 cm
219
+ q
220
+ 0 0 0 rg
221
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET
222
+ Q
223
+ Q
224
+ q
225
+ 1 0 0 1 23 -3 cm
226
+ q
227
+ 0 0 0 rg
228
+ BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 8.534554 Tw (Modify FireGento_Pdf invoice printing according to BillSAFE) Tj T* 0 Tw (requirements) Tj T* ET
229
+ Q
230
+ Q
231
+ q
232
+ Q
233
+ Q
234
+ q
235
+ 1 0 0 1 123.4724 345 cm
236
+ Q
237
+ q
238
+ 1 0 0 1 123.4724 333 cm
239
+ q
240
+ 0 0 0 rg
241
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Improvements:) Tj T* ET
242
+ Q
243
+ Q
244
+ q
245
+ 1 0 0 1 123.4724 327 cm
246
+ Q
247
+ q
248
+ 1 0 0 1 123.4724 327 cm
249
+ Q
250
+ q
251
+ 1 0 0 1 123.4724 303 cm
252
+ 0 0 0 rg
253
+ BT /F1 10 Tf 12 TL ET
254
+ q
255
+ 1 0 0 1 6 9 cm
256
+ q
257
+ 0 0 0 rg
258
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET
259
+ Q
260
+ Q
261
+ q
262
+ 1 0 0 1 23 -3 cm
263
+ q
264
+ 0 0 0 rg
265
+ BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 3.921046 Tw (Obtain "Country Code" API parameter dynamically from customer) Tj T* 0 Tw (address) Tj T* ET
266
+ Q
267
+ Q
268
+ q
269
+ Q
270
+ Q
271
+ q
272
+ 1 0 0 1 123.4724 297 cm
273
+ Q
274
+ q
275
+ 1 0 0 1 123.4724 285 cm
276
+ 0 0 0 rg
277
+ BT /F1 10 Tf 12 TL ET
278
+ q
279
+ 1 0 0 1 6 -3 cm
280
+ q
281
+ 0 0 0 rg
282
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET
283
+ Q
284
+ Q
285
+ q
286
+ 1 0 0 1 23 -3 cm
287
+ q
288
+ 0 0 0 rg
289
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Display API error messages in customer session) Tj T* ET
290
+ Q
291
+ Q
292
+ q
293
+ Q
294
+ Q
295
+ q
296
+ 1 0 0 1 123.4724 279 cm
297
+ Q
298
+ q
299
+ 1 0 0 1 123.4724 267 cm
300
+ 0 0 0 rg
301
+ BT /F1 10 Tf 12 TL ET
302
+ q
303
+ 1 0 0 1 6 -3 cm
304
+ q
305
+ 0 0 0 rg
306
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET
307
+ Q
308
+ Q
309
+ q
310
+ 1 0 0 1 23 -3 cm
311
+ q
312
+ 0 0 0 rg
313
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Handle unavailable BillSAFE API) Tj T* ET
314
+ Q
315
+ Q
316
+ q
317
+ Q
318
+ Q
319
+ q
320
+ 1 0 0 1 123.4724 267 cm
321
+ Q
322
+ q
323
  1 0 0 1 6 249 cm
324
  q
325
  0 0 0 rg
685
  1 j
686
  0 0 0 RG
687
  .25 w
688
+ n 0 408 m 469.8898 408 l S
689
  n 0 264 m 469.8898 264 l S
690
  n 0 144 m 469.8898 144 l S
691
  n 0 90 m 469.8898 90 l S
692
  n 0 36 m 469.8898 36 l S
693
+ n 58.73622 0 m 58.73622 426 l S
694
+ n 117.4724 0 m 117.4724 426 l S
695
+ n 0 426 m 469.8898 426 l S
696
  n 0 0 m 469.8898 0 l S
697
+ n 0 0 m 0 426 l S
698
+ n 469.8898 0 m 469.8898 426 l S
699
  Q
700
  Q
701
  q
702
+ 1 0 0 1 62.69291 212.3307 cm
703
  Q
704
  q
705
+ 1 0 0 1 62.69291 212.3307 cm
706
  Q
707
  q
708
  1 0 0 1 426.3422 728.5039 cm
764
  0000018047 00000 n
765
  0000018280 00000 n
766
  0000018385 00000 n
767
+ 0000028188 00000 n
768
+ 0000028271 00000 n
769
+ 0000028364 00000 n
770
  trailer
771
  << /ID
772
  % ReportLab generated PDF document -- digest (http://www.reportlab.com)
773
+ [(\254rg\303\376\005\273\343\242\013\256\235]\010]P) (\254rg\303\376\005\273\343\242\013\256\235]\010]P)]
774
 
775
  /Info 7 0 R
776
  /Root 6 0 R
777
  /Size 13 >>
778
  startxref
779
+ 28411
780
  %%EOF
doc/Netresearch_Billsafe/README.pdf CHANGED
@@ -1339,7 +1339,7 @@ endobj
1339
  % 'R77': class PDFInfo
1340
  77 0 obj
1341
  << /Author ()
1342
- /CreationDate (D:20131213165214-01'00')
1343
  /Keywords ()
1344
  /Producer (ReportLab http://www.reportlab.com)
1345
  /Subject (\(unspecified\))
@@ -2307,174 +2307,191 @@ endobj
2307
  % 'R97': class PDFStream
2308
  97 0 obj
2309
  % page stream
2310
- << /Length 6710 >>
2311
  stream
2312
  1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
2313
  q
2314
- 1 0 0 1 62.69291 240.3307 cm
2315
  1 1 1 rg
2316
- n 0 468 469.8898 -54 re f*
2317
  .878431 .878431 .878431 rg
2318
- n 0 414 469.8898 -54 re f*
2319
  1 1 1 rg
2320
- n 0 360 469.8898 -54 re f*
2321
  .878431 .878431 .878431 rg
2322
- n 0 306 469.8898 -78 re f*
2323
  1 1 1 rg
2324
- n 0 228 469.8898 -42 re f*
2325
  .878431 .878431 .878431 rg
2326
- n 0 186 469.8898 -42 re f*
2327
  1 1 1 rg
2328
- n 0 144 469.8898 -102 re f*
2329
  .878431 .878431 .878431 rg
2330
- n 0 42 469.8898 -42 re f*
 
 
2331
  0 0 0 rg
2332
  BT /F1 10 Tf 12 TL ET
2333
  q
2334
- 1 0 0 1 6 441 cm
2335
  q
2336
  0 0 0 rg
2337
  BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL (Produkt-SKU) Tj T* (Zahlungsartenaufschlag) Tj T* ET
2338
  Q
2339
  Q
2340
  q
2341
- 1 0 0 1 162.6299 417 cm
2342
  q
2343
  0 0 0 rg
2344
  BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL (Falls Sie einen Aufschlag auf BillSAFE-Zahlungen vom Kunden) Tj T* (verlangen m\366chten, geben Sie hier die SKU des Produktes an,) Tj T* (welches f\374r den Zahlungsartenaufschlag verwendet werden soll. Im) Tj T* (Folgenden wird dies genauer beschrieben.) Tj T* ET
2345
  Q
2346
  Q
2347
  q
2348
- 1 0 0 1 6 363 cm
2349
  q
2350
  0 0 0 rg
2351
  BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL (Zahlungsart deaktivieren, wenn) Tj T* (der maximale) Tj T* (Zahlartenaufschlag \374berstiegen) Tj T* (wird) Tj T* ET
2352
  Q
2353
  Q
2354
  q
2355
- 1 0 0 1 162.6299 375 cm
2356
  q
2357
  0 0 0 rg
2358
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Wenn diese Option aktiviert ist, steht BillSAFE nicht zur Auswahl,) Tj T* (falls der Warenkorbwert \(inkl. Versand, ohne Zahlartenaufschlag\),) Tj T* (die festgelegte Obergrenze \374bersteigt.) Tj T* ET
2359
  Q
2360
  Q
2361
  q
2362
- 1 0 0 1 6 309 cm
2363
  q
2364
  0 0 0 rg
2365
  BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL (Zahlungsart deaktivieren, wenn) Tj T* (der minimale) Tj T* (Zahlartenaufschlag) Tj T* (unterschritten wird) Tj T* ET
2366
  Q
2367
  Q
2368
  q
2369
- 1 0 0 1 162.6299 321 cm
2370
  q
2371
  0 0 0 rg
2372
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Wenn diese Option aktiviert ist, steht BillSAFE nicht zur Auswahl,) Tj T* (falls der Warenkorbwert \(inkl. Versand, ohne Zahlartenaufschlag\),) Tj T* (die festgelegte Untergrenze unterschreitet.) Tj T* ET
2373
  Q
2374
  Q
2375
  q
2376
- 1 0 0 1 6 291 cm
2377
  q
2378
  0 0 0 rg
2379
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Maximal-/Standard-Aufschlag) Tj T* ET
2380
  Q
2381
  Q
2382
  q
2383
- 1 0 0 1 162.6299 231 cm
2384
  q
2385
  0 0 0 rg
2386
  BT 1 0 0 1 0 64.82 Tm /F1 10 Tf 12 TL (Maximal- und zugleich Standardwert f\374r den Zahlartenaufschlag.) Tj T* (Dieser Wert sollte den in der BillSAFE-Konfiguration eingestellten) Tj T* (Wert nicht \374berschreiten, andernfalls erh\344lt man eine) Tj T* (Fehlermeldung. Wird der Wert in der BillSAFE-Konfiguration) Tj T* (ge\344ndert, so muss die Konfiguration der Zahlungsart im Magento) Tj T* (neu gespeichert werden, damit der Abgleich der Werte erfolgt.) Tj T* ET
2387
  Q
2388
  Q
2389
  q
2390
- 1 0 0 1 6 213 cm
2391
  q
2392
  0 0 0 rg
2393
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Minimaler Zahlartenaufschlag) Tj T* ET
2394
  Q
2395
  Q
2396
  q
2397
- 1 0 0 1 162.6299 189 cm
2398
  q
2399
  0 0 0 rg
2400
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Minimaler Wert f\374r den Zahlartenaufschlag. Muss nur eingestellt) Tj T* (werden, wenn ein prozentualer Zahlartenaufschlag angegeben) Tj T* (wurde.) Tj T* ET
2401
  Q
2402
  Q
2403
  q
2404
- 1 0 0 1 6 171 cm
2405
  q
2406
  0 0 0 rg
2407
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Prozentualer Zahlartenaufschlag) Tj T* ET
2408
  Q
2409
  Q
2410
  q
2411
- 1 0 0 1 162.6299 147 cm
2412
  q
2413
  0 0 0 rg
2414
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Prozent vom Warenwert zzgl. Versand. Wird dieses Feld leer) Tj T* (gelassen, so gilt der Maximal-/Standard-Aufschlag f\374r jede Zahlung) Tj T* (mit BillSAFE.) Tj T* ET
2415
  Q
2416
  Q
2417
  q
2418
- 1 0 0 1 6 129 cm
2419
  q
2420
  0 0 0 rg
2421
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Fehlerprotokollierung aktivieren) Tj T* ET
2422
  Q
2423
  Q
2424
  q
2425
- 1 0 0 1 162.6299 45 cm
2426
  q
2427
  BT 1 0 0 1 0 88.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Wenn dieser Wert auf "Ja" gesetzt ist, werden alle API-Aufrufe an) Tj T* (BillSAFE in eine separate ) Tj /F3 10 Tf (billsafe.log) Tj /F1 10 Tf (-Datei geschrieben. Die) Tj T* (Log-Eintr\344ge enthalten alle Parameter des Requests und die) Tj T* (entsprechenden BillSAFE-Antwort \(Response\). Die entsprechende) Tj T* (Datei findet sich im Normalfall im ) Tj /F3 10 Tf (/var/log) Tj /F1 10 Tf (-Verzeichnis der) Tj T* (Magento-Installation. Diese Einstellung sollte genau wie der) Tj T* (Testmodus nur zu Test- und Debug-Zwecken, sowie w\344hrend der) Tj T* (Entwicklung, aktiviert werden.) Tj T* ET
2428
  Q
2429
  Q
2430
  q
2431
- 1 0 0 1 6 27 cm
2432
  q
2433
  0 0 0 rg
2434
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Reihenfolge) Tj T* ET
2435
  Q
2436
  Q
2437
  q
2438
- 1 0 0 1 162.6299 3 cm
2439
  q
2440
  0 0 0 rg
2441
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Die Stelle in der Liste m\366glicher Zahlungsmethoden im Checkout) Tj T* (auf dem diese Zahlart auf der Auswahlseite erscheint. Je kleiner die) Tj T* (Zahl, desto weiter oben erscheint diese.) Tj T* ET
2442
  Q
2443
  Q
2444
  q
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2445
  1 J
2446
  1 j
2447
  0 0 0 RG
2448
  .25 w
 
2449
  n 0 468 m 469.8898 468 l S
2450
  n 0 414 m 469.8898 414 l S
2451
  n 0 360 m 469.8898 360 l S
2452
- n 0 306 m 469.8898 306 l S
2453
- n 0 228 m 469.8898 228 l S
2454
- n 0 186 m 469.8898 186 l S
2455
- n 0 144 m 469.8898 144 l S
2456
- n 0 42 m 469.8898 42 l S
2457
- n 156.6299 0 m 156.6299 468 l S
2458
- n 0 0 m 0 468 l S
2459
- n 469.8898 0 m 469.8898 468 l S
2460
  n 0 0 m 469.8898 0 l S
2461
  Q
2462
  Q
2463
  q
2464
- 1 0 0 1 62.69291 240.3307 cm
2465
  Q
2466
  q
2467
- 1 0 0 1 62.69291 210.3307 cm
2468
  q
2469
  0 0 0 rg
2470
  BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .945814 Tw (Bei der Verwendung von Market Ready Germany sind die folgenden Einstellungen vorzunehmen, damit) Tj T* 0 Tw (die BillSAFE Rechnungsinformationen auf dem Ausdruck erscheinen:) Tj T* ET
2471
  Q
2472
  Q
2473
  q
2474
- 1 0 0 1 62.69291 204.3307 cm
2475
  Q
2476
  q
2477
- 1 0 0 1 62.69291 168.3307 cm
2478
  0 0 0 rg
2479
  BT /F1 10 Tf 12 TL ET
2480
  BT 1 0 0 1 0 2 Tm T* ET
@@ -2534,10 +2551,10 @@ q
2534
  Q
2535
  Q
2536
  q
2537
- 1 0 0 1 62.69291 168.3307 cm
2538
  Q
2539
  q
2540
- 1 0 0 1 62.69291 168.3307 cm
2541
  Q
2542
  q
2543
  1 0 0 1 426.3422 728.5039 cm
@@ -3621,37 +3638,37 @@ xref
3621
  0000623262 00000 n
3622
  0000624718 00000 n
3623
  0000632549 00000 n
3624
- 0000639360 00000 n
3625
- 0000643073 00000 n
3626
- 0000645916 00000 n
3627
- 0000648308 00000 n
3628
- 0000649630 00000 n
3629
- 0000654425 00000 n
3630
- 0000657430 00000 n
3631
- 0000661699 00000 n
3632
- 0000662764 00000 n
3633
- 0000663046 00000 n
3634
- 0000663125 00000 n
3635
- 0000663204 00000 n
3636
- 0000663283 00000 n
3637
- 0000663362 00000 n
3638
- 0000663441 00000 n
3639
- 0000663520 00000 n
3640
- 0000663599 00000 n
3641
- 0000663678 00000 n
3642
- 0000663757 00000 n
3643
- 0000663837 00000 n
3644
- 0000663917 00000 n
3645
- 0000663997 00000 n
3646
- 0000664077 00000 n
3647
  trailer
3648
  << /ID
3649
  % ReportLab generated PDF document -- digest (http://www.reportlab.com)
3650
- [(N\030\313\271\272\371\370{\024!'0\204\003\240_) (N\030\313\271\272\371\370{\024!'0\204\003\240_)]
3651
 
3652
  /Info 77 0 R
3653
  /Root 76 0 R
3654
  /Size 121 >>
3655
  startxref
3656
- 664126
3657
  %%EOF
1339
  % 'R77': class PDFInfo
1340
  77 0 obj
1341
  << /Author ()
1342
+ /CreationDate (D:20140327143410-01'00')
1343
  /Keywords ()
1344
  /Producer (ReportLab http://www.reportlab.com)
1345
  /Subject (\(unspecified\))
2307
  % 'R97': class PDFStream
2308
  97 0 obj
2309
  % page stream
2310
+ << /Length 7258 >>
2311
  stream
2312
  1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET
2313
  q
2314
+ 1 0 0 1 62.69291 186.3307 cm
2315
  1 1 1 rg
2316
+ n 0 522 469.8898 -54 re f*
2317
  .878431 .878431 .878431 rg
2318
+ n 0 468 469.8898 -54 re f*
2319
  1 1 1 rg
2320
+ n 0 414 469.8898 -54 re f*
2321
  .878431 .878431 .878431 rg
2322
+ n 0 360 469.8898 -78 re f*
2323
  1 1 1 rg
2324
+ n 0 282 469.8898 -42 re f*
2325
  .878431 .878431 .878431 rg
2326
+ n 0 240 469.8898 -42 re f*
2327
  1 1 1 rg
2328
+ n 0 198 469.8898 -102 re f*
2329
  .878431 .878431 .878431 rg
2330
+ n 0 96 469.8898 -42 re f*
2331
+ 1 1 1 rg
2332
+ n 0 54 469.8898 -54 re f*
2333
  0 0 0 rg
2334
  BT /F1 10 Tf 12 TL ET
2335
  q
2336
+ 1 0 0 1 6 495 cm
2337
  q
2338
  0 0 0 rg
2339
  BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL (Produkt-SKU) Tj T* (Zahlungsartenaufschlag) Tj T* ET
2340
  Q
2341
  Q
2342
  q
2343
+ 1 0 0 1 162.6299 471 cm
2344
  q
2345
  0 0 0 rg
2346
  BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL (Falls Sie einen Aufschlag auf BillSAFE-Zahlungen vom Kunden) Tj T* (verlangen m\366chten, geben Sie hier die SKU des Produktes an,) Tj T* (welches f\374r den Zahlungsartenaufschlag verwendet werden soll. Im) Tj T* (Folgenden wird dies genauer beschrieben.) Tj T* ET
2347
  Q
2348
  Q
2349
  q
2350
+ 1 0 0 1 6 417 cm
2351
  q
2352
  0 0 0 rg
2353
  BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL (Zahlungsart deaktivieren, wenn) Tj T* (der maximale) Tj T* (Zahlartenaufschlag \374berstiegen) Tj T* (wird) Tj T* ET
2354
  Q
2355
  Q
2356
  q
2357
+ 1 0 0 1 162.6299 429 cm
2358
  q
2359
  0 0 0 rg
2360
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Wenn diese Option aktiviert ist, steht BillSAFE nicht zur Auswahl,) Tj T* (falls der Warenkorbwert \(inkl. Versand, ohne Zahlartenaufschlag\),) Tj T* (die festgelegte Obergrenze \374bersteigt.) Tj T* ET
2361
  Q
2362
  Q
2363
  q
2364
+ 1 0 0 1 6 363 cm
2365
  q
2366
  0 0 0 rg
2367
  BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL (Zahlungsart deaktivieren, wenn) Tj T* (der minimale) Tj T* (Zahlartenaufschlag) Tj T* (unterschritten wird) Tj T* ET
2368
  Q
2369
  Q
2370
  q
2371
+ 1 0 0 1 162.6299 375 cm
2372
  q
2373
  0 0 0 rg
2374
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Wenn diese Option aktiviert ist, steht BillSAFE nicht zur Auswahl,) Tj T* (falls der Warenkorbwert \(inkl. Versand, ohne Zahlartenaufschlag\),) Tj T* (die festgelegte Untergrenze unterschreitet.) Tj T* ET
2375
  Q
2376
  Q
2377
  q
2378
+ 1 0 0 1 6 345 cm
2379
  q
2380
  0 0 0 rg
2381
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Maximal-/Standard-Aufschlag) Tj T* ET
2382
  Q
2383
  Q
2384
  q
2385
+ 1 0 0 1 162.6299 285 cm
2386
  q
2387
  0 0 0 rg
2388
  BT 1 0 0 1 0 64.82 Tm /F1 10 Tf 12 TL (Maximal- und zugleich Standardwert f\374r den Zahlartenaufschlag.) Tj T* (Dieser Wert sollte den in der BillSAFE-Konfiguration eingestellten) Tj T* (Wert nicht \374berschreiten, andernfalls erh\344lt man eine) Tj T* (Fehlermeldung. Wird der Wert in der BillSAFE-Konfiguration) Tj T* (ge\344ndert, so muss die Konfiguration der Zahlungsart im Magento) Tj T* (neu gespeichert werden, damit der Abgleich der Werte erfolgt.) Tj T* ET
2389
  Q
2390
  Q
2391
  q
2392
+ 1 0 0 1 6 267 cm
2393
  q
2394
  0 0 0 rg
2395
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Minimaler Zahlartenaufschlag) Tj T* ET
2396
  Q
2397
  Q
2398
  q
2399
+ 1 0 0 1 162.6299 243 cm
2400
  q
2401
  0 0 0 rg
2402
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Minimaler Wert f\374r den Zahlartenaufschlag. Muss nur eingestellt) Tj T* (werden, wenn ein prozentualer Zahlartenaufschlag angegeben) Tj T* (wurde.) Tj T* ET
2403
  Q
2404
  Q
2405
  q
2406
+ 1 0 0 1 6 225 cm
2407
  q
2408
  0 0 0 rg
2409
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Prozentualer Zahlartenaufschlag) Tj T* ET
2410
  Q
2411
  Q
2412
  q
2413
+ 1 0 0 1 162.6299 201 cm
2414
  q
2415
  0 0 0 rg
2416
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Prozent vom Warenwert zzgl. Versand. Wird dieses Feld leer) Tj T* (gelassen, so gilt der Maximal-/Standard-Aufschlag f\374r jede Zahlung) Tj T* (mit BillSAFE.) Tj T* ET
2417
  Q
2418
  Q
2419
  q
2420
+ 1 0 0 1 6 183 cm
2421
  q
2422
  0 0 0 rg
2423
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Fehlerprotokollierung aktivieren) Tj T* ET
2424
  Q
2425
  Q
2426
  q
2427
+ 1 0 0 1 162.6299 99 cm
2428
  q
2429
  BT 1 0 0 1 0 88.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Wenn dieser Wert auf "Ja" gesetzt ist, werden alle API-Aufrufe an) Tj T* (BillSAFE in eine separate ) Tj /F3 10 Tf (billsafe.log) Tj /F1 10 Tf (-Datei geschrieben. Die) Tj T* (Log-Eintr\344ge enthalten alle Parameter des Requests und die) Tj T* (entsprechenden BillSAFE-Antwort \(Response\). Die entsprechende) Tj T* (Datei findet sich im Normalfall im ) Tj /F3 10 Tf (/var/log) Tj /F1 10 Tf (-Verzeichnis der) Tj T* (Magento-Installation. Diese Einstellung sollte genau wie der) Tj T* (Testmodus nur zu Test- und Debug-Zwecken, sowie w\344hrend der) Tj T* (Entwicklung, aktiviert werden.) Tj T* ET
2430
  Q
2431
  Q
2432
  q
2433
+ 1 0 0 1 6 81 cm
2434
  q
2435
  0 0 0 rg
2436
  BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Reihenfolge) Tj T* ET
2437
  Q
2438
  Q
2439
  q
2440
+ 1 0 0 1 162.6299 57 cm
2441
  q
2442
  0 0 0 rg
2443
  BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL (Die Stelle in der Liste m\366glicher Zahlungsmethoden im Checkout) Tj T* (auf dem diese Zahlart auf der Auswahlseite erscheint. Je kleiner die) Tj T* (Zahl, desto weiter oben erscheint diese.) Tj T* ET
2444
  Q
2445
  Q
2446
  q
2447
+ 1 0 0 1 6 39 cm
2448
+ q
2449
+ 0 0 0 rg
2450
+ BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Geschlecht) Tj T* ET
2451
+ Q
2452
+ Q
2453
+ q
2454
+ 1 0 0 1 162.6299 3 cm
2455
+ q
2456
+ 0 0 0 rg
2457
+ BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL (Es ist erforderlich, das Geschlecht des Kunden an BillSAFE zu) Tj T* (\374bertragen. Ist diese Information weder an der Bestellung noch an) Tj T* (der Kundenadresse oder im Kundenaccount verf\374gbar, wird der hier) Tj T* (konfigurierte Standardwert f\374r die \334bertragung herangezogen.) Tj T* ET
2458
+ Q
2459
+ Q
2460
+ q
2461
  1 J
2462
  1 j
2463
  0 0 0 RG
2464
  .25 w
2465
+ n 0 522 m 469.8898 522 l S
2466
  n 0 468 m 469.8898 468 l S
2467
  n 0 414 m 469.8898 414 l S
2468
  n 0 360 m 469.8898 360 l S
2469
+ n 0 282 m 469.8898 282 l S
2470
+ n 0 240 m 469.8898 240 l S
2471
+ n 0 198 m 469.8898 198 l S
2472
+ n 0 96 m 469.8898 96 l S
2473
+ n 0 54 m 469.8898 54 l S
2474
+ n 156.6299 0 m 156.6299 522 l S
2475
+ n 0 0 m 0 522 l S
2476
+ n 469.8898 0 m 469.8898 522 l S
2477
  n 0 0 m 469.8898 0 l S
2478
  Q
2479
  Q
2480
  q
2481
+ 1 0 0 1 62.69291 186.3307 cm
2482
  Q
2483
  q
2484
+ 1 0 0 1 62.69291 156.3307 cm
2485
  q
2486
  0 0 0 rg
2487
  BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .945814 Tw (Bei der Verwendung von Market Ready Germany sind die folgenden Einstellungen vorzunehmen, damit) Tj T* 0 Tw (die BillSAFE Rechnungsinformationen auf dem Ausdruck erscheinen:) Tj T* ET
2488
  Q
2489
  Q
2490
  q
2491
+ 1 0 0 1 62.69291 150.3307 cm
2492
  Q
2493
  q
2494
+ 1 0 0 1 62.69291 114.3307 cm
2495
  0 0 0 rg
2496
  BT /F1 10 Tf 12 TL ET
2497
  BT 1 0 0 1 0 2 Tm T* ET
2551
  Q
2552
  Q
2553
  q
2554
+ 1 0 0 1 62.69291 114.3307 cm
2555
  Q
2556
  q
2557
+ 1 0 0 1 62.69291 114.3307 cm
2558
  Q
2559
  q
2560
  1 0 0 1 426.3422 728.5039 cm
3638
  0000623262 00000 n
3639
  0000624718 00000 n
3640
  0000632549 00000 n
3641
+ 0000639908 00000 n
3642
+ 0000643621 00000 n
3643
+ 0000646464 00000 n
3644
+ 0000648856 00000 n
3645
+ 0000650178 00000 n
3646
+ 0000654973 00000 n
3647
+ 0000657978 00000 n
3648
+ 0000662247 00000 n
3649
+ 0000663312 00000 n
3650
+ 0000663594 00000 n
3651
+ 0000663673 00000 n
3652
+ 0000663752 00000 n
3653
+ 0000663831 00000 n
3654
+ 0000663910 00000 n
3655
+ 0000663989 00000 n
3656
+ 0000664068 00000 n
3657
+ 0000664147 00000 n
3658
+ 0000664226 00000 n
3659
+ 0000664305 00000 n
3660
+ 0000664385 00000 n
3661
+ 0000664465 00000 n
3662
+ 0000664545 00000 n
3663
+ 0000664625 00000 n
3664
  trailer
3665
  << /ID
3666
  % ReportLab generated PDF document -- digest (http://www.reportlab.com)
3667
+ [(\003!\011u\311k\030\212\272\314\212C|\014\2265) (\003!\011u\311k\030\212\272\314\212C|\014\2265)]
3668
 
3669
  /Info 77 0 R
3670
  /Root 76 0 R
3671
  /Size 121 >>
3672
  startxref
3673
+ 664674
3674
  %%EOF
package.xml CHANGED
@@ -1,2 +1,2 @@
1
  <?xml version="1.0"?>
2
- <package><name>BillSAFE_3</name><version>13.12.13</version><stability>stable</stability><license>OSL3</license><channel>community</channel><extends></extends><summary>Billsafe Extension</summary><description>Billsafe Extension</description><notes>Stable Release</notes><authors><author><name>Kristian B&#xFC;sch</name><user>kbuesch</user><email>kbuesch@paypal.com</email></author></authors><date>2013-12-13</date><time>7:52:18</time><compatible></compatible><dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies><contents><target name="mage"><dir name="doc"><dir name="Netresearch_Billsafe"><file name="ChangeLog.pdf" hash="b4c4b8e1dac25a57230b46044d8ec7b7"/><file name="README.pdf" hash="ddf4d7892192ef9324df3c15f4a06c8a"/></dir></dir><dir name="skin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><file name="billsafe.css" hash="30652ade50b6207cfd38fa0d86230ba0"/></dir></dir></dir></dir></dir><dir name="app"><dir name="locale"><dir name="de_DE"><file name="Netresearch_Billsafe.csv" hash="bd29fc71b25bad57dd0b4146e2f497cb"/><file name="Netresearch_PaymentFee.csv" hash="ee08fa2cb6ed0a660db7df18696f5e17"/></dir><dir name="en_US"><file name="Netresearch_PaymentFee.csv" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="billsafe"><file name="info.phtml" hash="229d7e88ed38ba2a413c9323e12c1aa0"/><dir name="customer"><dir name="widget"><file name="dob.phtml" hash="c394734c5a350a2e47c143f2398935cb"/></dir></dir><dir name="payment"><file name="form.phtml" hash="ca6ec537cfc8c0434341757c9ec286d5"/></dir></dir></dir><dir name="layout"><file name="billsafe.xml" hash="7ba46fd84f8faa378ab61e32dfa9ceac"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="billsafe"><file name="info.phtml" hash="8183491543dcffc7f66af9fb06740e80"/><dir name="pdf"><file name="info.phtml" hash="125e58bd1eb021106ad45c0e9b960f01"/><file name="mrg.phtml" hash="68c1f430c50cdb9d413369a7defa6a03"/></dir><dir name="system"><dir name="config"><file name="paymentfeecheck.phtml" hash="cd5cfb1357c3885965dcfaf9b3da4eaa"/></dir></dir></dir></dir><dir name="layout"><file name="billsafe.xml" hash="53acc9efc6bd47aefacee3162e7b9995"/></dir></dir></dir></dir></dir><dir name="code"><dir name="community"><dir name="Netresearch"><dir name="PaymentFee"><dir name="Test"><dir name="Model"><file name="ObserverTest.php" hash="32ba1f9b3fb8e8a9372da43f8fc9368e"/></dir><dir name="Config"><file name="ConfigTest.php" hash="cf41bf5d7cb77e4d9a4de4dbb5186512"/></dir></dir><dir name="Helper"><file name="Data.php" hash="41ca5369190288ea1eb14e2a591b6d97"/></dir><dir name="Model"><file name="Observer.php" hash="2e4d2b0faaf6af72e209c7fb40b81b51"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Payment"><file name="Methods.php" hash="5e49ffdd605a2b9dcc21c351c3afb075"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="FeeController.php" hash="5763a58bfd3f11b3ae41d5949724f0e8"/></dir></dir><dir name="etc"><file name="config.xml" hash="6beccc3c342a85000f0f454fc43b8503"/><file name="system.xml" hash="32ac7aabae936ec08aefb6b112f88b26"/></dir></dir><dir name="Billsafe"><dir name="sql"><dir name="billsafe_setup"><file name="mysql4-install-0.1.0.php" hash="9906e49a293cc8511f2ce53be301b3d3"/><file name="mysql4-upgrade-11.09.14-11.11.07.php" hash="f74406fe3e100c69a020bca556ad1ce3"/></dir></dir><dir name="Test"><dir name="Controller"><file name="PaymentControllerTest.php" hash="8b37c1382669b591ebd97f7d91b957de"/></dir><dir name="Helper"><file name="CustomerTest.php" hash="712fe8c5bcd883cd29aa87ff73aac5f2"/><file name="DataTest.php" hash="8e5d93c8a4dd94b65cac266944aee474"/><file name="OrderTest.php" hash="82aadda3dd00667b837eaabd4c6e285e"/><dir name="OrderTest"><dir name="fixtures"><file name="orders.yaml" hash="14e05b7bda0018f195e61f8bb596f160"/></dir></dir></dir><dir name="Model"><file name="ClientTest.php" hash="e21233cd3ab2bbf14fffae9444815864"/><file name="ConfigTest.php" hash="c55a2eb1375f7ca5ed78d39f4b9f75fe"/><file name="ObserverTest.php" hash="2d2dcdd46f2b4f5c4d9bef41271a23e1"/><file name="PaymentTest.php" hash="853dd5e86b6e75c7a0a29053857e2173"/></dir><dir name="Block"><file name="InfoTest.php" hash="7d1973a3d3e71f2d543484c8e873f3d8"/><dir name="Payment"><file name="FormTest.php" hash="53a4a81423abd719cd1c41203a582f8f"/></dir></dir><dir name="var"><dir name="fixtures"><file name="orders.yaml" hash="fa584305dffb6954f37ea98d398175cc"/></dir></dir></dir><dir name="Helper"><file name="Customer.php" hash="256c4f323a5bd2899dfed32369f09358"/><file name="Data.php" hash="b215a1f328ba65dc801a7b3cb9effe9c"/><file name="Order.php" hash="d1f2c6b212421d57ff5611bfc9ffa335"/></dir><dir name="Model"><file name="Client.php" hash="ba10a42551a612663fbdf97426e276c5"/><file name="Config.php" hash="0d507517714e9a69a7e2dc8e317b25e8"/><file name="Observer.php" hash="f92740db2966f04dfeb233f07f05fa78"/><file name="Payment.php" hash="d28c736383fdd55f4bd1ce1c28eac68d"/><dir name="Pdf"><dir name="Items"><dir name="Invoice"><file name="Info.php" hash="b8d7c058b38ebfd786b570dcd626347c"/></dir></dir></dir><dir name="Client"><file name="Base.php" hash="18b455f57f6ab24fe1a74e486da2b745"/></dir><dir name="Config"><file name="Abstract.php" hash="f67521ec97d75acb3990a281a8436a24"/><file name="Maxamount.php" hash="bffa2ef3d772e491230ccde74fd1eb85"/><file name="Maxfee.php" hash="c58b114e423caea256110549e9f2ae68"/></dir></dir><dir name="controllers"><file name="PaymentController.php" hash="a4a5a141670696f224f630362b4f0145"/></dir><dir name="Block"><file name="Info.php" hash="fcdafba1b69989b09535c9ae414ba180"/><dir name="Adminhtml"><dir name="Sales"><dir name="Order"><file name="Totalbar.php" hash="db5c1edc70c1fe25e3852785c4c3f0b8"/></dir></dir><dir name="System"><dir name="Config"><file name="Paymentfeecheck.php" hash="fdace6ddea9c5c2fac8b264df834012e"/></dir></dir></dir><dir name="Payment"><file name="Form.php" hash="c69c723d686a2f2d6b8f90dbb212f3d1"/></dir><dir name="Customer"><dir name="Widget"><file name="Dob.php" hash="26a34b88060d80e5b1f1e6412b1eb7d4"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="365b03a4d7d27172d64339d6384bb932"/><file name="system.xml" hash="acc2e5e65b092d96e75db0685232b615"/></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><file name="Netresearch_Billsafe.xml" hash="8d4f15dddfcc1034a78b4e9782db7770"/><file name="Netresearch_PaymentFee.xml" hash="66173a1777313e72fbee83b510f9d59d"/></dir></dir></dir></target></contents></package>
1
  <?xml version="1.0"?>
2
+ <package><name>BillSAFE_3</name><version>14.03.27</version><stability>stable</stability><license>OSL3</license><channel>community</channel><extends></extends><summary>Billsafe Extension</summary><description>Billsafe Extension</description><notes>Stable Release</notes><authors><author><name>Kristian B&#xFC;sch</name><user>kbuesch</user><email>kbuesch@paypal.com</email></author></authors><date>2014-03-27</date><time>6:34:13</time><compatible></compatible><dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies><contents><target name="mage"><dir name="doc"><dir name="Netresearch_Billsafe"><file name="ChangeLog.pdf" hash="b502a63b3a29004ea6bbb9909994729b"/><file name="README.pdf" hash="f3ddee3c586bf3ad4e11148e2468511d"/></dir></dir><dir name="skin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><file name="billsafe.css" hash="30652ade50b6207cfd38fa0d86230ba0"/></dir></dir></dir></dir></dir><dir name="app"><dir name="locale"><dir name="de_DE"><file name="Netresearch_Billsafe.csv" hash="1784e93b821ea46bd32bc92c2f449bae"/><file name="Netresearch_PaymentFee.csv" hash="ee08fa2cb6ed0a660db7df18696f5e17"/></dir><dir name="en_US"><file name="Netresearch_PaymentFee.csv" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></dir><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="billsafe"><file name="info.phtml" hash="229d7e88ed38ba2a413c9323e12c1aa0"/><dir name="customer"><dir name="widget"><file name="dob.phtml" hash="c394734c5a350a2e47c143f2398935cb"/></dir></dir><dir name="payment"><file name="form.phtml" hash="ca6ec537cfc8c0434341757c9ec286d5"/></dir></dir></dir><dir name="layout"><file name="billsafe.xml" hash="7ba46fd84f8faa378ab61e32dfa9ceac"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="billsafe"><file name="info.phtml" hash="8183491543dcffc7f66af9fb06740e80"/><dir name="pdf"><file name="info.phtml" hash="125e58bd1eb021106ad45c0e9b960f01"/><file name="mrg.phtml" hash="68c1f430c50cdb9d413369a7defa6a03"/></dir><dir name="system"><dir name="config"><file name="paymentfeecheck.phtml" hash="cd5cfb1357c3885965dcfaf9b3da4eaa"/></dir></dir></dir></dir><dir name="layout"><file name="billsafe.xml" hash="53acc9efc6bd47aefacee3162e7b9995"/></dir></dir></dir></dir></dir><dir name="code"><dir name="community"><dir name="Netresearch"><dir name="PaymentFee"><dir name="Test"><dir name="Model"><file name="ObserverTest.php" hash="32ba1f9b3fb8e8a9372da43f8fc9368e"/></dir><dir name="Config"><file name="ConfigTest.php" hash="cf41bf5d7cb77e4d9a4de4dbb5186512"/></dir></dir><dir name="Helper"><file name="Data.php" hash="41ca5369190288ea1eb14e2a591b6d97"/></dir><dir name="Model"><file name="Observer.php" hash="2e4d2b0faaf6af72e209c7fb40b81b51"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Payment"><file name="Methods.php" hash="5e49ffdd605a2b9dcc21c351c3afb075"/></dir></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="FeeController.php" hash="5763a58bfd3f11b3ae41d5949724f0e8"/></dir></dir><dir name="etc"><file name="config.xml" hash="6beccc3c342a85000f0f454fc43b8503"/><file name="system.xml" hash="32ac7aabae936ec08aefb6b112f88b26"/></dir></dir><dir name="Billsafe"><dir name="sql"><dir name="billsafe_setup"><file name="mysql4-install-0.1.0.php" hash="9906e49a293cc8511f2ce53be301b3d3"/><file name="mysql4-upgrade-11.09.14-11.11.07.php" hash="f74406fe3e100c69a020bca556ad1ce3"/></dir></dir><dir name="Test"><dir name="Controller"><file name="PaymentControllerTest.php" hash="1825fe25aa4b82523aadd10a53074747"/></dir><dir name="Helper"><file name="CustomerTest.php" hash="d06fbac6ee3a1c19133367ebee38818a"/><file name="DataTest.php" hash="8e5d93c8a4dd94b65cac266944aee474"/><file name="OrderTest.php" hash="4a4c95b8dd473647275be83b90959e75"/><dir name="OrderTest"><dir name="fixtures"><file name="orders.yaml" hash="14e05b7bda0018f195e61f8bb596f160"/></dir></dir></dir><dir name="Model"><file name="ClientTest.php" hash="8d9eb45c6bf9e6da59e698e82ba96d69"/><file name="ConfigTest.php" hash="e5e74426f5a04ed24b2acc81a10a93f7"/><file name="ObserverTest.php" hash="2d2dcdd46f2b4f5c4d9bef41271a23e1"/><file name="PaymentTest.php" hash="e53abb917874dc1f719bd6e4c1a2422a"/></dir><dir name="Block"><file name="InfoTest.php" hash="7d1973a3d3e71f2d543484c8e873f3d8"/><dir name="Payment"><file name="FormTest.php" hash="53a4a81423abd719cd1c41203a582f8f"/></dir><dir name="Customer"><dir name="Widget"><file name="DobTest.php" hash="279ab2bebbef665ebb1a44c8ef93327a"/></dir></dir></dir><dir name="var"><dir name="fixtures"><file name="orders.yaml" hash="fa584305dffb6954f37ea98d398175cc"/></dir></dir></dir><dir name="Helper"><file name="Customer.php" hash="82a236b4d0c8c7335cb49e8b26794eea"/><file name="Data.php" hash="b215a1f328ba65dc801a7b3cb9effe9c"/><file name="Order.php" hash="65a34cd5871a732344410233df189807"/></dir><dir name="Model"><file name="Client.php" hash="ba10a42551a612663fbdf97426e276c5"/><file name="Config.php" hash="6bd396ea4d4d339d2419e8fdfa1bec33"/><file name="Observer.php" hash="8ef95cb35694c3552bb38e3c44538c53"/><file name="Payment.php" hash="96225dca07957f3aedc060fa8e505794"/><dir name="Pdf"><dir name="Engine"><dir name="Invoice"><file name="Default.php" hash="463521a517d8cc7ef027d7373c2375cd"/></dir></dir><dir name="Items"><dir name="Invoice"><file name="Info.php" hash="b8d7c058b38ebfd786b570dcd626347c"/></dir></dir></dir><dir name="Client"><file name="Base.php" hash="16fbeffcc20585f6e43fda3b0c083d57"/></dir><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Source"><file name="Gender.php" hash="df8f8d18e152cce92297c797262b3671"/></dir></dir></dir></dir><dir name="Config"><file name="Abstract.php" hash="ba80caef00c09f165720fa9f9036024a"/><file name="Maxamount.php" hash="698d7e25b131a3b9dbdee12c4b88e620"/><file name="Maxfee.php" hash="0bdefd9ca9a666719760279b55c86c2d"/></dir></dir><dir name="controllers"><file name="PaymentController.php" hash="299ecad019a40491d7835a7247b72108"/></dir><dir name="Block"><file name="Info.php" hash="fcdafba1b69989b09535c9ae414ba180"/><dir name="Adminhtml"><dir name="Sales"><dir name="Order"><file name="Totalbar.php" hash="db5c1edc70c1fe25e3852785c4c3f0b8"/></dir></dir><dir name="System"><dir name="Config"><file name="Paymentfeecheck.php" hash="fdace6ddea9c5c2fac8b264df834012e"/></dir></dir></dir><dir name="Payment"><file name="Form.php" hash="c69c723d686a2f2d6b8f90dbb212f3d1"/></dir><dir name="Customer"><dir name="Widget"><file name="Dob.php" hash="26a34b88060d80e5b1f1e6412b1eb7d4"/></dir></dir></dir><dir name="etc"><file name="config.xml" hash="1030f0162d916f21a7ff22f44c5b8fd0"/><file name="system.xml" hash="2f37ec7440fde44699363ae80975a159"/></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><file name="Netresearch_Billsafe.xml" hash="8d4f15dddfcc1034a78b4e9782db7770"/><file name="Netresearch_PaymentFee.xml" hash="66173a1777313e72fbee83b510f9d59d"/></dir></dir></dir></target></contents></package>