shutro-erp 0.3.4 → 0.3.5
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_portal/.kosh/bindings.js +1 -1
- package/dist/account_portal/.kosh/schema.d.ts +54 -3
- package/dist/account_portal/module.d.ts +359 -6
- package/dist/accounting/.kosh/bindings.js +1 -1
- package/dist/accounting/.kosh/schema.d.ts +54 -3
- package/dist/accounting/index.js +214 -2
- package/dist/accounting/module.d.ts +217 -5
- package/dist/accounting/module.js +23 -2
- package/dist/calendar/.kosh/bindings.d.ts +22 -0
- package/dist/calendar/.kosh/bindings.js +15 -0
- package/dist/calendar/.kosh/schema.d.ts +795 -0
- package/dist/calendar/demo.d.ts +6 -0
- package/dist/calendar/demo.js +24 -0
- package/dist/calendar/index.d.ts +3 -0
- package/dist/calendar/index.js +291 -0
- package/dist/calendar/module.d.ts +1705 -0
- package/dist/calendar/module.js +180 -0
- package/dist/cli/init.js +48 -0
- package/dist/cli/templates.d.ts +1 -1
- package/dist/cli/templates.js +137 -0
- package/dist/contacts/.kosh/bindings.js +1 -1
- package/dist/contacts/.kosh/schema.d.ts +78 -3
- package/dist/contacts/demo.js +30 -1
- package/dist/contacts/index.d.ts +1 -1
- package/dist/contacts/index.js +155 -9
- package/dist/contacts/module.d.ts +338 -2
- package/dist/contacts/module.js +82 -5
- package/dist/crm/.kosh/bindings.d.ts +22 -0
- package/dist/crm/.kosh/bindings.js +15 -0
- package/dist/crm/.kosh/schema.d.ts +799 -0
- package/dist/crm/demo.d.ts +6 -0
- package/dist/crm/demo.js +45 -0
- package/dist/crm/index.d.ts +3 -0
- package/dist/crm/index.js +361 -0
- package/dist/crm/module.d.ts +1843 -0
- package/dist/crm/module.js +207 -0
- package/dist/event/.kosh/bindings.d.ts +22 -0
- package/dist/event/.kosh/bindings.js +15 -0
- package/dist/event/.kosh/schema.d.ts +843 -0
- package/dist/event/demo.d.ts +6 -0
- package/dist/event/demo.js +65 -0
- package/dist/event/index.d.ts +14 -0
- package/dist/event/index.js +333 -0
- package/dist/event/mails.d.ts +15 -0
- package/dist/event/mails.js +112 -0
- package/dist/event/module.d.ts +2800 -0
- package/dist/event/module.js +323 -0
- package/dist/event/web/CheckInBox.d.ts +9 -0
- package/dist/event/web/CheckInBox.js +87 -0
- package/dist/event/web/index.d.ts +11 -0
- package/dist/event/web/index.js +16 -0
- package/dist/event/web/messages.d.ts +2 -0
- package/dist/event/web/messages.js +23 -0
- package/dist/event_account/.kosh/bindings.d.ts +22 -0
- package/dist/event_account/.kosh/bindings.js +15 -0
- package/dist/event_account/.kosh/schema.d.ts +1639 -0
- package/dist/event_account/index.d.ts +3 -0
- package/dist/event_account/index.js +28 -0
- package/dist/event_account/module.d.ts +6968 -0
- package/dist/event_account/module.js +90 -0
- package/dist/hr/.kosh/bindings.d.ts +22 -0
- package/dist/hr/.kosh/bindings.js +15 -0
- package/dist/hr/.kosh/schema.d.ts +878 -0
- package/dist/hr/demo.d.ts +6 -0
- package/dist/hr/demo.js +60 -0
- package/dist/hr/index.d.ts +3 -0
- package/dist/hr/index.js +483 -0
- package/dist/hr/module.d.ts +2611 -0
- package/dist/hr/module.js +350 -0
- package/dist/l10n_bd/.kosh/bindings.js +1 -1
- package/dist/l10n_bd/.kosh/schema.d.ts +54 -3
- package/dist/l10n_bd/module.d.ts +359 -6
- package/dist/l10n_in/.kosh/bindings.js +1 -1
- package/dist/l10n_in/.kosh/schema.d.ts +54 -3
- package/dist/l10n_in/module.d.ts +380 -7
- package/dist/maintenance/.kosh/bindings.d.ts +22 -0
- package/dist/maintenance/.kosh/bindings.js +15 -0
- package/dist/maintenance/.kosh/schema.d.ts +911 -0
- package/dist/maintenance/demo.d.ts +6 -0
- package/dist/maintenance/demo.js +60 -0
- package/dist/maintenance/index.d.ts +3 -0
- package/dist/maintenance/index.js +422 -0
- package/dist/maintenance/module.d.ts +3545 -0
- package/dist/maintenance/module.js +446 -0
- package/dist/maintenance_stock/.kosh/bindings.d.ts +22 -0
- package/dist/maintenance_stock/.kosh/bindings.js +15 -0
- package/dist/maintenance_stock/.kosh/schema.d.ts +1371 -0
- package/dist/maintenance_stock/index.d.ts +9 -0
- package/dist/maintenance_stock/index.js +52 -0
- package/dist/maintenance_stock/module.d.ts +6953 -0
- package/dist/maintenance_stock/module.js +192 -0
- package/dist/modules-sdk/index.d.ts +1 -1
- package/dist/modules-sdk/manifest.d.ts +70 -0
- package/dist/modules-sdk/manifest.js +35 -1
- package/dist/mrp/.kosh/bindings.d.ts +22 -0
- package/dist/mrp/.kosh/bindings.js +15 -0
- package/dist/mrp/.kosh/schema.d.ts +1378 -0
- package/dist/mrp/demo.d.ts +7 -0
- package/dist/mrp/demo.js +42 -0
- package/dist/mrp/index.d.ts +3 -0
- package/dist/mrp/index.js +392 -0
- package/dist/mrp/module.d.ts +8608 -0
- package/dist/mrp/module.js +695 -0
- package/dist/mrp_account/.kosh/bindings.d.ts +22 -0
- package/dist/mrp_account/.kosh/bindings.js +15 -0
- package/dist/mrp_account/.kosh/schema.d.ts +2106 -0
- package/dist/mrp_account/index.d.ts +3 -0
- package/dist/mrp_account/index.js +22 -0
- package/dist/mrp_account/module.d.ts +20840 -0
- package/dist/mrp_account/module.js +123 -0
- package/dist/payment/.kosh/bindings.js +1 -1
- package/dist/payment/.kosh/schema.d.ts +54 -3
- package/dist/payment/module.d.ts +359 -6
- package/dist/portal/.kosh/bindings.js +1 -1
- package/dist/portal/.kosh/schema.d.ts +78 -3
- package/dist/portal/module.d.ts +166 -2
- package/dist/pos/.kosh/bindings.d.ts +22 -0
- package/dist/pos/.kosh/bindings.js +15 -0
- package/dist/pos/.kosh/schema.d.ts +1690 -0
- package/dist/pos/accounting.d.ts +10 -0
- package/dist/pos/accounting.js +149 -0
- package/dist/pos/demo.d.ts +6 -0
- package/dist/pos/demo.js +90 -0
- package/dist/pos/index.d.ts +9 -0
- package/dist/pos/index.js +349 -0
- package/dist/pos/module.d.ts +9636 -0
- package/dist/pos/module.js +423 -0
- package/dist/pos/routes.d.ts +39 -0
- package/dist/pos/routes.js +368 -0
- package/dist/pos/web/Register.d.ts +9 -0
- package/dist/pos/web/Register.js +252 -0
- package/dist/pos/web/index.d.ts +11 -0
- package/dist/pos/web/index.js +16 -0
- package/dist/pos/web/messages.d.ts +2 -0
- package/dist/pos/web/messages.js +87 -0
- package/dist/pos_stock/.kosh/bindings.d.ts +22 -0
- package/dist/pos_stock/.kosh/bindings.js +15 -0
- package/dist/pos_stock/.kosh/schema.d.ts +2015 -0
- package/dist/pos_stock/index.d.ts +9 -0
- package/dist/pos_stock/index.js +35 -0
- package/dist/pos_stock/module.d.ts +11935 -0
- package/dist/pos_stock/module.js +115 -0
- package/dist/product/.kosh/bindings.js +1 -1
- package/dist/product/.kosh/schema.d.ts +51 -1
- package/dist/product/index.js +81 -4
- package/dist/product/module.d.ts +43 -1
- package/dist/product/module.js +9 -2
- package/dist/project/.kosh/bindings.js +1 -1
- package/dist/project/.kosh/schema.d.ts +54 -3
- package/dist/project/index.js +147 -7
- package/dist/project/module.d.ts +210 -2
- package/dist/project/module.js +52 -5
- package/dist/project_portal/.kosh/bindings.js +1 -1
- package/dist/project_portal/.kosh/schema.d.ts +54 -3
- package/dist/project_portal/module.d.ts +353 -4
- package/dist/purchase/.kosh/bindings.js +1 -1
- package/dist/purchase/.kosh/schema.d.ts +54 -3
- package/dist/purchase/index.js +163 -3
- package/dist/purchase/module.d.ts +215 -3
- package/dist/purchase/module.js +21 -3
- package/dist/purchase_account/.kosh/bindings.js +1 -1
- package/dist/purchase_account/.kosh/schema.d.ts +55 -3
- package/dist/purchase_account/index.js +26 -1
- package/dist/purchase_account/module.d.ts +393 -7
- package/dist/purchase_portal/.kosh/bindings.js +1 -1
- package/dist/purchase_portal/.kosh/schema.d.ts +54 -3
- package/dist/purchase_portal/module.d.ts +366 -5
- package/dist/purchase_stock/.kosh/bindings.d.ts +22 -0
- package/dist/purchase_stock/.kosh/bindings.js +15 -0
- package/dist/purchase_stock/.kosh/schema.d.ts +1310 -0
- package/dist/purchase_stock/index.d.ts +7 -0
- package/dist/purchase_stock/index.js +91 -0
- package/dist/purchase_stock/module.d.ts +6763 -0
- package/dist/purchase_stock/module.js +144 -0
- package/dist/purchase_stock_account/.kosh/bindings.d.ts +22 -0
- package/dist/purchase_stock_account/.kosh/bindings.js +15 -0
- package/dist/purchase_stock_account/.kosh/schema.d.ts +1959 -0
- package/dist/purchase_stock_account/index.d.ts +3 -0
- package/dist/purchase_stock_account/index.js +24 -0
- package/dist/purchase_stock_account/module.d.ts +35366 -0
- package/dist/purchase_stock_account/module.js +162 -0
- package/dist/recruitment/.kosh/bindings.d.ts +22 -0
- package/dist/recruitment/.kosh/bindings.js +15 -0
- package/dist/recruitment/.kosh/schema.d.ts +990 -0
- package/dist/recruitment/demo.d.ts +6 -0
- package/dist/recruitment/demo.js +45 -0
- package/dist/recruitment/index.d.ts +3 -0
- package/dist/recruitment/index.js +385 -0
- package/dist/recruitment/module.d.ts +3247 -0
- package/dist/recruitment/module.js +193 -0
- package/dist/recruitment/web/HireButton.d.ts +9 -0
- package/dist/recruitment/web/HireButton.js +32 -0
- package/dist/recruitment/web/index.d.ts +11 -0
- package/dist/recruitment/web/index.js +16 -0
- package/dist/recruitment/web/messages.d.ts +2 -0
- package/dist/recruitment/web/messages.js +19 -0
- package/dist/reporting/documents.d.ts +5 -0
- package/dist/reporting/documents.js +28 -1
- package/dist/reporting/index.d.ts +1 -1
- package/dist/reporting/index.js +4 -2
- package/dist/reporting/models.js +9 -0
- package/dist/reporting/overviews.d.ts +16 -0
- package/dist/reporting/overviews.js +56 -0
- package/dist/reporting/routes-documents.js +1 -1
- package/dist/reporting/routes.js +138 -80
- package/dist/reporting/web/DashboardView.d.ts +11 -0
- package/dist/reporting/web/DashboardView.js +2 -2
- package/dist/reporting/web/DesignerView.js +5 -0
- package/dist/reporting/web/Overview.d.ts +9 -0
- package/dist/reporting/web/Overview.js +53 -0
- package/dist/reporting/web/index.d.ts +1 -0
- package/dist/reporting/web/index.js +4 -1
- package/dist/reporting/web/messages.js +9 -0
- package/dist/sale_account/.kosh/bindings.js +1 -1
- package/dist/sale_account/.kosh/schema.d.ts +59 -3
- package/dist/sale_account/index.js +22 -1
- package/dist/sale_account/module.d.ts +461 -7
- package/dist/sale_portal/.kosh/bindings.js +1 -1
- package/dist/sale_portal/.kosh/schema.d.ts +58 -3
- package/dist/sale_portal/module.d.ts +434 -5
- package/dist/sale_project/.kosh/bindings.js +1 -1
- package/dist/sale_project/.kosh/schema.d.ts +60 -3
- package/dist/sale_project/module.d.ts +476 -6
- package/dist/sale_stock/.kosh/bindings.d.ts +22 -0
- package/dist/sale_stock/.kosh/bindings.js +15 -0
- package/dist/sale_stock/.kosh/schema.d.ts +1228 -0
- package/dist/sale_stock/index.d.ts +7 -0
- package/dist/sale_stock/index.js +84 -0
- package/dist/sale_stock/module.d.ts +6791 -0
- package/dist/sale_stock/module.js +146 -0
- package/dist/sales/.kosh/bindings.js +1 -1
- package/dist/sales/.kosh/schema.d.ts +58 -3
- package/dist/sales/index.js +191 -4
- package/dist/sales/module.d.ts +355 -3
- package/dist/sales/module.js +78 -3
- package/dist/server/api/metadata.d.ts +5 -0
- package/dist/server/api/metadata.js +5 -0
- package/dist/server/api/rest.js +64 -1
- package/dist/server/api/views.js +1 -0
- package/dist/server/app-settings.d.ts +7 -0
- package/dist/server/app-settings.js +10 -0
- package/dist/server/auth/base.js +9 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +1 -0
- package/dist/settings/app-settings.d.ts +2 -0
- package/dist/settings/app-settings.js +518 -0
- package/dist/settings/index.d.ts +1 -0
- package/dist/settings/index.js +15 -0
- package/dist/settings/people.js +29 -5
- package/dist/settings/web/AppSettingsPage.d.ts +11 -0
- package/dist/settings/web/AppSettingsPage.js +210 -0
- package/dist/settings/web/OverviewPage.js +16 -3
- package/dist/settings/web/PeoplePage.js +20 -6
- package/dist/settings/web/index.d.ts +1 -0
- package/dist/settings/web/index.js +3 -0
- package/dist/settings/web/messages.js +118 -2
- package/dist/stock/.kosh/bindings.d.ts +22 -0
- package/dist/stock/.kosh/bindings.js +15 -0
- package/dist/stock/.kosh/schema.d.ts +1147 -0
- package/dist/stock/demo.d.ts +7 -0
- package/dist/stock/demo.js +55 -0
- package/dist/stock/index.d.ts +3 -0
- package/dist/stock/index.js +674 -0
- package/dist/stock/module.d.ts +6330 -0
- package/dist/stock/module.js +1325 -0
- package/dist/stock/web/ScanBox.d.ts +8 -0
- package/dist/stock/web/ScanBox.js +90 -0
- package/dist/stock/web/index.d.ts +11 -0
- package/dist/stock/web/index.js +16 -0
- package/dist/stock/web/messages.d.ts +2 -0
- package/dist/stock/web/messages.js +25 -0
- package/dist/stock_account/.kosh/bindings.d.ts +22 -0
- package/dist/stock_account/.kosh/bindings.js +15 -0
- package/dist/stock_account/.kosh/schema.d.ts +1875 -0
- package/dist/stock_account/index.d.ts +3 -0
- package/dist/stock_account/index.js +130 -0
- package/dist/stock_account/module.d.ts +10655 -0
- package/dist/stock_account/module.js +339 -0
- package/dist/storage/attachments.d.ts +5 -0
- package/dist/storage/attachments.js +12 -1
- package/dist/storage/models.js +3 -0
- package/dist/storage/routes.js +13 -2
- package/dist/todo/.kosh/bindings.d.ts +22 -0
- package/dist/todo/.kosh/bindings.js +15 -0
- package/dist/todo/.kosh/schema.d.ts +732 -0
- package/dist/todo/demo.d.ts +6 -0
- package/dist/todo/demo.js +35 -0
- package/dist/todo/index.d.ts +3 -0
- package/dist/todo/index.js +187 -0
- package/dist/todo/module.d.ts +1180 -0
- package/dist/todo/module.js +130 -0
- package/dist/trade_finance/.kosh/bindings.d.ts +22 -0
- package/dist/trade_finance/.kosh/bindings.js +15 -0
- package/dist/trade_finance/.kosh/schema.d.ts +884 -0
- package/dist/trade_finance/demo.d.ts +6 -0
- package/dist/trade_finance/demo.js +63 -0
- package/dist/trade_finance/index.d.ts +3 -0
- package/dist/trade_finance/index.js +413 -0
- package/dist/trade_finance/module.d.ts +3779 -0
- package/dist/trade_finance/module.js +505 -0
- package/dist/trade_finance_account/.kosh/bindings.d.ts +22 -0
- package/dist/trade_finance_account/.kosh/bindings.js +15 -0
- package/dist/trade_finance_account/.kosh/schema.d.ts +1711 -0
- package/dist/trade_finance_account/index.d.ts +3 -0
- package/dist/trade_finance_account/index.js +92 -0
- package/dist/trade_finance_account/module.d.ts +7928 -0
- package/dist/trade_finance_account/module.js +244 -0
- package/dist/trade_finance_purchase/.kosh/bindings.d.ts +22 -0
- package/dist/trade_finance_purchase/.kosh/bindings.js +15 -0
- package/dist/trade_finance_purchase/.kosh/schema.d.ts +1153 -0
- package/dist/trade_finance_purchase/index.d.ts +8 -0
- package/dist/trade_finance_purchase/index.js +50 -0
- package/dist/trade_finance_purchase/module.d.ts +4252 -0
- package/dist/trade_finance_purchase/module.js +44 -0
- package/dist/trade_finance_sale/.kosh/bindings.d.ts +22 -0
- package/dist/trade_finance_sale/.kosh/bindings.js +15 -0
- package/dist/trade_finance_sale/.kosh/schema.d.ts +1071 -0
- package/dist/trade_finance_sale/index.d.ts +8 -0
- package/dist/trade_finance_sale/index.js +50 -0
- package/dist/trade_finance_sale/module.d.ts +4280 -0
- package/dist/trade_finance_sale/module.js +44 -0
- package/dist/ui/api.d.ts +2 -1
- package/dist/ui/api.js +2 -1
- package/dist/ui/app.js +2 -1
- package/dist/ui/components/AppIcon.js +23 -1
- package/dist/ui/components/primitives.d.ts +2 -0
- package/dist/ui/components/primitives.js +7 -1
- package/dist/ui/i18n/messages.d.ts +23 -0
- package/dist/ui/i18n/messages.js +38 -0
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.js +1 -0
- package/dist/ui/offline/queue.d.ts +5 -1
- package/dist/ui/offline/queue.js +2 -0
- package/dist/ui/registry.d.ts +5 -0
- package/dist/ui/shell/Home.js +55 -4
- package/dist/ui/views/FormView.js +98 -17
- package/dist/ui/views/KanbanView.d.ts +2 -0
- package/dist/ui/views/KanbanView.js +32 -3
- package/dist/ui/views/ListView.js +108 -11
- package/dist/ui/views/StatsRow.d.ts +14 -0
- package/dist/ui/views/StatsRow.js +88 -0
- package/dist/ui/views/widgets.d.ts +2 -1
- package/dist/ui/views/widgets.js +194 -1
- package/dist/views/builders.d.ts +19 -2
- package/dist/views/builders.js +21 -1
- package/dist/views/condition.d.ts +6 -0
- package/dist/views/condition.js +20 -0
- package/dist/views/documents.d.ts +8 -0
- package/dist/views/extend.d.ts +2 -2
- package/dist/views/extend.js +11 -1
- package/dist/views/index.d.ts +2 -2
- package/dist/views/index.js +2 -2
- package/dist/views/types.d.ts +52 -5
- package/dist/views/validate.js +39 -1
- package/dist/website/.kosh/bindings.d.ts +22 -0
- package/dist/website/.kosh/bindings.js +15 -0
- package/dist/website/.kosh/schema.d.ts +881 -0
- package/dist/website/demo.d.ts +6 -0
- package/dist/website/demo.js +115 -0
- package/dist/website/index.d.ts +9 -0
- package/dist/website/index.js +250 -0
- package/dist/website/module.d.ts +2987 -0
- package/dist/website/module.js +281 -0
- package/dist/website/render.d.ts +45 -0
- package/dist/website/render.js +102 -0
- package/dist/website/routes.d.ts +12 -0
- package/dist/website/routes.js +246 -0
- package/dist/website/web/PagePreview.d.ts +7 -0
- package/dist/website/web/PagePreview.js +33 -0
- package/dist/website/web/index.d.ts +11 -0
- package/dist/website/web/index.js +16 -0
- package/dist/website/web/messages.d.ts +2 -0
- package/dist/website/web/messages.js +15 -0
- package/dist/website_crm/.kosh/bindings.d.ts +22 -0
- package/dist/website_crm/.kosh/bindings.js +15 -0
- package/dist/website_crm/.kosh/schema.d.ts +966 -0
- package/dist/website_crm/index.d.ts +3 -0
- package/dist/website_crm/index.js +39 -0
- package/dist/website_crm/module.d.ts +2955 -0
- package/dist/website_crm/module.js +44 -0
- package/package.json +118 -1
package/dist/purchase/index.js
CHANGED
|
@@ -9,7 +9,8 @@ import { messaging } from '../messaging/index.js';
|
|
|
9
9
|
import { defineModule } from '../modules-sdk/index.js';
|
|
10
10
|
import { permissions } from '../permissions/index.js';
|
|
11
11
|
import { product } from '../product/index.js';
|
|
12
|
-
import {
|
|
12
|
+
import { reporting } from '../reporting/index.js';
|
|
13
|
+
import { action, calendar, form, kanban, list, search, stat } from '../views/index.js';
|
|
13
14
|
import { purchaseDemo } from './demo.js';
|
|
14
15
|
import { PurchaseOrder, purchaseShutro } from './module.js';
|
|
15
16
|
export { PurchaseOrder, PurchaseOrderLine, purchaseShutro } from './module.js';
|
|
@@ -17,7 +18,14 @@ export const purchase = defineModule({
|
|
|
17
18
|
shutro: purchaseShutro,
|
|
18
19
|
kosh: '^0.1.0',
|
|
19
20
|
hooks: { demo: purchaseDemo },
|
|
20
|
-
depends: [contacts, product, messaging, permissions],
|
|
21
|
+
depends: [contacts, product, messaging, permissions, reporting],
|
|
22
|
+
events: [
|
|
23
|
+
{
|
|
24
|
+
topic: 'purchase.order.confirmed',
|
|
25
|
+
model: 'purchase.order',
|
|
26
|
+
label: 'Purchase order confirmed',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
21
29
|
app: {
|
|
22
30
|
code: 'purchase',
|
|
23
31
|
label: 'Purchase',
|
|
@@ -31,6 +39,22 @@ export const purchase = defineModule({
|
|
|
31
39
|
manager: { label: 'Manager (all orders)', groups: ['purchase.manager'], implies: ['user'] },
|
|
32
40
|
director: { label: 'Director', groups: ['purchase.director'], implies: ['manager'] },
|
|
33
41
|
},
|
|
42
|
+
// Settings › App settings › Purchase (RFC 0020): per company, changed by purchase managers.
|
|
43
|
+
settings: {
|
|
44
|
+
sections: [
|
|
45
|
+
{
|
|
46
|
+
key: 'orders',
|
|
47
|
+
label: 'Purchase orders',
|
|
48
|
+
description: 'The terms new requests for quotation and purchase orders start with.',
|
|
49
|
+
keywords: 'purchase order rfq terms conditions vendor',
|
|
50
|
+
scope: 'company',
|
|
51
|
+
editors: ['purchase.manager'],
|
|
52
|
+
fields: [
|
|
53
|
+
{ key: 'purchaseTerms', help: 'Filled in on new orders; each can still be changed.' },
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
},
|
|
34
58
|
approvals: [
|
|
35
59
|
{
|
|
36
60
|
name: 'Purchase approvals',
|
|
@@ -51,6 +75,134 @@ export const purchase = defineModule({
|
|
|
51
75
|
],
|
|
52
76
|
},
|
|
53
77
|
],
|
|
78
|
+
// The Overview (RFC 0022 step 2): spend against last month, what waits, who we buy from.
|
|
79
|
+
overview: {
|
|
80
|
+
cards: [
|
|
81
|
+
{
|
|
82
|
+
id: 'spend_month',
|
|
83
|
+
title: 'Purchases this month',
|
|
84
|
+
kind: 'kpi',
|
|
85
|
+
model: 'purchase.order',
|
|
86
|
+
measure: 'sum:amountTotal',
|
|
87
|
+
filter: { state: { in: ['purchase', 'done'] } },
|
|
88
|
+
comparison: { field: 'dateOrder', mode: 'previous' },
|
|
89
|
+
w: 3,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: 'orders_month',
|
|
93
|
+
title: 'Orders this month',
|
|
94
|
+
kind: 'kpi',
|
|
95
|
+
model: 'purchase.order',
|
|
96
|
+
measure: 'count',
|
|
97
|
+
filter: { state: { in: ['purchase', 'done'] } },
|
|
98
|
+
comparison: { field: 'dateOrder', mode: 'previous' },
|
|
99
|
+
w: 3,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: 'open_rfqs',
|
|
103
|
+
title: 'Open requests',
|
|
104
|
+
kind: 'kpi',
|
|
105
|
+
model: 'purchase.order',
|
|
106
|
+
measure: 'count',
|
|
107
|
+
filter: { state: { in: ['draft', 'sent'] } },
|
|
108
|
+
w: 3,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 'to_approve',
|
|
112
|
+
title: 'Waiting approval',
|
|
113
|
+
kind: 'kpi',
|
|
114
|
+
model: 'purchase.order',
|
|
115
|
+
measure: 'count',
|
|
116
|
+
filter: { state: 'to_approve' },
|
|
117
|
+
w: 3,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 'spend_by_month',
|
|
121
|
+
title: 'Purchases by month',
|
|
122
|
+
kind: 'chart',
|
|
123
|
+
model: 'purchase.order',
|
|
124
|
+
measure: 'sum:amountTotal',
|
|
125
|
+
groupBy: 'dateOrder:month',
|
|
126
|
+
filter: { state: { in: ['purchase', 'done'] } },
|
|
127
|
+
chart: 'bar',
|
|
128
|
+
w: 6,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
id: 'top_vendors',
|
|
132
|
+
title: 'Top vendors',
|
|
133
|
+
kind: 'pivot',
|
|
134
|
+
model: 'purchase.order',
|
|
135
|
+
measure: 'sum:amountTotal',
|
|
136
|
+
groupBy: 'partner',
|
|
137
|
+
filter: { state: { in: ['purchase', 'done'] } },
|
|
138
|
+
w: 6,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: 'by_buyer',
|
|
142
|
+
title: 'By buyer',
|
|
143
|
+
kind: 'chart',
|
|
144
|
+
model: 'purchase.order',
|
|
145
|
+
measure: 'sum:amountTotal',
|
|
146
|
+
groupBy: 'user',
|
|
147
|
+
filter: { state: { in: ['purchase', 'done'] } },
|
|
148
|
+
chart: 'pie',
|
|
149
|
+
w: 6,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
id: 'biggest_open',
|
|
153
|
+
title: 'Biggest open requests',
|
|
154
|
+
kind: 'list',
|
|
155
|
+
model: 'purchase.order',
|
|
156
|
+
measure: 'sum:amountTotal',
|
|
157
|
+
filter: { state: { in: ['draft', 'sent', 'to_approve'] } },
|
|
158
|
+
w: 6,
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
},
|
|
162
|
+
viewExtensions: [
|
|
163
|
+
{
|
|
164
|
+
view: 'product.product.form',
|
|
165
|
+
operations: [
|
|
166
|
+
{
|
|
167
|
+
append: 'related',
|
|
168
|
+
nodes: [
|
|
169
|
+
stat({
|
|
170
|
+
id: 'product_bought',
|
|
171
|
+
label: 'Bought',
|
|
172
|
+
model: 'purchase.order.line',
|
|
173
|
+
where: { product: { $record: 'id' }, 'order.state': { in: ['purchase', 'done'] } },
|
|
174
|
+
measure: { sum: 'quantity' },
|
|
175
|
+
}),
|
|
176
|
+
],
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
view: 'res.partner.form',
|
|
182
|
+
operations: [
|
|
183
|
+
{
|
|
184
|
+
append: 'related',
|
|
185
|
+
nodes: [
|
|
186
|
+
stat({
|
|
187
|
+
id: 'purchase_orders',
|
|
188
|
+
label: 'Purchase orders',
|
|
189
|
+
model: PurchaseOrder,
|
|
190
|
+
where: { partner: { $record: 'id' }, state: { in: ['purchase', 'done'] } },
|
|
191
|
+
action: 'purchase.action_orders',
|
|
192
|
+
}),
|
|
193
|
+
stat({
|
|
194
|
+
id: 'purchase_spend',
|
|
195
|
+
label: 'Purchases',
|
|
196
|
+
model: PurchaseOrder,
|
|
197
|
+
where: { partner: { $record: 'id' }, state: { in: ['purchase', 'done'] } },
|
|
198
|
+
measure: { sum: 'amountTotal' },
|
|
199
|
+
action: 'purchase.action_orders',
|
|
200
|
+
}),
|
|
201
|
+
],
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
},
|
|
205
|
+
],
|
|
54
206
|
actions: {
|
|
55
207
|
'purchase.action_rfqs': action(PurchaseOrder, {
|
|
56
208
|
label: 'Requests for quotation',
|
|
@@ -59,7 +211,7 @@ export const purchase = defineModule({
|
|
|
59
211
|
}),
|
|
60
212
|
'purchase.action_orders': action(PurchaseOrder, {
|
|
61
213
|
label: 'Purchase orders',
|
|
62
|
-
views: ['list', 'kanban', 'form'],
|
|
214
|
+
views: ['list', 'kanban', 'calendar', 'form'],
|
|
63
215
|
defaultFilters: ['orders'],
|
|
64
216
|
}),
|
|
65
217
|
'purchase.action_to_approve': action(PurchaseOrder, {
|
|
@@ -138,6 +290,8 @@ export const purchase = defineModule({
|
|
|
138
290
|
],
|
|
139
291
|
},
|
|
140
292
|
sheet: [
|
|
293
|
+
// Bills and receipts: the bridges append their tiles (RFC 0022 §3.1).
|
|
294
|
+
k.stats('related', []),
|
|
141
295
|
k.group('vendor', ['partner', 'partnerReference', 'currency']),
|
|
142
296
|
k.group('dates', ['name', 'dateOrder', 'datePlanned', 'user', 'origin']),
|
|
143
297
|
k.lines('lines', [
|
|
@@ -157,6 +311,12 @@ export const purchase = defineModule({
|
|
|
157
311
|
readonlyWhen: { state: { in: ['done', 'cancel'] } },
|
|
158
312
|
chatter: true,
|
|
159
313
|
})),
|
|
314
|
+
'purchase.order.calendar': calendar(PurchaseOrder, {
|
|
315
|
+
dateStart: 'datePlanned',
|
|
316
|
+
title: 'name',
|
|
317
|
+
color: 'state',
|
|
318
|
+
mode: 'month',
|
|
319
|
+
}),
|
|
160
320
|
},
|
|
161
321
|
search: {
|
|
162
322
|
'purchase.order': search(PurchaseOrder, {
|
|
@@ -188,6 +188,7 @@ export declare const PurchaseOrder: import("../server/orm.js").Model<"purchase.o
|
|
|
188
188
|
readonly to: "purchase";
|
|
189
189
|
readonly guard: (records: never) => unknown;
|
|
190
190
|
readonly message: "Waiting for approvals.";
|
|
191
|
+
readonly after: (records: never) => unknown;
|
|
191
192
|
};
|
|
192
193
|
readonly reject: {
|
|
193
194
|
readonly from: readonly ["to_approve"];
|
|
@@ -365,6 +366,7 @@ export declare const PurchaseOrder: import("../server/orm.js").Model<"purchase.o
|
|
|
365
366
|
readonly to: "purchase";
|
|
366
367
|
readonly guard: (records: never) => unknown;
|
|
367
368
|
readonly message: "Waiting for approvals.";
|
|
369
|
+
readonly after: (records: never) => unknown;
|
|
368
370
|
};
|
|
369
371
|
readonly reject: {
|
|
370
372
|
readonly from: readonly ["to_approve"];
|
|
@@ -395,6 +397,19 @@ export declare const PurchaseOrder: import("../server/orm.js").Model<"purchase.o
|
|
|
395
397
|
sequence: false;
|
|
396
398
|
}>;
|
|
397
399
|
}>>;
|
|
400
|
+
/** The company's purchase settings (RFC 0020): the terms new orders start with. */
|
|
401
|
+
export declare const CompanyPurchase: import("../server/orm.js").Extension<"res.company", {
|
|
402
|
+
readonly purchaseTerms: import("../server/orm.js").ScalarField<"text", string, string, {
|
|
403
|
+
readonly required: false;
|
|
404
|
+
readonly computed: false;
|
|
405
|
+
readonly inverse: false;
|
|
406
|
+
readonly sequence: false;
|
|
407
|
+
readonly computeName: undefined;
|
|
408
|
+
readonly store: true;
|
|
409
|
+
readonly hasDefault: false;
|
|
410
|
+
readonly readonly: false;
|
|
411
|
+
}>;
|
|
412
|
+
}, Record<never, never>>;
|
|
398
413
|
export declare const PurchaseOrderLine: import("../server/orm.js").Model<"purchase.order.line", {
|
|
399
414
|
readonly id: import("../server/orm.js").IdField<"purchase.order.line">;
|
|
400
415
|
readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
@@ -871,6 +886,7 @@ export declare const purchaseShutro: import("../server/orm.js").Module<readonly
|
|
|
871
886
|
readonly to: "purchase";
|
|
872
887
|
readonly guard: (records: never) => unknown;
|
|
873
888
|
readonly message: "Waiting for approvals.";
|
|
889
|
+
readonly after: (records: never) => unknown;
|
|
874
890
|
};
|
|
875
891
|
readonly reject: {
|
|
876
892
|
readonly from: readonly ["to_approve"];
|
|
@@ -1048,6 +1064,7 @@ export declare const purchaseShutro: import("../server/orm.js").Module<readonly
|
|
|
1048
1064
|
readonly to: "purchase";
|
|
1049
1065
|
readonly guard: (records: never) => unknown;
|
|
1050
1066
|
readonly message: "Waiting for approvals.";
|
|
1067
|
+
readonly after: (records: never) => unknown;
|
|
1051
1068
|
};
|
|
1052
1069
|
readonly reject: {
|
|
1053
1070
|
readonly from: readonly ["to_approve"];
|
|
@@ -1362,7 +1379,70 @@ export declare const purchaseShutro: import("../server/orm.js").Module<readonly
|
|
|
1362
1379
|
readonly hasDefault: false;
|
|
1363
1380
|
readonly readonly: true;
|
|
1364
1381
|
}>;
|
|
1365
|
-
}>>], readonly [import("../server/orm.js").Module<readonly [import("../server/orm.js").Model<"res.partner", {
|
|
1382
|
+
}>>], readonly [import("../server/orm.js").Module<readonly [import("../server/orm.js").Model<"res.partner.tag", {
|
|
1383
|
+
readonly id: import("../server/orm.js").IdField<"res.partner.tag">;
|
|
1384
|
+
readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
1385
|
+
required: true;
|
|
1386
|
+
readonly: true;
|
|
1387
|
+
computed: false;
|
|
1388
|
+
inverse: false;
|
|
1389
|
+
hasDefault: false;
|
|
1390
|
+
sequence: false;
|
|
1391
|
+
}>;
|
|
1392
|
+
readonly updatedAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
1393
|
+
required: true;
|
|
1394
|
+
readonly: true;
|
|
1395
|
+
computed: false;
|
|
1396
|
+
inverse: false;
|
|
1397
|
+
hasDefault: false;
|
|
1398
|
+
sequence: false;
|
|
1399
|
+
}>;
|
|
1400
|
+
readonly createdBy: import("../server/orm.js").Many2oneField<'res.users', {
|
|
1401
|
+
required: false;
|
|
1402
|
+
readonly: true;
|
|
1403
|
+
computed: false;
|
|
1404
|
+
inverse: false;
|
|
1405
|
+
hasDefault: false;
|
|
1406
|
+
sequence: false;
|
|
1407
|
+
}>;
|
|
1408
|
+
readonly updatedBy: import("../server/orm.js").Many2oneField<'res.users', {
|
|
1409
|
+
required: false;
|
|
1410
|
+
readonly: true;
|
|
1411
|
+
computed: false;
|
|
1412
|
+
inverse: false;
|
|
1413
|
+
hasDefault: false;
|
|
1414
|
+
sequence: false;
|
|
1415
|
+
}>;
|
|
1416
|
+
readonly displayName: import("../server/orm.js").CharField<{
|
|
1417
|
+
required: true;
|
|
1418
|
+
readonly: true;
|
|
1419
|
+
computed: true;
|
|
1420
|
+
inverse: false;
|
|
1421
|
+
hasDefault: false;
|
|
1422
|
+
sequence: false;
|
|
1423
|
+
}>;
|
|
1424
|
+
readonly name: import("../server/orm.js").CharField<{
|
|
1425
|
+
readonly required: true;
|
|
1426
|
+
readonly computed: false;
|
|
1427
|
+
readonly inverse: false;
|
|
1428
|
+
readonly sequence: false;
|
|
1429
|
+
readonly computeName: undefined;
|
|
1430
|
+
readonly store: true;
|
|
1431
|
+
readonly hasDefault: false;
|
|
1432
|
+
readonly readonly: false;
|
|
1433
|
+
}, string>;
|
|
1434
|
+
}, {} & import("../server/orm.js").TransitionMethods<{
|
|
1435
|
+
readonly name: import("../server/orm.js").CharField<{
|
|
1436
|
+
readonly required: true;
|
|
1437
|
+
readonly computed: false;
|
|
1438
|
+
readonly inverse: false;
|
|
1439
|
+
readonly sequence: false;
|
|
1440
|
+
readonly computeName: undefined;
|
|
1441
|
+
readonly store: true;
|
|
1442
|
+
readonly hasDefault: false;
|
|
1443
|
+
readonly readonly: false;
|
|
1444
|
+
}, string>;
|
|
1445
|
+
}>>, import("../server/orm.js").Model<"res.partner", {
|
|
1366
1446
|
readonly id: import("../server/orm.js").IdField<"res.partner">;
|
|
1367
1447
|
readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
1368
1448
|
required: true;
|
|
@@ -1416,6 +1496,46 @@ export declare const purchaseShutro: import("../server/orm.js").Module<readonly
|
|
|
1416
1496
|
readonly hasDefault: false;
|
|
1417
1497
|
readonly readonly: false;
|
|
1418
1498
|
}, string>;
|
|
1499
|
+
readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
|
|
1500
|
+
readonly required: false;
|
|
1501
|
+
readonly computed: false;
|
|
1502
|
+
readonly inverse: false;
|
|
1503
|
+
readonly sequence: false;
|
|
1504
|
+
readonly computeName: undefined;
|
|
1505
|
+
readonly store: true;
|
|
1506
|
+
readonly hasDefault: false;
|
|
1507
|
+
readonly readonly: false;
|
|
1508
|
+
}>;
|
|
1509
|
+
readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
|
|
1510
|
+
readonly required: true;
|
|
1511
|
+
readonly computed: false;
|
|
1512
|
+
readonly inverse: false;
|
|
1513
|
+
readonly sequence: false;
|
|
1514
|
+
readonly computeName: undefined;
|
|
1515
|
+
readonly store: true;
|
|
1516
|
+
readonly hasDefault: true;
|
|
1517
|
+
readonly readonly: false;
|
|
1518
|
+
}>;
|
|
1519
|
+
readonly latitude: import("../server/orm.js").DecimalField<{
|
|
1520
|
+
readonly required: false;
|
|
1521
|
+
readonly computed: false;
|
|
1522
|
+
readonly inverse: false;
|
|
1523
|
+
readonly sequence: false;
|
|
1524
|
+
readonly computeName: undefined;
|
|
1525
|
+
readonly store: true;
|
|
1526
|
+
readonly hasDefault: false;
|
|
1527
|
+
readonly readonly: false;
|
|
1528
|
+
}>;
|
|
1529
|
+
readonly longitude: import("../server/orm.js").DecimalField<{
|
|
1530
|
+
readonly required: false;
|
|
1531
|
+
readonly computed: false;
|
|
1532
|
+
readonly inverse: false;
|
|
1533
|
+
readonly sequence: false;
|
|
1534
|
+
readonly computeName: undefined;
|
|
1535
|
+
readonly store: true;
|
|
1536
|
+
readonly hasDefault: false;
|
|
1537
|
+
readonly readonly: false;
|
|
1538
|
+
}>;
|
|
1419
1539
|
readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
1420
1540
|
readonly required: true;
|
|
1421
1541
|
readonly computed: false;
|
|
@@ -1597,6 +1717,46 @@ export declare const purchaseShutro: import("../server/orm.js").Module<readonly
|
|
|
1597
1717
|
readonly hasDefault: false;
|
|
1598
1718
|
readonly readonly: false;
|
|
1599
1719
|
}, string>;
|
|
1720
|
+
readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
|
|
1721
|
+
readonly required: false;
|
|
1722
|
+
readonly computed: false;
|
|
1723
|
+
readonly inverse: false;
|
|
1724
|
+
readonly sequence: false;
|
|
1725
|
+
readonly computeName: undefined;
|
|
1726
|
+
readonly store: true;
|
|
1727
|
+
readonly hasDefault: false;
|
|
1728
|
+
readonly readonly: false;
|
|
1729
|
+
}>;
|
|
1730
|
+
readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
|
|
1731
|
+
readonly required: true;
|
|
1732
|
+
readonly computed: false;
|
|
1733
|
+
readonly inverse: false;
|
|
1734
|
+
readonly sequence: false;
|
|
1735
|
+
readonly computeName: undefined;
|
|
1736
|
+
readonly store: true;
|
|
1737
|
+
readonly hasDefault: true;
|
|
1738
|
+
readonly readonly: false;
|
|
1739
|
+
}>;
|
|
1740
|
+
readonly latitude: import("../server/orm.js").DecimalField<{
|
|
1741
|
+
readonly required: false;
|
|
1742
|
+
readonly computed: false;
|
|
1743
|
+
readonly inverse: false;
|
|
1744
|
+
readonly sequence: false;
|
|
1745
|
+
readonly computeName: undefined;
|
|
1746
|
+
readonly store: true;
|
|
1747
|
+
readonly hasDefault: false;
|
|
1748
|
+
readonly readonly: false;
|
|
1749
|
+
}>;
|
|
1750
|
+
readonly longitude: import("../server/orm.js").DecimalField<{
|
|
1751
|
+
readonly required: false;
|
|
1752
|
+
readonly computed: false;
|
|
1753
|
+
readonly inverse: false;
|
|
1754
|
+
readonly sequence: false;
|
|
1755
|
+
readonly computeName: undefined;
|
|
1756
|
+
readonly store: true;
|
|
1757
|
+
readonly hasDefault: false;
|
|
1758
|
+
readonly readonly: false;
|
|
1759
|
+
}>;
|
|
1600
1760
|
readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
1601
1761
|
readonly required: true;
|
|
1602
1762
|
readonly computed: false;
|
|
@@ -1767,7 +1927,28 @@ export declare const purchaseShutro: import("../server/orm.js").Module<readonly
|
|
|
1767
1927
|
readonly hasDefault: false;
|
|
1768
1928
|
readonly readonly: false;
|
|
1769
1929
|
}>;
|
|
1770
|
-
}>>], readonly [import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]
|
|
1930
|
+
}>>], readonly [import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>, import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>], readonly [import("../server/orm.js").Extension<"res.company", {
|
|
1931
|
+
readonly contactTaxIdRequired: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
1932
|
+
readonly required: true;
|
|
1933
|
+
readonly computed: false;
|
|
1934
|
+
readonly inverse: false;
|
|
1935
|
+
readonly sequence: false;
|
|
1936
|
+
readonly computeName: undefined;
|
|
1937
|
+
readonly store: true;
|
|
1938
|
+
readonly hasDefault: true;
|
|
1939
|
+
readonly readonly: false;
|
|
1940
|
+
}>;
|
|
1941
|
+
readonly contactUniqueEmail: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
1942
|
+
readonly required: true;
|
|
1943
|
+
readonly computed: false;
|
|
1944
|
+
readonly inverse: false;
|
|
1945
|
+
readonly sequence: false;
|
|
1946
|
+
readonly computeName: undefined;
|
|
1947
|
+
readonly store: true;
|
|
1948
|
+
readonly hasDefault: true;
|
|
1949
|
+
readonly readonly: false;
|
|
1950
|
+
}>;
|
|
1951
|
+
}, Record<never, never>>]>, import("../server/orm.js").Module<readonly [import("../server/orm.js").Model<"uom.uom", {
|
|
1771
1952
|
readonly id: import("../server/orm.js").IdField<"uom.uom">;
|
|
1772
1953
|
readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
1773
1954
|
required: true;
|
|
@@ -2301,6 +2482,16 @@ export declare const purchaseShutro: import("../server/orm.js").Module<readonly
|
|
|
2301
2482
|
readonly hasDefault: false;
|
|
2302
2483
|
readonly readonly: false;
|
|
2303
2484
|
}, string>;
|
|
2485
|
+
readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
|
|
2486
|
+
readonly required: false;
|
|
2487
|
+
readonly computed: false;
|
|
2488
|
+
readonly inverse: false;
|
|
2489
|
+
readonly sequence: false;
|
|
2490
|
+
readonly computeName: undefined;
|
|
2491
|
+
readonly store: true;
|
|
2492
|
+
readonly hasDefault: false;
|
|
2493
|
+
readonly readonly: false;
|
|
2494
|
+
}>;
|
|
2304
2495
|
readonly listPrice: import("../server/orm.js").DecimalField<{
|
|
2305
2496
|
readonly required: true;
|
|
2306
2497
|
readonly computed: false;
|
|
@@ -2452,6 +2643,16 @@ export declare const purchaseShutro: import("../server/orm.js").Module<readonly
|
|
|
2452
2643
|
readonly hasDefault: false;
|
|
2453
2644
|
readonly readonly: false;
|
|
2454
2645
|
}, string>;
|
|
2646
|
+
readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
|
|
2647
|
+
readonly required: false;
|
|
2648
|
+
readonly computed: false;
|
|
2649
|
+
readonly inverse: false;
|
|
2650
|
+
readonly sequence: false;
|
|
2651
|
+
readonly computeName: undefined;
|
|
2652
|
+
readonly store: true;
|
|
2653
|
+
readonly hasDefault: false;
|
|
2654
|
+
readonly readonly: false;
|
|
2655
|
+
}>;
|
|
2455
2656
|
readonly listPrice: import("../server/orm.js").DecimalField<{
|
|
2456
2657
|
readonly required: true;
|
|
2457
2658
|
readonly computed: false;
|
|
@@ -2542,4 +2743,15 @@ export declare const purchaseShutro: import("../server/orm.js").Module<readonly
|
|
|
2542
2743
|
readonly hasDefault: false;
|
|
2543
2744
|
readonly readonly: false;
|
|
2544
2745
|
}>;
|
|
2545
|
-
}>>], readonly [import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>], readonly []>, import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>, import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>], readonly [
|
|
2746
|
+
}>>], readonly [import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>, import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>], readonly []>, import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>, import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]>], readonly [import("../server/orm.js").Extension<"res.company", {
|
|
2747
|
+
readonly purchaseTerms: import("../server/orm.js").ScalarField<"text", string, string, {
|
|
2748
|
+
readonly required: false;
|
|
2749
|
+
readonly computed: false;
|
|
2750
|
+
readonly inverse: false;
|
|
2751
|
+
readonly sequence: false;
|
|
2752
|
+
readonly computeName: undefined;
|
|
2753
|
+
readonly store: true;
|
|
2754
|
+
readonly hasDefault: false;
|
|
2755
|
+
readonly readonly: false;
|
|
2756
|
+
}>;
|
|
2757
|
+
}, Record<never, never>>]>;
|
package/dist/purchase/module.js
CHANGED
|
@@ -9,7 +9,7 @@ import { messagingShutro } from '../messaging/index.js';
|
|
|
9
9
|
import { approvalGuard, permissionsShutro, requestApprovals } from '../permissions/index.js';
|
|
10
10
|
import { computeTaxes, productShutro, taxRule } from '../product/index.js';
|
|
11
11
|
import { orm } from '../server/orm.js';
|
|
12
|
-
import { check, compute, defineModel, defineModule, f, onchange, records, } from './.kosh/bindings.js';
|
|
12
|
+
import { check, compute, defineModel, defineModule, extendModel, f, onchange, records, } from './.kosh/bindings.js';
|
|
13
13
|
/** A line's taxes through the engine (RFC 0016): its amount, its taxes in order. */
|
|
14
14
|
function taxesOf(l) {
|
|
15
15
|
return computeTaxes(l.quantity.times(l.priceUnit), l.quantity, [...l.taxes].map(taxRule));
|
|
@@ -93,6 +93,11 @@ export const PurchaseOrder = defineModel('purchase.order', {
|
|
|
93
93
|
to: 'purchase',
|
|
94
94
|
guard: records('purchase.order', (orders) => approvalGuard(orders)),
|
|
95
95
|
message: 'Waiting for approvals.',
|
|
96
|
+
// Other apps act on a confirmation through the outbox (purchase_stock makes the receipt).
|
|
97
|
+
after: records('purchase.order', async (orders) => {
|
|
98
|
+
for (const o of await orders.load({}))
|
|
99
|
+
await orders.env.emit('purchase.order.confirmed', { id: o.id });
|
|
100
|
+
}),
|
|
96
101
|
},
|
|
97
102
|
reject: { from: ['to_approve'], to: 'draft' },
|
|
98
103
|
lock: { from: ['purchase'], to: 'done' },
|
|
@@ -104,8 +109,14 @@ export const PurchaseOrder = defineModel('purchase.order', {
|
|
|
104
109
|
}),
|
|
105
110
|
},
|
|
106
111
|
onchange: {
|
|
107
|
-
// The vendor's currency, else the company's.
|
|
112
|
+
// The vendor's currency, else the company's; empty terms from the company's settings.
|
|
108
113
|
partner: onchange('purchase.order', async (d, env) => {
|
|
114
|
+
if ((d.get('note') ?? '') === '') {
|
|
115
|
+
const [company] = (await env.model('res.company').browse([env.companyId]).load(['purchaseTerms'])).read(['purchaseTerms']);
|
|
116
|
+
const terms = company?.['purchaseTerms'];
|
|
117
|
+
if (typeof terms === 'string' && terms !== '')
|
|
118
|
+
d.set('note', terms);
|
|
119
|
+
}
|
|
109
120
|
const p = await d.record('partner');
|
|
110
121
|
if (p?.currency) {
|
|
111
122
|
d.set('currency', p.currency.id);
|
|
@@ -120,6 +131,12 @@ export const PurchaseOrder = defineModel('purchase.order', {
|
|
|
120
131
|
}),
|
|
121
132
|
},
|
|
122
133
|
});
|
|
134
|
+
/** The company's purchase settings (RFC 0020): the terms new orders start with. */
|
|
135
|
+
export const CompanyPurchase = extendModel('res.company', {
|
|
136
|
+
fields: {
|
|
137
|
+
purchaseTerms: f.text({ label: 'Default terms and conditions' }),
|
|
138
|
+
},
|
|
139
|
+
});
|
|
123
140
|
export const PurchaseOrderLine = defineModel('purchase.order.line', {
|
|
124
141
|
label: 'Purchase line',
|
|
125
142
|
access: {
|
|
@@ -208,7 +225,7 @@ export const PurchaseOrderLine = defineModel('purchase.order.line', {
|
|
|
208
225
|
});
|
|
209
226
|
export const purchaseShutro = defineModule({
|
|
210
227
|
name: 'purchase',
|
|
211
|
-
version: '0.
|
|
228
|
+
version: '0.3.0',
|
|
212
229
|
migrations: [
|
|
213
230
|
{
|
|
214
231
|
version: '0.2.0',
|
|
@@ -246,4 +263,5 @@ export const purchaseShutro = defineModule({
|
|
|
246
263
|
}),
|
|
247
264
|
],
|
|
248
265
|
models: [PurchaseOrder, PurchaseOrderLine],
|
|
266
|
+
extensions: [CompanyPurchase],
|
|
249
267
|
});
|
|
@@ -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: 43079420e45369c2
|
|
2
2
|
// Bindings of module `purchase_account`: import the definition API from here to get types scoped to what it can see.
|
|
3
3
|
export { defineModel, defineModule, extendModel, f, replace } from '../../server/orm.js';
|
|
4
4
|
import { definitions } from '../../server/orm.js';
|