mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-08 12:12:48 +01:00
Improved settings navigation
This commit is contained in:
parent
d3550903f4
commit
831c81a4b9
@ -37,11 +37,11 @@ class SendRecurringInvoices extends Command
|
||||
$this->info(count($invoices).' recurring invoice(s) found');
|
||||
|
||||
foreach ($invoices as $recurInvoice) {
|
||||
$recurInvoice->account->loadLocalizationSettings($recurInvoice->client);
|
||||
$this->info('Processing Invoice '.$recurInvoice->id.' - Should send '.($recurInvoice->shouldSendToday() ? 'YES' : 'NO'));
|
||||
$invoice = $this->invoiceRepo->createRecurringInvoice($recurInvoice);
|
||||
|
||||
if ($invoice && !$invoice->isPaid()) {
|
||||
$recurInvoice->account->loadLocalizationSettings($invoice->client);
|
||||
$this->mailer->sendInvoice($invoice);
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,6 @@ use Cache;
|
||||
use Response;
|
||||
use parseCSV;
|
||||
use Request;
|
||||
|
||||
use App\Models\Affiliate;
|
||||
use App\Models\License;
|
||||
use App\Models\User;
|
||||
@ -129,9 +128,9 @@ class AccountController extends BaseController
|
||||
Session::put("show_trash:{$entityType}", $visible == 'true');
|
||||
|
||||
if ($entityType == 'user') {
|
||||
return Redirect::to('company/'.ACCOUNT_ADVANCED_SETTINGS.'/'.ACCOUNT_USER_MANAGEMENT);
|
||||
return Redirect::to('settings/'.ACCOUNT_USER_MANAGEMENT);
|
||||
} elseif ($entityType == 'token') {
|
||||
return Redirect::to('company/'.ACCOUNT_ADVANCED_SETTINGS.'/'.ACCOUNT_TOKEN_MANAGEMENT);
|
||||
return Redirect::to('settings/'.ACCOUNT_API_TOKENS);
|
||||
} else {
|
||||
return Redirect::to("{$entityType}s");
|
||||
}
|
||||
@ -143,167 +142,212 @@ class AccountController extends BaseController
|
||||
return Response::json($data);
|
||||
}
|
||||
|
||||
public function showSection($section = ACCOUNT_DETAILS, $subSection = false)
|
||||
public function showSection($section = false)
|
||||
{
|
||||
if ($section == ACCOUNT_DETAILS) {
|
||||
if (!$section) {
|
||||
return Redirect::to('/settings/' . ACCOUNT_COMPANY_DETAILS, 301);
|
||||
}
|
||||
|
||||
$oauthLoginUrls = [];
|
||||
foreach (AuthService::$providers as $provider) {
|
||||
$oauthLoginUrls[] = ['label' => $provider, 'url' => '/auth/' . strtolower($provider)];
|
||||
}
|
||||
|
||||
$data = [
|
||||
'account' => Account::with('users')->findOrFail(Auth::user()->account_id),
|
||||
'countries' => Cache::get('countries'),
|
||||
'sizes' => Cache::get('sizes'),
|
||||
'industries' => Cache::get('industries'),
|
||||
'timezones' => Cache::get('timezones'),
|
||||
'dateFormats' => Cache::get('dateFormats'),
|
||||
'datetimeFormats' => Cache::get('datetimeFormats'),
|
||||
'currencies' => Cache::get('currencies'),
|
||||
'languages' => Cache::get('languages'),
|
||||
'title' => trans('texts.company_details'),
|
||||
'user' => Auth::user(),
|
||||
'oauthProviderName' => AuthService::getProviderName(Auth::user()->oauth_provider_id),
|
||||
'oauthLoginUrls' => $oauthLoginUrls,
|
||||
];
|
||||
|
||||
return View::make('accounts.details', $data);
|
||||
if ($section == ACCOUNT_COMPANY_DETAILS) {
|
||||
return self::showCompanyDetails();
|
||||
} elseif ($section == ACCOUNT_USER_DETAILS) {
|
||||
return self::showUserDetails();
|
||||
} elseif ($section == ACCOUNT_LOCALIZATION) {
|
||||
return self::showLocalization();
|
||||
} elseif ($section == ACCOUNT_PAYMENTS) {
|
||||
|
||||
$account = Auth::user()->account;
|
||||
$account->load('account_gateways');
|
||||
$count = count($account->account_gateways);
|
||||
|
||||
if ($count == 0) {
|
||||
return Redirect::to('gateways/create');
|
||||
} else {
|
||||
return View::make('accounts.payments', [
|
||||
'showAdd' => $count < count(Gateway::$paymentTypes),
|
||||
'title' => trans('texts.online_payments')
|
||||
]);
|
||||
}
|
||||
} elseif ($section == ACCOUNT_NOTIFICATIONS) {
|
||||
$data = [
|
||||
'account' => Account::with('users')->findOrFail(Auth::user()->account_id),
|
||||
'title' => trans('texts.notifications'),
|
||||
];
|
||||
|
||||
return View::make('accounts.notifications', $data);
|
||||
return self::showOnlinePayments();
|
||||
} elseif ($section == ACCOUNT_IMPORT_EXPORT) {
|
||||
return View::make('accounts.import_export', ['title' => trans('texts.import_export')]);
|
||||
} elseif ($section == ACCOUNT_ADVANCED_SETTINGS) {
|
||||
$account = Auth::user()->account->load('country');
|
||||
} elseif ($section == ACCOUNT_INVOICE_DESIGN || $section == ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||
return self::showInvoiceDesign($section);
|
||||
} elseif ($section === ACCOUNT_TEMPLATES_AND_REMINDERS) {
|
||||
return self::showTemplates();
|
||||
} elseif ($section === ACCOUNT_PRODUCTS) {
|
||||
return self::showProducts();
|
||||
} else {
|
||||
$data = [
|
||||
'account' => $account,
|
||||
'feature' => $subSection,
|
||||
'title' => trans('texts.invoice_settings'),
|
||||
'account' => Account::with('users')->findOrFail(Auth::user()->account_id),
|
||||
'title' => trans("texts.{$section}"),
|
||||
'section' => $section
|
||||
];
|
||||
|
||||
if ($subSection == ACCOUNT_INVOICE_DESIGN
|
||||
|| $subSection == ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||
$invoice = new stdClass();
|
||||
$client = new stdClass();
|
||||
$contact = new stdClass();
|
||||
$invoiceItem = new stdClass();
|
||||
|
||||
$client->name = 'Sample Client';
|
||||
$client->address1 = '';
|
||||
$client->city = '';
|
||||
$client->state = '';
|
||||
$client->postal_code = '';
|
||||
$client->work_phone = '';
|
||||
$client->work_email = '';
|
||||
|
||||
$invoice->invoice_number = $account->getNextInvoiceNumber();
|
||||
$invoice->invoice_date = Utils::fromSqlDate(date('Y-m-d'));
|
||||
$invoice->account = json_decode($account->toJson());
|
||||
$invoice->amount = $invoice->balance = 100;
|
||||
|
||||
$invoice->terms = trim($account->invoice_terms);
|
||||
$invoice->invoice_footer = trim($account->invoice_footer);
|
||||
|
||||
$contact->email = 'contact@gmail.com';
|
||||
$client->contacts = [$contact];
|
||||
|
||||
$invoiceItem->cost = 100;
|
||||
$invoiceItem->qty = 1;
|
||||
$invoiceItem->notes = 'Notes';
|
||||
$invoiceItem->product_key = 'Item';
|
||||
|
||||
$invoice->client = $client;
|
||||
$invoice->invoice_items = [$invoiceItem];
|
||||
|
||||
$data['account'] = $account;
|
||||
$data['invoice'] = $invoice;
|
||||
$data['invoiceLabels'] = json_decode($account->invoice_labels) ?: [];
|
||||
$data['title'] = trans('texts.invoice_design');
|
||||
$data['invoiceDesigns'] = InvoiceDesign::getDesigns();
|
||||
|
||||
$design = false;
|
||||
foreach ($data['invoiceDesigns'] as $item) {
|
||||
if ($item->id == $account->invoice_design_id) {
|
||||
$design = $item->javascript;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($subSection == ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||
$data['customDesign'] = ($account->custom_design && !$design) ? $account->custom_design : $design;
|
||||
}
|
||||
} else if ($subSection == ACCOUNT_TEMPLATES_AND_REMINDERS) {
|
||||
$data['templates'] = [];
|
||||
$data['defaultTemplates'] = [];
|
||||
foreach ([ENTITY_INVOICE, ENTITY_QUOTE, ENTITY_PAYMENT, REMINDER1, REMINDER2, REMINDER3] as $type) {
|
||||
$data['templates'][$type] = [
|
||||
'subject' => $account->getEmailSubject($type),
|
||||
'template' => $account->getEmailTemplate($type),
|
||||
];
|
||||
$data['defaultTemplates'][$type] = [
|
||||
'subject' => $account->getDefaultEmailSubject($type),
|
||||
'template' => $account->getDefaultEmailTemplate($type),
|
||||
];
|
||||
}
|
||||
$data['emailFooter'] = $account->getEmailFooter();
|
||||
$data['title'] = trans('texts.email_templates');
|
||||
} else if ($subSection == ACCOUNT_USER_MANAGEMENT) {
|
||||
$data['title'] = trans('texts.users_and_tokens');
|
||||
}
|
||||
|
||||
return View::make("accounts.{$subSection}", $data);
|
||||
} elseif ($section == ACCOUNT_PRODUCTS) {
|
||||
$data = [
|
||||
'account' => Auth::user()->account,
|
||||
'title' => trans('texts.product_library'),
|
||||
];
|
||||
|
||||
return View::make('accounts.products', $data);
|
||||
return View::make("accounts.{$section}", $data);
|
||||
}
|
||||
}
|
||||
|
||||
public function doSection($section = ACCOUNT_DETAILS, $subSection = false)
|
||||
private function showCompanyDetails()
|
||||
{
|
||||
if ($section == ACCOUNT_DETAILS) {
|
||||
return AccountController::saveDetails();
|
||||
} elseif ($section == ACCOUNT_IMPORT_EXPORT) {
|
||||
return AccountController::importFile();
|
||||
} elseif ($section == ACCOUNT_MAP) {
|
||||
return AccountController::mapFile();
|
||||
} elseif ($section == ACCOUNT_NOTIFICATIONS) {
|
||||
return AccountController::saveNotifications();
|
||||
} elseif ($section == ACCOUNT_EXPORT) {
|
||||
return AccountController::export();
|
||||
} elseif ($section == ACCOUNT_ADVANCED_SETTINGS) {
|
||||
if ($subSection == ACCOUNT_INVOICE_SETTINGS) {
|
||||
return AccountController::saveInvoiceSettings();
|
||||
} elseif ($subSection == ACCOUNT_INVOICE_DESIGN) {
|
||||
return AccountController::saveInvoiceDesign();
|
||||
} elseif ($subSection == ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||
return AccountController::saveCustomizeDesign();
|
||||
} elseif ($subSection == ACCOUNT_TEMPLATES_AND_REMINDERS) {
|
||||
return AccountController::saveEmailTemplates();
|
||||
$data = [
|
||||
'account' => Account::with('users')->findOrFail(Auth::user()->account_id),
|
||||
'countries' => Cache::get('countries'),
|
||||
'sizes' => Cache::get('sizes'),
|
||||
'industries' => Cache::get('industries'),
|
||||
'title' => trans('texts.company_details'),
|
||||
];
|
||||
|
||||
return View::make('accounts.details', $data);
|
||||
}
|
||||
|
||||
private function showUserDetails()
|
||||
{
|
||||
$oauthLoginUrls = [];
|
||||
foreach (AuthService::$providers as $provider) {
|
||||
$oauthLoginUrls[] = ['label' => $provider, 'url' => '/auth/' . strtolower($provider)];
|
||||
}
|
||||
|
||||
$data = [
|
||||
'account' => Account::with('users')->findOrFail(Auth::user()->account_id),
|
||||
'title' => trans('texts.user_details'),
|
||||
'user' => Auth::user(),
|
||||
'oauthProviderName' => AuthService::getProviderName(Auth::user()->oauth_provider_id),
|
||||
'oauthLoginUrls' => $oauthLoginUrls,
|
||||
];
|
||||
|
||||
return View::make('accounts.user_details', $data);
|
||||
}
|
||||
|
||||
private function showLocalization()
|
||||
{
|
||||
$data = [
|
||||
'account' => Account::with('users')->findOrFail(Auth::user()->account_id),
|
||||
'timezones' => Cache::get('timezones'),
|
||||
'dateFormats' => Cache::get('dateFormats'),
|
||||
'datetimeFormats' => Cache::get('datetimeFormats'),
|
||||
'currencies' => Cache::get('currencies'),
|
||||
'languages' => Cache::get('languages'),
|
||||
'title' => trans('texts.localization'),
|
||||
];
|
||||
|
||||
return View::make('accounts.localization', $data);
|
||||
}
|
||||
|
||||
private function showOnlinePayments()
|
||||
{
|
||||
$account = Auth::user()->account;
|
||||
$account->load('account_gateways');
|
||||
$count = count($account->account_gateways);
|
||||
|
||||
if ($count == 0) {
|
||||
return Redirect::to('gateways/create');
|
||||
} else {
|
||||
return View::make('accounts.payments', [
|
||||
'showAdd' => $count < count(Gateway::$paymentTypes),
|
||||
'title' => trans('texts.online_payments')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
private function showProducts()
|
||||
{
|
||||
$data = [
|
||||
'account' => Auth::user()->account,
|
||||
'title' => trans('texts.product_library'),
|
||||
];
|
||||
|
||||
return View::make('accounts.products', $data);
|
||||
}
|
||||
|
||||
private function showInvoiceDesign($section)
|
||||
{
|
||||
$account = Auth::user()->account->load('country');
|
||||
$invoice = new stdClass();
|
||||
$client = new stdClass();
|
||||
$contact = new stdClass();
|
||||
$invoiceItem = new stdClass();
|
||||
|
||||
$client->name = 'Sample Client';
|
||||
$client->address1 = '';
|
||||
$client->city = '';
|
||||
$client->state = '';
|
||||
$client->postal_code = '';
|
||||
$client->work_phone = '';
|
||||
$client->work_email = '';
|
||||
|
||||
$invoice->invoice_number = $account->getNextInvoiceNumber();
|
||||
$invoice->invoice_date = Utils::fromSqlDate(date('Y-m-d'));
|
||||
$invoice->account = json_decode($account->toJson());
|
||||
$invoice->amount = $invoice->balance = 100;
|
||||
|
||||
$invoice->terms = trim($account->invoice_terms);
|
||||
$invoice->invoice_footer = trim($account->invoice_footer);
|
||||
|
||||
$contact->email = 'contact@gmail.com';
|
||||
$client->contacts = [$contact];
|
||||
|
||||
$invoiceItem->cost = 100;
|
||||
$invoiceItem->qty = 1;
|
||||
$invoiceItem->notes = 'Notes';
|
||||
$invoiceItem->product_key = 'Item';
|
||||
|
||||
$invoice->client = $client;
|
||||
$invoice->invoice_items = [$invoiceItem];
|
||||
|
||||
$data['account'] = $account;
|
||||
$data['invoice'] = $invoice;
|
||||
$data['invoiceLabels'] = json_decode($account->invoice_labels) ?: [];
|
||||
$data['title'] = trans('texts.invoice_design');
|
||||
$data['invoiceDesigns'] = InvoiceDesign::getDesigns();
|
||||
$data['section'] = $section;
|
||||
|
||||
$design = false;
|
||||
foreach ($data['invoiceDesigns'] as $item) {
|
||||
if ($item->id == $account->invoice_design_id) {
|
||||
$design = $item->javascript;
|
||||
break;
|
||||
}
|
||||
} elseif ($section == ACCOUNT_PRODUCTS) {
|
||||
}
|
||||
|
||||
if ($section == ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||
$data['customDesign'] = ($account->custom_design && !$design) ? $account->custom_design : $design;
|
||||
}
|
||||
return View::make("accounts.{$section}", $data);
|
||||
}
|
||||
|
||||
private function showTemplates()
|
||||
{
|
||||
$account = Auth::user()->account->load('country');
|
||||
$data['account'] = $account;
|
||||
$data['templates'] = [];
|
||||
$data['defaultTemplates'] = [];
|
||||
foreach ([ENTITY_INVOICE, ENTITY_QUOTE, ENTITY_PAYMENT, REMINDER1, REMINDER2, REMINDER3] as $type) {
|
||||
$data['templates'][$type] = [
|
||||
'subject' => $account->getEmailSubject($type),
|
||||
'template' => $account->getEmailTemplate($type),
|
||||
];
|
||||
$data['defaultTemplates'][$type] = [
|
||||
'subject' => $account->getDefaultEmailSubject($type),
|
||||
'template' => $account->getDefaultEmailTemplate($type),
|
||||
];
|
||||
}
|
||||
$data['emailFooter'] = $account->getEmailFooter();
|
||||
$data['title'] = trans('texts.email_templates');
|
||||
return View::make('accounts.templates_and_reminders', $data);
|
||||
}
|
||||
|
||||
public function doSection($section = ACCOUNT_COMPANY_DETAILS)
|
||||
{
|
||||
if ($section === ACCOUNT_COMPANY_DETAILS) {
|
||||
return AccountController::saveDetails();
|
||||
} elseif ($section === ACCOUNT_USER_DETAILS) {
|
||||
return AccountController::saveUserDetails();
|
||||
} elseif ($section === ACCOUNT_LOCALIZATION) {
|
||||
return AccountController::saveLocalization();
|
||||
} elseif ($section === ACCOUNT_IMPORT_EXPORT) {
|
||||
return AccountController::importFile();
|
||||
} elseif ($section === ACCOUNT_MAP) {
|
||||
return AccountController::mapFile();
|
||||
} elseif ($section === ACCOUNT_NOTIFICATIONS) {
|
||||
return AccountController::saveNotifications();
|
||||
} elseif ($section === ACCOUNT_EXPORT) {
|
||||
return AccountController::export();
|
||||
} elseif ($section === ACCOUNT_INVOICE_SETTINGS) {
|
||||
return AccountController::saveInvoiceSettings();
|
||||
} elseif ($section === ACCOUNT_INVOICE_DESIGN) {
|
||||
return AccountController::saveInvoiceDesign();
|
||||
} elseif ($section === ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||
return AccountController::saveCustomizeDesign();
|
||||
} elseif ($section === ACCOUNT_TEMPLATES_AND_REMINDERS) {
|
||||
return AccountController::saveEmailTemplates();
|
||||
} elseif ($section === ACCOUNT_PRODUCTS) {
|
||||
return AccountController::saveProducts();
|
||||
}
|
||||
}
|
||||
@ -318,7 +362,7 @@ class AccountController extends BaseController
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
}
|
||||
|
||||
return Redirect::to('company/advanced_settings/customize_design');
|
||||
return Redirect::to('settings/' . ACCOUNT_CUSTOMIZE_DESIGN);
|
||||
}
|
||||
|
||||
private function saveEmailTemplates()
|
||||
@ -351,7 +395,7 @@ class AccountController extends BaseController
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
}
|
||||
|
||||
return Redirect::to('company/advanced_settings/templates_and_reminders');
|
||||
return Redirect::to('settings/' . ACCOUNT_TEMPLATES_AND_REMINDERS);
|
||||
}
|
||||
|
||||
private function saveProducts()
|
||||
@ -363,7 +407,7 @@ class AccountController extends BaseController
|
||||
$account->save();
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return Redirect::to('company/products');
|
||||
return Redirect::to('settings/' . ACCOUNT_PRODUCTS);
|
||||
}
|
||||
|
||||
private function saveInvoiceSettings()
|
||||
@ -386,7 +430,7 @@ class AccountController extends BaseController
|
||||
$validator = Validator::make(Input::all(), $rules);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return Redirect::to('company/details')
|
||||
return Redirect::to('settings/' . ACCOUNT_INVOICE_SETTINGS)
|
||||
->withErrors($validator)
|
||||
->withInput();
|
||||
} else {
|
||||
@ -420,8 +464,7 @@ class AccountController extends BaseController
|
||||
|
||||
if (!$account->share_counter && $account->invoice_number_prefix == $account->quote_number_prefix) {
|
||||
Session::flash('error', trans('texts.invalid_counter'));
|
||||
|
||||
return Redirect::to('company/advanced_settings/invoice_settings')->withInput();
|
||||
return Redirect::to('settings/' . ACCOUNT_INVOICE_SETTINGS)->withInput();
|
||||
} else {
|
||||
$account->save();
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
@ -429,7 +472,7 @@ class AccountController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
return Redirect::to('company/advanced_settings/invoice_settings');
|
||||
return Redirect::to('settings/' . ACCOUNT_INVOICE_SETTINGS);
|
||||
}
|
||||
|
||||
private function saveInvoiceDesign()
|
||||
@ -457,7 +500,7 @@ class AccountController extends BaseController
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
}
|
||||
|
||||
return Redirect::to('company/advanced_settings/invoice_design');
|
||||
return Redirect::to('settings/' . ACCOUNT_INVOICE_DESIGN);
|
||||
}
|
||||
|
||||
private function export()
|
||||
@ -568,7 +611,7 @@ class AccountController extends BaseController
|
||||
if ($file == null) {
|
||||
Session::flash('error', trans('texts.select_file'));
|
||||
|
||||
return Redirect::to('company/import_export');
|
||||
return Redirect::to('settings/' . ACCOUNT_IMPORT_EXPORT);
|
||||
}
|
||||
|
||||
$name = $file->getRealPath();
|
||||
@ -582,7 +625,7 @@ class AccountController extends BaseController
|
||||
$message = trans('texts.limit_clients', ['count' => Auth::user()->getMaxNumClients()]);
|
||||
Session::flash('error', $message);
|
||||
|
||||
return Redirect::to('company/import_export');
|
||||
return Redirect::to('settings/' . ACCOUNT_IMPORT_EXPORT);
|
||||
}
|
||||
|
||||
Session::put('data', $csv->data);
|
||||
@ -680,7 +723,7 @@ class AccountController extends BaseController
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
|
||||
return Redirect::to('company/notifications');
|
||||
return Redirect::to('settings/' . ACCOUNT_NOTIFICATIONS);
|
||||
}
|
||||
|
||||
private function saveDetails()
|
||||
@ -690,16 +733,10 @@ class AccountController extends BaseController
|
||||
'logo' => 'sometimes|max:1024|mimes:jpeg,gif,png',
|
||||
);
|
||||
|
||||
$user = Auth::user()->account->users()->orderBy('id')->first();
|
||||
|
||||
if (Auth::user()->id === $user->id) {
|
||||
$rules['email'] = 'email|required|unique:users,email,'.$user->id.',id';
|
||||
}
|
||||
|
||||
$validator = Validator::make(Input::all(), $rules);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return Redirect::to('company/details')
|
||||
return Redirect::to('settings/' . ACCOUNT_COMPANY_DETAILS)
|
||||
->withErrors($validator)
|
||||
->withInput();
|
||||
} else {
|
||||
@ -717,29 +754,7 @@ class AccountController extends BaseController
|
||||
$account->country_id = Input::get('country_id') ? Input::get('country_id') : null;
|
||||
$account->size_id = Input::get('size_id') ? Input::get('size_id') : null;
|
||||
$account->industry_id = Input::get('industry_id') ? Input::get('industry_id') : null;
|
||||
$account->timezone_id = Input::get('timezone_id') ? Input::get('timezone_id') : null;
|
||||
$account->date_format_id = Input::get('date_format_id') ? Input::get('date_format_id') : null;
|
||||
$account->datetime_format_id = Input::get('datetime_format_id') ? Input::get('datetime_format_id') : null;
|
||||
$account->currency_id = Input::get('currency_id') ? Input::get('currency_id') : 1; // US Dollar
|
||||
$account->language_id = Input::get('language_id') ? Input::get('language_id') : 1; // English
|
||||
$account->military_time = Input::get('military_time') ? true : false;
|
||||
$account->save();
|
||||
|
||||
$user = Auth::user();
|
||||
$user->first_name = trim(Input::get('first_name'));
|
||||
$user->last_name = trim(Input::get('last_name'));
|
||||
$user->username = trim(Input::get('email'));
|
||||
$user->email = trim(strtolower(Input::get('email')));
|
||||
$user->phone = trim(Input::get('phone'));
|
||||
if (Utils::isNinja()) {
|
||||
if (Input::get('referral_code') && !$user->referral_code) {
|
||||
$user->referral_code = $this->accountRepo->getReferralCode();
|
||||
}
|
||||
}
|
||||
if (Utils::isNinjaDev()) {
|
||||
$user->dark_mode = Input::get('dark_mode') ? true : false;
|
||||
}
|
||||
$user->save();
|
||||
|
||||
/* Logo image file */
|
||||
if ($file = Input::file('logo')) {
|
||||
@ -770,10 +785,61 @@ class AccountController extends BaseController
|
||||
Event::fire(new UserSettingsChanged());
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return Redirect::to('company/details');
|
||||
return Redirect::to('settings/' . ACCOUNT_COMPANY_DETAILS);
|
||||
}
|
||||
}
|
||||
|
||||
private function saveUserDetails()
|
||||
{
|
||||
$user = Auth::user();
|
||||
$rules = ['email' => 'email|required|unique:users,email,'.$user->id.',id'];
|
||||
$validator = Validator::make(Input::all(), $rules);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_DETAILS)
|
||||
->withErrors($validator)
|
||||
->withInput();
|
||||
} else {
|
||||
$user->first_name = trim(Input::get('first_name'));
|
||||
$user->last_name = trim(Input::get('last_name'));
|
||||
$user->username = trim(Input::get('email'));
|
||||
$user->email = trim(strtolower(Input::get('email')));
|
||||
$user->phone = trim(Input::get('phone'));
|
||||
|
||||
if (Utils::isNinja()) {
|
||||
if (Input::get('referral_code') && !$user->referral_code) {
|
||||
$user->referral_code = $this->accountRepo->getReferralCode();
|
||||
}
|
||||
}
|
||||
if (Utils::isNinjaDev()) {
|
||||
$user->dark_mode = Input::get('dark_mode') ? true : false;
|
||||
}
|
||||
|
||||
$user->save();
|
||||
|
||||
Event::fire(new UserSettingsChanged());
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_DETAILS);
|
||||
}
|
||||
}
|
||||
|
||||
private function saveLocalization()
|
||||
{
|
||||
$account = Auth::user()->account;
|
||||
$account->timezone_id = Input::get('timezone_id') ? Input::get('timezone_id') : null;
|
||||
$account->date_format_id = Input::get('date_format_id') ? Input::get('date_format_id') : null;
|
||||
$account->datetime_format_id = Input::get('datetime_format_id') ? Input::get('datetime_format_id') : null;
|
||||
$account->currency_id = Input::get('currency_id') ? Input::get('currency_id') : 1; // US Dollar
|
||||
$account->language_id = Input::get('language_id') ? Input::get('language_id') : 1; // English
|
||||
$account->military_time = Input::get('military_time') ? true : false;
|
||||
$account->save();
|
||||
|
||||
Event::fire(new UserSettingsChanged());
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return Redirect::to('settings/' . ACCOUNT_LOCALIZATION);
|
||||
}
|
||||
|
||||
public function removeLogo()
|
||||
{
|
||||
File::delete('logo/'.Auth::user()->account->account_key.'.jpg');
|
||||
@ -781,7 +847,7 @@ class AccountController extends BaseController
|
||||
|
||||
Session::flash('message', trans('texts.removed_logo'));
|
||||
|
||||
return Redirect::to('company/details');
|
||||
return Redirect::to('settings/' . ACCOUNT_COMPANY_DETAILS);
|
||||
}
|
||||
|
||||
public function checkEmail()
|
||||
@ -879,6 +945,26 @@ class AccountController extends BaseController
|
||||
$user = Auth::user();
|
||||
$this->userMailer->sendConfirmation($user);
|
||||
|
||||
return Redirect::to('/company/details')->with('message', trans('texts.confirmation_resent'));
|
||||
return Redirect::to('/settings/' . ACCOUNT_COMPANY_DETAILS)->with('message', trans('texts.confirmation_resent'));
|
||||
}
|
||||
|
||||
public function redirectLegacy($section, $subSection = false)
|
||||
{
|
||||
if ($section === 'details') {
|
||||
$section = ACCOUNT_COMPANY_DETAILS;
|
||||
} elseif ($section === 'payments') {
|
||||
$section = ACCOUNT_PAYMENTS;
|
||||
} elseif ($section === 'advanced_settings') {
|
||||
$section = $subSection;
|
||||
if ($section === 'token_management') {
|
||||
$section = ACCOUNT_API_TOKENS;
|
||||
}
|
||||
}
|
||||
|
||||
if (!in_array($section, array_merge(Account::$basicSettings, Account::$advancedSettings))) {
|
||||
$section = ACCOUNT_COMPANY_DETAILS;
|
||||
}
|
||||
|
||||
return Redirect::to("/settings/$section/", 301);
|
||||
}
|
||||
}
|
||||
|
@ -159,7 +159,6 @@ class AccountGatewayController extends BaseController
|
||||
'gateways' => $gateways,
|
||||
'creditCardTypes' => $creditCards,
|
||||
'tokenBillingOptions' => $tokenBillingOptions,
|
||||
'showBreadcrumbs' => false,
|
||||
'countGateways' => count($currentGateways)
|
||||
];
|
||||
}
|
||||
@ -173,7 +172,7 @@ class AccountGatewayController extends BaseController
|
||||
|
||||
Session::flash('message', trans('texts.deleted_gateway'));
|
||||
|
||||
return Redirect::to('company/payments');
|
||||
return Redirect::to('settings/' . ACCOUNT_PAYMENTS);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -61,7 +61,7 @@ class AuthController extends Controller {
|
||||
$this->accountRepo->unlinkUserFromOauth(Auth::user());
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return redirect()->to('/company/details');
|
||||
return redirect()->to('/settings/' . ACCOUNT_COMPANY_DETAILS);
|
||||
}
|
||||
|
||||
public function getLoginWrapper()
|
||||
|
@ -45,7 +45,6 @@ class ProductController extends BaseController
|
||||
public function edit($publicId)
|
||||
{
|
||||
$data = [
|
||||
'showBreadcrumbs' => false,
|
||||
'product' => Product::scope($publicId)->firstOrFail(),
|
||||
'method' => 'PUT',
|
||||
'url' => 'products/'.$publicId,
|
||||
@ -58,12 +57,11 @@ class ProductController extends BaseController
|
||||
public function create()
|
||||
{
|
||||
$data = [
|
||||
'showBreadcrumbs' => false,
|
||||
'product' => null,
|
||||
'method' => 'POST',
|
||||
'url' => 'products',
|
||||
'title' => trans('texts.create_product'),
|
||||
];
|
||||
'product' => null,
|
||||
'method' => 'POST',
|
||||
'url' => 'products',
|
||||
'title' => trans('texts.create_product'),
|
||||
];
|
||||
|
||||
return View::make('accounts.product', $data);
|
||||
}
|
||||
@ -94,7 +92,7 @@ class ProductController extends BaseController
|
||||
$message = $productPublicId ? trans('texts.updated_product') : trans('texts.created_product');
|
||||
Session::flash('message', $message);
|
||||
|
||||
return Redirect::to('company/products');
|
||||
return Redirect::to('settings/' . ACCOUNT_PRODUCTS);
|
||||
}
|
||||
|
||||
public function archive($publicId)
|
||||
@ -104,6 +102,6 @@ class ProductController extends BaseController
|
||||
|
||||
Session::flash('message', trans('texts.archived_product'));
|
||||
|
||||
return Redirect::to('company/products');
|
||||
return Redirect::to('settings/' . ACCOUNT_PRODUCTS);
|
||||
}
|
||||
}
|
||||
|
@ -33,7 +33,6 @@ class ReportController extends BaseController
|
||||
}
|
||||
|
||||
$data = [
|
||||
'feature' => ACCOUNT_DATA_VISUALIZATIONS,
|
||||
'clients' => $clients,
|
||||
'message' => $message,
|
||||
];
|
||||
@ -276,7 +275,6 @@ class ReportController extends BaseController
|
||||
'startDate' => $startDate->format(Session::get(SESSION_DATE_FORMAT)),
|
||||
'endDate' => $endDate->format(Session::get(SESSION_DATE_FORMAT)),
|
||||
'groupBy' => $groupBy,
|
||||
'feature' => ACCOUNT_CHART_BUILDER,
|
||||
'displayData' => $displayData,
|
||||
'columns' => $columns,
|
||||
'reportTotals' => $reportTotals,
|
||||
|
@ -67,7 +67,6 @@ class TokenController extends BaseController
|
||||
->where('public_id', '=', $publicId)->firstOrFail();
|
||||
|
||||
$data = [
|
||||
'showBreadcrumbs' => false,
|
||||
'token' => $token,
|
||||
'method' => 'PUT',
|
||||
'url' => 'tokens/'.$publicId,
|
||||
@ -94,12 +93,10 @@ class TokenController extends BaseController
|
||||
public function create()
|
||||
{
|
||||
$data = [
|
||||
'showBreadcrumbs' => false,
|
||||
'token' => null,
|
||||
'method' => 'POST',
|
||||
'url' => 'tokens',
|
||||
'title' => trans('texts.add_token'),
|
||||
'feature' => 'tokens',
|
||||
];
|
||||
|
||||
return View::make('accounts.token', $data);
|
||||
@ -115,7 +112,7 @@ class TokenController extends BaseController
|
||||
|
||||
Session::flash('message', trans('texts.deleted_token'));
|
||||
|
||||
return Redirect::to('company/advanced_settings/token_management');
|
||||
return Redirect::to('settings/' . ACCOUNT_API_TOKENS);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -163,7 +160,7 @@ class TokenController extends BaseController
|
||||
Session::flash('message', $message);
|
||||
}
|
||||
|
||||
return Redirect::to('company/advanced_settings/token_management');
|
||||
return Redirect::to('settings/' . ACCOUNT_API_TOKENS);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -106,7 +106,6 @@ class UserController extends BaseController
|
||||
->where('public_id', '=', $publicId)->firstOrFail();
|
||||
|
||||
$data = [
|
||||
'showBreadcrumbs' => false,
|
||||
'user' => $user,
|
||||
'method' => 'PUT',
|
||||
'url' => 'users/'.$publicId,
|
||||
@ -134,24 +133,22 @@ class UserController extends BaseController
|
||||
{
|
||||
if (!Auth::user()->registered) {
|
||||
Session::flash('error', trans('texts.register_to_add_user'));
|
||||
return Redirect::to('company/advanced_settings/user_management');
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_MANAGEMENT);
|
||||
}
|
||||
if (!Auth::user()->confirmed) {
|
||||
Session::flash('error', trans('texts.confirmation_required'));
|
||||
return Redirect::to('company/advanced_settings/user_management');
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_MANAGEMENT);
|
||||
}
|
||||
|
||||
if (Utils::isNinja()) {
|
||||
$count = User::where('account_id', '=', Auth::user()->account_id)->count();
|
||||
if ($count >= MAX_NUM_USERS) {
|
||||
Session::flash('error', trans('texts.limit_users'));
|
||||
|
||||
return Redirect::to('company/advanced_settings/user_management');
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_MANAGEMENT);
|
||||
}
|
||||
}
|
||||
|
||||
$data = [
|
||||
'showBreadcrumbs' => false,
|
||||
'user' => null,
|
||||
'method' => 'POST',
|
||||
'url' => 'users',
|
||||
@ -171,7 +168,7 @@ class UserController extends BaseController
|
||||
|
||||
Session::flash('message', trans('texts.deleted_user'));
|
||||
|
||||
return Redirect::to('company/advanced_settings/user_management');
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_MANAGEMENT);
|
||||
}
|
||||
|
||||
public function restoreUser($userPublicId)
|
||||
@ -184,7 +181,7 @@ class UserController extends BaseController
|
||||
|
||||
Session::flash('message', trans('texts.restored_user'));
|
||||
|
||||
return Redirect::to('company/advanced_settings/user_management');
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_MANAGEMENT);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -247,7 +244,7 @@ class UserController extends BaseController
|
||||
Session::flash('message', $message);
|
||||
}
|
||||
|
||||
return Redirect::to('company/advanced_settings/user_management');
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_MANAGEMENT);
|
||||
}
|
||||
|
||||
public function sendConfirmation($userPublicId)
|
||||
@ -258,7 +255,7 @@ class UserController extends BaseController
|
||||
$this->userMailer->sendConfirmation($user, Auth::user());
|
||||
Session::flash('message', trans('texts.sent_invite'));
|
||||
|
||||
return Redirect::to('company/advanced_settings/user_management');
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_MANAGEMENT);
|
||||
}
|
||||
|
||||
|
||||
|
@ -121,14 +121,16 @@ Route::group(['middleware' => 'auth'], function() {
|
||||
Route::resource('products', 'ProductController');
|
||||
Route::get('products/{product_id}/archive', 'ProductController@archive');
|
||||
|
||||
Route::get('company/advanced_settings/data_visualizations', 'ReportController@d3');
|
||||
Route::get('company/advanced_settings/charts_and_reports', 'ReportController@showReports');
|
||||
Route::post('company/advanced_settings/charts_and_reports', 'ReportController@showReports');
|
||||
Route::get('company/{section}/{subSection?}', 'AccountController@redirectLegacy');
|
||||
Route::get('settings/data_visualizations', 'ReportController@d3');
|
||||
Route::get('settings/charts_and_reports', 'ReportController@showReports');
|
||||
Route::post('settings/charts_and_reports', 'ReportController@showReports');
|
||||
|
||||
Route::post('company/cancel_account', 'AccountController@cancelAccount');
|
||||
Route::post('settings/cancel_account', 'AccountController@cancelAccount');
|
||||
Route::get('settings/{section?}', 'AccountController@showSection');
|
||||
Route::post('settings/{section?}', 'AccountController@doSection');
|
||||
|
||||
Route::get('account/getSearchData', array('as' => 'getSearchData', 'uses' => 'AccountController@getSearchData'));
|
||||
Route::get('company/{section?}/{sub_section?}', 'AccountController@showSection');
|
||||
Route::post('company/{section?}/{sub_section?}', 'AccountController@doSection');
|
||||
Route::post('user/setTheme', 'UserController@setTheme');
|
||||
Route::post('remove_logo', 'AccountController@removeLogo');
|
||||
Route::post('account/go_pro', 'AccountController@enableProPlan');
|
||||
@ -183,7 +185,6 @@ Route::group(['middleware' => 'auth'], function() {
|
||||
Route::post('credits/bulk', 'CreditController@bulk');
|
||||
|
||||
get('/resend_confirmation', 'AccountController@resendConfirmation');
|
||||
//Route::resource('timesheets', 'TimesheetController');
|
||||
});
|
||||
|
||||
// Route group for API
|
||||
@ -253,21 +254,26 @@ if (!defined('CONTACT_EMAIL')) {
|
||||
define('PERSON_CONTACT', 'contact');
|
||||
define('PERSON_USER', 'user');
|
||||
|
||||
define('ACCOUNT_DETAILS', 'details');
|
||||
define('BASIC_SETTINGS', 'basic_settings');
|
||||
define('ADVANCED_SETTINGS', 'advanced_settings');
|
||||
|
||||
define('ACCOUNT_COMPANY_DETAILS', 'company_details');
|
||||
define('ACCOUNT_USER_DETAILS', 'user_details');
|
||||
define('ACCOUNT_LOCALIZATION', 'localization');
|
||||
define('ACCOUNT_NOTIFICATIONS', 'notifications');
|
||||
define('ACCOUNT_IMPORT_EXPORT', 'import_export');
|
||||
define('ACCOUNT_PAYMENTS', 'payments');
|
||||
define('ACCOUNT_PAYMENTS', 'online_payments');
|
||||
define('ACCOUNT_MAP', 'import_map');
|
||||
define('ACCOUNT_EXPORT', 'export');
|
||||
define('ACCOUNT_PRODUCTS', 'products');
|
||||
define('ACCOUNT_ADVANCED_SETTINGS', 'advanced_settings');
|
||||
define('ACCOUNT_INVOICE_SETTINGS', 'invoice_settings');
|
||||
define('ACCOUNT_INVOICE_DESIGN', 'invoice_design');
|
||||
define('ACCOUNT_CHART_BUILDER', 'chart_builder');
|
||||
define('ACCOUNT_CHARTS_AND_REPORTS', 'charts_and_reports');
|
||||
define('ACCOUNT_USER_MANAGEMENT', 'user_management');
|
||||
define('ACCOUNT_DATA_VISUALIZATIONS', 'data_visualizations');
|
||||
define('ACCOUNT_TEMPLATES_AND_REMINDERS', 'templates_and_reminders');
|
||||
define('ACCOUNT_TOKEN_MANAGEMENT', 'token_management');
|
||||
define('ACCOUNT_API_TOKENS', 'api_tokens');
|
||||
define('ACCOUNT_CUSTOMIZE_DESIGN', 'customize_design');
|
||||
|
||||
|
||||
|
@ -15,6 +15,26 @@ class Account extends Eloquent
|
||||
protected $dates = ['deleted_at'];
|
||||
protected $hidden = ['ip'];
|
||||
|
||||
public static $basicSettings = [
|
||||
ACCOUNT_COMPANY_DETAILS,
|
||||
ACCOUNT_USER_DETAILS,
|
||||
ACCOUNT_LOCALIZATION,
|
||||
ACCOUNT_PAYMENTS,
|
||||
ACCOUNT_PRODUCTS,
|
||||
ACCOUNT_NOTIFICATIONS,
|
||||
ACCOUNT_IMPORT_EXPORT,
|
||||
];
|
||||
|
||||
public static $advancedSettings = [
|
||||
ACCOUNT_INVOICE_DESIGN,
|
||||
ACCOUNT_INVOICE_SETTINGS,
|
||||
ACCOUNT_TEMPLATES_AND_REMINDERS,
|
||||
ACCOUNT_CHARTS_AND_REPORTS,
|
||||
ACCOUNT_DATA_VISUALIZATIONS,
|
||||
ACCOUNT_USER_MANAGEMENT,
|
||||
ACCOUNT_API_TOKENS,
|
||||
];
|
||||
|
||||
/*
|
||||
protected $casts = [
|
||||
'invoice_settings' => 'object',
|
||||
|
@ -145,7 +145,6 @@ class ContactMailer extends Mailer
|
||||
|
||||
$subject = $this->processVariables($emailSubject, $variables);
|
||||
$data['invoice_id'] = $payment->invoice->id;
|
||||
$invoice->updateCachedPDF();
|
||||
|
||||
if ($user->email && $contact->email) {
|
||||
$this->sendTo($contact->email, $user->email, $accountName, $subject, $view, $data);
|
||||
|
@ -49,7 +49,7 @@ class AuthService
|
||||
Session::flash('warning', trans('texts.success_message'));
|
||||
} else {
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return redirect()->to('/company/details');
|
||||
return redirect()->to('/settings/' . ACCOUNT_COMPANY_DETAILS);
|
||||
}
|
||||
} else {
|
||||
Session::flash('error', $result);
|
||||
|
10
public/css/built.css
vendored
10
public/css/built.css
vendored
@ -3340,4 +3340,14 @@ ul.user-accounts a:hover div.remove {
|
||||
.tooltip-inner {
|
||||
text-align:left;
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
.list-group-item.selected:before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 2px;
|
||||
content: "";
|
||||
background-color: #e37329;
|
||||
}
|
10
public/css/built.public.css
vendored
10
public/css/built.public.css
vendored
@ -866,11 +866,11 @@ body {
|
||||
}
|
||||
|
||||
/* Hide bootstrap sort header icons */
|
||||
table.data-table thead .sorting:after { content: '' !important }
|
||||
table.data-table thead .sorting_asc:after { content: '' !important }
|
||||
table.data-table thead .sorting_desc:after { content: '' !important}
|
||||
table.data-table thead .sorting_asc_disabled:after { content: '' !important }
|
||||
table.data-table thead .sorting_desc_disabled:after { content: '' !important }
|
||||
table.table thead .sorting:after { content: '' !important }
|
||||
table.table thead .sorting_asc:after { content: '' !important }
|
||||
table.table thead .sorting_desc:after { content: '' !important }
|
||||
table.table thead .sorting_asc_disabled:after { content: '' !important }
|
||||
table.table thead .sorting_desc_disabled:after { content: '' !important }
|
||||
|
||||
.dataTables_length {
|
||||
padding-left: 20px;
|
||||
|
11
public/css/style.css
vendored
11
public/css/style.css
vendored
@ -990,4 +990,15 @@ ul.user-accounts a:hover div.remove {
|
||||
.tooltip-inner {
|
||||
text-align:left;
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
/* Show selected section in settings nav */
|
||||
.list-group-item.selected:before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 2px;
|
||||
content: "";
|
||||
background-color: #e37329;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -262,7 +262,7 @@ return array(
|
||||
'email_salutation' => 'Sehr geehrte/r :name,',
|
||||
'email_signature' => 'Mit freundlichen Grüßen,',
|
||||
'email_from' => 'Das InvoiceNinja Team',
|
||||
'user_email_footer' => 'Um deine E-Mail-Benachrichtigungen anzupassen besuche bitte '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'Um deine E-Mail-Benachrichtigungen anzupassen besuche bitte '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'Um deine Kundenrechnung anzuschauen, klicke auf den folgenden Link:',
|
||||
'notification_invoice_paid_subject' => 'Die Rechnung :invoice wurde von :client bezahlt.',
|
||||
'notification_invoice_sent_subject' => 'Die Rechnung :invoice wurde an :client versendet.',
|
||||
@ -817,6 +817,10 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
|
||||
);
|
||||
|
@ -262,7 +262,7 @@ return array(
|
||||
'email_salutation' => 'Dear :name,',
|
||||
'email_signature' => 'Regards,',
|
||||
'email_from' => 'The Invoice Ninja Team',
|
||||
'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'To view your client invoice click the link below:',
|
||||
'notification_invoice_paid_subject' => 'Invoice :invoice was paid by :client',
|
||||
'notification_invoice_sent_subject' => 'Invoice :invoice was sent to :client',
|
||||
@ -557,7 +557,7 @@ return array(
|
||||
'created_gateway' => 'Successfully created gateway',
|
||||
'deleted_gateway' => 'Successfully deleted gateway',
|
||||
'pay_with_paypal' => 'PayPal',
|
||||
'pay_with_card' => 'Credit card',
|
||||
'pay_with_card' => 'Credit Card',
|
||||
|
||||
'change_password' => 'Change password',
|
||||
'current_password' => 'Current password',
|
||||
@ -587,7 +587,7 @@ return array(
|
||||
'confirmation_resent' => 'The confirmation email was resent',
|
||||
|
||||
'gateway_help_42' => ':link to sign up for BitPay.<br/>Note: use a Legacy API Key, not an API token.',
|
||||
'payment_type_credit_card' => 'Credit card',
|
||||
'payment_type_credit_card' => 'Credit Card',
|
||||
'payment_type_paypal' => 'PayPal',
|
||||
'payment_type_bitcoin' => 'Bitcoin',
|
||||
'knowledge_base' => 'Knowledge Base',
|
||||
@ -818,6 +818,9 @@ return array(
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
);
|
||||
|
||||
|
@ -256,7 +256,7 @@ return array(
|
||||
'email_salutation' => 'Estimado :name,',
|
||||
'email_signature' => 'Un saludo cordial,',
|
||||
'email_from' => 'El equipo de Invoice Ninja ',
|
||||
'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu correo, visita '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu correo, visita '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'Para visualizar la factura de cliente, haz clic en el enlace abajo:',
|
||||
'notification_invoice_paid_subject' => 'La factura :invoice ha sido pagada por el cliente :client',
|
||||
'notification_invoice_sent_subject' => 'La factura :invoice ha sido enviada a el cliente :client',
|
||||
@ -795,6 +795,10 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
|
||||
);
|
||||
|
@ -1,477 +1,476 @@
|
||||
<?php
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
// client
|
||||
'organization' => 'Empresa',
|
||||
'name' => 'Nombre de Empresa',
|
||||
'website' => 'Sitio Web',
|
||||
'work_phone' => 'Teléfono',
|
||||
'address' => 'Dirección',
|
||||
'address1' => 'Calle',
|
||||
'address2' => 'Bloq/Pta',
|
||||
'city' => 'Ciudad',
|
||||
'state' => 'Provincia',
|
||||
'postal_code' => 'Código Postal',
|
||||
'country_id' => 'País',
|
||||
'contacts' => 'Contactos',
|
||||
'first_name' => 'Nombres',
|
||||
'last_name' => 'Apellidos',
|
||||
'phone' => 'Teléfono',
|
||||
'email' => 'Email',
|
||||
'additional_info' => 'Información adicional',
|
||||
'payment_terms' => 'Plazos de pago', //
|
||||
'currency_id' => 'Divisa',
|
||||
'size_id' => 'Tamaño',
|
||||
'industry_id' => 'Industria',
|
||||
'private_notes' => 'Notas Privadas',
|
||||
// client
|
||||
'organization' => 'Empresa',
|
||||
'name' => 'Nombre de Empresa',
|
||||
'website' => 'Sitio Web',
|
||||
'work_phone' => 'Teléfono',
|
||||
'address' => 'Dirección',
|
||||
'address1' => 'Calle',
|
||||
'address2' => 'Bloq/Pta',
|
||||
'city' => 'Ciudad',
|
||||
'state' => 'Provincia',
|
||||
'postal_code' => 'Código Postal',
|
||||
'country_id' => 'País',
|
||||
'contacts' => 'Contactos',
|
||||
'first_name' => 'Nombres',
|
||||
'last_name' => 'Apellidos',
|
||||
'phone' => 'Teléfono',
|
||||
'email' => 'Email',
|
||||
'additional_info' => 'Información adicional',
|
||||
'payment_terms' => 'Plazos de pago', //
|
||||
'currency_id' => 'Divisa',
|
||||
'size_id' => 'Tamaño',
|
||||
'industry_id' => 'Industria',
|
||||
'private_notes' => 'Notas Privadas',
|
||||
|
||||
// invoice
|
||||
'invoice' => 'Factura',
|
||||
'client' => 'Cliente',
|
||||
'invoice_date' => 'Fecha de factura',
|
||||
'due_date' => 'Fecha de pago',
|
||||
'invoice_number' => 'Número de Factura',
|
||||
'invoice_number_short' => 'Factura Nº',
|
||||
'po_number' => 'Apartado de correo',
|
||||
'po_number_short' => 'Apdo.',
|
||||
'frequency_id' => 'Frecuencia',
|
||||
'discount' => 'Descuento',
|
||||
'taxes' => 'Impuestos',
|
||||
'tax' => 'IVA',
|
||||
'item' => 'Concepto',
|
||||
'description' => 'Descripción',
|
||||
'unit_cost' => 'Coste unitario',
|
||||
'quantity' => 'Cantidad',
|
||||
'line_total' => 'Total',
|
||||
'subtotal' => 'Subtotal',
|
||||
'paid_to_date' => 'Pagado',
|
||||
'balance_due' => 'Pendiente',
|
||||
'invoice_design_id' => 'Diseño',
|
||||
'terms' => 'Términos',
|
||||
'your_invoice' => 'Tu factura',
|
||||
'remove_contact' => 'Eliminar contacto',
|
||||
'add_contact' => 'Añadir contacto',
|
||||
'create_new_client' => 'Crear nuevo cliente',
|
||||
'edit_client_details' => 'Editar detalles del cliente',
|
||||
'enable' => 'Activar',
|
||||
'learn_more' => 'Saber más',
|
||||
'manage_rates' => 'Gestionar tarifas',
|
||||
'note_to_client' => 'Nota para el cliente',
|
||||
'invoice_terms' => 'Términos de facturación',
|
||||
'save_as_default_terms' => 'Guardar como términos por defecto',
|
||||
'download_pdf' => 'Descargar PDF',
|
||||
'pay_now' => 'Pagar Ahora',
|
||||
'save_invoice' => 'Guardar factura',
|
||||
'clone_invoice' => 'Clonar factura',
|
||||
'archive_invoice' => 'Archivar factura',
|
||||
'delete_invoice' => 'Eliminar factura',
|
||||
'email_invoice' => 'Enviar factura por email',
|
||||
'enter_payment' => 'Agregar pago',
|
||||
'tax_rates' => 'Tasas de impuesto',
|
||||
'rate' => 'Tasas',
|
||||
'settings' => 'Configuración',
|
||||
'enable_invoice_tax' => 'Activar impuesto <b>para la factura</b>',
|
||||
'enable_line_item_tax' => 'Activar impuesto <b>por concepto</b>',
|
||||
// invoice
|
||||
'invoice' => 'Factura',
|
||||
'client' => 'Cliente',
|
||||
'invoice_date' => 'Fecha de factura',
|
||||
'due_date' => 'Fecha de pago',
|
||||
'invoice_number' => 'Número de Factura',
|
||||
'invoice_number_short' => 'Factura Nº',
|
||||
'po_number' => 'Apartado de correo',
|
||||
'po_number_short' => 'Apdo.',
|
||||
'frequency_id' => 'Frecuencia',
|
||||
'discount' => 'Descuento',
|
||||
'taxes' => 'Impuestos',
|
||||
'tax' => 'IVA',
|
||||
'item' => 'Concepto',
|
||||
'description' => 'Descripción',
|
||||
'unit_cost' => 'Coste unitario',
|
||||
'quantity' => 'Cantidad',
|
||||
'line_total' => 'Total',
|
||||
'subtotal' => 'Subtotal',
|
||||
'paid_to_date' => 'Pagado',
|
||||
'balance_due' => 'Pendiente',
|
||||
'invoice_design_id' => 'Diseño',
|
||||
'terms' => 'Términos',
|
||||
'your_invoice' => 'Tu factura',
|
||||
'remove_contact' => 'Eliminar contacto',
|
||||
'add_contact' => 'Añadir contacto',
|
||||
'create_new_client' => 'Crear nuevo cliente',
|
||||
'edit_client_details' => 'Editar detalles del cliente',
|
||||
'enable' => 'Activar',
|
||||
'learn_more' => 'Saber más',
|
||||
'manage_rates' => 'Gestionar tarifas',
|
||||
'note_to_client' => 'Nota para el cliente',
|
||||
'invoice_terms' => 'Términos de facturación',
|
||||
'save_as_default_terms' => 'Guardar como términos por defecto',
|
||||
'download_pdf' => 'Descargar PDF',
|
||||
'pay_now' => 'Pagar Ahora',
|
||||
'save_invoice' => 'Guardar factura',
|
||||
'clone_invoice' => 'Clonar factura',
|
||||
'archive_invoice' => 'Archivar factura',
|
||||
'delete_invoice' => 'Eliminar factura',
|
||||
'email_invoice' => 'Enviar factura por email',
|
||||
'enter_payment' => 'Agregar pago',
|
||||
'tax_rates' => 'Tasas de impuesto',
|
||||
'rate' => 'Tasas',
|
||||
'settings' => 'Configuración',
|
||||
'enable_invoice_tax' => 'Activar impuesto <b>para la factura</b>',
|
||||
'enable_line_item_tax' => 'Activar impuesto <b>por concepto</b>',
|
||||
|
||||
// navigation
|
||||
'dashboard' => 'Inicio',
|
||||
'clients' => 'Clientes',
|
||||
'invoices' => 'Facturas',
|
||||
'payments' => 'Pagos',
|
||||
'credits' => 'Créditos',
|
||||
'history' => 'Historial',
|
||||
'search' => 'Búsqueda',
|
||||
'sign_up' => 'Registrarse',
|
||||
'guest' => 'Invitado',
|
||||
'company_details' => 'Detalles de la Empresa',
|
||||
'online_payments' => 'Pagos en Linea',
|
||||
'notifications' => 'Notificaciones',
|
||||
'import_export' => 'Importar/Exportar',
|
||||
'done' => 'Hecho',
|
||||
'save' => 'Guardar',
|
||||
'create' => 'Crear',
|
||||
'upload' => 'Subir',
|
||||
'import' => 'Importar',
|
||||
'download' => 'Descargar',
|
||||
'cancel' => 'Cancelar',
|
||||
'close' => 'Cerrar',
|
||||
'provide_email' => 'Por favor facilita una dirección de correo válida.',
|
||||
'powered_by' => 'Creado por',
|
||||
'no_items' => 'No hay datos',
|
||||
// navigation
|
||||
'dashboard' => 'Inicio',
|
||||
'clients' => 'Clientes',
|
||||
'invoices' => 'Facturas',
|
||||
'payments' => 'Pagos',
|
||||
'credits' => 'Créditos',
|
||||
'history' => 'Historial',
|
||||
'search' => 'Búsqueda',
|
||||
'sign_up' => 'Registrarse',
|
||||
'guest' => 'Invitado',
|
||||
'company_details' => 'Detalles de la Empresa',
|
||||
'online_payments' => 'Pagos en Linea',
|
||||
'notifications' => 'Notificaciones',
|
||||
'import_export' => 'Importar/Exportar',
|
||||
'done' => 'Hecho',
|
||||
'save' => 'Guardar',
|
||||
'create' => 'Crear',
|
||||
'upload' => 'Subir',
|
||||
'import' => 'Importar',
|
||||
'download' => 'Descargar',
|
||||
'cancel' => 'Cancelar',
|
||||
'close' => 'Cerrar',
|
||||
'provide_email' => 'Por favor facilita una dirección de correo válida.',
|
||||
'powered_by' => 'Creado por',
|
||||
'no_items' => 'No hay datos',
|
||||
|
||||
// recurring invoices
|
||||
'recurring_invoices' => 'Facturas recurrentes',
|
||||
'recurring_help' => '<p>Enviar facturas automáticamente a clientes semanalmente, bi-mensualmente, mensualmente, trimestral o anualmente. </p>
|
||||
<p>Uso :MONTH, :QUARTER or :YEAR para fechas dinámicas. Matemáticas básicas también funcionan bien. Por ejemplo: :MONTH-1.</p>
|
||||
<p>Ejemplos de variables dinámicas de factura:</p>
|
||||
<ul>
|
||||
<li>"Afiliación de gimnasio para el mes de:MONTH" => Afiliación de gimnasio para el mes de julio"</li>
|
||||
<li>":YEAR+1 suscripción anual" => "2015 suscripción anual"</li>
|
||||
<li>"Retainer payment for :QUARTER+1" => "Pago anticipo de pagos para T2"</li>
|
||||
</ul>',
|
||||
// recurring invoices
|
||||
'recurring_invoices' => 'Facturas recurrentes',
|
||||
'recurring_help' => '<p>Enviar facturas automáticamente a clientes semanalmente, bi-mensualmente, mensualmente, trimestral o anualmente. </p>
|
||||
<p>Uso :MONTH, :QUARTER or :YEAR para fechas dinámicas. Matemáticas básicas también funcionan bien. Por ejemplo: :MONTH-1.</p>
|
||||
<p>Ejemplos de variables dinámicas de factura:</p>
|
||||
<ul>
|
||||
<li>"Afiliación de gimnasio para el mes de:MONTH" => Afiliación de gimnasio para el mes de julio"</li>
|
||||
<li>":YEAR+1 suscripción anual" => "2015 suscripción anual"</li>
|
||||
<li>"Retainer payment for :QUARTER+1" => "Pago anticipo de pagos para T2"</li>
|
||||
</ul>',
|
||||
|
||||
// dashboard
|
||||
'in_total_revenue' => 'Ingreso Total',
|
||||
'billed_client' => 'Cliente Facturado',
|
||||
'billed_clients' => 'Clientes Facturados',
|
||||
'active_client' => 'Cliente Activo',
|
||||
'active_clients' => 'Clientes Activos',
|
||||
'invoices_past_due' => 'Facturas Vencidas',
|
||||
'upcoming_invoices' => 'Próximas Facturas',
|
||||
'average_invoice' => 'Promedio de Facturación',
|
||||
// dashboard
|
||||
'in_total_revenue' => 'Ingreso Total',
|
||||
'billed_client' => 'Cliente Facturado',
|
||||
'billed_clients' => 'Clientes Facturados',
|
||||
'active_client' => 'Cliente Activo',
|
||||
'active_clients' => 'Clientes Activos',
|
||||
'invoices_past_due' => 'Facturas Vencidas',
|
||||
'upcoming_invoices' => 'Próximas Facturas',
|
||||
'average_invoice' => 'Promedio de Facturación',
|
||||
|
||||
// list pages
|
||||
'archive' => 'Archivar',
|
||||
'delete' => 'Eliminar',
|
||||
'archive_client' => 'Archivar Cliente',
|
||||
'delete_client' => 'Eliminar Cliente',
|
||||
'archive_payment' => 'Archivar Pago',
|
||||
'delete_payment' => 'Eliminar Pago',
|
||||
'archive_credit' => 'Archivar Crédito',
|
||||
'delete_credit' => 'Eliminar Crédito',
|
||||
'show_archived_deleted' => 'Mostrar archivados o eliminados en ',
|
||||
'filter' => 'Filtrar',
|
||||
'new_client' => 'Nuevo Cliente',
|
||||
'new_invoice' => 'Nueva Factura',
|
||||
'new_payment' => 'Nuevo Pago',
|
||||
'new_credit' => 'Nuevo Crédito',
|
||||
'contact' => 'Contacto',
|
||||
'date_created' => 'Fecha de Creación',
|
||||
'last_login' => 'Último Acceso',
|
||||
'balance' => 'Balance',
|
||||
'action' => 'Acción',
|
||||
'status' => 'Estado',
|
||||
'invoice_total' => 'Total Facturado',
|
||||
'frequency' => 'Frequencia',
|
||||
'start_date' => 'Fecha de Inicio',
|
||||
'end_date' => 'Fecha de Finalización',
|
||||
'transaction_reference' => 'Referencia de Transacción',
|
||||
'method' => 'Método',
|
||||
'payment_amount' => 'Valor del Pago',
|
||||
'payment_date' => 'Fecha de Pago',
|
||||
'credit_amount' => 'Cantidad de Crédito',
|
||||
'credit_balance' => 'Balance de Crédito',
|
||||
'credit_date' => 'Fecha de Crédito',
|
||||
'empty_table' => 'Tabla vacía',
|
||||
'select' => 'Seleccionar',
|
||||
'edit_client' => 'Editar Cliente',
|
||||
'edit_invoice' => 'Editar Factura',
|
||||
// list pages
|
||||
'archive' => 'Archivar',
|
||||
'delete' => 'Eliminar',
|
||||
'archive_client' => 'Archivar Cliente',
|
||||
'delete_client' => 'Eliminar Cliente',
|
||||
'archive_payment' => 'Archivar Pago',
|
||||
'delete_payment' => 'Eliminar Pago',
|
||||
'archive_credit' => 'Archivar Crédito',
|
||||
'delete_credit' => 'Eliminar Crédito',
|
||||
'show_archived_deleted' => 'Mostrar archivados o eliminados en ',
|
||||
'filter' => 'Filtrar',
|
||||
'new_client' => 'Nuevo Cliente',
|
||||
'new_invoice' => 'Nueva Factura',
|
||||
'new_payment' => 'Nuevo Pago',
|
||||
'new_credit' => 'Nuevo Crédito',
|
||||
'contact' => 'Contacto',
|
||||
'date_created' => 'Fecha de Creación',
|
||||
'last_login' => 'Último Acceso',
|
||||
'balance' => 'Balance',
|
||||
'action' => 'Acción',
|
||||
'status' => 'Estado',
|
||||
'invoice_total' => 'Total Facturado',
|
||||
'frequency' => 'Frequencia',
|
||||
'start_date' => 'Fecha de Inicio',
|
||||
'end_date' => 'Fecha de Finalización',
|
||||
'transaction_reference' => 'Referencia de Transacción',
|
||||
'method' => 'Método',
|
||||
'payment_amount' => 'Valor del Pago',
|
||||
'payment_date' => 'Fecha de Pago',
|
||||
'credit_amount' => 'Cantidad de Crédito',
|
||||
'credit_balance' => 'Balance de Crédito',
|
||||
'credit_date' => 'Fecha de Crédito',
|
||||
'empty_table' => 'Tabla vacía',
|
||||
'select' => 'Seleccionar',
|
||||
'edit_client' => 'Editar Cliente',
|
||||
'edit_invoice' => 'Editar Factura',
|
||||
|
||||
// client view page
|
||||
'create_invoice' => 'Crear Factura',
|
||||
'Create Invoice' => 'Crear Factura',
|
||||
'enter_credit' => 'Agregar Crédito',
|
||||
'last_logged_in' => 'Último inicio de sesión',
|
||||
'details' => 'Detalles',
|
||||
'standing' => 'Situación', //
|
||||
'credit' => 'Crédito',
|
||||
'activity' => 'Actividad',
|
||||
'date' => 'Fecha',
|
||||
'message' => 'Mensaje',
|
||||
'adjustment' => 'Ajustes',
|
||||
'are_you_sure' => '¿Está Seguro?',
|
||||
// client view page
|
||||
'create_invoice' => 'Crear Factura',
|
||||
'Create Invoice' => 'Crear Factura',
|
||||
'enter_credit' => 'Agregar Crédito',
|
||||
'last_logged_in' => 'Último inicio de sesión',
|
||||
'details' => 'Detalles',
|
||||
'standing' => 'Situación', //
|
||||
'credit' => 'Crédito',
|
||||
'activity' => 'Actividad',
|
||||
'date' => 'Fecha',
|
||||
'message' => 'Mensaje',
|
||||
'adjustment' => 'Ajustes',
|
||||
'are_you_sure' => '¿Está Seguro?',
|
||||
|
||||
// payment pages
|
||||
'payment_type_id' => 'Tipo de pago',
|
||||
'amount' => 'Cantidad',
|
||||
|
||||
// Nuevo texto extraido - New text extracted
|
||||
'Recommended Gateway' => 'Pasarelas Recomendadas',//
|
||||
'Accepted Credit Cards' => 'Tarjetas de Credito Permitidas',//
|
||||
'Payment Gateway' => 'Pasarelas de Pago',//
|
||||
'Select Gateway' => 'Seleccione Pasarela',//
|
||||
'Enable' => 'Activo',//
|
||||
'Api Login Id' => 'Introduzca Api Id',//
|
||||
'Transaction Key' => 'Clave de Transacción',//
|
||||
'Create an account' => 'Crear cuenta nueva',//
|
||||
'Other Options' => 'Otras Opciones',//
|
||||
// payment pages
|
||||
'payment_type_id' => 'Tipo de pago',
|
||||
'amount' => 'Cantidad',
|
||||
|
||||
// account/company pages
|
||||
'work_email' => 'Correo electrónico de la empresa',
|
||||
'language_id' => 'Idioma',
|
||||
'timezone_id' => 'Zona horaria',
|
||||
'date_format_id' => 'Formato de fecha',
|
||||
'datetime_format_id' => 'Format de fecha/hora',
|
||||
'users' => 'Usuarios',
|
||||
'localization' => 'Localización',
|
||||
'remove_logo' => 'Eliminar logo',
|
||||
'logo_help' => 'Formatos aceptados: JPEG, GIF y PNG',
|
||||
'payment_gateway' => 'Pasarela de pago',
|
||||
'gateway_id' => 'Proveedor',
|
||||
'email_notifications' => 'Notificaciones de email',
|
||||
'email_sent' => 'Avísame por email cuando una factura <b>se envía</b>',
|
||||
'email_viewed' => 'Avísame por email cuando una factura <b>se visualiza</b>',
|
||||
'email_paid' => 'Avísame por email cuando una factura <b>se paga</b>',
|
||||
'site_updates' => 'Actualizaciones del sitio',
|
||||
'custom_messages' => 'Mensajes a medida',
|
||||
'default_invoice_terms' => 'Configurar términos de factura por defecto',
|
||||
'default_email_footer' => 'Configurar firma de email por defecto',
|
||||
'import_clients' => 'Importar datos del cliente',
|
||||
'csv_file' => 'Seleccionar archivo CSV',
|
||||
'export_clients' => 'Exportar datos del cliente',
|
||||
'select_file' => 'Seleccionar archivo',
|
||||
'first_row_headers' => 'Usar la primera fila como encabezados',
|
||||
'column' => 'Columna',
|
||||
'sample' => 'Ejemplo',
|
||||
'import_to' => 'Importar a',
|
||||
'client_will_create' => 'cliente se creará',
|
||||
'clients_will_create' => 'clientes se crearan',
|
||||
// Nuevo texto extraido - New text extracted
|
||||
'Recommended Gateway' => 'Pasarelas Recomendadas',//
|
||||
'Accepted Credit Cards' => 'Tarjetas de Credito Permitidas',//
|
||||
'Payment Gateway' => 'Pasarelas de Pago',//
|
||||
'Select Gateway' => 'Seleccione Pasarela',//
|
||||
'Enable' => 'Activo',//
|
||||
'Api Login Id' => 'Introduzca Api Id',//
|
||||
'Transaction Key' => 'Clave de Transacción',//
|
||||
'Create an account' => 'Crear cuenta nueva',//
|
||||
'Other Options' => 'Otras Opciones',//
|
||||
|
||||
// application messages
|
||||
'created_client' => 'cliente creado con éxito',
|
||||
'created_clients' => ':count clientes creados con éxito',
|
||||
'updated_settings' => 'Configuración actualizada con éxito',
|
||||
'removed_logo' => 'Logo eliminado con éxito',
|
||||
'sent_message' => 'Mensaje enviado con éxito',
|
||||
'invoice_error' => 'Seleccionar cliente y corregir errores.',
|
||||
'limit_clients' => 'Lo sentimos, se ha pasado del límite de :count clientes',
|
||||
'payment_error' => 'Ha habido un error en el proceso de tu pago. Inténtalo de nuevo más tarde.',
|
||||
'registration_required' => 'Inscríbete para enviar una factura',
|
||||
'confirmation_required' => 'Por favor confirma tu dirección de correo electrónico',
|
||||
// account/company pages
|
||||
'work_email' => 'Correo electrónico de la empresa',
|
||||
'language_id' => 'Idioma',
|
||||
'timezone_id' => 'Zona horaria',
|
||||
'date_format_id' => 'Formato de fecha',
|
||||
'datetime_format_id' => 'Format de fecha/hora',
|
||||
'users' => 'Usuarios',
|
||||
'localization' => 'Localización',
|
||||
'remove_logo' => 'Eliminar logo',
|
||||
'logo_help' => 'Formatos aceptados: JPEG, GIF y PNG',
|
||||
'payment_gateway' => 'Pasarela de pago',
|
||||
'gateway_id' => 'Proveedor',
|
||||
'email_notifications' => 'Notificaciones de email',
|
||||
'email_sent' => 'Avísame por email cuando una factura <b>se envía</b>',
|
||||
'email_viewed' => 'Avísame por email cuando una factura <b>se visualiza</b>',
|
||||
'email_paid' => 'Avísame por email cuando una factura <b>se paga</b>',
|
||||
'site_updates' => 'Actualizaciones del sitio',
|
||||
'custom_messages' => 'Mensajes a medida',
|
||||
'default_invoice_terms' => 'Configurar términos de factura por defecto',
|
||||
'default_email_footer' => 'Configurar firma de email por defecto',
|
||||
'import_clients' => 'Importar datos del cliente',
|
||||
'csv_file' => 'Seleccionar archivo CSV',
|
||||
'export_clients' => 'Exportar datos del cliente',
|
||||
'select_file' => 'Seleccionar archivo',
|
||||
'first_row_headers' => 'Usar la primera fila como encabezados',
|
||||
'column' => 'Columna',
|
||||
'sample' => 'Ejemplo',
|
||||
'import_to' => 'Importar a',
|
||||
'client_will_create' => 'cliente se creará',
|
||||
'clients_will_create' => 'clientes se crearan',
|
||||
|
||||
'updated_client' => 'Cliente actualizado con éxito',
|
||||
'created_client' => 'Cliente creado con éxito',
|
||||
'archived_client' => 'Cliente archivado con éxito',
|
||||
'archived_clients' => ':count clientes archivados con éxito',
|
||||
'deleted_client' => 'Cliente eliminado con éxito',
|
||||
'deleted_clients' => ':count clientes eliminados con éxito',
|
||||
// application messages
|
||||
'created_client' => 'cliente creado con éxito',
|
||||
'created_clients' => ':count clientes creados con éxito',
|
||||
'updated_settings' => 'Configuración actualizada con éxito',
|
||||
'removed_logo' => 'Logo eliminado con éxito',
|
||||
'sent_message' => 'Mensaje enviado con éxito',
|
||||
'invoice_error' => 'Seleccionar cliente y corregir errores.',
|
||||
'limit_clients' => 'Lo sentimos, se ha pasado del límite de :count clientes',
|
||||
'payment_error' => 'Ha habido un error en el proceso de tu pago. Inténtalo de nuevo más tarde.',
|
||||
'registration_required' => 'Inscríbete para enviar una factura',
|
||||
'confirmation_required' => 'Por favor confirma tu dirección de correo electrónico',
|
||||
|
||||
'updated_invoice' => 'Factura actualizada con éxito',
|
||||
'created_invoice' => 'Factura creada con éxito',
|
||||
'cloned_invoice' => 'Factura clonada con éxito',
|
||||
'emailed_invoice' => 'Factura enviada con éxito',
|
||||
'and_created_client' => 'y cliente creado ',
|
||||
'archived_invoice' => 'Factura archivada con éxito',
|
||||
'archived_invoices' => ':count facturas archivados con éxito',
|
||||
'deleted_invoice' => 'Factura eliminada con éxito',
|
||||
'deleted_invoices' => ':count facturas eliminadas con éxito',
|
||||
'updated_client' => 'Cliente actualizado con éxito',
|
||||
'created_client' => 'Cliente creado con éxito',
|
||||
'archived_client' => 'Cliente archivado con éxito',
|
||||
'archived_clients' => ':count clientes archivados con éxito',
|
||||
'deleted_client' => 'Cliente eliminado con éxito',
|
||||
'deleted_clients' => ':count clientes eliminados con éxito',
|
||||
|
||||
'created_payment' => 'Pago creado con éxito',
|
||||
'archived_payment' => 'Pago archivado con éxito',
|
||||
'archived_payments' => ':count pagos archivados con éxito',
|
||||
'deleted_payment' => 'Pago eliminado con éxito',
|
||||
'deleted_payments' => ':count pagos eliminados con éxito',
|
||||
'applied_payment' => 'Pago aplicado con éxito',
|
||||
'updated_invoice' => 'Factura actualizada con éxito',
|
||||
'created_invoice' => 'Factura creada con éxito',
|
||||
'cloned_invoice' => 'Factura clonada con éxito',
|
||||
'emailed_invoice' => 'Factura enviada con éxito',
|
||||
'and_created_client' => 'y cliente creado ',
|
||||
'archived_invoice' => 'Factura archivada con éxito',
|
||||
'archived_invoices' => ':count facturas archivados con éxito',
|
||||
'deleted_invoice' => 'Factura eliminada con éxito',
|
||||
'deleted_invoices' => ':count facturas eliminadas con éxito',
|
||||
|
||||
'created_credit' => 'Crédito creado con éxito',
|
||||
'archived_credit' => 'Crédito archivado con éxito',
|
||||
'archived_credits' => ':count creditos archivados con éxito',
|
||||
'deleted_credit' => 'Créditos eliminados con éxito',
|
||||
'deleted_credits' => ':count creditos eliminados con éxito',
|
||||
'created_payment' => 'Pago creado con éxito',
|
||||
'archived_payment' => 'Pago archivado con éxito',
|
||||
'archived_payments' => ':count pagos archivados con éxito',
|
||||
'deleted_payment' => 'Pago eliminado con éxito',
|
||||
'deleted_payments' => ':count pagos eliminados con éxito',
|
||||
'applied_payment' => 'Pago aplicado con éxito',
|
||||
|
||||
// Emails
|
||||
'confirmation_subject' => 'Corfimación de tu cuenta en Invoice Ninja',
|
||||
'confirmation_header' => 'Confirmación de Cuenta',
|
||||
'confirmation_message' => 'Por favor, haz clic en el enlace abajo para confirmar tu cuenta.',
|
||||
'invoice_subject' => 'Nueva factura :invoice de :account',
|
||||
'invoice_message' => 'Para visualizar tu factura por el valor de :amount, haz click en el enlace de abajo.',
|
||||
'payment_subject' => 'Pago recibido',
|
||||
'payment_message' => 'Gracias por su pago de :amount.',
|
||||
'email_salutation' => 'Estimado :name,',
|
||||
'email_signature' => 'Un cordial saludo,',
|
||||
'email_from' => 'El equipo de Invoice Ninja ',
|
||||
'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu email, visita '.SITE_URL.'/company/notifications',
|
||||
'invoice_link_message' => 'Para visualizar la factura de cliente, haz clic en el enlace de abajo:',
|
||||
'notification_invoice_paid_subject' => 'La factura :invoice ha sido pagada por el cliente :client',
|
||||
'notification_invoice_sent_subject' => 'La factura :invoice ha sido enviada a el cliente :client',
|
||||
'notification_invoice_viewed_subject' => 'La factura :invoice ha sido visualizado por el cliente:client',
|
||||
'notification_invoice_paid' => 'Un pago por importe de :amount ha sido realizado por el cliente :client correspondiente a la factura :invoice.',
|
||||
'notification_invoice_sent' => 'La factura :invoice por importe de :amount fue enviada al cliente :cliente.',
|
||||
'notification_invoice_viewed' => 'La factura :invoice por importe de :amount fue visualizada por el cliente :client.',
|
||||
'reset_password' => 'Puedes reconfigurar la contraseña de tu cuenta haciendo clic en el siguiente enlace:',
|
||||
'reset_password_footer' => 'Si no has solicitado un cambio de contraseña, por favor contactate con nosostros: ' . CONTACT_EMAIL,
|
||||
'created_credit' => 'Crédito creado con éxito',
|
||||
'archived_credit' => 'Crédito archivado con éxito',
|
||||
'archived_credits' => ':count creditos archivados con éxito',
|
||||
'deleted_credit' => 'Créditos eliminados con éxito',
|
||||
'deleted_credits' => ':count creditos eliminados con éxito',
|
||||
|
||||
// Payment page
|
||||
'secure_payment' => 'Pago seguro',
|
||||
'card_number' => 'Número de tarjeta',
|
||||
'expiration_month' => 'Mes de caducidad',
|
||||
'expiration_year' => 'Año de caducidad',
|
||||
'cvv' => 'CVV',
|
||||
// Emails
|
||||
'confirmation_subject' => 'Corfimación de tu cuenta en Invoice Ninja',
|
||||
'confirmation_header' => 'Confirmación de Cuenta',
|
||||
'confirmation_message' => 'Por favor, haz clic en el enlace abajo para confirmar tu cuenta.',
|
||||
'invoice_subject' => 'Nueva factura :invoice de :account',
|
||||
'invoice_message' => 'Para visualizar tu factura por el valor de :amount, haz click en el enlace de abajo.',
|
||||
'payment_subject' => 'Pago recibido',
|
||||
'payment_message' => 'Gracias por su pago de :amount.',
|
||||
'email_salutation' => 'Estimado :name,',
|
||||
'email_signature' => 'Un cordial saludo,',
|
||||
'email_from' => 'El equipo de Invoice Ninja ',
|
||||
'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu email, visita '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'Para visualizar la factura de cliente, haz clic en el enlace de abajo:',
|
||||
'notification_invoice_paid_subject' => 'La factura :invoice ha sido pagada por el cliente :client',
|
||||
'notification_invoice_sent_subject' => 'La factura :invoice ha sido enviada a el cliente :client',
|
||||
'notification_invoice_viewed_subject' => 'La factura :invoice ha sido visualizado por el cliente:client',
|
||||
'notification_invoice_paid' => 'Un pago por importe de :amount ha sido realizado por el cliente :client correspondiente a la factura :invoice.',
|
||||
'notification_invoice_sent' => 'La factura :invoice por importe de :amount fue enviada al cliente :cliente.',
|
||||
'notification_invoice_viewed' => 'La factura :invoice por importe de :amount fue visualizada por el cliente :client.',
|
||||
'reset_password' => 'Puedes reconfigurar la contraseña de tu cuenta haciendo clic en el siguiente enlace:',
|
||||
'reset_password_footer' => 'Si no has solicitado un cambio de contraseña, por favor contactate con nosostros: '.CONTACT_EMAIL,
|
||||
|
||||
// Security alerts
|
||||
'confide' => array(
|
||||
'too_many_attempts' => 'Demasiados intentos fallidos. Inténtalo de nuevo en un par de minutos.',
|
||||
'wrong_credentials' => 'Contraseña o email incorrecto.',
|
||||
'confirmation' => '¡Tu cuenta se ha confirmado!',
|
||||
'wrong_confirmation' => 'Código de confirmación incorrecto.',
|
||||
'password_forgot' => 'La información sobre el cambio de tu contraseña se ha enviado a tu dirección de correo electrónico.',
|
||||
'password_reset' => 'Tu contraseña se ha cambiado con éxito.',
|
||||
'wrong_password_reset' => 'Contraseña no válida. Inténtalo de nuevo',
|
||||
),
|
||||
// Payment page
|
||||
'secure_payment' => 'Pago seguro',
|
||||
'card_number' => 'Número de tarjeta',
|
||||
'expiration_month' => 'Mes de caducidad',
|
||||
'expiration_year' => 'Año de caducidad',
|
||||
'cvv' => 'CVV',
|
||||
|
||||
// Pro Plan
|
||||
'pro_plan' => [
|
||||
'remove_logo' => ':link haz click para eliminar el logo de Invoice Ninja',
|
||||
'remove_logo_link' => 'Haz click aquí',
|
||||
],
|
||||
'logout' => 'Cerrar sesión',
|
||||
'sign_up_to_save' => 'Registrate para guardar tu trabajo',
|
||||
'agree_to_terms' =>'Estoy de acuerdo con los términos de Invoice Ninja :terms',
|
||||
'terms_of_service' => 'Términos de servicio',
|
||||
'email_taken' => 'Esta dirección de correo electrónico ya se ha registrado',
|
||||
'working' => 'Procesando',
|
||||
'success' => 'Éxito',
|
||||
'success_message' => 'Te has registrado con éxito. Por favor, haz clic en el enlace del correo de confirmación para verificar tu dirección de correo electrónico.',
|
||||
'erase_data' => 'Esta acción eliminará todos tus datos de forma permanente.',
|
||||
'password' => 'Contraseña',
|
||||
// Security alerts
|
||||
'confide' => array(
|
||||
'too_many_attempts' => 'Demasiados intentos fallidos. Inténtalo de nuevo en un par de minutos.',
|
||||
'wrong_credentials' => 'Contraseña o email incorrecto.',
|
||||
'confirmation' => '¡Tu cuenta se ha confirmado!',
|
||||
'wrong_confirmation' => 'Código de confirmación incorrecto.',
|
||||
'password_forgot' => 'La información sobre el cambio de tu contraseña se ha enviado a tu dirección de correo electrónico.',
|
||||
'password_reset' => 'Tu contraseña se ha cambiado con éxito.',
|
||||
'wrong_password_reset' => 'Contraseña no válida. Inténtalo de nuevo',
|
||||
),
|
||||
|
||||
'pro_plan_product' => 'Plan Pro',
|
||||
'pro_plan_description' => 'Un año de inscripción al Plan Pro de Invoice Ninja.',
|
||||
'pro_plan_success' => '¡Gracias por unirte a Invoice Ninja! Al realizar el pago de tu factura, se iniciara tu PLAN PRO.',
|
||||
'unsaved_changes' => 'Tienes cambios no guardados',
|
||||
'custom_fields' => 'Campos a medida',
|
||||
'company_fields' => 'Campos de la empresa',
|
||||
'client_fields' => 'Campos del cliente',
|
||||
'field_label' => 'Etiqueta del campo',
|
||||
'field_value' => 'Valor del campo',
|
||||
'edit' => 'Editar',
|
||||
'view_as_recipient' => 'Ver como destinitario',
|
||||
// Pro Plan
|
||||
'pro_plan' => [
|
||||
'remove_logo' => ':link haz click para eliminar el logo de Invoice Ninja',
|
||||
'remove_logo_link' => 'Haz click aquí',
|
||||
],
|
||||
'logout' => 'Cerrar sesión',
|
||||
'sign_up_to_save' => 'Registrate para guardar tu trabajo',
|
||||
'agree_to_terms' => 'Estoy de acuerdo con los términos de Invoice Ninja :terms',
|
||||
'terms_of_service' => 'Términos de servicio',
|
||||
'email_taken' => 'Esta dirección de correo electrónico ya se ha registrado',
|
||||
'working' => 'Procesando',
|
||||
'success' => 'Éxito',
|
||||
'success_message' => 'Te has registrado con éxito. Por favor, haz clic en el enlace del correo de confirmación para verificar tu dirección de correo electrónico.',
|
||||
'erase_data' => 'Esta acción eliminará todos tus datos de forma permanente.',
|
||||
'password' => 'Contraseña',
|
||||
|
||||
// product management
|
||||
'product_library' => 'Inventario de productos',
|
||||
'product' => 'Producto',
|
||||
'products' => 'Productos',
|
||||
'fill_products' => 'Auto-rellenar productos',
|
||||
'fill_products_help' => 'Seleccionar un producto automáticamente <b>configurará la descripción y coste</b>',
|
||||
'update_products' => 'Auto-actualizar productos',
|
||||
'update_products_help' => 'Actualizar una factura automáticamente <b>actualizará los productos</b>',
|
||||
'create_product' => 'Crear Producto',
|
||||
'edit_product' => 'Editar Producto',
|
||||
'archive_product' => 'Archivar Producto',
|
||||
'updated_product' => 'Producto actualizado con éxito',
|
||||
'created_product' => 'Producto creado con éxito',
|
||||
'archived_product' => 'Producto archivado con éxito',
|
||||
'pro_plan_custom_fields' => ':link haz click para para activar campos a medida',
|
||||
'advanced_settings' => 'Configuración Avanzada',
|
||||
'pro_plan_advanced_settings' => ':link haz click para para activar la configuración avanzada',
|
||||
'invoice_design' => 'Diseño de factura',
|
||||
'specify_colors' => 'Especificar colores',
|
||||
'specify_colors_label' => 'Seleccionar los colores para usar en las facturas',
|
||||
'chart_builder' => 'Constructor de graficos',
|
||||
'ninja_email_footer' => 'Usa :site para facturar a tus clientes y recibir pagos de forma gratuita!',
|
||||
'go_pro' => 'Hazte Pro',
|
||||
'pro_plan_product' => 'Plan Pro',
|
||||
'pro_plan_description' => 'Un año de inscripción al Plan Pro de Invoice Ninja.',
|
||||
'pro_plan_success' => '¡Gracias por unirte a Invoice Ninja! Al realizar el pago de tu factura, se iniciara tu PLAN PRO.',
|
||||
'unsaved_changes' => 'Tienes cambios no guardados',
|
||||
'custom_fields' => 'Campos a medida',
|
||||
'company_fields' => 'Campos de la empresa',
|
||||
'client_fields' => 'Campos del cliente',
|
||||
'field_label' => 'Etiqueta del campo',
|
||||
'field_value' => 'Valor del campo',
|
||||
'edit' => 'Editar',
|
||||
'view_as_recipient' => 'Ver como destinitario',
|
||||
|
||||
// Quotes
|
||||
'quote' => 'Presupuesto',
|
||||
'quotes' => 'Presupuestos',
|
||||
'quote_number' => 'Numero de Presupuesto',
|
||||
'quote_number_short' => 'Presupuesto Nº ',
|
||||
'quote_date' => 'Fecha Presupuesto',
|
||||
'quote_total' => 'Total Presupuestado',
|
||||
'your_quote' => 'Su Presupuesto',
|
||||
'total' => 'Total',
|
||||
'clone' => 'Clonar',
|
||||
// product management
|
||||
'product_library' => 'Inventario de productos',
|
||||
'product' => 'Producto',
|
||||
'products' => 'Productos',
|
||||
'fill_products' => 'Auto-rellenar productos',
|
||||
'fill_products_help' => 'Seleccionar un producto automáticamente <b>configurará la descripción y coste</b>',
|
||||
'update_products' => 'Auto-actualizar productos',
|
||||
'update_products_help' => 'Actualizar una factura automáticamente <b>actualizará los productos</b>',
|
||||
'create_product' => 'Crear Producto',
|
||||
'edit_product' => 'Editar Producto',
|
||||
'archive_product' => 'Archivar Producto',
|
||||
'updated_product' => 'Producto actualizado con éxito',
|
||||
'created_product' => 'Producto creado con éxito',
|
||||
'archived_product' => 'Producto archivado con éxito',
|
||||
'pro_plan_custom_fields' => ':link haz click para para activar campos a medida',
|
||||
'advanced_settings' => 'Configuración Avanzada',
|
||||
'pro_plan_advanced_settings' => ':link haz click para para activar la configuración avanzada',
|
||||
'invoice_design' => 'Diseño de factura',
|
||||
'specify_colors' => 'Especificar colores',
|
||||
'specify_colors_label' => 'Seleccionar los colores para usar en las facturas',
|
||||
'chart_builder' => 'Constructor de graficos',
|
||||
'ninja_email_footer' => 'Usa :site para facturar a tus clientes y recibir pagos de forma gratuita!',
|
||||
'go_pro' => 'Hazte Pro',
|
||||
|
||||
'new_quote' => 'Nuevo Presupuesto',
|
||||
'create_quote' => 'Crear Presupuesto',
|
||||
'edit_quote' => 'Editar Presupuesto',
|
||||
'archive_quote' => 'Archivar Presupuesto',
|
||||
'delete_quote' => 'Eliminar Presupuesto',
|
||||
'save_quote' => 'Guardar Presupuesto',
|
||||
'email_quote' => 'Enviar Presupuesto',
|
||||
'clone_quote' => 'Clonar Presupuesto',
|
||||
'convert_to_invoice' => 'Convertir a Factura',
|
||||
'view_invoice' => 'Ver Factura',
|
||||
'view_quote' => 'Ver Presupuesto',
|
||||
'view_client' => 'Ver Cliente',
|
||||
// Quotes
|
||||
'quote' => 'Presupuesto',
|
||||
'quotes' => 'Presupuestos',
|
||||
'quote_number' => 'Numero de Presupuesto',
|
||||
'quote_number_short' => 'Presupuesto Nº ',
|
||||
'quote_date' => 'Fecha Presupuesto',
|
||||
'quote_total' => 'Total Presupuestado',
|
||||
'your_quote' => 'Su Presupuesto',
|
||||
'total' => 'Total',
|
||||
'clone' => 'Clonar',
|
||||
|
||||
'updated_quote' => 'Presupuesto actualizado con éxito',
|
||||
'created_quote' => 'Presupuesto creado con éxito',
|
||||
'cloned_quote' => 'Presupuesto clonado con éxito',
|
||||
'emailed_quote' => 'Presupuesto enviado con éxito',
|
||||
'archived_quote' => 'Presupuesto archivado con éxito',
|
||||
'archived_quotes' => ':count Presupuestos archivados con exito',
|
||||
'deleted_quote' => 'Presupuesto eliminado con éxito',
|
||||
'deleted_quotes' => ':count Presupuestos eliminados con exito',
|
||||
'converted_to_invoice' => 'Presupuesto convertido a factura con éxito',
|
||||
'new_quote' => 'Nuevo Presupuesto',
|
||||
'create_quote' => 'Crear Presupuesto',
|
||||
'edit_quote' => 'Editar Presupuesto',
|
||||
'archive_quote' => 'Archivar Presupuesto',
|
||||
'delete_quote' => 'Eliminar Presupuesto',
|
||||
'save_quote' => 'Guardar Presupuesto',
|
||||
'email_quote' => 'Enviar Presupuesto',
|
||||
'clone_quote' => 'Clonar Presupuesto',
|
||||
'convert_to_invoice' => 'Convertir a Factura',
|
||||
'view_invoice' => 'Ver Factura',
|
||||
'view_quote' => 'Ver Presupuesto',
|
||||
'view_client' => 'Ver Cliente',
|
||||
|
||||
'quote_subject' => 'Nuevo Presupuesto de :account',
|
||||
'quote_message' => 'Para ver el presupuesto por un importe de :amount, haga click en el enlace de abajo.',
|
||||
'quote_link_message' => 'Para ver su presupuesto haga click en el enlace de abajo:',
|
||||
'notification_quote_sent_subject' => 'El presupuesto :invoice enviado al cliente :client',
|
||||
'notification_quote_viewed_subject' => 'El presupuesto :invoice fue visto por el cliente :client',
|
||||
'notification_quote_sent' => 'El presupuesto :invoice por un valor de :amount, ha sido enviado al cliente :client.',
|
||||
'notification_quote_viewed' => 'El presupuesto :invoice por un valor de :amount ha sido visto por el cliente :client.',
|
||||
'session_expired' => 'Su sesión ha caducado.',
|
||||
'invoice_fields' => 'Campos de Factura',
|
||||
'invoice_options' => 'Opciones de Factura',
|
||||
'hide_quantity' => 'Ocultar Cantidad',
|
||||
'hide_quantity_help' => 'Si las cantidades de tus partidas siempre son 1, entonces puedes organizar tus facturas mejor al no mostrar este campo.',
|
||||
'hide_paid_to_date' => 'Ocultar valor pagado a la fecha',
|
||||
'hide_paid_to_date_help' => 'Solo mostrar la opción “Pagado a la fecha” en sus facturas cuando se ha recibido un pago.',
|
||||
'charge_taxes' => 'Cargar Impuestos',
|
||||
'user_management' => 'Gestión de Usuario',
|
||||
'add_user' => 'Añadir Usuario',
|
||||
'send_invite' => 'Enviar Invitación', //Context for its use
|
||||
'sent_invite' => 'Invitación enviada con éxito',
|
||||
'updated_user' => 'Usario actualizado con éxito',
|
||||
'invitation_message' => ':invitor te ha invitado a unirte a su cuenta en G-Factura.',
|
||||
'register_to_add_user' => 'Regístrate para añadir usarios',
|
||||
'user_state' => 'Estado',
|
||||
'edit_user' => 'Editar Usario',
|
||||
'delete_user' => 'Eliminar Usario',
|
||||
'active' => 'Activo',
|
||||
'pending' => 'Pendiente',
|
||||
'deleted_user' => 'Usario eliminado con éxito',
|
||||
'limit_users' => 'Lo sentimos, esta acción excederá el límite de ' . MAX_NUM_USERS . ' usarios',
|
||||
'confirm_email_invoice' => '¿Estás seguro que quieres enviar esta factura?',
|
||||
'confirm_email_quote' => '¿Estás seguro que quieres enviar este presupuesto?',
|
||||
'confirm_recurring_email_invoice' => 'Se ha marcado esta factura como recurrente, estás seguro que quieres enviar esta factura?',
|
||||
'cancel_account' => 'Cancelar Cuenta',
|
||||
'cancel_account_message' => 'AVISO: Esta acción eliminará todos tus datos de forma permanente.',
|
||||
'go_back' => 'Atrás',
|
||||
'data_visualizations' => 'Visualización de Datos',
|
||||
'sample_data' => 'Datos de Ejemplo',
|
||||
'hide' => 'Ocultar',
|
||||
'new_version_available' => 'Una nueva versión de :releases_link disponible. Estás utilizando la versión :user_version, la última versión es :latest_version',
|
||||
'invoice_settings' => 'Configuración de Facturas',
|
||||
'invoice_number_prefix' => 'Prefijo de Facturación',
|
||||
'invoice_number_counter' => 'Numeración de Facturación',
|
||||
'quote_number_prefix' => 'Prejijo de Presupuesto',
|
||||
'quote_number_counter' => 'Numeración de Presupuestos',
|
||||
'share_invoice_counter' => 'Compartir la numeración para presupuesto y facturación',
|
||||
'invoice_issued_to' => 'Factura emitida a',
|
||||
'invalid_counter' => 'Para evitar posibles conflictos, por favor crea un prefijo de facturación y de presupuesto.',
|
||||
'mark_sent' => 'Marcar como enviado',
|
||||
'updated_quote' => 'Presupuesto actualizado con éxito',
|
||||
'created_quote' => 'Presupuesto creado con éxito',
|
||||
'cloned_quote' => 'Presupuesto clonado con éxito',
|
||||
'emailed_quote' => 'Presupuesto enviado con éxito',
|
||||
'archived_quote' => 'Presupuesto archivado con éxito',
|
||||
'archived_quotes' => ':count Presupuestos archivados con exito',
|
||||
'deleted_quote' => 'Presupuesto eliminado con éxito',
|
||||
'deleted_quotes' => ':count Presupuestos eliminados con exito',
|
||||
'converted_to_invoice' => 'Presupuesto convertido a factura con éxito',
|
||||
|
||||
'quote_subject' => 'Nuevo Presupuesto de :account',
|
||||
'quote_message' => 'Para ver el presupuesto por un importe de :amount, haga click en el enlace de abajo.',
|
||||
'quote_link_message' => 'Para ver su presupuesto haga click en el enlace de abajo:',
|
||||
'notification_quote_sent_subject' => 'El presupuesto :invoice enviado al cliente :client',
|
||||
'notification_quote_viewed_subject' => 'El presupuesto :invoice fue visto por el cliente :client',
|
||||
'notification_quote_sent' => 'El presupuesto :invoice por un valor de :amount, ha sido enviado al cliente :client.',
|
||||
'notification_quote_viewed' => 'El presupuesto :invoice por un valor de :amount ha sido visto por el cliente :client.',
|
||||
'session_expired' => 'Su sesión ha caducado.',
|
||||
'invoice_fields' => 'Campos de Factura',
|
||||
'invoice_options' => 'Opciones de Factura',
|
||||
'hide_quantity' => 'Ocultar Cantidad',
|
||||
'hide_quantity_help' => 'Si las cantidades de tus partidas siempre son 1, entonces puedes organizar tus facturas mejor al no mostrar este campo.',
|
||||
'hide_paid_to_date' => 'Ocultar valor pagado a la fecha',
|
||||
'hide_paid_to_date_help' => 'Solo mostrar la opción “Pagado a la fecha” en sus facturas cuando se ha recibido un pago.',
|
||||
'charge_taxes' => 'Cargar Impuestos',
|
||||
'user_management' => 'Gestión de Usuario',
|
||||
'add_user' => 'Añadir Usuario',
|
||||
'send_invite' => 'Enviar Invitación', //Context for its use
|
||||
'sent_invite' => 'Invitación enviada con éxito',
|
||||
'updated_user' => 'Usario actualizado con éxito',
|
||||
'invitation_message' => ':invitor te ha invitado a unirte a su cuenta en G-Factura.',
|
||||
'register_to_add_user' => 'Regístrate para añadir usarios',
|
||||
'user_state' => 'Estado',
|
||||
'edit_user' => 'Editar Usario',
|
||||
'delete_user' => 'Eliminar Usario',
|
||||
'active' => 'Activo',
|
||||
'pending' => 'Pendiente',
|
||||
'deleted_user' => 'Usario eliminado con éxito',
|
||||
'limit_users' => 'Lo sentimos, esta acción excederá el límite de '.MAX_NUM_USERS.' usarios',
|
||||
'confirm_email_invoice' => '¿Estás seguro que quieres enviar esta factura?',
|
||||
'confirm_email_quote' => '¿Estás seguro que quieres enviar este presupuesto?',
|
||||
'confirm_recurring_email_invoice' => 'Se ha marcado esta factura como recurrente, estás seguro que quieres enviar esta factura?',
|
||||
'cancel_account' => 'Cancelar Cuenta',
|
||||
'cancel_account_message' => 'AVISO: Esta acción eliminará todos tus datos de forma permanente.',
|
||||
'go_back' => 'Atrás',
|
||||
'data_visualizations' => 'Visualización de Datos',
|
||||
'sample_data' => 'Datos de Ejemplo',
|
||||
'hide' => 'Ocultar',
|
||||
'new_version_available' => 'Una nueva versión de :releases_link disponible. Estás utilizando la versión :user_version, la última versión es :latest_version',
|
||||
'invoice_settings' => 'Configuración de Facturas',
|
||||
'invoice_number_prefix' => 'Prefijo de Facturación',
|
||||
'invoice_number_counter' => 'Numeración de Facturación',
|
||||
'quote_number_prefix' => 'Prejijo de Presupuesto',
|
||||
'quote_number_counter' => 'Numeración de Presupuestos',
|
||||
'share_invoice_counter' => 'Compartir la numeración para presupuesto y facturación',
|
||||
'invoice_issued_to' => 'Factura emitida a',
|
||||
'invalid_counter' => 'Para evitar posibles conflictos, por favor crea un prefijo de facturación y de presupuesto.',
|
||||
'mark_sent' => 'Marcar como enviado',
|
||||
|
||||
'gateway_help_1' => ':link para registrarse en Authorize.net.',
|
||||
'gateway_help_2' => ':link para registrarse en Authorize.net.',
|
||||
'gateway_help_17' => ':link para obtener su firma API de PayPal.',
|
||||
'gateway_help_23' => 'Nota: utilizar su clave de API secreta, no es su clave de API publica.',
|
||||
'gateway_help_27' => ':link para registrarse en TwoCheckout.',
|
||||
'gateway_help_1' => ':link para registrarse en Authorize.net.',
|
||||
'gateway_help_2' => ':link para registrarse en Authorize.net.',
|
||||
'gateway_help_17' => ':link para obtener su firma API de PayPal.',
|
||||
'gateway_help_23' => 'Nota: utilizar su clave de API secreta, no es su clave de API publica.',
|
||||
'gateway_help_27' => ':link para registrarse en TwoCheckout.',
|
||||
|
||||
'more_designs' => 'Más diseños',
|
||||
'more_designs_title' => 'Diseños adicionales para factura',
|
||||
'more_designs_cloud_header' => 'Pase a Pro para añadir más diseños de facturas',
|
||||
'more_designs_cloud_text' => '',
|
||||
'more_designs_self_host_header' => 'Obtenga 6 diseños más para facturas por sólo '.INVOICE_DESIGNS_PRICE, // comprobar
|
||||
'more_designs_self_host_text' => '',
|
||||
'buy' => 'Comprar',
|
||||
'bought_designs' => 'Añadidos con exito los diseños de factura',
|
||||
'more_designs' => 'Más diseños',
|
||||
'more_designs_title' => 'Diseños adicionales para factura',
|
||||
'more_designs_cloud_header' => 'Pase a Pro para añadir más diseños de facturas',
|
||||
'more_designs_cloud_text' => '',
|
||||
'more_designs_self_host_header' => 'Obtenga 6 diseños más para facturas por sólo '.INVOICE_DESIGNS_PRICE, // comprobar
|
||||
'more_designs_self_host_text' => '',
|
||||
'buy' => 'Comprar',
|
||||
'bought_designs' => 'Añadidos con exito los diseños de factura',
|
||||
|
||||
'sent' => 'Enviado',
|
||||
'timesheets' => 'Parte de Horas',
|
||||
'sent' => 'Enviado',
|
||||
'timesheets' => 'Parte de Horas',
|
||||
|
||||
'payment_title' => 'Introduzca su dirección de facturación y la infomración de su tarjeta de crédito',
|
||||
'payment_cvv' => '*los tres últimos dígitos de la parte posterior de su tarjeta',
|
||||
'payment_footer1' => '*La dirección de facturación debe coincidir con la de la tarjeta de crédito.',
|
||||
'payment_footer2' => '*Por favor, haga clic en "Pagar ahora" sólo una vez - esta operación puede tardar hasta 1 minuto en procesarse.',
|
||||
'vat_number' => 'NIF/CIF',
|
||||
'payment_title' => 'Introduzca su dirección de facturación y la infomración de su tarjeta de crédito',
|
||||
'payment_cvv' => '*los tres últimos dígitos de la parte posterior de su tarjeta',
|
||||
'payment_footer1' => '*La dirección de facturación debe coincidir con la de la tarjeta de crédito.',
|
||||
'payment_footer2' => '*Por favor, haga clic en "Pagar ahora" sólo una vez - esta operación puede tardar hasta 1 minuto en procesarse.',
|
||||
'vat_number' => 'NIF/CIF',
|
||||
|
||||
'id_number' => 'Número de Identificación',
|
||||
'white_label_link' => 'Marca Blanca" ',
|
||||
'white_label_text' => 'Obtener una licencia de marca blanca por'.WHITE_LABEL_PRICE.' para quitar la marca Invoice Ninja de la parte superior de las páginas del cliente.', // comprobar
|
||||
'white_label_link' => 'Marca Blanca" ',
|
||||
'bought_white_label' => 'Se ha conseguido con exito la licencia de Marca Blanca',
|
||||
'white_labeled' => 'Marca Blanca',
|
||||
'id_number' => 'Número de Identificación',
|
||||
'white_label_link' => 'Marca Blanca" ',
|
||||
'white_label_text' => 'Obtener una licencia de marca blanca por'.WHITE_LABEL_PRICE.' para quitar la marca Invoice Ninja de la parte superior de las páginas del cliente.', // comprobar
|
||||
'white_label_link' => 'Marca Blanca" ',
|
||||
'bought_white_label' => 'Se ha conseguido con exito la licencia de Marca Blanca',
|
||||
'white_labeled' => 'Marca Blanca',
|
||||
|
||||
'restore' => 'Restaurar',
|
||||
'restore_invoice' => 'Restaurar Factura',
|
||||
'restore_quote' => 'Restaurar Presupuesto',
|
||||
'restore_client' => 'Restaurar Cliente',
|
||||
'restore_credit' => 'Restaurar Pendiente',
|
||||
'restore_credit' => 'Restaurar Pendiente',
|
||||
'restore_payment' => 'Restaurar Pago',
|
||||
|
||||
'restored_invoice' => 'Factura restaurada con éxito',
|
||||
@ -479,7 +478,7 @@ return array(
|
||||
'restored_client' => 'Cliente restaurada con éxito',
|
||||
'restored_payment' => 'Pago restaurada con éxito',
|
||||
'restored_credit' => 'Pendiente restaurada con éxito',
|
||||
|
||||
|
||||
'reason_for_canceling' => 'Ayudenos a mejorar nuestro sitio diciendonos porque se va, Gracias',
|
||||
'discount_percent' => 'Porcentaje',
|
||||
'discount_amount' => 'Cantidad',
|
||||
@ -503,7 +502,7 @@ return array(
|
||||
'payment_email' => 'Email de Pagos',
|
||||
'quote_email' => 'Email de Presupuestos',
|
||||
'reset_all' => 'Restablecer Todos',
|
||||
'approve' => 'Aprobar',
|
||||
'approve' => 'Aprobar',
|
||||
|
||||
'token_billing_type_id' => 'Token Billing', //¿?
|
||||
'token_billing_help' => 'Permite almacenar tarjetas de crédito para posteriormente realizarles el cobro.',
|
||||
@ -604,7 +603,7 @@ return array(
|
||||
'view_documentation' => 'View Documentation',
|
||||
'app_title' => 'Free Open-Source Online Invoicing',
|
||||
'app_description' => 'Invoice Ninja is a free, open-source solution for invoicing and billing customers. With Invoice Ninja, you can easily build and send beautiful invoices from any device that has access to the web. Your clients can print your invoices, download them as pdf files, and even pay you online from within the system.',
|
||||
|
||||
|
||||
'rows' => 'rows',
|
||||
'www' => 'www',
|
||||
'logo' => 'Logo',
|
||||
@ -750,9 +749,9 @@ return array(
|
||||
'primary_user' => 'Primary User',
|
||||
'help' => 'Help',
|
||||
'customize_help' => '<p>We use <a href="http://pdfmake.org/" target="_blank">pdfmake</a> to define the invoice designs declaratively. The pdfmake <a href="http://pdfmake.org/playground.html" target="_blank">playground</a> provide\'s a great way to see the library in action.</p>
|
||||
<p>You can access any invoice field by adding <code>Value</code> to the end. For example <code>$invoiceNumberValue</code> displays the invoice number.</p>
|
||||
<p>To access a child property using dot notation. For example to show the client name you could use <code>$client.nameValue</code>.</p>
|
||||
<p>If you need help figuring something out post a question to our <a href="https://www.invoiceninja.com/forums/forum/support/" target="_blank">support forum</a>.</p>',
|
||||
<p>You can access any invoice field by adding <code>Value</code> to the end. For example <code>$invoiceNumberValue</code> displays the invoice number.</p>
|
||||
<p>To access a child property using dot notation. For example to show the client name you could use <code>$client.nameValue</code>.</p>
|
||||
<p>If you need help figuring something out post a question to our <a href="https://www.invoiceninja.com/forums/forum/support/" target="_blank">support forum</a>.</p>',
|
||||
|
||||
'invoice_due_date' => 'Due Date',
|
||||
'quote_due_date' => 'Valid Until',
|
||||
@ -766,7 +765,7 @@ return array(
|
||||
'status_partial' => 'Partial',
|
||||
'status_paid' => 'Paid',
|
||||
'show_line_item_tax' => 'Display <b>line item taxes</b> inline',
|
||||
|
||||
|
||||
'iframe_url' => 'Website',
|
||||
'iframe_url_help1' => 'Copy the following code to a page on your site.',
|
||||
'iframe_url_help2' => 'You can test the feature by clicking \'View as recipient\' for an invoice.',
|
||||
@ -805,9 +804,9 @@ return array(
|
||||
'invoice_charges' => 'Invoice Charges',
|
||||
|
||||
'invitation_status' => [
|
||||
'sent' => 'Email Sent',
|
||||
'opened' => 'Email Openend',
|
||||
'viewed' => 'Invoice Viewed',
|
||||
'sent' => 'Email Sent',
|
||||
'opened' => 'Email Openend',
|
||||
'viewed' => 'Invoice Viewed',
|
||||
],
|
||||
'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.',
|
||||
'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice',
|
||||
@ -817,6 +816,9 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
|
||||
);
|
||||
);
|
||||
|
@ -262,7 +262,7 @@ return array(
|
||||
'email_salutation' => 'Cher :name,',
|
||||
'email_signature' => 'Cordialement,',
|
||||
'email_from' => 'L\'équipe Invoice Ninja',
|
||||
'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'Pour voir la facture de votre client cliquez sur le lien ci-après :',
|
||||
'notification_invoice_paid_subject' => 'La facture :invoice a été payée par le client :client',
|
||||
'notification_invoice_sent_subject' => 'La facture :invoice a été envoyée au client :client',
|
||||
@ -809,6 +809,10 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
|
||||
);
|
||||
|
@ -262,7 +262,7 @@ return array(
|
||||
'email_salutation' => 'Cher :name,',
|
||||
'email_signature' => 'Cordialement,',
|
||||
'email_from' => 'L\'équipe InvoiceNinja',
|
||||
'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'Pour voir la facture de votre client cliquez sur le lien ci-après :',
|
||||
'notification_invoice_paid_subject' => 'La facture :invoice a été payée par le client :client',
|
||||
'notification_invoice_sent_subject' => 'La facture :invoice a été envoyée au client :client',
|
||||
@ -810,6 +810,10 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
|
||||
);
|
||||
|
@ -262,7 +262,7 @@ return array(
|
||||
'email_salutation' => 'Caro :name,',
|
||||
'email_signature' => 'Distinti saluti,',
|
||||
'email_from' => 'Il Team di InvoiceNinja',
|
||||
'user_email_footer' => 'Per modificare le impostazioni di notifiche via email per favore accedi a: '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'Per modificare le impostazioni di notifiche via email per favore accedi a: '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'Per visualizzare la tua fattura del cliente clicca sul link qui sotto:',
|
||||
'notification_invoice_paid_subject' => 'La fattura :invoice è stata pagata da :client',
|
||||
'notification_invoice_sent_subject' => 'La fattura :invoice è stata inviata a :client',
|
||||
@ -812,5 +812,9 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
);
|
||||
|
@ -262,7 +262,7 @@ return array(
|
||||
'email_salutation' => 'Dear :name,',
|
||||
'email_signature' => 'Regards,',
|
||||
'email_from' => 'The Invoice Ninja Team',
|
||||
'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'To view your client invoice click the link below:',
|
||||
'notification_invoice_paid_subject' => 'Invoice :invoice was paid by :client',
|
||||
'notification_invoice_sent_subject' => 'Invoice :invoice was sent to :client',
|
||||
@ -819,6 +819,10 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
);
|
||||
|
||||
|
@ -262,7 +262,7 @@ return array(
|
||||
'email_salutation' => 'Kjære :name,',
|
||||
'email_signature' => 'Med vennlig hilsen,',
|
||||
'email_from' => 'The Invoice Ninja Team',
|
||||
'user_email_footer' => 'For å justere varslingsinnstillingene vennligst besøk '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'For å justere varslingsinnstillingene vennligst besøk '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'Hvis du vil se din klientfaktura klikk på linken under:',
|
||||
'notification_invoice_paid_subject' => 'Faktura :invoice betalt av :client',
|
||||
'notification_invoice_sent_subject' => 'Faktura :invoice sendt til :client',
|
||||
@ -817,5 +817,9 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
);
|
@ -260,7 +260,7 @@ return array(
|
||||
'email_salutation' => 'Beste :name,',
|
||||
'email_signature' => 'Met vriendelijke groeten,',
|
||||
'email_from' => 'Het InvoiceNinja Team',
|
||||
'user_email_footer' => 'Ga alstublieft naar '.SITE_URL.'/company/notifications om je e-mail notificatie instellingen aan te passen ',
|
||||
'user_email_footer' => 'Ga alstublieft naar '.SITE_URL.'/settings/notifications om je e-mail notificatie instellingen aan te passen ',
|
||||
'invoice_link_message' => 'Klik op volgende link om de Factuur van je klant te bekijken:',
|
||||
'notification_invoice_paid_subject' => 'Factuur :invoice is betaald door :client',
|
||||
'notification_invoice_sent_subject' => 'Factuur :invoice is gezonden door :client',
|
||||
@ -812,5 +812,9 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
);
|
||||
|
@ -258,7 +258,7 @@ return array(
|
||||
'email_salutation' => 'Caro :name,',
|
||||
'email_signature' => 'Até mais,',
|
||||
'email_from' => 'Equipe InvoiceNinja',
|
||||
'user_email_footer' => 'Para ajustar suas configurações de notificações de email acesse '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'Para ajustar suas configurações de notificações de email acesse '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'Para visualizar a fatura do seu cliente clique no link abaixo:',
|
||||
'notification_invoice_paid_subject' => 'Fatura :invoice foi pago por :client',
|
||||
'notification_invoice_sent_subject' => 'Fatura :invoice foi enviado por :client',
|
||||
@ -812,5 +812,9 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
);
|
||||
|
@ -262,7 +262,7 @@ return array(
|
||||
'email_salutation' => 'Hej :name,',
|
||||
'email_signature' => 'Vänliga hälsningar,',
|
||||
'email_from' => 'Invoice Ninja teamet',
|
||||
'user_email_footer' => 'För att anpassa dina e-post notifieringar gå till '.SITE_URL.'/company/notifications',
|
||||
'user_email_footer' => 'För att anpassa dina e-post notifieringar gå till '.SITE_URL.'/settings/notifications',
|
||||
'invoice_link_message' => 'För att se din kundfaktura klicka på länken nedan:',
|
||||
'notification_invoice_paid_subject' => 'Faktura :invoice är betald av :client',
|
||||
'notification_invoice_sent_subject' => 'Faktura :invoice är skickad till :client',
|
||||
@ -815,5 +815,9 @@ return array(
|
||||
'custom_invoice_link' => 'Custom Invoice Link',
|
||||
'total_invoiced' => 'Total Invoiced',
|
||||
'open_balance' => 'Open Balance',
|
||||
'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.',
|
||||
'basic_settings' => 'Basic Settings',
|
||||
'pro' => 'Pro',
|
||||
'gateways' => 'Payment Gateways',
|
||||
|
||||
);
|
||||
|
@ -1,9 +1,11 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
|
||||
{!! Former::open($url)->method($method)->rule()->addClass('col-md-8 col-md-offset-2 warn-on-exit') !!}
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_PAYMENTS])
|
||||
|
||||
{!! Former::open($url)->method($method)->rule()->addClass('warn-on-exit') !!}
|
||||
{!! Former::populate($account) !!}
|
||||
|
||||
|
||||
@ -106,7 +108,7 @@
|
||||
<p/> <p/>
|
||||
|
||||
{!! Former::actions(
|
||||
$countGateways > 0 ? Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('/company/payments'))->appendIcon(Icon::create('remove-circle')) : false,
|
||||
$countGateways > 0 ? Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('/settings/online_payments'))->appendIcon(Icon::create('remove-circle')) : false,
|
||||
Button::success(trans('texts.save'))->submit()->large()->appendIcon(Icon::create('floppy-disk'))) !!}
|
||||
{!! Former::close() !!}
|
||||
|
||||
|
72
resources/views/accounts/api_tokens.blade.php
Normal file
72
resources/views/accounts/api_tokens.blade.php
Normal file
@ -0,0 +1,72 @@
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_API_TOKENS, 'advanced' => true])
|
||||
|
||||
{!! Former::open('tokens/delete')->addClass('user-form') !!}
|
||||
|
||||
<div style="display:none">
|
||||
{!! Former::text('tokenPublicId') !!}
|
||||
</div>
|
||||
{!! Former::close() !!}
|
||||
|
||||
|
||||
<div class="pull-right">
|
||||
{!! Button::normal(trans('texts.documentation'))->asLinkTo(NINJA_WEB_URL.'/knowledgebase/api-documentation/')->withAttributes(['target' => '_blank'])->appendIcon(Icon::create('info-sign')) !!}
|
||||
@if (Utils::isNinja())
|
||||
{!! Button::normal(trans('texts.zapier'))->asLinkTo(ZAPIER_URL)->withAttributes(['target' => '_blank']) !!}
|
||||
@endif
|
||||
@if (Utils::isPro())
|
||||
{!! Button::primary(trans('texts.add_token'))->asLinkTo(URL::to('/tokens/create'))->appendIcon(Icon::create('plus-sign')) !!}
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<label for="trashed" style="font-weight:normal; margin-left: 10px;">
|
||||
<input id="trashed" type="checkbox" onclick="setTrashVisible()"
|
||||
{!! Session::get('show_trash:token') ? 'checked' : ''!!}/> {!! trans('texts.show_deleted_tokens')!!}
|
||||
</label>
|
||||
-->
|
||||
|
||||
{!! Datatable::table()
|
||||
->addColumn(
|
||||
trans('texts.name'),
|
||||
trans('texts.token'),
|
||||
trans('texts.action'))
|
||||
->setUrl(url('api/tokens/'))
|
||||
->setOptions('sPaginationType', 'bootstrap')
|
||||
->setOptions('bFilter', false)
|
||||
->setOptions('bAutoWidth', false)
|
||||
->setOptions('aoColumns', [[ "sWidth"=> "40%" ], [ "sWidth"=> "40%" ], ["sWidth"=> "20%"]])
|
||||
->setOptions('aoColumnDefs', [['bSortable'=>false, 'aTargets'=>[2]]])
|
||||
->render('datatable') !!}
|
||||
|
||||
<script>
|
||||
window.onDatatableReady = function() {
|
||||
$('tbody tr').mouseover(function() {
|
||||
$(this).closest('tr').find('.tr-action').css('visibility','visible');
|
||||
}).mouseout(function() {
|
||||
$dropdown = $(this).closest('tr').find('.tr-action');
|
||||
if (!$dropdown.hasClass('open')) {
|
||||
$dropdown.css('visibility','hidden');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function setTrashVisible() {
|
||||
var checked = $('#trashed').is(':checked');
|
||||
window.location = '{!! URL::to('view_archive/token') !!}' + (checked ? '/true' : '/false');
|
||||
}
|
||||
|
||||
function deleteToken(id) {
|
||||
if (!confirm("{!! trans('texts.are_you_sure') !!}")) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('#tokenPublicId').val(id);
|
||||
$('form.user-form').submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
@stop
|
@ -1,4 +1,4 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
@ -27,9 +27,8 @@
|
||||
@stop
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
|
||||
@parent
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_INVOICE_DESIGN, 'advanced' => true])
|
||||
|
||||
|
||||
<script>
|
||||
@ -155,7 +154,7 @@
|
||||
{!! Former::select('invoice_design_id')->style('display:inline;width:120px')->fromQuery($invoiceDesigns, 'name', 'id')->onchange('onSelectChange()')->raw() !!}
|
||||
<div class="pull-right">
|
||||
{!! Button::normal(trans('texts.help'))->withAttributes(['onclick' => 'showHelp()'])->appendIcon(Icon::create('question-sign')) !!}
|
||||
{!! Button::normal(trans('texts.cancel'))->asLinkTo(URL::to('/company/advanced_settings/invoice_design'))->appendIcon(Icon::create('remove-circle')) !!}
|
||||
{!! Button::normal(trans('texts.cancel'))->asLinkTo(URL::to('/settings/invoice_design'))->appendIcon(Icon::create('remove-circle')) !!}
|
||||
@if (Auth::user()->isPro())
|
||||
{!! Button::success(trans('texts.save'))->withAttributes(['onclick' => 'submitForm()'])->appendIcon(Icon::create('floppy-disk')) !!}
|
||||
@endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@ -13,21 +13,14 @@
|
||||
|
||||
{!! Former::open_for_files()->addClass('warn-on-exit')->rules(array(
|
||||
'name' => 'required',
|
||||
'email' => 'email|required'
|
||||
)) !!}
|
||||
|
||||
{{ Former::populate($account) }}
|
||||
{{ Former::populateField('military_time', intval($account->military_time)) }}
|
||||
{{ Former::populateField('first_name', $user->first_name) }}
|
||||
{{ Former::populateField('last_name', $user->last_name) }}
|
||||
{{ Former::populateField('email', $user->email) }}
|
||||
{{ Former::populateField('phone', $user->phone) }}
|
||||
@if (Utils::isNinjaDev())
|
||||
{{ Former::populateField('dark_mode', intval($user->dark_mode)) }}
|
||||
@endif
|
||||
|
||||
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_COMPANY_DETAILS])
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
@ -72,133 +65,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{!! trans('texts.user_details') !!}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{!! Former::text('first_name') !!}
|
||||
{!! Former::text('last_name') !!}
|
||||
{!! Former::text('email') !!}
|
||||
{!! Former::text('phone') !!}
|
||||
|
||||
@if (Utils::isNinja())
|
||||
{!! Former::plaintext('oneclick_login')->value(
|
||||
$user->oauth_provider_id ?
|
||||
$oauthProviderName . ' - ' . link_to('#', trans('texts.disable'), ['onclick' => 'disableSocialLogin()']) :
|
||||
DropdownButton::primary(trans('texts.enable'))->withContents($oauthLoginUrls)->small()
|
||||
) !!}
|
||||
@endif
|
||||
|
||||
@if (Utils::isNinja() && $user->confirmed)
|
||||
@if ($user->referral_code)
|
||||
{!! Former::plaintext('referral_code')
|
||||
->value($user->referral_code . ' <a href="'.REFERRAL_PROGRAM_URL.'" target="_blank" title="'.trans('texts.learn_more').'">' . Icon::create('question-sign') . '</a>') !!}
|
||||
@else
|
||||
{!! Former::checkbox('referral_code')
|
||||
->text(trans('texts.enable') . ' <a href="'.REFERRAL_PROGRAM_URL.'" target="_blank" title="'.trans('texts.learn_more').'">' . Icon::create('question-sign') . '</a>') !!}
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@if (false && Utils::isNinjaDev())
|
||||
{!! Former::checkbox('dark_mode')->text(trans('texts.dark_mode_help')) !!}
|
||||
@endif
|
||||
|
||||
@if (Utils::isNinja())
|
||||
<br/>
|
||||
@if (Auth::user()->confirmed)
|
||||
{!! Former::actions( Button::primary(trans('texts.change_password'))->small()->withAttributes(['onclick'=>'showChangePassword()'])) !!}
|
||||
@elseif (Auth::user()->registered)
|
||||
{!! Former::actions( Button::primary(trans('texts.resend_confirmation'))->asLinkTo(URL::to('/resend_confirmation'))->small() ) !!}
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{!! trans('texts.localization') !!}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
{!! Former::select('currency_id')->addOption('','')
|
||||
->fromQuery($currencies, 'name', 'id') !!}
|
||||
{!! Former::select('language_id')->addOption('','')
|
||||
->fromQuery($languages, 'name', 'id') !!}
|
||||
{!! Former::select('timezone_id')->addOption('','')
|
||||
->fromQuery($timezones, 'location', 'id') !!}
|
||||
{!! Former::select('date_format_id')->addOption('','')
|
||||
->fromQuery($dateFormats, 'label', 'id') !!}
|
||||
{!! Former::select('datetime_format_id')->addOption('','')
|
||||
->fromQuery($datetimeFormats, 'label', 'id') !!}
|
||||
{!! Former::checkbox('military_time')->text(trans('texts.enable')) !!}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<center>
|
||||
{!! Button::success(trans('texts.save'))->submit()->large()->appendIcon(Icon::create('floppy-disk')) !!}
|
||||
</center>
|
||||
|
||||
|
||||
|
||||
<div class="modal fade" id="passwordModal" tabindex="-1" role="dialog" aria-labelledby="passwordModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title" id="passwordModalLabel">{{ trans('texts.change_password') }}</h4>
|
||||
</div>
|
||||
|
||||
<div style="background-color: #fff" id="changePasswordDiv" onkeyup="validateChangePassword()" onclick="validateChangePassword()" onkeydown="checkForEnter(event)">
|
||||
|
||||
|
||||
{!! Former::password('current_password')->style('width:300px') !!}
|
||||
{!! Former::password('newer_password')->style('width:300px')->label(trans('texts.new_password')) !!}
|
||||
{!! Former::password('confirm_password')->style('width:300px') !!}
|
||||
|
||||
|
||||
<br/>
|
||||
<center>
|
||||
<div id="changePasswordError"></div>
|
||||
</center>
|
||||
<br/>
|
||||
</div>
|
||||
|
||||
<div style="padding-left:40px;padding-right:40px;display:none;min-height:130px" id="working">
|
||||
<h3>{{ trans('texts.working') }}...</h3>
|
||||
<div class="progress progress-striped active">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="background-color: #fff; padding-right:20px;padding-left:20px; display:none" id="successDiv">
|
||||
<br/>
|
||||
<h3>{{ trans('texts.success') }}</h3>
|
||||
{{ trans('texts.updated_password') }}
|
||||
<br/>
|
||||
|
||||
<br/>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer" style="margin-top: 0px" id="changePasswordFooter">
|
||||
<button type="button" class="btn btn-default" id="cancelChangePasswordButton" data-dismiss="modal">Cancel</button>
|
||||
<button type="button" class="btn btn-success" onclick="submitChangePassword()" id="changePasswordButton" disabled>
|
||||
{{ trans('texts.save') }}
|
||||
<i class="glyphicon glyphicon-floppy-disk"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{!! Former::close() !!}
|
||||
|
||||
{!! Form::open(['url' => 'remove_logo', 'class' => 'removeLogoForm']) !!}
|
||||
@ -209,21 +82,6 @@
|
||||
|
||||
$(function() {
|
||||
$('#country_id').combobox();
|
||||
|
||||
$('#passwordModal').on('hidden.bs.modal', function () {
|
||||
$(['current_password', 'newer_password', 'confirm_password']).each(function(i, field) {
|
||||
var $input = $('form #'+field);
|
||||
$input.val('');
|
||||
$input.closest('div.form-group').removeClass('has-success');
|
||||
});
|
||||
$('#changePasswordButton').prop('disabled', true);
|
||||
})
|
||||
|
||||
$('#passwordModal').on('shown.bs.modal', function () {
|
||||
$('#current_password').focus();
|
||||
})
|
||||
|
||||
localStorage.setItem('auth_provider', '{{ strtolower($oauthProviderName) }}');
|
||||
});
|
||||
|
||||
function deleteLogo() {
|
||||
@ -232,84 +90,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
function showChangePassword() {
|
||||
$('#passwordModal').modal('show');
|
||||
}
|
||||
|
||||
function checkForEnter(event)
|
||||
{
|
||||
if (event.keyCode === 13){
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function validateChangePassword(showError)
|
||||
{
|
||||
var isFormValid = true;
|
||||
$(['current_password', 'newer_password', 'confirm_password']).each(function(i, field) {
|
||||
var $input = $('form #'+field),
|
||||
val = $.trim($input.val());
|
||||
var isValid = val && val.length >= 6;
|
||||
|
||||
if (isValid && field == 'confirm_password') {
|
||||
isValid = val == $.trim($('#newer_password').val());
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
$input.closest('div.form-group').removeClass('has-error').addClass('has-success');
|
||||
} else {
|
||||
isFormValid = false;
|
||||
$input.closest('div.form-group').removeClass('has-success');
|
||||
if (showError) {
|
||||
$input.closest('div.form-group').addClass('has-error');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('#changePasswordButton').prop('disabled', !isFormValid);
|
||||
|
||||
return isFormValid;
|
||||
}
|
||||
|
||||
function submitChangePassword()
|
||||
{
|
||||
if (!validateChangePassword(true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('#changePasswordDiv, #changePasswordFooter').hide();
|
||||
$('#working').show();
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '{{ URL::to('/users/change_password') }}',
|
||||
data: 'current_password=' + encodeURIComponent($('form #current_password').val()) +
|
||||
'&new_password=' + encodeURIComponent($('form #newer_password').val()) +
|
||||
'&confirm_password=' + encodeURIComponent($('form #confirm_password').val()),
|
||||
success: function(result) {
|
||||
if (result == 'success') {
|
||||
NINJA.formIsChanged = false;
|
||||
$('#changePasswordButton').hide();
|
||||
$('#successDiv').show();
|
||||
$('#cancelChangePasswordButton').html('{{ trans('texts.close') }}');
|
||||
} else {
|
||||
$('#changePasswordError').html(result);
|
||||
$('#changePasswordDiv').show();
|
||||
}
|
||||
$('#changePasswordFooter').show();
|
||||
$('#working').hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function disableSocialLogin() {
|
||||
if (!confirm("{!! trans('texts.are_you_sure') !!}")) {
|
||||
return;
|
||||
}
|
||||
|
||||
window.location = '{{ URL::to('/auth_unlink') }}';
|
||||
}
|
||||
</script>
|
||||
|
||||
@stop
|
||||
|
@ -1,7 +1,8 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_IMPORT_EXPORT])
|
||||
|
||||
{{ Former::open()->addClass('col-md-9 col-md-offset-1') }}
|
||||
{{ Former::legend('Export Client Data') }}
|
||||
|
@ -1,9 +1,11 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
|
||||
{!! Former::open_for_files('company/import_map')->addClass('col-md-8 col-md-offset-2') !!}
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_IMPORT_EXPORT])
|
||||
|
||||
{!! Former::open_for_files('settings/' . ACCOUNT_MAP) !!}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{!! trans('texts.import_clients') !!}</h3>
|
||||
@ -16,7 +18,7 @@
|
||||
{!! Former::close() !!}
|
||||
|
||||
|
||||
{!! Former::open('company/export')->addClass('col-md-8 col-md-offset-2') !!}
|
||||
{!! Former::open('settings/' . ACCOUNT_EXPORT) !!}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{!! trans('texts.export_clients') !!}</h3>
|
||||
@ -28,7 +30,7 @@
|
||||
{!! Former::close() !!}
|
||||
|
||||
|
||||
{!! Former::open('company/cancel_account')->addClass('col-md-8 col-md-offset-2 cancel-account') !!}
|
||||
{!! Former::open('settings/cancel_account')->addClass('cancel-account') !!}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{!! trans('texts.cancel_account') !!}</h3>
|
||||
|
@ -1,9 +1,11 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
|
||||
{!! Former::open('company/import_export')->addClass('col-md-8 col-md-offset-2 warn-on-exit') !!}
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_IMPORT_EXPORT])
|
||||
|
||||
{!! Former::open('settings/' . ACCOUNT_IMPORT_EXPORT)->addClass('warn-on-exit') !!}
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
@ -46,7 +48,7 @@
|
||||
|
||||
|
||||
{!! Former::actions(
|
||||
Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('/company/import_export'))->appendIcon(Icon::create('remove-circle')),
|
||||
Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('/settings/import_export'))->appendIcon(Icon::create('remove-circle')),
|
||||
Button::success(trans('texts.import'))->submit()->large()->appendIcon(Icon::create('floppy-disk'))) !!}
|
||||
{!! Former::close() !!}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_INVOICE_DESIGN, 'advanced' => true])
|
||||
|
||||
<script>
|
||||
var invoiceDesigns = {!! $invoiceDesigns !!};
|
||||
@ -105,7 +105,7 @@
|
||||
{!! Former::text('secondary_color') !!}
|
||||
|
||||
{!! Former::actions(
|
||||
Button::primary(trans('texts.customize_design'))->small()->asLinkTo(URL::to('/company/advanced_settings/customize_design'))
|
||||
Button::primary(trans('texts.customize_design'))->small()->asLinkTo(URL::to('/settings/customize_design'))
|
||||
) !!}
|
||||
|
||||
</div>
|
||||
|
@ -1,4 +1,4 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
@ -18,9 +18,9 @@
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_INVOICE_SETTINGS, 'advanced' => true])
|
||||
|
||||
{!! Former::open()->addClass('col-md-8 col-md-offset-2 warn-on-exit') !!}
|
||||
{!! Former::open()->addClass('warn-on-exit') !!}
|
||||
{{ Former::populate($account) }}
|
||||
{{ Former::populateField('custom_invoice_taxes1', intval($account->custom_invoice_taxes1)) }}
|
||||
{{ Former::populateField('custom_invoice_taxes2', intval($account->custom_invoice_taxes2)) }}
|
||||
|
45
resources/views/accounts/localization.blade.php
Normal file
45
resources/views/accounts/localization.blade.php
Normal file
@ -0,0 +1,45 @@
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
|
||||
{!! Former::open_for_files()->addClass('warn-on-exit') !!}
|
||||
{{ Former::populate($account) }}
|
||||
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_LOCALIZATION])
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{!! trans('texts.localization') !!}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
{!! Former::select('currency_id')->addOption('','')
|
||||
->fromQuery($currencies, 'name', 'id') !!}
|
||||
{!! Former::select('language_id')->addOption('','')
|
||||
->fromQuery($languages, 'name', 'id') !!}
|
||||
{!! Former::select('timezone_id')->addOption('','')
|
||||
->fromQuery($timezones, 'location', 'id') !!}
|
||||
{!! Former::select('date_format_id')->addOption('','')
|
||||
->fromQuery($dateFormats, 'label', 'id') !!}
|
||||
{!! Former::select('datetime_format_id')->addOption('','')
|
||||
->fromQuery($datetimeFormats, 'label', 'id') !!}
|
||||
{!! Former::checkbox('military_time')->text(trans('texts.enable')) !!}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<center>
|
||||
{!! Button::success(trans('texts.save'))->submit()->large()->appendIcon(Icon::create('floppy-disk')) !!}
|
||||
</center>
|
||||
|
||||
{!! Former::close() !!}
|
||||
|
||||
@stop
|
||||
|
||||
@section('onReady')
|
||||
$('#currency_id').focus();
|
||||
@stop
|
@ -1,16 +1,33 @@
|
||||
@extends('header')
|
||||
@if (!Utils::isPro() && isset($advanced) && $advanced)
|
||||
<div class="alert alert-warning" style="font-size:larger;">
|
||||
<center>
|
||||
{!! trans('texts.pro_plan_advanced_settings', ['link'=>'<a href="#" onclick="showProPlan(\''.$selected.'\')">'.trans('texts.pro_plan.remove_logo_link').'</a>']) !!}
|
||||
</center>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
|
||||
<ul class="nav nav-tabs nav nav-justified">
|
||||
{!! HTML::nav_link('company/details', 'company_details') !!}
|
||||
{!! HTML::nav_link('company/payments', 'online_payments', 'gateways') !!}
|
||||
{!! HTML::nav_link('company/products', 'product_library') !!}
|
||||
{!! HTML::nav_link('company/notifications', 'notifications') !!}
|
||||
{!! HTML::nav_link('company/import_export', 'import_export', 'company/import_map') !!}
|
||||
{!! HTML::nav_link('company/advanced_settings/invoice_design', 'advanced_settings', '*/advanced_settings/*') !!}
|
||||
</ul>
|
||||
<div class="col-md-3">
|
||||
@foreach([
|
||||
BASIC_SETTINGS => \App\Models\Account::$basicSettings,
|
||||
ADVANCED_SETTINGS => \App\Models\Account::$advancedSettings,
|
||||
] as $type => $settings)
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading" style="color:white">
|
||||
{{ trans("texts.{$type}") }}
|
||||
@if ($type == ADVANCED_SETTINGS && !Utils::isPro())
|
||||
<sup>{{ strtoupper(trans('texts.pro')) }}</sup>
|
||||
@endif
|
||||
</div>
|
||||
<div class="list-group">
|
||||
@foreach ($settings as $section)
|
||||
<a href="{{ URL::to("settings/{$section}") }}" class="list-group-item {{ $selected === $section ? 'selected' : '' }}"
|
||||
style="width:100%;text-align:left">{{ trans("texts.{$section}") }}</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
@stop
|
||||
<div class="col-md-9">
|
@ -1,9 +1,11 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
|
||||
{!! Former::open()->addClass('col-md-8 col-md-offset-2 warn-on-exit') !!}
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_NOTIFICATIONS])
|
||||
|
||||
{!! Former::open()->addClass('warn-on-exit') !!}
|
||||
{{ Former::populate($account) }}
|
||||
{{ Former::populateField('notify_sent', intval(Auth::user()->notify_sent)) }}
|
||||
{{ Former::populateField('notify_viewed', intval(Auth::user()->notify_viewed)) }}
|
||||
|
@ -1,7 +1,8 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_PAYMENTS])
|
||||
|
||||
{!! Former::open('gateways/delete')->addClass('user-form') !!}
|
||||
|
||||
|
@ -1,11 +1,13 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_PRODUCTS])
|
||||
|
||||
{!! Former::open($url)->method($method)
|
||||
->rules(['product_key' => 'required|max:255'])
|
||||
->addClass('col-md-8 col-md-offset-2 warn-on-exit') !!}
|
||||
->addClass('warn-on-exit') !!}
|
||||
|
||||
|
||||
<div class="panel panel-default">
|
||||
@ -27,7 +29,7 @@
|
||||
</div>
|
||||
|
||||
{!! Former::actions(
|
||||
Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('/company/products'))->appendIcon(Icon::create('remove-circle')),
|
||||
Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('/settings/products'))->appendIcon(Icon::create('remove-circle')),
|
||||
Button::success(trans('texts.save'))->submit()->large()->appendIcon(Icon::create('floppy-disk'))
|
||||
) !!}
|
||||
|
||||
|
@ -1,8 +1,10 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_PRODUCTS])
|
||||
|
||||
{!! Former::open()->addClass('warn-on-exit') !!}
|
||||
{{ Former::populateField('fill_products', intval($account->fill_products)) }}
|
||||
{{ Former::populateField('update_products', intval($account->update_products)) }}
|
||||
|
@ -1,4 +1,4 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
@ -13,9 +13,9 @@
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_TEMPLATES_AND_REMINDERS, 'advanced' => true])
|
||||
|
||||
{!! Former::vertical_open()->addClass('col-md-10 col-md-offset-1 warn-on-exit') !!}
|
||||
{!! Former::vertical_open()->addClass('warn-on-exit') !!}
|
||||
{!! Former::populate($account) !!}
|
||||
|
||||
@foreach ([ENTITY_INVOICE, ENTITY_QUOTE, ENTITY_PAYMENT, REMINDER1, REMINDER2, REMINDER3] as $type)
|
||||
|
@ -1,10 +1,10 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_API_TOKENS])
|
||||
|
||||
{!! Former::open($url)->method($method)->addClass('col-md-8 col-md-offset-2 warn-on-exit')->rules(array(
|
||||
{!! Former::open($url)->method($method)->addClass('warn-on-exit')->rules(array(
|
||||
'name' => 'required',
|
||||
)); !!}
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
|
||||
@if (Auth::user()->isPro())
|
||||
{!! Former::actions(
|
||||
Button::normal(trans('texts.cancel'))->asLinkTo(URL::to('/company/advanced_settings/token_management'))->appendIcon(Icon::create('remove-circle'))->large(),
|
||||
Button::normal(trans('texts.cancel'))->asLinkTo(URL::to('/settings/token_management'))->appendIcon(Icon::create('remove-circle'))->large(),
|
||||
Button::success(trans('texts.save'))->submit()->large()->appendIcon(Icon::create('floppy-disk'))
|
||||
) !!}
|
||||
@else
|
||||
|
@ -1,8 +1,8 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_API_TOKENS, 'advanced' => true])
|
||||
|
||||
{!! Former::open('tokens/delete')->addClass('user-form') !!}
|
||||
|
||||
|
223
resources/views/accounts/user_details.blade.php
Normal file
223
resources/views/accounts/user_details.blade.php
Normal file
@ -0,0 +1,223 @@
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
|
||||
{!! Former::open_for_files()->addClass('warn-on-exit')->rules(array(
|
||||
'email' => 'email|required'
|
||||
)) !!}
|
||||
|
||||
{{ Former::populate($account) }}
|
||||
{{ Former::populateField('military_time', intval($account->military_time)) }}
|
||||
{{ Former::populateField('first_name', $user->first_name) }}
|
||||
{{ Former::populateField('last_name', $user->last_name) }}
|
||||
{{ Former::populateField('email', $user->email) }}
|
||||
{{ Former::populateField('phone', $user->phone) }}
|
||||
@if (Utils::isNinjaDev())
|
||||
{{ Former::populateField('dark_mode', intval($user->dark_mode)) }}
|
||||
@endif
|
||||
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_USER_DETAILS])
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{!! trans('texts.user_details') !!}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{!! Former::text('first_name') !!}
|
||||
{!! Former::text('last_name') !!}
|
||||
{!! Former::text('email') !!}
|
||||
{!! Former::text('phone') !!}
|
||||
|
||||
@if (Utils::isNinja())
|
||||
{!! Former::plaintext('oneclick_login')->value(
|
||||
$user->oauth_provider_id ?
|
||||
$oauthProviderName . ' - ' . link_to('#', trans('texts.disable'), ['onclick' => 'disableSocialLogin()']) :
|
||||
DropdownButton::primary(trans('texts.enable'))->withContents($oauthLoginUrls)->small()
|
||||
) !!}
|
||||
@endif
|
||||
|
||||
@if (Utils::isNinja() && $user->confirmed)
|
||||
@if ($user->referral_code)
|
||||
{!! Former::plaintext('referral_code')
|
||||
->value($user->referral_code . ' <a href="'.REFERRAL_PROGRAM_URL.'" target="_blank" title="'.trans('texts.learn_more').'">' . Icon::create('question-sign') . '</a>') !!}
|
||||
@else
|
||||
{!! Former::checkbox('referral_code')
|
||||
->text(trans('texts.enable') . ' <a href="'.REFERRAL_PROGRAM_URL.'" target="_blank" title="'.trans('texts.learn_more').'">' . Icon::create('question-sign') . '</a>') !!}
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@if (false && Utils::isNinjaDev())
|
||||
{!! Former::checkbox('dark_mode')->text(trans('texts.dark_mode_help')) !!}
|
||||
@endif
|
||||
|
||||
@if (Utils::isNinja())
|
||||
<br/>
|
||||
@if (Auth::user()->confirmed)
|
||||
{!! Former::actions( Button::primary(trans('texts.change_password'))->small()->withAttributes(['onclick'=>'showChangePassword()'])) !!}
|
||||
@elseif (Auth::user()->registered)
|
||||
{!! Former::actions( Button::primary(trans('texts.resend_confirmation'))->asLinkTo(URL::to('/resend_confirmation'))->small() ) !!}
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<center>
|
||||
{!! Button::success(trans('texts.save'))->submit()->large()->appendIcon(Icon::create('floppy-disk')) !!}
|
||||
</center>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="passwordModal" tabindex="-1" role="dialog" aria-labelledby="passwordModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title" id="passwordModalLabel">{{ trans('texts.change_password') }}</h4>
|
||||
</div>
|
||||
|
||||
<div style="background-color: #fff" id="changePasswordDiv" onkeyup="validateChangePassword()" onclick="validateChangePassword()" onkeydown="checkForEnter(event)">
|
||||
|
||||
|
||||
{!! Former::password('current_password')->style('width:300px') !!}
|
||||
{!! Former::password('newer_password')->style('width:300px')->label(trans('texts.new_password')) !!}
|
||||
{!! Former::password('confirm_password')->style('width:300px') !!}
|
||||
|
||||
|
||||
<br/>
|
||||
<center>
|
||||
<div id="changePasswordError"></div>
|
||||
</center>
|
||||
<br/>
|
||||
</div>
|
||||
|
||||
<div style="padding-left:40px;padding-right:40px;display:none;min-height:130px" id="working">
|
||||
<h3>{{ trans('texts.working') }}...</h3>
|
||||
<div class="progress progress-striped active">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="background-color: #fff; padding-right:20px;padding-left:20px; display:none" id="successDiv">
|
||||
<br/>
|
||||
<h3>{{ trans('texts.success') }}</h3>
|
||||
{{ trans('texts.updated_password') }}
|
||||
<br/>
|
||||
|
||||
<br/>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer" style="margin-top: 0px" id="changePasswordFooter">
|
||||
<button type="button" class="btn btn-default" id="cancelChangePasswordButton" data-dismiss="modal">Cancel</button>
|
||||
<button type="button" class="btn btn-success" onclick="submitChangePassword()" id="changePasswordButton" disabled>
|
||||
{{ trans('texts.save') }}
|
||||
<i class="glyphicon glyphicon-floppy-disk"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{!! Former::close() !!}
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function() {
|
||||
$('#passwordModal').on('hidden.bs.modal', function () {
|
||||
$(['current_password', 'newer_password', 'confirm_password']).each(function(i, field) {
|
||||
var $input = $('form #'+field);
|
||||
$input.val('');
|
||||
$input.closest('div.form-group').removeClass('has-success');
|
||||
});
|
||||
$('#changePasswordButton').prop('disabled', true);
|
||||
})
|
||||
|
||||
$('#passwordModal').on('shown.bs.modal', function () {
|
||||
$('#current_password').focus();
|
||||
})
|
||||
|
||||
localStorage.setItem('auth_provider', '{{ strtolower($oauthProviderName) }}');
|
||||
});
|
||||
|
||||
function showChangePassword() {
|
||||
$('#passwordModal').modal('show');
|
||||
}
|
||||
|
||||
function validateChangePassword(showError)
|
||||
{
|
||||
var isFormValid = true;
|
||||
$(['current_password', 'newer_password', 'confirm_password']).each(function(i, field) {
|
||||
var $input = $('form #'+field),
|
||||
val = $.trim($input.val());
|
||||
var isValid = val && val.length >= 6;
|
||||
|
||||
if (isValid && field == 'confirm_password') {
|
||||
isValid = val == $.trim($('#newer_password').val());
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
$input.closest('div.form-group').removeClass('has-error').addClass('has-success');
|
||||
} else {
|
||||
isFormValid = false;
|
||||
$input.closest('div.form-group').removeClass('has-success');
|
||||
if (showError) {
|
||||
$input.closest('div.form-group').addClass('has-error');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('#changePasswordButton').prop('disabled', !isFormValid);
|
||||
|
||||
return isFormValid;
|
||||
}
|
||||
|
||||
function submitChangePassword()
|
||||
{
|
||||
if (!validateChangePassword(true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('#changePasswordDiv, #changePasswordFooter').hide();
|
||||
$('#working').show();
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '{{ URL::to('/users/change_password') }}',
|
||||
data: 'current_password=' + encodeURIComponent($('form #current_password').val()) +
|
||||
'&new_password=' + encodeURIComponent($('form #newer_password').val()) +
|
||||
'&confirm_password=' + encodeURIComponent($('form #confirm_password').val()),
|
||||
success: function(result) {
|
||||
if (result == 'success') {
|
||||
NINJA.formIsChanged = false;
|
||||
$('#changePasswordButton').hide();
|
||||
$('#successDiv').show();
|
||||
$('#cancelChangePasswordButton').html('{{ trans('texts.close') }}');
|
||||
} else {
|
||||
$('#changePasswordError').html(result);
|
||||
$('#changePasswordDiv').show();
|
||||
}
|
||||
$('#changePasswordFooter').show();
|
||||
$('#working').hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function disableSocialLogin() {
|
||||
if (!confirm("{!! trans('texts.are_you_sure') !!}")) {
|
||||
return;
|
||||
}
|
||||
|
||||
window.location = '{{ URL::to('/auth_unlink') }}';
|
||||
}
|
||||
</script>
|
||||
|
||||
@stop
|
||||
|
||||
@section('onReady')
|
||||
$('#first_name').focus();
|
||||
@stop
|
@ -1,8 +1,8 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_USER_MANAGEMENT, 'advanced' => true])
|
||||
|
||||
{!! Former::open('users/delete')->addClass('user-form') !!}
|
||||
|
||||
@ -13,7 +13,6 @@
|
||||
|
||||
|
||||
<div class="pull-right">
|
||||
{!! Button::normal(trans('texts.api_tokens'))->asLinkTo(URL::to('/company/advanced_settings/token_management'))->appendIcon(Icon::create('cloud')) !!}
|
||||
@if (Utils::isPro())
|
||||
{!! Button::primary(trans('texts.add_user'))->asLinkTo(URL::to('/users/create'))->appendIcon(Icon::create('plus-sign')) !!}
|
||||
@endif
|
||||
|
@ -12,11 +12,11 @@
|
||||
</div>
|
||||
<div class="in-bold">
|
||||
@if (count($paidToDate))
|
||||
@foreach ($paidToDate as $item)
|
||||
{{ Utils::formatMoney($item->value, $item->currency_id) }}<br/>
|
||||
@endforeach
|
||||
@foreach ($paidToDate as $item)
|
||||
{{ Utils::formatMoney($item->value, $item->currency_id) }}<br/>
|
||||
@endforeach
|
||||
@else
|
||||
{{ Utils::formatMoney(0) }}
|
||||
{{ Utils::formatMoney(0) }}
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@ -31,11 +31,11 @@
|
||||
</div>
|
||||
<div class="in-bold">
|
||||
@if (count($averageInvoice))
|
||||
@foreach ($averageInvoice as $item)
|
||||
{{ Utils::formatMoney($item->invoice_avg, $item->currency_id) }}<br/>
|
||||
@endforeach
|
||||
@foreach ($averageInvoice as $item)
|
||||
{{ Utils::formatMoney($item->invoice_avg, $item->currency_id) }}<br/>
|
||||
@endforeach
|
||||
@else
|
||||
{{ Utils::formatMoney(0) }}
|
||||
{{ Utils::formatMoney(0) }}
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@ -50,11 +50,11 @@
|
||||
</div>
|
||||
<div class="in-bold">
|
||||
@if (count($balances))
|
||||
@foreach ($balances as $item)
|
||||
{{ Utils::formatMoney($item->value, $item->currency_id) }}<br/>
|
||||
@endforeach
|
||||
@foreach ($balances as $item)
|
||||
{{ Utils::formatMoney($item->value, $item->currency_id) }}<br/>
|
||||
@endforeach
|
||||
@else
|
||||
{{ Utils::formatMoney(0) }}
|
||||
{{ Utils::formatMoney(0) }}
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
@ -438,12 +438,10 @@
|
||||
<span class="glyphicon glyphicon-cog" title="{{ trans('texts.settings') }}"/>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li>{!! link_to('company/details', uctrans('texts.company_details')) !!}</li>
|
||||
<li>{!! link_to('company/payments', uctrans('texts.online_payments')) !!}</li>
|
||||
<li>{!! link_to('company/products', uctrans('texts.product_library')) !!}</li>
|
||||
<li>{!! link_to('company/notifications', uctrans('texts.notifications')) !!}</li>
|
||||
<li>{!! link_to('company/import_export', uctrans('texts.import_export')) !!}</li>
|
||||
<li><a href="{{ url('company/advanced_settings/invoice_design') }}">{!! uctrans('texts.advanced_settings') . Utils::getProLabel(ACCOUNT_ADVANCED_SETTINGS) !!}</a></li>
|
||||
@foreach (\App\Models\Account::$basicSettings as $setting)
|
||||
<li>{!! link_to('settings/' . $setting, uctrans("texts.{$setting}")) !!}</li>
|
||||
@endforeach
|
||||
<li><a href="{{ url('settings/' . ACCOUNT_INVOICE_DESIGN) }}">{!! uctrans('texts.advanced_settings') . Utils::getProLabel(ACCOUNT_ADVANCED_SETTINGS) !!}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -667,6 +665,7 @@
|
||||
|
||||
{{-- Per our license, please do not remove or modify this section. --}}
|
||||
@if (!Utils::isNinjaProd())
|
||||
</div>
|
||||
<p> </p>
|
||||
<div class="container">
|
||||
{{ trans('texts.powered_by') }} <a href="https://www.invoiceninja.com/?utm_source=powered_by" target="_blank">InvoiceNinja.com</a> -
|
||||
|
@ -1,4 +1,4 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
@ -8,152 +8,143 @@
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_CHARTS_AND_REPORTS, 'advanced' => true])
|
||||
|
||||
|
||||
{!! Button::primary(trans('texts.data_visualizations'))
|
||||
->asLinkTo(URL::to('/company/advanced_settings/data_visualizations'))
|
||||
->withAttributes(['class' => 'pull-right'])
|
||||
->appendIcon(Icon::create('globe')) !!}
|
||||
{!! Former::open()->rules(['start_date' => 'required', 'end_date' => 'required'])->addClass('warn-on-exit') !!}
|
||||
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<div style="display:none">
|
||||
{!! Former::text('action') !!}
|
||||
</div>
|
||||
|
||||
{!! Former::populateField('start_date', $startDate) !!}
|
||||
{!! Former::populateField('end_date', $endDate) !!}
|
||||
{!! Former::populateField('enable_report', intval($enableReport)) !!}
|
||||
{!! Former::populateField('enable_chart', intval($enableChart)) !!}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{!! trans('texts.settings') !!}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
|
||||
{!! Former::text('start_date')->data_date_format(Session::get(SESSION_DATE_PICKER_FORMAT))
|
||||
->addGroupClass('start_date')
|
||||
->append('<i class="glyphicon glyphicon-calendar" onclick="toggleDatePicker(\'start_date\')"></i>') !!}
|
||||
{!! Former::text('end_date')->data_date_format(Session::get(SESSION_DATE_PICKER_FORMAT))
|
||||
->addGroupClass('end_date')
|
||||
->append('<i class="glyphicon glyphicon-calendar" onclick="toggleDatePicker(\'end_date\')"></i>') !!}
|
||||
|
||||
<p> </p>
|
||||
{!! Former::actions(
|
||||
Button::primary(trans('texts.export'))->withAttributes(array('onclick' => 'onExportClick()'))->appendIcon(Icon::create('export')),
|
||||
Button::success(trans('texts.run'))->withAttributes(array('id' => 'submitButton'))->submit()->appendIcon(Icon::create('play'))
|
||||
) !!}
|
||||
|
||||
@if (!Auth::user()->isPro())
|
||||
<script>
|
||||
$(function() {
|
||||
$('form.warn-on-exit').find('input, select, button').prop('disabled', true);
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
|
||||
{!! Former::open()->rules(['start_date' => 'required', 'end_date' => 'required'])->addClass('warn-on-exit') !!}
|
||||
|
||||
<div style="display:none">
|
||||
{!! Former::text('action') !!}
|
||||
</div>
|
||||
|
||||
{!! Former::populateField('start_date', $startDate) !!}
|
||||
{!! Former::populateField('end_date', $endDate) !!}
|
||||
{!! Former::populateField('enable_report', intval($enableReport)) !!}
|
||||
{!! Former::populateField('enable_chart', intval($enableChart)) !!}
|
||||
|
||||
{!! Former::text('start_date')->data_date_format(Session::get(SESSION_DATE_PICKER_FORMAT))
|
||||
->addGroupClass('start_date')
|
||||
->append('<i class="glyphicon glyphicon-calendar" onclick="toggleDatePicker(\'start_date\')"></i>') !!}
|
||||
{!! Former::text('end_date')->data_date_format(Session::get(SESSION_DATE_PICKER_FORMAT))
|
||||
->addGroupClass('end_date')
|
||||
->append('<i class="glyphicon glyphicon-calendar" onclick="toggleDatePicker(\'end_date\')"></i>') !!}
|
||||
|
||||
<p> </p>
|
||||
{!! Former::checkbox('enable_report')->text(trans('texts.enable')) !!}
|
||||
{!! Former::select('report_type')->options($reportTypes, $reportType)->label(trans('texts.group_by')) !!}
|
||||
|
||||
<p> </p>
|
||||
{!! Former::checkbox('enable_chart')->text(trans('texts.enable')) !!}
|
||||
{!! Former::select('group_by')->options($dateTypes, $groupBy) !!}
|
||||
{!! Former::select('chart_type')->options($chartTypes, $chartType) !!}
|
||||
|
||||
<p> </p>
|
||||
@if (Auth::user()->isPro())
|
||||
{!! Former::actions(
|
||||
Button::primary(trans('texts.export'))->withAttributes(array('onclick' => 'onExportClick()'))->appendIcon(Icon::create('export')),
|
||||
Button::success(trans('texts.run'))->withAttributes(array('id' => 'submitButton'))->submit()->appendIcon(Icon::create('play'))
|
||||
) !!}
|
||||
@else
|
||||
<script>
|
||||
$(function() {
|
||||
$('form.warn-on-exit').find('input, select').prop('disabled', true);
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
{!! Former::close() !!}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
{!! Former::checkbox('enable_report')->text(trans('texts.enable')) !!}
|
||||
{!! Former::select('report_type')->options($reportTypes, $reportType)->label(trans('texts.group_by')) !!}
|
||||
<p> </p>
|
||||
{!! Former::checkbox('enable_chart')->text(trans('texts.enable')) !!}
|
||||
{!! Former::select('group_by')->options($dateTypes, $groupBy) !!}
|
||||
{!! Former::select('chart_type')->options($chartTypes, $chartType) !!}
|
||||
|
||||
|
||||
{!! Former::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-lg-8">
|
||||
|
||||
@if ($enableReport)
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<table class="table table-striped invoice-table">
|
||||
<thead>
|
||||
<tr>
|
||||
@foreach ($columns as $column)
|
||||
<th>
|
||||
{{ trans("texts.{$column}") }}
|
||||
</th>
|
||||
@endforeach
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($displayData as $record)
|
||||
<tr>
|
||||
@foreach ($record as $field)
|
||||
<td>
|
||||
{!! $field !!}
|
||||
</td>
|
||||
@endforeach
|
||||
</tr>
|
||||
</div>
|
||||
</div>
|
||||
@if ($enableReport)
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<table class="table table-striped invoice-table">
|
||||
<thead>
|
||||
<tr>
|
||||
@foreach ($columns as $column)
|
||||
<th>
|
||||
{{ trans("texts.{$column}") }}
|
||||
</th>
|
||||
@endforeach
|
||||
</tbody>
|
||||
<tfoot>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($displayData as $record)
|
||||
<tr>
|
||||
<td><b>{{ trans('texts.totals') }}</b></td>
|
||||
@if (!$reportType)
|
||||
<td></td>
|
||||
<td></td>
|
||||
@endif
|
||||
<td>
|
||||
@foreach ($reportTotals['amount'] as $currencyId => $total)
|
||||
<b>{{ Utils::formatMoney($total, $currencyId) }}</b><br/>
|
||||
@endforeach
|
||||
</td>
|
||||
<td>
|
||||
@foreach ($reportTotals['paid'] as $currencyId => $total)
|
||||
<b>{{ Utils::formatMoney($total, $currencyId) }}</b><br/>
|
||||
@endforeach
|
||||
</td>
|
||||
<td>
|
||||
@foreach ($reportTotals['balance'] as $currencyId => $total)
|
||||
<b>{{ Utils::formatMoney($total, $currencyId) }}</b><br/>
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
@foreach ($record as $field)
|
||||
<td>
|
||||
{!! $field !!}
|
||||
</td>
|
||||
@endforeach
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td><b>{{ trans('texts.totals') }}</b></td>
|
||||
@if (!$reportType)
|
||||
<td></td>
|
||||
<td></td>
|
||||
@endif
|
||||
<td>
|
||||
@foreach ($reportTotals['amount'] as $currencyId => $total)
|
||||
<b>{{ Utils::formatMoney($total, $currencyId) }}</b><br/>
|
||||
@endforeach
|
||||
</td>
|
||||
<td>
|
||||
@foreach ($reportTotals['paid'] as $currencyId => $total)
|
||||
<b>{{ Utils::formatMoney($total, $currencyId) }}</b><br/>
|
||||
@endforeach
|
||||
</td>
|
||||
<td>
|
||||
@foreach ($reportTotals['balance'] as $currencyId => $total)
|
||||
<b>{{ Utils::formatMoney($total, $currencyId) }}</b><br/>
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($enableChart)
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<canvas id="monthly-reports" width="700" height="400"></canvas>
|
||||
<p> </p>
|
||||
<div style="padding-bottom:8px">
|
||||
<div style="float:left; height:22px; width:60px; background-color:rgba(78,205,196,.5); border: 1px solid rgba(78,205,196,1)"></div>
|
||||
<div style="vertical-align: middle"> Invoices</div>
|
||||
</div>
|
||||
<div style="padding-bottom:8px; clear:both">
|
||||
<div style="float:left; height:22px; width:60px; background-color:rgba(255,107,107,.5); border: 1px solid rgba(255,107,107,1)"></div>
|
||||
<div style="vertical-align: middle"> Payments</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($enableChart)
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<canvas id="monthly-reports" width="700" height="400"></canvas>
|
||||
<p> </p>
|
||||
<div style="padding-bottom:8px">
|
||||
<div style="float:left; height:22px; width:60px; background-color:rgba(78,205,196,.5); border: 1px solid rgba(78,205,196,1)"></div>
|
||||
<div style="vertical-align: middle"> Invoices</div>
|
||||
</div>
|
||||
<div style="padding-bottom:8px; clear:both">
|
||||
<div style="float:left; height:22px; width:60px; background-color:rgba(255,107,107,.5); border: 1px solid rgba(255,107,107,1)"></div>
|
||||
<div style="vertical-align: middle"> Payments</div>
|
||||
</div>
|
||||
<div style="clear:both">
|
||||
<div style="float:left; height:22px; width:60px; background-color:rgba(199,244,100,.5); border: 1px solid rgba(199,244,100,1)"></div>
|
||||
<div style="vertical-align: middle"> Credits</div>
|
||||
</div>
|
||||
|
||||
<div style="clear:both">
|
||||
<div style="float:left; height:22px; width:60px; background-color:rgba(199,244,100,.5); border: 1px solid rgba(199,244,100,1)"></div>
|
||||
<div style="vertical-align: middle"> Credits</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_DATA_VISUALIZATIONS, 'advanced' => true])
|
||||
|
||||
<div id="tooltip" class="hidden">
|
||||
<p>
|
||||
@ -121,22 +121,10 @@
|
||||
product.displayAge = product.values.age;
|
||||
});
|
||||
|
||||
/*
|
||||
_.each(clients, function(client) {
|
||||
_.each(client.invoices, function(invoice) {
|
||||
_.each(invoice.invoice_items, function(invoice_item) {
|
||||
delete invoice_item.invoice;
|
||||
});
|
||||
});
|
||||
});
|
||||
*/
|
||||
|
||||
//console.log(JSON.stringify(clients));
|
||||
//console.log(JSON.stringify(invoices));
|
||||
//console.log(JSON.stringify(products));
|
||||
|
||||
|
||||
|
||||
var arc = d3.svg.arc()
|
||||
.innerRadius(function(d) { return d.r - 2 })
|
||||
.outerRadius(function(d) { return d.r - 8 })
|
||||
@ -149,7 +137,7 @@
|
||||
.endAngle(2 * Math.PI);
|
||||
|
||||
|
||||
var diameter = 1050,
|
||||
var diameter = 900,
|
||||
format = d3.format(",d");
|
||||
//color = d3.scale.category10();
|
||||
|
||||
@ -164,14 +152,14 @@
|
||||
.padding(12);
|
||||
|
||||
var svg = d3.select(".svg-div").append("svg")
|
||||
.attr("width", "1142px")
|
||||
.attr("width", "100%")
|
||||
.attr("height", "1142px")
|
||||
.attr("class", "bubble");
|
||||
|
||||
svg.append("rect")
|
||||
.attr("stroke-width", "1")
|
||||
.attr("stroke", "rgb(150,150,150)")
|
||||
.attr("width", "100%")
|
||||
.attr("width", "99%")
|
||||
.attr("height", "100%")
|
||||
.attr("fill", "white");
|
||||
|
||||
@ -187,7 +175,6 @@
|
||||
|
||||
var selection = svg.selectAll(".node")
|
||||
.data(data, function(d) { return d.displayName; });
|
||||
//.data(data);
|
||||
|
||||
var node = selection.enter().append("g")
|
||||
.attr("class", "node")
|
||||
@ -198,9 +185,10 @@
|
||||
if (!visibleTooltip || visibleTooltip != d.displayName) {
|
||||
d3.select("#tooltip")
|
||||
.classed("hidden", false)
|
||||
.style("left", d3.event.pageX + "px")
|
||||
.style("top", d3.event.pageY + "px");
|
||||
.style("left", (d3.event.offsetX + 40) + "px")
|
||||
.style("top", (d3.event.offsetY + 40) + "px");
|
||||
visibleTooltip = d.displayName;
|
||||
//console.log(d3.event);
|
||||
}
|
||||
|
||||
d3.select("#tooltipTitle").text(truncate(d.displayName, 18));
|
||||
@ -280,7 +268,7 @@
|
||||
return -1;
|
||||
}
|
||||
var jsDate = convertToJsDate(invoice.created_at) || new Date().getTime();
|
||||
return parseInt((new Date().getTime() - convertToJsDate(invoice.created_at)) / (1000*60*60*24));
|
||||
return parseInt((new Date().getTime() - convertToJsDate(invoice.created_at)) / (1000*60*60*24));
|
||||
}
|
||||
|
||||
function convertToJsDate(isoDate) {
|
||||
|
@ -45,7 +45,7 @@
|
||||
@if (Auth::user()->account->timezone_id)
|
||||
{{ $timezone }}
|
||||
@else
|
||||
{!! link_to('/company/details?focus=timezone_id', $timezone, ['target' => '_blank']) !!}
|
||||
{!! link_to('/settings/company_details?focus=timezone_id', $timezone, ['target' => '_blank']) !!}
|
||||
@endif
|
||||
<p/>
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
@if (isset($user_id) && $user_id != Auth::user()->id)
|
||||
<a href="{{ URL::to("/switch_account/{$user_id}") }}">
|
||||
@else
|
||||
<a href="{{ URL::to("/company/details") }}">
|
||||
<a href="{{ URL::to("/settings/company_details") }}">
|
||||
@endif
|
||||
|
||||
@if (file_exists($logo_path))
|
||||
|
@ -1,10 +1,10 @@
|
||||
@extends('accounts.nav')
|
||||
@extends('header')
|
||||
|
||||
@section('content')
|
||||
@parent
|
||||
@include('accounts.nav_advanced')
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_USER_MANAGEMENT])
|
||||
|
||||
{!! Former::open($url)->method($method)->addClass('col-md-8 col-md-offset-2 warn-on-exit')->rules(array(
|
||||
{!! Former::open($url)->method($method)->addClass('warn-on-exit')->rules(array(
|
||||
'first_name' => 'required',
|
||||
'last_name' => 'required',
|
||||
'email' => 'required|email',
|
||||
@ -28,7 +28,7 @@
|
||||
</div>
|
||||
|
||||
{!! Former::actions(
|
||||
Button::normal(trans('texts.cancel'))->asLinkTo(URL::to('/company/advanced_settings/user_management'))->appendIcon(Icon::create('remove-circle'))->large(),
|
||||
Button::normal(trans('texts.cancel'))->asLinkTo(URL::to('/settings/user_management'))->appendIcon(Icon::create('remove-circle'))->large(),
|
||||
Button::success(trans($user && $user->confirmed ? 'texts.save' : 'texts.send_invite'))->submit()->large()->appendIcon(Icon::create($user && $user->confirmed ? 'floppy-disk' : 'send'))
|
||||
)!!}
|
||||
|
||||
|
@ -52,31 +52,31 @@ $I->see('Payments', 'li');
|
||||
$I->see('Create');
|
||||
|
||||
// Settings pages
|
||||
$I->amOnPage('/company/details');
|
||||
$I->amOnPage('/settings/company_details');
|
||||
$I->see('Details');
|
||||
|
||||
$I->amOnPage('/gateways/create');
|
||||
$I->see('Add Gateway');
|
||||
|
||||
$I->amOnPage('/company/products');
|
||||
$I->amOnPage('/settings/products');
|
||||
$I->see('Product Settings');
|
||||
|
||||
$I->amOnPage('/company/import_export');
|
||||
$I->amOnPage('/settings/import_export');
|
||||
$I->see('Import');
|
||||
|
||||
$I->amOnPage('/company/advanced_settings/invoice_settings');
|
||||
$I->amOnPage('/settings/invoice_settings');
|
||||
$I->see('Invoice Fields');
|
||||
|
||||
$I->amOnPage('/company/advanced_settings/invoice_design');
|
||||
$I->amOnPage('/settings/invoice_design');
|
||||
$I->see('Invoice Design');
|
||||
|
||||
$I->amOnPage('/company/advanced_settings/templates_and_reminders');
|
||||
$I->amOnPage('/settings/templates_and_reminders');
|
||||
$I->see('Invoice Email');
|
||||
|
||||
$I->amOnPage('/company/advanced_settings/charts_and_reports');
|
||||
$I->amOnPage('/settings/charts_and_reports');
|
||||
$I->see('Data Visualizations');
|
||||
|
||||
$I->amOnPage('/company/advanced_settings/user_management');
|
||||
$I->amOnPage('/settings/user_management');
|
||||
$I->see('Add User');
|
||||
|
||||
//try to logout
|
||||
|
@ -24,7 +24,7 @@ class InvoiceDesignCest
|
||||
{
|
||||
$I->wantTo('Design my invoice');
|
||||
|
||||
$I->amOnPage('/company/advanced_settings/invoice_design');
|
||||
$I->amOnPage('/settings/invoice_design');
|
||||
|
||||
$I->click('select#invoice_design_id');
|
||||
$I->click('select#invoice_design_id option:nth-child(2)');
|
||||
|
@ -24,7 +24,7 @@ class OnlinePaymentCest
|
||||
|
||||
// set gateway info
|
||||
$I->wantTo('create a gateway');
|
||||
$I->amOnPage('/company/payments');
|
||||
$I->amOnPage('/settings/online_payments');
|
||||
|
||||
if (strpos($I->grabFromCurrentUrl(), 'create') !== false) {
|
||||
$I->fillField(['name' =>'23_apiKey'], Fixtures::get('gateway_key'));
|
||||
|
@ -14,10 +14,11 @@ class SettingsCest
|
||||
$this->faker = Factory::create();
|
||||
}
|
||||
|
||||
/*
|
||||
public function companyDetails(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update the company details');
|
||||
$I->amOnPage('/company/details');
|
||||
$I->amOnPage('/settings/company_details');
|
||||
|
||||
$name = $this->faker->company;
|
||||
|
||||
@ -29,20 +30,50 @@ class SettingsCest
|
||||
$I->fillField(['name' => 'city'], $this->faker->city);
|
||||
$I->fillField(['name' => 'state'], $this->faker->state);
|
||||
$I->fillField(['name' => 'postal_code'], $this->faker->postcode);
|
||||
|
||||
$I->fillField(['name' => 'first_name'], $this->faker->firstName);
|
||||
$I->fillField(['name' => 'last_name'], $this->faker->lastName);
|
||||
$I->fillField(['name' => 'phone'], $this->faker->phoneNumber);
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeRecord('accounts', array('name' => $name));
|
||||
}
|
||||
*/
|
||||
|
||||
public function userDetails(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update the user details');
|
||||
$I->amOnPage('/settings/user_details');
|
||||
|
||||
$firstName = $this->faker->firstName;
|
||||
|
||||
$I->fillField(['name' => 'first_name'], $firstName);
|
||||
$I->fillField(['name' => 'last_name'], $this->faker->lastName);
|
||||
$I->fillField(['name' => 'phone'], $this->faker->phoneNumber);
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeRecord('users', array('first_name' => $firstName));
|
||||
}
|
||||
|
||||
/*
|
||||
public function localization(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update the localization');
|
||||
$I->amOnPage('/settings/localization');
|
||||
|
||||
$name = $this->faker->company;
|
||||
|
||||
$I->fillField(['name' => 'name'], $name);
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeRecord('accounts', array('name' => $name));
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
public function productSettings(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update the product settings');
|
||||
$I->amOnPage('/company/products');
|
||||
$I->amOnPage('/settings/products');
|
||||
|
||||
$I->click('Save');
|
||||
|
||||
@ -84,7 +115,7 @@ class SettingsCest
|
||||
public function updateNotifications(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update notification settings');
|
||||
$I->amOnPage('/company/notifications');
|
||||
$I->amOnPage('/settings/notifications');
|
||||
|
||||
$terms = $this->faker->text(80);
|
||||
|
||||
@ -99,7 +130,7 @@ class SettingsCest
|
||||
public function updateInvoiceDesign(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update invoice design');
|
||||
$I->amOnPage('/company/advanced_settings/invoice_design');
|
||||
$I->amOnPage('/settings/invoice_design');
|
||||
|
||||
$color = $this->faker->hexcolor;
|
||||
|
||||
@ -114,7 +145,7 @@ class SettingsCest
|
||||
public function updateInvoiceSettings(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update invoice settings');
|
||||
$I->amOnPage('/company/advanced_settings/invoice_settings');
|
||||
$I->amOnPage('/settings/invoice_settings');
|
||||
|
||||
$label = $this->faker->text(10);
|
||||
|
||||
@ -131,7 +162,7 @@ class SettingsCest
|
||||
public function updateEmailTemplates(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update email templates');
|
||||
$I->amOnPage('/company/advanced_settings/templates_and_reminders');
|
||||
$I->amOnPage('/settings/templates_and_reminders');
|
||||
|
||||
$string = $this->faker->text(100);
|
||||
|
||||
@ -145,7 +176,7 @@ class SettingsCest
|
||||
public function runReport(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('run the report');
|
||||
$I->amOnPage('/company/advanced_settings/charts_and_reports');
|
||||
$I->amOnPage('/settings/charts_and_reports');
|
||||
|
||||
$I->click('Run');
|
||||
$I->seeResponseCodeIs(200);
|
||||
|
Loading…
Reference in New Issue
Block a user