mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-29 20:51:09 -04:00 
			
		
		
		
	Compare commits
	
		
			47 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f4a4c05b61 | |||
| 24637bff4a | |||
| 887ad9a73d | |||
| 339099bd34 | |||
| 9b9761aa5a | |||
| 00c917853c | |||
| 122c4f478f | |||
| edc0e115e4 | |||
| b388e7a237 | |||
| 6e3ed9b4f6 | |||
| 338dbb26a1 | |||
| f10e5e9d11 | |||
| 3a046b638c | |||
| 36242c516a | |||
| c8843eb544 | |||
| 37f2b6dfc7 | |||
| c90c14312a | |||
| b5b861bb36 | |||
| ab041743a2 | |||
| 9bcec9bd75 | |||
| f4ca6d4b73 | |||
| 66649590e5 | |||
| 1e8cc475ca | |||
| 98d76a2f92 | |||
| 7b50148c43 | |||
| aef6da8b7b | |||
| 0fb14afc08 | |||
| dad71b04dd | |||
| 80014b02b5 | |||
| 7c2a6700eb | |||
| 7e81013b15 | |||
| f0107129fb | |||
| 04cce64859 | |||
| 3b7637f3cf | |||
| 7333746948 | |||
| 0fa6049298 | |||
| 64be6ce957 | |||
| 0e075c03d8 | |||
| 5de195b56b | |||
| cd60f1b096 | |||
| 8058f9b022 | |||
| a484506029 | |||
| a69f99dc61 | |||
| c3583c98be | |||
| 813e574425 | |||
| ac431ca815 | |||
| dbc5950294 | 
| @ -4,8 +4,6 @@ namespace Crater; | |||||||
| use Illuminate\Database\Eloquent\Model; | use Illuminate\Database\Eloquent\Model; | ||||||
| use Crater\User; | use Crater\User; | ||||||
| use Crater\Country; | use Crater\Country; | ||||||
| use Crater\State; |  | ||||||
| use Crater\City; |  | ||||||
|  |  | ||||||
| class Address extends Model | class Address extends Model | ||||||
| { | { | ||||||
| @ -16,8 +14,8 @@ class Address extends Model | |||||||
|         'name', |         'name', | ||||||
|         'address_street_1', |         'address_street_1', | ||||||
|         'address_street_2', |         'address_street_2', | ||||||
|         'city_id', |         'city', | ||||||
|         'state_id', |         'state', | ||||||
|         'country_id', |         'country_id', | ||||||
|         'zip', |         'zip', | ||||||
|         'phone', |         'phone', | ||||||
| @ -35,14 +33,4 @@ class Address extends Model | |||||||
|     { |     { | ||||||
|         return $this->belongsTo(Country::class); |         return $this->belongsTo(Country::class); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function state() |  | ||||||
|     { |  | ||||||
|         return $this->belongsTo(State::class); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function city() |  | ||||||
|     { |  | ||||||
|         return $this->belongsTo(City::class); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								app/City.php
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								app/City.php
									
									
									
									
									
								
							| @ -1,18 +0,0 @@ | |||||||
| <?php |  | ||||||
| namespace Crater; |  | ||||||
|  |  | ||||||
| use Illuminate\Database\Eloquent\Model; |  | ||||||
| use Crater\State; |  | ||||||
|  |  | ||||||
| class City extends Model |  | ||||||
| { |  | ||||||
|     public function state() |  | ||||||
|     { |  | ||||||
|         return $this->belongsTo(State::class); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function address() |  | ||||||
|     { |  | ||||||
|         return $this->hasMany(Address::class); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -2,15 +2,9 @@ | |||||||
| namespace Crater; | namespace Crater; | ||||||
|  |  | ||||||
| use Illuminate\Database\Eloquent\Model; | use Illuminate\Database\Eloquent\Model; | ||||||
| use Crater\State; |  | ||||||
|  |  | ||||||
| class Country extends Model | class Country extends Model | ||||||
| { | { | ||||||
|     public function states() |  | ||||||
|     { |  | ||||||
|         return $this->hasMany(State::class); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function address() |     public function address() | ||||||
|     { |     { | ||||||
|         return $this->hasMany(Address::class); |         return $this->hasMany(Address::class); | ||||||
|  | |||||||
| @ -24,6 +24,7 @@ class EstimateItem extends Model | |||||||
|         'price' => 'integer', |         'price' => 'integer', | ||||||
|         'total' => 'integer', |         'total' => 'integer', | ||||||
|         'discount' => 'float', |         'discount' => 'float', | ||||||
|  |         'quantity' => 'float', | ||||||
|         'discount_val' => 'integer', |         'discount_val' => 'integer', | ||||||
|         'tax' => 'integer' |         'tax' => 'integer' | ||||||
|     ]; |     ]; | ||||||
|  | |||||||
| @ -56,7 +56,7 @@ class CompanyController extends Controller | |||||||
|  |  | ||||||
|     public function getAdminCompany() |     public function getAdminCompany() | ||||||
|     { |     { | ||||||
|         $user = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city', 'company'])->find(1); |         $user = User::with(['addresses', 'addresses.country', 'company'])->find(1); | ||||||
|  |  | ||||||
|         return response()->json([ |         return response()->json([ | ||||||
|             'user' => $user |             'user' => $user | ||||||
| @ -75,9 +75,9 @@ class CompanyController extends Controller | |||||||
|             $company->addMediaFromRequest('logo')->toMediaCollection('logo'); |             $company->addMediaFromRequest('logo')->toMediaCollection('logo'); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $fields = $request->only(['address_street_1', 'address_street_2', 'city_id', 'state_id', 'country_id', 'zip', 'phone']); |         $fields = $request->only(['address_street_1', 'address_street_2', 'city', 'state', 'country_id', 'zip', 'phone']); | ||||||
|         $address = Address::updateOrCreate(['user_id' => 1], $fields); |         $address = Address::updateOrCreate(['user_id' => 1], $fields); | ||||||
|         $user = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city', 'company'])->find(1); |         $user = User::with(['addresses', 'addresses.country', 'company'])->find(1); | ||||||
|  |  | ||||||
|         return response()->json([ |         return response()->json([ | ||||||
|             'user' => $user, |             'user' => $user, | ||||||
|  | |||||||
| @ -80,8 +80,8 @@ class CustomersController extends Controller | |||||||
|                 $newAddress->name = $address["name"]; |                 $newAddress->name = $address["name"]; | ||||||
|                 $newAddress->address_street_1 = $address["address_street_1"]; |                 $newAddress->address_street_1 = $address["address_street_1"]; | ||||||
|                 $newAddress->address_street_2 = $address["address_street_2"]; |                 $newAddress->address_street_2 = $address["address_street_2"]; | ||||||
|                 $newAddress->city_id = $address["city_id"]; |                 $newAddress->city = $address["city"]; | ||||||
|                 $newAddress->state_id = $address["state_id"]; |                 $newAddress->state = $address["state"]; | ||||||
|                 $newAddress->country_id = $address["country_id"]; |                 $newAddress->country_id = $address["country_id"]; | ||||||
|                 $newAddress->zip = $address["zip"]; |                 $newAddress->zip = $address["zip"]; | ||||||
|                 $newAddress->phone = $address["phone"]; |                 $newAddress->phone = $address["phone"]; | ||||||
| @ -112,11 +112,7 @@ class CustomersController extends Controller | |||||||
|             'billingAddress', |             'billingAddress', | ||||||
|             'shippingAddress', |             'shippingAddress', | ||||||
|             'billingAddress.country', |             'billingAddress.country', | ||||||
|             'billingAddress.state', |  | ||||||
|             'billingAddress.city', |  | ||||||
|             'shippingAddress.country', |             'shippingAddress.country', | ||||||
|             'shippingAddress.state', |  | ||||||
|             'shippingAddress.city', |  | ||||||
|         ])->find($id); |         ])->find($id); | ||||||
|  |  | ||||||
|         return response()->json([ |         return response()->json([ | ||||||
| @ -187,8 +183,8 @@ class CustomersController extends Controller | |||||||
|                 $newAddress->name = $address["name"]; |                 $newAddress->name = $address["name"]; | ||||||
|                 $newAddress->address_street_1 = $address["address_street_1"]; |                 $newAddress->address_street_1 = $address["address_street_1"]; | ||||||
|                 $newAddress->address_street_2 = $address["address_street_2"]; |                 $newAddress->address_street_2 = $address["address_street_2"]; | ||||||
|                 $newAddress->city_id = $address["city_id"]; |                 $newAddress->city = $address["city"]; | ||||||
|                 $newAddress->state_id = $address["state_id"]; |                 $newAddress->state = $address["state"]; | ||||||
|                 $newAddress->country_id = $address["country_id"]; |                 $newAddress->country_id = $address["country_id"]; | ||||||
|                 $newAddress->zip = $address["zip"]; |                 $newAddress->zip = $address["zip"]; | ||||||
|                 $newAddress->phone = $address["phone"]; |                 $newAddress->phone = $address["phone"]; | ||||||
|  | |||||||
| @ -33,10 +33,14 @@ class EnvironmentController extends Controller | |||||||
|      */ |      */ | ||||||
|     public function saveDatabaseEnvironment(DatabaseEnvironmentRequest $request) |     public function saveDatabaseEnvironment(DatabaseEnvironmentRequest $request) | ||||||
|     { |     { | ||||||
|  |         Artisan::call('config:clear'); | ||||||
|  |         Artisan::call('cache:clear'); | ||||||
|  |  | ||||||
|         $results = $this->EnvironmentManager->saveDatabaseVariables($request); |         $results = $this->EnvironmentManager->saveDatabaseVariables($request); | ||||||
|  |  | ||||||
|         if(array_key_exists("success", $results)) { |         if(array_key_exists("success", $results)) { | ||||||
|             Artisan::call('config:clear'); |             Artisan::call('config:clear'); | ||||||
|  |             Artisan::call('cache:clear'); | ||||||
|             Artisan::call('storage:link'); |             Artisan::call('storage:link'); | ||||||
|             Artisan::call('key:generate --force'); |             Artisan::call('key:generate --force'); | ||||||
|             Artisan::call('migrate --seed --force'); |             Artisan::call('migrate --seed --force'); | ||||||
|  | |||||||
| @ -90,7 +90,7 @@ class FrontendController extends Controller | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $companyAddress = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city'])->find(1); |         $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); | ||||||
|  |  | ||||||
|         $colors = [ |         $colors = [ | ||||||
|             'invoice_primary_color', |             'invoice_primary_color', | ||||||
| @ -189,7 +189,7 @@ class FrontendController extends Controller | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $companyAddress = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city'])->find(1); |         $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); | ||||||
|  |  | ||||||
|         $colors = [ |         $colors = [ | ||||||
|             'invoice_primary_color', |             'invoice_primary_color', | ||||||
| @ -262,7 +262,7 @@ class FrontendController extends Controller | |||||||
|         $estimateTemplate = EstimateTemplate::find($estimate->estimate_template_id); |         $estimateTemplate = EstimateTemplate::find($estimate->estimate_template_id); | ||||||
|  |  | ||||||
|         $company = Company::find($estimate->company_id); |         $company = Company::find($estimate->company_id); | ||||||
|         $companyAddress = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city'])->find(1); |         $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); | ||||||
|         $logo = $company->getMedia('logo')->first(); |         $logo = $company->getMedia('logo')->first(); | ||||||
|  |  | ||||||
|         if($logo) { |         if($logo) { | ||||||
| @ -338,7 +338,7 @@ class FrontendController extends Controller | |||||||
|  |  | ||||||
|         $invoiceTemplate = InvoiceTemplate::find($invoice->invoice_template_id); |         $invoiceTemplate = InvoiceTemplate::find($invoice->invoice_template_id); | ||||||
|         $company = Company::find($invoice->company_id); |         $company = Company::find($invoice->company_id); | ||||||
|         $companyAddress = User::with(['addresses', 'addresses.country', 'addresses.state', 'addresses.city'])->find(1); |         $companyAddress = User::with(['addresses', 'addresses.country'])->find(1); | ||||||
|  |  | ||||||
|         $logo = $company->getMedia('logo')->first(); |         $logo = $company->getMedia('logo')->first(); | ||||||
|  |  | ||||||
|  | |||||||
| @ -3,8 +3,6 @@ namespace Crater\Http\Controllers; | |||||||
|  |  | ||||||
| use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||||
| use Crater\Country; | use Crater\Country; | ||||||
| use Crater\State; |  | ||||||
| use Crater\City; |  | ||||||
|  |  | ||||||
| class LocationController extends Controller | class LocationController extends Controller | ||||||
| { | { | ||||||
| @ -14,18 +12,4 @@ class LocationController extends Controller | |||||||
|             'countries' => Country::all() |             'countries' => Country::all() | ||||||
|         ]); |         ]); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function getStates($id) |  | ||||||
|     { |  | ||||||
|         return response()->json([ |  | ||||||
|             'states' => Country::find($id)->states |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function getCities($id) |  | ||||||
|     { |  | ||||||
|         return response()->json([ |  | ||||||
|             'cities' => State::find($id)->cities |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -58,8 +58,6 @@ class OnboardingController extends Controller | |||||||
|         $user = User::with([ |         $user = User::with([ | ||||||
|             'addresses', |             'addresses', | ||||||
|             'addresses.country', |             'addresses.country', | ||||||
|             'addresses.state', |  | ||||||
|             'addresses.city', |  | ||||||
|             'company' |             'company' | ||||||
|         ])->find(1); |         ])->find(1); | ||||||
|  |  | ||||||
| @ -156,8 +154,8 @@ class OnboardingController extends Controller | |||||||
|         $fields = $request->only([ |         $fields = $request->only([ | ||||||
|             'address_street_1', |             'address_street_1', | ||||||
|             'address_street_2', |             'address_street_2', | ||||||
|             'city_id', |             'city', | ||||||
|             'state_id', |             'state', | ||||||
|             'country_id', |             'country_id', | ||||||
|             'zip', |             'zip', | ||||||
|             'phone' |             'phone' | ||||||
|  | |||||||
| @ -82,7 +82,7 @@ class Invoice extends Model | |||||||
|         // So the substr returns this 000001 |         // So the substr returns this 000001 | ||||||
|  |  | ||||||
|         // Add the string in front and higher up the number. |         // Add the string in front and higher up the number. | ||||||
|         // the %05d part makes sure that there are always 6 numbers in the string. |         // the %06d part makes sure that there are always 6 numbers in the string. | ||||||
|         // so it adds the missing zero's when needed. |         // so it adds the missing zero's when needed. | ||||||
|  |  | ||||||
|         return sprintf('%06d', intval($number) + 1); |         return sprintf('%06d', intval($number) + 1); | ||||||
|  | |||||||
| @ -30,6 +30,7 @@ class InvoiceItem extends Model | |||||||
|         'price' => 'integer', |         'price' => 'integer', | ||||||
|         'total' => 'integer', |         'total' => 'integer', | ||||||
|         'discount' => 'float', |         'discount' => 'float', | ||||||
|  |         'quantity' => 'float', | ||||||
|         'discount_val' => 'integer', |         'discount_val' => 'integer', | ||||||
|         'tax' => 'integer' |         'tax' => 'integer' | ||||||
|     ]; |     ]; | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ class Listener | |||||||
|     protected function isListenerFired($event) |     protected function isListenerFired($event) | ||||||
|     { |     { | ||||||
|         // Do not apply to the same or newer versions |         // Do not apply to the same or newer versions | ||||||
|         if (version_compare(static::VERSION, $event->old, '<')) { |         if (version_compare(static::VERSION, $event->old, '<=')) { | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										110
									
								
								app/Listeners/Updates/v2/Version200.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								app/Listeners/Updates/v2/Version200.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,110 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | namespace Crater\Listeners\Updates\v2; | ||||||
|  |  | ||||||
|  | use Illuminate\Contracts\Queue\ShouldQueue; | ||||||
|  | use Illuminate\Queue\InteractsWithQueue; | ||||||
|  | use Illuminate\Database\Schema\Blueprint; | ||||||
|  | use Crater\Listeners\Updates\Listener; | ||||||
|  | use Crater\Listeners\Updates\v2\Version200; | ||||||
|  | use Crater\Events\UpdateFinished; | ||||||
|  | use Crater\Setting; | ||||||
|  | use Crater\Address; | ||||||
|  |  | ||||||
|  | class Version200 extends Listener | ||||||
|  | { | ||||||
|  |     const VERSION = '2.0.0'; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Create the event listener. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |     public function __construct() | ||||||
|  |     { | ||||||
|  |         // | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Handle the event. | ||||||
|  |      * | ||||||
|  |      * @param  object  $event | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |     public function handle(UpdateFinished $event) | ||||||
|  |     { | ||||||
|  |         if ($this->isListenerFired($event)) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // Replace state and city id to name | ||||||
|  |         $this->replaceStateAndCityName(); | ||||||
|  |  | ||||||
|  |         // Drop states and cities foreign key | ||||||
|  |         $this->dropForeignKey(); | ||||||
|  |  | ||||||
|  |         // Remove states and cities tables | ||||||
|  |         $this->dropSchemas(); | ||||||
|  |  | ||||||
|  |         // Delete state & city models, migrations & seeders | ||||||
|  |         $this->deleteFiles(); | ||||||
|  |  | ||||||
|  |         // Update Crater app version | ||||||
|  |         $this->updateVersion(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private function replaceStateAndCityName() { | ||||||
|  |         \Schema::table('addresses', function (Blueprint $table) { | ||||||
|  |             $table->string('state')->nullable(); | ||||||
|  |             $table->string('city')->nullable(); | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         $addresses = \Crater\Address::all(); | ||||||
|  |         foreach ($addresses as $add) { | ||||||
|  |             $city = \Crater\City::find($add->city_id); | ||||||
|  |             if($city) { | ||||||
|  |                 $add->city = $city->name; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             $state = \Crater\State::find($add->state_id); | ||||||
|  |             if($state) { | ||||||
|  |                 $add->state = $state->name; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             $add->save(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private function dropForeignKey() { | ||||||
|  |         \Schema::table('addresses', function (Blueprint $table) { | ||||||
|  |             $table->dropForeign('addresses_state_id_foreign'); | ||||||
|  |             $table->dropForeign('addresses_city_id_foreign'); | ||||||
|  |             $table->dropColumn('state_id'); | ||||||
|  |             $table->dropColumn('city_id'); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private function dropSchemas() { | ||||||
|  |         \Schema::disableForeignKeyConstraints(); | ||||||
|  |  | ||||||
|  |         \Schema::dropIfExists('states'); | ||||||
|  |         \Schema::dropIfExists('cities'); | ||||||
|  |  | ||||||
|  |         \Schema::enableForeignKeyConstraints(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private function deleteFiles() { | ||||||
|  |         \File::delete( | ||||||
|  |             database_path('migrations/2017_05_06_172817_create_cities_table.php'), | ||||||
|  |             database_path('migrations/2017_05_06_173711_create_states_table.php'), | ||||||
|  |             database_path('seeds/StatesTableSeeder.php'), | ||||||
|  |             database_path('seeds/CitiesTableSeeder.php'), | ||||||
|  |             app_path('City.php'), | ||||||
|  |             app_path('State.php') | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private function updateVersion() { | ||||||
|  |         Setting::setSetting('version', static::VERSION); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										87
									
								
								app/Listeners/Updates/v2/Version201.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								app/Listeners/Updates/v2/Version201.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,87 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | namespace Crater\Listeners\Updates\v2; | ||||||
|  |  | ||||||
|  | use Illuminate\Contracts\Queue\ShouldQueue; | ||||||
|  | use Illuminate\Queue\InteractsWithQueue; | ||||||
|  | use Illuminate\Database\Schema\Blueprint; | ||||||
|  | use Crater\Events\UpdateFinished; | ||||||
|  | use Crater\Listeners\Updates\Listener; | ||||||
|  | use Crater\Setting; | ||||||
|  |  | ||||||
|  | class Version201 extends Listener | ||||||
|  | { | ||||||
|  |     const VERSION = '2.0.1'; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Create the event listener. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |     public function __construct() | ||||||
|  |     { | ||||||
|  |         // | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Handle the event. | ||||||
|  |      * | ||||||
|  |      * @param  object  $event | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |     public function handle(UpdateFinished $event) | ||||||
|  |     { | ||||||
|  |         if ($this->isListenerFired($event)) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // Remove the language files | ||||||
|  |         $this->removeLanguageFiles(); | ||||||
|  |  | ||||||
|  |         // Change estimate & invoice migrations | ||||||
|  |         $this->changeMigrations(); | ||||||
|  |  | ||||||
|  |         // Update Crater app version | ||||||
|  |         Setting::setSetting('version', static::VERSION); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private function removeLanguageFiles() { | ||||||
|  |         $en = resource_path('assets/js/plugins/en.js'); | ||||||
|  |         $es = resource_path('assets/js/plugins/es.js'); | ||||||
|  |         $fr = resource_path('assets/js/plugins/fr.js'); | ||||||
|  |  | ||||||
|  |         if(file_exists($en)) { | ||||||
|  |             unlink($en); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if(file_exists($es)) { | ||||||
|  |             unlink($es); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if(file_exists($fr)) { | ||||||
|  |             unlink($fr); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private function changeMigrations() | ||||||
|  |     { | ||||||
|  |         \Schema::table('invoices', function (Blueprint $table) { | ||||||
|  |             $table->decimal('discount', 15, 2)->nullable()->change(); | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         \Schema::table('estimates', function (Blueprint $table) { | ||||||
|  |             $table->decimal('discount', 15, 2)->nullable()->change(); | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         \Schema::table('invoice_items', function (Blueprint $table) { | ||||||
|  |             $table->decimal('quantity', 15, 2)->change(); | ||||||
|  |             $table->decimal('discount', 15, 2)->nullable()->change(); | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         \Schema::table('estimate_items', function (Blueprint $table) { | ||||||
|  |             $table->decimal('quantity', 15, 2)->change(); | ||||||
|  |             $table->decimal('discount', 15, 2)->nullable()->change(); | ||||||
|  |             $table->unsignedBigInteger('discount_val')->nullable()->change(); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -6,6 +6,8 @@ use Illuminate\Auth\Events\Registered; | |||||||
| use Illuminate\Auth\Listeners\SendEmailVerificationNotification; | use Illuminate\Auth\Listeners\SendEmailVerificationNotification; | ||||||
| use Crater\Events\UpdateFinished; | use Crater\Events\UpdateFinished; | ||||||
| use Crater\Listeners\Updates\v1\Version110; | use Crater\Listeners\Updates\v1\Version110; | ||||||
|  | use Crater\Listeners\Updates\v2\Version200; | ||||||
|  | use Crater\Listeners\Updates\v2\Version201; | ||||||
|  |  | ||||||
| class EventServiceProvider extends ServiceProvider | class EventServiceProvider extends ServiceProvider | ||||||
| { | { | ||||||
| @ -17,6 +19,8 @@ class EventServiceProvider extends ServiceProvider | |||||||
|     protected $listen = [ |     protected $listen = [ | ||||||
|         UpdateFinished::class=> [ |         UpdateFinished::class=> [ | ||||||
|             Version110::class, |             Version110::class, | ||||||
|  |             Version200::class, | ||||||
|  |             Version201::class, | ||||||
|         ], |         ], | ||||||
|         Registered::class => [ |         Registered::class => [ | ||||||
|             SendEmailVerificationNotification::class, |             SendEmailVerificationNotification::class, | ||||||
|  | |||||||
| @ -48,17 +48,21 @@ class EnvironmentManager | |||||||
|             'DB_USERNAME='.$request->database_username."\n". |             'DB_USERNAME='.$request->database_username."\n". | ||||||
|             'DB_PASSWORD='.$request->database_password."\n\n"; |             'DB_PASSWORD='.$request->database_password."\n\n"; | ||||||
|  |  | ||||||
|         if (! $this->checkDatabaseConnection($request)) { |         try { | ||||||
|  |  | ||||||
|  |             $this->checkDatabaseConnection($request); | ||||||
|  |  | ||||||
|             return [ |  | ||||||
|                 'error' => 'connection_failed' |  | ||||||
|             ]; |  | ||||||
|         } else { |  | ||||||
|             if(\Schema::hasTable('users') ) { |             if(\Schema::hasTable('users') ) { | ||||||
|                 return [ |                 return [ | ||||||
|                     'error' => 'database_should_be_empty' |                     'error' => 'database_should_be_empty' | ||||||
|                 ]; |                 ]; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |         } catch (Exception $e) { | ||||||
|  |  | ||||||
|  |             return [ | ||||||
|  |                 'error' => $e->getMessage() | ||||||
|  |             ]; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         try { |         try { | ||||||
| @ -118,8 +122,6 @@ class EnvironmentManager | |||||||
|                 ); |                 ); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         } catch (Exception $e) { |         } catch (Exception $e) { | ||||||
|             return [ |             return [ | ||||||
|                 'error' => 'mail_variables_save_error' |                 'error' => 'mail_variables_save_error' | ||||||
| @ -316,12 +318,6 @@ class EnvironmentManager | |||||||
|             ], |             ], | ||||||
|         ]); |         ]); | ||||||
|  |  | ||||||
|         try { |         return DB::connection()->getPdo(); | ||||||
|             DB::connection()->getPdo(); |  | ||||||
|  |  | ||||||
|             return true; |  | ||||||
|         } catch (Exception $e) { |  | ||||||
|             return false; |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,25 +0,0 @@ | |||||||
| <?php |  | ||||||
| namespace Crater; |  | ||||||
|  |  | ||||||
| use Illuminate\Database\Eloquent\Model; |  | ||||||
| use Crater\City; |  | ||||||
| use Crater\Country; |  | ||||||
| use Crater\Address; |  | ||||||
|  |  | ||||||
| class State extends Model |  | ||||||
| { |  | ||||||
|     public function cities() |  | ||||||
|     { |  | ||||||
|         return $this->hasMany(City::class); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function country() |  | ||||||
|     { |  | ||||||
|         return $this->belongsTo(Country::class); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function address() |  | ||||||
|     { |  | ||||||
|         return $this->hasMany(Address::class); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -10,6 +10,7 @@ | |||||||
|     "require": { |     "require": { | ||||||
|         "php": "^7.2", |         "php": "^7.2", | ||||||
|         "barryvdh/laravel-dompdf": "^0.8.1", |         "barryvdh/laravel-dompdf": "^0.8.1", | ||||||
|  |         "doctrine/dbal": "^2.10", | ||||||
|         "fideloper/proxy": "^4.0", |         "fideloper/proxy": "^4.0", | ||||||
|         "guzzlehttp/guzzle": "^6.3", |         "guzzlehttp/guzzle": "^6.3", | ||||||
|         "intervention/image": "^2.3", |         "intervention/image": "^2.3", | ||||||
|  | |||||||
							
								
								
									
										484
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										484
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							| @ -4,7 +4,7 @@ | |||||||
|         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", |         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | ||||||
|         "This file is @generated automatically" |         "This file is @generated automatically" | ||||||
|     ], |     ], | ||||||
|     "content-hash": "2a5e8d91a2be3144e2812dd708dc14b7", |     "content-hash": "e7cf4f0a8e1e7d60cc72b34ed4c730ce", | ||||||
|     "packages": [ |     "packages": [ | ||||||
|         { |         { | ||||||
|             "name": "barryvdh/laravel-dompdf", |             "name": "barryvdh/laravel-dompdf", | ||||||
| @ -158,6 +158,247 @@ | |||||||
|             "description": "implementation of xdg base directory specification for php", |             "description": "implementation of xdg base directory specification for php", | ||||||
|             "time": "2014-10-24T07:27:01+00:00" |             "time": "2014-10-24T07:27:01+00:00" | ||||||
|         }, |         }, | ||||||
|  |         { | ||||||
|  |             "name": "doctrine/cache", | ||||||
|  |             "version": "v1.8.1", | ||||||
|  |             "source": { | ||||||
|  |                 "type": "git", | ||||||
|  |                 "url": "https://github.com/doctrine/cache.git", | ||||||
|  |                 "reference": "d4374ae95b36062d02ef310100ed33d78738d76c" | ||||||
|  |             }, | ||||||
|  |             "dist": { | ||||||
|  |                 "type": "zip", | ||||||
|  |                 "url": "https://api.github.com/repos/doctrine/cache/zipball/d4374ae95b36062d02ef310100ed33d78738d76c", | ||||||
|  |                 "reference": "d4374ae95b36062d02ef310100ed33d78738d76c", | ||||||
|  |                 "shasum": "" | ||||||
|  |             }, | ||||||
|  |             "require": { | ||||||
|  |                 "php": "~7.1" | ||||||
|  |             }, | ||||||
|  |             "conflict": { | ||||||
|  |                 "doctrine/common": ">2.2,<2.4" | ||||||
|  |             }, | ||||||
|  |             "require-dev": { | ||||||
|  |                 "alcaeus/mongo-php-adapter": "^1.1", | ||||||
|  |                 "doctrine/coding-standard": "^4.0", | ||||||
|  |                 "mongodb/mongodb": "^1.1", | ||||||
|  |                 "phpunit/phpunit": "^7.0", | ||||||
|  |                 "predis/predis": "~1.0" | ||||||
|  |             }, | ||||||
|  |             "suggest": { | ||||||
|  |                 "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" | ||||||
|  |             }, | ||||||
|  |             "type": "library", | ||||||
|  |             "extra": { | ||||||
|  |                 "branch-alias": { | ||||||
|  |                     "dev-master": "1.8.x-dev" | ||||||
|  |                 } | ||||||
|  |             }, | ||||||
|  |             "autoload": { | ||||||
|  |                 "psr-4": { | ||||||
|  |                     "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" | ||||||
|  |                 } | ||||||
|  |             }, | ||||||
|  |             "notification-url": "https://packagist.org/downloads/", | ||||||
|  |             "license": [ | ||||||
|  |                 "MIT" | ||||||
|  |             ], | ||||||
|  |             "authors": [ | ||||||
|  |                 { | ||||||
|  |                     "name": "Guilherme Blanco", | ||||||
|  |                     "email": "guilhermeblanco@gmail.com" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Roman Borschel", | ||||||
|  |                     "email": "roman@code-factory.org" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Benjamin Eberlei", | ||||||
|  |                     "email": "kontakt@beberlei.de" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Jonathan Wage", | ||||||
|  |                     "email": "jonwage@gmail.com" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Johannes Schmitt", | ||||||
|  |                     "email": "schmittjoh@gmail.com" | ||||||
|  |                 } | ||||||
|  |             ], | ||||||
|  |             "description": "Caching library offering an object-oriented API for many cache backends", | ||||||
|  |             "homepage": "https://www.doctrine-project.org", | ||||||
|  |             "keywords": [ | ||||||
|  |                 "cache", | ||||||
|  |                 "caching" | ||||||
|  |             ], | ||||||
|  |             "time": "2019-10-28T09:31:32+00:00" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "name": "doctrine/dbal", | ||||||
|  |             "version": "v2.10.0", | ||||||
|  |             "source": { | ||||||
|  |                 "type": "git", | ||||||
|  |                 "url": "https://github.com/doctrine/dbal.git", | ||||||
|  |                 "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934" | ||||||
|  |             }, | ||||||
|  |             "dist": { | ||||||
|  |                 "type": "zip", | ||||||
|  |                 "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934", | ||||||
|  |                 "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934", | ||||||
|  |                 "shasum": "" | ||||||
|  |             }, | ||||||
|  |             "require": { | ||||||
|  |                 "doctrine/cache": "^1.0", | ||||||
|  |                 "doctrine/event-manager": "^1.0", | ||||||
|  |                 "ext-pdo": "*", | ||||||
|  |                 "php": "^7.2" | ||||||
|  |             }, | ||||||
|  |             "require-dev": { | ||||||
|  |                 "doctrine/coding-standard": "^6.0", | ||||||
|  |                 "jetbrains/phpstorm-stubs": "^2019.1", | ||||||
|  |                 "phpstan/phpstan": "^0.11.3", | ||||||
|  |                 "phpunit/phpunit": "^8.4.1", | ||||||
|  |                 "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" | ||||||
|  |             }, | ||||||
|  |             "suggest": { | ||||||
|  |                 "symfony/console": "For helpful console commands such as SQL execution and import of files." | ||||||
|  |             }, | ||||||
|  |             "bin": [ | ||||||
|  |                 "bin/doctrine-dbal" | ||||||
|  |             ], | ||||||
|  |             "type": "library", | ||||||
|  |             "extra": { | ||||||
|  |                 "branch-alias": { | ||||||
|  |                     "dev-master": "2.10.x-dev", | ||||||
|  |                     "dev-develop": "3.0.x-dev" | ||||||
|  |                 } | ||||||
|  |             }, | ||||||
|  |             "autoload": { | ||||||
|  |                 "psr-4": { | ||||||
|  |                     "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" | ||||||
|  |                 } | ||||||
|  |             }, | ||||||
|  |             "notification-url": "https://packagist.org/downloads/", | ||||||
|  |             "license": [ | ||||||
|  |                 "MIT" | ||||||
|  |             ], | ||||||
|  |             "authors": [ | ||||||
|  |                 { | ||||||
|  |                     "name": "Guilherme Blanco", | ||||||
|  |                     "email": "guilhermeblanco@gmail.com" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Roman Borschel", | ||||||
|  |                     "email": "roman@code-factory.org" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Benjamin Eberlei", | ||||||
|  |                     "email": "kontakt@beberlei.de" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Jonathan Wage", | ||||||
|  |                     "email": "jonwage@gmail.com" | ||||||
|  |                 } | ||||||
|  |             ], | ||||||
|  |             "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", | ||||||
|  |             "homepage": "https://www.doctrine-project.org/projects/dbal.html", | ||||||
|  |             "keywords": [ | ||||||
|  |                 "abstraction", | ||||||
|  |                 "database", | ||||||
|  |                 "db2", | ||||||
|  |                 "dbal", | ||||||
|  |                 "mariadb", | ||||||
|  |                 "mssql", | ||||||
|  |                 "mysql", | ||||||
|  |                 "oci8", | ||||||
|  |                 "oracle", | ||||||
|  |                 "pdo", | ||||||
|  |                 "pgsql", | ||||||
|  |                 "postgresql", | ||||||
|  |                 "queryobject", | ||||||
|  |                 "sasql", | ||||||
|  |                 "sql", | ||||||
|  |                 "sqlanywhere", | ||||||
|  |                 "sqlite", | ||||||
|  |                 "sqlserver", | ||||||
|  |                 "sqlsrv" | ||||||
|  |             ], | ||||||
|  |             "time": "2019-11-03T16:50:43+00:00" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "name": "doctrine/event-manager", | ||||||
|  |             "version": "v1.0.0", | ||||||
|  |             "source": { | ||||||
|  |                 "type": "git", | ||||||
|  |                 "url": "https://github.com/doctrine/event-manager.git", | ||||||
|  |                 "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" | ||||||
|  |             }, | ||||||
|  |             "dist": { | ||||||
|  |                 "type": "zip", | ||||||
|  |                 "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", | ||||||
|  |                 "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", | ||||||
|  |                 "shasum": "" | ||||||
|  |             }, | ||||||
|  |             "require": { | ||||||
|  |                 "php": "^7.1" | ||||||
|  |             }, | ||||||
|  |             "conflict": { | ||||||
|  |                 "doctrine/common": "<2.9@dev" | ||||||
|  |             }, | ||||||
|  |             "require-dev": { | ||||||
|  |                 "doctrine/coding-standard": "^4.0", | ||||||
|  |                 "phpunit/phpunit": "^7.0" | ||||||
|  |             }, | ||||||
|  |             "type": "library", | ||||||
|  |             "extra": { | ||||||
|  |                 "branch-alias": { | ||||||
|  |                     "dev-master": "1.0.x-dev" | ||||||
|  |                 } | ||||||
|  |             }, | ||||||
|  |             "autoload": { | ||||||
|  |                 "psr-4": { | ||||||
|  |                     "Doctrine\\Common\\": "lib/Doctrine/Common" | ||||||
|  |                 } | ||||||
|  |             }, | ||||||
|  |             "notification-url": "https://packagist.org/downloads/", | ||||||
|  |             "license": [ | ||||||
|  |                 "MIT" | ||||||
|  |             ], | ||||||
|  |             "authors": [ | ||||||
|  |                 { | ||||||
|  |                     "name": "Roman Borschel", | ||||||
|  |                     "email": "roman@code-factory.org" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Benjamin Eberlei", | ||||||
|  |                     "email": "kontakt@beberlei.de" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Guilherme Blanco", | ||||||
|  |                     "email": "guilhermeblanco@gmail.com" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Jonathan Wage", | ||||||
|  |                     "email": "jonwage@gmail.com" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Johannes Schmitt", | ||||||
|  |                     "email": "schmittjoh@gmail.com" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "name": "Marco Pivetta", | ||||||
|  |                     "email": "ocramius@gmail.com" | ||||||
|  |                 } | ||||||
|  |             ], | ||||||
|  |             "description": "Doctrine Event Manager component", | ||||||
|  |             "homepage": "https://www.doctrine-project.org/projects/event-manager.html", | ||||||
|  |             "keywords": [ | ||||||
|  |                 "event", | ||||||
|  |                 "eventdispatcher", | ||||||
|  |                 "eventmanager" | ||||||
|  |             ], | ||||||
|  |             "time": "2018-06-11T11:59:03+00:00" | ||||||
|  |         }, | ||||||
|         { |         { | ||||||
|             "name": "doctrine/inflector", |             "name": "doctrine/inflector", | ||||||
|             "version": "v1.3.0", |             "version": "v1.3.0", | ||||||
| @ -5307,247 +5548,6 @@ | |||||||
|             ], |             ], | ||||||
|             "time": "2019-05-27T17:52:04+00:00" |             "time": "2019-05-27T17:52:04+00:00" | ||||||
|         }, |         }, | ||||||
|         { |  | ||||||
|             "name": "doctrine/cache", |  | ||||||
|             "version": "v1.8.1", |  | ||||||
|             "source": { |  | ||||||
|                 "type": "git", |  | ||||||
|                 "url": "https://github.com/doctrine/cache.git", |  | ||||||
|                 "reference": "d4374ae95b36062d02ef310100ed33d78738d76c" |  | ||||||
|             }, |  | ||||||
|             "dist": { |  | ||||||
|                 "type": "zip", |  | ||||||
|                 "url": "https://api.github.com/repos/doctrine/cache/zipball/d4374ae95b36062d02ef310100ed33d78738d76c", |  | ||||||
|                 "reference": "d4374ae95b36062d02ef310100ed33d78738d76c", |  | ||||||
|                 "shasum": "" |  | ||||||
|             }, |  | ||||||
|             "require": { |  | ||||||
|                 "php": "~7.1" |  | ||||||
|             }, |  | ||||||
|             "conflict": { |  | ||||||
|                 "doctrine/common": ">2.2,<2.4" |  | ||||||
|             }, |  | ||||||
|             "require-dev": { |  | ||||||
|                 "alcaeus/mongo-php-adapter": "^1.1", |  | ||||||
|                 "doctrine/coding-standard": "^4.0", |  | ||||||
|                 "mongodb/mongodb": "^1.1", |  | ||||||
|                 "phpunit/phpunit": "^7.0", |  | ||||||
|                 "predis/predis": "~1.0" |  | ||||||
|             }, |  | ||||||
|             "suggest": { |  | ||||||
|                 "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" |  | ||||||
|             }, |  | ||||||
|             "type": "library", |  | ||||||
|             "extra": { |  | ||||||
|                 "branch-alias": { |  | ||||||
|                     "dev-master": "1.8.x-dev" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "autoload": { |  | ||||||
|                 "psr-4": { |  | ||||||
|                     "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "notification-url": "https://packagist.org/downloads/", |  | ||||||
|             "license": [ |  | ||||||
|                 "MIT" |  | ||||||
|             ], |  | ||||||
|             "authors": [ |  | ||||||
|                 { |  | ||||||
|                     "name": "Guilherme Blanco", |  | ||||||
|                     "email": "guilhermeblanco@gmail.com" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Roman Borschel", |  | ||||||
|                     "email": "roman@code-factory.org" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Benjamin Eberlei", |  | ||||||
|                     "email": "kontakt@beberlei.de" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Jonathan Wage", |  | ||||||
|                     "email": "jonwage@gmail.com" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Johannes Schmitt", |  | ||||||
|                     "email": "schmittjoh@gmail.com" |  | ||||||
|                 } |  | ||||||
|             ], |  | ||||||
|             "description": "Caching library offering an object-oriented API for many cache backends", |  | ||||||
|             "homepage": "https://www.doctrine-project.org", |  | ||||||
|             "keywords": [ |  | ||||||
|                 "cache", |  | ||||||
|                 "caching" |  | ||||||
|             ], |  | ||||||
|             "time": "2019-10-28T09:31:32+00:00" |  | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "name": "doctrine/dbal", |  | ||||||
|             "version": "v2.10.0", |  | ||||||
|             "source": { |  | ||||||
|                 "type": "git", |  | ||||||
|                 "url": "https://github.com/doctrine/dbal.git", |  | ||||||
|                 "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934" |  | ||||||
|             }, |  | ||||||
|             "dist": { |  | ||||||
|                 "type": "zip", |  | ||||||
|                 "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934", |  | ||||||
|                 "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934", |  | ||||||
|                 "shasum": "" |  | ||||||
|             }, |  | ||||||
|             "require": { |  | ||||||
|                 "doctrine/cache": "^1.0", |  | ||||||
|                 "doctrine/event-manager": "^1.0", |  | ||||||
|                 "ext-pdo": "*", |  | ||||||
|                 "php": "^7.2" |  | ||||||
|             }, |  | ||||||
|             "require-dev": { |  | ||||||
|                 "doctrine/coding-standard": "^6.0", |  | ||||||
|                 "jetbrains/phpstorm-stubs": "^2019.1", |  | ||||||
|                 "phpstan/phpstan": "^0.11.3", |  | ||||||
|                 "phpunit/phpunit": "^8.4.1", |  | ||||||
|                 "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" |  | ||||||
|             }, |  | ||||||
|             "suggest": { |  | ||||||
|                 "symfony/console": "For helpful console commands such as SQL execution and import of files." |  | ||||||
|             }, |  | ||||||
|             "bin": [ |  | ||||||
|                 "bin/doctrine-dbal" |  | ||||||
|             ], |  | ||||||
|             "type": "library", |  | ||||||
|             "extra": { |  | ||||||
|                 "branch-alias": { |  | ||||||
|                     "dev-master": "2.10.x-dev", |  | ||||||
|                     "dev-develop": "3.0.x-dev" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "autoload": { |  | ||||||
|                 "psr-4": { |  | ||||||
|                     "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "notification-url": "https://packagist.org/downloads/", |  | ||||||
|             "license": [ |  | ||||||
|                 "MIT" |  | ||||||
|             ], |  | ||||||
|             "authors": [ |  | ||||||
|                 { |  | ||||||
|                     "name": "Guilherme Blanco", |  | ||||||
|                     "email": "guilhermeblanco@gmail.com" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Roman Borschel", |  | ||||||
|                     "email": "roman@code-factory.org" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Benjamin Eberlei", |  | ||||||
|                     "email": "kontakt@beberlei.de" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Jonathan Wage", |  | ||||||
|                     "email": "jonwage@gmail.com" |  | ||||||
|                 } |  | ||||||
|             ], |  | ||||||
|             "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", |  | ||||||
|             "homepage": "https://www.doctrine-project.org/projects/dbal.html", |  | ||||||
|             "keywords": [ |  | ||||||
|                 "abstraction", |  | ||||||
|                 "database", |  | ||||||
|                 "db2", |  | ||||||
|                 "dbal", |  | ||||||
|                 "mariadb", |  | ||||||
|                 "mssql", |  | ||||||
|                 "mysql", |  | ||||||
|                 "oci8", |  | ||||||
|                 "oracle", |  | ||||||
|                 "pdo", |  | ||||||
|                 "pgsql", |  | ||||||
|                 "postgresql", |  | ||||||
|                 "queryobject", |  | ||||||
|                 "sasql", |  | ||||||
|                 "sql", |  | ||||||
|                 "sqlanywhere", |  | ||||||
|                 "sqlite", |  | ||||||
|                 "sqlserver", |  | ||||||
|                 "sqlsrv" |  | ||||||
|             ], |  | ||||||
|             "time": "2019-11-03T16:50:43+00:00" |  | ||||||
|         }, |  | ||||||
|         { |  | ||||||
|             "name": "doctrine/event-manager", |  | ||||||
|             "version": "v1.0.0", |  | ||||||
|             "source": { |  | ||||||
|                 "type": "git", |  | ||||||
|                 "url": "https://github.com/doctrine/event-manager.git", |  | ||||||
|                 "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" |  | ||||||
|             }, |  | ||||||
|             "dist": { |  | ||||||
|                 "type": "zip", |  | ||||||
|                 "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", |  | ||||||
|                 "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", |  | ||||||
|                 "shasum": "" |  | ||||||
|             }, |  | ||||||
|             "require": { |  | ||||||
|                 "php": "^7.1" |  | ||||||
|             }, |  | ||||||
|             "conflict": { |  | ||||||
|                 "doctrine/common": "<2.9@dev" |  | ||||||
|             }, |  | ||||||
|             "require-dev": { |  | ||||||
|                 "doctrine/coding-standard": "^4.0", |  | ||||||
|                 "phpunit/phpunit": "^7.0" |  | ||||||
|             }, |  | ||||||
|             "type": "library", |  | ||||||
|             "extra": { |  | ||||||
|                 "branch-alias": { |  | ||||||
|                     "dev-master": "1.0.x-dev" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "autoload": { |  | ||||||
|                 "psr-4": { |  | ||||||
|                     "Doctrine\\Common\\": "lib/Doctrine/Common" |  | ||||||
|                 } |  | ||||||
|             }, |  | ||||||
|             "notification-url": "https://packagist.org/downloads/", |  | ||||||
|             "license": [ |  | ||||||
|                 "MIT" |  | ||||||
|             ], |  | ||||||
|             "authors": [ |  | ||||||
|                 { |  | ||||||
|                     "name": "Roman Borschel", |  | ||||||
|                     "email": "roman@code-factory.org" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Benjamin Eberlei", |  | ||||||
|                     "email": "kontakt@beberlei.de" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Guilherme Blanco", |  | ||||||
|                     "email": "guilhermeblanco@gmail.com" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Jonathan Wage", |  | ||||||
|                     "email": "jonwage@gmail.com" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Johannes Schmitt", |  | ||||||
|                     "email": "schmittjoh@gmail.com" |  | ||||||
|                 }, |  | ||||||
|                 { |  | ||||||
|                     "name": "Marco Pivetta", |  | ||||||
|                     "email": "ocramius@gmail.com" |  | ||||||
|                 } |  | ||||||
|             ], |  | ||||||
|             "description": "Doctrine Event Manager component", |  | ||||||
|             "homepage": "https://www.doctrine-project.org/projects/event-manager.html", |  | ||||||
|             "keywords": [ |  | ||||||
|                 "event", |  | ||||||
|                 "eventdispatcher", |  | ||||||
|                 "eventmanager" |  | ||||||
|             ], |  | ||||||
|             "time": "2018-06-11T11:59:03+00:00" |  | ||||||
|         }, |  | ||||||
|         { |         { | ||||||
|             "name": "doctrine/instantiator", |             "name": "doctrine/instantiator", | ||||||
|             "version": "1.2.0", |             "version": "1.2.0", | ||||||
|  | |||||||
| @ -9,6 +9,6 @@ return [ | |||||||
|     | |     | | ||||||
|     */ |     */ | ||||||
|  |  | ||||||
|     'version' => '1.1.0', |     'version' => '2.0.1', | ||||||
|  |  | ||||||
| ]; | ]; | ||||||
|  | |||||||
| @ -51,7 +51,7 @@ return [ | |||||||
|             'collation' => 'utf8_unicode_ci', |             'collation' => 'utf8_unicode_ci', | ||||||
|             'prefix' => '', |             'prefix' => '', | ||||||
|             'prefix_indexes' => true, |             'prefix_indexes' => true, | ||||||
|             'strict' => true, |             'strict' => false, | ||||||
|             'engine' => null, |             'engine' => null, | ||||||
|         ], |         ], | ||||||
|  |  | ||||||
|  | |||||||
| @ -10,9 +10,9 @@ $factory->define(Address::class, function (Faker $faker) { | |||||||
|         'name' => $faker->name, |         'name' => $faker->name, | ||||||
|         'address_street_1' => $faker->streetAddress, |         'address_street_1' => $faker->streetAddress, | ||||||
|         'address_street_2' => $faker->streetAddress, |         'address_street_2' => $faker->streetAddress, | ||||||
|         'city_id' => 5909, |         'city' => $faker->city, | ||||||
|         'state_id' => 42, |         'state' => $faker->state, | ||||||
|         'country_id' => 1, |         'country_id' => 231, | ||||||
|         'zip' => $faker->postcode, |         'zip' => $faker->postcode, | ||||||
|         'phone' => $faker->phoneNumber, |         'phone' => $faker->phoneNumber, | ||||||
|         'fax' => $faker->phoneNumber, |         'fax' => $faker->phoneNumber, | ||||||
|  | |||||||
| @ -25,7 +25,7 @@ class CreateInvoicesTable extends Migration | |||||||
|             $table->string('discount_per_item'); |             $table->string('discount_per_item'); | ||||||
|             $table->text('notes')->nullable(); |             $table->text('notes')->nullable(); | ||||||
|             $table->string('discount_type')->nullable(); |             $table->string('discount_type')->nullable(); | ||||||
|             $table->unsignedBigInteger('discount')->nullable(); |             $table->decimal('discount', 15, 2)->nullable(); | ||||||
|             $table->unsignedBigInteger('discount_val')->nullable(); |             $table->unsignedBigInteger('discount_val')->nullable(); | ||||||
|             $table->unsignedBigInteger('sub_total'); |             $table->unsignedBigInteger('sub_total'); | ||||||
|             $table->unsignedBigInteger('total'); |             $table->unsignedBigInteger('total'); | ||||||
|  | |||||||
| @ -18,10 +18,10 @@ class CreateInvoiceItemsTable extends Migration | |||||||
|             $table->string('name'); |             $table->string('name'); | ||||||
|             $table->string('description')->nullable(); |             $table->string('description')->nullable(); | ||||||
|             $table->string('discount_type'); |             $table->string('discount_type'); | ||||||
|             $table->unsignedBigInteger('quantity'); |  | ||||||
|             $table->unsignedBigInteger('price'); |             $table->unsignedBigInteger('price'); | ||||||
|  |             $table->decimal('quantity', 15, 2); | ||||||
|  |             $table->decimal('discount', 15, 2)->nullable(); | ||||||
|             $table->unsignedBigInteger('discount_val'); |             $table->unsignedBigInteger('discount_val'); | ||||||
|             $table->unsignedBigInteger('discount'); |  | ||||||
|             $table->unsignedBigInteger('tax'); |             $table->unsignedBigInteger('tax'); | ||||||
|             $table->unsignedBigInteger('total'); |             $table->unsignedBigInteger('total'); | ||||||
|             $table->integer('invoice_id')->unsigned(); |             $table->integer('invoice_id')->unsigned(); | ||||||
|  | |||||||
| @ -23,8 +23,8 @@ class CreateEstimatesTable extends Migration | |||||||
|             $table->string('tax_per_item'); |             $table->string('tax_per_item'); | ||||||
|             $table->string('discount_per_item'); |             $table->string('discount_per_item'); | ||||||
|             $table->string('notes')->nullable(); |             $table->string('notes')->nullable(); | ||||||
|  |             $table->decimal('discount', 15, 2)->nullable(); | ||||||
|             $table->string('discount_type')->nullable(); |             $table->string('discount_type')->nullable(); | ||||||
|             $table->unsignedBigInteger('discount')->nullable(); |  | ||||||
|             $table->unsignedBigInteger('discount_val')->nullable(); |             $table->unsignedBigInteger('discount_val')->nullable(); | ||||||
|             $table->unsignedBigInteger('sub_total'); |             $table->unsignedBigInteger('sub_total'); | ||||||
|             $table->unsignedBigInteger('total'); |             $table->unsignedBigInteger('total'); | ||||||
|  | |||||||
| @ -1,33 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| use Illuminate\Support\Facades\Schema; |  | ||||||
| use Illuminate\Database\Schema\Blueprint; |  | ||||||
| use Illuminate\Database\Migrations\Migration; |  | ||||||
|  |  | ||||||
| class CreateCitiesTable extends Migration |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Run the migrations. |  | ||||||
|      * |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     public function up() |  | ||||||
|     { |  | ||||||
|        Schema::create('cities', function (Blueprint $table) { |  | ||||||
|         $table->engine = 'InnoDB'; |  | ||||||
|         $table->increments('id')->index(); |  | ||||||
|         $table->string('name'); |  | ||||||
|         $table->integer('state_id');             |  | ||||||
|     }); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Reverse the migrations. |  | ||||||
|      * |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     public function down() |  | ||||||
|     { |  | ||||||
|         Schema::dropIfExists('cities'); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,32 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| use Illuminate\Support\Facades\Schema; |  | ||||||
| use Illuminate\Database\Schema\Blueprint; |  | ||||||
| use Illuminate\Database\Migrations\Migration; |  | ||||||
|  |  | ||||||
| class CreateStatesTable extends Migration |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Run the migrations. |  | ||||||
|      * |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     public function up() |  | ||||||
|     { |  | ||||||
|         Schema::create('states', function (Blueprint $table) { |  | ||||||
|             $table->increments('id')->index(); |  | ||||||
|             $table->string('name'); |  | ||||||
|             $table->integer('country_id');             |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Reverse the migrations. |  | ||||||
|      * |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     public function down() |  | ||||||
|     { |  | ||||||
|         Schema::dropIfExists('states'); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -18,9 +18,9 @@ class CreateEstimateItemsTable extends Migration | |||||||
|             $table->string('name'); |             $table->string('name'); | ||||||
|             $table->string('description')->nullable(); |             $table->string('description')->nullable(); | ||||||
|             $table->string('discount_type'); |             $table->string('discount_type'); | ||||||
|             $table->unsignedBigInteger('quantity'); |             $table->decimal('quantity', 15, 2); | ||||||
|             $table->unsignedBigInteger('discount'); |             $table->decimal('discount', 15, 2)->nullable(); | ||||||
|             $table->unsignedBigInteger('discount_val'); |             $table->unsignedBigInteger('discount_val')->nullable(); | ||||||
|             $table->unsignedBigInteger('price'); |             $table->unsignedBigInteger('price'); | ||||||
|             $table->unsignedBigInteger('tax'); |             $table->unsignedBigInteger('tax'); | ||||||
|             $table->unsignedBigInteger('total'); |             $table->unsignedBigInteger('total'); | ||||||
|  | |||||||
| @ -18,10 +18,8 @@ class CreateAddressesTable extends Migration | |||||||
|             $table->string('name')->nullable(); |             $table->string('name')->nullable(); | ||||||
|             $table->string('address_street_1')->nullable(); |             $table->string('address_street_1')->nullable(); | ||||||
|             $table->string('address_street_2')->nullable(); |             $table->string('address_street_2')->nullable(); | ||||||
|             $table->integer('city_id')->unsigned()->nullable(); |             $table->string('city')->nullable(); | ||||||
|             $table->foreign('city_id')->references('id')->on('cities'); |             $table->string('state')->nullable(); | ||||||
|             $table->integer('state_id')->unsigned()->nullable(); |  | ||||||
|             $table->foreign('state_id')->references('id')->on('states'); |  | ||||||
|             $table->integer('country_id')->unsigned()->nullable(); |             $table->integer('country_id')->unsigned()->nullable(); | ||||||
|             $table->foreign('country_id')->references('id')->on('countries'); |             $table->foreign('country_id')->references('id')->on('countries'); | ||||||
|             $table->string('zip')->nullable(); |             $table->string('zip')->nullable(); | ||||||
|  | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -14,8 +14,6 @@ class DatabaseSeeder extends Seeder | |||||||
|         $this->call(CurrenciesTableSeeder::class); |         $this->call(CurrenciesTableSeeder::class); | ||||||
|         $this->call(RoleSeeder::class); |         $this->call(RoleSeeder::class); | ||||||
|         $this->call(CountriesTableSeeder::class); |         $this->call(CountriesTableSeeder::class); | ||||||
|         $this->call(StatesTableSeeder::class); |  | ||||||
|         $this->call(CitiesTableSeeder::class); |  | ||||||
|         $this->call(EstimateTemplateSeeder::class); |         $this->call(EstimateTemplateSeeder::class); | ||||||
|         $this->call(InvoiceTemplateSeeder::class); |         $this->call(InvoiceTemplateSeeder::class); | ||||||
|     } |     } | ||||||
|  | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2
									
								
								public/assets/css/crater.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								public/assets/css/crater.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -1,4 +1,4 @@ | |||||||
| { | { | ||||||
|     "/assets/js/app.js": "/assets/js/app.js?id=af9e4f2aa907d480466c", |     "/assets/js/app.js": "/assets/js/app.js?id=2a5cfd8271e10bd501dc", | ||||||
|     "/assets/css/crater.css": "/assets/css/crater.css?id=9d83f53c3915b38417e0" |     "/assets/css/crater.css": "/assets/css/crater.css?id=108e3a8d009e7d38018c" | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,7 +14,8 @@ Web Application is made using Laravel & VueJS while the Mobile Apps are built us | |||||||
| 4. [Discord](#discord) | 4. [Discord](#discord) | ||||||
| 5. [Roadmap](#roadmap) | 5. [Roadmap](#roadmap) | ||||||
| 6. [Credits](#credits) | 6. [Credits](#credits) | ||||||
| 7. [License](#license) | 7. [Help us translate](#translate) | ||||||
|  | 8. [License](#license) | ||||||
|  |  | ||||||
| ## Documentation | ## Documentation | ||||||
|  |  | ||||||
| @ -59,6 +60,9 @@ Join the Crater discord server to discuss: | |||||||
| ## Credits | ## Credits | ||||||
| Crater is a product of [Bytefury](https://bytefury.com) | Crater is a product of [Bytefury](https://bytefury.com) | ||||||
|  |  | ||||||
|  | ## Translate | ||||||
|  | Help us translate on [Transifex](https://www.transifex.com/bytefury/crater-invoice) | ||||||
|  |  | ||||||
| ## License | ## License | ||||||
| Crater is released under the Attribution Assurance License. | Crater is released under the Attribution Assurance License. | ||||||
| See [LICENSE](LICENSE) for details. | See [LICENSE](LICENSE) for details. | ||||||
|  | |||||||
| @ -163,44 +163,24 @@ | |||||||
|               <div class="form-group row"> |               <div class="form-group row"> | ||||||
|                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.state') }}</label> |                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.state') }}</label> | ||||||
|                 <div class="col-sm-7"> |                 <div class="col-sm-7"> | ||||||
|                   <base-select |                   <base-input | ||||||
|                     v-model="billingState" |                     v-model="billing.state" | ||||||
|                     :options="billingStates" |                     type="text" | ||||||
|                     :searchable="true" |                     name="billingState" | ||||||
|                     :show-labels="false" |  | ||||||
|                     :placeholder="$t('general.select_state')" |  | ||||||
|                     :disabled="isDisabledBillingState" |  | ||||||
|                     track-by="id" |  | ||||||
|                     label="name" |  | ||||||
|                   /> |                   /> | ||||||
|                 </div> |                 </div> | ||||||
|               </div> |               </div> | ||||||
|  |  | ||||||
|               <div class="form-group row"> |               <div class="form-group row"> | ||||||
|                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.city') }}</label> |                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.city') }}</label> | ||||||
|                 <div class="col-sm-7"> |  | ||||||
|                   <base-select |  | ||||||
|                     v-model="billingCity" |  | ||||||
|                     :options="billingCities" |  | ||||||
|                     :searchable="true" |  | ||||||
|                     :show-labels="false" |  | ||||||
|                     :placeholder="$t('general.select_city')" |  | ||||||
|                     :disabled="isDisabledBillingCity" |  | ||||||
|                     track-by="id" |  | ||||||
|                     label="name" |  | ||||||
|                   /> |  | ||||||
|                 </div> |  | ||||||
|               </div> |  | ||||||
|  |  | ||||||
|               <!-- <div class="form-group row"> |  | ||||||
|                 <label class="col-sm-4 col-form-label">Zip Code</label> |  | ||||||
|                 <div class="col-sm-7"> |                 <div class="col-sm-7"> | ||||||
|                   <base-input |                   <base-input | ||||||
|                     v-model="billing.zip" |                     v-model="billing.city" | ||||||
|                     type="text" |                     type="text" | ||||||
|  |                     name="billingCity" | ||||||
|                   /> |                   /> | ||||||
|                 </div> |                 </div> | ||||||
|               </div> --> |               </div> | ||||||
|  |  | ||||||
|               <div class="form-group row"> |               <div class="form-group row"> | ||||||
|                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.zip_code') }}</label> |                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.zip_code') }}</label> | ||||||
| @ -294,15 +274,10 @@ | |||||||
|               <div class="form-group row"> |               <div class="form-group row"> | ||||||
|                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.state') }}</label> |                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.state') }}</label> | ||||||
|                 <div class="col-sm-7"> |                 <div class="col-sm-7"> | ||||||
|                   <base-select |                   <base-input | ||||||
|                     v-model="shippingState" |                     v-model="shipping.state" | ||||||
|                     :options="shippingStates" |                     type="text" | ||||||
|                     :searchable="true" |                     name="shippingState" | ||||||
|                     :show-labels="false" |  | ||||||
|                     :placeholder="$t('general.select_state')" |  | ||||||
|                     :disabled="isDisabledShippingState" |  | ||||||
|                     track-by="id" |  | ||||||
|                     label="name" |  | ||||||
|                   /> |                   /> | ||||||
|                 </div> |                 </div> | ||||||
|               </div> |               </div> | ||||||
| @ -310,15 +285,10 @@ | |||||||
|               <div class="form-group row"> |               <div class="form-group row"> | ||||||
|                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.city') }}</label> |                 <label class="col-sm-4 col-form-label input-label">{{ $t('customers.city') }}</label> | ||||||
|                 <div class="col-sm-7"> |                 <div class="col-sm-7"> | ||||||
|                   <base-select |                   <base-input | ||||||
|                     v-model="shippingCity" |                     v-model="shipping.city" | ||||||
|                     :options="shippingCities" |                     type="text" | ||||||
|                     :searchable="true" |                     name="shippingCity" | ||||||
|                     :show-labels="false" |  | ||||||
|                     :placeholder="$t('general.select_city')" |  | ||||||
|                     :disabled="isDisabledShippingCity" |  | ||||||
|                     track-by="id" |  | ||||||
|                     label="name" |  | ||||||
|                   /> |                   /> | ||||||
|                 </div> |                 </div> | ||||||
|               </div> |               </div> | ||||||
| @ -372,16 +342,8 @@ export default { | |||||||
|     return { |     return { | ||||||
|       isLoading: false, |       isLoading: false, | ||||||
|       countryList: [], |       countryList: [], | ||||||
|       billingStates: [], |  | ||||||
|       billingCities: [], |  | ||||||
|       billingCountry: null, |       billingCountry: null, | ||||||
|       billingState: null, |  | ||||||
|       billingCity: null, |  | ||||||
|       shippingStates: [], |  | ||||||
|       shippingCities: [], |  | ||||||
|       shippingCountry: null, |       shippingCountry: null, | ||||||
|       shippingState: null, |  | ||||||
|       shippingCity: null, |  | ||||||
|       isCopyFromBilling: false, |       isCopyFromBilling: false, | ||||||
|       currencyList: [], |       currencyList: [], | ||||||
|       currency: '', |       currency: '', | ||||||
| @ -442,61 +404,14 @@ export default { | |||||||
|     billingCountry () { |     billingCountry () { | ||||||
|       if (this.billingCountry) { |       if (this.billingCountry) { | ||||||
|         this.billing.country_id = this.billingCountry.id |         this.billing.country_id = this.billingCountry.id | ||||||
|         this.isDisabledBillingState = false |  | ||||||
|         this.fetchBillingStates(this.billingCountry.id) |  | ||||||
|         this.billingState = null |  | ||||||
|         this.billingCity = null |  | ||||||
|         return true |         return true | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     billingState () { |  | ||||||
|       if (this.billingState) { |  | ||||||
|         this.billing.state_id = this.billingState.id |  | ||||||
|         this.isDisabledBillingCity = false |  | ||||||
|         this.fetchBillingCities(this.billingState.id) |  | ||||||
|         this.billingCity = null |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|       this.billingCity = null |  | ||||||
|       this.isDisabledBillingCity = true |  | ||||||
|     }, |  | ||||||
|     billingCity () { |  | ||||||
|       if (this.billingCity) { |  | ||||||
|         this.billing.city_id = this.billingCity.id |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     shippingCountry () { |     shippingCountry () { | ||||||
|       if (this.shippingCountry) { |       if (this.shippingCountry) { | ||||||
|         this.shipping.country_id = this.shippingCountry.id |         this.shipping.country_id = this.shippingCountry.id | ||||||
|         this.isDisabledShippingState = false |  | ||||||
|         this.fetchShippingStates(this.shippingCountry.id) |  | ||||||
|         if (this.isCopyFromBilling) { |  | ||||||
|         return true |         return true | ||||||
|       } |       } | ||||||
|         this.shippingState = null |  | ||||||
|         this.shippingCity = null |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     shippingState () { |  | ||||||
|       if (this.shippingState) { |  | ||||||
|         this.shipping.state_id = this.shippingState.id |  | ||||||
|         this.isDisabledShippingCity = false |  | ||||||
|         this.fetchShippingCities(this.shippingState.id) |  | ||||||
|         if (this.isCopyFromBilling) { |  | ||||||
|           this.isCopyFromBilling = false |  | ||||||
|           return true |  | ||||||
|         } |  | ||||||
|         this.shippingCity = null |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|       this.shippingCity = null |  | ||||||
|       this.isDisabledShippingCity = true |  | ||||||
|     }, |  | ||||||
|     shippingCity () { |  | ||||||
|       if (this.shippingCity) { |  | ||||||
|         this.shipping.city_id = this.shippingCity.id |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   mounted () { |   mounted () { | ||||||
| @ -529,16 +444,8 @@ export default { | |||||||
|         addresses: [] |         addresses: [] | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       this.billingStates = [] |  | ||||||
|       this.billingCities = [] |  | ||||||
|       this.billingCountry = null |       this.billingCountry = null | ||||||
|       this.billingState = null |  | ||||||
|       this.billingCity = null |  | ||||||
|       this.shippingStates = [] |  | ||||||
|       this.shippingCities = [] |  | ||||||
|       this.shippingCountry = null |       this.shippingCountry = null | ||||||
|       this.shippingState = null |  | ||||||
|       this.shippingCity = null |  | ||||||
|  |  | ||||||
|       this.billing = {...AddressStub} |       this.billing = {...AddressStub} | ||||||
|       this.shipping = {...AddressStub} |       this.shipping = {...AddressStub} | ||||||
| @ -553,13 +460,9 @@ export default { | |||||||
|         this.isCopyFromBilling = true |         this.isCopyFromBilling = true | ||||||
|         this.shipping = {...this.billing, type: 'shipping'} |         this.shipping = {...this.billing, type: 'shipping'} | ||||||
|         this.shippingCountry = this.billingCountry |         this.shippingCountry = this.billingCountry | ||||||
|         this.shippingState = this.billingState |  | ||||||
|         this.shippingCity = this.billingCity |  | ||||||
|       } else { |       } else { | ||||||
|         this.shipping = {...AddressStub, type: 'shipping'} |         this.shipping = {...AddressStub, type: 'shipping'} | ||||||
|         this.shippingCountry = null |         this.shippingCountry = null | ||||||
|         this.shippingState = null |  | ||||||
|         this.shippingCity = null |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     async loadData () { |     async loadData () { | ||||||
| @ -633,30 +536,6 @@ export default { | |||||||
|       if (res) { |       if (res) { | ||||||
|         this.countryList = res.data.countries |         this.countryList = res.data.countries | ||||||
|       } |       } | ||||||
|     }, |  | ||||||
|     async fetchBillingStates (id) { |  | ||||||
|       let res = await window.axios.get(`/api/states/${id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.billingStates = res.data.states |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     async fetchBillingCities (id) { |  | ||||||
|       let res = await window.axios.get(`/api/cities/${id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.billingCities = res.data.cities |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     async fetchShippingStates (id) { |  | ||||||
|       let res = await window.axios.get(`/api/states/${id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.shippingStates = res.data.states |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     async fetchShippingCities (id) { |  | ||||||
|       let res = await window.axios.get(`/api/cities/${id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.shippingCities = res.data.cities |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -87,5 +87,16 @@ export default { | |||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       console.log(e) |       console.log(e) | ||||||
|     } |     } | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   checkValidUrl (url) { | ||||||
|  |     let pattern = new RegExp('^(https?:\\/\\/)?' + // protocol | ||||||
|  |       '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name | ||||||
|  |       '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address | ||||||
|  |       '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path | ||||||
|  |       '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string | ||||||
|  |       '(\\#[-a-z\\d_]*)?$', 'i') // fragment locator | ||||||
|  |  | ||||||
|  |     return !!pattern.test(url) | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,821 +0,0 @@ | |||||||
| export default { |  | ||||||
|   navigation: { |  | ||||||
|     // key : 'singular | plural' |  | ||||||
|     dashboard: 'Dashboard', |  | ||||||
|     customers: 'Customers', |  | ||||||
|     items: 'Items', |  | ||||||
|     invoices: 'Invoices', |  | ||||||
|     expenses: 'Expenses', |  | ||||||
|     estimates: 'Estimates', |  | ||||||
|     payments: 'Payments', |  | ||||||
|     reports: 'Reports', |  | ||||||
|     settings: 'Settings', |  | ||||||
|     logout: 'Logout' |  | ||||||
|   }, |  | ||||||
|   general: { |  | ||||||
|     view_pdf: 'View PDF', |  | ||||||
|     download_pdf: 'Download PDF', |  | ||||||
|     save: 'Save', |  | ||||||
|     cancel: 'Cancel', |  | ||||||
|     update: 'Update', |  | ||||||
|     download: 'Download', |  | ||||||
|     from_date: 'From Date', |  | ||||||
|     to_date: 'To Date', |  | ||||||
|     from: 'From', |  | ||||||
|     to: 'To', |  | ||||||
|     go_back: 'Go Back', |  | ||||||
|     back_to_login: 'Back to Login?', |  | ||||||
|     home: 'Home', |  | ||||||
|     filter: 'Filter', |  | ||||||
|     delete: 'Delete', |  | ||||||
|     edit: 'Edit', |  | ||||||
|     view: 'View', |  | ||||||
|     add_new_item: 'Add New Item', |  | ||||||
|     clear_all: 'Clear All', |  | ||||||
|     showing: 'Showing', |  | ||||||
|     of: 'of', |  | ||||||
|     actions: 'Actions', |  | ||||||
|     subtotal: 'SUBTOTAL', |  | ||||||
|     discount: 'DISCOUNT', |  | ||||||
|     fixed: 'Fixed', |  | ||||||
|     percentage: 'Percentage', |  | ||||||
|     tax: 'TAX', |  | ||||||
|     total_amount: 'TOTAL AMOUNT', |  | ||||||
|     bill_to: 'Bill to', |  | ||||||
|     ship_to: 'Ship to', |  | ||||||
|     due: 'Due', |  | ||||||
|     draft: 'Draft', |  | ||||||
|     sent: 'Sent', |  | ||||||
|     all: 'All', |  | ||||||
|     select_all: 'Select All', |  | ||||||
|     choose_file: 'Click here to choose a file', |  | ||||||
|     choose_template: 'Choose a template', |  | ||||||
|     choose: 'Choose', |  | ||||||
|     remove: 'Remove', |  | ||||||
|     powered_by: 'Powered by', |  | ||||||
|     bytefury: 'Bytefury', |  | ||||||
|     select_a_status: 'Select a status', |  | ||||||
|     select_a_tax: 'Select a tax', |  | ||||||
|     search: 'Search', |  | ||||||
|     are_you_sure: 'Are you sure?', |  | ||||||
|     list_is_empty: 'List is empty.', |  | ||||||
|     no_tax_found: 'No tax found!', |  | ||||||
|     four_zero_four: '404', |  | ||||||
|     you_got_lost: 'Whoops! You got Lost!', |  | ||||||
|     go_home: 'Go Home', |  | ||||||
|  |  | ||||||
|     setting_updated: 'Setting updated successfully', |  | ||||||
|     select_state: 'Select state', |  | ||||||
|     select_country: 'Select Country', |  | ||||||
|     select_city: 'Select City', |  | ||||||
|     street_1: 'Street 1', |  | ||||||
|     street_2: 'Street 2', |  | ||||||
|     action_failed: 'Action Failed' |  | ||||||
|   }, |  | ||||||
|   dashboard: { |  | ||||||
|     select_year: 'Select year', |  | ||||||
|     cards: { |  | ||||||
|       due_amount: 'Amount Due', |  | ||||||
|       customers: 'Customers', |  | ||||||
|       invoices: 'Invoices', |  | ||||||
|       estimates: 'Estimates' |  | ||||||
|     }, |  | ||||||
|     chart_info: { |  | ||||||
|       total_sales: 'Sales', |  | ||||||
|       total_receipts: 'Receipts', |  | ||||||
|       total_expense: 'Expenses', |  | ||||||
|       net_income: 'Net Income', |  | ||||||
|       year: 'Select year' |  | ||||||
|     }, |  | ||||||
|     weekly_invoices: { |  | ||||||
|       title: 'Weekly Invoices' |  | ||||||
|     }, |  | ||||||
|     monthly_chart: { |  | ||||||
|       title: 'Sales & Expenses' |  | ||||||
|     }, |  | ||||||
|     recent_invoices_card: { |  | ||||||
|       title: 'Due Invoices', |  | ||||||
|       due_on: 'Due On', |  | ||||||
|       customer: 'Customer', |  | ||||||
|       amount_due: 'Amount Due', |  | ||||||
|       actions: 'Actions', |  | ||||||
|       view_all: 'View All' |  | ||||||
|     }, |  | ||||||
|     recent_estimate_card: { |  | ||||||
|       title: 'Recent Estimates', |  | ||||||
|       date: 'Date', |  | ||||||
|       customer: 'Customer', |  | ||||||
|       amount_due: 'Amount Due', |  | ||||||
|       actions: 'Actions', |  | ||||||
|       view_all: 'View All' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   tax_types: { |  | ||||||
|     name: 'Name', |  | ||||||
|     description: 'Description', |  | ||||||
|     percent: 'Percent', |  | ||||||
|     compound_tax: 'Compound Tax' |  | ||||||
|   }, |  | ||||||
|   customers: { |  | ||||||
|     title: 'Customers', |  | ||||||
|     add_customer: 'Add Customer', |  | ||||||
|     contacts_list: 'Customer List', |  | ||||||
|     name: 'Name', |  | ||||||
|     display_name: 'Display Name', |  | ||||||
|     primary_contact_name: 'Primary Contact Name', |  | ||||||
|     contact_name: 'Contact Name', |  | ||||||
|     amount_due: 'Amount Due', |  | ||||||
|     email: 'Email', |  | ||||||
|     address: 'Address', |  | ||||||
|     phone: 'Phone', |  | ||||||
|     website: 'Website', |  | ||||||
|     country: 'Country', |  | ||||||
|     state: 'State', |  | ||||||
|     city: 'City', |  | ||||||
|     zip_code: 'Zip Code', |  | ||||||
|     added_on: 'Added On', |  | ||||||
|     action: 'Action', |  | ||||||
|     password: 'Password', |  | ||||||
|     street_number: 'Street Number', |  | ||||||
|     primary_currency: 'Primary Currency', |  | ||||||
|     add_new_customer: 'Add New Customer', |  | ||||||
|     save_customer: 'Save Customer', |  | ||||||
|     update_customer: 'Update Customer', |  | ||||||
|     customer: 'Customer | Customers', |  | ||||||
|     new_customer: 'New Customer', |  | ||||||
|     edit_customer: 'Edit Customer', |  | ||||||
|     basic_info: 'Basic Info', |  | ||||||
|     billing_address: 'Billing Address', |  | ||||||
|     shipping_address: 'Shipping Address', |  | ||||||
|     copy_billing_address: 'Copy from Billing', |  | ||||||
|     no_customers: 'No customers yet!', |  | ||||||
|     no_customers_found: 'No customers found!', |  | ||||||
|     list_of_customers: 'This section will contain the list of customers.', |  | ||||||
|     primary_display_name: 'Primary Display Name', |  | ||||||
|     select_currency: 'Select currency', |  | ||||||
|     select_a_customer: 'Select a customer', |  | ||||||
|     type_or_click: 'Type or click to select', |  | ||||||
|  |  | ||||||
|     confirm_delete: 'You will not be able to recover this Customer | You will not be able to recover these Customers', |  | ||||||
|     created_message: 'Customer created successfully', |  | ||||||
|     updated_message: 'Customer updated successfully', |  | ||||||
|     deleted_message: 'Customer deleted successfully | Customers deleted successfully' |  | ||||||
|   }, |  | ||||||
|   items: { |  | ||||||
|     title: 'Items', |  | ||||||
|     items_list: 'Items List', |  | ||||||
|     name: 'Name', |  | ||||||
|     unit: 'Unit', |  | ||||||
|     description: 'Description', |  | ||||||
|     added_on: 'Added On', |  | ||||||
|     price: 'Price', |  | ||||||
|     date_of_creation: 'Date Of Creation', |  | ||||||
|     action: 'Action', |  | ||||||
|     add_item: 'Add Item', |  | ||||||
|     save_item: 'Save Item', |  | ||||||
|     update_item: 'Update Item', |  | ||||||
|     item: 'Item | Items', |  | ||||||
|     add_new_item: 'Add New Item', |  | ||||||
|     new_item: 'New Item', |  | ||||||
|     edit_item: 'Edit Item', |  | ||||||
|     no_items: 'No items yet!', |  | ||||||
|     list_of_items: 'This section will contain the list of items.', |  | ||||||
|     select_a_unit: 'select unit', |  | ||||||
|  |  | ||||||
|     item_attached_message: 'Cannot delete an item which is already in use', |  | ||||||
|     confirm_delete: 'You will not be able to recover this Item | You will not be able to recover these Items', |  | ||||||
|     created_message: 'Item created successfully', |  | ||||||
|     updated_message: 'Item updated successfully', |  | ||||||
|     deleted_message: 'Item deleted successfully | Items deleted successfully' |  | ||||||
|   }, |  | ||||||
|   estimates: { |  | ||||||
|     title: 'Estimates', |  | ||||||
|     estimate: 'Estimate | Estimates', |  | ||||||
|     estimates_list: 'Estimates List', |  | ||||||
|     days: '{days} Days', |  | ||||||
|     months: '{months} Month', |  | ||||||
|     years: '{years} Year', |  | ||||||
|     all: 'All', |  | ||||||
|     paid: 'Paid', |  | ||||||
|     unpaid: 'Unpaid', |  | ||||||
|     customer: 'CUSTOMER', |  | ||||||
|     ref_no: 'REF NO.', |  | ||||||
|     number: 'NUMBER', |  | ||||||
|     amount_due: 'AMOUNT DUE', |  | ||||||
|     partially_paid: 'Partially Paid', |  | ||||||
|     total: 'Total', |  | ||||||
|     discount: 'Discount', |  | ||||||
|     sub_total: 'Sub Total', |  | ||||||
|     estimate_number: 'Estimate Number', |  | ||||||
|     ref_number: 'Ref Number', |  | ||||||
|     contact: 'Contact', |  | ||||||
|     add_item: 'Add an Item', |  | ||||||
|     date: 'Date', |  | ||||||
|     due_date: 'Due Date', |  | ||||||
|     expiry_date: 'Expiry Date', |  | ||||||
|     status: 'Status', |  | ||||||
|     add_tax: 'Add Tax', |  | ||||||
|     amount: 'Amount', |  | ||||||
|     action: 'Action', |  | ||||||
|     notes: 'Notes', |  | ||||||
|     tax: 'Tax', |  | ||||||
|     estimate_template: 'Template', |  | ||||||
|     convert_to_invoice: 'Convert to Invoice', |  | ||||||
|     mark_as_sent: 'Mark as Sent', |  | ||||||
|     send_estimate: 'Send Estimate', |  | ||||||
|     record_payment: 'Record Payment', |  | ||||||
|     add_estimate: 'Add Estimate', |  | ||||||
|     save_estimate: 'Save Estimate', |  | ||||||
|     confirm_conversion: 'You want to convert this Estimate into Invoice?', |  | ||||||
|     conversion_message: 'Invoice created successful', |  | ||||||
|     confirm_send_estimate: 'This estimate will be sent via email to the customer', |  | ||||||
|     confirm_mark_as_sent: 'This estimate will be marked as sent', |  | ||||||
|     confirm_mark_as_accepted: 'This estimate will be marked as Accepted', |  | ||||||
|     confirm_mark_as_rejected: 'This estimate will be marked as Rejected', |  | ||||||
|     no_matching_estimates: 'There are no matching estimates!', |  | ||||||
|     mark_as_sent_successfully: 'Estimate marked as sent successfully', |  | ||||||
|     send_estimate_successfully: 'Estimate sent successfully', |  | ||||||
|     errors: { |  | ||||||
|       required: 'Field is required' |  | ||||||
|     }, |  | ||||||
|     accepted: 'Accepted', |  | ||||||
|     sent: 'Sent', |  | ||||||
|     draft: 'Draft', |  | ||||||
|     declined: 'Declined', |  | ||||||
|     new_estimate: 'New Estimate', |  | ||||||
|     add_new_estimate: 'Add New Estimate', |  | ||||||
|     update_Estimate: 'Update Estimate', |  | ||||||
|     edit_estimate: 'Edit Estimate', |  | ||||||
|     items: 'items', |  | ||||||
|     Estimate: 'Estimate | Estimates', |  | ||||||
|     add_new_tax: 'Add New Tax', |  | ||||||
|     no_estimates: 'No estimates yet!', |  | ||||||
|     list_of_estimates: 'This section will contain the list of estimates.', |  | ||||||
|     mark_as_rejected: 'Mark as rejected', |  | ||||||
|     mark_as_accepted: 'Mark as accepted', |  | ||||||
|  |  | ||||||
|     marked_as_accepted_message: 'Estimate marked as accepted', |  | ||||||
|     marked_as_rejected_message: 'Estimate marked as rejected', |  | ||||||
|     confirm_delete: 'You will not be able to recover this Estimate | You will not be able to recover these Estimates', |  | ||||||
|     created_message: 'Estimate created successfully', |  | ||||||
|     updated_message: 'Estimate updated successfully', |  | ||||||
|     deleted_message: 'Estimate deleted successfully | Estimates deleted successfully', |  | ||||||
|     user_email_does_not_exist: 'User email does not exist', |  | ||||||
|     something_went_wrong: 'something went wrong', |  | ||||||
|     item: { |  | ||||||
|       title: 'Item Title', |  | ||||||
|       description: 'Description', |  | ||||||
|       quantity: 'Quantity', |  | ||||||
|       price: 'Price', |  | ||||||
|       discount: 'Discount', |  | ||||||
|       total: 'Total', |  | ||||||
|       total_discount: 'Total Discount', |  | ||||||
|       sub_total: 'Sub Total', |  | ||||||
|       tax: 'Tax', |  | ||||||
|       amount: 'Amount', |  | ||||||
|       select_an_item: 'Type or click to select an item', |  | ||||||
|       type_item_description: 'Type Item Description (optional)' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   invoices: { |  | ||||||
|     title: 'Invoices', |  | ||||||
|     invoices_list: 'Invoices List', |  | ||||||
|     days: '{days} Days', |  | ||||||
|     months: '{months} Month', |  | ||||||
|     years: '{years} Year', |  | ||||||
|     all: 'All', |  | ||||||
|     paid: 'Paid', |  | ||||||
|     unpaid: 'Unpaid', |  | ||||||
|     customer: 'CUSTOMER', |  | ||||||
|     paid_status: 'PAID STATUS', |  | ||||||
|     ref_no: 'REF NO.', |  | ||||||
|     number: 'NUMBER', |  | ||||||
|     amount_due: 'AMOUNT DUE', |  | ||||||
|     partially_paid: 'Partially Paid', |  | ||||||
|     total: 'Total', |  | ||||||
|     discount: 'Discount', |  | ||||||
|     sub_total: 'Sub Total', |  | ||||||
|     invoice: 'Invoice | Invoices', |  | ||||||
|     invoice_number: 'Invoice Number', |  | ||||||
|     ref_number: 'Ref Number', |  | ||||||
|     contact: 'Contact', |  | ||||||
|     add_item: 'Add an Item', |  | ||||||
|     date: 'Date', |  | ||||||
|     due_date: 'Due Date', |  | ||||||
|     status: 'Status', |  | ||||||
|     add_tax: 'Add Tax', |  | ||||||
|     amount: 'Amount', |  | ||||||
|     action: 'Action', |  | ||||||
|     notes: 'Notes', |  | ||||||
|     view: 'View', |  | ||||||
|     send_invoice: 'Send Invoice', |  | ||||||
|     invoice_template: 'Invoice Template', |  | ||||||
|     template: 'Template', |  | ||||||
|     mark_as_sent: 'Mark as sent', |  | ||||||
|     confirm_send_invoice: 'This invoice will be sent via email to the customer', |  | ||||||
|     invoice_mark_as_sent: 'This invoice will be marked as sent', |  | ||||||
|     confirm_send: 'This invoice will be sent via email to the customer', |  | ||||||
|     invoice_date: 'Invoice Date', |  | ||||||
|     record_payment: 'Record Payment', |  | ||||||
|     add_new_invoice: 'Add New Invoice', |  | ||||||
|     update_expense: 'Update Expense', |  | ||||||
|     edit_invoice: 'Edit Invoice', |  | ||||||
|     new_invoice: 'New Invoice', |  | ||||||
|     save_invoice: 'Save Invoice', |  | ||||||
|     update_invoice: 'Update Invoice', |  | ||||||
|     add_new_tax: 'Add New Tax', |  | ||||||
|     no_invoices: 'No Invoices yet!', |  | ||||||
|     list_of_invoices: 'This section will contain the list of invoices.', |  | ||||||
|     select_invoice: 'Select Invoice', |  | ||||||
|     no_matching_invoices: 'There are no matching invoices!', |  | ||||||
|     mark_as_sent_successfully: 'Invoice marked as sent successfully', |  | ||||||
|     send_invoice_successfully: 'Invoice sent successfully', |  | ||||||
|     item: { |  | ||||||
|       title: 'Item Title', |  | ||||||
|       description: 'Description', |  | ||||||
|       quantity: 'Quantity', |  | ||||||
|       price: 'Price', |  | ||||||
|       discount: 'Discount', |  | ||||||
|       total: 'Total', |  | ||||||
|       total_discount: 'Total Discount', |  | ||||||
|       sub_total: 'Sub Total', |  | ||||||
|       tax: 'Tax', |  | ||||||
|       amount: 'Amount', |  | ||||||
|       select_an_item: 'Type or click to select an item', |  | ||||||
|       type_item_description: 'Type Item Description (optional)' |  | ||||||
|     }, |  | ||||||
|  |  | ||||||
|     payment_attached_message: 'One of the selected invoices already have a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal', |  | ||||||
|     confirm_delete: 'You will not be able to recover this Invoice | You will not be able to recover these Invoices', |  | ||||||
|     created_message: 'Invoice created successfully', |  | ||||||
|     updated_message: 'Invoice updated successfully', |  | ||||||
|     deleted_message: 'Invoice deleted successfully | Invoices deleted successfully', |  | ||||||
|     marked_as_sent_message: 'Invoice marked as sent successfully', |  | ||||||
|     user_email_does_not_exist: 'User email does not exist', |  | ||||||
|     something_went_wrong: 'something went wrong', |  | ||||||
|     invalid_due_amount_message: 'Total Invoice amount cannot be less than total paid amount for this Invoice. Please update the invoice or delete the associated payments to continue.' |  | ||||||
|   }, |  | ||||||
|   credit_notes: { |  | ||||||
|     title: 'Credit Notes', |  | ||||||
|     credit_notes_list: 'Credit Notes List', |  | ||||||
|     // Fields |  | ||||||
|     credit_notes: 'Credit Notes', |  | ||||||
|     contact: 'Contact', |  | ||||||
|     date: 'Date', |  | ||||||
|     amount: 'Amount', |  | ||||||
|     action: 'Action', |  | ||||||
|     credit_number: 'Credit Number', |  | ||||||
|     notes: 'Notes', |  | ||||||
|     confirm_delete: 'Do you want to delete this credit note?', |  | ||||||
|     item: { |  | ||||||
|       title: 'Item Title', |  | ||||||
|       description: 'Description', |  | ||||||
|       quantity: 'Quantity', |  | ||||||
|       price: 'Price', |  | ||||||
|       discount: 'Discount', |  | ||||||
|       total: 'Total', |  | ||||||
|       total_discount: 'Total Discount', |  | ||||||
|       sub_total: 'Sub Total', |  | ||||||
|       tax: 'Tax' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   payments: { |  | ||||||
|     title: 'Payments', |  | ||||||
|     payments_list: 'Payments List', |  | ||||||
|     record_payment: 'Record Payment', |  | ||||||
|     // Fields |  | ||||||
|     customer: 'Customer', |  | ||||||
|     date: 'Date', |  | ||||||
|     amount: 'Amount', |  | ||||||
|     action: 'Action', |  | ||||||
|     payment_number: 'Payment Number', |  | ||||||
|     payment_mode: 'Payment Mode', |  | ||||||
|     invoice: 'Invoice', |  | ||||||
|     note: 'Note', |  | ||||||
|     add_payment: 'Add Payment', |  | ||||||
|     new_payment: 'New Payment', |  | ||||||
|     edit_payment: 'Edit Payment', |  | ||||||
|     view_payment: 'View Payment', |  | ||||||
|     add_new_payment: 'Add New Payment', |  | ||||||
|     save_payment: 'Save Payment', |  | ||||||
|     update_payment: 'Update Payment', |  | ||||||
|     payment: 'Payment | Payments', |  | ||||||
|     no_payments: 'No payments yet!', |  | ||||||
|     list_of_payments: 'This section will contain the list of payments.', |  | ||||||
|     select_payment_mode: 'Select payment mode', |  | ||||||
|  |  | ||||||
|     confirm_delete: 'You will not be able to recover this Payment | You will not be able to recover these Payments', |  | ||||||
|     created_message: 'Payment created successfully', |  | ||||||
|     updated_message: 'Payment updated successfully', |  | ||||||
|     deleted_message: 'Payment deleted successfully | Payments deleted successfully', |  | ||||||
|     invalid_amount_message: 'Payment amount is invalid' |  | ||||||
|   }, |  | ||||||
|   expenses: { |  | ||||||
|     title: 'Expenses', |  | ||||||
|     expenses_list: 'Expenses List', |  | ||||||
|     // Fields |  | ||||||
|     expense_title: 'Title', |  | ||||||
|     contact: 'Contact', |  | ||||||
|     category: 'Category', |  | ||||||
|     from_date: 'From Date', |  | ||||||
|     to_date: 'To Date', |  | ||||||
|     expense_date: 'Date', |  | ||||||
|     description: 'Description', |  | ||||||
|     receipt: 'Receipt', |  | ||||||
|     amount: 'Amount', |  | ||||||
|     action: 'Action', |  | ||||||
|     note: 'Note', |  | ||||||
|     category_id: 'Category Id', |  | ||||||
|     date: 'Expense Date', |  | ||||||
|     add_expense: 'Add Expense', |  | ||||||
|     add_new_expense: 'Add New Expense', |  | ||||||
|     save_expense: 'Save Expense', |  | ||||||
|     update_expense: 'Update Expense', |  | ||||||
|     download_receipt: 'Download Receipt', |  | ||||||
|     edit_expense: 'Edit Expense', |  | ||||||
|     new_expense: 'New Expense', |  | ||||||
|     expense: 'Expense | Expenses', |  | ||||||
|     no_expenses: 'No expenses yet!', |  | ||||||
|     list_of_expenses: 'This section will contain the list of expenses.', |  | ||||||
|  |  | ||||||
|     confirm_delete: 'You will not be able to recover this Expense | You will not be able to recover these Expenses', |  | ||||||
|     created_message: 'Expense created successfully', |  | ||||||
|     updated_message: 'Expense updated successfully', |  | ||||||
|     deleted_message: 'Expense deleted successfully | Expenses deleted successfully', |  | ||||||
|     categories: { |  | ||||||
|       categories_list: 'Categories List', |  | ||||||
|       title: 'Title', |  | ||||||
|       name: 'Name', |  | ||||||
|       description: 'Description', |  | ||||||
|       amount: 'Amount', |  | ||||||
|       actions: 'Actions', |  | ||||||
|       add_category: 'Add Category', |  | ||||||
|       new_category: 'New Category', |  | ||||||
|       category: 'Category | Categories', |  | ||||||
|       select_a_category: 'Select a category' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   login: { |  | ||||||
|     email: 'Email', |  | ||||||
|     password: 'Password', |  | ||||||
|     forgot_password: 'Forgot Password?', |  | ||||||
|     or_signIn_with: 'or Sign in with:', |  | ||||||
|     login: 'Login', |  | ||||||
|     register: 'Register', |  | ||||||
|     reset_password: 'Reset Password', |  | ||||||
|     password_reset_successfully: 'Password Reset Successfully', |  | ||||||
|     enter_email: 'Enter email', |  | ||||||
|     enter_password: 'Enter Password', |  | ||||||
|     retype_password: 'Retype Password', |  | ||||||
|     login_placeholder: 'mail@example.com' |  | ||||||
|   }, |  | ||||||
|   reports: { |  | ||||||
|     title: 'Report', |  | ||||||
|     from_date: 'From Date', |  | ||||||
|     to_date: 'To Date', |  | ||||||
|     status: 'Status', |  | ||||||
|     paid: 'Paid', |  | ||||||
|     unpaid: 'Unpaid', |  | ||||||
|     download_pdf: 'Download PDF', |  | ||||||
|     view_pdf: 'View PDF', |  | ||||||
|     update_report: 'Update Report', |  | ||||||
|     report: 'Report | Reports', |  | ||||||
|     profit_loss: { |  | ||||||
|       profit_loss: 'Profit & Loss', |  | ||||||
|       to_date: 'To Date', |  | ||||||
|       from_date: 'From Date', |  | ||||||
|       date_range: 'Select Date Range' |  | ||||||
|     }, |  | ||||||
|     sales: { |  | ||||||
|       sales: 'Sales', |  | ||||||
|       date_range: 'Select Date Range', |  | ||||||
|       to_date: 'To Date', |  | ||||||
|       from_date: 'From Date', |  | ||||||
|       report_type: 'Report Type' |  | ||||||
|     }, |  | ||||||
|     taxes: { |  | ||||||
|       taxes: 'Taxes', |  | ||||||
|       to_date: 'To Date', |  | ||||||
|       from_date: 'From Date', |  | ||||||
|       date_range: 'Select Date Range' |  | ||||||
|     }, |  | ||||||
|     errors: { |  | ||||||
|       required: 'Field is required' |  | ||||||
|     }, |  | ||||||
|     invoices: { |  | ||||||
|       invoice: 'Invoice', |  | ||||||
|       invoice_date: 'Invoice Date', |  | ||||||
|       due_date: 'Due Date', |  | ||||||
|       amount: 'Amount', |  | ||||||
|       contact_name: 'Contact Name', |  | ||||||
|       status: 'Status' |  | ||||||
|     }, |  | ||||||
|     estimates: { |  | ||||||
|       estimate: 'Estimate', |  | ||||||
|       estimate_date: 'Estimate Date', |  | ||||||
|       due_date: 'Due Date', |  | ||||||
|       estimate_number: 'Estimate Number', |  | ||||||
|       ref_number: 'Ref Number', |  | ||||||
|       amount: 'Amount', |  | ||||||
|       contact_name: 'Contact Name', |  | ||||||
|       status: 'Status' |  | ||||||
|     }, |  | ||||||
|     expenses: { |  | ||||||
|       expenses: 'Expenses', |  | ||||||
|       category: 'Category', |  | ||||||
|       date: 'Date', |  | ||||||
|       amount: 'Amount', |  | ||||||
|       to_date: 'To Date', |  | ||||||
|       from_date: 'From Date', |  | ||||||
|       date_range: 'Select Date Range' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   settings: { |  | ||||||
|     menu_title: { |  | ||||||
|       account_settings: 'Account Settings', |  | ||||||
|       company_information: 'Company Information', |  | ||||||
|       preferences: 'Preferences', |  | ||||||
|       notifications: 'Notifications', |  | ||||||
|       tax_types: 'Tax Types', |  | ||||||
|       expense_category: 'Expense Categories', |  | ||||||
|       update_app: 'Update App' |  | ||||||
|     }, |  | ||||||
|     title: 'Settings', |  | ||||||
|     setting: 'Settings | Settings', |  | ||||||
|     general: 'General', |  | ||||||
|     language: 'Language', |  | ||||||
|     primary_currency: 'Primary Currency', |  | ||||||
|     timezone: 'Time Zone', |  | ||||||
|     date_format: 'Date Format', |  | ||||||
|     currencies: { |  | ||||||
|       title: 'Currencies', |  | ||||||
|       currency: 'Currency | Currencies', |  | ||||||
|       currencies_list: 'Currencies List', |  | ||||||
|       select_currency: 'Select Currency', |  | ||||||
|       name: 'Name', |  | ||||||
|       code: 'Code', |  | ||||||
|       symbol: 'Symbol', |  | ||||||
|       precision: 'Precision', |  | ||||||
|       thousand_separator: 'Thousand Separator', |  | ||||||
|       decimal_separator: 'Decimal Separator', |  | ||||||
|       position: 'Position', |  | ||||||
|       position_of_symbol: 'Position Of Symbol', |  | ||||||
|       right: 'Right', |  | ||||||
|       left: 'Left', |  | ||||||
|       action: 'Action', |  | ||||||
|       add_currency: 'Add Currency' |  | ||||||
|     }, |  | ||||||
|     mail: { |  | ||||||
|       host: 'Mail Host', |  | ||||||
|       port: 'Mail Port', |  | ||||||
|       driver: 'Mail Driver', |  | ||||||
|       secret: 'Secret', |  | ||||||
|       mailgun_secret: 'Mailgun Secret', |  | ||||||
|       mailgun_domain: 'Domain', |  | ||||||
|       mailgun_endpoint: 'Mailgun Endpoint', |  | ||||||
|       ses_secret: 'SES Secret', |  | ||||||
|       ses_key: 'SES Key', |  | ||||||
|       password: 'Mail Password', |  | ||||||
|       username: 'Mail Username', |  | ||||||
|       mail_config: 'Mail Configuration', |  | ||||||
|       from_name: 'From Mail Name', |  | ||||||
|       from_mail: 'From Mail Address', |  | ||||||
|       encryption: 'Mail Encryption', |  | ||||||
|       mail_config_desc: 'Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc.' |  | ||||||
|     }, |  | ||||||
|     pdf: { |  | ||||||
|       title: 'PDF Setting', |  | ||||||
|       footer_text: 'Footer Text', |  | ||||||
|       pdf_layout: 'PDF Layout' |  | ||||||
|     }, |  | ||||||
|     company_info: { |  | ||||||
|       company_info: 'Company info', |  | ||||||
|       company_name: 'Company Name', |  | ||||||
|       company_logo: 'Company Logo', |  | ||||||
|       section_description: 'Information about your company that will be displayed on invoices, estimates and other documents created by Crater.', |  | ||||||
|       phone: 'Phone', |  | ||||||
|       country: 'Country', |  | ||||||
|       state: 'State', |  | ||||||
|       city: 'City', |  | ||||||
|       address: 'Address', |  | ||||||
|       zip: 'Zip', |  | ||||||
|       save: 'Save', |  | ||||||
|       updated_message: 'Company information updated successfully' |  | ||||||
|     }, |  | ||||||
|     account_settings: { |  | ||||||
|       profile_picture: 'Profile Picture', |  | ||||||
|       name: 'Name', |  | ||||||
|       email: 'Email', |  | ||||||
|       password: 'Password', |  | ||||||
|       confirm_password: 'Confirm Password', |  | ||||||
|       account_settings: 'Account Settings', |  | ||||||
|       save: 'Save', |  | ||||||
|       section_description: 'You can update your name, email & password using the form below.', |  | ||||||
|       updated_message: 'Account Settings updated successfully' |  | ||||||
|     }, |  | ||||||
|     user_profile: { |  | ||||||
|       name: 'Name', |  | ||||||
|       email: 'Email', |  | ||||||
|       password: 'Password', |  | ||||||
|       confirm_password: 'Confirm Password' |  | ||||||
|     }, |  | ||||||
|     notification: { |  | ||||||
|       title: 'Notification', |  | ||||||
|       email: 'Send Notifications to', |  | ||||||
|       description: 'Which email notifications would you like to receive when something changes?', |  | ||||||
|       invoice_viewed: 'Invoice viewed', |  | ||||||
|       invoice_viewed_desc: 'When your customer views the invoice sent via crater dashboard.', |  | ||||||
|       estimate_viewed: 'Estimate viewed', |  | ||||||
|       estimate_viewed_desc: 'When your customer views the estimate sent via crater dashboard.', |  | ||||||
|       save: 'Save', |  | ||||||
|       email_save_message: 'Email saved successfully', |  | ||||||
|       please_enter_email: 'Please Enter Email' |  | ||||||
|     }, |  | ||||||
|     tax_types: { |  | ||||||
|       title: 'Tax Types', |  | ||||||
|       add_tax: 'Add Tax', |  | ||||||
|       description: 'You can add or Remove Taxes as you please. Crater supports Taxes on Individual Items as well as on the invoice.', |  | ||||||
|       add_new_tax: 'Add New Tax', |  | ||||||
|       tax_settings: 'Tax Settings', |  | ||||||
|       tax_per_item: 'Tax Per Item', |  | ||||||
|       tax_name: 'Tax Name', |  | ||||||
|       compound_tax: 'Compound Tax', |  | ||||||
|       percent: 'Percent', |  | ||||||
|       action: 'Action', |  | ||||||
|       tax_setting_description: 'Enable this if you want to add taxes to individual invoice items. By default, taxes are added directly to the invoice.', |  | ||||||
|       created_message: 'Tax type created successfully', |  | ||||||
|       updated_message: 'Tax type updated successfully', |  | ||||||
|       deleted_message: 'Tax type deleted successfully', |  | ||||||
|       confirm_delete: 'You will not be able to recover this Tax Type', |  | ||||||
|       already_in_use: 'Tax is already in use' |  | ||||||
|     }, |  | ||||||
|     expense_category: { |  | ||||||
|       title: 'Expense Categories', |  | ||||||
|       action: 'Action', |  | ||||||
|       description: 'Categories are required for adding expense entries. You can Add or Remove these categories according to your preference.', |  | ||||||
|       add_new_category: 'Add New Category', |  | ||||||
|       category_name: 'Category Name', |  | ||||||
|       category_description: 'Description', |  | ||||||
|       created_message: 'Expense Category created successfully', |  | ||||||
|       deleted_message: 'Expense category deleted successfully', |  | ||||||
|       updated_message: 'Expense category updated successfully', |  | ||||||
|       confirm_delete: 'You will not be able to recover this Expense Category', |  | ||||||
|       already_in_use: 'Category is already in use' |  | ||||||
|     }, |  | ||||||
|     preferences: { |  | ||||||
|       currency: 'Currency', |  | ||||||
|       language: 'Language', |  | ||||||
|       time_zone: 'Time Zone', |  | ||||||
|       fiscal_year: 'Financial Year', |  | ||||||
|       date_format: 'Date Format', |  | ||||||
|       discount_setting: 'Discount Setting', |  | ||||||
|       discount_per_item: 'Discount Per Item ', |  | ||||||
|       discount_setting_description: 'Enable this if you want to add Discount to individual invoice items. By default, Discount are added directly to the invoice.', |  | ||||||
|       save: 'Save', |  | ||||||
|       preference: 'Preference | Preferences', |  | ||||||
|       general_settings: 'Default preferences for the system.', |  | ||||||
|       updated_message: 'Preferences updated successfully', |  | ||||||
|       select_language: 'select language', |  | ||||||
|       select_time_zone: 'select Time Zone', |  | ||||||
|       select_date_formate: 'select Date Formate', |  | ||||||
|       select_financial_year: 'select financial year' |  | ||||||
|     }, |  | ||||||
|     update_app: { |  | ||||||
|       title: 'Update App', |  | ||||||
|       description: 'You can easily update Crater by checking for a new update by clicking the button below', |  | ||||||
|       check_update: 'Check for updates', |  | ||||||
|       avail_update: 'New Update available', |  | ||||||
|       next_version: 'Next version', |  | ||||||
|       update: 'Update Now', |  | ||||||
|       update_progress: 'Update in progress...', |  | ||||||
|       progress_text: 'It will just take a few minutes. Please do not refresh the screen or close the window before the update finishes', |  | ||||||
|       update_success: 'App has been updated! Please wait while your browser window gets reloaded automatically.', |  | ||||||
|       latest_message: 'No update available! You are on the latest version.', |  | ||||||
|       current_version: 'Current Version' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   wizard: { |  | ||||||
|     account_info: 'Account Information', |  | ||||||
|     account_info_desc: 'Below details will be used to create the main Administrator account. Also you can change the details anytime after logging in.', |  | ||||||
|     name: 'Name', |  | ||||||
|     email: 'Email', |  | ||||||
|     password: 'Password', |  | ||||||
|     confirm_password: 'Confirm Password', |  | ||||||
|     save_cont: 'Save & Continue', |  | ||||||
|     company_info: 'Company Information', |  | ||||||
|     company_info_desc: 'This information will be displayed on invoices. Note that you can edit this later on settings page.', |  | ||||||
|     company_name: 'Company Name', |  | ||||||
|     company_logo: 'Company Logo', |  | ||||||
|     logo_preview: 'Logo Preview', |  | ||||||
|     preferences: 'Preferences', |  | ||||||
|     preferences_desc: 'Default preferences for the system.', |  | ||||||
|     country: 'Country', |  | ||||||
|     state: 'State', |  | ||||||
|     city: 'City', |  | ||||||
|     address: 'Address', |  | ||||||
|     street: 'Street1' | 'Street2', |  | ||||||
|     phone: 'Phone', |  | ||||||
|     zip_code: 'Zip Code', |  | ||||||
|     go_back: 'Go Back', |  | ||||||
|     currency: 'Currency', |  | ||||||
|     language: 'Language', |  | ||||||
|     time_zone: 'Time Zone', |  | ||||||
|     fiscal_year: 'Financial Year', |  | ||||||
|     date_format: 'Date Format', |  | ||||||
|     from_address: 'From Address', |  | ||||||
|     username: 'Username', |  | ||||||
|     next: 'Next', |  | ||||||
|     continue: 'Continue', |  | ||||||
|     skip: 'Skip', |  | ||||||
|     database: { |  | ||||||
|       database: 'Site URL & Database', |  | ||||||
|       connection: 'Database Connection', |  | ||||||
|       host: 'Database Host', |  | ||||||
|       port: 'Database Port', |  | ||||||
|       password: 'Database Password', |  | ||||||
|       app_url: 'App URL', |  | ||||||
|       username: 'Database Username', |  | ||||||
|       db_name: 'Database Name', |  | ||||||
|       desc: 'Create a database on your server and set the credentials using the form below.' |  | ||||||
|     }, |  | ||||||
|     permissions: { |  | ||||||
|       permissions: 'Permissions', |  | ||||||
|       permission_confirm_title: 'Are you sure you want to continue?', |  | ||||||
|       permission_confirm_desc: 'Folder permission check failed', |  | ||||||
|       permission_desc: 'Below is the list of folder permissions which are required in order for the app to work. If the permission check fails, make sure to update your folder permissions.' |  | ||||||
|     }, |  | ||||||
|     mail: { |  | ||||||
|       host: 'Mail Host', |  | ||||||
|       port: 'Mail Port', |  | ||||||
|       driver: 'Mail Driver', |  | ||||||
|       secret: 'Secret', |  | ||||||
|       mailgun_secret: 'Mailgun Secret', |  | ||||||
|       mailgun_domain: 'Domain', |  | ||||||
|       mailgun_endpoint: 'Mailgun Endpoint', |  | ||||||
|       ses_secret: 'SES Secret', |  | ||||||
|       ses_key: 'SES Key', |  | ||||||
|       password: 'Mail Password', |  | ||||||
|       username: 'Mail Username', |  | ||||||
|       mail_config: 'Mail Configuration', |  | ||||||
|       from_name: 'From Mail Name', |  | ||||||
|       from_mail: 'From Mail Address', |  | ||||||
|       encryption: 'Mail Encryption', |  | ||||||
|       mail_config_desc: 'Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc.' |  | ||||||
|     }, |  | ||||||
|     req: { |  | ||||||
|       system_req: 'System Requirements', |  | ||||||
|       php_req_version: 'Php (version {version} required)', |  | ||||||
|       check_req: 'Check Requirements', |  | ||||||
|       system_req_desc: 'Crater has a few server requirements. Make sure that your server has the required php version and all the extensions mentioned below.' |  | ||||||
|     }, |  | ||||||
|     errors: { |  | ||||||
|       migrate_failed: 'Migrate Failed', |  | ||||||
|       database_variables_save_error: 'Unable to connect to the DB with Provided Values.', |  | ||||||
|       mail_variables_save_error: 'Email configuration failed.', |  | ||||||
|       connection_failed: 'Database connection failed', |  | ||||||
|       database_should_be_empty: 'Database should be empty' |  | ||||||
|     }, |  | ||||||
|     success: { |  | ||||||
|       mail_variables_save_successfully: 'Email configured successfully', |  | ||||||
|       database_variables_save_successfully: 'Database configured successfully.' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   layout_login: { |  | ||||||
|     copyright_crater: 'Copyright @ Crater - 2019', |  | ||||||
|     super_simple_invoicing: 'Super Simple Invoicing', |  | ||||||
|     for_freelancer: 'for Freelancers &', |  | ||||||
|     small_businesses: 'Small Businesses ', |  | ||||||
|     crater_help: 'Crater helps you track expenses, record payments & generate beautiful', |  | ||||||
|     invoices_and_estimates: 'invoices & estimates with ability to choose multiple templates.' |  | ||||||
|   }, |  | ||||||
|   validation: { |  | ||||||
|     invalid_url: 'Invalid url (ex: http://www.crater.com)', |  | ||||||
|     required: 'Field is required', |  | ||||||
|     email_incorrect: 'Incorrect Email.', |  | ||||||
|     email_already_taken: 'The email has already been taken.', |  | ||||||
|     email_does_not_exist: "User with given email doesn't exist", |  | ||||||
|     send_reset_link: 'Send Reset Link', |  | ||||||
|     not_yet: 'Not yet? Send it again', |  | ||||||
|     password_min_length: 'Password must contain {count} characters', |  | ||||||
|     name_min_length: 'Name must have at least {count} letters.', |  | ||||||
|     enter_valid_tax_rate: 'Enter valid tax rate', |  | ||||||
|     numbers_only: 'Numbers Only.', |  | ||||||
|     characters_only: 'Characters Only.', |  | ||||||
|     password_incorrect: 'Passwords must be identical', |  | ||||||
|     password_length: 'Password must be {count} character long.', |  | ||||||
|     qty_must_greater_than_zero: 'Quantity must be greater than zero.', |  | ||||||
|     price_greater_than_zero: 'Price must be greater than zero.', |  | ||||||
|     payment_greater_than_zero: 'Payment must be greater than   zero.', |  | ||||||
|     payment_greater_than_due_amount: 'Entered Payment is more than due amount of this invoice.', |  | ||||||
|     quantity_maxlength: 'Quantity should not be greater than 20 digits.', |  | ||||||
|     price_maxlength: 'Price should not be greater than 20 digits.', |  | ||||||
|     price_minvalue: 'Price should be greater than 0.', |  | ||||||
|     amount_maxlength: 'Amount should not be greater than 20 digits.', |  | ||||||
|     amount_minvalue: 'Amount should be greater than 0.', |  | ||||||
|     description_maxlength: 'Description should not be greater than 255 characters.', |  | ||||||
|     maximum_options_error: 'Maximum  of {max} options selected. First remove a selected option to select another.', |  | ||||||
|     notes_maxlength: 'Notes should not be greater than 255 characters.', |  | ||||||
|     address_maxlength: 'Address should not be greater than 255 characters.', |  | ||||||
|     ref_number_maxlength: 'Ref Number should not be greater than 255 characters.' |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										817
									
								
								resources/assets/js/plugins/en.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										817
									
								
								resources/assets/js/plugins/en.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,817 @@ | |||||||
|  | { | ||||||
|  |   "navigation": { | ||||||
|  |     "dashboard": "Dashboard", | ||||||
|  |     "customers": "Customers", | ||||||
|  |     "items": "Items", | ||||||
|  |     "invoices": "Invoices", | ||||||
|  |     "expenses": "Expenses", | ||||||
|  |     "estimates": "Estimates", | ||||||
|  |     "payments": "Payments", | ||||||
|  |     "reports": "Reports", | ||||||
|  |     "settings": "Settings", | ||||||
|  |     "logout": "Logout" | ||||||
|  |   }, | ||||||
|  |   "general": { | ||||||
|  |     "view_pdf": "View PDF", | ||||||
|  |     "download_pdf": "Download PDF", | ||||||
|  |     "save": "Save", | ||||||
|  |     "cancel": "Cancel", | ||||||
|  |     "update": "Update", | ||||||
|  |     "download": "Download", | ||||||
|  |     "from_date": "From Date", | ||||||
|  |     "to_date": "To Date", | ||||||
|  |     "from": "From", | ||||||
|  |     "to": "To", | ||||||
|  |     "go_back": "Go Back", | ||||||
|  |     "back_to_login": "Back to Login?", | ||||||
|  |     "home": "Home", | ||||||
|  |     "filter": "Filter", | ||||||
|  |     "delete": "Delete", | ||||||
|  |     "edit": "Edit", | ||||||
|  |     "view": "View", | ||||||
|  |     "add_new_item": "Add New Item", | ||||||
|  |     "clear_all": "Clear All", | ||||||
|  |     "showing": "Showing", | ||||||
|  |     "of": "of", | ||||||
|  |     "actions": "Actions", | ||||||
|  |     "subtotal": "SUBTOTAL", | ||||||
|  |     "discount": "DISCOUNT", | ||||||
|  |     "fixed": "Fixed", | ||||||
|  |     "percentage": "Percentage", | ||||||
|  |     "tax": "TAX", | ||||||
|  |     "total_amount": "TOTAL AMOUNT", | ||||||
|  |     "bill_to": "Bill to", | ||||||
|  |     "ship_to": "Ship to", | ||||||
|  |     "due": "Due", | ||||||
|  |     "draft": "Draft", | ||||||
|  |     "sent": "Sent", | ||||||
|  |     "all": "All", | ||||||
|  |     "select_all": "Select All", | ||||||
|  |     "choose_file": "Click here to choose a file", | ||||||
|  |     "choose_template": "Choose a template", | ||||||
|  |     "choose": "Choose", | ||||||
|  |     "remove": "Remove", | ||||||
|  |     "powered_by": "Powered by", | ||||||
|  |     "bytefury": "Bytefury", | ||||||
|  |     "select_a_status": "Select a status", | ||||||
|  |     "select_a_tax": "Select a tax", | ||||||
|  |     "search": "Search", | ||||||
|  |     "are_you_sure": "Are you sure?", | ||||||
|  |     "list_is_empty": "List is empty.", | ||||||
|  |     "no_tax_found": "No tax found!", | ||||||
|  |     "four_zero_four": "404", | ||||||
|  |     "you_got_lost": "Whoops! You got Lost!", | ||||||
|  |     "go_home": "Go Home", | ||||||
|  |  | ||||||
|  |     "setting_updated": "Setting updated successfully", | ||||||
|  |     "select_state": "Select state", | ||||||
|  |     "select_country": "Select Country", | ||||||
|  |     "select_city": "Select City", | ||||||
|  |     "street_1": "Street 1", | ||||||
|  |     "street_2": "Street 2", | ||||||
|  |     "action_failed": "Action Failed" | ||||||
|  |   }, | ||||||
|  |   "dashboard": { | ||||||
|  |     "select_year": "Select year", | ||||||
|  |     "cards": { | ||||||
|  |       "due_amount": "Amount Due", | ||||||
|  |       "customers": "Customers", | ||||||
|  |       "invoices": "Invoices", | ||||||
|  |       "estimates": "Estimates" | ||||||
|  |     }, | ||||||
|  |     "chart_info": { | ||||||
|  |       "total_sales": "Sales", | ||||||
|  |       "total_receipts": "Receipts", | ||||||
|  |       "total_expense": "Expenses", | ||||||
|  |       "net_income": "Net Income", | ||||||
|  |       "year": "Select year" | ||||||
|  |     }, | ||||||
|  |     "weekly_invoices": { | ||||||
|  |       "title": "Weekly Invoices" | ||||||
|  |     }, | ||||||
|  |     "monthly_chart": { | ||||||
|  |       "title": "Sales & Expenses" | ||||||
|  |     }, | ||||||
|  |     "recent_invoices_card": { | ||||||
|  |       "title": "Due Invoices", | ||||||
|  |       "due_on": "Due On", | ||||||
|  |       "customer": "Customer", | ||||||
|  |       "amount_due": "Amount Due", | ||||||
|  |       "actions": "Actions", | ||||||
|  |       "view_all": "View All" | ||||||
|  |     }, | ||||||
|  |     "recent_estimate_card": { | ||||||
|  |       "title": "Recent Estimates", | ||||||
|  |       "date": "Date", | ||||||
|  |       "customer": "Customer", | ||||||
|  |       "amount_due": "Amount Due", | ||||||
|  |       "actions": "Actions", | ||||||
|  |       "view_all": "View All" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "tax_types": { | ||||||
|  |     "name": "Name", | ||||||
|  |     "description": "Description", | ||||||
|  |     "percent": "Percent", | ||||||
|  |     "compound_tax": "Compound Tax" | ||||||
|  |   }, | ||||||
|  |   "customers": { | ||||||
|  |     "title": "Customers", | ||||||
|  |     "add_customer": "Add Customer", | ||||||
|  |     "contacts_list": "Customer List", | ||||||
|  |     "name": "Name", | ||||||
|  |     "display_name": "Display Name", | ||||||
|  |     "primary_contact_name": "Primary Contact Name", | ||||||
|  |     "contact_name": "Contact Name", | ||||||
|  |     "amount_due": "Amount Due", | ||||||
|  |     "email": "Email", | ||||||
|  |     "address": "Address", | ||||||
|  |     "phone": "Phone", | ||||||
|  |     "website": "Website", | ||||||
|  |     "country": "Country", | ||||||
|  |     "state": "State", | ||||||
|  |     "city": "City", | ||||||
|  |     "zip_code": "Zip Code", | ||||||
|  |     "added_on": "Added On", | ||||||
|  |     "action": "Action", | ||||||
|  |     "password": "Password", | ||||||
|  |     "street_number": "Street Number", | ||||||
|  |     "primary_currency": "Primary Currency", | ||||||
|  |     "add_new_customer": "Add New Customer", | ||||||
|  |     "save_customer": "Save Customer", | ||||||
|  |     "update_customer": "Update Customer", | ||||||
|  |     "customer": "Customer | Customers", | ||||||
|  |     "new_customer": "New Customer", | ||||||
|  |     "edit_customer": "Edit Customer", | ||||||
|  |     "basic_info": "Basic Info", | ||||||
|  |     "billing_address": "Billing Address", | ||||||
|  |     "shipping_address": "Shipping Address", | ||||||
|  |     "copy_billing_address": "Copy from Billing", | ||||||
|  |     "no_customers": "No customers yet!", | ||||||
|  |     "no_customers_found": "No customers found!", | ||||||
|  |     "list_of_customers": "This section will contain the list of customers.", | ||||||
|  |     "primary_display_name": "Primary Display Name", | ||||||
|  |     "select_currency": "Select currency", | ||||||
|  |     "select_a_customer": "Select a customer", | ||||||
|  |     "type_or_click": "Type or click to select", | ||||||
|  |  | ||||||
|  |     "confirm_delete": "You will not be able to recover this Customer | You will not be able to recover these Customers", | ||||||
|  |     "created_message": "Customer created successfully", | ||||||
|  |     "updated_message": "Customer updated successfully", | ||||||
|  |     "deleted_message": "Customer deleted successfully | Customers deleted successfully" | ||||||
|  |   }, | ||||||
|  |   "items": { | ||||||
|  |     "title": "Items", | ||||||
|  |     "items_list": "Items List", | ||||||
|  |     "name": "Name", | ||||||
|  |     "unit": "Unit", | ||||||
|  |     "description": "Description", | ||||||
|  |     "added_on": "Added On", | ||||||
|  |     "price": "Price", | ||||||
|  |     "date_of_creation": "Date Of Creation", | ||||||
|  |     "action": "Action", | ||||||
|  |     "add_item": "Add Item", | ||||||
|  |     "save_item": "Save Item", | ||||||
|  |     "update_item": "Update Item", | ||||||
|  |     "item": "Item | Items", | ||||||
|  |     "add_new_item": "Add New Item", | ||||||
|  |     "new_item": "New Item", | ||||||
|  |     "edit_item": "Edit Item", | ||||||
|  |     "no_items": "No items yet!", | ||||||
|  |     "list_of_items": "This section will contain the list of items.", | ||||||
|  |     "select_a_unit": "select unit", | ||||||
|  |  | ||||||
|  |     "item_attached_message": "Cannot delete an item which is already in use", | ||||||
|  |     "confirm_delete": "You will not be able to recover this Item | You will not be able to recover these Items", | ||||||
|  |     "created_message": "Item created successfully", | ||||||
|  |     "updated_message": "Item updated successfully", | ||||||
|  |     "deleted_message": "Item deleted successfully | Items deleted successfully" | ||||||
|  |   }, | ||||||
|  |   "estimates": { | ||||||
|  |     "title": "Estimates", | ||||||
|  |     "estimate": "Estimate | Estimates", | ||||||
|  |     "estimates_list": "Estimates List", | ||||||
|  |     "days": "{days} Days", | ||||||
|  |     "months": "{months} Month", | ||||||
|  |     "years": "{years} Year", | ||||||
|  |     "all": "All", | ||||||
|  |     "paid": "Paid", | ||||||
|  |     "unpaid": "Unpaid", | ||||||
|  |     "customer": "CUSTOMER", | ||||||
|  |     "ref_no": "REF NO.", | ||||||
|  |     "number": "NUMBER", | ||||||
|  |     "amount_due": "AMOUNT DUE", | ||||||
|  |     "partially_paid": "Partially Paid", | ||||||
|  |     "total": "Total", | ||||||
|  |     "discount": "Discount", | ||||||
|  |     "sub_total": "Sub Total", | ||||||
|  |     "estimate_number": "Estimate Number", | ||||||
|  |     "ref_number": "Ref Number", | ||||||
|  |     "contact": "Contact", | ||||||
|  |     "add_item": "Add an Item", | ||||||
|  |     "date": "Date", | ||||||
|  |     "due_date": "Due Date", | ||||||
|  |     "expiry_date": "Expiry Date", | ||||||
|  |     "status": "Status", | ||||||
|  |     "add_tax": "Add Tax", | ||||||
|  |     "amount": "Amount", | ||||||
|  |     "action": "Action", | ||||||
|  |     "notes": "Notes", | ||||||
|  |     "tax": "Tax", | ||||||
|  |     "estimate_template": "Template", | ||||||
|  |     "convert_to_invoice": "Convert to Invoice", | ||||||
|  |     "mark_as_sent": "Mark as Sent", | ||||||
|  |     "send_estimate": "Send Estimate", | ||||||
|  |     "record_payment": "Record Payment", | ||||||
|  |     "add_estimate": "Add Estimate", | ||||||
|  |     "save_estimate": "Save Estimate", | ||||||
|  |     "confirm_conversion": "You want to convert this Estimate into Invoice?", | ||||||
|  |     "conversion_message": "Invoice created successful", | ||||||
|  |     "confirm_send_estimate": "This estimate will be sent via email to the customer", | ||||||
|  |     "confirm_mark_as_sent": "This estimate will be marked as sent", | ||||||
|  |     "confirm_mark_as_accepted": "This estimate will be marked as Accepted", | ||||||
|  |     "confirm_mark_as_rejected": "This estimate will be marked as Rejected", | ||||||
|  |     "no_matching_estimates": "There are no matching estimates!", | ||||||
|  |     "mark_as_sent_successfully": "Estimate marked as sent successfully", | ||||||
|  |     "send_estimate_successfully": "Estimate sent successfully", | ||||||
|  |     "errors": { | ||||||
|  |       "required": "Field is required" | ||||||
|  |     }, | ||||||
|  |     "accepted": "Accepted", | ||||||
|  |     "sent": "Sent", | ||||||
|  |     "draft": "Draft", | ||||||
|  |     "declined": "Declined", | ||||||
|  |     "new_estimate": "New Estimate", | ||||||
|  |     "add_new_estimate": "Add New Estimate", | ||||||
|  |     "update_Estimate": "Update Estimate", | ||||||
|  |     "edit_estimate": "Edit Estimate", | ||||||
|  |     "items": "items", | ||||||
|  |     "Estimate": "Estimate | Estimates", | ||||||
|  |     "add_new_tax": "Add New Tax", | ||||||
|  |     "no_estimates": "No estimates yet!", | ||||||
|  |     "list_of_estimates": "This section will contain the list of estimates.", | ||||||
|  |     "mark_as_rejected": "Mark as rejected", | ||||||
|  |     "mark_as_accepted": "Mark as accepted", | ||||||
|  |  | ||||||
|  |     "marked_as_accepted_message": "Estimate marked as accepted", | ||||||
|  |     "marked_as_rejected_message": "Estimate marked as rejected", | ||||||
|  |     "confirm_delete": "You will not be able to recover this Estimate | You will not be able to recover these Estimates", | ||||||
|  |     "created_message": "Estimate created successfully", | ||||||
|  |     "updated_message": "Estimate updated successfully", | ||||||
|  |     "deleted_message": "Estimate deleted successfully | Estimates deleted successfully", | ||||||
|  |     "user_email_does_not_exist": "User email does not exist", | ||||||
|  |     "something_went_wrong": "something went wrong", | ||||||
|  |     "item": { | ||||||
|  |       "title": "Item Title", | ||||||
|  |       "description": "Description", | ||||||
|  |       "quantity": "Quantity", | ||||||
|  |       "price": "Price", | ||||||
|  |       "discount": "Discount", | ||||||
|  |       "total": "Total", | ||||||
|  |       "total_discount": "Total Discount", | ||||||
|  |       "sub_total": "Sub Total", | ||||||
|  |       "tax": "Tax", | ||||||
|  |       "amount": "Amount", | ||||||
|  |       "select_an_item": "Type or click to select an item", | ||||||
|  |       "type_item_description": "Type Item Description (optional)" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "invoices": { | ||||||
|  |     "title": "Invoices", | ||||||
|  |     "invoices_list": "Invoices List", | ||||||
|  |     "days": "{days} Days", | ||||||
|  |     "months": "{months} Month", | ||||||
|  |     "years": "{years} Year", | ||||||
|  |     "all": "All", | ||||||
|  |     "paid": "Paid", | ||||||
|  |     "unpaid": "Unpaid", | ||||||
|  |     "customer": "CUSTOMER", | ||||||
|  |     "paid_status": "PAID STATUS", | ||||||
|  |     "ref_no": "REF NO.", | ||||||
|  |     "number": "NUMBER", | ||||||
|  |     "amount_due": "AMOUNT DUE", | ||||||
|  |     "partially_paid": "Partially Paid", | ||||||
|  |     "total": "Total", | ||||||
|  |     "discount": "Discount", | ||||||
|  |     "sub_total": "Sub Total", | ||||||
|  |     "invoice": "Invoice | Invoices", | ||||||
|  |     "invoice_number": "Invoice Number", | ||||||
|  |     "ref_number": "Ref Number", | ||||||
|  |     "contact": "Contact", | ||||||
|  |     "add_item": "Add an Item", | ||||||
|  |     "date": "Date", | ||||||
|  |     "due_date": "Due Date", | ||||||
|  |     "status": "Status", | ||||||
|  |     "add_tax": "Add Tax", | ||||||
|  |     "amount": "Amount", | ||||||
|  |     "action": "Action", | ||||||
|  |     "notes": "Notes", | ||||||
|  |     "view": "View", | ||||||
|  |     "send_invoice": "Send Invoice", | ||||||
|  |     "invoice_template": "Invoice Template", | ||||||
|  |     "template": "Template", | ||||||
|  |     "mark_as_sent": "Mark as sent", | ||||||
|  |     "confirm_send_invoice": "This invoice will be sent via email to the customer", | ||||||
|  |     "invoice_mark_as_sent": "This invoice will be marked as sent", | ||||||
|  |     "confirm_send": "This invoice will be sent via email to the customer", | ||||||
|  |     "invoice_date": "Invoice Date", | ||||||
|  |     "record_payment": "Record Payment", | ||||||
|  |     "add_new_invoice": "Add New Invoice", | ||||||
|  |     "update_expense": "Update Expense", | ||||||
|  |     "edit_invoice": "Edit Invoice", | ||||||
|  |     "new_invoice": "New Invoice", | ||||||
|  |     "save_invoice": "Save Invoice", | ||||||
|  |     "update_invoice": "Update Invoice", | ||||||
|  |     "add_new_tax": "Add New Tax", | ||||||
|  |     "no_invoices": "No Invoices yet!", | ||||||
|  |     "list_of_invoices": "This section will contain the list of invoices.", | ||||||
|  |     "select_invoice": "Select Invoice", | ||||||
|  |     "no_matching_invoices": "There are no matching invoices!", | ||||||
|  |     "mark_as_sent_successfully": "Invoice marked as sent successfully", | ||||||
|  |     "send_invoice_successfully": "Invoice sent successfully", | ||||||
|  |     "item": { | ||||||
|  |       "title": "Item Title", | ||||||
|  |       "description": "Description", | ||||||
|  |       "quantity": "Quantity", | ||||||
|  |       "price": "Price", | ||||||
|  |       "discount": "Discount", | ||||||
|  |       "total": "Total", | ||||||
|  |       "total_discount": "Total Discount", | ||||||
|  |       "sub_total": "Sub Total", | ||||||
|  |       "tax": "Tax", | ||||||
|  |       "amount": "Amount", | ||||||
|  |       "select_an_item": "Type or click to select an item", | ||||||
|  |       "type_item_description": "Type Item Description (optional)" | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     "payment_attached_message": "One of the selected invoices already have a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal", | ||||||
|  |     "confirm_delete": "You will not be able to recover this Invoice | You will not be able to recover these Invoices", | ||||||
|  |     "created_message": "Invoice created successfully", | ||||||
|  |     "updated_message": "Invoice updated successfully", | ||||||
|  |     "deleted_message": "Invoice deleted successfully | Invoices deleted successfully", | ||||||
|  |     "marked_as_sent_message": "Invoice marked as sent successfully", | ||||||
|  |     "user_email_does_not_exist": "User email does not exist", | ||||||
|  |     "something_went_wrong": "something went wrong", | ||||||
|  |     "invalid_due_amount_message": "Total Invoice amount cannot be less than total paid amount for this Invoice. Please update the invoice or delete the associated payments to continue." | ||||||
|  |   }, | ||||||
|  |   "credit_notes": { | ||||||
|  |     "title": "Credit Notes", | ||||||
|  |     "credit_notes_list": "Credit Notes List", | ||||||
|  |     "credit_notes": "Credit Notes", | ||||||
|  |     "contact": "Contact", | ||||||
|  |     "date": "Date", | ||||||
|  |     "amount": "Amount", | ||||||
|  |     "action": "Action", | ||||||
|  |     "credit_number": "Credit Number", | ||||||
|  |     "notes": "Notes", | ||||||
|  |     "confirm_delete": "Do you want to delete this credit note?", | ||||||
|  |     "item": { | ||||||
|  |       "title": "Item Title", | ||||||
|  |       "description": "Description", | ||||||
|  |       "quantity": "Quantity", | ||||||
|  |       "price": "Price", | ||||||
|  |       "discount": "Discount", | ||||||
|  |       "total": "Total", | ||||||
|  |       "total_discount": "Total Discount", | ||||||
|  |       "sub_total": "Sub Total", | ||||||
|  |       "tax": "Tax" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "payments": { | ||||||
|  |     "title": "Payments", | ||||||
|  |     "payments_list": "Payments List", | ||||||
|  |     "record_payment": "Record Payment", | ||||||
|  |     "customer": "Customer", | ||||||
|  |     "date": "Date", | ||||||
|  |     "amount": "Amount", | ||||||
|  |     "action": "Action", | ||||||
|  |     "payment_number": "Payment Number", | ||||||
|  |     "payment_mode": "Payment Mode", | ||||||
|  |     "invoice": "Invoice", | ||||||
|  |     "note": "Note", | ||||||
|  |     "add_payment": "Add Payment", | ||||||
|  |     "new_payment": "New Payment", | ||||||
|  |     "edit_payment": "Edit Payment", | ||||||
|  |     "view_payment": "View Payment", | ||||||
|  |     "add_new_payment": "Add New Payment", | ||||||
|  |     "save_payment": "Save Payment", | ||||||
|  |     "update_payment": "Update Payment", | ||||||
|  |     "payment": "Payment | Payments", | ||||||
|  |     "no_payments": "No payments yet!", | ||||||
|  |     "list_of_payments": "This section will contain the list of payments.", | ||||||
|  |     "select_payment_mode": "Select payment mode", | ||||||
|  |  | ||||||
|  |     "confirm_delete": "You will not be able to recover this Payment | You will not be able to recover these Payments", | ||||||
|  |     "created_message": "Payment created successfully", | ||||||
|  |     "updated_message": "Payment updated successfully", | ||||||
|  |     "deleted_message": "Payment deleted successfully | Payments deleted successfully", | ||||||
|  |     "invalid_amount_message": "Payment amount is invalid" | ||||||
|  |   }, | ||||||
|  |   "expenses": { | ||||||
|  |     "title": "Expenses", | ||||||
|  |     "expenses_list": "Expenses List", | ||||||
|  |     "expense_title": "Title", | ||||||
|  |     "contact": "Contact", | ||||||
|  |     "category": "Category", | ||||||
|  |     "from_date": "From Date", | ||||||
|  |     "to_date": "To Date", | ||||||
|  |     "expense_date": "Date", | ||||||
|  |     "description": "Description", | ||||||
|  |     "receipt": "Receipt", | ||||||
|  |     "amount": "Amount", | ||||||
|  |     "action": "Action", | ||||||
|  |     "note": "Note", | ||||||
|  |     "category_id": "Category Id", | ||||||
|  |     "date": "Expense Date", | ||||||
|  |     "add_expense": "Add Expense", | ||||||
|  |     "add_new_expense": "Add New Expense", | ||||||
|  |     "save_expense": "Save Expense", | ||||||
|  |     "update_expense": "Update Expense", | ||||||
|  |     "download_receipt": "Download Receipt", | ||||||
|  |     "edit_expense": "Edit Expense", | ||||||
|  |     "new_expense": "New Expense", | ||||||
|  |     "expense": "Expense | Expenses", | ||||||
|  |     "no_expenses": "No expenses yet!", | ||||||
|  |     "list_of_expenses": "This section will contain the list of expenses.", | ||||||
|  |  | ||||||
|  |     "confirm_delete": "You will not be able to recover this Expense | You will not be able to recover these Expenses", | ||||||
|  |     "created_message": "Expense created successfully", | ||||||
|  |     "updated_message": "Expense updated successfully", | ||||||
|  |     "deleted_message": "Expense deleted successfully | Expenses deleted successfully", | ||||||
|  |     "categories": { | ||||||
|  |       "categories_list": "Categories List", | ||||||
|  |       "title": "Title", | ||||||
|  |       "name": "Name", | ||||||
|  |       "description": "Description", | ||||||
|  |       "amount": "Amount", | ||||||
|  |       "actions": "Actions", | ||||||
|  |       "add_category": "Add Category", | ||||||
|  |       "new_category": "New Category", | ||||||
|  |       "category": "Category | Categories", | ||||||
|  |       "select_a_category": "Select a category" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "login": { | ||||||
|  |     "email": "Email", | ||||||
|  |     "password": "Password", | ||||||
|  |     "forgot_password": "Forgot Password?", | ||||||
|  |     "or_signIn_with": "or Sign in with", | ||||||
|  |     "login": "Login", | ||||||
|  |     "register": "Register", | ||||||
|  |     "reset_password": "Reset Password", | ||||||
|  |     "password_reset_successfully": "Password Reset Successfully", | ||||||
|  |     "enter_email": "Enter email", | ||||||
|  |     "enter_password": "Enter Password", | ||||||
|  |     "retype_password": "Retype Password", | ||||||
|  |     "login_placeholder": "mail@example.com" | ||||||
|  |   }, | ||||||
|  |   "reports": { | ||||||
|  |     "title": "Report", | ||||||
|  |     "from_date": "From Date", | ||||||
|  |     "to_date": "To Date", | ||||||
|  |     "status": "Status", | ||||||
|  |     "paid": "Paid", | ||||||
|  |     "unpaid": "Unpaid", | ||||||
|  |     "download_pdf": "Download PDF", | ||||||
|  |     "view_pdf": "View PDF", | ||||||
|  |     "update_report": "Update Report", | ||||||
|  |     "report": "Report | Reports", | ||||||
|  |     "profit_loss": { | ||||||
|  |       "profit_loss": "Profit & Loss", | ||||||
|  |       "to_date": "To Date", | ||||||
|  |       "from_date": "From Date", | ||||||
|  |       "date_range": "Select Date Range" | ||||||
|  |     }, | ||||||
|  |     "sales": { | ||||||
|  |       "sales": "Sales", | ||||||
|  |       "date_range": "Select Date Range", | ||||||
|  |       "to_date": "To Date", | ||||||
|  |       "from_date": "From Date", | ||||||
|  |       "report_type": "Report Type" | ||||||
|  |     }, | ||||||
|  |     "taxes": { | ||||||
|  |       "taxes": "Taxes", | ||||||
|  |       "to_date": "To Date", | ||||||
|  |       "from_date": "From Date", | ||||||
|  |       "date_range": "Select Date Range" | ||||||
|  |     }, | ||||||
|  |     "errors": { | ||||||
|  |       "required": "Field is required" | ||||||
|  |     }, | ||||||
|  |     "invoices": { | ||||||
|  |       "invoice": "Invoice", | ||||||
|  |       "invoice_date": "Invoice Date", | ||||||
|  |       "due_date": "Due Date", | ||||||
|  |       "amount": "Amount", | ||||||
|  |       "contact_name": "Contact Name", | ||||||
|  |       "status": "Status" | ||||||
|  |     }, | ||||||
|  |     "estimates": { | ||||||
|  |       "estimate": "Estimate", | ||||||
|  |       "estimate_date": "Estimate Date", | ||||||
|  |       "due_date": "Due Date", | ||||||
|  |       "estimate_number": "Estimate Number", | ||||||
|  |       "ref_number": "Ref Number", | ||||||
|  |       "amount": "Amount", | ||||||
|  |       "contact_name": "Contact Name", | ||||||
|  |       "status": "Status" | ||||||
|  |     }, | ||||||
|  |     "expenses": { | ||||||
|  |       "expenses": "Expenses", | ||||||
|  |       "category": "Category", | ||||||
|  |       "date": "Date", | ||||||
|  |       "amount": "Amount", | ||||||
|  |       "to_date": "To Date", | ||||||
|  |       "from_date": "From Date", | ||||||
|  |       "date_range": "Select Date Range" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "settings": { | ||||||
|  |     "menu_title": { | ||||||
|  |       "account_settings": "Account Settings", | ||||||
|  |       "company_information": "Company Information", | ||||||
|  |       "preferences": "Preferences", | ||||||
|  |       "notifications": "Notifications", | ||||||
|  |       "tax_types": "Tax Types", | ||||||
|  |       "expense_category": "Expense Categories", | ||||||
|  |       "update_app": "Update App" | ||||||
|  |     }, | ||||||
|  |     "title": "Settings", | ||||||
|  |     "setting": "Settings | Settings", | ||||||
|  |     "general": "General", | ||||||
|  |     "language": "Language", | ||||||
|  |     "primary_currency": "Primary Currency", | ||||||
|  |     "timezone": "Time Zone", | ||||||
|  |     "date_format": "Date Format", | ||||||
|  |     "currencies": { | ||||||
|  |       "title": "Currencies", | ||||||
|  |       "currency": "Currency | Currencies", | ||||||
|  |       "currencies_list": "Currencies List", | ||||||
|  |       "select_currency": "Select Currency", | ||||||
|  |       "name": "Name", | ||||||
|  |       "code": "Code", | ||||||
|  |       "symbol": "Symbol", | ||||||
|  |       "precision": "Precision", | ||||||
|  |       "thousand_separator": "Thousand Separator", | ||||||
|  |       "decimal_separator": "Decimal Separator", | ||||||
|  |       "position": "Position", | ||||||
|  |       "position_of_symbol": "Position Of Symbol", | ||||||
|  |       "right": "Right", | ||||||
|  |       "left": "Left", | ||||||
|  |       "action": "Action", | ||||||
|  |       "add_currency": "Add Currency" | ||||||
|  |     }, | ||||||
|  |     "mail": { | ||||||
|  |       "host": "Mail Host", | ||||||
|  |       "port": "Mail Port", | ||||||
|  |       "driver": "Mail Driver", | ||||||
|  |       "secret": "Secret", | ||||||
|  |       "mailgun_secret": "Mailgun Secret", | ||||||
|  |       "mailgun_domain": "Domain", | ||||||
|  |       "mailgun_endpoint": "Mailgun Endpoint", | ||||||
|  |       "ses_secret": "SES Secret", | ||||||
|  |       "ses_key": "SES Key", | ||||||
|  |       "password": "Mail Password", | ||||||
|  |       "username": "Mail Username", | ||||||
|  |       "mail_config": "Mail Configuration", | ||||||
|  |       "from_name": "From Mail Name", | ||||||
|  |       "from_mail": "From Mail Address", | ||||||
|  |       "encryption": "Mail Encryption", | ||||||
|  |       "mail_config_desc": "Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc." | ||||||
|  |     }, | ||||||
|  |     "pdf": { | ||||||
|  |       "title": "PDF Setting", | ||||||
|  |       "footer_text": "Footer Text", | ||||||
|  |       "pdf_layout": "PDF Layout" | ||||||
|  |     }, | ||||||
|  |     "company_info": { | ||||||
|  |       "company_info": "Company info", | ||||||
|  |       "company_name": "Company Name", | ||||||
|  |       "company_logo": "Company Logo", | ||||||
|  |       "section_description": "Information about your company that will be displayed on invoices, estimates and other documents created by Crater.", | ||||||
|  |       "phone": "Phone", | ||||||
|  |       "country": "Country", | ||||||
|  |       "state": "State", | ||||||
|  |       "city": "City", | ||||||
|  |       "address": "Address", | ||||||
|  |       "zip": "Zip", | ||||||
|  |       "save": "Save", | ||||||
|  |       "updated_message": "Company information updated successfully" | ||||||
|  |     }, | ||||||
|  |     "account_settings": { | ||||||
|  |       "profile_picture": "Profile Picture", | ||||||
|  |       "name": "Name", | ||||||
|  |       "email": "Email", | ||||||
|  |       "password": "Password", | ||||||
|  |       "confirm_password": "Confirm Password", | ||||||
|  |       "account_settings": "Account Settings", | ||||||
|  |       "save": "Save", | ||||||
|  |       "section_description": "You can update your name, email & password using the form below.", | ||||||
|  |       "updated_message": "Account Settings updated successfully" | ||||||
|  |     }, | ||||||
|  |     "user_profile": { | ||||||
|  |       "name": "Name", | ||||||
|  |       "email": "Email", | ||||||
|  |       "password": "Password", | ||||||
|  |       "confirm_password": "Confirm Password" | ||||||
|  |     }, | ||||||
|  |     "notification": { | ||||||
|  |       "title": "Notification", | ||||||
|  |       "email": "Send Notifications to", | ||||||
|  |       "description": "Which email notifications would you like to receive when something changes?", | ||||||
|  |       "invoice_viewed": "Invoice viewed", | ||||||
|  |       "invoice_viewed_desc": "When your customer views the invoice sent via crater dashboard.", | ||||||
|  |       "estimate_viewed": "Estimate viewed", | ||||||
|  |       "estimate_viewed_desc": "When your customer views the estimate sent via crater dashboard.", | ||||||
|  |       "save": "Save", | ||||||
|  |       "email_save_message": "Email saved successfully", | ||||||
|  |       "please_enter_email": "Please Enter Email" | ||||||
|  |     }, | ||||||
|  |     "tax_types": { | ||||||
|  |       "title": "Tax Types", | ||||||
|  |       "add_tax": "Add Tax", | ||||||
|  |       "description": "You can add or Remove Taxes as you please. Crater supports Taxes on Individual Items as well as on the invoice.", | ||||||
|  |       "add_new_tax": "Add New Tax", | ||||||
|  |       "tax_settings": "Tax Settings", | ||||||
|  |       "tax_per_item": "Tax Per Item", | ||||||
|  |       "tax_name": "Tax Name", | ||||||
|  |       "compound_tax": "Compound Tax", | ||||||
|  |       "percent": "Percent", | ||||||
|  |       "action": "Action", | ||||||
|  |       "tax_setting_description": "Enable this if you want to add taxes to individual invoice items. By default, taxes are added directly to the invoice.", | ||||||
|  |       "created_message": "Tax type created successfully", | ||||||
|  |       "updated_message": "Tax type updated successfully", | ||||||
|  |       "deleted_message": "Tax type deleted successfully", | ||||||
|  |       "confirm_delete": "You will not be able to recover this Tax Type", | ||||||
|  |       "already_in_use": "Tax is already in use" | ||||||
|  |     }, | ||||||
|  |     "expense_category": { | ||||||
|  |       "title": "Expense Categories", | ||||||
|  |       "action": "Action", | ||||||
|  |       "description": "Categories are required for adding expense entries. You can Add or Remove these categories according to your preference.", | ||||||
|  |       "add_new_category": "Add New Category", | ||||||
|  |       "category_name": "Category Name", | ||||||
|  |       "category_description": "Description", | ||||||
|  |       "created_message": "Expense Category created successfully", | ||||||
|  |       "deleted_message": "Expense category deleted successfully", | ||||||
|  |       "updated_message": "Expense category updated successfully", | ||||||
|  |       "confirm_delete": "You will not be able to recover this Expense Category", | ||||||
|  |       "already_in_use": "Category is already in use" | ||||||
|  |     }, | ||||||
|  |     "preferences": { | ||||||
|  |       "currency": "Currency", | ||||||
|  |       "language": "Language", | ||||||
|  |       "time_zone": "Time Zone", | ||||||
|  |       "fiscal_year": "Financial Year", | ||||||
|  |       "date_format": "Date Format", | ||||||
|  |       "discount_setting": "Discount Setting", | ||||||
|  |       "discount_per_item": "Discount Per Item ", | ||||||
|  |       "discount_setting_description": "Enable this if you want to add Discount to individual invoice items. By default, Discount are added directly to the invoice.", | ||||||
|  |       "save": "Save", | ||||||
|  |       "preference": "Preference | Preferences", | ||||||
|  |       "general_settings": "Default preferences for the system.", | ||||||
|  |       "updated_message": "Preferences updated successfully", | ||||||
|  |       "select_language": "select language", | ||||||
|  |       "select_time_zone": "select Time Zone", | ||||||
|  |       "select_date_formate": "select Date Formate", | ||||||
|  |       "select_financial_year": "select financial year" | ||||||
|  |     }, | ||||||
|  |     "update_app": { | ||||||
|  |       "title": "Update App", | ||||||
|  |       "description": "You can easily update Crater by checking for a new update by clicking the button below", | ||||||
|  |       "check_update": "Check for updates", | ||||||
|  |       "avail_update": "New Update available", | ||||||
|  |       "next_version": "Next version", | ||||||
|  |       "update": "Update Now", | ||||||
|  |       "update_progress": "Update in progress...", | ||||||
|  |       "progress_text": "It will just take a few minutes. Please do not refresh the screen or close the window before the update finishes", | ||||||
|  |       "update_success": "App has been updated! Please wait while your browser window gets reloaded automatically.", | ||||||
|  |       "latest_message": "No update available! You are on the latest version.", | ||||||
|  |       "current_version": "Current Version" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "wizard": { | ||||||
|  |     "account_info": "Account Information", | ||||||
|  |     "account_info_desc": "Below details will be used to create the main Administrator account. Also you can change the details anytime after logging in.", | ||||||
|  |     "name": "Name", | ||||||
|  |     "email": "Email", | ||||||
|  |     "password": "Password", | ||||||
|  |     "confirm_password": "Confirm Password", | ||||||
|  |     "save_cont": "Save & Continue", | ||||||
|  |     "company_info": "Company Information", | ||||||
|  |     "company_info_desc": "This information will be displayed on invoices. Note that you can edit this later on settings page.", | ||||||
|  |     "company_name": "Company Name", | ||||||
|  |     "company_logo": "Company Logo", | ||||||
|  |     "logo_preview": "Logo Preview", | ||||||
|  |     "preferences": "Preferences", | ||||||
|  |     "preferences_desc": "Default preferences for the system.", | ||||||
|  |     "country": "Country", | ||||||
|  |     "state": "State", | ||||||
|  |     "city": "City", | ||||||
|  |     "address": "Address", | ||||||
|  |     "street": "Street1 | Street2", | ||||||
|  |     "phone": "Phone", | ||||||
|  |     "zip_code": "Zip Code", | ||||||
|  |     "go_back": "Go Back", | ||||||
|  |     "currency": "Currency", | ||||||
|  |     "language": "Language", | ||||||
|  |     "time_zone": "Time Zone", | ||||||
|  |     "fiscal_year": "Financial Year", | ||||||
|  |     "date_format": "Date Format", | ||||||
|  |     "from_address": "From Address", | ||||||
|  |     "username": "Username", | ||||||
|  |     "next": "Next", | ||||||
|  |     "continue": "Continue", | ||||||
|  |     "skip": "Skip", | ||||||
|  |     "database": { | ||||||
|  |       "database": "Site URL & Database", | ||||||
|  |       "connection": "Database Connection", | ||||||
|  |       "host": "Database Host", | ||||||
|  |       "port": "Database Port", | ||||||
|  |       "password": "Database Password", | ||||||
|  |       "app_url": "App URL", | ||||||
|  |       "username": "Database Username", | ||||||
|  |       "db_name": "Database Name", | ||||||
|  |       "desc": "Create a database on your server and set the credentials using the form below." | ||||||
|  |     }, | ||||||
|  |     "permissions": { | ||||||
|  |       "permissions": "Permissions", | ||||||
|  |       "permission_confirm_title": "Are you sure you want to continue?", | ||||||
|  |       "permission_confirm_desc": "Folder permission check failed", | ||||||
|  |       "permission_desc": "Below is the list of folder permissions which are required in order for the app to work. If the permission check fails, make sure to update your folder permissions." | ||||||
|  |     }, | ||||||
|  |     "mail": { | ||||||
|  |       "host": "Mail Host", | ||||||
|  |       "port": "Mail Port", | ||||||
|  |       "driver": "Mail Driver", | ||||||
|  |       "secret": "Secret", | ||||||
|  |       "mailgun_secret": "Mailgun Secret", | ||||||
|  |       "mailgun_domain": "Domain", | ||||||
|  |       "mailgun_endpoint": "Mailgun Endpoint", | ||||||
|  |       "ses_secret": "SES Secret", | ||||||
|  |       "ses_key": "SES Key", | ||||||
|  |       "password": "Mail Password", | ||||||
|  |       "username": "Mail Username", | ||||||
|  |       "mail_config": "Mail Configuration", | ||||||
|  |       "from_name": "From Mail Name", | ||||||
|  |       "from_mail": "From Mail Address", | ||||||
|  |       "encryption": "Mail Encryption", | ||||||
|  |       "mail_config_desc": "Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc." | ||||||
|  |     }, | ||||||
|  |     "req": { | ||||||
|  |       "system_req": "System Requirements", | ||||||
|  |       "php_req_version": "Php (version {version} required)", | ||||||
|  |       "check_req": "Check Requirements", | ||||||
|  |       "system_req_desc": "Crater has a few server requirements. Make sure that your server has the required php version and all the extensions mentioned below." | ||||||
|  |     }, | ||||||
|  |     "errors": { | ||||||
|  |       "migrate_failed": "Migrate Failed", | ||||||
|  |       "database_variables_save_error": "Unable to connect to the DB with Provided Values.", | ||||||
|  |       "mail_variables_save_error": "Email configuration failed.", | ||||||
|  |       "connection_failed": "Database connection failed", | ||||||
|  |       "database_should_be_empty": "Database should be empty" | ||||||
|  |     }, | ||||||
|  |     "success": { | ||||||
|  |       "mail_variables_save_successfully": "Email configured successfully", | ||||||
|  |       "database_variables_save_successfully": "Database configured successfully." | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "layout_login": { | ||||||
|  |     "copyright_crater": "Copyright @ Crater - 2019", | ||||||
|  |     "super_simple_invoicing": "Super Simple Invoicing", | ||||||
|  |     "for_freelancer": "for Freelancers &", | ||||||
|  |     "small_businesses": "Small Businesses ", | ||||||
|  |     "crater_help": "Crater helps you track expenses, record payments & generate beautiful", | ||||||
|  |     "invoices_and_estimates": "invoices & estimates with ability to choose multiple templates." | ||||||
|  |   }, | ||||||
|  |   "validation": { | ||||||
|  |     "invalid_url": "Invalid url (ex: http://www.crater.com)", | ||||||
|  |     "required": "Field is required", | ||||||
|  |     "email_incorrect": "Incorrect Email.", | ||||||
|  |     "email_already_taken": "The email has already been taken.", | ||||||
|  |     "email_does_not_exist": "User with given email doesn't exist", | ||||||
|  |     "send_reset_link": "Send Reset Link", | ||||||
|  |     "not_yet": "Not yet? Send it again", | ||||||
|  |     "password_min_length": "Password must contain {count} characters", | ||||||
|  |     "name_min_length": "Name must have at least {count} letters.", | ||||||
|  |     "enter_valid_tax_rate": "Enter valid tax rate", | ||||||
|  |     "numbers_only": "Numbers Only.", | ||||||
|  |     "characters_only": "Characters Only.", | ||||||
|  |     "password_incorrect": "Passwords must be identical", | ||||||
|  |     "password_length": "Password must be {count} character long.", | ||||||
|  |     "qty_must_greater_than_zero": "Quantity must be greater than zero.", | ||||||
|  |     "price_greater_than_zero": "Price must be greater than zero.", | ||||||
|  |     "payment_greater_than_zero": "Payment must be greater than   zero.", | ||||||
|  |     "payment_greater_than_due_amount": "Entered Payment is more than due amount of this invoice.", | ||||||
|  |     "quantity_maxlength": "Quantity should not be greater than 20 digits.", | ||||||
|  |     "price_maxlength": "Price should not be greater than 20 digits.", | ||||||
|  |     "price_minvalue": "Price should be greater than 0.", | ||||||
|  |     "amount_maxlength": "Amount should not be greater than 20 digits.", | ||||||
|  |     "amount_minvalue": "Amount should be greater than 0.", | ||||||
|  |     "description_maxlength": "Description should not be greater than 255 characters.", | ||||||
|  |     "maximum_options_error": "Maximum  of {max} options selected. First remove a selected option to select another.", | ||||||
|  |     "notes_maxlength": "Notes should not be greater than 255 characters.", | ||||||
|  |     "address_maxlength": "Address should not be greater than 255 characters.", | ||||||
|  |     "ref_number_maxlength": "Ref Number should not be greater than 255 characters." | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,815 +0,0 @@ | |||||||
| export default { |  | ||||||
|   navigation: { |  | ||||||
|     // key : 'singular | plural' |  | ||||||
|     dashboard: 'Tablero', |  | ||||||
|     customers: 'Clientes', |  | ||||||
|     items: 'Artículos', |  | ||||||
|     invoices: 'Facturas', |  | ||||||
|     expenses: 'Gastos', |  | ||||||
|     estimates: 'Estimadas', |  | ||||||
|     payments: 'Pagos', |  | ||||||
|     reports: 'Informes', |  | ||||||
|     settings: 'Configuraciones', |  | ||||||
|     logout: 'Cerrar sesión' |  | ||||||
|   }, |  | ||||||
|   general: { |  | ||||||
|     view_pdf: 'Ver PDF', |  | ||||||
|     download_pdf: 'Descargar PDF', |  | ||||||
|     save: 'Salvar', |  | ||||||
|     cancel: 'Cancelar', |  | ||||||
|     update: 'Actualizar', |  | ||||||
|     download: 'Descargar', |  | ||||||
|     from_date: 'Partir de la fecha', |  | ||||||
|     to_date: 'Hasta la fecha', |  | ||||||
|     from: 'De', |  | ||||||
|     to: 'A', |  | ||||||
|     go_back: 'Regresa', |  | ||||||
|     back_to_login: '¿Atrás para iniciar sesión?', |  | ||||||
|     home: 'Casa', |  | ||||||
|     filter: 'Filtrar', |  | ||||||
|     delete: 'Eliminar', |  | ||||||
|     edit: 'Editar', |  | ||||||
|     view: 'Ver', |  | ||||||
|     add_new_item: 'Agregar ítem nuevo', |  | ||||||
|     clear_all: 'Limpiar todo', |  | ||||||
|     showing: 'Demostración', |  | ||||||
|     of: 'de', |  | ||||||
|     actions: 'Comportamiento', |  | ||||||
|     subtotal: 'TOTAL PARCIAL', |  | ||||||
|     discount: 'DESCUENTO', |  | ||||||
|     fixed: 'Fija', |  | ||||||
|     percentage: 'Porcentaje', |  | ||||||
|     tax: 'IMPUESTO', |  | ||||||
|     total_amount: 'CANTIDAD TOTAL', |  | ||||||
|     bill_to: 'Cobrar a', |  | ||||||
|     ship_to: 'Envie a', |  | ||||||
|     due: 'Debida', |  | ||||||
|     draft: 'Sequía', |  | ||||||
|     sent: 'Expedida', |  | ||||||
|     all: 'Todas', |  | ||||||
|     select_all: 'Seleccionar todo', |  | ||||||
|     choose_file: 'Haga clic aquí para elegir un archivo.', |  | ||||||
|     choose_template: 'Elige una plantilla', |  | ||||||
|     choose: 'Escoger', |  | ||||||
|     remove: 'Eliminar', |  | ||||||
|     powered_by: 'Energizado por', |  | ||||||
|     bytefury: 'Bytefury', |  | ||||||
|     select_a_status: 'Selecciona un estado', |  | ||||||
|     select_a_tax: 'Selecciona un impuesto', |  | ||||||
|     search: 'Buscar', |  | ||||||
|     are_you_sure: '¿Estás seguro?', |  | ||||||
|     list_is_empty: 'La lista esta vacía.', |  | ||||||
|     no_tax_found: '¡No se encontraron impuestos!', |  | ||||||
|     four_zero_four: '404', |  | ||||||
|     you_got_lost: 'Whoops! ¡Te perdiste!', |  | ||||||
|     go_home: 'Vete a casa', |  | ||||||
|  |  | ||||||
|     setting_updated: 'Configuración actualizada con éxito', |  | ||||||
|     select_state: 'Seleccione estado', |  | ||||||
|     select_country: 'Seleccionar país', |  | ||||||
|     select_city: 'Ciudad selecta', |  | ||||||
|     street_1: 'Calle 1', |  | ||||||
|     street_2: 'Calle # 2', |  | ||||||
|     action_failed: 'Accion: Fallida' |  | ||||||
|   }, |  | ||||||
|   dashboard: { |  | ||||||
|     select_year: 'Seleccione año', |  | ||||||
|     cards: { |  | ||||||
|       due_amount: 'Monto adeudado', |  | ||||||
|       customers: 'Clientes', |  | ||||||
|       invoices: 'Facturas', |  | ||||||
|       estimates: 'Estimadas' |  | ||||||
|     }, |  | ||||||
|     chart_info: { |  | ||||||
|       total_sales: 'Ventas', |  | ||||||
|       total_receipts: 'Ingresos', |  | ||||||
|       total_expense: 'Gastos', |  | ||||||
|       net_income: 'Lngresos netos', |  | ||||||
|       year: 'Seleccione año' |  | ||||||
|     }, |  | ||||||
|     weekly_invoices: { |  | ||||||
|       title: 'Facturas semanales' |  | ||||||
|     }, |  | ||||||
|     monthly_chart: { |  | ||||||
|       title: 'Gastos de venta' |  | ||||||
|     }, |  | ||||||
|     recent_invoices_card: { |  | ||||||
|       title: 'Facturas adeudadas', |  | ||||||
|       due_on: 'Debido a', |  | ||||||
|       customer: 'Cliente', |  | ||||||
|       amount_due: 'Monto adeudado', |  | ||||||
|       actions: 'Comportamiento', |  | ||||||
|       view_all: 'Ver todo' |  | ||||||
|     }, |  | ||||||
|     recent_estimate_card: { |  | ||||||
|       title: 'Estimaciones recientes', |  | ||||||
|       date: 'Fecha', |  | ||||||
|       customer: 'Cliente', |  | ||||||
|       amount_due: 'Monto adeudado', |  | ||||||
|       actions: 'Comportamiento', |  | ||||||
|       view_all: 'Ver todo' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   tax_types: { |  | ||||||
|     name: 'Nombre', |  | ||||||
|     description: 'Descripción', |  | ||||||
|     percent: 'Por ciento', |  | ||||||
|     compound_tax: 'Impuesto compuesto' |  | ||||||
|   }, |  | ||||||
|   customers: { |  | ||||||
|     title: 'Clientes', |  | ||||||
|     add_customer: 'Agregar cliente', |  | ||||||
|     contacts_list: 'Lista de clientes', |  | ||||||
|     name: 'Nombre', |  | ||||||
|     display_name: 'Nombre para mostrar', |  | ||||||
|     primary_contact_name: 'Nombre de contacto primario', |  | ||||||
|     contact_name: 'Nombre de contacto', |  | ||||||
|     amount_due: 'Monto adeudado', |  | ||||||
|     email: 'Email', |  | ||||||
|     address: 'Habla a', |  | ||||||
|     phone: 'Teléfono', |  | ||||||
|     website: 'Sitio web', |  | ||||||
|     country: 'País', |  | ||||||
|     state: 'Estado', |  | ||||||
|     city: 'Ciudad', |  | ||||||
|     zip_code: 'Código postal', |  | ||||||
|     added_on: 'Añadido', |  | ||||||
|     action: 'Acción', |  | ||||||
|     password: 'Contraseña', |  | ||||||
|     street_number: 'Número de calle', |  | ||||||
|     primary_currency: 'Moneda primaria', |  | ||||||
|     add_new_customer: 'Agregar nuevo cliente', |  | ||||||
|     save_customer: 'Guardar cliente', |  | ||||||
|     update_customer: 'Actualizar cliente', |  | ||||||
|     customer: 'Cliente | Clientes', |  | ||||||
|     new_customer: 'Nuevo cliente', |  | ||||||
|     edit_customer: 'Editar cliente', |  | ||||||
|     basic_info: 'Información básica', |  | ||||||
|     billing_address: 'Dirección de Envio', |  | ||||||
|     shipping_address: 'Dirección de Envío', |  | ||||||
|     copy_billing_address: 'Copia de facturación', |  | ||||||
|     no_customers: '¡Aún no hay clientes!', |  | ||||||
|     no_customers_found: 'No se encontraron clientes!', |  | ||||||
|     list_of_customers: 'Esta sección contendrá la lista de clientes.', |  | ||||||
|     primary_display_name: 'Nombre de visualización principal', |  | ||||||
|     select_state: 'Seleccione estado', |  | ||||||
|     select_country: 'Seleccionar país', |  | ||||||
|     select_city: 'Ciudad selecta', |  | ||||||
|     select_currency: 'Seleccione el tipo de moneda', |  | ||||||
|     street_1: 'Calle 1', |  | ||||||
|     street_2: 'Calle 2', |  | ||||||
|     select_a_customer: 'Selecciona un cliente', |  | ||||||
|     type_or_click: 'Escriba o haga clic para seleccionar', |  | ||||||
|  |  | ||||||
|     confirm_delete: 'No podrá recuperar este cliente | No podrá recuperar estos clientes', |  | ||||||
|     created_message: 'Cliente creado con éxito', |  | ||||||
|     updated_message: 'Cliente actualizado con éxito', |  | ||||||
|     deleted_message: 'Cliente eliminado correctamente | Clientes eliminados exitosamente' |  | ||||||
|   }, |  | ||||||
|   items: { |  | ||||||
|     title: 'Artículos', |  | ||||||
|     items_list: 'Lista de artículos', |  | ||||||
|     name: 'Nombre', |  | ||||||
|     unit: 'Unidad', |  | ||||||
|     description: 'Descripción', |  | ||||||
|     added_on: 'Añadido', |  | ||||||
|     price: 'Precio', |  | ||||||
|     date_of_creation: 'Fecha de creación', |  | ||||||
|     action: 'Acción', |  | ||||||
|     add_item: 'Añadir artículo', |  | ||||||
|     save_item: 'Guardar artículo', |  | ||||||
|     update_item: 'Actualizar elemento', |  | ||||||
|     item: 'Artículo | Artículos', |  | ||||||
|     add_new_item: 'Agregar ítem nuevo', |  | ||||||
|     new_item: 'Nuevo artículo', |  | ||||||
|     edit_item: 'Editar elemento', |  | ||||||
|     no_items: '¡Aún no hay artículos!', |  | ||||||
|     list_of_items: 'Esta sección contendrá la lista de artículos.', |  | ||||||
|     select_a_unit: 'seleccione unidad', |  | ||||||
|  |  | ||||||
|     item_attached_message: 'No se puede eliminar un elemento que ya está en uso.', |  | ||||||
|     confirm_delete: 'No podrá recuperar este artículo | No podrás recuperar estos elementos', |  | ||||||
|     created_message: 'Artículo creado con éxito', |  | ||||||
|     updated_message: 'Artículo actualizado con éxito', |  | ||||||
|     deleted_message: 'Elemento eliminado con éxito | Elementos eliminados correctamente' |  | ||||||
|   }, |  | ||||||
|   estimates: { |  | ||||||
|     title: 'Estimadas', |  | ||||||
|     estimate: 'Estimación | Estimados', |  | ||||||
|     estimates_list: 'Lista de estimaciones', |  | ||||||
|     days: '{días} días', |  | ||||||
|     months: '{meses} Mes', |  | ||||||
|     years: '{años} Año', |  | ||||||
|     all: 'Todas', |  | ||||||
|     paid: 'Pagada', |  | ||||||
|     unpaid: 'No pagado', |  | ||||||
|     customer: 'CLIENTE', |  | ||||||
|     ref_no: 'NÚMERO DE REFERENCIA.', |  | ||||||
|     number: 'NÚMERO', |  | ||||||
|     amount_due: 'CANTIDAD DEBIDA', |  | ||||||
|     partially_paid: 'Parcialmente pagado', |  | ||||||
|     total: 'Total', |  | ||||||
|     discount: 'Descuento', |  | ||||||
|     sub_total: 'Subtotal', |  | ||||||
|     estimate_number: 'Numero Estimado', |  | ||||||
|     ref_number: 'Número de referencia', |  | ||||||
|     contact: 'Contacto', |  | ||||||
|     add_item: 'Agregar un artículo', |  | ||||||
|     date: 'Fecha', |  | ||||||
|     due_date: 'Fecha de vencimiento', |  | ||||||
|     expiry_date: 'Fecha de caducidad', |  | ||||||
|     status: 'Estado', |  | ||||||
|     add_tax: 'Agregar impuesto', |  | ||||||
|     amount: 'Cantidad', |  | ||||||
|     action: 'Acción', |  | ||||||
|     notes: 'Notas', |  | ||||||
|     tax: 'Impuesto', |  | ||||||
|     send_estimate: 'Enviar presupuesto', |  | ||||||
|     estimate_template: 'Plantilla de estimación', |  | ||||||
|     convert_to_invoice: 'Convertir a factura', |  | ||||||
|     mark_as_sent: 'Marcar como enviado', |  | ||||||
|     record_payment: 'Registro de pago', |  | ||||||
|     add_estimate: 'Agregar presupuesto', |  | ||||||
|     save_estimate: 'Guardar estimación', |  | ||||||
|     confirm_conversion: '¿Quiere convertir esta estimación en factura?', |  | ||||||
|     conversion_message: 'Conversión exitosa', |  | ||||||
|     confirm_send_estimate: 'Esta estimación se enviará por correo electrónico al cliente', |  | ||||||
|     confirm_mark_as_sent: 'Esta estimación se marcará como enviada', |  | ||||||
|     confirm_mark_as_accepted: 'Esta estimación se marcará como Aceptada', |  | ||||||
|     confirm_mark_as_rejected: 'Esta estimación se marcará como Rechazada', |  | ||||||
|     mark_as_sent_successfully: 'Estimación marcada como enviada correctamente', |  | ||||||
|     send_estimate_successfully: 'Estimación enviada con éxito', |  | ||||||
|     errors: { |  | ||||||
|       required: 'Se requiere campo' |  | ||||||
|     }, |  | ||||||
|     accepted: 'Aceptada', |  | ||||||
|     sent: 'Expedida', |  | ||||||
|     draft: 'Sequía', |  | ||||||
|     declined: 'Rechazada', |  | ||||||
|     new_estimate: 'Nueva estimación', |  | ||||||
|     add_new_estimate: 'Añadir nuevo presupuesto', |  | ||||||
|     update_Estimate: 'Actualizar presupuesto', |  | ||||||
|     edit_estimate: 'Editar estimación', |  | ||||||
|     items: 'artículos', |  | ||||||
|     Estimate: 'Estimación | Estimados', |  | ||||||
|     add_new_tax: 'Agregar nuevo impuesto', |  | ||||||
|     no_estimates: '¡Aún no hay estimaciones!', |  | ||||||
|     list_of_estimates: 'Esta sección contendrá la lista de estimaciones.', |  | ||||||
|     mark_as_rejected: 'Marcar como rechazado', |  | ||||||
|     mark_as_accepted: 'Marcar como aceptado', |  | ||||||
|  |  | ||||||
|     marked_as_accepted_message: 'Estimación marcada como aceptada', |  | ||||||
|     marked_as_rejected_message: 'Estimación marcada como rechazada', |  | ||||||
|     confirm_delete: 'No podrá recuperar esta estimación | No podrá recuperar estas estimaciones', |  | ||||||
|     created_message: 'Estimación creada con éxito', |  | ||||||
|     updated_message: 'Estimación actualizada con éxito', |  | ||||||
|     deleted_message: 'Estimación eliminada con éxito | Estimaciones eliminadas exitosamente', |  | ||||||
|     item: { |  | ||||||
|       title: 'Título del artículo', |  | ||||||
|       description: 'Descripción', |  | ||||||
|       quantity: 'Quantity', |  | ||||||
|       price: 'Precio', |  | ||||||
|       discount: 'Descuento', |  | ||||||
|       total: 'Total', |  | ||||||
|       total_discount: 'Descuento total', |  | ||||||
|       sub_total: 'Subtotal', |  | ||||||
|       tax: 'Impuesto', |  | ||||||
|       amount: 'Cantidad', |  | ||||||
|       select_an_item: 'Escriba o haga clic para seleccionar un elemento', |  | ||||||
|       type_item_description: 'Tipo Elemento Descripción (opcional)' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   invoices: { |  | ||||||
|     title: 'Facturas', |  | ||||||
|     invoices_list: 'Lista de facturas', |  | ||||||
|     days: '{días} días', |  | ||||||
|     months: '{meses} Mes', |  | ||||||
|     years: '{años} Año', |  | ||||||
|     all: 'Todas', |  | ||||||
|     paid: 'Pagada', |  | ||||||
|     unpaid: 'No pagado', |  | ||||||
|     customer: 'CLIENTE', |  | ||||||
|     paid_status: 'ESTADO PAGADO', |  | ||||||
|     ref_no: 'NÚMERO DE REFERENCIA.', |  | ||||||
|     number: 'NÚMERO', |  | ||||||
|     amount_due: 'CANTIDAD DEBIDA', |  | ||||||
|     partially_paid: 'Parcialmente pagado', |  | ||||||
|     total: 'Total', |  | ||||||
|     discount: 'Descuento', |  | ||||||
|     sub_total: 'Subtotal', |  | ||||||
|     invoice: 'Factura | Facturas', |  | ||||||
|     invoice_number: 'Numero de factura', |  | ||||||
|     ref_number: 'Número de referencia', |  | ||||||
|     contact: 'Contacto', |  | ||||||
|     add_item: 'Agregar un artículo', |  | ||||||
|     date: 'Fecha', |  | ||||||
|     due_date: 'Fecha de vencimiento', |  | ||||||
|     status: 'Estado', |  | ||||||
|     add_tax: 'Agregar impuesto', |  | ||||||
|     amount: 'Cantidad', |  | ||||||
|     action: 'Acción', |  | ||||||
|     notes: 'Notas', |  | ||||||
|     view: 'Ver', |  | ||||||
|     send_invoice: 'Enviará la factura', |  | ||||||
|     invoice_template: 'Plantilla de factura', |  | ||||||
|     template: 'Modelo', |  | ||||||
|     mark_as_sent: 'Marcar como enviado', |  | ||||||
|     invoice_mark_as_sent: 'Esta factura se marcará como enviada', |  | ||||||
|     confirm_send: 'Estas facturas se enviarán por correo electrónico al cliente.', |  | ||||||
|     invoice_date: 'Fecha de la factura', |  | ||||||
|     record_payment: 'Registro de pago', |  | ||||||
|     add_new_invoice: 'Añadir nueva factura', |  | ||||||
|     update_expense: 'Gastos de actualización', |  | ||||||
|     edit_invoice: 'Editar factura', |  | ||||||
|     new_invoice: 'Nueva factura', |  | ||||||
|     save_invoice: 'Guardar factura', |  | ||||||
|     update_invoice: 'Actualizar factura', |  | ||||||
|     add_new_tax: 'Agregar nuevo impuesto', |  | ||||||
|     no_invoices: '¡Aún no hay facturas!', |  | ||||||
|     list_of_invoices: 'Esta sección contendrá la lista de facturas.', |  | ||||||
|     select_invoice: 'Seleccionar factura', |  | ||||||
|     mark_as_sent_successfully: 'Factura marcada como enviada con éxito', |  | ||||||
|     send_invoice_successfully: 'Factura enviada exitosamente', |  | ||||||
|     item: { |  | ||||||
|       title: 'Título del artículo', |  | ||||||
|       description: 'Descripción', |  | ||||||
|       quantity: 'Cantidad', |  | ||||||
|       price: 'Precio', |  | ||||||
|       discount: 'Descuento', |  | ||||||
|       total: 'Total', |  | ||||||
|       total_discount: 'Descuento total', |  | ||||||
|       sub_total: 'Subtotal', |  | ||||||
|       tax: 'Impuesto', |  | ||||||
|       amount: 'Cantidad', |  | ||||||
|       select_an_item: 'Escriba o haga clic para seleccionar un elemento', |  | ||||||
|       type_item_description: 'Tipo Elemento Descripción (opcional)' |  | ||||||
|     }, |  | ||||||
|     payment_attached_message: 'Una de las facturas seleccionadas ya tiene un pago adjunto. Asegúrese de eliminar primero los pagos adjuntos para continuar con la eliminación', |  | ||||||
|     confirm_delete: 'No podrá recuperar esta factura | No podrá recuperar estas facturas', |  | ||||||
|     created_message: 'Factura creada exitosamente', |  | ||||||
|     updated_message: 'Factura actualizada exitosamente', |  | ||||||
|     deleted_message: 'Factura eliminada con éxito | Facturas borradas exitosamente', |  | ||||||
|     marked_as_sent_message: 'Factura marcada como enviada con éxito', |  | ||||||
|     invalid_due_amount_message: 'El pago ingresado es mayor que el monto total adeudado por esta factura. Por favor verifique y vuelva a intentar' |  | ||||||
|   }, |  | ||||||
|   credit_notes: { |  | ||||||
|     title: 'Notas de credito', |  | ||||||
|     credit_notes_list: 'Lista de notas de crédito', |  | ||||||
|     // Fields |  | ||||||
|     credit_notes: 'Notas de credito', |  | ||||||
|     contact: 'Contacto', |  | ||||||
|     date: 'Fecha', |  | ||||||
|     amount: 'Cantidad', |  | ||||||
|     action: 'Acción', |  | ||||||
|     credit_number: 'Número de crédito', |  | ||||||
|     notes: 'Notas', |  | ||||||
|     confirm_delete: '¿Desea eliminar esta nota de crédito?', |  | ||||||
|     item: { |  | ||||||
|       title: 'Título del artículo', |  | ||||||
|       description: 'Descripción', |  | ||||||
|       quantity: 'Cantidad', |  | ||||||
|       price: 'Precio', |  | ||||||
|       discount: 'Descuento', |  | ||||||
|       total: 'Total', |  | ||||||
|       total_discount: 'Descuento total', |  | ||||||
|       sub_total: 'Subtotal', |  | ||||||
|       tax: 'Impuesto' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   payments: { |  | ||||||
|     title: 'Pagos', |  | ||||||
|     payments_list: 'Lista de pagos', |  | ||||||
|     record_payment: 'Registro de pago', |  | ||||||
|     // Fields |  | ||||||
|     customer: 'Cliente', |  | ||||||
|     date: 'Fecha', |  | ||||||
|     amount: 'Cantidad', |  | ||||||
|     action: 'Acción', |  | ||||||
|     payment_number: 'Numero de pago', |  | ||||||
|     payment_mode: 'Modo de pago', |  | ||||||
|     invoice: 'Factura', |  | ||||||
|     note: 'Nota', |  | ||||||
|     add_payment: 'Agregar pago', |  | ||||||
|     new_payment: 'Nuevo pago', |  | ||||||
|     edit_payment: 'Editar pago', |  | ||||||
|     view_payment: 'Ver pago', |  | ||||||
|     add_new_payment: 'Agregar nuevo pago', |  | ||||||
|     save_payment: 'Guardar pago', |  | ||||||
|     update_payment: 'Actualizar pago', |  | ||||||
|     payment: 'Pago | Pagos', |  | ||||||
|     no_payments: '¡Aún no hay pagos!', |  | ||||||
|     list_of_payments: 'Esta sección contendrá la lista de pagos.', |  | ||||||
|     select_payment_mode: 'Seleccionar modo de pago', |  | ||||||
|  |  | ||||||
|     confirm_delete: 'No podrá recuperar este pago | No podrá recuperar estos pagos', |  | ||||||
|     created_message: 'Pago creado con éxito', |  | ||||||
|     updated_message: 'Pago actualizado con éxito', |  | ||||||
|     deleted_message: 'Pago eliminado con éxito | Pagos eliminados exitosamente', |  | ||||||
|     invalid_amount_message: 'El importe del pago no es válido.' |  | ||||||
|   }, |  | ||||||
|   expenses: { |  | ||||||
|     title: 'Gastos', |  | ||||||
|     expenses_list: 'Lista de gastos', |  | ||||||
|     // Fields |  | ||||||
|     expense_title: 'Título', |  | ||||||
|     contact: 'Contacto', |  | ||||||
|     category: 'Categoría', |  | ||||||
|     from_date: 'Partir de la fecha', |  | ||||||
|     to_date: 'Hasta la fecha', |  | ||||||
|     expense_date: 'Fecha', |  | ||||||
|     description: 'Descripción', |  | ||||||
|     receipt: 'Recibo', |  | ||||||
|     amount: 'Cantidad', |  | ||||||
|     action: 'Acción', |  | ||||||
|     note: 'Nota', |  | ||||||
|     category_id: 'Categoria ID', |  | ||||||
|     date: 'Fecha de gastos', |  | ||||||
|     add_expense: 'Añadir gastos', |  | ||||||
|     add_new_expense: 'Añadir nuevo gasto', |  | ||||||
|     save_expense: 'Ahorre gastos', |  | ||||||
|     update_expense: 'Gastos de actualización', |  | ||||||
|     download_receipt: 'Descargar recibo', |  | ||||||
|     edit_expense: 'Editar gasto', |  | ||||||
|     new_expense: 'Nuevo gasto', |  | ||||||
|     expense: 'Gastos | Gastos', |  | ||||||
|     no_expenses: 'No hay gastos todavía!', |  | ||||||
|     list_of_expenses: 'Esta sección contendrá la lista de gastos.', |  | ||||||
|  |  | ||||||
|     confirm_delete: 'No podrá recuperar este gasto | No podrá recuperar estos gastos', |  | ||||||
|     created_message: 'Gastos creados exitosamente', |  | ||||||
|     updated_message: 'Gastos actualizados con éxito', |  | ||||||
|     deleted_message: 'Gastos eliminados con éxito | Gastos eliminados exitosamente', |  | ||||||
|     categories: { |  | ||||||
|       categories_list: 'Lista de categorías', |  | ||||||
|       title: 'Título', |  | ||||||
|       name: 'Nombre', |  | ||||||
|       description: 'Descripción', |  | ||||||
|       amount: 'Cantidad', |  | ||||||
|       actions: 'Comportamiento', |  | ||||||
|       add_category: 'añadir categoría', |  | ||||||
|       new_category: 'Nueva categoría', |  | ||||||
|       category: 'Categoría | Categorias', |  | ||||||
|       select_a_category: 'Seleccione una categoría' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   login: { |  | ||||||
|     email: 'Email', |  | ||||||
|     password: 'Contraseña', |  | ||||||
|     forgot_password: '¿Se te olvidó tu contraseña?', |  | ||||||
|     or_signIn_with: 'o Inicie sesión con:', |  | ||||||
|     login: 'Iniciar sesión', |  | ||||||
|     register: 'Registro', |  | ||||||
|     reset_password: 'Restablecer la contraseña', |  | ||||||
|     enter_email: 'Ingrese correo electrónico', |  | ||||||
|     enter_password: 'Introducir la contraseña', |  | ||||||
|     retype_password: 'Retype Password', |  | ||||||
|     login_placeholder: 'mail@example.com' |  | ||||||
|   }, |  | ||||||
|   reports: { |  | ||||||
|     title: 'Reporte', |  | ||||||
|     from_date: 'Partir de la fecha', |  | ||||||
|     to_date: 'Hasta la fecha', |  | ||||||
|     status: 'Estado', |  | ||||||
|     paid: 'Pagada', |  | ||||||
|     unpaid: 'No pagado', |  | ||||||
|     download_pdf: 'Descargar PDF', |  | ||||||
|     view_pdf: 'Ver PDF', |  | ||||||
|     update_report: 'Informe de actualización', |  | ||||||
|     report: 'Informe | Informes', |  | ||||||
|     profit_loss: { |  | ||||||
|       profit_loss: 'Pérdida de beneficios', |  | ||||||
|       to_date: 'Hasta la fecha', |  | ||||||
|       from_date: 'Partir de la fecha', |  | ||||||
|       date_range: 'Seleccionar rango de fechas' |  | ||||||
|     }, |  | ||||||
|     sales: { |  | ||||||
|       sales: 'Ventas', |  | ||||||
|       date_range: 'Seleccionar rango de fechas', |  | ||||||
|       to_date: 'Hasta la fecha', |  | ||||||
|       from_date: 'Partir de la fecha', |  | ||||||
|       report_type: 'Tipo de informe' |  | ||||||
|     }, |  | ||||||
|     taxes: { |  | ||||||
|       taxes: 'Impuestos', |  | ||||||
|       to_date: 'Hasta la fecha', |  | ||||||
|       from_date: 'Partir de la fecha', |  | ||||||
|       date_range: 'Seleccionar rango de fechas' |  | ||||||
|     }, |  | ||||||
|     errors: { |  | ||||||
|       required: 'Se requiere campo' |  | ||||||
|     }, |  | ||||||
|     invoices: { |  | ||||||
|       invoice: 'Factura', |  | ||||||
|       invoice_date: 'Fecha de la factura', |  | ||||||
|       due_date: 'Fecha de vencimiento', |  | ||||||
|       amount: 'Cantidad', |  | ||||||
|       contact_name: 'Nombre de contacto', |  | ||||||
|       status: 'Estado' |  | ||||||
|     }, |  | ||||||
|     estimates: { |  | ||||||
|       estimate: 'Estimar', |  | ||||||
|       estimate_date: 'Fecha estimada', |  | ||||||
|       due_date: 'Fecha de vencimiento', |  | ||||||
|       estimate_number: 'Numero Estimado', |  | ||||||
|       ref_number: 'Número de referencia', |  | ||||||
|       amount: 'Cantidad', |  | ||||||
|       contact_name: 'Nombre de contacto', |  | ||||||
|       status: 'Estado' |  | ||||||
|     }, |  | ||||||
|     expenses: { |  | ||||||
|       expenses: 'Gastos', |  | ||||||
|       category: 'Categoría', |  | ||||||
|       date: 'Fecha', |  | ||||||
|       amount: 'Cantidad', |  | ||||||
|       to_date: 'Hasta la fecha', |  | ||||||
|       from_date: 'Partir de la fecha', |  | ||||||
|       date_range: 'Seleccionar rango de fechas' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   settings: { |  | ||||||
|     menu_title: { |  | ||||||
|       account_settings: 'Configuraciones de la cuenta', |  | ||||||
|       company_information: 'Información de la empresa', |  | ||||||
|       preferences: 'Preferencias', |  | ||||||
|       notifications: 'Notificaciones', |  | ||||||
|       tax_types: 'Tipos de impuestos', |  | ||||||
|       expense_category: 'Categorías de gastos', |  | ||||||
|       update_app: 'Actualizar aplicación' |  | ||||||
|     }, |  | ||||||
|     title: 'Configuraciones', |  | ||||||
|     setting: 'Configuraciones | Configuraciones', |  | ||||||
|     general: 'General', |  | ||||||
|     language: 'Idioma', |  | ||||||
|     primary_currency: 'Moneda primaria', |  | ||||||
|     timezone: 'Zona horaria', |  | ||||||
|     date_format: 'Formato de fecha', |  | ||||||
|     currencies: { |  | ||||||
|       title: 'Monedas', |  | ||||||
|       currency: 'Moneda | Monedas', |  | ||||||
|       currencies_list: 'Lista de monedas', |  | ||||||
|       select_currency: 'Seleccione el tipo de moneda', |  | ||||||
|       name: 'Nombre', |  | ||||||
|       code: 'Código', |  | ||||||
|       symbol: 'Símbolo', |  | ||||||
|       precision: 'Precisión', |  | ||||||
|       thousand_separator: 'Mil separadores', |  | ||||||
|       decimal_separator: 'Separador decimal', |  | ||||||
|       position: 'Posición', |  | ||||||
|       position_of_symbol: 'Posición del símbolo', |  | ||||||
|       right: 'Derecho', |  | ||||||
|       left: 'Izquierda', |  | ||||||
|       action: 'Acción', |  | ||||||
|       add_currency: 'Agregar moneda' |  | ||||||
|     }, |  | ||||||
|     mail: { |  | ||||||
|       host: 'Host de correo', |  | ||||||
|       port: 'Puerto de correo', |  | ||||||
|       driver: 'Conductor de correo', |  | ||||||
|       secret: 'Secreto', |  | ||||||
|       password: 'Contraseña de correo', |  | ||||||
|       username: 'Nombre de usuario de correo', |  | ||||||
|       mailgun_secret: 'Mailgun Secreto', |  | ||||||
|       mailgun_domain: 'Domino', |  | ||||||
|       mailgun_endpoint: 'Mailgun Punto Final', |  | ||||||
|       ses_secret: 'SES Secreto', |  | ||||||
|       ses_key: 'SES llave', |  | ||||||
|       from_name: 'Del nombre del correo', |  | ||||||
|       from_mail: 'Desde la dirección de correo', |  | ||||||
|       mail_config: 'Configuración de correo', |  | ||||||
|       encryption: 'Cifrado de correo', |  | ||||||
|       mail_config_desc: 'Los detalles a continuación se utilizarán para actualizar el entorno de correo. También puede cambiar los detalles en cualquier momento después de iniciar sesión.' |  | ||||||
|     }, |  | ||||||
|     pdf: { |  | ||||||
|       title: 'Configuración de PDF', |  | ||||||
|       footer_text: 'Texto de pie de página', |  | ||||||
|       pdf_layout: 'Diseño PDF' |  | ||||||
|     }, |  | ||||||
|     company_info: { |  | ||||||
|       company_info: 'Información de la compañía', |  | ||||||
|       company_name: 'nombre de empresa', |  | ||||||
|       company_logo: 'Logo de la compañía', |  | ||||||
|       section_description: 'Información sobre su empresa que se mostrará en las facturas, estimaciones y otros documentos creados por Crater.', |  | ||||||
|       phone: 'Teléfono', |  | ||||||
|       country: 'País', |  | ||||||
|       state: 'Estado', |  | ||||||
|       city: 'Ciudad', |  | ||||||
|       address: 'Habla a', |  | ||||||
|       zip: 'Código Postal', |  | ||||||
|       save: 'Salvar', |  | ||||||
|       updated_message: 'Información de la empresa actualizada con éxito' |  | ||||||
|     }, |  | ||||||
|     account_settings: { |  | ||||||
|       profile_picture: 'Foto de perfil', |  | ||||||
|       name: 'Nombre', |  | ||||||
|       email: 'Email', |  | ||||||
|       password: 'Contraseña', |  | ||||||
|       confirm_password: 'Confirmar contraseña', |  | ||||||
|       account_settings: 'Configuraciones de la cuenta', |  | ||||||
|       save: 'Salvar', |  | ||||||
|       section_description: 'Puede actualizar su nombre, correo electrónico y contraseña utilizando el siguiente formulario.', |  | ||||||
|       updated_message: 'Configuración de la cuenta actualizada correctamente' |  | ||||||
|     }, |  | ||||||
|     user_profile: { |  | ||||||
|       name: 'Nombre', |  | ||||||
|       email: 'Email', |  | ||||||
|       password: 'Contraseña', |  | ||||||
|       confirm_password: 'Confirmar contraseña' |  | ||||||
|     }, |  | ||||||
|     notification: { |  | ||||||
|       title: 'Notificación', |  | ||||||
|       email: 'Enviar notificaciones a', |  | ||||||
|       description: '¿Qué notificaciones por correo electrónico le gustaría recibir cuando algo cambia?', |  | ||||||
|       invoice_viewed: 'Factura vista', |  | ||||||
|       invoice_viewed_desc: 'Cuando su cliente ve la factura enviada a través del panel de control del cráter.', |  | ||||||
|       estimate_viewed: 'Estimación vista', |  | ||||||
|       estimate_viewed_desc: 'Cuando su cliente ve la estimación enviada a través del panel de control del cráter.', |  | ||||||
|       save: 'Salvar', |  | ||||||
|       email_save_message: 'Correo electrónico guardado con éxito', |  | ||||||
|       please_enter_email: 'Por favor, introduzca su correo electrónico' |  | ||||||
|     }, |  | ||||||
|     tax_types: { |  | ||||||
|       title: 'Tipos de impuestos', |  | ||||||
|       add_tax: 'Agregar impuesto', |  | ||||||
|       description: 'Puede agregar o eliminar impuestos a su gusto. Crater admite impuestos sobre artículos individuales, así como sobre la factura.', |  | ||||||
|       add_new_tax: 'Agregar nuevo impuesto', |  | ||||||
|       tax_settings: 'Configuraciones de impuestos', |  | ||||||
|       tax_per_item: 'Impuesto por artículo', |  | ||||||
|       tax_name: 'Nombre fiscal', |  | ||||||
|       compound_tax: 'Impuesto compuesto', |  | ||||||
|       percent: 'Por ciento', |  | ||||||
|       action: 'Acción', |  | ||||||
|       tax_setting_description: 'Habilítelo si desea agregar impuestos a artículos de factura individuales. Por defecto, los impuestos se agregan directamente a la factura.', |  | ||||||
|       created_message: 'Tipo de impuesto creado con éxito', |  | ||||||
|       updated_message: 'Tipo de impuesto actualizado correctamente', |  | ||||||
|       deleted_message: 'Tipo de impuesto eliminado correctamente', |  | ||||||
|       confirm_delete: 'No podrá recuperar este tipo de impuesto', |  | ||||||
|       already_in_use: 'El impuesto ya está en uso.' |  | ||||||
|     }, |  | ||||||
|     expense_category: { |  | ||||||
|       title: 'Categorías de gastos', |  | ||||||
|       action: 'Acción', |  | ||||||
|       description: 'Se requieren categorías para agregar entradas de gastos. Puede Agregar o Eliminar estas categorías según su preferencia.', |  | ||||||
|       add_new_category: 'Añadir nueva categoria', |  | ||||||
|       category_name: 'nombre de la categoría', |  | ||||||
|       category_description: 'Descripción', |  | ||||||
|       created_message: 'Categoría de gastos creada con éxito', |  | ||||||
|       deleted_message: 'Categoría de gastos eliminada correctamente', |  | ||||||
|       updated_message: 'Categoría de gastos actualizada con éxito', |  | ||||||
|       confirm_delete: 'No podrá recuperar esta categoría de gastos', |  | ||||||
|       already_in_use: 'La categoría ya está en uso.' |  | ||||||
|     }, |  | ||||||
|     preferences: { |  | ||||||
|       currency: 'Moneda', |  | ||||||
|       language: 'Idioma', |  | ||||||
|       time_zone: 'Zona horaria', |  | ||||||
|       fiscal_year: 'Año financiero', |  | ||||||
|       date_format: 'Formato de fecha', |  | ||||||
|       discount_setting: 'Ajuste de descuento', |  | ||||||
|       discount_per_item: 'Descuento por artículo', |  | ||||||
|       discount_setting_description: 'Habilítelo si desea agregar Descuento a artículos de factura individuales. Por defecto, los descuentos se agregan directamente a la factura.', |  | ||||||
|       save: 'Salvar', |  | ||||||
|       preference: 'Preferencia | Preferencias', |  | ||||||
|       general_settings: 'Preferencias predeterminadas para el sistema.', |  | ||||||
|       updated_message: 'Preferencias actualizadas exitosamente', |  | ||||||
|       select_language: 'seleccione el idioma', |  | ||||||
|       select_time_zone: 'selecciona la zona horaria', |  | ||||||
|       select_date_formate: 'seleccione formato de fecha', |  | ||||||
|       select_financial_year: 'seleccione año financiero' |  | ||||||
|     }, |  | ||||||
|     update_app: { |  | ||||||
|       title: 'Actualizar aplicación', |  | ||||||
|       description: 'actualizar la descripción de la aplicación', |  | ||||||
|       check_update: 'Buscar actualizaciones', |  | ||||||
|       avail_update: 'Nueva actualización disponible', |  | ||||||
|       next_version: 'Próxima versión', |  | ||||||
|       update: 'Actualizar', |  | ||||||
|       update_progress: 'Actualización en progreso...', |  | ||||||
|       progress_text: 'Solo tomará unos minutos. No actualice la pantalla ni cierre la ventana antes de que finalice la actualización.', |  | ||||||
|       update_success: '¡La aplicación ha sido actualizada! Espere mientras la ventana de su navegador se vuelve a cargar automáticamente.', |  | ||||||
|       latest_message: '¡Actualización no disponible! Estás en la última versión.', |  | ||||||
|       current_version: 'Versión actual' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   wizard: { |  | ||||||
|     account_info: 'Información de la cuenta', |  | ||||||
|     account_info_desc: 'Los detalles a continuación se utilizarán para crear la cuenta principal de administrador. También puede cambiar los detalles en cualquier momento después de iniciar sesión.', |  | ||||||
|     name: 'Nombre', |  | ||||||
|     email: 'Email', |  | ||||||
|     password: 'Contraseña', |  | ||||||
|     confirm_password: 'Confirmar contraseña', |  | ||||||
|     save_cont: 'Guardar Continuar', |  | ||||||
|     company_info: 'Información de la empresa', |  | ||||||
|     company_info_desc: 'Esta información se mostrará en las facturas. Tenga en cuenta que puede editar esto más adelante en la página de configuración.', |  | ||||||
|     company_name: 'nombre de empresa', |  | ||||||
|     company_logo: 'Logo de la compañía', |  | ||||||
|     logo_preview: 'Vista previa del logotipo', |  | ||||||
|     preferences: 'Preferencias', |  | ||||||
|     preferences_desc: 'Preferencias predeterminadas para el sistema.', |  | ||||||
|     country: 'País', |  | ||||||
|     state: 'Estado', |  | ||||||
|     city: 'Ciudad', |  | ||||||
|     address: 'Habla a', |  | ||||||
|     street: 'Calle1 ' | 'Calle # 2', |  | ||||||
|     phone: 'Teléfono', |  | ||||||
|     zip_code: 'Código postal', |  | ||||||
|     go_back: 'Regresa', |  | ||||||
|     currency: 'Moneda', |  | ||||||
|     language: 'Idioma', |  | ||||||
|     time_zone: 'Zona horaria', |  | ||||||
|     fiscal_year: 'Año financiero', |  | ||||||
|     date_format: 'Formato de fecha', |  | ||||||
|     from_address: 'De la Dirección', |  | ||||||
|     username: 'Nombre de usuario', |  | ||||||
|     next: 'Próximo', |  | ||||||
|     continue: 'Hacer continuación', |  | ||||||
|     database: { |  | ||||||
|       database: 'URL del sitio y base de datose', |  | ||||||
|       connection: 'Conexión de base de datos', |  | ||||||
|       host: 'Database Host', |  | ||||||
|       port: 'Host de base de datos', |  | ||||||
|       password: 'Contraseña de base de datos', |  | ||||||
|       app_url: 'URL de la aplicación', |  | ||||||
|       username: 'Nombre de usuario de la base de datos', |  | ||||||
|       db_name: 'Nombre de la base de datos', |  | ||||||
|       desc: 'Cree una base de datos en su servidor y establezca las credenciales utilizando el siguiente formulario.' |  | ||||||
|     }, |  | ||||||
|     permissions: { |  | ||||||
|       permissions: 'Permisos', |  | ||||||
|       permission_confirm_title: 'Estás seguro de que quieres continuar?', |  | ||||||
|       permission_confirm_desc: 'Error de verificación de permisos de carpeta', |  | ||||||
|       permission_desc: 'A continuación se muestra la lista de permisos de carpeta necesarios para que la aplicación funcione. Si la verificación de permisos falla, asegúrese de actualizar los permisos de su carpeta.' |  | ||||||
|     }, |  | ||||||
|     mail: { |  | ||||||
|       host: 'Host de correo', |  | ||||||
|       port: 'Puerto de correo', |  | ||||||
|       driver: 'Conductor de correo', |  | ||||||
|       secret: 'Secreto', |  | ||||||
|       password: 'Contraseña de correo', |  | ||||||
|       username: 'Nombre de usuario de correo', |  | ||||||
|       mailgun_secret: 'Mailgun Secreto', |  | ||||||
|       mailgun_domain: 'Domino', |  | ||||||
|       mailgun_endpoint: 'Mailgun Punto Final', |  | ||||||
|       ses_secret: 'SES Secreto', |  | ||||||
|       ses_key: 'SES llave', |  | ||||||
|       from_name: 'Del nombre del correo', |  | ||||||
|       from_mail: 'Desde la dirección de correo', |  | ||||||
|       mail_config: 'Configuración de correo', |  | ||||||
|       encryption: 'Cifrado de correo', |  | ||||||
|       mail_config_desc: 'Los detalles a continuación se utilizarán para actualizar el entorno de correo. También puede cambiar los detalles en cualquier momento después de iniciar sesión.' |  | ||||||
|     }, |  | ||||||
|     req: { |  | ||||||
|       system_req: 'Requisitos del sistema', |  | ||||||
|       php_req_version: 'Php (versión {version} necesario)', |  | ||||||
|       check_req: 'Consultar requisitos', |  | ||||||
|       system_req_desc: 'Crater tiene algunos requisitos de servidor. Asegúrese de que su servidor tenga la versión de php requerida y todas las extensiones mencionadas a continuación.' |  | ||||||
|     }, |  | ||||||
|     errors: { |  | ||||||
|       migrate_failed: 'La migración falló', |  | ||||||
|       database_variables_save_error: 'No se puede conectar a la base de datos con los valores proporcionados.', |  | ||||||
|       mail_variables_save_error: 'La configuración del correo electrónico ha fallado.', |  | ||||||
|       connection_failed: 'Conexión de base de datos fallida' |  | ||||||
|     }, |  | ||||||
|     success: { |  | ||||||
|       mail_variables_save_successfully: 'Correo electrónico configurado correctamente', |  | ||||||
|       database_variables_save_successfully: 'Base de datos configurada con éxito.' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   layout_login: { |  | ||||||
|     copyright_crater: 'Copyright @ Crater - 2019', |  | ||||||
|     super_simple_invoicing: 'Facturación super simple', |  | ||||||
|     for_freelancer: 'para autónomos y', |  | ||||||
|     small_businesses: 'Pequeñas empresas', |  | ||||||
|     crater_help: 'Crater te ayuda a rastrear gastos, registrar pagos y generar hermosos', |  | ||||||
|     invoices_and_estimates: 'facturas y presupuestos con capacidad para elegir múltiples plantillas.' |  | ||||||
|  |  | ||||||
|   }, |  | ||||||
|   validation: { |  | ||||||
|     invalid_url: 'URL no válida (por ejemplo, http://www.crater.com)', |  | ||||||
|     required: 'Se requiere campo', |  | ||||||
|     email_incorrect: 'Email incorrecto.', |  | ||||||
|     email_does_not_exist: ' Usuario con correo electrónico dado no existe', |  | ||||||
|     send_reset_link: 'Enviar restablecer enlace', |  | ||||||
|     not_yet: '¿Aún no? Envialo de nuevo', |  | ||||||
|     password_min_length: 'La contraseña debe contener {count} caracteres', |  | ||||||
|     name_min_length: 'El nombre debe tener al menos {count} letras.', |  | ||||||
|     enter_valid_tax_rate: 'Ingrese una tasa impositiva válida', |  | ||||||
|     numbers_only: 'Solo numeros.', |  | ||||||
|     characters_only: 'Solo personajes.', |  | ||||||
|     password_incorrect: 'Las contraseñas deben ser idénticas', |  | ||||||
|     password_length: 'La contraseña debe tener 5 caracteres de longitud.', |  | ||||||
|     qty_must_greater_than_zero: 'La cantidad debe ser mayor que cero.', |  | ||||||
|     price_greater_than_zero: 'El precio debe ser mayor que cero.', |  | ||||||
|     payment_greater_than_zero: 'El pago debe ser mayor que cero.', |  | ||||||
|     payment_greater_than_due_amount: 'El pago ingresado es mayor al monto adeudado de esta factura.', |  | ||||||
|     quantity_maxlength: 'La cantidad no debe ser mayor de 20 dígitos.', |  | ||||||
|     price_maxlength: 'El precio no debe ser mayor de 20 dígitos.', |  | ||||||
|     price_minvalue: 'El precio debe ser mayor que 0 dígitos', |  | ||||||
|     amount_maxlength: 'La cantidad no debe ser mayor de 20 dígitos.', |  | ||||||
|     amount_minvalue: 'La cantidad debe ser mayor que 0 dígitos', |  | ||||||
|     description_maxlength: 'La descripción no debe tener más de 255 caracteres.', |  | ||||||
|     maximum_options_error: 'Máximo de {max} opciones seleccionadas. Primero elimine una opción seleccionada para seleccionar otra.', |  | ||||||
|     notes_maxlength: 'Las notas no deben tener más de 255 caracteres.', |  | ||||||
|     address_maxlength: 'La dirección no debe tener más de 255 caracteres.', |  | ||||||
|     ref_number_maxlength: 'El número de referencia no debe tener más de 255 caracteres.' |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										811
									
								
								resources/assets/js/plugins/es.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										811
									
								
								resources/assets/js/plugins/es.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,811 @@ | |||||||
|  | { | ||||||
|  |   "navigation": { | ||||||
|  |     "dashboard": "Tablero", | ||||||
|  |     "customers": "Clientes", | ||||||
|  |     "items": "Artículos", | ||||||
|  |     "invoices": "Facturas", | ||||||
|  |     "expenses": "Gastos", | ||||||
|  |     "estimates": "Estimadas", | ||||||
|  |     "payments": "Pagos", | ||||||
|  |     "reports": "Informes", | ||||||
|  |     "settings": "Configuraciones", | ||||||
|  |     "logout": "Cerrar sesión" | ||||||
|  |   }, | ||||||
|  |   "general": { | ||||||
|  |     "view_pdf": "Ver PDF", | ||||||
|  |     "download_pdf": "Descargar PDF", | ||||||
|  |     "save": "Salvar", | ||||||
|  |     "cancel": "Cancelar", | ||||||
|  |     "update": "Actualizar", | ||||||
|  |     "download": "Descargar", | ||||||
|  |     "from_date": "Partir de la fecha", | ||||||
|  |     "to_date": "Hasta la fecha", | ||||||
|  |     "from": "De", | ||||||
|  |     "to": "A", | ||||||
|  |     "go_back": "Regresa", | ||||||
|  |     "back_to_login": "¿Atrás para iniciar sesión?", | ||||||
|  |     "home": "Casa", | ||||||
|  |     "filter": "Filtrar", | ||||||
|  |     "delete": "Eliminar", | ||||||
|  |     "edit": "Editar", | ||||||
|  |     "view": "Ver", | ||||||
|  |     "add_new_item": "Agregar ítem nuevo", | ||||||
|  |     "clear_all": "Limpiar todo", | ||||||
|  |     "showing": "Demostración", | ||||||
|  |     "of": "de", | ||||||
|  |     "actions": "Comportamiento", | ||||||
|  |     "subtotal": "TOTAL PARCIAL", | ||||||
|  |     "discount": "DESCUENTO", | ||||||
|  |     "fixed": "Fija", | ||||||
|  |     "percentage": "Porcentaje", | ||||||
|  |     "tax": "IMPUESTO", | ||||||
|  |     "total_amount": "CANTIDAD TOTAL", | ||||||
|  |     "bill_to": "Cobrar a", | ||||||
|  |     "ship_to": "Envie a", | ||||||
|  |     "due": "Debida", | ||||||
|  |     "draft": "Sequía", | ||||||
|  |     "sent": "Expedida", | ||||||
|  |     "all": "Todas", | ||||||
|  |     "select_all": "Seleccionar todo", | ||||||
|  |     "choose_file": "Haga clic aquí para elegir un archivo.", | ||||||
|  |     "choose_template": "Elige una plantilla", | ||||||
|  |     "choose": "Escoger", | ||||||
|  |     "remove": "Eliminar", | ||||||
|  |     "powered_by": "Energizado por", | ||||||
|  |     "bytefury": "Bytefury", | ||||||
|  |     "select_a_status": "Selecciona un estado", | ||||||
|  |     "select_a_tax": "Selecciona un impuesto", | ||||||
|  |     "search": "Buscar", | ||||||
|  |     "are_you_sure": "¿Estás seguro?", | ||||||
|  |     "list_is_empty": "La lista esta vacía.", | ||||||
|  |     "no_tax_found": "¡No se encontraron impuestos!", | ||||||
|  |     "four_zero_four": "404", | ||||||
|  |     "you_got_lost": "Whoops! ¡Te perdiste!", | ||||||
|  |     "go_home": "Vete a casa", | ||||||
|  |  | ||||||
|  |     "setting_updated": "Configuración actualizada con éxito", | ||||||
|  |     "select_state": "Seleccione estado", | ||||||
|  |     "select_country": "Seleccionar país", | ||||||
|  |     "select_city": "Ciudad selecta", | ||||||
|  |     "street_1": "Calle 1", | ||||||
|  |     "street_2": "Calle # 2", | ||||||
|  |     "action_failed": "Accion: Fallida" | ||||||
|  |   }, | ||||||
|  |   "dashboard": { | ||||||
|  |     "select_year": "Seleccione año", | ||||||
|  |     "cards": { | ||||||
|  |       "due_amount": "Monto adeudado", | ||||||
|  |       "customers": "Clientes", | ||||||
|  |       "invoices": "Facturas", | ||||||
|  |       "estimates": "Estimadas" | ||||||
|  |     }, | ||||||
|  |     "chart_info": { | ||||||
|  |       "total_sales": "Ventas", | ||||||
|  |       "total_receipts": "Ingresos", | ||||||
|  |       "total_expense": "Gastos", | ||||||
|  |       "net_income": "Lngresos netos", | ||||||
|  |       "year": "Seleccione año" | ||||||
|  |     }, | ||||||
|  |     "weekly_invoices": { | ||||||
|  |       "title": "Facturas semanales" | ||||||
|  |     }, | ||||||
|  |     "monthly_chart": { | ||||||
|  |       "title": "Gastos de venta" | ||||||
|  |     }, | ||||||
|  |     "recent_invoices_card": { | ||||||
|  |       "title": "Facturas adeudadas", | ||||||
|  |       "due_on": "Debido a", | ||||||
|  |       "customer": "Cliente", | ||||||
|  |       "amount_due": "Monto adeudado", | ||||||
|  |       "actions": "Comportamiento", | ||||||
|  |       "view_all": "Ver todo" | ||||||
|  |     }, | ||||||
|  |     "recent_estimate_card": { | ||||||
|  |       "title": "Estimaciones recientes", | ||||||
|  |       "date": "Fecha", | ||||||
|  |       "customer": "Cliente", | ||||||
|  |       "amount_due": "Monto adeudado", | ||||||
|  |       "actions": "Comportamiento", | ||||||
|  |       "view_all": "Ver todo" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "tax_types": { | ||||||
|  |     "name": "Nombre", | ||||||
|  |     "description": "Descripción", | ||||||
|  |     "percent": "Por ciento", | ||||||
|  |     "compound_tax": "Impuesto compuesto" | ||||||
|  |   }, | ||||||
|  |   "customers": { | ||||||
|  |     "title": "Clientes", | ||||||
|  |     "add_customer": "Agregar cliente", | ||||||
|  |     "contacts_list": "Lista de clientes", | ||||||
|  |     "name": "Nombre", | ||||||
|  |     "display_name": "Nombre para mostrar", | ||||||
|  |     "primary_contact_name": "Nombre de contacto primario", | ||||||
|  |     "contact_name": "Nombre de contacto", | ||||||
|  |     "amount_due": "Monto adeudado", | ||||||
|  |     "email": "Email", | ||||||
|  |     "address": "Habla a", | ||||||
|  |     "phone": "Teléfono", | ||||||
|  |     "website": "Sitio web", | ||||||
|  |     "country": "País", | ||||||
|  |     "state": "Estado", | ||||||
|  |     "city": "Ciudad", | ||||||
|  |     "zip_code": "Código postal", | ||||||
|  |     "added_on": "Añadido", | ||||||
|  |     "action": "Acción", | ||||||
|  |     "password": "Contraseña", | ||||||
|  |     "street_number": "Número de calle", | ||||||
|  |     "primary_currency": "Moneda primaria", | ||||||
|  |     "add_new_customer": "Agregar nuevo cliente", | ||||||
|  |     "save_customer": "Guardar cliente", | ||||||
|  |     "update_customer": "Actualizar cliente", | ||||||
|  |     "customer": "Cliente | Clientes", | ||||||
|  |     "new_customer": "Nuevo cliente", | ||||||
|  |     "edit_customer": "Editar cliente", | ||||||
|  |     "basic_info": "Información básica", | ||||||
|  |     "billing_address": "Dirección de Envio", | ||||||
|  |     "shipping_address": "Dirección de Envío", | ||||||
|  |     "copy_billing_address": "Copia de facturación", | ||||||
|  |     "no_customers": "¡Aún no hay clientes!", | ||||||
|  |     "no_customers_found": "No se encontraron clientes!", | ||||||
|  |     "list_of_customers": "Esta sección contendrá la lista de clientes.", | ||||||
|  |     "primary_display_name": "Nombre de visualización principal", | ||||||
|  |     "select_state": "Seleccione estado", | ||||||
|  |     "select_country": "Seleccionar país", | ||||||
|  |     "select_city": "Ciudad selecta", | ||||||
|  |     "select_currency": "Seleccione el tipo de moneda", | ||||||
|  |     "street_1": "Calle 1", | ||||||
|  |     "street_2": "Calle 2", | ||||||
|  |     "select_a_customer": "Selecciona un cliente", | ||||||
|  |     "type_or_click": "Escriba o haga clic para seleccionar", | ||||||
|  |  | ||||||
|  |     "confirm_delete": "No podrá recuperar este cliente | No podrá recuperar estos clientes", | ||||||
|  |     "created_message": "Cliente creado con éxito", | ||||||
|  |     "updated_message": "Cliente actualizado con éxito", | ||||||
|  |     "deleted_message": "Cliente eliminado correctamente | Clientes eliminados exitosamente" | ||||||
|  |   }, | ||||||
|  |   "items": { | ||||||
|  |     "title": "Artículos", | ||||||
|  |     "items_list": "Lista de artículos", | ||||||
|  |     "name": "Nombre", | ||||||
|  |     "unit": "Unidad", | ||||||
|  |     "description": "Descripción", | ||||||
|  |     "added_on": "Añadido", | ||||||
|  |     "price": "Precio", | ||||||
|  |     "date_of_creation": "Fecha de creación", | ||||||
|  |     "action": "Acción", | ||||||
|  |     "add_item": "Añadir artículo", | ||||||
|  |     "save_item": "Guardar artículo", | ||||||
|  |     "update_item": "Actualizar elemento", | ||||||
|  |     "item": "Artículo | Artículos", | ||||||
|  |     "add_new_item": "Agregar ítem nuevo", | ||||||
|  |     "new_item": "Nuevo artículo", | ||||||
|  |     "edit_item": "Editar elemento", | ||||||
|  |     "no_items": "¡Aún no hay artículos!", | ||||||
|  |     "list_of_items": "Esta sección contendrá la lista de artículos.", | ||||||
|  |     "select_a_unit": "seleccione unidad", | ||||||
|  |  | ||||||
|  |     "item_attached_message": "No se puede eliminar un elemento que ya está en uso.", | ||||||
|  |     "confirm_delete": "No podrá recuperar este artículo | No podrás recuperar estos elementos", | ||||||
|  |     "created_message": "Artículo creado con éxito", | ||||||
|  |     "updated_message": "Artículo actualizado con éxito", | ||||||
|  |     "deleted_message": "Elemento eliminado con éxito | Elementos eliminados correctamente" | ||||||
|  |   }, | ||||||
|  |   "estimates": { | ||||||
|  |     "title": "Estimadas", | ||||||
|  |     "estimate": "Estimación | Estimados", | ||||||
|  |     "estimates_list": "Lista de estimaciones", | ||||||
|  |     "days": "{días} días", | ||||||
|  |     "months": "{meses} Mes", | ||||||
|  |     "years": "{años} Año", | ||||||
|  |     "all": "Todas", | ||||||
|  |     "paid": "Pagada", | ||||||
|  |     "unpaid": "No pagado", | ||||||
|  |     "customer": "CLIENTE", | ||||||
|  |     "ref_no": "NÚMERO DE REFERENCIA.", | ||||||
|  |     "number": "NÚMERO", | ||||||
|  |     "amount_due": "CANTIDAD DEBIDA", | ||||||
|  |     "partially_paid": "Parcialmente pagado", | ||||||
|  |     "total": "Total", | ||||||
|  |     "discount": "Descuento", | ||||||
|  |     "sub_total": "Subtotal", | ||||||
|  |     "estimate_number": "Numero Estimado", | ||||||
|  |     "ref_number": "Número de referencia", | ||||||
|  |     "contact": "Contacto", | ||||||
|  |     "add_item": "Agregar un artículo", | ||||||
|  |     "date": "Fecha", | ||||||
|  |     "due_date": "Fecha de vencimiento", | ||||||
|  |     "expiry_date": "Fecha de caducidad", | ||||||
|  |     "status": "Estado", | ||||||
|  |     "add_tax": "Agregar impuesto", | ||||||
|  |     "amount": "Cantidad", | ||||||
|  |     "action": "Acción", | ||||||
|  |     "notes": "Notas", | ||||||
|  |     "tax": "Impuesto", | ||||||
|  |     "send_estimate": "Enviar presupuesto", | ||||||
|  |     "estimate_template": "Plantilla de estimación", | ||||||
|  |     "convert_to_invoice": "Convertir a factura", | ||||||
|  |     "mark_as_sent": "Marcar como enviado", | ||||||
|  |     "record_payment": "Registro de pago", | ||||||
|  |     "add_estimate": "Agregar presupuesto", | ||||||
|  |     "save_estimate": "Guardar estimación", | ||||||
|  |     "confirm_conversion": "¿Quiere convertir esta estimación en factura?", | ||||||
|  |     "conversion_message": "Conversión exitosa", | ||||||
|  |     "confirm_send_estimate": "Esta estimación se enviará por correo electrónico al cliente", | ||||||
|  |     "confirm_mark_as_sent": "Esta estimación se marcará como enviada", | ||||||
|  |     "confirm_mark_as_accepted": "Esta estimación se marcará como Aceptada", | ||||||
|  |     "confirm_mark_as_rejected": "Esta estimación se marcará como Rechazada", | ||||||
|  |     "mark_as_sent_successfully": "Estimación marcada como enviada correctamente", | ||||||
|  |     "send_estimate_successfully": "Estimación enviada con éxito", | ||||||
|  |     "errors": { | ||||||
|  |       "required": "Se requiere campo" | ||||||
|  |     }, | ||||||
|  |     "accepted": "Aceptada", | ||||||
|  |     "sent": "Expedida", | ||||||
|  |     "draft": "Sequía", | ||||||
|  |     "declined": "Rechazada", | ||||||
|  |     "new_estimate": "Nueva estimación", | ||||||
|  |     "add_new_estimate": "Añadir nuevo presupuesto", | ||||||
|  |     "update_Estimate": "Actualizar presupuesto", | ||||||
|  |     "edit_estimate": "Editar estimación", | ||||||
|  |     "items": "artículos", | ||||||
|  |     "Estimate": "Estimación | Estimados", | ||||||
|  |     "add_new_tax": "Agregar nuevo impuesto", | ||||||
|  |     "no_estimates": "¡Aún no hay estimaciones!", | ||||||
|  |     "list_of_estimates": "Esta sección contendrá la lista de estimaciones.", | ||||||
|  |     "mark_as_rejected": "Marcar como rechazado", | ||||||
|  |     "mark_as_accepted": "Marcar como aceptado", | ||||||
|  |  | ||||||
|  |     "marked_as_accepted_message": "Estimación marcada como aceptada", | ||||||
|  |     "marked_as_rejected_message": "Estimación marcada como rechazada", | ||||||
|  |     "confirm_delete": "No podrá recuperar esta estimación | No podrá recuperar estas estimaciones", | ||||||
|  |     "created_message": "Estimación creada con éxito", | ||||||
|  |     "updated_message": "Estimación actualizada con éxito", | ||||||
|  |     "deleted_message": "Estimación eliminada con éxito | Estimaciones eliminadas exitosamente", | ||||||
|  |     "item": { | ||||||
|  |       "title": "Título del artículo", | ||||||
|  |       "description": "Descripción", | ||||||
|  |       "quantity": "Quantity", | ||||||
|  |       "price": "Precio", | ||||||
|  |       "discount": "Descuento", | ||||||
|  |       "total": "Total", | ||||||
|  |       "total_discount": "Descuento total", | ||||||
|  |       "sub_total": "Subtotal", | ||||||
|  |       "tax": "Impuesto", | ||||||
|  |       "amount": "Cantidad", | ||||||
|  |       "select_an_item": "Escriba o haga clic para seleccionar un elemento", | ||||||
|  |       "type_item_description": "Tipo Elemento Descripción (opcional)" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "invoices": { | ||||||
|  |     "title": "Facturas", | ||||||
|  |     "invoices_list": "Lista de facturas", | ||||||
|  |     "days": "{días} días", | ||||||
|  |     "months": "{meses} Mes", | ||||||
|  |     "years": "{años} Año", | ||||||
|  |     "all": "Todas", | ||||||
|  |     "paid": "Pagada", | ||||||
|  |     "unpaid": "No pagado", | ||||||
|  |     "customer": "CLIENTE", | ||||||
|  |     "paid_status": "ESTADO PAGADO", | ||||||
|  |     "ref_no": "NÚMERO DE REFERENCIA.", | ||||||
|  |     "number": "NÚMERO", | ||||||
|  |     "amount_due": "CANTIDAD DEBIDA", | ||||||
|  |     "partially_paid": "Parcialmente pagado", | ||||||
|  |     "total": "Total", | ||||||
|  |     "discount": "Descuento", | ||||||
|  |     "sub_total": "Subtotal", | ||||||
|  |     "invoice": "Factura | Facturas", | ||||||
|  |     "invoice_number": "Numero de factura", | ||||||
|  |     "ref_number": "Número de referencia", | ||||||
|  |     "contact": "Contacto", | ||||||
|  |     "add_item": "Agregar un artículo", | ||||||
|  |     "date": "Fecha", | ||||||
|  |     "due_date": "Fecha de vencimiento", | ||||||
|  |     "status": "Estado", | ||||||
|  |     "add_tax": "Agregar impuesto", | ||||||
|  |     "amount": "Cantidad", | ||||||
|  |     "action": "Acción", | ||||||
|  |     "notes": "Notas", | ||||||
|  |     "view": "Ver", | ||||||
|  |     "send_invoice": "Enviará la factura", | ||||||
|  |     "invoice_template": "Plantilla de factura", | ||||||
|  |     "template": "Modelo", | ||||||
|  |     "mark_as_sent": "Marcar como enviado", | ||||||
|  |     "invoice_mark_as_sent": "Esta factura se marcará como enviada", | ||||||
|  |     "confirm_send": "Estas facturas se enviarán por correo electrónico al cliente.", | ||||||
|  |     "invoice_date": "Fecha de la factura", | ||||||
|  |     "record_payment": "Registro de pago", | ||||||
|  |     "add_new_invoice": "Añadir nueva factura", | ||||||
|  |     "update_expense": "Gastos de actualización", | ||||||
|  |     "edit_invoice": "Editar factura", | ||||||
|  |     "new_invoice": "Nueva factura", | ||||||
|  |     "save_invoice": "Guardar factura", | ||||||
|  |     "update_invoice": "Actualizar factura", | ||||||
|  |     "add_new_tax": "Agregar nuevo impuesto", | ||||||
|  |     "no_invoices": "¡Aún no hay facturas!", | ||||||
|  |     "list_of_invoices": "Esta sección contendrá la lista de facturas.", | ||||||
|  |     "select_invoice": "Seleccionar factura", | ||||||
|  |     "mark_as_sent_successfully": "Factura marcada como enviada con éxito", | ||||||
|  |     "send_invoice_successfully": "Factura enviada exitosamente", | ||||||
|  |     "item": { | ||||||
|  |       "title": "Título del artículo", | ||||||
|  |       "description": "Descripción", | ||||||
|  |       "quantity": "Cantidad", | ||||||
|  |       "price": "Precio", | ||||||
|  |       "discount": "Descuento", | ||||||
|  |       "total": "Total", | ||||||
|  |       "total_discount": "Descuento total", | ||||||
|  |       "sub_total": "Subtotal", | ||||||
|  |       "tax": "Impuesto", | ||||||
|  |       "amount": "Cantidad", | ||||||
|  |       "select_an_item": "Escriba o haga clic para seleccionar un elemento", | ||||||
|  |       "type_item_description": "Tipo Elemento Descripción (opcional)" | ||||||
|  |     }, | ||||||
|  |     "payment_attached_message": "Una de las facturas seleccionadas ya tiene un pago adjunto. Asegúrese de eliminar primero los pagos adjuntos para continuar con la eliminación", | ||||||
|  |     "confirm_delete": "No podrá recuperar esta factura | No podrá recuperar estas facturas", | ||||||
|  |     "created_message": "Factura creada exitosamente", | ||||||
|  |     "updated_message": "Factura actualizada exitosamente", | ||||||
|  |     "deleted_message": "Factura eliminada con éxito | Facturas borradas exitosamente", | ||||||
|  |     "marked_as_sent_message": "Factura marcada como enviada con éxito", | ||||||
|  |     "invalid_due_amount_message": "El pago ingresado es mayor que el monto total adeudado por esta factura. Por favor verifique y vuelva a intentar" | ||||||
|  |   }, | ||||||
|  |   "credit_notes": { | ||||||
|  |     "title": "Notas de credito", | ||||||
|  |     "credit_notes_list": "Lista de notas de crédito", | ||||||
|  |     "credit_notes": "Notas de credito", | ||||||
|  |     "contact": "Contacto", | ||||||
|  |     "date": "Fecha", | ||||||
|  |     "amount": "Cantidad", | ||||||
|  |     "action": "Acción", | ||||||
|  |     "credit_number": "Número de crédito", | ||||||
|  |     "notes": "Notas", | ||||||
|  |     "confirm_delete": "¿Desea eliminar esta nota de crédito?", | ||||||
|  |     "item": { | ||||||
|  |       "title": "Título del artículo", | ||||||
|  |       "description": "Descripción", | ||||||
|  |       "quantity": "Cantidad", | ||||||
|  |       "price": "Precio", | ||||||
|  |       "discount": "Descuento", | ||||||
|  |       "total": "Total", | ||||||
|  |       "total_discount": "Descuento total", | ||||||
|  |       "sub_total": "Subtotal", | ||||||
|  |       "tax": "Impuesto" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "payments": { | ||||||
|  |     "title": "Pagos", | ||||||
|  |     "payments_list": "Lista de pagos", | ||||||
|  |     "record_payment": "Registro de pago", | ||||||
|  |     "customer": "Cliente", | ||||||
|  |     "date": "Fecha", | ||||||
|  |     "amount": "Cantidad", | ||||||
|  |     "action": "Acción", | ||||||
|  |     "payment_number": "Numero de pago", | ||||||
|  |     "payment_mode": "Modo de pago", | ||||||
|  |     "invoice": "Factura", | ||||||
|  |     "note": "Nota", | ||||||
|  |     "add_payment": "Agregar pago", | ||||||
|  |     "new_payment": "Nuevo pago", | ||||||
|  |     "edit_payment": "Editar pago", | ||||||
|  |     "view_payment": "Ver pago", | ||||||
|  |     "add_new_payment": "Agregar nuevo pago", | ||||||
|  |     "save_payment": "Guardar pago", | ||||||
|  |     "update_payment": "Actualizar pago", | ||||||
|  |     "payment": "Pago | Pagos", | ||||||
|  |     "no_payments": "¡Aún no hay pagos!", | ||||||
|  |     "list_of_payments": "Esta sección contendrá la lista de pagos.", | ||||||
|  |     "select_payment_mode": "Seleccionar modo de pago", | ||||||
|  |  | ||||||
|  |     "confirm_delete": "No podrá recuperar este pago | No podrá recuperar estos pagos", | ||||||
|  |     "created_message": "Pago creado con éxito", | ||||||
|  |     "updated_message": "Pago actualizado con éxito", | ||||||
|  |     "deleted_message": "Pago eliminado con éxito | Pagos eliminados exitosamente", | ||||||
|  |     "invalid_amount_message": "El importe del pago no es válido." | ||||||
|  |   }, | ||||||
|  |   "expenses": { | ||||||
|  |     "title": "Gastos", | ||||||
|  |     "expenses_list": "Lista de gastos", | ||||||
|  |     "expense_title": "Título", | ||||||
|  |     "contact": "Contacto", | ||||||
|  |     "category": "Categoría", | ||||||
|  |     "from_date": "Partir de la fecha", | ||||||
|  |     "to_date": "Hasta la fecha", | ||||||
|  |     "expense_date": "Fecha", | ||||||
|  |     "description": "Descripción", | ||||||
|  |     "receipt": "Recibo", | ||||||
|  |     "amount": "Cantidad", | ||||||
|  |     "action": "Acción", | ||||||
|  |     "note": "Nota", | ||||||
|  |     "category_id": "Categoria ID", | ||||||
|  |     "date": "Fecha de gastos", | ||||||
|  |     "add_expense": "Añadir gastos", | ||||||
|  |     "add_new_expense": "Añadir nuevo gasto", | ||||||
|  |     "save_expense": "Ahorre gastos", | ||||||
|  |     "update_expense": "Gastos de actualización", | ||||||
|  |     "download_receipt": "Descargar recibo", | ||||||
|  |     "edit_expense": "Editar gasto", | ||||||
|  |     "new_expense": "Nuevo gasto", | ||||||
|  |     "expense": "Gastos | Gastos", | ||||||
|  |     "no_expenses": "No hay gastos todavía!", | ||||||
|  |     "list_of_expenses": "Esta sección contendrá la lista de gastos.", | ||||||
|  |  | ||||||
|  |     "confirm_delete": "No podrá recuperar este gasto | No podrá recuperar estos gastos", | ||||||
|  |     "created_message": "Gastos creados exitosamente", | ||||||
|  |     "updated_message": "Gastos actualizados con éxito", | ||||||
|  |     "deleted_message": "Gastos eliminados con éxito | Gastos eliminados exitosamente", | ||||||
|  |     "categories": { | ||||||
|  |       "categories_list": "Lista de categorías", | ||||||
|  |       "title": "Título", | ||||||
|  |       "name": "Nombre", | ||||||
|  |       "description": "Descripción", | ||||||
|  |       "amount": "Cantidad", | ||||||
|  |       "actions": "Comportamiento", | ||||||
|  |       "add_category": "añadir categoría", | ||||||
|  |       "new_category": "Nueva categoría", | ||||||
|  |       "category": "Categoría | Categorias", | ||||||
|  |       "select_a_category": "Seleccione una categoría" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "login": { | ||||||
|  |     "email": "Email", | ||||||
|  |     "password": "Contraseña", | ||||||
|  |     "forgot_password": "¿Se te olvidó tu contraseña?", | ||||||
|  |     "or_signIn_with": "o Inicie sesión con", | ||||||
|  |     "login": "Iniciar sesión", | ||||||
|  |     "register": "Registro", | ||||||
|  |     "reset_password": "Restablecer la contraseña", | ||||||
|  |     "enter_email": "Ingrese correo electrónico", | ||||||
|  |     "enter_password": "Introducir la contraseña", | ||||||
|  |     "retype_password": "Retype Password", | ||||||
|  |     "login_placeholder": "mail@example.com" | ||||||
|  |   }, | ||||||
|  |   "reports": { | ||||||
|  |     "title": "Reporte", | ||||||
|  |     "from_date": "Partir de la fecha", | ||||||
|  |     "to_date": "Hasta la fecha", | ||||||
|  |     "status": "Estado", | ||||||
|  |     "paid": "Pagada", | ||||||
|  |     "unpaid": "No pagado", | ||||||
|  |     "download_pdf": "Descargar PDF", | ||||||
|  |     "view_pdf": "Ver PDF", | ||||||
|  |     "update_report": "Informe de actualización", | ||||||
|  |     "report": "Informe | Informes", | ||||||
|  |     "profit_loss": { | ||||||
|  |       "profit_loss": "Pérdida de beneficios", | ||||||
|  |       "to_date": "Hasta la fecha", | ||||||
|  |       "from_date": "Partir de la fecha", | ||||||
|  |       "date_range": "Seleccionar rango de fechas" | ||||||
|  |     }, | ||||||
|  |     "sales": { | ||||||
|  |       "sales": "Ventas", | ||||||
|  |       "date_range": "Seleccionar rango de fechas", | ||||||
|  |       "to_date": "Hasta la fecha", | ||||||
|  |       "from_date": "Partir de la fecha", | ||||||
|  |       "report_type": "Tipo de informe" | ||||||
|  |     }, | ||||||
|  |     "taxes": { | ||||||
|  |       "taxes": "Impuestos", | ||||||
|  |       "to_date": "Hasta la fecha", | ||||||
|  |       "from_date": "Partir de la fecha", | ||||||
|  |       "date_range": "Seleccionar rango de fechas" | ||||||
|  |     }, | ||||||
|  |     "errors": { | ||||||
|  |       "required": "Se requiere campo" | ||||||
|  |     }, | ||||||
|  |     "invoices": { | ||||||
|  |       "invoice": "Factura", | ||||||
|  |       "invoice_date": "Fecha de la factura", | ||||||
|  |       "due_date": "Fecha de vencimiento", | ||||||
|  |       "amount": "Cantidad", | ||||||
|  |       "contact_name": "Nombre de contacto", | ||||||
|  |       "status": "Estado" | ||||||
|  |     }, | ||||||
|  |     "estimates": { | ||||||
|  |       "estimate": "Estimar", | ||||||
|  |       "estimate_date": "Fecha estimada", | ||||||
|  |       "due_date": "Fecha de vencimiento", | ||||||
|  |       "estimate_number": "Numero Estimado", | ||||||
|  |       "ref_number": "Número de referencia", | ||||||
|  |       "amount": "Cantidad", | ||||||
|  |       "contact_name": "Nombre de contacto", | ||||||
|  |       "status": "Estado" | ||||||
|  |     }, | ||||||
|  |     "expenses": { | ||||||
|  |       "expenses": "Gastos", | ||||||
|  |       "category": "Categoría", | ||||||
|  |       "date": "Fecha", | ||||||
|  |       "amount": "Cantidad", | ||||||
|  |       "to_date": "Hasta la fecha", | ||||||
|  |       "from_date": "Partir de la fecha", | ||||||
|  |       "date_range": "Seleccionar rango de fechas" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "settings": { | ||||||
|  |     "menu_title": { | ||||||
|  |       "account_settings": "Configuraciones de la cuenta", | ||||||
|  |       "company_information": "Información de la empresa", | ||||||
|  |       "preferences": "Preferencias", | ||||||
|  |       "notifications": "Notificaciones", | ||||||
|  |       "tax_types": "Tipos de impuestos", | ||||||
|  |       "expense_category": "Categorías de gastos", | ||||||
|  |       "update_app": "Actualizar aplicación" | ||||||
|  |     }, | ||||||
|  |     "title": "Configuraciones", | ||||||
|  |     "setting": "Configuraciones | Configuraciones", | ||||||
|  |     "general": "General", | ||||||
|  |     "language": "Idioma", | ||||||
|  |     "primary_currency": "Moneda primaria", | ||||||
|  |     "timezone": "Zona horaria", | ||||||
|  |     "date_format": "Formato de fecha", | ||||||
|  |     "currencies": { | ||||||
|  |       "title": "Monedas", | ||||||
|  |       "currency": "Moneda | Monedas", | ||||||
|  |       "currencies_list": "Lista de monedas", | ||||||
|  |       "select_currency": "Seleccione el tipo de moneda", | ||||||
|  |       "name": "Nombre", | ||||||
|  |       "code": "Código", | ||||||
|  |       "symbol": "Símbolo", | ||||||
|  |       "precision": "Precisión", | ||||||
|  |       "thousand_separator": "Mil separadores", | ||||||
|  |       "decimal_separator": "Separador decimal", | ||||||
|  |       "position": "Posición", | ||||||
|  |       "position_of_symbol": "Posición del símbolo", | ||||||
|  |       "right": "Derecho", | ||||||
|  |       "left": "Izquierda", | ||||||
|  |       "action": "Acción", | ||||||
|  |       "add_currency": "Agregar moneda" | ||||||
|  |     }, | ||||||
|  |     "mail": { | ||||||
|  |       "host": "Host de correo", | ||||||
|  |       "port": "Puerto de correo", | ||||||
|  |       "driver": "Conductor de correo", | ||||||
|  |       "secret": "Secreto", | ||||||
|  |       "password": "Contraseña de correo", | ||||||
|  |       "username": "Nombre de usuario de correo", | ||||||
|  |       "mailgun_secret": "Mailgun Secreto", | ||||||
|  |       "mailgun_domain": "Domino", | ||||||
|  |       "mailgun_endpoint": "Mailgun Punto Final", | ||||||
|  |       "ses_secret": "SES Secreto", | ||||||
|  |       "ses_key": "SES llave", | ||||||
|  |       "from_name": "Del nombre del correo", | ||||||
|  |       "from_mail": "Desde la dirección de correo", | ||||||
|  |       "mail_config": "Configuración de correo", | ||||||
|  |       "encryption": "Cifrado de correo", | ||||||
|  |       "mail_config_desc": "Los detalles a continuación se utilizarán para actualizar el entorno de correo. También puede cambiar los detalles en cualquier momento después de iniciar sesión." | ||||||
|  |     }, | ||||||
|  |     "pdf": { | ||||||
|  |       "title": "Configuración de PDF", | ||||||
|  |       "footer_text": "Texto de pie de página", | ||||||
|  |       "pdf_layout": "Diseño PDF" | ||||||
|  |     }, | ||||||
|  |     "company_info": { | ||||||
|  |       "company_info": "Información de la compañía", | ||||||
|  |       "company_name": "nombre de empresa", | ||||||
|  |       "company_logo": "Logo de la compañía", | ||||||
|  |       "section_description": "Información sobre su empresa que se mostrará en las facturas, estimaciones y otros documentos creados por Crater.", | ||||||
|  |       "phone": "Teléfono", | ||||||
|  |       "country": "País", | ||||||
|  |       "state": "Estado", | ||||||
|  |       "city": "Ciudad", | ||||||
|  |       "address": "Habla a", | ||||||
|  |       "zip": "Código Postal", | ||||||
|  |       "save": "Salvar", | ||||||
|  |       "updated_message": "Información de la empresa actualizada con éxito" | ||||||
|  |     }, | ||||||
|  |     "account_settings": { | ||||||
|  |       "profile_picture": "Foto de perfil", | ||||||
|  |       "name": "Nombre", | ||||||
|  |       "email": "Email", | ||||||
|  |       "password": "Contraseña", | ||||||
|  |       "confirm_password": "Confirmar contraseña", | ||||||
|  |       "account_settings": "Configuraciones de la cuenta", | ||||||
|  |       "save": "Salvar", | ||||||
|  |       "section_description": "Puede actualizar su nombre, correo electrónico y contraseña utilizando el siguiente formulario.", | ||||||
|  |       "updated_message": "Configuración de la cuenta actualizada correctamente" | ||||||
|  |     }, | ||||||
|  |     "user_profile": { | ||||||
|  |       "name": "Nombre", | ||||||
|  |       "email": "Email", | ||||||
|  |       "password": "Contraseña", | ||||||
|  |       "confirm_password": "Confirmar contraseña" | ||||||
|  |     }, | ||||||
|  |     "notification": { | ||||||
|  |       "title": "Notificación", | ||||||
|  |       "email": "Enviar notificaciones a", | ||||||
|  |       "description": "¿Qué notificaciones por correo electrónico le gustaría recibir cuando algo cambia?", | ||||||
|  |       "invoice_viewed": "Factura vista", | ||||||
|  |       "invoice_viewed_desc": "Cuando su cliente ve la factura enviada a través del panel de control del cráter.", | ||||||
|  |       "estimate_viewed": "Estimación vista", | ||||||
|  |       "estimate_viewed_desc": "Cuando su cliente ve la estimación enviada a través del panel de control del cráter.", | ||||||
|  |       "save": "Salvar", | ||||||
|  |       "email_save_message": "Correo electrónico guardado con éxito", | ||||||
|  |       "please_enter_email": "Por favor, introduzca su correo electrónico" | ||||||
|  |     }, | ||||||
|  |     "tax_types": { | ||||||
|  |       "title": "Tipos de impuestos", | ||||||
|  |       "add_tax": "Agregar impuesto", | ||||||
|  |       "description": "Puede agregar o eliminar impuestos a su gusto. Crater admite impuestos sobre artículos individuales, así como sobre la factura.", | ||||||
|  |       "add_new_tax": "Agregar nuevo impuesto", | ||||||
|  |       "tax_settings": "Configuraciones de impuestos", | ||||||
|  |       "tax_per_item": "Impuesto por artículo", | ||||||
|  |       "tax_name": "Nombre fiscal", | ||||||
|  |       "compound_tax": "Impuesto compuesto", | ||||||
|  |       "percent": "Por ciento", | ||||||
|  |       "action": "Acción", | ||||||
|  |       "tax_setting_description": "Habilítelo si desea agregar impuestos a artículos de factura individuales. Por defecto, los impuestos se agregan directamente a la factura.", | ||||||
|  |       "created_message": "Tipo de impuesto creado con éxito", | ||||||
|  |       "updated_message": "Tipo de impuesto actualizado correctamente", | ||||||
|  |       "deleted_message": "Tipo de impuesto eliminado correctamente", | ||||||
|  |       "confirm_delete": "No podrá recuperar este tipo de impuesto", | ||||||
|  |       "already_in_use": "El impuesto ya está en uso." | ||||||
|  |     }, | ||||||
|  |     "expense_category": { | ||||||
|  |       "title": "Categorías de gastos", | ||||||
|  |       "action": "Acción", | ||||||
|  |       "description": "Se requieren categorías para agregar entradas de gastos. Puede Agregar o Eliminar estas categorías según su preferencia.", | ||||||
|  |       "add_new_category": "Añadir nueva categoria", | ||||||
|  |       "category_name": "nombre de la categoría", | ||||||
|  |       "category_description": "Descripción", | ||||||
|  |       "created_message": "Categoría de gastos creada con éxito", | ||||||
|  |       "deleted_message": "Categoría de gastos eliminada correctamente", | ||||||
|  |       "updated_message": "Categoría de gastos actualizada con éxito", | ||||||
|  |       "confirm_delete": "No podrá recuperar esta categoría de gastos", | ||||||
|  |       "already_in_use": "La categoría ya está en uso." | ||||||
|  |     }, | ||||||
|  |     "preferences": { | ||||||
|  |       "currency": "Moneda", | ||||||
|  |       "language": "Idioma", | ||||||
|  |       "time_zone": "Zona horaria", | ||||||
|  |       "fiscal_year": "Año financiero", | ||||||
|  |       "date_format": "Formato de fecha", | ||||||
|  |       "discount_setting": "Ajuste de descuento", | ||||||
|  |       "discount_per_item": "Descuento por artículo", | ||||||
|  |       "discount_setting_description": "Habilítelo si desea agregar Descuento a artículos de factura individuales. Por defecto, los descuentos se agregan directamente a la factura.", | ||||||
|  |       "save": "Salvar", | ||||||
|  |       "preference": "Preferencia | Preferencias", | ||||||
|  |       "general_settings": "Preferencias predeterminadas para el sistema.", | ||||||
|  |       "updated_message": "Preferencias actualizadas exitosamente", | ||||||
|  |       "select_language": "seleccione el idioma", | ||||||
|  |       "select_time_zone": "selecciona la zona horaria", | ||||||
|  |       "select_date_formate": "seleccione formato de fecha", | ||||||
|  |       "select_financial_year": "seleccione año financiero" | ||||||
|  |     }, | ||||||
|  |     "update_app": { | ||||||
|  |       "title": "Actualizar aplicación", | ||||||
|  |       "description": "actualizar la descripción de la aplicación", | ||||||
|  |       "check_update": "Buscar actualizaciones", | ||||||
|  |       "avail_update": "Nueva actualización disponible", | ||||||
|  |       "next_version": "Próxima versión", | ||||||
|  |       "update": "Actualizar", | ||||||
|  |       "update_progress": "Actualización en progreso...", | ||||||
|  |       "progress_text": "Solo tomará unos minutos. No actualice la pantalla ni cierre la ventana antes de que finalice la actualización.", | ||||||
|  |       "update_success": "¡La aplicación ha sido actualizada! Espere mientras la ventana de su navegador se vuelve a cargar automáticamente.", | ||||||
|  |       "latest_message": "¡Actualización no disponible! Estás en la última versión.", | ||||||
|  |       "current_version": "Versión actual" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "wizard": { | ||||||
|  |     "account_info": "Información de la cuenta", | ||||||
|  |     "account_info_desc": "Los detalles a continuación se utilizarán para crear la cuenta principal de administrador. También puede cambiar los detalles en cualquier momento después de iniciar sesión.", | ||||||
|  |     "name": "Nombre", | ||||||
|  |     "email": "Email", | ||||||
|  |     "password": "Contraseña", | ||||||
|  |     "confirm_password": "Confirmar contraseña", | ||||||
|  |     "save_cont": "Guardar Continuar", | ||||||
|  |     "company_info": "Información de la empresa", | ||||||
|  |     "company_info_desc": "Esta información se mostrará en las facturas. Tenga en cuenta que puede editar esto más adelante en la página de configuración.", | ||||||
|  |     "company_name": "nombre de empresa", | ||||||
|  |     "company_logo": "Logo de la compañía", | ||||||
|  |     "logo_preview": "Vista previa del logotipo", | ||||||
|  |     "preferences": "Preferencias", | ||||||
|  |     "preferences_desc": "Preferencias predeterminadas para el sistema.", | ||||||
|  |     "country": "País", | ||||||
|  |     "state": "Estado", | ||||||
|  |     "city": "Ciudad", | ||||||
|  |     "address": "Habla a", | ||||||
|  |     "street": "Calle1 | Calle # 2", | ||||||
|  |     "phone": "Teléfono", | ||||||
|  |     "zip_code": "Código postal", | ||||||
|  |     "go_back": "Regresa", | ||||||
|  |     "currency": "Moneda", | ||||||
|  |     "language": "Idioma", | ||||||
|  |     "time_zone": "Zona horaria", | ||||||
|  |     "fiscal_year": "Año financiero", | ||||||
|  |     "date_format": "Formato de fecha", | ||||||
|  |     "from_address": "De la Dirección", | ||||||
|  |     "username": "Nombre de usuario", | ||||||
|  |     "next": "Próximo", | ||||||
|  |     "continue": "Hacer continuación", | ||||||
|  |     "database": { | ||||||
|  |       "database": "URL del sitio y base de datose", | ||||||
|  |       "connection": "Conexión de base de datos", | ||||||
|  |       "host": "Database Host", | ||||||
|  |       "port": "Host de base de datos", | ||||||
|  |       "password": "Contraseña de base de datos", | ||||||
|  |       "app_url": "URL de la aplicación", | ||||||
|  |       "username": "Nombre de usuario de la base de datos", | ||||||
|  |       "db_name": "Nombre de la base de datos", | ||||||
|  |       "desc": "Cree una base de datos en su servidor y establezca las credenciales utilizando el siguiente formulario." | ||||||
|  |     }, | ||||||
|  |     "permissions": { | ||||||
|  |       "permissions": "Permisos", | ||||||
|  |       "permission_confirm_title": "Estás seguro de que quieres continuar?", | ||||||
|  |       "permission_confirm_desc": "Error de verificación de permisos de carpeta", | ||||||
|  |       "permission_desc": "A continuación se muestra la lista de permisos de carpeta necesarios para que la aplicación funcione. Si la verificación de permisos falla, asegúrese de actualizar los permisos de su carpeta." | ||||||
|  |     }, | ||||||
|  |     "mail": { | ||||||
|  |       "host": "Host de correo", | ||||||
|  |       "port": "Puerto de correo", | ||||||
|  |       "driver": "Conductor de correo", | ||||||
|  |       "secret": "Secreto", | ||||||
|  |       "password": "Contraseña de correo", | ||||||
|  |       "username": "Nombre de usuario de correo", | ||||||
|  |       "mailgun_secret": "Mailgun Secreto", | ||||||
|  |       "mailgun_domain": "Domino", | ||||||
|  |       "mailgun_endpoint": "Mailgun Punto Final", | ||||||
|  |       "ses_secret": "SES Secreto", | ||||||
|  |       "ses_key": "SES llave", | ||||||
|  |       "from_name": "Del nombre del correo", | ||||||
|  |       "from_mail": "Desde la dirección de correo", | ||||||
|  |       "mail_config": "Configuración de correo", | ||||||
|  |       "encryption": "Cifrado de correo", | ||||||
|  |       "mail_config_desc": "Los detalles a continuación se utilizarán para actualizar el entorno de correo. También puede cambiar los detalles en cualquier momento después de iniciar sesión." | ||||||
|  |     }, | ||||||
|  |     "req": { | ||||||
|  |       "system_req": "Requisitos del sistema", | ||||||
|  |       "php_req_version": "Php (versión {version} necesario)", | ||||||
|  |       "check_req": "Consultar requisitos", | ||||||
|  |       "system_req_desc": "Crater tiene algunos requisitos de servidor. Asegúrese de que su servidor tenga la versión de php requerida y todas las extensiones mencionadas a continuación." | ||||||
|  |     }, | ||||||
|  |     "errors": { | ||||||
|  |       "migrate_failed": "La migración falló", | ||||||
|  |       "database_variables_save_error": "No se puede conectar a la base de datos con los valores proporcionados.", | ||||||
|  |       "mail_variables_save_error": "La configuración del correo electrónico ha fallado.", | ||||||
|  |       "connection_failed": "Conexión de base de datos fallida" | ||||||
|  |     }, | ||||||
|  |     "success": { | ||||||
|  |       "mail_variables_save_successfully": "Correo electrónico configurado correctamente", | ||||||
|  |       "database_variables_save_successfully": "Base de datos configurada con éxito." | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "layout_login": { | ||||||
|  |     "copyright_crater": "Copyright @ Crater - 2019", | ||||||
|  |     "super_simple_invoicing": "Facturación super simple", | ||||||
|  |     "for_freelancer": "para autónomos y", | ||||||
|  |     "small_businesses": "Pequeñas empresas", | ||||||
|  |     "crater_help": "Crater te ayuda a rastrear gastos, registrar pagos y generar hermosos", | ||||||
|  |     "invoices_and_estimates": "facturas y presupuestos con capacidad para elegir múltiples plantillas." | ||||||
|  |  | ||||||
|  |   }, | ||||||
|  |   "validation": { | ||||||
|  |     "invalid_url": "URL no válida (por ejemplo, http://www.crater.com)", | ||||||
|  |     "required": "Se requiere campo", | ||||||
|  |     "email_incorrect": "Email incorrecto.", | ||||||
|  |     "email_does_not_exist": " Usuario con correo electrónico dado no existe", | ||||||
|  |     "send_reset_link": "Enviar restablecer enlace", | ||||||
|  |     "not_yet": "¿Aún no? Envialo de nuevo", | ||||||
|  |     "password_min_length": "La contraseña debe contener {count} caracteres", | ||||||
|  |     "name_min_length": "El nombre debe tener al menos {count} letras.", | ||||||
|  |     "enter_valid_tax_rate": "Ingrese una tasa impositiva válida", | ||||||
|  |     "numbers_only": "Solo numeros.", | ||||||
|  |     "characters_only": "Solo personajes.", | ||||||
|  |     "password_incorrect": "Las contraseñas deben ser idénticas", | ||||||
|  |     "password_length": "La contraseña debe tener 5 caracteres de longitud.", | ||||||
|  |     "qty_must_greater_than_zero": "La cantidad debe ser mayor que cero.", | ||||||
|  |     "price_greater_than_zero": "El precio debe ser mayor que cero.", | ||||||
|  |     "payment_greater_than_zero": "El pago debe ser mayor que cero.", | ||||||
|  |     "payment_greater_than_due_amount": "El pago ingresado es mayor al monto adeudado de esta factura.", | ||||||
|  |     "quantity_maxlength": "La cantidad no debe ser mayor de 20 dígitos.", | ||||||
|  |     "price_maxlength": "El precio no debe ser mayor de 20 dígitos.", | ||||||
|  |     "price_minvalue": "El precio debe ser mayor que 0 dígitos", | ||||||
|  |     "amount_maxlength": "La cantidad no debe ser mayor de 20 dígitos.", | ||||||
|  |     "amount_minvalue": "La cantidad debe ser mayor que 0 dígitos", | ||||||
|  |     "description_maxlength": "La descripción no debe tener más de 255 caracteres.", | ||||||
|  |     "maximum_options_error": "Máximo de {max} opciones seleccionadas. Primero elimine una opción seleccionada para seleccionar otra.", | ||||||
|  |     "notes_maxlength": "Las notas no deben tener más de 255 caracteres.", | ||||||
|  |     "address_maxlength": "La dirección no debe tener más de 255 caracteres.", | ||||||
|  |     "ref_number_maxlength": "El número de referencia no debe tener más de 255 caracteres." | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,818 +0,0 @@ | |||||||
| export default { |  | ||||||
|   navigation: { |  | ||||||
|     // key : 'singular | plural' |  | ||||||
|     dashboard: 'Tableau de bord', |  | ||||||
|     customers: 'Cliente', |  | ||||||
|     items: 'Articles', |  | ||||||
|     invoices: 'Factures', |  | ||||||
|     expenses: 'Les dépenses', |  | ||||||
|     estimates: 'Estimations', |  | ||||||
|     payments: 'Paiements', |  | ||||||
|     reports: 'Rapports', |  | ||||||
|     settings: 'Paramètres', |  | ||||||
|     logout: 'Se déconnecter' |  | ||||||
|   }, |  | ||||||
|   general: { |  | ||||||
|     view_pdf: 'Voir PDF', |  | ||||||
|     download_pdf: 'Télécharger le PDF', |  | ||||||
|     save: 'sauver', |  | ||||||
|     cancel: 'Annuler', |  | ||||||
|     update: 'Mise à jour', |  | ||||||
|     download: 'Télécharger', |  | ||||||
|     from_date: 'Partir de la date', |  | ||||||
|     to_date: 'À ce jour', |  | ||||||
|     from: 'De', |  | ||||||
|     to: 'À', |  | ||||||
|     go_back: 'Retourner', |  | ||||||
|     back_to_login: 'Retour connexion?', |  | ||||||
|     home: 'Accueil', |  | ||||||
|     filter: 'Filtre', |  | ||||||
|     delete: 'Effacer', |  | ||||||
|     edit: 'Modifier', |  | ||||||
|     view: 'Vue', |  | ||||||
|     add_new_item: 'Ajoute un nouvel objet', |  | ||||||
|     clear_all: 'Tout effacer', |  | ||||||
|     showing: 'Montrant', |  | ||||||
|     of: 'de', |  | ||||||
|     actions: 'Actions', |  | ||||||
|     subtotal: 'TOTAL', |  | ||||||
|     discount: 'REMISE', |  | ||||||
|     fixed: 'Fixée', |  | ||||||
|     percentage: 'Pourcentage', |  | ||||||
|     tax: 'IMPÔT', |  | ||||||
|     total_amount: 'MONTANT TOTAL', |  | ||||||
|     bill_to: 'facturer', |  | ||||||
|     ship_to: 'Envoyez à', |  | ||||||
|     due: 'Dû', |  | ||||||
|     draft: 'Brouillon', |  | ||||||
|     sent: 'Envoyée', |  | ||||||
|     all: 'Tout', |  | ||||||
|     select_all: 'Tout sélectionner', |  | ||||||
|     choose_file: 'Cliquez ici pour choisir un fichier', |  | ||||||
|     choose_template: 'Choisissez un modèle', |  | ||||||
|     choose: 'Choisir', |  | ||||||
|     remove: 'Retirer', |  | ||||||
|     powered_by: 'Alimenté par', |  | ||||||
|     bytefury: 'Bytefury', |  | ||||||
|     select_a_status: 'Sélectionnez un statut', |  | ||||||
|     select_a_tax: 'Sélectionnez une taxe', |  | ||||||
|     search: 'Chercher', |  | ||||||
|     are_you_sure: 'Êtes-vous sûr?', |  | ||||||
|     list_is_empty: 'La liste est vide', |  | ||||||
|     no_tax_found: 'Aucune taxe trouvée!', |  | ||||||
|     four_zero_four: '404', |  | ||||||
|     you_got_lost: 'Oups! Vous vous êtes perdus!', |  | ||||||
|     go_home: 'Rentrer chez soi', |  | ||||||
|  |  | ||||||
|     setting_updated: 'Réglage mis à jour avec succès', |  | ||||||
|     select_state: "Sélectionnez l'état", |  | ||||||
|     select_country: 'Choisissez le pays', |  | ||||||
|     select_city: 'Sélectionnez une ville', |  | ||||||
|     street_1: 'Rue 1', |  | ||||||
|     street_2: 'Rue # 2', |  | ||||||
|     action_failed: 'Action: échoué' |  | ||||||
|   }, |  | ||||||
|   dashboard: { |  | ||||||
|     select_year: 'Sélectionnez lannée', |  | ||||||
|     cards: { |  | ||||||
|       due_amount: 'Montant dû', |  | ||||||
|       customers: 'Les clients', |  | ||||||
|       invoices: 'Factures', |  | ||||||
|       estimates: 'Estimations' |  | ||||||
|     }, |  | ||||||
|     chart_info: { |  | ||||||
|       total_sales: 'Ventes', |  | ||||||
|       total_receipts: 'Reçus', |  | ||||||
|       total_expense: 'Les dépenses', |  | ||||||
|       net_income: 'Revenu net', |  | ||||||
|       year: 'Sélectionnez lannée' |  | ||||||
|     }, |  | ||||||
|     weekly_invoices: { |  | ||||||
|       title: 'Factures hebdomadaires' |  | ||||||
|     }, |  | ||||||
|     monthly_chart: { |  | ||||||
|       title: 'Ventes et dépenses' |  | ||||||
|     }, |  | ||||||
|     recent_invoices_card: { |  | ||||||
|       title: 'Factures dues', |  | ||||||
|       due_on: 'Due On', |  | ||||||
|       customer: 'Cliente', |  | ||||||
|       amount_due: 'Montant dû', |  | ||||||
|       actions: 'Actions', |  | ||||||
|       view_all: 'Voir tout' |  | ||||||
|     }, |  | ||||||
|     recent_estimate_card: { |  | ||||||
|       title: 'Estimations récentes', |  | ||||||
|       date: 'Date', |  | ||||||
|       customer: 'Cliente', |  | ||||||
|       amount_due: 'Montant dû', |  | ||||||
|       actions: 'Actions', |  | ||||||
|       view_all: 'Voir tout' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   tax_types: { |  | ||||||
|     name: 'Nom', |  | ||||||
|     description: 'La description', |  | ||||||
|     percent: 'Pour cent', |  | ||||||
|     compound_tax: 'Taxe composée' |  | ||||||
|   }, |  | ||||||
|   customers: { |  | ||||||
|     title: 'Les clients', |  | ||||||
|     add_customer: 'Ajouter un client', |  | ||||||
|     contacts_list: 'Liste de clients', |  | ||||||
|     name: 'Nom', |  | ||||||
|     display_name: 'Afficher un nom', |  | ||||||
|     primary_contact_name: 'Nom du contact principal', |  | ||||||
|     contact_name: 'Nom du contact', |  | ||||||
|     amount_due: 'Montant dû', |  | ||||||
|     email: 'Email', |  | ||||||
|     address: 'Adresse', |  | ||||||
|     phone: 'Téléphone', |  | ||||||
|     website: 'Site Internet', |  | ||||||
|     country: 'Pays', |  | ||||||
|     state: 'Etat', |  | ||||||
|     city: 'Ville', |  | ||||||
|     zip_code: 'Code postal', |  | ||||||
|     added_on: 'Ajouté le', |  | ||||||
|     action: 'action', |  | ||||||
|     password: 'Mot de passe', |  | ||||||
|     street_number: 'Numéro de rue', |  | ||||||
|     primary_currency: 'Devise principale', |  | ||||||
|     add_new_customer: 'Ajouter un nouveau client', |  | ||||||
|     save_customer: 'Enregistrer le client', |  | ||||||
|     update_customer: 'Mettre à jour le client', |  | ||||||
|     customer: 'Client | Les clients', |  | ||||||
|     new_customer: 'Nouveau client', |  | ||||||
|     edit_customer: 'Modifier le client', |  | ||||||
|     basic_info: 'Informations de base', |  | ||||||
|     billing_address: 'Adresse de facturation', |  | ||||||
|     shipping_address: 'Adresse de livraison', |  | ||||||
|     copy_billing_address: 'Copier de la facturation', |  | ||||||
|     no_customers: 'Pas encore de clients!', |  | ||||||
|     no_customers_found: 'Aucun client trouvé!', |  | ||||||
|     list_of_customers: 'Cette section contiendra la liste des clients.', |  | ||||||
|     primary_display_name: 'Nom daffichage principal', |  | ||||||
|     select_state: 'Sélectionnez létat', |  | ||||||
|     select_country: 'Choisissez le pays', |  | ||||||
|     select_city: 'Sélectionnez une ville', |  | ||||||
|     select_currency: 'Sélectionnez la devise', |  | ||||||
|     street_1: 'Rue 1', |  | ||||||
|     street_2: 'Rue 2', |  | ||||||
|     select_a_customer: 'Sélectionnez un client', |  | ||||||
|     type_or_click: 'Tapez ou cliquez pour sélectionner', |  | ||||||
|  |  | ||||||
|     confirm_delete: 'Vous ne pourrez pas récupérer ce client | Vous ne pourrez pas récupérer ces clients', |  | ||||||
|     created_message: 'Client créé avec succès', |  | ||||||
|     updated_message: 'Client mis à jour avec succès', |  | ||||||
|     deleted_message: 'Client supprimé avec succès | Les clients supprimés avec succès' |  | ||||||
|   }, |  | ||||||
|   items: { |  | ||||||
|     title: 'Articles', |  | ||||||
|     items_list: 'Liste darticles', |  | ||||||
|     name: 'Nom', |  | ||||||
|     unit: 'Unité', |  | ||||||
|     description: 'La description', |  | ||||||
|     added_on: 'Ajouté le', |  | ||||||
|     price: 'Prix', |  | ||||||
|     date_of_creation: 'Date de création', |  | ||||||
|     action: 'action', |  | ||||||
|     add_item: 'Ajouter un item', |  | ||||||
|     save_item: 'Enregistrer lélément', |  | ||||||
|     update_item: 'Mettre à jour lélément', |  | ||||||
|     item: 'Article | Articles', |  | ||||||
|     add_new_item: 'Ajoute un nouvel objet', |  | ||||||
|     new_item: 'Nouvel article', |  | ||||||
|     edit_item: 'Modifier larticle', |  | ||||||
|     no_items: 'Aucun article pour le moment!', |  | ||||||
|     list_of_items: 'Cette section contiendra la liste des éléments.', |  | ||||||
|     select_a_unit: 'sélectionner lunité', |  | ||||||
|  |  | ||||||
|     item_attached_message: 'Impossible de supprimer un élément déjà utilisé', |  | ||||||
|     confirm_delete: 'Vous ne pourrez pas récupérer cet article | Vous ne pourrez pas récupérer ces objets', |  | ||||||
|     created_message: 'Article créé avec succès', |  | ||||||
|     updated_message: 'Élément mis à jour avec succès', |  | ||||||
|     deleted_message: 'Élément supprimé avec succès | Éléments supprimés avec succès' |  | ||||||
|   }, |  | ||||||
|   estimates: { |  | ||||||
|     title: 'Estimations', |  | ||||||
|     estimate: 'Estimation | Estimations', |  | ||||||
|     estimates_list: 'Liste des estimations', |  | ||||||
|     days: '{jours} jours', |  | ||||||
|     months: '{mois} mois', |  | ||||||
|     years: '{années} Année', |  | ||||||
|     all: 'Toute', |  | ||||||
|     paid: 'Payé', |  | ||||||
|     unpaid: 'Non payé', |  | ||||||
|     customer: 'CLIENTE CLIENT', |  | ||||||
|     ref_no: 'REF NO.', |  | ||||||
|     number: 'NOMBRE', |  | ||||||
|     amount_due: 'MONTANT DÛ', |  | ||||||
|     partially_paid: 'Partiellement payé', |  | ||||||
|     total: 'Totale', |  | ||||||
|     discount: 'Remise', |  | ||||||
|     sub_total: 'Total partiel', |  | ||||||
|     estimate_number: 'Numéro destimation', |  | ||||||
|     ref_number: 'Numéro de ref', |  | ||||||
|     contact: 'Contact', |  | ||||||
|     add_item: 'Ajouter un article', |  | ||||||
|     date: 'Date', |  | ||||||
|     due_date: 'Date déchéance', |  | ||||||
|     expiry_date: 'Date dexpiration', |  | ||||||
|     status: 'Statut', |  | ||||||
|     add_tax: 'Ajouter une taxe', |  | ||||||
|     amount: 'Montante', |  | ||||||
|     action: 'action', |  | ||||||
|     notes: 'Remarques', |  | ||||||
|     tax: 'Impôt', |  | ||||||
|     estimate_template: 'Modèle destimation', |  | ||||||
|     convert_to_invoice: 'Convertir en facture', |  | ||||||
|     mark_as_sent: 'Marquer comme envoyé', |  | ||||||
|     send_estimate: 'Envoyer une estimation', |  | ||||||
|     record_payment: 'Record de paiement', |  | ||||||
|     add_estimate: 'Ajouter une estimation', |  | ||||||
|     save_estimate: 'Sauvegarder lestimation', |  | ||||||
|     confirm_conversion: 'Vous souhaitez convertir cette estimation en facture?', |  | ||||||
|     conversion_message: 'Conversion réussie', |  | ||||||
|     confirm_send_estimate: 'Cette estimation sera envoyée par courrier électronique au client.', |  | ||||||
|     confirm_mark_as_sent: 'Cette estimation sera marquée comme envoyé', |  | ||||||
|     confirm_mark_as_accepted: 'Cette estimation sera marquée comme acceptée', |  | ||||||
|     confirm_mark_as_rejected: 'Cette estimation sera marquée comme Rejetée', |  | ||||||
|     mark_as_sent_successfully: 'Estimation marquée comme envoyée avec succès', |  | ||||||
|     send_estimate_successfully: 'Estimation envoyée avec succès', |  | ||||||
|     errors: { |  | ||||||
|       required: 'Champ requis' |  | ||||||
|     }, |  | ||||||
|     accepted: 'Accepté', |  | ||||||
|     sent: 'Envoyée', |  | ||||||
|     draft: 'Brouillon', |  | ||||||
|     declined: 'Diminué', |  | ||||||
|     new_estimate: 'Nouvelle estimation', |  | ||||||
|     add_new_estimate: 'Ajouter une nouvelle estimation', |  | ||||||
|     update_Estimate: 'Mise à jour de lestimation', |  | ||||||
|     edit_estimate: 'Modifier lestimation', |  | ||||||
|     items: 'articles', |  | ||||||
|     Estimate: 'Estimation | Estimations', |  | ||||||
|     add_new_tax: 'Ajouter une nouvelle taxe', |  | ||||||
|     no_estimates: 'Aucune estimation pour le moment!', |  | ||||||
|     list_of_estimates: 'Cette section contiendra la liste des estimations.', |  | ||||||
|     mark_as_rejected: 'Marquer comme rejeté', |  | ||||||
|     mark_as_accepted: 'Marquer comme accepté', |  | ||||||
|  |  | ||||||
|     marked_as_accepted_message: 'Estimation marquée comme acceptée', |  | ||||||
|     marked_as_rejected_message: 'Estimation marquée comme rejetée', |  | ||||||
|     confirm_delete: 'Vous ne pourrez pas récupérer cette estimation | Vous ne pourrez pas récupérer ces estimations', |  | ||||||
|     created_message: 'Estimation créée avec succès', |  | ||||||
|     updated_message: 'Estimation mise à jour avec succès', |  | ||||||
|     deleted_message: 'Estimation supprimée avec succès | Estimations supprimées avec succès', |  | ||||||
|     item: { |  | ||||||
|       title: 'Titre de larticle', |  | ||||||
|       description: 'La description', |  | ||||||
|       quantity: 'Quantité', |  | ||||||
|       price: 'Prix', |  | ||||||
|       discount: 'Remise', |  | ||||||
|       total: 'Totale', |  | ||||||
|       total_discount: 'Remise totale', |  | ||||||
|       sub_total: 'Total partiel', |  | ||||||
|       tax: 'Impôt', |  | ||||||
|       amount: 'Montante', |  | ||||||
|       select_an_item: 'Tapez ou cliquez pour sélectionner un élément', |  | ||||||
|       type_item_description: 'Type Item Description (optionnel)' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   invoices: { |  | ||||||
|     title: 'Factures', |  | ||||||
|     invoices_list: 'Liste de factures', |  | ||||||
|     days: '{jours} jours', |  | ||||||
|     months: '{mois} mois', |  | ||||||
|     years: '{années} Année', |  | ||||||
|     all: 'Toute', |  | ||||||
|     paid: 'Payé', |  | ||||||
|     unpaid: 'Non payé', |  | ||||||
|     customer: 'CLIENTE CLIENT', |  | ||||||
|     paid_status: 'Statut payé', |  | ||||||
|     ref_no: 'REF NO.', |  | ||||||
|     number: 'NOMBRE', |  | ||||||
|     amount_due: 'MONTANT DÛ', |  | ||||||
|     partially_paid: 'Partiellement payé', |  | ||||||
|     total: 'Totale Total', |  | ||||||
|     discount: 'Remise', |  | ||||||
|     sub_total: 'Total partiel', |  | ||||||
|     invoice: 'Facture | Factures', |  | ||||||
|     invoice_number: 'Numéro de facture', |  | ||||||
|     ref_number: 'Numéro de ref', |  | ||||||
|     contact: 'Contact', |  | ||||||
|     add_item: 'Ajouter un article', |  | ||||||
|     date: 'Date', |  | ||||||
|     due_date: 'Date déchéance', |  | ||||||
|     status: 'Statut', |  | ||||||
|     add_tax: 'Ajouter une taxe', |  | ||||||
|     amount: 'Montante Montant', |  | ||||||
|     action: 'action', |  | ||||||
|     notes: 'Remarques', |  | ||||||
|     view: 'Vue', |  | ||||||
|     send_invoice: 'Envoyer une facture', |  | ||||||
|     invoice_template: 'Modèle de facture', |  | ||||||
|     template: 'Modèle', |  | ||||||
|     mark_as_sent: 'Marquer comme envoyé', |  | ||||||
|     invoice_mark_as_sent: 'Cette facture sera marquée comme envoyé', |  | ||||||
|     confirm_send: 'Cette facture sera envoyée par courrier électronique au client.', |  | ||||||
|     invoice_date: 'Date de facturation', |  | ||||||
|     record_payment: 'Record de paiement', |  | ||||||
|     add_new_invoice: 'Ajouter une nouvelle facture', |  | ||||||
|     update_expense: 'Frais de mise à jour', |  | ||||||
|     edit_invoice: 'Modifier la facture', |  | ||||||
|     new_invoice: 'Nouvelle facture', |  | ||||||
|     save_invoice: 'Enregistrer la facture', |  | ||||||
|     update_invoice: 'Mettre à jour la facture', |  | ||||||
|     add_new_tax: 'Ajouter une nouvelle taxe', |  | ||||||
|     no_invoices: 'Aucune facture pour le moment!', |  | ||||||
|     list_of_invoices: 'Cette section contiendra la liste des factures.', |  | ||||||
|     select_invoice: 'Sélectionnez facture', |  | ||||||
|     mark_as_sent_successfully: 'Facture marquée comme envoyée avec succès', |  | ||||||
|     send_invoice_successfully: 'Facture envoyée avec succès', |  | ||||||
|     item: { |  | ||||||
|       title: 'Titre de larticle', |  | ||||||
|       description: 'La description', |  | ||||||
|       quantity: 'Quantité', |  | ||||||
|       price: 'Prix', |  | ||||||
|       discount: 'Remise', |  | ||||||
|       total: 'Totale Total', |  | ||||||
|       total_discount: 'Remise totale', |  | ||||||
|       sub_total: 'Total partiel', |  | ||||||
|       tax: 'Impôt', |  | ||||||
|       amount: 'Montante Montant', |  | ||||||
|       select_an_item: 'Tapez ou cliquez pour sélectionner un élément', |  | ||||||
|       type_item_description: 'Type Item Description (optionnel)' |  | ||||||
|     }, |  | ||||||
|     payment_attached_message: "Un paiement est déjà associé à l'une des factures sélectionnées. Assurez-vous d’effacer d’abord les paiements en pièce jointe afin de procéder à la suppression.", |  | ||||||
|     confirm_delete: 'Vous ne pourrez pas récupérer cette facture | Vous ne pourrez pas récupérer ces factures', |  | ||||||
|     created_message: 'Facture créée avec succès', |  | ||||||
|     updated_message: 'Facture mise à jour avec succès', |  | ||||||
|     deleted_message: 'Invoice deleted successfully | Invoices deleted successfully', |  | ||||||
|     marked_as_sent_message: 'Facture supprimée avec succès | Factures supprimées avec succès', |  | ||||||
|     invalid_due_amount_message: 'Le paiement entré est supérieur au montant total dû pour cette facture. Veuillez vérifier et réessayer' |  | ||||||
|   }, |  | ||||||
|   credit_notes: { |  | ||||||
|     title: 'Notes de crédit', |  | ||||||
|     credit_notes_list: 'Liste des notes de crédit', |  | ||||||
|     // Fields |  | ||||||
|     credit_notes: 'Notes de crédit', |  | ||||||
|     contact: 'Contact', |  | ||||||
|     date: 'Date', |  | ||||||
|     amount: 'Montante Montant', |  | ||||||
|     action: 'action', |  | ||||||
|     credit_number: 'Numéro de crédit', |  | ||||||
|     notes: 'Remarques', |  | ||||||
|     confirm_delete: 'Voulez-vous supprimer cet avoir?', |  | ||||||
|     item: { |  | ||||||
|       title: 'Titre de larticle', |  | ||||||
|       description: 'La description', |  | ||||||
|       quantity: 'Quantité', |  | ||||||
|       price: 'Prix', |  | ||||||
|       discount: 'Remise', |  | ||||||
|       total: 'Totale Total', |  | ||||||
|       total_discount: 'Remise totale', |  | ||||||
|       sub_total: 'Total partiel', |  | ||||||
|       tax: 'Impôt' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   payments: { |  | ||||||
|     title: 'Paiements', |  | ||||||
|     payments_list: 'Liste de paiements', |  | ||||||
|     record_payment: 'Record de paiement', |  | ||||||
|     // Fields |  | ||||||
|     customer: 'Cliente Client', |  | ||||||
|     date: 'Date', |  | ||||||
|     amount: 'Montante Montant', |  | ||||||
|     action: 'action', |  | ||||||
|     payment_number: 'Numéro de paiement', |  | ||||||
|     payment_mode: 'Mode de paiement', |  | ||||||
|     invoice: 'Facture dachat', |  | ||||||
|     note: 'Remarque', |  | ||||||
|     add_payment: 'Ajouter un paiement', |  | ||||||
|     new_payment: 'Nouveau paiement', |  | ||||||
|     edit_payment: 'Modifier le paiement', |  | ||||||
|     view_payment: 'Voir le paiement', |  | ||||||
|     add_new_payment: 'Ajouter un nouveau paiement', |  | ||||||
|     save_payment: 'Enregistrer le paiement', |  | ||||||
|     update_payment: 'Mettre à jour le paiement', |  | ||||||
|     payment: 'Paiement | Paiements', |  | ||||||
|     no_payments: 'Aucun paiement pour le moment!', |  | ||||||
|     list_of_payments: 'Cette section contiendra la liste des paiements', |  | ||||||
|     select_payment_mode: 'Sélectionnez le mode de paiement', |  | ||||||
|  |  | ||||||
|     confirm_delete: 'Vous ne pourrez pas récupérer ce paiement | Vous ne pourrez pas récupérer ces paiements', |  | ||||||
|     created_message: 'Paiement créé avec succès', |  | ||||||
|     updated_message: 'Paiement mis à jour avec succès', |  | ||||||
|     deleted_message: 'Paiement supprimé avec succès | Paiements supprimés avec succès', |  | ||||||
|     invalid_amount_message: 'Le montant du paiement est invalide' |  | ||||||
|   }, |  | ||||||
|   expenses: { |  | ||||||
|     title: 'Les dépenses', |  | ||||||
|     expenses_list: 'Liste des dépenses', |  | ||||||
|     // Fields |  | ||||||
|     expense_title: 'Titre', |  | ||||||
|     contact: 'Contact', |  | ||||||
|     category: 'Catégorie', |  | ||||||
|     from_date: 'Partir de la date', |  | ||||||
|     to_date: 'À ce jour', |  | ||||||
|     expense_date: 'Date', |  | ||||||
|     description: 'La description', |  | ||||||
|     receipt: 'Le reçu', |  | ||||||
|     amount: 'Montante Montant', |  | ||||||
|     action: 'action', |  | ||||||
|     note: 'Remarque', |  | ||||||
|     category_id: 'Identifiant de catégorie', |  | ||||||
|     date: 'Date de dépense', |  | ||||||
|     add_expense: 'Ajouter une dépense', |  | ||||||
|     add_new_expense: 'Ajouter une nouvelle dépense', |  | ||||||
|     save_expense: 'Économiser des dépenses', |  | ||||||
|     update_expense: 'Frais de mise à jour', |  | ||||||
|     download_receipt: 'Télécharger le reçu', |  | ||||||
|     edit_expense: 'Modifier les dépenses', |  | ||||||
|     new_expense: 'Nouvelle dépense', |  | ||||||
|     expense: 'Frais | Les dépenses', |  | ||||||
|     no_expenses: 'Pas de dépenses pour le moment!', |  | ||||||
|     list_of_expenses: 'Cette section contiendra la liste des dépenses.', |  | ||||||
|  |  | ||||||
|     confirm_delete: 'Vous ne pourrez pas récupérer cette dépense | Vous ne pourrez pas récupérer ces frais', |  | ||||||
|     created_message: 'Dépense créée avec succès', |  | ||||||
|     updated_message: 'Dépense mise à jour avec succès', |  | ||||||
|     deleted_message: 'Dépense supprimée avec succès | Dépenses supprimées avec succès', |  | ||||||
|     categories: { |  | ||||||
|       categories_list: 'Liste des catégories', |  | ||||||
|       title: 'Titre', |  | ||||||
|       name: 'Nom', |  | ||||||
|       description: 'La description', |  | ||||||
|       amount: 'Montante Montant', |  | ||||||
|       actions: 'Actions', |  | ||||||
|       add_category: 'ajouter une catégorie', |  | ||||||
|       new_category: 'Nouvelle catégorie', |  | ||||||
|       category: 'Catégorie | Les catégories', |  | ||||||
|       select_a_category: 'choisissez une catégorie' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   login: { |  | ||||||
|     email: 'Email', |  | ||||||
|     password: 'Mot de passe', |  | ||||||
|     forgot_password: 'Mot de passe oublié?', |  | ||||||
|     or_signIn_with: 'ou Connectez-vous avec:', |  | ||||||
|     login: 'Sidentifier', |  | ||||||
|     register: 'Sinscrire', |  | ||||||
|     reset_password: 'réinitialiser le mot de passe', |  | ||||||
|     enter_email: 'Entrer email', |  | ||||||
|     enter_password: 'Entrer le mot de passe', |  | ||||||
|     retype_password: 'Retaper le mot de passe', |  | ||||||
|     login_placeholder: 'mail@example.com' |  | ||||||
|   }, |  | ||||||
|   reports: { |  | ||||||
|     title: 'rapport', |  | ||||||
|     from_date: 'Partir de la date', |  | ||||||
|     to_date: 'À ce jour', |  | ||||||
|     status: 'Statut', |  | ||||||
|     paid: 'Payé', |  | ||||||
|     unpaid: 'Non payé', |  | ||||||
|     download_pdf: 'Télécharger le PDF', |  | ||||||
|     view_pdf: 'Voir PDF', |  | ||||||
|     update_report: 'Rapport de mise à jour', |  | ||||||
|     report: 'Rapport | Rapports', |  | ||||||
|     profit_loss: { |  | ||||||
|       profit_loss: 'Perte de profit', |  | ||||||
|       to_date: 'À ce jour', |  | ||||||
|       from_date: 'Partir de la date', |  | ||||||
|       date_range: 'Sélectionner une plage de dates' |  | ||||||
|     }, |  | ||||||
|     sales: { |  | ||||||
|       sales: 'Ventes', |  | ||||||
|       date_range: 'Sélectionner une plage de dates', |  | ||||||
|       to_date: 'À ce jour', |  | ||||||
|       from_date: 'Partir de la date', |  | ||||||
|       report_type: 'Type de rapport' |  | ||||||
|     }, |  | ||||||
|     taxes: { |  | ||||||
|       taxes: 'Les taxes', |  | ||||||
|       to_date: 'À ce jour', |  | ||||||
|       from_date: 'Partir de la date', |  | ||||||
|       date_range: 'Sélectionner une plage de dates' |  | ||||||
|     }, |  | ||||||
|     errors: { |  | ||||||
|       required: 'Champ requis' |  | ||||||
|     }, |  | ||||||
|     invoices: { |  | ||||||
|       invoice: 'Facture dachat', |  | ||||||
|       invoice_date: 'Date de facturation', |  | ||||||
|       due_date: 'Date déchéance', |  | ||||||
|       amount: 'Montante ', |  | ||||||
|       contact_name: 'Nom du contact', |  | ||||||
|       status: 'Statut' |  | ||||||
|     }, |  | ||||||
|     estimates: { |  | ||||||
|       estimate: 'Estimation', |  | ||||||
|       estimate_date: 'Date destimation', |  | ||||||
|       due_date: 'Date déchéance', |  | ||||||
|       estimate_number: 'Numéro destimation', |  | ||||||
|       ref_number: 'Numéro de ref', |  | ||||||
|       amount: 'Montante', |  | ||||||
|       contact_name: 'Nom du contact', |  | ||||||
|       status: 'Statut' |  | ||||||
|     }, |  | ||||||
|     expenses: { |  | ||||||
|       expenses: 'Les dépenses', |  | ||||||
|       category: 'Catégorie', |  | ||||||
|       date: 'Date', |  | ||||||
|       amount: 'Montante', |  | ||||||
|       to_date: 'À ce jour', |  | ||||||
|       from_date: 'Partir de la date', |  | ||||||
|       date_range: 'Sélectionner une plage de dates' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   settings: { |  | ||||||
|     menu_title: { |  | ||||||
|       account_settings: 'Paramètres du compte', |  | ||||||
|       company_information: 'Informations sur la société', |  | ||||||
|       preferences: 'Préférences', |  | ||||||
|       notifications: 'Les notifications', |  | ||||||
|       tax_types: 'Types de taxe', |  | ||||||
|       expense_category: 'Catégories de dépenses', |  | ||||||
|       update_app: "Mise à jour de l'application" |  | ||||||
|     }, |  | ||||||
|     title: 'Paramètres', |  | ||||||
|     setting: 'Paramètres | Paramètres', |  | ||||||
|     general: 'Générale', |  | ||||||
|     language: 'La langue', |  | ||||||
|     primary_currency: 'Devise principale', |  | ||||||
|     timezone: 'Fuseau horaire', |  | ||||||
|     date_format: 'Format de date', |  | ||||||
|     currencies: { |  | ||||||
|       title: 'Monnaies', |  | ||||||
|       currency: 'Monnaie | Monnaies', |  | ||||||
|       currencies_list: 'Liste des devises', |  | ||||||
|       select_currency: 'Sélectionnez la devise', |  | ||||||
|       name: 'Nom', |  | ||||||
|       code: 'Code', |  | ||||||
|       symbol: 'symbole', |  | ||||||
|       precision: 'Précision', |  | ||||||
|       thousand_separator: 'Mille séparateur', |  | ||||||
|       decimal_separator: 'Séparateur décimal', |  | ||||||
|       position: 'Position', |  | ||||||
|       position_of_symbol: 'Position du symbole', |  | ||||||
|       right: 'Droite', |  | ||||||
|       left: 'La gauche', |  | ||||||
|       action: 'action', |  | ||||||
|       add_currency: 'Ajouter une devise' |  | ||||||
|     }, |  | ||||||
|     mail: { |  | ||||||
|       host: 'Mail Host', |  | ||||||
|       port: 'Port mail', |  | ||||||
|       driver: 'Pilote de courrier', |  | ||||||
|       password: 'Mot de passe mail', |  | ||||||
|       secret: 'Secret', |  | ||||||
|       mailgun_secret: 'Mailgun Secret', |  | ||||||
|       mailgun_domain: 'Domaine', |  | ||||||
|       mailgun_endpoint: 'Mailgun Point Final', |  | ||||||
|       ses_secret: 'SES Secret', |  | ||||||
|       ses_key: 'SES clé', |  | ||||||
|       from_name: 'Nom de messagerie', |  | ||||||
|       from_mail: 'De ladresse mail', |  | ||||||
|       username: "Mail Nom d'utilisateur", |  | ||||||
|       mail_config: 'Configuration du courrier', |  | ||||||
|       encryption: 'Chiffrement du courrier', |  | ||||||
|       mail_config_desc: "Les détails ci-dessous seront utilisés pour mettre à jour l'environnement de messagerie. Aussi, vous pouvez modifier les détails à tout moment après la connexion." |  | ||||||
|     }, |  | ||||||
|     pdf: { |  | ||||||
|       title: 'Paramètre PDF', |  | ||||||
|       footer_text: 'Pied de page texte', |  | ||||||
|       pdf_layout: 'Mise en page PDF' |  | ||||||
|     }, |  | ||||||
|     company_info: { |  | ||||||
|       company_info: 'Information dentreprise', |  | ||||||
|       company_name: 'Nom de la compagnie', |  | ||||||
|       company_logo: 'Logo dentreprise', |  | ||||||
|       section_description: 'Informations sur votre entreprise qui figureront sur les factures, estimations et autres documents créés par Crater.', |  | ||||||
|       phone: 'Téléphone', |  | ||||||
|       country: 'Pays', |  | ||||||
|       state: 'Etat', |  | ||||||
|       city: 'Ville', |  | ||||||
|       address: 'Adresse', |  | ||||||
|       zip: 'Zip *: français', |  | ||||||
|       save: 'sauver', |  | ||||||
|       updated_message: 'Informations sur la société mises à jour avec succès' |  | ||||||
|     }, |  | ||||||
|     account_settings: { |  | ||||||
|       profile_picture: 'Image de profil', |  | ||||||
|       name: 'Nom', |  | ||||||
|       email: 'Email', |  | ||||||
|       password: 'Mot de passe', |  | ||||||
|       confirm_password: 'Confirmez le mot de passe', |  | ||||||
|       account_settings: 'Paramètres du compte', |  | ||||||
|       save: 'sauver', |  | ||||||
|       section_description: 'Vous pouvez mettre à jour votre nom, votre email et votre mot de passe en utilisant le formulaire ci-dessous.', |  | ||||||
|       updated_message: 'Paramètres du compte mis à jour avec succès' |  | ||||||
|     }, |  | ||||||
|     user_profile: { |  | ||||||
|       name: 'Nom', |  | ||||||
|       email: 'Email', |  | ||||||
|       password: 'Mot de passe', |  | ||||||
|       confirm_password: 'Confirmez le mot de passe' |  | ||||||
|     }, |  | ||||||
|     notification: { |  | ||||||
|       title: 'Notification', |  | ||||||
|       email: 'Envoyer des notifications à', |  | ||||||
|       description: 'Quelles notifications par courrier électronique souhaitez-vous recevoir lorsque quelque chose change?', |  | ||||||
|       invoice_viewed: 'Facture consultée', |  | ||||||
|       invoice_viewed_desc: 'Lorsque votre client visualise la facture envoyée via le tableau de bord du cratère.', |  | ||||||
|       estimate_viewed: 'Estimation vue', |  | ||||||
|       estimate_viewed_desc: 'Lorsque votre client visualise le devis envoyé via le tableau de bord du cratère.', |  | ||||||
|       save: 'sauver', |  | ||||||
|       email_save_message: 'Email enregistré avec succès', |  | ||||||
|       invoice_viewed_message: 'Facture consultée', |  | ||||||
|       estimate_viewed_message: 'Estimation vue', |  | ||||||
|       please_enter_email: 'S il vous plaît entrer email' |  | ||||||
|     }, |  | ||||||
|     tax_types: { |  | ||||||
|       title: 'Types de taxe', |  | ||||||
|       add_tax: 'Ajouter une taxe', |  | ||||||
|       description: 'Vous pouvez ajouter ou supprimer des taxes à votre guise. Crater prend en charge les taxes sur les articles individuels ainsi que sur la facture.', |  | ||||||
|       add_new_tax: 'Ajouter une nouvelle taxe', |  | ||||||
|       tax_settings: 'Paramètres de taxe', |  | ||||||
|       tax_per_item: 'Taxe par article', |  | ||||||
|       tax_name: 'Nom de la taxe', |  | ||||||
|       compound_tax: 'Taxe composée', |  | ||||||
|       percent: 'Pour cent', |  | ||||||
|       action: 'action', |  | ||||||
|       tax_setting_description: 'Activez cette option si vous souhaitez ajouter des taxes à des postes de facture individuels. Par défaut, les taxes sont ajoutées directement à la facture.', |  | ||||||
|       created_message: 'Type de taxe créé avec succès', |  | ||||||
|       updated_message: 'Type de taxe mis à jour avec succès', |  | ||||||
|       deleted_message: 'Type de taxe supprimé avec succès', |  | ||||||
|       confirm_delete: 'Vous ne pourrez pas récupérer ce type de taxe', |  | ||||||
|       already_in_use: 'La taxe est déjà utilisée' |  | ||||||
|     }, |  | ||||||
|     expense_category: { |  | ||||||
|       title: 'Catégories de dépenses', |  | ||||||
|       action: 'action', |  | ||||||
|       description: 'Des catégories sont requises pour ajouter des entrées de dépenses. Vous pouvez ajouter ou supprimer ces catégories selon vos préférences.', |  | ||||||
|       add_new_category: 'Ajouter une nouvelle catégorie', |  | ||||||
|       category_name: 'Nom de catégorie', |  | ||||||
|       category_description: 'La description', |  | ||||||
|       created_message: 'Catégorie de dépenses créée avec succès', |  | ||||||
|       deleted_message: 'La catégorie de dépenses a été supprimée avec succès', |  | ||||||
|       updated_message: 'Catégorie de dépenses mise à jour avec succès', |  | ||||||
|       confirm_delete: 'Vous ne pourrez pas récupérer cette catégorie de dépenses', |  | ||||||
|       already_in_use: 'La catégorie est déjà utilisée' |  | ||||||
|     }, |  | ||||||
|     preferences: { |  | ||||||
|       currency: 'Devise', |  | ||||||
|       language: 'La langue', |  | ||||||
|       time_zone: 'Fuseau horaire', |  | ||||||
|       fiscal_year: 'Année financière', |  | ||||||
|       date_format: 'Format de date', |  | ||||||
|       discount_setting: 'Réglage de remise', |  | ||||||
|       discount_per_item: 'Remise par article', |  | ||||||
|       discount_setting_description: 'Activez cette option si vous souhaitez ajouter une remise à des postes de facture individuels. Par défaut, les remises sont ajoutées directement à la facture.', |  | ||||||
|       save: 'sauver', |  | ||||||
|       preference: 'Préférence | Préférences', |  | ||||||
|       general_settings: 'Préférences par défaut pour le système.', |  | ||||||
|       updated_message: 'Préférences mises à jour avec succès', |  | ||||||
|       set_discount_per_item_message: 'Jeu de remise par article', |  | ||||||
|       select_language: 'Choisir la langue', |  | ||||||
|       select_time_zone: 'sélectionnez le fuseau horaire', |  | ||||||
|       select_date_formate: 'sélectionnez Date Formate', |  | ||||||
|       select_financial_year: 'sélectionner lexercice' |  | ||||||
|     }, |  | ||||||
|     update_app: { |  | ||||||
|       title: "Mise à jour de l'application", |  | ||||||
|       description: "mettre à jour la description de l'application", |  | ||||||
|       check_update: 'Vérifier les mises à jour', |  | ||||||
|       avail_update: 'Nouvelle mise à jour disponible', |  | ||||||
|       next_version: 'Version suivante', |  | ||||||
|       update: 'Mettre à jour maintenant', |  | ||||||
|       update_progress: 'Mise à jour en cours...', |  | ||||||
|       progress_text: "Cela ne prendra que quelques minutes. S'il vous plaît ne pas actualiser l'écran ou fermer la fenêtre avant la fin de la mise à jour", |  | ||||||
|       update_success: 'App a été mis à jour! Veuillez patienter pendant le rechargement automatique de la fenêtre de votre navigateur.', |  | ||||||
|       latest_message: 'Pas de mise a jour disponible! Vous êtes sur la dernière version.', |  | ||||||
|       current_version: 'Version actuelle' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   wizard: { |  | ||||||
|     account_info: 'Information sur le compte', |  | ||||||
|     account_info_desc: 'Les détails ci-dessous seront utilisés pour créer le compte administrateur principal. Aussi, vous pouvez modifier les détails à tout moment après la connexion.', |  | ||||||
|     name: 'Nom', |  | ||||||
|     email: 'Email', |  | ||||||
|     password: 'Mot de passe', |  | ||||||
|     confirm_password: 'Confirmez le mot de passe', |  | ||||||
|     save_cont: 'Enregistrer continuer', |  | ||||||
|     company_info: 'Informations sur la société', |  | ||||||
|     company_info_desc: 'Ces informations seront affichées sur les factures. Notez que vous pouvez éditer ceci plus tard sur la page des paramètres.', |  | ||||||
|     company_name: 'Nom de la compagnie', |  | ||||||
|     company_logo: 'Logo dentreprise', |  | ||||||
|     logo_preview: 'Aperçu du logo', |  | ||||||
|     preferences: 'Préférences', |  | ||||||
|     preferences_desc: 'Préférences par défaut pour le système.', |  | ||||||
|     country: 'Pays', |  | ||||||
|     state: 'Etat', |  | ||||||
|     city: 'Ville', |  | ||||||
|     address: 'Adresse', |  | ||||||
|     street: 'Street1 ' | 'Rue # 2', |  | ||||||
|     phone: 'Téléphone', |  | ||||||
|     zip_code: 'Code postal', |  | ||||||
|     go_back: 'Retourner', |  | ||||||
|     currency: 'Devise', |  | ||||||
|     language: 'La langue', |  | ||||||
|     time_zone: 'Fuseau horaire', |  | ||||||
|     fiscal_year: 'Année financière', |  | ||||||
|     date_format: 'Format de date', |  | ||||||
|     from_address: "De l'adresse", |  | ||||||
|     username: "Nom d'utilisateur", |  | ||||||
|     next: 'Suivant', |  | ||||||
|     continue: 'Continuer', |  | ||||||
|     database: { |  | ||||||
|       database: 'URL du site et base de données', |  | ||||||
|       connection: 'Connexion à la base de données', |  | ||||||
|       host: 'Hôte de base de données', |  | ||||||
|       port: 'Port de base de données', |  | ||||||
|       password: 'Mot de passe de base de données', |  | ||||||
|       app_url: 'Application URL', |  | ||||||
|       username: "Nom d'utilisateur de la base de données", |  | ||||||
|       db_name: 'Nom de la base de données', |  | ||||||
|       desc: "Créez une base de données sur votre serveur et définissez les informations d'identification à l'aide du formulaire ci-dessous." |  | ||||||
|     }, |  | ||||||
|     permissions: { |  | ||||||
|       permissions: 'Les permissions', |  | ||||||
|       permission_confirm_title: 'Es-tu sur de vouloir continuer?', |  | ||||||
|       permission_confirm_desc: 'La vérification de l\'autorisation du dossier a échoué', |  | ||||||
|       permission_desc: "Vous trouverez ci-dessous la liste des autorisations de dossier requises pour le fonctionnement de l'application. Si la vérification des autorisations échoue, veillez à mettre à jour vos autorisations de dossier." |  | ||||||
|     }, |  | ||||||
|     mail: { |  | ||||||
|       host: 'Mail Host', |  | ||||||
|       port: 'Port mail', |  | ||||||
|       driver: 'Pilote de courrier', |  | ||||||
|       password: 'Mot de passe mail', |  | ||||||
|       secret: 'Secret', |  | ||||||
|       mailgun_secret: 'Mailgun Secret', |  | ||||||
|       mailgun_domain: 'Domaine', |  | ||||||
|       mailgun_endpoint: 'Mailgun Point Final', |  | ||||||
|       ses_secret: 'SES Secret', |  | ||||||
|       ses_key: 'SES clé', |  | ||||||
|       from_name: 'Nom de messagerie', |  | ||||||
|       from_mail: 'De ladresse mail', |  | ||||||
|       username: "Mail Nom d'utilisateur", |  | ||||||
|       mail_config: 'Configuration du courrier', |  | ||||||
|       encryption: 'Chiffrement du courrier', |  | ||||||
|       mail_config_desc: "Les détails ci-dessous seront utilisés pour mettre à jour l'environnement de messagerie. Aussi, vous pouvez modifier les détails à tout moment après la connexion." |  | ||||||
|     }, |  | ||||||
|     req: { |  | ||||||
|       system_req: 'Configuration requise', |  | ||||||
|       php_req_version: 'Php (version {version} nécessaire)', |  | ||||||
|       check_req: 'Vérifier les exigences', |  | ||||||
|       system_req_desc: 'Crater a quelques exigences de serveur. Assurez-vous que votre serveur dispose de la version PHP requise et de toutes les extensions mentionnées ci-dessous.' |  | ||||||
|     }, |  | ||||||
|     errors: { |  | ||||||
|       migrate_failed: 'Migration impossible', |  | ||||||
|       database_variables_save_error: 'Impossible de se connecter à la base de données avec les valeurs fournies.', |  | ||||||
|       mail_variables_save_error: 'La configuration du courrier électronique a échoué.', |  | ||||||
|       connection_failed: 'La connexion à la base de données a échoué' |  | ||||||
|     }, |  | ||||||
|     success: { |  | ||||||
|       mail_variables_save_successfully: 'Email configuré avec succès', |  | ||||||
|       database_variables_save_successfully: 'Base de données configurée avec succès.' |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   layout_login: { |  | ||||||
|     copyright_crater: 'Copyright @ Crater - 2019', |  | ||||||
|     super_simple_invoicing: 'Super Simple Facturation', |  | ||||||
|     for_freelancer: 'pour les pigistes et', |  | ||||||
|     small_businesses: 'Petites entreprises ', |  | ||||||
|     crater_help: 'Crater vous aide à suivre vos dépenses, à enregistrer vos paiements et à générer de belles', |  | ||||||
|     invoices_and_estimates: 'factures et devis avec possibilité de choisir plusieurs modèles.' |  | ||||||
|  |  | ||||||
|   }, |  | ||||||
|   validation: { |  | ||||||
|     invalid_url: 'URL invalide (ex: http://www.crater.com)', |  | ||||||
|     required: 'Champ requis', |  | ||||||
|     email_incorrect: 'Adresse Email incorrecte.', |  | ||||||
|     email_does_not_exist: "L'utilisateur avec un email donné n'existe pas", |  | ||||||
|     send_reset_link: 'Envoyer le lien de réinitialisation', |  | ||||||
|     not_yet: 'Pas encore? Envoyer à nouveau', |  | ||||||
|     password_min_length: 'Le mot de passe doit contenir {nombre} caractères', |  | ||||||
|     name_min_length: 'Le nom doit avoir au moins {count} lettres.', |  | ||||||
|     enter_valid_tax_rate: 'Entrez un taux de taxe valide', |  | ||||||
|     numbers_only: 'Chiffres uniquement.', |  | ||||||
|     characters_only: 'Caractères seulement.', |  | ||||||
|     password_incorrect: 'Les mots de passe doivent être identiques', |  | ||||||
|     password_length: 'Le mot de passe doit comporter 5 caractères.', |  | ||||||
|     qty_must_greater_than_zero: 'La quantité doit être supérieure à zéro.', |  | ||||||
|     price_greater_than_zero: 'Le prix doit être supérieur à zéro.', |  | ||||||
|     payment_greater_than_zero: 'Le paiement doit être supérieur à zéro.', |  | ||||||
|     payment_greater_than_due_amount: 'Le paiement entré est plus que le montant dû de cette facture.', |  | ||||||
|     quantity_maxlength: 'La quantité ne doit pas dépasser 20 chiffres.', |  | ||||||
|     price_maxlength: 'Le prix ne doit pas dépasser 20 chiffres.', |  | ||||||
|     price_minvalue: 'Le prix doit être supérieur à 0 chiffre', |  | ||||||
|     amount_maxlength: 'Le montant ne doit pas dépasser 20 chiffres.', |  | ||||||
|     amount_minvalue: 'Le montant doit être supérieur à 0 chiffre', |  | ||||||
|     description_maxlength: 'La description ne doit pas dépasser 255 caractères.', |  | ||||||
|     maximum_options_error: 'Maximum de {max} options sélectionnées. Commencez par supprimer une option sélectionnée pour en sélectionner une autre.', |  | ||||||
|     notes_maxlength: 'Les notes ne doivent pas dépasser 255 caractères.', |  | ||||||
|     address_maxlength: "L'adresse ne doit pas dépasser 255 caractères.", |  | ||||||
|     ref_number_maxlength: 'Le numéro de référence ne doit pas dépasser 255 caractères.' |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										814
									
								
								resources/assets/js/plugins/fr.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										814
									
								
								resources/assets/js/plugins/fr.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,814 @@ | |||||||
|  | { | ||||||
|  |   "navigation": { | ||||||
|  |     "dashboard": "Tableau de bord", | ||||||
|  |     "customers": "Cliente", | ||||||
|  |     "items": "Articles", | ||||||
|  |     "invoices": "Factures", | ||||||
|  |     "expenses": "Les dépenses", | ||||||
|  |     "estimates": "Estimations", | ||||||
|  |     "payments": "Paiements", | ||||||
|  |     "reports": "Rapports", | ||||||
|  |     "settings": "Paramètres", | ||||||
|  |     "logout": "Se déconnecter" | ||||||
|  |   }, | ||||||
|  |   "general": { | ||||||
|  |     "view_pdf": "Voir PDF", | ||||||
|  |     "download_pdf": "Télécharger le PDF", | ||||||
|  |     "save": "sauver", | ||||||
|  |     "cancel": "Annuler", | ||||||
|  |     "update": "Mise à jour", | ||||||
|  |     "download": "Télécharger", | ||||||
|  |     "from_date": "Partir de la date", | ||||||
|  |     "to_date": "À ce jour", | ||||||
|  |     "from": "De", | ||||||
|  |     "to": "À", | ||||||
|  |     "go_back": "Retourner", | ||||||
|  |     "back_to_login": "Retour connexion?", | ||||||
|  |     "home": "Accueil", | ||||||
|  |     "filter": "Filtre", | ||||||
|  |     "delete": "Effacer", | ||||||
|  |     "edit": "Modifier", | ||||||
|  |     "view": "Vue", | ||||||
|  |     "add_new_item": "Ajoute un nouvel objet", | ||||||
|  |     "clear_all": "Tout effacer", | ||||||
|  |     "showing": "Montrant", | ||||||
|  |     "of": "de", | ||||||
|  |     "actions": "Actions", | ||||||
|  |     "subtotal": "TOTAL", | ||||||
|  |     "discount": "REMISE", | ||||||
|  |     "fixed": "Fixée", | ||||||
|  |     "percentage": "Pourcentage", | ||||||
|  |     "tax": "IMPÔT", | ||||||
|  |     "total_amount": "MONTANT TOTAL", | ||||||
|  |     "bill_to": "facturer", | ||||||
|  |     "ship_to": "Envoyez à", | ||||||
|  |     "due": "Dû", | ||||||
|  |     "draft": "Brouillon", | ||||||
|  |     "sent": "Envoyée", | ||||||
|  |     "all": "Tout", | ||||||
|  |     "select_all": "Tout sélectionner", | ||||||
|  |     "choose_file": "Cliquez ici pour choisir un fichier", | ||||||
|  |     "choose_template": "Choisissez un modèle", | ||||||
|  |     "choose": "Choisir", | ||||||
|  |     "remove": "Retirer", | ||||||
|  |     "powered_by": "Alimenté par", | ||||||
|  |     "bytefury": "Bytefury", | ||||||
|  |     "select_a_status": "Sélectionnez un statut", | ||||||
|  |     "select_a_tax": "Sélectionnez une taxe", | ||||||
|  |     "search": "Chercher", | ||||||
|  |     "are_you_sure": "Êtes-vous sûr?", | ||||||
|  |     "list_is_empty": "La liste est vide", | ||||||
|  |     "no_tax_found": "Aucune taxe trouvée!", | ||||||
|  |     "four_zero_four": "404", | ||||||
|  |     "you_got_lost": "Oups! Vous vous êtes perdus!", | ||||||
|  |     "go_home": "Rentrer chez soi", | ||||||
|  |  | ||||||
|  |     "setting_updated": "Réglage mis à jour avec succès", | ||||||
|  |     "select_state": "Sélectionnez l'état", | ||||||
|  |     "select_country": "Choisissez le pays", | ||||||
|  |     "select_city": "Sélectionnez une ville", | ||||||
|  |     "street_1": "Rue 1", | ||||||
|  |     "street_2": "Rue # 2", | ||||||
|  |     "action_failed": "Action : échoué" | ||||||
|  |   }, | ||||||
|  |   "dashboard": { | ||||||
|  |     "select_year": "Sélectionnez lannée", | ||||||
|  |     "cards": { | ||||||
|  |       "due_amount": "Montant dû", | ||||||
|  |       "customers": "Les clients", | ||||||
|  |       "invoices": "Factures", | ||||||
|  |       "estimates": "Estimations" | ||||||
|  |     }, | ||||||
|  |     "chart_info": { | ||||||
|  |       "total_sales": "Ventes", | ||||||
|  |       "total_receipts": "Reçus", | ||||||
|  |       "total_expense": "Les dépenses", | ||||||
|  |       "net_income": "Revenu net", | ||||||
|  |       "year": "Sélectionnez lannée" | ||||||
|  |     }, | ||||||
|  |     "weekly_invoices": { | ||||||
|  |       "title": "Factures hebdomadaires" | ||||||
|  |     }, | ||||||
|  |     "monthly_chart": { | ||||||
|  |       "title": "Ventes et dépenses" | ||||||
|  |     }, | ||||||
|  |     "recent_invoices_card": { | ||||||
|  |       "title": "Factures dues", | ||||||
|  |       "due_on": "Due On", | ||||||
|  |       "customer": "Cliente", | ||||||
|  |       "amount_due": "Montant dû", | ||||||
|  |       "actions": "Actions", | ||||||
|  |       "view_all": "Voir tout" | ||||||
|  |     }, | ||||||
|  |     "recent_estimate_card": { | ||||||
|  |       "title": "Estimations récentes", | ||||||
|  |       "date": "Date", | ||||||
|  |       "customer": "Cliente", | ||||||
|  |       "amount_due": "Montant dû", | ||||||
|  |       "actions": "Actions", | ||||||
|  |       "view_all": "Voir tout" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "tax_types": { | ||||||
|  |     "name": "Nom", | ||||||
|  |     "description": "La description", | ||||||
|  |     "percent": "Pour cent", | ||||||
|  |     "compound_tax": "Taxe composée" | ||||||
|  |   }, | ||||||
|  |   "customers": { | ||||||
|  |     "title": "Les clients", | ||||||
|  |     "add_customer": "Ajouter un client", | ||||||
|  |     "contacts_list": "Liste de clients", | ||||||
|  |     "name": "Nom", | ||||||
|  |     "display_name": "Afficher un nom", | ||||||
|  |     "primary_contact_name": "Nom du contact principal", | ||||||
|  |     "contact_name": "Nom du contact", | ||||||
|  |     "amount_due": "Montant dû", | ||||||
|  |     "email": "Email", | ||||||
|  |     "address": "Adresse", | ||||||
|  |     "phone": "Téléphone", | ||||||
|  |     "website": "Site Internet", | ||||||
|  |     "country": "Pays", | ||||||
|  |     "state": "Etat", | ||||||
|  |     "city": "Ville", | ||||||
|  |     "zip_code": "Code postal", | ||||||
|  |     "added_on": "Ajouté le", | ||||||
|  |     "action": "action", | ||||||
|  |     "password": "Mot de passe", | ||||||
|  |     "street_number": "Numéro de rue", | ||||||
|  |     "primary_currency": "Devise principale", | ||||||
|  |     "add_new_customer": "Ajouter un nouveau client", | ||||||
|  |     "save_customer": "Enregistrer le client", | ||||||
|  |     "update_customer": "Mettre à jour le client", | ||||||
|  |     "customer": "Client | Les clients", | ||||||
|  |     "new_customer": "Nouveau client", | ||||||
|  |     "edit_customer": "Modifier le client", | ||||||
|  |     "basic_info": "Informations de base", | ||||||
|  |     "billing_address": "Adresse de facturation", | ||||||
|  |     "shipping_address": "Adresse de livraison", | ||||||
|  |     "copy_billing_address": "Copier de la facturation", | ||||||
|  |     "no_customers": "Pas encore de clients!", | ||||||
|  |     "no_customers_found": "Aucun client trouvé!", | ||||||
|  |     "list_of_customers": "Cette section contiendra la liste des clients.", | ||||||
|  |     "primary_display_name": "Nom daffichage principal", | ||||||
|  |     "select_state": "Sélectionnez létat", | ||||||
|  |     "select_country": "Choisissez le pays", | ||||||
|  |     "select_city": "Sélectionnez une ville", | ||||||
|  |     "select_currency": "Sélectionnez la devise", | ||||||
|  |     "street_1": "Rue 1", | ||||||
|  |     "street_2": "Rue 2", | ||||||
|  |     "select_a_customer": "Sélectionnez un client", | ||||||
|  |     "type_or_click": "Tapez ou cliquez pour sélectionner", | ||||||
|  |  | ||||||
|  |     "confirm_delete": "Vous ne pourrez pas récupérer ce client | Vous ne pourrez pas récupérer ces clients", | ||||||
|  |     "created_message": "Client créé avec succès", | ||||||
|  |     "updated_message": "Client mis à jour avec succès", | ||||||
|  |     "deleted_message": "Client supprimé avec succès | Les clients supprimés avec succès" | ||||||
|  |   }, | ||||||
|  |   "items": { | ||||||
|  |     "title": "Articles", | ||||||
|  |     "items_list": "Liste darticles", | ||||||
|  |     "name": "Nom", | ||||||
|  |     "unit": "Unité", | ||||||
|  |     "description": "La description", | ||||||
|  |     "added_on": "Ajouté le", | ||||||
|  |     "price": "Prix", | ||||||
|  |     "date_of_creation": "Date de création", | ||||||
|  |     "action": "action", | ||||||
|  |     "add_item": "Ajouter un item", | ||||||
|  |     "save_item": "Enregistrer lélément", | ||||||
|  |     "update_item": "Mettre à jour lélément", | ||||||
|  |     "item": "Article | Articles", | ||||||
|  |     "add_new_item": "Ajoute un nouvel objet", | ||||||
|  |     "new_item": "Nouvel article", | ||||||
|  |     "edit_item": "Modifier larticle", | ||||||
|  |     "no_items": "Aucun article pour le moment!", | ||||||
|  |     "list_of_items": "Cette section contiendra la liste des éléments.", | ||||||
|  |     "select_a_unit": "sélectionner lunité", | ||||||
|  |  | ||||||
|  |     "item_attached_message": "Impossible de supprimer un élément déjà utilisé", | ||||||
|  |     "confirm_delete": "Vous ne pourrez pas récupérer cet article | Vous ne pourrez pas récupérer ces objets", | ||||||
|  |     "created_message": "Article créé avec succès", | ||||||
|  |     "updated_message": "Élément mis à jour avec succès", | ||||||
|  |     "deleted_message": "Élément supprimé avec succès | Éléments supprimés avec succès" | ||||||
|  |   }, | ||||||
|  |   "estimates": { | ||||||
|  |     "title": "Estimations", | ||||||
|  |     "estimate": "Estimation | Estimations", | ||||||
|  |     "estimates_list": "Liste des estimations", | ||||||
|  |     "days": "{jours} jours", | ||||||
|  |     "months": "{mois} mois", | ||||||
|  |     "years": "{années} Année", | ||||||
|  |     "all": "Toute", | ||||||
|  |     "paid": "Payé", | ||||||
|  |     "unpaid": "Non payé", | ||||||
|  |     "customer": "CLIENTE CLIENT", | ||||||
|  |     "ref_no": "REF NO.", | ||||||
|  |     "number": "NOMBRE", | ||||||
|  |     "amount_due": "MONTANT DÛ", | ||||||
|  |     "partially_paid": "Partiellement payé", | ||||||
|  |     "total": "Totale", | ||||||
|  |     "discount": "Remise", | ||||||
|  |     "sub_total": "Total partiel", | ||||||
|  |     "estimate_number": "Numéro destimation", | ||||||
|  |     "ref_number": "Numéro de ref", | ||||||
|  |     "contact": "Contact", | ||||||
|  |     "add_item": "Ajouter un article", | ||||||
|  |     "date": "Date", | ||||||
|  |     "due_date": "Date déchéance", | ||||||
|  |     "expiry_date": "Date dexpiration", | ||||||
|  |     "status": "Statut", | ||||||
|  |     "add_tax": "Ajouter une taxe", | ||||||
|  |     "amount": "Montante", | ||||||
|  |     "action": "action", | ||||||
|  |     "notes": "Remarques", | ||||||
|  |     "tax": "Impôt", | ||||||
|  |     "estimate_template": "Modèle destimation", | ||||||
|  |     "convert_to_invoice": "Convertir en facture", | ||||||
|  |     "mark_as_sent": "Marquer comme envoyé", | ||||||
|  |     "send_estimate": "Envoyer une estimation", | ||||||
|  |     "record_payment": "Record de paiement", | ||||||
|  |     "add_estimate": "Ajouter une estimation", | ||||||
|  |     "save_estimate": "Sauvegarder lestimation", | ||||||
|  |     "confirm_conversion": "Vous souhaitez convertir cette estimation en facture?", | ||||||
|  |     "conversion_message": "Conversion réussie", | ||||||
|  |     "confirm_send_estimate": "Cette estimation sera envoyée par courrier électronique au client.", | ||||||
|  |     "confirm_mark_as_sent": "Cette estimation sera marquée comme envoyé", | ||||||
|  |     "confirm_mark_as_accepted": "Cette estimation sera marquée comme acceptée", | ||||||
|  |     "confirm_mark_as_rejected": "Cette estimation sera marquée comme Rejetée", | ||||||
|  |     "mark_as_sent_successfully": "Estimation marquée comme envoyée avec succès", | ||||||
|  |     "send_estimate_successfully": "Estimation envoyée avec succès", | ||||||
|  |     "errors": { | ||||||
|  |       "required": "Champ requis" | ||||||
|  |     }, | ||||||
|  |     "accepted": "Accepté", | ||||||
|  |     "sent": "Envoyée", | ||||||
|  |     "draft": "Brouillon", | ||||||
|  |     "declined": "Diminué", | ||||||
|  |     "new_estimate": "Nouvelle estimation", | ||||||
|  |     "add_new_estimate": "Ajouter une nouvelle estimation", | ||||||
|  |     "update_Estimate": "Mise à jour de lestimation", | ||||||
|  |     "edit_estimate": "Modifier lestimation", | ||||||
|  |     "items": "articles", | ||||||
|  |     "Estimate": "Estimation | Estimations", | ||||||
|  |     "add_new_tax": "Ajouter une nouvelle taxe", | ||||||
|  |     "no_estimates": "Aucune estimation pour le moment!", | ||||||
|  |     "list_of_estimates": "Cette section contiendra la liste des estimations.", | ||||||
|  |     "mark_as_rejected": "Marquer comme rejeté", | ||||||
|  |     "mark_as_accepted": "Marquer comme accepté", | ||||||
|  |  | ||||||
|  |     "marked_as_accepted_message": "Estimation marquée comme acceptée", | ||||||
|  |     "marked_as_rejected_message": "Estimation marquée comme rejetée", | ||||||
|  |     "confirm_delete": "Vous ne pourrez pas récupérer cette estimation | Vous ne pourrez pas récupérer ces estimations", | ||||||
|  |     "created_message": "Estimation créée avec succès", | ||||||
|  |     "updated_message": "Estimation mise à jour avec succès", | ||||||
|  |     "deleted_message": "Estimation supprimée avec succès | Estimations supprimées avec succès", | ||||||
|  |     "item": { | ||||||
|  |       "title": "Titre de larticle", | ||||||
|  |       "description": "La description", | ||||||
|  |       "quantity": "Quantité", | ||||||
|  |       "price": "Prix", | ||||||
|  |       "discount": "Remise", | ||||||
|  |       "total": "Totale", | ||||||
|  |       "total_discount": "Remise totale", | ||||||
|  |       "sub_total": "Total partiel", | ||||||
|  |       "tax": "Impôt", | ||||||
|  |       "amount": "Montante", | ||||||
|  |       "select_an_item": "Tapez ou cliquez pour sélectionner un élément", | ||||||
|  |       "type_item_description": "Type Item Description (optionnel)" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "invoices": { | ||||||
|  |     "title": "Factures", | ||||||
|  |     "invoices_list": "Liste de factures", | ||||||
|  |     "days": "{jours} jours", | ||||||
|  |     "months": "{mois} mois", | ||||||
|  |     "years": "{années} Année", | ||||||
|  |     "all": "Toute", | ||||||
|  |     "paid": "Payé", | ||||||
|  |     "unpaid": "Non payé", | ||||||
|  |     "customer": "CLIENTE CLIENT", | ||||||
|  |     "paid_status": "Statut payé", | ||||||
|  |     "ref_no": "REF NO.", | ||||||
|  |     "number": "NOMBRE", | ||||||
|  |     "amount_due": "MONTANT DÛ", | ||||||
|  |     "partially_paid": "Partiellement payé", | ||||||
|  |     "total": "Totale Total", | ||||||
|  |     "discount": "Remise", | ||||||
|  |     "sub_total": "Total partiel", | ||||||
|  |     "invoice": "Facture | Factures", | ||||||
|  |     "invoice_number": "Numéro de facture", | ||||||
|  |     "ref_number": "Numéro de ref", | ||||||
|  |     "contact": "Contact", | ||||||
|  |     "add_item": "Ajouter un article", | ||||||
|  |     "date": "Date", | ||||||
|  |     "due_date": "Date déchéance", | ||||||
|  |     "status": "Statut", | ||||||
|  |     "add_tax": "Ajouter une taxe", | ||||||
|  |     "amount": "Montante Montant", | ||||||
|  |     "action": "action", | ||||||
|  |     "notes": "Remarques", | ||||||
|  |     "view": "Vue", | ||||||
|  |     "send_invoice": "Envoyer une facture", | ||||||
|  |     "invoice_template": "Modèle de facture", | ||||||
|  |     "template": "Modèle", | ||||||
|  |     "mark_as_sent": "Marquer comme envoyé", | ||||||
|  |     "invoice_mark_as_sent": "Cette facture sera marquée comme envoyé", | ||||||
|  |     "confirm_send": "Cette facture sera envoyée par courrier électronique au client.", | ||||||
|  |     "invoice_date": "Date de facturation", | ||||||
|  |     "record_payment": "Record de paiement", | ||||||
|  |     "add_new_invoice": "Ajouter une nouvelle facture", | ||||||
|  |     "update_expense": "Frais de mise à jour", | ||||||
|  |     "edit_invoice": "Modifier la facture", | ||||||
|  |     "new_invoice": "Nouvelle facture", | ||||||
|  |     "save_invoice": "Enregistrer la facture", | ||||||
|  |     "update_invoice": "Mettre à jour la facture", | ||||||
|  |     "add_new_tax": "Ajouter une nouvelle taxe", | ||||||
|  |     "no_invoices": "Aucune facture pour le moment!", | ||||||
|  |     "list_of_invoices": "Cette section contiendra la liste des factures.", | ||||||
|  |     "select_invoice": "Sélectionnez facture", | ||||||
|  |     "mark_as_sent_successfully": "Facture marquée comme envoyée avec succès", | ||||||
|  |     "send_invoice_successfully": "Facture envoyée avec succès", | ||||||
|  |     "item": { | ||||||
|  |       "title": "Titre de larticle", | ||||||
|  |       "description": "La description", | ||||||
|  |       "quantity": "Quantité", | ||||||
|  |       "price": "Prix", | ||||||
|  |       "discount": "Remise", | ||||||
|  |       "total": "Totale Total", | ||||||
|  |       "total_discount": "Remise totale", | ||||||
|  |       "sub_total": "Total partiel", | ||||||
|  |       "tax": "Impôt", | ||||||
|  |       "amount": "Montante Montant", | ||||||
|  |       "select_an_item": "Tapez ou cliquez pour sélectionner un élément", | ||||||
|  |       "type_item_description": "Type Item Description (optionnel)" | ||||||
|  |     }, | ||||||
|  |     "payment_attached_message": "Un paiement est déjà associé à l'une des factures sélectionnées. Assurez-vous d’effacer d’abord les paiements en pièce jointe afin de procéder à la suppression.", | ||||||
|  |     "confirm_delete": "Vous ne pourrez pas récupérer cette facture | Vous ne pourrez pas récupérer ces factures", | ||||||
|  |     "created_message": "Facture créée avec succès", | ||||||
|  |     "updated_message": "Facture mise à jour avec succès", | ||||||
|  |     "deleted_message": "Invoice deleted successfully | Invoices deleted successfully", | ||||||
|  |     "marked_as_sent_message": "Facture supprimée avec succès | Factures supprimées avec succès", | ||||||
|  |     "invalid_due_amount_message": "Le paiement entré est supérieur au montant total dû pour cette facture. Veuillez vérifier et réessayer" | ||||||
|  |   }, | ||||||
|  |   "credit_notes": { | ||||||
|  |     "title": "Notes de crédit", | ||||||
|  |     "credit_notes_list": "Liste des notes de crédit", | ||||||
|  |     "credit_notes": "Notes de crédit", | ||||||
|  |     "contact": "Contact", | ||||||
|  |     "date": "Date", | ||||||
|  |     "amount": "Montante Montant", | ||||||
|  |     "action": "action", | ||||||
|  |     "credit_number": "Numéro de crédit", | ||||||
|  |     "notes": "Remarques", | ||||||
|  |     "confirm_delete": "Voulez-vous supprimer cet avoir?", | ||||||
|  |     "item": { | ||||||
|  |       "title": "Titre de larticle", | ||||||
|  |       "description": "La description", | ||||||
|  |       "quantity": "Quantité", | ||||||
|  |       "price": "Prix", | ||||||
|  |       "discount": "Remise", | ||||||
|  |       "total": "Totale Total", | ||||||
|  |       "total_discount": "Remise totale", | ||||||
|  |       "sub_total": "Total partiel", | ||||||
|  |       "tax": "Impôt" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "payments": { | ||||||
|  |     "title": "Paiements", | ||||||
|  |     "payments_list": "Liste de paiements", | ||||||
|  |     "record_payment": "Record de paiement", | ||||||
|  |     "customer": "Cliente Client", | ||||||
|  |     "date": "Date", | ||||||
|  |     "amount": "Montante Montant", | ||||||
|  |     "action": "action", | ||||||
|  |     "payment_number": "Numéro de paiement", | ||||||
|  |     "payment_mode": "Mode de paiement", | ||||||
|  |     "invoice": "Facture dachat", | ||||||
|  |     "note": "Remarque", | ||||||
|  |     "add_payment": "Ajouter un paiement", | ||||||
|  |     "new_payment": "Nouveau paiement", | ||||||
|  |     "edit_payment": "Modifier le paiement", | ||||||
|  |     "view_payment": "Voir le paiement", | ||||||
|  |     "add_new_payment": "Ajouter un nouveau paiement", | ||||||
|  |     "save_payment": "Enregistrer le paiement", | ||||||
|  |     "update_payment": "Mettre à jour le paiement", | ||||||
|  |     "payment": "Paiement | Paiements", | ||||||
|  |     "no_payments": "Aucun paiement pour le moment!", | ||||||
|  |     "list_of_payments": "Cette section contiendra la liste des paiements", | ||||||
|  |     "select_payment_mode": "Sélectionnez le mode de paiement", | ||||||
|  |  | ||||||
|  |     "confirm_delete": "Vous ne pourrez pas récupérer ce paiement | Vous ne pourrez pas récupérer ces paiements", | ||||||
|  |     "created_message": "Paiement créé avec succès", | ||||||
|  |     "updated_message": "Paiement mis à jour avec succès", | ||||||
|  |     "deleted_message": "Paiement supprimé avec succès | Paiements supprimés avec succès", | ||||||
|  |     "invalid_amount_message": "Le montant du paiement est invalide" | ||||||
|  |   }, | ||||||
|  |   "expenses": { | ||||||
|  |     "title": "Les dépenses", | ||||||
|  |     "expenses_list": "Liste des dépenses", | ||||||
|  |     "expense_title": "Titre", | ||||||
|  |     "contact": "Contact", | ||||||
|  |     "category": "Catégorie", | ||||||
|  |     "from_date": "Partir de la date", | ||||||
|  |     "to_date": "À ce jour", | ||||||
|  |     "expense_date": "Date", | ||||||
|  |     "description": "La description", | ||||||
|  |     "receipt": "Le reçu", | ||||||
|  |     "amount": "Montante Montant", | ||||||
|  |     "action": "action", | ||||||
|  |     "note": "Remarque", | ||||||
|  |     "category_id": "Identifiant de catégorie", | ||||||
|  |     "date": "Date de dépense", | ||||||
|  |     "add_expense": "Ajouter une dépense", | ||||||
|  |     "add_new_expense": "Ajouter une nouvelle dépense", | ||||||
|  |     "save_expense": "Économiser des dépenses", | ||||||
|  |     "update_expense": "Frais de mise à jour", | ||||||
|  |     "download_receipt": "Télécharger le reçu", | ||||||
|  |     "edit_expense": "Modifier les dépenses", | ||||||
|  |     "new_expense": "Nouvelle dépense", | ||||||
|  |     "expense": "Frais | Les dépenses", | ||||||
|  |     "no_expenses": "Pas de dépenses pour le moment!", | ||||||
|  |     "list_of_expenses": "Cette section contiendra la liste des dépenses.", | ||||||
|  |  | ||||||
|  |     "confirm_delete": "Vous ne pourrez pas récupérer cette dépense | Vous ne pourrez pas récupérer ces frais", | ||||||
|  |     "created_message": "Dépense créée avec succès", | ||||||
|  |     "updated_message": "Dépense mise à jour avec succès", | ||||||
|  |     "deleted_message": "Dépense supprimée avec succès | Dépenses supprimées avec succès", | ||||||
|  |     "categories": { | ||||||
|  |       "categories_list": "Liste des catégories", | ||||||
|  |       "title": "Titre", | ||||||
|  |       "name": "Nom", | ||||||
|  |       "description": "La description", | ||||||
|  |       "amount": "Montante Montant", | ||||||
|  |       "actions": "Actions", | ||||||
|  |       "add_category": "ajouter une catégorie", | ||||||
|  |       "new_category": "Nouvelle catégorie", | ||||||
|  |       "category": "Catégorie | Les catégories", | ||||||
|  |       "select_a_category": "choisissez une catégorie" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "login": { | ||||||
|  |     "email": "Email", | ||||||
|  |     "password": "Mot de passe", | ||||||
|  |     "forgot_password": "Mot de passe oublié?", | ||||||
|  |     "or_signIn_with": "ou Connectez-vous avec:", | ||||||
|  |     "login": "Sidentifier", | ||||||
|  |     "register": "Sinscrire", | ||||||
|  |     "reset_password": "réinitialiser le mot de passe", | ||||||
|  |     "enter_email": "Entrer email", | ||||||
|  |     "enter_password": "Entrer le mot de passe", | ||||||
|  |     "retype_password": "Retaper le mot de passe", | ||||||
|  |     "login_placeholder": "mail@example.com" | ||||||
|  |   }, | ||||||
|  |   "reports": { | ||||||
|  |     "title": "rapport", | ||||||
|  |     "from_date": "Partir de la date", | ||||||
|  |     "to_date": "À ce jour", | ||||||
|  |     "status": "Statut", | ||||||
|  |     "paid": "Payé", | ||||||
|  |     "unpaid": "Non payé", | ||||||
|  |     "download_pdf": "Télécharger le PDF", | ||||||
|  |     "view_pdf": "Voir PDF", | ||||||
|  |     "update_report": "Rapport de mise à jour", | ||||||
|  |     "report": "Rapport | Rapports", | ||||||
|  |     "profit_loss": { | ||||||
|  |       "profit_loss": "Perte de profit", | ||||||
|  |       "to_date": "À ce jour", | ||||||
|  |       "from_date": "Partir de la date", | ||||||
|  |       "date_range": "Sélectionner une plage de dates" | ||||||
|  |     }, | ||||||
|  |     "sales": { | ||||||
|  |       "sales": "Ventes", | ||||||
|  |       "date_range": "Sélectionner une plage de dates", | ||||||
|  |       "to_date": "À ce jour", | ||||||
|  |       "from_date": "Partir de la date", | ||||||
|  |       "report_type": "Type de rapport" | ||||||
|  |     }, | ||||||
|  |     "taxes": { | ||||||
|  |       "taxes": "Les taxes", | ||||||
|  |       "to_date": "À ce jour", | ||||||
|  |       "from_date": "Partir de la date", | ||||||
|  |       "date_range": "Sélectionner une plage de dates" | ||||||
|  |     }, | ||||||
|  |     "errors": { | ||||||
|  |       "required": "Champ requis" | ||||||
|  |     }, | ||||||
|  |     "invoices": { | ||||||
|  |       "invoice": "Facture dachat", | ||||||
|  |       "invoice_date": "Date de facturation", | ||||||
|  |       "due_date": "Date déchéance", | ||||||
|  |       "amount": "Montante ", | ||||||
|  |       "contact_name": "Nom du contact", | ||||||
|  |       "status": "Statut" | ||||||
|  |     }, | ||||||
|  |     "estimates": { | ||||||
|  |       "estimate": "Estimation", | ||||||
|  |       "estimate_date": "Date destimation", | ||||||
|  |       "due_date": "Date déchéance", | ||||||
|  |       "estimate_number": "Numéro destimation", | ||||||
|  |       "ref_number": "Numéro de ref", | ||||||
|  |       "amount": "Montante", | ||||||
|  |       "contact_name": "Nom du contact", | ||||||
|  |       "status": "Statut" | ||||||
|  |     }, | ||||||
|  |     "expenses": { | ||||||
|  |       "expenses": "Les dépenses", | ||||||
|  |       "category": "Catégorie", | ||||||
|  |       "date": "Date", | ||||||
|  |       "amount": "Montante", | ||||||
|  |       "to_date": "À ce jour", | ||||||
|  |       "from_date": "Partir de la date", | ||||||
|  |       "date_range": "Sélectionner une plage de dates" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "settings": { | ||||||
|  |     "menu_title": { | ||||||
|  |       "account_settings": "Paramètres du compte", | ||||||
|  |       "company_information": "Informations sur la société", | ||||||
|  |       "preferences": "Préférences", | ||||||
|  |       "notifications": "Les notifications", | ||||||
|  |       "tax_types": "Types de taxe", | ||||||
|  |       "expense_category": "Catégories de dépenses", | ||||||
|  |       "update_app": "Mise à jour de l'application" | ||||||
|  |     }, | ||||||
|  |     "title": "Paramètres", | ||||||
|  |     "setting": "Paramètres | Paramètres", | ||||||
|  |     "general": "Générale", | ||||||
|  |     "language": "La langue", | ||||||
|  |     "primary_currency": "Devise principale", | ||||||
|  |     "timezone": "Fuseau horaire", | ||||||
|  |     "date_format": "Format de date", | ||||||
|  |     "currencies": { | ||||||
|  |       "title": "Monnaies", | ||||||
|  |       "currency": "Monnaie | Monnaies", | ||||||
|  |       "currencies_list": "Liste des devises", | ||||||
|  |       "select_currency": "Sélectionnez la devise", | ||||||
|  |       "name": "Nom", | ||||||
|  |       "code": "Code", | ||||||
|  |       "symbol": "symbole", | ||||||
|  |       "precision": "Précision", | ||||||
|  |       "thousand_separator": "Mille séparateur", | ||||||
|  |       "decimal_separator": "Séparateur décimal", | ||||||
|  |       "position": "Position", | ||||||
|  |       "position_of_symbol": "Position du symbole", | ||||||
|  |       "right": "Droite", | ||||||
|  |       "left": "La gauche", | ||||||
|  |       "action": "action", | ||||||
|  |       "add_currency": "Ajouter une devise" | ||||||
|  |     }, | ||||||
|  |     "mail": { | ||||||
|  |       "host": "Mail Host", | ||||||
|  |       "port": "Port mail", | ||||||
|  |       "driver": "Pilote de courrier", | ||||||
|  |       "password": "Mot de passe mail", | ||||||
|  |       "secret": "Secret", | ||||||
|  |       "mailgun_secret": "Mailgun Secret", | ||||||
|  |       "mailgun_domain": "Domaine", | ||||||
|  |       "mailgun_endpoint": "Mailgun Point Final", | ||||||
|  |       "ses_secret": "SES Secret", | ||||||
|  |       "ses_key": "SES clé", | ||||||
|  |       "from_name": "Nom de messagerie", | ||||||
|  |       "from_mail": "De ladresse mail", | ||||||
|  |       "username": "Mail Nom d'utilisateur", | ||||||
|  |       "mail_config": "Configuration du courrier", | ||||||
|  |       "encryption": "Chiffrement du courrier", | ||||||
|  |       "mail_config_desc": "Les détails ci-dessous seront utilisés pour mettre à jour l'environnement de messagerie. Aussi, vous pouvez modifier les détails à tout moment après la connexion." | ||||||
|  |     }, | ||||||
|  |     "pdf": { | ||||||
|  |       "title": "Paramètre PDF", | ||||||
|  |       "footer_text": "Pied de page texte", | ||||||
|  |       "pdf_layout": "Mise en page PDF" | ||||||
|  |     }, | ||||||
|  |     "company_info": { | ||||||
|  |       "company_info": "Information dentreprise", | ||||||
|  |       "company_name": "Nom de la compagnie", | ||||||
|  |       "company_logo": "Logo dentreprise", | ||||||
|  |       "section_description": "Informations sur votre entreprise qui figureront sur les factures, estimations et autres documents créés par Crater.", | ||||||
|  |       "phone": "Téléphone", | ||||||
|  |       "country": "Pays", | ||||||
|  |       "state": "Etat", | ||||||
|  |       "city": "Ville", | ||||||
|  |       "address": "Adresse", | ||||||
|  |       "zip": "Zip", | ||||||
|  |       "save": "sauver", | ||||||
|  |       "updated_message": "Informations sur la société mises à jour avec succès" | ||||||
|  |     }, | ||||||
|  |     "account_settings": { | ||||||
|  |       "profile_picture": "Image de profil", | ||||||
|  |       "name": "Nom", | ||||||
|  |       "email": "Email", | ||||||
|  |       "password": "Mot de passe", | ||||||
|  |       "confirm_password": "Confirmez le mot de passe", | ||||||
|  |       "account_settings": "Paramètres du compte", | ||||||
|  |       "save": "sauver", | ||||||
|  |       "section_description": "Vous pouvez mettre à jour votre nom, votre email et votre mot de passe en utilisant le formulaire ci-dessous.", | ||||||
|  |       "updated_message": "Paramètres du compte mis à jour avec succès" | ||||||
|  |     }, | ||||||
|  |     "user_profile": { | ||||||
|  |       "name": "Nom", | ||||||
|  |       "email": "Email", | ||||||
|  |       "password": "Mot de passe", | ||||||
|  |       "confirm_password": "Confirmez le mot de passe" | ||||||
|  |     }, | ||||||
|  |     "notification": { | ||||||
|  |       "title": "Notification", | ||||||
|  |       "email": "Envoyer des notifications à", | ||||||
|  |       "description": "Quelles notifications par courrier électronique souhaitez-vous recevoir lorsque quelque chose change?", | ||||||
|  |       "invoice_viewed": "Facture consultée", | ||||||
|  |       "invoice_viewed_desc": "Lorsque votre client visualise la facture envoyée via le tableau de bord du cratère.", | ||||||
|  |       "estimate_viewed": "Estimation vue", | ||||||
|  |       "estimate_viewed_desc": "Lorsque votre client visualise le devis envoyé via le tableau de bord du cratère.", | ||||||
|  |       "save": "sauver", | ||||||
|  |       "email_save_message": "Email enregistré avec succès", | ||||||
|  |       "invoice_viewed_message": "Facture consultée", | ||||||
|  |       "estimate_viewed_message": "Estimation vue", | ||||||
|  |       "please_enter_email": "S il vous plaît entrer email" | ||||||
|  |     }, | ||||||
|  |     "tax_types": { | ||||||
|  |       "title": "Types de taxe", | ||||||
|  |       "add_tax": "Ajouter une taxe", | ||||||
|  |       "description": "Vous pouvez ajouter ou supprimer des taxes à votre guise. Crater prend en charge les taxes sur les articles individuels ainsi que sur la facture.", | ||||||
|  |       "add_new_tax": "Ajouter une nouvelle taxe", | ||||||
|  |       "tax_settings": "Paramètres de taxe", | ||||||
|  |       "tax_per_item": "Taxe par article", | ||||||
|  |       "tax_name": "Nom de la taxe", | ||||||
|  |       "compound_tax": "Taxe composée", | ||||||
|  |       "percent": "Pour cent", | ||||||
|  |       "action": "action", | ||||||
|  |       "tax_setting_description": "Activez cette option si vous souhaitez ajouter des taxes à des postes de facture individuels. Par défaut, les taxes sont ajoutées directement à la facture.", | ||||||
|  |       "created_message": "Type de taxe créé avec succès", | ||||||
|  |       "updated_message": "Type de taxe mis à jour avec succès", | ||||||
|  |       "deleted_message": "Type de taxe supprimé avec succès", | ||||||
|  |       "confirm_delete": "Vous ne pourrez pas récupérer ce type de taxe", | ||||||
|  |       "already_in_use": "La taxe est déjà utilisée" | ||||||
|  |     }, | ||||||
|  |     "expense_category": { | ||||||
|  |       "title": "Catégories de dépenses", | ||||||
|  |       "action": "action", | ||||||
|  |       "description": "Des catégories sont requises pour ajouter des entrées de dépenses. Vous pouvez ajouter ou supprimer ces catégories selon vos préférences.", | ||||||
|  |       "add_new_category": "Ajouter une nouvelle catégorie", | ||||||
|  |       "category_name": "Nom de catégorie", | ||||||
|  |       "category_description": "La description", | ||||||
|  |       "created_message": "Catégorie de dépenses créée avec succès", | ||||||
|  |       "deleted_message": "La catégorie de dépenses a été supprimée avec succès", | ||||||
|  |       "updated_message": "Catégorie de dépenses mise à jour avec succès", | ||||||
|  |       "confirm_delete": "Vous ne pourrez pas récupérer cette catégorie de dépenses", | ||||||
|  |       "already_in_use": "La catégorie est déjà utilisée" | ||||||
|  |     }, | ||||||
|  |     "preferences": { | ||||||
|  |       "currency": "Devise", | ||||||
|  |       "language": "La langue", | ||||||
|  |       "time_zone": "Fuseau horaire", | ||||||
|  |       "fiscal_year": "Année financière", | ||||||
|  |       "date_format": "Format de date", | ||||||
|  |       "discount_setting": "Réglage de remise", | ||||||
|  |       "discount_per_item": "Remise par article", | ||||||
|  |       "discount_setting_description": "Activez cette option si vous souhaitez ajouter une remise à des postes de facture individuels. Par défaut, les remises sont ajoutées directement à la facture.", | ||||||
|  |       "save": "sauver", | ||||||
|  |       "preference": "Préférence | Préférences", | ||||||
|  |       "general_settings": "Préférences par défaut pour le système.", | ||||||
|  |       "updated_message": "Préférences mises à jour avec succès", | ||||||
|  |       "set_discount_per_item_message": "Jeu de remise par article", | ||||||
|  |       "select_language": "Choisir la langue", | ||||||
|  |       "select_time_zone": "sélectionnez le fuseau horaire", | ||||||
|  |       "select_date_formate": "sélectionnez Date Formate", | ||||||
|  |       "select_financial_year": "sélectionner lexercice" | ||||||
|  |     }, | ||||||
|  |     "update_app": { | ||||||
|  |       "title": "Mise à jour de l'application", | ||||||
|  |       "description": "mettre à jour la description de l'application", | ||||||
|  |       "check_update": "Vérifier les mises à jour", | ||||||
|  |       "avail_update": "Nouvelle mise à jour disponible", | ||||||
|  |       "next_version": "Version suivante", | ||||||
|  |       "update": "Mettre à jour maintenant", | ||||||
|  |       "update_progress": "Mise à jour en cours...", | ||||||
|  |       "progress_text": "Cela ne prendra que quelques minutes. S'il vous plaît ne pas actualiser l'écran ou fermer la fenêtre avant la fin de la mise à jour", | ||||||
|  |       "update_success": "App a été mis à jour! Veuillez patienter pendant le rechargement automatique de la fenêtre de votre navigateur.", | ||||||
|  |       "latest_message": "Pas de mise a jour disponible! Vous êtes sur la dernière version.", | ||||||
|  |       "current_version": "Version actuelle" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "wizard": { | ||||||
|  |     "account_info": "Information sur le compte", | ||||||
|  |     "account_info_desc": "Les détails ci-dessous seront utilisés pour créer le compte administrateur principal. Aussi, vous pouvez modifier les détails à tout moment après la connexion.", | ||||||
|  |     "name": "Nom", | ||||||
|  |     "email": "Email", | ||||||
|  |     "password": "Mot de passe", | ||||||
|  |     "confirm_password": "Confirmez le mot de passe", | ||||||
|  |     "save_cont": "Enregistrer continuer", | ||||||
|  |     "company_info": "Informations sur la société", | ||||||
|  |     "company_info_desc": "Ces informations seront affichées sur les factures. Notez que vous pouvez éditer ceci plus tard sur la page des paramètres.", | ||||||
|  |     "company_name": "Nom de la compagnie", | ||||||
|  |     "company_logo": "Logo dentreprise", | ||||||
|  |     "logo_preview": "Aperçu du logo", | ||||||
|  |     "preferences": "Préférences", | ||||||
|  |     "preferences_desc": "Préférences par défaut pour le système.", | ||||||
|  |     "country": "Pays", | ||||||
|  |     "state": "Etat", | ||||||
|  |     "city": "Ville", | ||||||
|  |     "address": "Adresse", | ||||||
|  |     "street": "Rue 1 | Rue 2", | ||||||
|  |     "phone": "Téléphone", | ||||||
|  |     "zip_code": "Code postal", | ||||||
|  |     "go_back": "Retourner", | ||||||
|  |     "currency": "Devise", | ||||||
|  |     "language": "La langue", | ||||||
|  |     "time_zone": "Fuseau horaire", | ||||||
|  |     "fiscal_year": "Année financière", | ||||||
|  |     "date_format": "Format de date", | ||||||
|  |     "from_address": "De l'adresse", | ||||||
|  |     "username": "Nom d'utilisateur", | ||||||
|  |     "next": "Suivant", | ||||||
|  |     "continue": "Continuer", | ||||||
|  |     "database": { | ||||||
|  |       "database": "URL du site et base de données", | ||||||
|  |       "connection": "Connexion à la base de données", | ||||||
|  |       "host": "Hôte de base de données", | ||||||
|  |       "port": "Port de base de données", | ||||||
|  |       "password": "Mot de passe de base de données", | ||||||
|  |       "app_url": "Application URL", | ||||||
|  |       "username": "Nom d'utilisateur de la base de données", | ||||||
|  |       "db_name": "Nom de la base de données", | ||||||
|  |       "desc": "Créez une base de données sur votre serveur et définissez les informations d'identification à l'aide du formulaire ci-dessous." | ||||||
|  |     }, | ||||||
|  |     "permissions": { | ||||||
|  |       "permissions": "Les permissions", | ||||||
|  |       "permission_confirm_title": "Es-tu sur de vouloir continuer?", | ||||||
|  |       "permission_confirm_desc": "La vérification de l\"autorisation du dossier a échoué", | ||||||
|  |       "permission_desc": "Vous trouverez ci-dessous la liste des autorisations de dossier requises pour le fonctionnement de l'application. Si la vérification des autorisations échoue, veillez à mettre à jour vos autorisations de dossier." | ||||||
|  |     }, | ||||||
|  |     "mail": { | ||||||
|  |       "host": "Mail Host", | ||||||
|  |       "port": "Port mail", | ||||||
|  |       "driver": "Pilote de courrier", | ||||||
|  |       "password": "Mot de passe mail", | ||||||
|  |       "secret": "Secret", | ||||||
|  |       "mailgun_secret": "Mailgun Secret", | ||||||
|  |       "mailgun_domain": "Domaine", | ||||||
|  |       "mailgun_endpoint": "Mailgun Point Final", | ||||||
|  |       "ses_secret": "SES Secret", | ||||||
|  |       "ses_key": "SES clé", | ||||||
|  |       "from_name": "Nom de messagerie", | ||||||
|  |       "from_mail": "De ladresse mail", | ||||||
|  |       "username": "Mail Nom d'utilisateur", | ||||||
|  |       "mail_config": "Configuration du courrier", | ||||||
|  |       "encryption": "Chiffrement du courrier", | ||||||
|  |       "mail_config_desc": "Les détails ci-dessous seront utilisés pour mettre à jour l'environnement de messagerie. Aussi, vous pouvez modifier les détails à tout moment après la connexion." | ||||||
|  |     }, | ||||||
|  |     "req": { | ||||||
|  |       "system_req": "Configuration requise", | ||||||
|  |       "php_req_version": "Php (version {version} nécessaire)", | ||||||
|  |       "check_req": "Vérifier les exigences", | ||||||
|  |       "system_req_desc": "Crater a quelques exigences de serveur. Assurez-vous que votre serveur dispose de la version PHP requise et de toutes les extensions mentionnées ci-dessous." | ||||||
|  |     }, | ||||||
|  |     "errors": { | ||||||
|  |       "migrate_failed": "Migration impossible", | ||||||
|  |       "database_variables_save_error": "Impossible de se connecter à la base de données avec les valeurs fournies.", | ||||||
|  |       "mail_variables_save_error": "La configuration du courrier électronique a échoué.", | ||||||
|  |       "connection_failed": "La connexion à la base de données a échoué" | ||||||
|  |     }, | ||||||
|  |     "success": { | ||||||
|  |       "mail_variables_save_successfully": "Email configuré avec succès", | ||||||
|  |       "database_variables_save_successfully": "Base de données configurée avec succès." | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "layout_login": { | ||||||
|  |     "copyright_crater": "Copyright @ Crater - 2019", | ||||||
|  |     "super_simple_invoicing": "Super Simple Facturation", | ||||||
|  |     "for_freelancer": "pour les pigistes et", | ||||||
|  |     "small_businesses": "Petites entreprises ", | ||||||
|  |     "crater_help": "Crater vous aide à suivre vos dépenses, à enregistrer vos paiements et à générer de belles", | ||||||
|  |     "invoices_and_estimates": "factures et devis avec possibilité de choisir plusieurs modèles." | ||||||
|  |  | ||||||
|  |   }, | ||||||
|  |   "validation": { | ||||||
|  |     "invalid_url": "URL invalide (ex: http://www.crater.com)", | ||||||
|  |     "required": "Champ requis", | ||||||
|  |     "email_incorrect": "Adresse Email incorrecte.", | ||||||
|  |     "email_does_not_exist": "L'utilisateur avec un email donné n'existe pas", | ||||||
|  |     "send_reset_link": "Envoyer le lien de réinitialisation", | ||||||
|  |     "not_yet": "Pas encore? Envoyer à nouveau", | ||||||
|  |     "password_min_length": "Le mot de passe doit contenir {nombre} caractères", | ||||||
|  |     "name_min_length": "Le nom doit avoir au moins {count} lettres.", | ||||||
|  |     "enter_valid_tax_rate": "Entrez un taux de taxe valide", | ||||||
|  |     "numbers_only": "Chiffres uniquement.", | ||||||
|  |     "characters_only": "Caractères seulement.", | ||||||
|  |     "password_incorrect": "Les mots de passe doivent être identiques", | ||||||
|  |     "password_length": "Le mot de passe doit comporter 5 caractères.", | ||||||
|  |     "qty_must_greater_than_zero": "La quantité doit être supérieure à zéro.", | ||||||
|  |     "price_greater_than_zero": "Le prix doit être supérieur à zéro.", | ||||||
|  |     "payment_greater_than_zero": "Le paiement doit être supérieur à zéro.", | ||||||
|  |     "payment_greater_than_due_amount": "Le paiement entré est plus que le montant dû de cette facture.", | ||||||
|  |     "quantity_maxlength": "La quantité ne doit pas dépasser 20 chiffres.", | ||||||
|  |     "price_maxlength": "Le prix ne doit pas dépasser 20 chiffres.", | ||||||
|  |     "price_minvalue": "Le prix doit être supérieur à 0 chiffre", | ||||||
|  |     "amount_maxlength": "Le montant ne doit pas dépasser 20 chiffres.", | ||||||
|  |     "amount_minvalue": "Le montant doit être supérieur à 0 chiffre", | ||||||
|  |     "description_maxlength": "La description ne doit pas dépasser 255 caractères.", | ||||||
|  |     "maximum_options_error": "Maximum de {max} options sélectionnées. Commencez par supprimer une option sélectionnée pour en sélectionner une autre.", | ||||||
|  |     "notes_maxlength": "Les notes ne doivent pas dépasser 255 caractères.", | ||||||
|  |     "address_maxlength": "L'adresse ne doit pas dépasser 255 caractères.", | ||||||
|  |     "ref_number_maxlength": "Le numéro de référence ne doit pas dépasser 255 caractères." | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,8 +1,8 @@ | |||||||
| import Vue from 'vue' | import Vue from 'vue' | ||||||
| import VueI18n from 'vue-i18n' | import VueI18n from 'vue-i18n' | ||||||
| import en from './en' | import en from './en.json' | ||||||
| import fr from './fr' | import fr from './fr.json' | ||||||
| import es from './es' | import es from './es.json' | ||||||
|  |  | ||||||
| Vue.use(VueI18n) | Vue.use(VueI18n) | ||||||
|  |  | ||||||
|  | |||||||
| @ -3,8 +3,8 @@ export default { | |||||||
|   phone: null, |   phone: null, | ||||||
|   address_street_1: null, |   address_street_1: null, | ||||||
|   address_street_2: null, |   address_street_2: null, | ||||||
|   city_id: null, |   city: null, | ||||||
|   state_id: null, |   state: null, | ||||||
|   country_id: null, |   country_id: null, | ||||||
|   zip: null, |   zip: null, | ||||||
|   type: null |   type: null | ||||||
|  | |||||||
| @ -119,16 +119,10 @@ | |||||||
|               </div> |               </div> | ||||||
|               <div class="form-group"> |               <div class="form-group"> | ||||||
|                 <label class="form-label">{{ $t('customers.state') }}</label> |                 <label class="form-label">{{ $t('customers.state') }}</label> | ||||||
|                 <base-select |                 <base-input | ||||||
|                   v-model="billing_state" |                   v-model="billing.state" | ||||||
|                   :options="billingStates" |                   name="billing.state" | ||||||
|                   :searchable="true" |                   type="text" | ||||||
|                   :show-labels="false" |  | ||||||
|                   :tabindex="9" |  | ||||||
|                   :disabled="isDisabledBillingState" |  | ||||||
|                   :placeholder="$t('general.select_state')" |  | ||||||
|                   label="name" |  | ||||||
|                   track-by="id" |  | ||||||
|                 /> |                 /> | ||||||
|               </div> |               </div> | ||||||
|               <div class="form-group"> |               <div class="form-group"> | ||||||
| @ -176,16 +170,10 @@ | |||||||
|               </div> |               </div> | ||||||
|               <div class="form-group"> |               <div class="form-group"> | ||||||
|                 <label class="form-label">{{ $t('customers.city') }}</label> |                 <label class="form-label">{{ $t('customers.city') }}</label> | ||||||
|                 <base-select |                 <base-input | ||||||
|                   v-model="billing_city" |                   v-model="billing.city" | ||||||
|                   :options="billingCities" |                   name="billing.city" | ||||||
|                   :searchable="true" |                   type="text" | ||||||
|                   :show-labels="false" |  | ||||||
|                   :disabled="isDisabledBillingCity" |  | ||||||
|                   :tabindex="10" |  | ||||||
|                   :placeholder="$t('general.select_city')" |  | ||||||
|                   label="name" |  | ||||||
|                   track-by="id" |  | ||||||
|                 /> |                 /> | ||||||
|               </div> |               </div> | ||||||
|               <div class="form-group"> |               <div class="form-group"> | ||||||
| @ -233,16 +221,10 @@ | |||||||
|               </div> |               </div> | ||||||
|               <div class="form-group"> |               <div class="form-group"> | ||||||
|                 <label class="form-label">{{ $t('customers.state') }}</label> |                 <label class="form-label">{{ $t('customers.state') }}</label> | ||||||
|                 <base-select |                 <base-input | ||||||
|                   v-model="shipping_state" |                   v-model="shipping.state" | ||||||
|                   :options="shippingStates" |                   name="shipping.state" | ||||||
|                   :searchable="true" |                   type="text" | ||||||
|                   :show-labels="false" |  | ||||||
|                   :tabindex="17" |  | ||||||
|                   :disabled="isDisabledShippingState" |  | ||||||
|                   :placeholder="$t('general.select_state')" |  | ||||||
|                   label="name" |  | ||||||
|                   track-by="id" |  | ||||||
|                 /> |                 /> | ||||||
|               </div> |               </div> | ||||||
|               <div class="form-group"> |               <div class="form-group"> | ||||||
| @ -290,16 +272,10 @@ | |||||||
|               </div> |               </div> | ||||||
|               <div class="form-group"> |               <div class="form-group"> | ||||||
|                 <label class="form-label">{{ $t('customers.city') }}</label> |                 <label class="form-label">{{ $t('customers.city') }}</label> | ||||||
|                 <base-select |                 <base-input | ||||||
|                   v-model="shipping_city" |                   v-model="shipping.city" | ||||||
|                   :options="shippingCities" |                   name="shipping.city" | ||||||
|                   :searchable="true" |                   type="text" | ||||||
|                   :show-labels="false" |  | ||||||
|                   :tabindex="18" |  | ||||||
|                   :disabled="isDisabledShippingCity" |  | ||||||
|                   :placeholder="$t('general.select_city')" |  | ||||||
|                   label="name" |  | ||||||
|                   track-by="id" |  | ||||||
|                 /> |                 /> | ||||||
|               </div> |               </div> | ||||||
|               <div class="form-group"> |               <div class="form-group"> | ||||||
| @ -344,7 +320,7 @@ import { mapActions, mapGetters } from 'vuex' | |||||||
| import MultiSelect from 'vue-multiselect' | import MultiSelect from 'vue-multiselect' | ||||||
| import { validationMixin } from 'vuelidate' | import { validationMixin } from 'vuelidate' | ||||||
| import AddressStub from '../../stub/address' | import AddressStub from '../../stub/address' | ||||||
| const { required, minLength, email, numeric, url, maxLength } = require('vuelidate/lib/validators') | const { required, minLength, email, url, maxLength } = require('vuelidate/lib/validators') | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   components: { MultiSelect }, |   components: { MultiSelect }, | ||||||
| @ -366,8 +342,8 @@ export default { | |||||||
|       billing: { |       billing: { | ||||||
|         name: null, |         name: null, | ||||||
|         country_id: null, |         country_id: null, | ||||||
|         state_id: null, |         state: null, | ||||||
|         city_id: null, |         city: null, | ||||||
|         phone: null, |         phone: null, | ||||||
|         zip: null, |         zip: null, | ||||||
|         address_street_1: null, |         address_street_1: null, | ||||||
| @ -377,8 +353,8 @@ export default { | |||||||
|       shipping: { |       shipping: { | ||||||
|         name: null, |         name: null, | ||||||
|         country_id: null, |         country_id: null, | ||||||
|         state_id: null, |         state: null, | ||||||
|         city_id: null, |         city: null, | ||||||
|         phone: null, |         phone: null, | ||||||
|         zip: null, |         zip: null, | ||||||
|         address_street_1: null, |         address_street_1: null, | ||||||
| @ -386,26 +362,12 @@ export default { | |||||||
|         type: 'shipping' |         type: 'shipping' | ||||||
|       }, |       }, | ||||||
|       currencyList: [], |       currencyList: [], | ||||||
|       isDisabledBillingState: true, |  | ||||||
|       isDisabledBillingCity: true, |  | ||||||
|       isDisabledShippingState: true, |  | ||||||
|       isDisabledShippingCity: true, |  | ||||||
|  |  | ||||||
|       billing_country: null, |       billing_country: null, | ||||||
|       billing_city: null, |  | ||||||
|       billing_state: null, |  | ||||||
|  |  | ||||||
|       shipping_country: null, |       shipping_country: null, | ||||||
|       shipping_city: null, |  | ||||||
|       shipping_state: null, |  | ||||||
|  |  | ||||||
|       billingCountries: [], |       billingCountries: [], | ||||||
|       billingStates: [], |       shippingCountries: [] | ||||||
|       billingCities: [], |  | ||||||
|  |  | ||||||
|       shippingCountries: [], |  | ||||||
|       shippingStates: [], |  | ||||||
|       shippingCities: [] |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   validations: { |   validations: { | ||||||
| @ -455,61 +417,13 @@ export default { | |||||||
|       if (newCountry) { |       if (newCountry) { | ||||||
|         this.billing.country_id = newCountry.id |         this.billing.country_id = newCountry.id | ||||||
|         this.isDisabledBillingState = false |         this.isDisabledBillingState = false | ||||||
|         this.billing_state = null |  | ||||||
|         this.billing_city = null |  | ||||||
|         this.fetchBillingState() |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     billing_state (newState) { |  | ||||||
|       if (newState) { |  | ||||||
|         this.billing.state_id = newState.id |  | ||||||
|         this.isDisabledBillingCity = false |  | ||||||
|         this.billing_city = null |  | ||||||
|         this.fetchBillingCities() |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|       this.billing_city = null |  | ||||||
|       this.isDisabledBillingCity = true |  | ||||||
|       return true |  | ||||||
|     }, |  | ||||||
|     billing_city (newCity) { |  | ||||||
|       if (newCity) { |  | ||||||
|         this.billing.city_id = newCity.id |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     shipping_country (newCountry) { |     shipping_country (newCountry) { | ||||||
|       if (newCountry) { |       if (newCountry) { | ||||||
|         this.shipping.country_id = newCountry.id |         this.shipping.country_id = newCountry.id | ||||||
|         this.isDisabledShippingState = false |  | ||||||
|         this.fetchShippingState() |  | ||||||
|         if (this.isCopyFromBilling) { |  | ||||||
|         return true |         return true | ||||||
|       } |       } | ||||||
|         this.shipping_state = null |  | ||||||
|         this.shipping_city = null |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     shipping_state (newState) { |  | ||||||
|       if (newState) { |  | ||||||
|         this.shipping.state_id = newState.id |  | ||||||
|         this.isDisabledShippingCity = false |  | ||||||
|         this.fetchShippingCities() |  | ||||||
|         if (this.isCopyFromBilling) { |  | ||||||
|           this.isCopyFromBilling = false |  | ||||||
|           return true |  | ||||||
|         } |  | ||||||
|         this.shipping_city = null |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|       this.shipping_city = null |  | ||||||
|       this.isDisabledShippingCity = true |  | ||||||
|       return true |  | ||||||
|     }, |  | ||||||
|     shipping_city (newCity) { |  | ||||||
|       if (newCity) { |  | ||||||
|         this.shipping.city_id = newCity.id |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   mounted () { |   mounted () { | ||||||
| @ -624,42 +538,6 @@ export default { | |||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |  | ||||||
|     async fetchBillingState () { |  | ||||||
|       let res = await window.axios.get(`/api/states/${this.billing_country.id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.billingStates = res.data.states |  | ||||||
|       } |  | ||||||
|       if (this.isEdit) { |  | ||||||
|         this.billing_state = this.billingStates.find((state) => state.id === this.billing.state_id) |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     async fetchBillingCities () { |  | ||||||
|       let res = await window.axios.get(`/api/cities/${this.billing_state.id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.billingCities = res.data.cities |  | ||||||
|       } |  | ||||||
|       if (this.isEdit) { |  | ||||||
|         this.billing_city = this.billingCities.find((city) => city.id === this.billing.city_id) |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     async fetchShippingState () { |  | ||||||
|       let res = await window.axios.get(`/api/states/${this.shipping_country.id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.shippingStates = res.data.states |  | ||||||
|       } |  | ||||||
|       if (this.isEdit) { |  | ||||||
|         this.shipping_state = this.shippingStates.find((s) => s.id === this.shipping.state_id) |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     async fetchShippingCities () { |  | ||||||
|       let res = await window.axios.get(`/api/cities/${this.shipping_state.id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.shippingCities = res.data.cities |  | ||||||
|       } |  | ||||||
|       if (this.isEdit) { |  | ||||||
|         this.shipping_city = this.shippingCities.find((c) => c.id === this.shipping.city_id) |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -46,7 +46,7 @@ | |||||||
|                       {{ selectedCustomer.billing_address.address_street_2 }} |                       {{ selectedCustomer.billing_address.address_street_2 }} | ||||||
|                     </label> |                     </label> | ||||||
|                     <label v-if="selectedCustomer.billing_address.city && selectedCustomer.billing_address.state"> |                     <label v-if="selectedCustomer.billing_address.city && selectedCustomer.billing_address.state"> | ||||||
|                       {{ selectedCustomer.billing_address.city.name }}, {{ selectedCustomer.billing_address.state.name }} {{ selectedCustomer.billing_address.zip }} |                       {{ selectedCustomer.billing_address.city }}, {{ selectedCustomer.billing_address.state }} {{ selectedCustomer.billing_address.zip }} | ||||||
|                     </label> |                     </label> | ||||||
|                     <label v-if="selectedCustomer.billing_address.country"> |                     <label v-if="selectedCustomer.billing_address.country"> | ||||||
|                       {{ selectedCustomer.billing_address.country.name }} |                       {{ selectedCustomer.billing_address.country.name }} | ||||||
| @ -71,7 +71,7 @@ | |||||||
|                       {{ selectedCustomer.shipping_address.address_street_2 }} |                       {{ selectedCustomer.shipping_address.address_street_2 }} | ||||||
|                     </label> |                     </label> | ||||||
|                     <label v-if="selectedCustomer.shipping_address.city && selectedCustomer.shipping_address"> |                     <label v-if="selectedCustomer.shipping_address.city && selectedCustomer.shipping_address"> | ||||||
|                       {{ selectedCustomer.shipping_address.city.name }}, {{ selectedCustomer.shipping_address.state.name }} {{ selectedCustomer.shipping_address.zip }} |                       {{ selectedCustomer.shipping_address.city }}, {{ selectedCustomer.shipping_address.state }} {{ selectedCustomer.shipping_address.zip }} | ||||||
|                     </label> |                     </label> | ||||||
|                     <label v-if="selectedCustomer.shipping_address.country" class="country"> |                     <label v-if="selectedCustomer.shipping_address.country" class="country"> | ||||||
|                       {{ selectedCustomer.shipping_address.country.name }} |                       {{ selectedCustomer.shipping_address.country.name }} | ||||||
|  | |||||||
| @ -36,7 +36,7 @@ | |||||||
|               <base-input |               <base-input | ||||||
|                 v-model="item.quantity" |                 v-model="item.quantity" | ||||||
|                 :invalid="$v.item.quantity.$error" |                 :invalid="$v.item.quantity.$error" | ||||||
|                 type="number" |                 type="text" | ||||||
|                 small |                 small | ||||||
|                 @keyup="updateItem" |                 @keyup="updateItem" | ||||||
|                 @input="$v.item.quantity.$touch()" |                 @input="$v.item.quantity.$touch()" | ||||||
|  | |||||||
| @ -44,7 +44,7 @@ | |||||||
|                       {{ selectedCustomer.billing_address.address_street_2 }} |                       {{ selectedCustomer.billing_address.address_street_2 }} | ||||||
|                     </label> |                     </label> | ||||||
|                     <label v-if="selectedCustomer.billing_address.city && selectedCustomer.billing_address.state"> |                     <label v-if="selectedCustomer.billing_address.city && selectedCustomer.billing_address.state"> | ||||||
|                       {{ selectedCustomer.billing_address.city.name }}, {{ selectedCustomer.billing_address.state.name }} {{ selectedCustomer.billing_address.zip }} |                       {{ selectedCustomer.billing_address.city }}, {{ selectedCustomer.billing_address.state }} {{ selectedCustomer.billing_address.zip }} | ||||||
|                     </label> |                     </label> | ||||||
|                     <label v-if="selectedCustomer.billing_address.country"> |                     <label v-if="selectedCustomer.billing_address.country"> | ||||||
|                       {{ selectedCustomer.billing_address.country.name }} |                       {{ selectedCustomer.billing_address.country.name }} | ||||||
| @ -69,7 +69,7 @@ | |||||||
|                       {{ selectedCustomer.shipping_address.address_street_2 }} |                       {{ selectedCustomer.shipping_address.address_street_2 }} | ||||||
|                     </label> |                     </label> | ||||||
|                     <label v-if="selectedCustomer.shipping_address.city && selectedCustomer.shipping_address"> |                     <label v-if="selectedCustomer.shipping_address.city && selectedCustomer.shipping_address"> | ||||||
|                       {{ selectedCustomer.shipping_address.city.name }}, {{ selectedCustomer.shipping_address.state.name }} {{ selectedCustomer.shipping_address.zip }} |                       {{ selectedCustomer.shipping_address.city }}, {{ selectedCustomer.shipping_address.state }} {{ selectedCustomer.shipping_address.zip }} | ||||||
|                     </label> |                     </label> | ||||||
|                     <label v-if="selectedCustomer.shipping_address.country" class="country"> |                     <label v-if="selectedCustomer.shipping_address.country" class="country"> | ||||||
|                       {{ selectedCustomer.shipping_address.country.name }} |                       {{ selectedCustomer.shipping_address.country.name }} | ||||||
|  | |||||||
| @ -36,7 +36,7 @@ | |||||||
|               <base-input |               <base-input | ||||||
|                 v-model="item.quantity" |                 v-model="item.quantity" | ||||||
|                 :invalid="$v.item.quantity.$error" |                 :invalid="$v.item.quantity.$error" | ||||||
|                 type="number" |                 type="text" | ||||||
|                 small |                 small | ||||||
|                 @keyup="updateItem" |                 @keyup="updateItem" | ||||||
|                 @input="$v.item.quantity.$touch()" |                 @input="$v.item.quantity.$touch()" | ||||||
|  | |||||||
| @ -286,7 +286,7 @@ export default { | |||||||
|           let request = await this.deleteInvoice(this.id) |           let request = await this.deleteInvoice(this.id) | ||||||
|           if (request.data.success) { |           if (request.data.success) { | ||||||
|             window.toastr['success'](this.$tc('invoices.deleted_message', 1)) |             window.toastr['success'](this.$tc('invoices.deleted_message', 1)) | ||||||
|             this.$router.push('/admin/invoices/') |             this.$router.push('/admin/invoices') | ||||||
|           } else if (request.data.error) { |           } else if (request.data.error) { | ||||||
|             window.toastr['error'](request.data.message) |             window.toastr['error'](request.data.message) | ||||||
|           } |           } | ||||||
|  | |||||||
| @ -183,7 +183,8 @@ export default { | |||||||
|       customerList: [], |       customerList: [], | ||||||
|       invoiceList: [], |       invoiceList: [], | ||||||
|       isLoading: false, |       isLoading: false, | ||||||
|       maxPayableAmount: Number.MAX_SAFE_INTEGER |       maxPayableAmount: Number.MAX_SAFE_INTEGER, | ||||||
|  |       isSettingInitialData: true | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   validations () { |   validations () { | ||||||
| @ -247,7 +248,12 @@ export default { | |||||||
|     customer (newValue) { |     customer (newValue) { | ||||||
|       this.formData.user_id = newValue.id |       this.formData.user_id = newValue.id | ||||||
|       if (!this.isEdit) { |       if (!this.isEdit) { | ||||||
|  |         if (this.isSettingInitialData) { | ||||||
|  |           this.isSettingInitialData = false | ||||||
|  |         } else { | ||||||
|           this.invoice = null |           this.invoice = null | ||||||
|  |           this.formData.invoice_id = null | ||||||
|  |         } | ||||||
|         this.formData.amount = 0 |         this.formData.amount = 0 | ||||||
|         this.invoiceList = [] |         this.invoiceList = [] | ||||||
|         this.fetchCustomerInvoices(newValue.id) |         this.fetchCustomerInvoices(newValue.id) | ||||||
|  | |||||||
| @ -72,37 +72,22 @@ | |||||||
|           </div> |           </div> | ||||||
|           <div class="col-md-6 mb-4"> |           <div class="col-md-6 mb-4"> | ||||||
|             <label class="input-label">{{ $tc('settings.company_info.state') }}</label> |             <label class="input-label">{{ $tc('settings.company_info.state') }}</label> | ||||||
|             <base-select |             <base-input | ||||||
|               v-model="state" |               v-model="formData.state" | ||||||
|               :options="states" |               :placeholder="$tc('settings.company_info.state')" | ||||||
|               :searchable="true" |               name="state" | ||||||
|               :disabled="isDisabledState" |               type="text" | ||||||
|               :show-labels="false" |  | ||||||
|               :placeholder="$t('general.select_state')" |  | ||||||
|               label="name" |  | ||||||
|               track-by="id" |  | ||||||
|             /> |             /> | ||||||
|           </div> |           </div> | ||||||
|           <div class="col-md-6 mb-4"> |           <div class="col-md-6 mb-4"> | ||||||
|             <label class="input-label">{{ $tc('settings.company_info.city') }}</label> |             <label class="input-label">{{ $tc('settings.company_info.city') }}</label> | ||||||
|             <base-select |             <base-input | ||||||
|               v-model="city" |               v-model="formData.city" | ||||||
|               :options="cities" |               :placeholder="$tc('settings.company_info.city')" | ||||||
|               :searchable="true" |               name="city" | ||||||
|               :show-labels="false" |               type="text" | ||||||
|               :disabled="isDisabledCity" |  | ||||||
|               :placeholder="$t('general.select_city')" |  | ||||||
|               label="name" |  | ||||||
|               track-by="id" |  | ||||||
|             /> |             /> | ||||||
|           </div> |           </div> | ||||||
|           <!-- <div class="col-md-6 mb-3"> |  | ||||||
|             <label class="input-label">Website</label> |  | ||||||
|             <base-input |  | ||||||
|               v-model="formData.website" |  | ||||||
|               placeholder="Website" |  | ||||||
|             /> |  | ||||||
|           </div> --> |  | ||||||
|           <div class="col-md-6 mb-4"> |           <div class="col-md-6 mb-4"> | ||||||
|             <label class="input-label">{{ $tc('settings.company_info.zip') }}</label> |             <label class="input-label">{{ $tc('settings.company_info.zip') }}</label> | ||||||
|             <base-input |             <base-input | ||||||
| @ -157,7 +142,7 @@ import ImageBox from '../components/ImageBox.vue' | |||||||
| import AvatarCropper from 'vue-avatar-cropper' | import AvatarCropper from 'vue-avatar-cropper' | ||||||
| import { validationMixin } from 'vuelidate' | import { validationMixin } from 'vuelidate' | ||||||
| import { mapActions } from 'vuex' | import { mapActions } from 'vuex' | ||||||
| const { required, email, numeric, maxLength } = require('vuelidate/lib/validators') | const { required, email, maxLength } = require('vuelidate/lib/validators') | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   components: { AvatarCropper, IconUpload, ImageBox }, |   components: { AvatarCropper, IconUpload, ImageBox }, | ||||||
| @ -184,20 +169,14 @@ export default { | |||||||
|         address_street_2: '', |         address_street_2: '', | ||||||
|         website: '', |         website: '', | ||||||
|         country_id: null, |         country_id: null, | ||||||
|         state_id: '', |         state: '', | ||||||
|         city_id: '' |         city: '' | ||||||
|       }, |       }, | ||||||
|       isLoading: false, |       isLoading: false, | ||||||
|       isHidden: false, |       isHidden: false, | ||||||
|       country: null, |       country: null, | ||||||
|       previewLogo: null, |       previewLogo: null, | ||||||
|       city: null, |  | ||||||
|       state: null, |  | ||||||
|       countries: [], |       countries: [], | ||||||
|       isDisabledState: true, |  | ||||||
|       isDisabledCity: true, |  | ||||||
|       states: [], |  | ||||||
|       cities: [], |  | ||||||
|       passData: [], |       passData: [], | ||||||
|       fileSendUrl: '/api/settings/company', |       fileSendUrl: '/api/settings/company', | ||||||
|       fileObject: null |       fileObject: null | ||||||
| @ -206,44 +185,9 @@ export default { | |||||||
|   watch: { |   watch: { | ||||||
|     country (newCountry) { |     country (newCountry) { | ||||||
|       this.formData.country_id = newCountry.id |       this.formData.country_id = newCountry.id | ||||||
|       if (this.formData.country_id) { |  | ||||||
|         this.isDisabledState = false |  | ||||||
|       } |  | ||||||
|       this.fetchState() |  | ||||||
|       if (this.isFetchingData) { |       if (this.isFetchingData) { | ||||||
|         return true |         return true | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       this.state = null |  | ||||||
|       this.city = null |  | ||||||
|     }, |  | ||||||
|     state (newState) { |  | ||||||
|       if (newState !== null && newState !== undefined) { |  | ||||||
|         this.formData.state_id = newState.id |  | ||||||
|         this.fetchCities() |  | ||||||
|         this.isDisabledCity = false |  | ||||||
|  |  | ||||||
|         if (this.isFetchingData) { |  | ||||||
|           this.isFetchingData = false |  | ||||||
|           return true |  | ||||||
|         } |  | ||||||
|         this.city = null |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|       // this.formData.state_id = null |  | ||||||
|       this.cities = [] |  | ||||||
|       this.city = null |  | ||||||
|       // this.formData.city_id = null |  | ||||||
|       this.isDisabledCity = true |  | ||||||
|       return true |  | ||||||
|     }, |  | ||||||
|     city (newCity) { |  | ||||||
|       if (newCity !== null && newCity !== undefined) { |  | ||||||
|         this.formData.city_id = newCity.id |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|       // this.formData.city_id = null |  | ||||||
|       // return true |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   validations: { |   validations: { | ||||||
| @ -292,9 +236,9 @@ export default { | |||||||
|       this.formData.address_street_2 = response.data.user.addresses[0].address_street_2 |       this.formData.address_street_2 = response.data.user.addresses[0].address_street_2 | ||||||
|       this.formData.zip = response.data.user.addresses[0].zip |       this.formData.zip = response.data.user.addresses[0].zip | ||||||
|       this.formData.phone = response.data.user.addresses[0].phone |       this.formData.phone = response.data.user.addresses[0].phone | ||||||
|  |       this.formData.state = response.data.user.addresses[0].state | ||||||
|  |       this.formData.city = response.data.user.addresses[0].city | ||||||
|       this.country = response.data.user.addresses[0].country |       this.country = response.data.user.addresses[0].country | ||||||
|       this.state = response.data.user.addresses[0].state |  | ||||||
|       this.city = response.data.user.addresses[0].city |  | ||||||
|       this.previewLogo = response.data.user.company.logo |       this.previewLogo = response.data.user.company.logo | ||||||
|     }, |     }, | ||||||
|     async updateCompany () { |     async updateCompany () { | ||||||
| @ -328,19 +272,6 @@ export default { | |||||||
|       if (res) { |       if (res) { | ||||||
|         this.countries = res.data.countries |         this.countries = res.data.countries | ||||||
|       } |       } | ||||||
|     }, |  | ||||||
|     async fetchState () { |  | ||||||
|       this.$v.formData.country_id.$touch() |  | ||||||
|       let res = await window.axios.get(`/api/states/${this.country.id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.states = res.data.states |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     async fetchCities () { |  | ||||||
|       let res = await window.axios.get(`/api/cities/${this.state.id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.cities = res.data.cities |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -76,14 +76,17 @@ export default { | |||||||
|         let res = await window.axios.post('/api/update', this.updateData) |         let res = await window.axios.post('/api/update', this.updateData) | ||||||
|  |  | ||||||
|         if (res.data.success) { |         if (res.data.success) { | ||||||
|  |           setTimeout(async () => { | ||||||
|             await window.axios.post('/api/update/finish', this.updateData) |             await window.axios.post('/api/update/finish', this.updateData) | ||||||
|           this.isUpdateAvailable = false |  | ||||||
|             window.toastr['success'](this.$t('settings.update_app.update_success')) |             window.toastr['success'](this.$t('settings.update_app.update_success')) | ||||||
|             this.currentVersion = this.updateData.version |             this.currentVersion = this.updateData.version | ||||||
|  |             this.isUpdateAvailable = false | ||||||
|  |  | ||||||
|             setTimeout(() => { |             setTimeout(() => { | ||||||
|               location.reload() |               location.reload() | ||||||
|             }, 2000) |             }, 2000) | ||||||
|  |           }, 1000) | ||||||
|         } else { |         } else { | ||||||
|           console.log(res.data) |           console.log(res.data) | ||||||
|           window.toastr['error'](res.data.error) |           window.toastr['error'](res.data.error) | ||||||
|  | |||||||
| @ -64,29 +64,18 @@ | |||||||
|       <div class="row"> |       <div class="row"> | ||||||
|         <div class="col-md-6"> |         <div class="col-md-6"> | ||||||
|           <label class="form-label">{{ $t('wizard.state') }}</label> |           <label class="form-label">{{ $t('wizard.state') }}</label> | ||||||
|           <base-select |           <base-input | ||||||
|             v-model="state" |             v-model="companyData.state" | ||||||
|             :options="states" |             name="state" | ||||||
|             :searchable="true" |             type="text" | ||||||
|             :show-labels="false" |  | ||||||
|             :disabled="isDisabledState" |  | ||||||
|             :placeholder="$t('general.select_state')" |  | ||||||
|             track-by="id" |  | ||||||
|             label="name" |  | ||||||
|             @input="fetchCities" |  | ||||||
|           /> |           /> | ||||||
|         </div> |         </div> | ||||||
|         <div class="col-md-6"> |         <div class="col-md-6"> | ||||||
|           <label class="form-label">{{ $t('wizard.city') }}</label> |           <label class="form-label">{{ $t('wizard.city') }}</label> | ||||||
|           <base-select |           <base-input | ||||||
|             v-model="city" |             v-model="companyData.city" | ||||||
|             :options="cities" |             name="city" | ||||||
|             :searchable="true" |             type="text" | ||||||
|             :show-labels="false" |  | ||||||
|             :disabled="isDisabledCity" |  | ||||||
|             :placeholder="$t('general.select_city')" |  | ||||||
|             track-by="id" |  | ||||||
|             label="name" |  | ||||||
|           /> |           /> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
| @ -180,8 +169,8 @@ export default { | |||||||
|         name: null, |         name: null, | ||||||
|         address_street_1: '', |         address_street_1: '', | ||||||
|         address_street_2: '', |         address_street_2: '', | ||||||
|         city_id: '', |         city: '', | ||||||
|         state_id: '', |         state: '', | ||||||
|         country_id: '', |         country_id: '', | ||||||
|         zip: '', |         zip: '', | ||||||
|         phone: '' |         phone: '' | ||||||
| @ -190,13 +179,7 @@ export default { | |||||||
|       step: 1, |       step: 1, | ||||||
|       countries: [], |       countries: [], | ||||||
|       country: null, |       country: null, | ||||||
|       states: [], |       previewLogo: null | ||||||
|       state: null, |  | ||||||
|       cities: [], |  | ||||||
|       city: null, |  | ||||||
|       previewLogo: null, |  | ||||||
|       isDisabledCity: true, |  | ||||||
|       isDisabledState: true |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   validations: { |   validations: { | ||||||
| @ -218,35 +201,6 @@ export default { | |||||||
|   watch: { |   watch: { | ||||||
|     country ({ id }) { |     country ({ id }) { | ||||||
|       this.companyData.country_id = id |       this.companyData.country_id = id | ||||||
|       this.state = null |  | ||||||
|       this.city = null |  | ||||||
|       if (id !== null && id !== undefined) { |  | ||||||
|         this.isDisabledState = false |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|       this.isDisabledState = true |  | ||||||
|       return true |  | ||||||
|     }, |  | ||||||
|     state (newState) { |  | ||||||
|       if (newState !== null && newState !== undefined) { |  | ||||||
|         this.city = null |  | ||||||
|         this.companyData.state_id = newState.id |  | ||||||
|         this.isDisabledCity = false |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|       this.companyData.state_id = null |  | ||||||
|       this.isDisabledCity = true |  | ||||||
|       this.cities = [] |  | ||||||
|       this.city = null |  | ||||||
|       this.companyData.city_id = null |  | ||||||
|       return true |  | ||||||
|     }, |  | ||||||
|     city (newCity) { |  | ||||||
|       if (newCity !== null && newCity !== undefined) { |  | ||||||
|         this.companyData.city_id = newCity.id |  | ||||||
|         return true |  | ||||||
|       } |  | ||||||
|       this.companyData.city_id = null |  | ||||||
|       return true |       return true | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
| @ -307,22 +261,6 @@ export default { | |||||||
|       if (res) { |       if (res) { | ||||||
|         this.countries = res.data.countries |         this.countries = res.data.countries | ||||||
|       } |       } | ||||||
|     }, |  | ||||||
|     async fetchState () { |  | ||||||
|       this.$v.companyData.country_id.$touch() |  | ||||||
|       let res = await window.axios.get(`/api/states/${this.country.id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.states = res.data.states |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     async fetchCities () { |  | ||||||
|       if (this.state === null || this.state === undefined) { |  | ||||||
|         return false |  | ||||||
|       } |  | ||||||
|       let res = await window.axios.get(`/api/cities/${this.state.id}`) |  | ||||||
|       if (res) { |  | ||||||
|         this.cities = res.data.cities |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ | |||||||
|             <span v-if="!$v.databaseData.app_url.required" class="text-danger"> |             <span v-if="!$v.databaseData.app_url.required" class="text-danger"> | ||||||
|               {{ $tc('validation.required') }} |               {{ $tc('validation.required') }} | ||||||
|             </span> |             </span> | ||||||
|             <span v-if="!$v.databaseData.app_url.url" class="text-danger"> |             <span v-if="!$v.databaseData.app_url.isUrl" class="text-danger"> | ||||||
|               {{ $tc('validation.invalid_url') }} |               {{ $tc('validation.invalid_url') }} | ||||||
|             </span> |             </span> | ||||||
|           </div> |           </div> | ||||||
| @ -184,7 +184,9 @@ export default { | |||||||
|       }, |       }, | ||||||
|       app_url: { |       app_url: { | ||||||
|         required, |         required, | ||||||
|         url |         isUrl (val) { | ||||||
|  |           return this.$utils.checkValidUrl(val) | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
| @ -204,10 +206,10 @@ export default { | |||||||
|         } else { |         } else { | ||||||
|           window.toastr['error'](this.$t('wizard.errors.' + response.data.error)) |           window.toastr['error'](this.$t('wizard.errors.' + response.data.error)) | ||||||
|         } |         } | ||||||
|         this.loading = false |  | ||||||
|       } catch (e) { |       } catch (e) { | ||||||
|         console.log(e.response) |  | ||||||
|         window.toastr['error'](e.response.data.message) |         window.toastr['error'](e.response.data.message) | ||||||
|  |       } finally { | ||||||
|  |         this.loading = false | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -16,12 +16,12 @@ | |||||||
|             {{$estimate->user->billingaddress->address_street_2}}<br> |             {{$estimate->user->billingaddress->address_street_2}}<br> | ||||||
|         @endif |         @endif | ||||||
|  |  | ||||||
|         @if($estimate->user->billingaddress->city && $estimate->user->billingaddress->city->name) |         @if($estimate->user->billingaddress->city && $estimate->user->billingaddress->city) | ||||||
|             {{$estimate->user->billingaddress->city->name}}, |             {{$estimate->user->billingaddress->city}}, | ||||||
|         @endif |         @endif | ||||||
|  |  | ||||||
|         @if($estimate->user->billingaddress->state && $estimate->user->billingaddress->state->name) |         @if($estimate->user->billingaddress->state && $estimate->user->billingaddress->state) | ||||||
|             {{$estimate->user->billingaddress->state->name}}. |             {{$estimate->user->billingaddress->state}}. | ||||||
|         @endif |         @endif | ||||||
|  |  | ||||||
|         @if($estimate->user->billingaddress->zip) |         @if($estimate->user->billingaddress->zip) | ||||||
|  | |||||||
| @ -12,10 +12,10 @@ | |||||||
|             {{$company_address->addresses[0]['address_street_2']}} <br> |             {{$company_address->addresses[0]['address_street_2']}} <br> | ||||||
|         @endif |         @endif | ||||||
|         @if($company_address->addresses[0]['city']) |         @if($company_address->addresses[0]['city']) | ||||||
|             {{$company_address->addresses[0]['city']->name}} |             {{$company_address->addresses[0]['city']}} | ||||||
|         @endif |         @endif | ||||||
|         @if($company_address->addresses[0]['state']) |         @if($company_address->addresses[0]['state']) | ||||||
|             {{$company_address->addresses[0]['state']->name}} |             {{$company_address->addresses[0]['state']}} | ||||||
|         @endif |         @endif | ||||||
|         @if($company_address->addresses[0]['zip']) |         @if($company_address->addresses[0]['zip']) | ||||||
|             {{$company_address->addresses[0]['zip']}} <br> |             {{$company_address->addresses[0]['zip']}} <br> | ||||||
|  | |||||||
| @ -16,12 +16,12 @@ | |||||||
|             {{$estimate->user->shippingaddress->address_street_2}}<br> |             {{$estimate->user->shippingaddress->address_street_2}}<br> | ||||||
|         @endif |         @endif | ||||||
|  |  | ||||||
|         @if($estimate->user->shippingaddress->city && $estimate->user->shippingaddress->city->name) |         @if($estimate->user->shippingaddress->city && $estimate->user->shippingaddress->city) | ||||||
|             {{$estimate->user->shippingaddress->city->name}}, |             {{$estimate->user->shippingaddress->city}}, | ||||||
|         @endif |         @endif | ||||||
|  |  | ||||||
|         @if($estimate->user->shippingaddress->state && $estimate->user->shippingaddress->state->name) |         @if($estimate->user->shippingaddress->state && $estimate->user->shippingaddress->state) | ||||||
|             {{$estimate->user->shippingaddress->state->name}}. |             {{$estimate->user->shippingaddress->state}}. | ||||||
|         @endif |         @endif | ||||||
|  |  | ||||||
|         @if($estimate->user->shippingaddress->zip) |         @if($estimate->user->shippingaddress->zip) | ||||||
|  | |||||||
| @ -14,11 +14,11 @@ | |||||||
|         @if($invoice->user->billingaddress->address_street_2) |         @if($invoice->user->billingaddress->address_street_2) | ||||||
|             {{$invoice->user->billingaddress->address_street_2}}<br> |             {{$invoice->user->billingaddress->address_street_2}}<br> | ||||||
|         @endif |         @endif | ||||||
|         @if($invoice->user->billingaddress->city && $invoice->user->billingaddress->city->name) |         @if($invoice->user->billingaddress->city && $invoice->user->billingaddress->city) | ||||||
|             {{$invoice->user->billingaddress->city->name}}, |             {{$invoice->user->billingaddress->city}}, | ||||||
|         @endif |         @endif | ||||||
|         @if($invoice->user->billingaddress->state && $invoice->user->billingaddress->state->name) |         @if($invoice->user->billingaddress->state && $invoice->user->billingaddress->state) | ||||||
|             {{$invoice->user->billingaddress->state->name}}. |             {{$invoice->user->billingaddress->state}}. | ||||||
|         @endif |         @endif | ||||||
|         @if($invoice->user->billingaddress->zip) |         @if($invoice->user->billingaddress->zip) | ||||||
|             {{$invoice->user->billingaddress->zip}}<br> |             {{$invoice->user->billingaddress->zip}}<br> | ||||||
|  | |||||||
| @ -12,10 +12,10 @@ | |||||||
|             {{$company_address->addresses[0]['address_street_2']}} <br> |             {{$company_address->addresses[0]['address_street_2']}} <br> | ||||||
|         @endif |         @endif | ||||||
|         @if($company_address->addresses[0]['city']) |         @if($company_address->addresses[0]['city']) | ||||||
|             {{$company_address->addresses[0]['city']->name}} |             {{$company_address->addresses[0]['city']}} | ||||||
|         @endif |         @endif | ||||||
|         @if($company_address->addresses[0]['state']) |         @if($company_address->addresses[0]['state']) | ||||||
|             {{$company_address->addresses[0]['state']->name}} |             {{$company_address->addresses[0]['state']}} | ||||||
|         @endif |         @endif | ||||||
|         @if($company_address->addresses[0]['zip']) |         @if($company_address->addresses[0]['zip']) | ||||||
|             {{$company_address->addresses[0]['zip']}} <br> |             {{$company_address->addresses[0]['zip']}} <br> | ||||||
|  | |||||||
| @ -16,12 +16,12 @@ | |||||||
|             {{$invoice->user->shippingaddress->address_street_2}}<br> |             {{$invoice->user->shippingaddress->address_street_2}}<br> | ||||||
|         @endif |         @endif | ||||||
|  |  | ||||||
|         @if($invoice->user->shippingaddress->city && $invoice->user->shippingaddress->city->name) |         @if($invoice->user->shippingaddress->city && $invoice->user->shippingaddress->city) | ||||||
|             {{$invoice->user->shippingaddress->city->name}}, |             {{$invoice->user->shippingaddress->city}}, | ||||||
|         @endif |         @endif | ||||||
|  |  | ||||||
|         @if($invoice->user->shippingaddress->state && $invoice->user->shippingaddress->state->name) |         @if($invoice->user->shippingaddress->state && $invoice->user->shippingaddress->state) | ||||||
|             {{$invoice->user->shippingaddress->state->name}}. |             {{$invoice->user->shippingaddress->state}}. | ||||||
|         @endif |         @endif | ||||||
|  |  | ||||||
|         @if($invoice->user->shippingaddress->zip) |         @if($invoice->user->shippingaddress->zip) | ||||||
|  | |||||||
| @ -222,7 +222,7 @@ | |||||||
|                     <table class="expenses-table"> |                     <table class="expenses-table"> | ||||||
|                         <tr> |                         <tr> | ||||||
|                             <td> |                             <td> | ||||||
|                                 <p class="expense-title">{{ $item->item->name }}</p> |                                 <p class="expense-title">{{ $item->name }}</p> | ||||||
|                             </td> |                             </td> | ||||||
|                             <td> |                             <td> | ||||||
|                                 <p class="expense-money">{!! format_money_pdf($item->total_amount) !!}</p> |                                 <p class="expense-money">{!! format_money_pdf($item->total_amount) !!}</p> | ||||||
|  | |||||||
| @ -47,11 +47,8 @@ Route::group(['prefix' => 'reports'], function () { | |||||||
|         'uses' => 'ReportController@profitLossReport' |         'uses' => 'ReportController@profitLossReport' | ||||||
|     ]); |     ]); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| }); | }); | ||||||
|  |  | ||||||
|  |  | ||||||
| Route::get('/invoices/pdf/{id}', [ | Route::get('/invoices/pdf/{id}', [ | ||||||
|     'as' => 'get.invoice.pdf', |     'as' => 'get.invoice.pdf', | ||||||
|     'uses' => 'FrontendController@getInvoicePdf' |     'uses' => 'FrontendController@getInvoicePdf' | ||||||
|  | |||||||
| @ -65,8 +65,8 @@ class CompanySettingTest extends TestCase | |||||||
|         $company = [ |         $company = [ | ||||||
|             'name' => 'XYZ', |             'name' => 'XYZ', | ||||||
|             'country_id' => 2, |             'country_id' => 2, | ||||||
|             'state_id' => 3, |             'state' => 'city', | ||||||
|             'city_id' => 4, |             'city' => 'state', | ||||||
|             'address_street_1' => 'test1', |             'address_street_1' => 'test1', | ||||||
|             'address_street_2' => 'test2', |             'address_street_2' => 'test2', | ||||||
|             'phone' => '1234567890', |             'phone' => '1234567890', | ||||||
| @ -80,8 +80,8 @@ class CompanySettingTest extends TestCase | |||||||
|         $address2 = $response->decodeResponseJson()['user']['addresses'][0]; |         $address2 = $response->decodeResponseJson()['user']['addresses'][0]; | ||||||
|         $this->assertEquals($company['name'], $company2['name']); |         $this->assertEquals($company['name'], $company2['name']); | ||||||
|         $this->assertEquals($company['country_id'], $address2['country_id']); |         $this->assertEquals($company['country_id'], $address2['country_id']); | ||||||
|         $this->assertEquals($company['state_id'], $address2['state_id']); |         $this->assertEquals($company['state'], $address2['state']); | ||||||
|         $this->assertEquals($company['city_id'], $address2['city_id']); |         $this->assertEquals($company['city'], $address2['city']); | ||||||
|         $this->assertEquals($company['address_street_1'], $address2['address_street_1']); |         $this->assertEquals($company['address_street_1'], $address2['address_street_1']); | ||||||
|         $this->assertEquals($company['address_street_2'], $address2['address_street_2']); |         $this->assertEquals($company['address_street_2'], $address2['address_street_2']); | ||||||
|         $this->assertEquals($company['phone'], $address2['phone']); |         $this->assertEquals($company['phone'], $address2['phone']); | ||||||
|  | |||||||
| @ -5,8 +5,6 @@ use Tests\TestCase; | |||||||
| use Illuminate\Foundation\Testing\WithFaker; | use Illuminate\Foundation\Testing\WithFaker; | ||||||
| use Illuminate\Foundation\Testing\RefreshDatabase; | use Illuminate\Foundation\Testing\RefreshDatabase; | ||||||
| use Crater\Country; | use Crater\Country; | ||||||
| use Crater\State; |  | ||||||
| use Crater\City; |  | ||||||
| use SettingsSeeder; | use SettingsSeeder; | ||||||
| class LocationTest extends TestCase | class LocationTest extends TestCase | ||||||
| { | { | ||||||
| @ -26,20 +24,4 @@ class LocationTest extends TestCase | |||||||
|  |  | ||||||
|         $response->assertOk(); |         $response->assertOk(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** @test */ |  | ||||||
|     public function testGetStates() |  | ||||||
|     { |  | ||||||
|         $response = $this->json('GET', 'api/states/1'); |  | ||||||
|  |  | ||||||
|         $response->assertOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** @test */ |  | ||||||
|     public function testGetCities() |  | ||||||
|     { |  | ||||||
|         $response = $this->json('GET', 'api/cities/1'); |  | ||||||
|  |  | ||||||
|         $response->assertOk(); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	