/** * @return Payone_Api_Request_Parameter_Invoicing_Transaction */ protected function mapInvoicingParameters() { $order = $this->getOrder(); $invoice = $this->getInvoice(); $invoicing = new Payone_Api_Request_Parameter_Capture_Invoicing_Transaction(); if (!empty($invoice) && $invoice->hasData()) { $invoiceIncrementId = $invoice->getIncrementId(); if ($invoiceIncrementId === null) { $invoiceIncrementId = $this->fetchNewIncrementId($invoice); } $appendix = $this->getInvoiceAppendix($invoice); $invoicing->setInvoiceid($invoiceIncrementId); $invoicing->setInvoiceappendix($appendix); // Regular order items: foreach ($invoice->getItemsCollection() as $itemData) { /** @var $itemData Mage_Sales_Model_Order_Invoice_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); } // Shipping / Fees: if ($invoice->getShippingInclTax() > 0) { $invoicing->addItem($this->mapShippingFeeAsItem()); } // Discounts: $discountAmount = $invoice->getDiscountAmount(); // Discount Amount is positive on invoice. if ($discountAmount > 0) { $invoicing->addItem($this->mapDiscountAsItem(-1 * $discountAmount)); } } // Capture mode: $payment = $this->getPaymentMethod()->getInfoInstance(); if ($this->getPaymentMethod() instanceof Payone_Core_Model_Payment_Method_SafeInvoice or $this->helperRegistry()->isPaymentCancelRegistered($payment)) { $invoicing->setCapturemode($this->mapCaptureMode()); } return $invoicing; }
/** * @param Mage_Sales_Model_Order_Creditmemo $creditmemo * @return Payone_Api_Request_Parameter_Invoicing_Item * * used by Payone_Core_Model_Mapper_ApiRequest_Payment_Debit */ protected function mapAdjustmentNegativeAsItemByCreditmemo(Mage_Sales_Model_Order_Creditmemo $creditmemo) { $configMiscCreditmemo = $this->getConfigMisc()->getCreditmemo(); $sku = $configMiscCreditmemo->getAdjustmentFeeSku(); $name = $configMiscCreditmemo->getAdjustmentFeeName(); if (empty($sku)) { $sku = $this->helper()->__(self::DEFAULT_ADJUSTMENT_NEGATIVE_SKU); } if (empty($name)) { $name = $this->helper()->__(self::DEFAULT_ADJUSTMENT_NEGATIVE_SKU); } $params['id'] = $sku; $params['de'] = $name; $params['no'] = 1; $params['pr'] = $creditmemo->getAdjustmentNegative() * -1; if ($this->getPaymentMethod()->mustTransmitInvoicingItemTypes()) { $params['it'] = Payone_Api_Enum_InvoicingItemType::GOODS; } $item = new Payone_Api_Request_Parameter_Invoicing_Item(); $item->init($params); return $item; }
/** * @param Mage_Sales_Model_Order_Creditmemo $creditmemo * @return Payone_Api_Request_Parameter_Invoicing_Item * * used by Payone_Core_Model_Mapper_ApiRequest_Payment_Debit */ protected function mapAdjustmentNegativeAsItemByCreditmemo(Mage_Sales_Model_Order_Creditmemo $creditmemo) { $configMiscCreditmemo = $this->getConfigMisc()->getCreditmemo(); $sku = $configMiscCreditmemo->getAdjustmentFeeSku(); $name = $configMiscCreditmemo->getAdjustmentFeeName(); if (empty($sku)) { $sku = $this->helper()->__(self::DEFAULT_ADJUSTMENT_NEGATIVE_SKU); } if (empty($name)) { $name = $this->helper()->__(self::DEFAULT_ADJUSTMENT_NEGATIVE_SKU); } $params['it'] = Payone_Api_Enum_InvoicingItemType::GOODS; $params['id'] = $sku; $params['de'] = $name; $params['no'] = 1; $params['pr'] = $creditmemo->getAdjustmentNegative() * -1; $params['va'] = round($this->getShippingTaxRate() * 100); // assuming that it has the same tax-rate as shipping - dont know from where to get the tax $item = new Payone_Api_Request_Parameter_Invoicing_Item(); $item->init($params); return $item; }
/** * @return Payone_Api_Request_Parameter_Invoicing_Transaction */ protected function mapInvoicingParameters() { $order = $this->getOrder(); $invoiceAppendix = $this->getInvoiceAppendix(); $invoicing = new Payone_Api_Request_Parameter_Invoicing_Transaction(); $invoicing->setInvoiceappendix($invoiceAppendix); // Order items: foreach ($order->getItemsCollection() as $key => $itemData) { /** @var $itemData Mage_Sales_Model_Order_Item */ if ($itemData->isDummy()) { continue; // Do not map dummy items } $number = $itemData->getQtyToInvoice(); if ($number <= 0) { continue; // Do not map items with zero quanity } $params['it'] = Payone_Api_Enum_InvoicingItemType::GOODS; $params['id'] = $itemData->getSku(); $params['pr'] = $itemData->getPriceInclTax(); $params['no'] = $number; $params['de'] = $itemData->getName(); // $params['va'] = number_format($itemData->getTaxPercent(), 0, '.', ''); $params['va'] = round($itemData->getTaxPercent() * 100); // transfer vat in basis point format [#MAGE-186] if ($this->getPaymentMethod()->mustTransmitInvoicingItemTypes()) { $params['it'] = Payone_Api_Enum_InvoicingItemType::GOODS; } $item = new Payone_Api_Request_Parameter_Invoicing_Item(); $item->init($params); $invoicing->addItem($item); } // Shipping / Fees: if ($order->getShippingInclTax() > 0) { $invoicing->addItem($this->mapShippingFeeAsItem()); } // Discounts: $discountAmount = $order->getDiscountAmount(); // Discount Amount is negative on order. if ($discountAmount > 0 || $discountAmount < 0) { $invoicing->addItem($this->mapDiscountAsItem($discountAmount)); } return $invoicing; }
/** * @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; }