示例#1
0
 /**
  * Devuelve un array con los módulos que están sujetos a gestión
  * de etiquetas, según el valor de la variable de entorno del proyecto 'modulosConEtiquetas'
  * 
  * El array tendrá n elementos (tantos como módulos), y cada elemento es:
  * 
  * - Id => el id del módulo
  * - Value => el título del módulo (no el nombre)
  * 
  * @return array 
  */
 public function getModulosConEtiquetas()
 {
     $modulos = array();
     $variables = new CpanVariables('Pro', 'Env');
     $modulosConEtiquetas = explode(",", trim($variables->getNode('modulosConEtiquetas')));
     unset($variables);
     $objetoModulo = new CpanModulos();
     foreach ($modulosConEtiquetas as $moduloConEtiquetas) {
         $modulo = $objetoModulo->find('NombreModulo', trim($moduloConEtiquetas));
         $modulos[] = array('Id' => $modulo->getId(), 'Value' => $modulo->getTitulo());
     }
     unset($objetoModulo);
     unset($modulo);
     return $modulos;
 }
示例#2
0
 public function actualiza($objeto)
 {
     $entidad = $objeto->getClassName();
     $idEntidad = $objeto->getPrimaryKeyValue();
     $this->queryDelete("Entity='{$entidad}' and IdEntity='{$idEntidad}'");
     if ($objeto->getPublish()->getIDTipo() == '1' and $objeto->getDeleted()->getIDTipo() == '0') {
         $variables = new CpanVariables("Mod", "Env", $entidad);
         foreach ($variables->getNode("columns") as $columna => $atributos) {
             if ($atributos['searchable']) {
                 $texto = $objeto->{"get{$columna}"}();
                 if ($texto) {
                     $search = new CpanSearch();
                     $search->setTexto($texto);
                     $search->setEntity($entidad);
                     $search->setIdEntity($idEntidad);
                     $search->setPublish($objeto->getPublish()->getIDTipo());
                     $search->setChecked($objeto->getChecked()->getIDTipo());
                     $search->setPrivacy($objeto->getPrivacy()->getIDTipo());
                     $search->create();
                 }
             }
         }
     }
 }
示例#3
0
        $search->actualiza($objeto);
        unset($search);
    }
}
unset($objeto);
// Actualiza la columna en el resto de idiomas
if ($_SESSION['idiomas']['actual'] == 0) {
    // Recorro los idiomas adicionales
    foreach ($_SESSION['idiomas']['disponibles'] as $key => $value) {
        if ($key > 0) {
            $_SESSION['idiomas']['actual'] = $key;
            $objeto = new $entidad($idEntidad);
            $objeto->{"set{$columna}"}($v['valor']);
            if ($objeto->save() && ($columna == 'Publish' || $columna == 'Privacy')) {
                // Actualiza la url amigable
                $urlAmigable = CpanUrlAmigables::sincroniza($objeto);
                // Actualiza la tabla de búsquedas
                $variables = new CpanVariables("Mod", "Env", $entidad);
                if ($variables->getNode('searchable')) {
                    $search = new CpanSearch();
                    $search->actualiza($objeto);
                    unset($search);
                }
            }
            unset($objeto);
        }
    }
    $_SESSION['idiomas']['actual'] = 0;
}
$tag = "";
echo $tag;
示例#4
0
 /**
  * Pone las variables de entorno del proyecto/app/modulo en curso
  * relativas al control de visibilidad de sus variables web
  *
  * Respeta los valores que hubiera en el yml del proyecto respecto
  * a las variables web definidas.
  *
  * @return void
  */
 private function ponVisibilidad()
 {
     $variables = new CpanVariables($this->_objeto['ambito'], 'Env', $this->_objeto['nombre']);
     $valoresActuales = $variables->getNode('showVarWeb');
     $valores['globales'] = array();
     $valores['especificas'] = array();
     if (is_array($this->_objeto['datos']['globales'])) {
         foreach ($this->_objeto['datos']['globales'] as $key => $value) {
             if (!isset($valoresActuales['globales'][$key])) {
                 $valores['globales'][$key] = 0;
             } else {
                 $valores['globales'][$key] = $valoresActuales['globales'][$key];
             }
         }
     }
     if (is_array($this->_objeto['datos']['especificas'])) {
         foreach ($this->_objeto['datos']['especificas'] as $key => $value) {
             if (!isset($valoresActuales['especificas'][$key])) {
                 $valores['especificas'][$key] = 0;
             } else {
                 $valores['especificas'][$key] = $valoresActuales['especificas'][$key];
             }
         }
     }
     $variables->setNode('showVarWeb', $valores);
     $variables->save();
     unset($variables);
 }
 /**
  * Muestra el formulario de mantenimineto de las variables de entorno y web
  * a nivel global, de app, o de módulo, dependiendo de los valores GET request.
  *
  * La posicion 1 del request indica el tipo de variable. Valores posibles:
  *
  *      Web   : Variables web
  *      Env   : Variables entorno
  *
  * La posicion 2 del request indica el ámbito. Valores posibles:
  *
  *      Pro: para las variables de entorno globales al projecto
  *      App: para las variables de entorno de un aplicación
  *      Mod: para las variables de entorno de un modulo
  *
  * Si la posicion 2 es 'App' ó 'Mod', la posición 3 del request indica
  * el nombre de la aplicación o del módulo
  *
  * Si no viene nada en el request, no se mostrar
  * @return array Array(template,values)
  */
 public function indexAction($ambito = '', $tipo = '', $nombre = '')
 {
     if ($tipo == '') {
         $tipo = $this->request[1];
     }
     if ($tipo == '') {
         $tipo = 'Env';
     }
     if ($ambito == '') {
         $ambito = $this->request[2];
     }
     if ($ambito == '') {
         $ambito = 'Pro';
     }
     if ($nombre == '') {
         $nombre = $this->request[3];
     }
     // PUEDE VER LAS VARIABLES DE ENTORNO Y WEB ÚNICAMENTE SI ES DE PERFIL 1
     // PUEDE VER LAS VARIABLES WEB SI TIENE PERMISO
     $idPerfil = $_SESSION['usuarioPortal']['IdPerfil'];
     $permiso = ($idPerfil == '1' or $tipo == 'Web' and $this->values['permisos']['permisosModulo']['VW']);
     if ($permiso) {
         $this->variables = new CpanVariables($ambito, $tipo, $nombre);
         $this->values['errores'] = array_merge((array) $this->values['errores'], (array) $this->variables->getErrores());
         $datos = $this->variables->getValores();
         switch ($ambito) {
             case 'Pro':
                 $this->ponValoresDefecto($ambito, $tipo, '', $datos);
                 if ($tipo == 'Web') {
                     // Coger la visibilidad de las variables web
                     $var = new CpanVariables($ambito, 'Env');
                     $this->values['visibilidad'] = $var->getNode('showVarWeb');
                     unset($var);
                 }
                 break;
             case 'App':
                 $this->ponValoresDefecto($ambito, $tipo, $nombre, $datos);
                 // Variables especificas
                 $datos['especificas'] = $this->getEspecificas($datos['especificas']);
                 break;
             case 'Mod':
                 $this->ponValoresDefecto($ambito, $tipo, $nombre, $datos);
                 switch ($tipo) {
                     case 'Env':
                         // Constuyo array con los nombres de las columnas del modulo(=entidad)
                         // para mostrar en el template las variables Web/Env de cada columna.
                         $archivoConfig = new Form($nombre);
                         $columnasConfig = $archivoConfig->getNode('columns');
                         unset($archivoConfig);
                         // Creo el nodo 'columns' creando si no existen o asignado valores por defecto si no tienen
                         // provinientes del 'config.yml' de cada módulo
                         // SI SE AÑADE UNA COLUMNA NUEVA EN config.yml TAMBIEN SERÁ AÑADIDA EN EL FORMULARIO DE VARIABLES
                         if (is_array($columnasConfig)) {
                             foreach ($columnasConfig as $columnaConfig => $atributosConfig) {
                                 $valoresActuales = $datos['columns'][$columnaConfig];
                                 $datos['columns'][$columnaConfig] = $this->ponAtributos((array) $valoresActuales, $atributosConfig);
                             }
                         }
                         break;
                     case 'Web':
                         // Coger la visibilidad de las variables web
                         $var = new CpanVariables($ambito, 'Env', $nombre);
                         $this->values['visibilidad'] = $var->getNode('showVarWeb');
                         unset($var);
                         break;
                 }
                 // Variables especificas
                 $datos['especificas'] = $this->getEspecificas($datos['especificas']);
                 // Valores para el desplegable de columnas
                 if (class_exists($nombre)) {
                     $entidad = new $nombre();
                     $this->values['columnas'] = $entidad->getColumnsNames();
                     unset($entidad);
                 }
                 break;
         }
         $template = $this->variables->getTemplate();
         $this->values['tipo'] = $tipo;
         $this->values['ambito'] = $ambito;
         $this->values['nombre'] = $nombre;
         $this->values['titulo'] = $this->variables->getTitulo();
         $this->values['d'] = $datos;
         $this->values['yml'] = $this->variables->getYml();
         $this->values['template'] = $this->variables->getTemplate();
         unset($this->variables);
     } else {
         $template = '_global/forbiden.html.twig';
     }
     return array('template' => $template, 'values' => $this->values);
 }
 protected function cargaValores()
 {
     if (!isset($_SESSION['usuarioPortal']['menu'])) {
         // Está logeado (viene del portal), pero es la primera vez que entra
         $_SESSION['usuarioPortal']['accesosPortal'] = array();
         // Carga la cadena de conexion a la base de datos del proyecto
         $proyectoApp = new PcaeProyectosApps();
         $proyectoApp = $proyectoApp->find('PrimaryKeyMD5', $this->request[1]);
         //print_r($proyectoApp);
         $_SESSION['project']['Id'] = $proyectoApp->getId();
         $_SESSION['project']['IdEmpresa'] = $proyectoApp->getIdProyecto()->getIdEmpresa()->getId();
         $_SESSION['project']['empresa'] = $proyectoApp->getIdProyecto()->getIdEmpresa()->getRazonSocial();
         $_SESSION['project']['title'] = $proyectoApp->getIdProyecto()->getProyecto();
         $_SESSION['project']['url'] = $proyectoApp->getUrl();
         $_SESSION['project']['conection'] = array('dbEngine' => $proyectoApp->getDbEngine(), 'host' => $proyectoApp->getHost(), 'user' => $proyectoApp->getUser(), 'password' => $proyectoApp->getPassword(), 'database' => $proyectoApp->getDatabase());
         // Carga la cadena de conexión al servidor ftp del proyecto
         $_SESSION['project']['ftp'] = array('server' => $proyectoApp->getFtpServer(), 'port' => $proyectoApp->getFtpPort(), 'timeout' => $proyectoApp->getFtpTimeout(), 'folder' => $proyectoApp->getFtpFolder(), 'user' => $proyectoApp->getFtpUser(), 'password' => $proyectoApp->getFtpPassword());
         unset($proyectoApp);
         // Establece el perfil del usuario para el proyecto y carga
         // el menú en base a su perfil
         $usuario = new Agentes($_SESSION['usuarioPortal']['Id']);
         //print_r($usuario);
         if ($usuario->getStatus()) {
             $idPerfil = $usuario->getIDPerfil()->getPrimaryKeyValue();
             $_SESSION['usuarioPortal']['IdPerfil'] = $idPerfil;
             $_SESSION['usuarioPortal']['IdRol'] = $usuario->getIDRol()->getIDTipo();
             $_SESSION['usuarioPortal']['email'] = $usuario->getEMail();
             $_SESSION['emp'] = $_SESSION['project']['IdEmpresa'];
             $_SESSION['usuarioPortal']['sucursales'] = $usuario->getSucursales('', false);
             $_SESSION['suc'] = $_SESSION['usuarioPortal']['sucursales'][0]['Id'];
             $_SESSION['usuarioPortal']['menu'] = $usuario->getArrayMenu();
             // Carga las variables de entorno y web del proyecto
             $this->cargaVariables();
             // Activar la versión
             $var = new CpanVariables('Pro', 'Web');
             $erp = $var->getNode('erp');
             $_SESSION['ver'] = $erp['version'] != '' ? $erp['version'] : '0';
             // Activar o no la posibilidad de cambiar precios
             $rolesCambioPrecio = explode(",", trim($erp['rolesCambioPrecios']));
             $_SESSION['usuarioPortal']['cambioPrecios'] = in_array($_SESSION['usuarioPortal']['IdRol'], $rolesCambioPrecio);
             // Poner en la sesión la política de actualización de precios en base
             $_SESSION['usuarioPortal']['actuPrecios'] = $erp['actuPrecios'] != '' ? $erp['actuPrecios'] : 'PVP';
             // Poner en la sesión el margén mínimo de venta
             $_SESSION['usuarioPortal']['margenMinimo'] = $erp['alertaMargen'] > 0 ? $erp['alertaMargen'] : 0;
             // Poner en la sesión si se generar alertas o no por falta de stock
             $_SESSION['usuarioPortal']['alertaStock'] = $erp['alertaStock'];
             // Establece los idiomas en base a la varible web del proyecto
             /**
              $langs = trim($_SESSION['VARIABLES']['WebPro']['globales']['lang']);
              $_SESSION['idiomas']['disponibles'] = ($langs == '') ? array('0' => 'es') : explode(",", $langs);
             
              if (!isset($_SESSION['idiomas']['actual'])) {
              $_SESSION['idiomas']['actual'] = 0;
              }
             */
         }
         //print_r($_SESSION);
         unset($usuario);
     }
 }
示例#7
0
 /**
  * CÁLCULO DEL RECARGO ENERGÉTICO.
  * Si hay artículos que están sujetos a recargo energético, hay que calcular
  * el importe del impuesto e incluir una línea automática con dicho valor.
  * Si la línea ya está incluida, se actualiza.
  *
  * El articulo que se factura para recargo energetico viene definido en el parametro REART
  * Y el precio kilo en el parametro REIMP
  */
 public function calculaRecargoEnergetico()
 {
     $var = new CpanVariables("Mod", "Web", "PcaeEmpresas");
     $parametro = $var->getNode("especificas");
     $reArticulo = $parametro['reArticulo'];
     unset($var);
     // Ver si existe el articulo que se ha definido en parametros
     // para facturar el recargo energetico
     $articulo = new Articulos();
     $articulo = $articulo->find('Codigo', $reArticulo);
     if ($articulo->getIDArticulo()) {
         // Se ha definido el parametro con el codigo del articulo
         // para aplicar el recargo energetico. Ahora hay que ver si en el presupuesto
         // en curso hay articulos sujetos a recargo energético.
         $em = new EntityManager($this->getConectionName());
         $tablaArticulos = "{$articulo->getDataBaseName()}.{$articulo->getTableName()}";
         $lineas = new PstoLineas();
         $tablaLineas = "{$lineas->getDataBaseName()}.{$lineas->getTableName()}";
         unset($lineas);
         $query = "select t1.*,t2.Peso from {$tablaLineas} as t1, {$tablaArticulos} as t2 where t1.IDPsto='{$this->IDPsto}' and t1.IDArticulo=t2.IDArticulo and t2.RecargoEnergetico='1'";
         $em->query($query);
         $rows = $em->fetchResult();
         if ($rows) {
             //Hay articulos sujetos a recargo energetico
             $reKilos = 0;
             foreach ($rows as $row) {
                 $reKilos += $row['MtsFa'] * $row['Peso'];
             }
             $reImporte = $reKilos * $articulo->getPrecioVenta();
             //Ver si ya está la linea de presupuesto creada.
             $query = "select IDLinea from {$tablaLineas} where IDPsto='{$this->IDPsto}' and IDArticulo='{$articulo->getIDArticulo()}'";
             $em->query($query);
             $rows = $em->fetchResult();
             if ($rows) {
                 // Ya estaba, actualizar
                 $query = "update {$tablaLineas} set Unidades='{$reKilos}',Precio='{$articulo->getPrecioVenta()}',Importe='{$reImporte}' where IDLinea='{$rows[0]['IDLinea']}'";
                 $em->query($query);
             } else {
                 // No está, crear
                 $lineaPsto = new PstoLineas();
                 $lineaPsto->setIDPsto($this->IDPsto);
                 $lineaPsto->setIDArticulo($articulo->getIDArticulo());
                 $lineaPsto->setDescripcion($articulo->getDescripcion());
                 $lineaPsto->setUnidades($reKilos);
                 $lineaPsto->setPrecio($articulo->getPrecioVenta());
                 $lineaPsto->setImporte($reImporte);
                 $lineaPsto->setIDAgente($_SESSION['usuarioPortal']['Id']);
                 $lineaPsto->setIDComercial($this->IDComercial);
                 $lineaPsto->setIDAlmacen($this->IDAlmacen);
                 $lineaPsto->setIva($articulo->getIDIva()->getIva());
                 $lineaPsto->create();
                 unset($lineaPsto);
             }
         } else {
             // No hay articulos con recargo energetico.
             // Borro el eventual cargo de recargo energetico.
             $lineas = new PstoLineas();
             $lineas->queryDelete("IDPsto='{$this->IDPsto}' and IDArticulo='{$articulo->getIDArticulo()}'");
             unset($lineas);
         }
         $em->desConecta();
         unset($em);
     }
 }
示例#8
0
 /**
  * Devuelve un array con los atributos de cada columna del módulo $modulo
  *
  * Los atributos son: caption, visible, updatable, default, permission, help
  *
  * Los valores de los atributos se obtienen  de las variables de entorno del módulo,
  * y si no existen, se cargan del config.yml correspondiente
  *
  * @param string $modulo El nombre del módulo
  * @return array Array de atributos
  */
 public function getAtributos($modulo)
 {
     $atributos = array();
     // PRIMERO LEO LOS ATRIBUTOS DE LAS COLUMNAS QUE ESTÁN EN CONFIG.YML
     $columnasConfig = $this->getNode('columns');
     // LUEGO LOS SUSTITUYO POR LOS ESPECIFICOS QUE ESTAN EN LAS VAR DE ENTORNO DE PROYECTO
     // DE TAL MANERA QUE PREVALECEN LOS DEFINIDOS EN LAS VARIABLES DE ENTORNO, PERO
     // SI NO EXISTIERA LA VARIABLE DE ENTORNO CORRESPONDIENTE ENTONCES PONGO LA DEL CONFIG.
     $variables = new CpanVariables('Mod', 'Env', $modulo);
     if (is_array($variables->getDatosYml())) {
         $arrayColumnas = $variables->getNode('columns');
         foreach ($arrayColumnas as $key => $value) {
             $atributos[$key] = $value;
             if (is_array($columnasConfig[$key])) {
                 foreach ($columnasConfig[$key] as $keyConfig => $valueConfig) {
                     if (!isset($atributos[$key][$keyConfig])) {
                         $atributos[$key][$keyConfig] = $valueConfig;
                     }
                 }
             }
         }
     } else {
         // Aún no se han definido las variables, por lo tanto cargo los atributos
         // en base al array de correspondencia de atributos predeterminados
         foreach ($columnasConfig as $keyColumna => $valueColumna) {
             foreach (VariablesEnv::$varEnvMod as $keyVar => $keyColumnaConfig) {
                 $atributos[$keyColumna][$keyVar] = isset($valueColumna[$keyColumnaConfig]) ? $valueColumna[$keyColumnaConfig] : "";
             }
         }
     }
     unset($variables);
     // Si el usuario es super pongo la visibilidad a TRUE
     //if ($_SESSION['usuarioPortal']['Id'] == '1')
     //    foreach ($atributos as $key => $value)
     //        ++$atributos[$key]['visible'];
     /**
      if (!$atributos[$key]['visible']) {
      $atributos[$key]['visible'] = '1';
      $atributos[$key]['caption'] .= " (oculta)";
      }
     */
     return $atributos;
 }