Estructura/Organización de Clases del Negocio

De CidesaWiki

(Diferencias entre revisiones)
Saltar a navegación, buscar
 
(6 ediciones intermedias no se muestran.)
Línea 1: Línea 1:
Dentro de Siga el código fuente de la lógica del negocio esta separado del controlador y la vista, lo que llamamos el modelo. Este modelo se encuentra en la carpeta "lib" de nuestro proyecto, y esta organizado de la siguiente forma:
Dentro de Siga el código fuente de la lógica del negocio esta separado del controlador y la vista, lo que llamamos el modelo. Este modelo se encuentra en la carpeta "lib" de nuestro proyecto, y esta organizado de la siguiente forma:
 +
[[Imagen:lib.png]]
[[Imagen:lib.png]]
 +
La carpeta "Lib" es raíz del proyecto y dentro esta toda la información del modelo de datos. Allí podrás encontrar las siguientes carpetas:
La carpeta "Lib" es raíz del proyecto y dentro esta toda la información del modelo de datos. Allí podrás encontrar las siguientes carpetas:
Línea 7: Línea 9:
* Helper: Aquí están y se colocan los los Helpers (o ayudantes) adicionales (creados para el proyecto) para objetos o funcionalidades de la vista, por ejemplo encontraras un helper para llamar a catálogos o Grids. Si se quiere crear un helper se debe hacer en esta carpeta, y se debe seguir la metodología de los otros helper.
* Helper: Aquí están y se colocan los los Helpers (o ayudantes) adicionales (creados para el proyecto) para objetos o funcionalidades de la vista, por ejemplo encontraras un helper para llamar a catálogos o Grids. Si se quiere crear un helper se debe hacer en esta carpeta, y se debe seguir la metodología de los otros helper.
-
* model: Aqui se encuentran las clases de conexion con cada tabla de la base de datos, junto que sus clases bases. Estas clases son generadas automaticamente en base a un esquema de la base de datos a través de la funcionalidad [["propel" http://www.symfony-project.com/book/trunk/08-Inside-the-Model-Layer]] que contiene symfony.
+
* model: Aqui se encuentran las clases de conexion con cada tabla de la base de datos, junto que sus clases bases. Estas clases son generadas automaticamente en base a un esquema de la base de datos a través de la funcionalidad [http://www.symfony-project.com/book/trunk/08-Inside-the-Model-Layer "propel"] que contiene symfony.
* Business: En esta carpeta estan organziadas las clases del manejo del negecio. Aqui se debe colocar todo el código que tenga que ver con procesos del negocio. Esta carpeta tentativamente tiene la siguiente organziación:
* Business: En esta carpeta estan organziadas las clases del manejo del negecio. Aqui se debe colocar todo el código que tenga que ver con procesos del negocio. Esta carpeta tentativamente tiene la siguiente organziación:
Línea 26: Línea 28:
Por ejemplo dentro de la carpeta "compras" existen las siguientes clases:
Por ejemplo dentro de la carpeta "compras" existen las siguientes clases:
 +
<pre>
------- compras
------- compras
-----------Articulos.class.php
-----------Articulos.class.php
-----------Compras.class.php
-----------Compras.class.php
 +
</pre>
Estas 2 clases contienen funcionalidades específicas de estos conceptos. por ejemplo la clase Articulos contiene:
Estas 2 clases contienen funcionalidades específicas de estos conceptos. por ejemplo la clase Articulos contiene:
Línea 34: Línea 38:
<pre>
<pre>
 +
/**
 +
* Clase para el Manejo de Artículos
 +
*
 +
* @package    Siga
 +
* @subpackage lib
 +
* @author    Grupo Desarrollo Cidesa <desarrollo@cidesa.com.ve>
 +
* @version    SVN: $Id: $
 +
* @copyright  Copyright 2007, Cidesa C.A.
 +
*
 +
*/
class Articulos
class Articulos
{
{
-
        // Funcion para el formulario "Almregart"
 
-
public static function validarAlmregart($articulo)
 
-
{
 
-
        }
 
-
        // Funcion para el formulario "Almregart"
+
/**
-
public static function salvarAlmregart($articulo,$grid)
+
* Función para registrar artículos
-
        {
+
-
            self::Grabar_Articulo($articulo,$grid);
+
* @static
-
        }
+
* @param $articulo Object Artículo a guardar
 +
* @param $grid Array de Objects Almacen.
 +
* @return void
 +
*/ 
 +
    public static function Grabar_Articulo($articulo,$grid){
 +
  //Se graba el Artículo
 +
  $articulo->save();
 +
 +
// Se graban los almacenes del articulo
 +
  self::Grabar_ArticulosAlmacen($articulo,$grid);
 +
    }
-
        // Funcion para el formulario "Almregart"
+
  /**
-
public static function Grabar_Articulo($articulo,$grid)
+
* Función para registrar los artículos en los diferentes Alamacenes
-
{
+
-
            // Se graba el Artículo
+
* @static
-
            $articulo->save();
+
* @param $articulo Object Artículo a guardar
 +
* @param $grid Array de Objects Almacen.
 +
* @return void
 +
*/ 
 +
    public static function Grabar_ArticulosAlmacen($articulo,$grid){
 +
  $codart=$articulo->getCodart();
 +
  $x=$grid[0];
 +
  $j=0;
 +
  while ($j<count($x)) {
 +
$x[$j]->setCodart($codart);
 +
$codubi=$x[$j]->getCodubi();
 +
$x[$j]->setCodubi(str_pad($codubi, 20 , ' '));
 +
 +
$x[$j]->save();
 +
    $j++;
 +
  }
 +
      $z=$grid[1];  
 +
      $j=0;
 +
      if ($z[$j]) {
 +
while ($j<count($z)) {
 +
$z[$j]->delete();
 +
$j++;
 +
}
 +
 +
  }
 +
    }
-
            // Se graban los almacenes del articulo
+
/**
-
            self::Grabar_ArticulosAlmacen($articulo,$grid);
+
* Función Principal para guardar datos del formulario Almregart
-
 
+
* TODO Esta función (y todas las demás de su clase) deben retornar un
-
}
+
* código de error para validar cualquier problema al guardar los datos.
-
+
-
        // Funcion para el formulario "Almregart"
+
* @static
-
public static function Grabar_ArticulosAlmacen($articulo,$grid)
+
* @param $articulo Object Artículo a guardar
-
{  
+
* @param $grid Array de Objects Almacen.
-
            ......
+
* @return void
-
}  
+
*/
-
 
+
    public static function salvarAlmregart($articulo,$grid){
-
 
+
      self::Grabar_Articulo($articulo,$grid);
 +
    }
 +
 
 +
/**
 +
* Función Principal para validar datos del formulario Almregart
 +
 +
* @static
 +
* @param $articulo Object Artículo a guardar
 +
* @param $grid Array de Objects Almacen.
 +
* @return void
 +
*/
 +
    public static function validarAlmregart($articulo,$grid) {
 +
      return self::validarCodart($articulo);
 +
    }
     
     
-
        // Funcion para validar el formato del código del  
+
/**
-
artículo
+
* Función Principal para validar datos del formulario Almregart
-
public static function validarCodart($articulo)
+
-
 
+
* @static
-
{
+
* @param $articulo Object Artículo a guardar
 +
* @return void
 +
*/
 +
    public static function validarCodart($articulo) {
 +
  $codart=$articulo->getCodart(); 
-
}
+
  Herramientas::FormarCodigoPadre($codart,&$nivelcodigo,&$ultimo);   
 +
    if (!(Herramientas::buscar_codigo_padre($ultimo))){
 +
    If ($nivelcodigo == 0){
 +
    return 1;
 +
    } else return -1;
 +
    }else return -1;
 +
    }
 +
    }
}
}
Línea 84: Línea 153:
Tomando como ejemplo la estructura de la clase "Artículos" expuesta anteriormente, tenemos lo siguiente:
Tomando como ejemplo la estructura de la clase "Artículos" expuesta anteriormente, tenemos lo siguiente:
-
* Cada formulario (llamese Almregart) debe estar ligado a un concepto de las clases del negocio; por ejemplo código que tienen que ver con el negocio del formulario "Almregart" de registro de artículos, debe estar en esta clase debido a su manejo del concepto de artículo.
+
:* Cada formulario (llamese Almregart) debe estar ligado a un concepto de las clases del negocio; por ejemplo el código que tienen que ver con el negocio del formulario "Almregart" de registro de artículos, debe estar en esta clase debido a su manejo del concepto de artículo.
 +
 
 +
:* Luego de identificar el concepto base del formulario debemos colocar las funciones básicas necesarias para el trabajo del formulario, las cuales son:
 +
 
 +
::* validarFormName: Donde "FormName" es el nombre del formulario con el que trabajaremos. Este método '''estático''' de la clase "Articulos" se encargará de verificar o validar del lado del servidor los datos que introdujo el usuario, antes de guardarlos o pasar al método de "salvar" datos. Los parámetros de esta función van a depender de los datos que se necesiten validar. Esta función es llamada desde el controlador, donde se colocan los datos de la vista.  
-
* Luego de identificar el concepto base del formulario debemos colocar las funciones básicas necesarias para el trabajo del formulario, las cuales son:
+
::* salvarFormName: Donde "FormName" es el nombre del formulario con el que trabajaremos. Este método se ejecuta después del validar (si todo esta bien) y permite ejecutar el código del negocio necesario para guardar los datos introducidos por el usuario en la vista. Se supone que aquí solo debemos guardar los datos en la base de datos, ya que en la función validarFormName ya verificamos la integridad de los mismo.
-
** validarFormName: Donde "FormName" es el nombre del formulario con el que trabajaremos. Este método '''estático''' de la clase "Articulos" se encargará de verificar o validar del lado del servidor los datos que introdujo el usuario, antes de guardarlos o pasar al método de "salvar" datos. Los parámetros de esta función van a depender de los datos que se necesiten validar. Esta función es llamada desde el controlador, donde se colocan los datos de la vista.  
+
::* Grabar_Articulo y Grabar_ArticulosAlmacen: Estas funciones son específicas del formulario y deben ser colocadas dentro de la clase Artículo.
-
** salvarFormName: Donde "FormName" es el nombre del formulario con el que trabajaremos. Este método se ejecuta despues del validar (si todo esta bien) y permite ejecutar el código del negocio necesario para guardar los datos introducidos por el usuario en la vista. Se supone que aqui solo debemos guardar los datos como deben ser guardados en la base de datos, ya que en la función validarFormName ya verificamos la integridad de los mismo.
+
::* validarCodart: Esta es una función adicional que es usada en el controlador para realizar una validación. Estas funciones específicas deben ser colocadas en esta clase y no en el controlador (actions.class).

Última versión de 14:06 30 abr 2007

Dentro de Siga el código fuente de la lógica del negocio esta separado del controlador y la vista, lo que llamamos el modelo. Este modelo se encuentra en la carpeta "lib" de nuestro proyecto, y esta organizado de la siguiente forma:


Lib.png


La carpeta "Lib" es raíz del proyecto y dentro esta toda la información del modelo de datos. Allí podrás encontrar las siguientes carpetas:

------- compras
------- bienes
------- formulacion
------- ingresos
------- nomina
------- obras
------- tesoreria
------- .....

Cada una de estas carpetas contiene las clases de cada uno de las aplicaciones.

Por ejemplo dentro de la carpeta "compras" existen las siguientes clases:

------- compras
-----------Articulos.class.php
-----------Compras.class.php

Estas 2 clases contienen funcionalidades específicas de estos conceptos. por ejemplo la clase Articulos contiene:


/**
 * Clase para el Manejo de Artículos
 *
 * @package    Siga
 * @subpackage lib
 * @author     Grupo Desarrollo Cidesa <desarrollo@cidesa.com.ve>
 * @version    SVN: $Id: $
 * @copyright  Copyright 2007, Cidesa C.A.
 * 
 */
class Articulos
{

	/**
	 * Función para registrar artículos
	 *  
	 * @static
	 * @param $articulo Object Artículo a guardar
	 * @param $grid Array de Objects Almacen. 
	 * @return void 
	 */   
    public static function Grabar_Articulo($articulo,$grid){	
	  	//Se graba el Artículo		
	  $articulo->save();
	
		// Se graban los almacenes del articulo
	  self::Grabar_ArticulosAlmacen($articulo,$grid);
    }

   	/**
	 * Función para registrar los artículos en los diferentes Alamacenes 
	 *  
	 * @static
	 * @param $articulo Object Artículo a guardar
	 * @param $grid Array de Objects Almacen. 
	 * @return void 
	 */   
    public static function Grabar_ArticulosAlmacen($articulo,$grid){
	  $codart=$articulo->getCodart();
	  $x=$grid[0];		
		  $j=0;	
		  while ($j<count($x)) {
			$x[$j]->setCodart($codart);
			$codubi=$x[$j]->getCodubi();
			$x[$j]->setCodubi(str_pad($codubi, 20 , ' '));
							
			$x[$j]->save();
		    $j++;			
		  }
      $z=$grid[1];		  
      $j=0;
      if ($z[$j]) {
		while ($j<count($z)) {											
			$z[$j]->delete();				
		$j++;
		}
		
	  }
    } 
			
	/**
	 * Función Principal para guardar datos del formulario Almregart
	 * TODO Esta función (y todas las demás de su clase) deben retornar un
	 * código de error para validar cualquier problema al guardar los datos.
	 *  
	 * @static
	 * @param $articulo Object Artículo a guardar
	 * @param $grid Array de Objects Almacen. 
	 * @return void 
	 */
    public static function salvarAlmregart($articulo,$grid){
      self::Grabar_Articulo($articulo,$grid);			
    }

  
	/**
	 * Función Principal para validar datos del formulario Almregart
	 *  
	 * @static
	 * @param $articulo Object Artículo a guardar
	 * @param $grid Array de Objects Almacen. 
	 * @return void 
	 */
    public static function validarAlmregart($articulo,$grid) {
      return self::validarCodart($articulo);
    }
	    
	/**
	 * Función Principal para validar datos del formulario Almregart
	 *  
	 * @static
	 * @param $articulo Object Artículo a guardar
	 * @return void 
	 */
    public static function validarCodart($articulo)	{
	  	$codart=$articulo->getCodart();  

	  	Herramientas::FormarCodigoPadre($codart,&$nivelcodigo,&$ultimo);  	  		
	  	  if (!(Herramientas::buscar_codigo_padre($ultimo))){
	  	  	If ($nivelcodigo == 0){
	  	  		return 1;
	  	  	} else return -1;	
	  	  }else return -1;
	    }
    }

}


Estructura de las clases del Negocio

Tomando como ejemplo la estructura de la clase "Artículos" expuesta anteriormente, tenemos lo siguiente:

  • Cada formulario (llamese Almregart) debe estar ligado a un concepto de las clases del negocio; por ejemplo el código que tienen que ver con el negocio del formulario "Almregart" de registro de artículos, debe estar en esta clase debido a su manejo del concepto de artículo.
  • Luego de identificar el concepto base del formulario debemos colocar las funciones básicas necesarias para el trabajo del formulario, las cuales son:
  • validarFormName: Donde "FormName" es el nombre del formulario con el que trabajaremos. Este método estático de la clase "Articulos" se encargará de verificar o validar del lado del servidor los datos que introdujo el usuario, antes de guardarlos o pasar al método de "salvar" datos. Los parámetros de esta función van a depender de los datos que se necesiten validar. Esta función es llamada desde el controlador, donde se colocan los datos de la vista.
  • salvarFormName: Donde "FormName" es el nombre del formulario con el que trabajaremos. Este método se ejecuta después del validar (si todo esta bien) y permite ejecutar el código del negocio necesario para guardar los datos introducidos por el usuario en la vista. Se supone que aquí solo debemos guardar los datos en la base de datos, ya que en la función validarFormName ya verificamos la integridad de los mismo.
  • Grabar_Articulo y Grabar_ArticulosAlmacen: Estas funciones son específicas del formulario y deben ser colocadas dentro de la clase Artículo.
  • validarCodart: Esta es una función adicional que es usada en el controlador para realizar una validación. Estas funciones específicas deben ser colocadas en esta clase y no en el controlador (actions.class).
Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas