Allow to edit OrderArticle in Order#receive form
This commit is contained in:
parent
81dfe8110c
commit
cf1e68f11d
6 changed files with 66 additions and 3 deletions
|
@ -126,6 +126,12 @@ class OrdersController < ApplicationController
|
|||
redirect_to @order
|
||||
end
|
||||
end
|
||||
|
||||
def receive_on_order_article_update # See publish/subscribe design pattern in /doc.
|
||||
@order_article = OrderArticle.find(params[:order_article_id])
|
||||
|
||||
render :layout => false
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
|
|
|
@ -1,21 +1,28 @@
|
|||
# NOTE: if you modify tiny details here you must also change them in `receive_on_order_article_update.js.erb`
|
||||
= fields_for 'order_articles', order_article, index: order_article.id do |form|
|
||||
%tr{class: "#{cycle('even', 'odd', name: 'articles')} order-article", valign: "top"}
|
||||
%tr{id: "order_article_#{order_article.id}", class: "#{cycle('even', 'odd', name: 'articles')} order-article", valign: "top"}
|
||||
- order_title = []
|
||||
- order_title.append Article.human_attribute_name(:manufacturer)+': ' + order_article.article.manufacturer unless order_article.article.manufacturer.to_s.empty?
|
||||
- order_title.append Article.human_attribute_name(:note)+': ' + order_article.article.note unless order_article.article.note.to_s.empty?
|
||||
- units_expected = (order_article.units_billed or order_article.units_to_order)
|
||||
%td= order_article.article.order_number
|
||||
%td.name{title: order_title.join("\n")}= order_article.article.name
|
||||
%td #{order_article.article.unit_quantity} × #{order_article.article.unit}
|
||||
%td.unit= order_article.article.unit
|
||||
%td #{order_article.quantity} + #{order_article.tolerance}
|
||||
%td
|
||||
= order_article.units_to_order
|
||||
%i.package pkg
|
||||
%span.article_unit_quantity (× #{order_article.article.unit_quantity})
|
||||
%td.article_price= number_to_currency order_article.article.price
|
||||
-#%td # TODO implement invoice screen
|
||||
- unless order_article.units_billed.nil?
|
||||
= order_article.units_billed
|
||||
%i.package pkg
|
||||
%td
|
||||
= form.text_field :units_received, class: 'input-nano package', data: {'units-expected' => units_expected}
|
||||
%span.article_price_unit_quantity (× #{order_article.article_price.unit_quantity})
|
||||
/ TODO add almost invisible text_field for entering single units
|
||||
%td.article_price_price= number_to_currency order_article.article_price.price
|
||||
%td.units_delta
|
||||
%td
|
||||
= link_to t('ui.edit'), edit_finance_order_order_article_path(order_article.order, order_article), remote: true, class: 'btn btn-mini'
|
||||
|
|
|
@ -74,12 +74,15 @@
|
|||
%tr
|
||||
%th.sort{:data => {:sort => 'string'}}= heading_helper Article, :order_number, short: true
|
||||
%th.sort{:data => {:sort => 'string'}}= heading_helper Article, :name
|
||||
%th= heading_helper GroupOrderArticle, :units
|
||||
%th= heading_helper Article, :unit
|
||||
%th Members
|
||||
%th Ordered
|
||||
%th= heading_helper Article, :price
|
||||
-#%th Invoice # TODO implement invoice screen
|
||||
%th Received
|
||||
%th= heading_helper ArticlePrice, :price
|
||||
%th
|
||||
%th= t 'ui.actions'
|
||||
%tbody#result_table
|
||||
- @order_articles.each do |order_article|
|
||||
= render :partial => 'edit_amount', :locals => {:order_article => order_article}
|
||||
|
|
|
@ -1,3 +1,18 @@
|
|||
- content_for :javascript do
|
||||
:javascript
|
||||
$(function() {
|
||||
// Subscribe to database changes.
|
||||
// See publish/subscribe design pattern in /doc.
|
||||
$(document).on('OrderArticle#update', function(e) {
|
||||
$.ajax({
|
||||
url: '#{receive_on_order_article_update_order_path(@order)}',
|
||||
type: 'get',
|
||||
data: {order_article_id: e.order_article_id},
|
||||
contentType: 'application/json; charset=UTF-8'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
- title "Receiving #{@order.name}"
|
||||
|
||||
= form_tag(receive_order_path(@order)) do
|
||||
|
|
30
app/views/orders/receive_on_order_article_update.js.erb
Normal file
30
app/views/orders/receive_on_order_article_update.js.erb
Normal file
|
@ -0,0 +1,30 @@
|
|||
// Handle more advanced DOM update after AJAX database manipulation.
|
||||
// See publish/subscribe design pattern in /doc.
|
||||
(function(w) {
|
||||
var order_article_entry = $('#order_article_<%= @order_article.id %>');
|
||||
|
||||
$('.name', order_article_entry).text(
|
||||
'<%= j @order_article.article.name %>'
|
||||
);
|
||||
|
||||
$('.unit', order_article_entry).text(
|
||||
'<%= j @order_article.article.unit %>'
|
||||
);
|
||||
|
||||
$('.article_unit_quantity', order_article_entry).text(
|
||||
'(× <%= @order_article.article.unit_quantity %>)'
|
||||
);
|
||||
|
||||
$('.article_price', order_article_entry).text(
|
||||
'<%= j number_to_currency @order_article.article.price %>'
|
||||
);
|
||||
|
||||
$('.article_price_unit_quantity', order_article_entry).text(
|
||||
'(× <%= @order_article.article_price.unit_quantity %>)'
|
||||
);
|
||||
|
||||
$('.article_price_price', order_article_entry).text(
|
||||
'<%= j number_to_currency @order_article.article_price.price %>'
|
||||
);
|
||||
})(window);
|
||||
|
|
@ -42,6 +42,8 @@ Foodsoft::Application.routes.draw do
|
|||
get :receive
|
||||
post :receive
|
||||
get :add_article
|
||||
|
||||
get :receive_on_order_article_update
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue