mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
Compare commits
93 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7bba576dca | |||
| 05454af593 | |||
| 74fe481ed5 | |||
| 1cd654b0cc | |||
| 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 | |||
| 3158955d00 | |||
| dbc5950294 | |||
| 00a218fe87 | |||
| 4a92469465 | |||
| cd67ebd487 | |||
| 6853d0bb57 | |||
| 9afc19268a | |||
| f6faf10d43 | |||
| b061102c23 | |||
| e8b8cd9f04 | |||
| 9f4b5e02e8 | |||
| 1c84c1f843 | |||
| 23beb5cac7 | |||
| 2fb2f1fcc0 | |||
| 7c1529f890 | |||
| 8b54b48805 | |||
| 07601a7130 | |||
| 7fd1224502 | |||
| 1d56bd9f36 | |||
| a8783cc929 | |||
| 841ff06005 | |||
| 3a54167ec7 | |||
| bc18f9b198 | |||
| 6741f9849d | |||
| 14c0f7f486 | |||
| 095f3c0b31 | |||
| f2ad8286d7 | |||
| 18ad27d513 | |||
| 06807275b9 | |||
| 2ad39bfbd6 | |||
| 9f38947fe7 | |||
| 81c1e78bed | |||
| dd0817709b | |||
| 66a1156d5c | |||
| 1be2c7122e | |||
| e9218e4d21 | |||
| 812afc2dab | |||
| 4ec34550ed | |||
| ca6ab997de | |||
| 8b05909b74 | |||
| 1e6372cbb1 | |||
| d29c343911 | |||
| f3ef51bffb |
@ -4,8 +4,6 @@ namespace Crater;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Crater\User;
|
||||
use Crater\Country;
|
||||
use Crater\State;
|
||||
use Crater\City;
|
||||
|
||||
class Address extends Model
|
||||
{
|
||||
@ -16,8 +14,8 @@ class Address extends Model
|
||||
'name',
|
||||
'address_street_1',
|
||||
'address_street_2',
|
||||
'city_id',
|
||||
'state_id',
|
||||
'city',
|
||||
'state',
|
||||
'country_id',
|
||||
'zip',
|
||||
'phone',
|
||||
@ -35,14 +33,4 @@ class Address extends Model
|
||||
{
|
||||
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;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Crater\State;
|
||||
|
||||
class Country extends Model
|
||||
{
|
||||
public function states()
|
||||
{
|
||||
return $this->hasMany(State::class);
|
||||
}
|
||||
|
||||
public function address()
|
||||
{
|
||||
return $this->hasMany(Address::class);
|
||||
|
||||
@ -24,6 +24,7 @@ class EstimateItem extends Model
|
||||
'price' => 'integer',
|
||||
'total' => 'integer',
|
||||
'discount' => 'float',
|
||||
'quantity' => 'float',
|
||||
'discount_val' => 'integer',
|
||||
'tax' => 'integer'
|
||||
];
|
||||
|
||||
@ -56,7 +56,7 @@ class CompanyController extends Controller
|
||||
|
||||
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([
|
||||
'user' => $user
|
||||
@ -75,9 +75,9 @@ class CompanyController extends Controller
|
||||
$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);
|
||||
$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([
|
||||
'user' => $user,
|
||||
@ -227,4 +227,32 @@ class CompanyController extends Controller
|
||||
'success' => true
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload the Admin Avatar to public storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function uploadAdminAvatar(Request $request)
|
||||
{
|
||||
$data = json_decode($request->admin_avatar);
|
||||
|
||||
if($data) {
|
||||
$user = auth()->user();
|
||||
|
||||
if($user) {
|
||||
$user->clearMediaCollection('admin_avatar');
|
||||
|
||||
$user->addMediaFromBase64($data->data)
|
||||
->usingFileName($data->name)
|
||||
->toMediaCollection('admin_avatar');
|
||||
}
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'user' => $user,
|
||||
'success' => true
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,8 +80,8 @@ class CustomersController extends Controller
|
||||
$newAddress->name = $address["name"];
|
||||
$newAddress->address_street_1 = $address["address_street_1"];
|
||||
$newAddress->address_street_2 = $address["address_street_2"];
|
||||
$newAddress->city_id = $address["city_id"];
|
||||
$newAddress->state_id = $address["state_id"];
|
||||
$newAddress->city = $address["city"];
|
||||
$newAddress->state = $address["state"];
|
||||
$newAddress->country_id = $address["country_id"];
|
||||
$newAddress->zip = $address["zip"];
|
||||
$newAddress->phone = $address["phone"];
|
||||
@ -112,11 +112,7 @@ class CustomersController extends Controller
|
||||
'billingAddress',
|
||||
'shippingAddress',
|
||||
'billingAddress.country',
|
||||
'billingAddress.state',
|
||||
'billingAddress.city',
|
||||
'shippingAddress.country',
|
||||
'shippingAddress.state',
|
||||
'shippingAddress.city',
|
||||
])->find($id);
|
||||
|
||||
return response()->json([
|
||||
@ -160,6 +156,7 @@ class CustomersController extends Controller
|
||||
if ($verifyEmail) {
|
||||
if ($verifyEmail->id !== $customer->id) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'error' => 'Email already in use'
|
||||
]);
|
||||
}
|
||||
@ -186,8 +183,8 @@ class CustomersController extends Controller
|
||||
$newAddress->name = $address["name"];
|
||||
$newAddress->address_street_1 = $address["address_street_1"];
|
||||
$newAddress->address_street_2 = $address["address_street_2"];
|
||||
$newAddress->city_id = $address["city_id"];
|
||||
$newAddress->state_id = $address["state_id"];
|
||||
$newAddress->city = $address["city"];
|
||||
$newAddress->state = $address["state"];
|
||||
$newAddress->country_id = $address["country_id"];
|
||||
$newAddress->zip = $address["zip"];
|
||||
$newAddress->phone = $address["phone"];
|
||||
|
||||
@ -33,10 +33,14 @@ class EnvironmentController extends Controller
|
||||
*/
|
||||
public function saveDatabaseEnvironment(DatabaseEnvironmentRequest $request)
|
||||
{
|
||||
Artisan::call('config:clear');
|
||||
Artisan::call('cache:clear');
|
||||
|
||||
$results = $this->EnvironmentManager->saveDatabaseVariables($request);
|
||||
|
||||
if(array_key_exists("success", $results)) {
|
||||
Artisan::call('config:clear');
|
||||
Artisan::call('cache:clear');
|
||||
Artisan::call('storage:link');
|
||||
Artisan::call('key:generate --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 = [
|
||||
'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 = [
|
||||
'invoice_primary_color',
|
||||
@ -262,7 +262,7 @@ class FrontendController extends Controller
|
||||
$estimateTemplate = EstimateTemplate::find($estimate->estimate_template_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();
|
||||
|
||||
if($logo) {
|
||||
@ -338,7 +338,7 @@ class FrontendController extends Controller
|
||||
|
||||
$invoiceTemplate = InvoiceTemplate::find($invoice->invoice_template_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();
|
||||
|
||||
|
||||
@ -3,8 +3,6 @@ namespace Crater\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Crater\Country;
|
||||
use Crater\State;
|
||||
use Crater\City;
|
||||
|
||||
class LocationController extends Controller
|
||||
{
|
||||
@ -14,18 +12,4 @@ class LocationController extends Controller
|
||||
'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([
|
||||
'addresses',
|
||||
'addresses.country',
|
||||
'addresses.state',
|
||||
'addresses.city',
|
||||
'company'
|
||||
])->find(1);
|
||||
|
||||
@ -99,6 +97,32 @@ class OnboardingController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function uploadAdminAvatar(Request $request)
|
||||
{
|
||||
$setting = Setting::getSetting('profile_complete');
|
||||
|
||||
if ($setting == '1' || $setting == 'COMPLETED') {
|
||||
return response()->json(['error' => 'Profile already created.']);
|
||||
}
|
||||
$data = json_decode($request->admin_avatar);
|
||||
|
||||
if($data) {
|
||||
$user = User::find($data->id);
|
||||
if($user) {
|
||||
$user->clearMediaCollection('admin_avatar');
|
||||
|
||||
$user->addMediaFromBase64($data->data)
|
||||
->usingFileName($data->name)
|
||||
->toMediaCollection('admin_avatar');
|
||||
}
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'user' => $user,
|
||||
'success' => true
|
||||
]);
|
||||
}
|
||||
|
||||
public function adminCompany(CompanyRequest $request)
|
||||
{
|
||||
$setting = Setting::getSetting('profile_complete');
|
||||
@ -130,8 +154,8 @@ class OnboardingController extends Controller
|
||||
$fields = $request->only([
|
||||
'address_street_1',
|
||||
'address_street_2',
|
||||
'city_id',
|
||||
'state_id',
|
||||
'city',
|
||||
'state',
|
||||
'country_id',
|
||||
'zip',
|
||||
'phone'
|
||||
|
||||
@ -83,8 +83,7 @@ class ReportController extends Controller
|
||||
{
|
||||
$company = Company::where('unique_hash', $hash)->first();
|
||||
|
||||
$items = InvoiceItem::with('item')
|
||||
->whereCompany($company->id)
|
||||
$items = InvoiceItem::whereCompany($company->id)
|
||||
->applyInvoiceFilters($request->only(['from_date', 'to_date']))
|
||||
->itemAttributes()
|
||||
->get();
|
||||
|
||||
@ -36,7 +36,6 @@ class CustomerRequest extends FormRequest
|
||||
'name' => 'required',
|
||||
'addresses.*.address_street_1' => 'max:255',
|
||||
'addresses.*.address_street_2' => 'max:255',
|
||||
'email' => 'email|nullable|unique:users,email,'.$this->id
|
||||
];
|
||||
break;
|
||||
default:
|
||||
|
||||
@ -25,11 +25,11 @@ class DatabaseEnvironmentRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'app_url' => 'required|url',
|
||||
'database_connection' => 'required|string|max:50',
|
||||
'database_hostname' => 'required|string|max:50',
|
||||
'database_connection' => 'required|string',
|
||||
'database_hostname' => 'required|string',
|
||||
'database_port' => 'required|numeric',
|
||||
'database_name' => 'required|string|max:50',
|
||||
'database_username' => 'required|string|max:50',
|
||||
'database_name' => 'required|string',
|
||||
'database_username' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,55 +26,55 @@ class MailEnvironmentRequest extends FormRequest
|
||||
switch ($this->get('mail_driver')) {
|
||||
case 'smtp':
|
||||
return [
|
||||
'mail_driver' => 'required|string|max:50',
|
||||
'mail_host' => 'required|string|max:50',
|
||||
'mail_port' => 'required|max:50',
|
||||
'mail_driver' => 'required|string',
|
||||
'mail_host' => 'required|string',
|
||||
'mail_port' => 'required',
|
||||
'mail_username' => 'required|string',
|
||||
'mail_password' => 'required|string',
|
||||
'mail_encryption' => 'required|string|max:50',
|
||||
'from_name' => 'required|string|max:50',
|
||||
'from_mail' => 'required|string|max:50',
|
||||
'mail_encryption' => 'required|string',
|
||||
'from_name' => 'required|string',
|
||||
'from_mail' => 'required|string',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'mailgun':
|
||||
return [
|
||||
'mail_driver' => 'required|string|max:50',
|
||||
'mail_host' => 'required|string|max:50',
|
||||
'mail_port' => 'required|max:50',
|
||||
'mail_driver' => 'required|string',
|
||||
'mail_host' => 'required|string',
|
||||
'mail_port' => 'required',
|
||||
'mail_mailgun_domain' => 'required|string',
|
||||
'mail_mailgun_secret' => 'required|string',
|
||||
'mail_mailgun_endpoint' => 'required|string',
|
||||
'mail_encryption' => 'required|string|max:50',
|
||||
'from_name' => 'required|string|max:50',
|
||||
'from_mail' => 'required|string|max:50',
|
||||
'mail_encryption' => 'required|string',
|
||||
'from_name' => 'required|string',
|
||||
'from_mail' => 'required|string',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'ses':
|
||||
return [
|
||||
'mail_driver' => 'required|string|max:50',
|
||||
'mail_host' => 'required|string|max:50',
|
||||
'mail_port' => 'required|max:50',
|
||||
'mail_driver' => 'required|string',
|
||||
'mail_host' => 'required|string',
|
||||
'mail_port' => 'required',
|
||||
'mail_ses_key' => 'required|string',
|
||||
'mail_ses_secret' => 'required|string',
|
||||
'mail_encryption' => 'required|string|max:50',
|
||||
'from_name' => 'required|string|max:50',
|
||||
'from_mail' => 'required|string|max:50',
|
||||
'mail_encryption' => 'required|string',
|
||||
'from_name' => 'required|string',
|
||||
'from_mail' => 'required|string',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'mail':
|
||||
return [
|
||||
'from_name' => 'required|string|max:50',
|
||||
'from_mail' => 'required|string|max:50',
|
||||
'from_name' => 'required|string',
|
||||
'from_mail' => 'required|string',
|
||||
];
|
||||
break;
|
||||
|
||||
case 'sendmail':
|
||||
return [
|
||||
'from_name' => 'required|string|max:50',
|
||||
'from_mail' => 'required|string|max:50',
|
||||
'from_name' => 'required|string',
|
||||
'from_mail' => 'required|string',
|
||||
];
|
||||
break;
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ class Invoice extends Model
|
||||
// So the substr returns this 000001
|
||||
|
||||
// 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.
|
||||
|
||||
return sprintf('%06d', intval($number) + 1);
|
||||
|
||||
@ -30,6 +30,7 @@ class InvoiceItem extends Model
|
||||
'price' => 'integer',
|
||||
'total' => 'integer',
|
||||
'discount' => 'float',
|
||||
'quantity' => 'float',
|
||||
'discount_val' => 'integer',
|
||||
'tax' => 'integer'
|
||||
];
|
||||
@ -78,7 +79,8 @@ class InvoiceItem extends Model
|
||||
public function scopeItemAttributes($query)
|
||||
{
|
||||
$query->select(
|
||||
DB::raw('sum(quantity) as total_quantity, sum(total) as total_amount, item_id')
|
||||
)->groupBy('item_id');
|
||||
DB::raw('sum(quantity) as total_quantity, sum(total) as total_amount, invoice_items.name')
|
||||
)->groupBy('invoice_items.name');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,10 +12,10 @@ class Listener
|
||||
* @param $event
|
||||
* @return boolean
|
||||
*/
|
||||
protected function check($event)
|
||||
protected function isListenerFired($event)
|
||||
{
|
||||
// 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;
|
||||
}
|
||||
|
||||
|
||||
115
app/Listeners/Updates/v1/Version110.php
Normal file
115
app/Listeners/Updates/v1/Version110.php
Normal file
@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
namespace Crater\Listeners\Updates\v1;
|
||||
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Crater\Events\UpdateFinished;
|
||||
use Crater\Listeners\Updates\Listener;
|
||||
use Crater\Setting;
|
||||
use Crater\Currency;
|
||||
|
||||
class Version110 extends Listener
|
||||
{
|
||||
const VERSION = '1.1.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;
|
||||
}
|
||||
|
||||
// Add currencies
|
||||
$this->addCurrencies();
|
||||
|
||||
// Update Crater app version
|
||||
Setting::setSetting('version', static::VERSION);
|
||||
}
|
||||
|
||||
private function addCurrencies() {
|
||||
|
||||
$currencies = [
|
||||
'13' => [
|
||||
'symbol' => 'S$'
|
||||
],
|
||||
'16' => [
|
||||
'symbol' => '₫'
|
||||
],
|
||||
'17' => [
|
||||
'symbol' => 'Fr.'
|
||||
],
|
||||
'21' => [
|
||||
'symbol' => '฿'
|
||||
],
|
||||
'22' => [
|
||||
'symbol' => '₦'
|
||||
],
|
||||
'26' => [
|
||||
'symbol' => 'HK$'
|
||||
],
|
||||
'35' => [
|
||||
'symbol' => 'NAƒ'
|
||||
],
|
||||
'38' => [
|
||||
'symbol' => 'GH₵'
|
||||
],
|
||||
'39' => [
|
||||
'symbol' => 'Лв.'
|
||||
],
|
||||
'42' => [
|
||||
'symbol' => 'RON'
|
||||
],
|
||||
'44' => [
|
||||
'symbol' => 'SِAR'
|
||||
],
|
||||
'46' => [
|
||||
'symbol' => 'Rf'
|
||||
],
|
||||
'47' => [
|
||||
'symbol' => '₡'
|
||||
],
|
||||
'54' => [
|
||||
'symbol' => 'د.ت'
|
||||
],
|
||||
'55' => [
|
||||
'symbol' => '₽'
|
||||
],
|
||||
'57' => [
|
||||
'symbol' => 'ر.ع.'
|
||||
],
|
||||
'58' => [
|
||||
'symbol' => '₴'
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
foreach ($currencies as $key => $currency) {
|
||||
Currency::updateOrCreate(['id' => $key], $currency);
|
||||
}
|
||||
|
||||
Currency::create([
|
||||
'name' => 'Kuwaiti Dinar',
|
||||
'code' => 'KWD',
|
||||
'symbol' => 'KWD ',
|
||||
'precision' => '3',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
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();
|
||||
});
|
||||
}
|
||||
}
|
||||
40
app/Listeners/Updates/v2/Version202.php
Normal file
40
app/Listeners/Updates/v2/Version202.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace Crater\Listeners\Updates\v2;
|
||||
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Crater\Events\UpdateFinished;
|
||||
use Crater\Listeners\Updates\Listener;
|
||||
use Crater\Setting;
|
||||
|
||||
class Version202 extends Listener
|
||||
{
|
||||
const VERSION = '2.0.2';
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
// Update Crater app version
|
||||
Setting::setSetting('version', static::VERSION);
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,10 @@ use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvi
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
|
||||
use Crater\Events\UpdateFinished;
|
||||
use Crater\Listeners\Updates\v1\Version110;
|
||||
use Crater\Listeners\Updates\v2\Version200;
|
||||
use Crater\Listeners\Updates\v2\Version201;
|
||||
use Crater\Listeners\Updates\v2\Version202;
|
||||
|
||||
class EventServiceProvider extends ServiceProvider
|
||||
{
|
||||
@ -15,6 +19,10 @@ class EventServiceProvider extends ServiceProvider
|
||||
*/
|
||||
protected $listen = [
|
||||
UpdateFinished::class=> [
|
||||
Version110::class,
|
||||
Version200::class,
|
||||
Version201::class,
|
||||
Version202::class,
|
||||
],
|
||||
Registered::class => [
|
||||
SendEmailVerificationNotification::class,
|
||||
|
||||
@ -48,17 +48,21 @@ class EnvironmentManager
|
||||
'DB_USERNAME='.$request->database_username."\n".
|
||||
'DB_PASSWORD='.$request->database_password."\n\n";
|
||||
|
||||
if (! $this->checkDatabaseConnection($request)) {
|
||||
try {
|
||||
|
||||
return [
|
||||
'error' => 'connection_failed'
|
||||
];
|
||||
} else {
|
||||
if(count(DB::connection()->select('SHOW TABLES'))) {
|
||||
$this->checkDatabaseConnection($request);
|
||||
|
||||
if(\Schema::hasTable('users') ) {
|
||||
return [
|
||||
'error' => 'database_should_be_empty'
|
||||
];
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
|
||||
return [
|
||||
'error' => $e->getMessage()
|
||||
];
|
||||
}
|
||||
|
||||
try {
|
||||
@ -118,8 +122,6 @@ class EnvironmentManager
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
} catch (Exception $e) {
|
||||
return [
|
||||
'error' => 'mail_variables_save_error'
|
||||
@ -316,12 +318,6 @@ class EnvironmentManager
|
||||
],
|
||||
]);
|
||||
|
||||
try {
|
||||
DB::connection()->getPdo();
|
||||
|
||||
return true;
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
return DB::connection()->getPdo();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
12
app/User.php
12
app/User.php
@ -51,7 +51,8 @@ class User extends Authenticatable implements HasMedia
|
||||
];
|
||||
|
||||
protected $appends = [
|
||||
'formattedCreatedAt'
|
||||
'formattedCreatedAt',
|
||||
'avatar'
|
||||
];
|
||||
|
||||
/**
|
||||
@ -244,4 +245,13 @@ class User extends Authenticatable implements HasMedia
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getAvatarAttribute()
|
||||
{
|
||||
$avatar = $this->getMedia('admin_avatar')->first();
|
||||
if ($avatar) {
|
||||
return asset($avatar->getUrl());
|
||||
}
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
"require": {
|
||||
"php": "^7.2",
|
||||
"barryvdh/laravel-dompdf": "^0.8.1",
|
||||
"doctrine/dbal": "^2.10",
|
||||
"fideloper/proxy": "^4.0",
|
||||
"guzzlehttp/guzzle": "^6.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",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "2a5e8d91a2be3144e2812dd708dc14b7",
|
||||
"content-hash": "e7cf4f0a8e1e7d60cc72b34ed4c730ce",
|
||||
"packages": [
|
||||
{
|
||||
"name": "barryvdh/laravel-dompdf",
|
||||
@ -158,6 +158,247 @@
|
||||
"description": "implementation of xdg base directory specification for php",
|
||||
"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",
|
||||
"version": "v1.3.0",
|
||||
@ -5307,247 +5548,6 @@
|
||||
],
|
||||
"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",
|
||||
"version": "1.2.0",
|
||||
|
||||
@ -4,11 +4,11 @@ return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Crater Requirements
|
||||
| Crater Configuration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
*/
|
||||
|
||||
'version' => '1.0.0',
|
||||
'version' => '2.0.2',
|
||||
|
||||
];
|
||||
|
||||
@ -51,7 +51,7 @@ return [
|
||||
'collation' => 'utf8_unicode_ci',
|
||||
'prefix' => '',
|
||||
'prefix_indexes' => true,
|
||||
'strict' => true,
|
||||
'strict' => false,
|
||||
'engine' => null,
|
||||
],
|
||||
|
||||
|
||||
@ -10,9 +10,9 @@ $factory->define(Address::class, function (Faker $faker) {
|
||||
'name' => $faker->name,
|
||||
'address_street_1' => $faker->streetAddress,
|
||||
'address_street_2' => $faker->streetAddress,
|
||||
'city_id' => 5909,
|
||||
'state_id' => 42,
|
||||
'country_id' => 1,
|
||||
'city' => $faker->city,
|
||||
'state' => $faker->state,
|
||||
'country_id' => 231,
|
||||
'zip' => $faker->postcode,
|
||||
'phone' => $faker->phoneNumber,
|
||||
'fax' => $faker->phoneNumber,
|
||||
|
||||
@ -25,7 +25,7 @@ class CreateInvoicesTable extends Migration
|
||||
$table->string('discount_per_item');
|
||||
$table->text('notes')->nullable();
|
||||
$table->string('discount_type')->nullable();
|
||||
$table->unsignedBigInteger('discount')->nullable();
|
||||
$table->decimal('discount', 15, 2)->nullable();
|
||||
$table->unsignedBigInteger('discount_val')->nullable();
|
||||
$table->unsignedBigInteger('sub_total');
|
||||
$table->unsignedBigInteger('total');
|
||||
|
||||
@ -18,10 +18,10 @@ class CreateInvoiceItemsTable extends Migration
|
||||
$table->string('name');
|
||||
$table->string('description')->nullable();
|
||||
$table->string('discount_type');
|
||||
$table->unsignedBigInteger('quantity');
|
||||
$table->unsignedBigInteger('price');
|
||||
$table->decimal('quantity', 15, 2);
|
||||
$table->decimal('discount', 15, 2)->nullable();
|
||||
$table->unsignedBigInteger('discount_val');
|
||||
$table->unsignedBigInteger('discount');
|
||||
$table->unsignedBigInteger('tax');
|
||||
$table->unsignedBigInteger('total');
|
||||
$table->integer('invoice_id')->unsigned();
|
||||
|
||||
@ -23,8 +23,8 @@ class CreateEstimatesTable extends Migration
|
||||
$table->string('tax_per_item');
|
||||
$table->string('discount_per_item');
|
||||
$table->string('notes')->nullable();
|
||||
$table->decimal('discount', 15, 2)->nullable();
|
||||
$table->string('discount_type')->nullable();
|
||||
$table->unsignedBigInteger('discount')->nullable();
|
||||
$table->unsignedBigInteger('discount_val')->nullable();
|
||||
$table->unsignedBigInteger('sub_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('description')->nullable();
|
||||
$table->string('discount_type');
|
||||
$table->unsignedBigInteger('quantity');
|
||||
$table->unsignedBigInteger('discount');
|
||||
$table->unsignedBigInteger('discount_val');
|
||||
$table->decimal('quantity', 15, 2);
|
||||
$table->decimal('discount', 15, 2)->nullable();
|
||||
$table->unsignedBigInteger('discount_val')->nullable();
|
||||
$table->unsignedBigInteger('price');
|
||||
$table->unsignedBigInteger('tax');
|
||||
$table->unsignedBigInteger('total');
|
||||
|
||||
@ -18,10 +18,8 @@ class CreateAddressesTable extends Migration
|
||||
$table->string('name')->nullable();
|
||||
$table->string('address_street_1')->nullable();
|
||||
$table->string('address_street_2')->nullable();
|
||||
$table->integer('city_id')->unsigned()->nullable();
|
||||
$table->foreign('city_id')->references('id')->on('cities');
|
||||
$table->integer('state_id')->unsigned()->nullable();
|
||||
$table->foreign('state_id')->references('id')->on('states');
|
||||
$table->string('city')->nullable();
|
||||
$table->string('state')->nullable();
|
||||
$table->integer('country_id')->unsigned()->nullable();
|
||||
$table->foreign('country_id')->references('id')->on('countries');
|
||||
$table->string('zip')->nullable();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -122,7 +122,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Singapore Dollar',
|
||||
'code' => 'SGD',
|
||||
'symbol' => '',
|
||||
'symbol' => 'S$',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -147,7 +147,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Vietnamese Dong',
|
||||
'code' => 'VND',
|
||||
'symbol' => '',
|
||||
'symbol' => '₫',
|
||||
'precision' => '0',
|
||||
'thousand_separator' => '.',
|
||||
'decimal_separator' => ','
|
||||
@ -155,7 +155,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Swiss Franc',
|
||||
'code' => 'CHF',
|
||||
'symbol' => '',
|
||||
'symbol' => 'Fr.',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => '\'',
|
||||
'decimal_separator' => '.'
|
||||
@ -187,7 +187,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Thai Baht',
|
||||
'code' => 'THB',
|
||||
'symbol' => '',
|
||||
'symbol' => '฿',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -195,7 +195,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Nigerian Naira',
|
||||
'code' => 'NGN',
|
||||
'symbol' => '',
|
||||
'symbol' => '₦',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -227,7 +227,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Hong Kong Dollar',
|
||||
'code' => 'HKD',
|
||||
'symbol' => '',
|
||||
'symbol' => 'HK$',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -299,7 +299,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Netherlands Antillean Guilder',
|
||||
'code' => 'ANG',
|
||||
'symbol' => '',
|
||||
'symbol' => 'NAƒ',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => '.',
|
||||
'decimal_separator' => ','
|
||||
@ -323,7 +323,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Ghanaian Cedi',
|
||||
'code' => 'GHS',
|
||||
'symbol' => '',
|
||||
'symbol' => 'GH₵',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -331,7 +331,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Bulgarian Lev',
|
||||
'code' => 'BGN',
|
||||
'symbol' => '',
|
||||
'symbol' => 'Лв.',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ' ',
|
||||
'decimal_separator' => '.'
|
||||
@ -355,7 +355,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Romanian New Leu',
|
||||
'code' => 'RON',
|
||||
'symbol' => '',
|
||||
'symbol' => 'RON',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -371,7 +371,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Saudi Riyal',
|
||||
'code' => 'SAR',
|
||||
'symbol' => '',
|
||||
'symbol' => 'SِAR',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -387,7 +387,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Maldivian Rufiyaa',
|
||||
'code' => 'MVR',
|
||||
'symbol' => '',
|
||||
'symbol' => 'Rf',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -395,7 +395,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Costa Rican Colón',
|
||||
'code' => 'CRC',
|
||||
'symbol' => '',
|
||||
'symbol' => '₡',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -454,7 +454,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Tunisian Dinar',
|
||||
'code' => 'TND',
|
||||
'symbol' => '',
|
||||
'symbol' => 'د.ت',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -462,7 +462,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Russian Ruble',
|
||||
'code' => 'RUB',
|
||||
'symbol' => '',
|
||||
'symbol' => '₽',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -479,7 +479,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Omani Rial',
|
||||
'code' => 'OMR',
|
||||
'symbol' => '',
|
||||
'symbol' => 'ر.ع.',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
@ -487,7 +487,7 @@ class CurrenciesTableSeeder extends Seeder
|
||||
[
|
||||
'name' => 'Ukrainian Hryvnia',
|
||||
'code' => 'UAH',
|
||||
'symbol' => '',
|
||||
'symbol' => '₴',
|
||||
'precision' => '2',
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.'
|
||||
|
||||
@ -14,8 +14,6 @@ class DatabaseSeeder extends Seeder
|
||||
$this->call(CurrenciesTableSeeder::class);
|
||||
$this->call(RoleSeeder::class);
|
||||
$this->call(CountriesTableSeeder::class);
|
||||
$this->call(StatesTableSeeder::class);
|
||||
$this->call(CitiesTableSeeder::class);
|
||||
$this->call(EstimateTemplateSeeder::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
BIN
public/images/default-avatar.jpg
Normal file
BIN
public/images/default-avatar.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
@ -1,4 +1,4 @@
|
||||
{
|
||||
"/assets/js/app.js": "/assets/js/app.js?id=0de16e5183b0d24fd95d",
|
||||
"/assets/css/crater.css": "/assets/css/crater.css?id=361d275866b6299acb36"
|
||||
"/assets/js/app.js": "/assets/js/app.js?id=36ab3529ebffd4f0624b",
|
||||
"/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)
|
||||
5. [Roadmap](#roadmap)
|
||||
6. [Credits](#credits)
|
||||
7. [License](#license)
|
||||
7. [Help us translate](#translate)
|
||||
8. [License](#license)
|
||||
|
||||
## Documentation
|
||||
|
||||
@ -32,7 +33,7 @@ Web Application is made using Laravel & VueJS while the Mobile Apps are built us
|
||||
- [Source](https://github.com/bytefury/crater-mobile)
|
||||
|
||||
## Discord
|
||||
Join the Crater discord server to discuss:
|
||||
Join the Crater discord server to discuss:
|
||||
[Invite Link](https://discord.gg/nyTstm6)
|
||||
|
||||
## Roadmap
|
||||
@ -59,6 +60,9 @@ Join the Crater discord server to discuss:
|
||||
## Credits
|
||||
Crater is a product of [Bytefury](https://bytefury.com)
|
||||
|
||||
## Translate
|
||||
Help us translate on [Transifex](https://www.transifex.com/bytefury/crater-invoice)
|
||||
|
||||
## License
|
||||
Crater is released under the Attribution Assurance License.
|
||||
See [LICENSE](LICENSE) for details.
|
||||
|
||||
@ -163,15 +163,10 @@
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label input-label">{{ $t('customers.state') }}</label>
|
||||
<div class="col-sm-7">
|
||||
<base-select
|
||||
v-model="billingState"
|
||||
:options="billingStates"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:placeholder="$t('general.select_state')"
|
||||
:disabled="isDisabledBillingState"
|
||||
track-by="id"
|
||||
label="name"
|
||||
<base-input
|
||||
v-model="billing.state"
|
||||
type="text"
|
||||
name="billingState"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -179,29 +174,14 @@
|
||||
<div class="form-group row">
|
||||
<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"
|
||||
<base-input
|
||||
v-model="billing.city"
|
||||
type="text"
|
||||
name="billingCity"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label">Zip Code</label>
|
||||
<div class="col-sm-7">
|
||||
<base-input
|
||||
v-model="billing.zip"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label input-label">{{ $t('customers.zip_code') }}</label>
|
||||
<div class="col-sm-7">
|
||||
@ -294,15 +274,10 @@
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label input-label">{{ $t('customers.state') }}</label>
|
||||
<div class="col-sm-7">
|
||||
<base-select
|
||||
v-model="shippingState"
|
||||
:options="shippingStates"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:placeholder="$t('general.select_state')"
|
||||
:disabled="isDisabledShippingState"
|
||||
track-by="id"
|
||||
label="name"
|
||||
<base-input
|
||||
v-model="shipping.state"
|
||||
type="text"
|
||||
name="shippingState"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -310,15 +285,10 @@
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-4 col-form-label input-label">{{ $t('customers.city') }}</label>
|
||||
<div class="col-sm-7">
|
||||
<base-select
|
||||
v-model="shippingCity"
|
||||
:options="shippingCities"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:placeholder="$t('general.select_city')"
|
||||
:disabled="isDisabledShippingCity"
|
||||
track-by="id"
|
||||
label="name"
|
||||
<base-input
|
||||
v-model="shipping.city"
|
||||
type="text"
|
||||
name="shippingCity"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -372,16 +342,8 @@ export default {
|
||||
return {
|
||||
isLoading: false,
|
||||
countryList: [],
|
||||
billingStates: [],
|
||||
billingCities: [],
|
||||
billingCountry: null,
|
||||
billingState: null,
|
||||
billingCity: null,
|
||||
shippingStates: [],
|
||||
shippingCities: [],
|
||||
shippingCountry: null,
|
||||
shippingState: null,
|
||||
shippingCity: null,
|
||||
isCopyFromBilling: false,
|
||||
currencyList: [],
|
||||
currency: '',
|
||||
@ -442,61 +404,14 @@ export default {
|
||||
billingCountry () {
|
||||
if (this.billingCountry) {
|
||||
this.billing.country_id = this.billingCountry.id
|
||||
this.isDisabledBillingState = false
|
||||
this.fetchBillingStates(this.billingCountry.id)
|
||||
this.billingState = null
|
||||
this.billingCity = null
|
||||
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 () {
|
||||
if (this.shippingCountry) {
|
||||
this.shipping.country_id = this.shippingCountry.id
|
||||
this.isDisabledShippingState = false
|
||||
this.fetchShippingStates(this.shippingCountry.id)
|
||||
if (this.isCopyFromBilling) {
|
||||
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 () {
|
||||
@ -529,16 +444,8 @@ export default {
|
||||
addresses: []
|
||||
}
|
||||
|
||||
this.billingStates = []
|
||||
this.billingCities = []
|
||||
this.billingCountry = null
|
||||
this.billingState = null
|
||||
this.billingCity = null
|
||||
this.shippingStates = []
|
||||
this.shippingCities = []
|
||||
this.shippingCountry = null
|
||||
this.shippingState = null
|
||||
this.shippingCity = null
|
||||
|
||||
this.billing = {...AddressStub}
|
||||
this.shipping = {...AddressStub}
|
||||
@ -553,13 +460,9 @@ export default {
|
||||
this.isCopyFromBilling = true
|
||||
this.shipping = {...this.billing, type: 'shipping'}
|
||||
this.shippingCountry = this.billingCountry
|
||||
this.shippingState = this.billingState
|
||||
this.shippingCity = this.billingCity
|
||||
} else {
|
||||
this.shipping = {...AddressStub, type: 'shipping'}
|
||||
this.shippingCountry = null
|
||||
this.shippingState = null
|
||||
this.shippingCity = null
|
||||
}
|
||||
},
|
||||
async loadData () {
|
||||
@ -633,30 +536,6 @@ export default {
|
||||
if (res) {
|
||||
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) {
|
||||
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,818 +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: {
|
||||
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 successfully',
|
||||
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_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,812 +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: {
|
||||
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 se actualizó correctamente',
|
||||
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_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,815 +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: {
|
||||
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: "L'application a été mise à jour avec succès",
|
||||
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_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 VueI18n from 'vue-i18n'
|
||||
import en from './en'
|
||||
import fr from './fr'
|
||||
import es from './es'
|
||||
import en from './en.json'
|
||||
import fr from './fr.json'
|
||||
import es from './es.json'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
|
||||
@ -36,7 +36,9 @@ export const addCustomer = ({ commit, dispatch, state }, data) => {
|
||||
export const updateCustomer = ({ commit, dispatch, state }, data) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
window.axios.put(`/api/customers/${data.id}`, data).then((response) => {
|
||||
commit(types.UPDATE_CUSTOMER, response.data)
|
||||
if(response.data.success){
|
||||
commit(types.UPDATE_CUSTOMER, response.data)
|
||||
}
|
||||
resolve(response)
|
||||
}).catch((err) => {
|
||||
reject(err)
|
||||
|
||||
@ -12,11 +12,7 @@ export const loadData = ({ commit, dispatch, state }, id) => {
|
||||
|
||||
export const editCompany = ({ commit, dispatch, state }, data) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
window.axios.post('/api/settings/company', data, {
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
}).then((response) => {
|
||||
window.axios.post('/api/settings/company', data).then((response) => {
|
||||
// commit(types.UPDATE_ITEM, response.data)
|
||||
resolve(response)
|
||||
}).catch((err) => {
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
// import * as types from './mutation-types'
|
||||
import * as types from './mutation-types'
|
||||
|
||||
export const loadData = ({ commit, dispatch, state }, id) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
window.axios.get(`/api/settings/profile`).then((response) => {
|
||||
commit(types.SET_USER, response.data)
|
||||
resolve(response)
|
||||
}).catch((err) => {
|
||||
reject(err)
|
||||
@ -13,7 +14,29 @@ export const loadData = ({ commit, dispatch, state }, id) => {
|
||||
export const editUser = ({ commit, dispatch, state }, data) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
window.axios.put('/api/settings/profile', data).then((response) => {
|
||||
// commit(types.UPDATE_USER, response.data)
|
||||
commit(types.UPDATE_USER, response.data)
|
||||
resolve(response)
|
||||
}).catch((err) => {
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export const uploadOnboardAvatar = ({ commit, dispatch, state }, data) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
window.axios.post(`/api/admin/profile/upload-avatar`, data).then((response) => {
|
||||
commit(types.UPDATE_USER, response.data.user)
|
||||
resolve(response)
|
||||
}).catch((err) => {
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export const uploadAvatar = ({ commit, dispatch, state }, data) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
window.axios.post('/api/settings/profile/upload-avatar', data).then((response) => {
|
||||
commit(types.UPDATE_USER, response.data.user)
|
||||
resolve(response)
|
||||
}).catch((err) => {
|
||||
reject(err)
|
||||
|
||||
@ -1,2 +1,3 @@
|
||||
export const SET_USER = 'SET_USER'
|
||||
export const UPDATE_USER = 'UPDATE_USER'
|
||||
export const UPDATE_USER_AVATAR = 'UPDATE_USER_AVATAR'
|
||||
|
||||
@ -2,10 +2,14 @@ import * as types from './mutation-types'
|
||||
|
||||
export default {
|
||||
[types.SET_USER] (state, data) {
|
||||
state.user = data.user
|
||||
state.user = data
|
||||
},
|
||||
|
||||
[types.UPDATE_USER] (state, data) {
|
||||
state.user = data
|
||||
},
|
||||
|
||||
[types.UPDATE_USER_AVATAR] (state, data) {
|
||||
state.user.avatar = data.avatar
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,8 +3,8 @@ export default {
|
||||
phone: null,
|
||||
address_street_1: null,
|
||||
address_street_2: null,
|
||||
city_id: null,
|
||||
state_id: null,
|
||||
city: null,
|
||||
state: null,
|
||||
country_id: null,
|
||||
zip: null,
|
||||
type: null
|
||||
|
||||
@ -119,16 +119,10 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">{{ $t('customers.state') }}</label>
|
||||
<base-select
|
||||
v-model="billing_state"
|
||||
:options="billingStates"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:tabindex="9"
|
||||
:disabled="isDisabledBillingState"
|
||||
:placeholder="$t('general.select_state')"
|
||||
label="name"
|
||||
track-by="id"
|
||||
<base-input
|
||||
v-model="billing.state"
|
||||
name="billing.state"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@ -176,16 +170,10 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">{{ $t('customers.city') }}</label>
|
||||
<base-select
|
||||
v-model="billing_city"
|
||||
:options="billingCities"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:disabled="isDisabledBillingCity"
|
||||
:tabindex="10"
|
||||
:placeholder="$t('general.select_city')"
|
||||
label="name"
|
||||
track-by="id"
|
||||
<base-input
|
||||
v-model="billing.city"
|
||||
name="billing.city"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@ -233,16 +221,10 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">{{ $t('customers.state') }}</label>
|
||||
<base-select
|
||||
v-model="shipping_state"
|
||||
:options="shippingStates"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:tabindex="17"
|
||||
:disabled="isDisabledShippingState"
|
||||
:placeholder="$t('general.select_state')"
|
||||
label="name"
|
||||
track-by="id"
|
||||
<base-input
|
||||
v-model="shipping.state"
|
||||
name="shipping.state"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@ -290,16 +272,10 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">{{ $t('customers.city') }}</label>
|
||||
<base-select
|
||||
v-model="shipping_city"
|
||||
:options="shippingCities"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:tabindex="18"
|
||||
:disabled="isDisabledShippingCity"
|
||||
:placeholder="$t('general.select_city')"
|
||||
label="name"
|
||||
track-by="id"
|
||||
<base-input
|
||||
v-model="shipping.city"
|
||||
name="shipping.city"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@ -344,7 +320,7 @@ import { mapActions, mapGetters } from 'vuex'
|
||||
import MultiSelect from 'vue-multiselect'
|
||||
import { validationMixin } from 'vuelidate'
|
||||
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 {
|
||||
components: { MultiSelect },
|
||||
@ -366,8 +342,8 @@ export default {
|
||||
billing: {
|
||||
name: null,
|
||||
country_id: null,
|
||||
state_id: null,
|
||||
city_id: null,
|
||||
state: null,
|
||||
city: null,
|
||||
phone: null,
|
||||
zip: null,
|
||||
address_street_1: null,
|
||||
@ -377,8 +353,8 @@ export default {
|
||||
shipping: {
|
||||
name: null,
|
||||
country_id: null,
|
||||
state_id: null,
|
||||
city_id: null,
|
||||
state: null,
|
||||
city: null,
|
||||
phone: null,
|
||||
zip: null,
|
||||
address_street_1: null,
|
||||
@ -386,26 +362,12 @@ export default {
|
||||
type: 'shipping'
|
||||
},
|
||||
currencyList: [],
|
||||
isDisabledBillingState: true,
|
||||
isDisabledBillingCity: true,
|
||||
isDisabledShippingState: true,
|
||||
isDisabledShippingCity: true,
|
||||
|
||||
billing_country: null,
|
||||
billing_city: null,
|
||||
billing_state: null,
|
||||
|
||||
shipping_country: null,
|
||||
shipping_city: null,
|
||||
shipping_state: null,
|
||||
|
||||
billingCountries: [],
|
||||
billingStates: [],
|
||||
billingCities: [],
|
||||
|
||||
shippingCountries: [],
|
||||
shippingStates: [],
|
||||
shippingCities: []
|
||||
shippingCountries: []
|
||||
}
|
||||
},
|
||||
validations: {
|
||||
@ -455,61 +417,13 @@ export default {
|
||||
if (newCountry) {
|
||||
this.billing.country_id = newCountry.id
|
||||
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) {
|
||||
if (newCountry) {
|
||||
this.shipping.country_id = newCountry.id
|
||||
this.isDisabledShippingState = false
|
||||
this.fetchShippingState()
|
||||
if (this.isCopyFromBilling) {
|
||||
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 () {
|
||||
@ -586,11 +500,16 @@ export default {
|
||||
this.isLoading = true
|
||||
try {
|
||||
let response = await this.updateCustomer(this.formData)
|
||||
if (response.data) {
|
||||
if (response.data.success) {
|
||||
window.toastr['success'](this.$t('customers.updated_message'))
|
||||
this.$router.push('/admin/customers')
|
||||
this.isLoading = false
|
||||
return true
|
||||
} else {
|
||||
this.isLoading = false
|
||||
if (response.data.error) {
|
||||
window.toastr['error'](this.$t('validation.email_already_taken'))
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
if (err.response.data.errors.email) {
|
||||
@ -619,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 }}
|
||||
</label>
|
||||
<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 v-if="selectedCustomer.billing_address.country">
|
||||
{{ selectedCustomer.billing_address.country.name }}
|
||||
@ -71,7 +71,7 @@
|
||||
{{ selectedCustomer.shipping_address.address_street_2 }}
|
||||
</label>
|
||||
<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 v-if="selectedCustomer.shipping_address.country" class="country">
|
||||
{{ selectedCustomer.shipping_address.country.name }}
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
<base-input
|
||||
v-model="item.quantity"
|
||||
:invalid="$v.item.quantity.$error"
|
||||
type="number"
|
||||
type="text"
|
||||
small
|
||||
@keyup="updateItem"
|
||||
@input="$v.item.quantity.$touch()"
|
||||
@ -353,7 +353,7 @@ export default {
|
||||
this.item.name = val
|
||||
},
|
||||
deselectItem () {
|
||||
this.item = {...EstimateStub, id: this.item.id}
|
||||
this.item = {...EstimateStub, id: this.item.id, taxes: [{...TaxStub, id: Guid.raw()}]}
|
||||
this.$nextTick(() => {
|
||||
this.$refs.itemSelect.$refs.baseSelect.$refs.search.focus()
|
||||
})
|
||||
|
||||
@ -151,6 +151,7 @@ export default {
|
||||
id: null,
|
||||
count: null,
|
||||
estimates: [],
|
||||
estimate: null,
|
||||
currency: null,
|
||||
searchData: {
|
||||
orderBy: null,
|
||||
@ -165,10 +166,6 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
estimate () {
|
||||
return this.$store.getters['estimate/getEstimate'](this.$route.params.id)
|
||||
},
|
||||
|
||||
getOrderBy () {
|
||||
if (this.searchData.orderBy === 'asc' || this.searchData.orderBy == null) {
|
||||
return true
|
||||
@ -180,8 +177,14 @@ export default {
|
||||
return `/estimates/pdf/${this.estimate.unique_hash}`
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
$route (to, from) {
|
||||
this.loadEstimate()
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.loadEstimates()
|
||||
this.loadEstimate()
|
||||
this.onSearched = _.debounce(this.onSearched, 500)
|
||||
},
|
||||
methods: {
|
||||
@ -192,7 +195,8 @@ export default {
|
||||
'markAsSent',
|
||||
'sendEmail',
|
||||
'deleteEstimate',
|
||||
'selectEstimate'
|
||||
'selectEstimate',
|
||||
'fetchViewEstimate'
|
||||
]),
|
||||
async loadEstimates () {
|
||||
let response = await this.fetchEstimates()
|
||||
@ -200,6 +204,13 @@ export default {
|
||||
this.estimates = response.data.estimates.data
|
||||
}
|
||||
},
|
||||
async loadEstimate () {
|
||||
let response = await this.fetchViewEstimate(this.$route.params.id)
|
||||
|
||||
if (response.data) {
|
||||
this.estimate = response.data.estimate
|
||||
}
|
||||
},
|
||||
async onSearched () {
|
||||
let data = ''
|
||||
if (this.searchData.searchText !== '' && this.searchData.searchText !== null && this.searchData.searchText !== undefined) {
|
||||
|
||||
@ -44,7 +44,7 @@
|
||||
{{ selectedCustomer.billing_address.address_street_2 }}
|
||||
</label>
|
||||
<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 v-if="selectedCustomer.billing_address.country">
|
||||
{{ selectedCustomer.billing_address.country.name }}
|
||||
@ -69,7 +69,7 @@
|
||||
{{ selectedCustomer.shipping_address.address_street_2 }}
|
||||
</label>
|
||||
<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 v-if="selectedCustomer.shipping_address.country" class="country">
|
||||
{{ selectedCustomer.shipping_address.country.name }}
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
<base-input
|
||||
v-model="item.quantity"
|
||||
:invalid="$v.item.quantity.$error"
|
||||
type="number"
|
||||
type="text"
|
||||
small
|
||||
@keyup="updateItem"
|
||||
@input="$v.item.quantity.$touch()"
|
||||
@ -354,7 +354,7 @@ export default {
|
||||
this.item.name = val
|
||||
},
|
||||
deselectItem () {
|
||||
this.item = {...InvoiceStub, id: this.item.id}
|
||||
this.item = {...InvoiceStub, id: this.item.id, taxes: [{...TaxStub, id: Guid.raw()}]}
|
||||
this.$nextTick(() => {
|
||||
this.$refs.itemSelect.$refs.baseSelect.$refs.search.focus()
|
||||
})
|
||||
|
||||
@ -154,6 +154,7 @@ export default {
|
||||
id: null,
|
||||
count: null,
|
||||
invoices: [],
|
||||
invoice: null,
|
||||
currency: null,
|
||||
searchData: {
|
||||
orderBy: null,
|
||||
@ -167,9 +168,7 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
invoice () {
|
||||
return this.$store.getters['invoice/getInvoice'](this.$route.params.id)
|
||||
},
|
||||
|
||||
getOrderBy () {
|
||||
if (this.searchData.orderBy === 'asc' || this.searchData.orderBy == null) {
|
||||
return true
|
||||
@ -180,8 +179,14 @@ export default {
|
||||
return `/invoices/pdf/${this.invoice.unique_hash}`
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
$route (to, from) {
|
||||
this.loadInvoice()
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.loadInvoices()
|
||||
this.loadInvoice()
|
||||
this.onSearch = _.debounce(this.onSearch, 500)
|
||||
},
|
||||
methods: {
|
||||
@ -192,7 +197,8 @@ export default {
|
||||
'markAsSent',
|
||||
'sendEmail',
|
||||
'deleteInvoice',
|
||||
'selectInvoice'
|
||||
'selectInvoice',
|
||||
'fetchViewInvoice'
|
||||
]),
|
||||
async loadInvoices () {
|
||||
let response = await this.fetchInvoices()
|
||||
@ -200,6 +206,13 @@ export default {
|
||||
this.invoices = response.data.invoices.data
|
||||
}
|
||||
},
|
||||
async loadInvoice () {
|
||||
let response = await this.fetchViewInvoice(this.$route.params.id)
|
||||
|
||||
if (response.data) {
|
||||
this.invoice = response.data.invoice
|
||||
}
|
||||
},
|
||||
async onSearch () {
|
||||
let data = ''
|
||||
if (this.searchData.searchText !== '' && this.searchData.searchText !== null && this.searchData.searchText !== undefined) {
|
||||
@ -286,7 +299,7 @@ export default {
|
||||
let request = await this.deleteInvoice(this.id)
|
||||
if (request.data.success) {
|
||||
window.toastr['success'](this.$tc('invoices.deleted_message', 1))
|
||||
this.$router.push('/admin/invoices/')
|
||||
this.$router.push('/admin/invoices')
|
||||
} else if (request.data.error) {
|
||||
window.toastr['error'](request.data.message)
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
aria-expanded="false"
|
||||
class="avatar"
|
||||
>
|
||||
<img src="/images/avatar.png" alt="Avatar">
|
||||
<img :src="profilePicture" alt="Avatar">
|
||||
</a>
|
||||
<v-dropdown-item>
|
||||
<router-link class="dropdown-item" to="/admin/settings">
|
||||
@ -83,7 +83,25 @@
|
||||
import { mapGetters, mapActions } from 'vuex'
|
||||
|
||||
export default {
|
||||
computed: {
|
||||
...mapGetters('userProfile', [
|
||||
'user'
|
||||
]),
|
||||
profilePicture () {
|
||||
if (this.user && this.user.avatar !== null) {
|
||||
return this.user.avatar
|
||||
} else {
|
||||
return '/images/default-avatar.jpg'
|
||||
}
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.loadData()
|
||||
},
|
||||
methods: {
|
||||
...mapActions('userProfile', [
|
||||
'loadData'
|
||||
]),
|
||||
...mapActions({
|
||||
companySelect: 'changeCompany'
|
||||
}),
|
||||
|
||||
@ -1,459 +0,0 @@
|
||||
<template>
|
||||
<div class="header-bottom">
|
||||
<div class="header-nav vue-dropdown-menu">
|
||||
<v-dropdown active-url="/admin/dashboard">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-dashboard"/>{{ $t('navigation.dashboard') }}
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/dashboard/basic">
|
||||
Basic
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/dashboard/ecommerce">
|
||||
Ecommerce
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/dashboard/finance">
|
||||
Finance
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/layouts">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-th-large"/>Layouts
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/layouts/sidebar">
|
||||
Sidebar
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/layouts/horizontal">
|
||||
Horizontal
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/layouts/icons-sidebar">
|
||||
Icon Sidebar
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/basic-ui">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-star"/>Basic UI
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/basic-ui/buttons">
|
||||
Buttons
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/basic-ui/cards">
|
||||
Cards
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/basic-ui/tabs">
|
||||
Tabs & Accordians
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/basic-ui/typography">
|
||||
Typography
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/basic-ui/tables">
|
||||
Tables
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/basic-ui/modals">
|
||||
Modals
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/basic-ui/progress-bars">
|
||||
Progress Bar
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/components">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-puzzle-piece"/>Components
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/calendar">
|
||||
Calendar
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/datatables">
|
||||
Jquery Datatables
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/mail-box">
|
||||
MailBox
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/calendar">
|
||||
Calendar
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/datatables">
|
||||
Jquery Datatables
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/image-cropper">
|
||||
ImageCropper
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/image-zoom">
|
||||
ImageZoom
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/nestable-list">
|
||||
Nestable List
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/nestable-tree">
|
||||
Nestable Tree
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/notifications">
|
||||
Notifications
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown active-url="/admin/layouts">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-th-large"/>Layouts
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/layouts/sidebar">
|
||||
Sidebar
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/layouts/horizontal">
|
||||
Horizontal
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/sweet-modals">
|
||||
Sweet Modals
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/image-zoom">
|
||||
ImageZoom
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/components/mail-box">
|
||||
MailBox
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/chart">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-bar-chart"/>Charts
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/charts/amchart">
|
||||
AM Charts
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/charts/chartjs">
|
||||
Chart JS
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/charts/gauge">
|
||||
Gauges
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/charts/morris">
|
||||
Morris
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/charts/sparkline">
|
||||
Sparkline
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/icons">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-eye"/>Icons
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/icons/icomoon">
|
||||
IcoMoon
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/icons/fontawesome">
|
||||
Font Awesome
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/forms">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-rocket"/>Form
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/general">
|
||||
General Elements
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/advanced">
|
||||
Advanced Elements
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item><v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/layouts">
|
||||
Form Layouts
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/validation">
|
||||
Form Validation
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/wizards">
|
||||
Form Wizard
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/wizards-2">
|
||||
Form Wizard 2
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/wizards-3">
|
||||
Form Wizard 3
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/editors">
|
||||
Editors
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/vee">
|
||||
Vee Validate
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/forms/vuelidate">
|
||||
Vuelidate
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/gallery">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-image"/>Gallery
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/gallery/grid">
|
||||
Grid
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/gallery/masonry-grid">
|
||||
Masonry Grid
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/users">
|
||||
<template slot="title">
|
||||
<a href="#">
|
||||
<i class="icon-fa icon-fa-user"/>Users
|
||||
<span class="icon-fa arrow icon-fa-fw"/>
|
||||
</a>
|
||||
</template>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/users/profile">
|
||||
Profile
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
<v-dropdown-item>
|
||||
<template slot="item-title">
|
||||
<router-link to="/admin/users">
|
||||
All Users
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown-item>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/todo-item">
|
||||
<template slot="title">
|
||||
<router-link to="/admin/todo-item">
|
||||
<i class="icon-fa icon-fa-check"/>Todos
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown>
|
||||
<v-dropdown active-url="/admin/settings">
|
||||
<template slot="title">
|
||||
<router-link to="/admin/settings">
|
||||
<i class="icon-fa icon-fa-cogs"/>Settings
|
||||
</router-link>
|
||||
</template>
|
||||
</v-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script type="text/babel">
|
||||
import VDropdown from '../../../components/dropdown/VDropdown'
|
||||
import VDropdownItem from '../../../components/dropdown/VDropdownItem'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
VDropdown,
|
||||
VDropdownItem
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
sidebar: 'sidebar'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -83,7 +83,7 @@
|
||||
:allow-empty="false"
|
||||
:disabled="isEdit"
|
||||
:placeholder="$t('invoices.select_invoice')"
|
||||
label="invoice_number"
|
||||
:custom-label="invoiceWithAmount"
|
||||
track-by="invoice_number"
|
||||
/>
|
||||
</div>
|
||||
@ -183,7 +183,8 @@ export default {
|
||||
customerList: [],
|
||||
invoiceList: [],
|
||||
isLoading: false,
|
||||
maxPayableAmount: Number.MAX_SAFE_INTEGER
|
||||
maxPayableAmount: Number.MAX_SAFE_INTEGER,
|
||||
isSettingInitialData: true
|
||||
}
|
||||
},
|
||||
validations () {
|
||||
@ -246,10 +247,15 @@ export default {
|
||||
watch: {
|
||||
customer (newValue) {
|
||||
this.formData.user_id = newValue.id
|
||||
this.invoice = null
|
||||
this.formData.amount = 0
|
||||
this.invoiceList = []
|
||||
if (!this.isEdit) {
|
||||
if (this.isSettingInitialData) {
|
||||
this.isSettingInitialData = false
|
||||
} else {
|
||||
this.invoice = null
|
||||
this.formData.invoice_id = null
|
||||
}
|
||||
this.formData.amount = 0
|
||||
this.invoiceList = []
|
||||
this.fetchCustomerInvoices(newValue.id)
|
||||
}
|
||||
},
|
||||
@ -263,9 +269,6 @@ export default {
|
||||
}
|
||||
},
|
||||
async mounted () {
|
||||
// if (!this.$route.params.id) {
|
||||
// this.$refs.baseSelect.$refs.search.focus()
|
||||
// }
|
||||
this.$nextTick(() => {
|
||||
this.loadData()
|
||||
if (this.$route.params.id && !this.isEdit) {
|
||||
@ -283,6 +286,9 @@ export default {
|
||||
'updatePayment',
|
||||
'fetchPayment'
|
||||
]),
|
||||
invoiceWithAmount ({ invoice_number, due_amount }) {
|
||||
return `${invoice_number} (${this.$utils.formatGraphMoney(due_amount, this.customer.currency)})`
|
||||
},
|
||||
async loadData () {
|
||||
if (this.isEdit) {
|
||||
let response = await this.fetchPayment(this.$route.params.id)
|
||||
@ -291,7 +297,6 @@ export default {
|
||||
this.customer = response.data.payment.user
|
||||
this.formData.payment_date = moment(response.data.payment.payment_date, 'YYYY-MM-DD').toString()
|
||||
this.formData.amount = parseFloat(response.data.payment.amount)
|
||||
this.maxPayableAmount = response.data.payment.amount
|
||||
if (response.data.payment.invoice !== null) {
|
||||
this.maxPayableAmount = parseInt(response.data.payment.amount) + parseInt(response.data.payment.invoice.due_amount)
|
||||
this.invoice = response.data.payment.invoice
|
||||
|
||||
@ -215,15 +215,14 @@
|
||||
</table-column>
|
||||
</table-component>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapActions, mapGetters } from 'vuex'
|
||||
import { SweetModal, SweetModalTab } from 'sweet-modal-vue'
|
||||
import CapsuleIcon from '../../components/icon/CapsuleIcon'
|
||||
import BaseButton from '../../../js/components/base/BaseButton'
|
||||
import { request } from 'http'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@ -4,13 +4,6 @@
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<label class="report-label">{{ $t('reports.sales.date_range') }}</label>
|
||||
<!-- <base-date-picker
|
||||
v-model="range"
|
||||
:invalid="$v.range.$error"
|
||||
format="yyyy"
|
||||
minimum-view="year"
|
||||
@change="$v.range.$touch()"
|
||||
/> -->
|
||||
<base-select
|
||||
v-model="selectedRange"
|
||||
:options="dateRange"
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
watch: {
|
||||
|
||||
@ -12,6 +12,9 @@
|
||||
<div class="col-md-6">
|
||||
<label class="input-label">{{ $tc('settings.company_info.company_logo') }}</label>
|
||||
<div id="pick-avatar" class="image-upload-box">
|
||||
<div class="overlay">
|
||||
<font-awesome-icon class="white-icon" icon="camera"/>
|
||||
</div>
|
||||
<img v-if="previewLogo" :src="previewLogo" class="preview-logo">
|
||||
<div v-else class="upload-content">
|
||||
<font-awesome-icon class="upload-icon" icon="cloud-upload-alt"/>
|
||||
@ -69,37 +72,22 @@
|
||||
</div>
|
||||
<div class="col-md-6 mb-4">
|
||||
<label class="input-label">{{ $tc('settings.company_info.state') }}</label>
|
||||
<base-select
|
||||
v-model="state"
|
||||
:options="states"
|
||||
:searchable="true"
|
||||
:disabled="isDisabledState"
|
||||
:show-labels="false"
|
||||
:placeholder="$t('general.select_state')"
|
||||
label="name"
|
||||
track-by="id"
|
||||
<base-input
|
||||
v-model="formData.state"
|
||||
:placeholder="$tc('settings.company_info.state')"
|
||||
name="state"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-md-6 mb-4">
|
||||
<label class="input-label">{{ $tc('settings.company_info.city') }}</label>
|
||||
<base-select
|
||||
v-model="city"
|
||||
:options="cities"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:disabled="isDisabledCity"
|
||||
:placeholder="$t('general.select_city')"
|
||||
label="name"
|
||||
track-by="id"
|
||||
<base-input
|
||||
v-model="formData.city"
|
||||
:placeholder="$tc('settings.company_info.city')"
|
||||
name="city"
|
||||
type="text"
|
||||
/>
|
||||
</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">
|
||||
<label class="input-label">{{ $tc('settings.company_info.zip') }}</label>
|
||||
<base-input
|
||||
@ -154,7 +142,7 @@ import ImageBox from '../components/ImageBox.vue'
|
||||
import AvatarCropper from 'vue-avatar-cropper'
|
||||
import { validationMixin } from 'vuelidate'
|
||||
import { mapActions } from 'vuex'
|
||||
const { required, email, numeric, maxLength } = require('vuelidate/lib/validators')
|
||||
const { required, email, maxLength } = require('vuelidate/lib/validators')
|
||||
|
||||
export default {
|
||||
components: { AvatarCropper, IconUpload, ImageBox },
|
||||
@ -174,7 +162,6 @@ export default {
|
||||
isFetchingData: false,
|
||||
formData: {
|
||||
name: null,
|
||||
logo: '',
|
||||
email: '',
|
||||
phone: '',
|
||||
zip: '',
|
||||
@ -182,20 +169,14 @@ export default {
|
||||
address_street_2: '',
|
||||
website: '',
|
||||
country_id: null,
|
||||
state_id: '',
|
||||
city_id: ''
|
||||
state: '',
|
||||
city: ''
|
||||
},
|
||||
isLoading: false,
|
||||
isHidden: false,
|
||||
country: null,
|
||||
previewLogo: null,
|
||||
city: null,
|
||||
state: null,
|
||||
countries: [],
|
||||
isDisabledState: true,
|
||||
isDisabledCity: true,
|
||||
states: [],
|
||||
cities: [],
|
||||
passData: [],
|
||||
fileSendUrl: '/api/settings/company',
|
||||
fileObject: null
|
||||
@ -204,44 +185,9 @@ export default {
|
||||
watch: {
|
||||
country (newCountry) {
|
||||
this.formData.country_id = newCountry.id
|
||||
if (this.formData.country_id) {
|
||||
this.isDisabledState = false
|
||||
}
|
||||
this.fetchState()
|
||||
if (this.isFetchingData) {
|
||||
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: {
|
||||
@ -290,9 +236,9 @@ export default {
|
||||
this.formData.address_street_2 = response.data.user.addresses[0].address_street_2
|
||||
this.formData.zip = response.data.user.addresses[0].zip
|
||||
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.state = response.data.user.addresses[0].state
|
||||
this.city = response.data.user.addresses[0].city
|
||||
this.previewLogo = response.data.user.company.logo
|
||||
},
|
||||
async updateCompany () {
|
||||
@ -301,17 +247,8 @@ export default {
|
||||
return true
|
||||
}
|
||||
this.isLoading = true
|
||||
let data = new FormData()
|
||||
data.append('name', this.formData.name)
|
||||
data.append('address_street_1', this.formData.address_street_1)
|
||||
data.append('address_street_2', this.formData.address_street_2)
|
||||
data.append('city_id', this.formData.city_id)
|
||||
data.append('state_id', this.formData.state_id)
|
||||
data.append('country_id', this.formData.country_id)
|
||||
data.append('zip', this.formData.zip)
|
||||
data.append('phone', this.formData.phone)
|
||||
|
||||
let response = await this.editCompany(data)
|
||||
let response = await this.editCompany(this.formData)
|
||||
if (response.data.success) {
|
||||
this.isLoading = false
|
||||
if (this.fileObject && this.previewLogo) {
|
||||
@ -335,19 +272,6 @@ export default {
|
||||
if (res) {
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,9 +17,7 @@
|
||||
<h3 class="page-title mb-3">{{ $t('settings.update_app.avail_update') }}</h3>
|
||||
<label class="input-label">{{ $t('settings.update_app.next_version') }}</label><br>
|
||||
<label class="version">{{ updateData.version }}</label>
|
||||
<p class="page-sub-title">
|
||||
{{ description }}
|
||||
</p>
|
||||
<p class="page-sub-title" style="white-space: pre-wrap;">{{ description }}</p>
|
||||
<base-button size="large" icon="rocket" color="theme" @click="onUpdateApp">
|
||||
{{ $t('settings.update_app.update') }}
|
||||
</base-button>
|
||||
@ -55,13 +53,22 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
created () {
|
||||
window.addEventListener('beforeunload', (event) => {
|
||||
if (this.isUpdating) {
|
||||
event.returnValue = 'Update is in progress!'
|
||||
}
|
||||
})
|
||||
},
|
||||
mounted () {
|
||||
window.axios.get('/api/settings/app/version').then((res) => {
|
||||
this.currentVersion = res.data.version
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
closeHandler () {
|
||||
console.log('closing')
|
||||
},
|
||||
async onUpdateApp () {
|
||||
try {
|
||||
this.isUpdating = true
|
||||
@ -69,10 +76,17 @@ export default {
|
||||
let res = await window.axios.post('/api/update', this.updateData)
|
||||
|
||||
if (res.data.success) {
|
||||
await window.axios.post('/api/update/finish', this.updateData)
|
||||
this.isUpdateAvailable = false
|
||||
window.toastr['success'](this.$t('settings.update_app.update_success'))
|
||||
this.currentVersion = this.updateData.version
|
||||
setTimeout(async () => {
|
||||
await window.axios.post('/api/update/finish', this.updateData)
|
||||
|
||||
window.toastr['success'](this.$t('settings.update_app.update_success'))
|
||||
this.currentVersion = this.updateData.version
|
||||
this.isUpdateAvailable = false
|
||||
|
||||
setTimeout(() => {
|
||||
location.reload()
|
||||
}, 2000)
|
||||
}, 1000)
|
||||
} else {
|
||||
console.log(res.data)
|
||||
window.toastr['error'](res.data.error)
|
||||
|
||||
@ -8,6 +8,31 @@
|
||||
{{ $t('settings.account_settings.section_description') }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<label class="input-label">{{ $tc('settings.account_settings.profile_picture') }}</label>
|
||||
<div id="pick-avatar" class="image-upload-box avatar-upload">
|
||||
<div class="overlay">
|
||||
<font-awesome-icon class="white-icon" icon="camera"/>
|
||||
</div>
|
||||
<img v-if="previewAvatar" :src="previewAvatar" class="preview-logo">
|
||||
<div v-if="!previewAvatar" class="upload-content">
|
||||
<font-awesome-icon class="upload-icon" icon="cloud-upload-alt"/>
|
||||
<p class="upload-text"> {{ $tc('general.choose_file') }} </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<avatar-cropper
|
||||
:labels="{ submit: 'submit', cancel: 'Cancle'}"
|
||||
:cropper-options="cropperOptions"
|
||||
:output-options="cropperOutputOptions"
|
||||
:output-quality="0.8"
|
||||
:upload-handler="cropperHandler"
|
||||
trigger="#pick-avatar"
|
||||
@changed="setFileObject"
|
||||
@error="handleUploadError"
|
||||
/>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-4 form-group">
|
||||
<label class="input-label">{{ $tc('settings.account_settings.name') }}</label>
|
||||
@ -81,19 +106,33 @@
|
||||
<script>
|
||||
import { validationMixin } from 'vuelidate'
|
||||
import { mapActions } from 'vuex'
|
||||
import AvatarCropper from 'vue-avatar-cropper'
|
||||
const { required, requiredIf, sameAs, email, minLength } = require('vuelidate/lib/validators')
|
||||
|
||||
export default {
|
||||
components: { AvatarCropper },
|
||||
mixins: [validationMixin],
|
||||
data () {
|
||||
return {
|
||||
isLoading: false,
|
||||
cropperOutputOptions: {
|
||||
width: 150,
|
||||
height: 150
|
||||
},
|
||||
cropperOptions: {
|
||||
autoCropArea: 1,
|
||||
viewMode: 0,
|
||||
movable: true,
|
||||
zoomable: true
|
||||
},
|
||||
formData: {
|
||||
name: null,
|
||||
email: null,
|
||||
password: null,
|
||||
confirm_password: null
|
||||
}
|
||||
},
|
||||
isLoading: false,
|
||||
previewAvatar: null,
|
||||
fileObject: null
|
||||
}
|
||||
},
|
||||
validations: {
|
||||
@ -128,12 +167,27 @@ export default {
|
||||
methods: {
|
||||
...mapActions('userProfile', [
|
||||
'loadData',
|
||||
'editUser'
|
||||
'editUser',
|
||||
'uploadAvatar'
|
||||
]),
|
||||
cropperHandler (cropper) {
|
||||
this.previewAvatar = cropper.getCroppedCanvas().toDataURL(this.cropperOutputMime)
|
||||
},
|
||||
setFileObject (file) {
|
||||
this.fileObject = file
|
||||
},
|
||||
handleUploadError (message, type, xhr) {
|
||||
window.toastr['error']('Oops! Something went wrong...')
|
||||
},
|
||||
async setInitialData () {
|
||||
let response = await this.loadData()
|
||||
this.formData.name = response.data.name
|
||||
this.formData.email = response.data.email
|
||||
if (response.data.avatar) {
|
||||
this.previewAvatar = response.data.avatar
|
||||
} else {
|
||||
this.previewAvatar = '/images/default-avatar.jpg'
|
||||
}
|
||||
},
|
||||
async updateUserData () {
|
||||
this.$v.formData.$touch()
|
||||
@ -151,6 +205,14 @@ export default {
|
||||
let response = await this.editUser(data)
|
||||
if (response.data.success) {
|
||||
this.isLoading = false
|
||||
if (this.fileObject && this.previewAvatar) {
|
||||
let avatarData = new FormData()
|
||||
avatarData.append('admin_avatar', JSON.stringify({
|
||||
name: this.fileObject.name,
|
||||
data: this.previewAvatar
|
||||
}))
|
||||
this.uploadAvatar(avatarData)
|
||||
}
|
||||
window.toastr['success'](this.$t('settings.account_settings.updated_message'))
|
||||
return true
|
||||
}
|
||||
|
||||
@ -7,6 +7,9 @@
|
||||
<div class="col-md-6">
|
||||
<label class="input-label">{{ $tc('settings.company_info.company_logo') }}</label>
|
||||
<div id="pick-avatar" class="image-upload-box">
|
||||
<div class="overlay">
|
||||
<font-awesome-icon class="white-icon" icon="camera"/>
|
||||
</div>
|
||||
<img v-if="previewLogo" :src="previewLogo" class="preview-logo">
|
||||
<div v-else class="upload-content">
|
||||
<font-awesome-icon class="upload-icon" icon="cloud-upload-alt"/>
|
||||
@ -61,29 +64,18 @@
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">{{ $t('wizard.state') }}</label>
|
||||
<base-select
|
||||
v-model="state"
|
||||
:options="states"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:disabled="isDisabledState"
|
||||
:placeholder="$t('general.select_state')"
|
||||
track-by="id"
|
||||
label="name"
|
||||
@input="fetchCities"
|
||||
<base-input
|
||||
v-model="companyData.state"
|
||||
name="state"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">{{ $t('wizard.city') }}</label>
|
||||
<base-select
|
||||
v-model="city"
|
||||
:options="cities"
|
||||
:searchable="true"
|
||||
:show-labels="false"
|
||||
:disabled="isDisabledCity"
|
||||
:placeholder="$t('general.select_city')"
|
||||
track-by="id"
|
||||
label="name"
|
||||
<base-input
|
||||
v-model="companyData.city"
|
||||
name="city"
|
||||
type="text"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -177,8 +169,8 @@ export default {
|
||||
name: null,
|
||||
address_street_1: '',
|
||||
address_street_2: '',
|
||||
city_id: '',
|
||||
state_id: '',
|
||||
city: '',
|
||||
state: '',
|
||||
country_id: '',
|
||||
zip: '',
|
||||
phone: ''
|
||||
@ -187,13 +179,7 @@ export default {
|
||||
step: 1,
|
||||
countries: [],
|
||||
country: null,
|
||||
states: [],
|
||||
state: null,
|
||||
cities: [],
|
||||
city: null,
|
||||
previewLogo: null,
|
||||
isDisabledCity: true,
|
||||
isDisabledState: true
|
||||
previewLogo: null
|
||||
}
|
||||
},
|
||||
validations: {
|
||||
@ -215,35 +201,6 @@ export default {
|
||||
watch: {
|
||||
country ({ 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
|
||||
}
|
||||
},
|
||||
@ -304,22 +261,6 @@ export default {
|
||||
if (res) {
|
||||
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">
|
||||
{{ $tc('validation.required') }}
|
||||
</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') }}
|
||||
</span>
|
||||
</div>
|
||||
@ -184,7 +184,9 @@ export default {
|
||||
},
|
||||
app_url: {
|
||||
required,
|
||||
url
|
||||
isUrl (val) {
|
||||
return this.$utils.checkValidUrl(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -204,10 +206,10 @@ export default {
|
||||
} else {
|
||||
window.toastr['error'](this.$t('wizard.errors.' + response.data.error))
|
||||
}
|
||||
this.loading = false
|
||||
} catch (e) {
|
||||
console.log(e.response)
|
||||
window.toastr['error'](e.response.data.message)
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<base-button
|
||||
v-if="!errors"
|
||||
v-if="isContinue"
|
||||
class="pull-right mt-5"
|
||||
icon="arrow-right"
|
||||
right-icon
|
||||
@ -39,7 +39,8 @@ export default {
|
||||
return {
|
||||
loading: false,
|
||||
permissions: [],
|
||||
errors: false
|
||||
errors: false,
|
||||
isContinue: false
|
||||
}
|
||||
},
|
||||
created () {
|
||||
@ -54,6 +55,24 @@ export default {
|
||||
if (response.data) {
|
||||
this.permissions = response.data.permissions.permissions
|
||||
this.errors = response.data.permissions.errors
|
||||
let self = this
|
||||
|
||||
if (this.errors) {
|
||||
swal({
|
||||
title: this.$t('wizard.permissions.permission_confirm_title'),
|
||||
text: this.$t('wizard.permissions.permission_confirm_desc'),
|
||||
icon: 'warning',
|
||||
buttons: true,
|
||||
dangerMode: true
|
||||
}).then(async (willConfirm) => {
|
||||
if (willConfirm) {
|
||||
self.isContinue = true
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.isContinue = true
|
||||
}
|
||||
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
@ -3,6 +3,31 @@
|
||||
<form action="" @submit.prevent="next()">
|
||||
<p class="form-title">{{ $t('wizard.account_info') }}</p>
|
||||
<p class="form-desc">{{ $t('wizard.account_info_desc') }}</p>
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">{{ $tc('settings.account_settings.profile_picture') }}</label>
|
||||
<div id="pick-avatar" class="image-upload-box avatar-upload">
|
||||
<div class="overlay">
|
||||
<font-awesome-icon class="white-icon" icon="camera"/>
|
||||
</div>
|
||||
<img v-if="previewAvatar" :src="previewAvatar" class="preview-logo">
|
||||
<div v-else class="upload-content">
|
||||
<font-awesome-icon class="upload-icon" icon="cloud-upload-alt"/>
|
||||
<p class="upload-text"> {{ $tc('general.choose_file') }} </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<avatar-cropper
|
||||
:labels="{ submit: 'submit', cancel: 'Cancle'}"
|
||||
:cropper-options="cropperOptions"
|
||||
:output-options="cropperOutputOptions"
|
||||
:output-quality="0.8"
|
||||
:upload-handler="cropperHandler"
|
||||
trigger="#pick-avatar"
|
||||
@changed="setFileObject"
|
||||
@error="handleUploadError"
|
||||
/>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">{{ $t('wizard.name') }}</label><span class="text-danger"> *</span>
|
||||
@ -75,24 +100,37 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import MultiSelect from 'vue-multiselect'
|
||||
import AvatarCropper from 'vue-avatar-cropper'
|
||||
import { validationMixin } from 'vuelidate'
|
||||
import { mapActions } from 'vuex'
|
||||
const { required, requiredIf, sameAs, minLength, email } = require('vuelidate/lib/validators')
|
||||
|
||||
export default {
|
||||
components: {
|
||||
MultiSelect
|
||||
AvatarCropper
|
||||
},
|
||||
mixins: [validationMixin],
|
||||
data () {
|
||||
return {
|
||||
cropperOutputOptions: {
|
||||
width: 150,
|
||||
height: 150
|
||||
},
|
||||
cropperOptions: {
|
||||
autoCropArea: 1,
|
||||
viewMode: 0,
|
||||
movable: true,
|
||||
zoomable: true
|
||||
},
|
||||
profileData: {
|
||||
name: null,
|
||||
email: null,
|
||||
password: null,
|
||||
confirm_password: null
|
||||
},
|
||||
loading: false
|
||||
loading: false,
|
||||
previewAvatar: '/images/default-avatar.jpg',
|
||||
fileObject: null
|
||||
}
|
||||
},
|
||||
validations: {
|
||||
@ -124,6 +162,18 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapActions('userProfile', [
|
||||
'uploadOnboardAvatar'
|
||||
]),
|
||||
cropperHandler (cropper) {
|
||||
this.previewAvatar = cropper.getCroppedCanvas().toDataURL(this.cropperOutputMime)
|
||||
},
|
||||
setFileObject (file) {
|
||||
this.fileObject = file
|
||||
},
|
||||
handleUploadError (message, type, xhr) {
|
||||
window.toastr['error']('Oops! Something went wrong...')
|
||||
},
|
||||
async next () {
|
||||
this.$v.profileData.$touch()
|
||||
if (this.$v.profileData.$invalid) {
|
||||
@ -131,7 +181,19 @@ export default {
|
||||
}
|
||||
this.loading = true
|
||||
let response = await window.axios.post('/api/admin/onboarding/profile', this.profileData)
|
||||
console.log('user_id', response.data.user.id)
|
||||
|
||||
if (response.data) {
|
||||
if (this.fileObject && this.previewAvatar) {
|
||||
let avatarData = new FormData()
|
||||
avatarData.append('admin_avatar', JSON.stringify({
|
||||
name: this.fileObject.name,
|
||||
data: this.previewAvatar,
|
||||
id: response.data.user.id
|
||||
}))
|
||||
|
||||
this.uploadOnboardAvatar(avatarData)
|
||||
}
|
||||
this.$emit('next')
|
||||
this.loading = false
|
||||
}
|
||||
|
||||
@ -53,7 +53,8 @@ import {
|
||||
faPaperPlane,
|
||||
faEyeSlash,
|
||||
faSyncAlt,
|
||||
faRocket
|
||||
faRocket,
|
||||
faCamera
|
||||
} from '@fortawesome/free-solid-svg-icons'
|
||||
import { far } from '@fortawesome/free-regular-svg-icons'
|
||||
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
|
||||
@ -117,7 +118,8 @@ library.add(
|
||||
faCopy,
|
||||
faPaperPlane,
|
||||
faSyncAlt,
|
||||
faRocket
|
||||
faRocket,
|
||||
faCamera
|
||||
)
|
||||
|
||||
Vue.component('font-awesome-icon', FontAwesomeIcon)
|
||||
|
||||
@ -11,8 +11,10 @@
|
||||
cursor: pointer;
|
||||
|
||||
.preview-logo {
|
||||
max-height: 50%;
|
||||
max-height: 80%;
|
||||
position: absolute;
|
||||
opacity: 1;
|
||||
animation: fadeIn 2s ease;
|
||||
}
|
||||
|
||||
.upload-content {
|
||||
@ -35,4 +37,51 @@
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.white-icon {
|
||||
font-size: 30px;
|
||||
line-height: 23px;
|
||||
color: $white;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.overlay {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 10;
|
||||
transition: .5s ease;
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.overlay {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.avatar-upload {
|
||||
height: 130px;
|
||||
width: 130px;
|
||||
.preview-logo {
|
||||
max-width: 80% !important;
|
||||
}
|
||||
|
||||
@keyframes fadeIn{
|
||||
0%{
|
||||
opacity: 0;
|
||||
}
|
||||
100%{
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -351,7 +351,8 @@ fieldset[disabled] .multiselect {
|
||||
color: $ls-color-gray;
|
||||
}
|
||||
|
||||
.multiselect--disabled .multiselect__input {
|
||||
.multiselect--disabled .multiselect__input,
|
||||
.multiselect--disabled .multiselect__single {
|
||||
background: $ls-color-gray--light;
|
||||
color: $ls-color-gray;
|
||||
}
|
||||
|
||||
1
resources/assets/sass/partials/header.scss
vendored
1
resources/assets/sass/partials/header.scss
vendored
@ -62,6 +62,7 @@
|
||||
|
||||
.avatar img {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
|
||||
@ -410,7 +410,7 @@
|
||||
<div class="bill-address-container">
|
||||
@include('app.pdf.estimate.partials.billing-address')
|
||||
</div>
|
||||
@if($estimate->user->billingaddress->name || $estimate->user->billingaddress->address_street_1 || $estimate->user->billingaddress->address_street_2 || $estimate->user->billingaddress->country || $estimate->user->billingaddress->state || $estimate->user->billingaddress->city || $estimate->user->billingaddress->zip || $estimate->user->billingaddress->phone)
|
||||
@if($estimate->user->billingaddress && ($estimate->user->billingaddress->name || $estimate->user->billingaddress->address_street_1 || $estimate->user->billingaddress->address_street_2 || $estimate->user->billingaddress->country || $estimate->user->billingaddress->state || $estimate->user->billingaddress->city || $estimate->user->billingaddress->zip || $estimate->user->billingaddress->phone))
|
||||
<div class="ship-address-container">
|
||||
@else
|
||||
<div class="ship-address-container " style="float:left;padding-left:0px;">
|
||||
|
||||
@ -421,7 +421,7 @@
|
||||
<div class="ship-address-container">
|
||||
@include('app.pdf.estimate.partials.shipping-address')
|
||||
</div>
|
||||
@if($estimate->user->shippingaddress->name || $estimate->user->shippingaddress->address_street_1 || $estimate->user->shippingaddress->address_street_2 || $estimate->user->shippingaddress->country || $estimate->user->shippingaddress->state || $estimate->user->shippingaddress->city || $estimate->user->shippingaddress->zip || $estimate->user->phone)
|
||||
@if($estimate->user->shippingaddress && ($estimate->user->shippingaddress->name || $estimate->user->shippingaddress->address_street_1 || $estimate->user->shippingaddress->address_street_2 || $estimate->user->shippingaddress->country || $estimate->user->shippingaddress->state || $estimate->user->shippingaddress->city || $estimate->user->shippingaddress->zip || $estimate->user->phone))
|
||||
<div class="bill-address-container">
|
||||
@else
|
||||
<div class="bill-address-container" style="float:right;padding-right:0px;">
|
||||
|
||||
@ -426,7 +426,7 @@
|
||||
<div style="float:left;">
|
||||
@include('app.pdf.estimate.partials.billing-address')
|
||||
</div>
|
||||
@if($estimate->user->billingaddress->name || $estimate->user->billingaddress->address_street_1 || $estimate->user->billingaddress->address_street_2 || $estimate->user->billingaddress->country || $estimate->user->billingaddress->state || $estimate->user->billingaddress->city || $estimate->user->billingaddress->zip || $estimate->user->billingaddress->phone)
|
||||
@if($estimate->user->billingaddress && ($estimate->user->billingaddress->name || $estimate->user->billingaddress->address_street_1 || $estimate->user->billingaddress->address_street_2 || $estimate->user->billingaddress->country || $estimate->user->billingaddress->state || $estimate->user->billingaddress->city || $estimate->user->billingaddress->zip || $estimate->user->billingaddress->phone))
|
||||
<div style="float:right;">
|
||||
@else
|
||||
<div style="float:left;">
|
||||
|
||||
@ -16,12 +16,12 @@
|
||||
{{$estimate->user->billingaddress->address_street_2}}<br>
|
||||
@endif
|
||||
|
||||
@if($estimate->user->billingaddress->city && $estimate->user->billingaddress->city->name)
|
||||
{{$estimate->user->billingaddress->city->name}},
|
||||
@if($estimate->user->billingaddress->city && $estimate->user->billingaddress->city)
|
||||
{{$estimate->user->billingaddress->city}},
|
||||
@endif
|
||||
|
||||
@if($estimate->user->billingaddress->state && $estimate->user->billingaddress->state->name)
|
||||
{{$estimate->user->billingaddress->state->name}}.
|
||||
@if($estimate->user->billingaddress->state && $estimate->user->billingaddress->state)
|
||||
{{$estimate->user->billingaddress->state}}.
|
||||
@endif
|
||||
|
||||
@if($estimate->user->billingaddress->zip)
|
||||
|
||||
@ -12,10 +12,10 @@
|
||||
{{$company_address->addresses[0]['address_street_2']}} <br>
|
||||
@endif
|
||||
@if($company_address->addresses[0]['city'])
|
||||
{{$company_address->addresses[0]['city']->name}}
|
||||
{{$company_address->addresses[0]['city']}}
|
||||
@endif
|
||||
@if($company_address->addresses[0]['state'])
|
||||
{{$company_address->addresses[0]['state']->name}}
|
||||
{{$company_address->addresses[0]['state']}}
|
||||
@endif
|
||||
@if($company_address->addresses[0]['zip'])
|
||||
{{$company_address->addresses[0]['zip']}} <br>
|
||||
|
||||
@ -16,12 +16,12 @@
|
||||
{{$estimate->user->shippingaddress->address_street_2}}<br>
|
||||
@endif
|
||||
|
||||
@if($estimate->user->shippingaddress->city && $estimate->user->shippingaddress->city->name)
|
||||
{{$estimate->user->shippingaddress->city->name}},
|
||||
@if($estimate->user->shippingaddress->city && $estimate->user->shippingaddress->city)
|
||||
{{$estimate->user->shippingaddress->city}},
|
||||
@endif
|
||||
|
||||
@if($estimate->user->shippingaddress->state && $estimate->user->shippingaddress->state->name)
|
||||
{{$estimate->user->shippingaddress->state->name}}.
|
||||
@if($estimate->user->shippingaddress->state && $estimate->user->shippingaddress->state)
|
||||
{{$estimate->user->shippingaddress->state}}.
|
||||
@endif
|
||||
|
||||
@if($estimate->user->shippingaddress->zip)
|
||||
|
||||
@ -14,11 +14,11 @@
|
||||
@if($invoice->user->billingaddress->address_street_2)
|
||||
{{$invoice->user->billingaddress->address_street_2}}<br>
|
||||
@endif
|
||||
@if($invoice->user->billingaddress->city && $invoice->user->billingaddress->city->name)
|
||||
{{$invoice->user->billingaddress->city->name}},
|
||||
@if($invoice->user->billingaddress->city && $invoice->user->billingaddress->city)
|
||||
{{$invoice->user->billingaddress->city}},
|
||||
@endif
|
||||
@if($invoice->user->billingaddress->state && $invoice->user->billingaddress->state->name)
|
||||
{{$invoice->user->billingaddress->state->name}}.
|
||||
@if($invoice->user->billingaddress->state && $invoice->user->billingaddress->state)
|
||||
{{$invoice->user->billingaddress->state}}.
|
||||
@endif
|
||||
@if($invoice->user->billingaddress->zip)
|
||||
{{$invoice->user->billingaddress->zip}}<br>
|
||||
|
||||
@ -12,10 +12,10 @@
|
||||
{{$company_address->addresses[0]['address_street_2']}} <br>
|
||||
@endif
|
||||
@if($company_address->addresses[0]['city'])
|
||||
{{$company_address->addresses[0]['city']->name}}
|
||||
{{$company_address->addresses[0]['city']}}
|
||||
@endif
|
||||
@if($company_address->addresses[0]['state'])
|
||||
{{$company_address->addresses[0]['state']->name}}
|
||||
{{$company_address->addresses[0]['state']}}
|
||||
@endif
|
||||
@if($company_address->addresses[0]['zip'])
|
||||
{{$company_address->addresses[0]['zip']}} <br>
|
||||
|
||||
@ -16,12 +16,12 @@
|
||||
{{$invoice->user->shippingaddress->address_street_2}}<br>
|
||||
@endif
|
||||
|
||||
@if($invoice->user->shippingaddress->city && $invoice->user->shippingaddress->city->name)
|
||||
{{$invoice->user->shippingaddress->city->name}},
|
||||
@if($invoice->user->shippingaddress->city && $invoice->user->shippingaddress->city)
|
||||
{{$invoice->user->shippingaddress->city}},
|
||||
@endif
|
||||
|
||||
@if($invoice->user->shippingaddress->state && $invoice->user->shippingaddress->state->name)
|
||||
{{$invoice->user->shippingaddress->state->name}}.
|
||||
@if($invoice->user->shippingaddress->state && $invoice->user->shippingaddress->state)
|
||||
{{$invoice->user->shippingaddress->state}}.
|
||||
@endif
|
||||
|
||||
@if($invoice->user->shippingaddress->zip)
|
||||
|
||||
@ -222,7 +222,7 @@
|
||||
<table class="expenses-table">
|
||||
<tr>
|
||||
<td>
|
||||
<p class="expense-title">{{ $item->item->name }}</p>
|
||||
<p class="expense-title">{{ $item->name }}</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="expense-money">{!! format_money_pdf($item->total_amount) !!}</p>
|
||||
|
||||
@ -96,6 +96,11 @@ Route::group(['middleware' => 'redirect-if-installed'], function () {
|
||||
'uses' => 'OnboardingController@adminProfile'
|
||||
]);
|
||||
|
||||
Route::post('/admin/profile/upload-avatar', [
|
||||
'as' => 'admin.on_boarding.avatar',
|
||||
'uses' => 'OnboardingController@uploadAdminAvatar'
|
||||
]);
|
||||
|
||||
Route::post('/admin/onboarding/company', [
|
||||
'as' => 'admin.company',
|
||||
'uses' => 'OnboardingController@adminCompany'
|
||||
@ -308,6 +313,11 @@ Route::group(['middleware' => 'api'], function () {
|
||||
'uses' => 'CompanyController@updateAdminProfile'
|
||||
]);
|
||||
|
||||
Route::post('/profile/upload-avatar', [
|
||||
'as' => 'admin.profile.avatar',
|
||||
'uses' => 'CompanyController@uploadAdminAvatar'
|
||||
]);
|
||||
|
||||
Route::post('/company/upload-logo', [
|
||||
'as' => 'upload.admin.company.logo',
|
||||
'uses' => 'CompanyController@uploadCompanyLogo'
|
||||
|
||||
@ -49,7 +49,6 @@ Route::group(['prefix' => 'reports'], function () {
|
||||
|
||||
});
|
||||
|
||||
|
||||
Route::get('/invoices/pdf/{id}', [
|
||||
'as' => 'get.invoice.pdf',
|
||||
'uses' => 'FrontendController@getInvoicePdf'
|
||||
|
||||
@ -65,8 +65,8 @@ class CompanySettingTest extends TestCase
|
||||
$company = [
|
||||
'name' => 'XYZ',
|
||||
'country_id' => 2,
|
||||
'state_id' => 3,
|
||||
'city_id' => 4,
|
||||
'state' => 'city',
|
||||
'city' => 'state',
|
||||
'address_street_1' => 'test1',
|
||||
'address_street_2' => 'test2',
|
||||
'phone' => '1234567890',
|
||||
@ -80,8 +80,8 @@ class CompanySettingTest extends TestCase
|
||||
$address2 = $response->decodeResponseJson()['user']['addresses'][0];
|
||||
$this->assertEquals($company['name'], $company2['name']);
|
||||
$this->assertEquals($company['country_id'], $address2['country_id']);
|
||||
$this->assertEquals($company['state_id'], $address2['state_id']);
|
||||
$this->assertEquals($company['city_id'], $address2['city_id']);
|
||||
$this->assertEquals($company['state'], $address2['state']);
|
||||
$this->assertEquals($company['city'], $address2['city']);
|
||||
$this->assertEquals($company['address_street_1'], $address2['address_street_1']);
|
||||
$this->assertEquals($company['address_street_2'], $address2['address_street_2']);
|
||||
$this->assertEquals($company['phone'], $address2['phone']);
|
||||
|
||||
@ -5,8 +5,6 @@ use Tests\TestCase;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Crater\Country;
|
||||
use Crater\State;
|
||||
use Crater\City;
|
||||
use SettingsSeeder;
|
||||
class LocationTest extends TestCase
|
||||
{
|
||||
@ -26,20 +24,4 @@ class LocationTest extends TestCase
|
||||
|
||||
$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