load->model('mdl_invoices'); $this->load->model('Mdl_items'); } public function index() { // Display all invoices by default redirect('invoices/status/all'); } /** * @param string $status * @param int $page */ public function status($status = 'all', $page = 0) { //echo 'main'; // Determine which group of invoices to load switch ($status) { case 'draft': $this->mdl_invoices->is_draft(); break; case 'sent': $this->mdl_invoices->is_sent(); break; case 'viewed': $this->mdl_invoices->is_viewed(); break; case 'paid': $this->mdl_invoices->is_paid(); break; case 'overdue': $this->mdl_invoices->is_overdue(); break; } $this->mdl_invoices->paginate(site_url('invoices/status/' . $status), $page); $invoices = $this->mdl_invoices->result(); //print_r($invoices); $this->layout->set( array( 'invoices' => $invoices, 'status' => $status, 'filter_display' => true, 'filter_placeholder' => trans('filter_invoices'), 'filter_method' => 'filter_invoices', 'invoice_statuses' => $this->mdl_invoices->statuses() ) ); $this->layout->buffer('content', 'invoices/index'); $this->layout->render(); } public function archive() { $invoice_array = array(); if (isset($_POST['invoice_number'])) { $invoiceNumber = $_POST['invoice_number']; $invoice_array = glob('./uploads/archive/*' . '_' . $invoiceNumber . '.pdf'); $this->layout->set( array( 'invoices_archive' => $invoice_array)); $this->layout->buffer('content', 'invoices/archive'); $this->layout->render(); } else { foreach (glob('./uploads/archive/*.pdf') as $file) { array_push($invoice_array, $file); } rsort($invoice_array); $this->layout->set( array( 'invoices_archive' => $invoice_array)); $this->layout->buffer('content', 'invoices/archive'); $this->layout->render(); } } /** * @param $invoice */ public function download($invoice) { header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="' . $invoice . '"'); readfile('./uploads/archive/' . $invoice); } /** * @param $invoice_id */ public function view($invoice_id) { $this->load->model( array( 'mdl_items', 'tax_rates/mdl_tax_rates', 'payment_methods/mdl_payment_methods', 'mdl_invoice_tax_rates', 'custom_fields/mdl_custom_fields', ) ); $this->load->helper("custom_values"); $this->load->helper("client"); $this->load->model('units/mdl_units'); $this->load->module('payments'); $this->load->model('products/mdl_products'); $this->load->model('custom_values/mdl_custom_values'); $this->load->model('custom_fields/mdl_invoice_custom'); $this->db->reset_query(); /*$invoice_custom = $this->mdl_invoice_custom->where('invoice_id', $invoice_id)->get(); if ($invoice_custom->num_rows()) { $invoice_custom = $invoice_custom->row(); unset($invoice_custom->invoice_id, $invoice_custom->invoice_custom_id); foreach ($invoice_custom as $key => $val) { $this->mdl_invoices->set_form_value('custom[' . $key . ']', $val); } }*/ // $quo = $this->input->post('quote_id'); $fields = $this->mdl_invoice_custom->by_id($invoice_id)->get()->result(); //print_r($fields); $invoice = $this->mdl_invoices->get_by_id($invoice_id); //print_r($invoice); //print_r($invoice_id);die; if (!$invoice) { show_404(); } //$ClientID = ''; // foreach ($invoice[0] as $key ) { $InvoiceDetails = json_decode(json_encode($invoice),true); $ClientID = $InvoiceDetails['client_id']; ///print_r($InvoiceDetails); $quote=$InvoiceDetails['Qid']; $bqty =''; $sqty =''; $oqty = ''; if($InvoiceDetails['quote_id'] !="") { // echo "quoteid"; // echo $InvoiceDetails['quote_id']; $balqty =$this->mdl_invoices->getinvbalqty($InvoiceDetails['quote_id']); } else if($InvoiceDetails['Qid']!="") { // echo "qid"; // echo $InvoiceDetails['Qid']; $balqty =$this->mdl_invoices->getinvbalqty($InvoiceDetails['Qid']); } // print_r($balqty); if(!empty($balqty)) { foreach($balqty as $bal) { $bqty= $bal->item_balancequantity; $sqty= $bal->item_suppliedquantity; $oqty= $bal->item_quantity; } } //echo $bqty; // if($InvoiceDetails['quote_id'] != '') // { // $quoteid = $InvoiceDetails['quote_id']; // $GetQuotetax = $this->mdl_invoices->GetQuoteamount($quoteid); // } // $quoteid = $InvoiceDetails['quote_id']; // // echo $quo; //echo $ClientID; // } /*foreach ($invoice as $inv) { $ClientID = $inv->client_id; } echo $ClientID; */ $PaymentDays = $this->mdl_invoices->GetPaymentDays($invoice_id,$ClientID,'51'); $GetSecondaryAddress = $this->mdl_invoices->GetSecondaryAddress($ClientID); //print_r($GetSecondaryAddress); $GetClientState = $this->mdl_invoices->GetState($ClientID); // $GetClientStateCode = $this->mdl_invoices->GetStateCode($ClientID,'12'); //print_r( $GetClientStateCode); $get_invoice_items= $this->mdl_invoices->Get_invoiceitems($invoice_id); if(empty($get_invoice_items)) { $drp_check=1; } else { $drp_check=0; } $GetClientPrimaryStateCode = $this->mdl_invoices->GetPrimaryStateCode($ClientID,'12'); $GetClientSecondaryStateCode = $this->mdl_invoices->GetSecondaryStateCode($ClientID,'57'); // print_r($GetClientPrimaryStateCode); // print_r($GetClientSecondaryStateCode); $primarystatecode=''; foreach ($GetClientPrimaryStateCode as $primary) { $primarystatecode=$primary->client_custom_fieldvalue; } $secondarystatecode=''; foreach ($GetClientSecondaryStateCode as $secondary) { $secondarystatecode=$secondary->client_custom_fieldvalue; } // echo $secondarystatecode; // echo $primarystatecode; $getSecondayAddressSelected = $this->mdl_invoices->getSecondayAddressSelected($invoice_id,'44'); //print_r($GetSecondaryAddress); $custom_fields = $this->mdl_custom_fields->by_table('ip_invoice_custom')->get()->result(); $custom_values = []; //print_r($custom_fields); foreach ($custom_fields as $custom_field) { if (in_array($custom_field->custom_field_type, $this->mdl_custom_values->custom_value_fields())) { $values = $this->mdl_custom_values->get_by_fid($custom_field->custom_field_id)->result(); //print_r($values); $custom_values[$custom_field->custom_field_id] = $values; } } //print_r($custom_fields);die; foreach ($custom_fields as $cfield) { foreach ($fields as $fvalue) { if ($fvalue->invoice_custom_fieldid == $cfield->custom_field_id) { // TODO: Hackish, may need a better optimization //echo $fvalue->invoice_custom_fieldid ; if ($fvalue->invoice_custom_fieldid == "7" && $fvalue->invoice_custom_fieldvalue == '') { echo $fvalue->invoice_custom_fieldvalue; $this->mdl_invoices->set_form_value( 'custom[' . $cfield->custom_field_id . ']', 'By Road' ); } else { $this->mdl_invoices->set_form_value( 'custom[' . $cfield->custom_field_id . ']', $fvalue->invoice_custom_fieldvalue ); } break; } } } $clientid = $this->mdl_invoices->get_clientid($invoice_id); foreach($clientid as $cl) { $client_id= $cl->client_id; } $creditststus= $this->mdl_invoices->getcreditstatus($invoice_id); //print_r($creditststus); $crestatus=''; foreach($creditststus as $cre) { $crestatus=$cre->credit_status; } $parentqty= $this->mdl_invoices->getinv_parentqty($invoice_id); // print_r($parentqty); $parent_inv_qty = ''; if(!empty($parentqty)) { foreach($parentqty as $pa) { $parent_inv_qty = $pa->item_quantity; } } //echo $parent_inv_qty; //$taxcheck=$this->mdl_invoices->get_taxcheck($invoice_id); //print_r($taxcheck); // if(!empty($taxcheck)) // { // $exctax=$taxcheck[0]->taxcheck; // } // else // { // $exctax=0; // } //echo $exctax; // $quotes = $this->Mdl_items->get_quotes($client_id); // print_r($quotes); // $inv_status= $this->mdl_invoices->get_status($invoice_id) //$product = $this->Mdl_items->get_product(); //print_r($product);die; // $state=$this->test(); // echo $state; $this->layout->set( array( 'invoice' => $invoice, 'Duedate' =>$PaymentDays, 'GetSecondary' =>$GetSecondaryAddress, 'GetState'=>$GetClientState, 'getSecondaySelected' => $getSecondayAddressSelected, 'GetClientPrimaryStateCode'=>$GetClientPrimaryStateCode, 'GetClientSecondaryStateCode'=>$GetClientSecondaryStateCode, 'items' => $this->mdl_items->where('invoice_id', $invoice_id)->get()->result(), 'invoice_id' => $invoice_id, 'drop_check' => $drp_check, 'clientid' => $this->mdl_invoices->get_clientid($invoice_id), 'products' => $this->Mdl_items->get_product(), 'quotes' => $this->Mdl_items->get_quotes($client_id), 'producttax'=>$this->Mdl_items->get_tax(), 'tax_rates' => $this->mdl_tax_rates->get()->result(), 'invoice_tax_rates' => $this->mdl_invoice_tax_rates->where('invoice_id', $invoice_id)->get()->result(), 'creditstatus'=>$crestatus, 'balancequoteqty'=>$bqty, 'parentinvoiceqty'=>$parent_inv_qty, 'suppliedquoteqty'=>$sqty, 'orderedquoteqty'=>$oqty, 'units' => $this->mdl_units->get()->result(), 'payment_methods' => $this->mdl_payment_methods->get()->result(), 'custom_fields' => $custom_fields, 'custom_values' => $custom_values, 'fields'=>$fields, 'custom_js_vars' => array( 'currency_symbol' => get_setting('currency_symbol'), 'currency_symbol_placement' => get_setting('currency_symbol_placement'), 'decimal_point' => get_setting('decimal_point') ), 'invoice_statuses' => $this->mdl_invoices->statuses(), 'quoteid' =>$InvoiceDetails['quote_id'], 'qid' =>$quote, 'inv_status'=> $this->mdl_invoices->get_status($invoice_id) ) ); // print_r($custom_values); if ($invoice->sumex_id != null) { $this->layout->buffer( array( array('modal_delete_invoice', 'invoices/modal_delete_invoice'), array('modal_add_invoice_tax', 'invoices/modal_add_invoice_tax'), array('modal_add_payment', 'payments/modal_add_payment'), array('content', 'invoices/view_sumex') ) ); } else { $this->layout->buffer( array( array('modal_delete_invoice', 'invoices/modal_delete_invoice'), array('modal_add_invoice_tax', 'invoices/modal_add_invoice_tax'), array('modal_add_payment', 'payments/modal_add_payment'), array('content', 'invoices/view') ) ); } $this->layout->render(); } public function view1($invoice_id) { //echo 'Edit';die; $this->layout->buffer('content', 'invoices/view'); $this->layout->render(); } public function get_quote_items() { $this->load->model('quotes/mdl_quote_items'); $quote_id = $this->input->post('qid'); $quote_no = $this->input->post('quno'); $invoice_id = $this->input->post('invoice_id'); $pono=''; $podate=''; $quote_item = $this->Mdl_items->get_quoteproduct($quote_id); foreach($quote_item as $qu) { $pono= $qu->quote_pono; $podate= $qu->po_date_created; $cpofieldid= '14'; $cdatefieldid = '15'; $timestamp = strtotime($podate); $dmy = date("d-m-Y", $timestamp); } //echo "pono".$pono; //echo "podate".$dmy; //die(); $db_array = array('61'=>'','40'=>'','42'=>'','38'=>'','41'=>'','53'=>'','39'=>'','43'=>'','54'=>'','44'=>'','10'=>'','14'=>$pono,'15'=>$dmy,'7'=>'','8'=>'','58'=>'','62'=>'','64'=>''); //print_r($db_array); $this->load->model('custom_fields/mdl_invoice_custom'); $result = $this->mdl_invoice_custom->save_custom($invoice_id, $db_array); die(json_encode(array('quotedetails' =>$quote_item))); } /** * @param $invoice_id */ public function delete($invoice_id) { // Get the status of the invoice $invoice = $this->mdl_invoices->get_by_id($invoice_id); $invoice_status = $invoice->invoice_status_id; if ($invoice_status == 1 || $this->config->item('enable_invoice_deletion') === true) { // If invoice refers to tasks, mark those tasks back to 'Complete' $this->load->model('tasks/mdl_tasks'); $tasks = $this->mdl_tasks->update_on_invoice_delete($invoice_id); // Delete the invoice $this->mdl_invoices->delete($invoice_id); } else { // Add alert that invoices can't be deleted $this->session->set_flashdata('alert_error', trans('invoice_deletion_forbidden')); } // Redirect to invoice index redirect('invoices/index'); } /** * @param $invoice_id * @param $item_id */ public function delete_item($invoice_id, $item_id) { // Delete invoice item $this->load->model('mdl_items'); $item = $this->mdl_items->delete($item_id); // Mark item back to complete: if ($item && $item->item_task_id) { $this->load->model('tasks/mdl_tasks'); $this->mdl_tasks->update_status(3, $item->item_task_id); } // Redirect to invoice view redirect('invoices/view/' . $invoice_id); } /** * @param $invoice_id * @param bool $stream * @param null $invoice_template */ public function generate_pdf($invoice_id, $stream = true, $invoice_template = null) { $this->load->helper('pdf'); if (get_setting('mark_invoices_sent_pdf') == 1) { $this->mdl_invoices->mark_sent($invoice_id); } generate_invoice_pdf($invoice_id, $stream, $invoice_template, null); } /** * @param $invoice_id */ public function generate_zugferd_xml($invoice_id) { $this->load->model('invoices/mdl_items'); $this->load->library('ZugferdXml', array( 'invoice' => $this->mdl_invoices->get_by_id($invoice_id), 'items' => $this->mdl_items->where('invoice_id', $invoice_id)->get()->result() )); $this->output->set_content_type('text/xml'); $this->output->set_output($this->zugferdxml->xml()); } public function generate_sumex_pdf($invoice_id) { $this->load->helper('pdf'); generate_invoice_sumex($invoice_id); } public function generate_sumex_copy($invoice_id) { $this->load->model('invoices/mdl_items'); $this->load->library('Sumex', array( 'invoice' => $this->mdl_invoices->get_by_id($invoice_id), 'items' => $this->mdl_items->where('invoice_id', $invoice_id)->get()->result(), 'options' => array( 'copy' => "1", 'storno' => "0" ) )); $this->output->set_content_type('application/pdf'); $this->output->set_output($this->sumex->pdf()); } /** * @param $invoice_id * @param $invoice_tax_rate_id */ //$invoice_id,$invoice_tax_rate_id public function delete_invoice_tax() { $tcsamount=$this->input->post('tcs'); $invoice_id=$this->input->post('inv_id'); $invoice_amount=$this->input->post('invoiceamount'); $invoice_balance=$this->input->post('inv_balance'); $this->load->model('mdl_invoice_tax_rates'); $res=$this->mdl_invoice_tax_rates->invoice_delete($invoice_id,$invoice_amount,$invoice_balance); $res1=$this->mdl_invoice_tax_rates->invoice_delete_tax($invoice_id); //$res = $this->mdl_invoice_amounts->invoice_delete($bankdata,$bankid); } // public function delete_invoice_tax() // { // print_r('maran'); // $tcsamount=$this->input->post('tcs'); // $invoice_id=$this->input->post('inv_id'); // print_r($tcsamount); // print_r($invoice_id); // die(); // $this->load->model('mdl_invoice_tax_rates'); // $this->mdl_invoice_tax_rates->delete($invoice_tax_rate_id); // $this->load->model('mdl_invoice_amounts'); // $this->mdl_invoice_amounts->calculate($invoice_id); // redirect('invoices/view/' . $invoice_id); // } public function recalculate_all_invoices() { $this->db->select('invoice_id'); $invoice_ids = $this->db->get('ip_invoices')->result(); $this->load->model('mdl_invoice_amounts'); foreach ($invoice_ids as $invoice_id) { $this->mdl_invoice_amounts->calculate($invoice_id->invoice_id); } } function test(){ $data = $this->input->post('state'); // $invoice = $this->input->post('invoice_id'); echo $data; //return $data; $obj=json_encode($data); return $obj; } public function po_details() { $this->layout->buffer('content', 'invoices/po_details'); $this->layout->render(); } // public function polistcheck() // { // $this->layout->buffer('content', 'invoices/polistcheck'); // $this->layout->render(); // } public function modal_create_poinvoice() { $this->load->module('layout'); $this->load->model('invoice_groups/mdl_invoice_groups'); $this->load->model('tax_rates/mdl_tax_rates'); $this->load->model('clients/mdl_clients'); $customerid = $this->input->post('customerid'); // $data = array( // 'invoice_groups' => $this->mdl_invoice_groups->get()->result(), // 'tax_rates' => $this->mdl_tax_rates->get()->result(), // 'client' => $this->mdl_clients->get_by_id($customerid ), // 'clients' => $this->mdl_clients->get_latest(), // ); // $this->layout->load_view('invoices/modal_create_poinvoice', $data); } }