Exemplo n.º 1
0
 /**
  * Prepare order invoice based on order data and requested items qtys
  *
  * @param array $data
  * @return Mage_Sales_Model_Order_Invoice
  */
 public function prepareInvoice($qtys = array())
 {
     $invoice = $this->_convertor->toInvoice($this->_order);
     $totalQty = 0;
     foreach ($this->_order->getAllItems() as $orderItem) {
         if (!$this->_canInvoiceItem($orderItem, array())) {
             continue;
         }
         $item = $this->_convertor->itemToInvoiceItem($orderItem);
         if ($orderItem->isDummy()) {
             $qty = $orderItem->getQtyOrdered() ? $orderItem->getQtyOrdered() : 1;
         } else {
             if (isset($qtys[$orderItem->getId()])) {
                 $qty = (double) $qtys[$orderItem->getId()];
             } elseif (!count($qtys)) {
                 $qty = $orderItem->getQtyToInvoice();
             } else {
                 continue;
             }
         }
         $totalQty += $qty;
         $item->setQty($qty);
         $invoice->addItem($item);
     }
     $invoice->setTotalQty($totalQty);
     $invoice->collectTotals();
     $this->_order->getInvoiceCollection()->addItem($invoice);
     return $invoice;
 }