<%= render DS::Dialog.new(variant: "drawer") do |dialog| %> <% dialog.with_header do %> <%= render "transactions/header", entry: @entry %> <% end %> <% dialog.with_body do %> <% dialog.with_section(title: t(".overview"), open: true) do %>
<%= styled_form_with model: @entry, url: transaction_path(@entry), class: "space-y-2", data: { controller: "auto-submit-form" } do |f| %> <%= f.text_field :name, label: t(".name_label"), "data-auto-submit-form-target": "auto" %> <%= f.date_field :date, label: t(".date_label"), max: Date.current, disabled: @entry.linked?, "data-auto-submit-form-target": "auto" %> <% unless @entry.transaction.transfer? %>
<%= f.select :nature, [["Expense", "outflow"], ["Income", "inflow"]], { container_class: "w-1/3", label: t(".nature"), selected: @entry.amount.negative? ? "inflow" : "outflow" }, { data: { "auto-submit-form-target": "auto" }, disabled: @entry.linked? } %> <%= f.money_field :amount, label: t(".amount"), container_class: "w-2/3", auto_submit: true, min: 0, value: @entry.amount.abs, disabled: @entry.linked?, disable_currency: @entry.linked? %>
<%= f.fields_for :entryable do |ef| %> <%= ef.collection_select :category_id, Current.family.categories.alphabetically, :id, :name, { label: t(".category_label"), class: "text-subdued", include_blank: t(".uncategorized") }, "data-auto-submit-form-target": "auto" %> <% end %> <% end %> <% end %>
<% end %> <% dialog.with_section(title: t(".details")) do %>
<%= styled_form_with model: @entry, url: transaction_path(@entry), class: "space-y-2", data: { controller: "auto-submit-form" } do |f| %> <% unless @entry.transaction.transfer? %> <%= f.select :account, options_for_select( Current.family.accounts.alphabetically.pluck(:name, :id), @entry.account_id ), { label: t(".account_label") }, { disabled: true } %> <%= f.fields_for :entryable do |ef| %> <%= ef.collection_select :merchant_id, [@entry.transaction.merchant, *Current.family.merchants.alphabetically].compact, :id, :name, { include_blank: t(".none"), label: t(".merchant_label"), class: "text-subdued" }, "data-auto-submit-form-target": "auto" %> <%= ef.select :tag_ids, Current.family.tags.alphabetically.pluck(:name, :id), { include_blank: t(".none"), multiple: true, label: t(".tags_label"), container_class: "h-40" }, { "data-controller": "multi-select", "data-auto-submit-form-target": "auto" } %> <% end %> <% end %> <%= f.text_area :notes, label: t(".note_label"), placeholder: t(".note_placeholder"), rows: 5, "data-auto-submit-form-target": "auto" %> <% end %>
<% end %> <% dialog.with_section(title: t(".settings")) do %>
<%= styled_form_with model: @entry, url: transaction_path(@entry), class: "p-3", data: { controller: "auto-submit-form" } do |f| %>

Exclude

Excluded transactions will be removed from budgeting calculations and reports.

<%= f.toggle :excluded, { data: { auto_submit_form_target: "auto" } } %>
<% end %>
<%= styled_form_with model: @entry, url: transaction_path(@entry), class: "p-3", data: { controller: "auto-submit-form" } do |f| %> <%= f.fields_for :entryable do |ef| %>

One-time <%= @entry.amount.negative? ? "Income" : "Expense" %>

One-time transactions will be excluded from certain budgeting calculations and reports to help you see what's really important.

<%= ef.toggle :kind, { checked: @entry.transaction.one_time?, data: { auto_submit_form_target: "auto" } }, "one_time", "standard" %>
<% end %> <% end %>

Transfer or Debt Payment?

Transfers and payments are special types of transactions that indicate money movement between 2 accounts.

<%= render DS::Link.new( text: "Open matcher", icon: "arrow-left-right", variant: "outline", href: new_transaction_transfer_match_path(@entry), frame: :modal ) %>

<%= t(".delete_title") %>

<%= t(".delete_subtitle") %>

<%= render DS::Button.new( text: t(".delete"), variant: "outline-destructive", href: entry_path(@entry), method: :delete, confirm: CustomConfirm.for_resource_deletion("transaction"), frame: "_top" ) %>
<% end %> <% end %> <% end %>