mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
commit
8213d32319
@ -1 +1 @@
|
||||
5.5.124
|
||||
5.6.0
|
@ -223,7 +223,7 @@ class Rule extends BaseRule implements RuleInterface
|
||||
public function calculateRates(): self
|
||||
{
|
||||
if ($this->client->is_tax_exempt) {
|
||||
nlog("tax exempt");
|
||||
// nlog("tax exempt");
|
||||
$this->tax_rate = 0;
|
||||
$this->reduced_tax_rate = 0;
|
||||
// } elseif($this->client_subregion != $this->client->company->tax_data->seller_subregion && in_array($this->client_subregion, $this->eu_country_codes) && $this->client->has_valid_vat_number && $this->eu_business_tax_exempt) {
|
||||
@ -247,7 +247,6 @@ class Rule extends BaseRule implements RuleInterface
|
||||
// $this->reduced_tax_rate = $this->client->company->tax_data->regions->EU->subregions->{$this->client->company->country()->iso_3166_2}->reduced_tax_rate;
|
||||
// }
|
||||
} else {
|
||||
nlog("default tax");
|
||||
$this->tax_rate = $this->client->company->tax_data->regions->AU->subregions->{$this->client->company->country()->iso_3166_2}->tax_rate;
|
||||
$this->reduced_tax_rate = $this->client->company->tax_data->regions->AU->subregions->{$this->client->company->country()->iso_3166_2}->reduced_tax_rate;
|
||||
}
|
||||
|
44
app/DataMapper/Tax/BE/Rule.php
Normal file
44
app/DataMapper/Tax/BE/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\BE;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'BTW';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/BG/Rule.php
Normal file
44
app/DataMapper/Tax/BG/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\BG;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'НДС';
|
||||
|
||||
}
|
@ -263,7 +263,8 @@ class BaseRule implements RuleInterface
|
||||
|
||||
public function isTaxableRegion(): bool
|
||||
{
|
||||
return $this->client->company->tax_data->regions->{$this->client_region}->tax_all_subregions || $this->client->company->tax_data->regions->{$this->client_region}->subregions->{$this->client_subregion}->apply_tax;
|
||||
return $this->client->company->tax_data->regions->{$this->client_region}->tax_all_subregions ||
|
||||
(property_exists($this->client->company->tax_data->regions->{$this->client_region}->subregions, $this->client_subregion) && $this->client->company->tax_data->regions->{$this->client_region}->subregions->{$this->client_subregion}->apply_tax);
|
||||
}
|
||||
|
||||
public function defaultForeign(): self
|
||||
|
44
app/DataMapper/Tax/CY/Rule.php
Normal file
44
app/DataMapper/Tax/CY/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\CY;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'ΦΠΑ';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/CZ/Rule.php
Normal file
44
app/DataMapper/Tax/CZ/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\CZ;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'DPH';
|
||||
|
||||
}
|
@ -217,20 +217,20 @@ class Rule extends BaseRule implements RuleInterface
|
||||
public function calculateRates(): self
|
||||
{
|
||||
if ($this->client->is_tax_exempt) {
|
||||
nlog("tax exempt");
|
||||
// nlog("tax exempt");
|
||||
$this->tax_rate = 0;
|
||||
$this->reduced_tax_rate = 0;
|
||||
}
|
||||
elseif($this->client_subregion != $this->client->company->tax_data->seller_subregion && in_array($this->client_subregion, $this->eu_country_codes) && $this->client->vat_number && $this->eu_business_tax_exempt)
|
||||
// elseif($this->client_subregion != $this->client->company->tax_data->seller_subregion && in_array($this->client_subregion, $this->eu_country_codes) && $this->client->has_valid_vat_number && $this->eu_business_tax_exempt)
|
||||
{
|
||||
nlog("euro zone and tax exempt");
|
||||
// nlog("euro zone and tax exempt");
|
||||
$this->tax_rate = 0;
|
||||
$this->reduced_tax_rate = 0;
|
||||
}
|
||||
elseif(!in_array($this->client_subregion, $this->eu_country_codes) && ($this->foreign_consumer_tax_exempt || $this->foreign_business_tax_exempt)) //foreign + tax exempt
|
||||
{
|
||||
nlog("foreign and tax exempt");
|
||||
// nlog("foreign and tax exempt");
|
||||
$this->tax_rate = 0;
|
||||
$this->reduced_tax_rate = 0;
|
||||
}
|
||||
@ -242,18 +242,18 @@ class Rule extends BaseRule implements RuleInterface
|
||||
{
|
||||
if(($this->client->company->tax_data->seller_subregion != $this->client_subregion) && $this->client->company->tax_data->regions->EU->has_sales_above_threshold)
|
||||
{
|
||||
nlog("eu zone with sales above threshold");
|
||||
// nlog("eu zone with sales above threshold");
|
||||
$this->tax_rate = $this->client->company->tax_data->regions->EU->subregions->{$this->client->country->iso_3166_2}->tax_rate;
|
||||
$this->reduced_tax_rate = $this->client->company->tax_data->regions->EU->subregions->{$this->client->country->iso_3166_2}->reduced_tax_rate;
|
||||
}
|
||||
else {
|
||||
nlog("EU with intra-community supply ie DE to DE");
|
||||
// nlog("EU with intra-community supply ie DE to DE");
|
||||
$this->tax_rate = $this->client->company->tax_data->regions->EU->subregions->{$this->client->company->country()->iso_3166_2}->tax_rate;
|
||||
$this->reduced_tax_rate = $this->client->company->tax_data->regions->EU->subregions->{$this->client->company->country()->iso_3166_2}->reduced_tax_rate;
|
||||
}
|
||||
}
|
||||
else {
|
||||
nlog("default tax");
|
||||
// nlog("default tax");
|
||||
$this->tax_rate = $this->client->company->tax_data->regions->EU->subregions->{$this->client->company->country()->iso_3166_2}->tax_rate;
|
||||
$this->reduced_tax_rate = $this->client->company->tax_data->regions->EU->subregions->{$this->client->company->country()->iso_3166_2}->reduced_tax_rate;
|
||||
}
|
||||
|
44
app/DataMapper/Tax/DK/Rule.php
Normal file
44
app/DataMapper/Tax/DK/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\DK;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'Moms';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/EE/Rule.php
Normal file
44
app/DataMapper/Tax/EE/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\EE;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'KM';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/ES/Rule.php
Normal file
44
app/DataMapper/Tax/ES/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\ES;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'IVA';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/FI/Rule.php
Normal file
44
app/DataMapper/Tax/FI/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\FI;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'ALV';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/FR/Rule.php
Normal file
44
app/DataMapper/Tax/FR/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\FR;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'TVA';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/GR/Rule.php
Normal file
44
app/DataMapper/Tax/GR/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\GR;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'IVA';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/HR/Rule.php
Normal file
44
app/DataMapper/Tax/HR/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\HR;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'PDV';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/HU/Rule.php
Normal file
44
app/DataMapper/Tax/HU/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\HU;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'ÁFA';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/IE/Rule.php
Normal file
44
app/DataMapper/Tax/IE/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\IE;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'VAT';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/IT/Rule.php
Normal file
44
app/DataMapper/Tax/IT/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\IT;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'IVA';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/LT/Rule.php
Normal file
44
app/DataMapper/Tax/LT/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\LT;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'PVM';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/LU/Rule.php
Normal file
44
app/DataMapper/Tax/LU/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\LU;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'TVA';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/LV/Rule.php
Normal file
44
app/DataMapper/Tax/LV/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\LV;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'PVN';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/MT/Rule.php
Normal file
44
app/DataMapper/Tax/MT/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\MT;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'VAT';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/NL/Rule.php
Normal file
44
app/DataMapper/Tax/NL/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\NL;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'BTW';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/PT/Rule.php
Normal file
44
app/DataMapper/Tax/PT/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\PT;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'IVA';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/RO/Rule.php
Normal file
44
app/DataMapper/Tax/RO/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\RO;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'TVA';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/SE/Rule.php
Normal file
44
app/DataMapper/Tax/SE/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\SE;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'Moms';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/SI/Rule.php
Normal file
44
app/DataMapper/Tax/SI/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\SI;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'DDV';
|
||||
|
||||
}
|
44
app/DataMapper/Tax/SK/Rule.php
Normal file
44
app/DataMapper/Tax/SK/Rule.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\Tax\SK;
|
||||
|
||||
use App\DataMapper\Tax\DE\Rule as DERule;
|
||||
|
||||
class Rule extends DERule
|
||||
{
|
||||
/** @var string $seller_region */
|
||||
public string $seller_region = 'EU';
|
||||
|
||||
/** @var bool $consumer_tax_exempt */
|
||||
public bool $consumer_tax_exempt = false;
|
||||
|
||||
/** @var bool $business_tax_exempt */
|
||||
public bool $business_tax_exempt = false;
|
||||
|
||||
/** @var bool $eu_business_tax_exempt */
|
||||
public bool $eu_business_tax_exempt = true;
|
||||
|
||||
/** @var bool $foreign_business_tax_exempt */
|
||||
public bool $foreign_business_tax_exempt = false;
|
||||
|
||||
/** @var bool $foreign_consumer_tax_exempt */
|
||||
public bool $foreign_consumer_tax_exempt = false;
|
||||
|
||||
/** @var float $tax_rate */
|
||||
public float $tax_rate = 0;
|
||||
|
||||
/** @var float $reduced_tax_rate */
|
||||
public float $reduced_tax_rate = 0;
|
||||
|
||||
public string $tax_name1 = 'DPH';
|
||||
|
||||
}
|
@ -344,9 +344,9 @@ class TaxModel
|
||||
$this->regions->EU->subregions = new \stdClass();
|
||||
|
||||
$this->regions->EU->subregions->AT = new \stdClass();
|
||||
$this->regions->EU->subregions->AT->tax_rate = 21;
|
||||
$this->regions->EU->subregions->AT->tax_rate = 20;
|
||||
$this->regions->EU->subregions->AT->tax_name = 'USt';
|
||||
$this->regions->EU->subregions->AT->reduced_tax_rate = 11;
|
||||
$this->regions->EU->subregions->AT->reduced_tax_rate = 10;
|
||||
$this->regions->EU->subregions->AT->apply_tax = false;
|
||||
|
||||
$this->regions->EU->subregions->BE = new \stdClass();
|
||||
|
@ -105,7 +105,7 @@ class Handler extends ExceptionHandler
|
||||
|
||||
if($exception instanceof ThrottleRequestsException && class_exists(\Modules\Admin\Events\ThrottledExceptionRaised::class)) {
|
||||
$uri = urldecode(request()->getRequestUri());
|
||||
event(new \Modules\Admin\Events\ThrottledExceptionRaised(auth()->user()?->account?->key, $uri));
|
||||
event(new \Modules\Admin\Events\ThrottledExceptionRaised(auth()->user()?->account?->key, $uri, request()->ip()));
|
||||
}
|
||||
|
||||
Integration::configureScope(function (Scope $scope): void {
|
||||
|
@ -138,6 +138,7 @@ abstract class QueryFilters
|
||||
*/
|
||||
public function status(string $filter = ''): Builder
|
||||
{
|
||||
|
||||
if (strlen($filter) == 0) {
|
||||
return $this->builder;
|
||||
}
|
||||
@ -146,17 +147,17 @@ abstract class QueryFilters
|
||||
|
||||
return $this->builder->where(function ($query) use ($filters) {
|
||||
if (in_array(self::STATUS_ACTIVE, $filters)) {
|
||||
$query->orWhereNull('deleted_at');
|
||||
$query = $query->orWhereNull('deleted_at');
|
||||
}
|
||||
|
||||
if (in_array(self::STATUS_ARCHIVED, $filters)) {
|
||||
$query->orWhere(function ($query) {
|
||||
$query->whereNotNull('deleted_at')->where('is_deleted', 0);
|
||||
$query = $query->orWhere(function ($q) {
|
||||
$q->whereNotNull('deleted_at')->where('is_deleted', 0);
|
||||
});
|
||||
}
|
||||
|
||||
if (in_array(self::STATUS_DELETED, $filters)) {
|
||||
$query->orWhere('is_deleted', 1);
|
||||
$query = $query->orWhere('is_deleted', 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -61,32 +61,32 @@ class InvoiceItemSum
|
||||
|
||||
private array $tax_jurisdictions = [
|
||||
'AT', // Austria
|
||||
// 'BE', // Belgium
|
||||
// 'BG', // Bulgaria
|
||||
// 'CY', // Cyprus
|
||||
// 'CZ', // Czech Republic
|
||||
'BE', // Belgium
|
||||
'BG', // Bulgaria
|
||||
'CY', // Cyprus
|
||||
'CZ', // Czech Republic
|
||||
'DE', // Germany
|
||||
// 'DK', // Denmark
|
||||
// 'EE', // Estonia
|
||||
// 'ES', // Spain
|
||||
// 'FI', // Finland
|
||||
// 'FR', // France
|
||||
// 'GR', // Greece
|
||||
// 'HR', // Croatia
|
||||
// 'HU', // Hungary
|
||||
// 'IE', // Ireland
|
||||
// 'IT', // Italy
|
||||
// 'LT', // Lithuania
|
||||
// 'LU', // Luxembourg
|
||||
// 'LV', // Latvia
|
||||
// 'MT', // Malta
|
||||
// 'NL', // Netherlands
|
||||
// 'PL', // Poland
|
||||
// 'PT', // Portugal
|
||||
// 'RO', // Romania
|
||||
// 'SE', // Sweden
|
||||
// 'SI', // Slovenia
|
||||
// 'SK', // Slovakia
|
||||
'DK', // Denmark
|
||||
'EE', // Estonia
|
||||
'ES', // Spain
|
||||
'FI', // Finland
|
||||
'FR', // France
|
||||
'GR', // Greece
|
||||
'HR', // Croatia
|
||||
'HU', // Hungary
|
||||
'IE', // Ireland
|
||||
'IT', // Italy
|
||||
'LT', // Lithuania
|
||||
'LU', // Luxembourg
|
||||
'LV', // Latvia
|
||||
'MT', // Malta
|
||||
'NL', // Netherlands
|
||||
'PL', // Poland
|
||||
'PT', // Portugal
|
||||
'RO', // Romania
|
||||
'SE', // Sweden
|
||||
'SI', // Slovenia
|
||||
'SK', // Slovakia
|
||||
|
||||
'US', // USA
|
||||
|
||||
|
@ -11,12 +11,13 @@
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Account;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
use App\Models\Company;
|
||||
use App\Libraries\MultiDB;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
|
@ -69,7 +69,7 @@ class ResetPasswordController extends Controller
|
||||
$account = Account::first();
|
||||
}
|
||||
|
||||
return $this->render('auth.passwords.reset', ['root' => 'themes', 'token' => $token, 'account' => $account]);
|
||||
return $this->render('auth.passwords.reset', ['root' => 'themes', 'token' => $token, 'account' => $account, 'email' => $request->email]);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,4 +111,28 @@ class ResetPasswordController extends Controller
|
||||
|
||||
return redirect('/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the response for a successful password reset.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param string $response
|
||||
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
|
||||
*/
|
||||
protected function sendResetResponse(Request $request, $response)
|
||||
{
|
||||
if ($request->wantsJson()) {
|
||||
return new JsonResponse(['message' => trans($response)], 200);
|
||||
}
|
||||
|
||||
if(Ninja::isHosted() && $request->hasHeader('X-React')){
|
||||
return redirect('https://app.invoicing.co/#/login');
|
||||
}
|
||||
elseif($request->hasHeader('X-React'))
|
||||
return redirect('/#/login');
|
||||
|
||||
return redirect($this->redirectPath())
|
||||
->with('status', trans($response));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -176,7 +176,9 @@ class PreviewController extends BaseController
|
||||
if (Ninja::isHosted() && !in_array($request->getHost(), ['preview.invoicing.co','staging.invoicing.co'])) {
|
||||
return response()->json(['message' => 'This server cannot handle this request.'], 400);
|
||||
}
|
||||
|
||||
|
||||
$start = microtime(true);
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
@ -322,6 +324,8 @@ class PreviewController extends BaseController
|
||||
|
||||
$response = Response::make($file_path, 200);
|
||||
$response->header('Content-Type', 'application/pdf');
|
||||
$response->header('Server-Timing', microtime(true)-$start);
|
||||
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
@ -15,44 +15,18 @@ use App\Libraries\MultiDB;
|
||||
|
||||
class SubdomainController extends BaseController
|
||||
{
|
||||
private $protected = [
|
||||
'www',
|
||||
'app',
|
||||
'ninja',
|
||||
'sentry',
|
||||
'sentry2',
|
||||
'staging',
|
||||
'pdf',
|
||||
'demo',
|
||||
'docs',
|
||||
'client_domain',
|
||||
'custom_domain',
|
||||
'preview',
|
||||
'invoiceninja',
|
||||
'cname',
|
||||
'sandbox',
|
||||
'stage',
|
||||
'html',
|
||||
'lb',
|
||||
'shopify',
|
||||
'beta',
|
||||
'prometh',
|
||||
'license',
|
||||
'socket',
|
||||
];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
* Return if a subdomain is available.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
if (in_array(request()->input('subdomain'), $this->protected) || MultiDB::findAndSetDbByDomain(['subdomain' => request()->input('subdomain')])) {
|
||||
if (!MultiDB::checkDomainAvailable(request()->input('subdomain'))) {
|
||||
return response()->json(['message' => 'Domain not available'], 401);
|
||||
}
|
||||
|
||||
|
@ -84,6 +84,7 @@ trait VerifiesUserEmail
|
||||
return $this->render('auth.confirmed', [
|
||||
'root' => 'themes',
|
||||
'message' => ctrans('texts.security_confirmation'),
|
||||
'redirect_url' => request()->hasHeader('X-React') ? 'https://app.invoicing.co/#/' : url('/'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -231,8 +231,11 @@ class UserController extends BaseController
|
||||
|
||||
$return_user_collection = collect();
|
||||
|
||||
$users->each(function ($user, $key) use ($action, $return_user_collection) {
|
||||
if (auth()->user()->can('edit', $user)) {
|
||||
/** @var \App\Models\User $logged_in_user */
|
||||
$logged_in_user = auth()->user();
|
||||
|
||||
$users->each(function ($user, $key) use ($logged_in_user, $action, $return_user_collection) {
|
||||
if ($logged_in_user->can('edit', $user)) {
|
||||
$this->user_repo->{$action}($user);
|
||||
|
||||
$return_user_collection->push($user->id);
|
||||
@ -251,12 +254,11 @@ class UserController extends BaseController
|
||||
*/
|
||||
public function detach(DetachCompanyUserRequest $request, User $user)
|
||||
{
|
||||
// if ($request->entityIsDeleted($user)) {
|
||||
// return $request->disallowUpdate();
|
||||
// }
|
||||
/** @var \App\Models\User $logged_in_user */
|
||||
$logged_in_user = auth()->user();
|
||||
|
||||
$company_user = CompanyUser::whereUserId($user->id)
|
||||
->whereCompanyId(auth()->user()->companyId())
|
||||
->whereCompanyId($logged_in_user->companyId())
|
||||
->withTrashed()
|
||||
->first();
|
||||
|
||||
|
@ -15,7 +15,7 @@ class Cors
|
||||
// ALLOW OPTIONS METHOD
|
||||
$headers = [
|
||||
'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
|
||||
'Access-Control-Allow-Headers'=> 'X-API-PASSWORD-BASE64,X-API-COMPANY-KEY,X-CLIENT-VERSION,X-API-SECRET,X-API-TOKEN,X-API-PASSWORD,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Disposition,Range,X-CSRF-TOKEN,X-XSRF-TOKEN,X-LIVEWIRE',
|
||||
'Access-Control-Allow-Headers'=> 'X-React,X-API-PASSWORD-BASE64,X-API-COMPANY-KEY,X-CLIENT-VERSION,X-API-SECRET,X-API-TOKEN,X-API-PASSWORD,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Disposition,Range,X-CSRF-TOKEN,X-XSRF-TOKEN,X-LIVEWIRE',
|
||||
];
|
||||
|
||||
return Response::make('OK', 200, $headers);
|
||||
@ -25,7 +25,7 @@ class Cors
|
||||
|
||||
$response->headers->set('Access-Control-Allow-Origin', '*');
|
||||
$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
|
||||
$response->headers->set('Access-Control-Allow-Headers', 'X-API-PASSWORD-BASE64,X-API-COMPANY-KEY,X-API-SECRET,X-API-TOKEN,X-API-PASSWORD,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Disposition,Range,X-CSRF-TOKEN,X-XSRF-TOKEN,X-LIVEWIRE');
|
||||
$response->headers->set('Access-Control-Allow-Headers', 'X-React,X-API-PASSWORD-BASE64,X-API-COMPANY-KEY,X-API-SECRET,X-API-TOKEN,X-API-PASSWORD,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Disposition,Range,X-CSRF-TOKEN,X-XSRF-TOKEN,X-LIVEWIRE');
|
||||
$response->headers->set('Access-Control-Expose-Headers', 'X-APP-VERSION,X-MINIMUM-CLIENT-VERSION,Content-Disposition');
|
||||
$response->headers->set('X-APP-VERSION', config('ninja.app_version'));
|
||||
$response->headers->set('X-MINIMUM-CLIENT-VERSION', config('ninja.minimum_client_version'));
|
||||
|
@ -61,14 +61,11 @@ class UpdateCompanyRequest extends Request
|
||||
|
||||
if (isset($input['portal_mode']) && ($input['portal_mode'] == 'domain' || $input['portal_mode'] == 'iframe')) {
|
||||
$rules['portal_domain'] = 'sometimes|url';
|
||||
} else {
|
||||
if (Ninja::isHosted()) {
|
||||
$rules['subdomain'] = ['nullable', 'regex:/^[a-zA-Z0-9.-]+[a-zA-Z0-9]$/', new ValidSubdomain($this->all())];
|
||||
} else {
|
||||
$rules['subdomain'] = 'nullable|regex:/^[a-zA-Z0-9.-]+[a-zA-Z0-9]$/';
|
||||
}
|
||||
}
|
||||
|
||||
if (Ninja::isHosted())
|
||||
$rules['subdomain'] = ['nullable', 'regex:/^[a-zA-Z0-9.-]+[a-zA-Z0-9]$/', new ValidSubdomain()];
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
@ -85,6 +82,10 @@ class UpdateCompanyRequest extends Request
|
||||
$input['settings'] = (array)$this->filterSaveableSettings($input['settings']);
|
||||
}
|
||||
|
||||
if(array_key_exists('subdomain', $input) && $this->subdomain == $input['subdomain']) {
|
||||
unset($input['subdomain']);
|
||||
}
|
||||
|
||||
if(array_key_exists('e_invoice_certificate_passphrase', $input) && empty($input['e_invoice_certificate_passphrase'])) {
|
||||
unset($input['e_invoice_certificate_passphrase']);
|
||||
}
|
||||
|
@ -59,6 +59,11 @@ class StoreSchedulerRequest extends Request
|
||||
if (array_key_exists('next_run', $input) && is_string($input['next_run'])) {
|
||||
$this->merge(['next_run_client' => $input['next_run']]);
|
||||
}
|
||||
|
||||
|
||||
if($input['template'] == 'email_record'){
|
||||
$input['frequency_id'] = 0;
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
}
|
||||
}
|
||||
|
@ -57,5 +57,12 @@ class UpdateSchedulerRequest extends Request
|
||||
$this->merge(['next_run_client' => $input['next_run']]);
|
||||
}
|
||||
|
||||
if($input['template'] == 'email_record') {
|
||||
$input['frequency_id'] = 0;
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -19,25 +19,18 @@ use Illuminate\Contracts\Validation\Rule;
|
||||
*/
|
||||
class ValidSubdomain implements Rule
|
||||
{
|
||||
/**
|
||||
* @param string $attribute
|
||||
* @param mixed $value
|
||||
* @return bool
|
||||
*/
|
||||
private $input;
|
||||
|
||||
public function __construct($input)
|
||||
public function __construct()
|
||||
{
|
||||
$this->input = $input;
|
||||
}
|
||||
|
||||
public function passes($attribute, $value)
|
||||
{
|
||||
if (empty($input['subdomain'])) {
|
||||
if (empty($value)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return MultiDB::checkDomainAvailable($input['subdomain']);
|
||||
return MultiDB::checkDomainAvailable($value);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -144,12 +144,12 @@ class AdjustProductInventory implements ShouldQueue
|
||||
private function notifyStocklevels(Product $product, string $notification_level)
|
||||
{
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new InventoryNotificationObject($product, $notification_level))->build());
|
||||
$nmo->company = $this->company;
|
||||
$nmo->settings = $this->company->settings;
|
||||
|
||||
$this->company->company_users->each(function ($cu) use ($product, $nmo) {
|
||||
$this->company->company_users->each(function ($cu) use ($product, $nmo, $notification_level) {
|
||||
if ($this->checkNotificationExists($cu, $product, ['inventory_all', 'inventory_user', 'inventory_threshold_all', 'inventory_threshold_user'])) {
|
||||
$nmo->mailable = new NinjaMailer((new InventoryNotificationObject($product, $notification_level, $cu->portalType()))->build());
|
||||
$nmo->to_user = $cu->user;
|
||||
NinjaMailerJob::dispatch($nmo);
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ class PaymentFailedMailer implements ShouldQueue
|
||||
if (($key = array_search('mail', $methods)) !== false) {
|
||||
unset($methods[$key]);
|
||||
|
||||
$mail_obj = (new PaymentFailureObject($this->client, $this->error, $this->company, $amount, $this->payment_hash))->build();
|
||||
$mail_obj = (new PaymentFailureObject($this->client, $this->error, $this->company, $amount, $this->payment_hash, $company_user->portalType()))->build();
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer($mail_obj);
|
||||
|
@ -95,7 +95,6 @@ class QuoteCheckExpired implements ShouldQueue
|
||||
private function queueExpiredQuoteNotification(Quote $quote)
|
||||
{
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new QuoteExpiredObject($quote, $quote->company))->build());
|
||||
$nmo->company = $quote->company;
|
||||
$nmo->settings = $quote->company->settings;
|
||||
|
||||
@ -107,6 +106,8 @@ class QuoteCheckExpired implements ShouldQueue
|
||||
if (! $user) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$nmo->mailable = new NinjaMailer((new QuoteExpiredObject($quote, $quote->company, $company_user->portalType()))->build());
|
||||
|
||||
/* Returns an array of notification methods */
|
||||
$methods = $this->findUserNotificationTypes($quote->invitations()->first(), $company_user, 'quote', ['all_notifications', 'quote_expired', 'quote_expired_all', 'quote_expired_user']);
|
||||
|
@ -45,6 +45,32 @@ class MultiDB
|
||||
|
||||
public static $dbs = ['db-ninja-01', 'db-ninja-02'];
|
||||
|
||||
private static $protected_domains = [
|
||||
'www',
|
||||
'app',
|
||||
'ninja',
|
||||
'sentry',
|
||||
'sentry2',
|
||||
'staging',
|
||||
'pdf',
|
||||
'demo',
|
||||
'docs',
|
||||
'client_domain',
|
||||
'custom_domain',
|
||||
'preview',
|
||||
'invoiceninja',
|
||||
'cname',
|
||||
'sandbox',
|
||||
'stage',
|
||||
'html',
|
||||
'lb',
|
||||
'shopify',
|
||||
'beta',
|
||||
'prometh',
|
||||
'license',
|
||||
'socket',
|
||||
];
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
@ -55,10 +81,15 @@ class MultiDB
|
||||
|
||||
public static function checkDomainAvailable($subdomain) : bool
|
||||
{
|
||||
|
||||
if (! config('ninja.db.multi_db_enabled')) {
|
||||
return Company::whereSubdomain($subdomain)->count() == 0;
|
||||
}
|
||||
|
||||
if (in_array($subdomain, self::$protected_domains)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$current_db = config('database.default');
|
||||
|
||||
foreach (self::$dbs as $db) {
|
||||
|
@ -40,8 +40,6 @@ class CreditCreatedNotification implements ShouldQueue
|
||||
{
|
||||
MultiDB::setDb($event->company->db);
|
||||
|
||||
// $first_notification_sent = true;
|
||||
|
||||
$credit = $event->credit;
|
||||
|
||||
/* We loop through each user and determine whether they need to be notified */
|
||||
@ -60,7 +58,7 @@ class CreditCreatedNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntityCreatedObject($credit, 'credit'))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntityCreatedObject($credit, 'credit', $company_user->portalType()))->build());
|
||||
$nmo->company = $credit->company;
|
||||
$nmo->settings = $credit->company->settings;
|
||||
$nmo->to_user = $user;
|
||||
|
@ -56,7 +56,7 @@ class CreditEmailedNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntitySentObject($event->invitation, 'credit', $event->template))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntitySentObject($event->invitation, 'credit', $event->template, $company_user->portalType()))->build());
|
||||
$nmo->company = $credit->company;
|
||||
$nmo->settings = $credit->company->settings;
|
||||
$nmo->to_user = $user;
|
||||
|
@ -24,7 +24,7 @@ class InvoiceCreatedNotification implements ShouldQueue
|
||||
{
|
||||
use UserNotifies;
|
||||
|
||||
public $delay = 7;
|
||||
public $delay = 3;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@ -48,11 +48,11 @@ class InvoiceCreatedNotification implements ShouldQueue
|
||||
foreach ($event->company->company_users as $company_user) {
|
||||
/* The User */
|
||||
$user = $company_user->user;
|
||||
|
||||
|
||||
if (! $user) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
/* This is only here to handle the alternate message channels - ie Slack */
|
||||
// $notification = new EntitySentNotification($event->invitation, 'invoice');
|
||||
|
||||
@ -64,7 +64,7 @@ class InvoiceCreatedNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntityCreatedObject($invoice, 'invoice'))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntityCreatedObject($invoice, 'invoice', $company_user->portalType()))->build());
|
||||
$nmo->company = $invoice->company;
|
||||
$nmo->settings = $invoice->company->settings;
|
||||
$nmo->to_user = $user;
|
||||
|
@ -64,7 +64,7 @@ class InvoiceEmailedNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntitySentObject($event->invitation, 'invoice', $event->template))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntitySentObject($event->invitation, 'invoice', $event->template, $company_user->portalType()))->build());
|
||||
$nmo->company = $invoice->company;
|
||||
$nmo->settings = $invoice->company->settings;
|
||||
$nmo->to_user = $user;
|
||||
|
@ -49,7 +49,7 @@ class InvoiceFailedEmailNotification
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntityFailedSendObject($event->invitation->withoutRelations(), 'invoice', $event->template, $event->message))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntityFailedSendObject($event->invitation->withoutRelations(), 'invoice', $event->template, $event->message, $company_user->portalType()))->build());
|
||||
$nmo->company = $invoice->company->withoutRelations();
|
||||
$nmo->settings = $invoice->company->settings;
|
||||
$nmo->to_user = $user;
|
||||
|
@ -70,7 +70,7 @@ class InvitationViewedListener implements ShouldQueue
|
||||
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntityViewedObject($invitation, $entity_name))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntityViewedObject($invitation, $entity_name, $company_user->portalType()))->build());
|
||||
$nmo->company = $invitation->company;
|
||||
$nmo->settings = $invitation->company->settings;
|
||||
|
||||
|
@ -76,7 +76,7 @@ class PaymentNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntityPaidObject($payment))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntityPaidObject($payment, $company_user->portalType()))->build());
|
||||
$nmo->company = $event->company;
|
||||
$nmo->settings = $event->company->settings;
|
||||
$nmo->to_user = $user;
|
||||
@ -108,7 +108,7 @@ class PaymentNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntityPaidObject($payment))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntityPaidObject($payment, $company_user->portalType()))->build());
|
||||
$nmo->company = $event->company;
|
||||
$nmo->settings = $event->company->settings;
|
||||
$nmo->to_user = $user;
|
||||
@ -161,11 +161,12 @@ class PaymentNotification implements ShouldQueue
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data
|
||||
* @param string $url
|
||||
*/
|
||||
private function sendAnalytics($data)
|
||||
{
|
||||
$data = utf8_encode($data);
|
||||
private function sendAnalytics($url)
|
||||
{
|
||||
$data = mb_convert_encoding($url, 'UTF-8');
|
||||
// $data = utf8_encode($data);
|
||||
$curl = curl_init();
|
||||
|
||||
$opts = [
|
||||
|
@ -59,7 +59,7 @@ class PurchaseOrderAcceptedListener implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new PurchaseOrderAcceptedObject($purchase_order, $event->company))->build());
|
||||
$nmo->mailable = new NinjaMailer((new PurchaseOrderAcceptedObject($purchase_order, $event->company, $company_user->portalType()))->build());
|
||||
$nmo->company = $event->company;
|
||||
$nmo->settings = $event->company->settings;
|
||||
|
||||
|
@ -45,7 +45,6 @@ class PurchaseOrderCreatedListener implements ShouldQueue
|
||||
|
||||
$purchase_order = $event->purchase_order;
|
||||
|
||||
|
||||
/* We loop through each user and determine whether they need to be notified */
|
||||
foreach ($event->company->company_users as $company_user) {
|
||||
/* The User */
|
||||
@ -66,7 +65,7 @@ class PurchaseOrderCreatedListener implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntityCreatedObject($purchase_order, 'purchase_order'))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntityCreatedObject($purchase_order, 'purchase_order', $company_user->portalType()))->build());
|
||||
$nmo->company = $purchase_order->company;
|
||||
$nmo->settings = $purchase_order->company->settings;
|
||||
|
||||
|
@ -62,7 +62,7 @@ class PurchaseOrderEmailedNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntitySentObject($event->invitation, 'purchase_order', 'purchase_order'))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntitySentObject($event->invitation, 'purchase_order', 'purchase_order', $company_user->portalType()))->build());
|
||||
$nmo->company = $purchase_order->company;
|
||||
$nmo->settings = $purchase_order->company->settings;
|
||||
$nmo->to_user = $user;
|
||||
|
@ -61,7 +61,7 @@ class QuoteApprovedNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new QuoteApprovedObject($quote, $event->company))->build());
|
||||
$nmo->mailable = new NinjaMailer((new QuoteApprovedObject($quote, $event->company, $company_user->portalType()))->build());
|
||||
$nmo->company = $quote->company;
|
||||
$nmo->settings = $quote->company->settings;
|
||||
|
||||
|
@ -54,6 +54,12 @@ class QuoteCreatedNotification implements ShouldQueue
|
||||
continue;
|
||||
}
|
||||
|
||||
$use_react_link = false;
|
||||
|
||||
if(isset($company_user->react_settings->react_notification_link) && $company_user->react_settings->react_notification_link) {
|
||||
$use_react_link = true;
|
||||
}
|
||||
|
||||
/* This is only here to handle the alternate message channels - ie Slack */
|
||||
// $notification = new EntitySentNotification($event->invitation, 'quote');
|
||||
|
||||
@ -65,7 +71,7 @@ class QuoteCreatedNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntityCreatedObject($quote, 'quote'))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntityCreatedObject($quote, 'quote', $company_user->portalType()))->build());
|
||||
$nmo->company = $quote->company;
|
||||
$nmo->settings = $quote->company->settings;
|
||||
|
||||
|
@ -54,7 +54,7 @@ class QuoteEmailedNotification implements ShouldQueue
|
||||
unset($methods[$key]);
|
||||
|
||||
$nmo = new NinjaMailerObject;
|
||||
$nmo->mailable = new NinjaMailer((new EntitySentObject($event->invitation, 'quote', $event->template))->build());
|
||||
$nmo->mailable = new NinjaMailer((new EntitySentObject($event->invitation, 'quote', $event->template, $company_user->portalType()))->build());
|
||||
$nmo->company = $quote->company;
|
||||
$nmo->settings = $quote->company->settings;
|
||||
$nmo->to_user = $user;
|
||||
|
@ -11,19 +11,16 @@
|
||||
|
||||
namespace App\Mail\Admin;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Utils\Ninja;
|
||||
use App\Models\Company;
|
||||
use Illuminate\Support\Facades\App;
|
||||
|
||||
class AccountCreatedObject
|
||||
{
|
||||
public $user;
|
||||
|
||||
public $company;
|
||||
|
||||
public function __construct($user, $company)
|
||||
|
||||
public function __construct(public User $user, public Company $company)
|
||||
{
|
||||
$this->user = $user;
|
||||
$this->company = $company;
|
||||
}
|
||||
|
||||
public function build()
|
||||
|
@ -17,7 +17,7 @@ use App\Utils\Ninja;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use stdClass;
|
||||
|
||||
//@deprecated
|
||||
class AutoBillingFailureObject
|
||||
{
|
||||
use MakesHash;
|
||||
|
@ -33,10 +33,13 @@ class EntityCreatedObject
|
||||
|
||||
private $template_body;
|
||||
|
||||
public function __construct($entity, $entity_type)
|
||||
protected bool $use_react_link;
|
||||
|
||||
public function __construct($entity, $entity_type, $use_react_link = false)
|
||||
{
|
||||
$this->entity_type = $entity_type;
|
||||
$this->entity = $entity;
|
||||
$this->use_react_link = $use_react_link;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -81,7 +84,7 @@ class EntityCreatedObject
|
||||
'purchase_order' => $this->entity->number,
|
||||
]
|
||||
),
|
||||
'url' => $this->entity->invitations()->first()->getAdminLink(),
|
||||
'url' => $this->entity->invitations()->first()->getAdminLink($this->use_react_link),
|
||||
'button' => ctrans("texts.view_{$this->entity_type}"),
|
||||
'signature' => $this->company->settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
@ -165,7 +168,7 @@ class EntityCreatedObject
|
||||
return [
|
||||
'title' => $this->getSubject(),
|
||||
'message' => $this->getMessage(),
|
||||
'url' => $this->entity->invitations()->first()->getAdminLink(),
|
||||
'url' => $this->entity->invitations()->first()->getAdminLink($this->use_react_link),
|
||||
'button' => ctrans("texts.view_{$this->entity_type}"),
|
||||
'signature' => $settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
|
@ -39,7 +39,9 @@ class EntityFailedSendObject
|
||||
|
||||
private $message;
|
||||
|
||||
public function __construct($invitation, $entity_type, $template, $message)
|
||||
protected $use_react_url;
|
||||
|
||||
public function __construct($invitation, $entity_type, $template, $message, $use_react_url)
|
||||
{
|
||||
$this->invitation = $invitation;
|
||||
$this->entity_type = $entity_type;
|
||||
@ -48,6 +50,7 @@ class EntityFailedSendObject
|
||||
$this->company = $invitation->company;
|
||||
$this->template = $template;
|
||||
$this->message = $message;
|
||||
$this->use_react_url = $use_react_url;
|
||||
}
|
||||
|
||||
public function build()
|
||||
@ -149,7 +152,7 @@ class EntityFailedSendObject
|
||||
'contact' => $this->contact->present()->name(),
|
||||
]
|
||||
),
|
||||
'url' => $this->invitation->getAdminLink(),
|
||||
'url' => $this->invitation->getAdminLink($this->use_react_url),
|
||||
'button' => ctrans("texts.view_{$this->entity_type}"),
|
||||
'signature' => $signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
|
@ -30,7 +30,7 @@ class EntityPaidObject
|
||||
|
||||
public $settings;
|
||||
|
||||
public function __construct(public Payment $payment)
|
||||
public function __construct(public Payment $payment, protected bool $use_react_url)
|
||||
{
|
||||
$this->payment = $payment;
|
||||
$this->company = $payment->company;
|
||||
@ -98,7 +98,7 @@ class EntityPaidObject
|
||||
'invoice' => $invoice_texts,
|
||||
]
|
||||
),
|
||||
'url' => config('ninja.app_url'),
|
||||
'url' => $this->payment->portalUrl($this->use_react_url),
|
||||
'button' => ctrans('texts.view_payment'),
|
||||
'signature' => $settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
@ -117,4 +117,5 @@ class EntityPaidObject
|
||||
|
||||
return $signature;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -36,7 +36,9 @@ class EntitySentObject
|
||||
|
||||
private $template_body;
|
||||
|
||||
public function __construct($invitation, $entity_type, $template)
|
||||
protected $use_react_url;
|
||||
|
||||
public function __construct($invitation, $entity_type, $template, $use_react_url)
|
||||
{
|
||||
$this->invitation = $invitation;
|
||||
$this->entity_type = $entity_type;
|
||||
@ -44,6 +46,7 @@ class EntitySentObject
|
||||
$this->contact = $invitation->contact;
|
||||
$this->company = $invitation->company;
|
||||
$this->template = $template;
|
||||
$this->use_react_url = $use_react_url;
|
||||
}
|
||||
|
||||
public function build()
|
||||
@ -78,7 +81,7 @@ class EntitySentObject
|
||||
'purchase_order' => $this->entity->number,
|
||||
]
|
||||
),
|
||||
'url' => $this->invitation->getAdminLink(),
|
||||
'url' => $this->invitation->getAdminLink($this->use_react_url),
|
||||
'button' => ctrans("texts.view_{$this->entity_type}"),
|
||||
'signature' => $this->company->settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
@ -185,7 +188,7 @@ class EntitySentObject
|
||||
return [
|
||||
'title' => $this->getSubject(),
|
||||
'message' => $this->getMessage(),
|
||||
'url' => $this->invitation->getAdminLink(),
|
||||
'url' => $this->invitation->getAdminLink($this->use_react_url),
|
||||
'button' => ctrans("texts.view_{$this->entity_type}"),
|
||||
'signature' => $settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
|
@ -30,13 +30,16 @@ class EntityViewedObject
|
||||
|
||||
public $settings;
|
||||
|
||||
public function __construct($invitation, $entity_type)
|
||||
protected $use_react_url;
|
||||
|
||||
public function __construct($invitation, $entity_type, $use_react_url)
|
||||
{
|
||||
$this->invitation = $invitation;
|
||||
$this->entity_type = $entity_type;
|
||||
$this->entity = $invitation->{$entity_type};
|
||||
$this->contact = $invitation->contact;
|
||||
$this->company = $invitation->company;
|
||||
$this->use_react_url = $use_react_url;
|
||||
}
|
||||
|
||||
public function build()
|
||||
@ -104,7 +107,7 @@ class EntityViewedObject
|
||||
'invoice' => $this->entity->number,
|
||||
]
|
||||
),
|
||||
'url' => $this->invitation->getAdminLink(),
|
||||
'url' => $this->invitation->getAdminLink($this->use_react_url),
|
||||
'button' => ctrans("texts.view_{$this->entity_type}"),
|
||||
'signature' => $settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
|
@ -12,7 +12,6 @@
|
||||
|
||||
namespace App\Mail\Admin;
|
||||
|
||||
use App\Models\Company;
|
||||
use App\Models\Product;
|
||||
use App\Utils\Ninja;
|
||||
use Illuminate\Support\Facades\App;
|
||||
@ -20,19 +19,9 @@ use stdClass;
|
||||
|
||||
class InventoryNotificationObject
|
||||
{
|
||||
public Product $product;
|
||||
|
||||
public Company $company;
|
||||
|
||||
public $settings;
|
||||
|
||||
public string $notification_level;
|
||||
|
||||
public function __construct(Product $product, string $notification_level)
|
||||
|
||||
public function __construct(protected Product $product, public string $notification_level, protected bool $use_react_url)
|
||||
{
|
||||
$this->product = $product;
|
||||
$this->company = $product->company;
|
||||
$this->settings = $this->company->settings;
|
||||
}
|
||||
|
||||
public function build()
|
||||
@ -41,16 +30,16 @@ class InventoryNotificationObject
|
||||
/* Init a new copy of the translator*/
|
||||
$t = app('translator');
|
||||
/* Set the locale*/
|
||||
App::setLocale($this->company->getLocale());
|
||||
App::setLocale($this->product->company->getLocale());
|
||||
/* Set customized translations _NOW_ */
|
||||
$t->replace(Ninja::transformTranslations($this->company->settings));
|
||||
$t->replace(Ninja::transformTranslations($this->product->company->settings));
|
||||
|
||||
$mail_obj = new stdClass;
|
||||
$mail_obj->amount = $this->getAmount();
|
||||
$mail_obj->subject = $this->getSubject();
|
||||
$mail_obj->data = $this->getData();
|
||||
$mail_obj->markdown = 'email.admin.generic';
|
||||
$mail_obj->tag = $this->company->company_key;
|
||||
$mail_obj->tag = $this->product->company->company_key;
|
||||
|
||||
return $mail_obj;
|
||||
}
|
||||
@ -79,12 +68,12 @@ class InventoryNotificationObject
|
||||
'product' => $this->product->product_key.': '.$this->product->notes,
|
||||
]
|
||||
),
|
||||
'url' => config('ninja.app_url'),
|
||||
'button' => ctrans('texts.login'),
|
||||
'signature' => $this->settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
'settings' => $this->settings,
|
||||
'whitelabel' => $this->company->account->isPaid() ? true : false,
|
||||
'url' => $this->product->portalUrl($this->use_react_url),
|
||||
'button' => $this->use_react_url ? ctrans('texts.product_library') : ctrans('ninja.app_url'),
|
||||
'signature' => $this->product->company->settings->email_signature,
|
||||
'logo' => $this->product->company->present()->logo(),
|
||||
'settings' => $this->product->company->settings,
|
||||
'whitelabel' => $this->product->company->account->isPaid() ? true : false,
|
||||
];
|
||||
|
||||
return $data;
|
||||
|
@ -24,17 +24,6 @@ class PaymentFailureObject
|
||||
{
|
||||
use MakesHash;
|
||||
|
||||
public Client $client;
|
||||
|
||||
public string $error;
|
||||
|
||||
public Company $company;
|
||||
|
||||
public $amount;
|
||||
|
||||
public ?PaymentHash $payment_hash;
|
||||
// private $invoices;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
@ -43,19 +32,8 @@ class PaymentFailureObject
|
||||
* @param $company
|
||||
* @param $amount
|
||||
*/
|
||||
public function __construct(Client $client, string $error, Company $company, $amount, ?PaymentHash $payment_hash)
|
||||
public function __construct(public Client $client, public string $error, public Company $company, public float $amount, public ?PaymentHash $payment_hash, protected bool $use_react_url)
|
||||
{
|
||||
$this->client = $client;
|
||||
|
||||
$this->error = $error;
|
||||
|
||||
$this->company = $company;
|
||||
|
||||
$this->amount = $amount;
|
||||
|
||||
$this->company = $company;
|
||||
|
||||
$this->payment_hash = $payment_hash;
|
||||
}
|
||||
|
||||
public function build()
|
||||
@ -115,8 +93,8 @@ class PaymentFailureObject
|
||||
'logo' => $this->company->present()->logo(),
|
||||
'settings' => $this->client->getMergedSettings(),
|
||||
'whitelabel' => $this->company->account->isPaid() ? true : false,
|
||||
'url' => config('ninja.app_url'),
|
||||
'button' => ctrans('texts.login'),
|
||||
'url' => $this->client->portalUrl($this->use_react_url),
|
||||
'button' => $this->use_react_url ? ctrans('texts.view_client') : ctrans('texts.login'),
|
||||
'additional_info' => $this->error,
|
||||
];
|
||||
|
||||
|
@ -21,16 +21,9 @@ use stdClass;
|
||||
|
||||
class PurchaseOrderAcceptedObject
|
||||
{
|
||||
public $purchase_order;
|
||||
|
||||
public $company;
|
||||
|
||||
public $settings;
|
||||
|
||||
public function __construct(PurchaseOrder $purchase_order, Company $company)
|
||||
public function __construct(public PurchaseOrder $purchase_order, public Company $company, protected bool $use_react_url)
|
||||
{
|
||||
$this->purchase_order = $purchase_order;
|
||||
$this->company = $company;
|
||||
}
|
||||
|
||||
public function build()
|
||||
@ -90,7 +83,7 @@ class PurchaseOrderAcceptedObject
|
||||
'purchase_order' => $this->purchase_order->number,
|
||||
]
|
||||
),
|
||||
'url' => $this->purchase_order->invitations->first()->getAdminLink(),
|
||||
'url' => $this->purchase_order->invitations->first()->getAdminLink($this->use_react_url),
|
||||
'button' => ctrans('texts.view_purchase_order'),
|
||||
'signature' => $settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
|
@ -21,16 +21,9 @@ use stdClass;
|
||||
|
||||
class QuoteApprovedObject
|
||||
{
|
||||
public $quote;
|
||||
|
||||
public $company;
|
||||
|
||||
public $settings;
|
||||
|
||||
public function __construct(Quote $quote, Company $company)
|
||||
public function __construct(public Quote $quote, public Company $company, public bool $use_react_url)
|
||||
{
|
||||
$this->quote = $quote;
|
||||
$this->company = $company;
|
||||
}
|
||||
|
||||
public function build()
|
||||
@ -90,7 +83,7 @@ class QuoteApprovedObject
|
||||
'invoice' => $this->quote->number,
|
||||
]
|
||||
),
|
||||
'url' => $this->quote->invitations->first()->getAdminLink(),
|
||||
'url' => $this->quote->invitations->first()->getAdminLink($this->use_react_url),
|
||||
'button' => ctrans('texts.view_quote'),
|
||||
'signature' => $settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
|
@ -21,16 +21,9 @@ use stdClass;
|
||||
|
||||
class QuoteExpiredObject
|
||||
{
|
||||
public $quote;
|
||||
|
||||
public $company;
|
||||
|
||||
public $settings;
|
||||
|
||||
public function __construct(Quote $quote, Company $company)
|
||||
public function __construct(public Quote $quote, public Company $company, public bool $use_react_url)
|
||||
{
|
||||
$this->quote = $quote;
|
||||
$this->company = $company;
|
||||
}
|
||||
|
||||
public function build()
|
||||
@ -90,8 +83,8 @@ class QuoteExpiredObject
|
||||
'invoice' => $this->quote->number,
|
||||
]
|
||||
),
|
||||
'url' => $this->quote->invitations->first()->getAdminLink(),
|
||||
'button' => ctrans('texts.view_quote'),
|
||||
'url' => $this->quote->invitations->first()->getAdminLink($this->use_react_url),
|
||||
'button' => $this->use_react_url ? ctrans('texts.view_quote') : ctrans('texts.login'),
|
||||
'signature' => $settings->email_signature,
|
||||
'logo' => $this->company->present()->logo(),
|
||||
'settings' => $settings,
|
||||
|
@ -865,4 +865,9 @@ class Client extends BaseModel implements HasLocalePreference
|
||||
{
|
||||
return ctrans('texts.client');
|
||||
}
|
||||
|
||||
public function portalUrl(bool $use_react_url): string
|
||||
{
|
||||
return $use_react_url ? config('ninja.react_url'). "/clients/{$this->hashed_id}": config('ninja.app_url');
|
||||
}
|
||||
}
|
||||
|
@ -241,37 +241,40 @@ class Company extends BaseModel
|
||||
protected array $tax_coverage_countries = [
|
||||
'US',
|
||||
// //EU countries
|
||||
// 'AT', // Austria
|
||||
// 'BE', // Belgium
|
||||
// 'BG', // Bulgaria
|
||||
// 'CY', // Cyprus
|
||||
// 'CZ', // Czech Republic
|
||||
// 'DE', // Germany
|
||||
// 'DK', // Denmark
|
||||
// 'EE', // Estonia
|
||||
// 'ES', // Spain
|
||||
// 'FI', // Finland
|
||||
// 'FR', // France
|
||||
// 'GR', // Greece
|
||||
// 'HR', // Croatia
|
||||
// 'HU', // Hungary
|
||||
// 'IE', // Ireland
|
||||
// 'IT', // Italy
|
||||
// 'LT', // Lithuania
|
||||
// 'LU', // Luxembourg
|
||||
// 'LV', // Latvia
|
||||
// 'MT', // Malta
|
||||
// 'NL', // Netherlands
|
||||
// 'PL', // Poland
|
||||
// 'PT', // Portugal
|
||||
// 'RO', // Romania
|
||||
// 'SE', // Sweden
|
||||
// 'SI', // Slovenia
|
||||
// 'SK', // Slovakia
|
||||
'AT', // Austria
|
||||
'BE', // Belgium
|
||||
'BG', // Bulgaria
|
||||
'CY', // Cyprus
|
||||
'CZ', // Czech Republic
|
||||
'DE', // Germany
|
||||
'DK', // Denmark
|
||||
'EE', // Estonia
|
||||
'ES', // Spain
|
||||
'FI', // Finland
|
||||
'FR', // France
|
||||
'GR', // Greece
|
||||
'HR', // Croatia
|
||||
'HU', // Hungary
|
||||
'IE', // Ireland
|
||||
'IT', // Italy
|
||||
'LT', // Lithuania
|
||||
'LU', // Luxembourg
|
||||
'LV', // Latvia
|
||||
'MT', // Malta
|
||||
'NL', // Netherlands
|
||||
'PL', // Poland
|
||||
'PT', // Portugal
|
||||
'RO', // Romania
|
||||
'SE', // Sweden
|
||||
'SI', // Slovenia
|
||||
'SK', // Slovakia
|
||||
// //EU Countries
|
||||
'AU', // Australia
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'invoice_task_item_description',
|
||||
'invoice_task_project_header',
|
||||
'invoice_task_hours',
|
||||
'markdown_enabled',
|
||||
'calculate_expense_tax_by_amount',
|
||||
|
@ -35,7 +35,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
* @property int|null $updated_at
|
||||
* @property int $permissions_updated_at
|
||||
* @property string $ninja_portal_url
|
||||
* @property string|null $react_settings
|
||||
* @property object|null $react_settings
|
||||
* @property-read \App\Models\Account $account
|
||||
* @property-read \App\Models\Company $company
|
||||
* @property-read \App\Models\CompanyUser $cu
|
||||
@ -128,6 +128,7 @@ class CompanyUser extends Pivot
|
||||
'settings' => 'object',
|
||||
'notifications' => 'object',
|
||||
'permissions' => 'string',
|
||||
'react_settings' => 'object',
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
@ -195,8 +196,22 @@ class CompanyUser extends Pivot
|
||||
|
||||
public function scopeAuthCompany($query)
|
||||
{
|
||||
$query->where('company_id', auth()->user()->companyId());
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
$query->where('company_id', $user->companyId());
|
||||
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the notifications should be React or Flutter links
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function portalType():bool
|
||||
{
|
||||
return isset($this->react_settings->react_notification_link) && $this->react_settings->react_notification_link;
|
||||
}
|
||||
|
||||
}
|
@ -112,7 +112,14 @@ class CreditInvitation extends BaseModel
|
||||
{
|
||||
return $this->belongsTo(Credit::class)->withTrashed();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function entity()
|
||||
{
|
||||
return $this->belongsTo(Credit::class)->withTrashed();
|
||||
}
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
|
@ -115,6 +115,14 @@ class InvoiceInvitation extends BaseModel
|
||||
return $this->belongsTo(Invoice::class)->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getEntity()
|
||||
{
|
||||
return $this->belongsTo(Invoice::class)->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
|
@ -557,4 +557,10 @@ class Payment extends BaseModel
|
||||
{
|
||||
return ctrans('texts.payment');
|
||||
}
|
||||
|
||||
public function portalUrl($use_react_url)
|
||||
{
|
||||
return $use_react_url ? config('ninja.react_url')."/payments/{$this->hashed_id}/edit" : config('ninja.app_url');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -200,4 +200,9 @@ class Product extends BaseModel
|
||||
|
||||
return $converter->convert($this->notes);
|
||||
}
|
||||
|
||||
public function portalUrl($use_react_url): string
|
||||
{
|
||||
return $use_react_url ? config('ninja.react_url') . "/products/{$this->hashed_id}/edit" : config('ninja.app_url');
|
||||
}
|
||||
}
|
||||
|
@ -110,6 +110,14 @@ class PurchaseOrderInvitation extends BaseModel
|
||||
return $this->belongsTo(PurchaseOrder::class)->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function entity()
|
||||
{
|
||||
return $this->belongsTo(PurchaseOrder::class)->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
@ -186,8 +194,16 @@ class PurchaseOrderInvitation extends BaseModel
|
||||
}
|
||||
}
|
||||
|
||||
public function getAdminLink() :string
|
||||
public function getAdminLink($use_react_link = false) :string
|
||||
{
|
||||
return $this->getLink().'?silent=true';
|
||||
return $use_react_link ? $this->getReactLink() : $this->getLink().'?silent=true';
|
||||
}
|
||||
|
||||
private function getReactLink(): string
|
||||
{
|
||||
$entity_type = Str::snake(class_basename($this->entityType()));
|
||||
|
||||
return config('ninja.react_url')."/{$entity_type}s/{$this->{$entity_type}->hashed_id}/edit";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -113,6 +113,14 @@ class QuoteInvitation extends BaseModel
|
||||
return $this->belongsTo(Quote::class)->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function entity()
|
||||
{
|
||||
return $this->belongsTo(Quote::class)->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
|
@ -104,6 +104,14 @@ class RecurringInvoiceInvitation extends BaseModel
|
||||
return $this->belongsTo(RecurringInvoice::class)->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function entity()
|
||||
{
|
||||
return $this->belongsTo(RecurringInvoice::class)->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
|
@ -154,7 +154,7 @@ class Scheduler extends BaseModel
|
||||
|
||||
switch ($this->frequency_id) {
|
||||
case 0: //used only for email entities
|
||||
$next_run = now()->startOfDay();
|
||||
$next_run = $this->next_run;
|
||||
break;
|
||||
case RecurringInvoice::FREQUENCY_DAILY:
|
||||
$next_run = now()->startOfDay()->addDay();
|
||||
|
@ -38,6 +38,8 @@ class EntityViewedNotification extends Notification
|
||||
|
||||
protected $contact;
|
||||
|
||||
public $is_system;
|
||||
|
||||
public function __construct($invitation, $entity_name, $is_system = false, $settings = null)
|
||||
{
|
||||
$this->entity_name = $entity_name;
|
||||
|
@ -68,6 +68,7 @@ class AuthorizePaymentDriver extends BaseDriver
|
||||
{
|
||||
$data = [
|
||||
['name' => 'client_name', 'label' => ctrans('texts.name'), 'type' => 'text', 'validation' => 'required|min:2'],
|
||||
['name' => 'client_phone', 'label' => ctrans('texts.phone'), 'type' => 'text', 'validation' => 'required'],
|
||||
['name' => 'contact_email', 'label' => ctrans('texts.email'), 'type' => 'text', 'validation' => 'required|email:rfc'],
|
||||
['name' => 'client_address_line_1', 'label' => ctrans('texts.address1'), 'type' => 'text', 'validation' => 'required'],
|
||||
['name' => 'client_city', 'label' => ctrans('texts.city'), 'type' => 'text', 'validation' => 'required'],
|
||||
|
@ -230,7 +230,9 @@ class EmailDefaults
|
||||
|
||||
$this->email->email_object->subject = strtr($this->email->email_object->subject, $this->email->email_object->variables);
|
||||
|
||||
if ($this->template != 'custom') {
|
||||
|
||||
//06-06-2023 ensure we do not parse markdown in custom templates
|
||||
if ($this->template != 'custom' && $this->template != 'email.template.custom') {
|
||||
$this->email->email_object->body = $this->parseMarkdownToHtml($this->email->email_object->body);
|
||||
}
|
||||
|
||||
|
@ -201,6 +201,8 @@ class CompanyTransformer extends EntityTransformer
|
||||
'tax_data' => $company->tax_data ?: new \stdClass,
|
||||
'has_e_invoice_certificate' => $company->e_invoice_certificate ? true : false,
|
||||
'has_e_invoice_certificate_passphrase' => $company->e_invoice_certificate_passphrase ? true : false,
|
||||
'invoice_task_project_header' => (bool) $company->invoice_task_project_header,
|
||||
'invoice_task_item_description' => (bool) $company->invoice_task_item_description,
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ class CompanyUserTransformer extends EntityTransformer
|
||||
'permissions' => $company_user->permissions ?: '',
|
||||
'notifications' => $company_user->notifications ? (object) $company_user->notifications : $blank_obj,
|
||||
'settings' => $company_user->settings ? (object) $company_user->settings : $blank_obj,
|
||||
'react_settings' => $company_user->react_settings ? $company_user->react_settings : [],
|
||||
'react_settings' => $company_user->react_settings ? (object) $company_user->react_settings : $blank_obj,
|
||||
'is_owner' => (bool) $company_user->is_owner,
|
||||
'is_admin' => (bool) $company_user->is_admin,
|
||||
'is_locked' => (bool) $company_user->is_locked,
|
||||
|
@ -139,8 +139,15 @@ trait Inviteable
|
||||
}
|
||||
}
|
||||
|
||||
public function getAdminLink() :string
|
||||
public function getAdminLink($use_react_link = false) :string
|
||||
{
|
||||
return $this->getLink().'?silent=true';
|
||||
return $use_react_link ? $this->getReactLink() : $this->getLink().'?silent=true';
|
||||
}
|
||||
|
||||
private function getReactLink(): string
|
||||
{
|
||||
$entity_type = Str::snake(class_basename($this->entityType()));
|
||||
|
||||
return config('ninja.react_url')."/{$entity_type}s/{$this->{$entity_type}->hashed_id}/edit";
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ return [
|
||||
'web_url' => 'https://www.invoiceninja.com',
|
||||
'admin_token' => env('NINJA_ADMIN_TOKEN', ''),
|
||||
'license_url' => 'https://app.invoiceninja.com',
|
||||
'react_url' => 'https://app.invoicing.co',
|
||||
'react_url' => env('REACT_URL', 'https://app.invoicing.co'),
|
||||
'production' => env('NINJA_PROD', false),
|
||||
'license' => env('NINJA_LICENSE', ''),
|
||||
'version_url' => 'https://pdf.invoicing.co/api/version',
|
||||
@ -15,8 +15,8 @@ return [
|
||||
'require_https' => env('REQUIRE_HTTPS', true),
|
||||
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
||||
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
||||
'app_version' => '5.5.124',
|
||||
'app_tag' => '5.5.124',
|
||||
'app_version' => '5.6.0',
|
||||
'app_tag' => '5.6.0',
|
||||
'minimum_client_version' => '5.0.16',
|
||||
'terms_version' => '1.0.1',
|
||||
'api_secret' => env('API_SECRET', ''),
|
||||
|
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('companies', function (Illuminate\Database\Schema\Blueprint $table) {
|
||||
$table->boolean('invoice_task_project_header')->default(true);
|
||||
$table->boolean('invoice_task_item_description')->default(true);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
};
|
@ -373,11 +373,6 @@ $LANG = array(
|
||||
'invoice_issued_to' => 'الفاتورة الصادرة ل',
|
||||
'invalid_counter' => 'لمنع حدوث تعارض محتمل ، يرجى تعيين بادئة رقم الفاتورة أو عرض الأسعار',
|
||||
'mark_sent' => 'مارك المرسلة',
|
||||
'gateway_help_1' => ':link للتسجيل في Authorize.net.',
|
||||
'gateway_help_2' => ':link للتسجيل في Authorize.net.',
|
||||
'gateway_help_17' => ':link للحصول على توقيع PayPal API الخاص بك.',
|
||||
'gateway_help_27' => ':link للتسجيل في 2Checkout.com. لضمان تتبع المدفوعات ، قم بتعيين :complete_link كعنوان URL لإعادة التوجيه ضمن الحساب> إدارة الموقع في بوابة 2Checkout.',
|
||||
'gateway_help_60' => ':link لإنشاء حساب WePay.',
|
||||
'more_designs' => 'المزيد من التصاميم',
|
||||
'more_designs_title' => 'تصاميم الفاتورة الإضافية',
|
||||
'more_designs_cloud_header' => 'Go Pro لمزيد من تصاميم الفواتير',
|
||||
@ -492,7 +487,6 @@ $LANG = array(
|
||||
'notification_quote_approved' => 'تمت الموافقة على العميل التالي :client اقتباس :invoice لـ :amount.',
|
||||
'resend_confirmation' => 'أعد إرسال رسالة البريد الالكتروني الخاصة بالتأكيد',
|
||||
'confirmation_resent' => 'تم الاستياء من البريد الإلكتروني للتأكيد',
|
||||
'gateway_help_42' => ':link للتسجيل في BitPay.<br/> ملاحظة: استخدم مفتاح واجهة برمجة تطبيقات قديم ، وليس رمزًا مميزًا لواجهة برمجة التطبيقات.',
|
||||
'payment_type_credit_card' => 'بطاقة إئتمان',
|
||||
'payment_type_paypal' => 'باي بال',
|
||||
'payment_type_bitcoin' => 'بيتكوين',
|
||||
@ -577,7 +571,6 @@ $LANG = array(
|
||||
'prefix' => 'بادئة',
|
||||
'counter' => 'عداد',
|
||||
'payment_type_dwolla' => 'دوولا',
|
||||
'gateway_help_43' => ':link للتسجيل في Dwolla',
|
||||
'partial_value' => 'يجب أن يكون أكبر من صفر وأقل من الإجمالي',
|
||||
'more_actions' => 'المزيد من الإجراءات',
|
||||
'pro_plan_title' => 'نينجا برو',
|
||||
@ -1070,8 +1063,6 @@ $LANG = array(
|
||||
'user_create_all' => 'إنشاء العملاء والفواتير وما إلى ذلك.',
|
||||
'user_view_all' => 'عرض جميع العملاء والفواتير وما إلى ذلك.',
|
||||
'user_edit_all' => 'تحرير جميع العملاء والفواتير وما إلى ذلك.',
|
||||
'gateway_help_20' => ':link للتسجيل في Sage Pay.',
|
||||
'gateway_help_21' => ':link للتسجيل في Sage Pay.',
|
||||
'partial_due' => 'استحقاق جزئي',
|
||||
'restore_vendor' => 'استعادة البائع',
|
||||
'restored_vendor' => 'تمت استعادة البائع بنجاح',
|
||||
@ -2255,7 +2246,6 @@ $LANG = array(
|
||||
'product_notes' => 'ملاحظات المنتج',
|
||||
'app_version' => 'نسخة التطبيق',
|
||||
'ofx_version' => 'إصدار OFX',
|
||||
'gateway_help_23' => ':link للحصول على مفاتيح Stripe API الخاصة بك.',
|
||||
'error_app_key_set_to_default' => 'خطأ: تم تعيين APP_KEY على قيمة افتراضية ، لتحديثه ، قم بعمل نسخة احتياطية من قاعدة البيانات الخاصة بك ثم قم بتشغيل <code>php artisan ninja:update-key</code>',
|
||||
'charge_late_fee' => 'تحصيل الرسوم المتأخرة',
|
||||
'late_fee_amount' => 'مبلغ الرسوم المتأخرة',
|
||||
@ -2495,7 +2485,6 @@ $LANG = array(
|
||||
'videos' => 'أشرطة فيديو',
|
||||
'video' => 'فيديو',
|
||||
'return_to_invoice' => 'العودة إلى الفاتورة',
|
||||
'gateway_help_13' => 'لاستخدام ITN ، اترك حقل مفتاح PDT فارغًا.',
|
||||
'partial_due_date' => 'تاريخ الاستحقاق الجزئي',
|
||||
'task_fields' => 'مجالات المهام',
|
||||
'product_fields_help' => 'قم بسحب وإسقاط الحقول لتغيير ترتيبها',
|
||||
@ -4651,7 +4640,6 @@ $LANG = array(
|
||||
'vat' => 'ضريبة القيمة المضافة',
|
||||
'view_map' => 'عرض الخريطة',
|
||||
'set_default_design' => 'تعيين التصميم الافتراضي',
|
||||
'add_gateway_help_message' => 'أضف بوابة دفع (مثل Stripe أو WePay أو PayPal) لقبول المدفوعات عبر الإنترنت',
|
||||
'purchase_order_issued_to' => 'تم إصدار طلب الشراء إلى',
|
||||
'archive_task_status' => 'أرشفة حالة المهمة',
|
||||
'delete_task_status' => 'حذف حالة المهمة',
|
||||
@ -5042,9 +5030,48 @@ $LANG = array(
|
||||
'tax_exempt' => 'معفاة من الضرائب',
|
||||
'late_fee_added_locked_invoice' => 'تمت إضافة الرسوم المتأخرة للفاتورة :invoice على a0b70e20 XXeeaz0',
|
||||
'lang_Khmer' => 'الخمير',
|
||||
'routing_id' => 'Routing ID',
|
||||
'enable_e_invoice' => 'Enable E-Invoice',
|
||||
'e_invoice_type' => 'E-Invoice Type',
|
||||
'reduced_tax' => 'Reduced Tax',
|
||||
'override_tax' => 'Override Tax',
|
||||
'zero_rated' => 'Zero Rated',
|
||||
'reverse_tax' => 'Reverse Tax',
|
||||
'updated_tax_category' => 'Successfully updated the tax category',
|
||||
'updated_tax_categories' => 'Successfully updated the tax categories',
|
||||
'set_tax_category' => 'Set Tax Category',
|
||||
'payment_manual' => 'Payment Manual',
|
||||
'expense_payment_type' => 'Expense Payment Type',
|
||||
'payment_type_Cash App' => 'Cash App',
|
||||
'rename' => 'Rename',
|
||||
'renamed_document' => 'Successfully renamed document',
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
);
|
||||
|
||||
|
||||
return $LANG;
|
||||
|
||||
?>
|
||||
?>
|
@ -387,11 +387,6 @@ $LANG = array(
|
||||
'invoice_issued_to' => 'Фактура издадена на',
|
||||
'invalid_counter' => 'За да се избегне възможен конфликт, моля въведете префикс за номер на фактура или за номер на оферта',
|
||||
'mark_sent' => 'Маркирай като изпратена',
|
||||
'gateway_help_1' => ':link за регистрация в Authorize.net.',
|
||||
'gateway_help_2' => ':link за регистрация в Authorize.net.',
|
||||
'gateway_help_17' => ':link за получаване на PayPal API signature.',
|
||||
'gateway_help_27' => ':link за регистрация в 2Checkout.com. За да осигурите проследяване на плащанията въведете :complete_link като "redirect URL" в менюто Account > Site Management в портала на 2Checkout.',
|
||||
'gateway_help_60' => ':link за създаване на профил в WePay.',
|
||||
'more_designs' => 'Още дизайни',
|
||||
'more_designs_title' => 'Допълнителни дизайни на фактурите',
|
||||
'more_designs_cloud_header' => 'Ъпгрейд към версия Pro за повече дизайни на фактури',
|
||||
@ -506,7 +501,6 @@ $LANG = array(
|
||||
'notification_quote_approved' => 'Клиентът :client одобри оферта :invoice на стойност :amount.',
|
||||
'resend_confirmation' => 'Повторно изпращане на имейл за потвърждение',
|
||||
'confirmation_resent' => 'Имейлът за потвърждение беше изпратен отново',
|
||||
'gateway_help_42' => ':link за регистрация в BitPay.<br/>Забележка: използвайте Legacy API Key, а не API token.',
|
||||
'payment_type_credit_card' => 'Кредитна карта',
|
||||
'payment_type_paypal' => 'PayPal',
|
||||
'payment_type_bitcoin' => 'Bitcoin',
|
||||
@ -591,7 +585,6 @@ $LANG = array(
|
||||
'prefix' => 'Префикс',
|
||||
'counter' => 'Брояч',
|
||||
'payment_type_dwolla' => 'Dwolla',
|
||||
'gateway_help_43' => ':link за вход в Dwolla',
|
||||
'partial_value' => 'Трябва да бъде повече от 0 и по-малко от общата стойност.',
|
||||
'more_actions' => 'Още',
|
||||
'pro_plan_title' => 'NINJA PRO',
|
||||
@ -1097,8 +1090,6 @@ $LANG = array(
|
||||
'user_create_all' => 'Създаване на клиенти, фактури и т.н.',
|
||||
'user_view_all' => 'Преглед на всички клиенти, фактури и т.н.',
|
||||
'user_edit_all' => 'Редакция на всички клиенти, фактури и т.н.',
|
||||
'gateway_help_20' => ':link за регистрация в Sage Pay.',
|
||||
'gateway_help_21' => ':link за регистрация в Sage Pay.',
|
||||
'partial_due' => 'Частично дължима',
|
||||
'restore_vendor' => 'Възстановяване на доставчик',
|
||||
'restored_vendor' => 'Успешно възстановяване на доставчик',
|
||||
@ -2282,7 +2273,6 @@ $LANG = array(
|
||||
'product_notes' => 'Бележки за продукта',
|
||||
'app_version' => 'Версия на приложението',
|
||||
'ofx_version' => 'OFX версия',
|
||||
'gateway_help_23' => ':link за получаване на Stripe API ключове.',
|
||||
'error_app_key_set_to_default' => 'Грешка: APP_KEY е със стойност по подразбиране. За да го актуализирате архивирайте своята база данни и след това стартирайте <code>php artisan ninja:update-key</code>',
|
||||
'charge_late_fee' => 'Такса за закъснение',
|
||||
'late_fee_amount' => 'Стойност на таксата за закъснение',
|
||||
@ -2522,7 +2512,6 @@ $LANG = array(
|
||||
'videos' => 'Видео',
|
||||
'video' => 'Видео',
|
||||
'return_to_invoice' => 'Назад към фактурата',
|
||||
'gateway_help_13' => 'За да използвате ITN оставете полето PDT Key празно.',
|
||||
'partial_due_date' => 'Частичен падеж',
|
||||
'task_fields' => 'Полета за задачи',
|
||||
'product_fields_help' => 'Използвайте "Drag and drop" за промяна реда на полетата',
|
||||
@ -4013,6 +4002,7 @@ $LANG = array(
|
||||
'notification_invoice_reminder1_sent_subject' => 'Първо напомняне за фактура :invoice беше изпратено до :client',
|
||||
'notification_invoice_reminder2_sent_subject' => 'Второ напомняне за фактура :invoice беше изпратено до :client',
|
||||
'notification_invoice_reminder3_sent_subject' => 'Трето напомняне за фактура :invoice беше изпратено до :client',
|
||||
'notification_invoice_custom_sent_subject' => 'Custom reminder for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder_endless_sent_subject' => 'Безкрайно напомняне за фактура :invoice беше изпратено до :client',
|
||||
'assigned_user' => 'Assigned User',
|
||||
'setup_steps_notice' => 'To proceed to next step, make sure you test each section.',
|
||||
@ -4390,7 +4380,7 @@ $LANG = array(
|
||||
'imported_customers' => 'Successfully started importing customers',
|
||||
'login_success' => 'Successful Login',
|
||||
'login_failure' => 'Failed Login',
|
||||
'exported_data' => 'Once the file is ready you"ll receive an email with a download link',
|
||||
'exported_data' => 'Once the file is ready you\'ll receive an email with a download link',
|
||||
'include_deleted_clients' => 'Include Deleted Clients',
|
||||
'include_deleted_clients_help' => 'Load records belonging to deleted clients',
|
||||
'step_1_sign_in' => 'Step 1: Sign In',
|
||||
@ -4479,7 +4469,7 @@ $LANG = array(
|
||||
'activity_123' => ':user deleted recurring expense :recurring_expense',
|
||||
'activity_124' => ':user restored recurring expense :recurring_expense',
|
||||
'fpx' => "FPX",
|
||||
'to_view_entity_set_password' => 'To view the :entity you need to set password.',
|
||||
'to_view_entity_set_password' => 'To view the :entity you need to set a password.',
|
||||
'unsubscribe' => 'Unsubscribe',
|
||||
'unsubscribed' => 'Unsubscribed',
|
||||
'unsubscribed_text' => 'You have been removed from notifications for this document',
|
||||
@ -4577,7 +4567,7 @@ $LANG = array(
|
||||
'purchase_order_number' => 'Purchase Order Number',
|
||||
'purchase_order_number_short' => 'Purchase Order #',
|
||||
'inventory_notification_subject' => 'Inventory threshold notification for product: :product',
|
||||
'inventory_notification_body' => 'Threshold of :amount has been reach for product: :product',
|
||||
'inventory_notification_body' => 'Threshold of :amount has been reached for product: :product',
|
||||
'activity_130' => ':user created purchase order :purchase_order',
|
||||
'activity_131' => ':user updated purchase order :purchase_order',
|
||||
'activity_132' => ':user archived purchase order :purchase_order',
|
||||
@ -4609,7 +4599,7 @@ $LANG = array(
|
||||
'vendor_document_upload' => 'Vendor Document Upload',
|
||||
'vendor_document_upload_help' => 'Enable vendors to upload documents',
|
||||
'are_you_enjoying_the_app' => 'Are you enjoying the app?',
|
||||
'yes_its_great' => 'Yes, it"s great!',
|
||||
'yes_its_great' => 'Yes, it\'s great!',
|
||||
'not_so_much' => 'Not so much',
|
||||
'would_you_rate_it' => 'Great to hear! Would you like to rate it?',
|
||||
'would_you_tell_us_more' => 'Sorry to hear it! Would you like to tell us more?',
|
||||
@ -4677,7 +4667,6 @@ $LANG = array(
|
||||
'vat' => 'VAT',
|
||||
'view_map' => 'View Map',
|
||||
'set_default_design' => 'Set Default Design',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
'purchase_order_issued_to' => 'Purchase Order issued to',
|
||||
'archive_task_status' => 'Archive Task Status',
|
||||
'delete_task_status' => 'Delete Task Status',
|
||||
@ -4982,7 +4971,7 @@ $LANG = array(
|
||||
'payment_type_Interac E Transfer' => 'Interac E Transfer',
|
||||
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
|
||||
'xinvoice_no_buyers_reference' => "No buyer's reference given",
|
||||
'xinvoice_online_payment' => 'The invoice needs to be payed online via the provided link',
|
||||
'xinvoice_online_payment' => 'The invoice needs to be paid online via the provided link',
|
||||
'pre_payment' => 'Pre Payment',
|
||||
'number_of_payments' => 'Number of payments',
|
||||
'number_of_payments_helper' => 'The number of times this payment will be made',
|
||||
@ -4990,11 +4979,6 @@ $LANG = array(
|
||||
'notification_payment_emailed' => 'Payment :payment was emailed to :client',
|
||||
'notification_payment_emailed_subject' => 'Payment :payment was emailed',
|
||||
'record_not_found' => 'Record not found',
|
||||
'product_tax_exempt' => 'Product Tax Exempt',
|
||||
'product_type_physical' => 'Physical Goods',
|
||||
'product_type_digital' => 'Digital Goods',
|
||||
'product_type_service' => 'Services',
|
||||
'product_type_freight' => 'Shipping',
|
||||
'minimum_payment_amount' => 'Minimum Payment Amount',
|
||||
'client_initiated_payments' => 'Client Initiated Payments',
|
||||
'client_initiated_payments_help' => 'Support making a payment in the client portal without an invoice',
|
||||
@ -5061,9 +5045,60 @@ $LANG = array(
|
||||
'date_picker_hint' => 'Use +days to set the date in the future',
|
||||
'app_help_link' => 'More information ',
|
||||
'here' => 'here',
|
||||
'industry_Restaurant & Catering' => 'Restaurant & Catering',
|
||||
'show_credits_table' => 'Show Credits Table',
|
||||
'manual_payment' => 'Payment Manual',
|
||||
'tax_summary_report' => 'Tax Summary Report',
|
||||
'tax_category' => 'Tax Category',
|
||||
'physical_goods' => 'Physical Goods',
|
||||
'digital_products' => 'Digital Products',
|
||||
'services' => 'Services',
|
||||
'shipping' => 'Shipping',
|
||||
'tax_exempt' => 'Tax Exempt',
|
||||
'late_fee_added_locked_invoice' => 'Late fee for invoice :invoice added on :date',
|
||||
'lang_Khmer' => 'Khmer',
|
||||
'routing_id' => 'Routing ID',
|
||||
'enable_e_invoice' => 'Enable E-Invoice',
|
||||
'e_invoice_type' => 'E-Invoice Type',
|
||||
'reduced_tax' => 'Reduced Tax',
|
||||
'override_tax' => 'Override Tax',
|
||||
'zero_rated' => 'Zero Rated',
|
||||
'reverse_tax' => 'Reverse Tax',
|
||||
'updated_tax_category' => 'Successfully updated the tax category',
|
||||
'updated_tax_categories' => 'Successfully updated the tax categories',
|
||||
'set_tax_category' => 'Set Tax Category',
|
||||
'payment_manual' => 'Payment Manual',
|
||||
'expense_payment_type' => 'Expense Payment Type',
|
||||
'payment_type_Cash App' => 'Cash App',
|
||||
'rename' => 'Rename',
|
||||
'renamed_document' => 'Successfully renamed document',
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
);
|
||||
|
||||
|
||||
return $LANG;
|
||||
|
||||
?>
|
||||
?>
|
@ -386,11 +386,6 @@ $LANG = array(
|
||||
'invoice_issued_to' => 'Invoice issued to',
|
||||
'invalid_counter' => 'To prevent a possible conflict please set either an invoice or quote number prefix',
|
||||
'mark_sent' => 'Mark Sent',
|
||||
'gateway_help_1' => ':link to sign up for Authorize.net.',
|
||||
'gateway_help_2' => ':link to sign up for Authorize.net.',
|
||||
'gateway_help_17' => ':link to get your PayPal API signature.',
|
||||
'gateway_help_27' => ':link to sign up for 2Checkout.com. To ensure payments are tracked set :complete_link as the redirect URL under Account > Site Management in the 2Checkout portal.',
|
||||
'gateway_help_60' => ':link to create a WePay account.',
|
||||
'more_designs' => 'More designs',
|
||||
'more_designs_title' => 'Additional Invoice Designs',
|
||||
'more_designs_cloud_header' => 'Go Pro for more invoice designs',
|
||||
@ -505,7 +500,6 @@ $LANG = array(
|
||||
'notification_quote_approved' => 'The following client :client approved Quote :invoice for :amount.',
|
||||
'resend_confirmation' => 'Resend confirmation email',
|
||||
'confirmation_resent' => 'The confirmation email was resent',
|
||||
'gateway_help_42' => ':link to sign up for BitPay.<br/>Note: use a Legacy API Key, not an API token.',
|
||||
'payment_type_credit_card' => 'Credit Card',
|
||||
'payment_type_paypal' => 'PayPal',
|
||||
'payment_type_bitcoin' => 'Bitcoin',
|
||||
@ -590,7 +584,6 @@ $LANG = array(
|
||||
'prefix' => 'Prefix',
|
||||
'counter' => 'Counter',
|
||||
'payment_type_dwolla' => 'Dwolla',
|
||||
'gateway_help_43' => ':link to sign up for Dwolla',
|
||||
'partial_value' => 'Must be greater than zero and less than the total',
|
||||
'more_actions' => 'More Actions',
|
||||
'pro_plan_title' => 'NINJA PRO',
|
||||
@ -1096,8 +1089,6 @@ $LANG = array(
|
||||
'user_create_all' => 'Create clients, invoices, etc.',
|
||||
'user_view_all' => 'View all clients, invoices, etc.',
|
||||
'user_edit_all' => 'Edit all clients, invoices, etc.',
|
||||
'gateway_help_20' => ':link to sign up for Sage Pay.',
|
||||
'gateway_help_21' => ':link to sign up for Sage Pay.',
|
||||
'partial_due' => 'Venciment parcial',
|
||||
'restore_vendor' => 'Restore Vendor',
|
||||
'restored_vendor' => 'Successfully restored vendor',
|
||||
@ -2281,7 +2272,6 @@ $LANG = array(
|
||||
'product_notes' => 'Product Notes',
|
||||
'app_version' => 'App Version',
|
||||
'ofx_version' => 'OFX Version',
|
||||
'gateway_help_23' => ':link to get your Stripe API keys.',
|
||||
'error_app_key_set_to_default' => 'Error: APP_KEY is set to a default value, to update it backup your database and then run <code>php artisan ninja:update-key</code>',
|
||||
'charge_late_fee' => 'Charge Late Fee',
|
||||
'late_fee_amount' => 'Late Fee Amount',
|
||||
@ -2521,7 +2511,6 @@ $LANG = array(
|
||||
'videos' => 'Vídeos',
|
||||
'video' => 'Vídeo',
|
||||
'return_to_invoice' => 'Return to Invoice',
|
||||
'gateway_help_13' => 'To use ITN leave the PDT Key field blank.',
|
||||
'partial_due_date' => 'Data venciment parcial',
|
||||
'task_fields' => 'Task Fields',
|
||||
'product_fields_help' => 'Drag and drop fields to change their order',
|
||||
@ -4677,7 +4666,6 @@ $LANG = array(
|
||||
'vat' => 'VAT',
|
||||
'view_map' => 'View Map',
|
||||
'set_default_design' => 'Set Default Design',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
'purchase_order_issued_to' => 'Purchase Order issued to',
|
||||
'archive_task_status' => 'Archive Task Status',
|
||||
'delete_task_status' => 'Delete Task Status',
|
||||
@ -5086,9 +5074,30 @@ $LANG = array(
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
);
|
||||
|
||||
|
||||
return $LANG;
|
||||
|
||||
?>
|
||||
?>
|
@ -385,11 +385,6 @@ $LANG = array(
|
||||
'invoice_issued_to' => 'Faktura vystavena pro',
|
||||
'invalid_counter' => 'Pro případný konflikt si raději nastavte prefix pro faktury nebo nabídky',
|
||||
'mark_sent' => 'Značka odesláno',
|
||||
'gateway_help_1' => ':link zaregistrovat se na Authorize.net.',
|
||||
'gateway_help_2' => ':link zaregistrovat se na Authorize.net.',
|
||||
'gateway_help_17' => ':link získat PayPal API signature.',
|
||||
'gateway_help_27' => ':link to sign up for 2Checkout.com. To ensure payments are tracked set :complete_link as the redirect URL under Account > Site Management in the 2Checkout portal.',
|
||||
'gateway_help_60' => ':link pro vytvoření účtu WePay.',
|
||||
'more_designs' => 'Více vzhledů',
|
||||
'more_designs_title' => 'Další vzhledy faktur',
|
||||
'more_designs_cloud_header' => 'Přejděte na Profi plán pro více vzhledů faktur',
|
||||
@ -504,7 +499,6 @@ $LANG = array(
|
||||
'notification_quote_approved' => 'Klient :client schválil nabídku :invoice na :amount.',
|
||||
'resend_confirmation' => 'Znovu poslat potvrzovací email',
|
||||
'confirmation_resent' => 'Potvrzení bylo odesláno emailem',
|
||||
'gateway_help_42' => ':link zaregistrujte se na BitPay.<br/>Poznámka: použijte Legacy API Key, nikoliv API token.',
|
||||
'payment_type_credit_card' => 'Platební karty',
|
||||
'payment_type_paypal' => 'PayPal',
|
||||
'payment_type_bitcoin' => 'Bitcoin',
|
||||
@ -589,7 +583,6 @@ $LANG = array(
|
||||
'prefix' => 'Prefix',
|
||||
'counter' => 'Počítadlo',
|
||||
'payment_type_dwolla' => 'Dwolla',
|
||||
'gateway_help_43' => ':link zaregistrujte se na Dwolla',
|
||||
'partial_value' => 'Musí být větší než nula a méně než součet',
|
||||
'more_actions' => 'Více akcí',
|
||||
'pro_plan_title' => 'NINJA PROFI',
|
||||
@ -1096,8 +1089,6 @@ $LANG = array(
|
||||
'user_create_all' => 'Vytvářet klienty,faktury atd.',
|
||||
'user_view_all' => 'Vidět všechny klienty,faktury atd.',
|
||||
'user_edit_all' => 'Editovat všechny klienty,faktury atd.',
|
||||
'gateway_help_20' => ':link pro registraci na Sage Pay.',
|
||||
'gateway_help_21' => ':link pro registraci na Sage Pay.',
|
||||
'partial_due' => 'Částečně splaceno',
|
||||
'restore_vendor' => 'Obnovit dodavatele',
|
||||
'restored_vendor' => 'Dodavatel úspěšně obnoven',
|
||||
@ -2281,7 +2272,6 @@ $LANG = array(
|
||||
'product_notes' => 'Product Notes',
|
||||
'app_version' => 'App Version',
|
||||
'ofx_version' => 'OFX Version',
|
||||
'gateway_help_23' => ':link to get your Stripe API keys.',
|
||||
'error_app_key_set_to_default' => 'Error: APP_KEY is set to a default value, to update it backup your database and then run <code>php artisan ninja:update-key</code>',
|
||||
'charge_late_fee' => 'Charge Late Fee',
|
||||
'late_fee_amount' => 'Late Fee Amount',
|
||||
@ -2521,7 +2511,6 @@ $LANG = array(
|
||||
'videos' => 'Videos',
|
||||
'video' => 'Video',
|
||||
'return_to_invoice' => 'Return to Invoice',
|
||||
'gateway_help_13' => 'To use ITN leave the PDT Key field blank.',
|
||||
'partial_due_date' => 'Partial Due Date',
|
||||
'task_fields' => 'Task Fields',
|
||||
'product_fields_help' => 'Drag and drop fields to change their order',
|
||||
@ -4012,6 +4001,7 @@ $LANG = array(
|
||||
'notification_invoice_reminder1_sent_subject' => 'Reminder 1 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder2_sent_subject' => 'Reminder 2 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder3_sent_subject' => 'Reminder 3 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_custom_sent_subject' => 'Custom reminder for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder_endless_sent_subject' => 'Endless reminder for Invoice :invoice was sent to :client',
|
||||
'assigned_user' => 'Assigned User',
|
||||
'setup_steps_notice' => 'To proceed to next step, make sure you test each section.',
|
||||
@ -4676,7 +4666,6 @@ $LANG = array(
|
||||
'vat' => 'VAT',
|
||||
'view_map' => 'View Map',
|
||||
'set_default_design' => 'Set Default Design',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
'purchase_order_issued_to' => 'Purchase Order issued to',
|
||||
'archive_task_status' => 'Archive Task Status',
|
||||
'delete_task_status' => 'Delete Task Status',
|
||||
@ -4981,7 +4970,7 @@ $LANG = array(
|
||||
'payment_type_Interac E Transfer' => 'Interac E Transfer',
|
||||
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
|
||||
'xinvoice_no_buyers_reference' => "No buyer's reference given",
|
||||
'xinvoice_online_payment' => 'The invoice needs to be payed online via the provided link',
|
||||
'xinvoice_online_payment' => 'The invoice needs to be paid online via the provided link',
|
||||
'pre_payment' => 'Pre Payment',
|
||||
'number_of_payments' => 'Number of payments',
|
||||
'number_of_payments_helper' => 'The number of times this payment will be made',
|
||||
@ -4989,11 +4978,6 @@ $LANG = array(
|
||||
'notification_payment_emailed' => 'Payment :payment was emailed to :client',
|
||||
'notification_payment_emailed_subject' => 'Payment :payment was emailed',
|
||||
'record_not_found' => 'Record not found',
|
||||
'product_tax_exempt' => 'Product Tax Exempt',
|
||||
'product_type_physical' => 'Physical Goods',
|
||||
'product_type_digital' => 'Digital Goods',
|
||||
'product_type_service' => 'Services',
|
||||
'product_type_freight' => 'Shipping',
|
||||
'minimum_payment_amount' => 'Minimum Payment Amount',
|
||||
'client_initiated_payments' => 'Client Initiated Payments',
|
||||
'client_initiated_payments_help' => 'Support making a payment in the client portal without an invoice',
|
||||
@ -5062,9 +5046,58 @@ $LANG = array(
|
||||
'here' => 'here',
|
||||
'industry_Restaurant & Catering' => 'Restaurant & Catering',
|
||||
'show_credits_table' => 'Show Credits Table',
|
||||
'manual_payment' => 'Payment Manual',
|
||||
'tax_summary_report' => 'Tax Summary Report',
|
||||
'tax_category' => 'Tax Category',
|
||||
'physical_goods' => 'Physical Goods',
|
||||
'digital_products' => 'Digital Products',
|
||||
'services' => 'Services',
|
||||
'shipping' => 'Shipping',
|
||||
'tax_exempt' => 'Tax Exempt',
|
||||
'late_fee_added_locked_invoice' => 'Late fee for invoice :invoice added on :date',
|
||||
'lang_Khmer' => 'Khmer',
|
||||
'routing_id' => 'Routing ID',
|
||||
'enable_e_invoice' => 'Enable E-Invoice',
|
||||
'e_invoice_type' => 'E-Invoice Type',
|
||||
'reduced_tax' => 'Reduced Tax',
|
||||
'override_tax' => 'Override Tax',
|
||||
'zero_rated' => 'Zero Rated',
|
||||
'reverse_tax' => 'Reverse Tax',
|
||||
'updated_tax_category' => 'Successfully updated the tax category',
|
||||
'updated_tax_categories' => 'Successfully updated the tax categories',
|
||||
'set_tax_category' => 'Set Tax Category',
|
||||
'payment_manual' => 'Payment Manual',
|
||||
'expense_payment_type' => 'Expense Payment Type',
|
||||
'payment_type_Cash App' => 'Cash App',
|
||||
'rename' => 'Rename',
|
||||
'renamed_document' => 'Successfully renamed document',
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
);
|
||||
|
||||
|
||||
return $LANG;
|
||||
|
||||
?>
|
||||
?>
|
@ -386,11 +386,6 @@ $LANG = array(
|
||||
'invoice_issued_to' => 'Faktura udstedt til',
|
||||
'invalid_counter' => 'For at undgå mulige overlap, sæt et faktura eller tilbuds nummer præfiks',
|
||||
'mark_sent' => 'Markér som sendt',
|
||||
'gateway_help_1' => ':link til at registrere dig hos Authorize.net.',
|
||||
'gateway_help_2' => ':link til at registrere dig hos Authorize.net.',
|
||||
'gateway_help_17' => ':link til at hente din PayPal API signatur.',
|
||||
'gateway_help_27' => ':link for at oprette sig hos 2Checkout.com. For at sikre at betalinger er fulgt sæt :complete_link som redirect URL under Konto > Side Management i 2Checkout portalen.',
|
||||
'gateway_help_60' => ':link til at oprette en WePay konto',
|
||||
'more_designs' => 'Flere designs',
|
||||
'more_designs_title' => 'Yderligere fakturadesigns',
|
||||
'more_designs_cloud_header' => 'Skift til Pro for flere fakturadesigns',
|
||||
@ -505,7 +500,6 @@ $LANG = array(
|
||||
'notification_quote_approved' => 'Den følgende kunde :client accepterede tilbud :invoice lydende på :amount.',
|
||||
'resend_confirmation' => 'Send bekræftelses e-mail igen',
|
||||
'confirmation_resent' => 'Bekræftelses e-mail er afsendt',
|
||||
'gateway_help_42' => ':link til registrering hos BitPay.<br/>Bemærk: brug en use a Legacy API nøgle, og ikke en API token.',
|
||||
'payment_type_credit_card' => 'Kredit kort',
|
||||
'payment_type_paypal' => 'PayPal',
|
||||
'payment_type_bitcoin' => 'Bitcoin',
|
||||
@ -590,7 +584,6 @@ $LANG = array(
|
||||
'prefix' => 'Præfix',
|
||||
'counter' => 'Tæller',
|
||||
'payment_type_dwolla' => 'Dwolla',
|
||||
'gateway_help_43' => ':link til at registrere dig hos Dwolla.',
|
||||
'partial_value' => 'Skal være større end nul og mindre end totalen',
|
||||
'more_actions' => 'Flere handlinger',
|
||||
'pro_plan_title' => 'NINJA PRO',
|
||||
@ -1096,8 +1089,6 @@ $LANG = array(
|
||||
'user_create_all' => 'Create clients, invoices, etc.',
|
||||
'user_view_all' => 'View all clients, invoices, etc.',
|
||||
'user_edit_all' => 'Edit all clients, invoices, etc.',
|
||||
'gateway_help_20' => ':link to sign up for Sage Pay.',
|
||||
'gateway_help_21' => ':link to sign up for Sage Pay.',
|
||||
'partial_due' => 'Partial Due',
|
||||
'restore_vendor' => 'Genskab sælger',
|
||||
'restored_vendor' => 'Genskabelse af sælger gennemført',
|
||||
@ -2280,7 +2271,6 @@ $LANG = array(
|
||||
'product_notes' => 'Product Notes',
|
||||
'app_version' => 'App Version',
|
||||
'ofx_version' => 'OFX Version',
|
||||
'gateway_help_23' => ':link to get your Stripe API keys.',
|
||||
'error_app_key_set_to_default' => 'Error: APP_KEY is set to a default value, to update it backup your database and then run <code>php artisan ninja:update-key</code>',
|
||||
'charge_late_fee' => 'Charge Late Fee',
|
||||
'late_fee_amount' => 'Late Fee Amount',
|
||||
@ -2520,7 +2510,6 @@ $LANG = array(
|
||||
'videos' => 'Videos',
|
||||
'video' => 'Video',
|
||||
'return_to_invoice' => 'Return to Invoice',
|
||||
'gateway_help_13' => 'To use ITN leave the PDT Key field blank.',
|
||||
'partial_due_date' => 'Partial Due Date',
|
||||
'task_fields' => 'Task Fields',
|
||||
'product_fields_help' => 'Drag and drop fields to change their order',
|
||||
@ -4011,6 +4000,7 @@ $LANG = array(
|
||||
'notification_invoice_reminder1_sent_subject' => 'Reminder 1 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder2_sent_subject' => 'Reminder 2 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder3_sent_subject' => 'Reminder 3 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_custom_sent_subject' => 'Custom reminder for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder_endless_sent_subject' => 'Endless reminder for Invoice :invoice was sent to :client',
|
||||
'assigned_user' => 'Assigned User',
|
||||
'setup_steps_notice' => 'To proceed to next step, make sure you test each section.',
|
||||
@ -4388,7 +4378,7 @@ $LANG = array(
|
||||
'imported_customers' => 'Successfully started importing customers',
|
||||
'login_success' => 'Successful Login',
|
||||
'login_failure' => 'Failed Login',
|
||||
'exported_data' => 'Once the file is ready you"ll receive an email with a download link',
|
||||
'exported_data' => 'Once the file is ready you\'ll receive an email with a download link',
|
||||
'include_deleted_clients' => 'Include Deleted Clients',
|
||||
'include_deleted_clients_help' => 'Load records belonging to deleted clients',
|
||||
'step_1_sign_in' => 'Step 1: Sign In',
|
||||
@ -4477,7 +4467,7 @@ $LANG = array(
|
||||
'activity_123' => ':user deleted recurring expense :recurring_expense',
|
||||
'activity_124' => ':user restored recurring expense :recurring_expense',
|
||||
'fpx' => "FPX",
|
||||
'to_view_entity_set_password' => 'To view the :entity you need to set password.',
|
||||
'to_view_entity_set_password' => 'To view the :entity you need to set a password.',
|
||||
'unsubscribe' => 'Unsubscribe',
|
||||
'unsubscribed' => 'Unsubscribed',
|
||||
'unsubscribed_text' => 'You have been removed from notifications for this document',
|
||||
@ -4575,7 +4565,7 @@ $LANG = array(
|
||||
'purchase_order_number' => 'Purchase Order Number',
|
||||
'purchase_order_number_short' => 'Purchase Order #',
|
||||
'inventory_notification_subject' => 'Inventory threshold notification for product: :product',
|
||||
'inventory_notification_body' => 'Threshold of :amount has been reach for product: :product',
|
||||
'inventory_notification_body' => 'Threshold of :amount has been reached for product: :product',
|
||||
'activity_130' => ':user created purchase order :purchase_order',
|
||||
'activity_131' => ':user updated purchase order :purchase_order',
|
||||
'activity_132' => ':user archived purchase order :purchase_order',
|
||||
@ -4607,7 +4597,7 @@ $LANG = array(
|
||||
'vendor_document_upload' => 'Vendor Document Upload',
|
||||
'vendor_document_upload_help' => 'Enable vendors to upload documents',
|
||||
'are_you_enjoying_the_app' => 'Are you enjoying the app?',
|
||||
'yes_its_great' => 'Yes, it"s great!',
|
||||
'yes_its_great' => 'Yes, it\'s great!',
|
||||
'not_so_much' => 'Not so much',
|
||||
'would_you_rate_it' => 'Great to hear! Would you like to rate it?',
|
||||
'would_you_tell_us_more' => 'Sorry to hear it! Would you like to tell us more?',
|
||||
@ -4675,7 +4665,6 @@ $LANG = array(
|
||||
'vat' => 'VAT',
|
||||
'view_map' => 'View Map',
|
||||
'set_default_design' => 'Set Default Design',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
'purchase_order_issued_to' => 'Purchase Order issued to',
|
||||
'archive_task_status' => 'Archive Task Status',
|
||||
'delete_task_status' => 'Delete Task Status',
|
||||
@ -4980,7 +4969,7 @@ $LANG = array(
|
||||
'payment_type_Interac E Transfer' => 'Interac E Transfer',
|
||||
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
|
||||
'xinvoice_no_buyers_reference' => "No buyer's reference given",
|
||||
'xinvoice_online_payment' => 'The invoice needs to be payed online via the provided link',
|
||||
'xinvoice_online_payment' => 'The invoice needs to be paid online via the provided link',
|
||||
'pre_payment' => 'Pre Payment',
|
||||
'number_of_payments' => 'Number of payments',
|
||||
'number_of_payments_helper' => 'The number of times this payment will be made',
|
||||
@ -4988,11 +4977,6 @@ $LANG = array(
|
||||
'notification_payment_emailed' => 'Payment :payment was emailed to :client',
|
||||
'notification_payment_emailed_subject' => 'Payment :payment was emailed',
|
||||
'record_not_found' => 'Record not found',
|
||||
'product_tax_exempt' => 'Product Tax Exempt',
|
||||
'product_type_physical' => 'Physical Goods',
|
||||
'product_type_digital' => 'Digital Goods',
|
||||
'product_type_service' => 'Services',
|
||||
'product_type_freight' => 'Shipping',
|
||||
'minimum_payment_amount' => 'Minimum Payment Amount',
|
||||
'client_initiated_payments' => 'Client Initiated Payments',
|
||||
'client_initiated_payments_help' => 'Support making a payment in the client portal without an invoice',
|
||||
@ -5059,9 +5043,60 @@ $LANG = array(
|
||||
'date_picker_hint' => 'Use +days to set the date in the future',
|
||||
'app_help_link' => 'More information ',
|
||||
'here' => 'here',
|
||||
'industry_Restaurant & Catering' => 'Restaurant & Catering',
|
||||
'show_credits_table' => 'Show Credits Table',
|
||||
'manual_payment' => 'Payment Manual',
|
||||
'tax_summary_report' => 'Tax Summary Report',
|
||||
'tax_category' => 'Tax Category',
|
||||
'physical_goods' => 'Physical Goods',
|
||||
'digital_products' => 'Digital Products',
|
||||
'services' => 'Services',
|
||||
'shipping' => 'Shipping',
|
||||
'tax_exempt' => 'Tax Exempt',
|
||||
'late_fee_added_locked_invoice' => 'Late fee for invoice :invoice added on :date',
|
||||
'lang_Khmer' => 'Khmer',
|
||||
'routing_id' => 'Routing ID',
|
||||
'enable_e_invoice' => 'Enable E-Invoice',
|
||||
'e_invoice_type' => 'E-Invoice Type',
|
||||
'reduced_tax' => 'Reduced Tax',
|
||||
'override_tax' => 'Override Tax',
|
||||
'zero_rated' => 'Zero Rated',
|
||||
'reverse_tax' => 'Reverse Tax',
|
||||
'updated_tax_category' => 'Successfully updated the tax category',
|
||||
'updated_tax_categories' => 'Successfully updated the tax categories',
|
||||
'set_tax_category' => 'Set Tax Category',
|
||||
'payment_manual' => 'Payment Manual',
|
||||
'expense_payment_type' => 'Expense Payment Type',
|
||||
'payment_type_Cash App' => 'Cash App',
|
||||
'rename' => 'Rename',
|
||||
'renamed_document' => 'Successfully renamed document',
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
);
|
||||
|
||||
|
||||
return $LANG;
|
||||
|
||||
?>
|
||||
?>
|
@ -387,11 +387,6 @@ $LANG = array(
|
||||
'invoice_issued_to' => 'Rechnung ausgestellt für',
|
||||
'invalid_counter' => 'Bitte setze, um Probleme zu vermeiden, entweder ein Rechnungs- oder Angebotspräfix.',
|
||||
'mark_sent' => 'Als versendet markieren',
|
||||
'gateway_help_1' => ':link um sich bei Authorize.net anzumelden.',
|
||||
'gateway_help_2' => ':link um sich bei Authorize.net anzumelden.',
|
||||
'gateway_help_17' => ':link, um deine PayPal API-Signatur zu erhalten.',
|
||||
'gateway_help_27' => ':link to sign up for 2Checkout.com. To ensure payments are tracked set :complete_link as the redirect URL under Account > Site Management in the 2Checkout portal.',
|
||||
'gateway_help_60' => ':link um ein WePay Konto zu erstellen.',
|
||||
'more_designs' => 'Weitere Designs',
|
||||
'more_designs_title' => 'Zusätzliche Rechnungsdesigns',
|
||||
'more_designs_cloud_header' => 'Werde Pro-Mitglied für zusätzliche Rechnungsdesigns',
|
||||
@ -506,7 +501,6 @@ $LANG = array(
|
||||
'notification_quote_approved' => 'Der folgende Kunde :client nahm das Angebot :invoice über :amount an.',
|
||||
'resend_confirmation' => 'Bestätigungsmail erneut senden',
|
||||
'confirmation_resent' => 'Bestätigungs-E-Mail wurde erneut versendet',
|
||||
'gateway_help_42' => ':link zum Registrieren auf BitPay.<br/>Hinweis: benutze einen Legacy API Key, keinen API token.',
|
||||
'payment_type_credit_card' => 'Kreditkarte',
|
||||
'payment_type_paypal' => 'PayPal',
|
||||
'payment_type_bitcoin' => 'Bitcoin',
|
||||
@ -591,7 +585,6 @@ $LANG = array(
|
||||
'prefix' => 'Präfix',
|
||||
'counter' => 'Zähler',
|
||||
'payment_type_dwolla' => 'Dwolla',
|
||||
'gateway_help_43' => ':link zum Registrieren auf Dwolla.',
|
||||
'partial_value' => 'Muss grösser als Null und kleiner als der Gesamtbetrag sein',
|
||||
'more_actions' => 'Weitere Aktionen',
|
||||
'pro_plan_title' => 'NINJA PRO',
|
||||
@ -1097,8 +1090,6 @@ $LANG = array(
|
||||
'user_create_all' => 'Erstelle Kunden, Rechnungen, usw.',
|
||||
'user_view_all' => 'Alle Kunden, Rechnungen, usw. ansehen',
|
||||
'user_edit_all' => 'Alle Kunden, Rechnungen, usw. bearbeiten',
|
||||
'gateway_help_20' => ':link um sich bei Sage Pay zu registrieren.',
|
||||
'gateway_help_21' => ':link um sich bei Sage Pay zu registrieren.',
|
||||
'partial_due' => 'Anzahlung',
|
||||
'restore_vendor' => 'Lieferant wiederherstellen',
|
||||
'restored_vendor' => 'Lieferant erfolgreich wiederhergestellt',
|
||||
@ -2282,7 +2273,6 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'product_notes' => 'Produktnotizen',
|
||||
'app_version' => 'App-Version',
|
||||
'ofx_version' => 'OFX-Version',
|
||||
'gateway_help_23' => ':link um Ihre Stripe API-Keys zu erhalten.',
|
||||
'error_app_key_set_to_default' => 'Fehler: APP_KEY ist auf einen Standardwert gesetzt. Um ihn zu aktualisieren, sichere deine Datenbank und führe dann <code>php artisan ninja:update-key</code> aus',
|
||||
'charge_late_fee' => 'Verspätungszuschlag berechnen',
|
||||
'late_fee_amount' => 'Höhe des Verspätungszuschlags',
|
||||
@ -2522,7 +2512,6 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'videos' => 'Videos',
|
||||
'video' => 'Video',
|
||||
'return_to_invoice' => 'Zurück zur Rechnung',
|
||||
'gateway_help_13' => 'Um ITN zu benutzen, lassen Sie das PDT-Feld leer.',
|
||||
'partial_due_date' => 'Teilzahlungsziel',
|
||||
'task_fields' => 'Aufgabenfelder',
|
||||
'product_fields_help' => 'Felder verschieben, um ihre Reihenfolge zu ändern',
|
||||
@ -3996,7 +3985,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'over_payments_disabled' => 'Das Unternehmen unterstützt keine Überbezahlungen.',
|
||||
'saved_at' => 'Gespeichert um :time',
|
||||
'credit_payment' => 'Gutschrift auf Rechnung :invoice_number angewendet',
|
||||
'credit_subject' => 'Neue Kredit :number von :account',
|
||||
'credit_subject' => 'Neue Gutschrift :number von :account',
|
||||
'credit_message' => 'Um Ihre Gutschrift über :amount einzusehen, klicken Sie auf den untenstehenden Link.',
|
||||
'payment_type_Crypto' => 'Kryptowährung',
|
||||
'payment_type_Credit' => 'Gutschrift',
|
||||
@ -4679,7 +4668,6 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'vat' => 'MwSt.',
|
||||
'view_map' => 'Karte anzeigen',
|
||||
'set_default_design' => 'Standard-Design festlegen',
|
||||
'add_gateway_help_message' => 'Hinzufügen eines Zahlungs-Gateways (z. B. Stripe, WePay oder Paypal), um Online-Zahlungen zu akzeptieren',
|
||||
'purchase_order_issued_to' => 'Bestellung ausgestellt für',
|
||||
'archive_task_status' => 'Aufgaben Status archivieren',
|
||||
'delete_task_status' => 'Aufgaben Status löschen',
|
||||
@ -5082,9 +5070,36 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'set_tax_category' => 'Steuerkategorie setzen',
|
||||
'payment_manual' => 'Zahlungshandbuch',
|
||||
'expense_payment_type' => 'Expense Payment Type',
|
||||
'payment_type_Cash App' => 'Cash App',
|
||||
'rename' => 'Rename',
|
||||
'renamed_document' => 'Successfully renamed document',
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
);
|
||||
|
||||
|
||||
return $LANG;
|
||||
|
||||
?>
|
||||
?>
|
@ -386,11 +386,6 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'invoice_issued_to' => 'Έκδοση τιμολογίου προς',
|
||||
'invalid_counter' => 'Για να αποφείγετε πιθανή σύγχυση, παρακαλώ ορίστε σειρά σε τιμολόγιο ή προσφορά',
|
||||
'mark_sent' => 'Σήμανση ως Απεσταλμένο',
|
||||
'gateway_help_1' => ':link για εγγραφή στο Authorize.net.',
|
||||
'gateway_help_2' => ':link για εγγραφή στο Authorize.net.',
|
||||
'gateway_help_17' => ':link για να πάρετε υπογραφή για το API του PayPal.',
|
||||
'gateway_help_27' => ':link για να εγγραφείτε στο 2Checkout.com. Για να βεβαιωθείτε ότι οι πληρωμές παρακολουθούνται ορίστε το :complete_link ως τη διέυθυνση ανακατεύθυνσης στο Λογαριασμός > Διαχείρισης Ιστοσελίδας στην ιστοσελίδα του 2Checkout.',
|
||||
'gateway_help_60' => ':link για δημιουργία λογαριασμού WePay.',
|
||||
'more_designs' => 'Περισσότερα σχέδια',
|
||||
'more_designs_title' => 'Επιπλέον Σχέδια Τιμολογίων',
|
||||
'more_designs_cloud_header' => 'Αποκτήστε την Επαγγελματική έκδοση για επιπλέον σχέδια τιμολογίων',
|
||||
@ -505,7 +500,6 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'notification_quote_approved' => 'Ο πελάτης :client αποδέχτηκε την Προσφορά :invoice ποσού :amount.',
|
||||
'resend_confirmation' => 'Νέα αποστολή email επιβεβαίωσης',
|
||||
'confirmation_resent' => 'Το email επιβεβαίωσης εστάλη ξανά',
|
||||
'gateway_help_42' => ':link για να εγγραφείτε στο BitPay.<br/>Σημείωση: χρησιμοποιήστε ένα παλαιού τύπου κλειδί API, όχι ένα διακριτικό API.',
|
||||
'payment_type_credit_card' => 'Πιστωτική Κάρτα',
|
||||
'payment_type_paypal' => 'PayPal',
|
||||
'payment_type_bitcoin' => 'Bitcoin',
|
||||
@ -590,7 +584,6 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'prefix' => 'Πρόθεμα',
|
||||
'counter' => 'Μετρητής',
|
||||
'payment_type_dwolla' => 'Dwolla',
|
||||
'gateway_help_43' => ':link για εγγραφή στο Dwolla',
|
||||
'partial_value' => 'Πρέπει να είναι μεγαλύτερο του μηδενός και μικρότερο από το σύνολο.',
|
||||
'more_actions' => 'Περισσότερες Ενέργειες',
|
||||
'pro_plan_title' => 'NINJA PRO',
|
||||
@ -1096,8 +1089,6 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'user_create_all' => 'Δημιουργία πελατών, τιμολογίων κλπ.',
|
||||
'user_view_all' => 'Προβολή πελατών, τιμολογίων κλπ.',
|
||||
'user_edit_all' => 'Επεξεργασία πελατών, τιμολογίων κλπ.',
|
||||
'gateway_help_20' => ':link για εγγραφή στο Sage Pay.',
|
||||
'gateway_help_21' => ':link για εγγραφή στο Sage Pay.',
|
||||
'partial_due' => 'Μερική Πληρωμή',
|
||||
'restore_vendor' => 'Ανάκτηση Προμηθευτή',
|
||||
'restored_vendor' => 'Ο Προμηθευτής ανακτήθηκε με επιτυχία',
|
||||
@ -2281,7 +2272,6 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'product_notes' => 'Σημειώσεις Προϊόντος',
|
||||
'app_version' => 'Έκδοση Εφαρμογής',
|
||||
'ofx_version' => 'Έκδοση OFX',
|
||||
'gateway_help_23' => ':link για να λάβετε τα κλειδιά του Stripe API.',
|
||||
'error_app_key_set_to_default' => 'Σφάλμα: Το APP_KEY έχει οριστεί στην προκαθορισμένη τιμή, για να το ενημερώσετε κάντε αντίγραφο ασφαλείας από τη βάση δεδομένων και εκτελέστε το <code>php artisan ninja:update-key</code>',
|
||||
'charge_late_fee' => 'Τέλη Καθυστερημένης Εξόφλησης',
|
||||
'late_fee_amount' => 'Ποσό Τέλους Καθυστερημένης Εξόφλησης',
|
||||
@ -2521,7 +2511,6 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'videos' => 'Βίντεο',
|
||||
'video' => 'Βίντεο',
|
||||
'return_to_invoice' => 'Επιστροφή στο Τιμολόγιο',
|
||||
'gateway_help_13' => 'Για να χρησιμοποιήσετε το ITN αφήστε κενό το πεδίο για το κλειδί PDT.',
|
||||
'partial_due_date' => 'Ημερομηνία Μερικής Πληρωμής',
|
||||
'task_fields' => 'Πεδία Εργασίας',
|
||||
'product_fields_help' => 'Μεταφέρετε και αποθέστε πεδία για να αλλάξετε τη σειρά τους',
|
||||
@ -4012,6 +4001,7 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'notification_invoice_reminder1_sent_subject' => 'Reminder 1 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder2_sent_subject' => 'Reminder 2 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder3_sent_subject' => 'Reminder 3 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_custom_sent_subject' => 'Custom reminder for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder_endless_sent_subject' => 'Endless reminder for Invoice :invoice was sent to :client',
|
||||
'assigned_user' => 'Assigned User',
|
||||
'setup_steps_notice' => 'To proceed to next step, make sure you test each section.',
|
||||
@ -4389,7 +4379,7 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'imported_customers' => 'Successfully started importing customers',
|
||||
'login_success' => 'Successful Login',
|
||||
'login_failure' => 'Failed Login',
|
||||
'exported_data' => 'Once the file is ready you"ll receive an email with a download link',
|
||||
'exported_data' => 'Once the file is ready you\'ll receive an email with a download link',
|
||||
'include_deleted_clients' => 'Include Deleted Clients',
|
||||
'include_deleted_clients_help' => 'Load records belonging to deleted clients',
|
||||
'step_1_sign_in' => 'Step 1: Sign In',
|
||||
@ -4478,7 +4468,7 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'activity_123' => ':user deleted recurring expense :recurring_expense',
|
||||
'activity_124' => ':user restored recurring expense :recurring_expense',
|
||||
'fpx' => "FPX",
|
||||
'to_view_entity_set_password' => 'To view the :entity you need to set password.',
|
||||
'to_view_entity_set_password' => 'To view the :entity you need to set a password.',
|
||||
'unsubscribe' => 'Unsubscribe',
|
||||
'unsubscribed' => 'Unsubscribed',
|
||||
'unsubscribed_text' => 'You have been removed from notifications for this document',
|
||||
@ -4576,7 +4566,7 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'purchase_order_number' => 'Purchase Order Number',
|
||||
'purchase_order_number_short' => 'Purchase Order #',
|
||||
'inventory_notification_subject' => 'Inventory threshold notification for product: :product',
|
||||
'inventory_notification_body' => 'Threshold of :amount has been reach for product: :product',
|
||||
'inventory_notification_body' => 'Threshold of :amount has been reached for product: :product',
|
||||
'activity_130' => ':user created purchase order :purchase_order',
|
||||
'activity_131' => ':user updated purchase order :purchase_order',
|
||||
'activity_132' => ':user archived purchase order :purchase_order',
|
||||
@ -4608,7 +4598,7 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'vendor_document_upload' => 'Vendor Document Upload',
|
||||
'vendor_document_upload_help' => 'Enable vendors to upload documents',
|
||||
'are_you_enjoying_the_app' => 'Are you enjoying the app?',
|
||||
'yes_its_great' => 'Yes, it"s great!',
|
||||
'yes_its_great' => 'Yes, it\'s great!',
|
||||
'not_so_much' => 'Not so much',
|
||||
'would_you_rate_it' => 'Great to hear! Would you like to rate it?',
|
||||
'would_you_tell_us_more' => 'Sorry to hear it! Would you like to tell us more?',
|
||||
@ -4676,7 +4666,6 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'vat' => 'VAT',
|
||||
'view_map' => 'View Map',
|
||||
'set_default_design' => 'Set Default Design',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
'purchase_order_issued_to' => 'Purchase Order issued to',
|
||||
'archive_task_status' => 'Archive Task Status',
|
||||
'delete_task_status' => 'Delete Task Status',
|
||||
@ -4981,7 +4970,7 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'payment_type_Interac E Transfer' => 'Interac E Transfer',
|
||||
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
|
||||
'xinvoice_no_buyers_reference' => "No buyer's reference given",
|
||||
'xinvoice_online_payment' => 'The invoice needs to be payed online via the provided link',
|
||||
'xinvoice_online_payment' => 'The invoice needs to be paid online via the provided link',
|
||||
'pre_payment' => 'Pre Payment',
|
||||
'number_of_payments' => 'Number of payments',
|
||||
'number_of_payments_helper' => 'The number of times this payment will be made',
|
||||
@ -4989,11 +4978,6 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'notification_payment_emailed' => 'Payment :payment was emailed to :client',
|
||||
'notification_payment_emailed_subject' => 'Payment :payment was emailed',
|
||||
'record_not_found' => 'Record not found',
|
||||
'product_tax_exempt' => 'Product Tax Exempt',
|
||||
'product_type_physical' => 'Physical Goods',
|
||||
'product_type_digital' => 'Digital Goods',
|
||||
'product_type_service' => 'Services',
|
||||
'product_type_freight' => 'Shipping',
|
||||
'minimum_payment_amount' => 'Minimum Payment Amount',
|
||||
'client_initiated_payments' => 'Client Initiated Payments',
|
||||
'client_initiated_payments_help' => 'Support making a payment in the client portal without an invoice',
|
||||
@ -5046,9 +5030,74 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'oauth_mail' => 'OAuth / Mail',
|
||||
'preferences' => 'Preferences',
|
||||
'analytics' => 'Analytics',
|
||||
'reduced_rate' => 'Reduced Rate',
|
||||
'tax_all' => 'Tax All',
|
||||
'tax_selected' => 'Tax Selected',
|
||||
'version' => 'version',
|
||||
'seller_subregion' => 'Seller Subregion',
|
||||
'calculate_taxes' => 'Calculate Taxes',
|
||||
'calculate_taxes_help' => 'Automatically calculate taxes when saving invoices',
|
||||
'link_expenses' => 'Link Expenses',
|
||||
'converted_client_balance' => 'Converted Client Balance',
|
||||
'converted_payment_balance' => 'Converted Payment Balance',
|
||||
'total_hours' => 'Total Hours',
|
||||
'date_picker_hint' => 'Use +days to set the date in the future',
|
||||
'app_help_link' => 'More information ',
|
||||
'here' => 'here',
|
||||
'industry_Restaurant & Catering' => 'Restaurant & Catering',
|
||||
'show_credits_table' => 'Show Credits Table',
|
||||
'manual_payment' => 'Payment Manual',
|
||||
'tax_summary_report' => 'Tax Summary Report',
|
||||
'tax_category' => 'Tax Category',
|
||||
'physical_goods' => 'Physical Goods',
|
||||
'digital_products' => 'Digital Products',
|
||||
'services' => 'Services',
|
||||
'shipping' => 'Shipping',
|
||||
'tax_exempt' => 'Tax Exempt',
|
||||
'late_fee_added_locked_invoice' => 'Late fee for invoice :invoice added on :date',
|
||||
'lang_Khmer' => 'Khmer',
|
||||
'routing_id' => 'Routing ID',
|
||||
'enable_e_invoice' => 'Enable E-Invoice',
|
||||
'e_invoice_type' => 'E-Invoice Type',
|
||||
'reduced_tax' => 'Reduced Tax',
|
||||
'override_tax' => 'Override Tax',
|
||||
'zero_rated' => 'Zero Rated',
|
||||
'reverse_tax' => 'Reverse Tax',
|
||||
'updated_tax_category' => 'Successfully updated the tax category',
|
||||
'updated_tax_categories' => 'Successfully updated the tax categories',
|
||||
'set_tax_category' => 'Set Tax Category',
|
||||
'payment_manual' => 'Payment Manual',
|
||||
'expense_payment_type' => 'Expense Payment Type',
|
||||
'payment_type_Cash App' => 'Cash App',
|
||||
'rename' => 'Rename',
|
||||
'renamed_document' => 'Successfully renamed document',
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
);
|
||||
|
||||
|
||||
return $LANG;
|
||||
|
||||
?>
|
||||
?>
|
@ -5095,6 +5095,16 @@ $LANG = array(
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
'react_notification_link' => 'React Notification Links',
|
||||
'react_notification_link_help' => 'Admin emails will contain links to the react application',
|
||||
'show_task_billable' => 'Show Task Billable',
|
||||
'credit_item' => 'Credit Item',
|
||||
'drop_file_here' => 'Drop file here',
|
||||
'files' => 'Files',
|
||||
'camera' => 'Camera',
|
||||
'gallery' => 'Gallery',
|
||||
'project_location' => 'Project Location',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
);
|
||||
|
||||
|
||||
|
@ -385,11 +385,6 @@ $LANG = array(
|
||||
'invoice_issued_to' => 'Factura emitida a',
|
||||
'invalid_counter' => 'Para evitar posibles conflictos, por favor crea un prefijo de facturación y de cotización.',
|
||||
'mark_sent' => 'Marcar como enviado',
|
||||
'gateway_help_1' => ':link para registrarse con Authorize.net.',
|
||||
'gateway_help_2' => ':link para registrarse con Authorize.net.',
|
||||
'gateway_help_17' => ':link para obtener su firma del API de PayPal.',
|
||||
'gateway_help_27' => ':link para suscribirte a 2Checkout.com. Para asegurarte que los pagos puedan ser reastreados configura :complete_link como la URL de redirección en Account > Site Management en el portal de 2Checkout.',
|
||||
'gateway_help_60' => ':link para crear una cuenta WePay.',
|
||||
'more_designs' => 'Más diseños',
|
||||
'more_designs_title' => 'Diseños Adicionales de Facturas',
|
||||
'more_designs_cloud_header' => 'Pase a Pro para más diseños de facturas',
|
||||
@ -504,7 +499,6 @@ $LANG = array(
|
||||
'notification_quote_approved' => 'El cliente :client ha aprobado la cotización :invoice por el valor :amount.',
|
||||
'resend_confirmation' => 'Reenviar correo de confirmación',
|
||||
'confirmation_resent' => 'El correo de confirmación fue reenviado',
|
||||
'gateway_help_42' => ':link para registrarse en BitPay.<br/>Nota: use una llave del API legacy, no un token API.',
|
||||
'payment_type_credit_card' => 'Tarjeta de Crédito',
|
||||
'payment_type_paypal' => 'PayPal',
|
||||
'payment_type_bitcoin' => 'Bitcoin',
|
||||
@ -589,7 +583,6 @@ $LANG = array(
|
||||
'prefix' => 'Prefijo',
|
||||
'counter' => 'Contador',
|
||||
'payment_type_dwolla' => 'Dwolla',
|
||||
'gateway_help_43' => ':link para registrarse con Dwolla.',
|
||||
'partial_value' => 'Debe ser mayor que cero y menor que el total',
|
||||
'more_actions' => 'Más Acciones',
|
||||
'pro_plan_title' => 'NINJA PRO',
|
||||
@ -1094,8 +1087,6 @@ $LANG = array(
|
||||
'user_create_all' => 'Crear clientes, facturas, etc.',
|
||||
'user_view_all' => 'Ver todos los clientes, facturas, etc.',
|
||||
'user_edit_all' => 'Editar todos los clientes, facturas, etc.',
|
||||
'gateway_help_20' => ':link to sign up for Sage Pay.',
|
||||
'gateway_help_21' => ':link to sign up for Sage Pay.',
|
||||
'partial_due' => 'Partial Due',
|
||||
'restore_vendor' => 'Recuperar Proveedor',
|
||||
'restored_vendor' => 'Proveedor recuperado con éxito',
|
||||
@ -2279,7 +2270,6 @@ $LANG = array(
|
||||
'product_notes' => 'Notas de Producto',
|
||||
'app_version' => 'Versión de la Aplicación',
|
||||
'ofx_version' => 'Versión de OFX',
|
||||
'gateway_help_23' => ':link para obtener tus llaves del API de Stripe.',
|
||||
'error_app_key_set_to_default' => 'Error: APP_KEY está configurado con un valor por defecto, para actualizarlo haz un backup de la base de datos y después ejecuta el comando <code>php artisan ninja:update-key</code>',
|
||||
'charge_late_fee' => 'Cobrar Tarifa por Tardanza',
|
||||
'late_fee_amount' => 'Valor Tarifa por Tardanza',
|
||||
@ -2519,7 +2509,6 @@ $LANG = array(
|
||||
'videos' => 'Videos',
|
||||
'video' => 'Video',
|
||||
'return_to_invoice' => 'Volver a la Factura',
|
||||
'gateway_help_13' => 'Para usar ITN, deje el campo Clave de PDT en blanco.',
|
||||
'partial_due_date' => 'Fecha de Vencimiento Parcial',
|
||||
'task_fields' => 'Campos de la Tarea',
|
||||
'product_fields_help' => 'Arrastra y suelta los campos para cambiar su orden',
|
||||
@ -4010,6 +3999,7 @@ $LANG = array(
|
||||
'notification_invoice_reminder1_sent_subject' => 'El recordatorio 1 de la factura :invoice se envió a :client',
|
||||
'notification_invoice_reminder2_sent_subject' => 'El recordatorio 2 de la factura :invoice se envió a :client',
|
||||
'notification_invoice_reminder3_sent_subject' => 'El recordatorio 3 de la factura :invoice se envió a :client',
|
||||
'notification_invoice_custom_sent_subject' => 'Custom reminder for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder_endless_sent_subject' => 'Se envió un recordatorio interminable de la factura :invoice a :client',
|
||||
'assigned_user' => 'Usuario asignado',
|
||||
'setup_steps_notice' => 'Para continuar con el siguiente paso, asegúrese de probar cada sección.',
|
||||
@ -4674,7 +4664,6 @@ $LANG = array(
|
||||
'vat' => 'IVA',
|
||||
'view_map' => 'Ver el mapa',
|
||||
'set_default_design' => 'Establecer diseño predeterminado',
|
||||
'add_gateway_help_message' => 'Agregue una pasarela de pago (es decir, Stripe, WePay o PayPal) para aceptar pagos en línea',
|
||||
'purchase_order_issued_to' => 'Orden de compra emitida a',
|
||||
'archive_task_status' => 'Estado de la tarea de archivo',
|
||||
'delete_task_status' => 'Eliminar estado de tarea',
|
||||
@ -5064,10 +5053,49 @@ $LANG = array(
|
||||
'shipping' => 'Shipping',
|
||||
'tax_exempt' => 'Tax Exempt',
|
||||
'late_fee_added_locked_invoice' => 'Late fee for invoice :invoice added on :date',
|
||||
|
||||
'lang_Khmer' => 'Khmer',
|
||||
'routing_id' => 'Routing ID',
|
||||
'enable_e_invoice' => 'Enable E-Invoice',
|
||||
'e_invoice_type' => 'E-Invoice Type',
|
||||
'reduced_tax' => 'Reduced Tax',
|
||||
'override_tax' => 'Override Tax',
|
||||
'zero_rated' => 'Zero Rated',
|
||||
'reverse_tax' => 'Reverse Tax',
|
||||
'updated_tax_category' => 'Successfully updated the tax category',
|
||||
'updated_tax_categories' => 'Successfully updated the tax categories',
|
||||
'set_tax_category' => 'Set Tax Category',
|
||||
'payment_manual' => 'Payment Manual',
|
||||
'expense_payment_type' => 'Expense Payment Type',
|
||||
'payment_type_Cash App' => 'Cash App',
|
||||
'rename' => 'Rename',
|
||||
'renamed_document' => 'Successfully renamed document',
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
);
|
||||
|
||||
|
||||
return $LANG;
|
||||
|
||||
?>
|
||||
?>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user