示例#1
0
 static function regeneraOrdenes($idEscaparate)
 {
     $escaparate = new Escaparates($idEscaparate);
     $ordenes = new OrdenesArticulos();
     $ordenes->borraOrdenesRegla($idEscaparate);
     unset($ordenes);
     $escaparate->aplicaRegla();
     unset($escaparate);
 }
示例#2
0
 /**
  * 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;
 }
示例#3
0
 /**
  * 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);
 }