public void importarClientesPendientes(final Date desde) { for (Long sucursal : getSucursales()) { JdbcTemplate sucursalTemplate = ReplicaServices.getInstance().getJdbcTemplate(sucursal); String sql = "select CLIENTE_ID from sx_clientes where date(creado)>=?"; Object args[] = {new SqlParameterValue(Types.DATE, desde)}; final List<Long> ids = sucursalTemplate.queryForList(sql, args, Long.class); System.out.println("Clientes: " + ids.size()); for (Long id : ids) { System.out.println("Validando: " + id + " En sucursal: " + sucursal); Cliente c = Services.getInstance().getClientesManager().get(id); if (c == null) { System.out.println("Faltante: " + id + " importandolo..."); HibernateTemplate target = Services.getInstance().getHibernateTemplate(); HibernateTemplate source = ReplicaServices.getInstance().getHibernateTemplate(sucursal); List<Cliente> clientes = source.find( "from Cliente c left join fetch c.credito " + " left join fetch c.direcciones d" + " left join fetch c.telefonos t" + " where c.id=?", id); c = clientes.get(0); target.replicate(c, ReplicationMode.EXCEPTION); } } } }
/** * Replica los clientes faltantes de enviar a las sucursales * * <p>Util para tareas especiales */ public void replicarFaltantes() { final JdbcTemplate template = Services.getInstance().getJdbcTemplate(); String sql = "select distinct clave from sx_clientes_log where tx_replicado is null order by modificado desc"; List<Map<String, Object>> rows = template.queryForList(sql); if (rows.size() > 0) { logger.info("Clientes pendiente de replicado: " + rows.size()); } for (Map<String, Object> row : rows) { String clave = (String) row.get("CLAVE"); Cliente c = Services.getInstance().getClientesManager().buscarPorClave(clave); if (c != null) { logger.info("Replicando :" + c.getClave()); for (Long sucursalId : getSucursales()) { HibernateTemplate target = ReplicaServices.getInstance().getHibernateTemplate(sucursalId); try { target.replicate(c, ReplicationMode.OVERWRITE); logger.info("Cliente replicado: " + c.getClave()); } catch (Exception e) { logger.error( "Error replicando cliente: " + c.getClave() + " A sucursal: " + sucursalId + " " + ExceptionUtils.getRootCauseMessage(e)); } } } } }
public void replicarPendientes() { for (Long sucursalId : getSucursales()) { importarPendientes(sucursalId); } final JdbcTemplate template = Services.getInstance().getJdbcTemplate(); String sql = "select * from sx_clientes_log where tx_replicado is null and date(modificado)>=? order by modificado desc"; Object[] values = new Object[] {new SqlParameterValue(Types.DATE, new Date())}; List<Map<String, Object>> rows = template.queryForList(sql, values); if (rows.size() > 0) { logger.info("Client es pendiente de replicado: " + rows.size()); } for (Map<String, Object> row : rows) { String clave = (String) row.get("CLAVE"); Number id = (Number) row.get("ID"); Cliente c = Services.getInstance().getClientesManager().buscarPorClave(clave); boolean aplicado = true; if (c != null) { logger.info("Replicando :" + c.getClave() + " Log ID:" + id); for (Long sucursalId : getSucursales()) { HibernateTemplate target = ReplicaServices.getInstance().getHibernateTemplate(sucursalId); try { target.replicate(c, ReplicationMode.OVERWRITE); } catch (Exception e) { aplicado = false; logger.error( "Error replicando cliente: " + c.getClave() + " A sucursal: " + sucursalId + " " + ExceptionUtils.getRootCauseMessage(e)); } } if (aplicado) { try { Object[] params = { new SqlParameterValue(Types.TIMESTAMP, new Date()), new SqlParameterValue(Types.NUMERIC, id.longValue()) }; template.update("update sx_clientes_log set tx_replicado=? where id=?", params); // logger.info("Log replicado: "+id+ "Cliente : "+c.getClave()); } catch (Exception e) { logger.error(e); } logger.info( "Actualizacion de cliente exitosa Log ID: " + id + " Cliente(Clave):" + c.getClave()); } } } }
public Sucursal getSucursal() { if (sucursal == null) { sucursal = Services.getInstance().getConfiguracion().getSucursal(); System.out.println("Suc: " + sucursal); } return sucursal; }
public void importarPendientes(Long sucursalId) { String sql = "select * from sx_clientes_log where tx_importado is null"; JdbcTemplate template = ReplicaServices.getInstance().getJdbcTemplate(sucursalId); List<Map<String, Object>> rows = template.queryForList(sql); for (Map<String, Object> row : rows) { System.out.println("Importando: " + row); try { Number cliente_id = (Number) row.get("CLIENTE_ID"); HibernateTemplate source = ReplicaServices.getInstance().getHibernateTemplate(sucursalId); List<Cliente> clientes = source.find( "from Cliente c " + " left join fetch c.direcciones d" + " left join fetch c.telefonos t" + " where c.id=?", cliente_id.longValue()); Cliente c = clientes.get(0); Services.getInstance().getHibernateTemplate().replicate(c, ReplicationMode.IGNORE); } catch (Exception e) { logger.error("Error importando cliente: " + row, e); } try { Number id = (Number) row.get("ID"); String update = "UPDATE SX_CLIENTES_LOG SET TX_IMPORTADO=NOW() WHERE ID=?"; template.update(update, new Object[] {id.longValue()}); } catch (Exception e) { logger.error("Error actualizando importado: " + row); } } }
public void replicacionEspecial(Long sucursalId) { String sql = "SELECT distinct clave FROM sx_clientes_log where date(modificado)>=\'2011/04/18\'"; HibernateTemplate target = ReplicaServices.getInstance().getHibernateTemplate(sucursalId); List<String> faltantes = Services.getInstance().getJdbcTemplate().queryForList(sql, String.class); for (String clave : faltantes) { System.out.println("Replicando " + clave + " a sucursal: " + sucursalId); Cliente c = Services.getInstance().getClientesManager().buscarPorClave(clave); try { target.replicate(c, ReplicationMode.OVERWRITE); System.out.print("."); } catch (Exception e) { e.printStackTrace(); } } }
@Override protected List<Venta> getData() { String hql = "from Venta v where v.fecha between ? and ?"; Object[] params = new Object[] {periodo.getFechaInicial(), periodo.getFechaFinal()}; if (cliente != null) { hql = "from Venta v where v.fecha between ? and ? and v.cliente.clave=?"; params = new Object[] {periodo.getFechaInicial(), periodo.getFechaFinal(), cliente.getClave()}; } return Services.getInstance().getHibernateTemplate().find(hql, params); }
public static void run() { Services.getInstance().getHibernateTemplate(); ReplicadorDeClientes replicador = new ReplicadorDeClientes(); String base = POSDBUtils.getAplicationDB_URL(); while (true) { String clave = JOptionPane.showInputDialog( null, "Clave a replicar", base, JOptionPane.INFORMATION_MESSAGE); replicador.replicarDeProduccion(clave); } }
/** * Replica los cambios de un cliente hechos desde las oficinas * * @param clave */ public void replicarDeProduccion(final String clave) { Cliente c = Services.getInstance().getClientesManager().buscarPorClave(clave); for (Long sucursalId : getSucursales()) { System.out.println("Replicando " + clave + " a sucursal: " + sucursalId); HibernateTemplate target = ReplicaServices.getInstance().getHibernateTemplate(sucursalId); try { target.replicate(c, ReplicationMode.OVERWRITE); } catch (Exception e) { e.printStackTrace(); } } }
@Override protected List<Venta> getData() { String hql = "from Venta v " + " where v.sucursal.id=? " + " and v.origen=@ORIGEN " + " and v.fecha between ? and ?" + ""; hql = hql.replace("@ORIGEN", "\'" + getOrigen().name() + "\'"); Object[] params = new Object[] {getSucursal().getId(), periodo.getFechaInicial(), periodo.getFechaFinal()}; return Services.getInstance().getHibernateTemplate().find(hql, params); }
public static Venta seleccionar(Cliente cliente) { SelectorDeFacturas selector = new SelectorDeFacturas(); selector.setSelectionMode(ListSelection.SINGLE_SELECTION); selector.setCliente(cliente); selector.open(); if (!selector.hasBeenCanceled()) { Venta v = selector.getSelected(); v = Services.getInstance().getFacturasManager().buscarVentaInicializada(v.getId()); return v; } return null; }
/** * Importa un cliente * * @param clave * @param source */ public void importarCliente(String clave, Long sucursalId) { HibernateTemplate target = Services.getInstance().getHibernateTemplate(); HibernateTemplate source = ReplicaServices.getInstance().getHibernateTemplate(sucursalId); List<Cliente> clientes = source.find( "from Cliente c left join fetch c.credito " + " left join fetch c.direcciones d" + " left join fetch c.telefonos t" + " where c.clave=?", clave); Cliente c = clientes.get(0); target.replicate(c, ReplicationMode.EXCEPTION); }
/** Manda a las sucursales el registro ClienteCredito para los clientes de credito */ public void actualizarClientesDeCredito() { List<Cliente> clientes = Services.getInstance() .getHibernateTemplate() .find("from Cliente c left join fetch c.credito where c.credito is not null"); for (Long sucursalId : getSucursales()) { String update = "UPDATE SX_CLIENTES SET CREDITO_ID=null "; String delete = "DELETE FROM SX_CLIENTES_CREDITO"; JdbcTemplate template = ReplicaServices.getInstance().getJdbcTemplate(sucursalId); HibernateTemplate target = ReplicaServices.getInstance().getHibernateTemplate(sucursalId); int ups = template.update(update); System.out.println("Clientes actualizados en sucursal: " + sucursalId + " " + ups); int dels = template.update(delete); System.out.println("Registros de credito eliminados en sucursal: " + sucursalId + " " + dels); for (Cliente c : clientes) { target.replicate(c, ReplicationMode.OVERWRITE); System.out.print("."); } System.out.println( "Clientes actualizados en sucursal: " + sucursalId + " :" + clientes.size()); } }
@Override protected List<PendienteDeAsignarRow> findData() { String sql = "SELECT (SELECT S.NOMBRE FROM SW_SUCURSALES S WHERE S.SUCURSAL_ID=V.SUCURSAL_ID) AS sucursal,V.nombre,V.origen,V.CE as contraEntrega,V.fpago" + " ,v.fecha ,V.PEDIDO_CREADO AS fecha_ped,V.PEDIDO_FOLIO AS pedido,V.DOCTO AS documento,V.CREADO AS facturado,STR_TO_DATE(e.fecha_entrega, '%Y-%m-%d %H:%i:%s') as fechaEntrega" + " ,V.total,V.TOTAL-IFNULL((SELECT SUM(A.IMPORTE) FROM sx_cxc_aplicaciones A WHERE A.CARGO_ID=V.CARGO_ID),0) AS saldo" + " ,v.importe,ifnull( (select sum(e.valor) from sx_entregas e where e.venta_id=V.cargo_id),0) as entregado " + " ,V.IMPORTE-ifnull( (select sum(e.valor) from sx_entregas e where e.venta_id=V.cargo_id),0) AS pendiente" + " ,(SELECT MAX(A.CREADO) FROM sx_cxc_aplicaciones A WHERE A.CARGO_ID=V.CARGO_ID) AS ultimoPago" + " ,V.INSTRUCCION_ENTREGA AS instruccion,V.CARGO_ID as id" + " ,IFNULL((SELECT SUM(A.IMPORTE) FROM sx_cxc_aplicaciones A " + " WHERE A.CARGO_ID=V.CARGO_ID and a.ABN_DESCRIPCION like '%DEV%'),0) AS devolucionAplicada" + " FROM sx_ventas v " + " JOIN sx_clientes C ON(C.CLIENTE_ID=V.CLIENTE_ID)" + " JOIN sx_pedidos P ON(P.PEDIDO_ID=V.PEDIDO_ID)" + " JOIN sx_pedidos_entregas E ON(E.INSTRUCCION_ID=P.INSTRUCCION_ID)" + " where V.FECHA>='2014/01/01' AND NOW()>STR_TO_DATE(e.fecha_entrega, '%Y-%m-%d %H:%i:%s')" + " AND IFNULL(V.COMENTARIO2,'') NOT LIKE '%CANCELAD%'" + " AND ifnull( (select sum(e.valor) from sx_entregas e where e.venta_id=V.cargo_id),0)=0" + " and v.total-IFNULL((SELECT SUM(A.IMPORTE) FROM sx_cxc_aplicaciones A WHERE A.CARGO_ID=V.CARGO_ID and a.ABN_DESCRIPCION like '%DEV%'),0)>1"; return Services.getInstance() .getJdbcTemplate() .query(sql, new BeanPropertyRowMapper(PendienteDeAsignarRow.class)); }