@ozdao/martyrs 0.2.518 → 0.2.520

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 (509) hide show
  1. package/dist/_virtual/index.cjs +4 -4
  2. package/dist/_virtual/index.js +4 -4
  3. package/dist/_virtual/index2.cjs +4 -4
  4. package/dist/_virtual/index2.js +4 -4
  5. package/dist/{abac-Cf_9lCSh.js → abac-CnJsrv8S.js} +3 -3
  6. package/dist/{abac-6LjoG9u-.cjs → abac-DOyUjhee.cjs} +3 -3
  7. package/dist/builder.cjs +27 -25
  8. package/dist/builder.js +27 -25
  9. package/dist/chats.server.cjs +198 -1
  10. package/dist/chats.server.js +198 -1
  11. package/dist/{crud-sE7GLPbj.js → crud-BIFl1W1i.js} +6 -6
  12. package/dist/{crud-JN_LFj01.cjs → crud-CC6k6yY5.cjs} +6 -6
  13. package/dist/{globals.logger-CZMgIMlM.cjs → globals.logger-BuW7JHMY.cjs} +63 -53
  14. package/dist/{globals.logger-Bf6rRU7j.js → globals.logger-VRHh-WUW.js} +63 -53
  15. package/dist/{globals.observer-CV2wCzzh.cjs → globals.observer-C_FYclgV.cjs} +36 -1
  16. package/dist/{globals.observer-CDqUjVU5.js → globals.observer-MZsqaE6F.js} +36 -1
  17. package/dist/globals.server.cjs +1 -1
  18. package/dist/globals.server.js +1 -1
  19. package/dist/inventory.server.cjs +276 -376
  20. package/dist/inventory.server.js +276 -376
  21. package/dist/main-BM3GslOO.cjs +11 -0
  22. package/dist/{main-wmEhGVvD.js → main-Qcn7YlTx.js} +1834 -1830
  23. package/dist/martyrs/src/components/Address/{Address.vue2.cjs → Address.vue.cjs} +2 -2
  24. package/dist/martyrs/src/components/Address/{Address.vue2.js.map → Address.vue.cjs.map} +1 -1
  25. package/dist/martyrs/src/components/Address/{Address.vue2.js → Address.vue.js} +2 -2
  26. package/dist/martyrs/src/components/Address/Address.vue.js.map +1 -0
  27. package/dist/martyrs/src/components/Button/Button.vue.cjs +1 -1
  28. package/dist/martyrs/src/components/Button/Button.vue.cjs.map +1 -1
  29. package/dist/martyrs/src/components/Button/Button.vue.js +1 -1
  30. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -1
  31. package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +2 -2
  32. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
  33. package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +2 -2
  34. package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
  35. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
  36. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
  37. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
  38. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs.map → Dropdown.vue2.js.map} +1 -1
  39. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -93
  40. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
  41. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +1 -94
  42. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
  43. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +93 -0
  44. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
  45. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +94 -1
  46. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  47. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -3
  48. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  49. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -3
  50. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  51. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
  52. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
  53. package/dist/martyrs/src/components/Loader/Loader.vue2.cjs +1 -1
  54. package/dist/martyrs/src/components/Loader/Loader.vue2.cjs.map +1 -1
  55. package/dist/martyrs/src/components/Loader/Loader.vue2.js +1 -1
  56. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -1
  57. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.cjs → LocationMarker.vue.cjs} +2 -2
  58. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.js.map → LocationMarker.vue.cjs.map} +1 -1
  59. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.js → LocationMarker.vue.js} +2 -2
  60. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +1 -0
  61. package/dist/martyrs/src/components/Select/{Select.vue2.cjs → Select.vue.cjs} +2 -2
  62. package/dist/martyrs/src/components/Select/{Select.vue2.js.map → Select.vue.cjs.map} +1 -1
  63. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  64. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  65. package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.cjs +2 -2
  66. package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
  67. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
  68. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
  69. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  70. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  71. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
  72. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs.map +1 -1
  73. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +4 -4
  74. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
  75. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +41 -51
  76. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  77. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +59 -69
  78. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs +11 -13
  80. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs.map +1 -1
  81. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +11 -13
  82. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/auth/views/store/auth.cjs +10 -1
  84. package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
  85. package/dist/martyrs/src/modules/auth/views/store/auth.js +10 -1
  86. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  87. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +6 -0
  88. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
  89. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +6 -0
  90. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  91. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.cjs +27 -11
  92. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.cjs.map +1 -1
  93. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +28 -12
  94. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
  95. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs +62 -0
  96. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs.map +1 -1
  97. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +63 -1
  98. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  99. package/dist/martyrs/src/modules/chats/store/chat.store.cjs +60 -1
  100. package/dist/martyrs/src/modules/chats/store/chat.store.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/chats/store/chat.store.js +60 -1
  102. package/dist/martyrs/src/modules/chats/store/chat.store.js.map +1 -1
  103. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  105. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +3 -3
  106. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
  107. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
  108. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  109. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +2 -2
  110. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  111. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  112. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  113. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +50 -368
  114. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs.map +1 -1
  115. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +53 -371
  116. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  117. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
  119. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  120. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  121. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs.map +1 -1
  123. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  124. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +2 -3
  126. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  127. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -3
  128. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +2 -2
  130. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
  131. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
  132. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  133. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
  134. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  135. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
  136. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
  137. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
  138. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
  139. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +2 -2
  140. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
  141. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +2 -2
  142. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs +2 -2
  144. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js +2 -2
  145. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
  146. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
  147. package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs +16 -3
  148. package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs.map +1 -1
  149. package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js +17 -4
  150. package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +1 -1
  152. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +7 -0
  153. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
  154. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +7 -0
  155. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
  156. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +1 -1
  157. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +67 -43
  158. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs.map +1 -1
  159. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +68 -44
  160. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  161. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.cjs +22 -7
  162. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.cjs.map +1 -1
  163. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +23 -8
  164. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js.map +1 -1
  165. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.cjs +47 -32
  166. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.cjs.map +1 -1
  167. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +48 -33
  168. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
  169. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +47 -26
  170. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs.map +1 -1
  171. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +48 -27
  172. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
  173. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +42 -52
  174. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs.map +1 -1
  175. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +43 -53
  176. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
  177. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +18 -18
  178. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs.map +1 -1
  179. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +3 -3
  180. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  181. package/dist/martyrs/src/modules/inventory/store/{ inventory.store.cjs → inventory.store.cjs} +46 -2
  182. package/dist/martyrs/src/modules/inventory/store/inventory.store.cjs.map +1 -0
  183. package/dist/martyrs/src/modules/inventory/store/{ inventory.store.js → inventory.store.js} +46 -2
  184. package/dist/martyrs/src/modules/inventory/store/inventory.store.js.map +1 -0
  185. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +180 -19
  186. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
  187. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +181 -20
  188. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
  190. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  191. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
  192. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  193. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +1 -1
  194. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
  195. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +1 -1
  196. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  197. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +1 -1
  198. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
  199. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +1 -1
  200. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
  201. package/dist/martyrs/src/modules/music/router/music.cjs +1 -2
  202. package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
  203. package/dist/martyrs/src/modules/music/router/music.js +1 -2
  204. package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
  205. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs +2 -2
  206. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs.map +1 -1
  207. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +2 -2
  208. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
  210. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  211. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +1 -1
  212. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
  213. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  215. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +3 -4
  216. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
  217. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +3 -4
  218. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
  220. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  221. package/dist/martyrs/src/modules/orders/orders.client.cjs +2 -2
  222. package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
  223. package/dist/martyrs/src/modules/orders/orders.client.js +2 -2
  224. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  225. package/dist/martyrs/src/modules/orders/router/customers.router.cjs +1 -1
  226. package/dist/martyrs/src/modules/orders/router/customers.router.cjs.map +1 -1
  227. package/dist/martyrs/src/modules/orders/router/customers.router.js +1 -1
  228. package/dist/martyrs/src/modules/orders/router/customers.router.js.map +1 -1
  229. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +2 -24
  230. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs.map +1 -1
  231. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +5 -27
  232. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js.map +1 -1
  233. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
  234. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  235. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.cjs +4 -1
  236. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.cjs.map +1 -1
  237. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +4 -1
  238. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +3 -3
  240. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs.map +1 -1
  241. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +3 -3
  242. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
  243. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +195 -0
  244. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs.map +1 -0
  245. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +195 -0
  246. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -0
  247. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +402 -0
  248. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs.map +1 -0
  249. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +402 -0
  250. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -0
  251. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +86 -0
  252. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs.map +1 -0
  253. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +86 -0
  254. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -0
  255. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +10 -10
  256. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
  257. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +11 -11
  258. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  259. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +279 -191
  260. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
  261. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +285 -197
  262. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +7 -7
  264. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  265. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +7 -7
  266. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  268. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs.map +1 -1
  269. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  270. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  272. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs.map +1 -1
  273. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  274. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  276. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  277. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +3 -3
  278. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs.map +1 -1
  279. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  280. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
  281. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs +4 -4
  282. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs.map +1 -1
  283. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js +4 -4
  284. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js.map +1 -1
  285. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +42 -41
  286. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  287. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +53 -52
  288. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  289. package/dist/martyrs/src/modules/organizations/organizations.client.cjs +23 -16
  290. package/dist/martyrs/src/modules/organizations/organizations.client.cjs.map +1 -1
  291. package/dist/martyrs/src/modules/organizations/organizations.client.js +35 -28
  292. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  293. package/dist/martyrs/src/modules/organizations/router/departments.router.cjs +0 -18
  294. package/dist/martyrs/src/modules/organizations/router/departments.router.cjs.map +1 -1
  295. package/dist/martyrs/src/modules/organizations/router/departments.router.js +0 -18
  296. package/dist/martyrs/src/modules/organizations/router/departments.router.js.map +1 -1
  297. package/dist/martyrs/src/modules/organizations/store/departments.store.cjs +6 -0
  298. package/dist/martyrs/src/modules/organizations/store/departments.store.cjs.map +1 -0
  299. package/dist/martyrs/src/modules/organizations/store/departments.store.js +6 -0
  300. package/dist/martyrs/src/modules/organizations/store/departments.store.js.map +1 -0
  301. package/dist/martyrs/src/modules/organizations/store/invites.store.cjs +6 -0
  302. package/dist/martyrs/src/modules/organizations/store/invites.store.cjs.map +1 -0
  303. package/dist/martyrs/src/modules/organizations/store/invites.store.js +6 -0
  304. package/dist/martyrs/src/modules/organizations/store/invites.store.js.map +1 -0
  305. package/dist/martyrs/src/modules/organizations/store/memberships.store.cjs +20 -0
  306. package/dist/martyrs/src/modules/organizations/store/memberships.store.cjs.map +1 -0
  307. package/dist/martyrs/src/modules/organizations/store/memberships.store.js +20 -0
  308. package/dist/martyrs/src/modules/organizations/store/memberships.store.js.map +1 -0
  309. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +1 -1
  310. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +1 -1
  311. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +3 -4
  312. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  313. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +3 -4
  314. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  316. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  317. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +1 -1
  318. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  319. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  320. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  321. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  322. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  323. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +2 -2
  324. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  325. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  326. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  327. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  328. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  329. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +3 -3
  330. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
  331. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +3 -3
  332. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  333. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
  334. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  335. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  336. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  337. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +3 -3
  338. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  339. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +60 -272
  340. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs.map +1 -1
  341. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +62 -274
  342. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
  343. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  344. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  345. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
  346. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  347. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +4 -4
  348. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +4 -4
  349. package/dist/martyrs.cjs.js +1 -1
  350. package/dist/martyrs.css +1 -1
  351. package/dist/martyrs.es.js +1 -1
  352. package/dist/music.server.cjs +9 -9
  353. package/dist/music.server.js +9 -9
  354. package/dist/notifications.server.cjs +0 -24
  355. package/dist/notifications.server.js +0 -24
  356. package/dist/orders.server.cjs +3 -6
  357. package/dist/orders.server.js +3 -6
  358. package/dist/organizations.server.cjs +119 -43
  359. package/dist/organizations.server.js +119 -43
  360. package/dist/products.server.cjs +5 -5
  361. package/dist/products.server.js +5 -5
  362. package/dist/rents.server.cjs +3 -3
  363. package/dist/rents.server.js +3 -3
  364. package/dist/style.css +16 -17
  365. package/dist/wallet.server.cjs +2 -2
  366. package/dist/wallet.server.js +2 -2
  367. package/dist/{web-B5wZTKbK.cjs → web-B0cfxzgu.cjs} +1 -1
  368. package/dist/{web-520xCgXy.js → web-DVR8m2fm.js} +1 -1
  369. package/package.json +1 -1
  370. package/src/builder/modes/ssr.rspack.dev.js +20 -12
  371. package/src/builder/rspack/rspack.config.base.js +16 -15
  372. package/src/components/Button/Button.vue +1 -1
  373. package/src/components/Feed/Feed.old.vue +0 -1
  374. package/src/components/Feed/Feed.vue +1 -31
  375. package/src/components/Loader/Loader.vue +1 -1
  376. package/src/modules/auth/FIXES.md +61 -0
  377. package/src/modules/auth/PROMT.md +33 -0
  378. package/src/modules/auth/auth.server.js +1 -0
  379. package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
  380. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  381. package/src/modules/auth/views/components/pages/Invite.vue +2 -2
  382. package/src/modules/auth/views/components/pages/Profile.vue +33 -48
  383. package/src/modules/auth/views/components/sections/SliderFeatures.vue +5 -7
  384. package/src/modules/auth/views/store/auth.js +16 -1
  385. package/src/modules/auth//320/220/320/240/320/245/320/230/320/242/320/225/320/232/320/242/320/243/320/240/320/220.md +445 -0
  386. package/src/modules/backoffice/components/partials/Sidebar.vue +6 -0
  387. package/src/modules/chats/CLAUDE.md +137 -0
  388. package/src/modules/chats/components/blocks/ChatMessage.vue +12 -0
  389. package/src/modules/chats/components/sections/ChatWindow.vue +84 -2
  390. package/src/modules/chats/controllers/chats.controller.js +187 -0
  391. package/src/modules/chats/models/chat.model.js +21 -0
  392. package/src/modules/chats/routes/chats.routes.js +46 -0
  393. package/src/modules/chats/store/chat.store.js +67 -0
  394. package/src/modules/community/components/layouts/Community.vue +2 -2
  395. package/src/modules/community/components/pages/Posts.vue +3 -328
  396. package/src/modules/events/components/pages/EditEventTickets.vue +1 -1
  397. package/src/modules/events/components/pages/Events.vue +2 -2
  398. package/src/modules/globals/controllers/classes/globals.cache.js +64 -55
  399. package/src/modules/globals/controllers/classes/globals.logger.js +40 -4
  400. package/src/modules/globals/controllers/classes/globals.observer.js +54 -4
  401. package/src/modules/globals/views/components/partials/Header.vue +1 -1
  402. package/src/modules/globals/views/components/partials/Sidebar.vue +17 -13
  403. package/src/modules/globals/views/mixins/mixins.js +7 -0
  404. package/src/modules/inventory/CLAUDE.md +330 -0
  405. package/src/modules/inventory/PROMT.md +25 -0
  406. package/src/modules/inventory/components/forms/AdjustmentForm.vue +53 -36
  407. package/src/modules/inventory/components/forms/ColumnSettingsMenu.vue +11 -6
  408. package/src/modules/inventory/components/forms/HistoryView.vue +21 -9
  409. package/src/modules/inventory/components/forms/StockAlertsForm.vue +33 -22
  410. package/src/modules/inventory/components/pages/Inventory.vue +40 -40
  411. package/src/modules/inventory/components/pages/InventoryEdit.vue +1 -1
  412. package/src/modules/inventory/docs/01-intro.md +126 -0
  413. package/src/modules/inventory/docs/02-architecture.md +266 -0
  414. package/src/modules/inventory/docs/03-components-and-relationships.md +338 -0
  415. package/src/modules/inventory/docs/04-business-logic-and-algorithms.md +376 -0
  416. package/src/modules/inventory/docs/05-api-specification.md +356 -0
  417. package/src/modules/inventory/docs/06-access-control.md +320 -0
  418. package/src/modules/inventory/inventory.server.js +6 -2
  419. package/src/modules/inventory/{services → middlewares}/inventory.verifier.js +5 -16
  420. package/src/modules/inventory/models/stock.availability.model.js +20 -7
  421. package/src/modules/inventory/routes/inventory.routes.js +14 -17
  422. package/src/modules/inventory/services/adjustment.service.js +137 -0
  423. package/src/modules/inventory/services/audit.service.js +160 -0
  424. package/src/modules/inventory/services/availability.service.js +323 -0
  425. package/src/modules/inventory/services/inventory.helpers.old.js +217 -0
  426. package/src/modules/inventory/store/{ inventory.store.js → inventory.store.js} +0 -14
  427. package/src/modules/inventory/workers/inventory.availability.worker.js +29 -30
  428. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +160 -8
  429. package/src/modules/notifications/controllers/notifications.controller.js +0 -6
  430. package/src/modules/notifications/services/notification.service.js +1 -17
  431. package/src/modules/notifications/services/web-push.service.js +0 -2
  432. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +2 -2
  433. package/src/modules/orders/components/blocks/CardOrderVar1.vue +1 -1
  434. package/src/modules/orders/controllers/orders.controller.js +2 -4
  435. package/src/modules/orders/orders.client.js +2 -2
  436. package/src/modules/orders/router/customers.router.js +1 -1
  437. package/src/modules/organizations/CLAUDE.md +259 -0
  438. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -22
  439. package/src/modules/organizations/components/blocks/Socials.vue +1 -1
  440. package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +3 -3
  441. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +191 -0
  442. package/src/modules/organizations/components/forms/DepartmentForm.vue +390 -0
  443. package/src/modules/organizations/components/forms/InviteForm.vue +81 -0
  444. package/src/modules/organizations/components/pages/Department.vue +10 -10
  445. package/src/modules/organizations/components/pages/DepartmentEdit.vue +8 -8
  446. package/src/modules/organizations/components/pages/Members.vue +265 -171
  447. package/src/modules/organizations/components/pages/Organization.new.vue +172 -183
  448. package/src/modules/organizations/components/pages/Organization.vue +6 -6
  449. package/src/modules/organizations/components/pages/OrganizationEdit.vue +1 -1
  450. package/src/modules/organizations/components/pages/Organizations.vue +1 -1
  451. package/src/modules/organizations/components/sections/Organizations.vue +2 -2
  452. package/src/modules/organizations/components/sections/Publics.vue +4 -4
  453. package/src/modules/organizations/configs/navigation.organization.config.js +40 -39
  454. package/src/modules/organizations/controllers/departments.controller.js +53 -34
  455. package/src/modules/organizations/controllers/invites.controller.js +44 -5
  456. package/src/modules/organizations/controllers/memberships.controller.js +43 -4
  457. package/src/modules/organizations/organizations.client.js +24 -15
  458. package/src/modules/organizations/router/departments.router.js +0 -18
  459. package/src/modules/organizations/routes/departments.routes.js +6 -8
  460. package/src/modules/organizations/routes/invites.routes.js +6 -4
  461. package/src/modules/organizations/routes/memberships.routes.js +6 -5
  462. package/src/modules/organizations/routes/organizations.routes.js +1 -1
  463. package/src/modules/organizations/store/departments.store.js +5 -0
  464. package/src/modules/organizations/store/invites.store.js +5 -0
  465. package/src/modules/organizations/store/memberships.store.js +23 -0
  466. package/src/modules/products/components/pages/Products.vue +0 -1
  467. package/src/modules/spots/components/blocks/CardSpot.vue +1 -1
  468. package/src/modules/spots/components/pages/Spots.vue +3 -203
  469. package/src/styles/base/all.scss +0 -15
  470. package/src/styles/responsive.scss +1 -31
  471. package/src/styles/typography.scss +20 -5
  472. package/dist/main-CSzPfQYR.cjs +0 -11
  473. package/dist/martyrs/src/components/Address/Address.vue2.cjs.map +0 -1
  474. package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
  475. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
  476. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
  477. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs.map +0 -1
  478. package/dist/martyrs/src/components/Select/Select.vue2.cjs.map +0 -1
  479. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs +0 -76
  480. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs.map +0 -1
  481. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js +0 -76
  482. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js.map +0 -1
  483. package/dist/martyrs/src/modules/inventory/store/ inventory.store.cjs.map +0 -1
  484. package/dist/martyrs/src/modules/inventory/store/ inventory.store.js.map +0 -1
  485. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +0 -280
  486. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs.map +0 -1
  487. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +0 -280
  488. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js.map +0 -1
  489. package/dist/martyrs/src/modules/organizations/store/departments.cjs +0 -121
  490. package/dist/martyrs/src/modules/organizations/store/departments.cjs.map +0 -1
  491. package/dist/martyrs/src/modules/organizations/store/departments.js +0 -121
  492. package/dist/martyrs/src/modules/organizations/store/departments.js.map +0 -1
  493. package/dist/martyrs/src/modules/organizations/store/invites.cjs +0 -64
  494. package/dist/martyrs/src/modules/organizations/store/invites.cjs.map +0 -1
  495. package/dist/martyrs/src/modules/organizations/store/invites.js +0 -64
  496. package/dist/martyrs/src/modules/organizations/store/invites.js.map +0 -1
  497. package/dist/martyrs/src/modules/organizations/store/memberships.cjs +0 -87
  498. package/dist/martyrs/src/modules/organizations/store/memberships.cjs.map +0 -1
  499. package/dist/martyrs/src/modules/organizations/store/memberships.js +0 -87
  500. package/dist/martyrs/src/modules/organizations/store/memberships.js.map +0 -1
  501. package/src/modules/globals/controllers/classes/globals.websocket.ws.js +0 -102
  502. package/src/modules/globals/views/components/blocks/BlockFilter.vue +0 -60
  503. package/src/modules/inventory/docs/README.md +0 -291
  504. package/src/modules/inventory/models/stock.balance.model.js +0 -43
  505. package/src/modules/inventory/services/inventory.crud.js +0 -710
  506. package/src/modules/inventory/tests/inventory.test.js +0 -281
  507. package/src/modules/organizations/store/departments.js +0 -137
  508. package/src/modules/organizations/store/invites.js +0 -76
  509. package/src/modules/organizations/store/memberships.js +0 -110
@@ -1,710 +0,0 @@
1
- import Cache from '@martyrs/src/modules/globals/controllers/classes/globals.cache.js';
2
- import Logger from '@martyrs/src/modules/globals/controllers/classes/globals.logger.js';
3
- import Observer from '@martyrs/src/modules/globals/controllers/classes/globals.observer.js';
4
- import queryProcessor from '@martyrs/src/modules/globals/controllers/utils/queryProcessor.js';
5
-
6
- const controllerFactory = db => {
7
- const cache = new Cache({ ttlSeconds: 300 });
8
- const logger = new Logger(db);
9
- const observer = new Observer();
10
-
11
- // Batch recalculate availability
12
- async function recalculateAvailability(variantIds, storage, session) {
13
- // 1. Загружаем все варианты одним запросом
14
- const variants = await db.variant.find({
15
- _id: { $in: variantIds }
16
- }).session(session).lean();
17
-
18
- if (!variants.length) return;
19
-
20
- // 2. Собираем все ID ингредиентов
21
- const allIngredientIds = new Set();
22
- const variantMap = new Map();
23
-
24
- variants.forEach(v => {
25
- variantMap.set(v._id.toString(), v);
26
- v.ingredients?.forEach(ing => {
27
- allIngredientIds.add(ing._id.toString());
28
- });
29
- });
30
-
31
- // 3. Загружаем все балансы одним запросом
32
- const balances = await db.stockBalance.find({
33
- storage,
34
- $or: [
35
- { variant: { $in: variantIds } },
36
- { product: { $in: Array.from(allIngredientIds) } }
37
- ]
38
- }).session(session).lean();
39
-
40
- // 4. Индексируем балансы в память
41
- const balanceByVariant = new Map();
42
- const balanceByProduct = new Map();
43
-
44
- balances.forEach(b => {
45
- if (b.variant) {
46
- balanceByVariant.set(b.variant.toString(), b.quantity);
47
- } else if (b.product) {
48
- balanceByProduct.set(b.product.toString(), b.quantity);
49
- }
50
- });
51
-
52
- // 5. Готовим bulk операции
53
- const bulkOps = [];
54
-
55
- variants.forEach(variant => {
56
- const variantId = variant._id.toString();
57
- const directStock = balanceByVariant.get(variantId) || 0;
58
-
59
- // On-demand support: если прямого стока нет, но есть ингредиенты
60
- let available = directStock > 0 ? directStock : Infinity;
61
- const constraints = [];
62
-
63
- // Проверяем ингредиенты
64
- if (variant.ingredients?.length) {
65
- for (const ing of variant.ingredients) {
66
- // Пропускаем опциональные ингредиенты
67
- if (ing.optional) continue;
68
-
69
- const stock = balanceByProduct.get(ing._id.toString()) || 0;
70
- const canMake = Math.floor(stock / (ing.quantity || 1));
71
-
72
- // Для on-demand вариантов ограничиваем по ингредиентам
73
- if (directStock === 0 || canMake < available) {
74
- available = canMake;
75
- }
76
-
77
- constraints.push({
78
- ingredient: ing._id,
79
- stock,
80
- required: ing.quantity,
81
- available: canMake
82
- });
83
- }
84
- }
85
-
86
- // Если это on-demand и нет обязательных ингредиентов
87
- if (available === Infinity) {
88
- available = directStock;
89
- }
90
-
91
- bulkOps.push({
92
- updateOne: {
93
- filter: { variant: variant._id, storage },
94
- update: {
95
- $set: {
96
- product: variant.product,
97
- quantity: directStock,
98
- available,
99
- constraints,
100
- calculatedAt: new Date()
101
- },
102
- $setOnInsert: {
103
- owner: variant.owner,
104
- creator: variant.creator
105
- }
106
- },
107
- upsert: true
108
- }
109
- });
110
- });
111
-
112
- // 6. Выполняем bulk update
113
- if (bulkOps.length) {
114
- await db.stockAvailability.bulkWrite(bulkOps, { session });
115
-
116
- // 7. Проверяем алерты
117
- for (const variant of variants) {
118
- const variantId = variant._id.toString();
119
- const available = balanceByVariant.get(variantId) || 0;
120
-
121
- // Найти алерты для этого варианта/продукта/склада
122
- const alerts = await db.stockAlert.find({
123
- product: variant.product,
124
- enabled: true,
125
- $or: [
126
- { variant: null, storage: null },
127
- { variant: null, storage: storage },
128
- { variant: variant._id, storage: null },
129
- { variant: variant._id, storage: storage }
130
- ]
131
- }).session(session);
132
-
133
- for (const alert of alerts) {
134
- if (available < alert.threshold) {
135
- // Отправить уведомление
136
- try {
137
- await fetch(`${process.env.API_URL || ''}/api/notifications`, {
138
- method: 'POST',
139
- headers: {
140
- 'Content-Type': 'application/json',
141
- 'X-Service-Key': process.env.SERVICE_KEY,
142
- },
143
- body: JSON.stringify({
144
- title: 'Low Stock Alert',
145
- body: `Stock is low: ${available} units (threshold: ${alert.threshold})`,
146
- type: 'stock_alert',
147
- metadata: {
148
- alertId: alert._id,
149
- productId: variant.product,
150
- variantId: variant._id,
151
- storageId: storage,
152
- currentStock: available,
153
- threshold: alert.threshold
154
- },
155
- userId: alert.creator.target
156
- })
157
- });
158
- } catch (notificationError) {
159
- logger.error('Error sending stock alert notification:', notificationError);
160
- // Continue execution, don't fail if notification fails
161
- }
162
- }
163
- }
164
- }
165
- }
166
- }
167
-
168
- // Fire-and-forget cache invalidation
169
- function invalidateCache(tags) {
170
- setImmediate(() => {
171
- cache.delByTags(tags).catch(err =>
172
- logger.error('Cache invalidation error', err)
173
- );
174
- });
175
- }
176
-
177
- // Change stream для пересчета при изменении рецептов
178
- function initChangeStreams() {
179
- const variantStream = db.variant.watch([], { fullDocument: 'updateLookup' });
180
-
181
- variantStream.on('change', async (change) => {
182
- if (change.operationType === 'update' &&
183
- change.updateDescription?.updatedFields?.ingredients) {
184
-
185
- const variantId = change.documentKey._id;
186
-
187
- // Найти все склады где есть этот вариант
188
- const storages = await db.stockBalance.distinct('storage', {
189
- variant: variantId
190
- });
191
-
192
- // Пересчитать для каждого склада
193
- for (const storage of storages) {
194
- await recalculateAvailability([variantId], storage);
195
- }
196
-
197
- invalidateCache(['availability']);
198
- }
199
- });
200
-
201
- variantStream.on('error', err => {
202
- logger.error('Variant change stream error', err);
203
- });
204
- }
205
-
206
- // Инициализация change streams
207
- initChangeStreams();
208
-
209
- // Stock Adjustments controller
210
- const adjustments = {
211
- async read(req, res) {
212
- try {
213
- const cacheKey = JSON.stringify({ type: 'adjustments', ...req.verifiedQuery });
214
- let data = await cache.get(cacheKey);
215
-
216
- if (!data) {
217
- const stages = [
218
- ...queryProcessor.getBasicOptions(req.verifiedQuery),
219
- ...queryProcessor.getFilterDate(req.verifiedQuery.dateStart, req.verifiedQuery.dateEnd),
220
- {
221
- $lookup: {
222
- from: 'products',
223
- let: { productId: '$product' },
224
- pipeline: [
225
- { $match: { $expr: { $eq: ['$_id', '$$productId'] } } },
226
- { $project: { name: 1, sku: 1 } }
227
- ],
228
- as: 'productData'
229
- }
230
- },
231
- { $unwind: { path: '$productData', preserveNullAndEmptyArrays: true } },
232
- ...queryProcessor.getSortingOptions('createdAt', 'desc'),
233
- ...queryProcessor.getPaginationOptions(req.verifiedQuery.skip, req.verifiedQuery.limit)
234
- ];
235
-
236
- data = await db.stockAdjustment.aggregate(stages).exec();
237
- await cache.setWithTags(cacheKey, data, ['adjustments']);
238
- }
239
-
240
- res.json(data);
241
- } catch (error) {
242
- logger.error('Error reading adjustments', error);
243
- res.status(500).json({ message: error.message });
244
- }
245
- },
246
-
247
- async create(req, res) {
248
- const session = await db.mongoose.startSession();
249
- session.startTransaction();
250
-
251
- try {
252
- const adjustmentData = {
253
- ...req.verifiedBody,
254
- creator: req.verifiedBody.creator || { type: 'user', target: req.userId },
255
- owner: req.verifiedBody.owner
256
- };
257
-
258
- // 1. Create adjustment
259
- const [adjustment] = await db.stockAdjustment.create([adjustmentData], { session });
260
-
261
- // 2. Update balance
262
- const balance = await db.stockBalance.findOneAndUpdate(
263
- {
264
- product: adjustmentData.product,
265
- variant: adjustmentData.variant,
266
- storage: adjustmentData.storage
267
- },
268
- {
269
- $inc: { quantity: adjustmentData.quantity },
270
- $setOnInsert: {
271
- owner: adjustmentData.owner,
272
- creator: adjustmentData.creator
273
- }
274
- },
275
- { upsert: true, new: true, session }
276
- );
277
-
278
- // 3. Collect affected variants
279
- const affectedVariants = new Set();
280
- if (adjustmentData.variant) {
281
- affectedVariants.add(adjustmentData.variant.toString());
282
- }
283
-
284
- // Find variants using this product as ingredient
285
- const dependentVariants = await db.variant.find({
286
- 'ingredients._id': adjustmentData.product,
287
- 'ingredients.optional': { $ne: true }
288
- }).distinct('_id').session(session);
289
-
290
- dependentVariants.forEach(v => affectedVariants.add(v.toString()));
291
-
292
- // 4. Batch recalculate availability
293
- if (affectedVariants.size) {
294
- await recalculateAvailability(
295
- Array.from(affectedVariants),
296
- adjustmentData.storage,
297
- session
298
- );
299
- }
300
-
301
- await session.commitTransaction();
302
-
303
- // 5. Fire-and-forget
304
- invalidateCache(['adjustments', 'balance', 'availability']);
305
-
306
- setImmediate(() => {
307
- observer.notify('stock.adjusted', {
308
- adjustment,
309
- balance,
310
- affectedVariants: Array.from(affectedVariants)
311
- });
312
- });
313
-
314
- res.status(201).json(adjustment);
315
- } catch (error) {
316
- console.log(error)
317
- await session.abortTransaction();
318
- logger.error('Error creating adjustment', error);
319
- res.status(500).json({ message: error.message });
320
- } finally {
321
- session.endSession();
322
- }
323
- }
324
- };
325
-
326
- // Stock Balance controller
327
- const balance = {
328
- async read(req, res) {
329
- try {
330
- const cacheKey = JSON.stringify({ type: 'balance', ...req.verifiedQuery });
331
- let data = await cache.get(cacheKey);
332
-
333
- if (!data) {
334
- const pipeline = [
335
- {
336
- $match: {
337
- ...(req.verifiedQuery.storage && { storage: new db.mongoose.Types.ObjectId(req.verifiedQuery.storage) }),
338
- ...(req.verifiedQuery.product && { product: new db.mongoose.Types.ObjectId(req.verifiedQuery.product) }),
339
- quantity: { $gt: 0 }
340
- }
341
- },
342
- {
343
- $lookup: {
344
- from: 'products',
345
- let: { pid: '$product' },
346
- pipeline: [
347
- { $match: { $expr: { $eq: ['$_id', '$$pid'] } } },
348
- { $project: { name: 1, sku: 1 } }
349
- ],
350
- as: 'product'
351
- }
352
- },
353
- { $unwind: { path: '$product', preserveNullAndEmptyArrays: true } },
354
- {
355
- $lookup: {
356
- from: 'spots',
357
- let: { sid: '$storage' },
358
- pipeline: [
359
- { $match: { $expr: { $eq: ['$_id', '$$sid'] } } },
360
- { $project: { name: 1, location: 1 } }
361
- ],
362
- as: 'storage'
363
- }
364
- },
365
- { $unwind: { path: '$storage', preserveNullAndEmptyArrays: true } },
366
- { $limit: req.verifiedQuery.limit },
367
- { $skip: req.verifiedQuery.skip }
368
- ];
369
-
370
- data = await db.stockBalance.aggregate(pipeline).exec();
371
- await cache.setWithTags(cacheKey, data, ['balance']);
372
- }
373
-
374
- res.json(data);
375
- } catch (error) {
376
- logger.error('Error reading balance', error);
377
- res.status(500).json({ message: error.message });
378
- }
379
- }
380
- };
381
-
382
- // Stock Availability controller (optimized)
383
- const availability = {
384
- async read(req, res) {
385
- try {
386
- console.log('=== AVAILABILITY DEBUG ===');
387
- console.log('req.query:', req.query);
388
- console.log('req.verifiedQuery:', req.verifiedQuery);
389
- console.log('req.verifiedQuery?.details:', req.verifiedQuery?.details);
390
-
391
- // Если verifiedQuery не установлен, конвертируем типы из query
392
- if (!req.verifiedQuery) {
393
- console.log('WARNING: req.verifiedQuery is undefined, converting from req.query');
394
- req.verifiedQuery = {
395
- ...req.query,
396
- skip: parseInt(req.query.skip) || 0,
397
- limit: parseInt(req.query.limit) || 20
398
- };
399
- }
400
-
401
- const cacheKey = JSON.stringify({ type: 'availability', ...req.verifiedQuery });
402
- let data = await cache.get(cacheKey);
403
-
404
- if (!data) {
405
- // Thin DTO by default, heavy joins optional
406
- const needsDetails = req.verifiedQuery?.details === 'true';
407
-
408
- // Начинаем с products чтобы показать ВСЕ товары, даже с нулевым stock
409
- const matchConditions = {};
410
- if (req.verifiedQuery?.owner) {
411
- matchConditions['owner.target'] = new db.mongoose.Types.ObjectId(req.verifiedQuery.owner);
412
- }
413
- if (req.verifiedQuery?.product) {
414
- matchConditions._id = new db.mongoose.Types.ObjectId(req.verifiedQuery.product);
415
- }
416
- if (req.verifiedQuery?.search) {
417
- matchConditions.name = { $regex: req.verifiedQuery.search, $options: 'i' };
418
- }
419
-
420
- const pipeline = [
421
- { $match: matchConditions },
422
- {
423
- $lookup: {
424
- from: 'stockavailabilities',
425
- let: { productId: '$_id' },
426
- pipeline: [
427
- {
428
- $match: {
429
- $expr: { $eq: ['$product', '$$productId'] },
430
- ...(req.verifiedQuery?.storage && { storage: new db.mongoose.Types.ObjectId(req.verifiedQuery.storage) })
431
- }
432
- }
433
- ],
434
- as: 'availability'
435
- }
436
- },
437
- {
438
- $addFields: {
439
- available: { $sum: '$availability.available' },
440
- totalStock: { $sum: '$availability.quantity' },
441
- storageCount: { $size: '$availability' }
442
- }
443
- }
444
- ];
445
-
446
- // Add joins only if needed
447
- if (needsDetails) {
448
- pipeline.push(
449
- {
450
- $lookup: {
451
- from: 'products',
452
- let: { pid: '$product' },
453
- pipeline: [
454
- { $match: { $expr: { $eq: ['$_id', '$$pid'] } } },
455
- { $project: { name: 1, sku: 1, price: 1, images: { $slice: ['$images', 1] } } }
456
- ],
457
- as: 'product'
458
- }
459
- },
460
- { $unwind: { path: '$product', preserveNullAndEmptyArrays: true } },
461
- {
462
- $lookup: {
463
- from: 'variants',
464
- let: { vid: '$variant' },
465
- pipeline: [
466
- { $match: { $expr: { $eq: ['$_id', '$$vid'] } } },
467
- { $project: { name: 1, attributes: 1, price: 1 } }
468
- ],
469
- as: 'variant'
470
- }
471
- },
472
- { $unwind: { path: '$variant', preserveNullAndEmptyArrays: true } }
473
- );
474
- }
475
-
476
- pipeline.push(
477
- { $sort: { available: -1 } },
478
- { $limit: req.verifiedQuery?.limit || 20 },
479
- { $skip: req.verifiedQuery?.skip || 0 }
480
- );
481
-
482
- data = await db.stockAvailability.aggregate(pipeline).allowDiskUse(true).exec();
483
- await cache.setWithTags(cacheKey, data, ['availability']);
484
- }
485
-
486
- res.json(data);
487
- } catch (error) {
488
- logger.error('Error reading availability', error);
489
- res.status(500).json({ message: error.message });
490
- }
491
- }
492
- };
493
-
494
- // Stock Inventory controller
495
- const inventory = {
496
- async read(req, res) {
497
- try {
498
- const stages = [
499
- ...queryProcessor.getBasicOptions(req.verifiedQuery),
500
- queryProcessor.getCreatorUserLookupStage(),
501
- queryProcessor.getAddFieldsCreatorOwnerStage(),
502
- ...queryProcessor.getSortingOptions('createdAt', 'desc'),
503
- ...queryProcessor.getPaginationOptions(req.verifiedQuery.skip, req.verifiedQuery.limit)
504
- ];
505
-
506
- const data = await db.stockAudit.aggregate(stages).exec();
507
- res.json(data);
508
- } catch (error) {
509
- logger.error('Error reading inventories', error);
510
- res.status(500).json({ message: error.message });
511
- }
512
- },
513
-
514
- async create(req, res) {
515
- const session = await db.mongoose.startSession();
516
- session.startTransaction();
517
-
518
- try {
519
- const inventoryData = {
520
- ...req.verifiedBody,
521
- creator: { type: 'user', target: req.userId },
522
- owner: req.verifiedBody.owner
523
- };
524
-
525
- const audit = await db.stockAudit.create([inventoryData], { session });
526
-
527
- // Если status = 'published', сразу выполняем complete логику
528
- if (req.verifiedBody.status === 'published') {
529
- const auditDoc = audit[0];
530
-
531
- // Создаем StockAdjustment для каждой позиции
532
- const adjustmentPromises = auditDoc.positions.map(position => {
533
- return db.stockAdjustment.create([{
534
- product: position.product,
535
- variant: position.variant,
536
- storage: auditDoc.storage,
537
- source: { type: 'Inventory', target: auditDoc._id },
538
- reason: position.reason || 'custom',
539
- comment: position.comment,
540
- quantity: position.quantity,
541
- cost: position.cost,
542
- creator: auditDoc.creator,
543
- owner: auditDoc.owner
544
- }], { session });
545
- });
546
-
547
- await Promise.all(adjustmentPromises);
548
-
549
- // Обновляем StockBalance
550
- const balanceOps = auditDoc.positions.map(p => ({
551
- updateOne: {
552
- filter: {
553
- product: p.product,
554
- variant: p.variant || null,
555
- storage: auditDoc.storage
556
- },
557
- update: {
558
- $inc: { quantity: p.quantity },
559
- $setOnInsert: {
560
- owner: auditDoc.owner,
561
- creator: auditDoc.creator
562
- }
563
- },
564
- upsert: true
565
- }
566
- }));
567
-
568
- await db.stockBalance.bulkWrite(balanceOps, { session });
569
-
570
- // Пересчитываем StockAvailability
571
- const affectedVariants = new Set();
572
- const affectedProducts = new Set();
573
-
574
- auditDoc.positions.forEach(p => {
575
- if (p.variant) affectedVariants.add(p.variant.toString());
576
- affectedProducts.add(p.product.toString());
577
- });
578
-
579
- const dependentVariants = await db.variant.find({
580
- 'ingredients._id': { $in: Array.from(affectedProducts) },
581
- 'ingredients.optional': { $ne: true }
582
- }).distinct('_id').session(session);
583
-
584
- dependentVariants.forEach(v => affectedVariants.add(v.toString()));
585
-
586
- if (affectedVariants.size) {
587
- await recalculateAvailability(Array.from(affectedVariants), auditDoc.storage, session);
588
- }
589
- }
590
-
591
- await session.commitTransaction();
592
- invalidateCache(['inventories', 'balances', 'availability']);
593
-
594
- res.status(201).json(audit[0]);
595
- } catch (error) {
596
- await session.abortTransaction();
597
- logger.error('Error creating inventory', error);
598
- res.status(500).json({ message: error.message });
599
- } finally {
600
- session.endSession();
601
- }
602
- },
603
-
604
- async complete(req, res) {
605
- const session = await db.mongoose.startSession();
606
- session.startTransaction();
607
-
608
- try {
609
- const inventory = await db.stockAudit.findById(req.verifiedBody._id).session(session);
610
-
611
- if (!inventory || inventory.status !== 'draft') {
612
- throw new Error('Invalid inventory status');
613
- }
614
-
615
- // 1. Создаем StockAdjustment для каждой позиции
616
- const adjustmentPromises = inventory.positions.map(position => {
617
- return db.stockAdjustment.create([{
618
- product: position.product,
619
- variant: position.variant,
620
- storage: inventory.storage,
621
- source: { type: 'Inventory', target: inventory._id },
622
- reason: position.reason || 'custom',
623
- comment: position.comment,
624
- quantity: position.quantity,
625
- cost: position.cost,
626
- creator: inventory.creator,
627
- owner: inventory.owner
628
- }], { session });
629
- });
630
-
631
- await Promise.all(adjustmentPromises);
632
-
633
- // 2. Обновляем StockBalance
634
- const bulkOps = inventory.positions.map(p => ({
635
- updateOne: {
636
- filter: {
637
- product: p.product,
638
- variant: p.variant || null,
639
- storage: inventory.storage
640
- },
641
- update: {
642
- $inc: { quantity: p.quantity },
643
- $setOnInsert: {
644
- owner: inventory.owner,
645
- creator: inventory.creator
646
- }
647
- },
648
- upsert: true
649
- }
650
- }));
651
-
652
- await db.stockBalance.bulkWrite(bulkOps, { session });
653
-
654
- // 3. Collect all affected variants
655
- const affectedVariants = new Set();
656
- const affectedProducts = new Set();
657
-
658
- inventory.positions.forEach(p => {
659
- if (p.variant) affectedVariants.add(p.variant.toString());
660
- affectedProducts.add(p.product.toString());
661
- });
662
-
663
- // Find dependent variants
664
- const dependentVariants = await db.variant.find({
665
- 'ingredients._id': { $in: Array.from(affectedProducts) },
666
- 'ingredients.optional': { $ne: true }
667
- }).distinct('_id').session(session);
668
-
669
- dependentVariants.forEach(v => affectedVariants.add(v.toString()));
670
-
671
- // 4. Batch recalculate
672
- if (affectedVariants.size) {
673
- await recalculateAvailability(
674
- Array.from(affectedVariants),
675
- inventory.storage,
676
- session
677
- );
678
- }
679
-
680
- // 5. Update inventory status
681
- inventory.status = 'published';
682
- await inventory.save({ session });
683
-
684
- await session.commitTransaction();
685
-
686
- // 5. Fire-and-forget
687
- invalidateCache(['adjustments', 'balance', 'availability', 'inventories']);
688
-
689
- setImmediate(() => {
690
- observer.notify('inventory.completed', {
691
- inventory,
692
- affectedVariants: Array.from(affectedVariants)
693
- });
694
- });
695
-
696
- res.json(inventory);
697
- } catch (error) {
698
- await session.abortTransaction();
699
- logger.error('Error completing inventory', error);
700
- res.status(500).json({ message: error.message });
701
- } finally {
702
- session.endSession();
703
- }
704
- }
705
- };
706
-
707
- return { adjustments, balance, availability, inventory };
708
- };
709
-
710
- export default controllerFactory;