| 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/Services/ |
Upload File : |
<?php
namespace App\Services;
use DB;
use Sentinel;
use App\Modules\Empresa\Models\Empresa;
use App\Modules\Produto\Models\Produto;
use App\Modules\ProdutoErp\Models\ProdutoErp;
use App\Modules\QuantidadeReserva\Models\QuantidadeReserva;
use App\Modules\ContaReceberLog\Models\ContaReceberLog;
use Illuminate\Support\Facades\Log;
use App\Services\GeralService;
use Session;
use Exception;
class ErpService {
public static function getStatusErro(){
try {
$status = [
1 => 'token não informado',
2 => 'token inválido ou não encontrado',
3 => 'XML mal formado ou com erros',
4 => 'Erro de processamento de XML',
5 => 'API bloqueada ou sem acesso',
6 => 'API bloqueada, limite excedido',
7 => 'Espaço da empresa Esgotado',
8 => 'Empresa bloqueada',
9 => 'Números de sequencia em duplicidade',
10 => 'Parametro não informado',
20 => 'A consulta não retornou registros',
21 => 'A consulta retornou muitos registros',
22 => 'O xml tem mais registros que o permitido',
23 => 'A página que você está tentando obter não existe',
30 => 'Erro de duplicidade de registro',
31 => 'Erros de validação',
32 => 'Registro não localizado',
33 => 'Registro localizado em duplicidade',
34 => 'Nota Fiscal não autorizada',
99 => 'Sistema em manutenção'
];
return $status;
} catch (Exception $e) {
return [];
}
}
/**
* @param idsExpedicao Array()
* @param Empresa Object Model Empresa
*/
public static function atualizarDespachoNotaFiscal($notafiscal, $Empresa){
/*if(env('APP_ENV') != 'production'){
return false;
}*/
try {
$token = Empresa::getApiKeyTinyErp($Empresa);
$url = 'https://api.tiny.com.br/api2/nota.fiscal.cadastrar.codigo.rastreamento.php';
$content = "token=$token¬afiscal=".json_encode($notafiscal)."&formato=json";
$response = json_decode(GeralService::enviarREST($url, $content));
return $response;
} catch (Exception $e) {
Log::info("ErpService::atualizarDespachoNotaFiscal => notafiscal: ". json_encode($notafiscal) . " " . $e->getMessage());
throw new Exception($e->getMessage());
}
}
/**
* @param idsExpedicao Array()
* @param Empresa Object Model Empresa
*/
public static function agruparExpedicao($idsExpedicao, $Empresa, $tipoObjetos = 'notafiscal'){
/*if(env('APP_ENV') != 'production'){
return false;
}*/
try {
$token = Empresa::getApiKeyTinyErp($Empresa);
$url = 'https://api.tiny.com.br/api2/expedicao.incluir.agrupamento.php';
$content = "token={$token}&idsExpedicao=" . implode(',', $idsExpedicao) . "&formato=json";
$response = json_decode(GeralService::enviarREST($url, $content));
return $response;
} catch (Exception $e) {
Log::info("ErpService::agruparExpedicao => idsExpedicao: ". implode(",", $idsExpedicao) . " " . $e->getMessage());
throw new Exception($e->getMessage());
}
}
/**
* @param idObjetos Array()
* @param Empresa Object Model Empresa
* @param tipoObjetos String 'notafiscal', 'venda'
*/
public static function liberarExpedicao($idObjetos, $Empresa, $tipoObjetos = 'notafiscal'){
/*if(env('APP_ENV') != 'production'){
return false;
}*/
try {
$token = Empresa::getApiKeyTinyErp($Empresa);
$url = 'https://api.tiny.com.br/api2/expedicao.liberar.objetos.php';
$content = "token={$token}&idObjetos=" . implode(',', $idObjetos) . "&tipoObjetos={$tipoObjetos}&formato=json";
$response = json_decode(GeralService::enviarREST($url, $content));
return $response;
} catch (Exception $e) {
Log::info("ErpService::liberarExpedicao => idObjetos: ". implode(",", $idObjetos) . " " . $e->getMessage());
throw new Exception($e->getMessage());
}
}
/**
* @param idObjetos Integer
* @param Empresa Object Model Empresa
* @param tipoObjeto String 'notafiscal', 'venda'
*/
public static function obterExpedicao($idObjeto, $Empresa, $tipoObjeto = 'notafiscal'){
/*if(env('APP_ENV') != 'production'){
return false;
}*/
try {
$token = Empresa::getApiKeyTinyErp($Empresa);
$url = 'https://api.tiny.com.br/api2/expedicao.obter.php';
$content = "token={$token}&idObjeto={$idObjeto}&tipoObjeto={$tipoObjeto}&formato=json";
$response = json_decode(GeralService::enviarREST($url, $content));
return $response;
} catch (Exception $e) {
Log::info("ErpService::obterExpedicao => idObjeto: {$idObjeto} " . $e->getMessage());
throw new Exception($e->getMessage());
}
}
/**
* @param data Date dd/mm/YYYY
* @param Empresa Object Model Empresa
* @param formaEnvio String 'T' (Transportadora)
*/
public static function pesquisarExpedicao($data, $Empresa, $formaEnvio = 'T'){
/*if(env('APP_ENV') != 'production'){
return false;
}*/
try {
$token = Empresa::getApiKeyTinyErp($Empresa);
$url = 'https://api.tiny.com.br/api2/expedicao.pesquisa.php';
$content = "token={$token}&dataInicial={$data}&dataFinal={$data}&formaEnvio={$formaEnvio}&formato=json";
$response = json_decode(GeralService::enviarREST($url, $content));
return $response;
} catch (Exception $e) {
Log::info("ErpService::pesquisarExpedicao => dataInicial: 14/02/2022 & dataFinal: 14/02/2022 " . $e->getMessage());
throw new Exception($e->getMessage());
}
}
/**
* @param Object {empresa, vencimento, valorTitulo}
*/
public static function alterarEstoque($objEstoque){
if(env('APP_ENV') != 'production'){
return false;
}
try {
$Empresa = Empresa::where('id', $objEstoque->produto_erp->empresa_id)->first();
$token = Empresa::getApiKeyTinyErp($Empresa);
if(empty($objEstoque->produto_erp->id_tiny)){
throw new Exception("ID Tiny não informado ou não existe!");
}
$body = [
'estoque' => [
'idProduto' => $objEstoque->produto_erp->id_tiny,
'tipo' => $objEstoque->tipo,
'quantidade' => $objEstoque->quantidade,
'observacoes' => $objEstoque->observacoes
]
];
$url = 'https://api.tiny.com.br/api2/produto.atualizar.estoque.php';
$content = "token={$token}&estoque=" . json_encode($body) . "&formato=json";
$response = json_decode(GeralService::enviarREST($url, $content));
return $response;
} catch (Exception $e) {
throw new Exception($e->getMessage());
}
}
/**
* @param Object {empresa, vencimento, valorTitulo}
*/
public static function contaReceberGerarTitulo($objConta){
try {
$Empresa = Empresa::where('id', $objConta->empresa)->first();
$token = Empresa::getApiKeyTinyErp($Empresa);
$data = explode("/", $objConta->data);
$dataHistory = "{$data[0]}{$data[1]}" . substr($data[2], 2, 2);
if($objConta->tipo == 'card'){
$body = [
'conta' => [
'cliente' => [
'codigo' => 100,
'nome' => "Pagar.me Pagamentos S.a.",
'atualizar_cliente' => 'N'
],
'data' => $objConta->data,
'vencimento' => $objConta->vencimento,
'categoria' => '1.01 Receita de Vendas',
'forma_pagamento' => 'Cartão de Crédito',
'historico' => "Valor receita em {$data[0]}/{$data[1]}/{$data[2]}",
'nro_documento' => $dataHistory,
'valor' => $objConta->valor
]
];
}else{
$body = [
'conta' => [
'cliente' => [
'nome' => $objConta->nome,
'atualizar_cliente' => 'N'
],
'data' => $objConta->data,
'vencimento' => $objConta->vencimento,
'categoria' => '1.01 Receita de Vendas',
'forma_pagamento' => 'Dinheiro',
'historico' => "Venda via depósito ref. pedido venda {$objConta->id_pedido_venda}",
'nro_documento' => (isset($objConta->id_pedido_venda) ? $objConta->id_pedido_venda : $dataHistory),
'valor' => $objConta->valor
]
];
}
$url = 'https://api.tiny.com.br/api2/conta.receber.incluir.php';
$content = "token=$token&conta=" . json_encode($body) . "&formato=json";
$response = json_decode(GeralService::enviarREST($url, $content));
$log = ContaReceberLog::saveLog($objConta, $response, $body);
return $response;
} catch (Exception $e) {
return ['status' => false, 'message' => $e->getMessage()];
}
}
public static function alterarProduto($produto){
if(env('APP_ENV') != 'production'){
return false;
}
$resultAtualizacao = true;
if(count($produto->produtoserp) > 0){
foreach ($produto->produtoserp as $item){
$token = $item->empresa->api_key_tiny_erp;
$produtosAtualizar = [];
$produto_nome = str_replace(["&"], '', $item->produto->nome);
if($item->produto->sincronizar_tiny != 1){
continue;
}
$obj = new \stdClass();
$obj->produto = new \stdClass();
$obj->produto->sequencia = $item->produto->id;
$obj->produto->nome = $produto_nome;
$obj->produto->codigo = $item->produto->sku;
$obj->produto->unidade = (!empty($item->produto->unidade_de_medida) ? $item->produto->unidade_de_medida : 'gr');
$obj->produto->preco = floatval(number_format($item->produto->preco_de_venda,2,'.',''));
$obj->produto->preco_custo = floatval(number_format($item->produto->preco_custo,2,'.',''));
$obj->produto->localizacao = $item->produto->localizador;
$obj->produto->situacao = $item->produto->situacao;
$obj->produto->peso_liquido = $item->produto->peso_liquido;
$obj->produto->peso_bruto = $item->produto->peso_bruto;
$obj->produto->tipo = 'P';
$obj->produto->origem = $item->produto->origem;
$obj->produto->ncm = $item->produto->ncm;
if($item->id_tiny > 0){ // Se o produto já possui id_tiny na nossa plataforma
$produtosAtualizar[] = $obj;
// Atualizar produtos que já estão no tiny e possuem id_tiny na nossa plataforma
$data['produtos'] = $produtosAtualizar;
$produto = json_encode($data);
$url = 'https://api.tiny.com.br/api2/produto.alterar.php';
$content = "token=$token&produto=$produto&formato=json";
$resultAtualizacao = json_decode(GeralService::enviarREST($url, $content));
Log::info(json_encode($resultAtualizacao));
if((isset($resultAtualizacao->retorno) && $resultAtualizacao->retorno->status_processamento != 3) || !isset($resultAtualizacao->retorno)){
$item->data_sincronizacao_tiny = date('Y-m-d H:i:s');
$item->log_tiny = json_encode($resultAtualizacao);
$item->save();
}else{
$item->data_sincronizacao_tiny = date('Y-m-d H:i:s');
$item->log_tiny = '';
$item->save();
}
}else{
$item->data_sincronizacao_tiny = date('Y-m-d H:i:s');
$item->log_tiny = "ID Tiny não informado";
$item->save();
}
}
}
return $resultAtualizacao;
}
public static function getEstoqueProduto($produto){
$data = [];
$saldos = [];
$empresas = [];
$estoque = 0;
$ultima_atualizacao = '';
$errors = [];
if(count($produto->produtoserp) > 0){
foreach ($produto->produtoserp as $produtoerp){
$token = $produtoerp->empresa->api_key_tiny_erp;
//Pesquisa
$id_tiny = $produtoerp->id_tiny;
if(!empty($id_tiny)){
$url = 'https://api.tiny.com.br/api2/produto.obter.estoque.php';
$content = "token=$token&id=$id_tiny&formato=json";
$resultPesquisa = json_decode(GeralService::enviarREST($url, $content));
if($resultPesquisa->retorno->status_processamento == 3){
$saldos[$produtoerp->empresa->sigla] = $resultPesquisa->retorno->produto->saldo;
$empresas[$produtoerp->empresa->sigla] = ['status' => true, 'response' => json_encode($resultPesquisa)];
}else{
Log::info("Produto: {$produto->id} / Empresa: {$produtoerp->empresa_id} - " . json_encode($resultPesquisa));
$empresas[$produtoerp->empresa->sigla] = ['status' => false, 'response' => json_encode($resultPesquisa)];
$errors[] = ['status' => false, 'message' => json_encode($resultPesquisa), 'produto_id' => $produtoerp->produto_id, 'empresa_id' => $produtoerp->empresa_id];
}
}else{
Log::info("Produto: {$produto->id} / Empresa: {$produtoerp->empresa_id} - ID Tiny Não Encontrado");
$empresas[$produtoerp->empresa->sigla] = ['status' => false, 'response' => 'ID Tiny Não Encontrado'];
$errors[] = ['status' => false, 'message' => 'ID Tiny Não Encontrado', 'produto_id' => $produtoerp->produto_id, 'empresa_id' => $produtoerp->empresa_id];
}
$estoque += (isset($saldos[$produtoerp->empresa->sigla]) ? $saldos[$produtoerp->empresa->sigla] : 0);
}
}
//útlima atualização
if(count($produto->estoque) > 0 && !empty($produto->estoque[0]->data_ultima_atualizacao)){
$ultima_atualizacao = $produto->estoque[0]->data_ultima_atualizacao;
}
$adega = GeralService::buscarAdegaProduto($produto);
$em_processamento = GeralService::buscarProdutoEmProcessamento($produto);
$adega = (!empty($adega) ? $adega : 0);
$QuantidadeReserva = QuantidadeReserva::select('qtde_sugerida')->where('qtde_inicial_saldo', '<=', $adega)->where('qtde_final_saldo', '>=', $adega)->first();
$reserva = ($QuantidadeReserva ? $QuantidadeReserva->qtde_sugerida : 0);
$disponibilidade = $estoque - $adega - $em_processamento - $reserva;
$data['saldos'] = $saldos;
$data['log_empresas'] = $empresas;
$data['errors'] = $errors;
$data['estoque'] = $estoque;
$data['adega'] = number_format($adega, 2, '.', '');
$data['em_processamento'] = number_format($em_processamento, 2, '.', '');
$data['disponibilidade'] = $disponibilidade;
$data['reserva'] = $reserva;
$data['ultima_atualizacao'] = $ultima_atualizacao;
return $data;
}
public static function sincronizarProdutos($listaProdutos, $idEmpresa = FALSE){
$produtosPorVez = 20; // Quantidade de produtos por lote
$result = new \stdClass();
$errorMsg = [];
$status = true;
$message = 'Registros sincronizados com sucesso!';
if(count($listaProdutos) > $produtosPorVez){
$errorMsg[] = 'Você não pode sincronizar mais que '.$produtosPorVez.' produtos por vez.';
$result->status = false;
$result->errorMsg = $errorMsg;
return $result;
}
if($idEmpresa){
$empresas = Empresa::where('id', $idEmpresa)->get();
}else{
$empresas = Empresa::all();
}
foreach ($empresas as $empresa) {
if(empty($empresa->api_key_tiny_erp)){
continue;
}
$token = $empresa->api_key_tiny_erp; // Token API Tiny
$produtosIncluir = [];
$produtosAtualizar = [];
$produtosBuscarIdTiny = []; // Prepara o array para os produtos que já estão no tiny, mas não tem ID na nossa plataforma
foreach ($listaProdutos as $item) {
$produto_nome = str_replace(["&"], '', $item->produto->nome);
if($item->produto->sincronizar_tiny != 1){
continue;
}
$obj = new \stdClass();
$obj->produto = new \stdClass();
$obj->produto->sequencia = $item->produto->id;
$obj->produto->nome = $produto_nome;
$obj->produto->codigo = $item->produto->sku;
$obj->produto->unidade = (!empty($item->produto->unidade_de_medida) ? $item->produto->unidade_de_medida : 'Gr');
$obj->produto->preco = floatval(number_format($item->produto->preco_de_venda,2,'.',''));
$obj->produto->preco_custo = floatval(number_format($item->produto->preco_custo,2,'.',''));
$obj->produto->localizacao = $item->produto->localizador;
$obj->produto->situacao = $item->produto->situacao;
$obj->produto->peso_liquido = $item->produto->peso_liquido;
$obj->produto->peso_bruto = $item->produto->peso_bruto;
$obj->produto->tipo = 'P';
$obj->produto->origem = $item->produto->origem;
$obj->produto->ncm = $item->produto->ncm;
if($item->id_tiny > 0){ // Se o produto já possui id_tiny na nossa plataforma
$produtosAtualizar[] = $obj;
}else{
$produtosIncluir[] = $obj;
}
}
// Incluir produtos
$data['produtos'] = $produtosIncluir;
$produto = json_encode($data);
$url = 'https://api.tiny.com.br/api2/produto.incluir.php'; //https://api.tiny.com.br/api2/produto.alterar.php
$content = "token=$token&produto=$produto&formato=json";
$resultInclusao = json_decode(GeralService::enviarREST($url, $content));
// Atualizar os ids_tiny na nossa plataforma
$values = [];
if(isset($resultInclusao->retorno->registros)){
foreach ($resultInclusao->retorno->registros as $registro) {
if(isset($registro->registro->codigo_erro)){ // O produto já estava cadastrado no tiny, mas sem ID do tiny no banco.
if($registro->registro->codigo_erro == 30){
$produtosBuscarIdTiny[] = $registro->registro->sequencia;
}else{
$status = false;
$errorMsg[] = "ERRO Inclusão Registro: " . json_encode($registro);
}
}else{
$values[$registro->registro->sequencia] = $registro->registro->id;
}
}
if(!empty($values)){
self::updateIdsTiny($values, $empresa->id);
}
}else{
$status = false;
$errorMsg[] = "ERRO Inclusão Registro: " . json_encode($resultInclusao);
}
// Ajusta os produtos que estão no tiny mas não tem ID na plataforma.
foreach ($produtosBuscarIdTiny as $id_produto) {
$produto = Produto::find($id_produto);
//Pesquisa por SKU
$skuProduto = $produto->sku;
$url = 'https://api.tiny.com.br/api2/produtos.pesquisa.php';
$content = "token=$token&pesquisa=$skuProduto&formato=json";
$resultPesquisaSku = json_decode(GeralService::enviarREST($url, $content));
//Pesquisa por Nome
$nomeProduto = $produto->nome;
$url = 'https://api.tiny.com.br/api2/produtos.pesquisa.php';
$content = "token=$token&pesquisa=$nomeProduto&formato=json";
$resultPesquisaNome = json_decode(GeralService::enviarREST($url, $content));
if($resultPesquisaSku->retorno->status_processamento == 3){ // Conseguiu buscar o ID do produto
$idTiny = $resultPesquisaSku->retorno->produtos[0]->produto->id;
//Atualiza Produto
$obj = new \stdClass();
$obj->empresa_id = $empresa->id;
$obj->produto_id = $produto->id;
$obj->log_tiny = NULL;
$obj->id_tiny = $idTiny;
ProdutoErp::saveErp($obj);
$status = true;
$errorMsg = [];
$produto_nome = str_replace(["&"], '', $produto->nome);
// Adiciona o produto para ser atualizado
$obj = new \stdClass();
$obj->produto = new \stdClass();
$obj->produto->sequencia = $produto->id;
$obj->produto->nome = $produto_nome;
$obj->produto->codigo = $produto->sku;
$obj->produto->unidade = (!empty($produto->unidade_de_medida) ? $produto->unidade_de_medida : 'gr');
$obj->produto->preco = floatval(number_format($produto->preco_de_venda,2,'.',''));
$obj->produto->preco_custo = floatval(number_format($produto->preco_custo,2,'.',''));
$obj->produto->localizacao = $produto->localizador;
$obj->produto->situacao = $produto->situacao;
$obj->produto->peso_liquido = $produto->peso_liquido;
$obj->produto->peso_bruto = $produto->peso_bruto;
$obj->produto->tipo = 'P';
$obj->produto->origem = $produto->origem;
$obj->produto->ncm = $produto->ncm;
$produtosAtualizar[] = $obj;
}elseif($resultPesquisaNome->retorno->status_processamento == 3){
$status = false;
$errorMsg[] = 'Conflito: Produto ID: ' . $produto->id . ' já existe! (' . $produto->nome . ')';
$obj = new \stdClass();
$obj->empresa_id = $empresa->id;
$obj->produto_id = $produto->id;
$obj->log_tiny = json_encode($resultPesquisaNome);
ProdutoErp::saveErp($obj);
}
}
// Atualizar produtos que já estão no tiny e possuem id_tiny na nossa plataforma
$data['produtos'] = $produtosAtualizar;
$produto = json_encode($data);
$url = 'https://api.tiny.com.br/api2/produto.alterar.php';
$content = "token=$token&produto=$produto&formato=json";
$resultAtualizacao = json_decode(GeralService::enviarREST($url, $content));
foreach ($resultAtualizacao->retorno->registros as $item) {
if(!isset($item->registro->codigo_erro)){
$obj = new \stdClass();
$obj->empresa_id = $empresa->id;
$obj->produto_id = $item->registro->sequencia;
$obj->log_tiny = NULL;
$obj->id_tiny = $item->registro->id;
ProdutoErp::saveErp($obj);
$status = true;
$errorMsg = [];
}else{
$status = false;
$errorMsg[] = 'Produto ID: '.$item->registro->sequencia.', Código Erro: '.$item->registro->codigo_erro.', Erro: '.$item->registro->erros[0]->erro;
}
}
}
$result = new \stdClass();
$result->status = $status;
$result->message = $message;
if(count($errorMsg) > 0)
$result->message = implode("<br><br>", $errorMsg);
return $result;
}
public static function sincronizarProduto($idProduto, $action, $idEmpresa, $idTiny = 0){
$Empresa = Empresa::where('id', $idEmpresa)->first();
$token = $Empresa->api_key_tiny_erp;
$status = true;
$message = 'Registro sincronizado com sucesso';
$errorMsg = [];
$Produto = Produto::where('id', $idProduto)->first();
if($Produto->sincronizar_tiny == 1){
//Sincroniza Produto
$data = [];
$produtoObject = [];
$obj = new \stdClass();
$obj->produto = new \stdClass();
if($action == 'alterar' && (!empty($idTiny) && $idTiny != 0))
$obj->produto->id = $idTiny;
$obj->produto->sequencia = $Produto->id;
$obj->produto->nome = $Produto->nome . ' ' . date('Ymd');
$obj->produto->codigo = $Produto->sku;
$obj->produto->unidade = $Produto->unidade_de_medida ?? 'gr';
$obj->produto->preco = floatval(number_format($Produto->preco_de_venda,2,'.',''));
$obj->produto->preco_custo = floatval(number_format($Produto->preco_custo,2,'.',''));
$obj->produto->localizacao = $Produto->localizador;
$obj->produto->situacao = $Produto->situacao;
$obj->produto->peso_liquido = $Produto->peso_liquido;
$obj->produto->peso_bruto = $Produto->peso_bruto;
$obj->produto->tipo = 'P';
$obj->produto->origem = $Produto->origem;
$obj->produto->ncm = $Produto->ncm;
$produtoObject[] = $obj;
$data['produtos'] = $produtoObject;
$produto = json_encode($data);
$url = 'https://api.tiny.com.br/api2/produto.' . $action . '.php';
$content = "token=$token&produto=$produto&formato=json";
$resultOperacao = json_decode(GeralService::enviarREST($url, $content));
foreach ($resultOperacao->retorno->registros as $item) {
if(isset($item->registro->codigo_erro)){
$status = false;
$errorMsg[] = 'Produto ID: '.$item->registro->sequencia.', Código Erro: '.$item->registro->codigo_erro.', Erro: '.$item->registro->erros[0]->erro;
}elseif($action == 'incluir'){
$idTiny = $item->registro->id;
}
}
$obj = new \stdClass();
$obj->empresa_id = $idEmpresa;
$obj->produto_id = $Produto->id;
if($status && (!empty($idTiny) && $idTiny != 0)){
$obj->log_tiny = NULL;
$obj->id_tiny = $idTiny;
}else{
$obj->log_tiny = "Erro: " . implode("<br><br>", $errorMsg);
}
ProdutoErp::saveErp($obj);
}else{
$status = false;
$message = "Não foi possível sincronizar o Produto: {$Produto->nome}!";
}
$result = new \stdClass();
$result->status = $status;
$result->message = $message;
if(count($errorMsg) > 0)
$result->message = implode("<br><br>", $errorMsg);
return $result;
}
public static function updateIdsTiny(array $values, $empresa_id)
{
foreach ($values as $produto_id => $id_tiny) {
$obj = new \stdClass();
$obj->empresa_id = $empresa_id;
$obj->produto_id = $produto_id;
$obj->id_tiny = $id_tiny;
$obj->log_tiny = NULL;
ProdutoErp::saveErp($obj);
}
}
}