public function listAction($idArticuloOrigen = '') { if ($idArticuloOrigen == '') { $idArticuloOrigen = $this->request[2]; } $articulo = new ArticulosEscandallos(); $rows = $articulo->cargaCondicion("*", "IDArticuloOrigen='{$idArticuloOrigen}' and IDArticuloDestino>0", "Id ASC"); $totales = $articulo->cargaCondicion("*", "IDArticuloOrigen='{$idArticuloOrigen}' and IDArticuloDestino=0"); unset($articulo); $escandallo[] = new ArticulosEscandallos(); foreach ($rows as $row) { $escandallo[] = new ArticulosEscandallos($row['Id']); } $this->values['articulos'] = $escandallo; if ($totales[0]['Id']) { $this->values['totales'] = new ArticulosEscandallos($totales[0]['Id']); } $this->values['IDArticuloOrigen'] = $idArticuloOrigen; $this->values['articuloOrigen'] = new Articulos($idArticuloOrigen); // Si hay existencias del articulo origen, no permito cambiar su escandallo $existencias = new Existencias(); $this->values['bloqueo'] = $existencias->hayRegistroExistencias($idArticuloOrigen); unset($existencias); return array('template' => $this->entity . '/index.html.twig', 'values' => $this->values); }
/** * Si hay stock no se puede cambiar el estado de inventario ni las unidades de medida * Si las unidades de media son iguales, los factores de conversión los pongo a 1 * Calculo el precio de venta sobre EL PRECIO MEDIO DE COSTO * Si columna 'etiqueta' está vacía, le pongo valor de la descripción del artículo */ protected function validaLogico() { parent::validaLogico(); // Si hay stock no se puede cambiar: // - ni el estado de inventario // - ni las unidades de medida // - ni si es compuesto o no $exi = new Existencias(); if ($exi->hayRegistroExistencias($this->IDArticulo)) { // Hay registro de existencias $articulo = new Articulos($this->IDArticulo); $this->setInventario($articulo->getInventario()->getIDTipo()); $this->setUMA($articulo->getUMA()->getId()); $this->setUMC($articulo->getUMC()->getId()); $this->setUMV($articulo->getUMV()->getId()); $this->setAllowsChildren($articulo->getAllowsChildren()->getIDTipo()); unset($articulo); $this->_alertas[] = "Hay Stock, no puede cambiar ni el estado de Inventario ni las Unidades de Medida, ni si es compuesto"; } else { // Si no es inventariable, pongo los valores relativos // al inventario a 0. if ($this->Inventario == 0) { $this->Trazabilidad = 0; $this->BloqueoStock = 0; $this->StockMinimo = 0; $this->StockMaximo = 0; $this->Caducidad = 0; } // Si las unidades de media son iguales, los factores de conversión los pongo a 1 if ($this->UMC == $this->UMB) { $this->CUMC = 1; } if ($this->UMA == $this->UMB) { $this->CUMA = 1; } if ($this->UMV == $this->UMB) { $this->CUMV = 1; } } // Calculo el precio de venta sobre EL PRECIO MEDIO DE COSTO if ($this->Pmc == 0) { $this->Pmc = $this->Pvd; } if ($this->Pmc != 0) { $this->Pvp = $this->Pmc * (1 + $this->Margen / 100); } // Pongo valores por defecto if (trim($this->CodigoEAN == '')) { $this->CodigoEAN = $this->Codigo; } if (trim($this->Subtitulo == '')) { $this->Subtitulo = $this->Descripcion; } if (trim($this->Resumen == '')) { $this->Resumen = $this->Descripcion; } if (trim($this->Etiqueta == '')) { $this->Etiqueta = substr($this->Descripcion, 0, 29); } // Valido que no se dupliquen los estados $valida = array(); for ($i = 1; $i <= 5; $i++) { $idEstado = $this->{"IDEstado{$i}"}; if (isset($valida[$idEstado])) { $this->{"IDEstado{$i}"} = 0; } else { $valida[$idEstado] = '1'; } } // Si no está vigente, entonces tampoco se publica if (!$this->Vigente) { $this->Publish = 0; } unset($exi); }