CoolCMS API

StockPresenter extends BasePresenter
in package

Nightly stock recount: repairs reserved quantities, batches and card prices.

A self-healing recount of the invariants levels, batches, journal and pairing, plus card prices. Drift is repaired and logged (channel 'store'); the batch total and old active reservations are only alarms (they cannot be repaired automatically and are not bugs by themselves). The logic lives in the Api service StockRecalculator, reached via StockLevelManager::recountLevels() / StockItemManager::recountItemPrices().

URL: /cron/store/stock/recount?token=xxx

Table of Contents

Properties

$cronLockManager  : CronLockManager
$operationRunner  : OperationRunner
Boundary of one cron action (see {@see self::tryCall()}).
$settingContext  : SettingContext
$settingManager  : SettingManager
$debugMode  : bool
$productionMode  : bool
$stockItemManager  : StockItemManager
$stockLevelManager  : StockLevelManager

Methods

__construct()  : mixed
actionLowStockAlert()  : void
Alerts about cards below the minimum stock: one summary e-mail to `stock.lowStock.email`.
actionRecount()  : void
Frequency: daily, at night.
releaseLock()  : void
Releases the lock at most once; called by both `shutdown()` and the PHP shutdown function.
sendResponse()  : void
setConfigParameters()  : void
shutdown()  : void
startup()  : void
isSameSiteRequest()  : bool
Tells whether the request comes from the own site (Nette SameSite cookie); protects GET actions with a side effect.
sendError()  : never
sendSkipped()  : never
Reports that the job did only part of the work and the next call finishes the rest (e.g. a reindex done in chunks).
sendSuccess()  : never
tryCall()  : bool
Runs the `action<Action>()` method as one operation (transitional).

Properties

$operationRunner

Boundary of one cron action (see {@see self::tryCall()}).

public OperationRunner $operationRunner
Attributes
#[Inject]

Methods

actionLowStockAlert()

Alerts about cards below the minimum stock: one summary e-mail to `stock.lowStock.email`.

public actionLowStockAlert() : void

A card is reported only once until it returns to the minimum (StockItemManager::watchLowStock()). An empty address means nothing is sent (the result carries skipped).

URL: /cron/store/stock/low-stock-alert?token=xxx

Frequency: daily, in the morning.

Attributes
#[CronJob]
$frequency: 'daily:07:10'
$outbound: true

actionRecount()

Frequency: daily, at night.

public actionRecount() : void
Attributes
#[CronJob]
$frequency: 'daily:03:45'
$outbound: false

releaseLock()

Releases the lock at most once; called by both `shutdown()` and the PHP shutdown function.

public releaseLock() : void

sendResponse()

public sendResponse(Response $response) : void
Parameters
$response : Response

setConfigParameters()

public setConfigParameters([bool $debugMode = false ][, bool $productionMode = false ]) : void
Parameters
$debugMode : bool = false
$productionMode : bool = false

shutdown()

public shutdown(Response $response) : void
Parameters
$response : Response

isSameSiteRequest()

Tells whether the request comes from the own site (Nette SameSite cookie); protects GET actions with a side effect.

protected isSameSiteRequest() : bool

getHttpRequest() returns the IRequest interface, while isSameSite() exists only on Nette\Http\Request.

Return values
bool

sendError()

protected sendError(string $message[, int $code = 500 ]) : never
Parameters
$message : string
$code : int = 500
Return values
never

sendSkipped()

Reports that the job did only part of the work and the next call finishes the rest (e.g. a reindex done in chunks).

protected sendSkipped(string $reason[, array<string, mixed> $data = [] ]) : never

The scheduler does not record skipped as a run, so the job stays due and is called again on the next tick.

Parameters
$reason : string
$data : array<string, mixed> = []
Return values
never

sendSuccess()

protected sendSuccess([array<string|int, mixed> $data = [] ]) : never
Parameters
$data : array<string|int, mixed> = []
Return values
never

tryCall()

Runs the `action<Action>()` method as one operation (transitional).

protected tryCall(string $method, array<string, mixed> $params) : bool

Cron has no internalAction*(): its actions call the Api managers directly, so without this in scoped mode nothing would ever empty the unit of work of a cron run. The boundary is the action only; startup() (settings, token, lock) stays outside like the startup of an Api request. A cron action ends with AbortException from send*(), which is a regular end: the outcome comes from the response (ok succeeded, skipped unknown — possibly a part of a batch was done, error failed). Render and signal methods are not wrapped (cron presenters have none).

Parameters
$method : string
$params : array<string, mixed>
Return values
bool
On this page

Search results