diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php index f496ab4f..16fc76d3 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php @@ -91,6 +91,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic public function logic(Request $request) : JsonResponse { + $supplier = $this->fetchesCompany->execute(['id' => $request->route('id')]); $rate = $request->input('rate'); @@ -111,7 +112,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic $payment->original_amount * (1 / $rate), $payment->original_amount, 1, $payment->original_currency_id, $rate, 0, 0, null, ApprovalStatus::PENDING_VERIFICATION); - $transactions[] = $this->createsTransaction->execute($payment->booking, $object); + $transactions[] = $this->createsTransaction->execute($payment, $object); } if(!count($transactions)) return $this->response([]); diff --git a/app/Http/Resources/TransactionResource.php b/app/Http/Resources/TransactionResource.php index 633985cf..b75aebe1 100644 --- a/app/Http/Resources/TransactionResource.php +++ b/app/Http/Resources/TransactionResource.php @@ -35,7 +35,7 @@ class TransactionResource extends JsonResource 'status' => (int) $this->status, 'details' => TransactionDetailResource::collection($this->transactionDetails), 'documents' => new DocumentResource($this->documents()->first()), - 'customer_booking' => new TransactionResource($this->when((int) $this->type === TransactionType::BILL, $this->booking->transactions()->payments()->complete()->where('original_amount', '=', $this->original_amount)->where('id', '<', $this->id)->orderByDesc('id')->first())), + 'customer_booking' => new TransactionResource($this->when((int) $this->type === TransactionType::BILL, $this->owner)), 'expires_on' => Carbon::parse($this->expires_on)->format('d-m-Y h:i:s A'), 'updated_at' => Carbon::parse($this->updated_at)->format('d-m-Y h:i:s A') ]; diff --git a/app/Models/Booking.php b/app/Models/Booking.php index ea01b302..524e0e0c 100644 --- a/app/Models/Booking.php +++ b/app/Models/Booking.php @@ -96,8 +96,10 @@ class Booking extends AbstractModel implements Documentable, Transactionable protected static function booted() { - if (auth()->user()->type === RoleTypes::USER) { - static::addGlobalScope(new CustomerBookingsScope); + if (auth()->user()) { + if (auth()->user()->type === RoleTypes::USER) { + static::addGlobalScope(new CustomerBookingsScope); + } } } diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index a3e16c79..0428888d 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Classes\General\Interfaces\Documentable; +use App\Classes\General\Interfaces\Transactionable; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\TransactionType; use Carbon\Carbon; @@ -16,7 +17,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\MorphTo; -class Transaction extends AbstractModel implements Documentable +class Transaction extends AbstractModel implements Documentable, Transactionable { use SoftDeletes; @@ -51,6 +52,14 @@ class Transaction extends AbstractModel implements Documentable return $this->BelongsTo(Wallet::class, 'owner_id', 'id'); } + /** + * @return MorphMany + */ + public function transactions(): MorphMany + { + return $this->MorphMany(Transaction::class, 'owner'); + } + /** * @return BelongsTo */ diff --git a/database/seeds/UpdateTransactionBillOwnerSeeder.php b/database/seeds/UpdateTransactionBillOwnerSeeder.php new file mode 100644 index 00000000..4ca20454 --- /dev/null +++ b/database/seeds/UpdateTransactionBillOwnerSeeder.php @@ -0,0 +1,42 @@ +get(); + + foreach ($transaction as $key => $row) { + $booking = $row->booking()->first(); + $payment_trsanction = $row->booking()->first()->transactions()->payments()->complete()->where('original_amount', '=', $row->original_amount)->where('id', '<', $row->id)->orderByDesc('id')->first(); + + $row->owner_type = 'App\Models\Transaction'; + $row->owner_id = $payment_trsanction->id; + $row->update(); + } + + DB::commit(); + } +} diff --git a/resources/views/pages/pdfs/currency_vendor_order.blade.php b/resources/views/pages/pdfs/currency_vendor_order.blade.php index fdad834a..9ca3b7be 100644 --- a/resources/views/pages/pdfs/currency_vendor_order.blade.php +++ b/resources/views/pages/pdfs/currency_vendor_order.blade.php @@ -33,12 +33,12 @@ @foreach($transactions as $transaction) - {{$transaction->booking->marking}} - {{$transaction->booking->company->reference}} + {{$transaction->owner()->first()->booking->marking}} + {{$transaction->owner()->first()->booking->company->reference}} {{$transaction->currency_rate}} {{$transaction->currency->short_code}} {{number_format((float)$transaction->amount, 2, '.', '')}} - Account Holder Name: {{$transaction->booking->bank->holder_name}}
{{$transaction->booking->bank->bank_name}}: {{$transaction->booking->bank->account_no}} -
Branch: {{$transaction->booking->bank->bank_branch}}
Bank in Amount: {{$transaction->original_currency->short_code}} {{$transaction->original_amount}} + Account Holder Name: {{$transaction->owner()->first()->booking->bank->holder_name}}
{{$transaction->owner()->first()->booking->bank->bank_name}}: {{$transaction->owner()->first()->booking->bank->account_no}} +
Branch: {{$transaction->owner()->first()->booking->bank->bank_branch}}
Bank in Amount: {{$transaction->original_currency->short_code}} {{$transaction->original_amount}} @endforeach