diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroReceitasDespesas.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroReceitasDespesas.java new file mode 100644 index 000000000..f2e494001 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioFinanceiroReceitasDespesas.java @@ -0,0 +1,103 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; + +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioFinanceiroReceitasDespesasBean; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +public class RelatorioFinanceiroReceitasDespesas extends Relatorio { + + private List lsDadosRelatorio; + + public RelatorioFinanceiroReceitasDespesas(Map parametros, Connection conexao) throws Exception { + + super(parametros, conexao); + + this.setCustomDataSource(new DataSource(this) { + @Override + public void initDados() throws Exception { + super.initDados(); + lsDadosRelatorio = executeQuery(); + setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + } + }); + + } + + @SuppressWarnings("unchecked") + private List executeQuery() throws SQLException { + + Date fecInicio = (Date) parametros.get("fecInicio"); + Date fecFinal = (Date) parametros.get("fecFinal"); + Empresa empresa = (Empresa) parametros.get("empresa"); + List lsPuntoVenta = (List) parametros.get("lsPuntoVenta"); + Integer indTipo = (Integer) parametros.get("indTipo"); + + String sql = getSql(indTipo, lsPuntoVenta); + + NamedParameterStatement stmt = new NamedParameterStatement(this.getConexao(), sql); + stmt.setDate("fecInicio", new java.sql.Date(fecInicio.getTime())); + stmt.setDate("fecFinal", new java.sql.Date(fecFinal.getTime())); + stmt.setInt("empresaId", empresa.getEmpresaId()); + + ResultSet resultSet = stmt.executeQuery(); + List lsBean = new ArrayList(); + while (resultSet.next()) { + RelatorioFinanceiroReceitasDespesasBean bean = new RelatorioFinanceiroReceitasDespesasBean(); + bean.setDescTipoEvento(resultSet.getString("DESCTIPOEVENTO")); + bean.setFecHorVta(resultSet.getDate("FECHORVTA")); + bean.setTipoEventoExtraId(resultSet.getInt("TIPOEVENTOEXTRA_ID")); + bean.setNombPuntoVenta(resultSet.getString("NOMBPUNTOVENTA")); + bean.setPrecio(resultSet.getBigDecimal("PRECIO")); + bean.setPuntoVentaId(resultSet.getInt("PUNTOVENTA_ID")); + lsBean.add(bean); + } + + return lsBean; + + } + + private String getSql(Integer indTipo, List lsPuntoVenta) { + + String sql = "SELECT C.FECHORVTA, P.PUNTOVENTA_ID, P.NOMBPUNTOVENTA, TE.INDTIPO, TE.TIPOEVENTOEXTRA_ID, TE.DESCTIPOEVENTO, C.PRECIO " + + "FROM CAJA_DIVERSOS C " + + "JOIN EVENTO_EXTRA E ON E.EVENTOEXTRA_ID = C.EVENTOEXTRA_ID " + + "JOIN TIPO_EVENTO_EXTRA TE ON TE.TIPOEVENTOEXTRA_ID = E.TIPOEVENTOEXTRA_ID " + + "JOIN PUNTO_VENTA P ON P.PUNTOVENTA_ID = C.PUNTOVENTA_ID " + + "WHERE E.EMPRESA_ID = :empresaId " + + "AND C.FECHORVTA BETWEEN :fecInicio AND :fecFinal "; + + if (indTipo >= 0) { + sql += "AND TE.INDTIPO = " + indTipo; + } + if (CollectionUtils.isNotEmpty(lsPuntoVenta)) { + Integer[] lsPuntoVentaId = new Integer[lsPuntoVenta.size()]; + for (int i = 0; i < lsPuntoVenta.size(); i++) { + lsPuntoVentaId[i] = lsPuntoVenta.get(i).getPuntoventaId(); + } + sql += "AND PUNTOVENTA_ID IN (" + StringUtils.join(lsPuntoVentaId, ',') + ") "; + } + + return sql; + + } + + @Override + protected void processaParametros() throws Exception {} + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroReceitasDespesas_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroReceitasDespesas_es.properties new file mode 100644 index 000000000..1d0f0d4d7 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroReceitasDespesas_es.properties @@ -0,0 +1,21 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + +#Labels cabeçalho +cabecalho.nome=Relatório Financeiro de Receitas e Despesas +cabecalho.relatorio=Relatório: +cabecalho.periodo=Período: +cabecalho.periodoA=à +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impressor por: +cabecalho.pagina=Página +cabecalho.de=de +cabecalho.filtros=Filtros: +cabecalho.usuario=Usuário: +label.data=Data +label.agenciaCodigo=Código da Agência +label.agenciaDescricao=Nome da Agência +label.operacaoCodigo=Código da Operação +label.operacaoDescricao=Descrição da Operação +label.valor=Valor +label.total=Total \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroReceitasDespesas_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroReceitasDespesas_pt_BR.properties new file mode 100644 index 000000000..1d0f0d4d7 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioFinanceiroReceitasDespesas_pt_BR.properties @@ -0,0 +1,21 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. + +#Labels cabeçalho +cabecalho.nome=Relatório Financeiro de Receitas e Despesas +cabecalho.relatorio=Relatório: +cabecalho.periodo=Período: +cabecalho.periodoA=à +cabecalho.dataHora=Data/Hora: +cabecalho.impressorPor=Impressor por: +cabecalho.pagina=Página +cabecalho.de=de +cabecalho.filtros=Filtros: +cabecalho.usuario=Usuário: +label.data=Data +label.agenciaCodigo=Código da Agência +label.agenciaDescricao=Nome da Agência +label.operacaoCodigo=Código da Operação +label.operacaoDescricao=Descrição da Operação +label.valor=Valor +label.total=Total \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroReceitasDespesas.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroReceitasDespesas.jasper new file mode 100644 index 000000000..6e7ed6914 Binary files /dev/null and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroReceitasDespesas.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroReceitasDespesas.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroReceitasDespesas.jrxml new file mode 100644 index 000000000..6ea039627 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioFinanceiroReceitasDespesas.jrxml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="81" splitType="Stretch"> + <textField> + <reportElement x="0" y="0" width="620" height="20" uuid="43b2c28d-4760-4890-b00d-25e931e79c74"/> + <textElement markup="none"> + <font size="14" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{cabecalho.nome}]]></textFieldExpression> + </textField> + <textField pattern="dd/MM/yyyy HH:mm"> + <reportElement x="638" y="0" width="164" height="20" uuid="4d1bcd65-c9a6-44b4-8dca-cc3c4c20c9a5"/> + <textElement textAlignment="Right"> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> + </textField> + <textField pattern=""> + <reportElement x="0" y="20" width="620" height="20" uuid="fd05bd35-30d9-4baf-aa56-f8e5d3c3268b"/> + <textElement> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{cabecalho.periodo} + " " + $P{fecInicioFormatted} + " " + $R{cabecalho.periodoA} + " " + $P{fecFinalFormatted}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="53" y="41" width="139" height="20" uuid="8fa1c53b-1da7-4d4d-a75c-ab1543acae2a"/> + <textFieldExpression><![CDATA[$P{nombEmpresa}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="0" y="41" width="53" height="20" uuid="a91f6081-4740-4e36-8965-41b6cde4cc20"/> + <text><![CDATA[Empresa:]]></text> + </staticText> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioFinanceiroReceitasDespesasBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioFinanceiroReceitasDespesasBean.java new file mode 100644 index 000000000..aefd8470b --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioFinanceiroReceitasDespesasBean.java @@ -0,0 +1,68 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import java.math.BigDecimal; +import java.util.Date; + +public class RelatorioFinanceiroReceitasDespesasBean { + + private Date fecHorVta; + + private Integer puntoVentaId; + + private String nombPuntoVenta; + + private Integer tipoEventoExtraId; + + private String descTipoEvento; + + private BigDecimal precio; + + public Date getFecHorVta() { + return fecHorVta; + } + + public void setFecHorVta(Date fecHorVta) { + this.fecHorVta = fecHorVta; + } + + public Integer getPuntoVentaId() { + return puntoVentaId; + } + + public void setPuntoVentaId(Integer puntoVentaId) { + this.puntoVentaId = puntoVentaId; + } + + public String getNombPuntoVenta() { + return nombPuntoVenta; + } + + public void setNombPuntoVenta(String nombPuntoVenta) { + this.nombPuntoVenta = nombPuntoVenta; + } + + public Integer getTipoEventoExtraId() { + return tipoEventoExtraId; + } + + public void setTipoEventoExtraId(Integer tipoEventoExtraId) { + this.tipoEventoExtraId = tipoEventoExtraId; + } + + public String getDescTipoEvento() { + return descTipoEvento; + } + + public void setDescTipoEvento(String descTipoEvento) { + this.descTipoEvento = descTipoEvento; + } + + public BigDecimal getPrecio() { + return precio; + } + + public void setPrecio(BigDecimal precio) { + this.precio = precio; + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioFinanceiroReceitasDespesasController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioFinanceiroReceitasDespesasController.java index f876f2b89..fcd265884 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioFinanceiroReceitasDespesasController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioFinanceiroReceitasDespesasController.java @@ -1,18 +1,36 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; import org.zkoss.zul.Combobox; import org.zkoss.zul.Datebox; +import org.zkoss.zul.Paging; +import org.zkoss.zul.Textbox; import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioFinanceiroReceitasDespesas; import com.rjconsultores.ventaboletos.service.EmpresaService; -import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxPuntoVenta; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPuntoVentaSimple; +import com.trg.search.Filter; /** * @@ -24,6 +42,9 @@ import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; public class RelatorioFinanceiroReceitasDespesasController extends MyGenericForwardComposer { private static final long serialVersionUID = 1L; + + @Autowired + private DataSource dataSourceRead; @Autowired private EmpresaService empresaService; @@ -31,21 +52,84 @@ public class RelatorioFinanceiroReceitasDespesasController extends MyGenericForw private List lsEmpresa; private Datebox dataInicial; private Datebox dataFinal; - private MyComboboxPuntoVenta cmbAgencia; private Combobox cmbIndTipo; + private Combobox cmbEmpresa; + + @Autowired + private transient PagedListWrapper plwPuntoVenta; + private MyListbox puntoVentaList; + private MyListbox puntoVentaSelectedList; + private Textbox txtPalavraPesquisa; + private Paging pagingPuntoVenta; @Override public void doAfterCompose(Component comp) throws Exception { - lsEmpresa = empresaService.obtenerTodos(); super.doAfterCompose(comp); + lsEmpresa = empresaService.obtenerTodos(); + puntoVentaList.setItemRenderer(new RenderPuntoVentaSimple()); + puntoVentaSelectedList.setItemRenderer(new RenderPuntoVentaSimple()); + } + + public void onClick$btnExecutarRelatorio(Event ev) throws Exception { + + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + + Map parametros = new HashMap(); + parametros.put("fecInicio", dataInicial.getValue()); + parametros.put("fecInicioFormatted", sdf.format(dataInicial.getValue())); + parametros.put("fecFinal", dataFinal.getValue()); + parametros.put("fecFinalFormatted", sdf.format(dataFinal.getValue())); + Empresa empresa = (Empresa) cmbEmpresa.getSelectedItem().getValue(); + parametros.put("empresa", empresa); + parametros.put("nombEmpresa", empresa.getNombempresa()); + parametros.put("lsPuntoVenta", Arrays.asList(puntoVentaSelectedList.getData())); + parametros.put("indTipo", Integer.valueOf((String) cmbIndTipo.getSelectedItem().getValue())); + + RelatorioFinanceiroReceitasDespesas relatorio = new RelatorioFinanceiroReceitasDespesas(parametros, dataSourceRead.getConnection()); + + Map args = new HashMap(); + args.put("relatorio", relatorio); + + openWindow("/component/reportView.zul", + Labels.getLabel("indexController.mniRelatorioVendasComissao.label"), args, MODAL); + + } + + public void onDoubleClick$puntoVentaList(Event ev) { + PuntoVenta puntoVentaSel = (PuntoVenta) puntoVentaList.getSelected(); + puntoVentaSelectedList.addItemNovo(puntoVentaSel); } - public Combobox getCmbIndTipo() { - return cmbIndTipo; + public void onDoubleClick$puntoVentaSelList(Event ev) { + PuntoVenta puntoVentaSel = (PuntoVenta) puntoVentaSelectedList.getSelected(); + puntoVentaSelectedList.removeItem(puntoVentaSel); } + + public void onClick$btnLimpar(Event ev) { + puntoVentaSelectedList.setData(new ArrayList()); + } + + public void onClick$btnPesquisa(Event ev) { + + HibernateSearchObject puntoVentaBusqueda = + new HibernateSearchObject(PuntoVenta.class, + pagingPuntoVenta.getPageSize()); - public void setCmbIndTipo(Combobox cmbIndTipo) { - this.cmbIndTipo = cmbIndTipo; + puntoVentaBusqueda.addFilterOr(Filter.like("nombpuntoventa", "%" + txtPalavraPesquisa.getText().trim().toUpperCase().concat("%")), Filter.like("numPuntoVenta", "%" + txtPalavraPesquisa.getText().trim().toUpperCase().concat("%"))); + puntoVentaBusqueda.addSortAsc("nombpuntoventa"); + puntoVentaBusqueda.addFilterEqual("activo", Boolean.TRUE); + + plwPuntoVenta.init(puntoVentaBusqueda, puntoVentaList, pagingPuntoVenta); + + if (puntoVentaList.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioReceitaDiariaAgenciaController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + } + } public List getLsEmpresa() { diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 9183bcd69..25d27b275 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -6899,11 +6899,15 @@ busquedaTipoConfCondComissaoController.btnCerrar.tooltiptext=Cerrar # Reporte Ingresos y Gastos Financieros relatorioFinanceiroReceitasDespesasController.window.title = Reporte Ingresos y Gastos Financieros indexController.mniRelatorioFinanceiroReceitasDespesas.label = Ingresos y Gastos -relatorioFinanceiroReceitasDespesas.lbDataIni.value=Fecha Inicio -relatorioFinanceiroReceitasDespesas.lbDataFin.value=Fecha Final -relatorioFinanceiroReceitasDespesas.lbEmpresa.value=Empresa -relatorioFinanceiroReceitasDespesas.lbAgencia.value=Agência -relatorioFinanceiroReceitasDespesas.tipoOperacion.value=Tipo -relatorioFinanceiroReceitasDespesas.indTipo1=Ingresos -relatorioFinanceiroReceitasDespesas.indTipo2=Gasto -relatorioFinanceiroReceitasDespesas.indTipo3=Todos \ No newline at end of file +relatorioFinanceiroReceitasDespesasController.lbDataIni.value=Fecha Inicio +relatorioFinanceiroReceitasDespesasController.lbDataFin.value=Fecha Final +relatorioFinanceiroReceitasDespesasController.lbEmpresa.value=Empresa +relatorioFinanceiroReceitasDespesasController.lbAgencia.value=Agência +relatorioFinanceiroReceitasDespesasController.tipoOperacion.value=Tipo +relatorioFinanceiroReceitasDespesasController.indTipo1=Ingresos +relatorioFinanceiroReceitasDespesasController.indTipo2=Gasto +relatorioFinanceiroReceitasDespesasController.indTipo3=Todos +relatorioFinanceiroReceitasDespesasController.btnPesquisa.label = Buscar +relatorioFinanceiroReceitasDespesasController.btnLimpar.label = Limpiar selección +relatorioFinanceiroReceitasDespesasController.puntoVentaSelectedList.codigo = Código +relatorioFinanceiroReceitasDespesasController.puntoVentaSelectedList.nome = Nombre \ No newline at end of file diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index b4e918b45..19a1bd788 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -7061,11 +7061,15 @@ busquedaTipoConfCondComissaoController.btnCerrar.tooltiptext=Fechar # Reporte Ingresos y Gastos Financieros relatorioFinanceiroReceitasDespesasController.window.title=Relatório Financeiro de Receitas e Despesas indexController.mniRelatorioFinanceiroReceitasDespesas.label=Receitas e Despesas -relatorioFinanceiroReceitasDespesas.lbDataIni.value=Data Início -relatorioFinanceiroReceitasDespesas.lbDataFin.value=Data Final -relatorioFinanceiroReceitasDespesas.lbEmpresa.value=Empresa -relatorioFinanceiroReceitasDespesas.lbAgencia.value=Agência -relatorioFinanceiroReceitasDespesas.tipoOperacion.value=Tipo -relatorioFinanceiroReceitasDespesas.indTipo1=Receita -relatorioFinanceiroReceitasDespesas.indTipo2=Despesa -relatorioFinanceiroReceitasDespesas.indTipo3=Todas \ No newline at end of file +relatorioFinanceiroReceitasDespesasController.lbDataIni.value=Data Início +relatorioFinanceiroReceitasDespesasController.lbDataFin.value=Data Final +relatorioFinanceiroReceitasDespesasController.lbEmpresa.value=Empresa +relatorioFinanceiroReceitasDespesasController.lbAgencia.value=Agência +relatorioFinanceiroReceitasDespesasController.tipoOperacion.value=Tipo +relatorioFinanceiroReceitasDespesasController.indTipo1=Receita +relatorioFinanceiroReceitasDespesasController.indTipo2=Despesa +relatorioFinanceiroReceitasDespesasController.indTipo3=Todas +relatorioFinanceiroReceitasDespesasController.btnPesquisa.label = Pesquisar +relatorioFinanceiroReceitasDespesasController.btnLimpar.label = Limpar Seleção +relatorioFinanceiroReceitasDespesasController.puntoVentaSelectedList.codigo = Código +relatorioFinanceiroReceitasDespesasController.puntoVentaSelectedList.nome = Nome \ No newline at end of file diff --git a/web/gui/relatorios/filtroRelatorioFinanceiroReceitasDespesas.zul b/web/gui/relatorios/filtroRelatorioFinanceiroReceitasDespesas.zul index ad724aebd..a8fc754b3 100644 --- a/web/gui/relatorios/filtroRelatorioFinanceiroReceitasDespesas.zul +++ b/web/gui/relatorios/filtroRelatorioFinanceiroReceitasDespesas.zul @@ -18,40 +18,86 @@