DebitPayment - Version 0.5.3

Version Notes

-

Download this release

Release Info

Developer Rouven Alexander Rieker
Extension DebitPayment
Version 0.5.3
Comparing to
See all releases


Code changes from version 0.5.1 to 0.5.3

Files changed (42) hide show
  1. app/code/community/Mage/Debit/Block/Account/Data.php +14 -23
  2. app/code/community/Mage/Debit/Block/Adminhtml/Order.php +71 -0
  3. app/code/community/Mage/Debit/Block/Adminhtml/Order/Grid.php +136 -0
  4. app/code/community/Mage/Debit/Block/Form.php +20 -32
  5. app/code/community/Mage/Debit/Block/Info.php +15 -24
  6. app/code/community/Mage/Debit/Helper/Adminhtml.php +105 -0
  7. app/code/community/Mage/Debit/Helper/Data.php +21 -32
  8. app/code/community/Mage/Debit/Model/Debit.php +21 -32
  9. app/code/community/Mage/Debit/Model/Entity/Customer/Attribute/Backend/Encrypted.php +10 -16
  10. app/code/community/Mage/Debit/Model/Mysql4/Orders.php +44 -0
  11. app/code/community/Mage/Debit/Model/Mysql4/Orders/Collection.php +44 -0
  12. app/code/community/Mage/Debit/Model/Observer.php +21 -26
  13. app/code/community/Mage/Debit/Model/Orders.php +44 -0
  14. app/code/community/Mage/Debit/Model/System/Config/Source/Customer/Group.php +8 -7
  15. app/code/community/Mage/Debit/controllers/AccountController.php +12 -16
  16. app/code/community/Mage/Debit/controllers/Adminhtml/OrderController.php +226 -0
  17. app/code/community/Mage/Debit/controllers/AjaxController.php +7 -9
  18. app/code/community/Mage/Debit/etc/adminhtml.xml +55 -0
  19. app/code/community/Mage/Debit/etc/bankleitzahlen.csv +123 -160
  20. app/code/community/Mage/Debit/etc/config.xml +43 -20
  21. app/code/community/Mage/Debit/etc/system.xml +54 -6
  22. app/code/community/Mage/Debit/sql/debit_setup/mysql4-install-0.4.0.php +20 -20
  23. app/code/community/Mage/Debit/sql/debit_setup/mysql4-upgrade-0.3.0-0.4.0.php +116 -0
  24. app/code/community/Mage/Debit/sql/debit_setup/mysql4-upgrade-0.4.9-0.5.0.php +6 -6
  25. app/code/community/Mage/Debit/sql/debit_setup/mysql4-upgrade-0.5.0-0.5.1.php +6 -6
  26. app/code/community/Mage/Debit/sql/debit_setup/mysql4-upgrade-0.5.1-0.5.2.php +60 -0
  27. app/design/adminhtml/default/default/layout/debit.xml +8 -0
  28. app/design/adminhtml/default/default/template/debit/debit.phtml +1 -1
  29. app/design/adminhtml/default/default/template/debit/form.phtml +1 -1
  30. app/design/adminhtml/default/default/template/debit/info.phtml +1 -1
  31. app/design/frontend/base/default/layout/debit.xml +7 -7
  32. app/design/frontend/base/default/template/debit/account/data.phtml +1 -1
  33. app/design/frontend/base/default/template/debit/form.phtml +1 -1
  34. app/design/frontend/base/default/template/debit/info.phtml +1 -1
  35. app/etc/modules/Mage_Debit.xml +5 -5
  36. app/locale/de_DE/Mage_Debit.csv +23 -4
  37. app/locale/en_US/Mage_Debit.csv +22 -3
  38. js/mage/debit/blzcheck.js +1 -1
  39. lib/DTA/DTA.php +1202 -0
  40. lib/DTA/DTABase.php +699 -0
  41. lib/DTA/DTAZV.php +843 -0
  42. package.xml +8 -52
app/code/community/Mage/Debit/Block/Account/Data.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Debit Form Block for customer account page
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -37,10 +37,8 @@ class Mage_Debit_Block_Account_Data
37
  extends Mage_Customer_Block_Account_Dashboard
38
  {
39
  /**
40
- * getBankName
41
- *
42
  * Returns the bank name
43
- *
44
  * @return string Bankname
45
  */
46
  public function getBankName()
@@ -53,14 +51,13 @@ class Mage_Debit_Block_Account_Data
53
  if ($bankName == null) {
54
  $bankName = $this->__('not available');
55
  }
 
56
  return $bankName;
57
  }
58
 
59
  /**
60
- * getAccountBLZ
61
- *
62
  * Returns the account blz of the specific account
63
- *
64
  * @return string BLZ
65
  */
66
  public function getAccountBLZ()
@@ -69,10 +66,8 @@ class Mage_Debit_Block_Account_Data
69
  }
70
 
71
  /**
72
- * getAccountName
73
- *
74
  * Returns the account owner name of the specific account
75
- *
76
  * @return string Name
77
  */
78
  public function getAccountName()
@@ -81,10 +76,8 @@ class Mage_Debit_Block_Account_Data
81
  }
82
 
83
  /**
84
- * getAccountNumber
85
- *
86
  * Returns the number of the specific account
87
- *
88
  * @return string Account Number
89
  */
90
  public function getAccountNumber()
@@ -93,13 +86,10 @@ class Mage_Debit_Block_Account_Data
93
  }
94
 
95
  /**
96
- * _getAccountData
97
- *
98
  * Returns the specific value of the requested field from the
99
  * customer model.
100
- *
101
- * @param string $field Attribute to get
102
- *
103
  * @return string Data
104
  */
105
  protected function _getAccountData($field)
@@ -114,6 +104,7 @@ class Mage_Debit_Block_Account_Data
114
  if ($field != 'debit_payment_acount_name' && !is_numeric($data)) {
115
  return '';
116
  }
 
117
  return $this->htmlEscape($data);
118
  }
119
- }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Debit Form Block for customer account page
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
37
  extends Mage_Customer_Block_Account_Dashboard
38
  {
39
  /**
 
 
40
  * Returns the bank name
41
+ *
42
  * @return string Bankname
43
  */
44
  public function getBankName()
51
  if ($bankName == null) {
52
  $bankName = $this->__('not available');
53
  }
54
+
55
  return $bankName;
56
  }
57
 
58
  /**
 
 
59
  * Returns the account blz of the specific account
60
+ *
61
  * @return string BLZ
62
  */
63
  public function getAccountBLZ()
66
  }
67
 
68
  /**
 
 
69
  * Returns the account owner name of the specific account
70
+ *
71
  * @return string Name
72
  */
73
  public function getAccountName()
76
  }
77
 
78
  /**
 
 
79
  * Returns the number of the specific account
80
+ *
81
  * @return string Account Number
82
  */
83
  public function getAccountNumber()
86
  }
87
 
88
  /**
 
 
89
  * Returns the specific value of the requested field from the
90
  * customer model.
91
+ *
92
+ * @param string $field Attribute to get
 
93
  * @return string Data
94
  */
95
  protected function _getAccountData($field)
104
  if ($field != 'debit_payment_acount_name' && !is_numeric($data)) {
105
  return '';
106
  }
107
+
108
  return $this->htmlEscape($data);
109
  }
110
+ }
app/code/community/Mage/Debit/Block/Adminhtml/Order.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of the Mage_Debit module.
4
+ *
5
+ * PHP version 5
6
+ *
7
+ * NOTICE OF LICENSE
8
+ *
9
+ * This source file is subject to the Open Software License (OSL 3.0)
10
+ * that is bundled with this package in the file LICENSE.txt.
11
+ * It is also available through the world-wide-web at this URL:
12
+ * http://opensource.org/licenses/osl-3.0.php
13
+ * If you did not receive a copy of the license and are unable to
14
+ * obtain it through the world-wide-web, please send an email
15
+ * to license@magentocommerce.com so we can send you a copy immediately.
16
+ *
17
+ * @category Mage
18
+ * @package Mage_Debit
19
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
+ * @link http://www.magentocommerce.com/extension/676/
23
+ */
24
+ /**
25
+ * Backend View for Order Export list
26
+ *
27
+ * @category Mage
28
+ * @package Mage_Debit
29
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
+ * @link http://www.magentocommerce.com/extension/676/
33
+ */
34
+ class Mage_Debit_Block_Adminhtml_Order extends Mage_Adminhtml_Block_Widget_Grid_Container
35
+ {
36
+ /**
37
+ * Class constructor
38
+ *
39
+ * @return void
40
+ */
41
+ public function __construct()
42
+ {
43
+ $this->_controller = 'adminhtml_order';
44
+ $this->_blockGroup = 'debit';
45
+ $this->_headerText = Mage::helper('debit')->__('Debit Payment Orders');
46
+ parent::__construct();
47
+ $this->_removeButton('add');
48
+
49
+ if (Mage::helper('debit/adminhtml')->hasExportRequirements()) {
50
+ $this->_addButton('sync', array(
51
+ 'label' => Mage::helper('debit')->__('Sync Orders'),
52
+ 'onclick' => 'setLocation(\'' . $this->getUrl('*/*/sync') .'\')',
53
+ 'class' => 'add',
54
+ ));
55
+ $this->_addButton('export_dtaus', array(
56
+ 'label' => Mage::helper('debit')->__('Export as DTAUS'),
57
+ 'onclick' => 'setLocation(\'' . $this->getUrl('*/*/exportdtaus') .'\')',
58
+ 'class' => '',
59
+ ));
60
+ $this->_addButton('export_csv', array(
61
+ 'label' => Mage::helper('debit')->__('Export as CSV'),
62
+ 'onclick' => 'setLocation(\'' . $this->getUrl('*/*/exportcsv') .'\')',
63
+ 'class' => '',
64
+ ));
65
+ } else {
66
+ Mage::getSingleton('adminhtml/session')->addError(
67
+ Mage::helper('debit')->__('Please enter bankaccount credentials of the store owner in the system configuration. Otherwise you will not be able to generate a valid export file.')
68
+ );
69
+ }
70
+ }
71
+ }
app/code/community/Mage/Debit/Block/Adminhtml/Order/Grid.php ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of the Mage_Debit module.
4
+ *
5
+ * PHP version 5
6
+ *
7
+ * NOTICE OF LICENSE
8
+ *
9
+ * This source file is subject to the Open Software License (OSL 3.0)
10
+ * that is bundled with this package in the file LICENSE.txt.
11
+ * It is also available through the world-wide-web at this URL:
12
+ * http://opensource.org/licenses/osl-3.0.php
13
+ * If you did not receive a copy of the license and are unable to
14
+ * obtain it through the world-wide-web, please send an email
15
+ * to license@magentocommerce.com so we can send you a copy immediately.
16
+ *
17
+ * @category Mage
18
+ * @package Mage_Debit
19
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
+ * @link http://www.magentocommerce.com/extension/676/
23
+ */
24
+ /**
25
+ * Order Export Grid
26
+ *
27
+ * @category Mage
28
+ * @package Mage_Debit
29
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
+ * @link http://www.magentocommerce.com/extension/676/
33
+ */
34
+ class Mage_Debit_Block_Adminhtml_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid
35
+ {
36
+ /**
37
+ * Class Constructor
38
+ *
39
+ * @return void
40
+ */
41
+ public function __construct()
42
+ {
43
+ parent::__construct();
44
+ $this->setId('debitpayment_order_grid');
45
+ $this->setDefaultSort('increment_id');
46
+ $this->setDefaultDir('DESC');
47
+ $this->setSaveParametersInSession(true);
48
+ }
49
+
50
+ /**
51
+ * (non-PHPdoc)
52
+ * @see Mage_Adminhtml_Block_Widget_Grid::_prepareCollection()
53
+ */
54
+ protected function _prepareCollection()
55
+ {
56
+ $collection = Mage::getModel('debit/orders')->getCollection();
57
+ $this->setCollection($collection);
58
+
59
+ return parent::_prepareCollection();
60
+ }
61
+
62
+ /**
63
+ * (non-PHPdoc)
64
+ * @see Mage_Adminhtml_Block_Widget_Grid::_prepareColumns()
65
+ */
66
+ protected function _prepareColumns()
67
+ {
68
+ $this->addColumn(
69
+ 'increment_id',
70
+ array(
71
+ 'header' => $this->_getHelper()->__('Order #'),
72
+ 'width' => '90px',
73
+ 'index' => 'increment_id'
74
+ )
75
+ );
76
+ $this->addColumn(
77
+ 'created_at',
78
+ array(
79
+ 'header' => $this->_getHelper()->__('Purchased On'),
80
+ 'index' => 'created_at',
81
+ 'type' => 'datetime',
82
+ 'width' => '100px',
83
+ )
84
+ );
85
+ $this->addColumn(
86
+ 'billing_name',
87
+ array(
88
+ 'header' => $this->_getHelper()->__('Bill to Name'),
89
+ 'index' => 'billing_name',
90
+ )
91
+ );
92
+ $this->addColumn(
93
+ 'grand_total',
94
+ array(
95
+ 'header' => $this->_getHelper()->__('Grand Total'),
96
+ 'index' => 'grand_total',
97
+ 'type' => 'currency',
98
+ 'currency' => 'order_currency_code',
99
+ )
100
+ );
101
+ $this->addColumn(
102
+ 'status',
103
+ array(
104
+ 'header' => $this->_getHelper()->__('Status'),
105
+ 'index' => 'status',
106
+ 'type' => 'options',
107
+ 'width' => '150px',
108
+ 'options' => array(
109
+ 0 => $this->_getHelper()->__('Not exported'),
110
+ 1 => $this->_getHelper()->__('Exported')
111
+ ),
112
+ )
113
+ );
114
+
115
+ return parent::_prepareColumns();
116
+ }
117
+
118
+ /**
119
+ * (non-PHPdoc)
120
+ * @see Mage_Adminhtml_Block_Widget_Grid::getRowUrl()
121
+ */
122
+ public function getRowUrl($row)
123
+ {
124
+ return false;
125
+ }
126
+
127
+ /**
128
+ * Retrieve the helper class
129
+ *
130
+ * @return Mage_Debit_Helper_Adminhtml Helper
131
+ */
132
+ protected function _getHelper()
133
+ {
134
+ return Mage::helper('debit/adminhtml');
135
+ }
136
+ }
app/code/community/Mage/Debit/Block/Form.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Debit Form Block
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -36,10 +36,8 @@
36
  class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
37
  {
38
  /**
39
- * _construct
40
- *
41
  * Construct payment form block and set template
42
- *
43
  * @return void
44
  */
45
  protected function _construct()
@@ -49,10 +47,8 @@ class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
49
  }
50
 
51
  /**
52
- * getBankName
53
- *
54
  * Returns the account bankname if applicable from the payment info instance
55
- *
56
  * @return string Bankname/Error
57
  */
58
  public function getBankName()
@@ -65,14 +61,13 @@ class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
65
  if ($bankName == null) {
66
  $bankName = $this->__('not available');
67
  }
 
68
  return $bankName;
69
  }
70
 
71
  /**
72
- * getAccountBLZ
73
- *
74
  * Returns the account blz from the payment info instance
75
- *
76
  * @return string BLZ
77
  */
78
  public function getAccountBLZ()
@@ -81,6 +76,7 @@ class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
81
  if (!is_numeric($data)) {
82
  $data = Mage::helper('core')->decrypt($data);
83
  }
 
84
  return $data;
85
  } elseif ($data = $this->_getAccountData('debit_payment_acount_blz')) {
86
  return $data;
@@ -90,10 +86,8 @@ class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
90
  }
91
 
92
  /**
93
- * getAccountName
94
- *
95
  * Returns the account name from the payment info instance
96
- *
97
  * @return string Name
98
  */
99
  public function getAccountName()
@@ -101,14 +95,13 @@ class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
101
  if ($data = $this->getInfoData('cc_owner')) {
102
  return $data;
103
  }
 
104
  return $this->_getAccountData('debit_payment_acount_name');
105
  }
106
 
107
  /**
108
- * getAccountNumber
109
- *
110
  * Returns the account number from the payment info instance
111
- *
112
  * @return string Number
113
  */
114
  public function getAccountNumber()
@@ -124,13 +117,10 @@ class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
124
  }
125
 
126
  /**
127
- * _getAccountData
128
- *
129
  * Returns the specific value of the requested field from the
130
  * customer model.
131
- *
132
- * @param string $field Attribute to get
133
- *
134
  * @return string Data
135
  */
136
  protected function _getAccountData($field)
@@ -142,14 +132,13 @@ class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
142
  if (strlen($data) == 0) {
143
  return '';
144
  }
 
145
  return $this->htmlEscape($data);
146
  }
147
 
148
  /**
149
- * getCustomer
150
- *
151
  * Returns the current customer
152
- *
153
  * @return Mage_Customer_Model_Customer Customer
154
  */
155
  public function getCustomer()
@@ -157,18 +146,17 @@ class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
157
  if (Mage::app()->getStore()->isAdmin()) {
158
  return Mage::getSingleton('adminhtml/session_quote')->getCustomer();
159
  }
 
160
  return Mage::getSingleton('customer/session')->getCustomer();
161
  }
162
 
163
  /**
164
- * getCheckoutValidBlz
165
- *
166
  * Returns the config setting if checkout is only allowed with a valid BLZ
167
- *
168
  * @return boolean true/false
169
  */
170
  public function getCheckoutValidBlz()
171
  {
172
  return Mage::getStoreConfigFlag('payment/debit/checkout_valid_blz');
173
  }
174
- }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Debit Form Block
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
36
  class Mage_Debit_Block_Form extends Mage_Payment_Block_Form
37
  {
38
  /**
 
 
39
  * Construct payment form block and set template
40
+ *
41
  * @return void
42
  */
43
  protected function _construct()
47
  }
48
 
49
  /**
 
 
50
  * Returns the account bankname if applicable from the payment info instance
51
+ *
52
  * @return string Bankname/Error
53
  */
54
  public function getBankName()
61
  if ($bankName == null) {
62
  $bankName = $this->__('not available');
63
  }
64
+
65
  return $bankName;
66
  }
67
 
68
  /**
 
 
69
  * Returns the account blz from the payment info instance
70
+ *
71
  * @return string BLZ
72
  */
73
  public function getAccountBLZ()
76
  if (!is_numeric($data)) {
77
  $data = Mage::helper('core')->decrypt($data);
78
  }
79
+
80
  return $data;
81
  } elseif ($data = $this->_getAccountData('debit_payment_acount_blz')) {
82
  return $data;
86
  }
87
 
88
  /**
 
 
89
  * Returns the account name from the payment info instance
90
+ *
91
  * @return string Name
92
  */
93
  public function getAccountName()
95
  if ($data = $this->getInfoData('cc_owner')) {
96
  return $data;
97
  }
98
+
99
  return $this->_getAccountData('debit_payment_acount_name');
100
  }
101
 
102
  /**
 
 
103
  * Returns the account number from the payment info instance
104
+ *
105
  * @return string Number
106
  */
107
  public function getAccountNumber()
117
  }
118
 
119
  /**
 
 
120
  * Returns the specific value of the requested field from the
121
  * customer model.
122
+ *
123
+ * @param string $field Attribute to get
 
124
  * @return string Data
125
  */
126
  protected function _getAccountData($field)
132
  if (strlen($data) == 0) {
133
  return '';
134
  }
135
+
136
  return $this->htmlEscape($data);
137
  }
138
 
139
  /**
 
 
140
  * Returns the current customer
141
+ *
142
  * @return Mage_Customer_Model_Customer Customer
143
  */
144
  public function getCustomer()
146
  if (Mage::app()->getStore()->isAdmin()) {
147
  return Mage::getSingleton('adminhtml/session_quote')->getCustomer();
148
  }
149
+
150
  return Mage::getSingleton('customer/session')->getCustomer();
151
  }
152
 
153
  /**
 
 
154
  * Returns the config setting if checkout is only allowed with a valid BLZ
155
+ *
156
  * @return boolean true/false
157
  */
158
  public function getCheckoutValidBlz()
159
  {
160
  return Mage::getStoreConfigFlag('payment/debit/checkout_valid_blz');
161
  }
162
+ }
app/code/community/Mage/Debit/Block/Info.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Debit Info Block
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -36,10 +36,8 @@
36
  class Mage_Debit_Block_Info extends Mage_Payment_Block_Info
37
  {
38
  /**
39
- * _construct
40
- *
41
  * Construct payment info block and set template
42
- *
43
  * @return void
44
  */
45
  protected function _construct()
@@ -49,25 +47,20 @@ class Mage_Debit_Block_Info extends Mage_Payment_Block_Info
49
  }
50
 
51
  /**
52
- * toPdf
53
- *
54
  * Sets the template for PDF print-outs
55
- *
56
- * @returns string Text for PDF
57
- *
58
  * @return string Text for PDF print-out
59
  */
60
  public function toPdf()
61
  {
62
  $this->setTemplate('debit/debit.phtml');
 
63
  return $this->toHtml();
64
  }
65
 
66
  /**
67
- * isEmailContext
68
- *
69
  * Checks if we are in the email context
70
- *
71
  * @return boolean true/false
72
  */
73
  public function isEmailContext()
@@ -82,7 +75,7 @@ class Mage_Debit_Block_Info extends Mage_Payment_Block_Info
82
  return true; // Admin
83
  } else {
84
  return false; // Admin View
85
- }
86
  } else {
87
  return true; // Frontend
88
  }
@@ -90,23 +83,20 @@ class Mage_Debit_Block_Info extends Mage_Payment_Block_Info
90
  }
91
 
92
  /**
93
- * sendDataInEmail
94
- *
95
  * Returns the config setting if bank data should be send in the email
96
- *
97
  * @return boolean true/false
98
  */
99
  public function sendDataInEmail()
100
  {
101
  $method = $this->getMethod()->getCode();
 
102
  return Mage::getStoreConfigFlag('payment/'.$method.'/sendmail');
103
  }
104
 
105
  /**
106
- * getEmailData
107
- *
108
  * Returns email data and mask the data if necessary
109
- *
110
  * @return array Bank data
111
  */
112
  public function getEmailData()
@@ -127,6 +117,7 @@ class Mage_Debit_Block_Info extends Mage_Payment_Block_Info
127
  $data['account_blz'] = $routing;
128
  $data['bank_name'] = '';
129
  }
 
130
  return $data;
131
  }
132
- }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Debit Info Block
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
36
  class Mage_Debit_Block_Info extends Mage_Payment_Block_Info
37
  {
38
  /**
 
 
39
  * Construct payment info block and set template
40
+ *
41
  * @return void
42
  */
43
  protected function _construct()
47
  }
48
 
49
  /**
 
 
50
  * Sets the template for PDF print-outs
51
+ *
 
 
52
  * @return string Text for PDF print-out
53
  */
54
  public function toPdf()
55
  {
56
  $this->setTemplate('debit/debit.phtml');
57
+
58
  return $this->toHtml();
59
  }
60
 
61
  /**
 
 
62
  * Checks if we are in the email context
63
+ *
64
  * @return boolean true/false
65
  */
66
  public function isEmailContext()
75
  return true; // Admin
76
  } else {
77
  return false; // Admin View
78
+ }
79
  } else {
80
  return true; // Frontend
81
  }
83
  }
84
 
85
  /**
 
 
86
  * Returns the config setting if bank data should be send in the email
87
+ *
88
  * @return boolean true/false
89
  */
90
  public function sendDataInEmail()
91
  {
92
  $method = $this->getMethod()->getCode();
93
+
94
  return Mage::getStoreConfigFlag('payment/'.$method.'/sendmail');
95
  }
96
 
97
  /**
 
 
98
  * Returns email data and mask the data if necessary
99
+ *
100
  * @return array Bank data
101
  */
102
  public function getEmailData()
117
  $data['account_blz'] = $routing;
118
  $data['bank_name'] = '';
119
  }
120
+
121
  return $data;
122
  }
123
+ }
app/code/community/Mage/Debit/Helper/Adminhtml.php ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of the Mage_Debit module.
4
+ *
5
+ * PHP version 5
6
+ *
7
+ * NOTICE OF LICENSE
8
+ *
9
+ * This source file is subject to the Open Software License (OSL 3.0)
10
+ * that is bundled with this package in the file LICENSE.txt.
11
+ * It is also available through the world-wide-web at this URL:
12
+ * http://opensource.org/licenses/osl-3.0.php
13
+ * If you did not receive a copy of the license and are unable to
14
+ * obtain it through the world-wide-web, please send an email
15
+ * to license@magentocommerce.com so we can send you a copy immediately.
16
+ *
17
+ * @category Mage
18
+ * @package Mage_Debit
19
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
+ * @link http://www.magentocommerce.com/extension/676/
23
+ */
24
+ /**
25
+ * Helper class for helper functionalities especially in the adminhtml area..
26
+ *
27
+ * @category Mage
28
+ * @package Mage_Debit
29
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
+ * @link http://www.magentocommerce.com/extension/676/
33
+ */
34
+ class Mage_Debit_Helper_Adminhtml extends Mage_Debit_Helper_Data
35
+ {
36
+ const XML_PATH_BANKACCOUNT_ACCOUNTOWNER = 'debitpayment/bankaccount/account_owner';
37
+ const XML_PATH_BANKACCOUNT_ROUTINGNUMBER = 'debitpayment/bankaccount/routing_number';
38
+ const XML_PATH_BANKACCOUNT_ACCOUNTNUMBER = 'debitpayment/bankaccount/account_number';
39
+
40
+ /**
41
+ * Check if the export requirements are reached for export. Store owner
42
+ * has to enter his bank account data.
43
+ *
44
+ * @return bool
45
+ */
46
+ public function hasExportRequirements()
47
+ {
48
+ if (Mage::getStoreConfig(self::XML_PATH_BANKACCOUNT_ACCOUNTOWNER) == ''
49
+ || Mage::getStoreConfig(self::XML_PATH_BANKACCOUNT_ROUTINGNUMBER) == ''
50
+ || Mage::getStoreConfig(self::XML_PATH_BANKACCOUNT_ACCOUNTNUMBER) == ''
51
+ ) {
52
+ return false;
53
+ }
54
+
55
+ return true;
56
+ }
57
+
58
+ /**
59
+ * Retrieve the bank account data of the store owenr as array
60
+ *
61
+ * @return array Bank account
62
+ */
63
+ public function getBankAccount()
64
+ {
65
+ return array(
66
+ 'name' => Mage::getStoreConfig(self::XML_PATH_BANKACCOUNT_ACCOUNTOWNER),
67
+ 'bank_code' => Mage::getStoreConfig(self::XML_PATH_BANKACCOUNT_ROUTINGNUMBER),
68
+ 'account_number' => Mage::getStoreConfig(self::XML_PATH_BANKACCOUNT_ACCOUNTNUMBER)
69
+ );
70
+ }
71
+
72
+ /**
73
+ * Retrieve a list of already synced orders, so that a single order is not
74
+ * exported multiple times.
75
+ *
76
+ * @return array Orders
77
+ */
78
+ public function getSyncedOrders()
79
+ {
80
+ $entityIds = array();
81
+ $collection = Mage::getModel('debit/orders')->getCollection();
82
+ if ($collection->count() > 0) {
83
+ foreach ($collection as $item) {
84
+ $entityIds[] = $item->getData('entity_id');
85
+ }
86
+ }
87
+
88
+ return $entityIds;
89
+ }
90
+
91
+ /**
92
+ * Updates the status of an export order item to "exported"..
93
+ *
94
+ * @param int $id Export Order ID
95
+ * @return bool
96
+ */
97
+ public function setStatusAsExported($id)
98
+ {
99
+ $model = Mage::getModel('debit/orders')->load($id);
100
+ $model->setData('status', 1);
101
+ $model->save();
102
+
103
+ return true;
104
+ }
105
+ }
app/code/community/Mage/Debit/Helper/Data.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Helper class for different helper functionalities..
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -36,12 +36,9 @@
36
  class Mage_Debit_Helper_Data extends Mage_Payment_Helper_Data
37
  {
38
  /**
39
- * getBankByBlz
40
- *
41
  * Returns the bankname by given blz
42
- *
43
- * @param string $blz BLZ
44
- *
45
  * @return null|string Bank Name
46
  */
47
  public function getBankByBlz($blz)
@@ -52,7 +49,7 @@ class Mage_Debit_Helper_Data extends Mage_Payment_Helper_Data
52
  $file = new Varien_Io_File();
53
  $file->open(
54
  array(
55
- 'path' => Mage::getModuleDir('etc', 'Mage_Debit')
56
  )
57
  );
58
  $file->streamOpen('bankleitzahlen.csv', 'r');
@@ -64,14 +61,13 @@ class Mage_Debit_Helper_Data extends Mage_Payment_Helper_Data
64
  } else {
65
  $data = unserialize($data);
66
  }
 
67
  return empty($data[$blz]) ? null : $data[$blz];
68
  }
69
 
70
  /**
71
- * _loadBlzCache
72
- *
73
  * Loads the blz data from cache
74
- *
75
  * @return mixed|false Cache data
76
  */
77
  protected function _loadBlzCache()
@@ -79,16 +75,14 @@ class Mage_Debit_Helper_Data extends Mage_Payment_Helper_Data
79
  if (!Mage::app()->useCache('config')) {
80
  return false;
81
  }
 
82
  return Mage::app()->loadCache($this->_getCacheKey());
83
  }
84
 
85
  /**
86
- * _saveBlzCache
87
- *
88
  * Saves the blz data in the cache
89
- *
90
- * @param array $data Blz data
91
- *
92
  * @return Mage_Debit_Helper_Data Self.
93
  */
94
  protected function _saveBlzCache($data)
@@ -97,14 +91,13 @@ class Mage_Debit_Helper_Data extends Mage_Payment_Helper_Data
97
  return false;
98
  }
99
  Mage::app()->saveCache($data, $this->_getCacheKey(), $this->_getCacheTags(), $this->_getCacheLifetime());
 
100
  return $this;
101
  }
102
 
103
  /**
104
- * _getCacheLifetime
105
- *
106
  * Returns the cache lifetime for the blz data.
107
- *
108
  * @return int Lifetime
109
  */
110
  protected function _getCacheLifetime()
@@ -113,10 +106,8 @@ class Mage_Debit_Helper_Data extends Mage_Payment_Helper_Data
113
  }
114
 
115
  /**
116
- * _getCacheKey
117
- *
118
  * Returns the cache key for the blz data.
119
- *
120
  * @return string Cache key
121
  */
122
  protected function _getCacheKey()
@@ -125,10 +116,8 @@ class Mage_Debit_Helper_Data extends Mage_Payment_Helper_Data
125
  }
126
 
127
  /**
128
- * _getCacheTags
129
- *
130
  * Returns the CONFIG cache tag
131
- *
132
  * @return array Cache tags
133
  */
134
  protected function _getCacheTags()
@@ -138,15 +127,15 @@ class Mage_Debit_Helper_Data extends Mage_Payment_Helper_Data
138
 
139
  /**
140
  * sanitizeData
141
- *
142
- * @param string $data Data
143
- *
144
  * @return string The sanitized string
145
  */
146
  public function sanitizeData($data)
147
  {
148
  $bad = array(' ', '-', '_', '.', ';', '/', '|');
149
  $sanitized = str_replace($bad, '', $data);
 
150
  return $sanitized;
151
  }
152
- }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Helper class for different helper functionalities..
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
36
  class Mage_Debit_Helper_Data extends Mage_Payment_Helper_Data
37
  {
38
  /**
 
 
39
  * Returns the bankname by given blz
40
+ *
41
+ * @param string $blz BLZ
 
42
  * @return null|string Bank Name
43
  */
44
  public function getBankByBlz($blz)
49
  $file = new Varien_Io_File();
50
  $file->open(
51
  array(
52
+ 'path' => Mage::getModuleDir('etc', 'Mage_Debit')
53
  )
54
  );
55
  $file->streamOpen('bankleitzahlen.csv', 'r');
61
  } else {
62
  $data = unserialize($data);
63
  }
64
+
65
  return empty($data[$blz]) ? null : $data[$blz];
66
  }
67
 
68
  /**
 
 
69
  * Loads the blz data from cache
70
+ *
71
  * @return mixed|false Cache data
72
  */
73
  protected function _loadBlzCache()
75
  if (!Mage::app()->useCache('config')) {
76
  return false;
77
  }
78
+
79
  return Mage::app()->loadCache($this->_getCacheKey());
80
  }
81
 
82
  /**
 
 
83
  * Saves the blz data in the cache
84
+ *
85
+ * @param array $data Blz data
 
86
  * @return Mage_Debit_Helper_Data Self.
87
  */
88
  protected function _saveBlzCache($data)
91
  return false;
92
  }
93
  Mage::app()->saveCache($data, $this->_getCacheKey(), $this->_getCacheTags(), $this->_getCacheLifetime());
94
+
95
  return $this;
96
  }
97
 
98
  /**
 
 
99
  * Returns the cache lifetime for the blz data.
100
+ *
101
  * @return int Lifetime
102
  */
103
  protected function _getCacheLifetime()
106
  }
107
 
108
  /**
 
 
109
  * Returns the cache key for the blz data.
110
+ *
111
  * @return string Cache key
112
  */
113
  protected function _getCacheKey()
116
  }
117
 
118
  /**
 
 
119
  * Returns the CONFIG cache tag
120
+ *
121
  * @return array Cache tags
122
  */
123
  protected function _getCacheTags()
127
 
128
  /**
129
  * sanitizeData
130
+ *
131
+ * @param string $data Data
 
132
  * @return string The sanitized string
133
  */
134
  public function sanitizeData($data)
135
  {
136
  $bad = array(' ', '-', '_', '.', ';', '/', '|');
137
  $sanitized = str_replace($bad, '', $data);
138
+
139
  return $sanitized;
140
  }
141
+ }
app/code/community/Mage/Debit/Model/Debit.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Debit Model
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -44,25 +44,22 @@ class Mage_Debit_Model_Debit extends Mage_Payment_Model_Method_Abstract
44
 
45
  /**
46
  * payment form block
47
- *
48
  * @var string MODULE/BLOCKNAME
49
  */
50
  protected $_formBlockType = 'debit/form';
51
 
52
  /**
53
  * payment info block
54
- *
55
  * @var string MODULE/BLOCKNAME
56
  */
57
  protected $_infoBlockType = 'debit/info';
58
 
59
  /**
60
- * assignData
61
- *
62
  * Assigns data to the payment info instance
63
- *
64
- * @param Varien_Object|array $data Payment Data from checkout
65
- *
66
  * @return Mage_Debit_Model_Debit Self.
67
  */
68
  public function assignData($data)
@@ -104,10 +101,8 @@ class Mage_Debit_Model_Debit extends Mage_Payment_Model_Method_Abstract
104
  }
105
 
106
  /**
107
- * getCustomText
108
- *
109
  * Returns the custom text for this payment method
110
- *
111
  * @return string Custom text
112
  */
113
  public function getCustomText()
@@ -116,23 +111,20 @@ class Mage_Debit_Model_Debit extends Mage_Payment_Model_Method_Abstract
116
  }
117
 
118
  /**
119
- * getAccountName
120
- *
121
  * Returns the account name from the payment info instance
122
- *
123
  * @return string Name
124
  */
125
  public function getAccountName()
126
  {
127
  $info = $this->getInfoInstance();
 
128
  return $info->getCcOwner();
129
  }
130
 
131
  /**
132
- * getAccountNumber
133
- *
134
  * Returns the account number from the payment info instance
135
- *
136
  * @return string Number
137
  */
138
  public function getAccountNumber()
@@ -145,14 +137,13 @@ class Mage_Debit_Model_Debit extends Mage_Payment_Model_Method_Abstract
145
  if (!is_numeric($data)) {
146
  $data = $info->decrypt($data);
147
  }
 
148
  return $data;
149
  }
150
 
151
  /**
152
- * getAccountBLZ
153
- *
154
  * Returns the account blz from the payment info instance
155
- *
156
  * @return string BLZ
157
  */
158
  public function getAccountBLZ()
@@ -162,14 +153,13 @@ class Mage_Debit_Model_Debit extends Mage_Payment_Model_Method_Abstract
162
  if (!is_numeric($data)) {
163
  $data = $info->decrypt($data);
164
  }
 
165
  return $data;
166
  }
167
 
168
  /**
169
- * getAccountBankname
170
- *
171
  * Returns the account bankname if applicable from the payment info instance
172
- *
173
  * @return string Bankname/Error
174
  */
175
  public function getAccountBankname()
@@ -178,21 +168,20 @@ class Mage_Debit_Model_Debit extends Mage_Payment_Model_Method_Abstract
178
  if ($bankName == null) {
179
  $bankName = Mage::helper('debit')->__('not available');
180
  }
 
181
  return $bankName;
182
  }
183
 
184
  /**
185
- * maskString
186
- *
187
  * Returns the encrypted data for mail
188
  *
189
- * @param string $data Data to crypt
190
- *
191
  * @return string Crypted data
192
  */
193
  public function maskString($data)
194
  {
195
  $crypt = str_repeat('*', strlen($data)-3) . substr($data, -3);
 
196
  return $crypt;
197
  }
198
- }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Debit Model
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
44
 
45
  /**
46
  * payment form block
47
+ *
48
  * @var string MODULE/BLOCKNAME
49
  */
50
  protected $_formBlockType = 'debit/form';
51
 
52
  /**
53
  * payment info block
54
+ *
55
  * @var string MODULE/BLOCKNAME
56
  */
57
  protected $_infoBlockType = 'debit/info';
58
 
59
  /**
 
 
60
  * Assigns data to the payment info instance
61
+ *
62
+ * @param Varien_Object|array $data Payment Data from checkout
 
63
  * @return Mage_Debit_Model_Debit Self.
64
  */
65
  public function assignData($data)
101
  }
102
 
103
  /**
 
 
104
  * Returns the custom text for this payment method
105
+ *
106
  * @return string Custom text
107
  */
108
  public function getCustomText()
111
  }
112
 
113
  /**
 
 
114
  * Returns the account name from the payment info instance
115
+ *
116
  * @return string Name
117
  */
118
  public function getAccountName()
119
  {
120
  $info = $this->getInfoInstance();
121
+
122
  return $info->getCcOwner();
123
  }
124
 
125
  /**
 
 
126
  * Returns the account number from the payment info instance
127
+ *
128
  * @return string Number
129
  */
130
  public function getAccountNumber()
137
  if (!is_numeric($data)) {
138
  $data = $info->decrypt($data);
139
  }
140
+
141
  return $data;
142
  }
143
 
144
  /**
 
 
145
  * Returns the account blz from the payment info instance
146
+ *
147
  * @return string BLZ
148
  */
149
  public function getAccountBLZ()
153
  if (!is_numeric($data)) {
154
  $data = $info->decrypt($data);
155
  }
156
+
157
  return $data;
158
  }
159
 
160
  /**
 
 
161
  * Returns the account bankname if applicable from the payment info instance
162
+ *
163
  * @return string Bankname/Error
164
  */
165
  public function getAccountBankname()
168
  if ($bankName == null) {
169
  $bankName = Mage::helper('debit')->__('not available');
170
  }
171
+
172
  return $bankName;
173
  }
174
 
175
  /**
 
 
176
  * Returns the encrypted data for mail
177
  *
178
+ * @param string $data Data to crypt
 
179
  * @return string Crypted data
180
  */
181
  public function maskString($data)
182
  {
183
  $crypt = str_repeat('*', strlen($data)-3) . substr($data, -3);
184
+
185
  return $crypt;
186
  }
187
+ }
app/code/community/Mage/Debit/Model/Entity/Customer/Attribute/Backend/Encrypted.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Customer Attribute Backend Encrypted
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -37,12 +37,9 @@ class Mage_Debit_Model_Entity_Customer_Attribute_Backend_Encrypted
37
  extends Mage_Eav_Model_Entity_Attribute_Backend_Abstract
38
  {
39
  /**
40
- * beforeSave
41
- *
42
  * Encrypts the value before saving
43
- *
44
- * @param <type> $object Object
45
- *
46
  * @return void
47
  */
48
  public function beforeSave($object)
@@ -54,12 +51,9 @@ class Mage_Debit_Model_Entity_Customer_Attribute_Backend_Encrypted
54
  }
55
 
56
  /**
57
- * afterLoad
58
- *
59
  * Decrypts the value after load
60
- *
61
- * @param <type> $object Object
62
- *
63
  * @return void
64
  */
65
  public function afterLoad($object)
@@ -69,4 +63,4 @@ class Mage_Debit_Model_Entity_Customer_Attribute_Backend_Encrypted
69
  $value = $helper->decrypt($object->getData($attributeName));
70
  $object->setData($attributeName, $value);
71
  }
72
- }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Customer Attribute Backend Encrypted
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
37
  extends Mage_Eav_Model_Entity_Attribute_Backend_Abstract
38
  {
39
  /**
 
 
40
  * Encrypts the value before saving
41
+ *
42
+ * @param <type> $object Object
 
43
  * @return void
44
  */
45
  public function beforeSave($object)
51
  }
52
 
53
  /**
 
 
54
  * Decrypts the value after load
55
+ *
56
+ * @param <type> $object Object
 
57
  * @return void
58
  */
59
  public function afterLoad($object)
63
  $value = $helper->decrypt($object->getData($attributeName));
64
  $object->setData($attributeName, $value);
65
  }
66
+ }
app/code/community/Mage/Debit/Model/Mysql4/Orders.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of the Mage_Debit module.
4
+ *
5
+ * PHP version 5
6
+ *
7
+ * NOTICE OF LICENSE
8
+ *
9
+ * This source file is subject to the Open Software License (OSL 3.0)
10
+ * that is bundled with this package in the file LICENSE.txt.
11
+ * It is also available through the world-wide-web at this URL:
12
+ * http://opensource.org/licenses/osl-3.0.php
13
+ * If you did not receive a copy of the license and are unable to
14
+ * obtain it through the world-wide-web, please send an email
15
+ * to license@magentocommerce.com so we can send you a copy immediately.
16
+ *
17
+ * @category Mage
18
+ * @package Mage_Debit
19
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
+ * @link http://www.magentocommerce.com/extension/676/
23
+ */
24
+ /**
25
+ * Resource Model for Export Orders
26
+ *
27
+ * @category Mage
28
+ * @package Mage_Debit
29
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
+ * @link http://www.magentocommerce.com/extension/676/
33
+ */
34
+ class Mage_Debit_Model_Mysql4_Orders extends Mage_Core_Model_Mysql4_Abstract
35
+ {
36
+ /**
37
+ * (non-PHPdoc)
38
+ * @see Mage_Core_Model_Resource_Abstract::_construct()
39
+ */
40
+ protected function _construct()
41
+ {
42
+ $this->_init('debit/order_grid', 'id');
43
+ }
44
+ }
app/code/community/Mage/Debit/Model/Mysql4/Orders/Collection.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of the Mage_Debit module.
4
+ *
5
+ * PHP version 5
6
+ *
7
+ * NOTICE OF LICENSE
8
+ *
9
+ * This source file is subject to the Open Software License (OSL 3.0)
10
+ * that is bundled with this package in the file LICENSE.txt.
11
+ * It is also available through the world-wide-web at this URL:
12
+ * http://opensource.org/licenses/osl-3.0.php
13
+ * If you did not receive a copy of the license and are unable to
14
+ * obtain it through the world-wide-web, please send an email
15
+ * to license@magentocommerce.com so we can send you a copy immediately.
16
+ *
17
+ * @category Mage
18
+ * @package Mage_Debit
19
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
+ * @link http://www.magentocommerce.com/extension/676/
23
+ */
24
+ /**
25
+ * Resource Model Collection for Export Orders
26
+ *
27
+ * @category Mage
28
+ * @package Mage_Debit
29
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
+ * @link http://www.magentocommerce.com/extension/676/
33
+ */
34
+ class Mage_Debit_Model_Mysql4_Orders_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
35
+ {
36
+ /**
37
+ * (non-PHPdoc)
38
+ * @see Mage_Core_Model_Resource_Db_Collection_Abstract::_construct()
39
+ */
40
+ protected function _construct()
41
+ {
42
+ $this->_init('debit/orders');
43
+ }
44
+ }
app/code/community/Mage/Debit/Model/Observer.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Observer
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -37,15 +37,13 @@ class Mage_Debit_Model_Observer
37
  {
38
  /**
39
  * paymentMethodIsActive
40
- *
41
  * Checks if DebitPayment is allowed for specific customer groups and if a
42
- * registered customer has the required minimum amount of orders to be
43
  * allowed to order via DebitPayment.
44
- *
45
- * Magento Event: payment_method_is_active
46
- *
47
- * @param Varien_Event_Observer $observer Observer
48
- *
49
  * @return void
50
  */
51
  public function paymentMethodIsActive($observer)
@@ -66,11 +64,12 @@ class Mage_Debit_Model_Observer
66
  if (!Mage::getStoreConfigFlag('payment/debit/specificgroup_all')) {
67
  $customerGroupId = Mage_Customer_Model_Group::NOT_LOGGED_IN_ID;
68
  if ($session->isLoggedIn()) {
69
- $customerGroupId = $session->getCustomerGroupId();
70
  }
71
  $allowedGroupIds = explode(',', Mage::getStoreConfig('payment/debit/specificgroup'));
72
  if (!in_array($customerGroupId, $allowedGroupIds)) {
73
  $observer->getEvent()->getResult()->isAvailable = false;
 
74
  return;
75
  }
76
  }
@@ -81,6 +80,7 @@ class Mage_Debit_Model_Observer
81
  $customerId = $session->getCustomerId();
82
  if (is_null($customerId)) { // not logged in
83
  $observer->getEvent()->getResult()->isAvailable = false;
 
84
  return;
85
  }
86
  // Load orders and check
@@ -97,21 +97,18 @@ class Mage_Debit_Model_Observer
97
  ->load();
98
  if (count($orders) < $minOrderCount) {
99
  $observer->getEvent()->getResult()->isAvailable = false;
 
100
  return;
101
  }
102
  }
103
  }
104
 
105
  /**
106
- * saveAccountInfo
107
- *
108
  * Saves the account data after a successful order in the specific
109
  * customer model.
110
- *
111
- * Magento Event: sales_order_save_after
112
- *
113
- * @param Varien_Event_Observer $observer Observer
114
- *
115
  * @return void
116
  */
117
  public function saveAccountInfo($observer)
@@ -134,12 +131,9 @@ class Mage_Debit_Model_Observer
134
  }
135
 
136
  /**
137
- * _getOrderCustoemr
138
- *
139
  * Checks the current order and returns the customer model
140
- *
141
- * @param Mage_Sales_Model_Order $order Current order
142
- *
143
  * @return Mage_Customer_Model_Customer|null Customer model or null
144
  */
145
  public function _getOrderCustomer($order)
@@ -154,6 +148,7 @@ class Mage_Debit_Model_Observer
154
  return $customer;
155
  }
156
  }
 
157
  return null;
158
  }
159
- }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Observer
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
37
  {
38
  /**
39
  * paymentMethodIsActive
40
+ *
41
  * Checks if DebitPayment is allowed for specific customer groups and if a
42
+ * registered customer has the required minimum amount of orders to be
43
  * allowed to order via DebitPayment.
44
+ *
45
+ * @magentoEvent payment_method_is_active
46
+ * @param Varien_Event_Observer $observer Observer
 
 
47
  * @return void
48
  */
49
  public function paymentMethodIsActive($observer)
64
  if (!Mage::getStoreConfigFlag('payment/debit/specificgroup_all')) {
65
  $customerGroupId = Mage_Customer_Model_Group::NOT_LOGGED_IN_ID;
66
  if ($session->isLoggedIn()) {
67
+ $customerGroupId = $session->getCustomerGroupId();
68
  }
69
  $allowedGroupIds = explode(',', Mage::getStoreConfig('payment/debit/specificgroup'));
70
  if (!in_array($customerGroupId, $allowedGroupIds)) {
71
  $observer->getEvent()->getResult()->isAvailable = false;
72
+
73
  return;
74
  }
75
  }
80
  $customerId = $session->getCustomerId();
81
  if (is_null($customerId)) { // not logged in
82
  $observer->getEvent()->getResult()->isAvailable = false;
83
+
84
  return;
85
  }
86
  // Load orders and check
97
  ->load();
98
  if (count($orders) < $minOrderCount) {
99
  $observer->getEvent()->getResult()->isAvailable = false;
100
+
101
  return;
102
  }
103
  }
104
  }
105
 
106
  /**
 
 
107
  * Saves the account data after a successful order in the specific
108
  * customer model.
109
+ *
110
+ * @magentoEvent sales_order_save_after
111
+ * @param Varien_Event_Observer $observer Observer
 
 
112
  * @return void
113
  */
114
  public function saveAccountInfo($observer)
131
  }
132
 
133
  /**
 
 
134
  * Checks the current order and returns the customer model
135
+ *
136
+ * @param Mage_Sales_Model_Order $order Current order
 
137
  * @return Mage_Customer_Model_Customer|null Customer model or null
138
  */
139
  public function _getOrderCustomer($order)
148
  return $customer;
149
  }
150
  }
151
+
152
  return null;
153
  }
154
+ }
app/code/community/Mage/Debit/Model/Orders.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of the Mage_Debit module.
4
+ *
5
+ * PHP version 5
6
+ *
7
+ * NOTICE OF LICENSE
8
+ *
9
+ * This source file is subject to the Open Software License (OSL 3.0)
10
+ * that is bundled with this package in the file LICENSE.txt.
11
+ * It is also available through the world-wide-web at this URL:
12
+ * http://opensource.org/licenses/osl-3.0.php
13
+ * If you did not receive a copy of the license and are unable to
14
+ * obtain it through the world-wide-web, please send an email
15
+ * to license@magentocommerce.com so we can send you a copy immediately.
16
+ *
17
+ * @category Mage
18
+ * @package Mage_Debit
19
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
+ * @link http://www.magentocommerce.com/extension/676/
23
+ */
24
+ /**
25
+ * Model for Export Orders
26
+ *
27
+ * @category Mage
28
+ * @package Mage_Debit
29
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
+ * @link http://www.magentocommerce.com/extension/676/
33
+ */
34
+ class Mage_Debit_Model_Orders extends Mage_Core_Model_Abstract
35
+ {
36
+ /**
37
+ * (non-PHPdoc)
38
+ * @see Varien_Object::_construct()
39
+ */
40
+ protected function _construct()
41
+ {
42
+ $this->_init('debit/orders');
43
+ }
44
+ }
app/code/community/Mage/Debit/Model/System/Config/Source/Customer/Group.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,31 +17,31 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * System Config Customer Groups
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
33
  * @link http://www.magentocommerce.com/extension/676/
34
  */
35
  class Mage_Debit_Model_System_Config_Source_Customer_Group
36
  {
37
- /**
38
  * @var array Customer Groups
39
  */
40
  protected $_options;
41
 
42
  /**
43
  * Returns the customer groups as an array for system configuration
44
- *
45
  * @return array Customer Groups
46
  */
47
  public function toOptionArray()
@@ -60,6 +60,7 @@ class Mage_Debit_Model_System_Config_Source_Customer_Group
60
  )
61
  );
62
  }
 
63
  return $this->_options;
64
  }
65
  }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * System Config Customer Groups
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
33
  * @link http://www.magentocommerce.com/extension/676/
34
  */
35
  class Mage_Debit_Model_System_Config_Source_Customer_Group
36
  {
37
+ /**
38
  * @var array Customer Groups
39
  */
40
  protected $_options;
41
 
42
  /**
43
  * Returns the customer groups as an array for system configuration
44
+ *
45
  * @return array Customer Groups
46
  */
47
  public function toOptionArray()
60
  )
61
  );
62
  }
63
+
64
  return $this->_options;
65
  }
66
  }
app/code/community/Mage/Debit/controllers/AccountController.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * AccountController
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -36,8 +36,6 @@
36
  class Mage_Debit_AccountController extends Mage_Core_Controller_Front_Action
37
  {
38
  /**
39
- * _getSession
40
- *
41
  * Retrieve customer session object
42
  *
43
  * @return Mage_Customer_Model_Session
@@ -49,7 +47,7 @@ class Mage_Debit_AccountController extends Mage_Core_Controller_Front_Action
49
 
50
  /**
51
  * preDispatch
52
- *
53
  * @return void
54
  */
55
  public function preDispatch()
@@ -63,7 +61,7 @@ class Mage_Debit_AccountController extends Mage_Core_Controller_Front_Action
63
 
64
  /**
65
  * editAction
66
- *
67
  * @return void
68
  */
69
  public function editAction()
@@ -75,10 +73,9 @@ class Mage_Debit_AccountController extends Mage_Core_Controller_Front_Action
75
 
76
  /**
77
  * saveAction
78
- *
79
  * @throws Mage_Core_Exception
80
  * @throws Exception
81
- *
82
  * @return void
83
  */
84
  public function saveAction()
@@ -99,15 +96,14 @@ class Mage_Debit_AccountController extends Mage_Core_Controller_Front_Action
99
  $this->_getSession()->setCustomer($customer)
100
  ->addSuccess($this->__('Debit account information was successfully saved'));
101
  $this->_redirect('customer/account');
 
102
  return;
103
- }
104
- catch (Mage_Core_Exception $e) {
105
  $this->_getSession()->setCustomerFormData($this->getRequest()->getPost())
106
  ->addError($e->getMessage());
107
- }
108
- catch (Exception $e) {
109
  $this->_getSession()->setCustomerFormData($this->getRequest()->getPost())
110
  ->addException($e, $this->__('Can\'t save customer'));
111
  }
112
  }
113
- }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * AccountController
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
36
  class Mage_Debit_AccountController extends Mage_Core_Controller_Front_Action
37
  {
38
  /**
 
 
39
  * Retrieve customer session object
40
  *
41
  * @return Mage_Customer_Model_Session
47
 
48
  /**
49
  * preDispatch
50
+ *
51
  * @return void
52
  */
53
  public function preDispatch()
61
 
62
  /**
63
  * editAction
64
+ *
65
  * @return void
66
  */
67
  public function editAction()
73
 
74
  /**
75
  * saveAction
76
+ *
77
  * @throws Mage_Core_Exception
78
  * @throws Exception
 
79
  * @return void
80
  */
81
  public function saveAction()
96
  $this->_getSession()->setCustomer($customer)
97
  ->addSuccess($this->__('Debit account information was successfully saved'));
98
  $this->_redirect('customer/account');
99
+
100
  return;
101
+ } catch (Mage_Core_Exception $e) {
 
102
  $this->_getSession()->setCustomerFormData($this->getRequest()->getPost())
103
  ->addError($e->getMessage());
104
+ } catch (Exception $e) {
 
105
  $this->_getSession()->setCustomerFormData($this->getRequest()->getPost())
106
  ->addException($e, $this->__('Can\'t save customer'));
107
  }
108
  }
109
+ }
app/code/community/Mage/Debit/controllers/Adminhtml/OrderController.php ADDED
@@ -0,0 +1,226 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of the Mage_Debit module.
4
+ *
5
+ * PHP version 5
6
+ *
7
+ * NOTICE OF LICENSE
8
+ *
9
+ * This source file is subject to the Open Software License (OSL 3.0)
10
+ * that is bundled with this package in the file LICENSE.txt.
11
+ * It is also available through the world-wide-web at this URL:
12
+ * http://opensource.org/licenses/osl-3.0.php
13
+ * If you did not receive a copy of the license and are unable to
14
+ * obtain it through the world-wide-web, please send an email
15
+ * to license@magentocommerce.com so we can send you a copy immediately.
16
+ *
17
+ * @category Mage
18
+ * @package Mage_Debit
19
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
+ * @link http://www.magentocommerce.com/extension/676/
23
+ */
24
+ require_once (Mage::getBaseDir().'/lib/DTA/DTA.php');
25
+ /**
26
+ * Export Order Controller
27
+ *
28
+ * @category Mage
29
+ * @package Mage_Debit
30
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
33
+ * @link http://www.magentocommerce.com/extension/676/
34
+ */
35
+ class Mage_Debit_Adminhtml_OrderController extends Mage_Adminhtml_Controller_Action
36
+ {
37
+ /**
38
+ * Loads the grid layout with the debit payment orders..
39
+ *
40
+ * @return void
41
+ */
42
+ public function indexAction()
43
+ {
44
+ $this->loadLayout();
45
+ $this->_setActiveMenu('sales/debitpayment');
46
+ $this->renderLayout();
47
+ }
48
+
49
+ /**
50
+ * Fetch all orders with the payment method "Debit Payment" and import them
51
+ * into the export list (table: debit_order_grid)
52
+ *
53
+ * @return void
54
+ */
55
+ public function syncAction()
56
+ {
57
+ $syncedOrders = $this->_getDebitHelper()->getSyncedOrders();
58
+ $syncedOrdersCount = 0;
59
+
60
+ // Sync orders
61
+ $collection = Mage::getResourceModel('sales/order_grid_collection');
62
+ if (count($syncedOrders) > 0) {
63
+ $collection->addFieldToFilter('entity_id', array('nin' => $syncedOrders));
64
+ }
65
+ $collection->getSelect()->joinLeft('sales_flat_order', 'sales_flat_order.entity_id = main_table.entity_id', array('customer_id'));
66
+ $collection->getSelect()->joinLeft('sales_flat_order_payment', 'sales_flat_order_payment.parent_id = main_table.entity_id', array('method'));
67
+ $collection->getSelect()->where('method = ?', 'debit');
68
+
69
+ foreach ($collection as $order) {
70
+ /* @var $order Mage_Sales_Model_Order */
71
+
72
+ // Remove some values from the data array
73
+ $unsetData = array('status', 'base_grand_total', 'base_total_paid', 'total_paid', 'updated_at', 'method', 'shipping_name', 'base_currency_code', 'store_name');
74
+ foreach ($unsetData as $key) {
75
+ $order->unsetData($key);
76
+ }
77
+
78
+ /* @var $model Mage_Debit_Model_Orders */
79
+ $model = Mage::getModel('debit/orders');
80
+ $model->addData($order->getData());
81
+ $model->save();
82
+
83
+ $syncedOrdersCount++;
84
+ }
85
+
86
+ if ($syncedOrdersCount > 0) {
87
+ $this->_getSession()->addSuccess(
88
+ $this->_getDebitHelper()->__('Orders successfully synced for export.')
89
+ );
90
+ } else {
91
+ $this->_getSession()->addError(
92
+ $this->_getDebitHelper()->__('No orders available for sync.')
93
+ );
94
+ }
95
+ $this->_redirect('*/*');
96
+ }
97
+
98
+ /**
99
+ * Export the order list as DTA file
100
+ *
101
+ * @return void|Mage_Core_Controller_Varien_Action
102
+ */
103
+ public function exportdtausAction()
104
+ {
105
+ $collection = $this->_hasOrdersToExport();
106
+ if (!$collection) {
107
+ $this->_redirect('*/*');
108
+
109
+ return;
110
+ }
111
+
112
+ // Create new object and set store owner bank account data
113
+ $file = new DTA(DTA_DEBIT);
114
+ $file->setAccountFileSender($this->_getDebitHelper()->getBankAccount());
115
+
116
+ // Add orders
117
+ foreach ($collection as $order) {
118
+ /* @var $orderModel Mage_Sales_Model_Order */
119
+ $orderModel = Mage::getModel('sales/order')->load($order->getData('entity_id'));
120
+ /* @var $payment Mage_Debit_Model_Debit */
121
+ $paymentMethod = $orderModel->getPayment()->getMethodInstance();
122
+
123
+ $file->addExchange(
124
+ array(
125
+ 'name' => $paymentMethod->getAccountName(),
126
+ 'bank_code' => $paymentMethod->getAccountBLZ(),
127
+ 'account_number' => $paymentMethod->getAccountNumber(),
128
+ ),
129
+ round($order->getData('grand_total'), 2),
130
+ array(
131
+ 'Bestellung Nr. '.$order->getData('increment_id')
132
+ )
133
+ );
134
+
135
+ $this->_getDebitHelper()->setStatusAsExported($order->getId());
136
+ }
137
+
138
+ return $this->_prepareDownloadResponse('EXPORT'.date('YmdHis'), $file->getFileContent());
139
+ }
140
+
141
+ /**
142
+ * Export the order list as CSV
143
+ *
144
+ * @return void|Mage_Core_Controller_Varien_Action
145
+ */
146
+ public function exportcsvAction()
147
+ {
148
+ $collection = $this->_hasOrdersToExport();
149
+ if (!$collection) {
150
+ $this->_redirect('*/*');
151
+
152
+ return;
153
+ }
154
+
155
+ $fileName = 'EXPORT'.date('YmdHis').'.csv';
156
+
157
+ // Open file
158
+ $io = new Varien_Io_File();
159
+ $io->open(array('path' => Mage::getBaseDir('var')));
160
+ $io->streamOpen($fileName);
161
+
162
+ // Add headline
163
+ $row = array(
164
+ 'Kundenname',
165
+ 'BLZ',
166
+ 'Kontonummer',
167
+ 'Betrag',
168
+ 'Verwendungszweck'
169
+ );
170
+ $io->streamWriteCsv($row);
171
+
172
+ // Add rows
173
+ foreach ($collection as $order) {
174
+ /* @var $orderModel Mage_Sales_Model_Order */
175
+ $orderModel = Mage::getModel('sales/order')->load($order->getData('entity_id'));
176
+ /* @var $payment Mage_Debit_Model_Debit */
177
+ $paymentMethod = $orderModel->getPayment()->getMethodInstance();
178
+
179
+ $row = array(
180
+ 'name' => $paymentMethod->getAccountName(),
181
+ 'bank_code' => $paymentMethod->getAccountBLZ(),
182
+ 'account_number' => $paymentMethod->getAccountNumber(),
183
+ 'amount' => number_format($order->getData('grand_total'), 2, ',', '.').' '.$order->getData('order_currency_code'),
184
+ 'purpose' => 'Bestellung Nr. '.$order->getData('increment_id')
185
+ );
186
+ $io->streamWriteCsv($row);
187
+
188
+ $this->_getDebitHelper()->setStatusAsExported($order->getId());
189
+ }
190
+
191
+ // Close file, get file contents and delete temporary file
192
+ $io->close();
193
+ $filePath = Mage::getBaseDir('var') . DS . $fileName;
194
+ $fileContents = file_get_contents($filePath);
195
+ $io->rm($fileName);
196
+
197
+ return $this->_prepareDownloadResponse($fileName, $fileContents);
198
+ }
199
+
200
+ /**
201
+ * Check if there are orders available for export..
202
+ *
203
+ * @return void
204
+ */
205
+ protected function _hasOrdersToExport()
206
+ {
207
+ $collection = Mage::getModel('debit/orders')->getCollection()->addFieldToFilter('status', 0);
208
+ if ($collection->count() == 0) {
209
+ $this->_getSession()->addError($this->_getDebitHelper()->__('No orders to export.'));
210
+
211
+ return false;
212
+ }
213
+
214
+ return $collection;
215
+ }
216
+
217
+ /**
218
+ * Retrieve the helper class
219
+ *
220
+ * @return Mage_Debit_Helper_Adminhtml Helper
221
+ */
222
+ protected function _getDebitHelper()
223
+ {
224
+ return Mage::helper('debit/adminhtml');
225
+ }
226
+ }
app/code/community/Mage/Debit/controllers/AjaxController.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * AjaxController
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -36,10 +36,8 @@
36
  class Mage_Debit_AjaxController extends Mage_Core_Controller_Front_Action
37
  {
38
  /**
39
- * checkblzAction
40
- *
41
  * Checks the BLZ if it exists and returns the bankname or an error message
42
- *
43
  * @return void
44
  */
45
  public function checkblzAction()
@@ -58,4 +56,4 @@ class Mage_Debit_AjaxController extends Mage_Core_Controller_Front_Action
58
  }
59
  $this->getResponse()->setBody(Zend_Json::encode($result));
60
  }
61
- }
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * AjaxController
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
36
  class Mage_Debit_AjaxController extends Mage_Core_Controller_Front_Action
37
  {
38
  /**
 
 
39
  * Checks the BLZ if it exists and returns the bankname or an error message
40
+ *
41
  * @return void
42
  */
43
  public function checkblzAction()
56
  }
57
  $this->getResponse()->setBody(Zend_Json::encode($result));
58
  }
59
+ }
app/code/community/Mage/Debit/etc/adminhtml.xml ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ /**
4
+ * This file is part of the Mage_Debit module.
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Open Software License (OSL 3.0)
9
+ * that is bundled with this package in the file LICENSE.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/osl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * @category Mage
17
+ * @package Mage_Debit
18
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
19
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
20
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
+ * @link http://www.magentocommerce.com/extension/676/
22
+ */
23
+ -->
24
+ <config>
25
+ <menu>
26
+ <sales>
27
+ <children>
28
+ <debitpayment translate="title" module="debit">
29
+ <title>Debit Payment Orders</title>
30
+ <action>debit/adminhtml_order</action>
31
+ <sort_order>11</sort_order>
32
+ </debitpayment>
33
+ </children>
34
+ </sales>
35
+ </menu>
36
+ <acl>
37
+ <resources>
38
+ <admin>
39
+ <children>
40
+ <system>
41
+ <children>
42
+ <config>
43
+ <children>
44
+ <debitpayment translate="title" module="debit">
45
+ <title>Debit Payment</title>
46
+ </debitpayment>
47
+ </children>
48
+ </config>
49
+ </children>
50
+ </system>
51
+ </children>
52
+ </admin>
53
+ </resources>
54
+ </acl>
55
+ </config>
app/code/community/Mage/Debit/etc/bankleitzahlen.csv CHANGED
@@ -14,8 +14,9 @@
14
  10030500;Bankhaus Löbbecke Berlin
15
  10030600;North Channel Bank Mainz
16
  10030700;Gries & Heissel Wiesbaden
17
- 10033300;Santander Consumer B Berlin
18
  10040000;Commerzbank -West- Berlin
 
19
  10040048;Commerzbank BER GF-B48
20
  10040060;Commerzbank Gf 160 Berlin
21
  10040061;Commerzbank Gf 161 Berlin
@@ -66,9 +67,9 @@
66
  10120760;UniCredit exHypo Ndl260 Bln
67
  10120800;VON ESSEN Bank
68
  10120900;readybank
69
- 10120999;readybank Gf GAA Berlin
70
  10130600;Isbank Berlin
71
  10130800;BIW Bank
 
72
  10310600;Tradegate Berlin
73
  12016836;KfW Berlin
74
  12030000;Deutsche Kreditbank Berlin
@@ -78,15 +79,16 @@
78
  12060000;DZ BANK
79
  12070000;Deutsche Bank Ld Brandenbg
80
  12070024;Deutsche Bank PGK Brandenbg
 
 
81
  12080000;Commerzbank Fil II Berlin
82
  12090640;apoBank -ZV-Ost- Berlin
83
  12096597;Sparda-Bank Berlin
84
  13000000;BBk Rostock
85
  13010111;SEB Rostock
86
- 13020780;UniCredit ex-Hypo Rostock
87
  13040000;Commerzbank Rostock
88
  13050000;Ostseesparkasse Rostock
89
- 13051042;Kreissparkasse Rügen
90
  13061008;Volksbank Wolgast
91
  13061028;Volksbank Raiffeisenbank
92
  13061078;VB u Raiffbk
@@ -144,14 +146,13 @@
144
  17040000;Commerzbank Frankfurt Oder
145
  17052000;Sparkasse Barnim Eberswalde
146
  17052302;St Spk Schwedt
147
- 17052472;St Spk Frankfurt Oder
148
  17054040;Spk Märkisch-Oderland
149
  17055050;Sparkasse Oder-Spree
150
  17056060;Spk Uckermark Prenzlau
151
  17062428;Raiff-VB Oder-Spree Beeskow
152
  17080000;Commerzbank Frankfurt, O
153
  17092404;VR Bank Fürstenwalde
154
- 18000000;BBk Cottbus
155
  18020086;UniCredit Bank-HypoVereinbk
156
  18040000;Commerzbank Cottbus
157
  18050000;Sparkasse Spree-Neiße
@@ -162,22 +163,21 @@
162
  18080000;Commerzbank Cottbus
163
  18092684;Spreewaldbank Lübben
164
  18092744;Volksbank Spree-Neiße
165
- 18092794;VR Bank Cottbus -alt-
166
  20000000;BBk Hamburg
167
  20010020;Postbank -Giro- Hamburg
168
  20010111;SEB Hamburg
169
  20010424;Aareal Bank
170
  20020200;SEB Merchant Bank Hamburg
171
  20020500;Jyske Bank Hamburg
172
- 20020860;UniCredit ex-Hypo Hamburg
173
  20020900;Signal Iduna Bauspar
174
  20030000;UniCredit Bank-HypoVereinbk
175
- 20030300;Donner & Reuschel
176
  20030400;Marcardbank Hamburg
177
  20030600;Sydbank Hamburg
178
  20030700;Merck Finck & Co Hamburg
179
  20030900;Wölbernbank Hamburg
180
  20040000;Commerzbank Hamburg
 
181
  20040040;Commerzbank GF RME, Hamburg
182
  20040048;Commerzbank HBG GF-H48
183
  20040050;Commerzbank GF COC
@@ -196,7 +196,7 @@
196
  20069125;Kaltenkirchener Bank
197
  20069130;Raiffbk
198
  20069144;Raiffeisenbank Seestermühe
199
- 20069177;Raiffbk Südstormarn
200
  20069232;Raiffbk Struvenhütten
201
  20069625;Volksbank Gnarrenburg
202
  20069641;Raiffeisenbank Owschlag
@@ -234,7 +234,7 @@
234
  20090745;EBANK Gf Cash Hamburg
235
  20090900;PSD Bank Nord Hamburg
236
  20110022;Postbank -Spar- Hamburg
237
- 20110401;Eurohypo ehem DHH
238
  20110700;Tokyo-Mitsubishi UFJ Hambg
239
  20110800;Bank of China Hamburg
240
  20120000;Berenbergbank
@@ -249,7 +249,7 @@
249
  20130400;GRENKE BANK
250
  20130412;GRENKE BANK Hamburg
251
  20130600;Barclaycard
252
- 20133300;Santander Consumer Bank HH
253
  20190003;Hamburger Volksbank
254
  20190109;VB Stormarn
255
  20190206;VB Hamburg Ost-West -alt-
@@ -257,7 +257,7 @@
257
  20190800;MKB Hamburg
258
  20210200;Bank Melli Iran Hamburg
259
  20210300;Bank Saderat Iran Hamburg
260
- 20220100;DnB NOR Bank ASA Hamburg
261
  20220400;M.M. Warburg Hyp Hamburg
262
  20230300;Schröderbank Hamburg
263
  20230600;Isbank Hamburg
@@ -343,13 +343,12 @@
343
  21230086;UniCredit Bk ex VereinWest
344
  21240040;Commerzbank Neumünster
345
  21241540;Commerzbank Bad Bramstedt
346
- 21250000;St Spk Neumünster -alt-
347
  21261089;Raiffeisenbank Wasbek -alt-
348
  21261227;Raiffbk Kl-Kummerfeld -alt-
349
  21270020;Deutsche Bank Neumünster
350
  21270024;Deutsche Bank PGK Neumünste
351
  21280002;Commerzbank Neumünster
352
- 21290016;VB Raiffbk Neumünster
353
  21340010;Commerzbank Neustadt Holst
354
  21352240;Spk Holstein Eutin
355
  21390008;VR Bk Ostholstein Nord-Plön
@@ -363,13 +362,12 @@
363
  21463603;VB-Raiffbk i Kr Rendsburg
364
  21464671;Raiffbk Todenbüttel
365
  21480003;Commerzbank Rendsburg
366
- 21500000;BBk Flensburg
367
  21510600;Sydbank Fil. Flensburg
368
  21520100;Union-Bank Flensburg
369
  21530080;UniCredit Bk ex VereinWest
370
  21540060;Commerzbank Flensburg
371
  21550050;Nord-Ostsee Spk Flensburg
372
- 21563321;Raiffbk Flensburg -alt-
373
  21565316;Raiffbk Handewitt
374
  21566356;Volks- u Raiffeisenbank
375
  21567360;Raiffbk Kleinjörl -alt-
@@ -395,7 +393,7 @@
395
  21741825;Commerzbank Westerland
396
  21750000;Nord-Ostsee Spk Schleswig
397
  21751230;Spk Bredstedt
398
- 21762550;Volksbank-Raiffbk Husum
399
  21763542;VR Bank Niebüll
400
  21770011;Deutsche Bank Husum Nordsee
401
  21770024;Deutsche Bank PGK Husum
@@ -419,7 +417,6 @@
419
  22141428;Commerzbank Pinneberg
420
  22141628;Commerzbank Uetersen
421
  22150000;Spk Elmshorn
422
- 22151410;Kr Spk Pinneberg -alt-
423
  22151730;St Spk Wedel
424
  22163114;Raiffbk Elbmarsch Heist
425
  22180000;Commerzbank Elmshorn
@@ -449,7 +446,7 @@
449
  23052750;Kr Spk Herzogtum Lauenburg
450
  23061220;Raiffeisenbank Leezen
451
  23062124;Raiffeisenbank Bargteheide
452
- 23062807;Volks- u Raiffbk Mölln
453
  23063129;Raiffeisenbank Lauenburg
454
  23064107;Raiffeisenbank Büchen
455
  23070700;Deutsche Bank PGK Lübeck
@@ -463,7 +460,7 @@
463
  24030000;UniCredit Bk ex VereinWest
464
  24040000;Commerzbank Lüneburg
465
  24050110;Spk Lüneburg
466
- 24060300;VB Nordheide
467
  24061392;VB Bleckede-Dahlenbg -alt-
468
  24070024;Deutsche Bank PGK Lüneburg
469
  24070075;Deutsche Bank Lüneburg
@@ -510,7 +507,6 @@
510
  25069370;VB Vechelde-Wendeburg
511
  25069384;Volksbank Lehre -alt-
512
  25069503;VB Diepholz-Barnstorf
513
- 25069830;Volksbank Derental -alt-
514
  25070024;Deutsche Bank PGK Hannover
515
  25070066;Deutsche Bank Stadthagen
516
  25070070;Deutsche Bank Hannover
@@ -525,13 +521,11 @@
525
  25090608;apoBank Hannover
526
  25090900;PSD Bank Hannover
527
  25120510;Bank für Sozialwirtschaft
528
- 25120960;UniCredit ex-Hypo Hannover
529
  25151270;St Spk Barsinghausen
530
  25151371;Stadtsparkasse Burgdorf
531
  25152375;Kr Spk Fallingbostel
532
  25152490;St Spk Wunstorf
533
  25161322;VB Burgdorf-Celle -alt-
534
- 25162563;Volksbank Garbsen -alt-
535
  25190001;Hannoversche Volksbank
536
  25190101;Lindener Volksbank -alt-
537
  25191510;Volksbank Lehrte -alt-
@@ -588,15 +582,14 @@
588
  25841403;Commerzbank Lüchow
589
  25841708;Commerzbank Schneverdingen
590
  25850110;Sparkasse Uelzen Lüchow-Dbg
591
- 25851335;Spk Uelzen Lüchow-Dannenber
592
  25851660;Kr Spk Soltau
593
  25861395;Volksbank Dannenberg -alt-
594
  25861990;Volksbank Clenze-Hitzacker
595
  25862292;Volksbank Uelzen-Salzwedel
596
- 25862393;Volksbank Hitzacker -alt-
597
  25863489;VB Osterbg-Lüchow-Dannenbg
598
  25891483;VB Osterbg-Lüchow-Dannenbg
599
- 25891636;VB Lüneburger Heide
600
  25900000;BBk Hannover eh Hildesheim
601
  25910111;SEB Hildesheim
602
  25930000;UniCredit Bk ex VereinWest
@@ -622,7 +615,7 @@
622
  26060184;Bankhaus Hallbaum
623
  26061291;Volksbank Mitte
624
  26061556;Volksbank Adelebsen
625
- 26062433;Volksbank Dransfeld
626
  26062575;Raiffeisenbank Rosdorf
627
  26070024;Deutsche Bank PGK Göttingen
628
  26070072;Deutsche Bank Göttingen
@@ -661,7 +654,6 @@
661
  26565928;VB GMHütte-Hagen-Bissendorf
662
  26566939;VB Osnabrücker Nd
663
  26567943;VR-Bank i.Altkr.Bersenbrück
664
- 26568924;VB Hilter-Bad Laer -alt-
665
  26570024;Deutsche Bank PGK Osnabrück
666
  26570090;Deutsche Bank Osnabrück
667
  26580070;Commerzbank Osnabrück
@@ -781,7 +773,7 @@
781
  28066214;VB Wildeshauser Geest
782
  28066620;Spar-u Darlehnskasse
783
  28067068;VB Neuenkirchen-Vörden
784
- 28067170;Raiff-VB Delmenhorst
785
  28067257;Volksbank Lastrup
786
  28068218;Raiffbk Butjadingen-Abbehsn
787
  28069052;Raiffbk Strückl.-Idafehn
@@ -816,7 +808,6 @@
816
  28262254;Volksbank Jever
817
  28262481;Raiffbk Sande-Wangerld alt
818
  28262673;Raiff-VB Varel-Nordenham
819
- 28262794;Raiff-VB Aurich-Wittm -alt-
820
  28270024;Deutsche Bank PGK Wilhelmsh
821
  28270056;Deutsche Bank Wilhelmshaven
822
  28280012;Commerzbank Wilhelmshaven
@@ -832,7 +823,6 @@
832
  28450000;Sparkasse Emden
833
  28470024;Deutsche Bank PGK Emden
834
  28470091;Deutsche Bank Emden
835
- 28490073;Raiff-VB Emden-Pewsum -alt-
836
  28500000;BBk Oldenburg eh Leer
837
  28520009;Oldb Landesbank Leer
838
  28521518;Oldb Landesbank Papenburg
@@ -842,7 +832,6 @@
842
  28562716;Raiffbk Flachsmeer Westover
843
  28562863;Raiffeisenbank Moormerland
844
  28563749;Raiffeisenbank Moormerland
845
- 28563865;Ostfriesische VB Leer
846
  28570024;Deutsche Bank PGK Leer
847
  28570092;Deutsche Bank Leer
848
  28590075;Ostfriesische VB Leer
@@ -851,7 +840,7 @@
851
  29000000;BBk Bremen
852
  29010111;SEB Bremen
853
  29010400;Deutsche Schiffsbank Bremen
854
- 29020000;Neelmeyerbank Bremen
855
  29020100;KBC Bank Bremen
856
  29020200;NF Bank Bremen
857
  29020400;Factoring Bank Bremen
@@ -892,7 +881,6 @@
892
  29240024;Commerzbank Bremerhaven
893
  29250000;Spk Bremerhaven
894
  29250150;Kr Spk Wesermünde-Hadeln
895
- 29262646;Spar-u Darlehnskasse
896
  29262722;Volksbank Geeste-Nord
897
  29265747;VB Bremerhaven-Cuxland
898
  29280011;Commerzbank Bremerhaven
@@ -907,6 +895,7 @@
907
  30020700;Mizuho Corp Bank Düsseldorf
908
  30020900;TARGOBANK Düsseldorf
909
  30022000;NRW.BANK Düsseldorf
 
910
  30030100;S Broker Wiesbaden
911
  30030400;FXdirekt Bank Oberhausen
912
  30030500;C&A Bank Düsseldorf
@@ -921,7 +910,6 @@
921
  30040063;Commerzbank CC Düsseldorf
922
  30050000;WestLB Düsseldorf
923
  30050110;St Spk Düsseldorf
924
- 30052525;NRW.BANK Düsseldorf
925
  30060010;WGZ Bank Düsseldorf
926
  30060601;apoBank Düsseldorf
927
  30060992;PSD Bank Rhein-Ruhr
@@ -963,7 +951,8 @@
963
  30160213;VB Düsseldorf Neuss
964
  30220190;UniCredit Bank-HypoVereinbk
965
  30351220;St Spk Haan
966
- 30520000;RCI Banque Neuss
 
967
  30530000;Bankhaus Werhahn Neuss
968
  30530500;Bank11 Neuss
969
  30550000;Sparkasse Neuss
@@ -1013,6 +1002,7 @@
1013
  33010111;SEB Wuppertal
1014
  33020000;akf bank Wuppertal
1015
  33020190;UniCredit Bank-HypoVereinbk
 
1016
  33040001;Commerzbank Wuppertal
1017
  33040310;Commerzbank Zw 117
1018
  33050000;St Spk Wuppertal
@@ -1043,7 +1033,7 @@
1043
  34270024;Deutsche Bank PGK Solingen
1044
  34270094;Deutsche Bank Solingen
1045
  34280032;Commerzbank Solingen
1046
- 35000000;BBk Duisburg
1047
  35010111;SEB Duisburg
1048
  35020030;National-Bank Duisburg
1049
  35040038;Commerzbank Duisburg
@@ -1064,8 +1054,8 @@
1064
  35251000;Spk Dinslaken-Voerde-Hünxe
1065
  35261248;Volksbank Dinslaken
1066
  35450000;Sparkasse am Niederrhein
1067
- 35451460;Spk Neukirchen-Vluyn
1068
- 35451775;Spk Rheinberg
1069
  35461106;Volksbank Niederrhein
1070
  35600000;BBk Duisburg eh Wesel
1071
  35640064;Commerzbank Wesel
@@ -1079,12 +1069,12 @@
1079
  36010200;VON ESSEN Bankges Essen
1080
  36010424;Aareal Bank Essen
1081
  36010600;GALLINAT-BANK Essen
1082
- 36010699;Gallinat - Bank
1083
  36010800;AKBANK N.V. Essen
1084
  36020030;National-Bank Essen
1085
  36020186;UniCredit Bank-HypoVereinbk
1086
  36020700;Hanseatic Bank Essen
1087
- 36033300;Santander Consumer Bk Essen
1088
  36036000;VALBA
1089
  36040039;Commerzbank Essen
1090
  36040060;Commerzbank CC Essen
@@ -1138,6 +1128,7 @@
1138
  37030200;Oppenheim, Sal - jr & Cie
1139
  37030700;abcbank Köln
1140
  37030800;Isbank Köln
 
1141
  37040044;Commerzbank Köln
1142
  37040048;Commerzbank KOE GF-K48
1143
  37040060;Commerzbank CC Köln
@@ -1181,7 +1172,7 @@
1181
  37069577;Raiffbk Odenthal -alt-
1182
  37069627;Raiffbk Rheinbach Voreifel
1183
  37069639;Rosbacher Raiffeisenbank
1184
- 37069642;Raiffbk Simmerath Simmerath
1185
  37069707;Raiffbk Sankt Augustin
1186
  37069720;VR-Bank Nordeifel Schleiden
1187
  37069805;Volksbank Wachtberg
@@ -1256,7 +1247,7 @@
1256
  38621500;Steyler Bank
1257
  38650000;Kr Spk Siegburg
1258
  38651390;Sparkasse Hennef
1259
- 39000000;BBk Aachen
1260
  39010111;SEB Aachen
1261
  39020000;Aachener Bauspk Aachen
1262
  39040013;Commerzbank Aachen
@@ -1272,7 +1263,6 @@
1272
  39160191;Pax-Bank Aachen
1273
  39161490;Volksbank Aachen Süd
1274
  39162980;VR-Bank Würselen
1275
- 39360097;VB Stolberg-Eschweiler-alt-
1276
  39362254;Raiffeisen-Bank Eschweiler
1277
  39500000;BBk Aachen eh Düren
1278
  39540052;Commerzbank Düren
@@ -1288,7 +1278,7 @@
1288
  40040028;Commerzbank Münster Westf
1289
  40050000;WestLB Münster
1290
  40050150;Spk Münsterland Ost
1291
- 40052525;NRW.BANK Münster
1292
  40060000;WGZ Bank Münster
1293
  40060265;DKM Darlehnskasse Münster
1294
  40060300;WL BANK Münster
@@ -1305,7 +1295,6 @@
1305
  40069408;Volksbank Baumberge
1306
  40069462;Volksbank Sprakel
1307
  40069477;Volksbank Wulfen -alt-
1308
- 40069545;VB Schönholthausen -alt-
1309
  40069546;Volksbank Senden
1310
  40069600;Volksbank Amelsbüren
1311
  40069601;Volksbank Ascheberg-Herbern
@@ -1324,7 +1313,6 @@
1324
  40154006;Spk Gronau
1325
  40154476;St Spk Lengerich
1326
  40154530;Sparkasse Westmünsterland
1327
- 40154680;St Spk Ochtrup -alt-
1328
  40154702;St Spk Stadtlohn
1329
  40160050;Volksbank Münster
1330
  40163123;Volksbank Coesfeld -alt-
@@ -1459,7 +1447,6 @@
1459
  44080085;Commerzbank ITGK2 Dortmnd
1460
  44089320;Commerzbank ITGK Dortmund
1461
  44090920;PSD Bank Dortmund -alt-
1462
- 44130000;HKB Bank Frankfurt
1463
  44152370;Sparkasse Lünen
1464
  44152490;Sparkasse Schwerte
1465
  44160014;Dortmunder Volksbank
@@ -1477,12 +1464,11 @@
1477
  44570024;Deutsche Bank PGK Iserlohn
1478
  44580070;Commerzbank Iserlohn
1479
  44580085;Commerzbank ITGK1 Iserlhn
1480
- 44750065;Sparkasse Menden
1481
  44760037;Volksbank Menden -alt-
1482
  44761312;Mendener Bank
1483
  44761534;VB im Märkischen Kreis
1484
  45000000;BBk Hagen
1485
- 45030000;HKB Bank Frankfurt
1486
  45040042;Commerzbank Hagen Westf
1487
  45050001;Sparkasse Hagen
1488
  45051485;St Spk Herdecke
@@ -1530,10 +1516,10 @@
1530
  46250049;Spk Olpe-Drolshagen-Wenden
1531
  46251590;Spk Finnentrop
1532
  46251630;Spk Attend-Lennest-Kirchhdm
1533
- 46260023;Volksbank Olpe
1534
  46261306;Volksbank Attendorn -alt-
1535
  46261607;Volksbank Grevenbrück
1536
- 46261822;Volksbank Wenden-Drolshagen
1537
  46262456;Volksbank Bigge-Lenne -alt-
1538
  46400000;BBk Dortmund eh Arnsberg
1539
  46441003;Commerzbank Meschede
@@ -1557,23 +1543,21 @@
1557
  47260307;Bank für Kirche und Caritas
1558
  47261429;Volksbank Haaren -alt-
1559
  47261603;VB Büren und Salzkotten
1560
- 47262406;VB Höxter-Beverungen -alt-
1561
  47262626;Volksbank Westenholz
1562
  47262703;VB Delbrück-Hövelhof
1563
  47263472;VB Westerloh-Westerwiehe
1564
- 47264367;VB Driburg-Brakel-Steinheim
1565
  47265383;VB Wewelsburg-Ahden
1566
  47267216;Volksbank Borgentreich-alt-
1567
  47270024;Deutsche Bank PGK Paderborn
1568
  47270029;Deutsche Bank Paderborn
1569
  47451235;St Spk Marsberg -alt-
1570
- 47460028;Volksbank Warburger Land
1571
  47640051;Commerzbank Detmold
1572
  47650130;Spk Detmold
1573
  47651225;St Spk Blomberg
1574
  47670023;Deutsche Bank Detmold
1575
  47670024;Deutsche Bank PGK Detmold
1576
- 47690080;Volksbank Detmold -alt-
1577
  47691200;Volksbank Ostlippe
1578
  47800000;BBk Bielefeld eh Gütersloh
1579
  47840065;Commerzbank Gütersloh
@@ -1626,12 +1610,12 @@
1626
  49051065;Stadtsparkasse Rahden
1627
  49051285;St Spk Bad Oeynhausen
1628
  49051990;St Spk Porta Westfalica
1629
- 49060127;VB Minden-Hille-Porta
1630
  49060392;Volksbank Minden
1631
  49061298;VB Bad Oeynhausen -alt-
1632
  49061470;VB Stemweder Berg -alt-
1633
  49061510;Volksbank Eisbergen -alt-
1634
- 49063296;Volksbank Petershagen
1635
  49063338;Volksbank Hille -alt-
1636
  49070024;Deutsche Bank PGK Minden
1637
  49070028;Deutsche Bank Minden, Westf
@@ -1642,7 +1626,7 @@
1642
  49440043;Commerzbank Herford
1643
  49450120;Sparkasse Herford
1644
  49451210;Spk Bad Salzuflen -alt-
1645
- 49461323;Volksbank Enger-Spenge
1646
  49490070;VB Bad Oeynhausen-Herford
1647
  50000000;BBk Filiale Frankfurt Main
1648
  50010060;Postbank Frankfurt Main
@@ -1661,7 +1645,7 @@
1661
  50020700;Credit Europe Bank Ffm
1662
  50020800;Intesa Sanpaolo Frankfurt
1663
  50020900;COREALCREDIT BANK
1664
- 50021000;ING Bank Frankfurt
1665
  50021100;Frankfurter Fondsbank
1666
  50023400;Bank of Beirut Frankfurt
1667
  50030000;Banque PSA Finance
@@ -1673,11 +1657,13 @@
1673
  50030900;Lehman Brothers Frankfurt
1674
  50031000;Triodos Bank Deutschland
1675
  50031100;Bankhaus Main Frankfurt/M
1676
- 50033300;Santander Consumer Bk Ffm
1677
  50040000;Commerzbank Frankfurt Main
1678
  50040033;Commerzbank Gf BRS Ffm
 
1679
  50040040;Commerzbank ZRK Frankfurt
1680
  50040048;Commerzbank FFM GF-F48
 
1681
  50040051;Commerzbank FFM GM-F A 51
1682
  50040052;Commerzbank Service - BZ
1683
  50040060;Commerzbank Gf 460 Ffm
@@ -1685,6 +1671,7 @@
1685
  50040062;Commerzbank CC Ffm
1686
  50040063;Commerzbank CC Ffm
1687
  50040075;Commerzbank Gf ZCM Ffm
 
1688
  50040099;Commerzbank INT Ffm
1689
  50042500;Commerzbank Frankfurt
1690
  50044444;Commerzbank Vermverw Ffm
@@ -1704,7 +1691,6 @@
1704
  50069187;Volksbank Egelsbach -alt-
1705
  50069241;Raiffeisenkasse
1706
  50069345;Raiffbk Grävenwiesbach
1707
- 50069384;Volksbank Heppenheim-Offst
1708
  50069455;Hüttenberger Bk Hüttenberg
1709
  50069464;VB Inheiden-Villingen -alt-
1710
  50069477;Raiffeisenbank Kirtorf
@@ -1726,9 +1712,9 @@
1726
  50080060;Commerzbank Gf DrKW Ffm
1727
  50080061;Commerzbank Gf DrKWSL Ffm
1728
  50080077;Commerzbk WBSPK, Frankfurt
 
1729
  50080080;Commerzbank Bs 80 Ffm
1730
  50080082;Commerzbk Gf AVB Ffm
1731
- 50080085;Commerzbk CS Frankfurt
1732
  50080086;Commerzbk ITGK Frankfurt
1733
  50080087;Commerzbank ITGK4 FFM
1734
  50080088;Commerzbank ITGK5 FFM
@@ -1756,11 +1742,12 @@
1756
  50110500;NATIXIS Frankfurt am Main
1757
  50110636;DTC SCB Germany Branch
1758
  50110700;Frankfurter Bankgesellsch
1759
- 50110800;J.P. Morgan Frankfurt Main
 
1760
  50110900;Bank of America N.A. Mil Bk
1761
  50120000;MainFirst Bank Frankfurt
1762
  50120100;ICICI Bank Frankfurt
1763
- 50120383;Delbrück Bethmann Maffei
1764
  50120500;CSD Frankfurt Main
1765
  50120600;Bank of Communications
1766
  50120900;VakifBank Frankfurt
@@ -1771,6 +1758,7 @@
1771
  50130300;FIRST BANK Frankfurt
1772
  50130400;Merck Finck & Co Frankfurt
1773
  50130600;UBS Deutschland Frankfurt/M
 
1774
  50150000;West LB Frankfurt Main
1775
  50190000;Frankfurter Volksbank
1776
  50190300;Volksbank Höchst
@@ -1838,12 +1826,14 @@
1838
  50210188;SEB TZN MB Frankfurt
1839
  50210189;SEB TZN MB Frankfurt
1840
  50210200;Rabobank Frankfurt Main
1841
- 50210300;Eurohypo Eschborn
1842
- 50210400;Eurohypo ehem Rhein Hyp
 
1843
  50210600;equinet Bank, Frankfurt
 
1844
  50210900;Citigroup GM Frankfurt
1845
  50220085;UBS Deutschland Frankfurt/M
1846
- 50220200;LGT Bank Deutschland, Ffm
1847
  50220500;Bank of Scotland
1848
  50220900;Hauck & Aufhäuser
1849
  50230000;ABC International Bank Ffm
@@ -1869,7 +1859,8 @@
1869
  50330300;The Bank of New York Mellon
1870
  50330500;CHAABI BANK FRANKFURT
1871
  50330600;Sepahbank Frankfurt, Main
1872
- 50330700;Valovis Commercial Bank
 
1873
  50400000;BBk Zentrale Frankfurt Main
1874
  50510111;SEB Offenbach Main
1875
  50510120;SEB TZN MB
@@ -1987,7 +1978,7 @@
1987
  50861393;SpDK Zell -alt-
1988
  50861501;Raiffbk Nördliche Bergstr
1989
  50862311;VB Gräfenhausen -alt-
1990
- 50862408;Ver Volksbank Griesh-Weiter
1991
  50862703;VB Gersprenztal-Otzberg
1992
  50862835;Raiffeisenbank Schaafheim
1993
  50862903;Volksbank Mainspitze
@@ -2008,14 +1999,12 @@
2008
  50892500;Groß-Gerauer Volksbank
2009
  50950068;Sparkasse Bensheim
2010
  50951469;Sparkasse Starkenburg
2011
- 50960101;Volksbank Bergstraße -alt-
2012
  50961206;Raiffeisenbank Bürstadt
2013
  50961312;Raiffbk Groß-Rohrheim
2014
  50961592;Volksbank Weschnitztal
2015
  50961685;Volksbank Überwald-Gorxheim
2016
  50970004;Deutsche Bank Bensheim
2017
  50970024;Deutsche Bank PGK Bensheim
2018
- 50991400;VB Kreis Bergstraße -alt-
2019
  51000000;BBk Frankfurt eh Wiesbaden
2020
  51010111;SEB Wiesbaden
2021
  51010400;Aareal Bank
@@ -2051,12 +2040,13 @@
2051
  51210700;NIBC Bank Frankfurt am Main
2052
  51210800;SOGEBANK Frankfurt Main
2053
  51220200;SEB Merchant Banking Ffm
 
2054
  51220400;Bank Saderat Iran Frankfurt
2055
  51220700;ZIRAAT BANK
2056
  51220800;Banco do Brasil Frankfurt
2057
  51220900;Morgan Stanley Bank
2058
  51220910;Morgan Stanley Bank
2059
- 51230100;Eurohypo ehem. Deutsche Hyp
2060
  51230400;RBS Deutschland FFM
2061
  51230500;Standard Chartered Bank Ffm
2062
  51230502;ETC SCB Germany Branch
@@ -2082,7 +2072,7 @@
2082
  51380040;Commerzbank Gießen
2083
  51380085;Commerzbank ITGK1 Gießen
2084
  51390000;VB Mittelhessen
2085
- 51410111;SEB direct Frankfurt
2086
  51410600;Merrill Lynch Intl Bank FFM
2087
  51410700;Bank of China Frankfurt
2088
  51410800;OnVista Bank Frankfurt/Main
@@ -2090,6 +2080,7 @@
2090
  51420300;Bank Julius Bär Frankfurt
2091
  51420600;Svenska Handelsbanken
2092
  51430300;Nordea Bank Finland
 
2093
  51430400;Goldman, Sachs Ffm
2094
  51540037;Commerzbank Wetzlar
2095
  51550035;Sparkasse Wetzlar
@@ -2114,7 +2105,7 @@
2114
  51961515;Spar-u Darlehnskasse
2115
  51961801;Volksbank Feldatal
2116
  51990000;Volksbank Lauterbach-Schl
2117
- 52000000;BBk Kassel
2118
  52010111;SEB Kassel
2119
  52040021;Commerzbank Kassel
2120
  52050000;Landeskreditkasse Kassel
@@ -2132,7 +2123,6 @@
2132
  52061303;Raiffbk Borken
2133
  52062200;VR-Bank Chattengau
2134
  52062601;VR-Bank Schwalm-Eder
2135
- 52062699;Volks-Raiffeisenbank Gf GAA
2136
  52063369;VR-Bank Spangenbg-Morschen
2137
  52063550;Raiffbk
2138
  52064156;Raiffbk Baunatal
@@ -2249,7 +2239,6 @@
2249
  54540033;Commerzbank Ludwigshafen Rh
2250
  54550010;Sparkasse Vorderpfalz
2251
  54550120;Kreissparkasse Rhein-Pfalz
2252
- 54560320;VR Bank Ludwigshafen -alt-
2253
  54561310;RV Bank Rhein-Haardt
2254
  54570024;Deutsche Bank PGK Ludwigsha
2255
  54570094;Deutsche Bank Ludwigshafen
@@ -2266,14 +2255,13 @@
2266
  54690623;apoBank Neustadt, Weinstr
2267
  54691200;VR Bank Mittelhaardt
2268
  54750010;Kr u St Spk Speyer
2269
- 54751440;St Spk Schifferstadt
2270
  54760900;EKK Speyer
2271
- 54761411;Raiffbk Schifferstadt
2272
  54790000;VB Kur- und Rheinpfalz
2273
  54820674;UniCredit exHypo Ndl659LanP
2274
  54850010;Spk Südl Weinstr in Landau
2275
  54851440;Spk Kandel Pfalz
2276
- 54861190;Raiffbk Oberhaardt-Gäu
2277
  54862390;Raiffeisenbank Herxheim
2278
  54862500;VR Bank Südpfalz
2279
  54891300;VR Bank Südl Weinstr
@@ -2291,13 +2279,12 @@
2291
  55020700;SWK-Bank Bingen
2292
  55030500;GE Capital Bank Mainz
2293
  55030533;GE Capital Direkt
2294
- 55033300;Santander Consumer Bk Mainz
2295
  55040022;Commerzbank Mainz
2296
  55040060;Commerzbank CC Mainz
2297
  55040061;Commerzbank CC Mainz
2298
  55050000;ZV LBBW Mainz
2299
  55050120;Sparkasse Mainz
2300
- 55051260;Kr Spk Alzey-alt-
2301
  55060321;VR-Bank Mainz
2302
  55060417;VR-Bank Mainz
2303
  55060611;Genobank Mainz
@@ -2317,19 +2304,16 @@
2317
  55150098;Clearingkonto LRP-SI
2318
  55160195;Pax-Bank Mainz
2319
  55190000;Mainzer Volksbank Mainz
2320
- 55190028;Mainzer Volksbank
2321
- 55190050;Mainzer Volksbank
2322
- 55190064;Mainzer Volksbank
2323
- 55190065;Mainzer Volksbank
2324
- 55190068;Mainzer Volksbank
2325
- 55190088;Mainzer Volksbank
2326
- 55190094;Mainzer Volksbank
2327
  55340041;Commerzbank Worms
2328
  55350010;Sparkasse Worms-Alzey-Ried
2329
- 55360784;VB Rheindürkheim -alt-
2330
  55361202;Raiffeisenbank Alsh-Gimbsh
2331
- 55361313;Raiffbk Gundersheim -alt-
2332
- 55361422;VB Wonnegau Osthofen -alt-
2333
  55362071;Volksbank Bechtheim
2334
  55390000;Volksbank Worms-Wonnegau
2335
  56000000;BBk Mainz eh Bad Kreuznach
@@ -2345,7 +2329,6 @@
2345
  56090000;VB Rhein-Nahe-Hunsrück
2346
  56240050;Commerzbank Idar-Oberstein
2347
  56250030;Kr Spk Birkenfeld
2348
- 56261073;VB Kirn-Sobernheim -alt-
2349
  56261735;Raiffeisenbank Nahe
2350
  56270024;Deutsche Bank PGK I-Oberst
2351
  56270044;Deutsche Bank Idar-Oberst
@@ -2375,7 +2358,6 @@
2375
  57069526;Raiffbk Idarwald -alt-
2376
  57069727;Raiffeisenbank Irrel
2377
  57069806;VR-Bank Hunsrück-Mosel
2378
- 57069858;Raiffbk Pronsfeld-Waxw-alt-
2379
  57070024;Deutsche Bank PGK Koblenz
2380
  57070045;Deutsche Bank Koblenz
2381
  57080070;Commerzbank Koblenz
@@ -2431,7 +2413,7 @@
2431
  58761343;Raiffbk Zeller Land
2432
  58771224;Deutsche Bank PGK Bernkast-
2433
  58771242;Deutsche Bank Bernkast-Kues
2434
- 58790100;Ver VB Cochem
2435
  59000000;BBk Saarbrücken
2436
  59010011;Postbk St. Ingbert Gf FK 11
2437
  59010012;Postbk St. Ingbert Gf FK 12
@@ -2532,11 +2514,11 @@
2532
  60030100;Bankhaus Bauer, Stuttgart
2533
  60030200;Ellwabank Stuttgart
2534
  60030600;CreditPlus Bank
 
2535
  60030700;AKTIVBANK Pforzheim
2536
  60030900;Isbank Stuttgart
2537
  60033000;Wüstenrot Bausparkasse
2538
  60035810;IBM Kreditbank Herrenberg
2539
- 60038800;Düsseldorfer Hyp. Stuttgart
2540
  60040060;Commerzbank CC Stuttgart
2541
  60040061;Commerzbank CC Stuttgart
2542
  60040071;Commerzbank Stuttgart
@@ -2615,7 +2597,7 @@
2615
  60069710;Raiffbk Gammesfeld
2616
  60069714;Raiffeisenbank Kocher-Jagst
2617
  60069716;Raiffbk Nattheim -alt-
2618
- 60069724;Raiffbk Heroldstatt
2619
  60069727;Raiffbk Oberstenfeld
2620
  60069738;VB Freiberg und Umgebung
2621
  60069766;Volks- u Raiffbk Boll -alt-
@@ -2661,7 +2643,7 @@
2661
  60120200;BHF-BANK Stuttgart
2662
  60120500;Bank für Sozialwirtschaft
2663
  60130100;FFS Bank Stuttgart
2664
- 60133300;Santander Consumer Bk Stutt
2665
  60200000;BBk Stuttgart eh Waiblingen
2666
  60220030;BW Bank Waiblingen
2667
  60241074;Commerzbank Backnang
@@ -2676,7 +2658,6 @@
2676
  60270073;Deutsche Bank Waiblingen
2677
  60290110;Volksbank Rems -alt-
2678
  60291120;Volksbank Backnang
2679
- 60291410;Volksbank Schorndorf
2680
  60291510;Volksbank Winnenden
2681
  60300000;BBk Stuttgart eh Sindelfing
2682
  60320030;BW Bank Sindelfingen
@@ -2811,7 +2792,7 @@
2811
  63090100;Volksbank Ulm-Biberach
2812
  63091010;Ehinger Volksbank
2813
  63091200;Volksbank Blaubeuren
2814
- 63091300;Volksbank Laichingen
2815
  63220090;UniCredit Bank-HypoVereinbk
2816
  63240016;Commerzbank Heidenheim
2817
  63250030;Kr Spk Heidenheim
@@ -2849,7 +2830,7 @@
2849
  64240071;Commerzbank Rottweil
2850
  64250040;Kr Spk Rottweil
2851
  64251060;Kr Spk Freudenstadt
2852
- 64261363;Volksbank Baiersbronn
2853
  64261626;Murgtalbank -alt-
2854
  64261853;VB Nordschwarzwald
2855
  64262408;Volksbank Dornstetten
@@ -2889,7 +2870,6 @@
2889
  65110200;Int Bkhaus Bodensee
2890
  65120091;UniCredit Bank-HypoVereinbk
2891
  65140072;Commerzbank Friedrichshafen
2892
- 65150040;Spk -alt-
2893
  65161497;Genossenschaftsbank
2894
  65162832;Raiffbk Oberteuringen
2895
  65180005;Commerzbank Friedrichshfn
@@ -2929,18 +2909,17 @@
2929
  66020286;UniCredit Bank-HypoVereinbk
2930
  66020500;Bank für Sozialwirtschaft
2931
  66030600;Isbank Karlsruhe
2932
- 66030610;ISBANK Mannheim
2933
  66040018;Commerzbank Karlsruhe
2934
  66040026;Commerzbank Karlsruhe
2935
  66050000;Landesbank Baden-Württ
2936
- 66050101;Sparkasse Karlsruhe
2937
- 66051220;Sparkasse Ettlingen
2938
  66060000;DZ BANK
2939
  66060300;Spar- und Kreditbank
2940
  66060800;EKK Karlsruhe
2941
- 66061059;VB Stutensee Hardt
2942
  66061407;Spar- u Kreditbk Rheinstett
2943
- 66061724;Volksbank Weingarten-Walzb
2944
  66062138;Spar- u Kreditbank Hardt
2945
  66062366;Raiffbk Hardt-Bruhrain
2946
  66069103;Raiffeisenbank Elztal
@@ -2986,7 +2965,7 @@
2986
  66420020;BW Bank Offenburg
2987
  66432700;Faißtbank Wolfach
2988
  66440084;Commerzbank Offenburg
2989
- 66450050;Sparkasse Offenburg-Ortenau
2990
  66451346;Spk Gengenbach
2991
  66451548;Spk Haslach-Zell
2992
  66451862;Spk Hanauerland Kehl
@@ -2995,7 +2974,6 @@
2995
  66470035;Deutsche Bank Offenburg
2996
  66490000;Volksbank Offenburg
2997
  66491800;Volksbank Bühl
2998
- 66492300;Renchtalbank Oppenau -alt-
2999
  66492600;VB Appenweier -alt-
3000
  66492700;VB Kinzigtal Wolfach
3001
  66550070;Sparkasse Rastatt-Gernsbach
@@ -3025,15 +3003,12 @@
3025
  67020020;BW Bank Mannheim
3026
  67020190;UniCredit Bank-HypoVereinbk
3027
  67020259;UniCredit exHypo Ndl681Mnh
3028
- 67020500;Oyak Anker Bank Mannheim
3029
  67040031;Commerzbank Mannheim
3030
  67040060;Commerzbank CC Mannheim
3031
  67040061;Commerzbank CC Mannheim
3032
  67050000;Landesbank Baden-Württ
3033
- 67050101;Spk Mannheim
3034
  67050505;Spk Rhein Neckar Nord
3035
  67051203;Spk Hockenheim
3036
- 67052385;Bez Spk Weinheim
3037
  67060031;Volksbank Ma-Sandhofen
3038
  67070010;Deutsche Bank Mannheim
3039
  67070024;Deutsche Bank PGK Mannheim
@@ -3043,7 +3018,6 @@
3043
  67089440;Commerzbank ITGK Mannheim
3044
  67090000;VR Bank Rhein-Neckar
3045
  67090617;apoBank Mannheim
3046
- 67091300;VB Bez Schwetzingen -alt-
3047
  67091500;Volksbank Kurpfalz H+G Bank
3048
  67092300;Volksbank Weinheim
3049
  67210111;SEB Heidelberg
@@ -3054,7 +3028,6 @@
3054
  67230001;MLP FDL Zw CS
3055
  67240039;Commerzbank Heidelberg
3056
  67250020;Spk Heidelberg
3057
- 67251918;Sparkasse Sinsheim -alt-
3058
  67261909;Raiffbk Steinsberg -alt-
3059
  67262243;Raiff Privatbk Wiesloch
3060
  67262402;VB Schwarzbachtal -alt-
@@ -3074,8 +3047,6 @@
3074
  67362560;Volksbank Tauber -alt-
3075
  67390000;VB Main-Tauber
3076
  67450048;Spk Neckartal-Odenwald
3077
- 67451475;Spk Buchen-Walldürn -alt-
3078
- 67451680;Spk Osterburken -alt-
3079
  67460041;Volksbank Mosbach
3080
  67461424;Volksbank Franken Buchen
3081
  67461733;Volksbank Kirnau
@@ -3135,7 +3106,7 @@
3135
  68462427;VB Klettgau-Wutöschingen
3136
  68490000;Volksbank Rhein-Wehra
3137
  68491500;Volksbank Jestetten
3138
- 68492200;VB Hochrhein Waldshut-Tieng
3139
  69000000;BBk Vill-Schwen eh Konstanz
3140
  69010111;SEB Konstanz
3141
  69020020;BW Bank Konstanz
@@ -3169,13 +3140,14 @@
3169
  69451070;Spk Donaueschingen -alt-
3170
  69470024;Deutsche Bank PGK Villingen
3171
  69470039;Deutsche Bank Villingen Sch
3172
- 69490000;VB Villingen-Schwenningen
3173
  69491700;Volksbank Triberg
3174
  70000000;BBk München
3175
  70010080;Postbank -Giro- München
3176
  70010111;SEB München
3177
  70010424;Aareal Bank
3178
  70010500;Deutsche Pfandbriefbank
 
3179
  70011100;Deutsche Kontor Grünwald
3180
  70011110;Kontor Sofort Bank Grünwald
3181
  70011200;Bank Vontobel Europe
@@ -3190,11 +3162,17 @@
3190
  70012100;VEM Aktienbank München
3191
  70012200;Bank Sarasin
3192
  70012300;V-Bank München
3193
- 70012500;HTB München
3194
  70012600;Südt. Sparkasse München
3195
  70013000;Ebase Aschheim
3196
  70013100;Payment Services BV Werther
 
 
3197
  70013500;Bankhaus Herzogpark München
 
 
 
 
 
3198
  70020001;UniCredit exHypo Ndl645 M
3199
  70020270;UniCredit Bank-HypoVereinbk
3200
  70020300;Commerz Finanz München
@@ -3205,9 +3183,9 @@
3205
  70025175;UniCredit Bank-HypoVereinbk
3206
  70030014;Fürst Fugger Privatbk MUC
3207
  70030111;Flessabank München
3208
- 70030300;Reuschel & Co München
3209
  70030400;Merck Finck & Co München
3210
- 70030800;Delbrück Bethmann Maffei
3211
  70031000;Bankhaus Sperrer Freising
3212
  70032500;SGKB Deutschland, München
3213
  70033100;Baaderbank Unterschleißheim
@@ -3218,15 +3196,15 @@
3218
  70040061;Commerzbank Gf 861 München
3219
  70040062;Commerzbank CC München
3220
  70040063;Commerzbank CC München
 
3221
  70045050;Commerzbank Service-BZ
3222
  70050000;BayernLB München
3223
  70051003;Sparkasse Freising
3224
  70051540;Sparkasse Dachau
3225
- 70051805;Kreissparkasse
3226
  70051995;Spk Erding-Dorfen
3227
  70052060;Spk Landsberg-Dießen
3228
  70053070;Spk Fürstenfeldbruck
3229
- 70054080;Spk Starnberg -alt-
3230
  70054306;Spk Bad Tölz-Wolfratshausen
3231
  70070010;Deutsche Bank München
3232
  70070024;Deutsche Bank PGK München
@@ -3244,7 +3222,7 @@
3244
  70090500;Sparda-Bank München
3245
  70090606;apoBank München
3246
  70091500;VB Raiffbk Dachau
3247
- 70091600;Landsberg-Ammersee Bank
3248
  70091900;VR-Bank Erding
3249
  70093200;VR-Bank Starnberg-Hg-Lbg
3250
  70093400;Vb Raiffbk Ismaning
@@ -3260,7 +3238,7 @@
3260
  70120900;UniCredit exHypo Ndl BACA
3261
  70130700;Lenz Bank München
3262
  70130800;Merkur Bank München
3263
- 70133300;Santander Consumer Bk Münch
3264
  70150000;St Spk München
3265
  70160000;DZ BANK München
3266
  70160300;Raiffbk München -alt-
@@ -3269,7 +3247,6 @@
3269
  70169132;Raiffbk Griesstätt-Halfing
3270
  70169165;Raiffbk Chiemgau-Nord-Obing
3271
  70169168;VR-Bank Chiemgau-Süd -alt-
3272
- 70169179;VB Siegsdorf-Bergen -alt-
3273
  70169186;Raiffbk Pfaffenhofen Glonn
3274
  70169190;Raiffbk Tattenh Großkarol
3275
  70169191;Raiffbk Rupertiwinkel
@@ -3316,11 +3293,11 @@
3316
  70169575;Raiffeisenbank Türkheim
3317
  70169576;Raiff-Volksbank Tüßling
3318
  70169585;Raiffbk Unterschleißh-H-alt
3319
- 70169596;Raiffbk Walpertskirchen
3320
  70169598;Raiffbk im Oberland
3321
  70169599;Raiffeisenbank Weil u Umgeb
3322
  70169602;Raiffeisenbank Weilheim
3323
- 70169605;Raiff-VB Isen-Sempt
3324
  70169614;Freisinger Bank VB-Raiffbk
3325
  70169619;Raiffeisenbank Zorneding
3326
  70169653;Raiffeisenbank Aiglsbach
@@ -3334,7 +3311,7 @@
3334
  70220800;VVB München
3335
  70220900;Wüstenrot Bausparkasse
3336
  70230600;Isbank München
3337
- 70250150;Kreissparkasse
3338
  70300000;BBk München eh Garmisch-Par
3339
  70320090;UniCredit Bank-HypoVereinbk
3340
  70320305;UniCredit exHypo Ndl635 Gar
@@ -3355,7 +3332,6 @@
3355
  71051010;Kr Spk Altötting-Burgh-alt-
3356
  71052050;Kr Spk Traunstein-Trostberg
3357
  71061009;VR meine Raiffeisenbank
3358
- 71062194;VR Traunstein -alt-
3359
  71062802;Raiffeisenbank Anger
3360
  71090000;VB RB Oberbayern Südost
3361
  71100000;BBk München eh Rosenheim
@@ -3389,14 +3365,14 @@
3389
  72021271;UniCredit Bank-HypoVereinbk
3390
  72021876;UniCredit Bank-HypoVereinbk
3391
  72030014;Fürst Fugger Privatbk Augsb
3392
- 72030227;Hafnerbank Augsburg
3393
  72040046;Commerzbank Augsburg
3394
  72050000;St Spk Augsburg
3395
  72050101;Kr Spk Augsburg
3396
  72051210;St Spk Aichach
3397
  72051840;Spk Günzburg-Krumbach
3398
  72060300;Handels- u Gewbk Augsb-alt-
3399
- 72062152;VR-Bank Lech-Zusam
3400
  72069002;Raiffbk Adelzhausen-Sielenb
3401
  72069005;Raiffeisenbank Aindling
3402
  72069034;Raiffeisenbank Bissingen
@@ -3416,7 +3392,6 @@
3416
  72069139;Rbk Langweid-Achsh-alt-
3417
  72069141;Raiffbk Emersacker-alt-
3418
  72069155;Raiffbk Kissing-Mering
3419
- 72069168;V Raiffbk Niederraunau-alt-
3420
  72069179;Raiffbk Unteres Zusamtal
3421
  72069181;Raiffeisenbank Offingen
3422
  72069193;Raiffeisenbank Rehling
@@ -3426,9 +3401,7 @@
3426
  72069263;Raiffeisenbank Wittislingen
3427
  72069274;Raiffbk Augsburger Ld West
3428
  72069308;RVB Wemding
3429
- 72069325;Raiffeisenbank Möttingen
3430
  72069329;Raiffeisen-Volksbank Ries
3431
- 72069330;Raiffbk Oberes Kesselt-alt-
3432
  72069736;Raiffbk Iller-Roth-Günz
3433
  72069789;Raiffbk Pfaffenhausen
3434
  72070001;Deutsche Bank Augsburg
@@ -3453,7 +3426,7 @@
3453
  72169013;Raiffbk Aresing-Hörz-Schilt
3454
  72169080;Raiffbk Aresing-Gerolsbach
3455
  72169111;Raiffbk Hohenwart -alt-
3456
- 72169218;Raiffbk Schrobenhausen
3457
  72169246;Raiffbk Schrobenhausener Ld
3458
  72169380;Raiffeisenbank Beilngries
3459
  72169733;Rbk Berg im Gau-L -alt-
@@ -3468,7 +3441,7 @@
3468
  72180002;Commerzbank Ingolstadt
3469
  72191300;Volksbank Eichstätt
3470
  72191600;Hallertauer Volksbank
3471
- 72191800;Volksbank Schrobenhausen
3472
  72220074;UniCredit Bank-HypoVereinbk
3473
  72223182;UniCredit Bank-HypoVereinbk
3474
  72250000;Sparkasse Nördlingen
@@ -3492,7 +3465,6 @@
3492
  73191500;Illertisser Bank
3493
  73300000;BBk Augsburg eh Kempten
3494
  73311600;Hypo-Landesbk
3495
- 73311800;UniCredit Bank Austria
3496
  73320073;UniCredit Bank-HypoVereinbk
3497
  73320442;UniCredit exHypo Ndl669 Kpt
3498
  73321177;UniCredit Bank-HypoVereinbk
@@ -3518,7 +3490,7 @@
3518
  73369881;Raiffeisenbank Haldenwang
3519
  73369888;Raiffbk Irsee-Pforz.-Rieden
3520
  73369902;Raiffeisenbank Kempten
3521
- 73369915;Raiffbk Obergermaringen
3522
  73369918;Raiffeisenbank Kirchweihtal
3523
  73369920;Raiffeisenbank Oberallgäu
3524
  73369933;Raiffbk Südliches Ostallgäu
@@ -3604,7 +3576,6 @@
3604
  74366666;Raiffeisenbank Geisenhausen
3605
  74369068;Raiffbk Hofkirchen-Bayerbch
3606
  74369088;Raiffbk Geiselhöring-Pfabg
3607
- 74369091;Raiffeisenbank Straubing
3608
  74369130;Raiffeisenbank Parkstetten
3609
  74369146;Raiffbk Rattiszell-Konzell
3610
  74369656;Raiffeisenbank Essenbach
@@ -3694,7 +3665,7 @@
3694
  76060618;VR Bank Nürnberg
3695
  76061025;Raiffbk Spar+Kreditbk Lauf
3696
  76061482;Raiffeisenbank Hersbruck
3697
- 76069359;Raiffeisenbank Allersberg
3698
  76069369;Raiffbk Auerbach-Freihung
3699
  76069372;Raiffbk Bad Windsheim
3700
  76069378;Raiffeisenbank Bechhofen
@@ -3778,10 +3749,10 @@
3778
  77060100;VR Bank Bamberg
3779
  77061004;Raiffbk Obermain Nord
3780
  77061425;Raiffeisen-Volksbank Ebern
3781
- 77062014;Raiffeisenbank Burgebrach
3782
  77062139;Raiff-VB Bad Staffelstein
3783
  77063048;Raiffbk Hallstadt -alt-
3784
- 77065141;Raiffeisenbank Stegaurach
3785
  77069042;Raiffbk Gößweinstein -alt-
3786
  77069044;Raiffbk Küps-Mitwitz-Stockh
3787
  77069051;Raiffbk Heiligenstadt
@@ -3798,7 +3769,7 @@
3798
  77069782;Raiffeisenbank am Kulm
3799
  77069836;Raiffbk Berg-Bad Steben
3800
  77069868;Raiffeisenbank Oberland
3801
- 77069870;Raiffbk Frankenw. Ost-Oberk
3802
  77069879;Raiffbk Oberkotzau -alt-
3803
  77069893;Raiffeisenbank Töpen -alt-
3804
  77069906;Raiffbk Wüstenselbitz
@@ -3807,7 +3778,6 @@
3807
  77120073;UniCredit Bank-HypoVereinbk
3808
  77140061;Commerzbank Kulmbach
3809
  77150000;Spk Kulmbach-Kronach
3810
- 77151640;Spk Kronach-Ludwigsst -alt-
3811
  77190000;Kulmbacher Bank
3812
  77300000;BBk Bayreuth
3813
  77320072;UniCredit Bank-HypoVereinbk
@@ -3849,7 +3819,7 @@
3849
  79032038;Bank Schilling Hammelburg
3850
  79040047;Commerzbank Würzburg
3851
  79050000;Spk Mainfranken Würzburg
3852
- 79061000;Raiffeisenbank Ochsenfurt
3853
  79061153;Raiffeisenbank Lohr -alt-
3854
  79062106;Raiffbk Hammelburg
3855
  79063060;Raiffbk Estenfeld-Bergtheim
@@ -3860,7 +3830,6 @@
3860
  79069001;Raiffbk Volkach-Wiesentheid
3861
  79069010;VR-Bank Schweinfurt
3862
  79069031;Raiffbk Bütthard-Gaukönigsh
3863
- 79069078;Raiffeisenbank Geiselwind
3864
  79069090;Raiffbk Ulsenheim-Gollh-alt
3865
  79069145;Raiffbk Kreuzw-Hasl -alt-
3866
  79069150;Raiffbk Main-Spessart
@@ -3926,10 +3895,8 @@
3926
  80040000;Commerzbank Halle
3927
  80050500;Kr Spk Mersebg-Querfurt alt
3928
  80053000;Spk Burgenlandkreis
3929
- 80053502;Kr Spk Quedlinburg -alt-
3930
  80053552;Kr Spk Sangerhausen -alt-
3931
  80053572;St Spk Dessau
3932
- 80053612;Kr Spk Bernburg -alt-
3933
  80053622;Kr Spk Köthen -alt-
3934
  80053722;Kr Spk Anhalt-Bitterfeld
3935
  80053762;Saalesparkasse Halle
@@ -3953,15 +3920,11 @@
3953
  81000000;BBk Magdeburg
3954
  81010111;SEB Magdeburg
3955
  81020500;Bank für Sozialwirtschaft
3956
- 81020886;UniCredit ex-Hypo Magdeburg
3957
  81040000;Commerzbank Magdeburg
3958
  81050000;KSK ASL-SFT Staßfurt -alt-
3959
  81050555;Kreissparkasse Stendal
3960
  81051000;Bördesparkasse -alt-
3961
  81052000;Harzsparkasse
3962
- 81053112;Kr Spk Wernigerode -alt-
3963
- 81053132;Kr Spk Halberstadt -alt-
3964
- 81053242;Kr Spk Schönebeck -alt-
3965
  81053272;St Spk Magdeburg
3966
  81054000;Sparkasse Jerichower Land
3967
  81055000;Kreissparkasse Börde
@@ -4023,8 +3986,7 @@
4023
  83094454;Volksbank Saaletal
4024
  83094494;Volksbank Eisenberg
4025
  83094495;EthikBank Zndl Vb Eisenberg
4026
- 83095424;Volksbank Altenburg -alt-
4027
- 84000000;BBk Meiningen
4028
  84020086;UniCredit Bank-HypoVereinbk
4029
  84020087;UniCredit Bank-HypoVereinbk
4030
  84030111;Flessabank Meiningen
@@ -4051,6 +4013,7 @@
4051
  85050100;Spk Oberlausitz-Niederschl.
4052
  85050200;Kr Spk Riesa-Großenhain alt
4053
  85050300;Ostsächsische Spk Dresden
 
4054
  85055000;Spk Meißen
4055
  85060000;VB Pirna
4056
  85065028;Raiffbk Neustadt Sachs -alt
@@ -4079,7 +4042,7 @@
4079
  86020500;Bank für Sozialwirtschaft
4080
  86020600;Hanseatic Bank Leipzig
4081
  86020880;UniCredit exHypo Ndl508 Lei
4082
- 86033300;Santander Consumer Bk Leipz
4083
  86040000;Commerzbank Leipzig
4084
  86040060;Commerzbank CC Leipzig
4085
  86040061;Commerzbank CC Leipzig
@@ -4113,10 +4076,10 @@
4113
  87050000;Sparkasse Chemnitz
4114
  87051000;Spk Mittelsachsen
4115
  87052000;Spk Mittelsachsen
4116
- 87053000;Spk Mittleres Erzgebirge
4117
- 87054000;Spk Erzgebirge
4118
  87055000;Sparkasse Zwickau
4119
- 87056000;Kr Spk Aue-Schwarzenberg
4120
  87058000;Sparkasse Vogtland
4121
  87065893;VB Erzgebirge -alt-
4122
  87065918;Raiffbk Werdau-Zwickau
14
  10030500;Bankhaus Löbbecke Berlin
15
  10030600;North Channel Bank Mainz
16
  10030700;Gries & Heissel Wiesbaden
17
+ 10033300;Santander Bank Berlin
18
  10040000;Commerzbank -West- Berlin
19
+ 10040010;Commerzbank CC SP, Berlin
20
  10040048;Commerzbank BER GF-B48
21
  10040060;Commerzbank Gf 160 Berlin
22
  10040061;Commerzbank Gf 161 Berlin
67
  10120760;UniCredit exHypo Ndl260 Bln
68
  10120800;VON ESSEN Bank
69
  10120900;readybank
 
70
  10130600;Isbank Berlin
71
  10130800;BIW Bank
72
+ 10220600;Sydbank Berlin
73
  10310600;Tradegate Berlin
74
  12016836;KfW Berlin
75
  12030000;Deutsche Kreditbank Berlin
79
  12060000;DZ BANK
80
  12070000;Deutsche Bank Ld Brandenbg
81
  12070024;Deutsche Bank PGK Brandenbg
82
+ 12070070;Deutsche Bank (Gf intern)
83
+ 12070088;Deutsche Bank (Gf intern)
84
  12080000;Commerzbank Fil II Berlin
85
  12090640;apoBank -ZV-Ost- Berlin
86
  12096597;Sparda-Bank Berlin
87
  13000000;BBk Rostock
88
  13010111;SEB Rostock
 
89
  13040000;Commerzbank Rostock
90
  13050000;Ostseesparkasse Rostock
91
+ 13051042;Sparkasse Rügen
92
  13061008;Volksbank Wolgast
93
  13061028;Volksbank Raiffeisenbank
94
  13061078;VB u Raiffbk
146
  17040000;Commerzbank Frankfurt Oder
147
  17052000;Sparkasse Barnim Eberswalde
148
  17052302;St Spk Schwedt
 
149
  17054040;Spk Märkisch-Oderland
150
  17055050;Sparkasse Oder-Spree
151
  17056060;Spk Uckermark Prenzlau
152
  17062428;Raiff-VB Oder-Spree Beeskow
153
  17080000;Commerzbank Frankfurt, O
154
  17092404;VR Bank Fürstenwalde
155
+ 18000000;BBk Berlin eh Cottbus
156
  18020086;UniCredit Bank-HypoVereinbk
157
  18040000;Commerzbank Cottbus
158
  18050000;Sparkasse Spree-Neiße
163
  18080000;Commerzbank Cottbus
164
  18092684;Spreewaldbank Lübben
165
  18092744;Volksbank Spree-Neiße
 
166
  20000000;BBk Hamburg
167
  20010020;Postbank -Giro- Hamburg
168
  20010111;SEB Hamburg
169
  20010424;Aareal Bank
170
  20020200;SEB Merchant Bank Hamburg
171
  20020500;Jyske Bank Hamburg
 
172
  20020900;Signal Iduna Bauspar
173
  20030000;UniCredit Bank-HypoVereinbk
174
+ 20030300;DONNER & REUSCHEL
175
  20030400;Marcardbank Hamburg
176
  20030600;Sydbank Hamburg
177
  20030700;Merck Finck & Co Hamburg
178
  20030900;Wölbernbank Hamburg
179
  20040000;Commerzbank Hamburg
180
+ 20040020;Commerzbank CC SP, Hamburg
181
  20040040;Commerzbank GF RME, Hamburg
182
  20040048;Commerzbank HBG GF-H48
183
  20040050;Commerzbank GF COC
196
  20069125;Kaltenkirchener Bank
197
  20069130;Raiffbk
198
  20069144;Raiffeisenbank Seestermühe
199
+ 20069177;Raiffbk Südstormarn Mölln
200
  20069232;Raiffbk Struvenhütten
201
  20069625;Volksbank Gnarrenburg
202
  20069641;Raiffeisenbank Owschlag
234
  20090745;EBANK Gf Cash Hamburg
235
  20090900;PSD Bank Nord Hamburg
236
  20110022;Postbank -Spar- Hamburg
237
+ 20110401;Hypothekenbank Frankfurt
238
  20110700;Tokyo-Mitsubishi UFJ Hambg
239
  20110800;Bank of China Hamburg
240
  20120000;Berenbergbank
249
  20130400;GRENKE BANK
250
  20130412;GRENKE BANK Hamburg
251
  20130600;Barclaycard
252
+ 20133300;Santander Bank Hamburg
253
  20190003;Hamburger Volksbank
254
  20190109;VB Stormarn
255
  20190206;VB Hamburg Ost-West -alt-
257
  20190800;MKB Hamburg
258
  20210200;Bank Melli Iran Hamburg
259
  20210300;Bank Saderat Iran Hamburg
260
+ 20220100;DNB Bank
261
  20220400;M.M. Warburg Hyp Hamburg
262
  20230300;Schröderbank Hamburg
263
  20230600;Isbank Hamburg
343
  21230086;UniCredit Bk ex VereinWest
344
  21240040;Commerzbank Neumünster
345
  21241540;Commerzbank Bad Bramstedt
 
346
  21261089;Raiffeisenbank Wasbek -alt-
347
  21261227;Raiffbk Kl-Kummerfeld -alt-
348
  21270020;Deutsche Bank Neumünster
349
  21270024;Deutsche Bank PGK Neumünste
350
  21280002;Commerzbank Neumünster
351
+ 21290016;VR Bank Neumünster
352
  21340010;Commerzbank Neustadt Holst
353
  21352240;Spk Holstein Eutin
354
  21390008;VR Bk Ostholstein Nord-Plön
362
  21463603;VB-Raiffbk i Kr Rendsburg
363
  21464671;Raiffbk Todenbüttel
364
  21480003;Commerzbank Rendsburg
365
+ 21500000;BBk Hamburg eh Flensburg
366
  21510600;Sydbank Fil. Flensburg
367
  21520100;Union-Bank Flensburg
368
  21530080;UniCredit Bk ex VereinWest
369
  21540060;Commerzbank Flensburg
370
  21550050;Nord-Ostsee Spk Flensburg
 
371
  21565316;Raiffbk Handewitt
372
  21566356;Volks- u Raiffeisenbank
373
  21567360;Raiffbk Kleinjörl -alt-
393
  21741825;Commerzbank Westerland
394
  21750000;Nord-Ostsee Spk Schleswig
395
  21751230;Spk Bredstedt
396
+ 21762550;Husumer Volksbank
397
  21763542;VR Bank Niebüll
398
  21770011;Deutsche Bank Husum Nordsee
399
  21770024;Deutsche Bank PGK Husum
417
  22141428;Commerzbank Pinneberg
418
  22141628;Commerzbank Uetersen
419
  22150000;Spk Elmshorn
 
420
  22151730;St Spk Wedel
421
  22163114;Raiffbk Elbmarsch Heist
422
  22180000;Commerzbank Elmshorn
446
  23052750;Kr Spk Herzogtum Lauenburg
447
  23061220;Raiffeisenbank Leezen
448
  23062124;Raiffeisenbank Bargteheide
449
+ 23062807;Volks- u Raiffbk Mölln -alt
450
  23063129;Raiffeisenbank Lauenburg
451
  23064107;Raiffeisenbank Büchen
452
  23070700;Deutsche Bank PGK Lübeck
460
  24030000;UniCredit Bk ex VereinWest
461
  24040000;Commerzbank Lüneburg
462
  24050110;Spk Lüneburg
463
+ 24060300;VB Lüneburger Heide
464
  24061392;VB Bleckede-Dahlenbg -alt-
465
  24070024;Deutsche Bank PGK Lüneburg
466
  24070075;Deutsche Bank Lüneburg
507
  25069370;VB Vechelde-Wendeburg
508
  25069384;Volksbank Lehre -alt-
509
  25069503;VB Diepholz-Barnstorf
 
510
  25070024;Deutsche Bank PGK Hannover
511
  25070066;Deutsche Bank Stadthagen
512
  25070070;Deutsche Bank Hannover
521
  25090608;apoBank Hannover
522
  25090900;PSD Bank Hannover
523
  25120510;Bank für Sozialwirtschaft
 
524
  25151270;St Spk Barsinghausen
525
  25151371;Stadtsparkasse Burgdorf
526
  25152375;Kr Spk Fallingbostel
527
  25152490;St Spk Wunstorf
528
  25161322;VB Burgdorf-Celle -alt-
 
529
  25190001;Hannoversche Volksbank
530
  25190101;Lindener Volksbank -alt-
531
  25191510;Volksbank Lehrte -alt-
582
  25841403;Commerzbank Lüchow
583
  25841708;Commerzbank Schneverdingen
584
  25850110;Sparkasse Uelzen Lüchow-Dbg
585
+ 25851335;Spk Uelzen Lüchow-Dbg.-alt-
586
  25851660;Kr Spk Soltau
587
  25861395;Volksbank Dannenberg -alt-
588
  25861990;Volksbank Clenze-Hitzacker
589
  25862292;Volksbank Uelzen-Salzwedel
 
590
  25863489;VB Osterbg-Lüchow-Dannenbg
591
  25891483;VB Osterbg-Lüchow-Dannenbg
592
+ 25891636;VB Lüneburger Heide -alt-
593
  25900000;BBk Hannover eh Hildesheim
594
  25910111;SEB Hildesheim
595
  25930000;UniCredit Bk ex VereinWest
615
  26060184;Bankhaus Hallbaum
616
  26061291;Volksbank Mitte
617
  26061556;Volksbank Adelebsen
618
+ 26062433;VR-Bank in Südniedersachsen
619
  26062575;Raiffeisenbank Rosdorf
620
  26070024;Deutsche Bank PGK Göttingen
621
  26070072;Deutsche Bank Göttingen
654
  26565928;VB GMHütte-Hagen-Bissendorf
655
  26566939;VB Osnabrücker Nd
656
  26567943;VR-Bank i.Altkr.Bersenbrück
 
657
  26570024;Deutsche Bank PGK Osnabrück
658
  26570090;Deutsche Bank Osnabrück
659
  26580070;Commerzbank Osnabrück
773
  28066214;VB Wildeshauser Geest
774
  28066620;Spar-u Darlehnskasse
775
  28067068;VB Neuenkirchen-Vörden
776
+ 28067170;VB Delmenhorst-Schierbrok
777
  28067257;Volksbank Lastrup
778
  28068218;Raiffbk Butjadingen-Abbehsn
779
  28069052;Raiffbk Strückl.-Idafehn
808
  28262254;Volksbank Jever
809
  28262481;Raiffbk Sande-Wangerld alt
810
  28262673;Raiff-VB Varel-Nordenham
 
811
  28270024;Deutsche Bank PGK Wilhelmsh
812
  28270056;Deutsche Bank Wilhelmshaven
813
  28280012;Commerzbank Wilhelmshaven
823
  28450000;Sparkasse Emden
824
  28470024;Deutsche Bank PGK Emden
825
  28470091;Deutsche Bank Emden
 
826
  28500000;BBk Oldenburg eh Leer
827
  28520009;Oldb Landesbank Leer
828
  28521518;Oldb Landesbank Papenburg
832
  28562716;Raiffbk Flachsmeer Westover
833
  28562863;Raiffeisenbank Moormerland
834
  28563749;Raiffeisenbank Moormerland
 
835
  28570024;Deutsche Bank PGK Leer
836
  28570092;Deutsche Bank Leer
837
  28590075;Ostfriesische VB Leer
840
  29000000;BBk Bremen
841
  29010111;SEB Bremen
842
  29010400;Deutsche Schiffsbank Bremen
843
+ 29020000;Bankhaus Neelmeyer Bremen
844
  29020100;KBC Bank Bremen
845
  29020200;NF Bank Bremen
846
  29020400;Factoring Bank Bremen
881
  29240024;Commerzbank Bremerhaven
882
  29250000;Spk Bremerhaven
883
  29250150;Kr Spk Wesermünde-Hadeln
 
884
  29262722;Volksbank Geeste-Nord
885
  29265747;VB Bremerhaven-Cuxland
886
  29280011;Commerzbank Bremerhaven
895
  30020700;Mizuho Corp Bank Düsseldorf
896
  30020900;TARGOBANK Düsseldorf
897
  30022000;NRW.BANK Düsseldorf
898
+ 30025500;Portigon Düsseldorf
899
  30030100;S Broker Wiesbaden
900
  30030400;FXdirekt Bank Oberhausen
901
  30030500;C&A Bank Düsseldorf
910
  30040063;Commerzbank CC Düsseldorf
911
  30050000;WestLB Düsseldorf
912
  30050110;St Spk Düsseldorf
 
913
  30060010;WGZ Bank Düsseldorf
914
  30060601;apoBank Düsseldorf
915
  30060992;PSD Bank Rhein-Ruhr
951
  30160213;VB Düsseldorf Neuss
952
  30220190;UniCredit Bank-HypoVereinbk
953
  30351220;St Spk Haan
954
+ 30520000;RCI Banque Ndl Deutschland
955
+ 30520037;RCI Banque Direkt
956
  30530000;Bankhaus Werhahn Neuss
957
  30530500;Bank11 Neuss
958
  30550000;Sparkasse Neuss
1002
  33010111;SEB Wuppertal
1003
  33020000;akf bank Wuppertal
1004
  33020190;UniCredit Bank-HypoVereinbk
1005
+ 33030000;GEFA Wuppertal
1006
  33040001;Commerzbank Wuppertal
1007
  33040310;Commerzbank Zw 117
1008
  33050000;St Spk Wuppertal
1033
  34270024;Deutsche Bank PGK Solingen
1034
  34270094;Deutsche Bank Solingen
1035
  34280032;Commerzbank Solingen
1036
+ 35000000;BBk Düsseldorf eh Duisburg
1037
  35010111;SEB Duisburg
1038
  35020030;National-Bank Duisburg
1039
  35040038;Commerzbank Duisburg
1054
  35251000;Spk Dinslaken-Voerde-Hünxe
1055
  35261248;Volksbank Dinslaken
1056
  35450000;Sparkasse am Niederrhein
1057
+ 35451460;Spk Neukirchen-Vluyn -alt-
1058
+ 35451775;Spk Rheinberg -alt-
1059
  35461106;Volksbank Niederrhein
1060
  35600000;BBk Duisburg eh Wesel
1061
  35640064;Commerzbank Wesel
1069
  36010200;VON ESSEN Bankges Essen
1070
  36010424;Aareal Bank Essen
1071
  36010600;GALLINAT-BANK Essen
1072
+ 36010699;Gallinat - Bank Essen
1073
  36010800;AKBANK N.V. Essen
1074
  36020030;National-Bank Essen
1075
  36020186;UniCredit Bank-HypoVereinbk
1076
  36020700;Hanseatic Bank Essen
1077
+ 36033300;Santander Bank Essen
1078
  36036000;VALBA
1079
  36040039;Commerzbank Essen
1080
  36040060;Commerzbank CC Essen
1128
  37030200;Oppenheim, Sal - jr & Cie
1129
  37030700;abcbank Köln
1130
  37030800;Isbank Köln
1131
+ 37040037;Commerzbank CC SP, Köln
1132
  37040044;Commerzbank Köln
1133
  37040048;Commerzbank KOE GF-K48
1134
  37040060;Commerzbank CC Köln
1172
  37069577;Raiffbk Odenthal -alt-
1173
  37069627;Raiffbk Rheinbach Voreifel
1174
  37069639;Rosbacher Raiffeisenbank
1175
+ 37069642;Raiffbk Simmerath
1176
  37069707;Raiffbk Sankt Augustin
1177
  37069720;VR-Bank Nordeifel Schleiden
1178
  37069805;Volksbank Wachtberg
1247
  38621500;Steyler Bank
1248
  38650000;Kr Spk Siegburg
1249
  38651390;Sparkasse Hennef
1250
+ 39000000;BBk Düsseldorf eh Aachen
1251
  39010111;SEB Aachen
1252
  39020000;Aachener Bauspk Aachen
1253
  39040013;Commerzbank Aachen
1263
  39160191;Pax-Bank Aachen
1264
  39161490;Volksbank Aachen Süd
1265
  39162980;VR-Bank Würselen
 
1266
  39362254;Raiffeisen-Bank Eschweiler
1267
  39500000;BBk Aachen eh Düren
1268
  39540052;Commerzbank Düren
1278
  40040028;Commerzbank Münster Westf
1279
  40050000;WestLB Münster
1280
  40050150;Spk Münsterland Ost
1281
+ 40055555;LBS West Münster
1282
  40060000;WGZ Bank Münster
1283
  40060265;DKM Darlehnskasse Münster
1284
  40060300;WL BANK Münster
1295
  40069408;Volksbank Baumberge
1296
  40069462;Volksbank Sprakel
1297
  40069477;Volksbank Wulfen -alt-
 
1298
  40069546;Volksbank Senden
1299
  40069600;Volksbank Amelsbüren
1300
  40069601;Volksbank Ascheberg-Herbern
1313
  40154006;Spk Gronau
1314
  40154476;St Spk Lengerich
1315
  40154530;Sparkasse Westmünsterland
 
1316
  40154702;St Spk Stadtlohn
1317
  40160050;Volksbank Münster
1318
  40163123;Volksbank Coesfeld -alt-
1447
  44080085;Commerzbank ITGK2 Dortmnd
1448
  44089320;Commerzbank ITGK Dortmund
1449
  44090920;PSD Bank Dortmund -alt-
 
1450
  44152370;Sparkasse Lünen
1451
  44152490;Sparkasse Schwerte
1452
  44160014;Dortmunder Volksbank
1464
  44570024;Deutsche Bank PGK Iserlohn
1465
  44580070;Commerzbank Iserlohn
1466
  44580085;Commerzbank ITGK1 Iserlhn
1467
+ 44750065;Sparkasse Menden -alt-
1468
  44760037;Volksbank Menden -alt-
1469
  44761312;Mendener Bank
1470
  44761534;VB im Märkischen Kreis
1471
  45000000;BBk Hagen
 
1472
  45040042;Commerzbank Hagen Westf
1473
  45050001;Sparkasse Hagen
1474
  45051485;St Spk Herdecke
1516
  46250049;Spk Olpe-Drolshagen-Wenden
1517
  46251590;Spk Finnentrop
1518
  46251630;Spk Attend-Lennest-Kirchhdm
1519
+ 46260023;Volksbank Olpe -alt-
1520
  46261306;Volksbank Attendorn -alt-
1521
  46261607;Volksbank Grevenbrück
1522
+ 46261822;VB Olpe-Wenden-Drolshagen
1523
  46262456;Volksbank Bigge-Lenne -alt-
1524
  46400000;BBk Dortmund eh Arnsberg
1525
  46441003;Commerzbank Meschede
1543
  47260307;Bank für Kirche und Caritas
1544
  47261429;Volksbank Haaren -alt-
1545
  47261603;VB Büren und Salzkotten
 
1546
  47262626;Volksbank Westenholz
1547
  47262703;VB Delbrück-Hövelhof
1548
  47263472;VB Westerloh-Westerwiehe
1549
+ 47264367;Vereinigte Volksbank
1550
  47265383;VB Wewelsburg-Ahden
1551
  47267216;Volksbank Borgentreich-alt-
1552
  47270024;Deutsche Bank PGK Paderborn
1553
  47270029;Deutsche Bank Paderborn
1554
  47451235;St Spk Marsberg -alt-
1555
+ 47460028;VB Warburger Land -alt-
1556
  47640051;Commerzbank Detmold
1557
  47650130;Spk Detmold
1558
  47651225;St Spk Blomberg
1559
  47670023;Deutsche Bank Detmold
1560
  47670024;Deutsche Bank PGK Detmold
 
1561
  47691200;Volksbank Ostlippe
1562
  47800000;BBk Bielefeld eh Gütersloh
1563
  47840065;Commerzbank Gütersloh
1610
  49051065;Stadtsparkasse Rahden
1611
  49051285;St Spk Bad Oeynhausen
1612
  49051990;St Spk Porta Westfalica
1613
+ 49060127;Volksbank Mindener Land
1614
  49060392;Volksbank Minden
1615
  49061298;VB Bad Oeynhausen -alt-
1616
  49061470;VB Stemweder Berg -alt-
1617
  49061510;Volksbank Eisbergen -alt-
1618
+ 49063296;Volksbank Petershagen -alt-
1619
  49063338;Volksbank Hille -alt-
1620
  49070024;Deutsche Bank PGK Minden
1621
  49070028;Deutsche Bank Minden, Westf
1626
  49440043;Commerzbank Herford
1627
  49450120;Sparkasse Herford
1628
  49451210;Spk Bad Salzuflen -alt-
1629
+ 49461323;Volksbank Enger-Spenge -alt
1630
  49490070;VB Bad Oeynhausen-Herford
1631
  50000000;BBk Filiale Frankfurt Main
1632
  50010060;Postbank Frankfurt Main
1645
  50020700;Credit Europe Bank Ffm
1646
  50020800;Intesa Sanpaolo Frankfurt
1647
  50020900;COREALCREDIT BANK
1648
+ 50021000;ING Bank, Frankfurt
1649
  50021100;Frankfurter Fondsbank
1650
  50023400;Bank of Beirut Frankfurt
1651
  50030000;Banque PSA Finance
1657
  50030900;Lehman Brothers Frankfurt
1658
  50031000;Triodos Bank Deutschland
1659
  50031100;Bankhaus Main Frankfurt/M
1660
+ 50033300;Santander Bank Frankfurt
1661
  50040000;Commerzbank Frankfurt Main
1662
  50040033;Commerzbank Gf BRS Ffm
1663
+ 50040038;Commerzbank MBP, Frankfurt
1664
  50040040;Commerzbank ZRK Frankfurt
1665
  50040048;Commerzbank FFM GF-F48
1666
+ 50040050;Commerzbank CC SP, Ffm
1667
  50040051;Commerzbank FFM GM-F A 51
1668
  50040052;Commerzbank Service - BZ
1669
  50040060;Commerzbank Gf 460 Ffm
1671
  50040062;Commerzbank CC Ffm
1672
  50040063;Commerzbank CC Ffm
1673
  50040075;Commerzbank Gf ZCM Ffm
1674
+ 50040088;Commerzbank INT 1 Ffm
1675
  50040099;Commerzbank INT Ffm
1676
  50042500;Commerzbank Frankfurt
1677
  50044444;Commerzbank Vermverw Ffm
1691
  50069187;Volksbank Egelsbach -alt-
1692
  50069241;Raiffeisenkasse
1693
  50069345;Raiffbk Grävenwiesbach
 
1694
  50069455;Hüttenberger Bk Hüttenberg
1695
  50069464;VB Inheiden-Villingen -alt-
1696
  50069477;Raiffeisenbank Kirtorf
1712
  50080060;Commerzbank Gf DrKW Ffm
1713
  50080061;Commerzbank Gf DrKWSL Ffm
1714
  50080077;Commerzbk WBSPK, Frankfurt
1715
+ 50080079;Commerzbank ESOP, Frankfurt
1716
  50080080;Commerzbank Bs 80 Ffm
1717
  50080082;Commerzbk Gf AVB Ffm
 
1718
  50080086;Commerzbk ITGK Frankfurt
1719
  50080087;Commerzbank ITGK4 FFM
1720
  50080088;Commerzbank ITGK5 FFM
1742
  50110500;NATIXIS Frankfurt am Main
1743
  50110636;DTC SCB Germany Branch
1744
  50110700;Frankfurter Bankgesellsch
1745
+ 50110800;J.P. Morgan Frankfurt
1746
+ 50110801;J.P. Morgan, IR, Ffm
1747
  50110900;Bank of America N.A. Mil Bk
1748
  50120000;MainFirst Bank Frankfurt
1749
  50120100;ICICI Bank Frankfurt
1750
+ 50120383;Bethmann Bank Frankfurt
1751
  50120500;CSD Frankfurt Main
1752
  50120600;Bank of Communications
1753
  50120900;VakifBank Frankfurt
1758
  50130300;FIRST BANK Frankfurt
1759
  50130400;Merck Finck & Co Frankfurt
1760
  50130600;UBS Deutschland Frankfurt/M
1761
+ 50131000;Vietinbank
1762
  50150000;West LB Frankfurt Main
1763
  50190000;Frankfurter Volksbank
1764
  50190300;Volksbank Höchst
1826
  50210188;SEB TZN MB Frankfurt
1827
  50210189;SEB TZN MB Frankfurt
1828
  50210200;Rabobank Frankfurt Main
1829
+ 50210212;RaboDirect Frankfurt Main
1830
+ 50210300;Hypothekenbank Frankfurt
1831
+ 50210400;Hypothekenbank Frankfurt
1832
  50210600;equinet Bank, Frankfurt
1833
+ 50210800;ProCredit Bank, Frankfurt
1834
  50210900;Citigroup GM Frankfurt
1835
  50220085;UBS Deutschland Frankfurt/M
1836
+ 50220200;Bethmann Bank (LGT Ffm)
1837
  50220500;Bank of Scotland
1838
  50220900;Hauck & Aufhäuser
1839
  50230000;ABC International Bank Ffm
1859
  50330300;The Bank of New York Mellon
1860
  50330500;CHAABI BANK FRANKFURT
1861
  50330600;Sepahbank Frankfurt, Main
1862
+ 50330700;Valovis Bank Neu-Isenburg
1863
+ 50334400;BNY Mellon NL FFM
1864
  50400000;BBk Zentrale Frankfurt Main
1865
  50510111;SEB Offenbach Main
1866
  50510120;SEB TZN MB
1978
  50861393;SpDK Zell -alt-
1979
  50861501;Raiffbk Nördliche Bergstr
1980
  50862311;VB Gräfenhausen -alt-
1981
+ 50862408;Ver VB Griesh-Weiterst -alt
1982
  50862703;VB Gersprenztal-Otzberg
1983
  50862835;Raiffeisenbank Schaafheim
1984
  50862903;Volksbank Mainspitze
1999
  50892500;Groß-Gerauer Volksbank
2000
  50950068;Sparkasse Bensheim
2001
  50951469;Sparkasse Starkenburg
 
2002
  50961206;Raiffeisenbank Bürstadt
2003
  50961312;Raiffbk Groß-Rohrheim
2004
  50961592;Volksbank Weschnitztal
2005
  50961685;Volksbank Überwald-Gorxheim
2006
  50970004;Deutsche Bank Bensheim
2007
  50970024;Deutsche Bank PGK Bensheim
 
2008
  51000000;BBk Frankfurt eh Wiesbaden
2009
  51010111;SEB Wiesbaden
2010
  51010400;Aareal Bank
2040
  51210700;NIBC Bank Frankfurt am Main
2041
  51210800;SOGEBANK Frankfurt Main
2042
  51220200;SEB Merchant Banking Ffm
2043
+ 51220211;SEB Ffm SAP
2044
  51220400;Bank Saderat Iran Frankfurt
2045
  51220700;ZIRAAT BANK
2046
  51220800;Banco do Brasil Frankfurt
2047
  51220900;Morgan Stanley Bank
2048
  51220910;Morgan Stanley Bank
2049
+ 51230100;Hypothekenbank Frankfurt
2050
  51230400;RBS Deutschland FFM
2051
  51230500;Standard Chartered Bank Ffm
2052
  51230502;ETC SCB Germany Branch
2072
  51380040;Commerzbank Gießen
2073
  51380085;Commerzbank ITGK1 Gießen
2074
  51390000;VB Mittelhessen
2075
+ 51410111;SEB Frankfurt am Main
2076
  51410600;Merrill Lynch Intl Bank FFM
2077
  51410700;Bank of China Frankfurt
2078
  51410800;OnVista Bank Frankfurt/Main
2080
  51420300;Bank Julius Bär Frankfurt
2081
  51420600;Svenska Handelsbanken
2082
  51430300;Nordea Bank Finland
2083
+ 51430321;Nordea Bank Frankfurt
2084
  51430400;Goldman, Sachs Ffm
2085
  51540037;Commerzbank Wetzlar
2086
  51550035;Sparkasse Wetzlar
2105
  51961515;Spar-u Darlehnskasse
2106
  51961801;Volksbank Feldatal
2107
  51990000;Volksbank Lauterbach-Schl
2108
+ 52000000;BBk Frankfurt eh Kassel
2109
  52010111;SEB Kassel
2110
  52040021;Commerzbank Kassel
2111
  52050000;Landeskreditkasse Kassel
2123
  52061303;Raiffbk Borken
2124
  52062200;VR-Bank Chattengau
2125
  52062601;VR-Bank Schwalm-Eder
 
2126
  52063369;VR-Bank Spangenbg-Morschen
2127
  52063550;Raiffbk
2128
  52064156;Raiffbk Baunatal
2239
  54540033;Commerzbank Ludwigshafen Rh
2240
  54550010;Sparkasse Vorderpfalz
2241
  54550120;Kreissparkasse Rhein-Pfalz
 
2242
  54561310;RV Bank Rhein-Haardt
2243
  54570024;Deutsche Bank PGK Ludwigsha
2244
  54570094;Deutsche Bank Ludwigshafen
2255
  54690623;apoBank Neustadt, Weinstr
2256
  54691200;VR Bank Mittelhaardt
2257
  54750010;Kr u St Spk Speyer
 
2258
  54760900;EKK Speyer
2259
+ 54761411;Raiffbk Schifferstadt -alt-
2260
  54790000;VB Kur- und Rheinpfalz
2261
  54820674;UniCredit exHypo Ndl659LanP
2262
  54850010;Spk Südl Weinstr in Landau
2263
  54851440;Spk Kandel Pfalz
2264
+ 54861190;Raiffbk Oberhaardt-Gäu-alt-
2265
  54862390;Raiffeisenbank Herxheim
2266
  54862500;VR Bank Südpfalz
2267
  54891300;VR Bank Südl Weinstr
2279
  55020700;SWK-Bank Bingen
2280
  55030500;GE Capital Bank Mainz
2281
  55030533;GE Capital Direkt
2282
+ 55033300;Santander Bank Mainz
2283
  55040022;Commerzbank Mainz
2284
  55040060;Commerzbank CC Mainz
2285
  55040061;Commerzbank CC Mainz
2286
  55050000;ZV LBBW Mainz
2287
  55050120;Sparkasse Mainz
 
2288
  55060321;VR-Bank Mainz
2289
  55060417;VR-Bank Mainz
2290
  55060611;Genobank Mainz
2304
  55150098;Clearingkonto LRP-SI
2305
  55160195;Pax-Bank Mainz
2306
  55190000;Mainzer Volksbank Mainz
2307
+ 55190028;Mainzer Volksbank -alt-
2308
+ 55190050;Mainzer Volksbank -alt-
2309
+ 55190064;Mainzer Volksbank -alt-
2310
+ 55190065;Mainzer Volksbank -alt-
2311
+ 55190068;Mainzer Volksbank -alt-
2312
+ 55190088;Mainzer Volksbank -alt-
2313
+ 55190094;Mainzer Volksbank -alt-
2314
  55340041;Commerzbank Worms
2315
  55350010;Sparkasse Worms-Alzey-Ried
 
2316
  55361202;Raiffeisenbank Alsh-Gimbsh
 
 
2317
  55362071;Volksbank Bechtheim
2318
  55390000;Volksbank Worms-Wonnegau
2319
  56000000;BBk Mainz eh Bad Kreuznach
2329
  56090000;VB Rhein-Nahe-Hunsrück
2330
  56240050;Commerzbank Idar-Oberstein
2331
  56250030;Kr Spk Birkenfeld
 
2332
  56261735;Raiffeisenbank Nahe
2333
  56270024;Deutsche Bank PGK I-Oberst
2334
  56270044;Deutsche Bank Idar-Oberst
2358
  57069526;Raiffbk Idarwald -alt-
2359
  57069727;Raiffeisenbank Irrel
2360
  57069806;VR-Bank Hunsrück-Mosel
 
2361
  57070024;Deutsche Bank PGK Koblenz
2362
  57070045;Deutsche Bank Koblenz
2363
  57080070;Commerzbank Koblenz
2413
  58761343;Raiffbk Zeller Land
2414
  58771224;Deutsche Bank PGK Bernkast-
2415
  58771242;Deutsche Bank Bernkast-Kues
2416
+ 58790100;Ver VB Cochem -alt-
2417
  59000000;BBk Saarbrücken
2418
  59010011;Postbk St. Ingbert Gf FK 11
2419
  59010012;Postbk St. Ingbert Gf FK 12
2514
  60030100;Bankhaus Bauer, Stuttgart
2515
  60030200;Ellwabank Stuttgart
2516
  60030600;CreditPlus Bank
2517
+ 60030666;CreditPlus Bank
2518
  60030700;AKTIVBANK Pforzheim
2519
  60030900;Isbank Stuttgart
2520
  60033000;Wüstenrot Bausparkasse
2521
  60035810;IBM Kreditbank Herrenberg
 
2522
  60040060;Commerzbank CC Stuttgart
2523
  60040061;Commerzbank CC Stuttgart
2524
  60040071;Commerzbank Stuttgart
2597
  60069710;Raiffbk Gammesfeld
2598
  60069714;Raiffeisenbank Kocher-Jagst
2599
  60069716;Raiffbk Nattheim -alt-
2600
+ 60069724;Raiffbk Heroldstatt -alt-
2601
  60069727;Raiffbk Oberstenfeld
2602
  60069738;VB Freiberg und Umgebung
2603
  60069766;Volks- u Raiffbk Boll -alt-
2643
  60120200;BHF-BANK Stuttgart
2644
  60120500;Bank für Sozialwirtschaft
2645
  60130100;FFS Bank Stuttgart
2646
+ 60133300;Santander Bank Stuttgart
2647
  60200000;BBk Stuttgart eh Waiblingen
2648
  60220030;BW Bank Waiblingen
2649
  60241074;Commerzbank Backnang
2658
  60270073;Deutsche Bank Waiblingen
2659
  60290110;Volksbank Rems -alt-
2660
  60291120;Volksbank Backnang
 
2661
  60291510;Volksbank Winnenden
2662
  60300000;BBk Stuttgart eh Sindelfing
2663
  60320030;BW Bank Sindelfingen
2792
  63090100;Volksbank Ulm-Biberach
2793
  63091010;Ehinger Volksbank
2794
  63091200;Volksbank Blaubeuren
2795
+ 63091300;Volksbank Laichinger Alb
2796
  63220090;UniCredit Bank-HypoVereinbk
2797
  63240016;Commerzbank Heidenheim
2798
  63250030;Kr Spk Heidenheim
2830
  64240071;Commerzbank Rottweil
2831
  64250040;Kr Spk Rottweil
2832
  64251060;Kr Spk Freudenstadt
2833
+ 64261363;VB Baiersbronn Murgtal
2834
  64261626;Murgtalbank -alt-
2835
  64261853;VB Nordschwarzwald
2836
  64262408;Volksbank Dornstetten
2870
  65110200;Int Bkhaus Bodensee
2871
  65120091;UniCredit Bank-HypoVereinbk
2872
  65140072;Commerzbank Friedrichshafen
 
2873
  65161497;Genossenschaftsbank
2874
  65162832;Raiffbk Oberteuringen
2875
  65180005;Commerzbank Friedrichshfn
2909
  66020286;UniCredit Bank-HypoVereinbk
2910
  66020500;Bank für Sozialwirtschaft
2911
  66030600;Isbank Karlsruhe
 
2912
  66040018;Commerzbank Karlsruhe
2913
  66040026;Commerzbank Karlsruhe
2914
  66050000;Landesbank Baden-Württ
2915
+ 66050101;Spk Karlsruhe Ettlingen
2916
+ 66051220;Sparkasse Ettlingen -alt-
2917
  66060000;DZ BANK
2918
  66060300;Spar- und Kreditbank
2919
  66060800;EKK Karlsruhe
2920
+ 66061059;VB Stutensee Hardt -alt-
2921
  66061407;Spar- u Kreditbk Rheinstett
2922
+ 66061724;VB Stutensee-Weingarten
2923
  66062138;Spar- u Kreditbank Hardt
2924
  66062366;Raiffbk Hardt-Bruhrain
2925
  66069103;Raiffeisenbank Elztal
2965
  66420020;BW Bank Offenburg
2966
  66432700;Faißtbank Wolfach
2967
  66440084;Commerzbank Offenburg
2968
+ 66450050;Sparkasse Offenburg/Ortenau
2969
  66451346;Spk Gengenbach
2970
  66451548;Spk Haslach-Zell
2971
  66451862;Spk Hanauerland Kehl
2974
  66470035;Deutsche Bank Offenburg
2975
  66490000;Volksbank Offenburg
2976
  66491800;Volksbank Bühl
 
2977
  66492600;VB Appenweier -alt-
2978
  66492700;VB Kinzigtal Wolfach
2979
  66550070;Sparkasse Rastatt-Gernsbach
3003
  67020020;BW Bank Mannheim
3004
  67020190;UniCredit Bank-HypoVereinbk
3005
  67020259;UniCredit exHypo Ndl681Mnh
 
3006
  67040031;Commerzbank Mannheim
3007
  67040060;Commerzbank CC Mannheim
3008
  67040061;Commerzbank CC Mannheim
3009
  67050000;Landesbank Baden-Württ
 
3010
  67050505;Spk Rhein Neckar Nord
3011
  67051203;Spk Hockenheim
 
3012
  67060031;Volksbank Ma-Sandhofen
3013
  67070010;Deutsche Bank Mannheim
3014
  67070024;Deutsche Bank PGK Mannheim
3018
  67089440;Commerzbank ITGK Mannheim
3019
  67090000;VR Bank Rhein-Neckar
3020
  67090617;apoBank Mannheim
 
3021
  67091500;Volksbank Kurpfalz H+G Bank
3022
  67092300;Volksbank Weinheim
3023
  67210111;SEB Heidelberg
3028
  67230001;MLP FDL Zw CS
3029
  67240039;Commerzbank Heidelberg
3030
  67250020;Spk Heidelberg
 
3031
  67261909;Raiffbk Steinsberg -alt-
3032
  67262243;Raiff Privatbk Wiesloch
3033
  67262402;VB Schwarzbachtal -alt-
3047
  67362560;Volksbank Tauber -alt-
3048
  67390000;VB Main-Tauber
3049
  67450048;Spk Neckartal-Odenwald
 
 
3050
  67460041;Volksbank Mosbach
3051
  67461424;Volksbank Franken Buchen
3052
  67461733;Volksbank Kirnau
3106
  68462427;VB Klettgau-Wutöschingen
3107
  68490000;Volksbank Rhein-Wehra
3108
  68491500;Volksbank Jestetten
3109
+ 68492200;Volksbank Hochrhein
3110
  69000000;BBk Vill-Schwen eh Konstanz
3111
  69010111;SEB Konstanz
3112
  69020020;BW Bank Konstanz
3140
  69451070;Spk Donaueschingen -alt-
3141
  69470024;Deutsche Bank PGK Villingen
3142
  69470039;Deutsche Bank Villingen Sch
3143
+ 69490000;Volksbank Villingen
3144
  69491700;Volksbank Triberg
3145
  70000000;BBk München
3146
  70010080;Postbank -Giro- München
3147
  70010111;SEB München
3148
  70010424;Aareal Bank
3149
  70010500;Deutsche Pfandbriefbank
3150
+ 70010555;Deutsche Pfandbriefbank
3151
  70011100;Deutsche Kontor Grünwald
3152
  70011110;Kontor Sofort Bank Grünwald
3153
  70011200;Bank Vontobel Europe
3162
  70012100;VEM Aktienbank München
3163
  70012200;Bank Sarasin
3164
  70012300;V-Bank München
 
3165
  70012600;Südt. Sparkasse München
3166
  70013000;Ebase Aschheim
3167
  70013100;Payment Services BV Werther
3168
+ 70013155;BV Werther (Gf TRAXPAY)
3169
+ 70013199;Payment Services BV Werther
3170
  70013500;Bankhaus Herzogpark München
3171
+ 70015000;Transact Berlin
3172
+ 70015015;transact Berlin 001
3173
+ 70015025;transact Berlin 002
3174
+ 70015035;transact Berlin 003
3175
+ 70017000;PayCenter Freising
3176
  70020001;UniCredit exHypo Ndl645 M
3177
  70020270;UniCredit Bank-HypoVereinbk
3178
  70020300;Commerz Finanz München
3183
  70025175;UniCredit Bank-HypoVereinbk
3184
  70030014;Fürst Fugger Privatbk MUC
3185
  70030111;Flessabank München
3186
+ 70030300;Bankhaus Reuschel & Co
3187
  70030400;Merck Finck & Co München
3188
+ 70030800;Bethmann Bank
3189
  70031000;Bankhaus Sperrer Freising
3190
  70032500;SGKB Deutschland, München
3191
  70033100;Baaderbank Unterschleißheim
3196
  70040061;Commerzbank Gf 861 München
3197
  70040062;Commerzbank CC München
3198
  70040063;Commerzbank CC München
3199
+ 70040070;Commerzbank CC SP, München
3200
  70045050;Commerzbank Service-BZ
3201
  70050000;BayernLB München
3202
  70051003;Sparkasse Freising
3203
  70051540;Sparkasse Dachau
3204
+ 70051805;Kr Spk München Starnbg Ebbg
3205
  70051995;Spk Erding-Dorfen
3206
  70052060;Spk Landsberg-Dießen
3207
  70053070;Spk Fürstenfeldbruck
 
3208
  70054306;Spk Bad Tölz-Wolfratshausen
3209
  70070010;Deutsche Bank München
3210
  70070024;Deutsche Bank PGK München
3222
  70090500;Sparda-Bank München
3223
  70090606;apoBank München
3224
  70091500;VB Raiffbk Dachau
3225
+ 70091600;VR-Bank Landsberg-Ammersee
3226
  70091900;VR-Bank Erding
3227
  70093200;VR-Bank Starnberg-Hg-Lbg
3228
  70093400;Vb Raiffbk Ismaning
3238
  70120900;UniCredit exHypo Ndl BACA
3239
  70130700;Lenz Bank München
3240
  70130800;Merkur Bank München
3241
+ 70133300;Santander Bank München
3242
  70150000;St Spk München
3243
  70160000;DZ BANK München
3244
  70160300;Raiffbk München -alt-
3247
  70169132;Raiffbk Griesstätt-Halfing
3248
  70169165;Raiffbk Chiemgau-Nord-Obing
3249
  70169168;VR-Bank Chiemgau-Süd -alt-
 
3250
  70169186;Raiffbk Pfaffenhofen Glonn
3251
  70169190;Raiffbk Tattenh Großkarol
3252
  70169191;Raiffbk Rupertiwinkel
3293
  70169575;Raiffeisenbank Türkheim
3294
  70169576;Raiff-Volksbank Tüßling
3295
  70169585;Raiffbk Unterschleißh-H-alt
3296
+ 70169596;Raiffbk Walpertskirchen alt
3297
  70169598;Raiffbk im Oberland
3298
  70169599;Raiffeisenbank Weil u Umgeb
3299
  70169602;Raiffeisenbank Weilheim
3300
+ 70169605;RVB Isen-Sempt
3301
  70169614;Freisinger Bank VB-Raiffbk
3302
  70169619;Raiffeisenbank Zorneding
3303
  70169653;Raiffeisenbank Aiglsbach
3311
  70220800;VVB München
3312
  70220900;Wüstenrot Bausparkasse
3313
  70230600;Isbank München
3314
+ 70250150;Kr Spk München Starnbg Ebbg
3315
  70300000;BBk München eh Garmisch-Par
3316
  70320090;UniCredit Bank-HypoVereinbk
3317
  70320305;UniCredit exHypo Ndl635 Gar
3332
  71051010;Kr Spk Altötting-Burgh-alt-
3333
  71052050;Kr Spk Traunstein-Trostberg
3334
  71061009;VR meine Raiffeisenbank
 
3335
  71062802;Raiffeisenbank Anger
3336
  71090000;VB RB Oberbayern Südost
3337
  71100000;BBk München eh Rosenheim
3365
  72021271;UniCredit Bank-HypoVereinbk
3366
  72021876;UniCredit Bank-HypoVereinbk
3367
  72030014;Fürst Fugger Privatbk Augsb
3368
+ 72030227;Bankhaus Anton Hafner
3369
  72040046;Commerzbank Augsburg
3370
  72050000;St Spk Augsburg
3371
  72050101;Kr Spk Augsburg
3372
  72051210;St Spk Aichach
3373
  72051840;Spk Günzburg-Krumbach
3374
  72060300;Handels- u Gewbk Augsb-alt-
3375
+ 72062152;VR-Bank HG-Bank
3376
  72069002;Raiffbk Adelzhausen-Sielenb
3377
  72069005;Raiffeisenbank Aindling
3378
  72069034;Raiffeisenbank Bissingen
3392
  72069139;Rbk Langweid-Achsh-alt-
3393
  72069141;Raiffbk Emersacker-alt-
3394
  72069155;Raiffbk Kissing-Mering
 
3395
  72069179;Raiffbk Unteres Zusamtal
3396
  72069181;Raiffeisenbank Offingen
3397
  72069193;Raiffeisenbank Rehling
3401
  72069263;Raiffeisenbank Wittislingen
3402
  72069274;Raiffbk Augsburger Ld West
3403
  72069308;RVB Wemding
 
3404
  72069329;Raiffeisen-Volksbank Ries
 
3405
  72069736;Raiffbk Iller-Roth-Günz
3406
  72069789;Raiffbk Pfaffenhausen
3407
  72070001;Deutsche Bank Augsburg
3426
  72169013;Raiffbk Aresing-Hörz-Schilt
3427
  72169080;Raiffbk Aresing-Gerolsbach
3428
  72169111;Raiffbk Hohenwart -alt-
3429
+ 72169218;Schrobenhausener Bank
3430
  72169246;Raiffbk Schrobenhausener Ld
3431
  72169380;Raiffeisenbank Beilngries
3432
  72169733;Rbk Berg im Gau-L -alt-
3441
  72180002;Commerzbank Ingolstadt
3442
  72191300;Volksbank Eichstätt
3443
  72191600;Hallertauer Volksbank
3444
+ 72191800;VB Schrobenhausen -alt-
3445
  72220074;UniCredit Bank-HypoVereinbk
3446
  72223182;UniCredit Bank-HypoVereinbk
3447
  72250000;Sparkasse Nördlingen
3465
  73191500;Illertisser Bank
3466
  73300000;BBk Augsburg eh Kempten
3467
  73311600;Hypo-Landesbk
 
3468
  73320073;UniCredit Bank-HypoVereinbk
3469
  73320442;UniCredit exHypo Ndl669 Kpt
3470
  73321177;UniCredit Bank-HypoVereinbk
3490
  73369881;Raiffeisenbank Haldenwang
3491
  73369888;Raiffbk Irsee-Pforz.-Rieden
3492
  73369902;Raiffeisenbank Kempten
3493
+ 73369915;Raiffbk Obergermaringen alt
3494
  73369918;Raiffeisenbank Kirchweihtal
3495
  73369920;Raiffeisenbank Oberallgäu
3496
  73369933;Raiffbk Südliches Ostallgäu
3576
  74366666;Raiffeisenbank Geisenhausen
3577
  74369068;Raiffbk Hofkirchen-Bayerbch
3578
  74369088;Raiffbk Geiselhöring-Pfabg
 
3579
  74369130;Raiffeisenbank Parkstetten
3580
  74369146;Raiffbk Rattiszell-Konzell
3581
  74369656;Raiffeisenbank Essenbach
3665
  76060618;VR Bank Nürnberg
3666
  76061025;Raiffbk Spar+Kreditbk Lauf
3667
  76061482;Raiffeisenbank Hersbruck
3668
+ 76069359;Raiffeisenbank am Rothsee
3669
  76069369;Raiffbk Auerbach-Freihung
3670
  76069372;Raiffbk Bad Windsheim
3671
  76069378;Raiffeisenbank Bechhofen
3749
  77060100;VR Bank Bamberg
3750
  77061004;Raiffbk Obermain Nord
3751
  77061425;Raiffeisen-Volksbank Ebern
3752
+ 77062014;RB Burgebrach-Stegaurach
3753
  77062139;Raiff-VB Bad Staffelstein
3754
  77063048;Raiffbk Hallstadt -alt-
3755
+ 77065141;Raiffbk Stegaurach -alt-
3756
  77069042;Raiffbk Gößweinstein -alt-
3757
  77069044;Raiffbk Küps-Mitwitz-Stockh
3758
  77069051;Raiffbk Heiligenstadt
3769
  77069782;Raiffeisenbank am Kulm
3770
  77069836;Raiffbk Berg-Bad Steben
3771
  77069868;Raiffeisenbank Oberland
3772
+ 77069870;Raiffbk Hochfranken West
3773
  77069879;Raiffbk Oberkotzau -alt-
3774
  77069893;Raiffeisenbank Töpen -alt-
3775
  77069906;Raiffbk Wüstenselbitz
3778
  77120073;UniCredit Bank-HypoVereinbk
3779
  77140061;Commerzbank Kulmbach
3780
  77150000;Spk Kulmbach-Kronach
 
3781
  77190000;Kulmbacher Bank
3782
  77300000;BBk Bayreuth
3783
  77320072;UniCredit Bank-HypoVereinbk
3819
  79032038;Bank Schilling Hammelburg
3820
  79040047;Commerzbank Würzburg
3821
  79050000;Spk Mainfranken Würzburg
3822
+ 79061000;Raiffbk Ochsenfurt -alt-
3823
  79061153;Raiffeisenbank Lohr -alt-
3824
  79062106;Raiffbk Hammelburg
3825
  79063060;Raiffbk Estenfeld-Bergtheim
3830
  79069001;Raiffbk Volkach-Wiesentheid
3831
  79069010;VR-Bank Schweinfurt
3832
  79069031;Raiffbk Bütthard-Gaukönigsh
 
3833
  79069090;Raiffbk Ulsenheim-Gollh-alt
3834
  79069145;Raiffbk Kreuzw-Hasl -alt-
3835
  79069150;Raiffbk Main-Spessart
3895
  80040000;Commerzbank Halle
3896
  80050500;Kr Spk Mersebg-Querfurt alt
3897
  80053000;Spk Burgenlandkreis
 
3898
  80053552;Kr Spk Sangerhausen -alt-
3899
  80053572;St Spk Dessau
 
3900
  80053622;Kr Spk Köthen -alt-
3901
  80053722;Kr Spk Anhalt-Bitterfeld
3902
  80053762;Saalesparkasse Halle
3920
  81000000;BBk Magdeburg
3921
  81010111;SEB Magdeburg
3922
  81020500;Bank für Sozialwirtschaft
 
3923
  81040000;Commerzbank Magdeburg
3924
  81050000;KSK ASL-SFT Staßfurt -alt-
3925
  81050555;Kreissparkasse Stendal
3926
  81051000;Bördesparkasse -alt-
3927
  81052000;Harzsparkasse
 
 
 
3928
  81053272;St Spk Magdeburg
3929
  81054000;Sparkasse Jerichower Land
3930
  81055000;Kreissparkasse Börde
3986
  83094454;Volksbank Saaletal
3987
  83094494;Volksbank Eisenberg
3988
  83094495;EthikBank Zndl Vb Eisenberg
3989
+ 84000000;BBk Erfurt eh Meiningen
 
3990
  84020086;UniCredit Bank-HypoVereinbk
3991
  84020087;UniCredit Bank-HypoVereinbk
3992
  84030111;Flessabank Meiningen
4013
  85050100;Spk Oberlausitz-Niederschl.
4014
  85050200;Kr Spk Riesa-Großenhain alt
4015
  85050300;Ostsächsische Spk Dresden
4016
+ 85050350;Ostsächsische Spk OSD.Net
4017
  85055000;Spk Meißen
4018
  85060000;VB Pirna
4019
  85065028;Raiffbk Neustadt Sachs -alt
4042
  86020500;Bank für Sozialwirtschaft
4043
  86020600;Hanseatic Bank Leipzig
4044
  86020880;UniCredit exHypo Ndl508 Lei
4045
+ 86033300;Santander Bank Leipzig
4046
  86040000;Commerzbank Leipzig
4047
  86040060;Commerzbank CC Leipzig
4048
  86040061;Commerzbank CC Leipzig
4076
  87050000;Sparkasse Chemnitz
4077
  87051000;Spk Mittelsachsen
4078
  87052000;Spk Mittelsachsen
4079
+ 87053000;Spk Mittleres Erzgebg -alt-
4080
+ 87054000;Erzgebirgssparkasse
4081
  87055000;Sparkasse Zwickau
4082
+ 87056000;Kr Spk Aue-Schwarzenbg -alt
4083
  87058000;Sparkasse Vogtland
4084
  87065893;VB Erzgebirge -alt-
4085
  87065918;Raiffbk Werdau-Zwickau
app/code/community/Mage/Debit/etc/config.xml CHANGED
@@ -1,10 +1,10 @@
1
  <?xml version="1.0"?>
2
- <!--
3
  /**
4
  * This file is part of the Mage_Debit module.
5
- *
6
  * NOTICE OF LICENSE
7
- *
8
  * This source file is subject to the Open Software License (OSL 3.0)
9
  * that is bundled with this package in the file LICENSE.txt.
10
  * It is also available through the world-wide-web at this URL:
@@ -16,7 +16,7 @@
16
  * @category Mage
17
  * @package Mage_Debit
18
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
19
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
22
  */
@@ -24,10 +24,9 @@
24
  <config>
25
  <modules>
26
  <Mage_Debit>
27
- <version>0.5.1</version>
28
  </Mage_Debit>
29
  </modules>
30
-
31
  <global>
32
  <blocks>
33
  <debit>
@@ -42,7 +41,16 @@
42
  <models>
43
  <debit>
44
  <class>Mage_Debit_Model</class>
 
45
  </debit>
 
 
 
 
 
 
 
 
46
  </models>
47
  <resources>
48
  <debit_setup>
@@ -79,7 +87,6 @@
79
  </sales_order_save_after>
80
  </events>
81
  </global>
82
-
83
  <default>
84
  <payment>
85
  <debit>
@@ -99,19 +106,35 @@
99
  </debit>
100
  </payment>
101
  </default>
102
-
103
- <adminhtml>
104
- <translate>
105
- <modules>
106
- <Mage_Debit>
107
- <files>
108
- <default>Mage_Debit.csv</default>
109
- </files>
110
- </Mage_Debit>
111
- </modules>
112
- </translate>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  </adminhtml>
114
-
115
  <frontend>
116
  <secure_url>
117
  <debit_account>/debit/account</debit_account>
@@ -143,4 +166,4 @@
143
  </debit>
144
  </routers>
145
  </frontend>
146
- </config>
1
  <?xml version="1.0"?>
2
+ <!--
3
  /**
4
  * This file is part of the Mage_Debit module.
5
+ *
6
  * NOTICE OF LICENSE
7
+ *
8
  * This source file is subject to the Open Software License (OSL 3.0)
9
  * that is bundled with this package in the file LICENSE.txt.
10
  * It is also available through the world-wide-web at this URL:
16
  * @category Mage
17
  * @package Mage_Debit
18
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
19
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
22
  */
24
  <config>
25
  <modules>
26
  <Mage_Debit>
27
+ <version>0.5.3</version>
28
  </Mage_Debit>
29
  </modules>
 
30
  <global>
31
  <blocks>
32
  <debit>
41
  <models>
42
  <debit>
43
  <class>Mage_Debit_Model</class>
44
+ <resourceModel>debit_mysql4</resourceModel>
45
  </debit>
46
+ <debit_mysql4>
47
+ <class>Mage_Debit_Model_Mysql4</class>
48
+ <entities>
49
+ <order_grid>
50
+ <table>debit_order_grid</table>
51
+ </order_grid>
52
+ </entities>
53
+ </debit_mysql4>
54
  </models>
55
  <resources>
56
  <debit_setup>
87
  </sales_order_save_after>
88
  </events>
89
  </global>
 
90
  <default>
91
  <payment>
92
  <debit>
106
  </debit>
107
  </payment>
108
  </default>
109
+ <admin>
110
+ <routers>
111
+ <debit>
112
+ <use>admin</use>
113
+ <args>
114
+ <module>Mage_Debit</module>
115
+ <frontName>debit</frontName>
116
+ </args>
117
+ </debit>
118
+ </routers>
119
+ </admin>
120
+ <adminhtml>
121
+ <layout>
122
+ <updates>
123
+ <debit>
124
+ <file>debit.xml</file>
125
+ </debit>
126
+ </updates>
127
+ </layout>
128
+ <translate>
129
+ <modules>
130
+ <Mage_Debit>
131
+ <files>
132
+ <default>Mage_Debit.csv</default>
133
+ </files>
134
+ </Mage_Debit>
135
+ </modules>
136
+ </translate>
137
  </adminhtml>
 
138
  <frontend>
139
  <secure_url>
140
  <debit_account>/debit/account</debit_account>
166
  </debit>
167
  </routers>
168
  </frontend>
169
+ </config>
app/code/community/Mage/Debit/etc/system.xml CHANGED
@@ -1,10 +1,10 @@
1
  <?xml version="1.0"?>
2
- <!--
3
  /**
4
  * This file is part of the Mage_Debit module.
5
- *
6
  * NOTICE OF LICENSE
7
- *
8
  * This source file is subject to the Open Software License (OSL 3.0)
9
  * that is bundled with this package in the file LICENSE.txt.
10
  * It is also available through the world-wide-web at this URL:
@@ -16,7 +16,7 @@
16
  * @category Mage
17
  * @package Mage_Debit
18
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
19
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
22
  */
@@ -163,12 +163,15 @@
163
  <show_in_default>1</show_in_default>
164
  <show_in_website>1</show_in_website>
165
  <show_in_store>0</show_in_store>
 
 
 
166
  </specificgroup>
167
  <orderscount translate="label comment">
168
  <label>Minimum Orders Count</label>
169
  <frontend_type>text</frontend_type>
170
- <sort_order>16</sort_order>
171
- <comment>Default: "0" for disabled check | Minimum count of orders (in the past) needed for the customer to use this payment method.</comment>
172
  <show_in_default>1</show_in_default>
173
  <show_in_website>1</show_in_website>
174
  <show_in_store>0</show_in_store>
@@ -177,5 +180,50 @@
177
  </debit>
178
  </groups>
179
  </payment>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  </sections>
181
  </config>
1
  <?xml version="1.0"?>
2
+ <!--
3
  /**
4
  * This file is part of the Mage_Debit module.
5
+ *
6
  * NOTICE OF LICENSE
7
+ *
8
  * This source file is subject to the Open Software License (OSL 3.0)
9
  * that is bundled with this package in the file LICENSE.txt.
10
  * It is also available through the world-wide-web at this URL:
16
  * @category Mage
17
  * @package Mage_Debit
18
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
19
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
22
  */
163
  <show_in_default>1</show_in_default>
164
  <show_in_website>1</show_in_website>
165
  <show_in_store>0</show_in_store>
166
+ <depends>
167
+ <specificgroup_all>0</specificgroup_all>
168
+ </depends>
169
  </specificgroup>
170
  <orderscount translate="label comment">
171
  <label>Minimum Orders Count</label>
172
  <frontend_type>text</frontend_type>
173
+ <sort_order>16</sort_order>
174
+ <comment>Default: "0" for disabled check | Minimum count of orders (in the past) needed for the customer to use this payment method.</comment>
175
  <show_in_default>1</show_in_default>
176
  <show_in_website>1</show_in_website>
177
  <show_in_store>0</show_in_store>
180
  </debit>
181
  </groups>
182
  </payment>
183
+ <debitpayment translate="label" module="moneybookers">
184
+ <label>Debit Payment</label>
185
+ <tab>sales</tab>
186
+ <frontend_type>text</frontend_type>
187
+ <sort_order>980</sort_order>
188
+ <show_in_default>1</show_in_default>
189
+ <show_in_website>1</show_in_website>
190
+ <show_in_store>1</show_in_store>
191
+ <groups>
192
+ <bankaccount translate="label">
193
+ <label>Store Owner Bank Account</label>
194
+ <frontend_type>text</frontend_type>
195
+ <sort_order>1</sort_order>
196
+ <show_in_default>1</show_in_default>
197
+ <show_in_website>1</show_in_website>
198
+ <show_in_store>1</show_in_store>
199
+ <fields>
200
+ <account_owner translate="label">
201
+ <label>Account Owner</label>
202
+ <frontend_type>text</frontend_type>
203
+ <sort_order>1</sort_order>
204
+ <show_in_default>1</show_in_default>
205
+ <show_in_website>1</show_in_website>
206
+ <show_in_store>1</show_in_store>
207
+ </account_owner>
208
+ <routing_number translate="label">
209
+ <label>Routing Number</label>
210
+ <frontend_type>text</frontend_type>
211
+ <sort_order>2</sort_order>
212
+ <show_in_default>1</show_in_default>
213
+ <show_in_website>1</show_in_website>
214
+ <show_in_store>1</show_in_store>
215
+ </routing_number>
216
+ <account_number translate="label">
217
+ <label>Accountnumber</label>
218
+ <frontend_type>text</frontend_type>
219
+ <sort_order>3</sort_order>
220
+ <show_in_default>1</show_in_default>
221
+ <show_in_website>1</show_in_website>
222
+ <show_in_store>1</show_in_store>
223
+ </account_number>
224
+ </fields>
225
+ </bankaccount>
226
+ </groups>
227
+ </debitpayment>
228
  </sections>
229
  </config>
app/code/community/Mage/Debit/sql/debit_setup/mysql4-install-0.4.0.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,18 +17,18 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Setup script
27
- *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
@@ -38,9 +38,9 @@ $read = Mage::getSingleton('core/resource')->getConnection('core_read');
38
  $eid = $read->fetchRow(
39
  "select entity_type_id from {$this->getTable('eav_entity_type')} where entity_type_code = 'customer'"
40
  );
41
- $customer_type_id = $eid['entity_type_id'];
42
 
43
- $attr_date = array(
44
  'type' => 'datetime',
45
  'input' => 'label',
46
  'label' => 'Account update date',
@@ -50,7 +50,7 @@ $attr_date = array(
50
  'position' => '100'
51
  );
52
 
53
- $attr_name = array(
54
  'type' => 'varchar',
55
  'input' => 'text',
56
  'label' => 'Account Name',
@@ -60,7 +60,7 @@ $attr_name = array(
60
  'position' => '100'
61
  );
62
 
63
- $attr_number = array(
64
  'type' => 'varchar',
65
  'input' => 'text',
66
  'label' => 'Account number',
@@ -71,7 +71,7 @@ $attr_number = array(
71
  'position' => '100'
72
  );
73
 
74
- $attr_blz = array(
75
  'type' => 'varchar',
76
  'input' => 'text',
77
  'label' => 'Bank code',
@@ -86,31 +86,31 @@ $installer = $this;
86
  $installer->startSetup();
87
 
88
  $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
89
- $setup->addAttribute($customer_type_id, 'debit_payment_acount_update', $attr_date);
90
- $setup->addAttribute($customer_type_id, 'debit_payment_acount_name', $attr_name);
91
- $setup->addAttribute($customer_type_id, 'debit_payment_acount_number', $attr_number);
92
- $setup->addAttribute($customer_type_id, 'debit_payment_acount_blz', $attr_blz);
93
 
94
- // Since 1.4.2.0 this is necessary!
95
  $eavConfig = Mage::getSingleton('eav/config');
96
 
97
- $attribute = $eavConfig->getAttribute($customer_type_id, 'debit_payment_acount_update');
98
  $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
99
  $attribute->save();
100
 
101
- $attribute = $eavConfig->getAttribute($customer_type_id, 'debit_payment_acount_name');
102
  $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
103
  $attribute->save();
104
 
105
- $attribute = $eavConfig->getAttribute($customer_type_id, 'debit_payment_acount_number');
106
  $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
107
  $attribute->save();
108
 
109
- $attribute = $eavConfig->getAttribute($customer_type_id, 'debit_payment_acount_blz');
110
  $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
111
  $attribute->save();
112
 
113
  // End setup
114
  $installer->endSetup();
115
 
116
- // EOF
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
  * @link http://www.magentocommerce.com/extension/676/
24
  */
25
  /**
26
  * Setup script
27
+ *
28
  * @category Mage
29
  * @package Mage_Debit
30
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
  * @link http://www.magentocommerce.com/extension/676/
38
  $eid = $read->fetchRow(
39
  "select entity_type_id from {$this->getTable('eav_entity_type')} where entity_type_code = 'customer'"
40
  );
41
+ $customerTypeId = $eid['entity_type_id'];
42
 
43
+ $attrDate = array(
44
  'type' => 'datetime',
45
  'input' => 'label',
46
  'label' => 'Account update date',
50
  'position' => '100'
51
  );
52
 
53
+ $attrName = array(
54
  'type' => 'varchar',
55
  'input' => 'text',
56
  'label' => 'Account Name',
60
  'position' => '100'
61
  );
62
 
63
+ $attrNumber = array(
64
  'type' => 'varchar',
65
  'input' => 'text',
66
  'label' => 'Account number',
71
  'position' => '100'
72
  );
73
 
74
+ $attrBlz = array(
75
  'type' => 'varchar',
76
  'input' => 'text',
77
  'label' => 'Bank code',
86
  $installer->startSetup();
87
 
88
  $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
89
+ $setup->addAttribute($customerTypeId, 'debit_payment_acount_update', $attrDate);
90
+ $setup->addAttribute($customerTypeId, 'debit_payment_acount_name', $attrName);
91
+ $setup->addAttribute($customerTypeId, 'debit_payment_acount_number', $attrNumber);
92
+ $setup->addAttribute($customerTypeId, 'debit_payment_acount_blz', $attrBlz);
93
 
94
+ // Since 1.4.2.0 this is necessary!
95
  $eavConfig = Mage::getSingleton('eav/config');
96
 
97
+ $attribute = $eavConfig->getAttribute($customerTypeId, 'debit_payment_acount_update');
98
  $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
99
  $attribute->save();
100
 
101
+ $attribute = $eavConfig->getAttribute($customerTypeId, 'debit_payment_acount_name');
102
  $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
103
  $attribute->save();
104
 
105
+ $attribute = $eavConfig->getAttribute($customerTypeId, 'debit_payment_acount_number');
106
  $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
107
  $attribute->save();
108
 
109
+ $attribute = $eavConfig->getAttribute($customerTypeId, 'debit_payment_acount_blz');
110
  $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
111
  $attribute->save();
112
 
113
  // End setup
114
  $installer->endSetup();
115
 
116
+ // EOF
app/code/community/Mage/Debit/sql/debit_setup/mysql4-upgrade-0.3.0-0.4.0.php ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of the Mage_Debit module.
4
+ *
5
+ * PHP version 5
6
+ *
7
+ * NOTICE OF LICENSE
8
+ *
9
+ * This source file is subject to the Open Software License (OSL 3.0)
10
+ * that is bundled with this package in the file LICENSE.txt.
11
+ * It is also available through the world-wide-web at this URL:
12
+ * http://opensource.org/licenses/osl-3.0.php
13
+ * If you did not receive a copy of the license and are unable to
14
+ * obtain it through the world-wide-web, please send an email
15
+ * to license@magentocommerce.com so we can send you a copy immediately.
16
+ *
17
+ * @category Mage
18
+ * @package Mage_Debit
19
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
+ * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
22
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
23
+ * @link http://www.magentocommerce.com/extension/676/
24
+ */
25
+ /**
26
+ * Setup script
27
+ *
28
+ * @category Mage
29
+ * @package Mage_Debit
30
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
31
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
32
+ * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
33
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
34
+ * @link http://www.magentocommerce.com/extension/676/
35
+ */
36
+ // load id for customer entity
37
+ $read = Mage::getSingleton('core/resource')->getConnection('core_read');
38
+ $eid = $read->fetchRow(
39
+ "select entity_type_id from {$this->getTable('eav_entity_type')} where entity_type_code = 'customer'"
40
+ );
41
+ $customerTypeId = $eid['entity_type_id'];
42
+
43
+ $attrDate = array(
44
+ 'type' => 'datetime',
45
+ 'input' => 'label',
46
+ 'label' => 'Account update date',
47
+ 'global' => 1,
48
+ 'required' => 0,
49
+ 'default' => '',
50
+ 'position' => '100'
51
+ );
52
+
53
+ $attrName = array(
54
+ 'type' => 'varchar',
55
+ 'input' => 'text',
56
+ 'label' => 'Account Name',
57
+ 'global' => 1,
58
+ 'required' => 0,
59
+ 'default' => '',
60
+ 'position' => '100'
61
+ );
62
+
63
+ $attrNumber = array(
64
+ 'type' => 'varchar',
65
+ 'input' => 'text',
66
+ 'label' => 'Account number',
67
+ 'backend' => 'debit/entity_customer_attribute_backend_encrypted',
68
+ 'global' => 1,
69
+ 'required' => 0,
70
+ 'default' => '',
71
+ 'position' => '100'
72
+ );
73
+
74
+ $attrBlz = array(
75
+ 'type' => 'varchar',
76
+ 'input' => 'text',
77
+ 'label' => 'Bank code',
78
+ 'backend' => 'debit/entity_customer_attribute_backend_encrypted',
79
+ 'global' => 1,
80
+ 'required' => 0,
81
+ 'default' => '',
82
+ 'position' => '100'
83
+ );
84
+
85
+ $installer = $this;
86
+ $installer->startSetup();
87
+
88
+ $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
89
+ $setup->addAttribute($customerTypeId, 'debit_payment_acount_update', $attrDate);
90
+ $setup->addAttribute($customerTypeId, 'debit_payment_acount_name', $attrName);
91
+ $setup->addAttribute($customerTypeId, 'debit_payment_acount_number', $attrNumber);
92
+ $setup->addAttribute($customerTypeId, 'debit_payment_acount_blz', $attrBlz);
93
+
94
+ // Since 1.4.2.0 this is necessary!
95
+ $eavConfig = Mage::getSingleton('eav/config');
96
+
97
+ $attribute = $eavConfig->getAttribute($customerTypeId, 'debit_payment_acount_update');
98
+ $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
99
+ $attribute->save();
100
+
101
+ $attribute = $eavConfig->getAttribute($customerTypeId, 'debit_payment_acount_name');
102
+ $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
103
+ $attribute->save();
104
+
105
+ $attribute = $eavConfig->getAttribute($customerTypeId, 'debit_payment_acount_number');
106
+ $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
107
+ $attribute->save();
108
+
109
+ $attribute = $eavConfig->getAttribute($customerTypeId, 'debit_payment_acount_blz');
110
+ $attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
111
+ $attribute->save();
112
+
113
+ // End setup
114
+ $installer->endSetup();
115
+
116
+ // EOF
app/code/community/Mage/Debit/sql/debit_setup/mysql4-upgrade-0.4.9-0.5.0.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,17 +17,17 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.magentocommerce.com/extension/676/
23
  */
24
  /**
25
  * Setup script
26
- *
27
  * @category Mage
28
  * @package Mage_Debit
29
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
  * @link http://www.magentocommerce.com/extension/676/
33
  */
@@ -39,4 +39,4 @@ $write->query('SET FOREIGN_KEY_CHECKS=0;');
39
  $write->query("UPDATE {$this->getTable('eav_attribute')} SET attribute_code = 'debit_payment_acount_update' WHERE attribute_code = 'debit_payment_acount_data_update';");
40
  $write->query('SET FOREIGN_KEY_CHECKS=1;');
41
 
42
- $installer->endSetup();
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.magentocommerce.com/extension/676/
23
  */
24
  /**
25
  * Setup script
26
+ *
27
  * @category Mage
28
  * @package Mage_Debit
29
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
  * @link http://www.magentocommerce.com/extension/676/
33
  */
39
  $write->query("UPDATE {$this->getTable('eav_attribute')} SET attribute_code = 'debit_payment_acount_update' WHERE attribute_code = 'debit_payment_acount_data_update';");
40
  $write->query('SET FOREIGN_KEY_CHECKS=1;');
41
 
42
+ $installer->endSetup();
app/code/community/Mage/Debit/sql/debit_setup/mysql4-upgrade-0.5.0-0.5.1.php CHANGED
@@ -3,9 +3,9 @@
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
- *
7
  * NOTICE OF LICENSE
8
- *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
@@ -17,17 +17,17 @@
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.magentocommerce.com/extension/676/
23
  */
24
  /**
25
  * Setup script
26
- *
27
  * @category Mage
28
  * @package Mage_Debit
29
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
  * @link http://www.magentocommerce.com/extension/676/
33
  */
@@ -38,4 +38,4 @@ $installer->startSetup();
38
  $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
39
  $setup->updateAttribute('customer', 'debit_payment_acount_update', 'frontend_input', 'date');
40
 
41
- $installer->endSetup();
3
  * This file is part of the Mage_Debit module.
4
  *
5
  * PHP version 5
6
+ *
7
  * NOTICE OF LICENSE
8
+ *
9
  * This source file is subject to the Open Software License (OSL 3.0)
10
  * that is bundled with this package in the file LICENSE.txt.
11
  * It is also available through the world-wide-web at this URL:
17
  * @category Mage
18
  * @package Mage_Debit
19
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.magentocommerce.com/extension/676/
23
  */
24
  /**
25
  * Setup script
26
+ *
27
  * @category Mage
28
  * @package Mage_Debit
29
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
  * @link http://www.magentocommerce.com/extension/676/
33
  */
38
  $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
39
  $setup->updateAttribute('customer', 'debit_payment_acount_update', 'frontend_input', 'date');
40
 
41
+ $installer->endSetup();
app/code/community/Mage/Debit/sql/debit_setup/mysql4-upgrade-0.5.1-0.5.2.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This file is part of the Mage_Debit module.
4
+ *
5
+ * PHP version 5
6
+ *
7
+ * NOTICE OF LICENSE
8
+ *
9
+ * This source file is subject to the Open Software License (OSL 3.0)
10
+ * that is bundled with this package in the file LICENSE.txt.
11
+ * It is also available through the world-wide-web at this URL:
12
+ * http://opensource.org/licenses/osl-3.0.php
13
+ * If you did not receive a copy of the license and are unable to
14
+ * obtain it through the world-wide-web, please send an email
15
+ * to license@magentocommerce.com so we can send you a copy immediately.
16
+ *
17
+ * @category Mage
18
+ * @package Mage_Debit
19
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
20
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
21
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
+ * @link http://www.magentocommerce.com/extension/676/
23
+ */
24
+ /**
25
+ * Setup script
26
+ *
27
+ * @category Mage
28
+ * @package Mage_Debit
29
+ * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
30
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
31
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
32
+ * @link http://www.magentocommerce.com/extension/676/
33
+ */
34
+
35
+ /* @var $installer Mage_Sales_Model_Entity_Setup */
36
+ $installer = $this;
37
+ $installer->startSetup();
38
+
39
+ $sql = "DROP TABLE IF EXISTS `{$installer->getTable('debit/order_grid')}`;
40
+ CREATE TABLE `{$installer->getTable('debit/order_grid')}` (
41
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Id',
42
+ `entity_id` int(10) unsigned NOT NULL COMMENT 'Entity Id',
43
+ `store_id` smallint(5) unsigned DEFAULT NULL COMMENT 'Store Id',
44
+ `customer_id` int(10) unsigned DEFAULT NULL COMMENT 'Customer Id',
45
+ `grand_total` decimal(12,4) DEFAULT NULL COMMENT 'Grand Total',
46
+ `increment_id` varchar(50) DEFAULT NULL COMMENT 'Increment Id',
47
+ `order_currency_code` varchar(255) DEFAULT NULL COMMENT 'Order Currency Code',
48
+ `billing_name` varchar(255) DEFAULT NULL COMMENT 'Billing Name',
49
+ `created_at` timestamp NULL DEFAULT NULL COMMENT 'Created At',
50
+ `status` int(1) unsigned DEFAULT '0' COMMENT 'Status',
51
+ PRIMARY KEY (`id`),
52
+ UNIQUE KEY `UNQ_DEBITPAYMENT_ORDER_GRID_INCREMENT_ID` (`increment_id`),
53
+ CONSTRAINT `FK_DEBITPAYMENT_ORDER_GRID_CUSTOMER_ID_CUSTOMER_ENTITY_ENTITY_ID` FOREIGN KEY (`customer_id`) REFERENCES `{$installer->getTable('customer/entity')}` (`entity_id`) ON DELETE SET NULL ON UPDATE CASCADE,
54
+ CONSTRAINT `FK_DEBITPAYMENT_GRID_ENTITY_ID_SALES_FLAT_ORDER_ENTITY_ID` FOREIGN KEY (`entity_id`) REFERENCES `{$installer->getTable('sales/order')}` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
55
+ CONSTRAINT `FK_DEBITPAYMENT_ORDER_GRID_STORE_ID_CORE_STORE_STORE_ID` FOREIGN KEY (`store_id`) REFERENCES `{$installer->getTable('core/store')}` (`store_id`) ON DELETE SET NULL ON UPDATE CASCADE
56
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Debit Payment Order Grid';";
57
+
58
+ $installer->run($sql);
59
+
60
+ $installer->endSetup();
app/design/adminhtml/default/default/layout/debit.xml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <layout version="0.1.0">
3
+ <debit_adminhtml_order_index>
4
+ <reference name="content">
5
+ <block type="debit/adminhtml_order" name="debit.adminhtml.order" />
6
+ </reference>
7
+ </debit_adminhtml_order_index>
8
+ </layout>
app/design/adminhtml/default/default/template/debit/debit.phtml CHANGED
@@ -15,7 +15,7 @@
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
app/design/adminhtml/default/default/template/debit/form.phtml CHANGED
@@ -15,7 +15,7 @@
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
app/design/adminhtml/default/default/template/debit/info.phtml CHANGED
@@ -15,7 +15,7 @@
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
app/design/frontend/base/default/layout/debit.xml CHANGED
@@ -1,10 +1,10 @@
1
  <?xml version="1.0"?>
2
- <!--
3
  /**
4
  * This file is part of the Mage_Debit module.
5
- *
6
  * NOTICE OF LICENSE
7
- *
8
  * This source file is subject to the Open Software License (OSL 3.0)
9
  * that is bundled with this package in the file LICENSE.txt.
10
  * It is also available through the world-wide-web at this URL:
@@ -16,7 +16,7 @@
16
  * @category Mage
17
  * @package Mage_Debit
18
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
19
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
20
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
21
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.magentocommerce.com/extension/676/
@@ -28,7 +28,7 @@
28
  <action method="addLink" translate="label" module="debit" ifconfig="payment/debit/save_account_data"><name>debit_data</name><path>debit/account/edit</path><label>Debit Account Data</label></action>
29
  </reference>
30
  </customer_account>
31
-
32
  <debit_account_edit translate="label">
33
  <reference name="head">
34
  <action method="addJs"><script>mage/debit/blzcheck.js</script></action>
@@ -39,13 +39,13 @@
39
  <block type="debit/account_data" name="debit.account.data" template="debit/account/data.phtml"/>
40
  </reference>
41
  </debit_account_edit>
42
-
43
  <checkout_onepage_index>
44
  <reference name="head">
45
  <action method="addJs"><script>mage/debit/blzcheck.js</script></action>
46
  </reference>
47
  </checkout_onepage_index>
48
-
49
  <checkout_multishipping_billing>
50
  <reference name="head">
51
  <action method="addJs"><script>mage/debit/blzcheck.js</script></action>
1
  <?xml version="1.0"?>
2
+ <!--
3
  /**
4
  * This file is part of the Mage_Debit module.
5
+ *
6
  * NOTICE OF LICENSE
7
+ *
8
  * This source file is subject to the Open Software License (OSL 3.0)
9
  * that is bundled with this package in the file LICENSE.txt.
10
  * It is also available through the world-wide-web at this URL:
16
  * @category Mage
17
  * @package Mage_Debit
18
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
19
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
20
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
21
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.magentocommerce.com/extension/676/
28
  <action method="addLink" translate="label" module="debit" ifconfig="payment/debit/save_account_data"><name>debit_data</name><path>debit/account/edit</path><label>Debit Account Data</label></action>
29
  </reference>
30
  </customer_account>
31
+
32
  <debit_account_edit translate="label">
33
  <reference name="head">
34
  <action method="addJs"><script>mage/debit/blzcheck.js</script></action>
39
  <block type="debit/account_data" name="debit.account.data" template="debit/account/data.phtml"/>
40
  </reference>
41
  </debit_account_edit>
42
+
43
  <checkout_onepage_index>
44
  <reference name="head">
45
  <action method="addJs"><script>mage/debit/blzcheck.js</script></action>
46
  </reference>
47
  </checkout_onepage_index>
48
+
49
  <checkout_multishipping_billing>
50
  <reference name="head">
51
  <action method="addJs"><script>mage/debit/blzcheck.js</script></action>
app/design/frontend/base/default/template/debit/account/data.phtml CHANGED
@@ -15,7 +15,7 @@
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
app/design/frontend/base/default/template/debit/form.phtml CHANGED
@@ -15,7 +15,7 @@
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
app/design/frontend/base/default/template/debit/info.phtml CHANGED
@@ -15,7 +15,7 @@
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
15
  * @category Mage
16
  * @package Mage_Debit
17
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
18
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
19
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
20
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
21
  * @link http://www.magentocommerce.com/extension/676/
app/etc/modules/Mage_Debit.xml CHANGED
@@ -1,10 +1,10 @@
1
  <?xml version="1.0"?>
2
- <!--
3
  /**
4
  * This file is part of the Mage_Debit module.
5
- *
6
  * NOTICE OF LICENSE
7
- *
8
  * This source file is subject to the Open Software License (OSL 3.0)
9
  * that is bundled with this package in the file LICENSE.txt.
10
  * It is also available through the world-wide-web at this URL:
@@ -16,7 +16,7 @@
16
  * @category Mage
17
  * @package Mage_Debit
18
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
19
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
20
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
21
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.magentocommerce.com/extension/676/
@@ -32,4 +32,4 @@
32
  </depends>
33
  </Mage_Debit>
34
  </modules>
35
- </config>
1
  <?xml version="1.0"?>
2
+ <!--
3
  /**
4
  * This file is part of the Mage_Debit module.
5
+ *
6
  * NOTICE OF LICENSE
7
+ *
8
  * This source file is subject to the Open Software License (OSL 3.0)
9
  * that is bundled with this package in the file LICENSE.txt.
10
  * It is also available through the world-wide-web at this URL:
16
  * @category Mage
17
  * @package Mage_Debit
18
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
19
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
20
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
21
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
22
  * @link http://www.magentocommerce.com/extension/676/
32
  </depends>
33
  </Mage_Debit>
34
  </modules>
35
+ </config>
app/locale/de_DE/Mage_Debit.csv CHANGED
@@ -4,13 +4,14 @@
4
  "Custom text for checkout page","Benutzerdefinierter Text"
5
  "Kontoinhaber","Kontoinhaber"
6
  "Account holder","Kontoinhaber"
7
- "Konto-Nummer","Konto-Nummer"
8
- "Account number","Konto-Nummer"
 
9
  "Bankleitzahl","Bankleitzahl"
10
  "Bank code","Bankleitzahl"
11
  "Bank name","Kreditinstitut"
12
  "Account holder: %s","Kontoinhaber: %s"
13
- "Account number: %s","Konto-Nummer: %s"
14
  "Bank code: %s","Bankleitzahl: %s"
15
  "Bank name: %s","Kreditinstitut: %s"
16
  "-- will be filled in automatically --","-- wird automatisch ausgefüllt --"
@@ -29,4 +30,22 @@
29
  "Set to ""no"" if you want to enable DebitPayment only for specific customer groups defined below.","Auf ""Nein"" umstellen, wenn Sie DebitPayment nur für untenstehende Kundengruppen aktivieren möchten"
30
  "Minimum Orders Count","Mindestanzahl an Bestellungen"
31
  "-- Please Select --","-- Bitte wählen --"
32
- "Default: ""0"" for disabled check | Minimum count of orders (in the past) needed for the customer to use this payment method.","Standard: ""0"" zum Deaktivieren des Checks | Mindestanzahl an Bestellungen (in der Vergangenheit) eines Kunden um Zahlungsart nutzen zu dürfen."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  "Custom text for checkout page","Benutzerdefinierter Text"
5
  "Kontoinhaber","Kontoinhaber"
6
  "Account holder","Kontoinhaber"
7
+ "Konto-Nummer","Kontonummer"
8
+ "Account Number","Kontonummer"
9
+ "Accountnumber","Kontonummer"
10
  "Bankleitzahl","Bankleitzahl"
11
  "Bank code","Bankleitzahl"
12
  "Bank name","Kreditinstitut"
13
  "Account holder: %s","Kontoinhaber: %s"
14
+ "Account number: %s","Kontonummer: %s"
15
  "Bank code: %s","Bankleitzahl: %s"
16
  "Bank name: %s","Kreditinstitut: %s"
17
  "-- will be filled in automatically --","-- wird automatisch ausgefüllt --"
30
  "Set to ""no"" if you want to enable DebitPayment only for specific customer groups defined below.","Auf ""Nein"" umstellen, wenn Sie DebitPayment nur für untenstehende Kundengruppen aktivieren möchten"
31
  "Minimum Orders Count","Mindestanzahl an Bestellungen"
32
  "-- Please Select --","-- Bitte wählen --"
33
+ "Default: ""0"" for disabled check | Minimum count of orders (in the past) needed for the customer to use this payment method.","Standard: ""0"" zum Deaktivieren des Checks | Mindestanzahl an Bestellungen (in der Vergangenheit) eines Kunden um Zahlungsart nutzen zu dürfen."
34
+ "Orders successfully synced for export.","Bestellungen wurden erfolgreich für den Export synchronisiert."
35
+ "No orders available for sync.","Keine Bestellungen für die Synchronisation vorhanden."
36
+ "No orders to export.","Keine Bestellungen zum Exportieren vorhanden."
37
+ "Order #","Bestell-Nr."
38
+ "Purchased On","Bestelldatum"
39
+ "Bill to Name","Rechnungsempfänger"
40
+ "Grand Total","Gesamtsumme"
41
+ "Status","Status"
42
+ "Not exported","Nicht exportiert"
43
+ "Exported","Exportiert"
44
+ "Debit Payment Orders","Lastschrift-Bestellungen"
45
+ "Sync Orders","Bestellungen abgleichen"
46
+ "Export as DTAUS","DTAUS-Export"
47
+ "Export as CSV","CSV-Export"
48
+ "Store Owner Bank Account","Bankverbindung des Shop-Betreibers"
49
+ "Account Owner","Kontoinhaber"
50
+ "Routing Number","Bankleitzahl"
51
+ "Please enter bankaccount credentials of the store owner in the system configuration. Otherwise you will not be able to generate a valid export file.","Bitte geben Sie in der System-Konfiguration die Bankverbindung des Shopbetreibers ein. Anderenfalls können Sie keine gültige Export-Datei erzeugen."
app/locale/en_US/Mage_Debit.csv CHANGED
@@ -4,8 +4,9 @@
4
  "Custom text for checkout page","Custom text for checkout page"
5
  "Kontoinhaber","Account holder"
6
  "Account holder","Account holder"
7
- "Konto-Nummer","Account number"
8
- "Account number","Account number"
 
9
  "Bankleitzahl","Bank code"
10
  "Bank code","Bank code"
11
  "Bank name","Bank name"
@@ -29,4 +30,22 @@
29
  "Set to ""no"" if you want to enable DebitPayment only for specific customer groups defined below.","Set to ""no"" if you want to enable DebitPayment only for specific customer groups defined below."
30
  "Minimum Orders Count","Minimum Orders Count"
31
  "-- Please Select --","-- Please Select --"
32
- "Default: ""0"" for disabled check | Minimum count of orders (in the past) needed for the customer to use this payment method.","Default: ""0"" for disabled check | Minimum count of orders (in the past) needed for the customer to use this payment method."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  "Custom text for checkout page","Custom text for checkout page"
5
  "Kontoinhaber","Account holder"
6
  "Account holder","Account holder"
7
+ "Konto-Nummer","Account Number"
8
+ "Account Number","Account Number"
9
+ "Accountnumber","Account Number"
10
  "Bankleitzahl","Bank code"
11
  "Bank code","Bank code"
12
  "Bank name","Bank name"
30
  "Set to ""no"" if you want to enable DebitPayment only for specific customer groups defined below.","Set to ""no"" if you want to enable DebitPayment only for specific customer groups defined below."
31
  "Minimum Orders Count","Minimum Orders Count"
32
  "-- Please Select --","-- Please Select --"
33
+ "Default: ""0"" for disabled check | Minimum count of orders (in the past) needed for the customer to use this payment method.","Default: ""0"" for disabled check | Minimum count of orders (in the past) needed for the customer to use this payment method."
34
+ "Orders successfully synced for export.","Orders successfully synced for export."
35
+ "No orders available for sync.","No orders available for sync."
36
+ "No orders to export.","No orders to export."
37
+ "Order #","Order #"
38
+ "Purchased On","Purchased On"
39
+ "Bill to Name","Bill to Name"
40
+ "Grand Total","Grand Total"
41
+ "Status","Status"
42
+ "Not exported","Not exported"
43
+ "Exported","Exported"
44
+ "Debit Payment Orders","Debit Payment Orders"
45
+ "Sync Orders","Sync Orders"
46
+ "Export as DTAUS","Export as DTAUS"
47
+ "Export as CSV","Export as CSV"
48
+ "Store Owner Bank Account","Store Owner Bank Account"
49
+ "Account Owner","Account Owner"
50
+ "Routing Number","Routing Number"
51
+ "Please enter bankaccount credentials of the store owner in the system configuration. Otherwise you will not be able to generate a valid export file.","Please enter bankaccount credentials of the store owner in the system configuration. Otherwise you will not be able to generate a valid export file."
js/mage/debit/blzcheck.js CHANGED
@@ -14,7 +14,7 @@
14
  * @category Mage
15
  * @package Mage_Debit
16
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
17
- * @copyright 2011 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
18
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
19
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
  * @link http://www.magentocommerce.com/extension/676/
14
  * @category Mage
15
  * @package Mage_Debit
16
  * @author Rouven Alexander Rieker <rouven.rieker@itabs.de>
17
+ * @copyright 2012 ITABS GmbH / Rouven Alexander Rieker (http://www.itabs.de)
18
  * @copyright 2010 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
19
  * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
  * @link http://www.magentocommerce.com/extension/676/
lib/DTA/DTA.php ADDED
@@ -0,0 +1,1202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * DTA
4
+ *
5
+ * DTA is a class that provides functions to create DTA files used in
6
+ * Germany to exchange informations about money transactions with banks
7
+ * or online banking programs.
8
+ *
9
+ * PHP version 5
10
+ *
11
+ * This LICENSE is in the BSD license style.
12
+ *
13
+ * Copyright (c) 2003-2005 Hermann Stainer, Web-Gear
14
+ * http://www.web-gear.com/
15
+ * Copyright (c) 2008-2010 Martin Schütte
16
+ * All rights reserved.
17
+ *
18
+ * Redistribution and use in source and binary forms, with or without
19
+ * modification, are permitted provided that the following conditions
20
+ * are met:
21
+ *
22
+ * Redistributions of source code must retain the above copyright
23
+ * notice, this list of conditions and the following disclaimer.
24
+ *
25
+ * Redistributions in binary form must reproduce the above copyright
26
+ * notice, this list of conditions and the following disclaimer in the
27
+ * documentation and/or other materials provided with the distribution.
28
+ *
29
+ * Neither the name of Hermann Stainer, Web-Gear nor the names of his
30
+ * contributors may be used to endorse or promote products derived from
31
+ * this software without specific prior written permission.
32
+ *
33
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
34
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
36
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37
+ * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
38
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
39
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
40
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
41
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
42
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
43
+ * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
44
+ * POSSIBILITY OF SUCH DAMAGE.
45
+ *
46
+ * @category Payment
47
+ * @package Payment_DTA
48
+ * @author Hermann Stainer <hs@web-gear.com>
49
+ * @author Martin Schütte <info@mschuette.name>
50
+ * @copyright 2003-2005 Hermann Stainer, Web-Gear
51
+ * @copyright 2008-2010 Martin Schütte
52
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
53
+ * @version SVN: $Id: DTA.php 316502 2011-09-11 19:51:04Z mschuett $
54
+ * @link http://pear.php.net/package/Payment_DTA
55
+ */
56
+
57
+ /**
58
+ * needs base class
59
+ */
60
+ require_once 'DTA/DTABase.php';
61
+
62
+ /**
63
+ * Determines the type of the DTA file:
64
+ * DTA file contains credit payments.
65
+ *
66
+ * @const DTA_CREDIT
67
+ */
68
+ define("DTA_CREDIT", 0);
69
+
70
+ /**
71
+ * Determines the type of the DTA file:
72
+ * DTA file contains debit payments (default).
73
+ *
74
+ * @const DTA_DEBIT
75
+ */
76
+ define("DTA_DEBIT", 1);
77
+
78
+
79
+ /**
80
+ * Dta class provides functions to create and handle with DTA files
81
+ * used in Germany to exchange informations about money transactions with
82
+ * banks or online banking programs.
83
+ *
84
+ * Specifications:
85
+ * - http://www.ebics-zka.de/dokument/pdf/Anlage%203-Spezifikation%20der%20Datenformate%20-%20Version%202.3%20Endfassung%20vom%2005.11.2008.pdf,
86
+ * part 1.1 DTAUS0, p. 4ff
87
+ * - http://www.bundesbank.de/download/zahlungsverkehr/zv_spezifikationen_v1_5.pdf
88
+ * - http://www.hbci-zka.de/dokumente/aenderungen/DTAUS_2002.pdf
89
+ *
90
+ * @category Payment
91
+ * @package Payment_DTA
92
+ * @author Hermann Stainer <hs@web-gear.com>
93
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
94
+ * @version Release: 1.4.2
95
+ * @link http://pear.php.net/package/Payment_DTA
96
+ */
97
+ class DTA extends DTABase
98
+ {
99
+ /**
100
+ * Type of DTA file, DTA_CREDIT or DTA_DEBIT.
101
+ *
102
+ * @var integer $type
103
+ */
104
+ protected $type;
105
+
106
+ /**
107
+ * Sum of bank codes in exchanges; used for control fields.
108
+ *
109
+ * @var integer $sum_bankcodes
110
+ */
111
+ protected $sum_bankcodes;
112
+
113
+ /**
114
+ * Sum of account numbers in exchanges; used for control fields.
115
+ *
116
+ * @var integer $sum_accounts
117
+ */
118
+ protected $sum_accounts;
119
+
120
+ /**
121
+ * Constructor. Creates an empty DTA object or imports one.
122
+ *
123
+ * If the parameter is a string, then it is expected to be in DTA format
124
+ * an its content (sender and transactions) is imported. If the string cannot
125
+ * be parsed at all then an empty DTA object with type DTA_CREDIT is returned.
126
+ * If only parts of the string can be parsed, then all transactions before the
127
+ * error are included into the object.
128
+ * The user should use getParsingError() to check whether a parsing error occured.
129
+ *
130
+ * Otherwise the parameter has to be the type of the new DTA object,
131
+ * either DTA_CREDIT or DTA_DEBIT. In this case exceptions are never
132
+ * thrown to ensure compatibility.
133
+ *
134
+ * @param integer|string $type Either a string with DTA data or the type of the
135
+ * new DTA file (DTA_CREDIT or DTA_DEBIT). Must be set.
136
+ *
137
+ * @access public
138
+ */
139
+ function __construct($type)
140
+ {
141
+ parent::__construct();
142
+ $this->sum_bankcodes = 0;
143
+ $this->sum_accounts = 0;
144
+
145
+ if (is_int($type)) {
146
+ $this->type = $type;
147
+ } else {
148
+ try {
149
+ $this->parse($type);
150
+ } catch (Payment_DTA_FatalParseException $e) {
151
+ // cannot construct this object, reset everything
152
+ parent::__construct();
153
+ $this->sum_bankcodes = 0;
154
+ $this->sum_accounts = 0;
155
+ $this->type = DTA_CREDIT;
156
+ $this->allerrors[] = $e;
157
+ } catch (Payment_DTA_Exception $e) {
158
+ // object is valid, but save the error
159
+ $this->allerrors[] = $e;
160
+ }
161
+ }
162
+ }
163
+
164
+ /**
165
+ * Set the sender of the DTA file. Must be set for valid DTA file.
166
+ * The given account data is also used as default sender's account.
167
+ * Account data contains
168
+ * name Sender's name. Maximally 27 chars are allowed.
169
+ * bank_code Sender's bank code.
170
+ * account_number Sender's account number.
171
+ * additional_name If necessary, additional line for sender's name
172
+ * (maximally 27 chars).
173
+ * exec_date Optional execution date for the DTA file in format DDMMYYYY.
174
+ *
175
+ * @param array $account Account data for file sender.
176
+ *
177
+ * @access public
178
+ * @return boolean
179
+ */
180
+ function setAccountFileSender($account)
181
+ {
182
+ $account['account_number']
183
+ = strval($account['account_number']);
184
+ $account['bank_code']
185
+ = strval($account['bank_code']);
186
+
187
+ if (strlen($account['name']) > 0
188
+ && strlen($account['bank_code']) > 0
189
+ && strlen($account['bank_code']) <= 8
190
+ && ctype_digit($account['bank_code'])
191
+ && strlen($account['account_number']) > 0
192
+ && strlen($account['account_number']) <= 10
193
+ && ctype_digit($account['account_number'])
194
+ ) {
195
+
196
+ if (empty($account['additional_name'])) {
197
+ $account['additional_name'] = "";
198
+ }
199
+
200
+ if (empty($account['exec_date'])
201
+ || !ctype_digit($account['exec_date'])) {
202
+ $account['exec_date'] = str_repeat(" ", 8);
203
+ }
204
+
205
+ $this->account_file_sender = array(
206
+ "name" => $this->filter($account['name'], 27),
207
+ "bank_code" => $account['bank_code'],
208
+ "account_number" => $account['account_number'],
209
+ "additional_name" => $this->filter($account['additional_name'], 27),
210
+ "exec_date" => $account['exec_date']
211
+ );
212
+
213
+ $result = true;
214
+ } else {
215
+ $result = false;
216
+ }
217
+
218
+ return $result;
219
+ }
220
+
221
+ /**
222
+ * Auxillary method to fill and normalize the receiver and sender arrays.
223
+ *
224
+ * @param array $account_receiver Receiver's account data.
225
+ * @param array $account_sender Sender's account data.
226
+ *
227
+ * @access private
228
+ * @return array
229
+ */
230
+ private function _exchangeFillArrays($account_receiver, $account_sender)
231
+ {
232
+ if (empty($account_receiver['additional_name'])) {
233
+ $account_receiver['additional_name'] = "";
234
+ }
235
+ if (empty($account_sender['name'])) {
236
+ $account_sender['name'] = $this->account_file_sender['name'];
237
+ }
238
+ if (empty($account_sender['bank_code'])) {
239
+ $account_sender['bank_code'] = $this->account_file_sender['bank_code'];
240
+ }
241
+ if (empty($account_sender['account_number'])) {
242
+ $account_sender['account_number']
243
+ = $this->account_file_sender['account_number'];
244
+ }
245
+ if (empty($account_sender['additional_name'])) {
246
+ $account_sender['additional_name']
247
+ = $this->account_file_sender['additional_name'];
248
+ }
249
+
250
+ $account_receiver['account_number']
251
+ = strval($account_receiver['account_number']);
252
+ $account_receiver['bank_code']
253
+ = strval($account_receiver['bank_code']);
254
+ $account_sender['account_number']
255
+ = strval($account_sender['account_number']);
256
+ $account_sender['bank_code']
257
+ = strval($account_sender['bank_code']);
258
+
259
+ return array($account_receiver, $account_sender);
260
+ }
261
+
262
+ /**
263
+ * Adds an exchange. First the account data for the receiver of the exchange is
264
+ * set. In the case the DTA file contains credits, this is the payment receiver.
265
+ * In the other case (the DTA file contains debits), this is the account, from
266
+ * which money is taken away. If the sender is not specified, values of the
267
+ * file sender are used by default.
268
+ *
269
+ * Account data for receiver and sender contain
270
+ * name Name. Maximally 27 chars are allowed.
271
+ * bank_code Bank code.
272
+ * account_number Account number.
273
+ * additional_name If necessary, additional line for name (maximally 27 chars).
274
+ *
275
+ * @param array $account_receiver Receiver's account data.
276
+ * @param double $amount Amount of money in this exchange.
277
+ * Currency: EURO
278
+ * @param array $purposes Array of up to 14 lines
279
+ * (maximally 27 chars each) for
280
+ * description of the exchange.
281
+ * A string is accepted as well.
282
+ * @param array $account_sender Sender's account data.
283
+ *
284
+ * @access public
285
+ * @return boolean
286
+ */
287
+ function addExchange(
288
+ $account_receiver,
289
+ $amount,
290
+ $purposes,
291
+ $account_sender = array()
292
+ ) {
293
+ list($account_receiver, $account_sender)
294
+ = $this->_exchangeFillArrays($account_receiver, $account_sender);
295
+
296
+ $cents = (int)(round($amount * 100));
297
+ if (strlen($account_sender['name']) > 0
298
+ && strlen($account_sender['bank_code']) > 0
299
+ && strlen($account_sender['bank_code']) <= 8
300
+ && ctype_digit($account_sender['bank_code'])
301
+ && strlen($account_sender['account_number']) > 0
302
+ && strlen($account_sender['account_number']) <= 10
303
+ && ctype_digit($account_sender['account_number'])
304
+ && strlen($account_receiver['name']) > 0
305
+ && strlen($account_receiver['bank_code']) <= 8
306
+ && ctype_digit($account_receiver['bank_code'])
307
+ && strlen($account_receiver['account_number']) <= 10
308
+ && ctype_digit($account_receiver['account_number'])
309
+ && is_numeric($amount)
310
+ && $cents > 0
311
+ && $cents <= PHP_INT_MAX
312
+ && $this->sum_amounts <= (PHP_INT_MAX - $cents)
313
+ && ( (is_string($purposes)
314
+ && strlen($purposes) > 0)
315
+ || (is_array($purposes)
316
+ && count($purposes) >= 1
317
+ && count($purposes) <= 14))
318
+ ) {
319
+ $this->sum_amounts += $cents;
320
+ $this->sum_bankcodes += $account_receiver['bank_code'];
321
+ $this->sum_accounts += $account_receiver['account_number'];
322
+
323
+ if (is_string($purposes)) {
324
+ $filtered_purposes = str_split(
325
+ $this->makeValidString($purposes), 27
326
+ );
327
+ $filtered_purposes = array_slice($filtered_purposes, 0, 14);
328
+ } else {
329
+ $filtered_purposes = array();
330
+ foreach ($purposes as $purposeline) {
331
+ $filtered_purposes[] = $this->filter($purposeline, 27);
332
+ }
333
+ }
334
+
335
+ $this->exchanges[] = array(
336
+ "sender_name" => $this->filter(
337
+ $account_sender['name'], 27
338
+ ),
339
+ "sender_bank_code" => $account_sender['bank_code'],
340
+ "sender_account_number" => $account_sender['account_number'],
341
+ "sender_additional_name" => $this->filter(
342
+ $account_sender['additional_name'], 27
343
+ ),
344
+ "receiver_name" => $this->filter(
345
+ $account_receiver['name'], 27
346
+ ),
347
+ "receiver_bank_code" => $account_receiver['bank_code'],
348
+ "receiver_account_number" => $account_receiver['account_number'],
349
+ "receiver_additional_name" => $this->filter(
350
+ $account_receiver['additional_name'], 27
351
+ ),
352
+ "amount" => $cents,
353
+ "purposes" => $filtered_purposes
354
+ );
355
+
356
+ $result = true;
357
+ } else {
358
+ $result = false;
359
+ }
360
+
361
+ return $result;
362
+ }
363
+
364
+ /**
365
+ * Auxillary method to write the A record.
366
+ *
367
+ * @access private
368
+ * @return string
369
+ */
370
+ private function _generateArecord()
371
+ {
372
+ $content = "";
373
+
374
+ // (field numbers according to ebics-zka.de specification)
375
+ // A1 record length (128 Bytes)
376
+ $content .= str_pad("128", 4, "0", STR_PAD_LEFT);
377
+ // A2 record type
378
+ $content .= "A";
379
+ // A3 file mode (credit or debit)
380
+ // and Customer File ("K") / Bank File ("B")
381
+ $content .= ($this->type == DTA_CREDIT) ? "G" : "L";
382
+ $content .= "K";
383
+ // A4 sender's bank code
384
+ $content .= str_pad(
385
+ $this->account_file_sender['bank_code'], 8, "0", STR_PAD_LEFT
386
+ );
387
+ // A5 only used if Bank File, otherwise NULL
388
+ $content .= str_repeat("0", 8);
389
+ // A6 sender's name
390
+ $content .= str_pad(
391
+ $this->account_file_sender['name'], 27, " ", STR_PAD_RIGHT
392
+ );
393
+ // A7 date of file creation
394
+ $content .= strftime("%d%m%y", $this->timestamp);
395
+ // A8 free (bank internal)
396
+ $content .= str_repeat(" ", 4);
397
+ // A9 sender's account number
398
+ $content .= str_pad(
399
+ $this->account_file_sender['account_number'], 10, "0", STR_PAD_LEFT
400
+ );
401
+ // A10 sender's reference number (optional)
402
+ $content .= str_repeat("0", 10);
403
+ // A11a free (reserve)
404
+ $content .= str_repeat(" ", 15);
405
+ // A11b execution date ("DDMMYYYY", optional)
406
+ $content .= $this->account_file_sender['exec_date'];
407
+ // A11c free (reserve)
408
+ $content .= str_repeat(" ", 24);
409
+ // A12 currency (1 = Euro)
410
+ $content .= "1";
411
+
412
+ assert(strlen($content) == 128);
413
+ return $content;
414
+ }
415
+
416
+ /**
417
+ * Auxillary method to write C records.
418
+ *
419
+ * @param array $exchange The transaction to serialize.
420
+ *
421
+ * @access private
422
+ * @return string
423
+ */
424
+ private function _generateCrecord($exchange)
425
+ {
426
+ // preparation of additional parts for record extensions
427
+ $additional_parts = array();
428
+ $additional_purposes = $exchange['purposes'];
429
+ $first_purpose = array_shift($additional_purposes);
430
+
431
+ if (strlen($exchange['receiver_additional_name']) > 0) {
432
+ $additional_parts[] = array("type" => "01",
433
+ "content" => $exchange['receiver_additional_name']
434
+ );
435
+ }
436
+
437
+ foreach ($additional_purposes as $additional_purpose) {
438
+ $additional_parts[] = array("type" => "02",
439
+ "content" => $additional_purpose
440
+ );
441
+ }
442
+
443
+ if (strlen($exchange['sender_additional_name']) > 0) {
444
+ $additional_parts[] = array("type" => "03",
445
+ "content" => $exchange['sender_additional_name']
446
+ );
447
+ }
448
+ assert(count($additional_parts) <= 15);
449
+
450
+ $content = "";
451
+
452
+ // (field numbers according to ebics-zka.de specification)
453
+ // C1 record length (187 Bytes + 29 Bytes for each additional part)
454
+ $content .= str_pad(
455
+ 187 + count($additional_parts) * 29, 4, "0", STR_PAD_LEFT
456
+ );
457
+ // C2 record type
458
+ $content .= "C";
459
+ // C3 first involved bank
460
+ $content .= str_pad(
461
+ $exchange['sender_bank_code'], 8, "0", STR_PAD_LEFT
462
+ );
463
+ // C4 receiver's bank code
464
+ $content .= str_pad(
465
+ $exchange['receiver_bank_code'], 8, "0", STR_PAD_LEFT
466
+ );
467
+ // C5 receiver's account number
468
+ $content .= str_pad(
469
+ $exchange['receiver_account_number'], 10, "0", STR_PAD_LEFT
470
+ );
471
+ // C6 internal customer number (11 chars) or NULL
472
+ $content .= "0" . str_repeat("0", 11) . "0";
473
+ // C7a payment mode (text key)
474
+ $content .= ($this->type == DTA_CREDIT) ? "51" : "05";
475
+ // C7b additional text key
476
+ $content .= "000";
477
+ // C8 bank internal
478
+ $content .= " ";
479
+ // C9 free (reserve)
480
+ $content .= str_repeat("0", 11);
481
+ // C10 sender's bank code
482
+ $content .= str_pad(
483
+ $exchange['sender_bank_code'], 8, "0", STR_PAD_LEFT
484
+ );
485
+ // C11 sender's account number
486
+ $content .= str_pad(
487
+ $exchange['sender_account_number'], 10, "0", STR_PAD_LEFT
488
+ );
489
+ // C12 amount
490
+ $content .= str_pad(
491
+ $exchange['amount'], 11, "0", STR_PAD_LEFT
492
+ );
493
+ // C13 free (reserve)
494
+ $content .= str_repeat(" ", 3);
495
+ // C14a receiver's name
496
+ $content .= str_pad(
497
+ $exchange['receiver_name'], 27, " ", STR_PAD_RIGHT
498
+ );
499
+ // C14b delimitation
500
+ $content .= str_repeat(" ", 8);
501
+ /* first part/128 chars full */
502
+ // C15 sender's name
503
+ $content .= str_pad(
504
+ $exchange['sender_name'], 27, " ", STR_PAD_RIGHT
505
+ );
506
+ // C16 first line of purposes
507
+ $content .= str_pad($first_purpose, 27, " ", STR_PAD_RIGHT);
508
+ // C17a currency (1 = Euro)
509
+ $content .= "1";
510
+ // C17b free (reserve)
511
+ $content .= str_repeat(" ", 2);
512
+ // C18 number of additional parts (00-15)
513
+ $content .= str_pad(count($additional_parts), 2, "0", STR_PAD_LEFT);
514
+
515
+ /*
516
+ * End of the constant part (187 chars),
517
+ * now up to 15 extensions with 29 chars each might follow.
518
+ */
519
+
520
+ if (count($additional_parts) == 0) {
521
+ // no extension, pad to fill the part to 2*128 chars
522
+ $content .= str_repeat(" ", 256-187);
523
+ } else {
524
+ // The first two extensions fit into the current part:
525
+ for ($index = 1;$index <= 2;$index++) {
526
+ if (count($additional_parts) > 0) {
527
+ $additional_part = array_shift($additional_parts);
528
+ } else {
529
+ $additional_part = array("type" => " ",
530
+ "content" => ""
531
+ );
532
+ }
533
+ // C19/21 type of addional part
534
+ $content .= $additional_part['type'];
535
+ // C20/22 additional part content
536
+ $content .= str_pad(
537
+ $additional_part['content'], 27, " ", STR_PAD_RIGHT
538
+ );
539
+ }
540
+ // delimitation
541
+ $content .= str_repeat(" ", 11);
542
+ }
543
+
544
+ // For more extensions add up to 4 more parts:
545
+ for ($part = 3;$part <= 5;$part++) {
546
+ if (count($additional_parts) > 0) {
547
+ for ($index = 1;$index <= 4;$index++) {
548
+ if (count($additional_parts) > 0) {
549
+ $additional_part = array_shift($additional_parts);
550
+ } else {
551
+ $additional_part = array("type" => " ",
552
+ "content" => ""
553
+ );
554
+ }
555
+ // C24/26/28/30 type of addional part
556
+ $content .= $additional_part['type'];
557
+ // C25/27/29/31 additional part content
558
+ $content .= str_pad(
559
+ $additional_part['content'], 27, " ", STR_PAD_RIGHT
560
+ );
561
+ }
562
+ // C32 delimitation
563
+ $content .= str_repeat(" ", 12);
564
+ }
565
+ }
566
+ // with 15 extensions there may be a 6th part
567
+ if (count($additional_parts) > 0) {
568
+ $additional_part = array_shift($additional_parts);
569
+ // C24 type of addional part
570
+ $content .= $additional_part['type'];
571
+ // C25 additional part content
572
+ $content .= str_pad(
573
+ $additional_part['content'], 27, " ", STR_PAD_RIGHT
574
+ );
575
+ // padding to fill the part
576
+ $content .= str_repeat(" ", 128-27-2);
577
+ }
578
+ assert(count($additional_parts) == 0);
579
+ assert(strlen($content) % 128 == 0);
580
+ return $content;
581
+ }
582
+
583
+ /**
584
+ * Auxillary method to write the E record.
585
+ *
586
+ * @access private
587
+ * @return string
588
+ */
589
+ private function _generateErecord()
590
+ {
591
+ $content = "";
592
+
593
+ // (field numbers according to ebics-zka.de specification)
594
+ // E1 record length (128 bytes)
595
+ $content .= str_pad("128", 4, "0", STR_PAD_LEFT);
596
+ // E2 record type
597
+ $content .= "E";
598
+ // E3 free (reserve)
599
+ $content .= str_repeat(" ", 5);
600
+ // E4 number of records type C
601
+ $content .= str_pad(count($this->exchanges), 7, "0", STR_PAD_LEFT);
602
+ // E5 free (reserve)
603
+ $content .= str_repeat("0", 13);
604
+ // use number_format() to ensure proper integer formatting
605
+ // E6 sum of account numbers
606
+ $content .= str_pad(
607
+ number_format($this->sum_accounts, 0, "", ""), 17, "0", STR_PAD_LEFT
608
+ );
609
+ // E7 sum of bank codes
610
+ $content .= str_pad(
611
+ number_format($this->sum_bankcodes, 0, "", ""), 17, "0", STR_PAD_LEFT
612
+ );
613
+ // E8 sum of amounts
614
+ $content .= str_pad(
615
+ number_format($this->sum_amounts, 0, "", ""), 13, "0", STR_PAD_LEFT
616
+ );
617
+ // E9 delimitation
618
+ $content .= str_repeat(" ", 51);
619
+
620
+ assert(strlen($content) % 128 == 0);
621
+ return $content;
622
+ }
623
+
624
+ /**
625
+ * Returns the full content of the generated DTA file.
626
+ * All added exchanges are processed.
627
+ *
628
+ * @access public
629
+ * @return string
630
+ */
631
+ function getFileContent()
632
+ {
633
+ $content = "";
634
+
635
+ /**
636
+ * data record A
637
+ */
638
+ $content .= $this->_generateArecord();
639
+
640
+ /**
641
+ * data record(s) C
642
+ */
643
+ $sum_account_numbers = 0;
644
+ $sum_bank_codes = 0;
645
+ $sum_amounts = 0;
646
+
647
+ foreach ($this->exchanges as $exchange) {
648
+ $sum_account_numbers += $exchange['receiver_account_number'];
649
+ $sum_bank_codes += (int) $exchange['receiver_bank_code'];
650
+ $sum_amounts += (int) $exchange['amount'];
651
+
652
+ $content .= $this->_generateCrecord($exchange);
653
+ assert(strlen($content) % 128 == 0);
654
+ }
655
+
656
+ assert($this->sum_amounts === $sum_amounts);
657
+ assert($this->sum_bankcodes === $sum_bank_codes);
658
+ assert($this->sum_accounts === $sum_account_numbers);
659
+
660
+ /**
661
+ * data record E
662
+ */
663
+ $content .= $this->_generateErecord();
664
+
665
+ return $content;
666
+ }
667
+
668
+ /**
669
+ * Returns an array with information about the transactions.
670
+ * Can be used to print an accompanying document (Begleitzettel) for disks.
671
+ *
672
+ * @access public
673
+ * @return array Returns an array with keys: "sender_name",
674
+ * "sender_bank_code", "sender_account", "sum_amounts",
675
+ * "type", "sum_bankcodes", "sum_accounts", "count", "date", "exec_date"
676
+ */
677
+ function getMetaData()
678
+ {
679
+ $meta = parent::getMetaData();
680
+
681
+ $meta["sum_bankcodes"] = floatval($this->sum_bankcodes);
682
+ $meta["sum_accounts"] = floatval($this->sum_accounts);
683
+ $meta["type"] = strval(($this->type == DTA_CREDIT) ? "CREDIT" : "DEBIT");
684
+
685
+ $meta["exec_date"] = $meta["date"];
686
+ // use timestamp to be consistent with $meta["date"]
687
+ if ($this->account_file_sender["exec_date"] !== "") {
688
+ $ftime = strptime($this->account_file_sender["exec_date"], '%d%m%Y');
689
+ if ($ftime) {
690
+ $meta["exec_date"] = mktime(0, 0, 0,
691
+ $ftime['tm_mon'] + 1,
692
+ $ftime['tm_mday'],
693
+ $ftime['tm_year'] + 1900
694
+ );
695
+ }
696
+ }
697
+ return $meta;
698
+ }
699
+
700
+ /**
701
+ * Auxillary parser to consume A records.
702
+ *
703
+ * @param string $input content of DTA file
704
+ * @param integer &$offset read offset into $input
705
+ *
706
+ * @throws Payment_DTA_Exception on unrecognized input
707
+ * @access private
708
+ * @return void
709
+ */
710
+ private function _parseArecord($input, &$offset)
711
+ {
712
+ /* field 1+2 */
713
+ $this->checkStr($input, $offset, "0128A");
714
+ /* field 3 */
715
+ $type = $this->getStr($input, $offset, 2);
716
+ /* field 4 */
717
+ $Asender_blz = $this->getNum($input, $offset, 8);
718
+ /* field 5 */
719
+ $this->checkStr($input, $offset, "00000000");
720
+ /* field 6 */
721
+ $Asender_name = rtrim($this->getStr($input, $offset, 27, true));
722
+ /* field 7 */
723
+ $Adate_day = $this->getNum($input, $offset, 2);
724
+ $Adate_month = $this->getNum($input, $offset, 2);
725
+ $Adate_year = $this->getNum($input, $offset, 2);
726
+ $this->timestamp = mktime(
727
+ 0, 0, 0,
728
+ intval($Adate_month), intval($Adate_day), intval($Adate_year)
729
+ );
730
+ /* field 8 */
731
+ $this->checkStr($input, $offset, " ");
732
+ /* field 9 */
733
+ $Asender_account = $this->getNum($input, $offset, 10);
734
+ /* field 10 */
735
+ $this->checkStr($input, $offset, "0000000000");
736
+ /* field 11a */
737
+ $this->checkStr($input, $offset, str_repeat(" ", 15));
738
+ /* field 11b */
739
+ $Aexec_date = $this->getStr($input, $offset, 8);
740
+ /* field 11c */
741
+ $this->checkStr($input, $offset, str_repeat(" ", 24));
742
+ /* field 12 */
743
+ $this->checkStr($input, $offset, "1");
744
+
745
+ /* the first char G/L indicates credit and debit exchanges
746
+ * the second char K/B indicates a customer or bank file
747
+ * (I do not know if bank files should be treated different)
748
+ */
749
+ if ($type === "GK" || $type === "GB") {
750
+ $this->type = DTA_CREDIT;
751
+ } elseif ($type === "LK" || $type === "LB") {
752
+ $this->type = DTA_DEBIT;
753
+ } else {
754
+ throw new Payment_DTA_FatalParseException(
755
+ "Invalid type indicator: '$type', expected ".
756
+ "either 'GK'/'GB' or 'LK'/'LB' (@offset 6).");
757
+ }
758
+
759
+ /*
760
+ * additional_name is problematic and cannot be parsed & reproduced.
761
+ * it is set as part of the AccountFileSender, but appears as part
762
+ * of every transaction.
763
+ */
764
+ $rc = $this->setAccountFileSender(
765
+ array(
766
+ "name" => $Asender_name,
767
+ "bank_code" => $Asender_blz,
768
+ "account_number" => $Asender_account,
769
+ "additional_name" => '',
770
+ "exec_date" => $Aexec_date
771
+ )
772
+ );
773
+ if (!$rc) {
774
+ // should never happen
775
+ throw new Payment_DTA_FatalParseException(
776
+ "Cannot setAccountFileSender(), please file a bug report");
777
+ }
778
+ // currently not a TODO:
779
+ // does anyone have to preserve the creation date or execution date?
780
+ }
781
+
782
+ /**
783
+ * Auxillary method to parse C record extensions.
784
+ *
785
+ * Reads the variable number of extensions at the end of a C record.
786
+ *
787
+ * @param string $input content of DTA file
788
+ * @param integer &$offset read offset into $input
789
+ * @param integer $extensions expected number of extensions
790
+ * @param integer $c_start C record offset (for exceptions)
791
+ *
792
+ * @throws Payment_DTA_ParseException on invalid extensions
793
+ * @access private
794
+ * @return array of $Cpurpose, 2nd sender line, 2nd receiver line
795
+ */
796
+ private function _parseCextension($input, &$offset, $extensions, $c_start)
797
+ {
798
+ $extensions_read = array();
799
+
800
+ // first handle the up to 2 extensions inside the 2nd part
801
+ if ($extensions == 0) { // only padding
802
+ $this->checkStr($input, $offset, str_repeat(" ", 69));
803
+ } elseif ($extensions == 1) {
804
+ /* field 19 */
805
+ $ext_type = $this->getNum($input, $offset, 2);
806
+ /* field 20 */
807
+ $ext_content = $this->getStr($input, $offset, 27, true);
808
+ array_push($extensions_read, array($ext_type, $ext_content));
809
+ /* fields 21,22,23 */
810
+ $this->checkStr($input, $offset, str_repeat(" ", 2+27+11));
811
+ } else {
812
+ /* field 19 */
813
+ $ext_type = $this->getNum($input, $offset, 2);
814
+ /* field 20 */
815
+ $ext_content = $this->getStr($input, $offset, 27, true);
816
+ array_push($extensions_read, array($ext_type, $ext_content));
817
+ /* field 21 */
818
+ $ext_type = $this->getNum($input, $offset, 2);
819
+ /* field 22 */
820
+ $ext_content = $this->getStr($input, $offset, 27, true);
821
+ array_push($extensions_read, array($ext_type, $ext_content));
822
+ /* fields 23 */
823
+ $this->checkStr($input, $offset, str_repeat(" ", 11));
824
+ }
825
+ // end 2nd part of C record
826
+ assert($offset % 128 === 0);
827
+
828
+ // up to 4 more parts, each with 128 bytes & up to 4 extensions
829
+ while (count($extensions_read) < $extensions) {
830
+ $ext_in_part = $extensions - count($extensions_read);
831
+ // one switch to read the content
832
+ switch($ext_in_part) {
833
+ default: // =4
834
+ case 4: /* fallthrough */
835
+ $ext_type = $this->getNum($input, $offset, 2);
836
+ $ext_content = $this->getStr($input, $offset, 27, true);
837
+ array_push($extensions_read, array($ext_type, $ext_content));
838
+ case 3: /* fallthrough */
839
+ $ext_type = $this->getNum($input, $offset, 2);
840
+ $ext_content = $this->getStr($input, $offset, 27, true);
841
+ array_push($extensions_read, array($ext_type, $ext_content));
842
+ case 2: /* fallthrough */
843
+ $ext_type = $this->getNum($input, $offset, 2);
844
+ $ext_content = $this->getStr($input, $offset, 27, true);
845
+ array_push($extensions_read, array($ext_type, $ext_content));
846
+ case 1: /* fallthrough */
847
+ $ext_type = $this->getNum($input, $offset, 2);
848
+ $ext_content = $this->getStr($input, $offset, 27, true);
849
+ array_push($extensions_read, array($ext_type, $ext_content));
850
+ break;
851
+ case 0:
852
+ // should never happen
853
+ throw new Payment_DTA_ParseException('confused about '.
854
+ 'number of extensions in transaction number '.
855
+ strval($this->count()+1) .' @ offset '. strval($c_start) .
856
+ ', please file a bug report');
857
+ }
858
+
859
+ // and one switch for the padding
860
+ switch($ext_in_part) {
861
+ case 1:
862
+ $this->checkStr($input, $offset, str_repeat(" ", 29));
863
+ case 2: /* fallthrough */
864
+ $this->checkStr($input, $offset, str_repeat(" ", 29));
865
+ case 3: /* fallthrough */
866
+ $this->checkStr($input, $offset, str_repeat(" ", 29));
867
+ case 4: /* fallthrough */
868
+ default: /* fallthrough */
869
+ $this->checkStr($input, $offset, str_repeat(" ", 12));
870
+ break;
871
+ }
872
+ // end n-th part of C record
873
+ assert($offset % 128 === 0);
874
+ }
875
+ return $extensions_read;
876
+ }
877
+
878
+ /**
879
+ * Auxillary method to combine C record extensions.
880
+ *
881
+ * Takes the parsed extensions to check the allowed number of them per type
882
+ * and to collect all purpose lines into one array.
883
+ *
884
+ * @param array $extensions_read read extensions as arrays
885
+ * @param array $Cpurpose existing array of purpose lines
886
+ * @param integer $c_start C record offset (for exceptions)
887
+ *
888
+ * @throws Payment_DTA_ParseException on invalid extensions
889
+ * @access private
890
+ * @return array of $Cpurpose, 2nd sender line, 2nd receiver line
891
+ */
892
+ private function _processCextension($extensions_read, $Cpurpose, $c_start)
893
+ {
894
+ $Csender_name2 = "";
895
+ $Creceiver_name2 = "";
896
+
897
+ foreach ($extensions_read as $ext) {
898
+ $ext_type = $ext[0];
899
+ $ext_content = $ext[1];
900
+
901
+ switch($ext_type) {
902
+ case 1:
903
+ if (!empty($Creceiver_name2)) {
904
+ throw new Payment_DTA_ParseException('multiple '.
905
+ 'receiver name extensions in transaction number '.
906
+ strval($this->count()+1) .' @ offset '. strval($c_start));
907
+ } else {
908
+ $Creceiver_name2 = $ext_content;
909
+ }
910
+ break;
911
+ case 2:
912
+ if (count($Cpurpose) >= 14) {
913
+ // allowed: 1 line in fixed part + 13 in extensions
914
+ throw new Payment_DTA_ParseException('too many '.
915
+ 'purpose extensions in transaction number '.
916
+ strval($this->count()+1) .' @ offset '. strval($c_start));
917
+ } else {
918
+ array_push($Cpurpose, $ext_content);
919
+ }
920
+ break;
921
+ case 3:
922
+ if (!empty($Csender_name2)) {
923
+ throw new Payment_DTA_ParseException('multiple '.
924
+ 'receiver name extensions in transaction number '.
925
+ strval($this->count()+1) .' @ offset '. strval($c_start));
926
+ } else {
927
+ $Csender_name2 = $ext_content;
928
+ }
929
+ break;
930
+ default:
931
+ throw new Payment_DTA_ParseException('invalid '.
932
+ 'extension type in transaction number '.
933
+ strval($this->count()+1) .' @ offset '. strval($c_start));
934
+ }
935
+ }
936
+
937
+ return array($Cpurpose, $Csender_name2, $Creceiver_name2);
938
+ }
939
+
940
+ /**
941
+ * Auxillary parser to consume C records.
942
+ *
943
+ * @param string $input content of DTA file
944
+ * @param integer &$offset read offset into $input
945
+ * @param array &$checks holds checksums for validation in E record
946
+ *
947
+ * @throws Payment_DTA_Exception on unrecognized input
948
+ * @access private
949
+ * @return void
950
+ */
951
+ private function _parseCrecord($input, &$offset, &$checks)
952
+ {
953
+ // save for possible exceptions
954
+ $c_start = $offset;
955
+
956
+ /* field 1 */
957
+ $record_length = $this->getNum($input, $offset, 4);
958
+ /* field 2 */
959
+ $this->checkStr($input, $offset, "C");
960
+
961
+ // check the record length
962
+ if (($record_length-187)%29) {
963
+ throw new Payment_DTA_ParseException('invalid C record length');
964
+ }
965
+ $extensions_length = ($record_length-187)/29;
966
+
967
+ /* field 3 */
968
+ $Cbank_blz = $this->getNum($input, $offset, 8); // usually 0, ignored
969
+ /* field 4 */
970
+ $Creceiver_blz = $this->getNum($input, $offset, 8);
971
+ /* field 5 */
972
+ $Creceiver_account = $this->getNum($input, $offset, 10);
973
+ /* field 6 */
974
+ $this->checkStr($input, $offset, "0");
975
+ // either 0s or aninternal customer number:
976
+ $this->getNum($input, $offset, 11);
977
+ $this->checkStr($input, $offset, "0");
978
+ /* field 7 */
979
+ // may hold about a dozen values with details about the type of transaction
980
+ $Ctype = $this->getStr($input, $offset, 5);
981
+ if ( (($this->type == DTA_DEBIT) && (!preg_match('/^0[45]\d{3}$/', $Ctype)))
982
+ || (($this->type == DTA_CREDIT) && (!preg_match('/^5\d{4}$/', $Ctype)))
983
+ ) {
984
+ throw new Payment_DTA_ParseException('C record type of payment '.
985
+ '(' . $Ctype . ') '.
986
+ 'does not match A record type indicator '.
987
+ '(' . (($this->type == DTA_CREDIT) ? "CREDIT" : "DEBIT") . ') '.
988
+ 'in transaction number '. strval($this->count()+1) .
989
+ ' @ offset '. strval($c_start));
990
+ }
991
+ /* field 8 */
992
+ $this->checkStr($input, $offset, " ");
993
+ /* field 9 */
994
+ $this->checkStr($input, $offset, "00000000000");
995
+ /* field 10 */
996
+ $Csender_blz = $this->getNum($input, $offset, 8);
997
+ /* field 11 */
998
+ $Csender_account = $this->getNum($input, $offset, 10);
999
+ /* field 12 */
1000
+ $Camount = $this->getNum($input, $offset, 11);
1001
+ /* field 13 */
1002
+ $this->checkStr($input, $offset, " ");
1003
+ /* field 14a */
1004
+ $Creceiver_name = rtrim($this->getStr($input, $offset, 27, true));
1005
+ /* field 14b */
1006
+ $this->checkStr($input, $offset, " ");
1007
+ // end 1st part of C record
1008
+ assert($offset % 128 === 0);
1009
+ /* field 15 */
1010
+ $Csender_name = rtrim($this->getStr($input, $offset, 27, true));
1011
+ /* field 16 */
1012
+ $Cpurpose = array(rtrim($this->getStr($input, $offset, 27, true)));
1013
+ /* field 17a */
1014
+ $this->checkStr($input, $offset, "1");
1015
+ /* field 17b */
1016
+ $this->checkStr($input, $offset, " ");
1017
+ /* field 18 */
1018
+ $extensions = $this->getNum($input, $offset, 2);
1019
+ if ($extensions != $extensions_length) {
1020
+ throw new Payment_DTA_ParseException('number of extensions '.
1021
+ 'does not match record length in transaction number '.
1022
+ strval($this->count()+1) .' @ offset '. strval($c_start));
1023
+ }
1024
+
1025
+ // extensions to C record, read into array & processed later
1026
+ $extensions_read
1027
+ = $this->_parseCextension($input, $offset, $extensions, $c_start);
1028
+
1029
+ // process read extension content
1030
+ list($Cpurpose, $Csender_name2, $Creceiver_name2)
1031
+ = $this->_processCextension($extensions_read, $Cpurpose, $c_start);
1032
+
1033
+ /* we read the fields, now add an exchange */
1034
+ $rc = $this->addExchange(
1035
+ array(
1036
+ 'name' => $Creceiver_name,
1037
+ 'bank_code' => $Creceiver_blz,
1038
+ 'account_number' => $Creceiver_account,
1039
+ 'additional_name' => $Creceiver_name2
1040
+ ),
1041
+ $Camount/100.0,
1042
+ $Cpurpose,
1043
+ array(
1044
+ 'name' => $Csender_name,
1045
+ 'bank_code' => $Csender_blz,
1046
+ 'account_number' => $Csender_account,
1047
+ 'additional_name' => $Csender_name2
1048
+ )
1049
+ );
1050
+ if (!$rc) {
1051
+ // should never happen
1052
+ throw new Payment_DTA_ParseException('Cannot addExchange() '.
1053
+ 'for transaction number '.strval($this->count()+1) .
1054
+ ' @ offset '. strval($c_start). ', please file a bug report');
1055
+ }
1056
+ $checks['account'] += $Creceiver_account;
1057
+ $checks['blz'] += $Creceiver_blz;
1058
+ $checks['amount'] += $Camount;
1059
+ }
1060
+
1061
+ /**
1062
+ * Auxillary parser to consume E records.
1063
+ *
1064
+ * @param string $input content of DTA file
1065
+ * @param integer &$offset read offset into $input
1066
+ * @param array $checks holds checksums for validation
1067
+ *
1068
+ * @throws Payment_DTA_Exception on unrecognized input
1069
+ * @access private
1070
+ * @return void
1071
+ */
1072
+ private function _parseErecord($input, &$offset, $checks)
1073
+ {
1074
+ /* field 1+2 */
1075
+ $this->checkStr($input, $offset, "0128E");
1076
+ /* field 3 */
1077
+ $this->checkStr($input, $offset, " ");
1078
+ /* field 4 */
1079
+ $E_check_count = $this->getNum($input, $offset, 7);
1080
+ /* field 5 */
1081
+ $this->checkStr($input, $offset, str_repeat("0", 13));
1082
+ /* field 6 */
1083
+ $E_check_account = $this->getNum($input, $offset, 17);
1084
+ /* field 7 */
1085
+ $E_check_blz = $this->getNum($input, $offset, 17);
1086
+ /* field 8 */
1087
+ $E_check_amount = $this->getNum($input, $offset, 13);
1088
+ /* field 9 */
1089
+ $this->checkStr($input, $offset, str_repeat(" ", 51));
1090
+ // end of E record
1091
+ assert($offset % 128 === 0);
1092
+
1093
+ // check checksums
1094
+
1095
+ /*
1096
+ * NB: because errors are indicated by exceptions, the user/caller never
1097
+ * sees more than one checksum error. Only the first mismatch is reported,
1098
+ * the other checks are skipped by throwing the exception.
1099
+ */
1100
+ if ($E_check_count != $this->count()) {
1101
+ throw new Payment_DTA_ChecksumException(
1102
+ "E record checksum mismatch for transaction count: ".
1103
+ "reads $E_check_count, expected ".$this->count());
1104
+ }
1105
+ if ($E_check_account != $checks['account']) {
1106
+ throw new Payment_DTA_ChecksumException(
1107
+ "E record checksum mismatch for account numbers: ".
1108
+ "reads $E_check_account, expected ".$checks['account']);
1109
+ }
1110
+ if ($E_check_blz != $checks['blz']) {
1111
+ throw new Payment_DTA_ChecksumException(
1112
+ "E record checksum mismatch for bank codes: ".
1113
+ "reads $E_check_blz, expected ".$checks['blz']);
1114
+ }
1115
+ if ($E_check_amount != $checks['amount']) {
1116
+ throw new Payment_DTA_ChecksumException(
1117
+ "E record checksum mismatch for transfer amount: ".
1118
+ "reads $E_check_amount, expected ".$checks['amount']);
1119
+ }
1120
+ }
1121
+
1122
+ /**
1123
+ * Parser. Read data from an existing DTA file content.
1124
+ *
1125
+ * Parsing can leave us with four situations:
1126
+ * - the input is parsed correctly => valid DTA object.
1127
+ * - the input is parsed but a checksum does not match the data read
1128
+ * => valid DTA object.
1129
+ * throws a Payment_DTA_ChecksumException.
1130
+ * - the n-th transaction cannot be parsed => parsing stops there, yielding
1131
+ * a valid DTA object, but with only the first n-1 transactions
1132
+ * and without checksum verification.
1133
+ * throws a Payment_DTA_ParseException.
1134
+ * - a parsing error occurs in the A record => the DTA object is invalid
1135
+ * throws a Payment_DTA_FatalParseException.
1136
+ *
1137
+ * @param string $input content of DTA file
1138
+ *
1139
+ * @throws Payment_DTA_Exception on unrecognized input
1140
+ * @access protected
1141
+ * @return void
1142
+ */
1143
+ protected function parse($input)
1144
+ {
1145
+ /*
1146
+ * Open Questions/TODOs for the parsing code:
1147
+ * - Are the provided exceptions adequate? (Or are they too verbose for
1148
+ * practical use or OTOH not detailed enough to really handle errors?)
1149
+ * - Should we try to parse truncated files, i.e. ones with a wrong length?
1150
+ * - Should we try to find records with a wrong offset, e.g. when an
1151
+ * encoding error shifts all following records 4 bytes backwards?
1152
+ * - Should we abort on any error or rather skip the exchange and continue?
1153
+ * In the later case we need a way to preserve/indicate the problem
1154
+ * because any simple ParseException in a C record will be masked by
1155
+ * a resulting ChecksumException in the E record.
1156
+ * - TODO: We should read non-ASCII chars in A/C records. Some programs
1157
+ * write 8-bit chars into the fields.
1158
+ */
1159
+ if (strlen($input) % 128) {
1160
+ throw new Payment_DTA_FatalParseException("invalid length");
1161
+ }
1162
+
1163
+ $checks = array(
1164
+ 'account' => 0,
1165
+ 'blz' => 0,
1166
+ 'amount' => 0);
1167
+ $offset = 0;
1168
+
1169
+ /* A record */
1170
+ try {
1171
+ $this->_parseArecord($input, $offset);
1172
+ } catch (Payment_DTA_Exception $e) {
1173
+ throw new Payment_DTA_FatalParseException("Exception in A record", $e);
1174
+ }
1175
+
1176
+ //do not consume input by using getStr()/getNum() here
1177
+ while ($input[$offset + 4] == 'C') {
1178
+ /* C record */
1179
+ $c_start = $offset;
1180
+ $c_length = intval(substr($input, $offset, 4));
1181
+ try {
1182
+ $this->_parseCrecord($input, $offset, $checks);
1183
+ } catch (Payment_DTA_Exception $e) {
1184
+ // preserve error
1185
+ $this->allerrors[] = new Payment_DTA_ParseException(
1186
+ "Error in C record, in transaction number ".
1187
+ strval($this->count()+1) ." @ offset ". strval($c_start), $e);
1188
+ // skip to next 128-byte aligned record
1189
+ $offset = $c_start + 128 * (1 + intval($c_length/128));
1190
+ }
1191
+ } // while
1192
+
1193
+ /* E record */
1194
+ try {
1195
+ $this->_parseErecord($input, $offset, $checks);
1196
+ } catch (Payment_DTA_ChecksumException $e) {
1197
+ throw $e;
1198
+ } catch (Payment_DTA_Exception $e) {
1199
+ throw new Payment_DTA_ParseException("Error in E record", $e);
1200
+ }
1201
+ }
1202
+ }
lib/DTA/DTABase.php ADDED
@@ -0,0 +1,699 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * DTABase, base class for DTA and DTAZV
4
+ *
5
+ * DTA and DTAVZ provide functions to create DTA/DTAZV files used in
6
+ * Germany to exchange informations about money transactions with banks
7
+ * or online banking programs.
8
+ *
9
+ * PHP version 5
10
+ *
11
+ * This LICENSE is in the BSD license style.
12
+ *
13
+ * Copyright (c) 2003-2005 Hermann Stainer, Web-Gear
14
+ * http://www.web-gear.com/
15
+ * Copyright (c) 2008-2010 Martin Schütte
16
+ * All rights reserved.
17
+ *
18
+ * Redistribution and use in source and binary forms, with or without
19
+ * modification, are permitted provided that the following conditions
20
+ * are met:
21
+ *
22
+ * Redistributions of source code must retain the above copyright
23
+ * notice, this list of conditions and the following disclaimer.
24
+ *
25
+ * Redistributions in binary form must reproduce the above copyright
26
+ * notice, this list of conditions and the following disclaimer in the
27
+ * documentation and/or other materials provided with the distribution.
28
+ *
29
+ * Neither the name of Hermann Stainer, Web-Gear nor the names of his
30
+ * contributors may be used to endorse or promote products derived from
31
+ * this software without specific prior written permission.
32
+ *
33
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
34
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
36
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37
+ * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
38
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
39
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
40
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
41
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
42
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
43
+ * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
44
+ * POSSIBILITY OF SUCH DAMAGE.
45
+ *
46
+ * @category Payment
47
+ * @package Payment_DTA
48
+ * @author Hermann Stainer <hs@web-gear.com>
49
+ * @author Martin Schütte <info@mschuette.name>
50
+ * @copyright 2003-2005 Hermann Stainer, Web-Gear
51
+ * @copyright 2008-2010 Martin Schütte
52
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
53
+ * @version SVN: $Id: DTABase.php 304207 2010-10-08 15:52:18Z mschuett $
54
+ * @link http://pear.php.net/package/Payment_DTA
55
+ */
56
+
57
+ /**
58
+ * include PEAR_Exception class
59
+ */
60
+ require_once 'PEAR/Exception.php';
61
+
62
+ /**
63
+ * Payment_DTA_Exception is this packages' basic exception class.
64
+ *
65
+ * @category Payment
66
+ * @package Payment_DTA
67
+ * @author Martin Schütte <info@mschuette.name>
68
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
69
+ * @version Release: 1.4.2
70
+ * @link http://pear.php.net/package/Payment_DTA
71
+ */
72
+ class Payment_DTA_Exception extends PEAR_Exception
73
+ {
74
+ }
75
+
76
+ /**
77
+ * Payment_DTA_ParseException indicates parsing problems.
78
+ *
79
+ * @category Payment
80
+ * @package Payment_DTA
81
+ * @author Martin Schütte <info@mschuette.name>
82
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
83
+ * @version Release: 1.4.2
84
+ * @link http://pear.php.net/package/Payment_DTA
85
+ */
86
+ class Payment_DTA_ParseException extends Payment_DTA_Exception
87
+ {
88
+ }
89
+
90
+ /**
91
+ * Payment_DTA_FatalParseException indicates a non-recoverable parsing problem,
92
+ * that makes it impossible to build a usable object.
93
+ *
94
+ * @category Payment
95
+ * @package Payment_DTA
96
+ * @author Martin Schütte <info@mschuette.name>
97
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
98
+ * @version Release: 1.4.2
99
+ * @link http://pear.php.net/package/Payment_DTA
100
+ */
101
+ class Payment_DTA_FatalParseException extends Payment_DTA_ParseException
102
+ {
103
+ }
104
+
105
+ /**
106
+ * Payment_DTA_ChecksumException indicates a wrong checksum in a DTA file.
107
+ *
108
+ * @category Payment
109
+ * @package Payment_DTA
110
+ * @author Martin Schütte <info@mschuette.name>
111
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
112
+ * @version Release: 1.4.2
113
+ * @link http://pear.php.net/package/Payment_DTA
114
+ */
115
+ class Payment_DTA_ChecksumException extends Payment_DTA_Exception
116
+ {
117
+ }
118
+
119
+ /**
120
+ * DTABase class provides common functions to classes DTA and DTAZV.
121
+ *
122
+ * @category Payment
123
+ * @package Payment_DTA
124
+ * @author Hermann Stainer <hs@web-gear.com>
125
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
126
+ * @version Release: 1.4.2
127
+ * @link http://pear.php.net/package/Payment_DTA
128
+ */
129
+ abstract class DTABase implements Countable, Iterator
130
+ {
131
+ /**
132
+ * Account data for the file sender.
133
+ *
134
+ * @var array $account_file_sender
135
+ * @access protected
136
+ */
137
+ protected $account_file_sender;
138
+
139
+ /**
140
+ * Current timestamp.
141
+ *
142
+ * @var integer $timestamp
143
+ * @access protected
144
+ */
145
+ protected $timestamp;
146
+
147
+ /**
148
+ * Array of exchanges that the DTA file should contain.
149
+ *
150
+ * @var array $exchanges
151
+ * @access protected
152
+ */
153
+ protected $exchanges;
154
+
155
+ /**
156
+ * Sum of amounts in exchanges (in Cents); for control total fields.
157
+ *
158
+ * @var integer $sum_amounts
159
+ * @access protected
160
+ */
161
+ protected $sum_amounts;
162
+
163
+ /**
164
+ * Array of all parsing problems.
165
+ *
166
+ * @var array $allerrors
167
+ */
168
+ protected $allerrors;
169
+
170
+ /**
171
+ * Return number of exchanges
172
+ *
173
+ * @access public
174
+ * @return integer
175
+ */
176
+ function count()
177
+ {
178
+ return count($this->exchanges);
179
+ }
180
+
181
+ /**
182
+ * Constructor.
183
+ */
184
+ function __construct()
185
+ {
186
+ $this->invalidString_regexp = '/[^A-Z0-9 \.,&\-\/\+\*\$%]/';
187
+ $this->account_file_sender = array();
188
+ $this->exchanges = array();
189
+ $this->timestamp = time();
190
+ $this->sum_amounts = 0;
191
+ $this->allerrors = array();
192
+ }
193
+
194
+ /**
195
+ * Get parsing errors.
196
+ *
197
+ * Returns an array with all exceptions thrown when parsing DTA data;
198
+ * possible elements are:
199
+ * - None: if no errors occured this array is empty,
200
+ * - Payment_DTA_ChecksumException indicates that the complete DTA file
201
+ * was read into the object but the file's internal checksums were incorrect,
202
+ * - Payment_DTA_ParseException indicates an error in the input, but all
203
+ * transactions up to the unexpected field were read into the new object,
204
+ * - Payment_DTA_FatalParseException indicates a fatal error, thus the
205
+ * constructed object is empty.
206
+ *
207
+ * @access public
208
+ * @return array
209
+ */
210
+ function getParsingErrors()
211
+ {
212
+ return $this->allerrors;
213
+ }
214
+
215
+ /**
216
+ * Checks if string $input contains the expected value at an offset.
217
+ * After the check the offset is increased.
218
+ *
219
+ * @param string $input string to check
220
+ * @param integer &$offset current offset into input
221
+ * @param string $expected expected string at the offset
222
+ *
223
+ * @return boolean true if input is as expected, otherwise an exception is thrown
224
+ * @throws Payment_DTA_Exception if input differs from expected string
225
+ * @access protected
226
+ */
227
+ protected function checkStr($input, &$offset, $expected)
228
+ {
229
+ $len = strlen($expected);
230
+ $found = substr($input, $offset, $len);
231
+
232
+ if ($found !== $expected) {
233
+ throw new Payment_DTA_Exception("input string at position $offset ".
234
+ "('$found') does not match expected value '$expected'");
235
+ } else {
236
+ $offset += $len;
237
+ return true;
238
+ }
239
+ }
240
+
241
+ /**
242
+ * Read string of given length from input at offset.
243
+ * Afterwards the offset is increased.
244
+ * By default only a subset of ASCII is allowed (as specified by DTA),
245
+ * with $liberal = true apply makeValidString() first in order to accept
246
+ * lower case and some 8-bit chars.
247
+ * (NB: in this case the returned string may be up to twice as long.)
248
+ *
249
+ * @param string $input string to check
250
+ * @param integer &$offset current offset into input
251
+ * @param integer $length chars to read
252
+ * @param bool $liberal allow 8-bit chars
253
+ *
254
+ * @return string the read string
255
+ * @throws Payment_DTA_Exception if input is too short or contains invalid chars
256
+ * @access protected
257
+ */
258
+ protected function getStr($input, &$offset, $length, $liberal = false)
259
+ {
260
+ $rc = substr($input, $offset, $length);
261
+ if (!$rc) {
262
+ throw new Payment_DTA_Exception("input string not long enough to ".
263
+ "read $length bytes at position $offset");
264
+ }
265
+ if ($liberal) {
266
+ $rc = $this->makeValidString($rc);
267
+ }
268
+ if (!$this->validString($rc)) {
269
+ throw new Payment_DTA_Exception("invalid String '$rc' ".
270
+ "at position $offset");
271
+ } else {
272
+ $offset += $length;
273
+ return $rc;
274
+ }
275
+ }
276
+
277
+ /**
278
+ * Read integer number of given length from input at offset.
279
+ * Afterwards the offset is increased.
280
+ *
281
+ * @param string $input string to check
282
+ * @param integer &$offset current offset into input
283
+ * @param integer $length chars to read
284
+ *
285
+ * @return int the read number
286
+ * @throws Payment_DTA_Exception if input is too short or contains invalid chars
287
+ * @access protected
288
+ */
289
+ protected function getNum($input, &$offset, $length)
290
+ {
291
+ $rc = substr($input, $offset, $length);
292
+ if (!$rc) {
293
+ throw new Payment_DTA_Exception("input string not long enough to ".
294
+ "read $length bytes at position $offset");
295
+ } elseif (!ctype_digit($rc)) {
296
+ throw new Payment_DTA_Exception("invalid Number '$rc' ".
297
+ "at position $offset");
298
+ } else {
299
+ $offset += $length;
300
+ return $rc;
301
+ }
302
+ }
303
+
304
+ /**
305
+ * Checks if the given string contains only chars valid for fields
306
+ * in DTA files.
307
+ *
308
+ * @param string $string String that is checked.
309
+ *
310
+ * @access public
311
+ * @return boolean
312
+ */
313
+ function validString($string)
314
+ {
315
+ return !preg_match($this->invalidString_regexp, $string);
316
+ }
317
+
318
+ /**
319
+ * Makes the given string valid for DTA files.
320
+ * Some diacritics, especially German umlauts become uppercase,
321
+ * all other chars not allowed are replaced with space.
322
+ *
323
+ * @param string $string String that should made valid.
324
+ *
325
+ * @access public
326
+ * @return string
327
+ */
328
+ function makeValidString($string)
329
+ {
330
+ $special_chars = array(
331
+ 'á' => 'a',
332
+ 'à' => 'a',
333
+ 'ä' => 'ae',
334
+ 'â' => 'a',
335
+ 'ã' => 'a',
336
+ 'å' => 'a',
337
+ 'æ' => 'ae',
338
+ 'ā' => 'a',
339
+ 'ă' => 'a',
340
+ 'ą' => 'a',
341
+ 'ȁ' => 'a',
342
+ 'ȃ' => 'a',
343
+ 'Á' => 'A',
344
+ 'À' => 'A',
345
+ 'Ä' => 'Ae',
346
+ 'Â' => 'A',
347
+ 'Ã' => 'A',
348
+ 'Å' => 'A',
349
+ 'Æ' => 'AE',
350
+ 'Ā' => 'A',
351
+ 'Ă' => 'A',
352
+ 'Ą' => 'A',
353
+ 'Ȁ' => 'A',
354
+ 'Ȃ' => 'A',
355
+ 'ç' => 'c',
356
+ 'ć' => 'c',
357
+ 'ĉ' => 'c',
358
+ 'ċ' => 'c',
359
+ 'č' => 'c',
360
+ 'Ç' => 'C',
361
+ 'Ć' => 'C',
362
+ 'Ĉ' => 'C',
363
+ 'Ċ' => 'C',
364
+ 'Č' => 'C',
365
+ 'ď' => 'd',
366
+ 'đ' => 'd',
367
+ 'Ď' => 'D',
368
+ 'Đ' => 'D',
369
+ 'é' => 'e',
370
+ 'è' => 'e',
371
+ 'ê' => 'e',
372
+ 'ë' => 'e',
373
+ 'ē' => 'e',
374
+ 'ĕ' => 'e',
375
+ 'ė' => 'e',
376
+ 'ę' => 'e',
377
+ 'ě' => 'e',
378
+ 'ȅ' => 'e',
379
+ 'ȇ' => 'e',
380
+ 'É' => 'E',
381
+ 'È' => 'E',
382
+ 'Ê' => 'E',
383
+ 'Ë' => 'E',
384
+ 'Ē' => 'E',
385
+ 'Ĕ' => 'E',
386
+ 'Ė' => 'E',
387
+ 'Ę' => 'E',
388
+ 'Ě' => 'E',
389
+ 'Ȅ' => 'E',
390
+ 'Ȇ' => 'E',
391
+ 'ĝ' => 'g',
392
+ 'ğ' => 'g',
393
+ 'ġ' => 'g',
394
+ 'ģ' => 'g',
395
+ 'Ĝ' => 'G',
396
+ 'Ğ' => 'G',
397
+ 'Ġ' => 'G',
398
+ 'Ģ' => 'G',
399
+ 'ĥ' => 'h',
400
+ 'ħ' => 'h',
401
+ 'Ĥ' => 'H',
402
+ 'Ħ' => 'H',
403
+ 'ì' => 'i',
404
+ 'ì' => 'i',
405
+ 'î' => 'i',
406
+ 'ï' => 'i',
407
+ 'ĩ' => 'i',
408
+ 'ī' => 'i',
409
+ 'ĭ' => 'i',
410
+ 'į' => 'i',
411
+ 'ı' => 'i',
412
+ 'ij' => 'ij',
413
+ 'ȉ' => 'i',
414
+ 'ȋ' => 'i',
415
+ 'Í' => 'I',
416
+ 'Ì' => 'I',
417
+ 'Î' => 'I',
418
+ 'Ï' => 'I',
419
+ 'Ĩ' => 'I',
420
+ 'Ī' => 'I',
421
+ 'Ĭ' => 'I',
422
+ 'Į' => 'I',
423
+ 'İ' => 'I',
424
+ 'IJ' => 'IJ',
425
+ 'Ȉ' => 'I',
426
+ 'Ȋ' => 'I',
427
+ 'ĵ' => 'j',
428
+ 'Ĵ' => 'J',
429
+ 'ķ' => 'k',
430
+ 'Ķ' => 'K',
431
+ 'ĺ' => 'l',
432
+ 'ļ' => 'l',
433
+ 'ľ' => 'l',
434
+ 'ŀ' => 'l',
435
+ 'ł' => 'l',
436
+ 'Ĺ' => 'L',
437
+ 'Ļ' => 'L',
438
+ 'Ľ' => 'L',
439
+ 'Ŀ' => 'L',
440
+ 'Ł' => 'L',
441
+ 'ñ' => 'n',
442
+ 'ń' => 'n',
443
+ 'ņ' => 'n',
444
+ 'ň' => 'n',
445
+ 'ʼn' => 'n',
446
+ 'Ñ' => 'N',
447
+ 'Ń' => 'N',
448
+ 'Ņ' => 'N',
449
+ 'Ň' => 'N',
450
+ 'ó' => 'o',
451
+ 'ò' => 'o',
452
+ 'ö' => 'oe',
453
+ 'ô' => 'o',
454
+ 'õ' => 'o',
455
+ 'ø' => 'o',
456
+ 'ō' => 'o',
457
+ 'ŏ' => 'o',
458
+ 'ő' => 'o',
459
+ 'œ' => 'oe',
460
+ 'ȍ' => 'o',
461
+ 'ȏ' => 'o',
462
+ 'Ó' => 'O',
463
+ 'Ò' => 'O',
464
+ 'Ö' => 'Oe',
465
+ 'Ô' => 'O',
466
+ 'Õ' => 'O',
467
+ 'Ø' => 'O',
468
+ 'Ō' => 'O',
469
+ 'Ŏ' => 'O',
470
+ 'Ő' => 'O',
471
+ 'Œ' => 'OE',
472
+ 'Ȍ' => 'O',
473
+ 'Ȏ' => 'O',
474
+ 'ŕ' => 'r',
475
+ 'ř' => 'r',
476
+ 'ȑ' => 'r',
477
+ 'ȓ' => 'r',
478
+ 'Ŕ' => 'R',
479
+ 'Ř' => 'R',
480
+ 'Ȑ' => 'R',
481
+ 'Ȓ' => 'R',
482
+ 'ß' => 'ss',
483
+ 'ś' => 's',
484
+ 'ŝ' => 's',
485
+ 'ş' => 's',
486
+ 'š' => 's',
487
+ 'ș' => 's',
488
+ 'Ś' => 'S',
489
+ 'Ŝ' => 'S',
490
+ 'Ş' => 'S',
491
+ 'Š' => 'S',
492
+ 'Ș' => 'S',
493
+ 'ţ' => 't',
494
+ 'ť' => 't',
495
+ 'ŧ' => 't',
496
+ 'ț' => 't',
497
+ 'Ţ' => 'T',
498
+ 'Ť' => 'T',
499
+ 'Ŧ' => 'T',
500
+ 'Ț' => 'T',
501
+ 'ú' => 'u',
502
+ 'ù' => 'u',
503
+ 'ü' => 'ue',
504
+ 'û' => 'u',
505
+ 'ũ' => 'u',
506
+ 'ū' => 'u',
507
+ 'ŭ' => 'u',
508
+ 'ů' => 'u',
509
+ 'ű' => 'u',
510
+ 'ų' => 'u',
511
+ 'ȕ' => 'u',
512
+ 'ȗ' => 'u',
513
+ 'Ú' => 'U',
514
+ 'Ù' => 'U',
515
+ 'Ü' => 'Ue',
516
+ 'Û' => 'U',
517
+ 'Ũ' => 'U',
518
+ 'Ū' => 'U',
519
+ 'Ŭ' => 'U',
520
+ 'Ů' => 'U',
521
+ 'Ű' => 'U',
522
+ 'Ų' => 'U',
523
+ 'Ȕ' => 'U',
524
+ 'Ȗ' => 'U',
525
+ 'ŵ' => 'w',
526
+ 'Ŵ' => 'W',
527
+ 'ý' => 'y',
528
+ 'ÿ' => 'y',
529
+ 'ŷ' => 'y',
530
+ 'Ý' => 'Y',
531
+ 'Ÿ' => 'Y',
532
+ 'Ŷ' => 'Y',
533
+ 'ź' => 'z',
534
+ 'ż' => 'z',
535
+ 'ž' => 'z',
536
+ 'Ź' => 'Z',
537
+ 'Ż' => 'Z',
538
+ 'Ž' => 'Z',
539
+ );
540
+
541
+ if (strlen($string) == 0) {
542
+ return "";
543
+ }
544
+
545
+ // ensure UTF-8, for single-byte-encodings use either
546
+ // the internal encoding or assume ISO-8859-1
547
+ $utf8string = mb_convert_encoding(
548
+ $string,
549
+ "UTF-8",
550
+ array("UTF-8", mb_internal_encoding(), "ISO-8859-1")
551
+ );
552
+
553
+ // replace known special chars
554
+ $result = strtr($utf8string, $special_chars);
555
+ // upper case
556
+ $result = strtoupper($result);
557
+ // make sure every special char is replaced by one space, not two or three
558
+ $result = mb_convert_encoding($result, "ASCII", "UTF-8");
559
+ $result = preg_replace($this->invalidString_regexp, ' ', $result);
560
+
561
+ return $result;
562
+ }
563
+
564
+ /**
565
+ * Auxillary method to filter output strings.
566
+ *
567
+ * @param string $str Text to filter
568
+ * @param int $len Length of text field
569
+ *
570
+ * @access private
571
+ * @return string
572
+ */
573
+ protected function filter($str, $len)
574
+ {
575
+ return substr($this->makeValidString($str), 0, $len);
576
+ }
577
+
578
+ /**
579
+ * Writes the DTA file.
580
+ *
581
+ * @param string $filename Filename.
582
+ *
583
+ * @access public
584
+ * @return boolean
585
+ */
586
+ function saveFile($filename)
587
+ {
588
+ $content = $this->getFileContent();
589
+
590
+ $Dta_fp = @fopen($filename, "w");
591
+ if (!$Dta_fp) {
592
+ $result = false;
593
+ } else {
594
+ $result = @fwrite($Dta_fp, $content);
595
+ @fclose($Dta_fp);
596
+ }
597
+
598
+ return $result;
599
+ }
600
+
601
+ /**
602
+ * Returns an array with information about the transactions.
603
+ * Can be used to print an accompanying document (Begleitzettel) for disks.
604
+ *
605
+ * @access public
606
+ * @return array Returns an array with keys: "sender_name",
607
+ * "sender_bank_code", "sender_account", "sum_amounts",
608
+ * "count", "date"
609
+ */
610
+ function getMetaData()
611
+ {
612
+ return array(
613
+ "sender_name" => strval($this->account_file_sender['name']),
614
+ "sender_bank_code" => intval($this->account_file_sender['bank_code']),
615
+ "sender_account" => floatval($this->account_file_sender['account_number']),
616
+ "sum_amounts" => floatval($this->sum_amounts / 100.0),
617
+ "count" => intval($this->count()),
618
+ "date" => $this->timestamp,
619
+ );
620
+ }
621
+
622
+ /**
623
+ * Set the sender of the file.
624
+ * The given account data is also used as default sender's account.
625
+ *
626
+ * Account data contains
627
+ * name Sender's name.
628
+ * additional_name Sender's additional name.
629
+ * bank_code Sender's bank code.
630
+ * account_number Sender's account number.
631
+ *
632
+ * @param array $account Account data for file sender.
633
+ *
634
+ * @access public
635
+ * @return boolean
636
+ */
637
+ abstract function setAccountFileSender($account);
638
+
639
+ /**
640
+ * Adds an exchange. First the account data for the receiver of the exchange is
641
+ * set. In the case the DTA file contains credits, this is the payment receiver.
642
+ * If the sender is not specified, values of the file sender are used by default.
643
+ *
644
+ * Account data for receiver and sender contain the following fields:
645
+ * name Name.
646
+ * bank_code Bank code.
647
+ * account_number Account number.
648
+ * additional_name If necessary, additional line for name.
649
+ *
650
+ * @param array $account_receiver Receiver's account data.
651
+ * @param double $amount Amount of money in this exchange.
652
+ * Currency: EURO
653
+ * @param array $purposes An Array of lines or a string for
654
+ * description of the exchange.
655
+ * @param array $account_sender Sender's account data.
656
+ *
657
+ * @access public
658
+ * @return boolean
659
+ */
660
+ abstract function addExchange(
661
+ $account_receiver,
662
+ $amount,
663
+ $purposes,
664
+ $account_sender = array()
665
+ );
666
+
667
+ /**
668
+ * Returns the full content of the generated file.
669
+ * All added exchanges are processed.
670
+ *
671
+ * @access public
672
+ * @return string
673
+ */
674
+ abstract function getFileContent();
675
+
676
+ /* variable and methods to implement Iterator interface */
677
+ protected $iterator_position = 0;
678
+ function current()
679
+ {
680
+ return $this->exchanges[$this->iterator_position];
681
+ }
682
+ function key()
683
+ {
684
+ return $this->iterator_position;
685
+ }
686
+ function next()
687
+ {
688
+ ++$this->iterator_position;
689
+ }
690
+ function rewind()
691
+ {
692
+ $this->iterator_position = 0;
693
+ }
694
+ function valid()
695
+ {
696
+ return isset($this->exchanges[$this->iterator_position]);
697
+ }
698
+
699
+ }
lib/DTA/DTAZV.php ADDED
@@ -0,0 +1,843 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * DTAZV
4
+ *
5
+ * DTAZV is a class that provides functions to create DTAZV files used
6
+ * in Germany to exchange informations about european money transactions
7
+ * with banks or online banking programs.
8
+ *
9
+ * Disclaimer: this only implements a subset of DTAZV as used for a
10
+ * "EU-Standardüberweisung" and is only tested against locally used
11
+ * accounting software.
12
+ * If you use this class commercially and/or for large transfer amounts
13
+ * then you might have to implement additional record types (V or W)
14
+ * and fill additional data fields for notification requirements.
15
+ *
16
+ * Implemented using the specification from 2007.
17
+ * Current specification from 2009 (german/english):
18
+ * http://www.bundesbank.de/download/meldewesen/aussenwirtschaft/vordrucke/pdf/dtazv_kunde_bank_neu.pdf
19
+ * http://www.bundesbank.de/download/meldewesen/aussenwirtschaft/vordrucke/pdf/dtazv_financial_inst_bbk.pdf
20
+ *
21
+ * PHP version 5
22
+ *
23
+ * This LICENSE is in the BSD license style.
24
+ *
25
+ * Copyright (c) 2008-2010 Martin Schütte
26
+ * derived from class DTA
27
+ * Copyright (c) 2003-2005 Hermann Stainer, Web-Gear
28
+ * http://www.web-gear.com/
29
+ * All rights reserved.
30
+ *
31
+ * Redistribution and use in source and binary forms, with or without
32
+ * modification, are permitted provided that the following conditions
33
+ * are met:
34
+ *
35
+ * Redistributions of source code must retain the above copyright
36
+ * notice, this list of conditions and the following disclaimer.
37
+ *
38
+ * Redistributions in binary form must reproduce the above copyright
39
+ * notice, this list of conditions and the following disclaimer in the
40
+ * documentation and/or other materials provided with the distribution.
41
+ *
42
+ * Neither the name of Hermann Stainer, Web-Gear nor the names of his
43
+ * contributors may be used to endorse or promote products derived from
44
+ * this software without specific prior written permission.
45
+ *
46
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
47
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
48
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
49
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
50
+ * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
51
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
52
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
53
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
54
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
55
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
56
+ * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
57
+ * POSSIBILITY OF SUCH DAMAGE.
58
+ *
59
+ * @category Payment
60
+ * @package Payment_DTA
61
+ * @author Martin Schütte <info@mschuette.name>
62
+ * @author Hermann Stainer <hs@web-gear.com>
63
+ * @copyright 2008-2010 Martin Schütte
64
+ * @copyright 2003-2005 Hermann Stainer, Web-Gear
65
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
66
+ * @version SVN: $Id: DTAZV.php 310332 2011-04-18 21:31:18Z mschuett $
67
+ * @link http://pear.php.net/package/Payment_DTA
68
+ */
69
+
70
+ /**
71
+ * needs base class
72
+ */
73
+ require_once 'DTA/DTABase.php';
74
+
75
+ /**
76
+ * DTAZV class provides functions to create and handle with DTAZV
77
+ * files used in Germany to exchange informations about european
78
+ * money transactions with banks or online banking programs.
79
+ *
80
+ * @category Payment
81
+ * @package Payment_DTA
82
+ * @author Martin Schütte <info@mschuette.name>
83
+ * @author Hermann Stainer <hs@web-gear.com>
84
+ * @copyright 2008 Martin Schütte
85
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
86
+ * @version Release: 1.4.2
87
+ * @link http://pear.php.net/package/Payment_DTA
88
+ */
89
+ class DTAZV extends DTABase
90
+ {
91
+ /**
92
+ * The maximum allowed amount per transfer (in cents).
93
+ *
94
+ * By default set to the maximum amount for a "EU-Standardüberweisung"
95
+ * that does not have to be reported.
96
+ *
97
+ * @see setMaxAmount()
98
+ * @var integer $max_amount
99
+ * @access protected
100
+ */
101
+ protected $max_amount;
102
+
103
+ /**
104
+ * Constructor.
105
+ *
106
+ * @param string $input Optional, a string with DTAZV data to import.
107
+ *
108
+ * @access public
109
+ */
110
+ function __construct($input = null)
111
+ {
112
+ parent::__construct();
113
+ $this->max_amount = 12500*100;
114
+
115
+ if (is_string($input)) {
116
+ try {
117
+ $this->parse($input);
118
+ } catch (Payment_DTA_FatalParseException $e) {
119
+ // cannot construct this object, reset everything
120
+ parent::__construct();
121
+ $this->max_amount = 12500*100;
122
+ $this->allerrors[] = $e;
123
+ } catch (Payment_DTA_Exception $e) {
124
+ // object is valid, but save the error
125
+ $this->allerrors[] = $e;
126
+ }
127
+ }
128
+ }
129
+
130
+ /**
131
+ * Set the sender of the DTAZV file. Must be set for valid DTAZV file.
132
+ * The given account data is also used as default sender's account.
133
+ * Account data contains
134
+ * name Sender's name. Maximally 35 chars are allowed.
135
+ * additional_name Sender's additional name (max. 35 chars)
136
+ * street Sender's street/PO Box (max. 35 chars)
137
+ * city Sender's city (max. 35 chars)
138
+ * bank_code Sender's bank code (BLZ, 8-digit)
139
+ * account_number Sender's account number (10-digit)
140
+ *
141
+ * @param array $account Account data fot file sender.
142
+ *
143
+ * @access public
144
+ * @return boolean
145
+ */
146
+ function setAccountFileSender($account)
147
+ {
148
+ $account['account_number']
149
+ = strval($account['account_number']);
150
+ $account['bank_code']
151
+ = strval($account['bank_code']);
152
+
153
+ if (strlen($account['name']) > 0
154
+ && strlen($account['bank_code']) > 0
155
+ && strlen($account['bank_code']) <= 8
156
+ && ctype_digit($account['bank_code'])
157
+ && strlen($account['account_number']) > 0
158
+ && strlen($account['account_number']) <= 10
159
+ && ctype_digit($account['account_number'])
160
+ ) {
161
+ if (empty($account['additional_name'])) {
162
+ $account['additional_name'] = "";
163
+ }
164
+ if (empty($account['street'])) {
165
+ $account['street'] = "";
166
+ }
167
+ if (empty($account['city'])) {
168
+ $account['city'] = "";
169
+ }
170
+
171
+ $this->account_file_sender = array(
172
+ "name" => $this->filter($account['name'], 35),
173
+ "additional_name" => $this->filter($account['additional_name'], 35),
174
+ "street" => $this->filter($account['street'], 35),
175
+ "city" => $this->filter($account['city'], 35),
176
+ "bank_code" => $account['bank_code'],
177
+ "account_number" => $account['account_number']
178
+ );
179
+
180
+ $result = true;
181
+ } else {
182
+ $result = false;
183
+ }
184
+
185
+ return $result;
186
+ }
187
+
188
+ /**
189
+ * Auxillary method to fill and normalize the account sender array.
190
+ *
191
+ * @param array $account_sender Sender's account data.
192
+ *
193
+ * @access private
194
+ * @return array
195
+ */
196
+ private function _exchangeFillSender($account_sender)
197
+ {
198
+ if (empty($account_sender['name'])) {
199
+ $account_sender['name']
200
+ = $this->account_file_sender['name'];
201
+ }
202
+ if (empty($account_sender['additional_name'])) {
203
+ $account_sender['additional_name']
204
+ = $this->account_file_sender['additional_name'];
205
+ }
206
+ if (empty($account_sender['street'])) {
207
+ $account_sender['street']
208
+ = $this->account_file_sender['street'];
209
+ }
210
+ if (empty($account_sender['city'])) {
211
+ $account_sender['city']
212
+ = $this->account_file_sender['city'];
213
+ }
214
+ if (empty($account_sender['bank_code'])) {
215
+ $account_sender['bank_code']
216
+ = $this->account_file_sender['bank_code'];
217
+ }
218
+ if (empty($account_sender['account_number'])) {
219
+ $account_sender['account_number']
220
+ = $this->account_file_sender['account_number'];
221
+ }
222
+ $account_sender['account_number']
223
+ = strval($account_sender['account_number']);
224
+ $account_sender['bank_code']
225
+ = strval($account_sender['bank_code']);
226
+
227
+ return $account_sender;
228
+ }
229
+
230
+ /**
231
+ * Auxillary method to fill and normalize the account receiver array.
232
+ *
233
+ * @param array $account_receiver Receiver's account data.
234
+ *
235
+ * @access private
236
+ * @return array
237
+ */
238
+ private function _exchangeFillReceiver($account_receiver)
239
+ {
240
+ if (empty($account_receiver['additional_name'])) {
241
+ $account_receiver['additional_name'] = "";
242
+ }
243
+ if (empty($account_receiver['street'])) {
244
+ $account_receiver['street'] = "";
245
+ }
246
+ if (empty($account_receiver['city'])) {
247
+ $account_receiver['city'] = "";
248
+ }
249
+
250
+ if (strlen($account_receiver['bank_code']) == 8) {
251
+ if (is_numeric($account_receiver['bank_code'])) {
252
+ // german BLZ -> allowed with special format
253
+ $account_receiver['bank_code']
254
+ = '///' . $account_receiver['bank_code'];
255
+ } else {
256
+ // short BIC -> fill to 11 chars
257
+ $account_receiver['bank_code']
258
+ = $account_receiver['bank_code'] . 'XXX';
259
+ }
260
+ }
261
+
262
+ return $account_receiver;
263
+ }
264
+
265
+ /**
266
+ * Adds an exchange.
267
+ *
268
+ * First the account data for the receiver of the exchange is set.
269
+ * In the case the DTA file contains credits, this is the payment receiver.
270
+ * In the other case (the DTA file contains debits), this is the account,
271
+ * from which money is taken away.
272
+ *
273
+ * If the sender is not specified, values of the file sender are used by default.
274
+ * Account data for sender contain
275
+ * name Sender's name. Maximally 35 chars are allowed.
276
+ * additional_name Sender's additional name (max. 35 chars)
277
+ * street Sender's street/PO Box (max. 35 chars)
278
+ * city Sender's city (max. 35 chars)
279
+ * bank_code Sender's bank code (8-digit BLZ)
280
+ * account_number Sender's account number (10-digit)
281
+ *
282
+ * Account data for receiver contain
283
+ * name Receiver's name. Maximally 35 chars are allowed.
284
+ * additional_name Receiver's additional name (max. 35 chars)
285
+ * street Receiver's street/PO Box (max. 35 chars)
286
+ * city Receiver's city (max. 35 chars)
287
+ * bank_code Receiver's bank code (8 or 11 char BIC)
288
+ * account_number Receiver's account number (up to 34 char IBAN)
289
+ *
290
+ * @param array $account_receiver Receiver's account data.
291
+ * @param double $amount Amount of money (Euro) in this exchange.
292
+ * @param array $purposes Array of up to 4 lines (max. 35 chars each)
293
+ * for description of the exchange.
294
+ * @param array $account_sender Sender's account data.
295
+ *
296
+ * @access public
297
+ * @return boolean
298
+ */
299
+ function addExchange($account_receiver, $amount, $purposes, $account_sender = array())
300
+ {
301
+ $account_receiver = $this->_exchangeFillReceiver($account_receiver);
302
+ $account_sender = $this->_exchangeFillSender($account_sender);
303
+
304
+ /*
305
+ * notes for IBAN: currently only checked for length;
306
+ * we can use PEAR::Validate_Finance_IBAN once it
307
+ * gets a 'beta' or 'stable' status
308
+ * the minimum length of 12 is chosen arbitrarily as
309
+ * an additional plausibility check; currently the
310
+ * shortest real IBANs have 15 chars
311
+ */
312
+ $cents = (int)(round($amount * 100));
313
+ if (strlen($account_receiver['name']) > 0
314
+ && strlen($account_receiver['bank_code']) == 11
315
+ && strlen($account_receiver['account_number']) > 12
316
+ && strlen($account_receiver['account_number']) <= 34
317
+ && strlen($account_sender['name']) > 0
318
+ && strlen($account_sender['bank_code']) > 0
319
+ && strlen($account_sender['bank_code']) <= 8
320
+ && ctype_digit($account_sender['bank_code'])
321
+ && strlen($account_sender['account_number']) > 0
322
+ && strlen($account_sender['account_number']) <= 10
323
+ && ctype_digit($account_sender['account_number'])
324
+ && is_numeric($amount) && $cents > 0
325
+ && $cents <= $this->max_amount
326
+ && $this->sum_amounts <= PHP_INT_MAX - $cents
327
+ && ((is_array($purposes) && count($purposes) >= 1 && count($purposes) <= 4)
328
+ || (is_string($purposes) && strlen($purposes) > 0))
329
+ ) {
330
+
331
+ $this->sum_amounts += $cents;
332
+
333
+ if (is_string($purposes)) {
334
+ $filtered_purposes = str_split(
335
+ $this->makeValidString($purposes), 35
336
+ );
337
+ $filtered_purposes = array_slice($filtered_purposes, 0, 14);
338
+ } else {
339
+ $filtered_purposes = array();
340
+ array_slice($purposes, 0, 4);
341
+ foreach ($purposes as $purposeline) {
342
+ $filtered_purposes[] = $this->filter($purposeline, 35);
343
+ }
344
+ }
345
+ // ensure four lines
346
+ $filtered_purposes = array_slice(
347
+ array_pad($filtered_purposes, 4, ""), 0, 4
348
+ );
349
+
350
+ $this->exchanges[] = array(
351
+ "sender_name" => $this->filter($account_sender['name'], 35),
352
+ "sender_additional_name" => $this->filter($account_sender['additional_name'], 35),
353
+ "sender_street" => $this->filter($account_sender['street'], 35),
354
+ "sender_city" => $this->filter($account_sender['city'], 35),
355
+ "sender_bank_code" => $account_sender['bank_code'],
356
+ "sender_account_number" => $account_sender['account_number'],
357
+ "receiver_name" => $this->filter($account_receiver['name'], 35),
358
+ "receiver_additional_name" => $this->filter($account_receiver['additional_name'], 35),
359
+ "receiver_street" => $this->filter($account_receiver['street'], 35),
360
+ "receiver_city" => $this->filter($account_receiver['city'], 35),
361
+ "receiver_bank_code" => $account_receiver['bank_code'],
362
+ "receiver_account_number" => $account_receiver['account_number'],
363
+ "amount" => $cents,
364
+ "purposes" => $filtered_purposes
365
+ );
366
+
367
+ $result = true;
368
+ } else {
369
+ $result = false;
370
+ }
371
+
372
+ return $result;
373
+ }
374
+
375
+ /**
376
+ * Returns the full content of the generated DTAZV file.
377
+ * All added exchanges are processed.
378
+ *
379
+ * @access public
380
+ * @return string
381
+ */
382
+ function getFileContent()
383
+ {
384
+ $content = "";
385
+
386
+ /* The checksum in DTAZV adds only the integer parts of all
387
+ * transfered amounts and is different from the sum of amounts.
388
+ */
389
+ $checksum_amounts = 0;
390
+ $sum_amounts = 0;
391
+
392
+ /**
393
+ * data record Q
394
+ */
395
+
396
+ // Q01 record length (256 Bytes)
397
+ $content .= "0256";
398
+ // Q02 record type
399
+ $content .= "Q";
400
+ // Q03 BLZ receiving this file (usually the sender's bank)
401
+ $content .= str_pad(
402
+ $this->account_file_sender['bank_code'], 8, "0", STR_PAD_LEFT
403
+ );
404
+ // Q04 customer number (usually the sender's account)
405
+ $content .= str_pad(
406
+ $this->account_file_sender['account_number'], 10, "0", STR_PAD_LEFT
407
+ );
408
+ // Q05 sender's address
409
+ $content .= str_pad(
410
+ $this->account_file_sender['name'], 35, " ", STR_PAD_RIGHT
411
+ );
412
+ $content .= str_pad(
413
+ $this->account_file_sender['additional_name'], 35, " ", STR_PAD_RIGHT
414
+ );
415
+ $content .= str_pad(
416
+ $this->account_file_sender['street'], 35, " ", STR_PAD_RIGHT
417
+ );
418
+ $content .= str_pad(
419
+ $this->account_file_sender['city'], 35, " ", STR_PAD_RIGHT
420
+ );
421
+ // Q06 date of file creation
422
+ $content .= strftime("%y%m%d", $this->timestamp);
423
+ // Q07 daily counter
424
+ // UNSURE if necessary
425
+ $content .= "00";
426
+ // Q08 execution date
427
+ $content .= strftime("%y%m%d", $this->timestamp);
428
+ // Q09 notification to federal bank
429
+ // according to specification (see above)
430
+ // transfers <= 12500 Euro do not have to be reported
431
+ $content .= "N";
432
+ // Q10 notification data
433
+ $content .= "00";
434
+ // Q11 notification BLZ
435
+ $content .= str_repeat("0", 8);
436
+ // Q12 reserve
437
+ $content .= str_repeat(" ", 68);
438
+
439
+ assert(strlen($content) == 256);
440
+
441
+ /**
442
+ * data record(s) T
443
+ */
444
+
445
+ foreach ($this->exchanges as $exchange) {
446
+ $sum_amounts += intval($exchange['amount']);
447
+ $checksum_amounts += intval($exchange['amount']/100);
448
+
449
+ // T01 record length
450
+ $content .= "0768";
451
+ // T02 record type
452
+ $content .= "T";
453
+ // T03 sender's bank
454
+ $content .= str_pad(
455
+ $exchange['sender_bank_code'], 8, "0", STR_PAD_LEFT
456
+ );
457
+ // T04a currency (fixed)
458
+ $content .= "EUR";
459
+ // T04b sender's account
460
+ $content .= str_pad(
461
+ $exchange['sender_account_number'], 10, "0", STR_PAD_LEFT
462
+ );
463
+ // T05 execution date (optional, if != Q6)
464
+ $content .= str_repeat("0", 6);
465
+ // T06 BLZ, empty for Standardüberweisung
466
+ $content .= str_repeat("0", 8);
467
+ // T07a currency, empty for Standardüberweisung
468
+ $content .= str_repeat(" ", 3);
469
+ // T07b account, empty for Standardüberweisung
470
+ $content .= str_repeat("0", 10);
471
+ // T08 receiver's BIC
472
+ $content .= str_pad(
473
+ $exchange['receiver_bank_code'], 11, "X", STR_PAD_RIGHT
474
+ );
475
+ // T09a country code, empty for Standardüberweisung
476
+ $content .= str_repeat(" ", 3);
477
+ // T09b receiver's bank address, empty for Standardüberweisung
478
+ $content .= str_repeat(" ", 4*35);
479
+ // T10a receiver's country code --> use cc from IBAN
480
+ $content .= substr($exchange['receiver_account_number'], 0, 2) . ' ';
481
+ // T10b receiver's address
482
+ $content .= str_pad(
483
+ $exchange['receiver_name'], 35, " ", STR_PAD_RIGHT
484
+ );
485
+ $content .= str_pad(
486
+ $exchange['receiver_additional_name'], 35, " ", STR_PAD_RIGHT
487
+ );
488
+ $content .= str_pad(
489
+ $exchange['receiver_street'], 35, " ", STR_PAD_RIGHT
490
+ );
491
+ $content .= str_pad(
492
+ $exchange['receiver_city'], 35, " ", STR_PAD_RIGHT
493
+ );
494
+ // T11 empty for Standardüberweisung
495
+ $content .= str_repeat(" ", 2*35);
496
+ // T12 receiver's IBAN
497
+ $content .= '/' . str_pad(
498
+ $exchange['receiver_account_number'], 34, " ", STR_PAD_RIGHT
499
+ );
500
+ // T13 currency
501
+ $content .= "EUR";
502
+ // T14a amount (integer)
503
+ $content .= str_pad(
504
+ intval($exchange['amount']/100), 14, "0", STR_PAD_LEFT
505
+ );
506
+ // T14b amount (decimal places)
507
+ $content .= str_pad(($exchange['amount']%100)*10, 3, "0", STR_PAD_LEFT);
508
+ // T15 purpose
509
+ $content .= str_pad($exchange['purposes'][0], 35, " ", STR_PAD_RIGHT);
510
+ $content .= str_pad($exchange['purposes'][1], 35, " ", STR_PAD_RIGHT);
511
+ $content .= str_pad($exchange['purposes'][2], 35, " ", STR_PAD_RIGHT);
512
+ $content .= str_pad($exchange['purposes'][3], 35, " ", STR_PAD_RIGHT);
513
+ // T16--T20 instruction code, empty for Standardüberweisung
514
+ $content .= str_repeat("0", 4*2);
515
+ $content .= str_repeat(" ", 25);
516
+ // T21 fees
517
+ $content .= "00";
518
+ // T22 payment type
519
+ $content .= "13";
520
+ // T23 free text for accounting
521
+ $content .= str_repeat(" ", 27);
522
+ // T24 contact details
523
+ $content .= str_repeat(" ", 35);
524
+ // T25 reporting key
525
+ $content .= "0";
526
+ // T26 reserve
527
+ $content .= str_repeat(" ", 51);
528
+ // T26 following report extension
529
+ $content .= "00";
530
+ }
531
+
532
+ assert((strlen($content) - 256) % 768 == 0);
533
+
534
+ /**
535
+ * data record Z
536
+ */
537
+
538
+ // Z01 record length
539
+ $content .= "0256";
540
+ // Z02 record type
541
+ $content .= "Z";
542
+ // Z03 sum of amounts (integer parts in T14a)
543
+ assert($sum_amounts == $this->sum_amounts);
544
+ $content .= str_pad(intval($checksum_amounts), 15, "0", STR_PAD_LEFT);
545
+ // Z04 number of records type T
546
+ $content .= str_pad(count($this->exchanges), 15, "0", STR_PAD_LEFT);
547
+ // Z05 reserve
548
+ $content .= str_repeat(" ", 221);
549
+
550
+ assert(strlen($content) >= 512);
551
+ assert((strlen($content) - 512) % 768 == 0);
552
+
553
+ return $content;
554
+ }
555
+
556
+ /**
557
+ * Set the maximum allowed amount per transfer.
558
+ * Pass 0 to disable the check (will set to maximum integer value).
559
+ *
560
+ * <b>Warning</b>: Use at your own risk.
561
+ *
562
+ * Amounts > 12500 Euro usually have notification requirements.
563
+ *
564
+ * Amounts > 50000 Euro are not allowed in a "EU-Standardüberweisung",
565
+ * thus yielding a malformed DTAZV.
566
+ *
567
+ * @param integer $newmax New maximum allowed amount in Euro
568
+ * or 0 to disable check.
569
+ *
570
+ * @access public
571
+ * @since 1.3.2
572
+ * @link http://www.bundesbank.de/meldewesen/mw_aussenwirtschaft.en.php
573
+ * info on notification requirements
574
+ * @return void
575
+ */
576
+ function setMaxAmount($newmax)
577
+ {
578
+ if ((int)$newmax == 0 || $newmax > PHP_INT_MAX/100) {
579
+ $this->max_amount = PHP_INT_MAX;
580
+ } else {
581
+ $this->max_amount = (int)(round($newmax * 100));
582
+ }
583
+ }
584
+
585
+ /**
586
+ * Returns an array with information about the transactions.
587
+ *
588
+ * @access public
589
+ * @return array Returns an array with keys: "sender_name",
590
+ * "sender_bank_code", "sender_account", "sum_amounts",
591
+ * "type", "sum_bankcodes", "sum_accounts", "count", "date"
592
+ */
593
+ function getMetaData()
594
+ {
595
+ $meta = parent::getMetaData();
596
+
597
+ $meta["type"] = "CREDIT";
598
+
599
+ return $meta;
600
+ }
601
+
602
+ /**
603
+ * Auxillary parser to consume Q records.
604
+ *
605
+ * @param string $input content of DTAZV file
606
+ * @param integer &$offset read offset into $input
607
+ *
608
+ * @throws Payment_DTA_Exception on unrecognized input
609
+ * @access private
610
+ * @return void
611
+ */
612
+ private function _parseQrecord($input, &$offset)
613
+ {
614
+ $Q = array();
615
+
616
+ /* field Q01+Q02 record length and type */
617
+ $this->checkStr($input, $offset, "0256Q");
618
+ /* field Q03 BLZ receiving this file */
619
+ $Q['bank_code'] = $this->getNum($input, $offset, 8);
620
+ /* field Q04 customer number */
621
+ $Q['account_number'] = $this->getNum($input, $offset, 10);
622
+ /* field Q05 sender's address */
623
+ $Q['name'] = rtrim($this->getStr($input, $offset, 35, true));
624
+ $Q['additional_name'] = rtrim($this->getStr($input, $offset, 35, true));
625
+ $Q['street'] = rtrim($this->getStr($input, $offset, 35, true));
626
+ $Q['city'] = rtrim($this->getStr($input, $offset, 35, true));
627
+ /* field Q06 date of file creation -- use to set timestamp */
628
+ $Qdate_year = $this->getNum($input, $offset, 2);
629
+ $Qdate_month = $this->getNum($input, $offset, 2);
630
+ $Qdate_day = $this->getNum($input, $offset, 2);
631
+ $this->timestamp = mktime(
632
+ 0, 0, 0,
633
+ intval($Qdate_month), intval($Qdate_day), intval($Qdate_year)
634
+ );
635
+ /* field Q07 daily counter -- ignored */
636
+ $this->getNum($input, $offset, 2);
637
+ /* field Q08 execution date -- ignored */
638
+ $this->getNum($input, $offset, 6);
639
+ /* field Q09 notification to federal bank */
640
+ $this->checkStr($input, $offset, "N");
641
+ /* field Q10 notification data */
642
+ $this->checkStr($input, $offset, "00");
643
+ /* field Q11 notification BLZ */
644
+ $this->checkStr($input, $offset, str_repeat("0", 8));
645
+ /* field Q12 reserve */
646
+ $this->checkStr($input, $offset, str_repeat(" ", 68));
647
+
648
+ $rc = $this->setAccountFileSender(
649
+ array(
650
+ "name" => $Q['name'],
651
+ "bank_code" => $Q['bank_code'],
652
+ "account_number" => $Q['account_number'],
653
+ "additional_name" => $Q['additional_name'],
654
+ )
655
+ );
656
+
657
+ $rc = $this->setAccountFileSender($Q);
658
+ if (!$rc) {
659
+ // should never happen
660
+ throw new Payment_DTA_FatalParseException(
661
+ "Cannot setAccountFileSender(), please file a bug report");
662
+ }
663
+ }
664
+
665
+ /**
666
+ * Auxillary parser to consume T records.
667
+ *
668
+ * @param string $input content of DTAZV file
669
+ * @param integer &$offset read offset into $input
670
+ * @param array &$checks holds checksums for validation in Z record
671
+ *
672
+ * @throws Payment_DTA_Exception on unrecognized input
673
+ * @access private
674
+ * @return void
675
+ */
676
+ private function _parseTrecord($input, &$offset, &$checks)
677
+ {
678
+ $Tsend = array();
679
+ $Trecv = array();
680
+
681
+ /* field T01+02 record length and type */
682
+ $this->checkStr($input, $offset, "0768T");
683
+ /* field T03 sender's bank */
684
+ $Tsend['bank_code'] = $this->getNum($input, $offset, 8);
685
+ /* field T04a currency */
686
+ $this->checkStr($input, $offset, "EUR");
687
+ /* field T04b sender's account */
688
+ $Tsend['account_number'] = $this->getNum($input, $offset, 10);
689
+ /* field T05 execution date -- ignored */
690
+ $this->getNum($input, $offset, 6);
691
+ /* field T06+T07a+T07b empty for Standardüberweisung */
692
+ $this->checkStr($input, $offset, str_repeat("0", 8));
693
+ $this->checkStr($input, $offset, str_repeat(" ", 3));
694
+ $this->checkStr($input, $offset, str_repeat("0", 10));
695
+ /* field T08 receiver's BIC */
696
+ $Trecv['bank_code'] = $this->getStr($input, $offset, 11);
697
+ /* field T09a+T09b empty for Standardüberweisung */
698
+ $this->checkStr($input, $offset, str_repeat(" ", 3+4*35));
699
+ /* field T10a receiver's country code -- ignored */
700
+ $this->getStr($input, $offset, 3);
701
+ /* field T10b receiver's address */
702
+ $Trecv['name'] = $this->getStr($input, $offset, 35);
703
+ $Trecv['additional_name'] = $this->getStr($input, $offset, 35);
704
+ $Trecv['street'] = $this->getStr($input, $offset, 35);
705
+ $Trecv['city'] = $this->getStr($input, $offset, 35);
706
+ /* field T11 empty for Standardüberweisung */
707
+ $this->checkStr($input, $offset, str_repeat(" ", 2*35));
708
+ /* field T12 receiver's IBAN */
709
+ $this->checkStr($input, $offset, '/');
710
+ $Trecv['account_number'] = $this->getStr($input, $offset, 34);
711
+ /* field T13 currency */
712
+ $this->checkStr($input, $offset, "EUR");
713
+ /* field T14a amount (integer) */
714
+ $amount_int = $this->getNum($input, $offset, 14);
715
+ /* field T14b amount (decimal places) */
716
+ $amount_dec = $this->getNum($input, $offset, 3);
717
+ $amount = $amount_int + $amount_dec/1000.0;
718
+ /* field T15 purpose */
719
+ $purposes = array();
720
+ $purposes[0] = $this->getStr($input, $offset, 35);
721
+ $purposes[1] = $this->getStr($input, $offset, 35);
722
+ $purposes[2] = $this->getStr($input, $offset, 35);
723
+ $purposes[3] = $this->getStr($input, $offset, 35);
724
+ /* field T16--T20 instruction code, empty for Standardüberweisung */
725
+ $this->checkStr($input, $offset, str_repeat("0", 4*2));
726
+ $this->checkStr($input, $offset, str_repeat(" ", 25));
727
+ /* field T21 fees */
728
+ $this->checkStr($input, $offset, "00");
729
+ /* field T22 payment type */
730
+ $this->checkStr($input, $offset, "13");
731
+ /* field T23 free text for accounting -- ignored */
732
+ $this->getStr($input, $offset, 27);
733
+ /* field T24 contact details -- ignored */
734
+ $this->getStr($input, $offset, 35);
735
+ /* field T25 reporting key */
736
+ $this->checkStr($input, $offset, "0");
737
+ /* field T26 reserve */
738
+ $this->checkStr($input, $offset, str_repeat(" ", 51));
739
+ /* field T26 following report extension */
740
+ $this->checkStr($input, $offset, "00");
741
+
742
+ /* we read the fields, now add an exchange */
743
+ $rc = $this->addExchange(
744
+ $Trecv,
745
+ $amount,
746
+ $purposes,
747
+ $Tsend
748
+ );
749
+ if (!$rc) {
750
+ // should never happen
751
+ throw new Payment_DTA_ParseException("Cannot addExchange() ".
752
+ "for transaction number ".strval($this->count()+1).
753
+ ", please file a bug report");
754
+ }
755
+ $checks['amount'] += $amount_int;
756
+ }
757
+
758
+ /**
759
+ * Auxillary parser to consume Z records.
760
+ *
761
+ * @param string $input content of DTAZV file
762
+ * @param integer &$offset read offset into $input
763
+ * @param array $checks holds checksums for validation
764
+ *
765
+ * @throws Payment_DTA_Exception on unrecognized input
766
+ * @access private
767
+ * @return void
768
+ */
769
+ private function _parseZrecord($input, &$offset, $checks)
770
+ {
771
+ /* field Z01+Z02 record length and type */
772
+ $this->checkStr($input, $offset, "0256Z");
773
+ /* field Z03 sum of amounts (integer parts in T14a) */
774
+ $Z_check_amount = $this->getNum($input, $offset, 15);
775
+ /* field Z04 number of records type T */
776
+ $Z_check_count = $this->getNum($input, $offset, 15);
777
+ /* field Z05 reserve */
778
+ $this->checkStr($input, $offset, str_repeat(" ", 221));
779
+
780
+ if ($Z_check_count != $this->count()) {
781
+ throw new Payment_DTA_ChecksumException(
782
+ "Z record checksum mismatch for transaction count: ".
783
+ "reads $Z_check_count, expected ".$this->count());
784
+ }
785
+ if ($Z_check_amount != $checks['amount']) {
786
+ throw new Payment_DTA_ChecksumException(
787
+ "Z record checksum mismatch for transfer amount: ".
788
+ "reads $Z_check_amount, expected ".$checks['amount']);
789
+ }
790
+ }
791
+
792
+ /**
793
+ * Parser. Read data from an existing DTAZV file content.
794
+ *
795
+ * @param string $input content of DTAZV file
796
+ *
797
+ * @throws Payment_DTA_Exception on unrecognized input
798
+ * @access protected
799
+ * @return void
800
+ */
801
+ protected function parse($input)
802
+ {
803
+ if (strlen($input) % 128) {
804
+ throw new Payment_DTA_FatalParseException("invalid length");
805
+ }
806
+
807
+ $checks = array('amount' => 0);
808
+ $offset = 0;
809
+
810
+ /* Q record */
811
+ try {
812
+ $this->_parseQrecord($input, $offset);
813
+ } catch (Payment_DTA_Exception $e) {
814
+ throw new Payment_DTA_FatalParseException("Exception in Q record", $e);
815
+ }
816
+
817
+ //do not consume input by using getStr()/getNum() here
818
+ while ($input[$offset + 4] == 'T') {
819
+ /* T record */
820
+ $t_start = $offset;
821
+ try {
822
+ $this->_parseTrecord($input, $offset, $checks);
823
+ } catch (Payment_DTA_Exception $e) {
824
+ // preserve error
825
+ $this->allerrors[] = new Payment_DTA_ParseException(
826
+ "Error in T record, in transaction number ".
827
+ strval($this->count()+1), $e);
828
+ // skip to next record
829
+ $offset = $t_start + 768;
830
+ }
831
+ } // while
832
+
833
+ /* Z record */
834
+ try {
835
+ $this->_parseZrecord($input, $offset, $checks);
836
+ } catch (Payment_DTA_ChecksumException $e) {
837
+ throw $e;
838
+ } catch (Payment_DTA_Exception $e) {
839
+ throw new Payment_DTA_ParseException("Error in Z record", $e);
840
+ }
841
+ }
842
+
843
+ }
package.xml CHANGED
@@ -1,62 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>DebitPayment</name>
4
- <version>0.5.1</version>
5
  <stability>stable</stability>
6
- <license>OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Stellt die Zahlungsm&#xF6;glichkeit Lastschrift / Bankeinzug zur Verf&#xFC;gung.</summary>
10
  <description>Gerade in Deutschland und &#xD6;sterreich geh&#xF6;rt die Lastschrift (Bankeinzug) zu den popul&#xE4;rsten Zahlungsm&#xF6;glichkeiten. Mit Hilfe dieser Erweiterung k&#xF6;nnen Sie Ihren Kunden die Zahlungsm&#xF6;glichkeit Lastschrift anbieten.</description>
11
- <notes>Changelog:
12
- 0.4.5
13
- - Bestimmte Zeichen werden rausgefiltert um kryptische Zeichen zu vermeiden.
14
- - Copyright aktualisiert
15
- - Bugfixes
16
-
17
- 0.4.2
18
- - Theme-Support f&#xFC;r Magento 1.4
19
- - Neue Bankleitzahlen-Datei der Bundesbank
20
- - Bugfixes
21
-
22
- 0.4.1
23
- - Fehlende "debit.xml" zum Paket hinzugef&#xFC;gt
24
- - Bestellung auch ohne g&#xFC;ltige BLZ m&#xF6;glich gemacht / Im Benutzerkonto kann man jedoch nur eine g&#xFC;ltige BLZ angeben!
25
- - Neue Bankleitzahlen-Datei
26
- - Bugfixes
27
-
28
- 0.4
29
- - Vollst&#xE4;ndiges Refactoring des Moduls
30
- - AJAX-Abfrage des Kreditinstituts
31
- - Caching der Bankinformationen zur Verbesserung der Performance
32
- - M&#xF6;glichkeit hinzugef&#xFC;gt, Kontodaten zu speichern und im Frontend und Backend zu bearbeiten
33
- - Formularfelder im Checkout vorausgef&#xFC;llt mit gespeicherten Bankdaten
34
- - Encryption Bug behoben
35
- - Erweiterung vollst&#xE4;ndig &#xFC;bersetzbar gemacht
36
- - Erweiterung auch f&#xFC;r StoreView konfigurierbar gemacht
37
-
38
- 0.3
39
- - Anzeige der Bankdaten in der Rechnung
40
- - Anlegen von Bestellungen im Backend nun mit dieser Zahlungsart m&#xF6;glich
41
- - Bearbeiten von Bestellungen mit dieser Zahlungsart m&#xF6;glich
42
- - Bugfixes
43
-
44
- 0.2.5.
45
- - Der Shopbesitzer kann nun einstellen, ob die Bankdaten verschl&#xFC;sselt oder unverschl&#xFC;sselt zum Lastschriftverfahren per E-Mail mitgesendet werden sollen
46
-
47
- 0.2.1.
48
- - Bugfix
49
-
50
- 0.2.0
51
- - Verschl&#xFC;sselung der Eintr&#xE4;ge in der Datenbank
52
- - &#xDC;berpr&#xFC;fung der BLZ im Backend und Anzeige, ob ein Fehler vorliegt oder nicht
53
-
54
- 0.1.0
55
- - erste Ver&#xF6;ffentlichung mit einer Grundfunktionalit&#xE4;t</notes>
56
- <authors><author><name>ITABS GmbH - Rouven Alexander Rieker</name><user>auto-converted</user><email>rouven.rieker@itabs.de</email></author></authors>
57
- <date>2011-09-30</date>
58
- <time>19:09:38</time>
59
- <contents><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="debit"><file name="debit.phtml" hash="668381d2a305c522b46470c6b56ba836"/><file name="form.phtml" hash="c309248ba984f388593fdedf05bb844d"/><file name="info.phtml" hash="df0d0b2353b4b18f6489e6d822acdcb3"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="debit.xml" hash="7073be54bb35f85fe37d6bb3cf0c51c7"/></dir><dir name="template"><dir name="debit"><dir name="account"><file name="data.phtml" hash="39bd5d531b9e20124d1ac4874a9ca8c1"/></dir><file name="form.phtml" hash="b18f8d37dc7f3189f823592e44fe3df5"/><file name="info.phtml" hash="659a419f57de40e9d2cedbd819002813"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="Mage_Debit.csv" hash="953e30bcb8c07623773fb0be42120335"/></dir><dir name="en_US"><file name="Mage_Debit.csv" hash="1e7a6bf76f185a89dca643e63d95dbff"/></dir></target><target name="mage"><dir name="js"><dir name="mage"><dir name="debit"><file name="blzcheck.js" hash="99c6d2638404860043105207f616d7db"/></dir></dir></dir></target><target name="magecommunity"><dir name="Mage"><dir name="Debit"><dir name="Block"><dir name="Account"><file name="Data.php" hash="00caa8c5b2900eaf8601672fc9a989c0"/></dir><file name="Form.php" hash="5c8a3ad068cf18788ec0a70339edbf50"/><file name="Info.php" hash="0bc4694dce19f8f859126e01acc643af"/></dir><dir name="controllers"><file name="AccountController.php" hash="d271e3a8c57c450c6fc14fbe697dc521"/><file name="AjaxController.php" hash="65bfdaf619caa811707140691b110424"/></dir><dir name="etc"><file name="bankleitzahlen.csv" hash="2efa8e81a1a8abe640045982fff78b70"/><file name="config.xml" hash="76b0e5d6580e16514efca71980272133"/><file name="system.xml" hash="4b84c5ddae5b672f229f8ab346095b76"/></dir><dir name="Helper"><file name="Data.php" hash="5339ea3c22eed7385baf7de661647b33"/></dir><dir name="Model"><dir name="Entity"><dir name="Customer"><dir name="Attribute"><dir name="Backend"><file name="Encrypted.php" hash="73407cb3592b42b9813b8b8a85a32b1b"/></dir></dir></dir></dir><dir name="System"><dir name="Config"><dir name="Source"><dir name="Customer"><file name="Group.php" hash="c46060c44860e7021aac664af577a8cf"/></dir></dir></dir></dir><file name="Debit.php" hash="9db05346ed8270d24d5b9001f17caaa9"/><file name="Observer.php" hash="a10e97ef5627331d59922dc22ddc7cce"/></dir><dir name="sql"><dir name="debit_setup"><file name="mysql4-install-0.4.0.php" hash="94d7b8b8e0541d707c2fb365c7f8bce6"/><file name="mysql4-upgrade-0.4.9-0.5.0.php" hash="d99e2c9899c97fd100c5220b30145d9e"/><file name="mysql4-upgrade-0.5.0-0.5.1.php" hash="47dd4cc4b58571f5b2407d75b726105f"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Mage_Debit.xml" hash="3a07e78ad3de76f12d3db7b88cefda1a"/></dir></target></contents>
60
  <compatible/>
61
- <dependencies/>
62
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>DebitPayment</name>
4
+ <version>0.5.3</version>
5
  <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Stellt die Zahlungsm&#xF6;glichkeit Lastschrift / Bankeinzug zur Verf&#xFC;gung.</summary>
10
  <description>Gerade in Deutschland und &#xD6;sterreich geh&#xF6;rt die Lastschrift (Bankeinzug) zu den popul&#xE4;rsten Zahlungsm&#xF6;glichkeiten. Mit Hilfe dieser Erweiterung k&#xF6;nnen Sie Ihren Kunden die Zahlungsm&#xF6;glichkeit Lastschrift anbieten.</description>
11
+ <notes>-</notes>
12
+ <authors><author><name>Rouven Alexander Rieker</name><user>therouv</user><email>rouven.rieker@itabs.de</email></author></authors>
13
+ <date>2012-10-31</date>
14
+ <time>09:36:06</time>
15
+ <contents><target name="magecommunity"><dir><dir name="Mage"><dir name="Debit"><dir name="Block"><dir name="Account"><file name="Data.php" hash="5ec87894004a522fd8d38b961f4822dc"/></dir><dir name="Adminhtml"><dir name="Order"><file name="Grid.php" hash="48f25e84eb680a78676b947f96dd6906"/></dir><file name="Order.php" hash="f01dc6ba410fc9948bab620715ccfd68"/></dir><file name="Form.php" hash="71ec19adbf20f06c8e0ccd3b5b3ecf91"/><file name="Info.php" hash="bfd6c54e68a62287a2136a72b2f1c162"/></dir><dir name="Helper"><file name="Adminhtml.php" hash="8bacc26f386ec126d813f9cea5519085"/><file name="Data.php" hash="25bd936b7fb2ca3a4fe6dc84a49eba34"/></dir><dir name="Model"><file name="Debit.php" hash="2f3636898922bb734a329bf3029e1cda"/><dir name="Entity"><dir name="Customer"><dir name="Attribute"><dir name="Backend"><file name="Encrypted.php" hash="94b4c27e902ba0625ac5a9f87fa96f54"/></dir></dir></dir></dir><dir name="Mysql4"><dir name="Orders"><file name="Collection.php" hash="9168652992a5a5a7363b692d63b2a779"/></dir><file name="Orders.php" hash="cf2ffc55752004a300abef1eff607188"/></dir><file name="Observer.php" hash="5bbd916c7c26299aadbd6a67cfcebffe"/><file name="Orders.php" hash="2e8db83c32da4d448c385dda85fe83be"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Customer"><file name="Group.php" hash="d4532ac24b67ae24f54860c6ccfb702d"/></dir></dir></dir></dir></dir><dir name="controllers"><file name="AccountController.php" hash="6a584c009a8562aac90d31d494e8b347"/><dir name="Adminhtml"><file name="OrderController.php" hash="4464ede36b05b6492cc5b7985bf417ad"/></dir><file name="AjaxController.php" hash="5beb576a11c36694549f3b06bcd216cb"/></dir><dir name="etc"><file name="adminhtml.xml" hash="38dcc403c12a5c8bd568148946804a7c"/><file name="bankleitzahlen.csv" hash="47834eb8f31d37940cac46f288fdb6b5"/><file name="config.xml" hash="98eb0edad20ad29fc472a005355889b7"/><file name="system.xml" hash="e71ad7bfb5beb8cb87ba4d6349ac3ad4"/></dir><dir name="sql"><dir name="debit_setup"><file name="mysql4-install-0.4.0.php" hash="e737bff708ac736d9fa2dc617cbc2bb5"/><file name="mysql4-upgrade-0.3.0-0.4.0.php" hash="e737bff708ac736d9fa2dc617cbc2bb5"/><file name="mysql4-upgrade-0.4.9-0.5.0.php" hash="1312e739a3f3b3ec429599248baa0dbc"/><file name="mysql4-upgrade-0.5.0-0.5.1.php" hash="89c41e07eae8d13b99718ef2dca56241"/><file name="mysql4-upgrade-0.5.1-0.5.2.php" hash="d1db3adfc37489a3c90df875b76e1c6d"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir><dir name="modules"><file name="Mage_Debit.xml" hash="4df52a50ed7f6a00007564224689413f"/></dir></dir></target><target name="magelocale"><dir><dir name="de_DE"><file name="Mage_Debit.csv" hash="d28e0eb0cb5c49439cd0e5170ecf40ab"/></dir><dir name="en_US"><file name="Mage_Debit.csv" hash="2768d31e1b5dd5ba7b4847d40587c33d"/></dir></dir></target><target name="magedesign"><dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="debit.xml" hash="f3ec75909b0a0b9891ac5955c13fcbef"/></dir><dir name="template"><dir name="debit"><file name="debit.phtml" hash="344aff2f527fb3e9f909410635da4a82"/><file name="form.phtml" hash="af659f3607a76ff8a38ca46fe993aa14"/><file name="info.phtml" hash="d26a60e5fe93bb1035fd054d9ee6a886"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="debit.xml" hash="44790c6738874678d83c2c392b630f05"/></dir><dir name="template"><dir name="debit"><dir><dir name="account"><file name="data.phtml" hash="dc04eafc5e2a9e12bf6af0453842e2ee"/></dir></dir><file name="form.phtml" hash="5a9f4e89edeb7f71193eee3115e18940"/><file name="info.phtml" hash="a389aedc4ab07a2d8671a7cd1cbf1ae4"/></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir><dir name="js"><dir name="mage"><dir name="debit"><file name="blzcheck.js" hash="4ab6fd01179d171c97bca611a2425617"/></dir></dir></dir></dir></target><target name="magelib"><dir><dir name="DTA"><file name="DTA.php" hash="e6fc2837be0ec433fa759485de446fe8"/><file name="DTABase.php" hash="824185c1a0d6d53a24787fb48268d694"/><file name="DTAZV.php" hash="851b8a15747129fa21945e2d28d435e2"/></dir></dir></target></contents>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  <compatible/>
17
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>