'integer', 'return_quantity' => 'integer', 'unit_price' => 'decimal:2', 'discount_percentage' => 'decimal:2', 'discount_amount' => 'decimal:2', 'tax_percentage' => 'decimal:2', 'tax_amount' => 'decimal:2', 'total_amount' => 'decimal:2' ]; public function salesReturn(): BelongsTo { return $this->belongsTo(SalesInvoiceReturn::class, 'return_id'); } public function product(): BelongsTo { return $this->belongsTo(ProductServiceItem::class, 'product_id'); } public function taxes(): HasMany { return $this->hasMany(SalesInvoiceReturnItemTax::class, 'item_id'); } public function originalInvoiceItem(): BelongsTo { return $this->belongsTo(SalesInvoiceItem::class, 'original_invoice_item_id'); } public function calculateAmounts() { $lineTotal = $this->return_quantity * $this->unit_price; $this->discount_amount = ($lineTotal * $this->discount_percentage) / 100; $afterDiscount = $lineTotal - $this->discount_amount; $this->tax_amount = ($afterDiscount * $this->tax_percentage) / 100; $this->total_amount = $afterDiscount + $this->tax_amount; } protected static function boot() { parent::boot(); static::saving(function ($item) { $item->calculateAmounts(); }); } }