diff --git a/app/models/sale.rb b/app/models/sale.rb index 849d8c8a..1a032e1d 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -1424,7 +1424,7 @@ end def get_cash_amount self.sale_payments.where(payment_method: 'cash', payment_status: 'paid') - .pluck(:payment_amount).reduce(:+) + .pluck(:payment_amount).reduce(0, :+) - self.amount_changed end def get_credit_amount @@ -2309,15 +2309,13 @@ private end def round_to_precision - if (self.total_amount != self.total_amount_was || self.total_discount != self.total_discount_was || self.total_tax != self.total_tax_was) - if (self.total_amount % 1 > 0 || self.total_discount % 1 > 0 || self.total_tax % 1 > 0) - self.total_amount = self.total_amount.round(precision) - self.total_discount = self.total_discount.round(precision) - self.total_tax = self.total_tax.round(precision) - self.grand_total = (self.total_amount - self.total_discount) + self.total_tax - end - adjust_rounding + if (self.total_amount % 1 > 0 || self.total_discount % 1 > 0 || self.total_tax % 1 > 0) + self.total_amount = self.total_amount.round(precision) + self.total_discount = self.total_discount.round(precision) + self.total_tax = self.total_tax.round(precision) + self.grand_total = (self.total_amount - self.total_discount) + self.total_tax end + adjust_rounding end def update_stock_journal diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index a33b0db9..ee89704a 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -81,7 +81,7 @@ class SalePayment < ApplicationRecord amount_due = invoice.sale_payments .map(&:payment_amount).reduce(invoice.grand_total, :-) end - + if amount_due > 0 payment_status = false membership_data = nil @@ -374,7 +374,7 @@ class SalePayment < ApplicationRecord private def cash_payment(payment_for=false) - + sale_payments_data = SalePayment.find_by_sale_id(self.sale_id) payment_status = false @@ -391,7 +391,7 @@ class SalePayment < ApplicationRecord payment_status = self.save! if !payment_for sale_update_payment_status(self.received_amount) - else + else update_shift_for_credit_payment() end @@ -636,6 +636,9 @@ class SalePayment < ApplicationRecord def sale_update_payment_status(paid_amount, check_foc = false) #update amount_outstanding + if ['completed'].include? sale.sale_status + return + end sale = self.sale sale_payments = sale.sale_payments.reload