mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-27 17:19:39 +02:00
Enable updating Account::Entry#amount (#942)
- Enable updating transaction type income/expense - Enable updating transaction amount
This commit is contained in:
parent
3089e3c81d
commit
f1d0a62ac7
3 changed files with 27 additions and 1 deletions
|
@ -40,7 +40,9 @@ class Account::EntriesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@entry.update! entry_params
|
@entry.assign_attributes entry_params
|
||||||
|
@entry.amount = amount if nature.present?
|
||||||
|
@entry.save!
|
||||||
@entry.sync_account_later
|
@entry.sync_account_later
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
@ -84,6 +86,18 @@ class Account::EntriesController < ApplicationController
|
||||||
.permit(:name, :date, :amount, :currency, :entryable_type, entryable_attributes: permitted_entryable_attributes)
|
.permit(:name, :date, :amount, :currency, :entryable_type, entryable_attributes: permitted_entryable_attributes)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def amount
|
||||||
|
if nature.income?
|
||||||
|
entry_params[:amount].to_d.abs * -1
|
||||||
|
else
|
||||||
|
entry_params[:amount].to_d.abs
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def nature
|
||||||
|
params[:account_entry][:nature].to_s.inquiry
|
||||||
|
end
|
||||||
|
|
||||||
# entryable_type is required here because Rails expects both of these params in this exact order (potential upstream bug)
|
# entryable_type is required here because Rails expects both of these params in this exact order (potential upstream bug)
|
||||||
def entry_params_with_defaults(params)
|
def entry_params_with_defaults(params)
|
||||||
params.with_defaults(entryable_type: params[:entryable_type], entryable_attributes: {})
|
params.with_defaults(entryable_type: params[:entryable_type], entryable_attributes: {})
|
||||||
|
|
|
@ -30,6 +30,16 @@
|
||||||
<%= form_with model: [account, entry], url: account_entry_path(account, entry), html: { data: { controller: "auto-submit-form" } } do |f| %>
|
<%= form_with model: [account, entry], url: account_entry_path(account, entry), html: { data: { controller: "auto-submit-form" } } do |f| %>
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<%= f.text_field :name, label: t(".name_label"), "data-auto-submit-form-target": "auto" %>
|
<%= f.text_field :name, label: t(".name_label"), "data-auto-submit-form-target": "auto" %>
|
||||||
|
<% unless entry.marked_as_transfer? %>
|
||||||
|
<div class="flex space-x-2">
|
||||||
|
<div>
|
||||||
|
<%= f.select :nature, [["Expense", "expense"], ["Income", "income"]], { label: t(".nature"), selected: entry.amount.negative? ? "income" : "expense" }, "data-auto-submit-form-target": "auto" %>
|
||||||
|
</div>
|
||||||
|
<div class="flex-grow">
|
||||||
|
<%= f.number_field :amount, value: entry.amount.abs, label: t(".amount"), step: "0.01", "data-auto-submit-form-target": "auto", "data-autosubmit-trigger-event": "change" %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
<%= f.date_field :date, label: t(".date_label"), max: Date.current, "data-auto-submit-form-target": "auto" %>
|
<%= f.date_field :date, label: t(".date_label"), max: Date.current, "data-auto-submit-form-target": "auto" %>
|
||||||
|
|
||||||
<%= f.fields_for :entryable do |ef| %>
|
<%= f.fields_for :entryable do |ef| %>
|
||||||
|
|
|
@ -15,6 +15,7 @@ en:
|
||||||
account_label: Account
|
account_label: Account
|
||||||
account_placeholder: Select an account
|
account_placeholder: Select an account
|
||||||
additional: Additional
|
additional: Additional
|
||||||
|
amount: Amount
|
||||||
category_label: Category
|
category_label: Category
|
||||||
category_placeholder: Select a category
|
category_placeholder: Select a category
|
||||||
date_label: Date
|
date_label: Date
|
||||||
|
@ -28,6 +29,7 @@ en:
|
||||||
merchant_label: Merchant
|
merchant_label: Merchant
|
||||||
merchant_placeholder: Select a merchant
|
merchant_placeholder: Select a merchant
|
||||||
name_label: Name
|
name_label: Name
|
||||||
|
nature: Transaction type
|
||||||
note_label: Notes
|
note_label: Notes
|
||||||
note_placeholder: Enter a note
|
note_placeholder: Enter a note
|
||||||
overview: Overview
|
overview: Overview
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue