E-Invoice - Receipt Voucher

This commit is contained in:
Dillon Ngo
2025-05-24 22:14:35 +08:00
parent de799dc356
commit b3693aa1e3
21 changed files with 543 additions and 46 deletions
@@ -25,6 +25,7 @@ use App\Classes\Modules\Vouchers\Processors\Voucherify\BookingToVoucherifyProces
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\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\PaymentMethodType;
use App\Classes\ValueObjects\Constants\TransactionType;
@@ -89,6 +90,9 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
/** @var RuleEvaluator */
private $ruleEvaluator;
/** @var CreateReceiptVoucherTransactionProcessor */
private $createReceiptVoucherTransactionProcessor;
/**
* CreateBookingPaymentLogic constructor.
* @param FetchesBookingQuotation $fetchBookingQuotation
@@ -104,8 +108,9 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
* @param BookingToVoucherifyProcessor $bookingToVoucherifyProcessor
* @param CalculatesBookingRefundAmount $calculatesBookingRefundAmount
* @param RuleEvaluator $ruleEvaluator
* @param CreateReceiptVoucherTransactionProcessor $createReceiptVoucherTransactionProcessor
*/
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)
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)
{
$this->fetchBookingQuotation = $fetchBookingQuotation;
$this->fetchesCompanyPaymentAttemptLimit = $fetchesCompanyPaymentAttemptLimit;
@@ -120,6 +125,7 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
$this->bookingToVoucherifyProcessor = $bookingToVoucherifyProcessor;
$this->calculatesBookingRefundAmount = $calculatesBookingRefundAmount;
$this->ruleEvaluator = $ruleEvaluator;
$this->createReceiptVoucherTransactionProcessor = $createReceiptVoucherTransactionProcessor;
}
/**
@@ -200,6 +206,7 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
if(PaymentMethodType::PAYMENT_METHODS[$request->input('payment_method')] == PaymentMethodType::WALLET){
$this->updatesTransactionStatus->execute($transaction, ApprovalStatus::APPROVED);
$this->createReceiptVoucherTransactionProcessor->execute($booking, $transaction);
}
return $this->resourceResponse(new TransactionResource($transaction));