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/AtualizaStatusPedidoTiny.php
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Foundation\Inspiring;
use App\Modules\PedidoEntrega\Models\PedidoEntrega;
use App\Modules\Empresa\Models\Empresa;
use App\Modules\PedidoEntregaStatus\Models\PedidoEntregaStatus;
use App\Modules\PedidoEntregaHasStatus\Models\PedidoEntregaHasStatus;
use App\Services\GeralService;
use App\Services\PedidoEntregaService;
use App\Services\LogService as Log;

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

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Realiza as atualizações de status dos pedidos de entrega conforme são informados no Tiny.';

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        date_default_timezone_set('America/Sao_Paulo');

        $empresas = GeralService::buscarEmpresasIntegracao();

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

        foreach ($empresas as $empresa) {

            if(empty($empresa->api_key_tiny_erp)){
                continue;
            }
            
            $token = $empresa->api_key_tiny_erp;

            $date  = date('d/m/Y');

            //VERIFICAR PAGINAÇÃO RETORNO REGISTROS

            $url = 'https://api.tiny.com.br/api2/pedidos.pesquisa.php';
            $content = "token=$token&sort=DESC&dataInicialOcorrencia={$date}&dataFinalOcorrencia={$date}&formato=json";
            
            $resultPedido = json_decode(GeralService::enviarREST($url, $content));

            if($resultPedido->retorno->status_processamento == 2){ //Erro, sem registros
                Log::info('[AtualizaStatusPedidoTiny] => Erro: sem registros');
                continue;
            }

            $this->info(date('d/m/Y H:i:s') . " Status Processamento: {$resultPedido->retorno->status_processamento}");
            $this->info(date('d/m/Y H:i:s') . " Empresa: {$empresa->id}");

            if(isset($resultPedido->retorno->pedidos)){

                foreach($resultPedido->retorno->pedidos as $objPedido) {

                    $pedidoEntrega = PedidoEntrega::where('id', $objPedido->pedido->numero_ecommerce)->first();

                    if ($pedidoEntrega) {
                        
                        $pedidoEntregaStatus = PedidoEntregaStatus::where('nome_erp', $objPedido->pedido->situacao)->first();

                        if(!$pedidoEntregaStatus){
                            $pedidoEntregaStatus = new PedidoEntregaStatus;
                            $pedidoEntregaStatus->nome     = $objPedido->pedido->situacao;
                            $pedidoEntregaStatus->cor      = 'black';
                            $pedidoEntregaStatus->nome_erp = $objPedido->pedido->situacao;
                            $pedidoEntregaStatus->notificar_cliente = 0;
                            
                            if(!$pedidoEntregaStatus->save()){
                                Log::info("[AtualizaStatusPedidoTiny] Pedido {$pedidoEntrega->id}. Erro ao salvar Status: {$objPedido->pedido->situacao}");
                            }
                        }

                        if ($pedidoEntregaStatus){

                            $pehsExistente = PedidoEntregaHasStatus::where('id_pedido_entrega', $pedidoEntrega->id)->orderBy('data', 'DESC')->first();
                            $pehsException = [11,12]; //Retido/Reentrega

                            if (($pehsExistente && $pehsExistente->id_pedido_entrega_status != $pedidoEntregaStatus->id && !in_array($pehsExistente->id_pedido_entrega_status, $pehsException)) || (!$pehsExistente) ) {

                                $pehs                           = new PedidoEntregaHasStatus();
                                $pehs->data                     = date('Y-m-d H:i:s');
                                $pehs->observacao               = PedidoEntregaService::getFraseObservacao($pedidoEntrega, $pedidoEntregaStatus, $pehs->data);
                                $pehs->id_pedido_entrega        = $pedidoEntrega->id;
                                $pehs->id_pedido_entrega_status = $pedidoEntregaStatus->id;
                                $pehs->notificar_cliente        = $pedidoEntregaStatus->notificar_cliente;

                                if(!$pehs->save()){
                                    Log::info("[AtualizaStatusPedidoTiny] Pedido {$pedidoEntrega->id}. Erro ao atualizar Pedido => " . json_encode($pehs));
                                }else{
                                    Log::info("[AtualizaStatusPedidoTiny] Pedido {$pedidoEntrega->id}. Atualizado");
                                }

                            }else{
                                Log::info("[AtualizaStatusPedidoTiny] Pedido {$pedidoEntrega->id} não alterado: Status => {$pedidoEntregaStatus->id}. {$pedidoEntregaStatus->nome}");
                            }

                        }else{
                            Log::info("[AtualizaStatusPedidoTiny] Pedido {$pedidoEntrega->id}. Status não localizado: {$objPedido->pedido->situacao}");
                        }

                    }else{
                        Log::info("[AtualizaStatusPedidoTiny] Pedido {$objPedido->pedido->numero_ecommerce}. não localizado");
                    }

                }

            }else{
                Log::info('[AtualizaStatusPedidoTiny] => Nenhum pedido para processar!');
                $this->info(date('d/m/Y H:i:s') . " Nenhum pedido para processar!");
            }

        }

        $this->info(date('d/m/Y H:i:s') . " - FINISH AtualizaStatusPedidoTiny");

    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit