diff --git a/Block/Info/Basic.php b/Block/Info/Basic.php index 3b717f51..9ec750e7 100644 --- a/Block/Info/Basic.php +++ b/Block/Info/Basic.php @@ -46,15 +46,15 @@ protected function _prepareSpecificInformation($transport = null) if ($sTransId == '') { $data[(string)__('Payment has not been processed yet.')] = ''; } else { - $oStatus = $this->getAppointedStatus(); - if ($oStatus->getClearingBankcode()) { + $oOrder = $this->getInfo()->getOrder(); + if ($oOrder && $oOrder->getPayoneClearingBankcode()) { $data[(string)__('Please transfer the order amount to this bank account:')] = ''; - $data[(string)__('Accountholder:')] = $oStatus->getClearingBankaccountholder(); - $data[(string)__('Accountnumber:')] = $oStatus->getClearingBankaccount(); - $data[(string)__('Bank code:')] = $oStatus->getClearingBankcode(); - $data[(string)__('IBAN:')] = $oStatus->getClearingBankiban(); - $data[(string)__('BIC:')] = $oStatus->getClearingBankbic(); - $data[(string)__('Bank:')] = $oStatus->getClearingBankname(); + $data[(string)__('Accountholder:')] = $oOrder->getPayoneClearingBankaccountholder(); + $data[(string)__('Accountnumber:')] = $oOrder->getPayoneClearingBankaccount(); + $data[(string)__('Bank code:')] = $oOrder->getPayoneClearingBankcode(); + $data[(string)__('IBAN:')] = $oOrder->getPayoneClearingBankiban(); + $data[(string)__('BIC:')] = $oOrder->getPayoneClearingBankbic(); + $data[(string)__('Bank:')] = $oOrder->getPayoneClearingBankname(); } $data[(string)__('Payment reference:')] = $sTransId; } diff --git a/Helper/Api.php b/Helper/Api.php index 50339d11..6144df8c 100644 --- a/Helper/Api.php +++ b/Helper/Api.php @@ -62,6 +62,41 @@ class Api extends Base */ protected $connFsockopen; + /** + * Fields to copy from the request array to the order + * + * @var array + */ + protected $requestToOrder = [ + 'reference' => 'payone_refnr', + 'request' => 'payone_authmode', + 'mode' => 'payone_mode', + 'mandate_identification' => 'payone_mandate_id', + 'workorderid' => 'payone_workorder_id', + 'add_paydata[installment_duration]' => 'payone_installment_duration', + ]; + + /** + * Fields to copy from the response to the order + * + * @var array + */ + protected $responseToOrder = [ + 'txid' => 'payone_txid', + 'mandate_identification' => 'payone_mandate_id', + 'clearing_reference' => 'payone_clearing_reference', + 'add_paydata[clearing_reference]' => 'payone_clearing_reference', + 'add_paydata[workorderid]' => 'payone_workorder_id', + 'clearing_bankaccount' => 'payone_clearing_bankaccount', + 'clearing_bankcode' => 'payone_clearing_bankcode', + 'clearing_bankcountry' => 'payone_clearing_bankcountry', + 'clearing_bankname' => 'payone_clearing_bankname', + 'clearing_bankaccountholder' => 'payone_clearing_bankaccountholder', + 'clearing_bankcity' => 'payone_clearing_bankcity', + 'clearing_bankiban' => 'payone_clearing_bankiban', + 'clearing_bankbic' => 'payone_clearing_bankbic' + ]; + /** * Constructor * @@ -160,6 +195,24 @@ public function getRequestUrl($aParameters, $sApiUrl) return $sRequestUrl; } + /** + * Copy Data to order by given map + * + * @param SalesOrder $oOrder + * @param array $aData + * @param array $aMap + * @return SalesOrder + */ + protected function addDataToOrder(SalesOrder $oOrder, $aData, $aMap) + { + foreach ($aMap as $sFrom => $sTo) { + if (isset($aData[$sFrom])) { + $oOrder->setData($sTo, $aData[$sFrom]); + } + } + return $oOrder; + } + /** * Add PAYONE information to the order object to be saved in the DB * @@ -170,31 +223,8 @@ public function getRequestUrl($aParameters, $sApiUrl) */ public function addPayoneOrderData(SalesOrder $oOrder, $aRequest, $aResponse) { - if (isset($aResponse['txid'])) {// txid existing? - $oOrder->setPayoneTxid($aResponse['txid']); // add txid to order entity - } - $oOrder->setPayoneRefnr($aRequest['reference']); // add refnr to order entity - $oOrder->setPayoneAuthmode($aRequest['request']); // add authmode to order entity - $oOrder->setPayoneMode($aRequest['mode']); // add payone mode to order entity - if (isset($aRequest['mandate_identification'])) {// mandate id existing in request? - $oOrder->setPayoneMandateId($aRequest['mandate_identification']); - } elseif (isset($aResponse['mandate_identification'])) {// mandate id existing in response? - $oOrder->setPayoneMandateId($aResponse['mandate_identification']); - } - if (isset($aResponse['clearing_reference'])) { - $oOrder->setPayoneClearingReference($aResponse['clearing_reference']); - } - if (isset($aResponse['add_paydata[clearing_reference]'])) { - $oOrder->setPayoneClearingReference($aResponse['add_paydata[clearing_reference]']); - } - if (isset($aResponse['add_paydata[workorderid]'])) { - $oOrder->setPayoneWorkorderId($aResponse['add_paydata[workorderid]']); - } elseif (isset($aRequest['workorderid'])) { - $oOrder->setPayoneWorkorderId($aRequest['workorderid']); - } - if (isset($aRequest['add_paydata[installment_duration]'])) { - $oOrder->setPayoneInstallmentDuration($aRequest['add_paydata[installment_duration]']); - } + $this->addDataToOrder($oOrder, $aRequest, $this->requestToOrder); + $this->addDataToOrder($oOrder, $aResponse, $this->responseToOrder); } /** diff --git a/Setup/UpgradeData.php b/Setup/UpgradeData.php index 01f30a85..be6468b4 100644 --- a/Setup/UpgradeData.php +++ b/Setup/UpgradeData.php @@ -87,6 +87,70 @@ public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface ['type' => 'integer', 'length' => null] ); } + if (!$setup->getConnection()->tableColumnExists($setup->getTable('sales_order'), 'payone_clearing_bankaccountholder')) { + $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]); + $salesInstaller->addAttribute( + 'order', + 'payone_clearing_bankaccountholder', + ['type' => 'varchar', 'length' => 64, 'default' => ''] + ); + } + if (!$setup->getConnection()->tableColumnExists($setup->getTable('sales_order'), 'payone_clearing_bankcountry')) { + $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]); + $salesInstaller->addAttribute( + 'order', + 'payone_clearing_bankcountry', + ['type' => 'varchar', 'length' => 2, 'default' => ''] + ); + } + if (!$setup->getConnection()->tableColumnExists($setup->getTable('sales_order'), 'payone_clearing_bankaccount')) { + $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]); + $salesInstaller->addAttribute( + 'order', + 'payone_clearing_bankaccount', + ['type' => 'varchar', 'length' => 32, 'default' => ''] + ); + } + if (!$setup->getConnection()->tableColumnExists($setup->getTable('sales_order'), 'payone_clearing_bankcode')) { + $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]); + $salesInstaller->addAttribute( + 'order', + 'payone_clearing_bankcode', + ['type' => 'varchar', 'length' => 32, 'default' => ''] + ); + } + if (!$setup->getConnection()->tableColumnExists($setup->getTable('sales_order'), 'payone_clearing_bankiban')) { + $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]); + $salesInstaller->addAttribute( + 'order', + 'payone_clearing_bankiban', + ['type' => 'varchar', 'length' => 64, 'default' => ''] + ); + } + if (!$setup->getConnection()->tableColumnExists($setup->getTable('sales_order'), 'payone_clearing_bankbic')) { + $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]); + $salesInstaller->addAttribute( + 'order', + 'payone_clearing_bankbic', + ['type' => 'varchar', 'length' => 32, 'default' => ''] + ); + } + if (!$setup->getConnection()->tableColumnExists($setup->getTable('sales_order'), 'payone_clearing_bankcity')) { + $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]); + $salesInstaller->addAttribute( + 'order', + 'payone_clearing_bankcity', + ['type' => 'varchar', 'length' => 64, 'default' => ''] + ); + } + if (!$setup->getConnection()->tableColumnExists($setup->getTable('sales_order'), 'payone_clearing_bankname')) { + $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]); + $salesInstaller->addAttribute( + 'order', + 'payone_clearing_bankname', + ['type' => 'varchar', 'length' => 64, 'default' => ''] + ); + } $setup->endSetup(); } diff --git a/Test/Unit/Block/Info/BasicTest.php b/Test/Unit/Block/Info/BasicTest.php index e711755f..5815837f 100644 --- a/Test/Unit/Block/Info/BasicTest.php +++ b/Test/Unit/Block/Info/BasicTest.php @@ -54,8 +54,25 @@ protected function setUp() { $this->objectManager = new ObjectManager($this); - $order = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); + $order = $this->getMockBuilder(Order::class) + ->disableOriginalConstructor() + ->setMethods([ + 'getPayoneTxid', + 'getPayoneClearingBankcode', + 'getPayoneClearingBankaccountholder', + 'getPayoneClearingBankaccount', + 'getPayoneClearingBankiban', + 'getPayoneClearingBankbic', + 'getPayoneClearingBankname' + ]) + ->getMock(); $order->method('getPayoneTxid')->willReturn('12345'); + $order->method('getPayoneClearingBankcode')->willReturn('12345'); + $order->method('getPayoneClearingBankaccountholder')->willReturn('12345'); + $order->method('getPayoneClearingBankaccount')->willReturn('12345'); + $order->method('getPayoneClearingBankiban')->willReturn('12345'); + $order->method('getPayoneClearingBankbic')->willReturn('12345'); + $order->method('getPayoneClearingBankname')->willReturn('12345'); $this->info = $this->getMockBuilder(Info::class) ->disableOriginalConstructor() @@ -65,21 +82,9 @@ protected function setUp() $transactionStatus = $this->getMockBuilder(TransactionStatus::class) ->disableOriginalConstructor() - ->setMethods([ - 'getClearingBankcode', - 'getClearingBankaccountholder', - 'getClearingBankaccount', - 'getClearingBankiban', - 'getClearingBankbic', - 'getClearingBankname' - ]) + ->setMethods(['getClearingBankcode']) ->getMock(); $transactionStatus->method('getClearingBankcode')->willReturn('12345'); - $transactionStatus->method('getClearingBankaccountholder')->willReturn('12345'); - $transactionStatus->method('getClearingBankaccount')->willReturn('12345'); - $transactionStatus->method('getClearingBankiban')->willReturn('12345'); - $transactionStatus->method('getClearingBankbic')->willReturn('12345'); - $transactionStatus->method('getClearingBankname')->willReturn('12345'); $transactionStatusRepository = $this->getMockBuilder(TransactionStatusRepository::class)->disableOriginalConstructor()->getMock(); $transactionStatusRepository->method('getAppointedByTxid')->willReturn($transactionStatus); diff --git a/i18n/de_DE.csv b/i18n/de_DE.csv index 82dd5bdf..cd7b2d4a 100644 --- a/i18n/de_DE.csv +++ b/i18n/de_DE.csv @@ -334,18 +334,18 @@ "Payment has not been processed yet.","Die Zahlung wurde noch nicht durchgeführt." "Please transfer the order amount to this bank account:","Bitte überweisen Sie den Gesamtbetrag an diese Bankverbindung:" -"Accountholder: %s","Kontoinhaber: %s" -"Accountnumber: %s","Kontonummer: %s" -"Bank code: %s","Postleitzahl: %s" -"IBAN: %s","IBAN: %s" -"BIC: %s","BIC: %s" -"Bank: %s","Bank: %s" -"Country: %s","Land: %s" -"City: %s","Stadt: %s" -"Legal note: %s","Hinweis zur Forderungsabtretung: %s" -"Instruction note: %s","Hinweis zur Zahlungsabwicklung: %s" -"Due date: %s","Fälligkeits-Datum: %s" -"Payment reference: %s","Zahlungsreferenz: %s" +"Accountholder:","Kontoinhaber:" +"Accountnumber:","Kontonummer:" +"Bank code:","Postleitzahl:" +"IBAN:","IBAN:" +"BIC:","BIC:" +"Bank:","Bank:" +"Country:","Land:" +"City:","Stadt:" +"Legal note:","Hinweis zur Forderungsabtretung:" +"Instruction note:","Hinweis zur Zahlungsabwicklung:" +"Due date:","Fälligkeits-Datum:" +"Payment reference:","Zahlungsreferenz:" "Name on the Card: %s","Kreditkarteninhaber: %s" "Credit Card Type: %s","Kreditkartentyp: %s"