/** * 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; }