public function Existencias()
 {
     $nItems = 0;
     $nErrores = 0;
     $dbLink = mysql_connect("localhost", "root", "albatronic");
     $query = "TRUNCATE {$this->dbDestino}.ErpExistencias";
     mysql_query($query);
     $query = "select e.*,a.IDArticulo as id from {$this->dbOrigen}.existencias e left join {$this->dbDestino}.ErpArticulos a on e.IDArticulo=a.Codigo";
     $result = mysql_query($query, $dbLink);
     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
         $e = new Existencias();
         $e->setIDAlmacen($row['IDSucursal']);
         $e->setIDArticulo($row['id']);
         $e->setReales($row['Reales']);
         $e->setReservadas($row['Reservadas']);
         $e->setEntrando($row['Entrando']);
         $e->setMaximo($row['Maximo']);
         $e->setMinimo($row['Minimo']);
         $id = $e->create();
         if (!$id) {
             $errores[] = $e->getErrores();
             $nErrores++;
         } else {
             $e->setPrimaryKeyMD5(md5($id));
             $e->save();
             $nItems++;
         }
     }
     echo "Existencias {$nItems}<br/>";
     if (count($errores)) {
         echo "<pre>";
         print_r($errores);
         echo "</pre>";
     }
 }
Example #2
0
 /**
  * Genera un movimiento de almacén y actualiza el stock
  *
  * No se creará movimiento de almacén y por lo tanto tampoco se actualizarán existencias:
  *
  *  * si el artículo no está sujeto a control de inventario
  *
  *  * si el almacén está sujeto a control de ubicaciones y no se ha indicado ninguna
  *
  *  * si el artículo está sujeto a control de trazabilidad y no se ha indicado ningún lote
  *
  *  * si no hay existencias suficientes y el artículo bloquea stock
  *
  * @param string $documento El literal que identifica el controlador que provoca el movimiento
  * @param string $signo El signo que tendrá el movimiento (E = Entrada, S = Salida)
  * @param integer $idDocumento El id del documento que provoca el movimiento (albaran, pedido, traspaso, inventario, etc)
  * @param integer $idAlmacen El id del almacén
  * @param integer $idArticulo El id del articulo
  * @param integer $idLote El id del lote
  * @param integer $idUbicacion El id de la ubicacion
  * @param integer $flagDeposito Indica si el movimineto se ha de realizar contra stock de deposito o no (0, 1)
  * @param array $valores Array con los valores a actualizar
  * @return boolean Si el artículo no está sujeto a inventario devuelve TRUE, en caso contrario devuelve TRUE o FALSE dependiendo del éxito de la operación
  */
 public function genera($documento, $signo, $idDocumento, $idAlmacen, $idArticulo, $idLote, $idUbicacion, $flagDeposito, array $valores)
 {
     $ok = false;
     $articulo = new Articulos($idArticulo);
     // Si el artículo está sujeto a inventario
     if ($articulo->getInventario()->getIDTipo()) {
         $tipoMvto = new TiposMvtosAlmacen();
         $row = $tipoMvto->cargaCondicion("Id,Signo", "TipoDocumento='{$documento}' and Signo='{$signo}'");
         unset($tipoMvto);
         $idTipo = $row[0]['Id'];
         $signo = $row[0]['Signo'];
         if ($signo) {
             if ($valores['UM'] == '') {
                 $valores['UM'] = 'UMA';
             }
             $this->setIDTipo($idTipo);
             $this->setIDAlmacen($idAlmacen);
             $this->setIDArticulo($idArticulo);
             $this->setIDLote($idLote);
             $this->setIDUbicacion($idUbicacion);
             $this->setIDDocumento($idDocumento);
             switch ($signo) {
                 case 'E':
                     $this->setUnidadesE($articulo->convertUnit($valores['UM'], 'UMA', $valores['Reales']));
                     $this->setPalesE($valores['Pales']);
                     $this->setCajasE($valores['Cajas']);
                     break;
                 case 'S':
                     $this->setUnidadesS($articulo->convertUnit($valores['UM'], 'UMA', $valores['Reales']));
                     $this->setPalesS($valores['Pales']);
                     $this->setCajasS($valores['Cajas']);
                     break;
             }
             if ($this->validaMovimiento($signo)) {
                 if (parent::create()) {
                     if ($signo == 'S') {
                         $valores['Reales'] = -1 * $valores['Reales'];
                         $valores['Pales'] = -1 * $valores['Pales'];
                         $valores['Cajas'] = -1 * $valores['Cajas'];
                     }
                     $ok = true;
                     $exi = new Existencias();
                     $exi->actualiza($idAlmacen, $idArticulo, $idLote, $idUbicacion, $flagDeposito, $valores);
                     $this->_errores = $exi->getErrores();
                     unset($exi);
                 } else {
                     print_r($this->_errores);
                 }
             } else {
                 print_r($this->_errores);
             }
         } else {
             "NO SE HA DEFINIDIO EL TIPO DE MOVIMIENTO DE ALMACEN";
         }
     } else {
         $ok = true;
     }
     unset($articulo);
     return $ok;
 }