| 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/Events/ |
Upload File : |
<?php
namespace App\Events;
use App\Modules\Produto\Models\Produto;
use App\Modules\EstoqueLocal\Models\EstoqueLocal;
use App\Modules\Estoque\Models\Estoque;
use App\Modules\ProdutoErp\Models\ProdutoErp;
use App\Modules\Empresa\Models\Empresa;
use App\Modules\ProdutoListaPreco\Models\ProdutoListaPreco;
use App\Services\ErpService;
use App\Services\GeralService;
use Illuminate\Support\Facades\Log;
use DB;
class ProdutoEvent
{
/**
* Listen to the Produto created event.
*
* @param Produto $Produto
* @return void
*/
public function created(Produto $Produto)
{
Log::info('ProdutoEvent::created');
$empresas = GeralService::buscarEmpresasIntegracao();
foreach ($empresas as $empresa) {
$obj = new \stdClass();
$obj->empresa_id = $empresa->id;
$obj->produto_id = $Produto->id;
$obj->unidade_negocio_id = $Produto->unidade_negocio_id;
ProdutoErp::saveErp($obj, FALSE);
Estoque::saveEstoque($obj, FALSE);
}
//Gatilho Listar Compras
if(substr($Produto->nome, 0, 5) != 'CLONE' && substr($Produto->sku, 0, 5) != 'CLONE'){
$Produto->listar_compras = 1;
$Produto->save();
$sql = "UPDATE sis_basic_info SET sequencia_sku = sequencia_sku+1 WHERE id = 1";
DB::update($sql);
}
Log::info('ProdutoEvent::created');
}
/**
* Listen to the Produto deleting event.
*
* @param Produto $Produto
* @return void
*/
public function deleting(Produto $Produto)
{
//
}
/**
* Listen to the Produto created event.
*
* @param Produto $Produto
* @return void
*/
public function updated(Produto $Produto)
{
}
/**
* Listen to the Produto deleting event.
*
* @param Produto $Produto
* @return void
*/
public function updating(Produto $Produto)
{
//
}
/**
* Listen to the Produto created event.
*
* @param Produto $Produto
* @return void
*/
public function saved(Produto $Produto)
{
$old = $Produto->getOriginal();
if(isset($old['localizador']) && $old['localizador'] != $Produto->localizador){
$EstoqueLocal = new EstoqueLocal();
$EstoqueLocal->produto_id = $Produto->id;
$EstoqueLocal->data_movimentacao = date('Y-m-d H:i:s');
$EstoqueLocal->local_antigo = $old['localizador'];
$EstoqueLocal->local_novo = $Produto->localizador;
$EstoqueLocal->save();
Log::info('alterarProduto Event');
}
if(empty($Produto->bkp_apresentacao_vinumday) && !empty($Produto->apresentacao_vinumday)){
$Produto->bkp_apresentacao_vinumday = $Produto->apresentacao_vinumday;
$Produto->save();
}
$fieldsObserveChange = ['sku', 'preco_custo','nome','peso_bruto','peso_liquido','unidade_de_medida','situacao'];
$changeProduto = FALSE;
$changeSku = FALSE;
foreach ($fieldsObserveChange as $field):
if(isset($old[$field]) && $old[$field] != $Produto->$field):
$changeProduto = TRUE;
if($field == 'sku'):
$changeSku = TRUE;
endif;
break;
endif;
endforeach;
//MUDANÇA SKU
if($changeSku && substr($old['sku'], 0, 5) == 'CLONE' && $Produto->sincronizar_tiny == 0){
$info = \App\BasicInfo::find(1);
$skuInit = $info->mascara_sku;
$result = explode($skuInit, $Produto->sku);
$sequencia_sku = $result[1];
$sequencia_sku = ($sequencia_sku > $info->sequencia_sku ? $sequencia_sku : ($info->sequencia_sku + 1));
$sql = "UPDATE sis_basic_info SET sequencia_sku = {$sequencia_sku} WHERE id = 1";
Log::info("{$Produto->sku} => {$sql}");
DB::update($sql);
}
//Verifica Alterações de Preço
$fieldsPrecoChange = ['preco_custo','preco_de_venda','preco_mercado','custo_efetivo'];
$changePreco = FALSE;
foreach ($fieldsPrecoChange as $field):
if(isset($old[$field]) && $old[$field] != $Produto->$field):
$changePreco = TRUE;
break;
endif;
endforeach;
//Atualiza Lista Preço x Produto
if($changePreco && substr($Produto->nome, 0, 5) != 'CLONE' && substr($Produto->sku, 0, 5) != 'CLONE'){
Log::info("Alteração Preço Produto {$Produto->id}: Preço Custo: {$Produto->preco_custo} | Preço Mercado: {$Produto->preco_mercado} | Preço de Venda: {$Produto->preco_de_venda}");
$ProdutoListaPreco = new ProdutoListaPreco;
$ProdutoListaPreco->produto_id = $Produto->id;
$ProdutoListaPreco->preco_custo = $Produto->preco_custo;
$ProdutoListaPreco->preco_mercado = $Produto->preco_mercado;
$ProdutoListaPreco->preco_venda = $Produto->preco_de_venda;
$ProdutoListaPreco->custo_efetivo = $Produto->custo_efetivo;
$ProdutoListaPreco->origem = !empty($Produto->origem_preco) ? $Produto->origem_preco : 'produto';
$ProdutoListaPreco->save();
}
if($Produto->sincronizar_tiny == 0 && substr($Produto->nome, 0, 5) != 'CLONE' && substr($Produto->sku, 0, 5) != 'CLONE'){
$Produto->sincronizar_tiny = 1;
$Produto->save();
Log::info('sincronizar_tiny');
}elseif($changeProduto){
Log::info('alterarProduto Event');
ErpService::alterarProduto($Produto);
}
}
/**
* Listen to the Produto deleting event.
*
* @param Produto $Produto
* @return void
*/
public function saving(Produto $Produto)
{
//
}
}