%= content_for :page_title, "Rules" %> <%= content_for :page_actions do %> <% if @rules.any? %> <%= render DS::Menu.new do |menu| %> <% menu.with_item( variant: "button", text: t("rules.clear_ai_cache.button"), href: clear_ai_cache_rules_path, icon: "refresh-cw", method: :post, confirm: CustomConfirm.new( title: t("rules.clear_ai_cache.confirm_title"), body: t("rules.clear_ai_cache.confirm_body"), btn_text: t("rules.clear_ai_cache.confirm_button") )) %> <% menu.with_item( variant: "button", text: "Delete all rules", href: destroy_all_rules_path, icon: "trash-2", method: :delete, confirm: CustomConfirm.for_resource_deletion("all rules", high_severity: true)) %> <% end %> <%= render DS::Link.new( text: t("rules.apply_all.button"), variant: "secondary", href: confirm_all_rules_path, icon: "play", frame: :modal ) %> <% end %> <%= render DS::Link.new( text: "New rule", variant: "primary", href: new_rule_path(resource_type: "transaction"), icon: "plus", frame: :modal ) %> <% end %> <% if self_hosted? %>
AI-enabled rule actions will cost money. Be sure to filter as narrowly as possible to avoid unnecessary costs.
Rules
·<%= @rules.count %>
No rules yet
Set up rules to perform actions to your transactions and other data on every account sync.
<%= t("rules.recent_runs.description") %>
| <%= t("rules.recent_runs.columns.date_time") %> | <%= t("rules.recent_runs.columns.execution_type") %> | <%= t("rules.recent_runs.columns.status") %> | <%= t("rules.recent_runs.columns.rule_name") %> |
<%= t("rules.recent_runs.columns.transactions_counts.queued") %>
<%= t("rules.recent_runs.columns.transactions_counts.processed") %>
<%= t("rules.recent_runs.columns.transactions_counts.modified") %>
|
|---|---|---|---|---|
| <%= run.executed_at.strftime("%b %d, %Y %I:%M %p") %> | "> <%= t("rules.recent_runs.execution_types.#{run.execution_type}") %> |
<% if run.pending? %>
<%= t("rules.recent_runs.statuses.#{run.status}") %>
<% elsif run.success? %>
<%= t("rules.recent_runs.statuses.#{run.status}") %>
<% else %>
<%= t("rules.recent_runs.statuses.#{run.status}") %>
<% end %>
<% if run.failed? && run.error_message.present? %>
<%= icon("info", size: "sm", class: "text-red-500") %>
<% end %>
|
<%= run.rule_name.presence || run.rule&.name.presence || t("rules.recent_runs.unnamed_rule") %> | <%= "#{number_with_delimiter(run.transactions_queued)} / #{number_with_delimiter(run.transactions_processed)} / #{number_with_delimiter(run.transactions_modified)}" %> |