Quickbooks sync

This commit is contained in:
David Bomba 2024-09-23 12:57:27 +10:00
parent 8279bc2ed2
commit 80f34caccf
3 changed files with 27 additions and 66 deletions

View File

@ -84,7 +84,7 @@ class QuickbooksImport implements ShouldQueue
foreach($this->entities as $key => $entity) { foreach($this->entities as $key => $entity) {
if(!$this->syncGate($key, 'pull')) { if(!$this->qbs->syncGate($key, 'pull')) {
nlog('skipping ' . $key); nlog('skipping ' . $key);
continue; continue;
} }
@ -97,29 +97,6 @@ class QuickbooksImport implements ShouldQueue
} }
/**
* Determines whether a sync is allowed based on the settings
*
* @param string $entity
* @param string $direction
* @return bool
*/
private function syncGate(string $entity, string $direction): bool
{
return (bool) $this->settings->{$entity}->sync && in_array($this->settings->{$entity}->direction->value, [$direction, 'bidirectional']);
}
/**
* Updates the gate for a given entity
*
* @param string $entity
* @return bool
*/
private function updateGate(string $entity): bool
{
return (bool) $this->settings->{$entity}->sync && $this->settings->{$entity}->update_record;
}
/** /**
* Processes the sync for a given entity * Processes the sync for a given entity
* *
@ -231,41 +208,6 @@ class QuickbooksImport implements ShouldQueue
} }
// private function syncQbToNinjaClients(array $records): void
// {
// $client_transformer = new ClientTransformer($this->company);
// foreach($records as $record)
// {
// $ninja_client_data = $client_transformer->qbToNinja($record);
// if($client = $this->findClient($ninja_client_data))
// {
// $client->fill($ninja_client_data[0]);
// $client->saveQuietly();
// $contact = $client->contacts()->where('email', $ninja_client_data[1]['email'])->first();
// if(!$contact)
// {
// $contact = ClientContactFactory::create($this->company->id, $this->company->owner()->id);
// $contact->client_id = $client->id;
// $contact->send_email = true;
// $contact->is_primary = true;
// $contact->fill($ninja_client_data[1]);
// $contact->saveQuietly();
// }
// elseif($this->updateGate('client')){
// $contact->fill($ninja_client_data[1]);
// $contact->saveQuietly();
// }
// }
// }
// }
private function syncQbToNinjaVendors(array $records): void private function syncQbToNinjaVendors(array $records): void
{ {
@ -291,7 +233,7 @@ class QuickbooksImport implements ShouldQueue
$contact->fill($ninja_data[1]); $contact->fill($ninja_data[1]);
$contact->saveQuietly(); $contact->saveQuietly();
} }
elseif($this->updateGate('vendor')){ elseif($this->qbs->updateGate('vendor')){
$contact->fill($ninja_data[1]); $contact->fill($ninja_data[1]);
$contact->saveQuietly(); $contact->saveQuietly();
} }

View File

@ -69,7 +69,7 @@ class QbClient implements SyncInterface
$contact->fill($ninja_data[1]); $contact->fill($ninja_data[1]);
$contact->saveQuietly(); $contact->saveQuietly();
} }
elseif($this->updateGate('client')){ elseif($this->service->updateGate('client')){
$contact->fill($ninja_data[1]); $contact->fill($ninja_data[1]);
$contact->saveQuietly(); $contact->saveQuietly();
} }
@ -83,11 +83,6 @@ class QbClient implements SyncInterface
{ {
} }
private function updateGate(string $entity): bool
{
return (bool) $this->service->settings->{$entity}->sync && $this->service->settings->{$entity}->update_record;
}
private function findClient(string $key): ?Client private function findClient(string $key): ?Client
{ {
$search = Client::query() $search = Client::query()

View File

@ -136,4 +136,28 @@ class QuickbooksService
{ {
return $this->sdk->FindById($entity, $id); return $this->sdk->FindById($entity, $id);
} }
/**
* Tests whether to update a record based on the sync settings.
*
* @param string $entity
* @return bool
*/
public function updateGate(string $entity): bool
{
return (bool) $this->service->settings->{$entity}->sync && $this->service->settings->{$entity}->update_record;
}
/**
* Determines whether a sync is allowed based on the settings
*
* @param string $entity
* @param string $direction
* @return bool
*/
public function syncGate(string $entity, string $direction): bool
{
return (bool) $this->settings->{$entity}->sync && in_array($this->settings->{$entity}->direction->value, [$direction, 'bidirectional']);
}
} }