diff --git a/app/Classes/Modules/Bookings/Services/GeneratesBookingQuotation.php b/app/Classes/Modules/Bookings/Services/GeneratesBookingQuotation.php index 7d6c018e..34f58d3a 100644 --- a/app/Classes/Modules/Bookings/Services/GeneratesBookingQuotation.php +++ b/app/Classes/Modules/Bookings/Services/GeneratesBookingQuotation.php @@ -19,7 +19,7 @@ class GeneratesBookingQuotation $hours = $date->diffInHours($date->copy()->addMinutes($paymentAttemptLimit)->subDays($days)) ; $minutes = $date->diffInMinutes($date->copy()->addMinutes($paymentAttemptLimit)->subDays($days)->subHours($hours)); - $receive_date = $currencyConversionObject ? Carbon::now()->endOfDay()->addWeekdays($currencyConversionObject->getServiceId() === 1 ? 1 : 3)->timezone('Asia/Singapore')->format('4:00 \P\M, jS M, Y \G\M\T T') : null; + $receive_date = $currencyConversionObject ? Carbon::now()->endOfDay()->addWeekdays($currencyConversionObject->getServiceId() === 3 ? 4 : 2)->timezone('Asia/Singapore')->format('4:00 \P\M, jS M, Y \G\M\T T') : null; return [ 'bank' => new BankResource(Bank::find($calculationObject->getConfigurations()->getBankId())), diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php index 93caf8d1..1cf71643 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php @@ -3,37 +3,19 @@ namespace App\Classes\Modules\Transactions\ControllersLogic; -use DB; -use Carbon\Carbon; +use App\Classes\Modules\Transactions\Processors\CreateSupplierTransactionProcessor; use App\Models\Document; -use Barryvdh\DomPDF\PDF; -use App\Models\Transaction; -use Illuminate\Support\Str; use Illuminate\Http\Request; -use App\Models\SegmentConstant; use Illuminate\Http\JsonResponse; -use Illuminate\Support\Facades\Storage; use Meneses\LaravelMpdf\Facades\LaravelMpdf; use App\Classes\ValueObjects\Constants\DocumentType; use App\Classes\ValueObjects\Constants\ApprovalStatus; -use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\Modules\Documents\Services\CreatesFiles; -use App\Classes\ValueObjects\Constants\SegmentConstants; -use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Companies\Services\FetchesCompany; -use App\Classes\Modules\Segments\Services\FetchesConstant; use Meneses\LaravelLaravelMpdf\Facades\LaravelLaravelMpdf; use App\Classes\Modules\Documents\Services\CreatesDocument; -use App\Classes\Modules\Transactions\Services\CreatesTransaction; - -use App\Classes\Modules\Transactions\Services\FetchesTransaction; use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; -use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; -use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject; -use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber; -use App\Classes\Modules\Transactions\Services\CalculatesTransactionTransferFee; -use App\Classes\Modules\Transactions\Services\CalculatesTransactionServiceCharge; class CreateSupplierTransactionLogic extends AbstractControllerLogic { @@ -52,14 +34,8 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic /** @var FetchesCompany */ private $fetchesCompany; - /** @var FetchesTransaction */ - private $fetchesTransaction; - - /** @var UpdatesTransactionStatus */ - private $updatesTransactionStatus; - - /** @var CreatesTransaction */ - private $createsTransaction; + /** @var CreateSupplierTransactionProcessor */ + private $createSupplierTransactionProcessor; /** @var CreatesDocument */ private $createsDocument; @@ -67,44 +43,19 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic /** @var CreatesFiles */ private $createsFile; - /** @var GeneratesTransactionBillNumber */ - private $generatesTransactionBillNumber; - - /** @var CalculatesTransactionServiceCharge */ - private $calculatesTransactionServiceCharge; - - /** @var CalculatesTransactionTransferFee */ - private $calculatesTransactionTransferFee; - - /** @var PDF */ - private $pdf; - /** * CreateSupplierTransactionLogic constructor. * @param FetchesCompany $fetchesCompany - * @param FetchesTransaction $fetchesTransaction - * @param FetchesConstant $fetchesConstant - * @param UpdatesTransactionStatus $updatesTransactionStatus - * @param CreatesTransaction $createsTransaction - * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber - * @param CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge - * @param CalculatesTransactionTransferFee $calculatesTransactionTransferFee - * @param PDF $pdf + * @param CreateSupplierTransactionProcessor $createSupplierTransactionProcessor + * @param CreatesDocument $createsDocument + * @param CreatesFiles $createsFile */ - public function __construct(FetchesCompany $fetchesCompany, FetchesTransaction $fetchesTransaction, FetchesConstant $fetchesConstant, UpdatesTransactionStatus $updatesTransactionStatus, CreatesTransaction $createsTransaction, CreatesDocument $createsDocument, CreatesFiles $createsFile, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge, CalculatesTransactionTransferFee $calculatesTransactionTransferFee, PDF $pdf) + public function __construct(FetchesCompany $fetchesCompany, CreateSupplierTransactionProcessor $createSupplierTransactionProcessor, CreatesDocument $createsDocument, CreatesFiles $createsFile) { - $this->fetchesCompany = $fetchesCompany; - $this->fetchesTransaction = $fetchesTransaction; - $this->fetchesConstant = $fetchesConstant; - $this->updatesTransactionStatus = $updatesTransactionStatus; - $this->createsTransaction = $createsTransaction; + $this->createSupplierTransactionProcessor = $createSupplierTransactionProcessor; $this->createsDocument = $createsDocument; $this->createsFile = $createsFile; - $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; - $this->calculatesTransactionServiceCharge = $calculatesTransactionServiceCharge; - $this->calculatesTransactionTransferFee = $calculatesTransactionTransferFee; - $this->pdf = $pdf; } public function logic(Request $request) : JsonResponse @@ -114,44 +65,13 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic $rate = $request->input('rate'); - $transactions = collect(); - $transferFeeTransactions = collect(); + $payments = $request->input('payments'); - foreach($request->input('payments') as $payment){ + $this->createSupplierTransactionProcessor->execute($supplier, $rate, $payments); - /** @var Transaction $payment */ - $payment = $this->fetchesTransaction->execute(['id' => $payment['id']]); - - if($payment->status !== ApprovalStatus::APPROVED) continue; + if(!count($this->createSupplierTransactionProcessor->getBills())) return $this->response([]); - $this->updatesTransactionStatus->execute($payment, ApprovalStatus::COMPLETED); - $billNumber = $this->generatesTransactionBillNumber->execute('SPLR-'); - // $constant = $this->fetchesConstant->execute(['service_charge' => $supplier->id]); - $constant = SegmentConstant::where('reference', SegmentConstants::SERVICE_CHARGE)->where('detail->id', $supplier->id)->first(); - $serviceCharge = $this->calculatesTransactionServiceCharge->execute($payment->original_amount, $rate, $constant ? $constant->detail->service_charge->amount : 0); - - $object = new TransactionObject($billNumber, TransactionType::BILL, $supplier->id, 1, - $supplier->banks()->where('default', true)->first()->id, PaymentMethodType::CASH, - $payment->original_amount * (1 / $rate), $payment->original_amount, 1, $payment->original_currency_id, - $rate, 0, $supplier->id == 2 ? 0 : $serviceCharge, null, ApprovalStatus::PENDING_VERIFICATION); - - $transactions[] = $billTransaction = $this->createsTransaction->execute($payment->booking, $object); - - $transferFeeNumber = $this->generatesTransactionBillNumber->execute('TRFR-'); - $trasferFee = $this->calculatesTransactionTransferFee->execute($payment->original_amount); - $object = new TransactionObject($transferFeeNumber, TransactionType::TRANSFER_FEE, 1, $supplier->id, - $supplier->banks()->where('default', true)->first()->id, PaymentMethodType::CASH, - $payment->original_amount, $payment->original_amount, $payment->original_currency_id, $payment->original_currency_id, - 1, 0, $trasferFee, null, ApprovalStatus::PENDING_VERIFICATION); - - $transferFeeTransactions[] = $this->createsTransaction->execute($billTransaction, $object); - } - - if(!count($transactions)) return $this->response([]); - - $pdf = LaravelMpdf::loadView('pages.pdfs.currency_vendor_order', ['transactions' => $transactions, 'transferFeeTransactions' => $transferFeeTransactions, 'supplier' => $supplier]); - - $path = Str::studly($supplier->name).'_'.Carbon::now()->format('Y_m_d_h_s_i').'.pdf'; + $pdf = LaravelMpdf::loadView('pages.pdfs.currency_vendor_order', ['transactions' => $this->createSupplierTransactionProcessor->getBills(), 'transferFeeTransactions' => $this->createSupplierTransactionProcessor->getTransferTransactions(), 'supplier' => $supplier]); $object = new DocumentObject( DocumentType::CURRENCY_VENDOR_ORDER, diff --git a/app/Classes/Modules/Transactions/ControllersLogic/DownloadMockUpWhiteFormPdfLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/DownloadMockUpWhiteFormPdfLogic.php index d3561244..e1875f0a 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/DownloadMockUpWhiteFormPdfLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/DownloadMockUpWhiteFormPdfLogic.php @@ -3,123 +3,60 @@ namespace App\Classes\Modules\Transactions\ControllersLogic; -// use DB; -use App\Models\Transaction; +use App\Classes\Modules\Transactions\Processors\CreateSupplierTransactionProcessor; use Illuminate\Http\Request; -use App\Models\SegmentConstant; -use Illuminate\Http\JsonResponse; -use Meneses\LaravelMpdf\Facades\LaravelMpdf; -use App\Classes\ValueObjects\Constants\ApprovalStatus; -use App\Classes\ValueObjects\Constants\TransactionType; -use App\Classes\ValueObjects\Constants\SegmentConstants; -use App\Classes\ValueObjects\Constants\PaymentMethodType; -use App\Classes\General\Abstracts\AbstractControllerLogic; -use App\Classes\Modules\Companies\Services\FetchesCompany; -use App\Classes\Modules\Segments\Services\FetchesConstant; -use App\Classes\Modules\Transactions\Services\CreatesTransaction; - -use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject; -use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber; -use App\Classes\Modules\Transactions\Services\CalculatesTransactionTransferFee; -use App\Classes\Modules\Transactions\Services\CalculatesTransactionServiceCharge; use Illuminate\Support\Facades\DB; +use Meneses\LaravelMpdf\Facades\LaravelMpdf; +use App\Classes\Modules\Companies\Services\FetchesCompany; +use Meneses\LaravelLaravelMpdf\Facades\LaravelLaravelMpdf; - -class DownloadMockUpWhiteFormPdfLogic extends AbstractControllerLogic +class DownloadMockUpWhiteFormPdfLogic { - - /** - * @return array - */ - protected function notification():array { - return [ - 'title' => 'Create Mock Up White Form', - 'message' => 'You have successfully created Mock Up White Form' - ]; - } - /** @var FetchesCompany */ private $fetchesCompany; - /** @var CreatesTransaction */ - private $createsTransaction; - - /** @var GeneratesTransactionBillNumber */ - private $generatesTransactionBillNumber; - - /** @var CalculatesTransactionServiceCharge */ - private $calculatesTransactionServiceCharge; - - /** @var CalculatesTransactionTransferFee */ - private $calculatesTransactionTransferFee; + /** @var CreateSupplierTransactionProcessor */ + private $createSupplierTransactionProcessor; /** - * CreateSupplierTransactionLogic constructor. + * DownloadMockUpWhiteFormPdfLogic constructor. * @param FetchesCompany $fetchesCompany - * @param FetchesConstant $fetchesConstant - * @param CreatesTransaction $createsTransaction - * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber - * @param CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge - * @param CalculatesTransactionTransferFee $calculatesTransactionTransferFee + * @param CreateSupplierTransactionProcessor $createSupplierTransactionProcessor */ - public function __construct(FetchesCompany $fetchesCompany, FetchesConstant $fetchesConstant, CreatesTransaction $createsTransaction, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CalculatesTransactionServiceCharge $calculatesTransactionServiceCharge, CalculatesTransactionTransferFee $calculatesTransactionTransferFee) + public function __construct(FetchesCompany $fetchesCompany, CreateSupplierTransactionProcessor $createSupplierTransactionProcessor) { - $this->fetchesCompany = $fetchesCompany; - $this->fetchesConstant = $fetchesConstant; - $this->createsTransaction = $createsTransaction; - $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; - $this->calculatesTransactionServiceCharge = $calculatesTransactionServiceCharge; - $this->calculatesTransactionTransferFee = $calculatesTransactionTransferFee; + $this->createSupplierTransactionProcessor = $createSupplierTransactionProcessor; } - public function logic(Request $request) : JsonResponse + + /** + * @param Request $request + * @return string|\Symfony\Component\HttpFoundation\Response + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute(Request $request) { + $supplier = $this->fetchesCompany->execute(['id' => $request->route('id')]); - $rate = $request->route('rate'); + $rate = $request->input('rate'); - $transactions = collect(); - $transferFeeTransactions = collect(); - - $payment_ids = explode(",", $request->route('payment_ids')); + $payments = array_map(function($value){ + return ['id' => $value]; + }, json_decode($request->input('payments'))); DB::beginTransaction(); - foreach($payment_ids as $payment_id){ + $this->createSupplierTransactionProcessor->execute($supplier, $rate, $payments); - /** @var Transaction $payment */ - $payment = Transaction::find($payment_id); - - if($payment->status !== ApprovalStatus::APPROVED) continue; + if(!count($this->createSupplierTransactionProcessor->getBills())) return 'unexpected error'; - $billNumber = $this->generatesTransactionBillNumber->execute('SPLR-'); - $constant = SegmentConstant::where('reference', SegmentConstants::SERVICE_CHARGE)->where('detail->id', $supplier->id)->first(); - $serviceCharge = $this->calculatesTransactionServiceCharge->execute($payment->original_amount, $rate, $constant ? $constant->detail->service_charge->amount : 0); + $pdf = LaravelMpdf::loadView('pages.pdfs.currency_vendor_order', ['transactions' => $this->createSupplierTransactionProcessor->getBills(), 'transferFeeTransactions' => $this->createSupplierTransactionProcessor->getTransferTransactions(), 'supplier' => $supplier]); - $object = new TransactionObject($billNumber, TransactionType::BILL, $supplier->id, 1, - $supplier->banks()->where('default', true)->first()->id, PaymentMethodType::CASH, - $payment->original_amount * (1 / $rate), $payment->original_amount, 1, $payment->original_currency_id, - $rate, 0, $supplier->id == 2 ? 0 : $serviceCharge, null, ApprovalStatus::PENDING_VERIFICATION); + DB::rollBack(); - $transactions[] = $billTransaction = $this->createsTransaction->execute($payment->booking, $object); - - $transferFeeNumber = $this->generatesTransactionBillNumber->execute('TRFR-'); - $trasferFee = $this->calculatesTransactionTransferFee->execute($payment->original_amount); - $object = new TransactionObject($transferFeeNumber, TransactionType::TRANSFER_FEE, 1, $supplier->id, - $supplier->banks()->where('default', true)->first()->id, PaymentMethodType::CASH, - $payment->original_amount, $payment->original_amount, $payment->original_currency_id, $payment->original_currency_id, - 1, 0, $trasferFee, null, ApprovalStatus::PENDING_VERIFICATION); - - $transferFeeTransactions[] = $this->createsTransaction->execute($billTransaction, $object); - } - - - if(!count($transactions)) return $this->response([]); - - $pdf = LaravelMpdf::loadView('pages.pdfs.currency_vendor_order', ['transactions' => $transactions, 'transferFeeTransactions' => $transferFeeTransactions, 'supplier' => $supplier]); - DB::rollback(); return $pdf->stream('MockUpWhiteForm.pdf'); } } diff --git a/app/Classes/Modules/Transactions/Processors/CreateSupplierTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateSupplierTransactionProcessor.php new file mode 100644 index 00000000..3f052352 --- /dev/null +++ b/app/Classes/Modules/Transactions/Processors/CreateSupplierTransactionProcessor.php @@ -0,0 +1,143 @@ +fetchesTransaction = $fetchesTransaction; + $this->updatesTransactionStatus = $updatesTransactionStatus; + $this->createsTransaction = $createsTransaction; + $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; + $this->calculatesTransactionServiceCharge = $calculatesTransactionServiceCharge; + $this->calculatesTransactionTransferFee = $calculatesTransactionTransferFee; + $this->bills = collect(); + $this->transferFee = collect(); + } + + /** + * @param Company $supplier + * @param String $rate + * @param array $payments + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute(Company $supplier, String $rate, Array $payments) { + + foreach($payments as $payment){ + + /** @var Transaction $payment */ + $payment = $this->fetchesTransaction->execute(['id' => $payment['id']]); + + if($payment->status !== ApprovalStatus::APPROVED) continue; + + $this->updatesTransactionStatus->execute($payment, ApprovalStatus::COMPLETED); + $billNumber = $this->generatesTransactionBillNumber->execute('SPLR-'); + $constant = SegmentConstant::where('reference', SegmentConstants::SERVICE_CHARGE)->where('detail->id', $supplier->id)->first(); + + $serviceCharge = $this->calculatesTransactionServiceCharge->execute($payment->original_amount, $rate, $constant ? (float) $constant->detail->amount : 0); + + $object = new TransactionObject($billNumber, TransactionType::BILL, $supplier->id, 1, + $supplier->banks()->where('default', true)->first()->id, PaymentMethodType::CASH, + $payment->original_amount * (1 / $rate), $payment->original_amount, 1, $payment->original_currency_id, + $rate, 0, $serviceCharge, null, ApprovalStatus::PENDING_VERIFICATION); + + /** @var Transaction $billTransaction */ + $billTransaction = $this->createsTransaction->execute($payment, $object); + $this->pushBill($billTransaction); + + $transferFeeNumber = $this->generatesTransactionBillNumber->execute('TRFR-'); + $transferFee = $this->calculatesTransactionTransferFee->execute($payment->original_amount); + $object = new TransactionObject($transferFeeNumber, TransactionType::TRANSFER_FEE, 1, $supplier->id, + $supplier->banks()->where('default', true)->first()->id, PaymentMethodType::CASH, + $payment->original_amount, $payment->original_amount, $payment->original_currency_id, $payment->original_currency_id, + 1, 0, $transferFee, null, ApprovalStatus::PENDING_VERIFICATION); + + $this->pushTransferFee($this->createsTransaction->execute($billTransaction, $object)); + } + + } + + /** + * @return Collection + */ + public function getBills(): Collection + { + return $this->bills; + } + + /** + * @return Collection + */ + public function getTransferTransactions(): Collection + { + return $this->transferFee; + } + + /** + * @param $bill + */ + private function pushBill($bill): void + { + $this->bills->push($bill); + } + + /** + * @param $transferFee + */ + private function pushTransferFee($transferFee): void + { + $this->transferFee->push($transferFee); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Services/CalculatesTransactionServiceCharge.php b/app/Classes/Modules/Transactions/Services/CalculatesTransactionServiceCharge.php index 641e3903..8ddb80c9 100644 --- a/app/Classes/Modules/Transactions/Services/CalculatesTransactionServiceCharge.php +++ b/app/Classes/Modules/Transactions/Services/CalculatesTransactionServiceCharge.php @@ -12,7 +12,7 @@ class CalculatesTransactionServiceCharge * @param float $transfer_fee * @return float */ - public function execute(float $amount, float $rate, ?float $service_charge = 0.75, ?float $transfer_fee = 0.00) { + public function execute(float $amount, float $rate, ?float $service_charge = 0, ?float $transfer_fee = 0.00) { return (($amount + $transfer_fee) * (1/$rate)) * $service_charge / 100; } diff --git a/app/Classes/Modules/Transactions/Services/CalculatesTransactionTransferFee.php b/app/Classes/Modules/Transactions/Services/CalculatesTransactionTransferFee.php index 14f77b84..b5feb245 100644 --- a/app/Classes/Modules/Transactions/Services/CalculatesTransactionTransferFee.php +++ b/app/Classes/Modules/Transactions/Services/CalculatesTransactionTransferFee.php @@ -10,8 +10,8 @@ class CalculatesTransactionTransferFee * @param float $transfer_fee * @return float */ - public function execute(float $amount, ?float $transfer_fee = 0.002) { - return $amount * $transfer_fee/100; + public function execute(float $amount, ?float $transfer_fee = 0) { + return $amount * ($transfer_fee / 100); } } \ No newline at end of file diff --git a/app/Classes/ValueObjects/Constants/BankAccountType.php b/app/Classes/ValueObjects/Constants/BankAccountType.php index 13a36fde..c1ae288e 100644 --- a/app/Classes/ValueObjects/Constants/BankAccountType.php +++ b/app/Classes/ValueObjects/Constants/BankAccountType.php @@ -8,4 +8,6 @@ final class BankAccountType { public const EXTERNAL = 2; + public const ALIPAY= 3; + } diff --git a/app/Http/Controllers/Transactions/DownloadMockUpWhiteFormPdfController.php b/app/Http/Controllers/Transactions/DownloadMockUpWhiteFormPdfController.php index 10267363..e94c9484 100644 --- a/app/Http/Controllers/Transactions/DownloadMockUpWhiteFormPdfController.php +++ b/app/Http/Controllers/Transactions/DownloadMockUpWhiteFormPdfController.php @@ -9,7 +9,7 @@ use Illuminate\Http\JsonResponse; class DownloadMockUpWhiteFormPdfController { - public function download(Request $request, DownloadMockUpWhiteFormPdfLogic $logic) : JsonResponse { + public function download(Request $request, DownloadMockUpWhiteFormPdfLogic $logic) { return $logic->execute($request); } } diff --git a/app/Http/Resources/CompanyResource.php b/app/Http/Resources/CompanyResource.php index 929432e3..fceab5bc 100644 --- a/app/Http/Resources/CompanyResource.php +++ b/app/Http/Resources/CompanyResource.php @@ -30,6 +30,9 @@ class CompanyResource extends JsonResource $lastPayment = $this->transactions()->where('transactions.type', TransactionType::PAYMENT)->whereIn('transactions.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->orderBy('id', 'DESC')->first(); $totalPayments = $this->transactions()->where('transactions.type', TransactionType::PAYMENT)->whereIn('transactions.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount'); + $segment = SegmentConstant::where('reference', SegmentConstants::SUPPLIER_CURRENCIES)->where('detail->id', $this->id)->first(); + $serviceCharge = SegmentConstant::where('reference', SegmentConstants::SERVICE_CHARGE)->where('detail->id', $this->id)->first(); + return [ 'id' => $this->id, 'name' => $this->name, @@ -57,14 +60,14 @@ class CompanyResource extends JsonResource 'default' => new BankResource($this->banks->where('type', BankAccountType::EXTERNAL)->where('default', true)->first()) ], 'segments' => SegmentResource::collection($this->segments), - 'service_charges' => SegmentConstant::where('reference', SegmentConstants::SERVICE_CHARGE)->where('detail->id', $this->id)->first(), 'services' => (new FetchesCompanyServices())->getServices($this->servicesConfigurations()), - 'currencies' => $this->when($this->business_type === BusinessType::CURRENCY_VENDOR, function(){ - $segment = SegmentConstant::where('reference', SegmentConstants::SUPPLIER_CURRENCIES)->where('detail->id', $this->id)->first(); - return $segment ? CurrencyResource::collection(Currency::whereIn('id', $segment->detail->currencies)->get()) : []; - }), 'wallet' => new WalletResource($this->wallets()->first()), - 'created_at' => $this->created_at->format('d-m-Y') + 'created_at' => $this->created_at->format('d-m-Y'), + $this->mergeWhen($this->business_type === BusinessType::CURRENCY_VENDOR, [ + 'currencies' => $segment ? CurrencyResource::collection(Currency::whereIn('id', $segment->detail->currencies)->get()) : [], + 'service_charge' => $serviceCharge + ]) + ]; } } diff --git a/app/Http/Resources/TransactionResource.php b/app/Http/Resources/TransactionResource.php index 35c29908..b7ca2f72 100644 --- a/app/Http/Resources/TransactionResource.php +++ b/app/Http/Resources/TransactionResource.php @@ -18,7 +18,7 @@ class TransactionResource extends JsonResource { $booking = (int)$this->type === TransactionType::BILL ? $this->owner->owner : $this->booking; - $days = $this->updated_at->endOfDay()->addWeekdays($booking->service_id === 1 ? 1 : 3); + $days = $this->updated_at->endOfDay()->addWeekdays($booking->service_id === 3 ? 3 : 1); return [ 'id' => $this->id, diff --git a/resources/assets/vue/components/banks/forms/BankAccountFormComponent.vue b/resources/assets/vue/components/banks/forms/BankAccountFormComponent.vue index 7e529be8..4b4d0d6c 100644 --- a/resources/assets/vue/components/banks/forms/BankAccountFormComponent.vue +++ b/resources/assets/vue/components/banks/forms/BankAccountFormComponent.vue @@ -33,13 +33,13 @@