1
0
mirror of synced 2025-03-27 10:33:53 +03:00
woocommerce-module/src/include/order/class-wc-retailcrm-order.php
2022-09-30 17:50:15 +03:00

104 lines
2.7 KiB
PHP

<?php
/**
* PHP version 7.0
*
* Class WC_Retailcrm_Order - Build main data for CRM order.
*
* @category Integration
* @author RetailCRM <integration@retailcrm.ru>
* @license http://retailcrm.ru Proprietary
* @link http://retailcrm.ru
* @see http://help.retailcrm.ru
*/
class WC_Retailcrm_Order extends WC_Retailcrm_Abstracts_Data
{
/** @var bool */
public $is_new = true;
protected $data = [
'externalId' => 0,
'status' => '',
'number' => '',
'createdAt' => '',
'firstName' => '',
'lastName' => '',
'email' => '',
'paymentType' => '',
'customerComment' => '',
'paymentStatus' => '',
'phone' => '',
'countryIso' => ''
];
/**
* @var array
*/
protected $settings = [];
/**
* WC_Retailcrm_Order constructor.
*
* @param array $settings
*/
public function __construct($settings)
{
$this->settings = $settings;
}
/**
* @param WC_Order $order
*
* @return self
*/
public function build($order)
{
$firstName = $order->get_shipping_first_name();
$lastName = $order->get_shipping_last_name();
if (empty($firstName) && empty($lastName)) {
$firstName = $order->get_billing_first_name();
$lastName = $order->get_billing_last_name();
}
$dateCreate = $order->get_date_created();
$data = [
'externalId' => $order->get_id(),
'createdAt' => !empty($dateCreate) ? $dateCreate->date('Y-m-d H:i:s') : date('Y-m-d H:i:s'),
'firstName' => $firstName,
'lastName' => $lastName,
'email' => strtolower($order->get_billing_email()),
'customerComment' => $order->get_customer_note(),
'phone' => $order->get_billing_phone(),
'countryIso' => $order->get_shipping_country()
];
if ($data['countryIso'] == '--' || empty($data['countryIso'])) {
$countries = new WC_Countries();
$data['countryIso'] = $countries->get_base_country();
}
$this->setDataFields($data);
$this->setNumber($order);
if (isset($this->settings[$order->get_status()]) && 'not-upload' !== $this->settings[$order->get_status()]) {
$this->setField('status', $this->settings[$order->get_status()]);
}
return $this;
}
/**
* @param WC_Order $order
*/
protected function setNumber($order)
{
if (isset($this->settings['update_number']) && $this->settings['update_number'] == WC_Retailcrm_Base::YES) {
$this->setField('number', $order->get_order_number());
} else {
unset($this->data['number']);
}
}
}