芝麻web文件管理V1.00
编辑当前文件:/home/qrafawbu/www/breadwinnerv2/application/controllers/Invoices.php
load->model('invoices_model', 'invocies'); $this->load->library("Aauth"); if (!$this->aauth->is_loggedin()) { redirect('/user/', 'refresh'); } if ($this->aauth->get_user()->roleid < 2) { exit('
Sorry! You have insufficient permissions to access this section
'); } if ($this->aauth->get_user()->roleid == 2) { $this->limited = $this->aauth->get_user()->id; } else { $this->limited = ''; } } //create invoice public function create() { $this->load->model('customers_model', 'customers'); $this->load->model('plugins_model', 'plugins'); $data['exchange'] = $this->plugins->universal_api(5); $data['customergrouplist'] = $this->customers->group_list(); $data['lastinvoice'] = $this->invocies->lastinvoice(); $data['warehouse'] = $this->invocies->warehouses(); $data['terms'] = $this->invocies->billingterms(); $data['currency'] = $this->invocies->currencies(); $head['title'] = "New Invoice"; $head['usernm'] = $this->aauth->get_user()->username; $this->load->view('fixed/header', $head); $this->load->view('invoices/newinvoice', $data); $this->load->view('fixed/footer'); } //edit invoice public function edit() { $tid = intval($this->input->get('id')); $data['id'] = $tid; $data['title'] = "Edit Invoice $tid"; $this->load->model('customers_model', 'customers'); $data['customergrouplist'] = $this->customers->group_list(); $data['terms'] = $this->invocies->billingterms(); $data['currency'] = $this->invocies->currencies(); $data['invoice'] = $this->invocies->invoice_details($tid, $this->limited); if ($data['invoice']) $data['products'] = $this->invocies->invoice_products($tid); $head['title'] = "Edit Invoice #$tid"; $head['usernm'] = $this->aauth->get_user()->username; $data['warehouse'] = $this->invocies->warehouses(); $this->load->model('plugins_model', 'plugins'); $data['exchange'] = $this->plugins->universal_api(5); $this->load->view('fixed/header', $head); if ($data['invoice']) $this->load->view('invoices/edit', $data); $this->load->view('fixed/footer'); } //invoices list public function index() { $head['title'] = "Manage Invoices"; $head['usernm'] = $this->aauth->get_user()->username; $this->load->view('fixed/header', $head); $this->load->view('invoices/invoices'); $this->load->view('fixed/footer'); } //action public function action() { $customer_id = $this->input->post('customer_id',true); $invocieno = $this->input->post('invocieno',true); $invoicedate = $this->input->post('invoicedate',true); $invocieduedate = $this->input->post('invocieduedate',true); $notes = $this->input->post('notes',true); $tax = $this->input->post('tax_handle'); $subtotal = $this->input->post('subtotal',true); $shipping = $this->input->post('shipping'); $refer = $this->input->post('refer',true); $total = $this->input->post('total'); $project = $this->input->post('prjid'); $total_tax = 0; $total_discount = 0; $discountFormat = $this->input->post('discountFormat'); $pterms = $this->input->post('pterms'); $currency = $this->input->post('mcurrency'); $i = 0; if ($discountFormat == '0') { $discstatus = 0; } else { $discstatus = 1; } if ($customer_id == 0) { echo json_encode(array('status' => 'Error', 'message' => $this->lang->line('Please add a new client'))); exit; } $this->db->trans_start(); //products $pid = $this->input->post('pid'); $productlist = array(); $prodindex = 0; $itc = 0; $flag = false; $msg=''; if ($tax == 'yes') { $textst = 1; foreach ($pid as $key => $value) { $product_id = $this->input->post('pid'); $product_name1 = $this->input->post('product_name'); $product_qty = $this->input->post('product_qty'); $product_price = $this->input->post('product_price'); $product_tax = $this->input->post('product_tax'); $product_discount = $this->input->post('product_discount'); $product_subtotal = $this->input->post('product_subtotal'); $ptotal_tax = $this->input->post('taxa'); $ptotal_disc = $this->input->post('disca'); $product_des = $this->input->post('product_description'); $total_discount += $ptotal_disc[$key]; $total_tax += $ptotal_tax[$key]; $data = array( 'tid' => $invocieno, 'pid' => $product_id[$key], 'product' => $product_name1[$key], 'qty' => $product_qty[$key], 'price' => $product_price[$key], 'tax' => $product_tax[$key], 'discount' => $product_discount[$key], 'subtotal' => $product_subtotal[$key], 'totaltax' => $ptotal_tax[$key], 'totaldiscount' => $ptotal_disc[$key], 'product_des' => $product_des[$key] ); $flag = true; $productlist[$prodindex] = $data; $i++; $prodindex++; $amt = intval($product_qty[$key]); if ($product_id[$key] > 0) { $this->db->select('product_name,qty'); $this->db->from('products'); $this->db->where('pid', $product_id[$key]); $query = $this->db->get(); $product = $query->row_array(); if($product['qty']-$amt>=0) { $this->db->set('qty', "qty-$amt", FALSE); $this->db->where('pid', $product_id[$key]); $this->db->update('products'); } else { $msg.=$product['product_name'].' (Low Stock)
'; $flag = false; } } $itc += $amt; } } else { $textst = 0; foreach ($pid as $key => $value) { $product_id = $this->input->post('pid'); $product_name1 = $this->input->post('product_name',true); $product_qty = $this->input->post('product_qty'); $product_price = $this->input->post('product_price'); $product_discount = $this->input->post('product_discount'); $product_subtotal = $this->input->post('product_subtotal'); $ptotal_disc = $this->input->post('disca'); $product_des = $this->input->post('product_description',true); $total_discount += $ptotal_disc[$key]; $data = array( 'tid' => $invocieno, 'pid' => $product_id[$key], 'product' => $product_name1[$key], 'qty' => $product_qty[$key], 'price' => $product_price[$key], 'discount' => $product_discount[$key], 'subtotal' => $product_subtotal[$key], 'totaldiscount' => $ptotal_disc[$key], 'product_des' => $product_des[$key] ); $flag = true; $productlist[$prodindex] = $data; $i++; $prodindex++; } //stock $amt = intval($product_qty[$key]); if ($product_id[$key] > 0) { $this->db->select('product_name,qty'); $this->db->from('products'); $this->db->where('pid', $product_id[$key]); $query = $this->db->get(); $product = $query->row_array(); if($product['qty']-$amt>=0) { $this->db->set('qty', "qty-$amt", FALSE); $this->db->where('pid', $product_id[$key]); $this->db->update('products'); } else { $msg.=$product['product_name'].' (Low Stock)
'; $flag = false; } } $itc += $amt; } $transok = true; //Invoice Data $bill_date = datefordatabase($invoicedate); $bill_due_date = datefordatabase($invocieduedate); $data = array('tid' => $invocieno, 'invoicedate' => $bill_date, 'invoiceduedate' => $bill_due_date, 'subtotal' => $subtotal, 'shipping' => $shipping, 'discount' => $total_discount, 'tax' => $total_tax, 'total' => $total, 'notes' => $notes, 'csd' => $customer_id, 'eid' => $this->aauth->get_user()->id, 'items' => $itc, 'taxstatus' => $textst, 'discstatus' => $discstatus, 'format_discount' => $discountFormat, 'refer' => $refer, 'term' => $pterms, 'multi' => $currency); if ($flag == true) { $this->db->insert_batch('invoice_items', $productlist); if ($this->db->insert('invoices', $data)) { $validtoken = hash_hmac('ripemd160', $invocieno, $this->config->item('encryption_key')); $link = base_url('billing/view?id=' . $invocieno . '&token=' . $validtoken); echo json_encode(array('status' => 'Success', 'message' => $this->lang->line('Invoice Success') . "
" . $this->lang->line('View') . "
" . $this->lang->line('Public View') . "
")); } else { echo json_encode(array('status' => 'Error', 'message' => "Invalid Entry!")); $transok = false; } } else { echo json_encode(array('status' => 'Error', 'message' => $msg." Please choose product from product list. Go to Item manager section if you have not added the products.")); $transok = false; } if (($this->aauth->get_user()->roleid > 3) AND $project > 0) { $data = array('pid' => $project, 'meta_key' => 11, 'meta_data' => $invocieno, 'value' => '0'); $this->db->insert('project_meta', $data); } if ($transok) { $this->db->trans_complete(); } else { $this->db->trans_rollback(); } } public function ajax_list() { $list = $this->invocies->get_datatables($this->limited); $data = array(); $no = $this->input->post('start'); foreach ($list as $invoices) { $no++; $row = array(); $row[] = $no; $row[] = $invoices->tid; $row[] = $invoices->name; $row[] = dateformat($invoices->invoicedate); $row[] = amountFormat($invoices->total); $row[] = '
' . $this->lang->line(ucwords($invoices->status)) . '
'; $row[] = '
tid") . '" class="btn btn-success btn-xs">
' . $this->lang->line('View') . '
tid") . '&d=1" class="btn btn-info btn-xs" title="Download">
'; $data[] = $row; } $output = array( "draw" => $_POST['draw'], "recordsTotal" => $this->invocies->count_all($this->limited), "recordsFiltered" => $this->invocies->count_filtered($this->limited), "data" => $data, ); //output to json format echo json_encode($output); } public function view() { $this->load->model('accounts_model'); $data['acclist'] = $this->accounts_model->accountslist(); $tid = intval($this->input->get('id')); $data['id'] = $tid; $head['title'] = "View Invoice $tid"; $data['invoice'] = $this->invocies->invoice_details($tid, $this->limited); $data['attach'] = $this->invocies->attach($tid); if ($data['invoice']) $data['products'] = $this->invocies->invoice_products($tid); if ($data['invoice']) $data['activity'] = $this->invocies->invoice_transactions($tid); $data['employee'] = $this->invocies->employee($data['invoice']['eid']); $head['usernm'] = $this->aauth->get_user()->username; $this->load->view('fixed/header', $head); if ($data['invoice']) $this->load->view('invoices/view', $data); $this->load->view('fixed/footer'); } public function printinvoice() { $tid = intval($this->input->get('id')); $data['id'] = $tid; $data['title'] = "Invoice $tid"; $data['invoice'] = $this->invocies->invoice_details($tid, $this->limited); if ($data['invoice']) $data['products'] = $this->invocies->invoice_products($tid); if ($data['invoice']) $data['employee'] = $this->invocies->employee($data['invoice']['eid']); ini_set('memory_limit', '-1'); $html = $this->load->view('invoices/view-print-'.LTR, $data, true); $html2 = $this->load->view('invoices/header-print-'.LTR, $data, true); //PDF Rendering $this->load->library('pdf_invoice'); $pdf = $this->pdf_invoice->load(); $pdf->SetHTMLHeader($html2); $pdf->SetHTMLFooter('
{PAGENO}/{nbpg} #'.$tid.'
'); $pdf->WriteHTML($html); if ($this->input->get('d')) { $pdf->Output('Invoice_#' . $tid . '.pdf', 'D'); } else { $pdf->Output('Invoice_#' . $tid . '.pdf', 'I'); } } public function delete_i() { $id = $this->input->post('deleteid'); if ($this->invocies->invoice_delete($id, $this->limited)) { echo json_encode(array('status' => 'Success', 'message' => $this->lang->line('DELETED'))); } else { echo json_encode(array('status' => 'Error', 'message' => $this->lang->line('ERROR'))); } } public function editaction() { $customer_id = $this->input->post('customer_id'); $invocieno = $this->input->post('invocieno'); $invoicedate = $this->input->post('invoicedate'); $invocieduedate = $this->input->post('invocieduedate'); $notes = $this->input->post('notes',true); $tax = $this->input->post('tax_handle'); $subtotal = $this->input->post('subtotal'); $shipping = $this->input->post('shipping'); $refer = $this->input->post('refer',true); $total = $this->input->post('total'); $total_tax = 0; $total_discount = 0; $discountFormat = $this->input->post('discountFormat'); $pterms = $this->input->post('pterms'); $currency = $this->input->post('mcurrency'); $i = 0; if ($this->limited) { $employee = $this->invocies->invoice_details($invocieno, $this->limited); if ($this->aauth->get_user()->id != $employee['eid']) exit(); } if ($discountFormat == '0') { $discstatus = 0; } else { $discstatus = 1; } if ($customer_id == 0) { echo json_encode(array('status' => 'Error', 'message' => $this->lang->line('Please add a new client'))); exit; } $this->db->trans_start(); $flag = false; $transok = true; //Product Data $pid = $this->input->post('pid'); $productlist = array(); $prodindex = 0; $itc = 0; $this->db->delete('invoice_items', array('tid' => $invocieno)); if ($tax == 'yes') { $taxstatus = 1; foreach ($pid as $key => $value) { $product_id = $this->input->post('pid'); $product_name1 = $this->input->post('product_name',true); $product_qty = $this->input->post('product_qty'); $old_product_qty = $this->input->post('old_product_qty'); $product_price = $this->input->post('product_price'); $product_tax = $this->input->post('product_tax'); $product_discount = $this->input->post('product_discount'); $product_subtotal = $this->input->post('product_subtotal'); $ptotal_tax = $this->input->post('taxa'); $ptotal_disc = $this->input->post('disca'); $product_des = $this->input->post('product_description',true); $total_discount += $ptotal_disc[$key]; $total_tax += $ptotal_tax[$key]; $data = array( 'tid' => $invocieno, 'pid' => $product_id[$key], 'product' => $product_name1[$key], 'qty' => $product_qty[$key], 'price' => $product_price[$key], 'tax' => $product_tax[$key], 'discount' => $product_discount[$key], 'subtotal' => $product_subtotal[$key], 'totaltax' => $ptotal_tax[$key], 'totaldiscount' => $ptotal_disc[$key], 'product_des' => $product_des[$key] ); $flag = true; $productlist[$prodindex] = $data; $i++; $prodindex++; if ($product_id[$key] > 0) { $amt = intval($product_qty[$key]) - intval(@$old_product_qty[$key]); $this->db->select('product_name,qty'); $this->db->from('products'); $this->db->where('pid', $product_id[$key]); $query = $this->db->get(); $product = $query->row_array(); if($product['qty']-$amt>=0) { $this->db->set('qty', "qty-$amt", FALSE); $this->db->where('pid', $product_id[$key]); $this->db->update('products'); } else { $msg.=$product['product_name'].' (Low Stock)
'; $flag = false; } } $itc += $amt; } } else { $taxstatus = 0; foreach ($pid as $key => $value) { $product_id = $this->input->post('pid'); $product_name1 = $this->input->post('product_name',true); $product_qty = $this->input->post('product_qty'); $old_product_qty = $this->input->post('old_product_qty'); $product_price = $this->input->post('product_price'); $product_discount = $this->input->post('product_discount'); $product_subtotal = $this->input->post('product_subtotal'); $product_des = $this->input->post('product_description',true); $ptotal_disc = $this->input->post('disca'); $total_discount += $ptotal_disc[$key]; $data = array( 'tid' => $invocieno, 'product' => $product_name1, 'qty' => $product_qty, 'price' => $product_price, 'discount' => $product_discount, 'subtotal' => $product_subtotal, 'product_des' => $product_des[$key] ); $flag = true; $productlist[$prodindex] = $data; $i++; $prodindex++; if ($product_id[$key] > 0) { $amt = intval($product_qty[$key]) - intval(@$old_product_qty[$key]); $this->db->select('product_name,qty'); $this->db->from('products'); $this->db->where('pid', $product_id[$key]); $query = $this->db->get(); $product = $query->row_array(); if($product['qty']-$amt>=0) { $this->db->set('qty', "qty-$amt", FALSE); $this->db->where('pid', $product_id[$key]); $this->db->update('products'); } else { $msg.=$product['product_name'].' (Low Stock)
'; $flag = false; } } $itc += $amt; } } $bill_date = datefordatabase($invoicedate); $bill_due_date = datefordatabase($invocieduedate); $data = array('invoicedate' => $bill_date, 'invoiceduedate' => $bill_due_date, 'subtotal' => $subtotal, 'shipping' => $shipping, 'discount' => $total_discount, 'tax' => $total_tax, 'total' => $total, 'notes' => $notes, 'csd' => $customer_id, 'items' => $itc, 'taxstatus' => $taxstatus, 'discstatus' => $discstatus, 'format_discount' => $discountFormat, 'refer' => $refer, 'term' => $pterms, 'multi' => $currency); $this->db->set($data); $this->db->where('tid', $invocieno); if ($flag) { if ($this->db->update('invoices', $data)) { $this->db->insert_batch('invoice_items', $productlist); echo json_encode(array('status' => 'Success', 'message' => $this->lang->line('Invoice has been updated') . "
" . $this->lang->line('View') . "
")); } else { echo json_encode(array('status' => 'Error', 'message' => $this->lang->line('ERROR'))); $transok = false; } } else { echo json_encode(array('status' => 'Error', 'message' => "Please add at least one product in invoice")); $transok = false; } if ($this->input->post('restock')) { foreach ($this->input->post('restock') as $key => $value) { $myArray = explode('-', $value); $prid = $myArray[0]; $dqty = $myArray[1]; if ($prid > 0) { $this->db->set('qty', "qty+$dqty", FALSE); $this->db->where('pid', $prid); $this->db->update('products'); } } } if ($transok) { $this->db->trans_complete(); } else { $this->db->trans_rollback(); } } public function update_status() { $tid = $this->input->post('tid'); $status = $this->input->post('status'); $this->db->set('status', $status); $this->db->where('tid', $tid); $this->db->update('invoices'); echo json_encode(array('status' => 'Success', 'message' => $this->lang->line('UPDATED'), 'pstatus' => $status)); } public function addcustomer() { $name = $this->input->post('name',true); $company = $this->input->post('company',true); $phone = $this->input->post('phone',true); $email = $this->input->post('email',true); $address = $this->input->post('address',true); $city = $this->input->post('city',true); $region = $this->input->post('region',true); $country = $this->input->post('country',true); $postbox = $this->input->post('postbox',true); $taxid = $this->input->post('taxid',true); $customergroup = $this->input->post('customergroup'); $name_s = $this->input->post('name_s',true); $phone_s = $this->input->post('phone_s',true); $email_s = $this->input->post('email_s',true); $address_s = $this->input->post('address_s',true); $city_s = $this->input->post('city_s',true); $region_s = $this->input->post('region_s',true); $country_s = $this->input->post('country_s',true); $postbox_s = $this->input->post('postbox_s',true); $this->load->model('customers_model', 'customers'); $this->customers->add($name, $company, $phone, $email, $address, $city, $region, $country, $postbox, $customergroup, $taxid, $name_s, $phone_s, $email_s, $address_s, $city_s, $region_s, $country_s, $postbox_s); } public function file_handling() { if($this->input->get('op')) { $name = $this->input->get('name'); $invoice = $this->input->get('invoice'); if ($this->invocies->meta_delete($invoice,1, $name)){ echo json_encode(array('status' => 'Success')); } } else { $id = $this->input->get('id'); $this->load->library("Uploadhandler_generic", array( 'accept_file_types' => '/\.(gif|jpe?g|png|docx|docs|txt|pdf|xls)$/i', 'upload_dir' => FCPATH . 'userfiles/attach/', 'upload_url' => base_url() . 'userfiles/attach/' )); $files = (string)$this->uploadhandler_generic->filenaam(); if ($files != '') { $this->invocies->meta_insert($id, 1, $files); } } } public function delivery() { $tid = intval($this->input->get('id')); $data['id'] = $tid; $data['title'] = "Invoice $tid"; $data['invoice'] = $this->invocies->invoice_details($tid, $this->limited); if ($data['invoice']) $data['products'] = $this->invocies->invoice_products($tid); if ($data['invoice']) $data['employee'] = $this->invocies->employee($data['invoice']['eid']); ini_set('memory_limit', '-1'); $html = $this->load->view('invoices/del_note', $data, true); //PDF Rendering $this->load->library('pdf'); $pdf = $this->pdf->load(); $pdf->SetHTMLFooter('
{PAGENO}/{nbpg} #'.$tid.'
'); $pdf->WriteHTML($html); if ($this->input->get('d')) { $pdf->Output('DO_#' . $tid . '.pdf', 'D'); } else { $pdf->Output('DO_#' . $tid . '.pdf', 'I'); } } public function proforma() { $tid = intval($this->input->get('id')); $data['id'] = $tid; $data['title'] = "Invoice $tid"; $data['invoice'] = $this->invocies->invoice_details($tid, $this->limited); if ($data['invoice']) $data['products'] = $this->invocies->invoice_products($tid); if ($data['invoice']) $data['employee'] = $this->invocies->employee($data['invoice']['eid']); ini_set('memory_limit', '-1'); $html = $this->load->view('invoices/proforma', $data, true); //PDF Rendering $this->load->library('pdf'); $pdf = $this->pdf->load(); $pdf->SetHTMLFooter('
{PAGENO}/{nbpg} #'.$tid.'
'); $pdf->WriteHTML($html); if ($this->input->get('d')) { $pdf->Output('Proforma_#' . $tid . '.pdf', 'D'); } else { $pdf->Output('Proforma_#' . $tid . '.pdf', 'I'); } } public function duplicate() { $tid = intval($this->input->get('id')); $data['id'] = $tid; $data['title'] = "New Invoice"; $this->load->model('customers_model', 'customers'); $data['lastinvoice'] = $this->invocies->lastinvoice(); $data['customergrouplist'] = $this->customers->group_list(); $data['terms'] = $this->invocies->billingterms(); $data['currency'] = $this->invocies->currencies(); $data['invoice'] = $this->invocies->invoice_details($tid, $this->limited); if ($data['invoice']) $data['products'] = $this->invocies->invoice_products($tid); $head['usernm'] = $this->aauth->get_user()->username; $data['warehouse'] = $this->invocies->warehouses(); $this->load->model('plugins_model', 'plugins'); $data['exchange'] = $this->plugins->universal_api(5); $this->load->view('fixed/header', $head); if ($data['invoice']) $this->load->view('invoices/duplicate', $data); $this->load->view('fixed/footer'); } }