| Server IP : 162.214.74.102 / Your IP : 216.73.217.80 Web Server : Apache System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 User : lrsys ( 1015) PHP Version : 5.6.40 Disable Function : exec,passthru,shell_exec,system MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/lrsys/public_html/lrsys_apps/imobles/application/plugins/module_pcp/models/ |
Upload File : |
<?php
/**
* Main class
*/
class Pcp
{
private $stock_table = 'sys_items_stock';
private $quantity_column_name = 'current_stock';
public $product = null;
public function __construct($product_id = null) {
$this->product = ORM::for_table('sys_items')->where('id', $product_id)->find_one();
}
public function getItemStruct()
{
return ORM::for_table('sys_items_structure')->select('sys_items.description')->select('sys_items_structure.qty')->join('sys_items', array('sys_items_structure.production_sys_item_id', '=', 'sys_items.id'))->where('sys_items_id', $this->product->id)->findArray();
}
public function getSubItems()
{
$sub_items = array();
$items_struct = ORM::for_table('sys_items_structure')->where('sys_items_id', $this->product->id)->findArray();
foreach ($items_struct as $key => $item) {
if($p = ORM::for_table('sys_items_structure')->select('sys_items.description')->select('sys_items_structure.qty')->join('sys_items', array('sys_items_structure.production_sys_item_id', '=', 'sys_items.id'))->where('sys_items_id', $item['production_sys_item_id'])->findArray()) {
$product_sub = ORM::for_table('sys_items')->where('id', $item['production_sys_item_id'])->find_one()->as_array();
array_push($sub_items, array("subitem" => $product_sub, "struct" => $p));
}
}
return $sub_items;
}
public function getStepsCosts()
{
$list_steps = $this->getListSteps();
$result = 0;
foreach ($list_steps as $key => $value) {
$result = $result + $value->getCost();
}
return $result;
}
public function getProduct()
{
return $this->product;
}
public function getListSteps()
{
return Model::factory('ProductionSteps')->where('product_id', $this->product->id)->find_many();
}
public function forecastByStock()
{
$forecast = array();
$items_has_struct = ORM::for_table('sys_items_structure')->group_by('sys_items_id')->findArray();
foreach ($items_has_struct as $key => $item) {
$p = ORM::for_table('sys_items_structure')->where('sys_items_id', $item['sys_items_id'])->findArray();
$n = ORM::for_table('sys_items')->where('id', $item['sys_items_id'])->findArray();
// array_push($forecast, array('item' => $item['sys_items_id'] ,'qtd' => $this->inStock($p)));
array_push($forecast, array('item_id' => $item['sys_items_id'] ,'item_name' => $n[0]['description'],'qtd' => min($this->inStock($p))));
}
return $forecast;
}
public function forecastBySales() {
$forecast = array();
$sales3 = array('5','10');
return $sales3;
$items_has_struct = ORM::for_table('sys_items_structure')->group_by('sys_items_id')->findArray();
foreach ($items_has_struct as $key => $item) {
$p = ORM::for_table('sys_items_structure')->where('sys_items_id', $item['sys_items_id'])->findArray();
// array_push($forecast, array('item' => $item['sys_items_id'] ,'qtd' => $this->inStock($p)));
array_push($forecast, array('item' => $item['sys_items_id'] ,'qtd' => min($this->inStock($p))));
}
return $forecast;
}
public function hasStruct()
{
}
public function inStock($items) {
$qtd = 0;
$array = array();
foreach ($items as $key => $item) {
$stock = ORM::for_table($this->stock_table)->where('sys_items_id', $item['production_sys_item_id'])->findArray()[0];
if($p = ORM::for_table('sys_items_structure')->where('sys_items_id', $item['production_sys_item_id'])->findArray()){
$forProduction = (min($this->inStock($p)));
$qstock = (int)$stock[$this->quantity_column_name] + $forProduction;
}else{
$qstock = (int)$stock[$this->quantity_column_name];
}
$pqtd = (int)$item['qty'];
while ($qstock >= $pqtd) {
$qtd++;
$qstock = $qstock - $pqtd;
}
array_push($array, $qtd);
$qtd = 0;
}
return $array;
}
}