- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/integration/report/handler/basehandler.php
- Класс: BitrixCatalogIntegrationReportHandlerBaseHandler
- Вызов: BaseHandler::prepareStoreTotals
private function prepareStoreTotals(array $storeTotals): array
{
$preparedTotals = [];
foreach ($storeTotals as $storeId => $storeTotal)
{
foreach ($storeTotal as $measureId => $entry)
{
if (!isset($preparedTotals[$storeId]))
{
$preparedTotals[$storeId] = [
'TITLE' => $entry['TITLE'],
'STORE_ID' => $storeId,
'TOTALS' => [],
];
}
$soldAmountDifferenceData = $entry['SOLD_AMOUNTS_DIFFERENCE'] ?? [];
$receivedQuantitiesDifferenceData = $entry['RECEIVED_QUANTITIES_DIFFERENCE'] ?? [];
$outgoingQuantitiesDifferenceData = $entry['OUTGOING_QUANTITIES_DIFFERENCE'] ?? [];
$amountSum =
(float)$entry['AMOUNT_SUM']
- ($receivedQuantitiesDifferenceData[$measureId] ?? 0.0)
+ ($outgoingQuantitiesDifferenceData[$measureId] ?? 0.0)
+ ($soldAmountDifferenceData[$measureId] ?? 0.0)
;
$quantityReservedSum = (float)$entry['QUANTITY_RESERVED_SUM'];
$quantity = $amountSum - $quantityReservedSum;
$productsSoldAmount = $entry['SOLD_AMOUNTS'] ?? [];
$receivedQuantityData = $entry['RECEIVED_QUANTITIES'] ?? [];
$outgoingQuantityData = $entry['OUTGOING_QUANTITIES'] ?? [];
$startingQuantity =
$amountSum
- ($receivedQuantityData[$measureId] ?? 0.0)
+ ($outgoingQuantityData[$measureId] ?? 0.0)
+ ($productsSoldAmount[$measureId] ?? 0.0)
;
$receivedQuantity = ($receivedQuantityData[$measureId] ?? 0.0);
$amountSold = $productsSoldAmount[$measureId] ?? 0.0;
$isStoreEmpty = true;
$values = [
$startingQuantity, $receivedQuantity, $amountSum, $quantityReservedSum, $quantity, $amountSold,
];
foreach ($values as $value)
{
if ($value !== 0.0)
{
$isStoreEmpty = false;
break;
}
}
if ($isStoreEmpty)
{
continue;
}
if (!isset($preparedTotals[$storeId]['TOTALS'][$measureId]))
{
$preparedTotals[$storeId]['TOTALS'][$measureId] = [
'STARTING_QUANTITY' => 0,
'RECEIVED_QUANTITY' => 0,
'AMOUNT_SUM' => 0,
'QUANTITY_RESERVED_SUM' => 0,
'QUANTITY' => 0,
'AMOUNT_SOLD' => 0,
];
}
$preparedTotals[$storeId]['TOTALS'][$measureId]['STARTING_QUANTITY'] += $startingQuantity;
$preparedTotals[$storeId]['TOTALS'][$measureId]['RECEIVED_QUANTITY'] += $receivedQuantity;
$preparedTotals[$storeId]['TOTALS'][$measureId]['AMOUNT_SUM'] += $amountSum;
$preparedTotals[$storeId]['TOTALS'][$measureId]['QUANTITY_RESERVED_SUM'] += $quantityReservedSum;
$preparedTotals[$storeId]['TOTALS'][$measureId]['QUANTITY'] += $quantity;
$preparedTotals[$storeId]['TOTALS'][$measureId]['AMOUNT_SOLD'] += $amountSold;
}
}
return $preparedTotals;
}