Commit c3f40fa6e94b2198c0e8d5c6980283ec41700fc9
Exists in
master
Merge branch 'tarefa-3943' of http://ferramentasgo.centralit.com.br:8080/scm/git…
…/cit-grp-almoxarifado into tarefa-3943
Showing
8 changed files
with
363 additions
and
34 deletions
Show diff stats
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/EntradaAlmoxarifado.java
@@ -17,11 +17,17 @@ import javax.persistence.OneToMany; | @@ -17,11 +17,17 @@ import javax.persistence.OneToMany; | ||
17 | import javax.persistence.Table; | 17 | import javax.persistence.Table; |
18 | import javax.persistence.Temporal; | 18 | import javax.persistence.Temporal; |
19 | import javax.persistence.TemporalType; | 19 | import javax.persistence.TemporalType; |
20 | +import javax.persistence.Transient; | ||
20 | 21 | ||
21 | import org.hibernate.envers.AuditJoinTable; | 22 | import org.hibernate.envers.AuditJoinTable; |
22 | import org.hibernate.envers.Audited; | 23 | import org.hibernate.envers.Audited; |
23 | import org.hibernate.envers.NotAudited; | 24 | import org.hibernate.envers.NotAudited; |
24 | 25 | ||
26 | +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||
27 | +import com.fasterxml.jackson.annotation.JsonView; | ||
28 | +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; | ||
29 | +import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||
30 | + | ||
25 | import br.com.centralit.api.framework.json.ViewsAdmMateriais; | 31 | import br.com.centralit.api.framework.json.ViewsAdmMateriais; |
26 | import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; | 32 | import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; |
27 | import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; | 33 | import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; |
@@ -31,11 +37,6 @@ import br.com.centralit.framework.model.Dominio; | @@ -31,11 +37,6 @@ import br.com.centralit.framework.model.Dominio; | ||
31 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; | 37 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; |
32 | import br.com.centralit.framework.util.UtilObjeto; | 38 | import br.com.centralit.framework.util.UtilObjeto; |
33 | 39 | ||
34 | -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||
35 | -import com.fasterxml.jackson.annotation.JsonView; | ||
36 | -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; | ||
37 | -import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||
38 | - | ||
39 | /** | 40 | /** |
40 | * <p> | 41 | * <p> |
41 | * <img src="http://centralit.com.br/images/logo_central.png"> | 42 | * <img src="http://centralit.com.br/images/logo_central.png"> |
@@ -76,11 +77,13 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | @@ -76,11 +77,13 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | ||
76 | 77 | ||
77 | /** Atributo serialVersionUID. */ | 78 | /** Atributo serialVersionUID. */ |
78 | private static final long serialVersionUID = 6267732497145774401L; | 79 | private static final long serialVersionUID = 6267732497145774401L; |
79 | - | 80 | + |
80 | /** Atributo id. */ | 81 | /** Atributo id. */ |
81 | @Id | 82 | @Id |
82 | -// @SequenceGenerator(name = "entrada_id_seq", sequenceName = "entrada_id_seq") | ||
83 | -// @GeneratedValue(strategy = GenerationType.AUTO, generator = "entrada_id_seq") | 83 | + // @SequenceGenerator(name = "entrada_id_seq", sequenceName = |
84 | + // "entrada_id_seq") | ||
85 | + // @GeneratedValue(strategy = GenerationType.AUTO, generator = | ||
86 | + // "entrada_id_seq") | ||
84 | @GeneratedValue(strategy = GenerationType.AUTO) | 87 | @GeneratedValue(strategy = GenerationType.AUTO) |
85 | @JsonView({ Views.GenericView.class }) | 88 | @JsonView({ Views.GenericView.class }) |
86 | private Long id; | 89 | private Long id; |
@@ -98,7 +101,8 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | @@ -98,7 +101,8 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | ||
98 | @Temporal(TemporalType.TIMESTAMP) | 101 | @Temporal(TemporalType.TIMESTAMP) |
99 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) | 102 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) |
100 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) | 103 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) |
101 | - @JsonView({ Views.EntradaListView.class, Views.BemPatrimonialEditView.class, Views.BemPatrimonialListView.class, Views.BemPatrimonialAutoCompleteView.class, Views.GenericView.class }) | 104 | + @JsonView({ Views.EntradaListView.class, Views.BemPatrimonialEditView.class, Views.BemPatrimonialListView.class, |
105 | + Views.BemPatrimonialAutoCompleteView.class, Views.GenericView.class }) | ||
102 | private Calendar dataContabil; | 106 | private Calendar dataContabil; |
103 | 107 | ||
104 | /** Atributo dataRecebimento. */ | 108 | /** Atributo dataRecebimento. */ |
@@ -106,7 +110,7 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | @@ -106,7 +110,7 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | ||
106 | @Temporal(TemporalType.TIMESTAMP) | 110 | @Temporal(TemporalType.TIMESTAMP) |
107 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) | 111 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) |
108 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) | 112 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) |
109 | - @JsonView({ Views.EntradaListView.class, Views.BemPatrimonialEditView.class }) | 113 | + @JsonView({ Views.EntradaListView.class, Views.BemPatrimonialEditView.class }) |
110 | private Calendar dataRecebimento; | 114 | private Calendar dataRecebimento; |
111 | 115 | ||
112 | /** Atributo codigo. */ | 116 | /** Atributo codigo. */ |
@@ -150,12 +154,12 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | @@ -150,12 +154,12 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | ||
150 | /** Atributo codigo. */ | 154 | /** Atributo codigo. */ |
151 | @Column(length = 30) | 155 | @Column(length = 30) |
152 | private String codigoAsi; | 156 | private String codigoAsi; |
153 | - | 157 | + |
154 | /** Atributo entrada concluida. */ | 158 | /** Atributo entrada concluida. */ |
155 | @Column(name = "isentradaconcluida") | 159 | @Column(name = "isentradaconcluida") |
156 | @JsonView({ Views.EntradaListView.class }) | 160 | @JsonView({ Views.EntradaListView.class }) |
157 | private Boolean isEntradaConcluida; | 161 | private Boolean isEntradaConcluida; |
158 | - | 162 | + |
159 | /** Atributo entrada contabilizada. */ | 163 | /** Atributo entrada contabilizada. */ |
160 | @Column(name = "iscontabilizada") | 164 | @Column(name = "iscontabilizada") |
161 | @JsonView({ Views.EntradaListView.class }) | 165 | @JsonView({ Views.EntradaListView.class }) |
@@ -175,15 +179,19 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | @@ -175,15 +179,19 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | ||
175 | @OneToMany(fetch = FetchType.LAZY, mappedBy = "entrada", cascade = CascadeType.ALL, orphanRemoval = true) | 179 | @OneToMany(fetch = FetchType.LAZY, mappedBy = "entrada", cascade = CascadeType.ALL, orphanRemoval = true) |
176 | @JsonView({ ViewsAdmMateriais.EntradaAlmoxarifadoEditView.class }) | 180 | @JsonView({ ViewsAdmMateriais.EntradaAlmoxarifadoEditView.class }) |
177 | private Collection<EntradaAlmoxarifadoItem> entradasItem; | 181 | private Collection<EntradaAlmoxarifadoItem> entradasItem; |
178 | - | 182 | + |
179 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 183 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
180 | @JsonView({ ViewsAdmMateriais.EntradaAlmoxarifadoEditView.class }) | 184 | @JsonView({ ViewsAdmMateriais.EntradaAlmoxarifadoEditView.class }) |
181 | private Dominio dominioFinalidade; | 185 | private Dominio dominioFinalidade; |
182 | - | 186 | + |
183 | @ManyToOne(fetch = FetchType.LAZY, optional = true) | 187 | @ManyToOne(fetch = FetchType.LAZY, optional = true) |
184 | @JsonView(ViewsAdmMateriais.EntradaAlmoxarifadoEditView.class) | 188 | @JsonView(ViewsAdmMateriais.EntradaAlmoxarifadoEditView.class) |
185 | private EstruturaOrganizacional unidadeRequisitante; | 189 | private EstruturaOrganizacional unidadeRequisitante; |
186 | 190 | ||
191 | + @Transient | ||
192 | + @JsonView({ ViewsAdmMateriais.EntradaAlmoxarifadoEditView.class }) | ||
193 | + private Long rascunho; | ||
194 | + | ||
187 | /** | 195 | /** |
188 | * Retorna o valor do atributo <code>id</code> | 196 | * Retorna o valor do atributo <code>id</code> |
189 | * | 197 | * |
@@ -433,17 +441,17 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | @@ -433,17 +441,17 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | ||
433 | 441 | ||
434 | this.dataReferencia = dataReferencia; | 442 | this.dataReferencia = dataReferencia; |
435 | } | 443 | } |
436 | - | 444 | + |
437 | /** | 445 | /** |
438 | * Define o valor do atributo <code>isEntradaConcluida</code>. | 446 | * Define o valor do atributo <code>isEntradaConcluida</code>. |
439 | * | 447 | * |
440 | * @param isEntradaConcluida | 448 | * @param isEntradaConcluida |
441 | */ | 449 | */ |
442 | public void setIsEntradaConcluida(Boolean isEntradaConcluida) { | 450 | public void setIsEntradaConcluida(Boolean isEntradaConcluida) { |
443 | - | 451 | + |
444 | this.isEntradaConcluida = isEntradaConcluida; | 452 | this.isEntradaConcluida = isEntradaConcluida; |
445 | } | 453 | } |
446 | - | 454 | + |
447 | /** | 455 | /** |
448 | * Retorna o valor do atributo <code>isEntradaConcluida</code> | 456 | * Retorna o valor do atributo <code>isEntradaConcluida</code> |
449 | * | 457 | * |
@@ -453,24 +461,24 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | @@ -453,24 +461,24 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | ||
453 | 461 | ||
454 | return isEntradaConcluida; | 462 | return isEntradaConcluida; |
455 | } | 463 | } |
456 | - | 464 | + |
457 | /** | 465 | /** |
458 | * Define o valor do atributo <code>isContabilizada</code>. | 466 | * Define o valor do atributo <code>isContabilizada</code>. |
459 | * | 467 | * |
460 | * @param isContabilizada | 468 | * @param isContabilizada |
461 | */ | 469 | */ |
462 | public void setIsContabilizada(Boolean isContabilizada) { | 470 | public void setIsContabilizada(Boolean isContabilizada) { |
463 | - | 471 | + |
464 | this.isContabilizada = isContabilizada; | 472 | this.isContabilizada = isContabilizada; |
465 | } | 473 | } |
466 | - | 474 | + |
467 | /** | 475 | /** |
468 | * Retorna o valor do atributo <code>isContabilizada</code> | 476 | * Retorna o valor do atributo <code>isContabilizada</code> |
469 | * | 477 | * |
470 | * @return <code>IsContabilizada</code> | 478 | * @return <code>IsContabilizada</code> |
471 | */ | 479 | */ |
472 | public Boolean getIsContabilizada() { | 480 | public Boolean getIsContabilizada() { |
473 | - | 481 | + |
474 | return isContabilizada; | 482 | return isContabilizada; |
475 | } | 483 | } |
476 | 484 | ||
@@ -489,7 +497,7 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | @@ -489,7 +497,7 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | ||
489 | return this; | 497 | return this; |
490 | } | 498 | } |
491 | } | 499 | } |
492 | - | 500 | + |
493 | /** | 501 | /** |
494 | * Retorna o valor do atributo <code>almoxarifado</code> | 502 | * Retorna o valor do atributo <code>almoxarifado</code> |
495 | * | 503 | * |
@@ -565,5 +573,13 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | @@ -565,5 +573,13 @@ public class EntradaAlmoxarifado extends PersistentObjectAuditOrganizacao implem | ||
565 | public void setUnidadeRequisitante(EstruturaOrganizacional unidadeRequisitante) { | 573 | public void setUnidadeRequisitante(EstruturaOrganizacional unidadeRequisitante) { |
566 | this.unidadeRequisitante = unidadeRequisitante; | 574 | this.unidadeRequisitante = unidadeRequisitante; |
567 | } | 575 | } |
568 | - | 576 | + |
577 | + public Long getRascunho() { | ||
578 | + return rascunho; | ||
579 | + } | ||
580 | + | ||
581 | + public void setRascunho(Long rascunho) { | ||
582 | + this.rascunho = rascunho; | ||
583 | + } | ||
584 | + | ||
569 | } | 585 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/EntradaAlmoxarifadoItem.java
@@ -66,7 +66,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | @@ -66,7 +66,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||
66 | @Audited | 66 | @Audited |
67 | @Entity | 67 | @Entity |
68 | @Table(name = "alm_en_entradaitem") | 68 | @Table(name = "alm_en_entradaitem") |
69 | -@JsonIgnoreProperties({ "$quantidadeEntrada", "uuid", "$validarPrecoMedio" }) | 69 | +@JsonIgnoreProperties({ "$quantidadeEntrada", "uuid", "$validarPrecoMedio", "$checked" }) |
70 | public class EntradaAlmoxarifadoItem extends PersistentObjectAudit { | 70 | public class EntradaAlmoxarifadoItem extends PersistentObjectAudit { |
71 | 71 | ||
72 | /** Atributo serialVersionUID. */ | 72 | /** Atributo serialVersionUID. */ |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoServiceImpl.java
1 | package br.com.centralit.api.service.impl; | 1 | package br.com.centralit.api.service.impl; |
2 | 2 | ||
3 | +import java.util.ArrayList; | ||
3 | import java.util.Calendar; | 4 | import java.util.Calendar; |
4 | import java.util.HashMap; | 5 | import java.util.HashMap; |
5 | import java.util.List; | 6 | import java.util.List; |
6 | import java.util.Map; | 7 | import java.util.Map; |
7 | 8 | ||
9 | +import org.apache.commons.lang3.StringUtils; | ||
8 | import org.springframework.beans.factory.annotation.Autowired; | 10 | import org.springframework.beans.factory.annotation.Autowired; |
9 | import org.springframework.beans.factory.annotation.Qualifier; | 11 | import org.springframework.beans.factory.annotation.Qualifier; |
10 | import org.springframework.stereotype.Service; | 12 | import org.springframework.stereotype.Service; |
11 | import org.springframework.validation.Validator; | 13 | import org.springframework.validation.Validator; |
12 | 14 | ||
15 | +import com.drew.lang.StringUtil; | ||
16 | + | ||
13 | import br.com.centralit.api.dao.EntradaAlmoxarifadoDao; | 17 | import br.com.centralit.api.dao.EntradaAlmoxarifadoDao; |
18 | +import br.com.centralit.api.model.BemAlmoxarifadoCaracteristica; | ||
14 | import br.com.centralit.api.model.ContaContabilMovimento; | 19 | import br.com.centralit.api.model.ContaContabilMovimento; |
15 | import br.com.centralit.api.model.EntradaAlmoxarifado; | 20 | import br.com.centralit.api.model.EntradaAlmoxarifado; |
16 | import br.com.centralit.api.model.EntradaAlmoxarifadoDocumento; | 21 | import br.com.centralit.api.model.EntradaAlmoxarifadoDocumento; |
@@ -28,6 +33,7 @@ import br.com.centralit.api.service.MaterialCaracteristicaService; | @@ -28,6 +33,7 @@ import br.com.centralit.api.service.MaterialCaracteristicaService; | ||
28 | import br.com.centralit.api.service.MaterialConsumoService; | 33 | import br.com.centralit.api.service.MaterialConsumoService; |
29 | import br.com.centralit.api.service.MovimentoEstoqueService; | 34 | import br.com.centralit.api.service.MovimentoEstoqueService; |
30 | import br.com.centralit.api.service.ParceiroService; | 35 | import br.com.centralit.api.service.ParceiroService; |
36 | +import br.com.centralit.api.service.RascunhoService; | ||
31 | import br.com.centralit.api.service.UnidadeMedidaService; | 37 | import br.com.centralit.api.service.UnidadeMedidaService; |
32 | import br.com.centralit.api.service.UsuarioService; | 38 | import br.com.centralit.api.service.UsuarioService; |
33 | import br.com.centralit.api.service.validation.EntradaAlmoxarifadoAllValidator; | 39 | import br.com.centralit.api.service.validation.EntradaAlmoxarifadoAllValidator; |
@@ -111,6 +117,9 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | @@ -111,6 +117,9 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | ||
111 | @Autowired | 117 | @Autowired |
112 | private ConfiguracaoParametroSistemaService configuracaoParametroSistemaService; | 118 | private ConfiguracaoParametroSistemaService configuracaoParametroSistemaService; |
113 | 119 | ||
120 | + @Autowired | ||
121 | + private RascunhoService rascunhoService; | ||
122 | + | ||
114 | private Validator validatorBasic; | 123 | private Validator validatorBasic; |
115 | 124 | ||
116 | private Validator validatorAll; | 125 | private Validator validatorAll; |
@@ -150,6 +159,8 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | @@ -150,6 +159,8 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | ||
150 | configurarNotaRecebimento(entradaAlmoxarifado); | 159 | configurarNotaRecebimento(entradaAlmoxarifado); |
151 | 160 | ||
152 | entrada.setCodigo(String.valueOf(entradaAlmoxarifado.getNotaRecebimento())); | 161 | entrada.setCodigo(String.valueOf(entradaAlmoxarifado.getNotaRecebimento())); |
162 | + | ||
163 | + rascunhoService.removeById(entrada.getRascunho()); | ||
153 | 164 | ||
154 | return entradaAlmoxarifado; | 165 | return entradaAlmoxarifado; |
155 | } | 166 | } |
@@ -232,16 +243,24 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | @@ -232,16 +243,24 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | ||
232 | entradaAlmoxarifadoItem.setUnidadeMedidaEntrada(this.unidadeMedidaService.find(entradaAlmoxarifadoItem.getUnidadeMedidaEntrada().getId())); | 243 | entradaAlmoxarifadoItem.setUnidadeMedidaEntrada(this.unidadeMedidaService.find(entradaAlmoxarifadoItem.getUnidadeMedidaEntrada().getId())); |
233 | 244 | ||
234 | entradaAlmoxarifadoItem.setEntrada(entrada); | 245 | entradaAlmoxarifadoItem.setEntrada(entrada); |
246 | + | ||
247 | + List<BemAlmoxarifadoCaracteristica> caracteristicas = new ArrayList<BemAlmoxarifadoCaracteristica>(); | ||
235 | 248 | ||
236 | //TODO Arrumar caracteristicas | 249 | //TODO Arrumar caracteristicas |
237 | - /*for (BemAlmoxarifadoCaracteristica bemAlmoxarifadoCaracteristica : entradaAlmoxarifadoItem.getCaracteristicas()) { | ||
238 | - | ||
239 | - bemAlmoxarifadoCaracteristica.setMaterialCaracteristica(this.materialCaracteristicaService.find(bemAlmoxarifadoCaracteristica.getMaterialCaracteristica().getId())); | ||
240 | - | ||
241 | - bemAlmoxarifadoCaracteristica.setCaracteristica(bemAlmoxarifadoCaracteristica.getMaterialCaracteristica().getCaracteristica()); | 250 | + for (BemAlmoxarifadoCaracteristica bemAlmoxarifadoCaracteristica : entradaAlmoxarifadoItem.getCaracteristicas()) { |
251 | + | ||
252 | + if(StringUtils.isNotBlank(bemAlmoxarifadoCaracteristica.getValorCaracteristica())){ | ||
253 | + bemAlmoxarifadoCaracteristica.setMaterialCaracteristica(this.materialCaracteristicaService.find(bemAlmoxarifadoCaracteristica.getMaterialCaracteristica().getId())); | ||
254 | + | ||
255 | + bemAlmoxarifadoCaracteristica.setCaracteristica(bemAlmoxarifadoCaracteristica.getMaterialCaracteristica().getCaracteristica()); | ||
256 | + | ||
257 | + bemAlmoxarifadoCaracteristica.setEntradaItem(entradaAlmoxarifadoItem); | ||
258 | + caracteristicas.add(bemAlmoxarifadoCaracteristica); | ||
259 | + } | ||
242 | 260 | ||
243 | - bemAlmoxarifadoCaracteristica.setEntradaItem(entradaAlmoxarifadoItem); | ||
244 | - }*/ | 261 | + } |
262 | + | ||
263 | + entradaAlmoxarifadoItem.setCaracteristicas(caracteristicas); | ||
245 | 264 | ||
246 | } | 265 | } |
247 | 266 |
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
@@ -310,6 +310,9 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -310,6 +310,9 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
310 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CONCLUIR_ENTRADA_BTN", "Concluir", dominio, modulo)); | 310 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CONCLUIR_ENTRADA_BTN", "Concluir", dominio, modulo)); |
311 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CONCLUIR_E_CONTABILIZAR_ENTRADA", "Concluir e contabilizar", dominio, modulo)); | 311 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CONCLUIR_E_CONTABILIZAR_ENTRADA", "Concluir e contabilizar", dominio, modulo)); |
312 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CONCLUIR_E_DESCONTABILIZAR_ENTRADA", "Concluir e descontabilizar", dominio, modulo)); | 312 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CONCLUIR_E_DESCONTABILIZAR_ENTRADA", "Concluir e descontabilizar", dominio, modulo)); |
313 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.DEFINIR_CARACTERISTICAS", "Definir características", dominio, modulo)); | ||
314 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CARACTERISTICAS_GENERICAS", "Características genéricas", dominio, modulo)); | ||
315 | + | ||
313 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_S", "Atendimento(s)", dominio, modulo)); | 316 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_S", "Atendimento(s)", dominio, modulo)); |
314 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.BAIXA_S", "Baixa(s)", dominio, modulo)); | 317 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.BAIXA_S", "Baixa(s)", dominio, modulo)); |
315 | } | 318 | } |
@@ -360,6 +363,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -360,6 +363,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
360 | 363 | ||
361 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_CONTABILIZADA", "Entrada contabilizada com sucesso!", dominio, modulo)); | 364 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_CONTABILIZADA", "Entrada contabilizada com sucesso!", dominio, modulo)); |
362 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_DESCONTABILIZADA", "Entrada descontabilizada com sucesso!", dominio, modulo)); | 365 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_DESCONTABILIZADA", "Entrada descontabilizada com sucesso!", dominio, modulo)); |
366 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.SELECIONE_UM_ITEM_PARA_DEFINIR_CARAC", "Selecione um item para definir suas características!", dominio, modulo)); | ||
367 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAL_NAO_POSSUI_CARACTERISTICAS", "Material não possui características cadastradas.", dominio, modulo)); | ||
363 | } | 368 | } |
364 | } | 369 | } |
365 | 370 |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EntradaAlmoxarifadoController.js
@@ -2,10 +2,10 @@ | @@ -2,10 +2,10 @@ | ||
2 | 2 | ||
3 | citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUploader', 'EntradaAlmoxarifadoRepository', 'EstruturaOrganizacionalAlmoxarifadoRepository', '$translate', '$timeout', | 3 | citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUploader', 'EntradaAlmoxarifadoRepository', 'EstruturaOrganizacionalAlmoxarifadoRepository', '$translate', '$timeout', |
4 | 'DominioRepository', 'FornecedorRepository', 'MaterialConsumoRepository', 'EntradaAlmoxarifadoItemRepository', 'MaterialLocalEstoqueRepository', | 4 | 'DominioRepository', 'FornecedorRepository', 'MaterialConsumoRepository', 'EntradaAlmoxarifadoItemRepository', 'MaterialLocalEstoqueRepository', |
5 | - 'MovimentoEstoqueRepository', | 5 | + 'MovimentoEstoqueRepository','$q','MaterialRepository', |
6 | function EntradaAlmoxarifadoController($scope, $filter, FileUploader, EntradaAlmoxarifadoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, | 6 | function EntradaAlmoxarifadoController($scope, $filter, FileUploader, EntradaAlmoxarifadoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, |
7 | $translate, $timeout, DominioRepository , FornecedorRepository, MaterialConsumoRepository, EntradaAlmoxarifadoItemRepository, | 7 | $translate, $timeout, DominioRepository , FornecedorRepository, MaterialConsumoRepository, EntradaAlmoxarifadoItemRepository, |
8 | - MaterialLocalEstoqueRepository, MovimentoEstoqueRepository) { | 8 | + MaterialLocalEstoqueRepository, MovimentoEstoqueRepository, $q, MaterialRepository) { |
9 | 9 | ||
10 | var CODIGO_DOMINIO_TIPO_RECEBIMENTO_COMPRA_ORCAMENTARIA = 1; | 10 | var CODIGO_DOMINIO_TIPO_RECEBIMENTO_COMPRA_ORCAMENTARIA = 1; |
11 | 11 | ||
@@ -42,6 +42,10 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -42,6 +42,10 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
42 | 42 | ||
43 | $scope.atualizarListaSizeSelectEntradaItem(); | 43 | $scope.atualizarListaSizeSelectEntradaItem(); |
44 | $scope.edit = true; | 44 | $scope.edit = true; |
45 | + | ||
46 | + $scope.workspace.objetoScope = $scope.entradaAlmoxarifado; | ||
47 | + $scope.startTimerIntervalSaveDraft($scope.workspace, null, true); | ||
48 | + | ||
45 | $timeout(function(){ | 49 | $timeout(function(){ |
46 | $scope.entradaAlmoxarifadoForm.$submitted = false; | 50 | $scope.entradaAlmoxarifadoForm.$submitted = false; |
47 | $scope.entradaAlmoxarifadoForm.$setPristine(); | 51 | $scope.entradaAlmoxarifadoForm.$setPristine(); |
@@ -137,6 +141,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -137,6 +141,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
137 | $scope.calcularValorTotalMateriais(); | 141 | $scope.calcularValorTotalMateriais(); |
138 | $scope.atualizarListaSizeSelectEntradaItem(); | 142 | $scope.atualizarListaSizeSelectEntradaItem(); |
139 | $scope.edit = edit; | 143 | $scope.edit = edit; |
144 | + $scope.stopTimerIntervalDraft($scope.workspace); | ||
140 | $scope.setLoading(false); | 145 | $scope.setLoading(false); |
141 | }); | 146 | }); |
142 | 147 | ||
@@ -148,6 +153,17 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -148,6 +153,17 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
148 | } | 153 | } |
149 | }); | 154 | }); |
150 | }; | 155 | }; |
156 | + | ||
157 | + $scope.setRascunho = function(rascunho){ | ||
158 | + | ||
159 | + if (rascunho) { | ||
160 | + $scope.entradaAlmoxarifado = rascunho; | ||
161 | + } | ||
162 | + $scope.workspace.objetoScope = $scope.entradaAlmoxarifado; | ||
163 | + $scope.startTimerIntervalSaveDraft($scope.workspace); | ||
164 | + $scope.edit = true; | ||
165 | + $scope.setLoading(false); | ||
166 | + }; | ||
151 | 167 | ||
152 | $scope.findAutoCompleteAlmoxarifado = function(value){ | 168 | $scope.findAutoCompleteAlmoxarifado = function(value){ |
153 | return EstruturaOrganizacionalAlmoxarifadoRepository.listarEstruturasOrganizacionaisAlmoxarifadoPorOrganizacao(value, $scope.usuarioLogado.organizacao.id).then(function(result) { | 169 | return EstruturaOrganizacionalAlmoxarifadoRepository.listarEstruturasOrganizacionaisAlmoxarifadoPorOrganizacao(value, $scope.usuarioLogado.organizacao.id).then(function(result) { |
@@ -412,6 +428,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -412,6 +428,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
412 | 428 | ||
413 | $scope.entradaAlmoxarifado.isEntradaConcluida = true; | 429 | $scope.entradaAlmoxarifado.isEntradaConcluida = true; |
414 | $scope.entradaAlmoxarifadoOriginal.isEntradaConcluida = true; | 430 | $scope.entradaAlmoxarifadoOriginal.isEntradaConcluida = true; |
431 | + $scope.entradaAlmoxarifado.rascunho = $scope.workspace.rascunho ? $scope.workspace.rascunho.id : null; | ||
415 | 432 | ||
416 | if (contabilizar) { | 433 | if (contabilizar) { |
417 | $scope.dataContabilFinal = $scope.entradaAlmoxarifado.dataContabil; | 434 | $scope.dataContabilFinal = $scope.entradaAlmoxarifado.dataContabil; |
@@ -977,5 +994,132 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -977,5 +994,132 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
977 | } | 994 | } |
978 | return $scope.stepValid; | 995 | return $scope.stepValid; |
979 | }; | 996 | }; |
997 | + | ||
998 | + $scope.openModalCaracteristicas = function() { | ||
999 | + var itensSelecionados = $scope.getEntradaItemChecked(); | ||
1000 | + | ||
1001 | + if (itensSelecionados.length > 1) { | ||
1002 | + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_PREENCHER_CARACTERISTICA')); | ||
1003 | + return; | ||
1004 | + } | ||
1005 | + | ||
1006 | + if(itensSelecionados.length === 0) { | ||
1007 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.SELECIONE_UM_ITEM_PARA_DEFINIR_CARAC')); | ||
1008 | + return; | ||
1009 | + } | ||
1010 | + | ||
1011 | + $scope.entradaItem = itensSelecionados[0]; | ||
1012 | + buscaCaracteristicas(); | ||
1013 | + }; | ||
1014 | + | ||
1015 | + $scope.carregarCaracteristicasGenericasMaterial = function(material) { | ||
1016 | + var deferred = $q.defer(); | ||
1017 | + MaterialRepository.getMaterialTransferencia(material.id).then(function(result) { | ||
1018 | + $scope.caracteristicas = []; | ||
1019 | + $scope.caracteristicasGenericas = []; | ||
1020 | + var materialCaracteristicas = []; | ||
1021 | + | ||
1022 | + materialCaracteristicas = result.materialCaracteristicas.filter(function(caracteristica) { | ||
1023 | + return caracteristica.generico; | ||
1024 | + }); | ||
1025 | + | ||
1026 | + var materialCaracteristicaTemp = {}, | ||
1027 | + tempMateriais = [], | ||
1028 | + count = 0, | ||
1029 | + limiteArray = materialCaracteristicas.length; | ||
1030 | + | ||
1031 | + for (var index = 0; index < materialCaracteristicas.length; index++) { | ||
1032 | + | ||
1033 | + materialCaracteristicaTemp = angular.copy(materialCaracteristicas[index]); | ||
1034 | + | ||
1035 | + if (materialCaracteristicaTemp.caracteristica.dominioTipoDado.nome == 'TIPO_DOMINIO') { | ||
1036 | + | ||
1037 | + tempMateriais.push(materialCaracteristicaTemp); | ||
1038 | + | ||
1039 | + } else { | ||
1040 | + $scope.caracteristicasGenericas.push({ | ||
1041 | + materialCaracteristica: angular.copy(materialCaracteristicaTemp) | ||
1042 | + }); | ||
1043 | + | ||
1044 | + if(++count === limiteArray) { | ||
1045 | + $timeout(function(){ | ||
1046 | + return deferred.resolve(); | ||
1047 | + }); | ||
1048 | + } | ||
1049 | + } | ||
1050 | + } | ||
1051 | + | ||
1052 | + if(tempMateriais.length >0){ | ||
1053 | + tempMateriais.forEach(function(materialCarac){ | ||
1054 | + DominioRepository.findAllDominio(materialCarac.caracteristica.chaveDominio).then(function(result) { | ||
1055 | + if(result && result[0]){ | ||
1056 | + tempMateriais.forEach(function(item){ | ||
1057 | + if(result[0].originalElement.chave === item.caracteristica.chaveDominio) { | ||
1058 | + $scope.caracteristicasGenericas.push({ | ||
1059 | + materialCaracteristica: angular.copy(item), | ||
1060 | + listaDominios: angular.copy(result) | ||
1061 | + }); | ||
1062 | + ++count; | ||
1063 | + } | ||
1064 | + }); | ||
1065 | + } | ||
1066 | + | ||
1067 | + if(count === limiteArray) { | ||
1068 | + $timeout(function(){ | ||
1069 | + return deferred.resolve(); | ||
1070 | + }); | ||
1071 | + } | ||
1072 | + }); | ||
1073 | + | ||
1074 | + }); | ||
1075 | + }else{ | ||
1076 | + return deferred.resolve(); | ||
1077 | + } | ||
1078 | + | ||
1079 | + }); | ||
1080 | + | ||
1081 | + return deferred.promise; | ||
1082 | + }; | ||
1083 | + | ||
1084 | + function buscaCaracteristicas(){ | ||
1085 | + if($scope.entradaItem.caracteristicas){ | ||
1086 | + $scope.setLoadingGet(true); | ||
1087 | + $scope.caracteristicasGenericas = $scope.entradaItem.caracteristicas; | ||
1088 | + abrirModalCaracteristicas(); | ||
1089 | + }else{ | ||
1090 | + $scope.carregarCaracteristicasGenericasMaterial($scope.entradaItem.material).then(function(){ | ||
1091 | + $scope.setLoadingGet(true); | ||
1092 | + abrirModalCaracteristicas(); | ||
1093 | + }); | ||
1094 | + } | ||
1095 | + }; | ||
1096 | + | ||
1097 | + function abrirModalCaracteristicas(){ | ||
1098 | + $scope.editEntrada = $scope.edit; | ||
1099 | + if ($scope.caracteristicasGenericas && $scope.caracteristicasGenericas.length > 0){ | ||
1100 | + $timeout(function(){ | ||
1101 | + $scope.$openModal('modal-caracteristicas.html', 'lg'); | ||
1102 | + $scope.setLoading(false); | ||
1103 | + },10); | ||
1104 | + }else{ | ||
1105 | + $scope.setLoading(false); | ||
1106 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.MATERIAL_NAO_POSSUI_CARACTERISTICAS')); | ||
1107 | + } | ||
1108 | + }; | ||
1109 | + | ||
1110 | + $scope.salvaCaracteristicasTemp = function(formDialogCaracteristicas) { | ||
1111 | + formDialogCaracteristicas.$submitted = true; | ||
1112 | + if (formDialogCaracteristicas.$valid) { | ||
1113 | + angular.forEach($scope.entradaAlmoxarifado.entradasItem, function(entradaItem){ | ||
1114 | + if (entradaItem.$checked) { | ||
1115 | + entradaItem.caracteristicas = $scope.caracteristicasGenericas; | ||
1116 | + } | ||
1117 | + }); | ||
1118 | + $scope.caracteristicasGenericas = []; | ||
1119 | + $scope.$modalInstance.dismiss('cancel'); | ||
1120 | + } else { | ||
1121 | + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS')); | ||
1122 | + } | ||
1123 | + }; | ||
980 | 1124 | ||
981 | }]); | 1125 | }]); |
cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_associar_caracteristicas.html
0 → 100644
@@ -0,0 +1,132 @@ | @@ -0,0 +1,132 @@ | ||
1 | +<ng-form name="formDialogCaracteristicas" autocomplete="off"> | ||
2 | + <div class="modal-header"> | ||
3 | + <button class="btn btn-clear" type="button" ng-disabled="!editEntrada" ng-show="{{editEntrada}}" ng-if="editEntrada" ng-click="salvaCaracteristicasTemp(formDialogCaracteristicas)"> | ||
4 | + <i class="fa fa-save green"></i> | ||
5 | + <translate>LABEL.SALVAR</translate> | ||
6 | + </button> | ||
7 | + | ||
8 | + <button title="{{$translate.instant('LABEL.CANCELAR')}}" alt="{{$translate.instant('LABEL.CANCELAR')}}" ng-click="$dismiss('cancel');" class="btn btn-clear" ng-if="editEntrada" type="button"> | ||
9 | + <i class="fa fa-times red"></i> | ||
10 | + <translate>LABEL.CANCELAR</translate> | ||
11 | + </button> | ||
12 | + | ||
13 | + </div> | ||
14 | + | ||
15 | + <div style="overflow-y:scroll; height: {{caracteristicasGenericas.length > 3 ? 500 : initial}}px; overflow-x: hidden;" class="modal-body"> | ||
16 | + <h2 class="title-modal"><translate>ALMOXARIFADO.LABEL.CARACTERISTICAS_GENERICAS</translate></h2> | ||
17 | + <p ng-show="editEntrada"> | ||
18 | + <small>( <span class="red">*</span> ) <translate>LABEL.CAMPOS_OBRIGATORIOS</translate> | ||
19 | + </small> | ||
20 | + </p> | ||
21 | + <fieldset> | ||
22 | + <div class="scrollbar-inner"> | ||
23 | + <div class="col-sm-12" ng-repeat="materialCaract in caracteristicasGenericas" ng-if="editEntrada"> | ||
24 | + | ||
25 | + <div class="row" ng-show="materialCaract.materialCaracteristica.generico" ng-if="materialCaract.materialCaracteristica.caracteristica.dominioTipoDado.nome == 'TEXT_FIELD'"> | ||
26 | + <div class="col-sm-12"> | ||
27 | + <label-input ng-type="text" ng-id="materialCaract.valorCaracteristica-{{$index}}" | ||
28 | + ng-label="{{materialCaract.materialCaracteristica.caracteristica.descricao}}" ng-obrigatorio="materialCaract.materialCaracteristica.obrigatorio" | ||
29 | + ng-disabled="!editEntrada" form="formDialogCaracteristicas" ng-model="materialCaract.valorCaracteristica" | ||
30 | + ng-custom-maxlength="{{materialCaract.materialCaracteristica.caracteristica.tamanho}}" ng-regex="materialCaract.materialCaracteristica.caracteristica.expressaoRegular"/> | ||
31 | + </div> | ||
32 | + </div> | ||
33 | + | ||
34 | + <div class="row" ng-show="materialCaract.materialCaracteristica.generico" ng-if="materialCaract.materialCaracteristica.caracteristica.dominioTipoDado.nome == 'TEXT_AREA'"> | ||
35 | + <div class="col-sm-12"> | ||
36 | + <label-text-area ng-id="materialCaract.valorCaracteristica-{{$index}}" | ||
37 | + ng-label="{{materialCaract.materialCaracteristica.caracteristica.descricao}}" rows="2" form="formDialogCaracteristicas" ng-disabled="!editEntrada" | ||
38 | + ng-obrigatorio="materialCaract.materialCaracteristica.obrigatorio" ng-model="materialCaract.valorCaracteristica" | ||
39 | + ng-custom-maxlength="{{materialCaract.materialCaracteristica.caracteristica.tamanho}}" ng-regex="materialCaract.materialCaracteristica.caracteristica.expressaoRegular"></label-text-area> | ||
40 | + </div> | ||
41 | + </div> | ||
42 | + | ||
43 | + <div class="row" ng-show="materialCaract.materialCaracteristica.generico" ng-if="materialCaract.materialCaracteristica.caracteristica.dominioTipoDado.nome == 'NUMBER'"> | ||
44 | + <div class="col-sm-12"> | ||
45 | + <label-input-number ng-id="materialCaract.valorCaracteristica-{{$index}}" | ||
46 | + ng-label="{{materialCaract.materialCaracteristica.caracteristica.descricao}}" ng-obrigatorio="materialCaract.materialCaracteristica.obrigatorio" | ||
47 | + ng-disabled="!editEntrada" form="formDialogCaracteristicas" ng-model="materialCaract.valorCaracteristica" ng-regex="materialCaract.materialCaracteristica.caracteristica.expressaoRegular"/> | ||
48 | + </div> | ||
49 | + </div> | ||
50 | + | ||
51 | + <div class="row" ng-show="materialCaract.materialCaracteristica.generico" ng-if="materialCaract.materialCaracteristica.caracteristica.dominioTipoDado.nome == 'DATA'"> | ||
52 | + <div class="col-sm-12"> | ||
53 | + <label-input-data ng-id="materialCaract.valorCaracteristica-{{$index}}" | ||
54 | + ng-label="{{materialCaract.materialCaracteristica.caracteristica.descricao}}" ng-obrigatorio="materialCaract.materialCaracteristica.obrigatorio" | ||
55 | + ng-disabled="!editEntrada" ng-model="materialCaract.valorCaracteristica" form="formDialogCaracteristicas" /> | ||
56 | + </div> | ||
57 | + </div> | ||
58 | + | ||
59 | + <div class="row" ng-show="materialCaract.materialCaracteristica.generico" ng-if="materialCaract.materialCaracteristica.caracteristica.dominioTipoDado.nome == 'DECIMAL'"> | ||
60 | + <div class="col-sm-12"> | ||
61 | + <label-input-money ng-id="materialCaract.valorCaracteristica-{{$index}}" | ||
62 | + ng-label="{{materialCaract.materialCaracteristica.caracteristica.descricao}}" ng-obrigatorio="materialCaract.materialCaracteristica.obrigatorio" | ||
63 | + ng-disabled="!editEntrada" form="formDialogCaracteristicas" ng-model="materialCaract.valorCaracteristica"></label-input-money> | ||
64 | + </div> | ||
65 | + </div> | ||
66 | + | ||
67 | + <div class="row" ng-show="materialCaract.materialCaracteristica.generico" ng-if="materialCaract.materialCaracteristica.caracteristica.dominioTipoDado.nome == 'TIPO_DOMINIO'"> | ||
68 | + <div class="col-sm-12"> | ||
69 | + <label-select ng-id="materialCaract.valorCaracteristica-{{$index}}" ng-model="materialCaract.valorCaracteristica" | ||
70 | + ng-label="{{materialCaract.materialCaracteristica.caracteristica.descricao}}" ng-obrigatorio="materialCaract.materialCaracteristica.obrigatorio" | ||
71 | + ng-disabled="!editEntrada" form="formDialogCaracteristicas" ng-list="materialCaract.listaDominios" | ||
72 | + ng-custom-options="dominio.id as dominio.descricao for dominio"></label-select> | ||
73 | + </div> | ||
74 | + </div> | ||
75 | + | ||
76 | + <div class="row" ng-show="materialCaract.materialCaracteristica.generico" ng-if="materialCaract.materialCaracteristica.caracteristica.dominioTipoDado.nome == 'ARQUIVO'"> | ||
77 | + <div class="col-sm-12"> | ||
78 | + <div class="form-group"> | ||
79 | + | ||
80 | + <label ng-class="{'has-error': validaAnexo}" for='materialCaract.valorCaracteristica-arquivo-{{$index}}' class='control-label'>{{materialCaract.materialCaracteristica.caracteristica.descricao}} | ||
81 | + <span class='red' ng-show='materialCaract.materialCaracteristica.obrigatorio'>*</span> | ||
82 | + <i ng-if='materialCaract.materialCaracteristica.obrigatorio' ng-show='validaAnexo' class='fa fa-warning red' tooltip="{{materialCaract.materialCaracteristica.caracteristica.descricao + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}" tooltip-placement='top'></i> | ||
83 | + </label> | ||
84 | + | ||
85 | + <div class="col-sm-12" ng-show="editEntrada && uploaderCaracteristica.queue < 1"> | ||
86 | + <div nv-file-drop="" uploader="uploaderCaracteristica" id="actionUploadArquivos-{{workspace.id}}" onclick="acionarInputFile(this);"> | ||
87 | + <div nv-file-over="" uploader="uploaderCaracteristica" over-class="another-file-over-class"> | ||
88 | + <label class="file-input file-multiple"> | ||
89 | + <span class="file-container"> | ||
90 | + <label class="uploadMsg"><translate>LABEL.UPLOAD_MSG_ARRASTE</translate></label> | ||
91 | + <span class="file-name" data-title="..."> | ||
92 | + <i class="icon icon fa fa-cloud-upload"></i> | ||
93 | + </span> | ||
94 | + </span> | ||
95 | + </label> | ||
96 | + </div> | ||
97 | + </div> | ||
98 | + <input id="uploadArquivos-{{workspace.id}}" type="file" nv-file-select="" uploader="uploaderCaracteristica" ng-show="false" /> | ||
99 | + </div> | ||
100 | + <div class="row" ng-show="uploaderCaracteristica.queue.length > 0"> | ||
101 | + <div class="col-sm-12"> | ||
102 | + <table class="table"> | ||
103 | + <thead> | ||
104 | + <tr> | ||
105 | + <th width="50%"><translate>LABEL.NOME</translate></th> | ||
106 | + <th ng-show="uploader.isHTML5"><translate>LABEL.TAMANHO</translate></th> | ||
107 | + <th style="text-align: center;"><translate>LABEL.ACOES</translate></th> | ||
108 | + </tr> | ||
109 | + </thead> | ||
110 | + <tbody> | ||
111 | + <tr ng-repeat="item in uploaderCaracteristica.queue"> | ||
112 | + <td><strong>{{ item.file.name }}</strong></td> | ||
113 | + <td ng-show="uploaderCaracteristica.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td> | ||
114 | + <td nowrap style="text-align: center;"> | ||
115 | + <button type="button" class="btn btn-danger btn-xs" ng-show="editEntrada" ng-click="item.remove()"> | ||
116 | + <span class="fa fa-trash-o"></span> | ||
117 | + </button> | ||
118 | + </td> | ||
119 | + </tr> | ||
120 | + </tbody> | ||
121 | + </table> | ||
122 | + </div> | ||
123 | + </div> | ||
124 | + </div> | ||
125 | + </div> | ||
126 | + </div> | ||
127 | + </div> | ||
128 | + </div> | ||
129 | + </fieldset> | ||
130 | + </div> | ||
131 | + | ||
132 | +</ng-form> |
cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoList.html
@@ -29,6 +29,10 @@ | @@ -29,6 +29,10 @@ | ||
29 | <i class="fa fa-print"></i> | 29 | <i class="fa fa-print"></i> |
30 | <translate>LABEL.RELATORIO</translate> | 30 | <translate>LABEL.RELATORIO</translate> |
31 | </button> | 31 | </button> |
32 | + | ||
33 | + <button class="btn btn-clear" ng-click="showListRascunho(workspace.name, 'entradaAlmoxarifadoControllerId')" type="button"> | ||
34 | + <i class="fa fa-list"></i> <translate>PORTAL.LABEL.SHOW_RASCUNHO</translate> | ||
35 | + </button> | ||
32 | 36 | ||
33 | <span class="divider-vertical"></span> | 37 | <span class="divider-vertical"></span> |
34 | 38 |
cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoPg2.html
@@ -52,6 +52,11 @@ | @@ -52,6 +52,11 @@ | ||
52 | <i class="fa fa-times red"></i> | 52 | <i class="fa fa-times red"></i> |
53 | <translate>LABEL.REMOVER</translate> | 53 | <translate>LABEL.REMOVER</translate> |
54 | </button> | 54 | </button> |
55 | + | ||
56 | + <button title="{{$translate.instant('ALMOXARIFADO.LABEL.DEFINIR_CARACTERISTICAS')}}" alt="{{$translate.instant('ALMOXARIFADO.LABEL.DEFINIR_CARACTERISTICAS')}}" ng-show="edit" class="btn btn-clear" type="button" ng-click="openModalCaracteristicas()"> | ||
57 | + <i class="fa fa-upload blue"></i> | ||
58 | + <translate>ALMOXARIFADO.LABEL.DEFINIR_CARACTERISTICAS</translate> | ||
59 | + </button> | ||
55 | 60 | ||
56 | </div><!-- .panel-heading --> | 61 | </div><!-- .panel-heading --> |
57 | <table class="table table-bordered table-striped"> | 62 | <table class="table table-bordered table-striped"> |
@@ -93,4 +98,8 @@ | @@ -93,4 +98,8 @@ | ||
93 | 98 | ||
94 | </fieldset> | 99 | </fieldset> |
95 | </div> <!-- /.page-content --> | 100 | </div> <!-- /.page-content --> |
96 | -</ng-form> | ||
97 | \ No newline at end of file | 101 | \ No newline at end of file |
102 | +</ng-form> | ||
103 | + | ||
104 | +<script type="text/ng-template" id="modal-caracteristicas.html"> | ||
105 | + <div ng-include src="'/cit-almoxarifado-web/html/entradaAlmoxarifado/dialog_associar_caracteristicas.html'" /> | ||
106 | +</script> | ||
98 | \ No newline at end of file | 107 | \ No newline at end of file |