Module: OrdersHelper
- Defined in:
- app/helpers/orders_helper.rb
Instance Method Summary collapse
- #article_price_change_hint(order_article, gross = false) ⇒ Object
- #options_for_suppliers_to_select ⇒ Object
-
#order_article_class(order_article) ⇒ String
CSS class for
OrderArticle
in table for admins (used
,partused
,unused
orunavailable
). -
#order_pdf(order, document, text, options = {}) ⇒ String
Link to order document.
-
#ordergroup_count(order) ⇒ String
Number of ordergroups participating in order with groups in title.
-
#pkg_helper(article, options = {}) ⇒ String
Text showing unit and unit quantity when applicable.
-
#pkg_helper_icon(c = nil, options = {}) ⇒ String
Icon used for displaying the unit quantity.
-
#receive_button(order, options = {}) ⇒ String
Button for receiving an order.
- #receive_input_field(form) ⇒ Object
-
#supplier_link(order_or_supplier) ⇒ String
Link to order or supplier, showing its name.
-
#units_history_line(order_article, options = {}) ⇒ Object
“1×2 ordered, 2×2 billed, 2×2 received”.
- #update_articles_link(order, text, view, options = {}) ⇒ Object
Instance Method Details
#article_price_change_hint(order_article, gross = false) ⇒ Object
76 77 78 79 80 81 82 |
# File 'app/helpers/orders_helper.rb', line 76 def article_price_change_hint(order_article, gross = false) return nil if order_article.article.price == order_article.price.price title = "#{t('helpers.orders.old_price')}: #{number_to_currency order_article.article.price}" title += " / #{number_to_currency order_article.article.gross_price}" if gross content_tag(:i, nil, class: 'icon-asterisk', title: j(title)).html_safe end |
#options_for_suppliers_to_select ⇒ Object
19 20 21 22 23 24 |
# File 'app/helpers/orders_helper.rb', line 19 def = [[I18n.t('helpers.orders.option_choose')]] += Supplier.map { |s| [s.name, url_for(action: 'new', supplier_id: s.id)] } += [[I18n.t('helpers.orders.option_stock'), url_for(action: 'new', supplier_id: nil)]] () end |
#order_article_class(order_article) ⇒ String
Returns CSS class for OrderArticle
in table for admins (used
, partused
, unused
or unavailable
).
131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'app/helpers/orders_helper.rb', line 131 def order_article_class(order_article) if order_article.units > 0 if order_article.missing_units == 0 'used' else 'partused' end elsif order_article.quantity > 0 'unused' else 'unavailable' end end |
#order_pdf(order, document, text, options = {}) ⇒ String
Returns Link to order document.
14 15 16 17 |
# File 'app/helpers/orders_helper.rb', line 14 def order_pdf(order, document, text, = {}) = .merge(title: I18n.t('helpers.orders.order_pdf')) link_to text, order_path(order, document: document, format: :pdf), end |
#ordergroup_count(order) ⇒ String
Returns Number of ordergroups participating in order with groups in title.
110 111 112 113 114 115 116 117 |
# File 'app/helpers/orders_helper.rb', line 110 def ordergroup_count(order) group_orders = order.group_orders.includes(:ordergroup) txt = "#{group_orders.count} #{Ordergroup.model_name.human count: group_orders.count}" return txt if group_orders.count == 0 desc = group_orders.includes(:ordergroup).map { |g| g.ordergroup_name }.join(', ') content_tag(:abbr, txt, title: desc).html_safe end |
#pkg_helper(article, options = {}) ⇒ String
Returns Text showing unit and unit quantity when applicable.
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'app/helpers/orders_helper.rb', line 50 def pkg_helper(article, = {}) return '' if !article || article.unit_quantity == 1 uq_text = "× #{article.unit_quantity}" uq_text = content_tag(:span, uq_text, class: 'hidden-phone') if [:soft_uq] if [:plain] uq_text elsif [:icon].nil? || [:icon] pkg_helper_icon(uq_text) else pkg_helper_icon(uq_text, tag: :span) end end |
#pkg_helper_icon(c = nil, options = {}) ⇒ String
Returns Icon used for displaying the unit quantity.
67 68 69 70 71 72 73 74 |
# File 'app/helpers/orders_helper.rb', line 67 def pkg_helper_icon(c = nil, = {}) = { tag: 'i', class: '' }.merge() if c.nil? c = ' '.html_safe [:class] += ' icon-only' end content_tag([:tag], c, class: "package #{[:class]}").html_safe end |
#receive_button(order, options = {}) ⇒ String
Button for receiving an order.
If the order hasn't been received before, the button is shown in green.
150 151 152 153 154 155 156 157 |
# File 'app/helpers/orders_helper.rb', line 150 def (order, = {}) if order.stockit? content_tag :div, t('orders.index.action_receive'), class: "btn disabled #{[:class]}" else link_to t('orders.index.action_receive'), receive_order_path(order), class: "btn#{' btn-success' unless order.received?} #{[:class]}" end end |
#receive_input_field(form) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'app/helpers/orders_helper.rb', line 84 def receive_input_field(form) order_article = form.object units_expected = (order_article.units_billed || order_article.units_to_order) * 1.0 * order_article.article.unit_quantity / order_article.article_price.unit_quantity input_classes = 'input input-nano units_received' input_classes += ' package' unless order_article.article_price.unit_quantity == 1 input_html = form.text_field :units_received, class: input_classes, data: { 'units-expected' => units_expected }, disabled: order_article.result_manually_changed?, autocomplete: 'off' if order_article.result_manually_changed? input_html = content_tag(:span, class: 'input-prepend intable', title: t('orders.edit_amount.field_locked_title', default: '')) do (nil, type: :button, class: 'btn unlocker') { content_tag(:i, nil, class: 'icon icon-unlock') } + input_html end end input_html.html_safe end |
#supplier_link(order_or_supplier) ⇒ String
Returns Link to order or supplier, showing its name.
121 122 123 124 125 126 127 |
# File 'app/helpers/orders_helper.rb', line 121 def supplier_link(order_or_supplier) if order_or_supplier.is_a?(Order) && order_or_supplier.stockit? link_to(order_or_supplier.name, stock_articles_path).html_safe else link_to(@order.supplier.name, supplier_path(@order.supplier)).html_safe end end |
#units_history_line(order_article, options = {}) ⇒ Object
“1×2 ordered, 2×2 billed, 2×2 received”
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/helpers/orders_helper.rb', line 27 def units_history_line(order_article, = {}) if order_article.order.open? nil else units_info = [] %i[units_to_order units_billed units_received].map do |unit| next unless n = order_article.send(unit) line = n.to_s + ' ' line += pkg_helper(order_article.price, ) + ' ' unless n == 0 line += OrderArticle.human_attribute_name("#{unit}_short", count: n) units_info << line end units_info.join(', ').html_safe end end |
#update_articles_link(order, text, view, options = {}) ⇒ Object
2 3 4 5 6 |
# File 'app/helpers/orders_helper.rb', line 2 def update_articles_link(order, text, view, = {}) = { remote: true, id: "view_#{view}_btn", class: '' }.merge() [:class] += ' active' if view.to_s == @view.to_s link_to text, order_path(order, view: view), end |