public function setNewPropertiesToInvoice($productsInfo) { $subTotal = 0; $items = array(); foreach ($productsInfo as $key => $productInfo) { $items['products'][$key] = $productInfo['sid']; $items['qty'][$key] = !empty($productInfo['number_of_listings']) ? $productInfo['number_of_listings'] : null; $items['price'][$key] = $productInfo['price']; $items['amount'][$key] = $productInfo['amount']; $items['custom_item'][$key] = ""; if ($productInfo['product_type'] == 'banners' && !empty($productInfo['banner_info'])) { $items['custom_info'][$key]['banner_info'] = $productInfo['banner_info']; } $subTotal += $productInfo['amount']; } $taxInfo = SJB_TaxesManager::getTaxInfoByUserSidAndPrice($this->getUserSID(), $subTotal); $totalPrice = SJB_InvoiceManager::getTotalPrice($subTotal, $taxInfo['tax_amount'], $taxInfo['price_includes_tax']); $this->setPropertyValue('total', $totalPrice); $this->setPropertyValue('sub_total', $subTotal); $this->setPropertyValue('tax_info', $taxInfo); $this->setPropertyValue('items', $items); }
public static function generateInvoice($items, $userSID, $subTotalPrice, $successPageUrl, $isRecurring = false) { $taxInfo = SJB_TaxesManager::getTaxInfoByUserSidAndPrice($userSID, $subTotalPrice); $totalPrice = SJB_InvoiceManager::getTotalPrice($subTotalPrice, $taxInfo['tax_amount'], $taxInfo['price_includes_tax']); $invoiceSID = null; if ($totalPrice > 0) { $invoiceSID = SJB_InvoiceManager::getExistingInvoiceSID($userSID, $items, $taxInfo, SJB_Invoice::INVOICE_STATUS_UNPAID, $isRecurring); } if (!$invoiceSID) { $invoiceInfo = array('user_sid' => $userSID, 'include_tax' => !empty($taxInfo['sid']) ? 1 : 0, 'total' => $totalPrice, 'sub_total' => $subTotalPrice, 'success_page_url' => $successPageUrl, 'status' => $totalPrice == 0 ? SJB_Invoice::INVOICE_STATUS_VERIFIED : SJB_Invoice::INVOICE_STATUS_UNPAID, 'tax_info' => $taxInfo, 'items' => $items, 'is_recurring' => $isRecurring); $invoice = new SJB_Invoice($invoiceInfo); SJB_InvoiceManager::saveInvoice($invoice); $invoiceSID = $invoice->getSID(); } return $invoiceSID; }