diff --git a/app/Repositories/Shop/Articles.php b/app/Repositories/Shop/Articles.php
index f16e3bbe..b5d79fd1 100644
--- a/app/Repositories/Shop/Articles.php
+++ b/app/Repositories/Shop/Articles.php
@@ -67,6 +67,11 @@ class Articles
return $data;
}
+ public static function getVisibilityMap()
+ {
+ return Article::pluck('visible', 'id')->toArray();
+ }
+
public static function getAll()
{
return Article::orderBy('name', 'asc')->get();
diff --git a/app/Repositories/Shop/Offers.php b/app/Repositories/Shop/Offers.php
index f5086997..dff17746 100644
--- a/app/Repositories/Shop/Offers.php
+++ b/app/Repositories/Shop/Offers.php
@@ -16,6 +16,7 @@ class Offers
{
return [
'articles' => Articles::getOptionsWithNature(),
+ 'article_visibilities' => Articles::getVisibilityMap(),
'tariffs' => Tariffs::getOptions(),
'tariff_statuses' => Tariffs::getStatusMap(),
'tariff_status_labels' => Tariffs::getStatuses(),
diff --git a/resources/views/Admin/Shop/Offers/form.blade.php b/resources/views/Admin/Shop/Offers/form.blade.php
index 2bc47f2a..1d0ff14c 100644
--- a/resources/views/Admin/Shop/Offers/form.blade.php
+++ b/resources/views/Admin/Shop/Offers/form.blade.php
@@ -154,6 +154,26 @@
initSelect2();
$('#status_id').bootstrapToggle();
+ // Article visibility badges in select2
+ var articleVisibilities = {!! json_encode($article_visibilities ?? (object)[]) !!};
+
+ function formatArticle(item) {
+ if (!item.id) return item.text;
+ var visible = articleVisibilities[item.id];
+ var badge = (visible == 1)
+ ? 'Visible'
+ : 'Invisible';
+ return $('' + item.text + badge + '');
+ }
+
+ $('#article_id').select2('destroy').select2({
+ placeholder: "{{ __('select_a_value') }}",
+ allowClear: false,
+ width: { value: '100%' },
+ templateResult: formatArticle,
+ templateSelection: formatArticle
+ });
+
// Tariff status badges in select2
var tariffStatuses = {!! json_encode($tariff_statuses ?? (object)[]) !!};
var tariffStatusLabels = {!! json_encode($tariff_status_labels ?? []) !!};