diff --git a/app/DataProviders/CAProvinces.php b/app/DataProviders/CAProvinces.php index 251f6e7c92..6e19b1d74f 100644 --- a/app/DataProviders/CAProvinces.php +++ b/app/DataProviders/CAProvinces.php @@ -1,4 +1,13 @@ user()->client; - + return $this->render('plan.trial', $data); } @@ -88,6 +88,8 @@ class NinjaPlanController extends Controller { $trial_started = "Trial Started @ ".now()->format('Y-m-d H:i:s'); + auth()->guard('contact')->user()->fill($request->only(['first_name','last_name']))->save(); + $client = auth()->guard('contact')->user()->client; $client->private_notes = $trial_started; $client->fill($request->all()); diff --git a/app/Http/Controllers/VendorPortal/VendorContactController.php b/app/Http/Controllers/VendorPortal/VendorContactController.php index d0d8110fe4..5efe2f8611 100644 --- a/app/Http/Controllers/VendorPortal/VendorContactController.php +++ b/app/Http/Controllers/VendorPortal/VendorContactController.php @@ -14,7 +14,7 @@ namespace App\Http\Controllers\VendorPortal; use App\Http\Controllers\Controller; use App\Models\VendorContact; use App\Utils\Traits\MakesHash; -use App\Utils\TranslationHelper; +use Illuminate\Http\Request; class VendorContactController extends Controller { @@ -58,14 +58,14 @@ class VendorContactController extends Controller 'settings' => $vendor_contact->vendor->company->settings, 'company' => $vendor_contact->vendor->company, 'sidebar' => $this->sidebarMenu(), - 'countries' => TranslationHelper::getCountries(), + 'countries' => app('countries'), ]); } - public function update(VendorContact $vendor_contact) + public function update(Request $request, VendorContact $vendor_contact) { - $vendor_contact->fill(request()->all()); - $vendor_contact->vendor->fill(request()->all()); + $vendor_contact->fill($request->all()); + $vendor_contact->vendor->fill($request->all()); $vendor_contact->push(); return back()->withSuccess(ctrans('texts.profile_updated_successfully')); @@ -76,16 +76,10 @@ class VendorContactController extends Controller $enabled_modules = auth()->guard('vendor')->user()->company->enabled_modules; $data = []; - // TODO: Enable dashboard once it's completed. - // $this->settings->enable_client_portal_dashboard - // $data[] = [ 'title' => ctrans('texts.dashboard'), 'url' => 'client.dashboard', 'icon' => 'activity']; - if (self::MODULE_PURCHASE_ORDERS & $enabled_modules) { $data[] = ['title' => ctrans('texts.purchase_orders'), 'url' => 'vendor.purchase_orders.index', 'icon' => 'file-text']; } - // $data[] = ['title' => ctrans('texts.documents'), 'url' => 'client.documents.index', 'icon' => 'download']; - return $data; } } diff --git a/app/Http/Middleware/ContactRegister.php b/app/Http/Middleware/ContactRegister.php index edef524d5b..2ae0c73edf 100644 --- a/app/Http/Middleware/ContactRegister.php +++ b/app/Http/Middleware/ContactRegister.php @@ -79,7 +79,7 @@ class ContactRegister // As a fallback for self-hosted, it will use default company in the system // if key isn't provided in the url. if (! $request->route()->parameter('company_key') && Ninja::isSelfHost()) { - $company = Account::query()->first()->default_company; + $company = Account::query()->first()->default_company ?? Account::query()->first()->companies->first(); if (! $company->client_can_register) { abort(400, 'Registration disabled'); diff --git a/app/Http/Middleware/ThrottleRequestsWithPredis.php b/app/Http/Middleware/ThrottleRequestsWithPredis.php index 30388163d1..6d7cad13fb 100644 --- a/app/Http/Middleware/ThrottleRequestsWithPredis.php +++ b/app/Http/Middleware/ThrottleRequestsWithPredis.php @@ -32,19 +32,15 @@ class ThrottleRequestsWithPredis extends \Illuminate\Routing\Middleware\Throttle /** * Create a new request throttler. - * - * @param \Illuminate\Cache\RateLimiter $limiter - * @param \Illuminate\Contracts\Redis\Factory $redis * @return void */ + + /** @phpstan-ignore-next-line */ public function __construct(RateLimiter $limiter, Redis $redis) { parent::__construct($limiter); - + /** @phpstan-ignore-next-line */ $this->redis = \Illuminate\Support\Facades\Redis::connection('sentinel-cache'); - - // $this->redis = $redis; - } /** @@ -126,7 +122,6 @@ class ThrottleRequestsWithPredis extends \Illuminate\Routing\Middleware\Throttle /** * Get the Redis connection that should be used for throttling. * - * @return \Illuminate\Redis\Connections\Connection */ protected function getRedisConnection() { diff --git a/app/Http/ViewComposers/Components/Rotessa/AccountComponent.php b/app/Http/ViewComposers/Components/Rotessa/AccountComponent.php index c7702b4e66..61b7538c8c 100644 --- a/app/Http/ViewComposers/Components/Rotessa/AccountComponent.php +++ b/app/Http/ViewComposers/Components/Rotessa/AccountComponent.php @@ -1,4 +1,13 @@ sidebarMenu(); $data['header'] = []; $data['footer'] = []; - $data['countries'] = TranslationHelper::getCountries(); + $data['countries'] = app('countries'); $data['company'] = auth()->guard('contact')->user()->company; $data['client'] = auth()->guard('contact')->user()->client; $data['settings'] = $this->settings; - $data['currencies'] = TranslationHelper::getCurrencies(); + $data['currencies'] = app('currencies'); $data['contact'] = auth()->guard('contact')->user(); $data['multiple_contacts'] = session()->get('multiple_contacts') ?: collect(); @@ -136,11 +136,11 @@ class PortalComposer $data[] = ['title' => ctrans('texts.statement'), 'url' => 'client.statement', 'icon' => 'activity']; - if (Ninja::isHosted() && auth()->guard('contact')->user()->company->id == config('ninja.ninja_default_company_id')) { + // if (Ninja::isHosted() && auth()->guard('contact')->user()->company->id == config('ninja.ninja_default_company_id')) { $data[] = ['title' => ctrans('texts.plan'), 'url' => 'client.plan', 'icon' => 'credit-card']; - } else { + // } else { $data[] = ['title' => ctrans('texts.subscriptions'), 'url' => 'client.subscriptions.index', 'icon' => 'calendar']; - } + // } if (auth()->guard('contact')->user()->client->getSetting('client_initiated_payments')) { $data[] = ['title' => ctrans('texts.pre_payment'), 'url' => 'client.pre_payments.index', 'icon' => 'dollar-sign']; diff --git a/app/Http/ViewComposers/RotessaComposer.php b/app/Http/ViewComposers/RotessaComposer.php index 493d955267..6fea878524 100644 --- a/app/Http/ViewComposers/RotessaComposer.php +++ b/app/Http/ViewComposers/RotessaComposer.php @@ -1,4 +1,13 @@ with('states', $states); }); -// CAProvinces View Composer View::composer(['*.rotessa.components.address','*.rotessa.components.banks.CA.bank','*.rotessa.components.dropdowns.country.CA'], function ($view) { $provinces = CAProvinces::get(); $view->with('provinces', $provinces); diff --git a/app/Livewire/BillingPortalPurchase.php b/app/Livewire/BillingPortalPurchase.php index 079a36325e..ea37099bb5 100644 --- a/app/Livewire/BillingPortalPurchase.php +++ b/app/Livewire/BillingPortalPurchase.php @@ -356,15 +356,14 @@ class BillingPortalPurchase extends Component $this->methods = $contact->client->service()->getPaymentMethods($this->price); - foreach($this->methods as $method){ - - if($method['is_paypal'] == '1' && !$this->steps['check_rff']){ - $this->rff(); - break; - } - - } + $method_values = array_column($this->methods, 'is_paypal'); + $is_paypal = in_array('1', $method_values); + if($is_paypal && !$this->steps['check_rff']) + $this->rff(); + elseif(!$is_paypal && !$this->steps['check_rff']) + $this->steps['fetched_payment_methods'] = true; + $this->heading_text = ctrans('texts.payment_methods'); return $this; diff --git a/app/Models/Task.php b/app/Models/Task.php index 0df362e4d5..89b21ffa81 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -16,6 +16,7 @@ use App\Models\CompanyUser; use Illuminate\Support\Carbon; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\SoftDeletes; +use App\Libraries\Currency\Conversion\CurrencyApi; /** * App\Models\Task @@ -159,27 +160,55 @@ class Task extends BaseModel return $this->morphMany(Document::class, 'documentable'); } + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ public function assigned_user() { return $this->belongsTo(User::class, 'assigned_user_id', 'id')->withTrashed(); } + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ public function user() { return $this->belongsTo(User::class)->withTrashed(); } + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ public function client() { return $this->belongsTo(Client::class)->withTrashed(); } + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ public function status() { return $this->belongsTo(TaskStatus::class)->withTrashed(); } - public function stringStatus() + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function invoice() + { + return $this->belongsTo(Invoice::class)->withTrashed(); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function project() + { + return $this->belongsTo(Project::class)->withTrashed(); + } + + public function stringStatus(): string { if($this->invoice_id) { return '
'.ctrans('texts.invoiced').'
'; @@ -193,16 +222,6 @@ class Task extends BaseModel } - public function invoice() - { - return $this->belongsTo(Invoice::class)->withTrashed(); - } - - public function project() - { - return $this->belongsTo(Project::class)->withTrashed(); - } - public function calcStartTime() { $parts = json_decode($this->time_log) ?: []; @@ -230,7 +249,7 @@ class Task extends BaseModel public function calcDuration($start_time_cutoff = 0, $end_time_cutoff = 0) { $duration = 0; - $parts = json_decode($this->time_log) ?: []; + $parts = json_decode($this->time_log ?? '{}') ?: []; foreach ($parts as $part) { $start_time = $part[0]; @@ -272,6 +291,26 @@ class Task extends BaseModel return $this->company->settings->default_task_rate ?? 0; } + public function taskCompanyValue(): float + { + $client_currency = $this->client->getSetting('currency_id'); + $company_currency = $this->company->getSetting('currency_id'); + + if($client_currency != $company_currency) + { + $converter = new CurrencyApi(); + return $converter->convert($this->taskValue(), $client_currency, $company_currency); + } + + return $this->taskValue(); + + } + + public function taskValue(): float + { + return round(($this->calcDuration() / 3600) * $this->getRate(),2); + } + public function processLogs() { diff --git a/app/PaymentDrivers/AbstractPaymentDriver.php b/app/PaymentDrivers/AbstractPaymentDriver.php index 05fdf566e9..acdc9eb9c6 100644 --- a/app/PaymentDrivers/AbstractPaymentDriver.php +++ b/app/PaymentDrivers/AbstractPaymentDriver.php @@ -20,7 +20,7 @@ abstract class AbstractPaymentDriver { abstract public function authorizeView(array $data); - abstract public function authorizeResponse(Request $request); + abstract public function authorizeResponse(\App\Http\Requests\Request | Request $request); abstract public function processPaymentView(array $data); diff --git a/app/PaymentDrivers/PayPalExpressPaymentDriver.php b/app/PaymentDrivers/PayPalExpressPaymentDriver.php deleted file mode 100644 index ea3cdc8c8b..0000000000 --- a/app/PaymentDrivers/PayPalExpressPaymentDriver.php +++ /dev/null @@ -1,249 +0,0 @@ -omnipay_gateway = Omnipay::create( - $this->company_gateway->gateway->provider - ); - - $this->omnipay_gateway->initialize((array) $this->company_gateway->getConfig()); - } - - public function setPaymentMethod($payment_method_id) - { - // PayPal doesn't have multiple ways of paying. - // There's just one, off-site redirect. - - return $this; - } - - public function authorizeView($payment_method) - { - // PayPal doesn't support direct authorization. - - return $this; - } - - public function authorizeResponse($request) - { - // PayPal doesn't support direct authorization. - - return $this; - } - - public function processPaymentView($data) - { - $this->initializeOmnipayGateway(); - - $this->payment_hash->data = array_merge((array) $this->payment_hash->data, ['amount' => $data['total']['amount_with_fee']]); - $this->payment_hash->save(); - - $response = $this->omnipay_gateway - ->purchase($this->generatePaymentDetails($data)) - ->setItems($this->generatePaymentItems($data)) - ->send(); - - if ($response->isRedirect()) { - return $response->redirect(); - } - - // $this->sendFailureMail($response->getMessage() ?: ''); - - $message = [ - 'server_response' => $response->getMessage(), - 'data' => $this->payment_hash->data, - ]; - - SystemLogger::dispatch( - $message, - SystemLog::CATEGORY_GATEWAY_RESPONSE, - SystemLog::EVENT_GATEWAY_FAILURE, - SystemLog::TYPE_PAYPAL, - $this->client, - $this->client->company, - ); - - throw new PaymentFailed($response->getMessage(), $response->getCode()); - } - - public function processPaymentResponse($request) - { - $this->initializeOmnipayGateway(); - - $response = $this->omnipay_gateway - ->completePurchase(['amount' => $this->payment_hash->data->amount, 'currency' => $this->client->getCurrencyCode()]) - ->send(); - - if ($response->isCancelled() && $this->client->getSetting('enable_client_portal')) { - return redirect()->route('client.invoices.index')->with('warning', ctrans('texts.status_cancelled')); - } elseif($response->isCancelled() && !$this->client->getSetting('enable_client_portal')) { - redirect()->route('client.invoices.show', ['invoice' => $this->payment_hash->fee_invoice])->with('warning', ctrans('texts.status_cancelled')); - } - - if ($response->isSuccessful()) { - $data = [ - 'payment_method' => $response->getData()['TOKEN'], - 'payment_type' => PaymentType::PAYPAL, - 'amount' => $this->payment_hash->data->amount, - 'transaction_reference' => $response->getTransactionReference(), - 'gateway_type_id' => GatewayType::PAYPAL, - ]; - - $payment = $this->createPayment($data, \App\Models\Payment::STATUS_COMPLETED); - - SystemLogger::dispatch( - ['response' => (array) $response->getData(), 'data' => $data], - SystemLog::CATEGORY_GATEWAY_RESPONSE, - SystemLog::EVENT_GATEWAY_SUCCESS, - SystemLog::TYPE_PAYPAL, - $this->client, - $this->client->company, - ); - - return redirect()->route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)]); - } - - if (! $response->isSuccessful()) { - $data = $response->getData(); - - $this->sendFailureMail($response->getMessage() ?: ''); - - $message = [ - 'server_response' => $data['L_LONGMESSAGE0'], - 'data' => $this->payment_hash->data, - ]; - - SystemLogger::dispatch( - $message, - SystemLog::CATEGORY_GATEWAY_RESPONSE, - SystemLog::EVENT_GATEWAY_FAILURE, - SystemLog::TYPE_PAYPAL, - $this->client, - $this->client->company, - ); - - throw new PaymentFailed($response->getMessage(), $response->getCode()); - } - } - - public function generatePaymentDetails(array $data) - { - $_invoice = collect($this->payment_hash->data->invoices)->first(); - $invoice = Invoice::withTrashed()->find($this->decodePrimaryKey($_invoice->invoice_id)); - - // $this->fee = $this->feeCalc($invoice, $data['total']['amount_with_fee']); - - return [ - 'currency' => $this->client->getCurrencyCode(), - 'transactionType' => 'Purchase', - 'clientIp' => request()->getClientIp(), - // 'amount' => round(($data['total']['amount_with_fee'] + $this->fee),2), - 'amount' => round($data['total']['amount_with_fee'], 2), - 'returnUrl' => route('client.payments.response', [ - 'company_gateway_id' => $this->company_gateway->id, - 'payment_hash' => $this->payment_hash->hash, - 'payment_method_id' => GatewayType::PAYPAL, - ]), - 'cancelUrl' => $this->client->company->domain()."/client/invoices/{$invoice->hashed_id}", - 'description' => implode(',', collect($this->payment_hash->data->invoices) - ->map(function ($invoice) { - return sprintf('%s: %s', ctrans('texts.invoice_number'), $invoice->invoice_number); - })->toArray()), - 'transactionId' => $this->payment_hash->hash.'-'.time(), - 'ButtonSource' => 'InvoiceNinja_SP', - 'solutionType' => 'Sole', - 'no_shipping' => $this->company_gateway->require_shipping_address ? 0 : 1, - ]; - } - - public function generatePaymentItems(array $data) - { - $_invoice = collect($this->payment_hash->data->invoices)->first(); - $invoice = Invoice::withTrashed()->find($this->decodePrimaryKey($_invoice->invoice_id)); - - $items = []; - - $items[] = new Item([ - 'name' => ' ', - 'description' => ctrans('texts.invoice_number').'# '.$invoice->number, - 'price' => $data['total']['amount_with_fee'], - 'quantity' => 1, - ]); - - return $items; - } - - private function feeCalc($invoice, $invoice_total) - { - $invoice->service()->removeUnpaidGatewayFees(); - $invoice = $invoice->fresh(); - - $balance = floatval($invoice->balance); - - $_updated_invoice = $invoice->service()->addGatewayFee($this->company_gateway, GatewayType::PAYPAL, $invoice_total)->save(); - - if (floatval($_updated_invoice->balance) > $balance) { - $fee = floatval($_updated_invoice->balance) - $balance; - - $this->payment_hash->fee_total = $fee; - $this->payment_hash->save(); - - return $fee; - } - - return 0; - } -} diff --git a/app/PaymentDrivers/Rotessa/PaymentMethod.php b/app/PaymentDrivers/Rotessa/PaymentMethod.php index 9fd4d9f094..3e617f76f9 100755 --- a/app/PaymentDrivers/Rotessa/PaymentMethod.php +++ b/app/PaymentDrivers/Rotessa/PaymentMethod.php @@ -12,14 +12,11 @@ namespace App\PaymentDrivers\Rotessa; -use Carbon\Carbon; -use App\Models\Client; use App\Models\Payment; use App\Models\SystemLog; use Illuminate\View\View; use App\Models\GatewayType; use App\Models\PaymentType; -use Illuminate\Support\Arr; use Illuminate\Http\Request; use App\Jobs\Util\SystemLogger; use App\Exceptions\PaymentFailed; @@ -28,16 +25,18 @@ use App\Models\ClientGatewayToken; use Illuminate\Http\RedirectResponse; use App\PaymentDrivers\RotessaPaymentDriver; use App\PaymentDrivers\Common\MethodInterface; -use App\PaymentDrivers\Rotessa\Resources\Customer; -use App\PaymentDrivers\Rotessa\Resources\Transaction; -use Omnipay\Common\Exception\InvalidRequestException; use Omnipay\Common\Exception\InvalidResponseException; -use App\Exceptions\Ninja\ClientPortalAuthorizationException; use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest; class PaymentMethod implements MethodInterface { + private array $transaction = [ + "financial_transactions" => [], + "frequency" =>'Once', + "installments" =>1 + ]; + public function __construct(protected RotessaPaymentDriver $rotessa) { $this->rotessa->init(); @@ -51,7 +50,7 @@ class PaymentMethod implements MethodInterface */ public function authorizeView(array $data): View { - $data['contact'] = collect($data['client']->contacts->firstWhere('is_primary', 1)->toArray())->merge([ + $data['contact'] = collect($data['client']->contacts->first()->toArray())->merge([ 'home_phone' => $data['client']->phone, 'custom_identifier' => $data['client']->number, 'name' => $data['client']->name, @@ -73,42 +72,38 @@ class PaymentMethod implements MethodInterface * @param Request $request * @return RedirectResponse */ - public function authorizeResponse(Request $request): RedirectResponse + public function authorizeResponse($request) { - try { - $request->validate([ - 'gateway_type_id' => ['required','integer'], - 'country' => ['required'], - 'name' => ['required'], - 'address_1' => ['required'], - // 'address_2' => ['required'], - 'city' => ['required'], - 'email' => ['required','email:filter'], - 'province_code' => ['required','size:2','alpha'], - 'postal_code' => ['required'], - 'authorization_type' => ['required'], - 'account_number' => ['required'], - 'bank_name' => ['required'], - 'phone' => ['required'], - 'home_phone' => ['required','size:10'], - 'bank_account_type'=>['required_if:country,US'], - 'routing_number'=>['required_if:country,US'], - 'institution_number'=>['required_if:country,CA','numeric'], - 'transit_number'=>['required_if:country,CA','numeric'], - 'custom_identifier'=>['required_without:customer_id'], - 'customer_id'=>['required_without:custom_identifier','integer'], - ]); - $customer = new Customer( ['address' => $request->only('address_1','address_2','city','postal_code','province_code','country'), 'custom_identifier' => $request->input('custom_identifier') ] + $request->all()); - $this->rotessa->findOrCreateCustomer($customer->resolve()); - - return redirect()->route('client.payment_methods.index')->withMessage(ctrans('texts.payment_method_added')); + $request->validate([ + 'gateway_type_id' => ['required','integer'], + 'country' => ['required','in:US,CA,United States,Canada'], + 'name' => ['required'], + 'address_1' => ['required'], + 'city' => ['required'], + 'email' => ['required','email:filter'], + 'province_code' => ['required','size:2','alpha'], + 'postal_code' => ['required'], + 'authorization_type' => ['required'], + 'account_number' => ['required'], + 'bank_name' => ['required'], + 'phone' => ['required'], + 'home_phone' => ['required','size:10'], + 'bank_account_type'=>['required_if:country,US'], + 'routing_number'=>['required_if:country,US'], + 'institution_number'=>['required_if:country,CA','numeric','digits:3'], + 'transit_number'=>['required_if:country,CA','numeric','digits:5'], + 'custom_identifier'=>['required_without:customer_id'], + 'customer_id'=>['required_without:custom_identifier','integer'], + 'customer_type' => ['required', 'in:Personal,Business'], + ]); - } catch (\Throwable $e) { - return $this->rotessa->processInternallyFailedPayment($this->rotessa, new ClientPortalAuthorizationException( get_class( $e) . " : {$e->getMessage()}", (int) $e->getCode() )); - } + $customer = array_merge(['address' => $request->only('address_1','address_2','city','postal_code','province_code','country'), 'custom_identifier' => $request->input('custom_identifier') ], $request->all()); + + $this->rotessa->findOrCreateCustomer($customer); + + return redirect()->route('client.payment_methods.index')->withMessage(ctrans('texts.payment_method_added')); - // return back()->withMessage(ctrans('texts.unable_to_verify_payment_method')); } /** @@ -124,7 +119,7 @@ class PaymentMethod implements MethodInterface $data['due_date'] = date('Y-m-d', min(max(strtotime($data['invoices']->max('due_date')), strtotime('now')), strtotime('+1 day'))); $data['process_date'] = $data['due_date']; $data['currency'] = $this->rotessa->client->getCurrencyCode(); - $data['frequency'] = Frequencies::getOnePayment(); + $data['frequency'] = 'Once'; $data['installments'] = 1; $data['invoice_nums'] = $data['invoices']->pluck('invoice_number')->join(', '); return render('gateways.rotessa.bank_transfer.pay', $data ); @@ -142,11 +137,7 @@ class PaymentMethod implements MethodInterface $customer = null; try { - $request->validate([ - 'source' => ['required','string','exists:client_gateway_tokens,token'], - 'amount' => ['required','numeric'], - 'process_date'=> ['required','date','after_or_equal:today'], - ]); + $customer = ClientGatewayToken::query() ->where('company_gateway_id', $this->rotessa->company_gateway->id) ->where('client_id', $this->rotessa->client->id) @@ -156,19 +147,23 @@ class PaymentMethod implements MethodInterface if(!$customer) throw new \Exception('Client gateway token not found!', SystemLog::TYPE_ROTESSA); - $transaction = new Transaction($request->only('frequency' ,'installments','amount','process_date') + ['comment' => $this->rotessa->getDescription(false) ]); - $transaction->additional(['customer_id' => $customer->gateway_customer_reference]); - $transaction = array_filter( $transaction->resolve()); + $transaction = array_merge($this->transaction,[ + 'amount' => $request->input('amount'), + 'process_date' => now()->addSeconds($customer->client->utc_offset())->format('Y-m-d'), + 'comment' => $this->rotessa->getDescription(false), + 'customer_id' => $customer->gateway_customer_reference, + ]); + $response = $this->rotessa->gatewayRequest('post','transaction_schedules', $transaction); - + if($response->failed()) $response->throw(); $response = $response->json(); - nlog($response); + return $this->processPendingPayment($response['id'], (float) $response['amount'], PaymentType::ACSS , $customer->token); } catch(\Throwable $e) { - $this->processUnsuccessfulPayment( new InvalidResponseException($e->getMessage(), (int) $e->getCode()) ); + $this->processUnsuccessfulPayment( new \Exception($e->getMessage(), (int) $e->getCode()) ); } } diff --git a/app/PaymentDrivers/Rotessa/Resources/Customer.php b/app/PaymentDrivers/Rotessa/Resources/Customer.php deleted file mode 100644 index c2514dfdd8..0000000000 --- a/app/PaymentDrivers/Rotessa/Resources/Customer.php +++ /dev/null @@ -1,22 +0,0 @@ -resource->jsonSerialize(); - } - - function toArray(Request $request) : array { - return $this->additional + parent::toArray($request); - } -} diff --git a/app/PaymentDrivers/Rotessa/Resources/Transaction.php b/app/PaymentDrivers/Rotessa/Resources/Transaction.php deleted file mode 100644 index 84ce332860..0000000000 --- a/app/PaymentDrivers/Rotessa/Resources/Transaction.php +++ /dev/null @@ -1,23 +0,0 @@ -resource->jsonSerialize(); - } - - function toArray(Request $request) : array { - return $this->additional + parent::toArray($request); - } -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/AbstractClient.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/AbstractClient.php deleted file mode 100644 index c84a973227..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/AbstractClient.php +++ /dev/null @@ -1,21 +0,0 @@ -default_parameters; - } - - public function setDefaultParameters(array $params) { - $this->default_parameters = $params; - } - -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ApiTrait.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ApiTrait.php deleted file mode 100644 index 5fc947713f..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ApiTrait.php +++ /dev/null @@ -1,41 +0,0 @@ -createRequest('GetCustomers', [] ); - } - public function postCustomers(array $params) : RequestInterface { - return $this->createRequest('PostCustomers', $params ); - } - public function getCustomersId(array $params) : RequestInterface { - return $this->createRequest('GetCustomersId', $params ); - } - public function patchCustomersId(array $params) : RequestInterface { - return $this->createRequest('PatchCustomersId', $params ); - } - public function postCustomersShowWithCustomIdentifier(array $params) : RequestInterface { - return $this->createRequest('PostCustomersShowWithCustomIdentifier', $params ); - } - public function getTransactionSchedulesId(array $params) : RequestInterface { - return $this->createRequest('GetTransactionSchedulesId', $params ); - } - public function deleteTransactionSchedulesId(array $params) : RequestInterface { - return $this->createRequest('DeleteTransactionSchedulesId', $params ); - } - public function patchTransactionSchedulesId(array $params) : RequestInterface { - return $this->createRequest('PatchTransactionSchedulesId', $params ); - } - public function postTransactionSchedules(array $params) : RequestInterface { - return $this->createRequest('PostTransactionSchedules', $params ); - } - public function postTransactionSchedulesCreateWithCustomIdentifier(array $params) : RequestInterface { - return $this->createRequest('PostTransactionSchedulesCreateWithCustomIdentifier', $params ); - } - public function postTransactionSchedulesUpdateViaPost(array $params) : RequestInterface { - return $this->createRequest('PostTransactionSchedulesUpdateViaPost', $params ); - } - } diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ClientInterface.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ClientInterface.php deleted file mode 100644 index 4d08fb0441..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/ClientInterface.php +++ /dev/null @@ -1,11 +0,0 @@ - 1234567890 ]; - - protected $test_mode = true; - - protected $api_key; - - public function getName() - { - return 'Rotessa'; - } - - public function getDefaultParameters() : array - { - return array_merge($this->default_parameters, array('api_key' => $this->api_key, 'test_mode' => $this->test_mode ) ); - } - - public function setTestMode($value) { - $this->test_mode = $value; - } - - public function getTestMode() { - return $this->test_mode; - } - - protected function createRequest($class_name, ?array $parameters = [] ) :RequestInterface { - $class = null; - $class_name = "Omnipay\\Rotessa\\Message\\Request\\$class_name"; - $parameters = $class_name::hasModel() ? (($parameters = ($class_name::getModel($parameters)))->validate() ? $parameters->jsonSerialize() : null ) : $parameters; - try { - $class = new $class_name($this->httpClient, $this->httpRequest, $this->getDefaultParameters() + $parameters ); - } catch (\Throwable $th) { - throw $th; - } - - return $class; - } - - function setApiKey($value) { - $this->api_key = $value; - } - - function getApiKey() { - return $this->api_key; - } - - function authorize(array $options = []) : RequestInterface { - return $this->postCustomers($options); - } - - function capture(array $options = []) : RequestInterface { - return array_key_exists('customer_id', $options)? $this->postTransactionSchedules($options) : $this->postTransactionSchedulesCreateWithCustomIdentifier($options) ; - } - - function updateCustomer(array $options) : RequestInterface { - return $this->patchCustomersId($options); - } - - function fetchTransaction($id = null) : RequestInterface { - return $this->getTransactionSchedulesId(compact('id')); - } - -} \ No newline at end of file diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Client.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Client.php deleted file mode 100644 index 1e0abbe8ab..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Client.php +++ /dev/null @@ -1,82 +0,0 @@ -httpClient = $httpClient ?: HttpClientDiscovery::find(); - $this->requestFactory = $requestFactory ?: MessageFactoryDiscovery::find(); - parent::__construct($httpClient, $requestFactory); - } - - /** - * @param $method - * @param $uri - * @param array $headers - * @param string|array|resource|StreamInterface|null $body - * @param string $protocolVersion - * @return ResponseInterface - * @throws \Http\Client\Exception - */ - public function request( - $method, - $uri, - array $headers = [], - $body = null, - $protocolVersion = '1.1' - ) { - return $this->sendRequest($method, $uri, $headers, $body, $protocolVersion); - - } - - /** - * @param RequestInterface $request - * @return ResponseInterface - * @throws \Http\Client\Exception - */ - private function sendRequest( $method, - $uri, - array $headers = [], - $body = null, - $protocolVersion = '1.1') - { - - $response = null; - - try { - if( method_exists($this->httpClient, 'sendRequest')) - $response = $this->httpClient->sendRequest( $this->requestFactory->createRequest($method, $uri, $headers, $body, $protocolVersion)); - else $response = $this->httpClient->request($method, $uri, compact('body','headers')); - } catch (\Http\Client\Exception\NetworkException $networkException) { - throw new \Exception($networkException->getMessage()); - } catch (\Exception $exception) { - throw new \Exception($exception->getMessage()); - } - - return $response; - } -} \ No newline at end of file diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Response/Response.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Response/Response.php deleted file mode 100644 index 8d665ac854..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Http/Response/Response.php +++ /dev/null @@ -1,32 +0,0 @@ -content, true) )) { - $data = $data['errors'][0]; - $this->reason_phrase = $data['error_message'] ; - $this->reason_code = $data['error_message'] ; - } - } - - public function getReasonPhrase() { - return $this->reason_phrase; - } - - public function getReasonCode() { - return $this->reason_code; - } -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/IsValidTypeTrait.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/IsValidTypeTrait.php deleted file mode 100644 index 266ba3036d..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/IsValidTypeTrait.php +++ /dev/null @@ -1,12 +0,0 @@ -api_key = $value; - } - - public function getData() { - try { - if(empty($this->api_key)) throw new \Exception('No Api Key Found!'); - $this->validate( ...array_keys($data = $this->getParameters())); - } catch (\Throwable $th) { - throw new \Omnipay\Rotessa\Exception\ValidationException($th->getMessage() , 600, $th); - } - - return (array) $data; - } - - abstract public function sendData($data) : ResponseInterface; - - abstract protected function sendRequest(string $method, string $endpoint, array $headers = [], array $data = [] ); - - abstract protected function createResponse(array $data) : ResponseInterface; - - abstract public function getEndpointUrl(): string; - - public function getEndpoint() : string { - return $this->endpoint; - } - - public function getTestMode() { - return $this->test_mode; - } - - public function setTestMode($mode) { - $this->test_mode = $mode; - } - } \ No newline at end of file diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/BaseRequest.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/BaseRequest.php deleted file mode 100644 index 4b68cf0aa2..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/BaseRequest.php +++ /dev/null @@ -1,93 +0,0 @@ -initialize($model); - } - - protected function sendRequest(string $method, string $endpoint, array $headers = [], array $data = []) - { - /** - * @param $method - * @param $uri - * @param array $headers - * @param string|resource|StreamInterface|null $body - * @param string $protocolVersion - * @return ResponseInterface - * @throws \Http\Client\Exception - */ - $response = $this->httpClient->request($method, $endpoint, $headers, json_encode($data) ) ; - $this->response = new Response ($response->getBody()->getContents(), $response->getStatusCode(), $response->getHeaders(), true); - } - - - protected function createResponse(array $data): ResponseInterface { - - return new BaseResponse($this, $data, $this->response->getStatusCode(), $this->response->getReasonPhrase()); - } - - protected function replacePlaceholder($string, $array) { - $pattern = "/\{([^}]+)\}/"; - $replacement = function($matches) use($array) { - $key = $matches[1]; - if (array_key_exists($key, $array)) { - return $array[$key]; - } else { - return $matches[0]; - } - }; - - return preg_replace_callback($pattern, $replacement, $string); - } - - public function sendData($data) :ResponseInterface { - $headers = [ - 'Content-Type' => 'application/json', - 'Accept' => 'application/json', - 'Authorization' => "Token token={$this->api_key}" - ]; - - $this->sendRequest( - $this->method, - $this->getEndpointUrl(), - $headers, - $data); - - return $this->createResponse(json_decode($this->response->getContent(), true)); - } - - public function getEndpoint() : string { - return $this->replacePlaceholder($this->endpoint, $this->getParameters()); - } - - public function getEndpointUrl() : string { - return sprintf('https://%s.%s/v%d%s',$this->test_mode ? self::ENVIRONMENT_SANDBOX : self::ENVIRONMENT_LIVE ,$this->base_url, $this->api_version, $this->getEndpoint()); - } - - public static function hasModel() : bool { - return (bool) static::$model; - } - - public static function getModel($parameters = []) { - $class_name = static::$model; - $class_name = "Omnipay\\Rotessa\\Model\\{$class_name}Model"; - return new $class_name($parameters); - } -} \ No newline at end of file diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/DeleteTransactionSchedulesId.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/DeleteTransactionSchedulesId.php deleted file mode 100644 index 7c03c42b0d..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/DeleteTransactionSchedulesId.php +++ /dev/null @@ -1,18 +0,0 @@ -setParameter('id',$value); - } - -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetCustomers.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetCustomers.php deleted file mode 100644 index 17ffde5355..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetCustomers.php +++ /dev/null @@ -1,14 +0,0 @@ -setParameter('id',$value); - } -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetTransactionSchedulesId.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetTransactionSchedulesId.php deleted file mode 100644 index 47578d06eb..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/GetTransactionSchedulesId.php +++ /dev/null @@ -1,17 +0,0 @@ -setParameter('id',$value); - } - } diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchCustomersId.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchCustomersId.php deleted file mode 100644 index 092e378b9f..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchCustomersId.php +++ /dev/null @@ -1,65 +0,0 @@ -setParameter('id',$value); - } - public function setCustomIdentifier(string $value) { - $this->setParameter('custom_identifier',$value); - } - public function setName(string $value) { - $this->setParameter('name',$value); - } - public function setEmail(string $value) { - $this->setParameter('email',$value); - } - public function setCustomerType(string $value) { - $this->setParameter('customer_type',$value); - } - public function setHomePhone(string $value) { - $this->setParameter('home_phone',$value); - } - public function setPhone(string $value) { - $this->setParameter('phone',$value); - } - public function setBankName(string $value) { - $this->setParameter('bank_name',$value); - } - public function setInstitutionNumber(string $value) { - $this->setParameter('institution_number',$value); - } - public function setTransitNumber(string $value) { - $this->setParameter('transit_number',$value); - } - public function setBankAccountType(string $value) { - $this->setParameter('bank_account_type',$value); - } - public function setAuthorizationType(string $value) { - $this->setParameter('authorization_type',$value); - } - public function setRoutingNumber(string $value) { - $this->setParameter('routing_number',$value); - } - public function setAccountNumber(string $value) { - $this->setParameter('account_number',$value); - } - public function setAddress(array $value) { - $this->setParameter('address',$value); - } - public function setTransactionSchedules(array $value) { - $this->setParameter('transaction_schedules',$value); - } - public function setFinancialTransactions(array $value) { - $this->setParameter('financial_transactions',$value); - } - } diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchTransactionSchedulesId.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchTransactionSchedulesId.php deleted file mode 100644 index 9eac3cfabc..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PatchTransactionSchedulesId.php +++ /dev/null @@ -1,22 +0,0 @@ -setParameter('id',$value); - } - public function setAmount($value) { - $this->setParameter('amount',$value); - } - public function setComment(string $value) { - $this->setParameter('comment',$value); - } - } diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomers.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomers.php deleted file mode 100644 index a0c54fe65c..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomers.php +++ /dev/null @@ -1,60 +0,0 @@ -setParameter('id',$value); - } - public function setCustomIdentifier(string $value) { - $this->setParameter('custom_identifier',$value); - } - public function setName(string $value) { - $this->setParameter('name',$value); - } - public function setEmail(string $value) { - $this->setParameter('email',$value); - } - public function setCustomerType(string $value) { - $this->setParameter('customer_type',$value); - } - public function setHomePhone(string $value) { - $this->setParameter('home_phone',$value); - } - public function setPhone(string $value) { - $this->setParameter('phone',$value); - } - public function setBankName(string $value) { - $this->setParameter('bank_name',$value); - } - public function setInstitutionNumber(string $value = '') { - $this->setParameter('institution_number',$value); - } - public function setTransitNumber(string $value = '') { - $this->setParameter('transit_number',$value); - } - public function setBankAccountType(string $value) { - $this->setParameter('bank_account_type',$value); - } - public function setAuthorizationType(string $value = '') { - $this->setParameter('authorization_type',$value); - } - public function setRoutingNumber(string $value = '') { - $this->setParameter('routing_number',$value); - } - public function setAccountNumber(string $value) { - $this->setParameter('account_number',$value); - } - public function setAddress(array $value) { - $this->setParameter('address',$value); - } - } diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomersShowWithCustomIdentifier.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomersShowWithCustomIdentifier.php deleted file mode 100644 index d590cb6185..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostCustomersShowWithCustomIdentifier.php +++ /dev/null @@ -1,19 +0,0 @@ -setParameter('custom_identifier',$value); - } - -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedules.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedules.php deleted file mode 100644 index 80e28a7f50..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedules.php +++ /dev/null @@ -1,31 +0,0 @@ -setParameter('customer_id',$value); - } - public function setProcessDate(string $value) { - $this->setParameter('process_date',$value); - } - public function setFrequency(string $value) { - $this->setParameter('frequency',$value); - } - public function setInstallments(int $value) { - $this->setParameter('installments',$value); - } - public function setComment(string $value) { - $this->setParameter('comment',$value); - } - } diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesCreateWithCustomIdentifier.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesCreateWithCustomIdentifier.php deleted file mode 100644 index fd5111dc9a..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesCreateWithCustomIdentifier.php +++ /dev/null @@ -1,16 +0,0 @@ -setParameter('custom_identifier',$value); - } - -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesUpdateViaPost.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesUpdateViaPost.php deleted file mode 100644 index afd4596bc9..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/PostTransactionSchedulesUpdateViaPost.php +++ /dev/null @@ -1,24 +0,0 @@ -setParameter('id',$value); - } - public function setAmount($value) { - $this->setParameter('amount',$value); - } - public function setComment(string $value) { - $this->setParameter('comment',$value); - } - } diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/RequestInterface.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/RequestInterface.php deleted file mode 100644 index cfbcf0095b..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Request/RequestInterface.php +++ /dev/null @@ -1,10 +0,0 @@ -code = $code; - $this->message = $message; - } - - public function getData() { - return $this->getParameters(); - } - - public function getCode() { - return (int) $this->code; - } - - public function isSuccessful() { - return $this->code < 300; - } - - public function getMessage() { - return $this->message; - } - - protected function getParameters() { - return $this->data; - } - - public function getParameter(string $key) { - return $this->getParameters()[$key]; - } -} \ No newline at end of file diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Response/ResponseInterface.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Response/ResponseInterface.php deleted file mode 100644 index 080eaab504..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Message/Response/ResponseInterface.php +++ /dev/null @@ -1,9 +0,0 @@ -required), array_filter($this->getParameters()) ); - if(!empty($required)) throw new ValidationException("Could not validate " . implode(",", array_keys($required)) ); - - return true; - } - - public function __get($key) { - return array_key_exists($key, $this->attributes) ? $this->getParameter($key) : null; - } - - public function __set($key, $value) { - if(array_key_exists($key, $this->attributes)) $this->setParameter($key, $value); - } - - public function __toString() : string { - return json_encode($this); - } - - public function toString() : string { - return $this->__toString(); - } - - public function __toArray() : array { - return $this->getParameters(); - } - - - public function toArray() : array { - return $this->__toArray(); - } - - public function initialize(array $params = []) { - $this->parameters = new ParameterBag; - $parameters = array_merge($this->defaults, $params); - if ($parameters) { - foreach ($this->attributes as $param => $type) { - $value = @$parameters[$param]; - if($value){ - settype($value, $type); - $this->setParameter($param, $value); - } - } - } - - return $this; - } -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/BaseModel.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/BaseModel.php deleted file mode 100644 index 8064662068..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/BaseModel.php +++ /dev/null @@ -1,24 +0,0 @@ - "string" - ]; - protected $required = ['id']; - protected $defaults = ['id' => 0 ]; - - public function __construct($parameters = array()) { - $this->initialize($parameters); - } - - public function jsonSerialize() : array { - return array_intersect_key($this->toArray(), array_flip($this->required) ); - } -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerModel.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerModel.php deleted file mode 100644 index 0fd67aea94..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerModel.php +++ /dev/null @@ -1,94 +0,0 @@ - "string", - "custom_identifier" => "string", - "name" => "string", - "email" => "string", - "customer_type" => "string", - "home_phone" => "string", - "phone" => "string", - "bank_name" => "string", - "institution_number" => "string", - "transit_number" => "string", - "bank_account_type" => "string", - "authorization_type" => "string", - "routing_number" => "string", - "account_number" => "string", - "address" => "object", - "transaction_schedules" => "array", - "financial_transactions" => "array", - "active" => "bool" - ]; - - protected $defaults = ["active" => false,"customer_type" =>'Business',"bank_account_type" =>'Savings',"authorization_type" =>'Online',]; - protected $required = ["name","email","customer_type","home_phone","phone","bank_name","institution_number","transit_number","bank_account_type","authorization_type","routing_number","account_number","address",'custom_identifier']; - - public function validate() : bool { - try { - $country = $this->address->country; - if(!self::isValidCountry($country)) throw new \Exception("Invalid country!"); - - $this->required = array_diff($this->required, Country::isAmerican($country) ? ["institution_number", "transit_number"] : ["bank_account_type", "routing_number"]); - parent::validate(); - if(Country::isCanadian($country) ) { - if(!self::isValidTransitNumber($this->getParameter('transit_number'))) throw new \Exception("Invalid transit number!"); - if(!self::isValidInstitutionNumber($this->getParameter('institution_number'))) throw new \Exception("Invalid institution number!"); - } - if(!self::isValidCustomerType($this->getParameter('customer_type'))) throw new \Exception("Invalid customer type!"); - if(!self::isValidBankAccountType($this->getParameter('bank_account_type'))) throw new \Exception("Invalid bank account type!"); - if(!self::isValidAuthorizationType($this->getParameter('authorization_type'))) throw new \Exception("Invalid authorization type!"); - } catch (\Throwable $th) { - throw new ValidationException($th->getMessage()); - } - - return true; - } - - public static function isValidCountry(string $country ) : bool { - return Country::isValidCountryCode($country) || Country::isValidCountryName($country); - } - - public static function isValidTransitNumber(string $value ) : bool { - return strlen($value) == 5; - } - - public static function isValidInstitutionNumber(string $value ) : bool { - return strlen($value) == 3; - } - - public static function isValidCustomerType(string $value ) : bool { - return CustomerType::isValid($value); - } - - public static function isValidBankAccountType(string $value ) : bool { - return BankAccountType::isValid($value); - } - - public static function isValidAuthorizationType(string $value ) : bool { - return AuthorizationType::isValid($value); - } - - public function toArray() : array { - return [ 'address' => (array) $this->getParameter('address') ] + parent::toArray(); - } - - public function jsonSerialize() : array { - $address = (array) $this->getParameter('address'); - unset($address['country']); - - return compact('address') + parent::jsonSerialize(); - } -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerPatchModel.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerPatchModel.php deleted file mode 100644 index c2e51d50b1..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/CustomerPatchModel.php +++ /dev/null @@ -1,16 +0,0 @@ - "string", - "amount" => "float", - "comment" => "string", - "created_at" => "date", - "financial_transactions" => "array", - "frequency" => "string", - "installments" => "integer", - "next_process_date" => "date", - "process_date" => "date", - "updated_at" => "date", - "customer_id" => "string", - "custom_identifier" => "string", - ]; - - public const DATE_FORMAT = 'F j, Y'; - - protected $defaults = ["amount" =>0.00,"comment" =>' ',"financial_transactions" =>0,"frequency" =>'Once',"installments" =>1]; - - protected $required = ["amount","comment","frequency","installments","process_date"]; - - public function validate() : bool { - try { - parent::validate(); - if(!self::isValidDate($this->process_date)) throw new \Exception("Could not validate date "); - if(!self::isValidFrequency($this->frequency)) throw new \Exception("Invalid frequency"); - if(is_null($this->customer_id) && is_null($this->custom_identifier)) throw new \Exception("customer id or custom identifier is invalid"); - } catch (\Throwable $th) { - throw new ValidationException($th->getMessage()); - } - - return true; - } - - public function jsonSerialize() : array { - return ['customer_id' => $this->getParameter('customer_id'), 'custom_identifier' => $this->getParameter('custom_identifier') ] + parent::jsonSerialize() ; - } - - public function __toArray() : array { - return parent::__toArray() ; - } - - public function initialize(array $params = [] ) { - $o_params = array_intersect_key( - $params = array_intersect_key($params, $this->attributes), - ($attr = array_filter($this->attributes, fn($p) => $p != "date")) - ); - parent::initialize($o_params); - $d_params = array_diff_key($params, $attr); - array_walk($d_params, function($v,$k) { - $this->setParameter($k, self::formatDate( $v) ); - }, ); - - return $this; - } - - public static function isValidDate($date) : bool { - $d = DateTime::createFromFormat(self::DATE_FORMAT, $date); - // Check if the date is valid and matches the format - return $d && $d->format(self::DATE_FORMAT) === $date; - } - - public static function isValidFrequency($value) : bool { - return Frequency::isValid($value); - } - - protected static function formatDate($date) : string { - $d = new DateTime($date); - return $d->format(self::DATE_FORMAT); - } -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesIdBodyModel.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesIdBodyModel.php deleted file mode 100644 index 119ac03999..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesIdBodyModel.php +++ /dev/null @@ -1,23 +0,0 @@ - "int", - "comment" => "string", - ]; - - public const DATE_FORMAT = 'Y-m-d H:i:s'; - - private $_is_error = false; - - protected $defaults = ["amount" =>0,"comment" =>'0',]; - - protected $required = ["amount","comment",]; -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesUpdateViaPostBodyModel.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesUpdateViaPostBodyModel.php deleted file mode 100644 index 749ae2f6b9..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Model/TransactionSchedulesUpdateViaPostBodyModel.php +++ /dev/null @@ -1,24 +0,0 @@ - "int", - "amount" => "int", - "comment" => "string", - ]; - - public const DATE_FORMAT = 'Y-m-d H:i:s'; - - private $_is_error = false; - - protected $defaults = ["amount" =>0,"comment" =>'0',]; - - protected $required = ["amount","comment",]; -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/Address.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/Address.php deleted file mode 100644 index 1c5952b112..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/Address.php +++ /dev/null @@ -1,53 +0,0 @@ - "string", - "address_2" => "string", - "city" => "string", - "id" => "int", - "postal_code" => "string", - "province_code" => "string", - "country" => "string" - ]; - - protected $required = ["address_1","address_2","city","postal_code","province_code",]; - - public function jsonSerialize() { - return array_intersect_key($this->getParameters(), array_flip($this->required)); - } - - public function getCountry() : string { - return $this->getParameter('country'); - } - - public function initialize(array $parameters) { - foreach($this->attributes as $param => $type) { - $value = @$parameters[$param] ; - settype($value, $type); - $value = $value ?? null; - $this->parameters->set($param, $value); - } - } - - public function __toArray() : array { - return $this->getParameters(); - } - - public function __toString() : string { - return $this->getFullAddress(); - } - - public function getFullAddress() :string { - $full_address = $this->getParameters(); - extract($full_address); - - return "$address_1 $address_2, $city, $postal_code $province_code, $country"; - } -} diff --git a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/AuthorizationType.php b/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/AuthorizationType.php deleted file mode 100644 index 39dcebfa34..0000000000 --- a/app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/Object/AuthorizationType.php +++ /dev/null @@ -1,28 +0,0 @@ - BankTransfer::class, - //GatewayType::BACS => Bacs::class, GatewayType::ACSS => Acss::class, - // GatewayType::DIRECT_DEBIT => DirectDebit::class ]; public function init(): self @@ -115,14 +104,15 @@ class RotessaPaymentDriver extends BaseDriver public function importCustomers() { try { - $result = $this->gatewayRequest('get','customers',[]); + $result = $this->gatewayRequest('get','customers',[]); //Rotessa customers if($result->failed()) $result->throw(); - $customers = collect($result->json())->unique('email'); + $customers = collect($result->json())->unique('email'); //Rotessa customer emails $client_emails = $customers->pluck('email')->all(); + $company_id = $this->company_gateway->company->id; // get existing customers $client_contacts = ClientContact::where('company_id', $company_id) @@ -138,60 +128,32 @@ class RotessaPaymentDriver extends BaseDriver } ); // create payment methods - $client_contacts->each( + collect($client_contacts)->each( function($contact) { - // $result = $this->gateway->getCustomersId(['id' => ($contact = (object) $contact)->id])->send(); + $contact = (object)$contact; $result = $this->gatewayRequest("get","customers/{$contact->id}"); $result = $result->json(); - $this->client = Client::find($contact->client_id); + $this->client = Client::query()->find($contact->client_id); - $customer = (new Customer($result))->additional(['id' => $contact->id, 'custom_identifier' => $contact->custom_identifier ] ); - $this->findOrCreateCustomer($customer->additional + $customer->jsonSerialize()); + $customer = array_merge($result, ['id' => $contact->id, 'custom_identifier' => $contact->custom_identifier ]); + + $this->findOrCreateCustomer($customer); + } ); // create new clients from rotessa customers $client_emails = $client_contacts->pluck('email')->all(); + $client_contacts = $customers->filter(function ($value, $key) use ($client_emails) { return !in_array(((object) $value)->email, $client_emails); })->each( function($customer) use ($company_id) { $customer = $this->gatewayRequest("get", "customers/{$customer['id']}")->json(); - /** - { - "account_number": "11111111" - "active": true, - "address": { - "address_1": "123 Main Street", - "address_2": "Unit 4", - "city": "Birmingham", - "id": 114397, - "postal_code": "36016", - "province_code": "AL" - }, - "authorization_type": "Online", - "bank_account_type": "Checking", - "bank_name": "Scotiabank", - "created_at": "2015-02-10T23:50:45.000-06:00", - "custom_identifier": "Mikey", - "customer_type": "Personal", - "email": "mikesmith@test.com", - "financial_transactions": [], - "home_phone": "(204) 555 5555", - "id": 1, - "identifier": "Mikey", - "institution_number": "", - "name": "Mike Smith", - "phone": "(204) 555 4444", - "routing_number": "111111111", - "transaction_schedules": [], - "transit_number": "", - "updated_at": "2015-02-10T23:50:45.000-06:00" - } - */ + $settings = ClientSettings::defaults(); $settings->currency_id = $this->company_gateway->company->getSetting('currency_id'); $customer = (object)$customer; @@ -220,8 +182,7 @@ class RotessaPaymentDriver extends BaseDriver $client->contacts()->saveMany([$contact]); $contact = $client->contacts()->first(); $this->client = $client; - $customer = (new Customer((array) $customer))->additional(['id' => $customer->id, 'custom_identifier' => $customer->custom_identifier ?? $contact->id ] ); - $this->findOrCreateCustomer($customer->additional + $customer->jsonSerialize()); + }); } catch (\Throwable $th) { $data = [ @@ -241,6 +202,8 @@ class RotessaPaymentDriver extends BaseDriver public function findOrCreateCustomer(array $data) { + nlog($data); + $result = null; try { @@ -248,37 +211,34 @@ class RotessaPaymentDriver extends BaseDriver ->where('company_gateway_id', $this->company_gateway->id) ->where('client_id', $this->client->id) ->where('is_deleted',0) - ->orWhere(function (Builder $query) use ($data) { - $query->where('token', join(".", Arr::only($data, ['id','custom_identifier']))) - ->where('gateway_customer_reference', Arr::only($data,'id')); - }) + ->where('gateway_customer_reference', Arr::only($data,'id')) ->exists(); + if ($existing) return true; - else if(!Arr::has($data,'id')) { - // $result = $this->gateway->authorize($data)->send(); - // if (!$result->isSuccessful()) throw new \Exception($result->getMessage(), (int) $result->getCode()); + + if(!isset($data['id'])) { + nlog("no id, lets goo"); $result = $this->gatewayRequest('post', 'customers', $data); if($result->failed()) $result->throw(); - $customer = new Customer($result->json()); - $data = array_filter($customer->resolve()); - + $data = $result->json(); + nlog($data); } - // $payment_method_id = Arr::has($data,'address.postal_code') && ((int) $data['address']['postal_code'])? GatewayType::BANK_TRANSFER: GatewayType::ACSS; - // TODO: Check/ Validate postal code between USA vs CAN $payment_method_id = GatewayType::ACSS; + $gateway_token = $this->storeGatewayToken( [ - 'payment_meta' => $data + ['brand' => 'Bank Transfer', 'last4' => substr($data['account_number'], -4), 'type' => GatewayType::ACSS ], + 'payment_meta' => ['brand' => 'Bank Transfer', 'last4' => substr($data['account_number'], -4), 'type' => GatewayType::ACSS ], 'token' => join(".", Arr::only($data, ['id','custom_identifier'])), 'payment_method_id' => $payment_method_id , - ], ['gateway_customer_reference' => - $data['id'] - , 'routing_number' => Arr::has($data,'routing_number') ? $data['routing_number'] : $data['transit_number'] ]); + ], [ + 'gateway_customer_reference' => $data['id'], + 'routing_number' => Arr::has($data,'routing_number') ? $data['routing_number'] : $data['transit_number'] + ]); return $data['id']; diff --git a/app/PaymentDrivers/Stripe/Jobs/ChargeRefunded.php b/app/PaymentDrivers/Stripe/Jobs/ChargeRefunded.php index 405f696742..524139527e 100644 --- a/app/PaymentDrivers/Stripe/Jobs/ChargeRefunded.php +++ b/app/PaymentDrivers/Stripe/Jobs/ChargeRefunded.php @@ -59,6 +59,11 @@ class ChargeRefunded implements ShouldQueue $payment_hash_key = $source['metadata']['payment_hash'] ?? null; + if(is_null($payment_hash_key)){ + nlog("charge.refunded not found"); + return; + } + $payment_hash = PaymentHash::query()->where('hash', $payment_hash_key)->first(); $company_gateway = $payment_hash->payment->company_gateway; diff --git a/app/PaymentDrivers/Stripe/Jobs/PaymentIntentProcessingWebhook.php b/app/PaymentDrivers/Stripe/Jobs/PaymentIntentProcessingWebhook.php index 3b0c3b3098..42c4739f77 100644 --- a/app/PaymentDrivers/Stripe/Jobs/PaymentIntentProcessingWebhook.php +++ b/app/PaymentDrivers/Stripe/Jobs/PaymentIntentProcessingWebhook.php @@ -59,38 +59,22 @@ class PaymentIntentProcessingWebhook implements ShouldQueue /* Stub processing payment intents with a pending payment */ public function handle() { + nlog($this->stripe_request); + // The first payment will always be a PI payment - subsequent are PY + MultiDB::findAndSetDbByCompanyKey($this->company_key); $company = Company::query()->where('company_key', $this->company_key)->first(); foreach ($this->stripe_request as $transaction) { - $payment = Payment::query() ->where('company_id', $company->id) - ->where(function ($query) use ($transaction) { - - if(isset($transaction['payment_intent'])) { - $query->where('transaction_reference', $transaction['payment_intent']); - } - - if(isset($transaction['payment_intent']) && isset($transaction['id'])) { - $query->orWhere('transaction_reference', $transaction['id']); - } - - if(!isset($transaction['payment_intent']) && isset($transaction['id'])) { - $query->where('transaction_reference', $transaction['id']); - } - - }) + ->where('transaction_reference', $transaction['id']) ->first(); - - if ($payment) { - $payment->status_id = Payment::STATUS_PENDING; - $payment->save(); - + nlog("found payment"); $this->payment_completed = true; } diff --git a/app/Providers/ComposerServiceProvider.php b/app/Providers/ComposerServiceProvider.php index 9d8d5a94b0..ea8b773ee8 100644 --- a/app/Providers/ComposerServiceProvider.php +++ b/app/Providers/ComposerServiceProvider.php @@ -33,7 +33,6 @@ class ComposerServiceProvider extends ServiceProvider $view->with('states', $states); }); - // CAProvinces View Composer view()->composer(['*.rotessa.components.address','*.rotessa.components.banks.CA.bank','*.rotessa.components.dropdowns.country.CA'], function ($view) { $provinces = CAProvinces::get(); $view->with('provinces', $provinces); diff --git a/app/Services/Chart/ChartCalculations.php b/app/Services/Chart/ChartCalculations.php index 92cbbd93c1..c3d9487fe3 100644 --- a/app/Services/Chart/ChartCalculations.php +++ b/app/Services/Chart/ChartCalculations.php @@ -11,9 +11,12 @@ namespace App\Services\Chart; +use App\Models\Expense; use App\Models\Invoice; use App\Models\Payment; use App\Models\Quote; +use App\Models\Task; +use Illuminate\Contracts\Database\Eloquent\Builder; /** * Class ChartCalculations. @@ -170,4 +173,215 @@ trait ChartCalculations return $result; } + + public function getLoggedTasks($data): int|float + { + + $q = $this->taskQuery($data); + + return $this->taskCalculations($q, $data); + + } + + public function getPaidTasks($data): int|float + { + $q = $this->taskQuery($data); + $q->whereHas('invoice', function ($query){ + $query->where('status_id', 4)->where('is_deleted', 0); + }); + + return $this->taskCalculations($q, $data); + + } + + public function getInvoicedTasks($data): int|float + { + + $q = $this->taskQuery($data); + $q->whereHas('invoice'); + + return $this->taskCalculations($q, $data); + + } + + /** + * All Expenses + */ + public function getLoggedExpenses($data): int|float + { + $q = $this->expenseQuery($data); + + return $this->expenseCalculations($q, $data); + } + + + /** + * Expenses that should be invoiced - but are not yet invoiced. + */ + public function getPendingExpenses($data): int|float + { + + $q = $this->expenseQuery($data); + $q->where('should_be_invoiced', true)->whereNull('invoice_id'); + return $this->expenseCalculations($q, $data); + } + + /** + * Invoiced. + */ + public function getInvoicedExpenses($data): int|float + { + + $q = $this->expenseQuery($data); + $q->whereNotNull('invoice_id'); + return $this->expenseCalculations($q, $data); + } + + /** + * Paid. + */ + public function getPaidExpenses($data): int|float + { + + $q = $this->expenseQuery($data); + $q->whereNotNull('payment_date'); + return $this->expenseCalculations($q, $data); + } + + /** + * Paid. + */ + public function getInvoicedPaidExpenses($data): int|float + { + + $q = $this->expenseQuery($data); + $q->whereNotNull('invoice_id')->whereNotNull('payment_date'); + return $this->expenseCalculations($q, $data); + } + + private function expenseCalculations(Builder $query, array $data): int|float + { + + $result = 0; + $calculated = $this->expenseCalculator($query, $data); + + match ($data['calculation']) { + 'sum' => $result = $calculated->sum(), + 'avg' => $result = $calculated->avg(), + 'count' => $result = $query->count(), + default => $result = 0, + }; + + return $result; + + + } + + private function expenseCalculator(Builder $query, array $data) + { + + return $query->get() + ->when($data['currency_id'] == '999', function ($collection) { + $collection->map(function ($e) { + /** @var \App\Models\Expense $e */ + return $e->amount * $e->exchange_rate; + }); + }) + ->when($data['currency_id'] != '999', function ($collection) { + + $collection->map(function ($e) { + + /** @var \App\Models\Expense $e */ + return $e->amount; + }); + + }); + + } + + private function expenseQuery($data): Builder + { + $query = Expense::query() + ->withTrashed() + ->where('company_id', $this->company->id) + ->where('is_deleted', 0); + + if(in_array($data['period'], ['current,previous'])) { + $query->whereBetween('date', [$data['start_date'], $data['end_date']]); + } + + return $query; + } + + //////////////////////////////////////////////////////////////// + private function taskMoneyCalculator($query, $data) + { + + return $query->get() + ->when($data['currency_id'] == '999', function ($collection) { + $collection->map(function ($t) { + return $t->taskCompanyValue(); + }); + }) + ->when($data['currency_id'] != '999', function ($collection) { + + $collection->map(function ($t) { + return $t->taskValue(); + }); + + }); + + } + + private function taskQuery($data): Builder + { + $q = Task::query() + ->withTrashed() + ->where('company_id', $this->company->id) + ->where('is_deleted', 0); + + if(in_array($data['period'], ['current,previous'])) { + $q->whereBetween('calculated_start_date', [$data['start_date'], $data['end_date']]); + } + + return $q; + + } + + private function taskCalculations(Builder $q, array $data): int|float + { + + $result = 0; + $calculated = collect(); + + if($data['calculation'] != 'count' && $data['format'] == 'money') { + if($data['currency_id'] != '999') { + + $q->whereHas('client', function ($query) use ($data) { + $query->where('settings->currency_id', $data['currency_id']); + }); + + } + + $calculated = $this->taskMoneyCalculator($q, $data); + + } + + if($data['calculation'] != 'count' && $data['format'] == 'time') { + $calculated = $q->get()->map(function ($t) { + return $t->calcDuration(); + }); + } + + match ($data['calculation']) { + 'sum' => $result = $calculated->sum(), + 'avg' => $result = $calculated->avg(), + 'count' => $result = $q->count(), + default => $result = 0, + }; + + return $result; + + } + } \ No newline at end of file diff --git a/app/Services/Chart/ChartService.php b/app/Services/Chart/ChartService.php index 4bf080f950..792fd87baa 100644 --- a/app/Services/Chart/ChartService.php +++ b/app/Services/Chart/ChartService.php @@ -224,6 +224,8 @@ class ChartService * period - current/previous * calculation - sum/count/avg * + * May require currency_id + * * date_range - this_month * or * start_date - end_date @@ -234,18 +236,18 @@ class ChartService match($data['field']){ 'active_invoices' => $results = $this->getActiveInvoices($data), - 'outstanding_invoices' => $results = 0, - 'completed_payments' => $results = 0, - 'refunded_payments' => $results = 0, - 'active_quotes' => $results = 0, - 'unapproved_quotes' => $results = 0, - 'logged_tasks' => $results = 0, - 'invoiced_tasks' => $results = 0, - 'paid_tasks' => $results = 0, - 'logged_expenses' => $results = 0, - 'pending_expenses' => $results = 0, - 'invoiced_expenses' => $results = 0, - 'invoice_paid_expenses' => $results = 0, + 'outstanding_invoices' => $results = $this->getOutstandingInvoices($data), + 'completed_payments' => $results = $this->getCompletedPayments($data), + 'refunded_payments' => $results = $this->getRefundedPayments($data), + 'active_quotes' => $results = $this->getActiveQuotes($data), + 'unapproved_quotes' => $results = $this->getUnapprovedQuotes($data), + 'logged_tasks' => $results = $this->getLoggedTasks($data), + 'invoiced_tasks' => $results = $this->getInvoicedTasks($data), + 'paid_tasks' => $results = $this->getPaidTasks($data), + 'logged_expenses' => $results = $this->getLoggedExpenses($data), + 'pending_expenses' => $results = $this->getPendingExpenses($data), + 'invoiced_expenses' => $results = $this->getInvoicedExpenses($data), + 'invoice_paid_expenses' => $results = $this->getInvoicedPaidExpenses($data), default => $results = 0, }; diff --git a/app/Services/Template/TemplateService.php b/app/Services/Template/TemplateService.php index c511409993..016a91783f 100644 --- a/app/Services/Template/TemplateService.php +++ b/app/Services/Template/TemplateService.php @@ -124,7 +124,7 @@ class TemplateService $this->twig->addFilter($filter); $allowedTags = ['if', 'for', 'set', 'filter']; - $allowedFilters = ['escape', 'e', 'upper', 'lower', 'capitalize', 'filter', 'length', 'merge','format_currency', 'format_number','format_percent_number','map', 'join', 'first', 'date', 'sum', 'number_format']; + $allowedFilters = ['replace', 'escape', 'e', 'upper', 'lower', 'capitalize', 'filter', 'length', 'merge','format_currency', 'format_number','format_percent_number','map', 'join', 'first', 'date', 'sum', 'number_format','nl2br']; $allowedFunctions = ['range', 'cycle', 'constant', 'date',]; $allowedProperties = ['type_id']; $allowedMethods = ['img','t']; @@ -323,6 +323,9 @@ class TemplateService $template = $template->render($this->data); $f = $this->document->createDocumentFragment(); + + $template = htmlspecialchars($template, ENT_XML1, 'UTF-8'); + $f->appendXML(html_entity_decode($template)); $replacements[] = $f; diff --git a/app/Utils/TranslationHelper.php b/app/Utils/TranslationHelper.php index c80cdbeb19..ad0f06d7b1 100644 --- a/app/Utils/TranslationHelper.php +++ b/app/Utils/TranslationHelper.php @@ -17,80 +17,67 @@ use Illuminate\Support\Str; class TranslationHelper { - public static function getIndustries() - { + // public static function getIndustries() + // { - /** @var \Illuminate\Support\Collection<\App\Models\Currency> */ - $industries = app('industries'); + // /** @var \Illuminate\Support\Collection<\App\Models\Currency> */ + // $industries = app('industries'); - return $industries->each(function ($industry) { - $industry->name = ctrans('texts.industry_'.$industry->name); - })->sortBy(function ($industry) { - return $industry->name; - }); - } + // return $industries->each(function ($industry) { + // $industry->name = ctrans('texts.industry_'.$industry->name); + // })->sortBy(function ($industry) { + // return $industry->name; + // }); + // } public static function getCountries() { /** @var \Illuminate\Support\Collection<\App\Models\Country> */ - $countries = app('countries'); + return app('countries'); - return $countries; - - return \App\Models\Country::all()->each(function ($country) { - $country->name = ctrans('texts.country_'.$country->name); - })->sortBy(function ($country) { - return $country->iso_3166_2; - }); } - public static function getPaymentTypes() - { + // public static function getPaymentTypes() + // { - /** @var \Illuminate\Support\Collection<\App\Models\PaymentType> */ - // $payment_types = app('payment_types'); + // /** @var \Illuminate\Support\Collection<\App\Models\PaymentType> */ + // // $payment_types = app('payment_types'); - return \App\Models\PaymentType::all()->each(function ($pType) { - $pType->name = ctrans('texts.payment_type_'.$pType->name); - })->sortBy(function ($pType) { - return $pType->name; - }); - } + // return \App\Models\PaymentType::all()->each(function ($pType) { + // $pType->name = ctrans('texts.payment_type_'.$pType->name); + // })->sortBy(function ($pType) { + // return $pType->name; + // }); + // } - public static function getLanguages() - { + // public static function getLanguages() + // { - /** @var \Illuminate\Support\Collection<\App\Models\Language> */ - // $languages = app('languages'); + // /** @var \Illuminate\Support\Collection<\App\Models\Language> */ + // // $languages = app('languages'); - return \App\Models\Language::all()->each(function ($lang) { - $lang->name = ctrans('texts.lang_'.$lang->name); - })->sortBy(function ($lang) { - return $lang->name; - }); - } + // return \App\Models\Language::all()->each(function ($lang) { + // $lang->name = ctrans('texts.lang_'.$lang->name); + // })->sortBy(function ($lang) { + // return $lang->name; + // }); + // } public static function getCurrencies() { /** @var \Illuminate\Support\Collection<\App\Models\Currency> */ - $currencies = app('currencies'); - return $currencies; + return app('currencies'); - return \App\Models\Currency::all()->each(function ($currency) { - $currency->name = ctrans('texts.currency_'.Str::slug($currency->name, '_')); - })->sortBy(function ($currency) { - return $currency->name; - }); } - public static function getPaymentTerms() - { - return PaymentTerm::getCompanyTerms()->map(function ($term) { - $term['name'] = ctrans('texts.payment_terms_net').' '.$term['num_days']; + // public static function getPaymentTerms() + // { + // return PaymentTerm::getCompanyTerms()->map(function ($term) { + // $term['name'] = ctrans('texts.payment_terms_net').' '.$term['num_days']; - return $term; - }); - } + // return $term; + // }); + // } } diff --git a/composer.json b/composer.json index 801fedde6e..f33899c9ee 100644 --- a/composer.json +++ b/composer.json @@ -73,14 +73,12 @@ "league/csv": "^9.6", "league/flysystem-aws-s3-v3": "^3.0", "league/fractal": "^0.20.0", - "league/omnipay": "^3.1", "livewire/livewire": "^3", "microsoft/microsoft-graph": "^1.69", "mollie/mollie-api-php": "^2.36", "nelexa/zip": "^4.0", "nordigen/nordigen-php": "^1.1", "nwidart/laravel-modules": "^11.0", - "omnipay/paypal": "^3.0", "phpoffice/phpspreadsheet": "^1.29", "pragmarx/google2fa": "^8.0", "predis/predis": "^2", @@ -132,7 +130,6 @@ "app/Helpers/ClientPortal.php" ], "classmap": [ - "app/PaymentDrivers/Rotessa/vendor/karneaud/omnipay-rotessa/src/Omnipay/Rotessa/" ] }, "autoload-dev": { diff --git a/composer.lock b/composer.lock index e194aaba1e..55d090faa6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8fdb8245fbc563f8c09da161876f52a7", + "content-hash": "6eda3a2962158b87dab46711e65a8438", "packages": [ { "name": "adrienrn/php-mimetyper", @@ -1038,72 +1038,6 @@ }, "time": "2024-08-02T08:07:53+00:00" }, - { - "name": "clue/stream-filter", - "version": "v1.7.0", - "source": { - "type": "git", - "url": "https://github.com/clue/stream-filter.git", - "reference": "049509fef80032cb3f051595029ab75b49a3c2f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7", - "reference": "049509fef80032cb3f051595029ab75b49a3c2f7", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "Clue\\StreamFilter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering" - } - ], - "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/stream-filter", - "keywords": [ - "bucket brigade", - "callback", - "filter", - "php_user_filter", - "stream", - "stream_filter_append", - "stream_filter_register" - ], - "support": { - "issues": "https://github.com/clue/stream-filter/issues", - "source": "https://github.com/clue/stream-filter/tree/v1.7.0" - }, - "funding": [ - { - "url": "https://clue.engineering/support", - "type": "custom" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2023-12-20T15:40:13+00:00" - }, { "name": "composer/ca-bundle", "version": "1.5.1", @@ -2585,7 +2519,7 @@ }, { "name": "google/apiclient-services", - "version": "v0.366.0", + "version": "v0.367.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", @@ -2623,7 +2557,7 @@ ], "support": { "issues": "https://github.com/googleapis/google-api-php-client-services/issues", - "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.366.0" + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.367.0" }, "time": "2024-07-11T01:08:44+00:00" }, @@ -6008,69 +5942,6 @@ }, "time": "2022-04-15T14:02:14+00:00" }, - { - "name": "league/omnipay", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/omnipay.git", - "reference": "38f66a0cc043ed51d6edf7956d6439a2f263501f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay/zipball/38f66a0cc043ed51d6edf7956d6439a2f263501f", - "reference": "38f66a0cc043ed51d6edf7956d6439a2f263501f", - "shasum": "" - }, - "require": { - "omnipay/common": "^3.1", - "php": "^7.2|^8.0", - "php-http/discovery": "^1.14", - "php-http/guzzle7-adapter": "^1" - }, - "require-dev": { - "omnipay/tests": "^3|^4" - }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Adrian Macneil", - "email": "adrian@adrianmacneil.com" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Omnipay payment processing library", - "homepage": "https://omnipay.thephpleague.com/", - "keywords": [ - "checkout", - "creditcard", - "omnipay", - "payment" - ], - "support": { - "issues": "https://github.com/thephpleague/omnipay/issues", - "source": "https://github.com/thephpleague/omnipay/tree/v3.2.1" - }, - "funding": [ - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2021-06-05T11:34:12+00:00" - }, { "name": "livewire/livewire", "version": "v3.5.4", @@ -6546,94 +6417,6 @@ }, "time": "2024-07-17T08:02:14+00:00" }, - { - "name": "moneyphp/money", - "version": "v4.5.0", - "source": { - "type": "git", - "url": "https://github.com/moneyphp/money.git", - "reference": "a1daa7daf159b4044e3d0c34c41fe2be5860e850" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/moneyphp/money/zipball/a1daa7daf159b4044e3d0c34c41fe2be5860e850", - "reference": "a1daa7daf159b4044e3d0c34c41fe2be5860e850", - "shasum": "" - }, - "require": { - "ext-bcmath": "*", - "ext-filter": "*", - "ext-json": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" - }, - "require-dev": { - "cache/taggable-cache": "^1.1.0", - "doctrine/coding-standard": "^12.0", - "doctrine/instantiator": "^1.5.0 || ^2.0", - "ext-gmp": "*", - "ext-intl": "*", - "florianv/exchanger": "^2.8.1", - "florianv/swap": "^4.3.0", - "moneyphp/crypto-currencies": "^1.1.0", - "moneyphp/iso-currencies": "^3.4", - "php-http/message": "^1.16.0", - "php-http/mock-client": "^1.6.0", - "phpbench/phpbench": "^1.2.5", - "phpunit/phpunit": "^10.5.9", - "psalm/plugin-phpunit": "^0.18.4", - "psr/cache": "^1.0.1 || ^2.0 || ^3.0", - "vimeo/psalm": "~5.20.0" - }, - "suggest": { - "ext-gmp": "Calculate without integer limits", - "ext-intl": "Format Money objects with intl", - "florianv/exchanger": "Exchange rates library for PHP", - "florianv/swap": "Exchange rates library for PHP", - "psr/cache-implementation": "Used for Currency caching" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Money\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mathias Verraes", - "email": "mathias@verraes.net", - "homepage": "http://verraes.net" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Frederik Bosch", - "email": "f.bosch@genkgo.nl" - } - ], - "description": "PHP implementation of Fowler's Money pattern", - "homepage": "http://moneyphp.org", - "keywords": [ - "Value Object", - "money", - "vo" - ], - "support": { - "issues": "https://github.com/moneyphp/money/issues", - "source": "https://github.com/moneyphp/money/tree/v4.5.0" - }, - "time": "2024-02-15T19:47:21+00:00" - }, { "name": "monolog/monolog", "version": "3.7.0", @@ -7727,164 +7510,6 @@ ], "time": "2023-11-13T09:31:12+00:00" }, - { - "name": "omnipay/common", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/omnipay-common.git", - "reference": "2eca3823e9069e2c36b6007a090577d5584f9518" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-common/zipball/2eca3823e9069e2c36b6007a090577d5584f9518", - "reference": "2eca3823e9069e2c36b6007a090577d5584f9518", - "shasum": "" - }, - "require": { - "moneyphp/money": "^3.1|^4.0.3", - "php": "^7.2|^8", - "php-http/client-implementation": "^1", - "php-http/discovery": "^1.14", - "php-http/message": "^1.5", - "php-http/message-factory": "^1.1", - "symfony/http-foundation": "^2.1|^3|^4|^5|^6|^7" - }, - "require-dev": { - "http-interop/http-factory-guzzle": "^1.1", - "omnipay/tests": "^4.1", - "php-http/guzzle7-adapter": "^1", - "php-http/mock-client": "^1.6", - "squizlabs/php_codesniffer": "^3.8.1" - }, - "suggest": { - "league/omnipay": "The default Omnipay package provides a default HTTP Adapter." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Omnipay\\Common\\": "src/Common" - }, - "classmap": [ - "src/Omnipay.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Adrian Macneil", - "email": "adrian@adrianmacneil.com" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - }, - { - "name": "Jason Judge", - "email": "jason.judge@consil.co.uk" - }, - { - "name": "Del" - }, - { - "name": "Omnipay Contributors", - "homepage": "https://github.com/thephpleague/omnipay-common/contributors" - } - ], - "description": "Common components for Omnipay payment processing library", - "homepage": "https://github.com/thephpleague/omnipay-common", - "keywords": [ - "gateway", - "merchant", - "omnipay", - "pay", - "payment", - "purchase" - ], - "support": { - "issues": "https://github.com/thephpleague/omnipay-common/issues", - "source": "https://github.com/thephpleague/omnipay-common/tree/v3.3.0" - }, - "funding": [ - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2024-03-08T11:56:40+00:00" - }, - { - "name": "omnipay/paypal", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/omnipay-paypal.git", - "reference": "519db61b32ff0c1e56cbec94762b970ee9674f65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-paypal/zipball/519db61b32ff0c1e56cbec94762b970ee9674f65", - "reference": "519db61b32ff0c1e56cbec94762b970ee9674f65", - "shasum": "" - }, - "require": { - "omnipay/common": "^3" - }, - "require-dev": { - "omnipay/tests": "^3", - "phpro/grumphp": "^0.14", - "squizlabs/php_codesniffer": "^3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Omnipay\\PayPal\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Adrian Macneil", - "email": "adrian@adrianmacneil.com" - }, - { - "name": "Omnipay Contributors", - "homepage": "https://github.com/thephpleague/omnipay-paypal/contributors" - } - ], - "description": "PayPal gateway for Omnipay payment processing library", - "homepage": "https://github.com/thephpleague/omnipay-paypal", - "keywords": [ - "gateway", - "merchant", - "omnipay", - "pay", - "payment", - "paypal", - "purchase" - ], - "support": { - "issues": "https://github.com/thephpleague/omnipay-paypal/issues", - "source": "https://github.com/thephpleague/omnipay-paypal/tree/v3.0.2" - }, - "time": "2018-05-15T10:35:58+00:00" - }, { "name": "paragonie/constant_time_encoding", "version": "v2.7.0", @@ -8178,380 +7803,6 @@ }, "time": "2024-04-08T12:52:34+00:00" }, - { - "name": "php-http/discovery", - "version": "1.19.4", - "source": { - "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "0700efda8d7526335132360167315fdab3aeb599" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/0700efda8d7526335132360167315fdab3aeb599", - "reference": "0700efda8d7526335132360167315fdab3aeb599", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0|^2.0", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "nyholm/psr7": "<1.0", - "zendframework/zend-diactoros": "*" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "*", - "psr/http-factory-implementation": "*", - "psr/http-message-implementation": "*" - }, - "require-dev": { - "composer/composer": "^1.0.2|^2.0", - "graham-campbell/phpspec-skip-example-extension": "^5.0", - "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", - "sebastian/comparator": "^3.0.5 || ^4.0.8", - "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1" - }, - "type": "composer-plugin", - "extra": { - "class": "Http\\Discovery\\Composer\\Plugin", - "plugin-optional": true - }, - "autoload": { - "psr-4": { - "Http\\Discovery\\": "src/" - }, - "exclude-from-classmap": [ - "src/Composer/Plugin.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", - "homepage": "http://php-http.org", - "keywords": [ - "adapter", - "client", - "discovery", - "factory", - "http", - "message", - "psr17", - "psr7" - ], - "support": { - "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.19.4" - }, - "time": "2024-03-29T13:00:05+00:00" - }, - { - "name": "php-http/guzzle7-adapter", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/guzzle7-adapter.git", - "reference": "fb075a71dbfa4847cf0c2938c4e5a9c478ef8b01" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle7-adapter/zipball/fb075a71dbfa4847cf0c2938c4e5a9c478ef8b01", - "reference": "fb075a71dbfa4847cf0c2938c4e5a9c478ef8b01", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^7.0", - "php": "^7.2 | ^8.0", - "php-http/httplug": "^2.0", - "psr/http-client": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0", - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.0|^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Adapter\\Guzzle7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" - } - ], - "description": "Guzzle 7 HTTP Adapter", - "homepage": "http://httplug.io", - "keywords": [ - "Guzzle", - "http" - ], - "support": { - "issues": "https://github.com/php-http/guzzle7-adapter/issues", - "source": "https://github.com/php-http/guzzle7-adapter/tree/1.0.0" - }, - "time": "2021-03-09T07:35:15+00:00" - }, - { - "name": "php-http/httplug", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", - "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/2.4.0" - }, - "time": "2023-04-14T15:10:03+00:00" - }, - { - "name": "php-http/message", - "version": "1.16.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/message.git", - "reference": "5997f3289332c699fa2545c427826272498a2088" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/5997f3289332c699fa2545c427826272498a2088", - "reference": "5997f3289332c699fa2545c427826272498a2088", - "shasum": "" - }, - "require": { - "clue/stream-filter": "^1.5", - "php": "^7.2 || ^8.0", - "psr/http-message": "^1.1 || ^2.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0" - }, - "require-dev": { - "ergebnis/composer-normalize": "^2.6", - "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0 || ^2.0", - "laminas/laminas-diactoros": "^2.0 || ^3.0", - "php-http/message-factory": "^1.0.2", - "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", - "slim/slim": "^3.0" - }, - "suggest": { - "ext-zlib": "Used with compressor/decompressor streams", - "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "laminas/laminas-diactoros": "Used with Diactoros Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation" - }, - "type": "library", - "autoload": { - "files": [ - "src/filters.php" - ], - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", - "keywords": [ - "http", - "message", - "psr-7" - ], - "support": { - "issues": "https://github.com/php-http/message/issues", - "source": "https://github.com/php-http/message/tree/1.16.1" - }, - "time": "2024-03-07T13:22:09+00:00" - }, - { - "name": "php-http/message-factory", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/4d8778e1c7d405cbb471574821c1ff5b68cc8f57", - "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], - "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/1.1.0" - }, - "abandoned": "psr/http-factory", - "time": "2023-04-14T14:16:17+00:00" - }, - { - "name": "php-http/promise", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/fc85b1fba37c169a69a07ef0d5a8075770cc1f83", - "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", - "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.3.1" - }, - "time": "2024-03-15T13:55:21+00:00" - }, { "name": "php-jsonpointer/php-jsonpointer", "version": "v3.0.2", diff --git a/database/migrations/2024_07_29_235430_2024_30_07_tax_model_migration.php b/database/migrations/2024_07_29_235430_2024_30_07_tax_model_migration.php index ca0e7e2790..8337c44e16 100644 --- a/database/migrations/2024_07_29_235430_2024_30_07_tax_model_migration.php +++ b/database/migrations/2024_07_29_235430_2024_30_07_tax_model_migration.php @@ -16,7 +16,7 @@ return new class extends Migration // ->cursor() // ->each(function($company){ - // if($company->tax_data?->version == 'alpha') + // if($company->tax_data?->version == 'alpha' && ($company->tax_data->seller_subregion ?? false)) // { // $company->update(['tax_data' => new \App\DataMapper\Tax\TaxModel($company->tax_data)]); diff --git a/database/migrations/2024_08_04_225558_tax_model_migration_v2.php b/database/migrations/2024_08_04_225558_tax_model_migration_v2.php new file mode 100644 index 0000000000..999e69bdba --- /dev/null +++ b/database/migrations/2024_08_04_225558_tax_model_migration_v2.php @@ -0,0 +1,41 @@ +cursor() + ->each(function ($company) { + + if($company->tax_data?->version == 'alpha' && ($company->tax_data->seller_subregion ?? false)) { + + $company->update(['tax_data' => new \App\DataMapper\Tax\TaxModel($company->tax_data)]); + + } + + }); + + } + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/lang/en/texts.php b/lang/en/texts.php index eeab2f9c16..8a0abf6d6b 100644 --- a/lang/en/texts.php +++ b/lang/en/texts.php @@ -5309,7 +5309,8 @@ $lang = array( 'account_holder_information' => 'Account Holder Information', 'enter_information_for_the_account_holder' => 'Enter Information for the Account Holder', 'customer_type' => 'Customer Type', - 'process_date' => 'Process Date' + 'process_date' => 'Process Date', + 'forever_free' => 'Forever Free', ); return $lang; diff --git a/lang/nl/texts.php b/lang/nl/texts.php index 37700fdaba..b3fdcb5f44 100644 --- a/lang/nl/texts.php +++ b/lang/nl/texts.php @@ -2,14 +2,14 @@ $lang = array( 'organization' => 'Organisatie', - 'name' => 'Bedrijfsnaam', + 'name' => 'Naam', 'website' => 'Website', 'work_phone' => 'Telefoonnummer', 'address' => 'Adres', 'address1' => 'Straat', - 'address2' => 'Appartement / Busnr.', + 'address2' => 'Appartement/busnr.', 'city' => 'Stad', - 'state' => 'Staat/Provincie', + 'state' => 'Staat/provincie', 'postal_code' => 'Postcode', 'country_id' => 'Land', 'contacts' => 'Contactpersonen', @@ -21,7 +21,7 @@ $lang = array( 'payment_terms' => 'Betalingsvoorwaarden', 'currency_id' => 'Valuta', 'size_id' => 'Bedrijfsgrootte', - 'industry_id' => 'Industrie/Branche', + 'industry_id' => 'Sector/branche', 'private_notes' => 'Privénotities', 'invoice' => 'Factuur', 'client' => 'Klant', @@ -46,7 +46,7 @@ $lang = array( 'balance_due' => 'Te voldoen', 'invoice_design_id' => 'Ontwerp', 'terms' => 'Voorwaarden', - 'your_invoice' => 'Jouw factuur', + 'your_invoice' => 'Uw factuur', 'remove_contact' => 'Contact verwijderen', 'add_contact' => 'Contact toevoegen', 'create_new_client' => 'Klant aanmaken', @@ -75,7 +75,7 @@ $lang = array( 'clients' => 'Klanten', 'invoices' => 'Facturen', 'payments' => 'Betalingen', - 'credits' => 'Kredieten', + 'credits' => 'Creditfacturen', 'history' => 'Geschiedenis', 'search' => 'Zoeken', 'sign_up' => 'Registreren', @@ -95,7 +95,7 @@ $lang = array( 'provide_email' => 'Geef een geldig e-mailadres op', 'powered_by' => 'Factuur gemaakt met', 'no_items' => 'Geen artikelen', - 'recurring_invoices' => 'Herhalende facturen', + 'recurring_invoices' => 'Terugkerende facturen', 'recurring_help' => '

Stuur klanten automatisch wekelijks, twee keer per maand, maandelijks, per kwartaal of jaarlijks dezelfde facturen.

Gebruik :MONTH, :QUARTER of :YEAR voor dynamische datums. Basis wiskunde werkt ook, bijvoorbeeld :MONTH-1.

Voorbeelden van dynamische factuur variabelen:

@@ -104,10 +104,10 @@ $lang = array(
  • "Jaarlijks abonnement :YEAR+1" >> "Jaarlijks abonnement 2015"
  • "Aanbetaling voor :QUARTER+1" >> "Aanbetaling voor Q2"
  • ', - 'recurring_quotes' => 'Herhalende offertes', + 'recurring_quotes' => 'Terugkerende offertes', 'in_total_revenue' => 'totale inkomsten', - 'billed_client' => 'Gefactureerde klant', - 'billed_clients' => 'Gefactureerde klanten', + 'billed_client' => 'gefactureerde klant', + 'billed_clients' => 'gefactureerde klanten', 'active_client' => 'Actieve klant', 'active_clients' => 'Actieve klanten', 'invoices_past_due' => 'Vervallen facturen', @@ -159,7 +159,7 @@ $lang = array( 'date' => 'Datum', 'message' => 'Bericht', 'adjustment' => 'Aanpassing', - 'are_you_sure' => 'Weet je het zeker?', + 'are_you_sure' => 'Weet u het zeker?', 'payment_type_id' => 'Betalingswijze', 'amount' => 'Bedrag', 'work_email' => 'E-mailadres', @@ -171,8 +171,8 @@ $lang = array( 'localization' => 'Lokalisatie', 'remove_logo' => 'Logo verwijderen', 'logo_help' => 'Ondersteund: JPEG, GIF en PNG', - 'payment_gateway' => 'Betalingsgateway', - 'gateway_id' => 'Gateway', + 'payment_gateway' => 'Betaalprovider', + 'gateway_id' => 'Betaalprovider', 'email_notifications' => 'E-mailmeldingen', 'email_viewed' => 'E-mail mij wanneer een factuur is bekeken', 'email_paid' => 'E-mail mij wanneer een factuur is betaald', @@ -199,7 +199,7 @@ $lang = array( 'removed_logo' => 'Het logo is verwijderd', 'sent_message' => 'Het bericht is verzonden', 'invoice_error' => 'Selecteer een klant en verbeter eventuele fouten', - 'limit_clients' => 'You\'ve hit the :count client limit on Free accounts. Congrats on your success!', + 'limit_clients' => 'U heeft de klantlimiet van :count voor gratis accounts bereikt. Gefeliciteerd met uw succes!', 'payment_error' => 'Er was een fout bij het verwerken van de betaling. Probeer het later opnieuw.', 'registration_required' => 'Registratie verplicht', 'confirmation_required' => 'Bevestig het e-mailadres, :link om de bevestigingsmail opnieuw te ontvangen.', @@ -224,11 +224,11 @@ $lang = array( 'deleted_payment' => 'De betaling is verwijderd', 'deleted_payments' => 'Succesvol :count betalingen verwijderd', 'applied_payment' => 'De betaling is toegepast', - 'created_credit' => 'De creditnota is aangemaakt', - 'archived_credit' => 'De creditnota is gearchiveerd', - 'archived_credits' => 'Succesvol :count creditnota\'s gearchiveerd', - 'deleted_credit' => 'De creditnota is verwijderd', - 'deleted_credits' => 'Succesvol :count creditnota\'s verwijderd', + 'created_credit' => 'De creditfactuur is aangemaakt', + 'archived_credit' => 'De creditfactuur is gearchiveerd', + 'archived_credits' => 'Succesvol :count creditfacturen gearchiveerd', + 'deleted_credit' => 'De creditfactuur is verwijderd', + 'deleted_credits' => 'Succesvol :count creditfacturen verwijderd', 'imported_file' => 'Het bestand is geïmporteerd', 'updated_vendor' => 'De leverancier is gewijzigd', 'created_vendor' => 'De leverancier is aangemaakt', @@ -268,10 +268,10 @@ $lang = array( 'email_taken' => 'Dit e-mailadres is al geregistreerd', 'working' => 'Werkend', 'success' => 'Succes', - 'success_message' => 'Je bent nu geregistreerd! Klik op de link in de zojuist ontvangen bevestigingsmail om je e-mailadres te bevestigen.', + 'success_message' => 'U bent nu geregistreerd! Klik op de link in de zojuist ontvangen bevestigingsmail om uw e-mailadres te bevestigen.', 'erase_data' => 'Dit account is niet geregistreerd, de opgegeven data zal permanent worden verwijderd.', 'password' => 'Wachtwoord', - 'pro_plan_product' => 'Pro Plan', + 'pro_plan_product' => 'Pro-abonnement', 'unsaved_changes' => 'Er zijn wijzigingen aangebracht die nog niet zijn opgeslagen', 'custom_fields' => 'Aangepaste velden', 'company_fields' => 'Bedrijfsvelden', @@ -294,15 +294,15 @@ $lang = array( 'updated_product' => 'Het product is gewijzigd', 'created_product' => 'Het product is aangemaakt', 'archived_product' => 'Het product is gearchiveerd', - 'pro_plan_custom_fields' => ':link om aangepaste velden in te schakelen door het Pro Plan te nemen', + 'pro_plan_custom_fields' => ':link om aangepaste velden in te schakelen door het Pro-abonnement te nemen', 'advanced_settings' => 'Geavanceerde instellingen', - 'pro_plan_advanced_settings' => ':link om de geavanceerde instellingen te activeren door het Pro Plan te nemen', + 'pro_plan_advanced_settings' => ':link om de geavanceerde instellingen te activeren door het Pro-abonnement te nemen', 'invoice_design' => 'Factuurontwerp', 'specify_colors' => 'Kies kleuren', 'specify_colors_label' => 'Kies de kleuren die in de factuur gebruikt worden', 'chart_builder' => 'Grafiekbouwer', 'ninja_email_footer' => 'Gemaakt door :site | Aanmaken. Verzenden. Betaald krijgen.', - 'go_pro' => 'Go Pro', + 'go_pro' => 'Ga voor het Pro-abonnement', 'quote' => 'Offerte', 'quotes' => 'Offertes', 'quote_number' => 'Offertenummer', @@ -344,7 +344,7 @@ $lang = array( 'invoice_fields' => 'Factuurvelden', 'invoice_options' => 'Factuuropties', 'hide_paid_to_date' => 'Verberg "Reeds betaald"', - 'hide_paid_to_date_help' => 'Toon alleen het "Reeds betaald" gebied op je facturen als er een betaling gemaakt is.', + 'hide_paid_to_date_help' => 'Toon alleen het "Reeds betaald" gebied op uw facturen als er een betaling gemaakt is.', 'charge_taxes' => 'BTW berekenen', 'user_management' => 'Gebruikersbeheer', 'add_user' => 'Nieuwe gebruiker', @@ -381,33 +381,33 @@ $lang = array( 'mark_sent' => 'Markeer als verzonden', 'more_designs' => 'Meer ontwerpen', 'more_designs_title' => 'Aanvullende factuurontwerpen', - 'more_designs_cloud_header' => 'Neem Pro Plan voor meer factuurontwerpen', + 'more_designs_cloud_header' => 'Neem het Pro-abonnement voor meer factuurontwerpen', 'more_designs_cloud_text' => '', 'more_designs_self_host_text' => '', 'buy' => 'Kopen', 'bought_designs' => 'Aanvullende factuurontwerpen zijn toegevoegd', 'sent' => 'Verzonden', 'vat_number' => 'BTW-nummer', - 'payment_title' => 'Geef het betalingsadres en de creditcardgegevens op', + 'payment_title' => 'Geef het factuuradres en de creditcardgegevens op', 'payment_cvv' => '*Dit is het cijfer van 3-4 tekens op de achterkant van de creditcard', - 'payment_footer1' => '*Betalingsadres moet overeenkomen met het adres dat aan uw kaart gekoppeld is.', - 'payment_footer2' => '*Klik alsjeblieft slechts één keer op "PAY NOW" - deze verwerking kan tot 1 minuut duren.', + 'payment_footer1' => '*Factuuradres moet overeenkomen met het adres dat aan uw kaart gekoppeld is.', + 'payment_footer2' => '*Klik alstublieft slechts één keer op "PAY NOW" - deze verwerking kan tot 1 minuut duren.', 'id_number' => 'KVK-nummer', 'white_label_link' => 'Whitelabel', 'white_label_header' => 'Whitelabel', - 'bought_white_label' => 'Whitelabel licentie is geactiveerd', - 'white_labeled' => 'White labeled', + 'bought_white_label' => 'Whitelabel-licentie is geactiveerd', + 'white_labeled' => 'White-labeled', 'restore' => 'Herstel', 'restore_invoice' => 'Herstel factuur', 'restore_quote' => 'Herstel offerte', 'restore_client' => 'Herstel klant', - 'restore_credit' => 'Herstel creditnota', + 'restore_credit' => 'Herstel creditfactuur', 'restore_payment' => 'Herstel betaling', 'restored_invoice' => 'De factuur is hersteld', 'restored_quote' => 'De offerte is hersteld', 'restored_client' => 'De klant is hersteld', 'restored_payment' => 'De betaling is hersteld', - 'restored_credit' => 'De creditnota is hersteld', + 'restored_credit' => 'De creditfactuur is hersteld', 'reason_for_canceling' => 'Help ons om onze site te verbeteren door ons te vertellen waarom u weggaat.', 'discount_percent' => 'Percentage', 'discount_amount' => 'Bedrag', @@ -436,7 +436,7 @@ $lang = array( 'token_billing_checkbox' => 'Sla creditcardgegevens op', 'view_in_gateway' => 'In :gateway bekijken', 'use_card_on_file' => 'Gebruik opgeslagen kaart', - 'edit_payment_details' => 'Wijzig betalingsgegevens', + 'edit_payment_details' => 'Wijzig betaalgegevens', 'token_billing' => 'Kaartgegevens opslaan', 'token_billing_secure' => 'Kaartgegevens worden veilig opgeslagen door :link', 'support' => 'Ondersteuning', @@ -447,7 +447,7 @@ $lang = array( 'billing_method' => 'Betaalmethode', 'order_overview' => 'Besteloverzicht', 'match_address' => '*Adres moet overeenkomen met adres van creditcard.', - 'click_once' => '*Klik alstublieft maar één keer; het kan een minuut duren om de betaling te verwerken.', + 'click_once' => '*Klik alstublieft slechts één keer; het kan 1 minuut duren om de betaling te verwerken.', 'invoice_footer' => 'Factuurvoettekst', 'save_as_default_footer' => 'Bewaar als standaard voettekst', 'token_management' => 'Tokenbeheer', @@ -460,12 +460,12 @@ $lang = array( 'edit_token' => 'Wijzig token', 'delete_token' => 'Verwijder token', 'token' => 'Token', - 'add_gateway' => 'Betalingsgateway toevoegen', - 'delete_gateway' => 'Betalingsgateway verwijderen', - 'edit_gateway' => 'Betalingsgateway bewerken', - 'updated_gateway' => 'De gateway is gewijzigd', - 'created_gateway' => 'De gateway is aangemaakt', - 'deleted_gateway' => 'De gateway is verwijderd', + 'add_gateway' => 'Betaalprovider toevoegen', + 'delete_gateway' => 'Betaalprovider verwijderen', + 'edit_gateway' => 'Betaalprovider bewerken', + 'updated_gateway' => 'De betaalprovider is gewijzigd', + 'created_gateway' => 'De betaalprovider is aangemaakt', + 'deleted_gateway' => 'De betaalprovider is verwijderd', 'pay_with_paypal' => 'PayPal', 'pay_with_card' => 'Creditcard', 'change_password' => 'Verander wachtwoord', @@ -544,7 +544,7 @@ $lang = array( 'stop' => 'Stop', 'now' => 'Nu', 'timer' => 'Timer', - 'manual' => 'Manueel', + 'manual' => 'Handmatig', 'date_and_time' => 'Datum en tijd', 'second' => 'Seconde', 'seconds' => 'Seconden', @@ -586,7 +586,7 @@ $lang = array( 'pro_plan_feature5' => 'Multi-user toegang & activeit tracking', 'pro_plan_feature6' => 'Maak offertes & Pro-forma facturen aan', 'pro_plan_feature7' => 'Pas factuur veldtitels & nummering aan', - 'pro_plan_feature8' => 'Optie om PDFs toe te voegen aan de emails naar klanten', + 'pro_plan_feature8' => 'Optie om PDFs toe te voegen aan de e-mails naar klanten', 'resume' => 'Doorgaan', 'break_duration' => 'Pauze', 'edit_details' => 'Wijzig details', @@ -663,7 +663,7 @@ $lang = array( 'status_unpaid' => 'Onbetaald', 'status_all' => 'Alles', 'show_line_item_tax' => 'BTW-tarieven per regel tonen', - 'auto_bill' => 'Automatische incasso', + 'auto_bill' => 'Automatische betaling', 'military_time' => '24-uurs klok', 'last_sent' => 'Laatst verstuurd', 'reminder_emails' => 'Herinneringsmails', @@ -702,7 +702,7 @@ $lang = array( 'verify_email' => 'Klik alstublieft op de link in de accountbevestigings-e-mail om uw e-mailadres te bevestigen.', 'basic_settings' => 'Basisinstellingen', 'pro' => 'Pro', - 'gateways' => 'Betalingsverwerkers', + 'gateways' => 'Betaalproviders', 'next_send_on' => 'Verstuur volgende: :date', 'no_longer_running' => 'Deze factuur is niet ingepland', 'general_settings' => 'Algemene instellingen', @@ -738,7 +738,7 @@ $lang = array( 'activity_7' => ':contact heeft factuur :invoice voor :client bekeken', 'activity_8' => ':user heeft factuur :invoice gearchiveerd', 'activity_9' => ':user heeft factuur :invoice verwijderd', - 'activity_10' => ':user ingevoerde betaling :payment voor :payment _bedrag op factuur :invoice voor :client', + 'activity_10' => ':user heeft betaling :payment ingevoerd voor een bedrag van:payment_amount voor factuur :invoice voor :client', 'activity_11' => ':user heeft betaling :payment bijgewerkt', 'activity_12' => ':user heeft betaling :payment gearchiveerd', 'activity_13' => ':user heeft betaling :payment verwijderd', @@ -772,11 +772,11 @@ $lang = array( 'activity_45' => ':user heeft taak :task verwijderd', 'activity_46' => ':user heeft taak :task hersteld', 'activity_47' => ':user heeft uitgave :expense bijgewerkt', - 'activity_48' => ':user heeft de gebruiker: :user aangemaakt', - 'activity_49' => ':user heeft de gebruiker: :user aangepast', - 'activity_50' => ':user heeft de gebruiker: :user gearchiveerd', - 'activity_51' => ':user heeft de gebruiker: :user verwijderd', - 'activity_52' => ':user heeft de gebruiker: :user hersteld', + 'activity_48' => ':user heeft de gebruiker :user aangemaakt', + 'activity_49' => ':user heeft de gebruiker :user aangepast', + 'activity_50' => ':user heeft de gebruiker :user gearchiveerd', + 'activity_51' => ':user heeft de gebruiker :user verwijderd', + 'activity_52' => ':user heeft de gebruiker :user hersteld', 'activity_53' => ':user heeft factuur :invoice als verstuurd gemarkeerd', 'activity_54' => ':user betaalde factuur :invoice', 'activity_55' => ':contact heeft op ticket :ticket gereageerd', @@ -788,8 +788,8 @@ $lang = array( 'default_messages' => 'Standaardberichten', 'quote_terms' => 'Offertevoorwaarden', 'default_quote_terms' => 'Standaard offertevoorwaarden', - 'default_invoice_terms' => 'Stel standaard factuurvoorwaarden in', - 'default_invoice_footer' => 'Stel standaard factuurfvoettekst in', + 'default_invoice_terms' => 'Stel standaardvoorwaarden voor factuur in', + 'default_invoice_footer' => 'Stel standaardvoettekst voor factuur in', 'quote_footer' => 'Offertevoettekst', 'free' => 'Gratis', 'quote_is_approved' => 'Akkoord', @@ -799,8 +799,8 @@ $lang = array( 'archived_token' => 'Het token is gearchiveerd', 'archive_user' => 'Archiveer gebruiker', 'archived_user' => 'De gebruiker is gearchiveerd', - 'archive_account_gateway' => 'Gateway verwijderen', - 'archived_account_gateway' => 'De betalingsverwerker is gearchiveerd', + 'archive_account_gateway' => 'Betaalprovider verwijderen', + 'archived_account_gateway' => 'De betaalprovider is gearchiveerd', 'archive_recurring_invoice' => 'Archiveer terugkerende factuur', 'archived_recurring_invoice' => 'De terugkerende factuur is gearchiveerd', 'delete_recurring_invoice' => 'Verwijder terugkerende factuur', @@ -823,7 +823,7 @@ $lang = array( 'user' => 'Gebruiker', 'country' => 'Land', 'include' => 'Voeg in', - 'logo_too_large' => 'Je logo is :size groot, voor betere PDF prestaties raden we je aan om een afbeelding kleiner dan 200KB te uploaden.', + 'logo_too_large' => 'Uw logo is :size groot, voor betere PDF-prestaties raden we u aan om een afbeelding kleiner dan 200KB te uploaden.', 'import_freshbooks' => 'Importeren van FreshBooks', 'import_data' => 'Importeer data', 'source' => 'Bron', @@ -839,12 +839,12 @@ $lang = array( 'show_archived_users' => 'Toon gearchiveerde gebruikers', 'notes' => 'Notities', 'invoice_will_create' => 'Factuur zal worden aangemaakt', - 'invoices_will_create' => 'factuur zal worden aangemaakt', - 'failed_to_import' => 'De volgende regels konden niet worden geïmporteerd, ze bestaan al of missen verplichte velden.', + 'invoices_will_create' => 'facturen zullen worden aangemaakt', + 'failed_to_import' => 'De volgende regels konden niet worden geïmporteerd, ze bestaan al of missen verplichte velden.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'E-mail Ontwerp', + 'email_design' => 'E-mailontwerp', 'due_by' => 'Vervaldatum :date', 'enable_email_markup' => 'Opmaak inschakelen', 'enable_email_markup_help' => 'Maak het gemakkelijker voor uw klanten om te betalen door schema.org opmaak toe te voegen aan uw e-mails.', @@ -857,7 +857,7 @@ $lang = array( 'dark' => 'Donker', 'industry_help' => 'Wordt gebruikt om een vergelijking te kunnen maken met de gemiddelden van andere bedrijven uit dezelfde sector en van dezelfde grootte.', 'subdomain_help' => 'Stel het subdomein in of toon de factuur op uw eigen website.', - 'website_help' => 'Toon de factuur in een iFrame op uw eigen website', + 'website_help' => 'Toon de factuur in een iframe op uw eigen website', 'invoice_number_help' => 'Kies een voorvoegsel of gebruik een patroon om het factuurnummer dynamisch te genereren.', 'quote_number_help' => 'Kies een voorvoegsel of gebruik een patroon om het offertenummer dynamisch te genereren.', 'custom_client_fields_helps' => 'Voeg een veld toe bij het creëren van een klant en toon het label en de waarde op de PDF.', @@ -865,13 +865,13 @@ $lang = array( 'custom_invoice_fields_helps' => 'Voeg een veld toe bij het creëren van een factuur en toon het label en de waarde op de PDF.', 'custom_invoice_charges_helps' => 'Plaatst een tekstveld op de factuur aanmaak-/bewerkpagina en verwerkt de facturatiekosten in het subtotaal.', 'token_expired' => 'De validatie token is verlopen. Probeer het opnieuw.', - 'invoice_link' => 'Factuur Link', - 'button_confirmation_message' => 'Bevestig uw email.', + 'invoice_link' => 'Factuurlink', + 'button_confirmation_message' => 'Bevestig uw e-mailadres.', 'confirm' => 'Bevestigen', 'email_preferences' => 'E-mailvoorkeuren', 'created_invoices' => 'Succesvol :count factuur(en) aangemaakt', - 'next_invoice_number' => 'Het volgende factuurnummer is :number.', - 'next_quote_number' => 'Het volgende offertenummer is :number.', + 'next_invoice_number' => 'Het eerstvolgende factuurnummer is :number.', + 'next_quote_number' => 'Het eerstvolgende offertenummer is :number.', 'days_before' => 'dagen voor de', 'days_after' => 'dagen na de', 'field_due_date' => 'vervaldatum', @@ -879,7 +879,7 @@ $lang = array( 'schedule' => 'Schema', 'email_designs' => 'E-mailontwerpen', 'assigned_when_sent' => 'Toegewezen zodra verzonden', - 'white_label_purchase_link' => 'Koop een whitelabel licentie', + 'white_label_purchase_link' => 'Koop een whitelabel-licentie', 'expense' => 'Uitgave', 'expenses' => 'Uitgaven', 'new_expense' => 'Nieuwe uitgave', @@ -935,7 +935,7 @@ $lang = array(
  • Vandaag is het vrijdag, de vervaldatum is ingesteld op de 1e vrijdag erna. De vervaldatum zal volgende week vrijdag zijn, niet vandaag.
  • ', 'due' => 'Vervaldatum', - 'next_due_on' => 'Vervaldatum volgende: :date', + 'next_due_on' => 'Eerstvolgende vervaldatum: :date', 'use_client_terms' => 'Gebruik betalingsvoorwaarden klant', 'day_of_month' => ':ordinal dag van de maand', 'last_day_of_month' => 'Laatste dag van de maand', @@ -955,7 +955,7 @@ $lang = array( 'invoice_message_button' => 'Klik op de onderstaande link om uw factuur van :amount te bekijken.', 'quote_message_button' => 'Klik op de onderstaande link om uw offerte van :amount te bekijken.', 'payment_message_button' => 'Bedankt voor uw betaling van :amount.', - 'payment_type_direct_debit' => 'Automatisch incasso', + 'payment_type_direct_debit' => 'Automatische incasso', 'bank_accounts' => 'Bankrekeningen', 'add_bank_account' => 'Bankrekening toevoegen', 'setup_account' => 'Rekening instellen', @@ -991,16 +991,16 @@ $lang = array( 'last_page' => 'laatste pagina', 'all_pages_header' => 'Toon koptekst op', 'all_pages_footer' => 'Toon footer op', - 'invoice_currency' => 'Factuur valuta', + 'invoice_currency' => 'Factuurvaluta', 'enable_https' => 'We raden u dringend aan om HTTPS te gebruiken om creditcard informatie digitaal te accepteren.', 'quote_issued_to' => 'Offerte uitgeschreven voor', 'show_currency_code' => 'Valutacode', - 'free_year_message' => 'Uw account is gratis geüpgraded naar een pro account voor één jaar.', - 'trial_message' => 'Uw account zal een gratis twee weken durende probeerversie van ons pro plan krijgen.', - 'trial_footer' => 'Uw gratis probeerversie duurt nog :count dagen, :link om direct te upgraden.', - 'trial_footer_last_day' => 'Dit is de laatste dag van uw gratis probeerversie, :link om direct te upgraden.', + 'free_year_message' => 'Uw account is gratis geüpgraded naar een Pro-abonnement voor één jaar.', + 'trial_message' => 'Uw account zal een gratis twee weken durende probeerversie van ons Pro-abonnement krijgen.', + 'trial_footer' => 'Uw gratis probeerversie duurt nog :count dagen, navigeer naar :link om direct te upgraden.', + 'trial_footer_last_day' => 'Dit is de laatste dag van uw gratis probeerversie, navigeer naar :link om direct te upgraden.', 'trial_call_to_action' => 'Start gratis probeerversie', - 'trial_success' => 'De gratis twee weken durende probeerversie van het pro plan is geactiveerd.', + 'trial_success' => 'De gratis, twee weken durende, proefperiode van het Pro-abonnement is gestart.', 'overdue' => 'Verlopen', 'white_label_text' => 'Koop een white label licentie voor één jaar voor $:price om de Invoice Ninja reclame te verwijderen van facturen en het klantenportaal.', 'user_email_footer' => 'Ga alstublieft naar :link om uw e-mail notificatie instellingen aan te passen', @@ -1010,7 +1010,7 @@ $lang = array( 'old_browser' => 'Gelieve een :link te gebruiken', 'newer_browser' => 'nieuwere browser', 'white_label_custom_css' => ':link voor $:price om eigen opmaak te gebruiken en ons project te ondersteunen.', - 'pro_plan_remove_logo' => ':link om het Invoice Ninja logo te verwijderen door het pro plan te nemen', + 'pro_plan_remove_logo' => ':link om het Invoice Ninja logo te verwijderen door het Pro-abonnement te nemen', 'pro_plan_remove_logo_link' => 'Klik hier', 'invitation_status_sent' => 'Verzonden', 'invitation_status_opened' => 'Geopend', @@ -1018,22 +1018,22 @@ $lang = array( 'email_error_inactive_client' => 'E-mails kunnen niet worden verstuurd naar inactieve klanten', 'email_error_inactive_contact' => 'E-mails kunnen niet worden verstuurd naar inactieve contactpersonen', 'email_error_inactive_invoice' => 'E-mails kunnen niet worden verstuurd naar inactieve facturen', - 'email_error_inactive_proposal' => 'Emails kunnen niet verzonden worden naar inactieve voorstellen', + 'email_error_inactive_proposal' => 'E-mails kunnen niet verzonden worden naar inactieve voorstellen', 'email_error_user_unregistered' => 'Registreer een account om e-mails te kunnen versturen', 'email_error_user_unconfirmed' => 'Bevestig uw account om e-mails te kunnen versturen', 'email_error_invalid_contact_email' => 'Ongeldig e-mailadres van contactpersoon', 'navigation' => 'Navigatie', - 'list_invoices' => 'Toon Facturen', - 'list_clients' => 'Toon Klanten', - 'list_quotes' => 'Toon Offertes', - 'list_tasks' => 'Toon Taken', - 'list_expenses' => 'Toon Uitgaven', - 'list_recurring_invoices' => 'Toon Terugkerende Facturen', - 'list_payments' => 'Toon Betalingen', - 'list_credits' => 'Toon Kredieten', + 'list_invoices' => 'Toon facturen', + 'list_clients' => 'Toon klanten', + 'list_quotes' => 'Toon offertes', + 'list_tasks' => 'Toon taken', + 'list_expenses' => 'Toon uitgaven', + 'list_recurring_invoices' => 'Toon terugkerende facturen', + 'list_payments' => 'Toon betalingen', + 'list_credits' => 'Toon kredieten', 'tax_name' => 'Belasting naam', 'report_settings' => 'Rapport instellingen', - 'new_user' => 'Nieuwe Gebruiker', + 'new_user' => 'Nieuwe gebruiker', 'new_product' => 'Nieuw product', 'new_tax_rate' => 'Nieuw BTW-tarief', 'invoiced_amount' => 'Gefactureerd bedrag', @@ -1096,18 +1096,18 @@ $lang = array( 'invoice_embed_documents' => 'Documenten invoegen', 'invoice_embed_documents_help' => 'Bijgevoegde afbeeldingen weergeven in de factuur.', 'document_email_attachment' => 'Documenten bijvoegen', - 'ubl_email_attachment' => 'Attach UBL/E-Invoice', + 'ubl_email_attachment' => 'UBL en/of e-factuur bijvoegen', 'download_documents' => 'Documenten downloaden (:size)', 'documents_from_expenses' => 'Van uitgaven:', 'dropzone_default_message' => 'Sleep bestanden hierheen of klik om te uploaden', 'dropzone_default_message_disabled' => 'Uploads uitgeschakeld', - 'dropzone_fallback_message' => 'Je browser ondersteunt het slepen van bestanden niet.', - 'dropzone_fallback_text' => 'Gebruik de onderstaande optie om je bestanden te uploaden.', + 'dropzone_fallback_message' => 'Uw browser ondersteunt het slepen van bestanden niet.', + 'dropzone_fallback_text' => 'Gebruik de onderstaande optie om uw bestanden te uploaden.', 'dropzone_file_too_big' => 'Het bestand is te groot ({{filesize}}MiB). Maximale grootte: {{maxFilesize}}MiB.', - 'dropzone_invalid_file_type' => 'Je kan geen bestanden van dit type uploaden.', + 'dropzone_invalid_file_type' => 'U kunt geen bestanden van dit type uploaden.', 'dropzone_response_error' => 'De server gaf foutcode {{statusCode}} terug.', 'dropzone_cancel_upload' => 'Upload annuleren', - 'dropzone_cancel_upload_confirmation' => 'Weet je zeker dat je deze upload wilt annuleren?', + 'dropzone_cancel_upload_confirmation' => 'Weet u zeker dat u deze upload wilt annuleren?', 'dropzone_remove_file' => 'Bestand verwijderen', 'documents' => 'Documenten', 'document_date' => 'Documentdatum', @@ -1123,7 +1123,7 @@ $lang = array( 'plan_status' => 'Status abonnement', 'plan_upgrade' => 'Upgraden', - 'plan_change' => 'Plan beheren', + 'plan_change' => 'Abonnement beheren', 'pending_change_to' => 'Veranderd naar', 'plan_changes_to' => ':plan op :date', 'plan_term_changes_to' => ':plan (:term) op :date', @@ -1137,7 +1137,7 @@ $lang = array( 'plan_free' => 'Gratis', 'plan_pro' => 'Pro', 'plan_enterprise' => 'Zakelijk', - 'plan_white_label' => 'Zelf gehost (White label)', + 'plan_white_label' => 'Zelf gehost (white-label)', 'plan_free_self_hosted' => 'Zelf gehost (Gratis)', 'plan_trial' => 'Proefabonnement', 'plan_term' => 'Duur', @@ -1152,13 +1152,13 @@ $lang = array( 'plan_started' => 'Abonnement gestart', 'plan_expires' => 'Abonnement verloopt', - 'white_label_button' => 'Whitelabel kopen', + 'white_label_button' => 'Whitelabel-licentie kopen', 'pro_plan_year_description' => 'Jaarabonnement op Invoice Ninja Pro.', 'pro_plan_month_description' => 'Maandabonnement op Invoice Ninja Pro.', - 'enterprise_plan_product' => 'Zakelijk abonnement', - 'enterprise_plan_year_description' => 'Jaarabonnement op Invoice Ninja zakelijk.', - 'enterprise_plan_month_description' => 'Maandabonnement op Invoice Ninja zakelijk.', + 'enterprise_plan_product' => 'Enterprise-abonnement', + 'enterprise_plan_year_description' => 'Jaarabonnement op Invoice Ninja Enterprise.', + 'enterprise_plan_month_description' => 'Maandabonnement op Invoice Ninja Enterprise.', 'plan_credit_product' => 'Krediet', 'plan_credit_description' => 'Krediet voor ongebruikte tijd', 'plan_pending_monthly' => 'Zal omgezet wordt in maandelijks op :date', @@ -1169,7 +1169,7 @@ $lang = array( 'invoice_number_padding' => 'Marge', 'preview' => 'Voorbeeld', 'list_vendors' => 'Toon leveranciers', - 'add_users_not_supported' => 'Upgrade naar het Enterprise Plan om extra gebruikers aan uw account toe te voegen.', + 'add_users_not_supported' => 'Upgrade naar het Enterprise-abonnement om extra gebruikers aan uw account toe te voegen.', 'enterprise_plan_features' => 'Het Enterprise Plan voegt ondersteuning toe voor meerdere gebruikers en bestandsbijlagen, :link om de volledige lijst met functies te zien.', 'return_to_app' => 'Terug naar de app', @@ -1210,7 +1210,7 @@ $lang = array( 'ach' => 'ACH', 'enable_ach' => 'Accepteer US bank transacties', 'stripe_ach_help' => 'ACH ondersteuning moet ook ingeschakeld zijn in :link.', - 'ach_disabled' => 'Er is al een andere gateway geconfigureerd voor directe afschrijving.', + 'ach_disabled' => 'Er is al een andere betaalprovider geconfigureerd voor directe afschrijvingen.', 'plaid' => 'Plaid', 'client_id' => 'Klantnummer', @@ -1231,58 +1231,58 @@ $lang = array( 'company_account' => 'Bedrijfsrekening', 'account_holder_name' => 'Rekeninghouder', 'add_account' => 'Rekening toevoegen', - 'payment_methods' => 'Betalingsmethode', + 'payment_methods' => 'Betaalmethode', 'complete_verification' => 'Verificatie voltooien', 'verification_amount1' => 'Bedrag 1', 'verification_amount2' => 'Bedrag 2', 'payment_method_verified' => 'Verificatie voltooid', 'verification_failed' => 'Verificatie mislukt', - 'remove_payment_method' => 'Betalingsmethode verwijderen', - 'confirm_remove_payment_method' => 'Weet u zeker dat u deze betalingsmethode wilt verwijderen?', + 'remove_payment_method' => 'Betaalmethode verwijderen', + 'confirm_remove_payment_method' => 'Weet u zeker dat u deze betaalmethode wilt verwijderen?', 'remove' => 'Verwijderen', - 'payment_method_removed' => 'Betalingsmethode verwijderd.', + 'payment_method_removed' => 'Betaalmethode verwijderd.', 'bank_account_verification_help' => 'We hebben twee bedragen met de omschrijving "VERIFICATION" overgeboekt naar uw rekening. Het duurt 1 à 2 werkdagen voordat deze overschrijvingen zichtbaar zijn op uw afschriften. Voer de bedragen hieronder in.', 'bank_account_verification_next_steps' => 'We hebben twee bedragen met de omschrijving "VERIFICATION" overgeboekt naar uw rekening. Het duurt 1 à 2 werkdagen voordat deze overschrijvingen zichtbaar zijn op uw afschriften. -Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen en klik op "Verificatie voltooien" direct naast de rekening.', +Kom terug naar deze betaalmethode pagina zodra u de bedragen heeft ontvangen en klik op "Verificatie voltooien" direct naast de rekening.', 'unknown_bank' => 'Onbekende bank', 'ach_verification_delay_help' => 'U kunt de rekening gebruiken na het voltooien van de verificatie. Verificatie duurt doorgaans 1 à 2 werkdagen.', 'add_credit_card' => 'Creditcard toevoegen', - 'payment_method_added' => 'Betalingsmethode toegevoegd.', - 'use_for_auto_bill' => 'Gebruiken voor Autobill', - 'used_for_auto_bill' => 'Autobill betalingsmethode', - 'payment_method_set_as_default' => 'Autobill betalingsmethode instellen.', + 'payment_method_added' => 'Betaalmethode toegevoegd.', + 'use_for_auto_bill' => 'Gebruiken voor automatische betaling', + 'used_for_auto_bill' => 'Betaalmethode voor automatische betalingen', + 'payment_method_set_as_default' => 'Betaalmethode voor automatische betalingen instellen.', 'activity_41' => 'Betaling van :payment_amount mislukt (:payment)', 'webhook_url' => 'Webhook URL', 'stripe_webhook_help' => 'U moet :link.', 'stripe_webhook_help_link_text' => 'deze URL toevoegen als een endpoint in Stripe', 'gocardless_webhook_help_link_text' => 'deze URL toevoegen als een endpoint in GoCardless', - 'payment_method_error' => 'Er is een fout opgetreden bij het toevoegen van de betalingsmethode. Probeer het later opnieuw.', + 'payment_method_error' => 'Er is een fout opgetreden bij het toevoegen van de betaalmethode. Probeer het later opnieuw.', 'notification_invoice_payment_failed_subject' => 'Betaling mislukt voor factuur :invoice', 'notification_invoice_payment_failed' => 'Een betaling van :client voor factuur :invoice is mislukt. De betaling is gemarkeerd als mislukt en het :amount is toegevoegd aan het krediet van de klant.', 'link_with_plaid' => 'Rekening direct koppelen met Plaid', 'link_manually' => 'Handmatig koppelen', 'secured_by_plaid' => 'Beveiligd met Plaid', 'plaid_linked_status' => 'Uw bankrekening bij :bank', - 'add_payment_method' => 'Betalingsmethode toevoegen', + 'add_payment_method' => 'Betaalmethode toevoegen', 'account_holder_type' => 'Type rekeninghouder', - 'ach_authorization' => 'Ik geef :company toestemming om mijn bankrekening te gebruiken voor toekomstige betalingen en, indien nodig, te crediteren op mijn rekening om foutieve afschrijvingen te corrigeren. I begrijp dat ik deze toestemming te allen tijde mag annuleren door de betalingsmethode te verwijderen of door contact op te nemen via :email.', - 'ach_authorization_required' => 'U moet toestemming geven voor ACH overschrijvingen.', + 'ach_authorization' => 'Ik geef :company toestemming om mijn bankrekening te gebruiken voor toekomstige betalingen en, indien nodig, te crediteren op mijn rekening om foutieve afschrijvingen te corrigeren. Ik begrijp dat ik deze toestemming te allen tijde mag intrekken door de betaalmethode te verwijderen of door contact op te nemen via :email.', + 'ach_authorization_required' => 'U moet toestemming geven voor ACH-overschrijvingen.', 'off' => 'Uit', - 'opt_in' => 'Meedoen', + 'opt_in' => 'Inschrijven', 'opt_out' => 'Terugtrekken', 'always' => 'Altijd', 'opted_out' => 'Teruggetrokken', 'opted_in' => 'Meegedaan', - 'manage_auto_bill' => 'Beheer Autobill', + 'manage_auto_bill' => 'Beheer automatische betalingen', 'enabled' => 'Ingeschakeld', 'paypal' => 'PayPal', 'braintree_enable_paypal' => 'PayPal betalingen via BrainTree inschakelen', - 'braintree_paypal_disabled_help' => 'De PayPal gateway verwerkt PayPal betalingen', + 'braintree_paypal_disabled_help' => 'De PayPal-gateway verwerkt PayPal-betalingen', 'braintree_paypal_help' => 'U moet ook :link.', 'braintree_paypal_help_link_text' => 'PayPal koppelen aan uw BrainTree account', - 'token_billing_braintree_paypal' => 'Betalingsgegevens opslaan', + 'token_billing_braintree_paypal' => 'Betaalgegevens opslaan', 'add_paypal_account' => 'PayPal rekening toevoegen', - 'no_payment_method_specified' => 'Geen betalingsmethode gespecificeerd', + 'no_payment_method_specified' => 'Geen betaalmethode gespecificeerd', 'chart_type' => 'Grafiektype', 'format' => 'Formaat', 'import_ofx' => 'OFX importeren', @@ -1305,21 +1305,21 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'created_wepay_confirmation_required' => 'Controleer uw e-mail en bevestig uw e-mailadres met WePay.', 'switch_to_wepay' => 'Overschakelen naar WePay', 'switch' => 'Overschakelen', - 'restore_account_gateway' => 'Herstel gateway', - 'restored_account_gateway' => 'De gateway is hersteld', + 'restore_account_gateway' => 'Herstel betaalprovider', + 'restored_account_gateway' => 'De betaalprovider is hersteld', 'united_states' => 'Verenigde Staten', 'canada' => 'Canada', 'accept_debit_cards' => 'Accepteer betaalkaart', 'debit_cards' => 'Betaalkaarten', - 'warn_start_date_changed' => 'Het volgende factuur zal verzonden worden op de nieuwe startdatum.', - 'warn_start_date_changed_not_sent' => 'Het volgende factuur zal aangemaakt worden op de nieuwe startdatum.', + 'warn_start_date_changed' => 'De volgende factuur zal verzonden worden op de nieuwe startdatum.', + 'warn_start_date_changed_not_sent' => 'De volgende factuur zal aangemaakt worden op de nieuwe startdatum.', 'original_start_date' => 'Oorspronkelijke startdatum', 'new_start_date' => 'Nieuwe startdatum', 'security' => 'Beveiliging', 'see_whats_new' => 'Bekijk wat veranderde in v:version', 'wait_for_upload' => 'Gelieve te wachten tot de upload van het document compleet is.', - 'upgrade_for_permissions' => 'Upgrade naar ons Enterprise Plan om machtigingen in te schakelen.', + 'upgrade_for_permissions' => 'Upgrade naar ons Enterprise-abonnement om machtigingen in te schakelen.', 'enable_second_tax_rate' => 'Het opgeven van een tweede extra belastingregel aanzetten', 'payment_file' => 'Betalingsbestand', 'expense_file' => 'Uitgavenbestand', @@ -1330,43 +1330,43 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'created_products' => 'Succesvol :count product(en) aangemaakt/bijgewerkt', 'export_help' => 'Gebruik JSON als u van plan bent om de gegevens te importeren in Invoice Ninja.
    Het bestand omvat klanten, producten, facturen, offertes en betalingen.', 'selfhost_export_help' => '
    We raden mysqldump aan om een volledige backup te maken.', - 'JSON_file' => 'JSON bestand', + 'JSON_file' => 'JSON-bestand', 'view_dashboard' => 'Bekijk dashboard', 'client_session_expired' => 'Sessie verlopen', 'client_session_expired_message' => 'Uw sessie is verlopen. Gelieve de link in de e-mail opnieuw te openen.', - 'auto_bill_notification' => 'Deze factuur zal automatisch worden gefactureerd aan uw opgeslagen betalingsmethode op de vervaldag.', + 'auto_bill_notification' => 'Deze factuur zal op :due_date automatisch worden voldaan via :payment_method.', 'auto_bill_payment_method_bank_transfer' => 'Bankrekening', 'auto_bill_payment_method_credit_card' => 'creditcard', - 'auto_bill_payment_method_paypal' => 'PayPal account', - 'auto_bill_notification_placeholder' => 'Deze factuur zal automatisch worden gefactureerd aan uw creditcard op de vervaldag.', + 'auto_bill_payment_method_paypal' => 'PayPal-account', + 'auto_bill_notification_placeholder' => 'Voor deze factuur zal uw opgeslagen creditcard automatisch worden belast op de vervaldag.', 'payment_settings' => 'Betalingsinstellingen', 'on_send_date' => 'Op verzendingsdatum', 'on_due_date' => 'Op vervaldatum', - 'auto_bill_ach_date_help' => 'ACH automatische facturatie zal atijd uitgevoerd worden op de vervaldag', - 'warn_change_auto_bill' => 'Vanwege NACHA regels kunnen aanpassingen aan dit factuur ACH automatische facturatie voorkomen.', + 'auto_bill_ach_date_help' => 'De ACH-incasso zal altijd worden uitgevoerd op de vervaldag.', + 'warn_change_auto_bill' => 'Vanwege NACHA-regelgeving kunnen aanpassingen aan deze factuur voorkomen dat ACH-incasso\'s uitgevoerd kunnen worden.', 'bank_account' => 'Bankrekening', - 'payment_processed_through_wepay' => 'ACH betalingen zullen verwerkt worden met WePay.', + 'payment_processed_through_wepay' => 'ACH-betalingen zullen verwerkt worden met WePay.', 'privacy_policy' => 'Privacybeleid', - 'ach_email_prompt' => 'Gelieve uw e-maildres in te vullen:', + 'ach_email_prompt' => 'Gelieve uw e-mailadres in te vullen:', 'verification_pending' => 'Verificatie in afwachting', 'update_font_cache' => 'Forceer het vernieuwen van de pagina om de font cache bij te werken.', 'more_options' => 'Meer opties', 'credit_card' => 'Creditcard', 'bank_transfer' => 'Overschrijving', - 'no_transaction_reference' => 'We ontvingen geen betalingstransactie referentie van de gateway.', + 'no_transaction_reference' => 'We hebben geen betalingsreferentie ontvangen van de betaalprovider.', 'use_bank_on_file' => 'Gebruik opgeslagen bank', - 'auto_bill_email_message' => 'Deze factuur zal automatisch worden gefactureerd aan uw opgeslagen betalingsmethode op de vervaldag.', + 'auto_bill_email_message' => 'Deze factuur zal, op de vervaldag, automatisch worden betaald met de door u gekozen voorkeursbetaalmethode.', 'bitcoin' => 'Bitcoin', 'gocardless' => 'GoCardless', 'added_on' => 'Toegevoegd op :date', - 'failed_remove_payment_method' => 'Verwijderen van betalingsmethode mislukt', - 'gateway_exists' => 'Deze gateway bestaat reeds', - 'manual_entry' => 'Manuele invoer', + 'failed_remove_payment_method' => 'Verwijderen van betaalmethode mislukt', + 'gateway_exists' => 'Deze betaalprovider bestaat reeds', + 'manual_entry' => 'Handmatige invoer', 'start_of_week' => 'Eerste dag van de week', // Frequencies @@ -1384,7 +1384,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'freq_two_years' => 'Twee jaar', // Payment types - 'payment_type_Apply Credit' => 'Krediet toepassen', + 'payment_type_Apply Credit' => 'Krediet gebruiken', 'payment_type_Bank Transfer' => 'Overschrijving', 'payment_type_Cash' => 'Contant', 'payment_type_Debit' => 'Debet', @@ -1571,7 +1571,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'country_Curaçao' => 'Curaçao', 'country_Aruba' => 'Aruba', 'country_Sint Maarten (Dutch part)' => 'Sint Maarten', - 'country_Bonaire, Sint Eustatius and Saba' => 'Caribisch Nederland', + 'country_Bonaire, Sint Eustatius and Saba' => 'Bonaire, Sint Eustatius en Saba', 'country_New Caledonia' => 'Nieuw-Caledonië', 'country_Vanuatu' => 'Vanuatu', 'country_New Zealand' => 'Nieuw-Zeeland', @@ -1701,7 +1701,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'lang_Chinese - Taiwan' => 'Chinees - Taiwan', 'lang_Serbian' => 'Servisch', 'lang_Bulgarian' => 'Bulgaars', - 'lang_Russian (Russia)' => 'Russisch', + 'lang_Russian (Russia)' => 'Russisch (Rusland)', // Industries @@ -1749,12 +1749,12 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'archive_expense_category' => 'Archiveer categorie', 'expense_categories' => 'Uitgavecategorie', 'list_expense_categories' => 'Toon uitgavecategorieën', - 'updated_expense_category' => 'De uitgaven categorie is gewijzigd', - 'created_expense_category' => 'De uitgaven categorie is aangemaakt', - 'archived_expense_category' => 'De uitgaven categorie is gearchiveerd', - 'archived_expense_categories' => ':count uitgave-categorieën gearchiveerd', + 'updated_expense_category' => 'De uitgavencategorie is gewijzigd', + 'created_expense_category' => 'De uitgavencategorie is aangemaakt', + 'archived_expense_category' => 'De uitgavencategorie is gearchiveerd', + 'archived_expense_categories' => ':count uitgavecategorieën gearchiveerd', 'restore_expense_category' => 'Herstel uitgavecategorie', - 'restored_expense_category' => 'De uitgaven categorie hersteld', + 'restored_expense_category' => 'De uitgavecategorie is hersteld', 'apply_taxes' => 'Pas belasting toe', 'min_to_max_users' => ':min tot :max gebruikers', 'max_users_reached' => 'Het maximale aantal gebruikers is bereikt.', @@ -1766,17 +1766,17 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'fields' => 'Velden', 'dwolla' => 'Dwolla', 'buy_now_buttons_warning' => 'Opmerking: de klant en factuur worden aangemaakt ook al is de transactie niet afgerond.', - 'buy_now_buttons_disabled' => 'Deze functie vereist dat een product is aangemaakt en een betalingsgateway is geconfigureerd.', + 'buy_now_buttons_disabled' => 'Deze functie vereist dat een product is aangemaakt en een betaalprovider is geconfigureerd.', 'enable_buy_now_buttons_help' => 'Ondersteuning inschakelen voor koop nu knoppen', 'changes_take_effect_immediately' => 'Opmerking: wijzigingen zijn onmiddelijk van kracht', - 'wepay_account_description' => 'Betalingsgateway voor Invoice Ninja', + 'wepay_account_description' => 'Betaalprovider voor Invoice Ninja', 'payment_error_code' => 'Er trad een fout op tijdens het verwerken van uw betaling [:code]. Gelieve het later opnieuw te proberen.', - 'standard_fees_apply' => 'Toeslag: 2.9%/1.2% [kredietkaart/overschijving] + $0.30 per succesvolle aanrekening.', + 'standard_fees_apply' => 'Toeslag: 2.9%/1.2% [creditcard/bankoverschijving] + $0.30 per succesvolle transactie.', 'limit_import_rows' => 'Data dient geïmporteerd te worden in delen van :count rijen of minder', 'error_title' => 'Er ging iets mis', 'error_contact_text' => 'Indien u hulp wenst gelieve ons te contacteren op :mailaddress', 'no_undo' => 'Waarschuwing: dit kan niet ongedaan gemaakt worden.', - 'no_contact_selected' => 'Gelieve een contact te selecteren', + 'no_contact_selected' => 'Gelieve een contactpersoon te selecteren', 'no_client_selected' => 'Gelieve een klant te selecteren', 'gateway_config_error' => 'Het kan helpen om nieuwe wachtwoorden in te stellen of nieuwe API sleutels te genereren.', @@ -1787,8 +1787,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'client_not_found' => 'Ik was niet in staat om de klant te vinden', 'not_allowed' => 'Sorry, u heeft niet de benodigde machtigingen', 'bot_emailed_invoice' => 'Uw factuur is verzonden.', - 'bot_emailed_notify_viewed' => 'Ik e-mail u als het bekeken is.', - 'bot_emailed_notify_paid' => 'Ik e-mail u als het betaald is.', + 'bot_emailed_notify_viewed' => 'Ik e-mail u zodra het bekeken is.', + 'bot_emailed_notify_paid' => 'Ik e-mail u zodra het betaald is.', 'add_product_to_invoice' => 'Voeg 1 :product toe', 'not_authorized' => 'U bent niet gemachtigd', 'email_not_found' => 'Ik was niet in staat om een beschikbaar account te vinden voor :email', @@ -1812,13 +1812,13 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'unassigned' => 'Niet toegewezen', 'task' => 'Taak', 'contact_name' => 'Contactnaam', - 'city_state_postal' => 'Stad/Provincie/Postcode', - 'postal_city' => 'Postcode/Stad', + 'city_state_postal' => 'Stad/provincie/postcode', + 'postal_city' => 'Postcode/stad', 'custom_field' => 'Aangepast veld', 'account_fields' => 'Velden bedrijf', 'facebook_and_twitter' => 'Facebook en Twitter', 'facebook_and_twitter_help' => 'Volg onze feeds om ons te helpen met het project', - 'reseller_text' => 'Opmerking: de white-label licentie is bedoeld voor persoonlijk gebruik, gelieve ons te contacteren op :email indien u de app door wilt verkopen.', + 'reseller_text' => 'Let op: de white-label licentie is bedoeld voor persoonlijk gebruik, gelieve ons te contacteren op :email indien u de app door wilt verkopen.', 'unnamed_client' => 'Onbenoemde klant', 'day' => 'Dag', @@ -1840,7 +1840,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'enable_max' => 'Max inschakelen', 'min' => 'Min', 'max' => 'Max', - 'limits_not_met' => 'Dit factuur voldoet niet aan de limieten voor die betalingsmethode.', + 'limits_not_met' => 'Deze factuur voldoet niet aan de limieten voor die betaalmethode.', 'date_range' => 'Datumbereik', 'raw' => 'Onbewerkt', @@ -1861,8 +1861,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'translate_app' => 'Help onze vertalingen te verbeteren met :link', 'expense_category' => 'Uitgavecategorie', - 'go_ninja_pro' => 'Ga Ninja Pro!', - 'go_enterprise' => 'Ga zakelijk!', + 'go_ninja_pro' => 'Ga voor Ninja Pro!', + 'go_enterprise' => 'Ga voor Enterprise!', 'upgrade_for_features' => 'Upgrade voor meer mogelijkheden', 'pay_annually_discount' => 'Betaal jaarlijks voor 10 maanden en krijg er 2 gratis!', 'pro_upgrade_title' => 'Ninja Pro', @@ -1871,7 +1871,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'enterprise_upgrade_feature1' => 'Stel machtigingen in voor meerdere gebruikers', 'enterprise_upgrade_feature2' => 'Voeg externe documenten toe aan facturen & uitgaven', 'much_more' => 'Veel meer!', - 'all_pro_fetaures' => 'Plus alle pro functies!', + 'all_pro_fetaures' => 'Plus alle pro-functionaliteit!', 'currency_symbol' => 'Symbool', 'currency_code' => 'Code', @@ -1887,17 +1887,17 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'authentication' => 'Authenticatie', 'checkbox' => 'Checkbox', 'invoice_signature' => 'Handtekening', - 'show_accept_invoice_terms' => 'Factuurvoorwaarden checkbox', + 'show_accept_invoice_terms' => 'Checkbox factuurvoorwaarden', 'show_accept_invoice_terms_help' => 'Verplicht de klant om akkoord te gaan met de factuurvoorwaarden.', - 'show_accept_quote_terms' => 'Offertevoorwaarden checkbox', + 'show_accept_quote_terms' => 'Checkbox offertevoorwaarden', 'show_accept_quote_terms_help' => 'Verplicht de klant om akkoord te gaan met de offertevoorwaarden.', - 'require_invoice_signature' => 'Factuur handtekening', + 'require_invoice_signature' => 'Handtekening op factuur', 'require_invoice_signature_help' => 'Verplicht de klant om zijn handtekening te zetten.', - 'require_quote_signature' => 'Offerte handtekening', + 'require_quote_signature' => 'Handtekening op offerte', 'require_quote_signature_help' => 'Verplicht de klant zijn handtekening te zetten.', 'i_agree' => 'Ik ga akkoord met de voorwaarden', 'sign_here' => 'Gelieve hier te tekenen:', - 'sign_here_ux_tip' => 'Gebruik de muis of uw touchpad om uw handtekening te traceren.', + 'sign_here_ux_tip' => 'Gebruik uw muis of touchpad om uw handtekening te zetten.', 'authorization' => 'Autorisatie', 'signed' => 'Getekend', @@ -1920,7 +1920,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'delete_project' => 'Verwijder project', 'deleted_project' => 'Het project is verwijderd', 'deleted_projects' => 'Succesvol :count projecten verwijderd', - 'delete_expense_category' => 'Verwijderen categorie', + 'delete_expense_category' => 'Verwijder categorie', 'deleted_expense_category' => 'De categorie is verwijderd', 'delete_product' => 'Verwijder product', 'deleted_product' => 'Het product is verwijderd', @@ -1929,23 +1929,23 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'update_credit' => 'Krediet bijwerken', 'updated_credit' => 'Het krediet is gewijzigd', 'edit_credit' => 'Wijzig krediet', - 'realtime_preview' => 'Realtime Voorbeeld', - 'realtime_preview_help' => 'Toon een realtime PDF voorbeeld op de factuur pagina bij het bewerken van facturen.
    Schakel dit uit om de prestaties te verbeteren tijdens het bewerken van facturen.', - 'live_preview_help' => 'Toon een live PDF voorbeeld op de factuur pagina.', - 'force_pdfjs_help' => 'Vervang de ingebouwde PDF viewer in :chrome_link en :firefox_link.
    Schakel dit in als je browser de PDF automatisch download.', + 'realtime_preview' => 'Realtime voorbeeld', + 'realtime_preview_help' => 'Toon een realtime PDF-voorbeeld op de factuurpagina bij het bewerken van facturen.
    Schakel dit uit om de prestaties te verbeteren tijdens het bewerken van facturen.', + 'live_preview_help' => 'Toon een live PDF-voorbeeld op de factuurpagina.', + 'force_pdfjs_help' => 'Vervang de ingebouwde PDF-viewer in :chrome_link en :firefox_link.
    Schakel dit in als uw browser de PDF automatisch download.', 'force_pdfjs' => 'Download voorkomen', - 'redirect_url' => 'Redirect URL', + 'redirect_url' => 'Redirect-URL', 'redirect_url_help' => 'Optioneel kan een URL opgegeven worden om naar door te verwijzen nadat een betaling is ingevoerd.', 'save_draft' => 'Concept opslaan', - 'refunded_credit_payment' => 'Gecrediteerde krediet betaling', + 'refunded_credit_payment' => 'Krediet is terugbetaald', 'keyboard_shortcuts' => 'Toetsenbord sneltoetsen', - 'toggle_menu' => 'Toggle menu', + 'toggle_menu' => 'Menu in-/uitklappen', 'new_...' => 'Nieuw...', 'list_...' => 'Lijst...', 'created_at' => 'Aanmaakdatum', 'contact_us' => 'Contacteer ons', 'user_guide' => 'Gebruikershandleiding', - 'promo_message' => 'Upgrade voor :expires en krijg :amount korting op je eerste jaar met onze Pro en Enterprise pakketten.', + 'promo_message' => 'Upgrade voor :expires en krijg :amount korting op uw eerste jaar met onze Pro- en Enterprise-abonnementen.', 'discount_message' => ':amount korting vervalt :expires', 'mark_paid' => 'Markeer als betaald', 'marked_sent_invoice' => 'De factuur is gemarkeerd als verzonden', @@ -1966,34 +1966,34 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'debug' => 'Debug', 'https' => 'HTTPS', 'require' => 'Vereis', - 'license_expiring' => 'Opmerking: uw licentie zal vervallen in :count dagen, :link om het te verlengen.', + 'license_expiring' => 'Opmerking: uw licentie komt te vervallen in :count dagen, navigeer naar :link om uw licentie te verlengen.', 'security_confirmation' => 'Uw e-mailadres is bevestigd.', - 'white_label_expired' => 'Uw white label licentie is verlopen, gelieve te overwegen om dit te vernieuwen om zo ons project mee te helpen ondersteunen.', + 'white_label_expired' => 'Uw whitelabel-licentie is verlopen, gelieve te overwegen om dit te vernieuwen om zo ons project mee te helpen ondersteunen.', 'renew_license' => 'Licentie vernieuwen', 'iphone_app_message' => 'Overweeg onze :link te downloaden', 'iphone_app' => 'iPhone app', 'android_app' => 'Android app', 'logged_in' => 'Aangemeld', - 'switch_to_primary' => 'Schakel over naar uw primair bedrijf (:name) om uw abonnement te beheren.', + 'switch_to_primary' => 'Schakel over naar uw primaire bedrijf (:name) om uw abonnement te beheren.', 'inclusive' => 'Inclusief', 'exclusive' => 'Exclusief', - 'postal_city_state' => 'Postcode/Stad/Provincie', + 'postal_city_state' => 'Postcode/stad/provincie', 'phantomjs_help' => 'In sommige gevallen gebruikt de app :link_phantom om het PDF-bestand te genereren, installeer :link_docs om het lokaal te genereren.', 'phantomjs_local' => 'Lokaal PhantomJS gebruiken', 'client_number' => 'Klantnummer', 'client_number_help' => 'Geef een voorvoegsel of een aangepast patroon om klantnummers dynamisch te genereren.', - 'next_client_number' => 'Het volgende klantnummer is :number.', + 'next_client_number' => 'Het eerstvolgende klantnummer is :number.', 'generated_numbers' => 'Gegenereerde nummers', 'notes_reminder1' => 'Eerste herinnering', 'notes_reminder2' => 'Tweede herinnering', 'notes_reminder3' => 'Derde herinnering', 'notes_reminder4' => 'Herinnering', - 'bcc_email' => 'BCC Email', + 'bcc_email' => 'BCC e-mail', 'tax_quote' => 'BTW offerte', 'tax_invoice' => 'BTW factuur', 'emailed_invoices' => 'De facturen zijn gemaild', 'emailed_quotes' => 'De offertes zijn gemaild', - 'website_url' => 'Website URL', + 'website_url' => 'Website-URL', 'domain' => 'Domein', 'domain_help' => 'Wordt gebruikt in het klantenportaal en bij het versturen van e-mails.', 'domain_help_website' => 'Wordt gebruikt bij het versturen van e-mails.', @@ -2070,7 +2070,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'create_project' => 'Project aanmaken', 'create_vendor' => 'Leverancier aanmaken', 'create_expense_category' => 'Categorie aanmaken', - 'pro_plan_reports' => ':link om rapporten te activeren door te abonneren op het Pro Plan', + 'pro_plan_reports' => ':link om rapporten te activeren door te abonneren op het Pro-abonnement', 'mark_ready' => 'Markeer als gereed', 'limits' => 'Limieten', @@ -2081,7 +2081,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'fees_sample' => 'De toeslag voor een :amount factuur is :total.', 'discount_sample' => 'De korting voor een :amount factuur is :total.', 'no_fees' => 'Geen transactiekosten', - 'gateway_fees_disclaimer' => 'Waarschuwing: niet alle staten/betalingsgateways laten het toe om kosten toe te voegen, gelieve lokale wetten/servicevoorwaarden te raadplegen.', + 'gateway_fees_disclaimer' => 'Waarschuwing: niet alle jurisdicties/betaalproviders staan het toe om kosten toe te voegen. Gelieve lokale wetgeving en/of servicevoorwaarden te raadplegen.', 'percent' => 'Procent', 'location' => 'Locatie', 'line_item' => 'Regelitem', @@ -2090,10 +2090,10 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'location_second_surcharge' => 'Ingeschakeld - Tweede toeslag', 'location_line_item' => 'Ingeschakeld - Regelitem', 'online_payment_surcharge' => 'Online betalingstoeslag', - 'gateway_fees' => 'Transactiekosten Gateway', + 'gateway_fees' => 'Transactiekosten betaalprovider', 'fees_disabled' => 'Transactiekosten zijn uitgeschakeld', 'gateway_fees_help' => 'Online betalingstoeslag/korting automatisch toevoegen.', - 'gateway' => 'Gateway', + 'gateway' => 'Betaalprovider', 'gateway_fee_change_warning' => 'Als er onbetaalde facturen met transactiekosten zijn, moeten die handmatig bijgewerkt worden.', 'fees_surcharge_help' => 'Toeslag aanpassen :link.', 'label_and_taxes' => 'label en belastingen', @@ -2109,18 +2109,18 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'reset_counter_help' => 'De factuur en offerte tellers automatisch resetten.', 'auto_bill_failed' => 'Autofacturatie voor factuur :invoice_number mislukt', 'online_payment_discount' => 'Online betalingskorting', - 'created_new_company' => 'Nieuw bedrijf succesfol aangemaakt', - 'fees_disabled_for_gateway' => 'Transactiekosten zijn uitgeschakeld voor deze gateway.', + 'created_new_company' => 'Nieuw bedrijf succesvol aangemaakt', + 'fees_disabled_for_gateway' => 'Transactiekosten zijn uitgeschakeld voor deze betaalprovider.', 'logout_and_delete' => 'Uitloggen/account opzeggen', 'tax_rate_type_help' => 'Inbegrepen belastingstarieven passen de kosten van het regelitem aan wanneer deze worden geselecteerd.
    Alleen de niet inbegrepen belastingtarieven kunnen als standaard worden gebruikt.', - 'credit_note' => 'Creditnota', + 'credit_note' => 'Creditfactuur', 'credit_issued_to' => 'Krediet afgegeven aan', 'credit_to' => 'Krediet aan', 'your_credit' => 'Uw krediet', 'credit_number' => 'Creditnummer', - 'create_credit_note' => 'Creditnota aanmaken', + 'create_credit_note' => 'Creditfactuur aanmaken', 'menu' => 'Menu', - 'error_incorrect_gateway_ids' => 'Fout: De gateway tabel heeft foutieve id\'s.', + 'error_incorrect_gateway_ids' => 'Fout: de betaalprovider-tabel bevat foutieve id\'s.', 'purge_data' => 'Wis gegevens', 'delete_data' => 'Verwijder gegevens', 'purge_data_help' => 'Alle gegevens permanent verwijderen, maar behoud het account en instellingen.', @@ -2128,11 +2128,11 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'purge_successful' => 'De bedrijfsgegevens zijn gewist', 'forbidden' => 'Verboden', 'purge_data_message' => 'Waarschuwing: Dit zal uw gegevens verwijderen. Er is geen manier om dit ongedaan te maken.', - 'contact_phone' => 'Contact telefoon', - 'contact_email' => 'Contact e-mail', - 'reply_to_email' => 'Antwoord naar e-mail', - 'reply_to_email_help' => 'Geef het antwoord-aan adres voor klant e-mails.', - 'bcc_email_help' => 'Dit adres heimelijk gebruiken met klant e-mails.', + 'contact_phone' => 'Telefoon contactpersoon', + 'contact_email' => 'E-mailadres contactpersoon', + 'reply_to_email' => 'Reply-To e-mailadres', + 'reply_to_email_help' => 'Specificeer het antwoordadres voor e-mails van klanten.', + 'bcc_email_help' => 'Gebruik dit adres als BCC-adres voor e-mails naar klanten.', 'import_complete' => 'Het importeren is uitgevoerd.', 'confirm_account_to_import' => 'Gelieve uw account te bevestigen om de gegevens te importeren.', 'import_started' => 'Het importeren is gestart, we sturen u een e-mail van zodra het proces afgerond is.', @@ -2146,9 +2146,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'contact_fields' => 'Contact velden', 'custom_contact_fields_help' => 'Voeg een veld toe bij het creëren van een contact en toon het label en de waarde op de PDF.', 'datatable_info' => ':start tot :end van :total items worden getoond', - 'credit_total' => 'Totaal Credit', - 'mark_billable' => 'Markeer als factureerbaar', - 'billed' => 'Gefactureerd', + 'credit_total' => 'Totaal krediet', + 'mark_billable' => 'Markeer als inbaar', + 'billed' => 'Geïnd', 'company_variables' => 'Bedrijfsvariabelen', 'client_variables' => 'Klant variabelen', 'invoice_variables' => 'Factuur variabelen', @@ -2157,13 +2157,13 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'invalid_file' => 'Ongeldig bestandstype', 'add_documents_to_invoice' => 'Voeg documenten toe aan uw factuur', 'mark_expense_paid' => 'Markeer als betaald', - 'white_label_license_error' => 'De licentie validatie is mislukt. De licentie is verlopen of te vaak geactiveerd. Email contact@invoiceninja.com voor meer informatie.', - 'plan_price' => 'Plan prijs', + 'white_label_license_error' => 'De licentie validatie is mislukt. De licentie is verlopen of te vaak geactiveerd. E-mail contact@invoiceninja.com voor meer informatie.', + 'plan_price' => 'Abonnementsprijs', 'wrong_confirmation' => 'Incorrecte bevestigingscode', 'oauth_taken' => 'Het account is al geregistreerd', 'emailed_payment' => 'De betaling is per mail verstuurd', 'email_payment' => 'E-mail betaling', - 'invoiceplane_import' => 'Gebruik :link om uw data te migreren van InvoicePlane.', + 'invoiceplane_import' => 'Gebruik :link om uw data te migreren vanuit InvoicePlane.', 'duplicate_expense_warning' => 'Waarschuwing: Deze :link kan een duplicaat zijn', 'expense_link' => 'uitgave', 'resume_task' => 'Hervat taak', @@ -2194,12 +2194,12 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'mailgun_private_key' => 'Mailgun privésleutel', 'brevo_domain' => 'Brevo-domein', 'brevo_private_key' => 'Brevo-privésleutel', - 'send_test_email' => 'Send Test Email', + 'send_test_email' => 'Verstuur teste-mail', 'select_label' => 'Selecteer label', 'label' => 'Label', 'service' => 'Service', - 'update_payment_details' => 'Betalingsdetails bijwerken', - 'updated_payment_details' => 'De betalingsdetails zijn gewijzigd', + 'update_payment_details' => 'Betaalgegevens bijwerken', + 'updated_payment_details' => 'De betaalgegevens zijn gewijzigd', 'update_credit_card' => 'Krediet kaart bijwerken', 'recurring_expenses' => 'Terugkerende uitgaven', 'recurring_expense' => 'Terugkerende uitgave', @@ -2220,7 +2220,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'recurring_prefix' => 'Terugkerend voorvoegsel', 'options' => 'Opties', 'credit_number_help' => 'Geef een voorvoegsel of een aangepast patroon om kredietnummers dynamisch te genereren.', - 'next_credit_number' => 'Het volgende kredietnummer is :number.', + 'next_credit_number' => 'Het eerstvolgende kredietnummer is :number.', 'padding_help' => 'Het aantal nullen om het nummer op te vullen.', 'import_warning_invalid_date' => 'Waarschuwing: het datumformaat lijkt ongeldig te zijn.', 'product_notes' => 'Productopmerkingen', @@ -2361,14 +2361,14 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'currency_gold_troy_ounce' => 'Gouden Troy Ounce', 'currency_nicaraguan_córdoba' => 'Nicaraguaans Córdoba', 'currency_malagasy_ariary' => 'Malagassische ariarium', - "currency_tongan_paanga" => "Tongan Pa'anga", + "currency_tongan_paanga" => "Tongaanse pa'anga", - 'review_app_help' => 'We hopen dat je het leuk vindt om de app te gebruiken.
    Als je zou overwegen :link, zouden we dat zeer op prijs stellen!', + 'review_app_help' => 'We hopen dat u veel gemak heeft aan het gebruik van deze app.
    Als u :link zou overwegen, stellen wij dat zeer op prijs!', 'writing_a_review' => 'een recensie schrijven', 'tax1' => 'Eerste belasting', 'tax2' => 'Tweede belasting', - 'fee_help' => 'Gateway vergoedingen zijn de kosten die gelden voor toegang tot de financiële netwerken die de verwerking van online betalingen behandelen.', + 'fee_help' => 'Transactiekosten omvatten de kosten die gelden voor toegang tot de financiële netwerken die de verwerking van online betalingen behandelen.', 'format_export' => 'Uitvoerformaat', 'custom1' => 'Eerste aangepaste', 'custom2' => 'Tweede aangepaste', @@ -2390,8 +2390,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'item_tax2' => 'Artikel belasting 2', 'delete_company' => 'Verwijder bedrijf', - 'delete_company_help' => 'Permanent je bedrijf verwijderen inclusief alle gegevens en instellingen.', - 'delete_company_message' => 'Waarschuwing: Hiermee verwijder je permanent je bedrijf, dit kan niet worden ontdaan.', + 'delete_company_help' => 'Permanent uw bedrijf verwijderen, inclusief alle gegevens en instellingen.', + 'delete_company_message' => 'Waarschuwing: Hiermee verwijdert u permanent uw bedrijf, dit kan niet ongedaan worden gemaakt.', 'applied_discount' => 'De kortingscode is toegevoegd, de prijs van het gekozen plan is verlaagd met :discount%.', 'applied_free_year' => 'De kortingsbon is toegepast, uw account is gedurende een jaar geüpgraded naar pro.', @@ -2408,8 +2408,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'purge_details' => 'De gegevens in het account (:account) zijn gewist', 'deleted_company' => 'Het bedrijf is verwijderd', 'deleted_account' => 'Account geannuleerd', - 'deleted_company_details' => 'Je bedrijf (:account) is verwijderd', - 'deleted_account_details' => 'Je account (:account) is verwijderd', + 'deleted_company_details' => 'Uw bedrijf (:account) is verwijderd', + 'deleted_account_details' => 'Uw account (:account) is verwijderd', 'alipay' => 'Alipay', 'sofort' => 'Sofort', @@ -2417,11 +2417,11 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'name_without_special_characters' => 'Geef een naam op met enkel letters van a-z en spaties', 'enable_alipay' => 'Accepteer Alipay', 'enable_sofort' => 'Accepteer Europese banktransacties', - 'stripe_alipay_help' => 'Deze gateways moeten ook worden geactiveerd in :link.', + 'stripe_alipay_help' => 'Deze betaalprovider moeten ook worden geactiveerd in :link.', 'calendar' => 'Kalender', - 'pro_plan_calendar' => ':link om de kalender in te schakelen door lid te worden van het Pro Plan', + 'pro_plan_calendar' => ':link om de kalender in te schakelen door te abonneren op het Pro-abonnement', - 'what_are_you_working_on' => 'Waar werk je aan?', + 'what_are_you_working_on' => 'Waar werkt u aan?', 'time_tracker' => 'Tijdregistratie', 'refresh' => 'Verversen', 'filter_sort' => 'Filter/Sorteer', @@ -2449,7 +2449,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'time_hr' => 'uur', 'time_hrs' => 'uren', 'clear' => 'Wis', - 'warn_payment_gateway' => 'Opmerking: voor het accepteren van online betalingen is een betalingsgateway vereist. :link om er een toe te voegen.', + 'warn_payment_gateway' => 'Opmerking: voor het accepteren van online betalingen is een betaalprovider vereist. :link om er een toe te voegen.', 'task_rate' => 'Taak tarief', 'task_rate_help' => 'Stel het standaardtarief in voor gefactureerde taken.', 'past_due' => 'Verlopen', @@ -2465,7 +2465,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'recover' => 'Herstel', 'apply' => 'Toepassen', 'recover_white_label_header' => 'Herstel whitelabel-licentie', - 'apply_white_label_header' => 'Whitelabel licentie toepassen', + 'apply_white_label_header' => 'Whitelabel-licentie toepassen', 'videos' => 'Video\'s', 'video' => 'Video', 'return_to_invoice' => 'Terug naar factuur', @@ -2475,7 +2475,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'custom_value1' => 'Aangepaste waarde 1', 'custom_value2' => 'Aangepaste waarde 2', 'enable_two_factor' => 'Tweestaps-authenticatie', - 'enable_two_factor_help' => 'Gebruik je telefoon om je identiteit te bevestigen bij het inloggen', + 'enable_two_factor_help' => 'Gebruik uw telefoon om uw identiteit te bevestigen bij het inloggen', 'two_factor_setup' => 'Tweestaps-authenticatie instellen', 'two_factor_setup_help' => 'Scan de streepjescode met een :link compatibele app.', 'one_time_password' => 'Eenmalig wachtwoord', @@ -2494,18 +2494,18 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'default' => 'Standaard', 'shipping_address' => 'Leveringsadres', 'bllling_address' => 'Factuuradres', - 'billing_address1' => 'Facturatie straat', - 'billing_address2' => 'Facturatie Apt/Suite', - 'billing_city' => 'Facturatiestad', - 'billing_state' => 'Facturatie Staat/Provincie', - 'billing_postal_code' => 'Facturatie Postcode', - 'billing_country' => 'Facturatieland', - 'shipping_address1' => 'Leveringsstraat', - 'shipping_address2' => 'Leverings Apt/Suite', - 'shipping_city' => 'Leveringsstad', - 'shipping_state' => 'Leverings Staat/Provincie', - 'shipping_postal_code' => 'Leverings Postcode', - 'shipping_country' => 'Leveringsland', + 'billing_address1' => 'Straat factuuradres', + 'billing_address2' => 'Appartement/busnr. factuuradres', + 'billing_city' => 'Stad factuuradres', + 'billing_state' => 'Staat/provincie factuuradres', + 'billing_postal_code' => 'Postcode factuuradres', + 'billing_country' => 'Land factuuradres', + 'shipping_address1' => 'Straat leveringsadres', + 'shipping_address2' => 'Appartement/busnr. leveringsadres', + 'shipping_city' => 'Stad leveringsadres', + 'shipping_state' => 'Staat/provincie leveringsadres', + 'shipping_postal_code' => 'Postcode leveringsadres', + 'shipping_country' => 'Land leveringsadres', 'classify' => 'Classificeren', 'show_shipping_address_help' => 'Vereisen dat de klant zijn leveringsadres opgeeft', 'ship_to_billing_address' => 'Verzend naar factuuradres', @@ -2521,13 +2521,13 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'invalid_one_time_password' => 'Eenmalig wachtwoord ongeldig', 'apple_pay' => 'Apple/Google Pay', 'enable_apple_pay' => 'Accepteer Apple Pay en Pay met Google', - 'requires_subdomain' => 'Deze betalingsmethode vereist dat een :link.', + 'requires_subdomain' => 'Deze betaalmethode vereist dat een :link.', 'subdomain_is_set' => 'subdomein is ingesteld', 'verification_file' => 'Verificatiebestand', 'verification_file_missing' => 'Het verificatiebestand is nodig om betalingen te accepteren.', 'apple_pay_domain' => 'Gebruik :domain als het domein in :link.', 'apple_pay_not_supported' => 'Sorry, Apple/Google Pay wordt niet ondersteund door uw browser', - 'optional_payment_methods' => 'Optionele betalingsmethodes', + 'optional_payment_methods' => 'Optionele betaalmethoden', 'add_subscription' => 'Abonnement toevoegen', 'target_url' => 'Doel', 'target_url_help' => 'Wanneer de geselecteerde gebeurtenis plaatsvindt, zal de app de entiteit op de doel-URL posten.', @@ -2562,7 +2562,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'project_error_multiple_clients' => 'De projecten kunnen niet tot meerdere klanten behoren', 'invoice_project' => 'Factureer project', 'module_recurring_invoice' => 'Terugkerende facturen', - 'module_credit' => 'Creditnota\'s', + 'module_credit' => 'Creditfacturen', 'module_quote' => 'Offertes & voorstellen', 'module_task' => 'Taken & projecten', 'module_expense' => 'Uitgaven & leveranciers', @@ -2571,7 +2571,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'send_client_reminders' => 'Verzend e-mailherinneringen', 'can_view_tasks' => 'Taken zijn zichtbaar in de portaal', 'is_not_sent_reminders' => 'Herinneringen worden niet verzonden', - 'promotion_footer' => 'Uw promotie verloopt binnenkort, :link om nu te upgraden.', + 'promotion_footer' => 'Uw korting verloopt binnenkort, :link om nu te upgraden.', 'unable_to_delete_primary' => 'Opmerking: om dit bedrijf te verwijderen, verwijdert u eerst alle gekoppelde bedrijven.', 'please_register' => 'Gelieve uw account te registreren', 'processing_request' => 'Aanvraag wordt verwerkt', @@ -2580,8 +2580,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'inclusive_taxes_help' => 'Neem belastingen op in de uitgave', 'inclusive_taxes_notice' => 'Deze instelling kan niet worden gewijzigd nadat een factuur is aangemaakt.', 'inclusive_taxes_warning' => 'Waarschuwing: bestaande facturen moeten opnieuw worden opgeslagen', - 'copy_shipping' => 'Levering kopiëren', - 'copy_billing' => 'Facturatie kopiëren', + 'copy_shipping' => 'Leveringsadres kopiëren', + 'copy_billing' => 'Factuuradres kopiëren', 'quote_has_expired' => 'De offerte is verlopen, neem contact op met de verkoper.', 'empty_table_footer' => '0 tot 0 van 0 vermeldingen tonen', 'do_not_trust' => 'Dit apparaat niet onthouden', @@ -2605,7 +2605,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'signature_on_invoice_help' => 'Voeg de volgende code toe om de handtekening van de klant op de PDF weer te geven.', 'signature_on_pdf' => 'Weergeven op PDF', 'signature_on_pdf_help' => 'Toon de handtekening van de klant op de factuur/offerte PDF.', - 'expired_white_label' => 'De whitelabel licentie is verlopen', + 'expired_white_label' => 'De whitelabel-licentie is verlopen', 'return_to_login' => 'Terug naar login', 'convert_products_tip' => 'Opmerking: voeg een :link met de naam ":name" toe om de wisselkoers te zien.', 'amount_greater_than_balance' => 'Het bedrag is groter dan het factuursaldo, er wordt een creditfactuur aangemaakt met het resterende bedrag.', @@ -2692,15 +2692,15 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'no_assets' => 'Geen afbeeldingen, slepen om te uploaden', 'add_image' => 'Afbeelding toevoegen', 'select_image' => 'Afbeelding selecteren', - 'upgrade_to_upload_images' => 'Upgrade to the Enterprise Plan to upload files & images', + 'upgrade_to_upload_images' => 'Upgrade naar het Enterprise-abonnement om bestanden en afbeeldingen te uploaden', 'delete_image' => 'Afbeelding verwijderen', - 'delete_image_help' => 'Waarschuwing: als je de afbeelding verwijdert, wordt deze uit alle voorstellen verwijderd.', + 'delete_image_help' => 'Waarschuwing: als u de afbeelding verwijdert, dan wordt deze uit alle voorstellen verwijderd.', 'amount_variable_help' => 'Opmerking: Het veld $amount op de factuur wordt gebruikt als gedeeltelijke betaling als dit is ingesteld, anders wordt het factuur saldo gebruikt.', 'taxes_are_included_help' => 'Opmerking: inbegrepen heffingen/belastingen zijn ingeschakeld.', 'taxes_are_not_included_help' => 'Opmerking: inbegrepen heffingen/belastingen zijn niet ingeschakeld.', 'change_requires_purge' => 'Het aanzetten van deze instelling vereist :link van de accountgegevens.', 'purging' => 'opschonen', - 'warning_local_refund' => 'De terugbetaling zal worden geregistreerd in de app, maar zal NIET worden verwerkt door de betalingsgateway.', + 'warning_local_refund' => 'De terugbetaling zal worden geregistreerd in de app, maar zal NIET worden verwerkt door de betaalprovider.', 'email_address_changed' => 'E-mailadres is gewijzigd', 'email_address_changed_message' => 'Het e-mailadres voor uw account is gewijzigd van :old_email in :new_email.', 'test' => 'Test', @@ -2726,17 +2726,17 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'group' => 'Groep', 'subgroup' => 'Subgroep', 'unset' => 'Unset', - 'received_new_payment' => 'Je hebt een nieuwe betaling ontvangen!', + 'received_new_payment' => 'U hebt een nieuwe betaling ontvangen!', 'slack_webhook_help' => 'Ontvang betalingsmeldingen via :link.', 'slack_incoming_webhooks' => 'Slack incoming webhooks', 'accept' => 'Accepteer', 'accepted_terms' => 'Nieuwe servicevoorwaarden geaccepteerd', 'invalid_url' => 'Ongeldige URL', - 'workflow_settings' => 'Workflow instellingen', + 'workflow_settings' => 'Workflowinstellingen', 'auto_email_invoice' => 'Automatisch e-mailen', 'auto_email_invoice_help' => 'Converteer een offerte automatisch naar een factuur wanneer deze goedgekeurd is.', 'auto_archive_invoice' => 'Automatisch archiveren', - 'auto_archive_invoice_help' => 'Archiveer facturen automatisch indien betaald', + 'auto_archive_invoice_help' => 'Facturen automatisch archiveren bij betaling', 'auto_archive_quote' => 'Automatisch archiveren', 'auto_archive_quote_help' => 'Archiveer offertes automatisch indien omgezet naar factuur', 'require_approve_quote' => 'Verplicht goedkeuring offerte', @@ -2751,7 +2751,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'purge_client_warning' => 'Alle gerelateerde gegevens (facturen, taken, uitgaven, documenten, enz.) worden ook gewist.', 'clone_product' => 'Dupliceer product', 'item_details' => 'Onderdeel details', - 'send_item_details_help' => 'Verzend regelitemdetails naar de betalingsgateway.', + 'send_item_details_help' => 'Deel factuurregels met de betaalprovider.', 'view_proposal' => 'Toon voorstel', 'view_in_portal' => 'Toon in portaal', 'cookie_message' => 'Deze website maakt gebruik van cookies om ervoor te zorgen dat u de beste ervaring op onze website krijgt.', @@ -2768,7 +2768,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'project_field' => 'Project veld', 'expense_field' => 'Uitgave veld', 'vendor_field' => 'Leverancier veld', - 'company_field' => 'Bedrijf veld', + 'company_field' => 'Bedrijfsveld', 'invoice_field' => 'Factuur veld', 'invoice_surcharge' => 'Factuurkost', 'custom_task_fields_help' => 'Voeg een veld toe bij het maken van een taak.', @@ -2793,9 +2793,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'proposal_editor' => 'voorstel editor', 'background' => 'Achtergrond', 'guide' => 'Gids', - 'gateway_fee_item' => 'Heffingsitem Gateway', - 'gateway_fee_description' => 'Heffingstoeslag Gateway', - 'gateway_fee_discount_description' => 'Heffingskorting Gateway', + 'gateway_fee_item' => 'Toeslagdetails betaalprovider', + 'gateway_fee_description' => 'Toeslag betaalprovider', + 'gateway_fee_discount_description' => 'Heffingskorting betaalprovider', 'show_payments' => 'Toon betalingen', 'show_aging' => 'Toon toekomstige', 'reference' => 'Referentie', @@ -2849,7 +2849,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'refresh_data' => 'Gegevens verversen', 'blank_contact' => 'Leeg contact', 'no_records_found' => 'Geen gegevens gevonden', - 'industry' => 'Industrie', + 'industry' => 'Sector', 'size' => 'Grootte', 'net' => 'Betaaltermijn', 'show_tasks' => 'Toon taken', @@ -2898,25 +2898,25 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'local_part_unavailable' => 'Naam reeds in gebruik', 'local_part_available' => 'Naam beschikbaar', 'local_part_invalid' => 'Ongeldige naam (alleen alfanumeriek, geen spaties', - 'local_part_help' => 'Personaliseer het eerste deel van het inkomende e-mailadres, vb. YOUR_NAME@support.invoiceninja', + 'local_part_help' => 'Personaliseer het eerste deel van het inkomende e-mailadres, bijv. YOUR_NAME@support.invoiceninja', 'from_name_help' => 'De \'van\'-naam is de herkenbare afzender die wordt getoond in plaats van het e-mailadres, zoals Helpdesk', - 'local_part_placeholder' => 'JOUW_NAAM', + 'local_part_placeholder' => 'UW_NAAM', 'from_name_placeholder' => 'Support centrum', 'attachments' => 'Bijlagen', 'client_upload' => 'Klant uploads', 'enable_client_upload_help' => 'Laat klanten documenten/bijlagen uploaden', - 'max_file_size_help' => 'Maximale bestandsgrootte (KB) wordt beperkt door de post_max_size en upload_max_filesize variabelen zoals ingesteld in uw PHP.INI', + 'max_file_size_help' => 'De maximale bestandsgrootte (KB) wordt beperkt door de post_max_size en upload_max_filesize variabelen zoals ingesteld in uw PHP.INI', 'max_file_size' => 'Maximale bestandsgrootte', 'mime_types' => 'MIME-types', 'mime_types_placeholder' => '.pdf, .docx, .jpg', 'mime_types_help' => 'Komma-gescheiden lijst met toegestane MIME-types, laat leeg voor alle', - 'ticket_number_start_help' => 'Ticket number must be greater than the current ticket number', - 'new_ticket_template_id' => 'New ticket', - 'new_ticket_autoresponder_help' => 'Selecting a template will send an auto response to a client/contact when a new ticket is created', - 'update_ticket_template_id' => 'Updated ticket', - 'update_ticket_autoresponder_help' => 'Selecting a template will send an auto response to a client/contact when a ticket is updated', - 'close_ticket_template_id' => 'Closed ticket', - 'close_ticket_autoresponder_help' => 'Selecting a template will send an auto response to a client/contact when a ticket is closed', + 'ticket_number_start_help' => 'Ticketnummer moet hoger of gelijk zijn aan het huidige ticketnummer', + 'new_ticket_template_id' => 'Nieuw ticket', + 'new_ticket_autoresponder_help' => 'Door een sjabloon te selecteren wordt er, zodra een nieuw ticket is aangemaakt, een automatische respons gestuurd naar de klant of contactpersoon', + 'update_ticket_template_id' => 'Bijgewerkt ticket', + 'update_ticket_autoresponder_help' => 'Door een sjabloon te selecteren wordt er, zodra een ticket is bijgewerkt, een automatische respons gestuurd naar de klant of contactpersoon', + 'close_ticket_template_id' => 'Gesloten ticket', + 'close_ticket_autoresponder_help' => 'Door een sjabloon te selecteren wordt er, zodra een ticket is gesloten, een automatische respons gestuurd naar de klant of contactpersoon', 'default_priority' => 'Prioriteit', 'alert_new_comment_id' => 'Nieuwe opmerking', 'update_ticket_notification_list' => 'Additionele notificaties bij nieuwe opmerkingen', @@ -2945,7 +2945,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'hosted_login' => 'Hosted login', 'selfhost_login' => 'Self-Host login', 'google_login' => 'Google Login', - 'thanks_for_patience' => 'Bedankt voor uw geduld terwijl we werken aan de implementatie van deze functies.

    We hopen ze in de komende maanden af te ronden.

    Tot die tijd blijven wij de stichting steunen', + 'thanks_for_patience' => 'Bedankt voor uw geduld terwijl we werken aan het implementeren van deze functies.

    We hopen de functionaliteit in de komende maanden toe te kunnen voegen.

    Tot die tijd ondersteunen wij de', 'legacy_mobile_app' => 'oude mobiele app', 'today' => 'Vandaag', 'current' => 'Huidige', @@ -2967,8 +2967,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'show_product_notes_help' => 'Voeg de beschrijving en kosten toe aan de productkeuzelijst', 'important' => 'Belangrijk', 'thank_you_for_using_our_app' => 'Bedankt voor het gebruik van onze app!', - 'if_you_like_it' => 'Als je het leuk vindt alsjeblieft ', - 'to_rate_it' => 'om een score te geven.', + 'if_you_like_it' => 'Als u het waardeert alstublieft ', + 'to_rate_it' => 'om een beoordeling te geven.', 'average' => 'Gemiddeld', 'unapproved' => 'Afgekeurd', 'authenticate_to_change_setting' => 'Gelieve te authenticeren om deze instelling te wijzigen', @@ -2976,7 +2976,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'authenticate' => 'Authenticeer', 'please_authenticate' => 'Gelieve te authenticeren', 'biometric_authentication' => 'Biometrische authenticatie', - 'auto_start_tasks' => 'Automatisch Startende Taken', + 'auto_start_tasks' => 'Automatisch startende taken', 'budgeted' => 'Begroot', 'please_enter_a_name' => 'Geef a.u.b. een naam op', 'click_plus_to_add_time' => 'Klik + om tijd toe te voegen', @@ -3007,19 +3007,19 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'back' => 'Terug', 'past_purchases' => 'Voorbije aankopen', 'annual_subscription' => 'Jaarlijks abonnement', - 'pro_plan' => 'Pro Plan', - 'enterprise_plan' => 'Enterprise Plan', + 'pro_plan' => 'Pro-abonnement', + 'enterprise_plan' => 'Enterprise-abonnement', 'count_users' => ':count gebruikers', 'upgrade' => 'Upgrade', - 'please_enter_a_first_name' => 'Vul een voornaam in aub', - 'please_enter_a_last_name' => 'Vul een naam in aub', + 'please_enter_a_first_name' => 'Vul een voornaam in a.u.b.', + 'please_enter_a_last_name' => 'Vul een naam in a.u.b.', 'please_agree_to_terms_and_privacy' => 'Ga akkoord met de servicevoorwaarden en het privacybeleid om een account aan te maken.', 'i_agree_to_the' => 'Ik ga akkoord met', 'terms_of_service_link' => 'de servicevoorwaarden', 'privacy_policy_link' => 'het privacybeleid', 'view_website' => 'Bekijk website', 'create_account' => 'Account aanmaken', - 'email_login' => 'Email login', + 'email_login' => 'E-mail login', 'late_fees' => 'Late vergoedingen', 'payment_number' => 'Betalingsnummer', 'before_due_date' => 'Voor de vervaldatum', @@ -3042,8 +3042,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'portal_mode' => 'portaalmodus', 'attach_pdf' => 'PDF bijvoegen', 'attach_documents' => 'Document bijvoegen', - 'attach_ubl' => 'Attach UBL/E-Invoice', - 'email_style' => 'Email opmaak', + 'attach_ubl' => 'UBL en/of e-factuur bijvoegen', + 'email_style' => 'E-mail opmaak', 'processed' => 'Verwerkt', 'fee_amount' => 'Vergoedingsbedrag', 'fee_percent' => 'Vergoedingspercentage', @@ -3055,15 +3055,15 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'deleted_tax_rate' => 'De BTW heffing is verwijderd', 'restored_tax_rate' => 'De BTW heffing is teruggezet', 'provider' => 'Provider', - 'company_gateway' => 'Betalingsgateway', - 'company_gateways' => 'Betalingsgateway', - 'new_company_gateway' => 'Nieuwe instantie aanmaken', - 'edit_company_gateway' => 'Huidige instantie bewerken', - 'created_company_gateway' => 'De nieuwe instantie is aangemaakt', - 'updated_company_gateway' => 'De nieuwe instantie is bijgewerkt', - 'archived_company_gateway' => 'De nieuwe instantie is gearchiveerd', - 'deleted_company_gateway' => 'De nieuwe instantie is verwijderd', - 'restored_company_gateway' => 'De nieuwe instantie is hersteld', + 'company_gateway' => 'Betaalprovider', + 'company_gateways' => 'Betaalproviders', + 'new_company_gateway' => 'Nieuwe betaalprovider aanmaken', + 'edit_company_gateway' => 'Huidige betaalprovider bewerken', + 'created_company_gateway' => 'De nieuwe betaalprovider is aangemaakt', + 'updated_company_gateway' => 'De nieuwe betaalprovider is bijgewerkt', + 'archived_company_gateway' => 'De nieuwe betaalprovider is gearchiveerd', + 'deleted_company_gateway' => 'De nieuwe betaalprovider is verwijderd', + 'restored_company_gateway' => 'De nieuwe betaalprovider is hersteld', 'continue_editing' => 'Bewerk verder', 'default_value' => 'Standaard waarde', 'currency_format' => 'Munt formaat', @@ -3094,7 +3094,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'device_settings' => 'Apparaatinstellingen', 'credit_cards_and_banks' => 'Credit Cards & Banken', 'price' => 'Prijs', - 'email_sign_up' => 'Aanmelden voor email', + 'email_sign_up' => 'Aanmelden voor e-mail', 'google_sign_up' => 'Aanmelden bij Google', 'sign_up_with_google' => 'Aanmelden met Google', 'long_press_multiselect' => 'Lang indrukken multiselect', @@ -3126,10 +3126,10 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'task2' => 'Aangepaste Taak 2', 'task3' => 'Aangepaste Taak 3', 'task4' => 'Aangepaste Taak 4', - 'project1' => 'Aangepast Project 1', - 'project2' => 'Aangepast Project 2', - 'project3' => 'Aangepast Project 3', - 'project4' => 'Aangepast Project 4', + 'project1' => 'Aangepast project 1', + 'project2' => 'Aangepast project 2', + 'project3' => 'Aangepast project 3', + 'project4' => 'Aangepast project 4', 'expense1' => 'Aangepaste Uitgave 1', 'expense2' => 'Aangepaste Uitgave 2', 'expense3' => 'Aangepaste Uitgave 3', @@ -3190,7 +3190,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'generate_number' => 'Genereer nummer', 'when_saved' => 'Als opgeslagen', 'when_sent' => 'Als verzonden', - 'select_company' => 'Selecteer Bedrijf', + 'select_company' => 'Selecteer bedrijf', 'float' => 'Float', 'collapse' => 'Inklappen', 'show_or_hide' => 'Laten zien/Verbergen', @@ -3217,7 +3217,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'invoice_tax' => 'Factuur BTW-tarief', 'line_item_tax' => 'Regelitem BTW-tarief', 'inclusive_taxes' => 'Inclusief belasting', - 'invoice_tax_rates' => 'Factuur belastingtarief', + 'invoice_tax_rates' => 'Belastingtarief facturen', 'item_tax_rates' => 'Product belastingtarief', 'configure_rates' => 'Tarieven instellen', 'tax_settings_rates' => 'BTW-tarieven', @@ -3238,7 +3238,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'activity_57' => 'Systeem kon de factuur niet mailen :invoice', 'custom_value3' => 'Aangepaste waarde 3', 'custom_value4' => 'Aangepaste waarde 4', - 'email_style_custom' => 'Aangepaste Email Stijl', + 'email_style_custom' => 'Aangepaste e-mailstijl', 'custom_message_dashboard' => 'Aangepast bericht Dashboard', 'custom_message_unpaid_invoice' => 'Aangepast bericht Onbetaalde Factuur', 'custom_message_paid_invoice' => 'Aangepast bericht Betaalde Factuur', @@ -3279,29 +3279,29 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'client_country' => 'Land van de klant', 'client_is_active' => 'Klant is actief', 'client_balance' => 'Klanten balans', - 'client_address1' => 'Klant straat', - 'client_address2' => 'Klant apt/suite', - 'client_shipping_address1' => 'Klant leveringsadres', - 'client_shipping_address2' => 'Klant leverings Apt/Suite', + 'client_address1' => 'Straat klant', + 'client_address2' => 'Appartement/busnr. klant', + 'client_shipping_address1' => 'Leveringsadres klant', + 'client_shipping_address2' => 'Appartement/busnr. leveringsadres klant', 'tax_rate1' => 'BTW-tarief 1', 'tax_rate2' => 'BTW-tarief 2', 'tax_rate3' => 'BTW-tarief 3', 'archived_at' => 'Gearchiveerd op', 'has_expenses' => 'Heeft uitgaves', - 'custom_taxes1' => 'Aangepaste Belastingen 1', - 'custom_taxes2' => 'Aangepaste Belastingen 2', - 'custom_taxes3' => 'Aangepaste Belastingen 3', - 'custom_taxes4' => 'Aangepaste Belastingen 4', - 'custom_surcharge1' => 'Aangepaste Toeslag 1', - 'custom_surcharge2' => 'Aangepaste Toeslag 2', - 'custom_surcharge3' => 'Aangepaste Toeslag 3', - 'custom_surcharge4' => 'Aangepaste Toeslag 4', + 'custom_taxes1' => 'Aangepaste belastingen 1', + 'custom_taxes2' => 'Aangepaste belastingen 2', + 'custom_taxes3' => 'Aangepaste belastingen 3', + 'custom_taxes4' => 'Aangepaste belastingen 4', + 'custom_surcharge1' => 'Aangepaste toeslag 1', + 'custom_surcharge2' => 'Aangepaste toeslag 2', + 'custom_surcharge3' => 'Aangepaste toeslag 3', + 'custom_surcharge4' => 'Aangepaste toeslag 4', 'is_deleted' => 'Is verwijderd', 'vendor_city' => 'Stad van de klant', 'vendor_state' => 'Leverancier provincie', 'vendor_country' => 'Land van de verkoper', - 'credit_footer' => 'Krediet voettekst', - 'credit_terms' => 'Kredietvoorwaarden', + 'credit_footer' => 'Voettekst creditfactuur', + 'credit_terms' => 'Voorwaarden creditfactuur', 'untitled_company' => 'Naamloos bedrijf', 'added_company' => 'Bedrijf toegevoegd', 'supported_events' => 'Ondersteunde gebeurtenissen', @@ -3313,7 +3313,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'saved_design' => 'Ontwerp opgeslagen', 'client_details' => 'Klantgegevens', 'company_address' => 'Bedrijfs-adres', - 'quote_details' => 'Offerte Details', + 'quote_details' => 'Details offerte', 'credit_details' => 'Kredietgegevens', 'product_columns' => 'Product kolommen', 'task_columns' => 'Taak kolommen', @@ -3322,20 +3322,20 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'owned' => 'Eigendom', 'payment_success' => 'Betaling is gelukt', 'payment_failure' => 'Betalingsfout', - 'quote_sent' => 'Offerte Verzonden', - 'credit_sent' => 'Factuur verzonden', + 'quote_sent' => 'Offerte verzonden', + 'credit_sent' => 'Creditfactuur verzonden', 'invoice_viewed' => 'Factuur bekeken', - 'quote_viewed' => 'Offerte Bekeken', - 'credit_viewed' => 'Krediet bekeken', - 'quote_approved' => 'Offerte Goedgekeurd', + 'quote_viewed' => 'Offerte bekeken', + 'credit_viewed' => 'Creditfactuur bekeken', + 'quote_approved' => 'Offerte goedgekeurd', 'receive_all_notifications' => 'Ontvang alle notificaties', 'purchase_license' => 'Licentie aanschaffen', 'enable_modules' => 'Modules inschakelen', 'converted_quote' => 'Offerte omgezet', - 'credit_design' => 'Krediet ontwerp', + 'credit_design' => 'Ontwerp creditfactuur', 'includes' => 'Inclusief', 'css_framework' => 'CSS Framework', - 'custom_designs' => 'Aangepaste Ontwerpen', + 'custom_designs' => 'Aangepaste ontwerpen', 'designs' => 'Ontwerpen', 'new_design' => 'Nieuw ontwerp', 'edit_design' => 'Ontwerp aanpassen', @@ -3345,31 +3345,31 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'deleted_design' => 'Ontwerp verwijderd', 'removed_design' => 'Ontwerp verwijderd', 'restored_design' => 'Ontwerp teruggehaald', - 'recurring_tasks' => 'Terugkerende Taken', - 'removed_credit' => 'Krediet is verwijders', + 'recurring_tasks' => 'Terugkerende taken', + 'removed_credit' => 'Creditfactuur is verwijderd', 'latest_version' => 'Laatste versie', 'update_now' => 'Nu updaten', - 'a_new_version_is_available' => 'Een nieuwe versie van de web applicatie is beschikbaar', + 'a_new_version_is_available' => 'Een nieuwe versie van de webapplicatie is beschikbaar', 'update_available' => 'Update beschikbaar', - 'app_updated' => 'Update met succes voltooid', + 'app_updated' => 'Update is gelukt', 'integrations' => 'Integraties', 'tracking_id' => 'Tracering Id', 'slack_webhook_url' => 'Slack Webhook URL', 'partial_payment' => 'Gedeeltelijke betaling', 'partial_payment_email' => 'E-mail voor gedeeltelijke betaling', - 'clone_to_credit' => 'Klonen naar krediet', - 'emailed_credit' => 'Krediet is verzonden', - 'marked_credit_as_sent' => 'Krediet is gemarkeerd als verzonden', + 'clone_to_credit' => 'Klonen naar creditfactuur', + 'emailed_credit' => 'Creditfactuur is verzonden', + 'marked_credit_as_sent' => 'Creditfactuur is gemarkeerd als verzonden', 'email_subject_payment_partial' => 'E-mail gedeeltelijke betalingsonderwerp', 'is_approved' => 'Is goedgekeurd', - 'migration_went_wrong' => 'Oeps, er is iets misgegaan! Zorg dat je een Invoice Ninja V5 instance hebt opgezet voordat je met de migratie begint.', + 'migration_went_wrong' => 'Oeps, er is iets misgegaan! Zorg dat u een Invoice Ninja V5 instance hebt opgezet voordat u met de migratie begint.', 'cross_migration_message' => 'Migratie tussen accounts is niet toegestaan. Lees er hier meer over: https://invoiceninja.github.io/docs/migration/#troubleshooting', - 'email_credit' => 'E-mail Krediet', + 'email_credit' => 'E-mail creditfactuur', 'client_email_not_set' => 'Er is geen e-mailadres ingesteld voor de klant', 'ledger' => 'Grootboek', 'view_pdf' => 'Bekijk PDF', 'all_records' => 'Alle gegevens', - 'owned_by_user' => 'Owned door gebruiker', + 'owned_by_user' => 'Eigendom van gebruiker', 'credit_remaining' => 'Resterend krediet', 'use_default' => 'Gebruik standaard', 'reminder_endless' => 'Eindeloze herinneringen', @@ -3381,7 +3381,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'removed_payment_term' => 'betalingstermijn met succes verwijderd', 'restored_payment_term' => 'betalingstermijn met succes hersteld', 'full_width_editor' => 'Volledige breedte-editor', - 'full_height_filter' => 'Volledige Hoogte Filter', + 'full_height_filter' => 'Volledige hoogte-filter', 'email_sign_in' => 'Log in met e-mail', 'change' => 'Aanpassen', 'change_to_mobile_layout' => 'Verander naar de mobiele layout?', @@ -3391,9 +3391,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'cancelled' => 'Geannuleerd', 'quote_amount' => 'Offertebedrag', 'hosted' => 'Gehost', - 'selfhosted' => 'Zelf-Gehost', + 'selfhosted' => 'Zelf-gehost', 'hide_menu' => 'Verberg menu', - 'show_menu' => 'Toon Menu', + 'show_menu' => 'Toon menu', 'partially_refunded' => 'Gedeeltelijk terugbetaald', 'search_documents' => 'Documenten zoeken', 'search_designs' => 'Ontwerpen zoeken', @@ -3401,17 +3401,17 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'search_clients' => 'Klanten zoeken', 'search_products' => 'Producten zoeken', 'search_quotes' => 'Offertes zoeken', - 'search_credits' => 'Zoek Krediet', - 'search_vendors' => 'Zoek Leveranciers', - 'search_users' => 'Zoek Gebruikers', - 'search_tax_rates' => 'Zoek Belastingstarieven', - 'search_tasks' => 'Zoek Taken', - 'search_settings' => 'Zoek Instellingen', - 'search_projects' => 'Zoek Projecten', - 'search_expenses' => 'Zoek Uitgaven', - 'search_payments' => 'Zoek Betalingen', - 'search_groups' => 'Zoek Groepen', - 'search_company' => 'Zoek Bedrijf', + 'search_credits' => 'Zoek creditfactuur', + 'search_vendors' => 'Zoek leveranciers', + 'search_users' => 'Zoek gebruikers', + 'search_tax_rates' => 'Zoek belastingstarieven', + 'search_tasks' => 'Zoek taken', + 'search_settings' => 'Zoek instellingen', + 'search_projects' => 'Zoek projecten', + 'search_expenses' => 'Zoek uitgaven', + 'search_payments' => 'Zoek betalingen', + 'search_groups' => 'Zoek groepen', + 'search_company' => 'Zoek bedrijf', 'cancelled_invoice' => 'Factuur succesvol geannuleerd', 'cancelled_invoices' => 'Facturen succesvol geannuleerd', 'reversed_invoice' => 'Factuur succesvol teruggedraaid', @@ -3423,9 +3423,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'activity_59' => ':gebruiker heeft factuur :invoice geannuleerd', 'payment_reconciliation_failure' => 'Koppelen mislukt', 'payment_reconciliation_success' => 'Koppelen gelukt', - 'gateway_success' => 'Gateway geslaagd', - 'gateway_failure' => 'Gateway gefaald', - 'gateway_error' => 'Gateway fout', + 'gateway_success' => 'Betaalprovider geslaagd', + 'gateway_failure' => 'Betaalprovider gefaald', + 'gateway_error' => 'Betaalprovider fout', 'email_send' => 'E-mail verzonden', 'email_retry_queue' => 'E-mail wachtrij voor opnieuw versturen', 'failure' => 'Fout', @@ -3442,7 +3442,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'reminder3_sent' => '3de herinnering verstuurd', 'reminder_last_sent' => 'Laatste herinnering verstuurd', 'pdf_page_info' => 'Pagina :current van :total', - 'emailed_credits' => 'Creditnota is succesvol gemaild', + 'emailed_credits' => 'Creditfactuur is succesvol gemaild', 'view_in_stripe' => 'Bekijk in Stripe', 'rows_per_page' => 'Regels per pagina', 'apply_payment' => 'Betaling toepassen', @@ -3457,7 +3457,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'last_login_at' => 'Voor het laatst ingelogd', 'company_key' => 'Bedrijfssleutel', 'storefront' => 'Storefront', - 'storefront_help' => 'Activeer third-party applicaties om facturen te maken', + 'storefront_help' => 'Sta applicaties van derden toe om facturen aan te maken', 'count_records_selected' => ':count records geselecteerd', 'count_record_selected' => ':count record geselecteerd', 'client_created' => 'Klant aangemaakt', @@ -3487,11 +3487,11 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'expires_on' => 'Verloopt op', 'show_sidebar' => 'Laat zijbalk zien', 'hide_sidebar' => 'Verberg zijbalk', - 'event_type' => 'Event Type', + 'event_type' => 'Eventtype', 'copy' => 'Kopieer', - 'must_be_online' => 'Herstart alsjeblieft de applicatie wanneer er verbinding is met het internet', + 'must_be_online' => 'Herstart alstublieft de applicatie wanneer er verbinding is met het internet', 'crons_not_enabled' => 'De crons moeten geactiveerd worden', - 'api_webhooks' => 'API Webhooks', + 'api_webhooks' => 'API-webhooks', 'search_webhooks' => 'Zoek :count webhooks', 'search_webhook' => 'Zoek 1 webhook', 'webhook' => 'Webhook', @@ -3509,16 +3509,16 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'new_token' => 'Nieuwe token', 'removed_token' => 'Token succesvol verwijderd', 'restored_token' => 'Token succesvol hersteld', - 'client_registration' => 'Klant registratie', + 'client_registration' => 'Klantregistratie', 'client_registration_help' => 'Zelfregistratie voor klanten in het portaal toestaan', - 'customize_and_preview' => 'Pas aan & Weergeven', + 'customize_and_preview' => 'Pas aan & weergeven', 'search_document' => 'Zoek 1 document', 'search_design' => 'Zoek 1 ontwerp', 'search_invoice' => 'Zoek 1 factuur', 'search_client' => 'Zoek 1 klant', 'search_product' => 'Zoek 1 product', 'search_quote' => 'Zoek 1 offerte', - 'search_credit' => 'Zoek 1 krediet', + 'search_credit' => 'Zoek 1 creditfactuur', 'search_vendor' => 'Zoek 1 leverancier', 'search_user' => 'Zoek 1 gebruiker', 'search_tax_rate' => 'Zoek 1 BTW-tarief', @@ -3530,47 +3530,47 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'created_on' => 'Aangemaakt op', 'payment_status_-1' => 'Niet toegepast', 'lock_invoices' => 'Vergrendel facturen', - 'show_table' => 'Weergeef als tabel', - 'show_list' => 'Weergeef als lijst', + 'show_table' => 'Weergeven als tabel', + 'show_list' => 'Weergeven als lijst', 'view_changes' => 'Bekijk wijzigingen', 'force_update' => 'Forceer een update', 'force_update_help' => 'De applicatie draait op de laatste versie, maar wellicht zijn er nog een aantal fixes beschikbaar.', - 'mark_paid_help' => 'Volg de uitgave dat betaald is', + 'mark_paid_help' => 'Volg de uitgave die betaald is', 'mark_invoiceable_help' => 'Sta toe dat de uitgave gefactureerd kan worden', 'add_documents_to_invoice_help' => 'Maak de documenten zichtbaar voor de klant', 'convert_currency_help' => 'Stel een ruilwaarde in van de valuta', - 'expense_settings' => 'Uitgave instellingen', + 'expense_settings' => 'Uitgave-instellingen', 'clone_to_recurring' => 'Maak een kopie voor herhaling', 'crypto' => 'Crypto', - 'user_field' => 'Gebruiker Veld', + 'user_field' => 'Gebruikersveld', 'variables' => 'Variabelen', 'show_password' => 'Wachtwoord weergeven', 'hide_password' => 'Wachtwoord verbergen', 'copy_error' => 'Fout kopiëren', - 'capture_card' => 'Capture Kaart', + 'capture_card' => 'Creditcard belasten (capture)', 'auto_bill_enabled' => 'Automatisch betalen ingeschakeld', - 'total_taxes' => 'Totale belasting', + 'total_taxes' => 'Totaal belasting', 'line_taxes' => 'Regelitem belastingen', 'total_fields' => 'Totaal velden', - 'stopped_recurring_invoice' => 'Herhalend factuur succesvol stopgezet', - 'started_recurring_invoice' => 'Herhalend factuur succesvol gestart', - 'resumed_recurring_invoice' => 'Herhalend factuur succesvol hervat', - 'gateway_refund' => 'Gateway terugbetaling', - 'gateway_refund_help' => 'Verwerk een terugbetaling via de betalingsgateway', + 'stopped_recurring_invoice' => 'Terugkerende factuur succesvol stopgezet', + 'started_recurring_invoice' => 'Terugkerende factuur succesvol gestart', + 'resumed_recurring_invoice' => 'Terugkerende factuur succesvol hervat', + 'gateway_refund' => 'Terugbetaling via betaalprovider', + 'gateway_refund_help' => 'Verwerk een terugbetaling via de betaalprovider', 'due_date_days' => 'Verloopdatum', 'paused' => 'Gepauzeerd', 'day_count' => 'Dag :count', 'first_day_of_the_month' => 'Eerste dag van de maand', 'last_day_of_the_month' => 'Laatste dag van de maand', - 'use_payment_terms' => 'Gebruik betalingseisen', + 'use_payment_terms' => 'Gebruik betaalvoorwaarden', 'endless' => 'Eindeloos', - 'next_send_date' => 'Volgende verzenddatum', + 'next_send_date' => 'Eerstvolgende verzenddatum', 'remaining_cycles' => 'Resterende keren', - 'created_recurring_invoice' => 'Herhalend factuur succesvol aangemaakt', - 'updated_recurring_invoice' => 'Herhalend factuur succesvol bijgewerkt', - 'removed_recurring_invoice' => 'Herhalend factuur succesvol verwijderd', - 'search_recurring_invoice' => 'Zoek 1 herhalend factuur', - 'search_recurring_invoices' => 'Zoek :count herhalende facturen', + 'created_recurring_invoice' => 'Terugkerende factuur succesvol aangemaakt', + 'updated_recurring_invoice' => 'Terugkerende factuur succesvol bijgewerkt', + 'removed_recurring_invoice' => 'Terugkerende factuur succesvol verwijderd', + 'search_recurring_invoice' => 'Zoek 1 terugkerende factuur', + 'search_recurring_invoices' => 'Zoek :count terugkerende facturen', 'send_date' => 'Verzenddatum', 'auto_bill_on' => 'Automatische betaling aan', 'minimum_under_payment_amount' => 'Minimum onder het te betalen bedrag', @@ -3578,29 +3578,29 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'allow_over_payment_help' => 'Draag bij aan extra betalen om fooi te accepteren', 'allow_under_payment' => 'Onderbetaling toestaan', 'allow_under_payment_help' => 'Ondersteun het betalen van een minimaal gedeeltelijk / aanbetalingsbedrag', - 'test_mode' => 'Test modus', + 'test_mode' => 'Testmodus', 'calculated_rate' => 'Berekend tarief', 'default_task_rate' => 'Standaard taak tarief', 'clear_cache' => 'Maak cache leeg', - 'sort_order' => 'Sorteer volgorde', + 'sort_order' => 'Sorteervolgorde', 'task_status' => 'Status', - 'task_statuses' => 'Taak status', - 'new_task_status' => 'Nieuwe taak status', - 'edit_task_status' => 'Taak status aanpassen', - 'created_task_status' => 'Succesvol een taak status aangemaakt', - 'archived_task_status' => 'Succesvol een taak status gearchiveerd', - 'deleted_task_status' => 'Succesvol een taak status verwijderd', - 'removed_task_status' => 'Succesvol een taak status verwijderd', - 'restored_task_status' => 'Succesvol een taak status hersteld', - 'search_task_status' => 'Zoek 1 taak status', - 'search_task_statuses' => 'Zoek :count taak statussen', - 'show_tasks_table' => 'Taken tabel tonen', - 'show_tasks_table_help' => 'Weergeef de taken wanneer een factuur wordt aangemaakt', - 'invoice_task_timelog' => 'Factuur taak tijdlog', + 'task_statuses' => 'Taakstatus', + 'new_task_status' => 'Nieuwe taakstatus', + 'edit_task_status' => 'Taakstatus aanpassen', + 'created_task_status' => 'Succesvol een taakstatus aangemaakt', + 'archived_task_status' => 'Succesvol een taakstatus gearchiveerd', + 'deleted_task_status' => 'Succesvol een taakstatus verwijderd', + 'removed_task_status' => 'Succesvol een taakstatus verwijderd', + 'restored_task_status' => 'Succesvol een taakstatus hersteld', + 'search_task_status' => 'Zoek 1 taakstatus', + 'search_task_statuses' => 'Zoek :count taakstatussen', + 'show_tasks_table' => 'Takentabel tonen', + 'show_tasks_table_help' => 'Geef de taken weer zodra een factuur is aangemaakt', + 'invoice_task_timelog' => 'Tijdlogboek factuurtaken', 'invoice_task_timelog_help' => 'Voeg de tijd omschrijvingen toe aan de factuur producten', 'auto_start_tasks_help' => 'Start taken voordat het wordt opgeslagen', 'configure_statuses' => 'Status instellen', - 'task_settings' => 'Taak instellingen', + 'task_settings' => 'Taakinstellingen', 'configure_categories' => 'Categorieën instellen', 'edit_expense_category' => 'Bewerk uitgavencategorie', 'removed_expense_category' => 'De uitgavencategorie is verwijderd', @@ -3610,7 +3610,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'show_option' => 'Toon optie', 'negative_payment_error' => 'Het kredietbedrag mag niet hoger zijn als het te betalen bedrag', 'should_be_invoiced_help' => 'Maak het mogelijk de uitgave te factureren', - 'configure_gateways' => 'Configureer Gateways', + 'configure_gateways' => 'Configureer betaalproviders', 'payment_partial' => 'Gedeeltelijke betaling', 'is_running' => 'Word uitgevoerd', 'invoice_currency_id' => 'Factuur valuta ID', @@ -3628,9 +3628,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'company_disabled_warning' => 'Waarschuwing: dit bedrijf is nog niet geactiveerd', 'late_invoice' => 'Late factuur', 'expired_quote' => 'Verlopen offerte', - 'remind_invoice' => 'Herinnering Factuur', - 'client_phone' => 'Klant telefoon', - 'required_fields' => 'Verreisde velden', + 'remind_invoice' => 'Stuur factuurherinnering', + 'client_phone' => 'Telefoon klant', + 'required_fields' => 'Vereiste velden', 'enabled_modules' => 'Ingeschakelde modules', 'activity_60' => ':contact heeft de offerte :quote bekeken', 'activity_61' => ':user heeft de klant :client aangepast', @@ -3640,9 +3640,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'activity_65' => ':user heeft de derde herinnering voor factuur :invoice naar :contact verzonden', 'activity_66' => ':user heeft eindeloze herinneringen voor factuur :invoice naar :contact verzonden', 'expense_category_id' => 'Uitgave categorie ID', - 'view_licenses' => 'Bekijk Licenties', + 'view_licenses' => 'Bekijk licenties', 'fullscreen_editor' => 'Editor volledig scherm', - 'sidebar_editor' => 'Zijbalk Editor', + 'sidebar_editor' => 'Zijbalk editor', 'please_type_to_confirm' => 'Typ ":value" om te bevestigen', 'purge' => 'Wissen', 'clone_to' => 'Dupliceer naar', @@ -3650,7 +3650,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'labels' => 'Labels', 'add_custom' => 'Aangepast toevoegen', 'payment_tax' => 'Betalingsbelasting', - 'white_label' => 'White Label', + 'white_label' => 'Whitelabel', 'sent_invoices_are_locked' => 'Verzonden facturen zijn vergrendeld', 'paid_invoices_are_locked' => 'Betaalde facturen zijn vergrendeld', 'source_code' => 'Broncode', @@ -3660,7 +3660,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'restored_task_statuses' => 'Succesvol taak statussen :value hersteld', 'deleted_expense_categories' => 'Succesvol uitgave categorieën :value verwijderd', 'restored_expense_categories' => 'Uitgave succesvol hersteld: waarde categorieën ', - 'archived_recurring_invoices' => 'Terugkerende succesvol gearchiveerd: waarde facturen', + 'archived_recurring_invoices' => 'Terugkerende facturen succesvol gearchiveerd: :value', 'deleted_recurring_invoices' => 'Terugkerende succesvol verwijderd: waarde facturen', 'restored_recurring_invoices' => 'Terugkerende succesvol hersteld: waarde facturen', 'archived_webhooks' => 'Succesvol gearchiveerd: waarde webhooks', @@ -3685,9 +3685,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'archived_tax_rates' => 'Succesvol gearchiveerd: waarde belastingstarieven', 'deleted_tax_rates' => 'Succesvol verwijderd: waarde belastingtarieven', 'restored_tax_rates' => 'Succesvol hersteld: waarde belastingtarieven', - 'archived_company_gateways' => 'Succesvol gearchiveerd: waarde gateways', - 'deleted_company_gateways' => 'Succesvol verwijderd: waarde gateways', - 'restored_company_gateways' => 'Succesvol hersteld: waarde gateways', + 'archived_company_gateways' => 'Succesvol gearchiveerd: :value betaalproviders', + 'deleted_company_gateways' => 'Succesvol verwijderd: :value betaalproviders', + 'restored_company_gateways' => 'Succesvol hersteld: :value betaalproviders', 'archived_groups' => 'Succesvol gearchiveerd: waarde groepen', 'deleted_groups' => 'Succesvol verwijderd: waarde groepen', 'restored_groups' => 'Succesvol hersteld: waarde groepen', @@ -3703,18 +3703,18 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'restored_invoices' => 'Succesvol hersteld: waarde facturen', 'restored_payments' => 'Succesvol hersteld: waarde betalingen', 'restored_quotes' => 'Succesvol hersteld: waarde offertes', - 'update_app' => 'Update App', + 'update_app' => 'Update app', 'started_import' => 'Succesvol begonnen met importeren', 'duplicate_column_mapping' => 'Dubbele kolommapping', 'uses_inclusive_taxes' => 'Gebruik inclusieve belastingen', - 'is_amount_discount' => 'Is bedrag korting', + 'is_amount_discount' => 'Is het bedrag een korting', 'map_to' => 'Map naar', 'first_row_as_column_names' => 'Gebruik eerste rij als kolomnaam', 'no_file_selected' => 'Geen bestand geselecteerd', 'import_type' => 'Importeer type', - 'draft_mode' => 'Concept modus', + 'draft_mode' => 'Conceptmodus', 'draft_mode_help' => 'Toon aanpassingen sneller maar minder nauwkeurig', - 'show_product_discount' => 'Toon product korting', + 'show_product_discount' => 'Toon productkorting', 'show_product_discount_help' => 'Geef een regelitem kortingssveld weer', 'tax_name3' => 'BTW naam 3', 'debug_mode_is_enabled' => 'Foutopsporingsmodus is ingeschakeld', @@ -3725,9 +3725,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'upcoming_expenses' => 'Aankomende uitgaven', 'search_payment_term' => 'Zoek betalingstermijn 1', 'search_payment_terms' => 'Zoek :count betalingstermijnen', - 'save_and_preview' => 'Opslaan en bekijk voorbeeld', - 'save_and_email' => 'Opslaan en verstuur email', - 'converted_balance' => 'Omgekeerd balans', + 'save_and_preview' => 'Opslaan en voorbeeld bekijken', + 'save_and_email' => 'Opslaan en e-mail versturen', + 'converted_balance' => 'Omgezet saldo', 'is_sent' => 'Is verzonden', 'document_upload' => 'Document uploaden', 'document_upload_help' => 'Laat klanten documenten uploaden', @@ -3741,31 +3741,31 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'color' => 'Kleur', 'show' => 'Tonen', 'empty_columns' => 'Lege kolommen', - 'project_name' => 'Project naam', + 'project_name' => 'Projectnaam', 'counter_pattern_error' => 'Om :client_counter te gebruiken, voeg ofwel :client_number of :client_id_number toe om conflicten te voorkomen', 'this_quarter' => 'Dit kwartaal', 'to_update_run' => 'Om bij te werken voer', - 'registration_url' => 'Registratie link', - 'show_product_cost' => 'Laat product kosten zien', + 'registration_url' => 'Registratielink', + 'show_product_cost' => 'Laat productkosten zien', 'complete' => 'Voltooi', 'next' => 'Volgende', 'next_step' => 'Volgende stap', - 'notification_credit_sent_subject' => 'Krediet :invoice is verzonden naar :client', - 'notification_credit_viewed_subject' => 'Krediet :invoice is bekeken door :client', - 'notification_credit_sent' => 'De volgende klant :client heeft een email ontvangen voor een krediet :invoice van :amount', - 'notification_credit_viewed' => 'Klant :client heeft offerte :invoice voor :amount bekeken.', + 'notification_credit_sent_subject' => 'Creditfactuur :invoice is verzonden naar :client', + 'notification_credit_viewed_subject' => 'Creditfactuur :invoice is bekeken door :client', + 'notification_credit_sent' => 'De volgende klant :client heeft een e-mail ontvangen voor creditfactuur :invoice van :amount', + 'notification_credit_viewed' => 'Klant :client heeft creditfactuur :credit van :amount bekeken.', 'reset_password_text' => 'Voer uw e-mailadres in om uw wachtwoord opnieuw in te stellen.', 'password_reset' => 'Wachtwoord opnieuw instellen', - 'account_login_text' => 'Welkom! Leuk om je te zien.', + 'account_login_text' => 'Welkom! Fijn dat u er bent.', 'request_cancellation' => 'Annulering aanvragen', - 'delete_payment_method' => 'Verwijder betalingsmethode', - 'about_to_delete_payment_method' => 'U staat op het punt om de betalingsmethode te verwijderen.', + 'delete_payment_method' => 'Verwijder betaalmethode', + 'about_to_delete_payment_method' => 'U staat op het punt om de betaalmethode te verwijderen.', 'action_cant_be_reversed' => 'Actie kan niet terug gedraaid worden', 'profile_updated_successfully' => 'Het profiel is succesvol bijgewerkt.', 'currency_ethiopian_birr' => 'Ethiopische birr', 'client_information_text' => 'Gebruik een permanent adres waar u post kan ontvangen.', 'status_id' => 'Factuur status', - 'email_already_register' => 'Dit emailadres is al aan een account gelinkt', + 'email_already_register' => 'Dit e-mailadres is al aan een account gelinkt', 'locations' => 'Locaties', 'freq_indefinitely' => 'Oneindig', 'cycles_remaining' => 'RESTERENDE CYCLI', @@ -3774,24 +3774,24 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'download_timeframe' => 'Gebruik deze link om uw bestanden te downloaden, de link vervalt over 1 uur.', 'new_signup' => 'Nieuwe aanmelding', 'new_signup_text' => 'Een nieuw account is aangemaakt door :user - :email vanaf IP-adres :ip', - 'notification_payment_paid_subject' => 'Betaling werd gedaan door: klant', - 'notification_partial_payment_paid_subject' => 'Gedeeltelijke betaling werd gedaan door: klant', + 'notification_payment_paid_subject' => 'Betaling is gedaan door: klant', + 'notification_partial_payment_paid_subject' => 'Gedeeltelijke betaling is gedaan door: klant', 'notification_payment_paid' => 'Een betaling voor :amount is gemaakt door klant :client voor Factuur :invoice.', - 'notification_partial_payment_paid' => 'Een gedeeltelijke betaling van :amount werd gedaan door klant :client voor :invoice', + 'notification_partial_payment_paid' => 'Een gedeeltelijke betaling van :amount is gedaan door klant :client voor :invoice', 'notification_bot' => 'Notificatie bot', 'invoice_number_placeholder' => 'Factuur # :invoice', 'entity_number_placeholder' => ':entity # :entity_number', 'email_link_not_working' => 'Indien de bovenstaande knop niet werkt voor u, gelieve op de link te klikken', 'display_log' => 'Toon logboek', - 'send_fail_logs_to_our_server' => 'Report errors to help improve the app', + 'send_fail_logs_to_our_server' => 'Rapporteer foutmeldingen om de app te verbeteren', 'setup' => 'Setup', 'quick_overview_statistics' => 'Snel overzicht & statistieken', - 'update_your_personal_info' => 'Update jouw persoonlijke informatie', + 'update_your_personal_info' => 'Update uw persoonlijke informatie', 'name_website_logo' => 'Naam, website & logo', 'make_sure_use_full_link' => 'Zorg ervoor dat u de volledige link gebruikt naar uw website', 'personal_address' => 'Persoonlijk adres', 'enter_your_personal_address' => 'Voer uw persoonlijk adres in', - 'enter_your_shipping_address' => 'Voer uw verzendadres in', + 'enter_your_shipping_address' => 'Voer uw leveringsadres in', 'list_of_invoices' => 'Lijst van facturen', 'with_selected' => 'Met geselecteerde', 'invoice_still_unpaid' => 'Deze factuur is nog niet betaald. Klik op de knop om de betaling te vervolledigen', @@ -3804,15 +3804,15 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'list_of_payments' => 'Lijst met betalingen', 'payment_details' => 'Details van de betaling', 'list_of_payment_invoices' => 'Facturen koppelen', - 'list_of_payment_methods' => 'Lijst met betalingsmethodes', - 'payment_method_details' => 'Details van betalingsmethodes', - 'permanently_remove_payment_method' => 'Verwijder deze betalingsmethode definitief', + 'list_of_payment_methods' => 'Lijst met betaalmethoden', + 'payment_method_details' => 'Details van betaalmethodes', + 'permanently_remove_payment_method' => 'Verwijder deze betaalmethode definitief', 'warning_action_cannot_be_reversed' => 'Waarschuwing! Deze aanpassing kan niet terug worden gedraaid!', 'confirmation' => 'Bevestiging', 'list_of_quotes' => 'Offertes', 'waiting_for_approval' => 'Wachten op goedkeuren', 'quote_still_not_approved' => 'Deze offerte is nog steeds niet goedgekeurd', - 'list_of_credits' => 'Kredieten', + 'list_of_credits' => 'Creditfacturen', 'required_extensions' => 'Vereiste extensies', 'php_version' => 'PHP versie', 'writable_env_file' => 'Aanpasbaar .env bestand', @@ -3822,11 +3822,11 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'oops_issues' => 'Oeps, er klopt iets niet!', 'open_in_new_tab' => 'Open in nieuw tabblad', 'complete_your_payment' => 'Voltooi betaling', - 'authorize_for_future_use' => 'Autoriseer de betalingsmethode voor toekomstig gebruik', + 'authorize_for_future_use' => 'Autoriseer de betaalmethode voor toekomstig gebruik', 'page' => 'Pagina', 'per_page' => 'Per pagina', 'of' => 'Of', - 'view_credit' => 'Toon krediet', + 'view_credit' => 'Toon creditfactuur', 'to_view_entity_password' => 'Om de :entity te zien moet u een wachtwoord invoeren.', 'showing_x_of' => 'Toont de :first tot :last van de :total resultaten', 'no_results' => 'Geen resultaten gevonden.', @@ -3839,19 +3839,19 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'complete_your_bank_account_verification' => 'De bankaccount moet geverifieerd worden voor gebruik.', 'checkout_com' => 'Checkout.com', 'footer_label' => 'Copyright © :year :company.', - 'credit_card_invalid' => 'Het opgegeven kredietkaart nummer is niet geldig.', + 'credit_card_invalid' => 'Het opgegeven creditcard-nummer is niet geldig.', 'month_invalid' => 'Opgegeven maand is niet geldig.', 'year_invalid' => 'Opgegeven jaar is niet geldig.', 'https_required' => 'HTTP is vereist, anders zal het formulier mislukken', 'if_you_need_help' => 'Als u hulp nodig heeft, kunt u een bericht sturen naar onze', 'update_password_on_confirm' => 'Uw account zal bevestigd worden na het wijzigen van uw wachtwoord.', - 'bank_account_not_linked' => 'Om te betalen met een bankrekening moet u deze eerst toevoegen als betalingsmethode.', + 'bank_account_not_linked' => 'Om te betalen met een bankrekening moet u deze eerst toevoegen als betaalmethode.', 'application_settings_label' => 'Laat ons basis informatie over uw Invoice Ninja opslaan!', 'recommended_in_production' => 'Aanbevolen in productie', 'enable_only_for_development' => 'Enkel te activeren voor ontwikkeling', 'test_pdf' => 'Test PDF', - 'checkout_authorize_label' => 'Checkout.com kan opgeslagen worden als betalingsmethode na de eerste transactie. Vergeet "Sla kredietkaart details op" aan te vinken tijdens betalingsproces.', - 'sofort_authorize_label' => 'Overschrijving (SOFORT) kan opgeslagen worden als betalingsmethode voor toekomstig gebruik na de eerste transactie. Vergeet "Sla gegevens op" aan te vinken tijdens betalingsproces.', + 'checkout_authorize_label' => 'Checkout.com kan opgeslagen worden als betaalmethode na de eerste transactie. Vergeet "Sla creditcard details op" aan te vinken tijdens betalingsproces.', + 'sofort_authorize_label' => 'Overschrijving (SOFORT) kan opgeslagen worden als betaalmethode voor toekomstig gebruik na de eerste transactie. Vergeet "Sla gegevens op" aan te vinken tijdens betalingsproces.', 'node_status' => 'Node status', 'npm_status' => 'NPM status', 'node_status_not_found' => 'Kan Node nergens vinden. Is het geïnstalleerd?', @@ -3867,23 +3867,23 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'payment_error_code_20087' => '20087: Bad Track Data (ongeldige CVV en/of vervaldatum)', 'download_selected' => 'Download geselecteerde', 'to_pay_invoices' => 'Om facturen te betalen moet u', - 'add_payment_method_first' => 'Voeg betalingsmethode toe', + 'add_payment_method_first' => 'Voeg betaalmethode toe', 'no_items_selected' => 'Geen artikelen geselecteerd.', 'payment_due' => 'Betaling verschuldigd', 'account_balance' => 'Account Saldo', 'thanks' => 'Dank u wel', 'minimum_required_payment' => 'Minimaal vereiste betaling is :amount', 'under_payments_disabled' => 'Het bedrijf ondersteunt geen onderbetalingen.', - 'over_payments_disabled' => 'Het bedrijf ondersteunt geen te hoge betalingen.', + 'over_payments_disabled' => 'Het bedrijf ondersteunt geen overbetalingen.', 'saved_at' => 'Opgeslagen op :time', 'credit_payment' => 'Krediet toegepast op factuur :invoice_number', - 'credit_subject' => 'Nieuw krediet :number van :account', + 'credit_subject' => 'Nieuwe creditfactuur :number van :account', 'credit_message' => 'Klik op onderstaande link om uw factuur van :amount in te zien.', 'payment_type_Crypto' => 'Cryptogeld', 'payment_type_Credit' => 'Krediet', 'store_for_future_use' => 'Bewaar voor toekomstig gebruik', 'pay_with_credit' => 'Betaal met krediet', - 'payment_method_saving_failed' => 'Betalingsmethode kan niet opgeslagen worden voor toekomstig gebruik.', + 'payment_method_saving_failed' => 'Betaalmethode kan niet opgeslagen worden voor toekomstig gebruik.', 'pay_with' => 'Betaal met', 'n/a' => 'Nvt', 'by_clicking_next_you_accept_terms' => 'Door op "Volgende stap" te klikken, accepteert u de voorwaarden.', @@ -3896,48 +3896,48 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'notification_invoice_reminder2_sent_subject' => 'Herinnering 2 voor factuur :invoice is verzonden naar :client', 'notification_invoice_reminder3_sent_subject' => 'Herinnering 3 voor factuur :invoice is verzonden naar :client', 'notification_invoice_custom_sent_subject' => 'Aangepaste herinnering voor factuur :invoice is verzonden naar :client', - 'notification_invoice_reminder_endless_sent_subject' => 'Eindeloze herinnering voor factuur :invoice werd verstuurd naar :client', + 'notification_invoice_reminder_endless_sent_subject' => 'Eindeloze herinnering voor factuur :invoice is verstuurd naar :client', 'assigned_user' => 'Toegewezen gebruiker', - 'setup_steps_notice' => 'Zorg ervoor dat u elke sectie test om door te gaan naar de volgende stap.', + 'setup_steps_notice' => 'Zorg ervoor dat u elk onderdeel test om door te gaan naar de volgende stap.', 'setup_phantomjs_note' => 'Opmerking over Phantom JS. Lees verder.', - 'minimum_payment' => 'Minimum betaling', - 'no_action_provided' => 'Geen actie voorzien. Als u denkt dat dit niet klopt, neem dan contact op met uw support.', - 'no_payable_invoices_selected' => 'Geen te betalen facturen geselecteerd. Zorg ervoor dat u niet probeert om een conceptfactuur of factuur met geen openstaande betaling te betalen.', - 'required_payment_information' => 'Vereiste betalingsgegevens', - 'required_payment_information_more' => 'Om de betaling te voltooien, hebben we meer details van je nodig.', - 'required_client_info_save_label' => 'Dit wordt opgeslagen, zodat je dit later niet meer hoeft in te vullen', - 'notification_credit_bounced' => 'We konden offerte :invoice niet afleveren bij :contact.', - 'notification_credit_bounced_subject' => 'Kan krediet :invoice niet verzenden', + 'minimum_payment' => 'Minimumbetaling', + 'no_action_provided' => 'Geen actie opgegeven. Als u denkt dat dit niet klopt, neem dan contact op met uw ondersteuningspunt.', + 'no_payable_invoices_selected' => 'Geen te betalen facturen geselecteerd. Zorg ervoor dat u niet probeert om een conceptfactuur of factuur zonder openstaande betaling te betalen.', + 'required_payment_information' => 'Vereiste betaalgegevens', + 'required_payment_information_more' => 'Om de betaling te voltooien, hebben we meer details van u nodig.', + 'required_client_info_save_label' => 'Dit wordt opgeslagen, zodat u dit later niet meer hoeft in te vullen', + 'notification_credit_bounced' => 'We konden creditfactuur :invoice niet afleveren bij :contact.', + 'notification_credit_bounced_subject' => 'Kan creditfactuur :invoice niet verzenden', 'save_payment_method_details' => 'Bewaar betaalmethode', 'new_card' => 'Nieuwe betaalkaart', 'new_bank_account' => 'Voeg een bankrekening toe', 'company_limit_reached' => 'Limiet van :limit companies per account.', - 'credits_applied_validation' => 'Het totaal aan toegepaste credits kan niet MEER zijn dan het totaal van de facturen', + 'credits_applied_validation' => 'Het totaal aan toegepast krediet mag niet HOGER zijn dan het totaal van de facturen', 'credit_number_taken' => 'Kredietnummer is al in gebruik', - 'credit_not_found' => 'Krediet niet gevonden', + 'credit_not_found' => 'Creditfactuur niet gevonden', 'invoices_dont_match_client' => 'Geselecteerde facturen zijn niet van één enkele klant', - 'duplicate_credits_submitted' => 'Dubbele kredieten ingediend.', + 'duplicate_credits_submitted' => 'Dubbele creditfacturen ingediend.', 'duplicate_invoices_submitted' => 'Dubbele facturen ingediend.', 'credit_with_no_invoice' => 'U moet een factuur hebben ingesteld wanneer u een krediet gebruikt in een betaling', - 'client_id_required' => 'Klant id is verplicht', + 'client_id_required' => 'Klant-id is verplicht', 'expense_number_taken' => 'Uitgavenummer reeds in gebruik', 'invoice_number_taken' => 'Factuurnummer reeds in gebruik', 'payment_id_required' => 'Betalings-id verplicht', 'unable_to_retrieve_payment' => 'Niet in staat om gevraagde betaling op te halen', 'invoice_not_related_to_payment' => 'Factuur ID :invoice is niet herleidbaar naar deze betaling', - 'credit_not_related_to_payment' => 'Krediet ID :credit is niet verwant aan deze betaling', + 'credit_not_related_to_payment' => 'Creditfactuur ID :credit is niet verwant aan deze betaling', 'max_refundable_invoice' => 'Poging tot terugbetaling is groter dan toegestaan voor invoice id :invoice, maximum terug te betalen bedrag is :amount', 'refund_without_invoices' => 'Als u probeert een betaling met bijgevoegde facturen terug te betalen, geef dan geldige facturen op die moeten worden terugbetaald.', 'refund_without_credits' => 'Als u probeert een betaling met bijgevoegde tegoeden terug te betalen, geef dan geldige tegoeden op die moeten worden terugbetaald.', 'max_refundable_credit' => 'Bedrag van terugbetaling overschrijdt het credit bedrag :credit, het maximum toegelaten teruggave is beperkt tot :amount', - 'project_client_do_not_match' => 'Project klant komt niet overeen met entiteit klant', + 'project_client_do_not_match' => 'Projectklant komt niet overeen met de klant van de entiteit', 'quote_number_taken' => 'Offertenummer reeds in gebruik', - 'recurring_invoice_number_taken' => 'Terugkerend factuurnummer :number al in gebruik', + 'recurring_invoice_number_taken' => 'Terugkerend factuurnummer :number is al in gebruik', 'user_not_associated_with_account' => 'Gebruiker niet geassocieerd met deze account', 'amounts_do_not_balance' => 'Bedragen zijn niet correct.', 'insufficient_applied_amount_remaining' => 'Onvoldoende toegepast bedrag om de betaling te dekken.', - 'insufficient_credit_balance' => 'Onvoldoende balans op krediet.', - 'one_or_more_invoices_paid' => 'één of meer van deze facturen werden betaald', + 'insufficient_credit_balance' => 'Onvoldoende balans.', + 'one_or_more_invoices_paid' => 'één of meer van deze facturen zijn betaald', 'invoice_cannot_be_refunded' => 'Factuur-ID :number kan niet worden terugbetaald', 'attempted_refund_failed' => 'Poging tot terugbetaling van het bedrag van :amount. Het maximale terugbetaling os gelimiteerd tot :refundable_amount', 'user_not_associated_with_this_account' => 'Deze gebruiker kan niet aan dit bedrijf worden gekoppeld. Misschien hebben ze al een gebruiker geregistreerd op een ander account?', @@ -3953,7 +3953,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'no_group_settings_found' => 'Geen groep instellingen gevonden', 'access_denied' => 'Onvoldoende rechten om deze bron te openen / wijzigen', 'invoice_cannot_be_marked_paid' => 'Factuur kan niet als betaald worden gemarkeerd', - 'invoice_license_or_environment' => 'Ongeldige licentie of ongeldige omgeving :omgeving', + 'invoice_license_or_environment' => 'Ongeldige licentie of ongeldige omgeving :environment', 'route_not_available' => 'Route niet beschikbaar', 'invalid_design_object' => 'Ongeldig aangepast ontwerpobject', 'quote_not_found' => 'Offerte/s niet gevonden', @@ -3964,10 +3964,10 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'user_detached' => 'Gebruiker losgekoppeld van bedrijf', 'create_webhook_failure' => 'Maken van webhook is mislukt', 'payment_message_extended' => 'Bedankt voor uw betaling van :amount voor :invoice', - 'online_payments_minimum_note' => 'Note: Online payments are supported only if amount is larger than $1 or currency equivalent.', + 'online_payments_minimum_note' => 'Opmerking: online-betalingen worden alleen ondersteund als het bedrag hoger is dan € 1,- of het equivalent in een andere valuta.', 'payment_token_not_found' => 'Betalingstoken niet gevonden. Probeer het opnieuw. Als het probleem zich blijft voordoen, probeer het dan met een andere betaalmethode', 'vendor_address1' => 'Leverancier straatnaam', - 'vendor_address2' => 'Leverancier Apt / Suite', + 'vendor_address2' => 'Leverancier appartement/busnr.', 'partially_unapplied' => 'Gedeeltelijk niet toegepast', 'select_a_gmail_user' => 'Selecteer een gebruiker die is geverifieerd met Gmail', 'list_long_press' => 'Lijst lang indrukken', @@ -3996,8 +3996,8 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'count_days' => ':count dagen', 'web_session_timeout' => 'Time-out van websessie', 'security_settings' => 'Veiligheidsinstellingen', - 'resend_email' => 'Email opnieuw verzenden', - 'confirm_your_email_address' => 'Bevestig je e-mailadres', + 'resend_email' => 'E-mail opnieuw verzenden', + 'confirm_your_email_address' => 'Bevestig uw e-mailadres', 'freshbooks' => 'FreshBooks', 'invoice2go' => 'Invoice2go', 'invoicely' => 'Invoicely', @@ -4007,7 +4007,7 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'required_files_missing' => 'Geef alle CSV\'s op.', 'migration_auth_label' => 'Laten we verder gaan door te authenticeren.', 'api_secret' => 'API geheim', - 'migration_api_secret_notice' => 'Je kan de API_SECRET terugvinden in het .env bestand van Invoice Ninja V5. Als de waarde ontbreekt, laat het veld leeg.', + 'migration_api_secret_notice' => 'U kunt de API_SECRET terugvinden in het .env bestand van Invoice Ninja V5. Als de waarde ontbreekt, laat het veld leeg.', 'billing_coupon_notice' => 'Uw korting zal bij afrekenen toegepast worden', 'use_last_email' => 'Gebruik laatste e-mail', 'activate_company' => 'Activeer bedrijf', @@ -4023,33 +4023,33 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'delivered' => 'Afgeleverd', 'spam' => 'Spam', 'view_docs' => 'Bekijk documenten', - 'enter_phone_to_enable_two_factor' => 'Geef een mobiel telefoonnummer op om tweefactor authenticatie in te schakelen', + 'enter_phone_to_enable_two_factor' => 'Geef een mobiel telefoonnummer op om tweefactorauthenticatie in te schakelen', 'send_sms' => 'Verzend SMS', 'sms_code' => 'SMS Code', 'connect_google' => 'Verbind met Google', 'disconnect_google' => 'Verwijder Google', - 'disable_two_factor' => 'Schakel twee factor authenticatie uit', + 'disable_two_factor' => 'Schakel tweefactorauthenticatie uit', 'invoice_task_datelog' => 'Factuur taak datumlog', 'invoice_task_datelog_help' => 'Voeg datumdetails toe aan de factuurregelitems', 'promo_code' => 'Promocode', 'recurring_invoice_issued_to' => 'Terugkerende factuur gericht naar', 'subscription' => 'Abonnement', - 'new_subscription' => 'Nieuw Abonnement', + 'new_subscription' => 'Nieuw abonnement', 'deleted_subscription' => 'Succesvol abonnement verwijderd', 'removed_subscription' => 'Succesvol abonnement verwijderd', 'restored_subscription' => 'Succesvol abonnement hersteld', 'search_subscription' => 'Zoek 1 abonnement ', 'search_subscriptions' => 'Zoek :count abonnementen', 'subdomain_is_not_available' => 'Subdomein is niet beschikbaar', - 'connect_gmail' => 'Verbind Gmail', - 'disconnect_gmail' => 'Verbreek Gmail', + 'connect_gmail' => 'Verbinden met Gmail', + 'disconnect_gmail' => 'Verbreek de verbinding met Gmail', 'connected_gmail' => 'Succesvol verbonden met Gmail', - 'disconnected_gmail' => 'Succesvol verbroken met Gmail', - 'update_fail_help' => 'Wijzigingen aan de code kunnen leiden tot een blokkade tijdens het updaten. Door het volgende commando kan je de wijzigingen verwijderen:', + 'disconnected_gmail' => 'Succesvol verbinding verbroken met Gmail', + 'update_fail_help' => 'Wijzigingen aan de code kunnen leiden tot een blokkade tijdens het updaten. Door het volgende commando kunt u de wijzigingen verwijderen:', 'client_id_number' => 'Klant-id nummer', 'count_minutes' => ':count minuten', 'password_timeout' => 'Wachtwoord timeout', - 'shared_invoice_credit_counter' => 'Deel factuur/creditnota teller', + 'shared_invoice_credit_counter' => 'Deel factuur/creditfactuur tellers', 'activity_80' => ':user heeft abonnement :subscription aangemaakt', 'activity_81' => ':user heeft abonnement :subscription bijgewerkt', 'activity_82' => ':user heeft abonnement :subscription gearchiveerd', @@ -4060,13 +4060,13 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'notification_invoice_created_body' => 'Het volgende factuur :invoice was aangemaakt voor klant :client voor een bedrag :amount.', 'notification_invoice_created_subject' => 'Factuur :invoice aangemaakt voor :client', 'notification_quote_created_body' => 'Volgende voorstel :invoice is aangemaakt voor klant :client voor het bedrag van :amount', - 'notification_quote_created_subject' => 'Offerte :invoice werd aangemaakt voor :client', - 'notification_credit_created_body' => 'De volgende kredietfactuur :invoice werd aangemaakt voor client :client ter waarde van :amount.', - 'notification_credit_created_subject' => 'Kredietfactuur :invoice werd aangemaakt voor :client', + 'notification_quote_created_subject' => 'Offerte :invoice is aangemaakt voor :client', + 'notification_credit_created_body' => 'De volgende creditfactuur :invoice is aangemaakt voor klant :client ter waarde van :amount.', + 'notification_credit_created_subject' => 'Creditfactuur :invoice is aangemaakt voor :client', 'max_companies' => 'Maximaal gemigreerde bedrijven', 'max_companies_desc' => 'U heeft uw maximale aantal bedrijven bereikt. Verwijder bestaande bedrijven om nieuwe te migreren.', 'migration_already_completed' => 'Bedrijf is reeds gemigreerd', - 'migration_already_completed_desc' => 'Het ziet er naar uit dat je :company_name reeds hebt gemigreerd naar versie V5 van Invoice Ninja. Indien je opnieuw wilt beginnen, kan je de migratie forceren door bestaande data te laten verwijderen.', + 'migration_already_completed_desc' => 'Het ziet er naar uit dat u :company_name reeds hebt gemigreerd naar versie V5 van Invoice Ninja. Indien u opnieuw wilt beginnen, kunt u de migratie forceren door bestaande data te laten verwijderen.', 'payment_method_cannot_be_authorized_first' => 'Deze betaalmethode kan worden opgeslagen voor toekomstig gebruik, zodra u uw eerste transactie voltooit. Vergeet tijdens het betalingsproces niet "Winkelgegevens" aan te vinken.', 'new_account' => 'Nieuwe bankrekening', 'activity_100' => ':user heeft terugkerend factuur :recurring_invoice aangemaakt', @@ -4075,51 +4075,51 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen 'activity_103' => ':user heeft terugkerend factuur :recurring_invoice verwijderd', 'activity_104' => ':user heeft terugkerend factuur :recurring_invoice teruggezet', 'new_login_detected' => 'Nieuwe login gedetecteerd voor uw account.', - 'new_login_description' => 'Je bent recent ingelogd geweest in jouw Invoice Ninja account van een nieuwe locatie of toestel:

    -IP: :ip -Tijd: :time
    -Email: :email
    ', + 'new_login_description' => 'U bent recent ingelogd geweest in uw Invoice Ninja account van een nieuwe locatie of toestel:

    +IP-adres: :ip +Tijdstip: :time
    +E-mail: :email
    ', 'contact_details' => 'Contactgegevens', 'download_backup_subject' => 'De backup van uw bedrijf is beschikbaar om te downloaden.', 'account_passwordless_login' => 'Toegang zonder wachtwoord', 'user_duplicate_error' => 'Kan dezelfde gebruiker niet aan hetzelfde bedrijf toevoegen', 'user_cross_linked_error' => 'Gebruiker bestaat reeds maar kan niet gekoppeld worden aan meerdere accounts', - 'ach_verification_notification_label' => 'ACH verificatie', - 'ach_verification_notification' => 'Voor het koppelen van bankrekeningen is verificatie vereist. De betalingsgateway stuurt hiervoor automatisch twee kleine stortingen. Het duurt 1-2 werkdagen voordat deze stortingen op het online afschrift van de klant verschijnen.', + 'ach_verification_notification_label' => 'ACH-verificatie', + 'ach_verification_notification' => 'Voor het koppelen van bankrekeningen is verificatie vereist. De betaalprovider stuurt hiervoor automatisch twee kleine stortingen. Het duurt 1-2 werkdagen voordat deze stortingen op het online-afschrift van de klant verschijnen.', 'login_link_requested_label' => 'Inloglink opgevraagd', 'login_link_requested' => 'Er was een aanvraag om in te loggen door middel van een link. Als u dit niet bent geweest kunt u dit negeren.', 'invoices_backup_subject' => 'Uw facturen zijn klaar om te downloaden', 'migration_failed_label' => 'Integratie mislukt', 'migration_failed' => 'Er is iets fout gegaan tijdens de migratie van het volgende bedrijf:', 'client_email_company_contact_label' => 'Als u vragen heeft kunt u contact met ons opnemen, wij zijn hier om te helpen!', - 'quote_was_approved_label' => 'Offerde werd goedgekeurd', + 'quote_was_approved_label' => 'Offerte is goedgekeurd', 'quote_was_approved' => 'We willen u laten weten dat de offerte is goedgekeurd.', 'company_import_failure_subject' => 'Fout bij het importeren van :company', 'company_import_failure_body' => 'Er was een probleem bij het importeren van de bedrijfsdata, de foutmelding was:', 'recurring_invoice_due_date' => 'Vervaldatum', - 'amount_cents' => 'Bedrag in pennies, pence of centen. Voorbeeld: voor €0.10 voer 10 in', - 'default_payment_method_label' => 'Standaard betalingsmethode', - 'default_payment_method' => 'Maak dit uw favoriete manier van betalen.', - 'already_default_payment_method' => 'Dit is jouw voorkeurs manier van betalen.', - 'auto_bill_disabled' => 'Automatisch Betalen Uitgeschakeld', - 'select_payment_method' => 'Selecteer een betalingsmethode:', + 'amount_cents' => 'Bedrag in centen, pennies of pence. Voorbeeld: voor €0,10 voer 10 in', + 'default_payment_method_label' => 'Standaard betaalmethode', + 'default_payment_method' => 'Maak dit uw voorkeursbetaalmethode.', + 'already_default_payment_method' => 'Dit is uw voorkeursbetaalmethode.', + 'auto_bill_disabled' => 'Automatisch betalen uitgeschakeld', + 'select_payment_method' => 'Selecteer een betaalmethode:', 'login_without_password' => 'Inloggen zonder wachtwoord', 'email_sent' => 'E-mail mij wanneer een factuur is verzonden', 'one_time_purchases' => 'Eenmalige aankopen', 'recurring_purchases' => 'Terugkerende aankopen', - 'you_might_be_interested_in_following' => 'Misschien bent u geïnteresseerd in het volgende', - 'quotes_with_status_sent_can_be_approved' => 'Only quotes with "Sent" status can be approved. Expired quotes cannot be approved.', + 'you_might_be_interested_in_following' => 'Wellicht bent u geïnteresseerd in het volgende', + 'quotes_with_status_sent_can_be_approved' => 'Alleen offertes met de status "Verzonden" kunnen worden goedgekeurd. Verlopen offertes kunnen niet worden goedgekeurd.', 'no_quotes_available_for_download' => 'Geen offertes beschikbaar om te downloaden.', 'copyright' => 'Copyright', 'user_created_user' => ':user heeft :created_user aangemaakt om :time', 'company_deleted' => 'Bedrijf verwijderd', - 'company_deleted_body' => 'Bedrijf [ :company ] werd verwijderd door :user', + 'company_deleted_body' => 'Bedrijf [ :company ] is verwijderd door :user', 'back_to' => 'Terug naar :url', - 'stripe_connect_migration_title' => 'Verbind uw Stripe account', - 'stripe_connect_migration_desc' => 'Invoice Ninja v5 maakt gebruik van Stripe Connect om uw Stripe account te koppelen aan Invoice Ninja. Dit zorgt voor een extra beveiligingslaag voor uw account. Nu je gegevens zijn gemigreerd, dien je Stripe te autoriseren om betalingen te accepteren in v5.

    Om dit te doen gaat u naar Instellingen > Online Betalingen > Gateways configureren. Klik op Stripe Connect en vervolgens onder Settings op Setup Gateway. Dit brengt u naar Stripe om Invoice Ninja te autoriseren en bij terugkomst zal uw account succesvol gekoppeld zijn!', + 'stripe_connect_migration_title' => 'Verbind met uw Stripe-account', + 'stripe_connect_migration_desc' => 'Invoice Ninja v5 maakt gebruik van Stripe Connect om uw Stripe-account te koppelen aan Invoice Ninja. Dit zorgt voor een extra beveiligingslaag voor uw account. Nu uw gegevens zijn gemigreerd, dient u Stripe te autoriseren om betalingen te accepteren in v5.

    Om dit te doen gaat u naar Instellingen > Online Betalingen > Betaalproviders configureren. Klik op Stripe Connect en vervolgens onder Settings op Setup Gateway. Dit brengt u naar Stripe om Invoice Ninja te autoriseren en bij terugkomst zal uw account succesvol gekoppeld zijn!', 'email_quota_exceeded_subject' => 'Account e-mail quota overschreden.', - 'email_quota_exceeded_body' => 'U heeft in een periode van 24 uur :quota emails verstuurd.
    Uw uitgaande emails zijn hierbij gepauzeerd.

    Uw email quotum zal resetten om 23:00 UTC.', - 'auto_bill_option' => 'Kies ervoor om deze factuur automatisch te laten aanrekenen of niet.', + 'email_quota_exceeded_body' => 'U heeft in een periode van 24 uur :quota e-mails verstuurd.
    Uw uitgaande e-mails zijn hierbij gepauzeerd.

    Uw email quotum zal resetten om 23:00 UTC.', + 'auto_bill_option' => 'Kies ervoor om deze factuur al dan niet automatisch te laten verrekenen.', 'lang_Arabic' => 'Arabisch', 'lang_Persian' => 'Perzisch', 'lang_Latvian' => 'Lets', @@ -4130,13 +4130,13 @@ Email: :email
    ', 'locality' => 'Lokatie', 'checking' => 'Betaalrekening', 'savings' => 'Spaarrekening', - 'unable_to_verify_payment_method' => 'Kan de betalingsmethode niet verifiëren.', - 'generic_gateway_error' => 'Gateway-configuratiefout. Controleer uw inloggegevens.', + 'unable_to_verify_payment_method' => 'Kan de betaalmethode niet verifiëren.', + 'generic_gateway_error' => 'Configuratiefout betaalprovider. Controleer uw inloggegevens.', 'my_documents' => 'Mijn documenten', 'payment_method_cannot_be_preauthorized' => 'Deze betaalmethode kan niet vooraf worden geautoriseerd.', 'kbc_cbc' => 'KBC/CBC', 'bancontact' => 'Bancontact', - 'sepa_mandat' => 'Door uw IBAN op te geven en deze betaling te bevestigen, machtigt u :company en Stripe, onze betalingsdienstaanbieder, om instructies naar uw bank te sturen om uw rekening te debiteren en uw bank om uw rekening te debiteren in overeenstemming met die instructies. U heeft recht op terugbetaling door uw bank volgens de voorwaarden van uw overeenkomst met uw bank. Een terugbetaling moet worden aangevraagd binnen 8 weken vanaf de datum waarop uw rekening is afgeschreven.', + 'sepa_mandat' => 'Door uw IBAN op te geven en deze betaling te bevestigen, machtigt u :company en Stripe, onze betaalprovider, om instructies naar uw bank te sturen om uw bankrekening te debiteren in overeenstemming met voornoemde voorwaarden. U heeft recht op terugbetaling door uw bank volgens de voorwaarden van uw overeenkomst met uw bank. Een terugbetaling moet worden aangevraagd binnen 8 weken vanaf de datum waarop het bedrag van uw rekening is afgeschreven.', 'ideal' => 'iDEAL', 'bank_account_holder' => 'Rekeninghouder', 'aio_checkout' => 'Klik en betaal', @@ -4149,8 +4149,8 @@ Email: :email
    ', 'becs' => 'BECS Direct Debit', 'bacs' => 'BACS-incasso', 'payment_type_BACS' => 'BACS-incasso', - 'missing_payment_method' => 'Voeg eerst een betaalmethode toe voordat je probeert te betalen.', - 'becs_mandate' => 'Door uw bankrekeninggegevens op te geven, gaat u akkoord met dit automatische incasso-verzoek en de automatische incasso-serviceovereenkomst , en autoriseert u Stripe Payments Australia Pty Ltd ACN 160 180 343 automatische incasso gebruikers-ID-nummer 507156 ("Stripe") om uw rekening te debiteren via het Bulk Electronic Clearing System (BECS) namens :company (de "Handelaar") voor alle bedragen die afzonderlijk door de Handelaar aan u zijn meegedeeld. U verklaart dat u ofwel een rekeninghouder ofwel een tekenbevoegde bent op de hierboven vermelde rekening.', + 'missing_payment_method' => 'Voeg eerst een betaalmethode toe voordat u probeert te betalen.', + 'becs_mandate' => 'Door uw bankrekeninggegevens te delen, gaat u akkoord met dit verzoek tot automatische incasso en serviceovereenkomst betreffende de automatische incasso, en autoriseert u Stripe Payments Australia Pty Ltd ACN 160 180 343 automatische incasso gebruikers-ID-nummer 507156 ("Stripe") om uw rekening te debiteren via het Bulk Electronic Clearing System (BECS) namens :company (de "Handelaar") voor alle bedragen die afzonderlijk door de Handelaar aan u zijn meegedeeld. U verklaart dat u ofwel een rekeninghouder ofwel een tekenbevoegde bent op de hierboven vermelde rekening.', 'you_need_to_accept_the_terms_before_proceeding' => 'U moet de voorwaarden accepteren voordat u verder gaat.', 'direct_debit' => 'Automatische Incasso', 'clone_to_expense' => 'Dupliceer naar uitgave', @@ -4159,7 +4159,7 @@ Email: :email
    ', 'invalid_amount' => 'Ongeldige hoeveelheid. Alleen getallen/decimale waarden.', 'client_payment_failure_body' => 'Betaling voor factuur :invoice voor een bedrag van :amount is mislukt.', 'browser_pay' => 'Google Pay, Apple Pay, Microsoft Pay', - 'no_available_methods' => 'Er kan geen credit card worden gevonden op uw apparaat. Lees hier meer over. ', + 'no_available_methods' => 'Er kan geen creditcard worden gevonden op uw apparaat. Lees hier meer over. ', 'gocardless_mandate_not_ready' => 'Betalingsopdracht nog niet gereed. Probeer het later nog eens.', 'payment_type_instant_bank_pay' => 'Instant Bank Pay', 'payment_type_iDEAL' => 'iDEAL', @@ -4191,20 +4191,20 @@ Email: :email
    ', 'please_set_a_password' => 'Voer een account wachtwoord in', 'recommend_desktop' => 'Wij raden de desktop app aan voor de beste werking.', 'recommend_mobile' => 'Wij raden de mobiele app aan voor de beste werking.', - 'disconnected_gateway' => 'Gateway succesvol ontkoppeld', + 'disconnected_gateway' => 'Betaalprovider succesvol ontkoppeld', 'disconnect' => 'Verbreek verbinding', 'add_to_invoices' => 'Voeg toe aan facturen', 'bulk_download' => 'Download', 'persist_data_help' => 'Sla gegevens lokaal op om de app sneller te laten starten. Uitschakelen kan de prestaties in grote accounts verbeteren', 'persist_ui' => 'Interface voorkeuren opslaan', 'persist_ui_help' => 'Sla de UI-status lokaal op om de app op de laatste locatie te laten starten. Uitschakelen kan de prestaties verbeteren', - 'client_postal_code' => 'Klant postcode', - 'client_vat_number' => 'Klant BTW-nummer', + 'client_postal_code' => 'Postcode klant', + 'client_vat_number' => 'BTW-nummer klant', 'has_tasks' => 'Heeft taken', 'registration' => 'Registratie', 'unauthorized_stripe_warning' => 'Autoriseer Stripe om online betalingen te accepteren.', 'update_all_records' => 'Alle records bijwerken', - 'set_default_company' => 'Stel in als standaard bedrijf', + 'set_default_company' => 'Stel in als standaardbedrijf', 'updated_company' => 'Bedrijf succesvol geüpdatet', 'kbc' => 'KBC', 'why_are_you_leaving' => 'Help ons door aan te geven waarom (optioneel)', @@ -4213,23 +4213,23 @@ Email: :email
    ', 'error_cross_client_expenses' => 'Kosten moeten allemaal behoren tot dezelfde klant', 'app' => 'App', 'for_best_performance' => 'Download voor de beste prestaties de :app-app', - 'bulk_email_invoice' => 'Email factuur', - 'bulk_email_quote' => 'Email offerte', - 'bulk_email_credit' => 'Email krediet', - 'removed_recurring_expense' => 'Terugkerende onkosten zijn verwijderd', + 'bulk_email_invoice' => 'E-mail factuur', + 'bulk_email_quote' => 'E-mail offerte', + 'bulk_email_credit' => 'E-mail creditfactuur', + 'removed_recurring_expense' => 'Terugkerende uitgaven zijn verwijderd', 'search_recurring_expense' => 'Zoek terugkerende uitgave', 'search_recurring_expenses' => 'Zoek terugkerende uitgaven', 'last_sent_date' => 'Recentste verzenddatum', 'include_drafts' => 'Voeg concepten toe', 'include_drafts_help' => 'Neem conceptrecords op in rapporten', 'is_invoiced' => 'Is gefactureerd', - 'change_plan' => 'Beheer Plan', + 'change_plan' => 'Beheer abonnement', 'persist_data' => 'Gegevens behouden', 'customer_count' => 'Klantenteller', 'verify_customers' => 'Klanten verifiëren', 'google_analytics_tracking_id' => 'Google Analytics Tracking ID', - 'decimal_comma' => 'Decimaal komma', - 'use_comma_as_decimal_place' => 'Gebruik een komma als decimaal in formulieren', + 'decimal_comma' => 'Komma als decimaalteken', + 'use_comma_as_decimal_place' => 'Gebruik een komma als decimaalteken in formulieren', 'select_method' => 'Selecteer methode', 'select_platform' => 'Selecteer platform', 'use_web_app_to_connect_gmail' => 'Gebruik de web-app om verbinding te maken met Gmail', @@ -4256,19 +4256,19 @@ Email: :email
    ', 'check_status' => 'Check Status', 'free_trial' => 'Gratis proefversie', 'free_trial_help' => 'Alle accounts krijgen een proefperiode van twee weken van het Pro-abonnement. Zodra de proefperiode is afgelopen, gaat uw account automatisch over naar het gratis abonnement.', - 'free_trial_ends_in_days' => 'De proefperiode van het Pro-plan eindigt over :count dagen, klik om te upgraden.', - 'free_trial_ends_today' => 'Vandaag is de laatste dag van de Pro-proefperiode, klik om te upgraden.', - 'change_email' => 'Wijzig email', - 'client_portal_domain_hint' => 'Optioneel: Configureer een afzonderlijke domein voor de klantenportaal', + 'free_trial_ends_in_days' => 'De proefperiode van het Pro-abonnement eindigt over :count dagen, klik om te upgraden.', + 'free_trial_ends_today' => 'Vandaag is de laatste dag van de proefperiode van het Pro-abonnement, klik om te upgraden.', + 'change_email' => 'Wijzig e-mail', + 'client_portal_domain_hint' => 'Optioneel: configureer een afzonderlijke domein voor de klantenportaal', 'tasks_shown_in_portal' => 'Taken weergegeven in portaal', 'uninvoiced' => 'Gefactureerd', - 'subdomain_guide' => 'De subdomein wordt gebruikt voor het klantenportaal om links aan te passen op jouw merk m.a.w. https://your-brand.invoicing.co', - 'send_time' => 'Verzend uur', - 'import_settings' => 'Importeer settings', - 'json_file_missing' => 'Geef een JSON bestand op', + 'subdomain_guide' => 'De subdomein wordt gebruikt voor het klantenportaal om links aan te passen op uw merk m.a.w. https://your-brand.invoicing.co', + 'send_time' => 'Tijdstip verzending', + 'import_settings' => 'Importeer instellingen', + 'json_file_missing' => 'Geef een JSON-bestand op', 'json_option_missing' => 'Selecteer om instellingen en/of data te importeren', 'json' => 'JSON', - 'no_payment_types_enabled' => 'Geen betalingsmodalititeiten geactiveerd', + 'no_payment_types_enabled' => 'Geen betaalmethoden geactiveerd', 'wait_for_data' => 'Wacht tot de gegevens volledig zijn geladen', 'net_total' => 'Totaal', 'has_taxes' => 'Bevat belastingen', @@ -4276,7 +4276,7 @@ Email: :email
    ', 'imported_customers' => 'Succesvol begonnen met het importeren van klanten', 'login_success' => 'Login succesvol', 'login_failure' => 'Inloggen mislukt', - 'exported_data' => 'Zodra het bestand klaar is, ontvang je een e-mail met een downloadlink', + 'exported_data' => 'Zodra het bestand klaar is, ontvangt u een e-mail met een downloadlink', 'include_deleted_clients' => 'Inclusief verwijderde klanten', 'include_deleted_clients_help' => 'Laad records van verwijderde clients', 'step_1_sign_in' => 'Stap 1: Inloggen', @@ -4294,7 +4294,7 @@ Email: :email
    ', 'count_sessions' => ':count Sessies', 'invoice_created' => 'Factuur aangemaakt', 'quote_created' => 'Offerte aangemaakt', - 'credit_created' => 'Creditnota aangemaakt', + 'credit_created' => 'Creditfactuur aangemaakt', 'enterprise' => 'Onderneming', 'invoice_item' => 'Factuur item', 'quote_item' => 'Offerte item', @@ -4305,12 +4305,12 @@ Email: :email
    ', 'move_up' => 'Verplaats omhoog', 'move_down' => 'Verplaats omlaag', 'move_bottom' => 'Verplaatsknop', - 'body_variable_missing' => 'Fout: de aangepaste email moet een :body variabele bevatten', - 'add_body_variable_message' => 'Zorg ervoor dat je een :body variabele gebruikt', + 'body_variable_missing' => 'Fout: de aangepaste e-mail moet een :body variabele bevatten', + 'add_body_variable_message' => 'Zorg ervoor dat u een :body variabele gebruikt', 'view_date_formats' => 'Bijkijk datumformaten', 'is_viewed' => 'Bekeken', 'letter' => 'Brief', - 'legal' => 'Legaal', + 'legal' => 'Juridisch', 'page_layout' => 'Verticaal', 'portrait' => 'Portrait', 'landscape' => 'Horizontaal', @@ -4333,14 +4333,14 @@ Email: :email
    ', 'trial_enabled' => 'Proefperiode ingeschakeld', 'trial_duration' => 'Proefperiode duratie', 'allow_query_overrides' => 'Sta query overrides toe', - 'allow_plan_changes' => 'Sta planswijzigingen toe', - 'plan_map' => 'Plan map', + 'allow_plan_changes' => 'Sta abonnementswijzigingen toe', + 'plan_map' => 'Overzicht abonnement', 'refund_period' => 'Terugbetalingsperiode', 'webhook_configuration' => 'Webhook Configuratie', 'purchase_page' => 'Aankoop pagina', - 'email_bounced' => 'Email gebounced', + 'email_bounced' => 'E-mail gebounced', 'email_spam_complaint' => 'Spam klacht', - 'email_delivery' => 'Email bezorging', + 'email_delivery' => 'E-mail bezorgd', 'webhook_response' => 'Webhook Response', 'pdf_response' => 'PDF Response', 'authentication_failure' => 'Authenticatie Mislukt', @@ -4352,8 +4352,8 @@ Email: :email
    ', 'status_color_theme' => 'Status Kleurenthema', 'load_color_theme' => 'Kleurthema laden', 'lang_Estonian' => 'Estland', - 'marked_credit_as_paid' => 'Creditnota gemarkeerd als betaald', - 'marked_credits_as_paid' => 'Creditnota\'s gemarkeerd als betaald', + 'marked_credit_as_paid' => 'Creditfactuur gemarkeerd als betaald', + 'marked_credits_as_paid' => 'Creditfacturen gemarkeerd als betaald', 'wait_for_loading' => 'Data is aan het laden - een moment geduld', 'wait_for_saving' => 'Data is aan het opslaan - een moment geduld', 'html_preview_warning' => 'Opmerking: veranderingen die hier worden gemaakt zijn voorvertoningen, ze moeten hierboven worden toegepast', @@ -4368,28 +4368,28 @@ Email: :email
    ', 'to_view_entity_set_password' => 'Om de :entity te bekijken, moet u een wachtwoord instellen.', 'unsubscribe' => 'Afmelden', 'unsubscribed' => 'Afgemeld', - 'unsubscribed_text' => 'Je bent verwijderd uit meldingen voor dit document', - 'client_shipping_state' => 'Verzendstaat klant', - 'client_shipping_city' => 'Opdrachtgever Scheepvaartstad', - 'client_shipping_postal_code' => 'Postcode verzending klant', - 'client_shipping_country' => 'Land van verzending van de klant', + 'unsubscribed_text' => 'U bent verwijderd uit meldingen voor dit document', + 'client_shipping_state' => 'Staat/provincie leveringsadres klant', + 'client_shipping_city' => 'Stad leveringsadres klant', + 'client_shipping_postal_code' => 'Postcode leveringsadres klant', + 'client_shipping_country' => 'Land leveringsadres klant', 'load_pdf' => 'Laad PDF', 'start_free_trial' => 'Start gratis proefperiode', - 'start_free_trial_message' => 'Start your FREE 14 day trial of the Pro Plan', + 'start_free_trial_message' => 'Start uw GRATIS proefperiode van 14 dagen voor het Pro-abonnement', 'due_on_receipt' => 'Verschuldigd bij ontvangst', 'is_paid' => 'Is betaald', 'age_group_paid' => 'Betaald', 'id' => 'ID kaart', 'convert_to' => 'Reken om naar', 'client_currency' => 'Klant valuta', - 'company_currency' => 'Bedrijf valuta', - 'custom_emails_disabled_help' => 'Om spam te voorkomen moet je een betaald account hebben om emails aan te passen', + 'company_currency' => 'Bedrijfsvaluta', + 'custom_emails_disabled_help' => 'Om spam te voorkomen moet u een betaald account hebben om e-mails aan te passen', 'upgrade_to_add_company' => 'Upgrade uw abonnement om meer bedrijven toe te voegen', 'file_saved_in_downloads_folder' => 'Het bestand is opgeslagen in de downloadmap', 'small' => 'Klein', 'quotes_backup_subject' => 'Uw offertes zijn klaar om te downloaden.', - 'credits_backup_subject' => 'Je creditnota\'s zijn klaar om te downloaden', - 'document_download_subject' => 'Je documenten zijn klaar om te downloaden', + 'credits_backup_subject' => 'Uw creditfacturen zijn klaar om te downloaden', + 'document_download_subject' => 'Uw documenten zijn klaar om te downloaden', 'reminder_message' => 'Herinnering voor factuur :number voor :balance', 'gmail_credentials_invalid_subject' => 'Verzenden met GMail ongeldige inloggegevens', 'gmail_credentials_invalid_body' => 'Uw GMail-referenties zijn niet correct. Meld u aan bij de beheerdersportal en navigeer naar Instellingen > Gebruikersgegevens en koppel uw Gmail-account los en maak opnieuw verbinding. We sturen u deze melding dagelijks totdat dit probleem is opgelost', @@ -4417,8 +4417,8 @@ Email: :email
    ', 'signed_in_as' => 'Ingelogd als', 'total_results' => 'Totaal resultaat', 'restore_company_gateway' => 'Poort herstellen', - 'archive_company_gateway' => 'Archief gateway', - 'delete_company_gateway' => 'Gateway verwijderen', + 'archive_company_gateway' => 'Archiveer betaalprovider', + 'delete_company_gateway' => 'Betaalprovider verwijderen', 'exchange_currency' => 'Wisselkoers', 'tax_amount1' => 'Belastingbedrag 1', 'tax_amount2' => 'Belastingbedrag 2', @@ -4451,7 +4451,7 @@ Email: :email
    ', 'export_format' => 'Export Formaat', 'export_type' => 'Export Type', 'stop_on_unpaid' => 'Stop bij onbetaald', - 'stop_on_unpaid_help' => 'Stop met het maken van terugkerende facturen als de laatste factuur onbetaald is.', + 'stop_on_unpaid_help' => 'Stop met het aanmaken van terugkerende facturen wanneer de laatste factuur onbetaald is.', 'use_quote_terms' => 'Gebruik offertevoorwaarden', 'use_quote_terms_help' => 'Bij het omzetten van een offerte naar een factuur', 'add_country' => 'Voeg land toe', @@ -4459,26 +4459,26 @@ Email: :email
    ', 'enable_tooltips_help' => 'Toon tooltips wanneer u met de muis beweegt', 'multiple_client_error' => 'Fout: records behoren tot meer dan één klant', 'login_label' => 'Login met een bestaand account', - 'purchase_order' => 'Aankooporder', + 'purchase_order' => 'Inkooporder', 'purchase_order_number' => 'Aankoop ordernummer', - 'purchase_order_number_short' => 'Aankooporder #', + 'purchase_order_number_short' => 'Inkooporder #', 'inventory_notification_subject' => 'Melding van voorraaddrempel voor product: :product', 'inventory_notification_body' => 'Drempel van :amount is bereikt voor product: :product', - 'activity_130' => ':user heeft aankooporder :purchase_order aangemaakt', - 'activity_131' => ':user heeft aankooporder :purchase_order aangepast', - 'activity_132' => ':user heeft aankooporder :purchase_order gearchiveerd', - 'activity_133' => ':user heeft aankooporder :purchase_order verwijderd', - 'activity_134' => ':user heeft aankooporder :purchase_order hersteld', - 'activity_135' => ': user gebruiker gemailde inkooporder :purchase_order', + 'activity_130' => ':user heeft inkooporder :purchase_order aangemaakt', + 'activity_131' => ':user heeft inkooporder :purchase_order aangepast', + 'activity_132' => ':user heeft inkooporder :purchase_order gearchiveerd', + 'activity_133' => ':user heeft inkooporder :purchase_order verwijderd', + 'activity_134' => ':user heeft inkooporder :purchase_order hersteld', + 'activity_135' => ':user gebruiker gemailde inkooporder :purchase_order', 'activity_136' => ':contact bekeken inkooporder :purchase_order', 'purchase_order_subject' => 'Nieuwe inkooporder :number van :account', 'purchase_order_message' => 'Klik op de onderstaande link om uw bestelling voor :amount te bekijken.', - 'view_purchase_order' => 'Bekijk aankooporder', - 'purchase_orders_backup_subject' => 'Uw inkooporders zijn klaar om te downloaden', - 'notification_purchase_order_viewed_subject' => 'Inkooporder :invoice werd bekeken door :client', + 'view_purchase_order' => 'Bekijk inkooporder', + 'purchase_orders_backup_subject' => 'Uw inkooporders zijn gereed om te downloaden', + 'notification_purchase_order_viewed_subject' => 'Inkooporder :invoice is bekeken door :client', 'notification_purchase_order_viewed' => 'De volgende leverancier :client heeft inkooporder :invoice voor :amount bekeken.', - 'purchase_order_date' => 'Datum aankooporder', - 'purchase_orders' => 'Aankooporders', + 'purchase_order_date' => 'Datum inkooporder', + 'purchase_orders' => 'Inkooporders', 'purchase_order_number_placeholder' => 'Inkooporder #:purchase_order', 'accepted' => 'Geaccepteerd', 'activity_137' => ':contact geaccepteerde bestelling :purchase_order', @@ -4492,13 +4492,13 @@ Email: :email
    ', 'added_purchase_order_to_inventory' => 'Inkooporder met succes aan voorraad toegevoegd', 'added_purchase_orders_to_inventory' => 'Inkooporder met succes aan voorraad toegevoegd', 'client_document_upload' => 'Uploaden klantdocument', - 'vendor_document_upload' => 'Uploaden verkoperdocument', + 'vendor_document_upload' => 'Verkoopdocument uploaden', 'vendor_document_upload_help' => 'Leveranciers in staat stellen documenten te uploaden', - 'are_you_enjoying_the_app' => 'Geniet je van de app?', + 'are_you_enjoying_the_app' => 'Bevalt de app?', 'yes_its_great' => 'Ja, het is geweldig!', 'not_so_much' => 'Niet zo veel', - 'would_you_rate_it' => 'Goed om te horen! Zou je het willen beoordelen?', - 'would_you_tell_us_more' => 'Dat is jammer om te horen! Wil je ons meer vertellen?', + 'would_you_rate_it' => 'Goed om te horen! Zou u het willen beoordelen?', + 'would_you_tell_us_more' => 'Dat is jammer om te horen! Wilt u ons meer vertellen?', 'sure_happy_to' => 'Zeker, graag', 'no_not_now' => 'Nee, nu niet', 'add' => 'Toevoegen', @@ -4506,7 +4506,7 @@ Email: :email
    ', 'enable_flexible_search' => 'Flexibel zoeken inschakelen', 'enable_flexible_search_help' => 'Overeenkomen met niet-aangrenzende tekens, dwz. "ct" komt overeen met "kat"', 'vendor_details' => 'Details verkoper', - 'purchase_order_details' => 'Details aankooporder', + 'purchase_order_details' => 'Details inkooporder', 'qr_iban' => 'QR IBAN', 'besr_id' => 'BESR-ID', 'clone_to_purchase_order' => 'Kloon naar PO', @@ -4519,17 +4519,17 @@ Email: :email
    ', 'cancelled_purchase_order' => 'Inkooporder succesvol geannuleerd', 'cancelled_purchase_orders' => 'Inkooporders succesvol geannuleerd', 'please_select_a_vendor' => 'Gelieve een verkoper te selecteren', - 'purchase_order_total' => 'Inkooporder Totaal', + 'purchase_order_total' => 'Totaal inkooporder', 'email_purchase_order' => 'E-mail inkooporder', 'bulk_email_purchase_order' => 'E-mail inkooporder', 'disconnected_email' => 'E-mail is losgekoppeld', 'connect_email' => 'E-mail koppelen', 'disconnect_email' => 'Koppel e-mail los', 'use_web_app_to_connect_microsoft' => 'Gebruik de web-app om verbinding te maken met Microsoft', - 'email_provider' => 'E-mail provider', - 'connect_microsoft' => 'Verbind Microsoft', + 'email_provider' => 'E-mailprovider', + 'connect_microsoft' => 'Verbind met Microsoft', 'disconnect_microsoft' => 'Koppel Microsoft los', - 'connected_microsoft' => 'Microsoft succesvol verbonden', + 'connected_microsoft' => 'Succesvol verbonden met Microsoft', 'disconnected_microsoft' => 'Losgekoppeld van Microsoft', 'microsoft_sign_in' => 'Inloggen met Microsoft', 'microsoft_sign_up' => 'Meld u aan bij Microsoft', @@ -4544,15 +4544,15 @@ Email: :email
    ', 'new_purchase_order' => 'Nieuwe inkooporder', 'edit_purchase_order' => 'Inkooporder bewerken', 'created_purchase_order' => 'Inkooporder succesvol aangemaakt', - 'updated_purchase_order' => 'Aankooporder succesvol geupdate', - 'archived_purchase_order' => 'Aankooporder succesvol gearchiveerd', - 'deleted_purchase_order' => 'Aankooporder succesvol verwijderd', + 'updated_purchase_order' => 'Inkooporder succesvol geupdate', + 'archived_purchase_order' => 'Inkooporder succesvol gearchiveerd', + 'deleted_purchase_order' => 'Inkooporder succesvol verwijderd', 'removed_purchase_order' => 'Bestelling verwijderd', 'restored_purchase_order' => 'Bestelling hersteld', 'search_purchase_order' => 'Zoek verkoop order', 'search_purchase_orders' => 'Zoek verkoop orders', 'login_url' => 'Inlog-URL', - 'enable_applying_payments' => 'Handmatige teveelbetalingen', + 'enable_applying_payments' => 'Handmatige overbetalingen', 'enable_applying_payments_help' => 'Ondersteuning voor het handmatig toevoegen van een te veel betaald bedrag aan een betaling', 'stock_quantity' => 'Voorraad hoeveelheid', 'notification_threshold' => 'Meldingsdrempel', @@ -4597,12 +4597,12 @@ Email: :email
    ', 'total_logged_expenses' => 'Vastgelegde kosten', 'total_pending_expenses' => 'Lopende kosten', 'total_invoiced_expenses' => 'Gefactureerde kosten', - 'total_invoice_paid_expenses' => 'Factuureer gemaakte kosten', + 'total_invoice_paid_expenses' => 'Factureer gemaakte kosten', 'vendor_portal' => 'Leveranciersportaal', 'send_code' => 'Verstuur code', 'save_to_upload_documents' => 'Sla op om documenten te kunnen uploaden', 'expense_tax_rates' => 'Belastingtarief uitgaven', - 'invoice_item_tax_rates' => 'Belastingtarief factuurregel', + 'invoice_item_tax_rates' => 'Belastingtarief factuurregels', 'verified_phone_number' => 'Telefoonnummer is geverifiëerd', 'code_was_sent' => 'Er is een code via SMS verstuurd', 'resend' => 'Verstuur opnieuw', @@ -4617,13 +4617,13 @@ Email: :email
    ', 'bulk_email_purchase_orders' => 'E-mail inkooporders', 'bulk_email_invoices' => 'E-mail facturen', 'bulk_email_quotes' => 'E-mail offertes', - 'bulk_email_credits' => 'E-mail creditzijde', + 'bulk_email_credits' => 'E-mail creditfacturen', 'archive_purchase_order' => 'Archiveer inkooporder', 'restore_purchase_order' => 'Herstel inkooporder', 'delete_purchase_order' => 'Verwijder inkooporder', 'connect' => 'Koppel', 'mark_paid_payment_email' => 'Betaling betaald gemarkeerd e-mail', - 'convert_to_project' => 'Naar project omzetten', + 'convert_to_project' => 'Omzetten naar project', 'client_email' => 'Klant e-mail', 'invoice_task_project' => 'Factuur taak project', 'invoice_task_project_help' => 'Voeg project toe als factuurregel', @@ -4638,35 +4638,35 @@ Email: :email
    ', 'bank_transaction' => 'Transactie', 'bulk_print' => 'Druk PDF af', 'vendor_postal_code' => 'Postcode leverancier', - 'preview_location' => 'Voorbeeld locatie', + 'preview_location' => 'Voorbeeldlocatie', 'bottom' => 'Onderkant', 'side' => 'Kant', 'pdf_preview' => 'PDF-voorbeeld', 'long_press_to_select' => 'Lang indrukken om te selecteren', 'purchase_order_item' => 'Artikel inkooporder', - 'would_you_rate_the_app' => 'Wil je de app beoordelen?', + 'would_you_rate_the_app' => 'Wilt u de app beoordelen?', 'include_deleted' => 'Inclusief verwijderd', 'include_deleted_help' => 'Neem verwijderde records op in rapporten', 'due_on' => 'Verschuldigd op', 'browser_pdf_viewer' => 'Gebruik Browser PDF-viewer', 'browser_pdf_viewer_help' => 'Waarschuwing: voorkomt interactie met de app via de pdf', - 'converted_transactions' => 'Succesvol geconverteerde transacties', + 'converted_transactions' => 'Transacties succesvol geconverteerd', 'default_category' => 'Standaard categorie', 'connect_accounts' => 'Accounts koppelen', 'manage_rules' => 'Regels beheren', 'search_category' => 'Zoek 1 categorie', 'search_categories' => 'Zoek :count Categorieën', 'min_amount' => 'Min. bedrag', - 'max_amount' => 'Maximaal bedrag', + 'max_amount' => 'Maximumbedrag', 'converted_transaction' => 'Transactie succesvol geconverteerd', 'convert_to_payment' => 'Converteren naar betaling', 'deposit' => 'Borg', 'withdrawal' => 'Opname', 'deposits' => 'stortingen', 'withdrawals' => 'Opnames', - 'matched' => 'Op elkaar afgestemd', - 'unmatched' => 'Ongeëvenaard', - 'create_credit' => 'Maak creditnota', + 'matched' => 'Match', + 'unmatched' => 'Geen match', + 'create_credit' => 'Maak creditfactuur', 'transactions' => 'Transacties', 'new_transaction' => 'Nieuwe transactie', 'edit_transaction' => 'Transactie bewerken', @@ -4677,7 +4677,7 @@ Email: :email
    ', 'removed_transaction' => 'Transactie succesvol verwijderd', 'restored_transaction' => 'Transactie succesvol hersteld', 'search_transaction' => 'Zoek transactie', - 'search_transactions' => 'Zoek :count Transacties', + 'search_transactions' => 'Zoek :count transacties', 'deleted_bank_account' => 'Succesvol verwijderde bankrekening', 'removed_bank_account' => 'Bankrekening succesvol verwijderd', 'restored_bank_account' => 'Bankrekening succesvol hersteld', @@ -4685,21 +4685,21 @@ Email: :email
    ', 'search_bank_accounts' => 'Zoek :count bankrekeningen', 'code_was_sent_to' => 'Er is een code verzonden via sms naar :number', 'verify_phone_number_2fa_help' => 'Verifieer uw telefoonnummer voor 2FA-back-up', - 'enable_applying_payments_later' => 'Schakel Betalingen later toepassen in', - 'line_item_tax_rates' => 'Lijn item BTW-Tarief', - 'show_tasks_in_client_portal' => 'Toon Taken in Klantenportaal', + 'enable_applying_payments_later' => 'Schakel het later toepassen van betalingen in', + 'line_item_tax_rates' => 'Belastingtarief factuurregels', + 'show_tasks_in_client_portal' => 'Toon taken in klantenportaal', 'notification_quote_expired_subject' => 'Offerte :invoice is verlopen voor :client', 'notification_quote_expired' => 'De volgende Offerte :invoice voor klant :client en :amount is nu verlopen.', 'auto_sync' => 'Automatisch synchroniseren', 'refresh_accounts' => 'Ververs accounts', 'upgrade_to_connect_bank_account' => 'Upgrade naar Enterprise om uw bankrekening te koppelen', 'click_here_to_connect_bank_account' => 'Klik hier om uw bankrekening te koppelen', - 'include_tax' => 'BTW inclusief', + 'include_tax' => 'Inclusief BTW', 'email_template_change' => 'De hoofdtekst van het e-mailsjabloon kan worden gewijzigd', 'task_update_authorization_error' => 'Onvoldoende machtigingen of taak is mogelijk vergrendeld', 'cash_vs_accrual' => 'Boekhouding op transactiebasis', 'cash_vs_accrual_help' => 'Inschakelen voor rapportage op transactiebasis, uitschakelen voor rapportage op kasbasis.', - 'expense_paid_report' => 'Onkosten rapportage', + 'expense_paid_report' => 'Onkostenrapportage', 'expense_paid_report_help' => 'Schakel in voor het rapporteren van alle onkosten, schakel uit voor het rapporteren van alleen betaalde onkosten', 'online_payment_email_help' => 'Stuur een e-mail wanneer een online betaling is gedaan', 'manual_payment_email_help' => 'Stuur een e-mail bij het handmatig invoeren van een betaling', @@ -4728,8 +4728,8 @@ Email: :email
    ', 'match_all_rules_help' => 'Alle criteria moeten overeenkomen om de regel toe te passen', 'auto_convert_help' => 'Zet gekoppelde transacties automatisch om in onkosten', 'rules' => 'Reglement', - 'transaction_rule' => 'Transactie Regel', - 'transaction_rules' => 'Transactie regels', + 'transaction_rule' => 'Transactieregel', + 'transaction_rules' => 'Transactieregels', 'new_transaction_rule' => 'Nieuwe transactieregel', 'edit_transaction_rule' => 'Transactieregel bewerken', 'created_transaction_rule' => 'Regel gemaakt', @@ -4764,7 +4764,7 @@ Email: :email
    ', 'purchase_order_sent' => 'Inkooporder verzonden', 'purchase_order_viewed' => 'Inkooporder bekeken', 'purchase_order_accepted' => 'Inkooporder geaccepteerd', - 'credit_payment_error' => 'Het kredietbedrag kan niet groter zijn dan het betalingsbedrag', + 'credit_payment_error' => 'Het kredietbedrag mag niet hoger zijn dan de betaling', 'convert_payment_currency_help' => 'Stel een wisselkoers in bij het invoeren van een handmatige betaling', 'convert_expense_currency_help' => 'Stel een wisselkoers in bij het aanmaken van een uitgave', 'matomo_url' => 'Matomo-URL', @@ -4778,18 +4778,18 @@ Email: :email
    ', 'inventory_threshold' => 'Voorraaddrempel', 'emailed_statement' => 'Verklaring in wachtrij geplaatst om te worden verzonden', 'show_email_footer' => 'Toon e-mailvoettekst', - 'invoice_task_hours' => 'Werkuren factureren', + 'invoice_task_hours' => 'Gewerkte uren factureren', 'invoice_task_hours_help' => 'Voeg de uren toe aan de factuurregelitems', - 'auto_bill_standard_invoices' => 'Auto Bill Standaard Facturen', - 'auto_bill_recurring_invoices' => 'Terugkerende facturen automatisch factureren', + 'auto_bill_standard_invoices' => 'Standaardfacturen automatisch incasseren', + 'auto_bill_recurring_invoices' => 'Terugkerende facturen automatisch incasseren', 'email_alignment' => 'E-mailuitlijning', 'pdf_preview_location' => 'Pdf-voorbeeldlocatie', - 'mailgun' => 'Postpistool', + 'mailgun' => 'Mailgun', 'brevo' => 'Brevo', - 'postmark' => 'Poststempel', + 'postmark' => 'Postmark', 'microsoft' => 'Microsoft', 'click_plus_to_create_record' => 'Klik op + om een record te maken', - 'last365_days' => 'Laatste 365 dagen', + 'last365_days' => 'Afgelopen 365 dagen', 'import_design' => 'Ontwerp importeren', 'imported_design' => 'Ontwerp geïmporteerd', 'invalid_design' => 'Het ontwerp is ongeldig, de :value sectie ontbreekt', @@ -4799,7 +4799,7 @@ Email: :email
    ', 'notify_vendor_when_paid_help' => 'Stuur een e-mail naar de leverancier wanneer de onkosten zijn gemarkeerd als betaald', 'update_payment' => 'Betaling bijwerken', 'markup' => 'Opmaak', - 'unlock_pro' => 'Ontgrendel Pro', + 'unlock_pro' => 'Ontgrendel Pro-abbo', 'upgrade_to_paid_plan_to_schedule' => 'Upgrade naar een betaald abonnement om schema\'s te maken', 'next_run' => 'Volgende run', 'all_clients' => 'Alle klanten', @@ -4807,16 +4807,16 @@ Email: :email
    ', 'show_payments_table' => 'Toon betalingstabel', 'only_clients_with_invoices' => 'Alleen klanten met facturen', 'email_statement' => 'E-mail verklaring', - 'once' => 'Eenmaal', + 'once' => 'Eenmalig', 'schedules' => 'Schema\'s', 'new_schedule' => 'Nieuw schema', 'edit_schedule' => 'Schema bewerken', - 'created_schedule' => 'Planning gemaakt', - 'updated_schedule' => 'Planning bijgewerkt', - 'archived_schedule' => 'Planning is gearchiveerd', - 'deleted_schedule' => 'Planning succesvol verwijderd', - 'removed_schedule' => 'Planning is succesvol verwijderd', - 'restored_schedule' => 'Planning is hersteld', + 'created_schedule' => 'Schema gemaakt', + 'updated_schedule' => 'Schema is bijgewerkt', + 'archived_schedule' => 'Schema is gearchiveerd', + 'deleted_schedule' => 'Schema is succesvol verwijderd', + 'removed_schedule' => 'Schema is succesvol verwijderd', + 'restored_schedule' => 'Schema is hersteld', 'search_schedule' => 'Zoek schema', 'search_schedules' => 'Zoek schema\'s', 'update_product' => 'Product bijwerken', @@ -4826,7 +4826,7 @@ Email: :email
    ', 'sent_quote' => 'Verzonden offerte', 'sent_credit' => 'Verzonden tegoed', 'sent_purchase_order' => 'Inkooporder verzonden', - 'image_url' => 'afbeelding URL', + 'image_url' => 'Afbeeldings-URL', 'max_quantity' => 'Maximale hoeveelheid', 'test_url' => 'Test-URL', 'auto_bill_help_off' => 'Optie wordt niet getoond', @@ -4837,10 +4837,10 @@ Email: :email
    ', 'edit_all' => 'Alles bewerken', 'accept_purchase_order_number' => 'Accepteer inkoopordernummer', 'accept_purchase_order_number_help' => 'Stel klanten in staat om een PO-nummer op te geven bij het goedkeuren van een offerte', - 'from_email' => 'Van email', + 'from_email' => 'Van e-mail', 'show_preview' => 'Toon voorbeeld', 'show_paid_stamp' => 'Betaalde zegel tonen', - 'show_shipping_address' => 'Verzendadres weergeven', + 'show_shipping_address' => 'Leveringsadres weergeven', 'no_documents_to_download' => 'Er zijn geen documenten in de geselecteerde records om te downloaden', 'pixels' => 'Pixels', 'logo_size' => 'Logo-formaat', @@ -4864,7 +4864,7 @@ Email: :email
    ', 'no_assigned_tasks' => 'Geen factureerbare taken voor dit project', 'authorization_failure' => 'Onvoldoende machtigingen om deze actie uit te voeren', 'authorization_sms_failure' => 'Verifieer uw account om e-mails te verzenden.', - 'white_label_body' => 'Bedankt voor het aanschaffen van een white label-licentie.

    Uw licentiesleutel is:

    :license_key

    U kunt uw licentie hier beheren: https://invoiceninja.invoicing.co/client/login', + 'white_label_body' => 'Bedankt voor het aanschaffen van een whitelabel-licentie.

    Uw licentiesleutel is:

    :license_key

    U kunt uw licentie hier beheren: https://invoiceninja.invoicing.co/client/login', 'payment_type_Klarna' => 'Klarna', 'payment_type_Interac E Transfer' => 'Interac E-overdracht', 'xinvoice_payable' => 'Te betalen binnen :payeddue vervaldagen netto tot :paydate', @@ -4889,18 +4889,18 @@ Email: :email
    ', 'optional_one_time_products' => 'Optionele eenmalige producten', 'required' => 'Vereist', 'hidden' => 'Verborgen', - 'payment_links' => 'Betalingslinks', - 'payment_link' => 'Betalingslink', + 'payment_links' => 'Betaallinks', + 'payment_link' => 'Betaallink', 'new_payment_link' => 'Nieuwe betaallink', - 'edit_payment_link' => 'Betalingslink bewerken', + 'edit_payment_link' => 'Betaallink bewerken', 'created_payment_link' => 'Betaallink aangemaakt', 'updated_payment_link' => 'Betaallink succesvol geüpdatet', - 'archived_payment_link' => 'Succesvol gearchiveerde betalingslink', - 'deleted_payment_link' => 'Betalingslink succesvol verwijderd', + 'archived_payment_link' => 'Succesvol gearchiveerde betaallink', + 'deleted_payment_link' => 'Betaallink succesvol verwijderd', 'removed_payment_link' => 'Betaallink succesvol verwijderd', 'restored_payment_link' => 'Betaallink succesvol hersteld', - 'search_payment_link' => 'Zoek 1 Betaallink', - 'search_payment_links' => 'Zoek :count Betalingslinks', + 'search_payment_link' => 'Zoek 1 betaallink', + 'search_payment_links' => 'Zoek :count betaallinks', 'increase_prices' => 'Verhoog de prijzen', 'update_prices' => 'Prijzen bijwerken', 'incresed_prices' => 'Met succes in de wachtrij geplaatste prijzen worden verhoogd', @@ -4922,8 +4922,8 @@ Email: :email
    ', 'client_balance_report' => 'Klant saldo rapport', 'client_sales_report' => 'Klant verkoop rapport', 'user_sales_report' => 'Verkooprapport van de gebruiker', - 'aged_receivable_detailed_report' => 'Gedetailleerd rapport ouderdomsvorderingen', - 'aged_receivable_summary_report' => 'Samenvattend rapport ouderdomsvorderingen', + 'aged_receivable_detailed_report' => 'Gedetailleerd rapport verouderde vorderingen', + 'aged_receivable_summary_report' => 'Samenvattend rapport verouderde vorderingen', 'taxable_amount' => 'Belastbaar bedrag', 'tax_summary' => 'Belastingoverzicht', 'oauth_mail' => 'OAuth/Mail', @@ -4936,7 +4936,7 @@ Email: :email
    ', 'seller_subregion' => 'Verkoper Subregio', 'calculate_taxes' => 'Belastingen berekenen', 'calculate_taxes_help' => 'Bereken automatisch belastingen bij het opslaan van facturen', - 'link_expenses' => 'Link kosten', + 'link_expenses' => 'Kosten koppelen', 'converted_client_balance' => 'Geconverteerd klantensaldo', 'converted_payment_balance' => 'Geconverteerd betalingssaldo', 'total_hours' => 'Totaal aantal uren', @@ -4951,13 +4951,13 @@ Email: :email
    ', 'physical_goods' => 'Fysieke goederen', 'digital_products' => 'Digitale producten', 'services' => 'Diensten', - 'shipping' => 'Verzenden', + 'shipping' => 'Verzending', 'tax_exempt' => 'Vrijgesteld van belasting', 'late_fee_added_locked_invoice' => 'Late vergoeding voor factuur :invoice toegevoegd op :date', 'lang_Khmer' => 'Khmer', 'routing_id' => 'Routerings-ID', - 'enable_e_invoice' => 'E-Factuur activeren', - 'e_invoice_type' => 'E-Factuur type', + 'enable_e_invoice' => 'E-factuur activeren', + 'e_invoice_type' => 'E-factuur type', 'reduced_tax' => 'Verlaagde belasting', 'override_tax' => 'Belasting overschrijven', 'zero_rated' => 'Nul nominaal', @@ -4971,9 +4971,9 @@ Email: :email
    ', 'rename' => 'Hernoem', 'renamed_document' => 'Document succesvol hernoemd', 'e_invoice' => 'E-factuur', - 'light_dark_mode' => 'Licht/Donkere modus', + 'light_dark_mode' => 'Lichte-/donkere modus', 'activities' => 'Activiteiten', - 'recent_transactions' => "Hier zijn het bedrijfs meest recente transacties:", + 'recent_transactions' => "Hier zijn de meest recente transacties van uw bedrijf:", 'country_Palestine' => "Palestina", 'country_Taiwan' => 'Taiwan', 'duties' => 'Taken', @@ -4984,7 +4984,7 @@ Email: :email
    ', 'enable_auto_bill' => 'Schakel automatische facturering in', 'email_count_invoices' => 'E-mail :count -facturen', 'invoice_task_item_description' => 'Factuurtaak Itembeschrijving', - 'invoice_task_item_description_help' => 'Voeg de artikelbeschrijving toe aan de factuurregelitems', + 'invoice_task_item_description_help' => 'Voeg de artikelbeschrijving toe aan de factuurregels', 'next_send_time' => 'Volgende verzendtijd', 'uploaded_certificate' => 'Certificaat succesvol geüpload', 'certificate_set' => 'Certificaat ingesteld', @@ -4996,14 +4996,14 @@ Email: :email
    ', 'valid_vat_number' => 'Geldig BTW-nummer', 'react_notification_link' => 'Reageer op meldingslinks', 'react_notification_link_help' => 'E-mails van beheerders bevatten links naar de reactietoepassing', - 'show_task_billable' => 'Toon taak factureerbaar', + 'show_task_billable' => 'Toon factureerbare taken', 'credit_item' => 'Kredietartikel', 'drop_file_here' => 'Zet het bestand hier neer', 'files' => 'Bestanden', 'camera' => 'Camera', 'gallery' => 'Galerij', 'project_location' => 'Project Locatie', - 'add_gateway_help_message' => 'Voeg een betalingsgateway toe (bijv. Stripe, WePay of PayPal) om online betalingen te accepteren', + 'add_gateway_help_message' => 'Voeg een betaalprovider toe (bijv. Stripe, WePay of PayPal) om online betalingen te accepteren', 'lang_Hungarian' => 'Hongaars', 'use_mobile_to_manage_plan' => 'Gebruik de instellingen van uw telefoonabonnement om uw abonnement te beheren', 'item_tax3' => 'Artikelbelasting3', @@ -5029,7 +5029,7 @@ Email: :email
    ', 'county' => 'District', 'tax_details' => 'Belastinggegevens', 'activity_10_online' => ':contact heeft betaling uitgevoerd :payment voor factuur :invoice voor :client', - 'activity_10_manual' => ':user ingevoerde betaling :payment voor factuur :invoice voor :client', + 'activity_10_manual' => ':user heeft betaling :payment ingevoerd voor factuur :invoice voor :client', 'default_payment_type' => 'Standaard betalingstype', 'number_precision' => 'Cijferprecisie', 'number_precision_help' => 'Bepaalt het aantal decimalen dat in de interface wordt ondersteund', @@ -5044,26 +5044,26 @@ Email: :email
    ', 'reverse_tax_info' => 'Houd er rekening mee dat op deze levering een verleggingsregeling van toepassing is', 'currency_nicaraguan_cordoba' => 'Nicaraguaans Córdoba', 'public' => 'Openbaar', - 'private' => 'Privaat', + 'private' => 'Privé', 'image' => 'Afbeelding', - 'other' => 'Ander', + 'other' => 'Overig', 'linked_to' => 'Gekoppeld aan', 'file_saved_in_path' => 'Het bestand is opgeslagen in :path', - 'unlinked_transactions' => 'Succesvol :count transacties ontkoppeld.', + 'unlinked_transactions' => 'Succesvol :count transacties ontkoppeld', 'unlinked_transaction' => 'Transactie ontkoppeld', 'view_dashboard_permission' => 'Geef de gebruiker toegang tot het dashboard, waarbij de beschikbare rechten bepalen welke gegevens zij kunnen zien', 'marked_sent_credits' => 'Succesvol gemarkeerde verzonden credits', - 'show_document_preview' => 'Toon Documentvoorbeeld', + 'show_document_preview' => 'Toon documentvoorbeeld', 'cash_accounting' => 'Kasboekhouding', 'click_or_drop_files_here' => 'Klik hier of sleep bestanden hierheen', - 'set_public' => 'Openbaar instellen', - 'set_private' => 'Privé instellen', + 'set_public' => 'Openbaar', + 'set_private' => 'Privé', 'individual' => 'Individueel', 'business' => 'Bedrijf', 'partnership' => 'Vennootschap', - 'trust' => 'Vertrouwen', + 'trust' => 'Trustfonds', 'charity' => 'Goed doel', - 'government' => 'Regering', + 'government' => 'Overheid', 'in_stock_quantity' => 'Voorraadhoeveelheid', 'vendor_contact' => 'Contactpersoon leverancier', 'expense_status_4' => 'Onbetaald', @@ -5080,16 +5080,16 @@ Email: :email
    ', 'upcoming' => 'Aankomend', 'client_contact' => 'Klantcontact', 'uncategorized' => 'Niet gecategoriseerd', - 'login_notification' => 'Aanmeldingsmelding', + 'login_notification' => 'Inlogmelding', 'login_notification_help' => 'Stuurt een e-mail met de melding dat er een login heeft plaatsgevonden.', 'payment_refund_receipt' => 'Betalingsrestitutieontvangst # :number', 'payment_receipt' => 'Betalingsbewijs # :number', 'load_template_description' => 'De sjabloon wordt toegepast op het volgende:', - 'run_template' => 'Run Template', - 'statement_design' => 'Verklaring ontwerp', + 'run_template' => 'Sjabloon toepassen', + 'statement_design' => 'Ontwerp van samenvatting', 'delivery_note_design' => 'Ontwerp van leveringsbon', 'payment_receipt_design' => 'Ontwerp van betalingsontvangst', - 'payment_refund_design' => 'Betaling Terugbetaling Ontwerp', + 'payment_refund_design' => 'Ontwerp van terugbetaling', 'task_extension_banner' => 'Voeg de Chrome-extensie toe om uw taken te beheren', 'watch_video' => 'Bekijk video', 'view_extension' => 'Bekijk Extensie', @@ -5117,7 +5117,7 @@ Email: :email
    ', 'charges' => 'Kosten', 'email_report' => 'E-mailrapport', 'payment_type_Pay Later' => 'Betaal later', - 'payment_type_credit' => 'Betalingstype Krediet', + 'payment_type_credit' => 'Betalingstype krediet', 'payment_type_debit' => 'Betalingswijze Debet', 'send_emails_to' => 'Stuur e-mails naar', 'primary_contact' => 'Primaire contactpersoon', @@ -5131,26 +5131,26 @@ Email: :email
    ', 'nordigen_handler_error_heading_account_config_invalid' => 'Ontbrekende inloggegevens', 'nordigen_handler_error_contents_account_config_invalid' => 'Ongeldige of ontbrekende inloggegevens voor Gocardless-bankrekeninggegevens. Neem contact op met de ondersteuning voor hulp als dit probleem zich blijft voordoen.', 'nordigen_handler_error_heading_not_available' => 'Niet beschikbaar', - 'nordigen_handler_error_contents_not_available' => 'Functie niet beschikbaar, alleen Enterprise Plan.', + 'nordigen_handler_error_contents_not_available' => 'Functie niet beschikbaar, alleen binnen het Enterprise-abonnement.', 'nordigen_handler_error_heading_institution_invalid' => 'Ongeldige instelling', 'nordigen_handler_error_contents_institution_invalid' => 'Het opgegeven instellings-ID is ongeldig of niet meer geldig.', 'nordigen_handler_error_heading_ref_invalid' => 'Ongeldige referentie', 'nordigen_handler_error_contents_ref_invalid' => 'GoCardless heeft geen geldige referentie opgegeven. Voer de stroom opnieuw uit en neem contact op met de ondersteuning als dit probleem zich blijft voordoen.', 'nordigen_handler_error_heading_not_found' => 'Ongeldige aanvraag', 'nordigen_handler_error_contents_not_found' => 'GoCardless heeft geen geldige referentie opgegeven. Voer de stroom opnieuw uit en neem contact op met de ondersteuning als dit probleem zich blijft voordoen.', - 'nordigen_handler_error_heading_requisition_invalid_status' => 'Niet klaar', - 'nordigen_handler_error_contents_requisition_invalid_status' => 'Je hebt deze site te vroeg gebeld. Voltooi de autorisatie en vernieuw deze pagina. Neem contact op met de ondersteuning voor hulp als dit probleem zich blijft voordoen.', + 'nordigen_handler_error_heading_requisition_invalid_status' => 'Niet gereed', + 'nordigen_handler_error_contents_requisition_invalid_status' => 'U hebt deze pagina te vroeg bereikt. Voltooi de autorisatie en vernieuw deze pagina. Neem contact op met de klantenservice voor hulp als dit probleem zich blijft voordoen.', 'nordigen_handler_error_heading_requisition_no_accounts' => 'Geen accounts geselecteerd', 'nordigen_handler_error_contents_requisition_no_accounts' => 'De service heeft geen geldige accounts geretourneerd. Overweeg om de stroom opnieuw te starten.', 'nordigen_handler_restart' => 'Start de stroom opnieuw.', 'nordigen_handler_return' => 'Terug naar applicatie.', 'lang_Lao' => 'Laos', 'currency_lao_kip' => 'Laotiaanse kip', - 'yodlee_regions' => 'Regio's: VS, VK, Australië en India', - 'nordigen_regions' => 'Regio's: Europa en VK', + 'yodlee_regions' => 'Regio\'s: VS, VK, Australië en India', + 'nordigen_regions' => 'Regio\'s: Europa en VK', 'select_provider' => 'Selecteer Aanbieder', 'nordigen_requisition_subject' => 'Aanvraag is verlopen. Authenticeer opnieuw.', - 'nordigen_requisition_body' => 'De toegang tot bankrekeningfeeds is verlopen zoals vastgelegd in de Eindgebruikersovereenkomst.

    Meld u aan bij Invoice Ninja en authenticeer opnieuw bij uw banken om transacties te blijven ontvangen.', + 'nordigen_requisition_body' => 'De toegang tot bankrekeningkoppelingen is verlopen zoals vastgelegd in de gebruikersovereenkomst.

    Meld u aan bij Invoice Ninja en log opnieuw in bij uw banken om transacties te blijven ontvangen.', 'participant' => 'Deelnemer', 'participant_name' => 'Naam deelnemer', 'client_unsubscribed' => 'Klant heeft zich afgemeld voor e-mails.', @@ -5169,7 +5169,7 @@ Email: :email
    ', 'my_bank' => 'Mijn bank', 'pay_later' => 'Betaal later', 'local_domain' => 'Lokaal domein', - 'verify_peer' => 'Verifieer peer', + 'verify_peer' => 'Verifieer versleutelde verbinding', 'nordigen_help' => 'Let op: voor het koppelen van een account is een GoCardless/Nordigen API-sleutel vereist', 'ar_detailed' => 'Debiteuren gedetailleerd', 'ar_summary' => 'Overzicht debiteuren', @@ -5182,7 +5182,7 @@ Email: :email
    ', 'step_dependency_order_fail' => 'Component ":step" is afhankelijk van ":dependency". De volgorde van de component(en) is correct.', 'step_authentication_fail' => 'U moet ten minste één van de authenticatiemethoden opnemen.', 'auth.login' => 'Log in', - 'auth.login-or-register' => 'Log in of Registreer', + 'auth.login-or-register' => 'Log in of registreer', 'auth.register' => 'Register', 'cart' => 'Winkelwagen', 'methods' => 'Methoden', @@ -5190,16 +5190,16 @@ Email: :email
    ', 'add_step' => 'Stap toevoegen', 'steps' => 'Stappen', 'steps_order_help' => 'De volgorde van de stappen is belangrijk. De eerste stap mag niet afhankelijk zijn van een andere stap. De tweede stap moet afhankelijk zijn van de eerste stap, enzovoort.', - 'other_steps' => 'Andere stappen', + 'other_steps' => 'Overige stappen', 'use_available_payments' => 'Gebruik beschikbare betalingen', 'test_email_sent' => 'E-mail succesvol verzonden', - 'gateway_type' => 'Gatewaytype', + 'gateway_type' => 'Type betaalprovider', 'save_template_body' => 'Wilt u deze importtoewijzing opslaan als sjabloon voor toekomstig gebruik?', 'save_as_template' => 'Sjabloontoewijzing opslaan', 'checkout_only_for_existing_customers' => 'Afrekenen is alleen mogelijk voor bestaande klanten. Log in met een bestaand account om af te rekenen.', 'checkout_only_for_new_customers' => 'Afrekenen is alleen mogelijk voor nieuwe klanten. Registreer een nieuw account om af te rekenen.', - 'auto_bill_standard_invoices_help' => 'Standaardfacturen automatisch factureren op de vervaldatum', - 'auto_bill_on_help' => 'Automatische factuur op verzenddatum OF vervaldatum (terugkerende facturen)', + 'auto_bill_standard_invoices_help' => 'Standaardfacturen automatisch innen op de vervaldatum', + 'auto_bill_on_help' => 'Automatische betaling op verzenddatum OF vervaldatum (terugkerende facturen)', 'use_available_credits_help' => 'Pas eventuele creditsaldi toe op betalingen voordat u een betaalmethode in rekening brengt', 'use_unapplied_payments' => 'Gebruik niet-verwerkte betalingen', 'use_unapplied_payments_help' => 'Pas eventuele betalingssaldi toe voordat u een betaalmethode in rekening brengt', @@ -5213,11 +5213,11 @@ Email: :email
    ', 'purchase_order_items' => 'Inkooporderartikelen', 'csv_rows_length' => 'Er zijn geen gegevens gevonden in dit CSV-bestand', 'accept_payments_online' => 'Accepteer betalingen online', - 'all_payment_gateways' => 'Bekijk alle betalingsgateways', + 'all_payment_gateways' => 'Bekijk alle betaalproviders', 'product_cost' => 'Productkosten', 'duration_words' => 'Duur in woorden', 'upcoming_recurring_invoices' => 'Aankomende terugkerende facturen', - 'shipping_country_id' => 'Verzendland', + 'shipping_country_id' => 'Land leveringsadres', 'show_table_footer' => 'Tabelvoettekst weergeven', 'show_table_footer_help' => 'Geeft de totalen weer in de voettekst van de tabel', 'total_invoices' => 'Totaal facturen', @@ -5226,81 +5226,90 @@ Email: :email
    ', 'valid_credentials' => 'De legitimatiegegevens zijn geldig', 'e_quote' => 'E-offerte', 'e_credit' => 'E-krediet', - 'e_purchase_order' => 'E-aankooporder', + 'e_purchase_order' => 'E-inkooporder', 'e_quote_type' => 'Type e-offerte', 'unlock_unlimited_clients' => 'Upgrade om een onbeperkt aantal klanten te ontgrendelen!', - 'download_e_purchase_order' => 'E-aankooporder downloaden', + 'download_e_purchase_order' => 'E-inkooporder downloaden', 'flutter_web_warning' => 'Voor de beste prestaties raden we u aan de nieuwe web-app of de desktop-app te gebruiken', - 'rappen_rounding' => 'Rappenafronding', + 'rappen_rounding' => 'Afronden op 5 cent', 'rappen_rounding_help' => 'Rond het bedrag af op 5 cent', 'assign_group' => 'Groep toewijzen', - 'paypal_advanced_cards' => 'Advanced Card Payments', - 'local_domain_help' => 'EHLO domain (optional)', - 'port_help' => 'ie. 25,587,465', - 'host_help' => 'ie. smtp.gmail.com', - 'always_show_required_fields' => 'Allows show required fields form', - 'always_show_required_fields_help' => 'Displays the required fields form always at checkout', - 'advanced_cards' => 'Advanced Cards', - 'activity_140' => 'Statement sent to :client', - 'invoice_net_amount' => 'Invoice Net Amount', - 'round_to_minutes' => 'Round To Minutes', - '1_second' => '1 Second', - '1_minute' => '1 Minute', - '5_minutes' => '5 Minutes', - '15_minutes' => '15 Minutes', - '30_minutes' => '30 Minutes', - '1_hour' => '1 Hour', - '1_day' => '1 Day', - 'round_tasks' => 'Task Rounding Direction', - 'round_tasks_help' => 'Round task times up or down.', - 'direction' => 'Direction', - 'round_up' => 'Round Up', - 'round_down' => 'Round Down', - 'task_round_to_nearest' => 'Round To Nearest', - 'task_round_to_nearest_help' => 'The interval to round the task to.', - 'bulk_updated' => 'Successfully updated data', - 'bulk_update' => 'Bulk Update', - 'calculate' => 'Calculate', - 'sum' => 'Sum', - 'money' => 'Money', - 'web_app' => 'Web App', - 'desktop_app' => 'Desktop App', - 'disconnected' => 'Disconnected', - 'reconnect' => 'Reconnect', - 'e_invoice_settings' => 'E-Invoice Settings', - 'btcpay_refund_subject' => 'Refund of your invoice via BTCPay', - 'btcpay_refund_body' => 'A refund intended for you has been issued. To claim it via BTCPay, please click on this link:', - 'currency_mauritanian_ouguiya' => 'Mauritanian Ouguiya', - 'currency_bhutan_ngultrum' => 'Bhutan Ngultrum', - 'end_of_month' => 'End Of Month', - 'merge_e_invoice_to_pdf' => 'Merge E-Invoice and PDF', - 'task_assigned_subject' => 'New task assignment [Task :task] [ :date ]', - 'task_assigned_body' => 'You have been assigned task :task

    Description: :description

    Client: :client', - 'activity_141' => 'User :user entered note: :notes', - 'quote_reminder_subject' => 'Reminder: Quote :quote from :company', - 'quote_reminder_message' => 'Reminder for quote :number for :amount', - 'quote_reminder1' => 'First Quote Reminder', - 'before_valid_until_date' => 'Before the valid until date', - 'after_valid_until_date' => 'After the valid until date', - 'after_quote_date' => 'After the quote date', - 'remind_quote' => 'Remind Quote', - 'end_of_month' => 'End Of Month', - 'tax_currency_mismatch' => 'Tax currency is different from invoice currency', - 'edocument_import_already_exists' => 'The invoice has already been imported on :date', - 'before_valid_until' => 'Before the valid until', - 'after_valid_until' => 'After the valid until', - 'task_assigned_notification' => 'Task Assigned Notification', - 'task_assigned_notification_help' => 'Send an email when a task is assigned', - 'invoices_locked_end_of_month' => 'Invoices are locked at the end of the month', - 'referral_url' => 'Referral URL', - 'add_comment' => 'Add Comment', - 'added_comment' => 'Successfully saved comment', + 'paypal_advanced_cards' => 'Uitgebreide kaartbetalingen', + 'local_domain_help' => 'EHLO-domein (optioneel)', + 'port_help' => 'bijv. 25,587,465', + 'host_help' => 'bijv. smtp.gmail.com', + 'always_show_required_fields' => 'Altijd het verplichte velden formulier tonen', + 'always_show_required_fields_help' => 'Toon het verplichte velden formulier altijd bij het afrekenen', + 'advanced_cards' => 'Uitgebreide kaarten', + 'activity_140' => 'Overzicht verzonden naar :client', + 'invoice_net_amount' => 'Nettobedrag', + 'round_to_minutes' => 'Afronden op minuten', + '1_second' => '1 seconde', + '1_minute' => '1 minuut', + '5_minutes' => '5 minuten', + '15_minutes' => '15 minuten', + '30_minutes' => '30 minuten', + '1_hour' => '1 uur', + '1_day' => '1 dag', + 'round_tasks' => 'Afrondrichting voor taken', + 'round_tasks_help' => 'Rond tijden naar boven of beneden af', + 'direction' => 'Richting', + 'round_up' => 'Afronden naar boven', + 'round_down' => 'Afronden naar beneden', + 'task_round_to_nearest' => 'Afronden naar dichtstbijzijnde', + 'task_round_to_nearest_help' => 'Afrondinterval voor de taak', + 'bulk_updated' => 'Gegevens succesvol bijgewerkt', + 'bulk_update' => 'In bulk bewerken', + 'calculate' => 'Berekenen', + 'sum' => 'Som', + 'money' => 'Geld', + 'web_app' => 'Web-app', + 'desktop_app' => 'Desktopapplicatie', + 'disconnected' => 'Verbinding verbroken', + 'reconnect' => 'Verbind opnieuw', + 'e_invoice_settings' => 'E-factuurinstellingen', + 'btcpay_refund_subject' => 'Terugbetaling van uw factuur via BTCPay', + 'btcpay_refund_body' => 'Er is een terugbetaling uitgevoerd die voor u is bestemd. Om deze te claimen via BTCPay, kunt u de volgende link gebruiken:', + 'currency_mauritanian_ouguiya' => 'Mauritaanse Ouguiya', + 'currency_bhutan_ngultrum' => 'Bhutaanse Ngultrum', + 'end_of_month' => 'Einde van de maand', + 'merge_e_invoice_to_pdf' => 'E-factuur en PDF samenvoegen', + 'task_assigned_subject' => 'Nieuwe taak toegewezen [Task :task] [ :date ]', + 'task_assigned_body' => 'Taak :task is aan u toegewezen.

    Beschrijving: :description

    Klant: :client', + 'activity_141' => 'Gebruiker :user heeft een notitie toegevoegd: :notes', + 'quote_reminder_subject' => 'Herinnering: offerte :quote van :company', + 'quote_reminder_message' => 'Herinnering voor offerte :number voor een bedrag van :amount', + 'quote_reminder1' => 'Eerste herinnering voor offerte', + 'before_valid_until_date' => 'Voor de geldigheidsdatum', + 'after_valid_until_date' => 'Na de geldigheidsdatum', + 'after_quote_date' => 'Na de vervaldatum', + 'remind_quote' => 'Herinneringen offerte', + 'end_of_month' => 'Einde van de maand', + 'tax_currency_mismatch' => 'De belastingvaluta verschilt van de factuurvaluta', + 'edocument_import_already_exists' => 'De factuur is al geïmporteerd op :date', + 'before_valid_until' => 'Voor de geldigheidsdatum', + 'after_valid_until' => 'Na de geldigheidsdatum', + 'task_assigned_notification' => 'Notificatie voor toegewezen taak', + 'task_assigned_notification_help' => 'Verstuur een e-mail zodra een taak is toegewezen', + 'invoices_locked_end_of_month' => 'Facturen worden vastgezet aan het einde van de maand', + 'referral_url' => 'Referral-URL', + 'add_comment' => 'Commentaar toevoegen', + 'added_comment' => 'Commentaar succesvol opgeslagen', 'tickets' => 'Tickets', - 'assigned_group' => 'Successfully assigned group', - 'merge_to_pdf' => 'Merge to PDF', - 'latest_requires_php_version' => 'Note: the latest version requires PHP :version', - 'auto_expand_product_table_notes' => 'Automatically expand products table notes', - 'auto_expand_product_table_notes_help' => 'Automatically expands the notes section within the products table to display more lines.', + 'assigned_group' => 'Groep succesvol toegewezen', + 'merge_to_pdf' => 'Samenvoegen in PDF', + 'latest_requires_php_version' => 'Let op: voor de nieuwste versie is PHP :version vereist', + 'auto_expand_product_table_notes' => 'Automatisch de notities in de producttabel uitklappen', + 'auto_expand_product_table_notes_help' => 'Hiermee worden notities in de producttabel automatisch uitgeklapt om meer regels te kunnen tonen.', + 'institution_number' => 'Banknummer (institution number)', + 'transit_number' => 'Transitnummer', + 'personal' => 'Persoonlijke gegevens', + 'address_information' => 'Adresinformatie', + 'enter_the_information_for_the_bank_account' => 'Voer de rekeninggegevens in', + 'account_holder_information' => 'Rekeninghouderinformatie', + 'enter_information_for_the_account_holder' => 'Voer de gegevens in van de rekeninghouder', + 'customer_type' => 'Klanttype', + 'process_date' => 'Verwerkingsdatum' ); return $lang; diff --git a/resources/views/billing-portal/v3/authentication/register-form.blade.php b/resources/views/billing-portal/v3/authentication/register-form.blade.php index 83230c043b..fcead1bf59 100644 --- a/resources/views/billing-portal/v3/authentication/register-form.blade.php +++ b/resources/views/billing-portal/v3/authentication/register-form.blade.php @@ -47,7 +47,7 @@ @foreach(App\Utils\TranslationHelper::getCurrencies() as $currency) @endforeach diff --git a/resources/views/portal/ninja2020/auth/register.blade.php b/resources/views/portal/ninja2020/auth/register.blade.php index d0f9d4093b..7418b1f0b0 100644 --- a/resources/views/portal/ninja2020/auth/register.blade.php +++ b/resources/views/portal/ninja2020/auth/register.blade.php @@ -70,7 +70,7 @@ @foreach(App\Utils\TranslationHelper::getCurrencies() as $currency) @endforeach diff --git a/resources/views/portal/ninja2020/gateways/paypal/ppcp/card.blade.php b/resources/views/portal/ninja2020/gateways/paypal/ppcp/card.blade.php index 0171c295ba..2ba326b2dc 100644 --- a/resources/views/portal/ninja2020/gateways/paypal/ppcp/card.blade.php +++ b/resources/views/portal/ninja2020/gateways/paypal/ppcp/card.blade.php @@ -15,8 +15,8 @@ @endphp @section('gateway_head') @@ -171,8 +171,18 @@ document.getElementById('errors').textContent = `Sorry, your transaction could not be processed...\n\n${error.message}`; document.getElementById('errors').hidden = false; + + document.getElementById('pay-now').disabled = false; + document.querySelector('#pay-now > svg').classList.add('hidden'); + document.querySelector('#pay-now > span').classList.remove('hidden'); + }); + }, + onError: function(error) { + + throw new Error(error); + }, onCancel: function() { @@ -231,14 +241,12 @@ cardField.submit().then(() => { }).catch((error) => { - - console.log(error); let msg; if(!['INVALID_NUMBER','INVALID_CVV','INVALID_EXPIRY'].includes(error.message)) { - const errorM = parseError(error.message); + const errorM = parseError(error); msg = handle422Error(errorM); } @@ -255,7 +263,7 @@ else if(error.message == 'INVALID_EXPIRY') { document.getElementById('errors').textContent = "{{ ctrans('texts.invalid_cvv') }}"; } - else if(msg.description){ + else if(msg?.description){ document.getElementById('errors').textContent = msg?.description; } document.getElementById('errors').hidden = false; @@ -270,7 +278,7 @@ } function handle422Error(errorData) { - const errorDetails = errorData.details || []; + const errorDetails = errorData?.details || []; const detail = errorDetails[0]; return detail; } diff --git a/resources/views/portal/ninja2020/gateways/rotessa/bank_transfer/pay.blade.php b/resources/views/portal/ninja2020/gateways/rotessa/bank_transfer/pay.blade.php index af0158e071..f614ca0e30 100644 --- a/resources/views/portal/ninja2020/gateways/rotessa/bank_transfer/pay.blade.php +++ b/resources/views/portal/ninja2020/gateways/rotessa/bank_transfer/pay.blade.php @@ -24,8 +24,8 @@ - {{ App\Models\GatewayType::getAlias($token->gateway_type_id) }} ({{ $token->meta->brand }}) -   {{ ctrans('texts.account_number') }}#: {{ $token->meta->account_number }} + {{ App\Models\GatewayType::getAlias($token->gateway_type_id) }} ({{ $token->meta->brand ?? 'Bank Transfer' }}) +   {{ ctrans('texts.account_number') }}#: {{ $token->meta?->last4 ?? '' }}
    @endforeach diff --git a/resources/views/portal/ninja2020/gateways/rotessa/components/account.blade.php b/resources/views/portal/ninja2020/gateways/rotessa/components/account.blade.php index e994cc64fc..6f6fa93e97 100644 --- a/resources/views/portal/ninja2020/gateways/rotessa/components/account.blade.php +++ b/resources/views/portal/ninja2020/gateways/rotessa/components/account.blade.php @@ -13,6 +13,10 @@
    + + @error('bank_name') +

    {{ $message }}

    + @enderror
    @@ -22,6 +26,9 @@
    + @error('account_number') +

    {{ $message }}

    + @enderror
    diff --git a/resources/views/portal/ninja2020/gateways/rotessa/components/address.blade.php b/resources/views/portal/ninja2020/gateways/rotessa/components/address.blade.php index ef19c8f8b7..7f95a7455a 100644 --- a/resources/views/portal/ninja2020/gateways/rotessa/components/address.blade.php +++ b/resources/views/portal/ninja2020/gateways/rotessa/components/address.blade.php @@ -14,6 +14,9 @@
    + @error('address_1') +

    {{ $message }}

    + @enderror
    @@ -23,6 +26,9 @@
    + @error('address_2') +

    {{ $message }}

    + @enderror
    @@ -32,6 +38,9 @@
    + @error('city') +

    {{ $message }}

    + @enderror
    @@ -41,6 +50,9 @@
    + @error('postal_code') +

    {{ $message }}

    + @enderror
    @@ -56,6 +68,10 @@
    @endif + + @error('country') +

    {{ $message }}

    + @enderror diff --git a/resources/views/portal/ninja2020/gateways/rotessa/components/banks/CA/bank.blade.php b/resources/views/portal/ninja2020/gateways/rotessa/components/banks/CA/bank.blade.php index 6ad256c3e6..3ea417b467 100644 --- a/resources/views/portal/ninja2020/gateways/rotessa/components/banks/CA/bank.blade.php +++ b/resources/views/portal/ninja2020/gateways/rotessa/components/banks/CA/bank.blade.php @@ -4,6 +4,9 @@
    + @error('transit_number') +

    {{ $message }}

    + @enderror
    @@ -13,5 +16,8 @@
    + @error('institution_number') +

    {{ $message }}

    + @enderror
    diff --git a/resources/views/portal/ninja2020/gateways/rotessa/components/banks/US/bank.blade.php b/resources/views/portal/ninja2020/gateways/rotessa/components/banks/US/bank.blade.php index da8b7f45e6..7bdd6f7e7a 100644 --- a/resources/views/portal/ninja2020/gateways/rotessa/components/banks/US/bank.blade.php +++ b/resources/views/portal/ninja2020/gateways/rotessa/components/banks/US/bank.blade.php @@ -4,6 +4,9 @@
    + @error('routing_number') +

    {{ $message }}

    + @enderror
    @@ -16,10 +19,16 @@
    + @error('bank_account_type') +

    {{ $message }}

    + @enderror
    + @error('bank_account_type') + ed-500 text-sm mt-1">{{ $message }}

    + @enderror
    diff --git a/resources/views/portal/ninja2020/gateways/rotessa/components/contact.blade.php b/resources/views/portal/ninja2020/gateways/rotessa/components/contact.blade.php index ce0655938b..b50c00e113 100644 --- a/resources/views/portal/ninja2020/gateways/rotessa/components/contact.blade.php +++ b/resources/views/portal/ninja2020/gateways/rotessa/components/contact.blade.php @@ -14,6 +14,9 @@
    + @error('name') +

    {{ $message }}

    + @enderror
    @@ -23,6 +26,9 @@
    + @error('email') +

    {{ $message }}

    + @enderror
    @@ -32,6 +38,9 @@
    + @error('home_phone') +

    {{ $message }}

    + @enderror
    @@ -41,6 +50,9 @@
    + @error('phone') +

    {{ $message }}

    + @enderror
    @@ -59,6 +71,9 @@ + @error('customer_type') +

    {{ $message }}

    + @enderror diff --git a/resources/views/portal/ninja2020/gateways/rotessa/components/dropdowns/country/CA.blade.php b/resources/views/portal/ninja2020/gateways/rotessa/components/dropdowns/country/CA.blade.php index 248ce5b5c3..070931b3ee 100644 --- a/resources/views/portal/ninja2020/gateways/rotessa/components/dropdowns/country/CA.blade.php +++ b/resources/views/portal/ninja2020/gateways/rotessa/components/dropdowns/country/CA.blade.php @@ -8,5 +8,9 @@ @endforeach + + @error('province_code') +

    {{ $message }}

    + @enderror diff --git a/resources/views/portal/ninja2020/gateways/rotessa/components/dropdowns/country/US.blade.php b/resources/views/portal/ninja2020/gateways/rotessa/components/dropdowns/country/US.blade.php index b47e8694d3..f2f4f86e09 100644 --- a/resources/views/portal/ninja2020/gateways/rotessa/components/dropdowns/country/US.blade.php +++ b/resources/views/portal/ninja2020/gateways/rotessa/components/dropdowns/country/US.blade.php @@ -8,5 +8,8 @@ @endforeach + @error('province_code') +

    {{ $message }}

    + @enderror diff --git a/resources/views/portal/ninja2020/plan/trial.blade.php b/resources/views/portal/ninja2020/plan/trial.blade.php index 4be765d1bc..f905d182ab 100644 --- a/resources/views/portal/ninja2020/plan/trial.blade.php +++ b/resources/views/portal/ninja2020/plan/trial.blade.php @@ -1451,16 +1451,31 @@ Ensure the default browser behavior of the `hidden` attribute. @csrf -
    +
    + +
    +
    +
    + +
    +
    present()->email() }}', address: { line1: document.querySelector('input[name=address1]').content, diff --git a/resources/views/portal/ninja2020/plan/trial_confirmed.blade.php b/resources/views/portal/ninja2020/plan/trial_confirmed.blade.php index 338db31d48..b8519f3df7 100644 --- a/resources/views/portal/ninja2020/plan/trial_confirmed.blade.php +++ b/resources/views/portal/ninja2020/plan/trial_confirmed.blade.php @@ -1450,7 +1450,7 @@ Ensure the default browser behavior of the `hidden` attribute. type="button" class="mx-[auto] max-w-[212px] bg-primary-blue hover:opacity-80 button button-primary bg-primary rounded-sm text-sm transition duration-300 ease-in md:mx-[0]" > - Account Login + {{ ctrans('texts.return_to_app') }}