mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
Merge branch 'version-200' into 'dev'
Version 200 See merge request mohit.panjvani/crater-web!85
This commit is contained in:
@ -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);
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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"];
|
||||
@ -187,8 +187,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"];
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -156,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'
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -5,9 +5,11 @@ 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
|
||||
class Version110 extends Listener
|
||||
{
|
||||
const VERSION = '1.1.0';
|
||||
|
||||
@ -29,11 +31,85 @@ class Version110
|
||||
*/
|
||||
public function handle(UpdateFinished $event)
|
||||
{
|
||||
if (!$this->check($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);
|
||||
}
|
||||
}
|
||||
@ -6,6 +6,7 @@ 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;
|
||||
|
||||
class EventServiceProvider extends ServiceProvider
|
||||
{
|
||||
@ -17,6 +18,7 @@ class EventServiceProvider extends ServiceProvider
|
||||
protected $listen = [
|
||||
UpdateFinished::class=> [
|
||||
Version110::class,
|
||||
Version200::class,
|
||||
],
|
||||
Registered::class => [
|
||||
SendEmailVerificationNotification::class,
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
<?php
|
||||
namespace Crater;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Crater\City;
|
||||
use Crater\Country;
|
||||
use Crater\Address;
|
||||
|
||||
class State extends Model
|
||||
{
|
||||
public function cities()
|
||||
{
|
||||
return $this->hasMany(City::class);
|
||||
}
|
||||
|
||||
public function country()
|
||||
{
|
||||
return $this->belongsTo(Country::class);
|
||||
}
|
||||
|
||||
public function address()
|
||||
{
|
||||
return $this->hasMany(Address::class);
|
||||
}
|
||||
}
|
||||
@ -10,6 +10,7 @@
|
||||
"require": {
|
||||
"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.1.0',
|
||||
'version' => '2.0.0',
|
||||
|
||||
];
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,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
@ -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=af9e4f2aa907d480466c",
|
||||
"/assets/css/crater.css": "/assets/css/crater.css?id=9d83f53c3915b38417e0"
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -689,7 +689,7 @@ export default {
|
||||
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',
|
||||
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'
|
||||
}
|
||||
@ -740,6 +740,8 @@ export default {
|
||||
},
|
||||
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: {
|
||||
|
||||
@ -685,7 +685,7 @@ export default {
|
||||
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',
|
||||
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'
|
||||
}
|
||||
@ -735,6 +735,8 @@ export default {
|
||||
},
|
||||
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: {
|
||||
|
||||
@ -688,7 +688,7 @@ export default {
|
||||
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",
|
||||
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'
|
||||
}
|
||||
@ -738,6 +738,8 @@ export default {
|
||||
},
|
||||
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: {
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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 () {
|
||||
@ -624,42 +538,6 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
async fetchBillingState () {
|
||||
let res = await window.axios.get(`/api/states/${this.billing_country.id}`)
|
||||
if (res) {
|
||||
this.billingStates = res.data.states
|
||||
}
|
||||
if (this.isEdit) {
|
||||
this.billing_state = this.billingStates.find((state) => state.id === this.billing.state_id)
|
||||
}
|
||||
},
|
||||
async fetchBillingCities () {
|
||||
let res = await window.axios.get(`/api/cities/${this.billing_state.id}`)
|
||||
if (res) {
|
||||
this.billingCities = res.data.cities
|
||||
}
|
||||
if (this.isEdit) {
|
||||
this.billing_city = this.billingCities.find((city) => city.id === this.billing.city_id)
|
||||
}
|
||||
},
|
||||
async fetchShippingState () {
|
||||
let res = await window.axios.get(`/api/states/${this.shipping_country.id}`)
|
||||
if (res) {
|
||||
this.shippingStates = res.data.states
|
||||
}
|
||||
if (this.isEdit) {
|
||||
this.shipping_state = this.shippingStates.find((s) => s.id === this.shipping.state_id)
|
||||
}
|
||||
},
|
||||
async fetchShippingCities () {
|
||||
let res = await window.axios.get(`/api/cities/${this.shipping_state.id}`)
|
||||
if (res) {
|
||||
this.shippingCities = res.data.cities
|
||||
}
|
||||
if (this.isEdit) {
|
||||
this.shipping_city = this.shippingCities.find((c) => c.id === this.shipping.city_id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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>
|
||||
@ -263,9 +263,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) {
|
||||
|
||||
@ -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: {
|
||||
|
||||
@ -72,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
|
||||
@ -157,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 },
|
||||
@ -184,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
|
||||
@ -206,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: {
|
||||
@ -292,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 () {
|
||||
@ -328,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)
|
||||
}, 5000)
|
||||
} else {
|
||||
console.log(res.data)
|
||||
window.toastr['error'](res.data.error)
|
||||
|
||||
@ -64,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>
|
||||
@ -180,8 +169,8 @@ export default {
|
||||
name: null,
|
||||
address_street_1: '',
|
||||
address_street_2: '',
|
||||
city_id: '',
|
||||
state_id: '',
|
||||
city: '',
|
||||
state: '',
|
||||
country_id: '',
|
||||
zip: '',
|
||||
phone: ''
|
||||
@ -190,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: {
|
||||
@ -218,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
|
||||
}
|
||||
},
|
||||
@ -307,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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
},
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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