mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Fixes for zoho imports
This commit is contained in:
parent
4767c1a14a
commit
9668f6ceb7
@ -28,7 +28,7 @@ class ClientTransformer extends BaseTransformer
|
||||
public function transform($data)
|
||||
{
|
||||
if (isset($data['Company Name']) && $this->hasClient($data['Company Name'])) {
|
||||
throw new ImportException('Client already exists');
|
||||
throw new ImportException('Client already exists => '. $data['Company Name']);
|
||||
}
|
||||
|
||||
$settings = new \stdClass;
|
||||
@ -40,7 +40,7 @@ class ClientTransformer extends BaseTransformer
|
||||
|
||||
$client_id_proxy = array_key_exists('Customer ID', $data) ? 'Customer ID' : 'Primary Contact ID';
|
||||
|
||||
return [
|
||||
$data = [
|
||||
'company_id' => $this->company->id,
|
||||
'name' => $this->getString($data, 'Display Name'),
|
||||
'phone' => $this->getString($data, 'Phone'),
|
||||
@ -72,5 +72,7 @@ class ClientTransformer extends BaseTransformer
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
@ -40,7 +40,8 @@ class InvoiceTransformer extends BaseTransformer
|
||||
|
||||
$transformed = [
|
||||
'company_id' => $this->company->id,
|
||||
'client_id' => $this->getClient($this->getString($invoice_data, 'Customer ID'), $this->getString($invoice_data, 'Primary Contact EmailID')),
|
||||
// 'client_id' => $this->getClient($this->getString($invoice_data, 'Customer ID'), $this->getString($invoice_data, 'Primary Contact EmailID')),
|
||||
'client_id' => $this->harvestClient($invoice_data),
|
||||
'number' => $this->getString($invoice_data, 'Invoice Number'),
|
||||
'date' => isset($invoice_data['Invoice Date']) ? date('Y-m-d', strtotime($invoice_data['Invoice Date'])) : null,
|
||||
'due_date' => isset($invoice_data['Due Date']) ? date('Y-m-d', strtotime($invoice_data['Due Date'])) : null,
|
||||
@ -80,4 +81,77 @@ class InvoiceTransformer extends BaseTransformer
|
||||
|
||||
return $transformed;
|
||||
}
|
||||
|
||||
private function harvestClient($invoice_data)
|
||||
{
|
||||
|
||||
$client_email = $this->getString($invoice_data, 'Primary Contact EmailID');
|
||||
|
||||
if (strlen($client_email) > 2) {
|
||||
$contacts = \App\Models\ClientContact::whereHas('client', function ($query) {
|
||||
$query->where('is_deleted', false);
|
||||
})
|
||||
->where('company_id', $this->company->id)
|
||||
->where('email', $client_email);
|
||||
|
||||
if ($contacts->count() >= 1) {
|
||||
return $contacts->first()->client_id;
|
||||
}
|
||||
}
|
||||
|
||||
$client_name = $this->getString($invoice_data, 'Customer Name');
|
||||
|
||||
if(strlen($client_name) >= 2) {
|
||||
$client_name_search = \App\Models\Client::where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $client_name)),
|
||||
]);
|
||||
|
||||
if ($client_name_search->count() >= 1) {
|
||||
return $client_name_search->first()->id;
|
||||
}
|
||||
}
|
||||
|
||||
$customer_id = $this->getString($invoice_data, 'Customer ID');
|
||||
|
||||
$client_id_search = \App\Models\Client::where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->where('id_number', trim($customer_id));
|
||||
|
||||
if ($client_id_search->count() >= 1) {
|
||||
return $client_id_search->first()->id;
|
||||
}
|
||||
|
||||
|
||||
$client_repository = app()->make(\App\Repositories\ClientRepository::class);
|
||||
$client_repository->import_mode = true;
|
||||
|
||||
$client = $client_repository->save(
|
||||
[
|
||||
'name' => $client_name,
|
||||
'contacts' => [
|
||||
[
|
||||
'first_name' => $client_name,
|
||||
'email' => $client_email,
|
||||
],
|
||||
],
|
||||
'address1' => $this->getString($invoice_data, 'Billing Address'),
|
||||
'city' => $this->getString($invoice_data, 'Billing City'),
|
||||
'state' => $this->getString($invoice_data, 'Billing State'),
|
||||
'postal_code' => $this->getString($invoice_data, 'Billing Code'),
|
||||
'country_id' => $this->getCountryId($this->getString($invoice_data, 'Billing Country')),
|
||||
],
|
||||
|
||||
\App\Factory\ClientFactory::create(
|
||||
$this->company->id,
|
||||
$this->company->owner()->id
|
||||
)
|
||||
);
|
||||
|
||||
$client_repository = null;
|
||||
|
||||
return $client->id;
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user