BBnepal-Accounts/application/controllers/Inventory.php

1122 lines
43 KiB
PHP
Raw Permalink Normal View History

2024-07-10 12:43:19 +00:00
<?php
defined('BASEPATH') or exit('No direct script access allowed');
use Nilambar\NepaliDate\NepaliDate;
require_once 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
// use Nilambar\NepaliDate\NepaliDate;
require_once APPPATH . '/third_party/fpdf/fpdf.php';
// use PhpOffice\PhpSpreadsheet\IOFactory;
// require('vendor/autoload.php');
class Inventory extends CI_Controller
{
private $nepaliDateObject;
private $nepali_current_date;
public function __construct()
{
parent::__construct();
$this->load->model('Admin_model');
$this->load->model('Inventory_model');
$this->load->helper('url');
$this->load->library('email');
$this->load->helper('file');
$this->load->helper('common_helper');
$this->load->library('Ciqrcode');
date_default_timezone_set('Asia/Kathmandu');
$this->nepaliDateObject = new NepaliDate();
$this->nepali_current_date = cuurentNepaliDate($this->nepaliDateObject);
}
public function dashboard()
{
if (isset($_SESSION['admin_id'])) {
$data['currentURL'] = current_url();
//get logo
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
//get menu list
$data['subject_count'] = $this->db->count_all('subject');
$data['course_count'] = $this->db->count_all('course');
$data['classroom_count'] = $this->db->count_all('classroom');
$data['teacher_count'] = $this->db->count_all('teacher');
$data['student_count'] = $this->db->count_all('students');
$data['exam_count'] = $this->db->count_all('exam');
$data['session_count'] = $this->db->count_all('classroom_session');
$data['application_count'] = $this->db->count_all('applications');
$data['notification_count'] = $this->db->count_all('notifications');
// $data['current_report_data'] = $fee_type_data;
$course_query = "SELECT * FROM course WHERE is_active='yes'";
$data['courses'] = $this->Admin_model->get_query_result($course_query);
// report end by shivakumar
$data['menulist'] = $this->Admin_model->get_adminMenu();
// dd($data['menulist']);
$this->load->view('inventory/header', $data);
$this->load->view('inventory/dashboard');
$this->load->view('inventory/footer');
}
}
//subject start
public function item_unit()
{
if (!isset($_SESSION['admin_id']))
redirect(base_url() . 'admin');
$data['currentURL'] = current_url();
$data['title'] = 'Item Measurement Units';
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
// dd($admin_info);
// $hr_db = $this->load->database('hr', TRUE);
if (isset($_POST['addItemUnit']) && $_POST['addItemUnit'] == 'Add') {
$title = $_POST['title'];
$short_label = $_POST['title'];
$isUnique = $this->Inventory_model->get_unique_name('title', $title, 'inventory_measurements');
if ($isUnique) {
$td['title'] = $title;
$td['short_label'] = $short_label;
$td['is_active'] = 'yes';
$td['created_on'] = $this->nepali_current_date;
$td['modified_on'] = $this->nepali_current_date;
$td['created_by'] = $admin_info['admin_name'];
$td['modified_by'] = $admin_info['admin_name'];
$this->db->insert('inventory_measurements', $td);
$this->session->set_flashdata('success', str_replace('%s', 'Item Unit', 'New item unit has been added.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Item Unit', 'Item unit title already exist.'));
}
redirect(base_url() . 'admin/inventory/item-unit');
} else if (isset($_POST['updateItemUnit']) && $_POST['updateItemUnit'] == 'Update') {
$title = $_POST['title'];
$short_label = $_POST['short_label'];
$recId = $_POST['unitId'];
$td = array(
'title' => $title,
'short_label' => $short_label,
'is_active' => $_POST['is_active'],
'modified_on' => $this->nepali_current_date,
'modified_by' => $admin_info['admin_name'],
);
$this->db->where('id', $recId);
$update = $this->db->update("inventory_measurements", $td);
if ($update) {
$this->session->set_flashdata('success', str_replace('%s', 'Item Unit', 'Record has been updated successfully.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Item Unit', 'THE_ADD_ERROR_MSG'));
}
redirect(base_url() . 'admin/inventory/item-unit');
}
$query = $this->db->query('select * from inventory_measurements');
$data['inventory_measurements'] = $query->result_array();
$this->load->view('inventory/header', $data);
$this->load->view('inventory/item_units', $data);
$this->load->view('inventory/footer');
}
public function item_category()
{
if (!isset($_SESSION['admin_id']))
redirect(base_url() . 'admin');
$data['currentURL'] = current_url();
$data['title'] = 'Item Category';
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
if (isset($_POST['addCategory']) && $_POST['addCategory'] == 'Add') {
$title = $_POST['title'];
$classBased = $_POST['is_class_based'];
$isUnique = $this->Inventory_model->get_unique_name('title', $title, 'inventory_item_category');
if ($isUnique) {
$td['title'] = $title;
$td['class_based'] = $classBased;
$td['is_active'] = 'yes';
$td['created_on'] = $this->nepali_current_date;
$td['modified_on'] = $this->nepali_current_date;
$td['created_by'] = $admin_info['admin_name'];
$td['modified_by'] = $admin_info['admin_name'];
$this->db->insert('inventory_item_category', $td);
$this->session->set_flashdata('success', str_replace('%s', 'Category', 'Item category has been added.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Category', 'Item category already exist.'));
}
redirect(base_url() . 'admin/inventory/item-categories');
} else if (isset($_POST['updateCategory']) && $_POST['updateCategory'] == 'Update') {
$title = $_POST['title'];
$recId = $_POST['recId'];
$td = array(
'title' => $title,
'class_based' => $_POST['is_class_based'],
'is_active' => $_POST['is_active'],
'modified_on' => $this->nepali_current_date,
'modified_by' => $admin_info['admin_name'],
);
$this->db->where('id', $recId);
$update = $this->db->update("inventory_item_category", $td);
if ($update) {
$this->session->set_flashdata('success', str_replace('%s', 'Category', 'Record has been updated successfully.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Category', 'THE_ADD_ERROR_MSG'));
}
redirect(base_url() . 'admin/inventory/item-categories');
}
$query = $this->db->query('select * from inventory_item_category');
$data['inventory_categories'] = $query->result_array();
$this->load->view('inventory/header', $data);
$this->load->view('inventory/item-category', $data);
$this->load->view('inventory/footer');
}
public function item_list()
{
if (!isset($_SESSION['admin_id']))
redirect(base_url() . 'admin');
$data['currentURL'] = current_url();
$data['title'] = 'Item Lists';
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
if (isset($_POST['addItem']) && $_POST['addItem'] == 'Add') {
$config['upload_path'] = 'assets_inventory/images/items/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->load->library('upload', $config);
$this->upload->initialize($config);
$title = $_POST['title'];
$photo = array('upload_data' => $this->upload->data());
$photoSize = $_FILES['photo']['size'];
$update_array = array();
if ($photoSize > 0) {
if (!$this->upload->do_upload('photo')) {
$item_photo = "No-Image.jpg";
} else {
$photo = array('upload_data' => $this->upload->data());
$item_photo = $photo['upload_data']['file_name'];
}
} else {
$item_photo = "No-Image.jpg";
}
$courses = isset($_POST['course_id']) && !empty($_POST['course_id']) ? $_POST['course_id'] : [];
// dd($_POST['course_id']);
$insert_array = array();
foreach ($courses as $c_key => $c_value) {
$td['title'] = $title;
$td['course_id'] = $c_value;
$td['category_id'] = $_POST['item_category'];
$td['measurement_id'] = $_POST['item_measurement_unit'];
$td['description'] = $_POST['description'];
$td['photo'] = $item_photo;
$td['created_on'] = $this->nepali_current_date;
$td['modified_on'] = $this->nepali_current_date;
$td['created_by'] = $admin_info['admin_name'];
$td['modified_by'] = $admin_info['admin_name'];
// If the item category is book.
if ($_POST['item_category'] == 1) {
$td['book_publication'] = $_POST['publication'];
$td['book_edition'] = $_POST['edition'];
$td['book_isbn'] = $_POST['isbn'];
}
}
if ($_POST['item_category'] == 3) {
$td['title'] = $title;
$td['category_id'] = $_POST['item_category'];
$td['measurement_id'] = $_POST['item_measurement_unit'];
$td['description'] = $_POST['description'];
$td['photo'] = $item_photo;
$td['created_on'] = $this->nepali_current_date;
$td['modified_on'] = $this->nepali_current_date;
$td['created_by'] = $admin_info['admin_name'];
$td['modified_by'] = $admin_info['admin_name'];
if ($_POST['item_category'] == 3) {
// dd($_POST);
$td['item_variant'] = implode(',', $_POST['variant']);
}
echo '<pre>';[]
print_r($td);
}
$insert = $this->db->insert('inventory_items', $td);
if ($insert) {
array_push($insert_array, true);
} else {
array_push($insert_array, false);
}
// dd($td);
if (in_array(true, $insert_array)) {
$this->session->set_flashdata('success', str_replace('%s', 'Item', 'Item has been added.'));
redirect(base_url() . 'admin/inventory/items');
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Item', 'Something went wrong. Please try again later.'));
redirect(base_url() . 'admin/inventory/items');
}
} else if (isset($_POST['updateItem']) && $_POST['updateItem'] == 'Update') {
$title = $_POST['title'];
$recId = $_POST['recId'];
// var_dump($_FILES);
$photoSize = $_FILES['photo']['size'];
// echo $photoSize;
$update_array = array();
if ($photoSize > 0) {
unlink('assets_inventory/images/items/' . $_POST['photo_name']);
$config['upload_path'] = 'assets_inventory/images/items/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->load->library('upload', $config);
$this->upload->initialize($config);
$photo = array('upload_data' => $this->upload->data());
if (!$this->upload->do_upload('photo')) {
$item_photo = "No-Image.jpg";
} else {
$photo = array('upload_data' => $this->upload->data());
$item_photo = $photo['upload_data']['file_name'];
}
} else {
$item_photo = $_POST['photo_name'];
}
$courses = isset($_POST['course_id']) && !empty($_POST['course_id']) ? $_POST['course_id'] : [];
foreach ($courses as $c_key => $c_value) {
$td['title'] = $title;
$td['course_id'] = $c_value;
$td['category_id'] = $_POST['item_category'];
$td['measurement_id'] = $_POST['item_measurement_unit'];
$td['description'] = $_POST['description'];
$td['photo'] = $item_photo;
$td['modified_on'] = $this->nepali_current_date;
$td['modified_by'] = $admin_info['admin_name'];
$this->db->where('id', $recId);
$update = $this->db->update('inventory_items', $td);
if ($update) {
array_push($update_array, true);
} else {
array_push($update_array, false);
}
}
if (in_array(true, $update_array)) {
$this->session->set_flashdata('success', str_replace('%s', 'Item', 'Item has been updated successfully.'));
redirect(base_url() . 'admin/inventory/items');
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Item', 'Something went wrong. Please try again later.'));
redirect(base_url() . 'admin/inventory/items');
}
}
$queryCategory = $this->db->query('select * from inventory_item_category WHERE is_active="yes"');
$data['inventory_categories'] = $queryCategory->result_array();
$queryItemUnit = $this->db->query('select * from inventory_measurements WHERE is_active="yes"');
$data['inventory_measurements'] = $queryItemUnit->result_array();
$queryCourse = $this->db->query('select * from course WHERE is_active="yes"');
$data['courses'] = $queryCourse->result_array();
$queryPublications = $this->db->query('select * from inventory_publications WHERE is_active="yes"');
$data['book_publications'] = $queryPublications->result_array();
$query = $this->db->query("SELECT i.*, IF(i.course_id is null, '-', c.course_name) as course_name from inventory_items i LEFT JOIN course c ON i.course_id = c.id");
$data['inventory_items'] = $query->result_array();
$queryVariants = $this->db->query('select * from inventory_variants WHERE is_active="yes"');
$data['inventory_variants'] = $queryVariants->result_array();
$this->load->view('inventory/header', $data);
$this->load->view('inventory/item-list', $data);
$this->load->view('inventory/footer');
}
public function item_purchase()
{
if (!isset($_SESSION['admin_id']))
redirect(base_url() . 'admin');
$data['currentURL'] = current_url();
$data['title'] = 'Purchase List';
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
if (isset($_POST['deletePurchaseRecord']) && $_POST['deletePurchaseRecord'] == 'Confirm') {
// dd($_POST);
$purchase_record = $this->db->query("SELECT * FROM inventory_item_purchase WHERE id = " . $_POST['recId'])->row_array();
$item_stock = $this->db->query("SELECT * FROM inventory_stocks WHERE item_id = " . $purchase_record['item_id'])->row_array();
$ud['total_stock'] = $item_stock['total_stock'] - $purchase_record['qty'];
$ud['current_stock'] = $item_stock['current_stock'] - $purchase_record['qty'];
$ud['modified_on'] = $this->nepali_current_date;
$ud['modified_by'] = $admin_info['admin_name'];
$this->db->where('id', $item_stock['id']);
$this->db->update('inventory_stocks', $ud);
$this->db->where('id', $_POST['recId']);
$delete = $this->db->delete('inventory_item_purchase');
if ($delete) {
$this->session->set_flashdata('success', str_replace('%s', 'Purchase Record', 'The purchase record has been deleted successfully.'));
redirect(base_url() . 'admin/inventory/item-purchase');
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Purchase Record', 'Something went wrong. Please try again later.'));
redirect(base_url() . 'admin/inventory/item-purchase');
}
}
$query = $this->db->query('select * from inventory_items');
$data['inventory_items'] = $query->result_array();
$purchaseQuery = $this->db->query('select ip.*, i.title from inventory_item_purchase ip LEFT JOIN inventory_items i ON i.id=ip.item_id');
$data['purchase_list'] = $purchaseQuery->result_array();
$this->load->view('inventory/header', $data);
$this->load->view('inventory/item-purchase', $data);
$this->load->view('inventory/footer');
}
public function add_edit_new_entry($id)
{
$data['currentURL'] = current_url();
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
$query = $this->db->query('select * from inventory_items');
$data['inventory_items'] = $query->result_array();
$query = $this->db->query('select * from inventory_suppliers');
$data['inventory_suppliers'] = $query->result_array();
$today_date_time = explode(' ', $this->nepali_current_date);
$data['today_date'] = $today_date_time[0];
if ($id == 0) {
$data['title'] = 'Add New Entry';
} else {
$purchaseQuery = $this->db->query('select ip.*, i.title from inventory_item_purchase ip LEFT JOIN inventory_items i ON i.id=ip.item_id WHERE ip.id =' . $id);
$data['purchase_item'] = $purchaseQuery->row_array();
$data['title'] = $data['purchase_item']['title'];
}
if ($_POST > 0) {
if (isset($_POST['addPurchase']) && $_POST['addPurchase'] == 'Add') {
$config['upload_path'] = 'assets_inventory/images/purchase/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->load->library('upload', $config);
$this->upload->initialize($config);
$photo = array('upload_data' => $this->upload->data());
$photoSize = $_FILES['photo']['size'];
echo $photoSize;
if ($photoSize > 0) {
if (!$this->upload->do_upload('photo')) {
$item_photo = "No-Image.jpg";
} else {
$photo = array('upload_data' => $this->upload->data());
$item_photo = $photo['upload_data']['file_name'];
}
} else {
$item_photo = "No-Image.jpg";
}
// Start of Inserting in stocks table for tracking stock of items.
$item_stock = $this->db->query("SELECT * FROM inventory_stocks WHERE item_id = " . $_POST['item'])->row_array();
if (empty($item_stock)) {
$sid['item_id'] = $_POST['item'];
$sid['total_stock'] = $_POST['qty'];
$sid['current_stock'] = $_POST['qty'];
$sid['sold_stock'] = 0;
$sid['created_on'] = $this->nepali_current_date;
$sid['modified_on'] = $this->nepali_current_date;
$sid['created_by'] = $admin_info['admin_name'];
$sid['modified_by'] = $admin_info['admin_name'];
$this->db->insert('inventory_stocks', $sid);
} else {
$sid['total_stock'] = $item_stock['total_stock'] + $_POST['qty'];
$sid['current_stock'] = $item_stock['current_stock'] + $_POST['qty'];
$sid['modified_on'] = $this->nepali_current_date;
$sid['modified_by'] = $admin_info['admin_name'];
$this->db->where('id', $item_stock['id']);
$this->db->update('inventory_stocks', $sid);
}
// End of Inserting in stocks table for tracking stock of items.
$td['item_id'] = $_POST['item'];
$td['purchased_from'] = $_POST['supplier'];
$td['purchased_on'] = $_POST['purchased_on'];
$td['qty'] = $_POST['qty'];
$td['remaining_qty'] = $_POST['qty'];
$td['unit_price'] = $_POST['unit_price'];
$td['total_price'] = $_POST['total_price'];
$td['selling_price'] = $_POST['selling_price'];
$td['paid_amount'] = $_POST['paid_amount'];
$td['remaining_amount'] = $_POST['remaining_amount'];
$td['remarks'] = $_POST['remarks'];
$td['photo'] = $item_photo;
$td['created_on'] = $this->nepali_current_date;
$td['modified_on'] = $this->nepali_current_date;
$td['created_by'] = $admin_info['admin_name'];
$td['modified_by'] = $admin_info['admin_name'];
// dd($_POST);
$insert = $this->db->insert('inventory_item_purchase', $td);
if ($insert) {
$this->session->set_flashdata('success', str_replace('%s', 'New Purchase Record', 'New purchase record has been added successfully.'));
redirect(base_url() . 'admin/inventory/item-purchase');
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'New Purchase Record', 'Something went wrong. Please try again later.'));
redirect(base_url() . 'admin/inventory/item-purchase');
}
} else if (isset($_POST['updatePurchase']) && $_POST['updatePurchase'] == 'Update') {
print_r($_FILES);
$photoSize = $_FILES['photo']['size'];
$recId = $_POST['recId'];
if ($photoSize > 0) {
unlink('assets_inventory/images/purchase/' . $_POST['photo_name']);
$config['upload_path'] = 'assets_inventory/images/purchase/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->load->library('upload', $config);
$this->upload->initialize($config);
$photo = array('upload_data' => $this->upload->data());
if (!$this->upload->do_upload('photo')) {
$item_photo = "No-Image.jpg";
} else {
$photo = array('upload_data' => $this->upload->data());
$item_photo = $photo['upload_data']['file_name'];
}
} else {
$item_photo = $_POST['photo_name'];
}
$purchase_record = $this->db->query("SELECT * FROM inventory_item_purchase WHERE id = $recId")->row_array();
$item_stock = $this->db->query("SELECT * FROM inventory_stocks WHERE item_id = " . $_POST['item'])->row_array();
// Start of clearing old records in stocks
$sid['total_stock'] = $item_stock['total_stock'] - $purchase_record['remaining_qty'];
$sid['current_stock'] = $item_stock['current_stock'] - $purchase_record['remaining_qty'];
$sid['modified_on'] = $this->nepali_current_date;
$sid['modified_by'] = $admin_info['admin_name'];
$this->db->where('id', $item_stock['id']);
$this->db->update('inventory_stocks', $sid);
// End of clearing old records in stocks
$td['item_id'] = $_POST['item'];
$td['purchased_from'] = $_POST['supplier'];
$td['purchased_on'] = $_POST['purchased_on'];
$td['qty'] = $_POST['qty'];
$td['remaining_qty'] = $_POST['qty'];
$td['unit_price'] = $_POST['unit_price'];
$td['total_price'] = $_POST['total_price'];
$td['selling_price'] = $_POST['selling_price'];
$td['paid_amount'] = $_POST['paid_amount'];
$td['remaining_amount'] = $_POST['remaining_amount'];
$td['remarks'] = $_POST['remarks'];
$td['photo'] = $item_photo;
$td['modified_on'] = $this->nepali_current_date;
$td['modified_by'] = $admin_info['admin_name'];
$this->db->where('id', $recId);
$update = $this->db->update('inventory_item_purchase', $td);
// dd($_POST);
if ($update) {
// Start of Updating new records in stocks
$updated_item_stock = $this->db->query("SELECT * FROM inventory_stocks WHERE item_id = " . $_POST['item'])->row_array();
$uid['total_stock'] = $updated_item_stock['total_stock'] + $_POST['qty'];
$uid['current_stock'] = $updated_item_stock['current_stock'] + $_POST['qty'];
$uid['modified_on'] = $this->nepali_current_date;
$uid['modified_by'] = $admin_info['admin_name'];
$this->db->where('id', $item_stock['id']);
$this->db->update('inventory_stocks', $uid);
// End of Updating new records in stocks
$this->session->set_flashdata('success', str_replace('%s', 'Purchase Record', 'Purchase record has been updated successfully.'));
redirect(base_url() . 'admin/inventory/item-purchase');
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Purchase Record', 'Something went wrong. Please try again later.'));
redirect(base_url() . 'admin/inventory/item-purchase');
}
}
}
$data['recId'] = $id;
$this->load->view('inventory/header', $data);
$this->load->view('inventory/add-edit-new-entry', $data);
$this->load->view('inventory/footer');
}
public function suppliers()
{
if (!isset($_SESSION['admin_id']))
redirect(base_url() . 'admin');
$data['currentURL'] = current_url();
$data['title'] = 'Suppliers';
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
// dd($admin_info);
// $hr_db = $this->load->database('hr', TRUE);
if (isset($_POST['addSupplier']) && $_POST['addSupplier'] == 'Add') {
$name = $_POST['name'];
$address = $_POST['address'];
$contact_number = $_POST['contact_number'];
$isUnique = $this->Inventory_model->get_unique_name('name', $name, 'inventory_suppliers');
if ($isUnique) {
$td['name'] = $name;
$td['address'] = $address;
$td['contact_number'] = $contact_number;
$td['is_active'] = 'yes';
$td['created_on'] = $this->nepali_current_date;
$td['modified_on'] = $this->nepali_current_date;
$td['created_by'] = $admin_info['admin_name'];
$td['modified_by'] = $admin_info['admin_name'];
$this->db->insert('inventory_suppliers', $td);
$this->session->set_flashdata('success', str_replace('%s', 'Supplier', 'New supplier has been added.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Supplier', 'Supplier name already exist.'));
}
if (isset($_POST['purchaseId'])) {
redirect(base_url() . 'admin/inventory/add-edit-new-entry/' . $_POST['purchaseId']);
} else {
redirect(base_url() . 'admin/inventory/suppliers');
}
} else if (isset($_POST['updateItemUnit']) && $_POST['updateItemUnit'] == 'Update') {
$name = $_POST['name'];
$address = $_POST['address'];
$contact_number = $_POST['contact_number'];
$isUnique = $this->Inventory_model->get_unique_name('name', $name, 'inventory_suppliers');
if ($isUnique) {
$td = array(
'title' => $title,
'short_label' => $short_label,
'is_active' => $_POST['is_active'],
'modified_on' => $this->nepali_current_date,
'modified_by' => $admin_info['admin_name'],
);
$this->db->where('id', $recId);
$update = $this->db->update("inventory_measurements", $td);
if ($update) {
$this->session->set_flashdata('success', str_replace('%s', 'Supplier', 'Record has been updated successfully.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Supplier', 'THE_ADD_ERROR_MSG'));
}
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Supplier', 'Supplier name already exist.'));
}
redirect(base_url() . 'admin/inventory/suppliers');
}
$query = $this->db->query('select * from inventory_suppliers');
$data['inventory_measurements'] = $query->result_array();
$this->load->view('inventory/header', $data);
$this->load->view('inventory/suppliers', $data);
$this->load->view('inventory/footer');
}
public function sales()
{
if (!isset($_SESSION['admin_id']))
redirect(base_url() . 'admin');
$data['currentURL'] = current_url();
$data['title'] = 'Sales';
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
$query = $this->db->query('select * from inventory_items');
$data['inventory_items'] = $query->result_array();
$studentQuery = $this->db->query("SELECT * FROM students WHERE is_active = 'yes'");
$data['students'] = $studentQuery->result_array();
$teacherQuery = $this->db->query("SELECT * FROM teacher WHERE is_active = 'yes'");
$data['teachers'] = $teacherQuery->result_array();
$salesQuery = $this->db->query('select iis.*, i.title, s.name, s.studentId from inventory_item_sales iis LEFT JOIN inventory_items i ON i.id=iis.item_id LEFT JOIN students s ON s.id = iis.userId');
$data['sales_list'] = $salesQuery->result_array();
$data['theExportHeader'] = 'Sales List' . '-' . date('YmdHis', strtotime($this->nepali_current_date));
$this->load->view('inventory/header', $data);
$this->load->view('inventory/sales', $data);
$this->load->view('inventory/footer');
}
public function add_new_sales($id)
{
$data['currentURL'] = current_url();
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$batchId = $data['school_info']['batch_id'];
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
$studentQuery = $this->db->query("SELECT s.*, cl.section_id,sb.roll_no,c.course_name,se.section_name FROM students s JOIN student_batch sb ON sb.student_id=s.id AND sb.batch_id=$batchId JOIN classroom cl ON cl.id = sb.classroom_id AND s.course=cl.course_id JOIN section se ON cl.section_id=se.id JOIN course c ON c.id=cl.course_id WHERE s.is_active = 'yes'");
$data['students'] = $studentQuery->result_array();
// dd($data['students']);
$teacherQuery = $this->db->query("SELECT * FROM teacher WHERE is_active = 'yes'");
$data['teachers'] = $teacherQuery->result_array();
$query = $this->db->query('SELECT i.*, iis.current_stock as available_stock, m.title as unit_label, m.short_label from inventory_items i JOIN inventory_stocks iis ON i.id = iis.item_id LEFT JOIN inventory_measurements m ON m.id = i.measurement_id');
$data['inventory_items'] = $query->result_array();
foreach ($data['inventory_items'] as $i_key => $item) {
$item_purchases = $this->db->query('SELECT * FROM inventory_item_purchase WHERE item_id = ' . $item['id'] . ' AND remaining_qty > 0 ORDER BY selling_price ASC')->result_array();
$data['inventory_items'][$i_key]['item_purchases'] = $item_purchases;
}
// dd($data['inventory_items']);
$today_date_time = explode(' ', $this->nepali_current_date);
$data['today_date'] = $today_date_time[0];
if ($id == 0) {
$data['title'] = 'Add New Entry';
}
if ($_POST > 0) {
if (isset($_POST['addSalesEntry']) && $_POST['addSalesEntry'] == 'Submit') {
// dd($_POST);
$items = $_POST['itemId'];
$itemQty = $_POST['itemQty'];
$purchaseId = $_POST['purchaseId'];
$studentId = $_POST['studentId'];
$sellingPrice = $_POST['sellingPrice'];
$insert_array = array();
// $dateTime = str_replace(':', '', str_replace(' ', '', str_replace('-', '', $this->nepali_current_date)));
// str_replace(':', '', str_replace(' ', '', str_replace('-', '', strtotime($this->nepali_current_date))));
$salesId = str_replace(':', '', str_replace(' ', '', str_replace('-', '', $this->nepali_current_date)));
// print_r($dateTime);
// dd($insert_array);
// for(int a = 0; a < count($items)
foreach ($items as $i_key => $item) {
$td['item_id'] = $item;
$td['userId'] = $studentId[$i_key];
$td['qty'] = $itemQty[$i_key];
$td['salesId'] = $salesId;
$td['unit_price'] = $sellingPrice[$i_key];
$td['sales_on'] = $this->nepali_current_date;
$td['total_amount'] = $itemQty[$i_key] * $sellingPrice[$i_key];
$td['paid_amount'] = $itemQty[$i_key] * $sellingPrice[$i_key];
$td['remaining_amount'] = $td['paid_amount'] - $td['total_amount'];
// Start of updating stock record in inventory_stocks table
$item_stocks = $this->db->query('SELECT * FROM inventory_stocks WHERE item_id = ' . $item)->row_array();
$is_td['current_stock'] = $item_stocks['current_stock'] - $td['qty'];
$is_td['sold_stock'] = $item_stocks['sold_stock'] + $td['qty'];
$is_td['modified_on'] = $this->nepali_current_date;
$is_td['modified_by'] = $admin_info['admin_name'];
$this->db->where('id', $item_stocks['id']);
$this->db->update('inventory_stocks', $is_td);
// End of updating stock record in inventory_stocks table
// Updating stock record in purchase table
$item_purchase = $this->db->query('SELECT * FROM inventory_item_purchase WHERE id = ' . $purchaseId[$i_key])->row_array();
$ip_td['remaining_qty'] = $item_purchase['remaining_qty'] - $td['qty'];
$ip_td['modified_on'] = $this->nepali_current_date;
$ip_td['modified_by'] = $admin_info['admin_name'];
$this->db->where('id', $item_purchase['id']);
$this->db->update('inventory_item_purchase', $ip_td);
// End of Updating stock record in purchase table
$td['created_on'] = $this->nepali_current_date;
$td['created_by'] = $admin_info['admin_name'];
$td['modified_on'] = $this->nepali_current_date;
$td['modified_by'] = $admin_info['admin_name'];
$insert = $this->db->insert('inventory_item_sales', $td);
if ($insert) {
array_push($insert_array, true);
} else {
array_push($insert_array, false);
}
}
if (!in_array(false, $insert_array)) {
$this->session->set_flashdata('success', str_replace('%s', 'Sales Record', 'New sales record has been added successfully.'));
redirect(base_url() . 'admin/inventory/item-sales');
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Sales Record', 'Something went wrong. Please try again later.'));
redirect(base_url() . 'admin/inventory/item-sales');
}
}
}
$data['recId'] = $id;
$this->load->view('inventory/header', $data);
$this->load->view('inventory/add-sales-record', $data);
$this->load->view('inventory/footer');
}
public function item_stocks()
{
if (!isset($_SESSION['admin_id']))
redirect(base_url() . 'admin');
$data['currentURL'] = current_url();
$data['title'] = 'Item Stocks';
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
// dd($admin_info);
// $hr_db = $this->load->database('hr', TRUE);
$query = $this->db->query('select iis.*, i.title from inventory_stocks iis JOIN inventory_items i ON i.id = iis.item_id');
$data['inventory_stocks'] = $query->result_array();
$data['theExportHeader'] = 'Stock List' . '-' . date('YmdHis', strtotime($this->nepali_current_date));
$this->load->view('inventory/header', $data);
$this->load->view('inventory/item-stocks', $data);
$this->load->view('inventory/footer');
}
public function view_sales_details($id)
{
$data['currentURL'] = current_url();
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
$query = $this->db->query('select * from inventory_items');
$data['inventory_items'] = $query->result_array();
$query = $this->db->query('select * from inventory_suppliers');
$data['inventory_suppliers'] = $query->result_array();
$today_date_time = explode(' ', $this->nepali_current_date);
$batchId = $data['school_info']['batch_id'];
$data['today_date'] = $today_date_time[0];
if ($id == 0) {
$data['title'] = 'Add New Entry';
} else {
// $purchaseQuery = $this->db->query('select ip.*, i.title from inventory_item_purchase ip LEFT JOIN inventory_items i ON i.id=ip.item_id WHERE ip.id =' . $id);
// $data['purchase_item'] = $purchaseQuery->row_array();
// $data['title'] = $data['purchase_item']['title'];
$saleDetail = $this->db->query("SELECT iis.*, i.title, s.name, c.course_name, se.section_name
FROM inventory_item_sales iis
JOIN students s ON s.id = iis.userId
JOIN student_batch sb ON sb.student_id=s.id AND sb.batch_id=$batchId
JOIN inventory_items i ON i.id = iis.item_id
JOIN classroom cl ON cl.id = sb.classroom_id AND s.course=cl.course_id
JOIN section se ON cl.section_id=se.id JOIN course c ON c.id=cl.course_id
WHERE iis.id = $id")->row_array();
// dd($saleDetail);
$data['title'] = $saleDetail['name'];
$data['sales_detail'] = $saleDetail;
}
$data['recId'] = $id;
$this->load->view('inventory/header', $data);
$this->load->view('inventory/view-sales-detail', $data);
$this->load->view('inventory/footer');
}
public function view_item_details($id)
{
$data['currentURL'] = current_url();
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$today_date_time = explode(' ', $this->nepali_current_date);
$batchId = $data['school_info']['batch_id'];
$data['today_date'] = $today_date_time[0];
if ($id == 0) {
$data['title'] = 'Add New Entry';
} else {
$item = $this->db->query('SELECT i.* FROM inventory_items i WHERE i.id = ' . $id)->row_array();
$item_stocks = $this->db->query('SELECT * FROM inventory_stocks WHERE item_id = ' . $id)->row_array();
$item['stock'] = $item_stocks;
$item_purchase_history = $this->db->query("SELECT ip.*, s.name as supplier_name, s.contact_number as supplier_contact_number, s.address as supplier_address FROM inventory_item_purchase ip JOIN inventory_suppliers s ON s.id = ip.purchased_from WHERE item_id = " . $id)->result_array();
$item['purchases'] = $item_purchase_history;
// dd($item_purchase_history);
// $item_sales_history = $this->db->query("select iis.*, i.title, s.name, s.studentId from inventory_item_sales iis LEFT JOIN inventory_items i ON i.id=iis.item_id LEFT JOIN students s ON s.id = iis.userId WHERE item_id = " . $id)->result_array();
$item_sales_history = $this->db->query("SELECT iis.*, i.title, s.name, c.course_name, se.section_name
FROM inventory_item_sales iis
JOIN students s ON s.id = iis.userId
JOIN student_batch sb ON sb.student_id=s.id AND sb.batch_id=$batchId
JOIN inventory_items i ON i.id = iis.item_id
JOIN classroom cl ON cl.id = sb.classroom_id AND s.course=cl.course_id
JOIN section se ON cl.section_id=se.id JOIN course c ON c.id=cl.course_id WHERE iis.item_id = " . $id)->result_array();
$item['sales'] = $item_sales_history;
$item_measurement_units = $this->db->query("SELECT * FROM inventory_measurements")->result_array();
$data['measurement_units'] = $item_measurement_units;
$courses = $this->db->query("SELECT * FROM course")->result_array();
$data['courses'] = $courses;
$item_categories = $this->db->query("SELECT * FROM inventory_item_category ")->result_array();
$data['categories'] = $item_categories;
$data['item_info'] = $item;;
$data['title'] = $item['title'];
}
$data['recId'] = $id;
$this->load->view('inventory/header', $data);
$this->load->view('inventory/view-item-detail', $data);
$this->load->view('inventory/footer');
}
public function view_invoice($id)
{
$data['currentURL'] = current_url();
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$today_date_time = explode(' ', $this->nepali_current_date);
$batchId = $data['school_info']['batch_id'];
$data['today_date'] = $today_date_time[0];
$data['recId'] = $id;
$salesId = urlsafe_b64decode($id);
$item_sales = $this->db->query('SELECT * FROM inventory_item_sales WHERE salesId = ' . $salesId)->result_array();
$item_id = $item_sales[0]['item_id'];
$userId = $item_sales[0]['userId'];
$item = $this->db->query("SELECT * FROM inventory_items WHERE id = $item_id")->row_array();
$student = $this->db->query("SELECT * FROM students WHERE id = $userId")->row_array();
dd($item_sales);
$this->load->view('inventory/header', $data);
$this->load->view('inventory/view-item-detail', $data);
$this->load->view('inventory/footer');
}
public function book_publications()
{
if (!isset($_SESSION['admin_id']))
redirect(base_url() . 'admin');
$data['currentURL'] = current_url();
$data['title'] = 'Book Publications';
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
// dd($admin_info);
// $hr_db = $this->load->database('hr', TRUE);
if (isset($_POST['addPublication']) && $_POST['addPublication'] == 'Add') {
$title = $_POST['title'];
$isUnique = $this->Inventory_model->get_unique_name('title', $title, 'inventory_publications');
if ($isUnique) {
$td['title'] = $title;
$td['is_active'] = 'yes';
$td['created_on'] = $this->nepali_current_date;
$td['modified_on'] = $this->nepali_current_date;
$td['created_by'] = $admin_info['admin_name'];
$td['modified_by'] = $admin_info['admin_name'];
$this->db->insert('inventory_publications', $td);
$this->session->set_flashdata('success', str_replace('%s', 'Book Publication', 'New publication has been added.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Book Publication', 'Publication title already exist.'));
}
redirect(base_url() . 'admin/inventory/book-publication');
} else if (isset($_POST['updatePublication']) && $_POST['updatePublication'] == 'Update') {
$title = $_POST['title'];
$recId = $_POST['unitId'];
$td = array(
'title' => $title,
'is_active' => $_POST['is_active'],
'modified_on' => $this->nepali_current_date,
'modified_by' => $admin_info['admin_name'],
);
$this->db->where('id', $recId);
$update = $this->db->update("inventory_publications", $td);
if ($update) {
$this->session->set_flashdata('success', str_replace('%s', 'Book Publication', 'Record has been updated successfully.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Book Publication', 'THE_ADD_ERROR_MSG'));
}
redirect(base_url() . 'admin/inventory/book-publication');
}
$query = $this->db->query('select * from inventory_publications');
$data['book_publications'] = $query->result_array();
$this->load->view('inventory/header', $data);
$this->load->view('inventory/book_publications', $data);
$this->load->view('inventory/footer');
}
public function item_variants()
{
if (!isset($_SESSION['admin_id']))
redirect(base_url() . 'admin');
$data['currentURL'] = current_url();
$data['title'] = 'Item Category';
$data['logo'] = $this->Admin_model->get_logo();
$data['school_info'] = $this->Admin_model->get_logo_from_setting();
$admin_info = $this->db->query("SELECT * FROM admin WHERE id = " . $_SESSION['admin_id'])->row_array();
if (isset($_POST['addVariant']) && $_POST['addVariant'] == 'Add') {
$title = $_POST['title'];
$category = $_POST['item_category'];
$isUnique = $this->Inventory_model->get_unique_name('title', $title, 'inventory_variants');
if ($isUnique) {
$td['title'] = $title;
$td['category'] = $category;
$td['is_active'] = 'yes';
$td['created_on'] = $this->nepali_current_date;
$td['modified_on'] = $this->nepali_current_date;
$td['created_by'] = $admin_info['admin_name'];
$td['modified_by'] = $admin_info['admin_name'];
$this->db->insert('inventory_variants', $td);
$this->session->set_flashdata('success', str_replace('%s', 'Variants', 'Item variant has been added.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Variants', 'Item variant already exist.'));
}
redirect(base_url() . 'admin/inventory/item-variants');
} else if (isset($_POST['updateVariant']) && $_POST['updateVariant'] == 'Update') {
$title = $_POST['title'];
$recId = $_POST['recId'];
$td = array(
'title' => $title,
'category' => $_POST['item_category'],
'is_active' => $_POST['is_active'],
'modified_on' => $this->nepali_current_date,
'modified_by' => $admin_info['admin_name'],
);
$this->db->where('id', $recId);
$update = $this->db->update("inventory_variants", $td);
if ($update) {
$this->session->set_flashdata('success', str_replace('%s', 'Variants', 'Record has been updated successfully.'));
} else {
$this->session->set_flashdata('danger', str_replace('%s', 'Variants', 'THE_ADD_ERROR_MSG'));
}
redirect(base_url() . 'admin/inventory/item-variants');
}
$data['inventory_categories'] = $this->db->query("SELECT * FROM inventory_item_category WHERE is_active='yes'")->result_array();
$query = $this->db->query("SELECT iv.*, ic.title AS category_title FROM inventory_variants iv LEFT JOIN inventory_item_category ic ON iv.category=ic.id");
$data['inventory_variants'] = $query->result_array();
$this->load->view('inventory/header', $data);
$this->load->view('inventory/item-variants', $data);
$this->load->view('inventory/footer');
}
}