Merge branch 'fix-master-issues' into 'master'

Fix master issues

See merge request mohit.panjvani/crater-web!1446
This commit is contained in:
Mohit Panjwani
2022-02-19 09:50:46 +00:00
52 changed files with 4 additions and 1209 deletions

View File

@ -2,6 +2,7 @@
namespace Crater\Console;
use Crater\Models\CompanySetting;
use Crater\Models\RecurringInvoice;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
@ -37,9 +38,11 @@ class Kernel extends ConsoleKernel
$recurringInvoices = RecurringInvoice::where('status', 'ACTIVE')->get();
foreach ($recurringInvoices as $recurringInvoice) {
$timeZone = CompanySetting::getSetting('time_zone', $recurringInvoice->company_id);
$schedule->call(function () use ($recurringInvoice) {
$recurringInvoice->generateInvoice();
})->cron($recurringInvoice->frequency);
})->cron($recurringInvoice->frequency)->timezone($timeZone);
}
}
}

View File

@ -3,7 +3,6 @@
namespace Crater\Http\Middleware;
use Closure;
use Crater\Models\CompanySetting;
use Crater\Models\FileDisk;
class ConfigMiddleware
@ -18,15 +17,6 @@ class ConfigMiddleware
public function handle($request, Closure $next)
{
if (\Storage::disk('local')->has('database_created')) {
$setting = CompanySetting::getSetting('time_zone', $request->header('company'));
$timezone = config('app.timezone');
if ($setting && $setting != null && $setting != $timezone) {
config(['app.timezone' => $setting]);
date_default_timezone_set($setting);
}
if ($request->has('file_disk_id')) {
$file_disk = FileDisk::find($request->file_disk_id);
} else {

View File

@ -1,96 +0,0 @@
<?php
use Crater\Models\Company;
use Crater\Models\User;
use Illuminate\Support\Facades\Artisan;
use Laravel\Sanctum\Sanctum;
use function Pest\Laravel\getJson;
beforeEach(function () {
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
$user = User::find(1);
$this->withHeaders([
'company' => $user->companies()->first()->id,
]);
Sanctum::actingAs(
$user,
['*']
);
});
test('get customer sales report', function () {
$filters = [
'page' => 1,
'limit' => 15,
'from_date' => '2020-07-18',
'to_date' => '2020-07-20',
];
$queryString = http_build_query($filters, '', '&');
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
$response = getJson('reports/sales/customers/'.$queryString);
$response->assertOk();
});
test('get item sales report', function () {
$filters = [
'page' => 1,
'limit' => 15,
'from_date' => '2020-07-18',
'to_date' => '2020-07-20',
];
$queryString = http_build_query($filters, '', '&');
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
$response = getJson('reports/sales/items/'.$queryString);
$response->assertOk();
});
test('get expenses report', function () {
$filters = [
'page' => 1,
'limit' => 15,
'from_date' => '2020-07-18',
'to_date' => '2020-07-20',
];
$queryString = http_build_query($filters, '', '&');
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
$response = getJson('reports/expenses/'.$queryString);
$response->assertOk();
});
test('get tax summary', function () {
$filters = [
'page' => 1,
'limit' => 15,
'from_date' => '2020-07-18',
'to_date' => '2020-07-20',
];
$queryString = http_build_query($filters, '', '&');
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
$response = getJson('reports/tax-summary/'.$queryString);
$response->assertOk();
});
test('get profit loss', function () {
$filters = [
'page' => 1,
'limit' => 15,
'from_date' => '2020-07-18',
'to_date' => '2020-07-20',
];
$queryString = http_build_query($filters, '', '&');
$queryString = Company::find(1)->unique_hash.'?'.$queryString;
$response = getJson('reports/profit-loss/'.$queryString);
$response->assertOk();
});

View File

@ -1,29 +0,0 @@
<?php
use Crater\Http\Requests\BulkExchangeRateRequest;
test('bulk exchange rate request validation rules', function () {
$request = new BulkExchangeRateRequest();
$this->assertEquals(
[
'currencies' => [
'required'
],
'currencies.*.id' => [
'required',
'numeric'
],
'currencies.*.exchange_rate' => [
'required'
],
],
$request->rules()
);
});
test('bulk exchange rate request authorize', function () {
$request = new BulkExchangeRateRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,55 +0,0 @@
<?php
use Crater\Http\Requests\CompaniesRequest;
use Illuminate\Validation\Rule;
test('companies request validation rules', function () {
$request = new CompaniesRequest();
$this->assertEquals(
[
'name' => [
'required',
Rule::unique('companies'),
'string'
],
'currency' => [
'required'
],
'address.name' => [
'nullable',
],
'address.address_street_1' => [
'nullable',
],
'address.address_street_2' => [
'nullable',
],
'address.city' => [
'nullable',
],
'address.state' => [
'nullable',
],
'address.country_id' => [
'required',
],
'address.zip' => [
'nullable',
],
'address.phone' => [
'nullable',
],
'address.fax' => [
'nullable',
],
],
$request->rules()
);
});
test('companies request authorize', function () {
$request = new CompaniesRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,30 +0,0 @@
<?php
use Crater\Http\Requests\CompanyRequest;
use Illuminate\Validation\Rule;
test('company request validation rules', function () {
$request = new CompanyRequest();
$this->assertEquals(
[
'name' => [
'required',
Rule::unique('companies')->ignore($request->header('company'), 'id'),
],
'slug' => [
'nullable'
],
'address.country_id' => [
'required',
],
],
$request->rules()
);
});
test('company request authorize', function () {
$request = new CompanyRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,27 +0,0 @@
<?php
use Crater\Http\Requests\CustomFieldRequest;
test('custom field request validation rules', function () {
$request = new CustomFieldRequest();
$this->assertEquals(
[
'name' => 'required',
'label' => 'required',
'model_type' => 'required',
'type' => 'required',
'is_required' => 'required|boolean',
'options' => 'array',
'placeholder' => 'string|nullable',
'order' => 'required',
],
$request->rules()
);
});
test('custom field request authorize', function () {
$request = new CustomFieldRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,27 +0,0 @@
<?php
use Crater\Http\Requests\Customer\CustomerLoginRequest;
test('customer login request validation rules', function () {
$request = new CustomerLoginRequest();
$this->assertEquals(
[
'email' => [
'required',
'string'
],
'password' => [
'required',
'string'
],
],
$request->rules()
);
});
test('customer login request authorize', function () {
$request = new CustomerLoginRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,92 +0,0 @@
<?php
use Crater\Http\Requests\Customer\CustomerProfileRequest;
use Illuminate\Validation\Rule;
test('customer profile request validation rules', function () {
$request = new CustomerProfileRequest();
$this->assertEquals(
[
'name' => [
'nullable',
],
'password' => [
'nullable',
'min:8',
],
'email' => [
'nullable',
'email',
Rule::unique('customers')->where('company_id', $request->header('company'))->ignore(Auth::id(), 'id')
],
'billing.name' => [
'nullable',
],
'billing.address_street_1' => [
'nullable',
],
'billing.address_street_2' => [
'nullable',
],
'billing.city' => [
'nullable',
],
'billing.state' => [
'nullable',
],
'billing.country_id' => [
'nullable',
],
'billing.zip' => [
'nullable',
],
'billing.phone' => [
'nullable',
],
'billing.fax' => [
'nullable',
],
'shipping.name' => [
'nullable',
],
'shipping.address_street_1' => [
'nullable',
],
'shipping.address_street_2' => [
'nullable',
],
'shipping.city' => [
'nullable',
],
'shipping.state' => [
'nullable',
],
'shipping.country_id' => [
'nullable',
],
'shipping.zip' => [
'nullable',
],
'shipping.phone' => [
'nullable',
],
'shipping.fax' => [
'nullable',
],
'customer_avatar' => [
'nullable',
'file',
'mimes:gif,jpg,png',
'max:20000'
]
],
$request->rules()
);
});
test('customer profile request authorize', function () {
$request = new CustomerProfileRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,106 +0,0 @@
<?php
use Crater\Http\Requests\CustomerRequest;
use Illuminate\Validation\Rule;
test('customer request validation rules', function () {
$request = new CustomerRequest();
$this->assertEquals(
[
'name' => [
'required',
],
'email' => [
'email',
'nullable',
Rule::unique('customers')->where('company_id', $request->header('company'))
],
'password' => [
'nullable',
],
'phone' => [
'nullable',
],
'company_name' => [
'nullable',
],
'contact_name' => [
'nullable',
],
'website' => [
'nullable',
],
'prefix' => [
'nullable',
],
'enable_portal' => [
'boolean',
],
'currency_id' => [
'nullable',
],
'billing.name' => [
'nullable',
],
'billing.address_street_1' => [
'nullable',
],
'billing.address_street_2' => [
'nullable',
],
'billing.city' => [
'nullable',
],
'billing.state' => [
'nullable',
],
'billing.country_id' => [
'nullable',
],
'billing.zip' => [
'nullable',
],
'billing.phone' => [
'nullable',
],
'billing.fax' => [
'nullable',
],
'shipping.name' => [
'nullable',
],
'shipping.address_street_1' => [
'nullable',
],
'shipping.address_street_2' => [
'nullable',
],
'shipping.city' => [
'nullable',
],
'shipping.state' => [
'nullable',
],
'shipping.country_id' => [
'nullable',
],
'shipping.zip' => [
'nullable',
],
'shipping.phone' => [
'nullable',
],
'shipping.fax' => [
'nullable',
]
],
$request->rules()
);
});
test('customer request authorize', function () {
$request = new CustomerRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,74 +0,0 @@
<?php
use Crater\Http\Requests\EstimatesRequest;
use Illuminate\Validation\Rule;
test('estimate request validation rules', function () {
$request = new EstimatesRequest();
$this->assertEquals(
[
'estimate_date' => [
'required',
],
'expiry_date' => [
'nullable',
],
'customer_id' => [
'required',
],
'estimate_number' => [
'required',
Rule::unique('estimates')->where('company_id', $request->header('company'))
],
'exchange_rate' => [
'nullable'
],
'discount' => [
'required',
],
'discount_val' => [
'required',
],
'sub_total' => [
'required',
],
'total' => [
'required',
],
'tax' => [
'required',
],
'template_name' => [
'required'
],
'items' => [
'required',
'array',
],
'items.*.description' => [
'nullable',
],
'items.*' => [
'required',
'max:255',
],
'items.*.name' => [
'required',
],
'items.*.quantity' => [
'required',
],
'items.*.price' => [
'required',
],
],
$request->rules()
);
});
test('estimate request authorize', function () {
$request = new EstimatesRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,25 +0,0 @@
<?php
use Crater\Http\Requests\ExchangeRateLogRequest;
test('exchange rate log request validation rules', function () {
$request = new ExchangeRateLogRequest();
$this->assertEquals(
[
'exchange_rate' => [
'required',
],
'currency_id' => [
'required'
],
],
$request->rules()
);
});
test('exchange rate log request authorize', function () {
$request = new ExchangeRateLogRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,38 +0,0 @@
<?php
use Crater\Http\Requests\ExchangeRateProviderRequest;
test('exchange rate provider request validation rules', function () {
$request = new ExchangeRateProviderRequest();
$this->assertEquals(
[
'driver' => [
'required'
],
'key' => [
'required',
],
'currencies' => [
'nullable',
],
'currencies.*' => [
'nullable',
],
'driver_config' => [
'nullable'
],
'active' => [
'nullable',
'boolean'
],
],
$request->rules()
);
});
test('exchange rate provider request authorize', function () {
$request = new ExchangeRateProviderRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,25 +0,0 @@
<?php
use Crater\Http\Requests\ExpenseCategoryRequest;
test('expense category request validation rules', function () {
$request = new ExpenseCategoryRequest();
$this->assertEquals(
[
'name' => [
'required',
],
'description' => [
'nullable',
],
],
$request->rules()
);
});
test('expense category request authorize', function () {
$request = new ExpenseCategoryRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,49 +0,0 @@
<?php
use Crater\Http\Requests\ExpenseRequest;
test('expense request validation rules', function () {
$request = new ExpenseRequest();
$this->assertEquals(
[
'expense_date' => [
'required',
],
'expense_category_id' => [
'required',
],
'exchange_rate' => [
'nullable'
],
'payment_method_id' => [
'nullable',
],
'amount' => [
'required',
],
'customer_id' => [
'nullable',
],
'notes' => [
'nullable',
],
'currency_id' => [
'required'
],
'attachment_receipt' => [
'nullable',
'file',
'mimes:jpg,png,pdf,doc,docx,xls,xlsx,ppt,pptx',
'max:20000'
]
],
$request->rules()
);
});
test('expense request authorize', function () {
$request = new ExpenseRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,27 +0,0 @@
<?php
use Crater\Http\Requests\GetSettingsRequest;
test('get settings request rules', function () {
$request = new GetSettingsRequest();
$this->assertEquals(
[
'settings' => [
'required',
],
'settings.*' => [
'required',
'string',
],
],
$request->rules()
);
});
test('get settings request authorize', function () {
$request = new GetSettingsRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,74 +0,0 @@
<?php
use Crater\Http\Requests\InvoicesRequest;
use Illuminate\Validation\Rule;
test('invoice request validation rules', function () {
$request = new InvoicesRequest();
$this->assertEquals(
[
'invoice_date' => [
'required',
],
'due_date' => [
'nullable',
],
'customer_id' => [
'required',
],
'invoice_number' => [
'required',
Rule::unique('invoices')->where('company_id', $request->header('company'))
],
'exchange_rate' => [
'nullable'
],
'discount' => [
'required',
],
'discount_val' => [
'required',
],
'sub_total' => [
'required',
],
'total' => [
'required',
],
'tax' => [
'required',
],
'template_name' => [
'required'
],
'items' => [
'required',
'array',
],
'items.*' => [
'required',
'max:255',
],
'items.*.description' => [
'nullable',
],
'items.*.name' => [
'required',
],
'items.*.quantity' => [
'required',
],
'items.*.price' => [
'required',
],
],
$request->rules()
);
});
test('invoices request authorize', function () {
$request = new InvoicesRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,31 +0,0 @@
<?php
use Crater\Http\Requests\ItemsRequest;
test('items request validation rules', function () {
$request = new ItemsRequest();
$this->assertEquals(
[
'name' => [
'required',
],
'price' => [
'required',
],
'unit_id' => [
'nullable',
],
'description' => [
'nullable',
],
],
$request->rules()
);
});
test('item request authorize', function () {
$request = new ItemsRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,28 +0,0 @@
<?php
use Crater\Http\Requests\LoginRequest;
test('login request validation rules', function () {
$request = new LoginRequest();
$this->assertEquals(
[
'username' => [
'required',
],
'password' => [
'required',
],
'device_name' => [
'required'
],
],
$request->rules()
);
});
test('login request authorize', function () {
$request = new LoginRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,32 +0,0 @@
<?php
use Crater\Http\Requests\NotesRequest;
use Illuminate\Validation\Rule;
test('note request validation rules', function () {
$request = new NotesRequest();
$this->assertEquals(
[
'type' => [
'required'
],
'name' => [
'required',
Rule::unique('notes')
->where('company_id', $request->header('company'))
->where('type', $request->type)
],
'notes' => [
'required'
],
],
$request->rules()
);
});
test('note request authorize', function () {
$request = new NotesRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,25 +0,0 @@
<?php
use Crater\Http\Requests\PaymentMethodRequest;
use Illuminate\Validation\Rule;
test('payment method request validation rules', function () {
$request = new PaymentMethodRequest();
$this->assertEquals(
[
'name' => [
'required',
Rule::unique('payment_methods')
->where('company_id', $request->header('company')),
],
],
$request->rules()
);
});
test('payment method request authorize', function () {
$request = new PaymentMethodRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,45 +0,0 @@
<?php
use Crater\Http\Requests\PaymentRequest;
use Illuminate\Validation\Rule;
test('payment request validation rules', function () {
$request = new PaymentRequest();
$this->assertEquals(
[
'payment_date' => [
'required',
],
'customer_id' => [
'required',
],
'exchange_rate' => [
'nullable'
],
'amount' => [
'required',
],
'payment_number' => [
'required',
Rule::unique('payments')->where('company_id', $request->header('company'))
],
'invoice_id' => [
'nullable',
],
'payment_method_id' => [
'nullable',
],
'notes' => [
'nullable',
],
],
$request->rules()
);
});
test('payment request authorize', function () {
$request = new PaymentRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,32 +0,0 @@
<?php
use Crater\Http\Requests\ProfileRequest;
use Illuminate\Validation\Rule;
test('profile request validation rules', function () {
$request = new ProfileRequest();
$this->assertEquals(
[
'name' => [
'required',
],
'password' => [
'nullable',
'min:8',
],
'email' => [
'required',
'email',
Rule::unique('users')->ignore(Auth::id(), 'id'),
],
],
$request->rules()
);
});
test('profile request authorize', function () {
$request = new ProfileRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,68 +0,0 @@
<?php
use Crater\Http\Requests\RecurringInvoiceRequest;
test('recurring invoice request validation rules', function () {
$request = new RecurringInvoiceRequest();
$this->assertEquals(
[
'starts_at' => [
'required'
],
'send_automatically' => [
'required',
'boolean'
],
'customer_id' => [
'required'
],
'discount' => [
'required',
],
'discount_val' => [
'required',
],
'sub_total' => [
'required',
],
'total' => [
'required',
],
'tax' => [
'required',
],
'status' => [
'required'
],
'exchange_rate' => [
'nullable'
],
'frequency' => [
'required'
],
'limit_by' => [
'required'
],
'limit_count' => [
'required_if:limit_by,COUNT',
],
'limit_date' => [
'required_if:limit_by,DATE',
],
'items' => [
'required'
],
'items.*' => [
'required'
]
],
$request->rules()
);
});
test('recurring invoice request authorize', function () {
$request = new RecurringInvoiceRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,31 +0,0 @@
<?php
use Crater\Http\Requests\RoleRequest;
use Illuminate\Validation\Rule;
test('role request validation rules', function () {
$request = new RoleRequest();
$this->assertEquals(
[
'name' => [
'required',
'string',
Rule::unique('roles')->where('scope', $request->header('company'))
],
'abilities' => [
'required'
],
'abilities.*' => [
'required'
],
],
$request->rules()
);
});
test('role request authorize', function () {
$request = new RoleRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,40 +0,0 @@
<?php
use Crater\Http\Requests\TaxTypeRequest;
use Crater\Models\TaxType;
use Illuminate\Validation\Rule;
test('tax type request validation rules', function () {
$request = new TaxTypeRequest();
$this->assertEquals(
[
'name' => [
'required',
Rule::unique('tax_types')
->where('type', TaxType::TYPE_GENERAL)
->where('company_id', $request->header('company'))
],
'percent' => [
'required',
],
'description' => [
'nullable',
],
'compound_tax' => [
'nullable',
],
'collective_tax' => [
'nullable',
],
],
$request->rules()
);
});
test('tax type request authorize', function () {
$request = new TaxTypeRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,25 +0,0 @@
<?php
use Crater\Http\Requests\UnitRequest;
use Illuminate\Validation\Rule;
test('unit request validation rules', function () {
$request = new UnitRequest();
$this->assertEquals(
[
'name' => [
'required',
Rule::unique('units')
->where('company_id', $request->header('company')),
],
],
$request->rules()
);
});
test('unit request authorize', function () {
$request = new UnitRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,23 +0,0 @@
<?php
use Crater\Http\Requests\UpdateSettingsRequest;
test('update settings request rules', function () {
$request = new UpdateSettingsRequest();
$this->assertEquals(
[
'settings' => [
'required',
],
],
$request->rules()
);
});
test('update settings request authorize', function () {
$request = new UpdateSettingsRequest();
$this->assertTrue($request->authorize());
});

View File

@ -1,44 +0,0 @@
<?php
use Crater\Http\Requests\UserRequest;
use Illuminate\Validation\Rule;
test('user request validation rules', function () {
$request = new UserRequest();
$this->assertEquals(
[
'name' => [
'required',
],
'email' => [
'required',
'email',
Rule::unique('users'),
],
'phone' => [
'nullable',
],
'password' => [
'required',
'min:8',
],
'companies' => [
'required',
],
'companies.*.id' => [
'required',
],
'companies.*.role' => [
'required',
],
],
$request->rules()
);
});
test('user request authorize', function () {
$request = new UserRequest();
$this->assertTrue($request->authorize());
});