ria/app/Models/Rawmaterialdetails_model.php
2025-03-20 17:51:44 +05:30

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;
}
}