mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-08 20:22:42 +01:00
commit
a73e5b5d8f
@ -1 +1 @@
|
||||
5.7.34
|
||||
5.7.35
|
@ -63,10 +63,12 @@ class MobileLocalization extends Command
|
||||
{
|
||||
$resources = $this->getResources();
|
||||
|
||||
foreach ($resources as $key => $val) {
|
||||
$transKey = "texts.{$key}";
|
||||
if (trans($transKey) == $transKey) {
|
||||
echo "'$key' => '$val',\n";
|
||||
if(is_iterable($resources)){
|
||||
foreach ($resources as $key => $val) {
|
||||
$transKey = "texts.{$key}";
|
||||
if (trans($transKey) == $transKey) {
|
||||
echo "'$key' => '$val',\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -399,8 +399,8 @@ class InvoiceItemSum
|
||||
|
||||
$item_tax = 0;
|
||||
|
||||
//$amount = $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / $this->sub_total));
|
||||
$amount = ($this->sub_total > 0) ? $this->item->line_total - ($this->invoice->discount * ($this->item->line_total / $this->sub_total)) : 0;
|
||||
$amount = $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / $this->sub_total));
|
||||
//$amount = ($this->sub_total > 0) ? $this->item->line_total - ($this->invoice->discount * ($this->item->line_total / $this->sub_total)) : 0;
|
||||
|
||||
$item_tax_rate1_total = $this->calcAmountLineTax($this->item->tax_rate1, $amount);
|
||||
|
||||
|
@ -353,7 +353,7 @@ class InvoiceItemSumInclusive
|
||||
if ($this->sub_total == 0) {
|
||||
$amount = $this->item->line_total;
|
||||
} else {
|
||||
$amount = ($this->sub_total > 0) ? $this->item->line_total - ($this->invoice->discount * ($this->item->line_total / $this->sub_total)) : 0;
|
||||
$amount = $this->item->line_total - ($this->invoice->discount * ($this->item->line_total / $this->sub_total));
|
||||
// $amount = $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / $this->sub_total));
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,8 @@ class YodleeController extends BaseController
|
||||
$this->getAccounts($company, $token);
|
||||
}
|
||||
|
||||
$redirect_url = isset($request->getTokenContent()['is_react']) && $request->getTokenContent()['is_react'] ? 'https://app.invoicing.co/#/' : 'https://invoicing.co/';
|
||||
|
||||
$data = [
|
||||
'access_token' => $yodlee->getAccessToken(),
|
||||
'fasttrack_url' => $yodlee->getFastTrackUrl(),
|
||||
@ -59,6 +61,7 @@ class YodleeController extends BaseController
|
||||
'company' => $company,
|
||||
'account' => $company->account,
|
||||
'completed' => $request->has('window_closed') ? true : false,
|
||||
'redirect_url' => $redirect_url,
|
||||
];
|
||||
|
||||
return view('bank.yodlee.auth', $data);
|
||||
|
@ -11,11 +11,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Jobs\Report\PreviewReport;
|
||||
use App\Services\Report\ARDetailReport;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Services\Report\ARDetailReport;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
|
||||
class ARDetailReportController extends BaseController
|
||||
{
|
||||
@ -61,24 +62,21 @@ class ARDetailReportController extends BaseController
|
||||
*/
|
||||
public function __invoke(GenericReportRequest $request)
|
||||
{
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
if ($request->has('send_email') && $request->get('send_email')) {
|
||||
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), ARDetailReport::class, $this->filename);
|
||||
SendToAdmin::dispatch($user->company(), $request->all(), ARDetailReport::class, $this->filename);
|
||||
|
||||
return response()->json(['message' => 'working...'], 200);
|
||||
}
|
||||
// expect a list of visible fields, or use the default
|
||||
|
||||
$export = new ARDetailReport(auth()->user()->company(), $request->all());
|
||||
$hash = \Illuminate\Support\Str::uuid();
|
||||
|
||||
$csv = $export->run();
|
||||
PreviewReport::dispatch($user->company(), $request->all(), ARDetailReport::class, $hash);
|
||||
|
||||
$headers = [
|
||||
'Content-Disposition' => 'attachment',
|
||||
'Content-Type' => 'text/csv',
|
||||
];
|
||||
return response()->json(['message' => $hash], 200);
|
||||
|
||||
return response()->streamDownload(function () use ($csv) {
|
||||
echo $csv;
|
||||
}, $this->filename, $headers);
|
||||
}
|
||||
}
|
||||
|
@ -11,11 +11,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Services\Report\ARSummaryReport;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Jobs\Report\PreviewReport;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Services\Report\ARSummaryReport;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
|
||||
class ARSummaryReportController extends BaseController
|
||||
{
|
||||
@ -71,17 +72,11 @@ class ARSummaryReportController extends BaseController
|
||||
}
|
||||
// expect a list of visible fields, or use the default
|
||||
|
||||
$export = new ARSummaryReport($user->company(), $request->all());
|
||||
$hash = \Illuminate\Support\Str::uuid();
|
||||
|
||||
$csv = $export->run();
|
||||
PreviewReport::dispatch($user->company(), $request->all(), ARSummaryReport::class, $hash);
|
||||
|
||||
$headers = [
|
||||
'Content-Disposition' => 'attachment',
|
||||
'Content-Type' => 'text/csv',
|
||||
];
|
||||
return response()->json(['message' => $hash], 200);
|
||||
|
||||
return response()->streamDownload(function () use ($csv) {
|
||||
echo $csv;
|
||||
}, $this->filename, $headers);
|
||||
}
|
||||
}
|
||||
|
@ -11,11 +11,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Services\Report\ClientBalanceReport;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Jobs\Report\PreviewReport;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Services\Report\ClientBalanceReport;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
|
||||
class ClientBalanceReportController extends BaseController
|
||||
{
|
||||
@ -61,24 +62,20 @@ class ClientBalanceReportController extends BaseController
|
||||
*/
|
||||
public function __invoke(GenericReportRequest $request)
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
if ($request->has('send_email') && $request->get('send_email')) {
|
||||
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), ClientBalanceReport::class, $this->filename);
|
||||
SendToAdmin::dispatch($user->company(), $request->all(), ClientBalanceReport::class, $this->filename);
|
||||
|
||||
return response()->json(['message' => 'working...'], 200);
|
||||
}
|
||||
// expect a list of visible fields, or use the default
|
||||
|
||||
$export = new ClientBalanceReport(auth()->user()->company(), $request->all());
|
||||
$hash = \Illuminate\Support\Str::uuid();
|
||||
|
||||
$csv = $export->run();
|
||||
PreviewReport::dispatch($user->company(), $request->all(), ClientBalanceReport::class, $hash);
|
||||
|
||||
$headers = [
|
||||
'Content-Disposition' => 'attachment',
|
||||
'Content-Type' => 'text/csv',
|
||||
];
|
||||
return response()->json(['message' => $hash], 200);
|
||||
|
||||
return response()->streamDownload(function () use ($csv) {
|
||||
echo $csv;
|
||||
}, $this->filename, $headers);
|
||||
}
|
||||
}
|
||||
|
@ -11,11 +11,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Services\Report\ClientSalesReport;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Jobs\Report\PreviewReport;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Services\Report\ClientSalesReport;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
|
||||
class ClientSalesReportController extends BaseController
|
||||
{
|
||||
@ -61,24 +62,20 @@ class ClientSalesReportController extends BaseController
|
||||
*/
|
||||
public function __invoke(GenericReportRequest $request)
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
if ($request->has('send_email') && $request->get('send_email')) {
|
||||
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), ClientSalesReport::class, $this->filename);
|
||||
SendToAdmin::dispatch($user->company(), $request->all(), ClientSalesReport::class, $this->filename);
|
||||
|
||||
return response()->json(['message' => 'working...'], 200);
|
||||
}
|
||||
// expect a list of visible fields, or use the default
|
||||
|
||||
$export = new ClientSalesReport(auth()->user()->company(), $request->all());
|
||||
$hash = \Illuminate\Support\Str::uuid();
|
||||
|
||||
$csv = $export->run();
|
||||
PreviewReport::dispatch($user->company(), $request->all(), ClientSalesReport::class, $hash);
|
||||
|
||||
$headers = [
|
||||
'Content-Disposition' => 'attachment',
|
||||
'Content-Type' => 'text/csv',
|
||||
];
|
||||
return response()->json(['message' => $hash], 200);
|
||||
|
||||
return response()->streamDownload(function () use ($csv) {
|
||||
echo $csv;
|
||||
}, $this->filename, $headers);
|
||||
}
|
||||
}
|
||||
|
@ -11,13 +11,14 @@
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Models\Client;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Jobs\Report\PreviewReport;
|
||||
use App\Export\CSV\ProductSalesExport;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Requests\Report\ProductSalesReportRequest;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Models\Client;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class ProductSalesReportController extends BaseController
|
||||
{
|
||||
@ -63,24 +64,20 @@ class ProductSalesReportController extends BaseController
|
||||
*/
|
||||
public function __invoke(ProductSalesReportRequest $request)
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
if ($request->has('send_email') && $request->get('send_email')) {
|
||||
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), ProductSalesExport::class, $this->filename);
|
||||
SendToAdmin::dispatch($user->company(), $request->all(), ProductSalesExport::class, $this->filename);
|
||||
|
||||
return response()->json(['message' => 'working...'], 200);
|
||||
}
|
||||
// expect a list of visible fields, or use the default
|
||||
|
||||
$export = new ProductSalesExport(auth()->user()->company(), $request->all());
|
||||
$hash = \Illuminate\Support\Str::uuid();
|
||||
|
||||
$csv = $export->run();
|
||||
PreviewReport::dispatch($user->company(), $request->all(), ProductSalesExport::class, $hash);
|
||||
|
||||
$headers = [
|
||||
'Content-Disposition' => 'attachment',
|
||||
'Content-Type' => 'text/csv',
|
||||
];
|
||||
return response()->json(['message' => $hash], 200);
|
||||
|
||||
return response()->streamDownload(function () use ($csv) {
|
||||
echo $csv;
|
||||
}, $this->filename, $headers);
|
||||
}
|
||||
}
|
||||
|
@ -11,13 +11,14 @@
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Models\Client;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Jobs\Report\PreviewReport;
|
||||
use App\Services\Report\ProfitLoss;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Requests\Report\ProfitLossRequest;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Models\Client;
|
||||
use App\Services\Report\ProfitLoss;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class ProfitAndLossController extends BaseController
|
||||
{
|
||||
@ -71,18 +72,13 @@ class ProfitAndLossController extends BaseController
|
||||
|
||||
return response()->json(['message' => 'working...'], 200);
|
||||
}
|
||||
// expect a list of visible fields, or use the default
|
||||
|
||||
$pnl = new ProfitLoss($user->company(), $request->all());
|
||||
$csv = $pnl->run();
|
||||
$hash = \Illuminate\Support\Str::uuid();
|
||||
|
||||
PreviewReport::dispatch($user->company(), $request->all(), ProfitLoss::class, $hash);
|
||||
|
||||
return response()->json(['message' => $hash], 200);
|
||||
|
||||
$headers = [
|
||||
'Content-Disposition' => 'attachment',
|
||||
'Content-Type' => 'text/csv',
|
||||
];
|
||||
|
||||
return response()->streamDownload(function () use ($csv) {
|
||||
echo $csv;
|
||||
}, $this->filename, $headers);
|
||||
}
|
||||
}
|
||||
|
@ -11,11 +11,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Services\Report\TaxSummaryReport;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Jobs\Report\PreviewReport;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Services\Report\TaxSummaryReport;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
|
||||
class TaxSummaryReportController extends BaseController
|
||||
{
|
||||
@ -61,24 +62,21 @@ class TaxSummaryReportController extends BaseController
|
||||
*/
|
||||
public function __invoke(GenericReportRequest $request)
|
||||
{
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
if ($request->has('send_email') && $request->get('send_email')) {
|
||||
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), TaxSummaryReport::class, $this->filename);
|
||||
SendToAdmin::dispatch($user->company(), $request->all(), TaxSummaryReport::class, $this->filename);
|
||||
|
||||
return response()->json(['message' => 'working...'], 200);
|
||||
}
|
||||
// expect a list of visible fields, or use the default
|
||||
|
||||
$export = new TaxSummaryReport(auth()->user()->company(), $request->all());
|
||||
$hash = \Illuminate\Support\Str::uuid();
|
||||
|
||||
$csv = $export->run();
|
||||
PreviewReport::dispatch($user->company(), $request->all(), TaxSummaryReport::class, $hash);
|
||||
|
||||
$headers = [
|
||||
'Content-Disposition' => 'attachment',
|
||||
'Content-Type' => 'text/csv',
|
||||
];
|
||||
return response()->json(['message' => $hash], 200);
|
||||
|
||||
return response()->streamDownload(function () use ($csv) {
|
||||
echo $csv;
|
||||
}, $this->filename, $headers);
|
||||
}
|
||||
}
|
||||
|
@ -11,11 +11,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Services\Report\UserSalesReport;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Jobs\Report\SendToAdmin;
|
||||
use App\Jobs\Report\PreviewReport;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Services\Report\UserSalesReport;
|
||||
use App\Http\Requests\Report\GenericReportRequest;
|
||||
|
||||
class UserSalesReportController extends BaseController
|
||||
{
|
||||
@ -61,24 +62,20 @@ class UserSalesReportController extends BaseController
|
||||
*/
|
||||
public function __invoke(GenericReportRequest $request)
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
if ($request->has('send_email') && $request->get('send_email')) {
|
||||
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), UserSalesReport::class, $this->filename);
|
||||
SendToAdmin::dispatch($user->company(), $request->all(), UserSalesReport::class, $this->filename);
|
||||
|
||||
return response()->json(['message' => 'working...'], 200);
|
||||
}
|
||||
// expect a list of visible fields, or use the default
|
||||
|
||||
$export = new UserSalesReport(auth()->user()->company(), $request->all());
|
||||
$hash = \Illuminate\Support\Str::uuid();
|
||||
|
||||
$csv = $export->run();
|
||||
PreviewReport::dispatch($user->company(), $request->all(), UserSalesReport::class, $hash);
|
||||
|
||||
$headers = [
|
||||
'Content-Disposition' => 'attachment',
|
||||
'Content-Type' => 'text/csv',
|
||||
];
|
||||
return response()->json(['message' => $hash], 200);
|
||||
|
||||
return response()->streamDownload(function () use ($csv) {
|
||||
echo $csv;
|
||||
}, $this->filename, $headers);
|
||||
}
|
||||
}
|
||||
|
@ -27,8 +27,8 @@ class Locale
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
/*LOCALE SET */
|
||||
if ($request->has('lang')) {
|
||||
$locale = $request->input('lang');
|
||||
if ($request->has('lang') && is_string($request->input('lang'))) {
|
||||
$locale = $request->string('lang','en');
|
||||
App::setLocale($locale);
|
||||
} elseif (auth()->guard('contact')->user()) {
|
||||
App::setLocale(auth()->guard('contact')->user()->client()->setEagerLoads([])->first()->locale());
|
||||
|
@ -32,7 +32,7 @@ class SetEmailDb
|
||||
'errors' => new stdClass,
|
||||
];
|
||||
|
||||
if ($request->input('email') && config('ninja.db.multi_db_enabled')) {
|
||||
if ($request->input('email') && is_string($request->input('email')) && config('ninja.db.multi_db_enabled')) {
|
||||
if (! MultiDB::userFindAndSetDb($request->input('email'))) {
|
||||
return response()->json($error, 400);
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ class VendorLocale
|
||||
}
|
||||
|
||||
/*LOCALE SET */
|
||||
if ($request->has('lang')) {
|
||||
if ($request->has('lang') && is_string($request->input('lang'))) {
|
||||
$locale = $request->input('lang');
|
||||
App::setLocale($locale);
|
||||
} elseif (auth()->guard('vendor')->user()) {
|
||||
|
@ -108,7 +108,8 @@ class DirectDebit implements MethodInterface
|
||||
$response = $this->go_cardless->gateway->billingRequests()->create([
|
||||
"params" => [
|
||||
"mandate_request" => [
|
||||
"currency" => auth()->guard('contact')->user()->client->currency()->code
|
||||
"currency" => auth()->guard('contact')->user()->client->currency()->code,
|
||||
"verify" => "recommended"
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
@ -144,11 +144,18 @@ class GoCardlessPaymentDriver extends BaseDriver
|
||||
|
||||
$this->init();
|
||||
|
||||
if ($payment_hash->fee_invoice) {
|
||||
$description = "Invoice {$payment_hash->fee_invoice->number} for {$amount} for client {$this->client->present()->name()}";
|
||||
} else {
|
||||
$description = "Amount {$amount} from client {$this->client->present()->name()}";
|
||||
}
|
||||
|
||||
try {
|
||||
$payment = $this->gateway->payments()->create([
|
||||
'params' => [
|
||||
'amount' => $converted_amount,
|
||||
'currency' => $this->client->getCurrencyCode(),
|
||||
'description' => $description,
|
||||
'metadata' => [
|
||||
'payment_hash' => $this->payment_hash->hash,
|
||||
],
|
||||
|
@ -652,7 +652,7 @@ class PdfBuilder
|
||||
/**
|
||||
* Formats the line items for display.
|
||||
*
|
||||
* @param array<\App\DataMapper\InvoiceItem> $items
|
||||
* @param array $items
|
||||
* @param string $table_type
|
||||
*
|
||||
* @return array
|
||||
@ -662,10 +662,10 @@ class PdfBuilder
|
||||
$data = [];
|
||||
|
||||
$locale_info = localeconv();
|
||||
|
||||
// $this->service->config->entity_currency = $this->service->config->currency;
|
||||
|
||||
|
||||
foreach ($items as $key => $item) {
|
||||
/** @var \App\DataMapper\InvoiceItem $item */
|
||||
|
||||
if ($table_type == '$product' && $item->type_id != 1) {
|
||||
if ($item->type_id != 4 && $item->type_id != 6 && $item->type_id != 5) {
|
||||
continue;
|
||||
@ -980,7 +980,7 @@ class PdfBuilder
|
||||
return [
|
||||
['element' => 'div', 'properties' => ['style' => 'display: flex; flex-direction: column;'], 'elements' => [
|
||||
['element' => 'div', 'properties' => ['style' => 'margin-top: 1.5rem; display: block; align-items: flex-start; page-break-inside: avoid; visible !important;'], 'elements' => [
|
||||
['element' => 'img', 'properties' => ['src' => '$invoiceninja.whitelabel', 'style' => 'height: 2.5rem;', 'hidden' => 'false', 'id' => 'invoiceninja-whitelabel-logo']],
|
||||
['element' => 'img', 'properties' => ['src' => '$invoiceninja.whitelabel', 'style' => 'height: 2.5rem;', 'hidden' => $this->service->company->account->isPaid() ? 'true' : 'false', 'id' => 'invoiceninja-whitelabel-logo']],
|
||||
]],
|
||||
]],
|
||||
];
|
||||
@ -1052,7 +1052,7 @@ class PdfBuilder
|
||||
]],
|
||||
['element' => 'img', 'properties' => ['style' => 'max-width: 50%; height: auto;', 'src' => '$contact.signature', 'id' => 'contact-signature']],
|
||||
['element' => 'div', 'properties' => ['style' => 'margin-top: 1.5rem; display: flex; align-items: flex-start; page-break-inside: auto;'], 'elements' => [
|
||||
['element' => 'img', 'properties' => ['src' => '$invoiceninja.whitelabel', 'style' => 'height: 2.5rem;', 'hidden' => 'false', 'id' => 'invoiceninja-whitelabel-logo']],
|
||||
['element' => 'img', 'properties' => ['src' => '$invoiceninja.whitelabel', 'style' => 'height: 2.5rem;', 'hidden' => $this->service->company->account->isPaid() ? 'true' : 'false', 'id' => 'invoiceninja-whitelabel-logo']],
|
||||
]],
|
||||
]],
|
||||
['element' => 'div', 'properties' => ['class' => 'totals-table-right-side', 'dir' => '$dir'], 'elements' => []],
|
||||
|
@ -113,12 +113,15 @@ class TaxSummaryReport extends BaseExport
|
||||
|
||||
if(in_array($invoice->status_id, [Invoice::STATUS_PARTIAL,Invoice::STATUS_PAID])) {
|
||||
|
||||
if($invoice->status_id == Invoice::STATUS_PAID) {
|
||||
$cash_map[$key]['tax_amount'] += $tax['total'];
|
||||
} else {
|
||||
$cash_map[$key]['tax_amount'] += (($invoice->amount - $invoice->balance) / $invoice->balance) * $tax['total'] ?? 0;
|
||||
try {
|
||||
if($invoice->status_id == Invoice::STATUS_PAID) {
|
||||
$cash_map[$key]['tax_amount'] += $tax['total'];
|
||||
} else {
|
||||
$cash_map[$key]['tax_amount'] += (($invoice->amount - $invoice->balance) / $invoice->balance) * $tax['total'] ?? 0;
|
||||
}
|
||||
} catch(\DivisionByZeroError $e) {
|
||||
$cash_map[$key]['tax_amount'] += 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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' => env('APP_VERSION','5.7.34'),
|
||||
'app_tag' => env('APP_TAG','5.7.34'),
|
||||
'app_version' => env('APP_VERSION','5.7.35'),
|
||||
'app_tag' => env('APP_TAG','5.7.35'),
|
||||
'minimum_client_version' => '5.0.16',
|
||||
'terms_version' => '1.0.1',
|
||||
'api_secret' => env('API_SECRET', ''),
|
||||
|
@ -203,7 +203,7 @@ $LANG = array(
|
||||
'limit_clients' => 'Entschuldigung aber das wird das Limit von :count Kunden überschreiten. Bitte führen Sie ein kostenpflichtiges Upgrade durch.',
|
||||
'payment_error' => 'Es ist ein Fehler während der Zahlung aufgetreten. Bitte versuche es später noch einmal.',
|
||||
'registration_required' => 'Registrierung erforderlich',
|
||||
'confirmation_required' => 'Bitte verifiziere deine E-Mail Adresse, :link um die E-Mail Bestätigung erneut zu senden.',
|
||||
'confirmation_required' => 'Bitte verifiziern Sie Ihre E-Mail-Adresse, :link um die E-Mail-Bestätigung erneut zu senden.',
|
||||
'updated_client' => 'Kunde erfolgreich aktualisiert',
|
||||
'archived_client' => 'Kunde erfolgreich archiviert',
|
||||
'archived_clients' => ':count Kunden erfolgreich archiviert',
|
||||
@ -239,7 +239,7 @@ $LANG = array(
|
||||
'deleted_vendors' => ':count Lieferanten erfolgreich gelöscht',
|
||||
'confirmation_subject' => 'Kontobestätigung',
|
||||
'confirmation_header' => 'Kontobestätigung',
|
||||
'confirmation_message' => 'Bitte klicke auf den folgenden Link um dein Konto zu bestätigen.',
|
||||
'confirmation_message' => 'Bitte klicken Sie auf den folgenden Link, um Ihr Konto zu bestätigen.',
|
||||
'invoice_subject' => 'Neue Rechnung :number von :account',
|
||||
'invoice_message' => 'Um Ihre Rechnung über :amount einzusehen, klicken Sie bitte auf den folgenden Link:',
|
||||
'payment_subject' => 'Zahlungseingang',
|
||||
@ -247,7 +247,7 @@ $LANG = array(
|
||||
'email_salutation' => 'Sehr geehrte/r :name,',
|
||||
'email_signature' => 'Mit freundlichen Grüßen',
|
||||
'email_from' => 'Das InvoiceNinja Team',
|
||||
'invoice_link_message' => 'Um deine Kundenrechnung anzuschauen, klicke auf den folgenden Link:',
|
||||
'invoice_link_message' => 'Um die Rechnung anzuschauen, bitte auf den folgenden Link klicken:',
|
||||
'notification_invoice_paid_subject' => 'Die Rechnung :invoice wurde von :client bezahlt.',
|
||||
'notification_invoice_sent_subject' => 'Rechnung :invoice wurde an :client versendet.',
|
||||
'notification_invoice_viewed_subject' => 'Die Rechnung :invoice wurde von :client angeschaut.',
|
||||
@ -256,20 +256,20 @@ $LANG = array(
|
||||
'notification_invoice_viewed' => 'Der Kunde :client hat sich die Rechnung :invoice über :amount angesehen.',
|
||||
'stripe_payment_text' => 'Rechnung :invoicenumber in Höhe von :amount für Kunde :client',
|
||||
'stripe_payment_text_without_invoice' => 'Zahlung ohne Rechnung in Höhe von :amount für Kunde :client',
|
||||
'reset_password' => 'Du kannst dein Passwort zurücksetzen, indem du auf den folgenden Link klickst:',
|
||||
'reset_password' => 'Sie können Ihr Passwort zurücksetzen, indem Sie auf den folgenden Link klicken:',
|
||||
'secure_payment' => 'Sichere Zahlung',
|
||||
'card_number' => 'Kartennummer',
|
||||
'expiration_month' => 'Ablaufmonat',
|
||||
'expiration_year' => 'Ablaufjahr',
|
||||
'cvv' => 'Kartenprüfziffer',
|
||||
'logout' => 'Abmelden',
|
||||
'sign_up_to_save' => 'Melde dich an, um deine Arbeit zu speichern',
|
||||
'sign_up_to_save' => 'Melden Sie sich an, um Ihre Arbeit zu speichern',
|
||||
'agree_to_terms' => 'Ich stimme den :terms zu',
|
||||
'terms_of_service' => 'Service-Bedingungen',
|
||||
'email_taken' => 'Diese E-Mail-Adresse ist bereits registriert',
|
||||
'working' => 'Wird bearbeitet',
|
||||
'success' => 'Erfolg',
|
||||
'success_message' => 'Du hast dich erfolgreich registriert. Bitte besuche den Link in deiner Bestätigungsmail um deine E-Mail-Adresse zu verifizieren.',
|
||||
'success_message' => 'Sie haben sich erfolgreich registriert. Bitte rufen Sie den Link in der Bestätigungs-Mail auf, um Ihre E-Mail-Adresse zu verifizieren.',
|
||||
'erase_data' => 'Ihr Konto ist nicht registriert, diese Aktion wird Ihre Daten unwiderruflich löschen.',
|
||||
'password' => 'Passwort',
|
||||
'pro_plan_product' => 'Pro Plan',
|
||||
@ -343,12 +343,12 @@ $LANG = array(
|
||||
'converted_to_invoice' => 'Angebot erfolgreich in Rechnung umgewandelt',
|
||||
'quote_subject' => 'Neues Angebot :number von :account',
|
||||
'quote_message' => 'Klicken Sie auf den folgenden Link um das Angebot über :amount anzuschauen.',
|
||||
'quote_link_message' => 'Klicke auf den folgenden Link um das Angebot deines Kunden anzuschauen:',
|
||||
'quote_link_message' => 'Um das Angebot anzuschauen, bitte auf den folgenden Link klicken:',
|
||||
'notification_quote_sent_subject' => 'Angebot :invoice wurde an :client versendet',
|
||||
'notification_quote_viewed_subject' => 'Angebot :invoice wurde von :client angeschaut',
|
||||
'notification_quote_sent' => 'Der folgende Kunde :client erhielt das Angebot :invoice über :amount.',
|
||||
'notification_quote_viewed' => 'Der folgende Kunde :client hat sich das Angebot :client über :amount angesehen.',
|
||||
'session_expired' => 'Deine Sitzung ist abgelaufen.',
|
||||
'session_expired' => 'Ihre Sitzung ist abgelaufen.',
|
||||
'invoice_fields' => 'Rechnungsfelder',
|
||||
'invoice_options' => 'Rechnungsoptionen',
|
||||
'hide_paid_to_date' => '"Bereits gezahlt" ausblenden',
|
||||
@ -372,7 +372,7 @@ $LANG = array(
|
||||
'confirm_recurring_email_invoice' => 'Wiederkehrende Rechnung ist aktiv. Bis du sicher, dass du diese Rechnung weiterhin als E-Mail verschicken möchtest?',
|
||||
'confirm_recurring_email_invoice_not_sent' => 'Sind Sie sicher, dass Sie diese wiederkehrende Rechnung aktivieren wollen?',
|
||||
'cancel_account' => 'Konto kündigen',
|
||||
'cancel_account_message' => 'Warnung: Diese Aktion wird dein Konto unwiderruflich löschen.',
|
||||
'cancel_account_message' => 'Warnung: Diese Aktion wird Ihr Konto unwiderruflich löschen.',
|
||||
'go_back' => 'Zurück',
|
||||
'data_visualizations' => 'Datenvisualisierungen',
|
||||
'sample_data' => 'Beispieldaten werden angezeigt',
|
||||
@ -591,7 +591,7 @@ $LANG = array(
|
||||
'pro_plan_call_to_action' => 'Jetzt Upgraden!',
|
||||
'pro_plan_feature1' => 'Unlimitierte Anzahl Kunden erstellen',
|
||||
'pro_plan_feature2' => 'Zugriff auf 10 schöne Rechnungsdesigns',
|
||||
'pro_plan_feature3' => 'Benutzerdefinierte URLs - "DeineFirma.InvoiceNinja.com"',
|
||||
'pro_plan_feature3' => 'Benutzerdefinierte URLs - "IhreFirma.InvoiceNinja.com"',
|
||||
'pro_plan_feature4' => '"Erstellt durch Invoice Ninja" entfernen',
|
||||
'pro_plan_feature5' => 'Multi-Benutzer Zugriff & Aktivitätstracking',
|
||||
'pro_plan_feature6' => 'Angebote & pro-forma Rechnungen erstellen',
|
||||
@ -601,7 +601,7 @@ $LANG = array(
|
||||
'break_duration' => 'Pause',
|
||||
'edit_details' => 'Details bearbeiten',
|
||||
'work' => 'Arbeiten',
|
||||
'timezone_unset' => 'Bitte :link um deine Zeitzone zu setzen',
|
||||
'timezone_unset' => 'Bitte :link um Ihre Zeitzone zu setzen',
|
||||
'click_here' => 'hier klicken',
|
||||
'email_receipt' => 'Zahlungsbestätigung an Kunden per E-Mail senden',
|
||||
'created_payment_emailed_client' => 'Zahlung erfolgreich erstellt und Kunde per E-Mail benachrichtigt',
|
||||
@ -659,7 +659,7 @@ $LANG = array(
|
||||
'primary_user' => 'Primärer Benutzer',
|
||||
'help' => 'Hilfe',
|
||||
'playground' => 'Spielplatz',
|
||||
'support_forum' => 'Support Forums',
|
||||
'support_forum' => 'Support-Foren',
|
||||
'invoice_due_date' => 'Fälligkeitsdatum',
|
||||
'quote_due_date' => 'Gültig bis',
|
||||
'valid_until' => 'Gültig bis',
|
||||
@ -676,7 +676,7 @@ $LANG = array(
|
||||
'status_all' => 'Alle',
|
||||
'show_line_item_tax' => '<b>Steuern für Belegpositionen</b> in der jeweiligen Zeile anzeigen',
|
||||
'iframe_url' => 'Webseite',
|
||||
'iframe_url_help1' => 'Kopiere den folgenden Code in eine Seite auf deiner Website.',
|
||||
'iframe_url_help1' => 'Kopieren Sie den folgenden Code auf eine Seite Ihrer Website.',
|
||||
'iframe_url_help2' => 'Du kannst diese Funktion testen, in dem du für eine Rechnung \'Als Empfänger betrachten\'. anklickst.',
|
||||
'auto_bill' => 'Automatische Verrechnung',
|
||||
'military_time' => '24-Stunden-Zeit',
|
||||
@ -753,7 +753,7 @@ $LANG = array(
|
||||
'activity_7' => ':contact schaute Rechnung :invoice für :client an',
|
||||
'activity_8' => ':user archivierte Rechnung :invoice',
|
||||
'activity_9' => ':user löschte Rechnung :invoice',
|
||||
'activity_10' => ':user entered payment :payment for :payment_amount on invoice :invoice for :client',
|
||||
'activity_10' => ':user hat die Zahlung :payment für :payment _amount der Rechnung :invoice für Kunde :client eingegeben',
|
||||
'activity_11' => ':user aktualisierte Zahlung :payment',
|
||||
'activity_12' => ':user archivierte Zahlung :payment',
|
||||
'activity_13' => ':user löschte Zahlung :payment',
|
||||
@ -866,13 +866,13 @@ $LANG = array(
|
||||
'template_help_title' => 'Vorlagen Hilfe',
|
||||
'template_help_1' => 'Verfügbare Variablen:',
|
||||
'email_design_id' => 'E-Mail-Stil',
|
||||
'email_design_help' => 'Lass deine E-Mails durch die Verwendung von HTML Layouts professioneller aussehen.',
|
||||
'email_design_help' => 'Lassen Sie Ihre E-Mails durch die Verwendung von HTML-Layouts professioneller aussehen.',
|
||||
'plain' => 'Einfach',
|
||||
'light' => 'Hell',
|
||||
'dark' => 'Dunkel',
|
||||
'industry_help' => 'Wird genutzt um Vergleiche zwischen den Durchschnittswerten von Firmen ähnlicher Größe und Branche ermitteln zu können.',
|
||||
'subdomain_help' => 'Passen Sie die Rechnungslink-Subdomäne an oder stellen Sie die Rechnung auf Ihrer eigenen Webseite zur Verfügung.',
|
||||
'website_help' => 'Zeige die Rechnung als iFrame auf deiner eigenen Webseite an',
|
||||
'website_help' => 'Zeigt die Rechnung als Iframe auf Ihrer eigenen Webseite an',
|
||||
'invoice_number_help' => 'Geben Sie einen Präfix oder ein benutzerdefiniertes Schema an, um die Rechnungsnummer dynamisch zu erzeugen.',
|
||||
'quote_number_help' => 'Geben Sie einen Präfix oder ein benutzerdefiniertes Schema an, um die Angebotsnummer dynamisch zu erzeugen.',
|
||||
'custom_client_fields_helps' => 'Füge ein Kundenfeld hinzu. Optional kann die Feldbezeichnung und der Feldwert auch in PDF-Dokumenten ausgegeben werden.',
|
||||
@ -881,7 +881,7 @@ $LANG = array(
|
||||
'custom_invoice_charges_helps' => 'Füge ein Rechnungsgebührenfeld hinzu. Erfasse die Kosten, wenn eine neue Rechnung erstellt wird und addiere sie in den Zwischensummen der Rechnung.',
|
||||
'token_expired' => 'Validierungstoken ist abgelaufen. Bitte probieren Sie es erneut.',
|
||||
'invoice_link' => 'Link zur Rechnung',
|
||||
'button_confirmation_message' => 'Bestätige deine E-Mail-Adresse.',
|
||||
'button_confirmation_message' => 'Bestätigen Sie Ihre E-Mail-Adresse.',
|
||||
'confirm' => 'Bestätigen',
|
||||
'email_preferences' => 'E-Mail-Einstellungen',
|
||||
'created_invoices' => ':count Rechnung(en) erfolgreich erstellt',
|
||||
@ -1013,9 +1013,9 @@ $LANG = array(
|
||||
'enable_https' => 'Wir empfehlen dringend HTTPS zu verwenden, um Kreditkarten online zu akzeptieren.',
|
||||
'quote_issued_to' => 'Angebot ausgefertigt an',
|
||||
'show_currency_code' => 'Währungscode',
|
||||
'free_year_message' => 'Dein Account wurde für ein Jahr kostenlos auf den PRO-Tarif hochgestuft.',
|
||||
'free_year_message' => 'Ihr Account wurde für ein Jahr kostenlos auf den Pro-Tarif hochgestuft.',
|
||||
'trial_message' => 'Ihr Account erhält zwei Wochen Probemitgliedschaft für unseren Pro-Plan.',
|
||||
'trial_footer' => 'Die Testversion deines Pro-Tarifs endet in :count Tagen. :link jetzt hochstufen.',
|
||||
'trial_footer' => 'Die Testversion Ihres Pro-Tarifs endet in :count Tagen. :link jetzt upgraden.',
|
||||
'trial_footer_last_day' => 'Heute ist der letzte Tag Ihrer kostenlosen Probezeit, :link um das Upgrade jetzt durchzuführen.',
|
||||
'trial_call_to_action' => 'Kostenlose Probezeit starten',
|
||||
'trial_success' => 'Erfolgreich eine 2-Wochen Testversion aktiviert',
|
||||
@ -1023,7 +1023,7 @@ $LANG = array(
|
||||
|
||||
|
||||
'white_label_text' => 'Kaufen Sie eine Ein-Jahres-"White Label"-Lizenz für $:price um das Invoice Ninja Branding von den Rechnungen und dem Kundenportal zu entfernen.',
|
||||
'user_email_footer' => 'Um deine E-Mail-Benachrichtigungen anzupassen besuche bitte :link',
|
||||
'user_email_footer' => 'Um Ihre E-Mail-Benachrichtigungen anzupassen, klicken Sie bitte auf :link',
|
||||
'reset_password_footer' => 'Wenn du das Zurücksetzen des Passworts nicht beantragt hast, benachrichtige bitte unseren Support: :email',
|
||||
'limit_users' => 'Entschuldige, das würde das Limit von :limit Benutzern überschreiten',
|
||||
'more_designs_self_host_header' => 'Erhalte 6 zusätzliche Rechnungsdesigns für nur $:price',
|
||||
@ -1149,7 +1149,7 @@ $LANG = array(
|
||||
'plan_status' => 'Plan Status',
|
||||
|
||||
'plan_upgrade' => 'Upgraden',
|
||||
'plan_change' => 'Manage Plan',
|
||||
'plan_change' => 'Tarif verwalten',
|
||||
'pending_change_to' => 'Änderungen zu',
|
||||
'plan_changes_to' => ':plan am :date',
|
||||
'plan_term_changes_to' => ':plan (:term) am :date',
|
||||
@ -1821,8 +1821,8 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'bot_emailed_notify_paid' => 'Ich schicke Ihnen nach der Zahlung eine E-Mail.',
|
||||
'add_product_to_invoice' => 'Füge 1 :product hinzu',
|
||||
'not_authorized' => 'Du bist nicht autorisiert',
|
||||
'bot_get_code' => 'Danke! Ich habe dir eine E-Mail mit deinem Sicherheitscode geschickt.',
|
||||
'bot_welcome' => 'Das war es schon, dein Account ist verifiziert.<br/>',
|
||||
'bot_get_code' => 'Danke! Ich habe Ihnen eine E-Mail mit Ihrem Sicherheitscode gesendet.',
|
||||
'bot_welcome' => 'Das war es schon, Ihr Account ist verifiziert.<br/>',
|
||||
'email_not_found' => 'Ich konnte keinen verfügbaren Account für :email finden',
|
||||
'invalid_code' => 'Der Code ist nicht korrekt',
|
||||
'security_code_email_subject' => 'Sicherheitscode für Invoice Ninja Bot',
|
||||
@ -1968,7 +1968,7 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'realtime_preview' => 'Echtzeit Vorschau',
|
||||
'realtime_preview_help' => 'Echtzeit Aktualisierung der PDF Vorschau während der Rechnungs-Bearbeitung. <br/> Deaktivieren um die Performance während des Bearbeitens zu verbessern.',
|
||||
'live_preview_help' => 'Live PDF Vorschau auf Rechnungsseite anzeigen.',
|
||||
'force_pdfjs_help' => 'Ersetze den eingebauten PDF-Viewer in :chrome_link und :firefox_link.<br/>Aktiviere dies, wenn dein Browser die PDFs automatisch herunterlädt.',
|
||||
'force_pdfjs_help' => 'Ersetze den eingebauten PDF-Viewer in :chrome_link und :firefox_link.<br/>Aktivieren Sie dies, wenn Ihr Browser die PDFs automatisch herunterlädt.',
|
||||
'force_pdfjs' => 'Verhindere Download',
|
||||
'redirect_url' => 'Umleitungs-URL',
|
||||
'redirect_url_help' => 'Gebe optional eine URL an, zu der umgeleitet werden soll, wenn eine Zahlung getätigt wurde.',
|
||||
@ -2003,8 +2003,8 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'https' => 'HTTPS',
|
||||
'require' => 'Benötigt',
|
||||
'license_expiring' => 'Anmerkung: Ihre Lizenz läuftin :count Tagen ab, :link um sie zu erneuern.',
|
||||
'security_confirmation' => 'Deine E-Mail Adresse wurde bestätigt.',
|
||||
'white_label_expired' => 'Deine White Label Lizenz ist ausgelaufen, bitte denke darüber nach diese zu verlängern um unser Projekt zu unterstützen.',
|
||||
'security_confirmation' => 'Ihre E-Mail Adresse wurde bestätigt.',
|
||||
'white_label_expired' => 'Ihre White-Label-Lizenz ist ausgelaufen. Bitte denken Sie darüber nach, diese zu verlängern, um unser Projekt zu unterstützen.',
|
||||
'renew_license' => 'Verlängere die Lizenz',
|
||||
'iphone_app_message' => 'Berücksichtigen Sie unsere :link herunterzuladen',
|
||||
'iphone_app' => 'iPhone-App',
|
||||
@ -2094,7 +2094,7 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'profile' => 'Profil',
|
||||
'payment_type_help' => 'Setze die Standard <b>manuelle Zahlungsmethode</b>.',
|
||||
'industry_Construction' => 'Bauwesen',
|
||||
'your_statement' => 'Deine Abrechnung',
|
||||
'your_statement' => 'Ihre Abrechnung',
|
||||
'statement_issued_to' => 'Abrechnung ausgestellt für',
|
||||
'statement_to' => 'Abrechnung für',
|
||||
'customize_options' => 'Optionen anpassen',
|
||||
@ -2269,7 +2269,7 @@ 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',
|
||||
'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',
|
||||
'error_app_key_set_to_default' => 'Fehler: APP_KEY ist auf einen Standardwert gesetzt. Um ihn zu aktualisieren, sicheren Sie Ihre Datenbank und führen dann <code>php artisan ninja:update-key</code> aus',
|
||||
'charge_late_fee' => 'Verspätungszuschlag berechnen',
|
||||
'late_fee_amount' => 'Höhe des Verspätungszuschlags',
|
||||
'late_fee_percent' => 'Verspätungszuschlag Prozent',
|
||||
@ -2401,8 +2401,11 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'currency_cuban_peso' => 'Kubanischer Peso',
|
||||
'currency_bz_dollar' => 'Belize-Dollar',
|
||||
'currency_libyan_dinar' => 'Libyscher Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
'currency_silver_troy_ounce' => 'Silberne Feinunze',
|
||||
'currency_gold_troy_ounce' => 'Goldene Feinunze',
|
||||
'currency_nicaraguan_córdoba' => 'Nicaraguan Córdoba',
|
||||
'currency_malagasy_ariary' => 'Malagasy ariary',
|
||||
"currency_tongan_pa_anga" => "Tongan Pa'anga",
|
||||
|
||||
'review_app_help' => 'Wir hoffen, dass Ihnen die App gefällt. Wenn Sie :link in Betracht ziehen würden, wären wir Ihnen sehr dankbar!',
|
||||
'writing_a_review' => 'Schreiben einer Rezension',
|
||||
@ -2426,10 +2429,10 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'item_notes' => 'Beschreibung',
|
||||
'item_cost' => 'Preis',
|
||||
'item_quantity' => 'Menge',
|
||||
'item_tax_rate' => 'Steuern für Position',
|
||||
'item_tax_name' => 'Steuern',
|
||||
'item_tax1' => 'Position Steuern 1',
|
||||
'item_tax2' => 'Position Steuern 2',
|
||||
'item_tax_rate' => 'Steuersatz für Position',
|
||||
'item_tax_name' => 'Name der Steuer für Position',
|
||||
'item_tax1' => 'Positions-Steuer 1',
|
||||
'item_tax2' => 'Positions-Steuer 2',
|
||||
|
||||
'delete_company' => 'Firma löschen',
|
||||
'delete_company_help' => 'Die Firma unwiderruflich mit allen Daten löschen.',
|
||||
@ -2451,7 +2454,7 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'deleted_company' => 'Unternehmen erfolgreich gelöscht',
|
||||
'deleted_account' => 'Konto erfolgreich gelöscht',
|
||||
'deleted_company_details' => 'Ihre Firma (:account) wurde erfolgreich gelöscht.',
|
||||
'deleted_account_details' => 'Dein Konto (:account) wurde erfolgreich gelöscht.',
|
||||
'deleted_account_details' => 'Ihr Konto (:account) wurde erfolgreich gelöscht.',
|
||||
|
||||
'alipay' => 'Alipay',
|
||||
'sofort' => 'SOFORT-Überweisung',
|
||||
@ -2517,7 +2520,7 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'custom_value1' => 'Benutzerdefinierter Wert 1',
|
||||
'custom_value2' => 'Benutzerdefinierter Wert 2',
|
||||
'enable_two_factor' => 'Zwei-Faktor-Authentifizierung',
|
||||
'enable_two_factor_help' => 'Bestätige beim Anmelden mit deinem Telefon deine Identität',
|
||||
'enable_two_factor_help' => 'Bestätigen Sie beim Anmelden mit Ihrem Telefon Ihre Identität',
|
||||
'two_factor_setup' => 'Zwei-Faktor Einrichtung',
|
||||
'two_factor_setup_help' => 'Barcode mit :link kompatibler App scannen.',
|
||||
'one_time_password' => 'Einmaliges Passwort',
|
||||
@ -2529,7 +2532,7 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'self_host_login' => 'Eigenes-Hosting Anmeldung',
|
||||
'set_self_hoat_url' => 'Eigenes-Hosting URL',
|
||||
'local_storage_required' => 'Fehler: Lokaler Speicherplatz ist nicht verfügbar.',
|
||||
'your_password_reset_link' => 'Dein Passwort zurücksetzen Link',
|
||||
'your_password_reset_link' => 'Ihr Passwort-zurücksetzen-Link',
|
||||
'subdomain_taken' => 'Die Subdomäne wird bereits verwendet',
|
||||
'client_login' => 'Kundenanmeldung',
|
||||
'converted_amount' => 'Umgerechneter Betrag',
|
||||
@ -2744,7 +2747,7 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'purging' => 'Bereinigung',
|
||||
'warning_local_refund' => 'Die Rückerstattung wird in der App erfasst, aber NICHT vom Zahlungs-Gateway verarbeitet.',
|
||||
'email_address_changed' => 'E-Mail Adresse wurde geändert',
|
||||
'email_address_changed_message' => 'Die E-Mail-Adresse für dein Konto wurde von :old_email auf :new_email geändert.',
|
||||
'email_address_changed_message' => 'Die E-Mail-Adresse für Ihr Konto wurde von :old_email auf :new_email geändert.',
|
||||
'test' => 'Test',
|
||||
'beta' => 'Beta',
|
||||
'gmp_required' => 'Exportieren zu ZIP benötigt die GMP Erweiterung',
|
||||
@ -3210,7 +3213,7 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'welcome_to_the_new_version' => 'Herzlich willkommen zur neuen Version von Invoice Ninja',
|
||||
'next_step_data_download' => 'Im nächsten Schritt können Sie Ihre Daten für die Migration herunterladen.',
|
||||
'download_data' => 'Drücke den Button darunter, um die Daten herunterzuladen.',
|
||||
'migration_import' => 'Fantastisch! Jetzt bist du bereit, die Migrationsdaten zu importieren. Gehe zu deiner neuen Installation, um deine Daten zu importieren.',
|
||||
'migration_import' => 'Fantastisch! Jetzt sind Sie bereit, die Migrationsdaten zu importieren. Gehen Sie zu Ihrer neuen Installation, um Ihre Daten zu importieren.',
|
||||
'continue' => 'Weiter',
|
||||
'company1' => 'Benutzerdefinierte Firma 1',
|
||||
'company2' => 'Benutzerdefinierte Firma 2',
|
||||
@ -3321,7 +3324,7 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'three_tax_rates' => 'Drei Steuersätze',
|
||||
'default_tax_rate' => 'Standard-Steuersatz',
|
||||
'invoice_tax' => 'Rechnungssteuer',
|
||||
'line_item_tax' => 'Belegposition Steuer',
|
||||
'line_item_tax' => 'Belegpositions-Steuer',
|
||||
'inclusive_taxes' => 'Inklusive Steuern',
|
||||
'invoice_tax_rates' => 'Rechnungs-Steuersätze',
|
||||
'item_tax_rates' => 'Element-Steuersätze',
|
||||
@ -3681,9 +3684,9 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'send_date' => 'Versanddatum',
|
||||
'auto_bill_on' => 'Automatische Rechnungsstellung zum',
|
||||
'minimum_under_payment_amount' => 'Minimaler Unterzahlungsbetrag',
|
||||
'allow_over_payment' => 'Überzahlung zulassen',
|
||||
'allow_over_payment' => 'Überbezahlung erlauben',
|
||||
'allow_over_payment_help' => 'Überzahlungen zulassen, beispielsweise Trinkgelder',
|
||||
'allow_under_payment' => 'Unterzahlung zulassen',
|
||||
'allow_under_payment' => 'Unterbezahlung erlauben',
|
||||
'allow_under_payment_help' => 'Teilzahlungen zulassen',
|
||||
'test_mode' => 'Test Modus',
|
||||
'calculated_rate' => 'Berechneter Satz',
|
||||
@ -3748,12 +3751,12 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'activity_66' => ':user mailte endlose Mahnung für Rechnung :invoice an :contact',
|
||||
'expense_category_id' => 'Ausgabenkategorie ID',
|
||||
'view_licenses' => 'Lizenzen anzeigen',
|
||||
'fullscreen_editor' => 'Vollbild Editor',
|
||||
'sidebar_editor' => 'Seitenmenü Editor',
|
||||
'fullscreen_editor' => 'Vollbild-Editor',
|
||||
'sidebar_editor' => 'Seitenmenü-Editor',
|
||||
'please_type_to_confirm' => 'Bitte geben Sie ":value" zur Bestätigung ein',
|
||||
'purge' => 'Bereinigen',
|
||||
'clone_to' => 'Duplizieren zu',
|
||||
'clone_to_other' => 'Zu anderen duplizieren',
|
||||
'clone_to_other' => 'Als anderen Typ duplizieren',
|
||||
'labels' => 'Beschriftung',
|
||||
'add_custom' => 'Beschriftung hinzufügen',
|
||||
'payment_tax' => 'Steuer-Zahlung',
|
||||
@ -3762,9 +3765,9 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'paid_invoices_are_locked' => 'Bezahlte Rechnungen sind gesperrt',
|
||||
'source_code' => 'Quellcode',
|
||||
'app_platforms' => 'App-Plattformen',
|
||||
'archived_task_statuses' => ' :value Aufgaben Stati erfolgreich archiviert',
|
||||
'deleted_task_statuses' => ' :value Aufgaben Stati erfolgreich gelöscht',
|
||||
'restored_task_statuses' => ' :value Aufgaben Stati erfolgreich wiederhergestellt',
|
||||
'archived_task_statuses' => ' :value Aufgaben-Status erfolgreich archiviert',
|
||||
'deleted_task_statuses' => ' :value Aufgaben-Status erfolgreich gelöscht',
|
||||
'restored_task_statuses' => ' :value Aufgaben-Status erfolgreich wiederhergestellt',
|
||||
'deleted_expense_categories' => ' :value Ausgabenkategorien erfolgreich gelöscht',
|
||||
'restored_expense_categories' => ':value Ausgabenkategorien erfolgreich wiederhergestellt',
|
||||
'archived_recurring_invoices' => ':value Wiederkehrende Rechnung erfolgreich archiviert',
|
||||
@ -4070,7 +4073,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'self_update_not_available' => 'Integrierter Updater auf diesem System nicht verfügbar.',
|
||||
'user_detached' => 'Nutzer wurden vom Unternehmen entkoppelt',
|
||||
'create_webhook_failure' => 'Webhook konnte nicht erstellt werden',
|
||||
'payment_message_extended' => 'Vielen Dank für deine Zahlung von :amount für die Rechnung :invoice',
|
||||
'payment_message_extended' => 'Vielen Dank für Ihre Zahlung von :amount für die Rechnung :invoice',
|
||||
'online_payments_minimum_note' => 'Hinweis: Online-Zahlungen werden nur unterstützt, wenn der Betrag größer als 1€ oder der entsprechende Währungsbetrag ist.',
|
||||
'payment_token_not_found' => 'Zahlungstoken nicht gefunden, bitte versuchen Sie es erneut. Wenn das Problem weiterhin besteht, versuchen Sie es mit einer anderen Zahlungsmethode',
|
||||
'vendor_address1' => 'Straße Lieferant',
|
||||
@ -4121,7 +4124,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'activate_company_help' => 'E-Mails, wiederkehrende Rechnungen und Benachrichtigungen aktivieren',
|
||||
'an_error_occurred_try_again' => 'Ein Fehler ist aufgetreten, bitte versuchen Sie es erneut.',
|
||||
'please_first_set_a_password' => 'Bitte vergeben Sie zuerst ein Passwort.',
|
||||
'changing_phone_disables_two_factor' => 'Achtung: Das Ändern deiner Telefonnummer wird die Zwei-Faktor-Authentifizierung deaktivieren',
|
||||
'changing_phone_disables_two_factor' => 'Achtung: Das Ändern Ihrer Telefonnummer wird die Zwei-Faktor-Authentifizierung deaktivieren',
|
||||
'help_translate' => 'Hilf mit beim Übersetzen',
|
||||
'please_select_a_country' => 'Bitte wählen Sie ein Land',
|
||||
'disabled_two_factor' => '2FA erfolgreich deaktiviert',
|
||||
@ -4327,7 +4330,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'include_drafts' => 'Entwürfe einschließen',
|
||||
'include_drafts_help' => 'Entwürfe von Aufzeichnungen in Berichte einbeziehen',
|
||||
'is_invoiced' => 'Ist in Rechnung gestellt',
|
||||
'change_plan' => 'Manage Plan',
|
||||
'change_plan' => 'Tarif verwalten',
|
||||
'persist_data' => 'Daten aufbewahren',
|
||||
'customer_count' => 'Kundenzahl',
|
||||
'verify_customers' => 'Kunden überprüfen',
|
||||
@ -4488,17 +4491,17 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'client_currency' => 'Kundenwährung',
|
||||
'company_currency' => 'Firmenwährung',
|
||||
'custom_emails_disabled_help' => 'Um Spam zu verhindern braucht es ein Upgrade zu einem bezahlten Account um das E-Mail anzupassen.',
|
||||
'upgrade_to_add_company' => 'Upgrade deinen Tarif um weitere Firmen hinzuzufügen',
|
||||
'upgrade_to_add_company' => 'Wechseln Sie Ihren Tarif, um weitere Firmen hinzufügen zu können',
|
||||
'file_saved_in_downloads_folder' => 'Die Datei wurde im Downloads-Ordner gespeichert',
|
||||
'small' => 'Klein',
|
||||
'quotes_backup_subject' => 'Deine Angebote stehen zum Download bereit',
|
||||
'quotes_backup_subject' => 'Ihre Angebote stehen zum Download bereit',
|
||||
'credits_backup_subject' => 'Die Gutschriften stehen zum Download bereit',
|
||||
'document_download_subject' => 'Deine Dokumente stehen zum Download bereit',
|
||||
'document_download_subject' => 'Ihre Dokumente stehen zum Download bereit',
|
||||
'reminder_message' => 'Mahnung für Rechnung :number über :balance',
|
||||
'gmail_credentials_invalid_subject' => 'Senden mit ungültigen GMail-Anmeldedaten',
|
||||
'gmail_credentials_invalid_body' => 'Ihre GMail-Anmeldedaten sind nicht korrekt. Bitte melden Sie sich im Administratorportal an und navigieren Sie zu Einstellungen > Benutzerdetails und trennen Sie Ihr GMail-Konto und verbinden Sie es erneut. Wir werden Ihnen diese Benachrichtigung täglich senden, bis das Problem behoben ist',
|
||||
'total_columns' => 'Felder insgesamt',
|
||||
'view_task' => 'Aufgabe anzeugen',
|
||||
'view_task' => 'Aufgabe anzeigen',
|
||||
'cancel_invoice' => 'Stornieren',
|
||||
'changed_status' => 'Erfolgreich Aufgabenstatus geändert',
|
||||
'change_status' => 'Status ändern',
|
||||
@ -4511,7 +4514,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'enable_pdf_markdown' => 'Markdown in PDFs verwenden',
|
||||
'json_help' => 'Achtung: JSON-Dateien, die mit v4 der App erstellt wurden, werden nicht unterstützt',
|
||||
'release_notes' => 'Versionshinweise',
|
||||
'upgrade_to_view_reports' => 'Upgrade deinen Tarif um Berichte anzusehen',
|
||||
'upgrade_to_view_reports' => 'Wechseln Sie Ihren Tarif, um Berichte ansehen zu können',
|
||||
'started_tasks' => ':value Aufgaben erfolgreich gestartet',
|
||||
'stopped_tasks' => ':value Aufgaben erfolgreich angehalten',
|
||||
'approved_quote' => 'Angebot erfolgreich angenommen',
|
||||
@ -4656,8 +4659,8 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'search_purchase_order' => 'Bestellung suchen',
|
||||
'search_purchase_orders' => 'Bestellungen suchen',
|
||||
'login_url' => 'Login-URL',
|
||||
'enable_applying_payments' => 'Aktivieren Sie die Anwendung von Zahlungen',
|
||||
'enable_applying_payments_help' => 'Unterstützung bei der separaten Erstellung und Anwendung von Zahlungen',
|
||||
'enable_applying_payments' => 'Manuelle Überbezahlungen',
|
||||
'enable_applying_payments_help' => 'Erlaubt das manuellen Hinzufügen eines Betrags, der über dem Betrag zur Zahlung liegt',
|
||||
'stock_quantity' => 'Lagerbestand',
|
||||
'notification_threshold' => 'Mindesbestandsmeldung',
|
||||
'track_inventory' => 'Inventar verwalten',
|
||||
@ -4714,7 +4717,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'enter_phone_number' => 'Bitte geben Sie eine Telefonnummer an',
|
||||
'invalid_phone_number' => 'Ungültige Telefonnummer',
|
||||
'verify_phone_number' => 'Telefonnummer verifizieren',
|
||||
'verify_phone_number_help' => 'Bitte verifiziere deine Telefonnummer, um E-Mails versenden zu können.',
|
||||
'verify_phone_number_help' => 'Bitte verifizieren Sie Ihre Telefonnummer, um E-Mails versenden zu können.',
|
||||
'merged_clients' => 'Erfolgreich Kunden zusammengefasst',
|
||||
'merge_into' => 'Zusammenführen in',
|
||||
'php81_required' => 'Hinweis: v5.5 benötigt PHP 8.1',
|
||||
@ -4952,7 +4955,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'sync_from' => 'Synchronisieren von',
|
||||
'gateway_payment_text' => 'Rechnungen: :invoices über :amount für Kunde :client',
|
||||
'gateway_payment_text_no_invoice' => 'Zahlung ohne Rechnung für Kunde :client über :amount',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'click_to_variables' => 'Hier klicken, um alle Variablen zu sehen.',
|
||||
'ship_to' => 'Liefern an',
|
||||
'stripe_direct_debit_details' => 'Bitte überweisen Sie den Betrag an obenstehende Bankverbindung',
|
||||
'branch_name' => 'Zweigstelle',
|
||||
@ -5076,7 +5079,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'e_invoice' => 'E-Rechnung',
|
||||
'light_dark_mode' => 'Tag-/Nachtmodus',
|
||||
'activities' => 'Aktivitäten',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'recent_transactions' => "Hier sind die aktuellsten Transaktionen Ihrer Firma:",
|
||||
'country_Palestine' => "Palestinensa",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Aufgaben',
|
||||
@ -5087,7 +5090,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'enable_auto_bill' => 'Automatische Bezahlung aktivieren',
|
||||
'email_count_invoices' => ':count Rechnungen versenden',
|
||||
'invoice_task_item_description' => 'Rechnungspositionsbeschreibung',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'invoice_task_item_description_help' => 'Element-Beschreibung zu den Rechnungs-Positionen hinzufügen',
|
||||
'next_send_time' => 'Nächster Versandzeitpunkt',
|
||||
'uploaded_certificate' => 'Das Zertifikat wurde erfolgreich hochgeladen',
|
||||
'certificate_set' => 'Zertifikat hochgeladen',
|
||||
@ -5097,8 +5100,8 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'upload_certificate' => 'Zertifikat hochladen',
|
||||
'certificate_passphrase' => 'Zertifikat Passwort',
|
||||
'valid_vat_number' => 'Gültige USt-ID',
|
||||
'react_notification_link' => 'React Notification Links',
|
||||
'react_notification_link_help' => 'Admin emails will contain links to the react application',
|
||||
'react_notification_link' => 'React-Benachrichtigungslinks',
|
||||
'react_notification_link_help' => 'Admin-E-Mails werden Links zur React-Applikation beinhalten',
|
||||
'show_task_billable' => 'Abrechenbare Aufgaben anzeigen',
|
||||
'credit_item' => 'Gutschriftsposition',
|
||||
'drop_file_here' => 'Datei hier hineinziehen',
|
||||
@ -5106,38 +5109,38 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'camera' => 'Kamera',
|
||||
'gallery' => 'Gallerie',
|
||||
'project_location' => 'Projektstandort',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
'add_gateway_help_message' => 'Payment-Gateway hinzufügen (z. B. Stripe, WePay oder PayPal), um Online-Zahlungen anbieten zu können',
|
||||
'lang_Hungarian' => 'Ungarisch',
|
||||
'use_mobile_to_manage_plan' => 'Use your phone subscription settings to manage your plan',
|
||||
'item_tax3' => 'Item Tax3',
|
||||
'item_tax_rate1' => 'Item Tax Rate 1',
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'use_mobile_to_manage_plan' => 'Verwenden der Telefon-Abonnementeinstellungen, um Ihren Tarif zu verwalten',
|
||||
'item_tax3' => 'Positions-Steuer 3',
|
||||
'item_tax_rate1' => 'Positions-Steuersatz 1',
|
||||
'item_tax_rate2' => 'Positions-Steuersatz 2',
|
||||
'item_tax_rate3' => 'Positions-Steuersatz 3',
|
||||
'buy_price' => 'Einkaufspreis',
|
||||
'country_Macedonia' => 'Mazedonien',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'admin_initiated_payments' => 'Administrator-initiierte Zahlungen',
|
||||
'admin_initiated_payments_help' => 'Aktivieren von Zahlungen ohne Rechnung im Admin-Portal',
|
||||
'paid_date' => 'Zahlungsdatum',
|
||||
'downloaded_entities' => 'Die PDFs werden per E-Mail versendet',
|
||||
'lang_French - Swiss' => 'Französisch - Schweiz',
|
||||
'currency_swazi_lilangeni' => 'Lilangeni',
|
||||
'income' => 'Income',
|
||||
'income' => 'Einnahmen',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Lieferanten-Telefonnummer',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'mybank' => 'MeineBank',
|
||||
'paypal_paylater' => 'In vier Schritten bezahlen',
|
||||
'paid_date' => 'Zahlungsdatum',
|
||||
'district' => 'Bezirk',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'county' => 'Landkreis',
|
||||
'tax_details' => 'Steuerdetails',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_online' => ':contact hat die Zahlung :payment für die Rechnung :invoice des Kunden :client eingegeben',
|
||||
'activity_10_manual' => ':user hat die Zahlung :payment für die Rechnung :invoice des Kunden :client eingegeben',
|
||||
'default_payment_type' => 'Standard Zahlungsart',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'number_precision' => 'Genauigkeit der Nummern',
|
||||
'number_precision_help' => 'Steuert die Anzahl Dezimalstellen in der Schnittstelle',
|
||||
'is_tax_exempt' => 'Steuerbefreit',
|
||||
'drop_files_here' => 'Datei hier hineinziehen',
|
||||
'upload_files' => 'Dateien hochladen',
|
||||
'download_e_invoice' => 'E-Rechnung herunterladen',
|
||||
@ -5149,28 +5152,47 @@ Leistungsempfängers',
|
||||
'currency_nicaraguan_cordoba' => 'Córdoba Oro',
|
||||
'public' => 'Öffentlich',
|
||||
'private' => 'Privat',
|
||||
'image' => 'Image',
|
||||
'image' => 'Bild',
|
||||
'other' => 'Andere',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
'show_document_preview' => 'Show Document Preview',
|
||||
'cash_accounting' => 'Cash accounting',
|
||||
'click_or_drop_files_here' => 'Click or drop files here',
|
||||
'set_public' => 'Set public',
|
||||
'set_private' => 'Set private',
|
||||
'individual' => 'Individual',
|
||||
'linked_to' => 'Verknüpft mit',
|
||||
'file_saved_in_path' => 'Die Datei wurde unter :path gespeichert',
|
||||
'unlinked_transactions' => 'Verknüpfung zu :count Transaktionen wurde erfolgreich entfernt',
|
||||
'unlinked_transaction' => 'Verknüpfung zu einer Transaktion wurde erfolgreich entfernt',
|
||||
'view_dashboard_permission' => 'Nutzern erlauben, auf das Dashboard zuzugreifen. Die Berechtigungen der Nutzer limitieren die angezeigten Daten.',
|
||||
'marked_sent_credits' => 'Gutschrift erfolgreich als versendet markiert',
|
||||
'show_document_preview' => 'Dokumentenvorschau anzeigen',
|
||||
'cash_accounting' => 'Kassenbuchführung',
|
||||
'click_or_drop_files_here' => 'Hier klicken oder Dateien ablegen',
|
||||
'set_public' => 'Als "öffentlich" setzen',
|
||||
'set_private' => 'Als "privat" setzen',
|
||||
'individual' => 'Indiviuell',
|
||||
'business' => 'Business',
|
||||
'partnership' => 'partnership',
|
||||
'trust' => 'Trust',
|
||||
'partnership' => 'Partnerschaft',
|
||||
'trust' => 'Vertrauen',
|
||||
'charity' => 'Charity',
|
||||
'government' => 'Government',
|
||||
'in_stock_quantity' => 'Stock quantity',
|
||||
'vendor_contact' => 'Vendor Contact',
|
||||
|
||||
'government' => 'Regierung',
|
||||
'in_stock_quantity' => 'Lagerbestand',
|
||||
'vendor_contact' => 'Lieferantenkontakt',
|
||||
'expense_status_4' => 'Unbezahlt',
|
||||
'expense_status_5' => 'Bezahlt',
|
||||
'ziptax_help' => 'Note: this feature requires a Zip-Tax API key to lookup US sales tax by address',
|
||||
'cache_data' => 'Cache Data',
|
||||
'unknown' => 'Unbekannt',
|
||||
'webhook_failure' => 'Webhook-Fehler',
|
||||
'email_opened' => 'E-Mail geöffnet',
|
||||
'email_delivered' => 'E-Mail zugestellt',
|
||||
'log' => 'Log',
|
||||
'classification' => 'Klassifizierung',
|
||||
'stock_quantity_number' => 'Stock :quantity',
|
||||
'upcoming' => 'Bevorstehend',
|
||||
'client_contact' => 'Kundenkontakt',
|
||||
'uncategorized' => 'Unkategorisiert',
|
||||
'login_notification' => 'Login Notification',
|
||||
'login_notification_help' => 'Sends an email notifying that a login has taken place.',
|
||||
'payment_refund_receipt' => 'Payment Refund Receipt # :number',
|
||||
'payment_receipt' => 'Payment Receipt # :number',
|
||||
'load_template_description' => 'The template will be applied to following:',
|
||||
'run_template' => 'Run template',
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
@ -652,7 +652,7 @@ $LANG = array(
|
||||
'primary_user' => 'Usuario Principal',
|
||||
'help' => 'Ayuda',
|
||||
'playground' => 'playground',
|
||||
'support_forum' => 'Support Forums',
|
||||
'support_forum' => 'Foros de soporte',
|
||||
'invoice_due_date' => 'Fecha Límite de Pago',
|
||||
'quote_due_date' => 'Válido hasta',
|
||||
'valid_until' => 'Válido hasta',
|
||||
@ -1138,7 +1138,7 @@ $LANG = array(
|
||||
'plan_status' => 'Estado del Plan',
|
||||
|
||||
'plan_upgrade' => 'Mejorar',
|
||||
'plan_change' => 'Manage Plan',
|
||||
'plan_change' => 'Gestionar plan',
|
||||
'pending_change_to' => 'Cambios para',
|
||||
'plan_changes_to' => ':plan en :date',
|
||||
'plan_term_changes_to' => ':plan (:term) el :date',
|
||||
@ -2392,6 +2392,9 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
|
||||
'currency_libyan_dinar' => 'dinar libio',
|
||||
'currency_silver_troy_ounce' => 'Onza troy de plata',
|
||||
'currency_gold_troy_ounce' => 'Onza troy de oro',
|
||||
'currency_nicaraguan_córdoba' => 'Córdoba nicaragüense',
|
||||
'currency_malagasy_ariary' => 'Ariary malgache',
|
||||
"currency_tongan_pa_anga" => "Pa'anga tongano",
|
||||
|
||||
'review_app_help' => 'Esperamos que estés disfrutando con la app. <br/>Si consideras :link ¡te lo agraderemos enormemente!',
|
||||
'writing_a_review' => 'escribir una reseña',
|
||||
@ -3669,9 +3672,9 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
|
||||
'send_date' => 'Fecha de Envío',
|
||||
'auto_bill_on' => 'Facturación Automática Activa',
|
||||
'minimum_under_payment_amount' => 'Cantidad Mínima de Pago',
|
||||
'allow_over_payment' => 'Permitir Sobrepago',
|
||||
'allow_over_payment' => 'Permitir pago en exceso',
|
||||
'allow_over_payment_help' => 'Permitir pagos extra para aceptar propinas',
|
||||
'allow_under_payment' => 'Permitir Pago de Menos',
|
||||
'allow_under_payment' => 'Permitir pago insuficiente',
|
||||
'allow_under_payment_help' => 'Permitir pagar como mínimo la cantidad parcial/depósito',
|
||||
'test_mode' => 'Modo Test',
|
||||
'calculated_rate' => 'Tasa Calculada',
|
||||
@ -3968,8 +3971,8 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
|
||||
'account_balance' => 'Saldo de cuenta',
|
||||
'thanks' => 'Gracias',
|
||||
'minimum_required_payment' => 'El mínimo pago requerido es :amount',
|
||||
'under_payments_disabled' => 'La compañía no permite pagar por debajo.',
|
||||
'over_payments_disabled' => 'La compañía no permite sobrepagos.',
|
||||
'under_payments_disabled' => 'La empresa no admite pagos insuficientes.',
|
||||
'over_payments_disabled' => 'La empresa no admite pagos en exceso.',
|
||||
'saved_at' => 'Guardado el :time',
|
||||
'credit_payment' => 'Crédito aplicado a la factura :invoice_number',
|
||||
'credit_subject' => 'Nuevo crédito :number de :account',
|
||||
@ -4315,7 +4318,7 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
|
||||
'include_drafts' => 'Incluir borradores',
|
||||
'include_drafts_help' => 'Incluir borradores de registros en informes',
|
||||
'is_invoiced' => 'Es facturado',
|
||||
'change_plan' => 'Manage Plan',
|
||||
'change_plan' => 'Gestionar plan',
|
||||
'persist_data' => 'Persistir datos',
|
||||
'customer_count' => 'Número de clientes',
|
||||
'verify_customers' => 'Verificar clientes',
|
||||
@ -4644,8 +4647,8 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
|
||||
'search_purchase_order' => 'Buscar orden de compra',
|
||||
'search_purchase_orders' => 'Buscar órdenes de compra',
|
||||
'login_url' => 'URL de acceso',
|
||||
'enable_applying_payments' => 'Habilitar la aplicación de pagos',
|
||||
'enable_applying_payments_help' => 'Admite la creación y aplicación de pagos por separado',
|
||||
'enable_applying_payments' => 'Sobrepagos manuales',
|
||||
'enable_applying_payments_help' => 'Admite agregar un monto de sobrepago manualmente en un pago',
|
||||
'stock_quantity' => 'Cantidad de stock',
|
||||
'notification_threshold' => 'Umbral de notificación',
|
||||
'track_inventory' => 'Seguimiento de inventario',
|
||||
@ -5144,20 +5147,39 @@ De lo contrario, este campo deberá dejarse en blanco.',
|
||||
'unlinked_transaction' => 'Transacción desvinculada exitosamente',
|
||||
'view_dashboard_permission' => 'Permitir que el usuario acceda al panel, los datos están limitados a los permisos disponibles',
|
||||
'marked_sent_credits' => 'Créditos enviados, marcados con éxito',
|
||||
'show_document_preview' => 'Show Document Preview',
|
||||
'cash_accounting' => 'Cash accounting',
|
||||
'click_or_drop_files_here' => 'Click or drop files here',
|
||||
'set_public' => 'Set public',
|
||||
'set_private' => 'Set private',
|
||||
'show_document_preview' => 'Mostrar vista previa del documento',
|
||||
'cash_accounting' => 'Contabilidad de caja',
|
||||
'click_or_drop_files_here' => 'Haga clic o suelte archivos aquí',
|
||||
'set_public' => 'Establecer público',
|
||||
'set_private' => 'Establecer privado',
|
||||
'individual' => 'Individual',
|
||||
'business' => 'Business',
|
||||
'partnership' => 'partnership',
|
||||
'trust' => 'Trust',
|
||||
'charity' => 'Charity',
|
||||
'government' => 'Government',
|
||||
'in_stock_quantity' => 'Stock quantity',
|
||||
'vendor_contact' => 'Vendor Contact',
|
||||
|
||||
'business' => 'Negocio',
|
||||
'partnership' => 'asociación',
|
||||
'trust' => 'Confianza',
|
||||
'charity' => 'Caridad',
|
||||
'government' => 'Gobierno',
|
||||
'in_stock_quantity' => 'Cantidad de stock',
|
||||
'vendor_contact' => 'Contacto del proveedor',
|
||||
'expense_status_4' => 'No pagado',
|
||||
'expense_status_5' => 'Pagado',
|
||||
'ziptax_help' => 'Nota: esta función requiere una clave API Zip-Tax para buscar impuestos sobre las ventas de EE. UU. por dirección',
|
||||
'cache_data' => 'Datos de caché',
|
||||
'unknown' => 'Desconocido',
|
||||
'webhook_failure' => 'Fallo del webhook',
|
||||
'email_opened' => 'Email abierto',
|
||||
'email_delivered' => 'Email entregado',
|
||||
'log' => 'Registro',
|
||||
'classification' => 'Clasificación',
|
||||
'stock_quantity_number' => 'Stock :quantity',
|
||||
'upcoming' => 'Próximo',
|
||||
'client_contact' => 'Contacto del cliente',
|
||||
'uncategorized' => 'Sin categoría',
|
||||
'login_notification' => 'Notificación de inicio de sesión',
|
||||
'login_notification_help' => 'Envía un correo electrónico notificando que se ha realizado un inicio de sesión.',
|
||||
'payment_refund_receipt' => 'Recibo de reembolso de pago Nº :number',
|
||||
'payment_receipt' => 'Recibo de pago Nº :number',
|
||||
'load_template_description' => 'La plantilla se aplicará a lo siguiente:',
|
||||
'run_template' => 'Ejecutar plantilla',
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
@ -651,8 +651,6 @@ $LANG = array(
|
||||
'created_by_invoice' => 'Créée par :invoice',
|
||||
'primary_user' => 'Utilisateur principal',
|
||||
'help' => 'Aide',
|
||||
'customize_help' => '<p>Nous utilisons :pdfmake_link pour définir la présentation graphique des factures de manière déclarative. Pdfmake playground_link fournit une excellente façon de voir la librairie en action.</p>
|
||||
<p>Si vous avez besoin d\'aide à ce sujet, vous pouvez publier une question sur notre :forum_link avec la présentation graphique que vous utilisez.</p>',
|
||||
'playground' => 'environnement',
|
||||
'support_forum' => 'Forums de support',
|
||||
'invoice_due_date' => 'Échéance',
|
||||
@ -1813,7 +1811,6 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'bot_emailed_notify_paid' => 'Recevez un courriel lorsqu\'elle sera payée.',
|
||||
'add_product_to_invoice' => 'Ajouter 1 :product',
|
||||
'not_authorized' => 'Vous n\'êtes pas autorisé',
|
||||
'bot_get_email' => 'Bonjour! (wave)<br/>Thanks for trying the Invoice Ninja Bot.<br/>Vous devez vous créer un compte gratuit pour utiliser ce bot.<br/>Veuillez envoyer votre adresse courriel associée à votre compte pour démarrer.',
|
||||
'bot_get_code' => 'Merci! Je vous ai envoyé un courriel avec votre code de sécurité.',
|
||||
'bot_welcome' => 'Ça y est, votre compte est maintenant vérifié.>br/>',
|
||||
'email_not_found' => 'Je n\'ai pas pu trouver un compte disponible pour :email',
|
||||
@ -1821,7 +1818,6 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'security_code_email_subject' => 'Code de sécurité pour le Bot de Invoice Ninja',
|
||||
'security_code_email_line1' => 'Ceci est votre code de sécurité pour le Bot de Invoice Ninja.',
|
||||
'security_code_email_line2' => 'Note: il expirera dans 10 minutes.',
|
||||
'bot_help_message' => 'Je supporte actuellement:<br/>• Créer\mettre à jour\envoyer une facture<br/>• Lister les produits<br/>Par exemple:<br/><i>Facturer 2 billets à Simon, définir la date d\'échéance au prochain jeudi et le rabais à 10 %</i>',
|
||||
'list_products' => 'Liste des produits',
|
||||
|
||||
'include_item_taxes_inline' => 'Inclure les<b>taxes par ligne dans le total des lignes</b>',
|
||||
@ -1834,7 +1830,6 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'update_invoiceninja_warning' => 'Invoice Ninja crée une sauvegarde de votre base de données et de vos fichiers avant la mise à jour.',
|
||||
'update_invoiceninja_available' => 'Une nouvelle version de Invoice Ninja est disponible.',
|
||||
'update_invoiceninja_unavailable' => 'Aucune mise à jour de Invoice Ninja disponible.',
|
||||
'update_invoiceninja_instructions' => 'Veuillez installer la nouvelle version <strong>:version</strong> en cliquant sur le bouton <em>Mettre à jour</em> ci-dessous. Ensuite, vous serez redirigé vers le tableau de bord.',
|
||||
'update_invoiceninja_update_start' => 'Mettre à jour',
|
||||
'update_invoiceninja_download_start' => 'Télécharger :version',
|
||||
'create_new' => 'Créer',
|
||||
@ -2399,6 +2394,9 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'currency_libyan_dinar' => 'Dinar libyen',
|
||||
'currency_silver_troy_ounce' => 'Once troy d\'argent',
|
||||
'currency_gold_troy_ounce' => 'Once troy d\'or',
|
||||
'currency_nicaraguan_córdoba' => 'Cordoba nicaraguayen',
|
||||
'currency_malagasy_ariary' => 'Ariary malgache',
|
||||
"currency_tongan_pa_anga" => "Pa'anga tongien",
|
||||
|
||||
'review_app_help' => 'Nous espérons que votre utilisation de cette application vous est agréable.<br/>Un commentaire de votre part serait grandement apprécié!',
|
||||
'writing_a_review' => 'rédiger un commentaire',
|
||||
@ -3676,9 +3674,9 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'send_date' => 'Date d\'envoi',
|
||||
'auto_bill_on' => 'Facturer automatiquement le',
|
||||
'minimum_under_payment_amount' => 'Montant minimum de sous-paiement',
|
||||
'allow_over_payment' => 'Accepter Sur-paiement',
|
||||
'allow_over_payment' => 'Autoriser le surpaiement',
|
||||
'allow_over_payment_help' => 'Accepter paiement supplémentaire pour pourboire',
|
||||
'allow_under_payment' => 'Accepter Sous-paiement',
|
||||
'allow_under_payment' => 'Autoriser le souspaiement',
|
||||
'allow_under_payment_help' => 'Accepter paiement au minimum le montant partiel/dépôt',
|
||||
'test_mode' => 'Mode test',
|
||||
'calculated_rate' => 'Taux calculé',
|
||||
@ -3975,8 +3973,8 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'account_balance' => 'Solde de compte',
|
||||
'thanks' => 'Merci',
|
||||
'minimum_required_payment' => 'Le paiement minimum requis est :amount',
|
||||
'under_payments_disabled' => 'L\'entreprise ne tolère pas le sous-paiement.',
|
||||
'over_payments_disabled' => 'L\'entreprise ne tolère pas le sur-paiement.',
|
||||
'under_payments_disabled' => 'L\'entreprise d\'autorise pas les surpaiements.',
|
||||
'over_payments_disabled' => 'L\'entreprise d\'autorise pas les souspaiements.',
|
||||
'saved_at' => 'Enregistré à :time',
|
||||
'credit_payment' => 'Le crédit a été appliqué à la facture :invoice_number',
|
||||
'credit_subject' => 'Nouveau crédit :credit de :account',
|
||||
@ -4651,8 +4649,8 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'search_purchase_order' => 'Rechercher un bon de commande',
|
||||
'search_purchase_orders' => 'Rechercher des bons de commande',
|
||||
'login_url' => 'URL de connexion',
|
||||
'enable_applying_payments' => 'Activer les paiements applicables',
|
||||
'enable_applying_payments_help' => 'Activer la création et l\'application de paiement séparément',
|
||||
'enable_applying_payments' => 'Surpaiements manuels',
|
||||
'enable_applying_payments_help' => 'Prise en charge de l\'ajout manuel d\'un montant de surpaiement sur un paiement',
|
||||
'stock_quantity' => 'Quantité en stock',
|
||||
'notification_threshold' => 'Seuil de notification',
|
||||
'track_inventory' => 'Gérer l\'inventaire',
|
||||
@ -5153,6 +5151,36 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'show_document_preview' => 'Afficher la visualisation de document',
|
||||
'cash_accounting' => 'Comptabilité de caisse',
|
||||
'click_or_drop_files_here' => 'Cliquez ou déposez les fichiers ici',
|
||||
'set_public' => 'Public',
|
||||
'set_private' => 'Privé',
|
||||
'individual' => 'Individuel',
|
||||
'business' => 'Entreprise',
|
||||
'partnership' => 'partenaire',
|
||||
'trust' => 'Fiducie',
|
||||
'charity' => 'Organisation caritative',
|
||||
'government' => 'Gouvernement',
|
||||
'in_stock_quantity' => 'Quantité en stock',
|
||||
'vendor_contact' => 'Contact du fournisseur',
|
||||
'expense_status_4' => 'Impayé',
|
||||
'expense_status_5' => 'Payé',
|
||||
'ziptax_help' => 'Note: Cette fonctionnalité requiert une clé API Zip-Tax pour obtenir les taux de taxes de vente par adresse pour les États-Unis',
|
||||
'cache_data' => 'Données en cache',
|
||||
'unknown' => 'Inconnu',
|
||||
'webhook_failure' => 'Échec du webhook',
|
||||
'email_opened' => 'Courriel ouvert',
|
||||
'email_delivered' => 'Courriel livré',
|
||||
'log' => 'Journal',
|
||||
'classification' => 'Classification',
|
||||
'stock_quantity_number' => 'Stock :quantity',
|
||||
'upcoming' => 'À venir',
|
||||
'client_contact' => 'Contact client',
|
||||
'uncategorized' => 'Non catégorisé',
|
||||
'login_notification' => 'Notification de connexion',
|
||||
'login_notification_help' => 'Envoie un message par courriel lorsqu\'une connexion a été réalisée',
|
||||
'payment_refund_receipt' => 'Reçu de remboursement de paiement #',
|
||||
'payment_receipt' => 'Reçu de paiement #',
|
||||
'load_template_description' => 'Le modèle s\'appliquera à:',
|
||||
'run_template' => 'Exécuter le modèle',
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
@ -68,7 +68,7 @@
|
||||
</div>
|
||||
|
||||
<div id="completed" class="mb-4">
|
||||
<a class="button button-primary bg-blue-600 my-4" href="{{ config('ninja.app_url') }}">Return to admin portal.</a>
|
||||
<a class="button button-primary bg-blue-600 my-4" href="{{ $redirect_url }}">Return to admin portal.</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -11,11 +11,13 @@
|
||||
|
||||
namespace Tests\Unit;
|
||||
|
||||
use Tests\TestCase;
|
||||
use Tests\MockAccountData;
|
||||
use App\DataMapper\InvoiceItem;
|
||||
use App\Factory\InvoiceFactory;
|
||||
use App\Factory\InvoiceItemFactory;
|
||||
use App\Helpers\Invoice\InvoiceItemSum;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Tests\MockAccountData;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* @test
|
||||
@ -33,6 +35,272 @@ class InvoiceItemTest extends TestCase
|
||||
$this->makeTestData();
|
||||
}
|
||||
|
||||
|
||||
public function testDiscountsWithInclusiveTaxes()
|
||||
{
|
||||
$invoice = InvoiceFactory::create($this->company->id, $this->user->id);
|
||||
$invoice->client_id = $this->client->id;
|
||||
$invoice->uses_inclusive_taxes = true;
|
||||
$invoice->is_amount_discount =true;
|
||||
$invoice->discount = 10;
|
||||
|
||||
$line_items = [];
|
||||
|
||||
$line_item = new InvoiceItem;
|
||||
$line_item->quantity = 1;
|
||||
$line_item->cost = 100;
|
||||
$line_item->tax_rate1 = 10;
|
||||
$line_item->tax_name1 = 'GST';
|
||||
$line_item->product_key = 'Test';
|
||||
$line_item->notes = 'Test';
|
||||
$line_items[] = $line_item;
|
||||
|
||||
$invoice->line_items = $line_items;
|
||||
$invoice->save();
|
||||
|
||||
$invoice = $invoice->calc()->getInvoice();
|
||||
|
||||
$this->assertEquals(90, $invoice->amount);
|
||||
$this->assertEquals(8.18, $invoice->total_taxes);
|
||||
}
|
||||
|
||||
|
||||
public function testDiscountsWithInclusiveTaxesNegativeInvoice()
|
||||
{
|
||||
$invoice = InvoiceFactory::create($this->company->id, $this->user->id);
|
||||
$invoice->client_id = $this->client->id;
|
||||
$invoice->uses_inclusive_taxes = true;
|
||||
$invoice->is_amount_discount =true;
|
||||
$invoice->discount = -10;
|
||||
|
||||
$line_items = [];
|
||||
|
||||
$line_item = new InvoiceItem;
|
||||
$line_item->quantity = -1;
|
||||
$line_item->cost = 100;
|
||||
$line_item->tax_rate1 = 10;
|
||||
$line_item->tax_name1 = 'GST';
|
||||
$line_item->product_key = 'Test';
|
||||
$line_item->notes = 'Test';
|
||||
$line_items[] = $line_item;
|
||||
|
||||
$invoice->line_items = $line_items;
|
||||
$invoice->save();
|
||||
|
||||
$invoice = $invoice->calc()->getInvoice();
|
||||
|
||||
$this->assertEquals(-90, $invoice->amount);
|
||||
$this->assertEquals(-8.18, $invoice->total_taxes);
|
||||
}
|
||||
|
||||
public function testDicountsWithTaxes()
|
||||
{
|
||||
$invoice = InvoiceFactory::create($this->company->id, $this->user->id);
|
||||
$invoice->client_id = $this->client->id;
|
||||
$invoice->uses_inclusive_taxes = false;
|
||||
$invoice->is_amount_discount =true;
|
||||
$invoice->discount = 10;
|
||||
|
||||
$line_items = [];
|
||||
|
||||
$line_item = new InvoiceItem;
|
||||
$line_item->quantity = 1;
|
||||
$line_item->cost = 100;
|
||||
$line_item->tax_rate1 = 10;
|
||||
$line_item->tax_name1 = 'GST';
|
||||
$line_item->product_key = 'Test';
|
||||
$line_item->notes = 'Test';
|
||||
$line_items[] = $line_item;
|
||||
|
||||
$invoice->line_items = $line_items;
|
||||
$invoice->save();
|
||||
|
||||
$invoice = $invoice->calc()->getInvoice();
|
||||
|
||||
$this->assertEquals(99, $invoice->amount);
|
||||
$this->assertEquals(9, $invoice->total_taxes);
|
||||
}
|
||||
|
||||
|
||||
public function testDicountsWithTaxesNegativeInvoice()
|
||||
{
|
||||
$invoice = InvoiceFactory::create($this->company->id, $this->user->id);
|
||||
$invoice->client_id = $this->client->id;
|
||||
$invoice->uses_inclusive_taxes = false;
|
||||
$invoice->is_amount_discount =true;
|
||||
$invoice->discount = -10;
|
||||
|
||||
$line_items = [];
|
||||
|
||||
$line_item = new InvoiceItem;
|
||||
$line_item->quantity = -1;
|
||||
$line_item->cost = 100;
|
||||
$line_item->tax_rate1 = 10;
|
||||
$line_item->tax_name1 = 'GST';
|
||||
$line_item->product_key = 'Test';
|
||||
$line_item->notes = 'Test';
|
||||
$line_items[] = $line_item;
|
||||
|
||||
$invoice->line_items = $line_items;
|
||||
$invoice->save();
|
||||
|
||||
$invoice = $invoice->calc()->getInvoice();
|
||||
|
||||
$this->assertEquals(-99, $invoice->amount);
|
||||
$this->assertEquals(-9, $invoice->total_taxes);
|
||||
}
|
||||
|
||||
public function testDicountsWithTaxesPercentage()
|
||||
{
|
||||
$invoice = InvoiceFactory::create($this->company->id, $this->user->id);
|
||||
$invoice->client_id = $this->client->id;
|
||||
$invoice->uses_inclusive_taxes = false;
|
||||
$invoice->is_amount_discount =false;
|
||||
$invoice->discount = 10;
|
||||
|
||||
$line_items = [];
|
||||
|
||||
$line_item = new InvoiceItem;
|
||||
$line_item->quantity = 1;
|
||||
$line_item->cost = 100;
|
||||
$line_item->tax_rate1 = 10;
|
||||
$line_item->tax_name1 = 'GST';
|
||||
$line_item->product_key = 'Test';
|
||||
$line_item->notes = 'Test';
|
||||
$line_items[] = $line_item;
|
||||
|
||||
$invoice->line_items = $line_items;
|
||||
$invoice->save();
|
||||
|
||||
$invoice = $invoice->calc()->getInvoice();
|
||||
|
||||
$this->assertEquals(99, $invoice->amount);
|
||||
$this->assertEquals(9, $invoice->total_taxes);
|
||||
}
|
||||
|
||||
public function testDicountsWithTaxesPercentageOnLine()
|
||||
{
|
||||
$invoice = InvoiceFactory::create($this->company->id, $this->user->id);
|
||||
$invoice->client_id = $this->client->id;
|
||||
$invoice->uses_inclusive_taxes = true;
|
||||
$invoice->is_amount_discount =false;
|
||||
$invoice->discount = 10;
|
||||
|
||||
$line_items = [];
|
||||
|
||||
$line_item = new InvoiceItem;
|
||||
$line_item->quantity = 1;
|
||||
$line_item->cost = 100;
|
||||
$line_item->is_amount_discount = false;
|
||||
$line_item->discount = 10;
|
||||
$line_item->tax_rate1 = 10;
|
||||
$line_item->tax_name1 = 'GST';
|
||||
$line_item->product_key = 'Test';
|
||||
$line_item->notes = 'Test';
|
||||
$line_items[] = $line_item;
|
||||
|
||||
$invoice->line_items = $line_items;
|
||||
$invoice->save();
|
||||
|
||||
$invoice = $invoice->calc()->getInvoice();
|
||||
|
||||
$this->assertEquals(81, $invoice->amount);
|
||||
$this->assertEquals(7.36, $invoice->total_taxes);
|
||||
}
|
||||
|
||||
public function testDicountsWithExclusiveTaxesPercentageOnLine()
|
||||
{
|
||||
$invoice = InvoiceFactory::create($this->company->id, $this->user->id);
|
||||
$invoice->client_id = $this->client->id;
|
||||
$invoice->uses_inclusive_taxes = false;
|
||||
$invoice->is_amount_discount =false;
|
||||
$invoice->discount = -10;
|
||||
|
||||
$line_items = [];
|
||||
|
||||
$line_item = new InvoiceItem;
|
||||
$line_item->quantity = -1;
|
||||
$line_item->cost = 100;
|
||||
$line_item->is_amount_discount = false;
|
||||
$line_item->discount = -10;
|
||||
$line_item->tax_rate1 = 10;
|
||||
$line_item->tax_name1 = 'GST';
|
||||
$line_item->product_key = 'Test';
|
||||
$line_item->notes = 'Test';
|
||||
$line_items[] = $line_item;
|
||||
|
||||
$invoice->line_items = $line_items;
|
||||
$invoice->save();
|
||||
|
||||
$invoice = $invoice->calc()->getInvoice();
|
||||
|
||||
$this->assertEquals(-133.1, $invoice->amount);
|
||||
$this->assertEquals(-12.1, $invoice->total_taxes);
|
||||
}
|
||||
|
||||
|
||||
public function testDicountsWithTaxesNegativeInvoicePercentage()
|
||||
{
|
||||
$invoice = InvoiceFactory::create($this->company->id, $this->user->id);
|
||||
$invoice->client_id = $this->client->id;
|
||||
$invoice->uses_inclusive_taxes = false;
|
||||
$invoice->is_amount_discount =false;
|
||||
$invoice->discount = -10;
|
||||
|
||||
$line_items = [];
|
||||
|
||||
$line_item = new InvoiceItem;
|
||||
$line_item->quantity = -1;
|
||||
$line_item->cost = 100;
|
||||
$line_item->tax_rate1 = 10;
|
||||
$line_item->tax_name1 = 'GST';
|
||||
$line_item->product_key = 'Test';
|
||||
$line_item->notes = 'Test';
|
||||
$line_items[] = $line_item;
|
||||
|
||||
$invoice->line_items = $line_items;
|
||||
$invoice->save();
|
||||
|
||||
$invoice = $invoice->calc()->getInvoice();
|
||||
|
||||
$this->assertEquals(-121, $invoice->amount);
|
||||
$this->assertEquals(-10, $invoice->discount);
|
||||
$this->assertEquals(-11, $invoice->total_taxes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testDicountPercentageWithTaxes()
|
||||
{
|
||||
$invoice = InvoiceFactory::create($this->company->id, $this->user->id);
|
||||
$invoice->client_id = $this->client->id;
|
||||
$invoice->uses_inclusive_taxes = false;
|
||||
$invoice->is_amount_discount =true;
|
||||
$invoice->discount = 10;
|
||||
|
||||
$line_items = [];
|
||||
|
||||
$line_item = new InvoiceItem;
|
||||
$line_item->quantity = 1;
|
||||
$line_item->cost = 100;
|
||||
$line_item->tax_rate1 = 10;
|
||||
$line_item->tax_name1 = 'GST';
|
||||
$line_item->product_key = 'Test';
|
||||
$line_item->notes = 'Test';
|
||||
$line_items[] = $line_item;
|
||||
|
||||
$invoice->line_items = $line_items;
|
||||
$invoice->save();
|
||||
|
||||
$invoice = $invoice->calc()->getInvoice();
|
||||
|
||||
$this->assertEquals(99, $invoice->amount);
|
||||
$this->assertEquals(9, $invoice->total_taxes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function testInvoiceItemTotalSimple()
|
||||
{
|
||||
$item = InvoiceItemFactory::create();
|
||||
|
@ -49,6 +49,8 @@ class InvoiceTest extends TestCase
|
||||
$this->invoice_calc = new InvoiceSum($this->invoice);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testMarkPaidWithPartial()
|
||||
{
|
||||
$item = InvoiceItemFactory::create();
|
||||
|
Loading…
Reference in New Issue
Block a user