diff --git a/app/Controllers/Expense.php b/app/Controllers/Expense.php
index ce24b8f8..4483e649 100755
--- a/app/Controllers/Expense.php
+++ b/app/Controllers/Expense.php
@@ -18,6 +18,7 @@ class Expense extends BaseController
$this->expense_model = new Expense_model();
$this->supplier_model = new Supplier_model();
$this->session = session();
+ $this->session = session();
helper('form');
$this->isLoggedIn();
}
@@ -86,8 +87,9 @@ class Expense extends BaseController
// Generate the next serial number
$newSerialNumber = $this->generateSerialNumber($financialYear, $lastSerial);
-
+ $sesn_uid = $this->session->get('userId');
$data = [
+ 'created_by' => $sesn_uid,
'transporter_file' => $fileName,
'supplier_id' => $this->request->getPost('supplierid'),
'remarks' => $this->request->getPost('remarks'),
@@ -141,9 +143,9 @@ class Expense extends BaseController
$fileName = $this->request->getPost('existing_file'); // Use existing file if no new file is uploaded
}
-
-
+ $sesn_uid = $this->session->get('userId');
$data = [
+ 'updated_by' =>$sesn_uid,
'supplier_id' => $this->request->getPost('supplierid'),
'remarks' => $this->request->getPost('remarks'),
'item_description' => $this->request->getPost('item_description'),
diff --git a/app/Controllers/Inwardgateregister.php b/app/Controllers/Inwardgateregister.php
index 46b9cbc8..1b58896b 100755
--- a/app/Controllers/Inwardgateregister.php
+++ b/app/Controllers/Inwardgateregister.php
@@ -156,7 +156,7 @@ class Inwardgateregister extends BaseController
});
$data['emp_data'] = [];
// $data['emp_data'] = $this->inwardgateregister_model->getAdditionalIGRFile();
- // print_r($data['PO_NO']);die;
+ // dd($data['PO_NO']);die;
$this->loadViews("inwardgateregister", $this->global, $data, NULL);
}
diff --git a/app/Controllers/Rawmaterialdetails.php b/app/Controllers/Rawmaterialdetails.php
index d9d328c6..7effb98c 100755
--- a/app/Controllers/Rawmaterialdetails.php
+++ b/app/Controllers/Rawmaterialdetails.php
@@ -410,18 +410,24 @@ class Rawmaterialdetails extends BaseController
$query = $this->rawmaterialdetails_model->insertvalueintoconfig($config);
}
+ // on 28/jan/2025. both add and edit. category condition added.
function checkmaterial()
{
$data = $this->request->getPost();
$materialCode = $data['materialCode'] ?? '';
$materialName = str_replace(' ', '', $data['materialName']);
+ $materialCategory = $data['materialCategory'] ?? '';
- $this->rawmaterialdetails_model = new rawmaterialdetails_model();;
- $query = $this->rawmaterialdetails_model->checkMaterialExists($materialCode , $materialName);
-
+ $query = $this->rawmaterialdetails_model->checkMaterialExists($materialCode , $materialName , $materialCategory);
return $this->response->setJSON($query);
+
+ // if (!empty($query)) {
+ // foreach ((array)$query as $q) {
+ // $text .= $q['MaterialName'] . " " . ($q['IsActive'] == 1 ? '' : ' ( Inactive ) ') . "
";
+ // }
+ // }
}
diff --git a/app/Models/Expense_model.php b/app/Models/Expense_model.php
index f87fb089..0de2d711 100755
--- a/app/Models/Expense_model.php
+++ b/app/Models/Expense_model.php
@@ -9,7 +9,7 @@ class Expense_model extends Model
protected $primaryKey = 'id'; // Primary key
protected $allowedFields = [
- 'serial_number' , 'transporter_file', 'supplier_id', 'remarks', 'item_description', 'cost', 'cgst', 'sgst', 'igst', 'total', 'bill_no' ,'bill_date','status'
+ 'serial_number' , 'transporter_file', 'supplier_id', 'remarks', 'item_description', 'cost', 'cgst', 'sgst', 'igst', 'total', 'bill_no' ,'bill_date','status','created_by','updated_by'
];
public function getLastSerialNumber($financialYear)
@@ -24,9 +24,16 @@ class Expense_model extends Model
// Retrieve all active expenses
public function getAllExpense($fromDate,$toDate) {
-
- return $this->db->table('t_expense')
+
+ return $this->db->table('t_expense')
+ ->select([
+ "t_expense.id","t_expense.serial_number","t_expense.transporter_file","t_expense.supplier_id","t_expense.item_description","t_expense.cost","t_expense.cgst","t_expense.sgst","t_expense.igst","t_expense.total","t_expense.remarks","t_expense.status","t_expense.payment_method","t_expense.created_on","t_expense.created_by","t_expense.updated_on","t_expense.updated_by","t_expense.isactive","t_expense.bill_no","t_expense.bill_date",
+ "t_supplierdetailsn.SupplierName",
+ "CONCAT_WS(' ', emp.FirstName, emp.LastName) as created_name"
+ ])
->join('t_supplierdetailsn', 't_expense.supplier_id = t_supplierdetailsn.SupplierID', 'left')
+ ->join('tbl_users as creator', ' t_expense.created_by = creator.userid', 'left')
+ ->join('t_employee_details as emp', 'emp.empid=creator.empid', 'left')
->where('t_expense.isactive', 1)
->where('t_expense.created_on >=',"$fromDate")
->orderBy('t_expense.created_on', 'DESC')
diff --git a/app/Models/Inwardgateregister_model.php b/app/Models/Inwardgateregister_model.php
index ef94a74d..245000a8 100755
--- a/app/Models/Inwardgateregister_model.php
+++ b/app/Models/Inwardgateregister_model.php
@@ -372,18 +372,42 @@ class Inwardgateregister_model extends Model
function ViewigrListing($fromDate,$toDate)
{
- $subQuery = $this->db->table('t_igr_remarkes')
- ->select('COUNT(id)')
- ->where('igr_no = igr.IGRNo')
- ->getCompiledSelect();
+ $subQuery1 = $this->db->table('t_igr_remarkes')
+ ->select('COUNT(id)')
+ ->where('igr_no = igr.IGRNo')
+ ->getCompiledSelect();
+
+ // Build subQuery2 dynamically for rate and tax based on POType
+ $subQuery2 = "(CASE
+ WHEN PO.POType = 'revenue' THEN (
+ SELECT JSON_OBJECT('total_rate', SUM(POL.Rate), 'total_tax', AVG(tax.CGST + tax.SGST + tax.IGST))
+ FROM t_igr_details IGRD
+ LEFT JOIN t_purchaseorder_lineitem POL ON PONO = POL.PONO AND IGRD.MaterialCode = POL.MaterialCode
+ LEFT JOIN t_revenue_tax tax ON tax.LineItemNo = POL.LineItemNo
+ WHERE IGRD.IGRNO = igr.IGRNO
+ )
+ WHEN PO.POType = 'service' THEN (
+ SELECT JSON_OBJECT('total_rate', SUM(POL.Rate), 'total_tax', AVG(tax.CGST + tax.SGST + tax.IGST))
+ FROM t_igr_details IGRD
+ LEFT JOIN t_purchaseorder_lineitem POL ON PONO = POL.PONO AND IGRD.MaterialCode = POL.MaterialCode
+ LEFT JOIN t_service_tax tax ON tax.LineItemNo = POL.LineItemNo
+ WHERE IGRD.IGRNO = igr.IGRNO
+ )
+ ELSE NULL
+ END)";
+
+
+ // Main query
$builder = $this->db->table('t_igr_master igr')
->select("igr.*, PO.IsOpenOrder, PO.DeliveryDate, sup.SupplierName, PO.POType,
trans.name as TransporterName,
SUM(IGRD.QuantityAsPerInvoice) as ReceivedQuantity,
SUM(IGRD.NetWeight) as NetWeight,
COUNT(IGRD.IGRNo) as itemCount,
- COALESCE(($subQuery), 0) as remark_count") // COALESCE to handle no matches
+ COALESCE(($subQuery1), 0) as remark_count,
+ JSON_EXTRACT(($subQuery2), '$.total_rate') as total_rate,
+ JSON_EXTRACT(($subQuery2), '$.total_tax') as total_tax")
->join('t_purchaseorder_master PO', 'igr.PONO = PO.PONO')
->join('t_supplierdetailsn sup', 'PO.SupplierID = sup.SupplierID')
->join('t_transporter trans', 'igr.TransporterId = trans.id', 'left')
@@ -391,13 +415,15 @@ class Inwardgateregister_model extends Model
->where('igr.IGRStatus !=', MRIR_CREATED)
->where('Date(igr.CreatedDate) >=', "$fromDate")
->where('Date(igr.CreatedDate) <=', "$toDate")
- // ->where('igr.IGRNo', "IGRNO-1627")
->groupBy('IGRD.IGRNo')
->orderBy('igr.CreatedDate', 'desc');
-
- $query = $builder->get();
- $result = $query->getResult();
-
+
+ $query = $builder->get();
+ $result = $query->getResult();
+
+
+ // echo $this->db->getLastQuery()->getQuery();die;
+ // dd($result);
// old - issue in t_igr_remarkes join
diff --git a/app/Models/Rawmaterialdetails_model.php b/app/Models/Rawmaterialdetails_model.php
index 6c747c31..794744ae 100755
--- a/app/Models/Rawmaterialdetails_model.php
+++ b/app/Models/Rawmaterialdetails_model.php
@@ -327,17 +327,20 @@ class Rawmaterialdetails_model extends Model
// $this->db->update('T_PurchaseOrderDetails', $POInfo);
// return $this->db->affectedRows();
// }
- function checkMaterialExists($materialCode , $materialName)
- {
+
+
+ // on 28/jan/2025. both add and edit. category condition added.
+ function checkMaterialExists($materialCode , $materialName ,$materialCategory)
+ {
$builder = $this->db->table('t_materialmaster')
->select('MaterialCode,MaterialName,MaterialType,Category,IsActive');
if(!empty($materialCode)){
$builder = $builder->where('MaterialCode !=' , $materialCode);
}
+ $builder->where('Category' , $materialCategory);
$builder->where('REPLACE(MaterialName, " ", "")' , $materialName);
$query = $builder->get();
-
if ($query->getNumRows() > 0) {
return $query->getResultArray();
} else {
diff --git a/app/Views/addRawMaterial.php b/app/Views/addRawMaterial.php
index 44def64f..7f407380 100755
--- a/app/Views/addRawMaterial.php
+++ b/app/Views/addRawMaterial.php
@@ -304,7 +304,7 @@
var materialName = $('#MaterialName').val().trim();
var materialCode = '';
-
+ var materialCategory = $('#MatCate').val();
if(materialName == ''){
return;
}
@@ -315,7 +315,7 @@
$.ajax({
data: {
materialCode,
- materialName
+ materialName,materialCategory
},
type: "POST",
url: "materialExist",
diff --git a/app/Views/editRawmaterial.php b/app/Views/editRawmaterial.php
index 7e92c24d..6561130e 100755
--- a/app/Views/editRawmaterial.php
+++ b/app/Views/editRawmaterial.php
@@ -442,6 +442,7 @@ if ($total <= $reorder) {
var materialName = $('#MaterialName').val();
var materialCode = $('#RMcode').val();
+ var materialCategory = $('#MaterialCategory').val();
if(materialName == ''){
return;
@@ -453,7 +454,8 @@ if ($total <= $reorder) {
$.ajax({
data: {
materialCode,
- materialName
+ materialName,
+ materialCategory
},
type: "POST",
url: "materialExist",
diff --git a/app/Views/expense_list.php b/app/Views/expense_list.php
index 38ef48db..1334d989 100755
--- a/app/Views/expense_list.php
+++ b/app/Views/expense_list.php
@@ -119,11 +119,12 @@