shutro-erp 0.2.0 → 0.3.0

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.
Files changed (232) hide show
  1. package/README.md +17 -10
  2. package/dist/account_portal/.kosh/bindings.d.ts +22 -0
  3. package/dist/account_portal/.kosh/bindings.js +15 -0
  4. package/dist/account_portal/.kosh/schema.d.ts +1350 -0
  5. package/dist/account_portal/index.d.ts +3 -0
  6. package/dist/account_portal/index.js +73 -0
  7. package/dist/account_portal/module.d.ts +5983 -0
  8. package/dist/account_portal/module.js +18 -0
  9. package/dist/accounting/.kosh/bindings.js +1 -1
  10. package/dist/accounting/.kosh/schema.d.ts +142 -9
  11. package/dist/accounting/chart.d.ts +40 -8
  12. package/dist/accounting/chart.js +124 -30
  13. package/dist/accounting/closing.d.ts +6 -1
  14. package/dist/accounting/closing.js +5 -1
  15. package/dist/accounting/demo.js +6 -5
  16. package/dist/accounting/index.d.ts +3 -3
  17. package/dist/accounting/index.js +200 -23
  18. package/dist/accounting/module.d.ts +3326 -1086
  19. package/dist/accounting/module.js +408 -66
  20. package/dist/accounting/payments.d.ts +25 -0
  21. package/dist/accounting/payments.js +96 -4
  22. package/dist/accounting/web/RegisterPayment.d.ts +3 -2
  23. package/dist/accounting/web/RegisterPayment.js +39 -6
  24. package/dist/accounting/web/SettingsPage.js +5 -1
  25. package/dist/accounting/web/messages.js +10 -0
  26. package/dist/cli/index.d.ts +1 -1
  27. package/dist/cli/index.js +1 -1
  28. package/dist/cli/init.d.ts +5 -0
  29. package/dist/cli/init.js +195 -53
  30. package/dist/cli/launch.d.ts +16 -0
  31. package/dist/cli/launch.js +138 -0
  32. package/dist/cli/prompt.d.ts +35 -0
  33. package/dist/cli/prompt.js +46 -0
  34. package/dist/cli/templates.d.ts +11 -3
  35. package/dist/cli/templates.js +32 -7
  36. package/dist/cli/tui.d.ts +7 -0
  37. package/dist/cli/tui.js +254 -0
  38. package/dist/cli/ui.d.ts +25 -5
  39. package/dist/cli/ui.js +49 -9
  40. package/dist/contacts/.kosh/bindings.js +1 -1
  41. package/dist/contacts/.kosh/schema.d.ts +3 -1
  42. package/dist/contacts/index.js +24 -1
  43. package/dist/contacts/module.d.ts +42 -0
  44. package/dist/contacts/module.js +3 -1
  45. package/dist/import/convert.d.ts +55 -0
  46. package/dist/import/convert.js +224 -0
  47. package/dist/import/csv.d.ts +28 -0
  48. package/dist/import/csv.js +115 -0
  49. package/dist/import/index.d.ts +33 -0
  50. package/dist/import/index.js +60 -0
  51. package/dist/import/mapping.d.ts +15 -0
  52. package/dist/import/mapping.js +33 -0
  53. package/dist/import/match.d.ts +24 -0
  54. package/dist/import/match.js +60 -0
  55. package/dist/import/models.d.ts +2 -0
  56. package/dist/import/models.js +102 -0
  57. package/dist/import/routes.d.ts +13 -0
  58. package/dist/import/routes.js +392 -0
  59. package/dist/import/run.d.ts +131 -0
  60. package/dist/import/run.js +568 -0
  61. package/dist/import/service.d.ts +153 -0
  62. package/dist/import/service.js +367 -0
  63. package/dist/import/web/ImportButton.d.ts +7 -0
  64. package/dist/import/web/ImportButton.js +31 -0
  65. package/dist/import/web/ImportWizard.d.ts +75 -0
  66. package/dist/import/web/ImportWizard.js +217 -0
  67. package/dist/import/web/index.d.ts +13 -0
  68. package/dist/import/web/index.js +18 -0
  69. package/dist/import/web/messages.d.ts +2 -0
  70. package/dist/import/web/messages.js +139 -0
  71. package/dist/import/worker.d.ts +3 -0
  72. package/dist/import/worker.js +52 -0
  73. package/dist/import/xlsx.d.ts +20 -0
  74. package/dist/import/xlsx.js +192 -0
  75. package/dist/l10n_bd/.kosh/bindings.d.ts +22 -0
  76. package/dist/l10n_bd/.kosh/bindings.js +15 -0
  77. package/dist/l10n_bd/.kosh/schema.d.ts +1281 -0
  78. package/dist/l10n_bd/documents.d.ts +8 -0
  79. package/dist/l10n_bd/documents.js +183 -0
  80. package/dist/l10n_bd/index.d.ts +8 -0
  81. package/dist/l10n_bd/index.js +156 -0
  82. package/dist/l10n_bd/module.d.ts +5705 -0
  83. package/dist/l10n_bd/module.js +163 -0
  84. package/dist/l10n_bd/mushak.d.ts +67 -0
  85. package/dist/l10n_bd/mushak.js +139 -0
  86. package/dist/l10n_bd/routes.d.ts +3 -0
  87. package/dist/l10n_bd/routes.js +205 -0
  88. package/dist/l10n_bd/web/MushakPage.d.ts +7 -0
  89. package/dist/l10n_bd/web/MushakPage.js +53 -0
  90. package/dist/l10n_bd/web/index.d.ts +13 -0
  91. package/dist/l10n_bd/web/index.js +18 -0
  92. package/dist/l10n_bd/web/messages.d.ts +2 -0
  93. package/dist/l10n_bd/web/messages.js +101 -0
  94. package/dist/l10n_in/.kosh/bindings.d.ts +22 -0
  95. package/dist/l10n_in/.kosh/bindings.js +15 -0
  96. package/dist/l10n_in/.kosh/schema.d.ts +1343 -0
  97. package/dist/l10n_in/documents.d.ts +8 -0
  98. package/dist/l10n_in/documents.js +114 -0
  99. package/dist/l10n_in/einvoice.d.ts +253 -0
  100. package/dist/l10n_in/einvoice.js +485 -0
  101. package/dist/l10n_in/gstr.d.ts +109 -0
  102. package/dist/l10n_in/gstr.js +430 -0
  103. package/dist/l10n_in/index.d.ts +20 -0
  104. package/dist/l10n_in/index.js +232 -0
  105. package/dist/l10n_in/module.d.ts +7823 -0
  106. package/dist/l10n_in/module.js +427 -0
  107. package/dist/l10n_in/routes-einvoice.d.ts +15 -0
  108. package/dist/l10n_in/routes-einvoice.js +124 -0
  109. package/dist/l10n_in/routes.d.ts +17 -0
  110. package/dist/l10n_in/routes.js +282 -0
  111. package/dist/l10n_in/web/EInvoicePanel.d.ts +8 -0
  112. package/dist/l10n_in/web/EInvoicePanel.js +63 -0
  113. package/dist/l10n_in/web/GstPage.d.ts +7 -0
  114. package/dist/l10n_in/web/GstPage.js +57 -0
  115. package/dist/l10n_in/web/GstSettings.d.ts +10 -0
  116. package/dist/l10n_in/web/GstSettings.js +36 -0
  117. package/dist/l10n_in/web/index.d.ts +15 -0
  118. package/dist/l10n_in/web/index.js +22 -0
  119. package/dist/l10n_in/web/messages.d.ts +2 -0
  120. package/dist/l10n_in/web/messages.js +166 -0
  121. package/dist/modules-sdk/demo.d.ts +2 -0
  122. package/dist/modules-sdk/demo.js +7 -3
  123. package/dist/modules-sdk/index.d.ts +2 -2
  124. package/dist/modules-sdk/index.js +1 -1
  125. package/dist/modules-sdk/manifest.d.ts +132 -0
  126. package/dist/modules-sdk/manifest.js +22 -0
  127. package/dist/notify/inbox.js +21 -0
  128. package/dist/notify/messages.js +4 -0
  129. package/dist/notify/models.d.ts +1 -1
  130. package/dist/notify/models.js +2 -0
  131. package/dist/notify/web/messages.js +4 -0
  132. package/dist/portal/.kosh/bindings.d.ts +22 -0
  133. package/dist/portal/.kosh/bindings.js +15 -0
  134. package/dist/portal/.kosh/schema.d.ts +346 -0
  135. package/dist/portal/announce.d.ts +16 -0
  136. package/dist/portal/announce.js +117 -0
  137. package/dist/portal/documents.d.ts +17 -0
  138. package/dist/portal/documents.js +61 -0
  139. package/dist/portal/index.d.ts +20 -0
  140. package/dist/portal/index.js +65 -0
  141. package/dist/portal/module.d.ts +1405 -0
  142. package/dist/portal/module.js +84 -0
  143. package/dist/portal/routes-documents.d.ts +2 -0
  144. package/dist/portal/routes-documents.js +391 -0
  145. package/dist/portal/routes.d.ts +13 -0
  146. package/dist/portal/routes.js +313 -0
  147. package/dist/portal/rules.d.ts +11 -0
  148. package/dist/portal/rules.js +25 -0
  149. package/dist/portal/web/PortalAccess.d.ts +8 -0
  150. package/dist/portal/web/PortalAccess.js +66 -0
  151. package/dist/portal/web/index.d.ts +12 -0
  152. package/dist/portal/web/index.js +17 -0
  153. package/dist/portal/web/messages.d.ts +2 -0
  154. package/dist/portal/web/messages.js +33 -0
  155. package/dist/product/.kosh/bindings.js +1 -1
  156. package/dist/product/.kosh/schema.d.ts +12 -3
  157. package/dist/product/demo.js +6 -5
  158. package/dist/product/index.d.ts +1 -0
  159. package/dist/product/index.js +17 -4
  160. package/dist/product/module.d.ts +346 -14
  161. package/dist/product/module.js +48 -18
  162. package/dist/product/taxes.d.ts +59 -0
  163. package/dist/product/taxes.js +61 -0
  164. package/dist/project/.kosh/bindings.js +1 -1
  165. package/dist/project/.kosh/schema.d.ts +3 -1
  166. package/dist/project/module.d.ts +20 -0
  167. package/dist/project_portal/.kosh/bindings.d.ts +22 -0
  168. package/dist/project_portal/.kosh/bindings.js +15 -0
  169. package/dist/project_portal/.kosh/schema.d.ts +671 -0
  170. package/dist/project_portal/index.d.ts +9 -0
  171. package/dist/project_portal/index.js +42 -0
  172. package/dist/project_portal/module.d.ts +2142 -0
  173. package/dist/project_portal/module.js +22 -0
  174. package/dist/purchase/.kosh/bindings.js +1 -1
  175. package/dist/purchase/.kosh/schema.d.ts +15 -4
  176. package/dist/purchase/demo.js +3 -3
  177. package/dist/purchase/index.js +1 -1
  178. package/dist/purchase/module.d.ts +232 -8
  179. package/dist/purchase/module.js +51 -9
  180. package/dist/purchase_account/.kosh/bindings.js +1 -1
  181. package/dist/purchase_account/.kosh/schema.d.ts +144 -10
  182. package/dist/purchase_account/module.d.ts +2008 -641
  183. package/dist/purchase_account/module.js +2 -2
  184. package/dist/purchase_portal/.kosh/bindings.d.ts +22 -0
  185. package/dist/purchase_portal/.kosh/bindings.js +15 -0
  186. package/dist/purchase_portal/.kosh/schema.d.ts +822 -0
  187. package/dist/purchase_portal/index.d.ts +9 -0
  188. package/dist/purchase_portal/index.js +53 -0
  189. package/dist/purchase_portal/module.d.ts +2758 -0
  190. package/dist/purchase_portal/module.js +18 -0
  191. package/dist/reporting/documents.js +20 -3
  192. package/dist/reporting/index.d.ts +1 -0
  193. package/dist/reporting/index.js +1 -0
  194. package/dist/reporting/routes-documents.js +9 -2
  195. package/dist/reporting/words.d.ts +11 -0
  196. package/dist/reporting/words.js +229 -0
  197. package/dist/sale_account/.kosh/bindings.js +1 -1
  198. package/dist/sale_account/.kosh/schema.d.ts +144 -10
  199. package/dist/sale_account/module.d.ts +2008 -641
  200. package/dist/sale_account/module.js +3 -3
  201. package/dist/sale_portal/.kosh/bindings.d.ts +22 -0
  202. package/dist/sale_portal/.kosh/bindings.js +15 -0
  203. package/dist/sale_portal/.kosh/schema.d.ts +736 -0
  204. package/dist/sale_portal/index.d.ts +9 -0
  205. package/dist/sale_portal/index.js +71 -0
  206. package/dist/sale_portal/module.d.ts +2718 -0
  207. package/dist/sale_portal/module.js +19 -0
  208. package/dist/sale_project/.kosh/bindings.js +1 -1
  209. package/dist/sale_project/.kosh/schema.d.ts +15 -4
  210. package/dist/sale_project/module.d.ts +390 -10
  211. package/dist/sales/.kosh/bindings.js +1 -1
  212. package/dist/sales/.kosh/schema.d.ts +15 -4
  213. package/dist/sales/demo.js +3 -3
  214. package/dist/sales/index.js +67 -1
  215. package/dist/sales/module.d.ts +232 -8
  216. package/dist/sales/module.js +51 -12
  217. package/dist/server/auth/base.js +2 -0
  218. package/dist/server/auth/service.d.ts +2 -0
  219. package/dist/server/auth/service.js +7 -1
  220. package/dist/server/index.d.ts +1 -1
  221. package/dist/server/index.js +1 -1
  222. package/dist/server/server.js +26 -1
  223. package/dist/ui/api.d.ts +2 -0
  224. package/dist/ui/app.js +1 -1
  225. package/dist/ui/context.d.ts +3 -1
  226. package/dist/ui/context.js +2 -2
  227. package/dist/ui/index.d.ts +1 -1
  228. package/dist/ui/index.js +1 -1
  229. package/dist/ui/lib/format.d.ts +2 -0
  230. package/dist/ui/lib/format.js +3 -1
  231. package/dist/ui/views/FormView.js +19 -6
  232. package/package.json +50 -2
@@ -0,0 +1,671 @@
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: b801d3f400fa92ad
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
+ import type { F } from '../../server/orm.js';
4
+
5
+ /** Model name → model type (RFC 0002 §7.7). */
6
+ export interface SchemaView {
7
+ readonly 'audit.event': AuditEvent;
8
+ readonly 'auth.credential': AuthCredential;
9
+ readonly 'auth.session': AuthSession;
10
+ readonly 'auth.user_grant': AuthUserGrant;
11
+ readonly 'auth.user_group': AuthUserGroup;
12
+ readonly 'kosh.saved_view': KoshSavedView;
13
+ readonly 'mail.activity': MailActivity;
14
+ readonly 'mail.activity.type': MailActivityType;
15
+ readonly 'mail.channel': MailChannel;
16
+ readonly 'mail.channel.member': MailChannelMember;
17
+ readonly 'mail.follower': MailFollower;
18
+ readonly 'mail.message': MailMessage;
19
+ readonly 'mail.message.reaction': MailMessageReaction;
20
+ readonly 'portal.announcement': PortalAnnouncement;
21
+ readonly 'portal.invitation': PortalInvitation;
22
+ readonly 'portal.signature': PortalSignature;
23
+ readonly 'project.project': ProjectProject;
24
+ readonly 'project.task': ProjectTask;
25
+ readonly 'project.task.stage': ProjectTaskStage;
26
+ readonly 'project.timesheet': ProjectTimesheet;
27
+ readonly 'res.company': ResCompany;
28
+ readonly 'res.currency': ResCurrency;
29
+ readonly 'res.partner': ResPartner;
30
+ readonly 'res.users': ResUsers;
31
+ readonly 'storage.attachment': StorageAttachment;
32
+ }
33
+
34
+ /** `audit.event` (owner: base). */
35
+ export interface AuditEvent {
36
+ readonly name: 'audit.event';
37
+ readonly fields: {
38
+ readonly id: F.Id<'audit.event'>;
39
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
40
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
41
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
42
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
43
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
44
+ readonly kind: F.Char<{ readonly required: true }>;
45
+ readonly actor: F.Many2one<'res.users'>;
46
+ readonly company: F.Many2one<'res.company'>;
47
+ readonly targetModel: F.Char;
48
+ readonly targetId: F.Integer;
49
+ readonly summary: F.Char<{ readonly required: true }>;
50
+ readonly details: F.Json;
51
+ readonly ip: F.Char;
52
+ };
53
+ readonly methods: AuditEventMethods;
54
+ }
55
+
56
+ /** Methods of `audit.event`: declared ones and transitions. */
57
+ export interface AuditEventMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'audit.event'> {
58
+ }
59
+
60
+ /** `auth.credential` (owner: base). */
61
+ export interface AuthCredential {
62
+ readonly name: 'auth.credential';
63
+ readonly fields: {
64
+ readonly id: F.Id<'auth.credential'>;
65
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
66
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
67
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
68
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
69
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
70
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
71
+ readonly passwordHash: F.Char;
72
+ readonly totpSecret: F.Char;
73
+ readonly totpEnabled: F.Bool<{ readonly required: true; readonly default: true }>;
74
+ readonly recoveryCodes: F.Json;
75
+ };
76
+ readonly methods: AuthCredentialMethods;
77
+ }
78
+
79
+ /** Methods of `auth.credential`: declared ones and transitions. */
80
+ export interface AuthCredentialMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'auth.credential'> {
81
+ }
82
+
83
+ /** `auth.session` (owner: base). */
84
+ export interface AuthSession {
85
+ readonly name: 'auth.session';
86
+ readonly fields: {
87
+ readonly id: F.Id<'auth.session'>;
88
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
89
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
90
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
91
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
92
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
93
+ readonly tokenHash: F.Char<{ readonly required: true }>;
94
+ readonly csrfHash: F.Char<{ readonly required: true }>;
95
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
96
+ readonly twoFactorVerified: F.Bool<{ readonly required: true; readonly default: true }>;
97
+ readonly secondFactor: F.Bool<{ readonly required: true; readonly default: true }>;
98
+ readonly expiresAt: F.Datetime<{ readonly required: true }>;
99
+ readonly lastSeenAt: F.Datetime<{ readonly required: true }>;
100
+ readonly revoked: F.Bool<{ readonly required: true; readonly default: true }>;
101
+ readonly ip: F.Char;
102
+ readonly userAgent: F.Char;
103
+ };
104
+ readonly methods: AuthSessionMethods;
105
+ }
106
+
107
+ /** Methods of `auth.session`: declared ones and transitions. */
108
+ export interface AuthSessionMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'auth.session'> {
109
+ }
110
+
111
+ /** `auth.user_grant` (owner: base). */
112
+ export interface AuthUserGrant {
113
+ readonly name: 'auth.user_grant';
114
+ readonly fields: {
115
+ readonly id: F.Id<'auth.user_grant'>;
116
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
117
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
118
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
119
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
120
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
121
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
122
+ readonly company: F.Many2one<'res.company'>;
123
+ readonly grant: F.Char<{ readonly required: true }>;
124
+ readonly expiresAt: F.Datetime;
125
+ readonly reason: F.Char<{ readonly required: true }>;
126
+ };
127
+ readonly methods: AuthUserGrantMethods;
128
+ }
129
+
130
+ /** Methods of `auth.user_grant`: declared ones and transitions. */
131
+ export interface AuthUserGrantMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'auth.user_grant'> {
132
+ }
133
+
134
+ /** `auth.user_group` (owner: base). */
135
+ export interface AuthUserGroup {
136
+ readonly name: 'auth.user_group';
137
+ readonly fields: {
138
+ readonly id: F.Id<'auth.user_group'>;
139
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
140
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
141
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
142
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
143
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
144
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
145
+ readonly company: F.Many2one<'res.company'>;
146
+ readonly group: F.Char<{ readonly required: true }>;
147
+ };
148
+ readonly methods: AuthUserGroupMethods;
149
+ }
150
+
151
+ /** Methods of `auth.user_group`: declared ones and transitions. */
152
+ export interface AuthUserGroupMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'auth.user_group'> {
153
+ }
154
+
155
+ /** `kosh.saved_view` (owner: base). */
156
+ export interface KoshSavedView {
157
+ readonly name: 'kosh.saved_view';
158
+ readonly fields: {
159
+ readonly id: F.Id<'kosh.saved_view'>;
160
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
161
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
162
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
163
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
164
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
165
+ readonly name: F.Char<{ readonly required: true }>;
166
+ readonly targetModel: F.Char<{ readonly required: true }>;
167
+ readonly viewType: F.Char<{ readonly required: true; readonly default: true }>;
168
+ readonly state: F.Json<unknown, { readonly required: true }>;
169
+ readonly shared: F.Bool<{ readonly required: true; readonly default: true }>;
170
+ readonly isDefault: F.Bool<{ readonly required: true; readonly default: true }>;
171
+ };
172
+ readonly methods: KoshSavedViewMethods;
173
+ }
174
+
175
+ /** Methods of `kosh.saved_view`: declared ones and transitions. */
176
+ export interface KoshSavedViewMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.saved_view'> {
177
+ }
178
+
179
+ /** `mail.activity` (owner: messaging). */
180
+ export interface MailActivity {
181
+ readonly name: 'mail.activity';
182
+ readonly fields: {
183
+ readonly id: F.Id<'mail.activity'>;
184
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
185
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
186
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
187
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
188
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
189
+ readonly resModel: F.Char<{ readonly required: true }>;
190
+ readonly resId: F.Integer<{ readonly required: true }>;
191
+ readonly type: F.Many2one<'mail.activity.type', { readonly required: true }>;
192
+ readonly summary: F.Char;
193
+ readonly note: F.Text;
194
+ readonly deadline: F.DateOnly<{ readonly required: true }>;
195
+ readonly assignee: F.Many2one<'res.users', { readonly required: true }>;
196
+ readonly done: F.Bool<{ readonly required: true; readonly default: true }>;
197
+ readonly doneAt: F.Datetime;
198
+ readonly feedback: F.Text;
199
+ };
200
+ readonly methods: MailActivityMethods;
201
+ }
202
+
203
+ /** Methods of `mail.activity`: declared ones and transitions. */
204
+ export interface MailActivityMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.activity'> {
205
+ }
206
+
207
+ /** `mail.activity.type` (owner: messaging). */
208
+ export interface MailActivityType {
209
+ readonly name: 'mail.activity.type';
210
+ readonly fields: {
211
+ readonly id: F.Id<'mail.activity.type'>;
212
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
213
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
214
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
215
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
216
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
217
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
218
+ readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
219
+ readonly key: F.Char;
220
+ readonly icon: F.Char<{ readonly default: true }>;
221
+ readonly days: F.Integer<{ readonly default: true }>;
222
+ readonly sequence: F.Integer<{ readonly default: true }>;
223
+ };
224
+ readonly methods: MailActivityTypeMethods;
225
+ }
226
+
227
+ /** Methods of `mail.activity.type`: declared ones and transitions. */
228
+ export interface MailActivityTypeMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.activity.type'> {
229
+ }
230
+
231
+ /** `mail.channel` (owner: messaging). */
232
+ export interface MailChannel {
233
+ readonly name: 'mail.channel';
234
+ readonly fields: {
235
+ readonly id: F.Id<'mail.channel'>;
236
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
237
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
238
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
239
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
240
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
241
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
242
+ readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
243
+ readonly name: F.Char<{ readonly required: true }>;
244
+ readonly kind: F.Selection<'channel' | 'group' | 'direct', { readonly required: true; readonly default: true }>;
245
+ readonly description: F.Char;
246
+ readonly public: F.Bool<{ readonly required: true; readonly default: true }>;
247
+ readonly members: F.One2many<'mail.channel.member', { readonly required: true }>;
248
+ readonly pairKey: F.Char;
249
+ readonly lastMessageAt: F.Datetime;
250
+ };
251
+ readonly methods: MailChannelMethods;
252
+ }
253
+
254
+ /** Methods of `mail.channel`: declared ones and transitions. */
255
+ export interface MailChannelMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.channel'> {
256
+ }
257
+
258
+ /** `mail.channel.member` (owner: messaging). */
259
+ export interface MailChannelMember {
260
+ readonly name: 'mail.channel.member';
261
+ readonly fields: {
262
+ readonly id: F.Id<'mail.channel.member'>;
263
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
264
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
265
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
266
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
267
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
268
+ readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
269
+ readonly channel: F.Many2one<'mail.channel', { readonly required: true }>;
270
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
271
+ readonly lastReadMessage: F.Many2one<'mail.message'>;
272
+ readonly muted: F.Bool<{ readonly required: true; readonly default: true }>;
273
+ readonly pinned: F.Bool<{ readonly required: true; readonly default: true }>;
274
+ };
275
+ readonly methods: MailChannelMemberMethods;
276
+ }
277
+
278
+ /** Methods of `mail.channel.member`: declared ones and transitions. */
279
+ export interface MailChannelMemberMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.channel.member'> {
280
+ }
281
+
282
+ /** `mail.follower` (owner: messaging). */
283
+ export interface MailFollower {
284
+ readonly name: 'mail.follower';
285
+ readonly fields: {
286
+ readonly id: F.Id<'mail.follower'>;
287
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
288
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
289
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
290
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
291
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
292
+ readonly resModel: F.Char<{ readonly required: true }>;
293
+ readonly resId: F.Integer<{ readonly required: true }>;
294
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
295
+ };
296
+ readonly methods: MailFollowerMethods;
297
+ }
298
+
299
+ /** Methods of `mail.follower`: declared ones and transitions. */
300
+ export interface MailFollowerMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.follower'> {
301
+ }
302
+
303
+ /** `mail.message` (owner: messaging). */
304
+ export interface MailMessage {
305
+ readonly name: 'mail.message';
306
+ readonly fields: {
307
+ readonly id: F.Id<'mail.message'>;
308
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
309
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
310
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
311
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
312
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
313
+ readonly resModel: F.Char<{ readonly required: true }>;
314
+ readonly resId: F.Integer<{ readonly required: true }>;
315
+ readonly kind: F.Selection<'comment' | 'note' | 'activity' | 'system', { readonly required: true; readonly default: true }>;
316
+ readonly author: F.Many2one<'res.users'>;
317
+ readonly authorEmail: F.Char;
318
+ readonly authorName: F.Char;
319
+ readonly text: F.Text<{ readonly required: true }>;
320
+ readonly body: F.Text<{ readonly required: true }>;
321
+ readonly mentions: F.Many2many<'res.users', { readonly required: true }>;
322
+ readonly attachments: F.Many2many<'storage.attachment', { readonly required: true }>;
323
+ readonly editedAt: F.Datetime;
324
+ readonly parent: F.Many2one<'mail.message'>;
325
+ readonly replyCount: F.Integer<{ readonly required: true; readonly default: true }>;
326
+ readonly reactions: F.One2many<'mail.message.reaction', { readonly required: true }>;
327
+ readonly deletedAt: F.Datetime;
328
+ };
329
+ readonly methods: MailMessageMethods;
330
+ }
331
+
332
+ /** Methods of `mail.message`: declared ones and transitions. */
333
+ export interface MailMessageMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.message'> {
334
+ }
335
+
336
+ /** `mail.message.reaction` (owner: messaging). */
337
+ export interface MailMessageReaction {
338
+ readonly name: 'mail.message.reaction';
339
+ readonly fields: {
340
+ readonly id: F.Id<'mail.message.reaction'>;
341
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
342
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
343
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
344
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
345
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
346
+ readonly message: F.Many2one<'mail.message', { readonly required: true }>;
347
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
348
+ readonly emoji: F.Char<{ readonly required: true }>;
349
+ };
350
+ readonly methods: MailMessageReactionMethods;
351
+ }
352
+
353
+ /** Methods of `mail.message.reaction`: declared ones and transitions. */
354
+ export interface MailMessageReactionMethods extends F.Methods<typeof import('../../messaging/index.js').messagingShutro, 'mail.message.reaction'> {
355
+ }
356
+
357
+ /** `portal.announcement` (owner: portal). */
358
+ export interface PortalAnnouncement {
359
+ readonly name: 'portal.announcement';
360
+ readonly fields: {
361
+ readonly id: F.Id<'portal.announcement'>;
362
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
363
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
364
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
365
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
366
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
367
+ readonly resModel: F.Char<{ readonly required: true }>;
368
+ readonly resId: F.Integer<{ readonly required: true }>;
369
+ readonly document: F.Char<{ readonly required: true }>;
370
+ readonly recipients: F.Integer<{ readonly required: true; readonly default: true }>;
371
+ };
372
+ readonly methods: PortalAnnouncementMethods;
373
+ }
374
+
375
+ /** Methods of `portal.announcement`: declared ones and transitions. */
376
+ export interface PortalAnnouncementMethods extends F.Methods<typeof import('../../portal/index.js').portalShutro, 'portal.announcement'> {
377
+ }
378
+
379
+ /** `portal.invitation` (owner: portal). */
380
+ export interface PortalInvitation {
381
+ readonly name: 'portal.invitation';
382
+ readonly fields: {
383
+ readonly id: F.Id<'portal.invitation'>;
384
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
385
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
386
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
387
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
388
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
389
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
390
+ readonly tokenHash: F.Char<{ readonly required: true }>;
391
+ readonly expiresAt: F.Datetime<{ readonly required: true }>;
392
+ readonly usedAt: F.Datetime;
393
+ readonly invitedBy: F.Many2one<'res.users'>;
394
+ };
395
+ readonly methods: PortalInvitationMethods;
396
+ }
397
+
398
+ /** Methods of `portal.invitation`: declared ones and transitions. */
399
+ export interface PortalInvitationMethods extends F.Methods<typeof import('../../portal/index.js').portalShutro, 'portal.invitation'> {
400
+ }
401
+
402
+ /** `portal.signature` (owner: portal). */
403
+ export interface PortalSignature {
404
+ readonly name: 'portal.signature';
405
+ readonly fields: {
406
+ readonly id: F.Id<'portal.signature'>;
407
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
408
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
409
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
410
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
411
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
412
+ readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
413
+ readonly resModel: F.Char<{ readonly required: true }>;
414
+ readonly resId: F.Integer<{ readonly required: true }>;
415
+ readonly action: F.Char<{ readonly required: true }>;
416
+ readonly user: F.Many2one<'res.users', { readonly required: true }>;
417
+ readonly signedName: F.Char<{ readonly required: true }>;
418
+ readonly image: F.Binary;
419
+ readonly documentHash: F.Char<{ readonly required: true }>;
420
+ readonly ip: F.Char;
421
+ };
422
+ readonly methods: PortalSignatureMethods;
423
+ }
424
+
425
+ /** Methods of `portal.signature`: declared ones and transitions. */
426
+ export interface PortalSignatureMethods extends F.Methods<typeof import('../../portal/index.js').portalShutro, 'portal.signature'> {
427
+ }
428
+
429
+ /** `project.project` (owner: project; extended by: project_portal). */
430
+ export interface ProjectProject {
431
+ readonly name: 'project.project';
432
+ readonly fields: {
433
+ readonly id: F.Id<'project.project'>;
434
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
435
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
436
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
437
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
438
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
439
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
440
+ readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
441
+ readonly name: F.Char<{ readonly required: true }>;
442
+ readonly partner: F.Many2one<'res.partner'>;
443
+ readonly manager: F.Many2one<'res.users', { readonly default: true }>;
444
+ readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
445
+ readonly dateStart: F.DateOnly;
446
+ readonly dateEnd: F.DateOnly;
447
+ readonly description: F.Text;
448
+ readonly tasks: F.One2many<'project.task', { readonly required: true }>;
449
+ readonly taskCount: F.Integer<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
450
+ readonly hours: F.Decimal<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
451
+ };
452
+ readonly methods: ProjectProjectMethods;
453
+ }
454
+
455
+ /** Methods of `project.project`: declared ones and transitions. */
456
+ export interface ProjectProjectMethods extends F.Methods<typeof import('../../project/index.js').projectShutro, 'project.project'>, F.Methods<typeof import('../module.js').projectPortalShutro, 'project.project'> {
457
+ }
458
+
459
+ /** `project.task` (owner: project; extended by: project_portal). */
460
+ export interface ProjectTask {
461
+ readonly name: 'project.task';
462
+ readonly fields: {
463
+ readonly id: F.Id<'project.task'>;
464
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
465
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
466
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
467
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
468
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
469
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
470
+ readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
471
+ readonly name: F.Char<{ readonly required: true }>;
472
+ readonly project: F.Many2one<'project.project', { readonly required: true }>;
473
+ readonly stage: F.Many2one<'project.task.stage'>;
474
+ readonly assignee: F.Many2one<'res.users'>;
475
+ readonly partner: F.Many2one<'res.partner'>;
476
+ readonly priority: F.Selection<'normal' | 'high', { readonly required: true; readonly default: true }>;
477
+ readonly deadline: F.DateOnly;
478
+ readonly plannedHours: F.Decimal;
479
+ readonly effectiveHours: F.Decimal<{ readonly readonly: true; readonly compute: true; readonly store: true }>;
480
+ readonly done: F.Bool<{ readonly required: true; readonly readonly: true; readonly default: true; readonly compute: true; readonly store: true }>;
481
+ readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
482
+ readonly description: F.Text;
483
+ readonly timesheets: F.One2many<'project.timesheet', { readonly required: true }>;
484
+ };
485
+ readonly methods: ProjectTaskMethods;
486
+ }
487
+
488
+ /** Methods of `project.task`: declared ones and transitions. */
489
+ export interface ProjectTaskMethods extends F.Methods<typeof import('../../project/index.js').projectShutro, 'project.task'>, F.Methods<typeof import('../module.js').projectPortalShutro, 'project.task'> {
490
+ }
491
+
492
+ /** `project.task.stage` (owner: project). */
493
+ export interface ProjectTaskStage {
494
+ readonly name: 'project.task.stage';
495
+ readonly fields: {
496
+ readonly id: F.Id<'project.task.stage'>;
497
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
498
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
499
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
500
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
501
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
502
+ readonly name: F.Char<{ readonly required: true; readonly translate: true }>;
503
+ readonly sequence: F.Integer<{ readonly required: true; readonly default: true }>;
504
+ readonly fold: F.Bool<{ readonly required: true; readonly default: true }>;
505
+ readonly done: F.Bool<{ readonly required: true; readonly default: true }>;
506
+ };
507
+ readonly methods: ProjectTaskStageMethods;
508
+ }
509
+
510
+ /** Methods of `project.task.stage`: declared ones and transitions. */
511
+ export interface ProjectTaskStageMethods extends F.Methods<typeof import('../../project/index.js').projectShutro, 'project.task.stage'> {
512
+ }
513
+
514
+ /** `project.timesheet` (owner: project). */
515
+ export interface ProjectTimesheet {
516
+ readonly name: 'project.timesheet';
517
+ readonly fields: {
518
+ readonly id: F.Id<'project.timesheet'>;
519
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
520
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
521
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
522
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
523
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
524
+ readonly company: F.Many2one<'res.company', { readonly required: true; readonly default: true }>;
525
+ readonly task: F.Many2one<'project.task', { readonly required: true }>;
526
+ readonly project: F.Many2one<'project.project', { readonly readonly: true; readonly compute: true; readonly store: true }>;
527
+ readonly user: F.Many2one<'res.users', { readonly required: true; readonly default: true }>;
528
+ readonly date: F.DateOnly<{ readonly required: true; readonly default: true }>;
529
+ readonly hours: F.Decimal<{ readonly required: true; readonly default: true }>;
530
+ readonly description: F.Char;
531
+ };
532
+ readonly methods: ProjectTimesheetMethods;
533
+ }
534
+
535
+ /** Methods of `project.timesheet`: declared ones and transitions. */
536
+ export interface ProjectTimesheetMethods extends F.Methods<typeof import('../../project/index.js').projectShutro, 'project.timesheet'> {
537
+ }
538
+
539
+ /** `res.company` (owner: base). */
540
+ export interface ResCompany {
541
+ readonly name: 'res.company';
542
+ readonly fields: {
543
+ readonly id: F.Id<'res.company'>;
544
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
545
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
546
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
547
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
548
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
549
+ readonly name: F.Char<{ readonly required: true }>;
550
+ readonly currency: F.Many2one<'res.currency', { readonly required: true }>;
551
+ readonly numberGrouping: F.Selection<'international' | 'lakh', { readonly required: true; readonly default: true }>;
552
+ };
553
+ readonly methods: ResCompanyMethods;
554
+ }
555
+
556
+ /** Methods of `res.company`: declared ones and transitions. */
557
+ export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'> {
558
+ }
559
+
560
+ /** `res.currency` (owner: base). */
561
+ export interface ResCurrency {
562
+ readonly name: 'res.currency';
563
+ readonly fields: {
564
+ readonly id: F.Id<'res.currency'>;
565
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
566
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
567
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
568
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
569
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
570
+ readonly name: F.Char<{ readonly required: true }>;
571
+ readonly rounding: F.Decimal<{ readonly required: true; readonly default: true }>;
572
+ readonly decimalPlaces: F.Integer<{ readonly default: true }>;
573
+ };
574
+ readonly methods: ResCurrencyMethods;
575
+ }
576
+
577
+ /** Methods of `res.currency`: declared ones and transitions. */
578
+ export interface ResCurrencyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.currency'> {
579
+ }
580
+
581
+ /** `res.partner` (owner: contacts; extended by: portal). */
582
+ export interface ResPartner {
583
+ readonly name: 'res.partner';
584
+ readonly fields: {
585
+ readonly id: F.Id<'res.partner'>;
586
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
587
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
588
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
589
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
590
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
591
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
592
+ readonly company: F.Many2one<'res.company', { readonly default: true }>;
593
+ readonly name: F.Char<{ readonly required: true }>;
594
+ readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
595
+ readonly parent: F.Many2one<'res.partner'>;
596
+ readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
597
+ readonly email: F.Char;
598
+ readonly phone: F.Char;
599
+ readonly mobile: F.Char;
600
+ readonly website: F.Char;
601
+ readonly street: F.Char;
602
+ readonly city: F.Char;
603
+ readonly zip: F.Char;
604
+ readonly country: F.Char;
605
+ readonly state: F.Char;
606
+ readonly taxId: F.Char;
607
+ readonly isCustomer: F.Bool<{ readonly required: true; readonly default: true }>;
608
+ readonly isVendor: F.Bool<{ readonly required: true; readonly default: true }>;
609
+ readonly currency: F.Many2one<'res.currency'>;
610
+ readonly notes: F.Text;
611
+ readonly portalUsers: F.One2many<'res.users', { readonly required: true }>; // portal
612
+ };
613
+ readonly methods: ResPartnerMethods;
614
+ }
615
+
616
+ /** Methods of `res.partner`: declared ones and transitions. */
617
+ export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.partner'> {
618
+ }
619
+
620
+ /** `res.users` (owner: base; extended by: portal). */
621
+ export interface ResUsers {
622
+ readonly name: 'res.users';
623
+ readonly fields: {
624
+ readonly id: F.Id<'res.users'>;
625
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
626
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
627
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
628
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
629
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
630
+ readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
631
+ readonly login: F.Char<{ readonly required: true }>;
632
+ readonly name: F.Char<{ readonly required: true }>;
633
+ readonly email: F.Char;
634
+ readonly phone: F.Char;
635
+ readonly company: F.Many2one<'res.company'>;
636
+ readonly companies: F.Many2many<'res.company', { readonly required: true }>;
637
+ readonly lang: F.Char<{ readonly default: true }>;
638
+ readonly tz: F.Char<{ readonly default: true }>;
639
+ readonly portalPartner: F.Many2one<'res.partner'>; // portal
640
+ };
641
+ readonly methods: ResUsersMethods;
642
+ }
643
+
644
+ /** Methods of `res.users`: declared ones and transitions. */
645
+ export interface ResUsersMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.users'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.users'> {
646
+ }
647
+
648
+ /** `storage.attachment` (owner: storage). */
649
+ export interface StorageAttachment {
650
+ readonly name: 'storage.attachment';
651
+ readonly fields: {
652
+ readonly id: F.Id<'storage.attachment'>;
653
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
654
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
655
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
656
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
657
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
658
+ readonly name: F.Char<{ readonly required: true }>;
659
+ readonly mime: F.Char<{ readonly required: true }>;
660
+ readonly size: F.Integer<{ readonly required: true }>;
661
+ readonly sha256: F.Char<{ readonly required: true }>;
662
+ readonly key: F.Char<{ readonly required: true }>;
663
+ readonly resModel: F.Char<{ readonly required: true }>;
664
+ readonly resId: F.Integer<{ readonly required: true }>;
665
+ };
666
+ readonly methods: StorageAttachmentMethods;
667
+ }
668
+
669
+ /** Methods of `storage.attachment`: declared ones and transitions. */
670
+ export interface StorageAttachmentMethods extends F.Methods<typeof import('../../storage/index.js').storageShutro, 'storage.attachment'> {
671
+ }