feat(i18n): fix widgets, pipeline & mechanic boards + missing translations
Follow-up to previous i18n pass — user reported many visible RO strings on
EN/RU locales because auto-wrap missed:
- Stat::make() first-arg labels in StatsOverview, FinanceOverview, PlatformStats
- $heading static in LowStockTable (converted to getHeading() method)
- Pipeline board Blade view: 40+ literal strings wrapped with {{ __() }}
- Mechanic board Blade view: statuses, buttons, block modal
- PipelineBoard.php hardcoded tag labels, stage labels, notify strings
- MechanicBoard.php confirmBlock notification
Added human RU + EN translations for the visible strings shown in the
screenshots (dashboard widgets, Client/Vehicle list breadcrumbs & columns,
pipeline board topbar/stats/filters/cards/detail panel/quick actions,
mechanic board stats/statuses/block modal). All 306 tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -33,29 +33,29 @@ class PlatformStats extends BaseWidget
|
||||
->count();
|
||||
|
||||
return [
|
||||
Stat::make('Tenants total', $total)
|
||||
->description('Toate companiile')
|
||||
Stat::make(__('Tenants total'), $total)
|
||||
->description(__('Toate companiile'))
|
||||
->descriptionIcon('heroicon-m-building-office-2')
|
||||
->color('primary')
|
||||
->url(\App\Filament\Central\Resources\CompanyResource::getUrl('index')),
|
||||
Stat::make('Active', $active)
|
||||
Stat::make(__('Active'), $active)
|
||||
->description(__("✓ Pe abonament plătit"))
|
||||
->descriptionIcon('heroicon-m-check-circle')
|
||||
->color('success'),
|
||||
Stat::make('În trial', $trial)
|
||||
->description($trial > 0 ? 'Posibili clienți noi' : '—')
|
||||
Stat::make(__('În trial'), $trial)
|
||||
->description($trial > 0 ? __('Posibili clienți noi') : '—')
|
||||
->descriptionIcon('heroicon-m-clock')
|
||||
->color('warning'),
|
||||
Stat::make('Expiră < 7 zile', $expiring)
|
||||
->description($expiring > 0 ? '⚠ Acțiune necesară' : 'Toate ok')
|
||||
Stat::make(__('Expiră < 7 zile'), $expiring)
|
||||
->description($expiring > 0 ? __('⚠ Acțiune necesară') : __('Toate ok'))
|
||||
->descriptionIcon('heroicon-m-exclamation-triangle')
|
||||
->color($expiring > 0 ? 'danger' : 'success'),
|
||||
Stat::make('Venit luna curentă', number_format($mrr, 0, ',', ' ') . ' MDL')
|
||||
Stat::make(__('Venit luna curentă'), number_format($mrr, 0, ',', ' ') . ' MDL')
|
||||
->description(__('MRR realizat'))
|
||||
->descriptionIcon('heroicon-m-banknotes')
|
||||
->color('success'),
|
||||
Stat::make('Facturi neplătite', $overdue)
|
||||
->description($overdue > 0 ? 'Verifică și amintește' : 'Toate plătite')
|
||||
Stat::make(__('Facturi neplătite'), $overdue)
|
||||
->description($overdue > 0 ? __('Verifică și amintește') : __('Toate plătite'))
|
||||
->descriptionIcon('heroicon-m-exclamation-circle')
|
||||
->color($overdue > 0 ? 'danger' : 'gray')
|
||||
->url(\App\Filament\Central\Resources\SubscriptionResource::getUrl('index') . '?activeTab=overdue'),
|
||||
|
||||
@@ -171,7 +171,7 @@ class PipelineBoard extends Page
|
||||
$list = array_values($cards[$key]);
|
||||
$sum = array_sum(array_map(fn ($c) => (float) $c['amount'], $list));
|
||||
$columns[$key] = [
|
||||
'label' => $label,
|
||||
'label' => __($label),
|
||||
'color' => $color,
|
||||
'count' => count($list),
|
||||
'sum' => $sum,
|
||||
@@ -238,7 +238,7 @@ class PipelineBoard extends Page
|
||||
}
|
||||
Lead::create(array_merge($data, ['status' => 'new']));
|
||||
$this->showNewForm = false;
|
||||
$this->notify('Cerere nouă adăugată');
|
||||
$this->notify(__('Cerere nouă adăugată'));
|
||||
}
|
||||
|
||||
public function exportCsv()
|
||||
@@ -398,10 +398,10 @@ class PipelineBoard extends Page
|
||||
'date' => today()->addDay(),
|
||||
'time_start' => '10:00',
|
||||
'time_end' => '11:00',
|
||||
'title' => $title ?: 'Programare',
|
||||
'title' => $title ?: __('Programare'),
|
||||
'status' => 'scheduled',
|
||||
]);
|
||||
$this->notify("Programare creată · mâine 10:00");
|
||||
$this->notify(__('Programare creată · mâine 10:00'));
|
||||
$this->openCardKey = null;
|
||||
}
|
||||
|
||||
@@ -439,7 +439,7 @@ class PipelineBoard extends Page
|
||||
$tags[] = ['label' => Lead::SOURCES[$lead->source] ?? $lead->source, 'color' => 'gray'];
|
||||
}
|
||||
if ($lead->status === 'no_answer') {
|
||||
$tags[] = ['label' => 'Fără răspuns', 'color' => 'red'];
|
||||
$tags[] = ['label' => __('Fără răspuns'), 'color' => 'red'];
|
||||
}
|
||||
$diffMin = $lead->created_at?->diffInMinutes(now()) ?? 0;
|
||||
$overdue = $diffMin > 60 && $lead->status !== 'contacted';
|
||||
@@ -450,7 +450,7 @@ class PipelineBoard extends Page
|
||||
'code' => 'CR-' . str_pad((string) $lead->id, 4, '0', STR_PAD_LEFT),
|
||||
'subject' => trim(($lead->car ?: '') . ' ' . ($lead->model ?: '')) ?: $lead->name,
|
||||
'plate' => $lead->car ?: '',
|
||||
'client_name' => $lead->name ?: 'Anonim',
|
||||
'client_name' => $lead->name ?: __('Anonim'),
|
||||
'phone' => $lead->phone,
|
||||
'source' => $lead->source,
|
||||
'amount' => (float) $lead->budget,
|
||||
@@ -470,7 +470,7 @@ class PipelineBoard extends Page
|
||||
{
|
||||
$tags = [];
|
||||
if ($deal->urgent) {
|
||||
$tags[] = ['label' => 'Urgent', 'color' => 'red'];
|
||||
$tags[] = ['label' => __('Urgent'), 'color' => 'red'];
|
||||
}
|
||||
if ($deal->source && in_array($deal->source, ['instagram', 'site', 'call', 'whatsapp', 'telegram'])) {
|
||||
$tags[] = ['label' => Lead::SOURCES[$deal->source] ?? $deal->source, 'color' => 'gray'];
|
||||
@@ -542,23 +542,23 @@ class PipelineBoard extends Page
|
||||
private function woCard(WorkOrder $wo): array
|
||||
{
|
||||
$tags = [];
|
||||
$tags[] = ['label' => "Fișă {$wo->number}", 'color' => 'purple'];
|
||||
$tags[] = ['label' => __('Fișă') . " {$wo->number}", 'color' => 'purple'];
|
||||
if ($wo->status === 'agreement') {
|
||||
$tags[] = ['label' => 'Necesită aprobare', 'color' => 'amber'];
|
||||
$tags[] = ['label' => __('Necesită aprobare'), 'color' => 'amber'];
|
||||
}
|
||||
if ($wo->status === 'awaiting_parts') {
|
||||
$tags[] = ['label' => 'Așteaptă piese', 'color' => 'amber'];
|
||||
$tags[] = ['label' => __('Așteaptă piese'), 'color' => 'amber'];
|
||||
}
|
||||
if ($wo->status === 'ready') {
|
||||
$tags[] = ['label' => 'Gata', 'color' => 'green'];
|
||||
$tags[] = ['label' => __('Gata'), 'color' => 'green'];
|
||||
if ($wo->pay_status === 'partial') {
|
||||
$tags[] = ['label' => 'Avans achitat', 'color' => 'blue'];
|
||||
$tags[] = ['label' => __('Avans achitat'), 'color' => 'blue'];
|
||||
} elseif ($wo->pay_status !== 'paid') {
|
||||
$tags[] = ['label' => 'Neachitat', 'color' => 'amber'];
|
||||
$tags[] = ['label' => __('Neachitat'), 'color' => 'amber'];
|
||||
}
|
||||
}
|
||||
if ($wo->status === 'done' && $wo->pay_status === 'paid') {
|
||||
$tags[] = ['label' => '✓ Achitat', 'color' => 'green'];
|
||||
$tags[] = ['label' => __('✓ Achitat'), 'color' => 'green'];
|
||||
}
|
||||
|
||||
$progress = null;
|
||||
@@ -710,7 +710,7 @@ class PipelineBoard extends Page
|
||||
default => 'edit',
|
||||
},
|
||||
'color' => 'blue',
|
||||
'text' => $a->description ?: ucfirst($a->event ?? 'actualizat'),
|
||||
'text' => $a->description ?: ucfirst($a->event ?? __('actualizat')),
|
||||
'time' => $a->created_at?->diffForHumans(),
|
||||
];
|
||||
}
|
||||
@@ -720,7 +720,7 @@ class PipelineBoard extends Page
|
||||
|
||||
private function stageStepper(int $currentIdx): array
|
||||
{
|
||||
$labels = ['Cerere', 'Calcul.', 'Programat', 'În lucru', 'Gata', 'Achitat'];
|
||||
$labels = [__('Cerere'), __('Calcul.'), __('Programat'), __('În lucru'), __('Gata'), __('Achitat')];
|
||||
$out = [];
|
||||
foreach ($labels as $i => $label) {
|
||||
$out[] = [
|
||||
|
||||
@@ -30,20 +30,20 @@ class FinanceOverview extends BaseWidget
|
||||
$debt = max(0, $debtTotal - $paidOnDebt);
|
||||
|
||||
return [
|
||||
Stat::make('Încasări (luna)', number_format($income, 2, '.', ' ') . ' MDL')
|
||||
Stat::make(__('Încasări (luna)'), number_format($income, 2, '.', ' ') . ' MDL')
|
||||
->icon('heroicon-o-arrow-trending-up')
|
||||
->color('success')
|
||||
->description(now()->translatedFormat('F Y')),
|
||||
|
||||
Stat::make('Cheltuieli (luna)', number_format($expenses, 2, '.', ' ') . ' MDL')
|
||||
Stat::make(__('Cheltuieli (luna)'), number_format($expenses, 2, '.', ' ') . ' MDL')
|
||||
->icon('heroicon-o-arrow-trending-down')
|
||||
->color('danger'),
|
||||
|
||||
Stat::make('Profit (luna)', number_format($profit, 2, '.', ' ') . ' MDL')
|
||||
Stat::make(__('Profit (luna)'), number_format($profit, 2, '.', ' ') . ' MDL')
|
||||
->icon('heroicon-o-banknotes')
|
||||
->color($profit >= 0 ? 'success' : 'danger'),
|
||||
|
||||
Stat::make('Datorii clienți', number_format($debt, 2, '.', ' ') . ' MDL')
|
||||
Stat::make(__('Datorii clienți'), number_format($debt, 2, '.', ' ') . ' MDL')
|
||||
->icon('heroicon-o-exclamation-circle')
|
||||
->color($debt > 0 ? 'warning' : 'success'),
|
||||
];
|
||||
|
||||
@@ -13,7 +13,12 @@ class LowStockTable extends BaseWidget
|
||||
|
||||
protected int|string|array $columnSpan = 'full';
|
||||
|
||||
protected static ?string $heading = '⚠️ Stoc minim atins';
|
||||
protected static ?string $heading = null;
|
||||
|
||||
public function getHeading(): string
|
||||
{
|
||||
return '⚠️ ' . __('Stoc minim atins');
|
||||
}
|
||||
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
|
||||
@@ -21,27 +21,27 @@ class StatsOverview extends BaseWidget
|
||||
$todayAppointments = Appointment::whereDate('date', today())->count();
|
||||
|
||||
return [
|
||||
Stat::make('Clienți', Client::count())
|
||||
Stat::make(__('Clienți'), Client::count())
|
||||
->description(__('Total în baza de date'))
|
||||
->icon('heroicon-o-users')
|
||||
->color('primary'),
|
||||
|
||||
Stat::make('Mașini', Vehicle::count())
|
||||
Stat::make(__('Mașini'), Vehicle::count())
|
||||
->description(__('Total înregistrate'))
|
||||
->icon('heroicon-o-truck')
|
||||
->color('info'),
|
||||
|
||||
Stat::make('Cereri noi', $newLeads)
|
||||
Stat::make(__('Cereri noi'), $newLeads)
|
||||
->description(__('De procesat'))
|
||||
->icon('heroicon-o-inbox-arrow-down')
|
||||
->color($newLeads > 0 ? 'warning' : 'success'),
|
||||
|
||||
Stat::make('Deal-uri active', $openDeals)
|
||||
Stat::make(__('Deal-uri active'), $openDeals)
|
||||
->description(__('În pipeline'))
|
||||
->icon('heroicon-o-funnel')
|
||||
->color('primary'),
|
||||
|
||||
Stat::make('Programări azi', $todayAppointments)
|
||||
Stat::make(__('Programări azi'), $todayAppointments)
|
||||
->description(today()->format('d.m.Y'))
|
||||
->icon('heroicon-o-calendar')
|
||||
->color('success'),
|
||||
|
||||
+124
-14
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"#": "#",
|
||||
"$n sesiuni revoke-uite": "$n sesiuni revoke-uite",
|
||||
"% Manopere": "% Manopere",
|
||||
"% Piese": "% Piese",
|
||||
@@ -33,6 +34,7 @@
|
||||
"Acces în aplicație (opțional)": "Acces în aplicație (opțional)",
|
||||
"Această acțiune este ireversibilă": "This action is irreversible",
|
||||
"Achitat": "Paid",
|
||||
"Achitat azi": "Paid today",
|
||||
"Achiziții": "Purchases",
|
||||
"Acord": "Agreement",
|
||||
"Acordat de": "Acordat de",
|
||||
@@ -40,6 +42,7 @@
|
||||
"Activ": "Active",
|
||||
"Activare": "Activation",
|
||||
"Active": "Active",
|
||||
"Active acum": "Active now",
|
||||
"Activează": "Activate",
|
||||
"Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.": "Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.",
|
||||
"Activează PayPal": "Activează PayPal",
|
||||
@@ -49,14 +52,17 @@
|
||||
"Activează magazinul public la <slug>.service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".": "Activează magazinul public la <slug>.service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".",
|
||||
"Activează plata prin transfer": "Activează plata prin transfer",
|
||||
"Activi": "Active",
|
||||
"Activitate recentă": "Recent activity",
|
||||
"Activă": "Active",
|
||||
"Actualizat la": "Updated at",
|
||||
"Actualizează": "Update",
|
||||
"Acțiune": "Action",
|
||||
"Acțiuni rapide": "Quick actions",
|
||||
"Acțiuni în bulk": "Bulk actions",
|
||||
"Acțiuni în masă": "Bulk actions",
|
||||
"Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.": "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.",
|
||||
"Adaugă auto": "Add vehicle",
|
||||
"Adaugă cerere": "Add lead",
|
||||
"Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.": "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.",
|
||||
"Adaugă cheltuială": "Add expense",
|
||||
"Adaugă client": "Add client",
|
||||
@@ -91,6 +97,7 @@
|
||||
"Ai uitat parola?": "Forgot password?",
|
||||
"Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".": "Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".",
|
||||
"Aici apar clienții care și-au creat cont în magazinul online (/shop/register).": "Aici apar clienții care și-au creat cont în magazinul online (/shop/register).",
|
||||
"Ale mele": "Mine",
|
||||
"Aleatoriu": "Random",
|
||||
"Alege categorie": "Choose category",
|
||||
"Alege client": "Choose client",
|
||||
@@ -107,16 +114,19 @@
|
||||
"Alege vehicul": "Choose vehicle",
|
||||
"Alfabetic": "Alphabetically",
|
||||
"Alte cheltuieli": "Other expenses",
|
||||
"Altă problemă": "Other problem",
|
||||
"An": "Year",
|
||||
"An fabricație": "Model year",
|
||||
"Angajat din": "Angajat din",
|
||||
"Ani": "Years",
|
||||
"Anonim": "Anonymous",
|
||||
"Antet": "Header",
|
||||
"Antet fișă": "Order header",
|
||||
"Anual": "Anual",
|
||||
"Anul curent": "Current year",
|
||||
"Anul trecut": "Last year",
|
||||
"Anulat": "Cancelled",
|
||||
"Anulează": "Cancel",
|
||||
"Anulează fișa": "Cancel order",
|
||||
"Anvelope": "Tires",
|
||||
"Apare în magazinul online public.": "Apare în magazinul online public.",
|
||||
@@ -154,9 +164,15 @@
|
||||
"Autentificare": "Login",
|
||||
"Autentificare 2FA": "2FA authentication",
|
||||
"Auto": "Vehicle",
|
||||
"Auto / model": "Vehicle / model",
|
||||
"AutoCRM SRL": "AutoCRM SRL",
|
||||
"Automobile": "Vehicles",
|
||||
"Avans": "Advance",
|
||||
"Avans achitat": "Advance paid",
|
||||
"Avg zile": "Avg zile",
|
||||
"Azi": "Today",
|
||||
"Așteaptă piese": "Awaiting parts",
|
||||
"Aștept aprobare client": "Awaiting client approval",
|
||||
"Așteptată": "Expected",
|
||||
"BIC / SWIFT": "BIC / SWIFT",
|
||||
"Backup": "Backup",
|
||||
@@ -169,8 +185,11 @@
|
||||
"Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.",
|
||||
"Bifă": "Check",
|
||||
"Bine ai venit": "Welcome",
|
||||
"Blocat": "Blocked",
|
||||
"Blocată": "Blocked",
|
||||
"Blochează": "Block",
|
||||
"Blochez": "Block",
|
||||
"Blochez lucrarea": "Block the work",
|
||||
"Boală": "Sick",
|
||||
"Bon": "Receipt",
|
||||
"Bonuri": "Receipts",
|
||||
@@ -186,7 +205,9 @@
|
||||
"Bună ziua": "Hello",
|
||||
"CSV": "CSV",
|
||||
"Calcul": "Calcul",
|
||||
"Calcul.": "Quote",
|
||||
"Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori",
|
||||
"Calculație": "Quote",
|
||||
"Calculează luna curentă": "Calculează luna curentă",
|
||||
"Calendar": "Calendar",
|
||||
"Calendar vizual": "Calendar vizual",
|
||||
@@ -204,15 +225,22 @@
|
||||
"Categorie implicită": "Default category",
|
||||
"Categorii": "Categorii",
|
||||
"Caută": "Search",
|
||||
"Caută client, mașină, număr...": "Search client, vehicle, number...",
|
||||
"Caută în tabel": "Search in table",
|
||||
"Caz asigurare": "Caz asigurare",
|
||||
"Caz de asigurare": "Caz de asigurare",
|
||||
"Ce a spus clientul...": "What the client said...",
|
||||
"Cerere": "Lead",
|
||||
"Cerere nouă": "New lead",
|
||||
"Cerere nouă adăugată": "New lead added",
|
||||
"Cereri": "Leads",
|
||||
"Cereri noi": "New leads",
|
||||
"Check-in depozit": "Check-in depozit",
|
||||
"Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.": "Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.",
|
||||
"Cheie": "Cheie",
|
||||
"Cheltuială": "Expense",
|
||||
"Cheltuieli": "Expenses",
|
||||
"Cheltuieli (luna)": "Expenses (month)",
|
||||
"Cheltuit": "Spent",
|
||||
"Cheltuit 90d": "Cheltuit 90d",
|
||||
"Chitanțe": "Receipts",
|
||||
@@ -223,7 +251,7 @@
|
||||
"Claude API Key": "Claude API Key",
|
||||
"Client": "Client",
|
||||
"Client & Auto": "Client & Auto",
|
||||
"Client CRM": "Client CRM",
|
||||
"Client CRM": "CRM client",
|
||||
"Client ID": "Client ID",
|
||||
"Client VIP": "Client VIP",
|
||||
"Client existent": "Existing client",
|
||||
@@ -285,9 +313,11 @@
|
||||
"Creat de": "Created by",
|
||||
"Creat la": "Created at",
|
||||
"Create": "Create",
|
||||
"Created at": "Created at",
|
||||
"Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.": "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.",
|
||||
"Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.": "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.",
|
||||
"Credit": "Credit",
|
||||
"Creează cerere": "Create lead",
|
||||
"Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.": "Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.",
|
||||
"Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.": "Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.",
|
||||
"Crescător": "Ascending",
|
||||
@@ -330,6 +360,7 @@
|
||||
"Date personale": "Date personale",
|
||||
"Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.": "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.",
|
||||
"Datorie": "Debt",
|
||||
"Datorii clienți": "Client debt",
|
||||
"Daune": "Daune",
|
||||
"De către": "De către",
|
||||
"De la": "From",
|
||||
@@ -337,8 +368,10 @@
|
||||
"De la data": "From date",
|
||||
"De la ora": "From time",
|
||||
"De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).",
|
||||
"De procesat": "De procesat",
|
||||
"De procesat": "To process",
|
||||
"Deal": "Deal",
|
||||
"Deal nou": "New deal",
|
||||
"Deal-uri active": "Active deals",
|
||||
"Deals": "Deals",
|
||||
"Debit": "Debit",
|
||||
"Deblochează": "Unblock",
|
||||
@@ -356,10 +389,15 @@
|
||||
"Depozit implicit": "Default warehouse",
|
||||
"Depozit țintă": "Target warehouse",
|
||||
"Depublică": "Unpublish",
|
||||
"Depășit termen": "Overdue",
|
||||
"Descarcă PDF": "Download PDF",
|
||||
"Descarcă factura": "Download invoice",
|
||||
"Descarcă template": "Download template",
|
||||
"Deschide": "Open",
|
||||
"Deschide Fișă": "Open order",
|
||||
"Deschide deal": "Open deal",
|
||||
"Deschide fișa": "Open order",
|
||||
"Deschide fișa pentru aprobare lucrare/piesă.": "Open the order to approve work/part.",
|
||||
"Deschide tenantul": "Deschide tenantul",
|
||||
"Deschis": "Opened",
|
||||
"Deschis la": "Opened at",
|
||||
@@ -367,6 +405,7 @@
|
||||
"Descriere": "Description",
|
||||
"Descriere produs": "Product description",
|
||||
"Detalii": "Details",
|
||||
"Detalii (opțional)": "Details (optional)",
|
||||
"Detalii auto": "Vehicle details",
|
||||
"Detalii client": "Client details",
|
||||
"Detalii comandă": "Order details",
|
||||
@@ -395,6 +434,7 @@
|
||||
"Doar utilizatorii mei": "My users only",
|
||||
"Document": "Document",
|
||||
"Documente": "Documents",
|
||||
"Done": "Done",
|
||||
"Downgrade": "Downgrade",
|
||||
"Drept": "Permission",
|
||||
"Drepturi": "Permissions",
|
||||
@@ -408,7 +448,9 @@
|
||||
"Durată reală": "Actual duration",
|
||||
"EJk...": "EJk...",
|
||||
"ETA": "ETA",
|
||||
"Echipament defect": "Broken equipment",
|
||||
"Edit": "Edit",
|
||||
"Editare": "Edit",
|
||||
"Editează": "Edit",
|
||||
"Editează drepturi": "Editează drepturi",
|
||||
"Editează produs": "Edit product",
|
||||
@@ -429,6 +471,7 @@
|
||||
"Ex: 20": "Ex: 20",
|
||||
"Ex: 20 pentru +20%": "Ex: 20 pentru +20%",
|
||||
"Ex: 25": "Ex: 25",
|
||||
"Ex: Lipsește filtrul Mann W712/83": "e.g. Missing filter Mann W712/83",
|
||||
"Ex: Pod 1, Curte 1, Atelier electric": "Ex: Pod 1, Curte 1, Atelier electric",
|
||||
"Ex: cu lift, fără lift, doar diagnoză...": "Ex: cu lift, fără lift, doar diagnoză...",
|
||||
"Ex: lockdown temporar; acces pentru audit; etc.": "Ex: lockdown temporar; acces pentru audit; etc.",
|
||||
@@ -436,11 +479,14 @@
|
||||
"Excepții": "Overrides",
|
||||
"Excepții drepturi": "Permission overrides",
|
||||
"Expiră": "Expiră",
|
||||
"Expiră < 7 zile": "Expires < 7 days",
|
||||
"Expiră la (opțional)": "Expiră la (opțional)",
|
||||
"Export": "Export",
|
||||
"Export CSV": "Export CSV",
|
||||
"Extras": "Statement",
|
||||
"Ești sigur?": "Are you sure?",
|
||||
"Facturi": "Invoices",
|
||||
"Facturi neplătite": "Unpaid invoices",
|
||||
"Facturi pending / overdue": "Facturi pending / overdue",
|
||||
"Factură": "Invoice",
|
||||
"Factură importată": "Factură importată",
|
||||
@@ -453,7 +499,7 @@
|
||||
"Filters": "Filters",
|
||||
"Filtre": "Filters",
|
||||
"Filtru": "Filter",
|
||||
"Finalizat": "Completed",
|
||||
"Finalizat": "Done",
|
||||
"Financiar": "Financiar",
|
||||
"Finanțe": "Finanțe",
|
||||
"Fișe": "Orders",
|
||||
@@ -464,6 +510,7 @@
|
||||
"Fișiere": "Files",
|
||||
"Fișă": "Order",
|
||||
"Fișă asociată": "Fișă asociată",
|
||||
"Fișă de lucru": "Work order",
|
||||
"Fișă lucru": "Fișă lucru",
|
||||
"Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.": "Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.",
|
||||
"Folosit dacă markup = 0.": "Folosit dacă markup = 0.",
|
||||
@@ -486,7 +533,10 @@
|
||||
"Furnizor preferat": "Furnizor preferat",
|
||||
"Furnizori": "Suppliers",
|
||||
"Fără TVA": "Without VAT",
|
||||
"Fără răspuns": "No answer",
|
||||
"Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.": "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.",
|
||||
"Gata": "Ready",
|
||||
"Gata de ridicare": "Ready for pickup",
|
||||
"Gata estimat (ETA)": "Gata estimat (ETA)",
|
||||
"Gemini API Key": "Gemini API Key",
|
||||
"General": "General",
|
||||
@@ -495,6 +545,7 @@
|
||||
"Generează raport": "Generate report",
|
||||
"Generează token": "Generează token",
|
||||
"Global": "Global",
|
||||
"Gol — trage un card aici": "Empty — drop a card here",
|
||||
"Grafic": "Chart",
|
||||
"Gravitate": "Gravitate",
|
||||
"Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.",
|
||||
@@ -567,8 +618,11 @@
|
||||
"Limite": "Limite",
|
||||
"Linii": "Linii",
|
||||
"Link client (QR)": "Link client (QR)",
|
||||
"Link tracking": "Tracking link",
|
||||
"Lipsă": "Lipsă",
|
||||
"Lipsă piesă": "Missing part",
|
||||
"Liste configurabile": "Configurable lists",
|
||||
"Listă": "List",
|
||||
"Livrare": "Livrare",
|
||||
"Livrare (zile)": "Livrare (zile)",
|
||||
"Livrare gratuită peste": "Livrare gratuită peste",
|
||||
@@ -599,7 +653,9 @@
|
||||
"Luni (zi)": "Monday",
|
||||
"Lățime": "Lățime",
|
||||
"MD00 AG00 0000 ...": "MD00 AG00 0000 ...",
|
||||
"MRR realizat": "MRR realizat",
|
||||
"MDL pipeline total": "MDL pipeline total",
|
||||
"MDL închise azi": "MDL closed today",
|
||||
"MRR realizat": "Realized MRR",
|
||||
"Magazin": "Magazin",
|
||||
"Magazin activ": "Magazin activ",
|
||||
"Magazin online": "Online shop",
|
||||
@@ -610,6 +666,7 @@
|
||||
"Manopere": "Labor lines",
|
||||
"Manoperă": "Labor",
|
||||
"Marca": "Marca",
|
||||
"Marchează Gata": "Mark ready",
|
||||
"Marchează acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).",
|
||||
"Marchează anulat": "Mark as cancelled",
|
||||
"Marchează plătit": "Mark as paid",
|
||||
@@ -636,7 +693,7 @@
|
||||
"Max mașini": "Max mașini",
|
||||
"Max useri": "Max useri",
|
||||
"Mașina e gata de ridicat": "Mașina e gata de ridicat",
|
||||
"Mașini": "Mașini",
|
||||
"Mașini": "Vehicles",
|
||||
"Mecanic implicit": "Default mechanic",
|
||||
"Mediu": "Medium",
|
||||
"Merchant Code": "Merchant Code",
|
||||
@@ -671,6 +728,10 @@
|
||||
"Mulțumim": "Thank you",
|
||||
"Mâine": "Tomorrow",
|
||||
"Mărci auto suportate (separate prin virgulă)": "Mărci auto suportate (separate prin virgulă)",
|
||||
"Neachitat": "Unpaid",
|
||||
"Necesită acțiune": "Needs action",
|
||||
"Necesită aprobare": "Needs approval",
|
||||
"Necesită aprobare client": "Needs client approval",
|
||||
"Necesită cel puțin 2 recepții complete cu data așteptată setată.": "Necesită cel puțin 2 recepții complete cu data așteptată setată.",
|
||||
"Necompletat": "Empty",
|
||||
"Necunoscut": "Unknown",
|
||||
@@ -680,6 +741,8 @@
|
||||
"Nesincronizat": "Not synced",
|
||||
"Net 30 / Avans": "Net 30 / Avans",
|
||||
"Neverificat": "Not verified",
|
||||
"New client": "New client",
|
||||
"New mașină": "New vehicle",
|
||||
"Nicio comandă încă": "Nicio comandă încă",
|
||||
"Nicio daună marcată": "Nicio daună marcată",
|
||||
"Nicio factură generată": "Nicio factură generată",
|
||||
@@ -688,7 +751,7 @@
|
||||
"Nicio lucrare la terți": "Nicio lucrare la terți",
|
||||
"Nicio mașină încă": "Nicio mașină încă",
|
||||
"Nicio piesă implicită": "Nicio piesă implicită",
|
||||
"Niciodată": "Niciodată",
|
||||
"Niciodată": "Never",
|
||||
"Niciun client magazin": "Niciun client magazin",
|
||||
"Niciun client încă": "Niciun client încă",
|
||||
"Niciun cod cross": "Niciun cod cross",
|
||||
@@ -712,6 +775,8 @@
|
||||
"Notifications": "Notifications",
|
||||
"Notificări": "Notifications",
|
||||
"Notițe": "Notes",
|
||||
"Notițe / Reclamație": "Notes / Complaint",
|
||||
"Notițe / reclamație": "Notes / complaint",
|
||||
"Notițe interne": "Notițe interne",
|
||||
"Nou": "New",
|
||||
"Nou tehnician": "Nou tehnician",
|
||||
@@ -783,7 +848,9 @@
|
||||
"Pas 2 — Brand & limbă": "Pas 2 — Brand & limbă",
|
||||
"Pas 3 — Tarif & terminat": "Pas 3 — Tarif & terminat",
|
||||
"Pauză": "Pause",
|
||||
"Pe pauză": "Paused",
|
||||
"Penalizări": "Penalizări",
|
||||
"Per page": "Per page",
|
||||
"Perioada (YYYY-MM)": "Perioada (YYYY-MM)",
|
||||
"Perioadă": "Period",
|
||||
"Perioadă (YYYY-MM)": "Perioadă (YYYY-MM)",
|
||||
@@ -819,6 +886,7 @@
|
||||
"Politici": "Policies",
|
||||
"Pontaj": "Timesheet",
|
||||
"Populare": "Popular",
|
||||
"Posibili clienți noi": "Potential new clients",
|
||||
"Post actualizat": "Post actualizat",
|
||||
"Poze": "Photos",
|
||||
"Pozele auto": "Vehicle photos",
|
||||
@@ -865,13 +933,20 @@
|
||||
"Profil": "Profil",
|
||||
"Profile": "Profile",
|
||||
"Profit": "Profit",
|
||||
"Profit (luna)": "Profit (month)",
|
||||
"Programare": "Appointment",
|
||||
"Programare adăugată": "Programare adăugată",
|
||||
"Programare confirmată": "Programare confirmată",
|
||||
"Programare creată · mâine 10:00": "Appointment created · tomorrow 10:00",
|
||||
"Programare mutată": "Programare mutată",
|
||||
"Programare ștearsă": "Programare ștearsă",
|
||||
"Programat": "Scheduled",
|
||||
"Programează": "Schedule",
|
||||
"Programează întâlnire": "Schedule meeting",
|
||||
"Programări": "Appointments",
|
||||
"Programări azi": "Appointments today",
|
||||
"Progres": "Progres",
|
||||
"Progres etapă": "Stage progress",
|
||||
"Proprietar": "Owner",
|
||||
"Provider implicit": "Provider implicit",
|
||||
"Public": "Public",
|
||||
@@ -891,6 +966,7 @@
|
||||
"ROI": "ROI",
|
||||
"Rapoarte": "Reports",
|
||||
"Raport": "Report",
|
||||
"Rata conversie": "Conversion rate",
|
||||
"Rating": "Rating",
|
||||
"Rating actualizat → {$score}★": "Rating actualizat → {$score}★",
|
||||
"Reactivează": "Reactivate",
|
||||
@@ -963,6 +1039,7 @@
|
||||
"Rânduri": "Rows",
|
||||
"Rânduri per pagină": "Rows per page",
|
||||
"Rămas": "Rămas",
|
||||
"SMS": "SMS",
|
||||
"Salarii": "Payroll",
|
||||
"Salariu & comisioane": "Salariu & comisioane",
|
||||
"Salariu & marjă": "Salary & margin",
|
||||
@@ -1000,6 +1077,7 @@
|
||||
"Selectează fișier": "Select file",
|
||||
"Selectează furnizorul": "Selectează furnizorul",
|
||||
"Selectează interval": "Select range",
|
||||
"Selectează motivul pentru care lucrarea nu poate continua. Va fi vizibil managerului.": "Select the reason why work cannot continue. Visible to the manager.",
|
||||
"Selectează oră": "Select time",
|
||||
"Selectează perioadă": "Select period",
|
||||
"Semnat": "Signed",
|
||||
@@ -1045,12 +1123,15 @@
|
||||
"Specificații": "Specificații",
|
||||
"Standard": "Standard",
|
||||
"Stare": "Stare",
|
||||
"Stare timp": "Time state",
|
||||
"Start": "Start",
|
||||
"Status": "Status",
|
||||
"Status dosar": "Status dosar",
|
||||
"Status implicit": "Default status",
|
||||
"Stoc": "Stock",
|
||||
"Stoc adăugat": "Stoc adăugat",
|
||||
"Stoc minim": "Stoc minim",
|
||||
"Stoc minim atins": "Minimum stock reached",
|
||||
"Storage (MB)": "Storage (MB)",
|
||||
"Subcontractare": "Subcontracting",
|
||||
"Subcontractor": "Subcontractor",
|
||||
@@ -1065,6 +1146,7 @@
|
||||
"Sunet": "Sound",
|
||||
"Sunt de acord": "I agree",
|
||||
"Sunteți sigur?": "Are you sure?",
|
||||
"Sună": "Call",
|
||||
"Sursă": "Source",
|
||||
"Sursă & Atribuire": "Sursă & Atribuire",
|
||||
"Suspendat": "Suspended",
|
||||
@@ -1100,6 +1182,7 @@
|
||||
"Tenant not resolved": "Tenant not resolved",
|
||||
"Tenant suspendat.": "Tenant suspendat.",
|
||||
"Tenants recenți": "Tenants recenți",
|
||||
"Tenants total": "Total tenants",
|
||||
"Termen": "Due date",
|
||||
"Termen limită": "Deadline",
|
||||
"Termene": "Termene",
|
||||
@@ -1122,15 +1205,18 @@
|
||||
"Tip jante": "Tip jante",
|
||||
"Tipărește": "Print",
|
||||
"Tipărește etichete QR": "Tipărește etichete QR",
|
||||
"Toate": "All",
|
||||
"Toate atelierele": "All workshops",
|
||||
"Toate autovehiculele": "All vehicles",
|
||||
"Toate categoriile": "All categories",
|
||||
"Toate cererile": "All leads",
|
||||
"Toate cheltuielile": "All expenses",
|
||||
"Toate comenzile": "All orders",
|
||||
"Toate companiile": "Toate companiile",
|
||||
"Toate companiile": "All companies",
|
||||
"Toate câmpurile": "All fields",
|
||||
"Toate limbile": "All languages",
|
||||
"Toate ok": "All OK",
|
||||
"Toate plătite": "All paid",
|
||||
"Toate plățile": "All payments",
|
||||
"Toate produsele": "All products",
|
||||
"Toate rolurile": "All roles",
|
||||
@@ -1138,12 +1224,13 @@
|
||||
"Token public": "Token public",
|
||||
"Token revocat": "Token revocat",
|
||||
"Total": "Total",
|
||||
"Total deals active": "Total active deals",
|
||||
"Total general": "Grand total",
|
||||
"Total net": "Total net",
|
||||
"Total plătit": "Total paid",
|
||||
"Total rezultate": "Total results",
|
||||
"Total în baza de date": "Total în baza de date",
|
||||
"Total înregistrate": "Total înregistrate",
|
||||
"Total în baza de date": "Total in database",
|
||||
"Total înregistrate": "Total registered",
|
||||
"Toți clienții": "All clients",
|
||||
"Toți utilizatorii": "All users",
|
||||
"Tracking & ETA": "Tracking & ETA",
|
||||
@@ -1163,7 +1250,7 @@
|
||||
"Trimite reset parolă": "Trimite reset parolă",
|
||||
"UM": "Unit",
|
||||
"Ulei": "Oil",
|
||||
"Ultim login": "Ultim login",
|
||||
"Ultim login": "Last login",
|
||||
"Ultima actualizare": "Last updated",
|
||||
"Ultima autentificare": "Last login",
|
||||
"Ultima modificare": "Last modified",
|
||||
@@ -1171,6 +1258,7 @@
|
||||
"Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).": "Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).",
|
||||
"Upgrade": "Upgrade",
|
||||
"Urgent": "Urgent",
|
||||
"Urgente": "Urgent",
|
||||
"Urgență": "Urgency",
|
||||
"User API": "User API",
|
||||
"Useri": "Useri",
|
||||
@@ -1182,6 +1270,7 @@
|
||||
"VIN căutare & piese": "VIN căutare & piese",
|
||||
"VIN-căutare": "VIN search",
|
||||
"Va deconecta utilizatorul pe toate device-urile.": "Va deconecta utilizatorul pe toate device-urile.",
|
||||
"Va fi adăugată în Cerere nouă": "Will be added to \"New lead\"",
|
||||
"Va fi pre-completat când creezi o programare pentru acest pod": "Va fi pre-completat când creezi o programare pentru acest pod",
|
||||
"Va recalcula sell_price pentru TOATE piesele active. Continui?": "Va recalcula sell_price pentru TOATE piesele active. Continui?",
|
||||
"Val.": "Val.",
|
||||
@@ -1192,11 +1281,13 @@
|
||||
"Vehicul nou": "New vehicle",
|
||||
"Venit": "Revenue",
|
||||
"Venit generat": "Venit generat",
|
||||
"Venit luna curentă": "Current month revenue",
|
||||
"Venit manopere": "Venit manopere",
|
||||
"Venituri": "Revenues",
|
||||
"Verificare": "Verification",
|
||||
"Verificat": "Verified",
|
||||
"Verifică emailul": "Check your email",
|
||||
"Verifică și amintește": "Verify and remind",
|
||||
"Vezi imagine": "View image",
|
||||
"Vezi mai mult": "View more",
|
||||
"Vezi tot": "View all",
|
||||
@@ -1216,6 +1307,7 @@
|
||||
"Webhook setat — botul e gata": "Webhook setat — botul e gata",
|
||||
"Weekend": "Weekend",
|
||||
"Welcome": "Welcome",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Widget": "Widget",
|
||||
"XLS": "XLS",
|
||||
"Yes": "Yes",
|
||||
@@ -1229,33 +1321,42 @@
|
||||
"Zoom out": "Zoom out",
|
||||
"achiziție": "achiziție",
|
||||
"achiziții": "achiziții",
|
||||
"active": "active",
|
||||
"actualizat": "updated",
|
||||
"angajați": "angajați",
|
||||
"apasă": "click",
|
||||
"auto-generat": "auto-generat",
|
||||
"bonusuri/avansuri": "bonusuri/avansuri",
|
||||
"canale marketing": "canale marketing",
|
||||
"cheltuială": "cheltuială",
|
||||
"client": "client",
|
||||
"client magazin": "client magazin",
|
||||
"clienți": "clienți",
|
||||
"clienți": "clients",
|
||||
"clienți magazin": "clienți magazin",
|
||||
"coeficient": "coefficient",
|
||||
"coeficienți preț": "coeficienți preț",
|
||||
"comandă": "comandă",
|
||||
"comenzi online": "comenzi online",
|
||||
"deal-uri": "deal-uri",
|
||||
"deals": "deals",
|
||||
"ex: Iarnă Michelin": "ex: Iarnă Michelin",
|
||||
"ex: Mașină veche, Client VIP, Express": "ex: Mașină veche, Client VIP, Express",
|
||||
"ex: Revizie completă 15.000 km": "ex: Revizie completă 15.000 km",
|
||||
"ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp",
|
||||
"factură": "factură",
|
||||
"finalizat": "completed",
|
||||
"fișe lucru": "fișe lucru",
|
||||
"fișă": "fișă",
|
||||
"fără client": "no client",
|
||||
"h norm": "h norm",
|
||||
"h real": "h real",
|
||||
"lucrare caroserie": "lucrare caroserie",
|
||||
"lucrare terți": "lucrare terți",
|
||||
"lucrări caroserie": "lucrări caroserie",
|
||||
"lucrări terți": "lucrări terți",
|
||||
"mașini": "mașini",
|
||||
"mașină": "mașină",
|
||||
"mașini": "vehicles",
|
||||
"mașină": "vehicle",
|
||||
"new": "new",
|
||||
"niciodată": "niciodată",
|
||||
"norme-ore": "norme-ore",
|
||||
"normă": "normă",
|
||||
@@ -1380,19 +1481,26 @@
|
||||
"subcontractor": "subcontractor",
|
||||
"subcontractori": "subcontractori",
|
||||
"template-uri": "template-uri",
|
||||
"vip": "vip",
|
||||
"Împărtășește": "Share",
|
||||
"În așteptare": "Pending",
|
||||
"În curs": "In progress",
|
||||
"În depozit": "In warehouse",
|
||||
"În lucru": "In progress",
|
||||
"În pipeline": "In pipeline",
|
||||
"În trial": "In trial",
|
||||
"Înainte": "Back",
|
||||
"Încarcă fișier": "Upload file",
|
||||
"Încarcă fișierul Excel sau CSV": "Încarcă fișierul Excel sau CSV",
|
||||
"Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.": "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.",
|
||||
"Încasări (luna)": "Income (month)",
|
||||
"Începe": "Start",
|
||||
"Începe lucrul": "Start work",
|
||||
"Închide": "Close",
|
||||
"Închide fișa": "Close order",
|
||||
"Închis": "Closed",
|
||||
"Închis la": "Closed at",
|
||||
"Închise azi": "Closed today",
|
||||
"Încărcare STO": "Workshop load",
|
||||
"Încărcare service": "Workshop load",
|
||||
"Înregistrare": "Register",
|
||||
@@ -1414,7 +1522,9 @@
|
||||
"șabloane servicii": "șabloane servicii",
|
||||
"șablon": "șablon",
|
||||
"Ține-mă minte": "Remember me",
|
||||
"✓ Pe abonament plătit": "✓ Pe abonament plătit",
|
||||
"⚠ Acțiune necesară": "⚠ Action needed",
|
||||
"✓ Achitat": "✓ Paid",
|
||||
"✓ Pe abonament plătit": "✓ On paid subscription",
|
||||
"🅿️ PayPal": "🅿️ PayPal",
|
||||
"🇲🇩 Paynet (Moldova)": "🇲🇩 Paynet (Moldova)",
|
||||
"🎉 Bun venit în AutoCRM!": "🎉 Bun venit în AutoCRM!",
|
||||
|
||||
+125
-15
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"#": "#",
|
||||
"$n sesiuni revoke-uite": "$n sesiuni revoke-uite",
|
||||
"% Manopere": "% Manopere",
|
||||
"% Piese": "% Piese",
|
||||
@@ -33,6 +34,7 @@
|
||||
"Acces în aplicație (opțional)": "Acces în aplicație (opțional)",
|
||||
"Această acțiune este ireversibilă": "Это действие необратимо",
|
||||
"Achitat": "Оплачено",
|
||||
"Achitat azi": "Оплачено сегодня",
|
||||
"Achiziții": "Закупки",
|
||||
"Acord": "Соглашение",
|
||||
"Acordat de": "Acordat de",
|
||||
@@ -40,6 +42,7 @@
|
||||
"Activ": "Активный",
|
||||
"Activare": "Активация",
|
||||
"Active": "Активные",
|
||||
"Active acum": "В работе сейчас",
|
||||
"Activează": "Активировать",
|
||||
"Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.": "Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.",
|
||||
"Activează PayPal": "Activează PayPal",
|
||||
@@ -49,14 +52,17 @@
|
||||
"Activează magazinul public la <slug>.service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".": "Activează magazinul public la <slug>.service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".",
|
||||
"Activează plata prin transfer": "Activează plata prin transfer",
|
||||
"Activi": "Активные",
|
||||
"Activitate recentă": "Недавняя активность",
|
||||
"Activă": "Активна",
|
||||
"Actualizat la": "Обновлено",
|
||||
"Actualizează": "Обновить",
|
||||
"Acțiune": "Действие",
|
||||
"Acțiuni rapide": "Быстрые действия",
|
||||
"Acțiuni în bulk": "Массовые действия",
|
||||
"Acțiuni în masă": "Массовые действия",
|
||||
"Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.": "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.",
|
||||
"Adaugă auto": "Добавить авто",
|
||||
"Adaugă cerere": "Добавить заявку",
|
||||
"Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.": "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.",
|
||||
"Adaugă cheltuială": "Добавить расход",
|
||||
"Adaugă client": "Добавить клиента",
|
||||
@@ -91,6 +97,7 @@
|
||||
"Ai uitat parola?": "Забыли пароль?",
|
||||
"Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".": "Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".",
|
||||
"Aici apar clienții care și-au creat cont în magazinul online (/shop/register).": "Aici apar clienții care și-au creat cont în magazinul online (/shop/register).",
|
||||
"Ale mele": "Мои",
|
||||
"Aleatoriu": "Случайно",
|
||||
"Alege categorie": "Выбрать категорию",
|
||||
"Alege client": "Выбрать клиента",
|
||||
@@ -107,16 +114,19 @@
|
||||
"Alege vehicul": "Выбрать транспорт",
|
||||
"Alfabetic": "По алфавиту",
|
||||
"Alte cheltuieli": "Прочие расходы",
|
||||
"Altă problemă": "Другая проблема",
|
||||
"An": "Год",
|
||||
"An fabricație": "Год выпуска",
|
||||
"Angajat din": "Angajat din",
|
||||
"Ani": "Годы",
|
||||
"Anonim": "Аноним",
|
||||
"Antet": "Шапка",
|
||||
"Antet fișă": "Шапка наряда",
|
||||
"Anual": "Anual",
|
||||
"Anul curent": "Текущий год",
|
||||
"Anul trecut": "Прошлый год",
|
||||
"Anulat": "Отменено",
|
||||
"Anulează": "Отмена",
|
||||
"Anulează fișa": "Отменить наряд",
|
||||
"Anvelope": "Шины",
|
||||
"Apare în magazinul online public.": "Apare în magazinul online public.",
|
||||
@@ -154,9 +164,15 @@
|
||||
"Autentificare": "Аутентификация",
|
||||
"Autentificare 2FA": "2FA аутентификация",
|
||||
"Auto": "Авто",
|
||||
"Auto / model": "Авто / модель",
|
||||
"AutoCRM SRL": "AutoCRM SRL",
|
||||
"Automobile": "Автомобили",
|
||||
"Avans": "Аванс",
|
||||
"Avans achitat": "Аванс оплачен",
|
||||
"Avg zile": "Avg zile",
|
||||
"Azi": "Сегодня",
|
||||
"Așteaptă piese": "Ждёт запчасти",
|
||||
"Aștept aprobare client": "Ожидание одобрения клиента",
|
||||
"Așteptată": "Ожидается",
|
||||
"BIC / SWIFT": "BIC / SWIFT",
|
||||
"Backup": "Бэкап",
|
||||
@@ -169,8 +185,11 @@
|
||||
"Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.",
|
||||
"Bifă": "Флажок",
|
||||
"Bine ai venit": "Добро пожаловать",
|
||||
"Blocat": "Заблокировано",
|
||||
"Blocată": "Заблокирована",
|
||||
"Blochează": "Заблокировать",
|
||||
"Blochez": "Блокировать",
|
||||
"Blochez lucrarea": "Заблокировать работу",
|
||||
"Boală": "Больничный",
|
||||
"Bon": "Чек",
|
||||
"Bonuri": "Чеки",
|
||||
@@ -186,7 +205,9 @@
|
||||
"Bună ziua": "Здравствуйте",
|
||||
"CSV": "CSV",
|
||||
"Calcul": "Calcul",
|
||||
"Calcul.": "Расчёт",
|
||||
"Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori",
|
||||
"Calculație": "Расчёт",
|
||||
"Calculează luna curentă": "Calculează luna curentă",
|
||||
"Calendar": "Календарь",
|
||||
"Calendar vizual": "Calendar vizual",
|
||||
@@ -204,15 +225,22 @@
|
||||
"Categorie implicită": "Категория по умолчанию",
|
||||
"Categorii": "Categorii",
|
||||
"Caută": "Поиск",
|
||||
"Caută client, mașină, număr...": "Поиск клиента, авто, номера...",
|
||||
"Caută în tabel": "Поиск в таблице",
|
||||
"Caz asigurare": "Caz asigurare",
|
||||
"Caz de asigurare": "Caz de asigurare",
|
||||
"Ce a spus clientul...": "Что сказал клиент...",
|
||||
"Cerere": "Заявка",
|
||||
"Cerere nouă": "Новая заявка",
|
||||
"Cerere nouă adăugată": "Новая заявка добавлена",
|
||||
"Cereri": "Заявки",
|
||||
"Cereri noi": "Новые заявки",
|
||||
"Check-in depozit": "Check-in depozit",
|
||||
"Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.": "Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.",
|
||||
"Cheie": "Cheie",
|
||||
"Cheltuială": "Расход",
|
||||
"Cheltuieli": "Расходы",
|
||||
"Cheltuieli (luna)": "Расходы (месяц)",
|
||||
"Cheltuit": "Потрачено",
|
||||
"Cheltuit 90d": "Cheltuit 90d",
|
||||
"Chitanțe": "Квитанции",
|
||||
@@ -223,7 +251,7 @@
|
||||
"Claude API Key": "Claude API Key",
|
||||
"Client": "Клиент",
|
||||
"Client & Auto": "Client & Auto",
|
||||
"Client CRM": "Client CRM",
|
||||
"Client CRM": "Клиент CRM",
|
||||
"Client ID": "Client ID",
|
||||
"Client VIP": "Client VIP",
|
||||
"Client existent": "Существующий клиент",
|
||||
@@ -285,9 +313,11 @@
|
||||
"Creat de": "Создано",
|
||||
"Creat la": "Создано",
|
||||
"Create": "Создать",
|
||||
"Created at": "Создан",
|
||||
"Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.": "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.",
|
||||
"Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.": "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.",
|
||||
"Credit": "Кредит",
|
||||
"Creează cerere": "Создать заявку",
|
||||
"Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.": "Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.",
|
||||
"Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.": "Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.",
|
||||
"Crescător": "По возрастанию",
|
||||
@@ -330,6 +360,7 @@
|
||||
"Date personale": "Date personale",
|
||||
"Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.": "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.",
|
||||
"Datorie": "Долг",
|
||||
"Datorii clienți": "Задолженности клиентов",
|
||||
"Daune": "Daune",
|
||||
"De către": "De către",
|
||||
"De la": "От",
|
||||
@@ -337,8 +368,10 @@
|
||||
"De la data": "С даты",
|
||||
"De la ora": "С",
|
||||
"De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).",
|
||||
"De procesat": "De procesat",
|
||||
"De procesat": "К обработке",
|
||||
"Deal": "Сделка",
|
||||
"Deal nou": "Новая сделка",
|
||||
"Deal-uri active": "Активные сделки",
|
||||
"Deals": "Сделки",
|
||||
"Debit": "Дебет",
|
||||
"Deblochează": "Разблокировать",
|
||||
@@ -356,10 +389,15 @@
|
||||
"Depozit implicit": "Склад по умолчанию",
|
||||
"Depozit țintă": "Целевой склад",
|
||||
"Depublică": "Снять с публикации",
|
||||
"Depășit termen": "Просрочено",
|
||||
"Descarcă PDF": "Скачать PDF",
|
||||
"Descarcă factura": "Скачать счёт",
|
||||
"Descarcă template": "Скачать шаблон",
|
||||
"Deschide": "Открыть",
|
||||
"Deschide Fișă": "Открыть наряд",
|
||||
"Deschide deal": "Открыть сделку",
|
||||
"Deschide fișa": "Открыть наряд",
|
||||
"Deschide fișa pentru aprobare lucrare/piesă.": "Откройте наряд для одобрения работы/запчасти.",
|
||||
"Deschide tenantul": "Deschide tenantul",
|
||||
"Deschis": "Открыт",
|
||||
"Deschis la": "Открыт",
|
||||
@@ -367,6 +405,7 @@
|
||||
"Descriere": "Описание",
|
||||
"Descriere produs": "Описание товара",
|
||||
"Detalii": "Подробности",
|
||||
"Detalii (opțional)": "Детали (опционально)",
|
||||
"Detalii auto": "Данные авто",
|
||||
"Detalii client": "Данные клиента",
|
||||
"Detalii comandă": "Данные заказа",
|
||||
@@ -395,6 +434,7 @@
|
||||
"Doar utilizatorii mei": "Только мои пользователи",
|
||||
"Document": "Документ",
|
||||
"Documente": "Документы",
|
||||
"Done": "Готово",
|
||||
"Downgrade": "Понижение",
|
||||
"Drept": "Право",
|
||||
"Drepturi": "Права",
|
||||
@@ -408,7 +448,9 @@
|
||||
"Durată reală": "Фактическая длительность",
|
||||
"EJk...": "EJk...",
|
||||
"ETA": "ETA",
|
||||
"Echipament defect": "Неисправное оборудование",
|
||||
"Edit": "Изменить",
|
||||
"Editare": "Изменить",
|
||||
"Editează": "Изменить",
|
||||
"Editează drepturi": "Editează drepturi",
|
||||
"Editează produs": "Изменить товар",
|
||||
@@ -429,6 +471,7 @@
|
||||
"Ex: 20": "Ex: 20",
|
||||
"Ex: 20 pentru +20%": "Ex: 20 pentru +20%",
|
||||
"Ex: 25": "Ex: 25",
|
||||
"Ex: Lipsește filtrul Mann W712/83": "Например: Нет фильтра Mann W712/83",
|
||||
"Ex: Pod 1, Curte 1, Atelier electric": "Ex: Pod 1, Curte 1, Atelier electric",
|
||||
"Ex: cu lift, fără lift, doar diagnoză...": "Ex: cu lift, fără lift, doar diagnoză...",
|
||||
"Ex: lockdown temporar; acces pentru audit; etc.": "Ex: lockdown temporar; acces pentru audit; etc.",
|
||||
@@ -436,11 +479,14 @@
|
||||
"Excepții": "Исключения",
|
||||
"Excepții drepturi": "Исключения прав",
|
||||
"Expiră": "Expiră",
|
||||
"Expiră < 7 zile": "Истекает < 7 дней",
|
||||
"Expiră la (opțional)": "Expiră la (opțional)",
|
||||
"Export": "Экспорт",
|
||||
"Export CSV": "Экспорт CSV",
|
||||
"Extras": "Выписка",
|
||||
"Ești sigur?": "Ты уверен?",
|
||||
"Facturi": "Счета",
|
||||
"Facturi neplătite": "Неоплаченные счета",
|
||||
"Facturi pending / overdue": "Facturi pending / overdue",
|
||||
"Factură": "Счёт",
|
||||
"Factură importată": "Factură importată",
|
||||
@@ -464,6 +510,7 @@
|
||||
"Fișiere": "Файлы",
|
||||
"Fișă": "Наряд",
|
||||
"Fișă asociată": "Fișă asociată",
|
||||
"Fișă de lucru": "Заказ-наряд",
|
||||
"Fișă lucru": "Fișă lucru",
|
||||
"Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.": "Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.",
|
||||
"Folosit dacă markup = 0.": "Folosit dacă markup = 0.",
|
||||
@@ -486,7 +533,10 @@
|
||||
"Furnizor preferat": "Furnizor preferat",
|
||||
"Furnizori": "Поставщики",
|
||||
"Fără TVA": "Без НДС",
|
||||
"Fără răspuns": "Без ответа",
|
||||
"Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.": "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.",
|
||||
"Gata": "Готов",
|
||||
"Gata de ridicare": "Готов к выдаче",
|
||||
"Gata estimat (ETA)": "Gata estimat (ETA)",
|
||||
"Gemini API Key": "Gemini API Key",
|
||||
"General": "Общее",
|
||||
@@ -495,6 +545,7 @@
|
||||
"Generează raport": "Сгенерировать отчёт",
|
||||
"Generează token": "Generează token",
|
||||
"Global": "Глобально",
|
||||
"Gol — trage un card aici": "Пусто — перетащите карточку сюда",
|
||||
"Grafic": "График",
|
||||
"Gravitate": "Gravitate",
|
||||
"Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.",
|
||||
@@ -567,8 +618,11 @@
|
||||
"Limite": "Limite",
|
||||
"Linii": "Linii",
|
||||
"Link client (QR)": "Link client (QR)",
|
||||
"Link tracking": "Ссылка отслеживания",
|
||||
"Lipsă": "Lipsă",
|
||||
"Lipsă piesă": "Нет запчасти",
|
||||
"Liste configurabile": "Настраиваемые списки",
|
||||
"Listă": "Список",
|
||||
"Livrare": "Livrare",
|
||||
"Livrare (zile)": "Livrare (zile)",
|
||||
"Livrare gratuită peste": "Livrare gratuită peste",
|
||||
@@ -599,7 +653,9 @@
|
||||
"Luni (zi)": "Понедельник",
|
||||
"Lățime": "Lățime",
|
||||
"MD00 AG00 0000 ...": "MD00 AG00 0000 ...",
|
||||
"MRR realizat": "MRR realizat",
|
||||
"MDL pipeline total": "MDL всего в воронке",
|
||||
"MDL închise azi": "MDL закрыто сегодня",
|
||||
"MRR realizat": "Реализованный MRR",
|
||||
"Magazin": "Magazin",
|
||||
"Magazin activ": "Magazin activ",
|
||||
"Magazin online": "Онлайн-магазин",
|
||||
@@ -610,6 +666,7 @@
|
||||
"Manopere": "Работы",
|
||||
"Manoperă": "Работа",
|
||||
"Marca": "Marca",
|
||||
"Marchează Gata": "Отметить готово",
|
||||
"Marchează acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).",
|
||||
"Marchează anulat": "Отметить как отменено",
|
||||
"Marchează plătit": "Отметить как оплачено",
|
||||
@@ -636,7 +693,7 @@
|
||||
"Max mașini": "Max mașini",
|
||||
"Max useri": "Max useri",
|
||||
"Mașina e gata de ridicat": "Mașina e gata de ridicat",
|
||||
"Mașini": "Mașini",
|
||||
"Mașini": "Автомобили",
|
||||
"Mecanic implicit": "Механик по умолчанию",
|
||||
"Mediu": "Средний",
|
||||
"Merchant Code": "Merchant Code",
|
||||
@@ -648,7 +705,7 @@
|
||||
"Metode plată": "Способы оплаты",
|
||||
"Metodă plată": "Способ оплаты",
|
||||
"Miercuri": "Среда",
|
||||
"Min.": "Min.",
|
||||
"Min.": "Мин.",
|
||||
"Minim": "Minim",
|
||||
"Minute": "Минуты",
|
||||
"Mod": "Режим",
|
||||
@@ -671,6 +728,10 @@
|
||||
"Mulțumim": "Спасибо",
|
||||
"Mâine": "Завтра",
|
||||
"Mărci auto suportate (separate prin virgulă)": "Mărci auto suportate (separate prin virgulă)",
|
||||
"Neachitat": "Не оплачено",
|
||||
"Necesită acțiune": "Требует действия",
|
||||
"Necesită aprobare": "Требуется одобрение",
|
||||
"Necesită aprobare client": "Требуется одобрение клиента",
|
||||
"Necesită cel puțin 2 recepții complete cu data așteptată setată.": "Necesită cel puțin 2 recepții complete cu data așteptată setată.",
|
||||
"Necompletat": "Не заполнено",
|
||||
"Necunoscut": "Неизвестно",
|
||||
@@ -680,6 +741,8 @@
|
||||
"Nesincronizat": "Не синхронизировано",
|
||||
"Net 30 / Avans": "Net 30 / Avans",
|
||||
"Neverificat": "Не проверено",
|
||||
"New client": "Новый клиент",
|
||||
"New mașină": "Новое авто",
|
||||
"Nicio comandă încă": "Nicio comandă încă",
|
||||
"Nicio daună marcată": "Nicio daună marcată",
|
||||
"Nicio factură generată": "Nicio factură generată",
|
||||
@@ -688,7 +751,7 @@
|
||||
"Nicio lucrare la terți": "Nicio lucrare la terți",
|
||||
"Nicio mașină încă": "Nicio mașină încă",
|
||||
"Nicio piesă implicită": "Nicio piesă implicită",
|
||||
"Niciodată": "Niciodată",
|
||||
"Niciodată": "Никогда",
|
||||
"Niciun client magazin": "Niciun client magazin",
|
||||
"Niciun client încă": "Niciun client încă",
|
||||
"Niciun cod cross": "Niciun cod cross",
|
||||
@@ -712,6 +775,8 @@
|
||||
"Notifications": "Уведомления",
|
||||
"Notificări": "Уведомления",
|
||||
"Notițe": "Заметки",
|
||||
"Notițe / Reclamație": "Заметки / Жалоба",
|
||||
"Notițe / reclamație": "Заметки / жалоба",
|
||||
"Notițe interne": "Notițe interne",
|
||||
"Nou": "Новый",
|
||||
"Nou tehnician": "Nou tehnician",
|
||||
@@ -783,7 +848,9 @@
|
||||
"Pas 2 — Brand & limbă": "Pas 2 — Brand & limbă",
|
||||
"Pas 3 — Tarif & terminat": "Pas 3 — Tarif & terminat",
|
||||
"Pauză": "Пауза",
|
||||
"Pe pauză": "На паузе",
|
||||
"Penalizări": "Penalizări",
|
||||
"Per page": "На странице",
|
||||
"Perioada (YYYY-MM)": "Perioada (YYYY-MM)",
|
||||
"Perioadă": "Период",
|
||||
"Perioadă (YYYY-MM)": "Perioadă (YYYY-MM)",
|
||||
@@ -819,6 +886,7 @@
|
||||
"Politici": "Политики",
|
||||
"Pontaj": "Табель",
|
||||
"Populare": "Популярные",
|
||||
"Posibili clienți noi": "Потенциальные новые клиенты",
|
||||
"Post actualizat": "Post actualizat",
|
||||
"Poze": "Фото",
|
||||
"Pozele auto": "Фото авто",
|
||||
@@ -865,13 +933,20 @@
|
||||
"Profil": "Profil",
|
||||
"Profile": "Профиль",
|
||||
"Profit": "Прибыль",
|
||||
"Profit (luna)": "Прибыль (месяц)",
|
||||
"Programare": "Запись",
|
||||
"Programare adăugată": "Programare adăugată",
|
||||
"Programare confirmată": "Programare confirmată",
|
||||
"Programare creată · mâine 10:00": "Запись создана · завтра 10:00",
|
||||
"Programare mutată": "Programare mutată",
|
||||
"Programare ștearsă": "Programare ștearsă",
|
||||
"Programat": "Запланировано",
|
||||
"Programează": "Запланировать",
|
||||
"Programează întâlnire": "Запланировать встречу",
|
||||
"Programări": "Записи",
|
||||
"Programări azi": "Записи сегодня",
|
||||
"Progres": "Progres",
|
||||
"Progres etapă": "Прогресс этапа",
|
||||
"Proprietar": "Владелец",
|
||||
"Provider implicit": "Provider implicit",
|
||||
"Public": "Публично",
|
||||
@@ -891,6 +966,7 @@
|
||||
"ROI": "ROI",
|
||||
"Rapoarte": "Отчёты",
|
||||
"Raport": "Отчёт",
|
||||
"Rata conversie": "Конверсия",
|
||||
"Rating": "Рейтинг",
|
||||
"Rating actualizat → {$score}★": "Rating actualizat → {$score}★",
|
||||
"Reactivează": "Реактивировать",
|
||||
@@ -963,6 +1039,7 @@
|
||||
"Rânduri": "Строки",
|
||||
"Rânduri per pagină": "Строк на странице",
|
||||
"Rămas": "Rămas",
|
||||
"SMS": "SMS",
|
||||
"Salarii": "Зарплаты",
|
||||
"Salariu & comisioane": "Salariu & comisioane",
|
||||
"Salariu & marjă": "Зарплата и маржа",
|
||||
@@ -1000,6 +1077,7 @@
|
||||
"Selectează fișier": "Выберите файл",
|
||||
"Selectează furnizorul": "Selectează furnizorul",
|
||||
"Selectează interval": "Выберите интервал",
|
||||
"Selectează motivul pentru care lucrarea nu poate continua. Va fi vizibil managerului.": "Выберите причину, по которой работа не может продолжаться. Будет видно менеджеру.",
|
||||
"Selectează oră": "Выберите время",
|
||||
"Selectează perioadă": "Выберите период",
|
||||
"Semnat": "Подписано",
|
||||
@@ -1045,12 +1123,15 @@
|
||||
"Specificații": "Specificații",
|
||||
"Standard": "Стандартно",
|
||||
"Stare": "Stare",
|
||||
"Stare timp": "Время",
|
||||
"Start": "Старт",
|
||||
"Status": "Статус",
|
||||
"Status dosar": "Status dosar",
|
||||
"Status implicit": "Статус по умолчанию",
|
||||
"Stoc": "Остаток",
|
||||
"Stoc adăugat": "Stoc adăugat",
|
||||
"Stoc minim": "Stoc minim",
|
||||
"Stoc minim atins": "Достигнут мин. остаток",
|
||||
"Storage (MB)": "Storage (MB)",
|
||||
"Subcontractare": "Субподряд",
|
||||
"Subcontractor": "Субподрядчик",
|
||||
@@ -1065,6 +1146,7 @@
|
||||
"Sunet": "Звук",
|
||||
"Sunt de acord": "Я согласен",
|
||||
"Sunteți sigur?": "Вы уверены?",
|
||||
"Sună": "Позвонить",
|
||||
"Sursă": "Источник",
|
||||
"Sursă & Atribuire": "Sursă & Atribuire",
|
||||
"Suspendat": "Приостановлено",
|
||||
@@ -1100,6 +1182,7 @@
|
||||
"Tenant not resolved": "Tenant not resolved",
|
||||
"Tenant suspendat.": "Tenant suspendat.",
|
||||
"Tenants recenți": "Tenants recenți",
|
||||
"Tenants total": "Всего тенантов",
|
||||
"Termen": "Срок",
|
||||
"Termen limită": "Крайний срок",
|
||||
"Termene": "Termene",
|
||||
@@ -1122,15 +1205,18 @@
|
||||
"Tip jante": "Tip jante",
|
||||
"Tipărește": "Печать",
|
||||
"Tipărește etichete QR": "Tipărește etichete QR",
|
||||
"Toate": "Все",
|
||||
"Toate atelierele": "Все мастерские",
|
||||
"Toate autovehiculele": "Все авто",
|
||||
"Toate categoriile": "Все категории",
|
||||
"Toate cererile": "Все заявки",
|
||||
"Toate cheltuielile": "Все расходы",
|
||||
"Toate comenzile": "Все заказы",
|
||||
"Toate companiile": "Toate companiile",
|
||||
"Toate companiile": "Все компании",
|
||||
"Toate câmpurile": "Все поля",
|
||||
"Toate limbile": "Все языки",
|
||||
"Toate ok": "Всё в порядке",
|
||||
"Toate plătite": "Все оплачены",
|
||||
"Toate plățile": "Все платежи",
|
||||
"Toate produsele": "Все товары",
|
||||
"Toate rolurile": "Все роли",
|
||||
@@ -1138,12 +1224,13 @@
|
||||
"Token public": "Token public",
|
||||
"Token revocat": "Token revocat",
|
||||
"Total": "Итого",
|
||||
"Total deals active": "Всего активных сделок",
|
||||
"Total general": "Общий итог",
|
||||
"Total net": "Total net",
|
||||
"Total plătit": "Всего оплачено",
|
||||
"Total rezultate": "Всего результатов",
|
||||
"Total în baza de date": "Total în baza de date",
|
||||
"Total înregistrate": "Total înregistrate",
|
||||
"Total în baza de date": "Всего в базе",
|
||||
"Total înregistrate": "Всего зарегистрировано",
|
||||
"Toți clienții": "Все клиенты",
|
||||
"Toți utilizatorii": "Все пользователи",
|
||||
"Tracking & ETA": "Отслеживание и ETA",
|
||||
@@ -1163,14 +1250,15 @@
|
||||
"Trimite reset parolă": "Trimite reset parolă",
|
||||
"UM": "Ед.",
|
||||
"Ulei": "Масло",
|
||||
"Ultim login": "Ultim login",
|
||||
"Ultim login": "Последний вход",
|
||||
"Ultima actualizare": "Последнее обновление",
|
||||
"Ultima autentificare": "Последний вход",
|
||||
"Ultima modificare": "Последнее изменение",
|
||||
"Ultima sincronizare": "Последняя синхронизация",
|
||||
"Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).": "Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).",
|
||||
"Upgrade": "Обновление",
|
||||
"Urgent": "Срочный",
|
||||
"Urgent": "Срочно",
|
||||
"Urgente": "Срочные",
|
||||
"Urgență": "Срочность",
|
||||
"User API": "User API",
|
||||
"Useri": "Useri",
|
||||
@@ -1182,6 +1270,7 @@
|
||||
"VIN căutare & piese": "VIN căutare & piese",
|
||||
"VIN-căutare": "VIN-поиск",
|
||||
"Va deconecta utilizatorul pe toate device-urile.": "Va deconecta utilizatorul pe toate device-urile.",
|
||||
"Va fi adăugată în Cerere nouă": "Будет добавлена в «Новая заявка»",
|
||||
"Va fi pre-completat când creezi o programare pentru acest pod": "Va fi pre-completat când creezi o programare pentru acest pod",
|
||||
"Va recalcula sell_price pentru TOATE piesele active. Continui?": "Va recalcula sell_price pentru TOATE piesele active. Continui?",
|
||||
"Val.": "Val.",
|
||||
@@ -1192,11 +1281,13 @@
|
||||
"Vehicul nou": "Новый транспорт",
|
||||
"Venit": "Доход",
|
||||
"Venit generat": "Venit generat",
|
||||
"Venit luna curentă": "Доход тек. месяца",
|
||||
"Venit manopere": "Venit manopere",
|
||||
"Venituri": "Доходы",
|
||||
"Verificare": "Проверка",
|
||||
"Verificat": "Проверено",
|
||||
"Verifică emailul": "Проверьте email",
|
||||
"Verifică și amintește": "Проверить и напомнить",
|
||||
"Vezi imagine": "Просмотр изображения",
|
||||
"Vezi mai mult": "Смотреть больше",
|
||||
"Vezi tot": "Смотреть все",
|
||||
@@ -1216,6 +1307,7 @@
|
||||
"Webhook setat — botul e gata": "Webhook setat — botul e gata",
|
||||
"Weekend": "Выходные",
|
||||
"Welcome": "Добро пожаловать",
|
||||
"WhatsApp": "WhatsApp",
|
||||
"Widget": "Виджет",
|
||||
"XLS": "XLS",
|
||||
"Yes": "Да",
|
||||
@@ -1229,33 +1321,42 @@
|
||||
"Zoom out": "Отдалить",
|
||||
"achiziție": "achiziție",
|
||||
"achiziții": "achiziții",
|
||||
"active": "активный",
|
||||
"actualizat": "обновлено",
|
||||
"angajați": "angajați",
|
||||
"apasă": "нажмите",
|
||||
"auto-generat": "auto-generat",
|
||||
"bonusuri/avansuri": "bonusuri/avansuri",
|
||||
"canale marketing": "canale marketing",
|
||||
"cheltuială": "cheltuială",
|
||||
"client": "клиент",
|
||||
"client magazin": "client magazin",
|
||||
"clienți": "clienți",
|
||||
"clienți": "клиенты",
|
||||
"clienți magazin": "clienți magazin",
|
||||
"coeficient": "коэффициент",
|
||||
"coeficienți preț": "coeficienți preț",
|
||||
"comandă": "comandă",
|
||||
"comenzi online": "comenzi online",
|
||||
"deal-uri": "deal-uri",
|
||||
"deals": "сделок",
|
||||
"ex: Iarnă Michelin": "ex: Iarnă Michelin",
|
||||
"ex: Mașină veche, Client VIP, Express": "ex: Mașină veche, Client VIP, Express",
|
||||
"ex: Revizie completă 15.000 km": "ex: Revizie completă 15.000 km",
|
||||
"ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp",
|
||||
"factură": "factură",
|
||||
"finalizat": "завершено",
|
||||
"fișe lucru": "fișe lucru",
|
||||
"fișă": "fișă",
|
||||
"fără client": "без клиента",
|
||||
"h norm": " ч норм",
|
||||
"h real": " ч факт",
|
||||
"lucrare caroserie": "lucrare caroserie",
|
||||
"lucrare terți": "lucrare terți",
|
||||
"lucrări caroserie": "lucrări caroserie",
|
||||
"lucrări terți": "lucrări terți",
|
||||
"mașini": "mașini",
|
||||
"mașină": "mașină",
|
||||
"mașini": "машины",
|
||||
"mașină": "машина",
|
||||
"new": "новый",
|
||||
"niciodată": "niciodată",
|
||||
"norme-ore": "norme-ore",
|
||||
"normă": "normă",
|
||||
@@ -1380,19 +1481,26 @@
|
||||
"subcontractor": "субподрядчик",
|
||||
"subcontractori": "subcontractori",
|
||||
"template-uri": "template-uri",
|
||||
"vip": "vip",
|
||||
"Împărtășește": "Поделиться",
|
||||
"În așteptare": "В ожидании",
|
||||
"În curs": "В процессе",
|
||||
"În depozit": "На складе",
|
||||
"În lucru": "В работе",
|
||||
"În pipeline": "В воронке",
|
||||
"În trial": "В триале",
|
||||
"Înainte": "Назад",
|
||||
"Încarcă fișier": "Загрузить файл",
|
||||
"Încarcă fișierul Excel sau CSV": "Încarcă fișierul Excel sau CSV",
|
||||
"Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.": "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.",
|
||||
"Încasări (luna)": "Поступления (месяц)",
|
||||
"Începe": "Начать",
|
||||
"Începe lucrul": "Начать работу",
|
||||
"Închide": "Закрыть",
|
||||
"Închide fișa": "Закрыть наряд",
|
||||
"Închis": "Закрыт",
|
||||
"Închis la": "Закрыт",
|
||||
"Închise azi": "Закрыто сегодня",
|
||||
"Încărcare STO": "Загрузка СТО",
|
||||
"Încărcare service": "Загрузка сервиса",
|
||||
"Înregistrare": "Регистрация",
|
||||
@@ -1414,7 +1522,9 @@
|
||||
"șabloane servicii": "șabloane servicii",
|
||||
"șablon": "șablon",
|
||||
"Ține-mă minte": "Запомнить меня",
|
||||
"✓ Pe abonament plătit": "✓ Pe abonament plătit",
|
||||
"⚠ Acțiune necesară": "⚠ Требуется действие",
|
||||
"✓ Achitat": "✓ Оплачено",
|
||||
"✓ Pe abonament plătit": "✓ На платной подписке",
|
||||
"🅿️ PayPal": "🅿️ PayPal",
|
||||
"🇲🇩 Paynet (Moldova)": "🇲🇩 Paynet (Moldova)",
|
||||
"🎉 Bun venit în AutoCRM!": "🎉 Bun venit în AutoCRM!",
|
||||
|
||||
@@ -71,11 +71,11 @@
|
||||
|
||||
<div class="mb-stats">
|
||||
<div class="mb-stat">
|
||||
<div class="lbl">Active acum</div>
|
||||
<div class="lbl">{{ __('Active acum') }}</div>
|
||||
<div class="val">{{ $counts['active'] }}</div>
|
||||
</div>
|
||||
<div class="mb-stat">
|
||||
<div class="lbl">Închise azi</div>
|
||||
<div class="lbl">{{ __('Închise azi') }}</div>
|
||||
<div class="val">{{ $counts['closed_today'] }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -93,7 +93,7 @@
|
||||
<a href="{{ route('filament.tenant.resources.work-orders.edit', $wo) }}" class="num" style="text-decoration:none;color:#3b82f6;">#{{ $wo->number }}</a>
|
||||
<span class="plate">{{ $wo->vehicle?->plate ?? '—' }}</span>
|
||||
</div>
|
||||
<div class="client">{{ $wo->client?->name ?? 'fără client' }} · {{ $wo->vehicle?->make }} {{ $wo->vehicle?->model }}</div>
|
||||
<div class="client">{{ $wo->client?->name ?? __('fără client') }} · {{ $wo->vehicle?->make }} {{ $wo->vehicle?->model }}</div>
|
||||
@if ($wo->complaint)
|
||||
<div class="complaint">{{ $wo->complaint }}</div>
|
||||
@endif
|
||||
@@ -112,31 +112,31 @@
|
||||
<div style="flex:1;">
|
||||
<span style="font-weight:600;">{{ $w->name }}</span>
|
||||
<div style="margin-top:3px; display:flex; gap:4px; align-items:center; flex-wrap:wrap;">
|
||||
<span style="background:{{ $stColor }}; color:white; padding:1px 6px; border-radius:4px; font-size:10px; font-weight:600;">{{ \App\Models\Tenant\WorkOrderWork::MECHANIC_STATUSES[$ms] }}</span>
|
||||
<span style="background:{{ $stColor }}; color:white; padding:1px 6px; border-radius:4px; font-size:10px; font-weight:600;">{{ __(\App\Models\Tenant\WorkOrderWork::MECHANIC_STATUSES[$ms]) }}</span>
|
||||
@if ($w->hours > 0)
|
||||
<span style="color:#6b7280; font-size:10px;">{{ rtrim(rtrim(number_format($w->hours, 2), '0'), '.') }}h norm</span>
|
||||
<span style="color:#6b7280; font-size:10px;">{{ rtrim(rtrim(number_format($w->hours, 2), '0'), '.') }}{{ __('h norm') }}</span>
|
||||
@endif
|
||||
@if ($w->actual_hours > 0 && $effColor)
|
||||
<span style="color:{{ $effColor }}; font-weight:600; font-size:10px;">{{ rtrim(rtrim(number_format($w->actual_hours, 2), '0'), '.') }}h real ({{ $w->efficiencyPct() }}%)</span>
|
||||
<span style="color:{{ $effColor }}; font-weight:600; font-size:10px;">{{ rtrim(rtrim(number_format($w->actual_hours, 2), '0'), '.') }}{{ __('h real') }} ({{ $w->efficiencyPct() }}%)</span>
|
||||
@endif
|
||||
@if ($w->block_reason)
|
||||
<span style="color:#dc2626; font-size:10px;">⚠ {{ \App\Models\Tenant\WorkOrderWork::BLOCK_REASONS[$w->block_reason] ?? $w->block_reason }}</span>
|
||||
<span style="color:#dc2626; font-size:10px;">⚠ {{ __(\App\Models\Tenant\WorkOrderWork::BLOCK_REASONS[$w->block_reason] ?? $w->block_reason) }}</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:flex; gap:4px; margin-top:6px; flex-wrap:wrap;">
|
||||
@if (in_array($ms, ['pending', 'blocked']))
|
||||
<button wire:click="startWork({{ $w->id }})" style="background:#3b82f6;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">▶ Start</button>
|
||||
<button wire:click="startWork({{ $w->id }})" style="background:#3b82f6;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">▶ {{ __('Start') }}</button>
|
||||
@endif
|
||||
@if ($ms === 'in_progress')
|
||||
<button wire:click="pauseWork({{ $w->id }})" style="background:#f59e0b;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">⏸ Pauză</button>
|
||||
<button wire:click="doneWork({{ $w->id }})" style="background:#10b981;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">✓ Done</button>
|
||||
<button wire:click="openBlockModal({{ $w->id }})" style="background:#fff;color:#dc2626;border:1px solid #dc2626;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">🔴 Blochez</button>
|
||||
<button wire:click="pauseWork({{ $w->id }})" style="background:#f59e0b;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">⏸ {{ __('Pauză') }}</button>
|
||||
<button wire:click="doneWork({{ $w->id }})" style="background:#10b981;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">✓ {{ __('Done') }}</button>
|
||||
<button wire:click="openBlockModal({{ $w->id }})" style="background:#fff;color:#dc2626;border:1px solid #dc2626;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">🔴 {{ __('Blochez') }}</button>
|
||||
@endif
|
||||
@if ($ms === 'paused')
|
||||
<button wire:click="resumeWork({{ $w->id }})" style="background:#3b82f6;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">▶ Reia</button>
|
||||
<button wire:click="doneWork({{ $w->id }})" style="background:#10b981;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">✓ Done</button>
|
||||
<button wire:click="resumeWork({{ $w->id }})" style="background:#3b82f6;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">▶ {{ __('Reia') }}</button>
|
||||
<button wire:click="doneWork({{ $w->id }})" style="background:#10b981;color:white;border:none;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;">✓ {{ __('Done') }}</button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@@ -155,19 +155,19 @@
|
||||
@if ($blockingWorkId)
|
||||
<div style="position:fixed; inset:0; background:rgba(0,0,0,0.5); z-index:9999; display:flex; align-items:center; justify-content:center;" wire:click="$set('blockingWorkId', null)">
|
||||
<div class="mb-modal-content" style="background:white; border-radius:12px; padding:20px; max-width:400px; width:90%;" wire:click.stop>
|
||||
<h2 style="font-size:16px; font-weight:600; margin-bottom:12px; color:#dc2626;">🔴 Blochez lucrarea</h2>
|
||||
<p style="font-size:13px; color:#4b5563; margin-bottom:14px;">Selectează motivul pentru care lucrarea nu poate continua. Va fi vizibil managerului.</p>
|
||||
<label style="font-size:11px; color:#6b7280; text-transform:uppercase; font-weight:600; display:block; margin-bottom:4px;">Motiv *</label>
|
||||
<h2 style="font-size:16px; font-weight:600; margin-bottom:12px; color:#dc2626;">🔴 {{ __('Blochez lucrarea') }}</h2>
|
||||
<p style="font-size:13px; color:#4b5563; margin-bottom:14px;">{{ __('Selectează motivul pentru care lucrarea nu poate continua. Va fi vizibil managerului.') }}</p>
|
||||
<label style="font-size:11px; color:#6b7280; text-transform:uppercase; font-weight:600; display:block; margin-bottom:4px;">{{ __('Motiv') }} *</label>
|
||||
<select wire:model="blockReason" style="width:100%; padding:8px 10px; border:1px solid #cbd5e1; border-radius:6px; font-size:14px; margin-bottom:12px;">
|
||||
@foreach (\App\Models\Tenant\WorkOrderWork::BLOCK_REASONS as $k => $v)
|
||||
<option value="{{ $k }}">{{ $v }}</option>
|
||||
<option value="{{ $k }}">{{ __($v) }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<label style="font-size:11px; color:#6b7280; text-transform:uppercase; font-weight:600; display:block; margin-bottom:4px;">Detalii (opțional)</label>
|
||||
<textarea wire:model="blockNote" rows="2" style="width:100%; padding:8px 10px; border:1px solid #cbd5e1; border-radius:6px; font-size:14px; margin-bottom:14px;" placeholder="Ex: Lipsește filtrul Mann W712/83"></textarea>
|
||||
<label style="font-size:11px; color:#6b7280; text-transform:uppercase; font-weight:600; display:block; margin-bottom:4px;">{{ __('Detalii (opțional)') }}</label>
|
||||
<textarea wire:model="blockNote" rows="2" style="width:100%; padding:8px 10px; border:1px solid #cbd5e1; border-radius:6px; font-size:14px; margin-bottom:14px;" placeholder="{{ __('Ex: Lipsește filtrul Mann W712/83') }}"></textarea>
|
||||
<div style="display:flex; gap:8px;">
|
||||
<button wire:click="$set('blockingWorkId', null)" style="flex:1; padding:8px; background:white; color:#4b5563; border:1px solid #cbd5e1; border-radius:6px; cursor:pointer;">Anulează</button>
|
||||
<button wire:click="confirmBlock" style="flex:1; padding:8px; background:#dc2626; color:white; border:none; border-radius:6px; cursor:pointer; font-weight:600;">Blochez</button>
|
||||
<button wire:click="$set('blockingWorkId', null)" style="flex:1; padding:8px; background:white; color:#4b5563; border:1px solid #cbd5e1; border-radius:6px; cursor:pointer;">{{ __('Anulează') }}</button>
|
||||
<button wire:click="confirmBlock" style="flex:1; padding:8px; background:#dc2626; color:white; border:none; border-radius:6px; cursor:pointer; font-weight:600;">{{ __('Blochez') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -199,16 +199,16 @@
|
||||
<div class="pb-shell" x-data="{ view: 'kanban', dragKey: null }" wire:poll.10s>
|
||||
{{-- TOPBAR --}}
|
||||
<div class="pb-topbar">
|
||||
<span class="pb-topbar-title">Pipeline</span>
|
||||
<span class="pb-topbar-title">{{ __('Pipeline') }}</span>
|
||||
<div class="pb-topbar-sep"></div>
|
||||
<div class="pb-search">
|
||||
<span class="pb-search-icon">🔍</span>
|
||||
<input placeholder="Caută client, mașină, număr..." wire:model.live.debounce.300ms="searchQuery" />
|
||||
<input placeholder="{{ __('Caută client, mașină, număr...') }}" wire:model.live.debounce.300ms="searchQuery" />
|
||||
</div>
|
||||
<div class="pb-topbar-right">
|
||||
<button class="pb-btn" wire:click="setFilter('urgent')">⚠ Filtre</button>
|
||||
<a class="pb-btn" wire:click="exportCsv" wire:loading.attr="disabled">⬇ Export</a>
|
||||
<button class="pb-btn pb-btn-primary" wire:click="openNewForm">+ Deal nou</button>
|
||||
<button class="pb-btn" wire:click="setFilter('urgent')">⚠ {{ __('Filtre') }}</button>
|
||||
<a class="pb-btn" wire:click="exportCsv" wire:loading.attr="disabled">⬇ {{ __('Export') }}</a>
|
||||
<button class="pb-btn pb-btn-primary" wire:click="openNewForm">+ {{ __('Deal nou') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -216,49 +216,49 @@
|
||||
<div class="pb-stat-strip">
|
||||
<div class="pb-stat-item">
|
||||
<span class="pb-stat-val">{{ $stats['active'] }}</span>
|
||||
<span class="pb-stat-lbl">Total deals active</span>
|
||||
<span class="pb-stat-lbl">{{ __('Total deals active') }}</span>
|
||||
</div>
|
||||
<div class="pb-stat-sep"></div>
|
||||
<div class="pb-stat-item">
|
||||
<span class="pb-stat-val" style="color:var(--pb-blue)">{{ number_format($stats['pipeline_mdl'], 0, '.', ' ') }}</span>
|
||||
<span class="pb-stat-lbl">MDL pipeline total</span>
|
||||
<span class="pb-stat-lbl">{{ __('MDL pipeline total') }}</span>
|
||||
</div>
|
||||
<div class="pb-stat-sep"></div>
|
||||
<div class="pb-stat-item">
|
||||
<span class="pb-stat-val" style="color:var(--pb-green)">{{ number_format($stats['closed_today_mdl'], 0, '.', ' ') }}</span>
|
||||
<span class="pb-stat-lbl">MDL închise azi</span>
|
||||
<span class="pb-stat-lbl">{{ __('MDL închise azi') }}</span>
|
||||
</div>
|
||||
<div class="pb-stat-sep"></div>
|
||||
<div class="pb-stat-item">
|
||||
<span class="pb-stat-val" style="color:var(--pb-amber)">{{ $stats['need_action'] }}</span>
|
||||
<span class="pb-stat-lbl">Necesită acțiune</span>
|
||||
<span class="pb-stat-lbl">{{ __('Necesită acțiune') }}</span>
|
||||
</div>
|
||||
<div class="pb-stat-sep"></div>
|
||||
<div class="pb-stat-item">
|
||||
<span class="pb-stat-val">{{ $stats['conversion_rate'] }}%</span>
|
||||
<span class="pb-stat-lbl">Rata conversie</span>
|
||||
<span class="pb-stat-lbl">{{ __('Rata conversie') }}</span>
|
||||
</div>
|
||||
<div class="pb-stat-sep"></div>
|
||||
<div class="pb-stat-item">
|
||||
<span class="pb-stat-val" style="color:var(--pb-red)">{{ $stats['overdue'] }}</span>
|
||||
<span class="pb-stat-lbl">Depășit termen</span>
|
||||
<span class="pb-stat-lbl">{{ __('Depășit termen') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- FILTER BAR --}}
|
||||
<div class="pb-filter-bar">
|
||||
<div class="pb-view-toggle">
|
||||
<div class="pb-vt-btn" :class="view==='kanban' && 'active'" @click="view='kanban'">📋 Kanban</div>
|
||||
<div class="pb-vt-btn" :class="view==='list' && 'active'" @click="view='list'">≡ Listă</div>
|
||||
<div class="pb-vt-btn" :class="view==='kanban' && 'active'" @click="view='kanban'">📋 {{ __('Kanban') }}</div>
|
||||
<div class="pb-vt-btn" :class="view==='list' && 'active'" @click="view='list'">≡ {{ __('Listă') }}</div>
|
||||
</div>
|
||||
<div class="pb-filter-sep"></div>
|
||||
<div class="pb-chip {{ $activeFilter === 'all' ? 'active' : '' }}" wire:click="setFilter('all')">Toate</div>
|
||||
<div class="pb-chip {{ $activeFilter === 'mine' ? 'active' : '' }}" wire:click="setFilter('mine')">👤 Ale mele</div>
|
||||
<div class="pb-chip {{ $activeFilter === 'urgent' ? 'active' : '' }}" wire:click="setFilter('urgent')" style="color:var(--pb-red-text)">⚠ Urgente</div>
|
||||
<div class="pb-chip {{ $activeFilter === 'today' ? 'active' : '' }}" wire:click="setFilter('today')">📅 Azi</div>
|
||||
<div class="pb-chip {{ $activeFilter === 'all' ? 'active' : '' }}" wire:click="setFilter('all')">{{ __('Toate') }}</div>
|
||||
<div class="pb-chip {{ $activeFilter === 'mine' ? 'active' : '' }}" wire:click="setFilter('mine')">👤 {{ __('Ale mele') }}</div>
|
||||
<div class="pb-chip {{ $activeFilter === 'urgent' ? 'active' : '' }}" wire:click="setFilter('urgent')" style="color:var(--pb-red-text)">⚠ {{ __('Urgente') }}</div>
|
||||
<div class="pb-chip {{ $activeFilter === 'today' ? 'active' : '' }}" wire:click="setFilter('today')">📅 {{ __('Azi') }}</div>
|
||||
<div class="pb-filter-sep"></div>
|
||||
<div class="pb-period">📅 {{ now()->locale('ro')->isoFormat('MMMM YYYY') }}</div>
|
||||
<div class="pb-total">Pipeline: <strong>{{ number_format($stats['pipeline_mdl'], 0, '.', ' ') }} MDL</strong> · <strong>{{ $stats['active'] }} deals</strong></div>
|
||||
<div class="pb-period">📅 {{ now()->locale(app()->getLocale())->isoFormat('MMMM YYYY') }}</div>
|
||||
<div class="pb-total">{{ __('Pipeline') }}: <strong>{{ number_format($stats['pipeline_mdl'], 0, '.', ' ') }} MDL</strong> · <strong>{{ $stats['active'] }} {{ __('deals') }}</strong></div>
|
||||
</div>
|
||||
|
||||
{{-- KANBAN --}}
|
||||
@@ -297,29 +297,29 @@
|
||||
<div class="pb-deal-actions" @click.stop>
|
||||
@if ($colKey === 'request')
|
||||
{{-- 📅 calendar-plus / 📞 phone / ⋮ --}}
|
||||
<a class="pb-act-btn" wire:click.stop="quickSchedule('{{ $card['key'] }}')" title="Programare">📅</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="tel:{{ $card['phone'] }}" @click.stop title="Sună">📞</a>@endif
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="Editare">⋮</a>
|
||||
<a class="pb-act-btn" wire:click.stop="quickSchedule('{{ $card['key'] }}')" title="{{ __('Programare') }}">📅</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="tel:{{ $card['phone'] }}" @click.stop title="{{ __('Sună') }}">📞</a>@endif
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="{{ __('Editare') }}">⋮</a>
|
||||
@elseif ($colKey === 'quote')
|
||||
{{-- 📅 / 💬 message / ⋮ --}}
|
||||
<a class="pb-act-btn" wire:click.stop="quickSchedule('{{ $card['key'] }}')" title="Programare">📅</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="https://wa.me/{{ preg_replace('/\D/', '', $card['phone']) }}" target="_blank" @click.stop title="WhatsApp">💬</a>@endif
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="Editare">⋮</a>
|
||||
<a class="pb-act-btn" wire:click.stop="quickSchedule('{{ $card['key'] }}')" title="{{ __('Programare') }}">📅</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="https://wa.me/{{ preg_replace('/\D/', '', $card['phone']) }}" target="_blank" @click.stop title="{{ __('WhatsApp') }}">💬</a>@endif
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="{{ __('Editare') }}">⋮</a>
|
||||
@elseif ($colKey === 'scheduled')
|
||||
{{-- 📄+ file-plus (start WO) / 💬 / ⋮ --}}
|
||||
<a class="pb-act-btn" wire:click.stop="moveCard('{{ $card['key'] }}', 'in_work')" title="Începe lucrul (creează fișă)">📄</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="https://wa.me/{{ preg_replace('/\D/', '', $card['phone']) }}" target="_blank" @click.stop title="WhatsApp">💬</a>@endif
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="Editare">⋮</a>
|
||||
<a class="pb-act-btn" wire:click.stop="moveCard('{{ $card['key'] }}', 'in_work')" title="{{ __('Începe lucrul') }}">📄</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="https://wa.me/{{ preg_replace('/\D/', '', $card['phone']) }}" target="_blank" @click.stop title="{{ __('WhatsApp') }}">💬</a>@endif
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="{{ __('Editare') }}">⋮</a>
|
||||
@elseif ($colKey === 'in_work')
|
||||
{{-- 👁 eye / 💬 / ⋮ --}}
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="Deschide fișa">👁</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="https://wa.me/{{ preg_replace('/\D/', '', $card['phone']) }}" target="_blank" @click.stop title="WhatsApp">💬</a>@endif
|
||||
<a class="pb-act-btn" wire:click.stop="moveCard('{{ $card['key'] }}', 'ready')" title="Marchează Gata">✓</a>
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="{{ __('Deschide fișa') }}">👁</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="https://wa.me/{{ preg_replace('/\D/', '', $card['phone']) }}" target="_blank" @click.stop title="{{ __('WhatsApp') }}">💬</a>@endif
|
||||
<a class="pb-act-btn" wire:click.stop="moveCard('{{ $card['key'] }}', 'ready')" title="{{ __('Marchează Gata') }}">✓</a>
|
||||
@elseif ($colKey === 'ready')
|
||||
{{-- 💰 cash / 💬 / ⋮ --}}
|
||||
<a class="pb-act-btn" wire:click.stop="moveCard('{{ $card['key'] }}', 'paid')" title="Achitat">💰</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="tel:{{ $card['phone'] }}" @click.stop title="Sună">📞</a>@endif
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="Editare">⋮</a>
|
||||
<a class="pb-act-btn" wire:click.stop="moveCard('{{ $card['key'] }}', 'paid')" title="{{ __('Achitat') }}">💰</a>
|
||||
@if (!empty($card['phone']))<a class="pb-act-btn" href="tel:{{ $card['phone'] }}" @click.stop title="{{ __('Sună') }}">📞</a>@endif
|
||||
<a class="pb-act-btn" href="{{ $card['edit_url'] }}" @click.stop title="{{ __('Editare') }}">⋮</a>
|
||||
@endif
|
||||
</div>
|
||||
<div class="pb-deal-id">{{ $card['code'] }}</div>
|
||||
@@ -328,7 +328,7 @@
|
||||
@if (!empty($card['tags']))
|
||||
<div class="pb-deal-meta">
|
||||
@foreach ($card['tags'] as $tag)
|
||||
<span class="pb-tag pb-tag-{{ $tag['color'] }}">{{ $tag['label'] }}</span>
|
||||
<span class="pb-tag pb-tag-{{ $tag['color'] }}">{{ __($tag['label']) }}</span>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
@@ -350,10 +350,10 @@
|
||||
@endif
|
||||
</div>
|
||||
@empty
|
||||
<div class="pb-empty-col">Gol — trage un card aici</div>
|
||||
<div class="pb-empty-col">{{ __('Gol — trage un card aici') }}</div>
|
||||
@endforelse
|
||||
@if ($colKey !== 'paid')
|
||||
<button type="button" class="pb-add-card" wire:click="openNewForm">+ Adaugă cerere</button>
|
||||
<button type="button" class="pb-add-card" wire:click="openNewForm">+ {{ __('Adaugă cerere') }}</button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@@ -366,7 +366,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
@foreach (['#', 'Subiect', 'Client', 'Auto', 'Etapă', 'Sumă', 'Responsabil', 'Stare timp'] as $h)
|
||||
<th style="text-align:left; padding:8px 12px; font-size:10px; font-weight:600; color:var(--pb-text-3); text-transform:uppercase; border-bottom:1px solid var(--pb-border);">{{ $h }}</th>
|
||||
<th style="text-align:left; padding:8px 12px; font-size:10px; font-weight:600; color:var(--pb-text-3); text-transform:uppercase; border-bottom:1px solid var(--pb-border);">{{ __($h) }}</th>
|
||||
@endforeach
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -395,40 +395,40 @@
|
||||
@if ($showNewForm)
|
||||
<div class="pb-panel-head">
|
||||
<div>
|
||||
<div class="pb-panel-title">Cerere nouă</div>
|
||||
<div class="pb-panel-id">Va fi adăugată în Cerere nouă</div>
|
||||
<div class="pb-panel-title">{{ __('Cerere nouă') }}</div>
|
||||
<div class="pb-panel-id">{{ __('Va fi adăugată în Cerere nouă') }}</div>
|
||||
</div>
|
||||
<div class="pb-close-btn" wire:click="$set('showNewForm', false)">✕</div>
|
||||
</div>
|
||||
<form class="pb-panel-body" wire:submit.prevent="createNewLead">
|
||||
<div class="pb-form-field">
|
||||
<label>Nume *</label>
|
||||
<label>{{ __('Nume') }} *</label>
|
||||
<input type="text" wire:model="newName" placeholder="Ion Popescu" autofocus>
|
||||
</div>
|
||||
<div class="pb-form-field">
|
||||
<label>Telefon *</label>
|
||||
<label>{{ __('Telefon') }} *</label>
|
||||
<input type="text" wire:model="newPhone" placeholder="+373 69 ...">
|
||||
</div>
|
||||
<div class="pb-form-field">
|
||||
<label>Auto / model</label>
|
||||
<label>{{ __('Auto / model') }}</label>
|
||||
<input type="text" wire:model="newCar" placeholder="VW Passat 2018">
|
||||
</div>
|
||||
<div class="pb-form-field">
|
||||
<label>Sursă</label>
|
||||
<label>{{ __('Sursă') }}</label>
|
||||
<select wire:model="newSource">
|
||||
@foreach (\App\Models\Tenant\Lead::SOURCES as $val => $lbl)
|
||||
<option value="{{ $val }}">{{ $lbl }}</option>
|
||||
<option value="{{ $val }}">{{ __($lbl) }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="pb-form-field">
|
||||
<label>Notițe / reclamație</label>
|
||||
<textarea wire:model="newNotes" placeholder="Ce a spus clientul..."></textarea>
|
||||
<label>{{ __('Notițe / reclamație') }}</label>
|
||||
<textarea wire:model="newNotes" placeholder="{{ __('Ce a spus clientul...') }}"></textarea>
|
||||
</div>
|
||||
</form>
|
||||
<div class="pb-panel-actions">
|
||||
<button type="button" class="pb-quick-btn" wire:click="$set('showNewForm', false)">Anulează</button>
|
||||
<button type="button" class="pb-quick-btn primary" wire:click="createNewLead">Creează cerere</button>
|
||||
<button type="button" class="pb-quick-btn" wire:click="$set('showNewForm', false)">{{ __('Anulează') }}</button>
|
||||
<button type="button" class="pb-quick-btn primary" wire:click="createNewLead">{{ __('Creează cerere') }}</button>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@@ -446,7 +446,7 @@
|
||||
</div>
|
||||
<div class="pb-panel-body">
|
||||
<div>
|
||||
<div class="pb-panel-sec-title">Progres etapă</div>
|
||||
<div class="pb-panel-sec-title">{{ __('Progres etapă') }}</div>
|
||||
<div class="pb-stage-stepper">
|
||||
@foreach ($detail['stages'] as $st)
|
||||
<div class="pb-stage-step {{ $st['done'] ? 'done' : '' }} {{ $st['current'] ? 'current' : '' }}"></div>
|
||||
@@ -454,7 +454,7 @@
|
||||
</div>
|
||||
<div class="pb-stage-labels">
|
||||
@foreach ($detail['stages'] as $st)
|
||||
<div class="pb-stage-lbl {{ $st['current'] ? 'current' : '' }}">{{ $st['label'] }}</div>
|
||||
<div class="pb-stage-lbl {{ $st['current'] ? 'current' : '' }}">{{ __($st['label']) }}</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@@ -464,15 +464,15 @@
|
||||
@foreach ($detail['fields'] as $label => $value)
|
||||
@if ($value)
|
||||
<div class="pb-pfield">
|
||||
<div class="pb-pfield-label">{{ $label }}</div>
|
||||
<div class="pb-pfield-val" @if($label==='Telefon') style="color:var(--pb-blue)" @endif>{{ $value }}</div>
|
||||
<div class="pb-pfield-label">{{ __($label) }}</div>
|
||||
<div class="pb-pfield-val" @if(__($label)===__("Telefon")) style="color:var(--pb-blue)" @endif>{{ $value }}</div>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
@if ($detail['note'])
|
||||
<div class="pb-pfield">
|
||||
<div class="pb-pfield-label">Notițe / Reclamație</div>
|
||||
<div class="pb-pfield-label">{{ __('Notițe / Reclamație') }}</div>
|
||||
<div style="font-size:12px; color:var(--pb-text-2); white-space:pre-wrap;">{{ $detail['note'] }}</div>
|
||||
</div>
|
||||
@endif
|
||||
@@ -480,21 +480,21 @@
|
||||
|
||||
@if (!empty($detail['wo']))
|
||||
<div class="pb-panel-section">
|
||||
<div class="pb-panel-sec-title">Fișă de lucru</div>
|
||||
<div class="pb-panel-sec-title">{{ __('Fișă de lucru') }}</div>
|
||||
<div style="background:var(--pb-purple-bg); border:1px solid #DDD6FE; border-radius:6px; padding:10px 12px; display:flex; align-items:center; justify-content:space-between;">
|
||||
<div>
|
||||
<div style="font-size:12px; font-weight:600; color:var(--pb-purple-text);">{{ $detail['wo']['number'] }} · {{ $detail['wo']['status_label'] }}</div>
|
||||
<div style="font-size:12px; font-weight:600; color:var(--pb-purple-text);">{{ $detail['wo']['number'] }} · {{ __($detail['wo']['status_label']) }}</div>
|
||||
<div style="font-size:11px; color:var(--pb-purple-text); opacity:.8; margin-top:2px;">
|
||||
@if (!is_null($detail['wo']['progress_pct'])){{ $detail['wo']['progress_pct'] }}% finalizat @endif
|
||||
@if (!is_null($detail['wo']['progress_pct'])){{ $detail['wo']['progress_pct'] }}% {{ __('finalizat') }} @endif
|
||||
@if ($detail['wo']['eta']) · ETA {{ $detail['wo']['eta'] }} @endif
|
||||
</div>
|
||||
</div>
|
||||
<a class="pb-quick-btn" style="padding:4px 10px;" href="{{ $detail['edit_url'] }}">↗ Deschide</a>
|
||||
<a class="pb-quick-btn" style="padding:4px 10px;" href="{{ $detail['edit_url'] }}">↗ {{ __('Deschide') }}</a>
|
||||
</div>
|
||||
@if (!empty($detail['wo']['has_pending_approval']))
|
||||
<div style="margin-top:8px; background:var(--pb-amber-bg); border:1px solid #FDE68A; border-radius:6px; padding:8px 12px;">
|
||||
<div style="font-size:11px; font-weight:600; color:var(--pb-amber-text);">⚠ Necesită aprobare client</div>
|
||||
<div style="font-size:11px; color:var(--pb-amber-text); margin-top:2px;">Deschide fișa pentru aprobare lucrare/piesă.</div>
|
||||
<div style="font-size:11px; font-weight:600; color:var(--pb-amber-text);">⚠ {{ __('Necesită aprobare client') }}</div>
|
||||
<div style="font-size:11px; color:var(--pb-amber-text); margin-top:2px;">{{ __('Deschide fișa pentru aprobare lucrare/piesă.') }}</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@@ -502,7 +502,7 @@
|
||||
|
||||
@if (!empty($detail['activity']))
|
||||
<div class="pb-panel-section">
|
||||
<div class="pb-panel-sec-title">Activitate recentă</div>
|
||||
<div class="pb-panel-sec-title">{{ __('Activitate recentă') }}</div>
|
||||
@foreach ($detail['activity'] as $a)
|
||||
<div class="pb-activity-item">
|
||||
<div class="pb-act-icon" style="background:var(--pb-blue-bg); color:var(--pb-blue-text);">●</div>
|
||||
@@ -516,15 +516,15 @@
|
||||
@endif
|
||||
|
||||
<div class="pb-panel-section">
|
||||
<div class="pb-panel-sec-title">Acțiuni rapide</div>
|
||||
<div class="pb-panel-sec-title">{{ __('Acțiuni rapide') }}</div>
|
||||
<div class="pb-quick-grid">
|
||||
@if (!empty($detail['phone']))
|
||||
<a class="pb-quick-btn" target="_blank" href="https://wa.me/{{ preg_replace('/\D/', '', $detail['phone']) }}">💚 WhatsApp</a>
|
||||
<a class="pb-quick-btn" href="tel:{{ $detail['phone'] }}">📞 Sună</a>
|
||||
<a class="pb-quick-btn" href="sms:{{ $detail['phone'] }}">💬 SMS</a>
|
||||
<a class="pb-quick-btn" target="_blank" href="https://wa.me/{{ preg_replace('/\D/', '', $detail['phone']) }}">💚 {{ __('WhatsApp') }}</a>
|
||||
<a class="pb-quick-btn" href="tel:{{ $detail['phone'] }}">📞 {{ __('Sună') }}</a>
|
||||
<a class="pb-quick-btn" href="sms:{{ $detail['phone'] }}">💬 {{ __('SMS') }}</a>
|
||||
@endif
|
||||
@if (!empty($detail['wo']['tracking_url']))
|
||||
<a class="pb-quick-btn" href="{{ $detail['wo']['tracking_url'] }}" target="_blank">🔗 Link tracking</a>
|
||||
<a class="pb-quick-btn" href="{{ $detail['wo']['tracking_url'] }}" target="_blank">🔗 {{ __('Link tracking') }}</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@@ -533,11 +533,11 @@
|
||||
<div class="pb-panel-actions">
|
||||
@php $kind = explode(':', $openCardKey)[0] ?? '' @endphp
|
||||
@if (in_array($kind, ['lead', 'deal']) && empty($detail['wo']))
|
||||
<a class="pb-quick-btn" wire:click="quickSchedule('{{ $openCardKey }}')">📅 Programează</a>
|
||||
<a class="pb-quick-btn primary" href="{{ $detail['edit_url'] }}">↗ Deschide deal</a>
|
||||
<a class="pb-quick-btn" wire:click="quickSchedule('{{ $openCardKey }}')">📅 {{ __('Programează') }}</a>
|
||||
<a class="pb-quick-btn primary" href="{{ $detail['edit_url'] }}">↗ {{ __('Deschide deal') }}</a>
|
||||
@elseif ($kind === 'wo')
|
||||
<a class="pb-quick-btn" href="{{ $this->calendarUrl() }}">📅 Calendar</a>
|
||||
<a class="pb-quick-btn primary" href="{{ $detail['edit_url'] }}">↗ Deschide Fișă</a>
|
||||
<a class="pb-quick-btn" href="{{ $this->calendarUrl() }}">📅 {{ __('Calendar') }}</a>
|
||||
<a class="pb-quick-btn primary" href="{{ $detail['edit_url'] }}">↗ {{ __('Deschide Fișă') }}</a>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
Reference in New Issue
Block a user