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
package/dist/pos/module.js
CHANGED
|
@@ -8,6 +8,7 @@ import { accountingShutro } from '../accounting/index.js';
|
|
|
8
8
|
import { contactsShutro } from '../contacts/index.js';
|
|
9
9
|
import { messagingShutro } from '../messaging/index.js';
|
|
10
10
|
import { productShutro } from '../product/index.js';
|
|
11
|
+
import { emitting } from '../server/index.js';
|
|
11
12
|
import { orm } from '../server/orm.js';
|
|
12
13
|
import { check, compute, defineModel, defineModule, f, method, records, } from './.kosh/bindings.js';
|
|
13
14
|
import { bookSessions } from './accounting.js';
|
|
@@ -30,6 +31,12 @@ export const PosShop = defineModel('pos.shop', {
|
|
|
30
31
|
archivable: true,
|
|
31
32
|
access: { 'pos.cashier': ['read'], 'pos.manager': [...ALL, 'export'] },
|
|
32
33
|
fields: {
|
|
34
|
+
/** Its prices (RFC 0028 §3.1): the shop's price list, else list prices; a customer's own list wins. */
|
|
35
|
+
pricelist: f.many2one('product.pricelist', {
|
|
36
|
+
ondelete: 'restrict',
|
|
37
|
+
label: 'Price list',
|
|
38
|
+
help: 'The till prices products by this list; a sale for a customer with a list of their own uses theirs.',
|
|
39
|
+
}),
|
|
33
40
|
name: f.char({ required: true }),
|
|
34
41
|
/** Prices on the register include the taxes (a shop) or not (a wholesale counter). */
|
|
35
42
|
pricesIncludeTax: f.boolean({ default: true, label: 'Prices include taxes' }),
|
|
@@ -44,6 +51,16 @@ export const PosShop = defineModel('pos.shop', {
|
|
|
44
51
|
label: 'Cash difference account',
|
|
45
52
|
}),
|
|
46
53
|
},
|
|
54
|
+
methods: {
|
|
55
|
+
/**
|
|
56
|
+
* The key of the receipt template each of these shops prints (`<module>.<key>`). The Counter's own here; a
|
|
57
|
+
* localization overrides it (`l10n_bd_pos`: the Mushak 6.3 receipt for shops that issue it).
|
|
58
|
+
*/
|
|
59
|
+
receiptTemplate: method('pos.shop', async function () {
|
|
60
|
+
const shops = this;
|
|
61
|
+
return new Map(shops.ids.map((id) => [id, 'pos.receipt']));
|
|
62
|
+
}),
|
|
63
|
+
},
|
|
47
64
|
});
|
|
48
65
|
/** How a shop takes money: cash, a card terminal, mobile money, a transfer; each to its journal. */
|
|
49
66
|
export const PosPaymentMethod = defineModel('pos.payment.method', {
|
|
@@ -55,7 +72,11 @@ export const PosPaymentMethod = defineModel('pos.payment.method', {
|
|
|
55
72
|
fields: {
|
|
56
73
|
shop: f.many2one('pos.shop', { required: true, ondelete: 'cascade' }),
|
|
57
74
|
name: f.char({ required: true }),
|
|
58
|
-
kind: f.selection({ cash: 'Cash', card: 'Card', mobile: 'Mobile money', transfer: 'Bank transfer' }, {
|
|
75
|
+
kind: f.selection({ cash: 'Cash', card: 'Card', mobile: 'Mobile money', transfer: 'Bank transfer' }, {
|
|
76
|
+
required: true,
|
|
77
|
+
default: 'cash',
|
|
78
|
+
help: 'The kind of payment; only cash payments count toward the cash expected in the drawer.',
|
|
79
|
+
}),
|
|
59
80
|
journal: f.many2one('account.journal', { ondelete: 'restrict' }),
|
|
60
81
|
sequence: f.integer({ required: true, default: 10 }),
|
|
61
82
|
},
|
|
@@ -86,6 +107,7 @@ export const PosSession = defineModel('pos.session', {
|
|
|
86
107
|
scale: 2,
|
|
87
108
|
store: true,
|
|
88
109
|
label: 'Cash expected',
|
|
110
|
+
help: 'The opening cash plus the cash taken on paid sales, less the change given back.',
|
|
89
111
|
...compute('pos.session', 'expectedCash', [
|
|
90
112
|
'openingCash',
|
|
91
113
|
'orders.state',
|
|
@@ -112,6 +134,7 @@ export const PosSession = defineModel('pos.session', {
|
|
|
112
134
|
scale: 2,
|
|
113
135
|
store: true,
|
|
114
136
|
label: 'Difference',
|
|
137
|
+
help: 'The cash counted at closing less the cash expected; negative when cash is missing.',
|
|
115
138
|
...compute('pos.session', 'closingDifference', ['closingCash', 'expectedCash'], (sessions) => {
|
|
116
139
|
for (const s of sessions)
|
|
117
140
|
s.closingDifference =
|
|
@@ -134,6 +157,7 @@ export const PosSession = defineModel('pos.session', {
|
|
|
134
157
|
scale: 2,
|
|
135
158
|
store: true,
|
|
136
159
|
label: 'Sold',
|
|
160
|
+
help: 'The total of the session’s paid sales.',
|
|
137
161
|
...compute('pos.session', 'total', ['orders.state', 'orders.total'], (sessions) => {
|
|
138
162
|
for (const s of sessions)
|
|
139
163
|
s.total = [...s.orders]
|
|
@@ -142,10 +166,11 @@ export const PosSession = defineModel('pos.session', {
|
|
|
142
166
|
}),
|
|
143
167
|
}),
|
|
144
168
|
state: f.state({
|
|
169
|
+
help: 'Open while the cashier sells; closed once the cash in the drawer is counted.',
|
|
145
170
|
states: { open: 'Open', closed: 'Closed' },
|
|
146
171
|
initial: 'open',
|
|
147
172
|
transitions: {
|
|
148
|
-
close: {
|
|
173
|
+
close: emitting('pos.session.closed', {
|
|
149
174
|
from: ['open'],
|
|
150
175
|
to: 'closed',
|
|
151
176
|
guard: records('pos.session', async (sessions) => sessions.filter((s) => s.closingCash === null)),
|
|
@@ -163,7 +188,7 @@ export const PosSession = defineModel('pos.session', {
|
|
|
163
188
|
await env.asSuperuser({ reason: 'counter session books' }, (su) => bookSessions(su, sessions.ids));
|
|
164
189
|
await env.model('pos.session').browse(sessions.ids).closed();
|
|
165
190
|
}),
|
|
166
|
-
},
|
|
191
|
+
}),
|
|
167
192
|
},
|
|
168
193
|
}),
|
|
169
194
|
},
|
|
@@ -256,6 +281,7 @@ export const PosOrder = defineModel('pos.order', {
|
|
|
256
281
|
scale: 2,
|
|
257
282
|
store: true,
|
|
258
283
|
label: 'Untaxed',
|
|
284
|
+
help: 'The sum of the lines’ amounts before taxes.',
|
|
259
285
|
...compute('pos.order', 'amountUntaxed', ['lines.subtotal'], (orders) => {
|
|
260
286
|
for (const o of orders)
|
|
261
287
|
o.amountUntaxed = [...o.lines].reduce((sum, l) => sum.plus(l.subtotal ?? ZERO), ZERO);
|
|
@@ -265,6 +291,7 @@ export const PosOrder = defineModel('pos.order', {
|
|
|
265
291
|
scale: 2,
|
|
266
292
|
store: true,
|
|
267
293
|
label: 'Taxes',
|
|
294
|
+
help: 'The sum of the taxes on the lines.',
|
|
268
295
|
...compute('pos.order', 'amountTax', ['lines.taxAmount'], (orders) => {
|
|
269
296
|
for (const o of orders)
|
|
270
297
|
o.amountTax = [...o.lines].reduce((sum, l) => sum.plus(l.taxAmount ?? ZERO), ZERO);
|
|
@@ -274,6 +301,7 @@ export const PosOrder = defineModel('pos.order', {
|
|
|
274
301
|
scale: 2,
|
|
275
302
|
store: true,
|
|
276
303
|
label: 'Total',
|
|
304
|
+
help: 'What the customer pays: the untaxed amount plus the taxes.',
|
|
277
305
|
...compute('pos.order', 'total', ['amountUntaxed', 'amountTax'], (orders) => {
|
|
278
306
|
for (const o of orders)
|
|
279
307
|
o.total = (o.amountUntaxed ?? ZERO).plus(o.amountTax ?? ZERO);
|
|
@@ -283,6 +311,7 @@ export const PosOrder = defineModel('pos.order', {
|
|
|
283
311
|
scale: 2,
|
|
284
312
|
store: true,
|
|
285
313
|
label: 'Paid',
|
|
314
|
+
help: 'The sum of the payments received for the sale.',
|
|
286
315
|
...compute('pos.order', 'amountPaid', ['payments.amount'], (orders) => {
|
|
287
316
|
for (const o of orders)
|
|
288
317
|
o.amountPaid = [...o.payments].reduce((sum, p) => sum.plus(p.amount), ZERO);
|
|
@@ -293,6 +322,7 @@ export const PosOrder = defineModel('pos.order', {
|
|
|
293
322
|
scale: 2,
|
|
294
323
|
store: true,
|
|
295
324
|
label: 'Change',
|
|
325
|
+
help: 'What the cashier gives back when the payments exceed the total.',
|
|
296
326
|
...compute('pos.order', 'change', ['amountPaid', 'total'], (orders) => {
|
|
297
327
|
for (const o of orders) {
|
|
298
328
|
const over = (o.amountPaid ?? ZERO).minus(o.total ?? ZERO);
|
|
@@ -301,6 +331,7 @@ export const PosOrder = defineModel('pos.order', {
|
|
|
301
331
|
}),
|
|
302
332
|
}),
|
|
303
333
|
state: f.state({
|
|
334
|
+
help: 'Being paid while the sale is at the register; paid once the payments cover the total, or voided when it is abandoned.',
|
|
304
335
|
states: { draft: 'Being paid', paid: 'Paid', void: 'Voided' },
|
|
305
336
|
initial: 'draft',
|
|
306
337
|
transitions: {
|
|
@@ -363,8 +394,20 @@ export const PosOrderLine = defineModel('pos.order.line', {
|
|
|
363
394
|
priceUnit: f.decimal({ scale: 2, required: true, default: '0', label: 'Unit price' }),
|
|
364
395
|
discount: f.decimal({ scale: 2, required: true, default: '0', label: 'Discount %' }),
|
|
365
396
|
taxes: f.many2many('account.tax', { relation: 'pos_line_tax_rel' }),
|
|
366
|
-
subtotal: f.decimal({
|
|
367
|
-
|
|
397
|
+
subtotal: f.decimal({
|
|
398
|
+
scale: 2,
|
|
399
|
+
store: true,
|
|
400
|
+
label: 'Untaxed',
|
|
401
|
+
help: 'The line’s amount before taxes, after the discount.',
|
|
402
|
+
...lineAmounts,
|
|
403
|
+
}),
|
|
404
|
+
taxAmount: f.decimal({
|
|
405
|
+
scale: 2,
|
|
406
|
+
store: true,
|
|
407
|
+
label: 'Tax',
|
|
408
|
+
help: 'The taxes on this line, after the discount.',
|
|
409
|
+
...lineAmounts,
|
|
410
|
+
}),
|
|
368
411
|
},
|
|
369
412
|
});
|
|
370
413
|
export const PosOrderPayment = defineModel('pos.order.payment', {
|
|
@@ -380,6 +423,7 @@ export const PosOrderPayment = defineModel('pos.order.payment', {
|
|
|
380
423
|
/** The method's kind, kept on the payment so a session's cash adds up without a second hop. */
|
|
381
424
|
kind: f.selection({ cash: 'Cash', card: 'Card', mobile: 'Mobile money', transfer: 'Bank transfer' }, {
|
|
382
425
|
store: true,
|
|
426
|
+
help: 'The kind of the payment’s method, copied from the method.',
|
|
383
427
|
...compute('pos.order.payment', 'kind', ['method.kind'], (payments) => {
|
|
384
428
|
for (const p of payments)
|
|
385
429
|
p.kind = p.method.kind;
|
package/dist/pos/routes.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { mailerFromEnv } from '../mail/index.js';
|
|
14
14
|
import { messengerFromEnv } from '../notify/index.js';
|
|
15
|
+
import { priceFor } from '../product/index.js';
|
|
15
16
|
import { documentFields, renderDocument } from '../reporting/index.js';
|
|
16
17
|
import { HttpProblem, publicApiModels } from '../server/index.js';
|
|
17
18
|
import { orm } from '../server/orm.js';
|
|
@@ -28,6 +29,31 @@ export function registerCounterRoutes(context, options = {}) {
|
|
|
28
29
|
const messenger = 'messenger' in options ? options.messenger : messengerFromEnv();
|
|
29
30
|
const models = publicApiModels(context.registry);
|
|
30
31
|
const fields = documentFields(models);
|
|
32
|
+
/** The receipt template of a sale: its shop's (`pos.shop.receiptTemplate()`), as the cashier may read it. */
|
|
33
|
+
const receiptTemplateOf = async (env, id) => {
|
|
34
|
+
const [order] = await env
|
|
35
|
+
.model('pos.order')
|
|
36
|
+
.browse([id])
|
|
37
|
+
.load({ session: ['shop'] });
|
|
38
|
+
const shop = order?.session?.shop?.id;
|
|
39
|
+
const keys = shop === undefined
|
|
40
|
+
? new Map()
|
|
41
|
+
: await env.model('pos.shop').browse([shop]).receiptTemplate();
|
|
42
|
+
const key = (shop === undefined ? undefined : keys.get(shop)) ?? 'pos.receipt';
|
|
43
|
+
const find = async (k) => (await (await env.model('report.template').search({ where: { key: k }, limit: 1 })).load([])).read(['id', 'name', 'layout', 'scope'])[0];
|
|
44
|
+
const template = (await find(key)) ?? (await find('pos.receipt'));
|
|
45
|
+
if (template === undefined)
|
|
46
|
+
throw new HttpProblem(409, 'no-template', 'No receipt template', 'Run the apps\u2019 defaults.');
|
|
47
|
+
return template;
|
|
48
|
+
};
|
|
49
|
+
// `GET /api/v1/counter/orders/:id/receipt-template`: the template its receipt prints with (the shop decides).
|
|
50
|
+
app.get('/api/v1/counter/orders/:id/receipt-template', async (request) => {
|
|
51
|
+
const id = idOf(request.params.id, 'id');
|
|
52
|
+
return request.env(async (raw) => {
|
|
53
|
+
const template = await receiptTemplateOf(raw, id);
|
|
54
|
+
return { id: template['id'], name: template['name'] };
|
|
55
|
+
});
|
|
56
|
+
});
|
|
31
57
|
// `POST /api/v1/counter/orders/:id/receipt` `{ email?, phone? }`: the receipt sent — the document by email,
|
|
32
58
|
// a summary by text; what was sent is said back.
|
|
33
59
|
app.post('/api/v1/counter/orders/:id/receipt', async (request) => {
|
|
@@ -47,9 +73,7 @@ export function registerCounterRoutes(context, options = {}) {
|
|
|
47
73
|
if (email !== '') {
|
|
48
74
|
if (mailer === undefined)
|
|
49
75
|
throw new HttpProblem(409, 'no-mailer', 'No email set up', 'Set SMTP_URL to send receipts by email.');
|
|
50
|
-
const
|
|
51
|
-
if (template === undefined)
|
|
52
|
-
throw new HttpProblem(409, 'no-template', 'No receipt template', 'Run the apps\u2019 defaults.');
|
|
76
|
+
const template = await receiptTemplateOf(env, id);
|
|
53
77
|
const rendered = await renderDocument(env, model, template, fields, { ids: [id] }, 'html');
|
|
54
78
|
await mailer.send({
|
|
55
79
|
to: email,
|
|
@@ -70,29 +94,49 @@ export function registerCounterRoutes(context, options = {}) {
|
|
|
70
94
|
});
|
|
71
95
|
app.get('/api/v1/counter/shops', async (request) => request.env(async (raw) => {
|
|
72
96
|
const env = raw;
|
|
73
|
-
const shops = await (await env.model('pos.shop').search({})).load({
|
|
97
|
+
const shops = await (await env.model('pos.shop').search({})).load({
|
|
98
|
+
methods: true,
|
|
99
|
+
pricelist: true,
|
|
100
|
+
});
|
|
74
101
|
return {
|
|
75
102
|
shops: shops.map((s) => ({
|
|
76
103
|
id: s.id,
|
|
77
104
|
name: s.name,
|
|
78
105
|
pricesIncludeTax: s.pricesIncludeTax,
|
|
79
106
|
receiptFooter: s.receiptFooter,
|
|
107
|
+
pricelist: s.pricelist?.id ?? null,
|
|
80
108
|
methods: [...s.methods].map((m) => ({ id: m.id, name: m.name, kind: m.kind })),
|
|
81
109
|
})),
|
|
82
110
|
};
|
|
83
111
|
}));
|
|
112
|
+
// `GET /api/v1/counter/catalogue?shop=`: the products on sale, at the shop's prices (its price list).
|
|
84
113
|
app.get('/api/v1/counter/catalogue', async (request) => request.env(async (raw) => {
|
|
85
114
|
const env = raw;
|
|
115
|
+
const shopId = Number(request.query?.shop);
|
|
116
|
+
const [shop] = Number.isSafeInteger(shopId) && shopId > 0
|
|
117
|
+
? await env
|
|
118
|
+
.model('pos.shop')
|
|
119
|
+
.browse([shopId])
|
|
120
|
+
.load({ pricelist: true })
|
|
121
|
+
: [];
|
|
122
|
+
const list = shop?.pricelist?.id ?? null;
|
|
123
|
+
const today = env.today();
|
|
86
124
|
const products = await (await env
|
|
87
125
|
.model('product.product')
|
|
88
126
|
.search({ where: { saleOk: true }, order: ['name asc'], limit: 2000 })).load({ taxes: true, category: true, uom: true, image: true });
|
|
127
|
+
const prices = new Map();
|
|
128
|
+
if (list !== null)
|
|
129
|
+
for (const p of products)
|
|
130
|
+
prices.set(p.id, (await priceFor(env, list, p.id, '1', today)).price);
|
|
89
131
|
return {
|
|
90
132
|
products: products.map((p) => ({
|
|
91
133
|
id: p.id,
|
|
92
134
|
name: p.name,
|
|
93
135
|
code: p.code,
|
|
94
136
|
barcode: p.barcode,
|
|
95
|
-
price:
|
|
137
|
+
price: (list === null
|
|
138
|
+
? p.listPrice
|
|
139
|
+
: (prices.get(p.id) ?? p.listPrice)).toString(),
|
|
96
140
|
category: p.category?.name ?? null,
|
|
97
141
|
uom: p.uom?.name ?? null,
|
|
98
142
|
image: p.image?.id ?? null,
|
|
@@ -157,9 +201,35 @@ export function registerCounterRoutes(context, options = {}) {
|
|
|
157
201
|
const [current] = await env
|
|
158
202
|
.model('pos.session')
|
|
159
203
|
.browse([session])
|
|
160
|
-
.load({ shop: true });
|
|
204
|
+
.load({ shop: { pricelist: true } });
|
|
161
205
|
if (current === undefined)
|
|
162
206
|
throw new HttpProblem(404, 'missing-record', 'Not found', 'No such session.');
|
|
207
|
+
// The customer's own price list, else the shop's (RFC 0028 §3.1).
|
|
208
|
+
const customer = input.partner === undefined || input.partner === null
|
|
209
|
+
? null
|
|
210
|
+
: idOf(input.partner, 'partner');
|
|
211
|
+
// A customer's price list is Sales' field: read when Sales is installed.
|
|
212
|
+
let own = null;
|
|
213
|
+
if (customer !== null)
|
|
214
|
+
try {
|
|
215
|
+
const partners = env.model('res.partner');
|
|
216
|
+
const [row] = (await partners.browse([customer]).load(['pricelist'])).read([
|
|
217
|
+
'pricelist',
|
|
218
|
+
]);
|
|
219
|
+
own = typeof row?.['pricelist'] === 'number' ? row['pricelist'] : null;
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
own = null; // Sales is not installed: no customer lists
|
|
223
|
+
}
|
|
224
|
+
const list = own ?? current.shop.pricelist?.id ?? null;
|
|
225
|
+
const today = env.today();
|
|
226
|
+
const listed = new Map();
|
|
227
|
+
for (const l of input.lines)
|
|
228
|
+
if (text(l.priceUnit) === '' && list !== null) {
|
|
229
|
+
const quantity = text(l.quantity) || '1';
|
|
230
|
+
listed.set(`${String(l.product)}:${quantity}`, (await priceFor(env, list, idOf(l.product, 'product'), quantity, today))
|
|
231
|
+
.price);
|
|
232
|
+
}
|
|
163
233
|
const products = await env
|
|
164
234
|
.model('product.product')
|
|
165
235
|
.browse(input.lines.map((l) => idOf(l.product, 'product')))
|
|
@@ -183,7 +253,10 @@ export function registerCounterRoutes(context, options = {}) {
|
|
|
183
253
|
product: product.id,
|
|
184
254
|
name: product.name,
|
|
185
255
|
quantity: orm.toDecimal(text(l.quantity) || '1'),
|
|
186
|
-
priceUnit:
|
|
256
|
+
priceUnit: text(l.priceUnit) !== ''
|
|
257
|
+
? orm.toDecimal(text(l.priceUnit))
|
|
258
|
+
: (listed.get(`${String(l.product)}:${text(l.quantity) || '1'}`) ??
|
|
259
|
+
product.listPrice),
|
|
187
260
|
discount: orm.toDecimal(text(l.discount) || '0'),
|
|
188
261
|
taxes: { set: [...product.taxes].map((t) => t.id) },
|
|
189
262
|
};
|
package/dist/pos/web/Register.js
CHANGED
|
@@ -204,11 +204,8 @@ export function Register({ api }) {
|
|
|
204
204
|
});
|
|
205
205
|
const printReceipt = async (sale) => {
|
|
206
206
|
try {
|
|
207
|
-
|
|
208
|
-
const template =
|
|
209
|
-
templates.find((tpl) => tpl.scope === 'record');
|
|
210
|
-
if (template === undefined)
|
|
211
|
-
throw new Error(t('noReceiptTemplate'));
|
|
207
|
+
// The shop's receipt (a Mushak 6.3 receipt where the shop issues them).
|
|
208
|
+
const template = await api.call('GET', `/api/v1/counter/orders/${sale.id}/receipt-template`);
|
|
212
209
|
const file = await api.download(`/api/v1/models/pos.order/documents/${template.id}`, {
|
|
213
210
|
ids: [sale.id],
|
|
214
211
|
});
|
|
@@ -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: af4eb6b5269b81cc
|
|
2
2
|
// Bindings of module `pos_stock`: 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';
|