469 lines
14 KiB
PHP
Executable File
469 lines
14 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use CodeIgniter\Model;
|
|
|
|
class Rawmaterialdetails_model extends Model
|
|
{
|
|
|
|
/**
|
|
* This function is used to get the user listing count
|
|
* @param string $searchText : This is optional search text
|
|
* @param number $page : This is pagination offset
|
|
* @param number $segment : This is pagination limit
|
|
* @return array $result : This is result
|
|
*/
|
|
function rawmaterialListing($isActiveFilter)
|
|
{
|
|
|
|
$builder = $this->db->table('t_materialmaster')
|
|
->select('t_materialmaster.* , emp.FirstName as createdby_user,cd.ConfigValue as CategoryName')
|
|
->join('tbl_users as user', 'user.UserId = t_materialmaster.createdby', 'left')
|
|
->join('t_employee_details as emp', 'emp.EmpID = user.EmpID', 'left')
|
|
->join('t_configdetails as cd', 'cd.Key = t_materialmaster.Category', 'left')
|
|
->where('t_materialmaster.IsActive',$isActiveFilter)
|
|
->orderBy('CreatedDate','desc');
|
|
$query = $builder->get();
|
|
$result = $query->getResult();
|
|
return $result;
|
|
}
|
|
|
|
function deleteMaterial($materialId,$info){
|
|
$builder = $this->db->table('t_materialmaster')
|
|
->where('MaterialCode',$materialId)
|
|
->update($info);
|
|
$result = $this->db->affectedRows();
|
|
return $result;
|
|
}
|
|
|
|
function reActivateMaterial($materialId,$info){
|
|
$builder = $this->db->table('t_materialmaster')
|
|
->where('MaterialCode',$materialId)
|
|
->update($info);
|
|
$result = $this->db->affectedRows();
|
|
return $result;
|
|
}
|
|
|
|
function getUOM($UOM = '')
|
|
{
|
|
$ConfigID = 'C001';
|
|
$builder = $this->db->table('t_configdetails')
|
|
->select('ConfigValue')
|
|
->where('Config_id ', $ConfigID);
|
|
if ($UOM != '') {
|
|
$builder->where('ConfigValue !=', $UOM);
|
|
}
|
|
$query = $builder->get();
|
|
|
|
return $query->getResult();
|
|
}
|
|
|
|
function getmaterialType($MaterialType = '')
|
|
{
|
|
$Config_ID = 'C003';
|
|
$builder = $this->db->table('t_configdetails')
|
|
->select('Config_ID,ConfigValue')
|
|
->where('Config_id', $Config_ID);
|
|
if ($MaterialType != '') {
|
|
$builder->where('ConfigValue !=', $MaterialType);
|
|
}
|
|
$query = $builder->get();
|
|
|
|
return $query->getResult();
|
|
}
|
|
|
|
//This function used to get the material category using configdetails table
|
|
function getmaterialCategory($MaterialCategory = '')
|
|
{
|
|
$Config_ID = 'C023';
|
|
$builder = $this->db->table('t_configdetails')
|
|
->select('Key,Config_ID,ConfigValue')
|
|
->where('isActive', 1)
|
|
->where('Config_id', $Config_ID);
|
|
if ($MaterialCategory != '') {
|
|
$builder->where('ConfigValue !=', $MaterialCategory);
|
|
}
|
|
$query = $builder->get();
|
|
|
|
return $query->getResult();
|
|
}
|
|
|
|
|
|
|
|
//This function used to get the conversionfactor using configdetails table
|
|
function getConversionfactorUOM($ConversionFactorUOM = '')
|
|
{
|
|
$Config_ID = 'C024';
|
|
$builder = $this->db->table('t_configdetails')
|
|
->select('Config_ID,ConfigValue')
|
|
->where('Config_id', $Config_ID);
|
|
if ($ConversionFactorUOM != '') {
|
|
$builder->where('ConfigValue !=', $ConversionFactorUOM);
|
|
}
|
|
$query = $builder->get();
|
|
|
|
return $query->getResult();
|
|
}
|
|
|
|
//AssetCode
|
|
/**
|
|
* This function used to get user information by id
|
|
* @param number $userId : This is user id
|
|
* @return array $result : This is user information
|
|
*/
|
|
|
|
|
|
function addNewRawMaterial($RawMaterial = '')
|
|
{
|
|
|
|
$builder = $this->db->table('t_materialmaster');
|
|
$builder->insert($RawMaterial);
|
|
return TRUE;
|
|
}
|
|
|
|
function insertvalueintoconfig($config)
|
|
{
|
|
|
|
|
|
$builder = $this->db->table('t_configdetails');
|
|
$builder->insert($config);
|
|
return TRUE;
|
|
}
|
|
|
|
/**
|
|
* This function used to get user information by id
|
|
* @param number $userId : This is user id
|
|
* @return array $result : This is user information
|
|
*/
|
|
function getMaterialDetails($MaterialCode)
|
|
{
|
|
$sql = " SELECT * FROM t_materialmaster WHERE MaterialCode ='$MaterialCode'";
|
|
$query = $this->db->query($sql);
|
|
return $query->getResult();
|
|
}
|
|
|
|
function getAllSilicaRawMaterialCode(){
|
|
|
|
$builder = $this->db->table('t_materialmaster')
|
|
->select('MaterialCode')
|
|
|
|
/** Caution changing config key is posing risk to entire stock module * */
|
|
// 248 is the config detail key for silica sand
|
|
|
|
->where('Category', '248')
|
|
->orderBy('CreatedDate', 'desc');
|
|
$query = $builder->get();
|
|
$materialResults = $query->getResultArray();
|
|
|
|
return array_column($materialResults, 'MaterialCode');
|
|
}
|
|
|
|
function getAllWasteCoreSandMaterialCode(){
|
|
|
|
$builder = $this->db->table('t_materialmaster')
|
|
->select('MaterialCode')
|
|
|
|
/** Caution changing config key is posing risk to entire stock module * */
|
|
// 328 is the config detail key for silica sand
|
|
|
|
->where('Category', '328')
|
|
->orderBy('CreatedDate', 'desc');
|
|
$query = $builder->get();
|
|
$materialResults = $query->getResultArray();
|
|
|
|
return array_column($materialResults, 'MaterialCode');
|
|
}
|
|
|
|
function getAllBagMaterialCode()
|
|
{
|
|
//when no data present for current month we are showing only active materials with filter option
|
|
$builder = $this->db->table('t_materialmaster')
|
|
->select('MaterialCode, MaterialName')
|
|
->where('Category', '236')
|
|
->where('IsActive', 1)
|
|
->orderBy('MaterialCode', 'asc');
|
|
$query = $builder->get();
|
|
return $query->getResultArray();
|
|
|
|
}
|
|
|
|
function getSelectedBagMaterialCode($distinctMaterialCodes)
|
|
{
|
|
//when data present with whether material is active or not we have to show them with filter option
|
|
$builder = $this->db->table('t_materialmaster')
|
|
->select('MaterialCode, MaterialName')
|
|
->where('Category', '236')
|
|
->whereIn('MaterialCode', $distinctMaterialCodes)
|
|
->orderBy('MaterialCode', 'asc');
|
|
$query = $builder->get();
|
|
return $query->getResultArray();
|
|
}
|
|
|
|
|
|
|
|
|
|
function getAllResinMaterialCode(){
|
|
|
|
$builder = $this->db->table('t_materialmaster')
|
|
->select('MaterialCode , MaterialName')
|
|
->where('IsActive', 1)
|
|
->where('Category', '327')
|
|
->orderBy('MaterialCode', 'asc');
|
|
$query = $builder->get();
|
|
$materialResults = $query->getResultArray();
|
|
|
|
return $materialResults;
|
|
|
|
}
|
|
|
|
function getSelectedResinMaterialCode($distinctMaterialCodes)
|
|
{
|
|
$builder = $this->db->table('t_materialmaster')
|
|
->select('MaterialCode, MaterialName')
|
|
->where('Category', '327')
|
|
->whereIn('MaterialCode', $distinctMaterialCodes) // Matches MaterialCode with the array
|
|
->orderBy('MaterialCode', 'asc');
|
|
|
|
$query = $builder->get();
|
|
$materialResults = $query->getResultArray();
|
|
|
|
return $materialResults;
|
|
|
|
}
|
|
|
|
|
|
function getMaterialstock($MaterialCode, $currentdate)
|
|
|
|
{
|
|
|
|
$dt = date('d', strtotime($currentdate));
|
|
$year = date('Y', strtotime($currentdate));
|
|
$month = date('m', strtotime($currentdate));
|
|
|
|
if ($month < 04) {
|
|
//echo "b4finance";
|
|
$newyr = $year - 1;
|
|
$startdate = $newyr . '-' . '04' . '-' . '01';
|
|
// print_r( $startdate);die();
|
|
|
|
//echo $startdate;
|
|
} else {
|
|
//echo "after Finance";
|
|
$startdate = $year . '-' . '04' . '-' . '01';
|
|
// print_r( $startdate);die();
|
|
// echo $startdate;
|
|
}
|
|
|
|
$nedt = $dt + 1;
|
|
|
|
$newdate = $year . '-' . $month . '-' . $nedt;
|
|
|
|
|
|
$subquery = "SELECT SUM(IF(Transaction_type='Add',Quantity,0)) - SUM(IF(Transaction_type='Reduce',Quantity,0))as remainingqty
|
|
FROM t_material_stock_history
|
|
WHERE MaterialCode=? AND CreatedOn >=? AND CreatedOn <=? ";
|
|
$query = $this->db->query($subquery, array($MaterialCode, $startdate, $newdate));
|
|
|
|
|
|
|
|
return $query->getResultArray();
|
|
}
|
|
|
|
|
|
|
|
function getAssetcode()
|
|
{
|
|
$builder = $this->db->table('t_asset_details')
|
|
->select('AssetCode,AssetName');
|
|
//->where('Assetcode',$Assetcode );
|
|
$query = $builder->get();
|
|
return $query->getResult();
|
|
}
|
|
|
|
|
|
function getCostCenterCode() //$CostCenterCode='')
|
|
{
|
|
$builder = $this->db->table('t_costcenter_master')
|
|
->select('CostCenterCode,CostCenterName');
|
|
//->where('CostCenterCode', $CostCenterCode);
|
|
$query = $builder->get();
|
|
return $query->getResult();
|
|
}
|
|
|
|
|
|
function editRawmaterial($RawMaterial, $MaterialCode)
|
|
{
|
|
|
|
$this->db->table('t_materialmaster')
|
|
->where('MaterialCode', $MaterialCode)
|
|
->update($RawMaterial);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
function viewrawmaterial($RawMaterial, $MaterialCode)
|
|
{
|
|
echo $MaterialCode; //."and".$RawMaterial ;
|
|
|
|
$this->db->table('t_materialmaster')
|
|
->where('MaterialCode', $MaterialCode)
|
|
->update($RawMaterial);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
function export_excel()
|
|
{
|
|
|
|
$builder = $this->db->table('t_materialmaster as det')
|
|
->select('det.*,emp.firstname,emp1.firstname as Updated_By,det.IsActive')
|
|
->join('tbl_users as tbl', ' det.createdby = tbl.userid', 'left')
|
|
->join('t_employee_details as emp', 'emp.empid=tbl.empid', 'left')
|
|
->join('tbl_users as tbl1', ' det.UpdatedBy = tbl1.userid', 'left')
|
|
->join('t_employee_details as emp1', 'emp1.empid=tbl1.empid', 'left');
|
|
return $builder->get()->getResultArray();
|
|
}
|
|
|
|
/**
|
|
* This function is used to delete the user information
|
|
* @param number $userId : This is user id
|
|
* @return boolean $result : TRUE / FALSE*/
|
|
|
|
// function deletePO($PO, $POinfo)
|
|
// {
|
|
// $this->db->where('PO', $PO);
|
|
// $this->db->update('T_PurchaseOrderDetails', $POInfo);
|
|
// return $this->db->affectedRows();
|
|
// }
|
|
|
|
|
|
// on 28/jan/2025. both add and edit. category condition added.
|
|
function checkMaterialExists($materialCode,$materialName ,$materialCategory)
|
|
{
|
|
|
|
$builder = $this->db->table('t_materialmaster MM')
|
|
->select('MM.MaterialCode,MM.MaterialName,MM.MaterialType,MM.Category,MM.IsActive,CD.ConfigValue as CategoryName')
|
|
->join('t_configdetails as CD', ' CD.Key = MM.Category', 'left');
|
|
if(!empty($materialCode)){
|
|
$builder = $builder->where('MM.MaterialCode !=' , $materialCode);
|
|
}
|
|
$builder->where('MM.Category' , $materialCategory);
|
|
$builder->where('REPLACE(MM.MaterialName, " ", "")' , $materialName);
|
|
|
|
$query = $builder->get();
|
|
if ($query->getNumRows() > 0) {
|
|
return $query->getResultArray();
|
|
} else {
|
|
return [];
|
|
}
|
|
}
|
|
|
|
|
|
function reOrderListing()
|
|
{
|
|
|
|
//$subQuery='SELECT * from t_materialmaster where Current_stock < reorder?';
|
|
|
|
|
|
$today = get_current_date();
|
|
|
|
$today_month = date('F', strtotime($today));
|
|
|
|
$today_year = date('Y', strtotime($today));
|
|
|
|
$pre_year = $today_year - 1;
|
|
|
|
$Fin_year = '';
|
|
|
|
if ($today_month <= 3) {
|
|
$Fin_year = '01-04-' . $pre_year;
|
|
} else {
|
|
$Fin_year = '01-04-' . $today_year;
|
|
}
|
|
|
|
|
|
$subQuery = "SELECT DISTINCT(p.MaterialCode),mm.MaterialName,opens.CurrentStock,OpeningStock,mm.reorder
|
|
FROM t_material_stock_history AS p
|
|
|
|
left join t_materialmaster mm on mm.MaterialCode = p.MaterialCode
|
|
|
|
left join
|
|
(select StockId,pp.MaterialCode mc,
|
|
SUM((IF(pp.Transaction_type='Add',Quantity,0))-(IF(pp.Transaction_type='Reduce',Quantity,0)))
|
|
AS CurrentStock,
|
|
|
|
SUM(
|
|
CASE WHEN date(stockdate) > '" . $Fin_year . "'
|
|
THEN stock
|
|
ELSE 0
|
|
END
|
|
) as OpeningStock
|
|
|
|
FROM t_material_stock_history AS pp
|
|
left join t_materialmaster mm on mm.MaterialCode = pp.MaterialCode
|
|
GROUP BY pp.MaterialCode
|
|
) as opens on opens.mc = p.MaterialCode
|
|
|
|
|
|
where (CurrentStock+OpeningStock)<reorder";
|
|
|
|
$query = $this->db->query($subQuery, array());
|
|
|
|
|
|
return $query->getResult();
|
|
}
|
|
|
|
|
|
function getMaterialAvg($RawMaterialID)
|
|
{
|
|
$subQuery = 'select AVG(Rate) as avg_rate from t_purchaseorder_lineitem
|
|
join t_purchaseorder_master on t_purchaseorder_master.PONO=t_purchaseorder_lineitem.PONO
|
|
where MaterialCode = ?';
|
|
|
|
$query = $this->db->query($subQuery, array($RawMaterialID));
|
|
|
|
return $query->getResultArray();
|
|
}
|
|
|
|
|
|
function materialCodesConfigCategory($configKey){
|
|
|
|
|
|
$builder = $this->db->table('t_materialmaster MM')
|
|
->select('MM.MaterialCode,MM.MaterialName,MM.MaterialType,MM.Category,MM.IsActive,MM.UOM')
|
|
->where('MM.Category' , $configKey);
|
|
|
|
$query = $builder->get();
|
|
if ($query->getNumRows() > 0) {
|
|
//return $this->db->getLastQuery();
|
|
return $query->getResultArray();
|
|
} else {
|
|
return [];
|
|
}
|
|
|
|
}
|
|
|
|
function getMaterialRateHistory($RawMaterialID) {
|
|
$result = $this->db->table('t_material_rate_history tmrh')
|
|
->select('
|
|
tmrh.new_value,
|
|
tmrh.old_value,
|
|
tmrh.updated_at,
|
|
te.FirstName AS name
|
|
')
|
|
->join('tbl_users tu', 'tu.userId = tmrh.updated_by', 'left')
|
|
->join('t_employee_details te', 'te.EmpID = tu.EmpID', 'left')
|
|
->where('tmrh.MaterialCode', $RawMaterialID)
|
|
->orderBy('tmrh.updated_at', 'desc')
|
|
->get()
|
|
->getResultArray();
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
|
|
}
|