Предположим, что условие веса на стороне администратора равно 1, и мы добавили в корзину товар с весом, например [1,1,0.3,0.7,0.8,0.4] (это массив товаров с весом), тогда есть 5номер заказа. два идентификатора заказа для веса 1 и 1, второй идентификатор порядка для веса 0,3 и 0,7, поскольку они могут объединяться по сумме массива, третий и четвертый идентификаторы порядка для 0,8 и 0,4, поскольку они не могут объединяться из-за условия веса, превышающего со стороны администратора
функция, которую я пытаюсь разделить, но условие веса на стороне администратора на меньшее условие не обрабатывается
открытая функция splitOrderByWeight ($ order) {
$result = [];
$i=0;
$tmparr = [];
$total = 0;
//get the weight from admin side
$splitWeight = $this->helper->getweight();
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
foreach ($order->getAllVisibleItems() as $item) {
$id=$item->getProductId();
$product= $objectManager->get('\Magento\Catalog\Model\Product')->load($id);
$weight = $product->getData('weight');
$sku= $item->getSku();
$product_type=$item->getProduct()->getTypeId();
$order_quantity=$item->getQtyOrdered();
$order_id = $item->getOrderId();
$order_item_id = $item->getId();
$actualWeight = $order_quantity*$weight;
$tmparr[$id]=$actualWeight;
arsort($tmparr);
}
$logger->info($tmparr);
foreach ($tmparr as $key => $weight) {
if($item->getParentItemId() || $this->isSimple($item)){
if($weight >= $splitWeight){
$result[] = $this->getArrayItem($item,'all'.$i);
$i++;
}
else{
$result[] = $this->getArrayItem($item,'all');
}
}
}
return $result;
}