Ejemplo n.º 1
0
 public function hubocambiodetalle($id)
 {
     $difiere = false;
     ///Asumismos que no ha variado
     $nombreclasepadre = $this->modelopadre;
     //Obtiene la matriz de relaciones del modelo padre
     //recorriendo los modelos o clase hijas , puede haber mas de una OJO
     foreach ($this->modeloshijos as $nombreclasehija => $nombreclasetemporal) {
         //Obteniendo dinamicamente el campo enlace para cada modelo hijo
         $campoenlace = $this->getFieldLink($nombreclasetemporal);
         $registrosoriginales = MiFactoria::getRegistrosHijos($nombreclasehija, $campoenlace, $id);
         $registrostemporales = MiFactoria::getRegistrosHijos($nombreclasetemporal, $campoenlace, $id);
         //if (count($registrostemporales)==0)
         //throw new CHttpException(500,'nos e hallaron resgistros tremporal.');
         ///Recorriendo los registro originales
         if (count($registrostemporales) == count($registrosoriginales)) {
             foreach ($registrosoriginales as $roworiginal) {
                 $roworiginal->setScenario("buffer");
                 //echo "  Recorriendo el grupo de regsitros originales(".count($registrosoriginales).")    registros temporales (".count($registrostemporales).") :  <br> ";
                 foreach ($registrostemporales as $rowtemporal) {
                     // ECHO " VERIFICAND CULA CORREPSODNE A CUAL ...<BR>";
                     //echo "id original ".$roworiginal->attributes['id']."   -     id temporal  ".$rowtemporal->attributes['id']."<br>";
                     if ($roworiginal->attributes['id'] == $rowtemporal->attributes['id']) {
                         //Si son correspondientes
                         foreach ($roworiginal->getSafeAttributeNames() as $clave => $nombrecampo) {
                             //echo  "( ".$roworiginal->getScenario()."   ".$roworiginal->id.") El registro original  : ".$nombrecampo." ".$roworiginal->{$nombrecampo}."  es igual a   temporal? :".$nombrecampo."   :  ".$rowtemporal->{$nombrecampo}."<br>";
                             // throw new CHttpException(500,"  Se hallo diferencia El registro original  : ".$nombrecampo." ".$valorcampo."  es igual a?   temporal :".$rowtemporal->attributes[$nombrecampo]."<br>");
                             if ($rowtemporal->{$nombrecampo} != $roworiginal->{$nombrecampo} and $nombrecampo != 'id' and $nombrecampo != 'idtemp' and $nombrecampo != 'idstatus' and $nombrecampo != 'idusertemp') {
                                 //echo  "El registro original  : ".$nombrecampo." ".$roworiginal->{$nombrecampo}."  es igual a   temporal? :".$nombrecampo."   :  ".$rowtemporal->{$nombrecampo}."<br>";
                                 // throw new CHttpException(500,"  Se hallo diferencia El registro original  : ".$nombrecampo." ".$valorcampo."  es igual a?   temporal :".$rowtemporal->attributes[$nombrecampo]."<br>");
                                 $difiere = true;
                                 break;
                             }
                         }
                         //find de bucle de campos en cada fila
                     }
                     unset($rowtemporal);
                     if ($difiere) {
                         break;
                     }
                 }
                 unset($roworiginal);
                 if ($difiere) {
                     break;
                 }
             }
             ///fin del bucle del modelo
         } else {
             $difiere = true;
         }
         unset($registrostemporales);
         unset($registrosoriginales);
         if ($difiere) {
             break;
         }
     }
     //Fin del bucle de los modelos hijos
     //yii::app()->end();
     return $difiere;
 }