Skip to content

Instantly share code, notes, and snippets.

@saferodrigo
Created April 14, 2016 16:41
Show Gist options
  • Save saferodrigo/798f9a761a5d0e00793635a616796319 to your computer and use it in GitHub Desktop.
Save saferodrigo/798f9a761a5d0e00793635a616796319 to your computer and use it in GitHub Desktop.
<%= 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