public function NuevoCatalogoCuentas()
 {
     $dir = new Direccion();
     $dir->setIdUsuarioUltimaModificacion(1);
     $dir->setUltimaModificacion(mktime());
     $dir->setCalle("Calle: " . mktime());
     DAO::transBegin();
     try {
         DireccionDAO::save($dir);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se ha podido guardar la direccion (Desde Unit Tests): " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("No se ha podido guardar la nueva direccion (desde Unit Test)|: " . $e->getMessage(), 901);
         }
         throw new Exception("No se ha podido guardar la nueva direccion (Desde Unit Tests)", 901);
     }
     DAO::transEnd();
     $empresa = new Empresa();
     $empresa->setRazonSocial("Razon Social - " . time());
     $empresa->setRfc(time());
     $empresa->setIdDireccion($dir->getIdDireccion());
     $empresa->setFechaAlta(mktime());
     $empresa->setIdLogo(1);
     $empresa->setActivo(1);
     DAO::transBegin();
     try {
         EmpresaDAO::save($empresa);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se ha podido guardar la nueva empresa (Desde Unit Tests): " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("No se ha podido guardar la nueva empresa (desde Unit Test)|: " . $e->getMessage(), 901);
         }
         throw new Exception("No se ha podido guardar la nueva empresa (Desde Unit Tests)", 901);
     }
     DAO::transEnd();
     $cat = new CatalogoCuentas();
     $cat->setDescripcion("Catalogo de cuentas " . $empresa->getRazonSocial());
     $cat->setIdEmpresa($empresa->getIdEmpresa());
     DAO::transBegin();
     try {
         CatalogoCuentasDAO::save($cat);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se ha podido guardar el nuevo catalogo de cuentas (Desde Unit Tests): " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("No se ha podido guardar el nuevo catalogo de cuentas (desde Unit Test)|: " . $e->getMessage(), 901);
         }
         throw new Exception("No se ha podido guardar el nuevo catalogo de cuentas (Desde Unit Tests)", 901);
     }
     DAO::transEnd();
     return $cat->getIdCatalogo();
 }
 public static function NuevoCatalogoCuentasEmpresa($id_empresa)
 {
     $empresa = EmpresaDAO::getByPK($id_empresa);
     if (is_null($empresa)) {
         throw new InvalidDatabaseOperationException("La empresa con id " . $id_empresa . " no existe");
     }
     $nuevo_catalogo_cuentas = new CatalogoCuentas();
     $nuevo_catalogo_cuentas->setIdEmpresa($id_empresa);
     $nuevo_catalogo_cuentas->setDescripcion("Catalogo de cuentas " . $empresa->getRazonSocial());
     DAO::transBegin();
     try {
         CatalogoCuentasDAO::save($nuevo_catalogo_cuentas);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se ha podido guardar la nueva cuenta: " . $e);
         throw new Exception("No se ha podido guardar el nuevo catalogo de cuentas|: " . $e->getMessage(), 901);
     }
     DAO::transEnd();
     self::InsertarCatalogoCuentasDefault($nuevo_catalogo_cuentas->getIdCatalogo());
     return array("status" => "ok", "id_catalogo_cuentas" => (int) $nuevo_catalogo_cuentas->getIdCatalogo());
 }