feat(i18n): convert 38 hardcoded static labels + safe blade wrap + 226 keys
- Convert all remaining static \$modelLabel/\$pluralModelLabel to getter methods with __() (AppointmentResource, WorkOrderResource, MasterResource, ServiceTemplateResource, LaborResource, and 33 others) - Safe blade wrap v2 (37 files, 201 wraps): fixed the regex to not match `->`, `=>`, `!<` — previous aggressive pass broke @if directives - Bulk-translate lowercase model-label keys (programări, fișe lucru, tehnicieni, șabloane servicii, norme-ore, etc.) — these were the RO strings appearing in page titles/breadcrumbs - Add human RU/EN for mechanic-kpi (Mecanic/Lucrări/Norma ore/etc.) and calendar-board words Tests 306 green. Blade compiles cleanly. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -24,9 +24,19 @@ class CompanyResource extends Resource
|
||||
return __('nav.label.Companii');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'companie';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'companii';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('companie');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('companii');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 10;
|
||||
|
||||
|
||||
@@ -24,9 +24,19 @@ class PlanResource extends Resource
|
||||
return __('nav.label.Planuri');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'plan';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'planuri';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('plan');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('planuri');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 20;
|
||||
|
||||
|
||||
@@ -35,7 +35,12 @@ class SubscriptionResource extends Resource
|
||||
return __('factură');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = 'facturi';
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('facturi');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 30;
|
||||
|
||||
|
||||
@@ -25,9 +25,19 @@ class SuperAdminResource extends Resource
|
||||
return __('nav.label.Utilizatori');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'utilizator';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'utilizatori';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('utilizator');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('utilizatori');
|
||||
}
|
||||
|
||||
protected static string|\UnitEnum|null $navigationGroup = null;
|
||||
|
||||
|
||||
@@ -26,9 +26,19 @@ class ActivityResource extends Resource
|
||||
return __('nav.group.Admin');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'eveniment';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'jurnal';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('eveniment');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('jurnal');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 95;
|
||||
|
||||
|
||||
@@ -32,7 +32,12 @@ class AppointmentResource extends Resource
|
||||
return __('nav.group.CRM');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'programare';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('programare');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
|
||||
@@ -29,9 +29,19 @@ class CallResource extends Resource
|
||||
return __('nav.group.Marketing');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'apel';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'apeluri';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('apel');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('apeluri');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 62;
|
||||
|
||||
|
||||
@@ -23,7 +23,12 @@ class ClientResource extends Resource
|
||||
return __('nav.label.Clienți');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'client';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('client');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
|
||||
@@ -37,9 +37,19 @@ class DealResource extends Resource
|
||||
return false; // PipelineBoard page is the canonical entry; this resource keeps CRUD routes for edit/create.
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'deal';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'deal-uri';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('deal');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('deal-uri');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 6;
|
||||
|
||||
|
||||
@@ -29,7 +29,12 @@ class EmployeeProfileResource extends Resource
|
||||
return __('nav.group.Finanțe');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'angajat';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('angajat');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
|
||||
@@ -36,7 +36,12 @@ class ExpenseResource extends Resource
|
||||
return __('cheltuială');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = 'cheltuieli';
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('cheltuieli');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 51;
|
||||
|
||||
|
||||
@@ -36,7 +36,12 @@ class LaborResource extends Resource
|
||||
return __('normă');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = 'norme-ore';
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('norme-ore');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 32;
|
||||
|
||||
|
||||
@@ -30,9 +30,19 @@ class LeadResource extends Resource
|
||||
return __('nav.group.CRM');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'cerere';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'cereri';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('cerere');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('cereri');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 5;
|
||||
|
||||
|
||||
@@ -28,7 +28,12 @@ class MarketingChannelResource extends Resource
|
||||
return __('nav.group.Marketing');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'canal';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('canal');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
|
||||
@@ -33,9 +33,19 @@ class MasterResource extends Resource
|
||||
return __('nav.group.Service');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'tehnician';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'tehnicieni';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('tehnician');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('tehnicieni');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 33;
|
||||
|
||||
|
||||
@@ -28,9 +28,19 @@ class MessageTemplateResource extends Resource
|
||||
return __('nav.group.Marketing');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'template';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'template-uri';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('template');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('template-uri');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 60;
|
||||
|
||||
|
||||
@@ -37,7 +37,12 @@ class PartResource extends Resource
|
||||
return __('piesă');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = 'piese';
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('piese');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 40;
|
||||
|
||||
|
||||
@@ -29,7 +29,12 @@ class PayrollAdjustmentResource extends Resource
|
||||
return __('nav.group.Finanțe');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'ajustare';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('ajustare');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
|
||||
@@ -31,9 +31,19 @@ class PayrollRunResource extends Resource
|
||||
return __('nav.group.Finanțe');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'salariu';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'salarii';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('salariu');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('salarii');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 53;
|
||||
|
||||
|
||||
@@ -30,7 +30,12 @@ class PostResource extends Resource
|
||||
return __('nav.group.Admin');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'pod';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('pod');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
|
||||
@@ -29,9 +29,19 @@ class RoleResource extends Resource
|
||||
return __('nav.group.Admin');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'rol';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'roluri';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('rol');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('roluri');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 82;
|
||||
|
||||
|
||||
@@ -28,9 +28,19 @@ class SupplierResource extends Resource
|
||||
return __('nav.group.Depozit');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'furnizor';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'furnizori';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('furnizor');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('furnizori');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 42;
|
||||
|
||||
|
||||
@@ -30,9 +30,19 @@ class UserResource extends Resource
|
||||
return __('nav.group.Admin');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'utilizator';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'utilizatori';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('utilizator');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('utilizatori');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 80;
|
||||
|
||||
|
||||
@@ -28,9 +28,19 @@ class WarehouseResource extends Resource
|
||||
return __('nav.group.Depozit');
|
||||
}
|
||||
|
||||
protected static ?string $modelLabel = 'depozit';
|
||||
protected static ?string $modelLabel = null;
|
||||
|
||||
protected static ?string $pluralModelLabel = 'depozite';
|
||||
public static function getModelLabel(): string
|
||||
{
|
||||
return __('depozit');
|
||||
}
|
||||
|
||||
protected static ?string $pluralModelLabel = null;
|
||||
|
||||
public static function getPluralModelLabel(): string
|
||||
{
|
||||
return __('depozite');
|
||||
}
|
||||
|
||||
protected static ?int $navigationSort = 38;
|
||||
|
||||
|
||||
+195
-32
@@ -9,11 +9,17 @@
|
||||
"% marja piese": "% marja piese",
|
||||
"% marjă implicit": "Default margin %",
|
||||
"% piese": "% piese",
|
||||
"(GET, POST, PATCH, DELETE)": "(GET, POST, PATCH, DELETE)",
|
||||
"(PDF).": "(PDF).",
|
||||
"+ Conversație nouă": "+ New conversation",
|
||||
"+ Pod / spațiu nou": "+ New bay / space",
|
||||
"+ Pod nou": "+ Pod nou",
|
||||
"+ Programare nouă": "+ New appointment",
|
||||
"+1 {$item->article} — {$item->qty_received}/{$item->qty}": "+1 {$item->article} — {$item->qty_received}/{$item->qty}",
|
||||
". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.": ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.",
|
||||
"/api/v1/clients": "/api/v1/clients",
|
||||
"/api/v1/vehicles": "/api/v1/vehicles",
|
||||
"/api/v1/work-orders": "/api/v1/work-orders",
|
||||
"0 = dezactivat": "0 = dezactivat",
|
||||
"1.15 = +15% peste prețul de bază. 0.95 = -5%.": "1.15 = +15% peste prețul de bază. 0.95 = -5%.",
|
||||
"123456:ABC-XYZ...": "123456:ABC-XYZ...",
|
||||
@@ -32,6 +38,7 @@
|
||||
"AYS...": "AYS...",
|
||||
"Abonament": "Subscription",
|
||||
"Abonament până la": "Subscribed until",
|
||||
"Abonamentul pentru": "Abonamentul pentru",
|
||||
"Abonamentul se extinde automat": "Subscription auto-renews",
|
||||
"Abonamentul tău a fost extins.": "Your subscription has been extended.",
|
||||
"Abonat": "Subscribed",
|
||||
@@ -135,6 +142,7 @@
|
||||
"Alte": "Other",
|
||||
"Alte cheltuieli": "Other expenses",
|
||||
"Altă problemă": "Other problem",
|
||||
"Am salvat token-ul, ascunde-l": "Am salvat token-ul, ascunde-l",
|
||||
"An": "Year",
|
||||
"An fabricație": "Production year",
|
||||
"An model": "Model year",
|
||||
@@ -173,6 +181,7 @@
|
||||
"Arhivat": "Archived",
|
||||
"Arhivează": "Archive",
|
||||
"Arhivă": "Archive",
|
||||
"Articol": "Articol",
|
||||
"Articol nu se potrivește comenzii": "Articol nu se potrivește comenzii",
|
||||
"Articole": "Articole",
|
||||
"Ascunde": "Hide",
|
||||
@@ -185,7 +194,7 @@
|
||||
"Astăzi": "Today",
|
||||
"Atașamente": "Attachments",
|
||||
"Atașat veți găsi": "Attached",
|
||||
"Atelierul meu": "Atelierul meu",
|
||||
"Atelierul meu": "My workshop",
|
||||
"Atenție": "Warning",
|
||||
"Audit / verificări fiscale": "Audit / verificări fiscale",
|
||||
"August": "August",
|
||||
@@ -194,6 +203,7 @@
|
||||
"Auto": "Vehicle",
|
||||
"Auto / model": "Vehicle / model",
|
||||
"Auto-import Excel/CSV": "Auto-import Excel/CSV",
|
||||
"AutoCRM PSauto · psauto.service.mir.md": "AutoCRM PSauto · psauto.service.mir.md",
|
||||
"AutoCRM SRL": "AutoCRM SRL",
|
||||
"Automată": "Automatic",
|
||||
"Automobile": "Vehicles",
|
||||
@@ -206,14 +216,17 @@
|
||||
"Aștept aprobare client": "Awaiting client approval",
|
||||
"Așteptată": "Expected",
|
||||
"BIC / SWIFT": "BIC / SWIFT",
|
||||
"BIC / SWIFT:": "BIC / SWIFT:",
|
||||
"Backup": "Backup",
|
||||
"Backup & Export date": "Backup & Export date",
|
||||
"Backup periodic (descarcă local sau sincronizează cu cloud)": "Backup periodic (descarcă local sau sincronizează cu cloud)",
|
||||
"Balance": "Balance",
|
||||
"Balanță": "Balance",
|
||||
"Banca": "Banca",
|
||||
"Banca:": "Banca:",
|
||||
"Bază": "Base",
|
||||
"Beneficiar": "Beneficiar",
|
||||
"Beneficiar:": "Beneficiar:",
|
||||
"Benzină": "Petrol",
|
||||
"Berlină": "Sedan",
|
||||
"Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.",
|
||||
@@ -250,7 +263,7 @@
|
||||
"Calculație": "Quote",
|
||||
"Calculează luna curentă": "Calculează luna curentă",
|
||||
"Calendar": "Calendar",
|
||||
"Calendar vizual": "Calendar vizual",
|
||||
"Calendar vizual": "Visual calendar",
|
||||
"Canal marketing": "Canal marketing",
|
||||
"Cancel": "Cancel",
|
||||
"Cant.": "Qty",
|
||||
@@ -259,6 +272,7 @@
|
||||
"Cantitate restituită": "Cantitate restituită",
|
||||
"Capacitate motor": "Engine capacity",
|
||||
"Capacitatea zilnică în ore": "Capacitatea zilnică în ore",
|
||||
"Card MAIB / MICB / Victoriabank, MD Cash, e-money": "Card MAIB / MICB / Victoriabank, MD Cash, e-money",
|
||||
"Card bancar": "Bank card",
|
||||
"Caroserie": "Body type",
|
||||
"Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Cashflow zilnic — verde = încasări, roșu = cheltuieli",
|
||||
@@ -279,11 +293,13 @@
|
||||
"Cereri": "Leads",
|
||||
"Cereri noi": "New leads",
|
||||
"Check-in depozit": "Check-in depozit",
|
||||
"Checksum (ISO)": "Checksum (ISO)",
|
||||
"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)",
|
||||
"Cheltuieli pe categorie": "Cheltuieli pe categorie",
|
||||
"Cheltuit": "Spent",
|
||||
"Cheltuit 90d": "Cheltuit 90d",
|
||||
"Chirie": "Rent",
|
||||
@@ -294,6 +310,7 @@
|
||||
"Clase auto": "Vehicle classes",
|
||||
"Clasă (pentru pricing)": "Clasă (pentru pricing)",
|
||||
"Claude API Key": "Claude API Key",
|
||||
"Click pentru a redenumi": "Click pentru a redenumi",
|
||||
"Client": "Client",
|
||||
"Client & Auto": "Client & Auto",
|
||||
"Client (nume, semnătură):": "Client (nume, semnătură):",
|
||||
@@ -321,10 +338,14 @@
|
||||
"Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)",
|
||||
"Coeficient": "Coeficient",
|
||||
"Coeficienți preț": "Pricing coefficients",
|
||||
"Coloana Articol *": "Coloana Articol *",
|
||||
"Coloana Brand (opțional)": "Coloana Brand (opțional)",
|
||||
"Coloana Cantitate *": "Coloana Cantitate *",
|
||||
"Coloana Denumire *": "Coloana Denumire *",
|
||||
"Coloana Preț *": "Coloana Preț *",
|
||||
"Coloane": "Columns",
|
||||
"Coloană": "Column",
|
||||
"Comanda": "Comanda",
|
||||
"Comanda ta a fost primită cu succes.": "Comanda ta a fost primită cu succes.",
|
||||
"Comandat": "Comandat",
|
||||
"Comandată": "Comandată",
|
||||
@@ -342,11 +363,13 @@
|
||||
"Complet": "Full",
|
||||
"Concediu": "Vacation",
|
||||
"Condiții (toate trebuie îndeplinite)": "Condiții (toate trebuie îndeplinite)",
|
||||
"Configurare:": "Configurare:",
|
||||
"Configurează procentele pentru calcul salariu. Marja internă (nu TVA) se scade din prețul de manoperă pentru a determina baza salariului.": "Configurează procentele pentru calcul salariu. Marja internă (nu TVA) se scade din prețul de manoperă pentru a determina baza salariului.",
|
||||
"Configurări": "Configuration",
|
||||
"Configurări avansate": "Advanced settings",
|
||||
"Confirmare plată primită": "Confirmare plată primită",
|
||||
"Confirmat": "Confirmed",
|
||||
"Confirmate": "Confirmed",
|
||||
"Confirmă": "Confirm",
|
||||
"Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.": "Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.",
|
||||
"Confirmă emailul": "Verify email",
|
||||
@@ -356,6 +379,7 @@
|
||||
"Conformitate GDPR (la cererea ștergerii datelor)": "Conformitate GDPR (la cererea ștergerii datelor)",
|
||||
"Consum": "Consumption",
|
||||
"Consumabile": "Supplies",
|
||||
"Cont PayPal sau card prin PayPal": "Cont PayPal sau card prin PayPal",
|
||||
"Contabil": "Accountant",
|
||||
"Contact": "Contact",
|
||||
"Contactare": "Contact",
|
||||
@@ -364,6 +388,7 @@
|
||||
"Contactează": "Contact",
|
||||
"Continuă": "Continue",
|
||||
"Continuă →": "Continuă →",
|
||||
"Contul": "Contul",
|
||||
"Conversație nouă": "Conversație nouă",
|
||||
"Convertește": "Convertește",
|
||||
"Convertit": "Converted",
|
||||
@@ -408,6 +433,7 @@
|
||||
"Cumulabil": "Cumulabil",
|
||||
"Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.": "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.",
|
||||
"Curăță": "Clear",
|
||||
"Custom": "Custom",
|
||||
"Cutie": "Gearbox",
|
||||
"Cutie de viteze": "Gearbox",
|
||||
"Cutie viteze": "Gearbox",
|
||||
@@ -453,6 +479,7 @@
|
||||
"De la data": "From date",
|
||||
"De la ora": "From time",
|
||||
"De la rândul (sărim header) *": "De la rândul (sărim header) *",
|
||||
"De la:": "De la:",
|
||||
"De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).",
|
||||
"De procesat": "To process",
|
||||
"Deal": "Deal",
|
||||
@@ -471,6 +498,7 @@
|
||||
"Denumire afișată": "Display name",
|
||||
"Denumire companie": "Company name",
|
||||
"Denumire produs": "Product name",
|
||||
"Deploy now": "Deploy now",
|
||||
"Depozit": "Warehouse",
|
||||
"Depozit gol": "Depozit gol",
|
||||
"Depozit implicit": "Default warehouse",
|
||||
@@ -525,6 +553,7 @@
|
||||
"Doar tu ești aici": "Doar tu ești aici",
|
||||
"Doar utilizatorii mei": "My users only",
|
||||
"Document": "Document",
|
||||
"Documentation": "Documentation",
|
||||
"Documente": "Documents",
|
||||
"Done": "Done",
|
||||
"Downgrade": "Downgrade",
|
||||
@@ -549,25 +578,29 @@
|
||||
"Editează": "Edit",
|
||||
"Editează drepturi": "Editează drepturi",
|
||||
"Editează produs": "Edit product",
|
||||
"Eficiență": "Eficiență",
|
||||
"Eficiență": "Efficiency",
|
||||
"Electric": "Electric",
|
||||
"Electrică": "Electrical",
|
||||
"Eliberat: {$n} rezervări consumate": "Eliberat: {$n} rezervări consumate",
|
||||
"Eliberează": "Issue",
|
||||
"Email": "Email",
|
||||
"Email admin": "Email admin",
|
||||
"Email:": "Email:",
|
||||
"Empty": "No results",
|
||||
"Endpoint webhook: https://service.mir.md/payments/stripe/webhook": "Endpoint webhook: https://service.mir.md/payments/stripe/webhook",
|
||||
"Endpoints disponibile:": "Endpoints disponibile:",
|
||||
"Eroare": "Error",
|
||||
"Eroare la recepție": "Eroare la recepție",
|
||||
"Etape": "Stages",
|
||||
"Etapă": "Stage",
|
||||
"Etichete piese": "Etichete piese",
|
||||
"Etichetă": "Etichetă",
|
||||
"Ex 30 → preț vânzare = preț achiziție × 1.30": "Ex 30 → preț vânzare = preț achiziție × 1.30",
|
||||
"Ex: 100": "Ex: 100",
|
||||
"Ex: 20": "Ex: 20",
|
||||
"Ex: 20 pentru +20%": "Ex: 20 pentru +20%",
|
||||
"Ex: 25": "Ex: 25",
|
||||
"Ex: Curte 1, Pod 4, Atelier electric": "Ex: Curte 1, Pod 4, Atelier electric",
|
||||
"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ă...",
|
||||
@@ -588,6 +621,7 @@
|
||||
"Ești sigur?": "Are you sure?",
|
||||
"FIȘĂ DE LUCRU": "FIȘĂ DE LUCRU",
|
||||
"Facturi": "Invoices",
|
||||
"Facturi & abonament": "Facturi & abonament",
|
||||
"Facturi neplătite": "Unpaid invoices",
|
||||
"Facturi pending / overdue": "Facturi pending / overdue",
|
||||
"Factură": "Invoice",
|
||||
@@ -603,6 +637,7 @@
|
||||
"Filters": "Filters",
|
||||
"Filtre": "Filters",
|
||||
"Filtru": "Filter",
|
||||
"Filtru:": "Filtru:",
|
||||
"Finalizat": "Done",
|
||||
"Financiar": "Financiar",
|
||||
"Finanțe": "Finanțe",
|
||||
@@ -624,6 +659,7 @@
|
||||
"Folosit ultima dată": "Folosit ultima dată",
|
||||
"Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.": "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.",
|
||||
"Force logout": "Force logout",
|
||||
"Format:": "Format:",
|
||||
"Foto": "Photo",
|
||||
"Foto factură": "Foto factură",
|
||||
"Foto piesă": "Foto piesă",
|
||||
@@ -661,10 +697,12 @@
|
||||
"Generează factură": "Generează factură",
|
||||
"Generează raport": "Generate report",
|
||||
"Generează token": "Generează token",
|
||||
"Generez ZIP...": "Generez ZIP...",
|
||||
"Global": "Global",
|
||||
"Gol — trage un card aici": "Empty — drop a card here",
|
||||
"Grafic": "Chart",
|
||||
"Gravitate": "Gravitate",
|
||||
"Grupare:": "Grupare:",
|
||||
"Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet",
|
||||
"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.",
|
||||
"Găsite (cu articol existent)": "Găsite (cu articol existent)",
|
||||
@@ -672,6 +710,7 @@
|
||||
"Hatchback": "Hatchback",
|
||||
"Hibrid": "Hybrid",
|
||||
"IBAN": "IBAN",
|
||||
"IBAN:": "IBAN:",
|
||||
"ID": "ID",
|
||||
"IDNO / CUI": "IDNO / CUI",
|
||||
"Ianuarie": "January",
|
||||
@@ -718,6 +757,7 @@
|
||||
"Inventar": "Inventory",
|
||||
"Invitație": "Invitation",
|
||||
"Invitații": "Invitations",
|
||||
"Ion Popescu": "Ion Popescu",
|
||||
"Istoric depozitare": "Istoric depozitare",
|
||||
"Istoric prețuri furnizori": "Istoric prețuri furnizori",
|
||||
"Iulie": "July",
|
||||
@@ -725,7 +765,7 @@
|
||||
"JSON": "JSON",
|
||||
"Joi": "Thursday",
|
||||
"Jurnal": "Audit log",
|
||||
"KPI mecanici": "KPI mecanici",
|
||||
"KPI mecanici": "Mechanics KPI",
|
||||
"Kanban": "Kanban",
|
||||
"Kilometraj": "Kilometraj",
|
||||
"Km": "km",
|
||||
@@ -733,11 +773,15 @@
|
||||
"Km ieșire": "Km out",
|
||||
"Km intrare": "Km in",
|
||||
"Km la ieșire:": "Km la ieșire:",
|
||||
"Km la intrare:": "Km la intrare:",
|
||||
"Km parcurși": "Mileage",
|
||||
"La editare lasă gol pentru a păstra parola actuală.": "La editare lasă gol pentru a păstra parola actuală.",
|
||||
"La revedere": "Goodbye",
|
||||
"La succes: webhook → automat status=paid + extends company.active_until": "La succes: webhook → automat status=paid + extends company.active_until",
|
||||
"La timp 90d": "La timp 90d",
|
||||
"La trecere pe „Montată\" se scade automat din stoc.": "La trecere pe „Montată\" se scade automat din stoc.",
|
||||
"Laracasts": "Laracasts",
|
||||
"Laravel has an incredibly rich ecosystem.": "Laravel has an incredibly rich ecosystem.",
|
||||
"Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.": "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.",
|
||||
"Lead-uri": "Lead-uri",
|
||||
"Lead-uri pe sursă": "Lead-uri pe sursă",
|
||||
@@ -749,6 +793,7 @@
|
||||
"Limite": "Limite",
|
||||
"Linia nu mai necesită aprobare.": "Linia nu mai necesită aprobare.",
|
||||
"Linii": "Linii",
|
||||
"Link": "Link",
|
||||
"Link client (QR)": "Link client (QR)",
|
||||
"Link tracking": "Tracking link",
|
||||
"Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.": "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.",
|
||||
@@ -769,6 +814,7 @@
|
||||
"Locație": "Location",
|
||||
"Locație (raft)": "Locație (raft)",
|
||||
"Locație rack/bin": "Locație rack/bin",
|
||||
"Log in": "Log in",
|
||||
"Login": "Login",
|
||||
"Logo": "Logo",
|
||||
"Logo & favicon": "Logo & favicon",
|
||||
@@ -779,16 +825,17 @@
|
||||
"Loturi (FIFO)": "Loturi (FIFO)",
|
||||
"Lucrare": "Lucrare",
|
||||
"Lucrare blocată": "Work blocked",
|
||||
"Lucrări": "Lucrări",
|
||||
"Lucrări": "Tasks",
|
||||
"Lucrări la terți": "Lucrări la terți",
|
||||
"Lucrări terți": "Outsourced jobs",
|
||||
"Luna aceasta": "This month",
|
||||
"Luna curentă": "Current month",
|
||||
"Luna trecută": "Last month",
|
||||
"Luna următoare ▶": "Luna următoare ▶",
|
||||
"Luna următoare ▶": "Next month ▶",
|
||||
"Lunar": "Lunar",
|
||||
"Luni": "Months",
|
||||
"Luni (zi)": "Monday",
|
||||
"Luni – Vineri: 08:00 – 18:00": "Luni – Vineri: 08:00 – 18:00",
|
||||
"Lună": "Lună",
|
||||
"Lățime": "Lățime",
|
||||
"MB folosiți": "MB folosiți",
|
||||
@@ -809,6 +856,8 @@
|
||||
"Manoperă": "Labor",
|
||||
"Manuală": "Manual",
|
||||
"Marca": "Marca",
|
||||
"Marca/Model": "Marca/Model",
|
||||
"Marca/Model:": "Marca/Model:",
|
||||
"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",
|
||||
@@ -832,13 +881,16 @@
|
||||
"Markup %": "Markup %",
|
||||
"Martie": "March",
|
||||
"Marți": "Tuesday",
|
||||
"Matricea": "Matricea",
|
||||
"Max clienți": "Max clienți",
|
||||
"Max fișe/lună": "Max fișe/lună",
|
||||
"Max mașini": "Max mașini",
|
||||
"Max useri": "Max useri",
|
||||
"Mașina e gata de ridicat": "Mașina e gata de ridicat",
|
||||
"Mașini": "Vehicles",
|
||||
"Mecanic": "Mechanic",
|
||||
"Mecanic implicit": "Default mechanic",
|
||||
"Mecanici": "Mechanics",
|
||||
"Medie": "Medium",
|
||||
"Mediu": "Medium",
|
||||
"Merchant Code": "Merchant Code",
|
||||
@@ -846,16 +898,20 @@
|
||||
"Mesaj client": "Mesaj client",
|
||||
"Mesaje": "Messages",
|
||||
"Mesaje AI/lună": "Mesaje AI/lună",
|
||||
"Metoda": "Metoda",
|
||||
"Metode de livrare": "Metode de livrare",
|
||||
"Metode plată": "Payment methods",
|
||||
"Metodă": "Metodă",
|
||||
"Metodă plată": "Payment method",
|
||||
"Miercuri": "Wednesday",
|
||||
"Migrare la alt sistem CRM": "Migrare la alt sistem CRM",
|
||||
"Min.": "Min.",
|
||||
"Minim": "Minim",
|
||||
"Minute": "Minutes",
|
||||
"Mod": "Mode",
|
||||
"Mod stub:": "Mod stub:",
|
||||
"Mod tarifare": "Mod tarifare",
|
||||
"Mod:": "Mod:",
|
||||
"Model": "Model",
|
||||
"Model Claude": "Model Claude",
|
||||
"Model Gemini": "Model Gemini",
|
||||
@@ -884,12 +940,14 @@
|
||||
"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",
|
||||
"Neconfirmat": "Unconfirmed",
|
||||
"Neconfirmate": "Unconfirmed",
|
||||
"Necunoscut": "Unknown",
|
||||
"Neplătit": "Unpaid",
|
||||
"Nepublicat": "Unpublished",
|
||||
"Nesemnat": "Unsigned",
|
||||
"Nesincronizat": "Not synced",
|
||||
"Net 30 / Avans": "Net 30 / Avans",
|
||||
"Net:": "Net:",
|
||||
"Neverificat": "Not verified",
|
||||
"New client": "New client",
|
||||
"New mașină": "New vehicle",
|
||||
@@ -913,15 +971,18 @@
|
||||
"Nicio programare în perioada selectată.": "Nicio programare în perioada selectată.",
|
||||
"Niciodată": "Never",
|
||||
"Niciun client magazin": "Niciun client magazin",
|
||||
"Niciun client pierdut. 🎉": "Niciun client pierdut. 🎉",
|
||||
"Niciun client încă": "Niciun client încă",
|
||||
"Niciun cod cross": "Niciun cod cross",
|
||||
"Niciun coeficient": "Niciun coeficient",
|
||||
"Niciun coeficient contextual nu se aplică (preț de bază).": "Niciun coeficient contextual nu se aplică (preț de bază).",
|
||||
"Niciun depozit": "Niciun depozit",
|
||||
"Niciun istoric": "Niciun istoric",
|
||||
"Niciun lead.": "Niciun lead.",
|
||||
"Niciun lot înregistrat": "Niciun lot înregistrat",
|
||||
"Niciun mecanic activ.": "Niciun mecanic activ.",
|
||||
"Niciun mecanic implicit": "Niciun mecanic implicit",
|
||||
"Niciun mecanic nu a finalizat lucrări în această perioadă.": "Niciun mecanic nu a finalizat lucrări în această perioadă.",
|
||||
"Niciun mecanic nu a finalizat lucrări în această perioadă.": "No mechanic has completed work in this period.",
|
||||
"Niciun plan definit": "Niciun plan definit",
|
||||
"Niciun preț înregistrat": "Niciun preț înregistrat",
|
||||
"Niciun rest de încasat. 🎉": "Niciun rest de încasat. 🎉",
|
||||
@@ -930,9 +991,11 @@
|
||||
"Niciun tenant încă": "Niciun tenant încă",
|
||||
"Niciun șablon": "Niciun șablon",
|
||||
"No": "No",
|
||||
"No-show alert": "No-show alert",
|
||||
"Noiembrie": "November",
|
||||
"Norma ore": "Norm hours",
|
||||
"Normal": "Normal",
|
||||
"Norme-ore": "Labor times",
|
||||
"Norme-ore": "Labor rates",
|
||||
"Note interne": "Note interne",
|
||||
"Notificare": "Notification",
|
||||
"Notifications": "Notifications",
|
||||
@@ -953,6 +1016,7 @@
|
||||
"Nr. poliță": "Nr. poliță",
|
||||
"Nr. telefon": "Phone number",
|
||||
"Nr. înmatriculare": "License plate",
|
||||
"Nr.:": "Nr.:",
|
||||
"Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.": "Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.",
|
||||
"Nu ai cont?": "Don't have an account?",
|
||||
"Nu am găsit linii valide — verifică maparea coloanelor": "Nu am găsit linii valide — verifică maparea coloanelor",
|
||||
@@ -961,6 +1025,7 @@
|
||||
"Nu re-trimite mai des de X zile": "Nu re-trimite mai des de X zile",
|
||||
"Nu te poți șterge pe tine!": "Nu te poți șterge pe tine!",
|
||||
"Nu, renunță": "No, cancel",
|
||||
"Numar": "Number",
|
||||
"Nume": "Name",
|
||||
"Nume (RO)": "Nume (RO)",
|
||||
"Nume (RU)": "Nume (RU)",
|
||||
@@ -975,6 +1040,7 @@
|
||||
"Numele este obligatoriu": "Numele este obligatoriu",
|
||||
"Numerar": "Cash",
|
||||
"Numerar net (toate plățile - cheltuieli)": "Numerar net (toate plățile - cheltuieli)",
|
||||
"Număr": "Number",
|
||||
"Numărul de zile gratis după ce un tenant alege acest plan.": "Numărul de zile gratis după ce un tenant alege acest plan.",
|
||||
"OCR eșuat": "OCR eșuat",
|
||||
"Observații": "Notes",
|
||||
@@ -983,6 +1049,7 @@
|
||||
"Ok": "OK",
|
||||
"On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).": "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).",
|
||||
"On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).": "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).",
|
||||
"Onboarded": "Onboarded",
|
||||
"Onorat": "Onorat",
|
||||
"Onorează (scade stoc)": "Onorează (scade stoc)",
|
||||
"OpenAI API Key": "OpenAI API Key",
|
||||
@@ -1016,6 +1083,7 @@
|
||||
"PNG/SVG, max 2 MB. Apare în sidebar.": "PNG/SVG, max 2 MB. Apare în sidebar.",
|
||||
"PO": "PO",
|
||||
"POS": "POS",
|
||||
"POST /api/v1/login": "POST /api/v1/login",
|
||||
"Pagina": "Page",
|
||||
"Pagini": "Pages",
|
||||
"Panou": "Panel",
|
||||
@@ -1032,7 +1100,12 @@
|
||||
"Pasul 1: Încarcă fișierul": "Pasul 1: Încarcă fișierul",
|
||||
"Pasul 2: Mapează coloanele": "Pasul 2: Mapează coloanele",
|
||||
"Pauză": "Pause",
|
||||
"PayPal": "PayPal",
|
||||
"PayPal:": "PayPal:",
|
||||
"Payload:": "Payload:",
|
||||
"Paynet": "Paynet",
|
||||
"Pe pauză": "Paused",
|
||||
"Pe status": "Pe status",
|
||||
"Penalizări": "Penalizări",
|
||||
"Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.": "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.",
|
||||
"Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.": "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.",
|
||||
@@ -1064,6 +1137,7 @@
|
||||
"Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.": "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.",
|
||||
"Plata apare în 1-3 zile lucrătoare": "Plata apare în 1-3 zile lucrătoare",
|
||||
"Plata stabilește automat starea fișei (unpaid/partial/paid)": "Plata stabilește automat starea fișei (unpaid/partial/paid)",
|
||||
"Plate": "Plate",
|
||||
"Plată": "Payment",
|
||||
"Plată & total": "Payment & total",
|
||||
"Plată anulată": "Plată anulată",
|
||||
@@ -1098,6 +1172,7 @@
|
||||
"Preview": "Preview",
|
||||
"Preview PDF": "Preview PDF",
|
||||
"Previzualizare": "Preview",
|
||||
"Previzualizare →": "Previzualizare →",
|
||||
"Prezent": "Present",
|
||||
"Prezențe": "Attendances",
|
||||
"Prezență": "Attendance",
|
||||
@@ -1137,6 +1212,7 @@
|
||||
"Producător": "Producător",
|
||||
"Produs": "Product",
|
||||
"Produse": "Products",
|
||||
"Produsele tale": "Produsele tale",
|
||||
"Profesie": "Profesie",
|
||||
"Profil": "Profil",
|
||||
"Profile": "Profile",
|
||||
@@ -1162,6 +1238,7 @@
|
||||
"Progres etapă": "Stage progress",
|
||||
"Proprietar": "Owner",
|
||||
"Provider implicit": "Provider implicit",
|
||||
"Provider:": "Provider:",
|
||||
"Public": "Public",
|
||||
"Public (afișat la signup)": "Public (afișat la signup)",
|
||||
"Publicat": "Published",
|
||||
@@ -1187,6 +1264,8 @@
|
||||
"Rating": "Rating",
|
||||
"Rating actualizat → {$score}★": "Rating actualizat → {$score}★",
|
||||
"Reactivează": "Reactivate",
|
||||
"Read the": "Read the",
|
||||
"Real ore": "Real hours",
|
||||
"Recalculat preț pentru {$count} piese": "Recalculat preț pentru {$count} piese",
|
||||
"Recalculează": "Recalculează",
|
||||
"Recent": "Recent",
|
||||
@@ -1216,6 +1295,7 @@
|
||||
"Refuzat de client": "Rejected by client",
|
||||
"Regenerează": "Regenerate",
|
||||
"Register": "Register",
|
||||
"Regiune": "Regiune",
|
||||
"Regulă": "Rule",
|
||||
"Reia": "Resume",
|
||||
"Reminder ITP / revizie": "Reminder ITP / revizie",
|
||||
@@ -1293,6 +1373,7 @@
|
||||
"Scadență": "Due date",
|
||||
"Scanează codurile pieselor pentru a marca ca recepționate.": "Scanează codurile pieselor pentru a marca ca recepționate.",
|
||||
"Scaner cod QR / Bare": "Scaner cod QR / Bare",
|
||||
"Schimb ulei + filtru": "Schimb ulei + filtru",
|
||||
"Scoate din magazin": "Scoate din magazin",
|
||||
"Scrie mesajul tău...": "Scrie mesajul tău...",
|
||||
"Scăzut": "Low",
|
||||
@@ -1323,11 +1404,13 @@
|
||||
"Semnătură digitală": "Digital signature",
|
||||
"Senzori TPMS": "Senzori TPMS",
|
||||
"Septembrie": "September",
|
||||
"Serial": "Serial",
|
||||
"Serie": "Series",
|
||||
"Serie factură": "Invoice series",
|
||||
"Service ID": "Service ID",
|
||||
"Servicii": "Services",
|
||||
"Servicii & tarif": "Services & rate",
|
||||
"Servicii oferite": "Servicii oferite",
|
||||
"Servicii oferite (separate prin virgulă)": "Servicii oferite (separate prin virgulă)",
|
||||
"Servicii terțe": "Third-party services",
|
||||
"Sesiuni": "Sessions",
|
||||
@@ -1368,16 +1451,19 @@
|
||||
"Standard": "Standard",
|
||||
"Stare": "Stare",
|
||||
"Stare timp": "Time state",
|
||||
"Stare zi": "Day status",
|
||||
"Start": "Start",
|
||||
"Status": "Status",
|
||||
"Status dosar": "Status dosar",
|
||||
"Status implicit": "Default status",
|
||||
"Status:": "Status:",
|
||||
"Stoc": "Stock",
|
||||
"Stoc adăugat": "Stoc adăugat",
|
||||
"Stoc minim": "Stoc minim",
|
||||
"Stoc minim atins": "Minimum stock reached",
|
||||
"Stoc piese (la preț achiziție)": "Stoc piese (la preț achiziție)",
|
||||
"Storage (MB)": "Storage (MB)",
|
||||
"Storage media": "Storage media",
|
||||
"Stripe: înregistrează cont la": "Stripe: înregistrează cont la",
|
||||
"Sub minim": "Below minimum",
|
||||
"Subcontractare": "Subcontracting",
|
||||
@@ -1386,8 +1472,11 @@
|
||||
"Subdomeniul: <slug>.service.mir.md": "Subdomeniul: <slug>.service.mir.md",
|
||||
"Subiect": "Subject",
|
||||
"Subiect (email)": "Subiect (email)",
|
||||
"Subiect *": "Subiect *",
|
||||
"Subiect și data sunt obligatorii": "Subiect și data sunt obligatorii",
|
||||
"Subtotal": "Subtotal",
|
||||
"Subtotal manopere:": "Subtotal manopere:",
|
||||
"Subtotal piese:": "Subtotal piese:",
|
||||
"Succes": "Success",
|
||||
"Sugerează revizie / piese de uzură.": "Sugerează revizie / piese de uzură.",
|
||||
"Sumă": "Amount",
|
||||
@@ -1431,6 +1520,7 @@
|
||||
"Telefon alternativ": "Telefon alternativ",
|
||||
"Telefon principal": "Telefon principal",
|
||||
"Telefon sau parolă incorecte.": "Telefon sau parolă incorecte.",
|
||||
"Telefon:": "Telefon:",
|
||||
"Telefonie": "Calls",
|
||||
"Telegram bot": "Telegram bot",
|
||||
"Telegram chat ID": "Telegram chat ID",
|
||||
@@ -1454,6 +1544,7 @@
|
||||
"Terț": "Terț",
|
||||
"Test notificare push": "Test notificare push",
|
||||
"Testează bot Telegram": "Testează bot Telegram",
|
||||
"Theme color": "Theme color",
|
||||
"Timp lucrat": "Time worked",
|
||||
"Timp mediu": "Avg time",
|
||||
"Timp total": "Total time",
|
||||
@@ -1486,6 +1577,8 @@
|
||||
"Token generat!": "Token generat!",
|
||||
"Token public": "Token public",
|
||||
"Token revocat": "Token revocat",
|
||||
"Tokens consumate luna aceasta:": "Tokens consumate luna aceasta:",
|
||||
"Tokens:": "Tokens:",
|
||||
"Top piese vândute": "Top piese vândute",
|
||||
"Tot apelul trebuie făcut pe subdomain-ul tău:": "Tot apelul trebuie făcut pe subdomain-ul tău:",
|
||||
"Total": "Total",
|
||||
@@ -1514,6 +1607,7 @@
|
||||
"Transfer bancar": "Bank transfer",
|
||||
"Transfer bancar: pune doar IBAN-ul tău, fără cont gateway": "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway",
|
||||
"Transport": "Transport",
|
||||
"Tranz.": "Tranz.",
|
||||
"Trial expiră la": "Trial expiră la",
|
||||
"Trimis": "Sent",
|
||||
"Trimis · fără răspuns": "Sent · no response",
|
||||
@@ -1538,8 +1632,10 @@
|
||||
"Ultim login": "Last login",
|
||||
"Ultima actualizare": "Last updated",
|
||||
"Ultima autentificare": "Last login",
|
||||
"Ultima logare": "Ultima logare",
|
||||
"Ultima modificare": "Last modified",
|
||||
"Ultima sincronizare": "Last synced",
|
||||
"Ultimul cod citit:": "Ultimul cod citit:",
|
||||
"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",
|
||||
@@ -1561,6 +1657,8 @@
|
||||
"VIN căutare & piese": "VIN căutare & piese",
|
||||
"VIN trebuie să aibă cel puțin 11 caractere.": "VIN trebuie să aibă cel puțin 11 caractere.",
|
||||
"VIN-căutare": "VIN search",
|
||||
"VIN:": "VIN:",
|
||||
"VW Passat 2018": "VW Passat 2018",
|
||||
"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",
|
||||
@@ -1576,7 +1674,7 @@
|
||||
"Venit generat": "Venit generat",
|
||||
"Venit luna curentă": "Current month revenue",
|
||||
"Venit luna trecută": "Venit luna trecută",
|
||||
"Venit manopere": "Venit manopere",
|
||||
"Venit manopere": "Labor revenue",
|
||||
"Venituri": "Revenues",
|
||||
"Verificare": "Verification",
|
||||
"Verificat": "Verified",
|
||||
@@ -1587,6 +1685,7 @@
|
||||
"Vezi tot": "View all",
|
||||
"Viitoare": "Viitoare",
|
||||
"Vineri": "Friday",
|
||||
"Visa, Mastercard prin Stripe": "Visa, Mastercard prin Stripe",
|
||||
"Vizibil": "Visible",
|
||||
"Vizual": "Visual",
|
||||
"Vizualizează": "View",
|
||||
@@ -1600,6 +1699,9 @@
|
||||
"Vă mulțumim pentru încredere!": "Vă mulțumim pentru încredere!",
|
||||
"Vă mulțumim!": "Vă mulțumim!",
|
||||
"Văzut": "Seen",
|
||||
"WBAFE81070CY34521": "WBAFE81070CY34521",
|
||||
"Watch video tutorials at": "Watch video tutorials at",
|
||||
"We suggest starting with the following.": "We suggest starting with the following.",
|
||||
"Web Push neconfigurat": "Web Push neconfigurat",
|
||||
"Webhook": "Webhook",
|
||||
"Webhook (Notify URL)": "Webhook (Notify URL)",
|
||||
@@ -1615,6 +1717,7 @@
|
||||
"Yes": "Yes",
|
||||
"ZIP": "ZIP",
|
||||
"ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.": "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.",
|
||||
"Zi": "Zi",
|
||||
"Zile": "Days",
|
||||
"Zile libere": "Days off",
|
||||
"Zile livrare": "Zile livrare",
|
||||
@@ -1622,64 +1725,93 @@
|
||||
"Zonă": "Zonă",
|
||||
"Zoom in": "Zoom in",
|
||||
"Zoom out": "Zoom out",
|
||||
"a expirat.": "a expirat.",
|
||||
"a fost suspendat.": "a fost suspendat.",
|
||||
"aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via": "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via",
|
||||
"achiziție": "achiziție",
|
||||
"achiziții": "achiziții",
|
||||
"achiziție": "purchase",
|
||||
"achiziții": "purchases",
|
||||
"active": "active",
|
||||
"actualizat": "updated",
|
||||
"ajustare": "ajustare",
|
||||
"angajat": "employee",
|
||||
"angajați": "angajați",
|
||||
"apasă": "click",
|
||||
"apel": "call",
|
||||
"apeluri": "calls",
|
||||
"asistent gândește...": "asistent gândește...",
|
||||
"auto-generat": "auto-generat",
|
||||
"bonusuri/avansuri": "bonusuri/avansuri",
|
||||
"call": "Call",
|
||||
"canal": "channel",
|
||||
"canale marketing": "canale marketing",
|
||||
"cerere": "lead",
|
||||
"cereri": "leads",
|
||||
"cheltuială": "cheltuială",
|
||||
"cheltuieli": "cheltuieli",
|
||||
"client": "client",
|
||||
"client magazin": "client magazin",
|
||||
"client magazin": "shop customer",
|
||||
"clienți": "clients",
|
||||
"clienți magazin": "clienți magazin",
|
||||
"clienți magazin": "shop customers",
|
||||
"clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.": "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.",
|
||||
"coeficient": "coefficient",
|
||||
"coeficienți preț": "coeficienți preț",
|
||||
"coeficienți preț": "pricing coefficients",
|
||||
"comandă": "comandă",
|
||||
"comenzi online": "comenzi online",
|
||||
"deal-uri": "deal-uri",
|
||||
"companie": "companie",
|
||||
"companii": "companii",
|
||||
"dashboard.stripe.com": "dashboard.stripe.com",
|
||||
"deal": "deal",
|
||||
"deal-uri": "deals",
|
||||
"deals": "deals",
|
||||
"depozit": "warehouse",
|
||||
"depozite": "warehouses",
|
||||
"developer.paypal.com": "developer.paypal.com",
|
||||
"eveniment": "event",
|
||||
"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: WVWZZZ1JZXW000001": "ex: WVWZZZ1JZXW000001",
|
||||
"ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp",
|
||||
"facebook": "Facebook",
|
||||
"facturi": "facturi",
|
||||
"factură": "factură",
|
||||
"finalizat": "completed",
|
||||
"fișa de lucru completă": "fișa de lucru completă",
|
||||
"fișe lucru": "fișe lucru",
|
||||
"fișă": "fișă",
|
||||
"fișe lucru": "work orders",
|
||||
"fișă": "work order",
|
||||
"furnizor": "supplier",
|
||||
"furnizori": "suppliers",
|
||||
"fără client": "no client",
|
||||
"google": "Google",
|
||||
"h norm": "h norm",
|
||||
"h real": "h real",
|
||||
"instagram": "Instagram",
|
||||
"jurnal": "log",
|
||||
"la fiecare request": "la fiecare request",
|
||||
"liber/ușor": "liber/ușor",
|
||||
"linii neîncasate.": "linii neîncasate.",
|
||||
"lucrare caroserie": "lucrare caroserie",
|
||||
"lucrare terți": "lucrare terți",
|
||||
"lucrări caroserie": "lucrări caroserie",
|
||||
"lucrări terți": "lucrări terți",
|
||||
"lucrare caroserie": "bodyshop job",
|
||||
"lucrare terți": "subcontract job",
|
||||
"lucrări caroserie": "bodyshop jobs",
|
||||
"lucrări terți": "subcontract jobs",
|
||||
"mașini": "vehicles",
|
||||
"mașină": "vehicle",
|
||||
"mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).",
|
||||
"new": "new",
|
||||
"niciodată": "niciodată",
|
||||
"norme-ore": "norme-ore",
|
||||
"normă": "normă",
|
||||
"norme": "labors",
|
||||
"norme-ore": "labor rates",
|
||||
"normă": "labor",
|
||||
"null = fără trial": "null = fără trial",
|
||||
"pentru a alege": "to select",
|
||||
"piese": "piese",
|
||||
"piesă": "piesă",
|
||||
"pk_test_...": "pk_test_...",
|
||||
"plan": "plan",
|
||||
"planuri": "planuri",
|
||||
"plată": "plată",
|
||||
"plăți": "plăți",
|
||||
"pod": "bay",
|
||||
"portal.common.currency_mdl": "portal.common.currency_mdl",
|
||||
"portal.common.email": "portal.common.email",
|
||||
"portal.common.name": "portal.common.name",
|
||||
@@ -1794,22 +1926,34 @@
|
||||
"portal.tracking.unit_pcs": "portal.tracking.unit_pcs",
|
||||
"portal.tracking.what_asked": "portal.tracking.what_asked",
|
||||
"posturi de lucru": "posturi de lucru",
|
||||
"programări": "programări",
|
||||
"programare": "appointment",
|
||||
"programări": "appointments",
|
||||
"programări active": "programări active",
|
||||
"programări neconfirmate < 24h": "programări neconfirmate < 24h",
|
||||
"referral": "Referral",
|
||||
"reguli markup": "reguli markup",
|
||||
"regulă": "regulă",
|
||||
"rol": "role",
|
||||
"roluri": "roles",
|
||||
"salarii": "salaries",
|
||||
"salariu": "salary",
|
||||
"sau": "or",
|
||||
"set anvelope": "set anvelope",
|
||||
"seturi anvelope": "seturi anvelope",
|
||||
"set anvelope": "tire set",
|
||||
"seturi anvelope": "tire sets",
|
||||
"site": "Website",
|
||||
"subcontractor": "subcontractor",
|
||||
"subcontractori": "subcontractori",
|
||||
"subcontractori": "subcontractors",
|
||||
"tehnician": "technician",
|
||||
"tehnicieni": "technicians",
|
||||
"telegram": "Telegram",
|
||||
"template-uri": "template-uri",
|
||||
"template": "template",
|
||||
"template-uri": "templates",
|
||||
"ultima fișă": "ultima fișă",
|
||||
"utilizator": "user",
|
||||
"utilizatori": "users",
|
||||
"ușor": "ușor",
|
||||
"vehicul": "vehicle",
|
||||
"vehicule": "vehicles",
|
||||
"vip": "vip",
|
||||
"walk_in": "Walk-in",
|
||||
"whatsapp": "WhatsApp",
|
||||
@@ -1859,38 +2003,51 @@
|
||||
"Șters": "Deleted",
|
||||
"Șters de": "Deleted by",
|
||||
"Șters la": "Deleted at",
|
||||
"șabloane servicii": "șabloane servicii",
|
||||
"șablon": "șablon",
|
||||
"șabloane servicii": "service templates",
|
||||
"șablon": "template",
|
||||
"șters": "șters",
|
||||
"Țară": "Țară",
|
||||
"Ține-mă minte": "Remember me",
|
||||
"— (multe VIN-uri europene nu respectă checksum-ul NA)": "— (multe VIN-uri europene nu respectă checksum-ul NA)",
|
||||
"— alege —": "— alege —",
|
||||
"— fără pod —": "— fără pod —",
|
||||
"— niciunul —": "— niciunul —",
|
||||
"ℹ️": "ℹ️",
|
||||
"← Săpt. anterioară": "← Săpt. anterioară",
|
||||
"← Înapoi": "← Înapoi",
|
||||
"← Înapoi la AutoCRM": "← Înapoi la AutoCRM",
|
||||
"← Înapoi la facturi": "← Înapoi la facturi",
|
||||
"→ Mergi la AutoCRM": "→ Mergi la AutoCRM",
|
||||
"→ creează aplicație live → ia credentials": "→ creează aplicație live → ia credentials",
|
||||
"→ ia keys → setează webhook la URL-ul de mai sus": "→ ia keys → setează webhook la URL-ul de mai sus",
|
||||
"↗ Deschide Purchase": "↗ Deschide Purchase",
|
||||
"↗ Deschide comanda în Filament": "↗ Deschide comanda în Filament",
|
||||
"↗ Editare": "↗ Editare",
|
||||
"≥9h/10": "≥9h/10",
|
||||
"⏰ Abonament expirat": "⏰ Abonament expirat",
|
||||
"⏹ Oprește": "⏹ Oprește",
|
||||
"◀ Luna precedentă": "◀ Luna precedentă",
|
||||
"◀ Luna precedentă": "◀ Previous month",
|
||||
"⚖️ Balanță": "⚖️ Balanță",
|
||||
"⚙ Configurare tenant": "⚙ Configurare tenant",
|
||||
"⚙ Cum funcționează:": "⚙ Cum funcționează:",
|
||||
"⚠ Acțiune necesară": "⚠ Action needed",
|
||||
"⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.": "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.",
|
||||
"⚠ Fără plan": "⚠ Fără plan",
|
||||
"⚠ Pentru a primi plăți LIVE:": "⚠ Pentru a primi plăți LIVE:",
|
||||
"⚠ Posibil churn": "⚠ Posibil churn",
|
||||
"⚠ Recomandări": "⚠ Recomandări",
|
||||
"⚠ Recomandări:": "⚠ Recomandări:",
|
||||
"⚠ Token-ul tău nou (afișat o singură dată):": "⚠ Token-ul tău nou (afișat o singură dată):",
|
||||
"⚠️ Lipsește cheia Claude în Setări → AI.": "⚠️ Lipsește cheia Claude în Setări → AI.",
|
||||
"⚠️ Stoc minim atins": "⚠️ Stoc minim atins",
|
||||
"⛔ Cont suspendat": "⛔ Cont suspendat",
|
||||
"✅ Mașina dvs. este gata!": "✅ Mașina dvs. este gata!",
|
||||
"✅ VIN decodificat": "✅ VIN decodificat",
|
||||
"✏ Editează pod": "✏ Editează pod",
|
||||
"✓ Achitat": "✓ Paid",
|
||||
"✓ Copiat": "✓ Copiat",
|
||||
"✓ Pe abonament plătit": "✓ On paid subscription",
|
||||
"✓ valid": "✓ valid",
|
||||
"⬇ Descarcă backup acum": "⬇ Descarcă backup acum",
|
||||
"⭐ VIP fără contact recent": "⭐ VIP fără contact recent",
|
||||
"🅿️ PayPal": "🅿️ PayPal",
|
||||
@@ -1900,14 +2057,17 @@
|
||||
"🎉 Toate facturile sunt plătite": "🎉 Toate facturile sunt plătite",
|
||||
"🏦 Instrucțiuni transfer bancar": "🏦 Instrucțiuni transfer bancar",
|
||||
"🏦 Transfer bancar (manual)": "🏦 Transfer bancar (manual)",
|
||||
"👋 Bun venit!": "👋 Bun venit!",
|
||||
"👥 Clienți": "👥 Clienți",
|
||||
"💰 Finanțe": "💰 Finanțe",
|
||||
"💰 Fișe neplătite": "💰 Fișe neplătite",
|
||||
"💳 Istoric abonamente": "💳 Istoric abonamente",
|
||||
"💳 Plată confirmată": "💳 Plată confirmată",
|
||||
"💳 Plătește": "💳 Plătește",
|
||||
"💳 Stripe": "💳 Stripe",
|
||||
"💾 Salvează setările": "💾 Salvează setările",
|
||||
"📅 Programare confirmată": "📅 Programare confirmată",
|
||||
"📊 Activitate live": "📊 Activitate live",
|
||||
"📊 Încărcare": "📊 Încărcare",
|
||||
"📋 Copiază": "📋 Copiază",
|
||||
"📍 Locație & contact": "📍 Locație & contact",
|
||||
@@ -1915,11 +2075,14 @@
|
||||
"📦 Caută piesă în catalog": "📦 Caută piesă în catalog",
|
||||
"📦 Export complet date tenant": "📦 Export complet date tenant",
|
||||
"📷 Pornește scanner": "📷 Pornește scanner",
|
||||
"🔎 Decode VIN": "🔎 Decode VIN",
|
||||
"🕒 Program de lucru": "🕒 Program de lucru",
|
||||
"🖨 PDF programări": "🖨 PDF programări",
|
||||
"🖨 Tipărește": "🖨 Tipărește",
|
||||
"🗑 Șterge": "🗑 Șterge",
|
||||
"😴 Clienți pierduți": "😴 Clienți pierduți",
|
||||
"🚗 Mașini cu acest VIN în CRM": "🚗 Mașini cu acest VIN în CRM",
|
||||
"🚗 Mașini cu kilometraj mare": "🚗 Mașini cu kilometraj mare",
|
||||
"🚗 Mărci suportate": "🚗 Mărci suportate"
|
||||
"🚗 Mărci suportate": "🚗 Mărci suportate",
|
||||
"🛒 Magazin piese online": "🛒 Magazin piese online"
|
||||
}
|
||||
+194
-31
@@ -9,11 +9,17 @@
|
||||
"% marja piese": "% marja piese",
|
||||
"% marjă implicit": "% маржи по умолчанию",
|
||||
"% piese": "% piese",
|
||||
"(GET, POST, PATCH, DELETE)": "(GET, POST, PATCH, DELETE)",
|
||||
"(PDF).": "(PDF).",
|
||||
"+ Conversație nouă": "+ Новый чат",
|
||||
"+ Pod / spațiu nou": "+ Новый пост / место",
|
||||
"+ Pod nou": "+ Pod nou",
|
||||
"+ Programare nouă": "+ Новая запись",
|
||||
"+1 {$item->article} — {$item->qty_received}/{$item->qty}": "+1 {$item->article} — {$item->qty_received}/{$item->qty}",
|
||||
". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.": ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.",
|
||||
"/api/v1/clients": "/api/v1/clients",
|
||||
"/api/v1/vehicles": "/api/v1/vehicles",
|
||||
"/api/v1/work-orders": "/api/v1/work-orders",
|
||||
"0 = dezactivat": "0 = dezactivat",
|
||||
"1.15 = +15% peste prețul de bază. 0.95 = -5%.": "1.15 = +15% peste prețul de bază. 0.95 = -5%.",
|
||||
"123456:ABC-XYZ...": "123456:ABC-XYZ...",
|
||||
@@ -32,6 +38,7 @@
|
||||
"AYS...": "AYS...",
|
||||
"Abonament": "Подписка",
|
||||
"Abonament până la": "Подписка до",
|
||||
"Abonamentul pentru": "Abonamentul pentru",
|
||||
"Abonamentul se extinde automat": "Подписка продлевается автоматически",
|
||||
"Abonamentul tău a fost extins.": "Ваша подписка продлена.",
|
||||
"Abonat": "Подписан",
|
||||
@@ -135,6 +142,7 @@
|
||||
"Alte": "Прочее",
|
||||
"Alte cheltuieli": "Прочие расходы",
|
||||
"Altă problemă": "Другая проблема",
|
||||
"Am salvat token-ul, ascunde-l": "Am salvat token-ul, ascunde-l",
|
||||
"An": "Год",
|
||||
"An fabricație": "Год выпуска",
|
||||
"An model": "Модельный год",
|
||||
@@ -173,6 +181,7 @@
|
||||
"Arhivat": "В архиве",
|
||||
"Arhivează": "В архив",
|
||||
"Arhivă": "Архив",
|
||||
"Articol": "Articol",
|
||||
"Articol nu se potrivește comenzii": "Articol nu se potrivește comenzii",
|
||||
"Articole": "Articole",
|
||||
"Ascunde": "Скрыть",
|
||||
@@ -185,7 +194,7 @@
|
||||
"Astăzi": "Сегодня",
|
||||
"Atașamente": "Вложения",
|
||||
"Atașat veți găsi": "Во вложении",
|
||||
"Atelierul meu": "Atelierul meu",
|
||||
"Atelierul meu": "Моя мастерская",
|
||||
"Atenție": "Внимание",
|
||||
"Audit / verificări fiscale": "Audit / verificări fiscale",
|
||||
"August": "Август",
|
||||
@@ -194,6 +203,7 @@
|
||||
"Auto": "Авто",
|
||||
"Auto / model": "Авто / модель",
|
||||
"Auto-import Excel/CSV": "Auto-import Excel/CSV",
|
||||
"AutoCRM PSauto · psauto.service.mir.md": "AutoCRM PSauto · psauto.service.mir.md",
|
||||
"AutoCRM SRL": "AutoCRM SRL",
|
||||
"Automată": "Автоматическая",
|
||||
"Automobile": "Автомобили",
|
||||
@@ -206,14 +216,17 @@
|
||||
"Aștept aprobare client": "Ожидание одобрения клиента",
|
||||
"Așteptată": "Ожидается",
|
||||
"BIC / SWIFT": "BIC / SWIFT",
|
||||
"BIC / SWIFT:": "BIC / SWIFT:",
|
||||
"Backup": "Бэкап",
|
||||
"Backup & Export date": "Backup & Export date",
|
||||
"Backup periodic (descarcă local sau sincronizează cu cloud)": "Backup periodic (descarcă local sau sincronizează cu cloud)",
|
||||
"Balance": "Баланс",
|
||||
"Balanță": "Баланс",
|
||||
"Banca": "Banca",
|
||||
"Banca:": "Banca:",
|
||||
"Bază": "База",
|
||||
"Beneficiar": "Beneficiar",
|
||||
"Beneficiar:": "Beneficiar:",
|
||||
"Benzină": "Бензин",
|
||||
"Berlină": "Седан",
|
||||
"Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.",
|
||||
@@ -250,7 +263,7 @@
|
||||
"Calculație": "Расчёт",
|
||||
"Calculează luna curentă": "Calculează luna curentă",
|
||||
"Calendar": "Календарь",
|
||||
"Calendar vizual": "Calendar vizual",
|
||||
"Calendar vizual": "Визуальный календарь",
|
||||
"Canal marketing": "Canal marketing",
|
||||
"Cancel": "Отмена",
|
||||
"Cant.": "Кол-во",
|
||||
@@ -259,6 +272,7 @@
|
||||
"Cantitate restituită": "Cantitate restituită",
|
||||
"Capacitate motor": "Объём двигателя",
|
||||
"Capacitatea zilnică în ore": "Capacitatea zilnică în ore",
|
||||
"Card MAIB / MICB / Victoriabank, MD Cash, e-money": "Card MAIB / MICB / Victoriabank, MD Cash, e-money",
|
||||
"Card bancar": "Банковская карта",
|
||||
"Caroserie": "Кузов",
|
||||
"Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Cashflow zilnic — verde = încasări, roșu = cheltuieli",
|
||||
@@ -279,11 +293,13 @@
|
||||
"Cereri": "Заявки",
|
||||
"Cereri noi": "Новые заявки",
|
||||
"Check-in depozit": "Check-in depozit",
|
||||
"Checksum (ISO)": "Checksum (ISO)",
|
||||
"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)": "Расходы (месяц)",
|
||||
"Cheltuieli pe categorie": "Cheltuieli pe categorie",
|
||||
"Cheltuit": "Потрачено",
|
||||
"Cheltuit 90d": "Cheltuit 90d",
|
||||
"Chirie": "Аренда",
|
||||
@@ -294,6 +310,7 @@
|
||||
"Clase auto": "Классы авто",
|
||||
"Clasă (pentru pricing)": "Clasă (pentru pricing)",
|
||||
"Claude API Key": "Claude API Key",
|
||||
"Click pentru a redenumi": "Click pentru a redenumi",
|
||||
"Client": "Клиент",
|
||||
"Client & Auto": "Client & Auto",
|
||||
"Client (nume, semnătură):": "Client (nume, semnătură):",
|
||||
@@ -321,10 +338,14 @@
|
||||
"Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)",
|
||||
"Coeficient": "Coeficient",
|
||||
"Coeficienți preț": "Ценовые коэффициенты",
|
||||
"Coloana Articol *": "Coloana Articol *",
|
||||
"Coloana Brand (opțional)": "Coloana Brand (opțional)",
|
||||
"Coloana Cantitate *": "Coloana Cantitate *",
|
||||
"Coloana Denumire *": "Coloana Denumire *",
|
||||
"Coloana Preț *": "Coloana Preț *",
|
||||
"Coloane": "Колонки",
|
||||
"Coloană": "Колонка",
|
||||
"Comanda": "Comanda",
|
||||
"Comanda ta a fost primită cu succes.": "Comanda ta a fost primită cu succes.",
|
||||
"Comandat": "Comandat",
|
||||
"Comandată": "Comandată",
|
||||
@@ -342,11 +363,13 @@
|
||||
"Complet": "Полностью",
|
||||
"Concediu": "Отпуск",
|
||||
"Condiții (toate trebuie îndeplinite)": "Condiții (toate trebuie îndeplinite)",
|
||||
"Configurare:": "Configurare:",
|
||||
"Configurează procentele pentru calcul salariu. Marja internă (nu TVA) se scade din prețul de manoperă pentru a determina baza salariului.": "Configurează procentele pentru calcul salariu. Marja internă (nu TVA) se scade din prețul de manoperă pentru a determina baza salariului.",
|
||||
"Configurări": "Конфигурация",
|
||||
"Configurări avansate": "Расширенная конфигурация",
|
||||
"Confirmare plată primită": "Confirmare plată primită",
|
||||
"Confirmat": "Подтверждено",
|
||||
"Confirmate": "Подтверждено",
|
||||
"Confirmă": "Подтвердить",
|
||||
"Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.": "Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.",
|
||||
"Confirmă emailul": "Подтвердите email",
|
||||
@@ -356,6 +379,7 @@
|
||||
"Conformitate GDPR (la cererea ștergerii datelor)": "Conformitate GDPR (la cererea ștergerii datelor)",
|
||||
"Consum": "Расход",
|
||||
"Consumabile": "Расходники",
|
||||
"Cont PayPal sau card prin PayPal": "Cont PayPal sau card prin PayPal",
|
||||
"Contabil": "Бухгалтер",
|
||||
"Contact": "Контакт",
|
||||
"Contactare": "Связь",
|
||||
@@ -364,6 +388,7 @@
|
||||
"Contactează": "Связаться",
|
||||
"Continuă": "Продолжить",
|
||||
"Continuă →": "Continuă →",
|
||||
"Contul": "Contul",
|
||||
"Conversație nouă": "Conversație nouă",
|
||||
"Convertește": "Convertește",
|
||||
"Convertit": "Конвертирован",
|
||||
@@ -408,6 +433,7 @@
|
||||
"Cumulabil": "Cumulabil",
|
||||
"Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.": "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.",
|
||||
"Curăță": "Очистить",
|
||||
"Custom": "Свой",
|
||||
"Cutie": "Коробка",
|
||||
"Cutie de viteze": "Коробка передач",
|
||||
"Cutie viteze": "КПП",
|
||||
@@ -453,6 +479,7 @@
|
||||
"De la data": "С даты",
|
||||
"De la ora": "С",
|
||||
"De la rândul (sărim header) *": "De la rândul (sărim header) *",
|
||||
"De la:": "De la:",
|
||||
"De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).",
|
||||
"De procesat": "К обработке",
|
||||
"Deal": "Сделка",
|
||||
@@ -471,6 +498,7 @@
|
||||
"Denumire afișată": "Отображаемое название",
|
||||
"Denumire companie": "Название компании",
|
||||
"Denumire produs": "Название товара",
|
||||
"Deploy now": "Deploy now",
|
||||
"Depozit": "Склад",
|
||||
"Depozit gol": "Depozit gol",
|
||||
"Depozit implicit": "Склад по умолчанию",
|
||||
@@ -525,6 +553,7 @@
|
||||
"Doar tu ești aici": "Doar tu ești aici",
|
||||
"Doar utilizatorii mei": "Только мои пользователи",
|
||||
"Document": "Документ",
|
||||
"Documentation": "Documentation",
|
||||
"Documente": "Документы",
|
||||
"Done": "Готово",
|
||||
"Downgrade": "Понижение",
|
||||
@@ -549,25 +578,29 @@
|
||||
"Editează": "Изменить",
|
||||
"Editează drepturi": "Editează drepturi",
|
||||
"Editează produs": "Изменить товар",
|
||||
"Eficiență": "Eficiență",
|
||||
"Eficiență": "Эффективность",
|
||||
"Electric": "Электро",
|
||||
"Electrică": "Электрика",
|
||||
"Eliberat: {$n} rezervări consumate": "Eliberat: {$n} rezervări consumate",
|
||||
"Eliberează": "Выдать",
|
||||
"Email": "Email",
|
||||
"Email admin": "Email admin",
|
||||
"Email:": "Email:",
|
||||
"Empty": "Нет результатов",
|
||||
"Endpoint webhook: https://service.mir.md/payments/stripe/webhook": "Endpoint webhook: https://service.mir.md/payments/stripe/webhook",
|
||||
"Endpoints disponibile:": "Endpoints disponibile:",
|
||||
"Eroare": "Ошибка",
|
||||
"Eroare la recepție": "Eroare la recepție",
|
||||
"Etape": "Этапы",
|
||||
"Etapă": "Этап",
|
||||
"Etichete piese": "Etichete piese",
|
||||
"Etichetă": "Etichetă",
|
||||
"Ex 30 → preț vânzare = preț achiziție × 1.30": "Ex 30 → preț vânzare = preț achiziție × 1.30",
|
||||
"Ex: 100": "Ex: 100",
|
||||
"Ex: 20": "Ex: 20",
|
||||
"Ex: 20 pentru +20%": "Ex: 20 pentru +20%",
|
||||
"Ex: 25": "Ex: 25",
|
||||
"Ex: Curte 1, Pod 4, Atelier electric": "Ex: Curte 1, Pod 4, Atelier electric",
|
||||
"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ă...",
|
||||
@@ -588,6 +621,7 @@
|
||||
"Ești sigur?": "Ты уверен?",
|
||||
"FIȘĂ DE LUCRU": "FIȘĂ DE LUCRU",
|
||||
"Facturi": "Счета",
|
||||
"Facturi & abonament": "Facturi & abonament",
|
||||
"Facturi neplătite": "Неоплаченные счета",
|
||||
"Facturi pending / overdue": "Facturi pending / overdue",
|
||||
"Factură": "Счёт",
|
||||
@@ -603,6 +637,7 @@
|
||||
"Filters": "Фильтры",
|
||||
"Filtre": "Фильтры",
|
||||
"Filtru": "Фильтр",
|
||||
"Filtru:": "Filtru:",
|
||||
"Finalizat": "Завершено",
|
||||
"Financiar": "Financiar",
|
||||
"Finanțe": "Finanțe",
|
||||
@@ -624,6 +659,7 @@
|
||||
"Folosit ultima dată": "Folosit ultima dată",
|
||||
"Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.": "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.",
|
||||
"Force logout": "Выйти со всех устройств",
|
||||
"Format:": "Format:",
|
||||
"Foto": "Фото",
|
||||
"Foto factură": "Foto factură",
|
||||
"Foto piesă": "Foto piesă",
|
||||
@@ -661,10 +697,12 @@
|
||||
"Generează factură": "Generează factură",
|
||||
"Generează raport": "Сгенерировать отчёт",
|
||||
"Generează token": "Generează token",
|
||||
"Generez ZIP...": "Generez ZIP...",
|
||||
"Global": "Глобально",
|
||||
"Gol — trage un card aici": "Пусто — перетащите карточку сюда",
|
||||
"Grafic": "График",
|
||||
"Gravitate": "Gravitate",
|
||||
"Grupare:": "Grupare:",
|
||||
"Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet",
|
||||
"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.",
|
||||
"Găsite (cu articol existent)": "Găsite (cu articol existent)",
|
||||
@@ -672,6 +710,7 @@
|
||||
"Hatchback": "Хэтчбек",
|
||||
"Hibrid": "Гибрид",
|
||||
"IBAN": "IBAN",
|
||||
"IBAN:": "IBAN:",
|
||||
"ID": "ID",
|
||||
"IDNO / CUI": "IDNO / CUI",
|
||||
"Ianuarie": "Январь",
|
||||
@@ -718,6 +757,7 @@
|
||||
"Inventar": "Инвентаризация",
|
||||
"Invitație": "Приглашение",
|
||||
"Invitații": "Приглашения",
|
||||
"Ion Popescu": "Ion Popescu",
|
||||
"Istoric depozitare": "Istoric depozitare",
|
||||
"Istoric prețuri furnizori": "Istoric prețuri furnizori",
|
||||
"Iulie": "Июль",
|
||||
@@ -725,7 +765,7 @@
|
||||
"JSON": "JSON",
|
||||
"Joi": "Четверг",
|
||||
"Jurnal": "Журнал",
|
||||
"KPI mecanici": "KPI mecanici",
|
||||
"KPI mecanici": "KPI механиков",
|
||||
"Kanban": "Канбан",
|
||||
"Kilometraj": "Kilometraj",
|
||||
"Km": "км",
|
||||
@@ -733,11 +773,15 @@
|
||||
"Km ieșire": "Пробег выход",
|
||||
"Km intrare": "Пробег вход",
|
||||
"Km la ieșire:": "Km la ieșire:",
|
||||
"Km la intrare:": "Km la intrare:",
|
||||
"Km parcurși": "Пробег",
|
||||
"La editare lasă gol pentru a păstra parola actuală.": "La editare lasă gol pentru a păstra parola actuală.",
|
||||
"La revedere": "До свидания",
|
||||
"La succes: webhook → automat status=paid + extends company.active_until": "La succes: webhook → automat status=paid + extends company.active_until",
|
||||
"La timp 90d": "La timp 90d",
|
||||
"La trecere pe „Montată\" se scade automat din stoc.": "La trecere pe „Montată\" se scade automat din stoc.",
|
||||
"Laracasts": "Laracasts",
|
||||
"Laravel has an incredibly rich ecosystem.": "Laravel has an incredibly rich ecosystem.",
|
||||
"Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.": "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.",
|
||||
"Lead-uri": "Lead-uri",
|
||||
"Lead-uri pe sursă": "Lead-uri pe sursă",
|
||||
@@ -749,6 +793,7 @@
|
||||
"Limite": "Limite",
|
||||
"Linia nu mai necesită aprobare.": "Linia nu mai necesită aprobare.",
|
||||
"Linii": "Linii",
|
||||
"Link": "Link",
|
||||
"Link client (QR)": "Link client (QR)",
|
||||
"Link tracking": "Ссылка отслеживания",
|
||||
"Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.": "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.",
|
||||
@@ -769,6 +814,7 @@
|
||||
"Locație": "Локация",
|
||||
"Locație (raft)": "Locație (raft)",
|
||||
"Locație rack/bin": "Locație rack/bin",
|
||||
"Log in": "Log in",
|
||||
"Login": "Вход",
|
||||
"Logo": "Logo",
|
||||
"Logo & favicon": "Logo & favicon",
|
||||
@@ -779,16 +825,17 @@
|
||||
"Loturi (FIFO)": "Loturi (FIFO)",
|
||||
"Lucrare": "Lucrare",
|
||||
"Lucrare blocată": "Работа заблокирована",
|
||||
"Lucrări": "Lucrări",
|
||||
"Lucrări": "Работы",
|
||||
"Lucrări la terți": "Lucrări la terți",
|
||||
"Lucrări terți": "Работы у третьих лиц",
|
||||
"Luna aceasta": "В этом месяце",
|
||||
"Luna curentă": "Текущий месяц",
|
||||
"Luna trecută": "Прошлый месяц",
|
||||
"Luna următoare ▶": "Luna următoare ▶",
|
||||
"Luna următoare ▶": "Следующий месяц ▶",
|
||||
"Lunar": "Lunar",
|
||||
"Luni": "Месяцы",
|
||||
"Luni (zi)": "Понедельник",
|
||||
"Luni – Vineri: 08:00 – 18:00": "Luni – Vineri: 08:00 – 18:00",
|
||||
"Lună": "Lună",
|
||||
"Lățime": "Lățime",
|
||||
"MB folosiți": "MB folosiți",
|
||||
@@ -809,6 +856,8 @@
|
||||
"Manoperă": "Работа",
|
||||
"Manuală": "Ручная",
|
||||
"Marca": "Marca",
|
||||
"Marca/Model": "Marca/Model",
|
||||
"Marca/Model:": "Marca/Model:",
|
||||
"Marchează Gata": "Отметить готово",
|
||||
"Marchează acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).",
|
||||
"Marchează anulat": "Отметить как отменено",
|
||||
@@ -832,13 +881,16 @@
|
||||
"Markup %": "Наценка %",
|
||||
"Martie": "Март",
|
||||
"Marți": "Вторник",
|
||||
"Matricea": "Matricea",
|
||||
"Max clienți": "Max clienți",
|
||||
"Max fișe/lună": "Max fișe/lună",
|
||||
"Max mașini": "Max mașini",
|
||||
"Max useri": "Max useri",
|
||||
"Mașina e gata de ridicat": "Mașina e gata de ridicat",
|
||||
"Mașini": "Автомобили",
|
||||
"Mecanic": "Механик",
|
||||
"Mecanic implicit": "Механик по умолчанию",
|
||||
"Mecanici": "Механики",
|
||||
"Medie": "Среднее",
|
||||
"Mediu": "Средний",
|
||||
"Merchant Code": "Merchant Code",
|
||||
@@ -846,16 +898,20 @@
|
||||
"Mesaj client": "Mesaj client",
|
||||
"Mesaje": "Сообщения",
|
||||
"Mesaje AI/lună": "Mesaje AI/lună",
|
||||
"Metoda": "Metoda",
|
||||
"Metode de livrare": "Metode de livrare",
|
||||
"Metode plată": "Способы оплаты",
|
||||
"Metodă": "Metodă",
|
||||
"Metodă plată": "Способ оплаты",
|
||||
"Miercuri": "Среда",
|
||||
"Migrare la alt sistem CRM": "Migrare la alt sistem CRM",
|
||||
"Min.": "Мин.",
|
||||
"Minim": "Minim",
|
||||
"Minute": "Минуты",
|
||||
"Mod": "Режим",
|
||||
"Mod stub:": "Mod stub:",
|
||||
"Mod tarifare": "Mod tarifare",
|
||||
"Mod:": "Mod:",
|
||||
"Model": "Модель",
|
||||
"Model Claude": "Model Claude",
|
||||
"Model Gemini": "Model Gemini",
|
||||
@@ -884,12 +940,14 @@
|
||||
"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": "Не заполнено",
|
||||
"Neconfirmat": "Не подтверждено",
|
||||
"Neconfirmate": "Не подтверждено",
|
||||
"Necunoscut": "Неизвестно",
|
||||
"Neplătit": "Не оплачено",
|
||||
"Nepublicat": "Не опубликовано",
|
||||
"Nesemnat": "Не подписано",
|
||||
"Nesincronizat": "Не синхронизировано",
|
||||
"Net 30 / Avans": "Net 30 / Avans",
|
||||
"Net:": "Net:",
|
||||
"Neverificat": "Не проверено",
|
||||
"New client": "Новый клиент",
|
||||
"New mașină": "Новое авто",
|
||||
@@ -913,15 +971,18 @@
|
||||
"Nicio programare în perioada selectată.": "Nicio programare în perioada selectată.",
|
||||
"Niciodată": "Никогда",
|
||||
"Niciun client magazin": "Niciun client magazin",
|
||||
"Niciun client pierdut. 🎉": "Niciun client pierdut. 🎉",
|
||||
"Niciun client încă": "Niciun client încă",
|
||||
"Niciun cod cross": "Niciun cod cross",
|
||||
"Niciun coeficient": "Niciun coeficient",
|
||||
"Niciun coeficient contextual nu se aplică (preț de bază).": "Niciun coeficient contextual nu se aplică (preț de bază).",
|
||||
"Niciun depozit": "Niciun depozit",
|
||||
"Niciun istoric": "Niciun istoric",
|
||||
"Niciun lead.": "Niciun lead.",
|
||||
"Niciun lot înregistrat": "Niciun lot înregistrat",
|
||||
"Niciun mecanic activ.": "Niciun mecanic activ.",
|
||||
"Niciun mecanic implicit": "Niciun mecanic implicit",
|
||||
"Niciun mecanic nu a finalizat lucrări în această perioadă.": "Niciun mecanic nu a finalizat lucrări în această perioadă.",
|
||||
"Niciun mecanic nu a finalizat lucrări în această perioadă.": "Ни один механик не завершил работы за этот период.",
|
||||
"Niciun plan definit": "Niciun plan definit",
|
||||
"Niciun preț înregistrat": "Niciun preț înregistrat",
|
||||
"Niciun rest de încasat. 🎉": "Niciun rest de încasat. 🎉",
|
||||
@@ -930,7 +991,9 @@
|
||||
"Niciun tenant încă": "Niciun tenant încă",
|
||||
"Niciun șablon": "Niciun șablon",
|
||||
"No": "Нет",
|
||||
"No-show alert": "No-show alert",
|
||||
"Noiembrie": "Ноябрь",
|
||||
"Norma ore": "Норма часов",
|
||||
"Normal": "Обычный",
|
||||
"Norme-ore": "Нормо-часы",
|
||||
"Note interne": "Note interne",
|
||||
@@ -953,6 +1016,7 @@
|
||||
"Nr. poliță": "Nr. poliță",
|
||||
"Nr. telefon": "Тел. номер",
|
||||
"Nr. înmatriculare": "Гос. номер",
|
||||
"Nr.:": "Nr.:",
|
||||
"Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.": "Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.",
|
||||
"Nu ai cont?": "Нет аккаунта?",
|
||||
"Nu am găsit linii valide — verifică maparea coloanelor": "Nu am găsit linii valide — verifică maparea coloanelor",
|
||||
@@ -961,6 +1025,7 @@
|
||||
"Nu re-trimite mai des de X zile": "Nu re-trimite mai des de X zile",
|
||||
"Nu te poți șterge pe tine!": "Nu te poți șterge pe tine!",
|
||||
"Nu, renunță": "Нет, отменить",
|
||||
"Numar": "Номер",
|
||||
"Nume": "Имя",
|
||||
"Nume (RO)": "Nume (RO)",
|
||||
"Nume (RU)": "Nume (RU)",
|
||||
@@ -975,6 +1040,7 @@
|
||||
"Numele este obligatoriu": "Numele este obligatoriu",
|
||||
"Numerar": "Наличные",
|
||||
"Numerar net (toate plățile - cheltuieli)": "Numerar net (toate plățile - cheltuieli)",
|
||||
"Număr": "Номер",
|
||||
"Numărul de zile gratis după ce un tenant alege acest plan.": "Numărul de zile gratis după ce un tenant alege acest plan.",
|
||||
"OCR eșuat": "OCR eșuat",
|
||||
"Observații": "Комментарии",
|
||||
@@ -983,6 +1049,7 @@
|
||||
"Ok": "Ок",
|
||||
"On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).": "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).",
|
||||
"On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).": "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).",
|
||||
"Onboarded": "Onboarded",
|
||||
"Onorat": "Onorat",
|
||||
"Onorează (scade stoc)": "Onorează (scade stoc)",
|
||||
"OpenAI API Key": "OpenAI API Key",
|
||||
@@ -1016,6 +1083,7 @@
|
||||
"PNG/SVG, max 2 MB. Apare în sidebar.": "PNG/SVG, max 2 MB. Apare în sidebar.",
|
||||
"PO": "PO",
|
||||
"POS": "POS",
|
||||
"POST /api/v1/login": "POST /api/v1/login",
|
||||
"Pagina": "Страница",
|
||||
"Pagini": "Страницы",
|
||||
"Panou": "Панель",
|
||||
@@ -1032,7 +1100,12 @@
|
||||
"Pasul 1: Încarcă fișierul": "Pasul 1: Încarcă fișierul",
|
||||
"Pasul 2: Mapează coloanele": "Pasul 2: Mapează coloanele",
|
||||
"Pauză": "Пауза",
|
||||
"PayPal": "PayPal",
|
||||
"PayPal:": "PayPal:",
|
||||
"Payload:": "Payload:",
|
||||
"Paynet": "Paynet",
|
||||
"Pe pauză": "На паузе",
|
||||
"Pe status": "Pe status",
|
||||
"Penalizări": "Penalizări",
|
||||
"Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.": "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.",
|
||||
"Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.": "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.",
|
||||
@@ -1064,6 +1137,7 @@
|
||||
"Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.": "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.",
|
||||
"Plata apare în 1-3 zile lucrătoare": "Plata apare în 1-3 zile lucrătoare",
|
||||
"Plata stabilește automat starea fișei (unpaid/partial/paid)": "Plata stabilește automat starea fișei (unpaid/partial/paid)",
|
||||
"Plate": "Plate",
|
||||
"Plată": "Платёж",
|
||||
"Plată & total": "Оплата и итого",
|
||||
"Plată anulată": "Plată anulată",
|
||||
@@ -1098,6 +1172,7 @@
|
||||
"Preview": "Предпросмотр",
|
||||
"Preview PDF": "Предпросмотр PDF",
|
||||
"Previzualizare": "Предпросмотр",
|
||||
"Previzualizare →": "Previzualizare →",
|
||||
"Prezent": "Присутствует",
|
||||
"Prezențe": "Присутствия",
|
||||
"Prezență": "Присутствие",
|
||||
@@ -1137,6 +1212,7 @@
|
||||
"Producător": "Producător",
|
||||
"Produs": "Товар",
|
||||
"Produse": "Товары",
|
||||
"Produsele tale": "Produsele tale",
|
||||
"Profesie": "Profesie",
|
||||
"Profil": "Profil",
|
||||
"Profile": "Профиль",
|
||||
@@ -1162,6 +1238,7 @@
|
||||
"Progres etapă": "Прогресс этапа",
|
||||
"Proprietar": "Владелец",
|
||||
"Provider implicit": "Provider implicit",
|
||||
"Provider:": "Provider:",
|
||||
"Public": "Публично",
|
||||
"Public (afișat la signup)": "Public (afișat la signup)",
|
||||
"Publicat": "Опубликовано",
|
||||
@@ -1187,6 +1264,8 @@
|
||||
"Rating": "Рейтинг",
|
||||
"Rating actualizat → {$score}★": "Rating actualizat → {$score}★",
|
||||
"Reactivează": "Реактивировать",
|
||||
"Read the": "Read the",
|
||||
"Real ore": "Факт часов",
|
||||
"Recalculat preț pentru {$count} piese": "Recalculat preț pentru {$count} piese",
|
||||
"Recalculează": "Recalculează",
|
||||
"Recent": "Недавно",
|
||||
@@ -1216,6 +1295,7 @@
|
||||
"Refuzat de client": "Отклонено клиентом",
|
||||
"Regenerează": "Перегенерировать",
|
||||
"Register": "Регистрация",
|
||||
"Regiune": "Regiune",
|
||||
"Regulă": "Правило",
|
||||
"Reia": "Продолжить",
|
||||
"Reminder ITP / revizie": "Reminder ITP / revizie",
|
||||
@@ -1293,6 +1373,7 @@
|
||||
"Scadență": "Срок оплаты",
|
||||
"Scanează codurile pieselor pentru a marca ca recepționate.": "Scanează codurile pieselor pentru a marca ca recepționate.",
|
||||
"Scaner cod QR / Bare": "Scaner cod QR / Bare",
|
||||
"Schimb ulei + filtru": "Schimb ulei + filtru",
|
||||
"Scoate din magazin": "Scoate din magazin",
|
||||
"Scrie mesajul tău...": "Scrie mesajul tău...",
|
||||
"Scăzut": "Низкий",
|
||||
@@ -1323,11 +1404,13 @@
|
||||
"Semnătură digitală": "Цифровая подпись",
|
||||
"Senzori TPMS": "Senzori TPMS",
|
||||
"Septembrie": "Сентябрь",
|
||||
"Serial": "Serial",
|
||||
"Serie": "Серия",
|
||||
"Serie factură": "Серия счёта",
|
||||
"Service ID": "Service ID",
|
||||
"Servicii": "Услуги",
|
||||
"Servicii & tarif": "Услуги и тариф",
|
||||
"Servicii oferite": "Servicii oferite",
|
||||
"Servicii oferite (separate prin virgulă)": "Servicii oferite (separate prin virgulă)",
|
||||
"Servicii terțe": "Сторонние услуги",
|
||||
"Sesiuni": "Сессии",
|
||||
@@ -1368,16 +1451,19 @@
|
||||
"Standard": "Стандартно",
|
||||
"Stare": "Stare",
|
||||
"Stare timp": "Время",
|
||||
"Stare zi": "Состояние дня",
|
||||
"Start": "Старт",
|
||||
"Status": "Статус",
|
||||
"Status dosar": "Status dosar",
|
||||
"Status implicit": "Статус по умолчанию",
|
||||
"Status:": "Status:",
|
||||
"Stoc": "Остаток",
|
||||
"Stoc adăugat": "Stoc adăugat",
|
||||
"Stoc minim": "Stoc minim",
|
||||
"Stoc minim atins": "Достигнут мин. остаток",
|
||||
"Stoc piese (la preț achiziție)": "Stoc piese (la preț achiziție)",
|
||||
"Storage (MB)": "Storage (MB)",
|
||||
"Storage media": "Storage media",
|
||||
"Stripe: înregistrează cont la": "Stripe: înregistrează cont la",
|
||||
"Sub minim": "Ниже мин.",
|
||||
"Subcontractare": "Субподряд",
|
||||
@@ -1386,8 +1472,11 @@
|
||||
"Subdomeniul: <slug>.service.mir.md": "Subdomeniul: <slug>.service.mir.md",
|
||||
"Subiect": "Тема",
|
||||
"Subiect (email)": "Subiect (email)",
|
||||
"Subiect *": "Subiect *",
|
||||
"Subiect și data sunt obligatorii": "Subiect și data sunt obligatorii",
|
||||
"Subtotal": "Промежуточный итог",
|
||||
"Subtotal manopere:": "Subtotal manopere:",
|
||||
"Subtotal piese:": "Subtotal piese:",
|
||||
"Succes": "Успех",
|
||||
"Sugerează revizie / piese de uzură.": "Sugerează revizie / piese de uzură.",
|
||||
"Sumă": "Сумма",
|
||||
@@ -1431,6 +1520,7 @@
|
||||
"Telefon alternativ": "Telefon alternativ",
|
||||
"Telefon principal": "Telefon principal",
|
||||
"Telefon sau parolă incorecte.": "Telefon sau parolă incorecte.",
|
||||
"Telefon:": "Telefon:",
|
||||
"Telefonie": "Телефония",
|
||||
"Telegram bot": "Telegram bot",
|
||||
"Telegram chat ID": "Telegram chat ID",
|
||||
@@ -1454,6 +1544,7 @@
|
||||
"Terț": "Terț",
|
||||
"Test notificare push": "Test notificare push",
|
||||
"Testează bot Telegram": "Testează bot Telegram",
|
||||
"Theme color": "Theme color",
|
||||
"Timp lucrat": "Отработано",
|
||||
"Timp mediu": "Среднее время",
|
||||
"Timp total": "Общее время",
|
||||
@@ -1486,6 +1577,8 @@
|
||||
"Token generat!": "Token generat!",
|
||||
"Token public": "Token public",
|
||||
"Token revocat": "Token revocat",
|
||||
"Tokens consumate luna aceasta:": "Tokens consumate luna aceasta:",
|
||||
"Tokens:": "Tokens:",
|
||||
"Top piese vândute": "Top piese vândute",
|
||||
"Tot apelul trebuie făcut pe subdomain-ul tău:": "Tot apelul trebuie făcut pe subdomain-ul tău:",
|
||||
"Total": "Итого",
|
||||
@@ -1514,6 +1607,7 @@
|
||||
"Transfer bancar": "Банковский перевод",
|
||||
"Transfer bancar: pune doar IBAN-ul tău, fără cont gateway": "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway",
|
||||
"Transport": "Транспорт",
|
||||
"Tranz.": "Tranz.",
|
||||
"Trial expiră la": "Trial expiră la",
|
||||
"Trimis": "Отправлено",
|
||||
"Trimis · fără răspuns": "Отправлено · без ответа",
|
||||
@@ -1538,8 +1632,10 @@
|
||||
"Ultim login": "Последний вход",
|
||||
"Ultima actualizare": "Последнее обновление",
|
||||
"Ultima autentificare": "Последний вход",
|
||||
"Ultima logare": "Ultima logare",
|
||||
"Ultima modificare": "Последнее изменение",
|
||||
"Ultima sincronizare": "Последняя синхронизация",
|
||||
"Ultimul cod citit:": "Ultimul cod citit:",
|
||||
"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": "Срочно",
|
||||
@@ -1561,6 +1657,8 @@
|
||||
"VIN căutare & piese": "VIN căutare & piese",
|
||||
"VIN trebuie să aibă cel puțin 11 caractere.": "VIN trebuie să aibă cel puțin 11 caractere.",
|
||||
"VIN-căutare": "VIN-поиск",
|
||||
"VIN:": "VIN:",
|
||||
"VW Passat 2018": "VW Passat 2018",
|
||||
"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",
|
||||
@@ -1576,7 +1674,7 @@
|
||||
"Venit generat": "Venit generat",
|
||||
"Venit luna curentă": "Доход тек. месяца",
|
||||
"Venit luna trecută": "Venit luna trecută",
|
||||
"Venit manopere": "Venit manopere",
|
||||
"Venit manopere": "Доход работ",
|
||||
"Venituri": "Доходы",
|
||||
"Verificare": "Проверка",
|
||||
"Verificat": "Проверено",
|
||||
@@ -1587,6 +1685,7 @@
|
||||
"Vezi tot": "Смотреть все",
|
||||
"Viitoare": "Viitoare",
|
||||
"Vineri": "Пятница",
|
||||
"Visa, Mastercard prin Stripe": "Visa, Mastercard prin Stripe",
|
||||
"Vizibil": "Видимо",
|
||||
"Vizual": "Визуально",
|
||||
"Vizualizează": "Просмотр",
|
||||
@@ -1600,6 +1699,9 @@
|
||||
"Vă mulțumim pentru încredere!": "Vă mulțumim pentru încredere!",
|
||||
"Vă mulțumim!": "Vă mulțumim!",
|
||||
"Văzut": "Просмотрено",
|
||||
"WBAFE81070CY34521": "WBAFE81070CY34521",
|
||||
"Watch video tutorials at": "Watch video tutorials at",
|
||||
"We suggest starting with the following.": "We suggest starting with the following.",
|
||||
"Web Push neconfigurat": "Web Push neconfigurat",
|
||||
"Webhook": "Webhook",
|
||||
"Webhook (Notify URL)": "Webhook (Notify URL)",
|
||||
@@ -1615,6 +1717,7 @@
|
||||
"Yes": "Да",
|
||||
"ZIP": "ZIP",
|
||||
"ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.": "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.",
|
||||
"Zi": "Zi",
|
||||
"Zile": "Дни",
|
||||
"Zile libere": "Выходные",
|
||||
"Zile livrare": "Zile livrare",
|
||||
@@ -1622,64 +1725,93 @@
|
||||
"Zonă": "Zonă",
|
||||
"Zoom in": "Приблизить",
|
||||
"Zoom out": "Отдалить",
|
||||
"a expirat.": "a expirat.",
|
||||
"a fost suspendat.": "a fost suspendat.",
|
||||
"aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via": "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via",
|
||||
"achiziție": "achiziție",
|
||||
"achiziții": "achiziții",
|
||||
"achiziție": "закупка",
|
||||
"achiziții": "закупки",
|
||||
"active": "активный",
|
||||
"actualizat": "обновлено",
|
||||
"ajustare": "ajustare",
|
||||
"angajat": "сотрудник",
|
||||
"angajați": "angajați",
|
||||
"apasă": "нажмите",
|
||||
"apel": "звонок",
|
||||
"apeluri": "звонки",
|
||||
"asistent gândește...": "asistent gândește...",
|
||||
"auto-generat": "auto-generat",
|
||||
"bonusuri/avansuri": "bonusuri/avansuri",
|
||||
"call": "Звонок",
|
||||
"canal": "канал",
|
||||
"canale marketing": "canale marketing",
|
||||
"cerere": "заявка",
|
||||
"cereri": "заявки",
|
||||
"cheltuială": "cheltuială",
|
||||
"cheltuieli": "cheltuieli",
|
||||
"client": "клиент",
|
||||
"client magazin": "client magazin",
|
||||
"client magazin": "клиент магазина",
|
||||
"clienți": "клиенты",
|
||||
"clienți magazin": "clienți magazin",
|
||||
"clienți magazin": "клиенты магазина",
|
||||
"clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.": "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.",
|
||||
"coeficient": "коэффициент",
|
||||
"coeficienți preț": "coeficienți preț",
|
||||
"coeficienți preț": "ценовые коэффициенты",
|
||||
"comandă": "comandă",
|
||||
"comenzi online": "comenzi online",
|
||||
"deal-uri": "deal-uri",
|
||||
"companie": "companie",
|
||||
"companii": "companii",
|
||||
"dashboard.stripe.com": "dashboard.stripe.com",
|
||||
"deal": "сделка",
|
||||
"deal-uri": "сделки",
|
||||
"deals": "сделок",
|
||||
"depozit": "склад",
|
||||
"depozite": "склады",
|
||||
"developer.paypal.com": "developer.paypal.com",
|
||||
"eveniment": "событие",
|
||||
"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: WVWZZZ1JZXW000001": "ex: WVWZZZ1JZXW000001",
|
||||
"ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp",
|
||||
"facebook": "Facebook",
|
||||
"facturi": "facturi",
|
||||
"factură": "factură",
|
||||
"finalizat": "завершено",
|
||||
"fișa de lucru completă": "fișa de lucru completă",
|
||||
"fișe lucru": "fișe lucru",
|
||||
"fișă": "fișă",
|
||||
"fișe lucru": "заказ-наряды",
|
||||
"fișă": "наряд",
|
||||
"furnizor": "поставщик",
|
||||
"furnizori": "поставщики",
|
||||
"fără client": "без клиента",
|
||||
"google": "Google",
|
||||
"h norm": " ч норм",
|
||||
"h real": " ч факт",
|
||||
"instagram": "Instagram",
|
||||
"jurnal": "журнал",
|
||||
"la fiecare request": "la fiecare request",
|
||||
"liber/ușor": "liber/ușor",
|
||||
"linii neîncasate.": "linii neîncasate.",
|
||||
"lucrare caroserie": "lucrare caroserie",
|
||||
"lucrare terți": "lucrare terți",
|
||||
"lucrări caroserie": "lucrări caroserie",
|
||||
"lucrări terți": "lucrări terți",
|
||||
"lucrare caroserie": "кузовная работа",
|
||||
"lucrare terți": "работа субподрядчика",
|
||||
"lucrări caroserie": "кузовные работы",
|
||||
"lucrări terți": "работы субподрядчиков",
|
||||
"mașini": "машины",
|
||||
"mașină": "машина",
|
||||
"mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).",
|
||||
"new": "новый",
|
||||
"niciodată": "niciodată",
|
||||
"norme-ore": "norme-ore",
|
||||
"normă": "normă",
|
||||
"norme": "нормы",
|
||||
"norme-ore": "нормо-часы",
|
||||
"normă": "норма",
|
||||
"null = fără trial": "null = fără trial",
|
||||
"pentru a alege": "чтобы выбрать",
|
||||
"piese": "piese",
|
||||
"piesă": "piesă",
|
||||
"pk_test_...": "pk_test_...",
|
||||
"plan": "plan",
|
||||
"planuri": "planuri",
|
||||
"plată": "plată",
|
||||
"plăți": "plăți",
|
||||
"pod": "пост",
|
||||
"portal.common.currency_mdl": "portal.common.currency_mdl",
|
||||
"portal.common.email": "portal.common.email",
|
||||
"portal.common.name": "portal.common.name",
|
||||
@@ -1794,22 +1926,34 @@
|
||||
"portal.tracking.unit_pcs": "portal.tracking.unit_pcs",
|
||||
"portal.tracking.what_asked": "portal.tracking.what_asked",
|
||||
"posturi de lucru": "posturi de lucru",
|
||||
"programări": "programări",
|
||||
"programare": "запись",
|
||||
"programări": "записи",
|
||||
"programări active": "programări active",
|
||||
"programări neconfirmate < 24h": "programări neconfirmate < 24h",
|
||||
"referral": "Рекомендация",
|
||||
"reguli markup": "reguli markup",
|
||||
"regulă": "regulă",
|
||||
"rol": "роль",
|
||||
"roluri": "роли",
|
||||
"salarii": "зарплаты",
|
||||
"salariu": "зарплата",
|
||||
"sau": "или",
|
||||
"set anvelope": "set anvelope",
|
||||
"seturi anvelope": "seturi anvelope",
|
||||
"set anvelope": "комплект шин",
|
||||
"seturi anvelope": "комплекты шин",
|
||||
"site": "Сайт",
|
||||
"subcontractor": "субподрядчик",
|
||||
"subcontractori": "subcontractori",
|
||||
"subcontractori": "субподрядчики",
|
||||
"tehnician": "техник",
|
||||
"tehnicieni": "техники",
|
||||
"telegram": "Telegram",
|
||||
"template-uri": "template-uri",
|
||||
"template": "шаблон",
|
||||
"template-uri": "шаблоны",
|
||||
"ultima fișă": "ultima fișă",
|
||||
"utilizator": "пользователь",
|
||||
"utilizatori": "пользователи",
|
||||
"ușor": "ușor",
|
||||
"vehicul": "автомобиль",
|
||||
"vehicule": "автомобили",
|
||||
"vip": "vip",
|
||||
"walk_in": "Пришёл лично",
|
||||
"whatsapp": "WhatsApp",
|
||||
@@ -1859,38 +2003,51 @@
|
||||
"Șters": "Удалено",
|
||||
"Șters de": "Удалено",
|
||||
"Șters la": "Удалено",
|
||||
"șabloane servicii": "șabloane servicii",
|
||||
"șablon": "șablon",
|
||||
"șabloane servicii": "шаблоны услуг",
|
||||
"șablon": "шаблон",
|
||||
"șters": "șters",
|
||||
"Țară": "Țară",
|
||||
"Ține-mă minte": "Запомнить меня",
|
||||
"— (multe VIN-uri europene nu respectă checksum-ul NA)": "— (multe VIN-uri europene nu respectă checksum-ul NA)",
|
||||
"— alege —": "— alege —",
|
||||
"— fără pod —": "— fără pod —",
|
||||
"— niciunul —": "— niciunul —",
|
||||
"ℹ️": "ℹ️",
|
||||
"← Săpt. anterioară": "← Săpt. anterioară",
|
||||
"← Înapoi": "← Înapoi",
|
||||
"← Înapoi la AutoCRM": "← Înapoi la AutoCRM",
|
||||
"← Înapoi la facturi": "← Înapoi la facturi",
|
||||
"→ Mergi la AutoCRM": "→ Mergi la AutoCRM",
|
||||
"→ creează aplicație live → ia credentials": "→ creează aplicație live → ia credentials",
|
||||
"→ ia keys → setează webhook la URL-ul de mai sus": "→ ia keys → setează webhook la URL-ul de mai sus",
|
||||
"↗ Deschide Purchase": "↗ Deschide Purchase",
|
||||
"↗ Deschide comanda în Filament": "↗ Deschide comanda în Filament",
|
||||
"↗ Editare": "↗ Editare",
|
||||
"≥9h/10": "≥9h/10",
|
||||
"⏰ Abonament expirat": "⏰ Abonament expirat",
|
||||
"⏹ Oprește": "⏹ Oprește",
|
||||
"◀ Luna precedentă": "◀ Luna precedentă",
|
||||
"◀ Luna precedentă": "◀ Предыдущий месяц",
|
||||
"⚖️ Balanță": "⚖️ Balanță",
|
||||
"⚙ Configurare tenant": "⚙ Configurare tenant",
|
||||
"⚙ Cum funcționează:": "⚙ Cum funcționează:",
|
||||
"⚠ Acțiune necesară": "⚠ Требуется действие",
|
||||
"⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.": "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.",
|
||||
"⚠ Fără plan": "⚠ Fără plan",
|
||||
"⚠ Pentru a primi plăți LIVE:": "⚠ Pentru a primi plăți LIVE:",
|
||||
"⚠ Posibil churn": "⚠ Posibil churn",
|
||||
"⚠ Recomandări": "⚠ Recomandări",
|
||||
"⚠ Recomandări:": "⚠ Recomandări:",
|
||||
"⚠ Token-ul tău nou (afișat o singură dată):": "⚠ Token-ul tău nou (afișat o singură dată):",
|
||||
"⚠️ Lipsește cheia Claude în Setări → AI.": "⚠️ Lipsește cheia Claude în Setări → AI.",
|
||||
"⚠️ Stoc minim atins": "⚠️ Stoc minim atins",
|
||||
"⛔ Cont suspendat": "⛔ Cont suspendat",
|
||||
"✅ Mașina dvs. este gata!": "✅ Mașina dvs. este gata!",
|
||||
"✅ VIN decodificat": "✅ VIN decodificat",
|
||||
"✏ Editează pod": "✏ Editează pod",
|
||||
"✓ Achitat": "✓ Оплачено",
|
||||
"✓ Copiat": "✓ Copiat",
|
||||
"✓ Pe abonament plătit": "✓ На платной подписке",
|
||||
"✓ valid": "✓ valid",
|
||||
"⬇ Descarcă backup acum": "⬇ Descarcă backup acum",
|
||||
"⭐ VIP fără contact recent": "⭐ VIP fără contact recent",
|
||||
"🅿️ PayPal": "🅿️ PayPal",
|
||||
@@ -1900,14 +2057,17 @@
|
||||
"🎉 Toate facturile sunt plătite": "🎉 Toate facturile sunt plătite",
|
||||
"🏦 Instrucțiuni transfer bancar": "🏦 Instrucțiuni transfer bancar",
|
||||
"🏦 Transfer bancar (manual)": "🏦 Transfer bancar (manual)",
|
||||
"👋 Bun venit!": "👋 Bun venit!",
|
||||
"👥 Clienți": "👥 Clienți",
|
||||
"💰 Finanțe": "💰 Finanțe",
|
||||
"💰 Fișe neplătite": "💰 Fișe neplătite",
|
||||
"💳 Istoric abonamente": "💳 Istoric abonamente",
|
||||
"💳 Plată confirmată": "💳 Plată confirmată",
|
||||
"💳 Plătește": "💳 Plătește",
|
||||
"💳 Stripe": "💳 Stripe",
|
||||
"💾 Salvează setările": "💾 Salvează setările",
|
||||
"📅 Programare confirmată": "📅 Programare confirmată",
|
||||
"📊 Activitate live": "📊 Activitate live",
|
||||
"📊 Încărcare": "📊 Încărcare",
|
||||
"📋 Copiază": "📋 Copiază",
|
||||
"📍 Locație & contact": "📍 Locație & contact",
|
||||
@@ -1915,11 +2075,14 @@
|
||||
"📦 Caută piesă în catalog": "📦 Caută piesă în catalog",
|
||||
"📦 Export complet date tenant": "📦 Export complet date tenant",
|
||||
"📷 Pornește scanner": "📷 Pornește scanner",
|
||||
"🔎 Decode VIN": "🔎 Decode VIN",
|
||||
"🕒 Program de lucru": "🕒 Program de lucru",
|
||||
"🖨 PDF programări": "🖨 PDF programări",
|
||||
"🖨 Tipărește": "🖨 Tipărește",
|
||||
"🗑 Șterge": "🗑 Șterge",
|
||||
"😴 Clienți pierduți": "😴 Clienți pierduți",
|
||||
"🚗 Mașini cu acest VIN în CRM": "🚗 Mașini cu acest VIN în CRM",
|
||||
"🚗 Mașini cu kilometraj mare": "🚗 Mașini cu kilometraj mare",
|
||||
"🚗 Mărci suportate": "🚗 Mărci suportate"
|
||||
"🚗 Mărci suportate": "🚗 Mărci suportate",
|
||||
"🛒 Magazin piese online": "🛒 Magazin piese online"
|
||||
}
|
||||
@@ -16,12 +16,12 @@
|
||||
<td style="padding:14px 18px;font-size:18px;text-align:right;font-weight:700;color:{{ $themeColor }};">
|
||||
{{ $appointment->date?->format('d.m.Y') }}
|
||||
</td></tr>
|
||||
<tr><td style="padding:8px 18px;font-size:13px;color:#374151;">Ora</td>
|
||||
<tr><td style="padding:8px 18px;font-size:13px;color:#374151;">{{ __('Ora') }}</td>
|
||||
<td style="padding:8px 18px;font-size:14px;text-align:right;font-weight:600;">
|
||||
{{ \Illuminate\Support\Str::substr($appointment->time_start, 0, 5) }} – {{ \Illuminate\Support\Str::substr($appointment->time_end, 0, 5) }}
|
||||
</td></tr>
|
||||
@if ($appointment->title)
|
||||
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">Subiect</td>
|
||||
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">{{ __('Subiect') }}</td>
|
||||
<td style="padding:8px 18px;font-size:12px;text-align:right;">{{ $appointment->title }}</td></tr>
|
||||
@endif
|
||||
@if ($vehicle)
|
||||
@@ -32,11 +32,11 @@
|
||||
</td></tr>
|
||||
@endif
|
||||
@if ($master)
|
||||
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">Maistru</td>
|
||||
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">{{ __('Maistru') }}</td>
|
||||
<td style="padding:8px 18px;font-size:12px;text-align:right;">{{ $master->name }}</td></tr>
|
||||
@endif
|
||||
@if ($post)
|
||||
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">Pod</td>
|
||||
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">{{ __('Pod') }}</td>
|
||||
<td style="padding:8px 18px;font-size:12px;text-align:right;">{{ $post->name }}</td></tr>
|
||||
@endif
|
||||
</table>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<td style="padding:14px 18px;font-size:18px;text-align:right;font-weight:700;color:#059669;">
|
||||
{{ number_format((float) $payment->amount, 2, '.', ' ') }} {{ $currency }}
|
||||
</td></tr>
|
||||
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">Metoda</td>
|
||||
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">{{ __('Metoda') }}</td>
|
||||
<td style="padding:8px 18px;font-size:12px;text-align:right;">
|
||||
{{ \App\Models\Tenant\Payment::METHODS[$payment->method] ?? $payment->method }}
|
||||
</td></tr>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:16px 0;border:1px solid #e5e7eb;border-radius:8px;">
|
||||
<tr><td style="padding:14px;">
|
||||
<div style="font-size:11px;text-transform:uppercase;color:#6b7280;letter-spacing:.5px;">Vehicul</div>
|
||||
<div style="font-size:11px;text-transform:uppercase;color:#6b7280;letter-spacing:.5px;">{{ __('Vehicul') }}</div>
|
||||
<div style="font-size:16px;font-weight:700;margin-top:4px;">
|
||||
{{ $vehicle->make }} {{ $vehicle->model }} {{ $vehicle->year ?? '' }}
|
||||
@if ($vehicle->plate) <span style="color:{{ $themeColor }};">[{{ $vehicle->plate }}]</span> @endif
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<p style="color: #6b7280; margin-bottom: 24px;">{{ __('Comanda ta a fost primită cu succes.') }}</p>
|
||||
|
||||
<div style="background: #f9fafb; border-radius: 10px; padding: 18px; margin-bottom: 18px;">
|
||||
<div style="font-size: 14px; color: #6b7280;">Comanda</div>
|
||||
<div style="font-size: 14px; color: #6b7280;">{{ __('Comanda') }}</div>
|
||||
<div style="font-size: 22px; font-weight: 700; margin-bottom: 8px;">#{{ $order->number }}</div>
|
||||
<div style="color: #6b7280; font-size: 13px;">
|
||||
{{ $order->created_at->isoFormat('D MMM YYYY, HH:mm') }} ·
|
||||
@@ -19,7 +19,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 style="font-size: 16px; margin-bottom: 8px;">Produsele tale</h3>
|
||||
<h3 style="font-size: 16px; margin-bottom: 8px;">{{ __('Produsele tale') }}</h3>
|
||||
<table style="width: 100%; border-collapse: collapse; margin-bottom: 18px; font-size: 14px;">
|
||||
@foreach ($items as $item)
|
||||
<tr>
|
||||
@@ -34,7 +34,7 @@
|
||||
@endforeach
|
||||
@if ((float) $order->delivery_fee > 0)
|
||||
<tr>
|
||||
<td style="padding: 8px 0; color: #6b7280;">Livrare</td>
|
||||
<td style="padding: 8px 0; color: #6b7280;">{{ __('Livrare') }}</td>
|
||||
<td style="padding: 8px 0; text-align: right;">{{ number_format((float) $order->delivery_fee, 2) }} {{ $currency }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
</tr>
|
||||
@if ($paid > 0)
|
||||
<tr>
|
||||
<td style="padding:6px 16px;font-size:12px;color:#6b7280;">Achitat</td>
|
||||
<td style="padding:6px 16px;font-size:12px;color:#6b7280;">{{ __('Achitat') }}</td>
|
||||
<td style="padding:6px 16px;font-size:12px;text-align:right;color:#059669;">{{ number_format($paid, 2, '.', ' ') }} {{ $currency }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
@@ -51,6 +51,6 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<p style="margin-top:20px;">{{ __('Atașat veți găsi') }} <b>{{ __('fișa de lucru completă') }}</b> (PDF).</p>
|
||||
<p style="margin-top:20px;">{{ __('Atașat veți găsi') }} <b>{{ __('fișa de lucru completă') }}</b> {{ __('(PDF).') }}</p>
|
||||
<p>{{ __('Vă mulțumim pentru încredere!') }}</p>
|
||||
@endcomponent
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
<li>{{ __('Operatorul (tu) creezi factură:') }} <code>/admin/companies/{id}</code> {{ __('→ „Generează factură"') }}</li>
|
||||
<li>{{ __('Tenantul vede factura în interiorul lui la') }} <code>https://{slug}.service.mir.md/billing</code></li>
|
||||
<li>{{ __('Click „Plătește" → opțiuni: card (Stripe), PayPal, sau transfer manual') }}</li>
|
||||
<li>La succes: webhook → automat status=paid + extends company.active_until</li>
|
||||
<li>{{ __('La succes: webhook → automat status=paid + extends company.active_until') }}</li>
|
||||
<li>{{ __('La transfer manual: tenant trimite confirmare; operator click „Marchează plătit" în /admin/subscriptions') }}</li>
|
||||
</ol>
|
||||
<div style="margin-top:12px;padding-top:12px;border-top:1px solid #e5e7eb;">
|
||||
<b>{{ __('⚠ Pentru a primi plăți LIVE:') }}</b>
|
||||
<ul style="margin:4px 0 0 18px;padding:0;font-size:12px;">
|
||||
<li>{{ __('Stripe: înregistrează cont la') }} <a href="https://dashboard.stripe.com" target="_blank" style="color:#6366f1;">dashboard.stripe.com</a> {{ __('→ ia keys → setează webhook la URL-ul de mai sus') }}</li>
|
||||
<li>PayPal: <a href="https://developer.paypal.com/dashboard/applications" target="_blank" style="color:#6366f1;">developer.paypal.com</a> {{ __('→ creează aplicație live → ia credentials') }}</li>
|
||||
<li>{{ __('Stripe: înregistrează cont la') }} <a href="https://dashboard.stripe.com" target="_blank" style="color:#6366f1;">{{ __('dashboard.stripe.com') }}</a> {{ __('→ ia keys → setează webhook la URL-ul de mai sus') }}</li>
|
||||
<li>{{ __('PayPal:') }} <a href="https://developer.paypal.com/dashboard/applications" target="_blank" style="color:#6366f1;">{{ __('developer.paypal.com') }}</a> {{ __('→ creează aplicație live → ia credentials') }}</li>
|
||||
<li>{{ __('Transfer bancar: pune doar IBAN-ul tău, fără cont gateway') }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -105,10 +105,10 @@
|
||||
|
||||
{{-- STATS GRID --}}
|
||||
<div class="cv-section">
|
||||
<div class="cv-section-title">📊 Activitate live</div>
|
||||
<div class="cv-section-title">{{ __('📊 Activitate live') }}</div>
|
||||
<div class="cv-grid">
|
||||
<div class="cv-card">
|
||||
<div class="label">Useri</div>
|
||||
<div class="label">{{ __('Useri') }}</div>
|
||||
<div class="value">{{ $stats['users'] }}</div>
|
||||
</div>
|
||||
<div class="cv-card">
|
||||
@@ -142,17 +142,17 @@
|
||||
<div class="sub">{{ $this->record->settings['currency'] ?? 'MDL' }}</div>
|
||||
</div>
|
||||
<div class="cv-card">
|
||||
<div class="label">Storage media</div>
|
||||
<div class="label">{{ __('Storage media') }}</div>
|
||||
<div class="value">{{ $stats['storage_mb'] }}</div>
|
||||
<div class="sub">{{ __('MB folosiți') }}</div>
|
||||
</div>
|
||||
<div class="cv-card {{ $stats['last_login'] && \Carbon\Carbon::parse($stats['last_login'])->diffInDays() > 14 ? 'danger' : '' }}">
|
||||
<div class="label">Ultima logare</div>
|
||||
<div class="label">{{ __('Ultima logare') }}</div>
|
||||
<div class="value" style="font-size:14px;">
|
||||
{{ $stats['last_login'] ? \Carbon\Carbon::parse($stats['last_login'])->diffForHumans() : 'Niciodată' }}
|
||||
</div>
|
||||
@if ($stats['last_login'] && \Carbon\Carbon::parse($stats['last_login'])->diffInDays() > 14)
|
||||
<div class="sub">⚠ Posibil churn</div>
|
||||
<div class="sub">{{ __('⚠ Posibil churn') }}</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@@ -160,7 +160,7 @@
|
||||
|
||||
{{-- SUBSCRIPTIONS --}}
|
||||
<div class="cv-section">
|
||||
<div class="cv-section-title">💳 Istoric abonamente</div>
|
||||
<div class="cv-section-title">{{ __('💳 Istoric abonamente') }}</div>
|
||||
@if ($this->record->subscriptions->isEmpty())
|
||||
<div style="padding:32px;text-align:center;color:#9ca3af;font-size:13px;border:1px dashed #e5e7eb;border-radius:8px;">
|
||||
{{ __('Niciun abonament emis. Folosește „Generează factură" de sus.') }}
|
||||
@@ -170,10 +170,10 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('Factură') }}</th>
|
||||
<th>Plan</th>
|
||||
<th>{{ __('Plan') }}</th>
|
||||
<th>{{ __('Perioadă') }}</th>
|
||||
<th>{{ __('Sumă') }}</th>
|
||||
<th>Status</th>
|
||||
<th>{{ __('Status') }}</th>
|
||||
<th>{{ __('Plătit') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -199,7 +199,7 @@
|
||||
|
||||
{{-- CONFIG --}}
|
||||
<div class="cv-section">
|
||||
<div class="cv-section-title">⚙ Configurare tenant</div>
|
||||
<div class="cv-section-title">{{ __('⚙ Configurare tenant') }}</div>
|
||||
<div class="cv-grid" style="grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));">
|
||||
<div class="cv-card">
|
||||
<div class="label">{{ __('Limbă') }}</div>
|
||||
@@ -216,20 +216,20 @@
|
||||
<div class="value" style="font-size:14px;">{{ $this->record->settings['labor_rate'] ?? '—' }}</div>
|
||||
</div>
|
||||
<div class="cv-card">
|
||||
<div class="label">Onboarded</div>
|
||||
<div class="label">{{ __('Onboarded') }}</div>
|
||||
<div class="value" style="font-size:14px;">
|
||||
{{ ! empty($this->record->settings['onboarded_at']) ? '✓ Da' : '✗ Nu' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cv-card">
|
||||
<div class="label">Theme color</div>
|
||||
<div class="label">{{ __('Theme color') }}</div>
|
||||
<div class="value" style="display:flex;align-items:center;gap:6px;font-size:14px;">
|
||||
<span style="display:inline-block;width:18px;height:18px;border-radius:3px;background:{{ $this->record->settings['theme_color'] ?? '#3B82F6' }};"></span>
|
||||
{{ $this->record->settings['theme_color'] ?? '#3B82F6' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cv-card">
|
||||
<div class="label">AI provider</div>
|
||||
<div class="label">{{ __('AI provider') }}</div>
|
||||
<div class="value" style="font-size:14px;">
|
||||
{{ $this->record->settings['ai']['default_provider'] ?? 'neconfigurat' }}
|
||||
</div>
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
|
||||
@if (! $isError && ($provider || $tokensIn !== null))
|
||||
<div class="text-xs text-gray-500 dark:text-gray-400 border-t border-gray-200 dark:border-gray-700 pt-2 flex flex-wrap gap-3">
|
||||
@if ($provider) <span>Provider: <strong>{{ strtoupper($provider) }}</strong></span> @endif
|
||||
@if ($provider) <span>{{ __('Provider:') }} <strong>{{ strtoupper($provider) }}</strong></span> @endif
|
||||
@if ($tokensIn !== null || $tokensOut !== null)
|
||||
<span>Tokens: <strong>{{ ($tokensIn ?? 0) + ($tokensOut ?? 0) }}</strong> ({{ $tokensIn ?? 0 }} in / {{ $tokensOut ?? 0 }} out)</span>
|
||||
<span>{{ __('Tokens:') }} <strong>{{ ($tokensIn ?? 0) + ($tokensOut ?? 0) }}</strong> ({{ $tokensIn ?? 0 }} in / {{ $tokensOut ?? 0 }} out)</span>
|
||||
@endif
|
||||
@if ($latency !== null) <span>Latency: {{ $latency }} ms</span> @endif
|
||||
</div>
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
@if ($totalCalls > 0)
|
||||
<div style="margin-bottom:12px;padding:10px 14px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;font-size:12px;color:#1e3a8a;">
|
||||
<strong>Tokens consumate luna aceasta:</strong>
|
||||
<strong>{{ __('Tokens consumate luna aceasta:') }}</strong>
|
||||
{{ number_format($totalTokens) }} tokens · {{ $totalCalls }} cereri
|
||||
@foreach ($usage as $provider => $u)
|
||||
· {{ strtoupper($provider) }}: {{ number_format($u['tokens_in'] + $u['tokens_out']) }}
|
||||
@@ -125,10 +125,10 @@
|
||||
@if (! $chat || $chat->messages->isEmpty())
|
||||
<div class="ai-empty">
|
||||
<div style="font-size:32px;margin-bottom:8px;">✨</div>
|
||||
<div style="font-size:14px;font-weight:600;margin-bottom:4px;">Asistent AI pentru autoservice</div>
|
||||
<div style="font-size:14px;font-weight:600;margin-bottom:4px;">{{ __('Asistent AI pentru autoservice') }}</div>
|
||||
<div style="font-size:12px;">{{ __('Întreabă-mă orice — diagnostic, sumar, sugestii, redactare mesaje către clienți...') }}</div>
|
||||
<div style="font-size:11px;margin-top:16px;color:#9ca3af;">
|
||||
<b>Configurare:</b> {{ __('mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).') }}
|
||||
<b>{{ __('Configurare:') }}</b> {{ __('mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).') }}
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
|
||||
@@ -30,11 +30,11 @@
|
||||
@click="navigator.clipboard.writeText($refs.t.innerText); copied = true; setTimeout(() => copied = false, 2000)"
|
||||
style="margin-left:12px;background:#3b82f6;color:white;padding:4px 10px;border:none;border-radius:4px;cursor:pointer;font-size:11px;">
|
||||
<span x-show="!copied">{{ __('📋 Copiază') }}</span>
|
||||
<span x-show="copied" x-cloak>✓ Copiat</span>
|
||||
<span x-show="copied" x-cloak>{{ __('✓ Copiat') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
<button type="button" wire:click="dismissNew" style="font-size:12px;color:#6b7280;background:none;border:none;cursor:pointer;">
|
||||
Am salvat token-ul, ascunde-l
|
||||
{{ __('Am salvat token-ul, ascunde-l') }}
|
||||
</button>
|
||||
</div>
|
||||
@endif
|
||||
@@ -49,8 +49,8 @@
|
||||
<tr>
|
||||
<th>{{ __('Nume') }}</th>
|
||||
<th>{{ __('Folosit ultima dată') }}</th>
|
||||
<th>Creat</th>
|
||||
<th>Permisiuni</th>
|
||||
<th>{{ __('Creat') }}</th>
|
||||
<th>{{ __('Permisiuni') }}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -77,10 +77,10 @@
|
||||
<div class="at-doc" style="margin-top:16px;">
|
||||
<b>{{ __('Cum folosești API-ul:') }}</b>
|
||||
<ol style="margin:8px 0 0 20px;">
|
||||
<li>{{ __('Obține token cu') }} <code>POST /api/v1/login</code> cu <code>email</code>+<code>password</code> JSON</li>
|
||||
<li>{{ __('Obține token cu') }} <code>{{ __('POST /api/v1/login') }}</code> cu <code>email</code>+<code>password</code> JSON</li>
|
||||
<li>{{ __('Sau generează unul aici (recomandat pentru integrări permanente)') }}</li>
|
||||
<li>{{ __('Adaugă header') }} <code>Authorization: Bearer <token></code> la fiecare request</li>
|
||||
<li>Endpoints disponibile: <code>/api/v1/clients</code>, <code>/api/v1/vehicles</code>, <code>/api/v1/work-orders</code> (GET, POST, PATCH, DELETE)</li>
|
||||
<li>{{ __('Adaugă header') }} <code>Authorization: Bearer <token></code> {{ __('la fiecare request') }}</li>
|
||||
<li>{{ __('Endpoints disponibile:') }} <code>{{ __('/api/v1/clients') }}</code>, <code>{{ __('/api/v1/vehicles') }}</code>, <code>{{ __('/api/v1/work-orders') }}</code> {{ __('(GET, POST, PATCH, DELETE)') }}</li>
|
||||
<li>{{ __('Tot apelul trebuie făcut pe subdomain-ul tău:') }} <code>https://{{ tenant()?->slug ?? 'YOURSLUG' }}.service.mir.md/api/v1/...</code></li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</p>
|
||||
<ul class="bk-list">
|
||||
<li>{{ __('Backup periodic (descarcă local sau sincronizează cu cloud)') }}</li>
|
||||
<li>Migrare la alt sistem CRM</li>
|
||||
<li>{{ __('Migrare la alt sistem CRM') }}</li>
|
||||
<li>{{ __('Audit / verificări fiscale') }}</li>
|
||||
<li>{{ __('Conformitate GDPR (la cererea ștergerii datelor)') }}</li>
|
||||
</ul>
|
||||
@@ -31,12 +31,12 @@
|
||||
depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.') }}
|
||||
</p>
|
||||
<p class="bk-p">
|
||||
<b>Format:</b> {{ __('ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.') }}
|
||||
<b>{{ __('Format:') }}</b> {{ __('ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.') }}
|
||||
</p>
|
||||
|
||||
<button type="button" class="bk-btn" wire:click="downloadBackup" wire:loading.attr="disabled">
|
||||
<span wire:loading.remove wire:target="downloadBackup">{{ __('⬇ Descarcă backup acum') }}</span>
|
||||
<span wire:loading wire:target="downloadBackup">Generez ZIP...</span>
|
||||
<span wire:loading wire:target="downloadBackup">{{ __('Generez ZIP...') }}</span>
|
||||
</button>
|
||||
|
||||
<p class="bk-p" style="margin-top:24px;font-size:11px;color:#9ca3af;">
|
||||
|
||||
@@ -155,12 +155,12 @@
|
||||
<div class="cv-shell" x-data="{ dragEventId: null }">
|
||||
<div class="cv-head">
|
||||
<div>
|
||||
<div class="cv-breadcrumb">{{ __('CRM › Programări ›') }} <strong style="color:var(--cv-text);">Calendar vizual</strong></div>
|
||||
<h1>Calendar vizual</h1>
|
||||
<div class="cv-breadcrumb">{{ __('CRM › Programări ›') }} <strong style="color:var(--cv-text);">{{ __('Calendar vizual') }}</strong></div>
|
||||
<h1>{{ __('Calendar vizual') }}</h1>
|
||||
</div>
|
||||
<div class="cv-btn-group">
|
||||
<button class="cv-btn" wire:click="exportPdf">{{ __('🖨 PDF programări') }}</button>
|
||||
<button class="cv-btn" wire:click="openNewPostForm">+ Pod nou</button>
|
||||
<button class="cv-btn" wire:click="openNewPostForm">{{ __('+ Pod nou') }}</button>
|
||||
<button class="cv-btn cv-btn-primary" wire:click="openNewForm">{{ __('+ Programare nouă') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -177,12 +177,12 @@
|
||||
<div class="cv-kpi-sub">{{ __('programări active') }}</div>
|
||||
</div>
|
||||
<div class="cv-kpi">
|
||||
<div class="cv-kpi-label">Confirmate</div>
|
||||
<div class="cv-kpi-label">{{ __('Confirmate') }}</div>
|
||||
<div class="cv-kpi-value green">{{ $stats['confirmed_count'] }} / {{ $stats['total_count'] }}</div>
|
||||
<div class="cv-kpi-sub">{{ $stats['confirmation_rate_pct'] }}% rata confirmare</div>
|
||||
</div>
|
||||
<div class="cv-kpi">
|
||||
<div class="cv-kpi-label">No-show alert</div>
|
||||
<div class="cv-kpi-label">{{ __('No-show alert') }}</div>
|
||||
<div class="cv-kpi-value red">{{ $stats['no_show_alert'] }}</div>
|
||||
<div class="cv-kpi-sub">{{ __('programări neconfirmate < 24h') }}</div>
|
||||
</div>
|
||||
@@ -196,32 +196,32 @@
|
||||
<button class="cv-btn" wire:click="setWeekToday">{{ __('Astăzi') }}</button>
|
||||
</div>
|
||||
<div class="cv-toolbar-group">
|
||||
<span class="cv-toolbar-label">Mod:</span>
|
||||
<span class="cv-toolbar-label">{{ __('Mod:') }}</span>
|
||||
<div class="cv-view-switcher">
|
||||
<button class="{{ $viewMode === 'day' ? 'active' : '' }}" wire:click="setViewMode('day')">Zi</button>
|
||||
<button class="{{ $viewMode === 'day' ? 'active' : '' }}" wire:click="setViewMode('day')">{{ __('Zi') }}</button>
|
||||
<button class="{{ $viewMode === 'week' ? 'active' : '' }}" wire:click="setViewMode('week')">{{ __('Săpt') }}</button>
|
||||
<button class="{{ $viewMode === 'month' ? 'active' : '' }}" wire:click="setViewMode('month')">{{ __('Lună') }}</button>
|
||||
<button class="{{ $viewMode === 'custom' ? 'active' : '' }}" wire:click="setViewMode('custom')">Custom</button>
|
||||
<button class="{{ $viewMode === 'custom' ? 'active' : '' }}" wire:click="setViewMode('custom')">{{ __('Custom') }}</button>
|
||||
<button class="{{ $viewMode === 'list' ? 'active' : '' }}" wire:click="setViewMode('list')">{{ __('Listă') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cv-toolbar-group">
|
||||
<span class="cv-toolbar-label">Grupare:</span>
|
||||
<span class="cv-toolbar-label">{{ __('Grupare:') }}</span>
|
||||
<div class="cv-view-switcher">
|
||||
<button class="{{ $groupBy === 'post' ? 'active' : '' }}" wire:click="setGroupBy('post')">Pod</button>
|
||||
<button class="{{ $groupBy === 'master' ? 'active' : '' }}" wire:click="setGroupBy('master')">Mecanic</button>
|
||||
<button class="{{ $groupBy === 'post' ? 'active' : '' }}" wire:click="setGroupBy('post')">{{ __('Pod') }}</button>
|
||||
<button class="{{ $groupBy === 'master' ? 'active' : '' }}" wire:click="setGroupBy('master')">{{ __('Mecanic') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
@if ($viewMode === 'custom')
|
||||
<div class="cv-toolbar-group">
|
||||
<span class="cv-toolbar-label">De la:</span>
|
||||
<span class="cv-toolbar-label">{{ __('De la:') }}</span>
|
||||
<input type="date" class="cv-select" wire:model.live="customStart">
|
||||
<span class="cv-toolbar-label">{{ __('Până la:') }}</span>
|
||||
<input type="date" class="cv-select" wire:model.live="customEnd">
|
||||
</div>
|
||||
@endif
|
||||
<div class="cv-toolbar-group" style="margin-left:auto;">
|
||||
<span class="cv-toolbar-label">Filtru:</span>
|
||||
<span class="cv-toolbar-label">{{ __('Filtru:') }}</span>
|
||||
<select class="cv-select" wire:change="setMasterFilter($event.target.value)">
|
||||
<option value="">{{ __('Toți mecanicii') }}</option>
|
||||
@foreach ($this->getMasterOptions() as $id => $name)
|
||||
@@ -230,8 +230,8 @@
|
||||
</select>
|
||||
<select class="cv-select" wire:change="setStatusFilter($event.target.value)">
|
||||
<option value="all">{{ __('Toate statusurile') }}</option>
|
||||
<option value="confirmed" @if($statusFilter==='confirmed')selected @endif>Confirmate</option>
|
||||
<option value="unconfirmed" @if($statusFilter==='unconfirmed')selected @endif>Neconfirmate</option>
|
||||
<option value="confirmed" @if($statusFilter==='confirmed')selected @endif>{{ __('Confirmate') }}</option>
|
||||
<option value="unconfirmed" @if($statusFilter==='unconfirmed')selected @endif>{{ __('Neconfirmate') }}</option>
|
||||
<option value="in_work" @if($statusFilter==='in_work')selected @endif>{{ __('În lucru') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
@@ -239,7 +239,7 @@
|
||||
|
||||
<div class="cv-notes">
|
||||
<strong>{{ __('⚙ Cum funcționează:') }}</strong>
|
||||
Matricea <strong>{{ $groupBy === 'post' ? 'Pod' : 'Mecanic' }} × Zile</strong>{{ __('. Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.') }}
|
||||
{{ __('Matricea') }} <strong>{{ $groupBy === 'post' ? 'Pod' : 'Mecanic' }} × Zile</strong>{{ __('. Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.') }}
|
||||
</div>
|
||||
|
||||
@if ($viewMode === 'list')
|
||||
@@ -286,7 +286,7 @@
|
||||
@endforeach
|
||||
|
||||
@foreach ($rows as $row)
|
||||
<div class="cv-cell cv-row-label" @if ($row['kind'] === 'post' && $row['id']) wire:click="openRenamePost({{ $row['id'] }})" style="cursor:pointer;" title="Click pentru a redenumi" @endif>
|
||||
<div class="cv-cell cv-row-label" @if ($row['kind'] === 'post' && $row['id']) wire:click="openRenamePost({{ $row['id'] }})" style="cursor:pointer;" title="{{ __('Click pentru a redenumi') }}" @endif>
|
||||
<span class="cv-row-color" style="background:{{ $row['color'] }}"></span>
|
||||
<div>
|
||||
<div>{{ $row['name'] }} @if ($row['kind'] === 'post') <span style="font-size:10px; opacity:0.5;">✏</span>@endif</div>
|
||||
@@ -338,7 +338,7 @@
|
||||
<h3>{{ __('Legendă') }}</h3>
|
||||
<div class="cv-legend-row">
|
||||
<div>
|
||||
<div class="cv-legend-col">Mecanici</div>
|
||||
<div class="cv-legend-col">{{ __('Mecanici') }}</div>
|
||||
<div class="cv-legend-items">
|
||||
@foreach ($this->getMasterOptions() as $id => $name)
|
||||
@php
|
||||
@@ -355,13 +355,13 @@
|
||||
<div class="cv-legend-items">
|
||||
<div class="cv-legend-item"><span class="cv-load" style="position:static;">0–5h/10</span> {{ __('liber/ușor') }}</div>
|
||||
<div class="cv-legend-item"><span class="cv-load warn" style="position:static;">5–8.5h/10</span> mediu</div>
|
||||
<div class="cv-legend-item"><span class="cv-load full" style="position:static;">≥9h/10</span> plin</div>
|
||||
<div class="cv-legend-item"><span class="cv-load full" style="position:static;">{{ __('≥9h/10') }}</span> plin</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="cv-legend-col">Stare zi</div>
|
||||
<div class="cv-legend-col">{{ __('Stare zi') }}</div>
|
||||
<div class="cv-legend-items">
|
||||
<div class="cv-legend-item"><span class="cv-legend-dot" style="background:#FAFAFA; border:1px solid var(--cv-border);"></span> Weekend</div>
|
||||
<div class="cv-legend-item"><span class="cv-legend-dot" style="background:#FAFAFA; border:1px solid var(--cv-border);"></span> {{ __('Weekend') }}</div>
|
||||
<div class="cv-legend-item"><span class="cv-legend-dot" style="background:repeating-linear-gradient(45deg,#FAFAFA,#FAFAFA 2px,#F1F5F9 2px,#F1F5F9 4px); border:1px solid var(--cv-border);"></span> {{ __('Închis (Duminică/sărbătoare)') }}</div>
|
||||
<div class="cv-legend-item"><span class="cv-legend-dot" style="background:var(--cv-blue-bg); border:1px solid var(--cv-blue);"></span> {{ __('Astăzi') }}</div>
|
||||
</div>
|
||||
@@ -382,11 +382,11 @@
|
||||
<div class="cv-panel-body">
|
||||
<div class="cv-two-cols">
|
||||
@if ($openEvent['client_name'])<div class="cv-pfield"><label>{{ __('Client') }}</label><div class="cv-pfield-val">{{ $openEvent['client_name'] }}</div></div>@endif
|
||||
@if ($openEvent['client_phone'])<div class="cv-pfield"><label>Telefon</label><div class="cv-pfield-val" style="color:var(--cv-blue);">{{ $openEvent['client_phone'] }}</div></div>@endif
|
||||
@if ($openEvent['client_phone'])<div class="cv-pfield"><label>{{ __('Telefon') }}</label><div class="cv-pfield-val" style="color:var(--cv-blue);">{{ $openEvent['client_phone'] }}</div></div>@endif
|
||||
@if ($openEvent['vehicle'])<div class="cv-pfield"><label>{{ __('Auto') }}</label><div class="cv-pfield-val">{{ $openEvent['vehicle'] }}</div></div>@endif
|
||||
@if ($openEvent['plate'])<div class="cv-pfield"><label>Numar</label><div class="cv-pfield-val">{{ $openEvent['plate'] }}</div></div>@endif
|
||||
@if ($openEvent['master_name'])<div class="cv-pfield"><label>Maistru</label><div class="cv-pfield-val">{{ $openEvent['master_name'] }}</div></div>@endif
|
||||
@if ($openEvent['post_name'])<div class="cv-pfield"><label>Pod</label><div class="cv-pfield-val">{{ $openEvent['post_name'] }}</div></div>@endif
|
||||
@if ($openEvent['plate'])<div class="cv-pfield"><label>{{ __('Numar') }}</label><div class="cv-pfield-val">{{ $openEvent['plate'] }}</div></div>@endif
|
||||
@if ($openEvent['master_name'])<div class="cv-pfield"><label>{{ __('Maistru') }}</label><div class="cv-pfield-val">{{ $openEvent['master_name'] }}</div></div>@endif
|
||||
@if ($openEvent['post_name'])<div class="cv-pfield"><label>{{ __('Pod') }}</label><div class="cv-pfield-val">{{ $openEvent['post_name'] }}</div></div>@endif
|
||||
</div>
|
||||
@if ($openEvent['notes'])
|
||||
<div class="cv-pfield"><label>{{ __('Notițe') }}</label><div class="cv-pfield-val" style="white-space:pre-wrap;">{{ $openEvent['notes'] }}</div></div>
|
||||
@@ -394,7 +394,7 @@
|
||||
</div>
|
||||
<div class="cv-panel-actions">
|
||||
<button class="cv-btn" wire:click="deleteEvent({{ $openEvent['id'] }})" onclick="return confirm('Ștergi această programare?')">{{ __('🗑 Șterge') }}</button>
|
||||
<a class="cv-btn cv-btn-primary" href="{{ route('filament.tenant.resources.appointments.edit', ['record' => $openEvent['id']]) }}">↗ Editare</a>
|
||||
<a class="cv-btn cv-btn-primary" href="{{ route('filament.tenant.resources.appointments.edit', ['record' => $openEvent['id']]) }}">{{ __('↗ Editare') }}</a>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@@ -410,10 +410,10 @@
|
||||
<div class="cv-close" wire:click="$set('showNewForm', false)">✕</div>
|
||||
</div>
|
||||
<div class="cv-panel-body">
|
||||
<div class="cv-pfield"><label>Subiect *</label><input wire:model="newAppt.title" type="text" placeholder="Schimb ulei + filtru"></div>
|
||||
<div class="cv-pfield"><label>{{ __('Subiect *') }}</label><input wire:model="newAppt.title" type="text" placeholder="{{ __('Schimb ulei + filtru') }}"></div>
|
||||
<div class="cv-two-cols">
|
||||
<div class="cv-pfield"><label>{{ __('Data *') }}</label><input wire:model="newAppt.date" type="date"></div>
|
||||
<div class="cv-pfield"><label>Pod</label>
|
||||
<div class="cv-pfield"><label>{{ __('Pod') }}</label>
|
||||
<select wire:model="newAppt.post_id">
|
||||
<option value="">—</option>
|
||||
@foreach ($this->getPostOptions() as $id => $name)
|
||||
@@ -421,7 +421,7 @@
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="cv-pfield"><label>De la</label><input wire:model="newAppt.time_start" type="time"></div>
|
||||
<div class="cv-pfield"><label>{{ __('De la') }}</label><input wire:model="newAppt.time_start" type="time"></div>
|
||||
<div class="cv-pfield"><label>{{ __('Până la') }}</label><input wire:model="newAppt.time_end" type="time"></div>
|
||||
</div>
|
||||
<div class="cv-pfield"><label>{{ __('Client') }}</label>
|
||||
@@ -432,7 +432,7 @@
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="cv-pfield"><label>Maistru</label>
|
||||
<div class="cv-pfield"><label>{{ __('Maistru') }}</label>
|
||||
<select wire:model="newAppt.master_id">
|
||||
<option value="">—</option>
|
||||
@foreach ($this->getMasterOptions() as $id => $name)
|
||||
@@ -457,11 +457,11 @@
|
||||
<p style="font-size:13px; color:#4a5568; margin-bottom:16px;">{{ __('Poți adăuga un loc de muncă (cu lift sau fără — ex: curte, atelier electric).') }}</p>
|
||||
<div class="cv-pfield">
|
||||
<label>{{ __('Nume *') }}</label>
|
||||
<input type="text" wire:model="newPost.name" placeholder="Ex: Curte 1, Pod 4, Atelier electric" autofocus>
|
||||
<input type="text" wire:model="newPost.name" placeholder="{{ __('Ex: Curte 1, Pod 4, Atelier electric') }}" autofocus>
|
||||
</div>
|
||||
<div class="cv-two-cols">
|
||||
<div class="cv-pfield">
|
||||
<label>Culoare</label>
|
||||
<label>{{ __('Culoare') }}</label>
|
||||
<input type="color" wire:model="newPost.color" style="height:40px; padding:4px;">
|
||||
</div>
|
||||
<div class="cv-pfield">
|
||||
@@ -491,9 +491,9 @@
|
||||
<input type="text" wire:model="renamingPostName" autofocus>
|
||||
</div>
|
||||
<div class="cv-pfield">
|
||||
<label>Mecanic implicit</label>
|
||||
<label>{{ __('Mecanic implicit') }}</label>
|
||||
<select wire:model="renamingPostMasterId">
|
||||
<option value="">— niciunul —</option>
|
||||
<option value="">{{ __('— niciunul —') }}</option>
|
||||
@foreach ($this->getMasterOptions() as $id => $name)
|
||||
<option value="{{ $id }}">{{ $name }}</option>
|
||||
@endforeach
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<div class="wiz-field">
|
||||
<label>{{ __('Furnizor *') }}</label>
|
||||
<select wire:model="supplierId">
|
||||
<option value="">— alege —</option>
|
||||
<option value="">{{ __('— alege —') }}</option>
|
||||
@foreach ($this->getSupplierOptions() as $id => $name)
|
||||
<option value="{{ $id }}">{{ $name }}</option>
|
||||
@endforeach
|
||||
@@ -102,21 +102,21 @@
|
||||
|
||||
<div class="wiz-grid">
|
||||
<div class="wiz-field">
|
||||
<label>Coloana Articol *</label>
|
||||
<label>{{ __('Coloana Articol *') }}</label>
|
||||
<select wire:model="mapping.article_col">
|
||||
<option value="">—</option>
|
||||
@foreach ($headersPreview['columns'] as $c)<option value="{{ $c }}">{{ $c }}</option>@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="wiz-field">
|
||||
<label>Coloana Denumire *</label>
|
||||
<label>{{ __('Coloana Denumire *') }}</label>
|
||||
<select wire:model="mapping.name_col">
|
||||
<option value="">—</option>
|
||||
@foreach ($headersPreview['columns'] as $c)<option value="{{ $c }}">{{ $c }}</option>@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="wiz-field">
|
||||
<label>Coloana Cantitate *</label>
|
||||
<label>{{ __('Coloana Cantitate *') }}</label>
|
||||
<select wire:model="mapping.qty_col">
|
||||
<option value="">—</option>
|
||||
@foreach ($headersPreview['columns'] as $c)<option value="{{ $c }}">{{ $c }}</option>@endforeach
|
||||
@@ -151,7 +151,7 @@
|
||||
|
||||
<div class="wiz-actions">
|
||||
<button class="wiz-btn" wire:click="$set('step', 1)">{{ __('← Înapoi') }}</button>
|
||||
<button class="wiz-btn wiz-btn-primary" wire:click="goToStep3">Previzualizare →</button>
|
||||
<button class="wiz-btn wiz-btn-primary" wire:click="goToStep3">{{ __('Previzualizare →') }}</button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
<table class="wiz-preview-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Articol</th><th>Denumire</th><th>Brand</th><th>Cant.</th><th>{{ __('Preț') }}</th><th>Status</th>
|
||||
<th>{{ __('Articol') }}</th><th>{{ __('Denumire') }}</th><th>{{ __('Brand') }}</th><th>{{ __('Cant.') }}</th><th>{{ __('Preț') }}</th><th>{{ __('Status') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -56,8 +56,8 @@
|
||||
@if ($tab === 'overview')
|
||||
<div class="fn-grid fn-grid-4">
|
||||
<div class="fn-card"><div class="fn-stat-l">{{ __('Încasări') }}</div><div class="fn-stat-v fn-success">{{ number_format($data['income'], 2, '.', ' ') }} MDL</div></div>
|
||||
<div class="fn-card"><div class="fn-stat-l">Cheltuieli</div><div class="fn-stat-v fn-danger">{{ number_format($data['expenses'], 2, '.', ' ') }} MDL</div></div>
|
||||
<div class="fn-card"><div class="fn-stat-l">Profit</div><div class="fn-stat-v {{ $data['profit'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['profit'], 2, '.', ' ') }} MDL</div></div>
|
||||
<div class="fn-card"><div class="fn-stat-l">{{ __('Cheltuieli') }}</div><div class="fn-stat-v fn-danger">{{ number_format($data['expenses'], 2, '.', ' ') }} MDL</div></div>
|
||||
<div class="fn-card"><div class="fn-stat-l">{{ __('Profit') }}</div><div class="fn-stat-v {{ $data['profit'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['profit'], 2, '.', ' ') }} MDL</div></div>
|
||||
<div class="fn-card"><div class="fn-stat-l">{{ __('Datorii clienți') }}</div><div class="fn-stat-v fn-warning">{{ number_format($data['debtTotal'], 2, '.', ' ') }} MDL</div></div>
|
||||
</div>
|
||||
|
||||
@@ -80,22 +80,22 @@
|
||||
@endforeach
|
||||
</div>
|
||||
<div style="text-align:right;margin-top:12px;font-size:14px;">
|
||||
Net: <b class="{{ $data['net'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['net'], 2, '.', ' ') }} MDL</b>
|
||||
{{ __('Net:') }} <b class="{{ $data['net'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['net'], 2, '.', ' ') }} MDL</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@elseif ($tab === 'pnl')
|
||||
<div class="fn-grid fn-grid-2" style="margin-bottom: 16px;">
|
||||
<div class="fn-card">
|
||||
<div class="fn-h3">Venituri</div>
|
||||
<div class="fn-h3">{{ __('Venituri') }}</div>
|
||||
<table class="fn-tbl">
|
||||
<tr><td>Manopere</td><td class="fn-r">{{ number_format($data['worksRevenue'], 2, '.', ' ') }}</td></tr>
|
||||
<tr><td>{{ __('Manopere') }}</td><td class="fn-r">{{ number_format($data['worksRevenue'], 2, '.', ' ') }}</td></tr>
|
||||
<tr><td>{{ __('Piese (vânzare)') }}</td><td class="fn-r">{{ number_format($data['partsRevenue'], 2, '.', ' ') }}</td></tr>
|
||||
<tr style="border-top:2px solid #e5e7eb;"><td class="fn-bold">{{ __('Total venituri') }}</td><td class="fn-r fn-bold fn-success">{{ number_format($data['totalRevenue'], 2, '.', ' ') }}</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="fn-card">
|
||||
<div class="fn-h3">Costuri</div>
|
||||
<div class="fn-h3">{{ __('Costuri') }}</div>
|
||||
<table class="fn-tbl">
|
||||
<tr><td>{{ __('Cost piese (achiziție)') }}</td><td class="fn-r fn-danger">{{ number_format($data['partsCost'], 2, '.', ' ') }}</td></tr>
|
||||
@foreach ($data['expensesByCat'] as $row)
|
||||
@@ -106,7 +106,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="fn-card" style="text-align:right;">
|
||||
<div class="fn-stat-l">Profit net</div>
|
||||
<div class="fn-stat-l">{{ __('Profit net') }}</div>
|
||||
<div class="fn-stat-v {{ $data['netProfit'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['netProfit'], 2, '.', ' ') }} MDL</div>
|
||||
<div style="font-size:12px;color:#6b7280;margin-top:4px;">Marjă: {{ $data['marginPct'] }}%</div>
|
||||
<div style="font-size:11px;color:#9ca3af;margin-top:4px;">Marjă piese: {{ number_format($data['partsMargin'], 2, '.', ' ') }} MDL</div>
|
||||
@@ -115,7 +115,7 @@
|
||||
@elseif ($tab === 'balance')
|
||||
<div class="fn-grid fn-grid-2">
|
||||
<div class="fn-card">
|
||||
<div class="fn-h3">Active</div>
|
||||
<div class="fn-h3">{{ __('Active') }}</div>
|
||||
<table class="fn-tbl">
|
||||
<tr><td>{{ __('Numerar net (toate plățile - cheltuieli)') }}</td><td class="fn-r fn-bold fn-success">{{ number_format($data['netCash'], 2, '.', ' ') }} MDL</td></tr>
|
||||
<tr><td>{{ __('Datorii clienți (de încasat)') }}</td><td class="fn-r fn-warning">{{ number_format($data['debt'], 2, '.', ' ') }} MDL</td></tr>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
</style>
|
||||
|
||||
<div style="background: #fef3c7; border-left: 4px solid #f59e0b; padding: 12px 16px; border-radius: 6px; margin-bottom: 16px; font-size: 13px;">
|
||||
ℹ️ <b>Status:</b> {{ __('aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.
|
||||
{{ __('ℹ️') }} <b>{{ __('Status:') }}</b> {{ __('aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.
|
||||
Pentru moment, valorile salvate sunt accesibile în cod via') }} <code>$tenant->settings['integrations']</code>.
|
||||
</div>
|
||||
|
||||
|
||||
@@ -30,12 +30,12 @@
|
||||
<table class="kpi-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Mecanic</th>
|
||||
<th>{{ __('Mecanic') }}</th>
|
||||
<th>{{ __('Lucrări') }}</th>
|
||||
<th>Norma ore</th>
|
||||
<th>Real ore</th>
|
||||
<th>{{ __('Norma ore') }}</th>
|
||||
<th>{{ __('Real ore') }}</th>
|
||||
<th>{{ __('Eficiență') }}</th>
|
||||
<th>Venit manopere</th>
|
||||
<th>{{ __('Venit manopere') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
<div class="ob-wrap">
|
||||
<div class="ob-intro">
|
||||
<h3>👋 Bun venit!</h3>
|
||||
<h3>{{ __('👋 Bun venit!') }}</h3>
|
||||
{{ __('Hai să facem 30 de secunde de configurare ca AutoCRM-ul tău să arate exact cum vrei tu.
|
||||
Toate aceste setări pot fi schimbate oricând din meniul „Setări".') }}
|
||||
</div>
|
||||
|
||||
@@ -403,7 +403,7 @@
|
||||
<form class="pb-panel-body" wire:submit.prevent="createNewLead">
|
||||
<div class="pb-form-field">
|
||||
<label>{{ __('Nume') }} *</label>
|
||||
<input type="text" wire:model="newName" placeholder="Ion Popescu" autofocus>
|
||||
<input type="text" wire:model="newName" placeholder="{{ __('Ion Popescu') }}" autofocus>
|
||||
</div>
|
||||
<div class="pb-form-field">
|
||||
<label>{{ __('Telefon') }} *</label>
|
||||
@@ -411,7 +411,7 @@
|
||||
</div>
|
||||
<div class="pb-form-field">
|
||||
<label>{{ __('Auto / model') }}</label>
|
||||
<input type="text" wire:model="newCar" placeholder="VW Passat 2018">
|
||||
<input type="text" wire:model="newCar" placeholder="{{ __('VW Passat 2018') }}">
|
||||
</div>
|
||||
<div class="pb-form-field">
|
||||
<label>{{ __('Sursă') }}</label>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="2" class="rc-empty">Niciun client pierdut. 🎉</td></tr>
|
||||
<tr><td colspan="2" class="rc-empty">{{ __('Niciun client pierdut. 🎉') }}</td></tr>
|
||||
@endforelse
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
<div class="rp-card">
|
||||
<div class="rp-h3">{{ __('Încasări pe metodă') }}</div>
|
||||
<table class="rp-tbl">
|
||||
<thead><tr><th>{{ __('Metodă') }}</th><th class="rp-right">Tranz.</th><th class="rp-right">{{ __('Total') }}</th></tr></thead>
|
||||
<thead><tr><th>{{ __('Metodă') }}</th><th class="rp-right">{{ __('Tranz.') }}</th><th class="rp-right">{{ __('Total') }}</th></tr></thead>
|
||||
<tbody>
|
||||
@forelse ($data['by_method'] as $row)
|
||||
<tr>
|
||||
@@ -119,9 +119,9 @@
|
||||
</table>
|
||||
</div>
|
||||
<div class="rp-card">
|
||||
<div class="rp-h3">Cheltuieli pe categorie</div>
|
||||
<div class="rp-h3">{{ __('Cheltuieli pe categorie') }}</div>
|
||||
<table class="rp-tbl">
|
||||
<thead><tr><th>Categorie</th><th class="rp-right">{{ __('Nr.') }}</th><th class="rp-right">{{ __('Total') }}</th></tr></thead>
|
||||
<thead><tr><th>{{ __('Categorie') }}</th><th class="rp-right">{{ __('Nr.') }}</th><th class="rp-right">{{ __('Total') }}</th></tr></thead>
|
||||
<tbody>
|
||||
@forelse ($data['by_category'] as $row)
|
||||
<tr>
|
||||
@@ -150,7 +150,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="rp-card">
|
||||
<div class="rp-h3">Pe status</div>
|
||||
<div class="rp-h3">{{ __('Pe status') }}</div>
|
||||
<table class="rp-tbl">
|
||||
<tbody>
|
||||
@forelse ($data['by_status'] as $row)
|
||||
@@ -169,11 +169,11 @@
|
||||
<div class="rp-card" style="overflow-x: auto;">
|
||||
<table class="rp-tbl">
|
||||
<thead><tr>
|
||||
<th>Mecanic</th>
|
||||
<th>Specializare</th>
|
||||
<th class="rp-right">Manopere</th>
|
||||
<th>{{ __('Mecanic') }}</th>
|
||||
<th>{{ __('Specializare') }}</th>
|
||||
<th class="rp-right">{{ __('Manopere') }}</th>
|
||||
<th class="rp-right">{{ __('Ore') }}</th>
|
||||
<th class="rp-right">Venit</th>
|
||||
<th class="rp-right">{{ __('Venit') }}</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
@forelse ($data['rows'] as $r)
|
||||
@@ -185,7 +185,7 @@
|
||||
<td class="rp-right rp-bold rp-success">{{ number_format($r['revenue'], 2, '.', ' ') }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="5" class="rp-muted">Niciun mecanic activ.</td></tr>
|
||||
<tr><td colspan="5" class="rp-muted">{{ __('Niciun mecanic activ.') }}</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -198,7 +198,7 @@
|
||||
<th>{{ __('Manoperă') }}</th>
|
||||
<th class="rp-right">{{ __('Nr.') }}</th>
|
||||
<th class="rp-right">{{ __('Ore total') }}</th>
|
||||
<th class="rp-right">Venit</th>
|
||||
<th class="rp-right">{{ __('Venit') }}</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
@forelse ($data['rows'] as $r)
|
||||
@@ -220,7 +220,7 @@
|
||||
<div class="rp-card" style="overflow-x: auto;">
|
||||
<div class="rp-h3">{{ __('Top piese vândute') }}</div>
|
||||
<table class="rp-tbl">
|
||||
<thead><tr><th>{{ __('Piesă') }}</th><th class="rp-right">Cant.</th><th class="rp-right">Venit</th><th class="rp-right">{{ __('Marjă') }}</th></tr></thead>
|
||||
<thead><tr><th>{{ __('Piesă') }}</th><th class="rp-right">{{ __('Cant.') }}</th><th class="rp-right">{{ __('Venit') }}</th><th class="rp-right">{{ __('Marjă') }}</th></tr></thead>
|
||||
<tbody>
|
||||
@forelse ($data['sold'] as $r)
|
||||
<tr>
|
||||
@@ -238,7 +238,7 @@
|
||||
<div class="rp-card">
|
||||
<div class="rp-h3">{{ __('⚠️ Stoc minim atins') }}</div>
|
||||
<table class="rp-tbl">
|
||||
<thead><tr><th>{{ __('Piesă') }}</th><th class="rp-right">{{ __('Stoc') }}</th><th class="rp-right">Min.</th></tr></thead>
|
||||
<thead><tr><th>{{ __('Piesă') }}</th><th class="rp-right">{{ __('Stoc') }}</th><th class="rp-right">{{ __('Min.') }}</th></tr></thead>
|
||||
<tbody>
|
||||
@forelse ($data['low'] as $p)
|
||||
<tr>
|
||||
@@ -270,7 +270,7 @@
|
||||
<td class="rp-right rp-bold">{{ $row->cnt }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="2" class="rp-muted">Niciun lead.</td></tr>
|
||||
<tr><td colspan="2" class="rp-muted">{{ __('Niciun lead.') }}</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
</div>
|
||||
|
||||
<div x-show="lastDecoded" class="sc-status" x-cloak>
|
||||
Ultimul cod citit: <strong x-text="lastDecoded"></strong>
|
||||
{{ __('Ultimul cod citit:') }} <strong x-text="lastDecoded"></strong>
|
||||
</div>
|
||||
|
||||
<div class="sc-manual">
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
</style>
|
||||
|
||||
<div class="vs-card">
|
||||
<h2 style="font-size:16px;font-weight:600;margin-bottom:12px;">🔎 Decode VIN</h2>
|
||||
<h2 style="font-size:16px;font-weight:600;margin-bottom:12px;">{{ __('🔎 Decode VIN') }}</h2>
|
||||
<form wire:submit="decode" style="display:flex;gap:12px;flex-wrap:wrap;">
|
||||
<input type="text" wire:model="vin" class="vs-input" placeholder="WBAFE81070CY34521" maxlength="17" style="flex:1;min-width:300px;">
|
||||
<input type="text" wire:model="vin" class="vs-input" placeholder="{{ __('WBAFE81070CY34521') }}" maxlength="17" style="flex:1;min-width:300px;">
|
||||
<button type="submit" class="vs-btn">{{ __('Decodează') }}</button>
|
||||
</form>
|
||||
</div>
|
||||
@@ -31,13 +31,13 @@
|
||||
@if ($decoded)
|
||||
<div class="vs-card">
|
||||
@if ($decoded['valid'])
|
||||
<h3 style="font-size:14px;font-weight:600;margin-bottom:16px;">✅ VIN decodificat</h3>
|
||||
<h3 style="font-size:14px;font-weight:600;margin-bottom:16px;">{{ __('✅ VIN decodificat') }}</h3>
|
||||
<div class="vs-grid">
|
||||
<div><div class="vs-stat-l">{{ __('Producător') }}</div><div class="vs-stat-v">{{ $decoded['manufacturer'] }}</div></div>
|
||||
<div><div class="vs-stat-l">{{ __('Țară') }}</div><div class="vs-stat-v">{{ $decoded['country'] }}</div></div>
|
||||
<div><div class="vs-stat-l">An model (estimat)</div><div class="vs-stat-v">{{ $decoded['year'] ?? '—' }}</div></div>
|
||||
<div><div class="vs-stat-l">WMI</div><div class="vs-stat-v" style="font-family:monospace;">{{ $decoded['wmi'] }}</div></div>
|
||||
<div><div class="vs-stat-l">Serial</div><div class="vs-stat-v" style="font-family:monospace;font-size:12px;">{{ $decoded['serial'] }}</div></div>
|
||||
<div><div class="vs-stat-l">{{ __('Serial') }}</div><div class="vs-stat-v" style="font-family:monospace;font-size:12px;">{{ $decoded['serial'] }}</div></div>
|
||||
</div>
|
||||
@else
|
||||
<div style="color:#dc2626;">⚠ {{ $decoded['error'] ?? 'WMI necunoscut — producătorul nu e în baza de date locală.' }}</div>
|
||||
@@ -49,7 +49,7 @@
|
||||
<div class="vs-card">
|
||||
<h3 style="font-size:14px;font-weight:600;margin-bottom:12px;">{{ __('🚗 Mașini cu acest VIN în CRM') }}</h3>
|
||||
<table class="vs-tbl">
|
||||
<thead><tr><th>VIN</th><th>Marca/Model</th><th>Plate</th><th>{{ __('Client') }}</th><th>Km</th></tr></thead>
|
||||
<thead><tr><th>VIN</th><th>{{ __('Marca/Model') }}</th><th>{{ __('Plate') }}</th><th>{{ __('Client') }}</th><th>{{ __('Km') }}</th></tr></thead>
|
||||
<tbody>
|
||||
@foreach ($matches as $v)
|
||||
<tr>
|
||||
@@ -78,7 +78,7 @@
|
||||
<div style="color:#9ca3af;text-align:center;padding:20px;">Niciun rezultat pentru „{{ $partsQuery }}"</div>
|
||||
@else
|
||||
<table class="vs-tbl">
|
||||
<thead><tr><th>Denumire</th><th>{{ __('Cod') }}</th><th>Brand</th><th>{{ __('Stoc') }}</th><th>{{ __('Preț') }}</th></tr></thead>
|
||||
<thead><tr><th>{{ __('Denumire') }}</th><th>{{ __('Cod') }}</th><th>{{ __('Brand') }}</th><th>{{ __('Stoc') }}</th><th>{{ __('Preț') }}</th></tr></thead>
|
||||
<tbody>
|
||||
@foreach ($parts as $p)
|
||||
<tr>
|
||||
|
||||
@@ -7,6 +7,6 @@
|
||||
@if ($part->article)
|
||||
<div class="text-xs text-gray-500 dark:text-gray-400 font-mono">{{ $part->article }}</div>
|
||||
@endif
|
||||
<div class="text-xs text-gray-400 mt-1">Payload: <code>{{ $payload }}</code></div>
|
||||
<div class="text-xs text-gray-400 mt-1">{{ __('Payload:') }} <code>{{ $payload }}</code></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</div>
|
||||
|
||||
<div class="space-y-2">
|
||||
<label class="block text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide">Link</label>
|
||||
<label class="block text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide">{{ __('Link') }}</label>
|
||||
<div class="flex gap-2">
|
||||
<input
|
||||
type="text"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<dt class="text-gray-500 dark:text-gray-400">VIN</dt>
|
||||
<dd class="font-mono text-gray-900 dark:text-gray-100">{{ $info['vin'] }}</dd>
|
||||
|
||||
<dt class="text-gray-500 dark:text-gray-400">Regiune</dt>
|
||||
<dt class="text-gray-500 dark:text-gray-400">{{ __('Regiune') }}</dt>
|
||||
<dd class="text-gray-900 dark:text-gray-100">{{ $info['region'] ?? '—' }}</dd>
|
||||
|
||||
<dt class="text-gray-500 dark:text-gray-400">{{ __('Țară') }}</dt>
|
||||
@@ -20,16 +20,16 @@
|
||||
<dt class="text-gray-500 dark:text-gray-400">{{ __('Producător') }}</dt>
|
||||
<dd class="text-gray-900 dark:text-gray-100 font-semibold">{{ $info['manufacturer'] ?? '— (WMI necunoscut)' }}</dd>
|
||||
|
||||
<dt class="text-gray-500 dark:text-gray-400">An model</dt>
|
||||
<dt class="text-gray-500 dark:text-gray-400">{{ __('An model') }}</dt>
|
||||
<dd class="text-gray-900 dark:text-gray-100 font-semibold">{{ $info['year'] ?? '—' }}</dd>
|
||||
|
||||
<dt class="text-gray-500 dark:text-gray-400">{{ __('Cod uzină') }}</dt>
|
||||
<dd class="font-mono text-gray-900 dark:text-gray-100">{{ $info['plant'] ?? '—' }}</dd>
|
||||
|
||||
<dt class="text-gray-500 dark:text-gray-400">Checksum (ISO)</dt>
|
||||
<dt class="text-gray-500 dark:text-gray-400">{{ __('Checksum (ISO)') }}</dt>
|
||||
<dd class="text-gray-900 dark:text-gray-100">
|
||||
@if ($info['checksum_valid'])
|
||||
<span class="text-green-600 dark:text-green-400">✓ valid</span>
|
||||
<span class="text-green-600 dark:text-green-400">{{ __('✓ valid') }}</span>
|
||||
@else
|
||||
<span class="text-gray-500">{{ __('— (multe VIN-uri europene nu respectă checksum-ul NA)') }}</span>
|
||||
@endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Etichete piese</title>
|
||||
<title>{{ __('Etichete piese') }}</title>
|
||||
<style>
|
||||
@page { size: A4; margin: 10mm; }
|
||||
* { box-sizing: border-box; }
|
||||
|
||||
@@ -29,12 +29,12 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:60px;">Ora</th>
|
||||
<th>Subiect</th>
|
||||
<th style="width:60px;">{{ __('Ora') }}</th>
|
||||
<th>{{ __('Subiect') }}</th>
|
||||
<th>{{ __('Client / Auto') }}</th>
|
||||
<th>Pod</th>
|
||||
<th>Maistru</th>
|
||||
<th style="width:60px;">Status</th>
|
||||
<th>{{ __('Pod') }}</th>
|
||||
<th>{{ __('Maistru') }}</th>
|
||||
<th style="width:60px;">{{ __('Status') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -60,6 +60,6 @@
|
||||
<div class="empty">{{ __('Nicio programare în această perioadă.') }}</div>
|
||||
@endforelse
|
||||
|
||||
<div class="footer">AutoCRM PSauto · psauto.service.mir.md</div>
|
||||
<div class="footer">{{ __('AutoCRM PSauto · psauto.service.mir.md') }}</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -134,13 +134,13 @@
|
||||
</div>
|
||||
<div class="col col-half">
|
||||
<div class="doc-title">{{ __('FIȘĂ DE LUCRU') }}</div>
|
||||
<div class="doc-meta">Nr.: <b>{{ $wo->number }}</b></div>
|
||||
<div class="doc-meta">{{ __('Nr.:') }} <b>{{ $wo->number }}</b></div>
|
||||
<div class="doc-meta">{{ __('Data deschiderii:') }} <b>{{ $wo->opened_at?->format('d.m.Y') }}</b></div>
|
||||
@if ($wo->closed_at)
|
||||
<div class="doc-meta">{{ __('Data închiderii:') }} <b>{{ $wo->closed_at->format('d.m.Y') }}</b></div>
|
||||
@endif
|
||||
<div class="doc-meta">
|
||||
Status: <b>{{ \App\Models\Tenant\WorkOrder::STATUSES[$wo->status] ?? $wo->status }}</b>
|
||||
{{ __('Status:') }} <b>{{ \App\Models\Tenant\WorkOrder::STATUSES[$wo->status] ?? $wo->status }}</b>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -152,9 +152,9 @@
|
||||
<h3>{{ __('Client') }}</h3>
|
||||
<div class="kv">
|
||||
<div><b>{{ __('Nume:') }}</b> {{ $wo->client?->name ?? '—' }}</div>
|
||||
<div><b>Telefon:</b> {{ $wo->client?->phone ?? '—' }}</div>
|
||||
<div><b>{{ __('Telefon:') }}</b> {{ $wo->client?->phone ?? '—' }}</div>
|
||||
@if ($wo->client?->email)
|
||||
<div><b>Email:</b> {{ $wo->client->email }}</div>
|
||||
<div><b>{{ __('Email:') }}</b> {{ $wo->client->email }}</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@@ -163,12 +163,12 @@
|
||||
<div class="box">
|
||||
<h3>{{ __('Auto') }}</h3>
|
||||
<div class="kv">
|
||||
<div><b>Marca/Model:</b> {{ $wo->vehicle?->make }} {{ $wo->vehicle?->model }} {{ $wo->vehicle?->year }}</div>
|
||||
<div><b>Nr.:</b> {{ $wo->vehicle?->plate ?? '—' }}</div>
|
||||
<div><b>{{ __('Marca/Model:') }}</b> {{ $wo->vehicle?->make }} {{ $wo->vehicle?->model }} {{ $wo->vehicle?->year }}</div>
|
||||
<div><b>{{ __('Nr.:') }}</b> {{ $wo->vehicle?->plate ?? '—' }}</div>
|
||||
@if ($wo->vehicle?->vin)
|
||||
<div><b>VIN:</b> {{ $wo->vehicle->vin }}</div>
|
||||
<div><b>{{ __('VIN:') }}</b> {{ $wo->vehicle->vin }}</div>
|
||||
@endif
|
||||
<div><b>Km la intrare:</b> {{ $wo->mileage_in ? number_format($wo->mileage_in, 0, '.', ' ') : '—' }}</div>
|
||||
<div><b>{{ __('Km la intrare:') }}</b> {{ $wo->mileage_in ? number_format($wo->mileage_in, 0, '.', ' ') : '—' }}</div>
|
||||
@if ($wo->mileage_out)
|
||||
<div><b>{{ __('Km la ieșire:') }}</b> {{ number_format($wo->mileage_out, 0, '.', ' ') }}</div>
|
||||
@endif
|
||||
@@ -184,18 +184,18 @@
|
||||
<div style="margin-bottom: 8px;">{{ $wo->complaint }}</div>
|
||||
@endif
|
||||
@if ($wo->diagnosis)
|
||||
<h3>Diagnostic</h3>
|
||||
<h3>{{ __('Diagnostic') }}</h3>
|
||||
<div>{{ $wo->diagnosis }}</div>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($wo->works->isNotEmpty())
|
||||
<h3 style="font-size: 12px; margin: 12px 0 4px; text-transform: uppercase; color: {{ $themeColor }};">Manopere</h3>
|
||||
<h3 style="font-size: 12px; margin: 12px 0 4px; text-transform: uppercase; color: {{ $themeColor }};">{{ __('Manopere') }}</h3>
|
||||
<table class="items">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50%;">Denumire</th>
|
||||
<th style="width: 50%;">{{ __('Denumire') }}</th>
|
||||
<th class="r" style="width: 12%;">{{ __('Ore') }}</th>
|
||||
<th class="r" style="width: 18%;">{{ __('Preț/h') }}</th>
|
||||
<th class="r" style="width: 20%;">{{ __('Total') }}</th>
|
||||
@@ -213,7 +213,7 @@
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3" class="r">Subtotal manopere:</td>
|
||||
<td colspan="3" class="r">{{ __('Subtotal manopere:') }}</td>
|
||||
<td class="r">{{ number_format((float) $worksTotal, 2, '.', ' ') }} {{ $currency }}</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
@@ -221,13 +221,13 @@
|
||||
@endif
|
||||
|
||||
@if ($wo->parts->isNotEmpty())
|
||||
<h3 style="font-size: 12px; margin: 12px 0 4px; text-transform: uppercase; color: {{ $themeColor }};">Piese</h3>
|
||||
<h3 style="font-size: 12px; margin: 12px 0 4px; text-transform: uppercase; color: {{ $themeColor }};">{{ __('Piese') }}</h3>
|
||||
<table class="items">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 40%;">Denumire</th>
|
||||
<th style="width: 40%;">{{ __('Denumire') }}</th>
|
||||
<th style="width: 18%;">{{ __('Cod') }}</th>
|
||||
<th class="r" style="width: 10%;">Cant.</th>
|
||||
<th class="r" style="width: 10%;">{{ __('Cant.') }}</th>
|
||||
<th class="r" style="width: 14%;">{{ __('Preț') }}</th>
|
||||
<th class="r" style="width: 18%;">{{ __('Total') }}</th>
|
||||
</tr>
|
||||
@@ -245,7 +245,7 @@
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="4" class="r">Subtotal piese:</td>
|
||||
<td colspan="4" class="r">{{ __('Subtotal piese:') }}</td>
|
||||
<td class="r">{{ number_format((float) $partsTotal, 2, '.', ' ') }} {{ $currency }}</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<p class="muted" style="margin-bottom:16px;">{{ __('portal.shop.vin_intro') }}</p>
|
||||
|
||||
<form method="GET" action="/shop/vin" style="display:flex;gap:8px;flex-wrap:wrap;">
|
||||
<input type="text" name="vin" value="{{ $vin }}" maxlength="17" placeholder="ex: WVWZZZ1JZXW000001"
|
||||
<input type="text" name="vin" value="{{ $vin }}" maxlength="17" placeholder="{{ __('ex: WVWZZZ1JZXW000001') }}"
|
||||
style="flex:1;min-width:240px;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-family:monospace;text-transform:uppercase;">
|
||||
<button class="btn" type="submit">{{ __('portal.shop.vin_decode') }}</button>
|
||||
</form>
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
<div class="box">
|
||||
<h1>{{ __('🏦 Instrucțiuni transfer bancar') }}</h1>
|
||||
|
||||
<div class="row"><span>Beneficiar:</span> <b>{{ $bank['beneficiary'] ?? '—' }}</b></div>
|
||||
<div class="row"><span>IBAN:</span> <code onclick="navigator.clipboard.writeText(this.textContent)">{{ $bank['iban'] ?? '—' }}</code></div>
|
||||
<div class="row"><span>BIC / SWIFT:</span> <code>{{ $bank['bic'] ?? '—' }}</code></div>
|
||||
<div class="row"><span>Banca:</span> {{ $bank['bank_name'] ?? '—' }}</div>
|
||||
<div class="row"><span>{{ __('Beneficiar:') }}</span> <b>{{ $bank['beneficiary'] ?? '—' }}</b></div>
|
||||
<div class="row"><span>{{ __('IBAN:') }}</span> <code onclick="navigator.clipboard.writeText(this.textContent)">{{ $bank['iban'] ?? '—' }}</code></div>
|
||||
<div class="row"><span>{{ __('BIC / SWIFT:') }}</span> <code>{{ $bank['bic'] ?? '—' }}</code></div>
|
||||
<div class="row"><span>{{ __('Banca:') }}</span> {{ $bank['bank_name'] ?? '—' }}</div>
|
||||
<div class="row"><span>{{ __('Sumă:') }}</span> <b>{{ number_format($sub->amount, 2) }} {{ $sub->currency }}</b></div>
|
||||
|
||||
<div class="ref-box">
|
||||
@@ -40,7 +40,7 @@
|
||||
<ul style="margin: 8px 0 0 20px;">
|
||||
<li>{{ __('Plata apare în 1-3 zile lucrătoare') }}</li>
|
||||
<li>{{ __('Operatorul confirmă manual factura ca plătită') }}</li>
|
||||
<li>Abonamentul se extinde automat</li>
|
||||
<li>{{ __('Abonamentul se extinde automat') }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<a href="/app" class="nav-back">{{ __('← Înapoi la AutoCRM') }}</a>
|
||||
<h1>Facturi & abonament</h1>
|
||||
<h1>{{ __('Facturi & abonament') }}</h1>
|
||||
<p class="sub">{{ $tenant->display_name ?? $tenant->name }} · {{ $tenant->slug }}.service.mir.md</p>
|
||||
|
||||
@if ($invoices->isEmpty())
|
||||
@@ -116,8 +116,8 @@
|
||||
<div class="method">
|
||||
<div class="icon">💳</div>
|
||||
<div>
|
||||
<div class="label">Card bancar</div>
|
||||
<div class="desc">Visa, Mastercard prin Stripe</div>
|
||||
<div class="label">{{ __('Card bancar') }}</div>
|
||||
<div class="desc">{{ __('Visa, Mastercard prin Stripe') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
@@ -132,8 +132,8 @@
|
||||
<div class="method">
|
||||
<div class="icon">🅿️</div>
|
||||
<div>
|
||||
<div class="label">PayPal</div>
|
||||
<div class="desc">Cont PayPal sau card prin PayPal</div>
|
||||
<div class="label">{{ __('PayPal') }}</div>
|
||||
<div class="desc">{{ __('Cont PayPal sau card prin PayPal') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
@@ -148,8 +148,8 @@
|
||||
<div class="method">
|
||||
<div class="icon">🇲🇩</div>
|
||||
<div>
|
||||
<div class="label">Paynet</div>
|
||||
<div class="desc">Card MAIB / MICB / Victoriabank, MD Cash, e-money</div>
|
||||
<div class="label">{{ __('Paynet') }}</div>
|
||||
<div class="desc">{{ __('Card MAIB / MICB / Victoriabank, MD Cash, e-money') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
@@ -164,7 +164,7 @@
|
||||
<div class="method">
|
||||
<div class="icon">🏦</div>
|
||||
<div>
|
||||
<div class="label">Transfer bancar</div>
|
||||
<div class="label">{{ __('Transfer bancar') }}</div>
|
||||
<div class="desc">{{ __('Plătește direct din bancă (1-3 zile)') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<p style="color:#6b7280;font-size:14px;">{{ __('Factură:') }} <b>{{ $sub->invoice_number ?? '#' . $sub->id }}</b> · {{ number_format($sub->amount, 2) }} {{ $sub->currency }}</p>
|
||||
|
||||
<div class="note">
|
||||
<b>Mod stub:</b><br>
|
||||
<b>{{ __('Mod stub:') }}</b><br>
|
||||
{{ $note }}<br><br>
|
||||
În prod, aici redirectează la pagina {{ $gateway }} Checkout cu sumele și metadatele facturii. La success, webhook-ul marchează automat factura ca plătită.
|
||||
</div>
|
||||
|
||||
@@ -60,14 +60,14 @@
|
||||
<p>Autoservice profesional{{ $city ? ' — ' . $city : '' }}. Diagnostic, reparații, piese, ITP.</p>
|
||||
@if (! empty($shopEnabled))
|
||||
<a href="/shop" style="display:inline-block;margin-top:20px;background:#fff;color:{{ $themeColor }};padding:12px 28px;border-radius:8px;font-weight:700;text-decoration:none;">
|
||||
🛒 Magazin piese online
|
||||
{{ __('🛒 Magazin piese online') }}
|
||||
</a>
|
||||
@endif
|
||||
</header>
|
||||
|
||||
@if (! empty($services))
|
||||
<section class="section">
|
||||
<h2>Servicii oferite</h2>
|
||||
<h2>{{ __('Servicii oferite') }}</h2>
|
||||
<div class="services-grid">
|
||||
@foreach ($services as $s)
|
||||
<div class="service-card">
|
||||
@@ -84,12 +84,12 @@
|
||||
<div class="info-block">
|
||||
<h3>{{ __('📍 Locație & contact') }}</h3>
|
||||
@if ($city) <p><b>{{ __('Oraș:') }}</b> {{ $city }}</p> @endif
|
||||
@if ($phone) <p><b>Telefon:</b> <a href="tel:{{ $phone }}" style="color:inherit;">{{ $phone }}</a></p> @endif
|
||||
@if ($email) <p><b>Email:</b> <a href="mailto:{{ $email }}" style="color:inherit;">{{ $email }}</a></p> @endif
|
||||
@if ($phone) <p><b>{{ __('Telefon:') }}</b> <a href="tel:{{ $phone }}" style="color:inherit;">{{ $phone }}</a></p> @endif
|
||||
@if ($email) <p><b>{{ __('Email:') }}</b> <a href="mailto:{{ $email }}" style="color:inherit;">{{ $email }}</a></p> @endif
|
||||
</div>
|
||||
<div class="info-block">
|
||||
<h3>🕒 Program de lucru</h3>
|
||||
<p>Luni – Vineri: 08:00 – 18:00</p>
|
||||
<h3>{{ __('🕒 Program de lucru') }}</h3>
|
||||
<p>{{ __('Luni – Vineri: 08:00 – 18:00') }}</p>
|
||||
<p>{{ __('Sâmbătă: 09:00 – 14:00') }}</p>
|
||||
<p>{{ __('Duminică: închis') }}</p>
|
||||
</div>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<h1>{{ __('Plată reușită!') }}</h1>
|
||||
<p style="color:#6b7280;">Factura {{ $sub->invoice_number ?? '#' . $sub->id }} a fost achitată.</p>
|
||||
<p style="color:#6b7280;font-size:13px;margin-top:8px;">{{ __('Abonamentul tău a fost extins.') }}</p>
|
||||
<a href="/app" class="btn">→ Mergi la AutoCRM</a>
|
||||
<a href="/app" class="btn">{{ __('→ Mergi la AutoCRM') }}</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="card">
|
||||
<h1>⏰ Abonament expirat</h1>
|
||||
<p>Abonamentul pentru <b>{{ $company->name }}</b> a expirat.</p>
|
||||
<h1>{{ __('⏰ Abonament expirat') }}</h1>
|
||||
<p>{{ __('Abonamentul pentru') }} <b>{{ $company->name }}</b> {{ __('a expirat.') }}</p>
|
||||
<p>{{ __('Pentru a continua să folosiți aplicația, vă rugăm să achitați factura.') }}</p>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="card">
|
||||
<h1>⛔ Cont suspendat</h1>
|
||||
<p>Contul <b>{{ $company->name }}</b> a fost suspendat.</p>
|
||||
<h1>{{ __('⛔ Cont suspendat') }}</h1>
|
||||
<p>{{ __('Contul') }} <b>{{ $company->name }}</b> {{ __('a fost suspendat.') }}</p>
|
||||
<p>{{ __('Pentru detalii, contactați administratorul platformei.') }}</p>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -28,21 +28,21 @@
|
||||
href="{{ url('/dashboard') }}"
|
||||
class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] border-[#19140035] hover:border-[#1915014a] border text-[#1b1b18] dark:border-[#3E3E3A] dark:hover:border-[#62605b] rounded-sm text-sm leading-normal"
|
||||
>
|
||||
Dashboard
|
||||
{{ __('Dashboard') }}
|
||||
</a>
|
||||
@else
|
||||
<a
|
||||
href="{{ route('login') }}"
|
||||
class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] text-[#1b1b18] border border-transparent hover:border-[#19140035] dark:hover:border-[#3E3E3A] rounded-sm text-sm leading-normal"
|
||||
>
|
||||
Log in
|
||||
{{ __('Log in') }}
|
||||
</a>
|
||||
|
||||
@if (Route::has('register'))
|
||||
<a
|
||||
href="{{ route('register') }}"
|
||||
class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] border-[#19140035] hover:border-[#1915014a] border text-[#1b1b18] dark:border-[#3E3E3A] dark:hover:border-[#62605b] rounded-sm text-sm leading-normal">
|
||||
Register
|
||||
{{ __('Register') }}
|
||||
</a>
|
||||
@endif
|
||||
@endauth
|
||||
@@ -52,8 +52,8 @@
|
||||
<div class="flex items-center justify-center w-full transition-opacity opacity-100 duration-750 lg:grow starting:opacity-0">
|
||||
<main class="flex max-w-[335px] w-full flex-col-reverse lg:max-w-4xl lg:flex-row">
|
||||
<div class="text-[13px] leading-[20px] flex-1 p-6 pb-12 lg:p-20 bg-white dark:bg-[#161615] dark:text-[#EDEDEC] shadow-[inset_0px_0px_0px_1px_rgba(26,26,0,0.16)] dark:shadow-[inset_0px_0px_0px_1px_#fffaed2d] rounded-bl-lg rounded-br-lg lg:rounded-tl-lg lg:rounded-br-none">
|
||||
<h1 class="mb-1 font-medium">Let's get started</h1>
|
||||
<p class="mb-2 text-[#706f6c] dark:text-[#A1A09A]">Laravel has an incredibly rich ecosystem. <br>We suggest starting with the following.</p>
|
||||
<h1 class="mb-1 font-medium">{{ __('Let\'s get started') }}</h1>
|
||||
<p class="mb-2 text-[#706f6c] dark:text-[#A1A09A]">{{ __('Laravel has an incredibly rich ecosystem.') }} <br>{{ __('We suggest starting with the following.') }}</p>
|
||||
<ul class="flex flex-col mb-4 lg:mb-6">
|
||||
<li class="flex items-center gap-4 py-2 relative before:border-l before:border-[#e3e3e0] dark:before:border-[#3E3E3A] before:top-1/2 before:bottom-0 before:left-[0.4rem] before:absolute">
|
||||
<span class="relative py-1 bg-white dark:bg-[#161615]">
|
||||
@@ -62,9 +62,9 @@
|
||||
</span>
|
||||
</span>
|
||||
<span>
|
||||
Read the
|
||||
{{ __('Read the') }}
|
||||
<a href="https://laravel.com/docs" target="_blank" class="inline-flex items-center space-x-1 font-medium underline underline-offset-4 text-[#f53003] dark:text-[#FF4433] ml-1">
|
||||
<span>Documentation</span>
|
||||
<span>{{ __('Documentation') }}</span>
|
||||
<svg
|
||||
width="10"
|
||||
height="11"
|
||||
@@ -89,9 +89,9 @@
|
||||
</span>
|
||||
</span>
|
||||
<span>
|
||||
Watch video tutorials at
|
||||
{{ __('Watch video tutorials at') }}
|
||||
<a href="https://laracasts.com" target="_blank" class="inline-flex items-center space-x-1 font-medium underline underline-offset-4 text-[#f53003] dark:text-[#FF4433] ml-1">
|
||||
<span>Laracasts</span>
|
||||
<span>{{ __('Laracasts') }}</span>
|
||||
<svg
|
||||
width="10"
|
||||
height="11"
|
||||
@@ -113,7 +113,7 @@
|
||||
<ul class="flex gap-3 text-sm leading-normal">
|
||||
<li>
|
||||
<a href="https://cloud.laravel.com" target="_blank" class="inline-block dark:bg-[#eeeeec] dark:border-[#eeeeec] dark:text-[#1C1C1A] dark:hover:bg-white dark:hover:border-white hover:bg-black hover:border-black px-5 py-1.5 bg-[#1b1b18] rounded-sm border border-black text-white text-sm leading-normal">
|
||||
Deploy now
|
||||
{{ __('Deploy now') }}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
Reference in New Issue
Block a user