| Server IP : 54.94.228.101 / 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/Services/ |
Upload File : |
<?php
namespace App\Services;
use App\Modules\Adega\Models\Adega;
use App\Modules\Cadastro\Models\Cadastro;
use App\Modules\PedidoVenda\Models\PedidoVenda;
use App\Modules\PedidoEntrega\Models\PedidoEntrega;
use App\Modules\PedidoEntregaHasStatus\Models\PedidoEntregaHasStatus;
use Illuminate\Support\Facades\Log;
use Exception;
use DB;
class MarketplaceService {
public static function listaPedidos($request, $block = FALSE){
if($request->input('situacao_adega') == 'A'){
$query = PedidoVenda::select(DB::raw("
pedido_venda.uf_cliente AS EstadoSigla,
sum(pedido_venda_has_produto.quantidade) as Qtd,
sum(pedido_venda_has_produto.quantidade*produto.preco_custo) as Valor,
count(DISTINCT pedido_venda.id_cliente) as Clientes"
))
->join('pedido_venda_has_produto', 'pedido_venda_has_produto.id_pedido_venda', '=', 'pedido_venda.id')
->join('produto', 'produto.id', '=', 'pedido_venda_has_produto.id_produto')
->join('adega_has_pedido_venda', 'adega_has_pedido_venda.id_pedido_venda', '=', 'pedido_venda.id')
->join('adega', 'adega.id', '=', 'adega_has_pedido_venda.id_adega')
->where('pedido_venda.empresa_id', $request->input('empresa_id'))
->where('adega.status', $request->input('situacao_adega'))
->whereIn('pedido_venda.id_status_pedido_venda', [1,2,9])
->whereRaw('pedido_venda.uf_cliente IS NOT NULL');
if($request->input('estado_sigla')){
$query->where('pedido_venda.uf_cliente', $request->input('estado_sigla'));
}
$pedidos = $query->groupBy('pedido_venda.uf_cliente')->orderBy('Valor', 'DESC')->get();
}elseif($request->input('situacao_adega') == 'S'){
$query = Cadastro::select(DB::raw("
estado.sigla AS EstadoSigla,
0 as Qtd,
0 as Valor,
count(DISTINCT cadastro_endereco.cadastro_id) as Clientes"
))
->join('cadastro_endereco', 'cadastro_endereco.cadastro_id', '=', 'cadastro.id')
->join('estado', 'estado.id', '=', 'cadastro_endereco.estado_id')
->where('cadastro.empresa_id', $request->input('empresa_id'))
->whereRaw('estado.sigla IS NOT NULL');
if($request->input('estado_sigla')){
$query->where('estado.sigla', $request->input('estado_sigla'));
}
$pedidos = $query->groupBy('estado.sigla')->orderBy('Clientes', 'DESC')->get();
}else{
$query = Adega::select(DB::raw("
estado.sigla AS EstadoSigla,
sum(adega.quantidade_produtos) AS Qtd,
sum(adega.valor_total) AS Valor,
count(DISTINCT adega.id_cliente) AS Clientes"
))
->join('pedido_entrega', 'pedido_entrega.id_adega', '=', 'adega.id')
->join('cadastro', 'cadastro.id', '=', 'adega.id_cliente')
->join('cadastro_endereco', 'cadastro_endereco.id', '=', 'pedido_entrega.id_cadastro_endereco')
->join('estado', 'estado.id', '=', 'cadastro_endereco.estado_id')
->where('cadastro.empresa_id', $request->input('empresa_id'))
->where('adega.status', $request->input('situacao_adega'));
if($request->input('estado_sigla')){
$query->where('estado.sigla', $request->input('estado_sigla'));
}
if($block){
$query->whereRaw('pedido_entrega.id_pedido_entrega_status NOT IN (6,7)');
}
$pedidos = $query->groupBy('estado.sigla')->orderBy('Valor', 'DESC')->get();
if($block){
$bloqueados = [];
foreach ($pedidos as $bloqueado) {
$bloqueados[$bloqueado->EstadoSigla] = $bloqueado->Clientes;
}
$pedidos = $bloqueados;
}
}
return $pedidos;
}
public static function listaClientesPedidos($request, $block = FALSE){
if($request->input('situacao_adega') == 'A'){
$query = PedidoVenda::select(DB::raw("
pedido_venda.id_cliente,
sum(pedido_venda_has_produto.quantidade) as Qtd,
count(pedido_venda.id) as Pedidos,
sum(pedido_venda_has_produto.quantidade*produto.preco_custo) as Valor"
))
->join('pedido_venda_has_produto', 'pedido_venda_has_produto.id_pedido_venda', '=', 'pedido_venda.id')
->join('produto', 'produto.id', '=', 'pedido_venda_has_produto.id_produto')
->join('adega_has_pedido_venda', 'adega_has_pedido_venda.id_pedido_venda', '=', 'pedido_venda.id')
->join('adega', 'adega.id', '=', 'adega_has_pedido_venda.id_adega')
->where('pedido_venda.empresa_id', $request->input('origem'))
->where('pedido_venda.uf_cliente', $request->input('estado_sigla'))
->where('adega.status', $request->input('situacao_adega'))
->whereIn('pedido_venda.id_status_pedido_venda', [1,2,9]);
$clientes = $query->groupBy('pedido_venda.id_cliente')->orderBy('Valor', 'DESC')->get();
}elseif($request->input('situacao_adega') == 'S'){
$query = Cadastro::select(DB::raw("
cadastro_endereco.cadastro_id as id_cliente,
0 as Qtd,
0 as Pedidos,
0 as Valor"
))
->join('cadastro_endereco', 'cadastro_endereco.cadastro_id', '=', 'cadastro.id')
->join('estado', 'estado.id', '=', 'cadastro_endereco.estado_id')
->where('cadastro.empresa_id', $request->input('origem'))
->whereRaw('estado.sigla IS NOT NULL');
if($request->input('estado_sigla')){
$query->where('estado.sigla', $request->input('estado_sigla'));
}
$clientes = $query->groupBy('cadastro_endereco.cadastro_id')->orderBy('Valor', 'DESC')->get();
}else{
$query = Adega::select(DB::raw("
adega.id_cliente,
sum(adega.quantidade_produtos) AS Qtd,
sum(adega.valor_total) AS Valor,
sum(adega.quantidade_pedidos) AS Pedidos"
))
->join('pedido_entrega', 'pedido_entrega.id_adega', '=', 'adega.id')
->join('cadastro', 'cadastro.id', '=', 'adega.id_cliente')
->join('cadastro_endereco', 'cadastro_endereco.id', '=', 'pedido_entrega.id_cadastro_endereco')
->join('estado', 'estado.id', '=', 'cadastro_endereco.estado_id')
->where('cadastro.empresa_id', $request->input('origem'))
->where('estado.sigla', $request->input('estado_sigla'))
->where('adega.status', $request->input('situacao_adega'));
if($block){
$query->whereRaw('pedido_entrega.id_pedido_entrega_status NOT IN (6,7)');
}
$clientes = $query->groupBy('adega.id_cliente')->orderBy('Valor', 'DESC')->get();
if($block){
$bloqueados = [];
foreach ($clientes as $bloqueado) {
$bloqueados[$bloqueado->id_cliente] = $bloqueado->id_cliente;
}
$clientes = $bloqueados;
}
}
return $clientes;
}
public static function atualizarEntregasEntregues(){
$dateUpdate = date('Y-m-d', strtotime("-60 days",strtotime(date('Y-m-d'))));
$pedidos = PedidoEntrega::select('id')->whereNotIn('id_pedido_entrega_status', [6,7])->where('data_solicitacao', '<=', $dateUpdate)
->whereRaw('EXISTS (SELECT 1 FROM pedido_entrega_has_status pehs WHERE pehs.id_pedido_entrega = pedido_entrega.id AND pehs.id_pedido_entrega_status IN (5,8))')
->get();
$historicos = [];
foreach ($pedidos as $pedido) {
$historico = [
'data' => date('Y-m-d H:i:s'),
'observacao' => 'Pedido Entregue',
'id_pedido_entrega' => $pedido->id,
'id_pedido_entrega_status' => 6,
'notificar_cliente' => 0,
'user_id' => 1,
'chave_rastreamento' => '1',
];
$historicos[] = $historico;
if(count($historicos) == 100){
PedidoEntregaHasStatus::insert($historicos);
$historicos = [];
}
}
if(count($historicos) > 0){
PedidoEntregaHasStatus::insert($historicos);
}
$sql = "UPDATE pedido_entrega SET id_pedido_entrega_status = 6, rastreamento = 0 WHERE id_pedido_entrega_status NOT IN (6,7) AND data_solicitacao <= '{$dateUpdate}' AND EXISTS (SELECT 1 FROM pedido_entrega_has_status pehs WHERE pehs.id_pedido_entrega = pedido_entrega.id AND pehs.id_pedido_entrega_status IN (5,8))";
Log::info($sql);
DB::update($sql);
return true;
}
}