<%# locals: (entry:, income_categories:, expense_categories:) %> <%= styled_form_with model: entry, url: transactions_path, class: "space-y-4" do |f| %> <% if entry.errors.any? %> <%= render "shared/form_errors", model: entry %> <% end %>
<%= render "shared/transaction_type_tabs", active_tab: params[:nature] == "inflow" ? "income" : "expense", account_id: params[:account_id] %> <%= f.hidden_field :nature, value: params[:nature] || "outflow" %> <%= f.hidden_field :entryable_type, value: "Transaction" %>
<%= f.text_field :name, label: t(".description"), placeholder: t(".description_placeholder"), required: true %> <% if @entry.account_id %> <%= f.hidden_field :account_id %> <% else %> <%= f.collection_select :account_id, Current.family.accounts.manual.active.alphabetically, :id, :name, { prompt: t(".account_prompt"), label: t(".account") }, required: true, class: "form-field__input text-ellipsis" %> <% end %> <%= f.money_field :amount, label: t(".amount"), required: true %> <%= f.fields_for :entryable do |ef| %> <% categories = params[:nature] == "inflow" ? income_categories : expense_categories %> <%= ef.collection_select :category_id, categories, :id, :name, { prompt: t(".category_prompt"), label: t(".category") } %> <% end %> <%= f.date_field :date, label: t(".date"), required: true, min: Entry.min_supported_date, max: Date.current, value: Date.current %>
<%= render DS::Disclosure.new(title: t(".details")) do %> <%= f.fields_for :entryable do |ef| %> <%= ef.select :tag_ids, Current.family.tags.alphabetically.pluck(:name, :id), { include_blank: t(".none"), multiple: true, label: t(".tags_label") }, { "data-controller": "multi-select" } %> <% end %> <%= f.text_area :notes, label: t(".note_label"), placeholder: t(".note_placeholder"), rows: 5, "data-auto-submit-form-target": "auto" %> <% end %>
<%= f.submit t(".submit") %>
<% end %>