diff --git a/hesabixUI/hesabix_ui/lib/l10n/app_en.arb b/hesabixUI/hesabix_ui/lib/l10n/app_en.arb index 1b25974..476f1c2 100644 --- a/hesabixUI/hesabix_ui/lib/l10n/app_en.arb +++ b/hesabixUI/hesabix_ui/lib/l10n/app_en.arb @@ -491,6 +491,37 @@ "peopleList": "People List", "receipts": "Receipts", "payments": "Payments", + "productsAndServices": "Products and Services", + "products": "Products", + "services": "Services", + "priceLists": "Price Lists", + "categories": "Categories", + "productAttributes": "Product Attributes", + "banking": "Banking", + "accounts": "Accounts", + "pettyCash": "Petty Cash", + "cashBox": "Cash Box", + "wallet": "Wallet", + "checks": "Checks", + "transfers": "Transfers", + "accounting": "Accounting", + "invoice": "Invoice", + "expenseAndIncome": "Expense and Income", + "accountingMenu": "Accounting", + "documents": "Documents", + "chartOfAccounts": "Chart of Accounts", + "openingBalance": "Opening Balance", + "yearEndClosing": "Year End Closing", + "reports": "Reports", + "accountingSettings": "Settings", + "servicesAndPlugins": "Services and Plugins", + "warehouseManagement": "Warehouse Management", + "warehouses": "Warehouses", + "shipments": "Shipments", + "inquiries": "Inquiries", + "storageSpace": "Storage Space", + "taxpayers": "Taxpayers", + "others": "Others", "practicalTools": "Practical Tools", "usersAndPermissions": "Users and Permissions", "businessUsers": "Business Users", diff --git a/hesabixUI/hesabix_ui/lib/l10n/app_fa.arb b/hesabixUI/hesabix_ui/lib/l10n/app_fa.arb index 54acfe3..7e8f839 100644 --- a/hesabixUI/hesabix_ui/lib/l10n/app_fa.arb +++ b/hesabixUI/hesabix_ui/lib/l10n/app_fa.arb @@ -490,6 +490,37 @@ "peopleList": "لیست اشخاص", "receipts": "دریافت‌ها", "payments": "پرداخت‌ها", + "productsAndServices": "کالا و خدمات", + "products": "کالاها", + "services": "خدمات", + "priceLists": "لیست‌های قیمت", + "categories": "دسته‌بندی‌ها", + "productAttributes": "ویژگی‌های کالا", + "banking": "بانکداری", + "accounts": "حساب‌ها", + "pettyCash": "تنخواه", + "cashBox": "صندوق", + "wallet": "کیف پول", + "checks": "چک‌ها", + "transfers": "انتقالات", + "accounting": "حسابداری", + "invoice": "فاکتور", + "expenseAndIncome": "هزینه و درآمد", + "accountingMenu": "حسابداری", + "documents": "اسناد", + "chartOfAccounts": "جدول حساب", + "openingBalance": "تراز افتتاحیه", + "yearEndClosing": "بستن سال مالی", + "reports": "گزارشات", + "accountingSettings": "تنظیمات", + "servicesAndPlugins": "سرویس‌ها و افزونه‌ها", + "warehouseManagement": "انبارداری", + "warehouses": "انبارها", + "shipments": "حواله‌ها", + "inquiries": "استعلامات", + "storageSpace": "فضای ذخیره‌سازی", + "taxpayers": "مودیان مالیاتی", + "others": "سایر", "practicalTools": "ابزارهای کاربردی", "usersAndPermissions": "کاربران و دسترسی‌ها", "businessUsers": "کاربران کسب و کار", diff --git a/hesabixUI/hesabix_ui/lib/l10n/app_localizations.dart b/hesabixUI/hesabix_ui/lib/l10n/app_localizations.dart index 7af42c0..87be850 100644 --- a/hesabixUI/hesabix_ui/lib/l10n/app_localizations.dart +++ b/hesabixUI/hesabix_ui/lib/l10n/app_localizations.dart @@ -2756,6 +2756,180 @@ abstract class AppLocalizations { /// **'Payments'** String get payments; + /// No description provided for @productsAndServices. + /// + /// In en, this message translates to: + /// **'Products and Services'** + String get productsAndServices; + + /// No description provided for @products. + /// + /// In en, this message translates to: + /// **'Products and Services'** + String get products; + + /// No description provided for @services. + /// + /// In en, this message translates to: + /// **'Services'** + String get services; + + /// No description provided for @priceLists. + /// + /// In en, this message translates to: + /// **'Price Lists'** + String get priceLists; + + /// No description provided for @categories. + /// + /// In en, this message translates to: + /// **'Categories'** + String get categories; + + /// No description provided for @productAttributes. + /// + /// In en, this message translates to: + /// **'Product Attributes'** + String get productAttributes; + + /// No description provided for @banking. + /// + /// In en, this message translates to: + /// **'Banking'** + String get banking; + + /// No description provided for @accounts. + /// + /// In en, this message translates to: + /// **'Accounts'** + String get accounts; + + /// No description provided for @pettyCash. + /// + /// In en, this message translates to: + /// **'Petty Cash'** + String get pettyCash; + + /// No description provided for @cashBox. + /// + /// In en, this message translates to: + /// **'Cash Box'** + String get cashBox; + + /// No description provided for @wallet. + /// + /// In en, this message translates to: + /// **'Wallet'** + String get wallet; + + /// No description provided for @checks. + /// + /// In en, this message translates to: + /// **'Checks'** + String get checks; + + /// No description provided for @transfers. + /// + /// In en, this message translates to: + /// **'Transfers'** + String get transfers; + + /// No description provided for @invoice. + /// + /// In en, this message translates to: + /// **'Invoice'** + String get invoice; + + /// No description provided for @expenseAndIncome. + /// + /// In en, this message translates to: + /// **'Expense and Income'** + String get expenseAndIncome; + + /// No description provided for @accountingMenu. + /// + /// In en, this message translates to: + /// **'Accounting'** + String get accountingMenu; + + /// No description provided for @documents. + /// + /// In en, this message translates to: + /// **'Documents'** + String get documents; + + /// No description provided for @chartOfAccounts. + /// + /// In en, this message translates to: + /// **'Chart of Accounts'** + String get chartOfAccounts; + + /// No description provided for @openingBalance. + /// + /// In en, this message translates to: + /// **'Opening Balance'** + String get openingBalance; + + /// No description provided for @yearEndClosing. + /// + /// In en, this message translates to: + /// **'Year End Closing'** + String get yearEndClosing; + + /// No description provided for @accountingSettings. + /// + /// In en, this message translates to: + /// **'Settings'** + String get accountingSettings; + + /// No description provided for @servicesAndPlugins. + /// + /// In en, this message translates to: + /// **'Services and Plugins'** + String get servicesAndPlugins; + + /// No description provided for @warehouseManagement. + /// + /// In en, this message translates to: + /// **'Warehouse Management'** + String get warehouseManagement; + + /// No description provided for @warehouses. + /// + /// In en, this message translates to: + /// **'Warehouse Management'** + String get warehouses; + + /// No description provided for @shipments. + /// + /// In en, this message translates to: + /// **'Shipments'** + String get shipments; + + /// No description provided for @inquiries. + /// + /// In en, this message translates to: + /// **'Inquiries'** + String get inquiries; + + /// No description provided for @storageSpace. + /// + /// In en, this message translates to: + /// **'Storage Space'** + String get storageSpace; + + /// No description provided for @taxpayers. + /// + /// In en, this message translates to: + /// **'Taxpayers'** + String get taxpayers; + + /// No description provided for @others. + /// + /// In en, this message translates to: + /// **'Others'** + String get others; + /// No description provided for @practicalTools. /// /// In en, this message translates to: @@ -3224,12 +3398,6 @@ abstract class AppLocalizations { /// **'Manage Payment Drafts'** String get managePaymentDrafts; - /// No description provided for @products. - /// - /// In en, this message translates to: - /// **'Products and Services'** - String get products; - /// No description provided for @addProduct. /// /// In en, this message translates to: @@ -3254,12 +3422,6 @@ abstract class AppLocalizations { /// **'Delete Products and Services'** String get deleteProducts; - /// No description provided for @priceLists. - /// - /// In en, this message translates to: - /// **'Price Lists'** - String get priceLists; - /// No description provided for @addPriceList. /// /// In en, this message translates to: @@ -3284,12 +3446,6 @@ abstract class AppLocalizations { /// **'Delete Price Lists'** String get deletePriceLists; - /// No description provided for @categories. - /// - /// In en, this message translates to: - /// **'Categories'** - String get categories; - /// No description provided for @addCategory. /// /// In en, this message translates to: @@ -3446,12 +3602,6 @@ abstract class AppLocalizations { /// **'Error changing password'** String get passwordChangeError; - /// No description provided for @banking. - /// - /// In en, this message translates to: - /// **'Banking'** - String get banking; - /// No description provided for @bankAccounts. /// /// In en, this message translates to: @@ -3464,30 +3614,6 @@ abstract class AppLocalizations { /// **'Cash'** String get cash; - /// No description provided for @pettyCash. - /// - /// In en, this message translates to: - /// **'Petty Cash'** - String get pettyCash; - - /// No description provided for @checks. - /// - /// In en, this message translates to: - /// **'Checks'** - String get checks; - - /// No description provided for @wallet. - /// - /// In en, this message translates to: - /// **'Wallet'** - String get wallet; - - /// No description provided for @transfers. - /// - /// In en, this message translates to: - /// **'Transfers'** - String get transfers; - /// No description provided for @invoices. /// /// In en, this message translates to: @@ -3506,42 +3632,18 @@ abstract class AppLocalizations { /// **'Accounting Documents'** String get accountingDocuments; - /// No description provided for @chartOfAccounts. - /// - /// In en, this message translates to: - /// **'Chart of Accounts'** - String get chartOfAccounts; - - /// No description provided for @openingBalance. - /// - /// In en, this message translates to: - /// **'Opening Balance'** - String get openingBalance; - /// No description provided for @warehouse. /// /// In en, this message translates to: /// **'Warehouse'** String get warehouse; - /// No description provided for @warehouses. - /// - /// In en, this message translates to: - /// **'Warehouse Management'** - String get warehouses; - /// No description provided for @warehouseTransfers. /// /// In en, this message translates to: /// **'Warehouse Transfers'** String get warehouseTransfers; - /// No description provided for @productAttributes. - /// - /// In en, this message translates to: - /// **'Product Attributes'** - String get productAttributes; - /// No description provided for @addAttribute. /// /// In en, this message translates to: @@ -3914,12 +4016,6 @@ abstract class AppLocalizations { /// **'Event History'** String get eventHistory; - /// No description provided for @storageSpace. - /// - /// In en, this message translates to: - /// **'Storage Space'** - String get storageSpace; - /// No description provided for @viewStorage. /// /// In en, this message translates to: diff --git a/hesabixUI/hesabix_ui/lib/l10n/app_localizations_en.dart b/hesabixUI/hesabix_ui/lib/l10n/app_localizations_en.dart index ab9da6f..6749992 100644 --- a/hesabixUI/hesabix_ui/lib/l10n/app_localizations_en.dart +++ b/hesabixUI/hesabix_ui/lib/l10n/app_localizations_en.dart @@ -1378,6 +1378,93 @@ class AppLocalizationsEn extends AppLocalizations { @override String get payments => 'Payments'; + @override + String get productsAndServices => 'Products and Services'; + + @override + String get products => 'Products and Services'; + + @override + String get services => 'Services'; + + @override + String get priceLists => 'Price Lists'; + + @override + String get categories => 'Categories'; + + @override + String get productAttributes => 'Product Attributes'; + + @override + String get banking => 'Banking'; + + @override + String get accounts => 'Accounts'; + + @override + String get pettyCash => 'Petty Cash'; + + @override + String get cashBox => 'Cash Box'; + + @override + String get wallet => 'Wallet'; + + @override + String get checks => 'Checks'; + + @override + String get transfers => 'Transfers'; + + @override + String get invoice => 'Invoice'; + + @override + String get expenseAndIncome => 'Expense and Income'; + + @override + String get accountingMenu => 'Accounting'; + + @override + String get documents => 'Documents'; + + @override + String get chartOfAccounts => 'Chart of Accounts'; + + @override + String get openingBalance => 'Opening Balance'; + + @override + String get yearEndClosing => 'Year End Closing'; + + @override + String get accountingSettings => 'Settings'; + + @override + String get servicesAndPlugins => 'Services and Plugins'; + + @override + String get warehouseManagement => 'Warehouse Management'; + + @override + String get warehouses => 'Warehouse Management'; + + @override + String get shipments => 'Shipments'; + + @override + String get inquiries => 'Inquiries'; + + @override + String get storageSpace => 'Storage Space'; + + @override + String get taxpayers => 'Taxpayers'; + + @override + String get others => 'Others'; + @override String get practicalTools => 'Practical Tools'; @@ -1615,9 +1702,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get managePaymentDrafts => 'Manage Payment Drafts'; - @override - String get products => 'Products and Services'; - @override String get addProduct => 'Add Product or Service'; @@ -1630,9 +1714,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get deleteProducts => 'Delete Products and Services'; - @override - String get priceLists => 'Price Lists'; - @override String get addPriceList => 'Add Price List'; @@ -1645,9 +1726,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get deletePriceLists => 'Delete Price Lists'; - @override - String get categories => 'Categories'; - @override String get addCategory => 'Add Category'; @@ -1727,27 +1805,12 @@ class AppLocalizationsEn extends AppLocalizations { @override String get passwordChangeError => 'Error changing password'; - @override - String get banking => 'Banking'; - @override String get bankAccounts => 'Bank Accounts'; @override String get cash => 'Cash'; - @override - String get pettyCash => 'Petty Cash'; - - @override - String get checks => 'Checks'; - - @override - String get wallet => 'Wallet'; - - @override - String get transfers => 'Transfers'; - @override String get invoices => 'Invoices'; @@ -1757,24 +1820,12 @@ class AppLocalizationsEn extends AppLocalizations { @override String get accountingDocuments => 'Accounting Documents'; - @override - String get chartOfAccounts => 'Chart of Accounts'; - - @override - String get openingBalance => 'Opening Balance'; - @override String get warehouse => 'Warehouse'; - @override - String get warehouses => 'Warehouse Management'; - @override String get warehouseTransfers => 'Warehouse Transfers'; - @override - String get productAttributes => 'Product Attributes'; - @override String get addAttribute => 'Add Attribute'; @@ -1963,9 +2014,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get eventHistory => 'Event History'; - @override - String get storageSpace => 'Storage Space'; - @override String get viewStorage => 'View Storage'; diff --git a/hesabixUI/hesabix_ui/lib/l10n/app_localizations_fa.dart b/hesabixUI/hesabix_ui/lib/l10n/app_localizations_fa.dart index 1795420..30d3187 100644 --- a/hesabixUI/hesabix_ui/lib/l10n/app_localizations_fa.dart +++ b/hesabixUI/hesabix_ui/lib/l10n/app_localizations_fa.dart @@ -1368,6 +1368,93 @@ class AppLocalizationsFa extends AppLocalizations { @override String get payments => 'پرداخت‌ها'; + @override + String get productsAndServices => 'کالا و خدمات'; + + @override + String get products => 'کالا‌ها و خدمات'; + + @override + String get services => 'خدمات'; + + @override + String get priceLists => 'لیست‌های قیمت'; + + @override + String get categories => 'دسته‌بندی‌ها'; + + @override + String get productAttributes => 'ویژگی‌های کالا و خدمات'; + + @override + String get banking => 'بانکداری'; + + @override + String get accounts => 'حساب‌ها'; + + @override + String get pettyCash => 'تنخواه گردان'; + + @override + String get cashBox => 'صندوق'; + + @override + String get wallet => 'کیف پول'; + + @override + String get checks => 'چک'; + + @override + String get transfers => 'انتقال'; + + @override + String get invoice => 'فاکتور'; + + @override + String get expenseAndIncome => 'هزینه و درآمد'; + + @override + String get accountingMenu => 'حسابداری'; + + @override + String get documents => 'اسناد'; + + @override + String get chartOfAccounts => 'جدول حساب‌ها'; + + @override + String get openingBalance => 'تراز افتتاحیه'; + + @override + String get yearEndClosing => 'بستن سال مالی'; + + @override + String get accountingSettings => 'تنظیمات'; + + @override + String get servicesAndPlugins => 'سرویس‌ها و افزونه‌ها'; + + @override + String get warehouseManagement => 'انبارداری'; + + @override + String get warehouses => 'مدیریت انبارها'; + + @override + String get shipments => 'حواله‌ها'; + + @override + String get inquiries => 'استعلامات'; + + @override + String get storageSpace => 'فضای ذخیره‌سازی'; + + @override + String get taxpayers => 'مودیان مالیاتی'; + + @override + String get others => 'سایر'; + @override String get practicalTools => 'ابزارهای کاربردی'; @@ -1606,9 +1693,6 @@ class AppLocalizationsFa extends AppLocalizations { @override String get managePaymentDrafts => 'مدیریت پیش‌نویس‌های پرداخت'; - @override - String get products => 'کالا‌ها و خدمات'; - @override String get addProduct => 'افزودن کالا یا خدمت'; @@ -1621,9 +1705,6 @@ class AppLocalizationsFa extends AppLocalizations { @override String get deleteProducts => 'حذف کالاها و خدمات'; - @override - String get priceLists => 'لیست‌های قیمت'; - @override String get addPriceList => 'افزودن لیست قیمت'; @@ -1636,9 +1717,6 @@ class AppLocalizationsFa extends AppLocalizations { @override String get deletePriceLists => 'حذف لیست‌های قیمت'; - @override - String get categories => 'دسته‌بندی‌ها'; - @override String get addCategory => 'افزودن دسته‌بندی'; @@ -1718,27 +1796,12 @@ class AppLocalizationsFa extends AppLocalizations { @override String get passwordChangeError => 'خطا در تغییر کلمه عبور'; - @override - String get banking => 'بانکداری'; - @override String get bankAccounts => 'حساب‌های بانکی'; @override String get cash => 'صندوق'; - @override - String get pettyCash => 'تنخواه گردان'; - - @override - String get checks => 'چک'; - - @override - String get wallet => 'کیف پول'; - - @override - String get transfers => 'انتقال'; - @override String get invoices => 'فاکتورها'; @@ -1748,24 +1811,12 @@ class AppLocalizationsFa extends AppLocalizations { @override String get accountingDocuments => 'اسناد حسابداری'; - @override - String get chartOfAccounts => 'جدول حساب‌ها'; - - @override - String get openingBalance => 'تراز افتتاحیه'; - @override String get warehouse => 'انبارداری'; - @override - String get warehouses => 'مدیریت انبارها'; - @override String get warehouseTransfers => 'صدور حواله'; - @override - String get productAttributes => 'ویژگی‌های کالا و خدمات'; - @override String get addAttribute => 'افزودن ویژگی'; @@ -1952,9 +2003,6 @@ class AppLocalizationsFa extends AppLocalizations { @override String get eventHistory => 'تاریخچه رویدادها'; - @override - String get storageSpace => 'فضای ذخیره‌سازی'; - @override String get viewStorage => 'مشاهده فضای ذخیره‌سازی'; diff --git a/hesabixUI/hesabix_ui/lib/pages/business/business_shell.dart b/hesabixUI/hesabix_ui/lib/pages/business/business_shell.dart index ff7c8f0..9b1128c 100644 --- a/hesabixUI/hesabix_ui/lib/pages/business/business_shell.dart +++ b/hesabixUI/hesabix_ui/lib/pages/business/business_shell.dart @@ -34,6 +34,10 @@ class _BusinessShellState extends State { int _hoverIndex = -1; bool _isBasicToolsExpanded = false; bool _isPeopleExpanded = false; + bool _isProductsAndServicesExpanded = false; + bool _isBankingExpanded = false; + bool _isAccountingMenuExpanded = false; + bool _isWarehouseManagementExpanded = false; @override void initState() { @@ -113,6 +117,247 @@ class _BusinessShellState extends State { ), ], ), + _MenuItem( + label: t.productsAndServices, + icon: Icons.inventory_2, + selectedIcon: Icons.inventory_2, + path: null, // برای منوی بازشونده + type: _MenuItemType.expandable, + children: [ + _MenuItem( + label: t.products, + icon: Icons.shopping_cart, + selectedIcon: Icons.shopping_cart, + path: '/business/${widget.businessId}/products', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.priceLists, + icon: Icons.list_alt, + selectedIcon: Icons.list_alt, + path: '/business/${widget.businessId}/price-lists', + type: _MenuItemType.simple, + hasAddButton: false, + ), + _MenuItem( + label: t.categories, + icon: Icons.category, + selectedIcon: Icons.category, + path: '/business/${widget.businessId}/categories', + type: _MenuItemType.simple, + hasAddButton: false, + ), + _MenuItem( + label: t.productAttributes, + icon: Icons.tune, + selectedIcon: Icons.tune, + path: '/business/${widget.businessId}/product-attributes', + type: _MenuItemType.simple, + hasAddButton: false, + ), + ], + ), + _MenuItem( + label: t.banking, + icon: Icons.account_balance, + selectedIcon: Icons.account_balance, + path: null, // برای منوی بازشونده + type: _MenuItemType.expandable, + children: [ + _MenuItem( + label: t.accounts, + icon: Icons.account_balance_wallet, + selectedIcon: Icons.account_balance_wallet, + path: '/business/${widget.businessId}/accounts', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.pettyCash, + icon: Icons.money, + selectedIcon: Icons.money, + path: '/business/${widget.businessId}/petty-cash', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.cashBox, + icon: Icons.savings, + selectedIcon: Icons.savings, + path: '/business/${widget.businessId}/cash-box', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.wallet, + icon: Icons.wallet, + selectedIcon: Icons.wallet, + path: '/business/${widget.businessId}/wallet', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.checks, + icon: Icons.receipt_long, + selectedIcon: Icons.receipt_long, + path: '/business/${widget.businessId}/checks', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.transfers, + icon: Icons.swap_horiz, + selectedIcon: Icons.swap_horiz, + path: '/business/${widget.businessId}/transfers', + type: _MenuItemType.simple, + hasAddButton: true, + ), + ], + ), + _MenuItem( + label: t.accounting, + icon: Icons.calculate, + selectedIcon: Icons.calculate, + path: null, // آیتم جداکننده + type: _MenuItemType.separator, + ), + _MenuItem( + label: t.invoice, + icon: Icons.receipt, + selectedIcon: Icons.receipt, + path: '/business/${widget.businessId}/invoice', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.expenseAndIncome, + icon: Icons.account_balance_wallet, + selectedIcon: Icons.account_balance_wallet, + path: '/business/${widget.businessId}/expense-income', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.accountingMenu, + icon: Icons.calculate, + selectedIcon: Icons.calculate, + path: null, // برای منوی بازشونده + type: _MenuItemType.expandable, + children: [ + _MenuItem( + label: t.documents, + icon: Icons.description, + selectedIcon: Icons.description, + path: '/business/${widget.businessId}/documents', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.chartOfAccounts, + icon: Icons.table_chart, + selectedIcon: Icons.table_chart, + path: '/business/${widget.businessId}/chart-of-accounts', + type: _MenuItemType.simple, + hasAddButton: false, + ), + _MenuItem( + label: t.openingBalance, + icon: Icons.play_arrow, + selectedIcon: Icons.play_arrow, + path: '/business/${widget.businessId}/opening-balance', + type: _MenuItemType.simple, + hasAddButton: false, + ), + _MenuItem( + label: t.yearEndClosing, + icon: Icons.stop, + selectedIcon: Icons.stop, + path: '/business/${widget.businessId}/year-end-closing', + type: _MenuItemType.simple, + hasAddButton: false, + ), + _MenuItem( + label: t.accountingSettings, + icon: Icons.settings, + selectedIcon: Icons.settings, + path: '/business/${widget.businessId}/accounting-settings', + type: _MenuItemType.simple, + hasAddButton: false, + ), + ], + ), + _MenuItem( + label: t.reports, + icon: Icons.assessment, + selectedIcon: Icons.assessment, + path: '/business/${widget.businessId}/reports', + type: _MenuItemType.simple, + hasAddButton: false, + ), + _MenuItem( + label: t.servicesAndPlugins, + icon: Icons.extension, + selectedIcon: Icons.extension, + path: null, // آیتم جداکننده + type: _MenuItemType.separator, + ), + _MenuItem( + label: t.warehouseManagement, + icon: Icons.warehouse, + selectedIcon: Icons.warehouse, + path: null, // برای منوی بازشونده + type: _MenuItemType.expandable, + children: [ + _MenuItem( + label: t.warehouses, + icon: Icons.store, + selectedIcon: Icons.store, + path: '/business/${widget.businessId}/warehouses', + type: _MenuItemType.simple, + hasAddButton: true, + ), + _MenuItem( + label: t.shipments, + icon: Icons.local_shipping, + selectedIcon: Icons.local_shipping, + path: '/business/${widget.businessId}/shipments', + type: _MenuItemType.simple, + hasAddButton: true, + ), + ], + ), + _MenuItem( + label: t.inquiries, + icon: Icons.search, + selectedIcon: Icons.search, + path: '/business/${widget.businessId}/inquiries', + type: _MenuItemType.simple, + hasAddButton: false, + ), + _MenuItem( + label: t.storageSpace, + icon: Icons.storage, + selectedIcon: Icons.storage, + path: '/business/${widget.businessId}/storage-space', + type: _MenuItemType.simple, + hasAddButton: false, + ), + _MenuItem( + label: t.taxpayers, + icon: Icons.account_balance, + selectedIcon: Icons.account_balance, + path: '/business/${widget.businessId}/taxpayers', + type: _MenuItemType.simple, + hasAddButton: false, + ), + _MenuItem( + label: t.others, + icon: Icons.more_horiz, + selectedIcon: Icons.more_horiz, + path: null, // آیتم جداکننده + type: _MenuItemType.separator, + ), _MenuItem( label: t.settings, icon: Icons.settings, @@ -160,7 +405,11 @@ class _BusinessShellState extends State { selectedIndex = i; // تنظیم وضعیت باز بودن منو if (i == 2) _isPeopleExpanded = true; // اشخاص در ایندکس 2 - if (i == 3) _isBasicToolsExpanded = true; // تنظیمات در ایندکس 3 + if (i == 3) _isProductsAndServicesExpanded = true; // کالا و خدمات در ایندکس 3 + if (i == 4) _isBankingExpanded = true; // بانکداری در ایندکس 4 + if (i == 6) _isAccountingMenuExpanded = true; // حسابداری در ایندکس 6 + if (i == 8) _isWarehouseManagementExpanded = true; // انبارداری در ایندکس 8 + if (i == 9) _isBasicToolsExpanded = true; // تنظیمات در ایندکس 9 break; } } @@ -183,6 +432,10 @@ class _BusinessShellState extends State { } else if (item.type == _MenuItemType.expandable) { // تغییر وضعیت باز/بسته بودن منو if (item.label == t.people) _isPeopleExpanded = !_isPeopleExpanded; + if (item.label == t.productsAndServices) _isProductsAndServicesExpanded = !_isProductsAndServicesExpanded; + if (item.label == t.banking) _isBankingExpanded = !_isBankingExpanded; + if (item.label == t.accountingMenu) _isAccountingMenuExpanded = !_isAccountingMenuExpanded; + if (item.label == t.warehouseManagement) _isWarehouseManagementExpanded = !_isWarehouseManagementExpanded; if (item.label == t.settings) _isBasicToolsExpanded = !_isBasicToolsExpanded; setState(() {}); } @@ -217,6 +470,10 @@ class _BusinessShellState extends State { bool isExpanded(_MenuItem item) { if (item.label == t.people) return _isPeopleExpanded; + if (item.label == t.productsAndServices) return _isProductsAndServicesExpanded; + if (item.label == t.banking) return _isBankingExpanded; + if (item.label == t.accountingMenu) return _isAccountingMenuExpanded; + if (item.label == t.warehouseManagement) return _isWarehouseManagementExpanded; if (item.label == t.settings) return _isBasicToolsExpanded; return false; } @@ -348,6 +605,10 @@ class _BusinessShellState extends State { onTap: () { setState(() { if (item.label == t.people) _isPeopleExpanded = !_isPeopleExpanded; + if (item.label == t.productsAndServices) _isProductsAndServicesExpanded = !_isProductsAndServicesExpanded; + if (item.label == t.banking) _isBankingExpanded = !_isBankingExpanded; + if (item.label == t.accountingMenu) _isAccountingMenuExpanded = !_isAccountingMenuExpanded; + if (item.label == t.warehouseManagement) _isWarehouseManagementExpanded = !_isWarehouseManagementExpanded; if (item.label == t.settings) _isBasicToolsExpanded = !_isBasicToolsExpanded; }); }, @@ -433,11 +694,41 @@ class _BusinessShellState extends State { IconButton( icon: const Icon(Icons.add, size: 16), onPressed: () { - // Navigate to add new receipt/payment + // Navigate to add new item if (child.label == t.receipts) { // Navigate to add receipt } else if (child.label == t.payments) { // Navigate to add payment + } else if (child.label == t.products) { + // Navigate to add product + } else if (child.label == t.priceLists) { + // Navigate to add price list + } else if (child.label == t.categories) { + // Navigate to add category + } else if (child.label == t.productAttributes) { + // Navigate to add product attribute + } else if (child.label == t.accounts) { + // Navigate to add account + } else if (child.label == t.pettyCash) { + // Navigate to add petty cash + } else if (child.label == t.cashBox) { + // Navigate to add cash box + } else if (child.label == t.wallet) { + // Navigate to add wallet + } else if (child.label == t.checks) { + // Navigate to add check + } else if (child.label == t.transfers) { + // Navigate to add transfer + } else if (child.label == t.invoice) { + // Navigate to add invoice + } else if (child.label == t.expenseAndIncome) { + // Navigate to add expense/income + } else if (child.label == t.documents) { + // Navigate to add document + } else if (child.label == t.warehouses) { + // Navigate to add warehouse + } else if (child.label == t.shipments) { + // Navigate to add shipment } }, ), @@ -505,6 +796,10 @@ class _BusinessShellState extends State { if (item.type == _MenuItemType.expandable) { setState(() { if (item.label == t.people) _isPeopleExpanded = !_isPeopleExpanded; + if (item.label == t.productsAndServices) _isProductsAndServicesExpanded = !_isProductsAndServicesExpanded; + if (item.label == t.banking) _isBankingExpanded = !_isBankingExpanded; + if (item.label == t.accountingMenu) _isAccountingMenuExpanded = !_isAccountingMenuExpanded; + if (item.label == t.warehouseManagement) _isWarehouseManagementExpanded = !_isWarehouseManagementExpanded; if (item.label == t.settings) _isBasicToolsExpanded = !_isBasicToolsExpanded; }); } else { @@ -628,6 +923,10 @@ class _BusinessShellState extends State { onExpansionChanged: (expanded) { setState(() { if (item.label == t.people) _isPeopleExpanded = expanded; + if (item.label == t.productsAndServices) _isProductsAndServicesExpanded = expanded; + if (item.label == t.banking) _isBankingExpanded = expanded; + if (item.label == t.accountingMenu) _isAccountingMenuExpanded = expanded; + if (item.label == t.warehouseManagement) _isWarehouseManagementExpanded = expanded; if (item.label == t.settings) _isBasicToolsExpanded = expanded; }); }, @@ -638,11 +937,41 @@ class _BusinessShellState extends State { icon: const Icon(Icons.add, size: 20), onPressed: () { context.pop(); - // Navigate to add new receipt/payment + // Navigate to add new item if (child.label == t.receipts) { // Navigate to add receipt } else if (child.label == t.payments) { // Navigate to add payment + } else if (child.label == t.products) { + // Navigate to add product + } else if (child.label == t.priceLists) { + // Navigate to add price list + } else if (child.label == t.categories) { + // Navigate to add category + } else if (child.label == t.productAttributes) { + // Navigate to add product attribute + } else if (child.label == t.accounts) { + // Navigate to add account + } else if (child.label == t.pettyCash) { + // Navigate to add petty cash + } else if (child.label == t.cashBox) { + // Navigate to add cash box + } else if (child.label == t.wallet) { + // Navigate to add wallet + } else if (child.label == t.checks) { + // Navigate to add check + } else if (child.label == t.transfers) { + // Navigate to add transfer + } else if (child.label == t.invoice) { + // Navigate to add invoice + } else if (child.label == t.expenseAndIncome) { + // Navigate to add expense/income + } else if (child.label == t.documents) { + // Navigate to add document + } else if (child.label == t.warehouses) { + // Navigate to add warehouse + } else if (child.label == t.shipments) { + // Navigate to add shipment } }, ) : null,