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; }