|
Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /var/www/angkasapuraretail.com/public_html/application/controllers/admin/ |
Upload File : |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Orders extends Admin_Controller {
function __construct() {
parent::__construct();
$this->load->model('order_m');
$this->load->model('order_detail_m');
$this->load->model('configuration_m');
$this->load->model('customer_m');
$this->load->helper('shipping');
if (!in_array('orders', $this->data['allowed_module'])) {
$this->data['allowed'] = false;
} else {
$this->data['allowed'] = true;
}
if (!in_array('customers', $this->data['allowed_module'])) {
$this->data['allowedCust'] = false;
} else {
$this->data['allowedCust'] = true;
}
}
//this is to list all orders
public function index() {
//pagination in action. 100 results per page
$this->load->library('pagination');
$config['base_url'] = base_url() . 'admin/orders/index';
$config['per_page'] = 100;
$config["uri_segment"] = 4;
//fetch all orders
$config['total_rows'] = $this->order_m->record_count();
$this->pagination->initialize($config);
$this->data['orders'] = $this->order_m->get_all_orders($config["per_page"],
$this->uri->segment(4));
//load view
$this->data['subview'] = 'admin/orders/index';
$this->load->view('admin/templates/header', $this->data_header);
$this->load->view('admin/_layout_main', $this->data);
$this->load->view('admin/templates/footer');
}
//get all successful orders for specific customer only
public function customer($customer_id) {
//pagination in action. 20 results per page
$this->load->library('pagination');
$config['base_url'] = base_url() . 'admin/orders/customer';
$config['per_page'] = 100;
$config['uri_segment'] = 4;
//check number of orders
$this->db->select('id_orders');
$this->db->from('orders');
$this->db->where('customer_id', $customer_id);
$this->db->where('(payment_status=3 or payment_status=4 or payment_status=5)');
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
//get all orders
$this->db->select('*');
$this->db->from('orders');
$this->db->where('customer_id', $customer_id);
$this->db->where('(payment_status=3 or payment_status=4 or payment_status=5)');
$this->db->order_by('order_date', 'DESC');
//$this->db->limit($config['per_page'], $this->uri->segment($config['uri_segment']));
$this->data['orders'] = $this->db->get()->result();
//get customer data
$this->db->select('*')->from('customers')->where('id_customers', $customer_id);
$this->data['customer'] = $this->db->get()->row();
//load view
$this->data['subview'] = 'admin/orders/customer_orders';
$this->load->view('admin/templates/header', $this->data_header);
$this->load->view('admin/_layout_main', $this->data);
$this->load->view('admin/templates/footer');
}
/*filter order by*/
public function filter_order_by() {
$filter_key = $this->security->xss_clean($this->input->post('filter_key'));
//pagination in action. 100 results per page
$this->load->library('pagination');
$config['base_url'] = base_url() . 'admin/orders/filter_order_by';
$config['per_page'] = 100;
$config["uri_segment"] = 4;
if($filter_key == 'order_id'){
//fetch all orders
$this->db->select('*');
$this->db->from('orders');
$this->db->where('id_orders',$this->security->xss_clean($this->input->post('order_id')));
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
$this->db->where('id_orders',$this->security->xss_clean($this->input->post('order_id')));
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$this->data['orders'] = $this->db->get()->result();
}
elseif($filter_key == 'voucher'){
$this->db->select('*');
$this->db->from('orders');
$this->db->where('redeemed_voucher_code !=',null);
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
$this->db->where('redeemed_voucher_code !=',null);
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$this->data['orders'] = $this->db->get()->result();
}
elseif($filter_key == 'payment_status'){
$this->db->select('*');
$this->db->from('orders');
$this->db->where('payment_status',$this->security->xss_clean($this->input->post('payment_status')));
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
$this->db->where('payment_status',$this->security->xss_clean($this->input->post('payment_status')));
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$this->data['orders'] = $this->db->get()->result();
}
elseif($filter_key == 'payment_type'){
$this->db->select('*');
$this->db->from('orders');
$this->db->where('payment_type',$this->security->xss_clean($this->input->post('payment_type')));
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
$this->db->where('payment_type',$this->security->xss_clean($this->input->post('payment_type')));
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$this->data['orders'] = $this->db->get()->result();
}
elseif($filter_key == 'flashsale'){
$this->db->select('
orders.id_orders,
orders.order_date,
orders.recipient_name,
orders.total_amount,
orders.redeemed_voucher_amount,
orders.minus_reward_amount,
orders.shipping_fee,
orders.free_shipping_fee,
orders.payment_status,
orders.payment_type,
orders.payment_confirm,
orders.payment_status_message
');
$this->db->from('orders');
$this->db->join('orders_detail','orders_detail.orders_id = orders.id_orders');
$this->db->where('orders_detail.is_flashsale','yes');
$this->db->order_by('orders.id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('
orders.id_orders,
orders.order_date,
orders.recipient_name,
orders.total_amount,
orders.redeemed_voucher_amount,
orders.minus_reward_amount,
orders.shipping_fee,
orders.free_shipping_fee,
orders.payment_status,
orders.payment_type,
orders.payment_confirm,
orders.payment_status_message
');
$this->db->from('orders');
$this->db->join('orders_detail','orders_detail.orders_id = orders.id_orders');
$this->db->where('orders_detail.is_flashsale','yes');
$this->db->order_by('orders.id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$this->data['orders'] = $this->db->get()->result();
}
elseif($filter_key == 'sale'){
$this->db->select('
orders.id_orders,
orders.order_date,
orders.recipient_name,
orders.total_amount,
orders.redeemed_voucher_amount,
orders.minus_reward_amount,
orders.shipping_fee,
orders.free_shipping_fee,
orders.payment_status,
orders.payment_type,
orders.payment_confirm,
orders.payment_status_message
');
$this->db->from('orders');
$this->db->join('orders_detail','orders_detail.orders_id = orders.id_orders');
$this->db->where('orders_detail.is_sale','yes');
$this->db->order_by('orders.id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('
orders.id_orders,
orders.order_date,
orders.recipient_name,
orders.total_amount,
orders.redeemed_voucher_amount,
orders.minus_reward_amount,
orders.shipping_fee,
orders.free_shipping_fee,
orders.payment_status,
orders.payment_type,
orders.payment_confirm,
orders.payment_status_message
');
$this->db->from('orders');
$this->db->join('orders_detail','orders_detail.orders_id = orders.id_orders');
$this->db->where('orders_detail.is_sale','yes');
$this->db->order_by('orders.id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$this->data['orders'] = $this->db->get()->result();
}elseif($filter_key == "date"){
$this->db->select('*');
$this->db->from('orders');
$this->db->where('order_date >=', date('Y-m-d 00:00:00', strtotime($this->security->xss_clean($this->input->post('start_date')))));
$this->db->where('order_date <=', date('Y-m-d 23:59:59', strtotime($this->security->xss_clean($this->input->post('end_date')))));
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
$this->db->where('order_date >=', date('Y-m-d 00:00:00', strtotime($this->security->xss_clean($this->input->post('start_date')))));
$this->db->where('order_date <=', date('Y-m-d 23:59:59', strtotime($this->security->xss_clean($this->input->post('end_date')))));
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$this->data['orders'] = $this->db->get()->result();
}elseif($filter_key == "totalorder"){
$this->db->select('*');
$this->db->from('orders');
if($this->security->xss_clean($this->input->post('start_amt')) <> ""){
$this->db->where('((`total_amount`+IFNULL(ABS(`sisa_kembali`),0))-IFNULL(`redeemed_voucher_value`,0))+(IFNULL(`shipping_fee`,0)-IFNULL(`free_shipping_fee`,0)) >=', $this->security->xss_clean($this->input->post('start_amt')));
}
if($this->security->xss_clean($this->input->post('end_amt')) <> ""){
$this->db->where('((`total_amount`+IFNULL(ABS(`sisa_kembali`),0))-IFNULL(`redeemed_voucher_value`,0))+(IFNULL(`shipping_fee`,0)-IFNULL(`free_shipping_fee`,0)) <=', $this->security->xss_clean($this->input->post('end_amt')));
}
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
if($this->security->xss_clean($this->input->post('start_amt')) <> ""){
$this->db->where('((`total_amount`+IFNULL(ABS(`sisa_kembali`),0))-IFNULL(`redeemed_voucher_value`,0))+(IFNULL(`shipping_fee`,0)-IFNULL(`free_shipping_fee`,0)) >=', $this->security->xss_clean($this->input->post('start_amt')));
}
if($this->security->xss_clean($this->input->post('end_amt')) <> ""){
$this->db->where('((`total_amount`+IFNULL(ABS(`sisa_kembali`),0))-IFNULL(`redeemed_voucher_value`,0))+(IFNULL(`shipping_fee`,0)-IFNULL(`free_shipping_fee`,0)) <=', $this->security->xss_clean($this->input->post('end_amt')));
}
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$this->data['orders'] = $this->db->get()->result();
}
else{
redirect('admin/orders');
}
//load view
$this->data['subview'] = 'admin/orders/index';
$this->load->view('admin/templates/header', $this->data_header);
$this->load->view('admin/_layout_main', $this->data);
$this->load->view('admin/templates/footer');
}
//add order form marketplace
public function add_order(){
if($this->data['role'] == 'apoteker') {
//get warehouse id for this apoteker
$this->db->select('warehouse_id')->from('users')->where('id', $this->session->userdata('admin')['id']);
$apoteker_warehouse_id = $this->db->get()->row()->warehouse_id;
}
if(($this->data['role'] == 'apoteker') || $this->data['role'] == 'super admin' || $this->data['role'] == 'admin' || $this->data['role'] == 'kepala apoteker') {
/*---allowed access----*/
} else {
show_404();
}
/*$this->data['customer_marketplace'] = $this->db->select('*')->from('customers')->where('(type="marketplace" or type="regular")')->order_by('id_customers','ASC')->get()->result();*/
$this->data['customer_marketplace'] = $this->db->select('*')->from('customers')->order_by('id_customers','ASC')->get()->result();
$this->data['marketplace'] = $this->db->select('*')->from('marketplace')->order_by('id','ASC')->get()->result();
$this->data['warehouses'] = $this->db->select('*')->from('warehouse')->order_by('id','ASC')->get()->result();
$config = $this->order_m->add_order_rules;
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>'); //above is to add class to form validation error, to be styled
$this->form_validation->set_rules($config);
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
if($this->form_validation->run($this) == TRUE) {
/*get customer info detail*/
$customer_id = $this->security->xss_clean($this->input->post('customer_id'));
$customer = $this->db->select('*')->from('customers')->where('id_customers',$customer_id)->get()->row();
/*get customer info detail*/
$product = $this->security->xss_clean($this->input->post('id_product'));
$count_product = count($product);
$marketplace_price = $this->security->xss_clean($this->input->post('marketplace_price'));
$quantitas_beli = $this->security->xss_clean($this->input->post('quantitas_beli'));
$warehouse_id = $this->security->xss_clean($this->input->post('warehouse_id'));
/*cek product dan qty kosong*/
if($product != 0){
for($a=0;$a<$count_product;$a++){
if($quantitas_beli[$a] == ""){
$this->session->set_flashdata('success', '<br><p style="background:red; color:white; padding:5px; font-weight:bold;">Not Set Product Quantity</p>');
redirect('admin/orders/add_order');
}
}
}
else{
$this->session->set_flashdata('success', '<br><p style="background:red; color:white; padding:5px; font-weight:bold;">Not Product Found</p>');
redirect('admin/orders/add_order');
}
/*cek product dan qty kosong*/
/*cek stock warehouse*/
for($cek=0;$cek<$count_product;$cek++){
$product_name = $this->db->select('title')->from('products')->where('id_products',$product[$cek])->get()->row()->title;
$stock = $this->db->select('stock')->from('stock')->where('id_product',$product[$cek])->where('warehouse_id',$warehouse_id)->get()->row()->stock;
if($quantitas_beli[$cek] > $stock){
$this->session->set_flashdata('success', '<br><p style="background:red; color:white; padding:5px; font-weight:bold;">Not Enough Stock for "'.$product_name.'"</p>');
redirect('admin/orders/add_order');
}
}
/*cek stock warehouse*/
/*hitung total amount*/
$this->load->helper('shipping');
$this->load->helper('rajaongkir');
$total_amount = 0;
$subtotal = 0;
for($sf=0;$sf<$count_product;$sf++){
/*$shipping_fee_info = calculate_shipping_fee(3, 1, $product[$sf], $quantitas_beli[$sf], $customer->shipping_id_subdistrict);*/
/*$subtotal = ($marketplace_price[$sf] * $quantitas_beli[$sf]) + $shipping_fee_info['total_shipping_fee'];*/
$subtotal = ($marketplace_price[$sf] * $quantitas_beli[$sf]);
$total_amount = $total_amount + $subtotal;
}
//get customer district
/*hitung total amount*/
$order = array(
'customer_id' => $customer_id,
'payment_status' => 3,
'payment_status_message' => NULL,
'payment_confirm' => 0,
'payment_confirm_details' => NULL,
'total_amount' => $total_amount,
'payment_type' => 'TOP',
'payment_method' => NULL,
'payment_date' => NULL,
'cancel_date' => NULL,
'sent_date' => NULL,
'airway_bill' => NULL,
'recipient_name' => $customer->recipient_name,
'address' => $customer->shipping_address,
'district' => $customer->shipping_district,
'subdistrict' => $customer->shipping_subdistrict,
'province' => $customer->shipping_province,
'postcode' => $customer->shipping_postcode,
'phone' => $customer->shipping_phone,
'email' => $customer->email,
'country' => $customer->shipping_country,
'redeemed_voucher_code' => NULL,
'redeemed_voucher_amount' => NULL,
'shipping_type' => "",
'shipping_fee' => $this->input->post('shipping_fee'),
'ppn' => 0,
'plus_reward' => 0,
'minus_reward' => 0,
'minus_reward_amount' => NULL,
'no_resi' => NULL,
'customer_note' => "",
);
$order_id = (int) $this->order_m->add_order($order);
/*insert into order detail*/
for($c=0;$c<$count_product;$c++){
$product_item = $this->db->select('title,is_backorder')->from('products')->where('id_products',$product[$c])->get()->row();
/*$shipping_fee_info = calculate_shipping_fee(3, 1, $product[$c], $quantitas_beli[$c], $customer->shipping_id_subdistrict);*/
$order_detail = array(
'orders_id' => $order_id,
'item_id' => $product[$c],
'item_name' => $product_item->title,
'item_price' => $marketplace_price[$c],
'quantity' => $quantitas_beli[$c],
/*'subtotal' => ($marketplace_price[$c] * $quantitas_beli[$c]) + $shipping_fee_info['total_shipping_fee'],*/
'subtotal' => ($marketplace_price[$c] * $quantitas_beli[$c]),
'sku' => "",
'attributes' => "",
'warehouse_id' => $warehouse_id,
'chosen_shipping_id'=> 3,
/* 'shipping_fee' => $shipping_fee_info['total_shipping_fee'], */
'shipping_fee' => $this->input->post('shipping_fee'),
'is_backorder' => 'no',
'status' => 0,
'no_resi' => "",
);
$this->db->insert('orders_detail',$order_detail);
}
/*insert into order detail*/
/*kurangi stock pada warehouse*/
for($d=0;$d<$count_product;$d++){
$curent_stock = $this->db->select('stock')->from('stock')->where('id_product',$product[$d])->where('warehouse_id',$warehouse_id)->get()->row()->stock;
$final_stock = array(
'stock' => $curent_stock - $quantitas_beli[$d],
);
$this->db->where('id_product',$product[$d]);
$this->db->where('warehouse_id',$warehouse_id);
$this->db->update('stock',$final_stock);
}
/*kurangi stock pada warehouse*/
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Add Order Successful</p>');
redirect('admin/orders');
}
//load view
$this->data['subview'] = 'admin/orders/add_order';
$this->load->view('admin/templates/header', $this->data_header);
$this->load->view('admin/_layout_main', $this->data);
$this->load->view('admin/templates/footer');
}
function ajax_get_product_marketplace(){
$id = (int) $this->input->post('id_marketplace');
$data['product']= $this->db->select('*')->from('products')->join('marketplace_product_price', 'marketplace_product_price.product_id = products.id_products')->where('marketplace_product_price.marketplace_id',$id)->get()->result();
$this->load->view('admin/orders/ajax_get_product_marketplace', $data);
}
function ajax_get_address_customer_marketplace(){
$id = (int) $this->input->post('id_customers');
$data['customers'] = $this->db->select('*')->from('customers')->where('customers.id_customers',$id)->get()->result();
$this->load->view('admin/orders/ajax_get_address_customer_marketplace', $data);
}
function ajax_get_product_detail(){
$id = (int) $this->input->post('id_product');
$id_marketplace = (int) $this->input->post('id_marketplace');
$data['product']= $this->db->select('*')->from('products')->join('marketplace_product_price', 'marketplace_product_price.product_id = products.id_products')->where('products.id_products',$id)->where('marketplace_product_price.marketplace_id',$id_marketplace)->get()->row();
echo json_encode($data);
}
//to VIEW and EDIT order in admin
public function view($id) {
if($id == null){
redirect('admin/orders');
}
//get orders
$this->db->select('*')->from('orders')->where('id_orders', $id);
$current_order = $this->db->get()->row();
if(count($current_order) < 1) {show_404();}
if (isset($_POST['payment_status'])) {
if ($this->input->post('payment_status') == 2) {
//Status CANCEL
$data = array(
'payment_status' => 2,
'cancel_date' => date('Y-m-d')
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data);
//return the quantity back to stock
//get order details
$order_details = $this->order_detail_m->get_orders_detail($id);
//get customer_id
$this->db->select('customer_id')->from('orders')->where('id_orders', $id);
$customer_id = (int) $this->db->get()->row()->customer_id;
foreach ($order_details as $item) {
//get current stock
$this->db->select('stock')->from('stock')->where('id_product', $item->item_id)->where('warehouse_id', $item->warehouse_id);
$current_stock = $this->db->get()->row()->stock;
$qty = 0;
if($item->is_backorder == 'yes'){
$qty = $qty + 0;
}
else{
$qty = $qty + $item->quantity;
}
$data = array(
'stock' => $current_stock + $qty,
);
$this->db->where('id_product', $item->item_id);
$this->db->where('warehouse_id', $item->warehouse_id);
$this->db->update('stock', $data);
if($item->is_flashsale != 0){
//return flashsale counter & customer purchase
/*get purchase qty from flashsale_customer*/
$flashsale_purchase = $this->db->select('purchase_qty')->from('flashsale_customer')->where('customer_id',$customer_id)->where('flashsale_id',$item->is_flashsale)->where('flashsale_product_id',$item->item_id)->get()->row()->purchase_qty;
/*return counter and terjual from flashsale product*/
$current_flashsale_product = $this->db->select('counter,terjual')->from('flashsale_products')->where('flashsale_id',$item->is_flashsale)->where('product_id',$item->item_id)->get()->row();
$return_counter_terjual = array(
'counter' => $current_flashsale_product->counter + $flashsale_purchase,
'terjual' => $current_flashsale_product->terjual - $flashsale_purchase,
);
$this->db->where('flashsale_id',$item->is_flashsale);
$this->db->where('product_id',$item->item_id);
$this->db->update('flashsale_products',$return_counter_terjual);
/*delete flashsale customer record*/
$this->db->where('customer_id',$customer_id);
$this->db->where('flashsale_id',$item->is_flashsale);
$this->db->delete('flashsale_customer');
}
}
//return customer point reward back to customers table because he cancel
//get customer current point
$this->db->select('current_pointreward')->from('customers')->where('id_customers', $customer_id);
$current_point = (int) $this->db->get()->row()->current_pointreward;
//get minus point from order
$this->db->select('minus_reward')->from('orders')->where('id_orders', $id);
$rewards = $this->db->get()->row();
$minus_point = (int) $rewards->minus_reward;
$updated_point = $current_point + $minus_point;
//update point reward
$data = array(
'current_pointreward' => $updated_point
);
$this->db->where('id_customers', $customer_id);
$this->db->update('customers', $data);
//----SEND EMAIL TO CUSTOMER
//get order detail and customer detail
$data['order'] = $this->order_m->get_order($id);
$data['customer'] = $this->customer_m->get_customer($data['order']->customer_id);
$data['minus_point'] = $minus_point;
//get website data
$this->db->select('logo, from_email, website_name, email_smtp_host, email_smtp_port, email_smtp_password, email_smtp')->from('configuration')->where('id_configuration', 1);
$website_data = $this->db->get()->row();
$data['logo'] = $website_data->logo;
$data['website_name'] = $website_data->website_name;
$data['emails'] = $this->configuration_m->get_emails();
$data['title'] = 'Order Cancel';
$this->load->library('email');
//get email setting
$config['protocol'] = 'smtp';
$config['smtp_crypto'] = 'tls';
$config['smtp_host'] = $website_data->email_smtp_host;
$config['smtp_port'] = $website_data->email_smtp_port;
$config['smtp_user'] = $website_data->email_smtp;
$config['smtp_pass'] = $website_data->email_smtp_password;
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['wordwrap'] = TRUE;
$config['newline'] = "\r\n"; //use double quotes to comply with RFC 822 standard
$this->email->initialize($config);
$this->email->from($data['emails']->from_email, $data['emails']->website_name);
$this->email->to($data['customer']->email);
$this->email->subject('Order Cancel');
$email = $this->load->view('email/indonesian/order_cancel', $data, TRUE);
$this->email->message($email);
$this->email->send();
//----end send email
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Payment status updated Successful</p>');
redirect('admin/orders/view/' . $id);
}
if ($this->input->post('payment_status') == 1) {
//Status NOT PAID
$data = array(
'payment_status' => 1,
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data);
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Payment status updated Successful</p>');
redirect('admin/orders/view/' . $id);
}
if ($this->input->post('payment_status') == 3) {
//Status PAID
$data = array(
'payment_status' => 3,
'payment_date' => date('Y-m-d')
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data);
//update current point rewards
//get customer_id
$this->db->select('customer_id')->from('orders')->where('id_orders', $id);
$customer_id = (int) $this->db->get()->row()->customer_id;
//get customer current point
$this->db->select('current_pointreward')->from('customers')->where('id_customers', $customer_id);
$current_point = (int) $this->db->get()->row()->current_pointreward;
//get add and minus point from order
$this->db->select('plus_reward')->from('orders')->where('id_orders', $id);
$rewards = $this->db->get()->row();
$plus_point = (int) $rewards->plus_reward;
$updated_point = $current_point + $plus_point;
//update point reward
$data = array(
'current_pointreward' => $updated_point
);
$this->db->where('id_customers', $customer_id);
$this->db->update('customers', $data);
//SEND EMAIL TO CUSTOMER
$data['title'] = 'Payment Confirmation';
//get order detail and customer detail
$data['order'] = $this->order_m->get_order($id);
$data['customer'] = $this->customer_m->get_customer($data['order']->customer_id);
//get website data
$this->db->select('logo, from_email, website_name, email_smtp_host, email_smtp_port, email_smtp_password, email_smtp')->from('configuration')->where('id_configuration', 1);
$website_data = $this->db->get()->row();
$data['logo'] = $website_data->logo;
$data['website_name'] = $website_data->website_name;
$data['emails'] = $this->configuration_m->get_emails();
$data['plus_point'] = $plus_point;
$this->load->library('email');
//get email setting
$config['protocol'] = 'smtp';
$config['smtp_crypto'] = 'tls';
$config['smtp_host'] = $website_data->email_smtp_host;
$config['smtp_port'] = $website_data->email_smtp_port;
$config['smtp_user'] = $website_data->email_smtp;
$config['smtp_pass'] = $website_data->email_smtp_password;
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['wordwrap'] = TRUE;
$config['newline'] = "\r\n"; //use double quotes to comply with RFC 822 standard
$this->email->initialize($config);
$this->email->from($data['emails']->from_email, $data['emails']->website_name);
$this->email->to($data['customer']->email);
$this->email->subject('Payment Confirmation');
$email = $this->load->view('email/indonesian/payment_confirmation', $data, TRUE);
$this->email->message($email);
$this->email->send();
//----end send email
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Payment status updated Successful</p>');
redirect('admin/orders/view/' . $id);
}
if ($this->input->post('payment_status') == 4) {
//Status PROCESS
$data = array(
'payment_status' => 4,
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data);
$email_data['order'] = $current_order;
//get order detail
$order_details = $this->db->select('*')->from('orders_detail')->where('orders_id', $id)->get()->result();
foreach ($order_details as $detail) {
//get warehouse email
$email_data['warehouse'] = $this->db->select('email, name')->from('warehouse')->where('id', $detail->warehouse_id)->get()->row();
$email_data['detail'] = $detail;
//get product detail
$email_data['product'] = $this->db->select('product_code, sku, title')->from('products')->where('id_products', $detail->item_id)->get()->row();
//SEND EMAIL TO WAREHOUSE
//get website data
$this->db->select('logo, from_email, website_name, email_smtp_host, email_smtp_port, email_smtp_password, email_smtp')->from('configuration')->where('id_configuration', 1);
$website_data = $this->db->get()->row();
$email_data['logo'] = $website_data->logo;
$email_data['website_name'] = $website_data->website_name;
$email_data['emails'] = $this->configuration_m->get_emails();
$this->load->library('email');
//get email setting
$config['protocol'] = 'smtp';
$config['smtp_crypto'] = 'tls';
$config['smtp_host'] = $website_data->email_smtp_host;
$config['smtp_port'] = $website_data->email_smtp_port;
$config['smtp_user'] = $website_data->email_smtp;
$config['smtp_pass'] = $website_data->email_smtp_password;
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['wordwrap'] = TRUE;
$config['newline'] = "\r\n"; //use double quotes to comply with RFC 822 standard
$this->email->initialize($config);
$this->email->from($email_data['emails']->from_email, $email_data['emails']->website_name);
$this->email->to('herman.canvasweb@gmail.com');
$this->email->subject("Persiapan produk Order No: {$id}");
$email = $this->load->view('email/indonesian/order_warehouse_prepare.php', $email_data, TRUE);
$this->email->message($email);
$this->email->send();
//----end send email
}
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Order status updated Successful</p>');
redirect('admin/orders/view/' . $id);
}
if ($this->input->post('payment_status') == 5) {
//Status DELIVERED
$data = array(
'payment_status' => 5,
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data);
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Payment status updated Successful</p>');
redirect('admin/orders/view/' . $id);
}
}
//get order detail and customer detail
$this->data['order'] = $this->order_m->get_order($id);
$this->data['customer'] = $this->customer_m->get_customer($this->data['order']->customer_id);
$this->data['order_details'] = $this->order_detail_m->get_orders_detail($id);
$this->data['subview'] = 'admin/orders/view';
$this->load->view('admin/templates/header', $this->data_header);
$this->load->view('admin/_layout_main', $this->data);
$this->load->view('admin/templates/footer');
}
/*update order detail*/
public function update_status() {
$id = $this->security->xss_clean($this->input->post('id_product_detail')); //order detail
$id_order = $this->security->xss_clean($this->input->post('id_order')); //order
$status = $this->input->post('status');
if($status == 0) {
$order_details = array(
'status' => $status,
);
}
//generate airaway bill
elseif($status == 1) {
if($this->security->xss_clean($this->input->post('backed_order')) == 'yes') {
$cek_stock =
$this->db
->select('stock')
->from('stock')
->where('id_product',$this->security->xss_clean($this->input->post('item_order')))
->where('warehouse_id',$this->security->xss_clean($this->input->post('warehouse_order')))
->get()
->row()
->stock;
if($this->security->xss_clean($this->input->post('qty_order')) <= $cek_stock){
$order_details = array(
'status' => $status,
);
}
else{
$this->session->set_flashdata('success'.$this->security->xss_clean($this->input->post('id')), '<p style="color:red; font-weight:bold;">Stock Tidak Cukup. Silahkan tambahkan stok</p>');
redirect('admin/orders/view/' . $id_order);
}
}
$order_data = $this->db->select('*')->from('orders')->where('id_orders', $id_order)->get()->row();
$order_detail_data = $this->db->select('*')->from('orders_detail')->where('id_orders_detail', $id)->get()->row();
//get shipper warehouse postcode
$shipper_postcode = $this->db->select('postcode')->from('warehouse')->where('id', $order_detail_data->warehouse_id)->get()->row()->postcode;
//get service code
switch ($order_data->kurir) {
case 'REGULAR':
$service_code = 'REG';
break;
case 'EXPRESS':
$service_code = 'EXP';
break;
case 'REX-1':
$service_code = 'REX-1';
break;
default:
$service_code = 'REG';
break;
}
//calculate item weight
//get product weight
$this->db->select('dimension_weight, dimension_length, dimension_width, dimension_height')->from('products')->where('id_products', $order_detail_data->item_id);
$product_dimension = $this->db->get()->row();
$product_weight = $product_dimension->dimension_weight; //gram
$product_length = $product_dimension->dimension_length; //cm
$product_width = $product_dimension->dimension_width; //cm
$product_height = $product_dimension->dimension_height; //cm
//check if volume is bigger than weight
$volume_weight = $product_length * $product_width * $product_height / 4000; //kg
if(($volume_weight * 1000) >= $product_weight) {
$weight = $volume_weight * 1000; //gram
} else {
$weight = $product_weight; //gram
}
$total_weight = ceil($weight * $order_detail_data->quantity);
//generate airwaybill
$airwaybill_data = array(
'shipper_postcode' => $shipper_postcode,
'receiver_postcode' => $order_data->postcode,
'shipper_name' => 'Indolok',
'shipper_address' => 'Jl. Salemba Raya No.32 Jakarta',
'shipper_hp' => '0 804 133 8383',
'shipper_email' => 'ecommerce@indolok.id',
'receiver_name' => $order_data->recipient_name,
'receiver_address' => $order_data->address,
'receiver_postcode' => $order_data->postcode,
'receiver_hp' => $order_data->phone,
'receiver_email' => $order_data->email,
'service_code' => $service_code,
'item_weight' => $total_weight,
'item_desc' => $order_detail_data->quantity . ' pcs',
'item_name' => $order_detail_data->item_name,
'item_price' => $order_detail_data->item_price,
'item_category' => 'security product',
'id_order' => $id_order
);
$this->load->helper('shipping');
$airwaybill = rex_generate_awb($airwaybill_data);
$order_details = array(
'status' => $status,
'no_resi' => $airwaybill['tracking_ref_no'],
'rex_tracking_ref_no' => $airwaybill['booking_id'],
);
}
elseif($status == 2) {
$order_details = array(
'status' => $status,
);
//SEND EMAIL TO CUSTOMER
$data['title'] = 'Product Picked Up';
//get order detail and customer detail
$data['product_detail'] = $this->db->select('*')->from('orders_detail')->where('id_orders_detail',$id)->get()->row();
$data['warehouse'] = $this->db->select('name')->from('warehouse')->where('id',$data['product_detail']->warehouse_id)->get()->row()->name;
$data['shipping_method']= $this->db->select('name')->from('shipment_method')->where('id',$data['product_detail']->chosen_shipping_id)->get()->row()->name;
$data['no_resi'] = $data['product_detail']->no_resi;
$customer_id = $this->db->select('customer_id')->from('orders')->where('id_orders',$id_order)->get()->row()->customer_id;
$data['customer'] = $this->customer_m->get_customer($customer_id);
//get website data
$this->db->select('logo, from_email, website_name, email_smtp_host, email_smtp_port, email_smtp_password, email_smtp')->from('configuration')->where('id_configuration', 1);
$website_data = $this->db->get()->row();
$data['logo'] = $website_data->logo;
$data['website_name'] = $website_data->website_name;
$data['emails'] = $this->configuration_m->get_emails();
$this->load->library('email');
//get email setting
$config['protocol'] = 'smtp';
$config['smtp_crypto'] = 'tls';
$config['smtp_host'] = $website_data->email_smtp_host;
$config['smtp_port'] = $website_data->email_smtp_port;
$config['smtp_user'] = $website_data->email_smtp;
$config['smtp_pass'] = $website_data->email_smtp_password;
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['wordwrap'] = TRUE;
$config['newline'] = "\r\n"; //use double quotes to comply with RFC 822 standard
$this->email->initialize($config);
$this->email->from($data['emails']->from_email, $data['emails']->website_name);
$this->email->to($data['customer']->email);
$this->email->subject('Payment Confirmation');
$email = $this->load->view('email/indonesian/pickedup_confirmation', $data, TRUE);
$this->email->message($email);
$this->email->send();
//----end send email
}
$this->db->where('id_orders_detail',$id);
$this->db->update('orders_detail',$order_details);
/*cek detail status to update order status*/
$cek_status = 0;
$all_order_detail_status = $this->db->select('status')->from('orders_detail')->where('orders_id',$id_order)->get()->result();
foreach ($all_order_detail_status as $item) {
if($item->status != 2){
$cek_status = $cek_status + 1;
}
else{
$cek_status = $cek_status;
}
}
if($cek_status == 0){
$data = array(
'payment_status' => 5,
);
$this->db->where('id_orders', $id_order);
$this->db->update('orders', $data);
}
/*cek detail status to update order status*/
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Update Product Status Success</p>');
redirect('admin/orders/view/' . $id_order);
}
public function generate_invoice_pdf($id) {
//add PDF attachment DOMPDF
$data['title'] = 'Invoice';
//get order
$this->db->select('*')->from('orders')->where('id_orders', $id);
$data['order'] = $this->db->get()->row();
$data['customer'] = $this->customer_m->get_customer($data['order']->customer_id);
$data['emails'] = $this->configuration_m->get_emails();
$data['bank'] = $this->configuration_m->get_bank();
$this->db->select('logo')->from('configuration')->where('id_configuration', 1);
$data['logo'] = $this->db->get()->row()->logo;
//get order detail and customer detail
$this->db->select('*')->from('orders_detail')->where('orders_id', $id);
$data['order_details'] = $this->db->get()->result();
$this->load->library('dompdf_gen');
$html= $this->load->view('invoice_pdf', $data ,true);
$this->dompdf->load_html($html);
$this->dompdf->render();
$this->dompdf->stream('invoice.pdf', array("Attachment" => 0));
$output = $this->dompdf->output();
$file_to_save = 'uploads/pdf/invoice.pdf';
file_put_contents($file_to_save, $output);
}
public function generate_multiple_invoices() {
if(!$this->input->post('generate_invoices')) { redirect('admin/orders');}
$start_date_array = explode('-', $this->security->xss_clean($this->input->post('start_date')));
$end_date_array = explode('-', $this->security->xss_clean($this->input->post('end_date')));
//change to YYYY-MM-DD format for database insertion, and use php DatePeriod class
$begin = new DateTime($start_date_array[2] . '-' . $start_date_array[1] . '-' . $start_date_array[0]);
$end = new DateTime($end_date_array[2] . '-' . $end_date_array[1] . '-' . $end_date_array[0]);
$end = $end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
$this->load->library('dompdf_gen');
//create a new directory inside pdf folder
if (!is_dir('./uploads/' . 'pdf/' . 'invoice-' . $this->input->post('start_date') . '-' . $this->input->post('end_date'))) { //check if directory already exist
mkdir('./uploads/' . 'pdf/' . 'invoice-' . $this->input->post('start_date') . '-' . $this->input->post('end_date'));
chmod('./uploads/' . 'pdf/' . 'invoice-' . $this->input->post('start_date') . '-' . $this->input->post('end_date'), 0777); //change permission to writable 777, so can be deleted
}
$total_orders_found = 0;
foreach($daterange as $date){
//get orders from each particular date
//DATE(order_date) is a mysql function, to get onlye date from timestamp, exclude h-m-s
$this->db->select('*')->from('orders');
$this->db->where('DATE(order_date)', $date->format('Y-m-d'));
if($this->input->post('include_unpaid_orders') == 'no') {
$this->db->group_start();
$this->db->where('payment_status', 1);
$this->db->or_where('payment_status', 3);
$this->db->group_end();
}
$orders = $this->db->get()->result();
if(count($orders) > 0) {
//orders are available..then proceed
$total_orders_found = $total_orders_found + count($orders);
foreach($orders as $data['order']) {
//generate pdf for each order in this particular date
//add PDF attachment DOMPDF
$data['title'] = 'Invoice ' . $data['order']->id_orders;
$data['customer'] = $this->customer_m->get_customer($data['order']->customer_id);
$data['emails'] = $this->configuration_m->get_emails();
$data['bank'] = $this->configuration_m->get_bank();
$this->db->select('logo')->from('configuration')->where('id_configuration', 1);
$data['logo'] = $this->db->get()->row()->logo;
//get order detail and customer detail
$this->db->select('*')->from('orders_detail')->where('orders_id', $data['order']->id_orders);
$data['order_details'] = $this->db->get()->result();
$html= $this->load->view('invoice_pdf', $data ,true);
//create a new dompdf instance (this is the crucial step)
$this->dompdf = new DOMPDF();
$this->dompdf->load_html($html);
$this->dompdf->render(); //render html as pdf
/* $this->dompdf->stream('invoice.pdf', array("Attachment" => 0)); //display to browser*/
$output = $this->dompdf->output();
//add pdf file into directory
$file_to_save = 'uploads/pdf/invoice-' . $this->input->post('start_date') . '-' . $this->input->post('end_date') . '/invoice-orderid-' . $data['order']->id_orders . '.pdf';
file_put_contents($file_to_save, $output); //$output function to add files to folder
}
}
}
if($total_orders_found == 0) {
//dont download files, but go back to orders page and give error notice..
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">No orders are found</p>');
redirect('admin/orders');
}
//zip the generated pds and downlod the zip file
$this->load->library('zip');
$path = './uploads/' . 'pdf/' . 'invoice-' . $this->input->post('start_date') . '-' . $this->input->post('end_date');
$this->zip->read_dir($path, FALSE); //FALSE is to exclude entir path
// Download the files to desktop. Name it "my_backup.zip"
$this->zip->download('invoices-' . $this->input->post('start_date') . '-' . $this->input->post('end_date') . '.zip');
//finally, delete the directory
//THIS NOT WORKING YET......
//rmdir('./uploads/' . 'pdf/' . 'invoice-' . $this->input->post('start_date') . '-' . $this->input->post('end_date'));
}
public function generate_deliveryslip_pdf($id) {
//add PDF attachment DOMPDF
$data['title'] = 'Delivery Slip';
//get order
$this->db->select('*')->from('orders')->where('id_orders', $id);
$data['order'] = $this->db->get()->row();
if($data['order']->dropship == 'yes') {
//use dropshipper
$this->db->select('id_customers, name, email, phone, reseller_id, dropship, dropship_shop_name, dropship_shop_address, dropship_shop_phone, dropship_shop_email, dropship_shop_logo');
$this->db->from('customers');
$this->db->where('id_customers', $data['order']->customer_id);
$data['customer'] = $this->db->get()->row();
$data['logo'] = $data['customer']->dropship_shop_logo;
$data['dropship_status'] = 'yes';
} else {
//non dropshipper
$this->db->select('id_customers, name, email, phone, reseller_id');
$this->db->from('customers');
$this->db->where('id_customers', $data['order']->customer_id);
$data['customer'] = $this->db->get()->row();
$data['dropship_status'] = 'no';
$this->db->select('logo')->from('configuration')->where('id_configuration', 1);
$data['logo'] = $this->db->get()->row()->logo;
}
$data['emails'] = $this->configuration_m->get_emails();
//$data['bank'] = $this->configuration_m->get_bank();
//get order detail and customer detail
$this->db->select('*')->from('orders_detail')->where('orders_id', $id);
$data['order_details'] = $this->db->get()->result();
$this->load->library('dompdf_gen');
$html= $this->load->view('deliveryslip_pdf', $data ,true);
$this->dompdf->load_html($html);
$this->dompdf->render();
$this->dompdf->stream('deliveryslip.pdf', array("Attachment" => 0));
$output = $this->dompdf->output();
$file_to_save = 'uploads/pdf/deliveryslip.pdf';
file_put_contents($file_to_save, $output);
}
public function generate_multiple_deliveryslips() {
if(!$this->input->post('generate_deliveryslips')) { redirect('admin/orders');}
$start_date_array = explode('-', $this->security->xss_clean($this->input->post('start_date')));
$end_date_array = explode('-', $this->security->xss_clean($this->input->post('end_date')));
//change to YYYY-MM-DD format for database insertion, and use php DatePeriod class
$begin = new DateTime($start_date_array[2] . '-' . $start_date_array[1] . '-' . $start_date_array[0]);
$end = new DateTime($end_date_array[2] . '-' . $end_date_array[1] . '-' . $end_date_array[0]);
$end = $end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
$this->load->library('dompdf_gen');
//create a new directory inside pdf folder
if (!is_dir('./uploads/' . 'pdf/' . 'deliveryslip-' . $this->input->post('start_date') . '-' . $this->input->post('end_date'))) { //check if directory already exist
mkdir('./uploads/' . 'pdf/' . 'deliveryslip-' . $this->input->post('start_date') . '-' . $this->input->post('end_date'));
chmod('./uploads/' . 'pdf/' . 'deliveryslip-' . $this->input->post('start_date') . '-' . $this->input->post('end_date'), 0777); //change permission to writable 777, so can be deleted
}
$total_orders_found = 0;
foreach($daterange as $date) {
//get orders from each particular date
//DATE(order_date) is a mysql function, to get onlye date from timestamp, exclude h-m-s
$this->db->select('*');
$this->db->from('orders');
$this->db->where('DATE(order_date)', $date->format('Y-m-d'));
if($this->input->post('include_unpaid_orders') == 'no') {
$this->db->group_start();
$this->db->where('payment_status', 1);
$this->db->or_where('payment_status', 3);
$this->db->group_end();
}
$orders = $this->db->get()->result();
if(count($orders) > 0) {
$total_orders_found = $total_orders_found + count($orders);
foreach($orders as $data['order']) {
//add PDF attachment DOMPDF
$data['title'] = 'Delivery Slip';
//get order
$this->db->select('*')->from('orders')->where('id_orders', $data['order']->id_orders);
$data['order'] = $this->db->get()->row();
if($data['order']->dropship == 'yes') {
//use dropshipper
$this->db->select('id_customers, name, email, phone, reseller_id, dropship, dropship_shop_name, dropship_shop_address, dropship_shop_phone, dropship_shop_email, dropship_shop_logo');
$this->db->from('customers');
$this->db->where('id_customers', $data['order']->customer_id);
$data['customer'] = $this->db->get()->row();
$data['logo'] = $data['customer']->dropship_shop_logo;
$data['dropship_status'] = 'yes';
} else {
//non dropshipper
$this->db->select('id_customers, name, email, phone, reseller_id');
$this->db->from('customers');
$this->db->where('id_customers', $data['order']->customer_id);
$data['customer'] = $this->db->get()->row();
$data['dropship_status'] = 'no';
$this->db->select('logo')->from('configuration')->where('id_configuration', 1);
$data['logo'] = $this->db->get()->row()->logo;
}
$data['emails'] = $this->configuration_m->get_emails();
//$data['bank'] = $this->configuration_m->get_bank();
//get order detail and customer detail
$this->db->select('*')->from('orders_detail')->where('orders_id', $data['order']->id_orders);
$data['order_details'] = $this->db->get()->result();
$html= $this->load->view('deliveryslip_pdf', $data ,true);
//create a new dompdf instance (this is the crucial step)
$this->dompdf = new DOMPDF();
$this->dompdf->load_html($html);
$this->dompdf->render();
//$this->dompdf->stream('deliveryslip.pdf', array("Attachment" => 0));
$output = $this->dompdf->output();
//add pdf file into directory
$file_to_save = 'uploads/pdf/deliveryslip-' . $this->input->post('start_date') . '-' . $this->input->post('end_date') . '/deliveryslip-orderid-' . $data['order']->id_orders . '.pdf';
file_put_contents($file_to_save, $output); //$output function to add files to folder
}
}
}
if($total_orders_found == 0) {
//dont download files, but go back to orders page and give error notice..
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">No orders are found</p>');
redirect('admin/orders');
}
//zip the generated pds and downlod the zip file
$this->load->library('zip');
$path = './uploads/' . 'pdf/' . 'deliveryslip-' . $this->input->post('start_date') . '-' . $this->input->post('end_date');
$this->zip->read_dir($path, FALSE); //FALSE is to exclude entir path
// Download the files to desktop.
$this->zip->download('deliveryslips-' . $this->input->post('start_date') . '-' . $this->input->post('end_date') . '.zip');
//finally, delete the directory
//THIS NOT WORKING YET......
//rmdir('./uploads/' . 'pdf/' . 'invoice-' . $this->input->post('start_date') . '-' . $this->input->post('end_date'));
}
public function generate_shipping_mark($id){
/*get order data*/
$data['orders_detail'] = $this->db->select('*')->from('orders_detail')->where('id_orders_detail',$id)->get()->row();
$data['orders'] = $this->db->select('*')->from('orders')->where('id_orders',$data['orders_detail']->orders_id)->get()->row();
/*get customer id with order id*/
$customer_id = $this->db->select('customer_id')->from('orders')->where('id_orders',$data['orders_detail']->orders_id)->get()->row()->customer_id;
/*get customer detail*/
$data['customer'] = $this->db->select('*')->from('customers')->where('id_customers',$customer_id)->get()->row();
/*get warehouse detail*/
$data['warehouse'] = $this->db->select('*')->from('warehouse')->where('id',$data['orders_detail']->warehouse_id)->get()->row();
$data['district'] = $this->db->select('district')->from('indonesia_districts')->where('rajaongkir_id_district',$data['warehouse']->id_district)->get()->row()->district;
$data['subdistrict'] = $this->db->select('subdistrict')->from('indonesia_subdistricts')->where('rajaongkir_id_subdistrict',$data['warehouse']->id_subdistrict)->get()->row()->subdistrict;
$data['province'] = $this->db->select('province')->from('indonesia_provinces')->where('rajaongkir_province_id',$data['warehouse']->id_province)->get()->row()->province;
//add PDF attachment DOMPDF
$data['title'] = 'Shipping Mark';
$this->load->library('dompdf_gen');
$html = $this->load->view('shipping_mark_pdf', $data ,true);
echo $html;die();
$this->dompdf->load_html($html);
$this->dompdf->set_paper('A4','landscape');
$this->dompdf->render();
$this->dompdf->stream('shipping_mark.pdf', array("Attachment" => 0));
$output = $this->dompdf->output();
$file_to_save = 'uploads/pdf/shipping_mark.pdf';
file_put_contents($file_to_save, $output);
}
public function generate_invoice($id){
/*get order data*/
$data['orders'] = $this->db->select('*')->from('orders')->where('id_orders',$id)->get()->row();
$data['orders_detail'] = $this->db->select('*')->from('orders_detail')->where('orders_id',$id)->get()->result();
/*get customer id with order id*/
$customer_id = $this->db->select('customer_id')->from('orders')->where('id_orders',$id)->get()->row()->customer_id;
/*get customer detail*/
$data['customer'] = $this->db->select('*')->from('customers')->where('id_customers',$data['orders']->customer_id)->get()->row();
//add PDF attachment DOMPDF
$data['title'] = 'Shipping Invoice';
$this->load->library('dompdf_gen');
$html = $this->load->view('shipping_invoice_pdf', $data ,true);
echo $html;die();
$this->dompdf->load_html($html);
$this->dompdf->set_paper('A4','landscape');
$this->dompdf->render();
$this->dompdf->stream('shipping_mark.pdf', array("Attachment" => 0));
$output = $this->dompdf->output();
$file_to_save = 'uploads/pdf/shipping_mark.pdf';
file_put_contents($file_to_save, $output);
}
public function new_generate_invoice($id) {
if($id == NULL) {
redirect('admin/penawaran');
}
//add PDF attachment DOMPDF
$pdf_data['title'] = 'INVOICE';
//get all penawaran details
$this->db->select('*')->from('orders')->where('id_orders', $id);
$pdf_data['order'] = $this->db->get()->row();
if(count($pdf_data['order']) > 0) {
//get customer detail
$this->db->select('*')->from('customers')->where('id_customers', $pdf_data['order']->customer_id);
$pdf_data['customer'] = $this->db->get()->row();
// get order detail
$pdf_data['orders_detail'] = $this->db->select('*')->from('orders_detail')->where('orders_id',$id)->get()->result();
//get current month ij roman
$pdf_data['current_month'] = integerToRoman(date('n'));
//get current year 2 digits
$pdf_data['current_year'] = date('y');
$this->load->library('dompdf_gen');
$html = $this->load->view('new_shipping_invoice_pdf', $pdf_data ,true);
/*tambahan*/
$html = preg_replace('/>\s+</', '><', $html);
/*tambahan*/
$this->dompdf->load_html($html);
$this->dompdf->set_paper('A4', 'portrait');
$this->dompdf->render();
$this->dompdf->stream('new_shipping_mark.pdf', array("Attachment" => 0));
$output = $this->dompdf->output();
$file_to_save = 'uploads/pdf/new_shipping_mark.pdf';
file_put_contents($file_to_save, $output);
} else {
redirect('admin/orders');
}
}
public function update_noresi(){
$order_detail_id = $this->input->post('id_orders_detail');
/*get order id*/
$id_order = $this->db->select('orders_id')->from('orders_detail')->where('id_orders_detail',$order_detail_id)->get()->row()->orders_id;
/*get order id*/
$new_resi = array(
'no_resi' => $this->input->post('no_resi'),
);
$this->db->where('id_orders_detail',$order_detail_id);
$this->db->update('orders_detail',$new_resi);
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">No. Resi Updated</p>');
redirect('admin/orders/view/' . $id_order);
}
public function cancel_pickup($order_id, $order_detail_id) {
//get order data
$order = $this->db->select('*')->from('orders')->where('id_orders', $order_id)->get()->row();
$order_detail = $this->db->select('*')->from('orders_detail')->where('id_orders_detail', $order_detail_id)->get()->row();
//cancel pickup
$this->load->helper('shipping');
$airwaybill = rex_cancel_awb($order_detail->no_resi);
if($airwaybill->status == 'ok') {
//update order and order detail table..
$data = array(
'payment_status' => 4
);
$this->db->where('id_orders', $order_id);
$this->db->update('orders', $data);
$data = array(
'no_resi' => '',
'rex_tracking_ref_no' => '',
'status' => 0
);
$this->db->where('id_orders_detail', $order_detail_id);
$this->db->update('orders_detail', $data);
}
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Pickup has been Cancel.</p>');
redirect('admin/orders/view/' . $order_id);
}
public function excel_export() {
$this->load->library('excel');
header("Content-type: application/vnd-ms-excel");
header("Content-Disposition: attachment; filename=indolok_transaction_report.xls");
if(!empty($this->input->post('sales_start'))) {
$date_start = explode('-', $this->input->post('sales_start'));
$new_date_start = $date_start[2] . '-' . $date_start[1] . '-' . $date_start[0];
} else {
$new_date_start = '';
}
if(!empty($this->input->post('sales_end'))) {
$date_end = explode('-', $this->input->post('sales_end'));
$new_date_end = $date_end[2] . '-' . $date_end[1] . '-' . $date_end[0] . ' 23:59:59';
} else {
$new_date_end = '';
}
$data['order_details'] = $this->order_m->find_orderdetails_filter_date($new_date_start, $new_date_end);
$this->load->view('admin/orders/salesorder_excel_report', $data);
}
}