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

This commit is contained in:
Dillon Ngo
2025-05-30 17:33:43 +08:00
7 changed files with 94 additions and 23 deletions
@@ -91,6 +91,18 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
/** @var CreateReceiptVoucherTransactionProcessor */
private $createReceiptVoucherTransactionProcessor;
/** @var CanPassOrderDurationLimitRule */
protected $canPassOrderDurationLimitRule;
/** @var CanPassEInvoicePromptedRule */
protected $canPassEInvoicePromptedRule;
/** @var CanPassTINRule */
protected $canPassTINRule;
/** @var CanPassPurchaseOrderRule */
protected $canPassPurchaseOrderRule;
/**
* @param FetchesBookingQuotation $fetchBookingQuotation
* @param FetchesCompanyPaymentAttemptLimit $fetchesCompanyPaymentAttemptLimit
@@ -105,8 +117,12 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
* @param CalculatesBookingRefundAmount $calculatesBookingRefundAmount
* @param RuleEvaluator $ruleEvaluator
* @param CreateReceiptVoucherTransactionProcessor $createReceiptVoucherTransactionProcessor
* @param CanPassOrderDurationLimitRule $canPassOrderDurationLimitRule
* @param CanPassEInvoicePromptedRule $canPassEInvoicePromptedRule
* @param CanPassTINRule $canPassTINRule
* @param 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)
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)
{
$this->fetchBookingQuotation = $fetchBookingQuotation;
$this->fetchesCompanyPaymentAttemptLimit = $fetchesCompanyPaymentAttemptLimit;
@@ -121,6 +137,10 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
$this->calculatesBookingRefundAmount = $calculatesBookingRefundAmount;
$this->ruleEvaluator = $ruleEvaluator;
$this->createReceiptVoucherTransactionProcessor = $createReceiptVoucherTransactionProcessor;
$this->canPassOrderDurationLimitRule = $canPassOrderDurationLimitRule;
$this->canPassEInvoicePromptedRule = $canPassEInvoicePromptedRule;
$this->canPassTINRule = $canPassTINRule;
$this->canPassPurchaseOrderRule = $canPassPurchaseOrderRule;
}
/**
@@ -133,10 +153,10 @@ class CreateBookingPaymentLogic extends AbstractControllerLogic
{
$dto = new ConfirmBookingDTO($request->all());
$result = $this->ruleEvaluator->evaluate([
App()->make(CanPassOrderDurationLimitRule::class),
App()->make(CanPassEInvoicePromptedRule::class),
App()->make(CanPassTINRule::class),
App()->make(CanPassPurchaseOrderRule::class),
$this->canPassOrderDurationLimitRule,
$this->canPassEInvoicePromptedRule,
$this->canPassTINRule,
$this->canPassPurchaseOrderRule,
], $dto);
if ($result->failed()) {
@@ -52,6 +52,9 @@ class UpdateCompanyEInvoiceInfoLogic extends AbstractControllerLogic
/** @var UpdatesAddressMetadata */
private $updatesAddressMetadata;
/** @var CanPassEInvoicePromptedRule */
private $canPassEInvoicePromptedRule;
/**
* UpdateCompanyEInvoiceInfoLogic constructor.
* @param CanCreateAddress $canCreateAddress
@@ -61,8 +64,9 @@ class UpdateCompanyEInvoiceInfoLogic extends AbstractControllerLogic
* @param RuleEvaluator $ruleEvaluator;
* @param UpdatesCompanyEInvoiceInfo $updatesCompanyEInvoiceInfo;
* @param UpdatesAddressMetadata $updatesAddressMetadata
* @param CanPassEInvoicePromptedRule $canPassEInvoicePromptedRule
*/
public function __construct(CanCreateAddress $canCreateAddress, FetchesDistrict $fetchesDistrict, FetchesCompany $fetchesCompany, CreatesAddress $createsAddress, RuleEvaluator $ruleEvaluator, UpdatesCompanyEInvoiceInfo $updatesCompanyEInvoiceInfo, UpdatesAddressMetadata $updatesAddressMetadata)
public function __construct(CanCreateAddress $canCreateAddress, FetchesDistrict $fetchesDistrict, FetchesCompany $fetchesCompany, CreatesAddress $createsAddress, RuleEvaluator $ruleEvaluator, UpdatesCompanyEInvoiceInfo $updatesCompanyEInvoiceInfo, UpdatesAddressMetadata $updatesAddressMetadata, CanPassEInvoicePromptedRule $canPassEInvoicePromptedRule)
{
$this->canCreateAddress = $canCreateAddress;
$this->fetchesDistrict = $fetchesDistrict;
@@ -71,6 +75,7 @@ class UpdateCompanyEInvoiceInfoLogic extends AbstractControllerLogic
$this->ruleEvaluator = $ruleEvaluator;
$this->updatesCompanyEInvoiceInfo = $updatesCompanyEInvoiceInfo;
$this->updatesAddressMetadata = $updatesAddressMetadata;
$this->canPassEInvoicePromptedRule = $canPassEInvoicePromptedRule;
}
/**
@@ -85,7 +90,7 @@ class UpdateCompanyEInvoiceInfoLogic extends AbstractControllerLogic
{
$dto = new EInvoiceInfoDTO($request->all());
$result = $this->ruleEvaluator->evaluate([
App()->make(CanPassEInvoicePromptedRule::class),
$this->canPassEInvoicePromptedRule,
], $dto);
if ($result->failed()) {
@@ -18,7 +18,9 @@ class UpdatesCompanyEInvoiceRequest extends AbstractUpdateRecord
public function execute(Company $model, bool $eInvoice)
{
if (is_null($model->e_invoice) && is_null($model->e_invoice_requested_at)) {
$model->e_invoice_requested_at = now();
if($eInvoice){
$model->e_invoice_requested_at = now();
}
}
$model->e_invoice = $eInvoice;
@@ -28,12 +28,20 @@ class CheckEInvoiceRuleLogic extends AbstractControllerLogic
/** @var RuleEvaluator */
private $ruleEvaluator;
/** @var CanPassEInvoicePromptedRule */
private $canPassEInvoicePromptedRule;
/** @var CanPassTINRule */
private $canPassTINRule;
/**
* CheckEInvoiceRuleLogic constructor.
*/
public function __construct(RuleEvaluator $ruleEvaluator)
public function __construct(RuleEvaluator $ruleEvaluator, CanPassEInvoicePromptedRule $canPassEInvoicePromptedRule, CanPassTINRule $canPassTINRule)
{
$this->ruleEvaluator = $ruleEvaluator;
$this->canPassEInvoicePromptedRule = $canPassEInvoicePromptedRule;
$this->canPassTINRule = $canPassTINRule;
}
/**
@@ -49,8 +57,8 @@ class CheckEInvoiceRuleLogic extends AbstractControllerLogic
$dto = new CheckEInvoiceRuleDTO($request->all());
$result = $this->ruleEvaluator->evaluate([
App()->make(CanPassEInvoicePromptedRule::class),
App()->make(CanPassTINRule::class),
$this->canPassEInvoicePromptedRule,
$this->canPassTINRule,
], $dto);
if ($result->failed()) {
@@ -29,12 +29,30 @@ class CheckPurchaseOrderRuleLogic extends AbstractControllerLogic
/** @var RuleEvaluator */
private $ruleEvaluator;
/** @var CanPassOrderDurationLimitRule */
private $canPassOrderDurationLimitRule;
/** @var CanPassEInvoicePromptedRule */
private $canPassEInvoicePromptedRule;
/** @var CanPassPurchaseOrderRule */
private $canPassPurchaseOrderRule;
/**
* CheckPurchaseOrderRuleLogic constructor.
* @param RuleEvaluator $ruleEvaluator
* @param CanPassOrderDurationLimitRule $canPassOrderDurationLimitRule
* @param CanPassEInvoicePromptedRule $canPassEInvoicePromptedRule
* @param CanPassPurchaseOrderRule $canPassPurchaseOrderRule
*/
public function __construct(RuleEvaluator $ruleEvaluator)
public function __construct(RuleEvaluator $ruleEvaluator, CanPassOrderDurationLimitRule $canPassOrderDurationLimitRule, CanPassEInvoicePromptedRule $canPassEInvoicePromptedRule, CanPassPurchaseOrderRule $canPassPurchaseOrderRule)
{
$this->ruleEvaluator = $ruleEvaluator;
$this->canPassOrderDurationLimitRule = $canPassOrderDurationLimitRule;
$this->canPassEInvoicePromptedRule = $canPassEInvoicePromptedRule;
$this->canPassPurchaseOrderRule = $canPassPurchaseOrderRule;
}
/**
@@ -50,9 +68,9 @@ class CheckPurchaseOrderRuleLogic extends AbstractControllerLogic
$dto = new CheckPurchaseOrderRuleDTO($request->all());
$result = $this->ruleEvaluator->evaluate([
App()->make(CanPassOrderDurationLimitRule::class),
App()->make(CanPassEInvoicePromptedRule::class),
App()->make(CanPassPurchaseOrderRule::class),
$this->canPassOrderDurationLimitRule,
$this->canPassEInvoicePromptedRule,
$this->canPassPurchaseOrderRule,
], $dto);
if ($result->failed()) {
@@ -27,12 +27,18 @@ class CheckTransferRuleLogic extends AbstractControllerLogic
/** @var RuleEvaluator */
private $ruleEvaluator;
/** @var CanPassOrderDurationLimitRule */
private $canPassOrderDurationLimitRule;
/**
* CheckTransferRuleLogic constructor.
* @param RuleEvaluator $ruleEvaluator
* @param CanPassOrderDurationLimitRule $canPassOrderDurationLimitRule
*/
public function __construct(RuleEvaluator $ruleEvaluator)
public function __construct(RuleEvaluator $ruleEvaluator, CanPassOrderDurationLimitRule $canPassOrderDurationLimitRule)
{
$this->ruleEvaluator = $ruleEvaluator;
$this->canPassOrderDurationLimitRule = $canPassOrderDurationLimitRule;
}
/**
@@ -48,7 +54,7 @@ class CheckTransferRuleLogic extends AbstractControllerLogic
$dto = new CheckTransferRuleDTO($request->all());
$result = $this->ruleEvaluator->evaluate([
App()->make(CanPassOrderDurationLimitRule::class),
$this->canPassOrderDurationLimitRule,
], $dto);
if ($result->failed()) {
@@ -184,9 +184,7 @@
<div class="font-heading fs-10 muted all-caps">TIN</div>
<p class="m-b-0 fs-12">
<span :class="[{'text-danger bold': !booking.company.e_invoice && !booking.company.tin }]">
{{ booking.company.e_invoice
? (booking.company.tin ? booking.company.tin : 'INCOMPLETE E-INVOICE INFO')
: 'NOT PROVIDED' }}
{{ invoiceInfo }}
</span><br />
<a v-if="booking.company.e_invoice && booking.company.tin" class="pointer requestModal" data-type="eInvoiceInfo">View E-Invoice Info
</a>
@@ -312,7 +310,7 @@
</div>
<div class="row m-t-10" v-if="$store.getters.isSuperAdmin">
<div class="col-sm col-md-auto">
<div class="btn btn-sm btn block all-caps b-rad-none btn-danger pointer requestModal" data-type="deleteTransfer">Delete Transfer</div>
<div class="btn btn-sm btn block all-caps b-rad-none btn-danger pointer requestModal equal-width-button" data-type="deleteTransfer">Delete Transfer</div>
</div>
<modal-component class="animate__animated animate__fast animate__fadeIn" type="deleteTransfer">
<general-confirmation-form-component
@@ -483,7 +481,7 @@
</div>
<div class="row m-t-5" v-if="$store.getters.isAdmin">
<div class="col">
<div class="btn btn-xs all-caps b-rad-none btn-warning pointer requestModal" data-type="changeBookingOwner">Change Booking Owner</div>
<div class="btn btn-xs all-caps b-rad-none btn-warning pointer requestModal equal-width-button" data-type="changeBookingOwner">Change Booking Owner</div>
<modal-component type="changeBookingOwner">
<change-booking-owner-form-component :data="booking" :section="section" class="text-center"></change-booking-owner-form-component>
</modal-component>
@@ -535,7 +533,14 @@
},
companySegmentIds() {
return this.booking.company.segments.map(obj => parseInt(obj.id));
}
},
invoiceInfo() {
const company = this.booking.company;
if (company.e_invoice) {
return company.tin ? company.tin : 'INCOMPLETE E-INVOICE INFO';
}
return 'NOT PROVIDED';
},
},
watch: {
pendingQueue(inComplete){
@@ -570,3 +575,10 @@
}
}
</script>
<style scoped>
.equal-width-button {
min-width: 165px;
display: inline-block;
text-align: center;
}
</style>