commitall
This commit is contained in:
211
account/application/models/MStocks.php
Normal file
211
account/application/models/MStocks.php
Normal file
@@ -0,0 +1,211 @@
|
||||
<?php
|
||||
class MStocks extends CI_Model
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
public function isDeleteable($item_id)
|
||||
{
|
||||
$this->db->where("items_id", $item_id);
|
||||
$t = $this->db->get("tbl_salesdetails")->row();
|
||||
if ($t) return false;
|
||||
$this->db->where("items_id", $item_id);
|
||||
$t = $this->db->get("tbl_purchasedetails")->row();
|
||||
if ($t) return false;
|
||||
return true;
|
||||
}
|
||||
public function deleteOpeningStock($item_id)
|
||||
{
|
||||
$this->db->where("items_id", $item_id);
|
||||
$this->db->delete("tbl_stocks");
|
||||
}
|
||||
public function updateOpeningStock($item_id, $qty, $rate)
|
||||
{
|
||||
$this->db->where("items_id", $item_id);
|
||||
$this->db->delete("tbl_stocks");
|
||||
$this->db->insert("tbl_stocks", [
|
||||
'stocklocations_id' => 1,
|
||||
'ref_id' => 0,
|
||||
"title" => "Opening Stock",
|
||||
"items_id" => $item_id,
|
||||
"qty" => $qty,
|
||||
'price' => $rate,
|
||||
'status' => 1,
|
||||
'created_on' => date("y-m-d H:i:s")
|
||||
]);
|
||||
}
|
||||
public function addOpeningStock($item_id, $qty, $rate)
|
||||
{
|
||||
$this->db->insert("tbl_stocks", [
|
||||
'stocklocations_id' => 1,
|
||||
'ref_id' => 0,
|
||||
"title" => "Opening Stock",
|
||||
"items_id" => $item_id,
|
||||
"qty" => $qty,
|
||||
'price' => $rate,
|
||||
'status' => 1,
|
||||
'created_on' => date("y-m-d H:i:s")
|
||||
]);
|
||||
}
|
||||
public function getSellableItems()
|
||||
{
|
||||
$subquery = "(SELECT SUM(qty) FROM tbl_stocks WHERE item_id = tbl_items.item_id) AS total_qty";
|
||||
$this->db->select("tbl_items.*, $subquery", false);
|
||||
$this->db->having('total_qty >', 0);
|
||||
return $this->db->get("tbl_items")->result();
|
||||
}
|
||||
|
||||
public function getItemSalesStock($item_id)
|
||||
{
|
||||
|
||||
$this->db->where("status", 1);
|
||||
$this->db->where("items_id", $item_id);
|
||||
// $this->db->where("title='Opening Stock'");
|
||||
$Items = $this->db->get("tbl_salesdetails")->result();
|
||||
$qty = 0;
|
||||
$rate = 0;
|
||||
$nos = 0;
|
||||
foreach ($Items as $Item) {
|
||||
$qty += $Item->qty;
|
||||
$nos++;
|
||||
$rate += $Item->rate;
|
||||
}
|
||||
if($nos!=0) $rate = $rate / $nos;
|
||||
|
||||
$SalesStock = new stdClass;
|
||||
$SalesStock->qty = $qty;
|
||||
$SalesStock->rate = $rate;
|
||||
$SalesStock->amount = $qty * $rate;
|
||||
return $SalesStock;
|
||||
}
|
||||
public function getItemPurchaseStock($item_id)
|
||||
{
|
||||
|
||||
$this->db->where("status", 1);
|
||||
$this->db->where("items_id", $item_id);
|
||||
// $this->db->where("title='Opening Stock'");
|
||||
$Items = $this->db->get("tbl_purchasedetails")->result();
|
||||
$qty = 0;
|
||||
$rate = 0;
|
||||
$nos = 0;
|
||||
foreach ($Items as $Item) {
|
||||
$qty += $Item->qty;
|
||||
$nos++;
|
||||
$rate += $Item->rate;
|
||||
}
|
||||
if($nos!=0) $rate = $rate / $nos;
|
||||
$PurchaseStock = new stdClass;
|
||||
$PurchaseStock->qty = $qty;
|
||||
$PurchaseStock->rate = $rate;
|
||||
$PurchaseStock->amount = $qty * $rate;
|
||||
return $PurchaseStock;
|
||||
}
|
||||
|
||||
public function getOpeningStock($item_id)
|
||||
{
|
||||
$this->db->where("status", 1);
|
||||
$this->db->where("items_id", $item_id);
|
||||
$this->db->where("title='Opening Stock'");
|
||||
$Items = $this->db->get("tbl_stocks")->result();
|
||||
$qty = 0;
|
||||
$rate = 0;
|
||||
$nos = 0;
|
||||
foreach ($Items as $Item) {
|
||||
$qty += $Item->qty;
|
||||
$nos++;
|
||||
$rate += $Item->price;
|
||||
}
|
||||
if($nos!=0) $rate = $rate / $nos;
|
||||
$OpeningStock = new stdClass;
|
||||
$OpeningStock->qty = $qty;
|
||||
$OpeningStock->rate = $rate;
|
||||
$OpeningStock->amount = $qty * $rate;
|
||||
return $OpeningStock;
|
||||
}
|
||||
public function getClosingStock($item_id)
|
||||
{
|
||||
$OpeningStock=$this->getOpeningStock($item_id);
|
||||
$PurchaseStock=$this->getItemPurchaseStock($item_id);
|
||||
$SalesStock=$this->getItemSalesStock($item_id);
|
||||
$ClosingStock = new stdClass;
|
||||
$ClosingStock->qty =$PurchaseStock->qty+$OpeningStock->qty-$SalesStock->qty;
|
||||
$ClosingStock->rate = $PurchaseStock->rate+$OpeningStock->rate-$SalesStock->rate;
|
||||
$ClosingStock->amount = $ClosingStock->qty * $ClosingStock->rate;
|
||||
return $ClosingStock;
|
||||
}
|
||||
public function getStockItemSummary($item_id)
|
||||
{
|
||||
$this->db->where("status", 1);
|
||||
$this->db->where("items_id", $item_id);
|
||||
$Item = $this->db->get("tbl_stocks")->row();
|
||||
$qty = 0;
|
||||
$price = 0;
|
||||
$Item->Item = $this->db->where("item_id", $item_id)->get("tbl_items")->row();
|
||||
$Item->qty = $this->db->where("items_id", $item_id)->select("sum(qty) as qty")->get("tbl_stocks")->row()->qty;
|
||||
$Item->amount = $this->db->where("items_id", $item_id)->select("sum(price * qty) as amount")->get("tbl_stocks")->row()->amount;
|
||||
$Item->Opening = $this->getOpeningStock($item_id);
|
||||
$Item->Purchase = $this->getItemPurchaseStock($item_id);
|
||||
$Item->Sales = $this->getItemSalesStock($item_id);
|
||||
$Item->Closing = $this->getClosingStock($item_id);
|
||||
return $Item;
|
||||
}
|
||||
public function getStockSummary($stocklocation_id = 0)
|
||||
{
|
||||
$this->db->where("status", 1);
|
||||
if ($stocklocation_id != 0) {
|
||||
$this->db->where("stocklocations_id", $stocklocation_id);
|
||||
}
|
||||
$StockRecords = $this->db->select("distinct(items_id) as items_id")->get("tbl_stocks")->result();
|
||||
foreach ($StockRecords as $StockRecord) {
|
||||
$StockRecord->Summary = $this->getStockItemSummary($StockRecord->items_id);
|
||||
// $StockRecord->StockLocation = $this->db->where("stocklocation_id", $StockRecord->stocklocations_id)->get("tbl_stocklocations")->row();
|
||||
$StockRecord->Item = $this->db->where("item_id", $StockRecord->items_id)->get("tbl_items")->row();
|
||||
}
|
||||
return $StockRecords;
|
||||
}
|
||||
public function getStockRecords($stocklocation_id = 0)
|
||||
{
|
||||
$this->db->where("status", 1);
|
||||
if ($stocklocation_id != 0) {
|
||||
$this->db->where("stocklocations_id", $stocklocation_id);
|
||||
}
|
||||
$StockRecords = $this->db->get("tbl_stocks")->result();
|
||||
foreach ($StockRecords as $StockRecord) {
|
||||
$StockRecord->StockLocation = $this->db->where("stocklocation_id", $StockRecord->stocklocations_id)->get("tbl_stocklocations")->row();
|
||||
$StockRecord->Item = $this->db->where("item_id", $StockRecord->items_id)->get("tbl_items")->row();
|
||||
$StockRecord->Item->Unit = $this->db->where("unit_id", $StockRecord->Item->units_id)->get("tbl_units")->row();
|
||||
}
|
||||
return $StockRecords;
|
||||
}
|
||||
public function addPurchaseToStock($PurchaseDetails)
|
||||
{
|
||||
foreach ($PurchaseDetails as $PurchaseDetail) {
|
||||
$TableData = array(
|
||||
'stocklocations_id' => 1,
|
||||
'ref_id' => $PurchaseDetail->purchases_id,
|
||||
'title' => "Purchase",
|
||||
'items_id' => $PurchaseDetail->items_id,
|
||||
'qty' => $PurchaseDetail->qty,
|
||||
'price' => $PurchaseDetail->rate,
|
||||
'status' => 1,
|
||||
);
|
||||
$this->db->insert("tbl_stocks", $TableData);
|
||||
}
|
||||
}
|
||||
public function addSalesToStock($SalesDetails)
|
||||
{
|
||||
foreach ($SalesDetails as $SalesDetail) {
|
||||
$TableData = array(
|
||||
'stocklocations_id' => 1,
|
||||
'ref_id' => $SalesDetail->sales_id,
|
||||
'title' => "Sales",
|
||||
'items_id' => $SalesDetail->items_id,
|
||||
'qty' => (-$SalesDetail->qty),
|
||||
'price' => $SalesDetail->rate,
|
||||
'status' => 1,
|
||||
);
|
||||
$this->db->insert("tbl_stocks", $TableData);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user