Example #1
0
 /**
  * @return Payone_Api_Request_Parameter_Invoicing_Transaction
  */
 protected function mapInvoicingParameters()
 {
     $order = $this->getOrder();
     $creditmemo = $this->getCreditmemo();
     $invoicing = new Payone_Api_Request_Parameter_Invoicing_Transaction();
     if (!empty($creditmemo) && $creditmemo->hasData()) {
         $creditmemoIncrementId = $creditmemo->getIncrementId();
         if ($creditmemoIncrementId === null) {
             $creditmemoIncrementId = $this->fetchNewIncrementId($creditmemo);
         }
         $appendix = $this->getInvoiceAppendixRefund($creditmemo);
         $invoicing->setInvoiceid($creditmemoIncrementId);
         $invoicing->setInvoiceappendix($appendix);
         // Regular order items:
         foreach ($creditmemo->getItemsCollection() as $itemData) {
             /** @var $itemData Mage_Sales_Model_Order_Creditmemo_Item */
             /** @var $orderItem Mage_Sales_Model_Order_Item */
             $orderItem = $order->getItemById($itemData->getOrderItemId());
             if ($orderItem->isDummy()) {
                 continue;
                 // Do not map dummy items.
             }
             $number = number_format($itemData->getQty(), 0, '.', '');
             if ($number <= 0) {
                 continue;
                 // Do not map items with zero quantity
             }
             $params['id'] = $itemData->getSku();
             $params['de'] = $itemData->getName();
             $params['no'] = $number;
             $params['pr'] = $itemData->getPriceInclTax();
             if ($this->getPaymentMethod()->mustTransmitInvoicingItemTypes()) {
                 $params['it'] = Payone_Api_Enum_InvoicingItemType::GOODS;
             }
             // We have to load the tax percentage from the order item
             $params['va'] = number_format($orderItem->getTaxPercent(), 0, '.', '');
             $item = new Payone_Api_Request_Parameter_Invoicing_Item();
             $item->init($params);
             $invoicing->addItem($item);
         }
         // Refund shipping
         if ($creditmemo->getShippingInclTax() > 0) {
             $invoicing->addItem($this->mapRefundShippingAsItemByCreditmemo($creditmemo));
         }
         // Adjustment Refund (positive adjustment)
         if ($creditmemo->getAdjustmentPositive() > 0) {
             $invoicing->addItem($this->mapAdjustmentPositiveAsItemByCreditmemo($creditmemo));
         }
         // Adjustment Fee (negative adjustment)
         if ($creditmemo->getAdjustmentNegative() > 0) {
             $invoicing->addItem($this->mapAdjustmentNegativeAsItemByCreditmemo($creditmemo));
         }
         // Add Discount as a position
         $discountAmount = $creditmemo->getDiscountAmount();
         if ($discountAmount > 0) {
             $invoicing->addItem($this->mapDiscountAsItem(-1 * $discountAmount));
         }
     }
     return $invoicing;
 }