Вітаю є ідея) як дивитесь на те аби додати кастомні варіанти пакування? Дуже корисно буде тим хто дрібниці продає… наприклад у налаштуваннях задаємо присети габаритів для декількох коробок.
потім додаемо логіку аля
<?php
function findBestBox($products, $boxes) {
// Сортируем коробки по объему (от меньшего к большему)
usort($boxes, function($a, $b) {
return ($a['length'] * $a['width'] * $a['height']) <=> ($b['length'] * $b['width'] * $b['height']);
});
foreach ($boxes as $box) {
$allFit = true;
foreach ($products as $product) {
if (!doesProductFitInBox($product, $box)) {
$allFit = false;
break;
}
}
if ($allFit && doesBoxWithstandWeight($products, $box)) {
return $box; // Возвращаем первую подходящую коробку
}
}
return null; // Если нет подходящей коробки
}
function doesProductFitInBox($product, $box) {
// Проверяем, помещается ли товар в коробку
return ($product['length'] <= $box['length'] &&
$product['width'] <= $box['width'] &&
$product['height'] <= $box['height']);
}
function doesBoxWithstandWeight($products, $box) {
// Суммируем вес всех товаров
$totalWeight = array_sum(array_column($products, 'weight'));
// Проверяем, выдерживает ли коробка общий вес
return $totalWeight <= $box['max_weight'];
}
// Пример данных товаров и коробок
$products = [
['length' => 10, 'width' => 5, 'height' => 2, 'weight' => 1.5],
['length' => 7, 'width' => 3, 'height' => 1.5, 'weight' => 1.2]
];
$boxes = [
['length' => 15, 'width' => 10, 'height' => 5, 'max_weight' => 5],
['length' => 20, 'width' => 15, 'height' => 10, 'max_weight' => 10],
['length' => 25, 'width' => 20, 'height' => 15, 'max_weight' => 15]
];
$bestBox = findBestBox($products, $boxes);
if ($bestBox) {
echo "Лучший выбор коробки: " . json_encode($bestBox) . "\n";
} else {
echo "Нет подходящей коробки\n";
}
?>
І малиб отримати готові параметри для поштомату в тому чисі)
як на це дивитесь?