fix myr fixed invoice bug

This commit is contained in:
omair saleh
2021-08-12 13:44:54 +08:00
parent bf9b4ccd6b
commit 2c0b936ea2
3 changed files with 32 additions and 8 deletions
@@ -0,0 +1,18 @@
<?php
namespace App\Classes\Modules\Bookings\Services;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Models\Booking;
use Carbon\Carbon;
class CalculatesBookingPayableAmount
{
public function execute(Booking $booking){
return $booking->transactions()->payments()->complete()->sum('original_amount');
}
}
@@ -11,10 +11,8 @@ use Carbon\Carbon;
class CalculatesBookingTransferredAmount
{
public function execute(Booking $booking, int $type){
return $type === 1 ?
$booking->transactions()->bills()->transferred()->sum('original_amount') * (1/$booking->transactions()->payments()->avg('currency_rate')) :
$booking->transactions()->bills()->transferred()->sum('original_amount');
public function execute(Booking $booking){
return $booking->transactions()->bills()->transferred()->sum('original_amount');
}
}
@@ -2,6 +2,7 @@
namespace App\Classes\Modules\Transactions\Processors;
use App\Classes\Modules\Bookings\Services\CalculatesBookingPayableAmount;
use App\Classes\Modules\Bookings\Services\CalculatesBookingTransferredAmount;
use App\Classes\Modules\ServiceTypes\Services\FetchesServiceConfigurations;
use App\Classes\Modules\Transactions\Services\ListsTransactions;
@@ -39,6 +40,9 @@ class CreateInvoiceTransactionProcessor
/** @var CalculatesBookingPaidAmount */
private $calculatesBookingPaidAmount;
/** @var CalculatesBookingPayableAmount */
private $calculatesBookingPayableAmount;
/** @var CalculatesBookingTransferredAmount */
private $calculatesBookingTransferredAmount;
@@ -66,6 +70,7 @@ class CreateInvoiceTransactionProcessor
* @param CreatesTransaction $createsTransaction
* @param GeneratesTransactionBillNumber $generatesTransactionBillNumber
* @param CalculatesBookingPaidAmount $calculatesBookingPaidAmount
* @param CalculatesBookingPayableAmount $calculatesBookingPayableAmount
* @param CalculatesBookingTransferredAmount $calculatesBookingTransferredAmount
* @param FetchesServiceConfigurations $fetchesServiceConfigurations
* @param CalculatesBookingCurrencyAverageRate $calculatesBookingCurrencyAverageRate
@@ -74,12 +79,13 @@ class CreateInvoiceTransactionProcessor
* @param CreatesFiles $createsFile
* @param UpdatesBookingStatus $updatesBookingStatus
*/
public function __construct(ListsTransactions $listsTransactions, CreatesTransaction $createsTransaction, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CalculatesBookingPaidAmount $calculatesBookingPaidAmount, CalculatesBookingTransferredAmount $calculatesBookingTransferredAmount, FetchesServiceConfigurations $fetchesServiceConfigurations, CalculatesBookingCurrencyAverageRate $calculatesBookingCurrencyAverageRate, FetchesCompany $fetchesCompany, CreatesDocument $createsDocument, CreatesFiles $createsFile, UpdatesBookingStatus $updatesBookingStatus)
public function __construct(ListsTransactions $listsTransactions, CreatesTransaction $createsTransaction, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CalculatesBookingPaidAmount $calculatesBookingPaidAmount, CalculatesBookingPayableAmount $calculatesBookingPayableAmount, CalculatesBookingTransferredAmount $calculatesBookingTransferredAmount, FetchesServiceConfigurations $fetchesServiceConfigurations, CalculatesBookingCurrencyAverageRate $calculatesBookingCurrencyAverageRate, FetchesCompany $fetchesCompany, CreatesDocument $createsDocument, CreatesFiles $createsFile, UpdatesBookingStatus $updatesBookingStatus)
{
$this->listsTransactions = $listsTransactions;
$this->createsTransaction = $createsTransaction;
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
$this->calculatesBookingPaidAmount = $calculatesBookingPaidAmount;
$this->calculatesBookingPayableAmount = $calculatesBookingPayableAmount;
$this->calculatesBookingTransferredAmount = $calculatesBookingTransferredAmount;
$this->fetchesServiceConfigurations = $fetchesServiceConfigurations;
$this->calculatesBookingCurrencyAverageRate = $calculatesBookingCurrencyAverageRate;
@@ -102,14 +108,16 @@ class CreateInvoiceTransactionProcessor
return;
}
$payment_amount = $this->calculatesBookingTransferredAmount->execute($booking, $booking->fix_currency_id);
$payment_amount = $this->calculatesBookingPaidAmount->execute($booking, $booking->fix_currency_id);
$booking_amount = $booking->fix_amount;
if(!(float) $payment_amount) {
// confirm that booking amount has been fully paid
if (!(abs(((float) $booking_amount - (float) $payment_amount)/(float) $payment_amount) < 0.009)) {
return;
}
if (!(abs(((float) $booking_amount - (float) $payment_amount)/(float) $payment_amount) < 0.009)) {
// confirm that all payments has been transferred
if($this->calculatesBookingTransferredAmount->execute($booking) !== $this->calculatesBookingPayableAmount->execute($booking)){
return;
}