Версия: 6.x
burger close
Класс InventoryManager
Граф наследования:InventoryManager:
StockInterface

Открытые члены

 updateStocks ($items, $warehouse_id, $old_items=null, $old_warehouse=null)
 
 revertItems ($items, $warehouse_id)
 
 recalculateStocks ($item, $warehouse_id)
 
 recalculateStartNum ($item, $warehouse_id)
 
 updateRemainsFromOrder (\Shop\Model\Orm\Order $order, $flag, $old_warehouse=null)
 
 getNum ($amounts)
 
 getAmountByDocuments ($product_id, $offer_id, $warehouse_id, $products_orm=null, $add_start_num=true)
 
 getAmountByDocumentsAsOf ($product_id, $offer_id, $warehouse_id, $date, $exclude_document_ids=[], $products_orm=null, $add_start_num=true)
 
 getAmountsByDocumentsAsOfBatch ($pairs, $warehouse_id, $date, $exclude_document_ids=[])
 
 isDateBeforeArchivedData ($product_id, $offer_id, $warehouse_id, $date)
 
 getArchivedMaxDates ($pairs, $warehouse_id)
 
 getStartNums ($product_id, $offer_id=null, $warehouse_id=null)
 
 getStockSum ($product_id, $offer_id=null)
 
- Открытые члены унаследованные от StockInterface
 updateRemainsFromOrder (Order $order, $flag, $old_warehouse=null)
 

Методы

getAmountByDocuments (   $product_id,
  $offer_id,
  $warehouse_id,
  $products_orm = null,
  $add_start_num = true 
)

Получить количетво комплектации товара исходя из документов

Аргументы
integer$product_id- id товара
integer$offer_id- id комплектации
integer$warehouse_id- id склада
Возвращает
array
getAmountByDocumentsAsOf (   $product_id,
  $offer_id,
  $warehouse_id,
  $date,
  $exclude_document_ids = [],
  $products_orm = null,
  $add_start_num = true 
)

Получить количество комплектации товара исходя из документов, действовавших на указанную дату

Аргументы
integer$product_id- id товара
integer$offer_id- id комплектации
integer$warehouse_id- id склада
string$date- дата, на которую считаем (документы позже неё не учитываются)
array$exclude_document_ids- id документов, которые нужно исключить из расчёта (собственные связанные приход/списание пересчитываемой инвентаризации)
$products_orm
bool$add_start_num
Возвращает
array
getAmountsByDocumentsAsOfBatch (   $pairs,
  $warehouse_id,
  $date,
  $exclude_document_ids = [] 
)

Групповая версия getAmountByDocumentsAsOf().

Аргументы
array$pairs- [['product_id'=>,'offer_id'=>], ...]
integer$warehouse_id- id склада
string$date- дата, на которую считаем (документы позже неё не учитываются)
array$exclude_document_ids- id документов, которые нужно исключить из расчёта
Возвращает
array - [product_id.'|'.offer_id => ['remains_sum'=>,'waiting_sum'=>,'reserve_sum'=>]]
getArchivedMaxDates (   $pairs,
  $warehouse_id 
)

Групповая версия isDateBeforeArchivedData(). Одним запросом получает максимальную дату архивных документов сразу для набора пар товар+комплектация на одном складе.

Аргументы
array$pairs- [['product_id'=>,'offer_id'=>], ...]
integer$warehouse_id- id склада
Возвращает
array - [product_id.'|'.offer_id => max_date]
getNum (   $amounts)

Расчитывает доступное количество товара из заданной формулы

Аргументы
array$amounts- массив со значениями: резервирования, ожидания, остатки.
Возвращает
float
getStartNums (   $product_id,
  $offer_id = null,
  $warehouse_id = null 
)

Получить остатки товара в архиве

Аргументы
integer$product_id- id товара
integer$offer_id- id комплектации
integer$warehouse_id- id склада
Возвращает
bool|array
getStockSum (   $product_id,
  $offer_id = null 
)

Получить сумму остатков товара или комплектации из таблицы x_stock

Аргументы
integer$product_id- id товара
null | integer$offer_id- id комплектации, если не указано, будут учтены все комплектации
Возвращает
array
isDateBeforeArchivedData (   $product_id,
  $offer_id,
  $warehouse_id,
  $date 
)

Проверяет, есть ли для данной пары товар+комплектация+склад уже заархивированные документы на/после указанной даты. В этом случае getAmountByDocumentsAsOf() не сможет посчитать её корректно "на дату" - архивные документы физически перенесены в другую таблицу и не имеют собственной даты архивации, поэтому единственный надёжный сигнал - максимальная дата среди уже заархивированных документов этой конкретной пары.

Аргументы
integer$product_id- id товара
integer$offer_id- id комплектации
integer$warehouse_id- id склада
string$date- дата, на которую хотим посчитать
Возвращает
bool
recalculateStartNum (   $item,
  $warehouse_id 
)

Пересчитать количество товара в архиве

Аргументы
$item
$warehouse_id
recalculateStocks (   $item,
  $warehouse_id 
)

Перезаписывает остатки

Аргументы
array$item- массив с информацией об объекте товара в документе $item = [ 'product_id' => (integer) id товара. 'offer_id' => (integer) id комплектации. 'amount' => (integer) количество. ]
integer$warehouse_id- id склада
Возвращает
void
revertItems (   $items,
  $warehouse_id 
)

Пересчитать показатели количества товаров

Аргументы
array$items- массив с объектами товаров документа $items = [ 'uniq' => () - объект товара документа ]
$warehouse_id- id склада
updateRemainsFromOrder ( \Shop\Model\Orm\Order  $order,
  $flag,
  $old_warehouse = null 
)

Создает документы после записи заказа

Аргументы
\Shop\Model\Orm\Order$order- объект заказа
string$flag- флаг сохранения (update или insert)
null | integer$old_warehouse- предыдущий склад заказа
Возвращает
bool
updateStocks (   $items,
  $warehouse_id,
  $old_items = null,
  $old_warehouse = null 
)

Обновить остатки товаров

Аргументы
array$items- товары документа
integer$warehouse_id- id склада
null | array$old_items- старые товары
null | integer$old_warehouse- старый склад
Возвращает
void