예제 #1
0
  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);
        }
      }
    }
  }
예제 #2
0
 /**
  * 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));
         }
       }
     }
   }
 }
예제 #3
0
  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());
        }
      }
    }
  }
예제 #4
0
 public Sucursal getSucursal() {
   if (sucursal == null) {
     sucursal = Services.getInstance().getConfiguracion().getSucursal();
     System.out.println("Suc: " + sucursal);
   }
   return sucursal;
 }
예제 #5
0
  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);
      }
    }
  }
예제 #6
0
 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();
     }
   }
 }
예제 #7
0
 @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);
 }
예제 #8
0
 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);
   }
 }
예제 #9
0
 /**
  * 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();
     }
   }
 }
예제 #10
0
 @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);
 }
예제 #11
0
  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;
  }
예제 #12
0
 /**
  * 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);
 }
예제 #13
0
  /** 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));
 }