mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Merge pull request #8730 from turbo124/v5-develop
Fixes for report previews
This commit is contained in:
commit
790f5545b8
@ -131,7 +131,11 @@ class CreditExport extends BaseExport
|
||||
$t->replace(Ninja::transformTranslations($this->company->settings));
|
||||
|
||||
if (count($this->input['report_keys']) == 0) {
|
||||
$this->input['report_keys'] = array_values($this->entity_keys);
|
||||
|
||||
$this->input['report_keys'] = collect(array_values($this->entity_keys))->map(function ($value){
|
||||
return 'credit.'.$value;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
$query = Credit::query()
|
||||
|
@ -228,7 +228,7 @@ class ClientController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $client);
|
||||
$this->saveDocuments($request->file('documents'), $client, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($client->fresh());
|
||||
|
@ -34,7 +34,7 @@ class UploadController extends Controller
|
||||
/** @var \App\Models\ClientContact $client_contact **/
|
||||
$client_contact = auth()->user();
|
||||
|
||||
$this->saveDocuments($request->getFile(), $client_contact->client, true);
|
||||
$this->saveDocuments($request->getFile(), $client_contact->client, $request->input('is_public', true));
|
||||
|
||||
return response([], 200);
|
||||
}
|
||||
|
@ -424,7 +424,7 @@ class CompanyController extends BaseController
|
||||
$company = $this->company_repo->save($request->all(), $company);
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->input('documents'), $company, false);
|
||||
$this->saveDocuments($request->input('documents'), $company, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
if($request->has('e_invoice_certificate') && !is_null($request->file("e_invoice_certificate"))){
|
||||
@ -616,7 +616,7 @@ class CompanyController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $company);
|
||||
$this->saveDocuments($request->file('documents'), $company, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($company->fresh());
|
||||
|
@ -776,7 +776,7 @@ class CreditController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $credit);
|
||||
$this->saveDocuments($request->file('documents'), $credit, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($credit->fresh());
|
||||
|
@ -564,7 +564,7 @@ class ExpenseController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $expense);
|
||||
$this->saveDocuments($request->file('documents'), $expense, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($expense->fresh());
|
||||
|
@ -144,7 +144,7 @@ class GroupSettingController extends BaseController
|
||||
$this->uploadLogo($request->file('company_logo'), $group_setting->company, $group_setting);
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->input('documents'), $group_setting, false);
|
||||
$this->saveDocuments($request->input('documents'), $group_setting, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($group_setting);
|
||||
@ -217,7 +217,7 @@ class GroupSettingController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $group_setting);
|
||||
$this->saveDocuments($request->file('documents'), $group_setting, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($group_setting->fresh());
|
||||
|
@ -977,7 +977,7 @@ class InvoiceController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('file')) {
|
||||
$this->saveDocuments($request->file('documents'), $invoice, $request->input('is_public', true));
|
||||
$this->saveDocuments($request->file('file'), $invoice, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($invoice->fresh());
|
||||
|
@ -749,7 +749,7 @@ class PaymentController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $payment);
|
||||
$this->saveDocuments($request->file('documents'), $payment, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($payment->fresh());
|
||||
|
@ -541,7 +541,7 @@ class ProductController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $product);
|
||||
$this->saveDocuments($request->file('documents'), $product, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($product->fresh());
|
||||
|
@ -264,7 +264,7 @@ class ProjectController extends BaseController
|
||||
$project->saveQuietly();
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->input('documents'), $project);
|
||||
$this->saveDocuments($request->input('documents'), $project, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
event('eloquent.updated: App\Models\Project', $project);
|
||||
@ -373,7 +373,7 @@ class ProjectController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->input('documents'), $project);
|
||||
$this->saveDocuments($request->input('documents'), $project, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
event('eloquent.created: App\Models\Project', $project);
|
||||
@ -565,7 +565,7 @@ class ProjectController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $project);
|
||||
$this->saveDocuments($request->file('documents'), $project, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($project->fresh());
|
||||
|
@ -751,7 +751,7 @@ class PurchaseOrderController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $purchase_order);
|
||||
$this->saveDocuments($request->file('documents'), $purchase_order, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($purchase_order->fresh());
|
||||
|
@ -905,7 +905,7 @@ class QuoteController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $quote);
|
||||
$this->saveDocuments($request->file('documents'), $quote, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($quote->fresh());
|
||||
|
@ -609,7 +609,7 @@ class RecurringExpenseController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $recurring_expense);
|
||||
$this->saveDocuments($request->file('documents'), $recurring_expense, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($recurring_expense->fresh());
|
||||
|
@ -550,7 +550,7 @@ class RecurringInvoiceController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $recurring_invoice);
|
||||
$this->saveDocuments($request->file('documents'), $recurring_invoice, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($recurring_invoice->fresh());
|
||||
|
@ -582,7 +582,7 @@ class TaskController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $task);
|
||||
$this->saveDocuments($request->file('documents'), $task, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($task->fresh());
|
||||
|
@ -568,7 +568,7 @@ class VendorController extends BaseController
|
||||
}
|
||||
|
||||
if ($request->has('documents')) {
|
||||
$this->saveDocuments($request->file('documents'), $vendor);
|
||||
$this->saveDocuments($request->file('documents'), $vendor, $request->input('is_public', true));
|
||||
}
|
||||
|
||||
return $this->itemResponse($vendor->fresh());
|
||||
|
@ -33,7 +33,7 @@ class UploadController extends Controller
|
||||
*/
|
||||
public function upload(StoreUploadRequest $request, PurchaseOrder $purchase_order)
|
||||
{
|
||||
$this->saveDocuments($request->getFile(), $purchase_order, true);
|
||||
$this->saveDocuments($request->getFile(), $purchase_order, $request->input('is_public', true));
|
||||
|
||||
return response([], 200);
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ class DocumentsTable extends Component
|
||||
{
|
||||
MultiDB::setDb($this->db);
|
||||
|
||||
$this->client = Client::withTrashed()->with('company')->find($this->client_id);
|
||||
$this->client = Client::query()->withTrashed()->with('company')->find($this->client_id);
|
||||
|
||||
$this->company = $this->client->company;
|
||||
|
||||
@ -118,12 +118,17 @@ class DocumentsTable extends Component
|
||||
|
||||
protected function documents()
|
||||
{
|
||||
return $this->client->documents();
|
||||
return Document::query()
|
||||
->where('is_public', true)
|
||||
->whereHasMorph('documentable', [Client::class], function ($query) {
|
||||
$query->where('client_id', $this->client->id);
|
||||
});
|
||||
}
|
||||
|
||||
protected function credits()
|
||||
{
|
||||
return Document::query()
|
||||
->where('is_public', true)
|
||||
->whereHasMorph('documentable', [Credit::class], function ($query) {
|
||||
$query->where('client_id', $this->client->id);
|
||||
});
|
||||
@ -132,6 +137,7 @@ class DocumentsTable extends Component
|
||||
protected function expenses()
|
||||
{
|
||||
return Document::query()
|
||||
->where('is_public', true)
|
||||
->whereHasMorph('documentable', [Expense::class], function ($query) {
|
||||
$query->where('client_id', $this->client->id);
|
||||
});
|
||||
@ -140,6 +146,7 @@ class DocumentsTable extends Component
|
||||
protected function invoices()
|
||||
{
|
||||
return Document::query()
|
||||
->where('is_public', true)
|
||||
->whereHasMorph('documentable', [Invoice::class], function ($query) {
|
||||
$query->where('client_id', $this->client->id);
|
||||
});
|
||||
@ -148,6 +155,7 @@ class DocumentsTable extends Component
|
||||
protected function payments()
|
||||
{
|
||||
return Document::query()
|
||||
->where('is_public', true)
|
||||
->whereHasMorph('documentable', [Payment::class], function ($query) {
|
||||
$query->where('client_id', $this->client->id);
|
||||
});
|
||||
@ -156,6 +164,7 @@ class DocumentsTable extends Component
|
||||
protected function projects()
|
||||
{
|
||||
return Document::query()
|
||||
->where('is_public', true)
|
||||
->whereHasMorph('documentable', [Project::class], function ($query) {
|
||||
$query->where('client_id', $this->client->id);
|
||||
});
|
||||
@ -164,6 +173,7 @@ class DocumentsTable extends Component
|
||||
protected function quotes()
|
||||
{
|
||||
return Document::query()
|
||||
->where('is_public', true)
|
||||
->whereHasMorph('documentable', [Quote::class], function ($query) {
|
||||
$query->where('client_id', $this->client->id);
|
||||
});
|
||||
@ -172,6 +182,7 @@ class DocumentsTable extends Component
|
||||
protected function recurringInvoices()
|
||||
{
|
||||
return Document::query()
|
||||
->where('is_public', true)
|
||||
->whereHasMorph('documentable', [RecurringInvoice::class], function ($query) {
|
||||
$query->where('client_id', $this->client->id);
|
||||
});
|
||||
@ -180,6 +191,7 @@ class DocumentsTable extends Component
|
||||
protected function tasks()
|
||||
{
|
||||
return Document::query()
|
||||
->where('is_public', true)
|
||||
->whereHasMorph('documentable', [Task::class], function ($query) {
|
||||
$query->where('client_id', $this->client->id);
|
||||
});
|
||||
|
@ -22,7 +22,10 @@ class UploadBankIntegrationRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->bank_integration);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->bank_integration);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadBankIntegrationRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,10 @@ class UploadBankTransactionRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->bank_transaction);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->bank_transaction);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadBankTransactionRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -33,11 +33,17 @@ class StoreClientRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('create', Client::class);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('create', Client::class);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
if ($this->file('documents') && is_array($this->file('documents'))) {
|
||||
$rules['documents.*'] = $this->file_validation;
|
||||
} elseif ($this->file('documents')) {
|
||||
@ -51,7 +57,7 @@ class StoreClientRequest extends Request
|
||||
}
|
||||
|
||||
if (isset($this->number)) {
|
||||
$rules['number'] = Rule::unique('clients')->where('company_id', auth()->user()->company()->id);
|
||||
$rules['number'] = Rule::unique('clients')->where('company_id', $user->company()->id);
|
||||
}
|
||||
|
||||
$rules['country_id'] = 'integer|nullable';
|
||||
@ -81,12 +87,12 @@ class StoreClientRequest extends Request
|
||||
//'regex:/[@$!%*#?&.]/', // must contain a special character
|
||||
];
|
||||
|
||||
if (auth()->user()->company()->account->isFreeHostedClient()) {
|
||||
$rules['id'] = new CanStoreClientsRule(auth()->user()->company()->id);
|
||||
if ($user->company()->account->isFreeHostedClient()) {
|
||||
$rules['id'] = new CanStoreClientsRule($user->company()->id);
|
||||
}
|
||||
|
||||
$rules['number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', auth()->user()->company()->id)];
|
||||
$rules['id_number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', auth()->user()->company()->id)];
|
||||
$rules['number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', $user->company()->id)];
|
||||
$rules['id_number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', $user->company()->id)];
|
||||
|
||||
return $rules;
|
||||
}
|
||||
@ -94,6 +100,8 @@ class StoreClientRequest extends Request
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
/* Default settings */
|
||||
$settings = (array)ClientSettings::defaults();
|
||||
@ -130,10 +138,10 @@ class StoreClientRequest extends Request
|
||||
if ($group_settings && property_exists($group_settings->settings, 'currency_id') && isset($group_settings->settings->currency_id)) {
|
||||
$input['settings']['currency_id'] = (string) $group_settings->settings->currency_id;
|
||||
} else {
|
||||
$input['settings']['currency_id'] = (string) auth()->user()->company()->settings->currency_id;
|
||||
$input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
|
||||
}
|
||||
} elseif (! array_key_exists('currency_id', $input['settings'])) {
|
||||
$input['settings']['currency_id'] = (string) auth()->user()->company()->settings->currency_id;
|
||||
$input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
|
||||
}
|
||||
|
||||
if (isset($input['currency_code'])) {
|
||||
|
@ -31,12 +31,17 @@ class UpdateClientRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->client);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->client);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
/* Ensure we have a client name, and that all emails are unique*/
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
if ($this->file('documents') && is_array($this->file('documents'))) {
|
||||
$rules['documents.*'] = $this->file_validation;
|
||||
@ -55,15 +60,13 @@ class UpdateClientRequest extends Request
|
||||
$rules['size_id'] = 'integer|nullable';
|
||||
$rules['country_id'] = 'integer|nullable';
|
||||
$rules['shipping_country_id'] = 'integer|nullable';
|
||||
//$rules['id_number'] = 'unique:clients,id_number,,id,company_id,' . auth()->user()->company()->id;
|
||||
//$rules['id_number'] = 'unique:clients,id_number,'.$this->id.',id,company_id,'.$this->company_id;
|
||||
|
||||
if ($this->id_number) {
|
||||
$rules['id_number'] = Rule::unique('clients')->where('company_id', auth()->user()->company()->id)->ignore($this->client->id);
|
||||
$rules['id_number'] = Rule::unique('clients')->where('company_id', $user->company()->id)->ignore($this->client->id);
|
||||
}
|
||||
|
||||
if ($this->number) {
|
||||
$rules['number'] = Rule::unique('clients')->where('company_id', auth()->user()->company()->id)->ignore($this->client->id);
|
||||
$rules['number'] = Rule::unique('clients')->where('company_id', $user->company()->id)->ignore($this->client->id);
|
||||
}
|
||||
|
||||
$rules['settings'] = new ValidClientGroupSettingsRule();
|
||||
@ -99,9 +102,12 @@ class UpdateClientRequest extends Request
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
/* If the user removes the currency we must always set the default */
|
||||
if (array_key_exists('settings', $input) && ! array_key_exists('currency_id', $input['settings'])) {
|
||||
$input['settings']['currency_id'] = (string) auth()->user()->company()->settings->currency_id;
|
||||
$input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
|
||||
}
|
||||
|
||||
if (isset($input['language_code'])) {
|
||||
|
@ -22,7 +22,10 @@ class UploadClientRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->client);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->client);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadClientRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,10 @@ class UploadCreditRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->credit);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->credit);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadCreditRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,9 @@ class CreateDocumentRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('create', Document::class);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('create', Document::class);
|
||||
}
|
||||
}
|
||||
|
@ -22,6 +22,9 @@ class DestroyDocumentRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->document);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->document);
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,10 @@ class EditDocumentRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->document);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->document);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -22,7 +22,10 @@ class ShowDocumentRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('view', $this->document);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('view', $this->document);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -23,12 +23,16 @@ class StoreDocumentRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('create', Document::class);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('create', Document::class);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'is_public' => 'sometimes|boolean',
|
||||
];
|
||||
}
|
||||
|
||||
@ -36,6 +40,10 @@ class StoreDocumentRequest extends Request
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public']))
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
|
||||
$this->replace($input);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -34,14 +34,20 @@ class UpdateDocumentRequest extends Request
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'sometimes'
|
||||
'name' => 'sometimes',
|
||||
'is_public' => 'sometimes|boolean',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public']))
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
|
||||
$this->replace($input);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -22,7 +22,10 @@ class UploadExpenseRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->expense);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->expense);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadExpenseRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ class UploadInvoiceRequest extends Request
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->invoice);
|
||||
}
|
||||
|
||||
@ -51,24 +52,13 @@ class UploadInvoiceRequest extends Request
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
//tests to see if upload via binary data works.
|
||||
|
||||
// if(request()->getContent())
|
||||
// {
|
||||
// // $file = new UploadedFile(request()->getContent(), request()->header('filename'));
|
||||
// $file = new UploadedFile(request()->getContent(), 'something.png');
|
||||
// // request()->files->set('documents', $file);
|
||||
|
||||
// $this->files->add(['file' => $file]);
|
||||
|
||||
// // Merge it in request also (As I found this is not needed in every case)
|
||||
// $this->merge(['file' => $file]);
|
||||
|
||||
|
||||
// }
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
/**
|
||||
* Payment Ninja (https://paymentninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Payment Ninja LLC (https://paymentninja.com)
|
||||
*
|
||||
@ -22,7 +22,10 @@ class UploadPaymentRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->payment);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->payment);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadPaymentRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
/**
|
||||
* Product Ninja (https://paymentninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Product Ninja LLC (https://paymentninja.com)
|
||||
*
|
||||
@ -22,7 +22,10 @@ class UploadProductRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->product);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->product);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -40,6 +43,20 @@ class UploadProductRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
/**
|
||||
* Project Ninja (https://paymentninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Project Ninja LLC (https://paymentninja.com)
|
||||
*
|
||||
@ -22,7 +22,10 @@ class UploadProjectRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->project);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->project);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadProjectRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Quote Ninja (https://paymentninja.com).
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com)
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
@ -22,7 +22,10 @@ class UploadPurchaseOrderRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->purchase_order);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->purchase_order);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadPurchaseOrderRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Quote Ninja (https://paymentninja.com).
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com)
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
@ -22,7 +22,10 @@ class UploadQuoteRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->quote);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->quote);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadQuoteRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Quote Ninja (https://paymentninja.com).
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com)
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
@ -22,7 +22,10 @@ class UploadRecurringInvoiceRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->recurring_invoice);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->recurring_invoice);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -41,6 +44,20 @@ class UploadRecurringInvoiceRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public'])) {
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
}
|
||||
|
||||
$this->replace($input);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Quote Ninja (https://paymentninja.com).
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com)
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
@ -199,6 +199,17 @@ class Request extends FormRequest
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert to boolean
|
||||
*
|
||||
* @param $bool
|
||||
* @return bool
|
||||
*/
|
||||
public function toBoolean($bool): bool
|
||||
{
|
||||
return filter_var($bool, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
|
||||
}
|
||||
|
||||
public function checkTimeLog(array $log): bool
|
||||
{
|
||||
if (count($log) == 0) {
|
||||
|
@ -2,7 +2,7 @@
|
||||
/**
|
||||
* Invoice Ninja (https://paymentninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://paymentninja.com)
|
||||
*
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Quote Ninja (https://paymentninja.com).
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com)
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
@ -22,17 +22,41 @@ class UploadTaskRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->task);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->task);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
$rules = [];
|
||||
|
||||
if ($this->input('documents')) {
|
||||
$rules['documents'] = 'file|mimes:csv,png,ai,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx|max:2000000';
|
||||
if ($this->file('documents') && is_array($this->file('documents'))) {
|
||||
$rules['documents.*'] = $this->file_validation;
|
||||
} elseif ($this->file('documents')) {
|
||||
$rules['documents'] = $this->file_validation;
|
||||
}
|
||||
|
||||
if ($this->file('file') && is_array($this->file('file'))) {
|
||||
$rules['file.*'] = $this->file_validation;
|
||||
} elseif ($this->file('file')) {
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public']))
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
|
||||
$this->replace($input);
|
||||
}
|
||||
|
||||
}
|
||||
|
18
app/Http/Requests/Vendor/UploadVendorRequest.php
vendored
18
app/Http/Requests/Vendor/UploadVendorRequest.php
vendored
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Quote Ninja (https://paymentninja.com).
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Quote Ninja LLC (https://paymentninja.com)
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
@ -41,6 +41,18 @@ class UploadVendorRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['is_public'] = 'sometimes|boolean';
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['is_public']))
|
||||
$input['is_public'] = $this->toBoolean($input['is_public']);
|
||||
|
||||
$this->replace($input);
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ class NinjaMailerJob implements ShouldQueue
|
||||
|
||||
public $override;
|
||||
|
||||
/** @var \App\Models\Company $company | null **/
|
||||
/** @var null|\App\Models\Company $company **/
|
||||
public ?Company $company;
|
||||
|
||||
private $mailer;
|
||||
@ -143,8 +143,6 @@ class NinjaMailerJob implements ShouldQueue
|
||||
LightLogs::create(new EmailSuccess($this->nmo->company->company_key))
|
||||
->send();
|
||||
|
||||
$this->nmo = null;
|
||||
$this->company = null;
|
||||
} catch(\Symfony\Component\Mime\Exception\RfcComplianceException $e) {
|
||||
nlog("Mailer failed with a Logic Exception {$e->getMessage()}");
|
||||
$this->fail();
|
||||
@ -195,6 +193,9 @@ class NinjaMailerJob implements ShouldQueue
|
||||
$this->release($this->backoff()[$this->attempts()-1]);
|
||||
}
|
||||
|
||||
$this->nmo = null;
|
||||
$this->company = null;
|
||||
|
||||
/*Clean up mailers*/
|
||||
$this->cleanUpMailers();
|
||||
}
|
||||
|
@ -222,6 +222,22 @@ class CompanyGateway extends BaseModel
|
||||
$this->config = encrypt(json_encode($config));
|
||||
}
|
||||
|
||||
/**
|
||||
* setConfigField
|
||||
*
|
||||
* @param mixed $field
|
||||
* @param mixed $value
|
||||
* @return void
|
||||
*/
|
||||
public function setConfigField($field, $value): void
|
||||
{
|
||||
$config = $this->getConfig();
|
||||
$config->{$field} = $value;
|
||||
|
||||
$this->setConfig($config);
|
||||
$this->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
|
@ -77,6 +77,16 @@ class Document extends BaseModel
|
||||
'name',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array<string>
|
||||
*/
|
||||
protected $casts = [
|
||||
'is_public' => 'bool',
|
||||
'updated_at' => 'timestamp',
|
||||
'created_at' => 'timestamp',
|
||||
'deleted_at' => 'timestamp',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
|
@ -171,7 +171,7 @@ class Gateway extends StaticModel
|
||||
];
|
||||
case 57:
|
||||
return [
|
||||
GatewayType::CREDIT_CARD => ['refund' => false, 'token_billing' => true], //Square
|
||||
GatewayType::CREDIT_CARD => ['refund' => true, 'token_billing' => true], //Square
|
||||
];
|
||||
case 52:
|
||||
return [
|
||||
|
@ -17,7 +17,7 @@ use Illuminate\Database\Eloquent\Model;
|
||||
* App\Models\PaymentHash
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $hash
|
||||
* @property string $hash 32 char length AlphaNum
|
||||
* @property float $fee_total
|
||||
* @property int|null $fee_invoice_id
|
||||
* @property \stdClass $data
|
||||
@ -41,6 +41,7 @@ class PaymentHash extends Model
|
||||
/**
|
||||
* @class \App\Models\PaymentHash $this
|
||||
* @property \App\Models\PaymentHash $data
|
||||
* @property \App\Modes\PaymentHash $hash 32 char length AlphaNum
|
||||
* @class \stdClass $data
|
||||
* @property string $raw_value
|
||||
*/
|
||||
|
@ -195,7 +195,10 @@ class SystemLog extends Model
|
||||
*/
|
||||
public function scopeCompany($query)
|
||||
{
|
||||
$query->where('company_id', auth()->user()->companyId());
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
$query->where('company_id', $user->companyId());
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
@ -263,6 +263,8 @@ class BaseDriver extends AbstractPaymentDriver
|
||||
public function setClient(Client $client)
|
||||
{
|
||||
$this->client = $client;
|
||||
|
||||
return $this;
|
||||
}
|
||||
/************************** Helper methods *************************************/
|
||||
|
||||
|
@ -12,30 +12,30 @@
|
||||
|
||||
namespace App\PaymentDrivers\Square;
|
||||
|
||||
use App\Exceptions\PaymentFailed;
|
||||
use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest;
|
||||
use App\Models\ClientGatewayToken;
|
||||
use App\Models\GatewayType;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\Payment;
|
||||
use App\Models\PaymentType;
|
||||
use App\PaymentDrivers\Common\MethodInterface;
|
||||
use App\PaymentDrivers\SquarePaymentDriver;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Str;
|
||||
use App\Models\SystemLog;
|
||||
use Illuminate\View\View;
|
||||
use App\Models\GatewayType;
|
||||
use App\Models\PaymentType;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Http\Request;
|
||||
use Square\Http\ApiResponse;
|
||||
use App\Jobs\Util\SystemLogger;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Exceptions\PaymentFailed;
|
||||
use App\Models\ClientGatewayToken;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use App\PaymentDrivers\SquarePaymentDriver;
|
||||
use App\PaymentDrivers\Common\MethodInterface;
|
||||
use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest;
|
||||
|
||||
class CreditCard implements MethodInterface
|
||||
{
|
||||
use MakesHash;
|
||||
|
||||
public $square_driver;
|
||||
|
||||
public function __construct(SquarePaymentDriver $square_driver)
|
||||
public function __construct(public SquarePaymentDriver $square_driver)
|
||||
{
|
||||
$this->square_driver = $square_driver;
|
||||
$this->square_driver->init();
|
||||
}
|
||||
|
||||
@ -100,20 +100,28 @@ class CreditCard implements MethodInterface
|
||||
);
|
||||
|
||||
if ($request->shouldUseToken()) {
|
||||
/** @var \App\Models\ClientGatewayToken $cgt **/
|
||||
$cgt = ClientGatewayToken::where('token', $request->token)->first();
|
||||
$cgt = ClientGatewayToken::query()->where('token', $request->token)->first();
|
||||
$token = $cgt->token;
|
||||
}
|
||||
|
||||
$invoice = Invoice::query()->whereIn('id', $this->transformKeys(array_column($this->square_driver->payment_hash->invoices(), 'invoice_id')))->withTrashed()->first();
|
||||
|
||||
if ($invoice) {
|
||||
$description = "Invoice {$invoice->number} for {$amount} for client {$this->square_driver->client->present()->name()}";
|
||||
} else {
|
||||
$description = "Payment with no invoice for amount {$amount} for client {$this->square_driver->client->present()->name()}";
|
||||
}
|
||||
|
||||
$amount_money = new \Square\Models\Money();
|
||||
$amount_money->setAmount($amount);
|
||||
$amount_money->setCurrency($this->square_driver->client->currency()->code);
|
||||
|
||||
$body = new \Square\Models\CreatePaymentRequest($token, $request->idempotencyKey, $amount_money);
|
||||
|
||||
$body = new \Square\Models\CreatePaymentRequest($token, $request->idempotencyKey);
|
||||
$body->setAmountMoney($amount_money);
|
||||
$body->setAutocomplete(true);
|
||||
$body->setLocationId($this->square_driver->company_gateway->getConfigField('locationId'));
|
||||
$body->setReferenceId(Str::random(16));
|
||||
$body->setReferenceId($this->square_driver->payment_hash->hash);
|
||||
$body->setNote($description);
|
||||
|
||||
if ($request->shouldUseToken()) {
|
||||
$body->setCustomerId($cgt->gateway_customer_reference);
|
||||
@ -121,7 +129,6 @@ class CreditCard implements MethodInterface
|
||||
$body->setVerificationToken($request->input('verificationToken'));
|
||||
}
|
||||
|
||||
/** @var ApiResponse */
|
||||
$response = $this->square_driver->square->getPaymentsApi()->createPayment($body);
|
||||
|
||||
if ($response->isSuccess()) {
|
||||
@ -152,6 +159,20 @@ class CreditCard implements MethodInterface
|
||||
|
||||
$payment = $this->square_driver->createPayment($payment_record, Payment::STATUS_COMPLETED);
|
||||
|
||||
$message = [
|
||||
'server_response' => $body,
|
||||
'data' => $this->square_driver->payment_hash->data,
|
||||
];
|
||||
|
||||
SystemLogger::dispatch(
|
||||
$message,
|
||||
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||
SystemLog::EVENT_GATEWAY_SUCCESS,
|
||||
SystemLog::TYPE_SQUARE,
|
||||
$this->square_driver->client,
|
||||
$this->square_driver->client->company,
|
||||
);
|
||||
|
||||
return redirect()->route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)]);
|
||||
}
|
||||
|
||||
|
280
app/PaymentDrivers/Square/SquareWebhook.php
Normal file
280
app/PaymentDrivers/Square/SquareWebhook.php
Normal file
@ -0,0 +1,280 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\PaymentDrivers\Square;
|
||||
|
||||
use App\Models\Payment;
|
||||
use App\Models\SystemLog;
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\GatewayType;
|
||||
use App\Models\PaymentHash;
|
||||
use App\Models\PaymentType;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use App\Models\CompanyGateway;
|
||||
use App\Jobs\Util\SystemLogger;
|
||||
use App\Jobs\Mail\PaymentFailedMailer;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use App\PaymentDrivers\Stripe\Utilities;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use App\PaymentDrivers\SquarePaymentDriver;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
||||
class SquareWebhook implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, Utilities;
|
||||
|
||||
public $tries = 1;
|
||||
|
||||
public $deleteWhenMissingModels = true;
|
||||
|
||||
public CompanyGateway $company_gateway;
|
||||
|
||||
public SquarePaymentDriver $driver;
|
||||
|
||||
public \Square\SquareClient $square;
|
||||
|
||||
private array $source_type = [
|
||||
'CARD' => PaymentType::CREDIT_CARD_OTHER,
|
||||
'BANK_ACCOUNT' => PaymentType::ACH,
|
||||
'WALLET' => PaymentType::CREDIT_CARD_OTHER,
|
||||
'BUY_NOW_PAY_LATER' => PaymentType::CREDIT_CARD_OTHER,
|
||||
'SQUARE_ACCOUNT' => PaymentType::CREDIT_CARD_OTHER,
|
||||
'CASH' => PaymentType::CASH,
|
||||
'EXTERNAL' =>PaymentType::CREDIT_CARD_OTHER
|
||||
];
|
||||
|
||||
public function __construct(public array $webhook_array, public string $company_key, public int $company_gateway_id)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {
|
||||
* "merchant_id": "6SSW7HV8K2ST5",
|
||||
* "type": "payment.created",
|
||||
* "event_id": "13b867cf-db3d-4b1c-90b6-2f32a9d78124",
|
||||
* "created_at": "2020-02-06T21:27:30.792Z",
|
||||
* "data": {
|
||||
* "type": "payment",
|
||||
* "id": "KkAkhdMsgzn59SM8A89WgKwekxLZY",
|
||||
* "object": {
|
||||
* "payment": {
|
||||
* "id": "hYy9pRFVxpDsO1FB05SunFWUe9JZY",
|
||||
* "created_at": "2020-11-22T21:16:51.086Z",
|
||||
* "updated_at": "2020-11-22T21:16:51.198Z",
|
||||
* "amount_money": {
|
||||
* "amount": 100,
|
||||
* "currency": "USD"
|
||||
* },
|
||||
* "status": "APPROVED",
|
||||
* "delay_duration": "PT168H",
|
||||
* "source_type": "CARD",
|
||||
* "card_details": {
|
||||
* "status": "AUTHORIZED",
|
||||
* "card": {
|
||||
* "card_brand": "MASTERCARD",
|
||||
* "last_4": "9029",
|
||||
* "exp_month": 11,
|
||||
* "exp_year": 2022,
|
||||
* "fingerprint": "sq-1-Tvruf3vPQxlvI6n0IcKYfBukrcv6IqWr8UyBdViWXU2yzGn5VMJvrsHMKpINMhPmVg",
|
||||
* "card_type": "CREDIT",
|
||||
* "prepaid_type": "NOT_PREPAID",
|
||||
* "bin": "540988"
|
||||
* },
|
||||
* "entry_method": "KEYED",
|
||||
* "cvv_status": "CVV_ACCEPTED",
|
||||
* "avs_status": "AVS_ACCEPTED",
|
||||
* "statement_description": "SQ *DEFAULT TEST ACCOUNT",
|
||||
* "card_payment_timeline": {
|
||||
* "authorized_at": "2020-11-22T21:16:51.198Z"
|
||||
*
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
nlog("Square Webhook");
|
||||
|
||||
MultiDB::findAndSetDbByCompanyKey($this->company_key);
|
||||
|
||||
$this->company_gateway = CompanyGateway::query()->withTrashed()->find($this->company_gateway_id);
|
||||
$this->driver = $this->company_gateway->driver()->init();
|
||||
$this->square = $this->driver->square;
|
||||
|
||||
$status = $this->webhook_array['data']['object']['payment']['status'] ?? false;
|
||||
$payment_id = $this->webhook_array['data']['object']['payment']['id'] ?? null;
|
||||
|
||||
$payment_status = false;
|
||||
|
||||
match($status){
|
||||
'APPROVED' => $payment_status = false,
|
||||
'COMPLETED' => $payment_status = Payment::STATUS_COMPLETED,
|
||||
'PENDING' => $payment_status = Payment::STATUS_PENDING,
|
||||
'CANCELED' => $payment_status = Payment::STATUS_CANCELLED,
|
||||
'FAILED' => $payment_status = Payment::STATUS_FAILED,
|
||||
default => $payment_status = false,
|
||||
};
|
||||
|
||||
if(!$payment_status){
|
||||
nlog("Square Webhook - Payment Status Not Found or not worthy of processing");
|
||||
nlog($this->webhook_array);
|
||||
}
|
||||
|
||||
$payment = $this->retrieveOrCreatePayment($payment_id, $payment_status);
|
||||
|
||||
/** If the status was pending and now is reporting as Failed / Cancelled - process failure path */
|
||||
if($payment->status_id == Payment::STATUS_PENDING && in_array($payment_status, [Payment::STATUS_CANCELLED, Payment::STATUS_FAILED])){
|
||||
$payment->service()->deletePayment();
|
||||
|
||||
if ($this->driver->payment_hash) {
|
||||
$error = ctrans('texts.client_payment_failure_body', [
|
||||
'invoice' => implode(',', $payment->invoices->pluck('number')->toArray()),
|
||||
'amount' => array_sum(array_column($this->driver->payment_hash->invoices(), 'amount')) + $this->driver->payment_hash->fee_total,
|
||||
]);
|
||||
} else {
|
||||
$error = 'Payment for '.$payment->client->present()->name()." for {$payment->amount} failed";
|
||||
}
|
||||
|
||||
PaymentFailedMailer::dispatch(
|
||||
$this->driver->payment_hash,
|
||||
$this->driver->client->company,
|
||||
$this->driver->client,
|
||||
$error
|
||||
);
|
||||
|
||||
}
|
||||
elseif($payment->status_id == Payment::STATUS_PENDING && in_array($payment_status, [Payment::STATUS_COMPLETED, Payment::STATUS_COMPLETED])){
|
||||
$payment->status_id = Payment::STATUS_COMPLETED;
|
||||
$payment->save();
|
||||
}
|
||||
|
||||
//toggle pending to completed.
|
||||
}
|
||||
|
||||
private function retrieveOrCreatePayment(?string $payment_reference, int $payment_status): ?\App\Models\Payment
|
||||
{
|
||||
|
||||
$payment = Payment::withTrashed()->where('transaction_reference', $payment_reference)->first();
|
||||
|
||||
if($payment)
|
||||
return $payment;
|
||||
|
||||
/** Handles the edge case where for some reason the payment has not yet been recorded in Invoice Ninja */
|
||||
$apiResponse = $this->square->getPaymentsApi()->getPayment($payment_reference);
|
||||
|
||||
// {
|
||||
// "payment": {
|
||||
// "id": "bP9mAsEMYPUGjjGNaNO5ZDVyLhSZY",
|
||||
// "created_at": "2021-10-13T19:34:33.524Z",
|
||||
// "updated_at": "2021-10-13T19:34:34.339Z",
|
||||
// "amount_money": {
|
||||
// "amount": 555,
|
||||
// "currency": "USD"
|
||||
// },
|
||||
// "status": "COMPLETED",
|
||||
// "delay_duration": "PT168H",
|
||||
// "source_type": "CARD",
|
||||
// "card_details": {
|
||||
// "status": "CAPTURED",
|
||||
// "card": {
|
||||
// "card_brand": "VISA",
|
||||
// "last_4": "1111",
|
||||
// "exp_month": 11,
|
||||
// "exp_year": 2022,
|
||||
// "fingerprint": "sq-1-Hxim77tbdcbGejOejnoAklBVJed2YFLTmirfl8Q5XZzObTc8qY_U8RkwzoNL8dCEcQ",
|
||||
// "card_type": "DEBIT",
|
||||
// "prepaid_type": "NOT_PREPAID",
|
||||
// "bin": "411111"
|
||||
// },
|
||||
// "entry_method": "KEYED",
|
||||
// "cvv_status": "CVV_ACCEPTED",
|
||||
// "avs_status": "AVS_ACCEPTED",
|
||||
// "auth_result_code": "2Nkw7q",
|
||||
// "statement_description": "SQ *EXAMPLE TEST GOSQ.C",
|
||||
// "card_payment_timeline": {
|
||||
// "authorized_at": "2021-10-13T19:34:33.680Z",
|
||||
// "captured_at": "2021-10-13T19:34:34.340Z"
|
||||
// }
|
||||
// },
|
||||
// "location_id": "L88917AVBK2S5",
|
||||
// "order_id": "d7eKah653Z579f3gVtjlxpSlmUcZY",
|
||||
// "processing_fee": [
|
||||
// {
|
||||
// "effective_at": "2021-10-13T21:34:35.000Z",
|
||||
// "type": "INITIAL",
|
||||
// "amount_money": {
|
||||
// "amount": 34,
|
||||
// "currency": "USD"
|
||||
// }
|
||||
// }
|
||||
// ],
|
||||
// "note": "Test Note",
|
||||
// "total_money": {
|
||||
// "amount": 555,
|
||||
// "currency": "USD"
|
||||
// },
|
||||
// "approved_money": {
|
||||
// "amount": 555,
|
||||
// "currency": "USD"
|
||||
// },
|
||||
// "employee_id": "TMoK_ogh6rH1o4dV",
|
||||
// "receipt_number": "bP9m",
|
||||
// "receipt_url": "https://squareup.com/receipt/preview/bP9mAsEMYPUGjjGNaNO5ZDVyLhSZY",
|
||||
// "delay_action": "CANCEL",
|
||||
// "delayed_until": "2021-10-20T19:34:33.524Z",
|
||||
// "team_member_id": "TMoK_ogh6rH1o4dV",
|
||||
// "application_details": {
|
||||
// "square_product": "VIRTUAL_TERMINAL",
|
||||
// "application_id": "sq0ids-Pw67AZAlLVB7hsRmwlJPuA"
|
||||
// },
|
||||
// "version_token": "56pRkL3slrzet2iQrTp9n0bdJVYTB9YEWdTNjQfZOPV6o"
|
||||
// }
|
||||
// }
|
||||
|
||||
if($apiResponse->isSuccess()){
|
||||
|
||||
$payment_hash_id = $apiResponse->getPayment()->getReferenceId() ?? false;
|
||||
$square_payment = $apiResponse->getPayment()->jsonSerialize();
|
||||
$payment_hash = PaymentHash::where('hash', $payment_hash_id)->firstOrFail();
|
||||
|
||||
$payment_hash->data = array_merge((array) $payment_hash->data, (array)$square_payment);
|
||||
$payment_hash->save();
|
||||
|
||||
$this->driver->setPaymentHash($payment_hash);
|
||||
$this->driver->setClient($payment_hash->fee_invoice->client);
|
||||
|
||||
$data = [
|
||||
'payment_type' => $this->source_type[$square_payment->source_type],
|
||||
'amount' => $payment_hash->amount_with_fee,
|
||||
'transaction_reference' => $square_payment->id,
|
||||
'gateway_type_id' => GatewayType::BANK_TRANSFER,
|
||||
];
|
||||
|
||||
$payment = $this->driver->createPayment($data, $payment_status);
|
||||
|
||||
SystemLogger::dispatch(
|
||||
['response' => $this->webhook_array, 'data' => $square_payment],
|
||||
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||
SystemLog::EVENT_GATEWAY_SUCCESS,
|
||||
SystemLog::TYPE_SQUARE,
|
||||
$this->driver->client,
|
||||
$this->driver->client->company,
|
||||
);
|
||||
|
||||
return $payment;
|
||||
|
||||
}
|
||||
else{
|
||||
nlog("Square Webhook - Payment not found: {$payment_reference}");
|
||||
nlog($apiResponse->getErrors());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -11,18 +11,22 @@
|
||||
|
||||
namespace App\PaymentDrivers;
|
||||
|
||||
use App\Http\Requests\Payments\PaymentWebhookRequest;
|
||||
use App\Jobs\Util\SystemLogger;
|
||||
use App\Models\ClientGatewayToken;
|
||||
use App\Models\GatewayType;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\Payment;
|
||||
use App\Models\SystemLog;
|
||||
use App\Models\GatewayType;
|
||||
use App\Models\PaymentHash;
|
||||
use App\Models\PaymentType;
|
||||
use App\Models\SystemLog;
|
||||
use App\PaymentDrivers\Square\CreditCard;
|
||||
use App\Jobs\Util\SystemLogger;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Square\Http\ApiResponse;
|
||||
use Square\Utils\WebhooksHelper;
|
||||
use App\Models\ClientGatewayToken;
|
||||
use Square\Models\WebhookSubscription;
|
||||
use App\PaymentDrivers\Square\CreditCard;
|
||||
use App\PaymentDrivers\Square\SquareWebhook;
|
||||
use Square\Models\CreateWebhookSubscriptionRequest;
|
||||
use App\Http\Requests\Payments\PaymentWebhookRequest;
|
||||
use Square\Models\Builders\RefundPaymentRequestBuilder;
|
||||
|
||||
class SquarePaymentDriver extends BaseDriver
|
||||
{
|
||||
@ -96,15 +100,115 @@ class SquarePaymentDriver extends BaseDriver
|
||||
public function refund(Payment $payment, $amount, $return_client_response = false)
|
||||
{
|
||||
$this->init();
|
||||
$this->client = $payment->client;
|
||||
|
||||
$amount_money = new \Square\Models\Money();
|
||||
$amount_money->setAmount($this->convertAmount($amount));
|
||||
$amount_money->setCurrency($this->client->currency()->code);
|
||||
|
||||
$body = new \Square\Models\RefundPaymentRequest(\Illuminate\Support\Str::random(32), $amount_money, $payment->transaction_reference);
|
||||
$body = RefundPaymentRequestBuilder::init(\Illuminate\Support\Str::random(32), $amount_money)
|
||||
->paymentId($payment->transaction_reference)
|
||||
->reason('Refund Request')
|
||||
->build();
|
||||
|
||||
$apiResponse = $this->square->getRefundsApi()->refundPayment($body);
|
||||
|
||||
if ($apiResponse->isSuccess()) {
|
||||
|
||||
$refundPaymentResponse = $apiResponse->getResult();
|
||||
|
||||
nlog($refundPaymentResponse);
|
||||
|
||||
/**
|
||||
* - `PENDING` - Awaiting approval.
|
||||
* - `COMPLETED` - Successfully completed.
|
||||
* - `REJECTED` - The refund was rejected.
|
||||
* - `FAILED` - An error occurred.
|
||||
*/
|
||||
|
||||
$status = $refundPaymentResponse->getRefund()->getStatus();
|
||||
|
||||
if(in_array($status, ['COMPLETED', 'PENDING'])){
|
||||
|
||||
$transaction_reference = $refundPaymentResponse->getRefund()->getId();
|
||||
|
||||
$data = [
|
||||
'transaction_reference' => $transaction_reference,
|
||||
'transaction_response' => json_encode($refundPaymentResponse->getRefund()->jsonSerialize()),
|
||||
'success' => true,
|
||||
'description' => $refundPaymentResponse->getRefund()->getReason(),
|
||||
'code' => $refundPaymentResponse->getRefund()->getReason(),
|
||||
];
|
||||
|
||||
SystemLogger::dispatch(
|
||||
[
|
||||
'server_response' => $data,
|
||||
'data' => request()->all()
|
||||
],
|
||||
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||
SystemLog::EVENT_GATEWAY_SUCCESS,
|
||||
SystemLog::TYPE_SQUARE,
|
||||
$this->client,
|
||||
$this->client->company
|
||||
);
|
||||
|
||||
return $data;
|
||||
}
|
||||
elseif(in_array($status, ['REJECTED', 'FAILED'])) {
|
||||
|
||||
$transaction_reference = $refundPaymentResponse->getRefund()->getId();
|
||||
|
||||
$data = [
|
||||
'transaction_reference' => $transaction_reference,
|
||||
'transaction_response' => json_encode($refundPaymentResponse->getRefund()->jsonSerialize()),
|
||||
'success' => false,
|
||||
'description' => $refundPaymentResponse->getRefund()->getReason(),
|
||||
'code' => $refundPaymentResponse->getRefund()->getReason(),
|
||||
];
|
||||
|
||||
SystemLogger::dispatch(
|
||||
[
|
||||
'server_response' => $data,
|
||||
'data' => request()->all()
|
||||
],
|
||||
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||
SystemLog::EVENT_GATEWAY_FAILURE,
|
||||
SystemLog::TYPE_SQUARE,
|
||||
$this->client,
|
||||
$this->client->company
|
||||
);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
/** @var \Square\Models\Error $error */
|
||||
$error = end($apiResponse->getErrors());
|
||||
|
||||
$data = [
|
||||
'transaction_reference' => $payment->transaction_reference,
|
||||
'transaction_response' => $error->jsonSerialize(),
|
||||
'success' => false,
|
||||
'description' => $error->getDetail(),
|
||||
'code' => $error->getCode(),
|
||||
];
|
||||
|
||||
SystemLogger::dispatch(
|
||||
[
|
||||
'server_response' => $data,
|
||||
'data' => request()->all()
|
||||
],
|
||||
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||
SystemLog::EVENT_GATEWAY_FAILURE,
|
||||
SystemLog::TYPE_SQUARE,
|
||||
$this->client,
|
||||
$this->client->company
|
||||
);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/** @var ApiResponse */
|
||||
$response = $this->square->getRefundsApi()->refund($body);
|
||||
}
|
||||
|
||||
public function tokenBilling(ClientGatewayToken $cgt, PaymentHash $payment_hash)
|
||||
@ -126,10 +230,12 @@ class SquarePaymentDriver extends BaseDriver
|
||||
$amount_money->setAmount($amount);
|
||||
$amount_money->setCurrency($this->client->currency()->code);
|
||||
|
||||
$body = new \Square\Models\CreatePaymentRequest($cgt->token, \Illuminate\Support\Str::random(32), $amount_money);
|
||||
$body = new \Square\Models\CreatePaymentRequest($cgt->token, \Illuminate\Support\Str::random(32));
|
||||
$body->setCustomerId($cgt->gateway_customer_reference);
|
||||
$body->setAmountMoney($amount_money);
|
||||
$body->setReferenceId($payment_hash->hash);
|
||||
$body->setNote(substr($description,0,500));
|
||||
|
||||
/** @var ApiResponse */
|
||||
$response = $this->square->getPaymentsApi()->createPayment($body);
|
||||
$body = json_decode($response->getBody());
|
||||
|
||||
@ -177,8 +283,132 @@ class SquarePaymentDriver extends BaseDriver
|
||||
return false;
|
||||
}
|
||||
|
||||
public function processWebhookRequest(PaymentWebhookRequest $request, Payment $payment = null)
|
||||
public function checkWebhooks(): mixed
|
||||
{
|
||||
$this->init();
|
||||
|
||||
$api_response = $this->square->getWebhookSubscriptionsApi()->listWebhookSubscriptions();
|
||||
|
||||
if ($api_response->isSuccess()) {
|
||||
|
||||
//array of WebhookSubscription objects
|
||||
foreach($api_response->getResult()->getSubscriptions() ?? [] as $subscription)
|
||||
{
|
||||
if($subscription->getName() == 'Invoice_Ninja_Webhook_Subscription')
|
||||
return $subscription->getId();
|
||||
}
|
||||
|
||||
} else {
|
||||
$errors = $api_response->getErrors();
|
||||
nlog($errors);
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// {
|
||||
// "subscription": {
|
||||
// "id": "wbhk_b35f6b3145074cf9ad513610786c19d5",
|
||||
// "name": "Example Webhook Subscription",
|
||||
// "enabled": true,
|
||||
// "event_types": [
|
||||
// "payment.created",
|
||||
// "order.updated",
|
||||
// "invoice.created"
|
||||
// ],
|
||||
// "notification_url": "https://example-webhook-url.com",
|
||||
// "api_version": "2021-12-15",
|
||||
// "signature_key": "1k9bIJKCeTmSQwyagtNRLg",
|
||||
// "created_at": "2022-08-17 23:29:48 +0000 UTC",
|
||||
// "updated_at": "2022-08-17 23:29:48 +0000 UTC"
|
||||
// }
|
||||
// }
|
||||
public function createWebhooks(): void
|
||||
{
|
||||
|
||||
if($this->checkWebhooks())
|
||||
return;
|
||||
|
||||
$this->init();
|
||||
|
||||
$event_types = ['payment.created', 'payment.updated'];
|
||||
$subscription = new WebhookSubscription();
|
||||
$subscription->setName('Invoice_Ninja_Webhook_Subscription');
|
||||
$subscription->setEventTypes($event_types);
|
||||
|
||||
// $subscription->setNotificationUrl('https://invoicing.co');
|
||||
|
||||
$subscription->setNotificationUrl($this->company_gateway->webhookUrl());
|
||||
// $subscription->setApiVersion('2021-12-15');
|
||||
|
||||
$body = new CreateWebhookSubscriptionRequest($subscription);
|
||||
$body->setIdempotencyKey(\Illuminate\Support\Str::uuid());
|
||||
|
||||
$api_response = $this->square->getWebhookSubscriptionsApi()->createWebhookSubscription($body);
|
||||
|
||||
if ($api_response->isSuccess()) {
|
||||
$subscription = $api_response->getResult()->getSubscription();
|
||||
$signatureKey = $subscription->getSignatureKey();
|
||||
|
||||
$this->company_gateway->setConfigField('signatureKey', $signatureKey);
|
||||
|
||||
} else {
|
||||
$errors = $api_response->getErrors();
|
||||
nlog($errors);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function processWebhookRequest(PaymentWebhookRequest $request)
|
||||
{
|
||||
|
||||
$signature_key = $this->company_gateway->getConfigField('signatureKey');
|
||||
$notification_url = $this->company_gateway->webhookUrl();
|
||||
|
||||
// header('Content-Type: text/plain');
|
||||
// $webhook_payload = file_get_contents('php://input');
|
||||
|
||||
$body = '';
|
||||
$handle = fopen('php://input', 'r');
|
||||
while(!feof($handle)) {
|
||||
$body .= fread($handle, 1024);
|
||||
}
|
||||
|
||||
if (WebhooksHelper::isValidWebhookEventSignature($body, $request->header('x-square-hmacsha256-signature'), $signature_key, $notification_url)) {
|
||||
SquareWebhook::dispatch($request->all(), $request->company_key, $this->company_gateway->id)->delay(5);
|
||||
} else {
|
||||
nlog("Square Hash Mismatch");
|
||||
nlog($request->all());
|
||||
}
|
||||
|
||||
return response()->json(['success' => true]);
|
||||
|
||||
}
|
||||
|
||||
public function testWebhook()
|
||||
{
|
||||
$this->init();
|
||||
|
||||
$body = new \Square\Models\TestWebhookSubscriptionRequest();
|
||||
$body->setEventType('payment.created');
|
||||
|
||||
//getsubscriptionid here
|
||||
$subscription_id = $this->checkWebhooks();
|
||||
|
||||
if(!$subscription_id)
|
||||
return nlog('No Subscription Found');
|
||||
|
||||
$api_response = $this->square->getWebhookSubscriptionsApi()->testWebhookSubscription($subscription_id, $body);
|
||||
|
||||
if ($api_response->isSuccess()) {
|
||||
$result = $api_response->getResult();
|
||||
nlog($result);
|
||||
} else {
|
||||
$errors = $api_response->getErrors();
|
||||
nlog($errors);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function convertAmount($amount)
|
||||
|
@ -2,7 +2,7 @@
|
||||
/**
|
||||
* Payment Ninja (https://paymentninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Payment Ninja LLC (https://paymentninja.com)
|
||||
*
|
||||
|
@ -2,7 +2,7 @@
|
||||
/**
|
||||
* payment Ninja (https://paymentninja.com).
|
||||
*
|
||||
* @link https://github.com/paymentninja/paymentninja source repository
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. payment Ninja LLC (https://paymentninja.com)
|
||||
*
|
||||
|
@ -86,7 +86,7 @@
|
||||
"socialiteproviders/microsoft": "^4.1",
|
||||
"spatie/laravel-data": "^3.5",
|
||||
"sprain/swiss-qr-bill": "^3.2",
|
||||
"square/square": "13.0.0.20210721",
|
||||
"square/square": "30.0.0.*",
|
||||
"stripe/stripe-php": "^7.50",
|
||||
"symfony/http-client": "^6.0",
|
||||
"symfony/mailgun-mailer": "^6.1",
|
||||
|
265
composer.lock
generated
265
composer.lock
generated
@ -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": "9d7348352c913eb82fcca2e67670e1f8",
|
||||
"content-hash": "673ca66ddfdb05c3ea29012594a196d3",
|
||||
"packages": [
|
||||
{
|
||||
"name": "adrienrn/php-mimetyper",
|
||||
@ -99,21 +99,121 @@
|
||||
"time": "2023-05-02T15:11:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "apimatic/jsonmapper",
|
||||
"version": "v2.0.3",
|
||||
"name": "apimatic/core",
|
||||
"version": "0.3.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/apimatic/jsonmapper.git",
|
||||
"reference": "f7588f1ab692c402a9118e65cb9fd42b74e5e0db"
|
||||
"url": "https://github.com/apimatic/core-lib-php.git",
|
||||
"reference": "32238fb83ce9a3ebef38c726b497c0f218d6e6c9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/apimatic/jsonmapper/zipball/f7588f1ab692c402a9118e65cb9fd42b74e5e0db",
|
||||
"reference": "f7588f1ab692c402a9118e65cb9fd42b74e5e0db",
|
||||
"url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/32238fb83ce9a3ebef38c726b497c0f218d6e6c9",
|
||||
"reference": "32238fb83ce9a3ebef38c726b497c0f218d6e6c9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"apimatic/core-interfaces": "~0.1.0",
|
||||
"apimatic/jsonmapper": "^3.1.1",
|
||||
"ext-curl": "*",
|
||||
"ext-dom": "*",
|
||||
"ext-json": "*",
|
||||
"ext-libxml": "*",
|
||||
"php": "^7.2 || ^8.0",
|
||||
"php-jsonpointer/php-jsonpointer": "^3.0.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0",
|
||||
"phan/phan": "5.4.2",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Core\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Core logic and the utilities for the Apimatic's PHP SDK",
|
||||
"homepage": "https://github.com/apimatic/core-lib-php",
|
||||
"keywords": [
|
||||
"apimatic",
|
||||
"core",
|
||||
"corelib",
|
||||
"php"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/apimatic/core-lib-php/issues",
|
||||
"source": "https://github.com/apimatic/core-lib-php/tree/0.3.2"
|
||||
},
|
||||
"time": "2023-07-11T09:30:32+00:00"
|
||||
},
|
||||
{
|
||||
"name": "apimatic/core-interfaces",
|
||||
"version": "0.1.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/apimatic/core-interfaces-php.git",
|
||||
"reference": "183214195a79784c382a446795c46ca8c1f43cc1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/apimatic/core-interfaces-php/zipball/183214195a79784c382a446795c46ca8c1f43cc1",
|
||||
"reference": "183214195a79784c382a446795c46ca8c1f43cc1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"CoreInterfaces\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Definition of the behavior of apimatic/core, apimatic/unirest-php and Apimatic's PHP SDK",
|
||||
"homepage": "https://github.com/apimatic/core-interfaces-php",
|
||||
"keywords": [
|
||||
"apimatic",
|
||||
"core",
|
||||
"corelib",
|
||||
"interface",
|
||||
"php",
|
||||
"unirest"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/apimatic/core-interfaces-php/issues",
|
||||
"source": "https://github.com/apimatic/core-interfaces-php/tree/0.1.2"
|
||||
},
|
||||
"time": "2023-04-04T06:40:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "apimatic/jsonmapper",
|
||||
"version": "3.1.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/apimatic/jsonmapper.git",
|
||||
"reference": "6673a946c21f2ceeec0cb60d17541c11a22bc79d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/apimatic/jsonmapper/zipball/6673a946c21f2ceeec0cb60d17541c11a22bc79d",
|
||||
"reference": "6673a946c21f2ceeec0cb60d17541c11a22bc79d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"php": "^5.6 || ^7.0 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
|
||||
"squizlabs/php_codesniffer": "^3.0.0"
|
||||
},
|
||||
"type": "library",
|
||||
@ -144,37 +244,38 @@
|
||||
"support": {
|
||||
"email": "mehdi.jaffery@apimatic.io",
|
||||
"issues": "https://github.com/apimatic/jsonmapper/issues",
|
||||
"source": "https://github.com/apimatic/jsonmapper/tree/v2.0.3"
|
||||
"source": "https://github.com/apimatic/jsonmapper/tree/3.1.2"
|
||||
},
|
||||
"time": "2021-07-16T09:02:23+00:00"
|
||||
"time": "2023-06-08T04:27:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "apimatic/unirest-php",
|
||||
"version": "2.3.0",
|
||||
"version": "4.0.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/apimatic/unirest-php.git",
|
||||
"reference": "52e226fb3b7081dc9ef64aee876142a240a5f0f9"
|
||||
"reference": "e16754010c16be5473289470f129d87a0f41b55e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/apimatic/unirest-php/zipball/52e226fb3b7081dc9ef64aee876142a240a5f0f9",
|
||||
"reference": "52e226fb3b7081dc9ef64aee876142a240a5f0f9",
|
||||
"url": "https://api.github.com/repos/apimatic/unirest-php/zipball/e16754010c16be5473289470f129d87a0f41b55e",
|
||||
"reference": "e16754010c16be5473289470f129d87a0f41b55e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"apimatic/core-interfaces": "^0.1.0",
|
||||
"ext-curl": "*",
|
||||
"php": ">=5.6.0"
|
||||
"ext-json": "*",
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5 || ^6 || ^7 || ^8 || ^9"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-json": "Allows using JSON Bodies for sending and parsing requests"
|
||||
"phan/phan": "5.4.2",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"psr-4": {
|
||||
"Unirest\\": "src/"
|
||||
}
|
||||
},
|
||||
@ -208,9 +309,9 @@
|
||||
"support": {
|
||||
"email": "opensource@apimatic.io",
|
||||
"issues": "https://github.com/apimatic/unirest-php/issues",
|
||||
"source": "https://github.com/apimatic/unirest-php/tree/2.3.0"
|
||||
"source": "https://github.com/apimatic/unirest-php/tree/4.0.5"
|
||||
},
|
||||
"time": "2022-06-15T08:29:49+00:00"
|
||||
"time": "2023-04-25T14:19:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "asm/php-ansible",
|
||||
@ -424,16 +525,16 @@
|
||||
},
|
||||
{
|
||||
"name": "aws/aws-sdk-php",
|
||||
"version": "3.279.0",
|
||||
"version": "3.279.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/aws/aws-sdk-php.git",
|
||||
"reference": "7b3d38cfccd393add0ea0ce281de91846967c61e"
|
||||
"reference": "ebd5e47c5be0425bb5cf4f80737850ed74767107"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7b3d38cfccd393add0ea0ce281de91846967c61e",
|
||||
"reference": "7b3d38cfccd393add0ea0ce281de91846967c61e",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/ebd5e47c5be0425bb5cf4f80737850ed74767107",
|
||||
"reference": "ebd5e47c5be0425bb5cf4f80737850ed74767107",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -513,9 +614,9 @@
|
||||
"support": {
|
||||
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
|
||||
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.279.0"
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.279.2"
|
||||
},
|
||||
"time": "2023-08-16T18:18:34+00:00"
|
||||
"time": "2023-08-18T18:13:09+00:00"
|
||||
},
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
@ -1351,16 +1452,16 @@
|
||||
},
|
||||
{
|
||||
"name": "doctrine/dbal",
|
||||
"version": "3.6.5",
|
||||
"version": "3.6.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/dbal.git",
|
||||
"reference": "96d5a70fd91efdcec81fc46316efc5bf3da17ddf"
|
||||
"reference": "63646ffd71d1676d2f747f871be31b7e921c7864"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/dbal/zipball/96d5a70fd91efdcec81fc46316efc5bf3da17ddf",
|
||||
"reference": "96d5a70fd91efdcec81fc46316efc5bf3da17ddf",
|
||||
"url": "https://api.github.com/repos/doctrine/dbal/zipball/63646ffd71d1676d2f747f871be31b7e921c7864",
|
||||
"reference": "63646ffd71d1676d2f747f871be31b7e921c7864",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1376,10 +1477,11 @@
|
||||
"doctrine/coding-standard": "12.0.0",
|
||||
"fig/log-test": "^1",
|
||||
"jetbrains/phpstorm-stubs": "2023.1",
|
||||
"phpstan/phpstan": "1.10.21",
|
||||
"phpstan/phpstan": "1.10.29",
|
||||
"phpstan/phpstan-strict-rules": "^1.5",
|
||||
"phpunit/phpunit": "9.6.9",
|
||||
"psalm/plugin-phpunit": "0.18.4",
|
||||
"slevomat/coding-standard": "8.13.1",
|
||||
"squizlabs/php_codesniffer": "3.7.2",
|
||||
"symfony/cache": "^5.4|^6.0",
|
||||
"symfony/console": "^4.4|^5.4|^6.0",
|
||||
@ -1443,7 +1545,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/doctrine/dbal/issues",
|
||||
"source": "https://github.com/doctrine/dbal/tree/3.6.5"
|
||||
"source": "https://github.com/doctrine/dbal/tree/3.6.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1459,7 +1561,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-07-17T09:15:50+00:00"
|
||||
"time": "2023-08-17T05:38:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/deprecations",
|
||||
@ -3348,16 +3450,16 @@
|
||||
},
|
||||
{
|
||||
"name": "horstoeko/zugferd",
|
||||
"version": "v1.0.23",
|
||||
"version": "v1.0.26",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/horstoeko/zugferd.git",
|
||||
"reference": "bb55417be4c4de8deb0113e832feeaf7b4d3984e"
|
||||
"reference": "2a7541a35f00499c206391273f30159dc2c7072a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/horstoeko/zugferd/zipball/bb55417be4c4de8deb0113e832feeaf7b4d3984e",
|
||||
"reference": "bb55417be4c4de8deb0113e832feeaf7b4d3984e",
|
||||
"url": "https://api.github.com/repos/horstoeko/zugferd/zipball/2a7541a35f00499c206391273f30159dc2c7072a",
|
||||
"reference": "2a7541a35f00499c206391273f30159dc2c7072a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3415,9 +3517,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/horstoeko/zugferd/issues",
|
||||
"source": "https://github.com/horstoeko/zugferd/tree/v1.0.23"
|
||||
"source": "https://github.com/horstoeko/zugferd/tree/v1.0.26"
|
||||
},
|
||||
"time": "2023-08-16T17:39:36+00:00"
|
||||
"time": "2023-08-18T03:05:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "http-interop/http-factory-guzzle",
|
||||
@ -7664,6 +7766,62 @@
|
||||
},
|
||||
"time": "2020-07-07T09:29:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-jsonpointer/php-jsonpointer",
|
||||
"version": "v3.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/raphaelstolt/php-jsonpointer.git",
|
||||
"reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/raphaelstolt/php-jsonpointer/zipball/4428f86c6f23846e9faa5a420c4ef14e485b3afb",
|
||||
"reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^1.11",
|
||||
"phpunit/phpunit": "4.6.*"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Rs\\Json": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Raphael Stolt",
|
||||
"email": "raphael.stolt@gmail.com",
|
||||
"homepage": "http://raphaelstolt.blogspot.com/"
|
||||
}
|
||||
],
|
||||
"description": "Implementation of JSON Pointer (http://tools.ietf.org/html/rfc6901)",
|
||||
"homepage": "https://github.com/raphaelstolt/php-jsonpointer",
|
||||
"keywords": [
|
||||
"json",
|
||||
"json pointer",
|
||||
"json traversal"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/raphaelstolt/php-jsonpointer/issues",
|
||||
"source": "https://github.com/raphaelstolt/php-jsonpointer/tree/master"
|
||||
},
|
||||
"time": "2016-08-29T08:51:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-common",
|
||||
"version": "2.2.0",
|
||||
@ -10037,29 +10195,28 @@
|
||||
},
|
||||
{
|
||||
"name": "square/square",
|
||||
"version": "13.0.0.20210721",
|
||||
"version": "30.0.0.20230816",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/square/square-php-sdk.git",
|
||||
"reference": "03d90445854cd3b500f75061a9c63956799b8ecf"
|
||||
"reference": "fedfea8b6c6f16b6a90ef0d629743ae9ae25e13d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/square/square-php-sdk/zipball/03d90445854cd3b500f75061a9c63956799b8ecf",
|
||||
"reference": "03d90445854cd3b500f75061a9c63956799b8ecf",
|
||||
"url": "https://api.github.com/repos/square/square-php-sdk/zipball/fedfea8b6c6f16b6a90ef0d629743ae9ae25e13d",
|
||||
"reference": "fedfea8b6c6f16b6a90ef0d629743ae9ae25e13d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"apimatic/jsonmapper": "^2.0.2",
|
||||
"apimatic/unirest-php": "^2.0",
|
||||
"ext-curl": "*",
|
||||
"apimatic/core": "~0.3.0",
|
||||
"apimatic/core-interfaces": "~0.1.0",
|
||||
"apimatic/unirest-php": "^4.0.0",
|
||||
"ext-json": "*",
|
||||
"ext-mbstring": "*",
|
||||
"php": ">=7.2"
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phan/phan": "^3.0",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5",
|
||||
"phan/phan": "5.4.2",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
@ -10088,9 +10245,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/square/square-php-sdk/issues",
|
||||
"source": "https://github.com/square/square-php-sdk/tree/13.0.0.20210721"
|
||||
"source": "https://github.com/square/square-php-sdk/tree/30.0.0.20230816"
|
||||
},
|
||||
"time": "2021-07-21T06:43:15+00:00"
|
||||
"time": "2023-08-15T21:45:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "stripe/stripe-php",
|
||||
|
@ -25,7 +25,7 @@ class DocumentFactory extends Factory
|
||||
return [
|
||||
'is_default' => true,
|
||||
'is_public' => true,
|
||||
'name' => true,
|
||||
'name' => $this->faker->word().".png",
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ class PaymentLibrariesSeeder extends Seeder
|
||||
['id' => 53, 'name' => 'PagSeguro', 'provider' => 'PagSeguro', 'key' => 'ef498756b54db63c143af0ec433da803', 'fields' => '{"email":"","token":"","sandbox":false}'],
|
||||
['id' => 54, 'name' => 'PAYMILL', 'provider' => 'Paymill', 'key' => 'ca52f618a39367a4c944098ebf977e1c', 'fields' => '{"apiKey":""}'],
|
||||
['id' => 55, 'name' => 'Custom', 'provider' => 'Custom', 'is_offsite' => true, 'sort_order' => 21, 'key' => '54faab2ab6e3223dbe848b1686490baa', 'fields' => '{"name":"","text":""}'],
|
||||
['id' => 57, 'name' => 'Square', 'provider' => 'Square', 'is_offsite' => false, 'sort_order' => 21, 'key' => '65faab2ab6e3223dbe848b1686490baz', 'fields' => '{"accessToken":"","applicationId":"","locationId":"","testMode":false}'],
|
||||
['id' => 57, 'name' => 'Square', 'provider' => 'Square', 'is_offsite' => false, 'sort_order' => 21, 'key' => '65faab2ab6e3223dbe848b1686490baz', 'fields' => '{"accessToken":"","applicationId":"","locationId":"","signatureKey":"","testMode":false}'],
|
||||
['id' => 58, 'name' => 'Razorpay', 'provider' => 'Razorpay', 'is_offsite' => false, 'sort_order' => 21, 'key' => 'hxd6gwg3ekb9tb3v9lptgx1mqyg69zu9', 'fields' => '{"apiKey":"","apiSecret":""}'],
|
||||
['id' => 59, 'name' => 'Forte', 'provider' => 'Forte', 'is_offsite' => false, 'sort_order' => 21, 'key' => 'kivcvjexxvdiyqtj3mju5d6yhpeht2xs', 'fields' => '{"testMode":false,"apiLoginId":"","apiAccessId":"","secureKey":"","authOrganizationId":"","organizationId":"","locationId":""}'],
|
||||
['id' => 60, 'name' => 'PayPal REST', 'provider' => 'PayPal_Rest', 'key' => '80af24a6a691230bbec33e930ab40665', 'fields' => '{"clientId":"","secret":"","signature":"","testMode":false}'],
|
||||
|
@ -2378,6 +2378,9 @@ $LANG = array(
|
||||
|
||||
'currency_cuban_peso' => 'بيزو كوبي',
|
||||
'currency_bz_dollar' => 'دولار BZ',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'نأمل أن تستمتع باستخدام التطبيق.<br/> إذا كنت تفكر في :link فإننا نقدر ذلك كثيرًا!',
|
||||
'writing_a_review' => 'كتابة مراجعة',
|
||||
@ -3313,9 +3316,9 @@ $LANG = array(
|
||||
'freq_three_years' => 'ثلاث سنوات',
|
||||
'military_time_help' => 'عرض 24 ساعة',
|
||||
'click_here_capital' => 'انقر هنا',
|
||||
'marked_invoice_as_paid' => 'تم تعيين الفاتورة كمرسلة',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'نجح وضع علامة على الفواتير على أنها مرسلة',
|
||||
'marked_invoices_as_paid' => 'تم تعيين الفواتير كمرسلة',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'فشل النظام في إرسال الفاتورة بالبريد الإلكتروني :invoice',
|
||||
'custom_value3' => 'القيمة المخصصة 3',
|
||||
'custom_value4' => 'القيمة المخصصة 4',
|
||||
@ -4926,7 +4929,7 @@ $LANG = array(
|
||||
'sync_from' => 'مزامنة من',
|
||||
'gateway_payment_text' => 'الفواتير: :invoices لـ :amount للعميل :client',
|
||||
'gateway_payment_text_no_invoice' => 'الدفع بدون فاتورة للمبلغ :amount للعميل :client',
|
||||
'click_to_variables' => 'العميل هنا لمشاهدة جميع المتغيرات.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'سافر على متن سفينة لِـ',
|
||||
'stripe_direct_debit_details' => 'يرجى التحويل إلى الحساب المصرفي المحدد أعلاه.',
|
||||
'branch_name' => 'اسم الفرع',
|
||||
@ -5088,8 +5091,49 @@ $LANG = array(
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2405,6 +2405,9 @@ $LANG = array(
|
||||
|
||||
'currency_cuban_peso' => 'Кубински песо',
|
||||
'currency_bz_dollar' => 'BZ долар',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Надяваме се, че използвате приложението с удоволствие.<br/>Ще се радваме, ако решите да :link!',
|
||||
'writing_a_review' => 'напишете оценка',
|
||||
@ -3340,9 +3343,9 @@ $LANG = array(
|
||||
'freq_three_years' => 'Три години',
|
||||
'military_time_help' => '24-часов формат',
|
||||
'click_here_capital' => 'Натиснете тук',
|
||||
'marked_invoice_as_paid' => 'Успешно отбелязана фактура като изпратена',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Фактурите са маркирани като изпратени',
|
||||
'marked_invoices_as_paid' => 'Успешно маркирани фактури като изпратени ',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Системата не успя да изпрати фактура :invoice по e-mail',
|
||||
'custom_value3' => 'Персонифицирана стойност 3',
|
||||
'custom_value4' => 'Персонифицирана стойност 4',
|
||||
@ -4953,7 +4956,7 @@ $LANG = array(
|
||||
'sync_from' => 'Sync From',
|
||||
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
|
||||
'click_to_variables' => 'Client here to see all variables.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Ship to',
|
||||
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
|
||||
'branch_name' => 'Branch Name',
|
||||
@ -5115,8 +5118,49 @@ $LANG = array(
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2404,6 +2404,9 @@ $LANG = array(
|
||||
|
||||
'currency_cuban_peso' => 'Cuban Peso',
|
||||
'currency_bz_dollar' => 'Dòlar BZ',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!',
|
||||
'writing_a_review' => 'escriu una ressenya',
|
||||
@ -3339,9 +3342,9 @@ $LANG = array(
|
||||
'freq_three_years' => 'Three Years',
|
||||
'military_time_help' => '24 Hour Display',
|
||||
'click_here_capital' => 'Click here',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as sent',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Successfully marked invoices as sent',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as sent',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'System failed to email invoice :invoice',
|
||||
'custom_value3' => 'Custom Value 3',
|
||||
'custom_value4' => 'Custom Value 4',
|
||||
@ -4952,7 +4955,7 @@ $LANG = array(
|
||||
'sync_from' => 'Sincronitza de',
|
||||
'gateway_payment_text' => 'Factures: :invoices de :amount per al client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Pagament sense factura de :amount per al client :client',
|
||||
'click_to_variables' => 'Pitgeu aquí per veure totes les variables.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Envia a',
|
||||
'stripe_direct_debit_details' => 'Transferiu al compte bancari especificat a dalt, si us plau.',
|
||||
'branch_name' => 'Nom de l\'oficina',
|
||||
@ -5114,8 +5117,49 @@ $LANG = array(
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2405,6 +2405,9 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
|
||||
'currency_cuban_peso' => 'Kubanischer Peso',
|
||||
'currency_bz_dollar' => 'Belize-Dollar',
|
||||
'currency_libyan_dinar' => 'Libyscher Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Wir hoffen, dass Ihnen die App gefällt. Wenn Sie :link in Betracht ziehen würden, wären wir Ihnen sehr dankbar!',
|
||||
'writing_a_review' => 'Schreiben einer Rezension',
|
||||
@ -3340,9 +3343,9 @@ Sobald Sie die Beträge erhalten haben, kommen Sie bitte wieder zurück zu diese
|
||||
'freq_three_years' => 'Drei Jahre',
|
||||
'military_time_help' => '24-Stunden-Anzeige',
|
||||
'click_here_capital' => 'Klicke hier',
|
||||
'marked_invoice_as_paid' => 'Die Rechnung wurde erfolgreich als "versendet" markiert',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Erfolgreich Rechnungen als versendet markiert',
|
||||
'marked_invoices_as_paid' => 'Die Rechnung wurde erfolgreich als "versendet" markiert',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Das System konnte die Rechnung :invoice nicht per E-Mail versenden',
|
||||
'custom_value3' => 'Benutzerdefinierter Wert 3',
|
||||
'custom_value4' => 'Benutzerdefinierter Wert 4',
|
||||
@ -3708,7 +3711,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'invoice_task_timelog' => 'Aufgaben Zeiterfassung in Rechnung stellen',
|
||||
'invoice_task_timelog_help' => 'Zeitdetails in der Rechnungsposition ausweisen',
|
||||
'auto_start_tasks_help' => 'Beginne Aufgabe vor dem Speichern',
|
||||
'configure_statuses' => 'Stati bearbeiten',
|
||||
'configure_statuses' => 'Status bearbeiten',
|
||||
'task_settings' => 'Aufgaben-Einstellungen',
|
||||
'configure_categories' => 'Kategorien bearbeiten',
|
||||
'edit_expense_category' => 'Ausgaben Kategorie bearbeiten',
|
||||
@ -3865,7 +3868,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'notification_credit_viewed' => 'Der folgende Kunde :client hat die Gutschrift :credit über :amount angeschaut.',
|
||||
'reset_password_text' => 'Bitte geben Sie ihre E-Mail-Adresse an, um das Passwort zurücksetzen zu können.',
|
||||
'password_reset' => 'Passwort zurücksetzten',
|
||||
'account_login_text' => 'Welcome! Glad to see you.',
|
||||
'account_login_text' => 'Willkommen! Schön Sie zu sehen.',
|
||||
'request_cancellation' => 'Storno beantragen',
|
||||
'delete_payment_method' => 'Zahlungsmethode löschen',
|
||||
'about_to_delete_payment_method' => 'Diese Zahlungsmethode wird gelöscht.',
|
||||
@ -4954,7 +4957,7 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'sync_from' => 'Synchronisieren von',
|
||||
'gateway_payment_text' => 'Rechnungen: :invoices über :amount für Kunde :client',
|
||||
'gateway_payment_text_no_invoice' => 'Zahlung ohne Rechnung für Kunde :client über :amount',
|
||||
'click_to_variables' => 'Client hier, um alle Variablen zu sehen.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Liefern an',
|
||||
'stripe_direct_debit_details' => 'Bitte überweisen Sie den Betrag an obenstehende Bankverbindung',
|
||||
'branch_name' => 'Zweigstelle',
|
||||
@ -5121,10 +5124,47 @@ https://invoiceninja.github.io/docs/migration/#troubleshooting',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Steuerdetails',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Dateien hochladen',
|
||||
'download_e_invoice' => 'E-Rechnung herunterladen',
|
||||
'triangular_tax_info' => 'innergemeinschaftliches Dreiecksgeschäft',
|
||||
'intracommunity_tax_info' => 'Steuerfreie innergemeinschaftliche Lieferung',
|
||||
'reverse_tax_info' => 'Steuerschuldnerschaft des
|
||||
|
||||
Leistungsempfängers',
|
||||
'currency_nicaraguan_cordoba' => 'Córdoba Oro',
|
||||
'public' => 'Öffentlich',
|
||||
'private' => 'Privat',
|
||||
'image' => 'Image',
|
||||
'other' => 'Andere',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
|
||||
return $LANG;
|
||||
|
||||
?>
|
@ -2404,6 +2404,9 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
|
||||
'currency_cuban_peso' => 'Cuban Peso',
|
||||
'currency_bz_dollar' => 'BZ Dollar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Ελπίζουμε να απολαμβάνετε τη χρήση της εφαρμογής.<br/> Εάν θα θέλατε να γράψετε μια κριτική :link θα το εκτιμούσαμε ιδιαίτερα!',
|
||||
'writing_a_review' => 'συγγραφή κριτικής',
|
||||
@ -3339,9 +3342,9 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'freq_three_years' => 'Τρία Χρόνια',
|
||||
'military_time_help' => '24ωρη εμφάνιση Ώρας',
|
||||
'click_here_capital' => 'Πατήστε εδώ',
|
||||
'marked_invoice_as_paid' => 'Επιτυχής ορισμός τιμολογίου ως απεσταλμένο',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Επιτυχής ορισμός τιμολογίων ως απεσταλμένα',
|
||||
'marked_invoices_as_paid' => 'Επιτυχής ορισμός τιμολογίων ως απεσταλμένα',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Το σύστημα απέτυχε να στείλει με email το τιμολόγιο :invoice',
|
||||
'custom_value3' => 'Προσαρμοσμένη Τιμή 3',
|
||||
'custom_value4' => 'Προσαρμοσμένη Τιμή 4',
|
||||
@ -4952,7 +4955,7 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'sync_from' => 'Sync From',
|
||||
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Πληρωμή χωρίς τιμολόγιο για ποσό : amount για πελάτη :client',
|
||||
'click_to_variables' => 'Κάντε κλικ εδώ για να δείτε όλες τις μεταβλητές.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Αποστολή προς',
|
||||
'stripe_direct_debit_details' => 'Μεταφέρετε στον παραπάνω τραπεζικό λογαριασμό.',
|
||||
'branch_name' => 'Ονομασία υποκαταστήματος',
|
||||
@ -5114,8 +5117,49 @@ email που είναι συνδεδεμένη με το λογαριασμό σ
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -753,7 +753,7 @@ $LANG = array(
|
||||
'activity_7' => ':contact vió la factura :invoice del cliente :client',
|
||||
'activity_8' => ':user archivó la factura :invoice',
|
||||
'activity_9' => ':user eliminó la factura :invoice',
|
||||
'activity_10' => ':user entered payment :payment for :payment_amount on invoice :invoice for :client',
|
||||
'activity_10' => ':user ingresó el pago :payment para :payment _cantidad en la factura :invoice para :client',
|
||||
'activity_11' => ':user actualizó el pago :payment',
|
||||
'activity_12' => ':user archivó el pago :payment',
|
||||
'activity_13' => ':user eliminó el pago :payment',
|
||||
@ -1998,7 +1998,7 @@ $LANG = array(
|
||||
'current_quarter' => 'Trimerstre Actual',
|
||||
'last_quarter' => 'Último Trimestre',
|
||||
'last_year' => 'Año Anterior',
|
||||
'all_time' => 'All Time',
|
||||
'all_time' => 'Todo el tiempo',
|
||||
'custom_range' => 'Rango Personalizado',
|
||||
'url' => 'URL',
|
||||
'debug' => 'Depurar',
|
||||
@ -2258,7 +2258,7 @@ $LANG = array(
|
||||
'restore_recurring_expense' => 'Restaurar Gasto Recurrente',
|
||||
'restored_recurring_expense' => 'Gasto recurrente restaurado con éxito',
|
||||
'delete_recurring_expense' => 'Eliminar Gasto Recurrente',
|
||||
'deleted_recurring_expense' => 'Successfully deleted recurring expense',
|
||||
'deleted_recurring_expense' => 'Gasto recurrente eliminado con éxito',
|
||||
'view_recurring_expense' => 'Ver Gasto Recurrente',
|
||||
'taxes_and_fees' => 'Impuestos y Tarifas',
|
||||
'import_failed' => 'Importación fallida',
|
||||
@ -2402,6 +2402,9 @@ $LANG = array(
|
||||
|
||||
'currency_cuban_peso' => 'Peso Cubano',
|
||||
'currency_bz_dollar' => 'Dólar BZ',
|
||||
'currency_libyan_dinar' => 'dinar libio',
|
||||
'currency_silver_troy_ounce' => 'Onza troy de plata',
|
||||
'currency_gold_troy_ounce' => 'Onza troy de oro',
|
||||
|
||||
'review_app_help' => 'Esperamos que estés disfrutando de usar la aplicación.<br/>Si consideras :link lo apreciaremos mucho!',
|
||||
'writing_a_review' => 'escribiendo una reseña',
|
||||
@ -2513,8 +2516,8 @@ $LANG = array(
|
||||
'partial_due_date' => 'Fecha de Vencimiento Parcial',
|
||||
'task_fields' => 'Campos de la Tarea',
|
||||
'product_fields_help' => 'Arrastra y suelta los campos para cambiar su orden',
|
||||
'custom_value1' => 'Custom Value 1',
|
||||
'custom_value2' => 'Custom Value 2',
|
||||
'custom_value1' => 'Valor personalizado 1',
|
||||
'custom_value2' => 'Valor personalizado 2',
|
||||
'enable_two_factor' => 'Autenticación de Dos Factores',
|
||||
'enable_two_factor_help' => 'Usa tu teléfono para confirmar tu identidad al ingresar',
|
||||
'two_factor_setup' => 'Configuración de Autenticación de Dos Factores',
|
||||
@ -3337,9 +3340,9 @@ $LANG = array(
|
||||
'freq_three_years' => 'Tres años',
|
||||
'military_time_help' => 'Pantalla de 24 horas',
|
||||
'click_here_capital' => 'haga clic aquí',
|
||||
'marked_invoice_as_paid' => 'Factura marcada correctamente como enviada',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Facturas marcadas correctamente como enviadas',
|
||||
'marked_invoices_as_paid' => 'Facturas marcadas correctamente como enviadas',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'El sistema no envió la factura por correo electrónico :invoice',
|
||||
'custom_value3' => 'Valor personalizado 3',
|
||||
'custom_value4' => 'Valor personalizado 4',
|
||||
@ -3861,7 +3864,7 @@ $LANG = array(
|
||||
'notification_credit_viewed' => 'El siguiente cliente :client vio el Crédito :credit para :amount.',
|
||||
'reset_password_text' => 'Ingrese su correo electrónico para restablecer su contraseña.',
|
||||
'password_reset' => 'Restablecimiento de contraseña',
|
||||
'account_login_text' => 'Welcome! Glad to see you.',
|
||||
'account_login_text' => '¡Bienvenido! Contento de verte.',
|
||||
'request_cancellation' => 'Solicitar una cancelación',
|
||||
'delete_payment_method' => 'Eliminar método de pago',
|
||||
'about_to_delete_payment_method' => 'Está a punto de eliminar el método de pago.',
|
||||
@ -3975,7 +3978,7 @@ $LANG = array(
|
||||
'add_payment_method_first' => 'añadir método de pago',
|
||||
'no_items_selected' => 'No hay elementos seleccionados.',
|
||||
'payment_due' => 'Fecha de pago',
|
||||
'account_balance' => 'Account Balance',
|
||||
'account_balance' => 'Saldo de la cuenta',
|
||||
'thanks' => 'Gracias',
|
||||
'minimum_required_payment' => 'El pago mínimo requerido es :amount',
|
||||
'under_payments_disabled' => 'La empresa no admite pagos inferiores.',
|
||||
@ -4000,7 +4003,7 @@ $LANG = array(
|
||||
'notification_invoice_reminder1_sent_subject' => 'El recordatorio 1 de la factura :invoice se envió a :client',
|
||||
'notification_invoice_reminder2_sent_subject' => 'El recordatorio 2 de la factura :invoice se envió a :client',
|
||||
'notification_invoice_reminder3_sent_subject' => 'El recordatorio 3 de la factura :invoice se envió a :client',
|
||||
'notification_invoice_custom_sent_subject' => 'Custom reminder for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_custom_sent_subject' => 'Se envió un recordatorio personalizado para la factura :invoice a :client',
|
||||
'notification_invoice_reminder_endless_sent_subject' => 'Se envió un recordatorio interminable de la factura :invoice a :client',
|
||||
'assigned_user' => 'Usuario asignado',
|
||||
'setup_steps_notice' => 'Para continuar con el siguiente paso, asegúrese de probar cada sección.',
|
||||
@ -4378,7 +4381,7 @@ $LANG = array(
|
||||
'imported_customers' => 'Comenzó con éxito la importación de clientes',
|
||||
'login_success' => 'Acceso exitoso',
|
||||
'login_failure' => 'Inicio de sesión fallido',
|
||||
'exported_data' => 'Once the file is ready you\'ll receive an email with a download link',
|
||||
'exported_data' => 'Una vez que el archivo esté listo, recibirá un correo electrónico con un enlace de descarga.',
|
||||
'include_deleted_clients' => 'Incluir clientes eliminados',
|
||||
'include_deleted_clients_help' => 'Cargar registros pertenecientes a clientes eliminados',
|
||||
'step_1_sign_in' => 'Paso 1: Iniciar sesión',
|
||||
@ -4467,7 +4470,7 @@ $LANG = array(
|
||||
'activity_123' => ':user gasto recurrente eliminado :recurring_expense',
|
||||
'activity_124' => ':user gasto recurrente restaurado :recurring_expense',
|
||||
'fpx' => "FPX",
|
||||
'to_view_entity_set_password' => 'To view the :entity you need to set a password.',
|
||||
'to_view_entity_set_password' => 'Para ver el :entity necesita establecer una contraseña.',
|
||||
'unsubscribe' => 'Darse de baja',
|
||||
'unsubscribed' => 'dado de baja',
|
||||
'unsubscribed_text' => 'Has sido eliminado de las notificaciones de este documento.',
|
||||
@ -4565,7 +4568,7 @@ $LANG = array(
|
||||
'purchase_order_number' => 'Número de orden de compra',
|
||||
'purchase_order_number_short' => 'Orden de compra #',
|
||||
'inventory_notification_subject' => 'Notificación de umbral de inventario para el producto: :product',
|
||||
'inventory_notification_body' => 'Threshold of :amount has been reached for product: :product',
|
||||
'inventory_notification_body' => 'Se alcanzó el umbral de :amount para el producto: :product',
|
||||
'activity_130' => ':user orden de compra creada :purchase_order',
|
||||
'activity_131' => ':user orden de compra actualizada :purchase_order',
|
||||
'activity_132' => ':user orden de compra archivada :purchase_order',
|
||||
@ -4597,7 +4600,7 @@ $LANG = array(
|
||||
'vendor_document_upload' => 'Carga de documentos de proveedores',
|
||||
'vendor_document_upload_help' => 'Permitir que los proveedores carguen documentos',
|
||||
'are_you_enjoying_the_app' => '¿Estás disfrutando de la aplicación?',
|
||||
'yes_its_great' => 'Yes, it\'s great!',
|
||||
'yes_its_great' => '¡Sí, es genial!',
|
||||
'not_so_much' => 'No tanto',
|
||||
'would_you_rate_it' => '¡Me alegro de oirlo! ¿Te gustaría calificarlo?',
|
||||
'would_you_tell_us_more' => '¡Lamento escucharlo! ¿Te gustaría contarnos más?',
|
||||
@ -4906,7 +4909,7 @@ $LANG = array(
|
||||
'all_clients' => 'Todos los clientes',
|
||||
'show_aging_table' => 'Mostrar tabla de antigüedad',
|
||||
'show_payments_table' => 'Mostrar tabla de pagos',
|
||||
'only_clients_with_invoices' => 'Only Clients with Invoices',
|
||||
'only_clients_with_invoices' => 'Solo Clientes con Facturas',
|
||||
'email_statement' => 'Estado de cuenta por correo electrónico',
|
||||
'once' => 'Una vez',
|
||||
'schedules' => 'Horarios',
|
||||
@ -4950,7 +4953,7 @@ $LANG = array(
|
||||
'sync_from' => 'sincronizar desde',
|
||||
'gateway_payment_text' => 'Facturas: :invoices para :amount para cliente :client',
|
||||
'gateway_payment_text_no_invoice' => 'Pago sin factura por importe :amount para cliente :client',
|
||||
'click_to_variables' => 'Cliente aquí para ver todas las variables.',
|
||||
'click_to_variables' => 'Haga clic aquí para ver todas las variables.',
|
||||
'ship_to' => 'Envie a',
|
||||
'stripe_direct_debit_details' => 'Por favor transfiera a la cuenta bancaria designada arriba.',
|
||||
'branch_name' => 'Nombre de la sucursal',
|
||||
@ -4970,7 +4973,7 @@ $LANG = array(
|
||||
'payment_type_Interac E Transfer' => 'Transferencia Interac E',
|
||||
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
|
||||
'xinvoice_no_buyers_reference' => "No se da referencia del comprador",
|
||||
'xinvoice_online_payment' => 'The invoice needs to be paid online via the provided link',
|
||||
'xinvoice_online_payment' => 'La factura debe pagarse en línea a través del enlace provisto',
|
||||
'pre_payment' => 'Prepago',
|
||||
'number_of_payments' => 'numero de pagos',
|
||||
'number_of_payments_helper' => 'El número de veces que se realizará este pago.',
|
||||
@ -5044,76 +5047,117 @@ $LANG = array(
|
||||
'date_picker_hint' => 'Utilice +days para establecer la fecha en el futuro',
|
||||
'app_help_link' => 'Más información',
|
||||
'here' => 'aquí',
|
||||
'industry_Restaurant & Catering' => 'Restaurant & Catering',
|
||||
'show_credits_table' => 'Show Credits Table',
|
||||
'manual_payment' => 'Payment Manual',
|
||||
'tax_summary_report' => 'Tax Summary Report',
|
||||
'tax_category' => 'Tax Category',
|
||||
'physical_goods' => 'Physical Goods',
|
||||
'digital_products' => 'Digital Products',
|
||||
'services' => 'Services',
|
||||
'shipping' => 'Shipping',
|
||||
'tax_exempt' => 'Tax Exempt',
|
||||
'late_fee_added_locked_invoice' => 'Late fee for invoice :invoice added on :date',
|
||||
'lang_Khmer' => 'Khmer',
|
||||
'routing_id' => 'Routing ID',
|
||||
'enable_e_invoice' => 'Enable E-Invoice',
|
||||
'e_invoice_type' => 'E-Invoice Type',
|
||||
'reduced_tax' => 'Reduced Tax',
|
||||
'override_tax' => 'Override Tax',
|
||||
'zero_rated' => 'Zero Rated',
|
||||
'reverse_tax' => 'Reverse Tax',
|
||||
'updated_tax_category' => 'Successfully updated the tax category',
|
||||
'updated_tax_categories' => 'Successfully updated the tax categories',
|
||||
'set_tax_category' => 'Set Tax Category',
|
||||
'payment_manual' => 'Payment Manual',
|
||||
'expense_payment_type' => 'Expense Payment Type',
|
||||
'payment_type_Cash App' => 'Cash App',
|
||||
'rename' => 'Rename',
|
||||
'renamed_document' => 'Successfully renamed document',
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
'react_notification_link' => 'React Notification Links',
|
||||
'react_notification_link_help' => 'Admin emails will contain links to the react application',
|
||||
'show_task_billable' => 'Show Task Billable',
|
||||
'credit_item' => 'Credit Item',
|
||||
'drop_file_here' => 'Drop file here',
|
||||
'files' => 'Files',
|
||||
'camera' => 'Camera',
|
||||
'gallery' => 'Gallery',
|
||||
'project_location' => 'Project Location',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
'lang_Hungarian' => 'Hungarian',
|
||||
'use_mobile_to_manage_plan' => 'Use your phone subscription settings to manage your plan',
|
||||
'item_tax3' => 'Item Tax3',
|
||||
'item_tax_rate1' => 'Item Tax Rate 1',
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'industry_Restaurant & Catering' => 'Restaurante y Catering',
|
||||
'show_credits_table' => 'Mostrar tabla de créditos',
|
||||
'manual_payment' => 'Manual de pago',
|
||||
'tax_summary_report' => 'Informe resumido de impuestos',
|
||||
'tax_category' => 'Categoría de impuestos',
|
||||
'physical_goods' => 'Bienes físicos',
|
||||
'digital_products' => 'Productos digitales',
|
||||
'services' => 'Servicios',
|
||||
'shipping' => 'Envío',
|
||||
'tax_exempt' => 'Exento de Impuestos',
|
||||
'late_fee_added_locked_invoice' => 'Cargo por pago atrasado de la factura :invoice agregado en :date',
|
||||
'lang_Khmer' => 'jemer',
|
||||
'routing_id' => 'Id. de enrutamiento',
|
||||
'enable_e_invoice' => 'Habilitar factura electrónica',
|
||||
'e_invoice_type' => 'Tipo de factura electrónica',
|
||||
'reduced_tax' => 'Impuesto reducido',
|
||||
'override_tax' => 'Anular impuestos',
|
||||
'zero_rated' => 'Clasificación cero',
|
||||
'reverse_tax' => 'Impuesto Inverso',
|
||||
'updated_tax_category' => 'Se actualizó con éxito la categoría de impuestos',
|
||||
'updated_tax_categories' => 'Actualizadas con éxito las categorías de impuestos',
|
||||
'set_tax_category' => 'Establecer categoría de impuestos',
|
||||
'payment_manual' => 'Manual de pago',
|
||||
'expense_payment_type' => 'Tipo de pago de gastos',
|
||||
'payment_type_Cash App' => 'Aplicación de efectivo',
|
||||
'rename' => 'Rebautizar',
|
||||
'renamed_document' => 'Documento renombrado con éxito',
|
||||
'e_invoice' => 'Factura electrónica',
|
||||
'light_dark_mode' => 'Modo claro/oscuro',
|
||||
'activities' => 'Actividades',
|
||||
'recent_transactions' => "Estas son las transacciones más recientes de su empresa:",
|
||||
'country_Palestine' => "Palestina",
|
||||
'country_Taiwan' => 'Taiwán',
|
||||
'duties' => 'Deberes',
|
||||
'order_number' => 'Número de orden',
|
||||
'order_id' => 'Orden',
|
||||
'total_invoices_outstanding' => 'Total de facturas pendientes',
|
||||
'recent_activity' => 'Actividad reciente',
|
||||
'enable_auto_bill' => 'Habilitar la facturación automática',
|
||||
'email_count_invoices' => 'Correo electrónico :count facturas',
|
||||
'invoice_task_item_description' => 'Descripción del elemento de la tarea de la factura',
|
||||
'invoice_task_item_description_help' => 'Agregar la descripción del artículo a las líneas de la factura',
|
||||
'next_send_time' => 'Próxima hora de envío',
|
||||
'uploaded_certificate' => 'Certificado subido correctamente',
|
||||
'certificate_set' => 'conjunto de certificados',
|
||||
'certificate_not_set' => 'Certificado no establecido',
|
||||
'passphrase_set' => 'Conjunto de frase de contraseña',
|
||||
'passphrase_not_set' => 'Frase de contraseña no establecida',
|
||||
'upload_certificate' => 'Subir certificado',
|
||||
'certificate_passphrase' => 'Frase de contraseña del certificado',
|
||||
'valid_vat_number' => 'Número de IVA válido',
|
||||
'react_notification_link' => 'Reaccionar enlaces de notificación',
|
||||
'react_notification_link_help' => 'Los correos electrónicos de administración contendrán enlaces a la aplicación de reacción',
|
||||
'show_task_billable' => 'Mostrar tarea facturable',
|
||||
'credit_item' => 'Artículo de crédito',
|
||||
'drop_file_here' => 'Suelta el archivo aquí',
|
||||
'files' => 'archivos',
|
||||
'camera' => 'Cámara',
|
||||
'gallery' => 'Galería',
|
||||
'project_location' => 'Localización del proyecto',
|
||||
'add_gateway_help_message' => 'Agregue una pasarela de pago (es decir, Stripe, WePay o PayPal) para aceptar pagos en línea',
|
||||
'lang_Hungarian' => 'húngaro',
|
||||
'use_mobile_to_manage_plan' => 'Use la configuración de suscripción de su teléfono para administrar su plan',
|
||||
'item_tax3' => 'Artículo Impuesto3',
|
||||
'item_tax_rate1' => 'Artículo Tasa de impuesto 1',
|
||||
'item_tax_rate2' => 'Artículo Tasa de impuesto 2',
|
||||
'item_tax_rate3' => 'Artículo Tasa de impuestos 3',
|
||||
'buy_price' => 'Precio de compra',
|
||||
'country_Macedonia' => 'macedonia',
|
||||
'admin_initiated_payments' => 'Pagos iniciados por el administrador',
|
||||
'admin_initiated_payments_help' => 'Soporte para ingresar un pago en el portal de administración sin factura',
|
||||
'paid_date' => 'Fecha de pago',
|
||||
'downloaded_entities' => 'Se enviará un correo electrónico con los PDF',
|
||||
'lang_French - Swiss' => 'Francés - Suizo',
|
||||
'currency_swazi_lilangeni' => 'Lilangeni suazi',
|
||||
'income' => 'Ingreso',
|
||||
'amount_received_help' => 'Ingrese un valor aquí si el monto total recibido fue MÁS que el monto de la factura, o al registrar un pago sin facturas. De lo contrario, este campo debe dejarse en blanco.',
|
||||
'vendor_phone' => 'Teléfono del proveedor',
|
||||
'mercado_pago' => 'mercado pago',
|
||||
'mybank' => 'Mi banco',
|
||||
'paypal_paylater' => 'Paga en 4',
|
||||
'paid_date' => 'Fecha de pago',
|
||||
'district' => 'Distrito',
|
||||
'region' => 'Región',
|
||||
'county' => 'Condado',
|
||||
'tax_details' => 'Detalles de impuestos',
|
||||
'activity_10_online' => ':contact ingresó el pago :payment para la factura :invoice para :client',
|
||||
'activity_10_manual' => ':user ingresó el pago :payment para la factura :invoice para :client',
|
||||
'default_payment_type' => 'Tipo de pago predeterminado',
|
||||
'number_precision' => 'Precisión numérica',
|
||||
'number_precision_help' => 'Controla el número de decimales admitidos en la interfaz',
|
||||
'is_tax_exempt' => 'Exento de Impuestos',
|
||||
'drop_files_here' => 'Suelte archivos aquí',
|
||||
'upload_files' => 'Subir archivos',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2394,6 +2394,9 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
|
||||
|
||||
'currency_cuban_peso' => 'Peso Cubano',
|
||||
'currency_bz_dollar' => 'Dólar BZ',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Esperamos que estés disfrutando con la app. <br/>Si consideras :link ¡te lo agraderemos enormemente!',
|
||||
'writing_a_review' => 'escribir una reseña',
|
||||
@ -3329,9 +3332,9 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
|
||||
'freq_three_years' => 'Tres Años',
|
||||
'military_time_help' => 'Formato de 24 Horas',
|
||||
'click_here_capital' => 'Pulsa aquí',
|
||||
'marked_invoice_as_paid' => 'Factura marcada como enviada correctamente',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Facturas marcadas como enviadas correctamente',
|
||||
'marked_invoices_as_paid' => 'Facturas marcadas como enviadas correctamente',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'El sistema falló al enviar la factura :invoice',
|
||||
'custom_value3' => 'Valor Personalizado 3',
|
||||
'custom_value4' => 'Valor Personalizado 4',
|
||||
@ -4942,7 +4945,7 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
|
||||
'sync_from' => 'sincronizar desde',
|
||||
'gateway_payment_text' => 'Factura: :invoices por importe de :amount de :client',
|
||||
'gateway_payment_text_no_invoice' => 'Pago sin factura por importe :amount del cliente :client',
|
||||
'click_to_variables' => 'Aquí para ver todas las variables del cliente',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Enviar a',
|
||||
'stripe_direct_debit_details' => 'Por favor transfiera a la cuenta bancaria designada arriba.',
|
||||
'branch_name' => 'Nombre de la sucursal',
|
||||
@ -5104,8 +5107,49 @@ Una vez que tenga los montos, vuelva a esta página de métodos de pago y haga c
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2401,6 +2401,9 @@ $LANG = array(
|
||||
|
||||
'currency_cuban_peso' => 'Kuuba peeso',
|
||||
'currency_bz_dollar' => 'BZ Dollar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Loodame, et teile meeldib rakenduse kasutamine.<br/>Kui kaaluksite :link, oleksime selle eest väga tänulikud!',
|
||||
'writing_a_review' => 'arvustuse kirjutamine',
|
||||
@ -3336,9 +3339,9 @@ $LANG = array(
|
||||
'freq_three_years' => 'Kolm aastat',
|
||||
'military_time_help' => '24 Hour Display',
|
||||
'click_here_capital' => 'Kliki siia',
|
||||
'marked_invoice_as_paid' => 'Arve märgiti saadetuks',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Arved märgiti saadetuks',
|
||||
'marked_invoices_as_paid' => 'Arved märgiti saadetuks',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Süsteem ei suutnud arvet :invoice meiliga saata',
|
||||
'custom_value3' => 'Kohandatud väärtus 3',
|
||||
'custom_value4' => 'Kohandatud väärtus 4',
|
||||
@ -4949,7 +4952,7 @@ $LANG = array(
|
||||
'sync_from' => 'Sync From',
|
||||
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
|
||||
'click_to_variables' => 'Client here to see all variables.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Ship to',
|
||||
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
|
||||
'branch_name' => 'Branch Name',
|
||||
@ -5111,8 +5114,49 @@ $LANG = array(
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2404,6 +2404,9 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
|
||||
|
||||
'currency_cuban_peso' => 'Cuban Peso',
|
||||
'currency_bz_dollar' => 'BZ Dollar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'We hope you\'re enjoying using app.<br/>If you\'d consider :link we\'d greatly appreciate it!',
|
||||
'writing_a_review' => 'writing review',
|
||||
@ -3339,9 +3342,9 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
|
||||
'freq_three_years' => '3 vuotta',
|
||||
'military_time_help' => 'Näytä 24 tunnin aikamuoto',
|
||||
'click_here_capital' => 'Klikkaa tästä',
|
||||
'marked_invoice_as_paid' => 'Lasku merkittiin lähetetyksi onnistuneesti',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Laskut merkittiin lähetetyksi onnistuneesti',
|
||||
'marked_invoices_as_paid' => 'Laskut merkittiin lähetetyksi onnistuneesti',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Järjestelmä epäonnistui lähettämään sähköpostilaskun :invoice',
|
||||
'custom_value3' => 'Muokattu arvo 3',
|
||||
'custom_value4' => 'Muokattu arvo 4',
|
||||
@ -4952,7 +4955,7 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
|
||||
'sync_from' => 'Sync From',
|
||||
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
|
||||
'click_to_variables' => 'Client here to see all variables.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Ship to',
|
||||
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
|
||||
'branch_name' => 'Branch Name',
|
||||
@ -5114,8 +5117,49 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -499,7 +499,7 @@ $LANG = array(
|
||||
'payment_type_bitcoin' => 'Bitcoin',
|
||||
'payment_type_gocardless' => 'GoCardless',
|
||||
'knowledge_base' => 'Base de connaissances',
|
||||
'partial' => 'Partiel/dépôt',
|
||||
'partial' => 'Acompte',
|
||||
'partial_remaining' => ':partial de :balance',
|
||||
'more_fields' => 'Plus de champs',
|
||||
'less_fields' => 'Moins de champs',
|
||||
@ -748,7 +748,7 @@ $LANG = array(
|
||||
'activity_7' => ':contact a vu la facture :invoice pour :client',
|
||||
'activity_8' => ':user a archivé la facture :invoice',
|
||||
'activity_9' => ':user a supprimé la facture :invoice',
|
||||
'activity_10' => ':user entered payment :payment for :payment_amount on invoice :invoice for :client',
|
||||
'activity_10' => ':user a saisi le paiement :payment pour :payment _montant sur la facture :invoice pour :client',
|
||||
'activity_11' => ':user a mis à jour le moyen de paiement :payment',
|
||||
'activity_12' => ':user a archivé le moyen de paiement :payment',
|
||||
'activity_13' => ':user a supprimé le moyen de paiement :payment',
|
||||
@ -1083,7 +1083,7 @@ $LANG = array(
|
||||
'user_create_all' => 'Créer des clients, des factures, etc.',
|
||||
'user_view_all' => 'Voir tous les clients, les factures, etc.',
|
||||
'user_edit_all' => 'Modifier tous les clients, les factures, etc.',
|
||||
'partial_due' => 'Solde partiel',
|
||||
'partial_due' => 'Acompte à verser',
|
||||
'restore_vendor' => 'Restaurer le fournisseur',
|
||||
'restored_vendor' => 'Fournisseur restauré avec succès',
|
||||
'restored_expense' => 'Dépense restaurée avec succès',
|
||||
@ -1327,7 +1327,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'finish_setup' => 'Terminer la configuration',
|
||||
'created_wepay_confirmation_required' => 'Veuillez vérifier votre courriel et confirmer votre adresse courriel avec WePay.',
|
||||
'switch_to_wepay' => 'Changer pour WePay',
|
||||
'switch' => 'Changer',
|
||||
'switch' => 'Commutateur',
|
||||
'restore_account_gateway' => 'Rétablir la passerelle de paiement',
|
||||
'restored_account_gateway' => 'La passerelle de paiement a été rétablie',
|
||||
'united_states' => 'États-Unis',
|
||||
@ -1994,7 +1994,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'current_quarter' => 'Trimestre courant',
|
||||
'last_quarter' => 'Dernier trimestre',
|
||||
'last_year' => 'Dernière année',
|
||||
'all_time' => 'All Time',
|
||||
'all_time' => 'Tout le temps',
|
||||
'custom_range' => 'Intervalle personnalisé',
|
||||
'url' => 'URL',
|
||||
'debug' => 'Débogage',
|
||||
@ -2210,7 +2210,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'expense_link' => 'Dépenses',
|
||||
'resume_task' => 'Relancer la tâche',
|
||||
'resumed_task' => 'Tâche relancée avec succès',
|
||||
'quote_design' => 'Modèle des offres',
|
||||
'quote_design' => 'Modèle des devis',
|
||||
'default_design' => 'Conception standard',
|
||||
'custom_design1' => 'Modèle personnalisé 1',
|
||||
'custom_design2' => 'Modèle personnalisé 2',
|
||||
@ -2254,7 +2254,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'restore_recurring_expense' => 'Restaurer la dépense récurrente',
|
||||
'restored_recurring_expense' => 'Dépense récurrente restaurée avec succès',
|
||||
'delete_recurring_expense' => 'Supprimer la dépense récurrente',
|
||||
'deleted_recurring_expense' => 'Successfully deleted recurring expense',
|
||||
'deleted_recurring_expense' => 'La dépense récurrente a été supprimée',
|
||||
'view_recurring_expense' => 'Voir la dépense récurrente',
|
||||
'taxes_and_fees' => 'Taxes et frais',
|
||||
'import_failed' => 'L\'importation a échoué',
|
||||
@ -2398,6 +2398,9 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
|
||||
'currency_cuban_peso' => 'Peso colombien',
|
||||
'currency_bz_dollar' => 'Dollar BZ',
|
||||
'currency_libyan_dinar' => 'Dinar libyen',
|
||||
'currency_silver_troy_ounce' => 'Once troy d'argent',
|
||||
'currency_gold_troy_ounce' => 'Once troy d'or',
|
||||
|
||||
'review_app_help' => 'Nous espérons que votre utilisation de cette application vous est agréable.<br/>Un commentaire de votre part serait grandement apprécié!',
|
||||
'writing_a_review' => 'écrire un commentaire',
|
||||
@ -2509,8 +2512,8 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'partial_due_date' => 'Paiement partiel',
|
||||
'task_fields' => 'Champs de tâche',
|
||||
'product_fields_help' => 'Glissez et déposez les champs pour changer leur ordre',
|
||||
'custom_value1' => 'Custom Value 1',
|
||||
'custom_value2' => 'Custom Value 2',
|
||||
'custom_value1' => 'Valeur personnalisée 1',
|
||||
'custom_value2' => 'Valeur personnalisée 2',
|
||||
'enable_two_factor' => 'Authentification à 2 facteurs',
|
||||
'enable_two_factor_help' => 'Utilisez votre téléphone pour confirmer votre identité lorsque vous vous connectez',
|
||||
'two_factor_setup' => 'Configuration à deux facteurs',
|
||||
@ -2530,7 +2533,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'converted_amount' => 'Montant converti',
|
||||
'default' => 'Par défaut',
|
||||
'shipping_address' => 'Adresse de Livraison',
|
||||
'bllling_address' => 'Adresse de Facturation',
|
||||
'bllling_address' => 'Adresse de facturation',
|
||||
'billing_address1' => 'Rue',
|
||||
'billing_address2' => 'Appt/Bâtiment',
|
||||
'billing_city' => 'Ville',
|
||||
@ -2732,7 +2735,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'upgrade_to_upload_images' => 'Mettre à niveau vers le plan entreprise pour envoyer des images',
|
||||
'delete_image' => 'Supprimer l\'image',
|
||||
'delete_image_help' => 'Attention : supprimer l\'image la retirera de toutes les propositions.',
|
||||
'amount_variable_help' => 'Note: le champ $amount de la facture utilisera le champ partiel/dépôt. Il utilisera le solde de la facture, si spécifié autrement.',
|
||||
'amount_variable_help' => 'Note: le champ $amount de la facture utilisera le champ d\'acompte. Il utilisera le solde de la facture, si spécifié autrement.',
|
||||
'taxes_are_included_help' => 'Note : Les taxes incluses ont été activées.',
|
||||
'taxes_are_not_included_help' => 'Note : Les taxes incluses ne sont pas activées.',
|
||||
'change_requires_purge' => 'Modifier ce paramètre requière de :link les données du compte.',
|
||||
@ -2858,7 +2861,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'ok' => 'Ok',
|
||||
'email_is_invalid' => 'L\'adresse de courriel n\'est pas correcte',
|
||||
'items' => 'Articles ',
|
||||
'partial_deposit' => 'Depot Partial ',
|
||||
'partial_deposit' => 'Acompte',
|
||||
'add_item' => 'Ajouter Article ',
|
||||
'total_amount' => 'Montant Total ',
|
||||
'pdf' => 'Fichier PDF',
|
||||
@ -3136,7 +3139,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'credit_field' => 'Champ de Crédit',
|
||||
'payment_field' => 'Champ de Paiement',
|
||||
'group_field' => 'Champ de Groupe',
|
||||
'number_counter' => 'Compteur de nombre',
|
||||
'number_counter' => 'Avancement du compteur',
|
||||
'number_pattern' => 'Modèle de numéro',
|
||||
'custom_javascript' => 'JavaScript personnalisé',
|
||||
'portal_mode' => 'Mode portail',
|
||||
@ -3178,7 +3181,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'filtered_by_group' => 'Filtrer par groupe',
|
||||
'filtered_by_invoice' => 'Filtré par Facture',
|
||||
'filtered_by_client' => 'Filtré par Client',
|
||||
'filtered_by_vendor' => 'Filtré par Vendeur',
|
||||
'filtered_by_vendor' => 'Filtré par fournisseur',
|
||||
'group_settings' => 'Paramètres de groupe',
|
||||
'groups' => 'Groupes',
|
||||
'new_group' => 'Nouveau Groupe',
|
||||
@ -3333,9 +3336,9 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'freq_three_years' => 'Trois ans',
|
||||
'military_time_help' => 'Affichage sur 24h',
|
||||
'click_here_capital' => 'Cliquer ici',
|
||||
'marked_invoice_as_paid' => 'Facture marquée comme envoyée',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Les factures ont été marquées envoyées',
|
||||
'marked_invoices_as_paid' => 'Factures marquées comme envoyées',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'La facture :invoice n\'a pu être envoyée',
|
||||
'custom_value3' => 'Valeur personnalisée 3',
|
||||
'custom_value4' => 'Valeur personnalisée 4',
|
||||
@ -3618,7 +3621,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'search_invoice' => 'Recherche de 1 facture',
|
||||
'search_client' => 'Recherche de 1 client',
|
||||
'search_product' => 'Recherche de 1 produit',
|
||||
'search_quote' => 'Recherche de 1 soumission',
|
||||
'search_quote' => 'Rechercher un devis',
|
||||
'search_credit' => 'Recherche de 1 crédit',
|
||||
'search_vendor' => 'Recherche de 1 fournisseurs',
|
||||
'search_user' => 'Recherche de 1 utilisateur',
|
||||
@ -3678,7 +3681,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'allow_over_payment' => 'Accepter Sur-paiement',
|
||||
'allow_over_payment_help' => 'Accepter le paiement supplémentaire pour pourboire',
|
||||
'allow_under_payment' => 'Accepter Sous-paiement',
|
||||
'allow_under_payment_help' => 'Supporter le paiement au minimum du montant partiel/dépôt',
|
||||
'allow_under_payment_help' => 'Supporter le paiement au minimum du montant de l\'acompte',
|
||||
'test_mode' => 'Mode test',
|
||||
'calculated_rate' => 'Taux Calculé',
|
||||
'default_task_rate' => 'Taux par défaut de la tâche',
|
||||
@ -3803,7 +3806,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'restored_clients' => 'Les :value clients ont été restaurés avec succès',
|
||||
'restored_invoices' => 'Restauration réussie :value des factures',
|
||||
'restored_payments' => 'Les :value paiements ont été restaurés avec succès',
|
||||
'restored_quotes' => 'Les :value soumissions ont été restaurées avec succès',
|
||||
'restored_quotes' => 'Les :value devis ont été restaurés avec succès',
|
||||
'update_app' => 'Mettre à jour l\'App',
|
||||
'started_import' => 'L\'importation a démarré avec succès',
|
||||
'duplicate_column_mapping' => 'Dupliquer le mappage de colonnes',
|
||||
@ -3857,7 +3860,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'notification_credit_viewed' => 'Le client suivant :client consulté Crédit :credit pour :amount.',
|
||||
'reset_password_text' => 'Entrez votre e-mail pour réinitialiser votre mot de passe.',
|
||||
'password_reset' => 'Réinitialiser le mot de passe',
|
||||
'account_login_text' => 'Welcome! Glad to see you.',
|
||||
'account_login_text' => 'Bienvenue ! Content de vous voir.',
|
||||
'request_cancellation' => 'Demande de résiliation',
|
||||
'delete_payment_method' => 'Supprimer la méthode de paiement',
|
||||
'about_to_delete_payment_method' => 'Vous allez supprimer cette méthode de paiement',
|
||||
@ -3971,7 +3974,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'add_payment_method_first' => 'ajouter un moyen de paiement',
|
||||
'no_items_selected' => 'Aucun élément sélectionné.',
|
||||
'payment_due' => 'Paiement dû',
|
||||
'account_balance' => 'Account Balance',
|
||||
'account_balance' => 'Solde du compte',
|
||||
'thanks' => 'Merci',
|
||||
'minimum_required_payment' => 'Le paiement minimum requis est :amount',
|
||||
'under_payments_disabled' => 'La société ne prend pas en charge les sous-paiements.',
|
||||
@ -4067,8 +4070,8 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'payment_message_extended' => 'Merci pour votre paiement de :amount pour :invoice',
|
||||
'online_payments_minimum_note' => 'Remarque : Les paiements en ligne ne sont pris en charge que si le montant est supérieur à 1 $ ou l\'équivalent en devise.',
|
||||
'payment_token_not_found' => 'Le jeton de paiement est introuvable. Veuillez essayer de nouveau. Si le problème persiste, essayez avec un autre mode de paiement',
|
||||
'vendor_address1' => 'Rue du vendeur',
|
||||
'vendor_address2' => 'Vendeur Appt/Suite',
|
||||
'vendor_address1' => 'Rue du fournisseur',
|
||||
'vendor_address2' => 'Appt/Bâtiment du fournisseur',
|
||||
'partially_unapplied' => 'Partiellement non appliqué',
|
||||
'select_a_gmail_user' => 'Veuillez sélectionner un utilisateur authentifié avec Gmail',
|
||||
'list_long_press' => 'Appuyez longuement sur la liste',
|
||||
@ -4123,7 +4126,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'disconnected_google' => 'Compte déconnecté avec succès',
|
||||
'delivered' => 'Livré',
|
||||
'spam' => 'Courrier indésirable',
|
||||
'view_docs' => 'Afficher les documents',
|
||||
'view_docs' => 'Afficher la documentation',
|
||||
'enter_phone_to_enable_two_factor' => 'Veuillez fournir un numéro de téléphone mobile pour activer l\'authentification à deux facteurs',
|
||||
'send_sms' => 'Envoyer un SMS',
|
||||
'sms_code' => 'Code SMS',
|
||||
@ -4576,11 +4579,11 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'notification_purchase_order_viewed_subject' => 'Bon de commande :invoice a été consultée par :client',
|
||||
'notification_purchase_order_viewed' => 'Le fournisseur suivant :client a consulté le bon de commande :invoice pour :amount.',
|
||||
'purchase_order_date' => 'Date du bon de commande',
|
||||
'purchase_orders' => 'Acheter en ligne',
|
||||
'purchase_orders' => 'Bons de commande',
|
||||
'purchase_order_number_placeholder' => 'Bon de commande n° :purchase_order',
|
||||
'accepted' => 'Accepté',
|
||||
'activity_137' => ':contact commande d\'achat acceptée :purchase_order',
|
||||
'vendor_information' => 'Informations sur le vendeur',
|
||||
'vendor_information' => 'Informations sur le fournisseur',
|
||||
'notification_purchase_order_accepted_subject' => 'Bon de commande :purchase_order a été accepté par :vendor',
|
||||
'notification_purchase_order_accepted' => 'Le fournisseur suivant :vendor a accepté le bon de commande :purchase_order pour :amount.',
|
||||
'amount_received' => 'Montant reçu',
|
||||
@ -4590,8 +4593,8 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'added_purchase_order_to_inventory' => 'Bon de commande ajouté avec succès à l\'inventaire',
|
||||
'added_purchase_orders_to_inventory' => 'Bons de commande ajoutés avec succès à l\'inventaire',
|
||||
'client_document_upload' => 'Envoi de documents par les clients',
|
||||
'vendor_document_upload' => 'Envoi de documents par les vendeurs',
|
||||
'vendor_document_upload_help' => 'Activer l\'envoi de documents par les vendeurs',
|
||||
'vendor_document_upload' => 'Envoi de documents par les fournisseurs',
|
||||
'vendor_document_upload_help' => 'Activer l\'envoi de documents par les fournisseurs',
|
||||
'are_you_enjoying_the_app' => 'Appréciez-vous l\'application ?',
|
||||
'yes_its_great' => 'Oui, c\'est parfait !',
|
||||
'not_so_much' => 'Pas tellement',
|
||||
@ -4603,7 +4606,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'last_sent_template' => 'Dernier modèle envoyé',
|
||||
'enable_flexible_search' => 'Active la recherche flexible',
|
||||
'enable_flexible_search_help' => 'Correspondance de caractères non contigus, par exemple, "ct" va trouver "cat"',
|
||||
'vendor_details' => 'Détails du vendeur',
|
||||
'vendor_details' => 'Détails du fournisseur',
|
||||
'purchase_order_details' => 'Détails du bon de commande',
|
||||
'qr_iban' => 'QRIBAN',
|
||||
'besr_id' => 'ID BVRB',
|
||||
@ -4735,7 +4738,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'category_type' => 'Type de catégorie',
|
||||
'bank_transaction' => 'Transaction',
|
||||
'bulk_print' => 'Imprimer PDF',
|
||||
'vendor_postal_code' => 'Code postal du vendeur',
|
||||
'vendor_postal_code' => 'Code postal du fournisseur',
|
||||
'preview_location' => 'Emplacement de l\'aperçu',
|
||||
'bottom' => 'En bas',
|
||||
'side' => 'Sur le coté',
|
||||
@ -4852,11 +4855,11 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'backup_restore' => 'Sauvegarde | Restaurer',
|
||||
'export_company' => 'Créer une sauvegarde d\'entreprise',
|
||||
'backup' => 'Sauvegarde',
|
||||
'notification_purchase_order_created_body' => 'Le Purchase_Order suivant :purchase_order a été créé pour le fournisseur :vendor pour :amount.',
|
||||
'notification_purchase_order_created_body' => 'Le bon de commande suivant :purchase_order a été créé pour le fournisseur :vendor pour :amount.',
|
||||
'notification_purchase_order_created_subject' => 'Bon de commande :purchase_order a été créé pour :vendor',
|
||||
'notification_purchase_order_sent_subject' => 'Bon de commande :purchase_order a été envoyé à :vendor',
|
||||
'notification_purchase_order_sent' => 'Le fournisseur suivant :vendor a reçu un bon de commande par e-mail :purchase_order pour :amount.',
|
||||
'subscription_blocked' => 'Ce produit est un article restreint, veuillez contacter le vendeur pour plus d\'informations.',
|
||||
'subscription_blocked' => 'Ce produit est un article restreint, veuillez contacter le fournisseur pour plus d\'informations.',
|
||||
'subscription_blocked_title' => 'Produit non disponible.',
|
||||
'purchase_order_created' => 'Bon de commande créé',
|
||||
'purchase_order_sent' => 'Bon de commande envoyé',
|
||||
@ -4892,7 +4895,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'invalid_design' => 'Le design est invalide, la section :value est manquante',
|
||||
'setup_wizard_logo' => 'Souhaitez-vous télécharger votre logo ?',
|
||||
'installed_version' => 'Version installée',
|
||||
'notify_vendor_when_paid' => 'Avertir le vendeur une fois payé',
|
||||
'notify_vendor_when_paid' => 'Avertir le fournisseur une fois payé',
|
||||
'notify_vendor_when_paid_help' => 'Envoyer un e-mail au fournisseur lorsque la dépense est marquée comme payée',
|
||||
'update_payment' => 'Mettre à jour le paiement',
|
||||
'markup' => 'Balisage',
|
||||
@ -4902,7 +4905,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'all_clients' => 'Tous les clients',
|
||||
'show_aging_table' => 'Afficher la table d\'âge',
|
||||
'show_payments_table' => 'Afficher le tableau des paiements',
|
||||
'only_clients_with_invoices' => 'Only Clients with Invoices',
|
||||
'only_clients_with_invoices' => 'Seuls les clients avec factures',
|
||||
'email_statement' => 'Relevé par e-mail',
|
||||
'once' => 'Une fois',
|
||||
'schedules' => 'Planifications',
|
||||
@ -4946,7 +4949,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'sync_from' => 'Synchroniser depuis',
|
||||
'gateway_payment_text' => 'Factures : :invoices de :amount pour le client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Paiement sans facture pour montant :amount pour client :client',
|
||||
'click_to_variables' => 'Client ici pour voir toutes les variables.',
|
||||
'click_to_variables' => 'Cliquez ici pour voir toutes les variables.',
|
||||
'ship_to' => 'Envoyez à',
|
||||
'stripe_direct_debit_details' => 'Veuillez transférer le montant sur le compte ci-dessus.',
|
||||
'branch_name' => 'Nom de la filiale',
|
||||
@ -5013,7 +5016,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'email_record' => 'Enregistrement par e-mail',
|
||||
'invoice_product_columns' => 'Colonnes de produit de facture',
|
||||
'quote_product_columns' => 'Colonnes de produits de devis',
|
||||
'vendors' => 'Vendeurs',
|
||||
'vendors' => 'Fournisseurs',
|
||||
'product_sales' => 'Ventes de produits',
|
||||
'user_sales_report_header' => 'Rapport sur les ventes des utilisateurs pour le(s) client(s) :client de :start_date à :end_date',
|
||||
'client_balance_report' => 'Rapport sur le solde du client',
|
||||
@ -5064,52 +5067,93 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'set_tax_category' => 'Définir la catégorie de taxe',
|
||||
'payment_manual' => 'Paiement manuel',
|
||||
'expense_payment_type' => 'Type de paiement de dépense',
|
||||
'payment_type_Cash App' => 'Cash App',
|
||||
'rename' => 'Rename',
|
||||
'renamed_document' => 'Successfully renamed document',
|
||||
'e_invoice' => 'E-Invoice',
|
||||
'light_dark_mode' => 'Light/Dark Mode',
|
||||
'activities' => 'Activities',
|
||||
'recent_transactions' => "Here are your company's most recent transactions:",
|
||||
'payment_type_Cash App' => 'Application de trésorerie',
|
||||
'rename' => 'Renommer',
|
||||
'renamed_document' => 'Document renommé avec succès',
|
||||
'e_invoice' => 'Facture électronique',
|
||||
'light_dark_mode' => 'Thème clair/sombre',
|
||||
'activities' => 'Activités',
|
||||
'recent_transactions' => "Voici les transactions les plus récentes de votre entreprise :",
|
||||
'country_Palestine' => "Palestine",
|
||||
'country_Taiwan' => 'Taiwan',
|
||||
'duties' => 'Duties',
|
||||
'order_number' => 'Order Number',
|
||||
'order_id' => 'Order',
|
||||
'total_invoices_outstanding' => 'Total Invoices Outstanding',
|
||||
'recent_activity' => 'Recent Activity',
|
||||
'enable_auto_bill' => 'Enable auto billing',
|
||||
'email_count_invoices' => 'Email :count invoices',
|
||||
'invoice_task_item_description' => 'Invoice Task Item Description',
|
||||
'invoice_task_item_description_help' => 'Add the item description to the invoice line items',
|
||||
'next_send_time' => 'Next Send Time',
|
||||
'uploaded_certificate' => 'Successfully uploaded certificate',
|
||||
'certificate_set' => 'Certificate set',
|
||||
'certificate_not_set' => 'Certificate not set',
|
||||
'passphrase_set' => 'Passphrase set',
|
||||
'passphrase_not_set' => 'Passphrase not set',
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
'react_notification_link' => 'React Notification Links',
|
||||
'react_notification_link_help' => 'Admin emails will contain links to the react application',
|
||||
'show_task_billable' => 'Show Task Billable',
|
||||
'credit_item' => 'Credit Item',
|
||||
'drop_file_here' => 'Drop file here',
|
||||
'files' => 'Files',
|
||||
'camera' => 'Camera',
|
||||
'gallery' => 'Gallery',
|
||||
'project_location' => 'Project Location',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
'lang_Hungarian' => 'Hungarian',
|
||||
'use_mobile_to_manage_plan' => 'Use your phone subscription settings to manage your plan',
|
||||
'item_tax3' => 'Item Tax3',
|
||||
'item_tax_rate1' => 'Item Tax Rate 1',
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Taiwan' => 'Taïwan',
|
||||
'duties' => 'Devoirs',
|
||||
'order_number' => 'Numéro de commande',
|
||||
'order_id' => 'Commande',
|
||||
'total_invoices_outstanding' => 'Total des factures impayées',
|
||||
'recent_activity' => 'Activité récente',
|
||||
'enable_auto_bill' => 'Activer l\'autofacturation',
|
||||
'email_count_invoices' => 'Envoi de :count factures',
|
||||
'invoice_task_item_description' => 'Description de l'élément de tâche de la facture',
|
||||
'invoice_task_item_description_help' => 'Ajouter la description de l'article aux éléments de ligne de la facture',
|
||||
'next_send_time' => 'Prochaine heure d\'envoi',
|
||||
'uploaded_certificate' => 'Le certificat a été téléversé',
|
||||
'certificate_set' => 'Le certificat est défini',
|
||||
'certificate_not_set' => 'Le certificat n\'est pas défini',
|
||||
'passphrase_set' => 'La phrase de passe est définie',
|
||||
'passphrase_not_set' => 'La phrase de passe n\'est pas définie',
|
||||
'upload_certificate' => 'Téléverser le certificat',
|
||||
'certificate_passphrase' => 'Phrase de passe du certificat',
|
||||
'valid_vat_number' => 'Numéro de TVA valide',
|
||||
'react_notification_link' => 'Liens de notification de réaction',
|
||||
'react_notification_link_help' => 'Les courriels provenant de l\'administrateur contiennent des liens vers l\'application React',
|
||||
'show_task_billable' => 'Afficher la tâche facturable',
|
||||
'credit_item' => 'Article de crédit',
|
||||
'drop_file_here' => 'Déposez le fichier ici',
|
||||
'files' => 'Des dossiers',
|
||||
'camera' => 'Caméra',
|
||||
'gallery' => 'Galerie',
|
||||
'project_location' => 'Emplacement du projet',
|
||||
'add_gateway_help_message' => 'Ajoutez une passerelle de paiement (c.-à-d. Stripe, WePay ou PayPal) pour accepter les paiements en ligne',
|
||||
'lang_Hungarian' => 'hongrois',
|
||||
'use_mobile_to_manage_plan' => 'Utilisez les paramètres de votre abonnement téléphonique pour gérer votre forfait',
|
||||
'item_tax3' => 'Taxe sur les articles3',
|
||||
'item_tax_rate1' => 'Taux de taxe sur l'article 1',
|
||||
'item_tax_rate2' => 'Taux de taxe sur l'article 2',
|
||||
'item_tax_rate3' => 'Taux de taxe sur l'article 3',
|
||||
'buy_price' => 'Prix d'achat',
|
||||
'country_Macedonia' => 'Macédoine',
|
||||
'admin_initiated_payments' => 'Paiements initiés par l'administrateur',
|
||||
'admin_initiated_payments_help' => 'Prise en charge de la saisie d'un paiement dans le portail d'administration sans facture',
|
||||
'paid_date' => 'La date de paiement',
|
||||
'downloaded_entities' => 'Un email sera envoyé avec les PDF',
|
||||
'lang_French - Swiss' => 'Français - Suisse',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Revenu',
|
||||
'amount_received_help' => 'Entrez une valeur ici si le montant total reçu était SUPÉRIEUR au montant de la facture, ou lors de l'enregistrement d'un paiement sans facture. Sinon, ce champ doit rester vide.',
|
||||
'vendor_phone' => 'Téléphone du fournisseur',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'Ma banque',
|
||||
'paypal_paylater' => 'Payez en 4',
|
||||
'paid_date' => 'La date de paiement',
|
||||
'district' => 'District',
|
||||
'region' => 'Région',
|
||||
'county' => 'Comté',
|
||||
'tax_details' => 'Détails fiscaux',
|
||||
'activity_10_online' => ':contact a saisi le paiement :payment pour la facture :invoice pour :client',
|
||||
'activity_10_manual' => ':user a saisi le paiement :payment pour la facture :invoice pour :client',
|
||||
'default_payment_type' => 'Type de paiement par défaut',
|
||||
'number_precision' => 'Précision du nombre',
|
||||
'number_precision_help' => 'Contrôle le nombre de décimales prises en charge dans l'interface',
|
||||
'is_tax_exempt' => 'Exonéré d'impôt',
|
||||
'drop_files_here' => 'Déposez les fichiers ici',
|
||||
'upload_files' => 'Télécharger des fichiers',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Article 141 de la directive 2006/112/CE – opération triangulaire',
|
||||
'intracommunity_tax_info' => 'Livraison désignée à l\'article 262 ter du CGI – TVA due par le preneur',
|
||||
'reverse_tax_info' => 'Exonération des TVA article 283-2 du CGI – TVA due par le preneur',
|
||||
'currency_nicaraguan_cordoba' => 'Cordoue nicaraguayenne',
|
||||
'public' => 'Publique',
|
||||
'private' => 'Privé',
|
||||
'image' => 'Image',
|
||||
'other' => 'Autre',
|
||||
'linked_to' => 'Lié à',
|
||||
'file_saved_in_path' => 'Le fichier a été enregistré dans :path',
|
||||
'unlinked_transactions' => 'Transactions :count dissociées avec succès',
|
||||
'unlinked_transaction' => 'Transaction dissociée avec succès',
|
||||
'view_dashboard_permission' => 'Autoriser l'utilisateur à accéder au tableau de bord, les données sont limitées aux autorisations disponibles',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -3334,9 +3334,9 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'freq_three_years' => 'Trois ans',
|
||||
'military_time_help' => 'Affichage 24h',
|
||||
'click_here_capital' => 'Cliquez ici',
|
||||
'marked_invoice_as_paid' => 'La facture a été marquée comme envoyée',
|
||||
'marked_invoice_as_paid' => 'La facture a été marquée comme payée',
|
||||
'marked_invoices_as_sent' => 'Les factures ont été marquées comme envoyées',
|
||||
'marked_invoices_as_paid' => 'Les factures ont été marquées comme envoyées',
|
||||
'marked_invoices_as_paid' => 'Les factures ont été marquées comme payées',
|
||||
'activity_57' => 'Le système n\'a pas pu envoyer le courriel de la facture :invoice',
|
||||
'custom_value3' => 'Valeur personnalisée 3',
|
||||
'custom_value4' => 'Valeur personnalisée 4',
|
||||
@ -5135,6 +5135,22 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
||||
'is_tax_exempt' => 'Exonéré de taxe',
|
||||
'drop_files_here' => 'Déposez les fichiers ici',
|
||||
'upload_files' => 'Téléverser les fichiers',
|
||||
'download_e_invoice' => 'Télécharger la facture électronique',
|
||||
'triangular_tax_info' => 'Transactions intra-communautaire triangulaire',
|
||||
'intracommunity_tax_info' => 'Livraison intra-communautaure sans taxe',
|
||||
'reverse_tax_info' => 'Veuillez noter que cette provision est sujette à une charge renversée',
|
||||
'currency_nicaraguan_cordoba' => 'Codoba nicaraguyen',
|
||||
'public' => 'Public',
|
||||
'private' => 'Privé',
|
||||
'image' => 'Image',
|
||||
'other' => 'Autre',
|
||||
'linked_to' => 'Lié à',
|
||||
'file_saved_in_path' => 'Ce fichier a été sauvegardé dans :path',
|
||||
'unlinked_transactions' => ' :count transactions ont été déliées',
|
||||
'unlinked_transaction' => 'La transactions a été déliée',
|
||||
'view_dashboard_permission' => 'Autoriser l\'accès de l\'utilisateur au tableau de bord. Les données sont limitées aux permissions disponibles.',
|
||||
'marked_sent_credits' => 'Les crédits envoyés ont été marqués',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2396,6 +2396,9 @@ $LANG = array(
|
||||
|
||||
'currency_cuban_peso' => 'Cuban Peso',
|
||||
'currency_bz_dollar' => 'דולר בליזי',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!',
|
||||
'writing_a_review' => 'writing a review',
|
||||
@ -3331,9 +3334,9 @@ $LANG = array(
|
||||
'freq_three_years' => 'שלוש שנים',
|
||||
'military_time_help' => 'תצוגה של 24 שעות',
|
||||
'click_here_capital' => 'לחץ כאן',
|
||||
'marked_invoice_as_paid' => 'חשבונית סומנה כנשלחה בהצלחה',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'חשבוניות סומנו כנשלחה בהצלחה',
|
||||
'marked_invoices_as_paid' => 'חשבוניות סומנו כנשלחה בהצלחה',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'שליחת חשבונית בדוא"ל נכשלה :invoice',
|
||||
'custom_value3' => 'ערך מותאם אישית 3',
|
||||
'custom_value4' => 'ערך מותאם אישית 4',
|
||||
@ -4944,7 +4947,7 @@ $LANG = array(
|
||||
'sync_from' => 'סנכרון מאת',
|
||||
'gateway_payment_text' => 'חשבוניות: :invoices עבור :amount עבור הלקוח :client',
|
||||
'gateway_payment_text_no_invoice' => 'תשלום ללא חשבונית עבור סכום :amount עבור הלקוח :client',
|
||||
'click_to_variables' => 'לקוח כאן כדי לראות את כל המשתנים.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'לשלוח ל',
|
||||
'stripe_direct_debit_details' => 'נא להעביר לחשבון הבנק הנקוב לעיל.',
|
||||
'branch_name' => 'שם הסניף',
|
||||
@ -5106,8 +5109,49 @@ $LANG = array(
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2381,6 +2381,9 @@ adva :date',
|
||||
|
||||
'currency_cuban_peso' => 'Kubai peso',
|
||||
'currency_bz_dollar' => 'Beliz-i dollár',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Segítség az értékeléshez',
|
||||
'writing_a_review' => 'Értékelés írása',
|
||||
@ -3316,9 +3319,9 @@ adva :date',
|
||||
'freq_three_years' => '3 év',
|
||||
'military_time_help' => 'Ha engedélyezve van, a rendszer a katonai időformátumot használja (óra:perc helyett óra:perc am/pm formátumban).',
|
||||
'click_here_capital' => 'KATTINTSON IDE',
|
||||
'marked_invoice_as_paid' => 'Számla fizetettként jelölve',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Számlák elküldöttként jelölve',
|
||||
'marked_invoices_as_paid' => 'Számlák fizetettként jelölve',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => '57. tevékenység',
|
||||
'custom_value3' => 'Egyéni érték 3',
|
||||
'custom_value4' => 'Egyéni érték 4',
|
||||
@ -4929,7 +4932,7 @@ adva :date',
|
||||
'sync_from' => 'szinkronizálás forrásából',
|
||||
'gateway_payment_text' => 'fizetési szöveg a fizetési átjárón keresztül',
|
||||
'gateway_payment_text_no_invoice' => 'fizetési szöveg a fizetési átjárón keresztül (nincs számla)',
|
||||
'click_to_variables' => 'kattintson a változókhoz',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'szállítási cím',
|
||||
'stripe_direct_debit_details' => 'Stripe közvetlen terhelés részletei',
|
||||
'branch_name' => 'fiók neve',
|
||||
@ -5091,8 +5094,49 @@ adva :date',
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2389,6 +2389,9 @@ $LANG = array(
|
||||
|
||||
'currency_cuban_peso' => 'peso cubano',
|
||||
'currency_bz_dollar' => 'Dollaro BZ',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Ci auguriamo che ti piaccia usare l'app.<br/> Se prendessi in considerazione :link lo apprezzeremmo molto!',
|
||||
'writing_a_review' => 'scrivendo una recensione',
|
||||
@ -3324,9 +3327,9 @@ $LANG = array(
|
||||
'freq_three_years' => 'Tre anni',
|
||||
'military_time_help' => 'Formato 24 ore',
|
||||
'click_here_capital' => 'Clicca qui',
|
||||
'marked_invoice_as_paid' => 'Fattura contrassegnata con successo come inviata',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Fatture contrassegnate con successo come inviate',
|
||||
'marked_invoices_as_paid' => 'Fatture contrassegnate con successo come inviate',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Il sistema non è riuscito a inviare la fattura :invoice via e-mail',
|
||||
'custom_value3' => 'Valore Personalizzato 3',
|
||||
'custom_value4' => 'Valore Personalizzato 4',
|
||||
@ -4937,7 +4940,7 @@ $LANG = array(
|
||||
'sync_from' => 'Sincronizza da',
|
||||
'gateway_payment_text' => 'Fatture: :invoices per :amount per cliente :client',
|
||||
'gateway_payment_text_no_invoice' => 'Pagamento senza fattura per importo :amount per cliente :client',
|
||||
'click_to_variables' => 'Cliente qui per vedere tutte le variabili.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Spedire a',
|
||||
'stripe_direct_debit_details' => 'Si prega di trasferire sul conto bancario indicato sopra.',
|
||||
'branch_name' => 'Nome ramo',
|
||||
@ -5099,8 +5102,49 @@ $LANG = array(
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2377,6 +2377,9 @@ $LANG = array(
|
||||
|
||||
'currency_cuban_peso' => 'ប្រាក់ប៉េសូគុយបា',
|
||||
'currency_bz_dollar' => 'ដុល្លារ BZ',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'យើងសង្ឃឹមថាអ្នករីករាយនឹងការប្រើប្រាស់កម្មវិធី។<br/> ប្រសិនបើអ្នកនឹងពិចារណា :link យើងនឹងកោតសរសើរវាយ៉ាងខ្លាំង!',
|
||||
'writing_a_review' => 'សរសេរការពិនិត្យឡើងវិញ',
|
||||
@ -3312,9 +3315,9 @@ $LANG = array(
|
||||
'freq_three_years' => 'បីឆ្នាំ',
|
||||
'military_time_help' => 'ការបង្ហាញ 24 ម៉ោង។',
|
||||
'click_here_capital' => 'ចុចទីនេះ',
|
||||
'marked_invoice_as_paid' => 'បានសម្គាល់វិក្កយបត្រដោយជោគជ័យថាបានផ្ញើ',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'បានសម្គាល់វិក្កយបត្រដោយជោគជ័យថាបានផ្ញើ',
|
||||
'marked_invoices_as_paid' => 'បានសម្គាល់វិក្កយបត្រដោយជោគជ័យថាបានផ្ញើ',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'ប្រព័ន្ធបានបរាជ័យក្នុងការផ្ញើអ៊ីមែលវិក្កយបត្រ :invoice',
|
||||
'custom_value3' => 'តម្លៃផ្ទាល់ខ្លួន 3',
|
||||
'custom_value4' => 'តម្លៃផ្ទាល់ខ្លួន ៤',
|
||||
@ -4925,7 +4928,7 @@ $LANG = array(
|
||||
'sync_from' => 'ធ្វើសមកាលកម្មពី',
|
||||
'gateway_payment_text' => 'វិក្កយបត្រ៖ :invoices សម្រាប់ :amount សម្រាប់អតិថិជន :client',
|
||||
'gateway_payment_text_no_invoice' => 'ការទូទាត់ដោយគ្មានវិក្កយបត្រសម្រាប់ចំនួនទឹកប្រាក់ :amount សម្រាប់អតិថិជន :client',
|
||||
'click_to_variables' => 'អតិថិជននៅទីនេះដើម្បីមើលអថេរទាំងអស់។',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'ផ្ញើទៅ',
|
||||
'stripe_direct_debit_details' => 'សូមផ្ទេរទៅគណនីធនាគារដែលបានតែងតាំងខាងលើ។',
|
||||
'branch_name' => 'ឈ្មោះសាខា',
|
||||
@ -5087,8 +5090,49 @@ $LANG = array(
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -33,8 +33,8 @@ $LANG = array(
|
||||
'po_number_short' => 'Ordre #',
|
||||
'frequency_id' => 'Frekvens',
|
||||
'discount' => 'Rabatter:',
|
||||
'taxes' => 'Skatter',
|
||||
'tax' => 'Skatt',
|
||||
'taxes' => 'Mva.',
|
||||
'tax' => 'Mva.',
|
||||
'item' => 'Produkt',
|
||||
'description' => 'Beskrivelse',
|
||||
'unit_cost' => 'Stykkpris',
|
||||
@ -47,7 +47,7 @@ $LANG = array(
|
||||
'invoice_design_id' => 'Design',
|
||||
'terms' => 'Vilkår',
|
||||
'your_invoice' => 'Din faktura',
|
||||
'remove_contact' => 'Fjern kontakt',
|
||||
'remove_contact' => 'Slett kontakt',
|
||||
'add_contact' => 'Legg til kontakt',
|
||||
'create_new_client' => 'Opprett ny kunde',
|
||||
'edit_client_details' => 'Endre kundedetaljer',
|
||||
@ -253,7 +253,7 @@ $LANG = array(
|
||||
'notification_invoice_paid' => 'En betaling pålydende :amount ble gjort av :client for faktura :invoice.',
|
||||
'notification_invoice_sent' => 'E-post har blitt sendt til :client - Faktura :invoice pålydende :amount.',
|
||||
'notification_invoice_viewed' => ':client har nå sett faktura :invoice pålydende :amount.',
|
||||
'stripe_payment_text' => 'Invoice :invoicenumber for :amount for client :client',
|
||||
'stripe_payment_text' => 'Faktura :invoice nummer for :amountfor kunde :client',
|
||||
'stripe_payment_text_without_invoice' => 'Payment with no invoice for amount :amount for client :client',
|
||||
'reset_password' => 'Du kan nullstille ditt passord ved å besøke følgende lenke:',
|
||||
'secure_payment' => 'Sikker betaling',
|
||||
@ -754,7 +754,7 @@ $LANG = array(
|
||||
'activity_7' => ':contact har sett fakturaen :invoice for :client',
|
||||
'activity_8' => ':user arkiverte faktura :invoice',
|
||||
'activity_9' => ':user slettet faktura :invoice',
|
||||
'activity_10' => ':user la inn betaling :payment på :payment_amount',
|
||||
'activity_10' => ':user entered payment :payment for :payment_amount on invoice :invoice for :client',
|
||||
'activity_11' => ':user oppdaterte betaling :payment',
|
||||
'activity_12' => ':user arkiverte betaling :payment',
|
||||
'activity_13' => ':user slettet betaling :payment',
|
||||
@ -1067,7 +1067,7 @@ $LANG = array(
|
||||
'invoice_item_fields' => 'Invoice Item Fields',
|
||||
'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.',
|
||||
'recurring_invoice_number' => 'Gjentakende nummer',
|
||||
'recurring_invoice_number_prefix_help' => 'Specify a prefix to be added to the invoice number for recurring invoices.',
|
||||
'recurring_invoice_number_prefix_help' => 'Angi et prefiks som skal legges til fakturanummeret for gjentagende fakturaer.',
|
||||
|
||||
// Client Passwords
|
||||
'enable_portal_password' => 'Passord-beskytt fakturaer',
|
||||
@ -1249,7 +1249,7 @@ $LANG = array(
|
||||
'country_not_supported' => 'Landet er ikke støttet.',
|
||||
'invalid_routing_number' => 'Rutingsnummeret er ikke gyldig.',
|
||||
'invalid_account_number' => 'Kontonummeret er ikke gyldig.',
|
||||
'account_number_mismatch' => 'The account numbers do not match.',
|
||||
'account_number_mismatch' => 'Kontonumrene stemmer ikke overens.',
|
||||
'missing_account_holder_type' => 'Please select an individual or company account.',
|
||||
'missing_account_holder_name' => 'Please enter the account holder\'s name.',
|
||||
'routing_number' => 'Routing Number',
|
||||
@ -1806,7 +1806,7 @@ $LANG = array(
|
||||
'limit_import_rows' => 'Data needs to be imported in batches of :count rows or less',
|
||||
'error_title' => 'Noe gikk galt',
|
||||
'error_contact_text' => 'If you\'d like help please email us at :mailaddress',
|
||||
'no_undo' => 'Warning: this can\'t be undone.',
|
||||
'no_undo' => 'Advarsel: Dette kan ikke angres',
|
||||
'no_contact_selected' => 'Vennligst velg en kontakt',
|
||||
'no_client_selected' => 'Vennligst velg en klient',
|
||||
|
||||
@ -2000,6 +2000,7 @@ $LANG = array(
|
||||
'current_quarter' => 'Current Quarter',
|
||||
'last_quarter' => 'Last Quarter',
|
||||
'last_year' => 'Siste år',
|
||||
'all_time' => 'All Time',
|
||||
'custom_range' => 'Tilpass Utvalg',
|
||||
'url' => 'URL',
|
||||
'debug' => 'Debug',
|
||||
@ -2259,7 +2260,7 @@ $LANG = array(
|
||||
'restore_recurring_expense' => 'Restore Recurring Expense',
|
||||
'restored_recurring_expense' => 'Successfully restored recurring expense',
|
||||
'delete_recurring_expense' => 'Delete Recurring Expense',
|
||||
'deleted_recurring_expense' => 'Successfully deleted project',
|
||||
'deleted_recurring_expense' => 'Successfully deleted recurring expense',
|
||||
'view_recurring_expense' => 'Vis Gjentakende Utgift',
|
||||
'taxes_and_fees' => 'Skatt og avgifter',
|
||||
'import_failed' => 'Import Failed',
|
||||
@ -2403,6 +2404,9 @@ $LANG = array(
|
||||
|
||||
'currency_cuban_peso' => 'Cuban Peso',
|
||||
'currency_bz_dollar' => 'BZ Dollar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!',
|
||||
'writing_a_review' => 'skriv tilbakemelding',
|
||||
@ -2514,8 +2518,8 @@ $LANG = array(
|
||||
'partial_due_date' => 'Partial Due Date',
|
||||
'task_fields' => 'Task Fields',
|
||||
'product_fields_help' => 'Drag and drop fields to change their order',
|
||||
'custom_value1' => 'Custom Value',
|
||||
'custom_value2' => 'Custom Value',
|
||||
'custom_value1' => 'Custom Value 1',
|
||||
'custom_value2' => 'Custom Value 2',
|
||||
'enable_two_factor' => 'To-faktor-autentisering',
|
||||
'enable_two_factor_help' => 'Bruk telefonen til å bekrefte identiteten din når du logger inn',
|
||||
'two_factor_setup' => 'Two-Factor Setup',
|
||||
@ -2639,7 +2643,7 @@ $LANG = array(
|
||||
'convert_products' => 'Convert Products',
|
||||
'convert_products_help' => 'Automatically convert product prices to the client\'s currency',
|
||||
'improve_client_portal_link' => 'Set a subdomain to shorten the client portal link.',
|
||||
'budgeted_hours' => 'Budgeted Hours',
|
||||
'budgeted_hours' => 'Utbetalte timer',
|
||||
'progress' => 'Progress',
|
||||
'view_project' => 'Vis Prosjekt',
|
||||
'summary' => 'Summary',
|
||||
@ -2855,7 +2859,7 @@ $LANG = array(
|
||||
'please_enter_your_url' => 'Please enter your URL',
|
||||
'please_enter_a_product_key' => 'Please enter a product key',
|
||||
'an_error_occurred' => 'An error occurred',
|
||||
'overview' => 'Overview',
|
||||
'overview' => 'Oversikt',
|
||||
'copied_to_clipboard' => 'Copied :value to the clipboard',
|
||||
'error' => 'Error',
|
||||
'could_not_launch' => 'Could not launch',
|
||||
@ -3260,7 +3264,7 @@ $LANG = array(
|
||||
'group2' => 'Custom Group 2',
|
||||
'group3' => 'Custom Group 3',
|
||||
'group4' => 'Custom Group 4',
|
||||
'number' => 'Number',
|
||||
'number' => 'Nummer',
|
||||
'count' => 'Count',
|
||||
'is_active' => 'Is Active',
|
||||
'contact_last_login' => 'Contact Last Login',
|
||||
@ -3338,9 +3342,9 @@ $LANG = array(
|
||||
'freq_three_years' => 'Three Years',
|
||||
'military_time_help' => '24 Hour Display',
|
||||
'click_here_capital' => 'Click here',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as sent',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Successfully marked invoices as sent',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as sent',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'System failed to email invoice :invoice',
|
||||
'custom_value3' => 'Custom Value 3',
|
||||
'custom_value4' => 'Custom Value 4',
|
||||
@ -3501,23 +3505,23 @@ $LANG = array(
|
||||
'hide_menu' => 'Hide Menu',
|
||||
'show_menu' => 'Show Menu',
|
||||
'partially_refunded' => 'Partially Refunded',
|
||||
'search_documents' => 'Search Documents',
|
||||
'search_designs' => 'Search Designs',
|
||||
'search_invoices' => 'Search Invoices',
|
||||
'search_clients' => 'Search Clients',
|
||||
'search_products' => 'Search Products',
|
||||
'search_quotes' => 'Search Quotes',
|
||||
'search_documents' => 'Søk i Dokumenter',
|
||||
'search_designs' => 'Søk i Designs',
|
||||
'search_invoices' => 'Søk i Fakturaer',
|
||||
'search_clients' => 'Søk i Kunder',
|
||||
'search_products' => 'Søk i Produkter',
|
||||
'search_quotes' => 'Søk i Pristilbuder',
|
||||
'search_credits' => 'Search Credits',
|
||||
'search_vendors' => 'Search Vendors',
|
||||
'search_users' => 'Search Users',
|
||||
'search_tax_rates' => 'Search Tax Rates',
|
||||
'search_tasks' => 'Search Tasks',
|
||||
'search_settings' => 'Search Settings',
|
||||
'search_projects' => 'Search Projects',
|
||||
'search_expenses' => 'Search Expenses',
|
||||
'search_payments' => 'Search Payments',
|
||||
'search_groups' => 'Search Groups',
|
||||
'search_company' => 'Search Company',
|
||||
'search_vendors' => 'Søk i Leverandører',
|
||||
'search_users' => 'Søk i Brukere',
|
||||
'search_tax_rates' => 'Søk i Mva. Satser',
|
||||
'search_tasks' => 'Søk i Oppgaver',
|
||||
'search_settings' => 'Søk i Instillinger',
|
||||
'search_projects' => 'Søk i Prosjekter',
|
||||
'search_expenses' => 'Søk i Utgifter',
|
||||
'search_payments' => 'Søk i Betalinger',
|
||||
'search_groups' => 'Søk i Grupper',
|
||||
'search_company' => 'Søk i Selskaper',
|
||||
'cancelled_invoice' => 'Successfully cancelled invoice',
|
||||
'cancelled_invoices' => 'Successfully cancelled invoices',
|
||||
'reversed_invoice' => 'Successfully reversed invoice',
|
||||
@ -3862,7 +3866,7 @@ $LANG = array(
|
||||
'notification_credit_viewed' => 'The following client :client viewed Credit :credit for :amount.',
|
||||
'reset_password_text' => 'Enter your email to reset your password.',
|
||||
'password_reset' => 'Password reset',
|
||||
'account_login_text' => 'Welcome back! Glad to see you.',
|
||||
'account_login_text' => 'Welcome! Glad to see you.',
|
||||
'request_cancellation' => 'Request cancellation',
|
||||
'delete_payment_method' => 'Delete Payment Method',
|
||||
'about_to_delete_payment_method' => 'You are about to delete the payment method.',
|
||||
@ -3976,7 +3980,7 @@ $LANG = array(
|
||||
'add_payment_method_first' => 'add payment method',
|
||||
'no_items_selected' => 'No items selected.',
|
||||
'payment_due' => 'Payment due',
|
||||
'account_balance' => 'Account balance',
|
||||
'account_balance' => 'Account Balance',
|
||||
'thanks' => 'Thanks',
|
||||
'minimum_required_payment' => 'Minimum required payment is :amount',
|
||||
'under_payments_disabled' => 'Company doesn\'t support under payments.',
|
||||
@ -4460,7 +4464,7 @@ $LANG = array(
|
||||
'wait_for_loading' => 'Data loading - please wait for it to complete',
|
||||
'wait_for_saving' => 'Data saving - please wait for it to complete',
|
||||
'html_preview_warning' => 'Note: changes made here are only previewed, they must be applied in the tabs above to be saved',
|
||||
'remaining' => 'Remaining',
|
||||
'remaining' => 'Gjenstår',
|
||||
'invoice_paid' => 'Invoice Paid',
|
||||
'activity_120' => ':user created recurring expense :recurring_expense',
|
||||
'activity_121' => ':user updated recurring expense :recurring_expense',
|
||||
@ -4907,6 +4911,7 @@ $LANG = array(
|
||||
'all_clients' => 'All Clients',
|
||||
'show_aging_table' => 'Show Aging Table',
|
||||
'show_payments_table' => 'Show Payments Table',
|
||||
'only_clients_with_invoices' => 'Only Clients with Invoices',
|
||||
'email_statement' => 'Email Statement',
|
||||
'once' => 'Once',
|
||||
'schedules' => 'Schedules',
|
||||
@ -4950,7 +4955,7 @@ $LANG = array(
|
||||
'sync_from' => 'Sync From',
|
||||
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
|
||||
'click_to_variables' => 'Client here to see all variables.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Ship to',
|
||||
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
|
||||
'branch_name' => 'Branch Name',
|
||||
@ -5040,7 +5045,7 @@ $LANG = array(
|
||||
'link_expenses' => 'Link Expenses',
|
||||
'converted_client_balance' => 'Converted Client Balance',
|
||||
'converted_payment_balance' => 'Converted Payment Balance',
|
||||
'total_hours' => 'Total Hours',
|
||||
'total_hours' => 'Totalt antall timer',
|
||||
'date_picker_hint' => 'Use +days to set the date in the future',
|
||||
'app_help_link' => 'More information ',
|
||||
'here' => 'here',
|
||||
@ -5095,8 +5100,66 @@ $LANG = array(
|
||||
'upload_certificate' => 'Upload Certificate',
|
||||
'certificate_passphrase' => 'Certificate Passphrase',
|
||||
'valid_vat_number' => 'Valid VAT Number',
|
||||
);
|
||||
'react_notification_link' => 'React Notification Links',
|
||||
'react_notification_link_help' => 'Admin emails will contain links to the react application',
|
||||
'show_task_billable' => 'Show Task Billable',
|
||||
'credit_item' => 'Credit Item',
|
||||
'drop_file_here' => 'Drop file here',
|
||||
'files' => 'Files',
|
||||
'camera' => 'Camera',
|
||||
'gallery' => 'Gallery',
|
||||
'project_location' => 'Project Location',
|
||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||
'lang_Hungarian' => 'Hungarian',
|
||||
'use_mobile_to_manage_plan' => 'Use your phone subscription settings to manage your plan',
|
||||
'item_tax3' => 'Item Tax3',
|
||||
'item_tax_rate1' => 'Item Tax Rate 1',
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2395,6 +2395,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
|
||||
|
||||
'currency_cuban_peso' => 'Cubaanse Peso',
|
||||
'currency_bz_dollar' => 'BZ Dollar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'We hopen dat je het leuk vindt om de app te gebruiken.<br/> Als je zou overwegen :link, zouden we dat zeer op prijs stellen!',
|
||||
'writing_a_review' => 'een recensie schrijven',
|
||||
@ -3330,9 +3333,9 @@ Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen
|
||||
'freq_three_years' => 'Drie jaar',
|
||||
'military_time_help' => '24-uurs weergave',
|
||||
'click_here_capital' => 'Klik hier',
|
||||
'marked_invoice_as_paid' => 'Factuur succesvol gemarkeerd als verzonden',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Facturen gemarkeerd als verzonden',
|
||||
'marked_invoices_as_paid' => 'Facturen succesvol gemarkeerd als verzonden',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Systeem kon de factuur niet mailen :invoice',
|
||||
'custom_value3' => 'Aangepaste waarde 3',
|
||||
'custom_value4' => 'Aangepaste waarde 4',
|
||||
@ -4946,7 +4949,7 @@ Email: :email<b><br><b>',
|
||||
'sync_from' => 'Synchroniseren van',
|
||||
'gateway_payment_text' => 'Facturen: :invoices voor :amount voor opdrachtgever :client',
|
||||
'gateway_payment_text_no_invoice' => 'Betaling zonder factuur voor bedrag :amount voor opdrachtgever :client',
|
||||
'click_to_variables' => 'Client hier om alle variabelen te zien.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Verzend naar',
|
||||
'stripe_direct_debit_details' => 'Gelieve over te maken op de genoemde bankrekening hierboven.',
|
||||
'branch_name' => 'Filiaal naam',
|
||||
@ -5108,8 +5111,49 @@ Email: :email<b><br><b>',
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2398,6 +2398,9 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
|
||||
|
||||
'currency_cuban_peso' => 'Peso Cubano',
|
||||
'currency_bz_dollar' => 'BZ Dólar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Esperamos que esteja aproveitando o app. <br/>Se você considerar :link agradeceríamos bastante!',
|
||||
'writing_a_review' => 'Escrevendo uma avaliação',
|
||||
@ -3333,9 +3336,9 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
|
||||
'freq_three_years' => 'Três Anos',
|
||||
'military_time_help' => 'Formato de Hora 24h',
|
||||
'click_here_capital' => 'Clique aqui',
|
||||
'marked_invoice_as_paid' => 'Sucesso! A fatura foi marcada como enviada.',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Faturas marcadas como enviadas com sucesso',
|
||||
'marked_invoices_as_paid' => 'Sucesso! As faturas foram marcadas como enviada.',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'O sistema falhou ao enviar a fatura :invoice',
|
||||
'custom_value3' => 'Valor Personalizado 3',
|
||||
'custom_value4' => 'Valor Personalizado 4',
|
||||
@ -4946,7 +4949,7 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
|
||||
'sync_from' => 'Sync From',
|
||||
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
|
||||
'click_to_variables' => 'Client here to see all variables.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Ship to',
|
||||
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
|
||||
'branch_name' => 'Branch Name',
|
||||
@ -5118,8 +5121,39 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
);
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2399,6 +2399,9 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific
|
||||
|
||||
'currency_cuban_peso' => 'Cuban Peso',
|
||||
'currency_bz_dollar' => 'BZ Dólar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Esperamos que esteja a gostar da aplicação. <br/>Se eventualmente considerar :link agradecíamos muito!',
|
||||
'writing_a_review' => 'escrever uma avaliação',
|
||||
@ -3335,9 +3338,9 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem
|
||||
'freq_three_years' => 'Três Anos',
|
||||
'military_time_help' => 'Formato de Hora 24h',
|
||||
'click_here_capital' => 'Clique aqui',
|
||||
'marked_invoice_as_paid' => 'Excelente! A nota de pagamento foi marcada como enviada.',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Excelente! As notas de pagamento foram marcadas como enviada.',
|
||||
'marked_invoices_as_paid' => 'Excelente! As notas de pagamento foram marcadas como enviada.',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'O sistema falhou ao enviar a nota de pagamento :invoice',
|
||||
'custom_value3' => 'Valor Personalizado 3',
|
||||
'custom_value4' => 'Valor Personalizado 4',
|
||||
@ -4949,7 +4952,7 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.',
|
||||
'sync_from' => 'Sincronizar de',
|
||||
'gateway_payment_text' => 'Faturas: :invoices para :amount para cliente :client',
|
||||
'gateway_payment_text_no_invoice' => 'Pagamento sem fatura no valor :amount para cliente :client',
|
||||
'click_to_variables' => 'Cliente aqui para ver todas as variáveis.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Enviar para',
|
||||
'stripe_direct_debit_details' => 'Por favor, transfira para a conta bancária indicada acima.',
|
||||
'branch_name' => 'Nome da filial',
|
||||
@ -5111,8 +5114,49 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.',
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2406,6 +2406,9 @@ Odată ce sumele au ajuns la dumneavoastră, reveniți la pagina cu metode de pl
|
||||
|
||||
'currency_cuban_peso' => 'Peso cubanez',
|
||||
'currency_bz_dollar' => 'BZ Dollar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Sperăm că vă place aplicația.<br/>Am aprecia dacă :link!',
|
||||
'writing_a_review' => 'părerea dumneavoastră',
|
||||
@ -3342,9 +3345,9 @@ Odată ce sumele au ajuns la dumneavoastră, reveniți la pagina cu metode de pl
|
||||
'freq_three_years' => 'Trei ani',
|
||||
'military_time_help' => 'Afișare 24 de ore',
|
||||
'click_here_capital' => 'Click aici',
|
||||
'marked_invoice_as_paid' => 'Factura a fost marcată ca trimisă cu succes',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Facturile au fost marcate ca trimise cu succes',
|
||||
'marked_invoices_as_paid' => 'Facturile au fost marcate ca trimise cu succes',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Factura :invoice nu a putut fi trimisă',
|
||||
'custom_value3' => 'Valoare personalizată 3',
|
||||
'custom_value4' => 'Valoare personalizată 4',
|
||||
@ -4955,7 +4958,7 @@ Odată ce sumele au ajuns la dumneavoastră, reveniți la pagina cu metode de pl
|
||||
'sync_from' => 'Sync From',
|
||||
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
|
||||
'click_to_variables' => 'Client here to see all variables.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Ship to',
|
||||
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
|
||||
'branch_name' => 'Branch Name',
|
||||
@ -5117,8 +5120,49 @@ Odată ce sumele au ajuns la dumneavoastră, reveniți la pagina cu metode de pl
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2387,6 +2387,9 @@ Nemôžete nájsť faktúru? Potrebujete poradiť? Radi Vám pomôžeme
|
||||
|
||||
'currency_cuban_peso' => 'Kubánske Peso',
|
||||
'currency_bz_dollar' => 'BZ dolár',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Dúfame, že sa vám používanie aplikácie páči.<br/> Ak by ste zvážili :link, veľmi by sme to ocenili!',
|
||||
'writing_a_review' => 'písanie recenzie',
|
||||
@ -3322,9 +3325,9 @@ Nemôžete nájsť faktúru? Potrebujete poradiť? Radi Vám pomôžeme
|
||||
'freq_three_years' => 'Tri roky',
|
||||
'military_time_help' => '24-hodinové zobrazenie',
|
||||
'click_here_capital' => 'Kliknite tu',
|
||||
'marked_invoice_as_paid' => 'Faktúra bola úspešne označená ako odoslaná',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Faktúry boli úspešne označené ako odoslané',
|
||||
'marked_invoices_as_paid' => 'Faktúry boli úspešne označené ako odoslané',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Systému sa nepodarilo odoslať e-mailom faktúru :invoice',
|
||||
'custom_value3' => 'Vlastná hodnota 3',
|
||||
'custom_value4' => 'Vlastná hodnota 4',
|
||||
@ -4935,7 +4938,7 @@ Nemôžete nájsť faktúru? Potrebujete poradiť? Radi Vám pomôžeme
|
||||
'sync_from' => 'Synchronizovať z',
|
||||
'gateway_payment_text' => 'Faktúry: :invoices pre :amount pre klienta :client',
|
||||
'gateway_payment_text_no_invoice' => 'Platba bez faktúry za sumu :amount pre klienta :client',
|
||||
'click_to_variables' => 'Klient tu zobrazí všetky premenné.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Odoslať do',
|
||||
'stripe_direct_debit_details' => 'Preveďte prosím na vyššie uvedený bankový účet.',
|
||||
'branch_name' => 'Meno pobočky',
|
||||
@ -5097,8 +5100,49 @@ Nemôžete nájsť faktúru? Potrebujete poradiť? Radi Vám pomôžeme
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2404,6 +2404,9 @@ Kada budete imali iznose, vratite se na ovu stranicu sa načinima plaćanja i k
|
||||
|
||||
'currency_cuban_peso' => 'Kubanski pezos',
|
||||
'currency_bz_dollar' => 'BZ Dollar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'Nadamo se da uživate u korišćenju aplikacije. <br/> Bili bismo veoma zahvalni ako biste razmotrili :link.',
|
||||
'writing_a_review' => 'pisanje recenzije',
|
||||
@ -3339,9 +3342,9 @@ Kada budete imali iznose, vratite se na ovu stranicu sa načinima plaćanja i k
|
||||
'freq_three_years' => 'Tri godine',
|
||||
'military_time_help' => '24-časovni prikaz',
|
||||
'click_here_capital' => 'Kliknite ovde',
|
||||
'marked_invoice_as_paid' => 'Račun je uspešno označen kao poslat',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Računi su uspešno označeni kao poslati',
|
||||
'marked_invoices_as_paid' => 'Računi su uspešno označeni kao poslati',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Sistem nije uspeo da pošalje račun e-poštom :invoice',
|
||||
'custom_value3' => 'Prilagođena Vrednost 3',
|
||||
'custom_value4' => 'Prilagođena Vrednost 4',
|
||||
@ -4952,7 +4955,7 @@ Kada budete imali iznose, vratite se na ovu stranicu sa načinima plaćanja i k
|
||||
'sync_from' => 'Sync From',
|
||||
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
|
||||
'click_to_variables' => 'Client here to see all variables.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Ship to',
|
||||
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
|
||||
'branch_name' => 'Branch Name',
|
||||
@ -5114,8 +5117,49 @@ Kada budete imali iznose, vratite se na ovu stranicu sa načinima plaćanja i k
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -2411,6 +2411,9 @@ Den här funktionen kräver att en produkt skapas och en betalningsgateway är k
|
||||
|
||||
'currency_cuban_peso' => 'Cuban Peso',
|
||||
'currency_bz_dollar' => 'BZ Dollar',
|
||||
'currency_libyan_dinar' => 'Libyan Dinar',
|
||||
'currency_silver_troy_ounce' => 'Silver Troy Ounce',
|
||||
'currency_gold_troy_ounce' => 'Gold Troy Ounce',
|
||||
|
||||
'review_app_help' => 'We hope you\'re enjoying using the app.<br/>If you\'d consider :link we\'d greatly appreciate it!',
|
||||
'writing_a_review' => 'writing a review',
|
||||
@ -3346,9 +3349,9 @@ Den här funktionen kräver att en produkt skapas och en betalningsgateway är k
|
||||
'freq_three_years' => 'Tre år',
|
||||
'military_time_help' => '24-timmarsvisning',
|
||||
'click_here_capital' => 'Klicka här',
|
||||
'marked_invoice_as_paid' => 'Fakturan har markerats som betalad',
|
||||
'marked_invoice_as_paid' => 'Successfully marked invoice as paid',
|
||||
'marked_invoices_as_sent' => 'Fakturorna har markerats som skickade',
|
||||
'marked_invoices_as_paid' => 'Fakturorna har markerats som betalade',
|
||||
'marked_invoices_as_paid' => 'Successfully marked invoices as paid',
|
||||
'activity_57' => 'Systemet kunde inte skicka fakturan via e-post :invoice',
|
||||
'custom_value3' => 'Anpassat värde 3',
|
||||
'custom_value4' => 'Anpassat värde 4',
|
||||
@ -4959,7 +4962,7 @@ Den här funktionen kräver att en produkt skapas och en betalningsgateway är k
|
||||
'sync_from' => 'Sync From',
|
||||
'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client',
|
||||
'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client',
|
||||
'click_to_variables' => 'Client here to see all variables.',
|
||||
'click_to_variables' => 'Click here to see all variables.',
|
||||
'ship_to' => 'Ship to',
|
||||
'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.',
|
||||
'branch_name' => 'Branch Name',
|
||||
@ -5121,8 +5124,49 @@ Den här funktionen kräver att en produkt skapas och en betalningsgateway är k
|
||||
'item_tax_rate2' => 'Item Tax Rate 2',
|
||||
'item_tax_rate3' => 'Item Tax Rate 3',
|
||||
'buy_price' => 'Buy Price',
|
||||
);
|
||||
'country_Macedonia' => 'Macedonia',
|
||||
'admin_initiated_payments' => 'Admin Initiated Payments',
|
||||
'admin_initiated_payments_help' => 'Support entering a payment in the admin portal without an invoice',
|
||||
'paid_date' => 'Paid Date',
|
||||
'downloaded_entities' => 'An email will be sent with the PDFs',
|
||||
'lang_French - Swiss' => 'French - Swiss',
|
||||
'currency_swazi_lilangeni' => 'Swazi Lilangeni',
|
||||
'income' => 'Income',
|
||||
'amount_received_help' => 'Enter a value here if the total amount received was MORE than the invoice amount, or when recording a payment with no invoices. Otherwise this field should be left blank.',
|
||||
'vendor_phone' => 'Vendor Phone',
|
||||
'mercado_pago' => 'Mercado Pago',
|
||||
'mybank' => 'MyBank',
|
||||
'paypal_paylater' => 'Pay in 4',
|
||||
'paid_date' => 'Paid Date',
|
||||
'district' => 'District',
|
||||
'region' => 'Region',
|
||||
'county' => 'County',
|
||||
'tax_details' => 'Tax Details',
|
||||
'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client',
|
||||
'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client',
|
||||
'default_payment_type' => 'Default Payment Type',
|
||||
'number_precision' => 'Number precision',
|
||||
'number_precision_help' => 'Controls the number of decimals supported in the interface',
|
||||
'is_tax_exempt' => 'Tax Exempt',
|
||||
'drop_files_here' => 'Drop files here',
|
||||
'upload_files' => 'Upload Files',
|
||||
'download_e_invoice' => 'Download E-Invoice',
|
||||
'triangular_tax_info' => 'Intra-community triangular transaction',
|
||||
'intracommunity_tax_info' => 'Tax-free intra-community delivery',
|
||||
'reverse_tax_info' => 'Please note that this supply is subject to reverse charge',
|
||||
'currency_nicaraguan_cordoba' => 'Nicaraguan Córdoba',
|
||||
'public' => 'Public',
|
||||
'private' => 'Private',
|
||||
'image' => 'Image',
|
||||
'other' => 'Other',
|
||||
'linked_to' => 'Linked To',
|
||||
'file_saved_in_path' => 'The file has been saved in :path',
|
||||
'unlinked_transactions' => 'Successfully unlinked :count transactions',
|
||||
'unlinked_transaction' => 'Successfully unlinked transaction',
|
||||
'view_dashboard_permission' => 'Allow user to access the dashboard, data is limited to available permissions',
|
||||
'marked_sent_credits' => 'Successfully marked credits sent',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
||||
|
@ -47,6 +47,22 @@ class CompanyGatewayTest extends TestCase
|
||||
$this->assertNotNull($company_gateway);
|
||||
}
|
||||
|
||||
public function testSetConfigFields()
|
||||
{
|
||||
$company_gateway = CompanyGateway::first();
|
||||
|
||||
$this->assertNotNull($company_gateway->getConfig());
|
||||
|
||||
$company_gateway->setConfigField('test', 'test');
|
||||
|
||||
$this->assertEquals('test', $company_gateway->getConfigField('test'));
|
||||
|
||||
$company_gateway->setConfigField('signatureKey', 'hero');
|
||||
|
||||
$this->assertEquals('hero', $company_gateway->getConfigField('signatureKey'));
|
||||
|
||||
}
|
||||
|
||||
public function testFeesAndLimitsExists()
|
||||
{
|
||||
$data = [];
|
||||
|
@ -11,12 +11,13 @@
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use Tests\TestCase;
|
||||
use App\Models\Document;
|
||||
use Tests\MockAccountData;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
use Tests\MockAccountData;
|
||||
use Tests\TestCase;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
|
||||
/**
|
||||
* @test
|
||||
@ -28,6 +29,8 @@ class DocumentsApiTest extends TestCase
|
||||
use DatabaseTransactions;
|
||||
use MockAccountData;
|
||||
|
||||
protected $faker;
|
||||
|
||||
protected function setUp() :void
|
||||
{
|
||||
parent::setUp();
|
||||
@ -41,6 +44,126 @@ class DocumentsApiTest extends TestCase
|
||||
Model::reguard();
|
||||
}
|
||||
|
||||
public function testIsPublicTypesForDocumentRequest()
|
||||
{
|
||||
$d = Document::factory()->create([
|
||||
'company_id' => $this->company->id,
|
||||
'user_id' => $this->user->id,
|
||||
]);
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->get("/api/v1/documents/{$d->hashed_id}");
|
||||
|
||||
$response->assertStatus(200);
|
||||
|
||||
$update = [
|
||||
'is_public' => false,
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->putJson("/api/v1/documents/{$d->hashed_id}", $update);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertFalse($arr['data']['is_public']);
|
||||
|
||||
$update = [
|
||||
'is_public' => true,
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->putJson("/api/v1/documents/{$d->hashed_id}", $update);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertTrue($arr['data']['is_public']);
|
||||
|
||||
$update = [
|
||||
'is_public' => 'true',
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->putJson("/api/v1/documents/{$d->hashed_id}", $update);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertTrue($arr['data']['is_public']);
|
||||
|
||||
$update = [
|
||||
'is_public' => '1',
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->putJson("/api/v1/documents/{$d->hashed_id}", $update);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertTrue($arr['data']['is_public']);
|
||||
|
||||
$update = [
|
||||
'is_public' => 1,
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->putJson("/api/v1/documents/{$d->hashed_id}", $update);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertTrue($arr['data']['is_public']);
|
||||
|
||||
$update = [
|
||||
'is_public' => 'false',
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->putJson("/api/v1/documents/{$d->hashed_id}", $update);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertFalse($arr['data']['is_public']);
|
||||
|
||||
$update = [
|
||||
'is_public' => '0',
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->putJson("/api/v1/documents/{$d->hashed_id}", $update);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertFalse($arr['data']['is_public']);
|
||||
|
||||
$update = [
|
||||
'is_public' => 0,
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->putJson("/api/v1/documents/{$d->hashed_id}", $update);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$arr = $response->json();
|
||||
$this->assertFalse($arr['data']['is_public']);
|
||||
|
||||
}
|
||||
|
||||
public function testClientDocuments()
|
||||
{
|
||||
$response = $this->withHeaders([
|
||||
|
@ -717,16 +717,16 @@ class ReportCsvGenerationTest extends TestCase
|
||||
|
||||
$response->assertStatus(409);
|
||||
|
||||
sleep(1);
|
||||
// sleep(1);
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->postJson('/api/v1/reports/preview/'.$arr['message']);
|
||||
// $response = $this->withHeaders([
|
||||
// 'X-API-SECRET' => config('ninja.api_secret'),
|
||||
// 'X-API-TOKEN' => $this->token,
|
||||
// ])->postJson('/api/v1/reports/preview/'.$arr['message']);
|
||||
|
||||
$response->assertStatus(200);
|
||||
// $response->assertStatus(200);
|
||||
|
||||
nlog($response->json());
|
||||
// nlog($response->json());
|
||||
|
||||
}
|
||||
|
||||
|
151
tests/Integration/FileUploadValidationTest.php
Normal file
151
tests/Integration/FileUploadValidationTest.php
Normal file
@ -0,0 +1,151 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace Tests\Integration;
|
||||
|
||||
use App\Models\Company;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Tests\MockAccountData;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
class FileUploadValidationTest extends TestCase
|
||||
{
|
||||
use MockAccountData;
|
||||
use DatabaseTransactions;
|
||||
use MakesHash;
|
||||
|
||||
protected function setUp() :void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->makeTestData();
|
||||
|
||||
}
|
||||
|
||||
public function testIteratingThroughAllEntities()
|
||||
{
|
||||
|
||||
Storage::fake('local');
|
||||
|
||||
$file = UploadedFile::fake()->image('avatar.jpg');
|
||||
|
||||
$data = [
|
||||
'documents' => [$file],
|
||||
'is_public' => false,
|
||||
'_method' => 'PUT',
|
||||
];
|
||||
|
||||
$entities = [
|
||||
'invoice' => 'invoices',
|
||||
'quote' => 'quotes',
|
||||
'payment' => 'payments',
|
||||
'credit' => 'credits',
|
||||
'expense' => 'expenses',
|
||||
'project' => 'projects',
|
||||
'task' => 'tasks',
|
||||
'vendor' => 'vendors',
|
||||
'product' => 'products',
|
||||
'client' => 'clients',
|
||||
'recurring_invoice' => 'recurring_invoices',
|
||||
'recurring_expense' => 'recurring_expenses',
|
||||
];
|
||||
|
||||
foreach($entities as $key => $value) {
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->postJson("/api/v1/{$value}/{$this->{$key}->hashed_id}/upload", $data);
|
||||
|
||||
$acc = $response->json();
|
||||
$response->assertStatus(200);
|
||||
|
||||
$this->assertCount(1, $acc['data']['documents']);
|
||||
$this->assertFalse($acc['data']['documents'][0]['is_public']);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testFileUploadIsPublicSetsAppropriately()
|
||||
{
|
||||
Storage::fake('local');
|
||||
|
||||
$file = UploadedFile::fake()->image('avatar.jpg');
|
||||
|
||||
$data = [
|
||||
'documents' => [$file],
|
||||
'is_public' => false,
|
||||
'_method' => 'PUT',
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->postJson("/api/v1/invoices/{$this->invoice->hashed_id}/upload", $data);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$acc = $response->json();
|
||||
|
||||
$this->assertCount(1, $acc['data']['documents']);
|
||||
$this->assertFalse($acc['data']['documents'][0]['is_public']);
|
||||
|
||||
$data = [
|
||||
'documents' => [$file],
|
||||
'is_public' => true,
|
||||
'_method' => 'PUT',
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->postJson("/api/v1/invoices/{$this->invoice->hashed_id}/upload", $data);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$acc = $response->json();
|
||||
|
||||
$this->assertCount(2, $acc['data']['documents']);
|
||||
$this->assertTrue($acc['data']['documents'][1]['is_public']);
|
||||
|
||||
}
|
||||
|
||||
public function testMultiFileUploadIsPublicSetsAppropriately()
|
||||
{
|
||||
Storage::fake('local');
|
||||
|
||||
$file = UploadedFile::fake()->image('avatar.jpg');
|
||||
|
||||
$data = [
|
||||
'documents' => [$file, $file],
|
||||
'is_public' => false,
|
||||
'_method' => 'PUT',
|
||||
];
|
||||
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
])->postJson("/api/v1/invoices/{$this->invoice->hashed_id}/upload", $data);
|
||||
|
||||
$response->assertStatus(200);
|
||||
$acc = $response->json();
|
||||
|
||||
$this->assertCount(2, $acc['data']['documents']);
|
||||
$this->assertFalse($acc['data']['documents'][0]['is_public']);
|
||||
$this->assertFalse($acc['data']['documents'][1]['is_public']);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -109,12 +109,12 @@ trait MockAccountData
|
||||
public $recurring_quote;
|
||||
|
||||
/**
|
||||
* @var
|
||||
* @var \App\Models\Credit
|
||||
*/
|
||||
public $credit;
|
||||
|
||||
/**
|
||||
* @var
|
||||
* @var \App\Models\Invoice
|
||||
*/
|
||||
public $invoice;
|
||||
|
||||
@ -186,6 +186,10 @@ trait MockAccountData
|
||||
|
||||
public $contact;
|
||||
|
||||
public $product;
|
||||
|
||||
public $recurring_invoice;
|
||||
|
||||
public function makeTestData()
|
||||
{
|
||||
config(['database.default' => config('ninja.db.default')]);
|
||||
@ -371,6 +375,17 @@ trait MockAccountData
|
||||
'client_id' => $this->client->id,
|
||||
]);
|
||||
|
||||
$this->product = Product::factory()->create([
|
||||
'user_id' => $user_id,
|
||||
'company_id' => $this->company->id,
|
||||
]);
|
||||
|
||||
$this->recurring_invoice = RecurringInvoice::factory()->create([
|
||||
'user_id' => $user_id,
|
||||
'company_id' => $this->company->id,
|
||||
'client_id' => $this->client->id,
|
||||
]);
|
||||
|
||||
$this->expense = Expense::factory()->create([
|
||||
'user_id' => $user_id,
|
||||
'company_id' => $this->company->id,
|
||||
|
Loading…
x
Reference in New Issue
Block a user