This commit is contained in:
mindnervestech 2014-11-11 11:30:40 +05:30
commit ab19abac45
43 changed files with 1264 additions and 912 deletions

View File

@ -6,8 +6,6 @@ module.exports = function(grunt) {
options: { options: {
process: function(src, filepath) { process: function(src, filepath) {
var basepath = filepath.substring(7, filepath.lastIndexOf('/') + 1); var basepath = filepath.substring(7, filepath.lastIndexOf('/') + 1);
console.log(filepath);
// Fix relative paths for css files // Fix relative paths for css files
if(filepath.indexOf('.css', filepath.length - 4) !== -1) { if(filepath.indexOf('.css', filepath.length - 4) !== -1) {
return src.replace(/(url\s*[\("']+)\s*([^'"\)]+)(['"\)]+;?)/gi, function(match, start, url, end, offset, string) { return src.replace(/(url\s*[\("']+)\s*([^'"\)]+)(['"\)]+;?)/gi, function(match, start, url, end, offset, string) {

View File

@ -3,7 +3,7 @@
### [https://www.invoiceninja.com](https://www.invoiceninja.com) ### [https://www.invoiceninja.com](https://www.invoiceninja.com)
If you'd like to use our code to sell your own invoicing app we offer a white-label affiliate program. We ask for 20% of revenue earned with a $100 sign up fee. Get in touch for more details. If you'd like to use our code to sell your own invoicing app we offer a white-label affiliate program. We ask for 20% of revenue with a $100 sign up fee. Get in touch for more details.
### Introduction ### Introduction

View File

@ -13,7 +13,7 @@ return array(
| |
*/ */
'debug' => true, 'debug' => false,
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View File

@ -818,6 +818,7 @@ class AccountController extends \BaseController {
{ {
$account = Auth::user()->account; $account = Auth::user()->account;
$account->name = trim(Input::get('name')); $account->name = trim(Input::get('name'));
$account->id_number = trim(Input::get('id_number'));
$account->vat_number = trim(Input::get('vat_number')); $account->vat_number = trim(Input::get('vat_number'));
$account->work_email = trim(Input::get('work_email')); $account->work_email = trim(Input::get('work_email'));
$account->work_phone = trim(Input::get('work_phone')); $account->work_phone = trim(Input::get('work_phone'));

View File

@ -199,6 +199,7 @@ class ClientController extends \BaseController {
} }
$client->name = trim(Input::get('name')); $client->name = trim(Input::get('name'));
$client->id_number = trim(Input::get('id_number'));
$client->vat_number = trim(Input::get('vat_number')); $client->vat_number = trim(Input::get('vat_number'));
$client->work_phone = trim(Input::get('work_phone')); $client->work_phone = trim(Input::get('work_phone'));
$client->custom_value1 = trim(Input::get('custom_value1')); $client->custom_value1 = trim(Input::get('custom_value1'));
@ -212,7 +213,7 @@ class ClientController extends \BaseController {
$client->private_notes = trim(Input::get('private_notes')); $client->private_notes = trim(Input::get('private_notes'));
$client->size_id = Input::get('size_id') ? : null; $client->size_id = Input::get('size_id') ? : null;
$client->industry_id = Input::get('industry_id') ? : null; $client->industry_id = Input::get('industry_id') ? : null;
$client->currency_id = Input::get('currency_id') ? : 1; $client->currency_id = Input::get('currency_id') ? : null;
$client->payment_terms = Input::get('payment_terms') ? : 0; $client->payment_terms = Input::get('payment_terms') ? : 0;
$client->website = trim(Input::get('website')); $client->website = trim(Input::get('website'));

View File

@ -19,7 +19,7 @@ class DashboardController extends \BaseController {
->groupBy('accounts.id') ->groupBy('accounts.id')
->first(); ->first();
$select = DB::raw('SUM(clients.paid_to_date) value'); $select = DB::raw('SUM(clients.paid_to_date) as value');
$totalIncome = DB::table('accounts') $totalIncome = DB::table('accounts')
->select($select) ->select($select)

View File

@ -153,6 +153,7 @@ class InvoiceController extends \BaseController {
$invoice->id = null; $invoice->id = null;
$invoice->invoice_number = Auth::user()->account->getNextInvoiceNumber($invoice->is_quote); $invoice->invoice_number = Auth::user()->account->getNextInvoiceNumber($invoice->is_quote);
$invoice->balance = $invoice->amount; $invoice->balance = $invoice->amount;
$invoice->invoice_date = date_create()->format('Y-m-d');
$method = 'POST'; $method = 'POST';
$url = "{$entityType}s"; $url = "{$entityType}s";
} }

View File

@ -35,11 +35,13 @@ class QuoteController extends \BaseController {
'columns'=>Utils::trans(['checkbox', 'quote_number', 'client', 'quote_date', 'quote_total', 'due_date', 'status', 'action']) 'columns'=>Utils::trans(['checkbox', 'quote_number', 'client', 'quote_date', 'quote_total', 'due_date', 'status', 'action'])
]; ];
/*
if (Invoice::scope()->where('is_recurring', '=', true)->count() > 0) if (Invoice::scope()->where('is_recurring', '=', true)->count() > 0)
{ {
$data['secEntityType'] = ENTITY_RECURRING_INVOICE; $data['secEntityType'] = ENTITY_RECURRING_INVOICE;
$data['secColumns'] = Utils::trans(['checkbox', 'frequency', 'client', 'start_date', 'end_date', 'quote_total', 'action']); $data['secColumns'] = Utils::trans(['checkbox', 'frequency', 'client', 'start_date', 'end_date', 'quote_total', 'action']);
} }
*/
return View::make('list', $data); return View::make('list', $data);
} }
@ -104,12 +106,14 @@ class QuoteController extends \BaseController {
public function bulk() public function bulk()
{ {
$action = Input::get('action'); $action = Input::get('action');
$statusId = Input::get('statusId');
$ids = Input::get('id') ? Input::get('id') : Input::get('ids'); $ids = Input::get('id') ? Input::get('id') : Input::get('ids');
$count = $this->invoiceRepo->bulk($ids, $action); $count = $this->invoiceRepo->bulk($ids, $action, $statusId);
if ($count > 0) if ($count > 0)
{ {
$message = Utils::pluralize("{$action}d_quote", $count); $key = $action == 'mark' ? "updated_quote" : "{$action}d_quote";
$message = Utils::pluralize($key, $count);
Session::flash('message', $message); Session::flash('message', $message);
} }

View File

@ -279,7 +279,7 @@ class ConfideSetupUsersTable extends Migration {
$t->string('last_name')->nullable(); $t->string('last_name')->nullable();
$t->string('email')->nullable(); $t->string('email')->nullable();
$t->string('phone')->nullable(); $t->string('phone')->nullable();
$t->timestamp('last_login'); $t->timestamp('last_login')->nullable();
$t->foreign('client_id')->references('id')->on('clients')->onDelete('cascade'); $t->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');
$t->foreign('user_id')->references('id')->on('users')->onDelete('cascade');; $t->foreign('user_id')->references('id')->on('users')->onDelete('cascade');;

View File

@ -422,10 +422,14 @@ class AddInvoiceDesignTable extends Migration {
var account = invoice.account; var account = invoice.account;
var currencyId = client.currency_id; var currencyId = client.currency_id;
layout.accountTop += 25;
layout.headerTop += 25;
layout.tableTop += 25;
if (invoice.image) if (invoice.image)
{ {
var left = layout.headerRight - invoice.imageWidth; var left = layout.headerRight - invoice.imageWidth;
doc.addImage(invoice.image, 'JPEG', left, 30); doc.addImage(invoice.image, 'JPEG', left, 50);
} }
/* table header */ /* table header */

View File

@ -0,0 +1,43 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddCompanyIdNumber extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('accounts', function($table)
{
$table->string('id_number')->nullable();
});
Schema::table('clients', function($table)
{
$table->string('id_number')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('accounts', function($table)
{
$table->dropColumn('id_number');
});
Schema::table('clients', function($table)
{
$table->dropColumn('id_number');
});
}
}

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AllowNullClientCurrency extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('clients', function($table)
{
DB::statement('ALTER TABLE `clients` MODIFY `currency_id` INTEGER UNSIGNED NULL;');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}

View File

@ -5,7 +5,8 @@ return array(
// client // client
'organization' => 'Organisation', 'organization' => 'Organisation',
'name' => 'Navn', 'name' => 'Navn',
'vat_number' => 'CVR nummer', 'id_number' => 'SE/CVR nummer',
'vat_number' => 'SE/CVR nummer',
'website' => 'Webside', 'website' => 'Webside',
'work_phone' => 'Telefon', 'work_phone' => 'Telefon',
'address' => 'Adresse', 'address' => 'Adresse',
@ -444,4 +445,29 @@ return array(
'invoice_issued_to' => 'Faktura udstedt til', 'invoice_issued_to' => 'Faktura udstedt til',
'invalid_counter' => 'For at undgå mulige overlap, sæt venligst et faktura eller tilbuds nummer præfiks', 'invalid_counter' => 'For at undgå mulige overlap, sæt venligst et faktura eller tilbuds nummer præfiks',
'mark_sent' => 'Markering sendt', 'mark_sent' => 'Markering sendt',
'gateway_help_1' => ':link to sign up for Authorize.net.',
'gateway_help_2' => ':link to sign up for Authorize.net.',
'gateway_help_17' => ':link to get your PayPal API signature.',
'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_cloud_header' => 'Go Pro for more invoice designs',
'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $20',
'more_designs_self_host_text' => '',
'buy' => 'Buy',
'bought_designs' => 'Successfully added additional invoice designs',
'sent' => 'sent',
'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
); );

View File

@ -450,5 +450,16 @@ return array(
'buy' => 'Buy', 'buy' => 'Buy',
'bought_designs' => 'Successfully added additional invoice designs', 'bought_designs' => 'Successfully added additional invoice designs',
'sent' => 'sent',
'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
'vat_number' => 'Vat Number',
); );

View File

@ -466,7 +466,17 @@ return array(
'more_designs_self_host_text' => '', 'more_designs_self_host_text' => '',
'buy' => 'Buy', 'buy' => 'Buy',
'bought_designs' => 'Successfully added additional invoice designs', 'bought_designs' => 'Successfully added additional invoice designs',
'sent' => 'sent', 'sent' => 'sent',
'id_number' => 'ID Number',
'vat_number' => 'VAT Number',
'timesheets' => 'Timesheets', 'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
'vat_number' => 'Vat Number',
); );

View File

@ -430,4 +430,15 @@ return array(
'buy' => 'Buy', 'buy' => 'Buy',
'bought_designs' => 'Successfully added additional invoice designs', 'bought_designs' => 'Successfully added additional invoice designs',
'sent' => 'sent',
'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
'vat_number' => 'Vat Number',
); );

View File

@ -9,7 +9,7 @@ return array(
'work_phone' => 'Téléphone', 'work_phone' => 'Téléphone',
'address' => 'Adresse', 'address' => 'Adresse',
'address1' => 'Rue', 'address1' => 'Rue',
'address2' => 'Appt/Batiment', 'address2' => 'Appt/Bâtiment',
'city' => 'Ville', 'city' => 'Ville',
'state' => 'Région/Département', 'state' => 'Région/Département',
'postal_code' => 'Code Postal', 'postal_code' => 'Code Postal',
@ -18,7 +18,7 @@ return array(
'first_name' => 'Prénom', 'first_name' => 'Prénom',
'last_name' => 'Nom', 'last_name' => 'Nom',
'phone' => 'Téléphone', 'phone' => 'Téléphone',
'email' => 'Email', 'email' => 'Courriel',
'additional_info' => 'Informations complémentaires', 'additional_info' => 'Informations complémentaires',
'payment_terms' => 'Conditions de paiement', 'payment_terms' => 'Conditions de paiement',
'currency_id' => 'Devise', 'currency_id' => 'Devise',
@ -35,13 +35,13 @@ return array(
'invoice_number_short' => 'Facture #', 'invoice_number_short' => 'Facture #',
'po_number' => 'Numéro du bon de commande', 'po_number' => 'Numéro du bon de commande',
'po_number_short' => 'Bon de commande #', 'po_number_short' => 'Bon de commande #',
'frequency_id' => 'Fréquence', //litteral translation : Combien de fois 'frequency_id' => 'Fréquence',
'discount' => 'Remise', //can be "rabais" or "réduction" 'discount' => 'Remise',
'taxes' => 'Taxes', 'taxes' => 'Taxes',
'tax' => 'Taxe', 'tax' => 'Taxe',
'item' => 'Ligne', //I'm not sure, I need the context : screenshot ? 'item' => 'Article',
'description' => 'Description', 'description' => 'Description',
'unit_cost' => 'Coût à l\'unité', 'unit_cost' => 'Coût unitaire',
'quantity' => 'Quantité', 'quantity' => 'Quantité',
'line_total' => 'Total', 'line_total' => 'Total',
'subtotal' => 'Total', 'subtotal' => 'Total',
@ -67,7 +67,7 @@ return array(
'clone_invoice' => 'Dupliquer la facture', 'clone_invoice' => 'Dupliquer la facture',
'archive_invoice' => 'Archiver la facture', 'archive_invoice' => 'Archiver la facture',
'delete_invoice' => 'Supprimer la facture', 'delete_invoice' => 'Supprimer la facture',
'email_invoice' => 'Envoir la facture par email', 'email_invoice' => 'Envoyer la facture par courriel',
'enter_payment' => 'Saisissez un paiement', 'enter_payment' => 'Saisissez un paiement',
'tax_rates' => 'Taux de taxe', 'tax_rates' => 'Taux de taxe',
'rate' => 'Taux', 'rate' => 'Taux',
@ -88,16 +88,16 @@ return array(
'company_details' => 'Informations sur l\'entreprise', 'company_details' => 'Informations sur l\'entreprise',
'online_payments' => 'Paiements en ligne', 'online_payments' => 'Paiements en ligne',
'notifications' => 'Notifications', 'notifications' => 'Notifications',
'import_export' => 'Import/Export', 'import_export' => 'Importer/Exporter',
'done' => 'Valider', 'done' => 'Valider',
'save' => 'Sauvegarder', 'save' => 'Sauvegarder',
'create' => 'Créer', 'create' => 'Créer',
'upload' => 'Envoyer', 'upload' => 'Envoyer',
'import' => 'Import', 'import' => 'Importer',
'download' => 'Télécharger', 'download' => 'Télécharger',
'cancel' => 'Annuler', 'cancel' => 'Annuler',
'close' => 'Fermer', 'close' => 'Fermer',
'provide_email' => 'Veuillez renseigner une adresse email valide', 'provide_email' => 'Veuillez renseigner une adresse courriel valide',
'powered_by' => 'Propulsé par', 'powered_by' => 'Propulsé par',
'no_items' => 'Aucun élément', 'no_items' => 'Aucun élément',
@ -156,8 +156,8 @@ return array(
'credit_date' => 'Date de crédit', 'credit_date' => 'Date de crédit',
'empty_table' => 'Aucune donnée disponible dans la table', 'empty_table' => 'Aucune donnée disponible dans la table',
'select' => 'Sélectionner', 'select' => 'Sélectionner',
'edit_client' => 'Editer le Client', 'edit_client' => 'Éditer le Client',
'edit_invoice' => 'Editer la Facture', 'edit_invoice' => 'Éditer la Facture',
// client view page // client view page
'create_invoice' => 'Créer une facture', 'create_invoice' => 'Créer une facture',
@ -177,7 +177,7 @@ return array(
'amount' => 'Montant', 'amount' => 'Montant',
// account/company pages // account/company pages
'work_email' => 'Email', 'work_email' => 'Courriel',
'language_id' => 'Langage', 'language_id' => 'Langage',
'timezone_id' => 'Fuseau horaire', 'timezone_id' => 'Fuseau horaire',
'date_format_id' => 'Format de la date', 'date_format_id' => 'Format de la date',
@ -188,14 +188,14 @@ return array(
'logo_help' => 'Formats supportés: JPEG, GIF et PNG. Hauteur recommandé: 120px', 'logo_help' => 'Formats supportés: JPEG, GIF et PNG. Hauteur recommandé: 120px',
'payment_gateway' => 'Passerelle de paiement', 'payment_gateway' => 'Passerelle de paiement',
'gateway_id' => 'Fournisseur', 'gateway_id' => 'Fournisseur',
'email_notifications' => 'Notifications par email', 'email_notifications' => 'Notifications par courriel',
'email_sent' => 'm\'envoyer un email quand une facture est <b>envoyée</b>', 'email_sent' => 'm\'envoyer un courriel quand une facture est <b>envoyée</b>',
'email_viewed' => 'm\'envoyer un email quand une facture est <b>vue</b>', 'email_viewed' => 'm\'envoyer un courriel quand une facture est <b>vue</b>',
'email_paid' => 'm\'envoyer un email quand une facture est <b>payée</b>', 'email_paid' => 'm\'envoyer un courriel quand une facture est <b>payée</b>',
'site_updates' => 'Mises à jour du site', 'site_updates' => 'Mises à jour du site',
'custom_messages' => 'Messages personnalisés', 'custom_messages' => 'Messages personnalisés',
'default_invoice_terms' => 'Définir comme les conditions par défaut', 'default_invoice_terms' => 'Définir comme les conditions par défaut',
'default_email_footer' => 'Définir comme la signature d\'email par défaut', 'default_email_footer' => 'Définir comme la signature de courriel par défaut',
'import_clients' => 'Importer des données clients', 'import_clients' => 'Importer des données clients',
'csv_file' => 'Sélectionner un fichier CSV', 'csv_file' => 'Sélectionner un fichier CSV',
'export_clients' => 'Exporter des données clients', 'export_clients' => 'Exporter des données clients',
@ -216,8 +216,8 @@ return array(
'invoice_error' => 'Veuillez vous assurer de sélectionner un client et de corriger les erreurs', 'invoice_error' => 'Veuillez vous assurer de sélectionner un client et de corriger les erreurs',
'limit_clients' => 'Désolé, cela dépasse la limite de :count clients', 'limit_clients' => 'Désolé, cela dépasse la limite de :count clients',
'payment_error' => 'Il y a eu une erreur lors du traitement de votre paiement. Veuillez réessayer ultérieurement', 'payment_error' => 'Il y a eu une erreur lors du traitement de votre paiement. Veuillez réessayer ultérieurement',
'registration_required' => 'Veuillez vous enregistrer pour envoyer une facture par email', 'registration_required' => 'Veuillez vous enregistrer pour envoyer une facture par courriel',
'confirmation_required' => 'Veuillez confirmer votre adresse email', 'confirmation_required' => 'Veuillez confirmer votre adresse courriel',
'updated_client' => 'Client modifié avec succès', 'updated_client' => 'Client modifié avec succès',
'created_client' => 'Client créé avec succès', 'created_client' => 'Client créé avec succès',
@ -229,7 +229,7 @@ return array(
'updated_invoice' => 'Facture modifiée avec succès', 'updated_invoice' => 'Facture modifiée avec succès',
'created_invoice' => 'Facture créée avec succès', 'created_invoice' => 'Facture créée avec succès',
'cloned_invoice' => 'Facture dupliquée avec succès', 'cloned_invoice' => 'Facture dupliquée avec succès',
'emailed_invoice' => 'Facture envoyée par email avec succès', 'emailed_invoice' => 'Facture envoyée par courriel avec succès',
'and_created_client' => 'et client créé', 'and_created_client' => 'et client créé',
'archived_invoice' => 'Facture archivée avec succès', 'archived_invoice' => 'Facture archivée avec succès',
'archived_invoices' => ':count factures archivées avec succès', 'archived_invoices' => ':count factures archivées avec succès',
@ -260,13 +260,13 @@ return array(
'email_salutation' => 'Cher :name,', 'email_salutation' => 'Cher :name,',
'email_signature' => 'Cordialement,', 'email_signature' => 'Cordialement,',
'email_from' => 'L\'équipe InvoiceNinja', 'email_from' => 'L\'équipe InvoiceNinja',
'user_email_footer' => 'Pour modifier vos paramètres de notification par email, veuillez visiter '.SITE_URL.'/company/notifications', 'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter '.SITE_URL.'/company/notifications',
'invoice_link_message' => 'Pour voir la facture de votre client cliquez sur le lien ci-après :', '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_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', 'notification_invoice_sent_subject' => 'La facture :invoice a été envoyée au client :client',
'notification_invoice_viewed_subject' => 'La facture :invoice a été vue par le client :client', 'notification_invoice_viewed_subject' => 'La facture :invoice a été vue par le client :client',
'notification_invoice_paid' => 'Un paiement de :amount a été effectué par le client :client concernant la facture :invoice.', 'notification_invoice_paid' => 'Un paiement de :amount a été effectué par le client :client concernant la facture :invoice.',
'notification_invoice_sent' => 'Le client suivant :client a reçu par email la facture :invoice d\'un montant de :amount', 'notification_invoice_sent' => 'Le client suivant :client a reçu par courriel la facture :invoice d\'un montant de :amount',
'notification_invoice_viewed' => 'Le client suivant :client a vu la facture :invoice d\'un montant de :amount', 'notification_invoice_viewed' => 'Le client suivant :client a vu la facture :invoice d\'un montant de :amount',
'reset_password' => 'Vous pouvez réinitialiser votre mot de passe en cliquant sur le lien suivant :', 'reset_password' => 'Vous pouvez réinitialiser votre mot de passe en cliquant sur le lien suivant :',
'reset_password_footer' => 'Si vous n\'avez pas effectué de demande de réinitalisation de mot de passe veuillez contacter notre support :' . CONTACT_EMAIL, 'reset_password_footer' => 'Si vous n\'avez pas effectué de demande de réinitalisation de mot de passe veuillez contacter notre support :' . CONTACT_EMAIL,
@ -281,10 +281,10 @@ return array(
// Security alerts // Security alerts
'confide' => array( 'confide' => array(
'too_many_attempts' => 'Trop de tentatives. Essayez à nouveau dans quelques minutes.', 'too_many_attempts' => 'Trop de tentatives. Essayez à nouveau dans quelques minutes.',
'wrong_credentials' => 'Email ou mot de passe incorrect', 'wrong_credentials' => 'Courriel ou mot de passe incorrect',
'confirmation' => 'Votre compte a été validé !', 'confirmation' => 'Votre compte a été validé !',
'wrong_confirmation' => 'Code de confirmation incorrect.', 'wrong_confirmation' => 'Code de confirmation incorrect.',
'password_forgot' => 'Les informations de réinitialisation de votre mot de passe vous ont été envoyées par email.', 'password_forgot' => 'Les informations de réinitialisation de votre mot de passe vous ont été envoyées par courriel.',
'password_reset' => 'Votre mot de passe a été modifié avec succès.', 'password_reset' => 'Votre mot de passe a été modifié avec succès.',
'wrong_password_reset' => 'Mot de passe incorrect. Veuillez réessayer', 'wrong_password_reset' => 'Mot de passe incorrect. Veuillez réessayer',
), ),
@ -299,10 +299,10 @@ return array(
'sign_up_to_save' => 'Connectez vous pour sauvegarder votre travail', 'sign_up_to_save' => 'Connectez vous pour sauvegarder votre travail',
'agree_to_terms' =>'J\'accepte les conditions d\'utilisation d\'Invoice ninja :terms', 'agree_to_terms' =>'J\'accepte les conditions d\'utilisation d\'Invoice ninja :terms',
'terms_of_service' => 'Conditions d\'utilisation', 'terms_of_service' => 'Conditions d\'utilisation',
'email_taken' => 'L\'adresse email est déjà existante', 'email_taken' => 'L\'adresse courriel existe déjà',
'working' => 'En cours', 'working' => 'En cours',
'success' => 'Succès', 'success' => 'Succès',
'success_message' => 'Inscription réussie avec succès. Veuillez cliquer sur le lien dans l\'email de confirmation de compte pour vérifier votre adresse email.', 'success_message' => 'Inscription réussie avec succès. Veuillez cliquer sur le lien dans le courriel de confirmation de compte pour vérifier votre adresse courriel.',
'erase_data' => 'Cela supprimera vos données de façon permanente.', 'erase_data' => 'Cela supprimera vos données de façon permanente.',
'password' => 'Mot de passe', 'password' => 'Mot de passe',
@ -316,7 +316,7 @@ return array(
'client_fields' => 'Champs client', 'client_fields' => 'Champs client',
'field_label' => 'Nom du champ', 'field_label' => 'Nom du champ',
'field_value' => 'Valeur du champ', 'field_value' => 'Valeur du champ',
'edit' => 'Editer', 'edit' => 'Éditer',
'view_as_recipient' => 'Voir en tant que destinataire', 'view_as_recipient' => 'Voir en tant que destinataire',
// product management // product management
@ -328,7 +328,7 @@ return array(
'update_products' => 'Mise à jour auto des produits', 'update_products' => 'Mise à jour auto des produits',
'update_products_help' => 'La mise à jour d\'une facture entraîne la <b>mise à jour des produits</b>', 'update_products_help' => 'La mise à jour d\'une facture entraîne la <b>mise à jour des produits</b>',
'create_product' => 'Nouveau produit', 'create_product' => 'Nouveau produit',
'edit_product' => 'Editer Produit', 'edit_product' => 'Éditer Produit',
'archive_product' => 'Archiver Produit', 'archive_product' => 'Archiver Produit',
'updated_product' => 'Produit mis à jour', 'updated_product' => 'Produit mis à jour',
'created_product' => 'Produit créé', 'created_product' => 'Produit créé',
@ -341,51 +341,51 @@ return array(
'specify_colors' => 'Spécifiez les couleurs', 'specify_colors' => 'Spécifiez les couleurs',
'specify_colors_label' => 'Sélectionnez les couleurs utilisés dans les factures', 'specify_colors_label' => 'Sélectionnez les couleurs utilisés dans les factures',
'chart_builder' => 'Chart Builder', 'chart_builder' => 'Concepteur de graphiques',
'ninja_email_footer' => 'Use :site to invoice your clients and get paid online for free!', 'ninja_email_footer' => 'Utilisez :site pour facturer vos clients et être payés en ligne gratuitement!',
'go_pro' => 'Go Pro', 'go_pro' => 'Passez au Plan Pro',
// Quotes // Quotes
'quote' => 'Devis', 'quote' => 'Soumission',
'quotes' => 'Devis', 'quotes' => 'Soumissions',
'quote_number' => 'Devis numéro', 'quote_number' => 'Soumission numéro',
'quote_number_short' => 'Devis N°', 'quote_number_short' => 'Soumission #',
'quote_date' => 'Date du devis', 'quote_date' => 'Date de soumission',
'quote_total' => 'Montant du devis', 'quote_total' => 'Montant de la soumis',
'your_quote' => 'Votre Devis', 'your_quote' => 'Votre Soumission',
'total' => 'Total', 'total' => 'Total',
'clone' => 'Dupliquer', 'clone' => 'Dupliquer',
'new_quote' => 'Nouveau devis', 'new_quote' => 'Nouvelle soumission',
'create_quote' => 'Créer un devis', 'create_quote' => 'Créer une soumission',
'edit_quote' => 'Editer le devis', 'edit_quote' => 'Éditer la soumission',
'archive_quote' => 'Archiver le devis', 'archive_quote' => 'Archiver la soumission',
'delete_quote' => 'Supprimer le devis', 'delete_quote' => 'Supprimer la soumission',
'save_quote' => 'Enregistrer le devis', 'save_quote' => 'Enregistrer la soumission',
'email_quote' => 'Envoyer le devis par mail', 'email_quote' => 'Envoyer la soumission par courriel',
'clone_quote' => 'Dupliquer le devis', 'clone_quote' => 'Dupliquer la soumission',
'convert_to_invoice' => 'Convertir en facture', 'convert_to_invoice' => 'Convertir en facture',
'view_invoice' => 'Nouvelle facture', 'view_invoice' => 'Nouvelle facture',
'view_quote' => 'Voir le devis', 'view_quote' => 'Voir la soumission',
'view_client' => 'Voir le client', 'view_client' => 'Voir le client',
'updated_quote' => 'Devis mis à jour', 'updated_quote' => 'Soumission mise à jour',
'created_quote' => 'Devis créé', 'created_quote' => 'Soumission créée',
'cloned_quote' => 'Devis dupliqué avec succès', 'cloned_quote' => 'Soumission dupliquée avec succès',
'emailed_quote' => 'Devis envoyé par email', 'emailed_quote' => 'Soumission envoyée par courriel',
'archived_quote' => 'Devis archivé', 'archived_quote' => 'Soumission archivée',
'archived_quotes' => ':count devis ont bien été archivé', 'archived_quotes' => ':count soumissions ont bien été archivés',
'deleted_quote' => 'Devis supprimé', 'deleted_quote' => 'Soumission supprimée',
'deleted_quotes' => ':count devis ont bien été supprimés', 'deleted_quotes' => ':count soumissions ont bien été supprimés',
'converted_to_invoice' => 'Le devis a bien été converti en facture', 'converted_to_invoice' => 'La soumission a bien été convertie en facture',
'quote_subject' => 'New quote from :account', 'quote_subject' => 'Nouvelle soumission de :account',
'quote_message' => 'To view your quote for :amount, click the link below.', 'quote_message' => 'Pour visionner votre soumission de :amount, cliquez le lien ci-dessous.',
'quote_link_message' => 'To view your client quote click the link below:', 'quote_link_message' => 'Pour visionner votre soumission, cliquez le lien ci-dessous:',
'notification_quote_sent_subject' => 'Quote :invoice was sent to :client', 'notification_quote_sent_subject' => 'La soumission :invoice a été envoyée à :client',
'notification_quote_viewed_subject' => 'Quote :invoice was viewed by :client', 'notification_quote_viewed_subject' => 'La soumission :invoice a été visionnée par :client',
'notification_quote_sent' => 'The following client :client was emailed Quote :invoice for :amount.', 'notification_quote_sent' => 'La facture :invoice de :amount a été envoyée au client :client.',
'notification_quote_viewed' => 'The following client :client viewed Quote :invoice for :amount.', 'notification_quote_viewed' => 'La facture :invoice de :amount a été visionée par le client :client.',
'session_expired' => 'Votre session a expiré.', 'session_expired' => 'Votre session a expiré.',
@ -396,45 +396,45 @@ return array(
'hide_paid_to_date' => 'Hide paid to date', '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.', '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', 'charge_taxes' => 'Factures des taxes',
'user_management' => 'Gestion des utilisateurs', 'user_management' => 'Gestion des utilisateurs',
'add_user' => 'Ajouter utilisateur', 'add_user' => 'Ajouter utilisateur',
'send_invite' => 'Envoyer invitation', 'send_invite' => 'Envoyer invitation',
'sent_invite' => 'Invitation envoyés', 'sent_invite' => 'Invitation envoyés',
'updated_user' => 'Utilisateur mis à jour', 'updated_user' => 'Utilisateur mis à jour',
'invitation_message' => 'Vous avez été invité par :invitor. ', 'invitation_message' => 'Vous avez été invité par :invitor. ',
'register_to_add_user' => 'Please sign up to add a user', 'register_to_add_user' => 'Veuillez vous enregistrer pour ajouter un utilisateur',
'user_state' => 'Etat', 'user_state' => 'État',
'edit_user' => 'Editer l\'utilisateur', 'edit_user' => 'Éditer l\'utilisateur',
'delete_user' => 'Supprimer l\'utilisateur', 'delete_user' => 'Supprimer l\'utilisateur',
'active' => 'Actif', 'active' => 'Actif',
'pending' => 'En attente', 'pending' => 'En attente',
'deleted_user' => 'Utilisateur supprimé', 'deleted_user' => 'Utilisateur supprimé',
'limit_users' => 'Sorry, this will exceed the limit of ' . MAX_NUM_USERS . ' users', 'limit_users' => 'Désolé, ceci excédera la limite de ' . MAX_NUM_USERS . ' utilisateurs',
'confirm_email_invoice' => 'Are you sure you want to email this invoice?', 'confirm_email_invoice' => 'Voulez-vous vraiment envoyer cette facture par courriel?',
'confirm_email_quote' => 'Are you sure you want to email this quote?', 'confirm_email_quote' => 'Voulez-vous vraiment envoyer cette soumission par courriel?',
'confirm_recurring_email_invoice' => 'Recurring is enabled, are you sure you want this invoice emailed?', 'confirm_recurring_email_invoice' => 'Les factures récurrentes sont activées, voulez-vous vraiment envoyer cette facture par courriel?',
'cancel_account' => 'Supprimé le compte', 'cancel_account' => 'Supprimer le compte',
'cancel_account_message' => 'Warning: This will permanently erase all of your data, there is no undo.', 'cancel_account_message' => 'Attention: Ceci supprimera de façon permanente toutes vos données; cette action est irréversible.',
'go_back' => 'Retour', 'go_back' => 'Retour',
'data_visualizations' => 'Data Visualizations', 'data_visualizations' => 'Visualisation des données',
'sample_data' => 'Sample data shown', 'sample_data' => 'Données fictives présentées',
'hide' => 'Cacher', 'hide' => 'Cacher',
'new_version_available' => 'A new version of :releases_link is available. You\'re running v:user_version, the latest is v:latest_version', 'new_version_available' => 'Une nouvelle version de :releases_link est disponible. Vous utilisez v:user_version, la plus récente est v:latest_version',
'invoice_settings' => 'Paramètre des factures', 'invoice_settings' => 'Paramètres des factures',
'invoice_number_prefix' => 'Invoice Number Prefix', 'invoice_number_prefix' => 'Préfixe du numéro de facture',
'invoice_number_counter' => 'Invoice Number Counter', 'invoice_number_counter' => 'Compteur du numéro de facture',
'quote_number_prefix' => 'Quote Number Prefix', 'quote_number_prefix' => 'Préfixe du numéro de soumission',
'quote_number_counter' => 'Quote Number Counter', 'quote_number_counter' => 'Compteur du numéro de soumission',
'share_invoice_counter' => 'Share invoice counter', 'share_invoice_counter' => 'Partager le compteur de facture',
'invoice_issued_to' => 'Invoice issued to', 'invoice_issued_to' => 'Facture destinée à',
'invalid_counter' => 'To prevent a possible conflict please set either an invoice or quote number prefix', 'invalid_counter' => 'To prevent a possible conflict please set either an invoice or quote number prefix',
'mark_sent' => 'Maquer comme envoyé', 'mark_sent' => 'Marquer comme envoyé',
'gateway_help_1' => ':link to sign up for Authorize.net.', 'gateway_help_1' => ':link to sign up for Authorize.net.',
'gateway_help_2' => ':link to sign up for Authorize.net.', 'gateway_help_2' => ':link to sign up for Authorize.net.',
@ -442,14 +442,22 @@ return array(
'gateway_help_23' => 'Note: use your secret API key, not your publishable API key.', 'gateway_help_23' => 'Note: use your secret API key, not your publishable API key.',
'gateway_help_27' => ':link to sign up for TwoCheckout.', 'gateway_help_27' => ':link to sign up for TwoCheckout.',
'more_designs' => 'More designs', 'more_designs' => 'Plus de modèles',
'more_designs_title' => 'Additional Invoice Designs', 'more_designs_title' => 'Modèles de factures additionnels',
'more_designs_cloud_header' => 'Go Pro for more invoice designs', 'more_designs_cloud_header' => 'Passez au Plan Pro pour plus de modèles',
'more_designs_cloud_text' => '', 'more_designs_cloud_text' => '',
'more_designs_self_host_header' => 'Get 6 more invoice designs for just $20', 'more_designs_self_host_header' => 'Obtenez 6 modèles de factures additionnels pour seulement 20$',
'more_designs_self_host_text' => '', 'more_designs_self_host_text' => '',
'buy' => 'Acheter', 'buy' => 'Acheter',
'bought_designs' => 'Successfully added additional invoice designs', 'bought_designs' => 'Les nouveaux modèles ont été ajoutés avec succès',
'sent' => 'sent',
'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
'vat_number' => 'Vat Number',
); );

View File

@ -452,5 +452,16 @@ return array(
'bought_designs' => 'Successfully added additional invoice designs', 'bought_designs' => 'Successfully added additional invoice designs',
'sent' => 'sent',
'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
'vat_number' => 'Vat Number',
); );

View File

@ -460,5 +460,17 @@ return array(
'bought_designs' => 'Successfully added additional invoice designs', 'bought_designs' => 'Successfully added additional invoice designs',
'sent' => 'sent',
'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
'vat_number' => 'Vat Number',
); );

View File

@ -459,5 +459,16 @@ return array(
'bought_designs' => 'Successfully added additional invoice designs', 'bought_designs' => 'Successfully added additional invoice designs',
'sent' => 'sent',
'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
'vat_number' => 'Vat Number',
); );

View File

@ -453,4 +453,16 @@ return array(
'bought_designs' => 'Successfully added additional invoice designs', 'bought_designs' => 'Successfully added additional invoice designs',
'sent' => 'sent',
'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
'vat_number' => 'Vat Number',
); );

View File

@ -441,4 +441,17 @@ return array(
'sent' => 'sent',
'timesheets' => 'Timesheets',
'payment_title' => 'Enter Your Billing Address and Credit Card information',
'payment_cvv' => '*This is the 3-4 digit number onthe back of your card',
'payment_footer1' => '*Billing address must match address accociated with credit card.',
'payment_footer2' => '*Please click "PAY NOW" only once - transaction may take up to 1 minute to process.',
'vat_number' => 'Vat Number',
); );

View File

@ -131,11 +131,23 @@ class Client extends EntityModel
return $str; return $str;
} }
public function getIdNumber()
{
$str = '';
if ($this->id_number)
{
$str .= '<i class="fa fa-vat-number" style="width: 20px"></i>' . $this->vat_number;
}
return $str;
}
public function getVatNumber() public function getVatNumber()
{ {
$str = ''; $str = '';
if ($this->work_phone) if ($this->vat_number)
{ {
$str .= '<i class="fa fa-vat-number" style="width: 20px"></i>' . $this->vat_number; $str .= '<i class="fa fa-vat-number" style="width: 20px"></i>' . $this->vat_number;
} }

View File

@ -95,6 +95,7 @@ class Invoice extends EntityModel
$this->client->setVisible([ $this->client->setVisible([
'name', 'name',
'id_number',
'vat_number', 'vat_number',
'address1', 'address1',
'address2', 'address2',
@ -111,6 +112,7 @@ class Invoice extends EntityModel
$this->account->setVisible([ $this->account->setVisible([
'name', 'name',
'id_number',
'vat_number', 'vat_number',
'address1', 'address1',
'address2', 'address2',

View File

@ -15,16 +15,9 @@ class Mailer {
Mail::send($views, $data, function($message) use ($toEmail, $fromEmail, $fromName, $subject) Mail::send($views, $data, function($message) use ($toEmail, $fromEmail, $fromName, $subject)
{ {
$replyEmail = $fromEmail; $replyEmail = $fromEmail;
$fromEmail = NINJA_FROM_EMAIL;
// We're unable to set the true fromEmail for emails sent from Yahoo or AOL accounts $message->to($toEmail)->from($fromEmail, $fromName)->replyTo($replyEmail, $fromName)->subject($subject);
// http://blog.mandrill.com/yahoos-recent-dmarc-changes-and-how-that-impacts-senders.html
if (strpos($fromEmail, '@yahoo.') !== false || strpos($fromEmail, '@aol.') !== FALSE)
{
$fromEmail = CONTACT_EMAIL;
}
$message->to($toEmail)->from($fromEmail, $fromName)->sender($fromEmail, $fromName)
->replyTo($replyEmail, $fromName)->subject($subject);
}); });
} }
} }

View File

@ -62,6 +62,9 @@ class ClientRepository
if (isset($data['name'])) { if (isset($data['name'])) {
$client->name = trim($data['name']); $client->name = trim($data['name']);
} }
if (isset($data['id_number'])) {
$client->id_number = trim($data['id_number']);
}
if (isset($data['vat_number'])) { if (isset($data['vat_number'])) {
$client->vat_number = trim($data['vat_number']); $client->vat_number = trim($data['vat_number']);
} }
@ -102,7 +105,7 @@ class ClientRepository
$client->industry_id = $data['industry_id'] ? $data['industry_id'] : null; $client->industry_id = $data['industry_id'] ? $data['industry_id'] : null;
} }
if (isset($data['currency_id'])) { if (isset($data['currency_id'])) {
$client->currency_id = $data['currency_id'] ? $data['currency_id'] : 1; $client->currency_id = $data['currency_id'] ? $data['currency_id'] : null;
} }
if (isset($data['payment_terms'])) { if (isset($data['payment_terms'])) {
$client->payment_terms = $data['payment_terms']; $client->payment_terms = $data['payment_terms'];

View File

@ -9,7 +9,7 @@ use TaxRate;
class InvoiceRepository class InvoiceRepository
{ {
public function getInvoices($accountId, $clientPublicId = false, $filter = false) public function getInvoices($accountId, $clientPublicId = false, $entityType = ENTITY_INVOICE, $filter = false)
{ {
$query = \DB::table('invoices') $query = \DB::table('invoices')
->join('clients', 'clients.id', '=','invoices.client_id') ->join('clients', 'clients.id', '=','invoices.client_id')
@ -22,7 +22,7 @@ class InvoiceRepository
->where('contacts.is_primary', '=', true) ->where('contacts.is_primary', '=', true)
->select('clients.public_id as client_public_id', 'invoice_number', 'invoice_status_id', 'clients.name as client_name', 'invoices.public_id', 'amount', 'invoices.balance', 'invoice_date', 'due_date', 'invoice_statuses.name as invoice_status_name', 'clients.currency_id', 'contacts.first_name', 'contacts.last_name', 'contacts.email', 'quote_id', 'quote_invoice_id'); ->select('clients.public_id as client_public_id', 'invoice_number', 'invoice_status_id', 'clients.name as client_name', 'invoices.public_id', 'amount', 'invoices.balance', 'invoice_date', 'due_date', 'invoice_statuses.name as invoice_status_name', 'clients.currency_id', 'contacts.first_name', 'contacts.last_name', 'contacts.email', 'quote_id', 'quote_invoice_id');
if (!\Session::get('show_trash:invoice')) if (!\Session::get('show_trash:' . $entityType))
{ {
$query->where('invoices.deleted_at', '=', null); $query->where('invoices.deleted_at', '=', null);
} }
@ -85,7 +85,7 @@ class InvoiceRepository
public function getDatatable($accountId, $clientPublicId = null, $entityType, $search) public function getDatatable($accountId, $clientPublicId = null, $entityType, $search)
{ {
$query = $this->getInvoices($accountId, $clientPublicId, $search) $query = $this->getInvoices($accountId, $clientPublicId, $entityType, $search)
->where('invoices.is_quote', '=', $entityType == ENTITY_QUOTE ? true : false); ->where('invoices.is_quote', '=', $entityType == ENTITY_QUOTE ? true : false);
$table = \Datatable::query($query); $table = \Datatable::query($query);

View File

@ -247,6 +247,7 @@ define('NINJA_GATEWAY_ID', GATEWAY_AUTHORIZE_NET);
define('NINJA_GATEWAY_CONFIG', '{"apiLoginId":"626vWcD5","transactionKey":"4bn26TgL9r4Br4qJ","testMode":"","developerMode":""}'); define('NINJA_GATEWAY_CONFIG', '{"apiLoginId":"626vWcD5","transactionKey":"4bn26TgL9r4Br4qJ","testMode":"","developerMode":""}');
define('NINJA_URL', 'https://www.invoiceninja.com'); define('NINJA_URL', 'https://www.invoiceninja.com');
define('NINJA_VERSION', '1.5.1'); define('NINJA_VERSION', '1.5.1');
define('NINJA_FROM_EMAIL', 'maildelivery@invoiceninja.com');
define('RELEASES_URL', 'https://github.com/hillelcoren/invoice-ninja/releases/'); define('RELEASES_URL', 'https://github.com/hillelcoren/invoice-ninja/releases/');
define('COUNT_FREE_DESIGNS', 4); define('COUNT_FREE_DESIGNS', 4);

View File

@ -29,6 +29,7 @@
{{ Former::legend('details') }} {{ Former::legend('details') }}
{{ Former::text('name') }} {{ Former::text('name') }}
{{ Former::text('id_number') }}
{{ Former::text('vat_number') }} {{ Former::text('vat_number') }}
{{ Former::text('work_email') }} {{ Former::text('work_email') }}
{{ Former::text('work_phone') }} {{ Former::text('work_phone') }}

View File

@ -4,6 +4,7 @@
{{ Former::legend('Organization') }} {{ Former::legend('Organization') }}
{{ Former::text('name') }} {{ Former::text('name') }}
{{ Former::text('id_number') }}
{{ Former::text('vat_number') }} {{ Former::text('vat_number') }}
{{ Former::text('work_phone')->label('Phone') }} {{ Former::text('work_phone')->label('Phone') }}
{{ Former::textarea('notes') }} {{ Former::textarea('notes') }}

View File

@ -23,6 +23,7 @@
{{ Former::legend('organization') }} {{ Former::legend('organization') }}
{{ Former::text('name')->data_bind("attr { placeholder: placeholderName }") }} {{ Former::text('name')->data_bind("attr { placeholder: placeholderName }") }}
{{ Former::text('id_number') }}
{{ Former::text('vat_number') }} {{ Former::text('vat_number') }}
{{ Former::text('website') }} {{ Former::text('website') }}
{{ Former::text('work_phone') }} {{ Former::text('work_phone') }}

View File

@ -39,6 +39,7 @@
<div class="col-md-3"> <div class="col-md-3">
<h3>{{ trans('texts.details') }}</h3> <h3>{{ trans('texts.details') }}</h3>
<p>{{ $client->getIdNumber() }}</p>
<p>{{ $client->getVatNumber() }}</p> <p>{{ $client->getVatNumber() }}</p>
<p>{{ $client->getAddress() }}</p> <p>{{ $client->getAddress() }}</p>
<p>{{ $client->getCustomFields() }}</p> <p>{{ $client->getCustomFields() }}</p>

View File

@ -341,6 +341,7 @@
{{ Former::legend('organization') }} {{ Former::legend('organization') }}
{{ Former::text('name')->data_bind("value: name, valueUpdate: 'afterkeydown', attr { placeholder: name.placeholder }") }} {{ Former::text('name')->data_bind("value: name, valueUpdate: 'afterkeydown', attr { placeholder: name.placeholder }") }}
{{ Former::text('id_number')->data_bind("value: id_number, valueUpdate: 'afterkeydown'") }}
{{ Former::text('vat_number')->data_bind("value: vat_number, valueUpdate: 'afterkeydown'") }} {{ Former::text('vat_number')->data_bind("value: vat_number, valueUpdate: 'afterkeydown'") }}
{{ Former::text('website')->data_bind("value: website, valueUpdate: 'afterkeydown'") }} {{ Former::text('website')->data_bind("value: website, valueUpdate: 'afterkeydown'") }}
@ -1222,6 +1223,7 @@
var self = this; var self = this;
self.public_id = ko.observable(0); self.public_id = ko.observable(0);
self.name = ko.observable(''); self.name = ko.observable('');
self.id_number = ko.observable('');
self.vat_number = ko.observable(''); self.vat_number = ko.observable('');
self.work_phone = ko.observable(''); self.work_phone = ko.observable('');
self.custom_value1 = ko.observable(''); self.custom_value1 = ko.observable('');

View File

@ -66,7 +66,7 @@
<div class="col-md-7 info"> <div class="col-md-7 info">
<div class="col-md-12 alignCenterText" > <div class="col-md-12 alignCenterText" >
Enter Your Billing Address and Credit Card information {{ trans('texts.payment_title') }}
</div> </div>
<div class="row"> <div class="row">
@ -113,10 +113,10 @@
<div class="row"> <div class="row">
<h5 class="col-md-12 boldText" > <h5 class="col-md-12 boldText" >
*Billing address must match address accociated with credit card. {{ trans('texts.payment_footer1') }}
</h5> </h5>
<h5 class="col-md-12 boldText"> <h5 class="col-md-12 boldText">
*Please click "PAY NOW" only once - transaction may take up to 1 minute to process {{ trans('texts.payment_footer2') }}
</h5> </h5>
</div> </div>
@ -141,7 +141,7 @@
<div class="col-md-5"> <div class="col-md-5">
<div class="col-md-12 alignCenterText" > <div class="col-md-12 alignCenterText" >
Balance Due $ {{ trans('texts.balance_due') . ' ' . Utils::formatMoney($amount, $currencyId) }}
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<div class="card"> <div class="card">
@ -189,7 +189,7 @@
{{ Former::text('cvv') }} {{ Former::text('cvv') }}
</div> </div>
<div> <div>
<h5 class="boldText" style="margin-top: 8%;margin-left: 5%;"> *This is the 3-4 digit number onthe back of your card</h5> <h5 class="boldText" style="margin-top: 8%;margin-left: 5%;">{{ trans('texts.payment_cvv') }}</h5>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<!-- <p><span class="glyphicon glyphicon-credit-card" style="margin-right: 10px;"></span><a href="#">Where Do I find CVV?</a></p> --> <!-- <p><span class="glyphicon glyphicon-credit-card" style="margin-right: 10px;"></span><a href="#">Where Do I find CVV?</a></p> -->

View File

@ -117,7 +117,7 @@
</div> </div>
<div class="customMenuDiv" > <div class="customMenuDiv" >
<span class="img-wrap shiftLeft" ><img src="{{ asset('images/BestInClassSecurity.png') }}"></span> <span class="img-wrap shiftLeft" ><img src="{{ asset('images/BestInClassSecurity.png') }}"></span>
<span class="customSubMenu shiftLeft"> Best-in-class data security </span> <span class="customSubMenu shiftLeft"> Best-in-class security </span>
</div> </div>
<div class="customMenuDiv" > <div class="customMenuDiv" >

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -254,7 +254,7 @@ a .cta:hover span {
.hero1.background { .hero1.background {
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center center; background-position: center center;
background-attachment: fixed; /*background-attachment: fixed;*/
background-size: cover; background-size: cover;
min-height: 500px; min-height: 500px;
} }

View File

@ -707,6 +707,11 @@ box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2);
.plans-table a .cta h2 span {background: #1e84a5;} .plans-table a .cta h2 span {background: #1e84a5;}
.checkbox-inline input[type="checkbox"] {
margin-left: 0px !important;
}
#designThumbs img { #designThumbs img {
border: 1px solid #CCCCCC; border: 1px solid #CCCCCC;
} }

View File

@ -576,8 +576,8 @@ function populateInvoiceComboboxes(clientId, invoiceId) {
var client = clientMap[invoice.client.public_id]; var client = clientMap[invoice.client.public_id];
if (!client) continue; // client is deleted/archived if (!client) continue; // client is deleted/archived
$invoiceCombobox.append(new Option(invoice.invoice_number + ' - ' + invoice.invoice_status.name + ' - ' + $invoiceCombobox.append(new Option(invoice.invoice_number + ' - ' + invoice.invoice_status.name + ' - ' +
getClientDisplayName(client) + ' - ' + formatMoney(invoice.amount, invoice.currency_id) + ' | ' + getClientDisplayName(client) + ' - ' + formatMoney(invoice.amount, client.currency_id) + ' | ' +
formatMoney(invoice.balance, invoice.currency_id), invoice.public_id)); formatMoney(invoice.balance, client.currency_id), invoice.public_id));
} }
$('select#invoice').combobox('refresh'); $('select#invoice').combobox('refresh');
}); });
@ -602,7 +602,7 @@ function populateInvoiceComboboxes(clientId, invoiceId) {
var client = clientMap[invoice.client.public_id]; var client = clientMap[invoice.client.public_id];
setComboboxValue($('.invoice-select'), invoice.public_id, (invoice.invoice_number + ' - ' + setComboboxValue($('.invoice-select'), invoice.public_id, (invoice.invoice_number + ' - ' +
invoice.invoice_status.name + ' - ' + getClientDisplayName(client) + ' - ' + invoice.invoice_status.name + ' - ' + getClientDisplayName(client) + ' - ' +
formatMoney(invoice.amount, invoice.currency_id) + ' | ' + formatMoney(invoice.balance, invoice.currency_id))); formatMoney(invoice.amount, client.currency_id) + ' | ' + formatMoney(invoice.balance, client.currency_id)));
$invoiceSelect.trigger('change'); $invoiceSelect.trigger('change');
} else if (clientId) { } else if (clientId) {
var client = clientMap[clientId]; var client = clientMap[clientId];
@ -637,6 +637,7 @@ function displayAccount(doc, invoice, x, y, layout) {
var data1 = [ var data1 = [
account.name, account.name,
account.id_number,
account.vat_number, account.vat_number,
account.work_email, account.work_email,
account.work_phone account.work_phone
@ -675,6 +676,7 @@ function displayClient(doc, invoice, x, y, layout) {
} }
var data = [ var data = [
getClientDisplayName(client), getClientDisplayName(client),
client.id_number,
client.vat_number, client.vat_number,
concatStrings(client.address1, client.address2), concatStrings(client.address1, client.address2),
concatStrings(client.city, client.state, client.postal_code), concatStrings(client.city, client.state, client.postal_code),