mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-01 04:14:34 -04:00
Update company tax data
This commit is contained in:
parent
32daee0fa6
commit
36449fa56c
@ -119,6 +119,8 @@ class BaseRule implements RuleInterface
|
|||||||
|
|
||||||
public mixed $invoice;
|
public mixed $invoice;
|
||||||
|
|
||||||
|
private bool $should_calc_tax = true;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -128,6 +130,10 @@ class BaseRule implements RuleInterface
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function shouldCalcTax(): bool
|
||||||
|
{
|
||||||
|
return $this->should_calc_tax;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Initializes the tax rule for the entity.
|
* Initializes the tax rule for the entity.
|
||||||
*
|
*
|
||||||
@ -185,17 +191,16 @@ class BaseRule implements RuleInterface
|
|||||||
|
|
||||||
/** If no company tax data has been configured, lets do that now. */
|
/** If no company tax data has been configured, lets do that now. */
|
||||||
/** We should never encounter this scenario */
|
/** We should never encounter this scenario */
|
||||||
// if(!$company->origin_tax_data && \DB::transactionLevel() == 0)
|
if(!$company->origin_tax_data)
|
||||||
// {
|
{
|
||||||
|
$this->should_calc_tax = false;
|
||||||
// $tp = new TaxProvider($company);
|
|
||||||
// $tp->updateCompanyTaxData();
|
return $this;
|
||||||
// $company->fresh();
|
|
||||||
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
/** If we are in a Origin based state, force the company tax here */
|
/** If we are in a Origin based state, force the company tax here */
|
||||||
if($company->origin_tax_data?->originDestination == 'O' && ($company->tax_data?->seller_subregion == $this->client_subregion)) {
|
if($company?->origin_tax_data?->originDestination == 'O' && ($company->tax_data?->seller_subregion == $this->client_subregion)) {
|
||||||
|
|
||||||
$tax_data = $company->origin_tax_data;
|
$tax_data = $company->origin_tax_data;
|
||||||
|
|
||||||
@ -203,14 +208,14 @@ class BaseRule implements RuleInterface
|
|||||||
else{
|
else{
|
||||||
|
|
||||||
/** Ensures the client tax data has been updated */
|
/** Ensures the client tax data has been updated */
|
||||||
if(!$this->client->tax_data && \DB::transactionLevel() == 0) {
|
// if(!$this->client->tax_data && \DB::transactionLevel() == 0) {
|
||||||
|
|
||||||
$tp = new TaxProvider($company, $this->client);
|
// $tp = new TaxProvider($company, $this->client);
|
||||||
$tp->updateClientTaxData();
|
// $tp->updateClientTaxData();
|
||||||
$this->client->fresh();
|
// $this->client->fresh();
|
||||||
}
|
// }
|
||||||
|
if($this->client->tax_data)
|
||||||
$tax_data = $this->client->tax_data;
|
$tax_data = $this->client->tax_data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,7 +224,7 @@ class BaseRule implements RuleInterface
|
|||||||
/** Applies the tax data to the invoice */
|
/** Applies the tax data to the invoice */
|
||||||
if($this->invoice instanceof Invoice && $tax_data) {
|
if($this->invoice instanceof Invoice && $tax_data) {
|
||||||
|
|
||||||
$this->invoice->tax_data = $tax_data ;
|
$this->invoice->tax_data = $tax_data;
|
||||||
|
|
||||||
if(\DB::transactionLevel() == 0)
|
if(\DB::transactionLevel() == 0)
|
||||||
$this->invoice->saveQuietly();
|
$this->invoice->saveQuietly();
|
||||||
|
@ -188,7 +188,7 @@ class InvoiceItemSum
|
|||||||
->setEntity($this->invoice)
|
->setEntity($this->invoice)
|
||||||
->init();
|
->init();
|
||||||
|
|
||||||
$this->calc_tax = true;
|
$this->calc_tax = $this->rule->shouldCalcTax();
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,6 @@ class UpdateTaxData implements ShouldQueue
|
|||||||
|
|
||||||
$tax_provider->updateClientTaxData();
|
$tax_provider->updateClientTaxData();
|
||||||
|
|
||||||
|
|
||||||
if (!$this->client->state && $this->client->postal_code) {
|
if (!$this->client->state && $this->client->postal_code) {
|
||||||
|
|
||||||
$this->client->state = USStates::getState($this->client->postal_code);
|
$this->client->state = USStates::getState($this->client->postal_code);
|
||||||
|
@ -11,9 +11,11 @@
|
|||||||
|
|
||||||
namespace App\Jobs\Company;
|
namespace App\Jobs\Company;
|
||||||
|
|
||||||
|
use App\Models\Client;
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Libraries\MultiDB;
|
use App\Libraries\MultiDB;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
|
use App\Jobs\Client\UpdateTaxData;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
use Illuminate\Queue\InteractsWithQueue;
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
use App\Services\Tax\Providers\TaxProvider;
|
use App\Services\Tax\Providers\TaxProvider;
|
||||||
@ -38,11 +40,32 @@ class CompanyTaxRate implements ShouldQueue
|
|||||||
|
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if(!config('services.tax.zip_tax.key')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
MultiDB::setDB($this->company->db);
|
MultiDB::setDB($this->company->db);
|
||||||
|
|
||||||
$tp = new TaxProvider($this->company);
|
$tp = new TaxProvider($this->company);
|
||||||
|
|
||||||
$tp->updateCompanyTaxData();
|
$tp->updateCompanyTaxData();
|
||||||
|
|
||||||
|
$tp = null;
|
||||||
|
|
||||||
|
Client::query()
|
||||||
|
->where('company_id', $this->company->id)
|
||||||
|
->where('is_deleted', false)
|
||||||
|
->where('country_id', 840)
|
||||||
|
->whereNotNull('postal_code')
|
||||||
|
->whereNull('tax_data')
|
||||||
|
->whereFalse('is_tax_exempt')
|
||||||
|
->cursor()
|
||||||
|
->each(function ($client) {
|
||||||
|
|
||||||
|
(new UpdateTaxData($client, $this->company))->handle();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user