Merge branch 'dillon/111-manual-invoice-ba' into vapor/development

This commit is contained in:
Dillon Ngo
2025-11-14 00:12:43 +08:00
3 changed files with 42 additions and 30 deletions
@@ -72,8 +72,17 @@
<div class="absolute w-100 b-l b-b b-r b-success" :class="[{'hide': !serviceType.status}]" style="top: 100%; right: 0; z-index: 1;">
<div class="row text-left no-margin bg-white">
<div class="col no-padding">
<div class="row no-margin" v-for="service in data.services" v-bind:key="service.id" >
<div class="col b-b b-grey p-t-10 p-b-10 pointer hover-t-10 p-b-10" :class="[{'bg-success-light': serviceType.id === service.id}, {'text-white': serviceType.id === service.id}, {'hover-success': serviceType.id !== service.id}, {'pointer': serviceType.id !== service.id}]" v-if="service.id === 15">
<div class="row no-margin" v-for="service in data.services.filter(s => ![14,15,16,17,18,19].includes(s.id))" v-bind:key="service.id">
<div class="col b-b b-grey p-t-10 p-b-10 pointer hover-t-10 p-b-10" :class="[{'bg-success-light': serviceType.id === service.id}, {'text-white': serviceType.id === service.id}, {'hover-success': serviceType.id !== service.id}, {'pointer': serviceType.id !== service.id}]" @click="updateServiceType(service)">
<div class="row align-items-center justify-content-center">
<div class="col">
<div class="font-heading fs-10">{{service.name}}</div>
</div>
</div>
</div>
</div>
<div class="row no-margin" v-if="data.services.filter(s => ![14, 15, 16, 17, 18, 19].includes(s.id)).length">
<div class="col b-b b-grey p-t-10 p-b-10 pointer hover-t-10 p-b-10" :class="[{'bg-success-light': [14, 15, 16, 17, 18, 19].includes(serviceType.id)}, {'text-white': [14, 15, 16, 17, 18, 19].includes(serviceType.id)}, {'hover-success': ![14, 15, 16, 17, 18, 19].includes(serviceType.id)}, {'pointer': ![14, 15, 16, 17, 18, 19].includes(serviceType.id)}]">
<div class="dropdown w-100" @mouseleave="closeDropdown">
<button
class="font-heading fs-10 w-100"
@@ -90,7 +99,7 @@
>
<ul class="menu-level w-100">
<li
v-for="svc in serviceInfo.services"
v-for="svc in hardcodeBankingInvoiceServices.services"
:key="svc.id"
class="menu-item w-100 p-l-0"
>
@@ -105,7 +114,7 @@
<li v-for="sub in svc.subservices" :key="'sub-'+sub.id" class="menu-item w-100">
<div
class="level-title w-100 sub-level font-heading fs-10"
@click="selectSubservice(service, svc, sub)"
@click="selectSubservice(svc, sub)"
:class="{ 'bg-success-light text-white': innerDropdownSelected.subservice && innerDropdownSelected.subservice.id === sub.id }"
>
{{ sub.name }}
@@ -117,13 +126,6 @@
</div>
</div>
</div>
<div class="col b-b b-grey p-t-10 p-b-10 pointer hover-t-10 p-b-10" :class="[{'bg-success-light': serviceType.id === service.id}, {'text-white': serviceType.id === service.id}, {'hover-success': serviceType.id !== service.id}, {'pointer': serviceType.id !== service.id}]" @click="updateServiceType(service)" v-else>
<div class="row align-items-center justify-content-center">
<div class="col">
<div class="font-heading fs-10">{{service.name}}</div>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -140,11 +142,11 @@
<p class="no-margin" v-if="serviceType.id === 1">The recipient can expect to receive the transfer within <span class="text-success bold">3-5 working days</span>. Explore our BANK TRANSFER (SAVER) option for a better rate!</p>
<p class="no-margin" v-if="serviceType.id === 3">Enjoy a <span class="bold text-underline">better rate</span> with this option! The recipient will receive the transfer after <span class="text-success bold">5-7 working days</span>.</p>
<p class="no-margin" v-if="serviceType.id === 12">You can request Pay-on-Behalf via Alipay for platforms like Taobao, 1688, Pinduoduo, or any Alipay-supported platform. <br><span class="text-danger">Please use Alipay account "2766384544@QQ.com" to apply for Daifu. This account may change, so always confirm the latest Alipay account before placing an order.</span></p>
<p class="no-margin" v-if="serviceType.id === 14">The customer may request an <span class="bold">official invoice first</span> for Bank submission (e.g. BA Trade Line). <br> <br>
<p class="no-margin" v-if="serviceType.id === 14 || serviceType.id === 17 || serviceType.id === 18">The customer may request an <span class="bold">official invoice first</span> for Bank submission (e.g. BA Trade Line). <br> <br>
The <span class="bold">2% service fee is already included</span> in each product unit price, so it will not appear separately.<br>
🕓 Transfer will be processed once bank payment is received.<br>
</p>
<p class="no-margin" v-if="serviceType.id === 15">The customer may request an <span class="bold">official invoice first</span> for Bank submission (e.g. BA Trade Line). <br> <br>
<p class="no-margin" v-if="serviceType.id === 15 || serviceType.id === 16 || serviceType.id === 19">The customer may request an <span class="bold">official invoice first</span> for Bank submission (e.g. BA Trade Line). <br> <br>
Invoice will show a <span class="bold">2% service fee</span> as a separate item.<br>
🕓 Transfer will be processed once bank payment is received. <br>
</p>
@@ -253,7 +255,7 @@
subservice: null,
option: null
},
serviceInfo: {
hardcodeBankingInvoiceServices: {
services: [
{
id: 1,
@@ -261,11 +263,11 @@
subservices: [
{
id: 14,
name: "(IN) BANK TRANSFER",
name: "(IN) BANK TRANSFER (CNY/USD) - BA",
},
{
id: 15,
name: "(EX) BANK TRANSFER",
name: "(EX) BANK TRANSFER (CNY/USD) - BA",
},
]
},
@@ -274,12 +276,12 @@
name: "ALIPAY TRANSFER",
subservices: [
{
id: 14,
name: "(IN) ALIPAY TRANSFER",
id: 17,
name: "(IN) ALIPAY - BA",
},
{
id: 15,
name: "(EX) ALIPAY TRANSFER",
id: 16,
name: "(EX) ALIPAY - BA",
},
]
},
@@ -288,12 +290,12 @@
name: "ENTERPRISE TO ENTERPRISE 公打公",
subservices: [
{
id: 14,
name: "(IN) ENTERPRISE TO ENTERPRISE 公打公",
id: 18,
name: "(IN) ENTERPRISE TO ENTERPRISE - BA",
},
{
id: 15,
name: "(EX) ENTERPRISE TO ENTERPRISE 公打公",
id: 19,
name: "(EX) ENTERPRISE TO ENTERPRISE - BA",
},
]
},
@@ -314,6 +316,16 @@
this.summary.recipientBanks = this.data.recipient_banks.accounts;
},
mounted() {
this.hardcodeBankingInvoiceServices.services.forEach(service => {
service.subservices = service.subservices.map(sub => {
const match = this.data.services.find(s => s.id === sub.id);
return match
? { ...sub, name: match.name, currencies: match.currencies }
: sub;
});
});
},
computed: {
displaySelection() {
var defaultName = "BANKING INVOICE";
@@ -353,8 +365,8 @@
this.innerDropdownHovered.service = service;
this.innerDropdownHovered.subservice = null;
},
selectSubservice(service, svc, sub) {
this.updateServiceType(service);
selectSubservice(svc, sub) {
this.updateServiceType(sub);
this.innerDropdownSelected = { service: svc, subservice: sub };
this.innerDropdownSelected.subservice = sub;
@@ -222,7 +222,7 @@
})
},
disabledMyr(){
if (this.data.id === 14 || this.data.id === 15) { //default for service type manual / banking invoice
if (this.data.id === 14 || this.data.id === 15 || this.data.id === 16 || this.data.id === 17 || this.data.id === 18 || this.data.id === 19) { //default for service type manual / banking invoice
return false;
}
@@ -206,7 +206,7 @@
</div>
<!-- Generate Banking Invoice -->
<div class="row" v-if="data.service.id === 14 || data.service.id === 15">
<div class="row" v-if="data.service.id === 14 || data.service.id === 15 || data.service.id === 16 || data.service.id === 17 || data.service.id === 18 || data.service.id === 19">
<div class="col-12 col-md-5 pr-md-0" v-if="submitted">
<div class="row">
<div class="col-12">
@@ -216,7 +216,7 @@
</div>
</div>
<div class="col" v-if="submitted">
<div class="alert alert-success padding-15" role="alert" v-if="submitted && (data.service.id === 14 || data.service.id === 15) && (data.documents.banking_invoice || data.documents.delivery_order_banking )">
<div class="alert alert-success padding-15" role="alert" v-if="submitted && (data.service.id === 14 || data.service.id === 15 || data.service.id === 16 || data.service.id === 17 || data.service.id === 18 || data.service.id === 19) && (data.documents.banking_invoice || data.documents.delivery_order_banking )">
<document-file-viewer-component :file="data.documents.banking_invoice.files[0]" v-if="data.documents.banking_invoice">
<template slot="button">
<div class="text-center bg-master-lightest padding-20 pointer m-b-10">
@@ -433,7 +433,7 @@
}
else if(section === this.section + 'CheckEInvoiceRule'){
if(response.payload.data.isPassed){
if(this.data.service.id === 14 || this.data.service.id === 15){
if(this.data.service.id === 14 || this.data.service.id === 15 || this.data.service.id === 16 || this.data.service.id === 17 || this.data.service.id === 18 || this.data.service.id === 19){
this.submit(route('api.booking.banking.create', this.data.id), 'post', this.section, true, true);
}
else{