From c20652b8cdbe2e97d2f17dc36f5993c89d0de6f4 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 17 Jul 2025 17:48:19 +0000 Subject: [PATCH] first commit for tax lugin --- hesabixCore/composer.json | 2 +- hesabixCore/composer.lock | 21 +- .../src/Controller/BusinessController.php | 2 + .../Plugins/TaxSettingsController.php | 484 ++++++++++++++++++ hesabixCore/src/Entity/Permission.php | 15 + hesabixCore/src/Entity/PluginTaxInvoice.php | 239 +++++++++ .../src/Entity/PluginTaxsettingsKey.php | 53 ++ .../Repository/PluginTaxInvoiceRepository.php | 106 ++++ hesabixCore/symfony.lock | 9 + webUI/.github/workflows/release.yml | 0 webUI/.gitignore | 0 webUI/LICENSE | 0 webUI/env.d.ts | 0 webUI/index.html | 0 webUI/package.json | 0 webUI/public/.htaccess | 0 webUI/public/dashmix/dashmix.app.min.js | 0 webUI/public/dashmix/dashmix.min.css | 0 webUI/public/favicon.ico | Bin .../fonts/fontawesome/fa-brands-400.ttf | Bin .../fonts/fontawesome/fa-brands-400.woff2 | Bin .../fonts/fontawesome/fa-regular-400.ttf | Bin .../fonts/fontawesome/fa-regular-400.woff2 | Bin .../public/fonts/fontawesome/fa-solid-900.ttf | Bin .../fonts/fontawesome/fa-solid-900.woff2 | Bin .../fonts/fontawesome/fa-v4compatibility.ttf | Bin .../fontawesome/fa-v4compatibility.woff2 | Bin .../fonts/inter/inter-v11-latin-300.woff2 | Bin .../fonts/inter/inter-v11-latin-500.woff2 | Bin .../fonts/inter/inter-v11-latin-600.woff2 | Bin .../fonts/inter/inter-v11-latin-700.woff2 | Bin .../fonts/inter/inter-v11-latin-800.woff2 | Bin .../fonts/inter/inter-v11-latin-900.woff2 | Bin .../fonts/inter/inter-v11-latin-regular.woff2 | Bin webUI/public/fonts/sahel/Sahel-Black-FD.eot | Bin webUI/public/fonts/sahel/Sahel-Black-FD.ttf | Bin webUI/public/fonts/sahel/Sahel-Black-FD.woff | Bin webUI/public/fonts/sahel/Sahel-Black-FD.woff2 | Bin webUI/public/fonts/sahel/Sahel-Bold-FD.eot | Bin webUI/public/fonts/sahel/Sahel-Bold-FD.ttf | Bin webUI/public/fonts/sahel/Sahel-Bold-FD.woff | Bin webUI/public/fonts/sahel/Sahel-Bold-FD.woff2 | Bin webUI/public/fonts/sahel/Sahel-FD.eot | Bin webUI/public/fonts/sahel/Sahel-FD.ttf | Bin webUI/public/fonts/sahel/Sahel-FD.woff | Bin webUI/public/fonts/sahel/Sahel-FD.woff2 | Bin webUI/public/fonts/sahel/Sahel-Light-FD.eot | Bin webUI/public/fonts/sahel/Sahel-Light-FD.ttf | Bin webUI/public/fonts/sahel/Sahel-Light-FD.woff | Bin webUI/public/fonts/sahel/Sahel-Light-FD.woff2 | Bin .../public/fonts/sahel/Sahel-SemiBold-FD.eot | Bin .../public/fonts/sahel/Sahel-SemiBold-FD.ttf | Bin .../public/fonts/sahel/Sahel-SemiBold-FD.woff | Bin .../fonts/sahel/Sahel-SemiBold-FD.woff2 | Bin webUI/public/fonts/sahel/sahel.css | 0 .../public/fonts/shabnam/Shabnam-Bold-FD.eot | Bin .../public/fonts/shabnam/Shabnam-Bold-FD.ttf | Bin .../public/fonts/shabnam/Shabnam-Bold-FD.woff | Bin .../fonts/shabnam/Shabnam-Bold-FD.woff2 | Bin webUI/public/fonts/shabnam/Shabnam-FD.eot | Bin webUI/public/fonts/shabnam/Shabnam-FD.ttf | Bin webUI/public/fonts/shabnam/Shabnam-FD.woff | Bin webUI/public/fonts/shabnam/Shabnam-FD.woff2 | Bin .../public/fonts/shabnam/Shabnam-Light-FD.eot | Bin .../public/fonts/shabnam/Shabnam-Light-FD.ttf | Bin .../fonts/shabnam/Shabnam-Light-FD.woff | Bin .../fonts/shabnam/Shabnam-Light-FD.woff2 | Bin .../fonts/shabnam/Shabnam-Medium-FD.eot | Bin .../fonts/shabnam/Shabnam-Medium-FD.ttf | Bin .../fonts/shabnam/Shabnam-Medium-FD.woff | Bin .../fonts/shabnam/Shabnam-Medium-FD.woff2 | Bin .../public/fonts/shabnam/Shabnam-Thin-FD.eot | Bin .../public/fonts/shabnam/Shabnam-Thin-FD.ttf | Bin .../public/fonts/shabnam/Shabnam-Thin-FD.woff | Bin .../fonts/shabnam/Shabnam-Thin-FD.woff2 | Bin webUI/public/fonts/shabnam/shabnam.css | 0 .../simple-line-icons/Simple-Line-Icons.eot | Bin .../simple-line-icons/Simple-Line-Icons.svg | 0 .../simple-line-icons/Simple-Line-Icons.ttf | Bin .../simple-line-icons/Simple-Line-Icons.woff | Bin .../simple-line-icons/Simple-Line-Icons.woff2 | Bin .../fonts/vazir/ttf/Vazirmatn-Black.ttf | Bin .../public/fonts/vazir/ttf/Vazirmatn-Bold.ttf | Bin .../fonts/vazir/ttf/Vazirmatn-ExtraBold.ttf | Bin .../fonts/vazir/ttf/Vazirmatn-ExtraLight.ttf | Bin .../fonts/vazir/ttf/Vazirmatn-Light.ttf | Bin .../fonts/vazir/ttf/Vazirmatn-Medium.ttf | Bin .../fonts/vazir/ttf/Vazirmatn-Regular.ttf | Bin .../fonts/vazir/ttf/Vazirmatn-SemiBold.ttf | Bin .../public/fonts/vazir/ttf/Vazirmatn-Thin.ttf | Bin .../fonts/vazir/variable/Vazirmatn[wght].ttf | Bin webUI/public/fonts/vazir/vazir.css | 0 .../vazir/webfonts/Vazirmatn-Black.woff2 | Bin .../fonts/vazir/webfonts/Vazirmatn-Bold.woff2 | Bin .../vazir/webfonts/Vazirmatn-ExtraBold.woff2 | Bin .../vazir/webfonts/Vazirmatn-ExtraLight.woff2 | Bin .../vazir/webfonts/Vazirmatn-FD-Black.woff2 | Bin .../vazir/webfonts/Vazirmatn-FD-Bold.woff2 | Bin .../webfonts/Vazirmatn-FD-ExtraBold.woff2 | Bin .../webfonts/Vazirmatn-FD-ExtraLight.woff2 | Bin .../vazir/webfonts/Vazirmatn-FD-Light.woff2 | Bin .../vazir/webfonts/Vazirmatn-FD-Medium.woff2 | Bin .../vazir/webfonts/Vazirmatn-FD-Regular.woff2 | Bin .../webfonts/Vazirmatn-FD-SemiBold.woff2 | Bin .../vazir/webfonts/Vazirmatn-FD-Thin.woff2 | Bin .../vazir/webfonts/Vazirmatn-Light.woff2 | Bin .../vazir/webfonts/Vazirmatn-Medium.woff2 | Bin .../vazir/webfonts/Vazirmatn-Regular.woff2 | Bin .../vazir/webfonts/Vazirmatn-SemiBold.woff2 | Bin .../fonts/vazir/webfonts/Vazirmatn-Thin.woff2 | Bin .../vazir/webfonts/Vazirmatn[wght].woff2 | Bin webUI/public/img/404.gif | Bin webUI/public/img/android-chrome-192x192.png | Bin webUI/public/img/android-chrome-512x512.png | Bin webUI/public/img/apple-touch-icon.png | Bin webUI/public/img/avatar.jpg | Bin webUI/public/img/avatar.png | Bin webUI/public/img/avatar.webp | Bin webUI/public/img/banner1.jpg | Bin webUI/public/img/bg_side_overlay_header.jpg | Bin webUI/public/img/cover.jpg | Bin webUI/public/img/enamad-logo.png | Bin webUI/public/img/favicon-16x16.png | Bin webUI/public/img/favicon-32x32.png | Bin webUI/public/img/favicon.ico | Bin .../img/favicons/apple-touch-icon-180x180.png | Bin webUI/public/img/favicons/favicon-192x192.png | Bin webUI/public/img/favicons/favicon.ico | Bin webUI/public/img/favicons/favicon.png | Bin webUI/public/img/favicons/favw.png | Bin webUI/public/img/favw.png | Bin webUI/public/img/icons/bale-logo.png | Bin webUI/public/img/icons/bank.jpg | Bin webUI/public/img/icons/business.png | Bin webUI/public/img/icons/cashdesk.jpg | Bin webUI/public/img/icons/check.jpg | Bin webUI/public/img/icons/eitaa.jpeg | Bin webUI/public/img/icons/melipayamak.png | Bin webUI/public/img/icons/robika.png | Bin webUI/public/img/icons/salary.jpg | Bin webUI/public/img/icons/telegram.png | Bin webUI/public/img/icons/wallet.png | Bin webUI/public/img/icons/warehouse.jpg | Bin webUI/public/img/icons/zarinpal.png | Bin webUI/public/img/logo-blue.png | Bin webUI/public/img/logo/homescreen144.png | Bin webUI/public/img/logo/homescreen168.png | Bin webUI/public/img/logo/homescreen192.png | Bin webUI/public/img/logo/homescreen256.png | Bin webUI/public/img/logo/homescreen48.png | Bin webUI/public/img/logo/homescreen512.png | Bin webUI/public/img/logo/homescreen72.png | Bin webUI/public/img/logo/homescreen96.png | Bin webUI/public/img/logo/logo500.png | Bin webUI/public/img/payways/pec.ir.png | Bin .../public/img/payways/zarinpal-logo-min.png | Bin webUI/public/img/plugins/accpro.png | Bin webUI/public/img/plugins/accpro/intro.png | Bin webUI/public/img/plugins/apartemanma.jpg | Bin .../public/img/plugins/apartemanma/drawer.jpg | Bin .../public/img/plugins/apartemanma/intro.jpg | Bin webUI/public/img/plugins/club.webp | Bin webUI/public/img/plugins/ghesta.png | Bin webUI/public/img/plugins/hmr.jpg | Bin webUI/public/img/plugins/noghrekoob.jpeg | Bin webUI/public/img/plugins/onlinestore.webp | Bin .../public/img/plugins/onlinestore/intro.webp | Bin webUI/public/img/plugins/repservice.jpg | Bin webUI/public/img/plugins/repservice.png | Bin webUI/public/img/plugins/rest.jpg | Bin webUI/public/img/plugins/taxplugin.jpg | Bin 0 -> 86916 bytes webUI/public/img/sabavision.gif | Bin webUI/public/img/site.webmanifest | 0 webUI/public/img/whatsapp.png | Bin webUI/public/img/wp.jpg | Bin webUI/public/img/zarinpal-logo-min.png | Bin webUI/public/manifest.json | 0 webUI/public/service-worker.js | 0 webUI/public/sounds/beep.mp3 | Bin webUI/src/App.vue | 0 webUI/src/assets/dino.png | Bin webUI/src/assets/hero.png | Bin webUI/src/assets/logo.svg | 0 webUI/src/assets/peach.png | Bin webUI/src/assets/site.css | 0 webUI/src/components/ChangePasswordDialog.vue | 0 webUI/src/components/Editor.vue | 0 webUI/src/components/PrintDialog.vue | 0 .../application/buttons/CalculatorButton.vue | 0 .../application/buttons/SecretDialog.vue | 0 .../application/buttons/ShortcutsButton.vue | 0 .../application/buttons/change_lang.vue | 0 .../application/buttons/notifications_btn.vue | 0 .../application/buttons/profile_btn.vue | 0 webUI/src/components/application/clock.vue | 0 .../application/combobox/currency_cob.vue | 0 .../application/combobox/year_cob.vue | 0 .../application/list/archive_list.vue | 0 .../components/application/list/sms_list.vue | 0 webUI/src/components/forms/Haccountsearch.vue | 0 .../components/forms/Hbankaccountsearch.vue | 0 webUI/src/components/forms/Hbankselect.vue | 0 .../src/components/forms/Hcashdesksearch.vue | 0 .../src/components/forms/Hcommoditysearch.vue | 0 webUI/src/components/forms/Hdatepicker.vue | 0 webUI/src/components/forms/Hdocsearch.vue | 0 .../components/forms/HesabdariTreeView.vue | 0 webUI/src/components/forms/Hnumberinput.vue | 0 webUI/src/components/forms/Hpersonsearch.vue | 0 webUI/src/components/forms/Hsalarysearch.vue | 0 .../src/components/forms/Htabletreeselect.vue | 0 webUI/src/components/forms/TreeNode.vue | 0 webUI/src/components/widgets/PrintOptions.vue | 0 webUI/src/components/widgets/ShareOptions.vue | 0 .../widgets/TopCommoditiesChart.vue | 0 .../widgets/TopCostCentersChart.vue | 0 .../widgets/TopIncomeCentersChart.vue | 0 webUI/src/css/main.css | 0 webUI/src/hesabixConfig.js | 0 webUI/src/i18n/calendarLocalConfig.ts | 0 webUI/src/i18n/en_lang.ts | 0 webUI/src/i18n/fa_lang.ts | 32 ++ webUI/src/i18n/i18n.ts | 0 webUI/src/main.ts | 0 webUI/src/registerServiceWorker.js | 0 webUI/src/router/index.ts | 12 + webUI/src/scss/_override.scss | 0 webUI/src/scss/_variables.scss | 0 webUI/src/scss/components/_VAlert.scss | 0 webUI/src/scss/components/_VBadge.scss | 0 webUI/src/scss/components/_VBreadcrumb.scss | 0 webUI/src/scss/components/_VButtons.scss | 0 webUI/src/scss/components/_VCard.scss | 0 webUI/src/scss/components/_VField.scss | 0 webUI/src/scss/components/_VInput.scss | 0 webUI/src/scss/components/_VList.scss | 0 .../scss/components/_VNavigationDrawer.scss | 0 webUI/src/scss/components/_VShadow.scss | 0 webUI/src/scss/components/_VTextField.scss | 0 webUI/src/scss/components/_VTextarea.scss | 0 webUI/src/scss/layout/_container.scss | 0 webUI/src/scss/layout/_footer.scss | 0 webUI/src/scss/layout/_horizontal.scss | 0 webUI/src/scss/layout/_sidebar.scss | 0 webUI/src/scss/layout/_topbar.scss | 0 webUI/src/scss/style.scss | 0 webUI/src/stores/applicationStore.ts | 0 webUI/src/stores/counter.ts | 0 webUI/src/stores/userStore.ts | 0 webUI/src/theme/DarkTheme.ts | 0 webUI/src/theme/LightTheme.ts | 0 webUI/src/types/vue3-qrcode-reader.d.ts | 0 webUI/src/utils/date.js | 0 webUI/src/utils/number.js | 0 webUI/src/views/NotFound.vue | 0 webUI/src/views/acc/App.vue | 21 +- webUI/src/views/acc/accounting/closeyear.vue | 0 webUI/src/views/acc/accounting/list.vue | 0 webUI/src/views/acc/accounting/mod.vue | 0 .../src/views/acc/accounting/openBalance.vue | 0 webUI/src/views/acc/accounting/table.vue | 0 webUI/src/views/acc/accounting/viewDoc.vue | 0 webUI/src/views/acc/api/list.vue | 0 webUI/src/views/acc/archive/order_new.vue | 0 webUI/src/views/acc/archive/orders_list.vue | 0 webUI/src/views/acc/archive/view_files.vue | 0 webUI/src/views/acc/bank/card.vue | 0 webUI/src/views/acc/bank/list.vue | 0 webUI/src/views/acc/bank/mod.vue | 0 webUI/src/views/acc/buy/list.vue | 0 webUI/src/views/acc/buy/mod.vue | 0 webUI/src/views/acc/buy/viewInvoice.vue | 0 webUI/src/views/acc/cashdesk/card.vue | 0 webUI/src/views/acc/cashdesk/list.vue | 0 webUI/src/views/acc/cashdesk/mod.vue | 0 webUI/src/views/acc/cheque/input.vue | 0 webUI/src/views/acc/cheque/list.vue | 0 webUI/src/views/acc/cheque/mod.vue | 0 webUI/src/views/acc/cheque/output.vue | 0 webUI/src/views/acc/cheque/transfer.vue | 0 webUI/src/views/acc/commodity/cat/list.vue | 0 webUI/src/views/acc/commodity/drop/list.vue | 0 webUI/src/views/acc/commodity/drop/mod.vue | 0 webUI/src/views/acc/commodity/list.vue | 0 webUI/src/views/acc/commodity/mod.vue | 0 .../views/acc/commodity/priceList/list.vue | 0 .../src/views/acc/commodity/priceList/mod.vue | 0 .../acc/commodity/priceList/pricelistedit.vue | 0 .../views/acc/commodity/priceList/view.vue | 0 webUI/src/views/acc/component/Currency.vue | 0 webUI/src/views/acc/component/Year.vue | 0 .../acc/component/archive/archiveUpload.vue | 0 .../acc/component/archive/archive_modal.vue | 0 .../component/commodity/changePriceGroup.vue | 0 .../component/commodity/quickAddCommodity.vue | 0 .../views/acc/component/documentLogButton.vue | 0 webUI/src/views/acc/component/helpBtn.vue | 0 webUI/src/views/acc/component/hitable.vue | 0 .../importModal/commodity-import-excel.vue | 0 .../importModal/person-import-excel.vue | 0 webUI/src/views/acc/component/mostdes.vue | 0 webUI/src/views/acc/component/notes.vue | 0 .../acc/component/notifications/icon.vue | 0 webUI/src/views/acc/component/person.vue | 0 .../views/acc/component/person/quickAdd.vue | 0 .../views/acc/component/person/quickView.vue | 0 webUI/src/views/acc/component/rec.vue | 0 webUI/src/views/acc/component/recList.vue | 0 .../acc/component/reports/detailsBtn.vue | 0 webUI/src/views/acc/component/send.vue | 0 webUI/src/views/acc/component/smsPanel.vue | 0 .../views/acc/component/widgets/saleChart.vue | 0 webUI/src/views/acc/costs/list.vue | 0 webUI/src/views/acc/costs/mod.vue | 0 webUI/src/views/acc/dashboard.vue | 0 webUI/src/views/acc/incomes/list.vue | 0 webUI/src/views/acc/incomes/mod.vue | 0 .../views/acc/notifications/notifications.vue | 0 webUI/src/views/acc/persons/card.vue | 0 webUI/src/views/acc/persons/insert.vue | 0 webUI/src/views/acc/persons/list.vue | 0 webUI/src/views/acc/persons/receive/list.vue | 0 webUI/src/views/acc/persons/receive/mod.vue | 0 webUI/src/views/acc/persons/send/list.vue | 0 webUI/src/views/acc/persons/send/mod.vue | 0 webUI/src/views/acc/plugins/accpro/intro.vue | 0 .../views/acc/plugins/amartemanma/intro.vue | 0 webUI/src/views/acc/plugins/cc/intro.vue | 0 webUI/src/views/acc/plugins/ghesta/intro.vue | 0 webUI/src/views/acc/plugins/ghesta/list.vue | 0 webUI/src/views/acc/plugins/ghesta/mod.vue | 0 webUI/src/views/acc/plugins/ghesta/view.vue | 0 webUI/src/views/acc/plugins/hrm/docs/list.vue | 0 webUI/src/views/acc/plugins/hrm/docs/mod.vue | 0 webUI/src/views/acc/plugins/hrm/docs/view.vue | 0 webUI/src/views/acc/plugins/hrm/intro.vue | 0 .../acc/plugins/noghre/employess/list.vue | 0 .../acc/plugins/noghre/employess/mod.vue | 0 webUI/src/views/acc/plugins/noghre/intro.vue | 0 .../views/acc/plugins/noghre/order/list.vue | 0 .../views/acc/plugins/noghre/order/mod.vue | 0 .../views/acc/plugins/noghre/order/view.vue | 0 webUI/src/views/acc/plugins/noghre/pays.vue | 0 .../acc/plugins/onlinestore/dashboard.vue | 0 .../views/acc/plugins/onlinestore/intro.vue | 0 .../views/acc/plugins/repservice/intro.vue | 0 .../src/views/acc/plugins/repservice/list.vue | 0 .../src/views/acc/plugins/repservice/mod.vue | 0 .../src/views/acc/plugins/repservice/view.vue | 0 webUI/src/views/acc/plugins/resamap/intro.vue | 0 .../views/acc/plugins/tax/invoices/list.vue | 260 ++++++++++ webUI/src/views/acc/plugins/tax/settings.vue | 321 ++++++++++++ webUI/src/views/acc/presell/list.vue | 0 webUI/src/views/acc/presell/mod.vue | 0 webUI/src/views/acc/presell/view.vue | 0 webUI/src/views/acc/presell/viewInvoice.vue | 0 webUI/src/views/acc/printers/list.vue | 0 webUI/src/views/acc/printers/printList.vue | 0 webUI/src/views/acc/printers/queue.vue | 0 webUI/src/views/acc/printers/templates.vue | 0 webUI/src/views/acc/reports/balanceSheet.vue | 0 .../reports/commodity/buysellByCommodity.vue | 0 .../views/acc/reports/explore_accounts.vue | 0 .../acc/reports/persons/buysellByPerson.vue | 0 .../src/views/acc/reports/persons/debtors.vue | 0 .../views/acc/reports/persons/depositors.vue | 0 .../src/views/acc/reports/persons/withdet.vue | 0 webUI/src/views/acc/reports/reports.vue | 0 webUI/src/views/acc/rfbuy/list.vue | 0 webUI/src/views/acc/rfbuy/mod.vue | 0 webUI/src/views/acc/rfbuy/viewInvoice.vue | 0 webUI/src/views/acc/rfsell/list.vue | 0 webUI/src/views/acc/rfsell/mod.vue | 0 webUI/src/views/acc/rfsell/viewInvoice.vue | 0 webUI/src/views/acc/router/index.js | 0 webUI/src/views/acc/salary/card.vue | 0 webUI/src/views/acc/salary/list.vue | 0 webUI/src/views/acc/salary/mod.vue | 0 webUI/src/views/acc/sell/fastMod.vue | 0 webUI/src/views/acc/sell/list.vue | 32 ++ webUI/src/views/acc/sell/mod.vue | 0 webUI/src/views/acc/sell/viewInvoice.vue | 0 webUI/src/views/acc/settings/avatar.vue | 0 webUI/src/views/acc/settings/bussiness.vue | 0 webUI/src/views/acc/settings/extramoneys.vue | 0 webUI/src/views/acc/settings/logs.vue | 0 webUI/src/views/acc/settings/print.vue | 0 .../src/views/acc/settings/user_perm_edit.vue | 0 webUI/src/views/acc/settings/user_rolls.vue | 0 webUI/src/views/acc/shareholder/list.vue | 0 webUI/src/views/acc/smspanel/smspanel.vue | 0 webUI/src/views/acc/store/plugin-invoice.vue | 0 webUI/src/views/acc/store/plugin-my.vue | 0 webUI/src/views/acc/store/plugin-world.vue | 0 webUI/src/views/acc/store/viewProdect.vue | 0 .../commodityCheck/checkByStoreroom.vue | 0 webUI/src/views/acc/storeroom/io/buy.vue | 0 webUI/src/views/acc/storeroom/io/modalNew.vue | 0 webUI/src/views/acc/storeroom/io/rfbuy.vue | 0 webUI/src/views/acc/storeroom/io/rfsell.vue | 0 webUI/src/views/acc/storeroom/io/sell.vue | 0 .../src/views/acc/storeroom/io/ticketList.vue | 0 webUI/src/views/acc/storeroom/io/view.vue | 0 webUI/src/views/acc/storeroom/list.vue | 0 webUI/src/views/acc/storeroom/mod.vue | 0 webUI/src/views/acc/transfer/list.vue | 0 webUI/src/views/acc/transfer/mod.vue | 0 webUI/src/views/acc/ultimatepackage/list.vue | 0 webUI/src/views/acc/ultimatepackage/new.vue | 0 webUI/src/views/acc/wallet/view.vue | 0 webUI/src/views/user/App.vue | 0 webUI/src/views/user/InstallPWA.vue | 0 webUI/src/views/user/ReferralRedirect.vue | 0 webUI/src/views/user/active-account.vue | 0 webUI/src/views/user/change-password.vue | 0 webUI/src/views/user/login.vue | 0 .../src/views/user/manager/business/list.vue | 0 webUI/src/views/user/manager/log/logs.vue | 0 webUI/src/views/user/manager/online-users.vue | 0 .../views/user/manager/reportchange/list.vue | 0 .../views/user/manager/reportchange/mod.vue | 0 .../user/manager/settings/database_info.vue | 0 .../manager/settings/pluginTransactions.vue | 0 .../views/user/manager/settings/plugins.vue | 0 .../views/user/manager/settings/registry.vue | 0 .../user/manager/settings/sms/smsSettings.vue | 0 .../views/user/manager/settings/system.vue | 0 .../user/manager/settings/update-core.vue | 0 .../views/user/manager/statements/list.vue | 0 .../src/views/user/manager/statements/mod.vue | 0 webUI/src/views/user/manager/support/list.vue | 0 webUI/src/views/user/manager/support/show.vue | 0 .../user/manager/users/change-password.vue | 0 webUI/src/views/user/manager/users/list.vue | 0 webUI/src/views/user/manager/wallet/list.vue | 0 webUI/src/views/user/profile/add-mobile.vue | 0 .../views/user/profile/business/insert.vue | 0 .../src/views/user/profile/business/list.vue | 0 webUI/src/views/user/profile/dashboard.vue | 0 .../profile/forget-password-submit-code.vue | 0 .../views/user/profile/forget-password.vue | 0 webUI/src/views/user/profile/profile-main.vue | 0 webUI/src/views/user/profile/support/list.vue | 0 webUI/src/views/user/profile/support/new.vue | 0 webUI/src/views/user/profile/support/show.vue | 0 webUI/src/views/user/register.vue | 0 webUI/src/views/user/single.vue | 0 webUI/src/views/wizard/home.vue | 0 webUI/tsconfig.config.json | 0 webUI/tsconfig.json | 0 webUI/vite.config.ts | 0 webUI/workbox-config.js | 0 452 files changed, 1597 insertions(+), 12 deletions(-) create mode 100644 hesabixCore/src/Controller/Plugins/TaxSettingsController.php create mode 100644 hesabixCore/src/Entity/PluginTaxInvoice.php create mode 100644 hesabixCore/src/Entity/PluginTaxsettingsKey.php create mode 100644 hesabixCore/src/Repository/PluginTaxInvoiceRepository.php mode change 100644 => 100755 webUI/.github/workflows/release.yml mode change 100644 => 100755 webUI/.gitignore mode change 100644 => 100755 webUI/LICENSE mode change 100644 => 100755 webUI/env.d.ts mode change 100644 => 100755 webUI/index.html mode change 100644 => 100755 webUI/package.json mode change 100644 => 100755 webUI/public/.htaccess mode change 100644 => 100755 webUI/public/dashmix/dashmix.app.min.js mode change 100644 => 100755 webUI/public/dashmix/dashmix.min.css mode change 100644 => 100755 webUI/public/favicon.ico mode change 100644 => 100755 webUI/public/fonts/fontawesome/fa-brands-400.ttf mode change 100644 => 100755 webUI/public/fonts/fontawesome/fa-brands-400.woff2 mode change 100644 => 100755 webUI/public/fonts/fontawesome/fa-regular-400.ttf mode change 100644 => 100755 webUI/public/fonts/fontawesome/fa-regular-400.woff2 mode change 100644 => 100755 webUI/public/fonts/fontawesome/fa-solid-900.ttf mode change 100644 => 100755 webUI/public/fonts/fontawesome/fa-solid-900.woff2 mode change 100644 => 100755 webUI/public/fonts/fontawesome/fa-v4compatibility.ttf mode change 100644 => 100755 webUI/public/fonts/fontawesome/fa-v4compatibility.woff2 mode change 100644 => 100755 webUI/public/fonts/inter/inter-v11-latin-300.woff2 mode change 100644 => 100755 webUI/public/fonts/inter/inter-v11-latin-500.woff2 mode change 100644 => 100755 webUI/public/fonts/inter/inter-v11-latin-600.woff2 mode change 100644 => 100755 webUI/public/fonts/inter/inter-v11-latin-700.woff2 mode change 100644 => 100755 webUI/public/fonts/inter/inter-v11-latin-800.woff2 mode change 100644 => 100755 webUI/public/fonts/inter/inter-v11-latin-900.woff2 mode change 100644 => 100755 webUI/public/fonts/inter/inter-v11-latin-regular.woff2 mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Black-FD.eot mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Black-FD.ttf mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Black-FD.woff mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Black-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Bold-FD.eot mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Bold-FD.ttf mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Bold-FD.woff mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Bold-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-FD.eot mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-FD.ttf mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-FD.woff mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Light-FD.eot mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Light-FD.ttf mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Light-FD.woff mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-Light-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-SemiBold-FD.eot mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-SemiBold-FD.ttf mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-SemiBold-FD.woff mode change 100644 => 100755 webUI/public/fonts/sahel/Sahel-SemiBold-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/sahel/sahel.css mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Bold-FD.eot mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Bold-FD.ttf mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Bold-FD.woff mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Bold-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-FD.eot mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-FD.ttf mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-FD.woff mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Light-FD.eot mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Light-FD.ttf mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Light-FD.woff mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Light-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Medium-FD.eot mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Medium-FD.ttf mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Medium-FD.woff mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Medium-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Thin-FD.eot mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Thin-FD.ttf mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Thin-FD.woff mode change 100644 => 100755 webUI/public/fonts/shabnam/Shabnam-Thin-FD.woff2 mode change 100644 => 100755 webUI/public/fonts/shabnam/shabnam.css mode change 100644 => 100755 webUI/public/fonts/simple-line-icons/Simple-Line-Icons.eot mode change 100644 => 100755 webUI/public/fonts/simple-line-icons/Simple-Line-Icons.svg mode change 100644 => 100755 webUI/public/fonts/simple-line-icons/Simple-Line-Icons.ttf mode change 100644 => 100755 webUI/public/fonts/simple-line-icons/Simple-Line-Icons.woff mode change 100644 => 100755 webUI/public/fonts/simple-line-icons/Simple-Line-Icons.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/ttf/Vazirmatn-Black.ttf mode change 100644 => 100755 webUI/public/fonts/vazir/ttf/Vazirmatn-Bold.ttf mode change 100644 => 100755 webUI/public/fonts/vazir/ttf/Vazirmatn-ExtraBold.ttf mode change 100644 => 100755 webUI/public/fonts/vazir/ttf/Vazirmatn-ExtraLight.ttf mode change 100644 => 100755 webUI/public/fonts/vazir/ttf/Vazirmatn-Light.ttf mode change 100644 => 100755 webUI/public/fonts/vazir/ttf/Vazirmatn-Medium.ttf mode change 100644 => 100755 webUI/public/fonts/vazir/ttf/Vazirmatn-Regular.ttf mode change 100644 => 100755 webUI/public/fonts/vazir/ttf/Vazirmatn-SemiBold.ttf mode change 100644 => 100755 webUI/public/fonts/vazir/ttf/Vazirmatn-Thin.ttf mode change 100644 => 100755 webUI/public/fonts/vazir/variable/Vazirmatn[wght].ttf mode change 100644 => 100755 webUI/public/fonts/vazir/vazir.css mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-Black.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-Bold.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-ExtraBold.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-ExtraLight.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Black.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Bold.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-ExtraBold.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-ExtraLight.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Light.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Medium.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Regular.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-SemiBold.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Thin.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-Light.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-Medium.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-Regular.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-SemiBold.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn-Thin.woff2 mode change 100644 => 100755 webUI/public/fonts/vazir/webfonts/Vazirmatn[wght].woff2 mode change 100644 => 100755 webUI/public/img/404.gif mode change 100644 => 100755 webUI/public/img/android-chrome-192x192.png mode change 100644 => 100755 webUI/public/img/android-chrome-512x512.png mode change 100644 => 100755 webUI/public/img/apple-touch-icon.png mode change 100644 => 100755 webUI/public/img/avatar.jpg mode change 100644 => 100755 webUI/public/img/avatar.png mode change 100644 => 100755 webUI/public/img/avatar.webp mode change 100644 => 100755 webUI/public/img/banner1.jpg mode change 100644 => 100755 webUI/public/img/bg_side_overlay_header.jpg mode change 100644 => 100755 webUI/public/img/cover.jpg mode change 100644 => 100755 webUI/public/img/enamad-logo.png mode change 100644 => 100755 webUI/public/img/favicon-16x16.png mode change 100644 => 100755 webUI/public/img/favicon-32x32.png mode change 100644 => 100755 webUI/public/img/favicon.ico mode change 100644 => 100755 webUI/public/img/favicons/apple-touch-icon-180x180.png mode change 100644 => 100755 webUI/public/img/favicons/favicon-192x192.png mode change 100644 => 100755 webUI/public/img/favicons/favicon.ico mode change 100644 => 100755 webUI/public/img/favicons/favicon.png mode change 100644 => 100755 webUI/public/img/favicons/favw.png mode change 100644 => 100755 webUI/public/img/favw.png mode change 100644 => 100755 webUI/public/img/icons/bale-logo.png mode change 100644 => 100755 webUI/public/img/icons/bank.jpg mode change 100644 => 100755 webUI/public/img/icons/business.png mode change 100644 => 100755 webUI/public/img/icons/cashdesk.jpg mode change 100644 => 100755 webUI/public/img/icons/check.jpg mode change 100644 => 100755 webUI/public/img/icons/eitaa.jpeg mode change 100644 => 100755 webUI/public/img/icons/melipayamak.png mode change 100644 => 100755 webUI/public/img/icons/robika.png mode change 100644 => 100755 webUI/public/img/icons/salary.jpg mode change 100644 => 100755 webUI/public/img/icons/telegram.png mode change 100644 => 100755 webUI/public/img/icons/wallet.png mode change 100644 => 100755 webUI/public/img/icons/warehouse.jpg mode change 100644 => 100755 webUI/public/img/icons/zarinpal.png mode change 100644 => 100755 webUI/public/img/logo-blue.png mode change 100644 => 100755 webUI/public/img/logo/homescreen144.png mode change 100644 => 100755 webUI/public/img/logo/homescreen168.png mode change 100644 => 100755 webUI/public/img/logo/homescreen192.png mode change 100644 => 100755 webUI/public/img/logo/homescreen256.png mode change 100644 => 100755 webUI/public/img/logo/homescreen48.png mode change 100644 => 100755 webUI/public/img/logo/homescreen512.png mode change 100644 => 100755 webUI/public/img/logo/homescreen72.png mode change 100644 => 100755 webUI/public/img/logo/homescreen96.png mode change 100644 => 100755 webUI/public/img/logo/logo500.png mode change 100644 => 100755 webUI/public/img/payways/pec.ir.png mode change 100644 => 100755 webUI/public/img/payways/zarinpal-logo-min.png mode change 100644 => 100755 webUI/public/img/plugins/accpro.png mode change 100644 => 100755 webUI/public/img/plugins/accpro/intro.png mode change 100644 => 100755 webUI/public/img/plugins/apartemanma.jpg mode change 100644 => 100755 webUI/public/img/plugins/apartemanma/drawer.jpg mode change 100644 => 100755 webUI/public/img/plugins/apartemanma/intro.jpg mode change 100644 => 100755 webUI/public/img/plugins/club.webp mode change 100644 => 100755 webUI/public/img/plugins/ghesta.png mode change 100644 => 100755 webUI/public/img/plugins/hmr.jpg mode change 100644 => 100755 webUI/public/img/plugins/noghrekoob.jpeg mode change 100644 => 100755 webUI/public/img/plugins/onlinestore.webp mode change 100644 => 100755 webUI/public/img/plugins/onlinestore/intro.webp mode change 100644 => 100755 webUI/public/img/plugins/repservice.jpg mode change 100644 => 100755 webUI/public/img/plugins/repservice.png mode change 100644 => 100755 webUI/public/img/plugins/rest.jpg create mode 100644 webUI/public/img/plugins/taxplugin.jpg mode change 100644 => 100755 webUI/public/img/sabavision.gif mode change 100644 => 100755 webUI/public/img/site.webmanifest mode change 100644 => 100755 webUI/public/img/whatsapp.png mode change 100644 => 100755 webUI/public/img/wp.jpg mode change 100644 => 100755 webUI/public/img/zarinpal-logo-min.png mode change 100644 => 100755 webUI/public/manifest.json mode change 100644 => 100755 webUI/public/service-worker.js mode change 100644 => 100755 webUI/public/sounds/beep.mp3 mode change 100644 => 100755 webUI/src/App.vue mode change 100644 => 100755 webUI/src/assets/dino.png mode change 100644 => 100755 webUI/src/assets/hero.png mode change 100644 => 100755 webUI/src/assets/logo.svg mode change 100644 => 100755 webUI/src/assets/peach.png mode change 100644 => 100755 webUI/src/assets/site.css mode change 100644 => 100755 webUI/src/components/ChangePasswordDialog.vue mode change 100644 => 100755 webUI/src/components/Editor.vue mode change 100644 => 100755 webUI/src/components/PrintDialog.vue mode change 100644 => 100755 webUI/src/components/application/buttons/CalculatorButton.vue mode change 100644 => 100755 webUI/src/components/application/buttons/SecretDialog.vue mode change 100644 => 100755 webUI/src/components/application/buttons/ShortcutsButton.vue mode change 100644 => 100755 webUI/src/components/application/buttons/change_lang.vue mode change 100644 => 100755 webUI/src/components/application/buttons/notifications_btn.vue mode change 100644 => 100755 webUI/src/components/application/buttons/profile_btn.vue mode change 100644 => 100755 webUI/src/components/application/clock.vue mode change 100644 => 100755 webUI/src/components/application/combobox/currency_cob.vue mode change 100644 => 100755 webUI/src/components/application/combobox/year_cob.vue mode change 100644 => 100755 webUI/src/components/application/list/archive_list.vue mode change 100644 => 100755 webUI/src/components/application/list/sms_list.vue mode change 100644 => 100755 webUI/src/components/forms/Haccountsearch.vue mode change 100644 => 100755 webUI/src/components/forms/Hbankaccountsearch.vue mode change 100644 => 100755 webUI/src/components/forms/Hbankselect.vue mode change 100644 => 100755 webUI/src/components/forms/Hcashdesksearch.vue mode change 100644 => 100755 webUI/src/components/forms/Hcommoditysearch.vue mode change 100644 => 100755 webUI/src/components/forms/Hdatepicker.vue mode change 100644 => 100755 webUI/src/components/forms/Hdocsearch.vue mode change 100644 => 100755 webUI/src/components/forms/HesabdariTreeView.vue mode change 100644 => 100755 webUI/src/components/forms/Hnumberinput.vue mode change 100644 => 100755 webUI/src/components/forms/Hpersonsearch.vue mode change 100644 => 100755 webUI/src/components/forms/Hsalarysearch.vue mode change 100644 => 100755 webUI/src/components/forms/Htabletreeselect.vue mode change 100644 => 100755 webUI/src/components/forms/TreeNode.vue mode change 100644 => 100755 webUI/src/components/widgets/PrintOptions.vue mode change 100644 => 100755 webUI/src/components/widgets/ShareOptions.vue mode change 100644 => 100755 webUI/src/components/widgets/TopCommoditiesChart.vue mode change 100644 => 100755 webUI/src/components/widgets/TopCostCentersChart.vue mode change 100644 => 100755 webUI/src/components/widgets/TopIncomeCentersChart.vue mode change 100644 => 100755 webUI/src/css/main.css mode change 100644 => 100755 webUI/src/hesabixConfig.js mode change 100644 => 100755 webUI/src/i18n/calendarLocalConfig.ts mode change 100644 => 100755 webUI/src/i18n/en_lang.ts mode change 100644 => 100755 webUI/src/i18n/fa_lang.ts mode change 100644 => 100755 webUI/src/i18n/i18n.ts mode change 100644 => 100755 webUI/src/main.ts mode change 100644 => 100755 webUI/src/registerServiceWorker.js mode change 100644 => 100755 webUI/src/router/index.ts mode change 100644 => 100755 webUI/src/scss/_override.scss mode change 100644 => 100755 webUI/src/scss/_variables.scss mode change 100644 => 100755 webUI/src/scss/components/_VAlert.scss mode change 100644 => 100755 webUI/src/scss/components/_VBadge.scss mode change 100644 => 100755 webUI/src/scss/components/_VBreadcrumb.scss mode change 100644 => 100755 webUI/src/scss/components/_VButtons.scss mode change 100644 => 100755 webUI/src/scss/components/_VCard.scss mode change 100644 => 100755 webUI/src/scss/components/_VField.scss mode change 100644 => 100755 webUI/src/scss/components/_VInput.scss mode change 100644 => 100755 webUI/src/scss/components/_VList.scss mode change 100644 => 100755 webUI/src/scss/components/_VNavigationDrawer.scss mode change 100644 => 100755 webUI/src/scss/components/_VShadow.scss mode change 100644 => 100755 webUI/src/scss/components/_VTextField.scss mode change 100644 => 100755 webUI/src/scss/components/_VTextarea.scss mode change 100644 => 100755 webUI/src/scss/layout/_container.scss mode change 100644 => 100755 webUI/src/scss/layout/_footer.scss mode change 100644 => 100755 webUI/src/scss/layout/_horizontal.scss mode change 100644 => 100755 webUI/src/scss/layout/_sidebar.scss mode change 100644 => 100755 webUI/src/scss/layout/_topbar.scss mode change 100644 => 100755 webUI/src/scss/style.scss mode change 100644 => 100755 webUI/src/stores/applicationStore.ts mode change 100644 => 100755 webUI/src/stores/counter.ts mode change 100644 => 100755 webUI/src/stores/userStore.ts mode change 100644 => 100755 webUI/src/theme/DarkTheme.ts mode change 100644 => 100755 webUI/src/theme/LightTheme.ts mode change 100644 => 100755 webUI/src/types/vue3-qrcode-reader.d.ts mode change 100644 => 100755 webUI/src/utils/date.js mode change 100644 => 100755 webUI/src/utils/number.js mode change 100644 => 100755 webUI/src/views/NotFound.vue mode change 100644 => 100755 webUI/src/views/acc/App.vue mode change 100644 => 100755 webUI/src/views/acc/accounting/closeyear.vue mode change 100644 => 100755 webUI/src/views/acc/accounting/list.vue mode change 100644 => 100755 webUI/src/views/acc/accounting/mod.vue mode change 100644 => 100755 webUI/src/views/acc/accounting/openBalance.vue mode change 100644 => 100755 webUI/src/views/acc/accounting/table.vue mode change 100644 => 100755 webUI/src/views/acc/accounting/viewDoc.vue mode change 100644 => 100755 webUI/src/views/acc/api/list.vue mode change 100644 => 100755 webUI/src/views/acc/archive/order_new.vue mode change 100644 => 100755 webUI/src/views/acc/archive/orders_list.vue mode change 100644 => 100755 webUI/src/views/acc/archive/view_files.vue mode change 100644 => 100755 webUI/src/views/acc/bank/card.vue mode change 100644 => 100755 webUI/src/views/acc/bank/list.vue mode change 100644 => 100755 webUI/src/views/acc/bank/mod.vue mode change 100644 => 100755 webUI/src/views/acc/buy/list.vue mode change 100644 => 100755 webUI/src/views/acc/buy/mod.vue mode change 100644 => 100755 webUI/src/views/acc/buy/viewInvoice.vue mode change 100644 => 100755 webUI/src/views/acc/cashdesk/card.vue mode change 100644 => 100755 webUI/src/views/acc/cashdesk/list.vue mode change 100644 => 100755 webUI/src/views/acc/cashdesk/mod.vue mode change 100644 => 100755 webUI/src/views/acc/cheque/input.vue mode change 100644 => 100755 webUI/src/views/acc/cheque/list.vue mode change 100644 => 100755 webUI/src/views/acc/cheque/mod.vue mode change 100644 => 100755 webUI/src/views/acc/cheque/output.vue mode change 100644 => 100755 webUI/src/views/acc/cheque/transfer.vue mode change 100644 => 100755 webUI/src/views/acc/commodity/cat/list.vue mode change 100644 => 100755 webUI/src/views/acc/commodity/drop/list.vue mode change 100644 => 100755 webUI/src/views/acc/commodity/drop/mod.vue mode change 100644 => 100755 webUI/src/views/acc/commodity/list.vue mode change 100644 => 100755 webUI/src/views/acc/commodity/mod.vue mode change 100644 => 100755 webUI/src/views/acc/commodity/priceList/list.vue mode change 100644 => 100755 webUI/src/views/acc/commodity/priceList/mod.vue mode change 100644 => 100755 webUI/src/views/acc/commodity/priceList/pricelistedit.vue mode change 100644 => 100755 webUI/src/views/acc/commodity/priceList/view.vue mode change 100644 => 100755 webUI/src/views/acc/component/Currency.vue mode change 100644 => 100755 webUI/src/views/acc/component/Year.vue mode change 100644 => 100755 webUI/src/views/acc/component/archive/archiveUpload.vue mode change 100644 => 100755 webUI/src/views/acc/component/archive/archive_modal.vue mode change 100644 => 100755 webUI/src/views/acc/component/commodity/changePriceGroup.vue mode change 100644 => 100755 webUI/src/views/acc/component/commodity/quickAddCommodity.vue mode change 100644 => 100755 webUI/src/views/acc/component/documentLogButton.vue mode change 100644 => 100755 webUI/src/views/acc/component/helpBtn.vue mode change 100644 => 100755 webUI/src/views/acc/component/hitable.vue mode change 100644 => 100755 webUI/src/views/acc/component/importModal/commodity-import-excel.vue mode change 100644 => 100755 webUI/src/views/acc/component/importModal/person-import-excel.vue mode change 100644 => 100755 webUI/src/views/acc/component/mostdes.vue mode change 100644 => 100755 webUI/src/views/acc/component/notes.vue mode change 100644 => 100755 webUI/src/views/acc/component/notifications/icon.vue mode change 100644 => 100755 webUI/src/views/acc/component/person.vue mode change 100644 => 100755 webUI/src/views/acc/component/person/quickAdd.vue mode change 100644 => 100755 webUI/src/views/acc/component/person/quickView.vue mode change 100644 => 100755 webUI/src/views/acc/component/rec.vue mode change 100644 => 100755 webUI/src/views/acc/component/recList.vue mode change 100644 => 100755 webUI/src/views/acc/component/reports/detailsBtn.vue mode change 100644 => 100755 webUI/src/views/acc/component/send.vue mode change 100644 => 100755 webUI/src/views/acc/component/smsPanel.vue mode change 100644 => 100755 webUI/src/views/acc/component/widgets/saleChart.vue mode change 100644 => 100755 webUI/src/views/acc/costs/list.vue mode change 100644 => 100755 webUI/src/views/acc/costs/mod.vue mode change 100644 => 100755 webUI/src/views/acc/dashboard.vue mode change 100644 => 100755 webUI/src/views/acc/incomes/list.vue mode change 100644 => 100755 webUI/src/views/acc/incomes/mod.vue mode change 100644 => 100755 webUI/src/views/acc/notifications/notifications.vue mode change 100644 => 100755 webUI/src/views/acc/persons/card.vue mode change 100644 => 100755 webUI/src/views/acc/persons/insert.vue mode change 100644 => 100755 webUI/src/views/acc/persons/list.vue mode change 100644 => 100755 webUI/src/views/acc/persons/receive/list.vue mode change 100644 => 100755 webUI/src/views/acc/persons/receive/mod.vue mode change 100644 => 100755 webUI/src/views/acc/persons/send/list.vue mode change 100644 => 100755 webUI/src/views/acc/persons/send/mod.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/accpro/intro.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/amartemanma/intro.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/cc/intro.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/ghesta/intro.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/ghesta/list.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/ghesta/mod.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/ghesta/view.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/hrm/docs/list.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/hrm/docs/mod.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/hrm/docs/view.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/hrm/intro.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/noghre/employess/list.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/noghre/employess/mod.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/noghre/intro.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/noghre/order/list.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/noghre/order/mod.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/noghre/order/view.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/noghre/pays.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/onlinestore/dashboard.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/onlinestore/intro.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/repservice/intro.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/repservice/list.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/repservice/mod.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/repservice/view.vue mode change 100644 => 100755 webUI/src/views/acc/plugins/resamap/intro.vue create mode 100644 webUI/src/views/acc/plugins/tax/invoices/list.vue create mode 100755 webUI/src/views/acc/plugins/tax/settings.vue mode change 100644 => 100755 webUI/src/views/acc/presell/list.vue mode change 100644 => 100755 webUI/src/views/acc/presell/mod.vue mode change 100644 => 100755 webUI/src/views/acc/presell/view.vue mode change 100644 => 100755 webUI/src/views/acc/presell/viewInvoice.vue mode change 100644 => 100755 webUI/src/views/acc/printers/list.vue mode change 100644 => 100755 webUI/src/views/acc/printers/printList.vue mode change 100644 => 100755 webUI/src/views/acc/printers/queue.vue mode change 100644 => 100755 webUI/src/views/acc/printers/templates.vue mode change 100644 => 100755 webUI/src/views/acc/reports/balanceSheet.vue mode change 100644 => 100755 webUI/src/views/acc/reports/commodity/buysellByCommodity.vue mode change 100644 => 100755 webUI/src/views/acc/reports/explore_accounts.vue mode change 100644 => 100755 webUI/src/views/acc/reports/persons/buysellByPerson.vue mode change 100644 => 100755 webUI/src/views/acc/reports/persons/debtors.vue mode change 100644 => 100755 webUI/src/views/acc/reports/persons/depositors.vue mode change 100644 => 100755 webUI/src/views/acc/reports/persons/withdet.vue mode change 100644 => 100755 webUI/src/views/acc/reports/reports.vue mode change 100644 => 100755 webUI/src/views/acc/rfbuy/list.vue mode change 100644 => 100755 webUI/src/views/acc/rfbuy/mod.vue mode change 100644 => 100755 webUI/src/views/acc/rfbuy/viewInvoice.vue mode change 100644 => 100755 webUI/src/views/acc/rfsell/list.vue mode change 100644 => 100755 webUI/src/views/acc/rfsell/mod.vue mode change 100644 => 100755 webUI/src/views/acc/rfsell/viewInvoice.vue mode change 100644 => 100755 webUI/src/views/acc/router/index.js mode change 100644 => 100755 webUI/src/views/acc/salary/card.vue mode change 100644 => 100755 webUI/src/views/acc/salary/list.vue mode change 100644 => 100755 webUI/src/views/acc/salary/mod.vue mode change 100644 => 100755 webUI/src/views/acc/sell/fastMod.vue mode change 100644 => 100755 webUI/src/views/acc/sell/list.vue mode change 100644 => 100755 webUI/src/views/acc/sell/mod.vue mode change 100644 => 100755 webUI/src/views/acc/sell/viewInvoice.vue mode change 100644 => 100755 webUI/src/views/acc/settings/avatar.vue mode change 100644 => 100755 webUI/src/views/acc/settings/bussiness.vue mode change 100644 => 100755 webUI/src/views/acc/settings/extramoneys.vue mode change 100644 => 100755 webUI/src/views/acc/settings/logs.vue mode change 100644 => 100755 webUI/src/views/acc/settings/print.vue mode change 100644 => 100755 webUI/src/views/acc/settings/user_perm_edit.vue mode change 100644 => 100755 webUI/src/views/acc/settings/user_rolls.vue mode change 100644 => 100755 webUI/src/views/acc/shareholder/list.vue mode change 100644 => 100755 webUI/src/views/acc/smspanel/smspanel.vue mode change 100644 => 100755 webUI/src/views/acc/store/plugin-invoice.vue mode change 100644 => 100755 webUI/src/views/acc/store/plugin-my.vue mode change 100644 => 100755 webUI/src/views/acc/store/plugin-world.vue mode change 100644 => 100755 webUI/src/views/acc/store/viewProdect.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/commodityCheck/checkByStoreroom.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/io/buy.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/io/modalNew.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/io/rfbuy.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/io/rfsell.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/io/sell.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/io/ticketList.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/io/view.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/list.vue mode change 100644 => 100755 webUI/src/views/acc/storeroom/mod.vue mode change 100644 => 100755 webUI/src/views/acc/transfer/list.vue mode change 100644 => 100755 webUI/src/views/acc/transfer/mod.vue mode change 100644 => 100755 webUI/src/views/acc/ultimatepackage/list.vue mode change 100644 => 100755 webUI/src/views/acc/ultimatepackage/new.vue mode change 100644 => 100755 webUI/src/views/acc/wallet/view.vue mode change 100644 => 100755 webUI/src/views/user/App.vue mode change 100644 => 100755 webUI/src/views/user/InstallPWA.vue mode change 100644 => 100755 webUI/src/views/user/ReferralRedirect.vue mode change 100644 => 100755 webUI/src/views/user/active-account.vue mode change 100644 => 100755 webUI/src/views/user/change-password.vue mode change 100644 => 100755 webUI/src/views/user/login.vue mode change 100644 => 100755 webUI/src/views/user/manager/business/list.vue mode change 100644 => 100755 webUI/src/views/user/manager/log/logs.vue mode change 100644 => 100755 webUI/src/views/user/manager/online-users.vue mode change 100644 => 100755 webUI/src/views/user/manager/reportchange/list.vue mode change 100644 => 100755 webUI/src/views/user/manager/reportchange/mod.vue mode change 100644 => 100755 webUI/src/views/user/manager/settings/database_info.vue mode change 100644 => 100755 webUI/src/views/user/manager/settings/pluginTransactions.vue mode change 100644 => 100755 webUI/src/views/user/manager/settings/plugins.vue mode change 100644 => 100755 webUI/src/views/user/manager/settings/registry.vue mode change 100644 => 100755 webUI/src/views/user/manager/settings/sms/smsSettings.vue mode change 100644 => 100755 webUI/src/views/user/manager/settings/system.vue mode change 100644 => 100755 webUI/src/views/user/manager/settings/update-core.vue mode change 100644 => 100755 webUI/src/views/user/manager/statements/list.vue mode change 100644 => 100755 webUI/src/views/user/manager/statements/mod.vue mode change 100644 => 100755 webUI/src/views/user/manager/support/list.vue mode change 100644 => 100755 webUI/src/views/user/manager/support/show.vue mode change 100644 => 100755 webUI/src/views/user/manager/users/change-password.vue mode change 100644 => 100755 webUI/src/views/user/manager/users/list.vue mode change 100644 => 100755 webUI/src/views/user/manager/wallet/list.vue mode change 100644 => 100755 webUI/src/views/user/profile/add-mobile.vue mode change 100644 => 100755 webUI/src/views/user/profile/business/insert.vue mode change 100644 => 100755 webUI/src/views/user/profile/business/list.vue mode change 100644 => 100755 webUI/src/views/user/profile/dashboard.vue mode change 100644 => 100755 webUI/src/views/user/profile/forget-password-submit-code.vue mode change 100644 => 100755 webUI/src/views/user/profile/forget-password.vue mode change 100644 => 100755 webUI/src/views/user/profile/profile-main.vue mode change 100644 => 100755 webUI/src/views/user/profile/support/list.vue mode change 100644 => 100755 webUI/src/views/user/profile/support/new.vue mode change 100644 => 100755 webUI/src/views/user/profile/support/show.vue mode change 100644 => 100755 webUI/src/views/user/register.vue mode change 100644 => 100755 webUI/src/views/user/single.vue mode change 100644 => 100755 webUI/src/views/wizard/home.vue mode change 100644 => 100755 webUI/tsconfig.config.json mode change 100644 => 100755 webUI/tsconfig.json mode change 100644 => 100755 webUI/vite.config.ts mode change 100644 => 100755 webUI/workbox-config.js diff --git a/hesabixCore/composer.json b/hesabixCore/composer.json index 9140ee64..9d3e9cdf 100644 --- a/hesabixCore/composer.json +++ b/hesabixCore/composer.json @@ -109,7 +109,7 @@ "symfony/browser-kit": "7.2.*", "symfony/css-selector": "7.2.*", "symfony/debug-bundle": "7.2.*", - "symfony/maker-bundle": "^1.62", + "symfony/maker-bundle": "^1.64", "symfony/phpunit-bridge": "^7.2", "symfony/stopwatch": "7.2.*", "symfony/web-profiler-bundle": "7.2.*" diff --git a/hesabixCore/composer.lock b/hesabixCore/composer.lock index 95cb481d..b8798bcf 100644 --- a/hesabixCore/composer.lock +++ b/hesabixCore/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "389f897ebd1e0befdd15876e5d6a43a7", + "content-hash": "fc8e55a0f3d505b2453542a73030d32c", "packages": [ { "name": "brick/math", @@ -11063,21 +11063,21 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.62.1", + "version": "v1.64.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "468ff2708200c95ebc0d85d3174b6c6711b8a590" + "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/468ff2708200c95ebc0d85d3174b6c6711b8a590", - "reference": "468ff2708200c95ebc0d85d3174b6c6711b8a590", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c86da84640b0586e92aee2b276ee3638ef2f425a", + "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a", "shasum": "" }, "require": { "doctrine/inflector": "^2.0", - "nikic/php-parser": "^4.18|^5.0", + "nikic/php-parser": "^5.0", "php": ">=8.1", "symfony/config": "^6.4|^7.0", "symfony/console": "^6.4|^7.0", @@ -11100,6 +11100,7 @@ "symfony/http-client": "^6.4|^7.0", "symfony/phpunit-bridge": "^6.4.1|^7.0", "symfony/security-core": "^6.4|^7.0", + "symfony/security-http": "^6.4|^7.0", "symfony/yaml": "^6.4|^7.0", "twig/twig": "^3.0|^4.x-dev" }, @@ -11135,7 +11136,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.62.1" + "source": "https://github.com/symfony/maker-bundle/tree/v1.64.0" }, "funding": [ { @@ -11151,7 +11152,7 @@ "type": "tidelift" } ], - "time": "2025-01-15T00:21:40+00:00" + "time": "2025-06-23T16:12:08+00:00" }, { "name": "symfony/phpunit-bridge", @@ -11370,7 +11371,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { @@ -11380,6 +11381,6 @@ "ext-fileinfo": "*", "ext-iconv": "*" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } diff --git a/hesabixCore/src/Controller/BusinessController.php b/hesabixCore/src/Controller/BusinessController.php index b04d04d2..76b63ee9 100644 --- a/hesabixCore/src/Controller/BusinessController.php +++ b/hesabixCore/src/Controller/BusinessController.php @@ -544,6 +544,7 @@ class BusinessController extends AbstractController 'plugRepservice' => true, 'plugHrmDocs' => true, 'plugGhestaManager' => true, + 'plugTaxSettings' => true, ]; } elseif ($perm) { $result = [ @@ -587,6 +588,7 @@ class BusinessController extends AbstractController 'plugAccproPresell' => $perm->isPlugAccproPresell(), 'plugHrmDocs' => $perm->isPlugHrmDocs(), 'plugGhestaManager' => $perm->isPlugGhestaManager(), + 'plugTaxSettings' => $perm->isPlugTaxSettings(), ]; } return $this->json($result); diff --git a/hesabixCore/src/Controller/Plugins/TaxSettingsController.php b/hesabixCore/src/Controller/Plugins/TaxSettingsController.php new file mode 100644 index 00000000..2109d9bb --- /dev/null +++ b/hesabixCore/src/Controller/Plugins/TaxSettingsController.php @@ -0,0 +1,484 @@ +hasRole('plugTaxSettings'); + if (!$acc) { + throw $this->createAccessDeniedException('شما دسترسی لازم را ندارید.'); + } + + $businessId = is_object($acc['bid']) ? $acc['bid']->getId() : $acc['bid']; + $userId = $this->getUser()->getId(); + + // دریافت تنظیمات از جدول اختصاصی + $repo = $em->getRepository(PluginTaxsettingsKey::class); + $entity = $repo->findOneBy(['business_id' => $businessId, 'user_id' => $userId]); + + $settings = [ + 'taxMemoryId' => $entity ? $entity->getTaxMemoryId() : '', + 'economicCode' => $entity ? $entity->getEconomicCode() : '', + 'privateKey' => $entity ? $entity->getPrivateKey() : '', + ]; + + return $this->json($settings); + } + + #[Route('/api/plugins/tax/settings/save', name: 'plugin_tax_settings_save', methods: ['POST'])] + public function plugin_tax_settings_save(Request $request, registryMGR $registryMGR, Access $access, Log $log, EntityManagerInterface $em): JsonResponse + { + $acc = $access->hasRole('plugTaxSettings'); + if (!$acc) { + throw $this->createAccessDeniedException('شما دسترسی لازم را ندارید.'); + } + + $params = $request->getPayload()->all(); + $businessId = is_object($acc['bid']) ? $acc['bid']->getId() : $acc['bid']; + $userId = $this->getUser()->getId(); + + // بررسی وجود رکورد قبلی + $repo = $em->getRepository(PluginTaxsettingsKey::class); + $entity = $repo->findOneBy(['business_id' => $businessId, 'user_id' => $userId]); + if (!$entity) { + $entity = new PluginTaxsettingsKey(); + $entity->setBusinessId($businessId); + $entity->setUserId($userId); + $entity->setCreatedAt(new \DateTime()); + } + $entity->setPrivateKey($params['privateKey'] ?? ''); + $entity->setTaxMemoryId($params['taxMemoryId'] ?? null); + $entity->setEconomicCode($params['economicCode'] ?? null); + $entity->setUpdatedAt(new \DateTime()); + + $em->persist($entity); + $em->flush(); + + $log->insert('تنظیمات مالیاتی', 'تنظیمات مالیاتی ذخیره شد (در جدول اختصاصی)', $this->getUser(), $businessId); + + return $this->json(['success' => true, 'message' => 'تنظیمات با موفقیت ذخیره شد']); + } + + private function generatePrivateKey(): string + { + // تولید کلید خصوصی واقعی با OpenSSL + $config = [ + "private_key_bits" => 2048, + "private_key_type" => OPENSSL_KEYTYPE_RSA, + ]; + + $res = openssl_pkey_new($config); + if (!$res) { + throw new \Exception('خطا در تولید کلید خصوصی: ' . openssl_error_string()); + } + + $privateKey = ''; + if (!openssl_pkey_export($res, $privateKey)) { + throw new \Exception('خطا در استخراج کلید خصوصی: ' . openssl_error_string()); + } + + openssl_pkey_free($res); + return $privateKey; + } + + private function generatePublicKey(string $privateKey): string + { + // استخراج کلید عمومی از کلید خصوصی + $res = openssl_pkey_get_private($privateKey); + if (!$res) { + throw new \Exception('خطا در خواندن کلید خصوصی: ' . openssl_error_string()); + } + + $keyDetails = openssl_pkey_get_details($res); + if (!$keyDetails) { + throw new \Exception('خطا در استخراج جزئیات کلید: ' . openssl_error_string()); + } + + openssl_pkey_free($res); + return $keyDetails['key']; + } + + #[Route('/api/plugins/tax/settings/generate-csr', name: 'plugin_tax_settings_generate_csr', methods: ['POST'])] + public function plugin_tax_settings_generate_csr(Request $request, registryMGR $registryMGR, Access $access, Log $log): JsonResponse + { + $acc = $access->hasRole('plugTaxSettings'); + if (!$acc) { + throw $this->createAccessDeniedException('شما دسترسی لازم را ندارید.'); + } + + $params = $request->getPayload()->all(); + + // بررسی فیلدهای اجباری + if (empty($params['nationalId']) || empty($params['nameFa']) || empty($params['nameEn']) || empty($params['email'])) { + return $this->json([ + 'success' => false, + 'message' => 'تمام فیلدها الزامی هستند' + ]); + } + + try { + $privateKey = $this->generatePrivateKey(); + $publicKey = $this->generatePublicKey($privateKey); + $csr = $this->generateCSR($privateKey, $params); + + // هیچ ذخیره‌ای در دیتابیس انجام نمی‌شود + $businessId = is_object($acc['bid']) ? $acc['bid']->getId() : $acc['bid']; + $log->insert('تنظیمات مالیاتی', 'کلید و CSR تولید شد (بدون ذخیره)', $this->getUser(), $businessId); + + return $this->json([ + 'success' => true, + 'message' => 'کلید و CSR با موفقیت تولید شد', + 'privateKey' => $privateKey, + 'publicKey' => $publicKey, + 'csr' => $csr + ]); + } catch (\Exception $e) { + return $this->json([ + 'success' => false, + 'message' => 'خطا در تولید کلید و CSR: ' . $e->getMessage() + ]); + } + } + + private function generateCSR(string $privateKey, array $params): string + { + // تولید CSR واقعی با OpenSSL + $dn = [ + "countryName" => "IR", + "stateOrProvinceName" => "Tehran", + "localityName" => "Tehran", + "organizationName" => $params['nameEn'], + "organizationalUnitName" => "Tax Department", + "commonName" => $params['nameFa'], + "emailAddress" => $params['email'] + ]; + + // اضافه کردن شناسه ملی به عنوان extension + $config = [ + "req" => [ + "distinguished_name" => $dn, + "req_extensions" => "v3_req", + "x509_extensions" => "v3_req" + ], + "v3_req" => [ + "subjectAltName" => "email:" . $params['email'], + "subjectKeyIdentifier" => "hash" + ] + ]; + + // ایجاد CSR + $res = openssl_csr_new($dn, $privateKey, [ + 'config' => $config, + 'digest_alg' => 'sha256', + 'req_extensions' => 'v3_req' + ]); + + if (!$res) { + throw new \Exception('خطا در تولید CSR: ' . openssl_error_string()); + } + + $csr = ''; + if (!openssl_csr_export($res, $csr)) { + throw new \Exception('خطا در استخراج CSR: ' . openssl_error_string()); + } + + return $csr; + } + + #[Route('/api/plugins/tax/settings/send-invoice', name: 'plugin_tax_settings_send_invoice', methods: ['POST'])] + public function plugin_tax_settings_send_invoice(Request $request, Access $access, Log $log, EntityManagerInterface $em): JsonResponse + { + $acc = $access->hasRole('plugTaxSettings'); + if (!$acc) { + throw $this->createAccessDeniedException('شما دسترسی لازم را ندارید.'); + } + + $params = $request->getPayload()->all(); + $invoiceCode = $params['code'] ?? null; + + if (!$invoiceCode) { + return $this->json([ + 'success' => false, + 'message' => 'کد فاکتور الزامی است' + ]); + } + + $businessId = is_object($acc['bid']) ? $acc['bid']->getId() : $acc['bid']; + $userId = $this->getUser()->getId(); + + try { + // دریافت اطلاعات فاکتور از دیتابیس + $invoiceRepo = $em->getRepository(HesabdariDoc::class); + $invoice = $invoiceRepo->findOneBy([ + 'code' => $invoiceCode, + 'bid' => $businessId, + 'type' => 'sell' + ]); + + if (!$invoice) { + return $this->json([ + 'success' => false, + 'message' => 'فاکتور مورد نظر یافت نشد' + ]); + } + + // دریافت تنظیمات مالیاتی + $taxRepo = $em->getRepository(PluginTaxsettingsKey::class); + $taxSettings = $taxRepo->findOneBy([ + 'business_id' => $businessId, + 'user_id' => $userId + ]); + + if (!$taxSettings || !$taxSettings->getPrivateKey()) { + return $this->json([ + 'success' => false, + 'message' => 'تنظیمات مالیاتی تکمیل نشده است. لطفاً ابتدا تنظیمات را تکمیل کنید.' + ]); + } + + // اینجا کد ارسال به سامانه مودیان قرار می‌گیرد + // فعلاً فقط پیام موفقیت برمی‌گردانیم + $result = $this->sendInvoiceToTaxSystem($invoice, $taxSettings, $em, $businessId, $userId); + + if ($result['success']) { + $log->insert('ارسال به سامانه مودیان', 'فاکتور ' . $invoiceCode . ' به سامانه مودیان ارسال شد', $this->getUser(), $businessId); + + return $this->json([ + 'success' => true, + 'message' => 'فاکتور با موفقیت به سامانه مودیان ارسال شد', + 'data' => $result['data'] ?? null + ]); + } else { + return $this->json([ + 'success' => false, + 'message' => $result['message'] ?? 'خطا در ارسال به سامانه مودیان' + ]); + } + + } catch (\Exception $e) { + $log->insert('خطا در ارسال به سامانه مودیان', 'خطا در ارسال فاکتور ' . $invoiceCode . ': ' . $e->getMessage(), $this->getUser(), $businessId); + + return $this->json([ + 'success' => false, + 'message' => 'خطا در ارسال به سامانه مودیان: ' . $e->getMessage() + ]); + } + } + + private function sendInvoiceToTaxSystem($invoice, $taxSettings, $em, $businessId, $userId): array + { + try { + // بررسی اینکه آیا این فاکتور قبلاً ارسال شده یا نه + $taxInvoiceRepo = $em->getRepository(PluginTaxInvoice::class); + $existingRecord = $taxInvoiceRepo->findByInvoiceCodeAndBusiness($invoice->getCode(), $businessId); + + if ($existingRecord) { + return [ + 'success' => false, + 'message' => 'این فاکتور قبلاً به سامانه مودیان ارسال شده است.' + ]; + } + + // ایجاد رکورد جدید + $taxInvoice = new PluginTaxInvoice(); + $taxInvoice->setBusiness($em->getRepository(\App\Entity\Business::class)->find($businessId)); + $taxInvoice->setUser($em->getRepository(\App\Entity\User::class)->find($userId)); + $taxInvoice->setInvoice($invoice); + $taxInvoice->setInvoiceCode($invoice->getCode()); + $taxInvoice->setAmount($invoice->getAmount()); + $taxInvoice->setStatus('pending'); + + // دریافت اطلاعات مشتری + $customerName = null; + $customerId = null; + $rows = $invoice->getHesabdariRows(); + foreach ($rows as $row) { + if ($row->getPerson()) { + $customerName = $row->getPerson()->getNikename(); + $customerId = $row->getPerson()->getCode(); + break; + } + } + $taxInvoice->setCustomerName($customerName); + $taxInvoice->setCustomerId($customerId); + + // ذخیره رکورد + $em->persist($taxInvoice); + $em->flush(); + + // اینجا کد واقعی ارسال به سامانه مودیان قرار می‌گیرد + // فعلاً یک پیام موفقیت برمی‌گردانیم + + // مثال کد ارسال به API سامانه مودیان: + /* + $invoiceData = + invoiceNumber => $invoice->getCode(), + date => $invoice->getDate(), + totalAmount => $invoice->getAmount(), + customerName=> $customerName, + customerNationalId' => $customerNationalId, + // سایر اطلاعات فاکتور + ]; + + $response = $this->callTaxSystemAPI($invoiceData, $taxSettings); + + if ($response['success']) { + // به‌روزرسانی وضعیت به sent + $taxInvoice->setStatus('sent'); + $taxInvoice->setSentAt(new \DateTimeImmutable()); + $taxInvoice->setTaxSystemInvoiceNumber($response['data']['invoiceNumber'] ?? null); + $taxInvoice->setTaxSystemReferenceNumber($response['data']['referenceNumber'] ?? null); + $taxInvoice->setResponseData(json_encode($response['data'])); + $em->flush(); + + return [ + success' => true, + data' => $response['data] ]; + } else { + // به‌روزرسانی وضعیت به failed + $taxInvoice->setStatus('failed'); + $taxInvoice->setErrorMessage($response['message']); + $em->flush(); + + return [ + success' => false, + message' => $response['message] ]; + } + */ + + // فعلاً برای تست، پیام موفقیت برمی‌گردانیم + $taxInvoice->setStatus('sent'); + $taxInvoice->setSentAt(new \DateTimeImmutable()); + $taxInvoice->setTaxSystemInvoiceNumber('TAX-' . $invoice->getCode()); + $taxInvoice->setTaxSystemReferenceNumber('REF-' . $invoice->getCode()); + $taxInvoice->setResponseData(json_encode(['status' => 'success', 'message' => 'Test response'])); + $em->flush(); + + return [ + 'success' => true, + 'data' => [ + 'invoiceNumber' => $invoice->getCode(), + 'taxSystemInvoiceNumber' => $taxInvoice->getTaxSystemInvoiceNumber(), + 'taxSystemReferenceNumber' => $taxInvoice->getTaxSystemReferenceNumber(), + 'sentAt' => $taxInvoice->getSentAt()->format('Y-m-d H:i:s') + ] + ]; + + } catch (\Exception $e) { + // در صورت خطا، وضعیت را به failed تغییر دهید + if (isset($taxInvoice)) { + $taxInvoice->setStatus('failed'); + $taxInvoice->setErrorMessage($e->getMessage()); + $em->flush(); + } + + return [ + 'success' => false, + 'message' => 'خطا در ارسال به سامانه مودیان: ' . $e->getMessage() + ]; + } + } + + #[Route('/api/plugins/tax/invoices/list', name: 'plugin_tax_settings_invoices_list', methods: ['GET'])] + public function plugin_tax_settings_invoices_list(Request $request, Access $access, EntityManagerInterface $em): JsonResponse + { + $acc = $access->hasRole('plugTaxSettings'); + if (!$acc) { + throw $this->createAccessDeniedException('شما دسترسی لازم را ندارید.'); + } + + $businessId = is_object($acc['bid']) ? $acc['bid']->getId() : $acc['bid']; + + try { + $taxInvoiceRepo = $em->getRepository(PluginTaxInvoice::class); + $invoices = $taxInvoiceRepo->findByBusiness($businessId); + + $result = []; + foreach ($invoices as $taxInvoice) { + $invoice = $taxInvoice->getInvoice(); + + // دریافت اطلاعات کامل فاکتور اصلی + $invoiceDetails = null; + if ($invoice) { + $invoiceDetails = [ + 'id' => $invoice->getId(), + 'code' => $invoice->getCode(), + 'date' => $invoice->getDate(), + 'des' => $invoice->getDes(), + 'amount' => $invoice->getAmount(), + 'type' => $invoice->getType(), + 'status' => $invoice->getStatus(), + 'shortlink' => $invoice->getShortlink(), + 'taxPercent' => $invoice->getTaxPercent(), + 'discountType' => $invoice->getDiscountType(), + 'discountPercent' => $invoice->getDiscountPercent() + ]; + } + + $result[] = [ + 'id' => $taxInvoice->getId(), + 'invoiceNumber' => $taxInvoice->getInvoiceCode(), + 'date' => $invoice ? $invoice->getDate() : null, + 'customerName' => $taxInvoice->getCustomerName(), + 'customerId' => $taxInvoice->getCustomerId(), + 'totalAmount' => $taxInvoice->getAmount(), + 'status' => $taxInvoice->getStatus(), + 'sentDate' => $taxInvoice->getSentAt() ? $taxInvoice->getSentAt()->format('Y-m-d H:i:s') : null, + 'errorMessage' => $taxInvoice->getErrorMessage(), + 'createdAt' => $taxInvoice->getCreatedAt()->format('Y-m-d H:i:s'), + 'uniqueTaxNumber' => $taxInvoice->getTaxSystemInvoiceNumber(), + 'referenceUniqueTaxNumber' => $taxInvoice->getTaxSystemReferenceNumber(), + 'invoiceType' => $this->getInvoiceType($invoice), + 'invoiceDetails' => $invoiceDetails + ]; + } + + return $this->json([ + 'success' => true, + 'data' => $result + ]); + + } catch (\Exception $e) { + return $this->json([ + 'success' => false, + 'message' => 'خطا در دریافت لیست فاکتورها: ' . $e->getMessage() + ]); + } + } + + private function getInvoiceType($invoice): string + { + if (!$invoice) { + return 'اصلی'; + } + + switch ($invoice->getType()) { + case 'sell': + return 'اصلی'; + case 'return_sell': + return 'برگشت از فروش'; + case 'correction': + return 'اصلاحی'; + case 'cancel': + return 'ابطالی'; + default: + return 'اصلی'; + } + } +} \ No newline at end of file diff --git a/hesabixCore/src/Entity/Permission.php b/hesabixCore/src/Entity/Permission.php index e5631356..47aedd1b 100644 --- a/hesabixCore/src/Entity/Permission.php +++ b/hesabixCore/src/Entity/Permission.php @@ -129,6 +129,9 @@ class Permission #[ORM\Column(nullable: true)] private ?bool $plugGhestaManager = null; + #[ORM\Column(nullable: true)] + private ?bool $plugTaxSettings = null; + public function getId(): ?int { return $this->id; @@ -590,4 +593,16 @@ class Permission return $this; } + public function isPlugTaxSettings(): ?bool + { + return $this->plugTaxSettings; + } + + public function setPlugTaxSettings(?bool $plugTaxSettings): static + { + $this->plugTaxSettings = $plugTaxSettings; + + return $this; + } + } diff --git a/hesabixCore/src/Entity/PluginTaxInvoice.php b/hesabixCore/src/Entity/PluginTaxInvoice.php new file mode 100644 index 00000000..737f8308 --- /dev/null +++ b/hesabixCore/src/Entity/PluginTaxInvoice.php @@ -0,0 +1,239 @@ +createdAt = new \DateTimeImmutable(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getBusiness(): ?Business + { + return $this->business; + } + + public function setBusiness(?Business $business): static + { + $this->business = $business; + return $this; + } + + public function getUser(): ?User + { + return $this->user; + } + + public function setUser(?User $user): static + { + $this->user = $user; + return $this; + } + + public function getInvoice(): ?HesabdariDoc + { + return $this->invoice; + } + + public function setInvoice(?HesabdariDoc $invoice): static + { + $this->invoice = $invoice; + return $this; + } + + public function getInvoiceCode(): ?string + { + return $this->invoiceCode; + } + + public function setInvoiceCode(string $invoiceCode): static + { + $this->invoiceCode = $invoiceCode; + return $this; + } + + public function getTaxSystemInvoiceNumber(): ?string + { + return $this->taxSystemInvoiceNumber; + } + + public function setTaxSystemInvoiceNumber(?string $taxSystemInvoiceNumber): static + { + $this->taxSystemInvoiceNumber = $taxSystemInvoiceNumber; + return $this; + } + + public function getTaxSystemReferenceNumber(): ?string + { + return $this->taxSystemReferenceNumber; + } + + public function setTaxSystemReferenceNumber(?string $taxSystemReferenceNumber): static + { + $this->taxSystemReferenceNumber = $taxSystemReferenceNumber; + return $this; + } + + public function getStatus(): ?string + { + return $this->status; + } + + public function setStatus(string $status): static + { + $this->status = $status; + return $this; + } + + public function getResponseData(): ?string + { + return $this->responseData; + } + + public function setResponseData(?string $responseData): static + { + $this->responseData = $responseData; + return $this; + } + + public function getErrorMessage(): ?string + { + return $this->errorMessage; + } + + public function setErrorMessage(?string $errorMessage): static + { + $this->errorMessage = $errorMessage; + return $this; + } + + public function getCreatedAt(): ?\DateTimeImmutable + { + return $this->createdAt; + } + + public function setCreatedAt(\DateTimeImmutable $createdAt): static + { + $this->createdAt = $createdAt; + return $this; + } + + public function getSentAt(): ?\DateTimeImmutable + { + return $this->sentAt; + } + + public function setSentAt(?\DateTimeImmutable $sentAt): static + { + $this->sentAt = $sentAt; + return $this; + } + + public function getConfirmedAt(): ?\DateTimeImmutable + { + return $this->confirmedAt; + } + + public function setConfirmedAt(?\DateTimeImmutable $confirmedAt): static + { + $this->confirmedAt = $confirmedAt; + return $this; + } + + public function getAmount(): ?string + { + return $this->amount; + } + + public function setAmount(string $amount): static + { + $this->amount = $amount; + return $this; + } + + public function getCustomerName(): ?string + { + return $this->customerName; + } + + public function setCustomerName(?string $customerName): static + { + $this->customerName = $customerName; + return $this; + } + + public function getCustomerId(): ?string + { + return $this->customerId; + } + + public function setCustomerId(?string $customerId): static + { + $this->customerId = $customerId; + return $this; + } +} \ No newline at end of file diff --git a/hesabixCore/src/Entity/PluginTaxsettingsKey.php b/hesabixCore/src/Entity/PluginTaxsettingsKey.php new file mode 100644 index 00000000..f7d88e6f --- /dev/null +++ b/hesabixCore/src/Entity/PluginTaxsettingsKey.php @@ -0,0 +1,53 @@ +id; } + public function getBusinessId() { return $this->business_id; } + public function setBusinessId($val) { $this->business_id = $val; } + public function getUserId() { return $this->user_id; } + public function setUserId($val) { $this->user_id = $val; } + public function getPrivateKey() { return $this->private_key; } + public function setPrivateKey($val) { $this->private_key = $val; } + public function getTaxMemoryId() { return $this->tax_memory_id; } + public function setTaxMemoryId($val) { $this->tax_memory_id = $val; } + public function getEconomicCode() { return $this->economic_code; } + public function setEconomicCode($val) { $this->economic_code = $val; } + public function getCreatedAt() { return $this->created_at; } + public function setCreatedAt($val) { $this->created_at = $val; } + public function getUpdatedAt() { return $this->updated_at; } + public function setUpdatedAt($val) { $this->updated_at = $val; } +} \ No newline at end of file diff --git a/hesabixCore/src/Repository/PluginTaxInvoiceRepository.php b/hesabixCore/src/Repository/PluginTaxInvoiceRepository.php new file mode 100644 index 00000000..06f5f946 --- /dev/null +++ b/hesabixCore/src/Repository/PluginTaxInvoiceRepository.php @@ -0,0 +1,106 @@ + + * + * @method PluginTaxInvoice|null find($id, $lockMode = null, $lockVersion = null) + * @method PluginTaxInvoice|null findOneBy(array $criteria, array $orderBy = null) + * @method PluginTaxInvoice findAll() + * @method PluginTaxInvoice findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class PluginTaxInvoiceRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, PluginTaxInvoice::class); + } + + public function save(PluginTaxInvoice $entity, bool $flush = false): void + { + $this->getEntityManager()->persist($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + + public function remove(PluginTaxInvoice $entity, bool $flush = false): void + { + $this->getEntityManager()->remove($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + + /** + * پیدا کردن فاکتورهای ارسال شده برای یک کسب‌و‌کار + */ + public function findByBusiness($businessId, $limit = null, $offset = null) + { + $qb = $this->createQueryBuilder('pti') + ->leftJoin('pti.invoice', 'invoice') + ->leftJoin('pti.user', 'user') + ->where('pti.business = :businessId') + ->setParameter('businessId', $businessId) + ->orderBy('pti.createdAt', 'DESC'); + if ($limit) { + $qb->setMaxResults($limit); + } + if ($offset) { + $qb->setFirstResult($offset); + } + + return $qb->getQuery()->getResult(); + } + + /** + * پیدا کردن فاکتور بر اساس کد فاکتور و کسب‌و‌کار + */ + public function findByInvoiceCodeAndBusiness($invoiceCode, $businessId) + { + return $this->createQueryBuilder('pti') + ->where('pti.invoiceCode = :invoiceCode') + ->andWhere('pti.business = :businessId') + ->setParameter('invoiceCode', $invoiceCode) + ->setParameter('businessId', $businessId) + ->getQuery() + ->getOneOrNullResult(); + } + + /** + * آمار فاکتورهای ارسال شده بر اساس وضعیت + */ + public function getStatusStats($businessId) + { + $qb = $this->createQueryBuilder('pti') + ->select('pti.status, COUNT(pti.id) as count') + ->where('pti.business = :businessId') + ->setParameter('businessId', $businessId) + ->groupBy('pti.status'); + + return $qb->getQuery()->getResult(); + } + + /** + * فاکتورهای با وضعیت مشخص + */ + public function findByStatus($businessId, $status) + { + return $this->createQueryBuilder('pti') + ->leftJoin('pti.invoice', 'invoice') + ->where('pti.business = :businessId') + ->andWhere('pti.status = :status') + ->setParameter('businessId', $businessId) + ->setParameter('status', $status) + ->orderBy('pti.createdAt', 'DESC') + ->getQuery() + ->getResult(); + } +} \ No newline at end of file diff --git a/hesabixCore/symfony.lock b/hesabixCore/symfony.lock index eca69b11..d2398b56 100644 --- a/hesabixCore/symfony.lock +++ b/hesabixCore/symfony.lock @@ -8,6 +8,15 @@ "ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05" } }, + "doctrine/deprecations": { + "version": "1.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "87424683adc81d7dc305eefec1fced883084aab9" + } + }, "doctrine/doctrine-bundle": { "version": "2.10", "recipe": { diff --git a/webUI/.github/workflows/release.yml b/webUI/.github/workflows/release.yml old mode 100644 new mode 100755 diff --git a/webUI/.gitignore b/webUI/.gitignore old mode 100644 new mode 100755 diff --git a/webUI/LICENSE b/webUI/LICENSE old mode 100644 new mode 100755 diff --git a/webUI/env.d.ts b/webUI/env.d.ts old mode 100644 new mode 100755 diff --git a/webUI/index.html b/webUI/index.html old mode 100644 new mode 100755 diff --git a/webUI/package.json b/webUI/package.json old mode 100644 new mode 100755 diff --git a/webUI/public/.htaccess b/webUI/public/.htaccess old mode 100644 new mode 100755 diff --git a/webUI/public/dashmix/dashmix.app.min.js b/webUI/public/dashmix/dashmix.app.min.js old mode 100644 new mode 100755 diff --git a/webUI/public/dashmix/dashmix.min.css b/webUI/public/dashmix/dashmix.min.css old mode 100644 new mode 100755 diff --git a/webUI/public/favicon.ico b/webUI/public/favicon.ico old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/fontawesome/fa-brands-400.ttf b/webUI/public/fonts/fontawesome/fa-brands-400.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/fontawesome/fa-brands-400.woff2 b/webUI/public/fonts/fontawesome/fa-brands-400.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/fontawesome/fa-regular-400.ttf b/webUI/public/fonts/fontawesome/fa-regular-400.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/fontawesome/fa-regular-400.woff2 b/webUI/public/fonts/fontawesome/fa-regular-400.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/fontawesome/fa-solid-900.ttf b/webUI/public/fonts/fontawesome/fa-solid-900.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/fontawesome/fa-solid-900.woff2 b/webUI/public/fonts/fontawesome/fa-solid-900.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/fontawesome/fa-v4compatibility.ttf b/webUI/public/fonts/fontawesome/fa-v4compatibility.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/fontawesome/fa-v4compatibility.woff2 b/webUI/public/fonts/fontawesome/fa-v4compatibility.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/inter/inter-v11-latin-300.woff2 b/webUI/public/fonts/inter/inter-v11-latin-300.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/inter/inter-v11-latin-500.woff2 b/webUI/public/fonts/inter/inter-v11-latin-500.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/inter/inter-v11-latin-600.woff2 b/webUI/public/fonts/inter/inter-v11-latin-600.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/inter/inter-v11-latin-700.woff2 b/webUI/public/fonts/inter/inter-v11-latin-700.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/inter/inter-v11-latin-800.woff2 b/webUI/public/fonts/inter/inter-v11-latin-800.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/inter/inter-v11-latin-900.woff2 b/webUI/public/fonts/inter/inter-v11-latin-900.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/inter/inter-v11-latin-regular.woff2 b/webUI/public/fonts/inter/inter-v11-latin-regular.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Black-FD.eot b/webUI/public/fonts/sahel/Sahel-Black-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Black-FD.ttf b/webUI/public/fonts/sahel/Sahel-Black-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Black-FD.woff b/webUI/public/fonts/sahel/Sahel-Black-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Black-FD.woff2 b/webUI/public/fonts/sahel/Sahel-Black-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Bold-FD.eot b/webUI/public/fonts/sahel/Sahel-Bold-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Bold-FD.ttf b/webUI/public/fonts/sahel/Sahel-Bold-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Bold-FD.woff b/webUI/public/fonts/sahel/Sahel-Bold-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Bold-FD.woff2 b/webUI/public/fonts/sahel/Sahel-Bold-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-FD.eot b/webUI/public/fonts/sahel/Sahel-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-FD.ttf b/webUI/public/fonts/sahel/Sahel-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-FD.woff b/webUI/public/fonts/sahel/Sahel-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-FD.woff2 b/webUI/public/fonts/sahel/Sahel-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Light-FD.eot b/webUI/public/fonts/sahel/Sahel-Light-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Light-FD.ttf b/webUI/public/fonts/sahel/Sahel-Light-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Light-FD.woff b/webUI/public/fonts/sahel/Sahel-Light-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-Light-FD.woff2 b/webUI/public/fonts/sahel/Sahel-Light-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-SemiBold-FD.eot b/webUI/public/fonts/sahel/Sahel-SemiBold-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-SemiBold-FD.ttf b/webUI/public/fonts/sahel/Sahel-SemiBold-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-SemiBold-FD.woff b/webUI/public/fonts/sahel/Sahel-SemiBold-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/Sahel-SemiBold-FD.woff2 b/webUI/public/fonts/sahel/Sahel-SemiBold-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/sahel/sahel.css b/webUI/public/fonts/sahel/sahel.css old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Bold-FD.eot b/webUI/public/fonts/shabnam/Shabnam-Bold-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Bold-FD.ttf b/webUI/public/fonts/shabnam/Shabnam-Bold-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Bold-FD.woff b/webUI/public/fonts/shabnam/Shabnam-Bold-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Bold-FD.woff2 b/webUI/public/fonts/shabnam/Shabnam-Bold-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-FD.eot b/webUI/public/fonts/shabnam/Shabnam-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-FD.ttf b/webUI/public/fonts/shabnam/Shabnam-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-FD.woff b/webUI/public/fonts/shabnam/Shabnam-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-FD.woff2 b/webUI/public/fonts/shabnam/Shabnam-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Light-FD.eot b/webUI/public/fonts/shabnam/Shabnam-Light-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Light-FD.ttf b/webUI/public/fonts/shabnam/Shabnam-Light-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Light-FD.woff b/webUI/public/fonts/shabnam/Shabnam-Light-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Light-FD.woff2 b/webUI/public/fonts/shabnam/Shabnam-Light-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Medium-FD.eot b/webUI/public/fonts/shabnam/Shabnam-Medium-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Medium-FD.ttf b/webUI/public/fonts/shabnam/Shabnam-Medium-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Medium-FD.woff b/webUI/public/fonts/shabnam/Shabnam-Medium-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Medium-FD.woff2 b/webUI/public/fonts/shabnam/Shabnam-Medium-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Thin-FD.eot b/webUI/public/fonts/shabnam/Shabnam-Thin-FD.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Thin-FD.ttf b/webUI/public/fonts/shabnam/Shabnam-Thin-FD.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Thin-FD.woff b/webUI/public/fonts/shabnam/Shabnam-Thin-FD.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/Shabnam-Thin-FD.woff2 b/webUI/public/fonts/shabnam/Shabnam-Thin-FD.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/shabnam/shabnam.css b/webUI/public/fonts/shabnam/shabnam.css old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.eot b/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.eot old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.svg b/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.svg old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.ttf b/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.woff b/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.woff old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.woff2 b/webUI/public/fonts/simple-line-icons/Simple-Line-Icons.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/ttf/Vazirmatn-Black.ttf b/webUI/public/fonts/vazir/ttf/Vazirmatn-Black.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/ttf/Vazirmatn-Bold.ttf b/webUI/public/fonts/vazir/ttf/Vazirmatn-Bold.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/ttf/Vazirmatn-ExtraBold.ttf b/webUI/public/fonts/vazir/ttf/Vazirmatn-ExtraBold.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/ttf/Vazirmatn-ExtraLight.ttf b/webUI/public/fonts/vazir/ttf/Vazirmatn-ExtraLight.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/ttf/Vazirmatn-Light.ttf b/webUI/public/fonts/vazir/ttf/Vazirmatn-Light.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/ttf/Vazirmatn-Medium.ttf b/webUI/public/fonts/vazir/ttf/Vazirmatn-Medium.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/ttf/Vazirmatn-Regular.ttf b/webUI/public/fonts/vazir/ttf/Vazirmatn-Regular.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/ttf/Vazirmatn-SemiBold.ttf b/webUI/public/fonts/vazir/ttf/Vazirmatn-SemiBold.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/ttf/Vazirmatn-Thin.ttf b/webUI/public/fonts/vazir/ttf/Vazirmatn-Thin.ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/variable/Vazirmatn[wght].ttf b/webUI/public/fonts/vazir/variable/Vazirmatn[wght].ttf old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/vazir.css b/webUI/public/fonts/vazir/vazir.css old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-Black.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-Black.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-Bold.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-Bold.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-ExtraBold.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-ExtraBold.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-ExtraLight.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-ExtraLight.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Black.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Black.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Bold.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Bold.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-ExtraBold.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-ExtraBold.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-ExtraLight.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-ExtraLight.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Light.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Light.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Medium.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Medium.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Regular.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Regular.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-SemiBold.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-SemiBold.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Thin.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-FD-Thin.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-Light.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-Light.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-Medium.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-Medium.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-Regular.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-Regular.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-SemiBold.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-SemiBold.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn-Thin.woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn-Thin.woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/fonts/vazir/webfonts/Vazirmatn[wght].woff2 b/webUI/public/fonts/vazir/webfonts/Vazirmatn[wght].woff2 old mode 100644 new mode 100755 diff --git a/webUI/public/img/404.gif b/webUI/public/img/404.gif old mode 100644 new mode 100755 diff --git a/webUI/public/img/android-chrome-192x192.png b/webUI/public/img/android-chrome-192x192.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/android-chrome-512x512.png b/webUI/public/img/android-chrome-512x512.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/apple-touch-icon.png b/webUI/public/img/apple-touch-icon.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/avatar.jpg b/webUI/public/img/avatar.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/avatar.png b/webUI/public/img/avatar.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/avatar.webp b/webUI/public/img/avatar.webp old mode 100644 new mode 100755 diff --git a/webUI/public/img/banner1.jpg b/webUI/public/img/banner1.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/bg_side_overlay_header.jpg b/webUI/public/img/bg_side_overlay_header.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/cover.jpg b/webUI/public/img/cover.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/enamad-logo.png b/webUI/public/img/enamad-logo.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/favicon-16x16.png b/webUI/public/img/favicon-16x16.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/favicon-32x32.png b/webUI/public/img/favicon-32x32.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/favicon.ico b/webUI/public/img/favicon.ico old mode 100644 new mode 100755 diff --git a/webUI/public/img/favicons/apple-touch-icon-180x180.png b/webUI/public/img/favicons/apple-touch-icon-180x180.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/favicons/favicon-192x192.png b/webUI/public/img/favicons/favicon-192x192.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/favicons/favicon.ico b/webUI/public/img/favicons/favicon.ico old mode 100644 new mode 100755 diff --git a/webUI/public/img/favicons/favicon.png b/webUI/public/img/favicons/favicon.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/favicons/favw.png b/webUI/public/img/favicons/favw.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/favw.png b/webUI/public/img/favw.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/bale-logo.png b/webUI/public/img/icons/bale-logo.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/bank.jpg b/webUI/public/img/icons/bank.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/business.png b/webUI/public/img/icons/business.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/cashdesk.jpg b/webUI/public/img/icons/cashdesk.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/check.jpg b/webUI/public/img/icons/check.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/eitaa.jpeg b/webUI/public/img/icons/eitaa.jpeg old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/melipayamak.png b/webUI/public/img/icons/melipayamak.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/robika.png b/webUI/public/img/icons/robika.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/salary.jpg b/webUI/public/img/icons/salary.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/telegram.png b/webUI/public/img/icons/telegram.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/wallet.png b/webUI/public/img/icons/wallet.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/warehouse.jpg b/webUI/public/img/icons/warehouse.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/icons/zarinpal.png b/webUI/public/img/icons/zarinpal.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo-blue.png b/webUI/public/img/logo-blue.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo/homescreen144.png b/webUI/public/img/logo/homescreen144.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo/homescreen168.png b/webUI/public/img/logo/homescreen168.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo/homescreen192.png b/webUI/public/img/logo/homescreen192.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo/homescreen256.png b/webUI/public/img/logo/homescreen256.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo/homescreen48.png b/webUI/public/img/logo/homescreen48.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo/homescreen512.png b/webUI/public/img/logo/homescreen512.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo/homescreen72.png b/webUI/public/img/logo/homescreen72.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo/homescreen96.png b/webUI/public/img/logo/homescreen96.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/logo/logo500.png b/webUI/public/img/logo/logo500.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/payways/pec.ir.png b/webUI/public/img/payways/pec.ir.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/payways/zarinpal-logo-min.png b/webUI/public/img/payways/zarinpal-logo-min.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/accpro.png b/webUI/public/img/plugins/accpro.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/accpro/intro.png b/webUI/public/img/plugins/accpro/intro.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/apartemanma.jpg b/webUI/public/img/plugins/apartemanma.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/apartemanma/drawer.jpg b/webUI/public/img/plugins/apartemanma/drawer.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/apartemanma/intro.jpg b/webUI/public/img/plugins/apartemanma/intro.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/club.webp b/webUI/public/img/plugins/club.webp old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/ghesta.png b/webUI/public/img/plugins/ghesta.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/hmr.jpg b/webUI/public/img/plugins/hmr.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/noghrekoob.jpeg b/webUI/public/img/plugins/noghrekoob.jpeg old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/onlinestore.webp b/webUI/public/img/plugins/onlinestore.webp old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/onlinestore/intro.webp b/webUI/public/img/plugins/onlinestore/intro.webp old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/repservice.jpg b/webUI/public/img/plugins/repservice.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/repservice.png b/webUI/public/img/plugins/repservice.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/rest.jpg b/webUI/public/img/plugins/rest.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/plugins/taxplugin.jpg b/webUI/public/img/plugins/taxplugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b2765dcb0b02393922570ddd45d84df533b7e16 GIT binary patch literal 86916 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 literal 0 HcmV?d00001 diff --git a/webUI/public/img/sabavision.gif b/webUI/public/img/sabavision.gif old mode 100644 new mode 100755 diff --git a/webUI/public/img/site.webmanifest b/webUI/public/img/site.webmanifest old mode 100644 new mode 100755 diff --git a/webUI/public/img/whatsapp.png b/webUI/public/img/whatsapp.png old mode 100644 new mode 100755 diff --git a/webUI/public/img/wp.jpg b/webUI/public/img/wp.jpg old mode 100644 new mode 100755 diff --git a/webUI/public/img/zarinpal-logo-min.png b/webUI/public/img/zarinpal-logo-min.png old mode 100644 new mode 100755 diff --git a/webUI/public/manifest.json b/webUI/public/manifest.json old mode 100644 new mode 100755 diff --git a/webUI/public/service-worker.js b/webUI/public/service-worker.js old mode 100644 new mode 100755 diff --git a/webUI/public/sounds/beep.mp3 b/webUI/public/sounds/beep.mp3 old mode 100644 new mode 100755 diff --git a/webUI/src/App.vue b/webUI/src/App.vue old mode 100644 new mode 100755 diff --git a/webUI/src/assets/dino.png b/webUI/src/assets/dino.png old mode 100644 new mode 100755 diff --git a/webUI/src/assets/hero.png b/webUI/src/assets/hero.png old mode 100644 new mode 100755 diff --git a/webUI/src/assets/logo.svg b/webUI/src/assets/logo.svg old mode 100644 new mode 100755 diff --git a/webUI/src/assets/peach.png b/webUI/src/assets/peach.png old mode 100644 new mode 100755 diff --git a/webUI/src/assets/site.css b/webUI/src/assets/site.css old mode 100644 new mode 100755 diff --git a/webUI/src/components/ChangePasswordDialog.vue b/webUI/src/components/ChangePasswordDialog.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/Editor.vue b/webUI/src/components/Editor.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/PrintDialog.vue b/webUI/src/components/PrintDialog.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/buttons/CalculatorButton.vue b/webUI/src/components/application/buttons/CalculatorButton.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/buttons/SecretDialog.vue b/webUI/src/components/application/buttons/SecretDialog.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/buttons/ShortcutsButton.vue b/webUI/src/components/application/buttons/ShortcutsButton.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/buttons/change_lang.vue b/webUI/src/components/application/buttons/change_lang.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/buttons/notifications_btn.vue b/webUI/src/components/application/buttons/notifications_btn.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/buttons/profile_btn.vue b/webUI/src/components/application/buttons/profile_btn.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/clock.vue b/webUI/src/components/application/clock.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/combobox/currency_cob.vue b/webUI/src/components/application/combobox/currency_cob.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/combobox/year_cob.vue b/webUI/src/components/application/combobox/year_cob.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/list/archive_list.vue b/webUI/src/components/application/list/archive_list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/application/list/sms_list.vue b/webUI/src/components/application/list/sms_list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Haccountsearch.vue b/webUI/src/components/forms/Haccountsearch.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Hbankaccountsearch.vue b/webUI/src/components/forms/Hbankaccountsearch.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Hbankselect.vue b/webUI/src/components/forms/Hbankselect.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Hcashdesksearch.vue b/webUI/src/components/forms/Hcashdesksearch.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Hcommoditysearch.vue b/webUI/src/components/forms/Hcommoditysearch.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Hdatepicker.vue b/webUI/src/components/forms/Hdatepicker.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Hdocsearch.vue b/webUI/src/components/forms/Hdocsearch.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/HesabdariTreeView.vue b/webUI/src/components/forms/HesabdariTreeView.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Hnumberinput.vue b/webUI/src/components/forms/Hnumberinput.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Hpersonsearch.vue b/webUI/src/components/forms/Hpersonsearch.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Hsalarysearch.vue b/webUI/src/components/forms/Hsalarysearch.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/Htabletreeselect.vue b/webUI/src/components/forms/Htabletreeselect.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/forms/TreeNode.vue b/webUI/src/components/forms/TreeNode.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/widgets/PrintOptions.vue b/webUI/src/components/widgets/PrintOptions.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/widgets/ShareOptions.vue b/webUI/src/components/widgets/ShareOptions.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/widgets/TopCommoditiesChart.vue b/webUI/src/components/widgets/TopCommoditiesChart.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/widgets/TopCostCentersChart.vue b/webUI/src/components/widgets/TopCostCentersChart.vue old mode 100644 new mode 100755 diff --git a/webUI/src/components/widgets/TopIncomeCentersChart.vue b/webUI/src/components/widgets/TopIncomeCentersChart.vue old mode 100644 new mode 100755 diff --git a/webUI/src/css/main.css b/webUI/src/css/main.css old mode 100644 new mode 100755 diff --git a/webUI/src/hesabixConfig.js b/webUI/src/hesabixConfig.js old mode 100644 new mode 100755 diff --git a/webUI/src/i18n/calendarLocalConfig.ts b/webUI/src/i18n/calendarLocalConfig.ts old mode 100644 new mode 100755 diff --git a/webUI/src/i18n/en_lang.ts b/webUI/src/i18n/en_lang.ts old mode 100644 new mode 100755 diff --git a/webUI/src/i18n/fa_lang.ts b/webUI/src/i18n/fa_lang.ts old mode 100644 new mode 100755 index cd1a9fcc..99d09953 --- a/webUI/src/i18n/fa_lang.ts +++ b/webUI/src/i18n/fa_lang.ts @@ -173,6 +173,7 @@ const fa_lang = { reports: "گزارشات", settings: "تنظیمات", bid_settings: "تنظیمات کسب‌و‌کار", + tax_settings: "تنظیمات مالیاتی", print_settings: "چاپ اسناد", user_perms: "کاربران و دسترسی‌ها", avatar_settings: "نمایه و مهر کسب‌و‌کار", @@ -196,6 +197,8 @@ const fa_lang = { hrm: 'منابع انسانی', hrm_docs: 'سند حقوق', buysellByPerson: "گزارش خرید و فروش های اشخاص", + tax_system: "سامانه مودیان مالیاتی", + tax_invoices: "صورتحساب‌ ها", }, time: { month: "{id} ماه", @@ -268,6 +271,19 @@ const fa_lang = { "fetchError": "خطا در دریافت", "cancel": "لغو", "confirm": "تأیید", + "updateSourceTitle": "منبع به‌روزرسانی", + "updateSourceLabel": "آدرس منبع به‌روزرسانی", + "changeSourceButton": "تغییر منبع", + "sourceUrlRequired": "لطفاً آدرس منبع به‌روزرسانی را وارد کنید", + "changingSourceMessage": "در حال تغییر منبع به‌روزرسانی...", + "sourceChangeSuccess": "منبع به‌روزرسانی با موفقیت تغییر یافت", + "sourceChangeError": "خطایی در تغییر منبع به‌روزرسانی رخ داد", + "notGitRepository": "این پروژه یک مخزن Git نیست", + "invalidRepositoryUrl": "آدرس مخزن نامعتبر است. لطفاً یک آدرس HTTP یا SSH معتبر وارد کنید.", + "repositoryUrlError": "خطا در دریافت آدرس مخزن", + "repositoryChangeError": "خطا در تغییر آدرس مخزن", + "repositoryConnectionError": "خطا در اتصال به مخزن جدید", + "repositoryChangeSuccess": "آدرس مخزن با موفقیت تغییر یافت و اتصال برقرار شد", }, static: { not_found: "صفحه مورد نظر یافت نشد", @@ -555,6 +571,9 @@ const fa_lang = { status: "وضعیت", actions: "عملیات" }, + send_to_tax_system: "ارسال به سامانه مودیان", + tax_send_success: "فاکتور با موفقیت به سامانه مودیان ارسال شد.", + tax_send_error: "ارسال به سامانه مودیان با خطا مواجه شد.", }, app: { loading: "در حال بارگذاری...", @@ -799,6 +818,19 @@ const fa_lang = { sms_settings_plug_accpro_pass_cheque_input: "واگذاری چک", sms_settings_reject_cheque_input: "برگشت چک", sms_settings_plug_accpro_reject_cheque_input: "برگشت چک", + inquiry_zohal_api_key: "کلید API زحل", + inquiry_zohal_api_key_des: "کلید API زحل برای دریافت اطلاعات از سامانه زحل", + inquiry_zohal_api_key_placeholder: "کلید API زحل", + inquiry_zohal_api_key_label: "کلید API زحل", + enable_postalcode_to_address: "تبدیل کد پستی به آدرس", + postalcode_to_address_fee: "کارمزد تبدیل کد پستی به آدرس", + enable_card_to_sheba: "تبدیل شماره کارت به شبا", + card_to_sheba_fee: "کارمزد تبدیل شماره کارت به شبا", + enable_account_to_sheba: "تبدیل حساب به شبا", + account_to_sheba_fee: "کارمزد تبدیل حساب به شبا", + inquiry_panel_enable: "فعال سازی پنل سامانه استعلامات", + inquiry_panel: "پنل سامانه استعلامات", + inquiry_panel_zohal: "زحل", app_site: "آدرس اینترفیس(رابط کاربری)", keywords: "کلیدواژه‌ها با کاما (,) از هم جدا شوند", zarinpal_api: "کد API زرین‌پال", diff --git a/webUI/src/i18n/i18n.ts b/webUI/src/i18n/i18n.ts old mode 100644 new mode 100755 diff --git a/webUI/src/main.ts b/webUI/src/main.ts old mode 100644 new mode 100755 diff --git a/webUI/src/registerServiceWorker.js b/webUI/src/registerServiceWorker.js old mode 100644 new mode 100755 diff --git a/webUI/src/router/index.ts b/webUI/src/router/index.ts old mode 100644 new mode 100755 index 9c3d0b36..bedfb9e5 --- a/webUI/src/router/index.ts +++ b/webUI/src/router/index.ts @@ -510,6 +510,18 @@ const router = createRouter({ component: () => import('../views/acc/settings/extramoneys.vue'), }, + { + path: 'plugins/tax/invoices/list', + name: 'tax_invoices_list', + component: () => + import('../views/acc/plugins/tax/invoices/list.vue'), + }, + { + path: 'plugins/tax/settings', + name: 'business_tax_settings', + component: () => + import('../views/acc/plugins/tax/settings.vue'), + }, { path: 'business/logs', name: 'business_logs', diff --git a/webUI/src/scss/_override.scss b/webUI/src/scss/_override.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/_variables.scss b/webUI/src/scss/_variables.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VAlert.scss b/webUI/src/scss/components/_VAlert.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VBadge.scss b/webUI/src/scss/components/_VBadge.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VBreadcrumb.scss b/webUI/src/scss/components/_VBreadcrumb.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VButtons.scss b/webUI/src/scss/components/_VButtons.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VCard.scss b/webUI/src/scss/components/_VCard.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VField.scss b/webUI/src/scss/components/_VField.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VInput.scss b/webUI/src/scss/components/_VInput.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VList.scss b/webUI/src/scss/components/_VList.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VNavigationDrawer.scss b/webUI/src/scss/components/_VNavigationDrawer.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VShadow.scss b/webUI/src/scss/components/_VShadow.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VTextField.scss b/webUI/src/scss/components/_VTextField.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/components/_VTextarea.scss b/webUI/src/scss/components/_VTextarea.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/layout/_container.scss b/webUI/src/scss/layout/_container.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/layout/_footer.scss b/webUI/src/scss/layout/_footer.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/layout/_horizontal.scss b/webUI/src/scss/layout/_horizontal.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/layout/_sidebar.scss b/webUI/src/scss/layout/_sidebar.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/layout/_topbar.scss b/webUI/src/scss/layout/_topbar.scss old mode 100644 new mode 100755 diff --git a/webUI/src/scss/style.scss b/webUI/src/scss/style.scss old mode 100644 new mode 100755 diff --git a/webUI/src/stores/applicationStore.ts b/webUI/src/stores/applicationStore.ts old mode 100644 new mode 100755 diff --git a/webUI/src/stores/counter.ts b/webUI/src/stores/counter.ts old mode 100644 new mode 100755 diff --git a/webUI/src/stores/userStore.ts b/webUI/src/stores/userStore.ts old mode 100644 new mode 100755 diff --git a/webUI/src/theme/DarkTheme.ts b/webUI/src/theme/DarkTheme.ts old mode 100644 new mode 100755 diff --git a/webUI/src/theme/LightTheme.ts b/webUI/src/theme/LightTheme.ts old mode 100644 new mode 100755 diff --git a/webUI/src/types/vue3-qrcode-reader.d.ts b/webUI/src/types/vue3-qrcode-reader.d.ts old mode 100644 new mode 100755 diff --git a/webUI/src/utils/date.js b/webUI/src/utils/date.js old mode 100644 new mode 100755 diff --git a/webUI/src/utils/number.js b/webUI/src/utils/number.js old mode 100644 new mode 100755 diff --git a/webUI/src/views/NotFound.vue b/webUI/src/views/NotFound.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/App.vue b/webUI/src/views/acc/App.vue old mode 100644 new mode 100755 index 452c610a..1645a6af --- a/webUI/src/views/acc/App.vue +++ b/webUI/src/views/acc/App.vue @@ -179,6 +179,8 @@ export default { { path: '/acc/plugin-center/invoice', key: '`', label: this.$t('drawer.plugins_invoices'), ctrl: true, shift: true, permission: () => this.permissions.owner }, { path: '/acc/hrm/docs/list', key: 'H', label: this.$t('drawer.hrm_docs'), ctrl: true, shift: true, permission: () => this.isPluginActive('hrm') && this.permissions.plugHrmDocs }, { path: '/acc/plugins/ghesta/list', key: 'G', label: this.$t('drawer.ghesta_invoices'), ctrl: true, shift: true, permission: () => this.isPluginActive('ghesta') && this.permissions.plugGhestaManager }, + { path: '/acc/plugins/tax/invoices/list', key: 'L', label: this.$t('drawer.tax_invoices'), ctrl: true, shift: true, permission: () => this.permissions.settings && this.isPluginActive('taxsettings') }, + { path: '/acc/plugins/tax/settings', key: 'T', label: this.$t('drawer.tax_settings'), ctrl: true, shift: true, permission: () => this.permissions.settings && this.isPluginActive('taxsettings') }, ]; }, restorePermissions(shortcuts) { @@ -741,7 +743,7 @@ export default { {{ $t('drawer.user_perms') }} {{ getShortcutKey('/acc/business/users') }} - + @@ -828,6 +830,23 @@ export default { + + + + + {{ $t('drawer.tax_invoices') }} + + + + + {{ $t('drawer.tax_settings') }} + + + diff --git a/webUI/src/views/acc/accounting/closeyear.vue b/webUI/src/views/acc/accounting/closeyear.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/accounting/list.vue b/webUI/src/views/acc/accounting/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/accounting/mod.vue b/webUI/src/views/acc/accounting/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/accounting/openBalance.vue b/webUI/src/views/acc/accounting/openBalance.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/accounting/table.vue b/webUI/src/views/acc/accounting/table.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/accounting/viewDoc.vue b/webUI/src/views/acc/accounting/viewDoc.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/api/list.vue b/webUI/src/views/acc/api/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/archive/order_new.vue b/webUI/src/views/acc/archive/order_new.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/archive/orders_list.vue b/webUI/src/views/acc/archive/orders_list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/archive/view_files.vue b/webUI/src/views/acc/archive/view_files.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/bank/card.vue b/webUI/src/views/acc/bank/card.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/bank/list.vue b/webUI/src/views/acc/bank/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/bank/mod.vue b/webUI/src/views/acc/bank/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/buy/list.vue b/webUI/src/views/acc/buy/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/buy/mod.vue b/webUI/src/views/acc/buy/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/buy/viewInvoice.vue b/webUI/src/views/acc/buy/viewInvoice.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/cashdesk/card.vue b/webUI/src/views/acc/cashdesk/card.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/cashdesk/list.vue b/webUI/src/views/acc/cashdesk/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/cashdesk/mod.vue b/webUI/src/views/acc/cashdesk/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/cheque/input.vue b/webUI/src/views/acc/cheque/input.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/cheque/list.vue b/webUI/src/views/acc/cheque/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/cheque/mod.vue b/webUI/src/views/acc/cheque/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/cheque/output.vue b/webUI/src/views/acc/cheque/output.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/cheque/transfer.vue b/webUI/src/views/acc/cheque/transfer.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/commodity/cat/list.vue b/webUI/src/views/acc/commodity/cat/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/commodity/drop/list.vue b/webUI/src/views/acc/commodity/drop/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/commodity/drop/mod.vue b/webUI/src/views/acc/commodity/drop/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/commodity/list.vue b/webUI/src/views/acc/commodity/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/commodity/mod.vue b/webUI/src/views/acc/commodity/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/commodity/priceList/list.vue b/webUI/src/views/acc/commodity/priceList/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/commodity/priceList/mod.vue b/webUI/src/views/acc/commodity/priceList/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/commodity/priceList/pricelistedit.vue b/webUI/src/views/acc/commodity/priceList/pricelistedit.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/commodity/priceList/view.vue b/webUI/src/views/acc/commodity/priceList/view.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/Currency.vue b/webUI/src/views/acc/component/Currency.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/Year.vue b/webUI/src/views/acc/component/Year.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/archive/archiveUpload.vue b/webUI/src/views/acc/component/archive/archiveUpload.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/archive/archive_modal.vue b/webUI/src/views/acc/component/archive/archive_modal.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/commodity/changePriceGroup.vue b/webUI/src/views/acc/component/commodity/changePriceGroup.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/commodity/quickAddCommodity.vue b/webUI/src/views/acc/component/commodity/quickAddCommodity.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/documentLogButton.vue b/webUI/src/views/acc/component/documentLogButton.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/helpBtn.vue b/webUI/src/views/acc/component/helpBtn.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/hitable.vue b/webUI/src/views/acc/component/hitable.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/importModal/commodity-import-excel.vue b/webUI/src/views/acc/component/importModal/commodity-import-excel.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/importModal/person-import-excel.vue b/webUI/src/views/acc/component/importModal/person-import-excel.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/mostdes.vue b/webUI/src/views/acc/component/mostdes.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/notes.vue b/webUI/src/views/acc/component/notes.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/notifications/icon.vue b/webUI/src/views/acc/component/notifications/icon.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/person.vue b/webUI/src/views/acc/component/person.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/person/quickAdd.vue b/webUI/src/views/acc/component/person/quickAdd.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/person/quickView.vue b/webUI/src/views/acc/component/person/quickView.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/rec.vue b/webUI/src/views/acc/component/rec.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/recList.vue b/webUI/src/views/acc/component/recList.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/reports/detailsBtn.vue b/webUI/src/views/acc/component/reports/detailsBtn.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/send.vue b/webUI/src/views/acc/component/send.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/smsPanel.vue b/webUI/src/views/acc/component/smsPanel.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/component/widgets/saleChart.vue b/webUI/src/views/acc/component/widgets/saleChart.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/costs/list.vue b/webUI/src/views/acc/costs/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/costs/mod.vue b/webUI/src/views/acc/costs/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/dashboard.vue b/webUI/src/views/acc/dashboard.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/incomes/list.vue b/webUI/src/views/acc/incomes/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/incomes/mod.vue b/webUI/src/views/acc/incomes/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/notifications/notifications.vue b/webUI/src/views/acc/notifications/notifications.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/persons/card.vue b/webUI/src/views/acc/persons/card.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/persons/insert.vue b/webUI/src/views/acc/persons/insert.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/persons/list.vue b/webUI/src/views/acc/persons/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/persons/receive/list.vue b/webUI/src/views/acc/persons/receive/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/persons/receive/mod.vue b/webUI/src/views/acc/persons/receive/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/persons/send/list.vue b/webUI/src/views/acc/persons/send/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/persons/send/mod.vue b/webUI/src/views/acc/persons/send/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/accpro/intro.vue b/webUI/src/views/acc/plugins/accpro/intro.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/amartemanma/intro.vue b/webUI/src/views/acc/plugins/amartemanma/intro.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/cc/intro.vue b/webUI/src/views/acc/plugins/cc/intro.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/ghesta/intro.vue b/webUI/src/views/acc/plugins/ghesta/intro.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/ghesta/list.vue b/webUI/src/views/acc/plugins/ghesta/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/ghesta/mod.vue b/webUI/src/views/acc/plugins/ghesta/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/ghesta/view.vue b/webUI/src/views/acc/plugins/ghesta/view.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/hrm/docs/list.vue b/webUI/src/views/acc/plugins/hrm/docs/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/hrm/docs/mod.vue b/webUI/src/views/acc/plugins/hrm/docs/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/hrm/docs/view.vue b/webUI/src/views/acc/plugins/hrm/docs/view.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/hrm/intro.vue b/webUI/src/views/acc/plugins/hrm/intro.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/noghre/employess/list.vue b/webUI/src/views/acc/plugins/noghre/employess/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/noghre/employess/mod.vue b/webUI/src/views/acc/plugins/noghre/employess/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/noghre/intro.vue b/webUI/src/views/acc/plugins/noghre/intro.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/noghre/order/list.vue b/webUI/src/views/acc/plugins/noghre/order/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/noghre/order/mod.vue b/webUI/src/views/acc/plugins/noghre/order/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/noghre/order/view.vue b/webUI/src/views/acc/plugins/noghre/order/view.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/noghre/pays.vue b/webUI/src/views/acc/plugins/noghre/pays.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/onlinestore/dashboard.vue b/webUI/src/views/acc/plugins/onlinestore/dashboard.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/onlinestore/intro.vue b/webUI/src/views/acc/plugins/onlinestore/intro.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/repservice/intro.vue b/webUI/src/views/acc/plugins/repservice/intro.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/repservice/list.vue b/webUI/src/views/acc/plugins/repservice/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/repservice/mod.vue b/webUI/src/views/acc/plugins/repservice/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/repservice/view.vue b/webUI/src/views/acc/plugins/repservice/view.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/resamap/intro.vue b/webUI/src/views/acc/plugins/resamap/intro.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/plugins/tax/invoices/list.vue b/webUI/src/views/acc/plugins/tax/invoices/list.vue new file mode 100644 index 00000000..0cae98b3 --- /dev/null +++ b/webUI/src/views/acc/plugins/tax/invoices/list.vue @@ -0,0 +1,260 @@ + + + + + \ No newline at end of file diff --git a/webUI/src/views/acc/plugins/tax/settings.vue b/webUI/src/views/acc/plugins/tax/settings.vue new file mode 100755 index 00000000..503f89e7 --- /dev/null +++ b/webUI/src/views/acc/plugins/tax/settings.vue @@ -0,0 +1,321 @@ + + + \ No newline at end of file diff --git a/webUI/src/views/acc/presell/list.vue b/webUI/src/views/acc/presell/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/presell/mod.vue b/webUI/src/views/acc/presell/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/presell/view.vue b/webUI/src/views/acc/presell/view.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/presell/viewInvoice.vue b/webUI/src/views/acc/presell/viewInvoice.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/printers/list.vue b/webUI/src/views/acc/printers/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/printers/printList.vue b/webUI/src/views/acc/printers/printList.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/printers/queue.vue b/webUI/src/views/acc/printers/queue.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/printers/templates.vue b/webUI/src/views/acc/printers/templates.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/reports/balanceSheet.vue b/webUI/src/views/acc/reports/balanceSheet.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/reports/commodity/buysellByCommodity.vue b/webUI/src/views/acc/reports/commodity/buysellByCommodity.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/reports/explore_accounts.vue b/webUI/src/views/acc/reports/explore_accounts.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/reports/persons/buysellByPerson.vue b/webUI/src/views/acc/reports/persons/buysellByPerson.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/reports/persons/debtors.vue b/webUI/src/views/acc/reports/persons/debtors.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/reports/persons/depositors.vue b/webUI/src/views/acc/reports/persons/depositors.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/reports/persons/withdet.vue b/webUI/src/views/acc/reports/persons/withdet.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/reports/reports.vue b/webUI/src/views/acc/reports/reports.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/rfbuy/list.vue b/webUI/src/views/acc/rfbuy/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/rfbuy/mod.vue b/webUI/src/views/acc/rfbuy/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/rfbuy/viewInvoice.vue b/webUI/src/views/acc/rfbuy/viewInvoice.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/rfsell/list.vue b/webUI/src/views/acc/rfsell/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/rfsell/mod.vue b/webUI/src/views/acc/rfsell/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/rfsell/viewInvoice.vue b/webUI/src/views/acc/rfsell/viewInvoice.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/router/index.js b/webUI/src/views/acc/router/index.js old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/salary/card.vue b/webUI/src/views/acc/salary/card.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/salary/list.vue b/webUI/src/views/acc/salary/list.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/salary/mod.vue b/webUI/src/views/acc/salary/mod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/sell/fastMod.vue b/webUI/src/views/acc/sell/fastMod.vue old mode 100644 new mode 100755 diff --git a/webUI/src/views/acc/sell/list.vue b/webUI/src/views/acc/sell/list.vue old mode 100644 new mode 100755 index d615d22a..0f8ce488 --- a/webUI/src/views/acc/sell/list.vue +++ b/webUI/src/views/acc/sell/list.vue @@ -131,6 +131,11 @@ + + +