/** * Collect gift wrapping tax totals * * @param Mage_Sales_Model_Order_Invoice $invoice * @return Enterprise_GiftWrapping_Model_Total_Invoice_Tax_Giftwrapping */ public function collect(Mage_Sales_Model_Order_Invoice $invoice) { $order = $invoice->getOrder(); /** * Wrapping for items */ $invoiced = 0; $baseInvoiced = 0; foreach ($invoice->getAllItems() as $invoiceItem) { if (!$invoiceItem->getQty() || $invoiceItem->getQty() == 0) { continue; } $orderItem = $invoiceItem->getOrderItem(); if ($orderItem->getGwId() && $orderItem->getGwBaseTaxAmount() && $orderItem->getGwBaseTaxAmount() != $orderItem->getGwBaseTaxAmountInvoiced()) { $orderItem->setGwBaseTaxAmountInvoiced($orderItem->getGwBaseTaxAmount()); $orderItem->setGwTaxAmountInvoiced($orderItem->getGwTaxAmount()); $baseInvoiced += $orderItem->getGwBaseTaxAmount(); $invoiced += $orderItem->getGwTaxAmount(); } } if ($invoiced > 0 || $baseInvoiced > 0) { $order->setGwItemsBaseTaxInvoiced($order->getGwItemsBaseTaxInvoiced() + $baseInvoiced); $order->setGwItemsTaxInvoiced($order->getGwItemsTaxInvoiced() + $invoiced); $invoice->setGwItemsBaseTaxAmount($baseInvoiced); $invoice->setGwItemsTaxAmount($invoiced); } /** * Wrapping for order */ if ($order->getGwId() && $order->getGwBaseTaxAmount() && $order->getGwBaseTaxAmount() != $order->getGwBaseTaxAmountInvoiced()) { $order->setGwBaseTaxAmountInvoiced($order->getGwBaseTaxAmount()); $order->setGwTaxAmountInvoiced($order->getGwTaxAmount()); $invoice->setGwBaseTaxAmount($order->getGwBaseTaxAmount()); $invoice->setGwTaxAmount($order->getGwTaxAmount()); } /** * Printed card */ if ($order->getGwAddCard() && $order->getGwCardBaseTaxAmount() && $order->getGwCardBaseTaxAmount() != $order->getGwCardBaseTaxInvoiced()) { $order->setGwCardBaseTaxInvoiced($order->getGwCardBaseTaxAmount()); $order->setGwCardTaxInvoiced($order->getGwCardTaxAmount()); $invoice->setGwCardBaseTaxAmount($order->getGwCardBaseTaxAmount()); $invoice->setGwCardTaxAmount($order->getGwCardTaxAmount()); } if (!$invoice->isLast()) { $baseTaxAmount = $invoice->getGwItemsBaseTaxAmount() + $invoice->getGwBaseTaxAmount() + $invoice->getGwCardBaseTaxAmount(); $taxAmount = $invoice->getGwItemsTaxAmount() + $invoice->getGwTaxAmount() + $invoice->getGwCardTaxAmount(); $invoice->setBaseTaxAmount($invoice->getBaseTaxAmount() + $baseTaxAmount); $invoice->setTaxAmount($invoice->getTaxAmount() + $taxAmount); $invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() + $baseTaxAmount); $invoice->setGrandTotal($invoice->getGrandTotal() + $taxAmount); } return $this; }
/** * Adds giftwrapitems cost to request as item * * @param Mage_Sales_Model_Order_Invoice|Mage_Sales_Model_Order_Creditmemo $object * @param bool $credit * @return int|bool */ protected function _addGwItemsAmount($object, $credit = false) { if ($object->getGwItemsPrice() == 0) { return false; } $lineNumber = $this->_getNewLineCode(); $storeId = $object->getStore()->getId(); $amount = $object->getGwItemsBasePrice(); $line = $this->_getNewDocumentRequestLineObject(); if ($this->_getTaxDataHelper()->priceIncludesTax($storeId)) { $amount += $object->getGwItemsBaseTaxAmount(); $line->setTaxIncluded('true'); } //@startSkipCommitHooks $amount = $credit ? -1 * $amount : $amount; //@finishSkipCommitHooks $line->setLineCode($lineNumber); $gwItemsSku = $this->_getConfigHelper()->getGwItemsSku($storeId); $line->setItemCode($gwItemsSku ? $gwItemsSku : self::DEFAULT_GW_ITEMS_SKU); $line->setItemDescription(self::DEFAULT_GW_ITEMS_DESCRIPTION); $line->setAvalaraGoodsAndServicesType($this->_getGiftTaxClassCode($storeId)); $line->setNumberOfItems(1); $line->setlineAmount($amount); $line->setDiscounted('false'); $this->_lineToItemId[$lineNumber] = $gwItemsSku; $this->_lines[$lineNumber] = $line; $this->_setLinesToRequest(); return $lineNumber; }
/** * Adds giftwrapitems cost to request as item * * @param Mage_Sales_Model_Order_Invoice|Mage_Sales_Model_Order_Creditmemo $object * @param bool $credit * @return int|bool */ protected function _addGwItemsAmount($object, $credit = false) { if ($object->getGwItemsPrice() == 0) { return false; } $lineNumber = count($this->_lines); $storeId = $object->getStore()->getId(); $amount = $object->getGwItemsBasePrice(); $line = new Line(); if ($this->_getTaxDataHelper()->priceIncludesTax($storeId)) { $amount += $object->getGwItemsBaseTaxAmount(); $line->setTaxIncluded(true); } if ($credit) { //@startSkipCommitHooks $amount *= -1; //@finishSkipCommitHooks } $line->setNo($lineNumber); $line->setItemCode($this->_getConfigHelper()->getGwItemsSku($storeId)); $line->setDescription('Gift Wrap Items Amount'); $line->setTaxCode($this->_getGiftTaxClassCode($storeId)); $line->setQty(1); $line->setAmount($amount); $line->setDiscounted(false); $this->_lineToItemId[$lineNumber] = $this->_getConfigHelper()->getGwItemsSku($storeId); $this->_lines[$lineNumber] = $line; $this->_request->setLines($this->_lines); return $lineNumber; }