| Server IP : 162.214.74.102 / Your IP : 216.73.217.114 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/www/lrsys_apps/meridional/application/plugins/module_stock/controllers/ |
Upload File : |
<?php
_auth();
$dir = "application/plugins/module_stock";
$ui->assign('_application_menu', "stock_module");
$ui->assign('_title', $_L['Stock module'].' - '. $config['CompanyName']);
$action = $routes['2'];
$user = User::_info();
$ui->assign('user', $user);
$ui->assign('_st', $_L['Stock module']);
switch ($action) {
case 'list':
$ui->assign('xheader', '<link rel="stylesheet" type="text/css" href="' . $dir . '/assets/css/default.css">');
$ui->assign('xfooter', '<script type="text/javascript" src="' . $dir . '/assets/js/list.js"></script>');
$ui->assign('_include', $action);
$ui->display('wrapper.tpl');
break;
case 'item':
$stmt = ORM::for_table('sys_stock')
->table_alias('i')
->select('i.*')
->where('i.sys_items_id', $routes['3'])
->order_by_asc('id');
// Filtros
$filters = [];
if(isset($_POST['ini']) && !empty($_POST['ini'])) {
$filters['ini'] = implode('-', array_reverse(explode('/', filter_var($_POST['ini'], FILTER_SANITIZE_STRING))));
$stmt->where_gte('date', $filters['ini']);
}
if(isset($_POST['end']) && !empty($_POST['end'])) {
$filters['end'] = implode('-', array_reverse(explode('/', filter_var($_POST['end'], FILTER_SANITIZE_STRING))));
$stmt->where_lte('date', $filters['end']);
}
if(isset($_POST['type']) && !empty($_POST['type'])) {
$filters['type'] = filter_var($_POST['type'], FILTER_SANITIZE_STRING);
$stmt->where('type', $filters['type']);
}
$ui->assign('filters', $filters);
$data = $stmt->find_many();
$itm = ORM::for_table('sys_items')
->select('description')
->select('unit_id')
->where('id', $routes['3'])
->find_many();
$unit = ORM::for_table('sys_items_unit')
->select('*')
->where('id', $itm[0]['unit_id'])
->find_many();
$qtdTotalIn=0.00;
$qtdTotalOut=0.00;
$qtdReleases=0.00;
$ui->assign('qtdTotalIn', $qtdTotalIn);
$ui->assign('qtdTotalOut', $qtdTotalOut);
$ui->assign('qtdReleases', $qtdReleases);
$ui->assign('bar_records', 1);
$ui->assign('bar_value', 2);
$ui->assign('bar_balance', 3);
$ui->assign('bar_payed', 4);
$ui->assign('itemSelected', $data);
$ui->assign('id_item', $routes['3']);
$ui->assign('name', $itm[0]['description']);
$ui->assign('item_unidade', $unit[0]['initials']);
$ui->assign('item_decimal', $unit[0]['int_value']);
$ui->assign('config', $config);
$ui->assign('dir', $dir);
$css = array('modal','dp/dist/datepicker.min');
$js_arr = array('modal','numeric','dp/dist/datepicker.min');
$assets_css = Asset::css($css);
$assets_js = Asset::js($js_arr);
$ui->assign('xheader', $assets_css.'<link rel="stylesheet" type="text/css" href="'.$dir.'/assets/css/default.css">'. '<link rel="stylesheet" type="text/css" href="'.$dir.'/assets/css/bottom_bar.css"/>');
$ui->assign('xfooter', $assets_js.'<script type="text/javascript" src="'.$dir.'/assets/js/item.js"></script>'.'<script type="text/javascript" src="'.$dir.'/assets/js/bottom_bar.js"></script>');
$ui->assign('_include', $action);
$ui->display('wrapper.tpl');
break;
/*add && update*/
case 'add':
$ret;
$type = $_POST["type_release"];
$date = implode('-',array_reverse(explode('/', $_POST["date_release"])));
$time = $_POST["time_release"];
$qty = str_replace(",", "", $_POST["qty_release"]);
$qty = explode(" ", $qty);
$qty = $qty[0];
$price = str_replace(",", "", $_POST["price_release"]);
$obs = $_POST["obs_release"];
if(! empty($_POST["id_rels"])){
$stock = ORM::for_table('sys_stock')
->find_one($_POST["id_rels"]);
$stock->type = $type;
$stock->date = $date;
$stock->time = $time;
$stock->quantity = $qty;
$stock->unit_price = $price;
$stock->observation = $obs;
$stock->dt_atualizacao = date("Y-m-d H:i:s");
$ret = $_L['Realease add'];
}else{
$stock = ORM::for_table('sys_stock')
->create();
$stock->sys_items_id = $_POST["id"];
$stock->type = $type;
$stock->date = $date;
$stock->time = $time;
$stock->quantity = $qty;
$stock->unit_price = $price;
$stock->observation = $obs;
$stock->dt_cadastro = date("Y-m-d H:i:s");
$ret = $_L['Realease upd'];
}
$stock->save();
echo $ret;
/*Alerts of stock*/
$validaParams = ORM::for_table('sys_items_stock')
->where('sys_items_id', $stock->sys_items_id)
->find_many();
$min = $validaParams[0]['minumum_stock'];
$max = $validaParams[0]['maximum_stock'];
$alert = $validaParams[0]['control_stock'];
// pego as entradas e saídas
$valMax = ORM::for_table('sys_stock')
->raw_query('select CAST( SUM(quantity) AS DECIMAL(10,2)) as qtd
from sys_stock
where sys_items_id = '.$stock->sys_items_id.'
and (type = \'entry\')')
->find_many();
$valMin = ORM::for_table('sys_stock')
->raw_query('select CAST( SUM(quantity) AS DECIMAL(10,2)) as qtd
from sys_stock
where sys_items_id = '.$stock->sys_items_id.'
and type = \'out\'')
->find_many();
$entradas = 0;
$saidas = 0;
($valMax[0]['qtd']) ? $entradas = $valMax[0]['qtd'] : $entradas = 0;
($valMin[0]['qtd']) ? $saidas = $valMin[0]['qtd'] : $saidas = 0;
$saldo = $entradas - $saidas;
// atualizo o saldo de produtos
$b = ORM::for_table('sys_items_stock')
->where('sys_items_id',$stock->sys_items_id)->find_result_set()
->set('current_stock', $saldo)
->save();
if($alert == 1){
if($min >= $saldo || $max <= $saldo){
$notifications = new Notifications();
$notifications->verify(20, $user['id'], U.'module_stock/stock/item/'.$stock->sys_items_id);
}
}
break;
case 'del':
$stock = ORM::for_table('sys_stock')->find_one($_POST["id"]);
if($stock['sys_orders_id'] > 0)
{
echo "Não é possível deletar este lançamento pois ele está vinculado a um pedido.";
}
else
{
$stock ->delete();
echo "Lançamento excluído com sucesso!";
}
break;
case 'busca':
$data = ORM::for_table('sys_stock')
->table_alias('i')
->select('i.*')
->where('i.id', $routes['3'])
->order_by_asc('id')
->find_many();
echo($data[0]['type'].";".implode("/", array_reverse(explode("-", $data[0]['date']))).";".$data[0]['time'].";".$data[0]['quantity'].";".$data[0]['unit_price'].";".$data[0]['observation'].";".$data[0]['id']);
break;
case 'buyOs':
//adicionar o controller
//require_once "controllers/".$action.".php";
$ui->assign('_include', $action);
$ui->display('wrapper.tpl');
break;
case 'inNotes':
//adicionar o controller
//require_once "controllers/".$action.".php";
$ui->assign('_include', $action);
$ui->display('wrapper.tpl');
break;
case 'prodOrders':
//adicionar o controller
//require_once "controllers/".$action.".php";
$ui->assign('_include', $action);
$ui->display('wrapper.tpl');
break;
case 'fci':
//adicionar o controller
//require_once "controllers/".$action.".php";
$ui->assign('_include', $action);
$ui->display('wrapper.tpl');
break;
case 'rels':
//adicionar o controller
//require_once "controllers/".$action.".php";
$ui->assign('_include', $action);
$ui->display('wrapper.tpl');
break;
case 'load_list':
$ret="";
$type = _post('stype');
$search = _post('search');
$data = ORM::for_table('sys_items')
->table_alias('i')
->select('i.*')
->where('type',$type)
->select_expr("(select initials from sys_items_unit u where u.id=i.unit_id )", 'u_unit')
->select_expr("(select current_stock from sys_items_stock st where st.sys_items_id=i.id )", 'stock')
->order_by_asc('name');
if(!empty($search))
$data->where_like('description',"%$search%");
$d = $data->find_many();
// var_dump($d[0]);exit;
$valorFinal = 0;
if(sizeof($d) > 0){
foreach ($d as $ds){
$price = number_format($ds['sales_price'],2,$config['dec_point'],$config['thousands_sep']);
$ret .="<tr class='list_stock_1'>
<td>
<div class='btn-group dropdown dropdown-main-actions'>
<button data-toggle='dropdown' class='btn btn-primary btn-xs dropdown-toggle' type='button'>
<span class='caret'></span></button>
<ul class='dropdown-menu'>
<li style='display:none;' onclick='etiqueta()'><a href='#'><i class='fa fa-th'></i> Imprimir etiquetas</a></li>
<li><a href='?ng=module_stock/stock/item/".$ds['id']."'><i class='fa fa-cog'></i> Gerenciar Estoque</a></li>
</ul>
</div>
</td>
<td onclick='goItem(".$ds['id'].")'>".$ds['description']."</td>
<td onclick='goItem(".$ds['id'].")'>".$ds['id']."</td>
<td onclick='goItem(".$ds['id'].")' style='width: 20px;'>".$config['currency_code']."</td>
<td onclick='goItem(".$ds['id'].")'>".$price."</td>
<td onclick='goItem(".$ds['id'].")'>".$ds['stock']."</td>
<td onclick='goItem(".$ds['id'].")'>".$ds['u_unit']."</td>
<td onclick='goItem(".$ds['id'].")'> </td></tr>
";
$valorFinal = $valorFinal + $ds['sales_price'];
}
}else{
$ret = "<tr><td colspan='8' style='text-align: center'>Nenhum produto encontrado!</td></tr>";
}
$ret .= "<tr><td colspan='8' style='text-align: right'><strong>Valor Total ".$config['currency_code']." ".number_format($valorFinal,2,$config['dec_point'],$config['thousands_sep'])."</strong></td></tr>";
echo $ret;
break;
case 'list_notifications_users':
$ui->assign('xfooter', '<script type="text/javascript" src="' . $dir . '/assets/js/notifications.js"></script>');
$notifications_users = ORM::for_table('sys_notifications_types')
->table_alias('snt')
->select('snt.id')
->select('snt.description')
->select('snt.module')
->select('snu.method')
->left_outer_join('sys_notifications_users', 'snt.id = snu.id_notification_type', 'snu')
->where('snt.module', 'module_stock')
->order_by_asc('snt.description')
->find_many();
$ui->assign('notifications_users', $notifications_users);
$ui->assign('_st', $_L['User Notifications']);
$ui->display($dir.'/views/notifications.tpl');
break;
case 'add_notifications_users_post':
$id = (isset($_POST['id'])) ? $_POST['id'] : 0;
$values = (isset($_POST['values'])) ? json_encode($_POST['values']) : 0;
if($id <= 0) {
r2(U.'module_stock/stock/list_notifications_users/', 'e', $_L['Invalid ID']);
}
$notifications_users = ORM::for_table('sys_notifications_users')
->where('id_notification_type', $id)
->find_one();
if($notifications_users) {
$notifications_users->method = $values;
$notifications_users->save();
die('1');
}
$notifications_users = ORM::for_table('sys_notifications_users')->create();
$notifications_users->id_notification_type = $id;
$notifications_users->id_user = $user['id'];
$notifications_users->method = $values;
$notifications_users->description = "";
$notifications_users->save();
die('1');
break;
default:
echo 'action not defined';
}