public static function saveAcount(ePerson $ePerson, eUser $eUser, eUserProfile $eUserProfile, $eUserProfile_CompanyBranches)
 {
     $oBus = new Response_Business();
     $MY =& MY_Controller::get_instance();
     /* @var $mPerson Person_Model */
     $mPerson =& $MY->mPerson;
     /* @var $mUser User_Model */
     $mUser =& $MY->mUser;
     /* @var $mUserProfile User_Profile_Model */
     $mUserProfile =& $MY->mUserProfile;
     /* @var $mUserProfileCompanyBranch User_Profile_Company_Branch_Model */
     $mUserProfileCompanyBranch =& $MY->mUserProfileCompanyBranch;
     $oTransaction = new MY_Business();
     $oTransaction->begin();
     try {
         if (!Helper_App_Session::isAdminProfile() || !Helper_App_Session::isSuperAdminProfile()) {
             if (Business_App_Person::isValidDocument($ePerson->document)) {
                 throw new Exception('Documento Invalido, No permitido');
             }
         }
         $ePersonT = $mPerson->loadByDocument($ePerson->document, $ePerson->id);
         if (!$ePersonT->isEmpty()) {
             throw new Exception('Persona Existente');
         }
         $eUserT = $mUser->load($eUser->username, 'username', $eUser->id);
         if (!$eUserT->isEmpty()) {
             throw new Exception('Usuario Existente');
         }
         $mPerson->save($ePerson);
         $mUser->save($eUser);
         $eUserProfileT = $mUserProfile->loadArray(array('id_user' => $eUser->id, 'id_profile' => $eUserProfile->id_profile));
         $eUserProfile->id_user = $eUser->id;
         $eUserProfile->id = $eUserProfileT->id;
         $mUserProfile->save($eUserProfile);
         $mUserProfileCompanyBranch->deleteByUserProfile($eUserProfile->id);
         if (!empty($eUserProfile_CompanyBranches)) {
             /* @var $eUserProfileCompanyBranch eUserProfileCompanyBranch */
             foreach ($eUserProfile_CompanyBranches as $eUserProfileCompanyBranch) {
                 $eUserProfileCompanyBranch->id_user_profile = $eUserProfile->id;
                 $mUserProfileCompanyBranch->save($eUserProfileCompanyBranch);
             }
         }
         $oTransaction->commit();
         $oBus->isSuccess(TRUE);
         $oBus->message("Guardado exitosamente");
     } catch (Exception $e) {
         $oTransaction->rollback();
         $oBus->isSuccess(FALSE);
         $oBus->message($e->getMessage());
     }
     return $oBus;
 }
 public static function savePerson(ePerson $ePerson)
 {
     $oBus = new Response_Business();
     $MY =& MY_Controller::get_instance();
     /* @var $mPerson Person_Model */
     $mPerson =& $MY->mPerson;
     $oTransaction = new MY_Business();
     $oTransaction->begin();
     try {
         $ePersonT = $mPerson->load($ePerson->id);
         if (!Helper_App_Session::isAdminProfile() || !Helper_App_Session::isSuperAdminProfile()) {
             if (Business_App_Person::isValidDocument($ePerson->document)) {
                 throw new Exception('Documento Invalido: ' + $ePerson->document);
             }
             if ($ePersonT->tipo_documento != $ePerson->tipo_documento) {
                 throw new Exception('No tiene permisos para editar el tipo de documento');
             }
             if ($ePersonT->document != $ePerson->document) {
                 throw new Exception('No tiene permisos para editar el documento');
             }
         }
         $ePersonDocument = $mPerson->loadByDocument($ePerson->document, $ePerson->id);
         if (!$ePersonDocument->isEmpty()) {
             throw new Exception('Documento Existente: ' + $ePerson->document);
         }
         $mPerson->save($ePerson);
         $oBus->isSuccess(TRUE);
         $oBus->message("Guardado exitosamente");
         $oTransaction->commit();
     } catch (Exception $e) {
         $oTransaction->rollback();
         $oBus->isSuccess(FALSE);
         $oBus->message($e->getMessage());
     }
     return $oBus;
 }