Compare commits

..

2 Commits

Author SHA1 Message Date
Dillon c1343f45a5 List customer's pending payment invoices 2022-12-24 12:35:27 +08:00
edmondlang 503bc90556 multiple payment ui 2022-12-23 16:37:06 +08:00
16 changed files with 206 additions and 174 deletions
@@ -0,0 +1,20 @@
<?php
namespace App\Classes\General\Eloquent\Filters;
use Illuminate\Database\Eloquent\Builder;
class Receiver implements Filter
{
/**
* @param Builder $builder
* @param $value
* @return Builder|mixed
*/
public static function apply(Builder $builder, $value)
{
return $builder->where('receiver', '=', $value);
}
}
@@ -0,0 +1,98 @@
<?php
namespace App\Classes\Modules\Companies\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\PackingLists\Services\ListsPackingLists;
use App\Classes\Modules\Transactions\Services\ListsTransactions;
use App\Classes\Modules\Companies\Services\FetchesCompanyModule;
use App\Classes\Modules\PackingLists\Standards\Rules\CanListPackingLists;
use App\Classes\ValueObjects\Constants\DocumentType;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Http\Resources\PackingListResource;
use App\Http\Resources\TransactionResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ListCompanyModuleInvoicesLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification(): array
{
return [
'title' => 'Retrieved Company Module Invoices',
'message' => 'You have successfully retrieved a list of Invoices'
];
}
/** @var CanListPackingLists */
private $canListPackingLists;
/** @var ListsPackingLists */
private $listsPackingLists;
/** @var FetchesCompanyModule */
private $fetchesCompanyModule;
/**
* ListCompanyModuleInvoicesLogic constructor.
* @param CanListPackingLists $canListPackingLists
* @param ListsPackingLists $listsPackingLists
* @param FetchesCompanyModule $fetchesCompanyModule
*/
public function __construct(CanListPackingLists $canListPackingLists, ListsPackingLists $listsPackingLists, ListsTransactions $listsTransactions, FetchesCompanyModule $fetchesCompanyModule)
{
$this->canListPackingLists = $canListPackingLists;
$this->listsPackingLists = $listsPackingLists;
$this->listsTransactions = $listsTransactions;
$this->fetchesCompanyModule = $fetchesCompanyModule;
}
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function logic(Request $request): JsonResponse
{
$companyModule = $this->fetchesCompanyModule->execute(['company_id' => $request->route('id')]);
$filterArray = [
"per_page" => 10,
"order_by" => (object)[
"column" => 'id',
"DESC" => true,
],
"status_in" => [2],
"receiver" => intval($companyModule->id),
"type" => TransactionType::SHIPPING_INVOICE
];
// // dd($request->route('id'));
// $this->canListPackingLists->passes();
// $query = $this->listsPackingLists->execute($filterArray);
// return $this->collectionResponse(PackingListResource::collection($query));
$query = $this->listsTransactions->execute($filterArray);
return $this->collectionResponse(TransactionResource::collection($query));
// transaction -> type shipping invoice -> invoice belongs to company id
// transaction
// order has packing_list has transaction
// inside order can find (company_module_id)
}
}
@@ -1,55 +0,0 @@
<?php
namespace App\Classes\Modules\Transactions\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Transactions\Services\FetchPayments;
use App\Classes\Modules\Transactions\Services\ListsTransactions;
use App\Http\Resources\InvoiceResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class FetchInvoiceLogic extends AbstractControllerLogic
{
/**
* ListTransactionsLogic constructor.
* @param FetchPayments $fetchPayments
*/
public function __construct(FetchPayments $fetchPayments)
{
$this->fetchPayments = $fetchPayments;
}
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Retrieved Transactions',
'message' => 'You have successfully retrieved a list of transactions'
];
}
/** @var FetchPayments */
private $fetchPayments;
public function logic(Request $request) : JsonResponse
{
$query = $this->fetchPayments->execute($this->fetchPayments->deserializeFilters($request->input('filters')));
return $this->collectionResponse(InvoiceResource::collection($query));
}
}
?>
@@ -1,31 +0,0 @@
<?php
namespace App\Classes\Modules\Transactions\Services;
use App\Models\Transaction;
use Illuminate\Database\Eloquent\Builder;
use App\Classes\General\Eloquent\AbstractListRecord;
class FetchPayments extends AbstractListRecord
{
/** @var Transaction */
private $repository;
/**
* ListsBookings constructor.
* @param Transaction $repository
*/
public function __construct(Transaction $repository)
{
$this->repository = $repository;
}
/**
* @return Builder
*/
public function getRepository(): Builder
{
return $this->repository->newQuery();
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Companies;
use App\Classes\Modules\Companies\ControllersLogic\ListCompanyModuleInvoicesLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ListCompanyModuleInvoicesController
{
/**
* @param Request $request
* @param ListCompanyModulesLogic $logic
* @return JsonResponse
*/
public function list(Request $request, ListCompanyModuleInvoicesLogic $logic): JsonResponse {
return $logic->execute($request);
}
}
@@ -1,20 +0,0 @@
<?php
namespace App\Http\Controllers\Orders;
use App\Classes\Modules\Orders\ControllersLogic\FetchOrderLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class FetchMultipleOrderController
{
/**
* @param Request $request
* @param FetchOrderLogic $logic
* @return JsonResponse
*/
public function fetch(Request $request, FetchOrderLogic $logic): JsonResponse
{
return $logic->execute($request);
}
}
@@ -1,32 +0,0 @@
<?php
namespace App\Http\Controllers\Transactions;
use App\Classes\Modules\Transactions\ControllersLogic\FetchInvoiceLogic;
use App\Classes\Modules\Transactions\ControllersLogic\ListTransactionsLogic;
use App\Http\Controllers\Controller;
use App\Http\Resources\InvoiceResource;
use App\Models\Order;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class FetchInvoiceController extends Controller
{
public function list(Request $request)
{
try{
return InvoiceResource::collection(Order::Paginate(10,['*'],'page',2));
}catch(\Exception $ex) {
return response()->json(['error' => [$ex->getMessage()]],404);
}
}
/**
* @param Request $request
* @param FetchInvoiceLogic $logic
* @return JsonResponse
*/
public function fetch(Request $request, FetchInvoiceLogic $logic) : JsonResponse {
return $logic->execute($request);
}
}
-28
View File
@@ -1,28 +0,0 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class InvoiceResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'invoice_id' => $this->reference,
'carrier_tracking_number' => '1zbr06tw403742920',
'this_package_was_delivered' => '1zbr06tw403742920',
'due_date' => '11.04.2021',
'date_paid' => '21.01.2021',
'outstanding' => 92.01
];
}
}
@@ -0,0 +1,50 @@
<template>
<div class="row" v-if="company">
<div class="col">
<p>{{ company }}</p>
</div>
</div>
</template>
<script>
export default {
props: {
company_id: {
type: Number,
required: true,
}
},
data(){
return {
section: 'customerPaymentBillingSectionComponent',
isLoading: true,
company: null
}
},
computed: {
pendingQueue () {
return this.$store.getters.isInCompleteQueue(this.section);
}
},
watch: {
pendingQueue(inComplete){
if(inComplete){
this.fetchInvoice();
}
}
},
created(){
this.$store.dispatch('updateListQueue', {'name': this.section});
},
methods: {
fetchInvoice(){
this.isLoading = true;
this.submit(route('api.company.invoice.list', this.company_id), 'get', this.section, false, false)
},
successHandler(response){
this.$store.dispatch('completeList', {'name': this.section, 'data': []});
this.isLoading = false;
this.company = response.payload.data;
}
}
}
</script>
@@ -53,7 +53,7 @@
</div>
<div class="row text-center justify-content-center">
<div class="col-8">
<p class="m-b-0 text-danger m-t-15" v-if="parameters.warehouse_id === 3">疫情因管控松动飙升其中几位仓库人员也不幸感染整个操作可能会受到影响我们会尽快跟进并恢复<br>The pandemic spread due to the loosening of movement controls. Some warehouse employees were unfortunately infected and the entire operation may be disrupted. We will do our best to follow up and revert as soon as possible.</p>
<p class="m-b-0 text-danger m-t-15" v-if="parameters.warehouse_id === 3">近期由于船期的安排和马来西亚海关的运作等一些不可控因数导致船期延迟请大家提前做好采购安排若有不便之处敬请谅解 <br>Due to inevitable circumstances, shipping arrangements and Malaysia custom clearance may have delays. Kindly plan your purchases in advance, thank you for your cooperation.</p>
<p class="m-b-0 text-danger m-t-15" v-if="false">由于义乌船期不稳定建议发广州仓库<br>Due to unexpected shipping delays for Yiwu warehouse, you may select an alternative warehouse.</p>
<p class="m-b-0 text-danger m-t-15" v-if="parameters.warehouse_id === 4">由于义乌船期不稳定建议发广州仓库<br>Due to unexpected shipping delays for Yiwu warehouse, you may select an alternative warehouse.</p>
</div>
@@ -0,0 +1,4 @@
@extends('layouts.base_portal')
@section('inner_content')
<customer-payment-billing-section-component :company_id={{$id}}></customer-payment-billing-section-component>
@endsection
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -24,12 +24,12 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function
require __DIR__ . '/delivery.php';
Route::group([/*'middleware' => 'valid.token'*/], function () {
Route::group(['middleware' => 'valid.token'], function () {
Route::get('/storage/{fileName}/fetch', 'Documents\RenderDocumentController@fileStorageServe')->where(['fileName' => '.*'])->name('storage.document.file');
Route::post('online_payment/callback', 'Billplz\CallbackBillplzController@callback')->name('online_payment.callback');
Route::post('/import/update-debtor/f614e339d7058904a831aad742e24d55', 'Imports\ImportUpdateDebtorController@import')->name('debtor.import');
require __DIR__ . '/company.php';
+2
View File
@@ -33,4 +33,6 @@ Route::group(['prefix' => 'company', 'as' => 'company.', 'namespace' => 'Compani
});
Route::get('/module/list', 'ListCompanyModulesController@list')->name('module.list');
Route::get('/{id}/invoice/list', 'ListCompanyModuleInvoicesController@list')->name('invoice.list');
});
-2
View File
@@ -1,6 +1,5 @@
<?php
use App\Http\Controllers\Transactions\FetchInvoiceController;
use Illuminate\Support\Facades\Route;
Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], function () {
@@ -19,5 +18,4 @@ Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], f
Route::put('/assign-remark/{id}', 'AssignOrderRemarkController@create')->name('assign.remark');
Route::get('/{id}/shipping-cost', 'ShippingCostController@calculate')->name('shipping.cost');
Route::get('/payments_billings' , [FetchInvoiceController::class,'fetch'])->name('shipping.invoice');
});
+8 -2
View File
@@ -160,6 +160,12 @@ Route::get('/customer/{marking}/details', function ($marking) {
return view('pages.customers.profile_details', ['id' => $id]);
})->name('customer.profile.details');
Route::get('/customer/{marking}/payment-and-billing', function ($marking) {
$connection = CompanyConnection::where('invitee_reference', $marking)->first();
$id = $connection->invitee->company->id;
return view('pages.customers.paymentsBilling', ['id' => $id]);
})->name('customer.payment-and-billing');
Route::get('/orders/refresh', function(\Illuminate\Http\Request $request){
$packingLists = \App\Models\PackingList::where('type', \App\Classes\ValueObjects\Constants\PackingListType::WAREHOUSE_RECEIVE_LIST)->has('containers')->get();
dd($packingLists);
@@ -198,9 +204,9 @@ Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download
Route::get('/report/customclearance/{orderid}', 'Reports\CustomcClearanceReportController@download')->name('report.customclearance');
Route::group(['prefix' => 'template', 'as' => 'template.'], function () {
Route::get('/payments-and-billing', function () {
Route::get('/payment-and-billing', function () {
return view('pages.templates.paymentsBilling');
})->name('payments-and-billing');
})->name('payment-and-billing');
Route::get('/shipping-queue', function () {
return view('pages.templates.shippingQueue');