| 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/dialogo/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']);
$pluginModuleFish = ORM::for_table('sys_pl')->where('c', "module_fish")->find_one();
$moduleFish = false;
if ($pluginModuleFish) {
if ($pluginModuleFish['status'] == 1) {
$moduleFish = true;
}
}
$ui->assign('moduleFish', $moduleFish);
switch ($action) {
case 'list':
// Verifico se tem permissão
checkPermission();
$css_arr = array('s2/css/select2.min',
'/../../../application/plugins/module_stock/assets/css/default',
);
$js_arr = array(
's2/js/select2.min',
'/../../../application/plugins/module_stock/assets/js/list',
);
$assets_css = Asset::css($css_arr);
$assets_js = Asset::js($js_arr, date("Y-m-d"));
$ui->assign('xheader', $assets_css);
$ui->assign('xfooter', $assets_js);
$ui->assign('jsvar', '
_L[\'Select\'] = \'' . $_L['Select'] . '\'; ');
$ui->assign('_include', $action);
$bottomBar = array(
array('type' => 'float', 'info' =>$_L['Total Amount'], 'value' => 0),
array('type' => 'int', 'info' => "Nº ".$_L['Product type'] , 'value' =>0),
);
$ui->assign('bottomBar', $bottomBar);
$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 ($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['filter_stock_crm_accounts_id'] = isset($_POST['crm_accounts_id']) ? $_POST['crm_accounts_id'] : '';
$_SESSION['filter_stock_type'] = isset($_POST['type']) ? $_POST['type'] : '';
$_SESSION['filter_stock_period_ini'] = _postDate('ini');
$_SESSION['filter_stock_period_end'] = _postDate('end');
}
if (isset($_SESSION['filter_stock_period_ini']) && !empty($_SESSION['filter_stock_period_ini'])) {
$stmt->where_gte('date', $_SESSION['filter_stock_period_ini']);
$filters['ini'] = $_SESSION['filter_stock_period_ini'];
}
if (isset($_SESSION['filter_stock_period_end']) && !empty($_SESSION['filter_stock_period_end'])) {
$stmt->where_lte('date', $_SESSION['filter_stock_period_end']);
$filters['end'] = $_SESSION['filter_stock_period_end'];
}
if (isset($_SESSION['filter_stock_type']) && !empty($_SESSION['filter_stock_type'])) {
$stmt->where('type', $_SESSION['filter_stock_type']);
$filters['type'] = $_SESSION['filter_stock_type'];
}
if ($moduleFish) {
$stmt->left_outer_join('crm_accounts', array('c.id', '=', 'i.crm_accounts_id'), 'c');
$stmt->select('c.account');
if (isset($_SESSION['filter_stock_crm_accounts_id']) && $_SESSION['filter_stock_crm_accounts_id'] != '') {
$stmt->where('c.id', $_SESSION['filter_stock_crm_accounts_id']);
$options = "";
// foreach ($filter['filter_stock_crm_accounts_id'] as $c) {
$c = ORM::for_table('crm_accounts')->find_one($_SESSION['filter_stock_crm_accounts_id']);
if (count($c) > 0) {
$options .= '<option value="' . $c->id . '" selected >' . $c->account . '</option>';
}
// }
$ui->assign('crmAccounts', $options);
} else {
$ui->assign('crmAccounts', '');
}
}
$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_arr = array('s2/css/select2.min',
'/../../../application/plugins/module_stock/assets/css/default',
'/../../../application/plugins/module_stock/assets/css/bottom_bar',
'modal', 'dp/dist/datepicker.min'
);
$js_arr = array(
's2/js/select2.min',
'/../../../application/plugins/module_stock/assets/js/item',
'/../../../application/plugins/module_stock/assets/js/bottom_bar',
'modal', 'numeric', 'dp/dist/datepicker.min'
);
$assets_css = Asset::css($css_arr);
$assets_js = Asset::js($js_arr, date("Y-m-d"));
$ui->assign('xheader', $assets_css);
$ui->assign('xfooter', $assets_js);
$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"])));
// Vencimento e Lote
$due_date = implode('-', array_reverse(explode('/', $_POST["due_date"])));
$lote = $_POST["lote"];
$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->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->dt_cadastro = date("Y-m-d H:i:s");
$ret = $_L['Realease upd'];
}
$stock->type = $type;
$stock->date = $date;
$stock->time = $time;
$stock->quantity = $qty;
$stock->unit_price = $price;
$stock->observation = $obs;
if ($moduleFish) {
$stock->crm_accounts_id = $_POST["crm_accounts_id"];
}
// Vencimento e Lote
$stock->due_date = $due_date;
$stock->lote = $lote;
// Salvo
$stock->save();
echo $ret;
/* Alerts of stock */
$validaParams = ORM::for_table('sys_items_stock')
->where('sys_items_id', $stock->sys_items_id);
$validaParams->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);
$current_stocks=$b->find_many();
if(count($current_stocks)==0){
$current_stock = ORM::for_table('sys_items_stock')
->create();
$current_stock->sys_items_id = $stock->sys_items_id;
}else{
$current_stock=$current_stocks[0];
}
$current_stock->current_stock= $saldo;
$current_stock->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();
$options = "";
if ($moduleFish) {
if (intval($data[0]->crm_accounts_id > 0)) {
$c = ORM::for_table('crm_accounts')->find_one($data[0]->crm_accounts_id);
if (count($c) > 0) {
$options .= '<option value="' . $c->id . '" selected >' . $c->account . '</option>';
}
}
}
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']
. ";" . $options
);
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');
$crm_accounts_id = _post('crm_accounts_id');
$data = ORM::for_table('sys_items')
->table_alias('i')
->select('i.*')
->where('i.type', $type)
->select_expr("(select initials from sys_items_unit u where u.id=i.unit_id )", 'u_unit')
->order_by_asc('name');
if($moduleFish){
if (!empty($crm_accounts_id)){
$data->select_expr("(select sum(quantity) from sys_stock st where st.type='entry' AND st.sys_items_id=i.id and st.crm_accounts_id=".$crm_accounts_id." )", 'stock_in');
$data->select_expr("(select sum(quantity) from sys_stock st2 where st2.type='out' AND st2.sys_items_id=i.id and st2.crm_accounts_id=".$crm_accounts_id.")", 'stock_out');
$data->where_raw("i.id IN (select ss.sys_items_id from sys_stock ss where ss.crm_accounts_id=".$crm_accounts_id.")");
}else{
$data->select_expr("(select sum(current_stock) from sys_items_stock st where st.sys_items_id=i.id )", 'stock');
}
}else{
$data->select_expr("(select current_stock from sys_items_stock st where st.sys_items_id=i.id )", 'stock');
}
if (!empty(_post('type_of_product'))){
$data->where('i.type_of_product',_post('type_of_product'));
}
if (!empty(_post('category_id'))){
$data->where('i.category_id',_post('category_id'));
}
if (!empty($search)){
$data->where_like('i.description', "%$search%");
}
$d = $data->find_many();
// var_dump($d[0]);exit;
$valorFinal = 0;
$totalType=array();
if (sizeof($d) > 0) {
foreach ($d as $ds) {
if($ds['type_of_product']!=null){
$totalType[$ds['type_of_product']]=$ds['type_of_product'];
}
if($moduleFish){
if (!empty($crm_accounts_id)){
$ds['stock']=$ds['stock_in']-$ds['stock_out'];
}
}
$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>"
// ".($moduleFish?"<td onclick='goItem(" . $ds['id'] . ")'>" . $ds['account'] . "</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='9' style='text-align: center'>Nenhum produto encontrado!</td></tr>";
}
// $ret .= "<tr><td colspan='9' style='text-align: right'><strong>Valor Total " . $config['currency_code'] . " " . number_format($valorFinal, 2, $config['dec_point'], $config['thousands_sep']) . "</strong></td></tr>";
echo json_encode(array('table' => $ret,
"total_type"=>count($totalType),
'value' => $config['currency_code'] . " " . number_format($valorFinal, 2, $config['dec_point'], $config['thousands_sep'])));
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';
}