Merge pull request #8736 from turbo124/v5-stable

update version
This commit is contained in:
David Bomba 2023-08-21 21:17:42 +10:00 committed by GitHub
commit 915a2737a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
113 changed files with 3438 additions and 800 deletions

View File

@ -1 +1 @@
5.6.31 5.7.0

View File

@ -122,7 +122,7 @@ class TypeCheck extends Command
$client->save(); $client->save();
}); });
Company::cursor()->each(function ($company) { Company::query()->cursor()->each(function ($company) {
$this->logMessage("Checking company {$company->id}"); $this->logMessage("Checking company {$company->id}");
$company->saveSettings($company->settings, $company); $company->saveSettings($company->settings, $company);
}); });

View File

@ -839,7 +839,7 @@ class BaseExport
foreach (array_merge($this->input['report_keys'], $this->forced_keys) as $value) { foreach (array_merge($this->input['report_keys'], $this->forced_keys) as $value) {
$key = array_search($value, $this->entity_keys); $key = array_search($value, $this->entity_keys);
nlog("{$key} => {$value}");
$prefix = ''; $prefix = '';
if(!$key) { if(!$key) {
@ -862,7 +862,6 @@ class BaseExport
$key = array_search($value, $this->payment_report_keys); $key = array_search($value, $this->payment_report_keys);
} }
if(!$key) { if(!$key) {
$prefix = ctrans('texts.quote')." "; $prefix = ctrans('texts.quote')." ";
$key = array_search($value, $this->quote_report_keys); $key = array_search($value, $this->quote_report_keys);
@ -914,7 +913,7 @@ class BaseExport
$key = str_replace('contact.', '', $key); $key = str_replace('contact.', '', $key);
$key = str_replace('payment.', '', $key); $key = str_replace('payment.', '', $key);
$key = str_replace('expense.', '', $key); $key = str_replace('expense.', '', $key);
// nlog($key);
if(in_array($key, ['quote1','quote2','quote3','quote4','credit1','credit2','credit3','credit4','purchase_order1','purchase_order2','purchase_order3','purchase_order4'])) if(in_array($key, ['quote1','quote2','quote3','quote4','credit1','credit2','credit3','credit4','purchase_order1','purchase_order2','purchase_order3','purchase_order4']))
{ {
$number = substr($key, -1); $number = substr($key, -1);

View File

@ -11,13 +11,15 @@
namespace App\Export\CSV; namespace App\Export\CSV;
use App\Libraries\MultiDB;
use App\Models\Company;
use App\Models\Credit;
use App\Transformers\CreditTransformer;
use App\Utils\Ninja; use App\Utils\Ninja;
use Illuminate\Support\Facades\App; use App\Utils\Number;
use App\Models\Credit;
use League\Csv\Writer; use League\Csv\Writer;
use App\Models\Company;
use App\Libraries\MultiDB;
use Illuminate\Support\Facades\App;
use App\Transformers\CreditTransformer;
use Illuminate\Contracts\Database\Eloquent\Builder;
class CreditExport extends BaseExport class CreditExport extends BaseExport
{ {
@ -32,11 +34,12 @@ class CreditExport extends BaseExport
'amount' => 'amount', 'amount' => 'amount',
'balance' => 'balance', 'balance' => 'balance',
'client' => 'client_id', 'client' => 'client_id',
'country' => 'country_id',
'custom_surcharge1' => 'custom_surcharge1', 'custom_surcharge1' => 'custom_surcharge1',
'custom_surcharge2' => 'custom_surcharge2', 'custom_surcharge2' => 'custom_surcharge2',
'custom_surcharge3' => 'custom_surcharge3', 'custom_surcharge3' => 'custom_surcharge3',
'custom_surcharge4' => 'custom_surcharge4', 'custom_surcharge4' => 'custom_surcharge4',
'country' => 'country_id', 'currency' => 'currency',
'custom_value1' => 'custom_value1', 'custom_value1' => 'custom_value1',
'custom_value2' => 'custom_value2', 'custom_value2' => 'custom_value2',
'custom_value3' => 'custom_value3', 'custom_value3' => 'custom_value3',
@ -63,7 +66,6 @@ class CreditExport extends BaseExport
'tax_rate3' => 'tax_rate3', 'tax_rate3' => 'tax_rate3',
'terms' => 'terms', 'terms' => 'terms',
'total_taxes' => 'total_taxes', 'total_taxes' => 'total_taxes',
'currency' => 'currency',
]; ];
private array $decorate_keys = [ private array $decorate_keys = [
@ -80,23 +82,67 @@ class CreditExport extends BaseExport
$this->credit_transformer = new CreditTransformer(); $this->credit_transformer = new CreditTransformer();
} }
public function run() public function returnJson()
{ {
$query = $this->init();
$header = $this->buildHeader();
$report = $query->cursor()
->map(function ($credit) {
$row = $this->buildRow($credit);
return $this->processMetaData($row, $credit);
})->toArray();
return array_merge([$header], $report);
}
private function processMetaData(array $row, Credit $credit): array
{
$clean_row = [];
foreach ($this->input['report_keys'] as $key => $value) {
$report_keys = explode(".", $value);
$column_key = str_replace("credit.", "", $value);
$column_key = array_search($column_key, $this->entity_keys);
$clean_row[$key]['entity'] = $report_keys[0];
$clean_row[$key]['id'] = $report_keys[1] ?? $report_keys[0];
$clean_row[$key]['hashed_id'] = $report_keys[0] == 'credit' ? null : $credit->{$report_keys[0]}->hashed_id ?? null;
$clean_row[$key]['value'] = $row[$column_key];
if(in_array($clean_row[$key]['id'], ['amount', 'balance', 'partial', 'refunded', 'applied','unit_cost','cost','price']))
$clean_row[$key]['display_value'] = Number::formatMoney($row[$column_key], $credit->client);
else
$clean_row[$key]['display_value'] = $row[$column_key];
}
return $clean_row;
}
private function init(): Builder
{
MultiDB::setDb($this->company->db); MultiDB::setDb($this->company->db);
App::forgetInstance('translator'); App::forgetInstance('translator');
App::setLocale($this->company->locale()); App::setLocale($this->company->locale());
$t = app('translator'); $t = app('translator');
$t->replace(Ninja::transformTranslations($this->company->settings)); $t->replace(Ninja::transformTranslations($this->company->settings));
//load the CSV document from a string
$this->csv = Writer::createFromString();
if (count($this->input['report_keys']) == 0) { if (count($this->input['report_keys']) == 0) {
$this->input['report_keys'] = array_values($this->entity_keys); $this->input['report_keys'] = array_values($this->entity_keys);
} // $this->input['report_keys'] = collect(array_values($this->entity_keys))->map(function ($value){
//insert the header // // if(in_array($value,['client_id','country_id']))
$this->csv->insertOne($this->buildHeader()); // // return $value;
// // else
// return 'credit.'.$value;
// })->toArray();
}
$query = Credit::query() $query = Credit::query()
->withTrashed() ->withTrashed()
@ -105,8 +151,22 @@ class CreditExport extends BaseExport
$query = $this->addDateRange($query); $query = $this->addDateRange($query);
return $query;
}
public function run(): string
{
$query = $this->init();
//load the CSV document from a string
$this->csv = Writer::createFromString();
//insert the header
$this->csv->insertOne($this->buildHeader());
// nlog($this->input['report_keys']);
$query->cursor() $query->cursor()
->each(function ($credit) { ->each(function ($credit) {
// nlog($this->buildRow($credit));
$this->csv->insertOne($this->buildRow($credit)); $this->csv->insertOne($this->buildRow($credit));
}); });

View File

@ -228,7 +228,7 @@ class ClientController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $client); $this->saveDocuments($request->file('documents'), $client, $request->input('is_public', true));
} }
return $this->itemResponse($client->fresh()); return $this->itemResponse($client->fresh());

View File

@ -30,7 +30,8 @@ class CreditController extends Controller
{ {
set_time_limit(0); set_time_limit(0);
$invitation = $credit->invitations()->where('client_contact_id', auth()->user()->id)->first(); // $invitation = $credit->invitations()->where('client_contact_id', auth()->user()->id)->first();
$invitation = $credit->invitations()->where('client_contact_id', auth()->guard('contact')->user()->id)->first();
$data = [ $data = [
'credit' => $credit, 'credit' => $credit,

View File

@ -53,7 +53,7 @@ class QuoteController extends Controller
{ {
/* If the quote is expired, convert the status here */ /* If the quote is expired, convert the status here */
$invitation = $quote->invitations()->where('client_contact_id', auth()->user()->id)->first(); $invitation = $quote->invitations()->where('client_contact_id', auth()->guard('contact')->user()->id)->first();
$data = [ $data = [
'quote' => $quote, 'quote' => $quote,

View File

@ -34,7 +34,7 @@ class UploadController extends Controller
/** @var \App\Models\ClientContact $client_contact **/ /** @var \App\Models\ClientContact $client_contact **/
$client_contact = auth()->user(); $client_contact = auth()->user();
$this->saveDocuments($request->getFile(), $client_contact->client, true); $this->saveDocuments($request->getFile(), $client_contact->client, $request->input('is_public', true));
return response([], 200); return response([], 200);
} }

View File

@ -424,7 +424,7 @@ class CompanyController extends BaseController
$company = $this->company_repo->save($request->all(), $company); $company = $this->company_repo->save($request->all(), $company);
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->input('documents'), $company, false); $this->saveDocuments($request->input('documents'), $company, $request->input('is_public', true));
} }
if($request->has('e_invoice_certificate') && !is_null($request->file("e_invoice_certificate"))){ if($request->has('e_invoice_certificate') && !is_null($request->file("e_invoice_certificate"))){
@ -616,7 +616,7 @@ class CompanyController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $company); $this->saveDocuments($request->file('documents'), $company, $request->input('is_public', true));
} }
return $this->itemResponse($company->fresh()); return $this->itemResponse($company->fresh());

View File

@ -776,7 +776,7 @@ class CreditController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $credit); $this->saveDocuments($request->file('documents'), $credit, $request->input('is_public', true));
} }
return $this->itemResponse($credit->fresh()); return $this->itemResponse($credit->fresh());

View File

@ -78,6 +78,8 @@ class EmailController extends BaseController
$entity_obj->service()->markSent()->save(); $entity_obj->service()->markSent()->save();
$mo->invitation_id = $invitation->id; $mo->invitation_id = $invitation->id;
$mo->client_id = $invitation->contact->client_id ?? null;
$mo->vendor_id = $invitation->contact->vendor_id ?? null;
Email::dispatch($mo, $invitation->company); Email::dispatch($mo, $invitation->company);
} }

View File

@ -564,7 +564,7 @@ class ExpenseController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $expense); $this->saveDocuments($request->file('documents'), $expense, $request->input('is_public', true));
} }
return $this->itemResponse($expense->fresh()); return $this->itemResponse($expense->fresh());

View File

@ -144,7 +144,7 @@ class GroupSettingController extends BaseController
$this->uploadLogo($request->file('company_logo'), $group_setting->company, $group_setting); $this->uploadLogo($request->file('company_logo'), $group_setting->company, $group_setting);
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->input('documents'), $group_setting, false); $this->saveDocuments($request->input('documents'), $group_setting, $request->input('is_public', true));
} }
return $this->itemResponse($group_setting); return $this->itemResponse($group_setting);
@ -217,7 +217,7 @@ class GroupSettingController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $group_setting); $this->saveDocuments($request->file('documents'), $group_setting, $request->input('is_public', true));
} }
return $this->itemResponse($group_setting->fresh()); return $this->itemResponse($group_setting->fresh());

View File

@ -977,7 +977,7 @@ class InvoiceController extends BaseController
} }
if ($request->has('file')) { if ($request->has('file')) {
$this->saveDocuments($request->file('documents'), $invoice, $request->input('is_public', true)); $this->saveDocuments($request->file('file'), $invoice, $request->input('is_public', true));
} }
return $this->itemResponse($invoice->fresh()); return $this->itemResponse($invoice->fresh());

View File

@ -749,7 +749,7 @@ class PaymentController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $payment); $this->saveDocuments($request->file('documents'), $payment, $request->input('is_public', true));
} }
return $this->itemResponse($payment->fresh()); return $this->itemResponse($payment->fresh());

View File

@ -541,7 +541,7 @@ class ProductController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $product); $this->saveDocuments($request->file('documents'), $product, $request->input('is_public', true));
} }
return $this->itemResponse($product->fresh()); return $this->itemResponse($product->fresh());

View File

@ -264,7 +264,7 @@ class ProjectController extends BaseController
$project->saveQuietly(); $project->saveQuietly();
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->input('documents'), $project); $this->saveDocuments($request->input('documents'), $project, $request->input('is_public', true));
} }
event('eloquent.updated: App\Models\Project', $project); event('eloquent.updated: App\Models\Project', $project);
@ -373,7 +373,7 @@ class ProjectController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->input('documents'), $project); $this->saveDocuments($request->input('documents'), $project, $request->input('is_public', true));
} }
event('eloquent.created: App\Models\Project', $project); event('eloquent.created: App\Models\Project', $project);
@ -565,7 +565,7 @@ class ProjectController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $project); $this->saveDocuments($request->file('documents'), $project, $request->input('is_public', true));
} }
return $this->itemResponse($project->fresh()); return $this->itemResponse($project->fresh());

View File

@ -751,7 +751,7 @@ class PurchaseOrderController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $purchase_order); $this->saveDocuments($request->file('documents'), $purchase_order, $request->input('is_public', true));
} }
return $this->itemResponse($purchase_order->fresh()); return $this->itemResponse($purchase_order->fresh());

View File

@ -905,7 +905,7 @@ class QuoteController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $quote); $this->saveDocuments($request->file('documents'), $quote, $request->input('is_public', true));
} }
return $this->itemResponse($quote->fresh()); return $this->itemResponse($quote->fresh());

View File

@ -609,7 +609,7 @@ class RecurringExpenseController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $recurring_expense); $this->saveDocuments($request->file('documents'), $recurring_expense, $request->input('is_public', true));
} }
return $this->itemResponse($recurring_expense->fresh()); return $this->itemResponse($recurring_expense->fresh());

View File

@ -550,7 +550,7 @@ class RecurringInvoiceController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $recurring_invoice); $this->saveDocuments($request->file('documents'), $recurring_invoice, $request->input('is_public', true));
} }
return $this->itemResponse($recurring_invoice->fresh()); return $this->itemResponse($recurring_invoice->fresh());

View File

@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports;
use App\Export\CSV\CreditExport; use App\Export\CSV\CreditExport;
use App\Http\Controllers\BaseController; use App\Http\Controllers\BaseController;
use App\Http\Requests\Report\GenericReportRequest; use App\Http\Requests\Report\GenericReportRequest;
use App\Jobs\Report\PreviewReport;
use App\Jobs\Report\SendToAdmin; use App\Jobs\Report\SendToAdmin;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Illuminate\Http\Response; use Illuminate\Http\Response;
@ -62,14 +63,26 @@ class CreditReportController extends BaseController
*/ */
public function __invoke(GenericReportRequest $request) public function __invoke(GenericReportRequest $request)
{ {
/** @var \App\Models\User $user */
$user = auth()->user();
if ($request->has('send_email') && $request->get('send_email')) { if ($request->has('send_email') && $request->get('send_email')) {
SendToAdmin::dispatch(auth()->user()->company(), $request->all(), CreditExport::class, $this->filename); SendToAdmin::dispatch($user->company(), $request->all(), CreditExport::class, $this->filename);
return response()->json(['message' => 'working...'], 200); return response()->json(['message' => 'working...'], 200);
} }
// expect a list of visible fields, or use the default // expect a list of visible fields, or use the default
$export = new CreditExport(auth()->user()->company(), $request->all()); if($request->has('output') && $request->input('output') == 'json') {
$hash = \Illuminate\Support\Str::uuid();
PreviewReport::dispatch($user->company(), $request->all(), CreditExport::class, $hash);
return response()->json(['message' => $hash], 200);
}
$export = new CreditExport($user->company(), $request->all());
$csv = $export->run(); $csv = $export->run();

View File

@ -0,0 +1,45 @@
<?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\Http\Controllers\Reports;
use App\Utils\Traits\MakesHash;
use Illuminate\Support\Facades\Cache;
use App\Http\Controllers\BaseController;
use App\Http\Requests\Report\ReportPreviewRequest;
class ReportPreviewController extends BaseController
{
use MakesHash;
public function __construct()
{
parent::__construct();
}
public function __invoke(ReportPreviewRequest $request, ?string $hash)
{
$report = Cache::get($hash);
if(!$report)
return response()->json(['message' => 'Still working.....'], 409);
if($report){
Cache::forget($hash);
return response()->json($report, 200);
}
}
}

View File

@ -53,7 +53,7 @@ class SelfUpdateController extends BaseController
nlog('Test filesystem is writable'); nlog('Test filesystem is writable');
// $this->testWritable(); $this->testWritable();
nlog('Clear cache directory'); nlog('Clear cache directory');
@ -61,12 +61,22 @@ class SelfUpdateController extends BaseController
nlog('copying release file'); nlog('copying release file');
if (copy($this->getDownloadUrl(), storage_path("app/{$this->filename}"))) { $file_headers = @get_headers($this->getDownloadUrl());
nlog('Copied file from URL');
} else { if (stripos($file_headers[0], "404 Not Found") >0 || (stripos($file_headers[0], "302 Found") > 0 && stripos($file_headers[7], "404 Not Found") > 0)) {
return response()->json(['message' => 'Download not yet available. Please try again shortly.'], 410); return response()->json(['message' => 'Download not yet available. Please try again shortly.'], 410);
} }
try {
if (copy($this->getDownloadUrl(), storage_path("app/{$this->filename}"))) {
nlog('Copied file from URL');
}
}
catch(\Exception $e) {
nlog($e->getMessage());
return response()->json(['message' => 'File exists on the server, however there was a problem downloading and copying to the local filesystem'], 500);
}
nlog('Finished copying'); nlog('Finished copying');
$file = Storage::disk('local')->path($this->filename); $file = Storage::disk('local')->path($this->filename);

View File

@ -125,11 +125,11 @@ class StripeConnectController extends BaseController
$company_gateway->save(); $company_gateway->save();
// StripeWebhook::dispatch($company->company_key, $company_gateway->id); // StripeWebhook::dispatch($company->company_key, $company_gateway->id);
if(isset($request->getTokenContent()['is_react']) && $request->getTokenContent()['is_react']) { // if(isset($request->getTokenContent()['is_react']) && $request->getTokenContent()['is_react']) {
$redirect_uri = 'https://app.invoicing.co/#/settings/online_payments'; $redirect_uri = 'https://app.invoicing.co/#/settings/online_payments';
} else { // } else {
$redirect_uri = 'https://invoicing.co/stripe/completed'; // $redirect_uri = 'https://invoicing.co/stripe/completed';
} // }
//response here //response here
return view('auth.connect.completed', ['url' => $redirect_uri]); return view('auth.connect.completed', ['url' => $redirect_uri]);

View File

@ -582,7 +582,7 @@ class TaskController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $task); $this->saveDocuments($request->file('documents'), $task, $request->input('is_public', true));
} }
return $this->itemResponse($task->fresh()); return $this->itemResponse($task->fresh());

View File

@ -568,7 +568,7 @@ class VendorController extends BaseController
} }
if ($request->has('documents')) { if ($request->has('documents')) {
$this->saveDocuments($request->file('documents'), $vendor); $this->saveDocuments($request->file('documents'), $vendor, $request->input('is_public', true));
} }
return $this->itemResponse($vendor->fresh()); return $this->itemResponse($vendor->fresh());

View File

@ -33,7 +33,7 @@ class UploadController extends Controller
*/ */
public function upload(StoreUploadRequest $request, PurchaseOrder $purchase_order) public function upload(StoreUploadRequest $request, PurchaseOrder $purchase_order)
{ {
$this->saveDocuments($request->getFile(), $purchase_order, true); $this->saveDocuments($request->getFile(), $purchase_order, $request->input('is_public', true));
return response([], 200); return response([], 200);
} }

View File

@ -50,7 +50,7 @@ class DocumentsTable extends Component
{ {
MultiDB::setDb($this->db); MultiDB::setDb($this->db);
$this->client = Client::withTrashed()->with('company')->find($this->client_id); $this->client = Client::query()->withTrashed()->with('company')->find($this->client_id);
$this->company = $this->client->company; $this->company = $this->client->company;
@ -118,12 +118,14 @@ class DocumentsTable extends Component
protected function documents() protected function documents()
{ {
return $this->client->documents(); return $this->client->documents()
->where('is_public', true);
} }
protected function credits() protected function credits()
{ {
return Document::query() return Document::query()
->where('is_public', true)
->whereHasMorph('documentable', [Credit::class], function ($query) { ->whereHasMorph('documentable', [Credit::class], function ($query) {
$query->where('client_id', $this->client->id); $query->where('client_id', $this->client->id);
}); });
@ -132,6 +134,7 @@ class DocumentsTable extends Component
protected function expenses() protected function expenses()
{ {
return Document::query() return Document::query()
->where('is_public', true)
->whereHasMorph('documentable', [Expense::class], function ($query) { ->whereHasMorph('documentable', [Expense::class], function ($query) {
$query->where('client_id', $this->client->id); $query->where('client_id', $this->client->id);
}); });
@ -140,6 +143,7 @@ class DocumentsTable extends Component
protected function invoices() protected function invoices()
{ {
return Document::query() return Document::query()
->where('is_public', true)
->whereHasMorph('documentable', [Invoice::class], function ($query) { ->whereHasMorph('documentable', [Invoice::class], function ($query) {
$query->where('client_id', $this->client->id); $query->where('client_id', $this->client->id);
}); });
@ -148,6 +152,7 @@ class DocumentsTable extends Component
protected function payments() protected function payments()
{ {
return Document::query() return Document::query()
->where('is_public', true)
->whereHasMorph('documentable', [Payment::class], function ($query) { ->whereHasMorph('documentable', [Payment::class], function ($query) {
$query->where('client_id', $this->client->id); $query->where('client_id', $this->client->id);
}); });
@ -156,6 +161,7 @@ class DocumentsTable extends Component
protected function projects() protected function projects()
{ {
return Document::query() return Document::query()
->where('is_public', true)
->whereHasMorph('documentable', [Project::class], function ($query) { ->whereHasMorph('documentable', [Project::class], function ($query) {
$query->where('client_id', $this->client->id); $query->where('client_id', $this->client->id);
}); });
@ -164,6 +170,7 @@ class DocumentsTable extends Component
protected function quotes() protected function quotes()
{ {
return Document::query() return Document::query()
->where('is_public', true)
->whereHasMorph('documentable', [Quote::class], function ($query) { ->whereHasMorph('documentable', [Quote::class], function ($query) {
$query->where('client_id', $this->client->id); $query->where('client_id', $this->client->id);
}); });
@ -172,6 +179,7 @@ class DocumentsTable extends Component
protected function recurringInvoices() protected function recurringInvoices()
{ {
return Document::query() return Document::query()
->where('is_public', true)
->whereHasMorph('documentable', [RecurringInvoice::class], function ($query) { ->whereHasMorph('documentable', [RecurringInvoice::class], function ($query) {
$query->where('client_id', $this->client->id); $query->where('client_id', $this->client->id);
}); });
@ -180,6 +188,7 @@ class DocumentsTable extends Component
protected function tasks() protected function tasks()
{ {
return Document::query() return Document::query()
->where('is_public', true)
->whereHasMorph('documentable', [Task::class], function ($query) { ->whereHasMorph('documentable', [Task::class], function ($query) {
$query->where('client_id', $this->client->id); $query->where('client_id', $this->client->id);
}); });

View File

@ -22,7 +22,10 @@ class UploadBankIntegrationRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->bank_integration); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->bank_integration);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadBankIntegrationRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -22,7 +22,10 @@ class UploadBankTransactionRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->bank_transaction); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->bank_transaction);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadBankTransactionRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -33,11 +33,17 @@ class StoreClientRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('create', Client::class); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('create', Client::class);
} }
public function rules() public function rules()
{ {
/** @var \App\Models\User $user */
$user = auth()->user();
if ($this->file('documents') && is_array($this->file('documents'))) { if ($this->file('documents') && is_array($this->file('documents'))) {
$rules['documents.*'] = $this->file_validation; $rules['documents.*'] = $this->file_validation;
} elseif ($this->file('documents')) { } elseif ($this->file('documents')) {
@ -51,7 +57,7 @@ class StoreClientRequest extends Request
} }
if (isset($this->number)) { if (isset($this->number)) {
$rules['number'] = Rule::unique('clients')->where('company_id', auth()->user()->company()->id); $rules['number'] = Rule::unique('clients')->where('company_id', $user->company()->id);
} }
$rules['country_id'] = 'integer|nullable'; $rules['country_id'] = 'integer|nullable';
@ -81,12 +87,12 @@ class StoreClientRequest extends Request
//'regex:/[@$!%*#?&.]/', // must contain a special character //'regex:/[@$!%*#?&.]/', // must contain a special character
]; ];
if (auth()->user()->company()->account->isFreeHostedClient()) { if ($user->company()->account->isFreeHostedClient()) {
$rules['id'] = new CanStoreClientsRule(auth()->user()->company()->id); $rules['id'] = new CanStoreClientsRule($user->company()->id);
} }
$rules['number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', auth()->user()->company()->id)]; $rules['number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', $user->company()->id)];
$rules['id_number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', auth()->user()->company()->id)]; $rules['id_number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', $user->company()->id)];
return $rules; return $rules;
} }
@ -94,6 +100,8 @@ class StoreClientRequest extends Request
public function prepareForValidation() public function prepareForValidation()
{ {
$input = $this->all(); $input = $this->all();
/** @var \App\Models\User $user */
$user = auth()->user();
/* Default settings */ /* Default settings */
$settings = (array)ClientSettings::defaults(); $settings = (array)ClientSettings::defaults();
@ -130,10 +138,10 @@ class StoreClientRequest extends Request
if ($group_settings && property_exists($group_settings->settings, 'currency_id') && isset($group_settings->settings->currency_id)) { if ($group_settings && property_exists($group_settings->settings, 'currency_id') && isset($group_settings->settings->currency_id)) {
$input['settings']['currency_id'] = (string) $group_settings->settings->currency_id; $input['settings']['currency_id'] = (string) $group_settings->settings->currency_id;
} else { } else {
$input['settings']['currency_id'] = (string) auth()->user()->company()->settings->currency_id; $input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
} }
} elseif (! array_key_exists('currency_id', $input['settings'])) { } elseif (! array_key_exists('currency_id', $input['settings'])) {
$input['settings']['currency_id'] = (string) auth()->user()->company()->settings->currency_id; $input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
} }
if (isset($input['currency_code'])) { if (isset($input['currency_code'])) {

View File

@ -31,12 +31,17 @@ class UpdateClientRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->client); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->client);
} }
public function rules() public function rules()
{ {
/* Ensure we have a client name, and that all emails are unique*/ /* Ensure we have a client name, and that all emails are unique*/
/** @var \App\Models\User $user */
$user = auth()->user();
if ($this->file('documents') && is_array($this->file('documents'))) { if ($this->file('documents') && is_array($this->file('documents'))) {
$rules['documents.*'] = $this->file_validation; $rules['documents.*'] = $this->file_validation;
@ -55,15 +60,13 @@ class UpdateClientRequest extends Request
$rules['size_id'] = 'integer|nullable'; $rules['size_id'] = 'integer|nullable';
$rules['country_id'] = 'integer|nullable'; $rules['country_id'] = 'integer|nullable';
$rules['shipping_country_id'] = 'integer|nullable'; $rules['shipping_country_id'] = 'integer|nullable';
//$rules['id_number'] = 'unique:clients,id_number,,id,company_id,' . auth()->user()->company()->id;
//$rules['id_number'] = 'unique:clients,id_number,'.$this->id.',id,company_id,'.$this->company_id;
if ($this->id_number) { if ($this->id_number) {
$rules['id_number'] = Rule::unique('clients')->where('company_id', auth()->user()->company()->id)->ignore($this->client->id); $rules['id_number'] = Rule::unique('clients')->where('company_id', $user->company()->id)->ignore($this->client->id);
} }
if ($this->number) { if ($this->number) {
$rules['number'] = Rule::unique('clients')->where('company_id', auth()->user()->company()->id)->ignore($this->client->id); $rules['number'] = Rule::unique('clients')->where('company_id', $user->company()->id)->ignore($this->client->id);
} }
$rules['settings'] = new ValidClientGroupSettingsRule(); $rules['settings'] = new ValidClientGroupSettingsRule();
@ -99,9 +102,12 @@ class UpdateClientRequest extends Request
{ {
$input = $this->all(); $input = $this->all();
/** @var \App\Models\User $user */
$user = auth()->user();
/* If the user removes the currency we must always set the default */ /* If the user removes the currency we must always set the default */
if (array_key_exists('settings', $input) && ! array_key_exists('currency_id', $input['settings'])) { if (array_key_exists('settings', $input) && ! array_key_exists('currency_id', $input['settings'])) {
$input['settings']['currency_id'] = (string) auth()->user()->company()->settings->currency_id; $input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
} }
if (isset($input['language_code'])) { if (isset($input['language_code'])) {

View File

@ -22,7 +22,10 @@ class UploadClientRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->client); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->client);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadClientRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -22,7 +22,10 @@ class UploadCreditRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->credit); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->credit);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadCreditRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -23,6 +23,9 @@ class CreateDocumentRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('create', Document::class); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('create', Document::class);
} }
} }

View File

@ -22,6 +22,9 @@ class DestroyDocumentRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->document); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->document);
} }
} }

View File

@ -22,7 +22,10 @@ class EditDocumentRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->document); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->document);
} }
/** /**

View File

@ -22,7 +22,10 @@ class ShowDocumentRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('view', $this->document); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('view', $this->document);
} }
/** /**

View File

@ -23,12 +23,16 @@ class StoreDocumentRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('create', Document::class); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('create', Document::class);
} }
public function rules() public function rules()
{ {
return [ return [
'is_public' => 'sometimes|boolean',
]; ];
} }
@ -36,6 +40,10 @@ class StoreDocumentRequest extends Request
{ {
$input = $this->all(); $input = $this->all();
if(isset($input['is_public']))
$input['is_public'] = $this->toBoolean($input['is_public']);
$this->replace($input); $this->replace($input);
} }
} }

View File

@ -34,14 +34,20 @@ class UpdateDocumentRequest extends Request
public function rules() public function rules()
{ {
return [ return [
'name' => 'sometimes' 'name' => 'sometimes',
'is_public' => 'sometimes|boolean',
]; ];
} }
public function prepareForValidation() public function prepareForValidation()
{ {
$input = $this->all(); $input = $this->all();
if(isset($input['is_public']))
$input['is_public'] = $this->toBoolean($input['is_public']);
$this->replace($input); $this->replace($input);
} }
} }

View File

@ -22,7 +22,10 @@ class UploadExpenseRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->expense); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->expense);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadExpenseRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -25,6 +25,7 @@ class UploadInvoiceRequest extends Request
{ {
/** @var \App\Models\User $user */ /** @var \App\Models\User $user */
$user = auth()->user(); $user = auth()->user();
return $user->can('edit', $this->invoice); return $user->can('edit', $this->invoice);
} }
@ -51,24 +52,13 @@ class UploadInvoiceRequest extends Request
public function prepareForValidation() public function prepareForValidation()
{ {
$input = $this->all();
//tests to see if upload via binary data works. if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
// if(request()->getContent()) }
// {
// // $file = new UploadedFile(request()->getContent(), request()->header('filename'));
// $file = new UploadedFile(request()->getContent(), 'something.png');
// // request()->files->set('documents', $file);
// $this->files->add(['file' => $file]);
// // Merge it in request also (As I found this is not needed in every case)
// $this->merge(['file' => $file]);
// }
$this->replace($input);
} }
} }

View File

@ -2,7 +2,7 @@
/** /**
* Payment Ninja (https://paymentninja.com). * Payment Ninja (https://paymentninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Payment Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Payment Ninja LLC (https://paymentninja.com)
* *
@ -22,7 +22,10 @@ class UploadPaymentRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->payment); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->payment);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadPaymentRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -2,7 +2,7 @@
/** /**
* Product Ninja (https://paymentninja.com). * Product Ninja (https://paymentninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Product Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Product Ninja LLC (https://paymentninja.com)
* *
@ -22,7 +22,10 @@ class UploadProductRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->product); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->product);
} }
public function rules() public function rules()
@ -40,6 +43,20 @@ class UploadProductRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -2,7 +2,7 @@
/** /**
* Project Ninja (https://paymentninja.com). * Project Ninja (https://paymentninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Project Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Project Ninja LLC (https://paymentninja.com)
* *
@ -22,7 +22,10 @@ class UploadProjectRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->project); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->project);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadProjectRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -1,10 +1,10 @@
<?php <?php
/** /**
* Quote Ninja (https://paymentninja.com). * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
* *
* @license https://www.elastic.co/licensing/elastic-license * @license https://www.elastic.co/licensing/elastic-license
*/ */
@ -22,7 +22,10 @@ class UploadPurchaseOrderRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->purchase_order); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->purchase_order);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadPurchaseOrderRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -1,10 +1,10 @@
<?php <?php
/** /**
* Quote Ninja (https://paymentninja.com). * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
* *
* @license https://www.elastic.co/licensing/elastic-license * @license https://www.elastic.co/licensing/elastic-license
*/ */
@ -22,7 +22,10 @@ class UploadQuoteRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->quote); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->quote);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadQuoteRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -1,10 +1,10 @@
<?php <?php
/** /**
* Quote Ninja (https://paymentninja.com). * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
* *
* @license https://www.elastic.co/licensing/elastic-license * @license https://www.elastic.co/licensing/elastic-license
*/ */
@ -22,7 +22,10 @@ class UploadRecurringInvoiceRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->recurring_invoice); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->recurring_invoice);
} }
public function rules() public function rules()
@ -41,6 +44,20 @@ class UploadRecurringInvoiceRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public'])) {
$input['is_public'] = $this->toBoolean($input['is_public']);
}
$this->replace($input);
}
} }

View File

@ -1,10 +1,10 @@
<?php <?php
/** /**
* Quote Ninja (https://paymentninja.com). * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
* *
* @license https://www.elastic.co/licensing/elastic-license * @license https://www.elastic.co/licensing/elastic-license
*/ */

View File

@ -0,0 +1,41 @@
<?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\Http\Requests\Report;
use App\Http\Requests\Request;
class ReportPreviewRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize() : bool
{
/** @var \App\Models\User $user */
$user = auth()->user();
return $user->isAdmin() || $user->hasPermission('view_reports');
}
public function rules()
{
return [
];
}
public function prepareForValidation()
{
}
}

View File

@ -199,6 +199,17 @@ class Request extends FormRequest
{ {
} }
/**
* Convert to boolean
*
* @param $bool
* @return bool
*/
public function toBoolean($bool): bool
{
return filter_var($bool, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
}
public function checkTimeLog(array $log): bool public function checkTimeLog(array $log): bool
{ {
if (count($log) == 0) { if (count($log) == 0) {

View File

@ -2,7 +2,7 @@
/** /**
* Invoice Ninja (https://paymentninja.com). * Invoice Ninja (https://paymentninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Invoice Ninja LLC (https://paymentninja.com)
* *

View File

@ -1,10 +1,10 @@
<?php <?php
/** /**
* Quote Ninja (https://paymentninja.com). * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
* *
* @license https://www.elastic.co/licensing/elastic-license * @license https://www.elastic.co/licensing/elastic-license
*/ */
@ -22,17 +22,41 @@ class UploadTaskRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->can('edit', $this->task); /** @var \App\Models\User $user */
$user = auth()->user();
return $user->can('edit', $this->task);
} }
public function rules() public function rules()
{ {
$rules = []; $rules = [];
if ($this->input('documents')) { if ($this->file('documents') && is_array($this->file('documents'))) {
$rules['documents'] = 'file|mimes:csv,png,ai,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx|max:2000000'; $rules['documents.*'] = $this->file_validation;
} elseif ($this->file('documents')) {
$rules['documents'] = $this->file_validation;
} }
if ($this->file('file') && is_array($this->file('file'))) {
$rules['file.*'] = $this->file_validation;
} elseif ($this->file('file')) {
$rules['file'] = $this->file_validation;
}
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public']))
$input['is_public'] = $this->toBoolean($input['is_public']);
$this->replace($input);
}
} }

View File

@ -1,10 +1,10 @@
<?php <?php
/** /**
* Quote Ninja (https://paymentninja.com). * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
* *
* @license https://www.elastic.co/licensing/elastic-license * @license https://www.elastic.co/licensing/elastic-license
*/ */
@ -41,6 +41,18 @@ class UploadVendorRequest extends Request
$rules['file'] = $this->file_validation; $rules['file'] = $this->file_validation;
} }
$rules['is_public'] = 'sometimes|boolean';
return $rules; return $rules;
} }
public function prepareForValidation()
{
$input = $this->all();
if(isset($input['is_public']))
$input['is_public'] = $this->toBoolean($input['is_public']);
$this->replace($input);
}
} }

View File

@ -111,6 +111,7 @@ class ProcessBankTransactions implements ShouldQueue
if($account[0]['current_balance']) { if($account[0]['current_balance']) {
$this->bank_integration->balance = $account[0]['current_balance']; $this->bank_integration->balance = $account[0]['current_balance'];
$this->bank_integration->currency = $account[0]['account_currency']; $this->bank_integration->currency = $account[0]['account_currency'];
$this->bank_integration->bank_account_status = $account[0]['account_status'];
$this->bank_integration->save(); $this->bank_integration->save();
} }

View File

@ -51,7 +51,7 @@ class NinjaMailerJob implements ShouldQueue
public $override; public $override;
/** @var \App\Models\Company $company | null **/ /** @var null|\App\Models\Company $company **/
public ?Company $company; public ?Company $company;
private $mailer; private $mailer;
@ -143,8 +143,6 @@ class NinjaMailerJob implements ShouldQueue
LightLogs::create(new EmailSuccess($this->nmo->company->company_key)) LightLogs::create(new EmailSuccess($this->nmo->company->company_key))
->send(); ->send();
$this->nmo = null;
$this->company = null;
} catch(\Symfony\Component\Mime\Exception\RfcComplianceException $e) { } catch(\Symfony\Component\Mime\Exception\RfcComplianceException $e) {
nlog("Mailer failed with a Logic Exception {$e->getMessage()}"); nlog("Mailer failed with a Logic Exception {$e->getMessage()}");
$this->fail(); $this->fail();
@ -195,6 +193,9 @@ class NinjaMailerJob implements ShouldQueue
$this->release($this->backoff()[$this->attempts()-1]); $this->release($this->backoff()[$this->attempts()-1]);
} }
$this->nmo = null;
$this->company = null;
/*Clean up mailers*/ /*Clean up mailers*/
$this->cleanUpMailers(); $this->cleanUpMailers();
} }

View File

@ -0,0 +1,51 @@
<?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\Jobs\Report;
use App\Models\Company;
use App\Libraries\MultiDB;
use Illuminate\Bus\Queueable;
use Illuminate\Support\Facades\Cache;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\Middleware\WithoutOverlapping;
class PreviewReport implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance
*/
public function __construct(protected Company $company, protected array $request, private string $report_class, protected string $hash)
{
}
public function handle()
{
MultiDB::setDb($this->company->db);
/** @var \App\Export\CSV\CreditExport $export */
$export = new $this->report_class($this->company, $this->request);
$report = $export->returnJson();
// nlog($report);
Cache::put($this->hash, $report, 60 * 60);
}
public function middleware()
{
return [new WithoutOverlapping("report-{$this->company->company_key}")];
}
}

View File

@ -880,6 +880,13 @@ class Company extends BaseModel
return $data; return $data;
} }
public function utc_offset(): int
{
$timezone = $this->timezone();
return $timezone->utc_offset ?? 0;
}
public function timezone_offset(): int public function timezone_offset(): int
{ {
$offset = 0; $offset = 0;

View File

@ -222,6 +222,22 @@ class CompanyGateway extends BaseModel
$this->config = encrypt(json_encode($config)); $this->config = encrypt(json_encode($config));
} }
/**
* setConfigField
*
* @param mixed $field
* @param mixed $value
* @return void
*/
public function setConfigField($field, $value): void
{
$config = $this->getConfig();
$config->{$field} = $value;
$this->setConfig($config);
$this->save();
}
/** /**
* @return mixed * @return mixed
*/ */

View File

@ -77,6 +77,16 @@ class Document extends BaseModel
'name', 'name',
]; ];
/**
* @var array<string>
*/
protected $casts = [
'is_public' => 'bool',
'updated_at' => 'timestamp',
'created_at' => 'timestamp',
'deleted_at' => 'timestamp',
];
/** /**
* @var array * @var array
*/ */

View File

@ -171,7 +171,7 @@ class Gateway extends StaticModel
]; ];
case 57: case 57:
return [ return [
GatewayType::CREDIT_CARD => ['refund' => false, 'token_billing' => true], //Square GatewayType::CREDIT_CARD => ['refund' => true, 'token_billing' => true], //Square
]; ];
case 52: case 52:
return [ return [

View File

@ -17,7 +17,7 @@ use Illuminate\Database\Eloquent\Model;
* App\Models\PaymentHash * App\Models\PaymentHash
* *
* @property int $id * @property int $id
* @property string $hash * @property string $hash 32 char length AlphaNum
* @property float $fee_total * @property float $fee_total
* @property int|null $fee_invoice_id * @property int|null $fee_invoice_id
* @property \stdClass $data * @property \stdClass $data
@ -41,6 +41,7 @@ class PaymentHash extends Model
/** /**
* @class \App\Models\PaymentHash $this * @class \App\Models\PaymentHash $this
* @property \App\Models\PaymentHash $data * @property \App\Models\PaymentHash $data
* @property \App\Modes\PaymentHash $hash 32 char length AlphaNum
* @class \stdClass $data * @class \stdClass $data
* @property string $raw_value * @property string $raw_value
*/ */

View File

@ -195,7 +195,10 @@ class SystemLog extends Model
*/ */
public function scopeCompany($query) public function scopeCompany($query)
{ {
$query->where('company_id', auth()->user()->companyId()); /** @var \App\Models\User $user */
$user = auth()->user();
$query->where('company_id', $user->companyId());
return $query; return $query;
} }

View File

@ -263,6 +263,8 @@ class BaseDriver extends AbstractPaymentDriver
public function setClient(Client $client) public function setClient(Client $client)
{ {
$this->client = $client; $this->client = $client;
return $this;
} }
/************************** Helper methods *************************************/ /************************** Helper methods *************************************/

View File

@ -12,30 +12,30 @@
namespace App\PaymentDrivers\Square; namespace App\PaymentDrivers\Square;
use App\Exceptions\PaymentFailed; use App\Models\Invoice;
use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest;
use App\Models\ClientGatewayToken;
use App\Models\GatewayType;
use App\Models\Payment; use App\Models\Payment;
use App\Models\PaymentType; use App\Models\SystemLog;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\SquarePaymentDriver;
use App\Utils\Traits\MakesHash;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\View\View; use Illuminate\View\View;
use App\Models\GatewayType;
use App\Models\PaymentType;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use Square\Http\ApiResponse; use Square\Http\ApiResponse;
use App\Jobs\Util\SystemLogger;
use App\Utils\Traits\MakesHash;
use App\Exceptions\PaymentFailed;
use App\Models\ClientGatewayToken;
use Illuminate\Http\RedirectResponse;
use App\PaymentDrivers\SquarePaymentDriver;
use App\PaymentDrivers\Common\MethodInterface;
use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest;
class CreditCard implements MethodInterface class CreditCard implements MethodInterface
{ {
use MakesHash; use MakesHash;
public $square_driver; public function __construct(public SquarePaymentDriver $square_driver)
public function __construct(SquarePaymentDriver $square_driver)
{ {
$this->square_driver = $square_driver;
$this->square_driver->init(); $this->square_driver->init();
} }
@ -100,20 +100,28 @@ class CreditCard implements MethodInterface
); );
if ($request->shouldUseToken()) { if ($request->shouldUseToken()) {
/** @var \App\Models\ClientGatewayToken $cgt **/ $cgt = ClientGatewayToken::query()->where('token', $request->token)->first();
$cgt = ClientGatewayToken::where('token', $request->token)->first();
$token = $cgt->token; $token = $cgt->token;
} }
$invoice = Invoice::query()->whereIn('id', $this->transformKeys(array_column($this->square_driver->payment_hash->invoices(), 'invoice_id')))->withTrashed()->first();
if ($invoice) {
$description = "Invoice {$invoice->number} for {$amount} for client {$this->square_driver->client->present()->name()}";
} else {
$description = "Payment with no invoice for amount {$amount} for client {$this->square_driver->client->present()->name()}";
}
$amount_money = new \Square\Models\Money(); $amount_money = new \Square\Models\Money();
$amount_money->setAmount($amount); $amount_money->setAmount($amount);
$amount_money->setCurrency($this->square_driver->client->currency()->code); $amount_money->setCurrency($this->square_driver->client->currency()->code);
$body = new \Square\Models\CreatePaymentRequest($token, $request->idempotencyKey, $amount_money); $body = new \Square\Models\CreatePaymentRequest($token, $request->idempotencyKey);
$body->setAmountMoney($amount_money);
$body->setAutocomplete(true); $body->setAutocomplete(true);
$body->setLocationId($this->square_driver->company_gateway->getConfigField('locationId')); $body->setLocationId($this->square_driver->company_gateway->getConfigField('locationId'));
$body->setReferenceId(Str::random(16)); $body->setReferenceId($this->square_driver->payment_hash->hash);
$body->setNote($description);
if ($request->shouldUseToken()) { if ($request->shouldUseToken()) {
$body->setCustomerId($cgt->gateway_customer_reference); $body->setCustomerId($cgt->gateway_customer_reference);
@ -121,7 +129,6 @@ class CreditCard implements MethodInterface
$body->setVerificationToken($request->input('verificationToken')); $body->setVerificationToken($request->input('verificationToken'));
} }
/** @var ApiResponse */
$response = $this->square_driver->square->getPaymentsApi()->createPayment($body); $response = $this->square_driver->square->getPaymentsApi()->createPayment($body);
if ($response->isSuccess()) { if ($response->isSuccess()) {
@ -152,6 +159,20 @@ class CreditCard implements MethodInterface
$payment = $this->square_driver->createPayment($payment_record, Payment::STATUS_COMPLETED); $payment = $this->square_driver->createPayment($payment_record, Payment::STATUS_COMPLETED);
$message = [
'server_response' => $body,
'data' => $this->square_driver->payment_hash->data,
];
SystemLogger::dispatch(
$message,
SystemLog::CATEGORY_GATEWAY_RESPONSE,
SystemLog::EVENT_GATEWAY_SUCCESS,
SystemLog::TYPE_SQUARE,
$this->square_driver->client,
$this->square_driver->client->company,
);
return redirect()->route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)]); return redirect()->route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)]);
} }

View File

@ -0,0 +1,176 @@
<?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\PaymentDrivers\Square;
use App\Models\Payment;
use App\Models\SystemLog;
use App\Libraries\MultiDB;
use App\Models\GatewayType;
use App\Models\PaymentHash;
use App\Models\PaymentType;
use Illuminate\Bus\Queueable;
use App\Models\CompanyGateway;
use App\Jobs\Util\SystemLogger;
use App\Jobs\Mail\PaymentFailedMailer;
use Illuminate\Queue\SerializesModels;
use App\PaymentDrivers\Stripe\Utilities;
use Illuminate\Queue\InteractsWithQueue;
use App\PaymentDrivers\SquarePaymentDriver;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class SquareWebhook implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, Utilities;
public $tries = 1;
public $deleteWhenMissingModels = true;
public CompanyGateway $company_gateway;
public SquarePaymentDriver $driver;
public \Square\SquareClient $square;
private array $source_type = [
'CARD' => PaymentType::CREDIT_CARD_OTHER,
'BANK_ACCOUNT' => PaymentType::ACH,
'WALLET' => PaymentType::CREDIT_CARD_OTHER,
'BUY_NOW_PAY_LATER' => PaymentType::CREDIT_CARD_OTHER,
'SQUARE_ACCOUNT' => PaymentType::CREDIT_CARD_OTHER,
'CASH' => PaymentType::CASH,
'EXTERNAL' =>PaymentType::CREDIT_CARD_OTHER
];
public function __construct(public array $webhook_array, public string $company_key, public int $company_gateway_id)
{
}
public function handle()
{
nlog("Square Webhook");
MultiDB::findAndSetDbByCompanyKey($this->company_key);
$this->company_gateway = CompanyGateway::query()->withTrashed()->find($this->company_gateway_id);
$this->driver = $this->company_gateway->driver()->init();
$this->square = $this->driver->square;
$status = $this->webhook_array['data']['object']['payment']['status'] ?? false;
$payment_id = $this->webhook_array['data']['object']['payment']['id'] ?? null;
$payment_status = false;
match($status){
'APPROVED' => $payment_status = false,
'COMPLETED' => $payment_status = Payment::STATUS_COMPLETED,
'PENDING' => $payment_status = Payment::STATUS_PENDING,
'CANCELED' => $payment_status = Payment::STATUS_CANCELLED,
'FAILED' => $payment_status = Payment::STATUS_FAILED,
default => $payment_status = false,
};
if(!$payment_status){
nlog("Square Webhook - Payment Status Not Found or not worthy of processing");
nlog($this->webhook_array);
}
$payment = $this->retrieveOrCreatePayment($payment_id, $payment_status);
/** If the status was pending and now is reporting as Failed / Cancelled - process failure path */
if($payment->status_id == Payment::STATUS_PENDING && in_array($payment_status, [Payment::STATUS_CANCELLED, Payment::STATUS_FAILED])){
$payment->service()->deletePayment();
if ($this->driver->payment_hash) {
$error = ctrans('texts.client_payment_failure_body', [
'invoice' => implode(',', $payment->invoices->pluck('number')->toArray()),
'amount' => array_sum(array_column($this->driver->payment_hash->invoices(), 'amount')) + $this->driver->payment_hash->fee_total,
]);
} else {
$error = 'Payment for '.$payment->client->present()->name()." for {$payment->amount} failed";
}
PaymentFailedMailer::dispatch(
$this->driver->payment_hash,
$this->driver->client->company,
$this->driver->client,
$error
);
}
elseif($payment->status_id == Payment::STATUS_PENDING && in_array($payment_status, [Payment::STATUS_COMPLETED, Payment::STATUS_COMPLETED])){
$payment->status_id = Payment::STATUS_COMPLETED;
$payment->save();
}
}
private function retrieveOrCreatePayment(?string $payment_reference, int $payment_status): ?\App\Models\Payment
{
$payment = Payment::withTrashed()->where('transaction_reference', $payment_reference)->first();
if($payment) {
nlog("payment found, returning");
return $payment;
}
/** Handles the edge case where for some reason the payment has not yet been recorded in Invoice Ninja */
$apiResponse = $this->square->getPaymentsApi()->getPayment($payment_reference);
nlog("searching square for payment");
if($apiResponse->isSuccess()){
nlog("Searching by payment hash");
$payment_hash_id = $apiResponse->getPayment()->getReferenceId() ?? false;
$square_payment = $apiResponse->getPayment()->jsonSerialize();
$payment_hash = PaymentHash::query()->where('hash', $payment_hash_id)->firstOrFail();
$payment_hash->data = array_merge((array) $payment_hash->data, (array)$square_payment);
$payment_hash->save();
$this->driver->setPaymentHash($payment_hash);
$this->driver->setClient($payment_hash->fee_invoice->client);
$data = [
'payment_type' => $this->source_type[$square_payment->source_type],
'amount' => $payment_hash->amount_with_fee,
'transaction_reference' => $square_payment->id,
'gateway_type_id' => GatewayType::BANK_TRANSFER,
];
$payment = $this->driver->createPayment($data, $payment_status);
nlog("Creating payment");
SystemLogger::dispatch(
['response' => $this->webhook_array, 'data' => $square_payment],
SystemLog::CATEGORY_GATEWAY_RESPONSE,
SystemLog::EVENT_GATEWAY_SUCCESS,
SystemLog::TYPE_SQUARE,
$this->driver->client,
$this->driver->client->company,
);
return $payment;
}
else{
nlog("Square Webhook - Payment not found: {$payment_reference}");
nlog($apiResponse->getErrors());
return null;
}
}
}

View File

@ -11,18 +11,22 @@
namespace App\PaymentDrivers; namespace App\PaymentDrivers;
use App\Http\Requests\Payments\PaymentWebhookRequest;
use App\Jobs\Util\SystemLogger;
use App\Models\ClientGatewayToken;
use App\Models\GatewayType;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\Payment; use App\Models\Payment;
use App\Models\SystemLog;
use App\Models\GatewayType;
use App\Models\PaymentHash; use App\Models\PaymentHash;
use App\Models\PaymentType; use App\Models\PaymentType;
use App\Models\SystemLog; use App\Jobs\Util\SystemLogger;
use App\PaymentDrivers\Square\CreditCard;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Square\Http\ApiResponse; use Square\Utils\WebhooksHelper;
use App\Models\ClientGatewayToken;
use Square\Models\WebhookSubscription;
use App\PaymentDrivers\Square\CreditCard;
use App\PaymentDrivers\Square\SquareWebhook;
use Square\Models\CreateWebhookSubscriptionRequest;
use App\Http\Requests\Payments\PaymentWebhookRequest;
use Square\Models\Builders\RefundPaymentRequestBuilder;
class SquarePaymentDriver extends BaseDriver class SquarePaymentDriver extends BaseDriver
{ {
@ -96,15 +100,115 @@ class SquarePaymentDriver extends BaseDriver
public function refund(Payment $payment, $amount, $return_client_response = false) public function refund(Payment $payment, $amount, $return_client_response = false)
{ {
$this->init(); $this->init();
$this->client = $payment->client;
$amount_money = new \Square\Models\Money(); $amount_money = new \Square\Models\Money();
$amount_money->setAmount($this->convertAmount($amount)); $amount_money->setAmount($this->convertAmount($amount));
$amount_money->setCurrency($this->client->currency()->code); $amount_money->setCurrency($this->client->currency()->code);
$body = new \Square\Models\RefundPaymentRequest(\Illuminate\Support\Str::random(32), $amount_money, $payment->transaction_reference); $body = RefundPaymentRequestBuilder::init(\Illuminate\Support\Str::random(32), $amount_money)
->paymentId($payment->transaction_reference)
->reason('Refund Request')
->build();
$apiResponse = $this->square->getRefundsApi()->refundPayment($body);
if ($apiResponse->isSuccess()) {
$refundPaymentResponse = $apiResponse->getResult();
nlog($refundPaymentResponse);
/**
* - `PENDING` - Awaiting approval.
* - `COMPLETED` - Successfully completed.
* - `REJECTED` - The refund was rejected.
* - `FAILED` - An error occurred.
*/
$status = $refundPaymentResponse->getRefund()->getStatus();
if(in_array($status, ['COMPLETED', 'PENDING'])){
$transaction_reference = $refundPaymentResponse->getRefund()->getId();
$data = [
'transaction_reference' => $transaction_reference,
'transaction_response' => json_encode($refundPaymentResponse->getRefund()->jsonSerialize()),
'success' => true,
'description' => $refundPaymentResponse->getRefund()->getReason(),
'code' => $refundPaymentResponse->getRefund()->getReason(),
];
SystemLogger::dispatch(
[
'server_response' => $data,
'data' => request()->all()
],
SystemLog::CATEGORY_GATEWAY_RESPONSE,
SystemLog::EVENT_GATEWAY_SUCCESS,
SystemLog::TYPE_SQUARE,
$this->client,
$this->client->company
);
return $data;
}
elseif(in_array($status, ['REJECTED', 'FAILED'])) {
$transaction_reference = $refundPaymentResponse->getRefund()->getId();
$data = [
'transaction_reference' => $transaction_reference,
'transaction_response' => json_encode($refundPaymentResponse->getRefund()->jsonSerialize()),
'success' => false,
'description' => $refundPaymentResponse->getRefund()->getReason(),
'code' => $refundPaymentResponse->getRefund()->getReason(),
];
SystemLogger::dispatch(
[
'server_response' => $data,
'data' => request()->all()
],
SystemLog::CATEGORY_GATEWAY_RESPONSE,
SystemLog::EVENT_GATEWAY_FAILURE,
SystemLog::TYPE_SQUARE,
$this->client,
$this->client->company
);
return $data;
}
} else {
/** @var \Square\Models\Error $error */
$error = end($apiResponse->getErrors());
$data = [
'transaction_reference' => $payment->transaction_reference,
'transaction_response' => $error->jsonSerialize(),
'success' => false,
'description' => $error->getDetail(),
'code' => $error->getCode(),
];
SystemLogger::dispatch(
[
'server_response' => $data,
'data' => request()->all()
],
SystemLog::CATEGORY_GATEWAY_RESPONSE,
SystemLog::EVENT_GATEWAY_FAILURE,
SystemLog::TYPE_SQUARE,
$this->client,
$this->client->company
);
return $data;
}
/** @var ApiResponse */
$response = $this->square->getRefundsApi()->refund($body);
} }
public function tokenBilling(ClientGatewayToken $cgt, PaymentHash $payment_hash) public function tokenBilling(ClientGatewayToken $cgt, PaymentHash $payment_hash)
@ -126,10 +230,12 @@ class SquarePaymentDriver extends BaseDriver
$amount_money->setAmount($amount); $amount_money->setAmount($amount);
$amount_money->setCurrency($this->client->currency()->code); $amount_money->setCurrency($this->client->currency()->code);
$body = new \Square\Models\CreatePaymentRequest($cgt->token, \Illuminate\Support\Str::random(32), $amount_money); $body = new \Square\Models\CreatePaymentRequest($cgt->token, \Illuminate\Support\Str::random(32));
$body->setCustomerId($cgt->gateway_customer_reference); $body->setCustomerId($cgt->gateway_customer_reference);
$body->setAmountMoney($amount_money);
$body->setReferenceId($payment_hash->hash);
$body->setNote(substr($description,0,500));
/** @var ApiResponse */
$response = $this->square->getPaymentsApi()->createPayment($body); $response = $this->square->getPaymentsApi()->createPayment($body);
$body = json_decode($response->getBody()); $body = json_decode($response->getBody());
@ -177,8 +283,130 @@ class SquarePaymentDriver extends BaseDriver
return false; return false;
} }
public function processWebhookRequest(PaymentWebhookRequest $request, Payment $payment = null) public function checkWebhooks(): mixed
{ {
$this->init();
$api_response = $this->square->getWebhookSubscriptionsApi()->listWebhookSubscriptions();
if ($api_response->isSuccess()) {
//array of WebhookSubscription objects
foreach($api_response->getResult()->getSubscriptions() ?? [] as $subscription)
{
if($subscription->getName() == 'Invoice_Ninja_Webhook_Subscription')
return $subscription->getId();
}
} else {
$errors = $api_response->getErrors();
nlog($errors);
return false;
}
return false;
}
// {
// "subscription": {
// "id": "wbhk_b35f6b3145074cf9ad513610786c19d5",
// "name": "Example Webhook Subscription",
// "enabled": true,
// "event_types": [
// "payment.created",
// "order.updated",
// "invoice.created"
// ],
// "notification_url": "https://example-webhook-url.com",
// "api_version": "2021-12-15",
// "signature_key": "1k9bIJKCeTmSQwyagtNRLg",
// "created_at": "2022-08-17 23:29:48 +0000 UTC",
// "updated_at": "2022-08-17 23:29:48 +0000 UTC"
// }
// }
public function createWebhooks(): void
{
if($this->checkWebhooks())
return;
$this->init();
$event_types = ['payment.created', 'payment.updated'];
$subscription = new WebhookSubscription();
$subscription->setName('Invoice_Ninja_Webhook_Subscription');
$subscription->setEventTypes($event_types);
// $subscription->setNotificationUrl('https://invoicing.co');
$subscription->setNotificationUrl($this->company_gateway->webhookUrl());
// $subscription->setApiVersion('2021-12-15');
$body = new CreateWebhookSubscriptionRequest($subscription);
$body->setIdempotencyKey(\Illuminate\Support\Str::uuid());
$api_response = $this->square->getWebhookSubscriptionsApi()->createWebhookSubscription($body);
if ($api_response->isSuccess()) {
$subscription = $api_response->getResult()->getSubscription();
$signatureKey = $subscription->getSignatureKey();
$this->company_gateway->setConfigField('signatureKey', $signatureKey);
} else {
$errors = $api_response->getErrors();
nlog($errors);
}
}
public function processWebhookRequest(PaymentWebhookRequest $request)
{
nlog("square webhook");
$signature_key = $this->company_gateway->getConfigField('signatureKey');
$notification_url = $this->company_gateway->webhookUrl();
$body = '';
$handle = fopen('php://input', 'r');
while(!feof($handle)) {
$body .= fread($handle, 1024);
}
if (WebhooksHelper::isValidWebhookEventSignature($body, $request->header('x-square-hmacsha256-signature'), $signature_key, $notification_url)) {
SquareWebhook::dispatch($request->all(), $request->company_key, $this->company_gateway->id)->delay(5);
} else {
nlog("Square Hash Mismatch");
nlog($request->all());
}
return response()->json(['success' => true]);
}
public function testWebhook()
{
$this->init();
$body = new \Square\Models\TestWebhookSubscriptionRequest();
$body->setEventType('payment.created');
//getsubscriptionid here
$subscription_id = $this->checkWebhooks();
if(!$subscription_id)
return nlog('No Subscription Found');
$api_response = $this->square->getWebhookSubscriptionsApi()->testWebhookSubscription($subscription_id, $body);
if ($api_response->isSuccess()) {
$result = $api_response->getResult();
nlog($result);
} else {
$errors = $api_response->getErrors();
nlog($errors);
}
} }
public function convertAmount($amount) public function convertAmount($amount)

View File

@ -93,6 +93,7 @@ class AppServiceProvider extends ServiceProvider
}); });
Mailer::macro('postmark_config', function (string $postmark_key) { Mailer::macro('postmark_config', function (string $postmark_key) {
// @phpstan-ignore /** @phpstan-ignore-next-line **/
Mailer::setSymfonyTransport(app('mail.manager')->createSymfonyTransport([ Mailer::setSymfonyTransport(app('mail.manager')->createSymfonyTransport([
'transport' => 'postmark', 'transport' => 'postmark',
'token' => $postmark_key 'token' => $postmark_key
@ -101,7 +102,9 @@ class AppServiceProvider extends ServiceProvider
return $this; return $this;
}); });
Mailer::macro('mailgun_config', function (string $secret, string $domain, string $endpoint = 'api.mailgun.net') { Mailer::macro('mailgun_config', function (string $secret, string $domain, string $endpoint = 'api.mailgun.net') {
// @phpstan-ignore /** @phpstan-ignore-next-line **/
Mailer::setSymfonyTransport(app('mail.manager')->createSymfonyTransport([ Mailer::setSymfonyTransport(app('mail.manager')->createSymfonyTransport([
'transport' => 'mailgun', 'transport' => 'mailgun',
'secret' => $secret, 'secret' => $secret,

View File

@ -118,7 +118,7 @@ class TaskRepository extends BaseRepository
$task->is_running = $data['is_running'] ? 1 : 0; $task->is_running = $data['is_running'] ? 1 : 0;
} }
$task->calculated_start_date = $this->harvestStartDate($time_log); $task->calculated_start_date = $this->harvestStartDate($time_log, $task);
$task->time_log = json_encode($time_log); $task->time_log = json_encode($time_log);
@ -133,11 +133,11 @@ class TaskRepository extends BaseRepository
return $task; return $task;
} }
private function harvestStartDate($time_log) private function harvestStartDate($time_log, $task)
{ {
if(isset($time_log[0][0])){ if(isset($time_log[0][0])){
return \Carbon\Carbon::createFromTimestamp($time_log[0][0]); return \Carbon\Carbon::createFromTimestamp($time_log[0][0])->addSeconds($task->company->utc_offset());
} }
return null; return null;
@ -218,7 +218,7 @@ class TaskRepository extends BaseRepository
$log = array_merge($log, [[$start_time, 0]]); $log = array_merge($log, [[$start_time, 0]]);
$task->time_log = json_encode($log); $task->time_log = json_encode($log);
$task->calculated_start_date = \Carbon\Carbon::createFromTimestamp($start_time); $task->calculated_start_date = \Carbon\Carbon::createFromTimestamp($start_time)->addSeconds($task->company->utc_offset());
$task->saveQuietly(); $task->saveQuietly();
} }

View File

@ -138,7 +138,9 @@ class Email implements ShouldQueue
$this->email_object->company = $this->company; $this->email_object->company = $this->company;
$this->email_object->client_id ? $this->email_object->settings = $this->email_object->client->getMergedSettings() : $this->email_object->settings = $this->company->settings; $this->email_object->client_id ? $this->email_object->settings = $this->email_object->client->getMergedSettings() : $this->email_object->settings = $this->company->settings;
$this->email_object->client_id ? nlog("client settings") : nlog("company settings ");
$this->email_object->whitelabel = $this->company->account->isPaid() ? true : false; $this->email_object->whitelabel = $this->company->account->isPaid() ? true : false;

View File

@ -2,7 +2,7 @@
/** /**
* Payment Ninja (https://paymentninja.com). * Payment Ninja (https://paymentninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. Payment Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. Payment Ninja LLC (https://paymentninja.com)
* *

View File

@ -2,7 +2,7 @@
/** /**
* payment Ninja (https://paymentninja.com). * payment Ninja (https://paymentninja.com).
* *
* @link https://github.com/paymentninja/paymentninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
* @copyright Copyright (c) 2022. payment Ninja LLC (https://paymentninja.com) * @copyright Copyright (c) 2022. payment Ninja LLC (https://paymentninja.com)
* *

View File

@ -30,6 +30,7 @@ class TaskTransformer extends EntityTransformer
protected $defaultIncludes = [ protected $defaultIncludes = [
'documents', 'documents',
'project',
]; ];
/** /**

View File

@ -86,7 +86,7 @@
"socialiteproviders/microsoft": "^4.1", "socialiteproviders/microsoft": "^4.1",
"spatie/laravel-data": "^3.5", "spatie/laravel-data": "^3.5",
"sprain/swiss-qr-bill": "^3.2", "sprain/swiss-qr-bill": "^3.2",
"square/square": "13.0.0.20210721", "square/square": "30.0.0.*",
"stripe/stripe-php": "^7.50", "stripe/stripe-php": "^7.50",
"symfony/http-client": "^6.0", "symfony/http-client": "^6.0",
"symfony/mailgun-mailer": "^6.1", "symfony/mailgun-mailer": "^6.1",

265
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "9d7348352c913eb82fcca2e67670e1f8", "content-hash": "673ca66ddfdb05c3ea29012594a196d3",
"packages": [ "packages": [
{ {
"name": "adrienrn/php-mimetyper", "name": "adrienrn/php-mimetyper",
@ -99,21 +99,121 @@
"time": "2023-05-02T15:11:17+00:00" "time": "2023-05-02T15:11:17+00:00"
}, },
{ {
"name": "apimatic/jsonmapper", "name": "apimatic/core",
"version": "v2.0.3", "version": "0.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/apimatic/jsonmapper.git", "url": "https://github.com/apimatic/core-lib-php.git",
"reference": "f7588f1ab692c402a9118e65cb9fd42b74e5e0db" "reference": "32238fb83ce9a3ebef38c726b497c0f218d6e6c9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/apimatic/jsonmapper/zipball/f7588f1ab692c402a9118e65cb9fd42b74e5e0db", "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/32238fb83ce9a3ebef38c726b497c0f218d6e6c9",
"reference": "f7588f1ab692c402a9118e65cb9fd42b74e5e0db", "reference": "32238fb83ce9a3ebef38c726b497c0f218d6e6c9",
"shasum": "" "shasum": ""
}, },
"require": {
"apimatic/core-interfaces": "~0.1.0",
"apimatic/jsonmapper": "^3.1.1",
"ext-curl": "*",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"php": "^7.2 || ^8.0",
"php-jsonpointer/php-jsonpointer": "^3.0.2"
},
"require-dev": { "require-dev": {
"phpunit/phpunit": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "phan/phan": "5.4.2",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Core\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Core logic and the utilities for the Apimatic's PHP SDK",
"homepage": "https://github.com/apimatic/core-lib-php",
"keywords": [
"apimatic",
"core",
"corelib",
"php"
],
"support": {
"issues": "https://github.com/apimatic/core-lib-php/issues",
"source": "https://github.com/apimatic/core-lib-php/tree/0.3.2"
},
"time": "2023-07-11T09:30:32+00:00"
},
{
"name": "apimatic/core-interfaces",
"version": "0.1.2",
"source": {
"type": "git",
"url": "https://github.com/apimatic/core-interfaces-php.git",
"reference": "183214195a79784c382a446795c46ca8c1f43cc1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/apimatic/core-interfaces-php/zipball/183214195a79784c382a446795c46ca8c1f43cc1",
"reference": "183214195a79784c382a446795c46ca8c1f43cc1",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
"CoreInterfaces\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Definition of the behavior of apimatic/core, apimatic/unirest-php and Apimatic's PHP SDK",
"homepage": "https://github.com/apimatic/core-interfaces-php",
"keywords": [
"apimatic",
"core",
"corelib",
"interface",
"php",
"unirest"
],
"support": {
"issues": "https://github.com/apimatic/core-interfaces-php/issues",
"source": "https://github.com/apimatic/core-interfaces-php/tree/0.1.2"
},
"time": "2023-04-04T06:40:52+00:00"
},
{
"name": "apimatic/jsonmapper",
"version": "3.1.2",
"source": {
"type": "git",
"url": "https://github.com/apimatic/jsonmapper.git",
"reference": "6673a946c21f2ceeec0cb60d17541c11a22bc79d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/apimatic/jsonmapper/zipball/6673a946c21f2ceeec0cb60d17541c11a22bc79d",
"reference": "6673a946c21f2ceeec0cb60d17541c11a22bc79d",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": "^5.6 || ^7.0 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
"squizlabs/php_codesniffer": "^3.0.0" "squizlabs/php_codesniffer": "^3.0.0"
}, },
"type": "library", "type": "library",
@ -144,37 +244,38 @@
"support": { "support": {
"email": "mehdi.jaffery@apimatic.io", "email": "mehdi.jaffery@apimatic.io",
"issues": "https://github.com/apimatic/jsonmapper/issues", "issues": "https://github.com/apimatic/jsonmapper/issues",
"source": "https://github.com/apimatic/jsonmapper/tree/v2.0.3" "source": "https://github.com/apimatic/jsonmapper/tree/3.1.2"
}, },
"time": "2021-07-16T09:02:23+00:00" "time": "2023-06-08T04:27:10+00:00"
}, },
{ {
"name": "apimatic/unirest-php", "name": "apimatic/unirest-php",
"version": "2.3.0", "version": "4.0.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/apimatic/unirest-php.git", "url": "https://github.com/apimatic/unirest-php.git",
"reference": "52e226fb3b7081dc9ef64aee876142a240a5f0f9" "reference": "e16754010c16be5473289470f129d87a0f41b55e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/apimatic/unirest-php/zipball/52e226fb3b7081dc9ef64aee876142a240a5f0f9", "url": "https://api.github.com/repos/apimatic/unirest-php/zipball/e16754010c16be5473289470f129d87a0f41b55e",
"reference": "52e226fb3b7081dc9ef64aee876142a240a5f0f9", "reference": "e16754010c16be5473289470f129d87a0f41b55e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"apimatic/core-interfaces": "^0.1.0",
"ext-curl": "*", "ext-curl": "*",
"php": ">=5.6.0" "ext-json": "*",
"php": "^7.2 || ^8.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^5 || ^6 || ^7 || ^8 || ^9" "phan/phan": "5.4.2",
}, "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"suggest": { "squizlabs/php_codesniffer": "^3.5"
"ext-json": "Allows using JSON Bodies for sending and parsing requests"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
"psr-0": { "psr-4": {
"Unirest\\": "src/" "Unirest\\": "src/"
} }
}, },
@ -208,9 +309,9 @@
"support": { "support": {
"email": "opensource@apimatic.io", "email": "opensource@apimatic.io",
"issues": "https://github.com/apimatic/unirest-php/issues", "issues": "https://github.com/apimatic/unirest-php/issues",
"source": "https://github.com/apimatic/unirest-php/tree/2.3.0" "source": "https://github.com/apimatic/unirest-php/tree/4.0.5"
}, },
"time": "2022-06-15T08:29:49+00:00" "time": "2023-04-25T14:19:45+00:00"
}, },
{ {
"name": "asm/php-ansible", "name": "asm/php-ansible",
@ -424,16 +525,16 @@
}, },
{ {
"name": "aws/aws-sdk-php", "name": "aws/aws-sdk-php",
"version": "3.279.0", "version": "3.279.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/aws/aws-sdk-php.git", "url": "https://github.com/aws/aws-sdk-php.git",
"reference": "7b3d38cfccd393add0ea0ce281de91846967c61e" "reference": "ebd5e47c5be0425bb5cf4f80737850ed74767107"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7b3d38cfccd393add0ea0ce281de91846967c61e", "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/ebd5e47c5be0425bb5cf4f80737850ed74767107",
"reference": "7b3d38cfccd393add0ea0ce281de91846967c61e", "reference": "ebd5e47c5be0425bb5cf4f80737850ed74767107",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -513,9 +614,9 @@
"support": { "support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues", "issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.279.0" "source": "https://github.com/aws/aws-sdk-php/tree/3.279.2"
}, },
"time": "2023-08-16T18:18:34+00:00" "time": "2023-08-18T18:13:09+00:00"
}, },
{ {
"name": "bacon/bacon-qr-code", "name": "bacon/bacon-qr-code",
@ -1351,16 +1452,16 @@
}, },
{ {
"name": "doctrine/dbal", "name": "doctrine/dbal",
"version": "3.6.5", "version": "3.6.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/dbal.git", "url": "https://github.com/doctrine/dbal.git",
"reference": "96d5a70fd91efdcec81fc46316efc5bf3da17ddf" "reference": "63646ffd71d1676d2f747f871be31b7e921c7864"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/96d5a70fd91efdcec81fc46316efc5bf3da17ddf", "url": "https://api.github.com/repos/doctrine/dbal/zipball/63646ffd71d1676d2f747f871be31b7e921c7864",
"reference": "96d5a70fd91efdcec81fc46316efc5bf3da17ddf", "reference": "63646ffd71d1676d2f747f871be31b7e921c7864",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1376,10 +1477,11 @@
"doctrine/coding-standard": "12.0.0", "doctrine/coding-standard": "12.0.0",
"fig/log-test": "^1", "fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.1", "jetbrains/phpstorm-stubs": "2023.1",
"phpstan/phpstan": "1.10.21", "phpstan/phpstan": "1.10.29",
"phpstan/phpstan-strict-rules": "^1.5", "phpstan/phpstan-strict-rules": "^1.5",
"phpunit/phpunit": "9.6.9", "phpunit/phpunit": "9.6.9",
"psalm/plugin-phpunit": "0.18.4", "psalm/plugin-phpunit": "0.18.4",
"slevomat/coding-standard": "8.13.1",
"squizlabs/php_codesniffer": "3.7.2", "squizlabs/php_codesniffer": "3.7.2",
"symfony/cache": "^5.4|^6.0", "symfony/cache": "^5.4|^6.0",
"symfony/console": "^4.4|^5.4|^6.0", "symfony/console": "^4.4|^5.4|^6.0",
@ -1443,7 +1545,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/dbal/issues", "issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.6.5" "source": "https://github.com/doctrine/dbal/tree/3.6.6"
}, },
"funding": [ "funding": [
{ {
@ -1459,7 +1561,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-07-17T09:15:50+00:00" "time": "2023-08-17T05:38:17+00:00"
}, },
{ {
"name": "doctrine/deprecations", "name": "doctrine/deprecations",
@ -3348,16 +3450,16 @@
}, },
{ {
"name": "horstoeko/zugferd", "name": "horstoeko/zugferd",
"version": "v1.0.23", "version": "v1.0.26",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/horstoeko/zugferd.git", "url": "https://github.com/horstoeko/zugferd.git",
"reference": "bb55417be4c4de8deb0113e832feeaf7b4d3984e" "reference": "2a7541a35f00499c206391273f30159dc2c7072a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/horstoeko/zugferd/zipball/bb55417be4c4de8deb0113e832feeaf7b4d3984e", "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/2a7541a35f00499c206391273f30159dc2c7072a",
"reference": "bb55417be4c4de8deb0113e832feeaf7b4d3984e", "reference": "2a7541a35f00499c206391273f30159dc2c7072a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3415,9 +3517,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/horstoeko/zugferd/issues", "issues": "https://github.com/horstoeko/zugferd/issues",
"source": "https://github.com/horstoeko/zugferd/tree/v1.0.23" "source": "https://github.com/horstoeko/zugferd/tree/v1.0.26"
}, },
"time": "2023-08-16T17:39:36+00:00" "time": "2023-08-18T03:05:43+00:00"
}, },
{ {
"name": "http-interop/http-factory-guzzle", "name": "http-interop/http-factory-guzzle",
@ -7664,6 +7766,62 @@
}, },
"time": "2020-07-07T09:29:14+00:00" "time": "2020-07-07T09:29:14+00:00"
}, },
{
"name": "php-jsonpointer/php-jsonpointer",
"version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/raphaelstolt/php-jsonpointer.git",
"reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/raphaelstolt/php-jsonpointer/zipball/4428f86c6f23846e9faa5a420c4ef14e485b3afb",
"reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb",
"shasum": ""
},
"require": {
"php": ">=5.4"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^1.11",
"phpunit/phpunit": "4.6.*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-0": {
"Rs\\Json": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Raphael Stolt",
"email": "raphael.stolt@gmail.com",
"homepage": "http://raphaelstolt.blogspot.com/"
}
],
"description": "Implementation of JSON Pointer (http://tools.ietf.org/html/rfc6901)",
"homepage": "https://github.com/raphaelstolt/php-jsonpointer",
"keywords": [
"json",
"json pointer",
"json traversal"
],
"support": {
"issues": "https://github.com/raphaelstolt/php-jsonpointer/issues",
"source": "https://github.com/raphaelstolt/php-jsonpointer/tree/master"
},
"time": "2016-08-29T08:51:01+00:00"
},
{ {
"name": "phpdocumentor/reflection-common", "name": "phpdocumentor/reflection-common",
"version": "2.2.0", "version": "2.2.0",
@ -10037,29 +10195,28 @@
}, },
{ {
"name": "square/square", "name": "square/square",
"version": "13.0.0.20210721", "version": "30.0.0.20230816",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/square/square-php-sdk.git", "url": "https://github.com/square/square-php-sdk.git",
"reference": "03d90445854cd3b500f75061a9c63956799b8ecf" "reference": "fedfea8b6c6f16b6a90ef0d629743ae9ae25e13d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/square/square-php-sdk/zipball/03d90445854cd3b500f75061a9c63956799b8ecf", "url": "https://api.github.com/repos/square/square-php-sdk/zipball/fedfea8b6c6f16b6a90ef0d629743ae9ae25e13d",
"reference": "03d90445854cd3b500f75061a9c63956799b8ecf", "reference": "fedfea8b6c6f16b6a90ef0d629743ae9ae25e13d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"apimatic/jsonmapper": "^2.0.2", "apimatic/core": "~0.3.0",
"apimatic/unirest-php": "^2.0", "apimatic/core-interfaces": "~0.1.0",
"ext-curl": "*", "apimatic/unirest-php": "^4.0.0",
"ext-json": "*", "ext-json": "*",
"ext-mbstring": "*", "php": "^7.2 || ^8.0"
"php": ">=7.2"
}, },
"require-dev": { "require-dev": {
"phan/phan": "^3.0", "phan/phan": "5.4.2",
"phpunit/phpunit": "^7.5 || ^8.5", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"squizlabs/php_codesniffer": "^3.5" "squizlabs/php_codesniffer": "^3.5"
}, },
"type": "library", "type": "library",
@ -10088,9 +10245,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/square/square-php-sdk/issues", "issues": "https://github.com/square/square-php-sdk/issues",
"source": "https://github.com/square/square-php-sdk/tree/13.0.0.20210721" "source": "https://github.com/square/square-php-sdk/tree/30.0.0.20230816"
}, },
"time": "2021-07-21T06:43:15+00:00" "time": "2023-08-15T21:45:55+00:00"
}, },
{ {
"name": "stripe/stripe-php", "name": "stripe/stripe-php",

View File

@ -15,8 +15,8 @@ return [
'require_https' => env('REQUIRE_HTTPS', true), 'require_https' => env('REQUIRE_HTTPS', true),
'app_url' => rtrim(env('APP_URL', ''), '/'), 'app_url' => rtrim(env('APP_URL', ''), '/'),
'app_domain' => env('APP_DOMAIN', 'invoicing.co'), 'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
'app_version' => env('APP_VERSION','5.6.31'), 'app_version' => env('APP_VERSION','5.7.0'),
'app_tag' => env('APP_TAG','5.6.31'), 'app_tag' => env('APP_TAG','5.7.0'),
'minimum_client_version' => '5.0.16', 'minimum_client_version' => '5.0.16',
'terms_version' => '1.0.1', 'terms_version' => '1.0.1',
'api_secret' => env('API_SECRET', ''), 'api_secret' => env('API_SECRET', ''),

View File

@ -25,7 +25,7 @@ class DocumentFactory extends Factory
return [ return [
'is_default' => true, 'is_default' => true,
'is_public' => true, 'is_public' => true,
'name' => true, 'name' => $this->faker->word().".png",
]; ];
} }
} }

View File

@ -80,7 +80,7 @@ class PaymentLibrariesSeeder extends Seeder
['id' => 53, 'name' => 'PagSeguro', 'provider' => 'PagSeguro', 'key' => 'ef498756b54db63c143af0ec433da803', 'fields' => '{"email":"","token":"","sandbox":false}'], ['id' => 53, 'name' => 'PagSeguro', 'provider' => 'PagSeguro', 'key' => 'ef498756b54db63c143af0ec433da803', 'fields' => '{"email":"","token":"","sandbox":false}'],
['id' => 54, 'name' => 'PAYMILL', 'provider' => 'Paymill', 'key' => 'ca52f618a39367a4c944098ebf977e1c', 'fields' => '{"apiKey":""}'], ['id' => 54, 'name' => 'PAYMILL', 'provider' => 'Paymill', 'key' => 'ca52f618a39367a4c944098ebf977e1c', 'fields' => '{"apiKey":""}'],
['id' => 55, 'name' => 'Custom', 'provider' => 'Custom', 'is_offsite' => true, 'sort_order' => 21, 'key' => '54faab2ab6e3223dbe848b1686490baa', 'fields' => '{"name":"","text":""}'], ['id' => 55, 'name' => 'Custom', 'provider' => 'Custom', 'is_offsite' => true, 'sort_order' => 21, 'key' => '54faab2ab6e3223dbe848b1686490baa', 'fields' => '{"name":"","text":""}'],
['id' => 57, 'name' => 'Square', 'provider' => 'Square', 'is_offsite' => false, 'sort_order' => 21, 'key' => '65faab2ab6e3223dbe848b1686490baz', 'fields' => '{"accessToken":"","applicationId":"","locationId":"","testMode":false}'], ['id' => 57, 'name' => 'Square', 'provider' => 'Square', 'is_offsite' => false, 'sort_order' => 21, 'key' => '65faab2ab6e3223dbe848b1686490baz', 'fields' => '{"accessToken":"","applicationId":"","locationId":"","signatureKey":"","testMode":false}'],
['id' => 58, 'name' => 'Razorpay', 'provider' => 'Razorpay', 'is_offsite' => false, 'sort_order' => 21, 'key' => 'hxd6gwg3ekb9tb3v9lptgx1mqyg69zu9', 'fields' => '{"apiKey":"","apiSecret":""}'], ['id' => 58, 'name' => 'Razorpay', 'provider' => 'Razorpay', 'is_offsite' => false, 'sort_order' => 21, 'key' => 'hxd6gwg3ekb9tb3v9lptgx1mqyg69zu9', 'fields' => '{"apiKey":"","apiSecret":""}'],
['id' => 59, 'name' => 'Forte', 'provider' => 'Forte', 'is_offsite' => false, 'sort_order' => 21, 'key' => 'kivcvjexxvdiyqtj3mju5d6yhpeht2xs', 'fields' => '{"testMode":false,"apiLoginId":"","apiAccessId":"","secureKey":"","authOrganizationId":"","organizationId":"","locationId":""}'], ['id' => 59, 'name' => 'Forte', 'provider' => 'Forte', 'is_offsite' => false, 'sort_order' => 21, 'key' => 'kivcvjexxvdiyqtj3mju5d6yhpeht2xs', 'fields' => '{"testMode":false,"apiLoginId":"","apiAccessId":"","secureKey":"","authOrganizationId":"","organizationId":"","locationId":""}'],
['id' => 60, 'name' => 'PayPal REST', 'provider' => 'PayPal_Rest', 'key' => '80af24a6a691230bbec33e930ab40665', 'fields' => '{"clientId":"","secret":"","signature":"","testMode":false}'], ['id' => 60, 'name' => 'PayPal REST', 'provider' => 'PayPal_Rest', 'key' => '80af24a6a691230bbec33e930ab40665', 'fields' => '{"clientId":"","secret":"","signature":"","testMode":false}'],

View File

@ -2378,6 +2378,9 @@ $LANG = array(
'currency_cuban_peso' => 'بيزو كوبي', 'currency_cuban_peso' => 'بيزو كوبي',
'currency_bz_dollar' => 'دولار BZ', 'currency_bz_dollar' => 'دولار BZ',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'نأمل أن تستمتع باستخدام التطبيق.<br/> إذا كنت تفكر في :link فإننا نقدر ذلك كثيرًا!', 'review_app_help' => 'نأمل أن تستمتع باستخدام التطبيق.<br/> إذا كنت تفكر في :link فإننا نقدر ذلك كثيرًا!',
'writing_a_review' => 'كتابة مراجعة', 'writing_a_review' => 'كتابة مراجعة',
@ -3313,9 +3316,9 @@ $LANG = array(
'freq_three_years' => 'ثلاث سنوات', 'freq_three_years' => 'ثلاث سنوات',
'military_time_help' => 'عرض 24 ساعة', 'military_time_help' => 'عرض 24 ساعة',
'click_here_capital' => 'انقر هنا', 'click_here_capital' => 'انقر هنا',
'marked_invoice_as_paid' => 'تم تعيين الفاتورة كمرسلة', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'نجح وضع علامة على الفواتير على أنها مرسلة', 'marked_invoices_as_sent' => 'نجح وضع علامة على الفواتير على أنها مرسلة',
'marked_invoices_as_paid' => 'تم تعيين الفواتير كمرسلة', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'فشل النظام في إرسال الفاتورة بالبريد الإلكتروني :invoice', 'activity_57' => 'فشل النظام في إرسال الفاتورة بالبريد الإلكتروني :invoice',
'custom_value3' => 'القيمة المخصصة 3', 'custom_value3' => 'القيمة المخصصة 3',
'custom_value4' => 'القيمة المخصصة 4', 'custom_value4' => 'القيمة المخصصة 4',
@ -4926,7 +4929,7 @@ $LANG = array(
'sync_from' => 'مزامنة من', 'sync_from' => 'مزامنة من',
'gateway_payment_text' => 'الفواتير: :invoices لـ :amount للعميل :client', 'gateway_payment_text' => 'الفواتير: :invoices لـ :amount للعميل :client',
'gateway_payment_text_no_invoice' => 'الدفع بدون فاتورة للمبلغ :amount للعميل :client', 'gateway_payment_text_no_invoice' => 'الدفع بدون فاتورة للمبلغ :amount للعميل :client',
'click_to_variables' => 'العميل هنا لمشاهدة جميع المتغيرات.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'سافر على متن سفينة لِـ', 'ship_to' => 'سافر على متن سفينة لِـ',
'stripe_direct_debit_details' => 'يرجى التحويل إلى الحساب المصرفي المحدد أعلاه.', 'stripe_direct_debit_details' => 'يرجى التحويل إلى الحساب المصرفي المحدد أعلاه.',
'branch_name' => 'اسم الفرع', 'branch_name' => 'اسم الفرع',
@ -5088,8 +5091,49 @@ $LANG = array(
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2405,6 +2405,9 @@ $LANG = array(
'currency_cuban_peso' => 'Кубински песо', 'currency_cuban_peso' => 'Кубински песо',
'currency_bz_dollar' => 'BZ долар', 'currency_bz_dollar' => 'BZ долар',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'Надяваме се, че използвате приложението с удоволствие.<br/>Ще се радваме, ако решите да :link!', 'review_app_help' => 'Надяваме се, че използвате приложението с удоволствие.<br/>Ще се радваме, ако решите да :link!',
'writing_a_review' => 'напишете оценка', 'writing_a_review' => 'напишете оценка',
@ -3340,9 +3343,9 @@ $LANG = array(
'freq_three_years' => 'Три години', 'freq_three_years' => 'Три години',
'military_time_help' => '24-часов формат', 'military_time_help' => '24-часов формат',
'click_here_capital' => 'Натиснете тук', 'click_here_capital' => 'Натиснете тук',
'marked_invoice_as_paid' => 'Успешно отбелязана фактура като изпратена', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Фактурите са маркирани като изпратени', 'marked_invoices_as_sent' => 'Фактурите са маркирани като изпратени',
'marked_invoices_as_paid' => 'Успешно маркирани фактури като изпратени ', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'Системата не успя да изпрати фактура :invoice по e-mail', 'activity_57' => 'Системата не успя да изпрати фактура :invoice по e-mail',
'custom_value3' => 'Персонифицирана стойност 3', 'custom_value3' => 'Персонифицирана стойност 3',
'custom_value4' => 'Персонифицирана стойност 4', 'custom_value4' => 'Персонифицирана стойност 4',
@ -4953,7 +4956,7 @@ $LANG = array(
'sync_from' => 'Sync From', 'sync_from' => 'Sync From',
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client', 'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client', 'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
'click_to_variables' => 'Client here to see all variables.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Ship to', 'ship_to' => 'Ship to',
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.', 'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
'branch_name' => 'Branch Name', 'branch_name' => 'Branch Name',
@ -5115,8 +5118,49 @@ $LANG = array(
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2404,6 +2404,9 @@ $LANG = array(
'currency_cuban_peso' => 'Cuban Peso', 'currency_cuban_peso' => 'Cuban Peso',
'currency_bz_dollar' => 'Dòlar BZ', 'currency_bz_dollar' => 'Dòlar BZ',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!', 'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!',
'writing_a_review' => 'escriu una ressenya', 'writing_a_review' => 'escriu una ressenya',
@ -3339,9 +3342,9 @@ $LANG = array(
'freq_three_years' => 'Three Years', 'freq_three_years' => 'Three Years',
'military_time_help' => '24 Hour Display', 'military_time_help' => '24 Hour Display',
'click_here_capital' => 'Click here', 'click_here_capital' => 'Click here',
'marked_invoice_as_paid' => 'Successfully marked invoice as sent', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Successfully marked invoices as sent', 'marked_invoices_as_sent' => 'Successfully marked invoices as sent',
'marked_invoices_as_paid' => 'Successfully marked invoices as sent', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'System failed to email invoice :invoice', 'activity_57' => 'System failed to email invoice :invoice',
'custom_value3' => 'Custom Value 3', 'custom_value3' => 'Custom Value 3',
'custom_value4' => 'Custom Value 4', 'custom_value4' => 'Custom Value 4',
@ -4952,7 +4955,7 @@ $LANG = array(
'sync_from' => 'Sincronitza de', 'sync_from' => 'Sincronitza de',
'gateway_payment_text' => 'Factures: :invoices de :amount per al client :client', 'gateway_payment_text' => 'Factures: :invoices de :amount per al client :client',
'gateway_payment_text_no_invoice' => 'Pagament sense factura de :amount per al client :client', 'gateway_payment_text_no_invoice' => 'Pagament sense factura de :amount per al client :client',
'click_to_variables' => 'Pitgeu aquí per veure totes les variables.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Envia a', 'ship_to' => 'Envia a',
'stripe_direct_debit_details' => 'Transferiu al compte bancari especificat a dalt, si us plau.', 'stripe_direct_debit_details' => 'Transferiu al compte bancari especificat a dalt, si us plau.',
'branch_name' => 'Nom de l\'oficina', 'branch_name' => 'Nom de l\'oficina',
@ -5114,8 +5117,49 @@ $LANG = array(
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2405,6 +2405,9 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
'currency_cuban_peso' => 'Kubanischer Peso', 'currency_cuban_peso' => 'Kubanischer Peso',
'currency_bz_dollar' => 'Belize-Dollar', 'currency_bz_dollar' => 'Belize-Dollar',
'currency_libyan_dinar' => 'Libyscher Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'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!', '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', 'writing_a_review' => 'Schreiben einer Rezension',
@ -3340,9 +3343,9 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
'freq_three_years' => 'Drei Jahre', 'freq_three_years' => 'Drei Jahre',
'military_time_help' => '24-Stunden-Anzeige', 'military_time_help' => '24-Stunden-Anzeige',
'click_here_capital' => 'Klicke hier', 'click_here_capital' => 'Klicke hier',
'marked_invoice_as_paid' => 'Die Rechnung wurde erfolgreich als "versendet" markiert', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Erfolgreich Rechnungen als versendet markiert', 'marked_invoices_as_sent' => 'Erfolgreich Rechnungen als versendet markiert',
'marked_invoices_as_paid' => 'Die Rechnung wurde erfolgreich als "versendet" markiert', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'Das System konnte die Rechnung :invoice nicht per E-Mail versenden', 'activity_57' => 'Das System konnte die Rechnung :invoice nicht per E-Mail versenden',
'custom_value3' => 'Benutzerdefinierter Wert 3', 'custom_value3' => 'Benutzerdefinierter Wert 3',
'custom_value4' => 'Benutzerdefinierter Wert 4', 'custom_value4' => 'Benutzerdefinierter Wert 4',
@ -3708,7 +3711,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
'invoice_task_timelog' => 'Aufgaben Zeiterfassung in Rechnung stellen', 'invoice_task_timelog' => 'Aufgaben Zeiterfassung in Rechnung stellen',
'invoice_task_timelog_help' => 'Zeitdetails in der Rechnungsposition ausweisen', 'invoice_task_timelog_help' => 'Zeitdetails in der Rechnungsposition ausweisen',
'auto_start_tasks_help' => 'Beginne Aufgabe vor dem Speichern', 'auto_start_tasks_help' => 'Beginne Aufgabe vor dem Speichern',
'configure_statuses' => 'Stati bearbeiten', 'configure_statuses' => 'Status bearbeiten',
'task_settings' => 'Aufgaben-Einstellungen', 'task_settings' => 'Aufgaben-Einstellungen',
'configure_categories' => 'Kategorien bearbeiten', 'configure_categories' => 'Kategorien bearbeiten',
'edit_expense_category' => 'Ausgaben Kategorie bearbeiten', 'edit_expense_category' => 'Ausgaben Kategorie bearbeiten',
@ -3865,7 +3868,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
'notification_credit_viewed' => 'Der folgende Kunde :client hat die Gutschrift :credit über :amount angeschaut.', 'notification_credit_viewed' => 'Der folgende Kunde :client hat die Gutschrift :credit über :amount angeschaut.',
'reset_password_text' => 'Bitte geben Sie ihre E-Mail-Adresse an, um das Passwort zurücksetzen zu können.', 'reset_password_text' => 'Bitte geben Sie ihre E-Mail-Adresse an, um das Passwort zurücksetzen zu können.',
'password_reset' => 'Passwort zurücksetzten', 'password_reset' => 'Passwort zurücksetzten',
'account_login_text' => 'Welcome! Glad to see you.', 'account_login_text' => 'Willkommen! Schön Sie zu sehen.',
'request_cancellation' => 'Storno beantragen', 'request_cancellation' => 'Storno beantragen',
'delete_payment_method' => 'Zahlungsmethode löschen', 'delete_payment_method' => 'Zahlungsmethode löschen',
'about_to_delete_payment_method' => 'Diese Zahlungsmethode wird gelöscht.', 'about_to_delete_payment_method' => 'Diese Zahlungsmethode wird gelöscht.',
@ -4954,7 +4957,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
'sync_from' => 'Synchronisieren von', 'sync_from' => 'Synchronisieren von',
'gateway_payment_text' => 'Rechnungen: :invoices über :amount für Kunde :client', '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', 'gateway_payment_text_no_invoice' => 'Zahlung ohne Rechnung für Kunde :client über :amount',
'click_to_variables' => 'Client hier, um alle Variablen zu sehen.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Liefern an', 'ship_to' => 'Liefern an',
'stripe_direct_debit_details' => 'Bitte überweisen Sie den Betrag an obenstehende Bankverbindung', 'stripe_direct_debit_details' => 'Bitte überweisen Sie den Betrag an obenstehende Bankverbindung',
'branch_name' => 'Zweigstelle', 'branch_name' => 'Zweigstelle',
@ -5121,10 +5124,47 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice', 'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
'paid_date' => 'Paid Date', 'paid_date' => 'Paid Date',
'downloaded_entities' => 'An email will be sent with the PDFs', 'downloaded_entities' => 'An email will be sent with the PDFs',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'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',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Dateien hochladen',
'download_e_invoice' => 'E-Rechnung herunterladen',
'triangular_tax_info' => 'innergemeinschaftliches Dreiecksgeschäft',
'intracommunity_tax_info' => 'Steuerfreie innergemeinschaftliche Lieferung',
'reverse_tax_info' => 'Steuerschuldnerschaft des
Leistungsempfängers',
'currency_nicaraguan_cordoba' => 'Córdoba Oro',
'public' => 'Öffentlich',
'private' => 'Privat',
'image' => 'Image',
'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',
); );
return $LANG; return $LANG;
?> ?>

View File

@ -2404,6 +2404,9 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
'currency_cuban_peso' => 'Cuban Peso', 'currency_cuban_peso' => 'Cuban Peso',
'currency_bz_dollar' => 'BZ Dollar', 'currency_bz_dollar' => 'BZ Dollar',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'Ελπίζουμε να απολαμβάνετε τη χρήση της εφαρμογής.<br/> Εάν θα θέλατε να γράψετε μια κριτική :link θα το εκτιμούσαμε ιδιαίτερα!', 'review_app_help' => 'Ελπίζουμε να απολαμβάνετε τη χρήση της εφαρμογής.<br/> Εάν θα θέλατε να γράψετε μια κριτική :link θα το εκτιμούσαμε ιδιαίτερα!',
'writing_a_review' => 'συγγραφή κριτικής', 'writing_a_review' => 'συγγραφή κριτικής',
@ -3339,9 +3342,9 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
'freq_three_years' => 'Τρία Χρόνια', 'freq_three_years' => 'Τρία Χρόνια',
'military_time_help' => '24ωρη εμφάνιση Ώρας', 'military_time_help' => '24ωρη εμφάνιση Ώρας',
'click_here_capital' => 'Πατήστε εδώ', 'click_here_capital' => 'Πατήστε εδώ',
'marked_invoice_as_paid' => 'Επιτυχής ορισμός τιμολογίου ως απεσταλμένο', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Επιτυχής ορισμός τιμολογίων ως απεσταλμένα', 'marked_invoices_as_sent' => 'Επιτυχής ορισμός τιμολογίων ως απεσταλμένα',
'marked_invoices_as_paid' => 'Επιτυχής ορισμός τιμολογίων ως απεσταλμένα', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'Το σύστημα απέτυχε να στείλει με email το τιμολόγιο :invoice', 'activity_57' => 'Το σύστημα απέτυχε να στείλει με email το τιμολόγιο :invoice',
'custom_value3' => 'Προσαρμοσμένη Τιμή 3', 'custom_value3' => 'Προσαρμοσμένη Τιμή 3',
'custom_value4' => 'Προσαρμοσμένη Τιμή 4', 'custom_value4' => 'Προσαρμοσμένη Τιμή 4',
@ -4952,7 +4955,7 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
'sync_from' => 'Sync From', 'sync_from' => 'Sync From',
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client', 'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
'gateway_payment_text_no_invoice' => 'Πληρωμή χωρίς τιμολόγιο για ποσό : amount για πελάτη :client', 'gateway_payment_text_no_invoice' => 'Πληρωμή χωρίς τιμολόγιο για ποσό : amount για πελάτη :client',
'click_to_variables' => 'Κάντε κλικ εδώ για να δείτε όλες τις μεταβλητές.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Αποστολή προς', 'ship_to' => 'Αποστολή προς',
'stripe_direct_debit_details' => 'Μεταφέρετε στον παραπάνω τραπεζικό λογαριασμό.', 'stripe_direct_debit_details' => 'Μεταφέρετε στον παραπάνω τραπεζικό λογαριασμό.',
'branch_name' => 'Ονομασία υποκαταστήματος', 'branch_name' => 'Ονομασία υποκαταστήματος',
@ -5114,8 +5117,49 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -3342,9 +3342,9 @@ $LANG = array(
'freq_three_years' => 'Three Years', 'freq_three_years' => 'Three Years',
'military_time_help' => '24 Hour Display', 'military_time_help' => '24 Hour Display',
'click_here_capital' => 'Click here', 'click_here_capital' => 'Click here',
'marked_invoice_as_paid' => 'Successfully marked invoice as sent', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Successfully marked invoices as sent', 'marked_invoices_as_sent' => 'Successfully marked invoices as sent',
'marked_invoices_as_paid' => 'Successfully marked invoices as sent', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'System failed to email invoice :invoice', 'activity_57' => 'System failed to email invoice :invoice',
'custom_value3' => 'Custom Value 3', 'custom_value3' => 'Custom Value 3',
'custom_value4' => 'Custom Value 4', 'custom_value4' => 'Custom Value 4',
@ -5157,6 +5157,8 @@ $LANG = array(
'unlinked_transactions' => 'Successfully unlinked :count transactions', 'unlinked_transactions' => 'Successfully unlinked :count transactions',
'unlinked_transaction' => 'Successfully unlinked transaction', 'unlinked_transaction' => 'Successfully unlinked transaction',
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions', 'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
'marked_sent_credits' => 'Successfully marked credits sent',
); );
return $LANG; return $LANG;

View File

@ -753,7 +753,7 @@ $LANG = array(
'activity_7' => ':contact vió la factura :invoice del cliente :client', 'activity_7' => ':contact vió la factura :invoice del cliente :client',
'activity_8' => ':user archivó la factura :invoice', 'activity_8' => ':user archivó la factura :invoice',
'activity_9' => ':user eliminó la factura :invoice', 'activity_9' => ':user eliminó la factura :invoice',
'activity_10' => ':user entered payment :payment for :payment_amount on invoice :invoice for :client', 'activity_10' => ':user ingresó el pago :payment para :payment _cantidad en la factura :invoice para :client',
'activity_11' => ':user actualizó el pago :payment', 'activity_11' => ':user actualizó el pago :payment',
'activity_12' => ':user archivó el pago :payment', 'activity_12' => ':user archivó el pago :payment',
'activity_13' => ':user eliminó el pago :payment', 'activity_13' => ':user eliminó el pago :payment',
@ -1998,7 +1998,7 @@ $LANG = array(
'current_quarter' => 'Trimerstre Actual', 'current_quarter' => 'Trimerstre Actual',
'last_quarter' => 'Último Trimestre', 'last_quarter' => 'Último Trimestre',
'last_year' => 'Año Anterior', 'last_year' => 'Año Anterior',
'all_time' => 'All Time', 'all_time' => 'Todo el tiempo',
'custom_range' => 'Rango Personalizado', 'custom_range' => 'Rango Personalizado',
'url' => 'URL', 'url' => 'URL',
'debug' => 'Depurar', 'debug' => 'Depurar',
@ -2258,7 +2258,7 @@ $LANG = array(
'restore_recurring_expense' => 'Restaurar Gasto Recurrente', 'restore_recurring_expense' => 'Restaurar Gasto Recurrente',
'restored_recurring_expense' => 'Gasto recurrente restaurado con éxito', 'restored_recurring_expense' => 'Gasto recurrente restaurado con éxito',
'delete_recurring_expense' => 'Eliminar Gasto Recurrente', 'delete_recurring_expense' => 'Eliminar Gasto Recurrente',
'deleted_recurring_expense' => 'Successfully deleted recurring expense', 'deleted_recurring_expense' => 'Gasto recurrente eliminado con éxito',
'view_recurring_expense' => 'Ver Gasto Recurrente', 'view_recurring_expense' => 'Ver Gasto Recurrente',
'taxes_and_fees' => 'Impuestos y Tarifas', 'taxes_and_fees' => 'Impuestos y Tarifas',
'import_failed' => 'Importación fallida', 'import_failed' => 'Importación fallida',
@ -2402,6 +2402,9 @@ $LANG = array(
'currency_cuban_peso' => 'Peso Cubano', 'currency_cuban_peso' => 'Peso Cubano',
'currency_bz_dollar' => 'Dólar BZ', 'currency_bz_dollar' => 'Dólar BZ',
'currency_libyan_dinar' => 'dinar libio',
'currency_silver_troy_ounce' => 'Onza troy de plata',
'currency_gold_troy_ounce' => 'Onza troy de oro',
'review_app_help' => 'Esperamos que estés disfrutando de usar la aplicación.<br/>Si consideras :link lo apreciaremos mucho!', 'review_app_help' => 'Esperamos que estés disfrutando de usar la aplicación.<br/>Si consideras :link lo apreciaremos mucho!',
'writing_a_review' => 'escribiendo una reseña', 'writing_a_review' => 'escribiendo una reseña',
@ -2513,8 +2516,8 @@ $LANG = array(
'partial_due_date' => 'Fecha de Vencimiento Parcial', 'partial_due_date' => 'Fecha de Vencimiento Parcial',
'task_fields' => 'Campos de la Tarea', 'task_fields' => 'Campos de la Tarea',
'product_fields_help' => 'Arrastra y suelta los campos para cambiar su orden', 'product_fields_help' => 'Arrastra y suelta los campos para cambiar su orden',
'custom_value1' => 'Custom Value 1', 'custom_value1' => 'Valor personalizado 1',
'custom_value2' => 'Custom Value 2', 'custom_value2' => 'Valor personalizado 2',
'enable_two_factor' => 'Autenticación de Dos Factores', 'enable_two_factor' => 'Autenticación de Dos Factores',
'enable_two_factor_help' => 'Usa tu teléfono para confirmar tu identidad al ingresar', 'enable_two_factor_help' => 'Usa tu teléfono para confirmar tu identidad al ingresar',
'two_factor_setup' => 'Configuración de Autenticación de Dos Factores', 'two_factor_setup' => 'Configuración de Autenticación de Dos Factores',
@ -3337,9 +3340,9 @@ $LANG = array(
'freq_three_years' => 'Tres años', 'freq_three_years' => 'Tres años',
'military_time_help' => 'Pantalla de 24 horas', 'military_time_help' => 'Pantalla de 24 horas',
'click_here_capital' => 'haga clic aquí', 'click_here_capital' => 'haga clic aquí',
'marked_invoice_as_paid' => 'Factura marcada correctamente como enviada', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Facturas marcadas correctamente como enviadas', 'marked_invoices_as_sent' => 'Facturas marcadas correctamente como enviadas',
'marked_invoices_as_paid' => 'Facturas marcadas correctamente como enviadas', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'El sistema no envió la factura por correo electrónico :invoice', 'activity_57' => 'El sistema no envió la factura por correo electrónico :invoice',
'custom_value3' => 'Valor personalizado 3', 'custom_value3' => 'Valor personalizado 3',
'custom_value4' => 'Valor personalizado 4', 'custom_value4' => 'Valor personalizado 4',
@ -3861,7 +3864,7 @@ $LANG = array(
'notification_credit_viewed' => 'El siguiente cliente :client vio el Crédito :credit para :amount.', 'notification_credit_viewed' => 'El siguiente cliente :client vio el Crédito :credit para :amount.',
'reset_password_text' => 'Ingrese su correo electrónico para restablecer su contraseña.', 'reset_password_text' => 'Ingrese su correo electrónico para restablecer su contraseña.',
'password_reset' => 'Restablecimiento de contraseña', 'password_reset' => 'Restablecimiento de contraseña',
'account_login_text' => 'Welcome! Glad to see you.', 'account_login_text' => '¡Bienvenido! Contento de verte.',
'request_cancellation' => 'Solicitar una cancelación', 'request_cancellation' => 'Solicitar una cancelación',
'delete_payment_method' => 'Eliminar método de pago', 'delete_payment_method' => 'Eliminar método de pago',
'about_to_delete_payment_method' => 'Está a punto de eliminar el método de pago.', 'about_to_delete_payment_method' => 'Está a punto de eliminar el método de pago.',
@ -3975,7 +3978,7 @@ $LANG = array(
'add_payment_method_first' => 'añadir método de pago', 'add_payment_method_first' => 'añadir método de pago',
'no_items_selected' => 'No hay elementos seleccionados.', 'no_items_selected' => 'No hay elementos seleccionados.',
'payment_due' => 'Fecha de pago', 'payment_due' => 'Fecha de pago',
'account_balance' => 'Account Balance', 'account_balance' => 'Saldo de la cuenta',
'thanks' => 'Gracias', 'thanks' => 'Gracias',
'minimum_required_payment' => 'El pago mínimo requerido es :amount', 'minimum_required_payment' => 'El pago mínimo requerido es :amount',
'under_payments_disabled' => 'La empresa no admite pagos inferiores.', 'under_payments_disabled' => 'La empresa no admite pagos inferiores.',
@ -4000,7 +4003,7 @@ $LANG = array(
'notification_invoice_reminder1_sent_subject' => 'El recordatorio 1 de la factura :invoice se envió a :client', '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_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_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_custom_sent_subject' => 'Se envió un recordatorio personalizado para la factura :invoice a :client',
'notification_invoice_reminder_endless_sent_subject' => 'Se envió un recordatorio interminable de la factura :invoice a :client', 'notification_invoice_reminder_endless_sent_subject' => 'Se envió un recordatorio interminable de la factura :invoice a :client',
'assigned_user' => 'Usuario asignado', 'assigned_user' => 'Usuario asignado',
'setup_steps_notice' => 'Para continuar con el siguiente paso, asegúrese de probar cada sección.', 'setup_steps_notice' => 'Para continuar con el siguiente paso, asegúrese de probar cada sección.',
@ -4378,7 +4381,7 @@ $LANG = array(
'imported_customers' => 'Comenzó con éxito la importación de clientes', 'imported_customers' => 'Comenzó con éxito la importación de clientes',
'login_success' => 'Acceso exitoso', 'login_success' => 'Acceso exitoso',
'login_failure' => 'Inicio de sesión fallido', 'login_failure' => 'Inicio de sesión fallido',
'exported_data' => 'Once the file is ready you\'ll receive an email with a download link', 'exported_data' => 'Una vez que el archivo esté listo, recibirá un correo electrónico con un enlace de descarga.',
'include_deleted_clients' => 'Incluir clientes eliminados', 'include_deleted_clients' => 'Incluir clientes eliminados',
'include_deleted_clients_help' => 'Cargar registros pertenecientes a clientes eliminados', 'include_deleted_clients_help' => 'Cargar registros pertenecientes a clientes eliminados',
'step_1_sign_in' => 'Paso 1: Iniciar sesión', 'step_1_sign_in' => 'Paso 1: Iniciar sesión',
@ -4467,7 +4470,7 @@ $LANG = array(
'activity_123' => ':user gasto recurrente eliminado :recurring_expense', 'activity_123' => ':user gasto recurrente eliminado :recurring_expense',
'activity_124' => ':user gasto recurrente restaurado :recurring_expense', 'activity_124' => ':user gasto recurrente restaurado :recurring_expense',
'fpx' => "FPX", 'fpx' => "FPX",
'to_view_entity_set_password' => 'To view the :entity you need to set a password.', 'to_view_entity_set_password' => 'Para ver el :entity necesita establecer una contraseña.',
'unsubscribe' => 'Darse de baja', 'unsubscribe' => 'Darse de baja',
'unsubscribed' => 'dado de baja', 'unsubscribed' => 'dado de baja',
'unsubscribed_text' => 'Has sido eliminado de las notificaciones de este documento.', 'unsubscribed_text' => 'Has sido eliminado de las notificaciones de este documento.',
@ -4565,7 +4568,7 @@ $LANG = array(
'purchase_order_number' => 'Número de orden de compra', 'purchase_order_number' => 'Número de orden de compra',
'purchase_order_number_short' => 'Orden de compra #', 'purchase_order_number_short' => 'Orden de compra #',
'inventory_notification_subject' => 'Notificación de umbral de inventario para el producto: :product', 'inventory_notification_subject' => 'Notificación de umbral de inventario para el producto: :product',
'inventory_notification_body' => 'Threshold of :amount has been reached for product: :product', 'inventory_notification_body' => 'Se alcanzó el umbral de :amount para el producto: :product',
'activity_130' => ':user orden de compra creada :purchase_order', 'activity_130' => ':user orden de compra creada :purchase_order',
'activity_131' => ':user orden de compra actualizada :purchase_order', 'activity_131' => ':user orden de compra actualizada :purchase_order',
'activity_132' => ':user orden de compra archivada :purchase_order', 'activity_132' => ':user orden de compra archivada :purchase_order',
@ -4597,7 +4600,7 @@ $LANG = array(
'vendor_document_upload' => 'Carga de documentos de proveedores', 'vendor_document_upload' => 'Carga de documentos de proveedores',
'vendor_document_upload_help' => 'Permitir que los proveedores carguen documentos', 'vendor_document_upload_help' => 'Permitir que los proveedores carguen documentos',
'are_you_enjoying_the_app' => '¿Estás disfrutando de la aplicación?', 'are_you_enjoying_the_app' => '¿Estás disfrutando de la aplicación?',
'yes_its_great' => 'Yes, it\'s great!', 'yes_its_great' => '¡Sí, es genial!',
'not_so_much' => 'No tanto', 'not_so_much' => 'No tanto',
'would_you_rate_it' => '¡Me alegro de oirlo! ¿Te gustaría calificarlo?', 'would_you_rate_it' => '¡Me alegro de oirlo! ¿Te gustaría calificarlo?',
'would_you_tell_us_more' => '¡Lamento escucharlo! ¿Te gustaría contarnos más?', 'would_you_tell_us_more' => '¡Lamento escucharlo! ¿Te gustaría contarnos más?',
@ -4906,7 +4909,7 @@ $LANG = array(
'all_clients' => 'Todos los clientes', 'all_clients' => 'Todos los clientes',
'show_aging_table' => 'Mostrar tabla de antigüedad', 'show_aging_table' => 'Mostrar tabla de antigüedad',
'show_payments_table' => 'Mostrar tabla de pagos', 'show_payments_table' => 'Mostrar tabla de pagos',
'only_clients_with_invoices' => 'Only Clients with Invoices', 'only_clients_with_invoices' => 'Solo Clientes con Facturas',
'email_statement' => 'Estado de cuenta por correo electrónico', 'email_statement' => 'Estado de cuenta por correo electrónico',
'once' => 'Una vez', 'once' => 'Una vez',
'schedules' => 'Horarios', 'schedules' => 'Horarios',
@ -4950,7 +4953,7 @@ $LANG = array(
'sync_from' => 'sincronizar desde', 'sync_from' => 'sincronizar desde',
'gateway_payment_text' => 'Facturas: :invoices para :amount para cliente :client', 'gateway_payment_text' => 'Facturas: :invoices para :amount para cliente :client',
'gateway_payment_text_no_invoice' => 'Pago sin factura por importe :amount para cliente :client', 'gateway_payment_text_no_invoice' => 'Pago sin factura por importe :amount para cliente :client',
'click_to_variables' => 'Cliente aquí para ver todas las variables.', 'click_to_variables' => 'Haga clic aquí para ver todas las variables.',
'ship_to' => 'Envie a', 'ship_to' => 'Envie a',
'stripe_direct_debit_details' => 'Por favor transfiera a la cuenta bancaria designada arriba.', 'stripe_direct_debit_details' => 'Por favor transfiera a la cuenta bancaria designada arriba.',
'branch_name' => 'Nombre de la sucursal', 'branch_name' => 'Nombre de la sucursal',
@ -4970,7 +4973,7 @@ $LANG = array(
'payment_type_Interac E Transfer' => 'Transferencia Interac E', 'payment_type_Interac E Transfer' => 'Transferencia Interac E',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate', 'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
'xinvoice_no_buyers_reference' => "No se da referencia del comprador", 'xinvoice_no_buyers_reference' => "No se da referencia del comprador",
'xinvoice_online_payment' => 'The invoice needs to be paid online via the provided link', 'xinvoice_online_payment' => 'La factura debe pagarse en línea a través del enlace provisto',
'pre_payment' => 'Prepago', 'pre_payment' => 'Prepago',
'number_of_payments' => 'numero de pagos', 'number_of_payments' => 'numero de pagos',
'number_of_payments_helper' => 'El número de veces que se realizará este pago.', 'number_of_payments_helper' => 'El número de veces que se realizará este pago.',
@ -5044,76 +5047,117 @@ $LANG = array(
'date_picker_hint' => 'Utilice +days para establecer la fecha en el futuro', 'date_picker_hint' => 'Utilice +days para establecer la fecha en el futuro',
'app_help_link' => 'Más información', 'app_help_link' => 'Más información',
'here' => 'aquí', 'here' => 'aquí',
'industry_Restaurant & Catering' => 'Restaurant & Catering', 'industry_Restaurant & Catering' => 'Restaurante y Catering',
'show_credits_table' => 'Show Credits Table', 'show_credits_table' => 'Mostrar tabla de créditos',
'manual_payment' => 'Payment Manual', 'manual_payment' => 'Manual de pago',
'tax_summary_report' => 'Tax Summary Report', 'tax_summary_report' => 'Informe resumido de impuestos',
'tax_category' => 'Tax Category', 'tax_category' => 'Categoría de impuestos',
'physical_goods' => 'Physical Goods', 'physical_goods' => 'Bienes físicos',
'digital_products' => 'Digital Products', 'digital_products' => 'Productos digitales',
'services' => 'Services', 'services' => 'Servicios',
'shipping' => 'Shipping', 'shipping' => 'Envío',
'tax_exempt' => 'Tax Exempt', 'tax_exempt' => 'Exento de Impuestos',
'late_fee_added_locked_invoice' => 'Late fee for invoice :invoice added on :date', 'late_fee_added_locked_invoice' => 'Cargo por pago atrasado de la factura :invoice agregado en :date',
'lang_Khmer' => 'Khmer', 'lang_Khmer' => 'jemer',
'routing_id' => 'Routing ID', 'routing_id' => 'Id. de enrutamiento',
'enable_e_invoice' => 'Enable E-Invoice', 'enable_e_invoice' => 'Habilitar factura electrónica',
'e_invoice_type' => 'E-Invoice Type', 'e_invoice_type' => 'Tipo de factura electrónica',
'reduced_tax' => 'Reduced Tax', 'reduced_tax' => 'Impuesto reducido',
'override_tax' => 'Override Tax', 'override_tax' => 'Anular impuestos',
'zero_rated' => 'Zero Rated', 'zero_rated' => 'Clasificación cero',
'reverse_tax' => 'Reverse Tax', 'reverse_tax' => 'Impuesto Inverso',
'updated_tax_category' => 'Successfully updated the tax category', 'updated_tax_category' => 'Se actualizó con éxito la categoría de impuestos',
'updated_tax_categories' => 'Successfully updated the tax categories', 'updated_tax_categories' => 'Actualizadas con éxito las categorías de impuestos',
'set_tax_category' => 'Set Tax Category', 'set_tax_category' => 'Establecer categoría de impuestos',
'payment_manual' => 'Payment Manual', 'payment_manual' => 'Manual de pago',
'expense_payment_type' => 'Expense Payment Type', 'expense_payment_type' => 'Tipo de pago de gastos',
'payment_type_Cash App' => 'Cash App', 'payment_type_Cash App' => 'Aplicación de efectivo',
'rename' => 'Rename', 'rename' => 'Rebautizar',
'renamed_document' => 'Successfully renamed document', 'renamed_document' => 'Documento renombrado con éxito',
'e_invoice' => 'E-Invoice', 'e_invoice' => 'Factura electrónica',
'light_dark_mode' => 'Light/Dark Mode', 'light_dark_mode' => 'Modo claro/oscuro',
'activities' => 'Activities', 'activities' => 'Actividades',
'recent_transactions' => "Here are your company's most recent transactions:", 'recent_transactions' => "Estas son las transacciones más recientes de su empresa:",
'country_Palestine' => "Palestine", 'country_Palestine' => "Palestina",
'country_Taiwan' => 'Taiwan', 'country_Taiwan' => 'Taiwán',
'duties' => 'Duties', 'duties' => 'Deberes',
'order_number' => 'Order Number', 'order_number' => 'Número de orden',
'order_id' => 'Order', 'order_id' => 'Orden',
'total_invoices_outstanding' => 'Total Invoices Outstanding', 'total_invoices_outstanding' => 'Total de facturas pendientes',
'recent_activity' => 'Recent Activity', 'recent_activity' => 'Actividad reciente',
'enable_auto_bill' => 'Enable auto billing', 'enable_auto_bill' => 'Habilitar la facturación automática',
'email_count_invoices' => 'Email :count invoices', 'email_count_invoices' => 'Correo electrónico :count facturas',
'invoice_task_item_description' => 'Invoice Task Item Description', 'invoice_task_item_description' => 'Descripción del elemento de la tarea de la factura',
'invoice_task_item_description_help' => 'Add the item description to the invoice line items', 'invoice_task_item_description_help' => 'Agregar la descripción del artículo a las líneas de la factura',
'next_send_time' => 'Next Send Time', 'next_send_time' => 'Próxima hora de envío',
'uploaded_certificate' => 'Successfully uploaded certificate', 'uploaded_certificate' => 'Certificado subido correctamente',
'certificate_set' => 'Certificate set', 'certificate_set' => 'conjunto de certificados',
'certificate_not_set' => 'Certificate not set', 'certificate_not_set' => 'Certificado no establecido',
'passphrase_set' => 'Passphrase set', 'passphrase_set' => 'Conjunto de frase de contraseña',
'passphrase_not_set' => 'Passphrase not set', 'passphrase_not_set' => 'Frase de contraseña no establecida',
'upload_certificate' => 'Upload Certificate', 'upload_certificate' => 'Subir certificado',
'certificate_passphrase' => 'Certificate Passphrase', 'certificate_passphrase' => 'Frase de contraseña del certificado',
'valid_vat_number' => 'Valid VAT Number', 'valid_vat_number' => 'Número de IVA válido',
'react_notification_link' => 'React Notification Links', 'react_notification_link' => 'Reaccionar enlaces de notificación',
'react_notification_link_help' => 'Admin emails will contain links to the react application', 'react_notification_link_help' => 'Los correos electrónicos de administración contendrán enlaces a la aplicación de reacción',
'show_task_billable' => 'Show Task Billable', 'show_task_billable' => 'Mostrar tarea facturable',
'credit_item' => 'Credit Item', 'credit_item' => 'Artículo de crédito',
'drop_file_here' => 'Drop file here', 'drop_file_here' => 'Suelta el archivo aquí',
'files' => 'Files', 'files' => 'archivos',
'camera' => 'Camera', 'camera' => 'Cámara',
'gallery' => 'Gallery', 'gallery' => 'Galería',
'project_location' => 'Project Location', 'project_location' => 'Localización del proyecto',
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments', 'add_gateway_help_message' => 'Agregue una pasarela de pago (es decir, Stripe, WePay o PayPal) para aceptar pagos en línea',
'lang_Hungarian' => 'Hungarian', 'lang_Hungarian' => 'húngaro',
'use_mobile_to_manage_plan' => 'Use your phone subscription settings to manage your plan', 'use_mobile_to_manage_plan' => 'Use la configuración de suscripción de su teléfono para administrar su plan',
'item_tax3' => 'Item Tax3', 'item_tax3' => 'Artículo Impuesto3',
'item_tax_rate1' => 'Item Tax Rate 1', 'item_tax_rate1' => 'Artículo Tasa de impuesto 1',
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Artículo Tasa de impuesto 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Artículo Tasa de impuestos 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Precio de compra',
); 'country_Macedonia' => 'macedonia',
'admin_initiated_payments' => 'Pagos iniciados por el administrador',
'admin_initiated_payments_help' => 'Soporte para ingresar un pago en el portal de administración sin factura',
'paid_date' => 'Fecha de pago',
'downloaded_entities' => 'Se enviará un correo electrónico con los PDF',
'lang_French - Swiss' => 'Francés - Suizo',
'currency_swazi_lilangeni' => 'Lilangeni suazi',
'income' => 'Ingreso',
'amount_received_help' => 'Ingrese un valor aquí si el monto total recibido fue MÁS que el monto de la factura, o al registrar un pago sin facturas. De lo contrario, este campo debe dejarse en blanco.',
'vendor_phone' => 'Teléfono del proveedor',
'mercado_pago' => 'mercado pago',
'mybank' => 'Mi banco',
'paypal_paylater' => 'Paga en 4',
'paid_date' => 'Fecha de pago',
'district' => 'Distrito',
'region' => 'Región',
'county' => 'Condado',
'tax_details' => 'Detalles de impuestos',
'activity_10_online' => ':contact ingresó el pago :payment para la factura :invoice para :client',
'activity_10_manual' => ':user ingresó el pago :payment para la factura :invoice para :client',
'default_payment_type' => 'Tipo de pago predeterminado',
'number_precision' => 'Precisión numérica',
'number_precision_help' => 'Controla el número de decimales admitidos en la interfaz',
'is_tax_exempt' => 'Exento de Impuestos',
'drop_files_here' => 'Suelte archivos aquí',
'upload_files' => 'Subir archivos',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2394,6 +2394,9 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
'currency_cuban_peso' => 'Peso Cubano', 'currency_cuban_peso' => 'Peso Cubano',
'currency_bz_dollar' => 'Dólar BZ', 'currency_bz_dollar' => 'Dólar BZ',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'Esperamos que estés disfrutando con la app. <br/>Si consideras :link ¡te lo agraderemos enormemente!', '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', 'writing_a_review' => 'escribir una reseña',
@ -3329,9 +3332,9 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
'freq_three_years' => 'Tres Años', 'freq_three_years' => 'Tres Años',
'military_time_help' => 'Formato de 24 Horas', 'military_time_help' => 'Formato de 24 Horas',
'click_here_capital' => 'Pulsa aquí', 'click_here_capital' => 'Pulsa aquí',
'marked_invoice_as_paid' => 'Factura marcada como enviada correctamente', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Facturas marcadas como enviadas correctamente', 'marked_invoices_as_sent' => 'Facturas marcadas como enviadas correctamente',
'marked_invoices_as_paid' => 'Facturas marcadas como enviadas correctamente', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'El sistema falló al enviar la factura :invoice', 'activity_57' => 'El sistema falló al enviar la factura :invoice',
'custom_value3' => 'Valor Personalizado 3', 'custom_value3' => 'Valor Personalizado 3',
'custom_value4' => 'Valor Personalizado 4', 'custom_value4' => 'Valor Personalizado 4',
@ -4942,7 +4945,7 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
'sync_from' => 'sincronizar desde', 'sync_from' => 'sincronizar desde',
'gateway_payment_text' => 'Factura: :invoices por importe de :amount de :client', 'gateway_payment_text' => 'Factura: :invoices por importe de :amount de :client',
'gateway_payment_text_no_invoice' => 'Pago sin factura por importe :amount del cliente :client', 'gateway_payment_text_no_invoice' => 'Pago sin factura por importe :amount del cliente :client',
'click_to_variables' => 'Aquí para ver todas las variables del cliente', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Enviar a', 'ship_to' => 'Enviar a',
'stripe_direct_debit_details' => 'Por favor transfiera a la cuenta bancaria designada arriba.', 'stripe_direct_debit_details' => 'Por favor transfiera a la cuenta bancaria designada arriba.',
'branch_name' => 'Nombre de la sucursal', 'branch_name' => 'Nombre de la sucursal',
@ -5104,8 +5107,49 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2401,6 +2401,9 @@ $LANG = array(
'currency_cuban_peso' => 'Kuuba peeso', 'currency_cuban_peso' => 'Kuuba peeso',
'currency_bz_dollar' => 'BZ Dollar', 'currency_bz_dollar' => 'BZ Dollar',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'Loodame, et teile meeldib rakenduse kasutamine.<br/>Kui kaaluksite :link, oleksime selle eest väga tänulikud!', 'review_app_help' => 'Loodame, et teile meeldib rakenduse kasutamine.<br/>Kui kaaluksite :link, oleksime selle eest väga tänulikud!',
'writing_a_review' => 'arvustuse kirjutamine', 'writing_a_review' => 'arvustuse kirjutamine',
@ -3336,9 +3339,9 @@ $LANG = array(
'freq_three_years' => 'Kolm aastat', 'freq_three_years' => 'Kolm aastat',
'military_time_help' => '24 Hour Display', 'military_time_help' => '24 Hour Display',
'click_here_capital' => 'Kliki siia', 'click_here_capital' => 'Kliki siia',
'marked_invoice_as_paid' => 'Arve märgiti saadetuks', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Arved märgiti saadetuks', 'marked_invoices_as_sent' => 'Arved märgiti saadetuks',
'marked_invoices_as_paid' => 'Arved märgiti saadetuks', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'Süsteem ei suutnud arvet :invoice meiliga saata', 'activity_57' => 'Süsteem ei suutnud arvet :invoice meiliga saata',
'custom_value3' => 'Kohandatud väärtus 3', 'custom_value3' => 'Kohandatud väärtus 3',
'custom_value4' => 'Kohandatud väärtus 4', 'custom_value4' => 'Kohandatud väärtus 4',
@ -4949,7 +4952,7 @@ $LANG = array(
'sync_from' => 'Sync From', 'sync_from' => 'Sync From',
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client', 'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client', 'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
'click_to_variables' => 'Client here to see all variables.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Ship to', 'ship_to' => 'Ship to',
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.', 'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
'branch_name' => 'Branch Name', 'branch_name' => 'Branch Name',
@ -5111,8 +5114,49 @@ $LANG = array(
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2404,6 +2404,9 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
'currency_cuban_peso' => 'Cuban Peso', 'currency_cuban_peso' => 'Cuban Peso',
'currency_bz_dollar' => 'BZ Dollar', 'currency_bz_dollar' => 'BZ Dollar',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'We hope you\'re enjoying using app.<br/>If you\'d consider :link we\'d greatly appreciate it!', 'review_app_help' => 'We hope you\'re enjoying using app.<br/>If you\'d consider :link we\'d greatly appreciate it!',
'writing_a_review' => 'writing review', 'writing_a_review' => 'writing review',
@ -3339,9 +3342,9 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
'freq_three_years' => '3 vuotta', 'freq_three_years' => '3 vuotta',
'military_time_help' => 'Näytä 24 tunnin aikamuoto', 'military_time_help' => 'Näytä 24 tunnin aikamuoto',
'click_here_capital' => 'Klikkaa tästä', 'click_here_capital' => 'Klikkaa tästä',
'marked_invoice_as_paid' => 'Lasku merkittiin lähetetyksi onnistuneesti', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Laskut merkittiin lähetetyksi onnistuneesti', 'marked_invoices_as_sent' => 'Laskut merkittiin lähetetyksi onnistuneesti',
'marked_invoices_as_paid' => 'Laskut merkittiin lähetetyksi onnistuneesti', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'Järjestelmä epäonnistui lähettämään sähköpostilaskun :invoice', 'activity_57' => 'Järjestelmä epäonnistui lähettämään sähköpostilaskun :invoice',
'custom_value3' => 'Muokattu arvo 3', 'custom_value3' => 'Muokattu arvo 3',
'custom_value4' => 'Muokattu arvo 4', 'custom_value4' => 'Muokattu arvo 4',
@ -4952,7 +4955,7 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
'sync_from' => 'Sync From', 'sync_from' => 'Sync From',
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client', 'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client', 'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
'click_to_variables' => 'Client here to see all variables.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Ship to', 'ship_to' => 'Ship to',
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.', 'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
'branch_name' => 'Branch Name', 'branch_name' => 'Branch Name',
@ -5114,8 +5117,49 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -499,7 +499,7 @@ $LANG = array(
'payment_type_bitcoin' => 'Bitcoin', 'payment_type_bitcoin' => 'Bitcoin',
'payment_type_gocardless' => 'GoCardless', 'payment_type_gocardless' => 'GoCardless',
'knowledge_base' => 'Base de connaissances', 'knowledge_base' => 'Base de connaissances',
'partial' => 'Partiel/dépôt', 'partial' => 'Acompte',
'partial_remaining' => ':partial de :balance', 'partial_remaining' => ':partial de :balance',
'more_fields' => 'Plus de champs', 'more_fields' => 'Plus de champs',
'less_fields' => 'Moins de champs', 'less_fields' => 'Moins de champs',
@ -748,7 +748,7 @@ $LANG = array(
'activity_7' => ':contact a vu la facture :invoice pour :client', 'activity_7' => ':contact a vu la facture :invoice pour :client',
'activity_8' => ':user a archivé la facture :invoice', 'activity_8' => ':user a archivé la facture :invoice',
'activity_9' => ':user a supprimé la facture :invoice', 'activity_9' => ':user a supprimé la facture :invoice',
'activity_10' => ':user entered payment :payment for :payment_amount on invoice :invoice for :client', 'activity_10' => ':user a saisi le paiement :payment pour :payment _montant sur la facture :invoice pour :client',
'activity_11' => ':user a mis à jour le moyen de paiement :payment', 'activity_11' => ':user a mis à jour le moyen de paiement :payment',
'activity_12' => ':user a archivé le moyen de paiement :payment', 'activity_12' => ':user a archivé le moyen de paiement :payment',
'activity_13' => ':user a supprimé le moyen de paiement :payment', 'activity_13' => ':user a supprimé le moyen de paiement :payment',
@ -1083,7 +1083,7 @@ $LANG = array(
'user_create_all' => 'Créer des clients, des factures, etc.', 'user_create_all' => 'Créer des clients, des factures, etc.',
'user_view_all' => 'Voir tous les clients, les factures, etc.', 'user_view_all' => 'Voir tous les clients, les factures, etc.',
'user_edit_all' => 'Modifier tous les clients, les factures, etc.', 'user_edit_all' => 'Modifier tous les clients, les factures, etc.',
'partial_due' => 'Solde partiel', 'partial_due' => 'Acompte à verser',
'restore_vendor' => 'Restaurer le fournisseur', 'restore_vendor' => 'Restaurer le fournisseur',
'restored_vendor' => 'Fournisseur restauré avec succès', 'restored_vendor' => 'Fournisseur restauré avec succès',
'restored_expense' => 'Dépense restaurée avec succès', 'restored_expense' => 'Dépense restaurée avec succès',
@ -1327,7 +1327,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'finish_setup' => 'Terminer la configuration', 'finish_setup' => 'Terminer la configuration',
'created_wepay_confirmation_required' => 'Veuillez vérifier votre courriel et confirmer votre adresse courriel avec WePay.', 'created_wepay_confirmation_required' => 'Veuillez vérifier votre courriel et confirmer votre adresse courriel avec WePay.',
'switch_to_wepay' => 'Changer pour WePay', 'switch_to_wepay' => 'Changer pour WePay',
'switch' => 'Changer', 'switch' => 'Commutateur',
'restore_account_gateway' => 'Rétablir la passerelle de paiement', 'restore_account_gateway' => 'Rétablir la passerelle de paiement',
'restored_account_gateway' => 'La passerelle de paiement a été rétablie', 'restored_account_gateway' => 'La passerelle de paiement a été rétablie',
'united_states' => 'États-Unis', 'united_states' => 'États-Unis',
@ -1994,7 +1994,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'current_quarter' => 'Trimestre courant', 'current_quarter' => 'Trimestre courant',
'last_quarter' => 'Dernier trimestre', 'last_quarter' => 'Dernier trimestre',
'last_year' => 'Dernière année', 'last_year' => 'Dernière année',
'all_time' => 'All Time', 'all_time' => 'Tout le temps',
'custom_range' => 'Intervalle personnalisé', 'custom_range' => 'Intervalle personnalisé',
'url' => 'URL', 'url' => 'URL',
'debug' => 'Débogage', 'debug' => 'Débogage',
@ -2210,7 +2210,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'expense_link' => 'Dépenses', 'expense_link' => 'Dépenses',
'resume_task' => 'Relancer la tâche', 'resume_task' => 'Relancer la tâche',
'resumed_task' => 'Tâche relancée avec succès', 'resumed_task' => 'Tâche relancée avec succès',
'quote_design' => 'Modèle des offres', 'quote_design' => 'Modèle des devis',
'default_design' => 'Conception standard', 'default_design' => 'Conception standard',
'custom_design1' => 'Modèle personnalisé 1', 'custom_design1' => 'Modèle personnalisé 1',
'custom_design2' => 'Modèle personnalisé 2', 'custom_design2' => 'Modèle personnalisé 2',
@ -2254,7 +2254,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'restore_recurring_expense' => 'Restaurer la dépense récurrente', 'restore_recurring_expense' => 'Restaurer la dépense récurrente',
'restored_recurring_expense' => 'Dépense récurrente restaurée avec succès', 'restored_recurring_expense' => 'Dépense récurrente restaurée avec succès',
'delete_recurring_expense' => 'Supprimer la dépense récurrente', 'delete_recurring_expense' => 'Supprimer la dépense récurrente',
'deleted_recurring_expense' => 'Successfully deleted recurring expense', 'deleted_recurring_expense' => 'La dépense récurrente a été supprimée',
'view_recurring_expense' => 'Voir la dépense récurrente', 'view_recurring_expense' => 'Voir la dépense récurrente',
'taxes_and_fees' => 'Taxes et frais', 'taxes_and_fees' => 'Taxes et frais',
'import_failed' => 'L\'importation a échoué', 'import_failed' => 'L\'importation a échoué',
@ -2398,6 +2398,9 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'currency_cuban_peso' => 'Peso colombien', 'currency_cuban_peso' => 'Peso colombien',
'currency_bz_dollar' => 'Dollar BZ', 'currency_bz_dollar' => 'Dollar BZ',
'currency_libyan_dinar' => 'Dinar libyen',
'currency_silver_troy_ounce' => 'Once troy d&#39;argent',
'currency_gold_troy_ounce' => 'Once troy d&#39;or',
'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é!', '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' => 'écrire un commentaire', 'writing_a_review' => 'écrire un commentaire',
@ -2509,8 +2512,8 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'partial_due_date' => 'Paiement partiel', 'partial_due_date' => 'Paiement partiel',
'task_fields' => 'Champs de tâche', 'task_fields' => 'Champs de tâche',
'product_fields_help' => 'Glissez et déposez les champs pour changer leur ordre', 'product_fields_help' => 'Glissez et déposez les champs pour changer leur ordre',
'custom_value1' => 'Custom Value 1', 'custom_value1' => 'Valeur personnalisée 1',
'custom_value2' => 'Custom Value 2', 'custom_value2' => 'Valeur personnalisée 2',
'enable_two_factor' => 'Authentification à 2 facteurs', 'enable_two_factor' => 'Authentification à 2 facteurs',
'enable_two_factor_help' => 'Utilisez votre téléphone pour confirmer votre identité lorsque vous vous connectez', 'enable_two_factor_help' => 'Utilisez votre téléphone pour confirmer votre identité lorsque vous vous connectez',
'two_factor_setup' => 'Configuration à deux facteurs', 'two_factor_setup' => 'Configuration à deux facteurs',
@ -2530,7 +2533,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'converted_amount' => 'Montant converti', 'converted_amount' => 'Montant converti',
'default' => 'Par défaut', 'default' => 'Par défaut',
'shipping_address' => 'Adresse de Livraison', 'shipping_address' => 'Adresse de Livraison',
'bllling_address' => 'Adresse de Facturation', 'bllling_address' => 'Adresse de facturation',
'billing_address1' => 'Rue', 'billing_address1' => 'Rue',
'billing_address2' => 'Appt/Bâtiment', 'billing_address2' => 'Appt/Bâtiment',
'billing_city' => 'Ville', 'billing_city' => 'Ville',
@ -2732,7 +2735,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'upgrade_to_upload_images' => 'Mettre à niveau vers le plan entreprise pour envoyer des images', 'upgrade_to_upload_images' => 'Mettre à niveau vers le plan entreprise pour envoyer des images',
'delete_image' => 'Supprimer l\'image', 'delete_image' => 'Supprimer l\'image',
'delete_image_help' => 'Attention : supprimer l\'image la retirera de toutes les propositions.', 'delete_image_help' => 'Attention : supprimer l\'image la retirera de toutes les propositions.',
'amount_variable_help' => 'Note: le champ $amount de la facture utilisera le champ partiel/dépôt. Il utilisera le solde de la facture, si spécifié autrement.', 'amount_variable_help' => 'Note: le champ $amount de la facture utilisera le champ d\'acompte. Il utilisera le solde de la facture, si spécifié autrement.',
'taxes_are_included_help' => 'Note : Les taxes incluses ont été activées.', 'taxes_are_included_help' => 'Note : Les taxes incluses ont été activées.',
'taxes_are_not_included_help' => 'Note : Les taxes incluses ne sont pas activées.', 'taxes_are_not_included_help' => 'Note : Les taxes incluses ne sont pas activées.',
'change_requires_purge' => 'Modifier ce paramètre requière de :link les données du compte.', 'change_requires_purge' => 'Modifier ce paramètre requière de :link les données du compte.',
@ -2858,7 +2861,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'ok' => 'Ok', 'ok' => 'Ok',
'email_is_invalid' => 'L\'adresse de courriel n\'est pas correcte', 'email_is_invalid' => 'L\'adresse de courriel n\'est pas correcte',
'items' => 'Articles ', 'items' => 'Articles ',
'partial_deposit' => 'Depot Partial ', 'partial_deposit' => 'Acompte',
'add_item' => 'Ajouter Article ', 'add_item' => 'Ajouter Article ',
'total_amount' => 'Montant Total ', 'total_amount' => 'Montant Total ',
'pdf' => 'Fichier PDF', 'pdf' => 'Fichier PDF',
@ -3136,7 +3139,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'credit_field' => 'Champ de Crédit', 'credit_field' => 'Champ de Crédit',
'payment_field' => 'Champ de Paiement', 'payment_field' => 'Champ de Paiement',
'group_field' => 'Champ de Groupe', 'group_field' => 'Champ de Groupe',
'number_counter' => 'Compteur de nombre', 'number_counter' => 'Avancement du compteur',
'number_pattern' => 'Modèle de numéro', 'number_pattern' => 'Modèle de numéro',
'custom_javascript' => 'JavaScript personnalisé', 'custom_javascript' => 'JavaScript personnalisé',
'portal_mode' => 'Mode portail', 'portal_mode' => 'Mode portail',
@ -3178,7 +3181,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'filtered_by_group' => 'Filtrer par groupe', 'filtered_by_group' => 'Filtrer par groupe',
'filtered_by_invoice' => 'Filtré par Facture', 'filtered_by_invoice' => 'Filtré par Facture',
'filtered_by_client' => 'Filtré par Client', 'filtered_by_client' => 'Filtré par Client',
'filtered_by_vendor' => 'Filtré par Vendeur', 'filtered_by_vendor' => 'Filtré par fournisseur',
'group_settings' => 'Paramètres de groupe', 'group_settings' => 'Paramètres de groupe',
'groups' => 'Groupes', 'groups' => 'Groupes',
'new_group' => 'Nouveau Groupe', 'new_group' => 'Nouveau Groupe',
@ -3333,9 +3336,9 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'freq_three_years' => 'Trois ans', 'freq_three_years' => 'Trois ans',
'military_time_help' => 'Affichage sur 24h', 'military_time_help' => 'Affichage sur 24h',
'click_here_capital' => 'Cliquer ici', 'click_here_capital' => 'Cliquer ici',
'marked_invoice_as_paid' => 'Facture marquée comme envoyée', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Les factures ont été marquées envoyées', 'marked_invoices_as_sent' => 'Les factures ont été marquées envoyées',
'marked_invoices_as_paid' => 'Factures marquées comme envoyées', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'La facture :invoice n\'a pu être envoyée', 'activity_57' => 'La facture :invoice n\'a pu être envoyée',
'custom_value3' => 'Valeur personnalisée 3', 'custom_value3' => 'Valeur personnalisée 3',
'custom_value4' => 'Valeur personnalisée 4', 'custom_value4' => 'Valeur personnalisée 4',
@ -3618,7 +3621,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'search_invoice' => 'Recherche de 1 facture', 'search_invoice' => 'Recherche de 1 facture',
'search_client' => 'Recherche de 1 client', 'search_client' => 'Recherche de 1 client',
'search_product' => 'Recherche de 1 produit', 'search_product' => 'Recherche de 1 produit',
'search_quote' => 'Recherche de 1 soumission', 'search_quote' => 'Rechercher un devis',
'search_credit' => 'Recherche de 1 crédit', 'search_credit' => 'Recherche de 1 crédit',
'search_vendor' => 'Recherche de 1 fournisseurs', 'search_vendor' => 'Recherche de 1 fournisseurs',
'search_user' => 'Recherche de 1 utilisateur', 'search_user' => 'Recherche de 1 utilisateur',
@ -3678,7 +3681,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'allow_over_payment' => 'Accepter Sur-paiement', 'allow_over_payment' => 'Accepter Sur-paiement',
'allow_over_payment_help' => 'Accepter le paiement supplémentaire pour pourboire', 'allow_over_payment_help' => 'Accepter le paiement supplémentaire pour pourboire',
'allow_under_payment' => 'Accepter Sous-paiement', 'allow_under_payment' => 'Accepter Sous-paiement',
'allow_under_payment_help' => 'Supporter le paiement au minimum du montant partiel/dépôt', 'allow_under_payment_help' => 'Supporter le paiement au minimum du montant de l\'acompte',
'test_mode' => 'Mode test', 'test_mode' => 'Mode test',
'calculated_rate' => 'Taux Calculé', 'calculated_rate' => 'Taux Calculé',
'default_task_rate' => 'Taux par défaut de la tâche', 'default_task_rate' => 'Taux par défaut de la tâche',
@ -3803,7 +3806,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'restored_clients' => 'Les :value clients ont été restaurés avec succès', 'restored_clients' => 'Les :value clients ont été restaurés avec succès',
'restored_invoices' => 'Restauration réussie :value des factures', 'restored_invoices' => 'Restauration réussie :value des factures',
'restored_payments' => 'Les :value paiements ont été restaurés avec succès', 'restored_payments' => 'Les :value paiements ont été restaurés avec succès',
'restored_quotes' => 'Les :value soumissions ont été restaurées avec succès', 'restored_quotes' => 'Les :value devis ont été restaurés avec succès',
'update_app' => 'Mettre à jour l\'App', 'update_app' => 'Mettre à jour l\'App',
'started_import' => 'L\'importation a démarré avec succès', 'started_import' => 'L\'importation a démarré avec succès',
'duplicate_column_mapping' => 'Dupliquer le mappage de colonnes', 'duplicate_column_mapping' => 'Dupliquer le mappage de colonnes',
@ -3857,7 +3860,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'notification_credit_viewed' => 'Le client suivant :client consulté Crédit :credit pour :amount.', 'notification_credit_viewed' => 'Le client suivant :client consulté Crédit :credit pour :amount.',
'reset_password_text' => 'Entrez votre e-mail pour réinitialiser votre mot de passe.', 'reset_password_text' => 'Entrez votre e-mail pour réinitialiser votre mot de passe.',
'password_reset' => 'Réinitialiser le mot de passe', 'password_reset' => 'Réinitialiser le mot de passe',
'account_login_text' => 'Welcome! Glad to see you.', 'account_login_text' => 'Bienvenue ! Content de vous voir.',
'request_cancellation' => 'Demande de résiliation', 'request_cancellation' => 'Demande de résiliation',
'delete_payment_method' => 'Supprimer la méthode de paiement', 'delete_payment_method' => 'Supprimer la méthode de paiement',
'about_to_delete_payment_method' => 'Vous allez supprimer cette méthode de paiement', 'about_to_delete_payment_method' => 'Vous allez supprimer cette méthode de paiement',
@ -3971,7 +3974,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'add_payment_method_first' => 'ajouter un moyen de paiement', 'add_payment_method_first' => 'ajouter un moyen de paiement',
'no_items_selected' => 'Aucun élément sélectionné.', 'no_items_selected' => 'Aucun élément sélectionné.',
'payment_due' => 'Paiement dû', 'payment_due' => 'Paiement dû',
'account_balance' => 'Account Balance', 'account_balance' => 'Solde du compte',
'thanks' => 'Merci', 'thanks' => 'Merci',
'minimum_required_payment' => 'Le paiement minimum requis est :amount', 'minimum_required_payment' => 'Le paiement minimum requis est :amount',
'under_payments_disabled' => 'La société ne prend pas en charge les sous-paiements.', 'under_payments_disabled' => 'La société ne prend pas en charge les sous-paiements.',
@ -4067,8 +4070,8 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'payment_message_extended' => 'Merci pour votre paiement de :amount pour :invoice', 'payment_message_extended' => 'Merci pour votre paiement de :amount pour :invoice',
'online_payments_minimum_note' => 'Remarque : Les paiements en ligne ne sont pris en charge que si le montant est supérieur à 1 $ ou l\'équivalent en devise.', 'online_payments_minimum_note' => 'Remarque : Les paiements en ligne ne sont pris en charge que si le montant est supérieur à 1 $ ou l\'équivalent en devise.',
'payment_token_not_found' => 'Le jeton de paiement est introuvable. Veuillez essayer de nouveau. Si le problème persiste, essayez avec un autre mode de paiement', 'payment_token_not_found' => 'Le jeton de paiement est introuvable. Veuillez essayer de nouveau. Si le problème persiste, essayez avec un autre mode de paiement',
'vendor_address1' => 'Rue du vendeur', 'vendor_address1' => 'Rue du fournisseur',
'vendor_address2' => 'Vendeur Appt/Suite', 'vendor_address2' => 'Appt/Bâtiment du fournisseur',
'partially_unapplied' => 'Partiellement non appliqué', 'partially_unapplied' => 'Partiellement non appliqué',
'select_a_gmail_user' => 'Veuillez sélectionner un utilisateur authentifié avec Gmail', 'select_a_gmail_user' => 'Veuillez sélectionner un utilisateur authentifié avec Gmail',
'list_long_press' => 'Appuyez longuement sur la liste', 'list_long_press' => 'Appuyez longuement sur la liste',
@ -4123,7 +4126,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'disconnected_google' => 'Compte déconnecté avec succès', 'disconnected_google' => 'Compte déconnecté avec succès',
'delivered' => 'Livré', 'delivered' => 'Livré',
'spam' => 'Courrier indésirable', 'spam' => 'Courrier indésirable',
'view_docs' => 'Afficher les documents', 'view_docs' => 'Afficher la documentation',
'enter_phone_to_enable_two_factor' => 'Veuillez fournir un numéro de téléphone mobile pour activer l\'authentification à deux facteurs', 'enter_phone_to_enable_two_factor' => 'Veuillez fournir un numéro de téléphone mobile pour activer l\'authentification à deux facteurs',
'send_sms' => 'Envoyer un SMS', 'send_sms' => 'Envoyer un SMS',
'sms_code' => 'Code SMS', 'sms_code' => 'Code SMS',
@ -4576,11 +4579,11 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'notification_purchase_order_viewed_subject' => 'Bon de commande :invoice a été consultée par :client', 'notification_purchase_order_viewed_subject' => 'Bon de commande :invoice a été consultée par :client',
'notification_purchase_order_viewed' => 'Le fournisseur suivant :client a consulté le bon de commande :invoice pour :amount.', 'notification_purchase_order_viewed' => 'Le fournisseur suivant :client a consulté le bon de commande :invoice pour :amount.',
'purchase_order_date' => 'Date du bon de commande', 'purchase_order_date' => 'Date du bon de commande',
'purchase_orders' => 'Acheter en ligne', 'purchase_orders' => 'Bons de commande',
'purchase_order_number_placeholder' => 'Bon de commande n° :purchase_order', 'purchase_order_number_placeholder' => 'Bon de commande n° :purchase_order',
'accepted' => 'Accepté', 'accepted' => 'Accepté',
'activity_137' => ':contact commande d\'achat acceptée :purchase_order', 'activity_137' => ':contact commande d\'achat acceptée :purchase_order',
'vendor_information' => 'Informations sur le vendeur', 'vendor_information' => 'Informations sur le fournisseur',
'notification_purchase_order_accepted_subject' => 'Bon de commande :purchase_order a été accepté par :vendor', 'notification_purchase_order_accepted_subject' => 'Bon de commande :purchase_order a été accepté par :vendor',
'notification_purchase_order_accepted' => 'Le fournisseur suivant :vendor a accepté le bon de commande :purchase_order pour :amount.', 'notification_purchase_order_accepted' => 'Le fournisseur suivant :vendor a accepté le bon de commande :purchase_order pour :amount.',
'amount_received' => 'Montant reçu', 'amount_received' => 'Montant reçu',
@ -4590,8 +4593,8 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'added_purchase_order_to_inventory' => 'Bon de commande ajouté avec succès à l\'inventaire', 'added_purchase_order_to_inventory' => 'Bon de commande ajouté avec succès à l\'inventaire',
'added_purchase_orders_to_inventory' => 'Bons de commande ajoutés avec succès à l\'inventaire', 'added_purchase_orders_to_inventory' => 'Bons de commande ajoutés avec succès à l\'inventaire',
'client_document_upload' => 'Envoi de documents par les clients', 'client_document_upload' => 'Envoi de documents par les clients',
'vendor_document_upload' => 'Envoi de documents par les vendeurs', 'vendor_document_upload' => 'Envoi de documents par les fournisseurs',
'vendor_document_upload_help' => 'Activer l\'envoi de documents par les vendeurs', 'vendor_document_upload_help' => 'Activer l\'envoi de documents par les fournisseurs',
'are_you_enjoying_the_app' => 'Appréciez-vous l\'application ?', 'are_you_enjoying_the_app' => 'Appréciez-vous l\'application ?',
'yes_its_great' => 'Oui, c\'est parfait !', 'yes_its_great' => 'Oui, c\'est parfait !',
'not_so_much' => 'Pas tellement', 'not_so_much' => 'Pas tellement',
@ -4603,7 +4606,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'last_sent_template' => 'Dernier modèle envoyé', 'last_sent_template' => 'Dernier modèle envoyé',
'enable_flexible_search' => 'Active la recherche flexible', 'enable_flexible_search' => 'Active la recherche flexible',
'enable_flexible_search_help' => 'Correspondance de caractères non contigus, par exemple, "ct" va trouver "cat"', 'enable_flexible_search_help' => 'Correspondance de caractères non contigus, par exemple, "ct" va trouver "cat"',
'vendor_details' => 'Détails du vendeur', 'vendor_details' => 'Détails du fournisseur',
'purchase_order_details' => 'Détails du bon de commande', 'purchase_order_details' => 'Détails du bon de commande',
'qr_iban' => 'QRIBAN', 'qr_iban' => 'QRIBAN',
'besr_id' => 'ID BVRB', 'besr_id' => 'ID BVRB',
@ -4735,7 +4738,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'category_type' => 'Type de catégorie', 'category_type' => 'Type de catégorie',
'bank_transaction' => 'Transaction', 'bank_transaction' => 'Transaction',
'bulk_print' => 'Imprimer PDF', 'bulk_print' => 'Imprimer PDF',
'vendor_postal_code' => 'Code postal du vendeur', 'vendor_postal_code' => 'Code postal du fournisseur',
'preview_location' => 'Emplacement de l\'aperçu', 'preview_location' => 'Emplacement de l\'aperçu',
'bottom' => 'En bas', 'bottom' => 'En bas',
'side' => 'Sur le coté', 'side' => 'Sur le coté',
@ -4852,11 +4855,11 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'backup_restore' => 'Sauvegarde | Restaurer', 'backup_restore' => 'Sauvegarde | Restaurer',
'export_company' => 'Créer une sauvegarde d\'entreprise', 'export_company' => 'Créer une sauvegarde d\'entreprise',
'backup' => 'Sauvegarde', 'backup' => 'Sauvegarde',
'notification_purchase_order_created_body' => 'Le Purchase_Order suivant :purchase_order a été créé pour le fournisseur :vendor pour :amount.', 'notification_purchase_order_created_body' => 'Le bon de commande suivant :purchase_order a été créé pour le fournisseur :vendor pour :amount.',
'notification_purchase_order_created_subject' => 'Bon de commande :purchase_order a été créé pour :vendor', 'notification_purchase_order_created_subject' => 'Bon de commande :purchase_order a été créé pour :vendor',
'notification_purchase_order_sent_subject' => 'Bon de commande :purchase_order a été envoyé à :vendor', 'notification_purchase_order_sent_subject' => 'Bon de commande :purchase_order a été envoyé à :vendor',
'notification_purchase_order_sent' => 'Le fournisseur suivant :vendor a reçu un bon de commande par e-mail :purchase_order pour :amount.', 'notification_purchase_order_sent' => 'Le fournisseur suivant :vendor a reçu un bon de commande par e-mail :purchase_order pour :amount.',
'subscription_blocked' => 'Ce produit est un article restreint, veuillez contacter le vendeur pour plus d\'informations.', 'subscription_blocked' => 'Ce produit est un article restreint, veuillez contacter le fournisseur pour plus d\'informations.',
'subscription_blocked_title' => 'Produit non disponible.', 'subscription_blocked_title' => 'Produit non disponible.',
'purchase_order_created' => 'Bon de commande créé', 'purchase_order_created' => 'Bon de commande créé',
'purchase_order_sent' => 'Bon de commande envoyé', 'purchase_order_sent' => 'Bon de commande envoyé',
@ -4892,7 +4895,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'invalid_design' => 'Le design est invalide, la section :value est manquante', 'invalid_design' => 'Le design est invalide, la section :value est manquante',
'setup_wizard_logo' => 'Souhaitez-vous télécharger votre logo ?', 'setup_wizard_logo' => 'Souhaitez-vous télécharger votre logo ?',
'installed_version' => 'Version installée', 'installed_version' => 'Version installée',
'notify_vendor_when_paid' => 'Avertir le vendeur une fois payé', 'notify_vendor_when_paid' => 'Avertir le fournisseur une fois payé',
'notify_vendor_when_paid_help' => 'Envoyer un e-mail au fournisseur lorsque la dépense est marquée comme payée', 'notify_vendor_when_paid_help' => 'Envoyer un e-mail au fournisseur lorsque la dépense est marquée comme payée',
'update_payment' => 'Mettre à jour le paiement', 'update_payment' => 'Mettre à jour le paiement',
'markup' => 'Balisage', 'markup' => 'Balisage',
@ -4902,7 +4905,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'all_clients' => 'Tous les clients', 'all_clients' => 'Tous les clients',
'show_aging_table' => 'Afficher la table d\'âge', 'show_aging_table' => 'Afficher la table d\'âge',
'show_payments_table' => 'Afficher le tableau des paiements', 'show_payments_table' => 'Afficher le tableau des paiements',
'only_clients_with_invoices' => 'Only Clients with Invoices', 'only_clients_with_invoices' => 'Seuls les clients avec factures',
'email_statement' => 'Relevé par e-mail', 'email_statement' => 'Relevé par e-mail',
'once' => 'Une fois', 'once' => 'Une fois',
'schedules' => 'Planifications', 'schedules' => 'Planifications',
@ -4946,7 +4949,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'sync_from' => 'Synchroniser depuis', 'sync_from' => 'Synchroniser depuis',
'gateway_payment_text' => 'Factures : :invoices de :amount pour le client :client', 'gateway_payment_text' => 'Factures : :invoices de :amount pour le client :client',
'gateway_payment_text_no_invoice' => 'Paiement sans facture pour montant :amount pour client :client', 'gateway_payment_text_no_invoice' => 'Paiement sans facture pour montant :amount pour client :client',
'click_to_variables' => 'Client ici pour voir toutes les variables.', 'click_to_variables' => 'Cliquez ici pour voir toutes les variables.',
'ship_to' => 'Envoyez à', 'ship_to' => 'Envoyez à',
'stripe_direct_debit_details' => 'Veuillez transférer le montant sur le compte ci-dessus.', 'stripe_direct_debit_details' => 'Veuillez transférer le montant sur le compte ci-dessus.',
'branch_name' => 'Nom de la filiale', 'branch_name' => 'Nom de la filiale',
@ -5013,7 +5016,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'email_record' => 'Enregistrement par e-mail', 'email_record' => 'Enregistrement par e-mail',
'invoice_product_columns' => 'Colonnes de produit de facture', 'invoice_product_columns' => 'Colonnes de produit de facture',
'quote_product_columns' => 'Colonnes de produits de devis', 'quote_product_columns' => 'Colonnes de produits de devis',
'vendors' => 'Vendeurs', 'vendors' => 'Fournisseurs',
'product_sales' => 'Ventes de produits', 'product_sales' => 'Ventes de produits',
'user_sales_report_header' => 'Rapport sur les ventes des utilisateurs pour le(s) client(s) :client de :start_date à :end_date', 'user_sales_report_header' => 'Rapport sur les ventes des utilisateurs pour le(s) client(s) :client de :start_date à :end_date',
'client_balance_report' => 'Rapport sur le solde du client', 'client_balance_report' => 'Rapport sur le solde du client',
@ -5064,52 +5067,93 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'set_tax_category' => 'Définir la catégorie de taxe', 'set_tax_category' => 'Définir la catégorie de taxe',
'payment_manual' => 'Paiement manuel', 'payment_manual' => 'Paiement manuel',
'expense_payment_type' => 'Type de paiement de dépense', 'expense_payment_type' => 'Type de paiement de dépense',
'payment_type_Cash App' => 'Cash App', 'payment_type_Cash App' => 'Application de trésorerie',
'rename' => 'Rename', 'rename' => 'Renommer',
'renamed_document' => 'Successfully renamed document', 'renamed_document' => 'Document renommé avec succès',
'e_invoice' => 'E-Invoice', 'e_invoice' => 'Facture électronique',
'light_dark_mode' => 'Light/Dark Mode', 'light_dark_mode' => 'Thème clair/sombre',
'activities' => 'Activities', 'activities' => 'Activités',
'recent_transactions' => "Here are your company's most recent transactions:", 'recent_transactions' => "Voici les transactions les plus récentes de votre entreprise :",
'country_Palestine' => "Palestine", 'country_Palestine' => "Palestine",
'country_Taiwan' => 'Taiwan', 'country_Taiwan' => 'Taïwan',
'duties' => 'Duties', 'duties' => 'Devoirs',
'order_number' => 'Order Number', 'order_number' => 'Numéro de commande',
'order_id' => 'Order', 'order_id' => 'Commande',
'total_invoices_outstanding' => 'Total Invoices Outstanding', 'total_invoices_outstanding' => 'Total des factures impayées',
'recent_activity' => 'Recent Activity', 'recent_activity' => 'Activité récente',
'enable_auto_bill' => 'Enable auto billing', 'enable_auto_bill' => 'Activer l\'autofacturation',
'email_count_invoices' => 'Email :count invoices', 'email_count_invoices' => 'Envoi de :count factures',
'invoice_task_item_description' => 'Invoice Task Item Description', 'invoice_task_item_description' => 'Description de l&#39;élément de tâche de la facture',
'invoice_task_item_description_help' => 'Add the item description to the invoice line items', 'invoice_task_item_description_help' => 'Ajouter la description de l&#39;article aux éléments de ligne de la facture',
'next_send_time' => 'Next Send Time', 'next_send_time' => 'Prochaine heure d\'envoi',
'uploaded_certificate' => 'Successfully uploaded certificate', 'uploaded_certificate' => 'Le certificat a été téléversé',
'certificate_set' => 'Certificate set', 'certificate_set' => 'Le certificat est défini',
'certificate_not_set' => 'Certificate not set', 'certificate_not_set' => 'Le certificat n\'est pas défini',
'passphrase_set' => 'Passphrase set', 'passphrase_set' => 'La phrase de passe est définie',
'passphrase_not_set' => 'Passphrase not set', 'passphrase_not_set' => 'La phrase de passe n\'est pas définie',
'upload_certificate' => 'Upload Certificate', 'upload_certificate' => 'Téléverser le certificat',
'certificate_passphrase' => 'Certificate Passphrase', 'certificate_passphrase' => 'Phrase de passe du certificat',
'valid_vat_number' => 'Valid VAT Number', 'valid_vat_number' => 'Numéro de TVA valide',
'react_notification_link' => 'React Notification Links', 'react_notification_link' => 'Liens de notification de réaction',
'react_notification_link_help' => 'Admin emails will contain links to the react application', 'react_notification_link_help' => 'Les courriels provenant de l\'administrateur contiennent des liens vers l\'application React',
'show_task_billable' => 'Show Task Billable', 'show_task_billable' => 'Afficher la tâche facturable',
'credit_item' => 'Credit Item', 'credit_item' => 'Article de crédit',
'drop_file_here' => 'Drop file here', 'drop_file_here' => 'Déposez le fichier ici',
'files' => 'Files', 'files' => 'Des dossiers',
'camera' => 'Camera', 'camera' => 'Caméra',
'gallery' => 'Gallery', 'gallery' => 'Galerie',
'project_location' => 'Project Location', 'project_location' => 'Emplacement du projet',
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments', 'add_gateway_help_message' => 'Ajoutez une passerelle de paiement (c.-à-d. Stripe, WePay ou PayPal) pour accepter les paiements en ligne',
'lang_Hungarian' => 'Hungarian', 'lang_Hungarian' => 'hongrois',
'use_mobile_to_manage_plan' => 'Use your phone subscription settings to manage your plan', 'use_mobile_to_manage_plan' => 'Utilisez les paramètres de votre abonnement téléphonique pour gérer votre forfait',
'item_tax3' => 'Item Tax3', 'item_tax3' => 'Taxe sur les articles3',
'item_tax_rate1' => 'Item Tax Rate 1', 'item_tax_rate1' => 'Taux de taxe sur l&#39;article 1',
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Taux de taxe sur l&#39;article 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Taux de taxe sur l&#39;article 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Prix d&#39;achat',
); 'country_Macedonia' => 'Macédoine',
'admin_initiated_payments' => 'Paiements initiés par l&#39;administrateur',
'admin_initiated_payments_help' => 'Prise en charge de la saisie d&#39;un paiement dans le portail d&#39;administration sans facture',
'paid_date' => 'La date de paiement',
'downloaded_entities' => 'Un email sera envoyé avec les PDF',
'lang_French - Swiss' => 'Français - Suisse',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Revenu',
'amount_received_help' => 'Entrez une valeur ici si le montant total reçu était SUPÉRIEUR au montant de la facture, ou lors de l&#39;enregistrement d&#39;un paiement sans facture. Sinon, ce champ doit rester vide.',
'vendor_phone' => 'Téléphone du fournisseur',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'Ma banque',
'paypal_paylater' => 'Payez en 4',
'paid_date' => 'La date de paiement',
'district' => 'District',
'region' => 'Région',
'county' => 'Comté',
'tax_details' => 'Détails fiscaux',
'activity_10_online' => ':contact a saisi le paiement :payment pour la facture :invoice pour :client',
'activity_10_manual' => ':user a saisi le paiement :payment pour la facture :invoice pour :client',
'default_payment_type' => 'Type de paiement par défaut',
'number_precision' => 'Précision du nombre',
'number_precision_help' => 'Contrôle le nombre de décimales prises en charge dans l&#39;interface',
'is_tax_exempt' => 'Exonéré d&#39;impôt',
'drop_files_here' => 'Déposez les fichiers ici',
'upload_files' => 'Télécharger des fichiers',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Article 141 de la directive 2006/112/CE opération triangulaire',
'intracommunity_tax_info' => 'Livraison désignée à l\'article 262 ter du CGI TVA due par le preneur',
'reverse_tax_info' => 'Exonération des TVA article 283-2 du CGI TVA due par le preneur',
'currency_nicaraguan_cordoba' => 'Cordoue nicaraguayenne',
'public' => 'Publique',
'private' => 'Privé',
'image' => 'Image',
'other' => 'Autre',
'linked_to' => 'Lié à',
'file_saved_in_path' => 'Le fichier a été enregistré dans :path',
'unlinked_transactions' => 'Transactions :count dissociées avec succès',
'unlinked_transaction' => 'Transaction dissociée avec succès',
'view_dashboard_permission' => 'Autoriser l&#39;utilisateur à accéder au tableau de bord, les données sont limitées aux autorisations disponibles',
'marked_sent_credits' => 'Successfully marked credits sent',
);
return $LANG; return $LANG;

View File

@ -3334,9 +3334,9 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'freq_three_years' => 'Trois ans', 'freq_three_years' => 'Trois ans',
'military_time_help' => 'Affichage 24h', 'military_time_help' => 'Affichage 24h',
'click_here_capital' => 'Cliquez ici', 'click_here_capital' => 'Cliquez ici',
'marked_invoice_as_paid' => 'La facture a été marquée comme envoyée', 'marked_invoice_as_paid' => 'La facture a été marquée comme payée',
'marked_invoices_as_sent' => 'Les factures ont été marquées comme envoyées', 'marked_invoices_as_sent' => 'Les factures ont été marquées comme envoyées',
'marked_invoices_as_paid' => 'Les factures ont été marquées comme envoyées', 'marked_invoices_as_paid' => 'Les factures ont été marquées comme payées',
'activity_57' => 'Le système n\'a pas pu envoyer le courriel de la facture :invoice', 'activity_57' => 'Le système n\'a pas pu envoyer le courriel de la facture :invoice',
'custom_value3' => 'Valeur personnalisée 3', 'custom_value3' => 'Valeur personnalisée 3',
'custom_value4' => 'Valeur personnalisée 4', 'custom_value4' => 'Valeur personnalisée 4',
@ -5135,6 +5135,22 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'is_tax_exempt' => 'Exonéré de taxe', 'is_tax_exempt' => 'Exonéré de taxe',
'drop_files_here' => 'Déposez les fichiers ici', 'drop_files_here' => 'Déposez les fichiers ici',
'upload_files' => 'Téléverser les fichiers', 'upload_files' => 'Téléverser les fichiers',
'download_e_invoice' => 'Télécharger la facture électronique',
'triangular_tax_info' => 'Transactions intra-communautaire triangulaire',
'intracommunity_tax_info' => 'Livraison intra-communautaure sans taxe',
'reverse_tax_info' => 'Veuillez noter que cette provision est sujette à une charge renversée',
'currency_nicaraguan_cordoba' => 'Codoba nicaraguyen',
'public' => 'Public',
'private' => 'Privé',
'image' => 'Image',
'other' => 'Autre',
'linked_to' => 'Lié à',
'file_saved_in_path' => 'Ce fichier a été sauvegardé dans :path',
'unlinked_transactions' => ' :count transactions ont été déliées',
'unlinked_transaction' => 'La transactions a été déliée',
'view_dashboard_permission' => 'Autoriser l\'accès de l\'utilisateur au tableau de bord. Les données sont limitées aux permissions disponibles.',
'marked_sent_credits' => 'Les crédits envoyés ont été marqués',
); );
return $LANG; return $LANG;

File diff suppressed because it is too large Load Diff

View File

@ -2396,6 +2396,9 @@ $LANG = array(
'currency_cuban_peso' => 'Cuban Peso', 'currency_cuban_peso' => 'Cuban Peso',
'currency_bz_dollar' => 'דולר בליזי', 'currency_bz_dollar' => 'דולר בליזי',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!', 'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!',
'writing_a_review' => 'writing a review', 'writing_a_review' => 'writing a review',
@ -3331,9 +3334,9 @@ $LANG = array(
'freq_three_years' => 'שלוש שנים', 'freq_three_years' => 'שלוש שנים',
'military_time_help' => 'תצוגה של 24 שעות', 'military_time_help' => 'תצוגה של 24 שעות',
'click_here_capital' => 'לחץ כאן', 'click_here_capital' => 'לחץ כאן',
'marked_invoice_as_paid' => 'חשבונית סומנה כנשלחה בהצלחה', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'חשבוניות סומנו כנשלחה בהצלחה', 'marked_invoices_as_sent' => 'חשבוניות סומנו כנשלחה בהצלחה',
'marked_invoices_as_paid' => 'חשבוניות סומנו כנשלחה בהצלחה', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'שליחת חשבונית בדוא"ל נכשלה :invoice', 'activity_57' => 'שליחת חשבונית בדוא"ל נכשלה :invoice',
'custom_value3' => 'ערך מותאם אישית 3', 'custom_value3' => 'ערך מותאם אישית 3',
'custom_value4' => 'ערך מותאם אישית 4', 'custom_value4' => 'ערך מותאם אישית 4',
@ -4944,7 +4947,7 @@ $LANG = array(
'sync_from' => 'סנכרון מאת', 'sync_from' => 'סנכרון מאת',
'gateway_payment_text' => 'חשבוניות: :invoices עבור :amount עבור הלקוח :client', 'gateway_payment_text' => 'חשבוניות: :invoices עבור :amount עבור הלקוח :client',
'gateway_payment_text_no_invoice' => 'תשלום ללא חשבונית עבור סכום :amount עבור הלקוח :client', 'gateway_payment_text_no_invoice' => 'תשלום ללא חשבונית עבור סכום :amount עבור הלקוח :client',
'click_to_variables' => 'לקוח כאן כדי לראות את כל המשתנים.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'לשלוח ל', 'ship_to' => 'לשלוח ל',
'stripe_direct_debit_details' => 'נא להעביר לחשבון הבנק הנקוב לעיל.', 'stripe_direct_debit_details' => 'נא להעביר לחשבון הבנק הנקוב לעיל.',
'branch_name' => 'שם הסניף', 'branch_name' => 'שם הסניף',
@ -5106,8 +5109,49 @@ $LANG = array(
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2381,6 +2381,9 @@ adva :date',
'currency_cuban_peso' => 'Kubai peso', 'currency_cuban_peso' => 'Kubai peso',
'currency_bz_dollar' => 'Beliz-i dollár', 'currency_bz_dollar' => 'Beliz-i dollár',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'Segítség az értékeléshez', 'review_app_help' => 'Segítség az értékeléshez',
'writing_a_review' => 'Értékelés írása', 'writing_a_review' => 'Értékelés írása',
@ -3316,9 +3319,9 @@ adva :date',
'freq_three_years' => '3 év', 'freq_three_years' => '3 év',
'military_time_help' => 'Ha engedélyezve van, a rendszer a katonai időformátumot használja (óra:perc helyett óra:perc am/pm formátumban).', 'military_time_help' => 'Ha engedélyezve van, a rendszer a katonai időformátumot használja (óra:perc helyett óra:perc am/pm formátumban).',
'click_here_capital' => 'KATTINTSON IDE', 'click_here_capital' => 'KATTINTSON IDE',
'marked_invoice_as_paid' => 'Számla fizetettként jelölve', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Számlák elküldöttként jelölve', 'marked_invoices_as_sent' => 'Számlák elküldöttként jelölve',
'marked_invoices_as_paid' => 'Számlák fizetettként jelölve', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => '57. tevékenység', 'activity_57' => '57. tevékenység',
'custom_value3' => 'Egyéni érték 3', 'custom_value3' => 'Egyéni érték 3',
'custom_value4' => 'Egyéni érték 4', 'custom_value4' => 'Egyéni érték 4',
@ -4929,7 +4932,7 @@ adva :date',
'sync_from' => 'szinkronizálás forrásából', 'sync_from' => 'szinkronizálás forrásából',
'gateway_payment_text' => 'fizetési szöveg a fizetési átjárón keresztül', 'gateway_payment_text' => 'fizetési szöveg a fizetési átjárón keresztül',
'gateway_payment_text_no_invoice' => 'fizetési szöveg a fizetési átjárón keresztül (nincs számla)', 'gateway_payment_text_no_invoice' => 'fizetési szöveg a fizetési átjárón keresztül (nincs számla)',
'click_to_variables' => 'kattintson a változókhoz', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'szállítási cím', 'ship_to' => 'szállítási cím',
'stripe_direct_debit_details' => 'Stripe közvetlen terhelés részletei', 'stripe_direct_debit_details' => 'Stripe közvetlen terhelés részletei',
'branch_name' => 'fiók neve', 'branch_name' => 'fiók neve',
@ -5091,8 +5094,49 @@ adva :date',
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2389,6 +2389,9 @@ $LANG = array(
'currency_cuban_peso' => 'peso cubano', 'currency_cuban_peso' => 'peso cubano',
'currency_bz_dollar' => 'Dollaro BZ', 'currency_bz_dollar' => 'Dollaro BZ',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'Ci auguriamo che ti piaccia usare l&#39;app.<br/> Se prendessi in considerazione :link lo apprezzeremmo molto!', 'review_app_help' => 'Ci auguriamo che ti piaccia usare l&#39;app.<br/> Se prendessi in considerazione :link lo apprezzeremmo molto!',
'writing_a_review' => 'scrivendo una recensione', 'writing_a_review' => 'scrivendo una recensione',
@ -3324,9 +3327,9 @@ $LANG = array(
'freq_three_years' => 'Tre anni', 'freq_three_years' => 'Tre anni',
'military_time_help' => 'Formato 24 ore', 'military_time_help' => 'Formato 24 ore',
'click_here_capital' => 'Clicca qui', 'click_here_capital' => 'Clicca qui',
'marked_invoice_as_paid' => 'Fattura contrassegnata con successo come inviata', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Fatture contrassegnate con successo come inviate', 'marked_invoices_as_sent' => 'Fatture contrassegnate con successo come inviate',
'marked_invoices_as_paid' => 'Fatture contrassegnate con successo come inviate', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'Il sistema non è riuscito a inviare la fattura :invoice via e-mail', 'activity_57' => 'Il sistema non è riuscito a inviare la fattura :invoice via e-mail',
'custom_value3' => 'Valore Personalizzato 3', 'custom_value3' => 'Valore Personalizzato 3',
'custom_value4' => 'Valore Personalizzato 4', 'custom_value4' => 'Valore Personalizzato 4',
@ -4937,7 +4940,7 @@ $LANG = array(
'sync_from' => 'Sincronizza da', 'sync_from' => 'Sincronizza da',
'gateway_payment_text' => 'Fatture: :invoices per :amount per cliente :client', 'gateway_payment_text' => 'Fatture: :invoices per :amount per cliente :client',
'gateway_payment_text_no_invoice' => 'Pagamento senza fattura per importo :amount per cliente :client', 'gateway_payment_text_no_invoice' => 'Pagamento senza fattura per importo :amount per cliente :client',
'click_to_variables' => 'Cliente qui per vedere tutte le variabili.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Spedire a', 'ship_to' => 'Spedire a',
'stripe_direct_debit_details' => 'Si prega di trasferire sul conto bancario indicato sopra.', 'stripe_direct_debit_details' => 'Si prega di trasferire sul conto bancario indicato sopra.',
'branch_name' => 'Nome ramo', 'branch_name' => 'Nome ramo',
@ -5099,8 +5102,49 @@ $LANG = array(
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2377,6 +2377,9 @@ $LANG = array(
'currency_cuban_peso' => 'ប្រាក់ប៉េសូគុយបា', 'currency_cuban_peso' => 'ប្រាក់ប៉េសូគុយបា',
'currency_bz_dollar' => 'ដុល្លារ BZ', 'currency_bz_dollar' => 'ដុល្លារ BZ',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'យើងសង្ឃឹមថាអ្នករីករាយនឹងការប្រើប្រាស់កម្មវិធី។<br/> ប្រសិនបើអ្នកនឹងពិចារណា :link យើងនឹងកោតសរសើរវាយ៉ាងខ្លាំង!', 'review_app_help' => 'យើងសង្ឃឹមថាអ្នករីករាយនឹងការប្រើប្រាស់កម្មវិធី។<br/> ប្រសិនបើអ្នកនឹងពិចារណា :link យើងនឹងកោតសរសើរវាយ៉ាងខ្លាំង!',
'writing_a_review' => 'សរសេរការពិនិត្យឡើងវិញ', 'writing_a_review' => 'សរសេរការពិនិត្យឡើងវិញ',
@ -3312,9 +3315,9 @@ $LANG = array(
'freq_three_years' => 'បី​ឆ្នាំ', 'freq_three_years' => 'បី​ឆ្នាំ',
'military_time_help' => 'ការបង្ហាញ 24 ម៉ោង។', 'military_time_help' => 'ការបង្ហាញ 24 ម៉ោង។',
'click_here_capital' => 'ចុច​ទីនេះ', 'click_here_capital' => 'ចុច​ទីនេះ',
'marked_invoice_as_paid' => 'បានសម្គាល់វិក្កយបត្រដោយជោគជ័យថាបានផ្ញើ', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'បានសម្គាល់វិក្កយបត្រដោយជោគជ័យថាបានផ្ញើ', 'marked_invoices_as_sent' => 'បានសម្គាល់វិក្កយបត្រដោយជោគជ័យថាបានផ្ញើ',
'marked_invoices_as_paid' => 'បានសម្គាល់វិក្កយបត្រដោយជោគជ័យថាបានផ្ញើ', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'ប្រព័ន្ធបានបរាជ័យក្នុងការផ្ញើអ៊ីមែលវិក្កយបត្រ :invoice', 'activity_57' => 'ប្រព័ន្ធបានបរាជ័យក្នុងការផ្ញើអ៊ីមែលវិក្កយបត្រ :invoice',
'custom_value3' => 'តម្លៃផ្ទាល់ខ្លួន 3', 'custom_value3' => 'តម្លៃផ្ទាល់ខ្លួន 3',
'custom_value4' => 'តម្លៃផ្ទាល់ខ្លួន ៤', 'custom_value4' => 'តម្លៃផ្ទាល់ខ្លួន ៤',
@ -4925,7 +4928,7 @@ $LANG = array(
'sync_from' => 'ធ្វើសមកាលកម្មពី', 'sync_from' => 'ធ្វើសមកាលកម្មពី',
'gateway_payment_text' => 'វិក្កយបត្រ៖ :invoices សម្រាប់ :amount សម្រាប់អតិថិជន :client', 'gateway_payment_text' => 'វិក្កយបត្រ៖ :invoices សម្រាប់ :amount សម្រាប់អតិថិជន :client',
'gateway_payment_text_no_invoice' => 'ការទូទាត់ដោយគ្មានវិក្កយបត្រសម្រាប់ចំនួនទឹកប្រាក់ :amount សម្រាប់អតិថិជន :client', 'gateway_payment_text_no_invoice' => 'ការទូទាត់ដោយគ្មានវិក្កយបត្រសម្រាប់ចំនួនទឹកប្រាក់ :amount សម្រាប់អតិថិជន :client',
'click_to_variables' => 'អតិថិជននៅទីនេះដើម្បីមើលអថេរទាំងអស់។', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'ផ្ញើ​ទៅ', 'ship_to' => 'ផ្ញើ​ទៅ',
'stripe_direct_debit_details' => 'សូមផ្ទេរទៅគណនីធនាគារដែលបានតែងតាំងខាងលើ។', 'stripe_direct_debit_details' => 'សូមផ្ទេរទៅគណនីធនាគារដែលបានតែងតាំងខាងលើ។',
'branch_name' => 'ឈ្មោះសាខា', 'branch_name' => 'ឈ្មោះសាខា',
@ -5087,8 +5090,49 @@ $LANG = array(
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -33,8 +33,8 @@ $LANG = array(
'po_number_short' => 'Ordre #', 'po_number_short' => 'Ordre #',
'frequency_id' => 'Frekvens', 'frequency_id' => 'Frekvens',
'discount' => 'Rabatter:', 'discount' => 'Rabatter:',
'taxes' => 'Skatter', 'taxes' => 'Mva.',
'tax' => 'Skatt', 'tax' => 'Mva.',
'item' => 'Produkt', 'item' => 'Produkt',
'description' => 'Beskrivelse', 'description' => 'Beskrivelse',
'unit_cost' => 'Stykkpris', 'unit_cost' => 'Stykkpris',
@ -47,7 +47,7 @@ $LANG = array(
'invoice_design_id' => 'Design', 'invoice_design_id' => 'Design',
'terms' => 'Vilkår', 'terms' => 'Vilkår',
'your_invoice' => 'Din faktura', 'your_invoice' => 'Din faktura',
'remove_contact' => 'Fjern kontakt', 'remove_contact' => 'Slett kontakt',
'add_contact' => 'Legg til kontakt', 'add_contact' => 'Legg til kontakt',
'create_new_client' => 'Opprett ny kunde', 'create_new_client' => 'Opprett ny kunde',
'edit_client_details' => 'Endre kundedetaljer', 'edit_client_details' => 'Endre kundedetaljer',
@ -253,7 +253,7 @@ $LANG = array(
'notification_invoice_paid' => 'En betaling pålydende :amount ble gjort av :client for faktura :invoice.', 'notification_invoice_paid' => 'En betaling pålydende :amount ble gjort av :client for faktura :invoice.',
'notification_invoice_sent' => 'E-post har blitt sendt til :client - Faktura :invoice pålydende :amount.', 'notification_invoice_sent' => 'E-post har blitt sendt til :client - Faktura :invoice pålydende :amount.',
'notification_invoice_viewed' => ':client har nå sett faktura :invoice pålydende :amount.', 'notification_invoice_viewed' => ':client har nå sett faktura :invoice pålydende :amount.',
'stripe_payment_text' => 'Invoice :invoicenumber for :amount for client :client', 'stripe_payment_text' => 'Faktura :invoice nummer for :amountfor kunde :client',
'stripe_payment_text_without_invoice' => 'Payment with no invoice for amount :amount for client :client', 'stripe_payment_text_without_invoice' => 'Payment with no invoice for amount :amount for client :client',
'reset_password' => 'Du kan nullstille ditt passord ved å besøke følgende lenke:', 'reset_password' => 'Du kan nullstille ditt passord ved å besøke følgende lenke:',
'secure_payment' => 'Sikker betaling', 'secure_payment' => 'Sikker betaling',
@ -754,7 +754,7 @@ $LANG = array(
'activity_7' => ':contact har sett fakturaen :invoice for :client', 'activity_7' => ':contact har sett fakturaen :invoice for :client',
'activity_8' => ':user arkiverte faktura :invoice', 'activity_8' => ':user arkiverte faktura :invoice',
'activity_9' => ':user slettet faktura :invoice', 'activity_9' => ':user slettet faktura :invoice',
'activity_10' => ':user la inn betaling :payment på :payment_amount', 'activity_10' => ':user entered payment :payment for :payment_amount on invoice :invoice for :client',
'activity_11' => ':user oppdaterte betaling :payment', 'activity_11' => ':user oppdaterte betaling :payment',
'activity_12' => ':user arkiverte betaling :payment', 'activity_12' => ':user arkiverte betaling :payment',
'activity_13' => ':user slettet betaling :payment', 'activity_13' => ':user slettet betaling :payment',
@ -1067,7 +1067,7 @@ $LANG = array(
'invoice_item_fields' => 'Invoice Item Fields', 'invoice_item_fields' => 'Invoice Item Fields',
'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.',
'recurring_invoice_number' => 'Gjentakende nummer', 'recurring_invoice_number' => 'Gjentakende nummer',
'recurring_invoice_number_prefix_help' => 'Specify a prefix to be added to the invoice number for recurring invoices.', 'recurring_invoice_number_prefix_help' => 'Angi et prefiks som skal legges til fakturanummeret for gjentagende fakturaer.',
// Client Passwords // Client Passwords
'enable_portal_password' => 'Passord-beskytt fakturaer', 'enable_portal_password' => 'Passord-beskytt fakturaer',
@ -1249,7 +1249,7 @@ $LANG = array(
'country_not_supported' => 'Landet er ikke støttet.', 'country_not_supported' => 'Landet er ikke støttet.',
'invalid_routing_number' => 'Rutingsnummeret er ikke gyldig.', 'invalid_routing_number' => 'Rutingsnummeret er ikke gyldig.',
'invalid_account_number' => 'Kontonummeret er ikke gyldig.', 'invalid_account_number' => 'Kontonummeret er ikke gyldig.',
'account_number_mismatch' => 'The account numbers do not match.', 'account_number_mismatch' => 'Kontonumrene stemmer ikke overens.',
'missing_account_holder_type' => 'Please select an individual or company account.', 'missing_account_holder_type' => 'Please select an individual or company account.',
'missing_account_holder_name' => 'Please enter the account holder\'s name.', 'missing_account_holder_name' => 'Please enter the account holder\'s name.',
'routing_number' => 'Routing Number', 'routing_number' => 'Routing Number',
@ -1806,7 +1806,7 @@ $LANG = array(
'limit_import_rows' => 'Data needs to be imported in batches of :count rows or less', 'limit_import_rows' => 'Data needs to be imported in batches of :count rows or less',
'error_title' => 'Noe gikk galt', 'error_title' => 'Noe gikk galt',
'error_contact_text' => 'If you\'d like help please email us at :mailaddress', 'error_contact_text' => 'If you\'d like help please email us at :mailaddress',
'no_undo' => 'Warning: this can\'t be undone.', 'no_undo' => 'Advarsel: Dette kan ikke angres',
'no_contact_selected' => 'Vennligst velg en kontakt', 'no_contact_selected' => 'Vennligst velg en kontakt',
'no_client_selected' => 'Vennligst velg en klient', 'no_client_selected' => 'Vennligst velg en klient',
@ -2000,6 +2000,7 @@ $LANG = array(
'current_quarter' => 'Current Quarter', 'current_quarter' => 'Current Quarter',
'last_quarter' => 'Last Quarter', 'last_quarter' => 'Last Quarter',
'last_year' => 'Siste år', 'last_year' => 'Siste år',
'all_time' => 'All Time',
'custom_range' => 'Tilpass Utvalg', 'custom_range' => 'Tilpass Utvalg',
'url' => 'URL', 'url' => 'URL',
'debug' => 'Debug', 'debug' => 'Debug',
@ -2259,7 +2260,7 @@ $LANG = array(
'restore_recurring_expense' => 'Restore Recurring Expense', 'restore_recurring_expense' => 'Restore Recurring Expense',
'restored_recurring_expense' => 'Successfully restored recurring expense', 'restored_recurring_expense' => 'Successfully restored recurring expense',
'delete_recurring_expense' => 'Delete Recurring Expense', 'delete_recurring_expense' => 'Delete Recurring Expense',
'deleted_recurring_expense' => 'Successfully deleted project', 'deleted_recurring_expense' => 'Successfully deleted recurring expense',
'view_recurring_expense' => 'Vis Gjentakende Utgift', 'view_recurring_expense' => 'Vis Gjentakende Utgift',
'taxes_and_fees' => 'Skatt og avgifter', 'taxes_and_fees' => 'Skatt og avgifter',
'import_failed' => 'Import Failed', 'import_failed' => 'Import Failed',
@ -2403,6 +2404,9 @@ $LANG = array(
'currency_cuban_peso' => 'Cuban Peso', 'currency_cuban_peso' => 'Cuban Peso',
'currency_bz_dollar' => 'BZ Dollar', 'currency_bz_dollar' => 'BZ Dollar',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!', 'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!',
'writing_a_review' => 'skriv tilbakemelding', 'writing_a_review' => 'skriv tilbakemelding',
@ -2514,8 +2518,8 @@ $LANG = array(
'partial_due_date' => 'Partial Due Date', 'partial_due_date' => 'Partial Due Date',
'task_fields' => 'Task Fields', 'task_fields' => 'Task Fields',
'product_fields_help' => 'Drag and drop fields to change their order', 'product_fields_help' => 'Drag and drop fields to change their order',
'custom_value1' => 'Custom Value', 'custom_value1' => 'Custom Value 1',
'custom_value2' => 'Custom Value', 'custom_value2' => 'Custom Value 2',
'enable_two_factor' => 'To-faktor-autentisering', 'enable_two_factor' => 'To-faktor-autentisering',
'enable_two_factor_help' => 'Bruk telefonen til å bekrefte identiteten din når du logger inn', 'enable_two_factor_help' => 'Bruk telefonen til å bekrefte identiteten din når du logger inn',
'two_factor_setup' => 'Two-Factor Setup', 'two_factor_setup' => 'Two-Factor Setup',
@ -2639,7 +2643,7 @@ $LANG = array(
'convert_products' => 'Convert Products', 'convert_products' => 'Convert Products',
'convert_products_help' => 'Automatically convert product prices to the client\'s currency', 'convert_products_help' => 'Automatically convert product prices to the client\'s currency',
'improve_client_portal_link' => 'Set a subdomain to shorten the client portal link.', 'improve_client_portal_link' => 'Set a subdomain to shorten the client portal link.',
'budgeted_hours' => 'Budgeted Hours', 'budgeted_hours' => 'Utbetalte timer',
'progress' => 'Progress', 'progress' => 'Progress',
'view_project' => 'Vis Prosjekt', 'view_project' => 'Vis Prosjekt',
'summary' => 'Summary', 'summary' => 'Summary',
@ -2855,7 +2859,7 @@ $LANG = array(
'please_enter_your_url' => 'Please enter your URL', 'please_enter_your_url' => 'Please enter your URL',
'please_enter_a_product_key' => 'Please enter a product key', 'please_enter_a_product_key' => 'Please enter a product key',
'an_error_occurred' => 'An error occurred', 'an_error_occurred' => 'An error occurred',
'overview' => 'Overview', 'overview' => 'Oversikt',
'copied_to_clipboard' => 'Copied :value to the clipboard', 'copied_to_clipboard' => 'Copied :value to the clipboard',
'error' => 'Error', 'error' => 'Error',
'could_not_launch' => 'Could not launch', 'could_not_launch' => 'Could not launch',
@ -3260,7 +3264,7 @@ $LANG = array(
'group2' => 'Custom Group 2', 'group2' => 'Custom Group 2',
'group3' => 'Custom Group 3', 'group3' => 'Custom Group 3',
'group4' => 'Custom Group 4', 'group4' => 'Custom Group 4',
'number' => 'Number', 'number' => 'Nummer',
'count' => 'Count', 'count' => 'Count',
'is_active' => 'Is Active', 'is_active' => 'Is Active',
'contact_last_login' => 'Contact Last Login', 'contact_last_login' => 'Contact Last Login',
@ -3338,9 +3342,9 @@ $LANG = array(
'freq_three_years' => 'Three Years', 'freq_three_years' => 'Three Years',
'military_time_help' => '24 Hour Display', 'military_time_help' => '24 Hour Display',
'click_here_capital' => 'Click here', 'click_here_capital' => 'Click here',
'marked_invoice_as_paid' => 'Successfully marked invoice as sent', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Successfully marked invoices as sent', 'marked_invoices_as_sent' => 'Successfully marked invoices as sent',
'marked_invoices_as_paid' => 'Successfully marked invoices as sent', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'System failed to email invoice :invoice', 'activity_57' => 'System failed to email invoice :invoice',
'custom_value3' => 'Custom Value 3', 'custom_value3' => 'Custom Value 3',
'custom_value4' => 'Custom Value 4', 'custom_value4' => 'Custom Value 4',
@ -3501,23 +3505,23 @@ $LANG = array(
'hide_menu' => 'Hide Menu', 'hide_menu' => 'Hide Menu',
'show_menu' => 'Show Menu', 'show_menu' => 'Show Menu',
'partially_refunded' => 'Partially Refunded', 'partially_refunded' => 'Partially Refunded',
'search_documents' => 'Search Documents', 'search_documents' => 'Søk i Dokumenter',
'search_designs' => 'Search Designs', 'search_designs' => 'Søk i Designs',
'search_invoices' => 'Search Invoices', 'search_invoices' => 'Søk i Fakturaer',
'search_clients' => 'Search Clients', 'search_clients' => 'Søk i Kunder',
'search_products' => 'Search Products', 'search_products' => 'Søk i Produkter',
'search_quotes' => 'Search Quotes', 'search_quotes' => 'Søk i Pristilbuder',
'search_credits' => 'Search Credits', 'search_credits' => 'Search Credits',
'search_vendors' => 'Search Vendors', 'search_vendors' => 'Søk i Leverandører',
'search_users' => 'Search Users', 'search_users' => 'Søk i Brukere',
'search_tax_rates' => 'Search Tax Rates', 'search_tax_rates' => 'Søk i Mva. Satser',
'search_tasks' => 'Search Tasks', 'search_tasks' => 'Søk i Oppgaver',
'search_settings' => 'Search Settings', 'search_settings' => 'Søk i Instillinger',
'search_projects' => 'Search Projects', 'search_projects' => 'Søk i Prosjekter',
'search_expenses' => 'Search Expenses', 'search_expenses' => 'Søk i Utgifter',
'search_payments' => 'Search Payments', 'search_payments' => 'Søk i Betalinger',
'search_groups' => 'Search Groups', 'search_groups' => 'Søk i Grupper',
'search_company' => 'Search Company', 'search_company' => 'Søk i Selskaper',
'cancelled_invoice' => 'Successfully cancelled invoice', 'cancelled_invoice' => 'Successfully cancelled invoice',
'cancelled_invoices' => 'Successfully cancelled invoices', 'cancelled_invoices' => 'Successfully cancelled invoices',
'reversed_invoice' => 'Successfully reversed invoice', 'reversed_invoice' => 'Successfully reversed invoice',
@ -3862,7 +3866,7 @@ $LANG = array(
'notification_credit_viewed' => 'The following client :client viewed Credit :credit for :amount.', 'notification_credit_viewed' => 'The following client :client viewed Credit :credit for :amount.',
'reset_password_text' => 'Enter your email to reset your password.', 'reset_password_text' => 'Enter your email to reset your password.',
'password_reset' => 'Password reset', 'password_reset' => 'Password reset',
'account_login_text' => 'Welcome back! Glad to see you.', 'account_login_text' => 'Welcome! Glad to see you.',
'request_cancellation' => 'Request cancellation', 'request_cancellation' => 'Request cancellation',
'delete_payment_method' => 'Delete Payment Method', 'delete_payment_method' => 'Delete Payment Method',
'about_to_delete_payment_method' => 'You are about to delete the payment method.', 'about_to_delete_payment_method' => 'You are about to delete the payment method.',
@ -3976,7 +3980,7 @@ $LANG = array(
'add_payment_method_first' => 'add payment method', 'add_payment_method_first' => 'add payment method',
'no_items_selected' => 'No items selected.', 'no_items_selected' => 'No items selected.',
'payment_due' => 'Payment due', 'payment_due' => 'Payment due',
'account_balance' => 'Account balance', 'account_balance' => 'Account Balance',
'thanks' => 'Thanks', 'thanks' => 'Thanks',
'minimum_required_payment' => 'Minimum required payment is :amount', 'minimum_required_payment' => 'Minimum required payment is :amount',
'under_payments_disabled' => 'Company doesn\'t support under payments.', 'under_payments_disabled' => 'Company doesn\'t support under payments.',
@ -4460,7 +4464,7 @@ $LANG = array(
'wait_for_loading' => 'Data loading - please wait for it to complete', 'wait_for_loading' => 'Data loading - please wait for it to complete',
'wait_for_saving' => 'Data saving - please wait for it to complete', 'wait_for_saving' => 'Data saving - please wait for it to complete',
'html_preview_warning' => 'Note: changes made here are only previewed, they must be applied in the tabs above to be saved', 'html_preview_warning' => 'Note: changes made here are only previewed, they must be applied in the tabs above to be saved',
'remaining' => 'Remaining', 'remaining' => 'Gjenstår',
'invoice_paid' => 'Invoice Paid', 'invoice_paid' => 'Invoice Paid',
'activity_120' => ':user created recurring expense :recurring_expense', 'activity_120' => ':user created recurring expense :recurring_expense',
'activity_121' => ':user updated recurring expense :recurring_expense', 'activity_121' => ':user updated recurring expense :recurring_expense',
@ -4907,6 +4911,7 @@ $LANG = array(
'all_clients' => 'All Clients', 'all_clients' => 'All Clients',
'show_aging_table' => 'Show Aging Table', 'show_aging_table' => 'Show Aging Table',
'show_payments_table' => 'Show Payments Table', 'show_payments_table' => 'Show Payments Table',
'only_clients_with_invoices' => 'Only Clients with Invoices',
'email_statement' => 'Email Statement', 'email_statement' => 'Email Statement',
'once' => 'Once', 'once' => 'Once',
'schedules' => 'Schedules', 'schedules' => 'Schedules',
@ -4950,7 +4955,7 @@ $LANG = array(
'sync_from' => 'Sync From', 'sync_from' => 'Sync From',
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client', 'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client', 'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
'click_to_variables' => 'Client here to see all variables.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Ship to', 'ship_to' => 'Ship to',
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.', 'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
'branch_name' => 'Branch Name', 'branch_name' => 'Branch Name',
@ -5040,7 +5045,7 @@ $LANG = array(
'link_expenses' => 'Link Expenses', 'link_expenses' => 'Link Expenses',
'converted_client_balance' => 'Converted Client Balance', 'converted_client_balance' => 'Converted Client Balance',
'converted_payment_balance' => 'Converted Payment Balance', 'converted_payment_balance' => 'Converted Payment Balance',
'total_hours' => 'Total Hours', 'total_hours' => 'Totalt antall timer',
'date_picker_hint' => 'Use +days to set the date in the future', 'date_picker_hint' => 'Use +days to set the date in the future',
'app_help_link' => 'More information ', 'app_help_link' => 'More information ',
'here' => 'here', 'here' => 'here',
@ -5095,8 +5100,66 @@ $LANG = array(
'upload_certificate' => 'Upload Certificate', 'upload_certificate' => 'Upload Certificate',
'certificate_passphrase' => 'Certificate Passphrase', 'certificate_passphrase' => 'Certificate Passphrase',
'valid_vat_number' => 'Valid VAT Number', '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',
'lang_Hungarian' => 'Hungarian',
'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',
'buy_price' => 'Buy Price',
'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2395,6 +2395,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'currency_cuban_peso' => 'Cubaanse Peso', 'currency_cuban_peso' => 'Cubaanse Peso',
'currency_bz_dollar' => 'BZ Dollar', 'currency_bz_dollar' => 'BZ Dollar',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'We hopen dat je het leuk vindt om de app te gebruiken.<br/> Als je zou overwegen :link, zouden we dat zeer op prijs stellen!', 'review_app_help' => 'We hopen dat je het leuk vindt om de app te gebruiken.<br/> Als je zou overwegen :link, zouden we dat zeer op prijs stellen!',
'writing_a_review' => 'een recensie schrijven', 'writing_a_review' => 'een recensie schrijven',
@ -3330,9 +3333,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
'freq_three_years' => 'Drie jaar', 'freq_three_years' => 'Drie jaar',
'military_time_help' => '24-uurs weergave', 'military_time_help' => '24-uurs weergave',
'click_here_capital' => 'Klik hier', 'click_here_capital' => 'Klik hier',
'marked_invoice_as_paid' => 'Factuur succesvol gemarkeerd als verzonden', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Facturen gemarkeerd als verzonden', 'marked_invoices_as_sent' => 'Facturen gemarkeerd als verzonden',
'marked_invoices_as_paid' => 'Facturen succesvol gemarkeerd als verzonden', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'Systeem kon de factuur niet mailen :invoice', 'activity_57' => 'Systeem kon de factuur niet mailen :invoice',
'custom_value3' => 'Aangepaste waarde 3', 'custom_value3' => 'Aangepaste waarde 3',
'custom_value4' => 'Aangepaste waarde 4', 'custom_value4' => 'Aangepaste waarde 4',
@ -4946,7 +4949,7 @@ Email: :email<b><br><b>',
'sync_from' => 'Synchroniseren van', 'sync_from' => 'Synchroniseren van',
'gateway_payment_text' => 'Facturen: :invoices voor :amount voor opdrachtgever :client', 'gateway_payment_text' => 'Facturen: :invoices voor :amount voor opdrachtgever :client',
'gateway_payment_text_no_invoice' => 'Betaling zonder factuur voor bedrag :amount voor opdrachtgever :client', 'gateway_payment_text_no_invoice' => 'Betaling zonder factuur voor bedrag :amount voor opdrachtgever :client',
'click_to_variables' => 'Client hier om alle variabelen te zien.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Verzend naar', 'ship_to' => 'Verzend naar',
'stripe_direct_debit_details' => 'Gelieve over te maken op de genoemde bankrekening hierboven.', 'stripe_direct_debit_details' => 'Gelieve over te maken op de genoemde bankrekening hierboven.',
'branch_name' => 'Filiaal naam', 'branch_name' => 'Filiaal naam',
@ -5108,8 +5111,49 @@ Email: :email<b><br><b>',
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2398,6 +2398,9 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
'currency_cuban_peso' => 'Peso Cubano', 'currency_cuban_peso' => 'Peso Cubano',
'currency_bz_dollar' => 'BZ Dólar', 'currency_bz_dollar' => 'BZ Dólar',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'Esperamos que esteja aproveitando o app. <br/>Se você considerar :link agradeceríamos bastante!', 'review_app_help' => 'Esperamos que esteja aproveitando o app. <br/>Se você considerar :link agradeceríamos bastante!',
'writing_a_review' => 'Escrevendo uma avaliação', 'writing_a_review' => 'Escrevendo uma avaliação',
@ -3333,9 +3336,9 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
'freq_three_years' => 'Três Anos', 'freq_three_years' => 'Três Anos',
'military_time_help' => 'Formato de Hora 24h', 'military_time_help' => 'Formato de Hora 24h',
'click_here_capital' => 'Clique aqui', 'click_here_capital' => 'Clique aqui',
'marked_invoice_as_paid' => 'Sucesso! A fatura foi marcada como enviada.', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Faturas marcadas como enviadas com sucesso', 'marked_invoices_as_sent' => 'Faturas marcadas como enviadas com sucesso',
'marked_invoices_as_paid' => 'Sucesso! As faturas foram marcadas como enviada.', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'O sistema falhou ao enviar a fatura :invoice', 'activity_57' => 'O sistema falhou ao enviar a fatura :invoice',
'custom_value3' => 'Valor Personalizado 3', 'custom_value3' => 'Valor Personalizado 3',
'custom_value4' => 'Valor Personalizado 4', 'custom_value4' => 'Valor Personalizado 4',
@ -4946,7 +4949,7 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
'sync_from' => 'Sync From', 'sync_from' => 'Sync From',
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client', 'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client', 'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
'click_to_variables' => 'Client here to see all variables.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Ship to', 'ship_to' => 'Ship to',
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.', 'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
'branch_name' => 'Branch Name', 'branch_name' => 'Branch Name',
@ -5118,8 +5121,39 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
'income' => 'Income', 'income' => 'Income',
'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.', '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' => 'Vendor Phone', 'vendor_phone' => 'Vendor Phone',
); 'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

View File

@ -2399,6 +2399,9 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific
'currency_cuban_peso' => 'Cuban Peso', 'currency_cuban_peso' => 'Cuban Peso',
'currency_bz_dollar' => 'BZ Dólar', 'currency_bz_dollar' => 'BZ Dólar',
'currency_libyan_dinar' => 'Libyan Dinar',
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
'review_app_help' => 'Esperamos que esteja a gostar da aplicação. <br/>Se eventualmente considerar :link agradecíamos muito!', 'review_app_help' => 'Esperamos que esteja a gostar da aplicação. <br/>Se eventualmente considerar :link agradecíamos muito!',
'writing_a_review' => 'escrever uma avaliação', 'writing_a_review' => 'escrever uma avaliação',
@ -3335,9 +3338,9 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem
'freq_three_years' => 'Três Anos', 'freq_three_years' => 'Três Anos',
'military_time_help' => 'Formato de Hora 24h', 'military_time_help' => 'Formato de Hora 24h',
'click_here_capital' => 'Clique aqui', 'click_here_capital' => 'Clique aqui',
'marked_invoice_as_paid' => 'Excelente! A nota de pagamento foi marcada como enviada.', 'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
'marked_invoices_as_sent' => 'Excelente! As notas de pagamento foram marcadas como enviada.', 'marked_invoices_as_sent' => 'Excelente! As notas de pagamento foram marcadas como enviada.',
'marked_invoices_as_paid' => 'Excelente! As notas de pagamento foram marcadas como enviada.', 'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
'activity_57' => 'O sistema falhou ao enviar a nota de pagamento :invoice', 'activity_57' => 'O sistema falhou ao enviar a nota de pagamento :invoice',
'custom_value3' => 'Valor Personalizado 3', 'custom_value3' => 'Valor Personalizado 3',
'custom_value4' => 'Valor Personalizado 4', 'custom_value4' => 'Valor Personalizado 4',
@ -4949,7 +4952,7 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.',
'sync_from' => 'Sincronizar de', 'sync_from' => 'Sincronizar de',
'gateway_payment_text' => 'Faturas: :invoices para :amount para cliente :client', 'gateway_payment_text' => 'Faturas: :invoices para :amount para cliente :client',
'gateway_payment_text_no_invoice' => 'Pagamento sem fatura no valor :amount para cliente :client', 'gateway_payment_text_no_invoice' => 'Pagamento sem fatura no valor :amount para cliente :client',
'click_to_variables' => 'Cliente aqui para ver todas as variáveis.', 'click_to_variables' => 'Click here to see all variables.',
'ship_to' => 'Enviar para', 'ship_to' => 'Enviar para',
'stripe_direct_debit_details' => 'Por favor, transfira para a conta bancária indicada acima.', 'stripe_direct_debit_details' => 'Por favor, transfira para a conta bancária indicada acima.',
'branch_name' => 'Nome da filial', 'branch_name' => 'Nome da filial',
@ -5111,8 +5114,49 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.',
'item_tax_rate2' => 'Item Tax Rate 2', 'item_tax_rate2' => 'Item Tax Rate 2',
'item_tax_rate3' => 'Item Tax Rate 3', 'item_tax_rate3' => 'Item Tax Rate 3',
'buy_price' => 'Buy Price', 'buy_price' => 'Buy Price',
); 'country_Macedonia' => 'Macedonia',
'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',
'lang_French - Swiss' => 'French - Swiss',
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
'income' => 'Income',
'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' => 'Vendor Phone',
'mercado_pago' => 'Mercado Pago',
'mybank' => 'MyBank',
'paypal_paylater' => 'Pay in 4',
'paid_date' => 'Paid Date',
'district' => 'District',
'region' => 'Region',
'county' => 'County',
'tax_details' => 'Tax Details',
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
'default_payment_type' => 'Default Payment Type',
'number_precision' => 'Number precision',
'number_precision_help' => 'Controls the number of decimals supported in the interface',
'is_tax_exempt' => 'Tax Exempt',
'drop_files_here' => 'Drop files here',
'upload_files' => 'Upload Files',
'download_e_invoice' => 'Download E-Invoice',
'triangular_tax_info' => 'Intra-community triangular transaction',
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
'public' => 'Public',
'private' => 'Private',
'image' => 'Image',
'other' => 'Other',
'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',
);
return $LANG; return $LANG;

Some files were not shown because too many files have changed in this diff Show More