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
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The data layer of the Pipeline ↔ Sales bridge (RFC 0028 §3.4): a quotation keeps its deal, a deal its quotations.
|
|
3
|
+
* A confirmed quotation wins its deal (the first winning stage); a deal whose quotations are all cancelled is lost.
|
|
4
|
+
* Both follow the orders through the outbox (`sale.order.confirmed`, `sale.order.cancelled`), once each.
|
|
5
|
+
*/
|
|
6
|
+
import { crmShutro } from '../crm/index.js';
|
|
7
|
+
import { salesShutro } from '../sales/index.js';
|
|
8
|
+
import { orm } from '../server/orm.js';
|
|
9
|
+
import { defineModule, extendModel, f, record } from './.kosh/bindings.js';
|
|
10
|
+
export const OrderDeal = extendModel('sale.order', {
|
|
11
|
+
fields: {
|
|
12
|
+
deal: f.many2one('crm.deal', {
|
|
13
|
+
ondelete: 'set null',
|
|
14
|
+
label: 'Deal',
|
|
15
|
+
help: 'The Pipeline deal this quotation is for: confirming it wins the deal.',
|
|
16
|
+
}),
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
export const DealQuotations = extendModel('crm.deal', {
|
|
20
|
+
fields: {
|
|
21
|
+
quotations: f.one2many('sale.order', 'deal', { label: 'Quotations' }),
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
/** A confirmed order wins its deal: the deal moves to the first winning stage, unless it is lost or won already. */
|
|
25
|
+
export async function winDealOf(env, order) {
|
|
26
|
+
const [o] = await env
|
|
27
|
+
.model('sale.order')
|
|
28
|
+
.browse([order])
|
|
29
|
+
.load({ deal: { stage: true } });
|
|
30
|
+
const deal = o?.deal;
|
|
31
|
+
if (deal === null || deal === undefined || deal.lost === true || deal.stage?.won === true)
|
|
32
|
+
return false;
|
|
33
|
+
const [won] = await (await env.model('crm.stage').search({ where: { won: true }, order: ['sequence asc'], limit: 1 })).load([]);
|
|
34
|
+
if (won === undefined)
|
|
35
|
+
return false;
|
|
36
|
+
await env.model('crm.deal').browse([deal.id]).write({ stage: won.id });
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
/** A cancelled order loses its deal when every quotation of the deal is cancelled and the deal is still open. */
|
|
40
|
+
export async function loseDealOf(env, order) {
|
|
41
|
+
const [o] = await env
|
|
42
|
+
.model('sale.order')
|
|
43
|
+
.browse([order])
|
|
44
|
+
.load({ deal: { stage: true, quotations: true } });
|
|
45
|
+
const deal = o?.deal;
|
|
46
|
+
if (deal === null || deal === undefined || deal.lost === true || deal.stage?.won === true)
|
|
47
|
+
return false;
|
|
48
|
+
if ([...deal.quotations].some((q) => q.state !== 'cancel'))
|
|
49
|
+
return false;
|
|
50
|
+
// A lost deal says why: the bridge's own reason.
|
|
51
|
+
const reason = await env
|
|
52
|
+
.refId('crm.lost.reason', 'sale_crm.reason_quotations_cancelled')
|
|
53
|
+
.catch(() => null);
|
|
54
|
+
await env.model('crm.deal').browse([deal.id]).write({ lost: true, lostReason: reason });
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
export const saleCrmShutro = defineModule({
|
|
58
|
+
name: 'sale_crm',
|
|
59
|
+
version: '0.1.0',
|
|
60
|
+
depends: [salesShutro, crmShutro],
|
|
61
|
+
groups: [
|
|
62
|
+
orm.defineGroup({
|
|
63
|
+
code: 'sale_crm.user',
|
|
64
|
+
label: 'Quotations from deals',
|
|
65
|
+
implies: ['sales.user', 'crm.user'],
|
|
66
|
+
}),
|
|
67
|
+
],
|
|
68
|
+
models: [],
|
|
69
|
+
extensions: [OrderDeal, DealQuotations],
|
|
70
|
+
data: [
|
|
71
|
+
record('crm.lost.reason', 'reason_quotations_cancelled', { name: 'Every quotation was cancelled' }, { noupdate: true }),
|
|
72
|
+
],
|
|
73
|
+
});
|
|
@@ -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: 9a7c4ebfaa8a5f06
|
|
2
2
|
// Bindings of module `sale_portal`: 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: 9a7c4ebfaa8a5f06
|
|
2
2
|
// Schema view of module `sale_portal` (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
|
|
|
@@ -29,8 +29,15 @@ export interface SchemaView {
|
|
|
29
29
|
readonly 'portal.announcement': PortalAnnouncement;
|
|
30
30
|
readonly 'portal.invitation': PortalInvitation;
|
|
31
31
|
readonly 'portal.signature': PortalSignature;
|
|
32
|
+
readonly 'product.attribute': ProductAttribute;
|
|
33
|
+
readonly 'product.attribute.value': ProductAttributeValue;
|
|
32
34
|
readonly 'product.category': ProductCategory;
|
|
35
|
+
readonly 'product.pricelist': ProductPricelist;
|
|
36
|
+
readonly 'product.pricelist.rule': ProductPricelistRule;
|
|
33
37
|
readonly 'product.product': ProductProduct;
|
|
38
|
+
readonly 'product.template': ProductTemplate;
|
|
39
|
+
readonly 'product.template.exclusion': ProductTemplateExclusion;
|
|
40
|
+
readonly 'product.template.line': ProductTemplateLine;
|
|
34
41
|
readonly 'res.company': ResCompany;
|
|
35
42
|
readonly 'res.currency': ResCurrency;
|
|
36
43
|
readonly 'res.partner': ResPartner;
|
|
@@ -38,6 +45,9 @@ export interface SchemaView {
|
|
|
38
45
|
readonly 'res.users': ResUsers;
|
|
39
46
|
readonly 'sale.order': SaleOrder;
|
|
40
47
|
readonly 'sale.order.line': SaleOrderLine;
|
|
48
|
+
readonly 'sale.order.option': SaleOrderOption;
|
|
49
|
+
readonly 'sale.order.template': SaleOrderTemplate;
|
|
50
|
+
readonly 'sale.order.template.line': SaleOrderTemplateLine;
|
|
41
51
|
readonly 'storage.attachment': StorageAttachment;
|
|
42
52
|
readonly 'uom.uom': UomUom;
|
|
43
53
|
}
|
|
@@ -655,6 +665,53 @@ export interface PortalSignature {
|
|
|
655
665
|
export interface PortalSignatureMethods extends F.Methods<typeof import('../../portal/index.js').portalShutro, 'portal.signature'> {
|
|
656
666
|
}
|
|
657
667
|
|
|
668
|
+
/** `product.attribute` (owner: product). */
|
|
669
|
+
export interface ProductAttribute {
|
|
670
|
+
readonly name: 'product.attribute';
|
|
671
|
+
readonly fields: {
|
|
672
|
+
readonly id: F.Id<'product.attribute'>;
|
|
673
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
674
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
675
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
676
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
677
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
678
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
679
|
+
readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
|
|
680
|
+
readonly display: F.Selection<'list' | 'radio' | 'swatch' | 'size', { readonly required: true; readonly default: true }>;
|
|
681
|
+
readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
|
|
682
|
+
readonly values: F.One2many<'product.attribute.value', { readonly required: true }>;
|
|
683
|
+
};
|
|
684
|
+
readonly methods: ProductAttributeMethods;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
/** Methods of `product.attribute`: declared ones and transitions. */
|
|
688
|
+
export interface ProductAttributeMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.attribute'> {
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
/** `product.attribute.value` (owner: product). */
|
|
692
|
+
export interface ProductAttributeValue {
|
|
693
|
+
readonly name: 'product.attribute.value';
|
|
694
|
+
readonly fields: {
|
|
695
|
+
readonly id: F.Id<'product.attribute.value'>;
|
|
696
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
697
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
698
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
699
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
700
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
701
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
702
|
+
readonly attribute: F.Many2one<'product.attribute', { readonly required: true }>;
|
|
703
|
+
readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
|
|
704
|
+
readonly color: F.Char;
|
|
705
|
+
readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
|
|
706
|
+
readonly extraPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
707
|
+
};
|
|
708
|
+
readonly methods: ProductAttributeValueMethods;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
/** Methods of `product.attribute.value`: declared ones and transitions. */
|
|
712
|
+
export interface ProductAttributeValueMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.attribute.value'> {
|
|
713
|
+
}
|
|
714
|
+
|
|
658
715
|
/** `product.category` (owner: product). */
|
|
659
716
|
export interface ProductCategory {
|
|
660
717
|
readonly name: 'product.category';
|
|
@@ -668,6 +725,7 @@ export interface ProductCategory {
|
|
|
668
725
|
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
669
726
|
readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
|
|
670
727
|
readonly parent: F.Many2one<'product.category'>;
|
|
728
|
+
readonly approvalUsers: F.Many2many<'res.users', { readonly required: true }>;
|
|
671
729
|
};
|
|
672
730
|
readonly methods: ProductCategoryMethods;
|
|
673
731
|
}
|
|
@@ -676,6 +734,66 @@ export interface ProductCategory {
|
|
|
676
734
|
export interface ProductCategoryMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.category'> {
|
|
677
735
|
}
|
|
678
736
|
|
|
737
|
+
/** `product.pricelist` (owner: product). */
|
|
738
|
+
export interface ProductPricelist {
|
|
739
|
+
readonly name: 'product.pricelist';
|
|
740
|
+
readonly fields: {
|
|
741
|
+
readonly id: F.Id<'product.pricelist'>;
|
|
742
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
743
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
744
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
745
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
746
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
747
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
748
|
+
readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
|
|
749
|
+
readonly sequence: F.Integer<{ readonly default: true }>;
|
|
750
|
+
readonly currency: F.Many2one<'res.currency'>;
|
|
751
|
+
readonly company: F.Many2one<'res.company'>;
|
|
752
|
+
readonly rules: F.One2many<'product.pricelist.rule', { readonly required: true }>;
|
|
753
|
+
readonly note: F.Text;
|
|
754
|
+
};
|
|
755
|
+
readonly methods: ProductPricelistMethods;
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
/** Methods of `product.pricelist`: declared ones and transitions. */
|
|
759
|
+
export interface ProductPricelistMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.pricelist'> {
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
/** `product.pricelist.rule` (owner: product). */
|
|
763
|
+
export interface ProductPricelistRule {
|
|
764
|
+
readonly name: 'product.pricelist.rule';
|
|
765
|
+
readonly fields: {
|
|
766
|
+
readonly id: F.Id<'product.pricelist.rule'>;
|
|
767
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
768
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
769
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
770
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
771
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
772
|
+
readonly pricelist: F.Many2one<'product.pricelist', { readonly required: true }>;
|
|
773
|
+
readonly sequence: F.Integer<{ readonly default: true }>;
|
|
774
|
+
readonly appliesTo: F.Selection<'all' | 'category' | 'product', { readonly required: true; readonly default: true }>;
|
|
775
|
+
readonly product: F.Many2one<'product.product'>;
|
|
776
|
+
readonly category: F.Many2one<'product.category'>;
|
|
777
|
+
readonly minQuantity: F.Decimal<{ readonly default: true }>;
|
|
778
|
+
readonly dateFrom: F.DateOnly;
|
|
779
|
+
readonly dateTo: F.DateOnly;
|
|
780
|
+
readonly compute: F.Selection<'fixed' | 'discount' | 'formula', { readonly required: true; readonly default: true }>;
|
|
781
|
+
readonly fixedPrice: F.Decimal;
|
|
782
|
+
readonly base: F.Selection<'list' | 'cost' | 'pricelist', { readonly required: true; readonly default: true }>;
|
|
783
|
+
readonly basePricelist: F.Many2one<'product.pricelist'>;
|
|
784
|
+
readonly discount: F.Decimal<{ readonly default: true }>;
|
|
785
|
+
readonly surcharge: F.Decimal<{ readonly default: true }>;
|
|
786
|
+
readonly rounding: F.Decimal<{ readonly default: true }>;
|
|
787
|
+
readonly minMargin: F.Decimal;
|
|
788
|
+
readonly maxMargin: F.Decimal;
|
|
789
|
+
};
|
|
790
|
+
readonly methods: ProductPricelistRuleMethods;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
/** Methods of `product.pricelist.rule`: declared ones and transitions. */
|
|
794
|
+
export interface ProductPricelistRuleMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.pricelist.rule'> {
|
|
795
|
+
}
|
|
796
|
+
|
|
679
797
|
/** `product.product` (owner: product). */
|
|
680
798
|
export interface ProductProduct {
|
|
681
799
|
readonly name: 'product.product';
|
|
@@ -691,8 +809,11 @@ export interface ProductProduct {
|
|
|
691
809
|
readonly code: F.Char<{ readonly readonly: true; readonly sequence: true }>;
|
|
692
810
|
readonly kind: F.Selection<'goods' | 'service', { readonly required: true; readonly default: true }>;
|
|
693
811
|
readonly category: F.Many2one<'product.category'>;
|
|
812
|
+
readonly invoicePolicy: F.Selection<'ordered' | 'delivered', { readonly default: true }>;
|
|
694
813
|
readonly uom: F.Many2one<'uom.uom'>;
|
|
695
814
|
readonly barcode: F.Char;
|
|
815
|
+
readonly weight: F.Decimal;
|
|
816
|
+
readonly volume: F.Decimal;
|
|
696
817
|
readonly image: F.Many2one<'storage.attachment'>;
|
|
697
818
|
readonly listPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
698
819
|
readonly standardPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
@@ -703,6 +824,9 @@ export interface ProductProduct {
|
|
|
703
824
|
readonly tax: F.Many2one<'account.tax', { readonly readonly: true }>;
|
|
704
825
|
readonly purchaseTax: F.Many2one<'account.tax', { readonly readonly: true }>;
|
|
705
826
|
readonly description: F.Text<{ readonly translate: true }>;
|
|
827
|
+
readonly template: F.Many2one<'product.template'>;
|
|
828
|
+
readonly attributeValues: F.Many2many<'product.attribute.value', { readonly required: true }>;
|
|
829
|
+
readonly followsTemplatePrice: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
706
830
|
};
|
|
707
831
|
readonly methods: ProductProductMethods;
|
|
708
832
|
}
|
|
@@ -711,6 +835,86 @@ export interface ProductProduct {
|
|
|
711
835
|
export interface ProductProductMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.product'> {
|
|
712
836
|
}
|
|
713
837
|
|
|
838
|
+
/** `product.template` (owner: product). */
|
|
839
|
+
export interface ProductTemplate {
|
|
840
|
+
readonly name: 'product.template';
|
|
841
|
+
readonly fields: {
|
|
842
|
+
readonly id: F.Id<'product.template'>;
|
|
843
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
844
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
845
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
846
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
847
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
848
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
849
|
+
readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
|
|
850
|
+
readonly kind: F.Selection<'goods' | 'service', { readonly required: true; readonly default: true }>;
|
|
851
|
+
readonly category: F.Many2one<'product.category'>;
|
|
852
|
+
readonly uom: F.Many2one<'uom.uom'>;
|
|
853
|
+
readonly listPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
854
|
+
readonly standardPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
855
|
+
readonly saleOk: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
856
|
+
readonly purchaseOk: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
857
|
+
readonly taxes: F.Many2many<'account.tax', { readonly required: true }>;
|
|
858
|
+
readonly purchaseTaxes: F.Many2many<'account.tax', { readonly required: true }>;
|
|
859
|
+
readonly image: F.Many2one<'storage.attachment'>;
|
|
860
|
+
readonly description: F.Text<{ readonly translate: true }>;
|
|
861
|
+
readonly lines: F.One2many<'product.template.line', { readonly required: true }>;
|
|
862
|
+
readonly exclusions: F.One2many<'product.template.exclusion', { readonly required: true }>;
|
|
863
|
+
readonly variants: F.One2many<'product.product', { readonly required: true }>;
|
|
864
|
+
readonly variantCount: F.Integer<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
865
|
+
readonly state: F.State<'draft' | 'ready', { readonly required: true; readonly readonly: true; readonly default: true }>;
|
|
866
|
+
};
|
|
867
|
+
readonly methods: ProductTemplateMethods;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
/** Methods of `product.template`: declared ones and transitions. */
|
|
871
|
+
export interface ProductTemplateMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.template'> {
|
|
872
|
+
readonly 'generate': () => Promise<void>;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
/** `product.template.exclusion` (owner: product). */
|
|
876
|
+
export interface ProductTemplateExclusion {
|
|
877
|
+
readonly name: 'product.template.exclusion';
|
|
878
|
+
readonly fields: {
|
|
879
|
+
readonly id: F.Id<'product.template.exclusion'>;
|
|
880
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
881
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
882
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
883
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
884
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
885
|
+
readonly template: F.Many2one<'product.template', { readonly required: true }>;
|
|
886
|
+
readonly values: F.Many2many<'product.attribute.value', { readonly required: true }>;
|
|
887
|
+
readonly note: F.Char;
|
|
888
|
+
};
|
|
889
|
+
readonly methods: ProductTemplateExclusionMethods;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
/** Methods of `product.template.exclusion`: declared ones and transitions. */
|
|
893
|
+
export interface ProductTemplateExclusionMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.template.exclusion'> {
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
/** `product.template.line` (owner: product). */
|
|
897
|
+
export interface ProductTemplateLine {
|
|
898
|
+
readonly name: 'product.template.line';
|
|
899
|
+
readonly fields: {
|
|
900
|
+
readonly id: F.Id<'product.template.line'>;
|
|
901
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
902
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
903
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
904
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
905
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
906
|
+
readonly template: F.Many2one<'product.template', { readonly required: true }>;
|
|
907
|
+
readonly attribute: F.Many2one<'product.attribute', { readonly required: true }>;
|
|
908
|
+
readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
|
|
909
|
+
readonly values: F.Many2many<'product.attribute.value', { readonly required: true }>;
|
|
910
|
+
};
|
|
911
|
+
readonly methods: ProductTemplateLineMethods;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
/** Methods of `product.template.line`: declared ones and transitions. */
|
|
915
|
+
export interface ProductTemplateLineMethods extends F.Methods<typeof import('../../product/index.js').productShutro, 'product.template.line'> {
|
|
916
|
+
}
|
|
917
|
+
|
|
714
918
|
/** `res.company` (owner: base; extended by: contacts, sales). */
|
|
715
919
|
export interface ResCompany {
|
|
716
920
|
readonly name: 'res.company';
|
|
@@ -764,7 +968,7 @@ export interface ResCurrency {
|
|
|
764
968
|
export interface ResCurrencyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.currency'> {
|
|
765
969
|
}
|
|
766
970
|
|
|
767
|
-
/** `res.partner` (owner: contacts; extended by: portal). */
|
|
971
|
+
/** `res.partner` (owner: contacts; extended by: portal, sales). */
|
|
768
972
|
export interface ResPartner {
|
|
769
973
|
readonly name: 'res.partner';
|
|
770
974
|
readonly fields: {
|
|
@@ -785,6 +989,7 @@ export interface ResPartner {
|
|
|
785
989
|
readonly parent: F.Many2one<'res.partner'>;
|
|
786
990
|
readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
|
|
787
991
|
readonly email: F.Char;
|
|
992
|
+
readonly lang: F.Selection<'en' | 'bn'>;
|
|
788
993
|
readonly phone: F.Char;
|
|
789
994
|
readonly mobile: F.Char;
|
|
790
995
|
readonly website: F.Char;
|
|
@@ -799,12 +1004,13 @@ export interface ResPartner {
|
|
|
799
1004
|
readonly currency: F.Many2one<'res.currency'>;
|
|
800
1005
|
readonly notes: F.Text;
|
|
801
1006
|
readonly portalUsers: F.One2many<'res.users', { readonly required: true }>; // portal
|
|
1007
|
+
readonly pricelist: F.Many2one<'product.pricelist'>; // sales
|
|
802
1008
|
};
|
|
803
1009
|
readonly methods: ResPartnerMethods;
|
|
804
1010
|
}
|
|
805
1011
|
|
|
806
1012
|
/** Methods of `res.partner`: declared ones and transitions. */
|
|
807
|
-
export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.partner'> {
|
|
1013
|
+
export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.partner'>, F.Methods<typeof import('../../sales/index.js').salesShutro, 'res.partner'> {
|
|
808
1014
|
}
|
|
809
1015
|
|
|
810
1016
|
/** `res.partner.tag` (owner: contacts). */
|
|
@@ -869,12 +1075,17 @@ export interface SaleOrder {
|
|
|
869
1075
|
readonly name: F.Char<{ readonly required: true; readonly readonly: true; readonly sequence: true }>;
|
|
870
1076
|
readonly user: F.Many2one<'res.users', { readonly required: true; readonly default: true }>;
|
|
871
1077
|
readonly partner: F.Many2one<'res.partner', { readonly required: true }>;
|
|
1078
|
+
readonly partnerInvoice: F.Many2one<'res.partner'>;
|
|
1079
|
+
readonly partnerShipping: F.Many2one<'res.partner'>;
|
|
1080
|
+
readonly pricelist: F.Many2one<'product.pricelist'>;
|
|
872
1081
|
readonly currency: F.Many2one<'res.currency', { readonly required: true }>;
|
|
873
1082
|
readonly dateOrder: F.DateOnly<{ readonly required: true; readonly default: true }>;
|
|
874
1083
|
readonly validityDate: F.DateOnly;
|
|
875
1084
|
readonly clientReference: F.Char;
|
|
876
1085
|
readonly note: F.Text;
|
|
877
1086
|
readonly lines: F.One2many<'sale.order.line', { readonly required: true }>;
|
|
1087
|
+
readonly template: F.Many2one<'sale.order.template'>;
|
|
1088
|
+
readonly options: F.One2many<'sale.order.option', { readonly required: true }>;
|
|
878
1089
|
readonly amountUntaxed: F.Monetary<'currency', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
879
1090
|
readonly amountTax: F.Monetary<'currency', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
880
1091
|
readonly amountTotal: F.Monetary<'currency', { readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
@@ -889,6 +1100,7 @@ export interface SaleOrder {
|
|
|
889
1100
|
export interface SaleOrderMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order'>, F.Methods<typeof import('../module.js').salePortalShutro, 'sale.order'> {
|
|
890
1101
|
readonly 'cancel': () => Promise<void>;
|
|
891
1102
|
readonly 'confirm': () => Promise<void>;
|
|
1103
|
+
readonly 'fill': () => Promise<void>;
|
|
892
1104
|
readonly 'lock': () => Promise<void>;
|
|
893
1105
|
readonly 'redraft': () => Promise<void>;
|
|
894
1106
|
readonly 'send': () => Promise<void>;
|
|
@@ -910,7 +1122,9 @@ export interface SaleOrderLine {
|
|
|
910
1122
|
readonly name: F.Char<{ readonly required: true }>;
|
|
911
1123
|
readonly quantity: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
912
1124
|
readonly uom: F.Many2one<'uom.uom'>;
|
|
913
|
-
readonly priceUnit: F.Decimal<{ readonly
|
|
1125
|
+
readonly priceUnit: F.Decimal<{ readonly compute: true; readonly store: true; readonly inverse: true }>;
|
|
1126
|
+
readonly manualPrice: F.Decimal;
|
|
1127
|
+
readonly priceReason: F.Char<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
|
|
914
1128
|
readonly discount: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
915
1129
|
readonly taxes: F.Many2many<'account.tax', { readonly required: true }>;
|
|
916
1130
|
readonly tax: F.Many2one<'account.tax', { readonly readonly: true }>;
|
|
@@ -926,6 +1140,79 @@ export interface SaleOrderLine {
|
|
|
926
1140
|
export interface SaleOrderLineMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order.line'> {
|
|
927
1141
|
}
|
|
928
1142
|
|
|
1143
|
+
/** `sale.order.option` (owner: sales). */
|
|
1144
|
+
export interface SaleOrderOption {
|
|
1145
|
+
readonly name: 'sale.order.option';
|
|
1146
|
+
readonly fields: {
|
|
1147
|
+
readonly id: F.Id<'sale.order.option'>;
|
|
1148
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
1149
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
1150
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
1151
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
1152
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
1153
|
+
readonly order: F.Many2one<'sale.order', { readonly required: true }>;
|
|
1154
|
+
readonly product: F.Many2one<'product.product', { readonly required: true }>;
|
|
1155
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
1156
|
+
readonly quantity: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
1157
|
+
readonly priceUnit: F.Decimal;
|
|
1158
|
+
readonly line: F.Many2one<'sale.order.line'>;
|
|
1159
|
+
readonly state: F.State<'offered' | 'added', { readonly required: true; readonly readonly: true; readonly default: true }>;
|
|
1160
|
+
};
|
|
1161
|
+
readonly methods: SaleOrderOptionMethods;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
/** Methods of `sale.order.option`: declared ones and transitions. */
|
|
1165
|
+
export interface SaleOrderOptionMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order.option'> {
|
|
1166
|
+
readonly 'add': () => Promise<void>;
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
/** `sale.order.template` (owner: sales). */
|
|
1170
|
+
export interface SaleOrderTemplate {
|
|
1171
|
+
readonly name: 'sale.order.template';
|
|
1172
|
+
readonly fields: {
|
|
1173
|
+
readonly id: F.Id<'sale.order.template'>;
|
|
1174
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
1175
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
1176
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
1177
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
1178
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
1179
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
1180
|
+
readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
|
|
1181
|
+
readonly validityDays: F.Integer<{ readonly default: true }>;
|
|
1182
|
+
readonly note: F.Text;
|
|
1183
|
+
readonly lines: F.One2many<'sale.order.template.line', { readonly required: true }>;
|
|
1184
|
+
};
|
|
1185
|
+
readonly methods: SaleOrderTemplateMethods;
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
/** Methods of `sale.order.template`: declared ones and transitions. */
|
|
1189
|
+
export interface SaleOrderTemplateMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order.template'> {
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
/** `sale.order.template.line` (owner: sales). */
|
|
1193
|
+
export interface SaleOrderTemplateLine {
|
|
1194
|
+
readonly name: 'sale.order.template.line';
|
|
1195
|
+
readonly fields: {
|
|
1196
|
+
readonly id: F.Id<'sale.order.template.line'>;
|
|
1197
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
1198
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
1199
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
1200
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
1201
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
1202
|
+
readonly template: F.Many2one<'sale.order.template', { readonly required: true }>;
|
|
1203
|
+
readonly sequence: F.Integer<{ readonly default: true }>;
|
|
1204
|
+
readonly product: F.Many2one<'product.product', { readonly required: true }>;
|
|
1205
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
1206
|
+
readonly quantity: F.Decimal<{ readonly required: true; readonly default: true }>;
|
|
1207
|
+
readonly optional: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
1208
|
+
};
|
|
1209
|
+
readonly methods: SaleOrderTemplateLineMethods;
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
/** Methods of `sale.order.template.line`: declared ones and transitions. */
|
|
1213
|
+
export interface SaleOrderTemplateLineMethods extends F.Methods<typeof import('../../sales/index.js').salesShutro, 'sale.order.template.line'> {
|
|
1214
|
+
}
|
|
1215
|
+
|
|
929
1216
|
/** `storage.attachment` (owner: storage). */
|
|
930
1217
|
export interface StorageAttachment {
|
|
931
1218
|
readonly name: 'storage.attachment';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Bangla for the module's labels, keyed by their English text (RFC 0023 §3.1; `pnpm i18n:extract`). */
|
|
2
|
+
export const bn = {
|
|
3
|
+
'Accept and sign': 'গ্রহণ করে স্বাক্ষর করুন',
|
|
4
|
+
Decline: 'প্রত্যাখ্যান করুন',
|
|
5
|
+
'Portal access (sales documents)': 'পোর্টাল প্রবেশাধিকার (বিক্রয় নথি)',
|
|
6
|
+
'Quotations and orders': 'উদ্ধৃতি ও অর্ডার',
|
|
7
|
+
};
|
|
@@ -15,6 +15,8 @@ export const salePortal = defineModule({
|
|
|
15
15
|
depends: [sales, portal],
|
|
16
16
|
// A sent quotation is announced to its customer by email (the portal reads the order's changes).
|
|
17
17
|
changeEvents: ['sale.order'],
|
|
18
|
+
// Bangla for the labels it serves (RFC 0023 §3.1; `pnpm i18n:extract`).
|
|
19
|
+
i18n: { bn: () => import('./i18n/bn.js') },
|
|
18
20
|
accessLevels: {
|
|
19
21
|
manager: { label: 'Portal access (sales documents)', groups: ['portal.manager'] },
|
|
20
22
|
},
|
|
@@ -45,6 +47,14 @@ export const salePortal = defineModule({
|
|
|
45
47
|
field: 'lines',
|
|
46
48
|
fields: ['product', 'name', 'quantity', 'priceUnit', 'discount', 'subtotal'],
|
|
47
49
|
},
|
|
50
|
+
// Optional products the customer adds before signing (RFC 0028 §3.5).
|
|
51
|
+
options: {
|
|
52
|
+
field: 'options',
|
|
53
|
+
fields: ['product', 'name', 'quantity', 'priceUnit'],
|
|
54
|
+
offered: { state: 'offered' },
|
|
55
|
+
when: { state: 'sent' },
|
|
56
|
+
add: 'add',
|
|
57
|
+
},
|
|
48
58
|
pdf: 'sales.quotation',
|
|
49
59
|
actions: [
|
|
50
60
|
{
|