mirror of
https://github.com/rickbarrette/redmine_qbo_lineitems.git
synced 2026-04-03 15:41:58 -04:00
Updated views for items and accounts
This commit is contained in:
@@ -1,76 +1,47 @@
|
||||
<%= form_with model: @item, local: true do |f| %>
|
||||
<%= labelled_form_for @item do |f| %>
|
||||
<%= error_messages_for 'item' %>
|
||||
|
||||
<% if @item.errors.any? %>
|
||||
<div id="errorExplanation" style="border: 1px solid #f00; padding: 10px; background-color: #fee; margin-bottom: 1em;">
|
||||
<h2 style="color: #900;"><%= pluralize(@item.errors.count, "error") %> prohibited this item from being saved:</h2>
|
||||
<ul>
|
||||
<% @item.errors.full_messages.each do |msg| %>
|
||||
<li><%= msg %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="box tabular">
|
||||
<p>
|
||||
<%= f.text_field :name, required: true, size: 60 %>
|
||||
</p>
|
||||
|
||||
<table style="width: 100%; border-collapse: collapse;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 8px; vertical-align: top;"><%= f.label :name %></td>
|
||||
<td style="padding: 8px;"><%= f.text_field :name, required: true, style: "width: 100%;" %></td>
|
||||
</tr>
|
||||
<p>
|
||||
<%= f.text_field :sku, size: 30 %>
|
||||
</p>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 8px; vertical-align: top;"><%= f.label :sku %></td>
|
||||
<td style="padding: 8px;"><%= f.text_field :sku, style: "width: 100%;" %></td>
|
||||
</tr>
|
||||
<p>
|
||||
<%= f.text_area :description, rows: 4, class: 'wiki-edit' %>
|
||||
</p>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 8px; vertical-align: top;"><%= f.label :description %></td>
|
||||
<td style="padding: 8px;"><%= f.text_area :description, rows: 3, style: "width: 100%;" %></td>
|
||||
</tr>
|
||||
<p>
|
||||
<%= f.number_field :unit_price, step: 0.01, size: 10 %>
|
||||
</p>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 8px; vertical-align: top;"><%= f.label :unit_price %></td>
|
||||
<td style="padding: 8px;"><%= f.number_field :unit_price, step: 0.01, style: "width: 100%;" %></td>
|
||||
</tr>
|
||||
<p>
|
||||
<%= f.check_box :taxable %>
|
||||
</p>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 8px; vertical-align: middle;"><%= f.label :taxable %></td>
|
||||
<td style="padding: 8px; vertical-align: middle;">
|
||||
<%= f.check_box :taxable %>
|
||||
</td>
|
||||
</tr>
|
||||
<p>
|
||||
<%= f.label :account_id, l(:label_account) %>
|
||||
<%= f.collection_select :account_id,
|
||||
Account.where(classification: 'Revenue').order(:name),
|
||||
:id,
|
||||
:name,
|
||||
{ selected: @item.account_id || Account.get_default&.id, include_blank: true } %>
|
||||
</p>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 8px; vertical-align: top;"><%= f.label :account %></td>
|
||||
<td style="padding: 8px;">
|
||||
<%= f.collection_select :account_id,
|
||||
Account.where(classification: 'Revenue').order(:name),
|
||||
:id,
|
||||
:name,
|
||||
{ selected: @item.account_id || Account.get_default&.id },
|
||||
{ include_blank: true, style: "width: 100%;" } %>
|
||||
</td>
|
||||
</tr>
|
||||
<p>
|
||||
<%= f.select :type,
|
||||
Quickbooks::Model::Item::ITEM_TYPES.map { |t| [t, t] },
|
||||
{ selected: @item.type || Quickbooks::Model::Item::NON_INVENTORY_TYPE } %>
|
||||
</p>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 8px; vertical-align: top;"><%= f.label :type %></td>
|
||||
<td style="padding: 8px;">
|
||||
<%= f.select :type,
|
||||
Quickbooks::Model::Item::ITEM_TYPES.map { |t| [t, t] },
|
||||
{ selected: @item.type || Quickbooks::Model::Item::NON_INVENTORY_TYPE },
|
||||
{ style: "width: 100%;" } %>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 8px; vertical-align: middle;"><%= f.label :active %></td>
|
||||
<td style="padding: 8px; vertical-align: middle;"><%= f.check_box :active %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p style="text-align: right; margin-top: 1em;">
|
||||
<%= f.submit "Save Item", style: "padding: 6px 12px; font-weight: bold;" %>
|
||||
</p>
|
||||
<p>
|
||||
<%= f.check_box :active %>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<%= submit_tag l(:button_save) %>
|
||||
<%= link_to l(:button_cancel), items_path if controller.action_name == 'edit' %>
|
||||
<% end %>
|
||||
@@ -1,37 +1,48 @@
|
||||
<h2>Items</h2>
|
||||
|
||||
<div class="contextual">
|
||||
<%= link_to "New Item", new_item_path, class: "icon icon-add" %>
|
||||
<%= link_to l(:label_item_new), new_item_path, class: 'icon icon-add' %>
|
||||
</div>
|
||||
|
||||
<table class="list items">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>SKU</th>
|
||||
<th>Description</th>
|
||||
<th>Price</th>
|
||||
<th>Active</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<h2><%= l(:label_items) %></h2>
|
||||
|
||||
<tbody>
|
||||
<% @items.each do |item| %>
|
||||
<tr>
|
||||
<td><%= link_to item.name, item_path(item) %></td>
|
||||
<td><%= item.sku %></td>
|
||||
<td><%= item.description %></td>
|
||||
<td><%= number_to_currency(item.unit_price) %></td>
|
||||
<td><%= item.active ? "Yes" : "No" %></td>
|
||||
<td>
|
||||
<%= link_to "Edit", edit_item_path(item), class: "icon icon-edit" %>
|
||||
<%= link_to "Delete", item_path(item),
|
||||
method: :delete,
|
||||
data: { confirm: "Are you sure?" },
|
||||
class: "icon icon-del" %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% if @items.any? %>
|
||||
<div class="autoscroll">
|
||||
<table class="list items">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%= l(:field_name) %></th>
|
||||
<th><%= l(:field_sku) %></th>
|
||||
<th><%= l(:field_description) %></th>
|
||||
<th><%= l(:field_unit_price) %></th>
|
||||
<th class="center"><%= l(:field_taxable) %></th>
|
||||
<th class="center"><%= l(:field_active) %></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @items.each do |item| %>
|
||||
<tr class="<%= cycle("odd", "even") %>">
|
||||
<td class="name"><%= link_to item.name, item_path(item) %></td>
|
||||
<td class="sku"><%= item.sku %></td>
|
||||
<td class="description"><%= truncate(item.description, length: 60) %></td>
|
||||
<td class="unit_price"><%= number_to_currency(item.unit_price) %></td>
|
||||
<td class="taxable center">
|
||||
<%= item.taxable ? content_tag(:span, '', class: 'icon icon-ok') : "" %>
|
||||
</td>
|
||||
<td class="active center">
|
||||
<%= checked_image item.active %>
|
||||
</td>
|
||||
<td class="buttons">
|
||||
<%= link_to l(:button_edit), edit_item_path(item), class: 'icon icon-edit' %>
|
||||
<%= link_to l(:button_delete), item_path(item),
|
||||
method: :delete,
|
||||
data: { confirm: l(:text_are_you_sure) },
|
||||
class: 'icon icon-del' %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<% else %>
|
||||
<p class="nodata"><%= l(:label_no_data) %></p>
|
||||
<% end %>
|
||||
@@ -1,35 +1,44 @@
|
||||
<h2 style="margin-bottom: 1em; border-bottom: 2px solid #ccc; padding-bottom: 4px;"><%= @item.name %></h2>
|
||||
<div class="contextual">
|
||||
<%= link_to l(:button_edit), edit_item_path(@item), class: 'icon icon-edit' %>
|
||||
<%= link_to l(:button_back), items_path, class: 'icon icon-list' %>
|
||||
</div>
|
||||
|
||||
<table style="width: 100%; border-collapse: collapse; margin-bottom: 1.5em;">
|
||||
<tbody>
|
||||
<tr style="background-color: #f9f9f9;">
|
||||
<td style="padding: 8px; font-weight: bold; width: 150px;">SKU:</td>
|
||||
<td style="padding: 8px;"><%= @item.sku.presence || "-" %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 8px; font-weight: bold;">Description:</td>
|
||||
<td style="padding: 8px;"><%= @item.description.presence || "-" %></td>
|
||||
</tr>
|
||||
<tr style="background-color: #f9f9f9;">
|
||||
<td style="padding: 8px; font-weight: bold;">Unit Price:</td>
|
||||
<td style="padding: 8px;"><%= number_to_currency(@item.unit_price) %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 8px; font-weight: bold;">Type:</td>
|
||||
<td style="padding: 8px;"><%= @item.type.presence || "-" %></td>
|
||||
</tr>
|
||||
<tr style="background-color: #f9f9f9;">
|
||||
<td style="padding: 8px; font-weight: bold;">Account:</td>
|
||||
<td style="padding: 8px;"><%= @item.account&.name || "-" %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 8px; font-weight: bold;">Active:</td>
|
||||
<td style="padding: 8px;"><%= @item.active ? "Yes" : "No" %></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2><%= t(:item) %># <%= @item.id %> <%= @item.name %></h2>
|
||||
|
||||
<div style="margin-top: 1em;">
|
||||
<%= link_to "Edit", edit_item_path(@item), class: "btn btn-primary", style: "margin-right: 8px;" %>
|
||||
<%= link_to "Back", items_path, class: "btn btn-secondary" %>
|
||||
<div class="issue details"> <div class="attributes">
|
||||
<div class="splitcontent">
|
||||
<div class="splitcontentleft">
|
||||
<p><strong>SKU:</strong> <%= @item.sku.presence || "-" %></p>
|
||||
<p><strong>Type:</strong> <%= @item.type.presence || "-" %></p>
|
||||
<p><strong>Unit Price:</strong> <%= number_to_currency(@item.unit_price) %></p>
|
||||
</div>
|
||||
|
||||
<div class="splitcontentleft">
|
||||
<p><strong>Account:</strong> <%= @item.account&.name || "-" %></p>
|
||||
<p>
|
||||
<strong>Taxable:</strong>
|
||||
<% if @item.taxable %>
|
||||
<span class="icon icon-ok" style="color: green;">Yes</span>
|
||||
<% else %>
|
||||
<span class="icon icon-not-ok" style="color: #999;">No</span>
|
||||
<% end %>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Active:</strong>
|
||||
<% if @item.active %>
|
||||
<span class="icon icon-ok" style="color: green;">Yes</span>
|
||||
<% else %>
|
||||
<span class="icon icon-not-ok" style="color: #999;">No</span>
|
||||
<% end %>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<p><strong>Description:</strong></p>
|
||||
<div class="wiki" style="padding-left: 20px;">
|
||||
<%= @item.description.presence || "<em>No description provided</em>".html_safe %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user