Commit e8b19b41a42a7ab56eabd6f414858fd0acc6c00c
1 parent
bcbf6614
Exists in
master
Redmine #4783 Alterações no serviço de salvamento da entrada
Showing
14 changed files
with
451 additions
and
138 deletions
Show diff stats
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoService.java
1 | package br.com.centralit.api.service; | 1 | package br.com.centralit.api.service; |
2 | 2 | ||
3 | -import java.util.List; | ||
4 | import java.util.Map; | 3 | import java.util.Map; |
5 | 4 | ||
6 | import br.com.centralit.api.model.EntradaAlmoxarifado; | 5 | import br.com.centralit.api.model.EntradaAlmoxarifado; |
@@ -10,6 +9,20 @@ public interface EntradaAlmoxarifadoService extends GenericService<EntradaAlmoxa | @@ -10,6 +9,20 @@ public interface EntradaAlmoxarifadoService extends GenericService<EntradaAlmoxa | ||
10 | 9 | ||
11 | Map<String, String> buscaValoresDocumentoEntrada(Long idEntrada); | 10 | Map<String, String> buscaValoresDocumentoEntrada(Long idEntrada); |
12 | 11 | ||
12 | + /** | ||
13 | + * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | ||
14 | + * | ||
15 | + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p> | ||
16 | + * | ||
17 | + * Método responsável por concluir uma entrada do almoxarifado | ||
18 | + * | ||
19 | + * @author geovane.filho | ||
20 | + * | ||
21 | + * @param entradaAlmoxarifado | ||
22 | + * @return | ||
23 | + */ | ||
24 | + EntradaAlmoxarifado concluir(EntradaAlmoxarifado entradaAlmoxarifado); | ||
25 | + | ||
13 | } | 26 | } |
14 | 27 | ||
15 | 28 |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java
@@ -209,4 +209,18 @@ public interface MovimentoEstoqueService extends GenericService<MovimentoEstoque | @@ -209,4 +209,18 @@ public interface MovimentoEstoqueService extends GenericService<MovimentoEstoque | ||
209 | */ | 209 | */ |
210 | public Collection<MovimentoEstoque> findAllByClasseReferencia(Dominio classeReferencia, Long idReferencia); | 210 | public Collection<MovimentoEstoque> findAllByClasseReferencia(Dominio classeReferencia, Long idReferencia); |
211 | 211 | ||
212 | + /** | ||
213 | + * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | ||
214 | + * | ||
215 | + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p> | ||
216 | + * | ||
217 | + * Método responsável por buscar todos os códigos das operações de atendimentos e baixas que ocorreram com materiais da entrada passada como referência | ||
218 | + * | ||
219 | + * @author geovane.filho | ||
220 | + * | ||
221 | + * @param idEntrada | ||
222 | + * @return | ||
223 | + */ | ||
224 | + String buscarMovimentosSaidaComMateriaisDaEntrada(Long idEntrada); | ||
225 | + | ||
212 | } | 226 | } |
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.Calendar; | ||
3 | import java.util.HashMap; | 4 | import java.util.HashMap; |
4 | import java.util.Map; | 5 | import java.util.Map; |
5 | 6 | ||
@@ -9,7 +10,6 @@ import org.springframework.stereotype.Service; | @@ -9,7 +10,6 @@ import org.springframework.stereotype.Service; | ||
9 | import org.springframework.validation.Validator; | 10 | import org.springframework.validation.Validator; |
10 | 11 | ||
11 | import br.com.centralit.api.dao.EntradaAlmoxarifadoDao; | 12 | import br.com.centralit.api.dao.EntradaAlmoxarifadoDao; |
12 | -import br.com.centralit.api.model.BemAlmoxarifadoCaracteristica; | ||
13 | import br.com.centralit.api.model.EntradaAlmoxarifado; | 13 | import br.com.centralit.api.model.EntradaAlmoxarifado; |
14 | import br.com.centralit.api.model.EntradaAlmoxarifadoDocumento; | 14 | import br.com.centralit.api.model.EntradaAlmoxarifadoDocumento; |
15 | import br.com.centralit.api.model.EntradaAlmoxarifadoItem; | 15 | import br.com.centralit.api.model.EntradaAlmoxarifadoItem; |
@@ -27,6 +27,7 @@ import br.com.centralit.api.service.MovimentoEstoqueService; | @@ -27,6 +27,7 @@ import br.com.centralit.api.service.MovimentoEstoqueService; | ||
27 | import br.com.centralit.api.service.ParceiroService; | 27 | import br.com.centralit.api.service.ParceiroService; |
28 | import br.com.centralit.api.service.UnidadeMedidaService; | 28 | import br.com.centralit.api.service.UnidadeMedidaService; |
29 | import br.com.centralit.api.service.UsuarioService; | 29 | import br.com.centralit.api.service.UsuarioService; |
30 | +import br.com.centralit.api.service.validation.EntradaAlmoxarifadoAllValidator; | ||
30 | import br.com.centralit.framework.exception.BusinessException; | 31 | import br.com.centralit.framework.exception.BusinessException; |
31 | import br.com.centralit.framework.exception.CodigoErro; | 32 | import br.com.centralit.framework.exception.CodigoErro; |
32 | import br.com.centralit.framework.model.Dominio; | 33 | import br.com.centralit.framework.model.Dominio; |
@@ -68,12 +69,6 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | @@ -68,12 +69,6 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | ||
68 | /** Atributo VALIDACAO_DATA_FORA_REFERENCIA_EXCLUSAO_ENTRADA. */ | 69 | /** Atributo VALIDACAO_DATA_FORA_REFERENCIA_EXCLUSAO_ENTRADA. */ |
69 | private static final String VALIDACAO_DATA_FORA_REFERENCIA_EXCLUSAO_ENTRADA = "VALIDACAO.DATA_FORA_REFERENCIA_EXCLUSAO_ENTRADA"; | 70 | private static final String VALIDACAO_DATA_FORA_REFERENCIA_EXCLUSAO_ENTRADA = "VALIDACAO.DATA_FORA_REFERENCIA_EXCLUSAO_ENTRADA"; |
70 | 71 | ||
71 | - /** Atributo VALIDACAO_DATA_RECEBIMENTO. */ | ||
72 | - private static final String VALIDACAO_DATA_RECEBIMENTO = "VALIDACAO.DATA_RECEBIMENTO"; | ||
73 | - | ||
74 | - /** Atributo MSG_MN019. */ | ||
75 | - private static final String MSG_MN019 = "MSG.MN019"; | ||
76 | - | ||
77 | /** Atributo entradaAlmoxarifadoDao. */ | 72 | /** Atributo entradaAlmoxarifadoDao. */ |
78 | private EntradaAlmoxarifadoDao entradaAlmoxarifadoDao; | 73 | private EntradaAlmoxarifadoDao entradaAlmoxarifadoDao; |
79 | 74 | ||
@@ -109,42 +104,53 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | @@ -109,42 +104,53 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | ||
109 | 104 | ||
110 | @Autowired | 105 | @Autowired |
111 | private ConfiguracaoParametroSistemaService configuracaoParametroSistemaService; | 106 | private ConfiguracaoParametroSistemaService configuracaoParametroSistemaService; |
107 | + | ||
108 | + private Validator validatorBasic; | ||
109 | + | ||
110 | + private Validator validatorAll; | ||
112 | 111 | ||
113 | /** | 112 | /** |
114 | * Responsável pela criação de novas instâncias desta classe. | 113 | * Responsável pela criação de novas instâncias desta classe. |
115 | * | 114 | * |
116 | * @param entradaAlmoxarifadoDao | 115 | * @param entradaAlmoxarifadoDao |
117 | - * @param validator | 116 | + * @param validatorBasic |
118 | */ | 117 | */ |
119 | @Autowired | 118 | @Autowired |
120 | - public EntradaAlmoxarifadoServiceImpl( EntradaAlmoxarifadoDao entradaAlmoxarifadoDao, @Qualifier("entradaAlmoxarifadoValidator") Validator validator ) { | 119 | + public EntradaAlmoxarifadoServiceImpl( EntradaAlmoxarifadoDao entradaAlmoxarifadoDao, @Qualifier("entradaAlmoxarifadoBasicValidator") Validator validatorBasic ) { |
121 | 120 | ||
122 | this.dao = entradaAlmoxarifadoDao; | 121 | this.dao = entradaAlmoxarifadoDao; |
123 | this.entradaAlmoxarifadoDao = entradaAlmoxarifadoDao; | 122 | this.entradaAlmoxarifadoDao = entradaAlmoxarifadoDao; |
124 | - this.validator = validator; | 123 | + this.validatorBasic = validatorBasic; |
124 | + | ||
125 | + EntradaAlmoxarifadoAllValidator entradaAlmoxarifadoAllValidator = new EntradaAlmoxarifadoAllValidator(this, movimentoEstoqueService); | ||
126 | + | ||
127 | + this.validatorAll = entradaAlmoxarifadoAllValidator; | ||
128 | + | ||
129 | + this.validator = entradaAlmoxarifadoAllValidator; | ||
125 | } | 130 | } |
126 | 131 | ||
127 | /** | 132 | /** |
128 | * | 133 | * |
129 | */ | 134 | */ |
130 | @Override | 135 | @Override |
131 | - public EntradaAlmoxarifado save(EntradaAlmoxarifado entity) { | ||
132 | - | ||
133 | - this.validarEntidade(entity, this.validator); | ||
134 | - | ||
135 | - this.montarEntidade(entity); | ||
136 | - | ||
137 | - this.validarDataContabil(entity); | ||
138 | - | ||
139 | - this.validarDataRecebimento(entity); | 136 | + public EntradaAlmoxarifado save(EntradaAlmoxarifado entrada) { |
137 | + | ||
138 | + this.validarEntidade(entrada, this.validatorBasic); | ||
139 | + | ||
140 | + // validação de se a data contabil esta dentro do mes referencia | ||
141 | + Calendar dataContabil = null; | ||
142 | + if(UtilObjeto.isReferencia(entrada.getDataContabil())){ | ||
143 | + dataContabil = Calendar.getInstance(); | ||
144 | + dataContabil.setTime(entrada.getDataContabil().getTime()); | ||
145 | + } | ||
146 | + | ||
147 | + this.montarEntidade(entrada); | ||
140 | 148 | ||
141 | - EntradaAlmoxarifado entradaAlmoxarifado = (EntradaAlmoxarifado) this.entradaAlmoxarifadoDao.save(entity); | 149 | + EntradaAlmoxarifado entradaAlmoxarifado = (EntradaAlmoxarifado) this.entradaAlmoxarifadoDao.save(entrada); |
142 | 150 | ||
143 | configurarNotaRecebimento(entradaAlmoxarifado); | 151 | configurarNotaRecebimento(entradaAlmoxarifado); |
144 | 152 | ||
145 | - entity.setCodigo(String.valueOf(entradaAlmoxarifado.getNotaRecebimento())); | ||
146 | - | ||
147 | - this.movimentoEstoqueService.gerarMovimento(entradaAlmoxarifado); | 153 | + entrada.setCodigo(String.valueOf(entradaAlmoxarifado.getNotaRecebimento())); |
148 | 154 | ||
149 | return entradaAlmoxarifado; | 155 | return entradaAlmoxarifado; |
150 | } | 156 | } |
@@ -154,54 +160,55 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | @@ -154,54 +160,55 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | ||
154 | * | 160 | * |
155 | * @author wilker.machado | 161 | * @author wilker.machado |
156 | * | 162 | * |
157 | - * @param entity | 163 | + * @param entrada |
158 | */ | 164 | */ |
159 | - private void montarEntidade(EntradaAlmoxarifado entity) { | 165 | + private void montarEntidade(EntradaAlmoxarifado entrada) { |
160 | 166 | ||
161 | - entity.setAlmoxarifado(this.estruturaOrganizacionalService.find(entity.getAlmoxarifado().getId())); | 167 | + entrada.setAlmoxarifado(this.estruturaOrganizacionalService.find(entrada.getAlmoxarifado().getId())); |
162 | 168 | ||
163 | - entity.setFornecedor((Fornecedor) this.parceiroService.find(entity.getFornecedor().getId())); | 169 | + entrada.setFornecedor((Fornecedor) this.parceiroService.find(entrada.getFornecedor().getId())); |
164 | 170 | ||
165 | - entity.setDominioTipoEntrada(this.dominioService.find(entity.getDominioTipoEntrada().getId())); | 171 | + entrada.setDominioTipoEntrada(this.dominioService.find(entrada.getDominioTipoEntrada().getId())); |
166 | 172 | ||
167 | - entity.setDominioTipoRecebimento(this.dominioService.find(entity.getDominioTipoRecebimento().getId())); | 173 | + entrada.setDominioTipoRecebimento(this.dominioService.find(entrada.getDominioTipoRecebimento().getId())); |
168 | 174 | ||
169 | - entity.setDominioFinalidade(this.dominioService.findByChaveAndCodigo("tipoFinalidadeMaterial", entity.getDominioFinalidade().getCodigo())); | 175 | + entrada.setDominioFinalidade(this.dominioService.findByChaveAndCodigo("tipoFinalidadeMaterial", entrada.getDominioFinalidade().getCodigo())); |
170 | 176 | ||
171 | - if(UtilObjeto.isReferencia(entity.getUnidadeRequisitante()) && UtilObjeto.isReferencia(entity.getUnidadeRequisitante().getId())){ | 177 | + if(UtilObjeto.isReferencia(entrada.getUnidadeRequisitante()) && UtilObjeto.isReferencia(entrada.getUnidadeRequisitante().getId())){ |
172 | 178 | ||
173 | - entity.setUnidadeRequisitante(this.estruturaOrganizacionalService.find(entity.getUnidadeRequisitante().getId())); | 179 | + entrada.setUnidadeRequisitante(this.estruturaOrganizacionalService.find(entrada.getUnidadeRequisitante().getId())); |
174 | 180 | ||
175 | } | 181 | } |
176 | 182 | ||
177 | - for (EntradaAlmoxarifadoItem entradaAlmoxarifadoItem : entity.getEntradasItem()) { | 183 | + for (EntradaAlmoxarifadoItem entradaAlmoxarifadoItem : entrada.getEntradasItem()) { |
178 | 184 | ||
179 | entradaAlmoxarifadoItem.setMaterial(this.materialConsumoService.find(entradaAlmoxarifadoItem.getMaterial().getId())); | 185 | entradaAlmoxarifadoItem.setMaterial(this.materialConsumoService.find(entradaAlmoxarifadoItem.getMaterial().getId())); |
180 | 186 | ||
181 | entradaAlmoxarifadoItem.setUnidadeMedidaEntrada(this.unidadeMedidaService.find(entradaAlmoxarifadoItem.getUnidadeMedidaEntrada().getId())); | 187 | entradaAlmoxarifadoItem.setUnidadeMedidaEntrada(this.unidadeMedidaService.find(entradaAlmoxarifadoItem.getUnidadeMedidaEntrada().getId())); |
182 | 188 | ||
183 | - entradaAlmoxarifadoItem.setEntrada(entity); | 189 | + entradaAlmoxarifadoItem.setEntrada(entrada); |
184 | 190 | ||
185 | - for (BemAlmoxarifadoCaracteristica bemAlmoxarifadoCaracteristica : entradaAlmoxarifadoItem.getCaracteristicas()) { | 191 | + //TODO Arrumar caracteristicas |
192 | + /*for (BemAlmoxarifadoCaracteristica bemAlmoxarifadoCaracteristica : entradaAlmoxarifadoItem.getCaracteristicas()) { | ||
186 | 193 | ||
187 | bemAlmoxarifadoCaracteristica.setMaterialCaracteristica(this.materialCaracteristicaService.find(bemAlmoxarifadoCaracteristica.getMaterialCaracteristica().getId())); | 194 | bemAlmoxarifadoCaracteristica.setMaterialCaracteristica(this.materialCaracteristicaService.find(bemAlmoxarifadoCaracteristica.getMaterialCaracteristica().getId())); |
188 | 195 | ||
189 | bemAlmoxarifadoCaracteristica.setCaracteristica(bemAlmoxarifadoCaracteristica.getMaterialCaracteristica().getCaracteristica()); | 196 | bemAlmoxarifadoCaracteristica.setCaracteristica(bemAlmoxarifadoCaracteristica.getMaterialCaracteristica().getCaracteristica()); |
190 | 197 | ||
191 | bemAlmoxarifadoCaracteristica.setEntradaItem(entradaAlmoxarifadoItem); | 198 | bemAlmoxarifadoCaracteristica.setEntradaItem(entradaAlmoxarifadoItem); |
192 | - } | 199 | + }*/ |
193 | 200 | ||
194 | } | 201 | } |
195 | 202 | ||
196 | - for (EntradaAlmoxarifadoObservacao entradaObservacao : entity.getObservacoes()) { | 203 | + for (EntradaAlmoxarifadoObservacao entradaObservacao : entrada.getObservacoes()) { |
197 | 204 | ||
198 | entradaObservacao.setAutor(this.usuarioService.find(entradaObservacao.getAutor().getId())); | 205 | entradaObservacao.setAutor(this.usuarioService.find(entradaObservacao.getAutor().getId())); |
199 | 206 | ||
200 | - entradaObservacao.setEntrada(entity); | 207 | + entradaObservacao.setEntrada(entrada); |
201 | 208 | ||
202 | } | 209 | } |
203 | 210 | ||
204 | - for (EntradaAlmoxarifadoDocumento entradaDocumento : entity.getDocumentos()) { | 211 | + for (EntradaAlmoxarifadoDocumento entradaDocumento : entrada.getDocumentos()) { |
205 | 212 | ||
206 | entradaDocumento.setDominioTipoDocumento(this.dominioService.find(entradaDocumento.getDominioTipoDocumento().getId())); | 213 | entradaDocumento.setDominioTipoDocumento(this.dominioService.find(entradaDocumento.getDominioTipoDocumento().getId())); |
207 | 214 | ||
@@ -210,38 +217,13 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | @@ -210,38 +217,13 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | ||
210 | entradaDocumento.setEmitente(this.parceiroService.find(entradaDocumento.getEmitente().getId())); | 217 | entradaDocumento.setEmitente(this.parceiroService.find(entradaDocumento.getEmitente().getId())); |
211 | } | 218 | } |
212 | 219 | ||
213 | - entradaDocumento.setEntrada(entity); | 220 | + entradaDocumento.setEntrada(entrada); |
214 | } | 221 | } |
215 | - | ||
216 | - } | ||
217 | - | ||
218 | - /** | ||
219 | - * Método responsável por validar se a data de recebimento e menor que a data de cadastro da entrada | ||
220 | - * | ||
221 | - * @author wilker.machado | ||
222 | - * | ||
223 | - * @param entrada | ||
224 | - */ | ||
225 | - private void validarDataRecebimento(EntradaAlmoxarifado entrada) { | ||
226 | - | ||
227 | - if (UtilDate.isPrimeiraDataMenorSegundaData(entrada.getDataReferencia(), entrada.getDataRecebimento())) { | ||
228 | - | ||
229 | - throw new BusinessException(VALIDACAO_DATA_RECEBIMENTO, CodigoErro.REGRA_NEGOCIO.getValue()); | ||
230 | - } | ||
231 | - } | ||
232 | - | ||
233 | - /** | ||
234 | - * Método responsável por validação de se a data contabil esta dentro do mes referencia | ||
235 | - * | ||
236 | - * @author wilker.machado | ||
237 | - * | ||
238 | - * @param entrada | ||
239 | - */ | ||
240 | - private void validarDataContabil(EntradaAlmoxarifado entrada) { | ||
241 | - | ||
242 | - if (!UtilDate.isDentroMes(entrada.getDataContabil(), entrada.getAlmoxarifado().getOrganizacao().getDataReferenciaVigente())) { | ||
243 | - | ||
244 | - throw new BusinessException(MSG_MN019, CodigoErro.REGRA_NEGOCIO.getValue()); | 222 | + |
223 | + if (UtilObjeto.isReferencia(entrada.getDataContabil())) { | ||
224 | + entrada.setIsContabilizada(Boolean.TRUE); | ||
225 | + } else { | ||
226 | + entrada.setIsContabilizada(Boolean.FALSE); | ||
245 | } | 227 | } |
246 | } | 228 | } |
247 | 229 | ||
@@ -332,4 +314,11 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | @@ -332,4 +314,11 @@ public class EntradaAlmoxarifadoServiceImpl extends GenericServiceImpl<EntradaAl | ||
332 | return listaValoresDocumento; | 314 | return listaValoresDocumento; |
333 | } | 315 | } |
334 | 316 | ||
317 | + @Override | ||
318 | + public EntradaAlmoxarifado concluir(EntradaAlmoxarifado entradaAlmoxarifado) { | ||
319 | + | ||
320 | + // TODO Auto-generated method stub | ||
321 | + return null; | ||
322 | + } | ||
323 | + | ||
335 | } | 324 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java
@@ -8,6 +8,7 @@ import java.util.HashMap; | @@ -8,6 +8,7 @@ import java.util.HashMap; | ||
8 | import java.util.List; | 8 | import java.util.List; |
9 | import java.util.Map; | 9 | import java.util.Map; |
10 | 10 | ||
11 | +import org.apache.commons.lang.NotImplementedException; | ||
11 | import org.springframework.beans.factory.annotation.Autowired; | 12 | import org.springframework.beans.factory.annotation.Autowired; |
12 | import org.springframework.beans.factory.annotation.Qualifier; | 13 | import org.springframework.beans.factory.annotation.Qualifier; |
13 | import org.springframework.security.core.context.SecurityContextHolder; | 14 | import org.springframework.security.core.context.SecurityContextHolder; |
@@ -577,4 +578,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -577,4 +578,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
577 | return this.movimentoEstoqueDao.findAllByClasseReferencia(classeReferencia, idReferencia); | 578 | return this.movimentoEstoqueDao.findAllByClasseReferencia(classeReferencia, idReferencia); |
578 | } | 579 | } |
579 | 580 | ||
581 | + @Override | ||
582 | + public String buscarMovimentosSaidaComMateriaisDaEntrada(Long idEntrada) { | ||
583 | + throw new NotImplementedException(); | ||
584 | + } | ||
585 | + | ||
580 | } | 586 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/EntradaAlmoxarifadoAllValidator.java
0 → 100644
@@ -0,0 +1,97 @@ | @@ -0,0 +1,97 @@ | ||
1 | +package br.com.centralit.api.service.validation; | ||
2 | + | ||
3 | +import java.math.BigDecimal; | ||
4 | + | ||
5 | +import org.springframework.beans.factory.annotation.Autowired; | ||
6 | +import org.springframework.stereotype.Component; | ||
7 | +import org.springframework.validation.Errors; | ||
8 | +import org.springframework.validation.ValidationUtils; | ||
9 | +import org.springframework.validation.Validator; | ||
10 | + | ||
11 | +import br.com.centralit.api.model.EntradaAlmoxarifado; | ||
12 | +import br.com.centralit.api.model.EntradaAlmoxarifadoItem; | ||
13 | +import br.com.centralit.api.service.EntradaAlmoxarifadoService; | ||
14 | +import br.com.centralit.api.service.MovimentoEstoqueService; | ||
15 | +import br.com.centralit.framework.exception.CodigoErro; | ||
16 | +import br.com.centralit.framework.util.UtilColecao; | ||
17 | +import br.com.centralit.framework.util.UtilDate; | ||
18 | +import br.com.centralit.framework.util.UtilObjeto; | ||
19 | + | ||
20 | +@Component("entradaAlmoxarifadoAllValidator") | ||
21 | +public class EntradaAlmoxarifadoAllValidator implements Validator { | ||
22 | + | ||
23 | + @Autowired | ||
24 | + private EntradaAlmoxarifadoService entradaAlmoxarifadoService; | ||
25 | + | ||
26 | + @Autowired | ||
27 | + private MovimentoEstoqueService movimentoEstoqueService; | ||
28 | + | ||
29 | + public EntradaAlmoxarifadoAllValidator() { | ||
30 | + | ||
31 | + super(); | ||
32 | + } | ||
33 | + | ||
34 | + public EntradaAlmoxarifadoAllValidator(EntradaAlmoxarifadoService entradaAlmoxarifadoService, MovimentoEstoqueService movimentoEstoqueService ) { | ||
35 | + super(); | ||
36 | + this.entradaAlmoxarifadoService = entradaAlmoxarifadoService; | ||
37 | + this.movimentoEstoqueService = movimentoEstoqueService; | ||
38 | + } | ||
39 | + | ||
40 | + @Override | ||
41 | + public boolean supports(Class<?> clazz) { | ||
42 | + | ||
43 | + return EntradaAlmoxarifado.class.isAssignableFrom(clazz); | ||
44 | + } | ||
45 | + | ||
46 | + @Override | ||
47 | + public void validate(Object target, Errors errors) { | ||
48 | + | ||
49 | + ValidationUtils.rejectIfEmpty(errors, "dataContabil", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.DATA_CONTABILIZACAO"); | ||
50 | + | ||
51 | + EntradaAlmoxarifado entrada = (EntradaAlmoxarifado) target; | ||
52 | + | ||
53 | + EntradaAlmoxarifado entradaOld = this.entradaAlmoxarifadoService.find(entrada.getId()); | ||
54 | + | ||
55 | + if (UtilObjeto.isReferencia(entradaOld.getDataContabil())) { | ||
56 | + String codigosMovimentos = this.movimentoEstoqueService.buscarMovimentosSaidaComMateriaisDaEntrada(entradaOld.getId()); | ||
57 | + boolean alteracaoData = false; | ||
58 | + | ||
59 | + if (!UtilObjeto.isReferencia(entrada.getDataContabil())) { | ||
60 | + alteracaoData = true; | ||
61 | + } else if (!UtilDate.compareCalendar(entrada.getDataContabil(), entradaOld.getDataContabil())) { | ||
62 | + alteracaoData = true; | ||
63 | + } | ||
64 | + | ||
65 | + if (alteracaoData && !codigosMovimentos.isEmpty()) { | ||
66 | + errors.rejectValue("dataContabil", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.VALIDACAO.DATA_CONTABIL_ALTERADA_SAIDAS"); | ||
67 | + } | ||
68 | + } | ||
69 | + | ||
70 | + if (UtilObjeto.isReferencia(entrada.getDataContabil())) { | ||
71 | + | ||
72 | + if (UtilColecao.isVazio(entrada.getDocumentos())) { | ||
73 | + errors.rejectValue("documentos", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "CORPORATIVO.LABEL.ASSOCIAR_DOCUMENTOS"); | ||
74 | + } | ||
75 | + | ||
76 | + BigDecimal valorTotalItens = new BigDecimal(0L); | ||
77 | + | ||
78 | + // repetição para verificar a soma de todos os itens da entrada e igual ao valor da nota | ||
79 | + int item = 1; | ||
80 | + for (EntradaAlmoxarifadoItem entradaItem : entrada.getEntradasItem()) { | ||
81 | + if(entradaItem.getQuantidade() == null || entradaItem.getQuantidade() == BigDecimal.ZERO){ | ||
82 | + errors.rejectValue("entradasItem", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(),"VALIDACAO.QUANTIDADE_MAIOR_ZERO"); | ||
83 | + } | ||
84 | + //TODO validacaoBensCaracteristicasObrigatorias(errors, entradaItem, item); | ||
85 | + valorTotalItens = valorTotalItens.add(entradaItem.getValorTotal()); | ||
86 | + item++; | ||
87 | + } | ||
88 | + | ||
89 | + // verificar se os valores da nota e da soma dos itens sao iguais, caso nao seja e lançada uma exceção | ||
90 | + if (UtilObjeto.isReferencia(entrada.getValorTotalNota()) && valorTotalItens.compareTo(entrada.getValorTotalNota()) != 0) { | ||
91 | + errors.rejectValue("valorTotalNota", CodigoErro.VALIDACAO_CAMPOS.getValue().toString(), "ALMOXARIFADO.VALIDACAO.NOTA_FISCAL_IGUAL_VALOR_INFORMADO"); | ||
92 | + } | ||
93 | + } | ||
94 | + | ||
95 | + } | ||
96 | +} | ||
97 | + |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/EntradaAlmoxarifadoBasicValidator.java
0 → 100644
@@ -0,0 +1,61 @@ | @@ -0,0 +1,61 @@ | ||
1 | +package br.com.centralit.api.service.validation; | ||
2 | + | ||
3 | +import org.springframework.stereotype.Component; | ||
4 | +import org.springframework.validation.Errors; | ||
5 | +import org.springframework.validation.ValidationUtils; | ||
6 | +import org.springframework.validation.Validator; | ||
7 | + | ||
8 | +import br.com.centralit.api.model.EntradaAlmoxarifado; | ||
9 | +import br.com.centralit.api.model.EntradaAlmoxarifadoItem; | ||
10 | +import br.com.centralit.framework.exception.CodigoErro; | ||
11 | +import br.com.centralit.framework.util.UtilColecao; | ||
12 | +import br.com.centralit.framework.util.UtilDate; | ||
13 | +import br.com.centralit.framework.util.UtilObjeto; | ||
14 | + | ||
15 | +@Component("entradaAlmoxarifadoBasicValidator") | ||
16 | +public class EntradaAlmoxarifadoBasicValidator implements Validator { | ||
17 | + | ||
18 | + @Override | ||
19 | + public boolean supports(Class<?> clazz) { | ||
20 | + | ||
21 | + return EntradaAlmoxarifado.class.isAssignableFrom(clazz); | ||
22 | + } | ||
23 | + | ||
24 | + @Override | ||
25 | + public void validate(Object target, Errors errors) { | ||
26 | + | ||
27 | + ValidationUtils.rejectIfEmpty(errors, "almoxarifado", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.ALMOXARIFADO"); | ||
28 | + | ||
29 | + ValidationUtils.rejectIfEmpty(errors, "fornecedor", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.FORNECEDOR"); | ||
30 | + | ||
31 | + ValidationUtils.rejectIfEmpty(errors, "dominioTipoEntrada", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_ENTRADA"); | ||
32 | + | ||
33 | + ValidationUtils.rejectIfEmpty(errors, "dominioTipoRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_RECEBIMENTO"); | ||
34 | + | ||
35 | + ValidationUtils.rejectIfEmpty(errors, "dataRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.DATA_RECEBIMENTO"); | ||
36 | + | ||
37 | + ValidationUtils.rejectIfEmpty(errors, "valorTotalNota", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.VALOR_TOTAL_NOTA"); | ||
38 | + | ||
39 | + ValidationUtils.rejectIfEmpty(errors, "dominioFinalidade", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.FINALIDADE"); | ||
40 | + | ||
41 | + EntradaAlmoxarifado entrada = (EntradaAlmoxarifado) target; | ||
42 | + | ||
43 | + if (UtilDate.isPrimeiraDataMenorSegundaData(entrada.getDataReferencia(), entrada.getDataRecebimento())) { | ||
44 | + errors.rejectValue("dataRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "VALIDACAO.DATA_RECEBIMENTO"); | ||
45 | + } | ||
46 | + | ||
47 | + if (UtilObjeto.isReferencia(entrada.getDataContabil())) { | ||
48 | + if (!UtilDate.isDentroMes(entrada.getDataContabil(), entrada.getAlmoxarifado().getOrganizacao().getDataReferenciaVigente())) { | ||
49 | + errors.rejectValue("dataContabil", CodigoErro.REGRA_NEGOCIO.getValue().toString(), "MSG.MN019"); | ||
50 | + } | ||
51 | + } | ||
52 | + | ||
53 | + ValidationUtils.rejectIfEmpty(errors, "valorTotalNota", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.VALOR_TOTAL_NOTA"); | ||
54 | + | ||
55 | + if (UtilColecao.isVazio(entrada.getEntradasItem())) { | ||
56 | + errors.rejectValue("entradasItem", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.MATERIAIS"); | ||
57 | + } | ||
58 | + | ||
59 | + } | ||
60 | +} | ||
61 | + |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/EntradaAlmoxarifadoValidator.java
@@ -1,39 +0,0 @@ | @@ -1,39 +0,0 @@ | ||
1 | -package br.com.centralit.api.service.validation; | ||
2 | - | ||
3 | -import org.springframework.stereotype.Component; | ||
4 | -import org.springframework.validation.Errors; | ||
5 | -import org.springframework.validation.ValidationUtils; | ||
6 | -import org.springframework.validation.Validator; | ||
7 | - | ||
8 | -import br.com.centralit.api.model.EntradaAlmoxarifado; | ||
9 | -import br.com.centralit.framework.exception.CodigoErro; | ||
10 | - | ||
11 | -@Component("entradaAlmoxarifadoValidator") | ||
12 | -public class EntradaAlmoxarifadoValidator implements Validator { | ||
13 | - | ||
14 | - @Override | ||
15 | - public boolean supports(Class<?> clazz) { | ||
16 | - | ||
17 | - return EntradaAlmoxarifado.class.isAssignableFrom(clazz); | ||
18 | - } | ||
19 | - | ||
20 | - @Override | ||
21 | - public void validate(Object target, Errors errors) { | ||
22 | - | ||
23 | - ValidationUtils.rejectIfEmpty(errors, "almoxarifado", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.ALMOXARIFADO"); | ||
24 | - | ||
25 | - ValidationUtils.rejectIfEmpty(errors, "dataRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.DATA_RECEBIMENTO"); | ||
26 | - | ||
27 | - ValidationUtils.rejectIfEmpty(errors, "dataContabil", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.DATA_CONTABILIZACAO"); | ||
28 | - | ||
29 | - ValidationUtils.rejectIfEmpty(errors, "dominioTipoEntrada", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_ENTRADA"); | ||
30 | - | ||
31 | - ValidationUtils.rejectIfEmpty(errors, "dominioTipoRecebimento", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.TIPO_RECEBIMENTO"); | ||
32 | - | ||
33 | - ValidationUtils.rejectIfEmpty(errors, "fornecedor", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.FORNECEDOR"); | ||
34 | - | ||
35 | - ValidationUtils.rejectIfEmpty(errors, "valorTotalNota", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.VALOR_TOTAL_NOTA"); | ||
36 | - | ||
37 | - } | ||
38 | -} | ||
39 | - |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/EntradaAlmoxarifadoController.java
@@ -106,5 +106,11 @@ public class EntradaAlmoxarifadoController extends GenericController<EntradaAlmo | @@ -106,5 +106,11 @@ public class EntradaAlmoxarifadoController extends GenericController<EntradaAlmo | ||
106 | 106 | ||
107 | return responseBody; | 107 | return responseBody; |
108 | } | 108 | } |
109 | + | ||
110 | + @RequestMapping(method = RequestMethod.POST, value = "/concluir") | ||
111 | + @ResponseBody | ||
112 | + public ResponseBodyWrapper concluir(@RequestBody EntradaAlmoxarifado entradaAlmoxarifado) { | ||
113 | + return new ResponseBodyWrapper(this.entradaAlmoxarifadoService.concluir(entradaAlmoxarifado), getEditView()); | ||
114 | + } | ||
109 | 115 | ||
110 | } | 116 | } |
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
@@ -306,6 +306,10 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -306,6 +306,10 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
306 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.DOCUMENTOS", "Documentos", dominio, modulo)); | 306 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.DOCUMENTOS", "Documentos", dominio, modulo)); |
307 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.VALOR_TOTAL_MATERIAL_SUBTOTAL", "Valor total do material (Subtotal)", dominio, modulo)); | 307 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.VALOR_TOTAL_MATERIAL_SUBTOTAL", "Valor total do material (Subtotal)", dominio, modulo)); |
308 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.UN_MEDIDA", "Un. medida", dominio, modulo)); | 308 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.UN_MEDIDA", "Un. medida", dominio, modulo)); |
309 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CONCLUIR_ENTRADA", "Concluir entrada", 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)); | ||
312 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CONCLUIR_E_DESCONTABILIZAR_ENTRADA", "Concluir e descontabilizar", dominio, modulo)); | ||
309 | } | 313 | } |
310 | 314 | ||
311 | private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { | 315 | private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { |
@@ -333,6 +337,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -333,6 +337,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
333 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_IS_SUPERIOR_REMOVER", "O endereço de estoque a ser removido, foi vinculado como superior a outros endereço. Caso prossiga com a operação, também será removido todos os endereços vinculados a este. Deseja continuar?", dominio, modulo)); | 337 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_IS_SUPERIOR_REMOVER", "O endereço de estoque a ser removido, foi vinculado como superior a outros endereço. Caso prossiga com a operação, também será removido todos os endereços vinculados a este. Deseja continuar?", dominio, modulo)); |
334 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_TODOS_MATERIAIS", "A definição de endereço de estoque para todos os materias não poderá ser desfeita após salvar o registro. Deseja realmente adicionar este endereço para todos os materiais?", dominio, modulo)); | 338 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_TODOS_MATERIAIS", "A definição de endereço de estoque para todos os materias não poderá ser desfeita após salvar o registro. Deseja realmente adicionar este endereço para todos os materiais?", dominio, modulo)); |
335 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_VINCULO_CICLICO", "Não é permitido vincular o endereço de estoque superior, pois este endereço tem como endereço superior o registro que está sendo alterado. Favor remover ou escolher outro endereço de estoque superior.", dominio, modulo)); | 339 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_VINCULO_CICLICO", "Não é permitido vincular o endereço de estoque superior, pois este endereço tem como endereço superior o registro que está sendo alterado. Favor remover ou escolher outro endereço de estoque superior.", dominio, modulo)); |
340 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENTRADA_DESCONTABILIZACAO_COM_SAIDAS", "Você não pode descontabilizar esta entrada pois existem as seguintes saídas com materiais da mesma: ", dominio, modulo)); | ||
341 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.DATA_CONTABIL_ALTERADA_SAIDAS", "Você não pode alterar a data de contabilização após realizar atendimentos e baixas em materiais desta entrada!", dominio, modulo)); | ||
336 | } | 342 | } |
337 | 343 | ||
338 | private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { | 344 | private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { |
@@ -349,6 +355,9 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -349,6 +355,9 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
349 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.DATA_BAIXA_FORA_REFERENCIA_VIGENTE", "Data de conclusão tem que estar dentro da referência vigente", dominio, modulo)); | 355 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.DATA_BAIXA_FORA_REFERENCIA_VIGENTE", "Data de conclusão tem que estar dentro da referência vigente", dominio, modulo)); |
350 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REQUISICAO_DIFERENTE_NAO_CONCLUIDA_PRONTA_ATENDIMENTO", "Somente requisições de consumo com status Não concluída e Pronta para atendimento pode ser editada!", dominio, modulo)); | 356 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REQUISICAO_DIFERENTE_NAO_CONCLUIDA_PRONTA_ATENDIMENTO", "Somente requisições de consumo com status Não concluída e Pronta para atendimento pode ser editada!", dominio, modulo)); |
351 | internacionalizacaoList.add(new Internacionalizacao("MSG.EXISTE_REQUISICAO_DISPONIVEL_CENTROCUSTO_ALMOXARIFADO_UR", "Centro de custo, almoxarifado, unidade requisitante e materiais de consumo estão presentes na requisição: ", dominio, modulo)); | 357 | internacionalizacaoList.add(new Internacionalizacao("MSG.EXISTE_REQUISICAO_DISPONIVEL_CENTROCUSTO_ALMOXARIFADO_UR", "Centro de custo, almoxarifado, unidade requisitante e materiais de consumo estão presentes na requisição: ", dominio, modulo)); |
358 | + | ||
359 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_CONTABILIZADA", "Entrada contabilizada com sucesso!", dominio, modulo)); | ||
360 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_DESCONTABILIZADA", "Entrada descontabilizada com sucesso!", dominio, modulo)); | ||
352 | } | 361 | } |
353 | } | 362 | } |
354 | 363 |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/EntradaAlmoxarifadoController.js
@@ -2,13 +2,16 @@ | @@ -2,13 +2,16 @@ | ||
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 | function EntradaAlmoxarifadoController($scope, $filter, FileUploader, EntradaAlmoxarifadoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, | 6 | function EntradaAlmoxarifadoController($scope, $filter, FileUploader, EntradaAlmoxarifadoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, |
6 | $translate, $timeout, DominioRepository , FornecedorRepository, MaterialConsumoRepository, EntradaAlmoxarifadoItemRepository, | 7 | $translate, $timeout, DominioRepository , FornecedorRepository, MaterialConsumoRepository, EntradaAlmoxarifadoItemRepository, |
7 | - MaterialLocalEstoqueRepository) { | 8 | + MaterialLocalEstoqueRepository, MovimentoEstoqueRepository) { |
8 | 9 | ||
9 | var CODIGO_DOMINIO_TIPO_RECEBIMENTO_COMPRA_ORCAMENTARIA = 1; | 10 | var CODIGO_DOMINIO_TIPO_RECEBIMENTO_COMPRA_ORCAMENTARIA = 1; |
10 | 11 | ||
11 | $scope.entradaAlmoxarifado = {}; | 12 | $scope.entradaAlmoxarifado = {}; |
13 | + | ||
14 | + $scope.entradaAlmoxarifadoOriginal = {}; | ||
12 | $scope.edit = true; | 15 | $scope.edit = true; |
13 | 16 | ||
14 | /** | 17 | /** |
@@ -116,8 +119,12 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -116,8 +119,12 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
116 | 119 | ||
117 | EntradaAlmoxarifadoRepository.get(entradaAlmoxarifado.id).then(function(result) { | 120 | EntradaAlmoxarifadoRepository.get(entradaAlmoxarifado.id).then(function(result) { |
118 | $scope.entradaAlmoxarifado = result.originalElement; | 121 | $scope.entradaAlmoxarifado = result.originalElement; |
122 | + | ||
123 | + $scope.entradaAlmoxarifadoOriginal = angular.copy($scope.entradaAlmoxarifado); | ||
124 | + | ||
119 | if($scope.entradaAlmoxarifado.fornecedor){ | 125 | if($scope.entradaAlmoxarifado.fornecedor){ |
120 | $scope.entradaAlmoxarifado.fornecedor['pessoa.nome'] = $scope.entradaAlmoxarifado.fornecedor.pessoa.nome; | 126 | $scope.entradaAlmoxarifado.fornecedor['pessoa.nome'] = $scope.entradaAlmoxarifado.fornecedor.pessoa.nome; |
127 | + $scope.entradaAlmoxarifadoOriginal.fornecedor['pessoa.nome'] = $scope.entradaAlmoxarifadoOriginal.fornecedor.pessoa.nome; | ||
121 | } | 128 | } |
122 | 129 | ||
123 | $scope.dominiosTipoRecebimento.forEach(function(item){ | 130 | $scope.dominiosTipoRecebimento.forEach(function(item){ |
@@ -130,6 +137,14 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -130,6 +137,14 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
130 | $scope.edit = edit; | 137 | $scope.edit = edit; |
131 | $scope.setLoading(false); | 138 | $scope.setLoading(false); |
132 | }); | 139 | }); |
140 | + | ||
141 | + MovimentoEstoqueRepository.buscarMovimentosSaidaComMateriaisDaEntrada($scope.entradaAlmoxarifado.id).then(function(result) { | ||
142 | + if (result.saidas) { | ||
143 | + $scope.bloquearDataContabil = true; | ||
144 | + } else { | ||
145 | + $scope.bloquearDataContabil = false; | ||
146 | + } | ||
147 | + }); | ||
133 | }; | 148 | }; |
134 | 149 | ||
135 | $scope.findAutoCompleteAlmoxarifado = function(value){ | 150 | $scope.findAutoCompleteAlmoxarifado = function(value){ |
@@ -390,10 +405,28 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -390,10 +405,28 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
390 | $scope.valorTotalMateriais = converterMoedaToNumber(entradaItem.valorTotal) + $scope.valorTotalMateriais; | 405 | $scope.valorTotalMateriais = converterMoedaToNumber(entradaItem.valorTotal) + $scope.valorTotalMateriais; |
391 | }); | 406 | }); |
392 | }; | 407 | }; |
408 | + | ||
409 | + $scope.saveOrUpdateContabilizar = function(contabilizar) { | ||
410 | + | ||
411 | + $scope.entradaAlmoxarifado.isEntradaConcluida = true; | ||
412 | + $scope.entradaAlmoxarifadoOriginal.isEntradaConcluida = true; | ||
413 | + | ||
414 | + if (contabilizar) { | ||
415 | + $scope.dataContabilFinal = $scope.entradaAlmoxarifado.dataContabil; | ||
416 | + $scope.dataContabilFinalBloqueada = $scope.entradaAlmoxarifado.dataContabil; | ||
417 | + $scope.$openModal('modal-contabilizar-entrada.html', 'lg'); | ||
418 | + } else { | ||
419 | + $scope.saveOrUpdate(null); | ||
420 | + } | ||
421 | + }; | ||
393 | 422 | ||
394 | // SALVA O EntradaAlmoxarifado | 423 | // SALVA O EntradaAlmoxarifado |
395 | - $scope.saveOrUpdate = function(){ | 424 | + $scope.saveOrUpdate = function(dataContabil){ |
396 | $scope.entradaAlmoxarifadoForm.$submitted = true; | 425 | $scope.entradaAlmoxarifadoForm.$submitted = true; |
426 | + $scope.entradaAlmoxarifadoForm.dadosEntradaForm.$submitted = true; | ||
427 | + $scope.entradaAlmoxarifadoForm.materiaisForm.$submitted = true; | ||
428 | + $scope.entradaAlmoxarifadoForm.documentosForm.$submitted = true; | ||
429 | + $scope.entradaAlmoxarifadoForm.observacoesForm.$submitted = true; | ||
397 | 430 | ||
398 | // validar o formulario, retorna true se o formulario e as regras estiverem OK | 431 | // validar o formulario, retorna true se o formulario e as regras estiverem OK |
399 | var formularioValido = validarFormulario($scope.entradaAlmoxarifadoForm); | 432 | var formularioValido = validarFormulario($scope.entradaAlmoxarifadoForm); |
@@ -418,15 +451,69 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -418,15 +451,69 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
418 | 451 | ||
419 | EntradaAlmoxarifadoRepository.save($scope.entradaAlmoxarifado).then(function(result) { | 452 | EntradaAlmoxarifadoRepository.save($scope.entradaAlmoxarifado).then(function(result) { |
420 | $scope.entradaAlmoxarifado = result.originalElement; | 453 | $scope.entradaAlmoxarifado = result.originalElement; |
454 | + | ||
455 | + if ($scope.entradaAlmoxarifado.fornecedor) { | ||
456 | + $scope.entradaAlmoxarifado.fornecedor['pessoa.nome'] = $scope.entradaAlmoxarifado.fornecedor.pessoa.nome; | ||
457 | + } | ||
458 | + | ||
421 | $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); | 459 | $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); |
422 | 460 | ||
423 | // depois de salvar a entrada ja tendo uma referencia do id, esse metodo ira salvar os documentos se existir | 461 | // depois de salvar a entrada ja tendo uma referencia do id, esse metodo ira salvar os documentos se existir |
424 | salvarListaDocumentos(entradaTemp); | 462 | salvarListaDocumentos(entradaTemp); |
425 | - $scope.resetForm(); | ||
426 | $scope.setLoading(false); | 463 | $scope.setLoading(false); |
464 | + | ||
465 | + var dataContabilAntiga = angular.copy($scope.entradaAlmoxarifado.dataContabil); | ||
466 | + | ||
467 | + $scope.setLoadingSalva(true); | ||
468 | + | ||
469 | + if (dataContabilAntiga && !dataContabil) { | ||
470 | + MovimentoEstoqueRepository.buscarMovimentosSaidaComMateriaisDaEntrada($scope.entradaAlmoxarifado.id).then(function(result) { | ||
471 | + if (result.saidas) { | ||
472 | + $scope.setLoading(false); | ||
473 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.VALIDACAO.ENTRADA_DESCONTABILIZACAO_COM_SAIDAS') + result.saidas); | ||
474 | + } else { | ||
475 | + concluir(dataContabil); | ||
476 | + } | ||
477 | + }); | ||
478 | + } else { | ||
479 | + concluir(dataContabil); | ||
480 | + } | ||
427 | }); | 481 | }); |
428 | } | 482 | } |
429 | }; | 483 | }; |
484 | + | ||
485 | + var concluir = function(dataContabil) { | ||
486 | + var dataContabilAntiga = angular.copy($scope.entradaAlmoxarifado.dataContabil); | ||
487 | + var error = true; | ||
488 | + $scope.entradaAlmoxarifado.dataContabil = dataContabil; | ||
489 | + | ||
490 | + $scope.entradaAlmoxarifado.valorTotalNota = converterMoedaToNumber($scope.entradaAlmoxarifado.valorTotalNota); | ||
491 | + | ||
492 | + EntradaAlmoxarifadoRepository.concluir($scope.entradaAlmoxarifado).then(function(result) { | ||
493 | + $scope.resetForm(); | ||
494 | + error = false; | ||
495 | + $scope.entradaAlmoxarifado = result.originalElement; | ||
496 | + $scope.entradaAlmoxarifado.dataRecebimento = $filter('date')($scope.entradaAlmoxarifado.dataRecebimento, "dd/MM/yyyy"); | ||
497 | + $scope.entradaAlmoxarifado.dataContabil = $filter('date')($scope.entradaAlmoxarifado.dataContabil, "dd/MM/yyyy"); | ||
498 | + $scope.entradaAlmoxarifado.dataReferencia = $filter('date')($scope.entradaAlmoxarifado.dataReferencia, "dd/MM/yyyy"); | ||
499 | + if ($scope.entradaAlmoxarifado.fornecedor) { | ||
500 | + $scope.entradaAlmoxarifado.fornecedor['pessoa.nome'] = $scope.entradaAlmoxarifado.fornecedor.pessoa.nome; | ||
501 | + } | ||
502 | + $scope.setLoading(false); | ||
503 | + if (dataContabil) { | ||
504 | + $scope.showAlert("success", $translate.instant('ALMOXARIFADO.MSG.ENTRADA_CONTABILIZADA')); | ||
505 | + $scope.contabilizado = true; | ||
506 | + } else { | ||
507 | + $scope.showAlert("success", $translate.instant('ALMOXARIFADO.MSG.ENTRADA_DESCONTABILIZADA')); | ||
508 | + } | ||
509 | + }); | ||
510 | + | ||
511 | + $timeout(function() { | ||
512 | + if (error) { | ||
513 | + $scope.entradaAlmoxarifado.dataContabil = dataContabilAntiga; | ||
514 | + } | ||
515 | + }, 1000); | ||
516 | + }; | ||
430 | 517 | ||
431 | // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento | 518 | // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento |
432 | var salvarListaDocumentos = function(entradaTemp){ | 519 | var salvarListaDocumentos = function(entradaTemp){ |
@@ -655,7 +742,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -655,7 +742,7 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
655 | $scope.enderecosMaterial = []; | 742 | $scope.enderecosMaterial = []; |
656 | } | 743 | } |
657 | 744 | ||
658 | - if ($scope.entradaItem.material) { | 745 | + if ($scope.entradaItem && $scope.entradaItem.material) { |
659 | $scope.unidadesMedidasEntrada = $scope.entradaItem.material.tiposUnidadeMedidaEntrada.map(function(item){ | 746 | $scope.unidadesMedidasEntrada = $scope.entradaItem.material.tiposUnidadeMedidaEntrada.map(function(item){ |
660 | if (item.isPadrao && !$scope.entradaItem.unidadeMedidaEntrada) { | 747 | if (item.isPadrao && !$scope.entradaItem.unidadeMedidaEntrada) { |
661 | $scope.entradaItem.unidadeMedidaEntrada = item.unidadeMedida; | 748 | $scope.entradaItem.unidadeMedidaEntrada = item.unidadeMedida; |
@@ -680,15 +767,17 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -680,15 +767,17 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
680 | //Watch para controlar as mudanças da quantidade na entrada de materiais | 767 | //Watch para controlar as mudanças da quantidade na entrada de materiais |
681 | $scope.$watch('entradaItem.$quantidadeEntrada', function() { | 768 | $scope.$watch('entradaItem.$quantidadeEntrada', function() { |
682 | $timeout(function(){ | 769 | $timeout(function(){ |
683 | - if($scope.entradaItem.$quantidadeEntrada && $scope.entradaItem.unidadeMedidaEntrada){ | ||
684 | - $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao; | ||
685 | - } else { | ||
686 | - delete $scope.entradaItem.quantidade; | ||
687 | - } | ||
688 | - if($scope.entradaItem.quantidade && $scope.entradaItem.valorTotal){ | ||
689 | - $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade; | ||
690 | - } else { | ||
691 | - delete $scope.entradaItem.valorUnitario; | 770 | + if ($scope.entradaItem) { |
771 | + if($scope.entradaItem.$quantidadeEntrada && $scope.entradaItem.unidadeMedidaEntrada){ | ||
772 | + $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao; | ||
773 | + } else { | ||
774 | + delete $scope.entradaItem.quantidade; | ||
775 | + } | ||
776 | + if($scope.entradaItem.quantidade && $scope.entradaItem.valorTotal){ | ||
777 | + $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade; | ||
778 | + } else { | ||
779 | + delete $scope.entradaItem.valorUnitario; | ||
780 | + } | ||
692 | } | 781 | } |
693 | }); | 782 | }); |
694 | }); | 783 | }); |
@@ -696,10 +785,12 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -696,10 +785,12 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
696 | //Watch para controlar as mudanças da unidade de medida na entrada de materiais | 785 | //Watch para controlar as mudanças da unidade de medida na entrada de materiais |
697 | $scope.$watch('entradaItem.unidadeMedidaEntrada', function() { | 786 | $scope.$watch('entradaItem.unidadeMedidaEntrada', function() { |
698 | $timeout(function(){ | 787 | $timeout(function(){ |
699 | - if($scope.entradaItem.$quantidadeEntrada && $scope.entradaItem.unidadeMedidaEntrada){ | ||
700 | - $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao; | ||
701 | - } else { | ||
702 | - delete $scope.entradaItem.quantidade; | 788 | + if ($scope.entradaItem) { |
789 | + if($scope.entradaItem.$quantidadeEntrada && $scope.entradaItem.unidadeMedidaEntrada){ | ||
790 | + $scope.entradaItem.quantidade = $scope.entradaItem.$quantidadeEntrada * $scope.entradaItem.unidadeMedidaEntrada.quantidadePadrao; | ||
791 | + } else { | ||
792 | + delete $scope.entradaItem.quantidade; | ||
793 | + } | ||
703 | } | 794 | } |
704 | }); | 795 | }); |
705 | }); | 796 | }); |
@@ -707,10 +798,12 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | @@ -707,10 +798,12 @@ citApp.controller('EntradaAlmoxarifadoController', ['$scope', '$filter', 'FileUp | ||
707 | //Watch para controlar as mudanças do valor total da entrada de materiais | 798 | //Watch para controlar as mudanças do valor total da entrada de materiais |
708 | $scope.$watch('entradaItem.valorTotal', function() { | 799 | $scope.$watch('entradaItem.valorTotal', function() { |
709 | $timeout(function(){ | 800 | $timeout(function(){ |
710 | - if($scope.entradaItem.quantidade && $scope.entradaItem.valorTotal){ | ||
711 | - $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade; | ||
712 | - } else { | ||
713 | - delete $scope.entradaItem.valorUnitario; | 801 | + if ($scope.entradaItem) { |
802 | + if($scope.entradaItem.quantidade && $scope.entradaItem.valorTotal){ | ||
803 | + $scope.entradaItem.valorUnitario = $scope.entradaItem.valorTotal / $scope.entradaItem.quantidade; | ||
804 | + } else { | ||
805 | + delete $scope.entradaItem.valorUnitario; | ||
806 | + } | ||
714 | } | 807 | } |
715 | }); | 808 | }); |
716 | }); | 809 | }); |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/EntradaAlmoxarifadoRepository.js
@@ -4,6 +4,10 @@ citApp.factory('EntradaAlmoxarifadoRepository', ['RestangularAlmoxarifado', 'Abs | @@ -4,6 +4,10 @@ citApp.factory('EntradaAlmoxarifadoRepository', ['RestangularAlmoxarifado', 'Abs | ||
4 | 4 | ||
5 | function EntradaAlmoxarifadoRepository() { | 5 | function EntradaAlmoxarifadoRepository() { |
6 | AbstractRepository.call(this, restangularAlmoxarifado, 'rest/entradaAlmoxarifado'); | 6 | AbstractRepository.call(this, restangularAlmoxarifado, 'rest/entradaAlmoxarifado'); |
7 | + | ||
8 | + this.concluir = function(entrada) { | ||
9 | + return restangularAlmoxarifado.all(this.route + '/concluir').post(entrada); | ||
10 | + }; | ||
7 | } | 11 | } |
8 | 12 | ||
9 | AbstractRepository.extend(EntradaAlmoxarifadoRepository); | 13 | AbstractRepository.extend(EntradaAlmoxarifadoRepository); |
cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/dialog_contabilizar_entrada.html
0 → 100644
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
1 | +<ng-form name="formContabilizacao" autocomplete="off"> | ||
2 | + <div class="modal-header"> | ||
3 | + <button class="btn btn-clear" type="button" ng-click="contabilizar(formContabilizacao, dataContabilFinal);"> | ||
4 | + <i class="fa fa-save green"></i> | ||
5 | + <translate>ALMOXARIFADO.LABEL.CONCLUIR_E_CONTABILIZAR_ENTRADA</translate> | ||
6 | + </button> | ||
7 | + | ||
8 | + <button title="{{$translate.instant('LABEL.CANCELAR')}}" alt="{{$translate.instant('LABEL.CANCELAR')}}" ng-click="$dismiss('cancel');" class="btn btn-clear" type="button"> | ||
9 | + <i class="fa fa-times red"></i> | ||
10 | + <translate>LABEL.CANCELAR</translate> | ||
11 | + </button> | ||
12 | + </div> | ||
13 | + | ||
14 | + <div class="modal-body"> | ||
15 | + <fieldset> | ||
16 | + <div class="scrollbar-inner"> | ||
17 | + <legend style="font-size: 20px"> | ||
18 | + <translate>LABEL.DATA_CONTABILIZACAO</translate> | ||
19 | + </legend> | ||
20 | + <fieldset> | ||
21 | + <div class="row"> | ||
22 | + <div ng-if="bloquearDataContabil" class="col-sm-4"> | ||
23 | + <label-input-data ng-id="entrada.dataContabil" ng-obrigatorio="true" ng-model="dataContabilFinalBloqueada" ng-label="LABEL.DATA_CONTABILIZACAO" | ||
24 | + ng-disabled="bloquearDataContabil" ng-form="formContabilizacao" label-info-tooltip="{{$translate.instant('ALMOXARIFADO.VALIDACAO.DATA_CONTABIL_ALTERADA_SAIDAS')}}"/> | ||
25 | + </div> | ||
26 | + <div ng-show="!bloquearDataContabil" class="col-sm-4"> | ||
27 | + <label-input-data ng-id="dataContabilFinal" ng-obrigatorio="true" ng-model="dataContabilFinal" ng-label="LABEL.DATA_CONTABILIZACAO" ng-disabled="bloquearDataContabil" | ||
28 | + ng-form="formContabilizacao" /> | ||
29 | + </div> | ||
30 | + </div> | ||
31 | + </fieldset> | ||
32 | + </div> | ||
33 | + </fieldset> | ||
34 | + </div> | ||
35 | +</ng-form> |
cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoEdit.html
@@ -2,10 +2,25 @@ | @@ -2,10 +2,25 @@ | ||
2 | <div class="bar-buttons-action fixed" > | 2 | <div class="bar-buttons-action fixed" > |
3 | <div class="row"> | 3 | <div class="row"> |
4 | <div class="col-sm-9 text-left"> | 4 | <div class="col-sm-9 text-left"> |
5 | - <button title="{{$translate.instant('LABEL.SALVAR')}}" alt="{{$translate.instant('LABEL.SALVAR')}}" class="btn btn-clear" ng-click="saveOrUpdate()" ng-if="edit" type="button"> | ||
6 | - <i class="fa fa-save green"></i> <translate>LABEL.SALVAR</translate> | ||
7 | - </button> | ||
8 | - <button title="{{$translate.instant('LABEL.LIMPAR')}}" alt="{{$translate.instant('LABEL.LIMPAR')}}" class="btn btn-clear" type="button" ng-show="entradaAlmoxarifado.id === undefined" ng-click="resetForm();" > | 5 | + <div ng-show="edit" class="btn-group dropdown" role="group" dropdown> |
6 | + <button class="btn btn-clear" ng-if="edit" title="{{$translate.instant('ALMOXARIFADO.LABEL.CONCLUIR_ENTRADA')}}" | ||
7 | + alt="{{$translate.instant('ALMOXARIFADO.LABEL.CONCLUIR_ENTRADA')}}" dropdown-toggle type="button"> | ||
8 | + <i class="fa fa-save green"></i> <translate>ALMOXARIFADO.LABEL.CONCLUIR_ENTRADA</translate><span class="fa fa-caret-down icon-on-right"></span> | ||
9 | + </button> | ||
10 | + <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu"> | ||
11 | + <li ng-show="entradaAlmoxarifado.dataContabil === null"> | ||
12 | + <a href="#void" ng-click="saveOrUpdateContabilizar(false)" ><i class="fa fa-save orange"></i> <translate>ALMOXARIFADO.LABEL.CONCLUIR_ENTRADA_BTN</translate></a> | ||
13 | + </li> | ||
14 | + <li> | ||
15 | + <a href="#void" ng-click="saveOrUpdateContabilizar(true)" ><i class="fa fa-save green"></i> <translate>ALMOXARIFADO.LABEL.CONCLUIR_E_CONTABILIZAR_ENTRADA</translate></a> | ||
16 | + </li> | ||
17 | + <li ng-show="entradaAlmoxarifado.dataContabil !== null"> | ||
18 | + <a href="#void" ng-click="saveOrUpdateContabilizar(false)" ><i class="fa fa-save orange"></i> <translate>ALMOXARIFADO.LABEL.CONCLUIR_E_DESCONTABILIZAR_ENTRADA</translate></a> | ||
19 | + </li> | ||
20 | + </ul> | ||
21 | + </div> | ||
22 | + <button title="{{$translate.instant('LABEL.LIMPAR')}}" alt="{{$translate.instant('LABEL.LIMPAR')}}" class="btn btn-clear" type="button" ng-show="entradaAlmoxarifado.id === undefined" | ||
23 | + ng-click="resetForm();" > | ||
9 | <i class="fa fa-eraser yellow-dark"></i> <translate>LABEL.LIMPAR</translate> | 24 | <i class="fa fa-eraser yellow-dark"></i> <translate>LABEL.LIMPAR</translate> |
10 | </button> | 25 | </button> |
11 | <button | 26 | <button |
@@ -16,7 +31,8 @@ | @@ -16,7 +31,8 @@ | ||
16 | <i class="fa fa-print"></i> | 31 | <i class="fa fa-print"></i> |
17 | <translate>LABEL.GERAR_RELATORIO</translate> | 32 | <translate>LABEL.GERAR_RELATORIO</translate> |
18 | </button> | 33 | </button> |
19 | - <button title="{{$translate.instant('LABEL.PESQUISAR')}}" alt="{{$translate.instant('LABEL.PESQUISAR')}}" class="btn btn-clear" type="button" ng-click="$showPageSearchWorkspace(workspace); atualizarLista('EntradaAlmoxarifadoListControllerId');"> | 34 | + <button title="{{$translate.instant('LABEL.PESQUISAR')}}" alt="{{$translate.instant('LABEL.PESQUISAR')}}" class="btn btn-clear" type="button" |
35 | + ng-click="$showPageSearchWorkspace(workspace); atualizarLista('searchEntradaAlmoxarifado');"> | ||
20 | <i class="fa fa-search"></i> <translate>LABEL.PESQUISAR</translate> | 36 | <i class="fa fa-search"></i> <translate>LABEL.PESQUISAR</translate> |
21 | </button> | 37 | </button> |
22 | </div> | 38 | </div> |
@@ -34,6 +50,10 @@ | @@ -34,6 +50,10 @@ | ||
34 | <!-- .row --> | 50 | <!-- .row --> |
35 | </div> | 51 | </div> |
36 | 52 | ||
53 | + <script type="text/ng-template" id="modal-contabilizar-entrada.html"> | ||
54 | + <div ng-include src="'/cit-almoxarifado-web/html/entrada/dialog_contabilizar_entrada.html'" /> | ||
55 | + </script> | ||
56 | + | ||
37 | <breadcrumb ng-workspace="workspace"></breadcrumb> | 57 | <breadcrumb ng-workspace="workspace"></breadcrumb> |
38 | 58 | ||
39 | <p> | 59 | <p> |
cit-almoxarifado-web/src/main/webapp/html/entradaAlmoxarifado/entradaAlmoxarifadoList.html
@@ -14,6 +14,11 @@ | @@ -14,6 +14,11 @@ | ||
14 | <translate>LABEL.VISUALIZAR</translate> | 14 | <translate>LABEL.VISUALIZAR</translate> |
15 | </button> | 15 | </button> |
16 | 16 | ||
17 | + <button title="{{$translate.instant('LABEL.EDITAR')}}" alt="{{$translate.instant('LABEL.EDITAR')}}" class="btn btn-clear" ng-click="abrirVisualizar(true);" type="button"> | ||
18 | + <i class="fa fa-pencil blue"></i> | ||
19 | + <translate>LABEL.EDITAR</translate> | ||
20 | + </button> | ||
21 | + | ||
17 | <button class="btn btn-clear" ng-click="remove();"> | 22 | <button class="btn btn-clear" ng-click="remove();"> |
18 | <i class="fa fa-times red"></i> | 23 | <i class="fa fa-times red"></i> |
19 | <translate>LABEL.REMOVER</translate> | 24 | <translate>LABEL.REMOVER</translate> |
@@ -43,6 +48,6 @@ | @@ -43,6 +48,6 @@ | ||
43 | 48 | ||
44 | <breadcrumb ng-workspace="workspace"></breadcrumb> | 49 | <breadcrumb ng-workspace="workspace"></breadcrumb> |
45 | 50 | ||
46 | - <list-view ng-lista="entradaAlmoxarifadoList" ng-repository="EntradaAlmoxarifadoRepository" ng-use-custom-remove="false" ng-headers="headers" ng-filter-criteria="filterCriteria" ng-item-selecionado="entradaAlmoxarifadoChecked"></list-view> | ||
47 | - | 51 | + <list-view ng-lista="entradaAlmoxarifadoList" ng-repository="EntradaAlmoxarifadoRepository" ng-use-custom-remove="false" ng-headers="headers" ng-filter-criteria="filterCriteria" |
52 | + ng-item-selecionado="entradaAlmoxarifadoChecked"></list-view> | ||
48 | </div><!-- .page-content --> | 53 | </div><!-- .page-content --> |