Commit 15e3278f2c1160ce0c520f32696d73639539e81f

Authored by erick.sato
2 parents 134f8d97 c35acfcc
Exists in master

Merge branch 'tarefa-3822' of http://ferramentasgo.centralit.com.br:8080/scm/git…

…/cit-grp-almoxarifado into tarefa-3822

# Conflicts:
#	cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItem.java
1 1 package br.com.centralit.api.model;
2 2  
3 3 import java.math.BigDecimal;
  4 +import java.util.Collection;
4 5  
  6 +import javax.persistence.CascadeType;
5 7 import javax.persistence.Entity;
6 8 import javax.persistence.FetchType;
7 9 import javax.persistence.GeneratedValue;
... ... @@ -9,6 +11,7 @@ import javax.persistence.GenerationType;
9 11 import javax.persistence.Id;
10 12 import javax.persistence.JoinColumn;
11 13 import javax.persistence.ManyToOne;
  14 +import javax.persistence.OneToMany;
12 15 import javax.persistence.Table;
13 16  
14 17 import org.hibernate.envers.AuditTable;
... ... @@ -84,13 +87,9 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan
84 87 @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class })
85 88 private MaterialConsumo material;
86 89  
87   - /** Atributo quantidade. */
88   - @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class })
89   - private BigDecimal quantidade;
90   -
91   - @ManyToOne(fetch = FetchType.LAZY, optional = false)
92   - @JsonView({ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class})
93   - private MaterialLocalEstoque materialLocalEstoque;
  90 + @OneToMany(fetch = FetchType.LAZY, mappedBy = "atendimentoRequisicaoConsumoItem", cascade = CascadeType.ALL, orphanRemoval = true)
  91 + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class })
  92 + private Collection<AtendimentoRequisicaoConsumoItemEndereco> atendimentoRequisicaoConsumoItemEnderecos;
94 93  
95 94 /**
96 95 * Retorna o valor do atributo <code>id</code>
... ... @@ -153,26 +152,6 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan
153 152 }
154 153  
155 154 /**
156   - * Retorna o valor do atributo <code>quantidade</code>
157   - *
158   - * @return <code>BigDecimal</code>
159   - */
160   - public BigDecimal getQuantidade() {
161   -
162   - return quantidade;
163   - }
164   -
165   - /**
166   - * Define o valor do atributo <code>quantidade</code>.
167   - *
168   - * @param quantidade
169   - */
170   - public void setQuantidade(BigDecimal quantidade) {
171   -
172   - this.quantidade = quantidade;
173   - }
174   -
175   - /**
176 155 * Retorna o valor do atributo <code>requisicaoConsumoItem</code>
177 156 *
178 157 * @return <code>RequisicaoConsumoItem</code>
... ... @@ -192,11 +171,23 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan
192 171 this.requisicaoConsumoItem = requisicaoConsumoItem;
193 172 }
194 173  
195   - public MaterialLocalEstoque getMaterialLocalEstoque() {
196   - return materialLocalEstoque;
  174 + public Collection<AtendimentoRequisicaoConsumoItemEndereco> getAtendimentoRequisicaoConsumoItemEnderecos() {
  175 + return atendimentoRequisicaoConsumoItemEnderecos;
197 176 }
198 177  
199   - public void setMaterialLocalEstoque(MaterialLocalEstoque materialLocalEstoque) {
200   - this.materialLocalEstoque = materialLocalEstoque;
  178 + public void setAtendimentoRequisicaoConsumoItemEnderecos(Collection<AtendimentoRequisicaoConsumoItemEndereco> atendimentoRequisicaoConsumoItemEnderecos) {
  179 + this.atendimentoRequisicaoConsumoItemEnderecos = atendimentoRequisicaoConsumoItemEnderecos;
  180 + }
  181 +
  182 + public BigDecimal getQuantidade(){
  183 + BigDecimal quantidade = BigDecimal.ZERO;
  184 +
  185 + if(atendimentoRequisicaoConsumoItemEnderecos != null){
  186 + for(AtendimentoRequisicaoConsumoItemEndereco itemEndereco : atendimentoRequisicaoConsumoItemEnderecos){
  187 + quantidade = quantidade.add(itemEndereco.getQuantidade());
  188 + }
  189 + }
  190 +
  191 + return quantidade;
201 192 }
202 193 }
... ...
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItemEndereco.java 0 → 100644
... ... @@ -0,0 +1,77 @@
  1 +package br.com.centralit.api.model;
  2 +
  3 +import java.math.BigDecimal;
  4 +
  5 +import javax.persistence.Entity;
  6 +import javax.persistence.FetchType;
  7 +import javax.persistence.GeneratedValue;
  8 +import javax.persistence.GenerationType;
  9 +import javax.persistence.Id;
  10 +import javax.persistence.JoinColumn;
  11 +import javax.persistence.ManyToOne;
  12 +import javax.persistence.Table;
  13 +
  14 +import br.com.centralit.api.framework.json.ViewsAlmoxarifado;
  15 +import br.com.centralit.framework.json.Views;
  16 +import br.com.centralit.framework.model.arquitetura.PersistentObject;
  17 +
  18 +import com.fasterxml.jackson.annotation.JsonView;
  19 +
  20 +@Entity
  21 +@Table(name = "alm_rc_at_item_endereco")
  22 +public class AtendimentoRequisicaoConsumoItemEndereco extends PersistentObject {
  23 +
  24 + private static final long serialVersionUID = 1L;
  25 +
  26 + @Id
  27 + @GeneratedValue(strategy = GenerationType.AUTO)
  28 + @JsonView({ Views.GenericView.class })
  29 + private Long id;
  30 +
  31 + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class })
  32 + private BigDecimal quantidade;
  33 +
  34 + @ManyToOne(fetch = FetchType.LAZY, optional = false)
  35 + @JsonView({ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class})
  36 + private MaterialLocalEstoque materialLocalEstoque;
  37 +
  38 + @ManyToOne(fetch = FetchType.LAZY, optional = false)
  39 + @JsonView({ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class})
  40 + @JoinColumn(name = "at_req_consumoitem_id")
  41 + private AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem;
  42 +
  43 + @Override
  44 + public Long getId() {
  45 + return this.id;
  46 + }
  47 +
  48 + public void setId(Long id) {
  49 + this.id = id;
  50 + }
  51 +
  52 + public BigDecimal getQuantidade() {
  53 + return quantidade;
  54 + }
  55 +
  56 + public void setQuantidade(BigDecimal quantidade) {
  57 + this.quantidade = quantidade;
  58 + }
  59 +
  60 + public MaterialLocalEstoque getMaterialLocalEstoque() {
  61 + return materialLocalEstoque;
  62 + }
  63 +
  64 + public void setMaterialLocalEstoque(MaterialLocalEstoque materialLocalEstoque) {
  65 + this.materialLocalEstoque = materialLocalEstoque;
  66 + }
  67 +
  68 + public AtendimentoRequisicaoConsumoItem getAtendimentoRequisicaoConsumoItem() {
  69 + return atendimentoRequisicaoConsumoItem;
  70 + }
  71 +
  72 + public void setAtendimentoRequisicaoConsumoItem(
  73 + AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem) {
  74 + this.atendimentoRequisicaoConsumoItem = atendimentoRequisicaoConsumoItem;
  75 + }
  76 +
  77 +}
... ...
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java
... ... @@ -16,6 +16,7 @@ import org.springframework.validation.Validator;
16 16 import br.com.centralit.api.dao.AtendimentoRequisicaoConsumoDao;
17 17 import br.com.centralit.api.model.AtendimentoRequisicaoConsumo;
18 18 import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem;
  19 +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemEndereco;
19 20 import br.com.centralit.api.model.DominioAlmoxarifado;
20 21 import br.com.centralit.api.model.MaterialLocalEstoque;
21 22 import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService;
... ... @@ -180,14 +181,16 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl&lt;
180 181  
181 182 for(AtendimentoRequisicaoConsumo atendimento : entity.getAtendimentos()){
182 183 for(AtendimentoRequisicaoConsumoItem atendimentoItem : atendimento.getAtendimentoRequisicaoConsumoItems()){
183   -
184   - if(somatorioQuantidadesAtentidasPorMaterial.containsKey(atendimentoItem.getMaterialLocalEstoque())){
185   -
186   - somatorioQuantidadesAtentidasPorMaterial.put(atendimentoItem.getMaterialLocalEstoque(),
187   - somatorioQuantidadesAtentidasPorMaterial.get(atendimentoItem.getMaterialLocalEstoque()).add(atendimentoItem.getQuantidade()));
  184 + for(AtendimentoRequisicaoConsumoItemEndereco itemEndereco : atendimentoItem.getAtendimentoRequisicaoConsumoItemEnderecos()){
188 185  
189   - }else{
190   - somatorioQuantidadesAtentidasPorMaterial.put(atendimentoItem.getMaterialLocalEstoque(), atendimentoItem.getQuantidade());
  186 + if(somatorioQuantidadesAtentidasPorMaterial.containsKey(itemEndereco.getMaterialLocalEstoque())){
  187 +
  188 + somatorioQuantidadesAtentidasPorMaterial.put(itemEndereco.getMaterialLocalEstoque(),
  189 + somatorioQuantidadesAtentidasPorMaterial.get(itemEndereco.getMaterialLocalEstoque()).add(itemEndereco.getQuantidade()));
  190 +
  191 + }else{
  192 + somatorioQuantidadesAtentidasPorMaterial.put(itemEndereco.getMaterialLocalEstoque(), itemEndereco.getQuantidade());
  193 + }
191 194 }
192 195 }
193 196 }
... ...
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java
... ... @@ -415,10 +415,6 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl&lt;MovimentoEst
415 415  
416 416 for (AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem : atendimento.getAtendimentoRequisicaoConsumoItems()) {
417 417  
418   - if(atendimentoRequisicaoConsumoItem.getQuantidade() == null){
419   - atendimentoRequisicaoConsumoItem.setQuantidade(new BigDecimal(0));;
420   - }
421   -
422 418 BigDecimal valorMovimentoFIFO = this.entradaAlmoxarifadoItemService.realizaMovimentoSaida(atendimentoRequisicaoConsumoItem.getMaterial(), atendimentoRequisicaoConsumoItem.getQuantidade());
423 419 BigDecimal valorMovimentoMediaMovel = BigDecimal.ZERO;//BigDecimal valorMovimentoMediaMovel = this.materialEstoqueSaldoMedioService.realizaMovimentoSaida(atendimentoRequisicaoConsumoItem.getMaterial(), atendimentoRequisicaoConsumoItem.getQuantidade());
424 420  
... ...
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
... ... @@ -421,6 +421,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
421 421 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REMOVER_REQUISICAO_ATENDIMENTO", "Remover requisição deste atendimento", dominio, modulo));
422 422 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REQUISICAO_EM_ATENDIMENTO", "está em atendimento pelo atendente ", dominio, modulo));
423 423 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.DESMARQUE_REQUISICAO_EM_ATENDIMENTO", "Desmarque esta requisição de consumo para prosseguir o atendimento.", dominio, modulo));
  424 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ATENDER_MAIS_DE_UM_ENDERECO", "Atender utilizando mais de um endereco", dominio, modulo));
424 425 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_NAO_INICIADO", "Somente é permitido realizar essa ação para requisições que foram iniciadas o atendimento por você. Desmarque as requisições que não foram iniciadas o atendimento para prosseguir.", dominio, modulo));
425 426 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_INICIADO_OUTRO_ATENDENTE", "Somente é permitido realizar essa ação para requisições que foram iniciadas o atendimento por você. Desmarque as requisições que foram iniciadas por outros atendentes para prosseguir.", dominio, modulo));
426 427  
... ...
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
... ... @@ -358,20 +358,25 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
358 358 var atendimentoItem = {
359 359 material : requisicaoConsumoItem.materialConsumo,
360 360 requisicaoConsumoItem : requisicaoConsumoItem,
361   - $locaisEstoque: []
  361 + $locaisEstoque: [],
  362 + atendimentoRequisicaoConsumoItemEnderecos: []
362 363 };
363 364  
364 365 MaterialLocalEstoqueRepository.buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(requisicaoConsumoItem.materialConsumo.id, req.almoxarifado.id).then(function(result) {
365   - atendimentoItem.$locaisEstoque = result;
366   -
367 366 result.forEach(function(localEstoque){
  367 + var atendimentoRequisicaoConsumoItemEndereco = {
  368 + materialLocalEstoque: localEstoque.originalElement
  369 + };
  370 +
  371 + atendimentoItem.$locaisEstoque.push(atendimentoRequisicaoConsumoItemEndereco);
  372 +
368 373 if(localEstoque.localPrincipal){
369   - atendimentoItem.materialLocalEstoque = localEstoque.originalElement;
  374 + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.push(atendimentoRequisicaoConsumoItemEndereco);
370 375 }
371 376 });
372 377 });
373 378  
374   - buscarInformacoesParaAtendimento(atendimentoItem);
  379 + //buscarInformacoesParaAtendimento(atendimentoItem);
375 380  
376 381 atendimento.atendimentoRequisicaoConsumoItems.push(atendimentoItem);
377 382 });
... ... @@ -550,5 +555,20 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
550 555 $scope.apresentarInfoAtendimentoItem = function(atendimento){
551 556 atendimento.$verInfo = !atendimento.$verInfo;
552 557 };
  558 +
  559 + $scope.openModalEnderecosMaterial = function(enderecosItem, enderecosAdicionados){
  560 + $scope.listaEnderecosSelect = [];
  561 + $scope.listaEnderecosAdicionados = enderecosAdicionados;
  562 +
  563 + enderecosItem.forEach(function(enderecoItem){
  564 + enderecosAdicionados.forEach(function(enderecoAdicionado){
  565 + if(enderecoItem.materialLocalEstoque.id != enderecoAdicionado.materialLocalEstoque.id){
  566 + $scope.listaEnderecosSelect.push(enderecoItem);
  567 + }
  568 + });
  569 + });
  570 +
  571 + $scope.$openModal('modal-atendimento-item-enderecos.html', 'md');
  572 + }
553 573  
554 574 }]);
... ...
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html
... ... @@ -113,7 +113,7 @@
113 113 <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_PEDIDA</translate></th>
114 114 <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_ATENDIDA</translate></th>
115 115 <th class="text-center" width="20%"><translate>ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE</translate></th>
116   - <th class="text-center"><translate>ALMOXARIFADO.LABEL.ATENDER</translate><span class="red">*</span></th>
  116 + <th class="text-center"><translate>ALMOXARIFADO.LABEL.ATENDER</translate><span class="red"> *</span></th>
117 117 </tr>
118 118 </thead>
119 119 <tbody>
... ... @@ -137,16 +137,25 @@
137 137 - atendimentoRequisicaoConsumoItem.$quantidade}}</td>
138 138  
139 139 <td class="text-center">
140   - <label-select ng-id="atendimentoRequisicaoConsumoItem.materialLocalEstoque$index" ng-obrigatorio="true"
141   - ng-model="atendimentoRequisicaoConsumoItem.materialLocalEstoque.id" ng-list="atendimentoRequisicaoConsumoItem.$locaisEstoque"
142   - form="atendimentoRequisicaoConsumoForm"
143   - ng-custom-options="materialLocalEstoque.id as materialLocalEstoque.endereco.descricao for materialLocalEstoque"></label-select>
144   -
  140 + <table style="width: 100%">
  141 + <tr>
  142 + <td>
  143 + <label-select ng-id="atendimentoRequisicaoConsumoItem.materialLocalEstoque$index" ng-obrigatorio="true"
  144 + ng-model="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos[0]" ng-list="atendimentoRequisicaoConsumoItem.$locaisEstoque"
  145 + form="atendimentoRequisicaoConsumoForm"
  146 + ng-custom-options="atendimentoRequisicaoConsumoItemEndereco as atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.endereco.descricao for atendimentoRequisicaoConsumoItemEndereco"></label-select>
  147 + </td>
  148 + <td style="padding-left: 8px; text-align: right;">
  149 + <i class="fa fa-plus green" style="cursor: pointer;" ng-click="openModalEnderecosMaterial(atendimentoRequisicaoConsumoItem.$locaisEstoque, atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos)"
  150 + tooltip="{{$translate.instant('ALMOXARIFADO.MSG.ATENDER_MAIS_DE_UM_ENDERECO')}}"/>
  151 + </td>
  152 + </tr>
  153 + </table>
145 154 </td>
146 155  
147 156 <td ng-if="atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidade != atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida" class="text-center">
148 157 <label-input-decimal ng-id="atendimentoRequisicaoConsumoItem.quantidade$index" ng-obrigatorio="true" ng-evento-blur="aplicarValidacaoDecimal"
149   - ng-model="atendimentoRequisicaoConsumoItem.quantidade" form="atendimentoRequisicaoConsumoForm" ng-disabled="!edit" ng-custom-maxlength="{{atendimentoRequisicaoConsumoItem.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 4 : 11}}"
  158 + ng-model="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos[0].quantidade" form="atendimentoRequisicaoConsumoForm" ng-disabled="!edit" ng-custom-maxlength="{{atendimentoRequisicaoConsumoItem.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 4 : 11}}"
150 159 ng-precisao="{{atendimentoRequisicaoConsumoItem.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 'decimal'}}" />
151 160 </td>
152 161 <td class="text-center" ng-show="atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidade == atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida">
... ... @@ -226,5 +235,9 @@
226 235 </div>
227 236 </fieldset>
228 237 </div>
  238 +
  239 + <script type="text/ng-template" id="modal-atendimento-item-enderecos.html">
  240 + <div ng-include src="'/cit-almoxarifado-web/html/atendimentoRequisicaoConsumo/dialog_atendimento_item_enderecos.html'" />
  241 + </script>
229 242 </form>
230 243 </div>
... ...
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/dialog_atendimento_item_enderecos.html 0 → 100644
... ... @@ -0,0 +1,72 @@
  1 +<div class="modal-header">
  2 + <button class="btn btn-clear" type="button"
  3 + title="{{$translate.instant('ALMOXARIFADO.LABEL.FILTRAR')}}"
  4 + alt="{{$translate.instant('ALMOXARIFADO.LABEL.FILTRAR')}}"
  5 + ng-click="filtrarRequisicoes();">
  6 + <i class="fa fa-plus-circle yellow-dark"></i>
  7 + <translate>ALMOXARIFADO.LABEL.FILTRAR</translate>
  8 + </button>
  9 +
  10 + <button title="{{$translate.instant('LABEL.LIMPAR')}}"
  11 + alt="{{$translate.instant('LABEL.LIMPAR')}}"
  12 + ng-click="limparBuscaAvancada()" class="btn btn-clear" type="button">
  13 + <i class="fa fa-eraser"></i>
  14 + <translate>LABEL.LIMPAR</translate>
  15 + </button>
  16 +
  17 + <button title="{{$translate.instant('LABEL.CANCELAR')}}"
  18 + alt="{{$translate.instant('LABEL.CANCELAR')}}"
  19 + ng-click="$dismiss('cancel');" class="btn btn-clear" type="button">
  20 + <i class="fa fa-times red"></i>
  21 + <translate>LABEL.CANCELAR</translate>
  22 + </button>
  23 +</div>
  24 +
  25 +<div class="modal-body">
  26 + <legend style="font-size: 20px">
  27 + <translate>LABEL.MATERIAIS</translate>
  28 + </legend>
  29 +
  30 + <div class="row">
  31 + <div class="col-md-12">
  32 + <label-select ng-id="selectEnderecosMaterial" ng-obrigatorio="true"
  33 + ng-model="enderecoSelecionado" ng-list="listaEnderecosSelect"
  34 + ng-custom-options="atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.endereco.descricao for atendimentoRequisicaoConsumoItemEndereco"></label-select>
  35 + </div>
  36 + </div>
  37 + <div class="row">
  38 + <div class="col-sm-12">
  39 + <div class="panel panel-default">
  40 + <div class="panel-heading clearfix">
  41 + <button class="btn btn-clear" type="button"
  42 + <i class="fa fa-times red"></i>
  43 + <translate>LABEL.REMOVER</translate>
  44 + </button>
  45 + </div>
  46 + <table class="table table-bordered table-striped">
  47 + <thead>
  48 + <tr>
  49 + <th style="width: 3%;" class="text-center"><input type="checkbox" ng-model="filtroAtendimento.unidadeRequisitanteSelectedAll" ng-click="selectAllUnidadesRequisitantes(unidadeRequisitanteSelectedAll)" /></th>
  50 + <th style="text-align: center"><translate>ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE</translate></th>
  51 + <th style="text-align: center"><translate>ALMOXARIFADO.LABEL.SALDO_ENDERECO</translate></th>
  52 + <th style="text-align: center"><translate>ALMOXARIFADO.LABEL.ATENDER</translate></th>
  53 + </tr>
  54 + </thead>
  55 + <tbody ng-repeat="atendimentoRequisicaoConsumoItemEndereco in listaEnderecosAdicionados">
  56 + <tr>
  57 + <td class="text-center"><input type="checkbox" ng-checked="unidadeRequisitanteSelecionada.$checkedChBox" ng-model="unidadeRequisitanteSelecionada.$checkedChBox" /></td>
  58 + <td class="text-center">{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.endereco.descricao}}</td>
  59 + <td class="text-center">{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.quantidade}}</td>
  60 + <td class="text-center">
  61 + <label-input-decimal ng-id="atendimentoRequisicaoConsumoItemEndereco.quantidade" ng-obrigatorio="true" ng-evento-blur="aplicarValidacaoDecimal"
  62 + ng-model="atendimentoRequisicaoConsumoItemEndereco.quantidade" form="atendimentoRequisicaoConsumoForm"
  63 + ng-custom-maxlength="{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.materialEstoque.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 4 : 11}}"
  64 + ng-precisao="{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.materialEstoque.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 'decimal'}}" />
  65 + </td>
  66 + </tr>
  67 + </tbody>
  68 + </table>
  69 + </div>
  70 + </div>
  71 + </div>
  72 +</div>
... ...