diff --git a/app/Providers/Filament/TenantPanelProvider.php b/app/Providers/Filament/TenantPanelProvider.php index 0f3ab8f..615d3fb 100644 --- a/app/Providers/Filament/TenantPanelProvider.php +++ b/app/Providers/Filament/TenantPanelProvider.php @@ -214,6 +214,21 @@ class TenantPanelProvider extends PanelProvider BLADE) ) + // Small hint banner at the top of the main tenant dashboard. + ->renderHook( + PanelsRenderHook::PAGE_START, + fn (): string => Blade::render(<<<'BLADE' +
+ 💡 {{ __('Fiecare card e clicabil — duce la lista relevantă.') }} + + + {{ __('Nu vezi „?" pe pagini?') }} + {{ __('Activează sugestiile') }} → + +
+ BLADE), + scopes: [Dashboard::class], + ) ->renderHook( PanelsRenderHook::BODY_END, fn (): string => Blade::render(<<<'BLADE' diff --git a/app/Support/Hints.php b/app/Support/Hints.php index 0cd0ced..98ea2f5 100644 --- a/app/Support/Hints.php +++ b/app/Support/Hints.php @@ -97,6 +97,165 @@ class Hints 'en' => 'Each WO has a unique public token. "Tracking link" opens the customer-facing page you can send via SMS/WhatsApp/Telegram — status, ETA, photos.', ], ], + 'wo.dashboard.topbar_actions' => [ + 'area' => 'service', + 'title' => [ + 'ro' => 'Butoane rapide (top)', + 'ru' => 'Быстрые кнопки (верх)', + 'en' => 'Top-bar quick actions', + ], + 'body' => [ + 'ro' => '„Listă" — înapoi la toate fișele. „+ Nou" — creează una nouă (după save aterizezi tot pe dashboard). „Editare completă" — deschide formularul detaliat cu toate câmpurile. „Link tracking" — pagina publică pentru client.', + 'ru' => '«Список» — все заказы. «+ Новый» — создать (после сохранения снова дашборд). «Полное редактирование» — детальная форма. «Ссылка отслеживания» — публичная страница для клиента.', + 'en' => '"Listă" — back to all WOs. "+ Nou" — create a new one. "Editare completă" — full detail form. "Link tracking" — customer-facing public page.', + ], + ], + 'wo.dashboard.meta' => [ + 'area' => 'service', + 'title' => [ + 'ro' => 'Meta-antet (Data / ETA / Responsabil / Urgență)', + 'ru' => 'Мета-шапка (даты / ETA / мастер / срочность)', + 'en' => 'Meta header (dates / ETA / master / urgency)', + ], + 'body' => [ + 'ro' => 'Rezumat rapid al fișei. „Data creării" = când s-a introdus în sistem; „Deschis" = când s-a început efectiv lucrul; „ETA" = când promitem clientului. „Responsabil" = maistrul principal. „Urgență" influențează sortarea în calendar.', + 'ru' => 'Быстрый обзор заказа. «Дата создания» — когда завели, «Открыт» — когда начали работать, «ETA» — обещанное клиенту время, «Ответственный» — главный мастер, «Срочность» влияет на сортировку.', + 'en' => 'Quick snapshot: "Data creării" = when created; "Deschis" = actual work start; "ETA" = promised to client; "Responsabil" = primary master; "Urgență" affects calendar sort.', + ], + ], + 'wo.dashboard.tabs' => [ + 'area' => 'service', + 'title' => [ + 'ro' => 'Taburi (Lucrări/Piese/Diag/Foto/Doc/Note)', + 'ru' => 'Табы (Работы/Запчасти/Диаг./Фото/Док./Заметки)', + 'en' => 'Tabs (Works/Parts/Diag/Photos/Docs/Notes)', + ], + 'body' => [ + 'ro' => '„Lucrări" = manoperele efectuate. „Piese" = piesele consumate. „Diagnostic" = plângere client + concluzia mecanicului. „Foto" = poze de la lucrare. „Documente" = factura PDF + acte semnate. „Note" = observații interne, nu se văd de client.', + 'ru' => '«Работы» — выполненные работы. «Запчасти» — использованные. «Диагностика» — жалоба клиента + заключение мастера. «Фото» — фотки. «Документы» — счёт + подписанные акты. «Заметки» — внутренние, клиент не видит.', + 'en' => '"Works" = labor. "Parts" = consumed. "Diagnostic" = client complaint + master\'s conclusion. "Photos" = shoot from the job. "Docs" = invoice + signed papers. "Notes" = internal, not visible to client.', + ], + ], + 'wo.dashboard.history' => [ + 'area' => 'service', + 'title' => [ + 'ro' => 'Istoric reparații (mașină)', + 'ru' => 'История ремонтов (авто)', + 'en' => 'Repair history (vehicle)', + ], + 'body' => [ + 'ro' => 'Ultimele 5 fișe pentru această mașină. Click deschide dashboard-ul acelei fișe. Util să vezi ce s-a mai făcut înainte — evită sugestia dublă de lucrări.', + 'ru' => 'Последние 5 заказов по этому авто. Клик — открыть тот заказ. Полезно проверить, что уже делали, чтобы не предлагать повторно.', + 'en' => 'Last 5 WOs for this vehicle. Click opens that WO\'s dashboard. Handy to see prior work and avoid recommending duplicates.', + ], + ], + 'wo.dashboard.finance' => [ + 'area' => 'service', + 'title' => [ + 'ro' => 'Panou Finanțe (dreapta)', + 'ru' => 'Панель финансов (справа)', + 'en' => 'Finance panel (right)', + ], + 'body' => [ + 'ro' => 'Cost manopere + Cost piese = Subtotal. − Discount = Total. Plătit = suma încasată deja (din plăți). Sold = ce mai rămâne de plătit. Totul se recalculează automat când adaugi ceva.', + 'ru' => 'Стоимость работ + Стоимость запчастей = Промежуточный. − Скидка = Итого. «Оплачено» — уже внесено. «Остаток» — сколько ещё должен. Всё пересчитывается автоматом.', + 'en' => 'Labor + Parts = Subtotal. − Discount = Total. "Paid" = collected so far. "Balance" = still owed. Recomputes automatically.', + ], + ], + 'wo.dashboard.timeline' => [ + 'area' => 'service', + 'title' => [ + 'ro' => 'Timeline evenimente', + 'ru' => 'Лента событий', + 'en' => 'Event timeline', + ], + 'body' => [ + 'ro' => 'Cronologie automată: creare, deschidere, aprobare client, plăți primite, închidere, notificări trimise. Se agregă din câmpurile fișei + jurnalul de activitate. Util pentru audit.', + 'ru' => 'Автохронология: создание, открытие, подтверждение клиента, оплаты, закрытие, отправки уведомлений. Собирается из полей + журнала. Полезно для аудита.', + 'en' => 'Auto chronology: created, opened, approved, payments, closed, notifications sent. Aggregated from WO fields + activity log. Great for audit.', + ], + ], + 'wo.dashboard.bottom' => [ + 'area' => 'service', + 'title' => [ + 'ro' => 'Bara de jos (Prev/Next/Repetă/Închide)', + 'ru' => 'Нижняя панель (Пред./След./Повтор/Закрыть)', + 'en' => 'Bottom bar (Prev/Next/Repeat/Close)', + ], + 'body' => [ + 'ro' => 'Navighează rapid între fișe cu ← Precedent / Următor →. „Comandă repetată" creează o fișă nouă pre-populată cu același client + mașină. „Închide fișă" o marchează ca finalizată (status → done).', + 'ru' => 'Быстрое переключение ← Пред. / След. →. «Повторный заказ» создаёт новый с теми же клиентом+авто. «Закрыть заказ» помечает как выполненный.', + 'en' => 'Quick nav ← Prev / Next →. "Repeat order" creates a new WO pre-filled with same client + vehicle. "Close WO" marks it done.', + ], + ], + 'wo.create.overview' => [ + 'area' => 'service', + 'title' => [ + 'ro' => 'Fișă nouă — pași minimali', + 'ru' => 'Новый заказ — минимальные шаги', + 'en' => 'New WO — minimum steps', + ], + 'body' => [ + 'ro' => 'Obligatoriu: Client, Mașină, Data deschiderii. Numărul se generează automat (WO-{tenant}-{an}-{seq}). Poți adăuga direct un client nou / mașină nouă din meniul dropdown al câmpului. După save aterizezi pe dashboard.', + 'ru' => 'Обязательно: клиент, авто, дата открытия. Номер — авто. Клиента/авто можно добавить прямо из выпадашки. После сохранения — дашборд.', + 'en' => 'Required: Client, Vehicle, Opened at. Number is auto-generated. You can add a client/vehicle inline from the dropdown. After save you land on the dashboard.', + ], + ], + + 'crm.clients.overview' => [ + 'area' => 'crm', + 'title' => [ + 'ro' => 'Clienți — baza de date', + 'ru' => 'Клиенты — база', + 'en' => 'Clients database', + ], + 'body' => [ + 'ro' => 'Fiecare client are: nume, telefon, email, adresă, sursă (de unde ne-a găsit), notițe. Poți lega un cont Telegram — atunci mesajele merg automat pe Telegram. „Datorii" arată totalul restant din toate fișele deschise.', + 'ru' => 'У клиента: имя, телефон, email, адрес, источник, заметки. Можно привязать Telegram — тогда сообщения уходят в него. «Долг» — сумма непогашенных заказов.', + 'en' => 'Each client: name, phone, email, address, source, notes. You can link a Telegram account so messages route there. "Debt" totals unpaid WOs.', + ], + ], + 'crm.vehicles.overview' => [ + 'area' => 'crm', + 'title' => [ + 'ro' => 'Automobile — istoricul mașinilor', + 'ru' => 'Автомобили — история', + 'en' => 'Vehicles — history', + ], + 'body' => [ + 'ro' => 'Fiecare mașină aparține unui client și are: marca, model, an, VIN, plăcuță, motor, kilometraj. „Decode VIN" (buton pe tabelul mașinilor) folosește AI pentru a completa datele tehnice din VIN. Poți încărca poze pe mașină — prima apare pe dashboard fișă.', + 'ru' => 'У авто: марка, модель, год, VIN, номер, двигатель, пробег. «Decode VIN» — AI-заполнение по VIN. Фото на авто — первое показывается на дашборде заказа.', + 'en' => 'Each vehicle belongs to a client: make, model, year, VIN, plate, engine, mileage. "Decode VIN" (table action) uses AI to fill technical fields. Vehicle photos — first one shows on the WO dashboard.', + ], + ], + + 'finante.dashboard.stats' => [ + 'area' => 'finante', + 'title' => [ + 'ro' => 'Widget-uri dashboard (numere)', + 'ru' => 'Виджеты дашборда (числа)', + 'en' => 'Dashboard widgets (numbers)', + ], + 'body' => [ + 'ro' => 'Fiecare card e clicabil și duce la pagina relevantă cu filtrele setate. Ex: „Fișe în lucru" → lista filtrată pe status=in_work. „Datorii clienți" → fișe cu pay_status=unpaid. Cardurile se recalculează automat la fiecare vizită.', + 'ru' => 'Каждая карточка кликабельна и ведёт на страницу с настроенным фильтром. «Заказы в работе» → список по статусу in_work. «Долги» → неоплаченные. Пересчёт при каждом заходе.', + 'en' => 'Each stat card is clickable and jumps to the relevant page with filters applied. E.g. "Fișe în lucru" → list filtered by status=in_work. Recomputed on every visit.', + ], + ], + 'finante.expenses.overview' => [ + 'area' => 'finante', + 'title' => [ + 'ro' => 'Cheltuieli — flux de bani ieșit', + 'ru' => 'Расходы — исходящий поток', + 'en' => 'Expenses — money out', + ], + 'body' => [ + 'ro' => 'Categorie (chirie/utilități/piese/salarii/altele), sumă, dată, poza chitanței. Cheltuielile aici scad din profit (Dashboard → „Profit (luna)"). Distinct de „Achiziții" (piese pentru stoc care se recuperează la vânzare).', + 'ru' => 'Категория (аренда/коммунальные/запчасти/зарплата/др.), сумма, дата, фото чека. Уменьшают прибыль. Отличается от «Закупки» (запчасти в склад).', + 'en' => 'Category (rent/utilities/parts/salary/other), amount, date, receipt photo. Deducts from profit. Distinct from "Achiziții" (parts stocked to warehouse).', + ], + ], + 'wo.dashboard.chat' => [ 'area' => 'service', 'title' => [ diff --git a/lang/en.json b/lang/en.json index 3429dcb..78f129c 100644 --- a/lang/en.json +++ b/lang/en.json @@ -80,6 +80,7 @@ "Activează magazinul public la .service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat": "Enables the public shop at .service.mir.md/shop. Parts appear only if marked \"Published\".", "Activează magazinul public la .service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".": "Enables the public shop at .service.mir.md/shop. Parts appear only if marked \"Published\".", "Activează plata prin transfer": "Enable bank transfer", + "Activează sugestiile": "Turn on hints", "Activi": "Active", "Activitate recentă": "Recent activity", "Activă": "Active", @@ -843,6 +844,7 @@ "Față-Stânga": "Front-Left", "Februarie": "February", "Femeie": "Female", + "Fiecare card e clicabil — duce la lista relevantă.": "Every card is clickable — jumps to the relevant list.", "File": "File", "Files": "Files", "Filter": "Filter", @@ -1359,6 +1361,7 @@ "Nu pot porni camera: ": "Cannot start camera: ", "Nu re-trimite mai des de X zile": "Don't resend more often than every X days", "Nu te poți șterge pe tine!": "You can't delete yourself!", + "Nu vezi „?\" pe pagini?": "Don't see \"?\" on pages?", "Nu, renunță": "No, cancel", "Numar": "Number", "Number": "Number", diff --git a/lang/ru.json b/lang/ru.json index 8d4e081..f759bac 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -80,6 +80,7 @@ "Activează magazinul public la .service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat": "Активирует публичный магазин на .service.mir.md/shop. Запчасти появляются только если отмечены как «Опубликовано».", "Activează magazinul public la .service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".": "Активирует публичный магазин на .service.mir.md/shop. Запчасти появляются только если отмечены как «Опубликовано».", "Activează plata prin transfer": "Включить оплату переводом", + "Activează sugestiile": "Включить подсказки", "Activi": "Активные", "Activitate recentă": "Недавняя активность", "Activă": "Активна", @@ -843,6 +844,7 @@ "Față-Stânga": "Перед-Лево", "Februarie": "Февраль", "Femeie": "Женский", + "Fiecare card e clicabil — duce la lista relevantă.": "Каждая карточка кликабельна — открывает нужный список.", "File": "Файл", "Files": "Файлы", "Filter": "Фильтр", @@ -1359,6 +1361,7 @@ "Nu pot porni camera: ": "Не удалось запустить камеру: ", "Nu re-trimite mai des de X zile": "Не отправлять повторно чаще чем раз в X дней", "Nu te poți șterge pe tine!": "Нельзя удалить себя!", + "Nu vezi „?\" pe pagini?": "Не видишь «?» на страницах?", "Nu, renunță": "Нет, отменить", "Numar": "Номер", "Number": "Номер", diff --git a/resources/views/filament/tenant/pages/calendar.blade.php b/resources/views/filament/tenant/pages/calendar.blade.php index db20626..d9ef620 100644 --- a/resources/views/filament/tenant/pages/calendar.blade.php +++ b/resources/views/filament/tenant/pages/calendar.blade.php @@ -156,7 +156,7 @@
{{ __('CRM › Programări ›') }} {{ __('Calendar vizual') }}
-

{{ __('Calendar vizual') }}

+

{{ __('Calendar vizual') }}

@php diff --git a/resources/views/filament/tenant/pages/excel-import-wizard.blade.php b/resources/views/filament/tenant/pages/excel-import-wizard.blade.php index fe40051..e8632a9 100644 --- a/resources/views/filament/tenant/pages/excel-import-wizard.blade.php +++ b/resources/views/filament/tenant/pages/excel-import-wizard.blade.php @@ -49,7 +49,7 @@
{{-- STEP 1: Upload --}} @if ($step === 1) -

{{ __('Pasul 1: Încarcă fișierul') }}

+

{{ __('Pasul 1: Încarcă fișierul') }}

diff --git a/resources/views/filament/tenant/pages/pipeline-board.blade.php b/resources/views/filament/tenant/pages/pipeline-board.blade.php index f8eb8a5..b7a9165 100644 --- a/resources/views/filament/tenant/pages/pipeline-board.blade.php +++ b/resources/views/filament/tenant/pages/pipeline-board.blade.php @@ -199,7 +199,7 @@
{{-- TOPBAR --}}
- {{ __('Pipeline') }} + {{ __('Pipeline') }}