AnonSec Shell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/lrsys/public_html/lrsys_apps/dialogo/application/plugins/module_stock/controllers/stock.php
<?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>&nbsp;Imprimir etiquetas</a></li>
                                        <li><a href='?ng=module_stock/stock/item/" . $ds['id'] . "'><i class='fa fa-cog'></i>&nbsp;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'] . ")'>&nbsp;</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';
}
 

Anon7 - 2022
AnonSec Team