From 6132f44c7ea2d0c54fcdfc6e67336d062247157a Mon Sep 17 00:00:00 2001 From: julio Date: Tue, 1 Aug 2017 00:23:45 +0000 Subject: [PATCH] fixes bug #9386 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@72106 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../relatorios/impl/RelatorioRDI.java | 41 + .../RelatorioRDI_es.properties | 2 + .../RelatorioRDI_pt_BR.properties | 2 + .../relatorios/templates/RelatorioRDI.jasper | Bin 0 -> 125468 bytes .../relatorios/templates/RelatorioRDI.jrxml | 1445 +++++++++++++++++ .../BusquedaRelatorioRDIController.java | 132 ++ .../utilerias/NamedParameterStatement.java | 337 ---- .../impressaofiscal/ItemMenuRelatorioRDI.java | 24 + .../web/utilerias/render/RenderEstadoUf.java | 30 + web/WEB-INF/i3-label_es_MX.label | 15 + web/WEB-INF/i3-label_pt_BR.label | 10 + .../impressaofiscal/busquedaRelatorioRDI.zul | 73 + 12 files changed, 1774 insertions(+), 337 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioRDI.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRDI_es.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRDI_pt_BR.properties create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRDI.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRDI.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaRelatorioRDIController.java delete mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/NamedParameterStatement.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/ItemMenuRelatorioRDI.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderEstadoUf.java create mode 100644 web/gui/impressaofiscal/busquedaRelatorioRDI.zul diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioRDI.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioRDI.java new file mode 100644 index 000000000..67909c95c --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioRDI.java @@ -0,0 +1,41 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.sql.Connection; +import java.util.List; +import java.util.Map; + +import com.rjconsultores.ventaboletos.entidad.Estado; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.utilerias.fiscal.vo.FiscalRdi; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +public class RelatorioRDI extends Relatorio { + + @SuppressWarnings("unchecked") + public RelatorioRDI(final Map parametros, Connection conexao) throws Exception { + super(parametros, conexao); + + List estados = (List) parametros.get("estados"); + String ufs = null; + for (Estado estado : estados) { + if (ufs == null) + ufs = estado.getCveestado() + ";"; + else + ufs = ufs + estado.getCveestado() + ";"; + } + + parametros.put("ufs", ufs); + + this.setCustomXls(true); + + List list = (List) parametros.get("list"); + this.setCollectionDataSource(new JRBeanCollectionDataSource(list)); + + } + + @Override + protected void processaParametros() throws Exception { + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRDI_es.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRDI_es.properties new file mode 100644 index 000000000..99c440382 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRDI_es.properties @@ -0,0 +1,2 @@ +#geral +msg.noData=No se pudo obtener datos con los parámetros reportados. \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRDI_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRDI_pt_BR.properties new file mode 100644 index 000000000..57daa3700 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioRDI_pt_BR.properties @@ -0,0 +1,2 @@ +#geral +msg.noData=Não foi possivel obter dados com os parâmetros informados. \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRDI.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRDI.jasper new file mode 100644 index 0000000000000000000000000000000000000000..c4ee8a2c06e0774ad5a372ec77d2a33b887636aa GIT binary patch literal 125468 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 literal 0 HcmV?d00001 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRDI.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRDI.jrxml new file mode 100644 index 000000000..a8c1238ad --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioRDI.jrxml @@ -0,0 +1,1445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band splitType="Stretch"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaRelatorioRDIController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaRelatorioRDIController.java new file mode 100644 index 000000000..87c65e978 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/impressaofiscal/BusquedaRelatorioRDIController.java @@ -0,0 +1,132 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.impressaofiscal; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.apache.log4j.Logger; +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.WrongValueException; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zul.Datebox; +import org.zkoss.zul.Radio; + +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Estado; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioRDI; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.service.EstadoService; +import com.rjconsultores.ventaboletos.service.FiscalService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.utilerias.fiscal.vo.FiscalRdi; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEstadoUf; + +@Controller("busquedaRelatorioRDIController") +@Scope("prototype") +public class BusquedaRelatorioRDIController extends MyGenericForwardComposer { + private static final long serialVersionUID = 1L; + + private static Logger log = Logger.getLogger(BusquedaRelatorioRDIController.class); + + @Autowired + private DataSource dataSourceRead; + + @Autowired + private FiscalService fiscalService; + + @Autowired + private EmpresaService empresaService; + + @Autowired + private EstadoService estadoService; + + private List lsEmpresa; + private List lsEstado; + + private Datebox datInicial; + private Datebox datFinal; + + private MyComboboxEstandar cmbEmpresa; + private MyListbox estadoList; + + private Radio radSim; + + @Override + public void doAfterCompose(Component comp) throws Exception { + lsEmpresa = empresaService.obtenerTodos(); + lsEstado = estadoService.obtenerTodos(); + + super.doAfterCompose(comp); + + estadoList.setItemRenderer(new RenderEstadoUf()); + estadoList.setData(lsEstado); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private void executar() throws InterruptedException { + + try { + Empresa empresa = cmbEmpresa.getSelectedItem() == null ? null : (Empresa) cmbEmpresa.getSelectedItem().getValue(); + List estados = new ArrayList(); + for (Object ob : estadoList.getSelectedsItens()) { + estados.add((Estado) ob); + } + + List list = fiscalService.buscarRelatorioRDI(datInicial.getValue(), datFinal.getValue(), empresa, estados, radSim.isChecked()); + + Map parametros = new HashMap(); + parametros.put("list", list); + parametros.put("empresa", empresa.getNombempresa()); + parametros.put("inicio", datInicial.getValue()); + parametros.put("fim", datFinal.getValue()); + parametros.put("estados", estados); + parametros.put("usuario", UsuarioLogado.getUsuarioLogado().getClaveUsuario()); + + Relatorio relatorio = new RelatorioRDI(parametros, dataSourceRead.getConnection()); + + Map args = new HashMap(); + args.put("relatorio", relatorio); + + openWindow("/component/reportView.zul", + Labels.getLabel("indexController.mnRelatorioRDI.label"), args, MODAL); + + } catch (InterruptedException e) { + log.error("", e); + } catch (WrongValueException e) { + log.error("", e); + } catch (SQLException e) { + log.error("", e); + } catch (Exception e) { + log.error("", e); + + Messagebox.show(e.getMessage(), + Labels.getLabel("indexController.mnImpressaoRMD.label"), + Messagebox.OK, Messagebox.INFORMATION); + } + } + + public void onClick$btnExecutar(Event ev) throws InterruptedException { + executar(); + } + + public List getLsEmpresa() { + return lsEmpresa; + } + + public List getLsEstado() { + return lsEstado; + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/NamedParameterStatement.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/NamedParameterStatement.java deleted file mode 100644 index d56045758..000000000 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/NamedParameterStatement.java +++ /dev/null @@ -1,337 +0,0 @@ -/** - * - */ -package com.rjconsultores.ventaboletos.web.utilerias; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.sql.Timestamp; -import java.sql.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -public class NamedParameterStatement { - /** The statement this object is wrapping. */ - private final PreparedStatement statement; - - /** Maps parameter names to arrays of ints which are the parameter indices. */ - private final Map indexMap; - - /** - * Creates a NamedParameterStatement. Wraps a call to c.{@link Connection#prepareStatement(java.lang.String) prepareStatement}. - * - * @param connection - * the database connection - * @param query - * the parameterized query - * @throws SQLException - * if the statement could not be created - */ - public NamedParameterStatement(Connection connection, String query) throws - SQLException { - indexMap = new HashMap(); - String parsedQuery = parse(query, indexMap); - statement = connection.prepareStatement(parsedQuery); - } - - /** - * Parses a query with named parameters. The parameter-index mappings are put into the map, and the parsed query is returned. DO NOT CALL FROM CLIENT CODE. This method is non-private so JUnit code can test it. - * - * @param query - * query to parse - * @param paramMap - * map to hold parameter-index mappings - * @return the parsed query - */ - static final String parse(String query, Map paramMap) { - // I was originally using regular expressions, but they didn't work well for ignoring - // parameter-like strings inside quotes. - int length = query.length(); - StringBuffer parsedQuery = new StringBuffer(length); - boolean inSingleQuote = false; - boolean inDoubleQuote = false; - int index = 1; - - for (int i = 0; i < length; i++) { - char c = query.charAt(i); - if (inSingleQuote) { - if (c == '\'') { - inSingleQuote = false; - } - } else if (inDoubleQuote) { - if (c == '"') { - inDoubleQuote = false; - } - } else { - if (c == '\'') { - inSingleQuote = true; - } else if (c == '"') { - inDoubleQuote = true; - } else if (c == ':' && i + 1 < length && - Character.isJavaIdentifierStart(query.charAt(i + 1))) { - int j = i + 2; - while (j < length && Character.isJavaIdentifierPart(query.charAt(j))) { - j++; - } - String name = query.substring(i + 1, j); - c = '?'; // replace the parameter with a question mark - i += name.length(); // skip past the end if the parameter - - List indexList = (List) paramMap.get(name); - if (indexList == null) { - indexList = new LinkedList(); - paramMap.put(name, indexList); - } - indexList.add(new Integer(index)); - - index++; - } - } - parsedQuery.append(c); - } - - // replace the lists of Integer objects with arrays of ints - for (Iterator itr = paramMap.entrySet().iterator(); itr.hasNext();) { - Map.Entry entry = (Map.Entry) itr.next(); - List list = (List) entry.getValue(); - int[] indexes = new int[list.size()]; - int i = 0; - for (Iterator itr2 = list.iterator(); itr2.hasNext();) { - Integer x = (Integer) itr2.next(); - indexes[i++] = x.intValue(); - } - entry.setValue(indexes); - } - - return parsedQuery.toString(); - } - - /** - * Returns the indexes for a parameter. - * - * @param name - * parameter name - * @return parameter indexes - * @throws IllegalArgumentException - * if the parameter does not exist - */ - private int[] getIndexes(String name) { - int[] indexes = (int[]) indexMap.get(name); - if (indexes == null) { - throw new IllegalArgumentException("Parameter not found: " + name); - } - return indexes; - } - - /** - * Sets a parameter. - * - * @param name - * parameter name - * @param value - * parameter value - * @throws SQLException - * if an error occurred - * @throws IllegalArgumentException - * if the parameter does not exist - * @see PreparedStatement#setObject(int, java.lang.Object) - */ - public void setObject(String name, Object value) throws SQLException { - int[] indexes = getIndexes(name); - for (int i = 0; i < indexes.length; i++) { - statement.setObject(indexes[i], value); - } - } - - /** - * Sets a parameter. - * - * @param name - * parameter name - * @param value - * parameter value - * @throws SQLException - * if an error occurred - * @throws IllegalArgumentException - * if the parameter does not exist - * @see PreparedStatement#setString(int, java.lang.String) - */ - public void setString(String name, String value) throws SQLException { - int[] indexes = getIndexes(name); - for (int i = 0; i < indexes.length; i++) { - statement.setString(indexes[i], value); - } - } - - /** - * Sets a parameter. - * - * @param name - * parameter name - * @param value - * parameter value - * @throws SQLException - * if an error occurred - * @throws IllegalArgumentException - * if the parameter does not exist - * @see PreparedStatement#setInt(int, int) - */ - public void setInt(String name, int value) throws SQLException { - int[] indexes = getIndexes(name); - for (int i = 0; i < indexes.length; i++) { - statement.setInt(indexes[i], value); - } - } - - /** - * Sets a parameter. - * - * @param name - * parameter name - * @param value - * parameter value - * @throws SQLException - * if an error occurred - * @throws IllegalArgumentException - * if the parameter does not exist - * @see PreparedStatement#setInt(int, int) - */ - public void setLong(String name, long value) throws SQLException { - int[] indexes = getIndexes(name); - for (int i = 0; i < indexes.length; i++) { - statement.setLong(indexes[i], value); - } - } - - public void setDate(String name, Date value) throws SQLException { - int[] indexes = getIndexes(name); - for (int i = 0; i < indexes.length; i++) { - statement.setDate(indexes[i], value); - } - } - - - public void setNull(String name, int sqlType) throws SQLException { - int[] indexes = getIndexes(name); - for (int i = 0; i < indexes.length; i++) { - statement.setNull(indexes[i], sqlType); - } - } - - public void setBoolean(String name, Boolean value) throws SQLException { - int[] indexes = getIndexes(name); - for (int i = 0; i < indexes.length; i++) { - statement.setBoolean(indexes[i], value); - } - } - - /** - * Sets a parameter. - * - * @param name - * parameter name - * @param value - * parameter value - * @throws SQLException - * if an error occurred - * @throws IllegalArgumentException - * if the parameter does not exist - * @see PreparedStatement#setTimestamp(int, java.sql.Timestamp) - */ - public void setTimestamp(String name, Timestamp value) throws SQLException - { - int[] indexes = getIndexes(name); - for (int i = 0; i < indexes.length; i++) { - statement.setTimestamp(indexes[i], value); - } - } - - /** - * Returns the underlying statement. - * - * @return the statement - */ - public PreparedStatement getStatement() { - return statement; - } - - /** - * Executes the statement. - * - * @return true if the first result is a {@link ResultSet} - * @throws SQLException - * if an error occurred - * @see PreparedStatement#execute() - */ - public boolean execute() throws SQLException { - return statement.execute(); - } - - /** - * Executes the statement, which must be a query. - * - * @return the query results - * @throws SQLException - * if an error occurred - * @see PreparedStatement#executeQuery() - */ - public ResultSet executeQuery() throws SQLException { - return statement.executeQuery(); - } - - /** - * Executes the statement, which must be an SQL INSERT, UPDATE or DELETE statement; or an SQL statement that returns nothing, such as a DDL statement. - * - * @return number of rows affected - * @throws SQLException - * if an error occurred - * @see PreparedStatement#executeUpdate() - */ - public int executeUpdate() throws SQLException { - return statement.executeUpdate(); - } - - /** - * Closes the statement. - * - * @throws SQLException - * if an error occurred - * @see Statement#close() - */ - public void close() throws SQLException { - statement.close(); - } - - public Boolean isClosed() throws SQLException { - return statement.isClosed(); - } - - /** - * Adds the current set of parameters as a batch entry. - * - * @throws SQLException - * if something went wrong - */ - public void addBatch() throws SQLException { - statement.addBatch(); - } - - /** - * Executes all of the batched statements. - * - * See {@link Statement#executeBatch()} for details. - * - * @return update counts for each statement - * @throws SQLException - * if something went wrong - */ - public int[] executeBatch() throws SQLException { - return statement.executeBatch(); - } -} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/ItemMenuRelatorioRDI.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/ItemMenuRelatorioRDI.java new file mode 100644 index 000000000..e77d0eb58 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/impressaofiscal/ItemMenuRelatorioRDI.java @@ -0,0 +1,24 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios.impressaofiscal; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuRelatorioRDI extends DefaultItemMenuSistema { + + public ItemMenuRelatorioRDI() { + super("indexController.mnRelatorioRDI.label"); + } + + @Override + public String getClaveMenu() { + return "COM.RJCONSULTORES.ADMINISTRACION.GUI.RELATORIOS.RELATORIORDI"; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/impressaofiscal/busquedaRelatorioRDI.zul", + Labels.getLabel("indexController.mnRelatorioRDI.label"), getArgs(), desktop); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderEstadoUf.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderEstadoUf.java new file mode 100644 index 000000000..bc18e9a40 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderEstadoUf.java @@ -0,0 +1,30 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.entidad.Estado; + +/** + * + * @author MCosso + */ +public class RenderEstadoUf implements ListitemRenderer { + + public void render(Listitem lstm, Object o) throws Exception { + Estado estado = (Estado) o; + + Listcell lc = new Listcell(); + + lc = new Listcell(estado.getCveestado()); + lc.setParent(lstm); + + + lstm.setAttribute("data", estado); + } +} diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index dd9e4ebb0..4fefb335a 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -317,6 +317,9 @@ indexController.mnSubMenuExportacaoFiscal.label=Exportação Fiscal indexController.mniExportacaoFiscalECF.label=ECF indexController.mniExportacaoFiscalRMD.label=RMD +indexController.mnImpressaoRMD.label=Impressão RMD +indexController.mnRelatorioRDI.label=Relatório RDI + indexController.mniSubMenuClientePacote.label=Paquete indexController.mniManutencaoPacote.label=Mantenimiento Paquete @@ -519,12 +522,24 @@ relatorioReceitaDiariaAgenciaController.rdIndAgenciaDevol.cmbReceitaImposto.cmbI relatorioReceitaDiariaAgenciaController.rdIndAgenciaDevol.cmbReceitaImposto.cmbItemReceitaBagagem = Ingresos de equipaje #Relatorio Impressao RMD +busquedaImpressaoRMDController.mnImpressaoRMD.label = Impressão RMD busquedaImpressaoRMDController.label.RMD = RMD busquedaImpressaoRMDController.labelRadio.tipo = Tipo de Impressão: busquedaImpressaoRMDController.labelRadio.radBPR = BPR busquedaImpressaoRMDController.labelRadio.radECF = ECF busquedaImpressaoRMDController.select.RMD = É necessario selecionar um RMD busquedaImpressaoRMDController.MSG.gravarRMDPergunta = Deseja gravar nos registros de vendas, o vínculo com o numero de RMD selecionado? +busquedaImpressaoRMDController.labelfolio.RMD = Nº Controle de Formulário: +busquedaImpressaoRMDController.labelfolio.RMD.fim = Até + +#Relatorio RDI +busquedaRelatorioRDIController.label = Relatório RDI +busquedaRelatorioRDIController.btnExe.label = Executar +busquedaRelatorioRDIController.lbEmpresa.value = Empresa +busquedaRelatorioRDIController.estado.label = Estado +busquedaRelatorioRDIController.receitaTerceiros.label = Receita de Terceiros +busquedaRelatorioRDIController.labelRadio.radSim = Sim +busquedaRelatorioRDIController.labelRadio.radNao = Não #Devolução de Bilhetes relatorioDevolucaoBilhetesAgenciaController.window.title = Relatório de Devolução de Bilhetes diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 3070c2353..048ab9244 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -324,6 +324,7 @@ indexController.mniExportacaoFiscalECF.label=ECF indexController.mniExportacaoFiscalRMD.label=RMD indexController.mnImpressaoRMD.label=Impressão RMD +indexController.mnRelatorioRDI.label=Relatório RDI indexController.mniSubMenuClientePacote.label=Pacote indexController.mniManutencaoPacote.label=Manutenção Pacote @@ -566,6 +567,15 @@ busquedaImpressaoRMDController.MSG.gravarRMDPergunta = Deseja gravar nos registr busquedaImpressaoRMDController.labelfolio.RMD = Nº Controle de Formulário: busquedaImpressaoRMDController.labelfolio.RMD.fim = Até +#Relatorio RDI +busquedaRelatorioRDIController.label = Relatório RDI +busquedaRelatorioRDIController.btnExe.label = Executar +busquedaRelatorioRDIController.lbEmpresa.value = Empresa +busquedaRelatorioRDIController.estado.label = Estado +busquedaRelatorioRDIController.receitaTerceiros.label = Receita de Terceiros +busquedaRelatorioRDIController.labelRadio.radSim = Sim +busquedaRelatorioRDIController.labelRadio.radNao = Não + #Devolução de Bilhetes relatorioDevolucaoBilhetesAgenciaController.window.title = Relatório de Devolução de Bilhetes relatorioDevolucaoBilhetesAgenciaController.lbDataIni.value = Data Inicial diff --git a/web/gui/impressaofiscal/busquedaRelatorioRDI.zul b/web/gui/impressaofiscal/busquedaRelatorioRDI.zul new file mode 100644 index 000000000..fea2b13a1 --- /dev/null +++ b/web/gui/impressaofiscal/busquedaRelatorioRDI.zul @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +