public ComboBoxModel getComboBoxModelTrabajdorSinCuenta(EmpresaCuenta empresaCuenta) {
   List<Trabajador> list = new LinkedList<Trabajador>();
   // List<TrabajadorCuenta> listCuenta = new LinkedList<TrabajadorCuenta>();
   DefaultComboBoxModel model = new DefaultComboBoxModel();
   HibernateUtil.beginTransaction();
   try {
     TrabajadorDao trabajadorDao = DaoFactory.getInstance().getTrabajadorDao();
     TrabajadorCuentaDao trabajadorCuentaDao = DaoFactory.getInstance().getTrabajadorCuentaDao();
     EmpresaCuentaDao empresaCuentaDao = DaoFactory.getInstance().getEmpresaCuentaDao();
     if (empresaCuenta != null) {
       empresaCuenta =
           empresaCuentaDao.findByEmpresaMes(empresaCuenta.getEmpresa(), empresaCuenta.getMes());
       list = trabajadorDao.findByEmpresaNoBloqueado(empresaCuenta.getEmpresa());
       for (int i = 0; i < list.size(); i++) {
         if (trabajadorCuentaDao.findByTrabajadorEmpresaCuenta(list.get(i), empresaCuenta)
             == null) {
           model.addElement(list.get(i).getDatosPersonales().getRut());
         }
       }
       HibernateUtil.commitTransaction();
     }
   } finally {
     HibernateUtil.closeSession();
   }
   return model;
 }
  public int addTrabajadorCuenta(
      EmpresaCuenta empresaCuenta,
      Trabajador trabajador,
      String trato,
      String formaPago,
      String tipoContrato,
      Boolean seguroCesantia,
      Afp afp,
      Afp afp2,
      String tipoAhorroVoluntario,
      Double valorAhorroVoluntario,
      String tipoSalud,
      Isapre isapre,
      String tipoPactoIsapre,
      Double valorPactoIsapre,
      Boolean cargas,
      Double sueldoPromedio,
      Long numeroCargasNormal,
      Long numeroCargasInvalida) {
    int respuesta;
    HibernateUtil.beginTransaction();
    try {
      if (empresaCuenta != null) {
        // empresa cuenta existe
        if (trabajador != null) {
          // trabajador existe
          EmpresaCuentaDao empresaCuentaDao = DaoFactory.getInstance().getEmpresaCuentaDao();
          empresaCuenta =
              empresaCuentaDao.findByEmpresaMes(empresaCuenta.getEmpresa(), empresaCuenta.getMes());
          if (!empresaCuenta.isCerrada()) {
            // si la cuenta de la empresa no está cerrada
            TrabajadorDao trabajadorDao = DaoFactory.getInstance().getTrabajadorDao();
            trabajador =
                trabajadorDao.findByEmpresaRutTrabajador(
                    trabajador.getEmpresa(), trabajador.getDatosPersonales().getRut());
            TrabajadorCuentaDao trabajadorCuentaDao =
                DaoFactory.getInstance().getTrabajadorCuentaDao();
            if (!trabajadorCuentaDao.existe(trabajador, empresaCuenta).booleanValue()) {
              // si la cuenta del trabajador no existe

              // START NEW
              AfpDao afpDao = DaoFactory.getInstance().getAfpDao();
              if (afp != null) {
                afp = afpDao.findByMesNombre(empresaCuenta.getMes(), afp.getNombre());
              }
              if (afp2 != null) {
                afp2 = afpDao.findByMesNombre(empresaCuenta.getMes(), afp2.getNombre());
              }
              // END NEW

              TrabajadorCuenta trabajadorCuenta =
                  new TrabajadorCuenta(
                      trato,
                      formaPago,
                      tipoContrato,
                      seguroCesantia,
                      afp,
                      afp2,
                      tipoAhorroVoluntario,
                      valorAhorroVoluntario,
                      tipoSalud,
                      isapre,
                      tipoPactoIsapre,
                      valorPactoIsapre,
                      cargas,
                      sueldoPromedio,
                      numeroCargasNormal,
                      numeroCargasInvalida);
              // trabajadorCuenta.setEmpresaCuenta(empresaCuenta);
              // trabajadorCuenta.setTrabajador(trabajador);
              // trabajadorCuentaDao.makePersistent(trabajadorCuenta);
              trabajador.addCuenta(trabajadorCuenta);
              empresaCuenta.addTrabajadorCuenta(trabajadorCuenta);
              empresaCuentaDao.makePersistent(empresaCuenta);
              trabajadorDao.makePersistent(trabajador);

              respuesta = respExito;
            } else {
              // si la cuenta de la empresa existe
              respuesta = respExiste;
            }
          } else {
            // si la cuenta de la empresa está cerrada
            respuesta = respCuentaEmpresaCerrada;
          }
        } else {
          // trabajador no existe
          respuesta = respNoExisteTrabajador;
        }
      } else {
        // empresa cuenta no existe
        respuesta = respNoExisteEmpresaCuenta;
      }
      HibernateUtil.commitTransaction();
    } finally {
      HibernateUtil.closeSession();
    }
    return respuesta;
  }
 public int updateTrabajadorCuenta(
     EmpresaCuenta empresaCuenta,
     Trabajador trabajador,
     String trato,
     String formaPago,
     String tipoContrato,
     Boolean seguroCesantia,
     Afp afp,
     Afp afp2,
     String tipoAhorroVoluntario,
     Double valorAhorroVoluntario,
     String tipoSalud,
     Isapre isapre,
     String tipoPactoIsapre,
     Double valorPactoIsapre,
     Boolean cargas,
     Double sueldoPromedio,
     Long numeroCargasNormal,
     Long numeroCargasInvalida) {
   int respuesta;
   HibernateUtil.beginTransaction();
   try {
     if (empresaCuenta != null) {
       // empresa cuenta existe
       if (trabajador != null) {
         // trabajador existe
         EmpresaCuentaDao empresaCuentaDao = DaoFactory.getInstance().getEmpresaCuentaDao();
         empresaCuenta =
             empresaCuentaDao.findByEmpresaMes(empresaCuenta.getEmpresa(), empresaCuenta.getMes());
         if (!empresaCuenta.isCerrada()) {
           // si la cuenta de la empresa no está cerrada
           TrabajadorDao trabajadorDao = DaoFactory.getInstance().getTrabajadorDao();
           trabajador =
               trabajadorDao.findByEmpresaRutTrabajador(
                   trabajador.getEmpresa(), trabajador.getDatosPersonales().getRut());
           TrabajadorCuentaDao trabajadorCuentaDao =
               DaoFactory.getInstance().getTrabajadorCuentaDao();
           if (trabajadorCuentaDao.existe(trabajador, empresaCuenta).booleanValue()) {
             // si la cuenta de la empresa existe
             TrabajadorCuenta trabajadorCuenta =
                 trabajadorCuentaDao.findByTrabajadorEmpresaCuenta(trabajador, empresaCuenta);
             trabajadorCuenta.setTrato(trato);
             trabajadorCuenta.setFormaPago(formaPago);
             trabajadorCuenta.setTipoContrato(tipoContrato);
             trabajadorCuenta.setSeguroCesantia(seguroCesantia);
             trabajadorCuenta.setAfp(afp);
             trabajadorCuenta.setAfp2(afp2);
             trabajadorCuenta.setTipoAhorroVoluntario(tipoAhorroVoluntario);
             trabajadorCuenta.setValorAhorroVoluntario(valorAhorroVoluntario);
             trabajadorCuenta.setTipoSalud(tipoSalud);
             trabajadorCuenta.setIsapre(isapre);
             trabajadorCuenta.setTipoPactoIsapre(tipoPactoIsapre);
             trabajadorCuenta.setValorPactoIsapre(valorPactoIsapre);
             trabajadorCuenta.setCargas(cargas);
             trabajadorCuenta.setSueldoPromedio(sueldoPromedio);
             trabajadorCuenta.setNumeroCargasNormal(numeroCargasNormal);
             trabajadorCuenta.setNumeroCargasInvalida(numeroCargasInvalida);
             trabajadorCuentaDao.makePersistent(trabajadorCuenta);
             respuesta = respExito;
           } else {
             // si la cuenta de la empresa no existe
             respuesta = respNoExiste;
           }
         } else {
           // si la cuenta de la empresa está cerrada
           respuesta = respCuentaEmpresaCerrada;
         }
       } else {
         // trabajador no existe
         respuesta = respNoExisteTrabajador;
       }
     } else {
       // empresa cuenta no existe
       respuesta = respNoExisteEmpresaCuenta;
     }
     HibernateUtil.commitTransaction();
   } finally {
     HibernateUtil.closeSession();
   }
   return respuesta;
 }