DealerCommission表具有以下属性,其中包括: phone_id,commission_name,payment,status,differencepancy,created_at
CarrierCommission表具有以下属性,其中包括: phone_id,commissions_name,payment,created_at
我想为经销商佣金选择一系列日期,并使用相同的phone_id比较记录,以查看付款金额是否匹配。如果匹配,我想将状态更新为"付费。"如果他们不匹配,我想将状态更新为"多付"或"薪水不足。"如果carrier_commission中没有匹配的phone_id,请将状态更新为" nonpaid。"差异值会相应更新。
这一切都是由用户点击"调和"链接到"调和"经销商佣金管理员的行动
我有以下非工作代码:
# Dealer Commissions index
<%= link_to 'Reconcile', reconcile_dealer_commissions_path %>
# Dealer Commissions controller
def reconcile
DealerCommission.reconciliation
end
# Dealer Commission model
class DealerCommission < ActiveRecord::Base
belongs_to :dealer
def self.reconciliation
dealer_commissions = DealerCommission.where("created_at > Date.yesterday")
carrier_commissions = CarrierCommission.where("created_at > Date.yesterday")
dealer_commissions.find_each do |com|
if com.payment == carrier_commissions.payment
com.update(status: "Paid")
elsif com.payment < carrier_commissions.payment
com.update(status: "Underpaid")
elsif com.payment > carrier_commissions.payment
com.update(status: "Overpaid")
end
end
end
end
显然,代码并没有反映完整的要求,但我至少想让比较工作。
答案 0 :(得分:0)
我会寻找一种方法,在单个数据库查询中检索运营商和经销商佣金,使用eager_load,并使用sql片段和使用引用指定连接条件。
http://guides.rubyonrails.org/active_record_querying.html#specifying-conditions-on-the-joined-tables
应该为您提供匹配的经销商和承运商佣金实例,然后您可以进行比较并适当更新经销商佣金。