Skip to content

Commit 21a14ab

Browse files
committed
payment status is now displayed on order detail for all external payments
1 parent cb175f8 commit 21a14ab

File tree

6 files changed

+62
-36
lines changed

6 files changed

+62
-36
lines changed

src/Form/Admin/Order/OrderFormType.php

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
use Shopsys\FrameworkBundle\Form\OrderItemsType;
1818
use Shopsys\FrameworkBundle\Form\ValidationGroup;
1919
use Shopsys\FrameworkBundle\Model\Country\CountryFacade;
20-
use Shopsys\FrameworkBundle\Model\GoPay\GoPayOrderStatus;
2120
use Shopsys\FrameworkBundle\Model\Order\Order;
2221
use Shopsys\FrameworkBundle\Model\Order\OrderData;
2322
use Shopsys\FrameworkBundle\Model\Order\Status\OrderStatusFacade;
23+
use Shopsys\FrameworkBundle\Model\Payment\Transaction\ExternalPaymentStatus;
2424
use Shopsys\FrameworkBundle\Twig\DateTimeFormatterExtension;
2525
use Symfony\Component\Form\AbstractType;
2626
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
@@ -200,20 +200,24 @@ private function createBasicInformationGroup(FormBuilderInterface $builder, Orde
200200
'data' => $order->getPayment()->getName(),
201201
]);
202202

203-
if ($order->getPayment()->isGoPay() === true) {
204-
$goPayPaymentTransactions = $order->getGoPayTransactions();
205-
206-
if (count($goPayPaymentTransactions) > 0) {
207-
$translatedGoPayStatus = GoPayOrderStatus::getTranslatedGoPayStatus(end($goPayPaymentTransactions)->getExternalPaymentStatus());
208-
} else {
209-
$translatedGoPayStatus = t('Order has not been sent to GoPay');
203+
if ($order->hasExternalPayment()) {
204+
$paymentTransactions = $order->getTransactionsOfCurrentPayment();
205+
/** @var \Shopsys\FrameworkBundle\Model\Payment\Transaction\PaymentTransaction|bool $paymentTransaction */
206+
$paymentTransaction = end($paymentTransactions);
207+
208+
if ($paymentTransaction !== false) {
209+
if ($paymentTransaction->getExternalPaymentStatus() !== null) {
210+
$translatedPaymentStatus = ExternalPaymentStatus::getTranslatedStatus($paymentTransaction->getExternalPaymentStatus());
211+
} else {
212+
$translatedPaymentStatus = t('Order has not been sent to payment gateway');
213+
}
214+
215+
$builderBasicInformationGroup
216+
->add('paymentStatus', DisplayOnlyType::class, [
217+
'label' => t('Payment status'),
218+
'data' => $translatedPaymentStatus,
219+
]);
210220
}
211-
212-
$builderBasicInformationGroup
213-
->add('gopayStatus', DisplayOnlyType::class, [
214-
'label' => t('GoPay payment status'),
215-
'data' => $translatedGoPayStatus,
216-
]);
217221
}
218222

219223
$builderBasicInformationGroup

src/Model/Order/Order.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Shopsys\FrameworkBundle\Model\Order\Item\OrderItemTypeEnum;
1919
use Shopsys\FrameworkBundle\Model\Order\Mail\OrderMail;
2020
use Shopsys\FrameworkBundle\Model\Order\Status\OrderStatusTypeEnum;
21+
use Shopsys\FrameworkBundle\Model\Payment\PaymentTypeEnum;
2122
use Shopsys\FrameworkBundle\Model\Payment\Transaction\PaymentTransaction;
2223
use Shopsys\FrameworkBundle\Model\Pricing\Price;
2324
use Shopsys\FrameworkBundle\Model\Product\Exception\ProductNotFoundException;
@@ -438,6 +439,30 @@ public function getGoPayTransactions(): array
438439
return $paymentTransactions;
439440
}
440441

442+
/**
443+
* @return \Shopsys\FrameworkBundle\Model\Payment\Transaction\PaymentTransaction[]
444+
*/
445+
public function getTransactionsOfCurrentPayment(): array
446+
{
447+
$paymentTransactions = [];
448+
449+
foreach ($this->getPaymentTransactions() as $paymentTransaction) {
450+
if ($paymentTransaction->getPayment() === $this->payment) {
451+
$paymentTransactions[] = $paymentTransaction;
452+
}
453+
}
454+
455+
return $paymentTransactions;
456+
}
457+
458+
/**
459+
* @return bool
460+
*/
461+
public function hasExternalPayment(): bool
462+
{
463+
return $this->getPayment()->getType() !== PaymentTypeEnum::TYPE_BASIC && count($this->getTransactionsOfCurrentPayment()) > 0;
464+
}
465+
441466
/**
442467
* @return bool
443468
*/

src/Model/GoPay/GoPayOrderStatus.php renamed to src/Model/Payment/Transaction/ExternalPaymentStatus.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,31 @@
22

33
declare(strict_types=1);
44

5-
namespace Shopsys\FrameworkBundle\Model\GoPay;
5+
namespace Shopsys\FrameworkBundle\Model\Payment\Transaction;
66

77
use GoPay\Definition\Response\PaymentStatus;
88

9-
class GoPayOrderStatus
9+
class ExternalPaymentStatus
1010
{
1111
/**
12-
* @param string $goPayStatus
12+
* @param string $externalStatus
1313
* @return string
1414
*/
15-
public static function getTranslatedGoPayStatus(string $goPayStatus): string
15+
public static function getTranslatedStatus(string $externalStatus): string
1616
{
17-
$goPayStatusToTranslate = self::getGoPayStatusesToTranslate();
17+
$statusesToTranslate = self::getStatusesToTranslate();
1818

19-
if (array_key_exists($goPayStatus, $goPayStatusToTranslate)) {
20-
return $goPayStatusToTranslate[$goPayStatus];
19+
if (array_key_exists(mb_strtoupper($externalStatus), $statusesToTranslate)) {
20+
return $statusesToTranslate[$externalStatus];
2121
}
2222

23-
return $goPayStatus;
23+
return $externalStatus;
2424
}
2525

2626
/**
2727
* @return array<string, string>
2828
*/
29-
protected static function getGoPayStatusesToTranslate(): array
29+
protected static function getStatusesToTranslate(): array
3030
{
3131
return [
3232
PaymentStatus::CREATED => t('Payment created'),

src/Model/Payment/Transaction/PaymentTransaction.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,6 @@ public function getPaymentThrowExceptionIfNull(): Payment
137137
* @return string
138138
*/
139139
#[EntityLogIdentify]
140-
/**
141-
* @return string
142-
*/
143140
public function getExternalPaymentIdentifier()
144141
{
145142
return $this->externalPaymentIdentifier;

src/Resources/translations/messages.cs.po

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2047,9 +2047,6 @@ msgstr "GoPay API vrátilo chybu - jděte do administrace GoPay, najděte transa
20472047
msgid "GoPay payment method"
20482048
msgstr "Platební metoda GoPay"
20492049

2050-
msgid "GoPay payment status"
2051-
msgstr "Stav platby GoPay"
2052-
20532050
msgid "Group"
20542051
msgstr "Skupina"
20552052

@@ -2845,8 +2842,8 @@ msgstr "Detail objednávky"
28452842
msgid "Order detail URL address"
28462843
msgstr "URL adresa detailu objednávky"
28472844

2848-
msgid "Order has not been sent to GoPay"
2849-
msgstr "Objednávka nebyla odeslána do GoPay"
2845+
msgid "Order has not been sent to payment gateway"
2846+
msgstr "Objednávka ještě nebyla odeslána do platební brány"
28502847

28512848
msgid "Order in CZK round to whole crowns"
28522849
msgstr "Objednávku v CZK zaokrouhlit na celé koruny"
@@ -3061,6 +3058,9 @@ msgstr "Platba částečně refundována"
30613058
msgid "Payment refunded"
30623059
msgstr "Refundovaná platba"
30633060

3061+
msgid "Payment status"
3062+
msgstr "Stav platby"
3063+
30643064
msgid "Payment successful page content"
30653065
msgstr "Obsah stránky po dokončené platbě"
30663066

@@ -3734,7 +3734,7 @@ msgid "Set prices manually"
37343734
msgstr "Manuálně nastavené ceny"
37353735

37363736
msgid "Setting for domain \"%domainName%\" was saved."
3737-
msgstr ""
3737+
msgstr "Nastavení pro doménu \"%domainName%\" bylo uloženo."
37383738

37393739
msgid "Settings"
37403740
msgstr "Nastavení"

src/Resources/translations/messages.en.po

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2047,9 +2047,6 @@ msgstr ""
20472047
msgid "GoPay payment method"
20482048
msgstr ""
20492049

2050-
msgid "GoPay payment status"
2051-
msgstr ""
2052-
20532050
msgid "Group"
20542051
msgstr ""
20552052

@@ -2845,7 +2842,7 @@ msgstr ""
28452842
msgid "Order detail URL address"
28462843
msgstr ""
28472844

2848-
msgid "Order has not been sent to GoPay"
2845+
msgid "Order has not been sent to payment gateway"
28492846
msgstr ""
28502847

28512848
msgid "Order in CZK round to whole crowns"
@@ -3061,6 +3058,9 @@ msgstr ""
30613058
msgid "Payment refunded"
30623059
msgstr ""
30633060

3061+
msgid "Payment status"
3062+
msgstr ""
3063+
30643064
msgid "Payment successful page content"
30653065
msgstr ""
30663066

0 commit comments

Comments
 (0)