/** * delete invoice * line items, discounts, taxes, totals, trails, ... * @return bool|void */ public function delete() { // delete invoice $id = $this->lb_record_primary_key; $result = parent::delete(); if ($result) { // delete line items $line_items = LbInvoiceItem::model()->getInvoiceItems($id, self::LB_QUERY_RETURN_TYPE_MODELS_ARRAY); foreach ($line_items as $l_item) { $l_item->delete(); } // delete discounts $discounts = LbInvoiceItem::model()->getInvoiceDiscounts($id, self::LB_QUERY_RETURN_TYPE_MODELS_ARRAY); foreach ($discounts as $disc) { $disc->delete(); } // delete taxes $taxes = LbInvoiceItem::model()->getInvoiceTaxes($id, self::LB_QUERY_RETURN_TYPE_MODELS_ARRAY); foreach ($taxes as $tx) { $tx->delete(); } // delete totals $total = LbInvoiceTotal::model()->getInvoiceTotal($id); if ($total) { $total->delete(); } // delete invoice in contract $invoiceByContract = LbContractInvoice::model()->find('lb_invoice_id=' . intval($id)); if (count($invoiceByContract) > 0) { $invoiceByContract->delete(); } } }
/** * Calculate invoice total after taxes (subtotal - discount - taxes) * save, and return value * * @return int total after taxes */ public function calculateInvoiceTotalAfterTaxes() { // get all taxes $invoice_taxes = LbInvoiceItem::model()->getInvoiceTaxes($this->lb_invoice_id, self::LB_QUERY_RETURN_TYPE_MODELS_ARRAY); // calculate tax total, and invoice total after tax $tax_total = 0; foreach ($invoice_taxes as $tax) { $tax_total += $tax->lb_invoice_item_total; } $this->lb_invoice_total_after_taxes = $this->lb_invoice_total_after_discounts + $tax_total; $this->save(); return $this->lb_invoice_total_after_taxes; }
</tfoot> <?php } else { $customer_arr = LbCustomer::model()->getCompanies($sort = 'lb_customer_name ASC', LbCustomer::LB_QUERY_RETURN_TYPE_MODELS_ARRAY); $invoiceValue = 0; $gst = 0; foreach ($customer_arr as $customer) { ?> <tbody> <?php $a = LbInvoice::model()->getInvoiceMonth($customer['lb_record_primary_key'], $date_from, $date_to); foreach ($a as $data) { $customer_id = false; $invoice_information = LbInvoiceTotal::model()->getInvoiceById($data->lb_record_primary_key); $invoiceTax = LbInvoiceItem::model()->getInvoiceTaxById($data->lb_record_primary_key, "TAX"); $invoiceValue = $invoiceValue + $invoice_information->lb_invoice_total_after_discounts; echo '<tr>'; echo '<td>' . $data->lb_invoice_no . '</td>'; echo '<td>' . $data->lb_invoice_date . '</td>'; echo '<td>'; if ($data->lb_invoice_customer_id) { $customer_id = $data->lb_invoice_customer_id; echo LbCustomer::model()->customerInformation($customer_id)->attributes['lb_customer_name']; } echo '</td>'; echo '<td>$' . $invoice_information->lb_invoice_total_after_discounts . '</td>'; echo '<td>'; $totalTax = 0; if ($invoiceTax) { $totaltax = $invoice_information->lb_invoice_total_after_taxes - $invoice_information->lb_invoice_total_after_discounts;
public function getInvoiceTaxById($invoice_id = false, $type = false) { $criteria = new CDbCriteria(); if ($invoice_id) { $criteria->compare('lb_invoice_id', $invoice_id); } if ($type) { $criteria->compare('lb_invoice_item_type', $type); } return LbInvoiceItem::model()->find($criteria); }
</tr> ' . $subject . ' <tr><td> </td></tr> <tr> <tr> <td colspan="2"> <table border="1" style="width:100%;border-collapse:collapse;" cellpadding="0" cellspacing="0"> <tr > <th width="32" height="25" align="center">#</th> <th width="390">Item</th> <th width="90" align="center">Quantity</th> <th width="90" align="center">Unit Price</th> <th width="90" align="center">Total</th> </tr>'; //$item_invoice_arr = LbInvoiceItem :: model()->findAll('lb_invoice_id='.$model->lb_record_primary_key,array()); $item_invoice_arr = LbInvoiceItem::model()->getInvoiceItems($model->lb_record_primary_key, 'ModelArray'); //print_r($item_invoice_arr); $i = 0; foreach ($item_invoice_arr as $item_invoice_row) { $i++; $tbl .= '<tr> <td width="32" height="35" align="center">' . $i . '</td> <td width="390">' . $item_invoice_row['lb_invoice_item_description'] . '</td> <td width="90" align="right">' . $strnum->adddotstring($item_invoice_row['lb_invoice_item_quantity'], $thousand, $decimal) . '</td> <td width="90" align="right">' . $strnum->adddotstring($item_invoice_row['lb_invoice_item_value'], $thousand, $decimal) . '</td> <td width="90" align="right">' . $strnum->adddotstring($item_invoice_row['lb_invoice_item_total'], $thousand, $decimal) . '</td> </tr>'; } $tbl .= '</table> </td> </tr>
public function IsTaxExistInvoiceORQuotation($tax_id) { $tax_invoice = LbInvoiceItem::model()->find('lb_invoice_item_description=' . $tax_id); $tax_quotation = LbQuotationTax::model()->find('lb_quotation_tax_id=' . $tax_id); if (count($tax_quotation) > 0 || count($tax_invoice) > 0) { return true; } return false; }
public function actionAjaxCopyInvoice($id) { //Add thong tin quotation $inv_new = new LbInvoice(); $invoice = LbInvoice::model()->findByPk($id); $inv_new->lb_invoice_no = LbInvoice::model()->formatInvoiceNextNumFormatted(0); $inv_new->lb_invoice_date = date('Y-m-d'); $inv_new->lb_invoice_due_date = date('Y-m-d'); $inv_new->lb_invoice_status_code = LbInvoice::LB_INVOICE_STATUS_CODE_DRAFT; $inv_new->lb_invoice_company_id = $invoice->lb_invoice_company_id; $inv_new->lb_invoice_company_address_id = $invoice->lb_invoice_company_address_id; $inv_new->lb_invoice_customer_id = $invoice->lb_invoice_customer_id; $inv_new->lb_invoice_customer_address_id = $invoice->lb_invoice_customer_address_id; $inv_new->lb_invoice_attention_contact_id = $invoice->lb_invoice_attention_contact_id; $inv_new->lb_invoice_internal_note = $invoice->lb_invoice_internal_note; $inv_new->lb_invoice_subject = $invoice->lb_invoice_subject; $inv_new->lb_invoice_note = $invoice->lb_invoice_note; $inv_new->lb_invoice_encode = LbInvoice::model()->setBase64_decodeInvoice(); if ($inv_new->save()) { // Add thong tin tax $invoice_tax_arr = LbInvoiceItem::model()->getInvoiceTaxes($invoice->lb_record_primary_key); foreach ($invoice_tax_arr->data as $tax_item) { $inv_tax_new = new LbInvoiceItem(); $inv_tax_new->lb_invoice_id = $inv_new->lb_record_primary_key; $inv_tax_new->lb_invoice_item_description = $tax_item->lb_invoice_item_description; $inv_tax_new->lb_invoice_item_quantity = $tax_item->lb_invoice_item_quantity; $inv_tax_new->lb_invoice_item_value = $tax_item->lb_invoice_item_value; $inv_tax_new->lb_invoice_item_total = $tax_item->lb_invoice_item_total; $inv_tax_new->lb_invoice_item_type = LbInvoiceItem::LB_INVOICE_ITEM_TYPE_TAX; $inv_tax_new->save(); } //END //Add thong tin discount $invoice_discount_arr = LbInvoiceItem::model()->getInvoiceDiscounts($invoice->lb_record_primary_key); foreach ($invoice_discount_arr->data as $discount_item) { $inv_discount_new = new LbInvoiceItem(); $inv_discount_new->lb_invoice_id = $inv_new->lb_record_primary_key; $inv_discount_new->lb_invoice_item_description = 'Discount'; $inv_discount_new->lb_invoice_item_quantity = $discount_item->lb_invoice_item_quantity; $inv_discount_new->lb_invoice_item_value = $discount_item->lb_invoice_item_value; $inv_discount_new->lb_invoice_item_total = $discount_item->lb_invoice_item_total; $inv_discount_new->lb_invoice_item_type = LbInvoiceItem::LB_INVOICE_ITEM_TYPE_DISCOUNT; $inv_discount_new->save(); } //END //Add Thong tin total $invoice_total = LbInvoiceTotal::model()->getInvoiceTotal($invoice->lb_record_primary_key); $inv_total_new = new LbInvoiceTotal(); $inv_total_new->lb_invoice_id = $inv_new->lb_record_primary_key; $inv_total_new->lb_invoice_revision_id = $invoice_total->lb_invoice_revision_id; $inv_total_new->lb_invoice_subtotal = $invoice_total->lb_invoice_subtotal; $inv_total_new->lb_invoice_total_after_discounts = $invoice_total->lb_invoice_total_after_discounts; $inv_total_new->lb_invoice_total_after_taxes = $invoice_total->lb_invoice_total_after_taxes; $inv_total_new->lb_invoice_total_outstanding = $invoice_total->lb_invoice_total_outstanding; $inv_total_new->lb_invoice_total_paid = $invoice_total->lb_invoice_total_paid; $inv_total_new->save(); //Add thong tin item $invoice_item_arr = LbInvoiceItem::model()->getInvoiceItems($invoice->lb_record_primary_key); foreach ($invoice_item_arr->data as $item) { $inv_item_new = new LbInvoiceItem(); $inv_item_new->lb_invoice_id = $inv_new->lb_record_primary_key; $inv_item_new->lb_invoice_item_description = $item->lb_invoice_item_description; $inv_item_new->lb_invoice_item_quantity = $item->lb_invoice_item_quantity; $inv_item_new->lb_invoice_item_value = $item->lb_invoice_item_value; $inv_item_new->lb_invoice_item_total = $item->lb_invoice_item_total; $inv_item_new->lb_invoice_item_type = LbInvoiceItem::LB_INVOICE_ITEM_TYPE_LINE; $inv_item_new->save(); } //END $customer_name = $inv_new->customer ? $inv_new->customer->lb_customer_name : "No customer"; $url = LbInvoice::model()->getViewURLByIdNormalized($inv_new->lb_record_primary_key, $customer_name); echo '{"status":"success","url":"' . $url . '"}'; } }