Commit b8f36bb7e34450e815e4c5e82424bf24b0a0c1b7
Exists in
master
Merge branch 'tarefa-3822' into adm-1.16.0
# Conflicts: # cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoDao.java # cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoDaoHibernate.java # cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoItemService.java # cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java # cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoItemServiceImpl.java # cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoServiceImpl.java # cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js # cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html
Showing
53 changed files
with
2551 additions
and
629 deletions
Show diff stats
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/AtendimentoRequisicaoConsumoFIFODao.java
0 → 100644
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MaterialEstoqueFIFOItemDao.java
1 | package br.com.centralit.api.dao; | 1 | package br.com.centralit.api.dao; |
2 | 2 | ||
3 | +import java.util.List; | ||
4 | + | ||
5 | +import br.com.centralit.api.model.MaterialEstoqueFIFOItem; | ||
3 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; | 6 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; |
4 | 7 | ||
5 | public interface MaterialEstoqueFIFOItemDao extends CitGenericDAO { | 8 | public interface MaterialEstoqueFIFOItemDao extends CitGenericDAO { |
9 | + | ||
10 | + List<MaterialEstoqueFIFOItem> findFIFOsByMaterial(long idMaterial); | ||
6 | 11 | ||
7 | } | 12 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MovimentoEstoqueDao.java
1 | package br.com.centralit.api.dao; | 1 | package br.com.centralit.api.dao; |
2 | 2 | ||
3 | import java.math.BigDecimal; | 3 | import java.math.BigDecimal; |
4 | +import java.util.ArrayList; | ||
4 | import java.util.Calendar; | 5 | import java.util.Calendar; |
5 | import java.util.Collection; | 6 | import java.util.Collection; |
6 | import java.util.List; | 7 | import java.util.List; |
7 | -import java.util.Map; | ||
8 | 8 | ||
9 | import br.com.centralit.api.model.EstruturaOrganizacional; | 9 | import br.com.centralit.api.model.EstruturaOrganizacional; |
10 | import br.com.centralit.api.model.MaterialConsumo; | 10 | import br.com.centralit.api.model.MaterialConsumo; |
@@ -116,7 +116,7 @@ public interface MovimentoEstoqueDao extends CitGenericDAO { | @@ -116,7 +116,7 @@ public interface MovimentoEstoqueDao extends CitGenericDAO { | ||
116 | * @param dataFim | 116 | * @param dataFim |
117 | * @return | 117 | * @return |
118 | */ | 118 | */ |
119 | - List<Map<String, Object>> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim, List<Long> idsDominiosTipoStatusRequisicao); | 119 | + List<ArrayList<Object>> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim, List<Long> idsDominiosTipoStatusRequisicao); |
120 | 120 | ||
121 | /** | 121 | /** |
122 | * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | 122 | * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoDao.java
@@ -4,9 +4,12 @@ import java.util.Calendar; | @@ -4,9 +4,12 @@ import java.util.Calendar; | ||
4 | import java.util.Collection; | 4 | import java.util.Collection; |
5 | import java.util.List; | 5 | import java.util.List; |
6 | 6 | ||
7 | +import com.googlecode.genericdao.search.SearchResult; | ||
8 | + | ||
7 | import br.com.centralit.api.model.EstruturaOrganizacional; | 9 | import br.com.centralit.api.model.EstruturaOrganizacional; |
8 | import br.com.centralit.api.model.MaterialConsumo; | 10 | import br.com.centralit.api.model.MaterialConsumo; |
9 | import br.com.centralit.api.model.RequisicaoConsumo; | 11 | import br.com.centralit.api.model.RequisicaoConsumo; |
12 | +import br.com.centralit.api.viewHelper.AtendimentoVH; | ||
10 | import br.com.centralit.api.viewHelper.RequisicaoVH; | 13 | import br.com.centralit.api.viewHelper.RequisicaoVH; |
11 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; | 14 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; |
12 | 15 | ||
@@ -117,4 +120,9 @@ public interface RequisicaoConsumoDao extends CitGenericDAO { | @@ -117,4 +120,9 @@ public interface RequisicaoConsumoDao extends CitGenericDAO { | ||
117 | List<Object> getMateriaisForReport(Long requisicaoId,boolean isFIFO); | 120 | List<Object> getMateriaisForReport(Long requisicaoId,boolean isFIFO); |
118 | String findtipoStatusRequisicaoPorMaterial(Long requisicaoId); | 121 | String findtipoStatusRequisicaoPorMaterial(Long requisicaoId); |
119 | 122 | ||
123 | + SearchResult filtrarRequisicoesAtendimento(AtendimentoVH atendimentoVH); | ||
124 | + | ||
125 | + List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH); | ||
126 | + | ||
127 | + | ||
120 | } | 128 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java
@@ -26,7 +26,9 @@ public interface RequisicaoConsumoItemDao extends CitGenericDAO { | @@ -26,7 +26,9 @@ public interface RequisicaoConsumoItemDao extends CitGenericDAO { | ||
26 | * @param statusFinalizado | 26 | * @param statusFinalizado |
27 | * @return | 27 | * @return |
28 | */ | 28 | */ |
29 | - Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida, Dominio statusAtendida); | 29 | + Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida); |
30 | + | ||
31 | + List<RequisicaoConsumoItem> findItensRequisicaoPorMaterial(Long idRequisicao, Long idMaterial); | ||
30 | 32 | ||
31 | List<RequisicaoConsumoItem> listarRequisicaoCosumoItemByIdRequisicao(Long requisicaoId); | 33 | List<RequisicaoConsumoItem> listarRequisicaoCosumoItemByIdRequisicao(Long requisicaoId); |
32 | 34 |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/AtendimentoRequisicaoConsumoFIFODaoHibernate.java
0 → 100644
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +package br.com.centralit.api.dao.impl; | ||
2 | + | ||
3 | +import org.springframework.stereotype.Repository; | ||
4 | + | ||
5 | +import br.com.centralit.api.dao.AtendimentoRequisicaoConsumoFIFODao; | ||
6 | +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemFIFO; | ||
7 | +import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; | ||
8 | + | ||
9 | +@Repository("atendimentoRequisicaoConsumoFIFODao") | ||
10 | +public class AtendimentoRequisicaoConsumoFIFODaoHibernate extends CitGenericDAOImpl implements AtendimentoRequisicaoConsumoFIFODao { | ||
11 | + public AtendimentoRequisicaoConsumoFIFODaoHibernate() { | ||
12 | + super(AtendimentoRequisicaoConsumoItemFIFO.class); | ||
13 | + } | ||
14 | +} |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MaterialEstoqueFIFOItemDaoHibernate.java
1 | package br.com.centralit.api.dao.impl; | 1 | package br.com.centralit.api.dao.impl; |
2 | 2 | ||
3 | +import java.util.List; | ||
4 | + | ||
3 | import org.springframework.stereotype.Repository; | 5 | import org.springframework.stereotype.Repository; |
4 | 6 | ||
7 | +import com.googlecode.genericdao.search.Sort; | ||
8 | + | ||
5 | import br.com.centralit.api.dao.MaterialEstoqueFIFOItemDao; | 9 | import br.com.centralit.api.dao.MaterialEstoqueFIFOItemDao; |
6 | import br.com.centralit.api.model.MaterialEstoqueFIFOItem; | 10 | import br.com.centralit.api.model.MaterialEstoqueFIFOItem; |
7 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; | 11 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; |
12 | +import br.com.centralit.framework.dao.arquitetura.SearchSeven; | ||
8 | 13 | ||
9 | @Repository("materialEstoqueFIFOItemDao") | 14 | @Repository("materialEstoqueFIFOItemDao") |
10 | public class MaterialEstoqueFIFOItemDaoHibernate extends CitGenericDAOImpl implements MaterialEstoqueFIFOItemDao { | 15 | public class MaterialEstoqueFIFOItemDaoHibernate extends CitGenericDAOImpl implements MaterialEstoqueFIFOItemDao { |
@@ -12,5 +17,17 @@ public class MaterialEstoqueFIFOItemDaoHibernate extends CitGenericDAOImpl imple | @@ -12,5 +17,17 @@ public class MaterialEstoqueFIFOItemDaoHibernate extends CitGenericDAOImpl imple | ||
12 | public MaterialEstoqueFIFOItemDaoHibernate() { | 17 | public MaterialEstoqueFIFOItemDaoHibernate() { |
13 | super(MaterialEstoqueFIFOItem.class); | 18 | super(MaterialEstoqueFIFOItem.class); |
14 | } | 19 | } |
20 | + | ||
21 | + @Override | ||
22 | + public List<MaterialEstoqueFIFOItem> findFIFOsByMaterial(long idMaterial) { | ||
23 | + | ||
24 | + SearchSeven search = new SearchSeven(this.persistentClass); | ||
25 | + | ||
26 | + search.addFilterEqual("material.id", idMaterial); | ||
27 | + | ||
28 | + search.addSort(Sort.asc("id")); | ||
29 | + | ||
30 | + return this.search(search, this.persistentClass); | ||
31 | + } | ||
15 | 32 | ||
16 | } | 33 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MovimentoEstoqueDaoHibernate.java
1 | package br.com.centralit.api.dao.impl; | 1 | package br.com.centralit.api.dao.impl; |
2 | 2 | ||
3 | import java.math.BigDecimal; | 3 | import java.math.BigDecimal; |
4 | +import java.util.ArrayList; | ||
4 | import java.util.Calendar; | 5 | import java.util.Calendar; |
5 | import java.util.Collection; | 6 | import java.util.Collection; |
7 | +import java.util.HashMap; | ||
6 | import java.util.List; | 8 | import java.util.List; |
7 | import java.util.Map; | 9 | import java.util.Map; |
8 | 10 | ||
@@ -13,6 +15,7 @@ import org.springframework.stereotype.Repository; | @@ -13,6 +15,7 @@ import org.springframework.stereotype.Repository; | ||
13 | 15 | ||
14 | import br.com.centralit.api.dao.MovimentoEstoqueDao; | 16 | import br.com.centralit.api.dao.MovimentoEstoqueDao; |
15 | import br.com.centralit.api.model.DominioAlmoxarifado; | 17 | import br.com.centralit.api.model.DominioAlmoxarifado; |
18 | +import br.com.centralit.api.model.DominioMaterial; | ||
16 | import br.com.centralit.api.model.EstruturaOrganizacional; | 19 | import br.com.centralit.api.model.EstruturaOrganizacional; |
17 | import br.com.centralit.api.model.MaterialConsumo; | 20 | import br.com.centralit.api.model.MaterialConsumo; |
18 | import br.com.centralit.api.model.MovimentoEstoque; | 21 | import br.com.centralit.api.model.MovimentoEstoque; |
@@ -25,8 +28,6 @@ import br.com.centralit.framework.util.UtilColecao; | @@ -25,8 +28,6 @@ import br.com.centralit.framework.util.UtilColecao; | ||
25 | import br.com.centralit.framework.util.UtilObjeto; | 28 | import br.com.centralit.framework.util.UtilObjeto; |
26 | 29 | ||
27 | import com.googlecode.genericdao.search.Field; | 30 | import com.googlecode.genericdao.search.Field; |
28 | -import com.googlecode.genericdao.search.Filter; | ||
29 | -import com.googlecode.genericdao.search.Search; | ||
30 | 31 | ||
31 | /** | 32 | /** |
32 | * <p> | 33 | * <p> |
@@ -173,38 +174,71 @@ public class MovimentoEstoqueDaoHibernate extends CitGenericDAOImpl implements M | @@ -173,38 +174,71 @@ public class MovimentoEstoqueDaoHibernate extends CitGenericDAOImpl implements M | ||
173 | /** | 174 | /** |
174 | * {@inheritDoc} | 175 | * {@inheritDoc} |
175 | */ | 176 | */ |
177 | + @SuppressWarnings("unchecked") | ||
176 | @Override | 178 | @Override |
177 | - public List<Map<String, Object>> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim, List<Long> idsDominiosTipoStatusRequisicao) { | ||
178 | - | ||
179 | - SearchSeven search = new SearchSeven(); | 179 | + public List<ArrayList<Object>> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim, List<Long> idsDominiosTipoStatusRequisicao) { |
180 | 180 | ||
181 | - search.setResultMode(Search.RESULT_MAP); | 181 | + Map<String, Object> parametros = new HashMap<String, Object>(); |
182 | + StringBuilder sql = new StringBuilder(); | ||
182 | 183 | ||
183 | - search.addField("atendimentoRequisicaoConsumoItem.quantidade"); | 184 | + sql.append("select atendimento.dataAtendimento, "); |
185 | + sql.append(" (select sum(quantidade) from alm_rc_at_item_endereco where alm_rc_at_item_endereco.at_req_consumoitem_id = atendimentoItem.id) as quantidade "); | ||
186 | + sql.append(" from alm_me_movimentoestoque me "); | ||
187 | + sql.append(" inner join dominio dominio on dominio.id = me.dominioClasseReferencia_id "); | ||
188 | + sql.append(" left join alm_rc_atendimentoitem atendimentoItem on atendimentoItem.id = me.idClasseReferencia "); | ||
189 | + sql.append(" left join alm_rc_atendimento atendimento on atendimento.id = atendimentoItem.AtendimentoReqConsumo_Id "); | ||
190 | + sql.append(" left join alm_rc_item rci on rci.id = atendimentoItem.requisicaoConsumoItem_id "); | ||
191 | + sql.append(" left join alm_requisicaoconsumo rc on rc.id = rci.requisicaoConsumo_id "); | ||
184 | 192 | ||
185 | - search.addField("atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumo.dataAtendimento"); | 193 | + sql.append(" where dominio.codigo = :codigoDominio and dominio.chave = :chaveDominio "); |
186 | 194 | ||
187 | - search.addFilterEqual("material.id", materialConsumo.getId()); | 195 | + parametros.put("codigoDominio", DominioMaterial.REFERENCIA_ATENDIMENTO_ALMOXARIFADO_ITEM); |
196 | + parametros.put("chaveDominio", "classeReferencia"); | ||
188 | 197 | ||
189 | - search.addFilterEqual("atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.requisicaoConsumo.almoxarifado.id", almoxarifado.getId()); | 198 | + sql.append(" and me.material_id = :materialConsumoId "); |
199 | + parametros.put("materialConsumoId", materialConsumo.getId()); | ||
200 | + | ||
201 | + sql.append(" and rc.almoxarifado_id = :almoxarifadoId "); | ||
202 | + parametros.put("almoxarifadoId", almoxarifado.getId()); | ||
190 | 203 | ||
191 | if(UtilObjeto.isReferencia(unidadeRequisitante)){ | 204 | if(UtilObjeto.isReferencia(unidadeRequisitante)){ |
192 | 205 | ||
193 | - search.addFilterEqual("atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.requisicaoConsumo.unidadeRequisitante.id", unidadeRequisitante.getId()); | 206 | + sql.append(" and rc.unidadeRequisitante_id = :unidadeRequisitanteId "); |
207 | + parametros.put("unidadeRequisitanteId", unidadeRequisitante.getId()); | ||
194 | } | 208 | } |
195 | 209 | ||
196 | if(!UtilColecao.isVazio(idsDominiosTipoStatusRequisicao)){ | 210 | if(!UtilColecao.isVazio(idsDominiosTipoStatusRequisicao)){ |
197 | - search.addFilterIn("atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.requisicaoConsumo.tipoStatusRequisicao.id", idsDominiosTipoStatusRequisicao); | 211 | + |
212 | + sql.append(" and rc.tipoStatusRequisicao_id in ").append(addFilterIn(idsDominiosTipoStatusRequisicao)); | ||
198 | } | 213 | } |
199 | 214 | ||
200 | if(UtilObjeto.isReferencia(dataInicio) && UtilObjeto.isReferencia(dataFim)){ | 215 | if(UtilObjeto.isReferencia(dataInicio) && UtilObjeto.isReferencia(dataFim)){ |
201 | 216 | ||
202 | - search.addFilterAnd( | ||
203 | - Filter.greaterOrEqual("atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumo.dataAtendimento", dataInicio), | ||
204 | - Filter.lessOrEqual("atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumo.dataAtendimento", dataFim)); | 217 | + sql.append(" and (atendimento.dataAtendimento >= :dataInicio and atendimento.dataAtendimento <= :dataFim) "); |
218 | + parametros.put("dataInicio", dataInicio); | ||
219 | + parametros.put("dataFim", dataFim); | ||
220 | + } | ||
221 | + | ||
222 | + Query query = em().createNativeQuery(sql.toString()); | ||
223 | + | ||
224 | + for(java.util.Map.Entry<String, Object> parametro : parametros.entrySet()){ | ||
225 | + query.setParameter(parametro.getKey(), parametro.getValue()); | ||
205 | } | 226 | } |
206 | 227 | ||
207 | - return this.search(search); | 228 | + return query.getResultList(); |
229 | + } | ||
230 | + | ||
231 | + private String addFilterIn(List<Long> ids){ | ||
232 | + String in = "("; | ||
233 | + | ||
234 | + for (Long id : ids) { | ||
235 | + in += id + ","; | ||
236 | + } | ||
237 | + | ||
238 | + in = in.substring(0, in.length() - 1); | ||
239 | + | ||
240 | + in += ")"; | ||
241 | + return in; | ||
208 | } | 242 | } |
209 | 243 | ||
210 | @Override | 244 | @Override |
@@ -254,7 +288,7 @@ public class MovimentoEstoqueDaoHibernate extends CitGenericDAOImpl implements M | @@ -254,7 +288,7 @@ public class MovimentoEstoqueDaoHibernate extends CitGenericDAOImpl implements M | ||
254 | SearchSeven search = new SearchSeven(); | 288 | SearchSeven search = new SearchSeven(); |
255 | 289 | ||
256 | search.addFilterEqual("dominioClasseReferencia.id", classeReferencia.getId()); | 290 | search.addFilterEqual("dominioClasseReferencia.id", classeReferencia.getId()); |
257 | - search.addFilterEqual("idClasseReferencia", idReferencia); | 291 | + search.addFilterEqual("idClasseReferencia", null); |
258 | 292 | ||
259 | return search(search); | 293 | return search(search); |
260 | } | 294 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoDaoHibernate.java
1 | package br.com.centralit.api.dao.impl; | 1 | package br.com.centralit.api.dao.impl; |
2 | 2 | ||
3 | import java.math.BigDecimal; | 3 | import java.math.BigDecimal; |
4 | +import java.util.ArrayList; | ||
4 | import java.util.Calendar; | 5 | import java.util.Calendar; |
5 | import java.util.Collection; | 6 | import java.util.Collection; |
6 | import java.util.HashSet; | 7 | import java.util.HashSet; |
@@ -9,6 +10,12 @@ import java.util.Set; | @@ -9,6 +10,12 @@ import java.util.Set; | ||
9 | 10 | ||
10 | import org.springframework.stereotype.Repository; | 11 | import org.springframework.stereotype.Repository; |
11 | 12 | ||
13 | +import com.googlecode.genericdao.search.Field; | ||
14 | +import com.googlecode.genericdao.search.Filter; | ||
15 | +import com.googlecode.genericdao.search.Search; | ||
16 | +import com.googlecode.genericdao.search.SearchResult; | ||
17 | +import com.googlecode.genericdao.search.Sort; | ||
18 | + | ||
12 | import br.com.centralit.api.dao.RequisicaoConsumoDao; | 19 | import br.com.centralit.api.dao.RequisicaoConsumoDao; |
13 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; | 20 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; |
14 | import br.com.centralit.api.model.DominioAlmoxarifado; | 21 | import br.com.centralit.api.model.DominioAlmoxarifado; |
@@ -16,6 +23,7 @@ import br.com.centralit.api.model.EstruturaOrganizacional; | @@ -16,6 +23,7 @@ import br.com.centralit.api.model.EstruturaOrganizacional; | ||
16 | import br.com.centralit.api.model.MaterialConsumo; | 23 | import br.com.centralit.api.model.MaterialConsumo; |
17 | import br.com.centralit.api.model.RequisicaoConsumo; | 24 | import br.com.centralit.api.model.RequisicaoConsumo; |
18 | import br.com.centralit.api.model.RequisicaoConsumoItem; | 25 | import br.com.centralit.api.model.RequisicaoConsumoItem; |
26 | +import br.com.centralit.api.viewHelper.AtendimentoVH; | ||
19 | import br.com.centralit.api.viewHelper.RequisicaoVH; | 27 | import br.com.centralit.api.viewHelper.RequisicaoVH; |
20 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; | 28 | import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; |
21 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; | 29 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; |
@@ -23,9 +31,6 @@ import br.com.centralit.framework.util.UtilColecao; | @@ -23,9 +31,6 @@ import br.com.centralit.framework.util.UtilColecao; | ||
23 | import br.com.centralit.framework.util.UtilObjeto; | 31 | import br.com.centralit.framework.util.UtilObjeto; |
24 | import br.com.centralit.framework.util.UtilString; | 32 | import br.com.centralit.framework.util.UtilString; |
25 | 33 | ||
26 | -import com.googlecode.genericdao.search.Filter; | ||
27 | -import com.googlecode.genericdao.search.Sort; | ||
28 | - | ||
29 | /** | 34 | /** |
30 | * <p> | 35 | * <p> |
31 | * <img src="http://centralit.com.br/images/logo_central.png"> | 36 | * <img src="http://centralit.com.br/images/logo_central.png"> |
@@ -369,4 +374,67 @@ public class RequisicaoConsumoDaoHibernate extends CitGenericDAOImpl implements | @@ -369,4 +374,67 @@ public class RequisicaoConsumoDaoHibernate extends CitGenericDAOImpl implements | ||
369 | 374 | ||
370 | return (List<Object>) resultListNativeQuery(sql.toString()); | 375 | return (List<Object>) resultListNativeQuery(sql.toString()); |
371 | } | 376 | } |
377 | + | ||
378 | +@SuppressWarnings({ "unchecked", "rawtypes" }) | ||
379 | + @Override | ||
380 | + public SearchResult filtrarRequisicoesAtendimento(AtendimentoVH atendimentoVH) { | ||
381 | + | ||
382 | + SearchSeven searchSeven = new SearchSeven(atendimentoVH.getSearchParams()); | ||
383 | + searchSeven.setResultMode(Search.RESULT_SINGLE); | ||
384 | + | ||
385 | + searchSeven.setDistinct(true); | ||
386 | + | ||
387 | + addFilterMaterialConsumo(atendimentoVH, searchSeven); | ||
388 | + addFilterUnidadeRequisitante(atendimentoVH, searchSeven); | ||
389 | + | ||
390 | + List<Field> fields = new ArrayList<Field>(); | ||
391 | + List<Sort> sorts = new ArrayList<Sort>(); | ||
392 | + fields.add(new Field("id")); | ||
393 | + sorts.add(new Sort("id")); | ||
394 | + searchSeven.setFields(fields); | ||
395 | + searchSeven.setSorts(sorts); | ||
396 | + List<Long> ids = this.search(searchSeven); | ||
397 | + | ||
398 | + SearchResult result = new SearchResult(); | ||
399 | + result.setTotalCount(this.count(searchSeven)); | ||
400 | + | ||
401 | + fields = new ArrayList<Field>(); | ||
402 | + searchSeven = new SearchSeven(atendimentoVH.getSearchParams()); | ||
403 | + searchSeven.setResultMode(Search.RESULT_MAP); | ||
404 | + for (String field : atendimentoVH.getSearchParams().getFields()) { | ||
405 | + fields.add(new Field(field)); | ||
406 | + } | ||
407 | + searchSeven.setFields(fields); | ||
408 | + searchSeven.addFilterIn("id", ids); | ||
409 | + searchSeven.setFirstResult(0); | ||
410 | + result.setResult(this.search(searchSeven)); | ||
411 | + | ||
412 | + return result; | ||
413 | + } | ||
414 | + | ||
415 | + private void addFilterUnidadeRequisitante(AtendimentoVH atendimentoVH, SearchSeven searchSeven) { | ||
416 | + if(!UtilColecao.isVazio(atendimentoVH.getIdsUnidadesRequisitantes())){ | ||
417 | + searchSeven.addFilterIn("unidadeRequisitante.id", atendimentoVH.getIdsUnidadesRequisitantes()); | ||
418 | + } | ||
419 | + } | ||
420 | + | ||
421 | + private void addFilterMaterialConsumo(AtendimentoVH atendimentoVH, SearchSeven searchSeven) { | ||
422 | + if(!UtilColecao.isVazio(atendimentoVH.getIdsMaterais())){ | ||
423 | + searchSeven.addFilterIn("requisicaoConsumoItens.materialConsumo.id", atendimentoVH.getIdsMaterais()); | ||
424 | + } | ||
425 | + } | ||
426 | + | ||
427 | + @Override | ||
428 | + public List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH) { | ||
429 | + | ||
430 | + SearchSeven searchSeven = new SearchSeven(); | ||
431 | + | ||
432 | + if (!UtilColecao.isVazio(atendimentoVH.getIdsRequisicao())) { | ||
433 | + | ||
434 | + searchSeven.addFilterIn("id", atendimentoVH.getIdsRequisicao()); | ||
435 | + } | ||
436 | + | ||
437 | + return this.search(searchSeven); | ||
438 | + } | ||
439 | + | ||
372 | } | 440 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java
@@ -166,13 +166,13 @@ public class RequisicaoConsumoItemDaoHibernate extends CitGenericDAOImpl impleme | @@ -166,13 +166,13 @@ public class RequisicaoConsumoItemDaoHibernate extends CitGenericDAOImpl impleme | ||
166 | * {@inheritDoc} | 166 | * {@inheritDoc} |
167 | */ | 167 | */ |
168 | @Override | 168 | @Override |
169 | - public Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida, Dominio statusAtendida) { | 169 | + public Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida) { |
170 | 170 | ||
171 | StringBuilder str = new StringBuilder(); | 171 | StringBuilder str = new StringBuilder(); |
172 | str.append("select RequisicaoConsumo.id "); | 172 | str.append("select RequisicaoConsumo.id "); |
173 | - str.append("from RequisicaoConsumoItem as RequisicaoConsumoItem "); | ||
174 | - str.append("inner join RequisicaoConsumo RequisicaoConsumo on RequisicaoConsumo.id = RequisicaoConsumoItem.requisicaoconsumo_id "); | ||
175 | - str.append("where (RequisicaoConsumo.tipostatusrequisicao_id = :dominioFinalizado OR RequisicaoConsumo.tipostatusrequisicao_id = :dominioParcialmenteAtendida OR RequisicaoConsumo.tipostatusrequisicao_id = :dominioAtendida) AND RequisicaoConsumoItem.materialConsumo_id = :idMaterial AND RequisicaoConsumo.unidaderequisitante_id = :idUnidadeRequisitante "); | 173 | + str.append("from alm_rc_item as RequisicaoConsumoItem "); |
174 | + str.append("inner join alm_requisicaoconsumo RequisicaoConsumo on RequisicaoConsumo.id = RequisicaoConsumoItem.requisicaoconsumo_id "); | ||
175 | + str.append("where (RequisicaoConsumo.tipostatusrequisicao_id = :dominioFinalizado OR RequisicaoConsumo.tipostatusrequisicao_id = :dominioParcialmenteAtendida) AND RequisicaoConsumoItem.materialConsumo_id = :idMaterial AND RequisicaoConsumo.unidaderequisitante_id = :idUnidadeRequisitante "); | ||
176 | str.append("order by RequisicaoConsumo.id desc"); | 176 | str.append("order by RequisicaoConsumo.id desc"); |
177 | 177 | ||
178 | Query query = em().createNativeQuery(str.toString()); | 178 | Query query = em().createNativeQuery(str.toString()); |
@@ -181,7 +181,6 @@ public class RequisicaoConsumoItemDaoHibernate extends CitGenericDAOImpl impleme | @@ -181,7 +181,6 @@ public class RequisicaoConsumoItemDaoHibernate extends CitGenericDAOImpl impleme | ||
181 | query.setParameter("idUnidadeRequisitante", unidadeRequisitante.getId()); | 181 | query.setParameter("idUnidadeRequisitante", unidadeRequisitante.getId()); |
182 | query.setParameter("dominioFinalizado", statusFinalizado.getId()); | 182 | query.setParameter("dominioFinalizado", statusFinalizado.getId()); |
183 | query.setParameter("dominioParcialmenteAtendida", statusParcialmenteAtendida.getId()); | 183 | query.setParameter("dominioParcialmenteAtendida", statusParcialmenteAtendida.getId()); |
184 | - query.setParameter("dominioAtendida", statusAtendida.getId()); | ||
185 | 184 | ||
186 | query.setMaxResults(1); | 185 | query.setMaxResults(1); |
187 | 186 | ||
@@ -196,5 +195,18 @@ public class RequisicaoConsumoItemDaoHibernate extends CitGenericDAOImpl impleme | @@ -196,5 +195,18 @@ public class RequisicaoConsumoItemDaoHibernate extends CitGenericDAOImpl impleme | ||
196 | return UtilObjeto.isReferencia(result) ? result.longValue() : null; | 195 | return UtilObjeto.isReferencia(result) ? result.longValue() : null; |
197 | } | 196 | } |
198 | 197 | ||
198 | + @Override | ||
199 | + public List<RequisicaoConsumoItem> findItensRequisicaoPorMaterial(Long idRequisicao, Long idMaterial) { | ||
200 | + | ||
201 | + SearchSeven searchSeven = new SearchSeven(); | ||
202 | + | ||
203 | + searchSeven.addFilterEqual("requisicaoConsumo.id", idRequisicao); | ||
204 | + | ||
205 | + searchSeven.addFilterEqual("materialConsumo.id", idMaterial); | ||
206 | + | ||
207 | + return this.search(searchSeven); | ||
208 | + | ||
209 | + } | ||
210 | + | ||
199 | 211 | ||
200 | } | 212 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumo.java
@@ -11,13 +11,17 @@ import javax.persistence.FetchType; | @@ -11,13 +11,17 @@ import javax.persistence.FetchType; | ||
11 | import javax.persistence.GeneratedValue; | 11 | import javax.persistence.GeneratedValue; |
12 | import javax.persistence.GenerationType; | 12 | import javax.persistence.GenerationType; |
13 | import javax.persistence.Id; | 13 | import javax.persistence.Id; |
14 | -import javax.persistence.ManyToOne; | ||
15 | import javax.persistence.OneToMany; | 14 | import javax.persistence.OneToMany; |
15 | +import javax.persistence.OneToOne; | ||
16 | import javax.persistence.Table; | 16 | import javax.persistence.Table; |
17 | import javax.persistence.Temporal; | 17 | import javax.persistence.Temporal; |
18 | import javax.persistence.TemporalType; | 18 | import javax.persistence.TemporalType; |
19 | import javax.persistence.Transient; | 19 | import javax.persistence.Transient; |
20 | 20 | ||
21 | +import org.hibernate.envers.AuditTable; | ||
22 | +import org.hibernate.envers.Audited; | ||
23 | + | ||
24 | +import br.com.centralit.api.framework.json.ViewsAdmMateriais; | ||
21 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; | 25 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; |
22 | import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; | 26 | import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; |
23 | import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; | 27 | import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; |
@@ -61,6 +65,8 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | @@ -61,6 +65,8 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||
61 | * @author rogerio.costa | 65 | * @author rogerio.costa |
62 | * | 66 | * |
63 | */ | 67 | */ |
68 | +@Audited | ||
69 | +@AuditTable(value = "alm_rc_atendimento_aud") | ||
64 | @Entity | 70 | @Entity |
65 | @Table(name="alm_rc_atendimento") | 71 | @Table(name="alm_rc_atendimento") |
66 | @JsonIgnoreProperties({"$selecionarRequisicoes", "$dataFinalizacao"}) | 72 | @JsonIgnoreProperties({"$selecionarRequisicoes", "$dataFinalizacao"}) |
@@ -88,13 +94,13 @@ public class AtendimentoRequisicaoConsumo extends PersistentObjectAuditOrganizac | @@ -88,13 +94,13 @@ public class AtendimentoRequisicaoConsumo extends PersistentObjectAuditOrganizac | ||
88 | private String numeroAtendimento; | 94 | private String numeroAtendimento; |
89 | 95 | ||
90 | /** Atributo requisicaoConsumo. */ | 96 | /** Atributo requisicaoConsumo. */ |
91 | - @ManyToOne(fetch = FetchType.LAZY, optional = false) | 97 | + @OneToOne(fetch = FetchType.LAZY, optional = false) |
92 | @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoListView.class }) | 98 | @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoListView.class }) |
93 | private RequisicaoConsumo requisicaoConsumo; | 99 | private RequisicaoConsumo requisicaoConsumo; |
94 | 100 | ||
95 | /** Atributo atendimentoRequisicaoConsumoItems. */ | 101 | /** Atributo atendimentoRequisicaoConsumoItems. */ |
96 | - @OneToMany(fetch = FetchType.LAZY, mappedBy = "atendimentoRequisicaoConsumo", cascade = CascadeType.ALL, orphanRemoval = true) | ||
97 | - @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | 102 | + @OneToMany(fetch = FetchType.LAZY, mappedBy = "atendimentoRequisicaoConsumo", cascade = CascadeType.ALL) |
103 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class }) | ||
98 | private Collection<AtendimentoRequisicaoConsumoItem> atendimentoRequisicaoConsumoItems; | 104 | private Collection<AtendimentoRequisicaoConsumoItem> atendimentoRequisicaoConsumoItems; |
99 | 105 | ||
100 | @Transient | 106 | @Transient |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItem.java
1 | package br.com.centralit.api.model; | 1 | package br.com.centralit.api.model; |
2 | 2 | ||
3 | import java.math.BigDecimal; | 3 | import java.math.BigDecimal; |
4 | +import java.util.Collection; | ||
4 | 5 | ||
6 | +import javax.persistence.CascadeType; | ||
5 | import javax.persistence.Entity; | 7 | import javax.persistence.Entity; |
6 | import javax.persistence.FetchType; | 8 | import javax.persistence.FetchType; |
7 | import javax.persistence.GeneratedValue; | 9 | import javax.persistence.GeneratedValue; |
@@ -9,8 +11,13 @@ import javax.persistence.GenerationType; | @@ -9,8 +11,13 @@ import javax.persistence.GenerationType; | ||
9 | import javax.persistence.Id; | 11 | import javax.persistence.Id; |
10 | import javax.persistence.JoinColumn; | 12 | import javax.persistence.JoinColumn; |
11 | import javax.persistence.ManyToOne; | 13 | import javax.persistence.ManyToOne; |
14 | +import javax.persistence.OneToMany; | ||
12 | import javax.persistence.Table; | 15 | import javax.persistence.Table; |
13 | 16 | ||
17 | +import org.hibernate.envers.AuditTable; | ||
18 | +import org.hibernate.envers.Audited; | ||
19 | + | ||
20 | +import br.com.centralit.api.framework.json.ViewsAdmMateriais; | ||
14 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; | 21 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; |
15 | import br.com.centralit.framework.json.Views; | 22 | import br.com.centralit.framework.json.Views; |
16 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; | 23 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; |
@@ -50,9 +57,11 @@ import com.fasterxml.jackson.annotation.JsonView; | @@ -50,9 +57,11 @@ import com.fasterxml.jackson.annotation.JsonView; | ||
50 | * @author rogerio.costa | 57 | * @author rogerio.costa |
51 | * | 58 | * |
52 | */ | 59 | */ |
60 | +@Audited | ||
61 | +@AuditTable(value = "alm_rc_atenditem_aud") | ||
53 | @Entity | 62 | @Entity |
54 | -@Table(name="alm_rc_atendimentoitem") | ||
55 | -@JsonIgnoreProperties({"$info", "$verInfo", "$quantidade"}) | 63 | +@Table(name = "alm_rc_atendimentoitem") |
64 | +@JsonIgnoreProperties({ "$info", "$verInfo", "$quantidade", "$locaisEstoque", "$hasError", "$somaQtdAtendida" }) | ||
56 | public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrganizacao { | 65 | public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrganizacao { |
57 | 66 | ||
58 | /** Atributo serialVersionUID. */ | 67 | /** Atributo serialVersionUID. */ |
@@ -67,21 +76,30 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan | @@ -67,21 +76,30 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan | ||
67 | /** Atributo atendimentoRequisicaoConsumo. */ | 76 | /** Atributo atendimentoRequisicaoConsumo. */ |
68 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 77 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
69 | @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, Views.MaterialConsultaInfo.class }) | 78 | @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, Views.MaterialConsultaInfo.class }) |
70 | - @JoinColumn(name="AtendimentoReqConsumo_Id") | 79 | + @JoinColumn(name = "AtendimentoReqConsumo_Id") |
71 | private AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo; | 80 | private AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo; |
72 | 81 | ||
73 | - @ManyToOne(fetch = FetchType.LAZY, optional = false) | ||
74 | - @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class }) | 82 | + @ManyToOne(fetch = FetchType.LAZY) |
83 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, | ||
84 | + ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class, | ||
85 | + ViewsAdmMateriais.RequisicaoConsumoEditView.class }) | ||
75 | private RequisicaoConsumoItem requisicaoConsumoItem; | 86 | private RequisicaoConsumoItem requisicaoConsumoItem; |
76 | 87 | ||
77 | /** Atributo material. */ | 88 | /** Atributo material. */ |
78 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 89 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
79 | - @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | 90 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, |
91 | + ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, | ||
92 | + ViewsAdmMateriais.RequisicaoConsumoEditView.class }) | ||
80 | private MaterialConsumo material; | 93 | private MaterialConsumo material; |
81 | 94 | ||
82 | - /** Atributo quantidade. */ | ||
83 | - @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class }) | ||
84 | - private BigDecimal quantidade; | 95 | + @OneToMany(fetch = FetchType.LAZY, mappedBy = "atendimentoRequisicaoConsumoItem", cascade = CascadeType.ALL, orphanRemoval = true) |
96 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, | ||
97 | + ViewsAdmMateriais.RequisicaoConsumoEditView.class }) | ||
98 | + private Collection<AtendimentoRequisicaoConsumoItemEndereco> atendimentoRequisicaoConsumoItemEnderecos; | ||
99 | + | ||
100 | + @OneToMany(fetch = FetchType.LAZY, mappedBy = "atendimentoRequisicaoConsumoItem", cascade = CascadeType.ALL) | ||
101 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | ||
102 | + private Collection<AtendimentoRequisicaoConsumoItemFIFO> atendimentoRequisicaoConsumoItemFIFOs; | ||
85 | 103 | ||
86 | /** | 104 | /** |
87 | * Retorna o valor do atributo <code>id</code> | 105 | * Retorna o valor do atributo <code>id</code> |
@@ -144,26 +162,6 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan | @@ -144,26 +162,6 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan | ||
144 | } | 162 | } |
145 | 163 | ||
146 | /** | 164 | /** |
147 | - * Retorna o valor do atributo <code>quantidade</code> | ||
148 | - * | ||
149 | - * @return <code>BigDecimal</code> | ||
150 | - */ | ||
151 | - public BigDecimal getQuantidade() { | ||
152 | - | ||
153 | - return quantidade; | ||
154 | - } | ||
155 | - | ||
156 | - /** | ||
157 | - * Define o valor do atributo <code>quantidade</code>. | ||
158 | - * | ||
159 | - * @param quantidade | ||
160 | - */ | ||
161 | - public void setQuantidade(BigDecimal quantidade) { | ||
162 | - | ||
163 | - this.quantidade = quantidade; | ||
164 | - } | ||
165 | - | ||
166 | - /** | ||
167 | * Retorna o valor do atributo <code>requisicaoConsumoItem</code> | 165 | * Retorna o valor do atributo <code>requisicaoConsumoItem</code> |
168 | * | 166 | * |
169 | * @return <code>RequisicaoConsumoItem</code> | 167 | * @return <code>RequisicaoConsumoItem</code> |
@@ -183,4 +181,35 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan | @@ -183,4 +181,35 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan | ||
183 | this.requisicaoConsumoItem = requisicaoConsumoItem; | 181 | this.requisicaoConsumoItem = requisicaoConsumoItem; |
184 | } | 182 | } |
185 | 183 | ||
184 | + public Collection<AtendimentoRequisicaoConsumoItemEndereco> getAtendimentoRequisicaoConsumoItemEnderecos() { | ||
185 | + return atendimentoRequisicaoConsumoItemEnderecos; | ||
186 | + } | ||
187 | + | ||
188 | + public void setAtendimentoRequisicaoConsumoItemEnderecos( | ||
189 | + Collection<AtendimentoRequisicaoConsumoItemEndereco> atendimentoRequisicaoConsumoItemEnderecos) { | ||
190 | + this.atendimentoRequisicaoConsumoItemEnderecos = atendimentoRequisicaoConsumoItemEnderecos; | ||
191 | + } | ||
192 | + | ||
193 | + public BigDecimal getQuantidade() { | ||
194 | + BigDecimal quantidade = BigDecimal.ZERO; | ||
195 | + | ||
196 | + if (atendimentoRequisicaoConsumoItemEnderecos != null) { | ||
197 | + for (AtendimentoRequisicaoConsumoItemEndereco itemEndereco : atendimentoRequisicaoConsumoItemEnderecos) { | ||
198 | + quantidade = quantidade | ||
199 | + .add(itemEndereco.getQuantidade() != null ? itemEndereco.getQuantidade() : BigDecimal.ZERO); | ||
200 | + } | ||
201 | + } | ||
202 | + | ||
203 | + return quantidade; | ||
204 | + } | ||
205 | + | ||
206 | + public Collection<AtendimentoRequisicaoConsumoItemFIFO> getAtendimentoRequisicaoConsumoItemFIFOs() { | ||
207 | + return atendimentoRequisicaoConsumoItemFIFOs; | ||
208 | + } | ||
209 | + | ||
210 | + public void setAtendimentoRequisicaoConsumoItemFIFOs( | ||
211 | + Collection<AtendimentoRequisicaoConsumoItemFIFO> atendimentoRequisicaoConsumoItemFIFOs) { | ||
212 | + this.atendimentoRequisicaoConsumoItemFIFOs = atendimentoRequisicaoConsumoItemFIFOs; | ||
213 | + } | ||
214 | + | ||
186 | } | 215 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItemEndereco.java
0 → 100644
@@ -0,0 +1,110 @@ | @@ -0,0 +1,110 @@ | ||
1 | +package br.com.centralit.api.model; | ||
2 | + | ||
3 | +import java.math.BigDecimal; | ||
4 | + | ||
5 | +import javax.persistence.Entity; | ||
6 | +import javax.persistence.FetchType; | ||
7 | +import javax.persistence.GeneratedValue; | ||
8 | +import javax.persistence.GenerationType; | ||
9 | +import javax.persistence.Id; | ||
10 | +import javax.persistence.JoinColumn; | ||
11 | +import javax.persistence.ManyToOne; | ||
12 | +import javax.persistence.Table; | ||
13 | +import javax.persistence.Transient; | ||
14 | + | ||
15 | +import org.hibernate.envers.AuditTable; | ||
16 | +import org.hibernate.envers.Audited; | ||
17 | + | ||
18 | +import br.com.centralit.api.framework.json.ViewsAdmMateriais; | ||
19 | +import br.com.centralit.api.framework.json.ViewsAlmoxarifado; | ||
20 | +import br.com.centralit.framework.json.Views; | ||
21 | +import br.com.centralit.framework.model.arquitetura.PersistentObject; | ||
22 | + | ||
23 | +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||
24 | +import com.fasterxml.jackson.annotation.JsonView; | ||
25 | + | ||
26 | +@Audited | ||
27 | +@AuditTable(value = "alm_rc_at_item_end_aud") | ||
28 | +@Entity | ||
29 | +@Table(name = "alm_rc_at_item_endereco") | ||
30 | +@JsonIgnoreProperties({"$hasError"}) | ||
31 | +public class AtendimentoRequisicaoConsumoItemEndereco extends PersistentObject { | ||
32 | + | ||
33 | + private static final long serialVersionUID = 1L; | ||
34 | + | ||
35 | + @Id | ||
36 | + @GeneratedValue(strategy = GenerationType.AUTO) | ||
37 | + @JsonView({ Views.GenericView.class }) | ||
38 | + private Long id; | ||
39 | + | ||
40 | + @JsonView({Views.GenericView.class }) | ||
41 | + private BigDecimal quantidade; | ||
42 | + | ||
43 | + @ManyToOne(fetch = FetchType.LAZY, optional = false) | ||
44 | + @JsonView({ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class}) | ||
45 | + private MaterialLocalEstoque materialLocalEstoque; | ||
46 | + | ||
47 | + @ManyToOne(fetch = FetchType.LAZY, optional = false) | ||
48 | + @JsonView({ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class}) | ||
49 | + @JoinColumn(name = "at_req_consumoitem_id") | ||
50 | + private AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem; | ||
51 | + | ||
52 | + @Transient | ||
53 | + @JsonView({ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | ||
54 | + private BigDecimal quantidadeAnterior; | ||
55 | + | ||
56 | + @Override | ||
57 | + public Long getId() { | ||
58 | + return this.id; | ||
59 | + } | ||
60 | + | ||
61 | + public void setId(Long id) { | ||
62 | + this.id = id; | ||
63 | + } | ||
64 | + | ||
65 | + public BigDecimal getQuantidade() { | ||
66 | + return quantidade; | ||
67 | + } | ||
68 | + | ||
69 | + public void setQuantidade(BigDecimal quantidade) { | ||
70 | + this.quantidade = quantidade; | ||
71 | + } | ||
72 | + | ||
73 | + public MaterialLocalEstoque getMaterialLocalEstoque() { | ||
74 | + return materialLocalEstoque; | ||
75 | + } | ||
76 | + | ||
77 | + public void setMaterialLocalEstoque(MaterialLocalEstoque materialLocalEstoque) { | ||
78 | + this.materialLocalEstoque = materialLocalEstoque; | ||
79 | + } | ||
80 | + | ||
81 | + public AtendimentoRequisicaoConsumoItem getAtendimentoRequisicaoConsumoItem() { | ||
82 | + return atendimentoRequisicaoConsumoItem; | ||
83 | + } | ||
84 | + | ||
85 | + public void setAtendimentoRequisicaoConsumoItem( | ||
86 | + AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem) { | ||
87 | + this.atendimentoRequisicaoConsumoItem = atendimentoRequisicaoConsumoItem; | ||
88 | + } | ||
89 | + | ||
90 | + public BigDecimal getQuantidadeAnterior() { | ||
91 | + if(quantidadeAnterior == null){ | ||
92 | + if(quantidade == null){ | ||
93 | + quantidadeAnterior = BigDecimal.ZERO; | ||
94 | + }else{ | ||
95 | + if(atendimentoRequisicaoConsumoItem == null || atendimentoRequisicaoConsumoItem.getAtendimentoRequisicaoConsumo() == null || atendimentoRequisicaoConsumoItem.getAtendimentoRequisicaoConsumo().getDataInativo() != null){ | ||
96 | + quantidadeAnterior = BigDecimal.ZERO; | ||
97 | + }else{ | ||
98 | + quantidadeAnterior = quantidade; | ||
99 | + } | ||
100 | + } | ||
101 | + } | ||
102 | + | ||
103 | + return quantidadeAnterior; | ||
104 | + } | ||
105 | + | ||
106 | + public void setQuantidadeAnterior(BigDecimal quantidadeAnterior) { | ||
107 | + this.quantidadeAnterior = quantidadeAnterior; | ||
108 | + } | ||
109 | + | ||
110 | +} |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItemFIFO.java
0 → 100644
@@ -0,0 +1,90 @@ | @@ -0,0 +1,90 @@ | ||
1 | +package br.com.centralit.api.model; | ||
2 | + | ||
3 | +import java.math.BigDecimal; | ||
4 | + | ||
5 | +import javax.persistence.Column; | ||
6 | +import javax.persistence.Entity; | ||
7 | +import javax.persistence.FetchType; | ||
8 | +import javax.persistence.GeneratedValue; | ||
9 | +import javax.persistence.GenerationType; | ||
10 | +import javax.persistence.Id; | ||
11 | +import javax.persistence.JoinColumn; | ||
12 | +import javax.persistence.ManyToOne; | ||
13 | +import javax.persistence.Table; | ||
14 | + | ||
15 | +import org.hibernate.envers.AuditTable; | ||
16 | +import org.hibernate.envers.Audited; | ||
17 | + | ||
18 | +import com.fasterxml.jackson.annotation.JsonView; | ||
19 | + | ||
20 | +import br.com.centralit.api.framework.json.ViewsAlmoxarifado; | ||
21 | +import br.com.centralit.framework.json.Views; | ||
22 | +import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; | ||
23 | + | ||
24 | +@Audited | ||
25 | +@AuditTable(value = "alm_rc_atitfifo_aud") | ||
26 | +@Entity | ||
27 | +@Table(name = "alm_rc_atendimentoitemfifo") | ||
28 | +public class AtendimentoRequisicaoConsumoItemFIFO extends PersistentObjectAuditOrganizacao { | ||
29 | + | ||
30 | + /** Atributo serialVersionUID. */ | ||
31 | + private static final long serialVersionUID = -1011361588461933352L; | ||
32 | + | ||
33 | + /** Atributo id. */ | ||
34 | + @Id | ||
35 | + @GeneratedValue(strategy = GenerationType.AUTO) | ||
36 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, Views.GenericView.class }) | ||
37 | + private Long id; | ||
38 | + | ||
39 | + @ManyToOne(fetch = FetchType.LAZY, optional = true) | ||
40 | + private MaterialEstoqueFIFOItem materialEstoqueFIFOItem; | ||
41 | + | ||
42 | + @Column(precision = 20, scale = 4, nullable = false) | ||
43 | + private BigDecimal quantidadeUtilizada; | ||
44 | + | ||
45 | + @ManyToOne(fetch = FetchType.LAZY, optional = false) | ||
46 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | ||
47 | + @JoinColumn(name = "at_req_consumoitem_id") | ||
48 | + private AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem; | ||
49 | + | ||
50 | + public AtendimentoRequisicaoConsumoItemFIFO(){}; | ||
51 | + | ||
52 | + public AtendimentoRequisicaoConsumoItemFIFO(AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem, MaterialEstoqueFIFOItem materialEstoqueFIFOItem, BigDecimal quantidadeMovimentada) { | ||
53 | + this.atendimentoRequisicaoConsumoItem = atendimentoRequisicaoConsumoItem; | ||
54 | + this.materialEstoqueFIFOItem = materialEstoqueFIFOItem; | ||
55 | + this.quantidadeUtilizada = quantidadeMovimentada; | ||
56 | + } | ||
57 | + | ||
58 | + public Long getId() { | ||
59 | + return id; | ||
60 | + } | ||
61 | + | ||
62 | + public void setId(Long id) { | ||
63 | + this.id = id; | ||
64 | + } | ||
65 | + | ||
66 | + public MaterialEstoqueFIFOItem getMaterialEstoqueFIFOItem() { | ||
67 | + return materialEstoqueFIFOItem; | ||
68 | + } | ||
69 | + | ||
70 | + public void setMaterialEstoqueFIFOItem(MaterialEstoqueFIFOItem materialEstoqueFIFOItem) { | ||
71 | + this.materialEstoqueFIFOItem = materialEstoqueFIFOItem; | ||
72 | + } | ||
73 | + | ||
74 | + public BigDecimal getQuantidadeUtilizada() { | ||
75 | + return quantidadeUtilizada; | ||
76 | + } | ||
77 | + | ||
78 | + public void setQuantidadeUtilizada(BigDecimal quantidadeUtilizada) { | ||
79 | + this.quantidadeUtilizada = quantidadeUtilizada; | ||
80 | + } | ||
81 | + | ||
82 | + public AtendimentoRequisicaoConsumoItem getAtendimentoRequisicaoConsumoItem() { | ||
83 | + return atendimentoRequisicaoConsumoItem; | ||
84 | + } | ||
85 | + | ||
86 | + public void setAtendimentoRequisicaoConsumoItem(AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem) { | ||
87 | + this.atendimentoRequisicaoConsumoItem = atendimentoRequisicaoConsumoItem; | ||
88 | + } | ||
89 | + | ||
90 | +} |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/DominioAlmoxarifado.java
@@ -25,17 +25,17 @@ public class DominioAlmoxarifado { | @@ -25,17 +25,17 @@ public class DominioAlmoxarifado { | ||
25 | /** Atributo TIPO_STATUS_REQUISICAO. */ | 25 | /** Atributo TIPO_STATUS_REQUISICAO. */ |
26 | public static final String TIPO_STATUS_REQUISICAO = "tipoStatusRequisicao"; | 26 | public static final String TIPO_STATUS_REQUISICAO = "tipoStatusRequisicao"; |
27 | 27 | ||
28 | - /** Atributo TIPO_STATUS_NAO_CONCLUIDA. */ | ||
29 | - public static final Long TIPO_STATUS_NAO_CONCLUIDA = 1L; | ||
30 | - | 28 | + /** Atributo TIPO_STATUS_ATENDIDA_PARCIALMENTE. */ |
29 | + public static final Long TIPO_STATUS_ATENDIDA_PARCIALMENTE = 1L; | ||
30 | + | ||
31 | /** Atributo TIPO_STATUS_PRONTA_PARA_ATENDIMENTO. */ | 31 | /** Atributo TIPO_STATUS_PRONTA_PARA_ATENDIMENTO. */ |
32 | public static final Long TIPO_STATUS_PRONTA_PARA_ATENDIMENTO = 2L; | 32 | public static final Long TIPO_STATUS_PRONTA_PARA_ATENDIMENTO = 2L; |
33 | + | ||
34 | + /** Atributo TIPO_STATUS_NAO_CONCLUIDA. */ | ||
35 | + public static final Long TIPO_STATUS_NAO_CONCLUIDA = 3L; | ||
33 | 36 | ||
34 | - /** Atributo TIPO_STATUS_ATENDIDA_PARCIALMENTE. */ | ||
35 | - public static final Long TIPO_STATUS_ATENDIDA_PARCIALMENTE = 3L; | ||
36 | - | ||
37 | - /** Atributo TIPO_STATUS_ATENDIDA. */ | ||
38 | - public static final Long TIPO_STATUS_ATENDIDA = 4L; | 37 | + /** Atributo TIPO_STATUS_DEVOLVIDA. */ |
38 | + public static final Long TIPO_STATUS_DEVOLVIDA = 4L; | ||
39 | 39 | ||
40 | /** Atributo TIPO_STATUS_FINALIZADA. */ | 40 | /** Atributo TIPO_STATUS_FINALIZADA. */ |
41 | public static final Long TIPO_STATUS_FINALIZADA = 5L; | 41 | public static final Long TIPO_STATUS_FINALIZADA = 5L; |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/EnderecoEstoque.java
@@ -85,7 +85,7 @@ public class EnderecoEstoque extends PersistentObjectAuditOrganizacao { | @@ -85,7 +85,7 @@ public class EnderecoEstoque extends PersistentObjectAuditOrganizacao { | ||
85 | private String sigla; | 85 | private String sigla; |
86 | 86 | ||
87 | @Column(name = "descricao", length = 400, nullable = false) | 87 | @Column(name = "descricao", length = 400, nullable = false) |
88 | - @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class, Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class }) | 88 | + @JsonView({ ViewsAdmMateriais.EnderecoEstoqueView.class, Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class }) |
89 | private String descricao; | 89 | private String descricao; |
90 | 90 | ||
91 | @ManyToOne(fetch = FetchType.LAZY, optional = true) | 91 | @ManyToOne(fetch = FetchType.LAZY, optional = true) |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialEstoque.java
@@ -18,6 +18,7 @@ import org.hibernate.envers.Audited; | @@ -18,6 +18,7 @@ import org.hibernate.envers.Audited; | ||
18 | 18 | ||
19 | import com.fasterxml.jackson.annotation.JsonView; | 19 | import com.fasterxml.jackson.annotation.JsonView; |
20 | 20 | ||
21 | +import br.com.centralit.api.framework.json.ViewsAdmMateriais; | ||
21 | import br.com.centralit.framework.json.Views; | 22 | import br.com.centralit.framework.json.Views; |
22 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; | 23 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; |
23 | import br.com.centralit.framework.util.UtilObjeto; | 24 | import br.com.centralit.framework.util.UtilObjeto; |
@@ -71,7 +72,7 @@ public class MaterialEstoque extends PersistentObjectAuditOrganizacao { | @@ -71,7 +72,7 @@ public class MaterialEstoque extends PersistentObjectAuditOrganizacao { | ||
71 | 72 | ||
72 | /** Atributo material. */ | 73 | /** Atributo material. */ |
73 | @OneToOne(fetch = FetchType.LAZY, optional = false) | 74 | @OneToOne(fetch = FetchType.LAZY, optional = false) |
74 | - @JsonView({ Views.MaterialLocalEstoqueView.class }) | 75 | + @JsonView({ Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class }) |
75 | private MaterialConsumo material; | 76 | private MaterialConsumo material; |
76 | 77 | ||
77 | /** Atributo locaisEstoque. */ | 78 | /** Atributo locaisEstoque. */ |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialEstoqueFIFOItem.java
@@ -18,18 +18,30 @@ import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganiz | @@ -18,18 +18,30 @@ import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganiz | ||
18 | 18 | ||
19 | /** | 19 | /** |
20 | * | 20 | * |
21 | - * <p><img src="http://centralit.com.br/images/logo_central.png"></p> | 21 | + * <p> |
22 | + * <img src="http://centralit.com.br/images/logo_central.png"> | ||
23 | + * </p> | ||
22 | * | 24 | * |
23 | - * <p><b>Company: </b> Central IT - Governança Corporativa - </p> | 25 | + * <p> |
26 | + * <b>Company: </b> Central IT - Governança Corporativa - | ||
27 | + * </p> | ||
24 | * | 28 | * |
25 | - * <p><b>Title: </b></p> | 29 | + * <p> |
30 | + * <b>Title: </b> | ||
31 | + * </p> | ||
26 | * | 32 | * |
27 | - * <p><b>Description: </b></p> | 33 | + * <p> |
34 | + * <b>Description: </b> | ||
35 | + * </p> | ||
28 | * | 36 | * |
29 | - * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p> | 37 | + * <p> |
38 | + * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | ||
39 | + * </p> | ||
30 | * | 40 | * |
31 | - * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p> | ||
32 | - * | 41 | + * <p> |
42 | + * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | ||
43 | + * </p> | ||
44 | + * | ||
33 | * @since 29/04/2016 - 15:55:15 | 45 | * @since 29/04/2016 - 15:55:15 |
34 | * | 46 | * |
35 | * @version 1.0.0 | 47 | * @version 1.0.0 |
@@ -45,16 +57,16 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | @@ -45,16 +57,16 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | ||
45 | /** Atributo serialVersionUID. */ | 57 | /** Atributo serialVersionUID. */ |
46 | private static final long serialVersionUID = 1170228299223134768L; | 58 | private static final long serialVersionUID = 1170228299223134768L; |
47 | private static int SCALE_DIVISOR_DECIMAL = 4; | 59 | private static int SCALE_DIVISOR_DECIMAL = 4; |
48 | - | 60 | + |
49 | /** Atributo id. */ | 61 | /** Atributo id. */ |
50 | @Id | 62 | @Id |
51 | @GeneratedValue(strategy = GenerationType.AUTO) | 63 | @GeneratedValue(strategy = GenerationType.AUTO) |
52 | private Long id; | 64 | private Long id; |
53 | - | 65 | + |
54 | /** Atributo material. */ | 66 | /** Atributo material. */ |
55 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 67 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
56 | private MaterialConsumo material; | 68 | private MaterialConsumo material; |
57 | - | 69 | + |
58 | /** Atributo materialEstoque. */ | 70 | /** Atributo materialEstoque. */ |
59 | @ManyToOne(fetch = FetchType.LAZY, optional = true) | 71 | @ManyToOne(fetch = FetchType.LAZY, optional = true) |
60 | private MaterialEstoque materialEstoque; | 72 | private MaterialEstoque materialEstoque; |
@@ -62,7 +74,7 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | @@ -62,7 +74,7 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | ||
62 | /** Atributo materialEstoqueInativo. */ | 74 | /** Atributo materialEstoqueInativo. */ |
63 | @ManyToOne(fetch = FetchType.LAZY, optional = true) | 75 | @ManyToOne(fetch = FetchType.LAZY, optional = true) |
64 | private MaterialEstoque materialEstoqueInativo; | 76 | private MaterialEstoque materialEstoqueInativo; |
65 | - | 77 | + |
66 | /** Atributo quantidadeInicial. */ | 78 | /** Atributo quantidadeInicial. */ |
67 | @Column(precision = 20, scale = 4, nullable = false) | 79 | @Column(precision = 20, scale = 4, nullable = false) |
68 | private BigDecimal quantidadeInicial; | 80 | private BigDecimal quantidadeInicial; |
@@ -70,7 +82,7 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | @@ -70,7 +82,7 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | ||
70 | /** Atributo quantidadeRestante. */ | 82 | /** Atributo quantidadeRestante. */ |
71 | @Column(precision = 20, scale = 4, nullable = false) | 83 | @Column(precision = 20, scale = 4, nullable = false) |
72 | private BigDecimal quantidadeRestante; | 84 | private BigDecimal quantidadeRestante; |
73 | - | 85 | + |
74 | /** Atributo valorUnitario. */ | 86 | /** Atributo valorUnitario. */ |
75 | @Column(precision = 20, scale = 4, nullable = false) | 87 | @Column(precision = 20, scale = 4, nullable = false) |
76 | private BigDecimal valorUnitario; | 88 | private BigDecimal valorUnitario; |
@@ -78,20 +90,20 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | @@ -78,20 +90,20 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | ||
78 | /** Atributo valorSobra. */ | 90 | /** Atributo valorSobra. */ |
79 | @Column(precision = 20, scale = 4, nullable = false) | 91 | @Column(precision = 20, scale = 4, nullable = false) |
80 | private BigDecimal valorSobra; | 92 | private BigDecimal valorSobra; |
81 | - | 93 | + |
82 | /** Atributo valorTotal. */ | 94 | /** Atributo valorTotal. */ |
83 | @Column(precision = 20, scale = 4, nullable = false) | 95 | @Column(precision = 20, scale = 4, nullable = false) |
84 | private BigDecimal valorTotal; | 96 | private BigDecimal valorTotal; |
85 | - | 97 | + |
86 | @ManyToOne(fetch = FetchType.EAGER, optional = false) | 98 | @ManyToOne(fetch = FetchType.EAGER, optional = false) |
87 | private EntradaAlmoxarifadoItem entradaItem; | 99 | private EntradaAlmoxarifadoItem entradaItem; |
88 | - | ||
89 | - | 100 | + |
90 | protected MaterialEstoqueFIFOItem() { | 101 | protected MaterialEstoqueFIFOItem() { |
91 | super(); | 102 | super(); |
92 | } | 103 | } |
93 | 104 | ||
94 | - public MaterialEstoqueFIFOItem( MaterialEstoque materialEstoque, BigDecimal quantidadeInicial, BigDecimal valorTotal, EntradaAlmoxarifadoItem entradaItem ) { | 105 | + public MaterialEstoqueFIFOItem(MaterialEstoque materialEstoque, BigDecimal quantidadeInicial, BigDecimal valorTotal, |
106 | + EntradaAlmoxarifadoItem entradaItem) { | ||
95 | super(); | 107 | super(); |
96 | this.material = materialEstoque.getMaterial(); | 108 | this.material = materialEstoque.getMaterial(); |
97 | this.materialEstoque = materialEstoque; | 109 | this.materialEstoque = materialEstoque; |
@@ -99,7 +111,7 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | @@ -99,7 +111,7 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | ||
99 | this.quantidadeRestante = quantidadeInicial; | 111 | this.quantidadeRestante = quantidadeInicial; |
100 | this.valorTotal = valorTotal; | 112 | this.valorTotal = valorTotal; |
101 | this.valorUnitario = valorTotal.divide(quantidadeInicial, SCALE_DIVISOR_DECIMAL, RoundingMode.CEILING); | 113 | this.valorUnitario = valorTotal.divide(quantidadeInicial, SCALE_DIVISOR_DECIMAL, RoundingMode.CEILING); |
102 | - this.valorSobra = valorTotal.min(this.valorUnitario.multiply(quantidadeInicial)); | 114 | + this.valorSobra = valorTotal.subtract(this.valorUnitario.multiply(quantidadeInicial)); |
103 | this.entradaItem = entradaItem; | 115 | this.entradaItem = entradaItem; |
104 | } | 116 | } |
105 | 117 | ||
@@ -123,70 +135,63 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | @@ -123,70 +135,63 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | ||
123 | this.id = id; | 135 | this.id = id; |
124 | } | 136 | } |
125 | 137 | ||
126 | - | ||
127 | /** | 138 | /** |
128 | * Retorna o valor do atributo <code>material</code> | 139 | * Retorna o valor do atributo <code>material</code> |
129 | * | 140 | * |
130 | * @return <code>MaterialConsumo</code> | 141 | * @return <code>MaterialConsumo</code> |
131 | */ | 142 | */ |
132 | public MaterialConsumo getMaterial() { | 143 | public MaterialConsumo getMaterial() { |
133 | - | 144 | + |
134 | return material; | 145 | return material; |
135 | } | 146 | } |
136 | 147 | ||
137 | - | ||
138 | /** | 148 | /** |
139 | * Define o valor do atributo <code>material</code>. | 149 | * Define o valor do atributo <code>material</code>. |
140 | * | 150 | * |
141 | - * @param material | 151 | + * @param material |
142 | */ | 152 | */ |
143 | public void setMaterial(MaterialConsumo material) { | 153 | public void setMaterial(MaterialConsumo material) { |
144 | - | 154 | + |
145 | this.material = material; | 155 | this.material = material; |
146 | } | 156 | } |
147 | 157 | ||
148 | - | ||
149 | - | ||
150 | /** | 158 | /** |
151 | * Retorna o valor do atributo <code>materialEstoque</code> | 159 | * Retorna o valor do atributo <code>materialEstoque</code> |
152 | * | 160 | * |
153 | * @return <code>MaterialEstoque</code> | 161 | * @return <code>MaterialEstoque</code> |
154 | */ | 162 | */ |
155 | public MaterialEstoque getMaterialEstoque() { | 163 | public MaterialEstoque getMaterialEstoque() { |
156 | - | 164 | + |
157 | return materialEstoque; | 165 | return materialEstoque; |
158 | } | 166 | } |
159 | 167 | ||
160 | - | ||
161 | /** | 168 | /** |
162 | * Define o valor do atributo <code>materialEstoque</code>. | 169 | * Define o valor do atributo <code>materialEstoque</code>. |
163 | * | 170 | * |
164 | - * @param materialEstoque | 171 | + * @param materialEstoque |
165 | */ | 172 | */ |
166 | public void setMaterialEstoque(MaterialEstoque materialEstoque) { | 173 | public void setMaterialEstoque(MaterialEstoque materialEstoque) { |
167 | - | 174 | + |
168 | this.materialEstoque = materialEstoque; | 175 | this.materialEstoque = materialEstoque; |
169 | } | 176 | } |
170 | 177 | ||
171 | - | ||
172 | /** | 178 | /** |
173 | * Retorna o valor do atributo <code>materialEstoqueInativo</code> | 179 | * Retorna o valor do atributo <code>materialEstoqueInativo</code> |
174 | * | 180 | * |
175 | * @return <code>MaterialEstoque</code> | 181 | * @return <code>MaterialEstoque</code> |
176 | */ | 182 | */ |
177 | public MaterialEstoque getMaterialEstoqueInativo() { | 183 | public MaterialEstoque getMaterialEstoqueInativo() { |
178 | - | 184 | + |
179 | return materialEstoqueInativo; | 185 | return materialEstoqueInativo; |
180 | } | 186 | } |
181 | 187 | ||
182 | - | ||
183 | /** | 188 | /** |
184 | * Define o valor do atributo <code>materialEstoqueInativo</code>. | 189 | * Define o valor do atributo <code>materialEstoqueInativo</code>. |
185 | * | 190 | * |
186 | - * @param materialEstoqueInativo | 191 | + * @param materialEstoqueInativo |
187 | */ | 192 | */ |
188 | public void setMaterialEstoqueInativo(MaterialEstoque materialEstoqueInativo) { | 193 | public void setMaterialEstoqueInativo(MaterialEstoque materialEstoqueInativo) { |
189 | - | 194 | + |
190 | this.materialEstoqueInativo = materialEstoqueInativo; | 195 | this.materialEstoqueInativo = materialEstoqueInativo; |
191 | } | 196 | } |
192 | 197 | ||
@@ -196,128 +201,117 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | @@ -196,128 +201,117 @@ public class MaterialEstoqueFIFOItem extends PersistentObjectAuditOrganizacao { | ||
196 | * @return <code>BigDecimal</code> | 201 | * @return <code>BigDecimal</code> |
197 | */ | 202 | */ |
198 | public BigDecimal getQuantidadeInicial() { | 203 | public BigDecimal getQuantidadeInicial() { |
199 | - | 204 | + |
200 | return quantidadeInicial; | 205 | return quantidadeInicial; |
201 | } | 206 | } |
202 | 207 | ||
203 | - | ||
204 | /** | 208 | /** |
205 | * Define o valor do atributo <code>quantidadeInicial</code>. | 209 | * Define o valor do atributo <code>quantidadeInicial</code>. |
206 | * | 210 | * |
207 | - * @param quantidadeInicial | 211 | + * @param quantidadeInicial |
208 | */ | 212 | */ |
209 | public void setQuantidadeInicial(BigDecimal quantidadeInicial) { | 213 | public void setQuantidadeInicial(BigDecimal quantidadeInicial) { |
210 | - | 214 | + |
211 | this.quantidadeInicial = quantidadeInicial; | 215 | this.quantidadeInicial = quantidadeInicial; |
212 | } | 216 | } |
213 | 217 | ||
214 | - | ||
215 | /** | 218 | /** |
216 | * Retorna o valor do atributo <code>quantidadeRestante</code> | 219 | * Retorna o valor do atributo <code>quantidadeRestante</code> |
217 | * | 220 | * |
218 | * @return <code>BigDecimal</code> | 221 | * @return <code>BigDecimal</code> |
219 | */ | 222 | */ |
220 | public BigDecimal getQuantidadeRestante() { | 223 | public BigDecimal getQuantidadeRestante() { |
221 | - | 224 | + |
222 | return quantidadeRestante; | 225 | return quantidadeRestante; |
223 | } | 226 | } |
224 | 227 | ||
225 | - | ||
226 | /** | 228 | /** |
227 | * Define o valor do atributo <code>quantidadeRestante</code>. | 229 | * Define o valor do atributo <code>quantidadeRestante</code>. |
228 | * | 230 | * |
229 | - * @param quantidadeRestante | 231 | + * @param quantidadeRestante |
230 | */ | 232 | */ |
231 | public void setQuantidadeRestante(BigDecimal quantidadeRestante) { | 233 | public void setQuantidadeRestante(BigDecimal quantidadeRestante) { |
232 | - | 234 | + |
233 | this.quantidadeRestante = quantidadeRestante; | 235 | this.quantidadeRestante = quantidadeRestante; |
234 | } | 236 | } |
235 | 237 | ||
236 | - | ||
237 | /** | 238 | /** |
238 | * Retorna o valor do atributo <code>valorUnitario</code> | 239 | * Retorna o valor do atributo <code>valorUnitario</code> |
239 | * | 240 | * |
240 | * @return <code>BigDecimal</code> | 241 | * @return <code>BigDecimal</code> |
241 | */ | 242 | */ |
242 | public BigDecimal getValorUnitario() { | 243 | public BigDecimal getValorUnitario() { |
243 | - | 244 | + |
244 | return valorUnitario; | 245 | return valorUnitario; |
245 | } | 246 | } |
246 | 247 | ||
247 | - | ||
248 | /** | 248 | /** |
249 | * Define o valor do atributo <code>valorUnitario</code>. | 249 | * Define o valor do atributo <code>valorUnitario</code>. |
250 | * | 250 | * |
251 | - * @param valorUnitario | 251 | + * @param valorUnitario |
252 | */ | 252 | */ |
253 | public void setValorUnitario(BigDecimal valorUnitario) { | 253 | public void setValorUnitario(BigDecimal valorUnitario) { |
254 | - | 254 | + |
255 | this.valorUnitario = valorUnitario; | 255 | this.valorUnitario = valorUnitario; |
256 | } | 256 | } |
257 | 257 | ||
258 | - | ||
259 | /** | 258 | /** |
260 | * Retorna o valor do atributo <code>valorSobra</code> | 259 | * Retorna o valor do atributo <code>valorSobra</code> |
261 | * | 260 | * |
262 | * @return <code>BigDecimal</code> | 261 | * @return <code>BigDecimal</code> |
263 | */ | 262 | */ |
264 | public BigDecimal getValorSobra() { | 263 | public BigDecimal getValorSobra() { |
265 | - | 264 | + |
266 | return valorSobra; | 265 | return valorSobra; |
267 | } | 266 | } |
268 | 267 | ||
269 | - | ||
270 | /** | 268 | /** |
271 | * Define o valor do atributo <code>valorSobra</code>. | 269 | * Define o valor do atributo <code>valorSobra</code>. |
272 | * | 270 | * |
273 | - * @param valorSobra | 271 | + * @param valorSobra |
274 | */ | 272 | */ |
275 | public void setValorSobra(BigDecimal valorSobra) { | 273 | public void setValorSobra(BigDecimal valorSobra) { |
276 | - | 274 | + |
277 | this.valorSobra = valorSobra; | 275 | this.valorSobra = valorSobra; |
278 | } | 276 | } |
279 | 277 | ||
280 | - | ||
281 | /** | 278 | /** |
282 | * Retorna o valor do atributo <code>valorTotal</code> | 279 | * Retorna o valor do atributo <code>valorTotal</code> |
283 | * | 280 | * |
284 | * @return <code>BigDecimal</code> | 281 | * @return <code>BigDecimal</code> |
285 | */ | 282 | */ |
286 | public BigDecimal getValorTotal() { | 283 | public BigDecimal getValorTotal() { |
287 | - | 284 | + |
288 | return valorTotal; | 285 | return valorTotal; |
289 | } | 286 | } |
290 | 287 | ||
291 | - | ||
292 | /** | 288 | /** |
293 | * Define o valor do atributo <code>valorTotal</code>. | 289 | * Define o valor do atributo <code>valorTotal</code>. |
294 | * | 290 | * |
295 | - * @param valorTotal | 291 | + * @param valorTotal |
296 | */ | 292 | */ |
297 | public void setValorTotal(BigDecimal valorTotal) { | 293 | public void setValorTotal(BigDecimal valorTotal) { |
298 | - | 294 | + |
299 | this.valorTotal = valorTotal; | 295 | this.valorTotal = valorTotal; |
300 | } | 296 | } |
301 | 297 | ||
302 | - | ||
303 | /** | 298 | /** |
304 | * Retorna o valor do atributo <code>entradaItem</code> | 299 | * Retorna o valor do atributo <code>entradaItem</code> |
305 | * | 300 | * |
306 | * @return <code>EntradaAlmoxarifadoItem</code> | 301 | * @return <code>EntradaAlmoxarifadoItem</code> |
307 | */ | 302 | */ |
308 | public EntradaAlmoxarifadoItem getEntradaItem() { | 303 | public EntradaAlmoxarifadoItem getEntradaItem() { |
309 | - | 304 | + |
310 | return entradaItem; | 305 | return entradaItem; |
311 | } | 306 | } |
312 | 307 | ||
313 | - | ||
314 | /** | 308 | /** |
315 | * Define o valor do atributo <code>entradaItem</code>. | 309 | * Define o valor do atributo <code>entradaItem</code>. |
316 | * | 310 | * |
317 | - * @param entradaItem | 311 | + * @param entradaItem |
318 | */ | 312 | */ |
319 | public void setEntradaItem(EntradaAlmoxarifadoItem entradaItem) { | 313 | public void setEntradaItem(EntradaAlmoxarifadoItem entradaItem) { |
320 | - | 314 | + |
321 | this.entradaItem = entradaItem; | 315 | this.entradaItem = entradaItem; |
322 | } | 316 | } |
323 | 317 |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java
@@ -68,7 +68,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { | @@ -68,7 +68,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { | ||
68 | 68 | ||
69 | /** Atributo materialEstoque. */ | 69 | /** Atributo materialEstoque. */ |
70 | @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.PERSIST) | 70 | @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.PERSIST) |
71 | - @JsonView({ Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class }) | 71 | + @JsonView({Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class }) |
72 | private MaterialEstoque materialEstoque; | 72 | private MaterialEstoque materialEstoque; |
73 | 73 | ||
74 | /** Atributo materialEstoqueInativo. */ | 74 | /** Atributo materialEstoqueInativo. */ |
@@ -77,7 +77,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { | @@ -77,7 +77,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { | ||
77 | 77 | ||
78 | /** Atributo endereco. */ | 78 | /** Atributo endereco. */ |
79 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 79 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
80 | - @JsonView({ Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class }) | 80 | + @JsonView({ Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class }) |
81 | private EnderecoEstoque endereco; | 81 | private EnderecoEstoque endereco; |
82 | 82 | ||
83 | /** Atributo enderecoInativo. */ | 83 | /** Atributo enderecoInativo. */ |
@@ -88,7 +88,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { | @@ -88,7 +88,7 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { | ||
88 | private BigDecimal capacidade; | 88 | private BigDecimal capacidade; |
89 | 89 | ||
90 | /** Atributo quantidade. */ | 90 | /** Atributo quantidade. */ |
91 | - @JsonView({ Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class }) | 91 | + @JsonView({ Views.MaterialLocalEstoqueView.class, ViewsAdmMateriais.TransferenciaEnderecoEstoqueView.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class }) |
92 | private BigDecimal quantidade = BigDecimal.ZERO; | 92 | private BigDecimal quantidade = BigDecimal.ZERO; |
93 | 93 | ||
94 | /** Atributo unidadeMedidaEntrada. */ | 94 | /** Atributo unidadeMedidaEntrada. */ |
@@ -255,4 +255,28 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { | @@ -255,4 +255,28 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { | ||
255 | this.capacidade = capacidade; | 255 | this.capacidade = capacidade; |
256 | } | 256 | } |
257 | 257 | ||
258 | + @Override | ||
259 | + public int hashCode() { | ||
260 | + final int prime = 31; | ||
261 | + int result = super.hashCode(); | ||
262 | + result = prime * result + ((id == null) ? 0 : id.hashCode()); | ||
263 | + return result; | ||
264 | + } | ||
265 | + | ||
266 | + @Override | ||
267 | + public boolean equals(Object obj) { | ||
268 | + if (this == obj) | ||
269 | + return true; | ||
270 | + if (!super.equals(obj)) | ||
271 | + return false; | ||
272 | + if (getClass() != obj.getClass()) | ||
273 | + return false; | ||
274 | + MaterialLocalEstoque other = (MaterialLocalEstoque) obj; | ||
275 | + if (id == null) { | ||
276 | + if (other.id != null) | ||
277 | + return false; | ||
278 | + } else if (!id.equals(other.id)) | ||
279 | + return false; | ||
280 | + return true; | ||
281 | + } | ||
258 | } | 282 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/RequisicaoConsumo.java
@@ -10,18 +10,25 @@ import javax.persistence.FetchType; | @@ -10,18 +10,25 @@ import javax.persistence.FetchType; | ||
10 | import javax.persistence.GeneratedValue; | 10 | import javax.persistence.GeneratedValue; |
11 | import javax.persistence.GenerationType; | 11 | import javax.persistence.GenerationType; |
12 | import javax.persistence.Id; | 12 | import javax.persistence.Id; |
13 | +import javax.persistence.JoinColumn; | ||
13 | import javax.persistence.ManyToOne; | 14 | import javax.persistence.ManyToOne; |
14 | import javax.persistence.OneToMany; | 15 | import javax.persistence.OneToMany; |
16 | +import javax.persistence.OneToOne; | ||
15 | import javax.persistence.Table; | 17 | import javax.persistence.Table; |
16 | import javax.persistence.Temporal; | 18 | import javax.persistence.Temporal; |
17 | import javax.persistence.TemporalType; | 19 | import javax.persistence.TemporalType; |
18 | 20 | ||
21 | +import org.hibernate.envers.AuditTable; | ||
22 | +import org.hibernate.envers.Audited; | ||
23 | +import org.hibernate.envers.NotAudited; | ||
24 | + | ||
19 | import br.com.centralit.api.framework.json.ViewsAdmMateriais; | 25 | import br.com.centralit.api.framework.json.ViewsAdmMateriais; |
20 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; | 26 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; |
21 | import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; | 27 | import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; |
22 | import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; | 28 | import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; |
23 | import br.com.centralit.framework.json.Views; | 29 | import br.com.centralit.framework.json.Views; |
24 | import br.com.centralit.framework.model.Dominio; | 30 | import br.com.centralit.framework.model.Dominio; |
31 | +import br.com.centralit.framework.model.Usuario; | ||
25 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; | 32 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; |
26 | 33 | ||
27 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | 34 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
@@ -61,9 +68,11 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | @@ -61,9 +68,11 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||
61 | * @author rogerio.costa | 68 | * @author rogerio.costa |
62 | * | 69 | * |
63 | */ | 70 | */ |
71 | +@Audited | ||
72 | +@AuditTable(value = "alm_requisicaoconsumo_aud") | ||
64 | @Entity | 73 | @Entity |
65 | -@Table(name="alm_requisicaoconsumo") | ||
66 | -@JsonIgnoreProperties({"$checked"}) | 74 | +@Table(name = "alm_requisicaoconsumo") |
75 | +@JsonIgnoreProperties({ "$checked" }) | ||
67 | public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | 76 | public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { |
68 | 77 | ||
69 | public static final Long TIPO_STATUS_REQUISICAO_NAO_CONCLUIDA_CODIGO = 1L; | 78 | public static final Long TIPO_STATUS_REQUISICAO_NAO_CONCLUIDA_CODIGO = 1L; |
@@ -82,17 +91,23 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | @@ -82,17 +91,23 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | ||
82 | /** Atributo id. */ | 91 | /** Atributo id. */ |
83 | @Id | 92 | @Id |
84 | @GeneratedValue(strategy = GenerationType.AUTO) | 93 | @GeneratedValue(strategy = GenerationType.AUTO) |
85 | - @JsonView({ Views.GenericView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class }) | 94 | + @JsonView({ Views.GenericView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, |
95 | + ViewsAlmoxarifado.DevolucaoEditView.class }) | ||
86 | private Long id; | 96 | private Long id; |
87 | 97 | ||
88 | /** Atributo almoxaifado. */ | 98 | /** Atributo almoxaifado. */ |
89 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 99 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
90 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 100 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
101 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | ||
102 | + ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, | ||
103 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
91 | private EstruturaOrganizacional almoxarifado; | 104 | private EstruturaOrganizacional almoxarifado; |
92 | 105 | ||
93 | /** Atributo centroCusto. */ | 106 | /** Atributo centroCusto. */ |
107 | + @NotAudited | ||
94 | @ManyToOne(fetch = FetchType.LAZY) | 108 | @ManyToOne(fetch = FetchType.LAZY) |
95 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 109 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class, |
110 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
96 | private CentroCusto centroCusto; | 111 | private CentroCusto centroCusto; |
97 | 112 | ||
98 | /** Atributo dataRequisicao. */ | 113 | /** Atributo dataRequisicao. */ |
@@ -100,47 +115,68 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | @@ -100,47 +115,68 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | ||
100 | @Temporal(TemporalType.TIMESTAMP) | 115 | @Temporal(TemporalType.TIMESTAMP) |
101 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) | 116 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) |
102 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) | 117 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) |
103 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
104 | - ViewsAlmoxarifado.DevolucaoListView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 118 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
119 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
120 | + ViewsAlmoxarifado.DevolucaoListView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
105 | private Calendar dataRequisicao; | 121 | private Calendar dataRequisicao; |
106 | 122 | ||
107 | @Column(name = "dataFinalizacaoAtendimento", nullable = true) | 123 | @Column(name = "dataFinalizacaoAtendimento", nullable = true) |
108 | @Temporal(TemporalType.TIMESTAMP) | 124 | @Temporal(TemporalType.TIMESTAMP) |
109 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) | 125 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) |
110 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) | 126 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) |
111 | - @JsonView({ ViewsAlmoxarifado.DevolucaoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | ||
112 | - Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 127 | + @JsonView({ ViewsAlmoxarifado.DevolucaoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, |
128 | + ViewsAlmoxarifado.DevolucaoListView.class, Views.MaterialConsultaInfo.class, | ||
129 | + ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
113 | private Calendar dataFinalizacaoAtendimento; | 130 | private Calendar dataFinalizacaoAtendimento; |
114 | 131 | ||
115 | /** Atributo materiais. */ | 132 | /** Atributo materiais. */ |
116 | - @OneToMany(fetch = FetchType.LAZY, mappedBy = "requisicaoConsumo", cascade = CascadeType.ALL, orphanRemoval = true) | ||
117 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
118 | - Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 133 | + @OneToMany(fetch = FetchType.LAZY, mappedBy = "requisicaoConsumo", cascade = CascadeType.ALL) |
134 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, | ||
135 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
136 | + Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
119 | private Collection<RequisicaoConsumoItem> requisicaoConsumoItens; | 137 | private Collection<RequisicaoConsumoItem> requisicaoConsumoItens; |
120 | 138 | ||
121 | /** Atributo numeroRequisicao. */ | 139 | /** Atributo numeroRequisicao. */ |
122 | @Column(length = 30) | 140 | @Column(length = 30) |
123 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
124 | - ViewsAlmoxarifado.DevolucaoListView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 141 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
142 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
143 | + ViewsAlmoxarifado.DevolucaoListView.class, Views.MaterialConsultaInfo.class, | ||
144 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
125 | private String numeroRequisicao; | 145 | private String numeroRequisicao; |
126 | 146 | ||
127 | /** Atributo observacoes. */ | 147 | /** Atributo observacoes. */ |
148 | + @NotAudited | ||
128 | @OneToMany(fetch = FetchType.LAZY, mappedBy = "requisicaoConsumo", cascade = CascadeType.ALL, orphanRemoval = true) | 149 | @OneToMany(fetch = FetchType.LAZY, mappedBy = "requisicaoConsumo", cascade = CascadeType.ALL, orphanRemoval = true) |
129 | @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 150 | @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) |
130 | private Collection<RequisicaoObservacao> observacoes; | 151 | private Collection<RequisicaoObservacao> observacoes; |
131 | 152 | ||
132 | /** Atributo statusRequisicao. */ | 153 | /** Atributo statusRequisicao. */ |
133 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 154 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
134 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.AtendimentoRequisicaoConsumoItemView.class, Views.MaterialConsultaInfo.class, | ||
135 | - ViewsAdmMateriais.RequisicaoConsumo.class }) | 155 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
156 | + ViewsAdmMateriais.AtendimentoRequisicaoConsumoItemView.class, Views.MaterialConsultaInfo.class, | ||
157 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
136 | private Dominio tipoStatusRequisicao; | 158 | private Dominio tipoStatusRequisicao; |
137 | 159 | ||
138 | /** Atributo unidadeRequisitante. */ | 160 | /** Atributo unidadeRequisitante. */ |
139 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 161 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
140 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | ||
141 | - ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 162 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
163 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | ||
164 | + ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, | ||
165 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
142 | private EstruturaOrganizacional unidadeRequisitante; | 166 | private EstruturaOrganizacional unidadeRequisitante; |
143 | 167 | ||
168 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | ||
169 | + private boolean emAtendimento; | ||
170 | + | ||
171 | + @ManyToOne(fetch = FetchType.LAZY) | ||
172 | + @JoinColumn(name = "atendente_id") | ||
173 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | ||
174 | + private Usuario atendente; | ||
175 | + | ||
176 | + @OneToOne(mappedBy = "requisicaoConsumo", fetch = FetchType.LAZY) | ||
177 | + @JsonView({ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class}) | ||
178 | + private AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo; | ||
179 | + | ||
144 | /** | 180 | /** |
145 | * Retorna o valor do atributo <code>id</code> | 181 | * Retorna o valor do atributo <code>id</code> |
146 | * | 182 | * |
@@ -344,4 +380,28 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | @@ -344,4 +380,28 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | ||
344 | this.dataFinalizacaoAtendimento = dataFinalizacaoAtendimento; | 380 | this.dataFinalizacaoAtendimento = dataFinalizacaoAtendimento; |
345 | } | 381 | } |
346 | 382 | ||
383 | + public boolean isEmAtendimento() { | ||
384 | + return emAtendimento; | ||
385 | + } | ||
386 | + | ||
387 | + public void setEmAtendimento(boolean emAtendimento) { | ||
388 | + this.emAtendimento = emAtendimento; | ||
389 | + } | ||
390 | + | ||
391 | + public Usuario getAtendente() { | ||
392 | + return atendente; | ||
393 | + } | ||
394 | + | ||
395 | + public void setAtendente(Usuario atendente) { | ||
396 | + this.atendente = atendente; | ||
397 | + } | ||
398 | + | ||
399 | + public AtendimentoRequisicaoConsumo getAtendimentoRequisicaoConsumo() { | ||
400 | + return atendimentoRequisicaoConsumo; | ||
401 | + } | ||
402 | + | ||
403 | + public void setAtendimentoRequisicaoConsumo( | ||
404 | + AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo) { | ||
405 | + this.atendimentoRequisicaoConsumo = atendimentoRequisicaoConsumo; | ||
406 | + } | ||
347 | } | 407 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/RequisicaoConsumoItem.java
@@ -10,6 +10,9 @@ import javax.persistence.Id; | @@ -10,6 +10,9 @@ import javax.persistence.Id; | ||
10 | import javax.persistence.ManyToOne; | 10 | import javax.persistence.ManyToOne; |
11 | import javax.persistence.Table; | 11 | import javax.persistence.Table; |
12 | 12 | ||
13 | +import org.hibernate.envers.AuditTable; | ||
14 | +import org.hibernate.envers.Audited; | ||
15 | + | ||
13 | import br.com.centralit.api.framework.json.ViewsAdmMateriais; | 16 | import br.com.centralit.api.framework.json.ViewsAdmMateriais; |
14 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; | 17 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; |
15 | import br.com.centralit.framework.json.Views; | 18 | import br.com.centralit.framework.json.Views; |
@@ -51,6 +54,8 @@ import com.fasterxml.jackson.annotation.JsonView; | @@ -51,6 +54,8 @@ import com.fasterxml.jackson.annotation.JsonView; | ||
51 | * @author rogerio.costa | 54 | * @author rogerio.costa |
52 | * | 55 | * |
53 | */ | 56 | */ |
57 | +@Audited | ||
58 | +@AuditTable(value = "alm_rc_item_aud") | ||
54 | @JsonIgnoreProperties({ "$quantidadeAtendida", "$quantidadeADevolver", "$TIPO_DECIMAL", "$index" }) | 59 | @JsonIgnoreProperties({ "$quantidadeAtendida", "$quantidadeADevolver", "$TIPO_DECIMAL", "$index" }) |
55 | @Entity | 60 | @Entity |
56 | @Table(name="alm_rc_item") | 61 | @Table(name="alm_rc_item") |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/AtendimentoRequisicaoConsumoFIFOService.java
0 → 100644
@@ -0,0 +1,7 @@ | @@ -0,0 +1,7 @@ | ||
1 | +package br.com.centralit.api.service; | ||
2 | + | ||
3 | +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemFIFO; | ||
4 | +import br.com.centralit.framework.service.arquitetura.GenericService; | ||
5 | + | ||
6 | +public interface AtendimentoRequisicaoConsumoFIFOService extends GenericService<AtendimentoRequisicaoConsumoItemFIFO, Long> { | ||
7 | +} |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/AtendimentoRequisicaoConsumoService.java
@@ -4,6 +4,7 @@ import java.util.List; | @@ -4,6 +4,7 @@ import java.util.List; | ||
4 | 4 | ||
5 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; | 5 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; |
6 | import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; | 6 | import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; |
7 | +import br.com.centralit.api.viewHelper.ValidacaoAtendimentoRequisicaoConsumoVH; | ||
7 | import br.com.centralit.framework.service.arquitetura.GenericService; | 8 | import br.com.centralit.framework.service.arquitetura.GenericService; |
8 | 9 | ||
9 | /** | 10 | /** |
@@ -65,4 +66,10 @@ public interface AtendimentoRequisicaoConsumoService extends GenericService<Aten | @@ -65,4 +66,10 @@ public interface AtendimentoRequisicaoConsumoService extends GenericService<Aten | ||
65 | 66 | ||
66 | boolean removerAtendimentoRequisicao(String idsRequisicaoConsumo, Long idOrganizacao); | 67 | boolean removerAtendimentoRequisicao(String idsRequisicaoConsumo, Long idOrganizacao); |
67 | 68 | ||
69 | + Boolean finalizarRequisicoes(List<Long> idsRequisicao, Long idOrganizacao); | ||
70 | + | ||
71 | + Boolean excluirAtendimentos(List<Long> idsRequisicao, Long idOrganizacao); | ||
72 | + | ||
73 | + ValidacaoAtendimentoRequisicaoConsumoVH validarQuantidadesAtendidas(AtendimentoRequisicaoConsumo entity); | ||
74 | + | ||
68 | } | 75 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/EntradaAlmoxarifadoItemService.java
@@ -139,4 +139,6 @@ public interface EntradaAlmoxarifadoItemService extends GenericService<EntradaAl | @@ -139,4 +139,6 @@ public interface EntradaAlmoxarifadoItemService extends GenericService<EntradaAl | ||
139 | public List<EntradaAlmoxarifadoItem> findItensPorEntradaId(Long idEntrada); | 139 | public List<EntradaAlmoxarifadoItem> findItensPorEntradaId(Long idEntrada); |
140 | 140 | ||
141 | Boolean existeItemVinculadoAMaterialLocalEstoque(Long idMaterialLocalEstoque); | 141 | Boolean existeItemVinculadoAMaterialLocalEstoque(Long idMaterialLocalEstoque); |
142 | + | ||
143 | + public BigDecimal getValorFIFOPorMaterial(MaterialConsumo materialConsumo, BigDecimal quantidadeMovimentada); | ||
142 | } | 144 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MaterialEstoqueFIFOItemService.java
1 | package br.com.centralit.api.service; | 1 | package br.com.centralit.api.service; |
2 | 2 | ||
3 | +import java.util.List; | ||
4 | + | ||
3 | import br.com.centralit.api.model.MaterialEstoqueFIFOItem; | 5 | import br.com.centralit.api.model.MaterialEstoqueFIFOItem; |
4 | import br.com.centralit.framework.service.arquitetura.GenericService; | 6 | import br.com.centralit.framework.service.arquitetura.GenericService; |
5 | 7 | ||
6 | public interface MaterialEstoqueFIFOItemService extends GenericService<MaterialEstoqueFIFOItem, Long> { | 8 | public interface MaterialEstoqueFIFOItemService extends GenericService<MaterialEstoqueFIFOItem, Long> { |
9 | + | ||
10 | + List<MaterialEstoqueFIFOItem> findFIFOsByMaterial(long idMaterial); | ||
7 | 11 | ||
8 | } | 12 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoItemService.java
@@ -45,4 +45,6 @@ public interface RequisicaoConsumoItemService extends GenericService<RequisicaoC | @@ -45,4 +45,6 @@ public interface RequisicaoConsumoItemService extends GenericService<RequisicaoC | ||
45 | 45 | ||
46 | List<RequisicaoConsumoItem> listarRequisicaoCosumoItemByIdRequisicao(Long requisicaoId); | 46 | List<RequisicaoConsumoItem> listarRequisicaoCosumoItemByIdRequisicao(Long requisicaoId); |
47 | 47 | ||
48 | + List<RequisicaoConsumoItem> findItensRequisicaoPorMaterial(Long idRequisicao, Long idMaterial); | ||
49 | + | ||
48 | } | 50 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java
@@ -4,9 +4,12 @@ import java.util.Calendar; | @@ -4,9 +4,12 @@ import java.util.Calendar; | ||
4 | import java.util.Collection; | 4 | import java.util.Collection; |
5 | import java.util.List; | 5 | import java.util.List; |
6 | 6 | ||
7 | +import com.googlecode.genericdao.search.SearchResult; | ||
8 | + | ||
7 | import br.com.centralit.api.model.EstruturaOrganizacional; | 9 | import br.com.centralit.api.model.EstruturaOrganizacional; |
8 | import br.com.centralit.api.model.MaterialConsumo; | 10 | import br.com.centralit.api.model.MaterialConsumo; |
9 | import br.com.centralit.api.model.RequisicaoConsumo; | 11 | import br.com.centralit.api.model.RequisicaoConsumo; |
12 | +import br.com.centralit.api.viewHelper.AtendimentoVH; | ||
10 | import br.com.centralit.api.viewHelper.RequisicaoVH; | 13 | import br.com.centralit.api.viewHelper.RequisicaoVH; |
11 | import br.com.centralit.framework.model.Dominio; | 14 | import br.com.centralit.framework.model.Dominio; |
12 | import br.com.centralit.framework.service.arquitetura.GenericService; | 15 | import br.com.centralit.framework.service.arquitetura.GenericService; |
@@ -127,4 +130,12 @@ public interface RequisicaoConsumoService extends GenericService<RequisicaoConsu | @@ -127,4 +130,12 @@ public interface RequisicaoConsumoService extends GenericService<RequisicaoConsu | ||
127 | List<Object> getResumoContabilForReport(Long requisicaoId,boolean isFIFO); | 130 | List<Object> getResumoContabilForReport(Long requisicaoId,boolean isFIFO); |
128 | List<Object> getMateriaisForReport(Long requisicaoId,boolean isFIFO); | 131 | List<Object> getMateriaisForReport(Long requisicaoId,boolean isFIFO); |
129 | String findtipoStatusRequisicaoPorMaterial(Long requisicaoId); | 132 | String findtipoStatusRequisicaoPorMaterial(Long requisicaoId); |
133 | + SearchResult filtrarRequisicoesAtendimento(AtendimentoVH atendimentoVH); | ||
134 | + | ||
135 | + List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH); | ||
136 | + | ||
137 | + Boolean atualizarSituacaoAtendimento(Long idRequisicao, boolean situacaoAtendimento); | ||
138 | + | ||
139 | + Boolean atualizarSituacaoAtendimentoRequisicoes(RequisicaoVH requisicaoVH); | ||
140 | + | ||
130 | } | 141 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoFIFOServiceImpl.java
0 → 100644
@@ -0,0 +1,22 @@ | @@ -0,0 +1,22 @@ | ||
1 | +package br.com.centralit.api.service.impl; | ||
2 | + | ||
3 | +import org.springframework.beans.factory.annotation.Autowired; | ||
4 | +import org.springframework.stereotype.Service; | ||
5 | + | ||
6 | +import br.com.centralit.api.dao.AtendimentoRequisicaoConsumoFIFODao; | ||
7 | +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemFIFO; | ||
8 | +import br.com.centralit.api.service.AtendimentoRequisicaoConsumoFIFOService; | ||
9 | +import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; | ||
10 | + | ||
11 | +@Service("atendimentoRequisicaoConsumoFIFOService") | ||
12 | +public class AtendimentoRequisicaoConsumoFIFOServiceImpl extends GenericServiceImpl<AtendimentoRequisicaoConsumoItemFIFO, Long> implements AtendimentoRequisicaoConsumoFIFOService { | ||
13 | + | ||
14 | + private AtendimentoRequisicaoConsumoFIFODao atendimentoRequisicaoConsumoFIFODao; | ||
15 | + | ||
16 | + @Autowired | ||
17 | + public AtendimentoRequisicaoConsumoFIFOServiceImpl(AtendimentoRequisicaoConsumoFIFODao atendimentoRequisicaoConsumoFIFODao) { | ||
18 | + this.dao = atendimentoRequisicaoConsumoFIFODao; | ||
19 | + this.atendimentoRequisicaoConsumoFIFODao = atendimentoRequisicaoConsumoFIFODao; | ||
20 | + } | ||
21 | + | ||
22 | +} |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java
@@ -149,7 +149,6 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI | @@ -149,7 +149,6 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI | ||
149 | public void superRemove(AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem) { | 149 | public void superRemove(AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem) { |
150 | 150 | ||
151 | AtendimentoRequisicaoConsumoItem entity = this.find(atendimentoRequisicaoConsumoItem.getId()); | 151 | AtendimentoRequisicaoConsumoItem entity = this.find(atendimentoRequisicaoConsumoItem.getId()); |
152 | - | ||
153 | super.remove(entity); | 152 | super.remove(entity); |
154 | } | 153 | } |
155 | 154 | ||
@@ -164,8 +163,6 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI | @@ -164,8 +163,6 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI | ||
164 | idsDominiosTipoStatusRequisicao.add(statusFinalizado.getId()); | 163 | idsDominiosTipoStatusRequisicao.add(statusFinalizado.getId()); |
165 | Dominio statusParcialmenteAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE); | 164 | Dominio statusParcialmenteAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE); |
166 | idsDominiosTipoStatusRequisicao.add(statusParcialmenteAtendida.getId()); | 165 | idsDominiosTipoStatusRequisicao.add(statusParcialmenteAtendida.getId()); |
167 | - Dominio statusAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA); | ||
168 | - idsDominiosTipoStatusRequisicao.add(statusAtendida.getId()); | ||
169 | 166 | ||
170 | RequisicaoConsumoItem requisicaoConsumoItem = this.requisicaoConsumoItemService.find(atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getId()); | 167 | RequisicaoConsumoItem requisicaoConsumoItem = this.requisicaoConsumoItemService.find(atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getId()); |
171 | 168 |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java
@@ -2,10 +2,13 @@ package br.com.centralit.api.service.impl; | @@ -2,10 +2,13 @@ package br.com.centralit.api.service.impl; | ||
2 | 2 | ||
3 | import java.math.BigDecimal; | 3 | import java.math.BigDecimal; |
4 | import java.util.ArrayList; | 4 | import java.util.ArrayList; |
5 | +import java.util.Collection; | ||
5 | import java.util.HashMap; | 6 | import java.util.HashMap; |
6 | import java.util.List; | 7 | import java.util.List; |
7 | import java.util.Map; | 8 | import java.util.Map; |
9 | +import java.util.Map.Entry; | ||
8 | 10 | ||
11 | +import org.apache.commons.lang3.StringUtils; | ||
9 | import org.springframework.beans.factory.annotation.Autowired; | 12 | import org.springframework.beans.factory.annotation.Autowired; |
10 | import org.springframework.beans.factory.annotation.Qualifier; | 13 | import org.springframework.beans.factory.annotation.Qualifier; |
11 | import org.springframework.stereotype.Service; | 14 | import org.springframework.stereotype.Service; |
@@ -14,19 +17,32 @@ import org.springframework.validation.Validator; | @@ -14,19 +17,32 @@ import org.springframework.validation.Validator; | ||
14 | import br.com.centralit.api.dao.AtendimentoRequisicaoConsumoDao; | 17 | import br.com.centralit.api.dao.AtendimentoRequisicaoConsumoDao; |
15 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; | 18 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; |
16 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; | 19 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; |
20 | +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemEndereco; | ||
21 | +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemFIFO; | ||
17 | import br.com.centralit.api.model.DominioAlmoxarifado; | 22 | import br.com.centralit.api.model.DominioAlmoxarifado; |
23 | +import br.com.centralit.api.model.DominioMaterial; | ||
24 | +import br.com.centralit.api.model.MaterialEstoqueFIFOItem; | ||
25 | +import br.com.centralit.api.model.MaterialLocalEstoque; | ||
26 | +import br.com.centralit.api.model.MovimentoEstoque; | ||
27 | +import br.com.centralit.api.model.RequisicaoConsumoItem; | ||
28 | +import br.com.centralit.api.service.AtendimentoRequisicaoConsumoFIFOService; | ||
18 | import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService; | 29 | import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService; |
19 | import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService; | 30 | import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService; |
31 | +import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; | ||
20 | import br.com.centralit.api.service.ContaContabilMovimentoService; | 32 | import br.com.centralit.api.service.ContaContabilMovimentoService; |
21 | import br.com.centralit.api.service.DominioService; | 33 | import br.com.centralit.api.service.DominioService; |
34 | +import br.com.centralit.api.service.InternacionalizacaoService; | ||
22 | import br.com.centralit.api.service.MaterialConsumoService; | 35 | import br.com.centralit.api.service.MaterialConsumoService; |
36 | +import br.com.centralit.api.service.MaterialEstoqueFIFOItemService; | ||
37 | +import br.com.centralit.api.service.MaterialLocalEstoqueService; | ||
23 | import br.com.centralit.api.service.MovimentoEstoqueService; | 38 | import br.com.centralit.api.service.MovimentoEstoqueService; |
24 | -import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; | ||
25 | import br.com.centralit.api.service.RequisicaoConsumoItemService; | 39 | import br.com.centralit.api.service.RequisicaoConsumoItemService; |
26 | import br.com.centralit.api.service.RequisicaoConsumoService; | 40 | import br.com.centralit.api.service.RequisicaoConsumoService; |
27 | import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; | 41 | import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; |
42 | +import br.com.centralit.api.viewHelper.ValidacaoAtendimentoRequisicaoConsumoVH; | ||
28 | import br.com.centralit.framework.exception.BusinessException; | 43 | import br.com.centralit.framework.exception.BusinessException; |
29 | import br.com.centralit.framework.exception.CodigoErro; | 44 | import br.com.centralit.framework.exception.CodigoErro; |
45 | +import br.com.centralit.framework.model.Dominio; | ||
30 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; | 46 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; |
31 | import br.com.centralit.framework.util.UtilColecao; | 47 | import br.com.centralit.framework.util.UtilColecao; |
32 | import br.com.centralit.framework.util.UtilDate; | 48 | import br.com.centralit.framework.util.UtilDate; |
@@ -98,7 +114,28 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | @@ -98,7 +114,28 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | ||
98 | 114 | ||
99 | @Autowired | 115 | @Autowired |
100 | private ContaContabilMovimentoService contaContabilMovimentoService; | 116 | private ContaContabilMovimentoService contaContabilMovimentoService; |
117 | + | ||
118 | + @Autowired | ||
119 | + private InternacionalizacaoService internacionalizacaoService; | ||
120 | + | ||
121 | + @Autowired | ||
122 | + private MaterialLocalEstoqueService materialLocalEstoqueService; | ||
123 | + | ||
124 | + @Autowired | ||
125 | + private MaterialEstoqueFIFOItemService materialEstoqueFIFOItemService; | ||
126 | + | ||
127 | + @Autowired | ||
128 | + private AtendimentoRequisicaoConsumoFIFOService atendimentoRequisicaoConsumoFIFOService; | ||
101 | 129 | ||
130 | + private Dominio idioma; | ||
131 | + | ||
132 | + private Dominio getIdioma() { | ||
133 | + if(!UtilObjeto.isReferencia(idioma)){ | ||
134 | + idioma = this.dominioService.findByChaveAndCodigo("tipoIdioma", Dominio.TIPO_IDIOMA_PT_BR_CODIGO); | ||
135 | + } | ||
136 | + return idioma; | ||
137 | + } | ||
138 | + | ||
102 | /** | 139 | /** |
103 | * Responsável pela criação de novas instâncias desta classe. | 140 | * Responsável pela criação de novas instâncias desta classe. |
104 | * | 141 | * |
@@ -119,35 +156,99 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | @@ -119,35 +156,99 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | ||
119 | @Override | 156 | @Override |
120 | public AtendimentoRequisicaoConsumo save(AtendimentoRequisicaoConsumo entity) { | 157 | public AtendimentoRequisicaoConsumo save(AtendimentoRequisicaoConsumo entity) { |
121 | 158 | ||
122 | -// this.validarEntidade(entity, this.validator); | ||
123 | - | 159 | + this.validarEntidade(entity, this.validator); |
160 | + | ||
161 | + ValidacaoAtendimentoRequisicaoConsumoVH validacao = this.validarQuantidadesAtendidas(entity); | ||
162 | + if(StringUtils.isNotBlank(validacao.getMensagemErro())){ | ||
163 | + throw new BusinessException(validacao.getMensagemErro(), CodigoErro.REGRA_NEGOCIO.getValue()); | ||
164 | + } | ||
165 | + | ||
124 | if (!UtilColecao.isVazio(entity.getAtendimentos())) { | 166 | if (!UtilColecao.isVazio(entity.getAtendimentos())) { |
125 | 167 | ||
126 | for (AtendimentoRequisicaoConsumo atendimento : entity.getAtendimentos()) { | 168 | for (AtendimentoRequisicaoConsumo atendimento : entity.getAtendimentos()) { |
127 | - | 169 | + |
128 | if(atendimento.getId() == null && atendimento.getDataAtendimento() == null){ | 170 | if(atendimento.getId() == null && atendimento.getDataAtendimento() == null){ |
129 | atendimento.setDataAtendimento(entity.getDataAtendimento()); | 171 | atendimento.setDataAtendimento(entity.getDataAtendimento()); |
172 | + | ||
173 | + atendimento.setRequisicaoConsumo(this.requisicaoConsumoService.find(atendimento.getRequisicaoConsumo().getId())); | ||
174 | + | ||
175 | + this.validarDataAtendimento(atendimento); | ||
176 | + | ||
177 | + this.montarEntidade(atendimento); | ||
178 | + | ||
179 | + this.atualizarStatusRquisicao(atendimento); | ||
180 | + | ||
181 | + if(atendimento.getId() == null){ | ||
182 | + configurarNumeroAtendimento(atendimento); | ||
183 | + } | ||
184 | + | ||
185 | + super.save(atendimento); | ||
186 | + | ||
187 | + this.movimentoEstoqueService.gerarMovimentoAtendimento(atendimento); | ||
188 | + | ||
189 | + this.requisicaoConsumoService.atualizarSituacaoAtendimento(atendimento.getRequisicaoConsumo().getId(), false); | ||
190 | + | ||
191 | + }else{ | ||
192 | + boolean registroExcluido = false; | ||
193 | + if(atendimento.getDataInativo() != null){ | ||
194 | + atendimento.setDataInativo(null); | ||
195 | + registroExcluido = true; | ||
196 | + } | ||
197 | + atendimento.setDataAtendimento(entity.getDataAtendimento()); | ||
198 | + this.merge(atendimento, registroExcluido); | ||
130 | } | 199 | } |
200 | + } | ||
131 | 201 | ||
132 | - this.montarEntidade(atendimento); | ||
133 | - | ||
134 | - this.validarDataAtendimento(atendimento); | 202 | + } |
135 | 203 | ||
136 | - this.atualizarStatusRquisicao(atendimento); | 204 | + return new AtendimentoRequisicaoConsumo(); |
205 | + } | ||
137 | 206 | ||
138 | - if(atendimento.getId() == null){ | ||
139 | - configurarNumeroAtendimento(atendimento); | 207 | + @Override |
208 | + public ValidacaoAtendimentoRequisicaoConsumoVH validarQuantidadesAtendidas(AtendimentoRequisicaoConsumo entity) { | ||
209 | + final int QUANTIDADE_ATENDIDA = 0; | ||
210 | + final int QUANTIDADE_ATENDIDA_ANTERIOR = 1; | ||
211 | + | ||
212 | + Map<MaterialLocalEstoque, BigDecimal[]> somatorioQuantidadesAtentidasPorMaterial = new HashMap<MaterialLocalEstoque, BigDecimal[]>(); | ||
213 | + | ||
214 | + for(AtendimentoRequisicaoConsumo atendimento : entity.getAtendimentos()){ | ||
215 | + for(AtendimentoRequisicaoConsumoItem atendimentoItem : atendimento.getAtendimentoRequisicaoConsumoItems()){ | ||
216 | + for(AtendimentoRequisicaoConsumoItemEndereco itemEndereco : atendimentoItem.getAtendimentoRequisicaoConsumoItemEnderecos()){ | ||
217 | + if(itemEndereco.getQuantidade() != null){ | ||
218 | + if(somatorioQuantidadesAtentidasPorMaterial.containsKey(itemEndereco.getMaterialLocalEstoque())){ | ||
219 | + | ||
220 | + somatorioQuantidadesAtentidasPorMaterial.put(itemEndereco.getMaterialLocalEstoque(), | ||
221 | + new BigDecimal[]{somatorioQuantidadesAtentidasPorMaterial.get(itemEndereco.getMaterialLocalEstoque())[QUANTIDADE_ATENDIDA].add(itemEndereco.getQuantidade()), itemEndereco.getQuantidadeAnterior()}); | ||
222 | + | ||
223 | + }else{ | ||
224 | + somatorioQuantidadesAtentidasPorMaterial.put(itemEndereco.getMaterialLocalEstoque(), new BigDecimal[]{itemEndereco.getQuantidade(), itemEndereco.getQuantidadeAnterior()}); | ||
225 | + } | ||
226 | + } | ||
140 | } | 227 | } |
141 | - | ||
142 | - super.save(atendimento); | ||
143 | - | ||
144 | - this.movimentoEstoqueService.gerarMovimentoAtendimento(atendimento); | ||
145 | - | ||
146 | } | 228 | } |
147 | - | ||
148 | } | 229 | } |
149 | - | ||
150 | - return new AtendimentoRequisicaoConsumo(); | 230 | + |
231 | + List<MaterialLocalEstoque> materiaisRejeitados = new ArrayList<MaterialLocalEstoque>(); | ||
232 | + | ||
233 | + for(Entry<MaterialLocalEstoque, BigDecimal[]> somaItem : somatorioQuantidadesAtentidasPorMaterial.entrySet()){ | ||
234 | + | ||
235 | + if(somaItem.getValue()[QUANTIDADE_ATENDIDA].compareTo(somaItem.getKey().getQuantidade().add(somaItem.getValue()[QUANTIDADE_ATENDIDA_ANTERIOR])) > 0){ | ||
236 | + materiaisRejeitados.add(materialLocalEstoqueService.find(somaItem.getKey().getId())); | ||
237 | + } | ||
238 | + } | ||
239 | + | ||
240 | + String mensagem = ""; | ||
241 | + if(!materiaisRejeitados.isEmpty()){ | ||
242 | + mensagem = internacionalizacaoService.getTranslate("ALMOXARIFADO.VALIDACAO.SOMA_ITENS_ATENDER_MAIOR_ESTOQUE", getIdioma()); | ||
243 | + mensagem += "<br/><br/><ul>"; | ||
244 | + for(MaterialLocalEstoque materialLocalEstoque: materiaisRejeitados){ | ||
245 | + mensagem += "<li>Material: <b>" + materialLocalEstoque.getMaterialEstoque().getMaterial().getDescricao() + "</b></li>"; | ||
246 | + mensagem += "<li>Endereço de estoque: <b>" + materialLocalEstoque.getEndereco().getDescricao() + "</b></li><br/>"; | ||
247 | + } | ||
248 | + mensagem += "</ul>"; | ||
249 | + } | ||
250 | + | ||
251 | + return new ValidacaoAtendimentoRequisicaoConsumoVH(materiaisRejeitados, mensagem); | ||
151 | } | 252 | } |
152 | 253 | ||
153 | /** | 254 | /** |
@@ -157,42 +258,66 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | @@ -157,42 +258,66 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | ||
157 | * @author wilker.machado | 258 | * @author wilker.machado |
158 | * | 259 | * |
159 | * @param entity | 260 | * @param entity |
261 | + * @param registroExcluido | ||
160 | * @return | 262 | * @return |
161 | */ | 263 | */ |
162 | - @Override | ||
163 | - public AtendimentoRequisicaoConsumo merge(AtendimentoRequisicaoConsumo entity) { | 264 | + public AtendimentoRequisicaoConsumo merge(AtendimentoRequisicaoConsumo entity, boolean registroExcluido) { |
164 | 265 | ||
165 | - if (this.movimentoEstoqueService.existeMovimentacaoDepois(entity, "atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumo.id")) { | 266 | + if (this.movimentoEstoqueService.existeMovimentacaoDepois(entity, "idClasseReferencia")) { |
166 | 267 | ||
167 | throw new BusinessException(VALIDACAO_ERRO_EDICAO_EXISTE_MOVIMENTACAO, CodigoErro.REGRA_NEGOCIO.getValue()); | 268 | throw new BusinessException(VALIDACAO_ERRO_EDICAO_EXISTE_MOVIMENTACAO, CodigoErro.REGRA_NEGOCIO.getValue()); |
168 | } | 269 | } |
270 | + | ||
271 | + if(!registroExcluido){ | ||
272 | + removerLancamentosPassados(entity); | ||
273 | + } | ||
169 | 274 | ||
170 | - if (!UtilColecao.isVazio(entity.getAtendimentos())) { | 275 | + entity.setRequisicaoConsumo(this.requisicaoConsumoService.find(entity.getRequisicaoConsumo().getId())); |
276 | + this.validarDataAtendimento(entity); | ||
277 | + | ||
278 | + this.montarEntidade(entity); | ||
171 | 279 | ||
172 | - for (AtendimentoRequisicaoConsumo atendimento : entity.getAtendimentos()) { | 280 | + this.atualizarStatusRquisicao(entity); |
173 | 281 | ||
174 | - this.montarEntidade(atendimento); | 282 | + super.merge(entity); |
175 | 283 | ||
176 | - this.validarDataAtendimento(atendimento); | 284 | + this.movimentoEstoqueService.gerarMovimentoAtendimento(entity); |
177 | 285 | ||
178 | - this.atualizarStatusRquisicao(atendimento); | 286 | + this.requisicaoConsumoService.atualizarSituacaoAtendimento(entity.getRequisicaoConsumo().getId(), false); |
179 | 287 | ||
180 | - AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo = super.merge(atendimento); | ||
181 | 288 | ||
182 | - //Apaga movimentos de estoque | ||
183 | - this.movimentoEstoqueService.removerMovimentosAtendimento(atendimentoRequisicaoConsumo); | 289 | + return entity; |
184 | 290 | ||
185 | - //Apaga movimentos contabeis | ||
186 | - for (AtendimentoRequisicaoConsumoItem atendimentoItem : atendimento.getAtendimentoRequisicaoConsumoItems()){ | ||
187 | - this.contaContabilMovimentoService.removerMovimentosAtendimento(atendimentoItem.getId()); | ||
188 | - } | ||
189 | - this.movimentoEstoqueService.gerarMovimentoAtendimento(atendimentoRequisicaoConsumo); | ||
190 | - } | 291 | + } |
191 | 292 | ||
293 | + private void removerLancamentosPassados(AtendimentoRequisicaoConsumo atendimento) { | ||
294 | + | ||
295 | + Collection<AtendimentoRequisicaoConsumoItem> listaItensTemp = this.find(atendimento.getId()).getAtendimentoRequisicaoConsumoItems(); | ||
296 | + for (AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem : listaItensTemp) { | ||
297 | + AtendimentoRequisicaoConsumoItem item = this.atendimentoRequisicaoConsumoItemService.find(atendimentoRequisicaoConsumoItem.getId()); | ||
298 | + | ||
299 | + for (AtendimentoRequisicaoConsumoItemFIFO atendimentoRequisicaoConsumoItemFIFO : item.getAtendimentoRequisicaoConsumoItemFIFOs()) { | ||
300 | + MaterialEstoqueFIFOItem materialEstoqueFIFOItem = this.materialEstoqueFIFOItemService.find(atendimentoRequisicaoConsumoItemFIFO.getMaterialEstoqueFIFOItem().getId()); | ||
301 | + materialEstoqueFIFOItem.setQuantidadeRestante(materialEstoqueFIFOItem.getQuantidadeRestante().add(atendimentoRequisicaoConsumoItemFIFO.getQuantidadeUtilizada())); | ||
302 | + materialEstoqueFIFOItem.setValorSobra(materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario())); | ||
303 | + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); | ||
304 | + } | ||
305 | + | ||
306 | + for (AtendimentoRequisicaoConsumoItemEndereco atendimentoRequisicaoConsumoItemEndereco : atendimentoRequisicaoConsumoItem.getAtendimentoRequisicaoConsumoItemEnderecos()) { | ||
307 | + MaterialLocalEstoque materialLocalEstoque = this.materialLocalEstoqueService.find(atendimentoRequisicaoConsumoItemEndereco.getMaterialLocalEstoque().getId()); | ||
308 | + materialLocalEstoque.setQuantidade(materialLocalEstoque.getQuantidade().add(atendimentoRequisicaoConsumoItemEndereco.getQuantidade())); | ||
309 | + this.materialLocalEstoqueService.merge(materialLocalEstoque); | ||
310 | + | ||
311 | + } | ||
312 | + | ||
313 | + Collection<MovimentoEstoque> movimentosEstoque = this.movimentoEstoqueService.findAllByClasseReferencia(this.dominioService.findByChaveAndCodigo(DominioMaterial.CLASSE_REFERENCIA, DominioMaterial.REFERENCIA_ATENDIMENTO_ALMOXARIFADO_ITEM), atendimentoRequisicaoConsumoItem.getId()); | ||
314 | + for (MovimentoEstoque movimentoEstoque : movimentosEstoque) { | ||
315 | + this.movimentoEstoqueService.remove(movimentoEstoque); | ||
316 | + } | ||
317 | + | ||
318 | + atendimentoRequisicaoConsumoFIFOService.removeList(new ArrayList(item.getAtendimentoRequisicaoConsumoItemFIFOs())); | ||
319 | + | ||
192 | } | 320 | } |
193 | - | ||
194 | - return new AtendimentoRequisicaoConsumo(); | ||
195 | - | ||
196 | } | 321 | } |
197 | 322 | ||
198 | /** | 323 | /** |
@@ -218,34 +343,8 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | @@ -218,34 +343,8 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | ||
218 | * @param entity | 343 | * @param entity |
219 | */ | 344 | */ |
220 | private void atualizarStatusRquisicao(AtendimentoRequisicaoConsumo entity) { | 345 | private void atualizarStatusRquisicao(AtendimentoRequisicaoConsumo entity) { |
221 | - | ||
222 | - Boolean atendidoCompletamente = Boolean.TRUE; | ||
223 | - | ||
224 | - for (AtendimentoRequisicaoConsumoItem atendimentoItem : entity.getAtendimentoRequisicaoConsumoItems()) { | ||
225 | - | ||
226 | - if(atendimentoItem.getQuantidade() == null){ | ||
227 | - continue; | ||
228 | - } | ||
229 | - | ||
230 | - if (atendimentoItem.getQuantidade().add(atendimentoItem.getRequisicaoConsumoItem().getQuantidadeAtendida()).doubleValue() != atendimentoItem.getRequisicaoConsumoItem().getQuantidade().doubleValue()) { | ||
231 | - | ||
232 | - atendidoCompletamente = Boolean.FALSE; | ||
233 | - } | ||
234 | - | ||
235 | - atendimentoItem.getRequisicaoConsumoItem().setQuantidadeAtendida(atendimentoItem.getRequisicaoConsumoItem().getQuantidadeAtendida().add(atendimentoItem.getQuantidade())); | ||
236 | - | ||
237 | - } | ||
238 | - | ||
239 | - if (atendidoCompletamente) { | ||
240 | - | ||
241 | - entity.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA)); | ||
242 | - | ||
243 | - } else { | ||
244 | - | ||
245 | - entity.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE)); | ||
246 | - | ||
247 | - } | ||
248 | - | 346 | + |
347 | + entity.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE)); | ||
249 | } | 348 | } |
250 | 349 | ||
251 | /** | 350 | /** |
@@ -257,58 +356,62 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | @@ -257,58 +356,62 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | ||
257 | */ | 356 | */ |
258 | private void montarEntidade(AtendimentoRequisicaoConsumo entity) { | 357 | private void montarEntidade(AtendimentoRequisicaoConsumo entity) { |
259 | 358 | ||
260 | - entity.setRequisicaoConsumo(this.requisicaoConsumoService.find(entity.getRequisicaoConsumo().getId())); | ||
261 | - | ||
262 | - List<AtendimentoRequisicaoConsumoItem> listaSemAtendimentosComQuantidadeZero = new ArrayList<AtendimentoRequisicaoConsumoItem>(); | ||
263 | - | ||
264 | - for (AtendimentoRequisicaoConsumoItem atendimentoItem : entity.getAtendimentoRequisicaoConsumoItems()) { | ||
265 | - if(atendimentoItem.getQuantidade() == null){ | ||
266 | - continue; | ||
267 | - }else{ | ||
268 | - listaSemAtendimentosComQuantidadeZero.add(atendimentoItem); | 359 | + if(entity.getRequisicaoConsumo().getRequisicaoConsumoItens().size() != entity.getAtendimentoRequisicaoConsumoItems().size()){ |
360 | + for (RequisicaoConsumoItem reqItem : entity.getRequisicaoConsumo().getRequisicaoConsumoItens()) { | ||
361 | + if(reqItem.getDataInativo() != null){ | ||
362 | + continue; | ||
363 | + } | ||
364 | + boolean addItem = false; | ||
365 | + for (AtendimentoRequisicaoConsumoItem atendReqItem : entity.getAtendimentoRequisicaoConsumoItems()) { | ||
366 | + if(atendReqItem.getMaterial().getId().doubleValue() != reqItem.getMaterialConsumo().getId().doubleValue()){ | ||
367 | + addItem = true; | ||
368 | + }else{ | ||
369 | + addItem = false; | ||
370 | + break; | ||
371 | + } | ||
372 | + } | ||
373 | + if(addItem){ | ||
374 | + AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem = new AtendimentoRequisicaoConsumoItem(); | ||
375 | + atendimentoRequisicaoConsumoItem.setMaterial(reqItem.getMaterialConsumo()); | ||
376 | + atendimentoRequisicaoConsumoItem.setRequisicaoConsumoItem(reqItem); | ||
377 | + | ||
378 | + AtendimentoRequisicaoConsumoItemEndereco itemEndereco = new AtendimentoRequisicaoConsumoItemEndereco(); | ||
379 | + itemEndereco.setMaterialLocalEstoque(this.materialLocalEstoqueService.buscarLocaisEstoquePorIdMaterial(reqItem.getMaterialConsumo().getId()).get(0)); | ||
380 | + List<AtendimentoRequisicaoConsumoItemEndereco> endItem = new ArrayList<>(); | ||
381 | + endItem.add(itemEndereco); | ||
382 | + atendimentoRequisicaoConsumoItem.setAtendimentoRequisicaoConsumoItemEnderecos(endItem); | ||
383 | + entity.getAtendimentoRequisicaoConsumoItems().add(atendimentoRequisicaoConsumoItem); | ||
384 | + } | ||
269 | } | 385 | } |
270 | } | 386 | } |
271 | - | ||
272 | - entity.setAtendimentoRequisicaoConsumoItems(new ArrayList<AtendimentoRequisicaoConsumoItem>()); | ||
273 | - | ||
274 | - for (AtendimentoRequisicaoConsumoItem atendimentoItem : listaSemAtendimentosComQuantidadeZero) { | 387 | + |
388 | + boolean todosItensSemQuantidade = true; | ||
389 | + for (AtendimentoRequisicaoConsumoItem atendimentoItem : entity.getAtendimentoRequisicaoConsumoItems()) { | ||
390 | + | ||
391 | + atendimentoItem.setDataInativo(null); | ||
392 | + RequisicaoConsumoItem requisicaoConsumoItem = this.requisicaoConsumoItemService.find(atendimentoItem.getRequisicaoConsumoItem().getId()); | ||
393 | + requisicaoConsumoItem.setQuantidadeAtendida(atendimentoItem.getQuantidade()); | ||
394 | + | ||
275 | atendimentoItem.setAtendimentoRequisicaoConsumo(entity); | 395 | atendimentoItem.setAtendimentoRequisicaoConsumo(entity); |
276 | atendimentoItem.setOrganizacao(getUsuario().getOrganizacao()); | 396 | atendimentoItem.setOrganizacao(getUsuario().getOrganizacao()); |
277 | - atendimentoItem.setRequisicaoConsumoItem(this.requisicaoConsumoItemService.find(atendimentoItem.getRequisicaoConsumoItem().getId())); | ||
278 | - | ||
279 | - atendimentoItem.setMaterial(this.materialConsumoService.find(atendimentoItem.getMaterial().getId())); | ||
280 | - BigDecimal qtdMaterialEmEstoque = this.materialConsumoService.getQuantidadeAtualMaterial(atendimentoItem.getMaterial().getId(), getUsuario().getOrganizacao().getId()); | ||
281 | - | ||
282 | - if (!atendimentoItem.isNew()) { | ||
283 | - | ||
284 | - AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItemOld = this.atendimentoRequisicaoConsumoItemService.find(atendimentoItem.getId()); | ||
285 | - | ||
286 | - atendimentoItem.getRequisicaoConsumoItem().setQuantidadeAtendida(atendimentoItem.getRequisicaoConsumoItem().getQuantidadeAtendida().subtract(atendimentoRequisicaoConsumoItemOld.getQuantidade())); | ||
287 | - | ||
288 | - qtdMaterialEmEstoque = qtdMaterialEmEstoque.add(atendimentoRequisicaoConsumoItemOld.getQuantidade()); | ||
289 | - | ||
290 | - } | ||
291 | - if (!UtilObjeto.isReferencia(qtdMaterialEmEstoque) || qtdMaterialEmEstoque.compareTo(atendimentoItem.getQuantidade()) < 0) { | ||
292 | - | ||
293 | - throw new BusinessException(VALIDACAO_QUANTIDADE_A_ATENDER_SUPERIOR_A_QTD_ESTOQUE, CodigoErro.REGRA_NEGOCIO.getValue(), atendimentoItem.getMaterial().getDescricao()); | ||
294 | - | ||
295 | - } | ||
296 | - | ||
297 | - if (atendimentoItem.getRequisicaoConsumoItem().getQuantidade().compareTo(atendimentoItem.getQuantidade().add(atendimentoItem.getRequisicaoConsumoItem().getQuantidadeAtendida())) < 0) { | ||
298 | - | ||
299 | - throw new BusinessException(VALIDACAO_QUANTIDADE_ATENDIDA_E_QUANTIDADE_SUPERIOR, CodigoErro.REGRA_NEGOCIO.getValue()); | ||
300 | - | 397 | + atendimentoItem.setRequisicaoConsumoItem(requisicaoConsumoItem); |
398 | + | ||
399 | + for (AtendimentoRequisicaoConsumoItemEndereco atendimentoRequisicaoConsumoItemEndereco : atendimentoItem.getAtendimentoRequisicaoConsumoItemEnderecos()) { | ||
400 | + | ||
401 | + atendimentoRequisicaoConsumoItemEndereco.setAtendimentoRequisicaoConsumoItem(atendimentoItem); | ||
402 | + if(atendimentoRequisicaoConsumoItemEndereco.getQuantidade() == null || atendimentoRequisicaoConsumoItemEndereco.getQuantidade().compareTo(new BigDecimal("0")) == 0){ | ||
403 | + atendimentoRequisicaoConsumoItemEndereco.setQuantidade(new BigDecimal(0)); | ||
404 | + }else{ | ||
405 | + todosItensSemQuantidade = false; | ||
406 | + } | ||
407 | + | ||
301 | } | 408 | } |
302 | - | ||
303 | -// if (!UtilObjeto.isReferencia(atendimentoItem.getQuantidade()) || atendimentoItem.getQuantidade().doubleValue() <= 0) { | ||
304 | -// | ||
305 | -// throw new BusinessException(VALIDACAO_QUANTIDADE_ZERADA_NEGATIVA, CodigoErro.REGRA_NEGOCIO.getValue(), atendimentoItem.getMaterial().getDescricao()); | ||
306 | -// } | ||
307 | - | ||
308 | - entity.getAtendimentoRequisicaoConsumoItems().add(atendimentoItem); | ||
309 | - | 409 | + |
410 | + this.requisicaoConsumoItemService.merge(requisicaoConsumoItem); | ||
411 | + } | ||
412 | + if(todosItensSemQuantidade){ | ||
413 | + throw new BusinessException("ALMOXARIFADO.VALIDACAO.TODAS_QUANTIDADE_ATENDIDA_EM_BRANCO", CodigoErro.REGRA_NEGOCIO.getValue()); | ||
310 | } | 414 | } |
311 | - | ||
312 | } | 415 | } |
313 | 416 | ||
314 | /** | 417 | /** |
@@ -316,42 +419,24 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | @@ -316,42 +419,24 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | ||
316 | */ | 419 | */ |
317 | @Override | 420 | @Override |
318 | public boolean remove(AtendimentoRequisicaoConsumo entity) { | 421 | public boolean remove(AtendimentoRequisicaoConsumo entity) { |
422 | + | ||
423 | + entity.setRequisicaoConsumo(this.requisicaoConsumoService.find(entity.getRequisicaoConsumo().getId())); | ||
319 | 424 | ||
320 | this.validarDataAtendimento(entity); | 425 | this.validarDataAtendimento(entity); |
321 | - | ||
322 | - if (this.movimentoEstoqueService.existeMovimentacaoDepois(entity, "atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumo.id")) { | ||
323 | - | ||
324 | - throw new BusinessException(VALIDACAO_ERRO_EXCLUSAO_EXISTE_MOVIMENTACAO, CodigoErro.REGRA_NEGOCIO.getValue()); | ||
325 | - } | ||
326 | - | ||
327 | - Boolean prontaParaAtendimento = Boolean.TRUE; | 426 | + |
427 | + removerLancamentosPassados(entity); | ||
328 | 428 | ||
329 | for (AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem : entity.getAtendimentoRequisicaoConsumoItems()) { | 429 | for (AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem : entity.getAtendimentoRequisicaoConsumoItems()) { |
330 | 430 | ||
331 | - this.atendimentoRequisicaoConsumoItemService.superRemove(atendimentoRequisicaoConsumoItem); | ||
332 | - | ||
333 | atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().setQuantidadeAtendida(atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getQuantidadeAtendida().subtract(atendimentoRequisicaoConsumoItem.getQuantidade())); | 431 | atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().setQuantidadeAtendida(atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getQuantidadeAtendida().subtract(atendimentoRequisicaoConsumoItem.getQuantidade())); |
432 | + this.atendimentoRequisicaoConsumoItemService.superRemove(atendimentoRequisicaoConsumoItem); | ||
334 | 433 | ||
335 | - if (atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getQuantidadeAtendida().compareTo(BigDecimal.valueOf(0)) == 0) { | ||
336 | - | ||
337 | - prontaParaAtendimento = Boolean.FALSE; | ||
338 | - } | ||
339 | 434 | ||
340 | - //Remove movimentos contacontabil | ||
341 | - this.contaContabilMovimentoService.removerMovimentosAtendimento(atendimentoRequisicaoConsumoItem.getId()); | ||
342 | } | 435 | } |
343 | 436 | ||
344 | - if (prontaParaAtendimento) { | 437 | + entity.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_PRONTA_PARA_ATENDIMENTO)); |
345 | 438 | ||
346 | - entity.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_PRONTA_PARA_ATENDIMENTO)); | ||
347 | - | ||
348 | - } else { | ||
349 | - | ||
350 | - entity.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE)); | ||
351 | - } | ||
352 | - | ||
353 | - //Remove movimentos estoque | ||
354 | - this.movimentoEstoqueService.removerMovimentosAtendimento(entity); | 439 | + this.requisicaoConsumoService.atualizarSituacaoAtendimento(entity.getRequisicaoConsumo().getId(), false); |
355 | 440 | ||
356 | return super.remove(entity); | 441 | return super.remove(entity); |
357 | } | 442 | } |
@@ -421,20 +506,7 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | @@ -421,20 +506,7 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | ||
421 | */ | 506 | */ |
422 | private void configurarNumeroAtendimento(AtendimentoRequisicaoConsumo entity) { | 507 | private void configurarNumeroAtendimento(AtendimentoRequisicaoConsumo entity) { |
423 | 508 | ||
424 | - if(entity.getOrganizacao() == null && entity.getRequisicaoConsumo() != null && entity.getRequisicaoConsumo().getOrganizacao() != null){ | ||
425 | - entity.setOrganizacao(entity.getRequisicaoConsumo().getOrganizacao()); | ||
426 | - } | ||
427 | - | ||
428 | - AtendimentoRequisicaoConsumo ultimoRegistro = | ||
429 | - (AtendimentoRequisicaoConsumo) atendimentoRequisicaoConsumoDao.buscarUltimoRegistroComOrdenadoParametrizada("numeroAtendimento", entity.getOrganizacao().getId()); | ||
430 | - | ||
431 | - Long sequencial = null; | ||
432 | - if (UtilObjeto.isReferencia(ultimoRegistro)) { | ||
433 | - sequencial = ultimoRegistro.getNumeroAtendimento() == null ? null : Long.parseLong(ultimoRegistro.getNumeroAtendimento()); | ||
434 | - } | ||
435 | - String codigo = configuracaoParametroSistemaService.gerarNumeroIdentificacao(sequencial, entity.getOrganizacao()); | ||
436 | - | ||
437 | - entity.setNumeroAtendimento(codigo); | 509 | + entity.setNumeroAtendimento(entity.getRequisicaoConsumo().getNumeroRequisicao()); |
438 | } | 510 | } |
439 | 511 | ||
440 | @Override | 512 | @Override |
@@ -453,7 +525,34 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | @@ -453,7 +525,34 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< | ||
453 | arrayLong[i] = Long.parseLong(array[i]); | 525 | arrayLong[i] = Long.parseLong(array[i]); |
454 | } | 526 | } |
455 | } | 527 | } |
456 | - for (Long idRequisicao : arrayLong) { | 528 | + if(arrayLong != null){ |
529 | + for (Long idRequisicao : arrayLong) { | ||
530 | + List<AtendimentoRequisicaoConsumo> listaAtendimentoPorRequisicaoConsumo = this.listaAtendimentoPorRequisicaoConsumo(idRequisicao, idOrganizacao); | ||
531 | + for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) { | ||
532 | + this.remove(atendimentoRequisicaoConsumo); | ||
533 | + } | ||
534 | + } | ||
535 | + } | ||
536 | + return true; | ||
537 | + } | ||
538 | + | ||
539 | + @Override | ||
540 | + public Boolean finalizarRequisicoes(List<Long> idsRequisicao, Long idOrganizacao) { | ||
541 | + for (Long idRequisicao : idsRequisicao) { | ||
542 | + List<AtendimentoRequisicaoConsumo> listaAtendimentoPorRequisicaoConsumo = this.listaAtendimentoPorRequisicaoConsumo(idRequisicao, idOrganizacao); | ||
543 | + for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) { | ||
544 | + atendimentoRequisicaoConsumo.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_FINALIZADA)); | ||
545 | + atendimentoRequisicaoConsumo.getRequisicaoConsumo().setDataFinalizacaoAtendimento(UtilDate.getDataAtualCalendar()); | ||
546 | + super.merge(atendimentoRequisicaoConsumo); | ||
547 | + this.requisicaoConsumoService.atualizarSituacaoAtendimento(atendimentoRequisicaoConsumo.getRequisicaoConsumo().getId(), false); | ||
548 | + } | ||
549 | + } | ||
550 | + return true; | ||
551 | + } | ||
552 | + | ||
553 | + @Override | ||
554 | + public Boolean excluirAtendimentos(List<Long> idsRequisicao, Long idOrganizacao) { | ||
555 | + for (Long idRequisicao : idsRequisicao) { | ||
457 | List<AtendimentoRequisicaoConsumo> listaAtendimentoPorRequisicaoConsumo = this.listaAtendimentoPorRequisicaoConsumo(idRequisicao, idOrganizacao); | 556 | List<AtendimentoRequisicaoConsumo> listaAtendimentoPorRequisicaoConsumo = this.listaAtendimentoPorRequisicaoConsumo(idRequisicao, idOrganizacao); |
458 | for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) { | 557 | for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) { |
459 | this.remove(atendimentoRequisicaoConsumo); | 558 | this.remove(atendimentoRequisicaoConsumo); |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/ConfiguracaoNotificacaoRessuprimentoServiceImpl.java
@@ -321,13 +321,17 @@ public class ConfiguracaoNotificacaoRessuprimentoServiceImpl extends GenericServ | @@ -321,13 +321,17 @@ public class ConfiguracaoNotificacaoRessuprimentoServiceImpl extends GenericServ | ||
321 | Date previousExecution = cron.getTimeAfter(date); | 321 | Date previousExecution = cron.getTimeAfter(date); |
322 | long timeMili = previousExecution.getTime() - date.getTime(); | 322 | long timeMili = previousExecution.getTime() - date.getTime(); |
323 | if(timeMili <= 0 || timeMili > (horasDia * minutoHora * segundoMinuto * milisegundos)){ | 323 | if(timeMili <= 0 || timeMili > (horasDia * minutoHora * segundoMinuto * milisegundos)){ |
324 | - timeMili = 4 * minutoHora * segundoMinuto * milisegundos; | 324 | + timeMili = getMilisegundosCron(minutoHora, segundoMinuto, milisegundos); |
325 | } | 325 | } |
326 | entity.setMilissegundoCron(timeMili + (5 * 1000)); | 326 | entity.setMilissegundoCron(timeMili + (5 * 1000)); |
327 | } catch (ParseException e) { | 327 | } catch (ParseException e) { |
328 | - entity.setMilissegundoCron(4l * minutoHora * segundoMinuto * milisegundos); | 328 | + entity.setMilissegundoCron(getMilisegundosCron(minutoHora, segundoMinuto, milisegundos)); |
329 | } | 329 | } |
330 | } | 330 | } |
331 | + | ||
332 | + private long getMilisegundosCron(int minutoHora, int segundoMinuto, int milisegundos){ | ||
333 | + return new Long((4 * minutoHora * segundoMinuto * milisegundos)); | ||
334 | + } | ||
331 | 335 | ||
332 | /** | 336 | /** |
333 | * <p> | 337 | * <p> |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/EntradaAlmoxarifadoItemServiceImpl.java
@@ -15,6 +15,7 @@ import br.com.centralit.api.model.ContaContabilMovimento; | @@ -15,6 +15,7 @@ import br.com.centralit.api.model.ContaContabilMovimento; | ||
15 | import br.com.centralit.api.model.EntradaAlmoxarifadoItem; | 15 | import br.com.centralit.api.model.EntradaAlmoxarifadoItem; |
16 | import br.com.centralit.api.model.EstruturaOrganizacional; | 16 | import br.com.centralit.api.model.EstruturaOrganizacional; |
17 | import br.com.centralit.api.model.MaterialConsumo; | 17 | import br.com.centralit.api.model.MaterialConsumo; |
18 | +import br.com.centralit.api.model.MaterialEstoqueFIFOItem; | ||
18 | import br.com.centralit.api.model.MaterialEstoque; | 19 | import br.com.centralit.api.model.MaterialEstoque; |
19 | import br.com.centralit.api.model.MovimentoEstoque; | 20 | import br.com.centralit.api.model.MovimentoEstoque; |
20 | import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; | 21 | import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; |
@@ -22,6 +23,7 @@ import br.com.centralit.api.service.ContaContabilMovimentoAlmoxarifadoService; | @@ -22,6 +23,7 @@ import br.com.centralit.api.service.ContaContabilMovimentoAlmoxarifadoService; | ||
22 | import br.com.centralit.api.service.EntradaAlmoxarifadoItemService; | 23 | import br.com.centralit.api.service.EntradaAlmoxarifadoItemService; |
23 | import br.com.centralit.api.service.EstruturaOrganizacionalService; | 24 | import br.com.centralit.api.service.EstruturaOrganizacionalService; |
24 | import br.com.centralit.api.service.MaterialConsumoService; | 25 | import br.com.centralit.api.service.MaterialConsumoService; |
26 | +import br.com.centralit.api.service.MaterialEstoqueFIFOItemService; | ||
25 | import br.com.centralit.api.service.MaterialEstoqueService; | 27 | import br.com.centralit.api.service.MaterialEstoqueService; |
26 | import br.com.centralit.api.service.MovimentoEstoqueService; | 28 | import br.com.centralit.api.service.MovimentoEstoqueService; |
27 | import br.com.centralit.framework.exception.BusinessException; | 29 | import br.com.centralit.framework.exception.BusinessException; |
@@ -78,6 +80,8 @@ public class EntradaAlmoxarifadoItemServiceImpl extends GenericServiceImpl<Entra | @@ -78,6 +80,8 @@ public class EntradaAlmoxarifadoItemServiceImpl extends GenericServiceImpl<Entra | ||
78 | 80 | ||
79 | @Autowired | 81 | @Autowired |
80 | private ContaContabilMovimentoAlmoxarifadoService contaContabilMovimentoAlmoxarifadoService; | 82 | private ContaContabilMovimentoAlmoxarifadoService contaContabilMovimentoAlmoxarifadoService; |
83 | + @Autowired | ||
84 | + private MaterialEstoqueFIFOItemService materialEstoqueFIFOItemService; | ||
81 | 85 | ||
82 | @Autowired | 86 | @Autowired |
83 | private MaterialEstoqueService materialEstoqueService; | 87 | private MaterialEstoqueService materialEstoqueService; |
@@ -204,6 +208,37 @@ public class EntradaAlmoxarifadoItemServiceImpl extends GenericServiceImpl<Entra | @@ -204,6 +208,37 @@ public class EntradaAlmoxarifadoItemServiceImpl extends GenericServiceImpl<Entra | ||
204 | public Collection<EntradaAlmoxarifadoItem> obterEntradaItemComSaldoPorMaterial(Long idMaterial) { | 208 | public Collection<EntradaAlmoxarifadoItem> obterEntradaItemComSaldoPorMaterial(Long idMaterial) { |
205 | return this.entradaAlmoxarifadoItemDao.obterEntradaItemComSaldoPorMaterial(idMaterial); | 209 | return this.entradaAlmoxarifadoItemDao.obterEntradaItemComSaldoPorMaterial(idMaterial); |
206 | } | 210 | } |
211 | + | ||
212 | + public BigDecimal getValorFIFOPorMaterial(MaterialConsumo materialConsumo, BigDecimal quantidadeMovimentada) { | ||
213 | + BigDecimal retorno = BigDecimal.ZERO; | ||
214 | + | ||
215 | + List<MaterialEstoqueFIFOItem> fifOsByMaterial = this.materialEstoqueFIFOItemService.findFIFOsByMaterial(materialConsumo.getId()); | ||
216 | + | ||
217 | + for (MaterialEstoqueFIFOItem materialEstoqueFIFOItem : fifOsByMaterial) { | ||
218 | + | ||
219 | + if (materialEstoqueFIFOItem.getQuantidadeRestante().compareTo(quantidadeMovimentada) > 0) { | ||
220 | + retorno = retorno.add(quantidadeMovimentada.multiply(materialEstoqueFIFOItem.getValorUnitario())); | ||
221 | + materialEstoqueFIFOItem.setQuantidadeRestante(materialEstoqueFIFOItem.getQuantidadeRestante().subtract(quantidadeMovimentada)); | ||
222 | + materialEstoqueFIFOItem.setValorSobra(materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario())); | ||
223 | + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); | ||
224 | + break; | ||
225 | + | ||
226 | + } else if (materialEstoqueFIFOItem.getQuantidadeRestante().compareTo(quantidadeMovimentada) == 0) { | ||
227 | + retorno = retorno.add(materialEstoqueFIFOItem.getValorSobra()).add(materialEstoqueFIFOItem.getValorSobra()); | ||
228 | + materialEstoqueFIFOItem.setQuantidadeRestante(materialEstoqueFIFOItem.getQuantidadeRestante().subtract(quantidadeMovimentada)); | ||
229 | + materialEstoqueFIFOItem.setValorSobra(materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario())); | ||
230 | + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); | ||
231 | + break; | ||
232 | + | ||
233 | + } else { | ||
234 | + retorno = retorno.add((materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario()))).add(materialEstoqueFIFOItem.getValorSobra()); | ||
235 | + quantidadeMovimentada = quantidadeMovimentada.subtract(materialEstoqueFIFOItem.getQuantidadeRestante()); | ||
236 | + materialEstoqueFIFOItem.setQuantidadeRestante(BigDecimal.ZERO); | ||
237 | + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); | ||
238 | + } | ||
239 | + } | ||
240 | + return retorno; | ||
241 | + } | ||
207 | 242 | ||
208 | /** | 243 | /** |
209 | * {@inheritDoc} | 244 | * {@inheritDoc} |
@@ -213,24 +248,29 @@ public class EntradaAlmoxarifadoItemServiceImpl extends GenericServiceImpl<Entra | @@ -213,24 +248,29 @@ public class EntradaAlmoxarifadoItemServiceImpl extends GenericServiceImpl<Entra | ||
213 | public BigDecimal realizaMovimentoSaida(MaterialConsumo materialConsumo, BigDecimal quantidadeMovimentada) { | 248 | public BigDecimal realizaMovimentoSaida(MaterialConsumo materialConsumo, BigDecimal quantidadeMovimentada) { |
214 | BigDecimal retorno = BigDecimal.ZERO; | 249 | BigDecimal retorno = BigDecimal.ZERO; |
215 | 250 | ||
216 | - /*Collection<EntradaAlmoxarifadoItem> entradaAlmoxarifadoItems = this.obterEntradaItemComSaldoPorMaterial(materialConsumo.getId()); | 251 | + /* Collection<EntradaAlmoxarifadoItem> entradaAlmoxarifadoItems = this.obterEntradaItemComSaldoPorMaterial(materialConsumo.getId()); |
217 | 252 | ||
218 | for (EntradaAlmoxarifadoItem itemEntrada : entradaAlmoxarifadoItems) { | 253 | for (EntradaAlmoxarifadoItem itemEntrada : entradaAlmoxarifadoItems) { |
219 | - if (itemEntrada.getQuantidadeSaldo().compareTo(quantidadeMovimentada) > 0) { | 254 | + |
255 | + | ||
256 | + if (itemEntrada.getMaterialLocalEstoque().getQuantidade().compareTo(quantidadeMovimentada) > 0) { | ||
220 | retorno = retorno.add(quantidadeMovimentada.multiply(itemEntrada.getValorUnitario())); | 257 | retorno = retorno.add(quantidadeMovimentada.multiply(itemEntrada.getValorUnitario())); |
221 | - itemEntrada.setQuantidadeSaldo(itemEntrada.getQuantidadeSaldo().subtract(quantidadeMovimentada)); | 258 | + itemEntrada.getMaterialLocalEstoque().setQuantidade(itemEntrada.getMaterialLocalEstoque().getQuantidade().subtract(quantidadeMovimentada)); |
222 | this.save(itemEntrada); | 259 | this.save(itemEntrada); |
223 | break; | 260 | break; |
224 | - } else if (itemEntrada.getQuantidadeSaldo().compareTo(quantidadeMovimentada) == 0) { | 261 | + |
262 | + } else if (itemEntrada.getMaterialLocalEstoque().getQuantidade().compareTo(quantidadeMovimentada) == 0) { | ||
225 | retorno = retorno.add((quantidadeMovimentada.multiply(itemEntrada.getValorUnitario())).add(itemEntrada.getValorSobra())); | 263 | retorno = retorno.add((quantidadeMovimentada.multiply(itemEntrada.getValorUnitario())).add(itemEntrada.getValorSobra())); |
226 | - itemEntrada.setQuantidadeSaldo(itemEntrada.getQuantidadeSaldo().subtract(quantidadeMovimentada)); | 264 | + itemEntrada.getMaterialLocalEstoque().setQuantidade(itemEntrada.getMaterialLocalEstoque().getQuantidade().subtract(quantidadeMovimentada)); |
227 | this.save(itemEntrada); | 265 | this.save(itemEntrada); |
228 | break; | 266 | break; |
267 | + | ||
229 | } else { | 268 | } else { |
230 | - retorno = retorno.add((itemEntrada.getQuantidadeSaldo().multiply(itemEntrada.getValorUnitario())).add(itemEntrada.getValorSobra())); | ||
231 | - quantidadeMovimentada = quantidadeMovimentada.subtract(itemEntrada.getQuantidadeSaldo()); | ||
232 | - itemEntrada.setQuantidadeSaldo(BigDecimal.ZERO); | 269 | + retorno = retorno.add((itemEntrada.getMaterialLocalEstoque().getQuantidade().multiply(itemEntrada.getValorUnitario())).add(itemEntrada.getValorSobra())); |
270 | + quantidadeMovimentada = quantidadeMovimentada.subtract(itemEntrada.getMaterialLocalEstoque().getQuantidade()); | ||
271 | + itemEntrada.getMaterialLocalEstoque().setQuantidade(BigDecimal.ZERO); | ||
233 | this.save(itemEntrada); | 272 | this.save(itemEntrada); |
273 | + | ||
234 | } | 274 | } |
235 | }*/ | 275 | }*/ |
236 | 276 |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialEstoqueFIFOItemServiceImpl.java
1 | package br.com.centralit.api.service.impl; | 1 | package br.com.centralit.api.service.impl; |
2 | 2 | ||
3 | +import java.util.List; | ||
4 | + | ||
3 | import org.springframework.beans.factory.annotation.Autowired; | 5 | import org.springframework.beans.factory.annotation.Autowired; |
4 | import org.springframework.beans.factory.annotation.Qualifier; | 6 | import org.springframework.beans.factory.annotation.Qualifier; |
5 | import org.springframework.stereotype.Service; | 7 | import org.springframework.stereotype.Service; |
@@ -32,4 +34,9 @@ public class MaterialEstoqueFIFOItemServiceImpl extends GenericServiceImpl<Mater | @@ -32,4 +34,9 @@ public class MaterialEstoqueFIFOItemServiceImpl extends GenericServiceImpl<Mater | ||
32 | return super.remove(fifoItem); | 34 | return super.remove(fifoItem); |
33 | } | 35 | } |
34 | 36 | ||
37 | + @Override | ||
38 | + public List<MaterialEstoqueFIFOItem> findFIFOsByMaterial(long idMaterial) { | ||
39 | + return materialEstoqueFIFOItemDao.findFIFOsByMaterial(idMaterial); | ||
40 | + } | ||
41 | + | ||
35 | } | 42 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialLocalEstoqueServiceImpl.java
@@ -68,9 +68,14 @@ public class MaterialLocalEstoqueServiceImpl extends GenericServiceImpl<Material | @@ -68,9 +68,14 @@ public class MaterialLocalEstoqueServiceImpl extends GenericServiceImpl<Material | ||
68 | }else{ | 68 | }else{ |
69 | if(entity.getLocalPrincipal()){ | 69 | if(entity.getLocalPrincipal()){ |
70 | for (MaterialLocalEstoque materialLocalEstoque : locaisParMaterial) { | 70 | for (MaterialLocalEstoque materialLocalEstoque : locaisParMaterial) { |
71 | - if(materialLocalEstoque.getId() != entity.getId()){ | 71 | + if(entity.getId() != null){ |
72 | + if(materialLocalEstoque.getId().doubleValue() != entity.getId().doubleValue()){ | ||
73 | + materialLocalEstoque.setLocalPrincipal(Boolean.FALSE); | ||
74 | + this.merge(materialLocalEstoque); | ||
75 | + } | ||
76 | + }else{ | ||
72 | materialLocalEstoque.setLocalPrincipal(Boolean.FALSE); | 77 | materialLocalEstoque.setLocalPrincipal(Boolean.FALSE); |
73 | - this.merge(materialLocalEstoque); | 78 | + this.merge(materialLocalEstoque); |
74 | } | 79 | } |
75 | } | 80 | } |
76 | } | 81 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java
@@ -2,6 +2,7 @@ package br.com.centralit.api.service.impl; | @@ -2,6 +2,7 @@ package br.com.centralit.api.service.impl; | ||
2 | 2 | ||
3 | import java.math.BigDecimal; | 3 | import java.math.BigDecimal; |
4 | import java.math.RoundingMode; | 4 | import java.math.RoundingMode; |
5 | +import java.sql.Timestamp; | ||
5 | import java.util.ArrayList; | 6 | import java.util.ArrayList; |
6 | import java.util.Calendar; | 7 | import java.util.Calendar; |
7 | import java.util.Collection; | 8 | import java.util.Collection; |
@@ -19,6 +20,8 @@ import org.springframework.validation.Validator; | @@ -19,6 +20,8 @@ import org.springframework.validation.Validator; | ||
19 | import br.com.centralit.api.dao.MovimentoEstoqueDao; | 20 | import br.com.centralit.api.dao.MovimentoEstoqueDao; |
20 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; | 21 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; |
21 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; | 22 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; |
23 | +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemEndereco; | ||
24 | +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItemFIFO; | ||
22 | import br.com.centralit.api.model.BaixaAlmoxarifado; | 25 | import br.com.centralit.api.model.BaixaAlmoxarifado; |
23 | import br.com.centralit.api.model.BaixaAlmoxarifadoItem; | 26 | import br.com.centralit.api.model.BaixaAlmoxarifadoItem; |
24 | import br.com.centralit.api.model.Devolucao; | 27 | import br.com.centralit.api.model.Devolucao; |
@@ -33,6 +36,7 @@ import br.com.centralit.api.model.MaterialEstoque; | @@ -33,6 +36,7 @@ import br.com.centralit.api.model.MaterialEstoque; | ||
33 | import br.com.centralit.api.model.MaterialEstoqueFIFOItem; | 36 | import br.com.centralit.api.model.MaterialEstoqueFIFOItem; |
34 | import br.com.centralit.api.model.MaterialLocalEstoque; | 37 | import br.com.centralit.api.model.MaterialLocalEstoque; |
35 | import br.com.centralit.api.model.MovimentoEstoque; | 38 | import br.com.centralit.api.model.MovimentoEstoque; |
39 | +import br.com.centralit.api.service.AtendimentoRequisicaoConsumoFIFOService; | ||
36 | import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService; | 40 | import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService; |
37 | import br.com.centralit.api.service.BaixaAlmoxarifadoItemService; | 41 | import br.com.centralit.api.service.BaixaAlmoxarifadoItemService; |
38 | import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; | 42 | import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; |
@@ -54,6 +58,7 @@ import br.com.centralit.framework.model.Usuario; | @@ -54,6 +58,7 @@ import br.com.centralit.framework.model.Usuario; | ||
54 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit; | 58 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit; |
55 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; | 59 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; |
56 | import br.com.centralit.framework.util.UtilColecao; | 60 | import br.com.centralit.framework.util.UtilColecao; |
61 | +import br.com.centralit.framework.util.UtilDate; | ||
57 | import br.com.centralit.framework.util.UtilObjeto; | 62 | import br.com.centralit.framework.util.UtilObjeto; |
58 | 63 | ||
59 | /** | 64 | /** |
@@ -89,9 +94,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -89,9 +94,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
89 | 94 | ||
90 | private static int SCALE_DIVISOR_DECIMAL = 4; | 95 | private static int SCALE_DIVISOR_DECIMAL = 4; |
91 | 96 | ||
92 | - private static final String ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_ATENDIMENTO_REQUISICAO_CONSUMO_DATA_ATENDIMENTO = "atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumo.dataAtendimento"; | 97 | + private static final int ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_ATENDIMENTO_REQUISICAO_CONSUMO_DATA_ATENDIMENTO = 0; |
93 | 98 | ||
94 | - private static final String ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE = "atendimentoRequisicaoConsumoItem.quantidade"; | 99 | + private static final int ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE = 1; |
95 | 100 | ||
96 | /** Atributo movimentoEstoqueDao. */ | 101 | /** Atributo movimentoEstoqueDao. */ |
97 | private MovimentoEstoqueDao movimentoEstoqueDao; | 102 | private MovimentoEstoqueDao movimentoEstoqueDao; |
@@ -140,6 +145,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -140,6 +145,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
140 | @Autowired | 145 | @Autowired |
141 | private MaterialEstoqueFIFOItemService materialEstoqueFIFOItemService; | 146 | private MaterialEstoqueFIFOItemService materialEstoqueFIFOItemService; |
142 | 147 | ||
148 | + @Autowired | ||
149 | + private AtendimentoRequisicaoConsumoFIFOService atendimentoRequisicaoConsumoFIFOService; | ||
150 | + | ||
143 | 151 | ||
144 | /** | 152 | /** |
145 | * Responsável pela criação de novas instâncias desta classe. | 153 | * Responsável pela criação de novas instâncias desta classe. |
@@ -373,6 +381,10 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -373,6 +381,10 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
373 | } | 381 | } |
374 | } else if (movimentoEstoque.getDominioClasseReferencia().getCodigo().equals(DominioMaterial.REFERENCIA_ATENDIMENTO_ALMOXARIFADO_ITEM)) { | 382 | } else if (movimentoEstoque.getDominioClasseReferencia().getCodigo().equals(DominioMaterial.REFERENCIA_ATENDIMENTO_ALMOXARIFADO_ITEM)) { |
375 | 383 | ||
384 | + | ||
385 | + | ||
386 | + | ||
387 | + | ||
376 | throw new NotImplementedException(); | 388 | throw new NotImplementedException(); |
377 | } else if (movimentoEstoque.getDominioClasseReferencia().getCodigo().equals(DominioMaterial.REFERENCIA_BAIXA_ALMOXARIFADO_ITEM)) { | 389 | } else if (movimentoEstoque.getDominioClasseReferencia().getCodigo().equals(DominioMaterial.REFERENCIA_BAIXA_ALMOXARIFADO_ITEM)) { |
378 | 390 | ||
@@ -414,36 +426,82 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -414,36 +426,82 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
414 | List<MovimentoEstoque> movimentos = new ArrayList<MovimentoEstoque>(); | 426 | List<MovimentoEstoque> movimentos = new ArrayList<MovimentoEstoque>(); |
415 | 427 | ||
416 | for (AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem : atendimento.getAtendimentoRequisicaoConsumoItems()) { | 428 | for (AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem : atendimento.getAtendimentoRequisicaoConsumoItems()) { |
417 | - | ||
418 | - if(atendimentoRequisicaoConsumoItem.getQuantidade() == null){ | ||
419 | - atendimentoRequisicaoConsumoItem.setQuantidade(new BigDecimal(0));; | 429 | + |
430 | + BigDecimal valorMovimentoFIFO = processaFIFOAtendimentoRequisicao(atendimentoRequisicaoConsumoItem); | ||
431 | + BigDecimal valorMovimentoMediaMovel = this.materialEstoqueService.findByIdMaterial(atendimentoRequisicaoConsumoItem.getMaterial().getId()).getValorUnitarioMedio(); | ||
432 | + | ||
433 | + for (AtendimentoRequisicaoConsumoItemEndereco atendimentoRequisicaoConsumoItemEndereco : atendimentoRequisicaoConsumoItem.getAtendimentoRequisicaoConsumoItemEnderecos()) { | ||
434 | + | ||
435 | + MovimentoEstoque movimentoEstoque = new MovimentoEstoque(atendimento.getDataAtendimento(), atendimentoRequisicaoConsumoItemEndereco.getQuantidade().multiply(BigDecimal.valueOf(-1)), | ||
436 | + valorMovimentoFIFO.multiply(BigDecimal.valueOf(-1)), valorMovimentoMediaMovel.multiply(BigDecimal.valueOf(-1)), tipoMovimento); //Movimentos negativos pois o valor esta saindo do estoque. | ||
437 | + | ||
438 | + movimentoEstoque.setDominioClasseReferencia(classeReferenciaAtendimento); | ||
439 | + movimentoEstoque.setIdClasseReferencia(atendimentoRequisicaoConsumoItem.getId()); | ||
440 | + movimentoEstoque.setMaterialLocalEstoque(atendimentoRequisicaoConsumoItemEndereco.getMaterialLocalEstoque()); | ||
441 | + movimentoEstoque.setMaterialEstoque(movimentoEstoque.getMaterialEstoque()); | ||
442 | + movimentoEstoque.setMaterial(atendimentoRequisicaoConsumoItem.getMaterial()); | ||
443 | + | ||
444 | + String tipoAvaliacao = this.configuracaoParametroSistemaService.getParametro("TIPO_AVALIACAO_MONETARIA_ESTOQUE", atendimento.getOrganizacao()).getValor(); | ||
445 | + | ||
446 | + MaterialConsumo materialConsumo = this.materialConsumoService.find(movimentoEstoque.getMaterial().getId()); | ||
447 | + | ||
448 | + if (DominioAlmoxarifado.TIPO_AVALIACAO_MONETARIA_FIFO_NOME == tipoAvaliacao) { //Realiza movimento de saida em conta contábil baseado em FIFO se estiver configurado como tal. | ||
449 | + this.contaContabilMovimentoService.salvaMovimentoSaidaAtendimento(materialConsumo.getContaContabil(), valorMovimentoFIFO, classeReferenciaAtendimento, atendimentoRequisicaoConsumoItem.getId()); | ||
450 | + } else { //Realiza movimento de saida em conta contábil baseado em Média Móvel (Padrão) | ||
451 | + this.contaContabilMovimentoService.salvaMovimentoSaidaAtendimento(materialConsumo.getContaContabil(), valorMovimentoMediaMovel, classeReferenciaAtendimento, atendimentoRequisicaoConsumoItem.getId()); | ||
452 | + } | ||
453 | + | ||
454 | + MaterialLocalEstoque materialLocalEstoque = this.materialLocalEstoqueService.find(atendimentoRequisicaoConsumoItemEndereco.getMaterialLocalEstoque().getId()); | ||
455 | + materialLocalEstoque.setQuantidade(materialLocalEstoque.getQuantidade().subtract(atendimentoRequisicaoConsumoItemEndereco.getQuantidade())); | ||
456 | + this.materialLocalEstoqueService.merge(materialLocalEstoque); | ||
457 | + | ||
458 | + movimentos.add(movimentoEstoque); | ||
420 | } | 459 | } |
421 | - | ||
422 | - BigDecimal valorMovimentoFIFO = this.entradaAlmoxarifadoItemService.realizaMovimentoSaida(atendimentoRequisicaoConsumoItem.getMaterial(), atendimentoRequisicaoConsumoItem.getQuantidade()); | ||
423 | - BigDecimal valorMovimentoMediaMovel = BigDecimal.ZERO;//BigDecimal valorMovimentoMediaMovel = this.materialEstoqueSaldoMedioService.realizaMovimentoSaida(atendimentoRequisicaoConsumoItem.getMaterial(), atendimentoRequisicaoConsumoItem.getQuantidade()); | ||
424 | - | ||
425 | - MovimentoEstoque movimentoEstoque = new MovimentoEstoque(atendimento.getDataAtendimento(), atendimentoRequisicaoConsumoItem.getQuantidade().multiply(BigDecimal.valueOf(-1)), | ||
426 | - valorMovimentoFIFO.multiply(BigDecimal.valueOf(-1)), valorMovimentoMediaMovel.multiply(BigDecimal.valueOf(-1)), tipoMovimento); //Movimentos negativos pois o valor esta saindo do estoque. | ||
427 | - | ||
428 | - //TODO Corrigir movimento de atendimento com versão nova | ||
429 | 460 | ||
430 | - /*movimentoEstoque.setAtendimentoRequisicaoConsumoItem(atendimentoRequisicaoConsumoItem); | ||
431 | - movimentoEstoque.setLocalEstoque(this.materialLocalEstoqueService.find(getUsuario().getOrganizacao().getId())); | ||
432 | - movimentoEstoque.setMaterial(atendimentoRequisicaoConsumoItem.getMaterial());*/ | 461 | + } |
433 | 462 | ||
434 | - movimentos.add(movimentoEstoque); | 463 | + this.saveList(movimentos); |
435 | 464 | ||
436 | - String tipoAvaliacao = this.configuracaoParametroSistemaService.getParametro("TIPO_AVALIACAO_MONETARIA_ESTOQUE", atendimento.getOrganizacao()).getValor(); | 465 | + } |
437 | 466 | ||
438 | - if (DominioAlmoxarifado.TIPO_AVALIACAO_MONETARIA_FIFO_NOME == tipoAvaliacao) { //Realiza movimento de saida em conta contábil baseado em FIFO se estiver configurado como tal. | ||
439 | - this.contaContabilMovimentoService.salvaMovimentoSaidaAtendimento(movimentoEstoque.getMaterial().getContaContabil(), valorMovimentoFIFO, classeReferenciaAtendimento, atendimentoRequisicaoConsumoItem.getId()); | ||
440 | - } else { //Realiza movimento de saida em conta contábil baseado em Média Móvel (Padrão) | ||
441 | - this.contaContabilMovimentoService.salvaMovimentoSaidaAtendimento(movimentoEstoque.getMaterial().getContaContabil(), valorMovimentoMediaMovel, classeReferenciaAtendimento, atendimentoRequisicaoConsumoItem.getId()); | 467 | + private BigDecimal processaFIFOAtendimentoRequisicao(AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem) { |
468 | + BigDecimal retorno = BigDecimal.ZERO; | ||
469 | + | ||
470 | + List<MaterialEstoqueFIFOItem> fifOsByMaterial = this.materialEstoqueFIFOItemService.findFIFOsByMaterial(atendimentoRequisicaoConsumoItem.getMaterial().getId()); | ||
471 | + BigDecimal quantidadeMovimentada = atendimentoRequisicaoConsumoItem.getQuantidade(); | ||
472 | + List<AtendimentoRequisicaoConsumoItemFIFO> itemFIFOs = new ArrayList<AtendimentoRequisicaoConsumoItemFIFO>(); | ||
473 | + | ||
474 | + for (MaterialEstoqueFIFOItem materialEstoqueFIFOItem : fifOsByMaterial) { | ||
475 | + | ||
476 | + if (materialEstoqueFIFOItem.getQuantidadeRestante().compareTo(atendimentoRequisicaoConsumoItem.getQuantidade()) > 0) { | ||
477 | + retorno = retorno.add(quantidadeMovimentada.multiply(materialEstoqueFIFOItem.getValorUnitario())); | ||
478 | + materialEstoqueFIFOItem.setQuantidadeRestante(materialEstoqueFIFOItem.getQuantidadeRestante().subtract(quantidadeMovimentada)); | ||
479 | + materialEstoqueFIFOItem.setValorSobra(materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario())); | ||
480 | + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); | ||
481 | + itemFIFOs.add(new AtendimentoRequisicaoConsumoItemFIFO(atendimentoRequisicaoConsumoItem, materialEstoqueFIFOItem, quantidadeMovimentada)); | ||
482 | + break; | ||
483 | + | ||
484 | + } else if (materialEstoqueFIFOItem.getQuantidadeRestante().compareTo(quantidadeMovimentada) == 0) { | ||
485 | + retorno = retorno.add(materialEstoqueFIFOItem.getValorSobra()).add(materialEstoqueFIFOItem.getValorSobra()); | ||
486 | + materialEstoqueFIFOItem.setQuantidadeRestante(materialEstoqueFIFOItem.getQuantidadeRestante().subtract(quantidadeMovimentada)); | ||
487 | + materialEstoqueFIFOItem.setValorSobra(materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario())); | ||
488 | + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); | ||
489 | + itemFIFOs.add(new AtendimentoRequisicaoConsumoItemFIFO(atendimentoRequisicaoConsumoItem, materialEstoqueFIFOItem, quantidadeMovimentada)); | ||
490 | + break; | ||
491 | + | ||
492 | + } else { | ||
493 | + retorno = retorno.add((materialEstoqueFIFOItem.getQuantidadeRestante().multiply(materialEstoqueFIFOItem.getValorUnitario()))).add(materialEstoqueFIFOItem.getValorSobra()); | ||
494 | + quantidadeMovimentada = quantidadeMovimentada.subtract(materialEstoqueFIFOItem.getQuantidadeRestante()); | ||
495 | + materialEstoqueFIFOItem.setQuantidadeRestante(BigDecimal.ZERO); | ||
496 | + this.materialEstoqueFIFOItemService.merge(materialEstoqueFIFOItem); | ||
497 | + itemFIFOs.add(new AtendimentoRequisicaoConsumoItemFIFO(atendimentoRequisicaoConsumoItem, materialEstoqueFIFOItem, quantidadeMovimentada)); | ||
442 | } | 498 | } |
443 | } | 499 | } |
444 | - | ||
445 | - this.saveList(movimentos); | ||
446 | - | 500 | + |
501 | + itemFIFOs = this.atendimentoRequisicaoConsumoFIFOService.saveList(itemFIFOs); | ||
502 | + atendimentoRequisicaoConsumoItem.setAtendimentoRequisicaoConsumoItemFIFOs(itemFIFOs); | ||
503 | + | ||
504 | + return retorno; | ||
447 | } | 505 | } |
448 | 506 | ||
449 | @Override | 507 | @Override |
@@ -489,7 +547,10 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -489,7 +547,10 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
489 | 547 | ||
490 | MovimentoEstoque ultimoMovimentoAtendimento = this.movimentoEstoqueDao.ultimoMovimento(entity, joinClass); | 548 | MovimentoEstoque ultimoMovimentoAtendimento = this.movimentoEstoqueDao.ultimoMovimento(entity, joinClass); |
491 | 549 | ||
492 | - return this.movimentoEstoqueDao.existeMovimentacaoDepoisDoMovimento(ultimoMovimentoAtendimento, usuarioLogado.getOrganizacao()); | 550 | + if(ultimoMovimentoAtendimento != null){ |
551 | + return this.movimentoEstoqueDao.existeMovimentacaoDepoisDoMovimento(ultimoMovimentoAtendimento, usuarioLogado.getOrganizacao()); | ||
552 | + } | ||
553 | + return false; | ||
493 | } | 554 | } |
494 | 555 | ||
495 | /** | 556 | /** |
@@ -500,28 +561,22 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -500,28 +561,22 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
500 | 561 | ||
501 | BigDecimal result = BigDecimal.valueOf(0); | 562 | BigDecimal result = BigDecimal.valueOf(0); |
502 | 563 | ||
503 | - List<Map<String, Object>> valoresAtendidos = this.movimentoEstoqueDao.getQuantidadeMaterialAtendido(materialConsumo, almoxarifado, unidadeRequisitante, dataInicio, dataFim, idsDominiosTipoStatusRequisicao); | 564 | + List<ArrayList<Object>> valoresAtendidos = this.movimentoEstoqueDao.getQuantidadeMaterialAtendido(materialConsumo, almoxarifado, unidadeRequisitante, dataInicio, dataFim, idsDominiosTipoStatusRequisicao); |
504 | 565 | ||
505 | if (!UtilColecao.isVazio(valoresAtendidos)) { | 566 | if (!UtilColecao.isVazio(valoresAtendidos)) { |
506 | 567 | ||
507 | Map<String, List<BigDecimal>> mapaDeMesesPorQuantidade = new HashMap<String, List<BigDecimal>>(); | 568 | Map<String, List<BigDecimal>> mapaDeMesesPorQuantidade = new HashMap<String, List<BigDecimal>>(); |
508 | 569 | ||
509 | - for (Map<String, Object> mapaPropriedades : valoresAtendidos) { | ||
510 | - | 570 | + for (Object list : valoresAtendidos) { |
571 | + Object[] listaPropriedades = (Object[]) list; | ||
511 | if (mensal) { | 572 | if (mensal) { |
512 | 573 | ||
513 | - this.divideValoresPorMesEAno(mapaPropriedades, mapaDeMesesPorQuantidade); | 574 | + this.divideValoresPorMesEAno(listaPropriedades, mapaDeMesesPorQuantidade); |
514 | 575 | ||
515 | } else { | 576 | } else { |
577 | + | ||
578 | + result = result.add(listaPropriedades[ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE] != null ? (BigDecimal) listaPropriedades[ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE] : BigDecimal.ZERO); | ||
516 | 579 | ||
517 | - for (String chave : mapaPropriedades.keySet()) { | ||
518 | - | ||
519 | - if (chave.equalsIgnoreCase(ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE)) { | ||
520 | - | ||
521 | - result = result.add((BigDecimal) mapaPropriedades.get(chave)); | ||
522 | - | ||
523 | - } | ||
524 | - } | ||
525 | } | 580 | } |
526 | } | 581 | } |
527 | 582 | ||
@@ -555,7 +610,7 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -555,7 +610,7 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
555 | 610 | ||
556 | for(BigDecimal valor : mapaDeMesesPorQuantidade.get(chave)){ | 611 | for(BigDecimal valor : mapaDeMesesPorQuantidade.get(chave)){ |
557 | 612 | ||
558 | - valorSomadoMensal = valorSomadoMensal.add(valor); | 613 | + valorSomadoMensal = valorSomadoMensal.add(valor != null ? valor : BigDecimal.ZERO); |
559 | 614 | ||
560 | } | 615 | } |
561 | 616 | ||
@@ -577,9 +632,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -577,9 +632,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
577 | * @param mapaDeMesesPorQuantidade2 | 632 | * @param mapaDeMesesPorQuantidade2 |
578 | * @return | 633 | * @return |
579 | */ | 634 | */ |
580 | - private void divideValoresPorMesEAno(Map<String, Object> mapaPropriedades, Map<String, List<BigDecimal>> mapaDeMesesPorQuantidade) { | ||
581 | - | ||
582 | - Calendar data = (Calendar) mapaPropriedades.get(ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_ATENDIMENTO_REQUISICAO_CONSUMO_DATA_ATENDIMENTO); | 635 | + private void divideValoresPorMesEAno(Object[] listaPropriedades, Map<String, List<BigDecimal>> mapaDeMesesPorQuantidade) { |
636 | + | ||
637 | + Calendar data = UtilDate.getCalendarDoTimestamp((Timestamp) listaPropriedades[ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_ATENDIMENTO_REQUISICAO_CONSUMO_DATA_ATENDIMENTO]); | ||
583 | 638 | ||
584 | Integer mes = data.get(Calendar.MONTH); | 639 | Integer mes = data.get(Calendar.MONTH); |
585 | 640 | ||
@@ -592,7 +647,7 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | @@ -592,7 +647,7 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl<MovimentoEst | ||
592 | mapaDeMesesPorQuantidade.put(chave, new ArrayList<BigDecimal>()); | 647 | mapaDeMesesPorQuantidade.put(chave, new ArrayList<BigDecimal>()); |
593 | } | 648 | } |
594 | 649 | ||
595 | - BigDecimal valor = (BigDecimal) mapaPropriedades.get(ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE); | 650 | + BigDecimal valor = (BigDecimal) listaPropriedades[ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE]; |
596 | 651 | ||
597 | mapaDeMesesPorQuantidade.get(chave).add(valor); | 652 | mapaDeMesesPorQuantidade.get(chave).add(valor); |
598 | 653 |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoItemServiceImpl.java
@@ -116,7 +116,11 @@ public class RequisicaoConsumoItemServiceImpl extends GenericServiceImpl<Requisi | @@ -116,7 +116,11 @@ public class RequisicaoConsumoItemServiceImpl extends GenericServiceImpl<Requisi | ||
116 | requisicaoConsumoItem.setRequisicaoConsumo(requisicaoConsumo); | 116 | requisicaoConsumoItem.setRequisicaoConsumo(requisicaoConsumo); |
117 | requisicaoConsumoItem.setMaterialConsumo(materialConsumo); | 117 | requisicaoConsumoItem.setMaterialConsumo(materialConsumo); |
118 | requisicaoConsumoItem.setQuantidade(requisicaoConsumoItemTransient.getQuantidade()); | 118 | requisicaoConsumoItem.setQuantidade(requisicaoConsumoItemTransient.getQuantidade()); |
119 | - | 119 | + |
120 | + if(requisicaoConsumoItemTransient.getId() != null){ | ||
121 | + requisicaoConsumoItem.setId(requisicaoConsumoItemTransient.getId()); | ||
122 | + } | ||
123 | + | ||
120 | return requisicaoConsumoItem; | 124 | return requisicaoConsumoItem; |
121 | } | 125 | } |
122 | 126 | ||
@@ -142,10 +146,15 @@ public class RequisicaoConsumoItemServiceImpl extends GenericServiceImpl<Requisi | @@ -142,10 +146,15 @@ public class RequisicaoConsumoItemServiceImpl extends GenericServiceImpl<Requisi | ||
142 | public Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante) { | 146 | public Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante) { |
143 | 147 | ||
144 | Dominio statusFinalizado = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_FINALIZADA); | 148 | Dominio statusFinalizado = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_FINALIZADA); |
145 | - Dominio statusAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA); | ||
146 | Dominio statusParcialmenteAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE); | 149 | Dominio statusParcialmenteAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE); |
147 | 150 | ||
148 | - return this.requisicaoConsumoItemDao.findRequisicaoAnteriorPorMaterial(materialConsumo, unidadeRequisitante, statusFinalizado, statusParcialmenteAtendida, statusAtendida); | 151 | + return this.requisicaoConsumoItemDao.findRequisicaoAnteriorPorMaterial(materialConsumo, unidadeRequisitante, statusFinalizado, statusParcialmenteAtendida); |
152 | + } | ||
153 | + | ||
154 | + | ||
155 | + @Override | ||
156 | + public List<RequisicaoConsumoItem> findItensRequisicaoPorMaterial(Long idRequisicao, Long idMaterial) { | ||
157 | + return this.requisicaoConsumoItemDao.findItensRequisicaoPorMaterial(idRequisicao, idMaterial); | ||
149 | } | 158 | } |
150 | 159 | ||
151 | 160 |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoServiceImpl.java
@@ -11,6 +11,8 @@ import org.springframework.security.core.context.SecurityContextHolder; | @@ -11,6 +11,8 @@ import org.springframework.security.core.context.SecurityContextHolder; | ||
11 | import org.springframework.stereotype.Service; | 11 | import org.springframework.stereotype.Service; |
12 | import org.springframework.validation.Validator; | 12 | import org.springframework.validation.Validator; |
13 | 13 | ||
14 | +import com.googlecode.genericdao.search.SearchResult; | ||
15 | + | ||
14 | import br.com.centralit.api.dao.RequisicaoConsumoDao; | 16 | import br.com.centralit.api.dao.RequisicaoConsumoDao; |
15 | import br.com.centralit.api.model.DominioAlmoxarifado; | 17 | import br.com.centralit.api.model.DominioAlmoxarifado; |
16 | import br.com.centralit.api.model.EstruturaOrganizacional; | 18 | import br.com.centralit.api.model.EstruturaOrganizacional; |
@@ -27,6 +29,7 @@ import br.com.centralit.api.service.ModuloService; | @@ -27,6 +29,7 @@ import br.com.centralit.api.service.ModuloService; | ||
27 | import br.com.centralit.api.service.RequisicaoConsumoItemService; | 29 | import br.com.centralit.api.service.RequisicaoConsumoItemService; |
28 | import br.com.centralit.api.service.RequisicaoConsumoService; | 30 | import br.com.centralit.api.service.RequisicaoConsumoService; |
29 | import br.com.centralit.api.service.UsuarioService; | 31 | import br.com.centralit.api.service.UsuarioService; |
32 | +import br.com.centralit.api.viewHelper.AtendimentoVH; | ||
30 | import br.com.centralit.api.viewHelper.RequisicaoVH; | 33 | import br.com.centralit.api.viewHelper.RequisicaoVH; |
31 | import br.com.centralit.framework.exception.BusinessException; | 34 | import br.com.centralit.framework.exception.BusinessException; |
32 | import br.com.centralit.framework.exception.CodigoErro; | 35 | import br.com.centralit.framework.exception.CodigoErro; |
@@ -109,7 +112,7 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | @@ -109,7 +112,7 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | ||
109 | /** Atributo centroCustoService. */ | 112 | /** Atributo centroCustoService. */ |
110 | @Autowired | 113 | @Autowired |
111 | private CentroCustoService centroCustoService; | 114 | private CentroCustoService centroCustoService; |
112 | - | 115 | + |
113 | @Autowired | 116 | @Autowired |
114 | public RequisicaoConsumoServiceImpl( RequisicaoConsumoDao requisicaoConsumoDao, @Qualifier("requisicaoConsumoValidator") Validator validator ) { | 117 | public RequisicaoConsumoServiceImpl( RequisicaoConsumoDao requisicaoConsumoDao, @Qualifier("requisicaoConsumoValidator") Validator validator ) { |
115 | 118 | ||
@@ -287,6 +290,12 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | @@ -287,6 +290,12 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | ||
287 | throw new BusinessException("PORTAL.MSG.MN020", CodigoErro.REGRA_NEGOCIO.getValue()); | 290 | throw new BusinessException("PORTAL.MSG.MN020", CodigoErro.REGRA_NEGOCIO.getValue()); |
288 | 291 | ||
289 | } | 292 | } |
293 | + | ||
294 | + RequisicaoConsumo requisicaoConsumo = this.find(idRequisicaoConsumo); | ||
295 | + | ||
296 | + for (RequisicaoConsumoItem requisicaoConsumoItem : requisicaoConsumo.getRequisicaoConsumoItens()) { | ||
297 | + this.requisicaoConsumoItemService.remove(requisicaoConsumoItem); | ||
298 | + } | ||
290 | 299 | ||
291 | return super.removeById(idRequisicaoConsumo); | 300 | return super.removeById(idRequisicaoConsumo); |
292 | 301 | ||
@@ -343,7 +352,10 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | @@ -343,7 +352,10 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | ||
343 | private void montarEntidade(RequisicaoConsumo requisicaoConsumo) { | 352 | private void montarEntidade(RequisicaoConsumo requisicaoConsumo) { |
344 | 353 | ||
345 | // MONTA OS DADOS RELACIONADOS MATERIAL DE CONSUMO | 354 | // MONTA OS DADOS RELACIONADOS MATERIAL DE CONSUMO |
346 | - this.requisicaoConsumoItemService.montarRequisicaoConsumoItemMateriaisConsumo(requisicaoConsumo); | 355 | + for (RequisicaoConsumoItem requisicaoConsumoItem : requisicaoConsumo.getRequisicaoConsumoItens()) { |
356 | + requisicaoConsumoItem.setRequisicaoConsumo(requisicaoConsumo); | ||
357 | + } | ||
358 | +// this.requisicaoConsumoItemService.montarRequisicaoConsumoItemMateriaisConsumo(requisicaoConsumo); | ||
347 | 359 | ||
348 | // TRANSIENT OBSERVACOES | 360 | // TRANSIENT OBSERVACOES |
349 | if (!UtilColecao.isVazio(requisicaoConsumo.getObservacoes())) { | 361 | if (!UtilColecao.isVazio(requisicaoConsumo.getObservacoes())) { |
@@ -358,6 +370,11 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | @@ -358,6 +370,11 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | ||
358 | } | 370 | } |
359 | 371 | ||
360 | requisicaoConsumo.setCentroCusto(UtilObjeto.isReferencia(requisicaoConsumo.getCentroCusto()) ? this.centroCustoService.find(requisicaoConsumo.getCentroCusto().getId()) : null); | 372 | requisicaoConsumo.setCentroCusto(UtilObjeto.isReferencia(requisicaoConsumo.getCentroCusto()) ? this.centroCustoService.find(requisicaoConsumo.getCentroCusto().getId()) : null); |
373 | + | ||
374 | + if(requisicaoConsumo.getOrganizacao() == null){ | ||
375 | + Usuario usuarioLogado = (Usuario) usuarioService.find(( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId()); | ||
376 | + requisicaoConsumo.setOrganizacao(usuarioLogado.getOrganizacao()); | ||
377 | + } | ||
361 | } | 378 | } |
362 | 379 | ||
363 | /** | 380 | /** |
@@ -531,4 +548,58 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | @@ -531,4 +548,58 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | ||
531 | public String findtipoStatusRequisicaoPorMaterial(Long requisicaoId) { | 548 | public String findtipoStatusRequisicaoPorMaterial(Long requisicaoId) { |
532 | return requisicaoConsumoDao.findtipoStatusRequisicaoPorMaterial(requisicaoId); | 549 | return requisicaoConsumoDao.findtipoStatusRequisicaoPorMaterial(requisicaoId); |
533 | } | 550 | } |
551 | +@Override | ||
552 | + public SearchResult filtrarRequisicoesAtendimento(AtendimentoVH atendimentoVH) { | ||
553 | + return this.requisicaoConsumoDao.filtrarRequisicoesAtendimento(atendimentoVH); | ||
554 | + } | ||
555 | + | ||
556 | + @Override | ||
557 | + public List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH) { | ||
558 | + List<RequisicaoConsumo> requisicoes = this.requisicaoConsumoDao.findRequisicoesParaAtendimento(atendimentoVH); | ||
559 | + if(atendimentoVH.isBloquearAtendimento()){ | ||
560 | + this.atualizarStatusAtendimento(requisicoes); | ||
561 | + } | ||
562 | + | ||
563 | + for (RequisicaoConsumo requisicaoConsumo : requisicoes) { | ||
564 | + List<RequisicaoConsumoItem> listaItens = new ArrayList<>(); | ||
565 | + for (RequisicaoConsumoItem requisicaoConsumoItem : requisicaoConsumo.getRequisicaoConsumoItens()) { | ||
566 | + if(requisicaoConsumoItem.getDataInativo() == null){ | ||
567 | + listaItens.add(requisicaoConsumoItem); | ||
568 | + } | ||
569 | + } | ||
570 | + requisicaoConsumo.setRequisicaoConsumoItens(listaItens); | ||
571 | + } | ||
572 | + | ||
573 | + return requisicoes; | ||
574 | + } | ||
575 | + | ||
576 | + private void atualizarStatusAtendimento(List<RequisicaoConsumo> requisicoes) { | ||
577 | + Usuario usuarioLogado = (Usuario) usuarioService.find(( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId()); | ||
578 | + for (RequisicaoConsumo requisicaoConsumo : requisicoes) { | ||
579 | + requisicaoConsumo.setEmAtendimento(Boolean.TRUE); | ||
580 | + requisicaoConsumo.setAtendente(usuarioLogado); | ||
581 | + super.merge(requisicaoConsumo); | ||
582 | + flush(); | ||
583 | + } | ||
584 | + | ||
585 | + } | ||
586 | + | ||
587 | + @Override | ||
588 | + public Boolean atualizarSituacaoAtendimento(Long idRequisicao, boolean situacaoAtendimento) { | ||
589 | + RequisicaoConsumo requisicaoConsumo = this.find(idRequisicao); | ||
590 | + requisicaoConsumo.setEmAtendimento(situacaoAtendimento); | ||
591 | + if(!situacaoAtendimento){ | ||
592 | + requisicaoConsumo.setAtendente(null); | ||
593 | + } | ||
594 | + super.merge(requisicaoConsumo); | ||
595 | + return true; | ||
596 | + } | ||
597 | + | ||
598 | + @Override | ||
599 | + public Boolean atualizarSituacaoAtendimentoRequisicoes(RequisicaoVH requisicaoVH) { | ||
600 | + for (Long idRequisicao : requisicaoVH.getIdsRequisicoes()) { | ||
601 | + this.atualizarSituacaoAtendimento(idRequisicao, requisicaoVH.getStatusAtendimentoRequsicao()); | ||
602 | + } | ||
603 | + return true; | ||
604 | + } | ||
534 | } | 605 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/AtendimentoRequisicaoConsumoItemValidator.java
@@ -22,7 +22,7 @@ public class AtendimentoRequisicaoConsumoItemValidator implements Validator { | @@ -22,7 +22,7 @@ public class AtendimentoRequisicaoConsumoItemValidator implements Validator { | ||
22 | 22 | ||
23 | ValidationUtils.rejectIfEmpty(errors, "atendimentoRequisicaoConsumo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.ATENDIMENTOREQUISICAOCONSUMO"); | 23 | ValidationUtils.rejectIfEmpty(errors, "atendimentoRequisicaoConsumo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.ATENDIMENTOREQUISICAOCONSUMO"); |
24 | 24 | ||
25 | - ValidationUtils.rejectIfEmpty(errors, "materialConsumo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.MATERIALCONSUMO"); | 25 | + ValidationUtils.rejectIfEmpty(errors, "material", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.MATERIALCONSUMO"); |
26 | 26 | ||
27 | ValidationUtils.rejectIfEmpty(errors, "quantidade", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.QUANTIDADE"); | 27 | ValidationUtils.rejectIfEmpty(errors, "quantidade", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.QUANTIDADE"); |
28 | 28 |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/validation/RequisicaoConsumoItemValidator.java
@@ -22,7 +22,7 @@ public class RequisicaoConsumoItemValidator implements Validator { | @@ -22,7 +22,7 @@ public class RequisicaoConsumoItemValidator implements Validator { | ||
22 | 22 | ||
23 | ValidationUtils.rejectIfEmpty(errors, "requisicaoConsumo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.REQUISICAOCONSUMO"); | 23 | ValidationUtils.rejectIfEmpty(errors, "requisicaoConsumo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.REQUISICAOCONSUMO"); |
24 | 24 | ||
25 | - ValidationUtils.rejectIfEmpty(errors, "material", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.MATERIAL"); | 25 | + ValidationUtils.rejectIfEmpty(errors, "materialConsumo", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "LABEL.MATERIAL"); |
26 | 26 | ||
27 | ValidationUtils.rejectIfEmpty(errors, "quantidade", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.QUANTIDADE"); | 27 | ValidationUtils.rejectIfEmpty(errors, "quantidade", CodigoErro.VALIDACAO_CAMPOS_OBRIGATORIOS.getValue().toString(), "ALMOXARIFADO.LABEL.QUANTIDADE"); |
28 | 28 |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/viewHelper/ValidacaoAtendimentoRequisicaoConsumoVH.java
0 → 100644
@@ -0,0 +1,40 @@ | @@ -0,0 +1,40 @@ | ||
1 | +package br.com.centralit.api.viewHelper; | ||
2 | + | ||
3 | +import java.util.List; | ||
4 | + | ||
5 | +import br.com.centralit.api.model.MaterialLocalEstoque; | ||
6 | +import br.com.centralit.framework.json.Views; | ||
7 | + | ||
8 | +import com.fasterxml.jackson.annotation.JsonView; | ||
9 | + | ||
10 | +public class ValidacaoAtendimentoRequisicaoConsumoVH { | ||
11 | + | ||
12 | + @JsonView({ Views.GenericView.class }) | ||
13 | + private List<MaterialLocalEstoque> materiaisLocalEstoque; | ||
14 | + | ||
15 | + @JsonView({ Views.GenericView.class }) | ||
16 | + private String mensagemErro; | ||
17 | + | ||
18 | + public ValidacaoAtendimentoRequisicaoConsumoVH(List<MaterialLocalEstoque> materiaisLocalEstoque, String mensagemErro) { | ||
19 | + super(); | ||
20 | + this.materiaisLocalEstoque = materiaisLocalEstoque; | ||
21 | + this.mensagemErro = mensagemErro; | ||
22 | + } | ||
23 | + | ||
24 | + public List<MaterialLocalEstoque> getMateriaisLocalEstoque() { | ||
25 | + return materiaisLocalEstoque; | ||
26 | + } | ||
27 | + | ||
28 | + public void setMateriaisLocalEstoque( | ||
29 | + List<MaterialLocalEstoque> materiaisLocalEstoque) { | ||
30 | + this.materiaisLocalEstoque = materiaisLocalEstoque; | ||
31 | + } | ||
32 | + | ||
33 | + public String getMensagemErro() { | ||
34 | + return mensagemErro; | ||
35 | + } | ||
36 | + | ||
37 | + public void setMensagemErro(String mensagemErro) { | ||
38 | + this.mensagemErro = mensagemErro; | ||
39 | + } | ||
40 | +} |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/AtendimentoRequisicaoConsumoController.java
1 | package br.com.centralit.controller; | 1 | package br.com.centralit.controller; |
2 | 2 | ||
3 | +import java.util.List; | ||
4 | + | ||
3 | import org.apache.commons.lang3.SerializationUtils; | 5 | import org.apache.commons.lang3.SerializationUtils; |
4 | import org.hibernate.exception.ConstraintViolationException; | 6 | import org.hibernate.exception.ConstraintViolationException; |
5 | import org.springframework.beans.factory.annotation.Autowired; | 7 | import org.springframework.beans.factory.annotation.Autowired; |
@@ -10,10 +12,15 @@ import org.springframework.web.bind.annotation.RequestMethod; | @@ -10,10 +12,15 @@ import org.springframework.web.bind.annotation.RequestMethod; | ||
10 | import org.springframework.web.bind.annotation.RequestParam; | 12 | import org.springframework.web.bind.annotation.RequestParam; |
11 | import org.springframework.web.bind.annotation.ResponseBody; | 13 | import org.springframework.web.bind.annotation.ResponseBody; |
12 | 14 | ||
15 | +import com.googlecode.genericdao.search.Search; | ||
16 | +import com.googlecode.genericdao.search.SearchResult; | ||
17 | + | ||
13 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; | 18 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; |
14 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; | 19 | import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; |
20 | +import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; | ||
15 | import br.com.centralit.api.model.RequisicaoConsumo; | 21 | import br.com.centralit.api.model.RequisicaoConsumo; |
16 | import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService; | 22 | import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService; |
23 | +import br.com.centralit.api.viewHelper.AtendimentoVH; | ||
17 | import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; | 24 | import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; |
18 | import br.com.centralit.framework.controller.GenericController; | 25 | import br.com.centralit.framework.controller.GenericController; |
19 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; | 26 | import br.com.centralit.framework.dao.arquitetura.SearchSeven; |
@@ -23,9 +30,6 @@ import br.com.centralit.framework.model.SearchParams; | @@ -23,9 +30,6 @@ import br.com.centralit.framework.model.SearchParams; | ||
23 | import br.com.centralit.framework.view.GridVH; | 30 | import br.com.centralit.framework.view.GridVH; |
24 | import br.com.centralit.framework.view.ResultResponseVH; | 31 | import br.com.centralit.framework.view.ResultResponseVH; |
25 | 32 | ||
26 | -import com.googlecode.genericdao.search.Search; | ||
27 | -import com.googlecode.genericdao.search.SearchResult; | ||
28 | - | ||
29 | /** | 33 | /** |
30 | * <p><img src="http://centralit.com.br/images/logo_central.png"></p> | 34 | * <p><img src="http://centralit.com.br/images/logo_central.png"></p> |
31 | * | 35 | * |
@@ -195,5 +199,46 @@ public class AtendimentoRequisicaoConsumoController extends GenericController<At | @@ -195,5 +199,46 @@ public class AtendimentoRequisicaoConsumoController extends GenericController<At | ||
195 | 199 | ||
196 | return new ResponseBodyWrapper(this.atendimentoRequisicaoConsumoService.removerAtendimentoRequisicao(idsRequisicaoConsumo, idOrganizacao), this.getEditView()); | 200 | return new ResponseBodyWrapper(this.atendimentoRequisicaoConsumoService.removerAtendimentoRequisicao(idsRequisicaoConsumo, idOrganizacao), this.getEditView()); |
197 | } | 201 | } |
202 | + | ||
203 | + @RequestMapping(value = "/finalizarRequisicoes", method = RequestMethod.POST, produces = "application/json") | ||
204 | + @ResponseBody | ||
205 | + public Boolean finalizarRequisicoes(@RequestBody AtendimentoVH atendimentoVH) { | ||
206 | + | ||
207 | + return this.atendimentoRequisicaoConsumoService.finalizarRequisicoes(atendimentoVH.getIdsRequisicao(), atendimentoVH.getIdOrganizacao()); | ||
208 | + | ||
209 | + } | ||
210 | + | ||
211 | + @RequestMapping(value = "/validarFinalizacaoRequisicoes", method = RequestMethod.POST, produces = "application/json") | ||
212 | + @ResponseBody | ||
213 | + public Boolean validarFinalizacaoRequisicoes(@RequestBody AtendimentoVH atendimentoVH) { | ||
214 | + | ||
215 | + for (Long idRequisicaoConsumo : atendimentoVH.getIdsRequisicao()) { | ||
216 | + List<AtendimentoRequisicaoConsumo> listaAtendimentoPorRequisicaoConsumo = this.atendimentoRequisicaoConsumoService.listaAtendimentoPorRequisicaoConsumo(idRequisicaoConsumo, atendimentoVH.getIdOrganizacao()); | ||
217 | + for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) { | ||
218 | + for (AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem : atendimentoRequisicaoConsumo.getAtendimentoRequisicaoConsumoItems()) { | ||
219 | + if(atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getQuantidade().compareTo(atendimentoRequisicaoConsumoItem.getQuantidade()) > 0){ | ||
220 | + return false; | ||
221 | + } | ||
222 | + } | ||
223 | + } | ||
224 | + } | ||
225 | + return true; | ||
226 | + } | ||
227 | + | ||
228 | + @RequestMapping(value = "/excluirAtendimentos", method = RequestMethod.POST, produces = "application/json") | ||
229 | + @ResponseBody | ||
230 | + public Boolean excluirAtendimentos(@RequestBody AtendimentoVH atendimentoVH) { | ||
231 | + | ||
232 | + return this.atendimentoRequisicaoConsumoService.excluirAtendimentos(atendimentoVH.getIdsRequisicao(), atendimentoVH.getIdOrganizacao()); | ||
233 | + | ||
234 | + } | ||
235 | + | ||
236 | + @RequestMapping(value = "/validaQuantidadesAtendidas", method = RequestMethod.POST) | ||
237 | + @ResponseBody | ||
238 | + public ResponseBodyWrapper validaQuantidadesAtendidas(@RequestBody AtendimentoRequisicaoConsumo entity){ | ||
239 | + | ||
240 | + return new ResponseBodyWrapper(this.atendimentoRequisicaoConsumoService.validarQuantidadesAtendidas(entity), this.getEditView()); | ||
241 | + | ||
242 | + } | ||
198 | 243 | ||
199 | } | 244 | } |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/RequisicaoConsumoController.java
1 | package br.com.centralit.controller; | 1 | package br.com.centralit.controller; |
2 | 2 | ||
3 | -import java.util.Collection; | 3 | +import java.util.ArrayList; |
4 | import java.util.List; | 4 | import java.util.List; |
5 | 5 | ||
6 | import org.apache.commons.lang3.SerializationUtils; | 6 | import org.apache.commons.lang3.SerializationUtils; |
7 | import org.hibernate.exception.ConstraintViolationException; | 7 | import org.hibernate.exception.ConstraintViolationException; |
8 | import org.springframework.beans.factory.annotation.Autowired; | 8 | import org.springframework.beans.factory.annotation.Autowired; |
9 | import org.springframework.stereotype.Controller; | 9 | import org.springframework.stereotype.Controller; |
10 | +import org.springframework.web.bind.annotation.PathVariable; | ||
10 | import org.springframework.web.bind.annotation.RequestBody; | 11 | import org.springframework.web.bind.annotation.RequestBody; |
11 | import org.springframework.web.bind.annotation.RequestMapping; | 12 | import org.springframework.web.bind.annotation.RequestMapping; |
12 | import org.springframework.web.bind.annotation.RequestMethod; | 13 | import org.springframework.web.bind.annotation.RequestMethod; |
13 | import org.springframework.web.bind.annotation.RequestParam; | 14 | import org.springframework.web.bind.annotation.RequestParam; |
14 | import org.springframework.web.bind.annotation.ResponseBody; | 15 | import org.springframework.web.bind.annotation.ResponseBody; |
15 | 16 | ||
17 | +import com.googlecode.genericdao.search.SearchResult; | ||
18 | + | ||
16 | import br.com.centralit.api.framework.json.ViewsAdmMateriais; | 19 | import br.com.centralit.api.framework.json.ViewsAdmMateriais; |
17 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; | 20 | import br.com.centralit.api.framework.json.ViewsAlmoxarifado; |
18 | import br.com.centralit.api.model.RequisicaoConsumo; | 21 | import br.com.centralit.api.model.RequisicaoConsumo; |
22 | +import br.com.centralit.api.model.RequisicaoConsumoItem; | ||
23 | +import br.com.centralit.api.service.RequisicaoConsumoItemService; | ||
19 | import br.com.centralit.api.service.RequisicaoConsumoService; | 24 | import br.com.centralit.api.service.RequisicaoConsumoService; |
25 | +import br.com.centralit.api.viewHelper.AtendimentoVH; | ||
20 | import br.com.centralit.api.viewHelper.RequisicaoVH; | 26 | import br.com.centralit.api.viewHelper.RequisicaoVH; |
21 | import br.com.centralit.framework.controller.GenericController; | 27 | import br.com.centralit.framework.controller.GenericController; |
22 | import br.com.centralit.framework.json.ResponseBodyWrapper; | 28 | import br.com.centralit.framework.json.ResponseBodyWrapper; |
23 | import br.com.centralit.framework.json.Views; | 29 | import br.com.centralit.framework.json.Views; |
30 | +import br.com.centralit.framework.util.UtilColecao; | ||
31 | +import br.com.centralit.framework.view.GridVH; | ||
32 | +import br.com.centralit.framework.view.ResultResponseVH; | ||
24 | 33 | ||
25 | /** | 34 | /** |
26 | * <p> | 35 | * <p> |
@@ -60,6 +69,9 @@ public class RequisicaoConsumoController extends GenericController<RequisicaoCon | @@ -60,6 +69,9 @@ public class RequisicaoConsumoController extends GenericController<RequisicaoCon | ||
60 | 69 | ||
61 | /** Atributo requisicaoConsumoService. */ | 70 | /** Atributo requisicaoConsumoService. */ |
62 | private RequisicaoConsumoService requisicaoConsumoService; | 71 | private RequisicaoConsumoService requisicaoConsumoService; |
72 | + | ||
73 | + @Autowired | ||
74 | + private RequisicaoConsumoItemService requisicaoConsumoItemService; | ||
63 | 75 | ||
64 | @Autowired | 76 | @Autowired |
65 | public RequisicaoConsumoController(RequisicaoConsumoService requisicaoConsumoService) { | 77 | public RequisicaoConsumoController(RequisicaoConsumoService requisicaoConsumoService) { |
@@ -192,10 +204,78 @@ public class RequisicaoConsumoController extends GenericController<RequisicaoCon | @@ -192,10 +204,78 @@ public class RequisicaoConsumoController extends GenericController<RequisicaoCon | ||
192 | */ | 204 | */ |
193 | @RequestMapping(value = "/atenderRequisicoes", method = RequestMethod.POST, produces = "application/json") | 205 | @RequestMapping(value = "/atenderRequisicoes", method = RequestMethod.POST, produces = "application/json") |
194 | @ResponseBody | 206 | @ResponseBody |
195 | - public ResponseBodyWrapper atenderRequisicoes (@RequestBody Collection<Long> requisicoesIds) { | 207 | + public ResponseBodyWrapper atenderRequisicoes (@RequestBody AtendimentoVH atendimentoVH) { |
208 | + | ||
209 | + List<RequisicaoConsumo> requisicoes = this.requisicaoConsumoService.findRequisicoesParaAtendimento(atendimentoVH); | ||
210 | + | ||
211 | + if(!UtilColecao.isVazio(atendimentoVH.getIdsMaterais())){ | ||
212 | + for (RequisicaoConsumo requisicaoConsumo : requisicoes) { | ||
213 | + List<RequisicaoConsumoItem> itens = new ArrayList<RequisicaoConsumoItem>(); | ||
214 | + for (Long idMaterial : atendimentoVH.getIdsMaterais()) { | ||
215 | + itens.addAll(this.requisicaoConsumoItemService.findItensRequisicaoPorMaterial(requisicaoConsumo.getId(), idMaterial)); | ||
216 | + | ||
217 | + } | ||
218 | + requisicaoConsumo.setRequisicaoConsumoItens(itens); | ||
219 | + } | ||
220 | + } | ||
221 | + | ||
222 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(requisicoes, ViewsAdmMateriais.RequisicaoConsumoEditView.class); | ||
223 | + | ||
224 | + return responseBody; | ||
225 | + } | ||
226 | + | ||
227 | + @RequestMapping(value = "/filtrarRequisicoesAtendimento", method = RequestMethod.POST, produces = "application/json") | ||
228 | + @ResponseBody | ||
229 | + public ResponseBodyWrapper filtrarRequisicoesAtendimento(@RequestBody AtendimentoVH atendimentoVH) { | ||
230 | + SearchResult searchResult = requisicaoConsumoService.filtrarRequisicoesAtendimento(atendimentoVH); | ||
231 | + | ||
232 | + GridVH gridVH = new GridVH(); | ||
233 | + gridVH.setObjects(searchResult.getResult()); | ||
234 | + gridVH.addTotalItensTotalPages(atendimentoVH.getSearchParams(), Long.valueOf(searchResult.getTotalCount())); | ||
235 | + | ||
236 | + ResultResponseVH resultResponseVH = new ResultResponseVH(gridVH); | ||
237 | + | ||
238 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getListView()); | ||
239 | + | ||
240 | + return responseBody; | ||
241 | + } | ||
242 | + | ||
243 | + @RequestMapping(value = "/atualizarSituacaoAtendimento", method = RequestMethod.GET, produces = "application/json") | ||
244 | + @ResponseBody | ||
245 | + public ResponseBodyWrapper atualizarSituacaoAtendimento(@RequestParam(value = "idRequisicao") Long idRequisicao, @RequestParam(value = "situacaoAtendimento") boolean situacaoAtendimento) { | ||
246 | + | ||
247 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.requisicaoConsumoService.atualizarSituacaoAtendimento(idRequisicao, situacaoAtendimento), getEditView()); | ||
248 | + | ||
249 | + return responseBody; | ||
250 | + } | ||
251 | + | ||
252 | + @RequestMapping(value = "/atualizarSituacaoAtendimentoRequisicoes", method = RequestMethod.POST, produces = "application/json") | ||
253 | + @ResponseBody | ||
254 | + public Boolean atualizarSituacaoAtendimentoRequisicoes(@RequestBody RequisicaoVH requisicaoVH) { | ||
255 | + | ||
256 | + return this.requisicaoConsumoService.atualizarSituacaoAtendimentoRequisicoes(requisicaoVH); | ||
257 | + | ||
258 | + } | ||
259 | + | ||
260 | + @RequestMapping(value = "/{id}", method = RequestMethod.GET) | ||
261 | + @ResponseBody | ||
262 | + public ResponseBodyWrapper getObject(@PathVariable("id") Long id) { | ||
263 | + | ||
264 | + RequisicaoConsumo requisicaoConsumo = this.requisicaoConsumoService.getReference(id); | ||
265 | + | ||
266 | + List<RequisicaoConsumoItem> itens = new ArrayList<>(); | ||
267 | + | ||
268 | + for (RequisicaoConsumoItem requisicaoConsumoItem : requisicaoConsumo.getRequisicaoConsumoItens()) { | ||
269 | + if(requisicaoConsumoItem.getDataInativo() == null){ | ||
270 | + itens.add(requisicaoConsumoItem); | ||
271 | + } | ||
272 | + } | ||
273 | + | ||
274 | + requisicaoConsumo.setRequisicaoConsumoItens(itens); | ||
275 | + | ||
276 | + ResultResponseVH<RequisicaoConsumo> resultResponseVH = new ResultResponseVH<RequisicaoConsumo>(requisicaoConsumo); | ||
196 | 277 | ||
197 | - ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.requisicaoConsumoService.findList((List<Long>) requisicoesIds), | ||
198 | - ViewsAdmMateriais.RequisicaoConsumoEditView.class); | 278 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getEditView()); |
199 | 279 | ||
200 | return responseBody; | 280 | return responseBody; |
201 | } | 281 | } |
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
@@ -322,6 +322,23 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -322,6 +322,23 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
322 | 322 | ||
323 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_S", "Atendimento(s)", dominio, modulo)); | 323 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_S", "Atendimento(s)", dominio, modulo)); |
324 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.BAIXA_S", "Baixa(s)", dominio, modulo)); | 324 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.BAIXA_S", "Baixa(s)", dominio, modulo)); |
325 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.EXCLUIR_ATENDIMENTO", "Excluir atendimento", dominio, modulo)); | ||
326 | + | ||
327 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.STATUS_ATUAL", "Status atual", dominio, modulo)); | ||
328 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.FILTRAR", "Filtrar", dominio, modulo)); | ||
329 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.LIMPAR_BUSCA_AVANCADA", "Limpar busca avançada", dominio, modulo)); | ||
330 | + | ||
331 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_REQUISICAO", "Atendimento de requisição consumo", dominio, modulo)); | ||
332 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO", "Atendimento iniciado", dominio, modulo)); | ||
333 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.INTERROMPER_ATENDIMENTO_INICIADO", "Interromper atendimento iniciado", dominio, modulo)); | ||
334 | + | ||
335 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ENDERECOS_ESTOQUE", "Endereços de estoque", dominio, modulo)); | ||
336 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.MULTIPLOS_ENDERECOS", "Multiplos Endereços", dominio, modulo)); | ||
337 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO_USUARIO", "Atendimento iniciado por", dominio, modulo)); | ||
338 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.CANCELAR_ATENDIMENTO_INICIADO", "Cancelar atendimento", dominio, modulo)); | ||
339 | + | ||
340 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.MOSTRAR_ATENDIMENTOS_CONCLUIDOS", "Mostrar materiais já atendidos por completo", dominio, modulo)); | ||
341 | + | ||
325 | } | 342 | } |
326 | 343 | ||
327 | private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { | 344 | private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { |
@@ -358,12 +375,20 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -358,12 +375,20 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
358 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.EXCLUSAO_ENTRADA_IMPOSSIVEL", "Já houve movimentação com os materiais provenientes dessa entrada, ela não poderá mais ser excluída do sistema.", dominio, modulo)); | 375 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.EXCLUSAO_ENTRADA_IMPOSSIVEL", "Já houve movimentação com os materiais provenientes dessa entrada, ela não poderá mais ser excluída do sistema.", dominio, modulo)); |
359 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_NEGADA_ALTERAR_ACOMODA_MATERIAL", "Não é permitido alterar esse endereço para não acomoda materiais, pois o endereço já está vinculado a materiais de consumo.", dominio, modulo)); | 376 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.ENDERECO_ESTOQUE_NEGADA_ALTERAR_ACOMODA_MATERIAL", "Não é permitido alterar esse endereço para não acomoda materiais, pois o endereço já está vinculado a materiais de consumo.", dominio, modulo)); |
360 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.CONTABILIZAR_ENTRADA_ITEM_SEM_ENDERECO", "Não é possível contabilizar a entrada pois existem materiais sem endereço de estoque definido!", dominio, modulo)); | 377 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.CONTABILIZAR_ENTRADA_ITEM_SEM_ENDERECO", "Não é possível contabilizar a entrada pois existem materiais sem endereço de estoque definido!", dominio, modulo)); |
378 | + | ||
379 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.SOMA_ITENS_ATENDER_MAIOR_ESTOQUE", "A soma das quantidades informadas para atendimento ultrapassam o saldo disponivel no endereço de estoque selecionado no(s) seguinte(s) material(ais):", dominio, modulo)); | ||
380 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.SOMA_ITENS_ATENDER_MAIOR_ESTOQUE_TOOLTIP", "A soma das quantidades à atender informadas para este material ultrapassaram o saldo disponivel no(s) endereço(s) de estoque.", dominio, modulo)); | ||
381 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.QUANTIDADE_ATENDER_SUPERIOR_SALDO_ESTOQUE", "A quantidade a ser atendida é superior ao saldo disponível no(s) seguinte(s) endereço(s) de estoque: ", dominio, modulo)); | ||
382 | + | ||
383 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.QUANTIDADE_ATENDIDA_MAIOR_REQUISITADA", "A quantidade a ser atendida é superior a quantidade requisitada.", dominio, modulo)); | ||
384 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.TODAS_QUANTIDADE_ATENDIDA_EM_BRANCO", "Ao menos um item 'Atender' deve ser preenchido para registrar o atendimento.", dominio, modulo)); | ||
385 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.REMOVER_TODOS_ITENS_REQUISICAO_CONSUMO", "Não é permitido remover todos os materiais de consumo.", dominio, modulo)); | ||
361 | } | 386 | } |
362 | 387 | ||
363 | private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { | 388 | private void gerarMensagem(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { |
364 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ATENDA_AO_MENOS_UMA_REQUISICAO", "Por favor, atenda ao menos uma requisição antes de continuar.", dominio, modulo)); | 389 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ATENDA_AO_MENOS_UMA_REQUISICAO", "Por favor, atenda ao menos uma requisição antes de continuar.", dominio, modulo)); |
365 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CATALOGOS_CADASTRADOS_OPCOES", "Os seguintes catálogos existem no sistema com a mesma lista de materiais que você selecionou no seu cadastro, você pode selecionar uma das opções ou continuar salvando o cadastro atual.", dominio, modulo)); | 390 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CATALOGOS_CADASTRADOS_OPCOES", "Os seguintes catálogos existem no sistema com a mesma lista de materiais que você selecionou no seu cadastro, você pode selecionar uma das opções ou continuar salvando o cadastro atual.", dominio, modulo)); |
366 | - internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICOES", "Confirma a operação de finzalizar a(s) requisição(ões)?", dominio, modulo)); | 391 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICOES", "Confirma a operação de finalizar a(s) requisição(ões)?", dominio, modulo)); |
367 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAIS_CONSUMO_REQUISICAO_OBRIGATORIO", "Materiais de consumo são obrigatórios!", dominio, modulo)); | 392 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAIS_CONSUMO_REQUISICAO_OBRIGATORIO", "Materiais de consumo são obrigatórios!", dominio, modulo)); |
368 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAIS_QUANTIDADE_ZERO", "A quantidade dos itens que estão selecionados para baixa não pode ser zero!", dominio, modulo)); | 393 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAIS_QUANTIDADE_ZERO", "A quantidade dos itens que estão selecionados para baixa não pode ser zero!", dominio, modulo)); |
369 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAL_ESTOQUE_SEM_ESTOQUE", "O material selecionado não contém saldo no estoque", dominio, modulo)); | 394 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.MATERIAL_ESTOQUE_SEM_ESTOQUE", "O material selecionado não contém saldo no estoque", dominio, modulo)); |
@@ -397,6 +422,26 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -397,6 +422,26 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
397 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_ENDERECOS_ESTOQUE_DESVINCULADOS_MATERIAL", "Todos os materiais desta entrada tiveram seu endereço de estoque retirados!", dominio, modulo)); | 422 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_ENDERECOS_ESTOQUE_DESVINCULADOS_MATERIAL", "Todos os materiais desta entrada tiveram seu endereço de estoque retirados!", dominio, modulo)); |
398 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_ENDERECOS_ESTOQUE_PADRAO_VINCULADOS_MATERIAL", "Todos os materiais desta entrada que tinham endereços padrões neste almoxarifado foram vinculados a ele!", dominio, modulo)); | 423 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ENTRADA_ENDERECOS_ESTOQUE_PADRAO_VINCULADOS_MATERIAL", "Todos os materiais desta entrada que tinham endereços padrões neste almoxarifado foram vinculados a ele!", dominio, modulo)); |
399 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.EXCLUSAO_ULTIMO_ITEM_ENTRADA", "É necessário existir ao menos um item nesta lista, para continuar exclua a entrada inteira ou adicione outro item primeiro!", dominio, modulo)); | 424 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.EXCLUSAO_ULTIMO_ITEM_ENTRADA", "É necessário existir ao menos um item nesta lista, para continuar exclua a entrada inteira ou adicione outro item primeiro!", dominio, modulo)); |
425 | + | ||
426 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.FINALIZAR_ATENDIMENTO_SOMENTE_ATENDIMENTO_PARCIAL", "A finalização de atendimento somente é permitido para requisições com a situação igual a 'Atendida parcialmente'.", dominio, modulo)); | ||
427 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.EXCLUIR_ATENDIMENTO_SOMENTE_ATENDIMENTO_PARCIAL_FINALIZADA", "A exclusão de atendimento somente é permitido para requisições com a situação igual a 'Atendida parcialmente' ou 'Finalizada'.", dominio, modulo)); | ||
428 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICAO", "Confirma finalização das requisições selecionados?", dominio, modulo)); | ||
429 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_EXCLUSAO_ATENDIMENTO_REQUISICAO", "Confirma exclusão dos atendimentos selecionados?", dominio, modulo)); | ||
430 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.NAO_PERMITIDO_ATENDER_REQUISICAO_FINALIZADA", "Atendimento não permitido pois há requisições finalizadas selecionadas para atendimento. Desmarque as requisições finalizadas e clique novamente em 'Atender'.", dominio, modulo)); | ||
431 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.VALIDACAO.DATA_FINALIZACAO_FORA_REFERENCIA", "Exclusão não permitida. Data de finalização da requisição %s fora da referência vigente.", dominio, modulo)); | ||
432 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INFO_FILTRO_MATERIAL_REQUISICAO", "O atendimento será realizado para os materiais selecionados na busca avançada.", dominio, modulo)); | ||
433 | + | ||
434 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REMOVER_REQUISICAO_ATENDIMENTO", "Remover requisição deste atendimento", dominio, modulo)); | ||
435 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REQUISICAO_EM_ATENDIMENTO", "está em atendimento pelo atendente ", dominio, modulo)); | ||
436 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.DESMARQUE_REQUISICAO_EM_ATENDIMENTO", "Desmarque esta requisição de consumo para prosseguir o atendimento.", dominio, modulo)); | ||
437 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ATENDER_MAIS_DE_UM_ENDERECO", "Atender utilizando mais de um endereco", dominio, modulo)); | ||
438 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_NAO_INICIADO", "Somente é permitido realizar essa ação para requisições que foram iniciadas o atendimento por você. Desmarque as requisições que não foram iniciadas o atendimento para prosseguir.", dominio, modulo)); | ||
439 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_INICIADO_OUTRO_ATENDENTE", "Somente é permitido realizar essa ação para requisições que foram iniciadas o atendimento por você. Desmarque as requisições que foram iniciadas por outros atendentes para prosseguir.", dominio, modulo)); | ||
440 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICAO_NAO_ATENDIDA_COMPLETAMENTE", "Há requisições selecionados que não tiveram o atendimento completo, deseja realmente finalizar essas requisições?", dominio, modulo)); | ||
441 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_ALERTA_EXCLUSAO_ATENDIMENTO_REQUISICAO", "Deseja mesmo excluir o atendimento da requisição selecionada? Essa ação devolverá a quantidade de materiais fornecida para o estoque, bem como seus os movimentos financeiros e retornará a requisição para o status ‘Pronta para atendimento’.", dominio, modulo)); | ||
442 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.CONFIRMA_SALVAR_FINALIZAR_REQUISICAO", "Confirma a operação de finalizar a requisição?", dominio, modulo)); | ||
443 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INFO_ATENDIMENTOS_INICIADOS", "Os atendimentos destas requisições estão disponíveis apenas para você até você salvar ou cancelar as mesmas. Outro usuário não poderá acessá-las enquanto isso.", dominio, modulo)); | ||
444 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INFO_ATENDIMENTO_INICIADO", "O atendimento dessa requisição está disponível apenas para você até você salvar ou cancelar a mesma. Outro usuário não poderá acessá-la enquanto isso.", dominio, modulo)); | ||
400 | } | 445 | } |
401 | } | 446 | } |
402 | 447 |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
@@ -10,6 +10,7 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -10,6 +10,7 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
10 | 'RequisicaoConsumoRepository', | 10 | 'RequisicaoConsumoRepository', |
11 | 'EstruturaOrganizacionalAlmoxarifadoRepository', | 11 | 'EstruturaOrganizacionalAlmoxarifadoRepository', |
12 | 'DominioRepository', 'EstruturaOrganizacionalPatrimonioRepository', | 12 | 'DominioRepository', 'EstruturaOrganizacionalPatrimonioRepository', |
13 | + 'MaterialLocalEstoqueRepository', | ||
13 | function AtendimentoRequisicaoConsumoController($scope, | 14 | function AtendimentoRequisicaoConsumoController($scope, |
14 | $translate, | 15 | $translate, |
15 | $timeout, | 16 | $timeout, |
@@ -18,16 +19,15 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -18,16 +19,15 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
18 | AtendimentoRequisicaoConsumoItemRepository, | 19 | AtendimentoRequisicaoConsumoItemRepository, |
19 | RequisicaoConsumoRepository, | 20 | RequisicaoConsumoRepository, |
20 | EstruturaOrganizacionalAlmoxarifadoRepository, | 21 | EstruturaOrganizacionalAlmoxarifadoRepository, |
21 | - DominioRepository, EstruturaOrganizacionalPatrimonioRepository) { | 22 | + DominioRepository, EstruturaOrganizacionalPatrimonioRepository, |
23 | + MaterialLocalEstoqueRepository) { | ||
22 | 24 | ||
23 | $scope.TIPO_STATUS_REQUISICAO = "tipoStatusRequisicao"; | 25 | $scope.TIPO_STATUS_REQUISICAO = "tipoStatusRequisicao"; |
24 | 26 | ||
27 | + $scope.TIPO_STATUS_ATENDIDA_PARCIALMENTE = 1; | ||
28 | + | ||
25 | $scope.TIPO_STATUS_PRONTA_PARA_ATENDIMENTO = 2; | 29 | $scope.TIPO_STATUS_PRONTA_PARA_ATENDIMENTO = 2; |
26 | 30 | ||
27 | - $scope.TIPO_STATUS_ATENDIDA_PARCIALMENTE = 3; | ||
28 | - | ||
29 | - $scope.TIPO_STATUS_ATENDIDA = 4; | ||
30 | - | ||
31 | $scope.TIPO_STATUS_FINALIZADA = 5; | 31 | $scope.TIPO_STATUS_FINALIZADA = 5; |
32 | 32 | ||
33 | $scope.atendimentoRequisicaoConsumo = {}; | 33 | $scope.atendimentoRequisicaoConsumo = {}; |
@@ -56,7 +56,13 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -56,7 +56,13 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
56 | 56 | ||
57 | // Atualiza pagina de pesquisa | 57 | // Atualiza pagina de pesquisa |
58 | $scope.atualizaPaginaPesquisa = function () { | 58 | $scope.atualizaPaginaPesquisa = function () { |
59 | + | ||
60 | + var requisicaoVH = { idsRequisicoes : $scope.idsRequisicoesSelecionados, statusAtendimentoRequsicao : false}; | ||
61 | + | ||
62 | + RequisicaoConsumoRepository.atualizarSituacaoAtendimentoRequisicoes(requisicaoVH).then(function(result) { | ||
59 | angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult(); | 63 | angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult(); |
64 | + }); | ||
65 | + | ||
60 | }; | 66 | }; |
61 | 67 | ||
62 | $scope.removerAtendimentoRequisicao = function(){ | 68 | $scope.removerAtendimentoRequisicao = function(){ |
@@ -83,6 +89,24 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -83,6 +89,24 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
83 | } | 89 | } |
84 | }); | 90 | }); |
85 | }; | 91 | }; |
92 | + | ||
93 | + $scope.removerRequisicaoDoAtendimento = function(index){ | ||
94 | + $scope.$openModalConfirm({ | ||
95 | + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'), | ||
96 | + callback: function(){ | ||
97 | + var requisicaoRemover = $scope.atendimentos[index]; | ||
98 | + RequisicaoConsumoRepository.atualizarSituacaoAtendimento(requisicaoRemover.requisicaoConsumo.id, false).then(function(result) { | ||
99 | + $scope.atendimentos.splice(index, 1); | ||
100 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
101 | + if($scope.atendimentos.length == 0){ | ||
102 | + $scope.$showPageSearchWorkspace($scope.workspace); | ||
103 | + $scope.atualizaPaginaPesquisa(); | ||
104 | + } | ||
105 | + }); | ||
106 | + | ||
107 | + } | ||
108 | + }); | ||
109 | + }; | ||
86 | 110 | ||
87 | 111 | ||
88 | // Limpa o formulario preenchido | 112 | // Limpa o formulario preenchido |
@@ -208,17 +232,6 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -208,17 +232,6 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
208 | angular.copy(filterCriteriaTemp, $scope.filterCriteria); | 232 | angular.copy(filterCriteriaTemp, $scope.filterCriteria); |
209 | 233 | ||
210 | 234 | ||
211 | -// EstruturaOrganizacionalPatrimonioRepository.getAlmoxarifadoPadrao($scope.usuarioLogado.organizacao.id).then(function(result){ | ||
212 | -// $scope.estruturaAlmoxarifadoPadrao = {}; | ||
213 | -// if(result.originalElement.estruturaOrganizacional){ | ||
214 | -// $scope.estruturaAlmoxarifadoPadrao = result.originalElement.estruturaOrganizacional; | ||
215 | -// } | ||
216 | -// }); | ||
217 | - | ||
218 | - | ||
219 | - DominioRepository.buscaDominioByCodigoAndChave($scope.TIPO_STATUS_ATENDIDA ,$scope.TIPO_STATUS_REQUISICAO).then(function(result) { | ||
220 | - $scope.tipoStatusRequisicaoAtendida = result.originalElement; | ||
221 | - }); | ||
222 | DominioRepository.buscaDominioByCodigoAndChave($scope.TIPO_STATUS_ATENDIDA_PARCIALMENTE ,$scope.TIPO_STATUS_REQUISICAO).then(function(result) { | 235 | DominioRepository.buscaDominioByCodigoAndChave($scope.TIPO_STATUS_ATENDIDA_PARCIALMENTE ,$scope.TIPO_STATUS_REQUISICAO).then(function(result) { |
223 | $scope.tipoStatusRequisicaoAtendidaParcialmente = result.originalElement; | 236 | $scope.tipoStatusRequisicaoAtendidaParcialmente = result.originalElement; |
224 | }); | 237 | }); |
@@ -271,62 +284,115 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -271,62 +284,115 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
271 | }); | 284 | }); |
272 | }; | 285 | }; |
273 | 286 | ||
274 | - $scope.prepararAtendimentoRequisicoes = function(listaSelecionados) { | ||
275 | - $scope.edit = true; | 287 | + $scope.prepararAtendimentoRequisicoes = function(atendimentoVH, edit) { |
288 | + $scope.edit = edit; | ||
276 | $scope.atendimentos = []; | 289 | $scope.atendimentos = []; |
277 | $scope.idsRequisicoesSelecionados = []; | 290 | $scope.idsRequisicoesSelecionados = []; |
291 | + $scope.atendimentoRequisicaoConsumo.dataAtendimento = new Date(); | ||
278 | $scope.requisicoesSelecionadas = []; | 292 | $scope.requisicoesSelecionadas = []; |
279 | - $scope.requisicoesSelecionadas = listaSelecionados; | ||
280 | - listaSelecionados.forEach(function(requisicao){ | ||
281 | - $scope.idsRequisicoesSelecionados.push(requisicao.id); | ||
282 | - }); | 293 | + $scope.requisicoesSelecionadas = atendimentoVH.requisicoesSelecionadas; |
294 | + | ||
295 | + delete atendimentoVH.requisicoesSelecionadas; | ||
296 | + | ||
297 | + $scope.idsRequisicoesSelecionados = atendimentoVH.idsRequisicao; | ||
298 | + | ||
283 | if ($scope.idsRequisicoesSelecionados && $scope.requisicoesSelecionadas && $scope.idsRequisicoesSelecionados.length > 0) { | 299 | if ($scope.idsRequisicoesSelecionados && $scope.requisicoesSelecionadas && $scope.idsRequisicoesSelecionados.length > 0) { |
284 | - | ||
285 | - if (verificarSelecaoRequisicaoAtendida()) { | ||
286 | - $scope.showAlert("warning", $translate.instant('ALMOXARIFADO.MSG.REQUISICAO_JA_ATENDIDA')); | ||
287 | - } else { | ||
288 | - iniciarAtendimentoRequisicoes(); | ||
289 | - } | 300 | + atendimentoVH.bloquearAtendimento = $scope.edit; |
301 | + iniciarAtendimentoRequisicoes(atendimentoVH); | ||
290 | } else { | 302 | } else { |
291 | $scope.showAlert("warning", $translate.instant('MSG.NENHUM_ITEM_SELECIONADO')); | 303 | $scope.showAlert("warning", $translate.instant('MSG.NENHUM_ITEM_SELECIONADO')); |
292 | } | 304 | } |
293 | }; | 305 | }; |
294 | 306 | ||
295 | - function verificarSelecaoRequisicaoAtendida() { | ||
296 | - var hasRequisicaoAtendida = false; | ||
297 | - $scope.requisicoesSelecionadas.forEach(function (requisicao) { | ||
298 | - if (requisicao["tipoStatusRequisicao.codigo"] == $scope.TIPO_STATUS_ATENDIDA) { | ||
299 | - hasRequisicaoAtendida = true; | ||
300 | - return; | ||
301 | - } | ||
302 | - }); | ||
303 | - | ||
304 | - return hasRequisicaoAtendida; | ||
305 | - } | ||
306 | - | ||
307 | - function iniciarAtendimentoRequisicoes() { | 307 | + function iniciarAtendimentoRequisicoes(atendimentoVH) { |
308 | $scope.setLoadingPesquisa(true); | 308 | $scope.setLoadingPesquisa(true); |
309 | - RequisicaoConsumoRepository.atenderRequisicoes($scope.idsRequisicoesSelecionados).then(function(result){ | 309 | + RequisicaoConsumoRepository.atenderRequisicoes(atendimentoVH).then(function(result){ |
310 | result.forEach(function (requisicao) { | 310 | result.forEach(function (requisicao) { |
311 | $scope.addRequisicaoConsumoAoAtendimento(requisicao.originalElement); | 311 | $scope.addRequisicaoConsumoAoAtendimento(requisicao.originalElement); |
312 | }); | 312 | }); |
313 | - $scope.$openModal('/cit-almoxarifado-web/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEditModal.html', 'lg'); | 313 | + //$scope.$openModal('/cit-almoxarifado-web/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEditModal.html', 'lg'); |
314 | + $scope.$showPageEditWorkspace($scope.workspace); | ||
314 | $scope.setLoading(false); | 315 | $scope.setLoading(false); |
315 | }); | 316 | }); |
316 | } | 317 | } |
317 | 318 | ||
318 | $scope.addRequisicaoConsumoAoAtendimento = function(req){ | 319 | $scope.addRequisicaoConsumoAoAtendimento = function(req){ |
319 | - var atendimento = {requisicaoConsumo : req}; | ||
320 | - if(atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_PRONTA_PARA_ATENDIMENTO | ||
321 | - || atendimento.requisicaoConsumo.tipoStatusRequisicao.codigo == $scope.TIPO_STATUS_ATENDIDA_PARCIALMENTE){ | 320 | + if(req.atendimentoRequisicaoConsumo){ |
321 | + var atendimento = req.atendimentoRequisicaoConsumo; | ||
322 | + delete req.atendimentoRequisicaoConsumo; | ||
323 | + | ||
324 | + atendimento.requisicaoConsumo = req; | ||
325 | + | ||
326 | + | ||
327 | + var contem = false; | ||
328 | + for(var index = atendimento.atendimentoRequisicaoConsumoItems.length - 1; index >= 0; index--){ | ||
329 | + atendimento.requisicaoConsumo.requisicaoConsumoItens.forEach(function(item){ | ||
330 | + if(item.id === atendimento.atendimentoRequisicaoConsumoItems[index].requisicaoConsumoItem.id){ | ||
331 | + contem = true; | ||
332 | + } | ||
333 | + }); | ||
334 | + | ||
335 | + if(!contem){ | ||
336 | + atendimento.atendimentoRequisicaoConsumoItems.splice(index, 1); | ||
337 | + }else{ | ||
338 | + contem = false; | ||
339 | + } | ||
340 | + } | ||
341 | + | ||
342 | + atendimento.atendimentoRequisicaoConsumoItems.forEach(function(atendimentoItem){ | ||
343 | + atendimentoItem.$locaisEstoque = []; | ||
344 | + MaterialLocalEstoqueRepository.buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(atendimentoItem.material.id, req.almoxarifado.id).then(function(result) { | ||
345 | + result.forEach(function(localEstoque){ | ||
346 | + var atendimentoRequisicaoConsumoItemEndereco = { | ||
347 | + materialLocalEstoque: localEstoque.originalElement | ||
348 | + }; | ||
349 | + | ||
350 | + atendimentoItem.$locaisEstoque.push(atendimentoRequisicaoConsumoItemEndereco); | ||
351 | + }); | ||
352 | + }); | ||
353 | + | ||
354 | + atendimentoItem.$somaQtdAtendida = 0; | ||
355 | + if(atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.length > 1){ | ||
356 | + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.forEach(function(atendimentoItemEndereco){ | ||
357 | + atendimentoItem.$somaQtdAtendida += parseFloat(atendimentoItemEndereco.quantidade); | ||
358 | + }); | ||
359 | + } | ||
360 | + | ||
361 | + buscarInformacoesParaAtendimento(atendimentoItem); | ||
362 | + }); | ||
363 | + $scope.atendimentos.push(atendimento); | ||
364 | + | ||
365 | + }else{ | ||
366 | + var atendimento = {requisicaoConsumo : req}; | ||
367 | + | ||
322 | atendimento.requisicaoConsumo.requisicaoConsumoItens.forEach(function (requisicaoConsumoItem) { | 368 | atendimento.requisicaoConsumo.requisicaoConsumoItens.forEach(function (requisicaoConsumoItem) { |
323 | if(!atendimento.atendimentoRequisicaoConsumoItems){ | 369 | if(!atendimento.atendimentoRequisicaoConsumoItems){ |
324 | atendimento.atendimentoRequisicaoConsumoItems = []; | 370 | atendimento.atendimentoRequisicaoConsumoItems = []; |
325 | } | 371 | } |
372 | + | ||
326 | var atendimentoItem = { | 373 | var atendimentoItem = { |
327 | material : requisicaoConsumoItem.materialConsumo, | 374 | material : requisicaoConsumoItem.materialConsumo, |
328 | - requisicaoConsumoItem : requisicaoConsumoItem | 375 | + requisicaoConsumoItem : requisicaoConsumoItem, |
376 | + $locaisEstoque: [], | ||
377 | + atendimentoRequisicaoConsumoItemEnderecos: [] | ||
329 | }; | 378 | }; |
379 | + | ||
380 | + MaterialLocalEstoqueRepository.buscarLocaisEstoquePorIdMaterialIdAlmoxarifado(requisicaoConsumoItem.materialConsumo.id, req.almoxarifado.id).then(function(result) { | ||
381 | + result.forEach(function(localEstoque){ | ||
382 | + var atendimentoRequisicaoConsumoItemEndereco = { | ||
383 | + materialLocalEstoque: localEstoque.originalElement | ||
384 | + }; | ||
385 | + | ||
386 | + atendimentoItem.$locaisEstoque.push(atendimentoRequisicaoConsumoItemEndereco); | ||
387 | + | ||
388 | + if(localEstoque.localPrincipal){ | ||
389 | + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.push(atendimentoRequisicaoConsumoItemEndereco); | ||
390 | + } | ||
391 | + }); | ||
392 | + }); | ||
393 | + | ||
394 | + buscarInformacoesParaAtendimento(atendimentoItem); | ||
395 | + | ||
330 | atendimento.atendimentoRequisicaoConsumoItems.push(atendimentoItem); | 396 | atendimento.atendimentoRequisicaoConsumoItems.push(atendimentoItem); |
331 | }); | 397 | }); |
332 | $scope.atendimentos.push(atendimento); | 398 | $scope.atendimentos.push(atendimento); |
@@ -352,16 +418,39 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -352,16 +418,39 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
352 | $scope.finalizarRequisicoes($scope.atendimentoRequisicaoConsumo); | 418 | $scope.finalizarRequisicoes($scope.atendimentoRequisicaoConsumo); |
353 | } else { | 419 | } else { |
354 | $scope.setLoadingSalva(true); | 420 | $scope.setLoadingSalva(true); |
355 | - AtendimentoRequisicaoConsumoRepository.save($scope.atendimentoRequisicaoConsumo).then(function(result) { | ||
356 | - $scope.resetForm(); | ||
357 | - $scope.listaSelecionados = []; | ||
358 | - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); | ||
359 | - $scope.atendimentoRequisicaoConsumoForm.$submitted = false; | ||
360 | - $scope.$modalInstance.dismiss('cancel'); | ||
361 | - angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult(); | ||
362 | - $scope.resetForm(); | ||
363 | - $scope.setLoading(false); | ||
364 | - }); | 421 | + AtendimentoRequisicaoConsumoRepository.validaQuantidadesAtendidas($scope.atendimentoRequisicaoConsumo).then(function(result){ |
422 | + if(result.materiaisLocalEstoque.length > 0){ | ||
423 | + $scope.atendimentos.forEach(function(atendimento){ | ||
424 | + atendimento.atendimentoRequisicaoConsumoItems.forEach(function(atendimentoItem){ | ||
425 | + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.forEach(function(itemEndereco){ | ||
426 | + result.materiaisLocalEstoque.forEach(function(localEstoque){ | ||
427 | + if(itemEndereco.materialLocalEstoque.id === localEstoque.id){ | ||
428 | + atendimentoItem.$hasError = true; | ||
429 | + itemEndereco.$hasError = true; | ||
430 | + } | ||
431 | + }); | ||
432 | + | ||
433 | + }); | ||
434 | + }); | ||
435 | + }); | ||
436 | + $scope.showAlert("error", result.mensagemErro, " ", false); | ||
437 | + $scope.setLoading(false); | ||
438 | + }else{ | ||
439 | + AtendimentoRequisicaoConsumoRepository.save($scope.atendimentoRequisicaoConsumo).then(function(result) { | ||
440 | + $scope.resetForm(); | ||
441 | + $scope.listaSelecionados = []; | ||
442 | + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); | ||
443 | + $scope.atendimentoRequisicaoConsumoForm.$submitted = false; | ||
444 | + angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult(); | ||
445 | + $scope.resetForm(); | ||
446 | + | ||
447 | + $scope.$showPageSearchWorkspace($scope.workspace); | ||
448 | + $scope.atualizaPaginaPesquisa(); | ||
449 | + | ||
450 | + $scope.setLoading(false); | ||
451 | + }); | ||
452 | + } | ||
453 | + }); | ||
365 | } | 454 | } |
366 | } else { | 455 | } else { |
367 | $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.ATENDA_AO_MENOS_UMA_REQUISICAO'), " ", false); | 456 | $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.ATENDA_AO_MENOS_UMA_REQUISICAO'), " ", false); |
@@ -371,6 +460,70 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -371,6 +460,70 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
371 | } | 460 | } |
372 | 461 | ||
373 | }; | 462 | }; |
463 | + | ||
464 | + $scope.validarQuantidadesAtendidas = function(){ | ||
465 | + $scope.setLoading(true); | ||
466 | + $scope.atendimentoRequisicaoConsumo.atendimentos = []; | ||
467 | + angular.copy($scope.atendimentos, $scope.atendimentoRequisicaoConsumo.atendimentos); | ||
468 | + | ||
469 | + limparLinhasComErro(); | ||
470 | + | ||
471 | + AtendimentoRequisicaoConsumoRepository.validaQuantidadesAtendidas($scope.atendimentoRequisicaoConsumo).then(function(result){ | ||
472 | + if(result.materiaisLocalEstoque.length > 0){ | ||
473 | + $scope.atendimentos.forEach(function(atendimento){ | ||
474 | + atendimento.atendimentoRequisicaoConsumoItems.forEach(function(atendimentoItem){ | ||
475 | + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.forEach(function(itemEndereco){ | ||
476 | + result.materiaisLocalEstoque.forEach(function(localEstoque){ | ||
477 | + if(itemEndereco.materialLocalEstoque.id === localEstoque.id){ | ||
478 | + atendimentoItem.$hasError = true; | ||
479 | + itemEndereco.$hasError = true; | ||
480 | + } | ||
481 | + }); | ||
482 | + }); | ||
483 | + }); | ||
484 | + }); | ||
485 | + $scope.showAlert("error", result.mensagemErro, " ", false); | ||
486 | + $scope.setLoading(false); | ||
487 | + } | ||
488 | + | ||
489 | + $scope.setLoading(false); | ||
490 | + }); | ||
491 | + } | ||
492 | + | ||
493 | + $scope.validarQuantidadeAtendidaMaiorQuantidadeRequisitada = function(atendimentoItem){ | ||
494 | + atendimentoItem.$somaQtdAtendida = 0; | ||
495 | + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.forEach(function(atendimentoItemEndereco){ | ||
496 | + atendimentoItem.$somaQtdAtendida += parseFloat(atendimentoItemEndereco.quantidade); | ||
497 | + }); | ||
498 | + | ||
499 | + if(atendimentoItem.$somaQtdAtendida > atendimentoItem.requisicaoConsumoItem.quantidade){ | ||
500 | + atendimentoItem.$hasError = true; | ||
501 | + $scope.showAlert("error", $translate.instant('ALMOXARIFADO.VALIDACAO.QUANTIDADE_ATENDIDA_MAIOR_REQUISITADA'), " ", false); | ||
502 | + } | ||
503 | + } | ||
504 | + | ||
505 | + $scope.validarQuantidades = function(atendimentoItem){ | ||
506 | + $scope.validarQuantidadesAtendidas(); | ||
507 | + $scope.validarQuantidadeAtendidaMaiorQuantidadeRequisitada(atendimentoItem); | ||
508 | + } | ||
509 | + | ||
510 | + function limparLinhasComErro(){ | ||
511 | + $scope.atendimentos.forEach(function(atendimento){ | ||
512 | + atendimento.atendimentoRequisicaoConsumoItems.forEach(function(atendimentoItem){ | ||
513 | + atendimentoItem.atendimentoRequisicaoConsumoItemEnderecos.forEach(function(itemEndereco){ | ||
514 | + atendimentoItem.$hasError = false; | ||
515 | + itemEndereco.$hasError = false; | ||
516 | + }); | ||
517 | + }); | ||
518 | + }); | ||
519 | + } | ||
520 | + | ||
521 | + $scope.teste = function(item){ | ||
522 | + if(item){ | ||
523 | + $scope.aplicarValidacaoDecimal(item); | ||
524 | + $scope.validarQuantidadesAtendidas(); | ||
525 | + } | ||
526 | + } | ||
374 | 527 | ||
375 | $scope.saveEdit = function(isFinalizado){ | 528 | $scope.saveEdit = function(isFinalizado){ |
376 | $scope.atendimentoRequisicaoConsumoForm.$submitted = true; | 529 | $scope.atendimentoRequisicaoConsumoForm.$submitted = true; |
@@ -451,8 +604,9 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -451,8 +604,9 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
451 | $scope.finalizarRequisicoes = function(atendimentoRequisicaoConsumo){ | 604 | $scope.finalizarRequisicoes = function(atendimentoRequisicaoConsumo){ |
452 | if($scope.idsRequisicoesSelecionados && $scope.idsRequisicoesSelecionados.length > 0){ | 605 | if($scope.idsRequisicoesSelecionados && $scope.idsRequisicoesSelecionados.length > 0){ |
453 | $scope.$openModalConfirm({ | 606 | $scope.$openModalConfirm({ |
454 | - message: $translate.instant('ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICOES'), | 607 | + message: $translate.instant('ALMOXARIFADO.MSG.CONFIRMA_SALVAR_FINALIZAR_REQUISICAO'), |
455 | callback: function () { | 608 | callback: function () { |
609 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
456 | $scope.setLoadingSalva(true); | 610 | $scope.setLoadingSalva(true); |
457 | AtendimentoRequisicaoConsumoRepository.save(atendimentoRequisicaoConsumo).then(function(result) { | 611 | AtendimentoRequisicaoConsumoRepository.save(atendimentoRequisicaoConsumo).then(function(result) { |
458 | var idsRequisicoesSelecionados = []; | 612 | var idsRequisicoesSelecionados = []; |
@@ -462,13 +616,13 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -462,13 +616,13 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
462 | RequisicaoConsumoRepository.finalizarRequisicoes({idsRequisicoes : idsRequisicoesSelecionados, | 616 | RequisicaoConsumoRepository.finalizarRequisicoes({idsRequisicoes : idsRequisicoesSelecionados, |
463 | dataFinalizacao : atendimentoRequisicaoConsumo.$dataFinalizacao}).then(function() { | 617 | dataFinalizacao : atendimentoRequisicaoConsumo.$dataFinalizacao}).then(function() { |
464 | angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult(); | 618 | angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult(); |
465 | - $scope.$modalConfirmInstance.dismiss('cancel'); | ||
466 | - $scope.$modalInstance.dismiss('cancel'); | ||
467 | $scope.listaSelecionados = []; | 619 | $scope.listaSelecionados = []; |
468 | $scope.resetForm(); | 620 | $scope.resetForm(); |
469 | $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); | 621 | $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); |
470 | $scope.atendimentoRequisicaoConsumoForm.$submitted = false; | 622 | $scope.atendimentoRequisicaoConsumoForm.$submitted = false; |
471 | $scope.setLoading(false); | 623 | $scope.setLoading(false); |
624 | + $scope.$showPageSearchWorkspace($scope.workspace); | ||
625 | + $scope.atualizaPaginaPesquisa(); | ||
472 | }); | 626 | }); |
473 | }); | 627 | }); |
474 | } | 628 | } |
@@ -478,21 +632,94 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -478,21 +632,94 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
478 | } | 632 | } |
479 | }; | 633 | }; |
480 | 634 | ||
481 | - $scope.buscarInformacoesParaAtendimento = function(atendimentoRequisicaoConsumoItem){ | 635 | + function buscarInformacoesParaAtendimento(atendimentoRequisicaoConsumoItem){ |
482 | atendimentoRequisicaoConsumoItem.organizacao = $scope.estruturaAlmoxarifadoPadrao; | 636 | atendimentoRequisicaoConsumoItem.organizacao = $scope.estruturaAlmoxarifadoPadrao; |
483 | - atendimentoRequisicaoConsumoItem.$verInfo = !atendimentoRequisicaoConsumoItem.$verInfo; | ||
484 | - if(atendimentoRequisicaoConsumoItem.$verInfo){ | ||
485 | - $scope.setLoadingPesquisa(true); | ||
486 | - AtendimentoRequisicaoConsumoItemRepository.getInformacoesParaRequisicao(atendimentoRequisicaoConsumoItem).then(function(result) { | ||
487 | - atendimentoRequisicaoConsumoItem.$info = result.originalElement; | ||
488 | - $scope.scrollToCadastro('#tableAtendimentos'); | ||
489 | - $scope.setLoading(false); | ||
490 | - }); | ||
491 | - } | 637 | + AtendimentoRequisicaoConsumoItemRepository.getInformacoesParaRequisicao(atendimentoRequisicaoConsumoItem).then(function(result) { |
638 | + atendimentoRequisicaoConsumoItem.$info = result.originalElement; | ||
639 | + }); | ||
492 | }; | 640 | }; |
493 | 641 | ||
494 | $scope.apresentarInfoAtendimentoItem = function(atendimento){ | 642 | $scope.apresentarInfoAtendimentoItem = function(atendimento){ |
495 | atendimento.$verInfo = !atendimento.$verInfo; | 643 | atendimento.$verInfo = !atendimento.$verInfo; |
496 | }; | 644 | }; |
645 | + | ||
646 | + $scope.openModalEnderecosMaterial = function(enderecosItem, enderecosAdicionados, atendimento, atendimentoItem){ | ||
647 | + $scope.atendimentoEmEdicao = atendimento; | ||
648 | + $scope.atendimentoItemEmEdicao = atendimentoItem; | ||
649 | + | ||
650 | + $scope.listaEnderecosSelect = []; | ||
651 | + | ||
652 | + if(enderecosAdicionados[0] && enderecosAdicionados[0].materialLocalEstoque){ | ||
653 | + if(enderecosAdicionados.length > 0){ | ||
654 | + enderecosItem.forEach(function(enderecoItem){ | ||
655 | + var contem = false; | ||
656 | + enderecosAdicionados.forEach(function(enderecoAdicionado){ | ||
657 | + if(enderecoItem.materialLocalEstoque.id === enderecoAdicionado.materialLocalEstoque.id){ | ||
658 | + contem = true; | ||
659 | + } | ||
660 | + }); | ||
661 | + | ||
662 | + if(!contem){ | ||
663 | + $scope.listaEnderecosSelect.push(enderecoItem); | ||
664 | + }else{ | ||
665 | + contem = false; | ||
666 | + } | ||
667 | + }); | ||
668 | + }else{ | ||
669 | + $scope.listaEnderecosSelect = angular.copy(enderecosItem); | ||
670 | + } | ||
671 | + }else{ | ||
672 | + enderecosAdicionados = []; | ||
673 | + $scope.listaEnderecosSelect = angular.copy(enderecosItem); | ||
674 | + } | ||
675 | + | ||
676 | + $scope.listaEnderecosAdicionados = enderecosAdicionados; | ||
677 | + $scope.$openModal('modal-atendimento-item-enderecos.html', 'md'); | ||
678 | + } | ||
679 | + | ||
680 | + $scope.addEnderecoToList = function(item){ | ||
681 | + if($scope.listaEnderecosAdicionados.indexOf(item) == -1){ | ||
682 | + $scope.listaEnderecosAdicionados.push(item); | ||
683 | + $scope.listaEnderecosSelect.splice($scope.listaEnderecosSelect.indexOf(item), 1); | ||
684 | + } | ||
685 | + }; | ||
686 | + | ||
687 | + $scope.selectAllEnderecos = function(check){ | ||
688 | + $scope.listaEnderecosAdicionados.forEach(function (item) { | ||
689 | + item.$checkedChBox = check; | ||
690 | + }); | ||
691 | + }; | ||
692 | + | ||
693 | + $scope.removeEnderecoFromList = function(){ | ||
694 | + for(var i = $scope.listaEnderecosAdicionados.length - 1; i >= 0; i--){ | ||
695 | + if($scope.listaEnderecosAdicionados[i].$checkedChBox){ | ||
696 | + $scope.listaEnderecosSelect.push($scope.listaEnderecosAdicionados[i]); | ||
697 | + $scope.listaEnderecosAdicionados.splice(i, 1); | ||
698 | + } | ||
699 | + } | ||
700 | + } | ||
701 | + | ||
702 | + $scope.saveListaEnderecos = function(){ | ||
703 | + var hasError = false; | ||
704 | + var mensagemErro = $translate.instant('ALMOXARIFADO.VALIDACAO.QUANTIDADE_ATENDER_SUPERIOR_SALDO_ESTOQUE'); | ||
705 | + $scope.atendimentoItemEmEdicao.$somaQtdAtendida = 0; | ||
706 | + $scope.listaEnderecosAdicionados.forEach(function(item){ | ||
707 | + if(item.materialLocalEstoque.quantidade + parseFloat(item.quantidadeAnterior) < parseFloat(item.quantidade)){ | ||
708 | + hasError = true; | ||
709 | + mensagemErro += "<br />" + item.materialLocalEstoque.endereco.descricao; | ||
710 | + } | ||
711 | + | ||
712 | + if(item.quantidade && !hasError){ | ||
713 | + $scope.atendimentoItemEmEdicao.$somaQtdAtendida += parseFloat(item.quantidade); | ||
714 | + } | ||
715 | + }); | ||
716 | + | ||
717 | + if(!hasError){ | ||
718 | + $scope.atendimentoItemEmEdicao.atendimentoRequisicaoConsumoItemEnderecos = angular.copy($scope.listaEnderecosAdicionados); | ||
719 | + $scope.$modalInstance.dismiss('cancel'); | ||
720 | + }else{ | ||
721 | + $scope.showAlert('error', mensagemErro, " ", false); | ||
722 | + } | ||
723 | + } | ||
497 | 724 | ||
498 | }]); | 725 | }]); |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | -citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'AtendimentoRequisicaoConsumoRepository', '$translate', '$timeout', 'DominioRepository', 'RequisicaoConsumoRepository', | ||
4 | - function AtendimentoRequisicaoConsumoListController($scope, AtendimentoRequisicaoConsumoRepository, $translate, $timeout, DominioRepository, RequisicaoConsumoRepository) { | 3 | +citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'AtendimentoRequisicaoConsumoRepository', '$translate', |
4 | + '$timeout', 'DominioRepository', 'RequisicaoConsumoRepository', | ||
5 | + 'EstruturaOrganizacionalAlmoxarifadoRepository','MaterialConsumoRepository','$filter', | ||
6 | + function AtendimentoRequisicaoConsumoListController($scope, AtendimentoRequisicaoConsumoRepository, $translate, | ||
7 | + $timeout, DominioRepository, RequisicaoConsumoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, MaterialConsumoRepository, $filter) { | ||
5 | $scope.$showAdvancedFilters = false; | 8 | $scope.$showAdvancedFilters = false; |
9 | + $scope.permiteInterromperAtendimento = false; | ||
6 | $scope.listaSelecionados = []; | 10 | $scope.listaSelecionados = []; |
7 | $scope.resetForm = function() { | 11 | $scope.resetForm = function() { |
8 | angular.element("#editAtendimentoRequisicaoConsumo").scope().resetForm(); | 12 | angular.element("#editAtendimentoRequisicaoConsumo").scope().resetForm(); |
@@ -10,38 +14,51 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | @@ -10,38 +14,51 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | ||
10 | 14 | ||
11 | $scope.recarregar = function() { | 15 | $scope.recarregar = function() { |
12 | 16 | ||
17 | + $scope.filtrarCustomizado = false; | ||
18 | + $scope.atendimentoVH = {}; | ||
19 | + $scope.listaUnidadesRequisitantesSelecionadas = []; | ||
20 | + $scope.listaMateriaisConsumoSelecionados = []; | ||
21 | + $scope.listaSelecionados = []; | ||
13 | // DEFINE CABEÇALHOS DA LISTAGEM | 22 | // DEFINE CABEÇALHOS DA LISTAGEM |
14 | $scope.headers = [ {title : $translate.instant('ALMOXARIFADO.LABEL.NUMERO_REQUISICAO'), value : 'numeroRequisicao' } , | 23 | $scope.headers = [ {title : $translate.instant('ALMOXARIFADO.LABEL.NUMERO_REQUISICAO'), value : 'numeroRequisicao' } , |
15 | {title : $translate.instant('ALMOXARIFADO.LABEL.STATUS_REQUISICAO'), value : 'tipoStatusRequisicao.descricao' } , | 24 | {title : $translate.instant('ALMOXARIFADO.LABEL.STATUS_REQUISICAO'), value : 'tipoStatusRequisicao.descricao' } , |
16 | - {title : $translate.instant('ALMOXARIFADO.LABEL.DATA_REQUISICAO'), value : 'dataRequisicao' , filter : 'dateBR'} , | 25 | + {title : $translate.instant('ALMOXARIFADO.LABEL.DATA_REQUISICAO'), value : 'dataRequisicao' , filter : 'dateBR', tamanho : 28} , |
17 | {title : $translate.instant('ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE'), value : 'unidadeRequisitante.nome' } , | 26 | {title : $translate.instant('ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE'), value : 'unidadeRequisitante.nome' } , |
18 | - {title : $translate.instant('ALMOXARIFADO.LABEL.ALMOXARIFADO'), value : 'almoxarifado.nome' } , | ||
19 | - {title : $translate.instant('ALMOXARIFADO.LABEL.CENTRO_CUSTO'), value : 'centroCusto.descricao' }]; | 27 | + {title : $translate.instant('ALMOXARIFADO.LABEL.ALMOXARIFADO'), value : 'almoxarifado.nome' }, |
28 | + {title : $translate.instant('ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO_USUARIO'), value : 'atendente.username'}]; | ||
20 | // DIFINE FILTROS DE PESQUISA E CAMPOS QUE DEVEM SER APRESENTADOS NA LISTAGEM | 29 | // DIFINE FILTROS DE PESQUISA E CAMPOS QUE DEVEM SER APRESENTADOS NA LISTAGEM |
21 | $scope.filterCriteria = { | 30 | $scope.filterCriteria = { |
22 | start : 1, | 31 | start : 1, |
23 | dir : 'asc', | 32 | dir : 'asc', |
24 | - sort : 'id', | 33 | + sort : 'desc:numeroRequisicao;tipoStatusRequisicao.codigo', |
25 | limit : 10, | 34 | limit : 10, |
26 | - fields: ['id', 'numeroRequisicao', 'tipoStatusRequisicao.descricao', 'dataRequisicao', 'unidadeRequisitante.nome', 'almoxarifado.nome', 'centroCusto.descricao', 'tipoStatusRequisicao.codigo'], | 35 | + fields: ['id', 'numeroRequisicao', 'tipoStatusRequisicao.descricao', 'dataRequisicao', 'unidadeRequisitante.nome', 'almoxarifado.nome', 'tipoStatusRequisicao.codigo', |
36 | + 'emAtendimento', 'atendente.id', 'atendente.username'], | ||
27 | filters : [ {type : 'numeric-range', field : 'numeroRequisicao' } , | 37 | filters : [ {type : 'numeric-range', field : 'numeroRequisicao' } , |
28 | {type : 'dominio', field : 'tipoStatusRequisicao.descricao', listaDominio : []} , | 38 | {type : 'dominio', field : 'tipoStatusRequisicao.descricao', listaDominio : []} , |
29 | {type : 'date-range', field : 'dataRequisicao' } , | 39 | {type : 'date-range', field : 'dataRequisicao' } , |
30 | {type : 'string', field : 'unidadeRequisitante.nome' } , | 40 | {type : 'string', field : 'unidadeRequisitante.nome' } , |
31 | - {type : 'string', field : 'almoxarifado.nome' } , | ||
32 | - {type : 'string', field : 'centroCusto.descricao' }] | 41 | + {type : 'string', field : 'almoxarifado.nome' }, |
42 | + {type : 'string', field : 'atendente.username' }] | ||
33 | }; | 43 | }; |
34 | - | ||
35 | - $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'FINALIZADA', comparison: 'ne', notFilter : true}); | 44 | + |
45 | + $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'DEVOLVIDA', comparison: 'ne', notFilter : true}); | ||
36 | $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'NAO_CONCLUIDA', comparison: 'ne', notFilter : true}); | 46 | $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'NAO_CONCLUIDA', comparison: 'ne', notFilter : true}); |
47 | + | ||
37 | }; | 48 | }; |
38 | 49 | ||
39 | $scope.recarregar(); | 50 | $scope.recarregar(); |
51 | + | ||
52 | + $scope.limparBuscaAvancada = function(){ | ||
53 | + $scope.atendimentoVH = {}; | ||
54 | + $scope.listaUnidadesRequisitantesSelecionadas = []; | ||
55 | + $scope.listaMateriaisConsumoSelecionados = []; | ||
56 | + }; | ||
40 | 57 | ||
41 | DominioRepository.findAllDominio('tipoStatusRequisicao').then(function(result) { | 58 | DominioRepository.findAllDominio('tipoStatusRequisicao').then(function(result) { |
42 | var listaDominio = []; | 59 | var listaDominio = []; |
43 | angular.forEach(result, function(dominio){ | 60 | angular.forEach(result, function(dominio){ |
44 | - if(dominio.nome != 'FINALIZADA' && dominio.nome != 'NAO_CONCLUIDA'){ | 61 | + if(dominio.nome != 'NAO_CONCLUIDA' && dominio.nome != 'DEVOLVIDA'){ |
45 | listaDominio.push(dominio) | 62 | listaDominio.push(dominio) |
46 | } | 63 | } |
47 | 64 | ||
@@ -50,15 +67,22 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | @@ -50,15 +67,22 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | ||
50 | }); | 67 | }); |
51 | 68 | ||
52 | // ABRI AtendimentoRequisicaoConsumo SELECIONADA | 69 | // ABRI AtendimentoRequisicaoConsumo SELECIONADA |
53 | - $scope.abrirVisualizar = function(edit){ | ||
54 | - var requisicaoConsumo = $scope.atendimentoRequisicaoConsumoChecked; | ||
55 | - | ||
56 | - if(!requisicaoConsumo) { | ||
57 | - $scope.showAlert('warning', !edit ? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO')); | 70 | + $scope.abrirVisualizar = function(){ |
71 | + | ||
72 | + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) { | ||
73 | + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM')); | ||
58 | return; | 74 | return; |
59 | } | 75 | } |
60 | - angular.element('#editAtendimentoRequisicaoConsumo').scope().getAtendimentoRequisicaoConsumo(requisicaoConsumo, edit); | ||
61 | - $scope.$showPageEditWorkspace($scope.workspace); | 76 | + |
77 | + var idsRequisicoesSelecionados = []; | ||
78 | + $scope.listaSelecionados.forEach(function(requisicao){ | ||
79 | + idsRequisicoesSelecionados.push(requisicao.id); | ||
80 | + }); | ||
81 | + $scope.atendimentoVH.idsRequisicao = idsRequisicoesSelecionados; | ||
82 | + $scope.atendimentoVH.requisicoesSelecionadas = $scope.listaSelecionados; | ||
83 | + $scope.listaSelecionados = []; | ||
84 | + angular.element('#editAtendimentoRequisicaoConsumo').scope().prepararAtendimentoRequisicoes($scope.atendimentoVH, false); | ||
85 | + $scope.recarregar(); | ||
62 | }; | 86 | }; |
63 | 87 | ||
64 | $scope.removerAtendimentoRequisicao = function(){ | 88 | $scope.removerAtendimentoRequisicao = function(){ |
@@ -85,13 +109,308 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | @@ -85,13 +109,308 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | ||
85 | }; | 109 | }; |
86 | 110 | ||
87 | $scope.iniciarAtendimento = function(){ | 111 | $scope.iniciarAtendimento = function(){ |
88 | - angular.element('#editAtendimentoRequisicaoConsumo').scope().prepararAtendimentoRequisicoes($scope.listaSelecionados); | 112 | + |
113 | + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) { | ||
114 | + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM')); | ||
115 | + return; | ||
116 | + } | ||
117 | + | ||
118 | + var permiteAtender = true; | ||
119 | + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) { | ||
120 | + if(requisicaoSelecionado['tipoStatusRequisicao.codigo'] == 5){ | ||
121 | + permiteAtender = false; | ||
122 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.NAO_PERMITIDO_ATENDER_REQUISICAO_FINALIZADA')); | ||
123 | + } | ||
124 | + if(requisicaoSelecionado.emAtendimento && requisicaoSelecionado['atendente.id'] != $scope.usuarioLogado.id){ | ||
125 | + permiteAtender = false; | ||
126 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.LABEL.REQUISICAO_CONSUMO') + ' ' + requisicaoSelecionado.numeroRequisicao | ||
127 | + + ' ' + $translate.instant('ALMOXARIFADO.MSG.REQUISICAO_EM_ATENDIMENTO') + ' ' + requisicaoSelecionado['atendente.username'] | ||
128 | + + ' ' + $translate.instant('ALMOXARIFADO.MSG.DESMARQUE_REQUISICAO_EM_ATENDIMENTO')); | ||
129 | + return; | ||
130 | + } | ||
131 | + }); | ||
132 | + | ||
133 | + if(permiteAtender){ | ||
134 | + | ||
135 | + var idsRequisicoesSelecionados = []; | ||
136 | + $scope.listaSelecionados.forEach(function(requisicao){ | ||
137 | + idsRequisicoesSelecionados.push(requisicao.id); | ||
138 | + }); | ||
139 | + $scope.atendimentoVH.idsRequisicao = idsRequisicoesSelecionados; | ||
140 | + $scope.atendimentoVH.requisicoesSelecionadas = $scope.listaSelecionados; | ||
141 | + $scope.listaSelecionados = []; | ||
142 | + angular.element('#editAtendimentoRequisicaoConsumo').scope().prepararAtendimentoRequisicoes($scope.atendimentoVH, true); | ||
143 | + $scope.recarregar(); | ||
144 | + } | ||
145 | + }; | ||
146 | + function getIdsRequisicao(){ | ||
147 | + $scope.idsSelecionados = []; | ||
148 | + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) { | ||
149 | + $scope.idsSelecionados.push(requisicaoSelecionado.id); | ||
150 | + }); | ||
151 | + } | ||
152 | + | ||
153 | + $scope.finalizarRequisicao = function(){ | ||
154 | + | ||
155 | + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) { | ||
156 | + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM')); | ||
157 | + return; | ||
158 | + } | ||
159 | + | ||
160 | + var permiteFinalizar = true; | ||
161 | + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) { | ||
162 | + if(requisicaoSelecionado['tipoStatusRequisicao.codigo'] != 1){ | ||
163 | + permiteFinalizar = false; | ||
164 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.FINALIZAR_ATENDIMENTO_SOMENTE_ATENDIMENTO_PARCIAL')); | ||
165 | + return; | ||
166 | + } | ||
167 | + }); | ||
168 | + | ||
169 | + if(permiteFinalizar){ | ||
170 | + | ||
171 | + getIdsRequisicao(); | ||
172 | + var atendimentoVH = {idsRequisicao : $scope.idsSelecionados, idOrganizacao : $scope.usuarioLogado.organizacao.id}; | ||
173 | + | ||
174 | + AtendimentoRequisicaoConsumoRepository.validarFinalizacaoRequisicoes(atendimentoVH).then(function(result) { | ||
175 | + if(result){ | ||
176 | + $scope.$openModalConfirm({ | ||
177 | + message: $translate.instant('ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICAO'), | ||
178 | + callback: function () { | ||
179 | + | ||
180 | + var atendimentoVH = {idsRequisicao : $scope.idsSelecionados, idOrganizacao : $scope.usuarioLogado.organizacao.id}; | ||
181 | + AtendimentoRequisicaoConsumoRepository.finalizarRequisicoes(atendimentoVH).then(function(result) { | ||
182 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
183 | + $scope.showAlert('success', $translate.instant('MSG.MG001'), " ", false); | ||
184 | + $scope.recarregar(); | ||
185 | + angular.element("#searchAtendimentoRequisicaoConsumo").scope().fetchResult(); | ||
186 | + }); | ||
187 | + } | ||
188 | + }); | ||
189 | + }else{ | ||
190 | + $scope.$openModalConfirm({ | ||
191 | + message: $translate.instant('ALMOXARIFADO.MSG.CONFIRMA_FINALIZAR_REQUISICAO_NAO_ATENDIDA_COMPLETAMENTE'), | ||
192 | + callback: function () { | ||
193 | + | ||
194 | + var atendimentoVH = {idsRequisicao : $scope.idsSelecionados, idOrganizacao : $scope.usuarioLogado.organizacao.id}; | ||
195 | + AtendimentoRequisicaoConsumoRepository.finalizarRequisicoes(atendimentoVH).then(function(result) { | ||
196 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
197 | + $scope.showAlert('success', $translate.instant('MSG.MG001'), " ", false); | ||
198 | + $scope.recarregar(); | ||
199 | + angular.element("#searchAtendimentoRequisicaoConsumo").scope().fetchResult(); | ||
200 | + }); | ||
201 | + } | ||
202 | + }); | ||
203 | + } | ||
204 | + }); | ||
205 | + | ||
206 | + } | ||
207 | + | ||
208 | + }; | ||
209 | + | ||
210 | + $scope.excluirAtendimento = function(){ | ||
211 | + | ||
212 | + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) { | ||
213 | + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM')); | ||
214 | + return; | ||
215 | + } | ||
216 | + | ||
217 | + var permiteExcluir = true; | ||
218 | + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) { | ||
219 | + if(requisicaoSelecionado['tipoStatusRequisicao.codigo'] != 1 && requisicaoSelecionado['tipoStatusRequisicao.codigo'] != 5){ | ||
220 | + permiteExcluir = false; | ||
221 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.EXCLUIR_ATENDIMENTO_SOMENTE_ATENDIMENTO_PARCIAL_FINALIZADA')); | ||
222 | + return; | ||
223 | + } | ||
224 | + }); | ||
225 | + | ||
226 | + if(permiteExcluir){ | ||
227 | + $scope.$openModalConfirm({ | ||
228 | + message: $translate.instant('ALMOXARIFADO.MSG.CONFIRMA_ALERTA_EXCLUSAO_ATENDIMENTO_REQUISICAO'), | ||
229 | + callback: function () { | ||
230 | + | ||
231 | + getIdsRequisicao(); | ||
232 | + var atendimentoVH = {idsRequisicao : $scope.idsSelecionados, idOrganizacao : $scope.usuarioLogado.organizacao.id}; | ||
233 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
234 | + AtendimentoRequisicaoConsumoRepository.excluirAtendimentos(atendimentoVH).then(function(result) { | ||
235 | + $scope.showAlert('success', $translate.instant('MSG.MG001'), " ", false); | ||
236 | + $scope.recarregar(); | ||
237 | + angular.element("#searchAtendimentoRequisicaoConsumo").scope().fetchResult(); | ||
238 | + }); | ||
239 | + } | ||
240 | + }); | ||
241 | + } | ||
242 | + | ||
243 | + }; | ||
244 | + | ||
245 | + $scope.findEstruturaOrganizacionalUR = function(value){ | ||
246 | + return EstruturaOrganizacionalAlmoxarifadoRepository.findEstruturaOrganizacionalUR(value, | ||
247 | + $scope.usuarioLogado.organizacao.id).then(function(result) { | ||
248 | + return $filter('idNotEqual')(result, $scope.listaUnidadesRequisitantesSelecionadas, 'id'); | ||
249 | + }); | ||
250 | + }; | ||
251 | + | ||
252 | + $scope.findMateriaisConsumoByOrganizacao = function(value){ | ||
253 | + return MaterialConsumoRepository.findMateriaisConsumoByOrganizacao(value, $scope.usuarioLogado.organizacao.id).then(function(result) { | ||
254 | + return $filter('idNotEqual')(result, $scope.listaMateriaisConsumoSelecionados, "id"); | ||
255 | + }); | ||
256 | + }; | ||
257 | + | ||
258 | + $scope.setUnidadeRequisitante = function(item){ | ||
259 | + $scope.listaUnidadesRequisitantesSelecionadas.push(item); | ||
260 | + $timeout(function(){ | ||
261 | + $scope.filtroAtendimento.unidadeRequisitanteSelecao = null; | ||
262 | + }); | ||
263 | + }; | ||
264 | + | ||
265 | + $scope.selectAllUnidadesRequisitantes = function(check){ | ||
266 | + angular.forEach($scope.listaUnidadesRequisitantesSelecionadas, function (item) { | ||
267 | + item.$checkedChBox = $scope.filtroAtendimento.unidadeRequisitanteSelectedAll; | ||
268 | + }); | ||
269 | + }; | ||
270 | + | ||
271 | + $scope.selectAllMaterialConsumo = function(check){ | ||
272 | + angular.forEach($scope.listaMateriaisConsumoSelecionados, function (item) { | ||
273 | + item.$checkedChBox = $scope.filtroAtendimento.materialConsumoSelectedAll; | ||
274 | + }); | ||
275 | + }; | ||
276 | + | ||
277 | + $scope.setMaterialConsumoItens = function(item){ | ||
278 | + $scope.listaMateriaisConsumoSelecionados.push(item); | ||
279 | + $timeout(function(){ | ||
280 | + $scope.filtroAtendimento.materialConsumoItem = null; | ||
281 | + }); | ||
282 | + }; | ||
283 | + | ||
284 | + $scope.removerUnidadeRequisitanteSelecionada = function(){ | ||
285 | + | ||
286 | + if($scope.filtroAtendimento.unidadeRequisitanteSelectedAll){ | ||
287 | + $scope.listaUnidadesRequisitantesSelecionadas = []; | ||
288 | + $scope.filtroAtendimento.unidadeRequisitanteSelectedAll = false; | ||
289 | + }else{ | ||
290 | + $scope.listaUnidadesRequisitantesSelecionadas.forEach(function(item, key) { | ||
291 | + if (item.$checkedChBox) { | ||
292 | + $scope.listaUnidadesRequisitantesSelecionadas.splice($scope.listaUnidadesRequisitantesSelecionadas.indexOf(item), 1); | ||
293 | + } | ||
294 | + }); | ||
295 | + } | ||
296 | + | ||
297 | + }; | ||
298 | + | ||
299 | + $scope.removerMaterialConsumoSelecionado = function(){ | ||
300 | + | ||
301 | + if($scope.filtroAtendimento.materialConsumoSelectedAll){ | ||
302 | + $scope.listaMateriaisConsumoSelecionados = []; | ||
303 | + $scope.filtroAtendimento.materialConsumoSelectedAll = false; | ||
304 | + }else{ | ||
305 | + angular.forEach($scope.listaMateriaisConsumoSelecionados, function (value) { | ||
306 | + if(value.$checkedChBox){ | ||
307 | + $scope.listaMateriaisConsumoSelecionados.splice($scope.listaMateriaisConsumoSelecionados.indexOf(value), 1); | ||
308 | + } | ||
309 | + }); | ||
310 | + } | ||
311 | + }; | ||
312 | + | ||
313 | + | ||
314 | + $scope.atendimentoAvancado = function(){ | ||
315 | + $scope.filtroAtendimento = {unidadeRequisitanteSelectedAll : false , materialConsumoSelectedAll : false}; | ||
316 | + if(!$scope.listaUnidadesRequisitantesSelecionadas){ | ||
317 | + $scope.listaUnidadesRequisitantesSelecionadas = []; | ||
318 | + } | ||
319 | + if(!$scope.listaMateriaisConsumoSelecionados){ | ||
320 | + $scope.listaMateriaisConsumoSelecionados = []; | ||
321 | + } | ||
322 | + $scope.$openModal('modal-busca-avancada-requisicao.html', 'md'); | ||
323 | + }; | ||
324 | + | ||
325 | + $scope.filtrarRequisicoes = function(){ | ||
326 | + $scope.setLoading(true); | ||
327 | + $scope.atendimentoVH = {searchParams : $scope.filterCriteria}; | ||
328 | + var idsUnidadeRequisitante = []; | ||
329 | + | ||
330 | + if($scope.listaUnidadesRequisitantesSelecionadas && $scope.listaUnidadesRequisitantesSelecionadas.length > 0){ | ||
331 | + angular.forEach($scope.listaUnidadesRequisitantesSelecionadas, function (value) { | ||
332 | + idsUnidadeRequisitante.push(value.id); | ||
333 | + }); | ||
334 | + $scope.atendimentoVH.idsUnidadesRequisitantes = idsUnidadeRequisitante; | ||
335 | + } | ||
336 | + | ||
337 | + var idsMateriaisConsumo = []; | ||
338 | + | ||
339 | + if($scope.listaMateriaisConsumoSelecionados && $scope.listaMateriaisConsumoSelecionados.length > 0){ | ||
340 | + angular.forEach($scope.listaMateriaisConsumoSelecionados, function (value) { | ||
341 | + idsMateriaisConsumo.push(value.id); | ||
342 | + }); | ||
343 | + $scope.atendimentoVH.idsMaterais = idsMateriaisConsumo; | ||
344 | + } | ||
345 | + | ||
346 | + return RequisicaoConsumoRepository.filtrarRequisicoesAtendimento($scope.atendimentoVH).then(function(result){ | ||
347 | + if(result){ | ||
348 | + $scope.listaSelecionados = []; | ||
349 | + $scope.atendimentoRequisicaoConsumoList = result.originalElement.objects; | ||
350 | + | ||
351 | + | ||
352 | + | ||
353 | + $scope.setTotalPages = result.originalElement.totalPages; | ||
354 | + $scope.setTotalItens = result.originalElement.totalItens; | ||
355 | + | ||
356 | + if(!$scope.filtersCopy){ | ||
357 | + $scope.filtersCopy = angular.copy($scope.filterCriteria.filters); | ||
358 | + } | ||
359 | + $scope.filtrarCustomizado = true; | ||
360 | + if($scope.setTotalItens == 0){ | ||
361 | + $scope.showAlert('warning', $translate.instant('MSG.NENHUM_REGISTRO_ENCONTRADO'), " ", false); | ||
362 | + } | ||
363 | + | ||
364 | + } else { | ||
365 | + $scope.showAlert('warning', $translate.instant('MSG.NENHUM_REGISTRO_ENCONTRADO'), " ", false); | ||
366 | + } | ||
367 | + $scope.$modalInstance.dismiss('cancel'); | ||
368 | + $scope.setLoading(false); | ||
369 | + }); | ||
370 | + | ||
371 | + }; | ||
372 | + | ||
373 | + $scope.interromperAtendimentoIniciado = function(){ | ||
374 | + | ||
375 | + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) { | ||
376 | + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM')); | ||
377 | + return; | ||
378 | + } | ||
379 | + | ||
380 | + var permiteInterromperAtendimentoIniciado = true; | ||
381 | + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) { | ||
382 | + if(!requisicaoSelecionado.emAtendimento){ | ||
383 | + permiteInterromperAtendimentoIniciado = false; | ||
384 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_NAO_INICIADO')); | ||
385 | + } | ||
386 | + if(requisicaoSelecionado.emAtendimento && requisicaoSelecionado['atendente.id'] != $scope.usuarioLogado.id){ | ||
387 | + permiteInterromperAtendimentoIniciado = false; | ||
388 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_INICIADO_OUTRO_ATENDENTE')); | ||
389 | + return; | ||
390 | + } | ||
391 | + }); | ||
392 | + | ||
393 | + if(permiteInterromperAtendimentoIniciado){ | ||
394 | + $scope.setLoading(true); | ||
395 | + | ||
396 | + var idsRequisicoesSelecionados = []; | ||
397 | + $scope.listaSelecionados.forEach(function(requisicao){ | ||
398 | + idsRequisicoesSelecionados.push(requisicao.id); | ||
399 | + }); | ||
400 | + | ||
401 | + var requisicaoVH = { idsRequisicoes : idsRequisicoesSelecionados, statusAtendimentoRequsicao : false}; | ||
402 | + | ||
403 | + RequisicaoConsumoRepository.atualizarSituacaoAtendimentoRequisicoes(requisicaoVH).then(function(result) { | ||
404 | + $scope.setLoading(false); | ||
405 | + $scope.recarregar(); | ||
406 | + angular.element("#searchAtendimentoRequisicaoConsumo").scope().fetchResult(); | ||
407 | + }); | ||
408 | + } | ||
89 | }; | 409 | }; |
90 | 410 | ||
91 | //METODO REFERENTE AO RELATORIO | 411 | //METODO REFERENTE AO RELATORIO |
92 | $scope.gerar = function() { | 412 | $scope.gerar = function() { |
93 | - | ||
94 | - if($scope.listaSelecionados.length == 0 || $scope.listaSelecionados.length > 1) | 413 | + if($scope.listaSelecionados.length == 0 || $scope.listaSelecionados.length > 1) |
95 | $scope.showAlert("warning", $translate.instant("MSG.SELECIONE_UM_ITEM_PARA_RELATORIO") + " ", false ); | 414 | $scope.showAlert("warning", $translate.instant("MSG.SELECIONE_UM_ITEM_PARA_RELATORIO") + " ", false ); |
96 | else{ | 415 | else{ |
97 | var ids = ''; | 416 | var ids = ''; |
@@ -109,5 +428,4 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | @@ -109,5 +428,4 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | ||
109 | $scope.visualizarRelatorio($scope.url, $translate.instant("ALMOXARIFADO.LABEL.RELATORIO_GUIA_REMESSA")); | 428 | $scope.visualizarRelatorio($scope.url, $translate.instant("ALMOXARIFADO.LABEL.RELATORIO_GUIA_REMESSA")); |
110 | } | 429 | } |
111 | }; | 430 | }; |
112 | - | ||
113 | }]); | 431 | }]); |
114 | \ No newline at end of file | 432 | \ No newline at end of file |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/RequisicaoConsumoController.js
1 | 'use strict'; | 1 | 'use strict'; |
2 | 2 | ||
3 | -citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'RequisicaoConsumoRepository', '$translate', '$timeout', 'DominioRepository', 'EstruturaOrganizacionalAlmoxarifadoRepository', 'CatalogoMaterialRepository', 'CatalogoMaterialItemRepository', 'CatalogoMaterialUnidadeConsumidoraRequisitanteItemRepository', 'MaterialConsumoRepository', 'AtendimentoRequisicaoConsumoRepository', | ||
4 | - function RequisicaoConsumoController($scope, $filter, RequisicaoConsumoRepository, $translate, $timeout, DominioRepository, EstruturaOrganizacionalAlmoxarifadoRepository, CatalogoMaterialRepository, CatalogoMaterialItemRepository, CatalogoMaterialUnidadeConsumidoraRequisitanteItemRepository, MaterialConsumoRepository, AtendimentoRequisicaoConsumoRepository) { | 3 | +citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'RequisicaoConsumoRepository', '$translate', '$timeout', 'DominioRepository', 'EstruturaOrganizacionalAlmoxarifadoRepository', 'CatalogoMaterialRepository', 'CatalogoMaterialItemRepository', |
4 | + 'CatalogoMaterialUnidadeConsumidoraRequisitanteItemRepository', 'MaterialConsumoRepository', 'AtendimentoRequisicaoConsumoRepository','RequisicaoConsumoItemRepository', | ||
5 | + function RequisicaoConsumoController($scope, $filter, RequisicaoConsumoRepository, $translate, $timeout, DominioRepository, EstruturaOrganizacionalAlmoxarifadoRepository, CatalogoMaterialRepository, CatalogoMaterialItemRepository, | ||
6 | + CatalogoMaterialUnidadeConsumidoraRequisitanteItemRepository, MaterialConsumoRepository, AtendimentoRequisicaoConsumoRepository, RequisicaoConsumoItemRepository) { | ||
5 | 7 | ||
6 | // CONSTANTES DOMINIO | 8 | // CONSTANTES DOMINIO |
7 | var TIPO_STATUS_REQUISICAO = 'tipoStatusRequisicao'; | 9 | var TIPO_STATUS_REQUISICAO = 'tipoStatusRequisicao'; |
8 | - var NAO_CONCLUIDA = 1; | 10 | + var NAO_CONCLUIDA = 3; |
9 | var PRONTA_PARA_ATENDIMENTO = 2; | 11 | var PRONTA_PARA_ATENDIMENTO = 2; |
10 | 12 | ||
11 | $scope.requisicaoConsumo = {}; | 13 | $scope.requisicaoConsumo = {}; |
@@ -485,7 +487,13 @@ citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'Requisic | @@ -485,7 +487,13 @@ citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'Requisic | ||
485 | 487 | ||
486 | // REMOVE ITEM DA REQUISICAO | 488 | // REMOVE ITEM DA REQUISICAO |
487 | $scope.removerRequisicaoConsumoItem = function(){ | 489 | $scope.removerRequisicaoConsumoItem = function(){ |
490 | + | ||
491 | + if($scope.requisicaoConsumo.requisicaoConsumoItens.length == 1 && $scope.requisicaoConsumo.id){ | ||
492 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.VALIDACAO.REMOVER_TODOS_ITENS_REQUISICAO_CONSUMO')); | ||
488 | 493 | ||
494 | + return; | ||
495 | + } | ||
496 | + | ||
489 | if(!$scope.requisicaoConsumoItemChecked) { | 497 | if(!$scope.requisicaoConsumoItemChecked) { |
490 | 498 | ||
491 | $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO')); | 499 | $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO')); |
@@ -499,12 +507,22 @@ citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'Requisic | @@ -499,12 +507,22 @@ citApp.controller('RequisicaoConsumoController', ['$scope', '$filter', 'Requisic | ||
499 | message: $translate.instant('MSG.DESEJA_EXCLUIR_ITENS'), | 507 | message: $translate.instant('MSG.DESEJA_EXCLUIR_ITENS'), |
500 | callback: function () { | 508 | callback: function () { |
501 | 509 | ||
502 | - $scope.$modalConfirmInstance.dismiss('cancel'); | ||
503 | - | ||
504 | - $scope.requisicaoConsumo.requisicaoConsumoItens.splice($scope.requisicaoConsumoItemChecked.$index, 1); | ||
505 | - | ||
506 | - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO')); | ||
507 | - | 510 | + if($scope.requisicaoConsumoItemChecked.id){ |
511 | + RequisicaoConsumoItemRepository.remove($scope.requisicaoConsumoItemChecked).then(function(result) { | ||
512 | + $scope.requisicaoConsumo.requisicaoConsumoItens.splice($scope.requisicaoConsumoItemChecked.$index, 1); | ||
513 | + $scope.changeListRequisicaoConsumoItem(); | ||
514 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
515 | + | ||
516 | + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO')); | ||
517 | + }); | ||
518 | + }else{ | ||
519 | + $scope.requisicaoConsumo.requisicaoConsumoItens.splice($scope.requisicaoConsumoItemChecked.$index, 1); | ||
520 | + $scope.changeListRequisicaoConsumoItem(); | ||
521 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
522 | + | ||
523 | + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO')); | ||
524 | + } | ||
525 | + | ||
508 | } | 526 | } |
509 | 527 | ||
510 | }); | 528 | }); |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/RequisicaoConsumoListController.js
@@ -58,7 +58,7 @@ citApp.controller('RequisicaoConsumoListController', ['$scope', 'RequisicaoConsu | @@ -58,7 +58,7 @@ citApp.controller('RequisicaoConsumoListController', ['$scope', 'RequisicaoConsu | ||
58 | 58 | ||
59 | } else { | 59 | } else { |
60 | 60 | ||
61 | - if(requisicaoConsumo !== null && requisicaoConsumo['tipoStatusRequisicao.codigo'] !== 1 && requisicaoConsumo !== null && requisicaoConsumo['tipoStatusRequisicao.codigo'] !== 2){ | 61 | + if(requisicaoConsumo !== null && requisicaoConsumo['tipoStatusRequisicao.codigo'] !== 3 && requisicaoConsumo !== null && requisicaoConsumo['tipoStatusRequisicao.codigo'] !== 2){ |
62 | 62 | ||
63 | $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.REQUISICAO_DIFERENTE_NAO_CONCLUIDA_PRONTA_ATENDIMENTO')); | 63 | $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.REQUISICAO_DIFERENTE_NAO_CONCLUIDA_PRONTA_ATENDIMENTO')); |
64 | return; | 64 | return; |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/AtendimentoRequisicaoConsumoRepository.js
@@ -21,7 +21,23 @@ citApp.factory('AtendimentoRequisicaoConsumoRepository', ['RestangularAlmoxarifa | @@ -21,7 +21,23 @@ citApp.factory('AtendimentoRequisicaoConsumoRepository', ['RestangularAlmoxarifa | ||
21 | this.removerAtendimentoRequisicao = function (idsRequisicaoConsumo, idOrganizacao) { | 21 | this.removerAtendimentoRequisicao = function (idsRequisicaoConsumo, idOrganizacao) { |
22 | return this.restangular.one(this.route +'/removerAtendimentoRequisicao').get({idsRequisicaoConsumo : idsRequisicaoConsumo, idOrganizacao : idOrganizacao}).then(); | 22 | return this.restangular.one(this.route +'/removerAtendimentoRequisicao').get({idsRequisicaoConsumo : idsRequisicaoConsumo, idOrganizacao : idOrganizacao}).then(); |
23 | }; | 23 | }; |
24 | - | 24 | + |
25 | + this.finalizarRequisicoes = function(atendimentoVH){ | ||
26 | + return restangularAlmoxarifado.all(this.route + '/finalizarRequisicoes').post(atendimentoVH).then(); | ||
27 | + }; | ||
28 | + | ||
29 | + this.excluirAtendimentos = function(atendimentoVH){ | ||
30 | + return restangularAlmoxarifado.all(this.route + '/excluirAtendimentos').post(atendimentoVH).then(); | ||
31 | + }; | ||
32 | + | ||
33 | + this.validaQuantidadesAtendidas = function(atendimentoRequisicaoConsumo){ | ||
34 | + return restangularAlmoxarifado.all(this.route + "/validaQuantidadesAtendidas").post(atendimentoRequisicaoConsumo).then(); | ||
35 | + }; | ||
36 | + | ||
37 | + this.validarFinalizacaoRequisicoes = function(atendimentoVH){ | ||
38 | + return restangularAlmoxarifado.all(this.route + '/validarFinalizacaoRequisicoes').post(atendimentoVH).then(); | ||
39 | + }; | ||
40 | + | ||
25 | } | 41 | } |
26 | 42 | ||
27 | AbstractRepository.extend(AtendimentoRequisicaoConsumoRepository); | 43 | AbstractRepository.extend(AtendimentoRequisicaoConsumoRepository); |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/RequisicaoConsumoRepository.js
@@ -19,8 +19,20 @@ citApp.factory('RequisicaoConsumoRepository', ['RestangularAlmoxarifado', 'Abstr | @@ -19,8 +19,20 @@ citApp.factory('RequisicaoConsumoRepository', ['RestangularAlmoxarifado', 'Abstr | ||
19 | return restangularAlmoxarifado.all(this.route + "/finalizarRequisicoes").post(requisicaoVH).then(); | 19 | return restangularAlmoxarifado.all(this.route + "/finalizarRequisicoes").post(requisicaoVH).then(); |
20 | }; | 20 | }; |
21 | 21 | ||
22 | - this.atenderRequisicoes = function(idsRequisicaoConsumo){ | ||
23 | - return restangularAlmoxarifado.all(this.route + "/atenderRequisicoes").post(idsRequisicaoConsumo).then(); | 22 | + this.atenderRequisicoes = function(atendimentoVH){ |
23 | + return restangularAlmoxarifado.all(this.route + "/atenderRequisicoes").post(atendimentoVH).then(); | ||
24 | + }; | ||
25 | + | ||
26 | + this.filtrarRequisicoesAtendimento = function(atendimentoVH) { | ||
27 | + return this.restangular.all(this.route+ "/filtrarRequisicoesAtendimento").post(atendimentoVH); | ||
28 | + }; | ||
29 | + | ||
30 | + this.atualizarSituacaoAtendimento = function(idRequisicao, situacaoAtendimento){ | ||
31 | + return this.restangular.one(this.route + "/atualizarSituacaoAtendimento").get({'idRequisicao': idRequisicao, 'situacaoAtendimento': situacaoAtendimento}).then(); | ||
32 | + }; | ||
33 | + | ||
34 | + this.atualizarSituacaoAtendimentoRequisicoes = function(requisicaoVH) { | ||
35 | + return restangularAlmoxarifado.all(this.route + "/atualizarSituacaoAtendimentoRequisicoes").post(requisicaoVH).then(); | ||
24 | }; | 36 | }; |
25 | } | 37 | } |
26 | 38 |
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html
@@ -9,25 +9,22 @@ | @@ -9,25 +9,22 @@ | ||
9 | </button> | 9 | </button> |
10 | <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu"> | 10 | <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu"> |
11 | <li> | 11 | <li> |
12 | - <a href="#void" ng-click="saveEdit(false)" ><i class="fa fa-file-text-o red"></i> <translate>ALMOXARIFADO.LABEL.SALVAR_APENAS</translate></a> | 12 | + <a href="#void" ng-click="saveOrUpdate(false, atendimentoRequisicaoConsumoForm)" ><i class="fa fa-file-text-o red"></i> <translate>ALMOXARIFADO.LABEL.SALVAR_APENAS</translate></a> |
13 | </li> | 13 | </li> |
14 | <li> | 14 | <li> |
15 | - <a href="#void" ng-click="saveEdit(true)" ><i class="fa fa-file-text green"></i> <translate>ALMOXARIFADO.LABEL.SALVAR_E_FINALIZAR_REQUISICOES</translate></a> | 15 | + <a href="#void" ng-click="saveOrUpdate(true, atendimentoRequisicaoConsumoForm)" ><i class="fa fa-file-text green"></i> <translate>ALMOXARIFADO.LABEL.SALVAR_E_FINALIZAR_REQUISICOES</translate></a> |
16 | </li> | 16 | </li> |
17 | </ul> | 17 | </ul> |
18 | </div> | 18 | </div> |
19 | - <button class="btn btn-clear" ng-show="!edit" ng-click="edit = true"> | ||
20 | - <i class="fa fa-pencil blue"></i> | ||
21 | - <translate>LABEL.EDITAR</translate> | 19 | + <button ng-show="edit" class="btn btn-clear" ng-click="$showPageSearchWorkspace(workspace); atualizaPaginaPesquisa();"> |
20 | + <i class="fa fa-reply"></i> | ||
21 | + <translate>ALMOXARIFADO.LABEL.CANCELAR_ATENDIMENTO_INICIADO</translate> | ||
22 | </button> | 22 | </button> |
23 | -<!-- <button class="btn btn-clear" ng-click="removerAtendimentoRequisicao();" ng-show="edit"> --> | ||
24 | -<!-- <i class="fa fa-times red"></i> --> | ||
25 | -<!-- <translate>LABEL.REMOVER</translate> --> | ||
26 | -<!-- </button> --> | ||
27 | - <button class="btn btn-clear" ng-click="$showPageSearchWorkspace(workspace); atualizaPaginaPesquisa();"> | 23 | + <button ng-show="!edit" class="btn btn-clear" ng-click="$showPageSearchWorkspace(workspace); atualizaPaginaPesquisa();"> |
28 | <i class="fa fa-search"></i> | 24 | <i class="fa fa-search"></i> |
29 | <translate>LABEL.PESQUISAR</translate> | 25 | <translate>LABEL.PESQUISAR</translate> |
30 | </button> | 26 | </button> |
27 | + | ||
31 | </div><!-- .col --> | 28 | </div><!-- .col --> |
32 | <div class="col-sm-4 text-right"> | 29 | <div class="col-sm-4 text-right"> |
33 | <favorito /> | 30 | <favorito /> |
@@ -43,120 +40,229 @@ | @@ -43,120 +40,229 @@ | ||
43 | </p> | 40 | </p> |
44 | <div class="modal-body"> | 41 | <div class="modal-body"> |
45 | 42 | ||
46 | - <fieldset> | ||
47 | - <legend><translate>ALMOXARIFADO.LABEL.DADOS_REQUISICAO_CONSUMO</translate></legend> | ||
48 | - <div class="row"> | ||
49 | - <div class="col-md-4"> | ||
50 | - <label-input-number ng-id="requisicaoConsumo.numeroRequisicao" ng-label="ALMOXARIFADO.LABEL.NUMERO_REQUISICAO" | ||
51 | - ng-model="requisicaoConsumo.numeroRequisicao" | ||
52 | - ng-obrigatorio="false" ng-disabled="true" /> | ||
53 | - </div> | ||
54 | - <div class="col-md-4"> | ||
55 | - <label-input ng-id="requisicaoConsumo.tipoStatusRequisicao.descricao" ng-label="LABEL.SITUACAO" | ||
56 | - ng-model="requisicaoConsumo.tipoStatusRequisicao.descricao" ng-disabled="true" /> | ||
57 | - </div> | ||
58 | - <div class="col-md-4"> | ||
59 | - <label-input-data ng-id="requisicaoConsumo.dataRequisicao" ng-label="ALMOXARIFADO.LABEL.DATA_REQUISICAO" | ||
60 | - ng-model="requisicaoConsumo.dataRequisicao" ng-disabled="true" | ||
61 | - ng-mode="day" ng-format="dd/MM/yyyy" /> | ||
62 | - </div> | ||
63 | - </div> | ||
64 | - <div class="col-sm-12" style="margin-top: 20px"> | ||
65 | - <div class="row margin-top"> | ||
66 | - <div class="col-sm-12"> | ||
67 | - <div class="panel panel-default"> | ||
68 | - <!-- .panel-heading --> | ||
69 | - <table class="table table-striped table-bordered table-hover"> | ||
70 | - <thead> | ||
71 | - <tr> | ||
72 | - <th width="45%" class="text-center"><translate>LABEL.DESCRICAO</translate></th> | ||
73 | - <th width="25%" class="text-center"><translate>LABEL.UNIDADE_MEDIDA</translate></th> | ||
74 | - <th width="25%" class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_REQUERIDA</translate></th> | ||
75 | - | ||
76 | - </tr> | ||
77 | - </thead> | ||
78 | - <tbody> | ||
79 | - <tr ng-repeat="requisicaoConsumoItem in requisicaoConsumo.requisicaoConsumoItens"> | ||
80 | - <td class="text-center">{{requisicaoConsumoItem.materialConsumo.descricao}}</td> | ||
81 | - <td class="text-center">{{requisicaoConsumoItem.materialConsumo.unidadeArmazenamento.descricao}}</td> | ||
82 | - <td> | ||
83 | - <div class="col-md-12"> | ||
84 | - <label-input-decimal ng-id="requisicaoConsumoItem.quantidade$index" | ||
85 | - ng-model="requisicaoConsumoItem.quantidade" form="requisicaoConsumoForm" ng-disabled="true" ng-custom-maxlength="14" | ||
86 | - ng-precisao="requisicaoConsumoItem.materialConsumo.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 2"/> | ||
87 | - </div> | ||
88 | - </td> | ||
89 | - </tr> | ||
90 | - <tr ng-hide="requisicaoConsumo.requisicaoConsumoItens.length > 0"> | ||
91 | - <td colspan="4" class="text-center"><translate>LABEL.TABELA_VAZIA</translate></td> | ||
92 | - </tr> | ||
93 | - </tbody> | ||
94 | - </table> | ||
95 | - <div class="row"> | ||
96 | - <div class="col-sm-4 text-left"> | ||
97 | - <a ng-href="#top"></a> | 43 | + <fieldset id="tableAtendimentos" ng-show="atendimentos.length > 0"> |
44 | + <legend id="top"> | ||
45 | + <label ng-class="{'has-error' : atendimentoRequisicaoConsumoForm.$submitted && atendimentos && atendimentos.length < 1}"> | ||
46 | + <translate>ALMOXARIFADO.LABEL.DADOS_ATENDIMENTO_REQUISICAO_CONSUMO</translate> | ||
47 | + <span class='red'>*</span> <i ng-show="atendimentoRequisicaoConsumoForm.$submitted && atendimentos && atendimentos.length < 1" | ||
48 | + class='fa fa-warning red' | ||
49 | + tooltip="{{$translate.instant('DADOS_ATENDIMENTO_REQUISICAO_CONSUMO') + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}" | ||
50 | + tooltip-placement='top'></i> | ||
51 | + </label> | ||
52 | + </legend> | ||
53 | + <!-- <div class="row"> --> | ||
54 | + <!-- <div class="col-sm-12"> --> | ||
55 | + <!-- <auto-complete ng-id="almoxarifado" ng-label="ALMOXARIFADO.LABEL.ALMOXARIFADO" ng-model="estruturaAlmoxarifadoPadrao" ng-obrigatorio="true" ng-find="findAutoCompleteAlmoxarifado(value)" ng-item="item.nome + ' - ' + item.classificacao" /> --> | ||
56 | + <!-- </div> --> | ||
57 | + <!-- </div> --> | ||
58 | + <div class="row"> | ||
59 | + <div class="col-md-6"> | ||
60 | + <label-input-data ng-id="atendimentoRequisicaoConsumo.dataAtendimento" ng-label="ALMOXARIFADO.LABEL.DATA_ATENDIMENTO" | ||
61 | + ng-model="atendimentoRequisicaoConsumo.dataAtendimento" form="atendimentoRequisicaoConsumoForm" ng-obrigatorio="true" | ||
62 | + ng-show="edit" ng-mode="day" ng-format="dd/MM/yyyy" /> | ||
63 | + </div> | ||
64 | + <div class="col-md-6" ng-if="atendimentos.length == 1"> | ||
65 | + <p> | ||
66 | + <small><span class="red" ><translate>ALMOXARIFADO.MSG.INFO_ATENDIMENTO_INICIADO</translate></span></small> | ||
67 | + </p> | ||
68 | + </div> | ||
69 | + <div class="col-md-6" ng-if="atendimentos.length > 1"> | ||
70 | + <p> | ||
71 | + <small><span class="red"><translate>ALMOXARIFADO.MSG.INFO_ATENDIMENTOS_INICIADOS</translate></span></small> | ||
72 | + </p> | ||
73 | + </div> | ||
74 | + </div> | ||
75 | + <div style="margin-top: 20px;" ng-repeat="atendimento in atendimentos"> | ||
76 | + <div class="widget-box margin-bottom"> | ||
77 | + <div class="widget-header"> | ||
78 | + <h2 class="widget-title" style="font-size: 16px !important"> | ||
79 | + <label><translate>ALMOXARIFADO.LABEL.REQUISICAO</translate>: {{atendimento.requisicaoConsumo.numeroRequisicao}}</label> | ||
80 | + </h2> | ||
81 | + <div class="widget-toolbar"> | ||
82 | + <a href="#void" ng-click="widgetAtendimentoCollapsed = !widgetAtendimentoCollapsed"> | ||
83 | + <i class="fa" ng-class="{'fa-chevron-up': widgetAtendimentoCollapsed, 'fa-chevron-down': !widgetAtendimentoCollapsed}"></i> | ||
84 | + </a> | ||
85 | + <a href="#void" style="margin-left: 3px" ng-click="removerRequisicaoDoAtendimento($index)" ng-show="edit"> | ||
86 | + <i class="fa fa-trash-o bigger-130 red" tooltip="{{$translate.instant('ALMOXARIFADO.MSG.REMOVER_REQUISICAO_ATENDIMENTO')}}"></i> | ||
87 | + </a> | ||
88 | + </div> | ||
89 | + </div> | ||
90 | + <div collapse="!widgetAtendimentoCollapsed" class="widget-body"> | ||
91 | + <div class="widget-main clearfix"> | ||
92 | + <div class="row"> | ||
93 | + <div class="col-md-3"> | ||
94 | + <label-input-number ng-id="atendimento.requisicaoConsumo.numeroRequisicao$index" ng-label="ALMOXARIFADO.LABEL.NUMERO_ATENDIMENTO" | ||
95 | + ng-model="atendimento.requisicaoConsumo.numeroRequisicao" ng-disabled="true" /> | ||
96 | + </div> | ||
97 | + <div class="col-md-3"> | ||
98 | + <label-input ng-type="text" ng-id="atendimento.requisicaoConsumo.tipoStatusRequisicao.descricao$index" ng-label="ALMOXARIFADO.LABEL.STATUS_ATUAL" | ||
99 | + ng-model="atendimento.requisicaoConsumo.tipoStatusRequisicao.descricao" ng-disabled="true" /> | ||
100 | + </div> | ||
101 | + <div class="col-md-3"> | ||
102 | + <label-input ng-type="text" ng-id="atendimento.requisicaoConsumo.dataRequisicao$index" ng-label="ALMOXARIFADO.LABEL.DATA_REQUISICAO" | ||
103 | + ng-model="atendimento.requisicaoConsumo.dataRequisicao" ng-disabled="true" /> | ||
104 | + </div> | ||
105 | + </div> | ||
106 | + <div class="row"> | ||
107 | + <div class="col-md-6"> | ||
108 | + <label-input ng-type="text" ng-id="atendimento.requisicaoConsumo.almoxarifado.codigoENome$index" ng-label="ALMOXARIFADO.LABEL.ALMOXARIFADO" | ||
109 | + ng-model="atendimento.requisicaoConsumo.almoxarifado.codigoENome" ng-disabled="true" /> | ||
110 | + </div> | ||
111 | + <div class="col-md-6"> | ||
112 | + <label-input ng-type="text" ng-id="atendimento.requisicaoConsumo.unidadeRequisitante.codigoENome$index" ng-label="ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE" | ||
113 | + ng-model="atendimento.requisicaoConsumo.unidadeRequisitante.codigoENome" ng-disabled="true" /> | ||
114 | + </div> | ||
115 | + </div> | ||
116 | + <div class="row" ng-show="edit"> | ||
117 | + <div class="col-md-12"> | ||
118 | + <input type="checkbox" ng-model="exibirCompletos"> | ||
119 | + <label><translate>ALMOXARIFADO.LABEL.MOSTRAR_ATENDIMENTOS_CONCLUIDOS</translate> | ||
120 | + </div> | ||
121 | + </div> | ||
122 | + <div class="row margin-top"> | ||
123 | + <div class="col-sm-12"> | ||
124 | + <div class="panel panel-default"> | ||
125 | + <!-- .panel-heading --> | ||
126 | + <table class="table table-striped table-bordered table-hover"> | ||
127 | + <thead> | ||
128 | + <tr> | ||
129 | + <th class="text-center" ng-show="edit"><translate>ALMOXARIFADO.LABEL.INFO</translate></th> | ||
130 | + <th class="text-center" width="20%"><translate>LABEL.MATERIAL</translate></th> | ||
131 | + <th class="text-center"><translate>LABEL.UNIDADE_MEDIDA</translate></th> | ||
132 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QTD_EM_ESTOQUE</translate></th> | ||
133 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QTD_FORNECIDA_REQUISICAO</translate></th> | ||
134 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_PEDIDA</translate></th> | ||
135 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_ATENDIDA</translate></th> | ||
136 | + <th class="text-center" width="20%"><translate>ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE</translate></th> | ||
137 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.ATENDER</translate><span class="red"> *</span></th> | ||
138 | + </tr> | ||
139 | + </thead> | ||
140 | + <tbody> | ||
141 | + <tr ng-repeat-start="atendimentoRequisicaoConsumoItem in atendimento.atendimentoRequisicaoConsumoItems" | ||
142 | + ng-class="atendimentoRequisicaoConsumoItem.$hasError ? 'danger' : ''" ng-hide="atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidade == atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida && !exibirCompletos && edit" | ||
143 | + tooltip="{{atendimentoRequisicaoConsumoItem.$hasError ? $translate.instant('ALMOXARIFADO.VALIDACAO.SOMA_ITENS_ATENDER_MAIOR_ESTOQUE_TOOLTIP') : ''}}"> | ||
144 | + | ||
145 | + <td class="text-center" ng-show="edit"> | ||
146 | + <button type="button" ng-click="atendimentoRequisicaoConsumoItem.$verInfo = !atendimentoRequisicaoConsumoItem.$verInfo"> | ||
147 | + <i class="ace-icon fa {{atendimentoRequisicaoConsumoItem.$verInfo ? 'fa-minus' : 'fa-plus'}} bigger-125"></i> | ||
148 | + </button> | ||
149 | + </td> | ||
150 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.material.descricao}}</td> | ||
151 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.material.unidadeArmazenamento.sigla}}</td> | ||
152 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.qtdEstoque}}</td> | ||
153 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.qtdFornecidaUltimaRequisicao ? atendimentoRequisicaoConsumoItem.$info.qtdFornecidaUltimaRequisicao : "-"}}</td> | ||
154 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidade}}</td> | ||
155 | + <td class="text-center" ng-show="novoAtendimento">{{atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida | ||
156 | + ? atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida : 0}}</td> | ||
157 | + <td class="text-center" ng-hide="novoAtendimento">{{atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.quantidadeAtendida | ||
158 | + - atendimentoRequisicaoConsumoItem.$quantidade}}</td> | ||
159 | + | ||
160 | + <td class="text-center"> | ||
161 | + <table style="width: 100%"> | ||
162 | + <tr> | ||
163 | + <td ng-show="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos.length <= 1"> | ||
164 | + <label-select ng-id="atendimentoRequisicaoConsumoItem.materialLocalEstoque$index" ng-obrigatorio="true" ng-disabled="!edit" | ||
165 | + ng-model="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos[0]" ng-list="atendimentoRequisicaoConsumoItem.$locaisEstoque" | ||
166 | + form="atendimentoRequisicaoConsumoForm" track-by="track by atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.id" | ||
167 | + ng-custom-options="atendimentoRequisicaoConsumoItemEndereco as atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.endereco.descricao for atendimentoRequisicaoConsumoItemEndereco"></label-select> | ||
168 | + </td> | ||
169 | + <td ng-show="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos.length > 1"> | ||
170 | + <translate>ALMOXARIFADO.LABEL.MULTIPLOS_ENDERECOS</translate> | ||
171 | + </td> | ||
172 | + <td style="padding-left: 8px; text-align: right;"> | ||
173 | + <i class="fa fa-plus green" style="cursor: pointer;" | ||
174 | + ng-click="openModalEnderecosMaterial(atendimentoRequisicaoConsumoItem.$locaisEstoque, atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos, atendimento, atendimentoRequisicaoConsumoItem)" | ||
175 | + tooltip="{{$translate.instant('ALMOXARIFADO.MSG.ATENDER_MAIS_DE_UM_ENDERECO')}}"/> | ||
176 | + </td> | ||
177 | + </tr> | ||
178 | + </table> | ||
179 | + </td> | ||
180 | + | ||
181 | + <td ng-if="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos.length <= 1" class="text-center"> | ||
182 | + <label-input-decimal ng-id="atendimentoRequisicaoConsumoItem.quantidade$index" ng-evento-blur="aplicarValidacaoDecimal" ng-evento-keyup="validarQuantidades(atendimentoRequisicaoConsumoItem)" | ||
183 | + ng-model="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos[0].quantidade" form="atendimentoRequisicaoConsumoForm" ng-disabled="!edit" ng-custom-maxlength="{{atendimentoRequisicaoConsumoItem.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 4 : 11}}" | ||
184 | + ng-precisao="{{atendimentoRequisicaoConsumoItem.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 'decimal'}}" /> | ||
185 | + </td> | ||
186 | + <td ng-if="atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumoItemEnderecos.length > 1"> | ||
187 | + <label-input ng-type="text" ng-model="atendimentoRequisicaoConsumoItem.$somaQtdAtendida" ng-disabled="true"></label-input> | ||
188 | + </td> | ||
189 | + | ||
190 | + </tr> | ||
191 | + <tr ng-show="atendimentoRequisicaoConsumoItem.$verInfo == true" class="table-subgrid" ng-repeat-end> | ||
192 | + <td colspan="9"> | ||
193 | + <table class="table table-bordered table-striped"> | ||
194 | + <thead> | ||
195 | + <tr> | ||
196 | + <th class="text-center" colspan="1"><translate>LABEL.GERAL</translate></th> | ||
197 | + <th class="text-center" colspan="8"><translate>ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE</translate></th> | ||
198 | + </tr> | ||
199 | + <tr> | ||
200 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_MEDIO_MENSAL</translate></th> | ||
201 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_EXERCICIO_ANTERIOR</translate></th> | ||
202 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_EXERCICIO_ATUAL</translate></th> | ||
203 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_12_MESES</translate></th> | ||
204 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.CONSUMO_MEDIO_MENSAL</translate></th> | ||
205 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.NUMERO_ULTIMA_REQUISICAO</translate></th> | ||
206 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.DATA_ULTIMA_REQUISICAO</translate></th> | ||
207 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QTD_REQUERIDA_REQUISICAO</translate></th> | ||
208 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.QTD_FORNECIDA_REQUISICAO</translate></th> | ||
209 | + </tr> | ||
210 | + </thead> | ||
211 | + <tbody> | ||
212 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumoMedioMensalMaterial}}</td> | ||
213 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumoExercicioAnterior}}</td> | ||
214 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumoExercicioAtual}}</td> | ||
215 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumo12meses}}</td> | ||
216 | + <td class="text-center">{{atendimentoRequisicaoConsumoItem.$info.consumoMedioMensalUR}}</td> | ||
217 | + <td class="text-center"> | ||
218 | + {{atendimentoRequisicaoConsumoItem.$info.numeroUltimaRequisicao ? atendimentoRequisicaoConsumoItem.$info.numeroUltimaRequisicao : "-"}} | ||
219 | + </td> | ||
220 | + <td class="text-center"> | ||
221 | + {{atendimentoRequisicaoConsumoItem.$info.dataUltimaRequisicao ? (atendimentoRequisicaoConsumoItem.$info.dataUltimaRequisicao | dateBR) : "-"}} | ||
222 | + </td> | ||
223 | + <td class="text-center"> | ||
224 | + {{atendimentoRequisicaoConsumoItem.$info.qtdRequeridaUltimaRequisicao ? atendimentoRequisicaoConsumoItem.$info.qtdRequeridaUltimaRequisicao : "-"}} | ||
225 | + </td> | ||
226 | + <td class="text-center"> | ||
227 | + {{atendimentoRequisicaoConsumoItem.$info.qtdFornecidaUltimaRequisicao ? atendimentoRequisicaoConsumoItem.$info.qtdFornecidaUltimaRequisicao : "-"}} | ||
228 | + </td> | ||
229 | + </tbody> | ||
230 | + </table> | ||
231 | + <table class="table table-bordered table-striped"> | ||
232 | + <thead> | ||
233 | + <tr> | ||
234 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE</translate></th> | ||
235 | + <th class="text-center"><translate>ALMOXARIFADO.LABEL.SALDO_ENDERECO</translate></th> | ||
236 | + <th class="text-center"><translate>LABEL.CAPACIDADE</translate></th> | ||
237 | + </tr> | ||
238 | + </thead> | ||
239 | + <tbody ng-repeat="enderecoEstoque in atendimentoRequisicaoConsumoItem.$locaisEstoque"> | ||
240 | + <td class="text-center">{{enderecoEstoque.materialLocalEstoque.endereco.descricao}}</td> | ||
241 | + <td class="text-center">{{enderecoEstoque.materialLocalEstoque.quantidade}}</td> | ||
242 | + <td class="text-center">{{enderecoEstoque.materialLocalEstoque.capacidade}}</td> | ||
243 | + </tbody> | ||
244 | + </table> | ||
245 | + </td> | ||
246 | + </tr> | ||
247 | + </tbody> | ||
248 | + </table> | ||
249 | + <div class="row"> | ||
250 | + <div class="col-sm-4 text-left"> | ||
251 | + <a ng-href="#top"></a> | ||
252 | + </div> | ||
253 | + </div> | ||
254 | + </div> | ||
255 | + </div> | ||
98 | </div> | 256 | </div> |
99 | </div> | 257 | </div> |
100 | </div> | 258 | </div> |
101 | </div> | 259 | </div> |
102 | </div> | 260 | </div> |
103 | - </div> | ||
104 | - </fieldset> | ||
105 | - | ||
106 | - <fieldset> | ||
107 | - | ||
108 | - <legend id="top"> | ||
109 | - <label ng-class="{'has-error' : formDialogAtendimento.$submitted && atendimentos && atendimentos.length < 1}"> | ||
110 | - <translate>ALMOXARIFADO.LABEL.DADOS_ATENDIMENTO</translate> | ||
111 | - <span class='red'>*</span> <i ng-show="formDialogAtendimento.$submitted && atendimentos && atendimentos.length < 1" | ||
112 | - class='fa fa-warning red' | ||
113 | - tooltip="{{$translate.instant('DADOS_ATENDIMENTO_REQUISICAO_CONSUMO') + ' ' +$translate.instant('LABEL.CAMPO_OBRIGATORIO')}}" | ||
114 | - tooltip-placement='top'></i> | ||
115 | - </label> | ||
116 | - </legend> | ||
117 | - <div class="row"> | ||
118 | - <table class="table table-striped table-bordered table-hover"> | ||
119 | - <thead> | ||
120 | - <tr> | ||
121 | - <th width="5%" class="text-center"> </th> | ||
122 | - <th class="text-center"><translate>ALMOXARIFADO.LABEL.NUMERO_ATENDIMENTO</translate></th> | ||
123 | - <th class="text-center"><translate>ALMOXARIFADO.LABEL.DATA_ATENDIMENTO</translate></th> | ||
124 | - </tr> | ||
125 | - </thead> | ||
126 | - <tbody> | ||
127 | - <tr ng-repeat-start="atendimento in atendimentos"> | ||
128 | - <td class="text-center"> | ||
129 | - <button type="button" ng-click="apresentarInfoAtendimentoItem(atendimento)"> | ||
130 | - <i class="ace-icon fa {{atendimento.$verInfo ? 'fa-minus' : 'fa-plus'}} bigger-125"></i> | ||
131 | - </button> | ||
132 | - </td> | ||
133 | - <td class="text-center">{{atendimento.numeroAtendimento}}</td> | ||
134 | - <td class="text-center">{{atendimento.dataAtendimento}}</td> | ||
135 | - </tr> | ||
136 | - <tr ng-show="atendimento.$verInfo == true" class="table-subgrid" ng-repeat-end> | ||
137 | - <td colspan="6"> | ||
138 | - <table class="table table-bordered table-striped"> | ||
139 | - <thead> | ||
140 | - <tr> | ||
141 | - <th class="text-center"><translate>LABEL.MATERIAL</translate></th> | ||
142 | - <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_ATENDIDA</translate></th> | ||
143 | - </tr> | ||
144 | - </thead> | ||
145 | - <tbody> | ||
146 | - <tr ng-repeat="atendimentoItem in atendimento.atendimentoRequisicaoConsumoItems"> | ||
147 | - <td style="width: 56%" class="text-center">{{atendimentoItem.material.descricao}}</td> | ||
148 | - <td class="text-center"><label-input-decimal ng-id="atendimentoItem.quantidade$index" ng-obrigatorio="true" | ||
149 | - ng-model="atendimentoItem.quantidade" ng-custom-maxlength="14" ng-disabled="!edit" | ||
150 | - ng-precisao="atendimentoItem.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 2" /></td> | ||
151 | - </tr> | ||
152 | - </tbody> | ||
153 | - </table> | ||
154 | - </td> | ||
155 | - </tr> | ||
156 | - </tbody> | ||
157 | - </table> | ||
158 | - </div> | ||
159 | - </fieldset> | ||
160 | - </div> | 261 | + </fieldset> |
262 | + </div> | ||
263 | + <script type="text/ng-template" id="modal-atendimento-item-enderecos.html"> | ||
264 | + <div ng-include src="'/cit-almoxarifado-web/html/atendimentoRequisicaoConsumo/dialog_atendimento_item_enderecos.html'" /> | ||
265 | + </script> | ||
161 | </form> | 266 | </form> |
162 | </div> | 267 | </div> |
268 | + |
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEditModal.html
@@ -13,10 +13,9 @@ | @@ -13,10 +13,9 @@ | ||
13 | </li> | 13 | </li> |
14 | </ul> | 14 | </ul> |
15 | </div> | 15 | </div> |
16 | - <button ng-click="$dismiss('cancel');" class="btn btn-clear"> | ||
17 | - <i class="fa fa-times red"></i> | ||
18 | - <translate>LABEL.FECHAR</translate> | ||
19 | - </button> | 16 | + <button class="btn btn-clear" ng-click="$showPageSearchWorkspace(workspace); atualizaPaginaPesquisa();"> |
17 | + <i class="fa fa-search"></i> <translate>LABEL.PESQUISAR</translate> | ||
18 | + </button> | ||
20 | </div><!-- .modal-header --> | 19 | </div><!-- .modal-header --> |
21 | 20 | ||
22 | <div class="modal-body"> | 21 | <div class="modal-body"> |
@@ -56,7 +55,7 @@ | @@ -56,7 +55,7 @@ | ||
56 | <thead> | 55 | <thead> |
57 | <tr> | 56 | <tr> |
58 | <th class="text-center" ng-show="edit"><translate>ALMOXARIFADO.LABEL.INFO</translate></th> | 57 | <th class="text-center" ng-show="edit"><translate>ALMOXARIFADO.LABEL.INFO</translate></th> |
59 | - <th class="text-center" width="30%"><translate>LABEL.MATERIAL</translate></th> | 58 | + <th class="text-center" width="20%"><translate>LABEL.MATERIAL</translate></th> |
60 | <th class="text-center"><translate>LABEL.UNIDADE_MEDIDA</translate></th> | 59 | <th class="text-center"><translate>LABEL.UNIDADE_MEDIDA</translate></th> |
61 | <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_PEDIDA</translate></th> | 60 | <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_PEDIDA</translate></th> |
62 | <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_ATENDIDA</translate></th> | 61 | <th class="text-center"><translate>ALMOXARIFADO.LABEL.QUANTIDADE_ATENDIDA</translate></th> |
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html
@@ -5,32 +5,29 @@ | @@ -5,32 +5,29 @@ | ||
5 | 5 | ||
6 | <button class="btn btn-clear" ng-click="iniciarAtendimento();"> | 6 | <button class="btn btn-clear" ng-click="iniciarAtendimento();"> |
7 | <i class="fa fa-plus-circle yellow-dark"></i> | 7 | <i class="fa fa-plus-circle yellow-dark"></i> |
8 | - <translate>ALMOXARIFADO.LABEL.INICIAR_ATENDIMENTO</translate> | 8 | + <translate>ALMOXARIFADO.LABEL.ATENDER</translate> |
9 | </button> | 9 | </button> |
10 | 10 | ||
11 | - <button title="{{$translate.instant('ALMOXARIFADO.LABEL.RELATORIO_GUIA_REMESSA')}}" | ||
12 | - alt="{{$translate.instant('ALMOXARIFADO.LABEL.RELATORIO_GUIA_REMESSA')}}" | ||
13 | - class="btn btn-clear" type="button" ng-disabled="false" | ||
14 | - ng-click="gerar();"> | ||
15 | - <i class="fa fa-print"></i> | ||
16 | - <translate>ALMOXARIFADO.LABEL.RELATORIO_GUIA_REMESSA</translate> | ||
17 | - </button> | 11 | + <button class="btn btn-clear" ng-click="finalizarRequisicao();"> |
12 | + <i class="fa fa-file-text-o green"></i> | ||
13 | + <translate>ALMOXARIFADO.LABEL.FINALIZAR_REQUISICAO</translate> | ||
14 | + </button> | ||
15 | + | ||
16 | + <button class="btn btn-clear" ng-click="excluirAtendimento()"> | ||
17 | + <i class="fa fa-times red"></i> | ||
18 | + <translate>ALMOXARIFADO.LABEL.EXCLUIR_ATENDIMENTO</translate> | ||
19 | + </button> | ||
18 | 20 | ||
19 | - <button ng-show="listaSelecionados.length == 1" class="btn btn-clear" ng-click="abrirVisualizar(false);"> | 21 | + <button class="btn btn-clear" ng-click="abrirVisualizar();"> |
20 | <i class="fa fa-search blue"></i> | 22 | <i class="fa fa-search blue"></i> |
21 | <translate>LABEL.VISUALIZAR</translate> | 23 | <translate>LABEL.VISUALIZAR</translate> |
22 | </button> | 24 | </button> |
23 | 25 | ||
24 | - <button ng-show="listaSelecionados.length == 1" class="btn btn-clear" ng-click="abrirVisualizar(true);"> | ||
25 | - <i class="fa fa-pencil blue"></i> | ||
26 | - <translate>LABEL.EDITAR</translate> | 26 | + <button class="btn btn-clear" ng-click="interromperAtendimentoIniciado()"> |
27 | + <i class="fa fa-times-circle-o orange"></i> | ||
28 | + <translate>ALMOXARIFADO.LABEL.INTERROMPER_ATENDIMENTO_INICIADO</translate> | ||
27 | </button> | 29 | </button> |
28 | 30 | ||
29 | -<!-- <button class="btn btn-clear" ng-click="removerAtendimentoRequisicao();"> --> | ||
30 | -<!-- <i class="fa fa-times red"></i> --> | ||
31 | -<!-- <translate>LABEL.REMOVER</translate> --> | ||
32 | -<!-- </button> --> | ||
33 | - | ||
34 | <span class="divider-vertical"></span> | 31 | <span class="divider-vertical"></span> |
35 | 32 | ||
36 | <filtros ng-filter="filterCriteria" ng-workspace="workspace"></filtros> | 33 | <filtros ng-filter="filterCriteria" ng-workspace="workspace"></filtros> |
@@ -48,9 +45,134 @@ | @@ -48,9 +45,134 @@ | ||
48 | </div><!-- .bar-buttons-action --> | 45 | </div><!-- .bar-buttons-action --> |
49 | 46 | ||
50 | <breadcrumb ng-workspace="workspace"></breadcrumb> | 47 | <breadcrumb ng-workspace="workspace"></breadcrumb> |
48 | + | ||
49 | + <div class="row" style="margin-bottom: 10px"> | ||
50 | + <div class="col-sm-2 text-left"> | ||
51 | + <button class="btn btn-sm btn-primary" type="button" ng-click="atendimentoAvancado();" style="margin-top: 26px;"> | ||
52 | + <translate>LABEL.BUSCA_AVANCADA</translate> | ||
53 | + </button> | ||
54 | + </div> | ||
55 | + </div> | ||
56 | + | ||
57 | + <div class="alert alert-warning" title="{{$translate.instant('ALMOXARIFADO.LABEL.LIMPAR_BUSCA_AVANCADA')}}" alt="{{$translate.instant('ALMOXARIFADO.LABEL.LIMPAR_BUSCA_AVANCADA')}}" | ||
58 | + role="alert" ng-show="atendimentoVH.idsMaterais && atendimentoVH.idsMaterais.length > 0"> | ||
59 | + <a class="close" data-dismiss="alert" ng-click="limparBuscaAvancada()" aria-label="close">×</a> | ||
60 | + <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> | ||
61 | + <translate>ALMOXARIFADO.MSG.INFO_FILTRO_MATERIAL_REQUISICAO</span></translate> | ||
62 | + </div> | ||
51 | 63 | ||
52 | <list-view ng-lista="atendimentoRequisicaoConsumoList" ng-repository="RequisicaoConsumoRepository" ng-use-custom-remove="false" | 64 | <list-view ng-lista="atendimentoRequisicaoConsumoList" ng-repository="RequisicaoConsumoRepository" ng-use-custom-remove="false" |
53 | ng-headers="headers" ng-filter-criteria="filterCriteria" ng-item-selecionado="atendimentoRequisicaoConsumoChecked" | 65 | ng-headers="headers" ng-filter-criteria="filterCriteria" ng-item-selecionado="atendimentoRequisicaoConsumoChecked" |
54 | - ng-lista-itens-selecionados="listaSelecionados" ng-check-on="true"></list-view> | 66 | + ng-lista-itens-selecionados="listaSelecionados" ng-check-on="true" ng-exibir-boolean-sim-nao="true" |
67 | + set-total-pages="setTotalPages" set-total-itens="setTotalItens" ng-marcar-linha-grid-atributo="emAtendimento" | ||
68 | + use-custom-filter-temp="filtrarCustomizado" ng-custom-filter="filtrarRequisicoes()"></list-view> | ||
55 | 69 | ||
56 | </div><!-- .page-content --> | 70 | </div><!-- .page-content --> |
71 | + | ||
72 | + | ||
73 | +<script type="text/ng-template" id="modal-busca-avancada-requisicao.html"> | ||
74 | + <form name="formDialogBuscaAvancadaRequisicao" novalidate > | ||
75 | + <div class="modal-header"> | ||
76 | + <button class="btn btn-clear" type="button" title="{{$translate.instant('ALMOXARIFADO.LABEL.FILTRAR')}}" alt="{{$translate.instant('ALMOXARIFADO.LABEL.FILTRAR')}}" ng-click="filtrarRequisicoes();"> | ||
77 | + <i class="fa fa-plus-circle yellow-dark"></i> | ||
78 | + <translate>ALMOXARIFADO.LABEL.FILTRAR</translate> | ||
79 | + </button> | ||
80 | + | ||
81 | + <button title="{{$translate.instant('LABEL.LIMPAR')}}" alt="{{$translate.instant('LABEL.LIMPAR')}}" ng-click="limparBuscaAvancada()" class="btn btn-clear" type="button"> | ||
82 | + <i class="fa fa-eraser"></i> | ||
83 | + <translate>LABEL.LIMPAR</translate> | ||
84 | + </button> | ||
85 | + | ||
86 | + <button title="{{$translate.instant('LABEL.CANCELAR')}}" alt="{{$translate.instant('LABEL.CANCELAR')}}" ng-click="$dismiss('cancel');" class="btn btn-clear" type="button"> | ||
87 | + <i class="fa fa-times red"></i> | ||
88 | + <translate>LABEL.CANCELAR</translate> | ||
89 | + </button> | ||
90 | + </div> | ||
91 | + | ||
92 | + <div class="modal-body"> | ||
93 | + | ||
94 | + <div class="row"> | ||
95 | + <div class="col-md-12"> | ||
96 | + <auto-complete ng-id="materialConsumoItem" ng-label="ALMOXARIFADO.LABEL.MATERIAL_CONSUMO" ng-model="filtroAtendimento.materialConsumoItem" | ||
97 | + ng-find="findMateriaisConsumoByOrganizacao(value)" ng-item="item.codigoEDescricao" ng-set-result="setMaterialConsumoItens(item)" /> | ||
98 | + </div> | ||
99 | + </div> | ||
100 | + <div class="row" ng-show="listaMateriaisConsumoSelecionados.length > 0"> | ||
101 | + <div class="col-sm-12"> | ||
102 | + <div class="panel panel-default"> | ||
103 | + <div class="panel-heading clearfix"> | ||
104 | + <button class="btn btn-clear" type="button" ng-click="removerMaterialConsumoSelecionado(materialConsumoSelectedAll)"> | ||
105 | + <i class="fa fa-times red"></i> | ||
106 | + <translate>LABEL.REMOVER</translate> | ||
107 | + </button> | ||
108 | + </div> | ||
109 | + <table class="table table-bordered table-striped"> | ||
110 | + <thead> | ||
111 | + <tr> | ||
112 | + <th style="width: 3%;" class="text-center"> | ||
113 | + <input type="checkbox" ng-model="filtroAtendimento.materialConsumoSelectedAll" ng-click="selectAllMaterialConsumo(materialConsumoSelectedAll)"/> | ||
114 | + </th> | ||
115 | + <th style="text-align: center"> | ||
116 | + <translate>ALMOXARIFADO.LABEL.MATERIAL_CONSUMO</translate> | ||
117 | + </th> | ||
118 | + </tr> | ||
119 | + </thead> | ||
120 | + <tbody ng-repeat="materialConsumoSelecionado in listaMateriaisConsumoSelecionados"> | ||
121 | + <tr> | ||
122 | + <td class="text-center"> | ||
123 | + <input type="checkbox" ng-checked="materialConsumoSelecionado.$checkedChBox" ng-model="materialConsumoSelecionado.$checkedChBox"/> | ||
124 | + </td> | ||
125 | + <td> | ||
126 | + {{materialConsumoSelecionado.codigoEDescricao}} | ||
127 | + </td> | ||
128 | + </tr> | ||
129 | + </tbody> | ||
130 | + </table> | ||
131 | + </div> | ||
132 | + </div> | ||
133 | + </div> | ||
134 | + <div class="row"> | ||
135 | + <div class="col-md-12"> | ||
136 | + <auto-complete ng-id="filtroAtendimento.unidadeRequisitanteSelecao" ng-label="ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE" | ||
137 | + ng-model="filtroAtendimento.unidadeRequisitanteSelecao" form="formDialogBuscaAvancadaRequisicao" | ||
138 | + ng-find="findEstruturaOrganizacionalUR(value)" ng-set-result="setUnidadeRequisitante(item);" | ||
139 | + ng-item="item.nome + ' - ' + item.classificacao" /> | ||
140 | + </div> | ||
141 | + </div> | ||
142 | + <div class="row" ng-show="listaUnidadesRequisitantesSelecionadas.length > 0"> | ||
143 | + <div class="col-sm-12"> | ||
144 | + <div class="panel panel-default"> | ||
145 | + <div class="panel-heading clearfix"> | ||
146 | + <button class="btn btn-clear" type="button" ng-click="removerUnidadeRequisitanteSelecionada()"> | ||
147 | + <i class="fa fa-times red"></i> | ||
148 | + <translate>LABEL.REMOVER</translate> | ||
149 | + </button> | ||
150 | + </div> | ||
151 | + <table class="table table-bordered table-striped"> | ||
152 | + <thead> | ||
153 | + <tr> | ||
154 | + <th style="width: 3%;" class="text-center"> | ||
155 | + <input type="checkbox" ng-model="filtroAtendimento.unidadeRequisitanteSelectedAll" ng-click="selectAllUnidadesRequisitantes(unidadeRequisitanteSelectedAll)"/> | ||
156 | + </th> | ||
157 | + <th style="text-align: center"> | ||
158 | + <translate>ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE</translate> | ||
159 | + </th> | ||
160 | + </tr> | ||
161 | + </thead> | ||
162 | + <tbody ng-repeat="unidadeRequisitanteSelecionada in listaUnidadesRequisitantesSelecionadas"> | ||
163 | + <tr> | ||
164 | + <td class="text-center"> | ||
165 | + <input type="checkbox" ng-checked="unidadeRequisitanteSelecionada.$checkedChBox" ng-model="unidadeRequisitanteSelecionada.$checkedChBox"/> | ||
166 | + </td> | ||
167 | + <td> | ||
168 | + {{unidadeRequisitanteSelecionada.nome}} | ||
169 | + </td> | ||
170 | + </tr> | ||
171 | + </tbody> | ||
172 | + </table> | ||
173 | + </div> | ||
174 | + </div> | ||
175 | + </div> | ||
176 | + </div> | ||
177 | + </form> | ||
178 | +</script> |
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/dialog_atendimento_item_enderecos.html
0 → 100644
@@ -0,0 +1,68 @@ | @@ -0,0 +1,68 @@ | ||
1 | +<div class="modal-header"> | ||
2 | + <button class="btn btn-clear" type="button" ng-click="saveListaEnderecos()" | ||
3 | + title="{{$translate.instant('LABEL.SALVAR')}}" ng-show="edit" | ||
4 | + alt="{{$translate.instant('LABEL.SALVAR')}}"> | ||
5 | + <i class="fa fa-save green"></i> | ||
6 | + <translate>LABEL.SALVAR</translate> | ||
7 | + </button> | ||
8 | + | ||
9 | + <button title="{{$translate.instant('LABEL.CANCELAR')}}" | ||
10 | + alt="{{$translate.instant('LABEL.CANCELAR')}}" | ||
11 | + ng-click="$dismiss('cancel');" class="btn btn-clear" type="button"> | ||
12 | + <i class="fa fa-times red"></i> | ||
13 | + <translate>LABEL.CANCELAR</translate> | ||
14 | + </button> | ||
15 | +</div> | ||
16 | + | ||
17 | +<div class="modal-body"> | ||
18 | + <legend style="font-size: 20px"> | ||
19 | + <translate>ALMOXARIFADO.LABEL.ENDERECOS_ESTOQUE</translate> | ||
20 | + </legend> | ||
21 | + | ||
22 | + <div class="row"> | ||
23 | + <div class="col-md-12"> | ||
24 | + <label-select ng-model="itemAtendimentoRequisicaoConsumoItemEndereco" ng-list="listaEnderecosSelect" ng-show="edit" | ||
25 | + ng-custom-options="itemAtendimentoRequisicaoConsumoItemEndereco as itemAtendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.endereco.descricao for itemAtendimentoRequisicaoConsumoItemEndereco"></label-select> | ||
26 | + </div> | ||
27 | + </div> | ||
28 | + <div class="row"> | ||
29 | + <div class="col-sm-12"> | ||
30 | + <div class="panel panel-default"> | ||
31 | + <div class="panel-heading clearfix"> | ||
32 | + <button class="btn btn-clear" type="button" ng-disabled="listaEnderecosSelect.length == 0 || !itemAtendimentoRequisicaoConsumoItemEndereco || !edit" | ||
33 | + ng-click="addEnderecoToList(itemAtendimentoRequisicaoConsumoItemEndereco)"> | ||
34 | + <i class="fa fa-plus-circle yellow-dark"></i> | ||
35 | + <translate>LABEL.ADICIONAR</translate> | ||
36 | + </button> | ||
37 | + <button class="btn btn-clear" type="button" ng-click="removeEnderecoFromList()" ng-disabled="!edit"> | ||
38 | + <i class="fa fa-times red"></i> | ||
39 | + <translate>LABEL.REMOVER</translate> | ||
40 | + </button> | ||
41 | + </div> | ||
42 | + <table class="table table-bordered table-striped"> | ||
43 | + <thead> | ||
44 | + <tr> | ||
45 | + <th style="width: 3%;" class="text-center"><input type="checkbox" ng-model="atendimentoRequisicaoConsumoItemEnderecoSelectedAll" ng-click="selectAllEnderecos(atendimentoRequisicaoConsumoItemEnderecoSelectedAll)" /></th> | ||
46 | + <th style="text-align: center"><translate>ALMOXARIFADO.LABEL.ENDERECO_ESTOQUE</translate></th> | ||
47 | + <th style="text-align: center"><translate>ALMOXARIFADO.LABEL.SALDO_ENDERECO</translate></th> | ||
48 | + <th style="text-align: center"><translate>ALMOXARIFADO.LABEL.ATENDER</translate></th> | ||
49 | + </tr> | ||
50 | + </thead> | ||
51 | + <tbody ng-repeat="atendimentoRequisicaoConsumoItemEndereco in listaEnderecosAdicionados"> | ||
52 | + <tr ng-class="atendimentoRequisicaoConsumoItemEndereco.$hasError ? 'danger' : ''"> | ||
53 | + <td class="text-center"><input type="checkbox" ng-checked="atendimentoRequisicaoConsumoItemEndereco.$checkedChBox" ng-model="atendimentoRequisicaoConsumoItemEndereco.$checkedChBox" /></td> | ||
54 | + <td class="text-center">{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.endereco.descricao}}</td> | ||
55 | + <td class="text-center">{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.quantidade}}</td> | ||
56 | + <td class="text-center"> | ||
57 | + <label-input-decimal ng-id="atendimentoRequisicaoConsumoItemEndereco.quantidade" ng-obrigatorio="true" ng-evento-blur="aplicarValidacaoDecimal" ng-disabled="!edit" | ||
58 | + ng-model="atendimentoRequisicaoConsumoItemEndereco.quantidade" form="atendimentoRequisicaoConsumoForm" ng-evento-keyup="validarQuantidades(atendimentoItemEmEdicao)" | ||
59 | + ng-custom-maxlength="{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.materialEstoque.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 4 : 11}}" | ||
60 | + ng-precisao="{{atendimentoRequisicaoConsumoItemEndereco.materialLocalEstoque.materialEstoque.material.unidadeArmazenamento.tipoNumerico.codigo === 1 ? 0 : 'decimal'}}" /> | ||
61 | + </td> | ||
62 | + </tr> | ||
63 | + </tbody> | ||
64 | + </table> | ||
65 | + </div> | ||
66 | + </div> | ||
67 | + </div> | ||
68 | +</div> | ||
0 | \ No newline at end of file | 69 | \ No newline at end of file |