static function regeneraOrdenes($idEscaparate) { $escaparate = new Escaparates($idEscaparate); $ordenes = new OrdenesArticulos(); $ordenes->borraOrdenesRegla($idEscaparate); unset($ordenes); $escaparate->aplicaRegla(); unset($escaparate); }
/** * Marco de borrado el artículo y borro sus eventuales órdenes. * * Cuando borramos un artículo cambiamos el código para poder reutilizarlo. * De forma que si el código era 043, ahora se llama deleted043, * y entonces podemos volver a dar de alta otro artículo con código 043. * * @return boolean */ public function delete() { $ok = $this->validaBorrado(); if ($ok) { $id = $this->IDArticulo; $this->setCodigo("deleted_{$this->IDArticulo}_{$this->Codigo}"); $this->save(); $ok = parent::delete(); if ($ok) { // Borro los eventuales ordenes que existieran para el artículo $ordenes = new OrdenesArticulos(); $ordenes->borraOrdenesArticulo($id); unset($ordenes); // Borro las eventuales propiedades $propiedades = new ArticulosPropiedades(); $propiedades->queryDelete("IDArticulo='{$id}'"); unset($propiedades); // Borro el eventual escandallo if ($this->AllowsChildren == '0') { $escan = new ArticulosEscandallos(); $escan->queryDelete("IDArticuloOrigen='{$id}'"); unset($escan); } } } return $ok; }
/** * Aplica la regla $idRegla, que consiste * en crear las entradas en la tabla ErpOrdenesArticulos de los articulos * que cumplan las condiciones de la regla * * La regla no se aplicará a los artículos que no estén vigentes * La regla se aplicará a los artículos publish si y publish no * * Si no se indica $idRegla, se aplicará la regla en curso * * @param int $idRegla El id de la regla a aplicar * @return void */ public function aplicaRegla($idRegla = '') { $regla = $idRegla == '' ? $this : new Escaparates($idRegla); if ($regla->IDLote > 0) { $lote = new LotesWeb($regla->IDLote); foreach ($lote->getArrayObjetosArticulos() as $articulo) { $filtroLote .= "IDArticulo='{$articulo->getPrimaryKeyValue()}' OR "; } $filtroLote = "(" . substr($filtroLote, 0, -4) . ")"; } else { $filtroLote = "(1)"; } $filtroEstado = $regla->IDEstado > 0 ? "(IDEstado1='{$regla->IDEstado}' OR IDEstado2='{$regla->IDEstado}' OR IDEstado3='{$regla->IDEstado}' OR IDEstado4='{$regla->IDEstado}' OR IDEstado5='{$regla->IDEstado}')" : "(1)"; $filtroMarca = $regla->IDFabricante > 0 ? "(IDFabricante='{$regla->IDFabricante}')" : "(1)"; $filtroCategoria = $regla->IDCategoria > 0 ? "(IDCategoria='{$regla->IDCategoria}')" : "(1)"; $filtroFamilia = $regla->IDFamilia > 0 ? "(IDFamilia='{$regla->IDFamilia}')" : "(1)"; $filtroSubfamilia = $regla->IDSubfamilia > 0 ? "(IDSubfamilia='{$regla->IDSubfamilia}')" : "(1)"; $filtroAdicional = $regla->Filtro != '' ? "({$filtroAdicional})" : "(1)"; $filtro = "(Vigente='1') AND {$filtroLote} AND {$filtroEstado} AND {$filtroMarca} AND {$filtroCategoria} AND {$filtroFamilia} AND {$filtroSubfamilia} AND {$filtroAdicional}"; //echo $filtro; $articulo = new Articulos(); $rows = $articulo->cargaCondicion("IDArticulo,Descripcion", $filtro); unset($articulo); foreach ($rows as $row) { $orden = new OrdenesArticulos(); $orden->setIdRegla($regla->Id); $orden->setIDArticulo($row["IDArticulo"]); $orden->setObservations($row['Descripcion']); $orden->create(); } unset($orden); }