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,340 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vendor prices (RFC 0030 §3.1): what a vendor charges for a product (or every product of a category), from what
|
|
3
|
+
* quantity, between which dates, in which currency, with their own code and name for it and how many days they take.
|
|
4
|
+
* `vendorPriceFor` picks one and says why in words: the preferred vendor when one fits, else the cheapest that
|
|
5
|
+
* fits — and, with a date it is needed by, the cheapest that arrives in time. Purchase lines, reorder rules and
|
|
6
|
+
* Replenishment use it.
|
|
7
|
+
*/
|
|
8
|
+
import type { orm } from '../server/orm.js';
|
|
9
|
+
import { type Env } from './.kosh/bindings.js';
|
|
10
|
+
export declare const ProductVendorPrice: import("../server/orm.js").Model<"product.vendor.price", {
|
|
11
|
+
readonly id: import("../server/orm.js").IdField<"product.vendor.price">;
|
|
12
|
+
readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
13
|
+
required: true;
|
|
14
|
+
readonly: true;
|
|
15
|
+
computed: false;
|
|
16
|
+
inverse: false;
|
|
17
|
+
hasDefault: false;
|
|
18
|
+
sequence: false;
|
|
19
|
+
}>;
|
|
20
|
+
readonly updatedAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
21
|
+
required: true;
|
|
22
|
+
readonly: true;
|
|
23
|
+
computed: false;
|
|
24
|
+
inverse: false;
|
|
25
|
+
hasDefault: false;
|
|
26
|
+
sequence: false;
|
|
27
|
+
}>;
|
|
28
|
+
readonly createdBy: import("../server/orm.js").Many2oneField<'res.users', {
|
|
29
|
+
required: false;
|
|
30
|
+
readonly: true;
|
|
31
|
+
computed: false;
|
|
32
|
+
inverse: false;
|
|
33
|
+
hasDefault: false;
|
|
34
|
+
sequence: false;
|
|
35
|
+
}>;
|
|
36
|
+
readonly updatedBy: import("../server/orm.js").Many2oneField<'res.users', {
|
|
37
|
+
required: false;
|
|
38
|
+
readonly: true;
|
|
39
|
+
computed: false;
|
|
40
|
+
inverse: false;
|
|
41
|
+
hasDefault: false;
|
|
42
|
+
sequence: false;
|
|
43
|
+
}>;
|
|
44
|
+
readonly displayName: import("../server/orm.js").CharField<{
|
|
45
|
+
required: true;
|
|
46
|
+
readonly: true;
|
|
47
|
+
computed: true;
|
|
48
|
+
inverse: false;
|
|
49
|
+
hasDefault: false;
|
|
50
|
+
sequence: false;
|
|
51
|
+
}>;
|
|
52
|
+
readonly active: import("../server/orm.js").ActiveField;
|
|
53
|
+
readonly company: import("../server/orm.js").CompanyField<false>;
|
|
54
|
+
readonly vendor: import("../server/orm.js").Many2oneField<"res.partner", {
|
|
55
|
+
readonly required: true;
|
|
56
|
+
readonly computed: false;
|
|
57
|
+
readonly inverse: false;
|
|
58
|
+
readonly sequence: false;
|
|
59
|
+
readonly computeName: undefined;
|
|
60
|
+
readonly store: true;
|
|
61
|
+
readonly hasDefault: false;
|
|
62
|
+
readonly readonly: false;
|
|
63
|
+
}>;
|
|
64
|
+
readonly product: import("../server/orm.js").Many2oneField<"product.product", {
|
|
65
|
+
readonly required: false;
|
|
66
|
+
readonly computed: false;
|
|
67
|
+
readonly inverse: false;
|
|
68
|
+
readonly sequence: false;
|
|
69
|
+
readonly computeName: undefined;
|
|
70
|
+
readonly store: true;
|
|
71
|
+
readonly hasDefault: false;
|
|
72
|
+
readonly readonly: false;
|
|
73
|
+
}>;
|
|
74
|
+
readonly category: import("../server/orm.js").Many2oneField<"product.category", {
|
|
75
|
+
readonly required: false;
|
|
76
|
+
readonly computed: false;
|
|
77
|
+
readonly inverse: false;
|
|
78
|
+
readonly sequence: false;
|
|
79
|
+
readonly computeName: undefined;
|
|
80
|
+
readonly store: true;
|
|
81
|
+
readonly hasDefault: false;
|
|
82
|
+
readonly readonly: false;
|
|
83
|
+
}>;
|
|
84
|
+
readonly vendorCode: import("../server/orm.js").CharField<{
|
|
85
|
+
readonly required: false;
|
|
86
|
+
readonly computed: false;
|
|
87
|
+
readonly inverse: false;
|
|
88
|
+
readonly sequence: false;
|
|
89
|
+
readonly computeName: undefined;
|
|
90
|
+
readonly store: true;
|
|
91
|
+
readonly hasDefault: false;
|
|
92
|
+
readonly readonly: false;
|
|
93
|
+
}, string>;
|
|
94
|
+
readonly vendorName: import("../server/orm.js").CharField<{
|
|
95
|
+
readonly required: false;
|
|
96
|
+
readonly computed: false;
|
|
97
|
+
readonly inverse: false;
|
|
98
|
+
readonly sequence: false;
|
|
99
|
+
readonly computeName: undefined;
|
|
100
|
+
readonly store: true;
|
|
101
|
+
readonly hasDefault: false;
|
|
102
|
+
readonly readonly: false;
|
|
103
|
+
}, string>;
|
|
104
|
+
readonly currency: import("../server/orm.js").Many2oneField<"res.currency", {
|
|
105
|
+
readonly required: false;
|
|
106
|
+
readonly computed: false;
|
|
107
|
+
readonly inverse: false;
|
|
108
|
+
readonly sequence: false;
|
|
109
|
+
readonly computeName: undefined;
|
|
110
|
+
readonly store: true;
|
|
111
|
+
readonly hasDefault: false;
|
|
112
|
+
readonly readonly: false;
|
|
113
|
+
}>;
|
|
114
|
+
readonly minQuantity: import("../server/orm.js").DecimalField<{
|
|
115
|
+
readonly required: true;
|
|
116
|
+
readonly computed: false;
|
|
117
|
+
readonly inverse: false;
|
|
118
|
+
readonly sequence: false;
|
|
119
|
+
readonly computeName: undefined;
|
|
120
|
+
readonly store: true;
|
|
121
|
+
readonly hasDefault: true;
|
|
122
|
+
readonly readonly: false;
|
|
123
|
+
}>;
|
|
124
|
+
readonly price: import("../server/orm.js").DecimalField<{
|
|
125
|
+
readonly required: true;
|
|
126
|
+
readonly computed: false;
|
|
127
|
+
readonly inverse: false;
|
|
128
|
+
readonly sequence: false;
|
|
129
|
+
readonly computeName: undefined;
|
|
130
|
+
readonly store: true;
|
|
131
|
+
readonly hasDefault: false;
|
|
132
|
+
readonly readonly: false;
|
|
133
|
+
}>;
|
|
134
|
+
readonly dateFrom: import("../server/orm.js").ScalarField<"date", string, string, {
|
|
135
|
+
readonly required: false;
|
|
136
|
+
readonly computed: false;
|
|
137
|
+
readonly inverse: false;
|
|
138
|
+
readonly sequence: false;
|
|
139
|
+
readonly computeName: undefined;
|
|
140
|
+
readonly store: true;
|
|
141
|
+
readonly hasDefault: false;
|
|
142
|
+
readonly readonly: false;
|
|
143
|
+
}>;
|
|
144
|
+
readonly dateTo: import("../server/orm.js").ScalarField<"date", string, string, {
|
|
145
|
+
readonly required: false;
|
|
146
|
+
readonly computed: false;
|
|
147
|
+
readonly inverse: false;
|
|
148
|
+
readonly sequence: false;
|
|
149
|
+
readonly computeName: undefined;
|
|
150
|
+
readonly store: true;
|
|
151
|
+
readonly hasDefault: false;
|
|
152
|
+
readonly readonly: false;
|
|
153
|
+
}>;
|
|
154
|
+
readonly leadDays: import("../server/orm.js").ScalarField<"integer", number, number, {
|
|
155
|
+
readonly required: true;
|
|
156
|
+
readonly computed: false;
|
|
157
|
+
readonly inverse: false;
|
|
158
|
+
readonly sequence: false;
|
|
159
|
+
readonly computeName: undefined;
|
|
160
|
+
readonly store: true;
|
|
161
|
+
readonly hasDefault: true;
|
|
162
|
+
readonly readonly: false;
|
|
163
|
+
}>;
|
|
164
|
+
readonly preferred: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
165
|
+
readonly required: true;
|
|
166
|
+
readonly computed: false;
|
|
167
|
+
readonly inverse: false;
|
|
168
|
+
readonly sequence: false;
|
|
169
|
+
readonly computeName: undefined;
|
|
170
|
+
readonly store: true;
|
|
171
|
+
readonly hasDefault: true;
|
|
172
|
+
readonly readonly: false;
|
|
173
|
+
}>;
|
|
174
|
+
readonly sequence: import("../server/orm.js").ScalarField<"integer", number, number, {
|
|
175
|
+
readonly required: false;
|
|
176
|
+
readonly computed: false;
|
|
177
|
+
readonly inverse: false;
|
|
178
|
+
readonly sequence: false;
|
|
179
|
+
readonly computeName: undefined;
|
|
180
|
+
readonly store: true;
|
|
181
|
+
readonly hasDefault: true;
|
|
182
|
+
readonly readonly: false;
|
|
183
|
+
}>;
|
|
184
|
+
}, {} & import("../server/orm.js").TransitionMethods<{
|
|
185
|
+
readonly vendor: import("../server/orm.js").Many2oneField<"res.partner", {
|
|
186
|
+
readonly required: true;
|
|
187
|
+
readonly computed: false;
|
|
188
|
+
readonly inverse: false;
|
|
189
|
+
readonly sequence: false;
|
|
190
|
+
readonly computeName: undefined;
|
|
191
|
+
readonly store: true;
|
|
192
|
+
readonly hasDefault: false;
|
|
193
|
+
readonly readonly: false;
|
|
194
|
+
}>;
|
|
195
|
+
readonly product: import("../server/orm.js").Many2oneField<"product.product", {
|
|
196
|
+
readonly required: false;
|
|
197
|
+
readonly computed: false;
|
|
198
|
+
readonly inverse: false;
|
|
199
|
+
readonly sequence: false;
|
|
200
|
+
readonly computeName: undefined;
|
|
201
|
+
readonly store: true;
|
|
202
|
+
readonly hasDefault: false;
|
|
203
|
+
readonly readonly: false;
|
|
204
|
+
}>;
|
|
205
|
+
readonly category: import("../server/orm.js").Many2oneField<"product.category", {
|
|
206
|
+
readonly required: false;
|
|
207
|
+
readonly computed: false;
|
|
208
|
+
readonly inverse: false;
|
|
209
|
+
readonly sequence: false;
|
|
210
|
+
readonly computeName: undefined;
|
|
211
|
+
readonly store: true;
|
|
212
|
+
readonly hasDefault: false;
|
|
213
|
+
readonly readonly: false;
|
|
214
|
+
}>;
|
|
215
|
+
readonly vendorCode: import("../server/orm.js").CharField<{
|
|
216
|
+
readonly required: false;
|
|
217
|
+
readonly computed: false;
|
|
218
|
+
readonly inverse: false;
|
|
219
|
+
readonly sequence: false;
|
|
220
|
+
readonly computeName: undefined;
|
|
221
|
+
readonly store: true;
|
|
222
|
+
readonly hasDefault: false;
|
|
223
|
+
readonly readonly: false;
|
|
224
|
+
}, string>;
|
|
225
|
+
readonly vendorName: import("../server/orm.js").CharField<{
|
|
226
|
+
readonly required: false;
|
|
227
|
+
readonly computed: false;
|
|
228
|
+
readonly inverse: false;
|
|
229
|
+
readonly sequence: false;
|
|
230
|
+
readonly computeName: undefined;
|
|
231
|
+
readonly store: true;
|
|
232
|
+
readonly hasDefault: false;
|
|
233
|
+
readonly readonly: false;
|
|
234
|
+
}, string>;
|
|
235
|
+
readonly currency: import("../server/orm.js").Many2oneField<"res.currency", {
|
|
236
|
+
readonly required: false;
|
|
237
|
+
readonly computed: false;
|
|
238
|
+
readonly inverse: false;
|
|
239
|
+
readonly sequence: false;
|
|
240
|
+
readonly computeName: undefined;
|
|
241
|
+
readonly store: true;
|
|
242
|
+
readonly hasDefault: false;
|
|
243
|
+
readonly readonly: false;
|
|
244
|
+
}>;
|
|
245
|
+
readonly minQuantity: import("../server/orm.js").DecimalField<{
|
|
246
|
+
readonly required: true;
|
|
247
|
+
readonly computed: false;
|
|
248
|
+
readonly inverse: false;
|
|
249
|
+
readonly sequence: false;
|
|
250
|
+
readonly computeName: undefined;
|
|
251
|
+
readonly store: true;
|
|
252
|
+
readonly hasDefault: true;
|
|
253
|
+
readonly readonly: false;
|
|
254
|
+
}>;
|
|
255
|
+
readonly price: import("../server/orm.js").DecimalField<{
|
|
256
|
+
readonly required: true;
|
|
257
|
+
readonly computed: false;
|
|
258
|
+
readonly inverse: false;
|
|
259
|
+
readonly sequence: false;
|
|
260
|
+
readonly computeName: undefined;
|
|
261
|
+
readonly store: true;
|
|
262
|
+
readonly hasDefault: false;
|
|
263
|
+
readonly readonly: false;
|
|
264
|
+
}>;
|
|
265
|
+
readonly dateFrom: import("../server/orm.js").ScalarField<"date", string, string, {
|
|
266
|
+
readonly required: false;
|
|
267
|
+
readonly computed: false;
|
|
268
|
+
readonly inverse: false;
|
|
269
|
+
readonly sequence: false;
|
|
270
|
+
readonly computeName: undefined;
|
|
271
|
+
readonly store: true;
|
|
272
|
+
readonly hasDefault: false;
|
|
273
|
+
readonly readonly: false;
|
|
274
|
+
}>;
|
|
275
|
+
readonly dateTo: import("../server/orm.js").ScalarField<"date", string, string, {
|
|
276
|
+
readonly required: false;
|
|
277
|
+
readonly computed: false;
|
|
278
|
+
readonly inverse: false;
|
|
279
|
+
readonly sequence: false;
|
|
280
|
+
readonly computeName: undefined;
|
|
281
|
+
readonly store: true;
|
|
282
|
+
readonly hasDefault: false;
|
|
283
|
+
readonly readonly: false;
|
|
284
|
+
}>;
|
|
285
|
+
readonly leadDays: import("../server/orm.js").ScalarField<"integer", number, number, {
|
|
286
|
+
readonly required: true;
|
|
287
|
+
readonly computed: false;
|
|
288
|
+
readonly inverse: false;
|
|
289
|
+
readonly sequence: false;
|
|
290
|
+
readonly computeName: undefined;
|
|
291
|
+
readonly store: true;
|
|
292
|
+
readonly hasDefault: true;
|
|
293
|
+
readonly readonly: false;
|
|
294
|
+
}>;
|
|
295
|
+
readonly preferred: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
296
|
+
readonly required: true;
|
|
297
|
+
readonly computed: false;
|
|
298
|
+
readonly inverse: false;
|
|
299
|
+
readonly sequence: false;
|
|
300
|
+
readonly computeName: undefined;
|
|
301
|
+
readonly store: true;
|
|
302
|
+
readonly hasDefault: true;
|
|
303
|
+
readonly readonly: false;
|
|
304
|
+
}>;
|
|
305
|
+
readonly sequence: import("../server/orm.js").ScalarField<"integer", number, number, {
|
|
306
|
+
readonly required: false;
|
|
307
|
+
readonly computed: false;
|
|
308
|
+
readonly inverse: false;
|
|
309
|
+
readonly sequence: false;
|
|
310
|
+
readonly computeName: undefined;
|
|
311
|
+
readonly store: true;
|
|
312
|
+
readonly hasDefault: true;
|
|
313
|
+
readonly readonly: false;
|
|
314
|
+
}>;
|
|
315
|
+
}>>;
|
|
316
|
+
type Decimal = ReturnType<typeof orm.toDecimal>;
|
|
317
|
+
/** The vendor price chosen, and why. */
|
|
318
|
+
export interface VendorChoice {
|
|
319
|
+
readonly id: number;
|
|
320
|
+
readonly vendor: number;
|
|
321
|
+
readonly vendorName: string;
|
|
322
|
+
readonly price: Decimal;
|
|
323
|
+
readonly leadDays: number;
|
|
324
|
+
readonly vendorCode: string | null;
|
|
325
|
+
readonly explanation: string;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* The price a vendor (or the best vendor) charges for `quantity` of a product on `date`, as the caller: the
|
|
329
|
+
* product's own rows before its category's; the preferred row before the others when it fits; with `needBy`, rows
|
|
330
|
+
* that arrive later only when none arrives in time; the cheapest, then the quickest. Null when no row fits.
|
|
331
|
+
*/
|
|
332
|
+
export declare function vendorPriceFor(env: Env, input: {
|
|
333
|
+
readonly product: number;
|
|
334
|
+
readonly quantity: Decimal;
|
|
335
|
+
readonly date: string;
|
|
336
|
+
readonly vendor?: number | null;
|
|
337
|
+
readonly currency?: number | null;
|
|
338
|
+
readonly needBy?: string | null;
|
|
339
|
+
}): Promise<VendorChoice | null>;
|
|
340
|
+
export {};
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { defineModel, f } from './.kosh/bindings.js';
|
|
2
|
+
const ALL = ['read', 'write', 'create', 'unlink', 'export', 'import'];
|
|
3
|
+
export const ProductVendorPrice = defineModel('product.vendor.price', {
|
|
4
|
+
label: 'Vendor price',
|
|
5
|
+
archivable: true,
|
|
6
|
+
companyScoped: { required: false },
|
|
7
|
+
order: ['sequence asc', 'minQuantity asc', 'id asc'],
|
|
8
|
+
access: {
|
|
9
|
+
'purchase.user': ['read', 'write', 'create', 'export', 'import'],
|
|
10
|
+
'purchase.manager': ALL,
|
|
11
|
+
},
|
|
12
|
+
fields: {
|
|
13
|
+
vendor: f.many2one('res.partner', { required: true, ondelete: 'cascade', label: 'Vendor' }),
|
|
14
|
+
product: f.many2one('product.product', { ondelete: 'cascade', label: 'Product' }),
|
|
15
|
+
category: f.many2one('product.category', {
|
|
16
|
+
ondelete: 'cascade',
|
|
17
|
+
label: 'Category',
|
|
18
|
+
help: 'For every product of the category that has no price of its own from this vendor.',
|
|
19
|
+
}),
|
|
20
|
+
vendorCode: f.char({ label: 'Vendor’s code' }),
|
|
21
|
+
vendorName: f.char({ label: 'Vendor’s name for it' }),
|
|
22
|
+
currency: f.many2one('res.currency', {
|
|
23
|
+
label: 'Currency',
|
|
24
|
+
help: 'Used on orders in this currency; empty: any.',
|
|
25
|
+
}),
|
|
26
|
+
minQuantity: f.decimal({
|
|
27
|
+
scale: 3,
|
|
28
|
+
required: true,
|
|
29
|
+
default: '0',
|
|
30
|
+
label: 'From quantity',
|
|
31
|
+
help: 'The price applies from this quantity on (price breaks: one row per break).',
|
|
32
|
+
}),
|
|
33
|
+
price: f.decimal({ scale: 2, required: true, label: 'Price' }),
|
|
34
|
+
dateFrom: f.date({ label: 'Valid from' }),
|
|
35
|
+
dateTo: f.date({ label: 'Valid until' }),
|
|
36
|
+
leadDays: f.integer({
|
|
37
|
+
required: true,
|
|
38
|
+
default: 0,
|
|
39
|
+
label: 'Lead days',
|
|
40
|
+
help: 'Days from ordering to arrival.',
|
|
41
|
+
}),
|
|
42
|
+
preferred: f.boolean({
|
|
43
|
+
default: false,
|
|
44
|
+
label: 'Preferred',
|
|
45
|
+
help: 'Chosen before cheaper vendors when its price fits (and it arrives in time).',
|
|
46
|
+
}),
|
|
47
|
+
sequence: f.integer({ default: 10 }),
|
|
48
|
+
},
|
|
49
|
+
constraints: {
|
|
50
|
+
productOrCategory: {
|
|
51
|
+
depends: ['product', 'category'],
|
|
52
|
+
check: async (records) => [
|
|
53
|
+
...records,
|
|
54
|
+
]
|
|
55
|
+
.filter((r) => (r.product === null) === (r.category === null))
|
|
56
|
+
.map((r) => r.id),
|
|
57
|
+
message: 'A vendor price is for a product or for a category, one of the two.',
|
|
58
|
+
},
|
|
59
|
+
dates: {
|
|
60
|
+
depends: ['dateFrom', 'dateTo'],
|
|
61
|
+
check: async (records) => [...records]
|
|
62
|
+
.filter((r) => r.dateFrom !== null && r.dateTo !== null && r.dateTo < r.dateFrom)
|
|
63
|
+
.map((r) => r.id),
|
|
64
|
+
message: 'A vendor price ends on or after the day it starts.',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
const dayOf = (v) => v instanceof Date ? v.toISOString().slice(0, 10) : String(v ?? '').slice(0, 10);
|
|
69
|
+
const addDays = (date, days) => {
|
|
70
|
+
const d = new Date(`${date}T00:00:00Z`);
|
|
71
|
+
d.setUTCDate(d.getUTCDate() + days);
|
|
72
|
+
return d.toISOString().slice(0, 10);
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* The price a vendor (or the best vendor) charges for `quantity` of a product on `date`, as the caller: the
|
|
76
|
+
* product's own rows before its category's; the preferred row before the others when it fits; with `needBy`, rows
|
|
77
|
+
* that arrive later only when none arrives in time; the cheapest, then the quickest. Null when no row fits.
|
|
78
|
+
*/
|
|
79
|
+
export async function vendorPriceFor(env, input) {
|
|
80
|
+
const [product] = await env
|
|
81
|
+
.model('product.product')
|
|
82
|
+
.browse([input.product])
|
|
83
|
+
.load({ category: true });
|
|
84
|
+
if (product === undefined)
|
|
85
|
+
return null;
|
|
86
|
+
const category = product.category?.id ?? null;
|
|
87
|
+
const found = await env.model('product.vendor.price').search({
|
|
88
|
+
where: {
|
|
89
|
+
or: [{ product: input.product }, ...(category === null ? [] : [{ product: null, category }])],
|
|
90
|
+
minQuantity: { lte: input.quantity.toString() },
|
|
91
|
+
...(input.vendor == null ? {} : { vendor: input.vendor }),
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
const rows = [...(await found.load({ vendor: true, currency: true, product: true }))].filter((r) => {
|
|
95
|
+
const from = r.dateFrom === null ? null : dayOf(r.dateFrom);
|
|
96
|
+
const to = r.dateTo === null ? null : dayOf(r.dateTo);
|
|
97
|
+
if (from !== null && from > input.date)
|
|
98
|
+
return false;
|
|
99
|
+
if (to !== null && to < input.date)
|
|
100
|
+
return false;
|
|
101
|
+
if (r.currency !== null && input.currency != null && r.currency.id !== input.currency)
|
|
102
|
+
return false;
|
|
103
|
+
return true;
|
|
104
|
+
});
|
|
105
|
+
if (rows.length === 0)
|
|
106
|
+
return null;
|
|
107
|
+
// The product's own rows win over its category's; per vendor, the highest quantity break that fits.
|
|
108
|
+
const own = rows.filter((r) => r.product !== null);
|
|
109
|
+
const pool = own.length > 0 ? own : rows;
|
|
110
|
+
const best = new Map();
|
|
111
|
+
for (const r of pool) {
|
|
112
|
+
const v = r.vendor.id;
|
|
113
|
+
const seen = best.get(v);
|
|
114
|
+
if (seen === undefined || r.minQuantity.gt(seen.minQuantity))
|
|
115
|
+
best.set(v, r);
|
|
116
|
+
}
|
|
117
|
+
const candidates = [...best.values()];
|
|
118
|
+
const inTime = (r) => input.needBy == null || addDays(input.date, r.leadDays) <= input.needBy;
|
|
119
|
+
const timely = candidates.filter(inTime);
|
|
120
|
+
const usable = timely.length > 0 ? timely : candidates;
|
|
121
|
+
const cheapest = [...usable].sort((a, b) => a.price.comparedTo(b.price) || a.leadDays - b.leadDays)[0];
|
|
122
|
+
const preferred = usable.find((r) => r.preferred);
|
|
123
|
+
const chosen = preferred ?? cheapest;
|
|
124
|
+
if (chosen === undefined)
|
|
125
|
+
return null;
|
|
126
|
+
const vendorName = String(chosen.vendor.name ?? '');
|
|
127
|
+
const breakText = chosen.minQuantity.gt(0) ? ` from ${chosen.minQuantity.toString()}` : '';
|
|
128
|
+
const scope = chosen.product === null ? ' (its category’s price)' : '';
|
|
129
|
+
const reasons = [];
|
|
130
|
+
if (input.vendor != null)
|
|
131
|
+
reasons.push(`${vendorName}’s price${breakText}${scope}`);
|
|
132
|
+
else if (preferred !== undefined)
|
|
133
|
+
reasons.push(`${vendorName} is preferred${breakText}${scope}`);
|
|
134
|
+
else if (usable.length > 1)
|
|
135
|
+
reasons.push(`${vendorName} is the cheapest of ${usable.length}${breakText}${scope}`);
|
|
136
|
+
else
|
|
137
|
+
reasons.push(`${vendorName}’s price${breakText}${scope}`);
|
|
138
|
+
if (input.needBy != null)
|
|
139
|
+
reasons.push(timely.length > 0
|
|
140
|
+
? `arrives in ${chosen.leadDays} days, in time`
|
|
141
|
+
: `nobody arrives by ${input.needBy}; ${chosen.leadDays} days`);
|
|
142
|
+
else if (chosen.leadDays > 0)
|
|
143
|
+
reasons.push(`${chosen.leadDays} days to arrive`);
|
|
144
|
+
return {
|
|
145
|
+
id: chosen.id,
|
|
146
|
+
vendor: chosen.vendor.id,
|
|
147
|
+
vendorName,
|
|
148
|
+
price: chosen.price,
|
|
149
|
+
leadDays: chosen.leadDays,
|
|
150
|
+
vendorCode: chosen.vendorCode ?? null,
|
|
151
|
+
explanation: `${reasons.join('; ')}.`,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
@@ -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: f5cdb2ac40836cbb
|
|
2
2
|
// Bindings of module `purchase_account`: 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';
|