Merge branch 'implement-new-logic-for-ledger-update' into 'master'
Change MoneyMove model See merge request saburly/gangsta/roraccounting!2
This commit was merged in pull request #2.
This commit is contained in:
@@ -4,19 +4,20 @@ class MoneyMovesController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
money_move = MoneyMove.create_move(money_move_params)
|
money_move = MoneyMove.create_move(money_move_params)
|
||||||
if money_move.save
|
|
||||||
json_response(money_move)
|
if money_move
|
||||||
else
|
json_response(money_move)
|
||||||
error_response(:bad_request)
|
else
|
||||||
end
|
error_response(:bad_request)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def money_move_params
|
def money_move_params
|
||||||
params.require(:money_move).permit(
|
params.require(:money_move).permit(
|
||||||
:description,
|
:description,
|
||||||
:amount,
|
:amount,
|
||||||
:from_homie_id,
|
:from_homie_id,
|
||||||
:to_homie_id
|
:to_homie_id
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,25 +1,54 @@
|
|||||||
class MoneyMove < ApplicationRecord
|
class MoneyMove < ApplicationRecord
|
||||||
belongs_to :homie
|
belongs_to :homie
|
||||||
|
|
||||||
def create_move(params)
|
def self.create_move(params)
|
||||||
common_params = { description: params[:description] }
|
return false unless valid_money_move?(params)
|
||||||
|
|
||||||
move_from = MoneyMove.new(
|
move_from = create_move_from(params) if double_money_move?(params)
|
||||||
common_params + {
|
move_to = create_move_to(params)
|
||||||
homie_id: params[:from_homie_id],
|
|
||||||
amount: -BigDecimal.new(params[:amount])
|
|
||||||
}
|
|
||||||
)
|
|
||||||
move_to = MoneyMove.new(
|
|
||||||
common_params + {
|
|
||||||
homie_id: params[:from_homie_id],
|
|
||||||
amount: BigDecimal.new(params[:amount])
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
MoneyMove.transaction do
|
MoneyMove.transaction do
|
||||||
move_from.save!
|
move_from.save! if move_from.present?
|
||||||
move_to.save!
|
move_to.save!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class << self
|
||||||
|
private
|
||||||
|
|
||||||
|
def valid_money_move?(params)
|
||||||
|
params[:amount].present? && params[:to_homie_id].present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def double_money_move?(params)
|
||||||
|
params[:from_homie_id].present? && params[:to_homie_id].present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def from_source_name(params)
|
||||||
|
if double_money_move?(params)
|
||||||
|
Homie.find(params[:from_homie_id]).name
|
||||||
|
else
|
||||||
|
'External'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_move_from(params)
|
||||||
|
to_homie_name = Homie.find(params[:to_homie_id]).name
|
||||||
|
new_desc = "[#{to_homie_name}] #{params[:description]}".lstrip
|
||||||
|
MoneyMove.new(
|
||||||
|
homie_id: params[:from_homie_id],
|
||||||
|
amount: -params[:amount].to_d,
|
||||||
|
description: new_desc
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_move_to(params)
|
||||||
|
new_desc = "[#{from_source_name(params)}] #{params[:description]}".lstrip
|
||||||
|
MoneyMove.new(
|
||||||
|
homie_id: params[:to_homie_id],
|
||||||
|
amount: params[:amount].to_d,
|
||||||
|
description: new_desc
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user