Commit 340dc5bc2d461c48f9bacb7da1ac3c94617edc62
1 parent
7a41928f
Exists in
master
Redmine #tarefa-4936
Showing
7 changed files
with
153 additions
and
53 deletions
Show diff stats
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoDao.java
... | ... | @@ -2,6 +2,7 @@ package br.com.centralit.api.dao; |
2 | 2 | |
3 | 3 | import java.util.Calendar; |
4 | 4 | import java.util.Collection; |
5 | +import java.util.List; | |
5 | 6 | |
6 | 7 | import br.com.centralit.api.model.EstruturaOrganizacional; |
7 | 8 | import br.com.centralit.api.model.MaterialConsumo; |
... | ... | @@ -112,4 +113,9 @@ public interface RequisicaoConsumoDao extends CitGenericDAO { |
112 | 113 | */ |
113 | 114 | RequisicaoConsumo findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante); |
114 | 115 | |
116 | + Object[] getRequisicaoForReport(Long requisicaoId); | |
117 | + List<Object> getResumoContabilForReport(Long requisicaoId,boolean isFIFO); | |
118 | + List<Object> getMateriaisForReport(Long requisicaoId,boolean isFIFO); | |
119 | + String findtipoStatusRequisicaoPorMaterial(Long requisicaoId); | |
120 | + | |
115 | 121 | } | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoDaoHibernate.java
... | ... | @@ -282,4 +282,88 @@ public class RequisicaoConsumoDaoHibernate extends CitGenericDAOImpl implements |
282 | 282 | |
283 | 283 | return this.searchUnique(searchSeven); |
284 | 284 | } |
285 | + | |
286 | + @Override | |
287 | + public String findtipoStatusRequisicaoPorMaterial(Long requisicaoId) { | |
288 | + return (String)singleResultNativeQuery("select nome from alm_requisicaoconsumo req left join dominio as dominio on dominio.id = req.tipostatusrequisicao_id where req.id = "+requisicaoId); | |
289 | + } | |
290 | + | |
291 | + @Override | |
292 | + public Object[] getRequisicaoForReport(Long requisicaoId){ | |
293 | + StringBuilder sql = new StringBuilder(); | |
294 | + sql.append("select req_c.numerorequisicao as numerorequisicao,alm.nome as almoxarifado,requisitante.nome as unidadereq,locale.nome as enderecour,"); | |
295 | + sql.append(" usuario.nome as requisitante,c_custo.descricao as centrocustos,req_c.datacriacao as cadem,req_c.datafinalizacaoatendimento as atendidaem from alm_requisicaoconsumo req_c"); | |
296 | + sql.append(" left join estruturaorganizacional alm on req_c.almoxarifado_id = alm.id"); | |
297 | + sql.append(" left join estruturaorganizacional requisitante on req_c.unidadeRequisitante_id = requisitante.id"); | |
298 | + sql.append(" left join localizacao locale on requisitante.localizacao_id = locale.id"); | |
299 | + sql.append(" left join centrocusto c_custo on req_c.centrocusto_id = c_custo.id"); | |
300 | + sql.append(" left join seguranca_usuario usuario on req_c.autor_id = usuario.id"); | |
301 | + sql.append(" where req_c.id = ").append(requisicaoId); | |
302 | + | |
303 | + return (Object[]) singleResultNativeQuery(sql.toString()); | |
304 | + } | |
305 | + | |
306 | + @Override | |
307 | + public List<Object> getResumoContabilForReport(Long requisicaoId,boolean isFIFO) { | |
308 | + StringBuilder sql = new StringBuilder(); | |
309 | + sql.append("select distinct contac.codigo,contac.descricao, rc_item.quantidade,"); | |
310 | + if(isFIFO) | |
311 | + sql.append("fifo.valorUnitario"); | |
312 | + else | |
313 | + sql.append("mat_estoque.valorUnitarioMedio"); | |
314 | + | |
315 | + sql.append(" from alm_requisicaoconsumo req_c"); | |
316 | + sql.append(" left join estruturaorganizacional alm on req_c.organizacao_id = alm.id"); | |
317 | + sql.append(" left join alm_rc_item rc_item on rc_item.requisicaoConsumo_id = req_c.id"); | |
318 | + sql.append(" left join alm_materialconsumo mat_c on rc_item.materialconsumo_id = mat_c.id"); | |
319 | + sql.append(" left join material mat on mat_c.id = mat.id"); | |
320 | + | |
321 | + if(isFIFO) | |
322 | + sql.append(" left join alm_me_fifoitem fifo on fifo.material_id = mat.id"); | |
323 | + else | |
324 | + sql.append(" left join alm_materialestoque mat_estoque on mat_estoque.material_id = mat.id"); | |
325 | + | |
326 | + sql.append(" left join contacontabil contac on mat.contacontabil_id = contac.id"); | |
327 | + sql.append(" where req_c.id = ").append(requisicaoId); | |
328 | + if(isFIFO) | |
329 | + sql.append(" and fifo.valorUnitario is not null"); | |
330 | +// sql.append(" and rc_item.quantidadeatendida is not null"); | |
331 | + sql.append(" order by contac.descricao"); | |
332 | + | |
333 | + return (List<Object>) resultListNativeQuery(sql.toString()); | |
334 | + } | |
335 | + | |
336 | + @Override | |
337 | + public List<Object> getMateriaisForReport(Long requisicaoId,boolean isFIFO) { | |
338 | + | |
339 | + StringBuilder sql = new StringBuilder(); | |
340 | + sql.append("select distinct mat.descricao,umedi.sigla,entrada_item.datavalidade,rc_item.quantidade, rc_item.quantidadeatendida,"); | |
341 | + | |
342 | + if(isFIFO) | |
343 | + sql.append("fifo.valorUnitario"); | |
344 | + else | |
345 | + sql.append("mat_estoque.valorUnitarioMedio"); | |
346 | + | |
347 | + sql.append(" from alm_requisicaoconsumo req_c"); | |
348 | + sql.append(" left join estruturaorganizacional alm on req_c.organizacao_id = alm.id"); | |
349 | + sql.append(" left join alm_rc_item rc_item on rc_item.requisicaoConsumo_id = req_c.id"); | |
350 | + sql.append(" left join alm_materialconsumo mat_c on rc_item.materialconsumo_id = mat_c.id"); | |
351 | + sql.append(" left join material mat on mat_c.id = mat.id"); | |
352 | + sql.append(" left join alm_en_entradaitem entrada_item on entrada_item.material_id = mat.id"); | |
353 | + sql.append(" left join alm_me_localestoque local_estoque on local_estoque.id = entrada_item.materialLocalEstoque_id"); | |
354 | + | |
355 | + if(isFIFO) | |
356 | + sql.append(" left join alm_me_fifoitem fifo on fifo.material_id = mat.id"); | |
357 | + else | |
358 | + sql.append(" left join alm_materialestoque mat_estoque on mat_estoque.material_id = mat.id"); | |
359 | + | |
360 | + sql.append(" left join unidademedida umedi on umedi.id = mat_c.unidadearmazenamento_id"); | |
361 | + sql.append(" where req_c.id =").append(requisicaoId); | |
362 | + if(isFIFO) | |
363 | + sql.append("and fifo.quantidadeRestante > 0"); | |
364 | + | |
365 | + sql.append(" order by mat.descricao"); | |
366 | + | |
367 | + return (List<Object>) resultListNativeQuery(sql.toString()); | |
368 | + } | |
285 | 369 | } | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java
... | ... | @@ -2,6 +2,7 @@ package br.com.centralit.api.service; |
2 | 2 | |
3 | 3 | import java.util.Calendar; |
4 | 4 | import java.util.Collection; |
5 | +import java.util.List; | |
5 | 6 | |
6 | 7 | import br.com.centralit.api.model.EstruturaOrganizacional; |
7 | 8 | import br.com.centralit.api.model.MaterialConsumo; |
... | ... | @@ -122,4 +123,8 @@ public interface RequisicaoConsumoService extends GenericService<RequisicaoConsu |
122 | 123 | */ |
123 | 124 | RequisicaoConsumo findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante); |
124 | 125 | |
126 | + Object[] getRequisicaoForReport(Long requisicaoId); | |
127 | + List<Object> getResumoContabilForReport(Long requisicaoId,boolean isFIFO); | |
128 | + List<Object> getMateriaisForReport(Long requisicaoId,boolean isFIFO); | |
129 | + String findtipoStatusRequisicaoPorMaterial(Long requisicaoId); | |
125 | 130 | } | ... | ... |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoServiceImpl.java
... | ... | @@ -511,4 +511,24 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC |
511 | 511 | |
512 | 512 | entity.setNumeroRequisicao(codigo); |
513 | 513 | } |
514 | + | |
515 | + @Override | |
516 | + public Object[] getRequisicaoForReport(Long requisicaoId) { | |
517 | + return requisicaoConsumoDao.getRequisicaoForReport(requisicaoId); | |
518 | + } | |
519 | + | |
520 | + @Override | |
521 | + public List<Object> getResumoContabilForReport(Long requisicaoId,boolean isFIFO) { | |
522 | + return requisicaoConsumoDao.getResumoContabilForReport(requisicaoId,isFIFO); | |
523 | + } | |
524 | + | |
525 | + @Override | |
526 | + public List<Object> getMateriaisForReport(Long requisicaoId,boolean isFIFO) { | |
527 | + return requisicaoConsumoDao.getMateriaisForReport(requisicaoId,isFIFO); | |
528 | + } | |
529 | + | |
530 | + @Override | |
531 | + public String findtipoStatusRequisicaoPorMaterial(Long requisicaoId) { | |
532 | + return requisicaoConsumoDao.findtipoStatusRequisicaoPorMaterial(requisicaoId); | |
533 | + } | |
514 | 534 | } | ... | ... |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/BeanMaterial.java
... | ... | @@ -13,6 +13,7 @@ public class BeanMaterial { |
13 | 13 | private String endereco; |
14 | 14 | private BigDecimal qtdeSolicitada; |
15 | 15 | private BigDecimal qtdeFornecida; |
16 | + private BigDecimal qtdeEstoque; | |
16 | 17 | private BigDecimal valorTotal; |
17 | 18 | private BigDecimal valorUnitario; |
18 | 19 | |
... | ... | @@ -26,7 +27,7 @@ public class BeanMaterial { |
26 | 27 | this.valorUnitario = (BigDecimal) objArray[5]; |
27 | 28 | setValorTotal(valorUnitario); |
28 | 29 | } |
29 | - | |
30 | + | |
30 | 31 | public Integer getItem() { |
31 | 32 | return item; |
32 | 33 | } |
... | ... | @@ -83,6 +84,10 @@ public class BeanMaterial { |
83 | 84 | public void setValorUnitario(BigDecimal valorUnitario) { |
84 | 85 | this.valorUnitario = valorUnitario; |
85 | 86 | } |
87 | + | |
88 | + public BigDecimal getQtdeEstoque() { | |
89 | + return qtdeEstoque; | |
90 | + } | |
86 | 91 | |
87 | 92 | @Override |
88 | 93 | public boolean equals(Object obj) { | ... | ... |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/BeanSubReportContaContabil.java
... | ... | @@ -32,7 +32,8 @@ public class BeanSubReportContaContabil { |
32 | 32 | } |
33 | 33 | |
34 | 34 | public BigDecimal getValorTotal() { |
35 | - return valorUnitario.multiply(qtde); | |
35 | + valorTotal = valorUnitario.multiply(qtde); | |
36 | + return valorTotal; | |
36 | 37 | } |
37 | 38 | public String getCodigo() { |
38 | 39 | return codigo; | ... | ... |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/ReportGuiaRemessaAtendimentoConsumoController.java
... | ... | @@ -30,13 +30,11 @@ import org.springframework.web.bind.annotation.RequestParam; |
30 | 30 | import org.springframework.web.bind.annotation.ResponseBody; |
31 | 31 | |
32 | 32 | import br.com.centralit.api.model.Entrada; |
33 | -import br.com.centralit.api.model.RequisicaoConsumo; | |
34 | 33 | import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; |
35 | 34 | import br.com.centralit.api.service.ConfiguracaoService; |
36 | 35 | import br.com.centralit.api.service.DominioService; |
37 | 36 | import br.com.centralit.api.service.EstruturaOrganizacionalService; |
38 | 37 | import br.com.centralit.api.service.InternacionalizacaoService; |
39 | -import br.com.centralit.api.service.RequisicaoConsumoItemService; | |
40 | 38 | import br.com.centralit.api.service.RequisicaoConsumoService; |
41 | 39 | import br.com.centralit.api.service.UsuarioService; |
42 | 40 | import br.com.centralit.api.viewHelper.BeanReportVH; |
... | ... | @@ -84,11 +82,12 @@ public class ReportGuiaRemessaAtendimentoConsumoController extends GenericContro |
84 | 82 | |
85 | 83 | @Autowired |
86 | 84 | private ConfiguracaoParametroSistemaService configuracaoParametroSistemaService; |
87 | - ; | |
85 | + | |
88 | 86 | @Autowired |
89 | 87 | private ReportController reportController; |
90 | 88 | |
91 | - private String AV_MONETARIA; | |
89 | + private boolean is_FIFO; | |
90 | + private final String FIFO = "1"; | |
92 | 91 | |
93 | 92 | /** Atributo idioma. */ |
94 | 93 | Dominio idioma; |
... | ... | @@ -130,9 +129,8 @@ public class ReportGuiaRemessaAtendimentoConsumoController extends GenericContro |
130 | 129 | InputStream input = null; |
131 | 130 | InputStream inputSub = null; |
132 | 131 | try { |
133 | - AV_MONETARIA = configuracaoParametroSistemaService.getParametro("TIPO_AVALIACAO_MONETARIA_ESTOQUE").getValor(); | |
134 | - | |
135 | - final String tipoStatusRequisicao = (String)requisicaoConsumoService.singleResultNativeQuery("select nome from alm_requisicaoconsumo req left join dominio as dominio on dominio.id = req.tipostatusrequisicao_id where req.id = "+requisicaoId); | |
132 | + is_FIFO = configuracaoParametroSistemaService.getParametro("TIPO_AVALIACAO_MONETARIA_ESTOQUE").getValor().equals(FIFO); | |
133 | + final boolean isFinalizada = requisicaoConsumoService.findtipoStatusRequisicaoPorMaterial(requisicaoId).equals("FINALIZADA"); | |
136 | 134 | |
137 | 135 | Usuario usuarioLogado = (Usuario) usuarioService.find(((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId()); |
138 | 136 | Long organizacaoId = usuarioLogado.getOrganizacao().getId(); |
... | ... | @@ -160,13 +158,16 @@ public class ReportGuiaRemessaAtendimentoConsumoController extends GenericContro |
160 | 158 | |
161 | 159 | List<BeanRequisicaoSubReport> beanReqSubList = new ArrayList<BeanRequisicaoSubReport>(); |
162 | 160 | |
163 | - BeanRequisicaoSubReport beanSubReport = new BeanRequisicaoSubReport(getRequisicao(requisicaoId)); | |
161 | + BeanRequisicaoSubReport beanSubReport = new BeanRequisicaoSubReport(requisicaoConsumoService.getRequisicaoForReport(requisicaoId)); | |
164 | 162 | beanSubReport.setMateriais(getMateriais(requisicaoId)); |
165 | 163 | beanReqSubList.add(beanSubReport); |
166 | 164 | |
167 | 165 | parameters.put("BEAN_SUB_REPORT",new JRBeanCollectionDataSource(beanReqSubList)); |
168 | - parametersSubReport.put("REQ_CONSUMO", getResumoContabil(requisicaoId)); | |
169 | - parametersSubReport.put("is_asterisco",!tipoStatusRequisicao.equals("ATENDIDA")); | |
166 | + | |
167 | +// if(isFinalizada) | |
168 | + parametersSubReport.put("REQ_CONSUMO", getResumoContabil(requisicaoId)); | |
169 | + | |
170 | + parametersSubReport.put("is_asterisco",!isFinalizada); | |
170 | 171 | |
171 | 172 | parameters.put("SUBREPORT_PARAMETERS_MAP",parametersSubReport); |
172 | 173 | |
... | ... | @@ -189,23 +190,12 @@ public class ReportGuiaRemessaAtendimentoConsumoController extends GenericContro |
189 | 190 | } |
190 | 191 | |
191 | 192 | private JRBeanCollectionDataSource getMateriais(Long requisicaoId){ |
192 | - StringBuilder sql = new StringBuilder(); | |
193 | - sql.append("select distinct mat.descricao,umedi.sigla,entrada_item.datavalidade,rc_item.quantidade, rc_item.quantidadeatendida,mat_estoque.valorUnitarioMedio from alm_requisicaoconsumo req_c "); | |
194 | - sql.append(" left join estruturaorganizacional alm on req_c.organizacao_id = alm.id"); | |
195 | - sql.append(" left join alm_rc_item rc_item on rc_item.requisicaoConsumo_id = req_c.id"); | |
196 | - sql.append(" left join alm_materialconsumo mat_c on rc_item.materialconsumo_id = mat_c.id"); | |
197 | - sql.append(" left join material mat on mat_c.id = mat.id"); | |
198 | - sql.append(" left join alm_en_entradaitem entrada_item on entrada_item.material_id = mat.id"); | |
199 | - sql.append(" left join alm_me_localestoque local_estoque on local_estoque.id = entrada_item.materialLocalEstoque_id"); | |
200 | - sql.append(" left join alm_materialestoque mat_estoque on mat_estoque.material_id = mat.id"); | |
201 | - sql.append(" left join unidademedida umedi on umedi.id = mat_c.unidadearmazenamento_id"); | |
202 | - sql.append(" where req_c.id =").append(requisicaoId); | |
203 | - sql.append(" order by mat.descricao"); | |
204 | - | |
205 | - List<Object> result = (List<Object>) usuarioService.resultListNativeQuery(sql.toString()); | |
193 | + List<Object> result; | |
206 | 194 | final List<BeanMaterial> materiais = new ArrayList<BeanMaterial>(); |
207 | 195 | List<BeanMaterial> materiaisResult = new ArrayList<BeanMaterial>(); |
208 | 196 | Integer index = 1; |
197 | + result = requisicaoConsumoService.getMateriaisForReport(requisicaoId,is_FIFO); | |
198 | + | |
209 | 199 | for(Object obj : result) |
210 | 200 | materiais.add(new BeanMaterial((Object[]) obj)); |
211 | 201 | |
... | ... | @@ -217,21 +207,25 @@ public class ReportGuiaRemessaAtendimentoConsumoController extends GenericContro |
217 | 207 | |
218 | 208 | return new JRBeanCollectionDataSource(materiaisResult); |
219 | 209 | } |
210 | + | |
211 | + private void calcularFIFOMateriais(final List<BeanMaterial> materiais, BeanMaterial material,BigDecimal qtdFalta) { | |
212 | + for(BeanMaterial mat : materiais) | |
213 | + if(material.getNome().equals(mat.getNome()) && material.getQtdeEstoque().compareTo(mat.getQtdeEstoque()) >=0) | |
214 | + if(mat.getQtdeEstoque().compareTo(qtdFalta) < 0){ | |
215 | + material.setValorUnitario(material.getValorUnitarioBD().add(mat.getValorUnitarioBD())); | |
216 | + material.setValorUnitario(material.getValorUnitarioBD().divide(new BigDecimal(2))); | |
217 | + qtdFalta = qtdFalta.subtract(mat.getQtdeEstoque()); | |
218 | + calcularFIFOMateriais(materiais, material, qtdFalta); | |
219 | + }else{ | |
220 | + material.setValorUnitario(material.getValorUnitarioBD().add(mat.getValorUnitarioBD())); | |
221 | + material.setValorUnitario(material.getValorUnitarioBD().divide(new BigDecimal(2))); | |
222 | + } | |
223 | + | |
224 | + } | |
220 | 225 | |
221 | 226 | private JRBeanCollectionDataSource getResumoContabil(Long requisicaoId){ |
222 | - StringBuilder sql = new StringBuilder(); | |
223 | - sql.append("select distinct contac.codigo,contac.descricao, rc_item.quantidade,mat_estoque.valorUnitarioMedio from alm_requisicaoconsumo req_c"); | |
224 | - sql.append(" left join estruturaorganizacional alm on req_c.organizacao_id = alm.id"); | |
225 | - sql.append(" left join alm_rc_item rc_item on rc_item.requisicaoConsumo_id = req_c.id"); | |
226 | - sql.append(" left join alm_materialconsumo mat_c on rc_item.materialconsumo_id = mat_c.id"); | |
227 | - sql.append(" left join material mat on mat_c.id = mat.id"); | |
228 | - sql.append(" left join alm_materialestoque mat_estoque on mat_estoque.material_id = mat.id"); | |
229 | - sql.append(" left join contacontabil contac on mat.contacontabil_id = contac.id"); | |
230 | - sql.append(" where req_c.id = ").append(requisicaoId); | |
231 | - sql.append(" and rc_item.quantidadeatendida is not null"); | |
232 | - sql.append(" order by contac.descricao"); | |
233 | 227 | |
234 | - List<Object> result = (List<Object>) usuarioService.resultListNativeQuery(sql.toString()); | |
228 | + List<Object> result = requisicaoConsumoService.getResumoContabilForReport(requisicaoId,is_FIFO); | |
235 | 229 | |
236 | 230 | final List<BeanSubReportContaContabil> contas = new ArrayList<BeanSubReportContaContabil>(); |
237 | 231 | List<BeanSubReportContaContabil> contasResult = new ArrayList<BeanSubReportContaContabil>(); |
... | ... | @@ -248,21 +242,6 @@ public class ReportGuiaRemessaAtendimentoConsumoController extends GenericContro |
248 | 242 | }else |
249 | 243 | contasResult.add(conta); |
250 | 244 | |
251 | - | |
252 | 245 | return contasResult.isEmpty() ? null : new JRBeanCollectionDataSource(contasResult); |
253 | 246 | } |
254 | - | |
255 | - private Object[] getRequisicao(Long requisicaoId){ | |
256 | - StringBuilder sql = new StringBuilder(); | |
257 | - sql.append("select req_c.numerorequisicao as numerorequisicao,alm.nome as almoxarifado,requisitante.nome as unidadereq,locale.nome as enderecour,"); | |
258 | - sql.append(" usuario.nome as atendidapor,c_custo.descricao as centrocustos,req_c.datacriacao as cadem,req_c.datafinalizacaoatendimento as atendidaem from alm_requisicaoconsumo req_c"); | |
259 | - sql.append(" left join estruturaorganizacional alm on req_c.almoxarifado_id = alm.id"); | |
260 | - sql.append(" left join estruturaorganizacional requisitante on req_c.unidadeRequisitante_id = requisitante.id"); | |
261 | - sql.append(" left join localizacao locale on requisitante.localizacao_id = locale.id"); | |
262 | - sql.append(" left join centrocusto c_custo on req_c.centrocusto_id = c_custo.id"); | |
263 | - sql.append(" left join seguranca_usuario usuario on req_c.autor_id = usuario.id"); | |
264 | - sql.append(" where req_c.id = ").append(requisicaoId); | |
265 | - | |
266 | - return (Object[])usuarioService.singleResultNativeQuery(sql.toString()); | |
267 | - } | |
268 | 247 | } |
269 | 248 | \ No newline at end of file | ... | ... |