|
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 Product_claim extends Admin_Controller
{
function __construct()
{
parent::__construct();
}
//this is to list all product_claim
public function index()
{
//pagination in action. 50 results per page
$this->load->library('pagination');
$config['base_url'] = base_url() . 'admin/product_claim/index';
$this->db->select('id_claim')->from('claim_garansi');
$claim_count = $this->db->get()->num_rows();
$config['total_rows'] = $claim_count;
$config['per_page'] = 10;
$config["uri_segment"] = 4;
$config['num_tag_open'] = '<span style="padding-left:10px; padding-right:10px">';
$config['num_tag_close'] = '</span>';
$this->pagination->initialize($config);
$this->db->select('claim_garansi.created, claim_garansi.id_claim, orders.order_date, orders_detail.item_name, orders_detail.product_id, claim_garansi.customer_id, claim_garansi.reason_claim, claim_garansi.link_bukti, claim_garansi.status, claim_garansi.keterangan, lang, claim_garansi.payment_confirm, claim_garansi.payment_confirm_detail, claim_garansi.no_order_id');
$this->db->from('claim_garansi');
$this->db->join('orders', 'orders.id_orders = claim_garansi.no_order_id');
$this->db->join('orders_detail', 'orders_detail.id_orders_detail = claim_garansi.no_order_detail_id');
$this->db->order_by('claim_garansi.id_claim', 'DESC');
$this->db->limit($config["per_page"], $this->uri->segment(4));
$this->data['claim_garansi'] = $this->db->get()->result();
//load view
$this->data['subview'] = 'admin/product_claim/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 generate_deliveryreceipt($order_id, $id_claim)
{
if ($order_id == NULL) {
redirect('admin/product_claim');
}
$count_order = $this->db->select('id_orders')->from('orders')->where('id_orders', $order_id)->get()->num_rows();
if ($count_order < 1) {
redirect('admin/product_claim');
}
//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'] = 'Claim Delivery Receipt No: ' . $id_claim;
//get order
$this->db->select('*')->from('orders')->where('id_orders', $order_id);
$pdf_data['order'] = $this->db->get()->row();
//get claim_garansi
$this->db->select('*')->from('claim_garansi')->where('id_claim', $id_claim);
$pdf_data['claim'] = $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', $order_id)->get()->result();
//Print Pdf Delivery Receipt
$this->load->library('dompdf_gen');
$html = $this->load->view('pdf/deliveryreceiptpc', $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';
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mencetak delivery receipt claim garansi (' . $id_claim . ')';
log_activity($user_id, $activity);
file_put_contents($file_to_save, $output);
} else {
redirect('admin/orders');
}
}
public function update_link()
{
$claimId = $this->input->post('claim_id');
$newLink = $this->input->post('new_link');
// Perbarui link_bukti pada tabel claim_garansi
$this->db->set('link_bukti', $newLink);
$this->db->where('id_claim', $claimId);
$this->db->update('claim_garansi');
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mengedit link bukti claim garansi (' . $claimId . ')';
log_activity($user_id, $activity);
// Redirect kembali ke halaman sebelumnya
redirect($_SERVER['HTTP_REFERER']);
}
//update status claim status
public function update_claim_status()
{
$id_claim = $this->input->post('id_claim');
$status = $this->input->post('status');
// Loop through each status and update it in the database
foreach ($id_claim as $key => $value) {
// Get the current status from the database
$this->db->select('status')->from('claim_garansi')->where('id_claim', $value);
$current_status = $this->db->get()->row()->status;
$this->db->select('*')->from('claim_garansi')->where('id_claim', $value);
$claim = $this->db->get()->row();
// Only update the status if it has changed
if ($current_status != $status[$key]) {
$this->db->where('id_claim', $value);
$this->db->update('claim_garansi', array('status' => $status[$key]));
$qty = '1';
if ($status[$key] == 2) {
// Get claim details
$this->db->select('item_id, product_id, warehouse_id')->from('orders_detail')->where('id_orders_detail', $claim->no_order_detail_id);
$order_detail = $this->db->get()->row();
// Get current stock from stock table
$this->db->select('id, stock')->from('stock')
->where('id_product', (int) $order_detail->product_id)
->where('id_product_detail', (int) $order_detail->item_id)
->where('warehouse_id', (int) $order_detail->warehouse_id);
$current_stock = $this->db->get()->row();
// Calculate new stock
$new_item_stock = $current_stock->stock - (int) $qty;
// Update stock in database
$this->db->where('id_product', (int) $order_detail->product_id)
->where('id_product_detail', (int) $order_detail->item_id)
->where('warehouse_id', (int) $order_detail->warehouse_id)
->update('stock', array('stock' => $new_item_stock));
$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' => $current_stock->id,
'type' => '-',
'stock_change' => (int) $qty,
'remark' => 'Claim ID: ' . $claim->id_claim,
'total' => $new_item_stock,
'name' => $user_name
);
$this->db->insert('stock_movement', $movement_data);
}
if ($status[$key] == 5) {
} else {
$this->db->select('name, email, reseller_id')->from('customers')->where('id_customers', $claim->customer_id);
$customer_data = $this->db->get()->row();
$data['customer_name'] = $customer_data->name;
$data['customer_email'] = $customer_data->email;
$data['reseller_id'] = $customer_data->reseller_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['register_password'] = $this->input->post('register_password');
//Send Mail
$email_data['customer_name'] = $customer_data->name;
$email_data['reseller_id'] = $customer_data->reseller_id;
$email_data['email'] = $customer_data->email;
$email_data['status'] = $status[$key];
$email_data['id_claim'] = $value;
$email_data['keterangan'] = $claim->keterangan;
if ($claim->lang == 'english') {
$email_data['subject'] = 'Warranty Claim Process Update';
} else {
$email_data['subject'] = 'Update Proses Claim Garansi';
}
if ($claim->lang == 'english') {
$view_file = 'email/english/claim_update';
} else {
$view_file = 'email/indonesian/claim_update';
}
$this->send_email($view_file, $email_data);
}
$this->db->select('customer_id, keterangan, lang')->from('claim_garansi')->where('id_claim', $value);
$claim = $this->db->get()->row();
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mengubah status claim garansi (' . $value . ')';
log_activity($user_id, $activity);
}
}
// Set success message
$this->session->set_flashdata('message', 'Status berhasil diupdate.');
// Redirect back to the previous page
redirect($_SERVER['HTTP_REFERER']);
}
public function update_claim_keterangan()
{
$id_claim = $this->input->post('id_claim');
$keterangan = $this->input->post('keterangan');
// lakukan update pada tabel claim_garansi
$this->db->set('keterangan', $keterangan);
$this->db->where('id_claim', $id_claim);
$this->db->update('claim_garansi');
//logging
$user_id = $this->session->userdata('admin')['id'];
$activity = 'User mengupdate keterangan claim garansi (' . $id_claim . ')';
log_activity($user_id, $activity);
redirect($_SERVER['HTTP_REFERER']);
}
}