|
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/laciasmara.com/public_html/shop/application/controllers/admin/ |
Upload File : |
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Orders_retailer 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->model('product_m');
}
//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_retailer/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_retailer(
$config["per_page"],
$this->uri->segment(4)
);
$this->data['total_sales_order'] = $this->order_m->record_count();
$this->data['total_incoming_order'] = $this->order_m->record_count_incoming_retailer();
$this->data['marketplaces'] = $this->db->distinct()->select('marketplace_name')->from('orders')->where('marketplace_name !=', null)->order_by('marketplace_name', 'ASC')->get()->result();
$this->data['customers'] = $this->db->distinct()->select('customer_id')->from('orders')->order_by('recipient_name', 'ASC')->get()->result();
$this->data['product'] = $this->db->select('title,id_products')->from('products')->get()->result();
//load view
$this->data['subview'] = 'admin/orders_retailer/index';
$this->load->view('admin/templates/header', $this->data_header);
$this->load->view('admin/_layout_main', $this->data);
$this->load->view('admin/templates/footer');
}
public function update_ongkir_modal($order_id)
{
$data['order'] = $this->OrderModel->get_order_by_id($order_id); // Ambil data order berdasarkan id
$this->load->view('update_ongkir_modal', $data); // Load view untuk modal
}
public function update_creditclaimamount()
{
$orderID = $this->input->post('order_id');
$newCreditClaimAmount = $this->input->post('new_creditclaimamount');
// Validasi dan keamanan lainnya
$this->db->where('id_orders', $orderID);
$update_data = array(
'creditclaimamount' => $newCreditClaimAmount
);
$result = $this->db->update('orders', $update_data);
if ($result) {
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Jumlah credit claim berhasil diperbarui</p>');
redirect('admin/orders_retailer/view/' . $orderID);
} else {
echo json_encode(array('status' => 'error', 'message' => 'Terjadi kesalahan saat memperbarui credit claim.'));
}
}
public function update_ongkir()
{
$orderid = $this->input->post('orders_id');
$shipping_fee = array(
'shipping_fee' => $this->input->post('shipping_fee'),
);
$this->db->where('id_orders', $orderid);
$this->db->update('orders', $shipping_fee);
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Ongkir Updated</p>');
redirect('admin/orders_retailer/view/' . $orderid);
}
//get all successful orders for specific customer only
public function customer($customer_id)
{
$this->load->library('pagination');
$config['base_url'] = base_url() . 'admin/orders_retailer/customer';
$config['per_page'] = 100;
$config['uri_segment'] = 4;
$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 or payment_status=8)');
// Get start_date and end_date from GET parameters
$start_date = $this->input->get('start_date');
$end_date = $this->input->get('end_date');
// Add date filters to the queries
if ($start_date && $end_date) {
$this->db->where('order_date >=', $start_date);
$this->db->where('order_date <=', $end_date);
}
$this->db->order_by('order_date', 'DESC');
$this->data['orders'] = $this->db->get()->result();
foreach ($this->data['orders'] as $order) {
$order->item_summary = array();
$order->order_details = $this->order_detail_m->get_orders_detail($order->id_orders);
foreach ($order->order_details as $order_detail) {
$product = $this->db->select('id_products, title')->from('products')->where('id_products', $order_detail->product_id)->get()->row();
if (!isset($order->item_summary[$order->id_orders][$product->id_products])) {
$order->item_summary[$order->id_orders][$product->id_products] = array(
'product_id' => $product->id_products,
'product_name' => $product->title,
'total_quantity' => $order_detail->quantity,
'attributes' => $order_detail->attributes,
'subtotal' => $order_detail->subtotal,
'sku' => $order_detail->sku
);
} else {
$order->item_summary[$order->id_orders][$product->id_products]['total_quantity'] += $order_detail->quantity;
}
}
}
$product_qty = array(); // Initialize an array to store product quantities
// Loop through each order
foreach ($this->data['orders'] as $order) {
foreach ($order->order_details as $order_detail) {
$product_id = $order_detail->product_id;
$product_name = $order_detail->item_name;
$qty = $order_detail->quantity;
// If the product ID is not in the array, add it with the initial qty
if (!isset($product_qty[$product_id])) {
$product_qty[$product_id] = array(
'product_id' => $product_id,
'product_name' => $product_name,
'total_qty' => $qty
);
} else {
// If the product ID is already in the array, add the qty to the existing value
$product_qty[$product_id]['total_qty'] += $qty;
}
}
}
// Remove products with total qty 0
$product_qty = array_filter($product_qty, function ($product) {
return $product['total_qty'] > 0;
});
// Pass the product quantities data to the view
$this->data['product_qty'] = $product_qty;
$this->db->select('*')->from('customers')->where('id_customers', $customer_id);
$this->data['customer'] = $this->db->get()->row();
$this->data['subview'] = 'admin/orders_retailer/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()
{
if ($this->security->xss_clean($this->input->post('filter_key'))) {
$filter_key = $this->security->xss_clean($this->input->post('filter_key'));
} else {
$filter_key = $this->session->userdata('filter_key');
}
$this->data['marketplaces'] = $this->db->distinct()->select('marketplace_name')->from('orders')->where('marketplace_name !=', null)->order_by('marketplace_name', 'ASC')->get()->result();
$this->data['customers'] = $this->db->distinct()->select('customer_id')->from('orders')->order_by('id_orders', 'ASC')->get()->result();
//pagination in action. 100 results per page
$this->load->library('pagination');
$config['base_url'] = base_url() . 'admin/orders_retailer/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');
$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');
$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') {
if ($this->security->xss_clean($this->input->post('payment_status'))) {
$this->session->unset_userdata('filter_payment_status');
$payment_status = $this->security->xss_clean($this->input->post('payment_status'));
} else {
$payment_status = $this->session->userdata('filter_payment_status');
}
$this->db->select('*');
$this->db->from('orders');
$this->db->where('payment_status', $payment_status);
$this->db->order_by('id_orders', 'desc');
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
$this->db->where('payment_status', $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();
$this->session->set_userdata('filter_payment_status', $payment_status);
} elseif ($filter_key == 'payment_type') {
if ($this->security->xss_clean($this->input->post('payment_type'))) {
$this->session->unset_userdata('filter_payment_type');
$payment_type = $this->security->xss_clean($this->input->post('payment_type'));
} else {
$payment_type = $this->session->userdata('filter_payment_type');
}
$this->db->select('*');
$this->db->from('orders');
$this->db->where('payment_type', $payment_type);
$this->db->order_by('id_orders', 'desc');
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
$this->db->where('payment_type', $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();
$this->session->set_userdata('filter_payment_type', $payment_type);
} 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');
$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');
$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") {
if ($this->security->xss_clean($this->input->post('start_date'))) {
$this->session->unset_userdata('filter_start_date');
$start_date = $this->security->xss_clean($this->input->post('start_date'));
} else {
$start_date = $this->session->userdata('filter_start_date');
}
if ($this->security->xss_clean($this->input->post('end_date'))) {
$this->session->unset_userdata('filter_end_date');
$end_date = $this->security->xss_clean($this->input->post('end_date'));
} else {
$end_date = $this->session->userdata('filter_end_date');
}
$this->db->select('*');
$this->db->from('orders');
$this->db->where('order_date >=', date('Y-m-d 00:00:00', strtotime($start_date)));
$this->db->where('order_date <=', date('Y-m-d 23:59:59', strtotime($end_date)));
$this->db->order_by('id_orders', 'desc');
$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($start_date)));
$this->db->where('order_date <=', date('Y-m-d 23:59:59', strtotime($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();
$this->session->set_userdata('filter_start_date', $start_date);
$this->session->set_userdata('filter_end_date', $end_date);
} elseif ($filter_key == "totalorder") {
if ($this->security->xss_clean($this->input->post('start_amt'))) {
$this->session->unset_userdata('filter_start_amt');
$start_amt = $this->security->xss_clean($this->input->post('start_amt'));
} else {
$start_amt = $this->session->userdata('filter_start_amt');
}
if ($this->security->xss_clean($this->input->post('end_amt'))) {
$this->session->unset_userdata('filter_end_amt');
$end_amt = $this->security->xss_clean($this->input->post('end_amt'));
} else {
$end_amt = $this->session->userdata('filter_end_amt');
}
$this->db->select('*');
$this->db->from('orders');
if ($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)) >=', $start_amt);
}
if ($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)) <=', $end_amt);
}
$this->db->order_by('id_orders', 'desc');
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
if ($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)) >=', $start_amt);
}
if ($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)) <=', $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();
$this->session->set_userdata('filter_start_amt', $start_amt);
$this->session->set_userdata('filter_end_amt', $end_amt);
} elseif ($filter_key == "marketplace") {
if ($this->security->xss_clean($this->input->post('marketplace_name'))) {
$this->session->unset_userdata('filter_marketplace_name');
$marketplace_name = $this->security->xss_clean($this->input->post('marketplace_name'));
} else {
$marketplace_name = $this->session->userdata('filter_marketplace_name');
}
$this->db->select('*');
$this->db->from('orders');
$this->db->where('marketplace_name', $marketplace_name);
$this->db->order_by('id_orders', 'desc');
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
$this->db->where('marketplace_name', $marketplace_name);
$this->db->order_by('id_orders', 'desc');
$this->db->limit($config['per_page'], $this->uri->segment(4));
$this->data['orders'] = $this->db->get()->result();
$this->session->set_userdata('filter_marketplace_name', $marketplace_name);
} elseif ($filter_key == "customer") {
if ($this->security->xss_clean($this->input->post('customer_id'))) {
$this->session->unset_userdata('filter_customer_id');
$customer_id = $this->security->xss_clean($this->input->post('customer_id'));
} else {
$customer_id = $this->session->userdata('filter_customer_id');
}
$this->db->select('*');
$this->db->from('orders');
$this->db->where('customer_id', $customer_id);
$this->db->order_by('id_orders', 'desc');
$config['total_rows'] = $this->db->get()->num_rows();
$this->pagination->initialize($config);
$this->db->select('*');
$this->db->from('orders');
$this->db->where('customer_id', $customer_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();
$this->session->set_userdata('filter_customer_id', $customer_id);
}
$this->session->set_userdata('filter_key', $filter_key);
$rowcount = $config['total_rows'];
$this->data['total_sales_order'] = $rowcount;
//load view
$this->data['subview'] = 'admin/orders_retailer/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()
{
/*$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('name', 'ASC')->get()->result();
$this->data['products'] = $this->db->select(' p.id_products, pc.product_details_id ,pc.attribute_detail_id , p.title,pa.product_attribute,pad.attribute_detail, pd.sku,pd.price')
->from('product_combination pc, products p, product_details pd, product_attributes pa, product_attributes_detail pad')
->where('pc.product_id = p.id_products and pc.product_details_id = pd.id and pa.id = pc.attribute_id and pad.id = pc.attribute_detail_id')
->order_by('title', 'ASC')
->get()->result();
$this->data['warehouses'] = $this->db->select('*')->from('warehouse')->order_by('id', 'ASC')->get()->result();
$this->data['metode_pengiriman'] = $this->db->select('*')->from('shipment_method')->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*/
/*cek shipping customer untuk yang guest */
if ($customer->shipping_district == "" || $customer->shipping_district == null) {
$this->session->set_flashdata('success', '<br><p style="background:red; color:white; padding:5px; font-weight:bold;">District Empty</p>');
redirect('admin/orders_retailer/add_order');
}
if ($customer->shipping_subdistrict == "" || $customer->shipping_subdistrict == null) {
$this->session->set_flashdata('success', '<br><p style="background:red; color:white; padding:5px; font-weight:bold;">Sub-District Empty</p>');
redirect('admin/orders_retailer/add_order');
}
if ($customer->shipping_province == "" || $customer->shipping_province == null) {
$this->session->set_flashdata('success', '<br><p style="background:red; color:white; padding:5px; font-weight:bold;">Province Emptyr');
}
// cek shipping customer untuk yang guest
/*get marketplace name*/
$marketplace_name = null;
$marketplace_id = $this->input->post('marketplace_id');
$get_marketplace_name = $this->db->select('name')->from('marketplace')->where('id', $marketplace_id)->get()->row();
if ($get_marketplace_name != null) {
$marketplace_name = $get_marketplace_name->name;
}
/*get marketplace name*/
$product = $this->security->xss_clean($this->input->post('id_product_detail'));
$count_product = count($product);
$marketplace_price = $this->security->xss_clean($this->input->post('harga'));
$quantitas_beli = $this->security->xss_clean($this->input->post('kuantitas'));
$warehouse_id = $this->security->xss_clean($this->input->post('warehouse_id'));
$kurir_id = $this->security->xss_clean($this->input->post('kurir_id'));
/*cek product dan qty kosong*/
if ($product != 0) {
for ($a = 0; $a < $count_product; $a++) {
if ($quantitas_beli[$a] == "" || $quantitas_beli[$a] == 0) {
$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_retailer/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_retailer/add_order');
}
$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,
'order_date' => date("Y-m-d H:i:s"),
'payment_status' => 1,
'payment_status_message' => NULL,
'payment_confirm' => 0,
'payment_confirm_details' => NULL,
'total_amount' => $total_amount,
'payment_type' => 'Bank Transfer',
'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' => "",
'marketplace_name' => $marketplace_name,
'admin_note' => $this->security->xss_clean($this->input->post('admin_note')),
'created_by' => $this->session->userdata('admin')['name']
);
$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('p.id_products, pc.product_details_id ,pc.attribute_detail_id , p.title,pa.product_attribute,pad.attribute_detail, pd.sku,pd.price, s.stock, s.warehouse_id')
->from('product_combination pc, products p, product_details pd, product_attributes pa, product_attributes_detail pad, stock s')
->where('pc.product_id = p.id_products and pc.product_details_id = pd.id and pa.id = pc.attribute_id and pad.id = pc.attribute_detail_id and s.id_product_detail = pc.product_details_id')
->where('pc.product_details_id', $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],
'product_id' => $product_item->id_products,
'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' => $product_item->sku,
'attributes' => $product_item->attribute_detail,
'warehouse_id' => $warehouse_id,
'chosen_shipping_id' => $kurir_id,
/* '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_detail', $product[$d])->where('warehouse_id', $warehouse_id)->get()->row();
$warehouse = $this->db->select('*')->from('warehouse')->where('id', $warehouse_id)->get()->row();
if ($warehouse->warehouse_type == 'virtual') {
$final_stock = array(
'stock_virtual' => $curent_stock->stock_virtual - $quantitas_beli[$d],
);
$this->db->where('id_product_detail', $product[$d]);
$this->db->where('warehouse_id', $warehouse_id);
$this->db->update('stock', $final_stock);
} else {
$final_stock = array(
'stock' => $curent_stock->stock - $quantitas_beli[$d],
);
$this->db->where('id_product_detail', $product[$d]);
$this->db->where('warehouse_id', $warehouse_id);
$this->db->update('stock', $final_stock);
// insert mov stock
$id_stock = $this->db->select('id')->from('stock')->where('id_product_detail', $product[$d])->where('warehouse_id', $warehouse_id)->get()->row();
$this->db->select('name')->from('users')->where('id', $this->session->userdata('admin')['id']);
$user_name = $this->db->get()->row()->name;
$last_stock = $curent_stock->stock - $quantitas_beli[$d];
$insert_mov_stock = array(
'stock_id' => $id_stock->id,
'type' => '-',
'stock_change' => $quantitas_beli[$d],
'remark' => 'Sales Order No: ' . $order_id,
'total' => $last_stock,
'name' => $user_name,
'datetime' => date("Y-m-d H:i:s"),
);
$this->db->insert('stock_movement', $insert_mov_stock);
// insert mov stock
}
}
/*kurangi stock pada warehouse*/
/*insert shipping session to shipping table*/
$insert_shipping_session = array(
'order_id' => $order_id,
'warehouse_id' => $warehouse_id,
'shipping_fee' => $this->input->post('shipping_fee'),
'is_indent' => 'no',
);
$this->db->insert('shipping', $insert_shipping_session);
/*insert shipping session to shipping table*/
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Add Order Successful</p>');
redirect('admin/orders_retailer');
}
//load view
$this->data['subview'] = 'admin/orders_retailer/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_retailer/ajax_get_product_marketplace', $data);
}
function ajax_get_address_customer()
{
$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_retailer/ajax_get_address_customer', $data);
}
function ajax_get_product_detail()
{
$id = (int) $this->input->post('id_product_detail');
// $id_marketplace = (int) $this->input->post('id_marketplace');
$id_warehouse = (int) $this->input->post('id_warehouse');
$data['stock'] = $this->db->select("p.id_products, pc.product_details_id ,pc.attribute_detail_id , p.title,pa.product_attribute,pad.attribute_detail, pd.sku,pd.price, s.stock")
->from("product_combination pc, products p, product_details pd, product_attributes pa, product_attributes_detail pad, stock s")
->where("pc.product_id = p.id_products and pc.product_details_id = pd.id and pa.id = pc.attribute_id and pad.id = pc.attribute_detail_id and s.id_product_detail = pc.product_details_id")
->where("pc.product_details_id", $id)
->where("s.warehouse_id", $id_warehouse)->get()->row();
echo json_encode($data);
}
//to VIEW and EDIT order in admin
public function view($id)
{
if ($id == null) {
redirect('admin/orders_retailer');
}
//get orders
$this->db->select('id_orders')->from('orders')->where('id_orders', $id);
$current_order_count = $this->db->get()->num_rows();
if ($current_order_count < 1) {
show_404();
}
if (isset($_POST['payment_status'])) {
/* if($this->order_m->cek_order($id,$_POST['payment_status']) == FALSE){
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Order telah diproses</p>');
redirect('admin/orders_retailer/view/' . $id);
} */
//var_dump($this->input->post('payment_status')); exit();
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, id')->from('stock')->where('id_product', $item->product_id)->where('id_product_detail', $item->item_id)->where('warehouse_id', $item->warehouse_id);
$current_stock = $this->db->get()->row();
$qty = 0;
if ($item->is_backorder == 'yes') {
$qty = $qty + 0;
} else {
$qty = $qty + $item->quantity;
}
$data = array(
'stock' => $current_stock->stock + $qty,
);
$this->db->where('id_product', $item->product_id);
$this->db->where('id_product_detail', $item->item_id);
$this->db->where('warehouse_id', $item->warehouse_id);
$this->db->update('stock', $data);
//get $stock_id
$stock_id = $current_stock->id;
$last_stock = $current_stock->stock + $qty;
$this->db->select('name')->from('users')->where('id', $this->session->userdata('admin')['id']);
$user_name = $this->db->get()->row()->name;
//update stock_movement_table
$movement_data = array(
'stock_id' => $stock_id,
'type' => '+',
'stock_change' => (int) $qty,
'remark' => 'Cancel Order No: ' . $id,
'total' => $last_stock,
'name' => $user_name
);
$this->db->insert('stock_movement', $movement_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('current_reward,sisa_reward,minus_reward')->from('orders')->where('id_orders', $id);
$rewards = $this->db->get()->row();
$minus_point = (int) $rewards->minus_reward;
$current_reward = (int) $rewards->current_reward;
$sisa_reward = (int) $rewards->sisa_reward;
if (($sisa_reward + $minus_point) == $current_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 Retailer
//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';
$email_data = $data;
$email_data['email'] = $data['customer']->email;
if ($data['order']->order_language == 'english') {
$email_data['subject'] = 'Canceling Your Order';
} else {
$email_data['subject'] = 'Kok Batal?';
}
if ($data['order']->order_language == 'english') {
$view_file = 'email/english/order_cancel';
} else {
$view_file = 'email/indonesian/order_cancel';
}
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mengubah status order ' . $id . ' menjadi Batal';
log_activity($user_id, $activity);
$this->send_email($view_file, $email_data);
//----end send email
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Status pembayaran berhasil diupdate</p>');
redirect('admin/orders_retailer/view/' . $id);
}
if ($this->input->post('payment_status') == 1) {
//Status NOT PAID
$data = array(
'payment_status' => 1,
'payment_date' => date('Y-m-d')
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data);
//----SEND EMAIL TO CUSTOMER
//get customer name
$this->db->select('customer_id')->from('orders')->where('id_orders', $id);
$customer_id = (int) $this->db->get()->row()->customer_id;
$this->db
->select('name,phone,type,email')
->from('customers')
->where('id_customers', $customer_id);
$email_data['customer'] = $this->db->get()->row();
$email_data['email'] = $email_data['customer']->email;
$email_data['emails'] = $this->configuration_m->get_emails();
$order_data = $this->db->select('*')->from('orders')->where('id_orders', $id)->get()->row();
$payment_type = $order_data->payment_type;
if ($payment_type == 'bank transfer BCA') {
$email_data['bank'] = $this->db
->select('bank')
->from('configuration')
->where('id_configuration', 1)
->get()
->row()->bank;
} elseif ($payment_type == 'bank transfer MANDIRI') {
$email_data['bank'] = $this->db
->select('bank1')
->from('configuration')
->where('id_configuration', 1)
->get()
->row()->bank1;
}
if ($this->session->userdata('site_lang') == 'english') {
$email_data['subject'] = 'Konfirmasi Pesanan';
} else {
$email_data['subject'] = 'Konfirmasi Pesanan';
}
//get order detail and customer detail
$email_data['order'] = $this->order_m->get_order($id);
$email_data['order_details'] = $this->order_detail_m->get_orders_detail($id);
//get vouchers detail
if ($this->session->userdata('chosen_voucher_code')) {
$email_data['chosen_voucher_code'] = $this->session->userdata(
'chosen_voucher_code'
);
$email_data['chosen_voucher_type'] = $this->session->userdata(
'chosen_voucher_type'
);
$email_data['chosen_voucher_discount'] = $this->session->userdata(
'chosen_voucher_discount'
);
$email_data['redeemed_voucher_amount'] = $this->session->userdata(
'redeemed_voucher_amount'
);
}
//get shipping fee total
$email_data['carrier_name'] = $this->session->userdata('carrier_name');
$email_data['total_shipping_fee'] = $this->session->userdata(
'total_shipping_fee'
);
//add tax to email, if exist..
if ($this->session->userdata('tax')) {
$email_data['tax'] = $this->session->userdata('tax');
}
//add point reward to email, if exist..
if ($this->session->userdata('chosen_point')) {
$email_data['chosen_point'] = $this->session->userdata('chosen_point');
$email_data['chosen_point_discount'] = $this->session->userdata(
'chosen_point_discount'
);
}
switch ($payment_type) {
case 'bank transfer BCA':
if ($this->session->userdata('site_lang') == 'english') {
$view_file = 'email/indonesian/bank_transfer_indo_retailer';
} else {
$view_file = 'email/indonesian/bank_transfer_indo_retailer';
}
break;
case 'bank transfer MANDIRI':
if ($this->session->userdata('site_lang') == 'english') {
$view_file = 'email/indonesian/bank_transfer_indo_retailer';
} else {
$view_file = 'email/indonesian/bank_transfer_indo_retailer';
}
break;
case 'cod':
if ($this->session->userdata('site_lang') == 'english') {
$view_file = 'email/english/cod';
} else {
$view_file = 'email/indonesian/cod';
}
break;
case 'midtrans':
if ($this->session->userdata('site_lang') == 'english') {
/*$email = $this->load->view('email/english/bank_transfer', $data, TRUE); */
$view_file = 'email/english/bank_transfer_english';
} else {
$view_file = 'email/indonesian/bank_transfer_indo';
}
break;
}
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User menerima pesanan dan status order ' . $id . ' berubah menjadi Belum Bayar';
log_activity($user_id, $activity);
$this->send_email($view_file, $email_data); //function in My_Controller
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Status pembayaran berhasil diupdate</p>');
redirect('admin/orders_retailer/view/' . $id);
}
if ($this->input->post('payment_status') == 3) {
//Status PAID
$data = array(
'payment_status' => 3,
);
$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 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;
//SEND EMAIL TO CUSTOMER
$data['title'] = 'Payment Confirmation';
//get order detail and customer detail
$data['order'] = $this->order_m->get_order($id);
$data['order_details'] = $this->order_detail_m->get_orders_detail($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;
$email_data = $data;
$email_data['email'] = $data['customer']->email;
if ($data['order']->order_language == 'english') {
$email_data['subject'] = 'Payment Received';
} else {
$email_data['subject'] = 'Pembayaran Telah Diterima';
}
if ($data['order']->order_language == 'english') {
$view_file = 'email/english/payment_confirmation_retailer';
} else {
$view_file = 'email/indonesian/payment_confirmation_retailer';
}
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User memverifikasi pembayaran dan status order ' . $id . ' berubah menjadi Sudah Bayar';
log_activity($user_id, $activity);
$this->send_email($view_file, $email_data);
//----end send email
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Status pembayaran berhasil diupdate</p>');
redirect('admin/orders_retailer/view/' . $id);
}
//CONDITION FOR PARTIAL PAID
if ($this->input->post('payment_status') == 6) {
//Status PAID
$data = array(
'payment_status' => 6,
);
$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 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;
//SEND EMAIL TO CUSTOMER
$data['title'] = 'Payment Confirmation';
//get order detail and customer detail
$data['order'] = $this->order_m->get_order($id);
$data['order_details'] = $this->order_detail_m->get_orders_detail($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;
$email_data = $data;
$email_data['email'] = $data['customer']->email;
$email_data['subject'] = 'Payment Received';
if ($data['order']->order_language == 'english') {
$view_file = 'email/english/payment_confirmation_retailer';
} else {
$view_file = 'email/indonesian/payment_confirmation_retailer';
}
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mengubah status order ' . $id . ' menjadi Sudah Bayar (Hanya DP)';
log_activity($user_id, $activity);
$this->send_email($view_file, $email_data);
// var_dump($this->email->print_debugger());
// exit();
//----end send email
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Status pembayaran berhasil diupdate</p>');
redirect('admin/orders_retailer/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);
//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;
$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;
//get plus reward already given status
$this->db->select('plus_reward_given')->from('orders')->where('id_orders', $id);
$plus_reward_given = $this->db->get()->row();
if ($plus_reward_given->plus_reward_given == 'no' || $plus_reward_given->plus_reward_given == NULL) {
//update point reward
$data = array(
'current_pointreward' => $updated_point,
);
$this->db->where('id_customers', $customer_id);
$this->db->update('customers', $data);
$data_order = array(
'plus_reward_given' => 'yes',
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data_order);
}
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mengubah status order ' . $id . ' menjadi Dalam Proses';
log_activity($user_id, $activity);
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Status pembayaran berhasil diupdate</p>');
redirect('admin/orders_retailer/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;">Status pembayaran berhasil diupdate</p>');
redirect('admin/orders_retailer/view/' . $id);
}
if ($this->input->post('payment_status') == 8) {
// Ambil creditclaimamount dari tabel orders
$this->db->select('creditclaimamount, customer_id');
$this->db->from('orders');
$this->db->where('id_orders', $id);
$query = $this->db->get();
$order = $query->row();
$creditClaimAmount = $order->creditclaimamount;
$customer_id = $order->customer_id;
// Update creditclaimamount di tabel orders
$data = array(
'payment_status' => 8
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data);
// Update current_pointreward di tabel customers
$this->db->set('current_pointreward', 'current_pointreward + ' . $creditClaimAmount, FALSE);
$this->db->where('id_customers', $customer_id);
$this->db->update('customers');
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Status pembayaran berhasil diupdate</p>');
redirect('admin/orders_retailer/view/' . $id);
}
}
//get all provinces data from provinces table...
$this->db->select('rajaongkir_province_id, province')->from('indonesia_provinces')->order_by('rajaongkir_province_id', 'ASC');
$this->data['shipping_provinces'] = $this->db->get()->result();
//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_retailer/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()
{
if (!$this->input->post('id_order')) {
redirect('admin/orders_retailer');
}
$id = $this->security->xss_clean($this->input->post('id_product_detail'));
$id_order = $this->security->xss_clean($this->input->post('id_order'));
$status = $this->input->post('status');
if ($status == 0) {
$order_details = array(
'status' => $status,
);
} 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,
);
$new_stock = array(
'stock' => $cek_stock - $this->security->xss_clean($this->input->post('qty_order')),
);
$this->db->where('id_product', $this->security->xss_clean($this->input->post('item_order')));
$this->db->where('warehouse_id', $this->security->xss_clean($this->input->post('warehouse_order')));
$this->db->update('stock', $new_stock);
} else {
$this->session->set_flashdata('success' . $this->security->xss_clean($this->input->post('id')), '<p style="color:red; font-weight:bold;">Stock Tidak Cukup</p>');
redirect('admin/orders_retailer/view/' . $id_order);
}
} else {
$order_details = array(
'status' => $status,
'no_resi' => $this->security->xss_clean($this->input->post('no_resi')),
);
}
} elseif ($status == 2) {
$order_details = array(
'status' => $status,
'no_resi' => $this->security->xss_clean($this->input->post('no_resi')),
'shipping_date' => date('Y-m-d H:i:s')
);
//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['nama_kurir'] = $this->db->select('carrier')->from('shipment_method')->where('id', $data['product_detail']->chosen_shipping_id)->get()->row()->carrier;
$data['no_resi'] = $this->security->xss_clean($this->input->post('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();
//temporary comment
/*$this->load->library('email');
//get email setting
$config['protocol'] = 'smtp';
$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'] = 'iso-8859-1';
$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);
//add no resi to shipping table
$data_resi = array(
'tracking_number' => $this->security->xss_clean($this->input->post('no_resi'))
);
$this->db->where('order_id', $this->security->xss_clean($this->input->post('id_order')));
$this->db->where('warehouse_id', $this->security->xss_clean($this->input->post('warehouse_order')));
$this->db->update('shipping', $data_resi);
/*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);
//$this->sync_this_order($id_order);
}
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Update Order Status Success</p>');
redirect('admin/orders_retailer/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_retailer');
}
$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_retailer');
}
//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_multiple_deliveryslips()
{
if (!$this->input->post('generate_deliveryslips')) {
redirect('admin/orders_retailer');
}
$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_retailer');
}
//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;
//get websote name
$data['website_name'] = $this->db->select('website_name')->from('configuration')->where('id_configuration', 1)->get()->row()->website_name;
//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 update_noresi()
{
$order_detail_id = $this->input->post('id_orders_detail');
/*get order id & warehouse*/
$id_order = $this->db->select('orders_id')->from('orders_detail')->where('id_orders_detail', $order_detail_id)->get()->row()->orders_id;
$warehouse_id = $this->db->select('warehouse_id')->from('orders_detail')->where('id_orders_detail', $order_detail_id)->get()->row()->warehouse_id;
$is_backorder = $this->db->select('is_backorder')->from('orders_detail')->where('id_orders_detail', $order_detail_id)->get()->row()->is_backorder;
/*get order id & warehouse*/
$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);
$new_tracking_number = array(
'tracking_number' => $this->input->post('no_resi'),
);
$this->db->where('order_id', $id_order);
$this->db->where('warehouse_id', $warehouse_id);
$this->db->where('is_indent', $is_backorder);
$this->db->update('shipping', $new_tracking_number);
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">No. Resi Updated</p>');
redirect('admin/orders_retailer/view/' . $id_order);
}
function jx_update_stt_withbutton()
{
$p_act = $this->input->post('p_act');
$msg = "Gagal";
$res = "";
if (isset($p_act)) {
switch ($p_act) {
case 'ready to send':
$productid = $this->input->post('productid');
$order_detailid = $this->input->post('order_detailid');
$orderid = $this->input->post('orderid');
$itemid = $this->input->post('itemid');
$witch = $this->input->post('witch');
if ($witch === "indent") {
//get warehouse id
$order_detail = $this->db->select('warehouse_id, quantity')->from('orders_detail')->where('id_orders_detail', $order_detailid)->get()->row();
$warehouse_id = $order_detail->warehouse_id;
$qty = $order_detail->quantity;
//deduct stock
//get current stock
$this->db->select('stock, id')->from('stock')->where('id_product', $productid)->where('id_product_detail', $itemid)->where('warehouse_id', $warehouse_id);
$current_stock = $this->db->get()->row();
$data = array(
'stock' => $current_stock->stock - $qty,
);
$query_update = $this->db->where('id_product', $productid)
->where('id_product_detail', $itemid)
->where('warehouse_id', $warehouse_id)
->update('stock', $data);
//get $stock_id
$stock_id = $current_stock->id;
$last_stock = $current_stock->stock + $qty;
//update stock_movement_table
$movement_data = array(
'stock_id' => $stock_id,
'type' => '-',
'stock_change' => (int) $qty,
'remark' => 'Indent Order No: ' . $orderid . ' (' . $last_stock . ')'
);
$this->db->insert('stock_movement', $movement_data);
//send email
$indent_uniqe = $this->customer_m->hash($productid . ' ' . $order_detailid . ' ' . $orderid);
$data = array(
'indent_uniqe_id' => $indent_uniqe
);
$this->db->where('id_orders', $orderid);
$this->db->update('orders', $data);
//get order data
$order_data = $this->db->select('*')->from('orders')->where('id_orders', $orderid)->get()->row();
$customer_id = $order_data->customer_id;
$data['order'] = $order_data;
$data['customer'] = $this->customer_m->get_customer($data['order']->customer_id);
$check_bank_bca =
$this->db->select('bank')
->from('configuration')
->where('id_configuration', 1)
->where('bank_transfer', 1)
->get();
$check_bank_mandiri =
$this->db->select('bank1')
->from('configuration')
->where('id_configuration', 1)
->where('bank_transfer1', 1)
->get();
$data['bank_active'] = [];
if ($check_bank_bca->num_rows() > 0) {
$data['bank_active'][0] =
$check_bank_bca->row()->bank;
}
if ($check_bank_mandiri->num_rows() > 0) {
$data['bank_active'][1] =
$check_bank_mandiri->row()->bank1;
}
$email_data = $data;
//get order details only contain indent
$email_data['order_details'] = $this->db->select('*')->from('orders_detail')->where('orders_id', $orderid)->where('id_orders_detail', $order_detailid)->where('is_backorder', 'yes')->get()->result();
// var_dump($email_data);
// exit();
//----SEND EMAIL TO CUSTOMER TO PAY FOR INDENT
$this->db->select('name,customers.phone,type,email')->from('customers')->where('id_customers', $customer_id);
$email_data['customer'] = $this->db->get()->row();
$data['order_details'] = $email_data['order_details'];
if ($order_data->payment_type !== "midtran") {
$data['bank'] = $order_data->payment_type;
if ($data['bank'] == 'bank transfer BCA') {
$bank_info = $this->db->select('bank')->from('configuration')->where('id_configuration', 1)->get()->row()->bank;
$data['bank_info'] = $bank_info;
} else {
$bank_info = $this->db->select('bank1')->from('configuration')->where('id_configuration', 1)->get()->row()->bank1;
$data['bank_info'] = $bank_info;
}
}
$email_data['email'] = $email_data['customer']->email;
$email_data['emails'] = $this->configuration_m->get_emails();
$payment_type = $order_data->payment_type;
if ($payment_type == 'bank transfer BCA') {
$email_data['bank'] = $this->db->select('bank')->from('configuration')->where('id_configuration', 1)->get()->row()->bank;
}
if ($payment_type == 'bank transfer MANDIRI') {
$email_data['bank'] = $this->db->select('bank1')->from('configuration')->where('id_configuration', 1)->get()->row()->bank1;
}
$email_data['subject'] = 'Indent Product Ready';
//get order detail and customer detail
$email_data['order'] = $this->order_m->get_order($orderid);
if ($data['order']->order_language == 'english') {
$view_file = 'email/english/indent_ready';
} else {
$view_file = 'email/indonesian/indent_ready';
}
// echo "<pre>";
// var_dump($email_data['bank']);
// exit();
// $this->load->view('email/indonesian/indent_ready', $email_data);
// echo "<pre>";
// var_dump($data['bank_active']);
// exit();
$this->send_email($view_file, $email_data); //function in My_Controller
}
if ($witch === "instock") {
}
$w = array(
"id_orders_detail" => $order_detailid,
"orders_id" => $orderid,
"item_id" => $itemid,
"product_id" => $productid,
);
$dt = array(
"status" => 1,
);
$res = $w;
$upd = $this->db->update("orders_detail", $dt, $w);
if ($upd) {
$msg = "Sukses";
}
break;
case 'fully paid':
$productid = $this->input->post('productid');
$order_detailid = $this->input->post('order_detailid');
$orderid = $this->input->post('orderid');
$itemid = $this->input->post('itemid');
$w = array(
"id_orders_detail" => $order_detailid,
"orders_id" => $orderid,
"item_id" => $itemid,
"product_id" => $productid,
"status" => 1,
);
$res = $w;
$dt = array(
"status" => 3,
);
$upd = $this->db->update("orders_detail", $dt, $w);
if ($upd) {
$msg = "Sukses";
// $this->db->select('customer_id')->from('orders')->where('id_orders', $orderid);
// $customer_id = (int) $this->db->get()->row()->customer_id;
//get add and minus point from order
$this->db->select('plus_reward')->from('orders')->where('id_orders', $orderid);
$rewards = $this->db->get()->row();
$plus_point = (int) $rewards->plus_reward;
$data['title'] = 'Fully Paid';
$data['order'] = $this->order_m->get_order($orderid);
$data['order_details'] = $this->order_detail_m->get_orders_detail($orderid);
$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;
$email_data = $data;
$email_data['email'] = $data['customer']->email;
$email_data['subject'] = 'Payment Fully Paid';
if ($data['order']->order_language == 'english') {
$view_file = 'email/english/payment_confirmation_retailer';
} else {
$view_file = 'email/indonesian/payment_confirmation_retailer';
}
$this->send_email($view_file, $email_data);
}
break;
case 'save noresi':
$productid = $this->input->post('productid');
$order_detailid = $this->input->post('order_detailid');
$orderid = $this->input->post('orderid');
$itemid = $this->input->post('itemid');
$inp_noresi = $this->input->post('inp_noresi');
$witch = $this->input->post('witch');
$set_stt = 3;
if ($witch === "indent") {
$set_stt = 3;
}
if ($witch === "instock") {
$set_stt = 1;
}
$w = array(
"id_orders_detail" => $order_detailid,
"orders_id" => $orderid,
"item_id" => $itemid,
"product_id" => $productid,
"status" => $set_stt,
);
$res = $w;
$dt = array(
"no_resi" => $inp_noresi,
);
$upd = $this->db->update("orders_detail", $dt, $w);
if ($upd) {
$msg = "Sukses";
}
break;
case 'sent':
$productid = $this->input->post('productid');
$order_detailid = $this->input->post('order_detailid');
$inp_noresi = $this->input->post('inp_noresi');
$orderid = $this->input->post('orderid');
$itemid = $this->input->post('itemid');
$witch = $this->input->post('witch');
$set_stt = 3;
$data['order'] = $this->db->select('*')->from('orders')->where('id_orders', $orderid)->get()->row();
if ($witch === "indent") {
$set_stt = 3;
}
if ($witch === "instock") {
$set_stt = 1;
}
$w = array(
"id_orders_detail" => $order_detailid,
"orders_id" => $orderid,
"item_id" => $itemid,
"product_id" => $productid,
"status" => $set_stt,
);
$res = $w;
$dt = array(
"status" => 2,
);
$upd = $this->db->update("orders_detail", $dt, $w);
//SEND EMAIL TO CUSTOMER
$data['product_detail'] = $this->db->select('*')->from('orders_detail')->where('id_orders_detail', $order_detailid)->get()->row();
$data['title'] = 'Product Picked Up';
//get order detail and customer detail
$data['orders_detail'] = $this->db->select('*')->from('orders_detail')
->where('id_orders_detail', $order_detailid)
->get()->row();
$data['warehouse'] = $this->db->select('name')->from('warehouse')
->where('id', $data['orders_detail']->warehouse_id)->get()->row()->name;
$data['shipping_method'] = $this->db->select('name')->from('shipment_method')
->where('id', $data['orders_detail']->chosen_shipping_id)->get()->row()->name;
$data['nama_kurir'] = $this->db->select('carrier')->from('shipment_method')
->where('id', $data['orders_detail']->chosen_shipping_id)->get()->row()->carrier;
$data['no_resi'] = $this->security->xss_clean($inp_noresi);
$customer_id = $this->db->select('customer_id')->from('orders')->where('id_orders', $orderid)->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();
$email_data = $data;
$email_data['email'] = $email_data['customer']->email;
if ($data['order']->order_language == 'english') {
$email_data['subject'] = 'Product Sent';
} else {
$email_data['subject'] = 'Pesananmu Sudah Dijalan';
}
if ($data['order']->order_language == 'english') {
$view_file = 'email/english/pickedup_confirmation';
} else {
$view_file = 'email/indonesian/pickedup_confirmation';
}
$this->send_email($view_file, $email_data); //function in My_Controller
//----end send email
if ($upd) {
$msg = "Sukses";
$w = array(
// "id_orders_detail"=>$order_detailid,
"orders_id" => $orderid,
// "item_id"=>$itemid,
// "product_id"=>$productid,
// "status"=>2
);
$cek_sttnow = 2;
$query_sttwo = $this->db->get_where('orders_detail', $w);
// $res['data_order_details']= $query_sttwo->result();
foreach ($query_sttwo->result() as $key) {
if ((int)$key->status !== 2) {
$cek_sttnow = (int)$key->status;
$res['hasil_status'][] = (int)$key->status;
}
}
$res['akhir_hasil_status'] = $cek_sttnow;
if ($cek_sttnow === 2) {
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mengubah status order ' . $orderid . ' menjadi Terkirim';
log_activity($user_id, $activity);
$upd2 = $this->db->update("orders", array(
"payment_status" => 5,
), array(
"id_orders" => $orderid,
));
if ($upd2) {
$msg = "Sukses";
} else {
$msg = "Gagal";
}
}
}
break;
default:
# code...
break;
}
}
$rs = $res;
$rs["msg"] = $msg;
echo json_encode($rs);
}
function ajax_update_status()
{
$return = 'false';
$id_orders = $this->input->post('id_orders');
$barcode_validate = $this->input->post('barcode_validate');
$item_id = $this->input->post('id_products');
$is_backorder = $this->input->post('is_backorder');
$warehouse_id = $this->input->post('warehouse_id');
$id_order_detail = $this->input->post('id_order_detail');
//get product id
$product_id = $this->db->select('product_id')->from('orders_detail')->where('item_id', $item_id)->where('orders_id', $id_orders)->get()->row()->product_id;
//get product code
$this->db->select('sku')->from('product_details')->where('id', $item_id);
$product_code = $this->db->get()->row()->sku;
$this->db->select('orders.*,orders_detail.*,warehouse.*');
$this->db->from('orders');
$this->db->join('orders_detail', 'id_orders=orders_id');
$this->db->join('warehouse', 'orders_detail.warehouse_id=warehouse.id');
$this->db->where('id_orders', $id_orders);
$this->db->where('id_orders_detail', $id_order_detail);
$this->db->where('orders_detail.is_backorder', $is_backorder);
$this->db->where('orders_detail.warehouse_id', $warehouse_id);
$order = $this->db->get()->row();
if ($product_code == $barcode_validate) {
if ($this->order_m->cek_orderdetail($order->id_orders_detail, 0) == true) {
$return = 'false';
if ($order->is_backorder == 'yes') {
$cek_stock =
$this->db
->select('stock,stock_virtual')
->from('stock')
->where('id_product', $product_id)
->where('id_product_detail', $item_id)
->where('warehouse_id', $order->warehouse_id)
->get()
->row();
if ($order->warehouse_type == 'virtual') {
if ($order->quantity <= $cek_stock->stock_virtual) {
$order_details = array(
'status' => 1,
);
$new_stock = array(
'stock_virtual' => $cek_stock->stock - $order->quantity,
);
$return = "true";
} else {
$return = "stok tidak cukup";
}
} else {
if ($order->quantity <= $cek_stock->stock) {
$order_details = array(
'status' => 1,
);
$new_stock = array(
'stock' => $cek_stock->stock - $order->quantity,
);
$return = "true";
} else {
$return = "stok tidak cukup";
}
}
if ($return == "true") {
$this->db->where('id_product', $product_id);
$this->db->where('id_product_detail', $order->item_id);
$this->db->where('warehouse_id', $order->warehouse_id);
$this->db->update('stock', $new_stock);
}
} else {
$order_details = array(
'status' => 1,
);
$return = "true";
}
} else {
$return = "order telah proses";
}
if ($return == "true") {
$this->db->where('id_orders_detail', $order->id_orders_detail);
$this->db->update('orders_detail', $order_details);
}
echo $return;
} else {
echo "Barcode salah, harap cek kembali";
}
}
function ongkir_change($id)
{
if (!isset($_POST['shipping_fee'])) {
show_404();
}
if ($id == NULL) {
show_404();
}
//load library security
$this->load->library('security');
//check if id is exist
$this->db->select('id_orders')->from('orders')->where('id_orders', $id);
$count_id = $this->db->get()->num_rows();
if ($count_id == 0) {
show_404();
}
$data = array(
'shipping_fee' => $this->security->xss_clean($this->input->post('shipping_fee'))
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data);
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mengubah ongkos kirim (' . $id . ')';
log_activity($user_id, $activity);
$this->session->set_flashdata('success', "<br><p style='background:green; color:white; padding:5px; font-weight:bold;'>Ongkir berhasil di update</p>");
redirect('admin/orders_retailer/view/' . $id);
}
function update_resi_all($id)
{
if (!isset($_POST['resi'])) {
show_404();
}
if ($id == NULL) {
show_404();
}
//load library security
$this->load->library('security');
//check if id is exist
$this->db->select('id_orders')->from('orders')->where('id_orders', $id);
$count_id = $this->db->get()->num_rows();
if ($count_id == 0) {
show_404();
}
$order_details = $this->order_detail_m->get_orders_detail($id);
foreach ($order_details as $od) {
$data = array(
'status' => $this->security->xss_clean($this->input->post('status')),
'no_resi' => $this->security->xss_clean($this->input->post('resi'))
);
$this->db->where('id_orders_detail', $od->id_orders_detail);
$this->db->update('orders_detail', $data);
}
$order_details_1 = $this->order_detail_m->get_orders_detail_1($id);
$order_detailid = $order_details_1->id_orders_detail;
$inp_noresi = $this->input->post('resi');
$orderid = $this->input->post('orders_id');
$data['order'] = $this->db->select('*')->from('orders')->where('id_orders', $orderid)->get()->row();
//SEND EMAIL TO CUSTOMER
$data['product_detail'] = $this->db->select('*')->from('orders_detail')->where('id_orders_detail', $order_detailid)->get()->row();
$data['title'] = 'Product Sent';
//get order detail and customer detail
$data['orders_detail'] = $this->db->select('*')->from('orders_detail')
->where('id_orders_detail', $order_detailid)
->get()->row();
$data['shipping_method'] = $this->db->select('name')->from('shipment_method')
->where('id', $data['orders_detail']->chosen_shipping_id)->get()->row()->name;
$data['nama_kurir'] = $this->db->select('carrier')->from('shipment_method')
->where('id', $data['orders_detail']->chosen_shipping_id)->get()->row()->carrier;
$data['no_resi'] = $this->security->xss_clean($inp_noresi);
$customer_id = $this->db->select('customer_id')->from('orders')->where('id_orders', $orderid)->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();
$email_data = $data;
$email_data['email'] = $email_data['customer']->email;
if ($data['order']->order_language == 'english') {
$email_data['subject'] = 'Product Sent';
} else {
$email_data['subject'] = 'Pesananmu Sudah Dijalan';
}
if ($data['order']->order_language == 'english') {
$view_file = 'email/english/pickedup_confirmation_all';
} else {
$view_file = 'email/indonesian/pickedup_confirmation_all';
}
$this->send_email($view_file, $email_data); //function in My_Controller
//----end send email
$data = array(
'payment_status' => $this->security->xss_clean($this->input->post('status_order'))
);
$this->db->where('id_orders', $id);
$this->db->update('orders', $data);
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mengubah ongkos kirim (' . $id . ')';
log_activity($user_id, $activity);
$this->session->set_flashdata('success', "<br><p style='background:green; color:white; padding:5px; font-weight:bold;'>Resi berhasil di update</p>");
redirect('admin/orders_retailer/view/' . $id);
}
function add_note($id)
{
if (!isset($_POST['add_note'])) {
show_404();
}
if ($id == NULL) {
show_404();
}
//check if id is exist
$this->db->select('id_orders')->from('orders')->where('id_orders', $id);
$count_id = $this->db->get()->num_rows();
if ($count_id == 0) {
show_404();
}
$data = array(
'admin_note' => $this->security->xss_clean($this->input->post('admin_note'))
);
$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;'>Update Note Success.</p>");
redirect('admin/orders_retailer/view/' . $id);
}
function ajax_check_stock()
{
$pr = $this->input->post('prod');
$qty = $this->input->post('qty');
$wh = $this->input->post('wh');
if (!$this->order_m->cek_stok($pr, $qty, $wh)) {
echo '<span class="label label-semi">stock tidak cukup</span>';
} else {
echo '';
}
}
function change_indent_address()
{
if (!$_POST['change_indent_address']) {
redirect('admin/orders_retailer');
}
$order_id = $this->input->post('inp_order_id');
$customer_id = $this->input->post('inp_customer_id');
$order_detail_id = $this->input->post('order_detail_id');
$address = $this->security->xss_clean($this->input->post('address'));
$province_id = $this->input->post('shipping_province');
$district_id = $this->input->post('shipping_district');
$subdistrict_id = $this->input->post('shipping_subdistrict');
//calculate new shipping fee
$this->load->helper('shipping');
$this->load->helper('rajaongkir');
$free_shipping_type =
$this->db->select('free_shipping_type')
->from('configuration')
->where('id_configuration', 1)->get()->row()
->free_shipping_type;
$condition_freeshipping = false;
if ($free_shipping_type == 'region') {
$selected_region_province =
$this->db->select('*')
->from('free_shipping_region')
->where('configuration_id', 1)
->where('province_id', $province_id)
->get();
if ($selected_region_province->num_rows() > 0) {
$condition_freeshipping = true;
}
}
//get product detail info
$order_detail = $this->db->select('*')->from('orders_detail')->where('id_orders_detail', $order_detail_id)->get()->row();
$shipping_info = calculate_shipping_fee($order_detail->chosen_shipping_id, $order_detail->warehouse_id, $order_detail->product_id, $order_detail->item_id, $order_detail->quantity, $subdistrict_id);
//add new info into orders_detail table
$data = array(
'new_address' => $address,
'new_province_id' => $province_id,
'new_district_id' => $district_id,
'new_subdistrict_id' => $subdistrict_id,
'shipping_fee' => $shipping_info['total_shipping_fee']
);
$query_customers = $this->db->select("*")
->from("customers")
->where('id_customers', $customer_id)
->get();
$query_orders = $this->db->select("*")
->from("orders")
->where('id_orders', $order_id)
->get();
$indent_shipping_fee_remaining = $data['shipping_fee'];
if ($query_customers->num_rows() > 0) {
if ($query_customers->row()->type == "regular") {
if ($condition_freeshipping == true) {
$data['shipping_fee'] = 0;
$indent_shipping_fee_remaining = $data['shipping_fee'];
}
}
}
// echo "<pre>";
// var_dump($indent_shipping_fee_remaining);
// exit();
$this->db->where('id_orders_detail', $order_detail_id);
$this->db->update('orders_detail', $data);
$this->db->where('id_orders', $order_id);
$this->db->update('orders', array(
"indent_shipping_fee" => $indent_shipping_fee_remaining,
));
$this->session->set_flashdata('success', "<br><p style='background:green; color:white; padding:5px; font-weight:bold;'>Indent Address Changed.</p>");
redirect('admin/orders_retailer/view/' . $order_detail->orders_id);
}
public function generate_invoice($id)
{
if ($id == NULL) {
redirect('admin/orders_retailer');
}
$count_order = $this->db->select('id_orders')->from('orders')->where('id_orders', $id)->get()->num_rows();
if ($count_order < 1) {
redirect('admin/orders_retailer');
}
//get website info
$pdf_data['website_data'] = $this->db->select('logo, website_name')->from('configuration')->where('id_configuration', 1)->get()->row();
//add PDF attachment DOMPDF
$pdf_data['title'] = 'Invoice No: ' . $id;
//get order
$this->db->select('*')->from('orders')->where('id_orders', $id);
$pdf_data['order'] = $this->db->get()->row();
if ($count_order > 0) {
//get customer detail
$pdf_data['customer'] = $this->db->select('*')->from('customers')->where('id_customers', $pdf_data['order']->customer_id)->get()->row();
// get order detail
$pdf_data['orders_detail'] = $this->db->select('*')->from('orders_detail')->where('orders_id', $id)->get()->result();
//Print Pdf Invoice
$this->load->library('dompdf_gen');
$html = $this->load->view('pdf/invoice', $pdf_data, true);
$this->dompdf->loadHtml($html);
$this->dompdf->setPaper('A4', 'portrait');
$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);
} else {
redirect('admin/orders_retailer');
}
}
public function generate_deliveryreceipt($id)
{
if ($id == NULL) {
redirect('admin/orders_retailer');
}
$count_order = $this->db->select('id_orders')->from('orders')->where('id_orders', $id)->get()->num_rows();
if ($count_order < 1) {
redirect('admin/orders_retailer');
}
//get website info
$pdf_data['website_data'] = $this->db->select('logo, website_name')->from('configuration')->where('id_configuration', 1)->get()->row();
//add PDF attachment DOMPDF
$pdf_data['title'] = 'Delivery Receipt No: ' . $id;
//get order
$this->db->select('*')->from('orders')->where('id_orders', $id);
$pdf_data['order'] = $this->db->get()->row();
if ($count_order > 0) {
//get customer detail
$pdf_data['customer'] = $this->db->select('*')->from('customers')->where('id_customers', $pdf_data['order']->customer_id)->get()->row();
// get order detail
$pdf_data['orders_detail'] = $this->db->select('*')->from('orders_detail')->where('orders_id', $id)->get()->result();
//Print Pdf Delivery Receipt
$this->load->library('dompdf_gen');
$html = $this->load->view('pdf/deliveryreceipt', $pdf_data, true);
$this->dompdf->loadHtml($html);
$this->dompdf->setPaper('A4', 'portrait');
$this->dompdf->render();
$this->dompdf->stream('deliveryreceipt.pdf', array("Attachment" => 0));
$output = $this->dompdf->output();
$file_to_save = 'uploads/pdf/deliveryreceipt.pdf';
file_put_contents($file_to_save, $output);
} else {
redirect('admin/orders_retailer');
}
}
// public function add_order_admin() {
// // echo $this->input->post('admin_note');
// $total_amount = 0;
// for ($i=0; $i < count($this->input->post('id_product')) ; $i++) {
// // echo $this->input->post('harga')[$i].' jum '.$this->input->post('kuantitas')[$i];
// // echo "<br>";
// $total_amount += $this->input->post('harga')[$i] * $this->input->post('kuantitas')[$i];
// }
// // echo $total_amount;
// // echo "<br>";
// $grand_total_amount = $total_amount+$this->input->post('shipping_fee');
// $id_customer = $this->input->post('customer_id');
// $customer = $this->db->select('*')->from('customers')->where('id_customers', $id_customer)->get()->row();
// // echo $customer->recipient_name;
// $data = array(
// 'customer_id' => $this->input->post('customer_id'),
// 'order_date' => date("Y-m-d H:i:s"),
// 'payment_status' => 0,
// 'grand_total_amount' => $grand_total_amount,
// 'total_downpayment' => $grand_total_amount,
// 'indent_remaining' => 0,
// 'indent_shipping_fee' => 0,
// 'total_amount' => $total_amount,
// 'recipient_name' => $customer->recipient_name,
// 'address' => $customer->address,
// 'district' => $customer->district,
// 'subdistrict' => $customer->subdistrict,
// 'province' => $customer->province,
// 'postcode' => $customer->postcode,
// 'phone' => $customer->phone,
// 'email' => $customer->email,
// 'country' => $customer->country,
// 'shipping_fee' => $this->input->post('shipping_fee'),
// 'admin_note' => $this->input->post('admin_note'),
// 'created_by' => 'admin',
// );
// $this->db->insert('orders', $data);
// $insert_id = $this->db->insert_id();
// for ($i=0; $i < count($this->input->post('id_product')) ; $i++) {
// $data = array(
// 'orders_id' => $insert_id,
// );
// $this->db->insert('orders_detail', $data);
// $total_amount += $this->input->post('harga')[$i] * $this->input->post('kuantitas')[$i];
// }
// }
}