Created
April 14, 2016 16:41
-
-
Save saferodrigo/798f9a761a5d0e00793635a616796319 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%= base_url %> | |
<div id="carregando" class="aguarde" style="display:none"> | |
<div class="content"> | |
<p> | |
<i class="bt-aguarde"></i>Carregando... | |
</p> | |
</div> | |
</div> | |
<%= form_for(@requisicao, :html => {:onsubmit => 'return validar_form();'}) do |f| %> | |
<% if @requisicao.errors.any? %> | |
<div id="error_explanation"> | |
<h2><%= pluralize(@requisicao.errors.count, "error") %> foram encontrados: </h2> | |
<ul> | |
<% @requisicao.errors.full_messages.each do |msg| %> | |
<li><%= msg %></li> | |
<% end %> | |
</ul> | |
</div> | |
<% end %> | |
<%= f.hidden_field :cota_mensal_id %> | |
<%= f.hidden_field :subcentro_id %> | |
<%= hidden_field_tag :perfil_sistema %> | |
<%= hidden_field_tag :mostra_estoque, ((usuario_adm? || usuario_atendente?) && !usuario_atendente_reprografia?) %> | |
<%= hidden_field_tag :usuario_comum, usuario_comum? %> | |
<%= hidden_field_tag :usuario_comum_almoxarifado, usuario_comum_almoxarifado? %> | |
<%= hidden_field_tag :usuario_comum_reprografia, usuario_comum_reprografia? %> | |
<div class="field" id="radios"> | |
<% if usuario_almoxarifado? || super_adm? %> | |
<%= radio_button_tag :tipo_cota, 'almoxarifado', :checked => true %> | |
<span>Almoxarifado</span> | |
<% if usuario_reprografia? || super_adm? %> | |
<%= radio_button_tag :tipo_cota, 'reprografia' %> | |
<span>Reprografia</span> | |
<% end %> | |
<% else %> | |
<% if usuario_reprografia? || super_adm? %> | |
<%= radio_button_tag :tipo_cota, 'reprografia', :checked => true %> | |
<span>Reprografia</span> | |
<% end %> | |
<% end %> | |
<br/> | |
<br/> | |
</div> | |
<% if usuario_adm? %> | |
<div id="subcentro_autocomplete" class="field"> | |
<%= label_tag :subcentro_id, 'Subcentro:' %> | |
<%= autocomplete_field_tag 'subcentro_descricao', subcentro_descricao(@requisicao), autocomplete_subcentro_descricao_requisicoes_path, :id_element => '#requisicao_subcentro_id', :required => true, :placeholder => 'Somente subcentro que possua cota mensal gerada.', :disabled => @requisicao.id != nil %> | |
</div> | |
<br/> | |
<% end %> | |
<div class="field"> | |
<%= label_tag :mes, 'Mês:' %> | |
<%= number_field_tag :mes, Time.now.month, :class => 'mes_ano', :disabled => true %> | |
</div> | |
<br/> | |
<div class="field"> | |
<%= label_tag :ano, 'Ano:' %> | |
<%= number_field_tag :ano, Time.now.year, :class => 'mes_ano', :disabled => true %> | |
</div> | |
<br/> | |
<% unless super_adm? %> | |
<div id="lista_lotacoes"> | |
<% options_hash = '' %> | |
<% session[:subcentros].each do |lot| %> | |
<% options_hash += "<option value='#{lot[:id]}'>#{lot[:descricao]}</option>" %> | |
<% end %> | |
<% if @requisicao.id == nil %> | |
<div class="alinha_campo_produto"> | |
<%= label_tag :lotacao, 'Lotação: ' %> | |
<%= select_tag :lotacao_id_select, options_hash.html_safe %> | |
</div> | |
<% end %> | |
</div> | |
<% end %> | |
<% if usuario_adm? && @requisicao.id != nil %> | |
<div class="formulario-cota"> | |
<% if @requisicao.situacao == 3 %> | |
<div class="field" disabled="disabled"> | |
<%= f.label :situacao, "Situação:" %> | |
<%= f.select :situacao, ([["3 - Cancelada", "3"]]) %> | |
</div> | |
<br/> | |
<% elsif @requisicao.situacao == 2 %> | |
<div class="field"> | |
<%= f.label :situacao, "Situação:" %> | |
<%= f.select :situacao, ([["2 - Atendida", "2"]]) %> | |
</div> | |
<br/> | |
<% elsif @requisicao.data_validade < Time.now.to_date %> | |
<div class="field"> | |
<%= f.label :situacao, "Situação:" %> | |
<%= f.select :situacao, ([["3 - Cancelar", "3"]]) %> | |
<%= f.hidden_field :usuario_atendimento_id, :value => @usuario_atual %> | |
</div> | |
<br/> | |
<% else %> | |
<div class="field"> | |
<%= f.label :situacao, "Situação:" %> | |
<%= f.select :situacao, ([["2 - Atender", "2"], ["3 - Cancelar", "3"]]) %> | |
<%= f.hidden_field :usuario_atendimento_id, :value => @usuario_atual %> | |
</div> | |
<br/> | |
<% end %> | |
</div> <!-- fim .formulario-cota --> | |
<% end %> | |
<br/> | |
<br/> | |
<h2>Itens</h2> | |
<br/> | |
<div id="produtos"> | |
<% if @requisicao.id != nil && (usuario_adm? || usuario_atendente?) %> | |
<%= render :partial => 'requisicao_atendimento', :locals => {:requisicao => @requisicao, :f => f} %> | |
<% else %> | |
<table id="tabela"> | |
<thead> | |
<tr> | |
<th><%= check_box_tag 'check_all' %></th> | |
<th>Código</th> | |
<th>Produto</th> | |
<th>Qtd. Total (Mês)</th> | |
<th>Qtd. Disponível (Cota)</th> | |
<th>Qtd. Solicitada</th> | |
<th>Estoque</th> | |
</tr> | |
</thead> | |
<tbody id="tbody"></tbody> | |
</table> | |
<% end %> | |
<div class="actions actions-center"> | |
<% if @requisicao.id != nil %> | |
<% if Time.now.to_date > @requisicao.data_validade.to_date %> | |
<p class="aviso-req">Requisição com data de validade expirada.</p> | |
<%= f.submit 'Cancelar requisição' %> | |
<% elsif @requisicao.situacao == 2 %> | |
<p class="aviso-req">Requisição já foi atendida.</p> | |
<% elsif @requisicao.situacao == 3 %> | |
<p class="aviso-req">Requisição cancelada</p> | |
<% else %> | |
<%= f.submit 'Atualizar Requisição' %> | |
<% end %> | |
<% else %> | |
<%= f.submit 'Criar requisição' %> | |
<% end %> | |
</div> | |
</div> | |
<% end %> | |
<script> | |
$(function () { | |
if (!'<%= @requisicao.id %>') { | |
mostraListaLotacoes(); | |
get_produto_cotas(); | |
} | |
}); | |
$('.qtd_solicitada').live('keyup click change', function () { | |
atualizaTotais($(this).attr("id").replace(/[^\d.]/g, '')); | |
}); | |
$('.qtd_atendida').live('keyup click change', function () { | |
atualizaTotaisAtendidas($(this).attr("id").replace(/[^\d.]/g, '')); | |
}); | |
$('input#check_all').live("click", function () { | |
$('tbody').find(':checkbox').attr('checked', this.checked); | |
if (this.checked) { | |
$('.qtd_solicitada').prop("required", "required"); | |
} else { | |
$('.qtd_solicitada').removeProp("required"); | |
} | |
}); | |
$("input[name='tipo_cota']").click(function () { | |
var req_id = '<%= @requisicao.id %>'; | |
if (req_id == "") { | |
$('#subcentro_descricao').val(""); | |
mostraListaLotacoes(); | |
get_produto_cotas(); | |
} | |
}); | |
$('.marcar_produto').live("click", function () { | |
if (this.checked) { | |
$(this).parent().parent().children('td').eq(5).children('input').prop("required", "required"); | |
} else { | |
$(this).removeProp("required"); | |
$(this).parent().parent().children('td').eq(5).children('input').removeProp("required"); | |
} | |
}); | |
$('#subcentro_descricao').bind('railsAutocomplete.select', function (event, data) { | |
get_produto_cotas(); | |
}); | |
$('#lotacao_id_select').change(function () { | |
$('#requisicao_subcentro_id').val($(this).val()); | |
get_produto_cotas(); | |
}); | |
function mostraListaLotacoes() { | |
var usuario_comum = $('#usuario_comum').val(); | |
var usuario_comum_almoxarifado = $('#usuario_comum_almoxarifado').val(); | |
var usuario_comum_reprografia = $('#usuario_comum_reprografia').val(); | |
var cota_almoxarifado = $('#tipo_cota_almoxarifado').is(":checked"); | |
var cota_reprografia = $('#tipo_cota_reprografia').is(":checked"); | |
if (usuario_comum) { | |
var usuario_pedido_material_almoxarifado = (cota_almoxarifado && usuario_comum_almoxarifado); | |
var usuario_pedido_material_reprografia = (cota_reprografia && usuario_comum_reprografia); | |
if ((usuario_pedido_material_almoxarifado || usuario_pedido_material_reprografia) == 'true') { | |
$('#subcentro_autocomplete').hide(); | |
$('#subcentro_descricao').removeProp("required"); | |
$('#lista_lotacoes').show(); | |
$('#requisicao_subcentro_id').val($('#lotacao_id_select').val()); | |
} else { | |
$('#lista_lotacoes').hide(); | |
$('#subcentro_autocomplete').show(); | |
$('#subcentro_descricao').prop("required", "required"); | |
$('#requisicao_subcentro_id').val(""); | |
$('#tbody').html(""); | |
} | |
} else { | |
$('#lista_lotacoes').hide(); | |
$('#subcentro_autocomplete').show(); | |
$('#subcentro_descricao').prop("required", "required"); | |
$('#requisicao_subcentro_id').val(""); | |
$('#tbody').html(""); | |
} | |
} | |
function validar_form() { | |
if ($('#requisicao_cota_mensal_id').val()) { | |
if ('<%= @requisicao.id == nil %>' == 'true') { | |
var valor = false; | |
$('input:checkbox.marcar_produto').each(function () { | |
if (this.checked == true) { | |
valor = this.checked | |
} | |
}); | |
if (valor == false) { | |
alert("Selecione pelo menos um produto para criar a requisição."); | |
return false; | |
} else { | |
return true; | |
} | |
} else { | |
if ('<%= usuario_adm? %>' && '<%= @requisicao.id %>') { | |
var situacao_antiga = '<%= @requisicao.situacao %>'; | |
var situacao_nova = $('#requisicao_situacao').val(); | |
if (situacao_antiga != situacao_nova) { | |
var msg_texto = ""; | |
if (situacao_antiga == 1 && situacao_nova == 3) { //Vai ser cancelada | |
msg_texto = "A requisição cancelada devolverá a quantidade disponível de cada produto. Confirma?" | |
var confirma = confirm(msg_texto); | |
if (confirma) { | |
return true; | |
} else { | |
return false; | |
} | |
} else { | |
return true; | |
} | |
} else { | |
return true; | |
} | |
} else { | |
return true; | |
} | |
} | |
} else { | |
alert("Não há cota mensal gerada para esta lotação. "); | |
return false; | |
} | |
} | |
function getPerfilCota() { | |
if ($('#tipo_cota_almoxarifado').is(":checked")) { | |
$('#perfil_sistema').val(8); | |
} else { | |
$('#perfil_sistema').val(26); | |
} | |
} | |
function atualizaTotais(id) { | |
var campoQtdDisponivel = $("#campo-qtd-disponivel-" + id); | |
var campoQtdSolicitada = $("#input-qtd-solicitada-" + id); | |
var campoQtdEstoque = $("#campo-qtd-estoque-" + id); | |
if (campoQtdSolicitada.length == 0) { | |
campoQtdSolicitada = $("#requisicao_item_requisicoes_attributes_" + id + "_qtd_solicitada"); | |
} | |
var valorQtdDisponivel = parseInt(campoQtdDisponivel.text()); | |
var valorQtdSolicitada = parseInt(campoQtdSolicitada.val()); | |
var valorQtdEstoque = parseInt(campoQtdEstoque.val()); | |
if (valorQtdSolicitada <= 0) { | |
campoQtdSolicitada.val(""); | |
} else if (isNaN(valorQtdSolicitada)) { | |
campoQtdSolicitada.val(""); | |
} else { | |
if (!isNaN(valorQtdSolicitada) && !isNaN(valorQtdEstoque) && valorQtdSolicitada > valorQtdEstoque) { | |
campoQtdSolicitada.val(valorQtdEstoque); | |
} else if (valorQtdSolicitada > valorQtdDisponivel) { | |
campoQtdSolicitada.val(valorQtdDisponivel); | |
} else { | |
campoQtdSolicitada.val(valorQtdSolicitada); | |
} | |
campoQtdSolicitada.parent().parent().children('td').eq(0).children('input').prop("required", "required"); | |
} | |
} | |
function atualizaTotaisAtendidas(id) { | |
var campoQtdAtendida = $("#input-qtd-atendida-" + id); | |
var campoQtdSolicitada = $("#campo-qtd-solicitada-" + id); | |
var campoQtdEstoque = $("#campo-qtd-estoque-" + id); | |
var valorQtdAtendida = parseInt(campoQtdAtendida.val()); | |
var valorQtdSolicitada = parseInt(campoQtdSolicitada.text()); | |
var valorQtdEstoque = parseInt(campoQtdEstoque.text()); | |
if (valorQtdAtendida < 0) { | |
campoQtdAtendida.val(""); | |
} else if (isNaN(valorQtdAtendida)) { | |
campoQtdAtendida.val(""); | |
} else { | |
if (valorQtdAtendida > valorQtdEstoque) { | |
campoQtdAtendida.val(valorQtdEstoque); | |
} else if (valorQtdAtendida > valorQtdSolicitada) { | |
campoQtdAtendida.val(valorQtdSolicitada); | |
} else { | |
campoQtdAtendida.val(valorQtdAtendida); | |
} | |
} | |
} | |
function get_produto_cotas() { | |
$('#carregando').show(); | |
getPerfilCota(); | |
var perfil_sistema = $('#perfil_sistema').val(); | |
var subcentro_id = $('#requisicao_subcentro_id').val(); | |
var url = "/requisicoes/render_produtos/" + subcentro_id + "/" + perfil_sistema + ".json"; | |
if (subcentro_id != '') { | |
$.get(url, function (data) { | |
if (data.fechado_balanco == true) { | |
html_tbody = ''; | |
html_tbody += "<tr>" + | |
"<td colspan='7' align='center'><p>Fechado para Balanço. Qualquer dúvida, procure a Seção de Almoxarifado.</p></td>" + | |
"</tr>"; | |
$('#tabela').html(html_tbody + "</tbody>"); | |
$('#tbody').html(html_tbody); | |
} else { | |
if (data.length > 0) { | |
$('#requisicao_cota_mensal_id').val(data[0].cota_mensal_id); | |
var array_ids_random = new Array(); | |
var html_tbody = ""; | |
var qtd_solicitada = ""; | |
html_tbody += "<thead><tr><th></th>" + | |
"<th>Código</th>" + | |
"<th>Produto</th>" + | |
"<th>Qtd. Total (Mês)</th>" + | |
"<th>Qtd. Disponível (Cota)</th>" + | |
"<th>Qtd. Solicitada</th>" + | |
"<th>Estoque</th></tr></thead><tbody id='tbody'>"; | |
for (i in data) { | |
var estoque_msg = ""; | |
var qtd_solicitada = data[i].qtd_disponivel; | |
if ($('#mostra_estoque').val()) { | |
if (data[i].estoque == 0) { | |
qtd_solicitada = 0 | |
if (!data[i].tem_estoque_fisico) { | |
estoque_msg = "SEM ESTOQUE" | |
} else { | |
estoque_msg = "QTD. INDISPONÍVEL" | |
} | |
} else { | |
if (data[i].qtd_disponivel > data[i].estoque) { | |
qtd_solicitada = data[i].estoque; | |
estoque_msg = "Resta(m) " + data[i].estoque; | |
} else { | |
qtd_solicitada = data[i].qtd_disponivel; | |
} | |
} | |
} | |
var id_random = Math.random() * 1000000000000000000; | |
html_tbody += "<tr><input id='requisicao_item_requisicoes_attributes_" + id_random + "_produto_cota_mensal_id' type='hidden' value='" + data[i].produto_cota_mensal_id + "' name='requisicao[item_requisicoes_attributes][" + id_random + "][produto_cota_mensal_id]'>"; | |
if (data[i].estoque > 0 && qtd_solicitada > 0) { | |
html_tbody += "<td><input id='itens_req_ids_' type='checkbox' class='marcar_produto' value=" + data[i].produto_cota_mensal_id + " name='requerimento_ids[]'></td>"; | |
} else { | |
html_tbody += "<td></td>"; | |
} | |
html_tbody += | |
"<td class='codigo_produto'>" + data[i].produto_id + "</td>" + | |
"<td>" + data[i].produto_descricao + "</td>" + | |
"<td>" + data[i].qtd + "</td>" + | |
"<td id='campo-qtd-disponivel-" + id_random + "'>" + data[i].qtd_disponivel + "</td>"; | |
if (data[i].estoque > 0 && qtd_solicitada > 0) { | |
html_tbody += "<td><input id='requisicao_item_requisicoes_attributes_" + id_random + "_qtd_solicitada' class='qtd_solicitada' class='' type='number' value='' size='30' name='requisicao[item_requisicoes_attributes][" + id_random + "][qtd_solicitada]'></td>"; | |
} else { | |
html_tbody += "<td><input id='requisicao_item_requisicoes_attributes_" + id_random + "_qtd_solicitada' type='number' size='30' disabled='disabled' name='requisicao[item_requisicoes_attributes][" + id_random + "][qtd_solicitada]'></td>"; | |
} | |
html_tbody += "<td>" + estoque_msg + "</td>" + | |
"<input id='campo-qtd-estoque-" + id_random + "' type='hidden' value='" + data[i].estoque + "'></tr>"; | |
array_ids_random[i] = id_random; | |
} | |
$('#tabela').html(html_tbody + "</tbody>"); | |
$('.qtd_solicitada').live('keyup click change', function () { | |
atualizaTotais($(this).attr("id").replace(/[^\d.]/g, '')); | |
}); | |
for (var i = 0; i < array_ids_random.length; i++) { | |
atualizaTotais(array_ids_random[i]); | |
} | |
} else { | |
console.log('aaa'); | |
html_tbody = "<tr>" + | |
"<td colspan='7' align='center'><p>Não há cota mensal gerada para esta lotação. Procure a Seção de Almoxarifado e Reprografia.</p></td>" + | |
"</tr>"; | |
$('#tbody').html(html_tbody); | |
} | |
} | |
}); | |
} | |
$('#carregando').hide(); | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment