mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 12:47:32 -04:00 
			
		
		
		
	Merge branch 'master' of github.com:hillelcoren/invoice-ninja into laravel-5
This commit is contained in:
		
						commit
						37921e4653
					
				| @ -263,6 +263,8 @@ class AccountController extends \BaseController | ||||
|             $account->invoice_number_counter = Input::get('invoice_number_counter'); | ||||
|             $account->quote_number_prefix = Input::get('quote_number_prefix'); | ||||
|             $account->share_counter = Input::get('share_counter') ? true : false; | ||||
|              | ||||
|             $account->pdf_email_attachment = Input::get('pdf_email_attachment') ? true : false; | ||||
| 
 | ||||
|             if (!$account->share_counter) { | ||||
|                 $account->quote_number_counter = Input::get('quote_number_counter'); | ||||
|  | ||||
| @ -398,6 +398,10 @@ class InvoiceController extends \BaseController | ||||
|                 Utils::trackViewed($client->getDisplayName(), ENTITY_CLIENT, $url); | ||||
|             } | ||||
| 
 | ||||
|             if (!empty(Input::get('pdfupload')) && strpos(Input::get('pdfupload'), 'data:application/pdf;base64,') === 0) { | ||||
|                 $this->storePDF(Input::get('pdfupload'), $input->invoice->public_id); | ||||
|             } | ||||
| 
 | ||||
|             if ($action == 'clone') { | ||||
|                 return $this->cloneInvoice($publicId); | ||||
|             } elseif ($action == 'convert') { | ||||
| @ -540,4 +544,18 @@ class InvoiceController extends \BaseController | ||||
| 
 | ||||
|         return View::make('invoices.history', $data); | ||||
|     } | ||||
|      | ||||
|     private function storePDF($encodedString, $public_id) | ||||
|     { | ||||
|         $uploadsDir = storage_path().'/pdfcache/'; | ||||
|         $encodedString = str_replace('data:application/pdf;base64,', '', $encodedString); | ||||
|         $name = 'cache-'.$public_id.'.pdf'; | ||||
|          | ||||
|         if (file_put_contents($uploadsDir.$name, base64_decode($encodedString)) !== false) { | ||||
|             $finfo = new finfo(FILEINFO_MIME); | ||||
|             if ($finfo->file($uploadsDir.$name) !== 'application/pdf; charset=binary') { | ||||
|                 unlink($uploadsDir.$name); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -93,7 +93,8 @@ class Invoice extends EntityModel | ||||
|             'custom_value1', | ||||
|             'custom_value2', | ||||
|             'custom_taxes1', | ||||
|             'custom_taxes2', ]); | ||||
|             'custom_taxes2', | ||||
|         ]); | ||||
| 
 | ||||
|         $this->client->setVisible([ | ||||
|             'name', | ||||
| @ -110,7 +111,8 @@ class Invoice extends EntityModel | ||||
|             'country', | ||||
|             'currency_id', | ||||
|             'custom_value1', | ||||
|             'custom_value2', ]); | ||||
|             'custom_value2', | ||||
|         ]); | ||||
| 
 | ||||
|         $this->account->setVisible([ | ||||
|             'name', | ||||
| @ -136,7 +138,9 @@ class Invoice extends EntityModel | ||||
|             'hide_quantity', | ||||
|             'hide_paid_to_date', | ||||
|             'custom_invoice_label1', | ||||
|             'custom_invoice_label2', ]); | ||||
|             'custom_invoice_label2', | ||||
|             'pdf_email_attachment', | ||||
|         ]); | ||||
| 
 | ||||
|         foreach ($this->invoice_items as $invoiceItem) { | ||||
|             $invoiceItem->setVisible([ | ||||
| @ -145,7 +149,8 @@ class Invoice extends EntityModel | ||||
|                 'cost', | ||||
|                 'qty', | ||||
|                 'tax_name', | ||||
|                 'tax_rate', ]); | ||||
|                 'tax_rate', | ||||
|             ]); | ||||
|         } | ||||
| 
 | ||||
|         foreach ($this->client->contacts as $contact) { | ||||
| @ -153,7 +158,8 @@ class Invoice extends EntityModel | ||||
|                 'first_name', | ||||
|                 'last_name', | ||||
|                 'email', | ||||
|                 'phone', ]); | ||||
|                 'phone', | ||||
|             ]); | ||||
|         } | ||||
| 
 | ||||
|         return $this; | ||||
|  | ||||
| @ -43,6 +43,7 @@ class ContactMailer extends Mailer | ||||
|             $data['body'] = str_replace(array_keys($variables), array_values($variables), $emailTemplate); | ||||
|             $data['link'] = $invitation->getLink(); | ||||
|             $data['entityType'] = $entityType; | ||||
|             $data['id'] = $invoice->getAttributes()['id']; | ||||
| 
 | ||||
|             $fromEmail = $invitation->user->email; | ||||
|             $this->sendTo($invitation->contact->email, $fromEmail, $accountName, $subject, $view, $data); | ||||
|  | ||||
| @ -2,6 +2,7 @@ | ||||
| 
 | ||||
| use Mail; | ||||
| use Utils; | ||||
| use Invoice; | ||||
| 
 | ||||
| class Mailer | ||||
| { | ||||
| @ -12,13 +13,27 @@ class Mailer | ||||
|             'emails.'.$view.'_text', | ||||
|         ]; | ||||
| 
 | ||||
|         Mail::send($views, $data, function ($message) use ($toEmail, $fromEmail, $fromName, $subject) { | ||||
|         Mail::send($views, $data, function ($message) use ($toEmail, $fromEmail, $fromName, $subject, $data) { | ||||
|             $replyEmail = $fromEmail; | ||||
| 
 | ||||
|             // http://stackoverflow.com/questions/2421234/gmail-appearing-to-ignore-reply-to
 | ||||
|             if (Utils::isNinja() && $toEmail != CONTACT_EMAIL) { | ||||
|                 $fromEmail = NINJA_FROM_EMAIL; | ||||
|             } | ||||
|              | ||||
|             if(isset($data['id'])) { | ||||
|                 $invoice = Invoice::find($data['id']); | ||||
|                 $invoice->load('account'); | ||||
|                 $accountAttributes = $invoice->account()->getParent()->getRelations()['account']->getAttributes(); | ||||
|                 $pdfPath = storage_path().'/pdfcache/cache-'.$invoice->getAttributes()['public_id'].'.pdf'; | ||||
|                  | ||||
|                 if($accountAttributes['pdf_email_attachment'] === 1 && file_exists($pdfPath)) { | ||||
|                     $message->attach( | ||||
|                         $pdfPath, | ||||
|                         array('as' => $accountAttributes['name'].'_'.$accountAttributes['invoice_number_prefix'].$invoice->getName().'.pdf', 'mime' => 'application/pdf') | ||||
|                     ); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             //$message->setEncoder(\Swift_Encoding::get8BitEncoding());
 | ||||
|             $message->to($toEmail)->from($fromEmail, $fromName)->replyTo($replyEmail, $fromName)->subject($subject); | ||||
|  | ||||
| @ -0,0 +1,34 @@ | ||||
| <?php | ||||
| 
 | ||||
| use Illuminate\Database\Schema\Blueprint; | ||||
| use Illuminate\Database\Migrations\Migration; | ||||
| 
 | ||||
| class AddPdfEmailAttachmentOption extends Migration { | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Run the migrations. | ||||
| 	 * | ||||
| 	 * @return void | ||||
| 	 */ | ||||
| 	public function up() | ||||
| 	{ | ||||
| 		Schema::table('accounts', function($table) | ||||
| 		{ | ||||
| 			$table->smallInteger('pdf_email_attachment')->default(0); | ||||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Reverse the migrations. | ||||
| 	 * | ||||
| 	 * @return void | ||||
| 	 */ | ||||
| 	public function down() | ||||
| 	{ | ||||
| 		Schema::table('accounts', function($table) | ||||
| 		{ | ||||
| 			$table->dropColumn('pdf_email_attachment'); | ||||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
| @ -11,7 +11,7 @@ If you'd like to use our code to sell your own invoicing app we have an affiliat | ||||
| 
 | ||||
| Most online invoicing sites are expensive. They shouldn't be. The aim of this project is to provide a free, open-source alternative. Additionally, the hope is the codebase will serve as a sample site for Laravel as well as other JavaScript technologies. | ||||
| 
 | ||||
| To setup the site you can either use this [zip file](http://www.invoiceninja.com/knowledgebase/self-host/) (easier to setup) or checkout the code from GitHub following the instructions below (easier to stay up to date). | ||||
| To setup the site you can either use this [zip file](https://www.invoiceninja.com/knowledgebase/self-host/) (easier to setup) or checkout the code from GitHub following the instructions below (easier to stay up to date). | ||||
| 
 | ||||
| For a WAMP/MAMP/LAMP setup you can one-click install using Softaculous's [AMPPS](http://www.ampps.com/). To deploy the app with [Docker](http://www.docker.com/) you can use [this project](https://github.com/rollbrettler/Dockerfiles/tree/master/invoice-ninja). | ||||
| 
 | ||||
| @ -39,9 +39,9 @@ Developed by [@hillelcoren](https://twitter.com/hillelcoren) | Designed by [kant | ||||
| 
 | ||||
| ### Documentation  | ||||
| 
 | ||||
| * [Self Host](http://www.invoiceninja.com/knowledgebase/self-host/) | ||||
| * [API Documentation](http://www.invoiceninja.com/knowledgebase/api-documentation/) | ||||
| * [Developer Guide](http://www.invoiceninja.com/knowledgebase/developer-guide/) | ||||
| * [Self Host](https://www.invoiceninja.com/knowledgebase/self-host/) | ||||
| * [API Documentation](https://www.invoiceninja.com/knowledgebase/api-documentation/) | ||||
| * [Developer Guide](https://www.invoiceninja.com/knowledgebase/developer-guide/) | ||||
| 
 | ||||
| ### Steps to setup from GitHub | ||||
| 
 | ||||
|  | ||||
| @ -208,6 +208,8 @@ return array( | ||||
|   'import_to' => 'Importer til', | ||||
|   'client_will_create' => 'Klient vil blive oprettet', | ||||
|   'clients_will_create' => 'Klienter vil blive oprettet', | ||||
|   'email_settings' => 'Email Settings', | ||||
|   'pdf_email_attachment' => 'Attach PDF to Emails', | ||||
| 
 | ||||
|   // application messages
 | ||||
|   'created_client' => 'Klient oprettet succesfuldt', | ||||
|  | ||||
| @ -205,6 +205,8 @@ return array( | ||||
|   'import_to' => 'Importieren nach', | ||||
|   'client_will_create' => 'Kunde wird erstellt', | ||||
|   'clients_will_create' => 'Kunden werden erstellt', | ||||
|   'email_settings' => 'E-Mail Einstellungen', | ||||
|   'pdf_email_attachment' => 'PDF an E-Mails anhängen', | ||||
| 
 | ||||
|   // application messages
 | ||||
|   'created_client' => 'Kunde erfolgreich angelegt', | ||||
|  | ||||
| @ -206,6 +206,8 @@ return array( | ||||
|   'import_to' => 'Import to', | ||||
|   'client_will_create' => 'client will be created', | ||||
|   'clients_will_create' => 'clients will be created', | ||||
|   'email_settings' => 'Email Settings', | ||||
|   'pdf_email_attachment' => 'Attach PDF to Emails', | ||||
| 
 | ||||
|   // application messages
 | ||||
|   'created_client' => 'Successfully created client', | ||||
|  | ||||
| @ -205,6 +205,8 @@ return array( | ||||
|    'import_to' => 'Importar a', | ||||
|    'client_will_create' => 'cliente se creará', //What is this for, context of it's use
 | ||||
|    'clients_will_create' => 'clientes se crearan', //What is this for, context of it's use
 | ||||
|    'email_settings' => 'Email Settings', | ||||
|    'pdf_email_attachment' => 'Attach PDF to Emails', | ||||
| 
 | ||||
|    // application messages
 | ||||
|    'created_client' => 'cliente creado con éxito', | ||||
|  | ||||
| @ -206,6 +206,8 @@ return array( | ||||
|   'import_to' => 'Importer en tant que', | ||||
|   'client_will_create' => 'client sera créé', | ||||
|   'clients_will_create' => 'clients seront créés', | ||||
|   'email_settings' => 'Email Settings', | ||||
|   'pdf_email_attachment' => 'Attach PDF to Emails', | ||||
| 
 | ||||
|   // application messages
 | ||||
|   'created_client' => 'Client créé avec succès', | ||||
|  | ||||
| @ -206,6 +206,8 @@ return array( | ||||
|   'import_to' => 'Importa in', | ||||
|   'client_will_create' => 'il cliente sarà creato', | ||||
|   'clients_will_create' => 'i clienti saranno creati', | ||||
|   'email_settings' => 'Email Settings', | ||||
|   'pdf_email_attachment' => 'Attach PDF to Emails', | ||||
| 
 | ||||
|   // application messages
 | ||||
|   'created_client' => 'Cliente creato con successo', | ||||
|  | ||||
| @ -206,6 +206,8 @@ return array( | ||||
|   'import_to' => 'Import to', | ||||
|   'client_will_create' => 'client will be created', | ||||
|   'clients_will_create' => 'clients will be created', | ||||
|   'email_settings' => 'Email Settings', | ||||
|   'pdf_email_attachment' => 'Attach PDF to Emails', | ||||
| 
 | ||||
|   // application messages
 | ||||
|   'created_client' => 'Successfully created client', | ||||
|  | ||||
| @ -206,6 +206,8 @@ return array( | ||||
|   'import_to' => 'Importer til', | ||||
|   'client_will_create' => 'Klient vil bli opprettet', | ||||
|   'clients_will_create' => 'Klienter vil bli opprettet', | ||||
|   'email_settings' => 'Email Settings', | ||||
|   'pdf_email_attachment' => 'Attach PDF to Emails', | ||||
| 
 | ||||
|   // application messages
 | ||||
|   'created_client' => 'Klient opprettet suksessfullt', | ||||
|  | ||||
| @ -205,6 +205,8 @@ return array( | ||||
|   'import_to' => 'Importeer naar', | ||||
|   'client_will_create' => 'klant zal aangemaakt worden', | ||||
|   'clients_will_create' => 'klanten zullen aangemaakt worden', | ||||
|   'email_settings' => 'Email Settings', | ||||
|   'pdf_email_attachment' => 'Attach PDF to Emails', | ||||
| 
 | ||||
|   // application messages
 | ||||
|   'created_client' => 'Klant succesvol aangemaakt', | ||||
| @ -307,18 +309,18 @@ return array( | ||||
|   'close' => 'Sluiten',   | ||||
| 
 | ||||
|   'pro_plan_product' => 'Pro Plan', | ||||
|   'pro_plan_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', | ||||
|   'pro_plan_success' => 'Thanks for joining! Once the invoice is paid your Pro Plan membership will begin.', | ||||
|   'pro_plan_description' => 'Één jaar abbonnement op het Invoice Ninja Pro Plan.', | ||||
|   'pro_plan_success' => 'Bedankt voor het aanmelden! Zodra je factuur betaald is zal je Pro Plan lidmaatschap beginnen.', | ||||
| 
 | ||||
|   'unsaved_changes' => 'You have unsaved changes', | ||||
|   'unsaved_changes' => 'Je hebt niet bewaarde wijzigingen', | ||||
|   'custom_fields' => 'Custom fields', | ||||
|   'company_fields' => 'Company Fields', | ||||
|   'client_fields' => 'Client Fields', | ||||
|   'field_label' => 'Field Label', | ||||
|   'field_value' => 'Field Value', | ||||
|   'edit' => 'Edit', | ||||
|   'view_invoice' => 'View invoice', | ||||
|   'view_as_recipient' => 'View as recipient', | ||||
|   'edit' => 'Bewerk', | ||||
|   'view_invoice' => 'Bekijk factuur', | ||||
|   'view_as_recipient' => 'Bekijk als ontvanger', | ||||
| 
 | ||||
|   // product management
 | ||||
|   'product_library' => 'Product Library', | ||||
| @ -336,105 +338,105 @@ return array( | ||||
|   'archived_product' => 'Successfully archived product', | ||||
|   'pro_plan_custom_fields' => ':link to enable custom fields by joining the Pro Plan', | ||||
| 
 | ||||
|   'advanced_settings' => 'Advanced Settings', | ||||
|   'advanced_settings' => 'Geavanceerde instellingen', | ||||
|   'pro_plan_advanced_settings' => ':link to enable the advanced settings by joining the Pro Plan', | ||||
|   'invoice_design' => 'Invoice Design', | ||||
|   'specify_colors' => 'Specify colors', | ||||
|   'specify_colors_label' => 'Select the colors used in the invoice', | ||||
|   'invoice_design' => 'Factuur ontwerp', | ||||
|   'specify_colors' => 'Kies kleuren', | ||||
|   'specify_colors_label' => 'Kies de kleuren die in de factuur gebruikt worden', | ||||
| 
 | ||||
|   'chart_builder' => 'Chart Builder', | ||||
|   'ninja_email_footer' => 'Use :site to invoice your clients and get paid online for free!', | ||||
|   'ninja_email_footer' => 'Gebruik :site om uw klanten gratis te factureren en betalingen te ontvangen!', | ||||
|   'go_pro' => 'Go Pro', | ||||
| 
 | ||||
|   // Quotes
 | ||||
|   'quote' => 'Quote', | ||||
|   'quotes' => 'Quotes', | ||||
|   'quote_number' => 'Quote Number', | ||||
|   'quote_number_short' => 'Quote #', | ||||
|   'quote_date' => 'Quote Date', | ||||
|   'quote_total' => 'Quote Total', | ||||
|   'your_quote' => 'Your Quote', | ||||
|   'total' => 'Total', | ||||
|   'clone' => 'Clone', | ||||
|   'quote' => 'Offerte', | ||||
|   'quotes' => 'Offertes', | ||||
|   'quote_number' => 'Offerte Number', | ||||
|   'quote_number_short' => 'Offerte #', | ||||
|   'quote_date' => 'Offerte Datum', | ||||
|   'quote_total' => 'Offerte Totaal', | ||||
|   'your_quote' => 'Uw Offerte', | ||||
|   'total' => 'Totaal', | ||||
|   'clone' => 'Kloon', | ||||
| 
 | ||||
|   'new_quote' => 'New Quote', | ||||
|   'create_quote' => 'Create Quote', | ||||
|   'edit_quote' => 'Edit Quote', | ||||
|   'archive_quote' => 'Archive Quote', | ||||
|   'delete_quote' => 'Delete Quote', | ||||
|   'save_quote' => 'Save Quote', | ||||
|   'email_quote' => 'Email Quote', | ||||
|   'clone_quote' => 'Clone Quote', | ||||
|   'convert_to_invoice' => 'Convert to Invoice', | ||||
|   'view_invoice' => 'View Invoice', | ||||
|   'view_quote' => 'View Quote', | ||||
|   'view_client' => 'View Client', | ||||
|   'new_quote' => 'Nieuwe Offerte', | ||||
|   'create_quote' => 'Maak offerte aan', | ||||
|   'edit_quote' => 'Bewerk Offecte', | ||||
|   'archive_quote' => 'Archiveer Offerte', | ||||
|   'delete_quote' => 'Verwijder Offerte', | ||||
|   'save_quote' => 'Bewaar Offerte', | ||||
|   'email_quote' => 'Email Offerte', | ||||
|   'clone_quote' => 'Kloon Offerte', | ||||
|   'convert_to_invoice' => 'Zet om naar Factuur', | ||||
|   'view_invoice' => 'Bekijk Factuur', | ||||
|   'view_quote' => 'Bekijk Offerte', | ||||
|   'view_client' => 'Bekijk Klant', | ||||
| 
 | ||||
|   'updated_quote' => 'Successfully updated quote', | ||||
|   'created_quote' => 'Successfully created quote', | ||||
|   'cloned_quote' => 'Successfully cloned quote', | ||||
|   'emailed_quote' => 'Successfully emailed quote', | ||||
|   'archived_quote' => 'Successfully archived quote', | ||||
|   'archived_quotes' => 'Successfully archived :count quotes', | ||||
|   'deleted_quote' => 'Successfully deleted quote', | ||||
|   'deleted_quotes' => 'Successfully deleted :count quotes', | ||||
|   'converted_to_invoice' => 'Successfully converted quote to invoice', | ||||
|   'updated_quote' => 'Offerte succesvol bijgewerkt', | ||||
|   'created_quote' => 'Offerte succesvol aangemaakt', | ||||
|   'cloned_quote' => 'Offerte succesvol gekopieerd', | ||||
|   'emailed_quote' => 'Offerte succesvol gemaild', | ||||
|   'archived_quote' => 'Offerte succesvol gearchiveerd', | ||||
|   'archived_quotes' => ':count offertes succesvol gearchiveerd', | ||||
|   'deleted_quote' => 'Offerte succesvol verwijderd', | ||||
|   'deleted_quotes' => ':count offertes succesvol verwijderd', | ||||
|   'converted_to_invoice' => 'Offerte succesvol omgezet naar factuur', | ||||
| 
 | ||||
|   'quote_subject' => 'New quote from :account', | ||||
|   'quote_message' => 'To view your quote for :amount, click the link below.', | ||||
|   'quote_link_message' => 'To view your client quote click the link below:', | ||||
|   'notification_quote_sent_subject' => 'Quote :invoice was sent to :client', | ||||
|   'notification_quote_viewed_subject' => 'Quote :invoice was viewed by :client', | ||||
|   'notification_quote_sent' => 'The following client :client was emailed Quote :invoice for :amount.', | ||||
|   'notification_quote_viewed' => 'The following client :client viewed Quote :invoice for :amount.',   | ||||
|   'quote_subject' => 'Nieuwe offerte van :account', | ||||
|   'quote_message' => 'Om uw offerte voor :amount te bekijken, klik op de link hieronder.', | ||||
|   'quote_link_message' => 'Klik op de link hieronder om de offerte te bekijken:', | ||||
|   'notification_quote_sent_subject' => 'Offerte :invoice is verstuurd naar :client', | ||||
|   'notification_quote_viewed_subject' => 'Offerte :invoice is bekeken door :client', | ||||
|   'notification_quote_sent' => 'Klant :client heeft offerte :invoice voor :amount per email ontvangen.', | ||||
|   'notification_quote_viewed' => 'Klant :client heeft offerte :invoice voor :amount bekeken.',   | ||||
| 
 | ||||
|   'session_expired' => 'Your session has expired.',   | ||||
|   'session_expired' => 'Uw sessie is verlopen.',   | ||||
| 
 | ||||
|   'invoice_fields' => 'Invoice Fields', | ||||
|   'invoice_options' => 'Invoice Options', | ||||
|   'hide_quantity' => 'Hide quantity', | ||||
|   'hide_quantity_help' => 'If your line items quantities are always 1, then you can declutter invoices by no longer displaying this field.', | ||||
|   'invoice_fields' => 'Factuur Velden', | ||||
|   'invoice_options' => 'Factuur Opties', | ||||
|   'hide_quantity' => 'Verberg aantallen', | ||||
|   'hide_quantity_help' => 'Als us artikel-aantallen altijd 1 zijn, kunt u uw facturen er netter uit laten zien door dit veld te verbergen.', | ||||
|   'hide_paid_to_date' => 'Hide paid to date', | ||||
|   'hide_paid_to_date_help' => 'Only display the "Paid to Date" area on your invoices once a payment has been received.', | ||||
| 
 | ||||
|   'charge_taxes' => 'Charge taxes', | ||||
|   'user_management' => 'User Management', | ||||
|   'add_user' => 'Add User', | ||||
|   'send_invite' => 'Send invitation', | ||||
|   'sent_invite' => 'Successfully sent invitation', | ||||
|   'updated_user' => 'Successfully updated user', | ||||
|   'invitation_message' => 'You\'ve been invited by :invitor. ', | ||||
|   'register_to_add_user' => 'Please sign up to add a user', | ||||
|   'user_state' => 'State', | ||||
|   'edit_user' => 'Edit User', | ||||
|   'delete_user' => 'Delete User', | ||||
|   'active' => 'Active', | ||||
|   'user_management' => 'Gebruikersbeheer', | ||||
|   'add_user' => 'Nieuwe gebruiker', | ||||
|   'send_invite' => 'Verstuur uitnodiging', | ||||
|   'sent_invite' => 'Uitnodiging succesvol verzonden', | ||||
|   'updated_user' => 'Gebruiker succesvol aangepast', | ||||
|   'invitation_message' => 'U bent uigenodigd door :invitor. ', | ||||
|   'register_to_add_user' => 'Meld u aan om een gebruiker toe te voegen', | ||||
|   'user_state' => 'Status', | ||||
|   'edit_user' => 'Bewerk Gebruiker', | ||||
|   'delete_user' => 'Verwijder Gebruiker', | ||||
|   'active' => 'Actief', | ||||
|   'pending' => 'Pending', | ||||
|   'deleted_user' => 'Successfully deleted user', | ||||
|   'limit_users' => 'Sorry, this will exceed the limit of ' . MAX_NUM_USERS . ' users', | ||||
|   'deleted_user' => 'Gebruiker succesvol verwijderd', | ||||
|   'limit_users' => 'Sorry, dit zou de limiet van ' . MAX_NUM_USERS . ' gebruikers overschrijden', | ||||
| 
 | ||||
|   'confirm_email_invoice' => 'Are you sure you want to email this invoice?', | ||||
|   'confirm_email_quote' => 'Are you sure you want to email this quote?', | ||||
|   'confirm_recurring_email_invoice' => 'Recurring is enabled, are you sure you want this invoice emailed?',   | ||||
|   'confirm_email_invoice' => 'Weet u zeker dat u deze factuur wilt mailen?', | ||||
|   'confirm_email_quote' => 'Weet u zeker dat u deze offerte wilt mailen?', | ||||
|   'confirm_recurring_email_invoice' => 'Terugkeren (herhalen) staat aan, weet u zeker dat u deze factuur wilt mailen?',   | ||||
| 
 | ||||
|   'cancel_account' => 'Cancel Account', | ||||
|   'cancel_account_message' => 'Warning: This will permanently erase all of your data, there is no undo.', | ||||
|   'go_back' => 'Go Back', | ||||
|   'cancel_account' => 'Zeg Account Op', | ||||
|   'cancel_account_message' => 'Waarschuwing: Dit zal al uw data verwijderen. Er is geen manier om dit ongedaan te maken', | ||||
|   'go_back' => 'Ga Terug', | ||||
| 
 | ||||
|   'data_visualizations' => 'Data Visualizations', | ||||
|   'sample_data' => 'Sample data shown', | ||||
|   'hide' => 'Hide', | ||||
|   'new_version_available' => 'A new version of :releases_link is available. You\'re running v:user_version, the latest is v:latest_version', | ||||
|   'data_visualizations' => 'Data Visualisaties', | ||||
|   'sample_data' => 'Voorbeelddata getoond', | ||||
|   'hide' => 'Verberg', | ||||
|   'new_version_available' => 'Een nieuwe versie van :releases_link is beschikbaar. U gebruikt nu v:user_version, de laatste versie is v:latest_version', | ||||
| 
 | ||||
|   'invoice_settings' => 'Invoice Settings', | ||||
|   'invoice_number_prefix' => 'Invoice Number Prefix', | ||||
|   'invoice_number_counter' => 'Invoice Number Counter', | ||||
|   'quote_number_prefix' => 'Quote Number Prefix', | ||||
|   'quote_number_counter' => 'Quote Number Counter', | ||||
|   'share_invoice_counter' => 'Share invoice counter', | ||||
|   'invoice_issued_to' => 'Invoice issued to', | ||||
|   'invalid_counter' => 'To prevent a possible conflict please set either an invoice or quote number prefix', | ||||
|   'mark_sent' => 'Mark sent',     | ||||
|   'invoice_settings' => 'Factuur Instellingen', | ||||
|   'invoice_number_prefix' => 'Factuurnummer Prefix', | ||||
|   'invoice_number_counter' => 'Factuurnummer Teller', | ||||
|   'quote_number_prefix' => 'Offertenummer Prefix', | ||||
|   'quote_number_counter' => 'Offertenummer Teller', | ||||
|   'share_invoice_counter' => 'Deel factuur teller', | ||||
|   'invoice_issued_to' => 'Factuur uitgegeven aan', | ||||
|   'invalid_counter' => 'Stel een factuurnummer prefix of offertenummer prefix in om een mogelijk conflict te voorkomen.', | ||||
|   'mark_sent' => 'Markeer als verzonden',     | ||||
|    | ||||
| 
 | ||||
|   'gateway_help_1' => ':link to sign up for Authorize.net.', | ||||
| @ -443,17 +445,17 @@ return array( | ||||
|   'gateway_help_23' => 'Note: use your secret API key, not your publishable API key.', | ||||
|   'gateway_help_27' => ':link to sign up for TwoCheckout.', | ||||
| 
 | ||||
|   'more_designs' => 'More designs', | ||||
|   'more_designs_title' => 'Additional Invoice Designs', | ||||
|   'more_designs' => 'Meer ontwerpen', | ||||
|   'more_designs_title' => 'Aanvullende Factuur Ontwerpen', | ||||
|   'more_designs_cloud_header' => 'Go Pro for more invoice designs', | ||||
|   'more_designs_cloud_text' => '', | ||||
|   'more_designs_self_host_header' => 'Get 6 more invoice designs for just $'.INVOICE_DESIGNS_PRICE, | ||||
|   'more_designs_self_host_header' => 'Krijg 6 extra factuurontwerpen voor maar $'.INVOICE_DESIGNS_PRICE, | ||||
|   'more_designs_self_host_text' => '', | ||||
|   'buy' => 'Buy', | ||||
|   'bought_designs' => 'Successfully added additional invoice designs', | ||||
|   'buy' => 'Koop', | ||||
|   'bought_designs' => 'Aanvullende factuurontwerpen succesvol toegevoegd', | ||||
| 
 | ||||
|    | ||||
|   'sent' => 'sent', | ||||
|   'sent' => 'verzonden', | ||||
|   'timesheets' => 'Timesheets', | ||||
| 
 | ||||
|   'payment_title' => 'Enter Your Billing Address and Credit Card information', | ||||
| @ -464,47 +466,47 @@ return array( | ||||
|   'id_number' => 'ID Number', | ||||
| 
 | ||||
|   'white_label_link' => 'White label', | ||||
|   'white_label_text' => 'Purchase a white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the top of the client pages.', | ||||
|   'white_label_text' => 'Koop een white label licentie voor $'.WHITE_LABEL_PRICE.' om de Invoice Ninja merknaam te verwijderen uit de bovenkant van de klantenpagina\'s.', | ||||
|   'white_label_header' => 'White Label', | ||||
|   'bought_white_label' => 'Successfully enabled white label license', | ||||
|   'bought_white_label' => 'White label licentie succesvol geactiveerd', | ||||
|   'white_labeled' => 'White labeled', | ||||
| 
 | ||||
| 
 | ||||
|   'restore' => 'Restore', | ||||
|   'restore_invoice' => 'Restore Invoice', | ||||
|   'restore_quote' => 'Restore Quote', | ||||
|   'restore_client' => 'Restore Client', | ||||
|   'restore_credit' => 'Restore Credit', | ||||
|   'restore_payment' => 'Restore Payment', | ||||
|   'restore' => 'Herstel', | ||||
|   'restore_invoice' => 'Herstel Factuur', | ||||
|   'restore_quote' => 'Herstel Offerte', | ||||
|   'restore_client' => 'Herstel Klant', | ||||
|   'restore_credit' => 'Herstel Kredietnota', | ||||
|   'restore_payment' => 'Herstel Betaling', | ||||
| 
 | ||||
|   'restored_invoice' => 'Successfully restored invoice', | ||||
|   'restored_quote' => 'Successfully restored quote', | ||||
|   'restored_client' => 'Successfully restored client', | ||||
|   'restored_payment' => 'Successfully restored payment', | ||||
|   'restored_credit' => 'Successfully restored credit', | ||||
|   'restored_invoice' => 'Factuur succesvol hersteld', | ||||
|   'restored_quote' => 'Offerte succesvol hersteld', | ||||
|   'restored_client' => 'Klant succesvol hersteld', | ||||
|   'restored_payment' => 'Betaling succesvol hersteld', | ||||
|   'restored_credit' => 'Kredietnota succesvol hersteld', | ||||
|    | ||||
|   'reason_for_canceling' => 'Help us improve our site by telling us why you\'re leaving.', | ||||
|   'discount_percent' => 'Percent', | ||||
|   'discount_amount' => 'Amount', | ||||
|   'reason_for_canceling' => 'Help ons om onze site te verbeteren door ons te vertellen waarom u weggaat.', | ||||
|   'discount_percent' => 'Percentage', | ||||
|   'discount_amount' => 'Bedrag', | ||||
| 
 | ||||
|   'invoice_history' => 'Invoice History', | ||||
|   'quote_history' => 'Quote History', | ||||
|   'current_version' => 'Current version', | ||||
|   'select_versiony' => 'Select version', | ||||
|   'view_history' => 'View History', | ||||
|   'invoice_history' => 'Factuur geschiedenis', | ||||
|   'quote_history' => 'Offerte Geschiedenis', | ||||
|   'current_version' => 'Huidige Versie', | ||||
|   'select_versiony' => 'Selecteer versie', | ||||
|   'view_history' => 'Bekijk Geschiedenis', | ||||
| 
 | ||||
|   'edit_payment' => 'Edit Payment', | ||||
|   'updated_payment' => 'Successfully updated payment', | ||||
|   'deleted' => 'Deleted', | ||||
|   'restore_user' => 'Restore User', | ||||
|   'restored_user' => 'Successfully restored user', | ||||
|   'show_deleted_users' => 'Show deleted users', | ||||
|   'edit_payment' => 'Bewerk Betaling', | ||||
|   'updated_payment' => 'Betaling succesvol bijgewerkt', | ||||
|   'deleted' => 'Verwijderd', | ||||
|   'restore_user' => 'Herstel gebruiker', | ||||
|   'restored_user' => 'Gebruiker succesvol hersteld', | ||||
|   'show_deleted_users' => 'Toon verwijderde gebruikers', | ||||
|   'email_templates' => 'Email Templates', | ||||
|   'invoice_email' => 'Invoice Email', | ||||
|   'payment_email' => 'Payment Email', | ||||
|   'quote_email' => 'Quote Email', | ||||
|   'reset_all' => 'Reset All', | ||||
|   'approve' => 'Approve', | ||||
|   'invoice_email' => 'Factuur Email', | ||||
|   'payment_email' => 'Betaling Email', | ||||
|   'quote_email' => 'Offerte Email', | ||||
|   'reset_all' => 'Reset Alles', | ||||
|   'approve' => 'Goedkeuren', | ||||
| 
 | ||||
|   'token_billing_type_id' => 'Token Billing', | ||||
|   'token_billing_help' => 'Enables you to store credit cards with your gateway, and charge them at a later date.', | ||||
| @ -519,29 +521,29 @@ return array( | ||||
|   'token_billing' => 'Save card details', | ||||
|   'token_billing_secure' => 'The data is stored securely by :stripe_link', | ||||
| 
 | ||||
|   'support' => 'Support', | ||||
|   'contact_information' => 'Contact information', | ||||
|   '256_encryption' => '256-Bit Encryption', | ||||
|   'amount_due' => 'Amount due', | ||||
|   'billing_address' => 'Billing address', | ||||
|   'billing_method' => 'Billing method', | ||||
|   'order_overview' => 'Order overview', | ||||
|   'match_address' => '*Address must match address associated with credit card.', | ||||
|   'support' => 'Ondersteuning', | ||||
|   'contact_information' => 'Contact informatie', | ||||
|   '256_encryption' => '256-Bit Encryptie', | ||||
|   'amount_due' => 'Te betalen bedrag', | ||||
|   'billing_address' => 'Facturatie adres', | ||||
|   'billing_method' => 'Betaalmethode', | ||||
|   'order_overview' => 'Order overzicht', | ||||
|   'match_address' => '*Addres moet overeenkomen met adres van creditcard.', | ||||
|   'click_once' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.', | ||||
| 
 | ||||
|   'default_invoice_footer' => 'Set default invoice footer', | ||||
|   'invoice_footer' => 'Invoice footer', | ||||
|   'save_as_default_footer' => 'Save as default footer', | ||||
|   'default_invoice_footer' => 'Stel standaard factuur-footer in', | ||||
|   'invoice_footer' => 'Factuur footer', | ||||
|   'save_as_default_footer' => 'Bewaar als standaard footer', | ||||
| 
 | ||||
|   'token_management' => 'Token Management', | ||||
|   'token_management' => 'Token Beheer', | ||||
|   'tokens' => 'Tokens', | ||||
|   'add_token' => 'Add Token', | ||||
|   'show_deleted_tokens' => 'Show deleted tokens', | ||||
|   'deleted_token' => 'Successfully deleted token', | ||||
|   'created_token' => 'Successfully created token', | ||||
|   'updated_token' => 'Successfully updated token', | ||||
|   'edit_token' => 'Edit Token', | ||||
|   'delete_token' => 'Delete Token', | ||||
|   'add_token' => 'Voeg Token Toe', | ||||
|   'show_deleted_tokens' => 'Toon verwijderde tokens', | ||||
|   'deleted_token' => 'Token succesvol verwijderd', | ||||
|   'created_token' => 'Token succesvol aangemaakt', | ||||
|   'updated_token' => 'Token succesvol aangepast', | ||||
|   'edit_token' => 'Bewerk Token', | ||||
|   'delete_token' => 'Verwijder Token', | ||||
|   'token' => 'Token', | ||||
| 
 | ||||
|   'add_gateway' => 'Add Gateway', | ||||
| @ -553,25 +555,25 @@ return array( | ||||
|   'pay_with_paypal' => 'PayPal', | ||||
|   'pay_with_card' => 'Credit card', | ||||
| 
 | ||||
|   'change_password' => 'Change password', | ||||
|   'current_password' => 'Current password', | ||||
|   'new_password' => 'New password', | ||||
|   'confirm_password' => 'Confirm password', | ||||
|   'password_error_incorrect' => 'The current password is incorrect.', | ||||
|   'password_error_invalid' => 'The new password is invalid.', | ||||
|   'updated_password' => 'Successfully updated password', | ||||
|   'change_password' => 'Verander wachtwoord', | ||||
|   'current_password' => 'Huidig wachtwoord', | ||||
|   'new_password' => 'Nieuw wachtwoord', | ||||
|   'confirm_password' => 'Bevestig wachtwoord', | ||||
|   'password_error_incorrect' => 'Het huidige wachtwoord is niet.', | ||||
|   'password_error_invalid' => 'Het nieuwe wachtwoord is ongeldig.', | ||||
|   'updated_password' => 'Wachtwoord succesvol aangepast', | ||||
| 
 | ||||
|   'api_tokens' => 'API Tokens', | ||||
|   'users_and_tokens' => 'Users & Tokens', | ||||
|   'users_and_tokens' => 'Gebruikers & Tokens', | ||||
|   'account_login' => 'Account Login', | ||||
|   'recover_password' => 'Recover your password', | ||||
|   'forgot_password' => 'Forgot your password?', | ||||
|   'email_address' => 'Email address', | ||||
|   'recover_password' => 'Wachtwoordherstel', | ||||
|   'forgot_password' => 'Wachtwoord vergeten?', | ||||
|   'email_address' => 'Emailadres', | ||||
|   'lets_go' => 'Let’s go', | ||||
|   'password_recovery' => 'Password Recovery', | ||||
|   'send_email' => 'Send email', | ||||
|   'set_password' => 'Set Password', | ||||
|   'converted' => 'Converted', | ||||
|   'password_recovery' => 'Wachtwoord Herstel', | ||||
|   'send_email' => 'Verstuur email', | ||||
|   'set_password' => 'Stel wachtwoord in', | ||||
|   'converted' => 'Omgezet', | ||||
|      | ||||
| 
 | ||||
|    | ||||
|  | ||||
| @ -204,6 +204,8 @@ return array( | ||||
|   'import_to' => 'Importar para', | ||||
|   'client_will_create' => 'cliente será criado', | ||||
|   'clients_will_create' => 'clientes serão criados', | ||||
|   'email_settings' => 'Email Settings', | ||||
|   'pdf_email_attachment' => 'Attach PDF to Emails', | ||||
| 
 | ||||
|   // application messages
 | ||||
|   'created_client' => 'Cliente criado com sucesso', | ||||
|  | ||||
| @ -42,6 +42,10 @@ | ||||
| 			->append(Former::checkbox('share_counter')->raw()->onclick('setQuoteNumberEnabled()') . ' ' . trans('texts.share_invoice_counter')) }} | ||||
| 	<p> </p> | ||||
| 
 | ||||
| 	{{ Former::legend('email_settings') }} | ||||
| 	{{ Former::checkbox('pdf_email_attachment') }} | ||||
| 	<p> </p> | ||||
| 
 | ||||
| 	@if (Auth::user()->isPro()) | ||||
| 	{{ Former::actions( Button::lg_success_submit(trans('texts.save'))->append_with_icon('floppy-disk') ) }} | ||||
| 	@else | ||||
|  | ||||
| @ -718,17 +718,23 @@ | ||||
| 	} | ||||
| 
 | ||||
| 	function onEmailClick() { | ||||
| 		if (confirm('{{ trans("texts.confirm_email_$entityType") }}')) {		 | ||||
| 		if (confirm('{{ trans("texts.confirm_email_$entityType") }}')) { | ||||
| 			submitAction('email'); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	function onSaveClick() { | ||||
| 		if (model.invoice().is_recurring()) { | ||||
| 			if (confirm('{{ trans("texts.confirm_recurring_email_$entityType") }}')) {		 | ||||
| 			if (confirm('{{ trans("texts.confirm_recurring_email_$entityType") }}')) { | ||||
| 				submitAction(''); | ||||
| 			}			 | ||||
| 			} | ||||
| 		} else { | ||||
| 			var invoice = createInvoiceModel(); | ||||
| 			var design  = getDesignJavascript(); | ||||
| 			if (!design) return; | ||||
| 			var doc = generatePDF(invoice, design, true); | ||||
| 			 | ||||
| 			$('form.form-horizontal.warn-on-exit').append('<input type="hidden" name="pdfupload" value="'+doc.output('datauristring')+'">'); | ||||
| 			submitAction(''); | ||||
| 		} | ||||
| 	} | ||||
| @ -739,7 +745,7 @@ | ||||
| 			return; | ||||
| 		} | ||||
| 		$('#action').val(value); | ||||
| 		$('#submitButton').click();		 | ||||
| 		$('#submitButton').click(); | ||||
| 	} | ||||
| 
 | ||||
| 	function isSaveValid() { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user