Commit 34be4cdbced2a87af6a14cd287b7a3d1fcd5e28b

Authored by Ronan Tavares Camargo
1 parent eed71063
Exists in master

Redmine #3822

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 br.com.centralit.api.framework.json.ViewsAlmoxarifado;
... ... @@ -79,13 +82,9 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan
79 82 @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class })
80 83 private MaterialConsumo material;
81 84  
82   - /** Atributo quantidade. */
83   - @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class })
84   - private BigDecimal quantidade;
85   -
86   - @ManyToOne(fetch = FetchType.LAZY, optional = false)
87   - @JsonView({ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class})
88   - private MaterialLocalEstoque materialLocalEstoque;
  85 + @OneToMany(fetch = FetchType.LAZY, mappedBy = "atendimentoRequisicaoConsumoItem", cascade = CascadeType.ALL, orphanRemoval = true)
  86 + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class })
  87 + private Collection<AtendimentoRequisicaoConsumoItemEndereco> atendimentoRequisicaoConsumoItemEnderecos;
89 88  
90 89 /**
91 90 * Retorna o valor do atributo <code>id</code>
... ... @@ -148,26 +147,6 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan
148 147 }
149 148  
150 149 /**
151   - * Retorna o valor do atributo <code>quantidade</code>
152   - *
153   - * @return <code>BigDecimal</code>
154   - */
155   - public BigDecimal getQuantidade() {
156   -
157   - return quantidade;
158   - }
159   -
160   - /**
161   - * Define o valor do atributo <code>quantidade</code>.
162   - *
163   - * @param quantidade
164   - */
165   - public void setQuantidade(BigDecimal quantidade) {
166   -
167   - this.quantidade = quantidade;
168   - }
169   -
170   - /**
171 150 * Retorna o valor do atributo <code>requisicaoConsumoItem</code>
172 151 *
173 152 * @return <code>RequisicaoConsumoItem</code>
... ... @@ -187,11 +166,23 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan
187 166 this.requisicaoConsumoItem = requisicaoConsumoItem;
188 167 }
189 168  
190   - public MaterialLocalEstoque getMaterialLocalEstoque() {
191   - return materialLocalEstoque;
  169 + public Collection<AtendimentoRequisicaoConsumoItemEndereco> getAtendimentoRequisicaoConsumoItemEnderecos() {
  170 + return atendimentoRequisicaoConsumoItemEnderecos;
192 171 }
193 172  
194   - public void setMaterialLocalEstoque(MaterialLocalEstoque materialLocalEstoque) {
195   - this.materialLocalEstoque = materialLocalEstoque;
  173 + public void setAtendimentoRequisicaoConsumoItemEnderecos(Collection<AtendimentoRequisicaoConsumoItemEndereco> atendimentoRequisicaoConsumoItemEnderecos) {
  174 + this.atendimentoRequisicaoConsumoItemEnderecos = atendimentoRequisicaoConsumoItemEnderecos;
  175 + }
  176 +
  177 + public BigDecimal getQuantidade(){
  178 + BigDecimal quantidade = BigDecimal.ZERO;
  179 +
  180 + if(atendimentoRequisicaoConsumoItemEnderecos != null){
  181 + for(AtendimentoRequisicaoConsumoItemEndereco itemEndereco : atendimentoRequisicaoConsumoItemEnderecos){
  182 + quantidade = quantidade.add(itemEndereco.getQuantidade());
  183 + }
  184 + }
  185 +
  186 + return quantidade;
196 187 }
197 188 }
... ...
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;
... ... @@ -178,14 +179,16 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl&lt;
178 179  
179 180 for(AtendimentoRequisicaoConsumo atendimento : entity.getAtendimentos()){
180 181 for(AtendimentoRequisicaoConsumoItem atendimentoItem : atendimento.getAtendimentoRequisicaoConsumoItems()){
181   -
182   - if(somatorioQuantidadesAtentidasPorMaterial.containsKey(atendimentoItem.getMaterialLocalEstoque())){
183   -
184   - somatorioQuantidadesAtentidasPorMaterial.put(atendimentoItem.getMaterialLocalEstoque(),
185   - somatorioQuantidadesAtentidasPorMaterial.get(atendimentoItem.getMaterialLocalEstoque()).add(atendimentoItem.getQuantidade()));
  182 + for(AtendimentoRequisicaoConsumoItemEndereco itemEndereco : atendimentoItem.getAtendimentoRequisicaoConsumoItemEnderecos()){
186 183  
187   - }else{
188   - somatorioQuantidadesAtentidasPorMaterial.put(atendimentoItem.getMaterialLocalEstoque(), atendimentoItem.getQuantidade());
  184 + if(somatorioQuantidadesAtentidasPorMaterial.containsKey(itemEndereco.getMaterialLocalEstoque())){
  185 +
  186 + somatorioQuantidadesAtentidasPorMaterial.put(itemEndereco.getMaterialLocalEstoque(),
  187 + somatorioQuantidadesAtentidasPorMaterial.get(itemEndereco.getMaterialLocalEstoque()).add(itemEndereco.getQuantidade()));
  188 +
  189 + }else{
  190 + somatorioQuantidadesAtentidasPorMaterial.put(itemEndereco.getMaterialLocalEstoque(), itemEndereco.getQuantidade());
  191 + }
189 192 }
190 193 }
191 194 }
... ...
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
... ... @@ -415,6 +415,7 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
415 415 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INFO_FILTRO_MATERIAL_REQUISICAO", "O atendimento será realizado para os materiais selecionados na busca avançada.", dominio, modulo));
416 416  
417 417 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REMOVER_REQUISICAO_ATENDIMENTO", "Remover requisição deste atendimento", dominio, modulo));
  418 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ATENDER_MAIS_DE_UM_ENDERECO", "Atender utilizando mais de um endereco", dominio, modulo));
418 419  
419 420 }
420 421 }
... ...
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
... ... @@ -350,20 +350,25 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
350 350 var atendimentoItem = {
351 351 material : requisicaoConsumoItem.materialConsumo,
352 352 requisicaoConsumoItem : requisicaoConsumoItem,
353   - $locaisEstoque: []
  353 + $locaisEstoque: [],
  354 + atendimentoRequisicaoConsumoItemEnderecos: []
354 355 };
355 356  
356 357 MaterialLocalEstoqueRepository.buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(requisicaoConsumoItem.materialConsumo.id, req.almoxarifado.id).then(function(result) {
357   - atendimentoItem.$locaisEstoque = result;
358   -
359 358 result.forEach(function(localEstoque){
  359 + var atendimentoRequisicaoConsumoItemEndereco = {
  360 + materialLocalEstoque: localEstoque.originalElement
  361 + };
  362 +
  363 + atendimentoItem.$locaisEstoque.push(atendimentoRequisicaoConsumoItemEndereco);
  364 +
360 365 if(localEstoque.localPrincipal){
361   - atendimentoItem.materialLocalEstoque = localEstoque.originalElement;
  366 + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.push(atendimentoRequisicaoConsumoItemEndereco);
362 367 }
363 368 });
364 369 });
365 370  
366   - buscarInformacoesParaAtendimento(atendimentoItem);
  371 + //buscarInformacoesParaAtendimento(atendimentoItem);
367 372  
368 373 atendimento.atendimentoRequisicaoConsumoItems.push(atendimentoItem);
369 374 });
... ... @@ -542,5 +547,20 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
542 547 $scope.apresentarInfoAtendimentoItem = function(atendimento){
543 548 atendimento.$verInfo = !atendimento.$verInfo;
544 549 };
  550 +
  551 + $scope.openModalEnderecosMaterial = function(enderecosItem, enderecosAdicionados){
  552 + $scope.listaEnderecosSelect = [];
  553 + $scope.listaEnderecosAdicionados = enderecosAdicionados;
  554 +
  555 + enderecosItem.forEach(function(enderecoItem){
  556 + enderecosAdicionados.forEach(function(enderecoAdicionado){
  557 + if(enderecoItem.materialLocalEstoque.id != enderecoAdicionado.materialLocalEstoque.id){
  558 + $scope.listaEnderecosSelect.push(enderecoItem);
  559 + }
  560 + });
  561 + });
  562 +
  563 + $scope.$openModal('modal-atendimento-item-enderecos.html', 'md');
  564 + }
545 565  
546 566 }]);
... ...
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>
... ...