public function actionRenew($id)
 {
     $contractModel = LbContracts::model()->findByPk($id);
     $documentModel = new LbContractDocument();
     $paymentModel = new LbPayment();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['LbContracts'])) {
         $LbContracts = $_POST['LbContracts'];
         $model = new LbContracts();
         $model->attributes = $_POST['LbContracts'];
         $model->lb_customer_id = $contractModel->lb_customer_id;
         $model->lb_address_id = $contractModel->lb_address_id;
         $model->lb_contact_id = $contractModel->lb_contact_id;
         $model->lb_contract_type = $contractModel->lb_contract_type;
         $model->lb_contract_status = LbContracts::LB_CONTRACT_STATUS_ACTIVE;
         $model->lb_contract_parent = $contractModel->lb_record_primary_key;
         if ($model->save()) {
             //********* Upload document *****************//
             $document = LbContractDocument::model()->getContractDocument($id);
             foreach ($document->data as $dataDocument) {
                 $documentModel = new LbContractDocument();
                 $documentModel->lb_contract_id = $model->lb_record_primary_key;
                 $documentModel->lb_document_url = $dataDocument->lb_document_url;
                 $documentModel->lb_document_name = $dataDocument->lb_document_name;
                 $documentModel->lb_document_url_icon = $dataDocument->lb_document_url_icon;
                 $documentModel->save();
                 // DONE
             }
             //**** End upload doxument ****//
             ///////////////////////////////////////////////////////////////////////////////
             //********* add new invoice *************/
             if (isset($LbContracts['check_invoice'])) {
                 $invoiceModel = new LbInvoice();
                 // get basic info to assign to this record
                 $ownCompany = LbCustomer::model()->getOwnCompany();
                 $ownCompanyAddress = null;
                 $customerCompany = new LbCustomer();
                 $customerCompany->lb_customer_name = 'Click to choose customer';
                 // get own company address
                 if ($ownCompany->lb_record_primary_key) {
                     // auto assign owner company
                     $invoiceModel->lb_invoice_company_id = $ownCompany->lb_record_primary_key;
                     $own_company_addresses = LbCustomerAddress::model()->getActiveAddresses($ownCompany->lb_record_primary_key, $ownCompany::LB_QUERY_RETURN_TYPE_MODELS_ARRAY);
                     if (count($own_company_addresses)) {
                         $ownCompanyAddress = $own_company_addresses[0];
                         // auto assign owner company's address
                         $invoiceModel->lb_invoice_company_address_id = $ownCompanyAddress->lb_record_primary_key;
                     }
                 }
                 // add infor customer in invoice
                 $invoiceModel->lb_invoice_customer_id = $contractModel->lb_customer_id;
                 $invoiceModel->lb_invoice_customer_address_id = $contractModel->lb_address_id;
                 $invoiceModel->lb_invoice_attention_contact_id = $contractModel->lb_contact_id;
                 if ($invoiceModel->save()) {
                     // Save Lien ket contract va invoice
                     $contrctInvoiceModel = new LbContractInvoice();
                     $contrctInvoiceModel->lb_contract_id = $model->lb_record_primary_key;
                     $contrctInvoiceModel->lb_invoice_id = $invoiceModel->lb_record_primary_key;
                     $contrctInvoiceModel->save();
                     //Update invoice no vaf status I-OPEN
                     $invoiceModel->confirm();
                     // add invoice to database right away.
                     // other fields will be updated on the invoice page later on
                     $invoiceModel->saveUnconfirmed();
                     //
                     // == Prepare line items grid
                     // add 1 line-item by default
                     //
                     $blankItem = new LbInvoiceItem();
                     $blankItem->lb_invoice_id = $invoiceModel->lb_record_primary_key;
                     $blankItem->lb_invoice_item_description = "Contract payment for contract " . $model->lb_contract_no . ", " . $model->lb_contract_type . ", for period " . $model->lb_contract_date_start . " to " . $model->lb_contract_date_end;
                     $blankItem->lb_invoice_item_quantity = 1;
                     $blankItem->lb_invoice_item_value = $model->lb_contract_amount;
                     $blankItem->lb_invoice_item_total = $model->lb_contract_amount;
                     $blankItem->lb_invoice_item_type = LbInvoiceItem::LB_INVOICE_ITEM_TYPE_LINE;
                     $blankItem->save();
                     // add tax
                     $blankTax = new LbInvoiceItem();
                     $default_tax = LbTax::model()->getDefaultTax();
                     //$value_tax = ($default_tax->lb_tax_value/100) * $model->lb_contract_amount;
                     $blankTax->lb_invoice_id = $invoiceModel->lb_record_primary_key;
                     $blankTax->lb_invoice_item_description = $default_tax !== null ? $default_tax->lb_record_primary_key : 'Tax';
                     $blankTax->lb_invoice_item_quantity = 1;
                     $blankTax->lb_invoice_item_value = $default_tax !== null ? $default_tax->lb_tax_value : '0';
                     $blankTax->lb_invoice_item_total = 0;
                     $blankTax->lb_invoice_item_type = LbInvoiceItem::LB_INVOICE_ITEM_TYPE_TAX;
                     $blankTax->save();
                     $invoiceItemModel = new LbInvoiceItem('search');
                     $invoiceItemModel->unsetAttributes();
                     // clear any default values
                     $invoiceItemModel->lb_invoice_id = $invoiceModel->lb_record_primary_key;
                     // totals - create a blank total record, set everything to zero: subtotal, after disc, after tax, paid, outstanding....
                     $invoiceTotal = new LbInvoiceTotal();
                     $invoiceTotal->lb_invoice_id = $invoiceModel->lb_record_primary_key;
                     $invoiceTotal->lb_invoice_revision_id = 0;
                     // latest version
                     $invoiceTotal->lb_invoice_subtotal = $model->lb_contract_amount;
                     $invoiceTotal->lb_invoice_total_after_discounts = $model->lb_contract_amount;
                     $invoiceTotal->lb_invoice_total_after_taxes = $model->lb_contract_amount;
                     $invoiceTotal->lb_invoice_total_outstanding = $model->lb_contract_amount;
                     $invoiceTotal->lb_invoice_total_paid = 0;
                     $invoiceTotal->save();
                     // == end items grid data prep
                     // Uncomment the following line if AJAX validation is needed
                     // $this->performAjaxValidation($model);
                     $invoiceDiscountModel = new LbInvoiceItem();
                     $invoiceDiscountModel->lb_invoice_item_type = LbInvoiceItem::LB_INVOICE_ITEM_TYPE_DISCOUNT;
                     $invoiceTaxModel = new LbInvoiceItem();
                     $invoiceTaxModel->lb_invoice_item_type = LbInvoiceItem::LB_INVOICE_ITEM_TYPE_TAX;
                     //*** End add invoice **/
                     ///////////////////////////////////////////////////////////////////////////////////////////////
                     //************** Add payment *************//
                     if (isset($LbContracts['payment_amount']) && $LbContracts['payment_amount'] != 0) {
                         $paymentModel = new LbPayment();
                         $paymentModel->attributes = $_POST['LbPayment'];
                         $paymentModel->lb_payment_customer_id = $contractModel->lb_customer_id;
                         $paymentModel->lb_payment_no = LbPayment::model()->FormatPaymentNo();
                         $paymentModel->lb_payment_total = $LbContracts['payment_amount'];
                         if ($paymentModel->save()) {
                             LbPayment::model()->setPaymentNextNum(LbPayment::model()->getPaymentNextNum());
                             $paymentItemModel = new LbPaymentItem();
                             $paymentItemModel->lb_payment_id = $paymentModel->lb_record_primary_key;
                             $paymentItemModel->lb_invoice_id = $invoiceModel->lb_record_primary_key;
                             $paymentItemModel->lb_payment_item_note = "";
                             $paymentItemModel->lb_payment_item_amount = $LbContracts['payment_amount'];
                             if ($paymentItemModel->save()) {
                                 $invoice_total = LbInvoiceTotal::model()->getInvoiceTotal($paymentItemModel->lb_invoice_id);
                                 if ($invoice_total) {
                                     $invoice_total->calculateInvoicetotalPaid($paymentItemModel->lb_invoice_id);
                                     $total_outstanding = $invoice_total->calculateInvoiceTotalOutstanding();
                                     if ($total_outstanding) {
                                         //Update Status
                                         LbInvoice::model()->InvoiceUpdateStatus($invoiceModel->lb_record_primary_key);
                                     }
                                 }
                                 echo "{succes}";
                             }
                         }
                     }
                 }
             }
             $contractModel->lb_contract_status = LbContracts::LB_CONTRACT_STATUS_HAS_RENEWED;
             $contractModel->save();
             $this->redirect(array('view', 'id' => $model->lb_record_primary_key));
         }
     }
     $customer_id = "";
     if (isset($_POST['customer_id'])) {
         $customer_id = $_POST['customer_id'];
     }
     $this->render('_form_renew', array('model' => $contractModel, 'paymentModel' => $paymentModel));
 }