2013-07-10 3 views
1

Может ли кто-нибудь указать мне в правильном направлении для отображения элементов в порядке в алфавитном порядке, а не в хронологическом порядке?Magento изменить порядок сортировки «упорядоченных предметов»

Я в основном нуждаюсь в этом для счета-фактуры в формате pdf (который я уже изменил в соответствии с моими потребностями, но я застрял на этом). Я понимаю, что мне может потребоваться изменить способ сортировки/упорядочения счета-фактуры полностью, а не только на производстве в формате pdf.

Обычно «упорядоченные предметы» как в корзине клиентов, так и в счете-фактуре находятся в хронологическом порядке сортировки, когда они были добавлены в корзину, однако я бы хотел, чтобы они сортировали по SKU или Description/Title, чтобы помочь с подбором. Или даже сортировка по категориям будет улучшением.

Если кто-то может помочь в этом, я буду над луной, поскольку последние два дня я пытался выяснить это и никуда не пропал.

Спасибо за чтение.

О, я использую 1,5 CE. Еще раз спасибо.

Развейте:

Я нашел код, который сортирует заказ на создание счета-фактуры:

<?php $_items = $this->getInvoice()->getAllItems()> 
    <?php $_i=0;foreach ($_items as $_item): ?> 
    <?php if ($_item->getOrderItem()->getParentItem()) continue; else $_i++; ?> 
    <tbody class="<?php echo $_i%2?'even':'odd' ?>"> 
     <?php echo $this->getItemHtml($_item) ?> 
     <?php echo $this->getItemExtraInfoHtml($_item->getOrderItem()) ?> 
    </tbody> 
    <?php endforeach; ?> 

И заменить его следующим образом:

<?php $_items = $this->getInvoice()->getAllItems() ?> 
<?php $_sortedItems = array(); ?> 
<?php foreach ($_items as $_item) : ?> 
    <?php $_sortedItems[$_item->getSku()] = $_item;?> 
<?php endforeach;?> 
<?php ksort($_sortedItems);> 
<?php $i=0;foreach ($_sortedItems as $_item):?> 
    <?php if ($_item->getParentItem()) continue; else $i++;?> 
    <tbody class="<?php echo $i%2?'even':'odd' ?>"> 
     <?php echo $this->getItemHtml($_item) ?> 
     <?php echo $this->getItemExtraInfoHtml($_item->getOrderItem()) ?> 
       </tbody> 
<?php endforeach; ?> 

Однако теперь счета производит A, например, сначала, как и следовало бы, однако на самом деле он показывает только первый элемент. Остальная часть счета-фактуры меньше! :(

Я сделал очень похожий код изменения в файл, который производит таблицу заказов в adminhtml и это прекрасно работает! ?? ?? ?? спутать Может быть кто-то может помочь мне дальше, пожалуйста ??

при дальнейшем рассмотрении, очевидно, что единственный оставшийся видимый элемент на самом деле простой продукт, и конфигурируемые продукты исчезают из счета! ???

_ __ редактировать

Я решил это!

Причина, по которой я получал только простые продукты, была ключом! Вместо сортировки по SKU я просто отсортировал список по имени, используя getName() вместо getSKU в приведенном выше коде !!! : D

+0

Я не использую Magento, поэтому я только угадывая здесь. Возможно, элементы являются парами ключ-значение, ключи - то, что идентифицирует их, и ценность - это те тексты, которые вы видите. Возможно, порядок сортировки задается на основе ключа, и нужно настроить его сортировку по значению. Опять же, я просто догадываюсь, я могу ошибаться. –

ответ

1

Ответа таков:

<?php $_items = $this->getInvoice()->getAllItems() ?> 
<?php $_sortedItems = array(); ?> 
<?php foreach ($_items as $_item) : ?> 
    <?php $_sortedItems[$_item->getName()] = $_item; //getName() was the key! ?> 
<?php endforeach;?> 
<?php ksort($_sortedItems);?> 
<?php $i=0;foreach ($_sortedItems as $_item):?> 
<?php if ($_item->getOrderItem()->getParentItem()) continue; else $_i++; ?> 
    <?php //if ($_item->getParentItem()) continue; else $i++;?> 
    <tbody class="<?php echo $i%2?'even':'odd' ?>"> 
     <?php echo $this->getItemHtml($_item) ?> 
     <?php echo $this->getItemExtraInfoHtml($_item->getOrderItem()) ?> 
       </tbody> 
<?php endforeach; ?> 

Сортировки по SKU была проблема, как конфигурируемые продукты имеют различный тип SKU. Поэтому я упростил его и отсортировал по имени. Теперь все элементы перечислены и перечислены в алфавитном порядке. Это сортирует счет в adminhtml

Кроме того, для фактической печати стороны вещей в использовании invoice.php:

$items = $invoice->getAllItems() ; // Gets items --- need to sort them first! 
      $_sortedItems = array();      // build array, inserts order items into array and sort 
      foreach ($items as $item) : 
       $_sortedItems[$item->getName()] = $item; 
      endforeach; 

      ksort($_sortedItems); 
      foreach ($_sortedItems as $item) { //pass sorted items back one at a time in alpha' order 

      if ($item->getOrderItem()->getParentItem()) { 
       continue; 

вместо

foreach ($invoice->getAllItems() as $item){ 
      if ($item->getOrderItem()->getParentItem()) { 
       continue; 
+0

Пожалуйста, отметьте этот ответ как принято, как только сможете (вам нужно подождать день или два). BTW: Для вопросов Magento есть также http://magento.stackexchange.com ... – Alex

0
  1. Вам необходимо найти коллекцию, которая используется для того, что вы хотите изменить.

  2. ли что-то вроде этого:

    $ галерею-> getSelect() -> заказ ('main_table.attribute_id ASC');

Конечно, вы должны изменить attribute_id на поле/атрибута вы хотите отсортировать, и ASC и DESC для заказа ...

Удачи!

+0

Спасибо за указатель. Проверьте мои изменения. Спасибо – user2314311

+0

try' $ this-> getInvoice() -> getAllItems() -> getSelect() -> order ('main_table.increment_id ASC') ' –

+0

Попытка вашего предложения дает мне следующую ошибку: Неустранимая ошибка: позвоните в функция-член getSelect() для не-объекта в /home/hairplan/public_html/app/design/adminhtml/default/default/template/sales/order/invoice/create/items.phtml в строке 60 – user2314311

Смежные вопросы