From da96c57c8c484af06fac501cf511e916774e3a05 Mon Sep 17 00:00:00 2001 From: phyusin Date: Tue, 18 Dec 2018 16:05:36 +0630 Subject: [PATCH] change rebate calculation formula --- app/models/sale_audit.rb | 27 ++++++++++++++++----------- app/models/sale_payment.rb | 33 +++++++++++++++++++++++---------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/app/models/sale_audit.rb b/app/models/sale_audit.rb index 33be29f1..97dbe01c 100755 --- a/app/models/sale_audit.rb +++ b/app/models/sale_audit.rb @@ -101,20 +101,25 @@ class SaleAudit < ApplicationRecord end def self.paymal_search(sale_id) + amount = nil paymal = SaleAudit.where("sale_id =? and action = 'PAYMAL'",sale_id) - remark = paymal[0].remark.split("}") - response = "["+remark[0]+'}]' - response = JSON.parse(response) - puts response - if response[0]["status"] == true - if response[0]["current_rebate_amount"].present? - amount = response[0]["current_rebate_amount"] + if !paymal.nil? + if paymal[0] + remark = paymal[0].remark.split("}") + response = "["+remark[0]+'}]' + response = JSON.parse(response) + puts response + if response[0]["status"] == true + if response[0]["current_rebate_amount"].present? + amount = response[0]["current_rebate_amount"] + else + amount = response[0]["current_balance_amount"] + end else - amount = response[0]["current_balance_amount"] + amount = nil end - else - amount = nil - end + end + end return amount end diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 6a94e156..a5f9d4fc 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -728,6 +728,7 @@ class SalePayment < ApplicationRecord def rebat(sObj) rebate_prices,campaign_method = SaleItem.calculate_rebate_by_account(sObj.sale_items) generic_customer_id = sObj.customer.membership_id + if generic_customer_id.present? paypar = sObj.sale_payments @@ -780,28 +781,38 @@ class SalePayment < ApplicationRecord total_percentage = 0 type_arr = [] - Rails.logger.debug "Get Member Campaign" + Rails.logger.debug "-------------Get Member Campaign--------------" Rails.logger.debug response.to_json # Check for present response fields if response["membership_campaign_data"].present? response["membership_campaign_data"].each do |a| - data = {:type => a["rules_type"], :percentage => a["change_unit"].to_i * a["base_unit"].to_i} - total_percentage = total_percentage + a["change_unit"].to_i * a["base_unit"].to_i - - type_arr.push(data) + campaign_method.each do |cm| + if cm[:type].downcase.strip == a["rules_type"].downcase.strip + if cm[:amount] > 0 + data = {:type => a["rules_type"], :percentage => a["change_unit"].to_i * a["base_unit"].to_i} + total_percentage = total_percentage + a["change_unit"].to_i * a["base_unit"].to_i + + type_arr.push(data) + end + end + end end end + Rails.logger.debug "--------------Get Member Campaign Data----------" + Rails.logger.debug type_arr.to_json + rebate_arr =[] + campaign_method.each do |a| data = {:type => a[:type], :amount => a[:amount]} type_arr.each do |si| - if si[:type] == a[:type] + if (si[:type] == a[:type]) && (a[:amount] > 0) if credit == 1 data[:amount] = 0 else - amount = (redeem_amount / total_percentage)*si[:percentage] - actual = a[:amount] - amount + amount = (redeem_amount / total_percentage).to_f * si[:percentage] + actual = a[:amount].to_f - amount.to_f data[:amount] = actual end @@ -809,9 +820,11 @@ class SalePayment < ApplicationRecord end rebate_arr.push(data) end - Rails.logger.debug "Rebage Response" - Rails.logger.debug rebate_arr.to_json + Rails.logger.debug "---------------Rebate Response----------------" + Rails.logger.debug rebate_arr.to_json + total_amount = rebate_prices - payparcost - overall_dis + Rails.logger.debug total_amount if credit == 1 total_amount = 0