1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-11 13:42:49 +01:00
invoiceninja/app/Import/Transformers/Csv/ClientTransformer.php

120 lines
3.5 KiB
PHP
Raw Normal View History

2020-12-16 11:06:20 +01:00
<?php
/**
* client Ninja (https://clientninja.com).
*
* @link https://github.com/clientninja/clientninja source repository
*
2022-04-27 05:20:41 +02:00
* @copyright Copyright (c) 2022. client Ninja LLC (https://clientninja.com)
*
2021-06-16 08:58:16 +02:00
* @license https://www.elastic.co/licensing/elastic-license
*/
2020-12-16 11:06:20 +01:00
namespace App\Import\Transformers\Csv;
use App\Import\ImportException;
use App\Import\Transformers\BaseTransformer;
2020-12-16 11:06:20 +01:00
use Illuminate\Support\Str;
/**
* Class ClientTransformer.
*/
class ClientTransformer extends BaseTransformer
{
2022-02-03 00:14:54 +01:00
/**
2021-02-13 01:20:15 +01:00
* @param $data
*
* @return array|bool
2021-02-13 01:20:15 +01:00
*/
2022-02-03 00:14:54 +01:00
public function transform($data)
{
if (isset($data->name) && $this->hasClient($data->name)) {
throw new ImportException('Client already exists');
}
2020-12-16 11:06:20 +01:00
2022-02-03 00:14:54 +01:00
$settings = new \stdClass();
$settings->currency_id = (string) $this->getCurrencyByCode($data);
2020-12-16 11:06:20 +01:00
return [
2022-02-03 00:14:54 +01:00
'company_id' => $this->maps['company']->id,
'name' => $this->getString($data, 'client.name'),
'work_phone' => $this->getString($data, 'client.phone'),
'address1' => $this->getString($data, 'client.address1'),
'address2' => $this->getString($data, 'client.address2'),
'postal_code' => $this->getString($data, 'client.postal_code'),
'city' => $this->getString($data, 'client.city'),
'state' => $this->getString($data, 'client.state'),
'shipping_address1' => $this->getString(
$data,
'client.shipping_address1'
),
'shipping_address2' => $this->getString(
$data,
'client.shipping_address2'
),
'shipping_city' => $this->getString($data, 'client.shipping_city'),
'shipping_state' => $this->getString(
$data,
'client.shipping_state'
),
'shipping_postal_code' => $this->getString(
$data,
'client.shipping_postal_code'
),
'public_notes' => $this->getString($data, 'client.public_notes'),
'private_notes' => $this->getString($data, 'client.private_notes'),
'website' => $this->getString($data, 'client.website'),
'vat_number' => $this->getString($data, 'client.vat_number'),
'id_number' => $this->getString($data, 'client.id_number'),
'custom_value1' => $this->getString($data, 'client.custom_value1'),
'custom_value2' => $this->getString($data, 'client.custom_value2'),
'custom_value3' => $this->getString($data, 'client.custom_value3'),
'custom_value4' => $this->getString($data, 'client.custom_value4'),
'balance' => preg_replace(
'/[^0-9,.]+/',
'',
$this->getFloat($data, 'client.balance')
),
'paid_to_date' => preg_replace(
'/[^0-9,.]+/',
'',
$this->getFloat($data, 'client.paid_to_date')
),
'credit_balance' => 0,
'settings' => $settings,
'client_hash' => Str::random(40),
'contacts' => [
2021-02-13 01:20:15 +01:00
[
2022-02-03 00:14:54 +01:00
'first_name' => $this->getString(
$data,
'contact.first_name'
),
'last_name' => $this->getString($data, 'contact.last_name'),
'email' => $this->getString($data, 'contact.email'),
'phone' => $this->getString($data, 'contact.phone'),
'custom_value1' => $this->getString(
$data,
'contact.custom_value1'
),
'custom_value2' => $this->getString(
$data,
'contact.custom_value2'
),
'custom_value3' => $this->getString(
$data,
'contact.custom_value3'
),
'custom_value4' => $this->getString(
$data,
'contact.custom_value4'
),
2021-02-13 01:20:15 +01:00
],
],
2022-02-03 00:14:54 +01:00
'country_id' => isset($data['client.country'])
? $this->getCountryId($data['client.country'])
: null,
'shipping_country_id' => isset($data['client.shipping_country'])
? $this->getCountryId($data['client.shipping_country'])
: null,
2021-02-13 01:20:15 +01:00
];
2022-02-03 00:14:54 +01:00
}
2020-12-16 11:06:20 +01:00
}