68 lines
1.5 KiB
PHP
68 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\External\Accounting;
|
|
|
|
use Illuminate\Support\Collection;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Cache;
|
|
use QuickBooksOnline\API\Data\IPPCustomer;
|
|
|
|
use App\Classes\External\Accounting as Base;
|
|
use App\Models\User;
|
|
|
|
class Quickbooks extends Base
|
|
{
|
|
private $api = NULL;
|
|
|
|
public function __construct(User $uo)
|
|
{
|
|
if (Auth::user())
|
|
throw new \Exception('User logged in - *TODO* handle this');
|
|
|
|
Auth::loginUsingId($uo->id);
|
|
|
|
$this->api = app('Spinen\QuickBooks\Client');
|
|
}
|
|
|
|
public function getCustomers($refresh=FALSE): Collection
|
|
{
|
|
if ($refresh)
|
|
Cache::forget(__METHOD__);
|
|
|
|
return Cache::remember(__METHOD__,86400,function() {
|
|
return collect($this->api->getDataService()->Query('SELECT * FROM Customer'));
|
|
});
|
|
}
|
|
|
|
public function getInvoice(int $id,$refresh=FALSE)
|
|
{
|
|
if ($refresh)
|
|
Cache::forget(__METHOD__.$id);
|
|
|
|
return Cache::remember(__METHOD__.$id,86400,function() use ($id) {
|
|
return $this->api->getDataService()->Query(sprintf("SELECT * FROM Invoice where id = '%s'",$id));
|
|
});
|
|
}
|
|
|
|
public function getInvoices($refresh=FALSE): Collection
|
|
{
|
|
if ($refresh)
|
|
Cache::forget(__METHOD__);
|
|
|
|
return Cache::remember(__METHOD__,86400,function() {
|
|
return collect($this->api->getDataService()->Query('SELECT * FROM Invoice'));
|
|
});
|
|
}
|
|
|
|
public function updateCustomer(IPPCustomer $r,array $args)
|
|
{
|
|
$r->sparse = TRUE;
|
|
|
|
foreach ($args as $k=>$v)
|
|
{
|
|
$r->{$k} = $v;
|
|
}
|
|
|
|
return $this->api->getDataService()->Update($r);
|
|
}
|
|
} |