transaction detail over weight

This commit is contained in:
glovetleong
2022-03-18 20:46:40 +08:00
parent 9a1562386f
commit 19c8f1e658
4 changed files with 39 additions and 15 deletions
@@ -20,6 +20,8 @@ use App\Classes\ValueObjects\Constants\TransactionType;
use App\Classes\ValueObjects\Constants\PaymentMethodType;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\DocumentType;
use App\Classes\ValueObjects\Constants\PackageType;
use App\Classes\ValueObjects\Constants\TransactionDetailType;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -86,7 +88,11 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic
{
$packing_list = $this->fetchesPackingList->execute(['id' => $request->input('packing_list_id')]);
$cbm = $packing_list->packages->sum(function($package) {
$cbm = $packing_list->packages->where('type', '!=', PackageType::OVER_WEIGHT)->sum(function($package) {
return ($package->width / 100) * ($package->height / 100) *($package->length / 100) * ($package->quantity);
});
$over_weight_cbm = $packing_list->packages->where('type', PackageType::OVER_WEIGHT)->sum(function($package) {
return ($package->width / 100) * ($package->height / 100) *($package->length / 100) * ($package->quantity);
});
@@ -143,7 +149,7 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic
}
$price_cbm = $base_price + $warehouse_rate + $state_rate;
$total_cbm = $price_cbm * $cbm;
$total_cbm = $price_cbm * ($cbm + $over_weight_cbm);
$billNumber = $this->generatesTransactionBillNumber->execute('SHIP-');
@@ -168,13 +174,22 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic
$invoice_transaction = $this->createsTransaction->execute($packing_list, $object);
$object_detail = new TransactionDetailObject(
$invoice_transaction->bill_no,
$invoice_transaction->bill_no,
1,
$invoice_transaction->amount,
$invoice_transaction->amount
TransactionDetailType::SHIPPING_FEE,
TransactionDetailType::SHIPPING_FEE,
$cbm,
$price_cbm
);
$transaction_detail = $this->createsTransactionDetail->execute($invoice_transaction, $object_detail);
if ($over_weight_cbm > 0) {
$object_detail = new TransactionDetailObject(
TransactionDetailType::OVERWIEGHT_CHARGES,
TransactionDetailType::OVERWIEGHT_CHARGES,
$over_weight_cbm,
$price_cbm
);
$transaction_detail = $this->createsTransactionDetail->execute($invoice_transaction, $object_detail);
}
$transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]);
@@ -185,11 +200,10 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic
ApprovalStatus::COMPLETED,
'shipping_invoice'
);
/** @var Document $document */
$document = $this->createsDocument->execute($invoice_transaction, $document_object);
$this->createsFile->execute($document, $document_object);
// dd('yess');
return $this->response([]);
}
}
@@ -12,7 +12,7 @@ class TransactionDetailObject implements DataTransferObject
/** @var string|null */
private $name;
/** @var int|null */
/** @var float|null */
private $quantity;
/** @var float|null */
@@ -22,10 +22,10 @@ class TransactionDetailObject implements DataTransferObject
* TransactionDetailObject constructor.
* @param string $reference
* @param string $name
* @param int $quantity
* @param float $quantity
* @param float $price
*/
public function __construct(?string $reference, ?string $name , ?int $quantity, ?float $price)
public function __construct(?string $reference, ?string $name , ?float $quantity, ?float $price)
{
$this->reference = $reference;
$this->name = $name;
@@ -50,9 +50,9 @@ class TransactionDetailObject implements DataTransferObject
}
/**
* @return int
* @return float
*/
public function getQuantity(): ?int
public function getQuantity(): ?float
{
return $this->quantity;
}
@@ -0,0 +1,10 @@
<?php
namespace App\Classes\ValueObjects\Constants;
final class TransactionDetailType {
public const SHIPPING_FEE = 'SHIPPING_FEE';
public const OVERWIEGHT_CHARGES = 'OVERWIEGHT_CHARGES';
}
@@ -18,7 +18,7 @@ class CreateTransactionDetailsTable extends Migration
$table->foreignId('transaction_id')->unsigned();
$table->string('reference');
$table->string('name');
$table->integer('quantity')->default(0);
$table->decimal('quantity', 25, 5)->default(0.00);
$table->decimal('price', 25, 5)->default(0.00);
$table->decimal('amount', 25, 5)->default(0.00);
$table->softDeletes();