shutro-erp 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/dist/account_portal/.kosh/bindings.js +1 -1
  2. package/dist/account_portal/.kosh/schema.d.ts +54 -3
  3. package/dist/account_portal/module.d.ts +359 -6
  4. package/dist/accounting/.kosh/bindings.js +1 -1
  5. package/dist/accounting/.kosh/schema.d.ts +54 -3
  6. package/dist/accounting/index.js +214 -2
  7. package/dist/accounting/module.d.ts +217 -5
  8. package/dist/accounting/module.js +23 -2
  9. package/dist/calendar/.kosh/bindings.d.ts +22 -0
  10. package/dist/calendar/.kosh/bindings.js +15 -0
  11. package/dist/calendar/.kosh/schema.d.ts +795 -0
  12. package/dist/calendar/demo.d.ts +6 -0
  13. package/dist/calendar/demo.js +24 -0
  14. package/dist/calendar/index.d.ts +3 -0
  15. package/dist/calendar/index.js +291 -0
  16. package/dist/calendar/module.d.ts +1705 -0
  17. package/dist/calendar/module.js +180 -0
  18. package/dist/cli/init.js +48 -0
  19. package/dist/cli/templates.d.ts +1 -1
  20. package/dist/cli/templates.js +137 -0
  21. package/dist/contacts/.kosh/bindings.js +1 -1
  22. package/dist/contacts/.kosh/schema.d.ts +78 -3
  23. package/dist/contacts/demo.js +30 -1
  24. package/dist/contacts/index.d.ts +1 -1
  25. package/dist/contacts/index.js +155 -9
  26. package/dist/contacts/module.d.ts +338 -2
  27. package/dist/contacts/module.js +82 -5
  28. package/dist/crm/.kosh/bindings.d.ts +22 -0
  29. package/dist/crm/.kosh/bindings.js +15 -0
  30. package/dist/crm/.kosh/schema.d.ts +799 -0
  31. package/dist/crm/demo.d.ts +6 -0
  32. package/dist/crm/demo.js +45 -0
  33. package/dist/crm/index.d.ts +3 -0
  34. package/dist/crm/index.js +361 -0
  35. package/dist/crm/module.d.ts +1843 -0
  36. package/dist/crm/module.js +207 -0
  37. package/dist/event/.kosh/bindings.d.ts +22 -0
  38. package/dist/event/.kosh/bindings.js +15 -0
  39. package/dist/event/.kosh/schema.d.ts +843 -0
  40. package/dist/event/demo.d.ts +6 -0
  41. package/dist/event/demo.js +65 -0
  42. package/dist/event/index.d.ts +14 -0
  43. package/dist/event/index.js +333 -0
  44. package/dist/event/mails.d.ts +15 -0
  45. package/dist/event/mails.js +112 -0
  46. package/dist/event/module.d.ts +2800 -0
  47. package/dist/event/module.js +323 -0
  48. package/dist/event/web/CheckInBox.d.ts +9 -0
  49. package/dist/event/web/CheckInBox.js +87 -0
  50. package/dist/event/web/index.d.ts +11 -0
  51. package/dist/event/web/index.js +16 -0
  52. package/dist/event/web/messages.d.ts +2 -0
  53. package/dist/event/web/messages.js +23 -0
  54. package/dist/event_account/.kosh/bindings.d.ts +22 -0
  55. package/dist/event_account/.kosh/bindings.js +15 -0
  56. package/dist/event_account/.kosh/schema.d.ts +1639 -0
  57. package/dist/event_account/index.d.ts +3 -0
  58. package/dist/event_account/index.js +28 -0
  59. package/dist/event_account/module.d.ts +6968 -0
  60. package/dist/event_account/module.js +90 -0
  61. package/dist/hr/.kosh/bindings.d.ts +22 -0
  62. package/dist/hr/.kosh/bindings.js +15 -0
  63. package/dist/hr/.kosh/schema.d.ts +878 -0
  64. package/dist/hr/demo.d.ts +6 -0
  65. package/dist/hr/demo.js +60 -0
  66. package/dist/hr/index.d.ts +3 -0
  67. package/dist/hr/index.js +483 -0
  68. package/dist/hr/module.d.ts +2611 -0
  69. package/dist/hr/module.js +350 -0
  70. package/dist/l10n_bd/.kosh/bindings.js +1 -1
  71. package/dist/l10n_bd/.kosh/schema.d.ts +54 -3
  72. package/dist/l10n_bd/module.d.ts +359 -6
  73. package/dist/l10n_in/.kosh/bindings.js +1 -1
  74. package/dist/l10n_in/.kosh/schema.d.ts +54 -3
  75. package/dist/l10n_in/module.d.ts +380 -7
  76. package/dist/maintenance/.kosh/bindings.d.ts +22 -0
  77. package/dist/maintenance/.kosh/bindings.js +15 -0
  78. package/dist/maintenance/.kosh/schema.d.ts +911 -0
  79. package/dist/maintenance/demo.d.ts +6 -0
  80. package/dist/maintenance/demo.js +60 -0
  81. package/dist/maintenance/index.d.ts +3 -0
  82. package/dist/maintenance/index.js +422 -0
  83. package/dist/maintenance/module.d.ts +3545 -0
  84. package/dist/maintenance/module.js +446 -0
  85. package/dist/maintenance_stock/.kosh/bindings.d.ts +22 -0
  86. package/dist/maintenance_stock/.kosh/bindings.js +15 -0
  87. package/dist/maintenance_stock/.kosh/schema.d.ts +1371 -0
  88. package/dist/maintenance_stock/index.d.ts +9 -0
  89. package/dist/maintenance_stock/index.js +52 -0
  90. package/dist/maintenance_stock/module.d.ts +6953 -0
  91. package/dist/maintenance_stock/module.js +192 -0
  92. package/dist/modules-sdk/index.d.ts +1 -1
  93. package/dist/modules-sdk/manifest.d.ts +70 -0
  94. package/dist/modules-sdk/manifest.js +35 -1
  95. package/dist/mrp/.kosh/bindings.d.ts +22 -0
  96. package/dist/mrp/.kosh/bindings.js +15 -0
  97. package/dist/mrp/.kosh/schema.d.ts +1378 -0
  98. package/dist/mrp/demo.d.ts +7 -0
  99. package/dist/mrp/demo.js +42 -0
  100. package/dist/mrp/index.d.ts +3 -0
  101. package/dist/mrp/index.js +392 -0
  102. package/dist/mrp/module.d.ts +8608 -0
  103. package/dist/mrp/module.js +695 -0
  104. package/dist/mrp_account/.kosh/bindings.d.ts +22 -0
  105. package/dist/mrp_account/.kosh/bindings.js +15 -0
  106. package/dist/mrp_account/.kosh/schema.d.ts +2106 -0
  107. package/dist/mrp_account/index.d.ts +3 -0
  108. package/dist/mrp_account/index.js +22 -0
  109. package/dist/mrp_account/module.d.ts +20840 -0
  110. package/dist/mrp_account/module.js +123 -0
  111. package/dist/payment/.kosh/bindings.js +1 -1
  112. package/dist/payment/.kosh/schema.d.ts +54 -3
  113. package/dist/payment/module.d.ts +359 -6
  114. package/dist/portal/.kosh/bindings.js +1 -1
  115. package/dist/portal/.kosh/schema.d.ts +78 -3
  116. package/dist/portal/module.d.ts +166 -2
  117. package/dist/pos/.kosh/bindings.d.ts +22 -0
  118. package/dist/pos/.kosh/bindings.js +15 -0
  119. package/dist/pos/.kosh/schema.d.ts +1690 -0
  120. package/dist/pos/accounting.d.ts +10 -0
  121. package/dist/pos/accounting.js +149 -0
  122. package/dist/pos/demo.d.ts +6 -0
  123. package/dist/pos/demo.js +90 -0
  124. package/dist/pos/index.d.ts +9 -0
  125. package/dist/pos/index.js +349 -0
  126. package/dist/pos/module.d.ts +9636 -0
  127. package/dist/pos/module.js +423 -0
  128. package/dist/pos/routes.d.ts +39 -0
  129. package/dist/pos/routes.js +368 -0
  130. package/dist/pos/web/Register.d.ts +9 -0
  131. package/dist/pos/web/Register.js +252 -0
  132. package/dist/pos/web/index.d.ts +11 -0
  133. package/dist/pos/web/index.js +16 -0
  134. package/dist/pos/web/messages.d.ts +2 -0
  135. package/dist/pos/web/messages.js +87 -0
  136. package/dist/pos_stock/.kosh/bindings.d.ts +22 -0
  137. package/dist/pos_stock/.kosh/bindings.js +15 -0
  138. package/dist/pos_stock/.kosh/schema.d.ts +2015 -0
  139. package/dist/pos_stock/index.d.ts +9 -0
  140. package/dist/pos_stock/index.js +35 -0
  141. package/dist/pos_stock/module.d.ts +11935 -0
  142. package/dist/pos_stock/module.js +115 -0
  143. package/dist/product/.kosh/bindings.js +1 -1
  144. package/dist/product/.kosh/schema.d.ts +51 -1
  145. package/dist/product/index.js +81 -4
  146. package/dist/product/module.d.ts +43 -1
  147. package/dist/product/module.js +9 -2
  148. package/dist/project/.kosh/bindings.js +1 -1
  149. package/dist/project/.kosh/schema.d.ts +54 -3
  150. package/dist/project/index.js +147 -7
  151. package/dist/project/module.d.ts +210 -2
  152. package/dist/project/module.js +52 -5
  153. package/dist/project_portal/.kosh/bindings.js +1 -1
  154. package/dist/project_portal/.kosh/schema.d.ts +54 -3
  155. package/dist/project_portal/module.d.ts +353 -4
  156. package/dist/purchase/.kosh/bindings.js +1 -1
  157. package/dist/purchase/.kosh/schema.d.ts +54 -3
  158. package/dist/purchase/index.js +163 -3
  159. package/dist/purchase/module.d.ts +215 -3
  160. package/dist/purchase/module.js +21 -3
  161. package/dist/purchase_account/.kosh/bindings.js +1 -1
  162. package/dist/purchase_account/.kosh/schema.d.ts +55 -3
  163. package/dist/purchase_account/index.js +26 -1
  164. package/dist/purchase_account/module.d.ts +393 -7
  165. package/dist/purchase_portal/.kosh/bindings.js +1 -1
  166. package/dist/purchase_portal/.kosh/schema.d.ts +54 -3
  167. package/dist/purchase_portal/module.d.ts +366 -5
  168. package/dist/purchase_stock/.kosh/bindings.d.ts +22 -0
  169. package/dist/purchase_stock/.kosh/bindings.js +15 -0
  170. package/dist/purchase_stock/.kosh/schema.d.ts +1310 -0
  171. package/dist/purchase_stock/index.d.ts +7 -0
  172. package/dist/purchase_stock/index.js +91 -0
  173. package/dist/purchase_stock/module.d.ts +6763 -0
  174. package/dist/purchase_stock/module.js +144 -0
  175. package/dist/purchase_stock_account/.kosh/bindings.d.ts +22 -0
  176. package/dist/purchase_stock_account/.kosh/bindings.js +15 -0
  177. package/dist/purchase_stock_account/.kosh/schema.d.ts +1959 -0
  178. package/dist/purchase_stock_account/index.d.ts +3 -0
  179. package/dist/purchase_stock_account/index.js +24 -0
  180. package/dist/purchase_stock_account/module.d.ts +35366 -0
  181. package/dist/purchase_stock_account/module.js +162 -0
  182. package/dist/recruitment/.kosh/bindings.d.ts +22 -0
  183. package/dist/recruitment/.kosh/bindings.js +15 -0
  184. package/dist/recruitment/.kosh/schema.d.ts +990 -0
  185. package/dist/recruitment/demo.d.ts +6 -0
  186. package/dist/recruitment/demo.js +45 -0
  187. package/dist/recruitment/index.d.ts +3 -0
  188. package/dist/recruitment/index.js +385 -0
  189. package/dist/recruitment/module.d.ts +3247 -0
  190. package/dist/recruitment/module.js +193 -0
  191. package/dist/recruitment/web/HireButton.d.ts +9 -0
  192. package/dist/recruitment/web/HireButton.js +32 -0
  193. package/dist/recruitment/web/index.d.ts +11 -0
  194. package/dist/recruitment/web/index.js +16 -0
  195. package/dist/recruitment/web/messages.d.ts +2 -0
  196. package/dist/recruitment/web/messages.js +19 -0
  197. package/dist/reporting/documents.d.ts +5 -0
  198. package/dist/reporting/documents.js +28 -1
  199. package/dist/reporting/index.d.ts +1 -1
  200. package/dist/reporting/index.js +4 -2
  201. package/dist/reporting/models.js +9 -0
  202. package/dist/reporting/overviews.d.ts +16 -0
  203. package/dist/reporting/overviews.js +56 -0
  204. package/dist/reporting/routes-documents.js +1 -1
  205. package/dist/reporting/routes.js +138 -80
  206. package/dist/reporting/web/DashboardView.d.ts +11 -0
  207. package/dist/reporting/web/DashboardView.js +2 -2
  208. package/dist/reporting/web/DesignerView.js +5 -0
  209. package/dist/reporting/web/Overview.d.ts +9 -0
  210. package/dist/reporting/web/Overview.js +53 -0
  211. package/dist/reporting/web/index.d.ts +1 -0
  212. package/dist/reporting/web/index.js +4 -1
  213. package/dist/reporting/web/messages.js +9 -0
  214. package/dist/sale_account/.kosh/bindings.js +1 -1
  215. package/dist/sale_account/.kosh/schema.d.ts +59 -3
  216. package/dist/sale_account/index.js +22 -1
  217. package/dist/sale_account/module.d.ts +461 -7
  218. package/dist/sale_portal/.kosh/bindings.js +1 -1
  219. package/dist/sale_portal/.kosh/schema.d.ts +58 -3
  220. package/dist/sale_portal/module.d.ts +434 -5
  221. package/dist/sale_project/.kosh/bindings.js +1 -1
  222. package/dist/sale_project/.kosh/schema.d.ts +60 -3
  223. package/dist/sale_project/module.d.ts +476 -6
  224. package/dist/sale_stock/.kosh/bindings.d.ts +22 -0
  225. package/dist/sale_stock/.kosh/bindings.js +15 -0
  226. package/dist/sale_stock/.kosh/schema.d.ts +1228 -0
  227. package/dist/sale_stock/index.d.ts +7 -0
  228. package/dist/sale_stock/index.js +84 -0
  229. package/dist/sale_stock/module.d.ts +6791 -0
  230. package/dist/sale_stock/module.js +146 -0
  231. package/dist/sales/.kosh/bindings.js +1 -1
  232. package/dist/sales/.kosh/schema.d.ts +58 -3
  233. package/dist/sales/index.js +191 -4
  234. package/dist/sales/module.d.ts +355 -3
  235. package/dist/sales/module.js +78 -3
  236. package/dist/server/api/metadata.d.ts +5 -0
  237. package/dist/server/api/metadata.js +5 -0
  238. package/dist/server/api/rest.js +64 -1
  239. package/dist/server/api/views.js +1 -0
  240. package/dist/server/app-settings.d.ts +7 -0
  241. package/dist/server/app-settings.js +10 -0
  242. package/dist/server/auth/base.js +9 -0
  243. package/dist/server/index.d.ts +1 -0
  244. package/dist/server/index.js +1 -0
  245. package/dist/settings/app-settings.d.ts +2 -0
  246. package/dist/settings/app-settings.js +518 -0
  247. package/dist/settings/index.d.ts +1 -0
  248. package/dist/settings/index.js +15 -0
  249. package/dist/settings/people.js +29 -5
  250. package/dist/settings/web/AppSettingsPage.d.ts +11 -0
  251. package/dist/settings/web/AppSettingsPage.js +210 -0
  252. package/dist/settings/web/OverviewPage.js +16 -3
  253. package/dist/settings/web/PeoplePage.js +20 -6
  254. package/dist/settings/web/index.d.ts +1 -0
  255. package/dist/settings/web/index.js +3 -0
  256. package/dist/settings/web/messages.js +118 -2
  257. package/dist/stock/.kosh/bindings.d.ts +22 -0
  258. package/dist/stock/.kosh/bindings.js +15 -0
  259. package/dist/stock/.kosh/schema.d.ts +1147 -0
  260. package/dist/stock/demo.d.ts +7 -0
  261. package/dist/stock/demo.js +55 -0
  262. package/dist/stock/index.d.ts +3 -0
  263. package/dist/stock/index.js +674 -0
  264. package/dist/stock/module.d.ts +6330 -0
  265. package/dist/stock/module.js +1325 -0
  266. package/dist/stock/web/ScanBox.d.ts +8 -0
  267. package/dist/stock/web/ScanBox.js +90 -0
  268. package/dist/stock/web/index.d.ts +11 -0
  269. package/dist/stock/web/index.js +16 -0
  270. package/dist/stock/web/messages.d.ts +2 -0
  271. package/dist/stock/web/messages.js +25 -0
  272. package/dist/stock_account/.kosh/bindings.d.ts +22 -0
  273. package/dist/stock_account/.kosh/bindings.js +15 -0
  274. package/dist/stock_account/.kosh/schema.d.ts +1875 -0
  275. package/dist/stock_account/index.d.ts +3 -0
  276. package/dist/stock_account/index.js +130 -0
  277. package/dist/stock_account/module.d.ts +10655 -0
  278. package/dist/stock_account/module.js +339 -0
  279. package/dist/storage/attachments.d.ts +5 -0
  280. package/dist/storage/attachments.js +12 -1
  281. package/dist/storage/models.js +3 -0
  282. package/dist/storage/routes.js +13 -2
  283. package/dist/todo/.kosh/bindings.d.ts +22 -0
  284. package/dist/todo/.kosh/bindings.js +15 -0
  285. package/dist/todo/.kosh/schema.d.ts +732 -0
  286. package/dist/todo/demo.d.ts +6 -0
  287. package/dist/todo/demo.js +35 -0
  288. package/dist/todo/index.d.ts +3 -0
  289. package/dist/todo/index.js +187 -0
  290. package/dist/todo/module.d.ts +1180 -0
  291. package/dist/todo/module.js +130 -0
  292. package/dist/trade_finance/.kosh/bindings.d.ts +22 -0
  293. package/dist/trade_finance/.kosh/bindings.js +15 -0
  294. package/dist/trade_finance/.kosh/schema.d.ts +884 -0
  295. package/dist/trade_finance/demo.d.ts +6 -0
  296. package/dist/trade_finance/demo.js +63 -0
  297. package/dist/trade_finance/index.d.ts +3 -0
  298. package/dist/trade_finance/index.js +413 -0
  299. package/dist/trade_finance/module.d.ts +3779 -0
  300. package/dist/trade_finance/module.js +505 -0
  301. package/dist/trade_finance_account/.kosh/bindings.d.ts +22 -0
  302. package/dist/trade_finance_account/.kosh/bindings.js +15 -0
  303. package/dist/trade_finance_account/.kosh/schema.d.ts +1711 -0
  304. package/dist/trade_finance_account/index.d.ts +3 -0
  305. package/dist/trade_finance_account/index.js +92 -0
  306. package/dist/trade_finance_account/module.d.ts +7928 -0
  307. package/dist/trade_finance_account/module.js +244 -0
  308. package/dist/trade_finance_purchase/.kosh/bindings.d.ts +22 -0
  309. package/dist/trade_finance_purchase/.kosh/bindings.js +15 -0
  310. package/dist/trade_finance_purchase/.kosh/schema.d.ts +1153 -0
  311. package/dist/trade_finance_purchase/index.d.ts +8 -0
  312. package/dist/trade_finance_purchase/index.js +50 -0
  313. package/dist/trade_finance_purchase/module.d.ts +4252 -0
  314. package/dist/trade_finance_purchase/module.js +44 -0
  315. package/dist/trade_finance_sale/.kosh/bindings.d.ts +22 -0
  316. package/dist/trade_finance_sale/.kosh/bindings.js +15 -0
  317. package/dist/trade_finance_sale/.kosh/schema.d.ts +1071 -0
  318. package/dist/trade_finance_sale/index.d.ts +8 -0
  319. package/dist/trade_finance_sale/index.js +50 -0
  320. package/dist/trade_finance_sale/module.d.ts +4280 -0
  321. package/dist/trade_finance_sale/module.js +44 -0
  322. package/dist/ui/api.d.ts +2 -1
  323. package/dist/ui/api.js +2 -1
  324. package/dist/ui/app.js +2 -1
  325. package/dist/ui/components/AppIcon.js +23 -1
  326. package/dist/ui/components/primitives.d.ts +2 -0
  327. package/dist/ui/components/primitives.js +7 -1
  328. package/dist/ui/i18n/messages.d.ts +23 -0
  329. package/dist/ui/i18n/messages.js +38 -0
  330. package/dist/ui/index.d.ts +1 -0
  331. package/dist/ui/index.js +1 -0
  332. package/dist/ui/offline/queue.d.ts +5 -1
  333. package/dist/ui/offline/queue.js +2 -0
  334. package/dist/ui/registry.d.ts +5 -0
  335. package/dist/ui/shell/Home.js +55 -4
  336. package/dist/ui/views/FormView.js +98 -17
  337. package/dist/ui/views/KanbanView.d.ts +2 -0
  338. package/dist/ui/views/KanbanView.js +32 -3
  339. package/dist/ui/views/ListView.js +108 -11
  340. package/dist/ui/views/StatsRow.d.ts +14 -0
  341. package/dist/ui/views/StatsRow.js +88 -0
  342. package/dist/ui/views/widgets.d.ts +2 -1
  343. package/dist/ui/views/widgets.js +194 -1
  344. package/dist/views/builders.d.ts +19 -2
  345. package/dist/views/builders.js +21 -1
  346. package/dist/views/condition.d.ts +6 -0
  347. package/dist/views/condition.js +20 -0
  348. package/dist/views/documents.d.ts +8 -0
  349. package/dist/views/extend.d.ts +2 -2
  350. package/dist/views/extend.js +11 -1
  351. package/dist/views/index.d.ts +2 -2
  352. package/dist/views/index.js +2 -2
  353. package/dist/views/types.d.ts +52 -5
  354. package/dist/views/validate.js +39 -1
  355. package/dist/website/.kosh/bindings.d.ts +22 -0
  356. package/dist/website/.kosh/bindings.js +15 -0
  357. package/dist/website/.kosh/schema.d.ts +881 -0
  358. package/dist/website/demo.d.ts +6 -0
  359. package/dist/website/demo.js +115 -0
  360. package/dist/website/index.d.ts +9 -0
  361. package/dist/website/index.js +250 -0
  362. package/dist/website/module.d.ts +2987 -0
  363. package/dist/website/module.js +281 -0
  364. package/dist/website/render.d.ts +45 -0
  365. package/dist/website/render.js +102 -0
  366. package/dist/website/routes.d.ts +12 -0
  367. package/dist/website/routes.js +246 -0
  368. package/dist/website/web/PagePreview.d.ts +7 -0
  369. package/dist/website/web/PagePreview.js +33 -0
  370. package/dist/website/web/index.d.ts +11 -0
  371. package/dist/website/web/index.js +16 -0
  372. package/dist/website/web/messages.d.ts +2 -0
  373. package/dist/website/web/messages.js +15 -0
  374. package/dist/website_crm/.kosh/bindings.d.ts +22 -0
  375. package/dist/website_crm/.kosh/bindings.js +15 -0
  376. package/dist/website_crm/.kosh/schema.d.ts +966 -0
  377. package/dist/website_crm/index.d.ts +3 -0
  378. package/dist/website_crm/index.js +39 -0
  379. package/dist/website_crm/module.d.ts +2955 -0
  380. package/dist/website_crm/module.js +44 -0
  381. package/package.json +118 -1
@@ -0,0 +1,123 @@
1
+ /**
2
+ * The data layer of the Production ↔ Accounting bridge (RFC 0021, Production step 2): a product made enters stock at
3
+ * what its order consumed (the components' valuation) plus its operations (minutes at the work centres' rates), and
4
+ * the operations are posted into Work in progress against Production labour and overhead — so what goes into Work in
5
+ * progress for an order comes out of it with the product, to the cent.
6
+ */
7
+ import { mrpShutro } from '../mrp/index.js';
8
+ import { orm } from '../server/orm.js';
9
+ import { stockShutro } from '../stock/index.js';
10
+ import { stockAccountShutro, stockAccountsOf } from '../stock_account/index.js';
11
+ import { defineModule, extendModel } from './.kosh/bindings.js';
12
+ const zero = orm.toDecimal(0);
13
+ const money = (d) => d.toDecimalPlaces(2);
14
+ /** The labour and overhead account: its code in the chart, made when missing. */
15
+ export const LABOUR_ACCOUNT = {
16
+ code: '5200',
17
+ name: 'Production labour and overhead',
18
+ type: 'expense_direct_cost',
19
+ };
20
+ /** The production order an output transfer belongs to, with what its components cost. */
21
+ async function madeBy(env, picking) {
22
+ const [order] = await (await env.model('mrp.production').search({ where: { output: picking }, limit: 1 })).load({});
23
+ if (order === undefined)
24
+ return null;
25
+ const [bill] = order.bom === null
26
+ ? []
27
+ : await env.model('mrp.bom').browse([order.bom.id]).load({ byproducts: true });
28
+ const shares = new Map([...(bill?.byproducts ?? [])].map((b) => [b.product.id, b.costShare]));
29
+ let consumed = zero;
30
+ if (order.consumption !== null) {
31
+ const layers = await (await env.model('stock.valuation.layer').search({ where: { picking: order.consumption.id } })).load(['value']);
32
+ consumed = [...layers].reduce((s, l) => s.minus(l.value), zero); // out layers are negative
33
+ }
34
+ return { order, consumed, operations: order.operationCost ?? zero, shares };
35
+ }
36
+ export const OutputCost = extendModel('stock.move', {
37
+ overrides: {
38
+ // The product made costs what was consumed plus the operations, per unit.
39
+ incomingUnitCost: async function (next) {
40
+ const out = await next();
41
+ const moves = this;
42
+ const env = moves.env;
43
+ for (const m of await moves.load({ picking: { source: true }, product: true })) {
44
+ if (m.picking.kind !== 'production' || m.picking.source.usage !== 'production')
45
+ continue;
46
+ const made = await madeBy(env, m.picking.id);
47
+ if (made === null || m.productQty === null || m.productQty.lte(0))
48
+ continue;
49
+ // A by-product carries its share of the cost; the product made, the rest.
50
+ const total = made.consumed.plus(made.operations);
51
+ const others = [...made.shares.values()].reduce((s, x) => s.plus(x), zero);
52
+ const share = m.product.id === made.order.product.id
53
+ ? orm.toDecimal(100).minus(others)
54
+ : (made.shares.get(m.product.id) ?? zero);
55
+ const unit = total.times(share).div(100).div(m.productQty);
56
+ out.set(m.id, unit.toDecimalPlaces(4).toString());
57
+ }
58
+ return out;
59
+ },
60
+ },
61
+ });
62
+ export const OperationsPosted = extendModel('stock.picking', {
63
+ overrides: {
64
+ // Once a product is made, its operations go into Work in progress.
65
+ validated: async function (next) {
66
+ await next();
67
+ const pickings = this;
68
+ const env = pickings.env;
69
+ for (const p of await pickings.load({ source: true, company: true })) {
70
+ if (p.kind !== 'production' || p.source.usage !== 'production')
71
+ continue;
72
+ const made = await madeBy(env, p.id);
73
+ if (made === null || made.operations.lte(0))
74
+ continue;
75
+ const accounts = await stockAccountsOf(env, p.company.id);
76
+ if (accounts === null)
77
+ continue;
78
+ const labour = (await env
79
+ .model('account.account')
80
+ .search({ where: { company: p.company.id, code: LABOUR_ACCOUNT.code }, limit: 1 })).ids[0] ??
81
+ (await env
82
+ .model('account.account')
83
+ .create([{ ...LABOUR_ACCOUNT, company: p.company.id }])).ids[0];
84
+ if (labour === undefined)
85
+ continue;
86
+ const [company] = await env.model('res.company').browse([p.company.id]).load({});
87
+ const amount = money(made.operations);
88
+ const name = `${made.order.name} operations`;
89
+ const entry = await env.model('account.move').create([
90
+ {
91
+ kind: 'entry',
92
+ journal: accounts.journal,
93
+ company: p.company.id,
94
+ currency: company?.currency.id,
95
+ date: env.today(),
96
+ ref: name,
97
+ lines: {
98
+ create: [
99
+ { account: accounts.production, debit: amount, credit: zero, name },
100
+ { account: labour, debit: zero, credit: amount, name },
101
+ ],
102
+ },
103
+ },
104
+ ]);
105
+ await env.withGrants({ grants: ['account.post'], reason: name }, (e) => e.model('account.move').browse(entry.ids).post());
106
+ }
107
+ },
108
+ },
109
+ });
110
+ export const mrpAccountShutro = defineModule({
111
+ name: 'mrp_account',
112
+ version: '0.1.0',
113
+ depends: [mrpShutro, stockShutro, stockAccountShutro],
114
+ groups: [
115
+ orm.defineGroup({
116
+ code: 'mrp_account.user',
117
+ label: 'Production valued',
118
+ implies: ['mrp.user'],
119
+ }),
120
+ ],
121
+ models: [],
122
+ extensions: [OutputCost, OperationsPosted],
123
+ });
@@ -1,4 +1,4 @@
1
- // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: 7de15337289f5e89
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: e6900370f0e9c944
2
2
  // Bindings of module `payment`: 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: 7de15337289f5e89
1
+ // GENERATED by `pnpm generate:models` (Shutro’s generator). Do not edit. definitions-hash: e6900370f0e9c944
2
2
  // Schema view of module `payment` (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
 
@@ -30,6 +30,7 @@ export interface SchemaView {
30
30
  readonly 'auth.user_group': AuthUserGroup;
31
31
  readonly 'kosh.image': KoshImage;
32
32
  readonly 'kosh.saved_view': KoshSavedView;
33
+ readonly 'kosh.setting': KoshSetting;
33
34
  readonly 'mail.activity': MailActivity;
34
35
  readonly 'mail.activity.type': MailActivityType;
35
36
  readonly 'mail.channel': MailChannel;
@@ -58,6 +59,7 @@ export interface SchemaView {
58
59
  readonly 'res.currency': ResCurrency;
59
60
  readonly 'res.currency.rate': ResCurrencyRate;
60
61
  readonly 'res.partner': ResPartner;
62
+ readonly 'res.partner.tag': ResPartnerTag;
61
63
  readonly 'res.users': ResUsers;
62
64
  readonly 'storage.attachment': StorageAttachment;
63
65
  readonly 'uom.uom': UomUom;
@@ -785,6 +787,26 @@ export interface KoshSavedView {
785
787
  export interface KoshSavedViewMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.saved_view'> {
786
788
  }
787
789
 
790
+ /** `kosh.setting` (owner: base). */
791
+ export interface KoshSetting {
792
+ readonly name: 'kosh.setting';
793
+ readonly fields: {
794
+ readonly id: F.Id<'kosh.setting'>;
795
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
796
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
797
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
798
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
799
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
800
+ readonly key: F.Char<{ readonly required: true }>;
801
+ readonly value: F.Json;
802
+ };
803
+ readonly methods: KoshSettingMethods;
804
+ }
805
+
806
+ /** Methods of `kosh.setting`: declared ones and transitions. */
807
+ export interface KoshSettingMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'kosh.setting'> {
808
+ }
809
+
788
810
  /** `mail.activity` (owner: messaging). */
789
811
  export interface MailActivity {
790
812
  readonly name: 'mail.activity';
@@ -1226,6 +1248,7 @@ export interface ProductProduct {
1226
1248
  readonly category: F.Many2one<'product.category'>;
1227
1249
  readonly uom: F.Many2one<'uom.uom'>;
1228
1250
  readonly barcode: F.Char;
1251
+ readonly image: F.Many2one<'storage.attachment'>;
1229
1252
  readonly listPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
1230
1253
  readonly standardPrice: F.Decimal<{ readonly required: true; readonly default: true }>;
1231
1254
  readonly saleOk: F.Bool<{ readonly required: true; readonly default: true }>;
@@ -1256,6 +1279,7 @@ export interface ReportDashboard {
1256
1279
  readonly name: F.Char<{ readonly required: true }>;
1257
1280
  readonly items: F.Json<unknown, { readonly required: true; readonly default: true }>;
1258
1281
  readonly shared: F.Bool<{ readonly required: true; readonly default: true }>;
1282
+ readonly key: F.Char;
1259
1283
  };
1260
1284
  readonly methods: ReportDashboardMethods;
1261
1285
  }
@@ -1396,7 +1420,7 @@ export interface ResBankAccount {
1396
1420
  export interface ResBankAccountMethods extends F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'res.bank.account'> {
1397
1421
  }
1398
1422
 
1399
- /** `res.company` (owner: base; extended by: accounting). */
1423
+ /** `res.company` (owner: base; extended by: contacts, accounting). */
1400
1424
  export interface ResCompany {
1401
1425
  readonly name: 'res.company';
1402
1426
  readonly fields: {
@@ -1416,6 +1440,8 @@ export interface ResCompany {
1416
1440
  readonly email: F.Char;
1417
1441
  readonly phone: F.Char;
1418
1442
  readonly website: F.Char;
1443
+ readonly contactTaxIdRequired: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
1444
+ readonly contactUniqueEmail: F.Bool<{ readonly required: true; readonly default: true }>; // contacts
1419
1445
  readonly fiscalYearStart: F.Integer<{ readonly required: true; readonly default: true }>; // accounting
1420
1446
  readonly chartTemplate: F.Char; // accounting
1421
1447
  readonly country: F.Char; // accounting
@@ -1432,7 +1458,7 @@ export interface ResCompany {
1432
1458
  }
1433
1459
 
1434
1460
  /** Methods of `res.company`: declared ones and transitions. */
1435
- export interface ResCompanyMethods extends F.Methods<typeof import('../../server/index.js').baseShutro, 'res.company'>, F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'res.company'> {
1461
+ 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('../../accounting/index.js').accountingShutro, 'res.company'> {
1436
1462
  }
1437
1463
 
1438
1464
  /** `res.currency` (owner: base). */
@@ -1491,6 +1517,10 @@ export interface ResPartner {
1491
1517
  readonly active: F.Bool<{ readonly required: true; readonly default: true }>;
1492
1518
  readonly company: F.Many2one<'res.company', { readonly default: true }>;
1493
1519
  readonly name: F.Char<{ readonly required: true }>;
1520
+ readonly image: F.Many2one<'storage.attachment'>;
1521
+ readonly tags: F.Many2many<'res.partner.tag', { readonly required: true }>;
1522
+ readonly latitude: F.Decimal;
1523
+ readonly longitude: F.Decimal;
1494
1524
  readonly isCompany: F.Bool<{ readonly required: true; readonly default: true }>;
1495
1525
  readonly parent: F.Many2one<'res.partner'>;
1496
1526
  readonly contacts: F.One2many<'res.partner', { readonly required: true }>;
@@ -1518,6 +1548,25 @@ export interface ResPartner {
1518
1548
  export interface ResPartnerMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner'>, F.Methods<typeof import('../../portal/index.js').portalShutro, 'res.partner'>, F.Methods<typeof import('../../accounting/index.js').accountingShutro, 'res.partner'> {
1519
1549
  }
1520
1550
 
1551
+ /** `res.partner.tag` (owner: contacts). */
1552
+ export interface ResPartnerTag {
1553
+ readonly name: 'res.partner.tag';
1554
+ readonly fields: {
1555
+ readonly id: F.Id<'res.partner.tag'>;
1556
+ readonly createdAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
1557
+ readonly updatedAt: F.Datetime<{ readonly required: true; readonly readonly: true }>;
1558
+ readonly createdBy: F.Many2one<'res.users', { readonly readonly: true }>;
1559
+ readonly updatedBy: F.Many2one<'res.users', { readonly readonly: true }>;
1560
+ readonly displayName: F.Char<{ readonly required: true; readonly readonly: true; readonly compute: true }>;
1561
+ readonly name: F.Char<{ readonly required: true }>;
1562
+ };
1563
+ readonly methods: ResPartnerTagMethods;
1564
+ }
1565
+
1566
+ /** Methods of `res.partner.tag`: declared ones and transitions. */
1567
+ export interface ResPartnerTagMethods extends F.Methods<typeof import('../../contacts/index.js').contactsShutro, 'res.partner.tag'> {
1568
+ }
1569
+
1521
1570
  /** `res.users` (owner: base; extended by: portal). */
1522
1571
  export interface ResUsers {
1523
1572
  readonly name: 'res.users';
@@ -1564,6 +1613,8 @@ export interface StorageAttachment {
1564
1613
  readonly key: F.Char<{ readonly required: true }>;
1565
1614
  readonly resModel: F.Char<{ readonly required: true }>;
1566
1615
  readonly resId: F.Integer<{ readonly required: true }>;
1616
+ readonly variantOf: F.Many2one<'storage.attachment'>;
1617
+ readonly width: F.Integer;
1567
1618
  };
1568
1619
  readonly methods: StorageAttachmentMethods;
1569
1620
  }