shutro-erp 0.3.6 → 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 +1 -1
- package/dist/account_asset/.kosh/schema.d.ts +530 -8
- package/dist/account_asset/i18n/bn.d.ts +2 -0
- package/dist/account_asset/i18n/bn.js +97 -0
- package/dist/account_asset/index.js +2 -0
- package/dist/account_asset/module.d.ts +4899 -1445
- package/dist/account_budget/.kosh/bindings.js +1 -1
- package/dist/account_budget/.kosh/schema.d.ts +1130 -56
- package/dist/account_budget/i18n/bn.d.ts +2 -0
- package/dist/account_budget/i18n/bn.js +63 -0
- package/dist/account_budget/index.js +14 -0
- package/dist/account_budget/module.d.ts +17958 -4532
- package/dist/account_budget/module.js +15 -0
- package/dist/account_portal/.kosh/bindings.js +1 -1
- package/dist/account_portal/.kosh/schema.d.ts +530 -8
- 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 +5167 -1693
- package/dist/accounting/.kosh/bindings.js +1 -1
- package/dist/accounting/.kosh/schema.d.ts +530 -8
- 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 +2 -0
- package/dist/accounting/index.js +649 -2
- package/dist/accounting/module.d.ts +4998 -1451
- package/dist/accounting/module.js +124 -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.js +1 -1
- package/dist/approvals/.kosh/schema.d.ts +272 -4
- 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 +19 -1
- package/dist/approvals/index.js +477 -7
- package/dist/approvals/mails.d.ts +7 -2
- package/dist/approvals/mails.js +8 -3
- package/dist/approvals/module.d.ts +2930 -1
- package/dist/approvals/module.js +468 -7
- package/dist/approvals/web/Config.d.ts +12 -0
- package/dist/approvals/web/Config.js +60 -0
- package/dist/approvals/web/Matrix.d.ts +9 -0
- package/dist/approvals/web/Matrix.js +26 -0
- package/dist/approvals/web/index.d.ts +3 -1
- package/dist/approvals/web/index.js +8 -1
- package/dist/approvals/web/messages.js +92 -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.js +1 -1
- package/dist/attendance/.kosh/schema.d.ts +59 -1
- package/dist/attendance/i18n/bn.d.ts +2 -0
- package/dist/attendance/i18n/bn.js +147 -0
- package/dist/attendance/index.js +3 -1
- package/dist/attendance/module.d.ts +452 -8
- 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 +14 -4
- package/dist/cli/templates.d.ts +1 -1
- package/dist/cli/templates.js +34 -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 +6 -1
- package/dist/crm/.kosh/bindings.js +1 -1
- package/dist/crm/.kosh/schema.d.ts +2 -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 +20 -0
- package/dist/crm/module.js +4 -2
- package/dist/documents/.kosh/bindings.js +1 -1
- package/dist/documents/.kosh/schema.d.ts +2 -1
- package/dist/documents/i18n/bn.d.ts +2 -0
- package/dist/documents/i18n/bn.js +83 -0
- package/dist/documents/index.js +128 -1
- package/dist/documents/module.d.ts +20 -0
- package/dist/documents/module.js +1 -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 +530 -8
- 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 +4905 -1431
- package/dist/expense/.kosh/bindings.js +1 -1
- package/dist/expense/.kosh/schema.d.ts +323 -2
- package/dist/expense/i18n/bn.d.ts +2 -0
- package/dist/expense/i18n/bn.js +155 -0
- package/dist/expense/index.js +8 -1
- package/dist/expense/module.d.ts +2715 -694
- package/dist/expense/module.js +3 -1
- package/dist/expense_account/.kosh/bindings.js +1 -1
- package/dist/expense_account/.kosh/schema.d.ts +587 -8
- package/dist/expense_account/i18n/bn.d.ts +2 -0
- package/dist/expense_account/i18n/bn.js +15 -0
- package/dist/expense_account/index.js +2 -0
- package/dist/expense_account/module.d.ts +8094 -2619
- package/dist/helpdesk/.kosh/bindings.js +1 -1
- package/dist/helpdesk/.kosh/schema.d.ts +2 -1
- package/dist/helpdesk/i18n/bn.d.ts +2 -0
- package/dist/helpdesk/i18n/bn.js +127 -0
- package/dist/helpdesk/index.js +2 -0
- package/dist/helpdesk/module.d.ts +20 -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/{mrp → indent}/.kosh/bindings.js +2 -2
- 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/{mrp → indent}/module.d.ts +7164 -3075
- 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 +530 -8
- 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 +5167 -1693
- package/dist/l10n_bd_payroll/.kosh/bindings.js +1 -1
- package/dist/l10n_bd_payroll/.kosh/schema.d.ts +587 -8
- 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.js +2 -0
- package/dist/l10n_bd_payroll/module.d.ts +5910 -1548
- 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/{mrp_account → l10n_bd_pos}/.kosh/schema.d.ts +693 -651
- 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 +7402 -7647
- 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 +530 -8
- 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 +6703 -1652
- package/dist/l10n_in/module.js +25 -5
- package/dist/l10n_in/web/GstSettings.js +2 -2
- package/dist/mail/inbound/handle.js +2 -4
- 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 +298 -2
- 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 +5302 -1256
- 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 +68 -2
- package/dist/payment/.kosh/bindings.js +1 -1
- package/dist/payment/.kosh/schema.d.ts +530 -8
- package/dist/payment/i18n/bn.d.ts +2 -0
- package/dist/payment/i18n/bn.js +59 -0
- package/dist/payment/index.js +85 -0
- package/dist/payment/module.d.ts +5134 -1660
- package/dist/payment/module.js +17 -3
- package/dist/payment/settle.js +1 -0
- package/dist/payroll/.kosh/bindings.js +1 -1
- package/dist/payroll/.kosh/schema.d.ts +59 -1
- package/dist/payroll/i18n/bn.d.ts +2 -0
- package/dist/payroll/i18n/bn.js +206 -0
- package/dist/payroll/index.js +2 -0
- package/dist/payroll/module.d.ts +936 -48
- package/dist/payroll_account/.kosh/bindings.js +1 -1
- package/dist/payroll_account/.kosh/schema.d.ts +587 -8
- package/dist/payroll_account/i18n/bn.d.ts +2 -0
- package/dist/payroll_account/i18n/bn.js +10 -0
- package/dist/payroll_account/index.js +2 -0
- package/dist/payroll_account/module.d.ts +7534 -3192
- package/dist/permissions/approvals.d.ts +97 -4
- package/dist/permissions/approvals.js +780 -31
- package/dist/permissions/index.d.ts +1 -1
- package/dist/permissions/index.js +2 -2
- package/dist/permissions/models.js +177 -5
- package/dist/permissions/routes.d.ts +3 -0
- package/dist/permissions/routes.js +36 -2
- package/dist/permissions/web/ApprovalPanel.js +43 -5
- package/dist/permissions/web/messages.js +52 -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 +2 -0
- 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 +531 -8
- package/dist/pos/i18n/bn.d.ts +2 -0
- package/dist/pos/i18n/bn.js +133 -0
- package/dist/pos/index.js +83 -1
- package/dist/pos/module.d.ts +6888 -1777
- 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 +626 -9
- 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 +10798 -3276
- package/dist/product/.kosh/bindings.js +1 -1
- package/dist/product/.kosh/schema.d.ts +202 -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 +288 -1
- package/dist/product/module.d.ts +1725 -0
- package/dist/product/module.js +66 -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 +65 -2
- package/dist/project/i18n/bn.d.ts +2 -0
- package/dist/project/i18n/bn.js +383 -0
- package/dist/project/index.js +123 -0
- package/dist/project/module.d.ts +20 -0
- package/dist/project/module.js +73 -14
- package/dist/project_account/.kosh/bindings.js +1 -1
- package/dist/project_account/.kosh/schema.d.ts +530 -8
- package/dist/project_account/i18n/bn.d.ts +2 -0
- package/dist/project_account/i18n/bn.js +6 -0
- package/dist/project_account/index.js +2 -0
- package/dist/project_account/module.d.ts +4926 -1452
- package/dist/project_portal/.kosh/bindings.js +1 -1
- package/dist/project_portal/.kosh/schema.d.ts +65 -2
- 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 +40 -0
- package/dist/project_purchase/.kosh/bindings.js +1 -1
- package/dist/project_purchase/.kosh/schema.d.ts +1126 -53
- package/dist/project_purchase/i18n/bn.d.ts +2 -0
- package/dist/project_purchase/i18n/bn.js +4 -0
- package/dist/project_purchase/index.js +2 -0
- package/dist/project_purchase/module.d.ts +17912 -4446
- package/dist/purchase/.kosh/bindings.js +1 -1
- package/dist/purchase/.kosh/schema.d.ts +813 -3
- 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 +7139 -398
- package/dist/purchase/module.js +295 -11
- 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 +1130 -57
- 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 +19 -0
- package/dist/purchase_account/module.d.ts +12276 -2247
- package/dist/purchase_account/module.js +241 -9
- package/dist/purchase_portal/.kosh/bindings.js +1 -1
- package/dist/purchase_portal/.kosh/schema.d.ts +813 -3
- 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 +6849 -353
- package/dist/purchase_stock/.kosh/bindings.js +1 -1
- package/dist/purchase_stock/.kosh/schema.d.ts +910 -4
- 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 +1 -1
- package/dist/purchase_stock/index.js +29 -0
- package/dist/purchase_stock/module.d.ts +12410 -1864
- package/dist/purchase_stock/module.js +81 -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 +1286 -58
- 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 -37995
- package/dist/purchase_stock_account/module.js +24 -3
- package/dist/recruitment/.kosh/bindings.js +1 -1
- package/dist/recruitment/.kosh/schema.d.ts +59 -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 +458 -8
- package/dist/recruitment/module.js +11 -3
- 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 +642 -16
- 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 +8254 -2212
- 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 +389 -567
- 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 +291 -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 +2564 -294
- package/dist/sale_project/.kosh/bindings.js +1 -1
- package/dist/sale_project/.kosh/schema.d.ts +354 -5
- 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 +6249 -2402
- package/dist/sale_stock/.kosh/bindings.js +1 -1
- package/dist/sale_stock/.kosh/schema.d.ts +387 -5
- 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 +8057 -1759
- package/dist/sale_stock/module.js +20 -3
- package/dist/sales/.kosh/bindings.js +1 -1
- package/dist/sales/.kosh/schema.d.ts +291 -4
- package/dist/sales/i18n/bn.d.ts +2 -0
- package/dist/sales/i18n/bn.js +128 -0
- package/dist/sales/index.js +120 -5
- package/dist/sales/module.d.ts +3567 -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.js +1 -1
- package/dist/sign/.kosh/schema.d.ts +2 -1
- package/dist/sign/i18n/bn.d.ts +2 -0
- package/dist/sign/i18n/bn.js +97 -0
- package/dist/sign/index.d.ts +15 -0
- package/dist/sign/index.js +129 -1
- package/dist/sign/module.d.ts +40 -0
- package/dist/sign/module.js +11 -2
- package/dist/stock/.kosh/bindings.js +1 -1
- package/dist/stock/.kosh/schema.d.ts +298 -2
- package/dist/stock/i18n/bn.d.ts +2 -0
- package/dist/stock/i18n/bn.js +311 -0
- package/dist/stock/index.d.ts +3 -1
- package/dist/stock/index.js +442 -3
- package/dist/stock/ledger.d.ts +78 -0
- package/dist/stock/ledger.js +582 -0
- package/dist/stock/module.d.ts +5280 -2044
- package/dist/stock/module.js +222 -23
- package/dist/stock/replenish.js +16 -1
- 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/ReturnButton.d.ts +7 -0
- package/dist/stock/web/ReturnButton.js +62 -0
- package/dist/stock/web/index.d.ts +3 -0
- package/dist/stock/web/index.js +9 -0
- package/dist/stock/web/messages.js +154 -0
- package/dist/stock_account/.kosh/bindings.js +1 -1
- package/dist/stock_account/.kosh/schema.d.ts +682 -9
- 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 +131 -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 +11247 -3363
- 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 +93 -0
- package/dist/trade_finance/module.d.ts +26 -0
- package/dist/trade_finance/module.js +27 -8
- package/dist/trade_finance_account/.kosh/bindings.js +1 -1
- package/dist/trade_finance_account/.kosh/schema.d.ts +530 -8
- 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 +2 -0
- package/dist/trade_finance_account/module.d.ts +4906 -1432
- package/dist/trade_finance_account/module.js +1 -0
- package/dist/trade_finance_purchase/.kosh/bindings.js +1 -1
- package/dist/trade_finance_purchase/.kosh/schema.d.ts +813 -3
- 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 -413
- package/dist/trade_finance_sale/.kosh/bindings.js +1 -1
- package/dist/trade_finance_sale/.kosh/schema.d.ts +291 -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 +2601 -331
- package/dist/ui/api.d.ts +2 -0
- package/dist/ui/app.d.ts +9 -0
- package/dist/ui/app.js +24 -4
- package/dist/ui/components/AppIcon.js +2 -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 +36 -0
- package/dist/ui/i18n/messages.js +72 -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 +47 -10
- package/dist/ui/views/ListView.d.ts +8 -0
- package/dist/ui/views/ListView.js +10 -3
- package/dist/ui/views/StatsRow.js +2 -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 +36 -0
- package/dist/website/module.d.ts +20 -0
- package/dist/website/module.js +29 -5
- package/dist/website_crm/.kosh/bindings.js +1 -1
- package/dist/website_crm/.kosh/schema.d.ts +2 -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 +40 -0
- package/dist/website_sale/.kosh/bindings.js +1 -1
- package/dist/website_sale/.kosh/schema.d.ts +642 -17
- package/dist/website_sale/i18n/bn.d.ts +2 -0
- package/dist/website_sale/i18n/bn.js +132 -0
- package/dist/website_sale/index.js +83 -1
- package/dist/website_sale/module.d.ts +18705 -5550
- package/dist/website_sale/module.js +32 -10
- package/dist/website_sale/shop.js +22 -9
- package/dist/website_sale_stock/.kosh/bindings.js +1 -1
- package/dist/website_sale_stock/.kosh/schema.d.ts +737 -18
- 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.js +2 -0
- package/dist/website_sale_stock/module.d.ts +10 -24997
- package/dist/website_sale_stock/module.js +7 -3
- package/package.json +36 -8
- package/dist/mrp/index.d.ts +0 -3
- package/dist/mrp/index.js +0 -393
- package/dist/mrp/module.js +0 -757
- package/dist/mrp_account/index.d.ts +0 -3
- package/dist/mrp_account/index.js +0 -22
- /package/dist/{mrp → approvals_purchase}/.kosh/bindings.d.ts +0 -0
- /package/dist/{mrp_account → indent}/.kosh/bindings.d.ts +0 -0
|
@@ -1,10 +1,14 @@
|
|
|
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: 727ae347ccaee3be
|
|
2
2
|
// Schema view of module `approvals` (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
|
|
|
5
5
|
/** Model name → model type (RFC 0002 §7.7). */
|
|
6
6
|
export interface SchemaView {
|
|
7
|
+
readonly 'approval.ask': ApprovalAsk;
|
|
8
|
+
readonly 'approval.ask.line': ApprovalAskLine;
|
|
9
|
+
readonly 'approval.category': ApprovalCategory;
|
|
7
10
|
readonly 'approval.delegation': ApprovalDelegation;
|
|
11
|
+
readonly 'approval.event': ApprovalEvent;
|
|
8
12
|
readonly 'approval.level': ApprovalLevel;
|
|
9
13
|
readonly 'approval.link': ApprovalLink;
|
|
10
14
|
readonly 'approval.policy': ApprovalPolicy;
|
|
@@ -26,7 +30,120 @@ export interface SchemaView {
|
|
|
26
30
|
readonly 'oauth.token': OauthToken;
|
|
27
31
|
readonly 'res.company': ResCompany;
|
|
28
32
|
readonly 'res.currency': ResCurrency;
|
|
33
|
+
readonly 'res.partner': ResPartner;
|
|
34
|
+
readonly 'res.partner.tag': ResPartnerTag;
|
|
35
|
+
readonly 'res.segment': ResSegment;
|
|
29
36
|
readonly 'res.users': ResUsers;
|
|
37
|
+
readonly 'storage.attachment': StorageAttachment;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** `approval.ask` (owner: approvals). */
|
|
41
|
+
export interface ApprovalAsk {
|
|
42
|
+
readonly name: 'approval.ask';
|
|
43
|
+
readonly fields: {
|
|
44
|
+
readonly id: F.Id<'approval.ask'>;
|
|
45
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
46
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
47
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
48
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
49
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
50
|
+
readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
|
|
51
|
+
readonly name: F.Char<{ readonly readonly: true; readonly sequence: true }>;
|
|
52
|
+
readonly category: F.Many2one<'approval.category', { readonly required: true }>;
|
|
53
|
+
readonly title: F.Char<{ readonly required: true }>;
|
|
54
|
+
readonly requester: F.Many2one<'res.users', { readonly required: true; readonly default: true }>;
|
|
55
|
+
readonly description: F.Text;
|
|
56
|
+
readonly amount: F.Decimal;
|
|
57
|
+
readonly dateFrom: F.DateOnly;
|
|
58
|
+
readonly dateTo: F.DateOnly;
|
|
59
|
+
readonly partner: F.Many2one<'res.partner'>;
|
|
60
|
+
readonly location: F.Char;
|
|
61
|
+
readonly quantity: F.Decimal;
|
|
62
|
+
readonly lines: F.One2many<'approval.ask.line', { readonly required: true }>;
|
|
63
|
+
readonly linesTotal: F.Decimal<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
64
|
+
readonly resultModel: F.Char;
|
|
65
|
+
readonly resultId: F.Integer;
|
|
66
|
+
readonly resultName: F.Char;
|
|
67
|
+
readonly approvedAt: F.Datetime;
|
|
68
|
+
readonly askAmount: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
69
|
+
readonly askPeriod: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
70
|
+
readonly askPartner: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
71
|
+
readonly askLocation: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
72
|
+
readonly askQuantity: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
73
|
+
readonly askLines: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
74
|
+
readonly askAttachment: F.Selection<'none' | 'optional' | 'required', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
75
|
+
readonly deciders: F.Many2many<'res.users', { readonly required: true }>;
|
|
76
|
+
readonly state: F.State<'draft' | 'submitted' | 'approved' | 'refused' | 'cancelled', { readonly required: true; readonly readonly: true; readonly default: true }>;
|
|
77
|
+
};
|
|
78
|
+
readonly methods: ApprovalAskMethods;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Methods of `approval.ask`: declared ones and transitions. */
|
|
82
|
+
export interface ApprovalAskMethods extends F.Methods<typeof import('../module.js').approvalsShutro, 'approval.ask'> {
|
|
83
|
+
readonly 'approve': () => Promise<void>;
|
|
84
|
+
readonly 'cancel': () => Promise<void>;
|
|
85
|
+
readonly 'redraft': () => Promise<void>;
|
|
86
|
+
readonly 'refuse': () => Promise<void>;
|
|
87
|
+
readonly 'submit': () => Promise<void>;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** `approval.ask.line` (owner: approvals). */
|
|
91
|
+
export interface ApprovalAskLine {
|
|
92
|
+
readonly name: 'approval.ask.line';
|
|
93
|
+
readonly fields: {
|
|
94
|
+
readonly id: F.Id<'approval.ask.line'>;
|
|
95
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
96
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
97
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
98
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
99
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
100
|
+
readonly ask: F.Many2one<'approval.ask', { readonly required: true }>;
|
|
101
|
+
readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
|
|
102
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
103
|
+
readonly quantity: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
104
|
+
readonly priceUnit: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
105
|
+
readonly subtotal: F.Decimal<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
106
|
+
};
|
|
107
|
+
readonly methods: ApprovalAskLineMethods;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Methods of `approval.ask.line`: declared ones and transitions. */
|
|
111
|
+
export interface ApprovalAskLineMethods extends F.Methods<typeof import('../module.js').approvalsShutro, 'approval.ask.line'> {
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** `approval.category` (owner: approvals). */
|
|
115
|
+
export interface ApprovalCategory {
|
|
116
|
+
readonly name: 'approval.category';
|
|
117
|
+
readonly fields: {
|
|
118
|
+
readonly id: F.Id<'approval.category'>;
|
|
119
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
120
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
121
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
122
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
123
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
124
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
125
|
+
readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
|
|
126
|
+
readonly code: F.Char;
|
|
127
|
+
readonly company: F.Many2one<'res.company'>;
|
|
128
|
+
readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
|
|
129
|
+
readonly description: F.Text<{ readonly translate: true }>;
|
|
130
|
+
readonly askAmount: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
|
|
131
|
+
readonly askPeriod: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
|
|
132
|
+
readonly askPartner: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
|
|
133
|
+
readonly askLocation: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
|
|
134
|
+
readonly askQuantity: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
|
|
135
|
+
readonly askLines: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
|
|
136
|
+
readonly askAttachment: F.Selection<'none' | 'optional' | 'required', { readonly required: true; readonly default: true }>;
|
|
137
|
+
readonly outcome: F.Char;
|
|
138
|
+
readonly policy: F.Many2one<'approval.policy'>;
|
|
139
|
+
readonly requestCount: F.Integer<{ readonly readonly: true; readonly compute: true }>;
|
|
140
|
+
readonly asks: F.One2many<'approval.ask', { readonly required: true }>;
|
|
141
|
+
};
|
|
142
|
+
readonly methods: ApprovalCategoryMethods;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/** Methods of `approval.category`: declared ones and transitions. */
|
|
146
|
+
export interface ApprovalCategoryMethods extends F.Methods<typeof import('../module.js').approvalsShutro, 'approval.category'> {
|
|
30
147
|
}
|
|
31
148
|
|
|
32
149
|
/** `approval.delegation` (owner: permissions). */
|
|
@@ -52,6 +169,29 @@ export interface ApprovalDelegation {
|
|
|
52
169
|
export interface ApprovalDelegationMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.delegation'> {
|
|
53
170
|
}
|
|
54
171
|
|
|
172
|
+
/** `approval.event` (owner: permissions). */
|
|
173
|
+
export interface ApprovalEvent {
|
|
174
|
+
readonly name: 'approval.event';
|
|
175
|
+
readonly fields: {
|
|
176
|
+
readonly id: F.Id<'approval.event'>;
|
|
177
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
178
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
179
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
180
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
181
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
182
|
+
readonly request: F.Many2one<'approval.request', { readonly required: true }>;
|
|
183
|
+
readonly at: F.Datetime<{ readonly required: true }>;
|
|
184
|
+
readonly user: F.Many2one<'res.users'>;
|
|
185
|
+
readonly kind: F.Selection<'created' | 'started' | 'voted' | 'approved' | 'rejected' | 'sent_back' | 'cancelled' | 'skipped' | 'reminded' | 'escalated' | 'auto' | 'reassigned' | 'synced' | 'notified', { readonly required: true }>;
|
|
186
|
+
readonly note: F.Text;
|
|
187
|
+
};
|
|
188
|
+
readonly methods: ApprovalEventMethods;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** Methods of `approval.event`: declared ones and transitions. */
|
|
192
|
+
export interface ApprovalEventMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'approval.event'> {
|
|
193
|
+
}
|
|
194
|
+
|
|
55
195
|
/** `approval.level` (owner: permissions). */
|
|
56
196
|
export interface ApprovalLevel {
|
|
57
197
|
readonly name: 'approval.level';
|
|
@@ -66,7 +206,9 @@ export interface ApprovalLevel {
|
|
|
66
206
|
readonly sequence: F.Integer<{ readonly default: true }>;
|
|
67
207
|
readonly name: F.Char<{ readonly required: true }>;
|
|
68
208
|
readonly condition: F.Json;
|
|
69
|
-
readonly approverKind: F.Selection<'role' | 'users' | 'manager' | 'field', { readonly required: true; readonly default: true }>;
|
|
209
|
+
readonly approverKind: F.Selection<'role' | 'users' | 'manager' | 'department_head' | 'department_approvers' | 'employee' | 'field' | 'record', { readonly required: true; readonly default: true }>;
|
|
210
|
+
readonly extraUsers: F.Many2many<'res.users', { readonly required: true }>;
|
|
211
|
+
readonly backupUsers: F.Many2many<'res.users', { readonly required: true }>;
|
|
70
212
|
readonly approverRole: F.Char;
|
|
71
213
|
readonly approverUsers: F.Many2many<'res.users', { readonly required: true }>;
|
|
72
214
|
readonly approverField: F.Char;
|
|
@@ -120,11 +262,18 @@ export interface ApprovalPolicy {
|
|
|
120
262
|
readonly targetModel: F.Char<{ readonly required: true }>;
|
|
121
263
|
readonly sequence: F.Integer<{ readonly default: true }>;
|
|
122
264
|
readonly company: F.Many2one<'res.company'>;
|
|
265
|
+
readonly companies: F.Many2many<'res.company', { readonly required: true }>;
|
|
266
|
+
readonly segment: F.Many2one<'res.segment'>;
|
|
123
267
|
readonly onApproved: F.Char;
|
|
124
268
|
readonly onRejected: F.Char;
|
|
125
269
|
readonly onSentBack: F.Char;
|
|
126
270
|
readonly onWithdrawn: F.Char;
|
|
127
271
|
readonly reasonRequired: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
272
|
+
readonly condition: F.Json;
|
|
273
|
+
readonly whenNobody: F.Selection<'refuse' | 'admins' | 'skip', { readonly required: true; readonly default: true }>;
|
|
274
|
+
readonly skipDuplicates: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
275
|
+
readonly syncPending: F.Selection<'off' | 'add' | 'replace', { readonly required: true; readonly default: true }>;
|
|
276
|
+
readonly notifyOnSync: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
128
277
|
readonly levels: F.One2many<'approval.level', { readonly required: true }>;
|
|
129
278
|
};
|
|
130
279
|
readonly methods: ApprovalPolicyMethods;
|
|
@@ -153,6 +302,7 @@ export interface ApprovalRequest {
|
|
|
153
302
|
readonly company: F.Many2one<'res.company'>;
|
|
154
303
|
readonly approverRole: F.Char;
|
|
155
304
|
readonly approvers: F.Many2many<'res.users', { readonly required: true }>;
|
|
305
|
+
readonly backups: F.Many2many<'res.users', { readonly required: true }>;
|
|
156
306
|
readonly required: F.Integer<{ readonly required: true; readonly default: true }>;
|
|
157
307
|
readonly round: F.Integer<{ readonly required: true; readonly default: true }>;
|
|
158
308
|
readonly votes: F.One2many<'approval.vote', { readonly required: true }>;
|
|
@@ -160,6 +310,8 @@ export interface ApprovalRequest {
|
|
|
160
310
|
readonly remindedAt: F.Datetime;
|
|
161
311
|
readonly escalatedTo: F.Char;
|
|
162
312
|
readonly escalatedAt: F.Datetime;
|
|
313
|
+
readonly startedAt: F.Datetime;
|
|
314
|
+
readonly explanation: F.Text;
|
|
163
315
|
readonly state: F.Selection<'pending' | 'approved' | 'rejected' | 'sent_back' | 'cancelled', { readonly required: true; readonly default: true }>;
|
|
164
316
|
readonly requestedBy: F.Many2one<'res.users'>;
|
|
165
317
|
readonly decidedBy: F.Many2one<'res.users'>;
|
|
@@ -190,6 +342,8 @@ export interface ApprovalVote {
|
|
|
190
342
|
readonly at: F.Datetime<{ readonly required: true }>;
|
|
191
343
|
readonly onBehalfOf: F.Many2one<'res.users'>;
|
|
192
344
|
readonly ip: F.Char;
|
|
345
|
+
readonly auto: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
346
|
+
readonly asBackup: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
193
347
|
};
|
|
194
348
|
readonly methods: ApprovalVoteMethods;
|
|
195
349
|
}
|
|
@@ -533,7 +687,7 @@ export interface OauthToken {
|
|
|
533
687
|
export interface OauthTokenMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.token'> {
|
|
534
688
|
}
|
|
535
689
|
|
|
536
|
-
/** `res.company` (owner: base). */
|
|
690
|
+
/** `res.company` (owner: base; extended by: contacts). */
|
|
537
691
|
export interface ResCompany {
|
|
538
692
|
readonly name: 'res.company';
|
|
539
693
|
readonly fields: {
|
|
@@ -553,12 +707,14 @@ export interface ResCompany {
|
|
|
553
707
|
readonly email: F.Char;
|
|
554
708
|
readonly phone: F.Char;
|
|
555
709
|
readonly website: F.Char;
|
|
710
|
+
readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
|
|
711
|
+
readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
|
|
556
712
|
};
|
|
557
713
|
readonly methods: ResCompanyMethods;
|
|
558
714
|
}
|
|
559
715
|
|
|
560
716
|
/** Methods of `res.company`: declared ones and transitions. */
|
|
561
|
-
export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'> {
|
|
717
|
+
export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'>, F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.company'> {
|
|
562
718
|
}
|
|
563
719
|
|
|
564
720
|
/** `res.currency` (owner: base). */
|
|
@@ -582,6 +738,91 @@ export interface ResCurrency {
|
|
|
582
738
|
export interface ResCurrencyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.currency'> {
|
|
583
739
|
}
|
|
584
740
|
|
|
741
|
+
/** `res.partner` (owner: contacts). */
|
|
742
|
+
export interface ResPartner {
|
|
743
|
+
readonly name: 'res.partner';
|
|
744
|
+
readonly fields: {
|
|
745
|
+
readonly id: F.Id<'res.partner'>;
|
|
746
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
747
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
748
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
749
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
750
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
751
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
752
|
+
readonly company: F.Many2one<'res.company', { readonly default: true }>;
|
|
753
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
754
|
+
readonly image: F.Many2one<'storage.attachment'>;
|
|
755
|
+
readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
|
|
756
|
+
readonly latitude: F.Decimal;
|
|
757
|
+
readonly longitude: F.Decimal;
|
|
758
|
+
readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
759
|
+
readonly parent: F.Many2one<'res.partner'>;
|
|
760
|
+
readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
|
|
761
|
+
readonly email: F.Char;
|
|
762
|
+
readonly lang: F.Selection<'en' | 'bn'>;
|
|
763
|
+
readonly phone: F.Char;
|
|
764
|
+
readonly mobile: F.Char;
|
|
765
|
+
readonly website: F.Char;
|
|
766
|
+
readonly street: F.Char;
|
|
767
|
+
readonly city: F.Char;
|
|
768
|
+
readonly zip: F.Char;
|
|
769
|
+
readonly country: F.Char;
|
|
770
|
+
readonly state: F.Char;
|
|
771
|
+
readonly taxId: F.Char;
|
|
772
|
+
readonly isCustomer: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
773
|
+
readonly isVendor: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
774
|
+
readonly currency: F.Many2one<'res.currency'>;
|
|
775
|
+
readonly notes: F.Text;
|
|
776
|
+
};
|
|
777
|
+
readonly methods: ResPartnerMethods;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
/** Methods of `res.partner`: declared ones and transitions. */
|
|
781
|
+
export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'> {
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
/** `res.partner.tag` (owner: contacts). */
|
|
785
|
+
export interface ResPartnerTag {
|
|
786
|
+
readonly name: 'res.partner.tag';
|
|
787
|
+
readonly fields: {
|
|
788
|
+
readonly id: F.Id<'res.partner.tag'>;
|
|
789
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
790
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
791
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
792
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
793
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
794
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
795
|
+
};
|
|
796
|
+
readonly methods: ResPartnerTagMethods;
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
/** Methods of `res.partner.tag`: declared ones and transitions. */
|
|
800
|
+
export interface ResPartnerTagMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner.tag'> {
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
/** `res.segment` (owner: permissions). */
|
|
804
|
+
export interface ResSegment {
|
|
805
|
+
readonly name: 'res.segment';
|
|
806
|
+
readonly fields: {
|
|
807
|
+
readonly id: F.Id<'res.segment'>;
|
|
808
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
809
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
810
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
811
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
812
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
813
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
814
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
815
|
+
readonly code: F.Char;
|
|
816
|
+
readonly companies: F.Many2many<'res.company', { readonly required: true }>;
|
|
817
|
+
readonly note: F.Text;
|
|
818
|
+
};
|
|
819
|
+
readonly methods: ResSegmentMethods;
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/** Methods of `res.segment`: declared ones and transitions. */
|
|
823
|
+
export interface ResSegmentMethods extends F.Methods<typeof import('../../permissions/index.js').permissionsShutro, 'res.segment'> {
|
|
824
|
+
}
|
|
825
|
+
|
|
585
826
|
/** `res.users` (owner: base). */
|
|
586
827
|
export interface ResUsers {
|
|
587
828
|
readonly name: 'res.users';
|
|
@@ -609,3 +850,30 @@ export interface ResUsers {
|
|
|
609
850
|
/** Methods of `res.users`: declared ones and transitions. */
|
|
610
851
|
export interface ResUsersMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.users'> {
|
|
611
852
|
}
|
|
853
|
+
|
|
854
|
+
/** `storage.attachment` (owner: storage). */
|
|
855
|
+
export interface StorageAttachment {
|
|
856
|
+
readonly name: 'storage.attachment';
|
|
857
|
+
readonly fields: {
|
|
858
|
+
readonly id: F.Id<'storage.attachment'>;
|
|
859
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
860
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
861
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
862
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
863
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
864
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
865
|
+
readonly mime: F.Char<{ readonly required: true }>;
|
|
866
|
+
readonly size: F.Integer<{ readonly required: true }>;
|
|
867
|
+
readonly sha256: F.Char<{ readonly required: true }>;
|
|
868
|
+
readonly key: F.Char<{ readonly required: true }>;
|
|
869
|
+
readonly resModel: F.Char<{ readonly required: true }>;
|
|
870
|
+
readonly resId: F.Integer<{ readonly required: true }>;
|
|
871
|
+
readonly variantOf: F.Many2one<'storage.attachment'>;
|
|
872
|
+
readonly width: F.Integer;
|
|
873
|
+
};
|
|
874
|
+
readonly methods: StorageAttachmentMethods;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
/** Methods of `storage.attachment`: declared ones and transitions. */
|
|
878
|
+
export interface StorageAttachmentMethods extends F.Methods<typeof import('../../storage/index.js').storageShutro, 'storage.attachment'> {
|
|
879
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approvals' demo data (RFC 0008 §5.8): Rahim's business trip to the Sylhet farm, submitted and waiting for his
|
|
3
|
+
* category's approvers, and a draft purchase request — so the inbox, My requests and the overview have something
|
|
4
|
+
* to show.
|
|
5
|
+
*/
|
|
6
|
+
import type { DemoContext } from '../modules-sdk/index.js';
|
|
7
|
+
export declare function approvalsDemo(ctx: DemoContext): Promise<string>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const RAHIM = { login: 'rahim', name: 'Rahim Uddin', groups: ['base.user'] };
|
|
2
|
+
export async function approvalsDemo(ctx) {
|
|
3
|
+
await ctx.as(RAHIM, async (raw) => {
|
|
4
|
+
const env = raw;
|
|
5
|
+
const categories = await env
|
|
6
|
+
.model('approval.category')
|
|
7
|
+
.search({ where: { code: { in: ['TRIP', 'PR'] } } })
|
|
8
|
+
.then((r) => r.load(['code']));
|
|
9
|
+
const byCode = new Map([...categories].map((c) => [c.code, c.id]));
|
|
10
|
+
const trip = byCode.get('TRIP');
|
|
11
|
+
const purchase = byCode.get('PR');
|
|
12
|
+
if (trip !== undefined) {
|
|
13
|
+
const made = await env.model('approval.ask').create([
|
|
14
|
+
{
|
|
15
|
+
category: trip,
|
|
16
|
+
title: 'Visit the Sylhet farm',
|
|
17
|
+
description: 'Check the new sheds before the first flock arrives.',
|
|
18
|
+
amount: '15000',
|
|
19
|
+
dateFrom: ctx.date(7),
|
|
20
|
+
dateTo: ctx.date(9),
|
|
21
|
+
location: 'Sylhet',
|
|
22
|
+
},
|
|
23
|
+
]);
|
|
24
|
+
await env.model('approval.ask').browse(made.ids).submit();
|
|
25
|
+
}
|
|
26
|
+
if (purchase !== undefined)
|
|
27
|
+
await env.model('approval.ask').create([
|
|
28
|
+
{
|
|
29
|
+
category: purchase,
|
|
30
|
+
title: 'Feeders for shed 3',
|
|
31
|
+
lines: {
|
|
32
|
+
create: [
|
|
33
|
+
{ name: 'Feeder, 12 kg', quantity: '40', priceUnit: '650' },
|
|
34
|
+
{ name: 'Drinker, 8 l', quantity: '40', priceUnit: '420' },
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
]);
|
|
39
|
+
});
|
|
40
|
+
return 'Approvals: a business trip waiting for approval and a draft purchase request.';
|
|
41
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
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 company is in one segment at most.': 'একটি প্রতিষ্ঠান সর্বোচ্চ একটি সেগমেন্টে থাকে।',
|
|
4
|
+
'A group of companies (Feed, Poultry, Dairy): an approval policy of the segment covers every company in it.': 'প্রতিষ্ঠানের একটি দল (ফিড, পোলট্রি, ডেইরি): সেগমেন্টের অনুমোদন নীতি এর প্রতিটি প্রতিষ্ঠানে প্রযোজ্য।',
|
|
5
|
+
'A line asks for a positive quantity at a price not below zero.': 'প্রতিটি লাইনে পরিমাণ শূন্যের বেশি এবং মূল্য শূন্যের কম নয় হতে হবে।',
|
|
6
|
+
'A period ends on or after it starts.': 'সময়কাল শুরুর দিনে বা তার পরে শেষ হয়।',
|
|
7
|
+
'A record of the model gets one approval per level whose condition it meets; levels with a lower sequence are decided first, those with the same side by side.': 'মডেলের একটি রেকর্ড যে যে স্তরের শর্ত পূরণ করে, প্রতিটির জন্য একটি করে অনুমোদন পায়; কম ক্রমের স্তর আগে সিদ্ধান্ত হয়, একই ক্রমের স্তরগুলো একসাথে।',
|
|
8
|
+
Active: 'সক্রিয়',
|
|
9
|
+
Amount: 'অঙ্ক',
|
|
10
|
+
'Amount waiting': 'অপেক্ষমাণ অঙ্ক',
|
|
11
|
+
'An amount is not negative.': 'অঙ্ক ঋণাত্মক হতে পারে না।',
|
|
12
|
+
'Another category has this code.': 'অন্য একটি শ্রেণির এই কোড আছে।',
|
|
13
|
+
'Approval policy': 'অনুমোদন নীতি',
|
|
14
|
+
Approvals: 'অনুমোদন',
|
|
15
|
+
Approved: 'অনুমোদিত',
|
|
16
|
+
'Approved on': 'অনুমোদনের তারিখ',
|
|
17
|
+
'Approved this month': 'এই মাসে অনুমোদিত',
|
|
18
|
+
Ask: 'চাওয়া',
|
|
19
|
+
'Ask Amount': 'অঙ্ক চাওয়া',
|
|
20
|
+
'Ask Attachment': 'সংযুক্তি চাওয়া',
|
|
21
|
+
'Ask Lines': 'লাইন চাওয়া',
|
|
22
|
+
'Ask Location': 'অবস্থান চাওয়া',
|
|
23
|
+
'Ask Partner': 'অংশীদার চাওয়া',
|
|
24
|
+
'Ask Period': 'সময়কাল চাওয়া',
|
|
25
|
+
'Ask Quantity': 'পরিমাণ চাওয়া',
|
|
26
|
+
'Asked by': 'অনুরোধকারী',
|
|
27
|
+
Asks: 'চাওয়া তথ্য',
|
|
28
|
+
Attachment: 'সংযুক্তি',
|
|
29
|
+
Away: 'অনুপস্থিত',
|
|
30
|
+
Cancel: 'বাতিল করুন',
|
|
31
|
+
Cancelled: 'বাতিল',
|
|
32
|
+
Category: 'শ্রেণি',
|
|
33
|
+
Code: 'কোড',
|
|
34
|
+
Companies: 'প্রতিষ্ঠানসমূহ',
|
|
35
|
+
Company: 'প্রতিষ্ঠান',
|
|
36
|
+
Configuration: 'কনফিগারেশন',
|
|
37
|
+
Contact: 'যোগাযোগ',
|
|
38
|
+
'Created At': 'তৈরির সময়',
|
|
39
|
+
'Created By': 'তৈরি করেছেন',
|
|
40
|
+
'Decided by': 'সিদ্ধান্ত দিয়েছেন',
|
|
41
|
+
Description: 'বিবরণ',
|
|
42
|
+
Details: 'বিস্তারিত',
|
|
43
|
+
'Display Name': 'প্রদর্শিত নাম',
|
|
44
|
+
Draft: 'খসড়া',
|
|
45
|
+
'Empty: nothing more. `purchase`: a request for quotation from the lines (with Purchase).': 'খালি: আর কিছু হয় না। `purchase`: লাইনগুলো থেকে একটি উদ্ধৃতির অনুরোধ (Purchase থাকলে)।',
|
|
46
|
+
'Everyone (decide and ask)': 'সবাই (সিদ্ধান্ত ও অনুরোধ)',
|
|
47
|
+
'Everything waiting for your decision, in one place — and what you asked for': 'আপনার সিদ্ধান্তের অপেক্ষায় থাকা সবকিছু এক জায়গায় — এবং আপনি যা চেয়েছেন',
|
|
48
|
+
'Fill in what the category asks for (and attach a file when it is required).': 'শ্রেণিটি যা চায় তা পূরণ করুন (এবং প্রয়োজন হলে একটি ফাইল সংযুক্ত করুন)।',
|
|
49
|
+
From: 'থেকে',
|
|
50
|
+
ID: 'আইডি',
|
|
51
|
+
Lines: 'লাইন',
|
|
52
|
+
'Lines › Description': 'লাইন › বিবরণ',
|
|
53
|
+
'Lines › Quantity': 'লাইন › পরিমাণ',
|
|
54
|
+
'Lines › Unit price': 'লাইন › একক মূল্য',
|
|
55
|
+
'Lines total': 'লাইনের মোট',
|
|
56
|
+
Location: 'অবস্থান',
|
|
57
|
+
Made: 'তৈরি হয়েছে',
|
|
58
|
+
'Made document': 'তৈরি নথি',
|
|
59
|
+
'Manager (policies)': 'ব্যবস্থাপক (নীতি)',
|
|
60
|
+
Matrix: 'ম্যাট্রিক্স',
|
|
61
|
+
Mine: 'আমার',
|
|
62
|
+
'My requests': 'আমার অনুরোধ',
|
|
63
|
+
Name: 'নাম',
|
|
64
|
+
'No installed app offers this outcome.': 'ইনস্টল করা কোনো অ্যাপ এই ফলাফল দেয় না।',
|
|
65
|
+
'Not asked': 'চাওয়া হয়নি',
|
|
66
|
+
'Not asked, optional or required; submitting checks the required ones.': 'চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক; জমা দেওয়ার সময় আবশ্যকগুলো যাচাই করা হয়।',
|
|
67
|
+
Note: 'নোট',
|
|
68
|
+
Number: 'নম্বর',
|
|
69
|
+
'On approval': 'অনুমোদনের পর',
|
|
70
|
+
Optional: 'ঐচ্ছিক',
|
|
71
|
+
Outcome: 'ফলাফল',
|
|
72
|
+
Overview: 'সারসংক্ষেপ',
|
|
73
|
+
'Page {{page}} of {{pages}}': 'পৃষ্ঠা {{page}} / {{pages}}',
|
|
74
|
+
Period: 'সময়কাল',
|
|
75
|
+
Policies: 'নীতি',
|
|
76
|
+
Productivity: 'উৎপাদনশীলতা',
|
|
77
|
+
Quantity: 'পরিমাণ',
|
|
78
|
+
Refused: 'নামঞ্জুর',
|
|
79
|
+
Request: 'অনুরোধ',
|
|
80
|
+
'Request {{name}}: {{title}}': 'অনুরোধ {{name}}: {{title}}',
|
|
81
|
+
'Request approved': 'অনুরোধ অনুমোদিত',
|
|
82
|
+
'Request categories': 'অনুরোধের শ্রেণি',
|
|
83
|
+
'Request category': 'অনুরোধের শ্রেণি',
|
|
84
|
+
'Request line': 'অনুরোধের লাইন',
|
|
85
|
+
Requests: 'অনুরোধ',
|
|
86
|
+
'Requests by category': 'শ্রেণি অনুযায়ী অনুরোধ',
|
|
87
|
+
'Requests by state': 'অবস্থা অনুযায়ী অনুরোধ',
|
|
88
|
+
'Requests waiting': 'অপেক্ষমাণ অনুরোধ',
|
|
89
|
+
Required: 'আবশ্যক',
|
|
90
|
+
'Required: the request is submitted only with a file attached.': 'আবশ্যক: ফাইল সংযুক্ত থাকলেই কেবল অনুরোধ জমা দেওয়া যায়।',
|
|
91
|
+
'Result Id': 'ফলাফল আইডি',
|
|
92
|
+
Segments: 'সেগমেন্ট',
|
|
93
|
+
Sequence: 'ক্রম',
|
|
94
|
+
'Set to draft': 'খসড়ায় ফেরত নিন',
|
|
95
|
+
'Shown to whoever asks: what to give and why.': 'অনুরোধকারীকে দেখানো হয়: কী দিতে হবে এবং কেন।',
|
|
96
|
+
State: 'অবস্থা',
|
|
97
|
+
Status: 'অবস্থা',
|
|
98
|
+
'Submit for approval': 'অনুমোদনের জন্য জমা দিন',
|
|
99
|
+
'Submitted to the category’s approvers; approved, its outcome runs.': 'শ্রেণির অনুমোদনকারীদের কাছে জমা দেওয়া হয়; অনুমোদিত হলে এর ফলাফল কার্যকর হয়।',
|
|
100
|
+
Subtotal: 'উপমোট',
|
|
101
|
+
'The policy covers this company, these companies and every company of the segment together; leave all three empty for every company.': 'নীতিটি এই প্রতিষ্ঠান, এই প্রতিষ্ঠানগুলো এবং সেগমেন্টের প্রতিটি প্রতিষ্ঠানে একসঙ্গে প্রযোজ্য; সব প্রতিষ্ঠানের জন্য তিনটিই খালি রাখুন।',
|
|
102
|
+
'The policy’s levels decide (made with the first request: the requester’s manager, else an Approvals manager); edit them on the policy. The outcome runs once approved.': 'নীতির স্তরগুলো সিদ্ধান্ত নেয় (প্রথম অনুরোধের সাথে তৈরি হয়: অনুরোধকারীর ব্যবস্থাপক, না থাকলে একজন অনুমোদন ব্যবস্থাপক); নীতিতে এগুলো সম্পাদনা করুন। অনুমোদিত হলে ফলাফল কার্যকর হয়।',
|
|
103
|
+
'The quantity times the unit price.': 'পরিমাণ গুণ একক মূল্য।',
|
|
104
|
+
'The sum of the lines’ subtotals.': 'লাইনগুলোর উপমোটের যোগফল।',
|
|
105
|
+
'The transitions of the record run when it is approved, rejected, sent back or withdrawn.': 'অনুমোদিত, প্রত্যাখ্যাত, ফেরত পাঠানো বা প্রত্যাহার হলে রেকর্ডের ধাপ পরিবর্তনগুলো কার্যকর হয়।',
|
|
106
|
+
'To approve': 'অনুমোদনের জন্য',
|
|
107
|
+
'Unit price': 'একক মূল্য',
|
|
108
|
+
Until: 'পর্যন্ত',
|
|
109
|
+
'Updated At': 'হালনাগাদের সময়',
|
|
110
|
+
'Updated By': 'হালনাগাদ করেছেন',
|
|
111
|
+
'Waiting for approval': 'অনুমোদনের অপেক্ষায়',
|
|
112
|
+
'Waiting for approvals.': 'অনুমোদনের অপেক্ষায়।',
|
|
113
|
+
'What a request asks for': 'একটি অনুরোধ যা চায়',
|
|
114
|
+
'What for': 'কী উদ্দেশ্যে',
|
|
115
|
+
'What happens': 'কী ঘটে',
|
|
116
|
+
'What I decided': 'আমার সিদ্ধান্তগুলো',
|
|
117
|
+
'What the category asks for; required ones are marked. A file, when asked for, goes in the chatter.': 'শ্রেণিটি যা চায়; আবশ্যকগুলো চিহ্নিত। ফাইল চাওয়া হলে তা চ্যাটারে যুক্ত করুন।',
|
|
118
|
+
'Whether a request of this category asks for a contact: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি যোগাযোগ চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
|
|
119
|
+
'Whether a request of this category asks for a location: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি অবস্থান চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
|
|
120
|
+
'Whether a request of this category asks for a period, from and until: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি সময়কাল (শুরু ও শেষ) চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
|
|
121
|
+
'Whether a request of this category asks for a quantity: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি পরিমাণ চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
|
|
122
|
+
'Whether a request of this category asks for an amount: not asked, optional or required.': 'এই শ্রেণির অনুরোধে একটি অঙ্ক চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
|
|
123
|
+
'Whether a request of this category asks for lines with quantities and prices: not asked, optional or required.': 'এই শ্রেণির অনুরোধে পরিমাণ ও মূল্যসহ লাইন চাওয়া হয় কি না: চাওয়া হয়নি, ঐচ্ছিক বা আবশ্যক।',
|
|
124
|
+
'Whether this request asks for a contact, as its category says.': 'এই অনুরোধে একটি যোগাযোগ চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
|
|
125
|
+
'Whether this request asks for a location, as its category says.': 'এই অনুরোধে একটি অবস্থান চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
|
|
126
|
+
'Whether this request asks for a period, as its category says.': 'এই অনুরোধে একটি সময়কাল চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
|
|
127
|
+
'Whether this request asks for a quantity, as its category says.': 'এই অনুরোধে একটি পরিমাণ চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
|
|
128
|
+
'Whether this request asks for an amount, as its category says.': 'এই অনুরোধে একটি অঙ্ক চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
|
|
129
|
+
'Whether this request asks for an attached file, as its category says.': 'এই অনুরোধে একটি সংযুক্ত ফাইল চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
|
|
130
|
+
'Whether this request asks for lines, as its category says.': 'এই অনুরোধে লাইন চাওয়া হয় কি না, এর শ্রেণি অনুযায়ী।',
|
|
131
|
+
'While you are away, the person you choose decides your approvals — in their own name, for you. They never approve their own requests.': 'আপনার অনুপস্থিতিতে আপনার বেছে নেওয়া ব্যক্তি আপনার হয়ে, নিজের নামে আপনার অনুমোদনের সিদ্ধান্ত দেবেন। তিনি কখনো নিজের অনুরোধ অনুমোদন করেন না।',
|
|
132
|
+
'Who decides and what follows': 'কে সিদ্ধান্ত নেয় এবং এরপর কী হয়',
|
|
133
|
+
};
|
|
@@ -1,9 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* `shutro-erp/approvals` (RFC 0025): the **Approvals** app on the engine of `shutro-erp/permissions`. Everyone who decides or
|
|
4
|
+
* asks has it: the inbox (cards with the record, who asked, how long it waits, every level as a step; decided one by
|
|
5
|
+
* one or many at once, from the keyboard too), my requests (withdrawn while they wait), what I decided, and *Away*
|
|
6
|
+
* (who decides for me while I am away); for Approvals managers, the policies — levels, who decides each and how many,
|
|
7
|
+
* the deadline and who it escalates to — edited on screen. Approvers get each request by email with a link of their
|
|
8
|
+
* own that opens a confirmation page; reminders at half a deadline and escalations once late, hourly.
|
|
9
|
+
*
|
|
10
|
+
* - `GET /api/v1/public/approvals/:token` the confirmation page of an email link
|
|
11
|
+
* - `POST /api/v1/public/approvals/:token` `{ decision: approve | reject | send_back, comment? }`, once
|
|
12
|
+
* - `POST /api/v1/approvals/deadlines/run` reminders and escalations now (Approvals managers; hourly too)
|
|
13
|
+
* - `POST /api/v1/approvals/categories/:id/policy` a request category's policy, made when missing (Approvals managers)
|
|
14
|
+
* - `GET /api/v1/approvals/policies/:id/preview` which of the last 50 records each level would have asked about
|
|
15
|
+
*
|
|
16
|
+
* **Generic requests** (step 4): categories say what a request asks for and what it leads to; a request is decided
|
|
17
|
+
* through its category's policy, and its outcome runs when approved.
|
|
18
|
+
*/
|
|
1
19
|
import { type Mailer } from '../mail/index.js';
|
|
2
20
|
import { defineModule } from '../modules-sdk/index.js';
|
|
3
21
|
import { type ModuleContext } from '../server/index.js';
|
|
4
22
|
import type { Worker } from '../server/orm.js';
|
|
5
23
|
export { mailDeciders, mailTurn } from './mails.js';
|
|
6
|
-
export { approvalsShutro } from './module.js';
|
|
24
|
+
export { ApprovalAsk, ApprovalAskLine, ApprovalCategory, approvalsShutro, ensureCategoryPolicy, missingFields, outcomesOffered, } from './module.js';
|
|
7
25
|
/** The subscribers that email a record's approvers when its approvals are asked and when a level is approved. */
|
|
8
26
|
export declare function approvalMailWorkers(context: Pick<ModuleContext, 'shutro'>): Worker[];
|
|
9
27
|
export interface ApprovalsOptions {
|