403Webshell
Server IP : 54.233.248.239  /  Your IP : 172.28.1.13
Web Server : Apache
System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/vinumday2_0/app/Console/Commands/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/vinumday2_0/app/Console/Commands/AtualizaSaldoProdutosOld.php
<?php

namespace App\Console\Commands;

use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Helper\ProgressBar;

use Illuminate\Console\Command;
use App\Modules\Produto\Models\Produto;
use App\Modules\Empresa\Models\Empresa;
use App\Modules\PedidoVendaHasProduto\Models\PedidoVendaHasProduto;
use App\Modules\PedidoEntrega\Models\PedidoEntrega;
use App\Services\GeralService;

class AtualizaSaldoProdutos extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'atualiza_saldo_produtos';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Atualização Automática Saldo Produtos';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->output = new ConsoleOutput;
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $date = date('Y-m-d');

        $this->info("\n" . date('d/m/Y H:i:s') . " - START GENERAL");

        /*if(date('H') == '00' && date('i') < 30){

            $this->getAtualizaLista();

            $this->atualizaSaldoProdutosVenda($date);

            $this->atualizaSaldoProdutosEntrega($date);

        }*/
        
        //Atualiza Todos
        $date = date('Y-m-d', strtotime("-4 day",strtotime(date('Y-m-d'))));
        $this->atualizaSaldoProdutos($date, 0);
        
        $this->info("\n" . date('d/m/Y H:i:s') . " - DONE GENERAL");
    }
    
    public function atualizaSaldoProdutos($data, $id_produto){

        $limit = (date('H') < 8 ? 30 : 10);
        
        $query = Produto::where('situacao', '=', 'A')->where('ultima_atualizacao_saldo', '<', $data);
        $query = $query->whereRaw('EXISTS (SELECT 1 FROM produto_erp WHERE produto_erp.produto_id = produto.id AND produto_erp.id_tiny IS NOT NULL)');
        if($id_produto <> 0){
            $query = $query->where('id', '<', $id_produto);
        }
        
        $produtos = $query->orderBy('id','desc')->limit($limit)->get();

        $count    = $produtos->count();
        if($count > 0){
            $this->info(date('d/m/Y H:i:s') . " - iniciado atualização saldos produtos - {$count}");
            $progressBar = new ProgressBar($this->output, $count);

            foreach ($produtos as $produto){
                $this->info("\n" . $produto->id);
                $produto = GeralService::atualizarSaldoProduto($produto);
                $progressBar->advance();
            }

            $progressBar->finish();
            $this->info("\n" . date('d/m/Y H:i:s') . " - DONE");

        }else{
            $this->info("\n" . date('d/m/Y H:i:s') . " - FINISHED");
        }

    }

    public function getAtualizaLista(){

        $date     = date('d/m/Y',strtotime("-1 day"));
        $Empresas = Empresa::all();
        $this->info(date('d/m/Y H:i:s') . " - iniciado getAtualizaLista()");

        foreach ($Empresas as $empresa) {

            $token = $empresa->api_key_tiny_erp;

            $url            = 'https://api.tiny.com.br/api2/lista.atualizacoes.estoque';
            $content        = "token=$token&dataAlteracao={$date}&formato=json";
            $resultPesquisa = json_decode(GeralService::enviarREST($url, $content));

            if($resultPesquisa->retorno->status_processamento == 3){
                $produtos = $resultPesquisa->retorno->produtos;
                foreach ($produtos as $item) {

                    $data_atualizacao = date('Y-m-d H:i:s');
                    $produto          = Produto::where('sku', '=', $item->produto->codigo)->first();

                    if(isset($produto->estoque)){
                        foreach ($produto->estoque as $Estoque){
                            if($Estoque->empresa_id != $empresa->id){
                                continue;
                            }
                            $Estoque->quantidade = $item->produto->saldo;
                            $Estoque->data_ultima_atualizacao = $data_atualizacao;
                            $Estoque->save();
                        }
                    }

                    //Registra Disponibilidade no Produto
                    $estoque = GeralService::getEstoqueProduto($produto);
                    $produto->disponibilidade = $estoque['disponibilidade'];
                    $produto->ultima_atualizacao_saldo = $data_atualizacao;
                    $produto->save();
                }
            }
        }
    }

    public function atualizaSaldoProdutosVenda($data, $id_produto=0){

        $data_inicio = date('Y-m-d',strtotime("-5 day"));
        
        $query = PedidoVendaHasProduto::select('pd.id')
        ->join('pedido_venda AS pv','pedido_venda_has_produto.id_pedido_venda','=','pv.id')
        ->join('produto AS pd','pedido_venda_has_produto.id_produto','=','pd.id')
        ->whereBetween('pv.data_fechamento', ["{$data_inicio} 00:00:00", "{$data} 23:59:59"]);
        if($id_produto <> 0){
            $query = $query->where('pd.id', '<', $id_produto);
        }

        $items = $query->groupBy('pd.id')->orderBy('pd.id','desc')->limit(10)->get();

        $count       = $items->count();
        $this->info(date('d/m/Y H:i:s') . " - iniciado atualização saldos produtos - {$count}");
        $progressBar = new ProgressBar($this->output, $count);

        if($count > 0){
            foreach ($items as $item){
                $produto = Produto::find($item->id);
                $this->info("\n" . $produto->id);
                $produto = GeralService::atualizarSaldoProduto($produto);
                $progressBar->advance();
            }

            $progressBar->finish();
            $this->info("\n" . date('d/m/Y H:i:s') . " - DONE");

            $this->atualizaSaldoProdutosVenda($data, $produto->id);

        }else{
            $this->info("\n" . date('d/m/Y H:i:s') . " - DONE");
        }
    }

    public function atualizaSaldoProdutosEntrega($data, $id_produto=0){

        $data_inicio = date('Y-m-d',strtotime("-5 day"));
        
        $query = PedidoEntrega::select('pd.id')
        ->join('adega AS a','pedido_entrega.id_adega','=','a.id')
        ->join('adega_has_pedido_venda AS ap','ap.id_adega','=','a.id')
        ->join('pedido_venda AS pv','ap.id_pedido_venda','=','pv.id')
        ->join('pedido_venda_has_produto AS pi','pi.id_pedido_venda','=','pv.id')
        ->join('produto AS pd','pi.id_produto','=','pd.id')
        ->whereBetween('pedido_entrega.data_solicitacao', ["{$data_inicio} 00:00:00", "{$data} 23:59:59"]);
        if($id_produto <> 0){
            $query = $query->where('pd.id', '<', $id_produto);
        }

        $items = $query->groupBy('pd.id')->orderBy('pd.id','desc')->limit(1)->get();

        $count       = $items->count();
        $this->info(date('d/m/Y H:i:s') . " - iniciado atualização saldos produtos - {$count}");
        $progressBar = new ProgressBar($this->output, $count);

        if($count > 0){
            foreach ($items as $item){
                $produto = Produto::find($item->id);
                $this->info("\n" . $produto->id);
                $produto = GeralService::atualizarSaldoProduto($produto);
                $progressBar->advance();
            }

            $progressBar->finish();
            $this->info("\n" . date('d/m/Y H:i:s') . " - DONE");

            $this->atualizaSaldoProdutosEntrega($data, $produto->id);

        }else{
            $this->info("\n" . date('d/m/Y H:i:s') . " - DONE");
        }
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit