arcadia-suite-sv/temp_laravel/app/Utils/WoocommerceUtil.php

111 lines
3.3 KiB
PHP

<?php
namespace App\Utils;
use Illuminate\Support\Str;
use App\Models\WoocommerceConfig;
use App\Models\WoocommercePedido;
use App\Models\WoocommerceItemPedido;
use App\Models\Cidade;
use App\Models\Cliente;
use App\Models\Produto;
use Automattic\WooCommerce\Client;
class WoocommerceUtil
{
public function getConfig($empresa_id){
$config = WoocommerceConfig::where('empresa_id', $empresa_id)->first();
if($config == null) return null;
$url = $config->url;
$consumer_key = $config->consumer_key;
$consumer_secret = $config->consumer_secret;
$woocommerceClient = new Client($url, $consumer_key, $consumer_secret);
return $woocommerceClient;
}
public function criaPedido($empresa_id, $pedido){
$cidade = Cidade::where('nome', $pedido->shipping->city)
->where('uf', $pedido->shipping->state)->first();
$documento = $pedido->billing->cpf;
if($documento == ""){
$documento = $pedido->billing->cnpj;
}
$dataCliente = [
'cpf_cnpj' => $documento,
'razao_social' => $pedido->billing->first_name . " " . $pedido->billing->last_name,
'email' => $pedido->billing->email,
'telefone' => $pedido->billing->phone,
'rua' => $pedido->shipping->address_1,
'numero' => $pedido->shipping->number . " " .$pedido->shipping->address_2,
'bairro' => $pedido->shipping->neighborhood,
'consumidor_final' => 1,
'cep' => $pedido->shipping->postcode,
'cidade_id' => $cidade ? $cidade->id : 1,
'empresa_id' => $empresa_id
];
$cliente = Cliente::where('empresa_id', $empresa_id)
->where('cpf_cnpj', $documento)
->first();
if($cliente == null || $documento == ""){
$cliente = Cliente::create($dataCliente);
}
$dataPedido = [
'empresa_id' => $empresa_id,
'pedido_id' => $pedido->id,
'rua' => $pedido->shipping->address_1,
'numero' => $pedido->shipping->number . " " .$pedido->shipping->address_2,
'bairro' => $pedido->shipping->neighborhood,
'cidade' => $pedido->shipping->city,
'uf' => $pedido->shipping->state,
'cep' => $pedido->shipping->postcode,
'total' => $pedido->total,
'valor_entrega' => $pedido->shipping_total,
'desconto' => $pedido->discount_total,
'observacao' => $pedido->customer_note,
'nome' => $pedido->billing->first_name . " " . $pedido->billing->last_name,
'email' => $pedido->billing->email,
'documento' => '',
'tipo_pagamento' => $pedido->payment_method_title,
'data' => substr($pedido->date_modified, 0, 19),
'numero_pedido' => $pedido->number,
'cliente_id' => $cliente->id
];
$pedidoInsert = WoocommercePedido::where('empresa_id', $empresa_id)
->where('pedido_id', $pedido->id)->first();
if($pedidoInsert == null){
$pedidoInsert = WoocommercePedido::create($dataPedido);
}
foreach($pedido->line_items as $itemPedido){
$produto = Produto::where('woocommerce_id', $itemPedido->product_id)
->first();
$dataItem = [
'pedido_id' => $pedidoInsert->id,
'produto_id' => $produto ? $produto->id : null,
'item_id' => $itemPedido->product_id,
'item_nome' => $itemPedido->name,
'quantidade' => $itemPedido->quantity,
'valor_unitario' => $itemPedido->price,
'sub_total' => $itemPedido->subtotal,
];
$itemInsert = WoocommerceItemPedido::where('pedido_id', $pedidoInsert->id)
->where('item_id', $itemPedido->product_id)->first();
if($itemInsert == null){
WoocommerceItemPedido::create($dataItem);
}
}
}
}