Magento - Сортировка продуктов PDF Invoice по местоположению

Я работаю над решением для Magento 1 для счетов в формате PDF. Мы хотим, чтобы в счетах-фактурах отображались продукты, отсортированные по stock_location. Все наши местоположения начинаются с буквы lige A, B, C и т. д. И после этого несколько цифр.

Я хочу, чтобы в счетах-фактурах продукты отображались в алфавитном порядке, поэтому, когда мы находим продукты, мы начинаем от А до Я, чтобы вы знали сверху вниз. Я просто не могу понять, как это решить?

foreach ($invoice->getAllItems() as $item){
    if ($item->getOrderItem()->getParentItem()) {
        continue;
    }
    /* Draw item */
    $this->_drawItem($item, $page, $order);
    $page = end($pdf->pages);
}

Кто-нибудь еще когда-либо хотел этого и, возможно, понял, в какую сторону мне идти? :)

  • Спасибо за ваше время.

person Kevin Steen Hansen    schedule 18.12.2017    source источник
comment
возможно, поместите все местоположения в массив и отсортируйте его по алфавиту   -  person Cezary    schedule 18.12.2017
comment
Не уверен, что у меня есть возможность для этого. Данные не обрабатываются в том же файле, в котором данные отправляются. Можно ли вызвать какую-то функцию в magento, о которой я не знаю? Добавил код в пост   -  person Kevin Steen Hansen    schedule 18.12.2017
comment
Никто больше этого не хотел? Это просто значительно упрощает сбор всех продуктов для заказов. :)   -  person Kevin Steen Hansen    schedule 19.12.2017


Ответы (2)


Я не знаю, как это сделать в Magento, но я делюсь некоторыми идеями о том, как вы можете сделать это в PHP, попробуйте вот так. Надеюсь, это поможет вам.

$response[] = array(
                        'product_id' => $stock->product_id,
                        'product_name' => $stock->product_name,
                        'stock_id' => $stock->stock_id,
                        'stock_location' => $stock->stock_location,

                        );
                    }

                foreach ($response as $rec) {
                    $stock_location[] = $rec['stock_location'];
                    $title[] = strtolower($rec['product_name']);
                }
                //print_r($stock_location);

                array_multisort($stock_location, SORT_ASC, SORT_NUMERIC, $title, SORT_ASC, SORT_STRING, $response);

                print_r($response);
person Gorakh Yadav    schedule 18.12.2017

Нашел решение:

$items = $invoice->getAllItems();
        $sortedItems = array();

        foreach ($items as $item) {
            $prod = Mage::getModel('catalog/product')->load($item->getProductId());
            $sortedItems[$prod->getStockLocation()] = $item;
        }

        ksort($sortedItems);

        foreach ($sortedItems as $item){
            if ($item->getOrderItem()->getParentItem()) {
                continue;
            }
            /* Draw item */
            $this->_drawItem($item, $page, $order);
            $page = end($pdf->pages);
        }
person Kevin Steen Hansen    schedule 19.12.2017