/* ************************************************************************************************ */ /* ******************************************** ALMO ******************************************** */ /* ************************************************************************************************ */ /* ************************************************************************************************ */ /* ******************************************* ALMESC ******************************************* */ /* ************************************************************************************************ */ /* ************************************************************************* */ /* Preenche setor-cargo ao selecionar requisitante e adiciona mensagem se mais setores */ function PreencheSetorRequisitante(){ var requisitanteElement = document.getElementById('user'); requisitante = requisitanteElement.value; var salaElement = document.getElementById('sala'); var cargoElement = document.getElementById('cargo'); var periodoElement = document.getElementById('periodo'); var demaisSetores_p = document.getElementById('demaisSetores_p'); var demaisSetores_table = document.getElementById('demaisSetoresTable'); //Remove seleção cargoElement.value = ''; periodoElement.value = ''; salaElement.value = ''; $("#demaisSetoresTable tr").remove(); //Se sem requisitante, encerra if(requisitante == 0){ return 0; } $.ajax({ method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}, url: "/almesc/pedidos/entregar/AjaxCargos", datatype: {JSON}, data: { id: requisitante }, beforeSend:function(){ }, aferSend:function(){ }, }) .done(function( response ) { cargosSetores = response; //Seleciona valores correto de cargo e período cargosSetores = JSON.parse(response); if(cargosSetores.length > 0){ cargoElement.value = cargosSetores[0]['cargo_id']+","+cargosSetores[0]['setor_id']; periodoElement.value = cargosSetores[0]['periodo']; salaElement.value = cargosSetores[0]['sala_num']+"->"+cargosSetores[0]['salaNome']; //Monta mensagem de outros setores OutrosSetores = ""; if(cargosSetores.length > 1){ for (var i = 0; i < cargosSetores.length; i++) { //Prepara texto de outro setore OutrosSetores = OutrosSetores+cargosSetores[i]['setor']+" - "; OutrosSetores = OutrosSetores+cargosSetores[i]['cargo']+" / "; OutrosSetores = OutrosSetores+cargosSetores[i]['periodo']+" -> sala "; OutrosSetores = OutrosSetores+cargosSetores[i]['sala_num']+" ("; OutrosSetores = OutrosSetores+cargosSetores[i]['salaNome']+") \n"; //Cria botão e adiciona na célula var btn = document.createElement('input'); btn.type = "button"; btn.id = "btn_"+i; btn.className = "btn btn-primary"; btn.value = " ↻ "; //recupera valores para parametro do click var cargosSetoresValue = cargosSetores[i]['cargo_id']+","+cargosSetores[i]['setor_id']; var periodoValue = cargosSetores[i]['periodo']; var salaValue = cargosSetores[i]['sala_num']+"->"+cargosSetores[i]['salaNome']; //Cria linha em table e células var row = demaisSetores_table.insertRow(i); var cell1 = row.insertCell(0); cell1.className = "p-1" //cell1.style = 'vertical-align:center;'; var cell2 = row.insertCell(1); //Define texto da Cell2 cell1.appendChild(btn); cell2.innerHTML = OutrosSetores; OutrosSetores = ''; } for (var i = 0; i < cargosSetores.length; i++) { var cargosSetoresValue = cargosSetores[i]['cargo_id']+","+cargosSetores[i]['setor_id']; var periodoValue = cargosSetores[i]['periodo']; var salaValue = cargosSetores[i]['sala_num']+"->"+cargosSetores[i]['salaNome']; PreencheSetorRequisitanteBotoes(cargoElement,cargosSetoresValue,periodoElement,periodoValue,salaElement,salaValue,i); } } }else{ } return response; }) .fail(function(xhr, status, error) { alert("Erro ao atualizar setor-cargo dinamicamente"); return null; }); } function PreencheSetorRequisitanteBotoes(cargoElement,cargosSetoresValue,periodoElement,periodoValue,salaElement,salaValue,i){ document.getElementById('btn_'+i).onclick = (function(event) { cargoElement.value = cargosSetoresValue; periodoElement.value = periodoValue; salaElement.value = salaValue; }); } /* ************************************************************************************************ */ /* ******************************************* MUTUAS ******************************************* */ /* ************************************************************************************************ */ /* ************************************************************************* */ /* Preenche produtos requisitados na edição de requisição */ function PreencheProdutos(QntProdutos, System, Editing = false){ for (var i = 1; i <= QntProdutos; i++) { //Recupera elementos var Requisitante = document.getElementById('user'); var ProdQnt = document.getElementById('qnt_'+i); var ProdQntAntiga = document.getElementById('qntAnterior_'+i); var ProdElement = document.getElementById('prod_'+i); if(Editing){ var ProdElementHidden = document.getElementById('prodAnteriorHidden_'+i); var QntElementHidden = document.getElementById('qntAnteriorHidden_'+i); } //Atualiza valores Requisitante.value = userRequest; ProdElement.value = produtosSolicitados[i-1]['id']; ProdQnt.value = produtosSolicitados[i-1]['qnt']; ProdQntAntiga.value = produtosSolicitados[i-1]['qnt']; if(Editing){ ProdElementHidden.value = produtosSolicitados[i-1]['id'] QntElementHidden.value = produtosSolicitados[i-1]['qnt']; if(System == 'Rango'){ var Cardapio = document.getElementById('cardapio'); var QntAlunos = document.getElementById('qnt_alunos'); var QntFuncionarios = document.getElementById('qnt_funcionarios'); var Salada = document.getElementById('salada'); var Sobremesa = document.getElementById('sobremesa'); if(cardapioReq != null) Cardapio.value = cardapioReq; if(alunosReq != null) QntAlunos.value = alunosReq; if(funcReq != null) QntFuncionarios.value = funcReq; if(saladaReq != null) Salada.value = saladaReq; if(sobremesaReq != null) Sobremesa.value = sobremesaReq; } } //Atualiza estoque e unidades de compra e entrega PreencheUnidadeProd(ProdElement,System,Editing); } } /* ************************************************************************* */ /* Ao escolher produto para entrega do ALMESC, ALMO e RANGO, preenche qual unidade de entrega*/ function PreencheUnidadeProd(selectObject, sistema, editing = false){ var rowNumber = selectObject.name.split('_')[1]; var Unidade_entrega = document.getElementById('unEntrega_'+rowNumber); var Unidade_compra = document.getElementById('unCompra_'+rowNumber); var Estoque = document.getElementById('estoque_'+rowNumber); var Quantidade = document.getElementById('qnt_'+rowNumber); var TableLine = document.getElementById('tableRow_'+rowNumber); if(editing){ var QuantidadeAntiga = document.getElementById('qntAnterior_'+rowNumber); var QuantidadeAntigaHidden = document.getElementById('qntAnteriorHidden_'+rowNumber); var ProdutoAnteriorHidden = document.getElementById('prodAnteriorHidden_'+rowNumber); } //Atualiza contador de itens da página ChangeQntCounterEstoque(); //Verifica se é o item anterior para repreencher Qnt Antiga if(editing && selectObject.value != ProdutoAnteriorHidden.value){ QuantidadeAntiga.value = 0; } else if(editing && selectObject.value == ProdutoAnteriorHidden.value){ QuantidadeAntiga.value = QuantidadeAntigaHidden.value; } //Verifica se item foi removido if(selectObject.value == 0){ if(Unidade_entrega != null){ Unidade_entrega.value = ""; } if(Unidade_entrega != null) Unidade_compra.value = ""; Quantidade.value = 0; if(editing) QuantidadeAntiga.value = 0; TableLine.setAttribute('class', " "); selectObject.required = false; if(Estoque != null) Estoque.value = ""; } else{ //Percorre array produtos para verificar estoque for (var i=0; i parseInt(response) + parseInt($QntAntiga)) $TableLine.classList.add("Table_TRYellowColor"); else if(!$editing && parseInt($QntSolicitada) > parseInt($Estoque.value)) $TableLine.classList.add("Table_TRYellowColor"); else $TableLine.classList.remove("Table_TRYellowColor"); if($sistema != "Rango") DesabilitaFormEntregaPedido($sistema); //RANGO permite estoque negativo return response; }) .fail(function(xhr, status, error) { $Estoque.value="ERROR"; return null; }); } /* ************************************************************************* */ /* Ao adicionar ou remover produto da lista, altera contador de itens*/ function ChangeQntCounterEstoque (){ var QuantidadeElement = document.getElementById("Qnt_Itens"); var QuantidadeCorrigida = 0; //infinite loop, break when end selects on page for (var i = 1; i > 0; i++) { var ProdElement = document.getElementById("prod_"+i); if(ProdElement == null) break; if(ProdElement.value > 0) QuantidadeCorrigida++; } QuantidadeElement.innerHTML = QuantidadeCorrigida; } /* ************************************************************************* */ /* Ao mudar quantidade do produto, verifica se possui, se não, fica em amarelo */ function VerificaEstoque(qntInput, editing = false, sistema = '') { var rowNumber = qntInput.name.split('_')[1]; var Quantidade = document.getElementById('qnt_'+rowNumber).value; if(editing) var QuantidadeAntiga = document.getElementById('qntAnterior_'+rowNumber).value; var Estoque = document.getElementById('estoque_'+rowNumber).value; var Produto = document.getElementById('prod_'+rowNumber); var TableLine = document.getElementById('tableRow_'+rowNumber); if(!editing && Produto != null && Produto.value != 0 && parseInt(Quantidade) > parseInt(Estoque) ){ TableLine.setAttribute('class', 'Table_TRYellowColor'); }else if(editing && Produto != null && Produto.value != 0 && parseInt(Quantidade) > (parseInt(Estoque)+parseInt(QuantidadeAntiga)) ){ TableLine.setAttribute('class', 'Table_TRYellowColor'); }else{ TableLine.setAttribute('class', ''); } DesabilitaFormEntregaPedido(sistema); } /* ******************************************************************************* */ /* Ao ter pedidos em status de erro (quantidade inválida) impede botão de entregar */ function DesabilitaFormEntregaPedido(sistema){ if(sistema == 'Rango') return; var obs = document.getElementById('obs'); var linhas = document.getElementById('tabela').getElementsByTagName('tr'); aux = false; for (var i = linhas.length-1; i >= 0; i--) { if ( linhas[i].classList.contains("Table_TRYellowColor") == true && sistema != "Rango"){ document.getElementById('submit').disabled = true; aux = true; } } if(aux == false) document.getElementById('submit').disabled = false; } /* Adiciona listeners em todos selects e inputs de quantidade na requisição do ALMO e ALMESC (ENTREGA) */ /* (Para atualizar min ao trocar produto) */ function ProductsListeners(){ var list = document.querySelectorAll( '[name^="prod_"]' ); $(list).change(function(){ var number = this.name.split('_'); var quantidade = document.getElementById("qnt_"+number[1]); //Atualiza valor minimo e trata caso a pessoa remova o produto selecionado // if(this.value > 0) // quantidade.min = 1; // else // quantidade.min = 0; }); var list = document.querySelectorAll( '[name^="qnt_"]' ); $(list).change(function(){ var number = this.name.split('_'); var produto = document.getElementsByName("prod_"+number[1]); //Atualiza produto como sendo obrigatório, devido a quantidade ser >0 if(this.value > 0) produto[0].required = true; else produto[0].required = false; }); } /* Adiciona listeners em todos selects compra do ALMO, ALMESC e RANGO (Compra) /* para exibir unidade de compra e */ /* Atualizar valor de produtos da compra */ function SelectUnidadeCompra(system){ var list = document.querySelectorAll( '[name^="prod_"]' ); $(list).change(function(){ var id = this.id; var produto = this.value; var line = id.split('_'); line = line[1]; var route = ''; if(system == "Almesc") route = "/almesc/produtos/comprar/ajax"; else if (system == "Almo") route = "/almo/produtos/comprar/ajax"; else if (system == "Rango") route = "/rango/produtos/comprar/ajax"; var CompraElement = document.getElementById("compra_"+line) CompraElement.value = ""; ChangeQntCounterEstoque(); if(produto == 0) return 0; $.ajax({ method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}, url: route, datatype: {JSON}, data: { id: produto }, beforeSend:function(){ // document.getElementById("compra_"+line).value = ""; }, aferSend:function(){ }, }) .done(function( response ) { if(response == 'null') CompraElement.value = "-----"; else{ response = response.replaceAll('\\/','/'); response = response.replaceAll('"',''); CompraElement.value = response; } return response; }) .fail(function(xhr, status, error) { //$Estoque.value="ERROR"; // $TableLine.classList.remove("wrapper"); alert("Erro ao atualizar unidade de compra dinamicamente"); return null; }); }); }