shutro-erp 0.3.5 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account_asset/.kosh/bindings.js +15 -0
- package/dist/{mrp_account → account_asset}/.kosh/schema.d.ts +785 -614
- package/dist/account_asset/board.d.ts +61 -0
- package/dist/account_asset/board.js +86 -0
- package/dist/account_asset/books.d.ts +42 -0
- package/dist/account_asset/books.js +398 -0
- package/dist/account_asset/demo.d.ts +7 -0
- package/dist/account_asset/demo.js +72 -0
- package/dist/account_asset/i18n/bn.d.ts +2 -0
- package/dist/account_asset/i18n/bn.js +97 -0
- package/dist/account_asset/index.d.ts +9 -0
- package/dist/account_asset/index.js +337 -0
- package/dist/account_asset/module.d.ts +11076 -0
- package/dist/account_asset/module.js +230 -0
- package/dist/account_budget/.kosh/bindings.js +15 -0
- package/dist/account_budget/.kosh/schema.d.ts +2841 -0
- package/dist/account_budget/budget.d.ts +5 -0
- package/dist/account_budget/budget.js +142 -0
- package/dist/account_budget/demo.d.ts +6 -0
- package/dist/account_budget/demo.js +30 -0
- package/dist/account_budget/i18n/bn.d.ts +2 -0
- package/dist/account_budget/i18n/bn.js +63 -0
- package/dist/account_budget/index.d.ts +4 -0
- package/dist/account_budget/index.js +237 -0
- package/dist/account_budget/module.d.ts +27289 -0
- package/dist/account_budget/module.js +182 -0
- package/dist/account_portal/.kosh/bindings.js +1 -1
- package/dist/account_portal/.kosh/schema.d.ts +651 -10
- package/dist/account_portal/i18n/bn.d.ts +2 -0
- package/dist/account_portal/i18n/bn.js +6 -0
- package/dist/account_portal/index.js +2 -0
- package/dist/account_portal/module.d.ts +5212 -1592
- package/dist/accounting/.kosh/bindings.js +1 -1
- package/dist/accounting/.kosh/schema.d.ts +651 -10
- package/dist/accounting/closing.js +1 -0
- package/dist/accounting/fiscal.d.ts +578 -0
- package/dist/accounting/fiscal.js +401 -0
- package/dist/accounting/followups.d.ts +618 -0
- package/dist/accounting/followups.js +420 -0
- package/dist/accounting/i18n/bn.d.ts +2 -0
- package/dist/accounting/i18n/bn.js +425 -0
- package/dist/accounting/index.d.ts +3 -1
- package/dist/accounting/index.js +780 -5
- package/dist/accounting/module.d.ts +5386 -1543
- package/dist/accounting/module.js +155 -18
- package/dist/accounting/statements.d.ts +878 -0
- package/dist/accounting/statements.js +728 -0
- package/dist/accounting/web/BankReconcilePage.d.ts +9 -0
- package/dist/accounting/web/BankReconcilePage.js +138 -0
- package/dist/accounting/web/FollowupsPage.d.ts +8 -0
- package/dist/accounting/web/FollowupsPage.js +54 -0
- package/dist/accounting/web/PostingPreview.d.ts +8 -0
- package/dist/accounting/web/PostingPreview.js +26 -0
- package/dist/accounting/web/index.d.ts +3 -0
- package/dist/accounting/web/index.js +9 -0
- package/dist/accounting/web/messages.js +140 -0
- package/dist/approvals/.kosh/bindings.d.ts +22 -0
- package/dist/approvals/.kosh/bindings.js +15 -0
- package/dist/approvals/.kosh/schema.d.ts +879 -0
- package/dist/approvals/demo.d.ts +7 -0
- package/dist/approvals/demo.js +41 -0
- package/dist/approvals/i18n/bn.d.ts +2 -0
- package/dist/approvals/i18n/bn.js +133 -0
- package/dist/approvals/index.d.ts +36 -0
- package/dist/approvals/index.js +772 -0
- package/dist/approvals/mails.d.ts +30 -0
- package/dist/approvals/mails.js +87 -0
- package/dist/approvals/module.d.ts +2930 -0
- package/dist/approvals/module.js +473 -0
- package/dist/approvals/web/Config.d.ts +12 -0
- package/dist/approvals/web/Config.js +60 -0
- package/dist/approvals/web/History.d.ts +4 -0
- package/dist/approvals/web/History.js +13 -0
- package/dist/approvals/web/Inbox.d.ts +9 -0
- package/dist/approvals/web/Inbox.js +114 -0
- package/dist/approvals/web/Matrix.d.ts +9 -0
- package/dist/approvals/web/Matrix.js +26 -0
- package/dist/approvals/web/Mine.d.ts +7 -0
- package/dist/approvals/web/Mine.js +27 -0
- package/dist/approvals/web/index.d.ts +15 -0
- package/dist/approvals/web/index.js +29 -0
- package/dist/approvals/web/messages.d.ts +2 -0
- package/dist/approvals/web/messages.js +211 -0
- package/dist/approvals/web/shared.d.ts +59 -0
- package/dist/approvals/web/shared.js +46 -0
- package/dist/approvals_purchase/.kosh/bindings.d.ts +22 -0
- package/dist/approvals_purchase/.kosh/bindings.js +15 -0
- package/dist/approvals_purchase/.kosh/schema.d.ts +1997 -0
- package/dist/approvals_purchase/i18n/bn.d.ts +2 -0
- package/dist/approvals_purchase/i18n/bn.js +5 -0
- package/dist/approvals_purchase/index.d.ts +3 -0
- package/dist/approvals_purchase/index.js +47 -0
- package/dist/approvals_purchase/module.d.ts +12670 -0
- package/dist/approvals_purchase/module.js +84 -0
- package/dist/attendance/.kosh/bindings.d.ts +22 -0
- package/dist/attendance/.kosh/bindings.js +15 -0
- package/dist/attendance/.kosh/schema.d.ts +1106 -0
- package/dist/attendance/days.d.ts +96 -0
- package/dist/attendance/days.js +430 -0
- package/dist/attendance/demo.d.ts +7 -0
- package/dist/attendance/demo.js +58 -0
- package/dist/attendance/i18n/bn.d.ts +2 -0
- package/dist/attendance/i18n/bn.js +147 -0
- package/dist/attendance/index.d.ts +4 -0
- package/dist/attendance/index.js +515 -0
- package/dist/attendance/module.d.ts +4413 -0
- package/dist/attendance/module.js +412 -0
- package/dist/attendance/routes.d.ts +16 -0
- package/dist/attendance/routes.js +266 -0
- package/dist/attendance/web/Check.d.ts +8 -0
- package/dist/attendance/web/Check.js +40 -0
- package/dist/attendance/web/Kiosk.d.ts +8 -0
- package/dist/attendance/web/Kiosk.js +62 -0
- package/dist/attendance/web/PinButton.d.ts +7 -0
- package/dist/attendance/web/PinButton.js +29 -0
- package/dist/attendance/web/index.d.ts +13 -0
- package/dist/attendance/web/index.js +22 -0
- package/dist/attendance/web/messages.d.ts +2 -0
- package/dist/attendance/web/messages.js +61 -0
- package/dist/automation/engine.js +1 -1
- package/dist/calendar/.kosh/bindings.js +1 -1
- package/dist/calendar/.kosh/schema.d.ts +2 -1
- package/dist/calendar/i18n/bn.d.ts +2 -0
- package/dist/calendar/i18n/bn.js +80 -0
- package/dist/calendar/index.js +77 -0
- package/dist/calendar/module.d.ts +26 -0
- package/dist/calendar/module.js +14 -4
- package/dist/cli/apps.js +25 -5
- package/dist/cli/init.js +46 -4
- package/dist/cli/templates.d.ts +1 -1
- package/dist/cli/templates.js +123 -5
- package/dist/contacts/.kosh/bindings.js +1 -1
- package/dist/contacts/.kosh/schema.d.ts +2 -1
- package/dist/contacts/i18n/bn.d.ts +2 -0
- package/dist/contacts/i18n/bn.js +67 -0
- package/dist/contacts/index.js +3 -0
- package/dist/contacts/module.d.ts +42 -0
- package/dist/contacts/module.js +19 -3
- package/dist/crm/.kosh/bindings.js +1 -1
- package/dist/crm/.kosh/schema.d.ts +3 -1
- package/dist/crm/i18n/bn.d.ts +2 -0
- package/dist/crm/i18n/bn.js +80 -0
- package/dist/crm/index.js +22 -0
- package/dist/crm/module.d.ts +22 -0
- package/dist/crm/module.js +6 -3
- package/dist/documents/.kosh/bindings.d.ts +22 -0
- package/dist/documents/.kosh/bindings.js +15 -0
- package/dist/documents/.kosh/schema.d.ts +863 -0
- package/dist/documents/demo.d.ts +6 -0
- package/dist/documents/demo.js +22 -0
- package/dist/documents/documents.d.ts +98 -0
- package/dist/documents/documents.js +318 -0
- package/dist/documents/i18n/bn.d.ts +2 -0
- package/dist/documents/i18n/bn.js +83 -0
- package/dist/documents/index.d.ts +30 -0
- package/dist/documents/index.js +569 -0
- package/dist/documents/module.d.ts +2801 -0
- package/dist/documents/module.js +215 -0
- package/dist/documents/web/Versions.d.ts +7 -0
- package/dist/documents/web/Versions.js +45 -0
- package/dist/documents/web/index.d.ts +11 -0
- package/dist/documents/web/index.js +16 -0
- package/dist/documents/web/messages.d.ts +2 -0
- package/dist/documents/web/messages.js +21 -0
- package/dist/event/.kosh/bindings.js +1 -1
- package/dist/event/.kosh/schema.d.ts +2 -1
- package/dist/event/i18n/bn.d.ts +2 -0
- package/dist/event/i18n/bn.js +101 -0
- package/dist/event/index.js +66 -0
- package/dist/event/module.d.ts +20 -0
- package/dist/event/module.js +8 -1
- package/dist/event_account/.kosh/bindings.js +1 -1
- package/dist/event_account/.kosh/schema.d.ts +651 -10
- package/dist/event_account/i18n/bn.d.ts +2 -0
- package/dist/event_account/i18n/bn.js +5 -0
- package/dist/event_account/index.js +2 -0
- package/dist/event_account/module.d.ts +5133 -1513
- package/dist/expense/.kosh/bindings.d.ts +22 -0
- package/dist/expense/.kosh/bindings.js +15 -0
- package/dist/expense/.kosh/schema.d.ts +1620 -0
- package/dist/expense/demo.d.ts +7 -0
- package/dist/expense/demo.js +69 -0
- package/dist/expense/i18n/bn.d.ts +2 -0
- package/dist/expense/i18n/bn.js +155 -0
- package/dist/expense/index.d.ts +3 -0
- package/dist/expense/index.js +502 -0
- package/dist/expense/module.d.ts +6768 -0
- package/dist/expense/module.js +649 -0
- package/dist/expense_account/.kosh/bindings.d.ts +22 -0
- package/dist/expense_account/.kosh/bindings.js +15 -0
- package/dist/expense_account/.kosh/schema.d.ts +2515 -0
- package/dist/expense_account/i18n/bn.d.ts +2 -0
- package/dist/expense_account/i18n/bn.js +15 -0
- package/dist/expense_account/index.d.ts +3 -0
- package/dist/expense_account/index.js +76 -0
- package/dist/expense_account/module.d.ts +14628 -0
- package/dist/expense_account/module.js +318 -0
- package/dist/helpdesk/.kosh/bindings.d.ts +22 -0
- package/dist/helpdesk/.kosh/bindings.js +15 -0
- package/dist/helpdesk/.kosh/schema.d.ts +886 -0
- package/dist/helpdesk/demo.d.ts +7 -0
- package/dist/helpdesk/demo.js +65 -0
- package/dist/helpdesk/hours.d.ts +17 -0
- package/dist/helpdesk/hours.js +94 -0
- package/dist/helpdesk/i18n/bn.d.ts +2 -0
- package/dist/helpdesk/i18n/bn.js +127 -0
- package/dist/helpdesk/index.d.ts +10 -0
- package/dist/helpdesk/index.js +463 -0
- package/dist/helpdesk/module.d.ts +2960 -0
- package/dist/helpdesk/module.js +326 -0
- package/dist/helpdesk/routes.d.ts +12 -0
- package/dist/helpdesk/routes.js +132 -0
- package/dist/helpdesk/sla.d.ts +37 -0
- package/dist/helpdesk/sla.js +226 -0
- package/dist/hr/.kosh/bindings.js +1 -1
- package/dist/hr/.kosh/schema.d.ts +59 -1
- package/dist/hr/demo.js +11 -1
- package/dist/hr/i18n/bn.d.ts +2 -0
- package/dist/hr/i18n/bn.js +126 -0
- package/dist/hr/index.d.ts +1 -1
- package/dist/hr/index.js +158 -12
- package/dist/hr/module.d.ts +932 -59
- package/dist/hr/module.js +114 -17
- package/dist/indent/.kosh/bindings.d.ts +22 -0
- package/dist/indent/.kosh/bindings.js +15 -0
- package/dist/indent/.kosh/schema.d.ts +2084 -0
- package/dist/indent/demo.d.ts +7 -0
- package/dist/indent/demo.js +48 -0
- package/dist/indent/i18n/bn.d.ts +2 -0
- package/dist/indent/i18n/bn.js +143 -0
- package/dist/indent/index.d.ts +3 -0
- package/dist/indent/index.js +450 -0
- package/dist/indent/module.d.ts +13424 -0
- package/dist/indent/module.js +792 -0
- package/dist/indent_purchase/.kosh/bindings.d.ts +22 -0
- package/dist/indent_purchase/.kosh/bindings.js +15 -0
- package/dist/indent_purchase/.kosh/schema.d.ts +2710 -0
- package/dist/indent_purchase/i18n/bn.d.ts +2 -0
- package/dist/indent_purchase/i18n/bn.js +13 -0
- package/dist/indent_purchase/index.d.ts +3 -0
- package/dist/indent_purchase/index.js +61 -0
- package/dist/indent_purchase/module.d.ts +27950 -0
- package/dist/indent_purchase/module.js +163 -0
- package/dist/l10n_bd/.kosh/bindings.js +1 -1
- package/dist/l10n_bd/.kosh/schema.d.ts +651 -10
- package/dist/l10n_bd/i18n/bn.d.ts +2 -0
- package/dist/l10n_bd/i18n/bn.js +69 -0
- package/dist/l10n_bd/index.js +2 -0
- package/dist/l10n_bd/module.d.ts +5212 -1592
- package/dist/l10n_bd_payroll/.kosh/bindings.d.ts +22 -0
- package/dist/l10n_bd_payroll/.kosh/bindings.js +15 -0
- package/dist/l10n_bd_payroll/.kosh/schema.d.ts +2891 -0
- package/dist/l10n_bd_payroll/data.d.ts +47 -0
- package/dist/l10n_bd_payroll/data.js +347 -0
- package/dist/l10n_bd_payroll/i18n/bn.d.ts +2 -0
- package/dist/l10n_bd_payroll/i18n/bn.js +4 -0
- package/dist/l10n_bd_payroll/index.d.ts +4 -0
- package/dist/l10n_bd_payroll/index.js +26 -0
- package/dist/l10n_bd_payroll/module.d.ts +17294 -0
- package/dist/l10n_bd_payroll/module.js +86 -0
- package/dist/l10n_bd_pos/.kosh/bindings.d.ts +22 -0
- package/dist/{mrp_account → l10n_bd_pos}/.kosh/bindings.js +2 -2
- package/dist/l10n_bd_pos/.kosh/schema.d.ts +2341 -0
- package/dist/l10n_bd_pos/i18n/bn.d.ts +2 -0
- package/dist/l10n_bd_pos/i18n/bn.js +32 -0
- package/dist/l10n_bd_pos/index.d.ts +3 -0
- package/dist/l10n_bd_pos/index.js +111 -0
- package/dist/{mrp_account → l10n_bd_pos}/module.d.ts +9047 -6981
- package/dist/l10n_bd_pos/module.js +43 -0
- package/dist/l10n_in/.kosh/bindings.js +1 -1
- package/dist/l10n_in/.kosh/schema.d.ts +651 -10
- package/dist/l10n_in/i18n/bn.d.ts +2 -0
- package/dist/l10n_in/i18n/bn.js +95 -0
- package/dist/l10n_in/index.js +2 -0
- package/dist/l10n_in/module.d.ts +6778 -1580
- package/dist/l10n_in/module.js +25 -5
- package/dist/l10n_in/web/GstSettings.js +2 -2
- package/dist/mail/inbound/handle.js +8 -5
- package/dist/mail/inbound/models.js +5 -3
- package/dist/mail/index.d.ts +12 -1
- package/dist/mail/index.js +139 -2
- package/dist/mail/send.d.ts +56 -0
- package/dist/mail/send.js +394 -0
- package/dist/mail/web/SendButton.d.ts +9 -0
- package/dist/mail/web/SendButton.js +71 -0
- package/dist/mail/web/SendSelected.d.ts +8 -0
- package/dist/mail/web/SendSelected.js +33 -0
- package/dist/mail/web/index.d.ts +2 -0
- package/dist/mail/web/index.js +6 -0
- package/dist/mail/web/messages.js +36 -0
- package/dist/maintenance/.kosh/bindings.js +1 -1
- package/dist/maintenance/.kosh/schema.d.ts +2 -1
- package/dist/maintenance/i18n/bn.d.ts +2 -0
- package/dist/maintenance/i18n/bn.js +132 -0
- package/dist/maintenance/index.js +85 -0
- package/dist/maintenance/module.d.ts +25 -0
- package/dist/maintenance/module.js +27 -9
- package/dist/maintenance_stock/.kosh/bindings.js +1 -1
- package/dist/maintenance_stock/.kosh/schema.d.ts +374 -3
- package/dist/maintenance_stock/i18n/bn.d.ts +2 -0
- package/dist/maintenance_stock/i18n/bn.js +21 -0
- package/dist/maintenance_stock/index.js +2 -0
- package/dist/maintenance_stock/module.d.ts +6095 -1327
- package/dist/maintenance_stock/module.js +1 -0
- package/dist/modules-sdk/apps.d.ts +10 -0
- package/dist/modules-sdk/apps.js +32 -0
- package/dist/modules-sdk/index.d.ts +1 -1
- package/dist/modules-sdk/manifest.d.ts +105 -2
- package/dist/payment/.kosh/bindings.js +1 -1
- package/dist/payment/.kosh/schema.d.ts +653 -11
- package/dist/payment/i18n/bn.d.ts +2 -0
- package/dist/payment/i18n/bn.js +59 -0
- package/dist/payment/index.d.ts +41 -0
- package/dist/payment/index.js +216 -74
- package/dist/payment/module.d.ts +5353 -1675
- package/dist/payment/module.js +36 -6
- package/dist/payment/settle.js +11 -1
- package/dist/payroll/.kosh/bindings.d.ts +22 -0
- package/dist/payroll/.kosh/bindings.js +15 -0
- package/dist/payroll/.kosh/schema.d.ts +1448 -0
- package/dist/payroll/compute.d.ts +35 -0
- package/dist/payroll/compute.js +398 -0
- package/dist/payroll/demo.d.ts +55 -0
- package/dist/payroll/demo.js +121 -0
- package/dist/payroll/formula.d.ts +62 -0
- package/dist/payroll/formula.js +320 -0
- package/dist/payroll/i18n/bn.d.ts +2 -0
- package/dist/payroll/i18n/bn.js +206 -0
- package/dist/payroll/index.d.ts +230 -0
- package/dist/payroll/index.js +715 -0
- package/dist/{mrp → payroll}/module.d.ts +4294 -2624
- package/dist/payroll/module.js +606 -0
- package/dist/payroll/routes.d.ts +10 -0
- package/dist/payroll/routes.js +112 -0
- package/dist/payroll_account/.kosh/bindings.d.ts +22 -0
- package/dist/payroll_account/.kosh/bindings.js +15 -0
- package/dist/payroll_account/.kosh/schema.d.ts +2887 -0
- package/dist/payroll_account/i18n/bn.d.ts +2 -0
- package/dist/payroll_account/i18n/bn.js +10 -0
- package/dist/payroll_account/index.d.ts +3 -0
- package/dist/payroll_account/index.js +42 -0
- package/dist/payroll_account/module.d.ts +16738 -0
- package/dist/payroll_account/module.js +256 -0
- package/dist/permissions/approvals.d.ts +227 -12
- package/dist/permissions/approvals.js +1421 -67
- package/dist/permissions/index.d.ts +1 -1
- package/dist/permissions/index.js +2 -2
- package/dist/permissions/models.js +364 -13
- package/dist/permissions/routes.d.ts +9 -1
- package/dist/permissions/routes.js +72 -5
- package/dist/permissions/web/ApprovalPanel.d.ts +5 -4
- package/dist/permissions/web/ApprovalPanel.js +75 -11
- package/dist/permissions/web/index.d.ts +6 -4
- package/dist/permissions/web/index.js +13 -4
- package/dist/permissions/web/messages.d.ts +2 -0
- package/dist/permissions/web/messages.js +95 -0
- package/dist/portal/.kosh/bindings.js +1 -1
- package/dist/portal/.kosh/schema.d.ts +2 -1
- package/dist/portal/documents.d.ts +3 -0
- package/dist/portal/documents.js +21 -1
- package/dist/portal/i18n/bn.d.ts +2 -0
- package/dist/portal/i18n/bn.js +33 -0
- package/dist/portal/index.js +3 -1
- package/dist/portal/module.d.ts +20 -0
- package/dist/portal/routes-documents.js +76 -0
- package/dist/pos/.kosh/bindings.js +1 -1
- package/dist/pos/.kosh/schema.d.ts +652 -10
- package/dist/pos/i18n/bn.d.ts +2 -0
- package/dist/pos/i18n/bn.js +133 -0
- package/dist/pos/index.js +87 -1
- package/dist/pos/module.d.ts +6967 -1709
- package/dist/pos/module.js +49 -5
- package/dist/pos/routes.js +80 -7
- package/dist/pos/web/Register.js +2 -5
- package/dist/pos_stock/.kosh/bindings.js +1 -1
- package/dist/pos_stock/.kosh/schema.d.ts +822 -12
- package/dist/pos_stock/i18n/bn.d.ts +2 -0
- package/dist/pos_stock/i18n/bn.js +6 -0
- package/dist/pos_stock/index.js +2 -0
- package/dist/pos_stock/module.d.ts +11241 -2851
- package/dist/product/.kosh/bindings.js +1 -1
- package/dist/product/.kosh/schema.d.ts +203 -1
- package/dist/product/i18n/bn.d.ts +2 -0
- package/dist/product/i18n/bn.js +175 -0
- package/dist/product/index.d.ts +1 -0
- package/dist/product/index.js +301 -1
- package/dist/product/module.d.ts +1727 -0
- package/dist/product/module.js +67 -6
- package/dist/product/pricelist.d.ts +575 -0
- package/dist/product/pricelist.js +257 -0
- package/dist/product/variants.d.ts +908 -0
- package/dist/product/variants.js +251 -0
- package/dist/production/.kosh/bindings.d.ts +22 -0
- package/dist/production/.kosh/bindings.js +15 -0
- package/dist/production/.kosh/schema.d.ts +2345 -0
- package/dist/{mrp → production}/demo.d.ts +1 -1
- package/dist/{mrp → production}/demo.js +5 -5
- package/dist/production/depth.d.ts +790 -0
- package/dist/production/depth.js +262 -0
- package/dist/production/i18n/bn.d.ts +2 -0
- package/dist/production/i18n/bn.js +350 -0
- package/dist/production/index.d.ts +6 -0
- package/dist/production/index.js +1256 -0
- package/dist/production/module.d.ts +17327 -0
- package/dist/production/module.js +1333 -0
- package/dist/production/plan.d.ts +921 -0
- package/dist/production/plan.js +511 -0
- package/dist/production/schedule.d.ts +656 -0
- package/dist/production/schedule.js +309 -0
- package/dist/production_account/.kosh/bindings.d.ts +22 -0
- package/dist/production_account/.kosh/bindings.js +15 -0
- package/dist/production_account/.kosh/schema.d.ts +3496 -0
- package/dist/production_account/i18n/bn.d.ts +2 -0
- package/dist/production_account/i18n/bn.js +93 -0
- package/dist/production_account/index.d.ts +4 -0
- package/dist/production_account/index.js +246 -0
- package/dist/production_account/module.d.ts +1192 -0
- package/dist/{mrp_account → production_account}/module.js +72 -18
- package/dist/production_account/overhead.d.ts +1195 -0
- package/dist/production_account/overhead.js +554 -0
- package/dist/project/.kosh/bindings.js +1 -1
- package/dist/project/.kosh/schema.d.ts +735 -1
- package/dist/project/i18n/bn.d.ts +2 -0
- package/dist/project/i18n/bn.js +383 -0
- package/dist/project/index.d.ts +3 -1
- package/dist/project/index.js +1024 -14
- package/dist/project/module.d.ts +9912 -390
- package/dist/project/module.js +1590 -14
- package/dist/project/routes.d.ts +44 -0
- package/dist/project/routes.js +314 -0
- package/dist/project/schedule.d.ts +72 -0
- package/dist/project/schedule.js +192 -0
- package/dist/project/web/Refresh.d.ts +8 -0
- package/dist/project/web/Refresh.js +29 -0
- package/dist/project/web/Schedule.d.ts +9 -0
- package/dist/project/web/Schedule.js +93 -0
- package/dist/project/web/Structure.d.ts +8 -0
- package/dist/project/web/Structure.js +86 -0
- package/dist/project/web/Workload.d.ts +8 -0
- package/dist/project/web/Workload.js +43 -0
- package/dist/project/web/index.d.ts +14 -0
- package/dist/project/web/index.js +25 -0
- package/dist/project/web/messages.d.ts +2 -0
- package/dist/project/web/messages.js +85 -0
- package/dist/project_account/.kosh/bindings.d.ts +22 -0
- package/dist/project_account/.kosh/bindings.js +15 -0
- package/dist/project_account/.kosh/schema.d.ts +2763 -0
- package/dist/project_account/i18n/bn.d.ts +2 -0
- package/dist/project_account/i18n/bn.js +6 -0
- package/dist/project_account/index.d.ts +3 -0
- package/dist/project_account/index.js +29 -0
- package/dist/project_account/module.d.ts +15013 -0
- package/dist/project_account/module.js +76 -0
- package/dist/project_portal/.kosh/bindings.js +1 -1
- package/dist/project_portal/.kosh/schema.d.ts +735 -1
- package/dist/project_portal/i18n/bn.d.ts +2 -0
- package/dist/project_portal/i18n/bn.js +6 -0
- package/dist/project_portal/index.js +2 -0
- package/dist/project_portal/module.d.ts +4796 -87
- package/dist/project_purchase/.kosh/bindings.d.ts +22 -0
- package/dist/project_purchase/.kosh/bindings.js +15 -0
- package/dist/project_purchase/.kosh/schema.d.ts +3393 -0
- package/dist/project_purchase/i18n/bn.d.ts +2 -0
- package/dist/project_purchase/i18n/bn.js +4 -0
- package/dist/project_purchase/index.d.ts +9 -0
- package/dist/project_purchase/index.js +24 -0
- package/dist/project_purchase/module.d.ts +38613 -0
- package/dist/project_purchase/module.js +56 -0
- package/dist/purchase/.kosh/bindings.js +1 -1
- package/dist/purchase/.kosh/schema.d.ts +908 -5
- package/dist/purchase/comparison.d.ts +993 -0
- package/dist/purchase/comparison.js +415 -0
- package/dist/purchase/extras.d.ts +1509 -0
- package/dist/purchase/extras.js +445 -0
- package/dist/purchase/i18n/bn.d.ts +2 -0
- package/dist/purchase/i18n/bn.js +413 -0
- package/dist/purchase/index.d.ts +5 -0
- package/dist/purchase/index.js +1280 -4
- package/dist/purchase/module.d.ts +7147 -395
- package/dist/purchase/module.js +303 -10
- package/dist/purchase/request.d.ts +696 -0
- package/dist/purchase/request.js +446 -0
- package/dist/purchase/tender.d.ts +1208 -0
- package/dist/purchase/tender.js +507 -0
- package/dist/purchase/vendorprice.d.ts +340 -0
- package/dist/purchase/vendorprice.js +153 -0
- package/dist/purchase_account/.kosh/bindings.js +1 -1
- package/dist/purchase_account/.kosh/schema.d.ts +1209 -16
- package/dist/purchase_account/i18n/bn.d.ts +2 -0
- package/dist/purchase_account/i18n/bn.js +22 -0
- package/dist/purchase_account/index.js +20 -0
- package/dist/purchase_account/module.d.ts +12232 -2028
- package/dist/purchase_account/module.js +252 -9
- package/dist/purchase_portal/.kosh/bindings.js +1 -1
- package/dist/purchase_portal/.kosh/schema.d.ts +908 -5
- package/dist/purchase_portal/i18n/bn.d.ts +2 -0
- package/dist/purchase_portal/i18n/bn.js +5 -0
- package/dist/purchase_portal/index.js +2 -0
- package/dist/purchase_portal/module.d.ts +6853 -352
- package/dist/purchase_stock/.kosh/bindings.js +1 -1
- package/dist/purchase_stock/.kosh/schema.d.ts +1096 -21
- package/dist/purchase_stock/i18n/bn.d.ts +2 -0
- package/dist/purchase_stock/i18n/bn.js +19 -0
- package/dist/purchase_stock/index.d.ts +2 -2
- package/dist/purchase_stock/index.js +38 -2
- package/dist/purchase_stock/module.d.ts +12930 -1612
- package/dist/purchase_stock/module.js +317 -9
- package/dist/purchase_stock/scorecard.d.ts +22 -0
- package/dist/purchase_stock/scorecard.js +77 -0
- package/dist/purchase_stock/web/Scorecard.d.ts +7 -0
- package/dist/purchase_stock/web/Scorecard.js +22 -0
- package/dist/purchase_stock/web/index.d.ts +11 -0
- package/dist/purchase_stock/web/index.js +16 -0
- package/dist/purchase_stock/web/messages.d.ts +2 -0
- package/dist/purchase_stock/web/messages.js +27 -0
- package/dist/purchase_stock_account/.kosh/bindings.js +1 -1
- package/dist/purchase_stock_account/.kosh/schema.d.ts +1444 -20
- package/dist/purchase_stock_account/i18n/bn.d.ts +2 -0
- package/dist/purchase_stock_account/i18n/bn.js +8 -0
- package/dist/purchase_stock_account/index.js +18 -0
- package/dist/purchase_stock_account/module.d.ts +7 -35346
- package/dist/purchase_stock_account/module.js +35 -8
- package/dist/recruitment/.kosh/bindings.js +1 -1
- package/dist/recruitment/.kosh/schema.d.ts +60 -1
- package/dist/recruitment/i18n/bn.d.ts +2 -0
- package/dist/recruitment/i18n/bn.js +93 -0
- package/dist/recruitment/index.js +64 -0
- package/dist/recruitment/module.d.ts +460 -8
- package/dist/recruitment/module.js +13 -4
- package/dist/reporting/documents.d.ts +5 -0
- package/dist/reporting/documents.js +11 -1
- package/dist/reporting/index.d.ts +1 -1
- package/dist/reporting/index.js +1 -1
- package/dist/reporting/web/CalendarView.d.ts +18 -5
- package/dist/reporting/web/CalendarView.js +163 -29
- package/dist/reporting/web/messages.js +18 -0
- package/dist/sale_account/.kosh/bindings.js +1 -1
- package/dist/sale_account/.kosh/schema.d.ts +763 -18
- package/dist/sale_account/i18n/bn.d.ts +2 -0
- package/dist/sale_account/i18n/bn.js +48 -0
- package/dist/sale_account/index.d.ts +1 -1
- package/dist/sale_account/index.js +102 -4
- package/dist/sale_account/module.d.ts +8241 -2052
- package/dist/sale_account/module.js +535 -46
- package/dist/sale_crm/.kosh/bindings.d.ts +22 -0
- package/dist/sale_crm/.kosh/bindings.js +15 -0
- package/dist/{mrp → sale_crm}/.kosh/schema.d.ts +391 -494
- package/dist/sale_crm/i18n/bn.d.ts +2 -0
- package/dist/sale_crm/i18n/bn.js +9 -0
- package/dist/sale_crm/index.d.ts +7 -0
- package/dist/sale_crm/index.js +104 -0
- package/dist/sale_crm/module.d.ts +5609 -0
- package/dist/sale_crm/module.js +73 -0
- package/dist/sale_portal/.kosh/bindings.js +1 -1
- package/dist/sale_portal/.kosh/schema.d.ts +292 -4
- package/dist/sale_portal/i18n/bn.d.ts +2 -0
- package/dist/sale_portal/i18n/bn.js +7 -0
- package/dist/sale_portal/index.js +10 -0
- package/dist/sale_portal/module.d.ts +2563 -292
- package/dist/sale_project/.kosh/bindings.js +1 -1
- package/dist/sale_project/.kosh/schema.d.ts +1025 -4
- package/dist/sale_project/i18n/bn.d.ts +2 -0
- package/dist/sale_project/i18n/bn.js +12 -0
- package/dist/sale_project/index.js +2 -0
- package/dist/sale_project/module.d.ts +9280 -762
- package/dist/sale_project/module.js +17 -1
- package/dist/sale_stock/.kosh/bindings.js +1 -1
- package/dist/sale_stock/.kosh/schema.d.ts +463 -6
- package/dist/sale_stock/i18n/bn.d.ts +2 -0
- package/dist/sale_stock/i18n/bn.js +15 -0
- package/dist/sale_stock/index.js +2 -0
- package/dist/sale_stock/module.d.ts +8355 -1334
- package/dist/sale_stock/module.js +20 -3
- package/dist/sales/.kosh/bindings.js +1 -1
- package/dist/sales/.kosh/schema.d.ts +292 -4
- package/dist/sales/i18n/bn.d.ts +2 -0
- package/dist/sales/i18n/bn.js +128 -0
- package/dist/sales/index.js +124 -5
- package/dist/sales/module.d.ts +3568 -633
- package/dist/sales/module.js +306 -11
- package/dist/server/api/duplicate.d.ts +14 -0
- package/dist/server/api/duplicate.js +75 -0
- package/dist/server/api/explain.d.ts +70 -0
- package/dist/server/api/explain.js +111 -0
- package/dist/server/api/metadata.d.ts +2 -0
- package/dist/server/api/metadata.js +9 -0
- package/dist/server/api/openapi.js +15 -0
- package/dist/server/api/rest.d.ts +1 -0
- package/dist/server/api/rest.js +76 -12
- package/dist/server/api/views.js +1 -1
- package/dist/server/apps.d.ts +16 -1
- package/dist/server/apps.js +164 -2
- package/dist/server/auth/base.js +2 -0
- package/dist/server/auth/service.d.ts +8 -0
- package/dist/server/auth/service.js +19 -0
- package/dist/server/events.d.ts +13 -0
- package/dist/server/events.js +22 -0
- package/dist/server/i18n.d.ts +27 -0
- package/dist/server/i18n.js +143 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.js +2 -0
- package/dist/server/server.js +6 -0
- package/dist/settings/company.d.ts +3 -1
- package/dist/settings/company.js +26 -5
- package/dist/settings/routes.d.ts +10 -0
- package/dist/settings/routes.js +19 -3
- package/dist/settings/web/AppsPage.d.ts +3 -2
- package/dist/settings/web/AppsPage.js +26 -8
- package/dist/settings/web/CompaniesPage.js +91 -6
- package/dist/settings/web/messages.js +64 -0
- package/dist/sign/.kosh/bindings.d.ts +22 -0
- package/dist/{mrp → sign}/.kosh/bindings.js +2 -2
- package/dist/sign/.kosh/schema.d.ts +991 -0
- package/dist/sign/i18n/bn.d.ts +2 -0
- package/dist/sign/i18n/bn.js +97 -0
- package/dist/sign/index.d.ts +29 -0
- package/dist/sign/index.js +478 -0
- package/dist/sign/module.d.ts +4518 -0
- package/dist/sign/module.js +167 -0
- package/dist/sign/sign.d.ts +82 -0
- package/dist/sign/sign.js +474 -0
- package/dist/stock/.kosh/bindings.js +1 -1
- package/dist/stock/.kosh/schema.d.ts +374 -3
- package/dist/stock/demo.d.ts +2 -1
- package/dist/stock/demo.js +28 -1
- package/dist/stock/i18n/bn.d.ts +2 -0
- package/dist/stock/i18n/bn.js +311 -0
- package/dist/stock/index.d.ts +4 -1
- package/dist/stock/index.js +674 -6
- package/dist/stock/ledger.d.ts +78 -0
- package/dist/stock/ledger.js +582 -0
- package/dist/stock/module.d.ts +6142 -1380
- package/dist/stock/module.js +780 -26
- package/dist/stock/replenish.d.ts +38 -0
- package/dist/stock/replenish.js +191 -0
- package/dist/stock/returns.d.ts +157 -0
- package/dist/stock/returns.js +163 -0
- package/dist/stock/web/Ledger.d.ts +9 -0
- package/dist/stock/web/Ledger.js +108 -0
- package/dist/stock/web/Operations.d.ts +8 -0
- package/dist/stock/web/Operations.js +33 -0
- package/dist/stock/web/Replenishment.d.ts +8 -0
- package/dist/stock/web/Replenishment.js +84 -0
- package/dist/stock/web/ReturnButton.d.ts +7 -0
- package/dist/stock/web/ReturnButton.js +62 -0
- package/dist/stock/web/index.d.ts +7 -2
- package/dist/stock/web/index.js +15 -2
- package/dist/stock/web/messages.js +206 -0
- package/dist/stock_account/.kosh/bindings.js +1 -1
- package/dist/stock_account/.kosh/schema.d.ts +878 -12
- package/dist/stock_account/i18n/bn.d.ts +2 -0
- package/dist/stock_account/i18n/bn.js +73 -0
- package/dist/stock_account/index.d.ts +1 -0
- package/dist/stock_account/index.js +141 -3
- package/dist/stock_account/landed.d.ts +429 -0
- package/dist/stock_account/landed.js +335 -0
- package/dist/stock_account/module.d.ts +12143 -3391
- package/dist/stock_account/module.js +135 -6
- package/dist/stock_account/web/LandedPreview.d.ts +7 -0
- package/dist/stock_account/web/LandedPreview.js +23 -0
- package/dist/stock_account/web/index.d.ts +11 -0
- package/dist/stock_account/web/index.js +16 -0
- package/dist/stock_account/web/messages.d.ts +2 -0
- package/dist/stock_account/web/messages.js +27 -0
- package/dist/todo/i18n/bn.d.ts +2 -0
- package/dist/todo/i18n/bn.js +66 -0
- package/dist/todo/index.js +59 -0
- package/dist/todo/module.d.ts +5 -0
- package/dist/todo/module.js +5 -3
- package/dist/trade_finance/.kosh/bindings.js +1 -1
- package/dist/trade_finance/.kosh/schema.d.ts +2 -1
- package/dist/trade_finance/i18n/bn.d.ts +2 -0
- package/dist/trade_finance/i18n/bn.js +162 -0
- package/dist/trade_finance/index.js +95 -0
- package/dist/trade_finance/module.d.ts +26 -0
- package/dist/trade_finance/module.js +29 -8
- package/dist/trade_finance_account/.kosh/bindings.js +1 -1
- package/dist/trade_finance_account/.kosh/schema.d.ts +651 -10
- package/dist/trade_finance_account/i18n/bn.d.ts +2 -0
- package/dist/trade_finance_account/i18n/bn.js +27 -0
- package/dist/trade_finance_account/index.js +3 -0
- package/dist/trade_finance_account/module.d.ts +5129 -1509
- package/dist/trade_finance_account/module.js +2 -0
- package/dist/trade_finance_purchase/.kosh/bindings.js +1 -1
- package/dist/trade_finance_purchase/.kosh/schema.d.ts +908 -5
- package/dist/trade_finance_purchase/i18n/bn.d.ts +2 -0
- package/dist/trade_finance_purchase/i18n/bn.js +6 -0
- package/dist/trade_finance_purchase/index.js +2 -0
- package/dist/trade_finance_purchase/module.d.ts +6909 -408
- package/dist/trade_finance_sale/.kosh/bindings.js +1 -1
- package/dist/trade_finance_sale/.kosh/schema.d.ts +292 -4
- package/dist/trade_finance_sale/i18n/bn.d.ts +2 -0
- package/dist/trade_finance_sale/i18n/bn.js +6 -0
- package/dist/trade_finance_sale/index.js +2 -0
- package/dist/trade_finance_sale/module.d.ts +2602 -331
- package/dist/ui/api.d.ts +2 -0
- package/dist/ui/app.d.ts +9 -0
- package/dist/ui/app.js +47 -15
- package/dist/ui/components/AppIcon.js +9 -2
- package/dist/ui/components/Explain.d.ts +69 -0
- package/dist/ui/components/Explain.js +62 -0
- package/dist/ui/context.d.ts +8 -1
- package/dist/ui/context.js +34 -1
- package/dist/ui/i18n/messages.d.ts +40 -0
- package/dist/ui/i18n/messages.js +80 -0
- package/dist/ui/index.d.ts +2 -1
- package/dist/ui/index.js +1 -0
- package/dist/ui/registry.d.ts +14 -0
- package/dist/ui/registry.js +10 -0
- package/dist/ui/views/FormView.d.ts +6 -0
- package/dist/ui/views/FormView.js +51 -12
- package/dist/ui/views/KanbanView.js +9 -1
- package/dist/ui/views/ListView.d.ts +8 -0
- package/dist/ui/views/ListView.js +14 -5
- package/dist/ui/views/StatsRow.js +2 -1
- package/dist/ui/views/widgets.js +7 -1
- package/dist/views/extend.js +12 -0
- package/dist/views/types.d.ts +13 -2
- package/dist/views/validate.js +8 -1
- package/dist/website/.kosh/bindings.js +1 -1
- package/dist/website/.kosh/schema.d.ts +2 -1
- package/dist/website/i18n/bn.d.ts +2 -0
- package/dist/website/i18n/bn.js +113 -0
- package/dist/website/index.js +37 -0
- package/dist/website/module.d.ts +20 -0
- package/dist/website/module.js +30 -5
- package/dist/website_crm/.kosh/bindings.js +1 -1
- package/dist/website_crm/.kosh/schema.d.ts +3 -1
- package/dist/website_crm/i18n/bn.d.ts +2 -0
- package/dist/website_crm/i18n/bn.js +5 -0
- package/dist/website_crm/index.js +2 -0
- package/dist/website_crm/module.d.ts +41 -0
- package/dist/website_sale/.kosh/bindings.d.ts +22 -0
- package/dist/website_sale/.kosh/bindings.js +15 -0
- package/dist/website_sale/.kosh/schema.d.ts +2909 -0
- package/dist/website_sale/couriers.d.ts +50 -0
- package/dist/website_sale/couriers.js +59 -0
- package/dist/website_sale/demo.d.ts +7 -0
- package/dist/website_sale/demo.js +90 -0
- package/dist/website_sale/growth.d.ts +31 -0
- package/dist/website_sale/growth.js +163 -0
- package/dist/website_sale/i18n/bn.d.ts +2 -0
- package/dist/website_sale/i18n/bn.js +132 -0
- package/dist/website_sale/index.d.ts +49 -0
- package/dist/website_sale/index.js +620 -0
- package/dist/website_sale/module.d.ts +35182 -0
- package/dist/website_sale/module.js +419 -0
- package/dist/website_sale/shipments.d.ts +16 -0
- package/dist/website_sale/shipments.js +113 -0
- package/dist/website_sale/shop.d.ts +81 -0
- package/dist/website_sale/shop.js +662 -0
- package/dist/website_sale_stock/.kosh/bindings.d.ts +22 -0
- package/dist/website_sale_stock/.kosh/bindings.js +15 -0
- package/dist/website_sale_stock/.kosh/schema.d.ts +3400 -0
- package/dist/website_sale_stock/i18n/bn.d.ts +2 -0
- package/dist/website_sale_stock/i18n/bn.js +4 -0
- package/dist/website_sale_stock/index.d.ts +9 -0
- package/dist/website_sale_stock/index.js +22 -0
- package/dist/website_sale_stock/module.d.ts +11 -0
- package/dist/website_sale_stock/module.js +32 -0
- package/package.json +117 -8
- package/dist/mrp/index.d.ts +0 -3
- package/dist/mrp/index.js +0 -392
- package/dist/mrp/module.js +0 -695
- package/dist/mrp_account/index.d.ts +0 -3
- package/dist/mrp_account/index.js +0 -22
- /package/dist/{mrp → account_asset}/.kosh/bindings.d.ts +0 -0
- /package/dist/{mrp_account → account_budget}/.kosh/bindings.d.ts +0 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Helpdesk clock (RFC 0024 §2.4), refreshed every few minutes on the server and on request:
|
|
3
|
+
*
|
|
4
|
+
* - each open ticket gets its **SLA policy** (the first, by sequence, of its team or every team, from its priority,
|
|
5
|
+
* for its customer or every customer) and its **deadlines** in the team's business hours — the first reply from
|
|
6
|
+
* the ticket's opening, the resolution pushed back by the time spent waiting on the customer;
|
|
7
|
+
* - the **first reply** is the first message (not a note) an agent posted on it;
|
|
8
|
+
* - a ticket waiting on the customer **resumes** when the customer writes back (a message by email);
|
|
9
|
+
* - unassigned tickets of teams that assign get their **agent**: in turn, or the one with the fewest open tickets;
|
|
10
|
+
* - the **status**: met (solved in time), breached (a target passed), at risk (less than a fifth left), on track.
|
|
11
|
+
*
|
|
12
|
+
* A solved ticket asks its customer for a **rating** through a link (`/api/v1/public/helpdesk/rate`).
|
|
13
|
+
*/
|
|
14
|
+
import { randomBytes } from 'node:crypto';
|
|
15
|
+
import { mailerFromEnv } from '../mail/index.js';
|
|
16
|
+
import { installationSetting } from '../server/index.js';
|
|
17
|
+
import { orm } from '../server/orm.js';
|
|
18
|
+
import { addBusinessMinutes, businessMinutesBetween, WEEKENDS } from './hours.js';
|
|
19
|
+
import { RANK } from './module.js';
|
|
20
|
+
/** The installation's time zone for business hours (App settings › Helpdesk). */
|
|
21
|
+
export async function timeZoneOf(env) {
|
|
22
|
+
const tz = String(await installationSetting(env, 'helpdesk.timezone', 'Asia/Dhaka'));
|
|
23
|
+
try {
|
|
24
|
+
new Intl.DateTimeFormat('en-US', { timeZone: tz });
|
|
25
|
+
return tz;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return 'Asia/Dhaka';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** A team's business hours; without a team, every day from 09:00 to 18:00. */
|
|
32
|
+
export async function hoursOf(env, team) {
|
|
33
|
+
return {
|
|
34
|
+
open: team?.open ?? '09:00',
|
|
35
|
+
close: team?.close ?? '18:00',
|
|
36
|
+
weekend: WEEKENDS[team?.weekend ?? 'none'] ?? [],
|
|
37
|
+
tz: await timeZoneOf(env),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** The working minutes a ticket has been waiting on the customer, up to `now`. */
|
|
41
|
+
export async function pausedSince(env, ticket, now) {
|
|
42
|
+
if (ticket.waitingSince === null)
|
|
43
|
+
return 0;
|
|
44
|
+
return businessMinutesBetween(ticket.waitingSince, now, await hoursOf(env, ticket.team));
|
|
45
|
+
}
|
|
46
|
+
/** Refreshes the tickets given (every open, waiting and just-solved ticket when none). */
|
|
47
|
+
export async function refreshSla(env, ids, now = new Date()) {
|
|
48
|
+
const chosen = ids ??
|
|
49
|
+
(await env.model('helpdesk.ticket').search({
|
|
50
|
+
where: {
|
|
51
|
+
or: [
|
|
52
|
+
{ state: { in: ['open', 'waiting'] } },
|
|
53
|
+
{ state: 'solved', slaStatus: { in: ['on_track', 'at_risk'] } },
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
})).ids;
|
|
57
|
+
const tickets = [
|
|
58
|
+
...(await env
|
|
59
|
+
.model('helpdesk.ticket')
|
|
60
|
+
.browse(chosen)
|
|
61
|
+
.load({ team: { members: true }, sla: true, partner: true })),
|
|
62
|
+
];
|
|
63
|
+
const policies = [
|
|
64
|
+
...(await (await env.model('helpdesk.sla').search({ where: {}, order: ['sequence asc', 'id asc'] })).load({
|
|
65
|
+
team: true,
|
|
66
|
+
partner: true,
|
|
67
|
+
})),
|
|
68
|
+
];
|
|
69
|
+
for (const t of tickets) {
|
|
70
|
+
const changes = {};
|
|
71
|
+
// The agent, for teams that assign.
|
|
72
|
+
if (t.assignee === null &&
|
|
73
|
+
t.team !== null &&
|
|
74
|
+
t.team.assignment !== 'manual' &&
|
|
75
|
+
t.team.members.length > 0) {
|
|
76
|
+
const members = [...t.team.members].sort((a, b) => a.id - b.id);
|
|
77
|
+
let chosen = members[0];
|
|
78
|
+
if (t.team.assignment === 'load') {
|
|
79
|
+
let fewest = Number.POSITIVE_INFINITY;
|
|
80
|
+
for (const m of members) {
|
|
81
|
+
const open = (await env.model('helpdesk.ticket').search({
|
|
82
|
+
where: { assignee: m.id, state: { in: ['open', 'waiting'] } },
|
|
83
|
+
})).length;
|
|
84
|
+
if (open < fewest) {
|
|
85
|
+
fewest = open;
|
|
86
|
+
chosen = m;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// In turn: the member after the one given the team's latest ticket.
|
|
92
|
+
const [last] = await (await env.model('helpdesk.ticket').search({
|
|
93
|
+
where: { team: t.team.id, assignee: { isNull: false }, id: { ne: t.id } },
|
|
94
|
+
order: ['id desc'],
|
|
95
|
+
limit: 1,
|
|
96
|
+
})).load({ assignee: true });
|
|
97
|
+
const at = members.findIndex((m) => m.id === last?.assignee?.id);
|
|
98
|
+
chosen = members[(at + 1) % members.length];
|
|
99
|
+
}
|
|
100
|
+
if (chosen !== undefined)
|
|
101
|
+
changes['assignee'] = chosen.id;
|
|
102
|
+
}
|
|
103
|
+
// The policy.
|
|
104
|
+
let sla = t.sla;
|
|
105
|
+
if (sla === null) {
|
|
106
|
+
sla =
|
|
107
|
+
policies.find((p) => (p.team === null || p.team.id === t.team?.id) &&
|
|
108
|
+
(p.partner === null || p.partner.id === t.partner?.id) &&
|
|
109
|
+
(p.priority === null || (RANK[t.priority] ?? 1) >= (RANK[p.priority] ?? 0))) ?? null;
|
|
110
|
+
if (sla !== null)
|
|
111
|
+
changes['sla'] = sla.id;
|
|
112
|
+
}
|
|
113
|
+
// The first reply: the first message (not a note) an agent posted.
|
|
114
|
+
let firstReplied = t.firstRepliedAt;
|
|
115
|
+
const messages = [
|
|
116
|
+
...(await (await env.model('mail.message').search({
|
|
117
|
+
where: { resModel: 'helpdesk.ticket', resId: t.id, kind: 'comment' },
|
|
118
|
+
order: ['id asc'],
|
|
119
|
+
})).load(['author', 'authorEmail', 'createdAt'])),
|
|
120
|
+
];
|
|
121
|
+
if (firstReplied === null) {
|
|
122
|
+
const reply = messages.find((m) => m.author !== null && (m.authorEmail ?? '') === '');
|
|
123
|
+
if (reply !== undefined) {
|
|
124
|
+
firstReplied = reply.createdAt;
|
|
125
|
+
changes['firstRepliedAt'] = reply.createdAt;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// A customer's email while waiting resumes the ticket.
|
|
129
|
+
let state = t.state;
|
|
130
|
+
let paused = t.pausedMinutes;
|
|
131
|
+
if (state === 'waiting' && t.waitingSince !== null) {
|
|
132
|
+
const since = t.waitingSince;
|
|
133
|
+
const answer = messages.find((m) => m.author === null && (m.authorEmail ?? '') !== '' && m.createdAt > since);
|
|
134
|
+
if (answer !== undefined) {
|
|
135
|
+
paused += await pausedSince(env, t, answer.createdAt);
|
|
136
|
+
changes['pausedMinutes'] = paused;
|
|
137
|
+
changes['waitingSince'] = null;
|
|
138
|
+
state = 'open';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Deadlines and the status.
|
|
142
|
+
if (sla !== null) {
|
|
143
|
+
const hours = await hoursOf(env, t.team);
|
|
144
|
+
const opened = t.createdAt;
|
|
145
|
+
const firstBy = addBusinessMinutes(opened, Number(sla.firstReplyHours) * 60, hours);
|
|
146
|
+
const waitingNow = state === 'waiting' && t.waitingSince !== null ? await pausedSince(env, t, now) : 0;
|
|
147
|
+
const solveBy = addBusinessMinutes(opened, Number(sla.resolveHours) * 60 + paused + waitingNow, hours);
|
|
148
|
+
changes['firstReplyDeadline'] = firstBy;
|
|
149
|
+
changes['resolveDeadline'] = solveBy;
|
|
150
|
+
const solvedAt = t.solvedAt;
|
|
151
|
+
// Late for the first reply: replied after the target, or not yet (or never, when solved) past it.
|
|
152
|
+
const firstLate = (firstReplied ?? solvedAt ?? now) > firstBy;
|
|
153
|
+
let status;
|
|
154
|
+
if (solvedAt !== null)
|
|
155
|
+
status = solvedAt <= solveBy && !firstLate ? 'met' : 'breached';
|
|
156
|
+
else if (firstLate || now > solveBy)
|
|
157
|
+
status = 'breached';
|
|
158
|
+
else {
|
|
159
|
+
const total = businessMinutesBetween(opened, solveBy, hours);
|
|
160
|
+
const left = businessMinutesBetween(now, solveBy, hours);
|
|
161
|
+
status = total > 0 && left < total / 5 ? 'at_risk' : 'on_track';
|
|
162
|
+
}
|
|
163
|
+
changes['slaStatus'] = status;
|
|
164
|
+
}
|
|
165
|
+
if (Object.keys(changes).length > 0)
|
|
166
|
+
await env
|
|
167
|
+
.model('helpdesk.ticket')
|
|
168
|
+
.browse([t.id])
|
|
169
|
+
.write(changes);
|
|
170
|
+
if (state === 'open' && t.state === 'waiting') {
|
|
171
|
+
await env.flush();
|
|
172
|
+
await env.model('helpdesk.ticket').browse([t.id]).resume();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
await env.flush();
|
|
176
|
+
return tickets.length;
|
|
177
|
+
}
|
|
178
|
+
/** Solved tickets of teams that ask: a rating link for the customer, sent by email when a mailer is set. */
|
|
179
|
+
export async function askRating(env, ids) {
|
|
180
|
+
const mailer = mailerFromEnv();
|
|
181
|
+
const base = process.env['KOSH_BASE_URL'] ?? '';
|
|
182
|
+
for (const t of await env
|
|
183
|
+
.model('helpdesk.ticket')
|
|
184
|
+
.browse(ids)
|
|
185
|
+
.load({ team: true, partner: true })) {
|
|
186
|
+
if (t.team !== null && !t.team.rating)
|
|
187
|
+
continue;
|
|
188
|
+
const token = randomBytes(24).toString('base64url');
|
|
189
|
+
await env
|
|
190
|
+
.model('helpdesk.ticket')
|
|
191
|
+
.browse([t.id])
|
|
192
|
+
.write({ ratingToken: token });
|
|
193
|
+
const to = t.partner?.email ?? t.email;
|
|
194
|
+
if (mailer === undefined || to === null || to === '')
|
|
195
|
+
continue;
|
|
196
|
+
const link = (score) => `${base}/api/v1/public/helpdesk/rate?token=${token}&score=${score}`;
|
|
197
|
+
const escapeHtml = (x) => x.replace(/[&<>"]/g, (c) => ({ '&': '&', '<': '<', '>': '>', '"': '"' })[c]);
|
|
198
|
+
const intro = `Your request ${t.name} (“${t.subject}”) is solved. How was the help?`;
|
|
199
|
+
await mailer
|
|
200
|
+
.send({
|
|
201
|
+
to,
|
|
202
|
+
subject: `How did we do? ${t.name}: ${t.subject}`,
|
|
203
|
+
text: [intro, ...[5, 4, 3, 2, 1].map((s) => `${'★'.repeat(s)} ${link(s)}`)].join('\n'),
|
|
204
|
+
html: `<p>${escapeHtml(intro)}</p><p>${[5, 4, 3, 2, 1]
|
|
205
|
+
.map((s) => `<a href="${escapeHtml(link(s))}">${'★'.repeat(s)}</a>`)
|
|
206
|
+
.join('<br>')}</p>`,
|
|
207
|
+
})
|
|
208
|
+
.catch(() => undefined);
|
|
209
|
+
}
|
|
210
|
+
await env.flush();
|
|
211
|
+
}
|
|
212
|
+
/** A rating from the link, once. @returns the ticket's reference, or `null` for an unknown or used link */
|
|
213
|
+
export async function rate(env, token, score, comment) {
|
|
214
|
+
if (!Number.isInteger(score) || score < 1 || score > 5)
|
|
215
|
+
return null;
|
|
216
|
+
const [t] = await (await env.model('helpdesk.ticket').search({ where: { ratingToken: token }, limit: 1 })).load(['name', 'rating']);
|
|
217
|
+
if (t === undefined || t.rating !== null)
|
|
218
|
+
return null;
|
|
219
|
+
await env
|
|
220
|
+
.model('helpdesk.ticket')
|
|
221
|
+
.browse([t.id])
|
|
222
|
+
.write({ rating: score, ratingComment: comment, ratingToken: null });
|
|
223
|
+
await env.flush();
|
|
224
|
+
return t.name;
|
|
225
|
+
}
|
|
226
|
+
export { orm };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash:
|
|
1
|
+
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 54ccb51df47a730e
|
|
2
2
|
// Bindings of module `hr`: import the definition API from here to get types scoped to what it can see.
|
|
3
3
|
export { defineModel, defineModule, extendModel, f, replace } from '../../server/orm.js';
|
|
4
4
|
import { definitions } from '../../server/orm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash:
|
|
1
|
+
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 54ccb51df47a730e
|
|
2
2
|
// Schema view of module `hr` (RFC 0002 §7.7): the models it owns or depends on, with the extensions it can see.
|
|
3
3
|
import type { F } from '../../server/orm.js';
|
|
4
4
|
|
|
@@ -12,8 +12,10 @@ export interface SchemaView {
|
|
|
12
12
|
readonly 'auth.user_grant': AuthUserGrant;
|
|
13
13
|
readonly 'auth.user_group': AuthUserGroup;
|
|
14
14
|
readonly 'hr.contract': HrContract;
|
|
15
|
+
readonly 'hr.contract.type': HrContractType;
|
|
15
16
|
readonly 'hr.department': HrDepartment;
|
|
16
17
|
readonly 'hr.employee': HrEmployee;
|
|
18
|
+
readonly 'hr.employee.tag': HrEmployeeTag;
|
|
17
19
|
readonly 'hr.job': HrJob;
|
|
18
20
|
readonly 'hr.leave': HrLeave;
|
|
19
21
|
readonly 'hr.leave.type': HrLeaveType;
|
|
@@ -221,6 +223,7 @@ export interface HrContract {
|
|
|
221
223
|
readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
|
|
222
224
|
readonly name: F.Char<{ readonly required: true }>;
|
|
223
225
|
readonly employee: F.Many2one<'hr.employee', { readonly required: true }>;
|
|
226
|
+
readonly employmentType: F.Many2one<'hr.contract.type'>;
|
|
224
227
|
readonly kind: F.Selection<'permanent' | 'fixed' | 'probation' | 'intern', { readonly required: true; readonly default: true }>;
|
|
225
228
|
readonly dateStart: F.DateOnly<{ readonly required: true }>;
|
|
226
229
|
readonly dateEnd: F.DateOnly;
|
|
@@ -237,6 +240,29 @@ export interface HrContractMethods extends F.Methods<typeof import('../module.js
|
|
|
237
240
|
readonly 'start': () => Promise<void>;
|
|
238
241
|
}
|
|
239
242
|
|
|
243
|
+
/** `hr.contract.type` (owner: hr). */
|
|
244
|
+
export interface HrContractType {
|
|
245
|
+
readonly name: 'hr.contract.type';
|
|
246
|
+
readonly fields: {
|
|
247
|
+
readonly id: F.Id<'hr.contract.type'>;
|
|
248
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
249
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
250
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
251
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
252
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
253
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
254
|
+
readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
|
|
255
|
+
readonly code: F.Char;
|
|
256
|
+
readonly country: F.Char;
|
|
257
|
+
readonly sequence: F.Integer<{ readonly default: true }>;
|
|
258
|
+
};
|
|
259
|
+
readonly methods: HrContractTypeMethods;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/** Methods of `hr.contract.type`: declared ones and transitions. */
|
|
263
|
+
export interface HrContractTypeMethods extends F.Methods<typeof import('../module.js').hrShutro, 'hr.contract.type'> {
|
|
264
|
+
}
|
|
265
|
+
|
|
240
266
|
/** `hr.department` (owner: hr). */
|
|
241
267
|
export interface HrDepartment {
|
|
242
268
|
readonly name: 'hr.department';
|
|
@@ -252,6 +278,7 @@ export interface HrDepartment {
|
|
|
252
278
|
readonly name: F.Char<{ readonly required: true }>;
|
|
253
279
|
readonly parent: F.Many2one<'hr.department'>;
|
|
254
280
|
readonly head: F.Many2one<'hr.employee'>;
|
|
281
|
+
readonly approvalUsers: F.Many2many<'res.users', { readonly required: true }>;
|
|
255
282
|
};
|
|
256
283
|
readonly methods: HrDepartmentMethods;
|
|
257
284
|
}
|
|
@@ -273,13 +300,22 @@ export interface HrEmployee {
|
|
|
273
300
|
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
274
301
|
readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
|
|
275
302
|
readonly name: F.Char<{ readonly required: true }>;
|
|
303
|
+
readonly jobTitle: F.Char;
|
|
276
304
|
readonly user: F.Many2one<'res.users'>;
|
|
277
305
|
readonly department: F.Many2one<'hr.department'>;
|
|
278
306
|
readonly job: F.Many2one<'hr.job'>;
|
|
279
307
|
readonly manager: F.Many2one<'hr.employee'>;
|
|
280
308
|
readonly team: F.One2many<'hr.employee', { readonly required: true }>;
|
|
309
|
+
readonly unitHead: F.Many2one<'hr.employee'>;
|
|
310
|
+
readonly coach: F.Many2one<'hr.employee'>;
|
|
311
|
+
readonly property: F.Char;
|
|
312
|
+
readonly tags: F.Many2many<'hr.employee.tag', { readonly required: true }>;
|
|
281
313
|
readonly workEmail: F.Char;
|
|
282
314
|
readonly workPhone: F.Char;
|
|
315
|
+
readonly mobile: F.Char;
|
|
316
|
+
readonly expenseApprover: F.Many2one<'res.users'>;
|
|
317
|
+
readonly leaveApprover: F.Many2one<'res.users'>;
|
|
318
|
+
readonly timezone: F.Char<{ readonly default: true }>;
|
|
283
319
|
readonly hireDate: F.DateOnly;
|
|
284
320
|
readonly birthday: F.DateOnly;
|
|
285
321
|
readonly nationalId: F.Char;
|
|
@@ -293,6 +329,27 @@ export interface HrEmployee {
|
|
|
293
329
|
export interface HrEmployeeMethods extends F.Methods<typeof import('../module.js').hrShutro, 'hr.employee'> {
|
|
294
330
|
}
|
|
295
331
|
|
|
332
|
+
/** `hr.employee.tag` (owner: hr). */
|
|
333
|
+
export interface HrEmployeeTag {
|
|
334
|
+
readonly name: 'hr.employee.tag';
|
|
335
|
+
readonly fields: {
|
|
336
|
+
readonly id: F.Id<'hr.employee.tag'>;
|
|
337
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
338
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
339
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
340
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
341
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
342
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
343
|
+
readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
|
|
344
|
+
readonly color: F.Integer<{ readonly default: true }>;
|
|
345
|
+
};
|
|
346
|
+
readonly methods: HrEmployeeTagMethods;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/** Methods of `hr.employee.tag`: declared ones and transitions. */
|
|
350
|
+
export interface HrEmployeeTagMethods extends F.Methods<typeof import('../module.js').hrShutro, 'hr.employee.tag'> {
|
|
351
|
+
}
|
|
352
|
+
|
|
296
353
|
/** `hr.job` (owner: hr). */
|
|
297
354
|
export interface HrJob {
|
|
298
355
|
readonly name: 'hr.job';
|
|
@@ -782,6 +839,7 @@ export interface ResPartner {
|
|
|
782
839
|
readonly parent: F.Many2one<'res.partner'>;
|
|
783
840
|
readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
|
|
784
841
|
readonly email: F.Char;
|
|
842
|
+
readonly lang: F.Selection<'en' | 'bn'>;
|
|
785
843
|
readonly phone: F.Char;
|
|
786
844
|
readonly mobile: F.Char;
|
|
787
845
|
readonly website: F.Char;
|
package/dist/hr/demo.js
CHANGED
|
@@ -43,7 +43,17 @@ export async function hrDemo(ctx) {
|
|
|
43
43
|
await ctx.as(RAHIM, async (raw) => {
|
|
44
44
|
const env = raw;
|
|
45
45
|
const casual = await idByName(env, 'hr.leave.type', 'Casual leave');
|
|
46
|
-
|
|
46
|
+
// A working day about a month ahead on which Rahim has no leave yet.
|
|
47
|
+
let day = await workday(ctx, env, 30);
|
|
48
|
+
for (let from = 31;; from += 1) {
|
|
49
|
+
const taken = await env.model('hr.leave').search({
|
|
50
|
+
where: { employee: rahim, dateFrom: { lte: day }, dateTo: { gte: day } },
|
|
51
|
+
limit: 1,
|
|
52
|
+
});
|
|
53
|
+
if (taken.ids.length === 0)
|
|
54
|
+
break;
|
|
55
|
+
day = await workday(ctx, env, from);
|
|
56
|
+
}
|
|
47
57
|
const made = await env.model('hr.leave').create([
|
|
48
58
|
{
|
|
49
59
|
employee: rahim,
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/** Bangla for the module's labels, keyed by their English text (RFC 0023 §3.1; `pnpm i18n:extract`). */
|
|
2
|
+
export const bn = {
|
|
3
|
+
'A contract ends after it starts.': 'চুক্তি শুরুর পরে শেষ হয়।',
|
|
4
|
+
'A contract runs once started, until it is ended or cancelled.': 'শুরু করার পর চুক্তিটি চলমান থাকে, যতক্ষণ না তা শেষ বা বাতিল করা হয়।',
|
|
5
|
+
'A leave ends on or after it starts.': 'ছুটি শুরুর দিন বা তার পরে শেষ হয়।',
|
|
6
|
+
'A request waits once submitted, and someone other than the requester approves or refuses it.': 'জমা দেওয়ার পর অনুরোধটি অপেক্ষায় থাকে, এবং অনুরোধকারী ছাড়া অন্য কেউ তা অনুমোদন বা নামঞ্জুর করেন।',
|
|
7
|
+
'A short code used in reports and payroll files.': 'রিপোর্ট ও বেতনের ফাইলে ব্যবহৃত সংক্ষিপ্ত কোড।',
|
|
8
|
+
Active: 'সক্রিয়',
|
|
9
|
+
'An IANA time zone (Asia/Dhaka, Asia/Kolkata): the person’s working hours and reminders follow it.': 'একটি IANA সময় অঞ্চল (Asia/Dhaka, Asia/Kolkata): ব্যক্তির কর্মঘণ্টা ও রিমাইন্ডার এটি অনুসরণ করে।',
|
|
10
|
+
Approve: 'অনুমোদন করুন',
|
|
11
|
+
Approved: 'অনুমোদিত',
|
|
12
|
+
Approvers: 'অনুমোদনকারী',
|
|
13
|
+
'Approves this person’s expense reports first (else the Spend approvers).': 'এই ব্যক্তির খরচের প্রতিবেদন প্রথমে অনুমোদন করেন (না থাকলে খরচ অনুমোদনকারীরা)।',
|
|
14
|
+
'As printed on cards and letters; the position may differ.': 'কার্ড ও চিঠিতে যেভাবে ছাপা হয়; পদ আলাদা হতে পারে।',
|
|
15
|
+
'Back to draft': 'খসড়ায় ফেরত নিন',
|
|
16
|
+
Birthday: 'জন্মদিন',
|
|
17
|
+
'By department': 'বিভাগ অনুযায়ী',
|
|
18
|
+
Cancel: 'বাতিল করুন',
|
|
19
|
+
'Cancel this contract?': 'এই চুক্তি বাতিল করবেন?',
|
|
20
|
+
Cancelled: 'বাতিল',
|
|
21
|
+
Coach: 'কোচ',
|
|
22
|
+
Code: 'কোড',
|
|
23
|
+
Colour: 'রং',
|
|
24
|
+
Company: 'প্রতিষ্ঠান',
|
|
25
|
+
Configuration: 'কনফিগারেশন',
|
|
26
|
+
Contract: 'চুক্তি',
|
|
27
|
+
Contracts: 'চুক্তিসমূহ',
|
|
28
|
+
Country: 'দেশ',
|
|
29
|
+
'Created At': 'তৈরির সময়',
|
|
30
|
+
'Created By': 'তৈরি করেছেন',
|
|
31
|
+
'Days per year': 'বছরে দিন',
|
|
32
|
+
'Decides this person’s leave beside HR managers.': 'এইচআর ব্যবস্থাপকদের পাশাপাশি এই ব্যক্তির ছুটির সিদ্ধান্ত নেন।',
|
|
33
|
+
Department: 'বিভাগ',
|
|
34
|
+
Departments: 'বিভাগসমূহ',
|
|
35
|
+
'Display Name': 'প্রদর্শিত নাম',
|
|
36
|
+
Draft: 'খসড়া',
|
|
37
|
+
'Emergency contact': 'জরুরি যোগাযোগ',
|
|
38
|
+
Employee: 'কর্মী',
|
|
39
|
+
'Employee (directory, own leave, team’s leave)': 'কর্মী (তালিকা, নিজের ছুটি, দলের ছুটি)',
|
|
40
|
+
'Employee tag': 'কর্মী ট্যাগ',
|
|
41
|
+
'Employee tags': 'কর্মী ট্যাগসমূহ',
|
|
42
|
+
Employees: 'কর্মীবৃন্দ',
|
|
43
|
+
'Employees, the org chart, contracts and leave': 'কর্মী, সাংগঠনিক কাঠামো, চুক্তি ও ছুটি',
|
|
44
|
+
'Employment type': 'চাকরির ধরন',
|
|
45
|
+
'Employment types': 'চাকরির ধরনসমূহ',
|
|
46
|
+
End: 'শেষ',
|
|
47
|
+
Ended: 'শেষ হয়েছে',
|
|
48
|
+
Ends: 'শেষ',
|
|
49
|
+
'Expense approver': 'খরচ অনুমোদনকারী',
|
|
50
|
+
'Fixed term': 'নির্দিষ্ট মেয়াদি',
|
|
51
|
+
From: 'থেকে',
|
|
52
|
+
Head: 'প্রধান',
|
|
53
|
+
'Home address': 'বাসার ঠিকানা',
|
|
54
|
+
'HR manager': 'মানবসম্পদ ব্যবস্থাপক',
|
|
55
|
+
'HR manager (everything, personal data)': 'মানবসম্পদ ব্যবস্থাপক (সবকিছু, ব্যক্তিগত তথ্য)',
|
|
56
|
+
ID: 'আইডি',
|
|
57
|
+
Internship: 'ইন্টার্নশিপ',
|
|
58
|
+
'Job title': 'পদবি',
|
|
59
|
+
Joined: 'যোগদান',
|
|
60
|
+
'Joined by month': 'মাস অনুযায়ী যোগদান',
|
|
61
|
+
Leave: 'ছুটি',
|
|
62
|
+
'Leave already requested keeps its days; new requests count by this week.': 'আগে চাওয়া ছুটির দিন যেমন আছে থাকবে; নতুন আবেদন এই সপ্তাহ অনুযায়ী গণনা হবে।',
|
|
63
|
+
'Leave approver': 'ছুটি অনুমোদনকারী',
|
|
64
|
+
'Leave days by person': 'ব্যক্তি অনুযায়ী ছুটির দিন',
|
|
65
|
+
'Leave days taken': 'নেওয়া ছুটির দিন',
|
|
66
|
+
'Leave days this month': 'এ মাসের ছুটির দিন',
|
|
67
|
+
'Leave type': 'ছুটির ধরন',
|
|
68
|
+
'Leave types': 'ছুটির ধরনসমূহ',
|
|
69
|
+
'Leave waiting approval': 'অনুমোদনের অপেক্ষায় ছুটি',
|
|
70
|
+
Manager: 'ব্যবস্থাপক',
|
|
71
|
+
Mine: 'আমার',
|
|
72
|
+
'Monthly wage': 'মাসিক মজুরি',
|
|
73
|
+
'My team': 'আমার দল',
|
|
74
|
+
Name: 'নাম',
|
|
75
|
+
'National ID': 'জাতীয় পরিচয়পত্র',
|
|
76
|
+
'Not enough days left of this leave type this year.': 'এ বছর এই ধরনের ছুটির যথেষ্ট দিন বাকি নেই।',
|
|
77
|
+
Overview: 'সারসংক্ষেপ',
|
|
78
|
+
'Part of': 'অন্তর্ভুক্ত',
|
|
79
|
+
People: 'জনবল',
|
|
80
|
+
'People who approve for this department when an approval level asks for the department’s approvers.': 'অনুমোদনের কোনো ধাপ বিভাগের অনুমোদনকারী চাইলে যাঁরা এই বিভাগের পক্ষে অনুমোদন দেন।',
|
|
81
|
+
Permanent: 'স্থায়ী',
|
|
82
|
+
Position: 'পদ',
|
|
83
|
+
Positions: 'পদসমূহ',
|
|
84
|
+
Probation: 'শিক্ষানবিশ',
|
|
85
|
+
Property: 'প্রপার্টি',
|
|
86
|
+
Reason: 'কারণ',
|
|
87
|
+
Reference: 'রেফারেন্স',
|
|
88
|
+
Refuse: 'নামঞ্জুর করুন',
|
|
89
|
+
Refused: 'নামঞ্জুর',
|
|
90
|
+
'Reports to': 'যাঁর কাছে জবাবদিহি',
|
|
91
|
+
Running: 'চলমান',
|
|
92
|
+
'Running contracts': 'চলমান চুক্তি',
|
|
93
|
+
Schedule: 'সময়সূচি',
|
|
94
|
+
Sequence: 'ক্রম',
|
|
95
|
+
Start: 'শুরু',
|
|
96
|
+
Starts: 'শুরু',
|
|
97
|
+
State: 'অবস্থা',
|
|
98
|
+
Submit: 'জমা দিন',
|
|
99
|
+
Tags: 'ট্যাগ',
|
|
100
|
+
Team: 'দল',
|
|
101
|
+
'The country whose labour law the type follows, as its two-letter code (BD, IN); empty: any.': 'যে দেশের শ্রম আইন এই ধরন অনুসরণ করে, দুই অক্ষরের কোডে (BD, IN); খালি: যেকোনো।',
|
|
102
|
+
'The head of the person’s unit (a plant, a depot, a farm), beside the line manager; approvals may ask them.': 'ব্যক্তির ইউনিটের প্রধান (কারখানা, ডিপো, খামার), লাইন ম্যানেজারের পাশাপাশি; অনুমোদনে তাঁকে চাওয়া হতে পারে।',
|
|
103
|
+
'The kind of employment the contract is for: permanent, a fixed term, probation or an internship.': 'চুক্তিটি কোন ধরনের চাকরির জন্য: স্থায়ী, নির্দিষ্ট মেয়াদি, শিক্ষানবিশ বা ইন্টার্নশিপ।',
|
|
104
|
+
'The property or unit the person works for (a mill, a farm, a depot).': 'ব্যক্তি যে প্রপার্টি বা ইউনিটে কাজ করেন (মিল, খামার, ডিপো)।',
|
|
105
|
+
'The working days do not match the dates (or none falls on a working day).': 'কর্মদিবস তারিখের সাথে মেলে না (অথবা কোনো দিনই কর্মদিবস নয়)।',
|
|
106
|
+
'This person already has leave on some of these days.': 'এই ব্যক্তির এর মধ্যে কিছু দিনে আগেই ছুটি আছে।',
|
|
107
|
+
'This user is already another employee.': 'এই ব্যবহারকারী ইতিমধ্যে অন্য একজন কর্মী।',
|
|
108
|
+
'Time zone': 'সময় অঞ্চল',
|
|
109
|
+
To: 'পর্যন্ত',
|
|
110
|
+
Type: 'ধরন',
|
|
111
|
+
'Unit head': 'ইউনিট প্রধান',
|
|
112
|
+
'Updated At': 'হালনাগাদের সময়',
|
|
113
|
+
'Updated By': 'হালনাগাদ করেছেন',
|
|
114
|
+
User: 'ব্যবহারকারী',
|
|
115
|
+
Waiting: 'অপেক্ষমাণ',
|
|
116
|
+
Weekend: 'সাপ্তাহিক ছুটি',
|
|
117
|
+
'Which days are the weekend: leave counts working days only.': 'কোন দিনগুলো সাপ্তাহিক ছুটি: ছুটিতে শুধু কর্মদিবস গণনা হয়।',
|
|
118
|
+
'Who approves this person’s expenses and leave first.': 'এই ব্যক্তির খরচ ও ছুটি প্রথমে কে অনুমোদন করেন।',
|
|
119
|
+
'Work email': 'অফিসের ইমেইল',
|
|
120
|
+
'Work mobile': 'অফিসের মোবাইল',
|
|
121
|
+
'Work phone': 'অফিসের ফোন',
|
|
122
|
+
Workforce: 'ওয়ার্কফোর্স',
|
|
123
|
+
'Working days': 'কর্মদিবস',
|
|
124
|
+
'Working week': 'কর্মসপ্তাহ',
|
|
125
|
+
'Your own leave is decided by someone else; others’ by an HR manager or their leave approver.': 'আপনার নিজের ছুটির সিদ্ধান্ত অন্য কেউ নেন; অন্যদেরটা এইচআর ব্যবস্থাপক বা তাঁদের ছুটি অনুমোদনকারী।',
|
|
126
|
+
};
|
package/dist/hr/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { defineModule } from '../modules-sdk/index.js';
|
|
2
|
-
export { HrContract, HrDepartment, HrEmployee, HrJob, HrLeave, HrLeaveType, hrShutro, WEEKENDS, workingDays, } from './module.js';
|
|
2
|
+
export { HrContract, HrContractType, HrDepartment, HrEmployee, HrEmployeeTag, HrJob, HrLeave, HrLeaveType, hrShutro, WEEKENDS, weekendOf, workingDays, } from './module.js';
|
|
3
3
|
export declare const hr: ReturnType<typeof defineModule>;
|