Example #1
0
 /**
  * Guardo y aplico las reglas de ordenación si está vigente
  * 
  * @return boolean
  */
 public function save()
 {
     $reglas = new Escaparates();
     // reglas antes de guardar
     $reglasAntes = $reglas->getReglasArticulo($this->IDArticulo);
     $ok = parent::save();
     if ($ok) {
         // Se recalculan las reglas solo en el caso en que haya algún cambio.
         // Para ello comparo las reglas del artículo antes y despues de guardar.
         $reglasNuevas = $reglas->getReglasArticulo($this->IDArticulo);
         $diferenciaReglas1 = array_diff($reglasAntes, $reglasNuevas);
         $diferenciaReglas2 = array_diff($reglasNuevas, $reglasAntes);
         if (count($diferenciaReglas1) + count($diferenciaReglas2) > 0) {
             // Borro los eventuales ordenes que existieran para el artículo
             $ordenes = new OrdenesArticulos();
             $ordenes->borraOrdenesArticulo($this->IDArticulo);
             unset($ordenes);
             // Aplico las reglas de ordenes
             if ($this->Vigente == '1') {
                 $reglas = new Escaparates();
                 $reglas->aplicaReglasArticulo($this->IDArticulo);
                 unset($reglas);
             }
         }
         // Borro el eventual escandallo
         if ($this->AllowsChildren == '0') {
             $escan = new ArticulosEscandallos();
             $escan->queryDelete("IDArticuloOrigen='{$this->IDArticulo}'");
             unset($escan);
         }
     }
     return $ok;
 }