• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/shipment.php
  • Класс: BitrixSaleControllerShipment
  • Вызов: Shipment::prepareFields
public function prepareFields($fields)
{
	$data=null;

	if(isset($fields["SHIPMENTS"]) && is_array($fields["SHIPMENTS"]))
	{
		foreach($fields['SHIPMENTS'] as $k=>$shipmentFormData)
		{
			$data[$k] = $shipmentFormData;
			if(isset($shipmentFormData['SHIPMENT_ITEMS']))
			{
				unset($data[$k]['SHIPMENT_ITEMS']);

				$i=0;
				foreach($shipmentFormData['SHIPMENT_ITEMS'] as $item)
				{
					$shipmentItem = [];

					if(isset($item['ID']) && intval($item['ID'])>0)
					{
						$shipmentItem['ORDER_DELIVERY_BASKET_ID'] = intval($item['ID']);
					}
					else
					{
						if(isset($item['BASKET_ID']))
							$shipmentItem['BASKET_CODE'] = $item['BASKET_ID'];
					}

					if(isset($item['XML_ID']))
						$shipmentItem['XML_ID'] = $item['XML_ID'];

					$shipmentItem['AMOUNT'] = $item['QUANTITY'];

					//$basketCode = $item['BASKET_ID'];
					//unset($item['BASKET_ID']);

					//region fill Id - ShipmentItemStore
					$storesInfo = isset($item['BARCODE_INFO'])? $item['BARCODE_INFO']:[];
					foreach($storesInfo as &$storeInfo)
					{
						if(isset($storeInfo['BARCODE']))
						{
							foreach ($storeInfo['BARCODE'] as &$barCode)
								$barCode['ID'] = isset($barCode['ID'])?$barCode['ID']:0;
						}
					}
					//endregion
/*
					$data[$k]['PRODUCT'][$basketCode] =	[
						'AMOUNT'=>$item['QUANTITY'],
						'BASKET_CODE'=>$basketCode,
						'XML_ID'=>$item['XML_ID'],
						'BARCODE_INFO'=> $storesInfo
					];
*/
					$data[$k]['PRODUCT'][] = $shipmentItem + ['BARCODE_INFO'=> $storesInfo];
				}
			}
			else
			{
				$data[$k]['PRODUCT'] = false;
			}
		}
	}

	return is_array($data)?['SHIPMENT'=>$data]:[];
}