%PDF- %PDF-
Direktori : /var/www/projetos/takthua.com.br/wp-content/plugins/wc-crm-integration/includes/ |
Current File : /var/www/projetos/takthua.com.br/wp-content/plugins/wc-crm-integration/includes/class-crm-order.php |
<?php require_once __DIR__ . '/class-integra-client.php'; /** * The file that defines the core plugin class * * A class definition that includes attributes and functions used across both the * public-facing side of the site and the admin area. * * @link https://theprogramer.com.br * @since 1.0.0 * * @package Wc_Crm_Integration * @subpackage Wc_Crm_Integration/includes */ /** * The Customer CRM class. * * @since 1.0.0 * @package Wc_Crm_Integration * @subpackage Wc_Crm_Integration/includes * @author Thiago Miranda <theprogramer@theprogramer.com.br> */ class CRM_Order extends Integra_Client { private $id; private $id_api; private $status; private $customer; private $weight; private $shipping_total; private $date_created; private $items; private $shipping_address; private $shipping_method; private $billing_total; // Presenteado private $payment_method; public function get_id() { return $this->id; } public function get_id_api() { return $this->id_api; } public function get_status() { return $this->status; } public function set_status($status) { $_status = 0; switch ($status) { case 1: // Em Orçamento break; case 2: // Aguardando Aprovação // $_status = "wc-on-hold"; break; case 3: // Aprovado break; case 6: // Pendente // $_status = "wc-pending"; break; case 7: // Remetido break; case 9: // Cancelado $_status = "wc-cancelled"; break; default: $_status = ""; } $this->status = $_status; } public function get_customer() { return $this->customer; } public function get_weight_total() { return $this->weight_total; } public function get_shipping_total() { return $this->shipping_total; } public function get_date_created() { return $this->date_created; } public function get_items() { return $this->items; } public function get_shipping_address() { return $this->shipping_address; } public function get_shipping_method() { return $this->shipping_method; } public function get_billing_total() { return $this->billing_total; } public function get_payment_method() { return $this->payment_method; } /** * Initialize class. * * @since 1.0.0 */ public function __construct() { parent::__construct(); } public function init_from_id($id = '') { $this->parse($this->call_api('GET', '/api/loja/pedido/' . $id, null)); } public function to_crm() { $order = wc_get_order( $this->get_id() ); $customer = new WC_Customer($order->get_customer_id()); $crm_order = array( "IdPedidoLoja" => (int)$order->get_id(), "TotalPeso" => 10, // function TotalPeso "ValorFrete" => (float)$order->get_shipping_total(), "DataPedido" => $order->get_date_created()->date("Y-m-d"), "IdClienteApi" => (int)get_user_meta( $customer->get_id(), 'integra_crm_id', true ), "Itens" => array(), "IdEnderecoEntrega" => (int)get_user_meta( $customer->get_id(), 'integra_crm_address_id', true ), "IdTipoEntrega" => 1, "TotalPedido" => (float)$order->get_total(), "Presenteado" => array(), "FormaPagamento" => array( array( "IdFormaPagamento" => 27, "Valor" => (float)$order->get_total(), "IdCondicao" => 1, "Data" => $order->get_date_paid()->date("Y-m-d") ) ) ); foreach ( $order->get_items() as $item_id => $item ) { $product = wc_get_product($item->get_product_id()); array_push( $crm_order["Itens"], array( "IdProduto" => (int)$product->get_sku(), "Quantidade" => $item->get_quantity(), "Preco" => (float)$product->get_price(), "PrecoPor" => (float)$product->get_sale_price(), "TipoDesconto" => "", "ValorDesconto" => 0.00, "TotalItem" => (float)$item->get_subtotal() ) ); } if ($order->get_shipping_first_name() !== "") { $crm_order["Presenteado"] = array( "Nome" => $order->get_shipping_first_name() . " " . $order->get_shipping_last_name(), "Cep" => $customer->get_shipping_postcode(), "Endereco" => $order->get_shipping_address_1(), "Complemento" => $order->get_shipping_address_2(), "Bairro" => $order->get_meta( '_shipping_neighborhood' ), "Cidade" => $order->get_shipping_city(), "UF" => $order->get_shipping_state(), "DDD" => substr(preg_replace('/\D/', '', $customer->get_billing_phone()), 0, 2), "Telefone" => substr(preg_replace('/\D/', '', $customer->get_billing_phone()), 2), "DDDTelefoneOpcional" => "", "TelefoneOpcional" => "", "DDDCel" => "", "Celular" => "", "Email" => "", "PresenteadoPessoaJuridica" => false, "DataCadastro" => $order->get_date_created()->date("Y-m-d"), "Numero" => $order->get_meta( '_shipping_number' ), "Ramal" => "", "RamalOpcional" => "", "IdEnderecoLoja" => "" ); } return $crm_order; } public function submit_to_crm() { $result = json_decode($this->submit('pedido', $this->to_crm())); if ($result->{"RealizadoComSucesso"}) { $order = wc_get_order( $this->get_id() ); $order->add_order_note(__('Pedido enviado para o Integra')); } else { throw new Exception("Ocorreu um erro durante o cadastro. ERRO: #5740 <br/>" . $result . " - " . json_decode($this->to_crm())); } } public function init_from_order($order_id) { $order = wc_get_order( $order_id ); $customer = new WC_Customer($order->get_customer_id()); $this->id = $order_id; $this->id_api = null; $this->status = null; $this->customer = null; $this->weight = 0; $this->shipping_total = $order->get_shipping_total(); $this->date_created = $order->get_date_created(); $this->items = array(); $this->shipping_address = null; $this->shipping_method = null; $this->billing_total = null; // Presenteado $this->payment_method = null; return $this; } /** * Parse content */ private function parse($content) { $content = json_decode($content, true); $this->id = $content['IdPedidoLoja'] ?? ''; $this->id_api = $content['IdPedidoAPI'] ?? ''; $this->status = $content['Situacao'] ?? ''; } }