Crear numero de factura en java

publicado por: Anonymous

Quiero crear un método que me genere un numero de factura.

No lo hago incrementar en la BD porque no es recomendable y he decidido crear un campo char varying donde me almacene o como sumarle 1 a la consulta en postgres.

public Cliente numOrden() {

                PreparedStatement ps = null;
                ResultSet rs = null;
                Connection con = getConexionTemporal();
                // Preparamos la consulta
                String sql ="select cli_num from cliente where cli_num=cli_num";
                try {
                    // Traemos los datos de la bd
                    ps = con.prepareStatement(sql);
                    rs = ps.executeQuery();
                    // Cargamos los resultados
                    if (rs.next()) {
                        Cliente cliente = new Cliente();
                        cliente.setNumeroOrden(rs.getString("cli_num"));
                        return cliente;
                    }

                } catch (SQLException e) {
                    e.printStackTrace();

                } finally {

                    cerrarObjeto(con);
                    cerrarObjeto(rs);
                    cerrarObjeto(ps);

                }
                return null;

            }

El controlador donde muestro el numero de factura:

private void cargarOrden(){

        SentenciasSQL registro = new SentenciasSQL();
        Cliente cliente = registro.numOrden();

        txtFactura.setText(cliente.getNumeroOrden());
        System.out.println(cliente.getNumeroOrden());
    }

Si me ayudan con alguna idea o como seria fácil quiero que sea 00001 y siga 00002 etc.

solución

Puedes hacer un count a la tabla clientes suponiendo que tienes 2 registros regresaría un numero entero 2 y así le podríamos sumar el valor que sigue +1

Consulta:

 SELECT COUNT(cli_num) as cli_num FROM clientes

Entonces en tu método en lugar de regresar un objeto de tipo cliente regresas un entero int

            public int numOrden() {

                PreparedStatement ps = null;
                ResultSet rs = null;
                Connection con = getConexionTemporal();
                // Preparamos la consulta
                String sql ="SELECT COUNT(cli_num) as cli_num FROM clientes";
                try {
                    // Traemos los datos de la bd
                    ps = con.prepareStatement(sql);
                    rs = ps.executeQuery();
                    // Cargamos los resultados
                    if (rs.next()) {
                        int cliente = rs.getInt("cli_num");
                        return cliente;
                    }

                } catch (SQLException e) {
                    e.printStackTrace();

                } finally {

                    cerrarObjeto(con);
                    cerrarObjeto(rs);
                    cerrarObjeto(ps);

                }
                return null;

            }

Y tu método para para obtener el numero de factura quedaria de la siguiente manera:

    private void cargarOrden(){
        //Numero de ceros para rellenar el consecutivo de la factura
        int NUMERO_CEROS = 5;

        SentenciasSQL registro = new SentenciasSQL();
        int cliente = registro.numOrden() + 1;

        numeroConsecutivo = rellenarConCeros(String.valueOf(cliente), NUMERO_CEROS);


        txtFactura.setText(numeroConsecutivo);
        System.out.println(numeroConsecutivo);
    }


    private String rellenarConCeros(String cadena, int numCeros) {
        String ceros = "";

        for (int i = cadena.length(); i < numCeros; i++) {
            ceros += "0";
        }

        return ceros + cadena;
    }
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *