Merge branch 'dillon/90-e-invoice-c' into vapor/development

This commit is contained in:
Dillon Ngo
2025-06-10 02:29:14 +08:00
7 changed files with 145 additions and 65 deletions
@@ -27,6 +27,7 @@ use App\Classes\Modules\Wallets\Services\RecalculatesWalletBalance;
use App\Classes\Modules\Rules\Services\RuleEvaluator;
use App\Classes\Modules\Rules\Standards\Rules\CanPassOrderDurationLimitRule;
use App\Classes\Modules\Transactions\Processors\CreateReceiptVoucherTransactionProcessor;
use App\Classes\Modules\Transactions\Services\CalculatesTransactionExpiryDateTime;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\PaymentMethodType;
use App\Classes\ValueObjects\Constants\TransactionType;
@@ -103,6 +104,9 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
/** @var CanPassPurchaseOrderRule */
protected $canPassPurchaseOrderRule;
/** @var CalculatesTransactionExpiryDateTime */
protected $calculatesTransactionExpiryDateTime;
/**
* @param FetchesBookingQuotation $fetchBookingQuotation
* @param FetchesCompanyPaymentAttemptLimit $fetchesCompanyPaymentAttemptLimit
@@ -121,8 +125,9 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
* @param CanPassEInvoicePromptedRule $canPassEInvoicePromptedRule
* @param CanPassTINRule $canPassTINRule
* @param CanPassPurchaseOrderRule $canPassPurchaseOrderRule
* @param CalculatesTransactionExpiryDateTime $calculatesTransactionExpiryDateTime
*/
public function __construct(FetchesBookingQuotation $fetchBookingQuotation, FetchesCompanyPaymentAttemptLimit $fetchesCompanyPaymentAttemptLimit, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CreatesTransaction $createsTransaction, CalculatesBookingOutstanding $calculatesBookingOutstanding, CreatesBillplzBill $createsBillplzBill, UpdatesWalletBalance $updatesWalletBalance, UpdatesTransactionStatus $updatesTransactionStatus, CreateCashBackTransactionProcessor $createCashBackTransactionProcessor, RecalculatesWalletBalance $recalculatesWalletBalance, BookingToVoucherifyProcessor $bookingToVoucherifyProcessor, CalculatesBookingRefundAmount $calculatesBookingRefundAmount, RuleEvaluator $ruleEvaluator, CreateReceiptVoucherTransactionProcessor $createReceiptVoucherTransactionProcessor, CanPassOrderDurationLimitRule $canPassOrderDurationLimitRule, CanPassEInvoicePromptedRule $canPassEInvoicePromptedRule, CanPassTINRule $canPassTINRule, CanPassPurchaseOrderRule $canPassPurchaseOrderRule)
public function __construct(FetchesBookingQuotation $fetchBookingQuotation, FetchesCompanyPaymentAttemptLimit $fetchesCompanyPaymentAttemptLimit, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CreatesTransaction $createsTransaction, CalculatesBookingOutstanding $calculatesBookingOutstanding, CreatesBillplzBill $createsBillplzBill, UpdatesWalletBalance $updatesWalletBalance, UpdatesTransactionStatus $updatesTransactionStatus, CreateCashBackTransactionProcessor $createCashBackTransactionProcessor, RecalculatesWalletBalance $recalculatesWalletBalance, BookingToVoucherifyProcessor $bookingToVoucherifyProcessor, CalculatesBookingRefundAmount $calculatesBookingRefundAmount, RuleEvaluator $ruleEvaluator, CreateReceiptVoucherTransactionProcessor $createReceiptVoucherTransactionProcessor, CanPassOrderDurationLimitRule $canPassOrderDurationLimitRule, CanPassEInvoicePromptedRule $canPassEInvoicePromptedRule, CanPassTINRule $canPassTINRule, CanPassPurchaseOrderRule $canPassPurchaseOrderRule, CalculatesTransactionExpiryDateTime $calculatesTransactionExpiryDateTime)
{
$this->fetchBookingQuotation = $fetchBookingQuotation;
$this->fetchesCompanyPaymentAttemptLimit = $fetchesCompanyPaymentAttemptLimit;
@@ -141,6 +146,7 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
$this->canPassEInvoicePromptedRule = $canPassEInvoicePromptedRule;
$this->canPassTINRule = $canPassTINRule;
$this->canPassPurchaseOrderRule = $canPassPurchaseOrderRule;
$this->calculatesTransactionExpiryDateTime = $calculatesTransactionExpiryDateTime;
}
/**
@@ -269,6 +275,9 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
private function createTransactionObject(Booking $booking, CalculationObject $configurations, string $billNumber, ?string $paymentReference): TransactionObject
{
// $expiresOn = Carbon::now()->addMinutes($this->fetchesCompanyPaymentAttemptLimit->execute($booking->company));
$expiresOn = $this->calculatesTransactionExpiryDateTime->execute($booking->id);
return new TransactionObject(
$billNumber,
TransactionType::PAYMENT,
@@ -283,7 +292,7 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
$configurations->getConfigurations()->getRate(),
$configurations->getTax(),
$configurations->getServiceCharge(),
Carbon::now()->addMinutes($this->fetchesCompanyPaymentAttemptLimit->execute($booking->company)),
$expiresOn,
ApprovalStatus::PENDING_SUBMISSION,
[],
$paymentReference