@things-factory/warehouse-base 7.0.1-beta.9 → 7.0.1-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/dist-server/constants/index.d.ts +5 -0
  2. package/dist-server/constants/inventory.d.ts +63 -0
  3. package/dist-server/constants/location.d.ts +13 -0
  4. package/dist-server/constants/pallet.d.ts +9 -0
  5. package/dist-server/constants/rule-type.d.ts +5 -0
  6. package/dist-server/constants/tote.d.ts +5 -0
  7. package/dist-server/controllers/ecommerce/ecommerce-controller.d.ts +6 -0
  8. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  9. package/dist-server/controllers/ecommerce/index.d.ts +2 -0
  10. package/dist-server/controllers/ecommerce/sellercraft-controller.d.ts +6 -0
  11. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  12. package/dist-server/controllers/index.d.ts +2 -0
  13. package/dist-server/controllers/warehouse-controller.d.ts +69 -0
  14. package/dist-server/controllers/warehouse-controller.js.map +1 -1
  15. package/dist-server/index.d.ts +9 -0
  16. package/dist-server/middlewares/index.d.ts +0 -0
  17. package/dist-server/migrations/index.d.ts +1 -0
  18. package/dist-server/service/index.d.ts +31 -0
  19. package/dist-server/service/inventory/index.d.ts +5 -0
  20. package/dist-server/service/inventory/inventory-mutation.d.ts +12 -0
  21. package/dist-server/service/inventory/inventory-mutation.js +4 -4
  22. package/dist-server/service/inventory/inventory-mutation.js.map +1 -1
  23. package/dist-server/service/inventory/inventory-query.d.ts +138 -0
  24. package/dist-server/service/inventory/inventory-query.js +16 -10
  25. package/dist-server/service/inventory/inventory-query.js.map +1 -1
  26. package/dist-server/service/inventory/inventory-types.d.ts +125 -0
  27. package/dist-server/service/inventory/inventory-types.js +10 -10
  28. package/dist-server/service/inventory/inventory-types.js.map +1 -1
  29. package/dist-server/service/inventory/inventory.d.ts +107 -0
  30. package/dist-server/service/inventory/inventory.js +14 -12
  31. package/dist-server/service/inventory/inventory.js.map +1 -1
  32. package/dist-server/service/inventory-change/index.d.ts +5 -0
  33. package/dist-server/service/inventory-change/inventory-change-mutation.d.ts +17 -0
  34. package/dist-server/service/inventory-change/inventory-change-mutation.js +4 -4
  35. package/dist-server/service/inventory-change/inventory-change-mutation.js.map +1 -1
  36. package/dist-server/service/inventory-change/inventory-change-query.d.ts +11 -0
  37. package/dist-server/service/inventory-change/inventory-change-query.js +3 -3
  38. package/dist-server/service/inventory-change/inventory-change-query.js.map +1 -1
  39. package/dist-server/service/inventory-change/inventory-change-types.d.ts +15 -0
  40. package/dist-server/service/inventory-change/inventory-change-types.js +6 -6
  41. package/dist-server/service/inventory-change/inventory-change-types.js.map +1 -1
  42. package/dist-server/service/inventory-change/inventory-change.d.ts +46 -0
  43. package/dist-server/service/inventory-change/inventory-change.js +5 -6
  44. package/dist-server/service/inventory-change/inventory-change.js.map +1 -1
  45. package/dist-server/service/inventory-history/index.d.ts +5 -0
  46. package/dist-server/service/inventory-history/inventory-history-mutation.d.ts +9 -0
  47. package/dist-server/service/inventory-history/inventory-history-mutation.js +2 -2
  48. package/dist-server/service/inventory-history/inventory-history-mutation.js.map +1 -1
  49. package/dist-server/service/inventory-history/inventory-history-query.d.ts +23 -0
  50. package/dist-server/service/inventory-history/inventory-history-query.js +10 -10
  51. package/dist-server/service/inventory-history/inventory-history-query.js.map +1 -1
  52. package/dist-server/service/inventory-history/inventory-history-types.d.ts +162 -0
  53. package/dist-server/service/inventory-history/inventory-history-types.js +24 -25
  54. package/dist-server/service/inventory-history/inventory-history-types.js.map +1 -1
  55. package/dist-server/service/inventory-history/inventory-history.d.ts +54 -0
  56. package/dist-server/service/inventory-history/inventory-history.js +11 -8
  57. package/dist-server/service/inventory-history/inventory-history.js.map +1 -1
  58. package/dist-server/service/inventory-item/index.d.ts +5 -0
  59. package/dist-server/service/inventory-item/inventory-item-mutation.d.ts +11 -0
  60. package/dist-server/service/inventory-item/inventory-item-mutation.js +2 -2
  61. package/dist-server/service/inventory-item/inventory-item-mutation.js.map +1 -1
  62. package/dist-server/service/inventory-item/inventory-item-query.d.ts +17 -0
  63. package/dist-server/service/inventory-item/inventory-item-query.js +7 -7
  64. package/dist-server/service/inventory-item/inventory-item-query.js.map +1 -1
  65. package/dist-server/service/inventory-item/inventory-item-type.d.ts +28 -0
  66. package/dist-server/service/inventory-item/inventory-item-type.js +6 -6
  67. package/dist-server/service/inventory-item/inventory-item-type.js.map +1 -1
  68. package/dist-server/service/inventory-item/inventory-item.d.ts +27 -0
  69. package/dist-server/service/inventory-item/inventory-item.js +5 -6
  70. package/dist-server/service/inventory-item/inventory-item.js.map +1 -1
  71. package/dist-server/service/inventory-item-change/index.d.ts +5 -0
  72. package/dist-server/service/inventory-item-change/inventory-item-change-mutation.d.ts +9 -0
  73. package/dist-server/service/inventory-item-change/inventory-item-change-mutation.js +2 -2
  74. package/dist-server/service/inventory-item-change/inventory-item-change-mutation.js.map +1 -1
  75. package/dist-server/service/inventory-item-change/inventory-item-change-query.d.ts +11 -0
  76. package/dist-server/service/inventory-item-change/inventory-item-change-query.js +3 -3
  77. package/dist-server/service/inventory-item-change/inventory-item-change-query.js.map +1 -1
  78. package/dist-server/service/inventory-item-change/inventory-item-change-type.d.ts +26 -0
  79. package/dist-server/service/inventory-item-change/inventory-item-change-type.js +6 -6
  80. package/dist-server/service/inventory-item-change/inventory-item-change-type.js.map +1 -1
  81. package/dist-server/service/inventory-item-change/inventory-item-change.d.ts +23 -0
  82. package/dist-server/service/inventory-item-change/inventory-item-change.js +4 -4
  83. package/dist-server/service/inventory-item-change/inventory-item-change.js.map +1 -1
  84. package/dist-server/service/inventory-product/index.d.ts +5 -0
  85. package/dist-server/service/inventory-product/inventory-product-mutation.d.ts +9 -0
  86. package/dist-server/service/inventory-product/inventory-product-mutation.js +2 -2
  87. package/dist-server/service/inventory-product/inventory-product-mutation.js.map +1 -1
  88. package/dist-server/service/inventory-product/inventory-product-query.d.ts +11 -0
  89. package/dist-server/service/inventory-product/inventory-product-query.js +3 -3
  90. package/dist-server/service/inventory-product/inventory-product-query.js.map +1 -1
  91. package/dist-server/service/inventory-product/inventory-product-type.d.ts +23 -0
  92. package/dist-server/service/inventory-product/inventory-product-type.js +6 -6
  93. package/dist-server/service/inventory-product/inventory-product-type.js.map +1 -1
  94. package/dist-server/service/inventory-product/inventory-product.d.ts +21 -0
  95. package/dist-server/service/inventory-product/inventory-product.js +5 -6
  96. package/dist-server/service/inventory-product/inventory-product.js.map +1 -1
  97. package/dist-server/service/location/index.d.ts +5 -0
  98. package/dist-server/service/location/location-mutation.d.ts +14 -0
  99. package/dist-server/service/location/location-mutation.js +7 -7
  100. package/dist-server/service/location/location-mutation.js.map +1 -1
  101. package/dist-server/service/location/location-query.d.ts +24 -0
  102. package/dist-server/service/location/location-query.js +6 -6
  103. package/dist-server/service/location/location-query.js.map +1 -1
  104. package/dist-server/service/location/location-types.d.ts +66 -0
  105. package/dist-server/service/location/location-types.js +14 -15
  106. package/dist-server/service/location/location-types.js.map +1 -1
  107. package/dist-server/service/location/location.d.ts +25 -0
  108. package/dist-server/service/location/location.js +2 -2
  109. package/dist-server/service/location/location.js.map +1 -1
  110. package/dist-server/service/movement/index.d.ts +5 -0
  111. package/dist-server/service/movement/movement-mutation.d.ts +7 -0
  112. package/dist-server/service/movement/movement-mutation.js +2 -2
  113. package/dist-server/service/movement/movement-mutation.js.map +1 -1
  114. package/dist-server/service/movement/movement-query.d.ts +14 -0
  115. package/dist-server/service/movement/movement-query.js +5 -5
  116. package/dist-server/service/movement/movement-query.js.map +1 -1
  117. package/dist-server/service/movement/movement-types.d.ts +29 -0
  118. package/dist-server/service/movement/movement-types.js +8 -8
  119. package/dist-server/service/movement/movement-types.js.map +1 -1
  120. package/dist-server/service/movement/movement.d.ts +20 -0
  121. package/dist-server/service/movement/movement.js +3 -4
  122. package/dist-server/service/movement/movement.js.map +1 -1
  123. package/dist-server/service/pallet/index.d.ts +5 -0
  124. package/dist-server/service/pallet/pallet-mutation.d.ts +10 -0
  125. package/dist-server/service/pallet/pallet-mutation.js +2 -2
  126. package/dist-server/service/pallet/pallet-mutation.js.map +1 -1
  127. package/dist-server/service/pallet/pallet-query.d.ts +14 -0
  128. package/dist-server/service/pallet/pallet-query.js +3 -3
  129. package/dist-server/service/pallet/pallet-query.js.map +1 -1
  130. package/dist-server/service/pallet/pallet-types.d.ts +31 -0
  131. package/dist-server/service/pallet/pallet-types.js +8 -8
  132. package/dist-server/service/pallet/pallet-types.js.map +1 -1
  133. package/dist-server/service/pallet/pallet.d.ts +24 -0
  134. package/dist-server/service/pallet/pallet.js +4 -5
  135. package/dist-server/service/pallet/pallet.js.map +1 -1
  136. package/dist-server/service/pallet-count/index.d.ts +5 -0
  137. package/dist-server/service/pallet-count/pallet-count-mutation.d.ts +10 -0
  138. package/dist-server/service/pallet-count/pallet-count-mutation.js +2 -2
  139. package/dist-server/service/pallet-count/pallet-count-mutation.js.map +1 -1
  140. package/dist-server/service/pallet-count/pallet-count-query.d.ts +11 -0
  141. package/dist-server/service/pallet-count/pallet-count-query.js +3 -3
  142. package/dist-server/service/pallet-count/pallet-count-query.js.map +1 -1
  143. package/dist-server/service/pallet-count/pallet-count-types.d.ts +15 -0
  144. package/dist-server/service/pallet-count/pallet-count-types.js +6 -6
  145. package/dist-server/service/pallet-count/pallet-count-types.js.map +1 -1
  146. package/dist-server/service/pallet-count/pallet-count.d.ts +16 -0
  147. package/dist-server/service/pallet-count/pallet-count.js +2 -2
  148. package/dist-server/service/pallet-count/pallet-count.js.map +1 -1
  149. package/dist-server/service/pallet-history/index.d.ts +5 -0
  150. package/dist-server/service/pallet-history/pallet-history-mutation.d.ts +9 -0
  151. package/dist-server/service/pallet-history/pallet-history-mutation.js +2 -2
  152. package/dist-server/service/pallet-history/pallet-history-mutation.js.map +1 -1
  153. package/dist-server/service/pallet-history/pallet-history-query.d.ts +11 -0
  154. package/dist-server/service/pallet-history/pallet-history-query.js +3 -3
  155. package/dist-server/service/pallet-history/pallet-history-query.js.map +1 -1
  156. package/dist-server/service/pallet-history/pallet-history-types.d.ts +15 -0
  157. package/dist-server/service/pallet-history/pallet-history-types.js +6 -6
  158. package/dist-server/service/pallet-history/pallet-history-types.js.map +1 -1
  159. package/dist-server/service/pallet-history/pallet-history.d.ts +23 -0
  160. package/dist-server/service/pallet-history/pallet-history.js +4 -5
  161. package/dist-server/service/pallet-history/pallet-history.js.map +1 -1
  162. package/dist-server/service/reduced-inventory-history/index.d.ts +2 -0
  163. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.d.ts +27 -0
  164. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.js +2 -2
  165. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.js.map +1 -1
  166. package/dist-server/service/tote/index.d.ts +5 -0
  167. package/dist-server/service/tote/tote-mutation.d.ts +11 -0
  168. package/dist-server/service/tote/tote-mutation.js +2 -2
  169. package/dist-server/service/tote/tote-mutation.js.map +1 -1
  170. package/dist-server/service/tote/tote-query.d.ts +14 -0
  171. package/dist-server/service/tote/tote-query.js +2 -2
  172. package/dist-server/service/tote/tote-query.js.map +1 -1
  173. package/dist-server/service/tote/tote-types.d.ts +18 -0
  174. package/dist-server/service/tote/tote-types.js +6 -6
  175. package/dist-server/service/tote/tote-types.js.map +1 -1
  176. package/dist-server/service/tote/tote.d.ts +19 -0
  177. package/dist-server/service/tote/tote.js +3 -4
  178. package/dist-server/service/tote/tote.js.map +1 -1
  179. package/dist-server/service/warehouse/index.d.ts +5 -0
  180. package/dist-server/service/warehouse/warehouse-mutation.d.ts +13 -0
  181. package/dist-server/service/warehouse/warehouse-mutation.js +7 -7
  182. package/dist-server/service/warehouse/warehouse-mutation.js.map +1 -1
  183. package/dist-server/service/warehouse/warehouse-query.d.ts +11 -0
  184. package/dist-server/service/warehouse/warehouse-query.js +3 -3
  185. package/dist-server/service/warehouse/warehouse-query.js.map +1 -1
  186. package/dist-server/service/warehouse/warehouse-types.d.ts +20 -0
  187. package/dist-server/service/warehouse/warehouse-types.js +6 -6
  188. package/dist-server/service/warehouse/warehouse-types.js.map +1 -1
  189. package/dist-server/service/warehouse/warehouse.d.ts +21 -0
  190. package/dist-server/service/warehouse/warehouse.js +3 -4
  191. package/dist-server/service/warehouse/warehouse.js.map +1 -1
  192. package/dist-server/tsconfig.tsbuildinfo +1 -1
  193. package/dist-server/utils/datetime-util.d.ts +7 -0
  194. package/dist-server/utils/datetime-util.js.map +1 -1
  195. package/dist-server/utils/index.d.ts +3 -0
  196. package/dist-server/utils/inventory-no-generator.d.ts +5 -0
  197. package/dist-server/utils/inventory-util.d.ts +111 -0
  198. package/dist-server/utils/inventory-util.js +7 -7
  199. package/dist-server/utils/inventory-util.js.map +1 -1
  200. package/package.json +8 -8
  201. package/server/service/inventory/inventory-query.ts +73 -15
  202. package/server/service/inventory-change/inventory-change-query.ts +4 -1
  203. package/server/service/inventory-history/inventory-history-query.ts +11 -8
  204. package/server/service/inventory-history/inventory-history.ts +2 -2
  205. package/server/service/inventory-item/inventory-item-query.ts +6 -3
  206. package/server/service/inventory-item/inventory-item.ts +2 -2
  207. package/server/service/inventory-item-change/inventory-item-change-query.ts +1 -1
  208. package/server/service/inventory-item-change/inventory-item-change.ts +2 -2
  209. package/server/service/inventory-product/inventory-product-query.ts +4 -1
  210. package/server/service/inventory-product/inventory-product.ts +2 -2
  211. package/server/service/location/location-mutation.ts +2 -2
  212. package/server/service/location/location-query.ts +10 -4
  213. package/server/service/movement/movement-query.ts +9 -3
  214. package/server/service/pallet/pallet-query.ts +6 -2
  215. package/server/service/pallet-count/pallet-count-query.ts +1 -1
  216. package/server/service/pallet-history/pallet-history-query.ts +4 -1
  217. package/server/service/warehouse/warehouse-mutation.ts +2 -2
  218. package/server/service/warehouse/warehouse-query.ts +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"inventory-mutation.js","sourceRoot":"","sources":["../../../server/service/inventory/inventory-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In, MoreThan, SelectQueryBuilder } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'\nimport { Product } from '@things-factory/product-base'\n\nimport { INVENTORY_STATUS, INVENTORY_TRANSACTION_TYPE, LOCATION_STATUS, RULE_TYPE } from '../../constants'\nimport { SellercraftController } from '../../controllers'\nimport { DateGenerator, InventoryNoGenerator, InventoryUtil } from '../../utils'\nimport { InventoryHistory } from '../inventory-history/inventory-history'\nimport { Location } from '../location/location'\nimport { Inventory } from './inventory'\nimport { InventoryPatch, NewInventory } from './inventory-types'\n\n@Resolver(Inventory)\nexport class InventoryMutation {\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Inventory)\n async createInventory(@Arg('inventory') inventory: NewInventory, @Ctx() context: ResolverContext): Promise<Inventory> {\n const { tx } = context.state\n\n return await tx.getRepository(Inventory).save({\n domain: context.state.domain,\n creator: context.state.user,\n updater: context.state.user,\n ...inventory\n })\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Inventory)\n async updateInventory(@Arg('patch') patch: InventoryPatch, @Ctx() context: ResolverContext): Promise<Inventory> {\n const { domain, user, tx } = context.state\n\n const invQb: SelectQueryBuilder<Inventory> = await tx\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .where('INV.domain_id = :domainId', { domainId: domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: patch.bizplace.id })\n .andWhere('INV.batch_id = :batchId', { batchId: patch.batchId })\n .andWhere('INV.product_id = :productId', { productId: patch.product.id })\n .andWhere('INV.packing_type = :packingType', { packingType: patch.packingType })\n .andWhere('INV.packing_size = :packingSize', { packingSize: patch.packingSize })\n\n if (patch?.cartonId) invQb.andWhere('INV.carton_id = :cartonId', { cartonId: patch.cartonId })\n else invQb.andWhere('INV.pallet_id = :palletId', { palletId: patch.palletId })\n\n const inventory = await invQb.getOne()\n\n return await tx.getRepository(Inventory).save({\n ...inventory,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Inventory)\n async updateInventoryRemark(@Arg('id') id: string, @Arg('remark') remark: string, @Ctx() context: ResolverContext): Promise<Inventory> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(Inventory)\n const inventory = await repository.findOne({ where: { domain: { id: domain.id }, id } })\n\n return await repository.save({\n ...inventory,\n remark,\n updater: user\n })\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteInventory(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx } = context.state\n\n await tx.getRepository(Inventory).delete({ domain: { id: context.state.domain.id }, name })\n return true\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => [Inventory])\n async updateMultipleInventory(@Arg('patches', type => [InventoryPatch]) patches: InventoryPatch[], @Ctx() context: ResolverContext): Promise<Inventory[]> {\n return await updateMultipleInventory(patches, context)\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteInventories(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx } = context.state\n\n await tx.getRepository(Inventory).delete({\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async inventoryTransfer(\n @Arg('originPalletId') originPalletId: string,\n @Arg('palletId', { nullable: true }) palletId: string,\n @Arg('cartonId', { nullable: true }) cartonId: string,\n @Arg('fromLocationName') fromLocationName: string,\n @Arg('toLocationName') toLocationName: string,\n @Arg('qty') qty: number,\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<Boolean> {\n const { domain, user, tx } = context.state\n\n const fromLocation: Location = await tx.getRepository(Location).findOne({\n where: { domain: { id: domain.id }, name: fromLocationName },\n relations: ['domain', 'warehouse']\n })\n // 1. check toLocation exist\n const toLocation: Location = await tx.getRepository(Location).findOne({\n where: { domain: { id: domain.id }, name: toLocationName },\n relations: ['domain', 'warehouse']\n })\n if (!toLocation) throw new Error(context.t(`error.To_location_does_not_exists`))\n\n if (qty < 0) throw new Error(`Invalid quantity`)\n\n // 2. search for related inventory\n const invQb: SelectQueryBuilder<Inventory> = await tx\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .innerJoinAndSelect('INV.location', 'loc')\n .innerJoinAndSelect('INV.product', 'product')\n .innerJoinAndSelect('INV.bizplace', 'bizplace')\n .leftJoinAndSelect('INV.refInventory', 'refInventory')\n .leftJoinAndSelect('INV.reusablePallet', 'reusablePallet')\n .leftJoinAndSelect('INV.productDetail', 'productDetail')\n .leftJoinAndSelect('bizplace.domain', 'domain')\n .leftJoinAndSelect('product.productDetails', 'productDetails')\n .leftJoinAndSelect('INV.originInventory', 'originInventory')\n .where('INV.domain_id = :domainId', { domainId: domain.id })\n .andWhere('INV.pallet_id = :palletId', { palletId: originPalletId })\n\n let inventory: Inventory = await invQb.getOne()\n if (!inventory) throw new Error('Inventory not found')\n\n if (qty > inventory.qty - (inventory?.lockedQty > 0 ? inventory.lockedQty : 0)) throw new Error('Transfer quantity exceeded inventory quantity')\n\n if (toLocation.name == inventory.location.name) throw new Error('Inventory is in current location')\n\n let transactionInventory = new InventoryUtil(tx, domain, user)\n\n const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({\n where: { domain: { id: inventory.bizplace.domain.id }, status: SellercraftStatus.ACTIVE },\n relations: ['domain']\n })\n\n const partialTransferFunc = async function (inventory, qty, fromLocation, toLocation, cartonId, palletId, context) {\n const { user, tx } = context.state\n\n if (qty < inventory.qty - (inventory?.lockedQty > 0 ? inventory.lockedQty : 0)) {\n if (!palletId || palletId.trim() == '') throw new Error('Require new lot id for partial transfer')\n\n let transferQty = qty\n let transferUomValue = (inventory.uomValue / inventory.qty) * qty\n let newInventory = {\n ...inventory,\n palletId,\n location: toLocation,\n warehouse: toLocation.warehouse,\n zone: toLocation.zone,\n creator: user,\n updater: user\n }\n\n delete newInventory.id\n delete newInventory.updatedAt\n\n newInventory.cartonId = cartonId\n newInventory.qty = transferQty\n newInventory.lockedQty = 0\n newInventory.uomValue = transferUomValue\n newInventory.lockedUomValue = 0\n if (inventory.originInventory?.id) {\n newInventory.originInventory = { id: inventory.originInventory.id }\n } else {\n newInventory.originInventory = { id: inventory.id }\n }\n\n await transactionInventory.transactionInventory(\n { ...inventory, qty: inventory.qty - transferQty, uomValue: inventory.uomValue - transferUomValue },\n null,\n -transferQty,\n -transferUomValue,\n INVENTORY_TRANSACTION_TYPE.RELOCATE,\n reason || null\n )\n\n await transactionInventory.transactionInventory(newInventory, null, transferQty, transferUomValue, INVENTORY_TRANSACTION_TYPE.RELOCATE, reason || null)\n\n if (sellercraft) {\n const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)\n await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory)\n await sellercraftCtrl.updateSellercraftStock(sellercraft, newInventory)\n }\n } else {\n inventory.warehouse = toLocation.warehouse\n inventory.location = toLocation\n inventory.zone = toLocation.zone\n inventory.updater = user\n inventory.cartonId = cartonId\n\n let isEmptyLocation = await tx.getRepository(Inventory).find({\n where: { location: { id: fromLocation.id } }\n })\n\n if ((isEmptyLocation.length = 1)) {\n await tx.getRepository(Location).save({\n ...fromLocation,\n status: LOCATION_STATUS.EMPTY\n })\n }\n\n await transactionInventory.transactionInventory(inventory, null, 0, 0, INVENTORY_TRANSACTION_TYPE.RELOCATE, reason || null)\n\n if (sellercraft) {\n const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)\n await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory)\n }\n }\n }\n\n if (inventory.cartonId && inventory.cartonId != '') {\n if (!cartonId) throw new Error('Require carton id')\n\n if (qty < inventory.qty - (inventory?.lockedQty > 0 ? inventory.lockedQty : 0)) {\n palletId = await generateId({\n domain: domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n }\n\n await partialTransferFunc(inventory, qty, fromLocation, toLocation, cartonId, palletId, context)\n } else {\n if (!palletId) {\n palletId = await generateId({\n domain: domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n }\n await partialTransferFunc(inventory, qty, fromLocation, toLocation, null, palletId, context)\n }\n\n return true\n }\n}\n\nexport async function updateMultipleInventory(patches: InventoryPatch[], context: ResolverContext): Promise<Inventory[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => !patch.id)\n const _updateRecords = patches.filter((patch: any) => patch.id)\n\n const inventoryRepo = tx.getRepository(Inventory)\n if (_createRecords.length > 0) {\n let today = new Date()\n let year = today.getFullYear()\n let month = today.getMonth()\n let date = today.getDate()\n\n for (let i = 0; i < _createRecords.length; i++) {\n const total = await tx.getRepository(Inventory).countBy({\n createdAt: MoreThan(new Date(year, month, date))\n })\n\n const newRecord = _createRecords[i]\n\n if (newRecord.location && newRecord.location.id) {\n var location = await tx.getRepository(Location).findOne({\n where: { id: newRecord.location.id },\n relations: ['warehouse']\n })\n newRecord.location = location\n newRecord.zone = location.zone\n newRecord.warehouse = location.warehouse\n }\n\n if (newRecord.bizplace && newRecord.bizplace.id) {\n newRecord.bizplace = (await tx.getRepository(Bizplace).findOneBy({ id: newRecord.bizplace.id })) as any\n }\n\n if (newRecord.product && newRecord.product.id) {\n var product = (await tx.getRepository(Product).findOneBy({ id: newRecord.product.id })) as any\n newRecord.product = product\n }\n\n let palletId =\n 'P' +\n year.toString().substr(year.toString().length - 2) +\n ('0' + (month + 1).toString()).substr(('0' + (month + 1).toString()).toString().length - 2) +\n ('0' + date.toString()).substr(('0' + date.toString()).length - 2) +\n ('0000' + (total + 1).toString()).substr(('0000' + (total + 1).toString()).length - 4)\n\n newRecord.name = palletId\n newRecord.status = newRecord.qty < 1 ? 'TERMINATED' : 'STORED'\n newRecord.palletId = palletId\n\n const result = await inventoryRepo.save({\n domain: domain,\n creator: user,\n updater: user,\n lastSeq: 0,\n ...newRecord\n } as any)\n\n await tx.getRepository(InventoryHistory).save({\n ...newRecord,\n domain: domain,\n creator: user,\n updater: user,\n name: InventoryNoGenerator.inventoryHistoryName(),\n seq: 0,\n transactionType: 'NEW',\n productId: newRecord.product.id,\n warehouseId: newRecord.warehouse.id,\n locationId: newRecord.location.id\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const newRecord = _updateRecords[i]\n const newHistoryRecord = JSON.parse(JSON.stringify(_updateRecords[i]))\n let transactionType = ''\n\n let inventory = await inventoryRepo.findOne({\n where: { id: newRecord.id },\n relations: ['warehouse', 'location', 'product', 'bizplace']\n })\n newHistoryRecord.openingQty = inventory.qty\n newHistoryRecord.openingUomValue = inventory.uomValue\n\n // Get last sequence from InventoryHistory\n let latestEntry = await tx.getRepository(InventoryHistory).find({\n where: { palletId: inventory.palletId },\n order: { seq: 'DESC' },\n take: 1\n })\n let lastSeq = latestEntry[0].seq\n\n // Condition 1: Change location (RELOCATE)\n if (newRecord.location && newRecord.location.id) {\n var location = await tx.getRepository(Location).findOne({\n where: { id: newRecord.location.id },\n relations: ['warehouse']\n })\n newRecord.location = location\n newRecord.zone = location.zone\n newRecord.warehouse = location.warehouse\n\n newHistoryRecord.location = location\n newHistoryRecord.zone = location.zone\n newHistoryRecord.warehouse = location.warehouse\n\n transactionType = 'RELOCATE'\n }\n\n // Condition 2: Change of qty or uomValue.\n // Set qty movement for inventory history\n if (typeof newRecord.qty != 'undefined') {\n transactionType = 'ADJUSTMENT'\n newHistoryRecord.qty = newRecord.qty - inventory.qty\n if (newRecord.qty < 1) {\n newRecord.status = 'TERMINATED'\n newRecord.qty = 0\n newRecord.uomValue = 0\n }\n } else {\n newHistoryRecord.qty = 0\n }\n // Set uomValue movement for inventory history\n if (typeof newRecord.uomValue != 'undefined') {\n transactionType = 'ADJUSTMENT'\n newHistoryRecord.uomValue = newRecord.uomValue - inventory.uomValue\n if (newRecord.uomValue < 1) {\n newRecord.uomValue = 0\n }\n } else {\n newHistoryRecord.uomValue = 0\n }\n\n // Condition 3: Change of bizplace or product or batch id or packing type\n if (newRecord.bizplace && newRecord.bizplace.id) {\n newRecord.bizplace = (await tx.getRepository(Bizplace).findOneBy({ id: newRecord.bizplace.id })) as any\n }\n\n if (newRecord.product && newRecord.product.id) {\n newRecord.product = (await tx.getRepository(Product).findOneBy({ id: newRecord.product.id })) as any\n }\n\n if ((newRecord.product && newRecord.product.id) || (newRecord.bizplace && newRecord.bizplace.id) || newRecord.batchId || newRecord.packingType) {\n if (\n inventory.bizplace.id !== (newRecord.bizplace ? newRecord.bizplace.id : '') ||\n inventory.product.id !== (newRecord.product ? newRecord.product.id : '') ||\n inventory.batchId !== newRecord.batchId ||\n inventory.packingType !== newRecord.packingType\n ) {\n transactionType = 'ADJUSTMENT'\n lastSeq = lastSeq + 1\n let inventoryHistory: any = {\n ...inventory,\n domain: domain,\n bizplace: inventory.bizplace.id,\n openingQty: inventory.qty,\n openingUomValue: inventory.uomValue,\n qty: -inventory.qty || 0,\n uomValue: -inventory.uomValue || 0,\n name: InventoryNoGenerator.inventoryHistoryName(),\n seq: lastSeq,\n inventory,\n transactionType: transactionType,\n status: INVENTORY_STATUS.TERMINATED,\n productId: inventory.product.id,\n warehouseId: inventory.warehouse.id,\n locationId: inventory.location.id,\n creator: user,\n updater: user\n }\n\n delete inventoryHistory.id\n await tx.getRepository(InventoryHistory).save(inventoryHistory as any)\n\n newHistoryRecord.qty = newRecord.qty || inventory.qty\n newHistoryRecord.uomValue = newRecord.uomValue || inventory.uomValue || 0\n newHistoryRecord.openingQty = 0\n newHistoryRecord.openingUomValue = 0\n newHistoryRecord.batchId = newRecord.batchId || inventory.batchId || '-'\n }\n }\n\n //Transaction type will be RELOCATE if there is only location change. Any other changes will be considered Adjustment.\n lastSeq = lastSeq + 1\n let inventoryHistory = {\n ...inventory,\n ...newHistoryRecord,\n domain: domain,\n creator: user,\n updater: user,\n name: InventoryNoGenerator.inventoryHistoryName(),\n seq: lastSeq,\n inventory,\n transactionType: transactionType == '' ? 'ADJUSTMENT' : transactionType,\n productId: newHistoryRecord.product ? newHistoryRecord.product.id : inventory.product.id,\n warehouseId: newHistoryRecord.warehouse ? newHistoryRecord.warehouse.id : inventory.warehouse.id,\n locationId: newHistoryRecord.location ? newHistoryRecord.location.id : inventory.location.id\n }\n\n delete inventoryHistory.id\n await tx.getRepository(InventoryHistory).save(inventoryHistory)\n\n const result = await inventoryRepo.save({\n ...inventory,\n ...newRecord,\n updater: user,\n lastSeq: lastSeq\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n}\n"]}
1
+ {"version":3,"file":"inventory-mutation.js","sourceRoot":"","sources":["../../../server/service/inventory/inventory-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In, MoreThan, SelectQueryBuilder } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'\nimport { Product } from '@things-factory/product-base'\n\nimport { INVENTORY_STATUS, INVENTORY_TRANSACTION_TYPE, LOCATION_STATUS, RULE_TYPE } from '../../constants'\nimport { SellercraftController } from '../../controllers'\nimport { DateGenerator, InventoryNoGenerator, InventoryUtil } from '../../utils'\nimport { InventoryHistory } from '../inventory-history/inventory-history'\nimport { Location } from '../location/location'\nimport { Inventory } from './inventory'\nimport { InventoryPatch, NewInventory } from './inventory-types'\n\n@Resolver(Inventory)\nexport class InventoryMutation {\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Inventory)\n async createInventory(@Arg('inventory') inventory: NewInventory, @Ctx() context: ResolverContext): Promise<Inventory> {\n const { tx } = context.state\n\n return await tx.getRepository(Inventory).save({\n domain: context.state.domain,\n creator: context.state.user,\n updater: context.state.user,\n ...inventory\n })\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Inventory)\n async updateInventory(@Arg('patch') patch: InventoryPatch, @Ctx() context: ResolverContext): Promise<Inventory> {\n const { domain, user, tx } = context.state\n\n const invQb: SelectQueryBuilder<Inventory> = await tx\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .where('INV.domain_id = :domainId', { domainId: domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: patch.bizplace.id })\n .andWhere('INV.batch_id = :batchId', { batchId: patch.batchId })\n .andWhere('INV.product_id = :productId', { productId: patch.product.id })\n .andWhere('INV.packing_type = :packingType', { packingType: patch.packingType })\n .andWhere('INV.packing_size = :packingSize', { packingSize: patch.packingSize })\n\n if (patch?.cartonId) invQb.andWhere('INV.carton_id = :cartonId', { cartonId: patch.cartonId })\n else invQb.andWhere('INV.pallet_id = :palletId', { palletId: patch.palletId })\n\n const inventory = await invQb.getOne()\n\n return await tx.getRepository(Inventory).save({\n ...inventory,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Inventory)\n async updateInventoryRemark(@Arg('id') id: string, @Arg('remark') remark: string, @Ctx() context: ResolverContext): Promise<Inventory> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(Inventory)\n const inventory = await repository.findOne({ where: { domain: { id: domain.id }, id } })\n\n return await repository.save({\n ...inventory,\n remark,\n updater: user\n })\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteInventory(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx } = context.state\n\n await tx.getRepository(Inventory).delete({ domain: { id: context.state.domain.id }, name })\n return true\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => [Inventory])\n async updateMultipleInventory(@Arg('patches', type => [InventoryPatch]) patches: InventoryPatch[], @Ctx() context: ResolverContext): Promise<Inventory[]> {\n return await updateMultipleInventory(patches, context)\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteInventories(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx } = context.state\n\n await tx.getRepository(Inventory).delete({\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async inventoryTransfer(\n @Arg('originPalletId') originPalletId: string,\n @Arg('palletId', { nullable: true }) palletId: string,\n @Arg('cartonId', { nullable: true }) cartonId: string,\n @Arg('fromLocationName') fromLocationName: string,\n @Arg('toLocationName') toLocationName: string,\n @Arg('qty') qty: number,\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<Boolean> {\n const { domain, user, tx } = context.state\n\n const fromLocation: Location = await tx.getRepository(Location).findOne({\n where: { domain: { id: domain.id }, name: fromLocationName },\n relations: ['domain', 'warehouse']\n })\n // 1. check toLocation exist\n const toLocation: Location = await tx.getRepository(Location).findOne({\n where: { domain: { id: domain.id }, name: toLocationName },\n relations: ['domain', 'warehouse']\n })\n if (!toLocation) throw new Error(context.t(`error.To_location_does_not_exists`))\n\n if (qty < 0) throw new Error(`Invalid quantity`)\n\n // 2. search for related inventory\n const invQb: SelectQueryBuilder<Inventory> = await tx\n .getRepository(Inventory)\n .createQueryBuilder('INV')\n .innerJoinAndSelect('INV.location', 'loc')\n .innerJoinAndSelect('INV.product', 'product')\n .innerJoinAndSelect('INV.bizplace', 'bizplace')\n .leftJoinAndSelect('INV.refInventory', 'refInventory')\n .leftJoinAndSelect('INV.reusablePallet', 'reusablePallet')\n .leftJoinAndSelect('INV.productDetail', 'productDetail')\n .leftJoinAndSelect('bizplace.domain', 'domain')\n .leftJoinAndSelect('product.productDetails', 'productDetails')\n .leftJoinAndSelect('INV.originInventory', 'originInventory')\n .where('INV.domain_id = :domainId', { domainId: domain.id })\n .andWhere('INV.pallet_id = :palletId', { palletId: originPalletId })\n\n let inventory: Inventory = await invQb.getOne()\n if (!inventory) throw new Error('Inventory not found')\n\n if (qty > inventory.qty - (inventory?.lockedQty > 0 ? inventory.lockedQty : 0)) throw new Error('Transfer quantity exceeded inventory quantity')\n\n if (toLocation.name == inventory.location.name) throw new Error('Inventory is in current location')\n\n let transactionInventory = new InventoryUtil(tx, domain, user)\n\n const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({\n where: { domain: { id: inventory.bizplace.domain.id }, status: SellercraftStatus.ACTIVE },\n relations: ['domain']\n })\n\n const partialTransferFunc = async function (inventory, qty, fromLocation, toLocation, cartonId, palletId, context) {\n const { user, tx } = context.state\n\n if (qty < inventory.qty - (inventory?.lockedQty > 0 ? inventory.lockedQty : 0)) {\n if (!palletId || palletId.trim() == '') throw new Error('Require new lot id for partial transfer')\n\n let transferQty = qty\n let transferUomValue = (inventory.uomValue / inventory.qty) * qty\n let newInventory = {\n ...inventory,\n palletId,\n location: toLocation,\n warehouse: toLocation.warehouse,\n zone: toLocation.zone,\n creator: user,\n updater: user\n }\n\n delete newInventory.id\n delete newInventory.updatedAt\n\n newInventory.cartonId = cartonId\n newInventory.qty = transferQty\n newInventory.lockedQty = 0\n newInventory.uomValue = transferUomValue\n newInventory.lockedUomValue = 0\n if (inventory.originInventory?.id) {\n newInventory.originInventory = { id: inventory.originInventory.id }\n } else {\n newInventory.originInventory = { id: inventory.id }\n }\n\n await transactionInventory.transactionInventory(\n { ...inventory, qty: inventory.qty - transferQty, uomValue: inventory.uomValue - transferUomValue },\n null,\n -transferQty,\n -transferUomValue,\n INVENTORY_TRANSACTION_TYPE.RELOCATE,\n reason || null\n )\n\n await transactionInventory.transactionInventory(newInventory, null, transferQty, transferUomValue, INVENTORY_TRANSACTION_TYPE.RELOCATE, reason || null)\n\n if (sellercraft) {\n const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)\n await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory)\n await sellercraftCtrl.updateSellercraftStock(sellercraft, newInventory)\n }\n } else {\n inventory.warehouse = toLocation.warehouse\n inventory.location = toLocation\n inventory.zone = toLocation.zone\n inventory.updater = user\n inventory.cartonId = cartonId\n\n let isEmptyLocation = await tx.getRepository(Inventory).find({\n where: { location: { id: fromLocation.id } }\n })\n\n if ((isEmptyLocation.length = 1)) {\n await tx.getRepository(Location).save({\n ...fromLocation,\n status: LOCATION_STATUS.EMPTY\n })\n }\n\n await transactionInventory.transactionInventory(inventory, null, 0, 0, INVENTORY_TRANSACTION_TYPE.RELOCATE, reason || null)\n\n if (sellercraft) {\n const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)\n await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory)\n }\n }\n }\n\n if (inventory.cartonId && inventory.cartonId != '') {\n if (!cartonId) throw new Error('Require carton id')\n\n if (qty < inventory.qty - (inventory?.lockedQty > 0 ? inventory.lockedQty : 0)) {\n palletId = await generateId({\n domain: domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n }\n\n await partialTransferFunc(inventory, qty, fromLocation, toLocation, cartonId, palletId, context)\n } else {\n if (!palletId) {\n palletId = await generateId({\n domain: domain,\n type: RULE_TYPE.LOT_NUMBER_ID,\n seed: { date: DateGenerator.generateDate() }\n })\n }\n await partialTransferFunc(inventory, qty, fromLocation, toLocation, null, palletId, context)\n }\n\n return true\n }\n}\n\nexport async function updateMultipleInventory(patches: InventoryPatch[], context: ResolverContext): Promise<Inventory[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => !patch.id)\n const _updateRecords = patches.filter((patch: any) => patch.id)\n\n const inventoryRepo = tx.getRepository(Inventory)\n if (_createRecords.length > 0) {\n let today = new Date()\n let year = today.getFullYear()\n let month = today.getMonth()\n let date = today.getDate()\n\n for (let i = 0; i < _createRecords.length; i++) {\n const total = await tx.getRepository(Inventory).countBy({\n createdAt: MoreThan(new Date(year, month, date))\n })\n\n const newRecord = _createRecords[i]\n\n if (newRecord.location && newRecord.location.id) {\n var location = await tx.getRepository(Location).findOne({\n where: { id: newRecord.location.id },\n relations: ['warehouse']\n })\n newRecord.location = location\n newRecord.zone = location.zone\n newRecord.warehouse = location.warehouse\n }\n\n if (newRecord.bizplace && newRecord.bizplace.id) {\n newRecord.bizplace = (await tx.getRepository(Bizplace).findOneBy({ id: newRecord.bizplace.id })) as any\n }\n\n if (newRecord.product && newRecord.product.id) {\n var product = (await tx.getRepository(Product).findOneBy({ id: newRecord.product.id })) as any\n newRecord.product = product\n }\n\n let palletId =\n 'P' +\n year.toString().substr(year.toString().length - 2) +\n ('0' + (month + 1).toString()).substr(('0' + (month + 1).toString()).toString().length - 2) +\n ('0' + date.toString()).substr(('0' + date.toString()).length - 2) +\n ('0000' + (total + 1).toString()).substr(('0000' + (total + 1).toString()).length - 4)\n\n newRecord.name = palletId\n newRecord.status = newRecord.qty < 1 ? 'TERMINATED' : 'STORED'\n newRecord.palletId = palletId\n\n const result = await inventoryRepo.save({\n domain: domain,\n creator: user,\n updater: user,\n lastSeq: 0,\n ...newRecord\n } as any)\n\n await tx.getRepository(InventoryHistory).save({\n ...newRecord,\n domain: domain,\n creator: user,\n updater: user,\n name: InventoryNoGenerator.inventoryHistoryName(),\n seq: 0,\n transactionType: 'NEW',\n productId: newRecord.product.id,\n warehouseId: newRecord.warehouse.id,\n locationId: newRecord.location.id\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const newRecord = _updateRecords[i]\n const newHistoryRecord = JSON.parse(JSON.stringify(_updateRecords[i]))\n let transactionType = ''\n\n let inventory = await inventoryRepo.findOne({\n where: { id: newRecord.id },\n relations: ['warehouse', 'location', 'product', 'bizplace']\n })\n newHistoryRecord.openingQty = inventory.qty\n newHistoryRecord.openingUomValue = inventory.uomValue\n\n // Get last sequence from InventoryHistory\n let latestEntry = await tx.getRepository(InventoryHistory).find({\n where: { palletId: inventory.palletId },\n order: { seq: 'DESC' },\n take: 1\n })\n let lastSeq = latestEntry[0].seq\n\n // Condition 1: Change location (RELOCATE)\n if (newRecord.location && newRecord.location.id) {\n var location = await tx.getRepository(Location).findOne({\n where: { id: newRecord.location.id },\n relations: ['warehouse']\n })\n newRecord.location = location\n newRecord.zone = location.zone\n newRecord.warehouse = location.warehouse\n\n newHistoryRecord.location = location\n newHistoryRecord.zone = location.zone\n newHistoryRecord.warehouse = location.warehouse\n\n transactionType = 'RELOCATE'\n }\n\n // Condition 2: Change of qty or uomValue.\n // Set qty movement for inventory history\n if (typeof newRecord.qty != 'undefined') {\n transactionType = 'ADJUSTMENT'\n newHistoryRecord.qty = newRecord.qty - inventory.qty\n if (newRecord.qty < 1) {\n newRecord.status = 'TERMINATED'\n newRecord.qty = 0\n newRecord.uomValue = 0\n }\n } else {\n newHistoryRecord.qty = 0\n }\n // Set uomValue movement for inventory history\n if (typeof newRecord.uomValue != 'undefined') {\n transactionType = 'ADJUSTMENT'\n newHistoryRecord.uomValue = newRecord.uomValue - inventory.uomValue\n if (newRecord.uomValue < 1) {\n newRecord.uomValue = 0\n }\n } else {\n newHistoryRecord.uomValue = 0\n }\n\n // Condition 3: Change of bizplace or product or batch id or packing type\n if (newRecord.bizplace && newRecord.bizplace.id) {\n newRecord.bizplace = (await tx.getRepository(Bizplace).findOneBy({ id: newRecord.bizplace.id })) as any\n }\n\n if (newRecord.product && newRecord.product.id) {\n newRecord.product = (await tx.getRepository(Product).findOneBy({ id: newRecord.product.id })) as any\n }\n\n if ((newRecord.product && newRecord.product.id) || (newRecord.bizplace && newRecord.bizplace.id) || newRecord.batchId || newRecord.packingType) {\n if (\n inventory.bizplace.id !== (newRecord.bizplace ? newRecord.bizplace.id : '') ||\n inventory.product.id !== (newRecord.product ? newRecord.product.id : '') ||\n inventory.batchId !== newRecord.batchId ||\n inventory.packingType !== newRecord.packingType\n ) {\n transactionType = 'ADJUSTMENT'\n lastSeq = lastSeq + 1\n let inventoryHistory: any = {\n ...inventory,\n domain: domain,\n bizplace: inventory.bizplace.id,\n openingQty: inventory.qty,\n openingUomValue: inventory.uomValue,\n qty: -inventory.qty || 0,\n uomValue: -inventory.uomValue || 0,\n name: InventoryNoGenerator.inventoryHistoryName(),\n seq: lastSeq,\n inventory,\n transactionType: transactionType,\n status: INVENTORY_STATUS.TERMINATED,\n productId: inventory.product.id,\n warehouseId: inventory.warehouse.id,\n locationId: inventory.location.id,\n creator: user,\n updater: user\n }\n\n delete inventoryHistory.id\n await tx.getRepository(InventoryHistory).save(inventoryHistory as any)\n\n newHistoryRecord.qty = newRecord.qty || inventory.qty\n newHistoryRecord.uomValue = newRecord.uomValue || inventory.uomValue || 0\n newHistoryRecord.openingQty = 0\n newHistoryRecord.openingUomValue = 0\n newHistoryRecord.batchId = newRecord.batchId || inventory.batchId || '-'\n }\n }\n\n //Transaction type will be RELOCATE if there is only location change. Any other changes will be considered Adjustment.\n lastSeq = lastSeq + 1\n let inventoryHistory = {\n ...inventory,\n ...newHistoryRecord,\n domain: domain,\n creator: user,\n updater: user,\n name: InventoryNoGenerator.inventoryHistoryName(),\n seq: lastSeq,\n inventory,\n transactionType: transactionType == '' ? 'ADJUSTMENT' : transactionType,\n productId: newHistoryRecord.product ? newHistoryRecord.product.id : inventory.product.id,\n warehouseId: newHistoryRecord.warehouse ? newHistoryRecord.warehouse.id : inventory.warehouse.id,\n locationId: newHistoryRecord.location ? newHistoryRecord.location.id : inventory.location.id\n }\n\n delete inventoryHistory.id\n await tx.getRepository(InventoryHistory).save(inventoryHistory)\n\n const result = await inventoryRepo.save({\n ...inventory,\n ...newRecord,\n updater: user,\n lastSeq: lastSeq\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n}\n"]}
@@ -0,0 +1,138 @@
1
+ import { EntityManager } from 'typeorm';
2
+ import { User } from '@things-factory/auth-base';
3
+ import { Bizplace } from '@things-factory/biz-base';
4
+ import { Product } from '@things-factory/product-base';
5
+ import { Domain, Filter, ListParam, Pagination, Sorting } from '@things-factory/shell';
6
+ import { InventoryChange } from '../inventory-change/inventory-change';
7
+ import { Inventory } from './inventory';
8
+ import { InventoryBundleGroupDetail, InventoryList } from './inventory-types';
9
+ export declare class InventoryQuery {
10
+ /**
11
+ * Combined single query resolver to perform extraction of data with or without pagination
12
+ * @param context
13
+ * @param filters
14
+ * @param pagination
15
+ * @param sortings
16
+ * @param locationSortingRules
17
+ * @param exportItem
18
+ * @returns
19
+ */
20
+ inventories(context: ResolverContext, filters?: Filter[], pagination?: Pagination, sortings?: Sorting[], locationSortingRules?: Sorting[], exportItem?: Boolean): Promise<InventoryList>;
21
+ inventory(palletId: string, context: ResolverContext): Promise<Inventory>;
22
+ inventoryById(id: string, context: ResolverContext): Promise<Inventory>;
23
+ inventoryByPallet(palletId: string, context: ResolverContext): Promise<Inventory>;
24
+ renewInventoriesGroupByProduct(params: ListParam, context: ResolverContext): Promise<InventoryList>;
25
+ inventoriesByProduct(params: ListParam, context: ResolverContext): Promise<InventoryList>;
26
+ inventoriesByStrategy(context: ResolverContext, worksheetId: string, batchId: string, productName: string, productSku: string, packingType: string, packingSize: number, uom: string, pickingStrategy: string, locationSortingRules?: Sorting[], bizplaceId?: string): Promise<InventoryList>;
27
+ checkProductIdenticality(palletA: string, palletB: string, context: ResolverContext): Promise<Boolean>;
28
+ checkCartonIdenticality(cartonA: string, palletA: string, cartonB: string, context: ResolverContext): Promise<boolean>;
29
+ checkInventoryOwner(palletId: string, bizplaceName: string, context: ResolverContext): Promise<Boolean>;
30
+ inventoriesByBundle(context: ResolverContext, filters?: Filter[], pagination?: Pagination, sortings?: Sorting[]): Promise<InventoryBundleGroupDetail>;
31
+ inventoriesGroupByProduct(params: ListParam, context: ResolverContext): Promise<InventoryList>;
32
+ domain(inventory: Inventory): Promise<Domain>;
33
+ updater(inventory: Inventory): Promise<User>;
34
+ creator(inventory: Inventory): Promise<User>;
35
+ changeCount(inventory: Inventory): Promise<Number>;
36
+ purchaseOrderNo(inventory: Inventory): Promise<String>;
37
+ orderProductRemark(inventory: Inventory): Promise<String>;
38
+ arrivalNoticeRefNo(inventory: Inventory): Promise<String>;
39
+ arrivalNoticeNo(inventory: Inventory): Promise<String>;
40
+ }
41
+ export declare function inventoriesByStrategy({ worksheetId, batchId, bizplaceId, productName, productSku, packingType, packingSize, uom, pickingStrategy, locationSortingRules }: {
42
+ worksheetId: any;
43
+ batchId: any;
44
+ bizplaceId: any;
45
+ productName: any;
46
+ productSku: any;
47
+ packingType: any;
48
+ packingSize: any;
49
+ uom: any;
50
+ pickingStrategy: any;
51
+ locationSortingRules: any;
52
+ }, trxMgr: EntityManager): Promise<{
53
+ items: {
54
+ qty: number;
55
+ uomValue: number;
56
+ id: string;
57
+ domain: Domain;
58
+ domainId: string;
59
+ bizplace: Bizplace;
60
+ refInventory: Inventory;
61
+ name: string;
62
+ palletId: string;
63
+ cartonId: string;
64
+ batchId: string;
65
+ batchIdRef: string;
66
+ refOrderId: string;
67
+ orderProductId: string;
68
+ orderInventoryId: string;
69
+ orderVasId: string;
70
+ reusablePallet: import("..").Pallet;
71
+ product: Product;
72
+ productDetail: import("@things-factory/product-base").ProductDetail;
73
+ warehouse: import("..").Warehouse;
74
+ location: import("..").Location;
75
+ zone: string;
76
+ manufactureYear: number;
77
+ manufactureDate: Date;
78
+ costPrice: number;
79
+ sellPrice: number;
80
+ packingType: string;
81
+ packingSize: number;
82
+ unit: string;
83
+ uom: string;
84
+ lockedUomValue: number;
85
+ lockedQty: number;
86
+ unitCost: number;
87
+ lastSeq: number;
88
+ description: string;
89
+ status: string;
90
+ otherRef: string;
91
+ remark: string;
92
+ inventoryChanges: InventoryChange[];
93
+ inventoryItems: import("..").InventoryItem[];
94
+ serialNumbers?: string;
95
+ expirationDate: Date;
96
+ productId: string;
97
+ productName: string;
98
+ productSKU: string;
99
+ productType: string;
100
+ primaryValue: string;
101
+ primaryUnit: string;
102
+ auxUnit1: string;
103
+ productBrand: string;
104
+ productColor?: string;
105
+ productQuality?: string;
106
+ workCategory?: string;
107
+ productStatus?: string;
108
+ auxInfo1?: string;
109
+ auxInfo2?: string;
110
+ auxInfo3?: string;
111
+ averageUnitCost: number;
112
+ remainQty: number;
113
+ nonLoadedQty: number;
114
+ nonLoadedUomValue: number;
115
+ initialInboundAt: string;
116
+ creator: User;
117
+ creatorId: string;
118
+ updater: User;
119
+ updaterId: string;
120
+ createdAt: Date;
121
+ updatedAt: Date;
122
+ remainUomValueWithUom?: string;
123
+ remainUomValue?: number;
124
+ changeCount?: number;
125
+ binLocation?: string;
126
+ orderNo?: string;
127
+ inventoryItemCount: number;
128
+ availableQty: number;
129
+ releaseQty: number;
130
+ quarantineQty: number;
131
+ reserveQty: number;
132
+ warehouseQty: number;
133
+ lot?: string;
134
+ originInventory?: Inventory;
135
+ originInventoryId?: string;
136
+ }[];
137
+ total: number;
138
+ }>;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.inventoriesByStrategy = exports.InventoryQuery = void 0;
3
+ exports.InventoryQuery = void 0;
4
+ exports.inventoriesByStrategy = inventoriesByStrategy;
4
5
  const tslib_1 = require("tslib");
5
6
  const type_graphql_1 = require("type-graphql");
6
7
  const typeorm_1 = require("typeorm");
@@ -95,7 +96,9 @@ let InventoryQuery = class InventoryQuery {
95
96
  // Apply sorting based on child data
96
97
  if ((sortings === null || sortings === void 0 ? void 0 : sortings.length) !== 0) {
97
98
  const arrChildSortData = ['bizplace', 'product', 'location', 'warehouse', 'zone'];
98
- const sort = (sortings || []).reduce((acc, sort) => (Object.assign(Object.assign({}, acc), { [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'inventory.' + sort.name]: sort.desc ? 'DESC' : 'ASC' })), {});
99
+ const sort = (sortings || []).reduce((acc, sort) => (Object.assign(Object.assign({}, acc), { [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'inventory.' + sort.name]: sort.desc
100
+ ? 'DESC'
101
+ : 'ASC' })), {});
99
102
  qb.orderBy(sort);
100
103
  }
101
104
  if ((locationSortingRules === null || locationSortingRules === void 0 ? void 0 : locationSortingRules.length) > 0) {
@@ -469,7 +472,9 @@ let InventoryQuery = class InventoryQuery {
469
472
  where: { domain: { id: context.state.domain.id }, palletId: palletB, status: constants_1.INVENTORY_STATUS.STORED },
470
473
  relations: ['product']
471
474
  });
472
- return (invA === null || invA === void 0 ? void 0 : invA.batchId) === (invB === null || invB === void 0 ? void 0 : invB.batchId) && ((_a = invA === null || invA === void 0 ? void 0 : invA.product) === null || _a === void 0 ? void 0 : _a.id) === ((_b = invB === null || invB === void 0 ? void 0 : invB.product) === null || _b === void 0 ? void 0 : _b.id) && (invA === null || invA === void 0 ? void 0 : invA.packingType) === (invB === null || invB === void 0 ? void 0 : invB.packingType);
475
+ return ((invA === null || invA === void 0 ? void 0 : invA.batchId) === (invB === null || invB === void 0 ? void 0 : invB.batchId) &&
476
+ ((_a = invA === null || invA === void 0 ? void 0 : invA.product) === null || _a === void 0 ? void 0 : _a.id) === ((_b = invB === null || invB === void 0 ? void 0 : invB.product) === null || _b === void 0 ? void 0 : _b.id) &&
477
+ (invA === null || invA === void 0 ? void 0 : invA.packingType) === (invB === null || invB === void 0 ? void 0 : invB.packingType));
473
478
  }
474
479
  async checkCartonIdenticality(cartonA, palletA, cartonB, context) {
475
480
  var _a, _b;
@@ -866,6 +871,7 @@ let InventoryQuery = class InventoryQuery {
866
871
  return ((_a = items[0]) === null || _a === void 0 ? void 0 : _a.arrivalNoticeNo) || '';
867
872
  }
868
873
  };
874
+ exports.InventoryQuery = InventoryQuery;
869
875
  tslib_1.__decorate([
870
876
  (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "query", domainOwnerGranted: true)'),
871
877
  (0, type_graphql_1.Directive)('@transaction'),
@@ -910,7 +916,7 @@ tslib_1.__decorate([
910
916
  tslib_1.__decorate([
911
917
  (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "query", domainOwnerGranted: true)'),
912
918
  (0, type_graphql_1.Query)(returns => inventory_types_1.InventoryList),
913
- tslib_1.__param(0, (0, type_graphql_1.Args)()),
919
+ tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
914
920
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
915
921
  tslib_1.__metadata("design:type", Function),
916
922
  tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
@@ -920,7 +926,7 @@ tslib_1.__decorate([
920
926
  (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "query", domainOwnerGranted: true)'),
921
927
  (0, type_graphql_1.Directive)('@transaction'),
922
928
  (0, type_graphql_1.Query)(returns => inventory_types_1.InventoryList),
923
- tslib_1.__param(0, (0, type_graphql_1.Args)()),
929
+ tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
924
930
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
925
931
  tslib_1.__metadata("design:type", Function),
926
932
  tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
@@ -988,7 +994,7 @@ tslib_1.__decorate([
988
994
  (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "query", domainOwnerGranted: true)'),
989
995
  (0, type_graphql_1.Directive)('@transaction'),
990
996
  (0, type_graphql_1.Query)(returns => inventory_types_1.InventoryList),
991
- tslib_1.__param(0, (0, type_graphql_1.Args)()),
997
+ tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
992
998
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
993
999
  tslib_1.__metadata("design:type", Function),
994
1000
  tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
@@ -1050,10 +1056,9 @@ tslib_1.__decorate([
1050
1056
  tslib_1.__metadata("design:paramtypes", [inventory_1.Inventory]),
1051
1057
  tslib_1.__metadata("design:returntype", Promise)
1052
1058
  ], InventoryQuery.prototype, "arrivalNoticeNo", null);
1053
- InventoryQuery = tslib_1.__decorate([
1059
+ exports.InventoryQuery = InventoryQuery = tslib_1.__decorate([
1054
1060
  (0, type_graphql_1.Resolver)(inventory_1.Inventory)
1055
1061
  ], InventoryQuery);
1056
- exports.InventoryQuery = InventoryQuery;
1057
1062
  async function inventoriesByStrategy({ worksheetId, batchId, bizplaceId, productName, productSku, packingType, packingSize, uom, pickingStrategy, locationSortingRules }, trxMgr) {
1058
1063
  const qb = await trxMgr.getRepository(inventory_1.Inventory).createQueryBuilder('INV');
1059
1064
  qb.innerJoinAndSelect('INV.product', 'PROD')
@@ -1130,7 +1135,9 @@ async function inventoriesByStrategy({ worksheetId, batchId, bizplaceId, product
1130
1135
  case 'LOCATION':
1131
1136
  if ((locationSortingRules === null || locationSortingRules === void 0 ? void 0 : locationSortingRules.length) > 0) {
1132
1137
  locationSortingRules.forEach((rule, idx) => {
1133
- idx === 0 ? qb.orderBy(`LOC.${rule.name}`, rule.desc ? 'DESC' : 'ASC') : qb.addOrderBy(`LOC.${rule.name}`, rule.desc ? 'DESC' : 'ASC');
1138
+ idx === 0
1139
+ ? qb.orderBy(`LOC.${rule.name}`, rule.desc ? 'DESC' : 'ASC')
1140
+ : qb.addOrderBy(`LOC.${rule.name}`, rule.desc ? 'DESC' : 'ASC');
1134
1141
  });
1135
1142
  }
1136
1143
  else
@@ -1152,5 +1159,4 @@ async function inventoriesByStrategy({ worksheetId, batchId, bizplaceId, product
1152
1159
  const total = await qb.getCount();
1153
1160
  return { items, total };
1154
1161
  }
1155
- exports.inventoriesByStrategy = inventoriesByStrategy;
1156
1162
  //# sourceMappingURL=inventory-query.js.map