shutro-erp 0.3.3 → 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 +181 -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 +181 -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 +205 -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/integrations/index.js +12 -0
- package/dist/integrations/web/OAuthAppsPage.d.ts +9 -0
- package/dist/integrations/web/OAuthAppsPage.js +79 -0
- package/dist/integrations/web/index.d.ts +1 -0
- package/dist/integrations/web/index.js +3 -0
- package/dist/integrations/web/messages.js +58 -0
- package/dist/l10n_bd/.kosh/bindings.js +1 -1
- package/dist/l10n_bd/.kosh/schema.d.ts +181 -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 +181 -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/messaging/web/index.js +1 -1
- 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/notify/web/index.js +1 -1
- package/dist/payment/.kosh/bindings.js +1 -1
- package/dist/payment/.kosh/schema.d.ts +181 -3
- package/dist/payment/module.d.ts +359 -6
- package/dist/portal/.kosh/bindings.js +1 -1
- package/dist/portal/.kosh/schema.d.ts +205 -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 +178 -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 +181 -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 +181 -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 +181 -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 +182 -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 +181 -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 +186 -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 +185 -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 +187 -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 +185 -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 +85 -0
- package/dist/server/auth/oauth.d.ts +21 -0
- package/dist/server/auth/oauth.js +579 -0
- package/dist/server/auth/service.d.ts +4 -0
- package/dist/server/auth/service.js +17 -0
- package/dist/server/identity.d.ts +2 -0
- package/dist/server/images.d.ts +12 -0
- package/dist/server/images.js +139 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.js +2 -0
- package/dist/server/server.d.ts +4 -0
- package/dist/server/server.js +9 -1
- package/dist/settings/app-settings.d.ts +2 -0
- package/dist/settings/app-settings.js +518 -0
- package/dist/settings/company.js +3 -1
- package/dist/settings/index.d.ts +1 -0
- package/dist/settings/index.js +15 -0
- package/dist/settings/people.js +32 -6
- package/dist/settings/web/AppSettingsPage.d.ts +11 -0
- package/dist/settings/web/AppSettingsPage.js +210 -0
- package/dist/settings/web/CompaniesPage.js +2 -2
- package/dist/settings/web/CompanyPage.js +13 -2
- package/dist/settings/web/ConnectedAppsPage.d.ts +7 -0
- package/dist/settings/web/ConnectedAppsPage.js +33 -0
- package/dist/settings/web/OverviewPage.js +28 -4
- package/dist/settings/web/PeoplePage.js +23 -18
- package/dist/settings/web/ProfilePage.js +9 -7
- package/dist/settings/web/index.d.ts +2 -0
- package/dist/settings/web/index.js +8 -0
- package/dist/settings/web/messages.js +146 -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 +6 -1
- package/dist/ui/api.js +2 -1
- package/dist/ui/app.js +51 -17
- package/dist/ui/components/AppIcon.js +33 -1
- package/dist/ui/components/Avatar.d.ts +21 -0
- package/dist/ui/components/Avatar.js +71 -0
- package/dist/ui/components/primitives.d.ts +2 -0
- package/dist/ui/components/primitives.js +7 -1
- package/dist/ui/i18n/messages.d.ts +53 -0
- package/dist/ui/i18n/messages.js +98 -0
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +2 -0
- package/dist/ui/offline/queue.d.ts +5 -1
- package/dist/ui/offline/queue.js +2 -0
- package/dist/ui/registry.d.ts +12 -1
- package/dist/ui/registry.js +10 -1
- package/dist/ui/search/ViewTabs.d.ts +14 -0
- package/dist/ui/search/ViewTabs.js +42 -0
- package/dist/ui/shell/Consent.d.ts +5 -0
- package/dist/ui/shell/Consent.js +35 -0
- package/dist/ui/shell/Home.js +136 -16
- package/dist/ui/shell/Sidebar.js +15 -22
- 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 +155 -31
- 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/project/module.d.ts
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
/** A column of the task kanban, shared by every project (per company later, if asked for). */
|
|
2
|
+
/** The company's project settings (RFC 0020): new tasks' planned hours, the step timesheets are entered in. */
|
|
3
|
+
export declare const CompanyProject: import("../server/orm.js").Extension<"res.company", {
|
|
4
|
+
readonly projectPlannedHoursDefault: import("../server/orm.js").DecimalField<{
|
|
5
|
+
readonly required: false;
|
|
6
|
+
readonly computed: false;
|
|
7
|
+
readonly inverse: false;
|
|
8
|
+
readonly sequence: false;
|
|
9
|
+
readonly computeName: undefined;
|
|
10
|
+
readonly store: true;
|
|
11
|
+
readonly hasDefault: false;
|
|
12
|
+
readonly readonly: false;
|
|
13
|
+
}>;
|
|
14
|
+
readonly projectTimesheetStep: import("../server/orm.js").SelectionField<"half" | "none" | "quarter" | "whole", {
|
|
15
|
+
readonly required: false;
|
|
16
|
+
readonly computed: false;
|
|
17
|
+
readonly inverse: false;
|
|
18
|
+
readonly sequence: false;
|
|
19
|
+
readonly computeName: undefined;
|
|
20
|
+
readonly store: true;
|
|
21
|
+
readonly hasDefault: true;
|
|
22
|
+
readonly readonly: false;
|
|
23
|
+
}>;
|
|
24
|
+
}, Record<never, never>>;
|
|
2
25
|
export declare const ProjectTaskStage: import("../server/orm.js").Model<"project.task.stage", {
|
|
3
26
|
readonly id: import("../server/orm.js").IdField<"project.task.stage">;
|
|
4
27
|
readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
@@ -1681,7 +1704,70 @@ export declare const projectShutro: import("../server/orm.js").Module<readonly [
|
|
|
1681
1704
|
readonly hasDefault: false;
|
|
1682
1705
|
readonly readonly: false;
|
|
1683
1706
|
}, string>;
|
|
1684
|
-
}>>], readonly [import("../server/orm.js").Module<readonly [import("../server/orm.js").Model<"res.partner", {
|
|
1707
|
+
}>>], readonly [import("../server/orm.js").Module<readonly [import("../server/orm.js").Model<"res.partner.tag", {
|
|
1708
|
+
readonly id: import("../server/orm.js").IdField<"res.partner.tag">;
|
|
1709
|
+
readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
1710
|
+
required: true;
|
|
1711
|
+
readonly: true;
|
|
1712
|
+
computed: false;
|
|
1713
|
+
inverse: false;
|
|
1714
|
+
hasDefault: false;
|
|
1715
|
+
sequence: false;
|
|
1716
|
+
}>;
|
|
1717
|
+
readonly updatedAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
1718
|
+
required: true;
|
|
1719
|
+
readonly: true;
|
|
1720
|
+
computed: false;
|
|
1721
|
+
inverse: false;
|
|
1722
|
+
hasDefault: false;
|
|
1723
|
+
sequence: false;
|
|
1724
|
+
}>;
|
|
1725
|
+
readonly createdBy: import("../server/orm.js").Many2oneField<'res.users', {
|
|
1726
|
+
required: false;
|
|
1727
|
+
readonly: true;
|
|
1728
|
+
computed: false;
|
|
1729
|
+
inverse: false;
|
|
1730
|
+
hasDefault: false;
|
|
1731
|
+
sequence: false;
|
|
1732
|
+
}>;
|
|
1733
|
+
readonly updatedBy: import("../server/orm.js").Many2oneField<'res.users', {
|
|
1734
|
+
required: false;
|
|
1735
|
+
readonly: true;
|
|
1736
|
+
computed: false;
|
|
1737
|
+
inverse: false;
|
|
1738
|
+
hasDefault: false;
|
|
1739
|
+
sequence: false;
|
|
1740
|
+
}>;
|
|
1741
|
+
readonly displayName: import("../server/orm.js").CharField<{
|
|
1742
|
+
required: true;
|
|
1743
|
+
readonly: true;
|
|
1744
|
+
computed: true;
|
|
1745
|
+
inverse: false;
|
|
1746
|
+
hasDefault: false;
|
|
1747
|
+
sequence: false;
|
|
1748
|
+
}>;
|
|
1749
|
+
readonly name: import("../server/orm.js").CharField<{
|
|
1750
|
+
readonly required: true;
|
|
1751
|
+
readonly computed: false;
|
|
1752
|
+
readonly inverse: false;
|
|
1753
|
+
readonly sequence: false;
|
|
1754
|
+
readonly computeName: undefined;
|
|
1755
|
+
readonly store: true;
|
|
1756
|
+
readonly hasDefault: false;
|
|
1757
|
+
readonly readonly: false;
|
|
1758
|
+
}, string>;
|
|
1759
|
+
}, {} & import("../server/orm.js").TransitionMethods<{
|
|
1760
|
+
readonly name: import("../server/orm.js").CharField<{
|
|
1761
|
+
readonly required: true;
|
|
1762
|
+
readonly computed: false;
|
|
1763
|
+
readonly inverse: false;
|
|
1764
|
+
readonly sequence: false;
|
|
1765
|
+
readonly computeName: undefined;
|
|
1766
|
+
readonly store: true;
|
|
1767
|
+
readonly hasDefault: false;
|
|
1768
|
+
readonly readonly: false;
|
|
1769
|
+
}, string>;
|
|
1770
|
+
}>>, import("../server/orm.js").Model<"res.partner", {
|
|
1685
1771
|
readonly id: import("../server/orm.js").IdField<"res.partner">;
|
|
1686
1772
|
readonly createdAt: import("../server/orm.js").ScalarField<'datetime', Date, Date, {
|
|
1687
1773
|
required: true;
|
|
@@ -1735,6 +1821,46 @@ export declare const projectShutro: import("../server/orm.js").Module<readonly [
|
|
|
1735
1821
|
readonly hasDefault: false;
|
|
1736
1822
|
readonly readonly: false;
|
|
1737
1823
|
}, string>;
|
|
1824
|
+
readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
|
|
1825
|
+
readonly required: false;
|
|
1826
|
+
readonly computed: false;
|
|
1827
|
+
readonly inverse: false;
|
|
1828
|
+
readonly sequence: false;
|
|
1829
|
+
readonly computeName: undefined;
|
|
1830
|
+
readonly store: true;
|
|
1831
|
+
readonly hasDefault: false;
|
|
1832
|
+
readonly readonly: false;
|
|
1833
|
+
}>;
|
|
1834
|
+
readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
|
|
1835
|
+
readonly required: true;
|
|
1836
|
+
readonly computed: false;
|
|
1837
|
+
readonly inverse: false;
|
|
1838
|
+
readonly sequence: false;
|
|
1839
|
+
readonly computeName: undefined;
|
|
1840
|
+
readonly store: true;
|
|
1841
|
+
readonly hasDefault: true;
|
|
1842
|
+
readonly readonly: false;
|
|
1843
|
+
}>;
|
|
1844
|
+
readonly latitude: import("../server/orm.js").DecimalField<{
|
|
1845
|
+
readonly required: false;
|
|
1846
|
+
readonly computed: false;
|
|
1847
|
+
readonly inverse: false;
|
|
1848
|
+
readonly sequence: false;
|
|
1849
|
+
readonly computeName: undefined;
|
|
1850
|
+
readonly store: true;
|
|
1851
|
+
readonly hasDefault: false;
|
|
1852
|
+
readonly readonly: false;
|
|
1853
|
+
}>;
|
|
1854
|
+
readonly longitude: import("../server/orm.js").DecimalField<{
|
|
1855
|
+
readonly required: false;
|
|
1856
|
+
readonly computed: false;
|
|
1857
|
+
readonly inverse: false;
|
|
1858
|
+
readonly sequence: false;
|
|
1859
|
+
readonly computeName: undefined;
|
|
1860
|
+
readonly store: true;
|
|
1861
|
+
readonly hasDefault: false;
|
|
1862
|
+
readonly readonly: false;
|
|
1863
|
+
}>;
|
|
1738
1864
|
readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
1739
1865
|
readonly required: true;
|
|
1740
1866
|
readonly computed: false;
|
|
@@ -1916,6 +2042,46 @@ export declare const projectShutro: import("../server/orm.js").Module<readonly [
|
|
|
1916
2042
|
readonly hasDefault: false;
|
|
1917
2043
|
readonly readonly: false;
|
|
1918
2044
|
}, string>;
|
|
2045
|
+
readonly image: import("../server/orm.js").Many2oneField<"storage.attachment", {
|
|
2046
|
+
readonly required: false;
|
|
2047
|
+
readonly computed: false;
|
|
2048
|
+
readonly inverse: false;
|
|
2049
|
+
readonly sequence: false;
|
|
2050
|
+
readonly computeName: undefined;
|
|
2051
|
+
readonly store: true;
|
|
2052
|
+
readonly hasDefault: false;
|
|
2053
|
+
readonly readonly: false;
|
|
2054
|
+
}>;
|
|
2055
|
+
readonly tags: import("../server/orm.js").Many2manyField<"res.partner.tag", {
|
|
2056
|
+
readonly required: true;
|
|
2057
|
+
readonly computed: false;
|
|
2058
|
+
readonly inverse: false;
|
|
2059
|
+
readonly sequence: false;
|
|
2060
|
+
readonly computeName: undefined;
|
|
2061
|
+
readonly store: true;
|
|
2062
|
+
readonly hasDefault: true;
|
|
2063
|
+
readonly readonly: false;
|
|
2064
|
+
}>;
|
|
2065
|
+
readonly latitude: import("../server/orm.js").DecimalField<{
|
|
2066
|
+
readonly required: false;
|
|
2067
|
+
readonly computed: false;
|
|
2068
|
+
readonly inverse: false;
|
|
2069
|
+
readonly sequence: false;
|
|
2070
|
+
readonly computeName: undefined;
|
|
2071
|
+
readonly store: true;
|
|
2072
|
+
readonly hasDefault: false;
|
|
2073
|
+
readonly readonly: false;
|
|
2074
|
+
}>;
|
|
2075
|
+
readonly longitude: import("../server/orm.js").DecimalField<{
|
|
2076
|
+
readonly required: false;
|
|
2077
|
+
readonly computed: false;
|
|
2078
|
+
readonly inverse: false;
|
|
2079
|
+
readonly sequence: false;
|
|
2080
|
+
readonly computeName: undefined;
|
|
2081
|
+
readonly store: true;
|
|
2082
|
+
readonly hasDefault: false;
|
|
2083
|
+
readonly readonly: false;
|
|
2084
|
+
}>;
|
|
1919
2085
|
readonly isCompany: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
1920
2086
|
readonly required: true;
|
|
1921
2087
|
readonly computed: false;
|
|
@@ -2086,4 +2252,46 @@ export declare const projectShutro: import("../server/orm.js").Module<readonly [
|
|
|
2086
2252
|
readonly hasDefault: false;
|
|
2087
2253
|
readonly readonly: false;
|
|
2088
2254
|
}>;
|
|
2089
|
-
}>>], readonly [import("../server/orm.js").Module<readonly import("../server/orm.js").AnyModel[], readonly import("../server/orm.js").ModuleBase[], readonly import("../server/orm.js").AnyExtension[]
|
|
2255
|
+
}>>], 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", {
|
|
2256
|
+
readonly contactTaxIdRequired: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
2257
|
+
readonly required: true;
|
|
2258
|
+
readonly computed: false;
|
|
2259
|
+
readonly inverse: false;
|
|
2260
|
+
readonly sequence: false;
|
|
2261
|
+
readonly computeName: undefined;
|
|
2262
|
+
readonly store: true;
|
|
2263
|
+
readonly hasDefault: true;
|
|
2264
|
+
readonly readonly: false;
|
|
2265
|
+
}>;
|
|
2266
|
+
readonly contactUniqueEmail: import("../server/orm.js").ScalarField<"boolean", boolean, boolean, {
|
|
2267
|
+
readonly required: true;
|
|
2268
|
+
readonly computed: false;
|
|
2269
|
+
readonly inverse: false;
|
|
2270
|
+
readonly sequence: false;
|
|
2271
|
+
readonly computeName: undefined;
|
|
2272
|
+
readonly store: true;
|
|
2273
|
+
readonly hasDefault: true;
|
|
2274
|
+
readonly readonly: false;
|
|
2275
|
+
}>;
|
|
2276
|
+
}, Record<never, never>>]>, 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", {
|
|
2277
|
+
readonly projectPlannedHoursDefault: import("../server/orm.js").DecimalField<{
|
|
2278
|
+
readonly required: false;
|
|
2279
|
+
readonly computed: false;
|
|
2280
|
+
readonly inverse: false;
|
|
2281
|
+
readonly sequence: false;
|
|
2282
|
+
readonly computeName: undefined;
|
|
2283
|
+
readonly store: true;
|
|
2284
|
+
readonly hasDefault: false;
|
|
2285
|
+
readonly readonly: false;
|
|
2286
|
+
}>;
|
|
2287
|
+
readonly projectTimesheetStep: import("../server/orm.js").SelectionField<"half" | "none" | "quarter" | "whole", {
|
|
2288
|
+
readonly required: false;
|
|
2289
|
+
readonly computed: false;
|
|
2290
|
+
readonly inverse: false;
|
|
2291
|
+
readonly sequence: false;
|
|
2292
|
+
readonly computeName: undefined;
|
|
2293
|
+
readonly store: true;
|
|
2294
|
+
readonly hasDefault: true;
|
|
2295
|
+
readonly readonly: false;
|
|
2296
|
+
}>;
|
|
2297
|
+
}, Record<never, never>>]>;
|
package/dist/project/module.js
CHANGED
|
@@ -7,11 +7,38 @@
|
|
|
7
7
|
import { contactsShutro } from '../contacts/index.js';
|
|
8
8
|
import { messagingShutro } from '../messaging/index.js';
|
|
9
9
|
import { orm } from '../server/orm.js';
|
|
10
|
-
import { compute, defineModel, defineModule, f, record } from './.kosh/bindings.js';
|
|
10
|
+
import { check, compute, defineModel, defineModule, extendModel, f, record, } from './.kosh/bindings.js';
|
|
11
11
|
const READ = ['read'];
|
|
12
12
|
const WRITE = ['read', 'write', 'create', 'unlink'];
|
|
13
13
|
const ALL = ['read', 'write', 'create', 'unlink', 'export', 'import'];
|
|
14
14
|
/** A column of the task kanban, shared by every project (per company later, if asked for). */
|
|
15
|
+
/** The company's project settings (RFC 0020): new tasks' planned hours, the step timesheets are entered in. */
|
|
16
|
+
export const CompanyProject = extendModel('res.company', {
|
|
17
|
+
fields: {
|
|
18
|
+
projectPlannedHoursDefault: f.decimal({ scale: 2, label: 'Planned hours of a new task' }),
|
|
19
|
+
projectTimesheetStep: f.selection({ none: 'Any', quarter: 'Quarter hours', half: 'Half hours', whole: 'Whole hours' }, { default: 'none', label: 'Timesheets in steps of' }),
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
/** The timesheet steps as hours. */
|
|
23
|
+
const STEPS = {
|
|
24
|
+
quarter: orm.toDecimal('0.25'),
|
|
25
|
+
half: orm.toDecimal('0.5'),
|
|
26
|
+
whole: orm.toDecimal('1'),
|
|
27
|
+
};
|
|
28
|
+
/** The current company's project settings. */
|
|
29
|
+
async function projectSettings(env) {
|
|
30
|
+
const [company] = (await env
|
|
31
|
+
.model('res.company')
|
|
32
|
+
.browse([env.companyId])
|
|
33
|
+
.load(['projectPlannedHoursDefault', 'projectTimesheetStep'])).read(['projectPlannedHoursDefault', 'projectTimesheetStep']);
|
|
34
|
+
const planned = company?.['projectPlannedHoursDefault'];
|
|
35
|
+
return {
|
|
36
|
+
plannedHours: planned === null || planned === undefined ? null : String(planned),
|
|
37
|
+
step: typeof company?.['projectTimesheetStep'] === 'string'
|
|
38
|
+
? company['projectTimesheetStep']
|
|
39
|
+
: 'none',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
15
42
|
export const ProjectTaskStage = defineModel('project.task.stage', {
|
|
16
43
|
label: 'Task stage',
|
|
17
44
|
order: ['sequence asc', 'id asc'],
|
|
@@ -127,11 +154,17 @@ export const ProjectTask = defineModel('project.task', {
|
|
|
127
154
|
timesheets: f.one2many('project.timesheet', 'task'),
|
|
128
155
|
},
|
|
129
156
|
onchange: {
|
|
130
|
-
// A task of a project takes the project's customer.
|
|
131
|
-
project: async (d) => {
|
|
157
|
+
// A task of a project takes the project's customer, and the company's planned hours when it has none.
|
|
158
|
+
project: async (d, env) => {
|
|
132
159
|
const p = await d.record('project');
|
|
160
|
+
const draft = d;
|
|
133
161
|
if (p?.partner)
|
|
134
|
-
|
|
162
|
+
draft.set('partner', p.partner.id);
|
|
163
|
+
if ((draft.get('plannedHours') ?? null) === null) {
|
|
164
|
+
const { plannedHours } = await projectSettings(env);
|
|
165
|
+
if (plannedHours !== null)
|
|
166
|
+
draft.set('plannedHours', plannedHours);
|
|
167
|
+
}
|
|
135
168
|
},
|
|
136
169
|
},
|
|
137
170
|
});
|
|
@@ -166,10 +199,23 @@ export const ProjectTimesheet = defineModel('project.timesheet', {
|
|
|
166
199
|
sqlConstraints: {
|
|
167
200
|
hoursPositive: { check: orm.sql `hours > 0`, message: 'Hours are positive.' },
|
|
168
201
|
},
|
|
202
|
+
constraints: {
|
|
203
|
+
// The company's step (App settings › Projects): quarter, half or whole hours.
|
|
204
|
+
hoursOnTheStep: {
|
|
205
|
+
...check('project.timesheet', ['hours'], async (lines) => {
|
|
206
|
+
const { step } = await projectSettings(lines.env);
|
|
207
|
+
const unit = STEPS[step];
|
|
208
|
+
if (unit === undefined)
|
|
209
|
+
return [];
|
|
210
|
+
return lines.filter((l) => !l.hours.mod(unit).isZero());
|
|
211
|
+
}),
|
|
212
|
+
message: 'Timesheet hours are entered in the company’s steps (App settings › Projects).',
|
|
213
|
+
},
|
|
214
|
+
},
|
|
169
215
|
});
|
|
170
216
|
export const projectShutro = defineModule({
|
|
171
217
|
name: 'project',
|
|
172
|
-
version: '0.
|
|
218
|
+
version: '0.2.0',
|
|
173
219
|
depends: [contactsShutro, messagingShutro],
|
|
174
220
|
groups: [
|
|
175
221
|
orm.defineGroup({
|
|
@@ -184,6 +230,7 @@ export const projectShutro = defineModule({
|
|
|
184
230
|
}),
|
|
185
231
|
],
|
|
186
232
|
models: [ProjectTaskStage, ProjectProject, ProjectTask, ProjectTimesheet],
|
|
233
|
+
extensions: [CompanyProject],
|
|
187
234
|
// The kanban every installation starts with (theirs to change afterwards).
|
|
188
235
|
data: [
|
|
189
236
|
record('project.task.stage', 'stage_new', { name: 'New', sequence: 1 }, { noupdate: true }),
|
|
@@ -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: d9d9d74bc29efc35
|
|
2
2
|
// Bindings of module `project_portal`: import the definition API from here to get types scoped to what it can see.
|
|
3
3
|
export { defineModel, defineModule, extendModel, f, replace } from '../../server/orm.js';
|
|
4
4
|
import { definitions } from '../../server/orm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash:
|
|
1
|
+
// GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: d9d9d74bc29efc35
|
|
2
2
|
// Schema view of module `project_portal` (RFC 0002 §7.7): the models it owns or depends on, with the extensions it can see.
|
|
3
3
|
import type { F } from '../../server/orm.js';
|
|
4
4
|
|
|
@@ -11,7 +11,9 @@ export interface SchemaView {
|
|
|
11
11
|
readonly 'auth.session': AuthSession;
|
|
12
12
|
readonly 'auth.user_grant': AuthUserGrant;
|
|
13
13
|
readonly 'auth.user_group': AuthUserGroup;
|
|
14
|
+
readonly 'kosh.image': KoshImage;
|
|
14
15
|
readonly 'kosh.saved_view': KoshSavedView;
|
|
16
|
+
readonly 'kosh.setting': KoshSetting;
|
|
15
17
|
readonly 'mail.activity': MailActivity;
|
|
16
18
|
readonly 'mail.activity.type': MailActivityType;
|
|
17
19
|
readonly 'mail.channel': MailChannel;
|
|
@@ -19,6 +21,10 @@ export interface SchemaView {
|
|
|
19
21
|
readonly 'mail.follower': MailFollower;
|
|
20
22
|
readonly 'mail.message': MailMessage;
|
|
21
23
|
readonly 'mail.message.reaction': MailMessageReaction;
|
|
24
|
+
readonly 'oauth.app': OauthApp;
|
|
25
|
+
readonly 'oauth.code': OauthCode;
|
|
26
|
+
readonly 'oauth.grant': OauthGrant;
|
|
27
|
+
readonly 'oauth.token': OauthToken;
|
|
22
28
|
readonly 'portal.announcement': PortalAnnouncement;
|
|
23
29
|
readonly 'portal.invitation': PortalInvitation;
|
|
24
30
|
readonly 'portal.signature': PortalSignature;
|
|
@@ -29,6 +35,7 @@ export interface SchemaView {
|
|
|
29
35
|
readonly 'res.company': ResCompany;
|
|
30
36
|
readonly 'res.currency': ResCurrency;
|
|
31
37
|
readonly 'res.partner': ResPartner;
|
|
38
|
+
readonly 'res.partner.tag': ResPartnerTag;
|
|
32
39
|
readonly 'res.users': ResUsers;
|
|
33
40
|
readonly 'storage.attachment': StorageAttachment;
|
|
34
41
|
}
|
|
@@ -202,6 +209,29 @@ export interface AuthUserGroup {
|
|
|
202
209
|
export interface AuthUserGroupMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'auth.user_group'> {
|
|
203
210
|
}
|
|
204
211
|
|
|
212
|
+
/** `kosh.image` (owner: base). */
|
|
213
|
+
export interface KoshImage {
|
|
214
|
+
readonly name: 'kosh.image';
|
|
215
|
+
readonly fields: {
|
|
216
|
+
readonly id: F.Id<'kosh.image'>;
|
|
217
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
218
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
219
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
220
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
221
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
222
|
+
readonly ownerModel: F.Char<{ readonly required: true }>;
|
|
223
|
+
readonly ownerId: F.Integer<{ readonly required: true }>;
|
|
224
|
+
readonly mime: F.Char<{ readonly required: true }>;
|
|
225
|
+
readonly data: F.Text<{ readonly required: true }>;
|
|
226
|
+
readonly hash: F.Char<{ readonly required: true }>;
|
|
227
|
+
};
|
|
228
|
+
readonly methods: KoshImageMethods;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/** Methods of `kosh.image`: declared ones and transitions. */
|
|
232
|
+
export interface KoshImageMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.image'> {
|
|
233
|
+
}
|
|
234
|
+
|
|
205
235
|
/** `kosh.saved_view` (owner: base). */
|
|
206
236
|
export interface KoshSavedView {
|
|
207
237
|
readonly name: 'kosh.saved_view';
|
|
@@ -226,6 +256,26 @@ export interface KoshSavedView {
|
|
|
226
256
|
export interface KoshSavedViewMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.saved_view'> {
|
|
227
257
|
}
|
|
228
258
|
|
|
259
|
+
/** `kosh.setting` (owner: base). */
|
|
260
|
+
export interface KoshSetting {
|
|
261
|
+
readonly name: 'kosh.setting';
|
|
262
|
+
readonly fields: {
|
|
263
|
+
readonly id: F.Id<'kosh.setting'>;
|
|
264
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
265
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
266
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
267
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
268
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
269
|
+
readonly key: F.Char<{ readonly required: true }>;
|
|
270
|
+
readonly value: F.Json;
|
|
271
|
+
};
|
|
272
|
+
readonly methods: KoshSettingMethods;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/** Methods of `kosh.setting`: declared ones and transitions. */
|
|
276
|
+
export interface KoshSettingMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.setting'> {
|
|
277
|
+
}
|
|
278
|
+
|
|
229
279
|
/** `mail.activity` (owner: messaging). */
|
|
230
280
|
export interface MailActivity {
|
|
231
281
|
readonly name: 'mail.activity';
|
|
@@ -404,6 +454,105 @@ export interface MailMessageReaction {
|
|
|
404
454
|
export interface MailMessageReactionMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.message.reaction'> {
|
|
405
455
|
}
|
|
406
456
|
|
|
457
|
+
/** `oauth.app` (owner: base). */
|
|
458
|
+
export interface OauthApp {
|
|
459
|
+
readonly name: 'oauth.app';
|
|
460
|
+
readonly fields: {
|
|
461
|
+
readonly id: F.Id<'oauth.app'>;
|
|
462
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
463
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
464
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
465
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
466
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
467
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
468
|
+
readonly clientId: F.Char<{ readonly required: true }>;
|
|
469
|
+
readonly secretHash: F.Char;
|
|
470
|
+
readonly confidential: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
471
|
+
readonly redirectUris: F.Text<{ readonly required: true }>;
|
|
472
|
+
readonly scopes: F.Char<{ readonly required: true }>;
|
|
473
|
+
readonly homepage: F.Char;
|
|
474
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
475
|
+
readonly owner: F.Many2one<'res.users'>;
|
|
476
|
+
};
|
|
477
|
+
readonly methods: OauthAppMethods;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/** Methods of `oauth.app`: declared ones and transitions. */
|
|
481
|
+
export interface OauthAppMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.app'> {
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
/** `oauth.code` (owner: base). */
|
|
485
|
+
export interface OauthCode {
|
|
486
|
+
readonly name: 'oauth.code';
|
|
487
|
+
readonly fields: {
|
|
488
|
+
readonly id: F.Id<'oauth.code'>;
|
|
489
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
490
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
491
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
492
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
493
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
494
|
+
readonly codeHash: F.Char<{ readonly required: true }>;
|
|
495
|
+
readonly grant: F.Many2one<'oauth.grant', { readonly required: true }>;
|
|
496
|
+
readonly redirectUri: F.Char<{ readonly required: true }>;
|
|
497
|
+
readonly challenge: F.Char;
|
|
498
|
+
readonly expiresAt: F.Datetime<{ readonly required: true }>;
|
|
499
|
+
readonly used: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
500
|
+
};
|
|
501
|
+
readonly methods: OauthCodeMethods;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/** Methods of `oauth.code`: declared ones and transitions. */
|
|
505
|
+
export interface OauthCodeMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.code'> {
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/** `oauth.grant` (owner: base). */
|
|
509
|
+
export interface OauthGrant {
|
|
510
|
+
readonly name: 'oauth.grant';
|
|
511
|
+
readonly fields: {
|
|
512
|
+
readonly id: F.Id<'oauth.grant'>;
|
|
513
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
514
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
515
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
516
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
517
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
518
|
+
readonly user: F.Many2one<'res.users', { readonly required: true }>;
|
|
519
|
+
readonly app: F.Many2one<'oauth.app', { readonly required: true }>;
|
|
520
|
+
readonly scopes: F.Char<{ readonly required: true }>;
|
|
521
|
+
readonly revoked: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
522
|
+
readonly lastUsedAt: F.Datetime;
|
|
523
|
+
};
|
|
524
|
+
readonly methods: OauthGrantMethods;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/** Methods of `oauth.grant`: declared ones and transitions. */
|
|
528
|
+
export interface OauthGrantMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.grant'> {
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/** `oauth.token` (owner: base). */
|
|
532
|
+
export interface OauthToken {
|
|
533
|
+
readonly name: 'oauth.token';
|
|
534
|
+
readonly fields: {
|
|
535
|
+
readonly id: F.Id<'oauth.token'>;
|
|
536
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
537
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
538
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
539
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
540
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
541
|
+
readonly grant: F.Many2one<'oauth.grant', { readonly required: true }>;
|
|
542
|
+
readonly accessHash: F.Char<{ readonly required: true }>;
|
|
543
|
+
readonly refreshHash: F.Char<{ readonly required: true }>;
|
|
544
|
+
readonly accessExpiresAt: F.Datetime<{ readonly required: true }>;
|
|
545
|
+
readonly refreshExpiresAt: F.Datetime<{ readonly required: true }>;
|
|
546
|
+
readonly revoked: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
547
|
+
readonly rotated: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
548
|
+
};
|
|
549
|
+
readonly methods: OauthTokenMethods;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
/** Methods of `oauth.token`: declared ones and transitions. */
|
|
553
|
+
export interface OauthTokenMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.token'> {
|
|
554
|
+
}
|
|
555
|
+
|
|
407
556
|
/** `portal.announcement` (owner: portal). */
|
|
408
557
|
export interface PortalAnnouncement {
|
|
409
558
|
readonly name: 'portal.announcement';
|
|
@@ -586,7 +735,7 @@ export interface ProjectTimesheet {
|
|
|
586
735
|
export interface ProjectTimesheetMethods extends F.Methods<typeof import('../../project/index.js').projectShutro, 'project.timesheet'> {
|
|
587
736
|
}
|
|
588
737
|
|
|
589
|
-
/** `res.company` (owner: base). */
|
|
738
|
+
/** `res.company` (owner: base; extended by: contacts, project). */
|
|
590
739
|
export interface ResCompany {
|
|
591
740
|
readonly name: 'res.company';
|
|
592
741
|
readonly fields: {
|
|
@@ -606,12 +755,16 @@ export interface ResCompany {
|
|
|
606
755
|
readonly email: F.Char;
|
|
607
756
|
readonly phone: F.Char;
|
|
608
757
|
readonly website: F.Char;
|
|
758
|
+
readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
|
|
759
|
+
readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
|
|
760
|
+
readonly projectPlannedHoursDefault: F.Decimal; // project
|
|
761
|
+
readonly projectTimesheetStep: F.Selection<'none' | 'quarter' | 'half' | 'whole', { readonly default: true }>; // project
|
|
609
762
|
};
|
|
610
763
|
readonly methods: ResCompanyMethods;
|
|
611
764
|
}
|
|
612
765
|
|
|
613
766
|
/** Methods of `res.company`: declared ones and transitions. */
|
|
614
|
-
export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'> {
|
|
767
|
+
export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'>, F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.company'>, F.Methods<typeof import('../../project/index.js').projectShutro, 'res.company'> {
|
|
615
768
|
}
|
|
616
769
|
|
|
617
770
|
/** `res.currency` (owner: base). */
|
|
@@ -648,6 +801,10 @@ export interface ResPartner {
|
|
|
648
801
|
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
649
802
|
readonly company: F.Many2one<'res.company', { readonly default: true }>;
|
|
650
803
|
readonly name: F.Char<{ readonly required: true }>;
|
|
804
|
+
readonly image: F.Many2one<'storage.attachment'>;
|
|
805
|
+
readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
|
|
806
|
+
readonly latitude: F.Decimal;
|
|
807
|
+
readonly longitude: F.Decimal;
|
|
651
808
|
readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
652
809
|
readonly parent: F.Many2one<'res.partner'>;
|
|
653
810
|
readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
|
|
@@ -674,6 +831,25 @@ export interface ResPartner {
|
|
|
674
831
|
export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.partner'> {
|
|
675
832
|
}
|
|
676
833
|
|
|
834
|
+
/** `res.partner.tag` (owner: contacts). */
|
|
835
|
+
export interface ResPartnerTag {
|
|
836
|
+
readonly name: 'res.partner.tag';
|
|
837
|
+
readonly fields: {
|
|
838
|
+
readonly id: F.Id<'res.partner.tag'>;
|
|
839
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
840
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
841
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
842
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
843
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
844
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
845
|
+
};
|
|
846
|
+
readonly methods: ResPartnerTagMethods;
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
/** Methods of `res.partner.tag`: declared ones and transitions. */
|
|
850
|
+
export interface ResPartnerTagMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner.tag'> {
|
|
851
|
+
}
|
|
852
|
+
|
|
677
853
|
/** `res.users` (owner: base; extended by: portal). */
|
|
678
854
|
export interface ResUsers {
|
|
679
855
|
readonly name: 'res.users';
|
|
@@ -720,6 +896,8 @@ export interface StorageAttachment {
|
|
|
720
896
|
readonly key: F.Char<{ readonly required: true }>;
|
|
721
897
|
readonly resModel: F.Char<{ readonly required: true }>;
|
|
722
898
|
readonly resId: F.Integer<{ readonly required: true }>;
|
|
899
|
+
readonly variantOf: F.Many2one<'storage.attachment'>;
|
|
900
|
+
readonly width: F.Integer;
|
|
723
901
|
};
|
|
724
902
|
readonly methods: StorageAttachmentMethods;
|
|
725
903
|
}
|