• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stripe / stripe-mirakl-connector / 4405154266

pending completion
4405154266

push

github

GitHub
Merge pull request #116 from tejpal-mirakl/tax-split-changes

91 of 91 new or added lines in 6 files covered. (100.0%)

1740 of 1806 relevant lines covered (96.35%)

7.58 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

71.74
/src/Service/PaymentSplitService.php
1
<?php
2

3
namespace App\Service;
4

5
use App\Factory\StripeTransferFactory;
6
use App\Repository\StripeTransferRepository;
7

8
class PaymentSplitService
9
{
10
    /**
11
     * @var StripeTransferFactory
12
     */
13
    private $stripeTransferFactory;
14

15
    /**
16
     * @var StripeTransferRepository
17
     */
18
    private $stripeTransferRepository;
19

20
    private $enablePaymentTaxSplit;
21
    private $taxOrderPostfix;
22

23
    public function __construct(
24
        StripeTransferFactory $stripeTransferFactory,
25
        StripeTransferRepository $stripeTransferRepository,
26
        bool $enablePaymentTaxSplit,
27
        string $taxOrderPostfix
28
    ) {
29
        $this->stripeTransferFactory = $stripeTransferFactory;
12✔
30
        $this->stripeTransferRepository = $stripeTransferRepository;
12✔
31
        $this->enablePaymentTaxSplit = $enablePaymentTaxSplit;
12✔
32
        $this->taxOrderPostfix = $taxOrderPostfix;
12✔
33
    }
34

35
    /**
36
     * @return array App\Entity\StripeTransfer[]
37
     */
38
    public function getRetriableProductTransfers(): array
39
    {
40
        return $this->stripeTransferRepository->findRetriableProductOrderTransfers();
11✔
41
    }
42

43
    /**
44
     * @return array App\Entity\StripeTransfer[]
45
     */
46
    public function getRetriableServiceTransfers(): array
47
    {
48
        return $this->stripeTransferRepository->findRetriableServiceOrderTransfers();
9✔
49
    }
50

51
    /**
52
     * @param array $orders
53
     * @return array App\Entity\StripeTransfer[]
54
     */
55
    public function getTransfersFromOrders(array $orders, array $pendingDebits): array
56
    {
57
        // Retrieve existing StripeTransfers with provided order IDs
58
        $existingTransfers = $this->stripeTransferRepository
9✔
59
            ->findTransfersByOrderIds(array_keys($orders));
9✔
60

61
        $transfers = [];
9✔
62
        foreach ($orders as $orderId => $order) {
9✔
63
            $pendingDebit = $pendingDebits[$orderId] ?? null;
9✔
64
            if (isset($existingTransfers[$orderId])) {
9✔
65
                $transfer = $existingTransfers[$orderId];
1✔
66
                if (!$transfer->isRetriable()) {
1✔
67
                    continue;
1✔
68
                }
69

70
                // Use existing transfer
71
                $transfer = $this->stripeTransferFactory->updateFromOrder($transfer, $order, $pendingDebit);
×
72
            } else {
73
                // Create new transfer
74
                $transfer = $this->stripeTransferFactory->createFromOrder($order, $pendingDebit);
9✔
75
                $this->stripeTransferRepository->persist($transfer);
9✔
76
                if ($this->enablePaymentTaxSplit) {
9✔
77
                    $tax_transfer = $this->stripeTransferFactory->createFromOrderForTax($order, $pendingDebit);
×
78
                    $this->stripeTransferRepository->persist($tax_transfer);
×
79
                }
80
            }
81

82
            $transfers[] = $transfer;
9✔
83
            if (isset($tax_transfer)) {
9✔
84
                $transfers[] = $tax_transfer;
×
85
            }
86
        }
87

88
        // Save
89
        $this->stripeTransferRepository->flush();
9✔
90

91
        return $transfers;
9✔
92
    }
93

94
    /**
95
     * @param array $existingTransfers
96
     * @param array $orders
97
     * @return array App\Entity\StripeTransfer[]
98
     */
99
    public function updateTransfersFromOrders(array $existingTransfers, array $orders, array $pendingDebits)
100
    {
101
        $updated = [];
5✔
102
        foreach ($existingTransfers as $orderId => $transfer) {
5✔
103
            $pendingDebit = $pendingDebits[$orderId] ?? null;
5✔
104
            if ($this->enablePaymentTaxSplit && strpos($orderId, $this->taxOrderPostfix) !== false) {
5✔
105
                $tax_suffixed_orderId = $orderId;
×
106
                $orderId = str_replace($this->taxOrderPostfix, "", $orderId);
×
107
                $pendingDebit = $pendingDebits[$orderId] ?? null;
×
108
                $updated[$tax_suffixed_orderId] = $this->stripeTransferFactory->updateFromOrder(
×
109
                    $transfer,
×
110
                    $orders[$orderId],
×
111
                    $pendingDebit,
×
112
                    true
×
113
                );
×
114
            } else {
115
                $updated[$orderId] = $this->stripeTransferFactory->updateFromOrder(
5✔
116
                    $transfer,
5✔
117
                    $orders[$orderId],
5✔
118
                    $pendingDebit
5✔
119
                );
5✔
120
            }
121
        }
122

123
        // Save
124
        $this->stripeTransferRepository->flush();
5✔
125

126
        return $updated;
5✔
127
    }
128
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc