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
|
@@ -10,6 +10,7 @@ import { productShutro } from '../product/index.js';
|
|
|
10
10
|
import { orm } from '../server/orm.js';
|
|
11
11
|
import { stockShutro } from '../stock/index.js';
|
|
12
12
|
import { defineModel, defineModule, extendModel, f, method, } from './.kosh/bindings.js';
|
|
13
|
+
import { ProductLanded, StockLandedCost, StockLandedCostLine } from './landed.js';
|
|
13
14
|
const zero = orm.toDecimal(0);
|
|
14
15
|
const money = (d) => d.toDecimalPlaces(2);
|
|
15
16
|
/** The accounts this bridge adds to a chart (by code), when the chart has none with that code. */
|
|
@@ -150,6 +151,14 @@ export async function stockAccountsOf(env, company) {
|
|
|
150
151
|
* at `incomingUnitCost` (the product's cost; a bridge may know better, a purchase order's price); outgoing stock at
|
|
151
152
|
* the average cost or, FIFO, from the oldest incoming layers still in stock.
|
|
152
153
|
*/
|
|
154
|
+
/** The unit cost each original move was valued at (its layer's), by move. */
|
|
155
|
+
async function originalCosts(env, moves) {
|
|
156
|
+
const ids = moves.filter((m) => m !== null);
|
|
157
|
+
if (ids.length === 0)
|
|
158
|
+
return new Map();
|
|
159
|
+
const layers = await (await env.model('stock.valuation.layer').search({ where: { move: { in: ids } } })).load({ move: true });
|
|
160
|
+
return new Map(layers.map((l) => [l.move?.id, l.unitCost.abs()]));
|
|
161
|
+
}
|
|
153
162
|
async function valueTransfers(pickings) {
|
|
154
163
|
const env = pickings.env;
|
|
155
164
|
const loaded = await pickings.load({
|
|
@@ -157,7 +166,7 @@ async function valueTransfers(pickings) {
|
|
|
157
166
|
destination: true,
|
|
158
167
|
company: true,
|
|
159
168
|
partner: true,
|
|
160
|
-
moves: { product: { category: true } },
|
|
169
|
+
moves: { product: { category: true }, returnOf: true },
|
|
161
170
|
});
|
|
162
171
|
for (const p of loaded) {
|
|
163
172
|
const incoming = p.source.usage !== 'internal' && p.destination.usage === 'internal';
|
|
@@ -213,7 +222,29 @@ async function valueTransfers(pickings) {
|
|
|
213
222
|
}
|
|
214
223
|
else {
|
|
215
224
|
let left = quantity;
|
|
216
|
-
|
|
225
|
+
// Goods going back to the vendor leave at what they came in at (RFC 0030 §3.2), off their own layer.
|
|
226
|
+
const back = m.returnOf === null
|
|
227
|
+
? null
|
|
228
|
+
: await (await env.model('stock.valuation.layer').search({
|
|
229
|
+
where: { move: m.returnOf.id, quantity: { gt: '0' } },
|
|
230
|
+
limit: 1,
|
|
231
|
+
})).load(['unitCost', 'remainingQty', 'remainingValue']);
|
|
232
|
+
const [layer] = back === null ? [] : [...back];
|
|
233
|
+
if (layer !== undefined) {
|
|
234
|
+
value = money(quantity.times(layer.unitCost));
|
|
235
|
+
left = zero;
|
|
236
|
+
if (fifo && layer.remainingQty.gt(0)) {
|
|
237
|
+
const take = quantity.lt(layer.remainingQty) ? quantity : layer.remainingQty;
|
|
238
|
+
const part = take.eq(layer.remainingQty)
|
|
239
|
+
? layer.remainingValue
|
|
240
|
+
: money(layer.remainingValue.times(take).div(layer.remainingQty));
|
|
241
|
+
await layer.write({
|
|
242
|
+
remainingQty: layer.remainingQty.minus(take),
|
|
243
|
+
remainingValue: layer.remainingValue.minus(part),
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (fifo && left.gt(0)) {
|
|
217
248
|
const open = await (await env.model('stock.valuation.layer').search({
|
|
218
249
|
where: { company: p.company.id, product: product.id, remainingQty: { gt: '0' } },
|
|
219
250
|
order: ['id asc'],
|
|
@@ -294,6 +325,28 @@ async function valueTransfers(pickings) {
|
|
|
294
325
|
}
|
|
295
326
|
}
|
|
296
327
|
export const MoveCost = extendModel('stock.move', {
|
|
328
|
+
overrides: {
|
|
329
|
+
// The ledger's values: each line's valuation layers, when this person may read the valuation.
|
|
330
|
+
moveValues: async function (next) {
|
|
331
|
+
const out = await next();
|
|
332
|
+
const moves = this;
|
|
333
|
+
if (!moves.env.access.can('stock.valuation.layer', 'read'))
|
|
334
|
+
return out;
|
|
335
|
+
const layers = await (await moves.env
|
|
336
|
+
.model('stock.valuation.layer')
|
|
337
|
+
.search({ where: { move: { in: [...moves.ids] } }, limit: 50000 })).load({ move: true });
|
|
338
|
+
for (const l of layers) {
|
|
339
|
+
const id = l.move?.id;
|
|
340
|
+
if (id === undefined)
|
|
341
|
+
continue;
|
|
342
|
+
out.set(id, orm
|
|
343
|
+
.toDecimal(out.get(id) ?? '0')
|
|
344
|
+
.plus(l.value)
|
|
345
|
+
.toString());
|
|
346
|
+
}
|
|
347
|
+
return out;
|
|
348
|
+
},
|
|
349
|
+
},
|
|
297
350
|
methods: {
|
|
298
351
|
/**
|
|
299
352
|
* What each of these lines' stock costs when it comes in, by line, in the product's unit, as a decimal string:
|
|
@@ -301,8 +354,13 @@ export const MoveCost = extendModel('stock.move', {
|
|
|
301
354
|
*/
|
|
302
355
|
incomingUnitCost: method('stock.move', async function () {
|
|
303
356
|
const out = new Map();
|
|
304
|
-
|
|
305
|
-
|
|
357
|
+
const moves = await this.load({ product: true, returnOf: true });
|
|
358
|
+
// A customer's return comes back at what it went out at (RFC 0030 §3.2).
|
|
359
|
+
const original = await originalCosts(this.env, moves.map((m) => m.returnOf?.id ?? null));
|
|
360
|
+
for (const m of moves) {
|
|
361
|
+
const cost = m.returnOf === null ? undefined : original.get(m.returnOf.id);
|
|
362
|
+
out.set(m.id, (cost ?? m.product.standardPrice).toString());
|
|
363
|
+
}
|
|
306
364
|
return out;
|
|
307
365
|
}),
|
|
308
366
|
},
|
|
@@ -313,12 +371,82 @@ export const PickingValued = extendModel('stock.picking', {
|
|
|
313
371
|
validated: async function (next) {
|
|
314
372
|
await next();
|
|
315
373
|
await valueTransfers(this);
|
|
374
|
+
await transportBills(this);
|
|
316
375
|
},
|
|
317
376
|
},
|
|
318
377
|
});
|
|
378
|
+
/**
|
|
379
|
+
* The transport of validated transfers in the books (RFC 0032 §3.3), as drafts an accountant completes (the account)
|
|
380
|
+
* and posts: the transport vendor's freight bill — the freight with its additions and deductions — and, for a receipt
|
|
381
|
+
* whose supplier bears a deduction, a vendor refund to the supplier. Each is made once, when the transfer is validated.
|
|
382
|
+
*/
|
|
383
|
+
async function transportBills(pickings) {
|
|
384
|
+
const env = pickings.env;
|
|
385
|
+
for (const p of await pickings.load({
|
|
386
|
+
charges: true,
|
|
387
|
+
partner: true,
|
|
388
|
+
transporter: true,
|
|
389
|
+
company: true,
|
|
390
|
+
})) {
|
|
391
|
+
const journal = (await env.model('account.journal').search({
|
|
392
|
+
where: { company: p.company.id, type: 'purchase' },
|
|
393
|
+
limit: 1,
|
|
394
|
+
})).ids[0];
|
|
395
|
+
if (journal === undefined)
|
|
396
|
+
continue; // no chart yet
|
|
397
|
+
const [company] = await env.model('res.company').browse([p.company.id]).load({});
|
|
398
|
+
const draft = async (kind, partner, lines) => env.model('account.move').create([
|
|
399
|
+
{
|
|
400
|
+
kind,
|
|
401
|
+
journal,
|
|
402
|
+
partner,
|
|
403
|
+
company: p.company.id,
|
|
404
|
+
currency: company?.currency.id,
|
|
405
|
+
date: env.today(),
|
|
406
|
+
invoiceOrigin: p.name,
|
|
407
|
+
ref: p.origin ? `${p.name} (${p.origin})` : p.name,
|
|
408
|
+
lines: {
|
|
409
|
+
create: lines.map((l) => ({
|
|
410
|
+
lineKind: 'product',
|
|
411
|
+
name: l.name,
|
|
412
|
+
quantity: '1',
|
|
413
|
+
priceUnit: l.amount,
|
|
414
|
+
debit: '0',
|
|
415
|
+
credit: '0',
|
|
416
|
+
})),
|
|
417
|
+
},
|
|
418
|
+
},
|
|
419
|
+
]);
|
|
420
|
+
if (p.transporter && p.freightAmount?.gt(0)) {
|
|
421
|
+
const lines = [{ name: `Freight ${p.name}`, amount: p.freightAmount }];
|
|
422
|
+
for (const c of p.charges)
|
|
423
|
+
if (c.amount.gt(0))
|
|
424
|
+
lines.push({
|
|
425
|
+
name: `${c.name} (${p.name})`,
|
|
426
|
+
amount: c.kind === 'deduction' ? c.amount.negated() : c.amount,
|
|
427
|
+
});
|
|
428
|
+
await draft('in_invoice', p.transporter.id, lines);
|
|
429
|
+
}
|
|
430
|
+
if (p.kind === 'receipt' &&
|
|
431
|
+
p.deductFromSupplier &&
|
|
432
|
+
p.partner !== null &&
|
|
433
|
+
p.supplierDeduction?.gt(0))
|
|
434
|
+
await draft('in_refund', p.partner.id, [
|
|
435
|
+
{ name: `Deduction on receipt ${p.name}`, amount: p.supplierDeduction },
|
|
436
|
+
]);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
319
439
|
export const stockAccountShutro = defineModule({
|
|
320
440
|
name: 'stock_account',
|
|
321
|
-
version: '0.
|
|
441
|
+
version: '0.2.0',
|
|
442
|
+
sequences: [
|
|
443
|
+
orm.defineSequence({
|
|
444
|
+
code: 'stock.landed.cost',
|
|
445
|
+
prefix: 'LC/{year}/',
|
|
446
|
+
padding: 5,
|
|
447
|
+
reset: 'yearly',
|
|
448
|
+
}),
|
|
449
|
+
],
|
|
322
450
|
depends: [stockShutro, accountingShutro, productShutro],
|
|
323
451
|
groups: [
|
|
324
452
|
orm.defineGroup({
|
|
@@ -327,8 +455,9 @@ export const stockAccountShutro = defineModule({
|
|
|
327
455
|
implies: ['stock.user'],
|
|
328
456
|
}),
|
|
329
457
|
],
|
|
330
|
-
models: [StockValuationLayer],
|
|
458
|
+
models: [StockValuationLayer, StockLandedCost, StockLandedCostLine],
|
|
331
459
|
extensions: [
|
|
460
|
+
ProductLanded,
|
|
332
461
|
CategoryValuation,
|
|
333
462
|
ProductValuation,
|
|
334
463
|
CompanyStockAccounts,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* On a draft landed cost (RFC 0030 §3.3): each receipt line's share of the costs, what goes to the stock on hand and
|
|
3
|
+
* what to the cost of goods sold, before posting. The server splits; this shows it, or why it cannot yet.
|
|
4
|
+
*/
|
|
5
|
+
import { type NodeComponentProps } from '../../ui/index.js';
|
|
6
|
+
import { type ReactElement } from 'react';
|
|
7
|
+
export declare function LandedPreview({ record, api, version }: NodeComponentProps): ReactElement | null;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* On a draft landed cost (RFC 0030 §3.3): each receipt line's share of the costs, what goes to the stock on hand and
|
|
4
|
+
* what to the cost of goods sold, before posting. The server splits; this shows it, or why it cannot yet.
|
|
5
|
+
*/
|
|
6
|
+
import { ApiError } from '../../ui/index.js';
|
|
7
|
+
import { useQuery } from '@tanstack/react-query';
|
|
8
|
+
import { useId } from 'react';
|
|
9
|
+
import { useTranslation } from 'react-i18next';
|
|
10
|
+
export function LandedPreview({ record, api, version }) {
|
|
11
|
+
const { t } = useTranslation('stock_account');
|
|
12
|
+
const id = useId();
|
|
13
|
+
const draft = record !== null && record['state'] === 'draft';
|
|
14
|
+
const preview = useQuery({
|
|
15
|
+
queryKey: ['stock_account', 'landed-preview', record?.id, version],
|
|
16
|
+
queryFn: () => api.call('GET', `/api/v1/stockroom/landed-costs/${record?.id}/preview`),
|
|
17
|
+
enabled: draft,
|
|
18
|
+
retry: false,
|
|
19
|
+
});
|
|
20
|
+
if (!draft)
|
|
21
|
+
return null;
|
|
22
|
+
return (_jsxs("section", { "aria-labelledby": `${id}-title`, className: "grid gap-2 rounded-md border p-3 text-sm", children: [_jsx("h3", { id: `${id}-title`, className: "font-medium", children: t('landed.title') }), preview.error !== null ? (_jsx("p", { className: "text-muted-foreground", children: preview.error instanceof ApiError ? preview.error.message : String(preview.error) })) : (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { className: "text-muted-foreground", children: _jsxs("tr", { children: [_jsx("th", { className: "py-1 text-start font-medium", children: t('landed.receipt') }), _jsx("th", { className: "py-1 text-start font-medium", children: t('landed.product') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.quantity') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.value') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.added') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.toStock') }), _jsx("th", { className: "py-1 text-end font-medium", children: t('landed.toCogs') })] }) }), _jsx("tbody", { children: (preview.data?.lines ?? []).map((l) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "py-1", children: l.picking }), _jsx("td", { className: "py-1", children: l.product }), _jsx("td", { className: "py-1 text-end tabular-nums", children: l.quantity }), _jsx("td", { className: "py-1 text-end tabular-nums", children: l.value }), _jsx("td", { className: "py-1 text-end tabular-nums font-medium", children: l.added }), _jsx("td", { className: "py-1 text-end tabular-nums", children: l.toStock }), _jsx("td", { className: "py-1 text-end tabular-nums", children: l.toCogs })] }, l.move))) })] }) }))] }));
|
|
23
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* The web contribution of `shutro-erp/stock_account`: the landed cost split preview (RFC 0030 §3.3).
|
|
4
|
+
*/
|
|
5
|
+
import { type Registry } from '../../ui/index.js';
|
|
6
|
+
import type { i18n } from 'i18next';
|
|
7
|
+
import { messages } from './messages.js';
|
|
8
|
+
export { LandedPreview } from './LandedPreview.js';
|
|
9
|
+
/** Registers the component (and the messages in `i18n`, when given). */
|
|
10
|
+
export declare function registerStockAccountWeb(registry: Registry, i18n?: i18n): Registry;
|
|
11
|
+
export { messages as stockAccountMessages };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* The web contribution of `shutro-erp/stock_account`: the landed cost split preview (RFC 0030 §3.3).
|
|
4
|
+
*/
|
|
5
|
+
import { addMessages } from '../../ui/index.js';
|
|
6
|
+
import { LandedPreview } from './LandedPreview.js';
|
|
7
|
+
import { messages } from './messages.js';
|
|
8
|
+
export { LandedPreview } from './LandedPreview.js';
|
|
9
|
+
/** Registers the component (and the messages in `i18n`, when given). */
|
|
10
|
+
export function registerStockAccountWeb(registry, i18n) {
|
|
11
|
+
registry.registerComponent('stock_account.LandedPreview', LandedPreview);
|
|
12
|
+
if (i18n !== undefined)
|
|
13
|
+
addMessages(i18n, 'stock_account', messages);
|
|
14
|
+
return registry;
|
|
15
|
+
}
|
|
16
|
+
export { messages as stockAccountMessages };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Messages of the stock valuation components (namespace `stock_account`), in English and Bangla. */
|
|
2
|
+
export const messages = {
|
|
3
|
+
en: {
|
|
4
|
+
landed: {
|
|
5
|
+
title: 'How the costs are split',
|
|
6
|
+
receipt: 'Receipt',
|
|
7
|
+
product: 'Product',
|
|
8
|
+
quantity: 'Quantity',
|
|
9
|
+
value: 'Value',
|
|
10
|
+
added: 'Added',
|
|
11
|
+
toStock: 'To stock',
|
|
12
|
+
toCogs: 'To cost of sales',
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
bn: {
|
|
16
|
+
landed: {
|
|
17
|
+
title: 'খরচ কীভাবে ভাগ হয়',
|
|
18
|
+
receipt: 'রিসিট',
|
|
19
|
+
product: 'পণ্য',
|
|
20
|
+
quantity: 'পরিমাণ',
|
|
21
|
+
value: 'মূল্য',
|
|
22
|
+
added: 'যোগ',
|
|
23
|
+
toStock: 'স্টকে',
|
|
24
|
+
toCogs: 'বিক্রয় খরচে',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** Bangla for the module's labels, keyed by their English text (RFC 0023 §3.1; `pnpm i18n:extract`). */
|
|
2
|
+
export const bn = {
|
|
3
|
+
'About (id)': 'সম্পর্কিত (আইডি)',
|
|
4
|
+
'About (model)': 'সম্পর্কিত (মডেল)',
|
|
5
|
+
Active: 'সক্রিয়',
|
|
6
|
+
Amber: 'অ্যাম্বার',
|
|
7
|
+
Blue: 'নীল',
|
|
8
|
+
Checklist: 'চেকলিস্ট',
|
|
9
|
+
'Checklist › Done': 'চেকলিস্ট › সম্পন্ন',
|
|
10
|
+
'Checklist › Step': 'চেকলিস্ট › ধাপ',
|
|
11
|
+
'Checklist done (%)': 'চেকলিস্ট সম্পন্ন (%)',
|
|
12
|
+
'Checklist item': 'চেকলিস্টের বিষয়',
|
|
13
|
+
Color: 'রং',
|
|
14
|
+
'Created At': 'তৈরির সময়',
|
|
15
|
+
'Created By': 'তৈরি করেছেন',
|
|
16
|
+
'Display Name': 'প্রদর্শিত নাম',
|
|
17
|
+
Done: 'সম্পন্ন',
|
|
18
|
+
'Done this month': 'এ মাসে সম্পন্ন',
|
|
19
|
+
Due: 'নির্ধারিত তারিখ',
|
|
20
|
+
Focus: 'ফোকাস',
|
|
21
|
+
'Focus user': 'ফোকাস ব্যবহারকারী',
|
|
22
|
+
For: 'যার জন্য',
|
|
23
|
+
Green: 'সবুজ',
|
|
24
|
+
High: 'উচ্চ',
|
|
25
|
+
'How pressing it is: normal, high or urgent.': 'এটি কতটা জরুরি: সাধারণ, উচ্চ বা অতি জরুরি।',
|
|
26
|
+
ID: 'আইডি',
|
|
27
|
+
List: 'তালিকা',
|
|
28
|
+
Lists: 'তালিকা',
|
|
29
|
+
Mine: 'আমার',
|
|
30
|
+
Name: 'নাম',
|
|
31
|
+
Normal: 'সাধারণ',
|
|
32
|
+
Notes: 'নোট',
|
|
33
|
+
'Open by list': 'তালিকা অনুযায়ী খোলা',
|
|
34
|
+
'Open by priority': 'অগ্রাধিকার অনুযায়ী খোলা',
|
|
35
|
+
'Open to-dos': 'খোলা করণীয়',
|
|
36
|
+
'Open until you mark it done; a done to-do can be reopened.': 'সম্পন্ন চিহ্নিত না করা পর্যন্ত খোলা থাকে; সম্পন্ন করণীয় আবার খোলা যায়।',
|
|
37
|
+
Overview: 'সারসংক্ষেপ',
|
|
38
|
+
Owner: 'মালিক',
|
|
39
|
+
'Page {{page}} of {{pages}}': 'পৃষ্ঠা {{page}} / {{pages}}',
|
|
40
|
+
Priority: 'অগ্রাধিকার',
|
|
41
|
+
Productivity: 'উৎপাদনশীলতা',
|
|
42
|
+
'Progress %': 'অগ্রগতি %',
|
|
43
|
+
Reopen: 'আবার খুলুন',
|
|
44
|
+
Rose: 'গোলাপি',
|
|
45
|
+
Sequence: 'ক্রম',
|
|
46
|
+
'Shared lists': 'শেয়ার করা তালিকা',
|
|
47
|
+
'Shared with': 'যাদের সাথে শেয়ার করা',
|
|
48
|
+
Slate: 'স্লেট',
|
|
49
|
+
State: 'অবস্থা',
|
|
50
|
+
Status: 'অবস্থা',
|
|
51
|
+
Step: 'ধাপ',
|
|
52
|
+
Task: 'কাজ',
|
|
53
|
+
Tasks: 'কাজ',
|
|
54
|
+
'The colour that marks this list and its to-dos.': 'যে রং দিয়ে এই তালিকা ও এর করণীয়গুলো চিহ্নিত হয়।',
|
|
55
|
+
'To do': 'করণীয়',
|
|
56
|
+
'To-do': 'করণীয়',
|
|
57
|
+
'To-do done': 'করণীয় সম্পন্ন',
|
|
58
|
+
'To-dos': 'করণীয়',
|
|
59
|
+
'Updated At': 'হালনাগাদের সময়',
|
|
60
|
+
'Updated By': 'হালনাগাদ করেছেন',
|
|
61
|
+
Urgent: 'জরুরি',
|
|
62
|
+
'Urgent or high': 'জরুরি বা উচ্চ',
|
|
63
|
+
'User (own to-dos and shared lists)': 'ব্যবহারকারী (নিজের করণীয় ও শেয়ার করা তালিকা)',
|
|
64
|
+
Violet: 'বেগুনি',
|
|
65
|
+
'Your to-dos and shared lists, with checklists and due dates': 'আপনার করণীয় ও শেয়ার করা তালিকা, চেকলিস্ট ও নির্ধারিত তারিখসহ',
|
|
66
|
+
};
|
package/dist/todo/index.js
CHANGED
|
@@ -25,6 +25,65 @@ export const todo = defineModule({
|
|
|
25
25
|
category: 'Productivity',
|
|
26
26
|
summary: 'Your to-dos and shared lists, with checklists and due dates',
|
|
27
27
|
},
|
|
28
|
+
documents: [
|
|
29
|
+
{
|
|
30
|
+
key: 'todo',
|
|
31
|
+
name: 'To-do',
|
|
32
|
+
model: 'todo.task',
|
|
33
|
+
layout: {
|
|
34
|
+
paper: 'A4',
|
|
35
|
+
header: '{{company.name}}',
|
|
36
|
+
footer: 'Page {{page}} of {{pages}}',
|
|
37
|
+
blocks: [
|
|
38
|
+
{ kind: 'heading', id: 'title', text: '{{name}}', level: 1 },
|
|
39
|
+
{
|
|
40
|
+
kind: 'fields',
|
|
41
|
+
id: 'task',
|
|
42
|
+
items: [
|
|
43
|
+
{ label: 'List', bind: 'list.name' },
|
|
44
|
+
{ label: 'Owner', bind: 'owner.name' },
|
|
45
|
+
{ label: 'Due', bind: 'dueDate' },
|
|
46
|
+
{ label: 'Priority', bind: 'priority' },
|
|
47
|
+
{ label: 'Progress %', bind: 'progress' },
|
|
48
|
+
{ label: 'Status', bind: 'state' },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
{ kind: 'text', id: 'note', text: '{{note}}' },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
importTemplates: [
|
|
57
|
+
{
|
|
58
|
+
key: 'todo_list',
|
|
59
|
+
model: 'todo.list',
|
|
60
|
+
label: 'List',
|
|
61
|
+
columns: [
|
|
62
|
+
{ header: 'Name', field: 'name' },
|
|
63
|
+
{ header: 'Owner', field: 'owner' },
|
|
64
|
+
{ header: 'Shared with', field: 'members' },
|
|
65
|
+
{ header: 'Color', field: 'color' },
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
key: 'todo_task',
|
|
70
|
+
model: 'todo.task',
|
|
71
|
+
label: 'To-do',
|
|
72
|
+
columns: [
|
|
73
|
+
{ header: 'To-do', field: 'name' },
|
|
74
|
+
{ header: 'List', field: 'list' },
|
|
75
|
+
{ header: 'For', field: 'owner' },
|
|
76
|
+
{ header: 'Due', field: 'dueDate' },
|
|
77
|
+
{ header: 'Priority', field: 'priority' },
|
|
78
|
+
{ header: 'Notes', field: 'note' },
|
|
79
|
+
{ header: 'Checklist › Step', field: 'items.name' },
|
|
80
|
+
{ header: 'Checklist › Done', field: 'items.done' },
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
events: [{ topic: 'todo.task.done', model: 'todo.task', label: 'To-do done' }],
|
|
85
|
+
// Bangla for the labels it serves (RFC 0023 §3.1; `pnpm i18n:extract`).
|
|
86
|
+
i18n: { bn: () => import('./i18n/bn.js') },
|
|
28
87
|
accessLevels: {
|
|
29
88
|
user: { label: 'User (own to-dos and shared lists)', groups: ['todo.user'] },
|
|
30
89
|
},
|
package/dist/todo/module.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The data layer of Focus (RFC 0021): to-do tasks for the people who use them — their own, or on a list shared with
|
|
3
|
+
* colleagues — with a due date, a priority, a checklist whose progress shows on the task, and an optional link to any
|
|
4
|
+
* record of another app. People see their own tasks and those of the lists they belong to; nobody else's.
|
|
5
|
+
*/
|
|
1
6
|
/** A shared list: its owner and members see and work on its tasks. */
|
|
2
7
|
export declare const TodoList: import("../server/orm.js").Model<"todo.list", {
|
|
3
8
|
readonly id: import("../server/orm.js").IdField<"todo.list">;
|
package/dist/todo/module.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* record of another app. People see their own tasks and those of the lists they belong to; nobody else's.
|
|
5
5
|
*/
|
|
6
6
|
import { messagingShutro } from '../messaging/index.js';
|
|
7
|
+
import { emitting } from '../server/index.js';
|
|
7
8
|
import { orm } from '../server/orm.js';
|
|
8
9
|
import { compute, defineModel, defineModule, f } from './.kosh/bindings.js';
|
|
9
10
|
const WRITE = ['read', 'write', 'create', 'unlink'];
|
|
@@ -33,7 +34,7 @@ export const TodoList = defineModel('todo.list', {
|
|
|
33
34
|
amber: 'Amber',
|
|
34
35
|
rose: 'Rose',
|
|
35
36
|
violet: 'Violet',
|
|
36
|
-
}, { required: true, default: 'blue' }),
|
|
37
|
+
}, { required: true, default: 'blue', help: 'The colour that marks this list and its to-dos.' }),
|
|
37
38
|
sequence: f.integer({ required: true, default: 10 }),
|
|
38
39
|
tasks: f.one2many('todo.task', 'list'),
|
|
39
40
|
},
|
|
@@ -63,12 +64,13 @@ export const TodoTask = defineModel('todo.task', {
|
|
|
63
64
|
label: 'For',
|
|
64
65
|
}),
|
|
65
66
|
dueDate: f.date({ label: 'Due' }),
|
|
66
|
-
priority: f.selection({ normal: 'Normal', high: 'High', urgent: 'Urgent' }, { required: true, default: 'normal' }),
|
|
67
|
+
priority: f.selection({ normal: 'Normal', high: 'High', urgent: 'Urgent' }, { required: true, default: 'normal', help: 'How pressing it is: normal, high or urgent.' }),
|
|
67
68
|
state: f.state({
|
|
68
69
|
states: { open: 'To do', done: 'Done' },
|
|
69
70
|
initial: 'open',
|
|
71
|
+
help: 'Open until you mark it done; a done to-do can be reopened.',
|
|
70
72
|
transitions: {
|
|
71
|
-
complete: { from: ['open'], to: 'done' },
|
|
73
|
+
complete: emitting('todo.task.done', { from: ['open'], to: 'done' }),
|
|
72
74
|
reopen: { from: ['done'], to: 'open' },
|
|
73
75
|
},
|
|
74
76
|
}),
|
|
@@ -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: 74b93d9906549950
|
|
2
2
|
// Bindings of module `trade_finance`: import the definition API from here to get types scoped to what it can see.
|
|
3
3
|
export { defineModel, defineModule, extendModel, f, replace } from '../../server/orm.js';
|
|
4
4
|
import { definitions } from '../../server/orm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash:
|
|
1
|
+
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 74b93d9906549950
|
|
2
2
|
// Schema view of module `trade_finance` (RFC 0002 §7.7): the models it owns or depends on, with the extensions it can see.
|
|
3
3
|
import type { F } from '../../server/orm.js';
|
|
4
4
|
|
|
@@ -623,6 +623,7 @@ export interface ResPartner {
|
|
|
623
623
|
readonly parent: F.Many2one<'res.partner'>;
|
|
624
624
|
readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
|
|
625
625
|
readonly email: F.Char;
|
|
626
|
+
readonly lang: F.Selection<'en' | 'bn'>;
|
|
626
627
|
readonly phone: F.Char;
|
|
627
628
|
readonly mobile: F.Char;
|
|
628
629
|
readonly website: F.Char;
|