Commit 340dc5bc2d461c48f9bacb7da1ac3c94617edc62

Authored by joyfas.silva
1 parent 7a41928f
Exists in master

Redmine #tarefa-4936

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&lt;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&lt;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
... ...