add receive screen, quantities for model, redistribution
This commit is contained in:
parent
ed9a6cca39
commit
bd1b932775
17 changed files with 365 additions and 49 deletions
|
|
@ -19,6 +19,7 @@
|
|||
%td= show_user(order.updated_by)
|
||||
%td
|
||||
- unless order.closed?
|
||||
= link_to t('.receive'), edit_finance_receive_path(order), class: 'btn btn-mini'
|
||||
= link_to t('.clear'), new_finance_order_path(order_id: order.id), class: 'btn btn-mini btn-primary'
|
||||
= link_to t('.close'), close_direct_finance_order_path(order),
|
||||
:confirm => t('.confirm'), :method => :put, class: 'btn btn-mini'
|
||||
|
|
|
|||
16
app/views/finance/receive/_edit_article.html.haml
Normal file
16
app/views/finance/receive/_edit_article.html.haml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
= fields_for 'order_articles', order_article, index: order_article.id do |form|
|
||||
%tr{class: "#{cycle('even', 'odd', name: 'articles')} order-article", valign: "top"}
|
||||
- order_title = []
|
||||
- order_title.append t('.manufacturer')+': ' + order_article.article.manufacturer unless order_article.article.manufacturer.to_s.empty?
|
||||
- order_title.append t('.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 #{order_article.quantity} + #{order_article.tolerance}
|
||||
%td= order_article.units_to_order
|
||||
%td= order_article.units_billed
|
||||
%td
|
||||
= form.text_field :units_received, class: 'input-mini', data: {'units-expected' => units_expected}
|
||||
/ TODO add almost invisible text_field for entering single units
|
||||
%td.units_delta
|
||||
76
app/views/finance/receive/_edit_articles.html.haml
Normal file
76
app/views/finance/receive/_edit_articles.html.haml
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
- content_for :javascript do
|
||||
:javascript
|
||||
|
||||
function update_delta(input) {
|
||||
var units = $(input).val();
|
||||
var expected = $(input).data('units-expected');
|
||||
var html;
|
||||
|
||||
if (units.replace(/\s/g,"")=="") {
|
||||
// no value
|
||||
html = '';
|
||||
} else if (isNaN(units)) {
|
||||
html = '<i class="icon-remove" style="color: red"></i>';
|
||||
} else if (units == expected) {
|
||||
// equal value
|
||||
html = '<i class="icon-ok" style="color: green"></i>';
|
||||
} else if (units < expected) {
|
||||
html = '<span style="color: red">- '+(expected-units)+'</span>';
|
||||
} else /*if (units> expected)*/ {
|
||||
html = '<span style="color: green">+ '+(units-expected)+'</span>';
|
||||
}
|
||||
|
||||
$(input).closest('tr').find('.units_delta').html(html);
|
||||
}
|
||||
|
||||
$(document).on('change', 'input[data-units-expected]', function() {
|
||||
update_delta(this);
|
||||
});
|
||||
|
||||
$(function() {
|
||||
$('input[data-units-expected]').each(function() {
|
||||
update_delta(this);
|
||||
});
|
||||
|
||||
$('#add_article').removeAttr('disabled').select2({
|
||||
placeholder: '#{t '.add_article'}',
|
||||
data: #{articles_for_select2(@order).to_json},
|
||||
// TODO implement adding a new article, like in deliveries
|
||||
}).on('change', function(e) {
|
||||
var selectedArticle = $(e.currentTarget).select2('data');
|
||||
if(!selectedArticle) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: '#{finance_receive_add_article_path(@order)}',
|
||||
type: 'get',
|
||||
data: {article_id: selectedArticle.id},
|
||||
contentType: 'application/json; charset=UTF-8'
|
||||
});
|
||||
$('#add_article').select2('data', null);
|
||||
return true;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
%table.ordered-articles.table.table-striped.stupidtable
|
||||
%thead
|
||||
%tr
|
||||
%th.sort{:data => {:sort => 'string'}}= t('.number')
|
||||
%th.sort{:data => {:sort => 'string'}}= t('.article')
|
||||
%th= heading_helper GroupOrderArticle, :units
|
||||
%th Members
|
||||
%th Ordered
|
||||
%th Invoice
|
||||
%th Received
|
||||
%th
|
||||
%tbody#result_table
|
||||
- @order_articles.each do |order_article|
|
||||
= render :partial => 'edit_article', :locals => {:order_article => order_article}
|
||||
%tfoot
|
||||
%tr
|
||||
%th{:colspan => 8}
|
||||
%input#add_article{:style => 'width: 500px;'}
|
||||
|
||||
14
app/views/finance/receive/add_article.js.erb
Normal file
14
app/views/finance/receive/add_article.js.erb
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
$('div.container-fluid').prepend(
|
||||
'<%= j(render(:partial => 'shared/alert_success', :locals => {:alert_message => t('.notice', :name => @order_article.article.name)})) %>'
|
||||
);
|
||||
|
||||
(function() {
|
||||
$('.ordered-articles tr').removeClass('success');
|
||||
|
||||
var article_for_adding = $(
|
||||
'<%= j(render(:partial => 'edit_article', :locals => {:order_article => @order_article})) %>'
|
||||
).addClass('success');
|
||||
|
||||
$('.ordered-articles tbody').append(article_for_adding);
|
||||
updateSort('.ordered-articles');
|
||||
})();
|
||||
10
app/views/finance/receive/edit.html.haml
Normal file
10
app/views/finance/receive/edit.html.haml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
- title "Receiving #{@order.name}"
|
||||
|
||||
= form_tag(finance_receive_path(@order), :method => :put) do
|
||||
%section#results
|
||||
= render 'edit_articles'
|
||||
.form-actions
|
||||
= submit_tag t('.submit'), class: 'btn btn-primary'
|
||||
= link_to t('ui.or_cancel'), finance_order_index_path
|
||||
|
||||
%p= link_to_top
|
||||
Loading…
Add table
Add a link
Reference in a new issue