diff --git a/app/Abstracts/Export.php b/app/Abstracts/Export.php index 068d3c2f3..b9b27bfee 100644 --- a/app/Abstracts/Export.php +++ b/app/Abstracts/Export.php @@ -15,9 +15,10 @@ use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithMapping; use Maatwebsite\Excel\Concerns\WithTitle; +use Maatwebsite\Excel\Concerns\WithStrictNullComparison; use PhpOffice\PhpSpreadsheet\Shared\Date as ExcelDate; -abstract class Export implements FromCollection, HasLocalePreference, ShouldAutoSize, ShouldQueue, WithHeadings, WithMapping, WithTitle +abstract class Export implements FromCollection, HasLocalePreference, ShouldAutoSize, ShouldQueue, WithHeadings, WithMapping, WithTitle, WithStrictNullComparison { use Exportable; diff --git a/app/Abstracts/Import.php b/app/Abstracts/Import.php index eb05b9ab0..54003fc60 100644 --- a/app/Abstracts/Import.php +++ b/app/Abstracts/Import.php @@ -57,7 +57,7 @@ abstract class Import implements HasLocalePreference, ShouldQueue, SkipsEmptyRow $row['reconciled'] = (int) $row['reconciled']; } - $date_fields = ['paid_at', 'invoiced_at', 'billed_at', 'due_at', 'issued_at', 'created_at', 'transferred_at']; + $date_fields = ['paid_at', 'invoiced_at', 'billed_at', 'due_at', 'issued_at', 'transferred_at']; foreach ($date_fields as $date_field) { if (!isset($row[$date_field])) { continue; diff --git a/app/Events/Common/DatesFormating.php b/app/Events/Common/DatesFormating.php new file mode 100644 index 000000000..7108e5885 --- /dev/null +++ b/app/Events/Common/DatesFormating.php @@ -0,0 +1,23 @@ +columns = $columns; + $this->request = $request; + } +} diff --git a/app/Http/Controllers/Modules/Tiles.php b/app/Http/Controllers/Modules/Tiles.php index 8af4e94de..e43325209 100644 --- a/app/Http/Controllers/Modules/Tiles.php +++ b/app/Http/Controllers/Modules/Tiles.php @@ -194,20 +194,19 @@ class Tiles extends Controller case 'paid': $response = $this->getPaidModules($data); - $last_page = $response->last_page; + $last_page = ! empty($response) ? $response->last_page : 1; $modules = $this->prepareModules($response); break; case 'new': $response = $this->getNewModules($data); - $last_page = $response->last_page; + $last_page = ! empty($response) ? $response->last_page : 1; $modules = $this->prepareModules($response); - break; case 'free': $response = $this->getFreeModules($data); - $last_page = $response->last_page; + $last_page = ! empty($response) ? $response->last_page : 1; $modules = $this->prepareModules($response); break; case 'search': @@ -215,7 +214,7 @@ class Tiles extends Controller $response = $this->getSearchModules($data); - $last_page = $response->last_page; + $last_page = ! empty($response) ? $response->last_page : 1; $modules = $this->prepareModules($response); break; } diff --git a/app/Http/Middleware/DateFormat.php b/app/Http/Middleware/DateFormat.php index 409cf3e18..f5d32e5bd 100644 --- a/app/Http/Middleware/DateFormat.php +++ b/app/Http/Middleware/DateFormat.php @@ -2,6 +2,7 @@ namespace App\Http\Middleware; +use App\Events\Common\DatesFormating; use Closure; use Date; @@ -10,15 +11,29 @@ class DateFormat /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure $next + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * * @return mixed */ public function handle($request, Closure $next) { if (($request->method() == 'POST') || ($request->method() == 'PATCH')) { - // todo fire event - $fields = ['paid_at', 'due_at', 'issued_at', 'started_at', 'ended_at', 'expire_at', 'recurring_started_at', 'recurring_limit_date']; + $columns = new \stdClass(); + $columns->fields = [ + 'paid_at', + 'due_at', + 'issued_at', + 'started_at', + 'ended_at', + 'expire_at', + 'recurring_started_at', + 'recurring_limit_date', + ]; + + event(new DatesFormating($columns, $request)); + + $fields = $columns->fields; foreach ($fields as $field) { $date = $request->get($field); @@ -28,7 +43,7 @@ class DateFormat } if (Date::parse($date)->format('H:i:s') == '00:00:00') { - $new_date = Date::parse($date)->format('Y-m-d') . ' ' . Date::now()->format('H:i:s'); + $new_date = Date::parse($date)->format('Y-m-d') . ' ' . Date::now()->format('H:i:s'); } else { $new_date = Date::parse($date)->toDateTimeString(); } diff --git a/database/migrations/2023_06_22_000000_core_v3016.php b/database/migrations/2023_06_22_000000_core_v3016.php new file mode 100644 index 000000000..1f19dc6fa --- /dev/null +++ b/database/migrations/2023_06_22_000000_core_v3016.php @@ -0,0 +1,52 @@ +getDoctrineSchemaManager()->listTableDetails($connection->getTablePrefix() . 'settings'); + + if ($d_table->hasIndex('settings_company_id_key_unique')) { + $table->dropUnique('settings_company_id_key_unique'); + } else { + $table->dropUnique(['company_id', 'key']); + } + + $table->unique(['company_id', 'key', 'deleted_at']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // Settings + Schema::table('settings', function (Blueprint $table) { + $connection = Schema::getConnection(); + $d_table = $connection->getDoctrineSchemaManager()->listTableDetails($connection->getTablePrefix() . 'settings'); + + if ($d_table->hasIndex('settings_company_id_key_deleted_at_unique')) { + $table->dropUnique('settings_company_id_key_deleted_at_unique'); + } else { + $table->dropUnique(['company_id', 'key', 'deleted_at']); + } + + $table->unique(['company_id', 'key']); + }); + } +}; diff --git a/public/img/wizard-rocket.gif b/public/img/wizard-rocket.gif new file mode 100644 index 000000000..2fa14a4fe Binary files /dev/null and b/public/img/wizard-rocket.gif differ diff --git a/resources/assets/js/components/NotificationPlugin/Notification.vue b/resources/assets/js/components/NotificationPlugin/Notification.vue index 429595845..8a2186e77 100644 --- a/resources/assets/js/components/NotificationPlugin/Notification.vue +++ b/resources/assets/js/components/NotificationPlugin/Notification.vue @@ -220,6 +220,8 @@ let styles = {}; + styles.zIndex = 100; + if (this.verticalAlign === 'top') { styles.top = `${pixels}px`; } else { diff --git a/resources/lang/en-GB/general.php b/resources/lang/en-GB/general.php index 21be355d0..8da1074d6 100644 --- a/resources/lang/en-GB/general.php +++ b/resources/lang/en-GB/general.php @@ -231,6 +231,7 @@ return [ 'validation_error' => 'Validation error', 'dismiss' => 'Dismiss', 'size' => 'Size', + 'media' => 'Media', 'card' => [ 'cards' => 'Card|Cards', diff --git a/resources/views/components/documents/form/line-item.blade.php b/resources/views/components/documents/form/line-item.blade.php index e968d7cfd..61f9c24d9 100644 --- a/resources/views/components/documents/form/line-item.blade.php +++ b/resources/views/components/documents/form/line-item.blade.php @@ -231,7 +231,7 @@ :class="[{'btn-outline-primary' : row.discount_type !== 'fixed'}, {'bg-white rounded-lg' : row.discount_type === 'fixed'}]" @click="onChangeLineDiscountType(index, 'fixed')" > - {{ $currency->symbol }} + {{ ($currency) ? $currency->symbol : '$' }}