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
|
@@ -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: 32f956c99138a8eb
|
|
2
2
|
// Schema view of module `project` (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 'project.project': ProjectProject;
|
|
23
29
|
readonly 'project.task': ProjectTask;
|
|
24
30
|
readonly 'project.task.stage': ProjectTaskStage;
|
|
@@ -26,6 +32,7 @@ export interface SchemaView {
|
|
|
26
32
|
readonly 'res.company': ResCompany;
|
|
27
33
|
readonly 'res.currency': ResCurrency;
|
|
28
34
|
readonly 'res.partner': ResPartner;
|
|
35
|
+
readonly 'res.partner.tag': ResPartnerTag;
|
|
29
36
|
readonly 'res.users': ResUsers;
|
|
30
37
|
readonly 'storage.attachment': StorageAttachment;
|
|
31
38
|
}
|
|
@@ -199,6 +206,29 @@ export interface AuthUserGroup {
|
|
|
199
206
|
export interface AuthUserGroupMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'auth.user_group'> {
|
|
200
207
|
}
|
|
201
208
|
|
|
209
|
+
/** `kosh.image` (owner: base). */
|
|
210
|
+
export interface KoshImage {
|
|
211
|
+
readonly name: 'kosh.image';
|
|
212
|
+
readonly fields: {
|
|
213
|
+
readonly id: F.Id<'kosh.image'>;
|
|
214
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
215
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
216
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
217
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
218
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
219
|
+
readonly ownerModel: F.Char<{ readonly required: true }>;
|
|
220
|
+
readonly ownerId: F.Integer<{ readonly required: true }>;
|
|
221
|
+
readonly mime: F.Char<{ readonly required: true }>;
|
|
222
|
+
readonly data: F.Text<{ readonly required: true }>;
|
|
223
|
+
readonly hash: F.Char<{ readonly required: true }>;
|
|
224
|
+
};
|
|
225
|
+
readonly methods: KoshImageMethods;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/** Methods of `kosh.image`: declared ones and transitions. */
|
|
229
|
+
export interface KoshImageMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.image'> {
|
|
230
|
+
}
|
|
231
|
+
|
|
202
232
|
/** `kosh.saved_view` (owner: base). */
|
|
203
233
|
export interface KoshSavedView {
|
|
204
234
|
readonly name: 'kosh.saved_view';
|
|
@@ -223,6 +253,26 @@ export interface KoshSavedView {
|
|
|
223
253
|
export interface KoshSavedViewMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.saved_view'> {
|
|
224
254
|
}
|
|
225
255
|
|
|
256
|
+
/** `kosh.setting` (owner: base). */
|
|
257
|
+
export interface KoshSetting {
|
|
258
|
+
readonly name: 'kosh.setting';
|
|
259
|
+
readonly fields: {
|
|
260
|
+
readonly id: F.Id<'kosh.setting'>;
|
|
261
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
262
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
263
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
264
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
265
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
266
|
+
readonly key: F.Char<{ readonly required: true }>;
|
|
267
|
+
readonly value: F.Json;
|
|
268
|
+
};
|
|
269
|
+
readonly methods: KoshSettingMethods;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** Methods of `kosh.setting`: declared ones and transitions. */
|
|
273
|
+
export interface KoshSettingMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.setting'> {
|
|
274
|
+
}
|
|
275
|
+
|
|
226
276
|
/** `mail.activity` (owner: messaging). */
|
|
227
277
|
export interface MailActivity {
|
|
228
278
|
readonly name: 'mail.activity';
|
|
@@ -401,6 +451,105 @@ export interface MailMessageReaction {
|
|
|
401
451
|
export interface MailMessageReactionMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.message.reaction'> {
|
|
402
452
|
}
|
|
403
453
|
|
|
454
|
+
/** `oauth.app` (owner: base). */
|
|
455
|
+
export interface OauthApp {
|
|
456
|
+
readonly name: 'oauth.app';
|
|
457
|
+
readonly fields: {
|
|
458
|
+
readonly id: F.Id<'oauth.app'>;
|
|
459
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
460
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
461
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
462
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
463
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
464
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
465
|
+
readonly clientId: F.Char<{ readonly required: true }>;
|
|
466
|
+
readonly secretHash: F.Char;
|
|
467
|
+
readonly confidential: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
468
|
+
readonly redirectUris: F.Text<{ readonly required: true }>;
|
|
469
|
+
readonly scopes: F.Char<{ readonly required: true }>;
|
|
470
|
+
readonly homepage: F.Char;
|
|
471
|
+
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
472
|
+
readonly owner: F.Many2one<'res.users'>;
|
|
473
|
+
};
|
|
474
|
+
readonly methods: OauthAppMethods;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/** Methods of `oauth.app`: declared ones and transitions. */
|
|
478
|
+
export interface OauthAppMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.app'> {
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/** `oauth.code` (owner: base). */
|
|
482
|
+
export interface OauthCode {
|
|
483
|
+
readonly name: 'oauth.code';
|
|
484
|
+
readonly fields: {
|
|
485
|
+
readonly id: F.Id<'oauth.code'>;
|
|
486
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
487
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
488
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
489
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
490
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
491
|
+
readonly codeHash: F.Char<{ readonly required: true }>;
|
|
492
|
+
readonly grant: F.Many2one<'oauth.grant', { readonly required: true }>;
|
|
493
|
+
readonly redirectUri: F.Char<{ readonly required: true }>;
|
|
494
|
+
readonly challenge: F.Char;
|
|
495
|
+
readonly expiresAt: F.Datetime<{ readonly required: true }>;
|
|
496
|
+
readonly used: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
497
|
+
};
|
|
498
|
+
readonly methods: OauthCodeMethods;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/** Methods of `oauth.code`: declared ones and transitions. */
|
|
502
|
+
export interface OauthCodeMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.code'> {
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/** `oauth.grant` (owner: base). */
|
|
506
|
+
export interface OauthGrant {
|
|
507
|
+
readonly name: 'oauth.grant';
|
|
508
|
+
readonly fields: {
|
|
509
|
+
readonly id: F.Id<'oauth.grant'>;
|
|
510
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
511
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
512
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
513
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
514
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
515
|
+
readonly user: F.Many2one<'res.users', { readonly required: true }>;
|
|
516
|
+
readonly app: F.Many2one<'oauth.app', { readonly required: true }>;
|
|
517
|
+
readonly scopes: F.Char<{ readonly required: true }>;
|
|
518
|
+
readonly revoked: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
519
|
+
readonly lastUsedAt: F.Datetime;
|
|
520
|
+
};
|
|
521
|
+
readonly methods: OauthGrantMethods;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
/** Methods of `oauth.grant`: declared ones and transitions. */
|
|
525
|
+
export interface OauthGrantMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.grant'> {
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/** `oauth.token` (owner: base). */
|
|
529
|
+
export interface OauthToken {
|
|
530
|
+
readonly name: 'oauth.token';
|
|
531
|
+
readonly fields: {
|
|
532
|
+
readonly id: F.Id<'oauth.token'>;
|
|
533
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
534
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
535
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
536
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
537
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
538
|
+
readonly grant: F.Many2one<'oauth.grant', { readonly required: true }>;
|
|
539
|
+
readonly accessHash: F.Char<{ readonly required: true }>;
|
|
540
|
+
readonly refreshHash: F.Char<{ readonly required: true }>;
|
|
541
|
+
readonly accessExpiresAt: F.Datetime<{ readonly required: true }>;
|
|
542
|
+
readonly refreshExpiresAt: F.Datetime<{ readonly required: true }>;
|
|
543
|
+
readonly revoked: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
544
|
+
readonly rotated: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
545
|
+
};
|
|
546
|
+
readonly methods: OauthTokenMethods;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/** Methods of `oauth.token`: declared ones and transitions. */
|
|
550
|
+
export interface OauthTokenMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'oauth.token'> {
|
|
551
|
+
}
|
|
552
|
+
|
|
404
553
|
/** `project.project` (owner: project). */
|
|
405
554
|
export interface ProjectProject {
|
|
406
555
|
readonly name: 'project.project';
|
|
@@ -511,7 +660,7 @@ export interface ProjectTimesheet {
|
|
|
511
660
|
export interface ProjectTimesheetMethods extends F.Methods<typeof import('../module.js').projectShutro, 'project.timesheet'> {
|
|
512
661
|
}
|
|
513
662
|
|
|
514
|
-
/** `res.company` (owner: base). */
|
|
663
|
+
/** `res.company` (owner: base; extended by: contacts, project). */
|
|
515
664
|
export interface ResCompany {
|
|
516
665
|
readonly name: 'res.company';
|
|
517
666
|
readonly fields: {
|
|
@@ -531,12 +680,16 @@ export interface ResCompany {
|
|
|
531
680
|
readonly email: F.Char;
|
|
532
681
|
readonly phone: F.Char;
|
|
533
682
|
readonly website: F.Char;
|
|
683
|
+
readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
|
|
684
|
+
readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
|
|
685
|
+
readonly projectPlannedHoursDefault: F.Decimal; // project
|
|
686
|
+
readonly projectTimesheetStep: F.Selection<'none' | 'quarter' | 'half' | 'whole', { readonly default: true }>; // project
|
|
534
687
|
};
|
|
535
688
|
readonly methods: ResCompanyMethods;
|
|
536
689
|
}
|
|
537
690
|
|
|
538
691
|
/** Methods of `res.company`: declared ones and transitions. */
|
|
539
|
-
export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'> {
|
|
692
|
+
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('../module.js').projectShutro, 'res.company'> {
|
|
540
693
|
}
|
|
541
694
|
|
|
542
695
|
/** `res.currency` (owner: base). */
|
|
@@ -573,6 +726,10 @@ export interface ResPartner {
|
|
|
573
726
|
readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
574
727
|
readonly company: F.Many2one<'res.company', { readonly default: true }>;
|
|
575
728
|
readonly name: F.Char<{ readonly required: true }>;
|
|
729
|
+
readonly image: F.Many2one<'storage.attachment'>;
|
|
730
|
+
readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
|
|
731
|
+
readonly latitude: F.Decimal;
|
|
732
|
+
readonly longitude: F.Decimal;
|
|
576
733
|
readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
|
|
577
734
|
readonly parent: F.Many2one<'res.partner'>;
|
|
578
735
|
readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
|
|
@@ -598,6 +755,25 @@ export interface ResPartner {
|
|
|
598
755
|
export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'> {
|
|
599
756
|
}
|
|
600
757
|
|
|
758
|
+
/** `res.partner.tag` (owner: contacts). */
|
|
759
|
+
export interface ResPartnerTag {
|
|
760
|
+
readonly name: 'res.partner.tag';
|
|
761
|
+
readonly fields: {
|
|
762
|
+
readonly id: F.Id<'res.partner.tag'>;
|
|
763
|
+
readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
764
|
+
readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
|
|
765
|
+
readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
766
|
+
readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
|
|
767
|
+
readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
|
|
768
|
+
readonly name: F.Char<{ readonly required: true }>;
|
|
769
|
+
};
|
|
770
|
+
readonly methods: ResPartnerTagMethods;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
/** Methods of `res.partner.tag`: declared ones and transitions. */
|
|
774
|
+
export interface ResPartnerTagMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner.tag'> {
|
|
775
|
+
}
|
|
776
|
+
|
|
601
777
|
/** `res.users` (owner: base). */
|
|
602
778
|
export interface ResUsers {
|
|
603
779
|
readonly name: 'res.users';
|
|
@@ -643,6 +819,8 @@ export interface StorageAttachment {
|
|
|
643
819
|
readonly key: F.Char<{ readonly required: true }>;
|
|
644
820
|
readonly resModel: F.Char<{ readonly required: true }>;
|
|
645
821
|
readonly resId: F.Integer<{ readonly required: true }>;
|
|
822
|
+
readonly variantOf: F.Many2one<'storage.attachment'>;
|
|
823
|
+
readonly width: F.Integer;
|
|
646
824
|
};
|
|
647
825
|
readonly methods: StorageAttachmentMethods;
|
|
648
826
|
}
|
package/dist/project/index.js
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
import { contacts } from '../contacts/index.js';
|
|
8
8
|
import { messaging } from '../messaging/index.js';
|
|
9
9
|
import { defineModule } from '../modules-sdk/index.js';
|
|
10
|
-
import {
|
|
10
|
+
import { reporting } from '../reporting/index.js';
|
|
11
|
+
import { action, calendar, form, gantt, kanban, list, pivot, search } from '../views/index.js';
|
|
11
12
|
import { projectDemo, SUPPORT_PROJECT } from './demo.js';
|
|
12
13
|
import { ProjectProject, ProjectTask, ProjectTaskStage, ProjectTimesheet, projectShutro, } from './module.js';
|
|
13
14
|
export { SUPPORT_PROJECT } from './demo.js';
|
|
@@ -16,6 +17,30 @@ export const project = defineModule({
|
|
|
16
17
|
shutro: projectShutro,
|
|
17
18
|
kosh: '^0.1.0',
|
|
18
19
|
hooks: { demo: projectDemo },
|
|
20
|
+
// Defaults for tasks and timesheets (RFC 0020), per company.
|
|
21
|
+
settings: {
|
|
22
|
+
sections: [
|
|
23
|
+
{
|
|
24
|
+
key: 'work',
|
|
25
|
+
label: 'Tasks and timesheets',
|
|
26
|
+
description: 'What new tasks start with, and the steps timesheets are entered in.',
|
|
27
|
+
keywords: 'planned hours timesheet rounding step quarter half',
|
|
28
|
+
scope: 'company',
|
|
29
|
+
editors: ['project.manager'],
|
|
30
|
+
fields: [
|
|
31
|
+
{
|
|
32
|
+
key: 'projectPlannedHoursDefault',
|
|
33
|
+
min: 0,
|
|
34
|
+
help: 'Filled in on a new task when its project is chosen; each task can still be changed.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: 'projectTimesheetStep',
|
|
38
|
+
help: 'Hours that are not a multiple of the step are refused.',
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
},
|
|
19
44
|
// support@<inbound domain>: a task in the support project (RFC 0006 §7.1), or the first project there is.
|
|
20
45
|
inboundAliases: [
|
|
21
46
|
{
|
|
@@ -34,7 +59,7 @@ export const project = defineModule({
|
|
|
34
59
|
},
|
|
35
60
|
},
|
|
36
61
|
],
|
|
37
|
-
depends: [contacts, messaging],
|
|
62
|
+
depends: [contacts, messaging, reporting],
|
|
38
63
|
app: {
|
|
39
64
|
code: 'projects',
|
|
40
65
|
label: 'Projects',
|
|
@@ -51,10 +76,89 @@ export const project = defineModule({
|
|
|
51
76
|
implies: ['user'],
|
|
52
77
|
},
|
|
53
78
|
},
|
|
79
|
+
// The Overview (RFC 0022 step 2): what is open, where the hours go, who carries the load.
|
|
80
|
+
overview: {
|
|
81
|
+
cards: [
|
|
82
|
+
{
|
|
83
|
+
id: 'projects_all',
|
|
84
|
+
title: 'Projects',
|
|
85
|
+
kind: 'kpi',
|
|
86
|
+
model: 'project.project',
|
|
87
|
+
measure: 'count',
|
|
88
|
+
w: 3,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: 'open_tasks',
|
|
92
|
+
title: 'Open tasks',
|
|
93
|
+
kind: 'kpi',
|
|
94
|
+
model: 'project.task',
|
|
95
|
+
measure: 'count',
|
|
96
|
+
filter: { 'stage.done': false },
|
|
97
|
+
w: 3,
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 'hours_month',
|
|
101
|
+
title: 'Hours this month',
|
|
102
|
+
kind: 'kpi',
|
|
103
|
+
model: 'project.timesheet',
|
|
104
|
+
measure: 'sum:hours',
|
|
105
|
+
comparison: { field: 'date', mode: 'previous' },
|
|
106
|
+
w: 3,
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
id: 'planned_open',
|
|
110
|
+
title: 'Planned hours open',
|
|
111
|
+
kind: 'kpi',
|
|
112
|
+
model: 'project.task',
|
|
113
|
+
measure: 'sum:plannedHours',
|
|
114
|
+
filter: { 'stage.done': false },
|
|
115
|
+
w: 3,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
id: 'tasks_by_stage',
|
|
119
|
+
title: 'Tasks by stage',
|
|
120
|
+
kind: 'chart',
|
|
121
|
+
model: 'project.task',
|
|
122
|
+
measure: 'count',
|
|
123
|
+
groupBy: 'stage',
|
|
124
|
+
chart: 'bar',
|
|
125
|
+
w: 6,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
id: 'hours_by_project',
|
|
129
|
+
title: 'Hours by project',
|
|
130
|
+
kind: 'chart',
|
|
131
|
+
model: 'project.timesheet',
|
|
132
|
+
measure: 'sum:hours',
|
|
133
|
+
groupBy: 'project',
|
|
134
|
+
chart: 'pie',
|
|
135
|
+
w: 6,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
id: 'load_by_person',
|
|
139
|
+
title: 'Open tasks by person',
|
|
140
|
+
kind: 'chart',
|
|
141
|
+
model: 'project.task',
|
|
142
|
+
measure: 'count',
|
|
143
|
+
groupBy: 'assignee',
|
|
144
|
+
filter: { 'stage.done': false },
|
|
145
|
+
chart: 'bar',
|
|
146
|
+
w: 6,
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: 'busiest',
|
|
150
|
+
title: 'Projects with most hours',
|
|
151
|
+
kind: 'list',
|
|
152
|
+
model: 'project.project',
|
|
153
|
+
measure: 'sum:hours',
|
|
154
|
+
w: 6,
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
},
|
|
54
158
|
actions: {
|
|
55
159
|
'projects.action_projects': action(ProjectProject, {
|
|
56
160
|
label: 'Projects',
|
|
57
|
-
views: ['list', 'form'],
|
|
161
|
+
views: ['list', 'gantt', 'form'],
|
|
58
162
|
}),
|
|
59
163
|
'projects.action_tasks': action(ProjectTask, {
|
|
60
164
|
label: 'Tasks',
|
|
@@ -116,6 +220,31 @@ export const project = defineModule({
|
|
|
116
220
|
'project.project.form': form(ProjectProject, (k) => ({
|
|
117
221
|
header: { buttons: [] },
|
|
118
222
|
sheet: [
|
|
223
|
+
k.stats('related', [
|
|
224
|
+
{
|
|
225
|
+
id: 'project_tasks',
|
|
226
|
+
label: 'Tasks',
|
|
227
|
+
model: ProjectTask,
|
|
228
|
+
where: { project: { $record: 'id' } },
|
|
229
|
+
action: 'projects.action_tasks',
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
id: 'project_open_tasks',
|
|
233
|
+
label: 'Open',
|
|
234
|
+
model: ProjectTask,
|
|
235
|
+
where: { project: { $record: 'id' }, 'stage.done': false },
|
|
236
|
+
action: 'projects.action_tasks',
|
|
237
|
+
tone: 'warning',
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
id: 'project_hours',
|
|
241
|
+
label: 'Hours',
|
|
242
|
+
model: ProjectTimesheet,
|
|
243
|
+
where: { project: { $record: 'id' } },
|
|
244
|
+
measure: { sum: 'hours' },
|
|
245
|
+
action: 'projects.action_timesheets',
|
|
246
|
+
},
|
|
247
|
+
]),
|
|
119
248
|
k.group('main', ['name', 'partner', 'manager', 'sequence']),
|
|
120
249
|
k.group('dates', ['dateStart', 'dateEnd', 'taskCount', 'hours']),
|
|
121
250
|
k.group('about', ['description'], { columns: 1 }),
|
|
@@ -135,18 +264,29 @@ export const project = defineModule({
|
|
|
135
264
|
card: {
|
|
136
265
|
title: 'name',
|
|
137
266
|
subtitle: 'project',
|
|
138
|
-
|
|
139
|
-
|
|
267
|
+
avatar: 'assignee',
|
|
268
|
+
color: 'project',
|
|
269
|
+
footer: [
|
|
270
|
+
{ field: 'deadline', widget: 'daysLeft' },
|
|
271
|
+
{ field: 'priority', widget: 'priority' },
|
|
272
|
+
],
|
|
140
273
|
},
|
|
141
274
|
}),
|
|
275
|
+
// Projects on a timeline, from their start to their deadline.
|
|
276
|
+
'project.project.gantt': gantt(ProjectProject, {
|
|
277
|
+
dateStart: 'dateStart',
|
|
278
|
+
dateStop: 'dateEnd',
|
|
279
|
+
title: 'name',
|
|
280
|
+
scale: 'week',
|
|
281
|
+
}),
|
|
142
282
|
'project.task.list': list(ProjectTask, {
|
|
143
283
|
columns: [
|
|
144
284
|
'name',
|
|
145
285
|
'project',
|
|
146
286
|
'stage',
|
|
147
287
|
'assignee',
|
|
148
|
-
'deadline',
|
|
149
|
-
{ field: 'priority', widget: '
|
|
288
|
+
{ field: 'deadline', widget: 'daysLeft' },
|
|
289
|
+
{ field: 'priority', widget: 'priority' },
|
|
150
290
|
{ field: 'plannedHours', sum: true },
|
|
151
291
|
{ field: 'effectiveHours', sum: true },
|
|
152
292
|
],
|