[Resuelto] Adicionar Registro Antes De Guardar

Hola comunidad, tengo un problema y quiero me ayuden a solucionarlo, agradeciendo de antemano por sus sugerencias que me puedan brindar.

El problema es que tengo una tabla psubcostos, donde guardo los precios de costos de los productos, estos se modifican por diferentes causas mensualmente, o sea en esa tabla tengo todos los productos con sus precios de costos para todas la fábricas de la empresa, cuando yo modifico los precios de costos, el precio modificado lo quiero guardar en una tabla pcosto, esa tabla es un histórico, donde deben aparecer todos los precios modificados en psubcostos, el problema es que cuando modifico un precio se guarda en la tabla pcosto el modificado, no el que tenia antes de modificar y el que necesito es el que modifique, o sea si tenia en el campo PrCosto un valor de 14.21 y lo modifico por 15.52 el que quiero guardar en pcosto es 14.21 y no 15.52 que es el que se esta guardando.

Aclaro que las tablas están relacionadas por los campos necesarios:

Aquí envío el controlador de psubcostos con lo que hice:




public function actionUpdate($id)

	{

		$model=$this->loadModel($id);


		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if(isset($_POST['Psubcostos']))

		{

			$model->attributes=$_POST['Psubcostos'];

			if($model->save()){

                        	

                        	$criteria=new CDbCriteria;                                    	

                        	$criteria->addCondition('CodPVen=:codpven');

                        	$criteria->addCondition('Codprod=:codigo');  

                        	$criteria->params=array(':codpven'=>$model->CodPVen, ':codigo'=>$model->Codprod);			

                        	$objSubmp = Submayorprod::model()->find($criteria);

                                                                          	

                        	$pcosto = new Pcostos;

                        	$pcosto->CodPVen = $model->CodPVen;  //Punto de Venta

                        	$pcosto->Codprod = $model->Codprod;  // Código del Producto  

                        	$pcosto->fecha = date('Y-m-d'); //Fecha de la modificación

                        	$pcosto->PrCosto = $model->PrCosto; //Precio de costo

                        	$pcosto->SaldoA = $objSubmp->SaldoAct; //Saldo que tenia el producto a la hora de modificar precio de Costo

                        	$pcosto->save();  //aquí salvo

                        	

				$this->redirect(array('view','id'=>$model->id));

                    	}    	

		}


		$this->render('update',array(

			'model'=>$model,

		));

	}



Al salvar lleno en la tabla pcostos estos datos(Punto de Venta, Producto, fecha de la modificación, Precio de Costos y saldo que tenia al hacer el cambio), yo se que el problema esta en que salvo despues de hacer la modificación, pero no se como salvar antes y después hacer la modificación, espero me ayuden con esto.

Asigna los datos necesarios antes de actualizarlos, esto es una idea:




if(isset($_POST['Psubcostos'])) {

    $model->attributes=$_POST['Psubcostos'];

	

    $pcosto = new Pcostos;

    $pcosto->CodPVen = $model->CodPVen;  //Punto de Venta

    $pcosto->Codprod = $model->Codprod;  // Código del Producto  

    $pcosto->fecha = date('Y-m-d'); //Fecha de la modificación

    $pcosto->PrCosto = $model->PrCosto; //Precio de costo


	if($model->save()){	        

	    $criteria=new CDbCriteria;                                      

	    $criteria->addCondition('CodPVen=:codpven');

	    $criteria->addCondition('Codprod=:codigo');  

	    $criteria->params=array(':codpven'=>$model->CodPVen, ':codigo'=>$model->Codprod);                       

	    $objSubmp = Submayorprod::model()->find($criteria);

	                                                    

	    $pcosto->SaldoA = $objSubmp->SaldoAct; //Saldo que tenia el producto a la hora de modificar precio de Costo

	    $pcosto->save();  //aquí salvo

	    

	    $this->redirect(array('view','id'=>$model->id));

	}       

}



<_<

Hola Daniel Galvan gracias por la respuesta pero me sigue guardando el nuevo

Como te mencione es solo una idea, sin conocer a detalle tu modelo de datos o tus validaciones, algo como lo siguiente podrias hacer:





if(isset($_POST['Psubcostos'])) {

    $model->attributes=$_POST['Psubcostos'];


    // consulta los datos originales antes de ser modificados

    $model_antes_de_modificar = Psubcostos::model()->findByPk($model->llave_primaria_de_Psubcostos);


    // asigna los datos que requieres se mantegan de los datos antes de ser modificados o de los datos que trae tu variable POST

    $pcosto = new Pcostos;

    $pcosto->CodPVen = $model->CodPVen;  //Punto de Venta

    $pcosto->Codprod = $model->Codprod;  // Código del Producto  

    $pcosto->fecha = date('Y-m-d'); //Fecha de la modificación

    $pcosto->PrCosto = $model_antes_de_modificar->PrCosto; //Precio de costo


        if($model->save()){             

        $criteria=new CDbCriteria;                                      

        $criteria->addCondition('CodPVen=:codpven');

        $criteria->addCondition('Codprod=:codigo');  

        $criteria->params=array(':codpven'=>$model->CodPVen, ':codigo'=>$model->Codprod);                       

        $objSubmp = Submayorprod::model()->find($criteria);

                                                        

        $pcosto->SaldoA = $objSubmp->SaldoAct; //Saldo que tenia el producto a la hora de modificar precio de Costo

        $pcosto->save();  //aquí salvo

        

        $this->redirect(array('view','id'=>$model->id));

        }       

}



:)

Ok Gracias Daniel Galvan fue muy valiosa tu ayuda ya se resolvió

Que bien que te sirvio. Si me das un +1 se le agradecera.

Saludos,