Yii Framework Forum: Facturacion - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Facturacion Rate Topic: -----

#1 User is offline   rotceh07 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 13-November 12

Posted 14 November 2012 - 04:53 PM

Hola a todos. Soy nuevo dentro del framework y les agradeceria me puedan iluminar con cierta duda.

Quiero realizar una formulario de una factura, con su encabezado y su detalle, en lo que tengo problemas es en saber que widget utilizar para el detalle o de que manera manejarlo, es decir que el usuario pueda ingresar el codigo y con el framework manejar los demas parametros (ya se nombre, precio subtotales y otros).

Gracias de antemano!
0

#2 User is offline   cesariux23 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 16-August 12

Posted 14 November 2012 - 06:47 PM

Hola, si solo quieres mostrar los detalles de una factura, sin hacer una búsqueda previa, podrías utilizar un pequeño formulario para pedir el numero y buscar, y utilizar un div que contenga un DetailView con los detalles del documento encontrado o un mensaje en caso de no encontrarlo.
El submit del form lo podrías hacer con ajax y llenar el div de manera dinámica.

Pero si lo que quieres es realizar una búsqueda y de acuerdo a los resultados mostrar sus detalles, entonces te sugiero que hagas una vista parecida a la de 'admin' (o utilizar esa vista, solo cambia los permisos en el controlador y modifica la ButtonColumn del gridview) que genera el CRUD para mostrar los detalles.

Espero te sea de utilidad mi comentario.

Saludos!.
0

#3 User is offline   rotceh07 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 13-November 12

Posted 15 November 2012 - 10:07 AM

View Postcesariux23, on 14 November 2012 - 06:47 PM, said:

Hola, si solo quieres mostrar los detalles de una factura, sin hacer una búsqueda previa, podrías utilizar un pequeño formulario para pedir el numero y buscar, y utilizar un div que contenga un DetailView con los detalles del documento encontrado o un mensaje en caso de no encontrarlo.
El submit del form lo podrías hacer con ajax y llenar el div de manera dinámica.

Pero si lo que quieres es realizar una búsqueda y de acuerdo a los resultados mostrar sus detalles, entonces te sugiero que hagas una vista parecida a la de 'admin' (o utilizar esa vista, solo cambia los permisos en el controlador y modifica la ButtonColumn del gridview) que genera el CRUD para mostrar los detalles.

Espero te sea de utilidad mi comentario.

Saludos!.


Gracias por tu respuesta! De casualidad tendras algun ejemplo o algun sitio donde se explique como realizarlo? Es que con lo que es detalles y ajax soy muy nuevo...

Saludos!
0

#4 User is offline   cesariux23 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 16-August 12

Posted 20 November 2012 - 03:40 PM

Busca en yiiplayground.com.. tiene un ejemplo de ajax/jquery te puede dar una idea, si tengo un poco mas de tiempo tratare de hacerte un ejemnplo

Saludos!.
0

#5 User is offline   cesariux23 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 16-August 12

Posted 22 November 2012 - 02:01 PM

Va el ejemplo

Tabla factura:

+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| numero | int(11) | NO | PRI | NULL | auto_increment |
| fecha | date | NO | | NULL | |
| concepto | varchar(45) | NO | | NULL | |
| total | varchar(45) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+

con los siguientes valores:

mysql> select * from factura;
+--------+------------+-----------+---------+
| numero | fecha | concepto | total |
+--------+------------+-----------+---------+
| 1 | 2012-11-22 | GASOLINA | $300.00 |
| 2 | 2012-11-22 | ALIMNETOS | $250.00 |
+--------+------------+-----------+---------+

Genera el modelo y el CRUD para factura con Gii.

Para efectos prácticos la consulta se realizará desde site/index (inicio)

vista site/index

index.php :

<?php $this->pageTitle=Yii::app()->name; 


//se agrega el script que envia la petición y muestra el resultado en el div
Yii::app()->clientScript->registerScript('busqueda', "

//cuando se haga el submit del formilario fbusqueda
$('#fbusqueda').submit(function(){
	//se hace via ajax
	$.ajax({
        type: 'GET',
        url: $(this).attr('action'),    //factura/getdetalles
        data:$(this).serialize(),       //se envia el contenido del formulario
        success: function(html){        //si es correcto
            $('#resultado').html('');   //se limpia el div 'resultado'
            $('#resultado').html(html); //se llena con el resultado devuelto
        },
    });
    return false;   //no se completa el submit, ya que se hizo via ajax
});
");
?>

<h1>Buscar factura</h1>

<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'fbusqueda',                                      //id del formulario
	'action'=>Yii::app()->createUrl('factura/getdetalles'), //metodo en el controlador factura para mostrar los detalles
	'method'=>'get',                                        
)); ?>

	<div class="row">
		<?php echo 'Número de factura:'; ?>
		<?php echo $form->textField($model,'numero'); ?>
	</div>

	<div class="row buttons">
		<?php echo CHtml::submitButton('Buscar'); ?>
	</div>

<?php $this->endWidget(); ?>

</div><!-- form -->

<!-- Div que muestra el resultado de la busqueda -->
<div id="resultado">

<i>Ingrese el número de factura</i>

</div>


En el controlador FacturaController agrega una función llamada 'ActionGetdetalles' y agregala a las reglas de acceso de acuerdo a tus necesidades, en el ejemplo se le permite a cualquier persona.

FacturaController.php :

<?php

class FacturaController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view', 'getdetalles'), //se agrega 'getdetalles' para tener acceso
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new Factura;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Factura']))
		{
			$model->attributes=$_POST['Factura'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->numero));
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Factura']))
		{
			$model->attributes=$_POST['Factura'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->numero));
		}

		$this->render('update',array(
			'model'=>$model,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$this->loadModel($id)->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Factura');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Factura('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Factura']))
			$model->attributes=$_GET['Factura'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=Factura::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='factura-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
	
	//envía una vista con los detalles de la factura
	public function actionGetdetalles(){
		//se valida que se recibe algo
		if(isset($_GET['Factura']))
			$model=Factura::model()->findByPk($_GET['Factura']['numero']);
		//si NO se encuentra la factura
		if($model===null)
		// se manda un mensaje de error
		echo '<div class="flash-notice">No se encontro la factura</div>';
		else
		//se hace un renderpartial con la vista 'view' con el la factura encontrada
		$this->renderPartial('view',array(
			'model'=>$model,
		));
		
	}		
}



Espero sea de tu utilidad.

Saludos!.
0

#6 User is offline   rotceh07 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 13-November 12

Posted 26 November 2012 - 05:53 PM

View Postcesariux23, on 22 November 2012 - 02:01 PM, said:

Va el ejemplo

Tabla factura:

+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| numero | int(11) | NO | PRI | NULL | auto_increment |
| fecha | date | NO | | NULL | |
| concepto | varchar(45) | NO | | NULL | |
| total | varchar(45) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+

con los siguientes valores:

mysql> select * from factura;
+--------+------------+-----------+---------+
| numero | fecha | concepto | total |
+--------+------------+-----------+---------+
| 1 | 2012-11-22 | GASOLINA | $300.00 |
| 2 | 2012-11-22 | ALIMNETOS | $250.00 |
+--------+------------+-----------+---------+

Genera el modelo y el CRUD para factura con Gii.

Para efectos prácticos la consulta se realizará desde site/index (inicio)

vista site/index

index.php :

<?php $this->pageTitle=Yii::app()->name; 


//se agrega el script que envia la petición y muestra el resultado en el div
Yii::app()->clientScript->registerScript('busqueda', "

//cuando se haga el submit del formilario fbusqueda
$('#fbusqueda').submit(function(){
	//se hace via ajax
	$.ajax({
        type: 'GET',
        url: $(this).attr('action'),    //factura/getdetalles
        data:$(this).serialize(),       //se envia el contenido del formulario
        success: function(html){        //si es correcto
            $('#resultado').html('');   //se limpia el div 'resultado'
            $('#resultado').html(html); //se llena con el resultado devuelto
        },
    });
    return false;   //no se completa el submit, ya que se hizo via ajax
});
");
?>

<h1>Buscar factura</h1>

<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'fbusqueda',                                      //id del formulario
	'action'=>Yii::app()->createUrl('factura/getdetalles'), //metodo en el controlador factura para mostrar los detalles
	'method'=>'get',                                        
)); ?>

	<div class="row">
		<?php echo 'Número de factura:'; ?>
		<?php echo $form->textField($model,'numero'); ?>
	</div>

	<div class="row buttons">
		<?php echo CHtml::submitButton('Buscar'); ?>
	</div>

<?php $this->endWidget(); ?>

</div><!-- form -->

<!-- Div que muestra el resultado de la busqueda -->
<div id="resultado">

<i>Ingrese el número de factura</i>

</div>


En el controlador FacturaController agrega una función llamada 'ActionGetdetalles' y agregala a las reglas de acceso de acuerdo a tus necesidades, en el ejemplo se le permite a cualquier persona.

FacturaController.php :

<?php

class FacturaController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view', 'getdetalles'), //se agrega 'getdetalles' para tener acceso
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new Factura;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Factura']))
		{
			$model->attributes=$_POST['Factura'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->numero));
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Factura']))
		{
			$model->attributes=$_POST['Factura'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->numero));
		}

		$this->render('update',array(
			'model'=>$model,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$this->loadModel($id)->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Factura');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Factura('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Factura']))
			$model->attributes=$_GET['Factura'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=Factura::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='factura-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
	
	//envía una vista con los detalles de la factura
	public function actionGetdetalles(){
		//se valida que se recibe algo
		if(isset($_GET['Factura']))
			$model=Factura::model()->findByPk($_GET['Factura']['numero']);
		//si NO se encuentra la factura
		if($model===null)
		// se manda un mensaje de error
		echo '<div class="flash-notice">No se encontro la factura</div>';
		else
		//se hace un renderpartial con la vista 'view' con el la factura encontrada
		$this->renderPartial('view',array(
			'model'=>$model,
		));
		
	}		
}



Espero sea de tu utilidad.

Saludos!.


Gracias por tu ayuda!
0

#7 User is offline   Hipogea 

  • Newbie
  • Yii
  • Group: Validating
  • Posts: 3
  • Joined: 13-April 12

Posted 14 December 2012 - 06:53 PM

View Postcesariux23, on 22 November 2012 - 02:01 PM, said:

Va el ejemplo

Tabla factura:

+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| numero | int(11) | NO | PRI | NULL | auto_increment |
| fecha | date | NO | | NULL | |
| concepto | varchar(45) | NO | | NULL | |
| total | varchar(45) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+

con los siguientes valores:

mysql> select * from factura;
+--------+------------+-----------+---------+
| numero | fecha | concepto | total |
+--------+------------+-----------+---------+
| 1 | 2012-11-22 | GASOLINA | $300.00 |
| 2 | 2012-11-22 | ALIMNETOS | $250.00 |
+--------+------------+-----------+---------+

Genera el modelo y el CRUD para factura con Gii.

Para efectos prácticos la consulta se realizará desde site/index (inicio)

vista site/index

index.php :

<?php $this->pageTitle=Yii::app()->name; 


//se agrega el script que envia la petición y muestra el resultado en el div
Yii::app()->clientScript->registerScript('busqueda', "

//cuando se haga el submit del formilario fbusqueda
$('#fbusqueda').submit(function(){
	//se hace via ajax
	$.ajax({
        type: 'GET',
        url: $(this).attr('action'),    //factura/getdetalles
        data:$(this).serialize(),       //se envia el contenido del formulario
        success: function(html){        //si es correcto
            $('#resultado').html('');   //se limpia el div 'resultado'
            $('#resultado').html(html); //se llena con el resultado devuelto
        },
    });
    return false;   //no se completa el submit, ya que se hizo via ajax
});
");
?>

<h1>Buscar factura</h1>

<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'fbusqueda',                                      //id del formulario
	'action'=>Yii::app()->createUrl('factura/getdetalles'), //metodo en el controlador factura para mostrar los detalles
	'method'=>'get',                                        
)); ?>

	<div class="row">
		<?php echo 'Número de factura:'; ?>
		<?php echo $form->textField($model,'numero'); ?>
	</div>

	<div class="row buttons">
		<?php echo CHtml::submitButton('Buscar'); ?>
	</div>

<?php $this->endWidget(); ?>

</div><!-- form -->

<!-- Div que muestra el resultado de la busqueda -->
<div id="resultado">

<i>Ingrese el número de factura</i>

</div>


En el controlador FacturaController agrega una función llamada 'ActionGetdetalles' y agregala a las reglas de acceso de acuerdo a tus necesidades, en el ejemplo se le permite a cualquier persona.

FacturaController.php :

<?php

class FacturaController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view', 'getdetalles'), //se agrega 'getdetalles' para tener acceso
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new Factura;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Factura']))
		{
			$model->attributes=$_POST['Factura'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->numero));
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Factura']))
		{
			$model->attributes=$_POST['Factura'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->numero));
		}

		$this->render('update',array(
			'model'=>$model,
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$this->loadModel($id)->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Factura');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Factura('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Factura']))
			$model->attributes=$_GET['Factura'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=Factura::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='factura-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
	
	//envía una vista con los detalles de la factura
	public function actionGetdetalles(){
		//se valida que se recibe algo
		if(isset($_GET['Factura']))
			$model=Factura::model()->findByPk($_GET['Factura']['numero']);
		//si NO se encuentra la factura
		if($model===null)
		// se manda un mensaje de error
		echo '<div class="flash-notice">No se encontro la factura</div>';
		else
		//se hace un renderpartial con la vista 'view' con el la factura encontrada
		$this->renderPartial('view',array(
			'model'=>$model,
		));
		
	}		
}



Espero sea de tu utilidad.

Saludos!.


Eso esta bien, sin embargo , lapregunta va orientada a "simular" , los formularios de las aplicaiones Escritorio, en especial los eventos de los controles, y en esto un detalle que no tengo idea de como hacerlo, pero tengo la seguridad qeu YII, posse herramientas para hacerlo :

Por ejemplo en el detalle, solo con colocar el codigo de un producto y presionar ENTER , inmediatamente me pinta su descripcion y su precio. Perfecto, esto se puede hacer con AJAX, sin embargo colocar al Text Input una ayuda (Matchcode) , al estilo del "CJuiDatePicker " pero en lugar de mostrar las fechas a elegir , mostrar el catalogo de productos x por ejemplo en una ventana modal con sus repectivas opciones para filtrar los datos hasta hallar el codigo buscado, al momento de selccionar el valor la venta desaprece y retora el codigo selccionado, la pinta en el inputtext. ¿Que herreminatas me recomiendan?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users