| 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/Events/ |
Upload File : |
<?php
namespace App\Events;
use DB;
use App\User;
use Sentinel;
use Notification;
use App\BasicInfo;
use App\Services\GeralService;
use App\Modules\Adega\Models\Adega;
use Illuminate\Support\Facades\Log;
use App\Services\ContaCorrenteService;
use App\Modules\AdegaVirada\Services\AdegaViradaService;
use App\Notifications\NotificacaoAdmin;
use App\Notifications\NotificacaoPedidoVenda;
use App\Modules\PedidoVenda\Models\PedidoVenda;
use App\Modules\ContaReceber\Models\ContaReceber;
use App\Modules\Confraria\Services\ConfrariaService;
use App\Modules\AdegaHasPedidoVenda\Models\AdegaHasPedidoVenda;
use App\Modules\PedidoVendaIntegracao\Models\PedidoVendaIntegracao;
use App\Modules\PedidoEntregaHasStatus\Models\PedidoEntregaHasStatus;
class PedidoVendaEvent
{
/**
* Listen to the User created event.
*
* @param User $user
* @return void
*/
public function created(PedidoVenda $pedidoVenda)
{
if($pedidoVenda->saldo_usado == 1){
ContaCorrenteService::atualizarConta($pedidoVenda, 'S');
}
$adegaAberta = Adega::where('id_cliente', $pedidoVenda->id_cliente)->whereRaw('confraria_id IS NULL')->where('status', 'A')->first();
if($pedidoVenda->confraria_id){
$adegaAberta = Adega::where('confraria_id', $pedidoVenda->confraria_id)->where('status', 'A')->first();
}
if (!$adegaAberta) {
$adegaAberta = new Adega();
$adegaAberta->data_abertura = date('Y-m-d H:i:s');
$adegaAberta->status = 'A';
$adegaAberta->id_cliente = $pedidoVenda->id_cliente;
if($pedidoVenda->confraria_id){
$adegaAberta->confraria_id = $pedidoVenda->confraria_id;
}
$adegaAberta->save();
}
$adegaHasPedidoVenda = new AdegaHasPedidoVenda();
$adegaHasPedidoVenda->id_pedido_venda = $pedidoVenda->id;
$adegaHasPedidoVenda->id_adega = $adegaAberta->id;
$adegaHasPedidoVenda->save();
if(empty($pedidoVenda->empresa_id) && !empty($pedidoVenda->cliente->empresa_id)){
$pedidoVenda->empresa_id = $pedidoVenda->cliente->empresa_id;
$pedidoVenda->save();
}
if(empty($pedidoVenda->uf_cliente) && $pedidoVenda->cliente->enderecoPrincipal && $pedidoVenda->cliente->enderecoPrincipal->estado){
$pedidoVenda->uf_cliente = $pedidoVenda->cliente->enderecoPrincipal->estado->sigla;
$pedidoVenda->save();
}
/* Notificacao * /
$user = User::find($pedidoVenda->cliente->user_id);
//Notification::send($pedidoVenda->cliente, new NotificacaoPedidoVenda($pedidoVenda, url('admin/pedido-venda/edit/'.$pedidoVenda->slug)));
Notification::send($user, new NotificacaoPedidoVenda($pedidoVenda, url('admin/pedido-venda/edit/'.$pedidoVenda->slug)));
*/
//$admins = User::join('sis_role_users', 'sis_users.id', '=', 'sis_role_users.user_id')->where('sis_role_users.role_id', 1)->get();
}
/**
* Listen to the User deleting event.
*
* @param User $user
* @return void
*/
public function deleting(PedidoVenda $pedidoVenda)
{
//
}
/**
* Listen to the User created event.
*
* @param User $user
* @return void
*/
public function updated(PedidoVenda $pedidoVenda)
{
}
/**
* Listen to the User deleting event.
*
* @param User $user
* @return void
*/
public function updating(PedidoVenda $pedidoVenda)
{
//
}
/**
* Listen to the User created event.
*
* @param User $user
* @return void
*/
public function saved(PedidoVenda $pedidoVenda)
{
$old = $pedidoVenda->getOriginal();
GeralService::checkBlockCadastroCliente($pedidoVenda);
if($pedidoVenda->id_status_pedido_venda == 9){ //Pedidos Pré-Venda
//Contas a Receber
$condicaoComercial = $pedidoVenda->condicaoComercial;
$checkContasPedido = ContaReceber::where('id_pedido_venda', $pedidoVenda->id)->count();
Log::info('checkContasPedido: ' . $checkContasPedido);
if($condicaoComercial && $checkContasPedido == 0){
$numeroParcelas = ($condicaoComercial->numero_dias / $condicaoComercial->frequencia);
$valorParcela = $pedidoVenda->total / $numeroParcelas;
$dataParcela = date('Y-m-d');
$count = 1;
for($i = $numeroParcelas; $i > 0; $i--){
$dataParcela = date('Y-m-d',strtotime($dataParcela.' +'.$condicaoComercial->frequencia.' days'));
$contaReceber = new ContaReceber();
$contaReceber->empresa_id = $pedidoVenda->cliente->empresa_id;
$contaReceber->unidade_negocio_id = (!empty($pedidoVenda->unidade_negocio_id) ? $pedidoVenda->unidade_negocio_id : 1);
$contaReceber->nome = $pedidoVenda->nm_referencia;
$contaReceber->valor_previsto = $valorParcela;
$contaReceber->data_prevista = $dataParcela; //revisar
$contaReceber->numero_parcela = $count;
$contaReceber->id_pedido_venda = $pedidoVenda->id;
$contaReceber->id_tipo_conta_receber = 1;
$contaReceber->id_centro_financeiro = 1;
$contaReceber->id_forma_pagamento = (!empty($pedidoVenda->transacao_id) ? 5 : 2); //5 => Cartão / 2 - Depósito
$contaReceber->status = 'A';
$contaReceber->transacao_id = $pedidoVenda->transacao_id;
$contaReceber->id_cliente = $pedidoVenda->id_cliente;
$contaReceber->save();
$count++;
}
}
}elseif($pedidoVenda->id_status_pedido_venda == 2 && (empty($old) || $old['id_status_pedido_venda'] != 2)){
$idPedidoVenda = $pedidoVenda->id;
//Armazena para Integração, menos frete
if($pedidoVenda->frete != 1){
DB::insert('insert into pedido_venda_integracao (id_pedido_venda, data_cadastro) values (?, ?)', [$pedidoVenda->id, date('Y-m-d H:i:s')]);
$basicInfo = BasicInfo::find(1);
$canalCashback = ($basicInfo->canalCashback ? $basicInfo->canalCashback : false);
$confraria = ConfrariaService::buscarConfrariaUsuarioLogado($pedidoVenda->id_cliente);
if($pedidoVenda->saldo_usado == 0 && $confraria && $basicInfo->validade_cashback_confraria > 0 && $confraria->qtde_membros >= ($basicInfo->min_membros_confraria+1)){
ContaCorrenteService::atualizarConta($pedidoVenda);
Log::info('ContaCorrenteService::atualizarConta($pedidoVenda) => confraria');
}elseif($pedidoVenda->saldo_usado == 0 && $canalCashback && $pedidoVenda->data_fechamento >= $canalCashback->data_inicio && $pedidoVenda->data_fechamento <= $canalCashback->data_fim){
ContaCorrenteService::atualizarConta($pedidoVenda, 'E', TRUE, TRUE);
Log::info('(1) outlet_cashback ContaCorrenteService::atualizarConta(tipoMovimento:E, forceCashback: TRUE, forceCanal: TRUE) ' . json_encode($pedidoVenda));
}elseif($pedidoVenda->saldo_usado == 0 && $basicInfo->data_fim_geracao_cashback > date('Y-m-d H:i:s')){
ContaCorrenteService::atualizarConta($pedidoVenda);
Log::info('(2) outlet_cashback ContaCorrenteService::atualizarConta() ' . json_encode($pedidoVenda));
}
$adegaVirada = AdegaViradaService::buscarAdegaVirada();
$cliente = $pedidoVenda->cliente;
//Verifica Adega da Virada
// if($adegaVirada && date('Y-m-d Y:i:s') >= $adegaVirada->data_ativacao && $cliente->adegaViradaParticipanteIndicacao && ){
if($adegaVirada && date('Y-m-d Y:i:s') >= $adegaVirada->data_ativacao && !empty($pedidoVenda->id_adega_virada_indicacao) && empty($cliente->adegaViradaParticipanteIndicacao->adega_virada_cupom_id)){
AdegaViradaService::incluirPedidoIndicacao($pedidoVenda, $adegaVirada);
// AdegaViradaService::incluirPedidoCliente($pedidoVenda, $adegaVirada);
}
}
//Contas a Receber
$condicaoComercial = $pedidoVenda->condicaoComercial;
if($condicaoComercial){
$numeroParcelas = ($condicaoComercial->numero_dias / $condicaoComercial->frequencia);
$valorParcela = $pedidoVenda->total / $numeroParcelas;
$dataParcela = date('Y-m-d');
$count = 1;
for($i = $numeroParcelas; $i > 0; $i--){
$dataParcela = date('Y-m-d',strtotime($dataParcela.' +'.$condicaoComercial->frequencia.' days'));
$contaReceber = new ContaReceber();
$contaReceber->empresa_id = $pedidoVenda->cliente->empresa_id;
$contaReceber->unidade_negocio_id = (!empty($pedidoVenda->unidade_negocio_id) ? $pedidoVenda->unidade_negocio_id : 1);
$contaReceber->nome = $pedidoVenda->nm_referencia;
$contaReceber->valor_previsto = $valorParcela;
$contaReceber->data_prevista = $dataParcela; //revisar
$contaReceber->numero_parcela = $count;
$contaReceber->id_pedido_venda = $pedidoVenda->id;
$contaReceber->id_tipo_conta_receber = 1;
$contaReceber->id_centro_financeiro = 1;
$contaReceber->id_forma_pagamento = (!empty($pedidoVenda->transacao_id) ? 5 : 2); //5 => Cartão / 2 - Depósito
$contaReceber->status = 'A';
$contaReceber->transacao_id = $pedidoVenda->transacao_id;
$contaReceber->id_cliente = $pedidoVenda->id_cliente;
$contaReceber->save();
$count++;
}
}
//Adega
$adegaAberta = Adega::where('id_cliente', $pedidoVenda->id_cliente)->whereRaw('confraria_id IS NULL')->where('status', 'A')->first();
if($pedidoVenda->confraria_id){
$adegaAberta = Adega::where('confraria_id', $pedidoVenda->confraria_id)->where('status', 'A')->first();
}
if (!$adegaAberta) {
$adegaAberta = new Adega();
$adegaAberta->data_abertura = date('Y-m-d H:i:s');
$adegaAberta->status = 'A';
$adegaAberta->id_cliente = $pedidoVenda->id_cliente;
if($pedidoVenda->confraria_id){
$adegaAberta->confraria_id = $pedidoVenda->confraria_id;
}
$adegaAberta->save();
}
if (!$pedidoVenda->frete) {
GeralService::recalcularAdega($pedidoVenda->id_cliente, $pedidoVenda->id, $adegaAberta->id, $pedidoVenda->confraria_id);
}
}elseif(!$pedidoVenda->frete && $pedidoVenda->id_status_pedido_venda == 4 && (empty($old) || $old['id_status_pedido_venda'] != 4)){
//Pedido Estornado
GeralService::recalcularAdega($pedidoVenda->id_cliente, $pedidoVenda->id, FALSE, $pedidoVenda->confraria_id);
}elseif(!$pedidoVenda->frete && $pedidoVenda->id_status_pedido_venda == 5 && (empty($old) || $old['id_status_pedido_venda'] != 5)){
//Pedido Cancelado
GeralService::recalcularAdega($pedidoVenda->id_cliente, $pedidoVenda->id, FALSE, $pedidoVenda->confraria_id);
GeralService::recalcularCashback($pedidoVenda);
}
//Atualiza PedidoEntrega:
if($pedidoVenda->pedidoEntrega && $pedidoVenda->id_status_pedido_venda == 2){
$oldStatus = PedidoEntregaHasStatus::where('id_pedido_entrega', $pedidoVenda->pedidoEntrega->id)->where('id_pedido_entrega_status', 2)->first();
if(!$oldStatus){
$user = Sentinel::getUser();
$user_id = (!$user) ? 1 : $user->id;
$novoStatus = new PedidoEntregaHasStatus();
$novoStatus->id_pedido_entrega_status = 2;
$novoStatus->id_pedido_entrega = $pedidoVenda->pedidoEntrega->id;
$novoStatus->data = date('Y-m-d H:i:s');
$novoStatus->notificar_cliente = 0;
$novoStatus->user_id = $user_id;
$novoStatus->observacao = 'Aprovado por identificação pagamento frete';
$novoStatus->save();
}
}
}
/**
* Listen to the User deleting event.
*
* @param User $user
* @return void
*/
public function saving(PedidoVenda $pedidoVenda)
{
//
}
}