/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package adgsyncms.service;

import adgsyncms.repository.Servers;
import static adgsyncms.repository.db._SQLQuery;
import static adgsyncms.repository.db._connection;
import static adgsyncms.repository.db.openConnection;

import static adgsyncms.repository.db_express._ex_SQLQuery;
import static adgsyncms.repository.db_express._ex_connection;
import static adgsyncms.repository.db_express.ex_openConnection;
import static adgsyncms.repository.db_express._ex_Host;
import static adgsyncms.repository.db_express._ex_Database;
import static adgsyncms.repository.db_express._ex_Port;
import static adgsyncms.repository.db_express._ex_User;
import static adgsyncms.repository.db_express._ex_Password;
import adgsyncms.repository.message;
import adgsyncms.repository.repository;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import javax.swing.JLabel;
import javax.swing.JTextArea;

/**
 *
 * @author amartinez
 */
public class Clientes {

    public Boolean b_result;
    public String Caja, Compania;
    JTextArea jtext1;
    JLabel lblTransaccion;

    public boolean BuscarClientesCajas() {
        ResultSet rscajas, rsClientes;
        PreparedStatement ps;
        this.b_result = true;
        repository repo1 = new repository();
        repo1.readSetting();

        Iterator<Servers> servidor = repo1.lstservidores.iterator();

        while (servidor.hasNext()) {
            Servers caja = servidor.next();

            try {

                if (_connection != null && !_connection.isClosed()) {
                    _connection.close();
                }
                openConnection();
                this.SetCaja(caja.cajas, repo1.Company);
                this.SetSlaveConnection(caja.host_name, caja.database_name, caja.port_number, caja.user_name, caja.user_pwd);
                message.setMessage(jtext1, "Sincronizando clientes en el servidor: " + caja.alias + " - " + caja.host_name);
                /*
                 * Consultando los productos por sincronizar en la caja
                 */
                if (ex_openConnection()) {
                    //Consultando las cajas del servidor local
                    _ex_SQLQuery = "SELECT caja_cod FROM inv_cajas WHERE cia_codigo = ? ORDER BY caja_cod";
                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setString(1, repo1.Company);
                    rscajas = ps.executeQuery();
                    Caja = "";
                    while (rscajas.next()) {
                        Caja = Caja + (!Caja.isEmpty() ? "," : " ") + ("'" + rscajas.getString("caja_cod") + "'");
                    }
                    _SQLQuery = "Select cia_codigo,clie_codigo from vtas.clientes_cajas where caja_cod in(" + Caja + ") "
                            + " and sincronizada = false group by cia_codigo,clie_codigo;";
                    ps = _connection.prepareStatement(_SQLQuery);
                    rsClientes = ps.executeQuery();
                    while (rsClientes.next()) {
                        this.b_result = ActualizarClientes(rsClientes.getString("cia_codigo"), rsClientes.getString("clie_codigo"));

                        if (this.b_result) {
                            _connection.commit();
                            _ex_connection.commit();
                        } else {
                            _connection.rollback();
                            _ex_connection.rollback();
                        }
                    }
                    _ex_connection.close();
                } else {
                    this.b_result = false;
                }

            } catch (SQLException ex) {
                message.setMessage(jtext1, "Ocurrio el siguiente error al actualizar los clientes: " + ex.getMessage());
                this.b_result = false;
            }
        }
        try {
            _connection.close();
            if (_ex_connection != null && !_ex_connection.isClosed()) {
                _ex_connection.close();
            }
        } catch (SQLException ex) {
            message.setMessage(jtext1, "Ocurrio el siguiente error al actualizar los clientes: " + ex.getMessage());
            this.b_result = false;
        }

        return this.b_result;
    }

    public boolean ActualizarClientes(String s_Compania, String s_Cliente) {
        Boolean b_return = true;
        PreparedStatement ps;
        ResultSet rsClientes, rsCentros;

        _SQLQuery = "select cia_codigo,  clie_codigo,  clie_nombre,  clie_propietario,  clie_cedula,  clie_pais,  clie_direccion,  clie_ciudad,"
                + "  clie_postal,  clie_mail,  clie_telefonos,  clie_fax,  clie_beeper,  clie_celular,  tipo_cxc,  clie_precio,  zona_codigo,"
                + "  clie_subzon,  vend_codigo,  cobr_codigo,  clie_contacto,  clie_limite,  clie_descuento,  clie_condiciones,  "
                + "  clie_credito,  clie_itbis,  clie_status,  clie_balance,  term_codigo,  clie_notas, "
                + "  clie_cheque,  clie_ipintel,  clie_unica,  clie_autoriza,  clie_dia,  "
                + "  clie_distancia,  clie_formapago,  clie_provincia,  clie_sector,  clie_datacredito,  clie_tpncf,"
                + "  clie_factpen,  clie_contado,  clie_frecuepago,  clie_empcod,  clie_fauto,  clie_ncftp,  clie_visita,"
                + "  id_pais,  id_provincia,  id_ciudad,  id_sector,  clie_tpcliente,  clie_modventas,  ruta_codigo,"
                + "  codigo_tarjeta,  id_tipo_cliente,  id_clasificacion,  id_categoria,  cant_ck_devuelto,  cant_fact_pendiente,"
                + "  prec_codigo,  cod_tipo_cliente,  cod_tipo_cxc,  cod_categoria,  id_descuento,  clie_oferta,  "
                + "  clie_latitud,  clie_longitud,  clie_cobertura,  clie_razonsocial,  clie_ckfuturista,  clie_tipo_venta,  clie_aseguradora,"
                + "  clie_internacional "
                + " from cxc_clientes where cia_codigo = ?::varchar and clie_codigo = ?::varchar ";
        try {
            ps = _connection.prepareStatement(_SQLQuery);
            ps.setString(1, s_Compania);
            ps.setString(2, s_Cliente);
            rsClientes = ps.executeQuery();
            message.setCaption(lblTransaccion, "Actualizando cliente: " + s_Cliente);

            while (rsClientes.next()) {
                PreparedStatement ps_Condicion, ps_Cambios, ps_Valores;

                String tabla = "cxc_clientes";
                String Campos = "cia_codigo,  clie_codigo,  clie_nombre,  clie_propietario,  clie_cedula,  clie_pais,  clie_direccion,  clie_ciudad,"
                        + "  clie_postal,  clie_mail,  clie_telefonos,  clie_fax,  clie_beeper,  clie_celular,  tipo_cxc,  clie_precio,  zona_codigo,"
                        + "  clie_subzon,  vend_codigo,  cobr_codigo,  clie_contacto,  clie_limite,  clie_descuento,  clie_condiciones,  "
                        + "  clie_credito,  clie_itbis,  clie_status,  clie_balance,  term_codigo,  clie_notas, "
                        + "  clie_cheque,  clie_ipintel,  clie_unica,  clie_autoriza,  clie_dia,  "
                        + "  clie_distancia,  clie_formapago,  clie_provincia,  clie_sector,  clie_datacredito,  clie_tpncf,"
                        + "  clie_factpen,  clie_contado,  clie_frecuepago,  clie_empcod,  clie_fauto,  clie_ncftp,  clie_visita,"
                        + "  id_pais,  id_provincia,  id_ciudad,  id_sector,  clie_tpcliente,  clie_modventas,  ruta_codigo,"
                        + "  codigo_tarjeta,  id_tipo_cliente,  id_clasificacion,  id_categoria,  cant_ck_devuelto,  cant_fact_pendiente,"
                        + "  prec_codigo,  cod_tipo_cliente,  cod_tipo_cxc,  cod_categoria,  id_descuento,  clie_oferta,  "
                        + "  clie_latitud,  clie_longitud,  clie_cobertura,  clie_razonsocial,  clie_ckfuturista,  clie_tipo_venta,  clie_aseguradora,"
                        + "  clie_internacional ";
                String Condicion = "cia_codigo = ?::varchar and clie_codigo = ?::varchar ";

                String Cambios = "clie_nombre = ?::varchar,  clie_propietario = ?::varchar,  clie_cedula = ?::varchar,  clie_pais = ?::varchar,"
                        + "  clie_direccion= ?::varchar,  clie_ciudad= ?::varchar,clie_postal = ?::varchar,  clie_mail= ?::varchar,"
                        + "  clie_telefonos= ?::varchar,  clie_fax= ?::varchar,  clie_beeper= ?::varchar,  clie_celular= ?::varchar,  tipo_cxc= ?::varchar,"
                        + "  clie_precio= ?::varchar,  zona_codigo= ?::varchar,clie_subzon= ?::varchar,  vend_codigo= ?::varchar,  cobr_codigo= ?::varchar,"
                        + "  clie_contacto= ?::varchar,  clie_limite= ?::numeric,  clie_descuento= ?::numeric,  clie_condiciones= ?::numeric,"
                        + "  clie_credito= ?::varchar,  clie_itbis= ?::varchar,  clie_status= ?::varchar,  clie_balance= ?::numeric,  term_codigo= ?::varchar,"
                        + "  clie_notas= ?::varchar, clie_cheque= ?::varchar,  clie_ipintel= ?::varchar,  clie_unica= ?::numeric,  clie_autoriza= ?::numeric,"
                        + "  clie_dia= ?::varchar, clie_distancia= ?::numeric,  clie_formapago= ?::numeric,  clie_provincia= ?::varchar,  clie_sector= ?::varchar,"
                        + "  clie_datacredito= ?::numeric,  clie_tpncf= ?::varchar,  clie_factpen= ?::numeric,  clie_contado= ?::numeric, "
                        + "  clie_frecuepago= ?::numeric,  clie_empcod= ?::varchar,  clie_fauto= ?::date,  clie_ncftp= ?::integer,  clie_visita= ?::varchar,"
                        + "  id_pais= ?::integer,  id_provincia= ?::integer,  id_ciudad= ?::integer,  id_sector= ?::integer,  clie_tpcliente= ?::integer,"
                        + "  clie_modventas= ?::varchar,  ruta_codigo= ?::integer,codigo_tarjeta= ?::integer,  id_tipo_cliente= ?::varchar,  "
                        + "  id_clasificacion= ?::varchar,  id_categoria= ?::varchar,  cant_ck_devuelto= ?::integer,  cant_fact_pendiente= ?::integer,"
                        + "  prec_codigo= ?::varchar,  cod_tipo_cliente= ?::integer,  cod_tipo_cxc= ?::integer,  cod_categoria= ?::integer,"
                        + "  id_descuento= ?::integer,  clie_oferta= ?::integer, clie_latitud= ?::varchar,  clie_longitud= ?::varchar, "
                        + "  clie_cobertura= ?::numeric,  clie_razonsocial= ?::varchar,  clie_ckfuturista= ?::boolean,  clie_tipo_venta= ?::smallint,"
                        + "  clie_aseguradora= ?::boolean,clie_internacional = ?::boolean";

                String Valores = "?::varchar,?::varchar,?::varchar,  ?::varchar,  ?::varchar,  ?::varchar,"
                        + "  ?::varchar, ?::varchar, ?::varchar, ?::varchar,"
                        + "  ?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar,"
                        + "  ?::varchar, ?::varchar, ?::varchar, ?::varchar,  ?::varchar,"
                        + "  ?::varchar, ?::numeric, ?::numeric, ?::numeric,"
                        + "  ?::varchar, ?::varchar, ?::varchar, ?::numeric, ?::varchar,"
                        + "  ?::varchar, ?::varchar, ?::varchar, ?::numeric, ?::numeric,"
                        + "  ?::varchar, ?::numeric, ?::numeric, ?::varchar, ?::varchar,"
                        + "  ?::numeric, ?::varchar, ?::numeric, ?::numeric, "
                        + "  ?::numeric, ?::varchar, ?::date,    ?::integer,  ?::varchar,"
                        + "  ?::integer, ?::integer, ?::integer, ?::integer,  ?::integer,"
                        + "  ?::varchar, ?::integer, ?::integer, ?::varchar,  "
                        + "  ?::varchar, ?::varchar, ?::integer, ?::integer,"
                        + "  ?::varchar, ?::integer, ?::integer, ?::integer,"
                        + "  ?::integer, ?::integer, ?::varchar, ?::varchar, "
                        + "  ?::numeric, ?::varchar, ?::boolean, ?::smallint,"
                        + "  ?::boolean, ?::boolean";

                ps_Condicion = _ex_connection.prepareStatement(Condicion);
                ps_Condicion.setString(1, s_Compania);
                ps_Condicion.setString(2, s_Cliente);

                ps_Cambios = _ex_connection.prepareStatement(Cambios);
                ps_Cambios.setString(1, rsClientes.getString("clie_nombre"));
                ps_Cambios.setString(2, rsClientes.getString("clie_propietario"));
                ps_Cambios.setString(3, rsClientes.getString("clie_cedula"));
                ps_Cambios.setString(4, rsClientes.getString("clie_pais"));
                ps_Cambios.setString(5, rsClientes.getString("clie_direccion"));
                ps_Cambios.setString(6, rsClientes.getString("clie_ciudad"));

                ps_Cambios.setString(7, rsClientes.getString("clie_postal"));
                ps_Cambios.setString(8, rsClientes.getString("clie_mail"));
                ps_Cambios.setString(9, rsClientes.getString("clie_telefonos"));
                ps_Cambios.setString(10, rsClientes.getString("clie_fax"));

                ps_Cambios.setString(11, rsClientes.getString("clie_beeper"));
                ps_Cambios.setString(12, rsClientes.getString("clie_celular"));
                ps_Cambios.setString(13, rsClientes.getString("tipo_cxc"));
                ps_Cambios.setString(14, rsClientes.getString("clie_precio"));
                ps_Cambios.setString(15, rsClientes.getString("zona_codigo"));

                ps_Cambios.setString(16, rsClientes.getString("clie_subzon"));
                ps_Cambios.setString(17, rsClientes.getString("vend_codigo"));
                ps_Cambios.setString(18, rsClientes.getString("cobr_codigo"));
                ps_Cambios.setString(19, rsClientes.getString("clie_contacto"));
                ps_Cambios.setDouble(20, rsClientes.getDouble("clie_limite"));

                ps_Cambios.setDouble(21, rsClientes.getDouble("clie_descuento"));
                ps_Cambios.setDouble(22, rsClientes.getDouble("clie_condiciones"));
                ps_Cambios.setString(23, rsClientes.getString("clie_credito"));
                ps_Cambios.setString(24, rsClientes.getString("clie_itbis"));

                ps_Cambios.setString(25, rsClientes.getString("clie_status"));
                ps_Cambios.setDouble(26, rsClientes.getDouble("clie_balance"));
                ps_Cambios.setString(27, rsClientes.getString("term_codigo"));
                ps_Cambios.setString(28, rsClientes.getString("clie_notas"));
                ps_Cambios.setString(29, rsClientes.getString("clie_cheque"));

                ps_Cambios.setString(30, rsClientes.getString("clie_ipintel"));
                ps_Cambios.setInt(31, rsClientes.getInt("clie_unica"));
                ps_Cambios.setInt(32, rsClientes.getInt("clie_autoriza"));
                ps_Cambios.setString(33, rsClientes.getString("clie_dia"));
                ps_Cambios.setDouble(34, rsClientes.getDouble("clie_distancia"));

                ps_Cambios.setInt(35, rsClientes.getInt("clie_formapago"));
                ps_Cambios.setString(36, rsClientes.getString("clie_provincia"));
                ps_Cambios.setString(37, rsClientes.getString("clie_sector"));

                ps_Cambios.setInt(38, rsClientes.getInt("clie_datacredito"));
                ps_Cambios.setString(39, rsClientes.getString("clie_tpncf"));
                ps_Cambios.setInt(40, rsClientes.getInt("clie_factpen"));
                ps_Cambios.setInt(41, rsClientes.getInt("clie_contado"));
                ps_Cambios.setInt(42, rsClientes.getInt("clie_frecuepago"));
                ps_Cambios.setString(43, rsClientes.getString("clie_empcod"));
                ps_Cambios.setDate(44, rsClientes.getDate("clie_fauto"));
                ps_Cambios.setShort(45, rsClientes.getShort("clie_ncftp"));
                ps_Cambios.setString(46, rsClientes.getString("clie_visita"));
                ps_Cambios.setInt(47, rsClientes.getInt("id_pais"));
                ps_Cambios.setInt(48, rsClientes.getInt("id_provincia"));
                ps_Cambios.setInt(49, rsClientes.getInt("id_ciudad"));
                ps_Cambios.setInt(50, rsClientes.getInt("id_sector"));
                ps_Cambios.setShort(51, rsClientes.getShort("clie_tpcliente"));
                ps_Cambios.setString(52, rsClientes.getString("clie_modventas"));
                ps_Cambios.setInt(53, rsClientes.getInt("ruta_codigo"));
                ps_Cambios.setInt(54, rsClientes.getInt("codigo_tarjeta"));
                ps_Cambios.setString(55, rsClientes.getString("id_tipo_cliente"));
                ps_Cambios.setString(56, rsClientes.getString("id_clasificacion"));
                ps_Cambios.setString(57, rsClientes.getString("id_categoria"));
                ps_Cambios.setInt(58, rsClientes.getInt("cant_ck_devuelto"));
                ps_Cambios.setInt(59, rsClientes.getInt("cant_fact_pendiente"));
                ps_Cambios.setString(60, rsClientes.getString("prec_codigo"));
                ps_Cambios.setInt(61, rsClientes.getInt("cod_tipo_cliente"));
                ps_Cambios.setInt(62, rsClientes.getInt("cod_tipo_cxc"));
                ps_Cambios.setInt(63, rsClientes.getInt("cod_categoria"));
                ps_Cambios.setInt(64, rsClientes.getInt("id_descuento"));
                ps_Cambios.setInt(65, rsClientes.getInt("clie_oferta"));
                ps_Cambios.setString(66, rsClientes.getString("clie_latitud"));
                ps_Cambios.setString(67, rsClientes.getString("clie_longitud"));
                ps_Cambios.setDouble(68, rsClientes.getDouble("clie_cobertura"));
                ps_Cambios.setString(69, rsClientes.getString("clie_razonsocial"));
                ps_Cambios.setBoolean(70, rsClientes.getBoolean("clie_ckfuturista"));
                ps_Cambios.setInt(71, rsClientes.getInt("clie_tipo_venta"));
                ps_Cambios.setBoolean(72, rsClientes.getBoolean("clie_aseguradora"));
                ps_Cambios.setBoolean(73, rsClientes.getBoolean("clie_internacional"));

                ps_Valores = _ex_connection.prepareStatement(Valores);

                ps_Valores.setString(1, s_Compania);
                ps_Valores.setString(2, s_Cliente);
                ps_Valores.setString(3, rsClientes.getString("clie_nombre"));
                ps_Valores.setString(4, rsClientes.getString("clie_propietario"));
                ps_Valores.setString(5, rsClientes.getString("clie_cedula"));
                ps_Valores.setString(6, rsClientes.getString("clie_pais"));
                ps_Valores.setString(7, rsClientes.getString("clie_direccion"));
                ps_Valores.setString(8, rsClientes.getString("clie_ciudad"));

                ps_Valores.setString(9, rsClientes.getString("clie_postal"));
                ps_Valores.setString(10, rsClientes.getString("clie_mail"));
                ps_Valores.setString(11, rsClientes.getString("clie_telefonos"));
                ps_Valores.setString(12, rsClientes.getString("clie_fax"));

                ps_Valores.setString(13, rsClientes.getString("clie_beeper"));
                ps_Valores.setString(14, rsClientes.getString("clie_celular"));
                ps_Valores.setString(15, rsClientes.getString("tipo_cxc"));
                ps_Valores.setString(16, rsClientes.getString("clie_precio"));
                ps_Valores.setString(17, rsClientes.getString("zona_codigo"));

                ps_Valores.setString(18, rsClientes.getString("clie_subzon"));
                ps_Valores.setString(19, rsClientes.getString("vend_codigo"));
                ps_Valores.setString(20, rsClientes.getString("cobr_codigo"));
                ps_Valores.setString(21, rsClientes.getString("clie_contacto"));
                ps_Valores.setDouble(22, rsClientes.getDouble("clie_limite"));

                ps_Valores.setDouble(23, rsClientes.getDouble("clie_descuento"));
                ps_Valores.setDouble(24, rsClientes.getDouble("clie_condiciones"));
                ps_Valores.setString(25, rsClientes.getString("clie_credito"));
                ps_Valores.setString(26, rsClientes.getString("clie_itbis"));

                ps_Valores.setString(27, rsClientes.getString("clie_status"));
                ps_Valores.setDouble(28, rsClientes.getDouble("clie_balance"));
                ps_Valores.setString(29, rsClientes.getString("term_codigo"));
                ps_Valores.setString(30, rsClientes.getString("clie_notas"));
                ps_Valores.setString(31, rsClientes.getString("clie_cheque"));

                ps_Valores.setString(32, rsClientes.getString("clie_ipintel"));
                ps_Valores.setInt(33, rsClientes.getInt("clie_unica"));
                ps_Valores.setInt(34, rsClientes.getInt("clie_autoriza"));
                ps_Valores.setString(35, rsClientes.getString("clie_dia"));
                ps_Valores.setDouble(36, rsClientes.getDouble("clie_distancia"));

                ps_Valores.setInt(37, rsClientes.getInt("clie_formapago"));
                ps_Valores.setString(38, rsClientes.getString("clie_provincia"));
                ps_Valores.setString(39, rsClientes.getString("clie_sector"));

                ps_Valores.setInt(40, rsClientes.getInt("clie_datacredito"));
                ps_Valores.setString(41, rsClientes.getString("clie_tpncf"));
                ps_Valores.setInt(42, rsClientes.getInt("clie_factpen"));
                ps_Valores.setInt(43, rsClientes.getInt("clie_contado"));
                ps_Valores.setInt(44, rsClientes.getInt("clie_frecuepago"));
                ps_Valores.setString(45, rsClientes.getString("clie_empcod"));
                ps_Valores.setDate(46, rsClientes.getDate("clie_fauto"));
                ps_Valores.setShort(47, rsClientes.getShort("clie_ncftp"));
                ps_Valores.setString(48, rsClientes.getString("clie_visita"));
                ps_Valores.setInt(49, rsClientes.getInt("id_pais"));
                ps_Valores.setInt(50, rsClientes.getInt("id_provincia"));
                ps_Valores.setInt(51, rsClientes.getInt("id_ciudad"));
                ps_Valores.setInt(52, rsClientes.getInt("id_sector"));
                ps_Valores.setShort(53, rsClientes.getShort("clie_tpcliente"));
                ps_Valores.setString(54, rsClientes.getString("clie_modventas"));
                ps_Valores.setInt(55, rsClientes.getInt("ruta_codigo"));
                ps_Valores.setInt(56, rsClientes.getInt("codigo_tarjeta"));
                ps_Valores.setString(57, rsClientes.getString("id_tipo_cliente"));
                ps_Valores.setString(58, rsClientes.getString("id_clasificacion"));
                ps_Valores.setString(59, rsClientes.getString("id_categoria"));
                ps_Valores.setInt(60, rsClientes.getInt("cant_ck_devuelto"));
                ps_Valores.setInt(61, rsClientes.getInt("cant_fact_pendiente"));
                ps_Valores.setString(62, rsClientes.getString("prec_codigo"));
                ps_Valores.setInt(63, rsClientes.getInt("cod_tipo_cliente"));
                ps_Valores.setInt(64, rsClientes.getInt("cod_tipo_cxc"));
                ps_Valores.setInt(65, rsClientes.getInt("cod_categoria"));
                ps_Valores.setInt(66, rsClientes.getInt("id_descuento"));
                ps_Valores.setInt(67, rsClientes.getInt("clie_oferta"));
                ps_Valores.setString(68, rsClientes.getString("clie_latitud"));
                ps_Valores.setString(69, rsClientes.getString("clie_longitud"));
                ps_Valores.setDouble(70, rsClientes.getDouble("clie_cobertura"));
                ps_Valores.setString(71, rsClientes.getString("clie_razonsocial"));
                ps_Valores.setBoolean(72, rsClientes.getBoolean("clie_ckfuturista"));
                ps_Valores.setInt(73, rsClientes.getInt("clie_tipo_venta"));
                ps_Valores.setBoolean(74, rsClientes.getBoolean("clie_aseguradora"));
                ps_Valores.setBoolean(75, rsClientes.getBoolean("clie_internacional"));

//?tabla, ?cambios1, ?cambios2, ?cambios3, ?condicion, ?campos, ?valores1, ?valores2, ?valores3
                _ex_SQLQuery = "SELECT * FROM public.fn_editar(?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar);";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setString(1, tabla);
                ps.setString(2, ps_Cambios.toString());
                ps.setString(3, "");
                ps.setString(4, "");
                ps.setString(5, ps_Condicion.toString());
                ps.setString(6, Campos);
                ps.setString(7, ps_Valores.toString());
                ps.setString(8, "");
                ps.setString(9, "");
                ps.executeQuery();

                //Actualizando las unidades del producto
                _SQLQuery = "SELECT "
                        + "  cia_codigo,  clie_codigo,numcen "
                        + "FROM public.cxc_clientes_centro "
                        + "WHERE cia_codigo = ?::varchar and clie_codigo = ?::varchar";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setString(1, s_Compania);
                ps.setString(2, s_Cliente);
                rsCentros = ps.executeQuery();

                _ex_SQLQuery = "delete from cxc_clientes_centro where cia_codigo = ?::varchar and clie_codigo = ?::varchar ;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setString(1, s_Compania);
                ps.setString(2, s_Cliente);
                ps.execute();

                while (rsCentros.next()) {
                    _ex_SQLQuery = "insert into cxc_clientes_centro(cia_codigo,clie_codigo,numcen) "
                            + "values(?::varchar,?::varchar,?::varchar);";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setString(1, s_Compania);
                    ps.setString(2, s_Cliente);
                    ps.setString(3, rsCentros.getString("numcen"));

                    ps.execute();
                }

                //Actualizando como sincronizado el cliente en la caja
                _SQLQuery = "update vtas.clientes_cajas set sincronizada = true where caja_cod in (" + this.Caja + ") and cia_codigo = ?::varchar and clie_codigo = ?::varchar ;";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setString(1, s_Compania);
                ps.setString(2, s_Cliente);
                ps.execute();

            }
        } catch (SQLException ex) {
            b_return = false;
        }

        return b_return;
    }

    public void SetCaja(String CodigoCaja, String codigocompania) {
        this.Caja = CodigoCaja;
        this.Compania = codigocompania;

    }

    public void SetSlaveConnection(String host, String database, String portnumber, String username, String password) {
        _ex_Host = host;
        _ex_Database = database;
        _ex_User = username;
        _ex_Port = portnumber;
        _ex_Password = password;

    }
}
