@things-factory/operato-pms 6.1.83 → 6.1.85

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 (229) hide show
  1. package/dist-server/tsconfig.tsbuildinfo +1 -1
  2. package/package.json +34 -34
  3. package/server/constants/block.ts +0 -4
  4. package/server/constants/index.ts +0 -8
  5. package/server/constants/inventory.ts +0 -9
  6. package/server/constants/master.ts +0 -9
  7. package/server/constants/organization.ts +0 -5
  8. package/server/constants/ramp.ts +0 -9
  9. package/server/constants/record.ts +0 -4
  10. package/server/constants/template.ts +0 -3
  11. package/server/constants/transaction.ts +0 -9
  12. package/server/controllers/index.ts +0 -1
  13. package/server/controllers/render-dispatchment.ts +0 -53
  14. package/server/entities/block-detail.ts +0 -59
  15. package/server/entities/block.ts +0 -49
  16. package/server/entities/daily-block-detail.ts +0 -54
  17. package/server/entities/daily-dispatch-detail.ts +0 -64
  18. package/server/entities/daily-dispatch.ts +0 -90
  19. package/server/entities/daily-harvest-detail.ts +0 -56
  20. package/server/entities/daily-harvest.ts +0 -89
  21. package/server/entities/daily-loading-detail.ts +0 -68
  22. package/server/entities/daily-loading-ramp.ts +0 -56
  23. package/server/entities/daily-loading.ts +0 -70
  24. package/server/entities/index.ts +0 -57
  25. package/server/entities/organization-staff.ts +0 -60
  26. package/server/entities/organization.ts +0 -43
  27. package/server/entities/plantation-inventory.ts +0 -56
  28. package/server/entities/plantation-setting.ts +0 -60
  29. package/server/entities/ramp.ts +0 -47
  30. package/server/entities/record-transaction.ts +0 -76
  31. package/server/entities/truck.ts +0 -58
  32. package/server/graphql/index.ts +0 -9
  33. package/server/graphql/resolvers/block/block-query.ts +0 -36
  34. package/server/graphql/resolvers/block/delete-blocks.ts +0 -39
  35. package/server/graphql/resolvers/block/index.ts +0 -11
  36. package/server/graphql/resolvers/block/update-multiple-block.ts +0 -69
  37. package/server/graphql/resolvers/block-detail/block-detail-query.ts +0 -55
  38. package/server/graphql/resolvers/block-detail/delete-block-details.ts +0 -20
  39. package/server/graphql/resolvers/block-detail/index.ts +0 -12
  40. package/server/graphql/resolvers/block-detail/update-multiple-block-detail.ts +0 -55
  41. package/server/graphql/resolvers/daily-block-detail/create-daily-block-detail.ts +0 -14
  42. package/server/graphql/resolvers/daily-block-detail/daily-block-detail-query.ts +0 -36
  43. package/server/graphql/resolvers/daily-block-detail/delete-daily-block-detail.ts +0 -14
  44. package/server/graphql/resolvers/daily-block-detail/delete-daily-block-details.ts +0 -17
  45. package/server/graphql/resolvers/daily-block-detail/index.ts +0 -18
  46. package/server/graphql/resolvers/daily-block-detail/update-daily-block-detail.ts +0 -17
  47. package/server/graphql/resolvers/daily-block-detail/update-multiple-daily-block-detail.ts +0 -44
  48. package/server/graphql/resolvers/daily-dispatch/daily-dispatch-query.ts +0 -48
  49. package/server/graphql/resolvers/daily-dispatch/delete-daily-dispatch.ts +0 -34
  50. package/server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.ts +0 -131
  51. package/server/graphql/resolvers/daily-dispatch/index.ts +0 -14
  52. package/server/graphql/resolvers/daily-dispatch/update-daily-dispatch.ts +0 -36
  53. package/server/graphql/resolvers/daily-dispatch-detail/daily-dispatch-detail-query.ts +0 -37
  54. package/server/graphql/resolvers/daily-dispatch-detail/index.ts +0 -6
  55. package/server/graphql/resolvers/daily-harvest/daily-harvest-query.ts +0 -46
  56. package/server/graphql/resolvers/daily-harvest/delete-daily-harvest.ts +0 -65
  57. package/server/graphql/resolvers/daily-harvest/generate-daily-harvest.ts +0 -205
  58. package/server/graphql/resolvers/daily-harvest/index.ts +0 -14
  59. package/server/graphql/resolvers/daily-harvest/update-daily-harvest.ts +0 -153
  60. package/server/graphql/resolvers/daily-harvest-detail/daily-harvest-detail-query.ts +0 -35
  61. package/server/graphql/resolvers/daily-harvest-detail/index.ts +0 -6
  62. package/server/graphql/resolvers/daily-loading/daily-loading-query.ts +0 -43
  63. package/server/graphql/resolvers/daily-loading/delete-daily-loading.ts +0 -38
  64. package/server/graphql/resolvers/daily-loading/generate-daily-loading.ts +0 -149
  65. package/server/graphql/resolvers/daily-loading/index.ts +0 -14
  66. package/server/graphql/resolvers/daily-loading/update-daily-loading.ts +0 -154
  67. package/server/graphql/resolvers/daily-loading-detail/daily-loading-detail-query.ts +0 -35
  68. package/server/graphql/resolvers/daily-loading-detail/index.ts +0 -6
  69. package/server/graphql/resolvers/daily-loading-ramp/daily-loading-ramp-query.ts +0 -34
  70. package/server/graphql/resolvers/daily-loading-ramp/delete-daily-loading-ramp.ts +0 -15
  71. package/server/graphql/resolvers/daily-loading-ramp/index.ts +0 -12
  72. package/server/graphql/resolvers/daily-loading-ramp/update-daily-loading-ramp.ts +0 -18
  73. package/server/graphql/resolvers/dashboard/dashboard-query.ts +0 -245
  74. package/server/graphql/resolvers/dashboard/index.ts +0 -5
  75. package/server/graphql/resolvers/index.ts +0 -20
  76. package/server/graphql/resolvers/organization/delete-organizations.ts +0 -40
  77. package/server/graphql/resolvers/organization/index.ts +0 -11
  78. package/server/graphql/resolvers/organization/organization-query.ts +0 -35
  79. package/server/graphql/resolvers/organization/update-multiple-organization.ts +0 -48
  80. package/server/graphql/resolvers/organization-staff/delete-organization-staffs.ts +0 -20
  81. package/server/graphql/resolvers/organization-staff/index.ts +0 -12
  82. package/server/graphql/resolvers/organization-staff/organization-staff-query.ts +0 -43
  83. package/server/graphql/resolvers/organization-staff/update-multiple-organization-staff.ts +0 -60
  84. package/server/graphql/resolvers/plantation-inventory/index.ts +0 -6
  85. package/server/graphql/resolvers/plantation-inventory/plantation-inventory-query.ts +0 -43
  86. package/server/graphql/resolvers/plantation-setting/create-plantation-setting.ts +0 -16
  87. package/server/graphql/resolvers/plantation-setting/delete-plantation-setting.ts +0 -13
  88. package/server/graphql/resolvers/plantation-setting/delete-plantation-settings.ts +0 -18
  89. package/server/graphql/resolvers/plantation-setting/index.ts +0 -19
  90. package/server/graphql/resolvers/plantation-setting/plantation-setting-query.ts +0 -38
  91. package/server/graphql/resolvers/plantation-setting/update-multiple-plantation-setting.ts +0 -46
  92. package/server/graphql/resolvers/plantation-setting/update-plantation-setting.ts +0 -20
  93. package/server/graphql/resolvers/ramp/delete-ramps.ts +0 -24
  94. package/server/graphql/resolvers/ramp/index.ts +0 -12
  95. package/server/graphql/resolvers/ramp/ramp-query.ts +0 -34
  96. package/server/graphql/resolvers/ramp/update-multiple-ramp.ts +0 -61
  97. package/server/graphql/resolvers/record-transaction/index.ts +0 -6
  98. package/server/graphql/resolvers/record-transaction/record-transaction-query.ts +0 -34
  99. package/server/graphql/resolvers/report/daily-ffb-dispatch-production-reports.ts +0 -149
  100. package/server/graphql/resolvers/report/daily-production-reports.ts +0 -167
  101. package/server/graphql/resolvers/report/daily-staff-harvest-reports.ts +0 -84
  102. package/server/graphql/resolvers/report/index.ts +0 -22
  103. package/server/graphql/resolvers/report/monthly-block-dispatch-reports.ts +0 -122
  104. package/server/graphql/resolvers/report/monthly-dispatch-summary-reports.ts +0 -114
  105. package/server/graphql/resolvers/report/monthly-ffb-sale-reports.ts +0 -111
  106. package/server/graphql/resolvers/report/monthly-production-reports.ts +0 -117
  107. package/server/graphql/resolvers/report/yearly-production-reports.ts +0 -101
  108. package/server/graphql/resolvers/truck/delete-trucks.ts +0 -21
  109. package/server/graphql/resolvers/truck/index.ts +0 -12
  110. package/server/graphql/resolvers/truck/truck-query.ts +0 -50
  111. package/server/graphql/resolvers/truck/update-multiple-truck.ts +0 -55
  112. package/server/graphql/types/block/block-list.ts +0 -8
  113. package/server/graphql/types/block/block-patch.ts +0 -13
  114. package/server/graphql/types/block/block.ts +0 -18
  115. package/server/graphql/types/block/index.ts +0 -18
  116. package/server/graphql/types/block/new-block.ts +0 -8
  117. package/server/graphql/types/block-detail/block-detail-list.ts +0 -8
  118. package/server/graphql/types/block-detail/block-detail-patch.ts +0 -16
  119. package/server/graphql/types/block-detail/block-detail.ts +0 -21
  120. package/server/graphql/types/block-detail/index.ts +0 -18
  121. package/server/graphql/types/block-detail/new-block-detail.ts +0 -13
  122. package/server/graphql/types/daily-block-detail/daily-block-detail-list.ts +0 -8
  123. package/server/graphql/types/daily-block-detail/daily-block-detail-patch.ts +0 -10
  124. package/server/graphql/types/daily-block-detail/daily-block-detail.ts +0 -18
  125. package/server/graphql/types/daily-block-detail/index.ts +0 -21
  126. package/server/graphql/types/daily-block-detail/new-daily-block-detail.ts +0 -8
  127. package/server/graphql/types/daily-dispatch/daily-dispatch-list.ts +0 -8
  128. package/server/graphql/types/daily-dispatch/daily-dispatch-patch.ts +0 -22
  129. package/server/graphql/types/daily-dispatch/daily-dispatch.ts +0 -27
  130. package/server/graphql/types/daily-dispatch/index.ts +0 -24
  131. package/server/graphql/types/daily-dispatch/new-daily-dispatch.ts +0 -20
  132. package/server/graphql/types/daily-dispatch-detail/daily-dispatch-detail-list.ts +0 -8
  133. package/server/graphql/types/daily-dispatch-detail/daily-dispatch-detail-patch.ts +0 -16
  134. package/server/graphql/types/daily-dispatch-detail/daily-dispatch-detail.ts +0 -21
  135. package/server/graphql/types/daily-dispatch-detail/index.ts +0 -14
  136. package/server/graphql/types/daily-dispatch-detail/new-daily-dispatch-detail.ts +0 -12
  137. package/server/graphql/types/daily-harvest/daily-harvest-list.ts +0 -8
  138. package/server/graphql/types/daily-harvest/daily-harvest-patch.ts +0 -17
  139. package/server/graphql/types/daily-harvest/daily-harvest.ts +0 -27
  140. package/server/graphql/types/daily-harvest/index.ts +0 -19
  141. package/server/graphql/types/daily-harvest/new-daily-harvest.ts +0 -15
  142. package/server/graphql/types/daily-harvest-detail/daily-harvest-detail-list.ts +0 -8
  143. package/server/graphql/types/daily-harvest-detail/daily-harvest-detail-patch.ts +0 -11
  144. package/server/graphql/types/daily-harvest-detail/daily-harvest-detail.ts +0 -20
  145. package/server/graphql/types/daily-harvest-detail/index.ts +0 -14
  146. package/server/graphql/types/daily-harvest-detail/new-daily-harvest-detail.ts +0 -10
  147. package/server/graphql/types/daily-loading/daily-loading-list.ts +0 -8
  148. package/server/graphql/types/daily-loading/daily-loading-patch.ts +0 -8
  149. package/server/graphql/types/daily-loading/daily-loading.ts +0 -21
  150. package/server/graphql/types/daily-loading/index.ts +0 -19
  151. package/server/graphql/types/daily-loading/new-daily-loading.ts +0 -8
  152. package/server/graphql/types/daily-loading-detail/daily-loading-detail-list.ts +0 -8
  153. package/server/graphql/types/daily-loading-detail/daily-loading-detail-patch.ts +0 -14
  154. package/server/graphql/types/daily-loading-detail/daily-loading-detail.ts +0 -23
  155. package/server/graphql/types/daily-loading-detail/index.ts +0 -14
  156. package/server/graphql/types/daily-loading-detail/new-daily-loading-detail.ts +0 -13
  157. package/server/graphql/types/daily-loading-ramp/daily-loading-ramp-list.ts +0 -8
  158. package/server/graphql/types/daily-loading-ramp/daily-loading-ramp-patch.ts +0 -13
  159. package/server/graphql/types/daily-loading-ramp/daily-loading-ramp.ts +0 -17
  160. package/server/graphql/types/daily-loading-ramp/index.ts +0 -18
  161. package/server/graphql/types/daily-loading-ramp/new-daily-loading-ramp.ts +0 -11
  162. package/server/graphql/types/dashboard/bunches-count.ts +0 -9
  163. package/server/graphql/types/dashboard/index.ts +0 -17
  164. package/server/graphql/types/dashboard/productions-overview.ts +0 -9
  165. package/server/graphql/types/dashboard/tonnage-bunches-inventories.ts +0 -8
  166. package/server/graphql/types/dashboard/tonnage-production.ts +0 -11
  167. package/server/graphql/types/dashboard/yield-production.ts +0 -11
  168. package/server/graphql/types/index.ts +0 -20
  169. package/server/graphql/types/organization/index.ts +0 -18
  170. package/server/graphql/types/organization/new-organization.ts +0 -9
  171. package/server/graphql/types/organization/organization-list.ts +0 -8
  172. package/server/graphql/types/organization/organization-patch.ts +0 -11
  173. package/server/graphql/types/organization/organization.ts +0 -16
  174. package/server/graphql/types/organization-staff/index.ts +0 -19
  175. package/server/graphql/types/organization-staff/new-organization-staff.ts +0 -8
  176. package/server/graphql/types/organization-staff/organization-staff-list.ts +0 -8
  177. package/server/graphql/types/organization-staff/organization-staff-patch.ts +0 -15
  178. package/server/graphql/types/organization-staff/organization-staff.ts +0 -21
  179. package/server/graphql/types/plantation-inventory/index.ts +0 -14
  180. package/server/graphql/types/plantation-inventory/new-plantation-inventory.ts +0 -8
  181. package/server/graphql/types/plantation-inventory/plantation-inventory-list.ts +0 -8
  182. package/server/graphql/types/plantation-inventory/plantation-inventory-patch.ts +0 -10
  183. package/server/graphql/types/plantation-inventory/plantation-inventory.ts +0 -22
  184. package/server/graphql/types/plantation-setting/index.ts +0 -21
  185. package/server/graphql/types/plantation-setting/new-plantation-setting.ts +0 -10
  186. package/server/graphql/types/plantation-setting/plantation-setting-list.ts +0 -8
  187. package/server/graphql/types/plantation-setting/plantation-setting-patch.ts +0 -12
  188. package/server/graphql/types/plantation-setting/plantation-setting.ts +0 -16
  189. package/server/graphql/types/ramp/index.ts +0 -18
  190. package/server/graphql/types/ramp/new-ramp.ts +0 -8
  191. package/server/graphql/types/ramp/ramp-list.ts +0 -8
  192. package/server/graphql/types/ramp/ramp-patch.ts +0 -12
  193. package/server/graphql/types/ramp/ramp.ts +0 -17
  194. package/server/graphql/types/record-transaction/index.ts +0 -14
  195. package/server/graphql/types/record-transaction/new-record-transaction.ts +0 -8
  196. package/server/graphql/types/record-transaction/record-transaction-list.ts +0 -8
  197. package/server/graphql/types/record-transaction/record-transaction-patch.ts +0 -10
  198. package/server/graphql/types/record-transaction/record-transaction.ts +0 -24
  199. package/server/graphql/types/report/daily-ffb-dispatch-production-report-list.ts +0 -8
  200. package/server/graphql/types/report/daily-ffb-dispatch-production-report.ts +0 -9
  201. package/server/graphql/types/report/daily-production-report-list.ts +0 -8
  202. package/server/graphql/types/report/daily-production-report.ts +0 -23
  203. package/server/graphql/types/report/daily-staff-harvest-report-list.ts +0 -8
  204. package/server/graphql/types/report/daily-staff-harvest-report.ts +0 -10
  205. package/server/graphql/types/report/index.ts +0 -62
  206. package/server/graphql/types/report/monthly-block-dispatch-report-list.ts +0 -7
  207. package/server/graphql/types/report/monthly-block-dispatch-report.ts +0 -13
  208. package/server/graphql/types/report/monthly-dispatch-summary-report-list.ts +0 -7
  209. package/server/graphql/types/report/monthly-dispatch-summary-report.ts +0 -19
  210. package/server/graphql/types/report/monthly-ffb-sale-report-list.ts +0 -7
  211. package/server/graphql/types/report/monthly-ffb-sale-report.ts +0 -18
  212. package/server/graphql/types/report/monthly-production-report-list.ts +0 -8
  213. package/server/graphql/types/report/monthly-production-report.ts +0 -25
  214. package/server/graphql/types/report/yearly-production-report-list.ts +0 -8
  215. package/server/graphql/types/report/yearly-production-report.ts +0 -18
  216. package/server/graphql/types/truck/index.ts +0 -18
  217. package/server/graphql/types/truck/new-truck.ts +0 -8
  218. package/server/graphql/types/truck/truck-list.ts +0 -8
  219. package/server/graphql/types/truck/truck-patch.ts +0 -11
  220. package/server/graphql/types/truck/truck.ts +0 -16
  221. package/server/index.ts +0 -6
  222. package/server/middlewares/index.ts +0 -3
  223. package/server/migrations/index.ts +0 -9
  224. package/server/routes.ts +0 -7
  225. package/server/utils/core-values.ts +0 -98
  226. package/server/utils/datetime-util.ts +0 -39
  227. package/server/utils/index.ts +0 -4
  228. package/server/utils/no-generator.ts +0 -64
  229. package/server/utils/transaction-util.ts +0 -101
@@ -1,153 +0,0 @@
1
- import { EntityManager, IsNull, Repository } from 'typeorm'
2
-
3
- import { User } from '@things-factory/auth-base'
4
- import { Domain, getRepository } from '@things-factory/shell'
5
-
6
- import { INVENTORY_TYPE, TRANSACTION_TYPE } from '../../../constants'
7
- import { Block, DailyHarvest, DailyHarvestDetail, OrganizationStaff, PlantationInventory } from '../../../entities'
8
- import { generateTransactionHistory, NoGenerator } from '../../../utils'
9
-
10
- export const updateDailyHarvest = {
11
- async updateDailyHarvest(_: any, { name, dailyHarvestPatch }, context: ResolverContext) {
12
- const { domain, user, tx } = context.state
13
- const dailyHarvestRepo = tx.getRepository(DailyHarvest)
14
- const dailyHarvestDetailRepo = tx.getRepository(DailyHarvestDetail)
15
- const organizationStaffRepo = tx.getRepository(OrganizationStaff)
16
-
17
- let foundDailyHarvest: DailyHarvest = await dailyHarvestRepo.findOne({
18
- where: { name },
19
- relations: ['block', 'dailyHarvestDetails', 'dailyHarvestDetails.organizationStaff']
20
- })
21
-
22
- // for existing data row
23
- let foundDailyHarvestDetails: DailyHarvestDetail[] = foundDailyHarvest.dailyHarvestDetails // from DB
24
- let existingDailyHarvestDetails: DailyHarvestDetail[] = dailyHarvestPatch.dailyHarvestDetails.filter(
25
- detail => detail.name !== null
26
- ) // from client side
27
-
28
- // new row has been added
29
- let newDailyHarvestDetails: DailyHarvestDetail[] = dailyHarvestPatch.dailyHarvestDetails.filter(
30
- detail => detail.name === null
31
- )
32
-
33
- const block: Block = await tx.getRepository(Block).findOne({
34
- where: { domain: { id: domain.id }, name: dailyHarvestPatch.block, deletedAt: IsNull() }
35
- })
36
-
37
- const collectedBunch: number = dailyHarvestPatch.collectedBunch || 0
38
-
39
- // get sum of bunch harvested from all staff
40
- var totalBunchHarvested = dailyHarvestPatch.dailyHarvestDetails.reduce(function (prev, cur) {
41
- return prev + cur.totalBunchHarvested
42
- }, 0)
43
-
44
- foundDailyHarvest.block = block
45
- foundDailyHarvest.coverage = dailyHarvestPatch.coverage
46
- foundDailyHarvest.harvestingRound = dailyHarvestPatch.harvestingRound
47
- foundDailyHarvest.yesterdayBalanceBunchInField = dailyHarvestPatch.yesterdayBalanceBunchInField
48
- foundDailyHarvest.totalBunchHarvested = totalBunchHarvested
49
- foundDailyHarvest.collectedBunch = collectedBunch
50
- foundDailyHarvest.balanceBunchInField =
51
- foundDailyHarvest.yesterdayBalanceBunchInField + totalBunchHarvested - collectedBunch
52
- foundDailyHarvest.harvestDate = dailyHarvestPatch.harvestDate
53
- foundDailyHarvest.updater = user
54
- await dailyHarvestRepo.save(foundDailyHarvest)
55
-
56
- if (existingDailyHarvestDetails?.length > 0) {
57
- await Promise.all(
58
- foundDailyHarvestDetails.map(async (record: DailyHarvestDetail) => {
59
- if (record.totalBunchHarvested == 0) {
60
- await dailyHarvestDetailRepo.delete(record.id)
61
- } else {
62
- const foundDailyHarvestDetailPatch = dailyHarvestPatch.dailyHarvestDetails.find(
63
- detail => detail.name === record.name
64
- )
65
-
66
- const foundStaff: OrganizationStaff = await organizationStaffRepo.findOne({
67
- where: { id: foundDailyHarvestDetailPatch.organizationStaff.id }
68
- })
69
-
70
- await dailyHarvestDetailRepo.save({
71
- ...record,
72
- dailyHarvest: foundDailyHarvest,
73
- organizationStaff: foundStaff,
74
- totalBunchHarvested: foundDailyHarvestDetailPatch.totalBunchHarvested,
75
- totalTonnageHarvested: foundDailyHarvestDetailPatch.totalTonnageHarvested,
76
- remark: foundDailyHarvestDetailPatch.remark,
77
- updater: user
78
- })
79
- }
80
- })
81
- )
82
- }
83
-
84
- // during edit user add new row
85
- if (newDailyHarvestDetails?.length > 0) {
86
- await Promise.all(
87
- newDailyHarvestDetails.map(async (dailyHarvestDetail: DailyHarvestDetail) => {
88
- let newDailyHarvestDetail: DailyHarvestDetail = new DailyHarvestDetail()
89
- newDailyHarvestDetail.dailyHarvest = await dailyHarvestRepo.findOne({
90
- where: { domain: { id: domain.id }, name }
91
- })
92
- newDailyHarvestDetail.domain = domain
93
- newDailyHarvestDetail.name = NoGenerator.dailyHarvestDetail()
94
- newDailyHarvestDetail.organizationStaff = await organizationStaffRepo.findOneBy({
95
- id: dailyHarvestDetail.organizationStaff.id
96
- })
97
- newDailyHarvestDetail.totalBunchHarvested = dailyHarvestDetail.totalBunchHarvested
98
- newDailyHarvestDetail.totalTonnageHarvested = dailyHarvestDetail.totalTonnageHarvested
99
- newDailyHarvestDetail.remark = dailyHarvestDetail.remark
100
- newDailyHarvestDetail.creator = user
101
- newDailyHarvestDetail.updater = user
102
-
103
- await dailyHarvestDetailRepo.save(newDailyHarvestDetail)
104
- })
105
- )
106
- }
107
-
108
- await updatePlantationInventory(domain, foundDailyHarvest, block, user, tx)
109
-
110
- return foundDailyHarvest
111
- }
112
- }
113
-
114
- export async function updatePlantationInventory(
115
- domain: Domain,
116
- foundDailyHarvest: DailyHarvest,
117
- block: Block,
118
- user: User,
119
- tx?: EntityManager
120
- ): Promise<void> {
121
- const plantationInvRepo: Repository<PlantationInventory> =
122
- tx?.getRepository(PlantationInventory) || getRepository(PlantationInventory)
123
-
124
- let existingPlantationInventory: PlantationInventory = await plantationInvRepo.findOne({
125
- where: { domain: { id: domain.id }, block: { id: block.id }, type: INVENTORY_TYPE.FIELD_BUNCHES },
126
- relations: ['domain', 'block', 'ramp']
127
- })
128
-
129
- if (!existingPlantationInventory) throw new Error('Unable to find plantation bunches inventory')
130
-
131
- let newTotalBunches: number = 0
132
- let currentBunchInField: number = existingPlantationInventory.totalBunches
133
-
134
- newTotalBunches = foundDailyHarvest.totalBunchHarvested - currentBunchInField
135
-
136
- existingPlantationInventory.totalBunches = currentBunchInField + newTotalBunches
137
- existingPlantationInventory.updater = user
138
- await plantationInvRepo.save(existingPlantationInventory)
139
-
140
- await generateTransactionHistory(
141
- block,
142
- domain,
143
- null,
144
- foundDailyHarvest.id,
145
- foundDailyHarvest.name,
146
- TRANSACTION_TYPE.BUNCHES_ADJUSTMENT,
147
- foundDailyHarvest.harvestDate,
148
- newTotalBunches,
149
- 0,
150
- user,
151
- tx
152
- )
153
- }
@@ -1,35 +0,0 @@
1
- import { EntityManager, IsNull } from 'typeorm'
2
-
3
- import { buildQuery, Domain, ListParam } from '@things-factory/shell'
4
-
5
- import { DailyHarvestDetail as DailyHarvestDetailEntity } from '../../../entities'
6
-
7
- export const Query = {
8
- async dailyHarvestDetail(_: any, { name }, context: ResolverContext) {
9
- const { domain, tx } = context.state
10
-
11
- return await tx.getRepository(DailyHarvestDetailEntity).findOne({
12
- where: { domain: { id: domain.id }, name, deletedAt: IsNull() },
13
- relations: ['domain', 'creator', 'updater']
14
- })
15
- },
16
-
17
- async dailyHarvestDetails(_: any, params: ListParam, context: ResolverContext) {
18
- const { tx } = context.state
19
-
20
- const queryBuilder = tx.getRepository(DailyHarvestDetailEntity).createQueryBuilder()
21
- buildQuery(queryBuilder, params, context)
22
-
23
- queryBuilder
24
- .leftJoinAndSelect('DailyHarvestDetail.domain', 'Domain')
25
- .leftJoinAndSelect('DailyHarvestDetail.creator', 'Creator')
26
- .leftJoinAndSelect('DailyHarvestDetail.updater', 'Updater')
27
-
28
- if (params.filters?.length > 0) queryBuilder.andWhere('DailyHarvestDetail.deletedAt IS NULL')
29
- else queryBuilder.where('DailyHarvestDetail.deletedAt IS NULL')
30
-
31
- const [items, total] = await queryBuilder.getManyAndCount()
32
-
33
- return { items, total }
34
- }
35
- }
@@ -1,6 +0,0 @@
1
- import { Query } from './daily-harvest-detail-query'
2
-
3
- export const DailyHarvestDetailResolver = {
4
- Query,
5
- Mutation: {}
6
- }
@@ -1,43 +0,0 @@
1
- import { EntityManager, IsNull } from 'typeorm'
2
-
3
- import { buildQuery, Domain, ListParam } from '@things-factory/shell'
4
-
5
- import { DailyLoading as DailyLoadingEntity } from '../../../entities'
6
-
7
- export const Query = {
8
- async dailyLoading(_: any, { name }, context: ResolverContext) {
9
- const { domain, tx } = context.state
10
-
11
- return await tx.getRepository(DailyLoadingEntity).findOne({
12
- where: { domain: { id: domain.id }, name, deletedAt: IsNull() },
13
- relations: [
14
- 'domain',
15
- 'dailyLoadingDetails',
16
- 'dailyLoadingDetails.truck',
17
- 'dailyLoadingDetails.block',
18
- 'dailyLoadingDetails.ramp',
19
- 'creator',
20
- 'updater'
21
- ]
22
- })
23
- },
24
-
25
- async dailyLoadings(_: any, params: ListParam, context: ResolverContext) {
26
- const { tx } = context.state
27
-
28
- const queryBuilder = tx.getRepository(DailyLoadingEntity).createQueryBuilder()
29
- buildQuery(queryBuilder, params, context)
30
-
31
- queryBuilder
32
- .leftJoinAndSelect('DailyLoading.domain', 'Domain')
33
- .leftJoinAndSelect('DailyLoading.creator', 'Creator')
34
- .leftJoinAndSelect('DailyLoading.updater', 'Updater')
35
-
36
- if (params.filters?.length > 0) queryBuilder.andWhere('DailyLoading.deletedAt IS NULL')
37
- else queryBuilder.where('DailyLoading.deletedAt IS NULL')
38
-
39
- const [items, total] = await queryBuilder.getManyAndCount()
40
-
41
- return { items, total }
42
- }
43
- }
@@ -1,38 +0,0 @@
1
- import { EntityManager, IsNull } from 'typeorm'
2
-
3
- import { Domain } from '@things-factory/shell'
4
-
5
- import { DailyLoading, DailyLoadingDetail } from '../../../entities'
6
-
7
- export const deleteDailyLoading = {
8
- async deleteDailyLoading(_: any, { name }, context: ResolverContext) {
9
- try {
10
- const { domain, tx } = context.state
11
-
12
- const dailyLoading = await tx.getRepository(DailyLoading).findOneOrFail({ where: { name, deletedAt: IsNull() } })
13
-
14
- await tx.getRepository(DailyLoading).update(
15
- {
16
- domain: { id: domain.id },
17
- name
18
- },
19
- {
20
- deletedAt: new Date()
21
- }
22
- )
23
-
24
- await tx.getRepository(DailyLoadingDetail).update(
25
- {
26
- domain: { id: domain.id },
27
- dailyLoading: { id: dailyLoading.id }
28
- },
29
- {
30
- deletedAt: new Date()
31
- }
32
- )
33
- return true
34
- } catch (error) {
35
- throw error
36
- }
37
- }
38
- }
@@ -1,149 +0,0 @@
1
- import { EntityManager, Repository } from 'typeorm'
2
-
3
- import { User } from '@things-factory/auth-base'
4
- import { Domain, getRepository } from '@things-factory/shell'
5
-
6
- import { INVENTORY_STATUS, INVENTORY_TYPE, RECORD_STATUS, TRANSACTION_TYPE } from '../../../constants'
7
- import { Block, DailyLoading, DailyLoadingDetail, PlantationInventory, Ramp, Truck } from '../../../entities'
8
- import { generateTransactionHistory, NoGenerator } from '../../../utils'
9
-
10
- export const generateDailyLoading = {
11
- async generateDailyLoading(_: any, { dailyLoading }, context: ResolverContext) {
12
- const { domain, user, tx } = context.state
13
-
14
- let dailyLoadingDetails: DailyLoadingDetail[] = dailyLoading.dailyLoadingDetails
15
-
16
- const totalWeight: number = dailyLoadingDetails.reduce(function (prev, cur) {
17
- return prev + cur.totalBunchWeight
18
- }, 0)
19
-
20
- const totalBunch: number = dailyLoadingDetails.reduce(function (prev, cur) {
21
- return prev + cur.totalBunchLoaded
22
- }, 0)
23
-
24
- // 1. Create daily loading
25
- let newDailyLoading: DailyLoading = new DailyLoading()
26
- newDailyLoading.name = NoGenerator.dailyLoading()
27
- newDailyLoading.domain = domain
28
- newDailyLoading.loadingDate = dailyLoading.loadingDate
29
- newDailyLoading.totalBunch = totalBunch
30
- newDailyLoading.totalWeight = totalWeight
31
- newDailyLoading.status = RECORD_STATUS.STORED
32
- newDailyLoading.creator = user
33
-
34
- newDailyLoading = await tx.getRepository(DailyLoading).save(newDailyLoading)
35
-
36
- // 2. Create daily loading detail
37
- dailyLoadingDetails = await addDailyLoadingDetail(
38
- domain,
39
- newDailyLoading,
40
- dailyLoadingDetails.map((record: DailyLoadingDetail) => {
41
- return { ...record }
42
- }),
43
- user,
44
- tx
45
- )
46
-
47
- return newDailyLoading
48
- }
49
- }
50
-
51
- export async function addDailyLoadingDetail(
52
- domain: Domain,
53
- newDailyLoading: DailyLoading,
54
- dailyLoadingDetails: DailyLoadingDetail[],
55
- user: User,
56
- tx?: EntityManager
57
- ): Promise<DailyLoadingDetail[]> {
58
- const truckRepo: Repository<Truck> = tx?.getRepository(Truck) || getRepository(Truck)
59
- const blockRepo: Repository<Block> = tx?.getRepository(Block) || getRepository(Block)
60
- const rampRepo: Repository<Ramp> = tx?.getRepository(Ramp) || getRepository(Ramp)
61
-
62
- const dailyLoadingDetailRepo: Repository<DailyLoadingDetail> =
63
- tx?.getRepository(DailyLoadingDetail) || getRepository(DailyLoadingDetail)
64
-
65
- dailyLoadingDetails = await Promise.all(
66
- dailyLoadingDetails.map(async (record: DailyLoadingDetail) => {
67
- return {
68
- ...record,
69
- domain,
70
- name: NoGenerator.dailyLoadingDetail(),
71
- truck: await truckRepo.findOneBy({ id: record.truck.id }),
72
- block: await blockRepo.findOneBy({ id: record.block.id }),
73
- ramp: await rampRepo.findOneBy({ id: record.ramp.id }),
74
- dailyLoading: newDailyLoading,
75
- creator: user
76
- }
77
- })
78
- )
79
-
80
- dailyLoadingDetails = await dailyLoadingDetailRepo.save(dailyLoadingDetails)
81
- await updatePlantationInventory(domain, newDailyLoading, dailyLoadingDetails, user, tx)
82
-
83
- return dailyLoadingDetails
84
- }
85
-
86
- export async function updatePlantationInventory(
87
- domain: Domain,
88
- newDailyLoading: DailyLoading,
89
- dailyLoadingDetails: DailyLoadingDetail[],
90
- user: User,
91
- tx?: EntityManager
92
- ): Promise<void> {
93
- const plantationInvRepo: Repository<PlantationInventory> =
94
- tx?.getRepository(PlantationInventory) || getRepository(PlantationInventory)
95
-
96
- await Promise.all(
97
- dailyLoadingDetails.map(async (dailyLoadingDetail: any) => {
98
- let existingRampTonnage: PlantationInventory = await plantationInvRepo.findOne({
99
- where: { domain: { id: domain.id }, type: INVENTORY_TYPE.RAMP_TONNAGE, ramp: dailyLoadingDetail.ramp },
100
- relations: ['domain', 'block', 'ramp']
101
- })
102
-
103
- if (existingRampTonnage) {
104
- existingRampTonnage.totalTonnage = existingRampTonnage.totalTonnage + dailyLoadingDetail.totalBunchWeight
105
- existingRampTonnage.updater = user
106
- await plantationInvRepo.save(existingRampTonnage)
107
-
108
- await generateTransactionHistory(
109
- dailyLoadingDetail.block,
110
- domain,
111
- dailyLoadingDetail.ramp,
112
- newDailyLoading.id,
113
- newDailyLoading.name,
114
- TRANSACTION_TYPE.LOADING,
115
- newDailyLoading.loadingDate,
116
- 0,
117
- dailyLoadingDetail.totalBunchWeight,
118
- user,
119
- tx
120
- )
121
- } else {
122
- let plantationInventory: PlantationInventory = new PlantationInventory()
123
- plantationInventory.domain = domain
124
- plantationInventory.name = NoGenerator.rampTonnageName()
125
- plantationInventory.block = dailyLoadingDetail.block
126
- plantationInventory.type = INVENTORY_TYPE.RAMP_TONNAGE
127
- plantationInventory.totalTonnage = dailyLoadingDetail.totalBunchWeight
128
- plantationInventory.status = INVENTORY_STATUS.STORED
129
- plantationInventory.ramp = dailyLoadingDetail.ramp
130
- plantationInventory.creator = user
131
- plantationInventory = await plantationInvRepo.save(plantationInventory)
132
-
133
- await generateTransactionHistory(
134
- dailyLoadingDetail.block,
135
- domain,
136
- dailyLoadingDetail.ramp,
137
- newDailyLoading.id,
138
- newDailyLoading.name,
139
- TRANSACTION_TYPE.LOADING,
140
- newDailyLoading.loadingDate,
141
- 0,
142
- dailyLoadingDetail.totalBunchWeight,
143
- user,
144
- tx
145
- )
146
- }
147
- })
148
- )
149
- }
@@ -1,14 +0,0 @@
1
- import { Query } from './daily-loading-query'
2
-
3
- import { generateDailyLoading } from './generate-daily-loading'
4
- import { updateDailyLoading } from './update-daily-loading'
5
- import { deleteDailyLoading } from './delete-daily-loading'
6
-
7
- export const DailyLoadingResolver = {
8
- Query,
9
- Mutation: {
10
- ...generateDailyLoading,
11
- ...updateDailyLoading,
12
- ...deleteDailyLoading
13
- }
14
- }
@@ -1,154 +0,0 @@
1
- import { EntityManager, Repository } from 'typeorm'
2
-
3
- import { User } from '@things-factory/auth-base'
4
- import { Domain, getRepository } from '@things-factory/shell'
5
-
6
- import { INVENTORY_TYPE, TRANSACTION_TYPE } from '../../../constants'
7
- import { Block, DailyLoading, DailyLoadingDetail, PlantationInventory, Ramp, Truck } from '../../../entities'
8
- import { generateTransactionHistory, NoGenerator } from '../../../utils'
9
-
10
- export const updateDailyLoading = {
11
- async updateDailyLoading(_: any, { name, dailyLoadingPatch }, context: ResolverContext) {
12
- const { domain, user, tx } = context.state
13
- const dailyLoadingRepo = tx.getRepository(DailyLoading)
14
-
15
- let dailyLoading: DailyLoading = await dailyLoadingRepo.findOne({
16
- where: { name },
17
- relations: [
18
- 'dailyLoadingDetails',
19
- 'dailyLoadingDetails.truck',
20
- 'dailyLoadingDetails.ramp',
21
- 'dailyLoadingDetails.block'
22
- ]
23
- })
24
-
25
- // get sum of bunch loaded from all trip
26
- var totalBunch: number = dailyLoadingPatch.dailyLoadingDetails.reduce(function (prev, cur) {
27
- return prev + cur.totalBunchLoaded
28
- }, 0)
29
-
30
- var totalWeight: number = dailyLoadingPatch.dailyLoadingDetails.reduce(function (prev, cur) {
31
- return prev + cur.totalBunchWeight
32
- }, 0)
33
-
34
- dailyLoading.totalBunch = totalBunch
35
- dailyLoading.totalWeight = totalWeight
36
- dailyLoading.loadingDate = dailyLoadingPatch.loadingDate
37
- dailyLoading.updater = user
38
- dailyLoading = await dailyLoadingRepo.save(dailyLoading)
39
-
40
- // 2. Create daily loading detail
41
- await updateDailyLoadingDetail(domain, dailyLoading, dailyLoadingPatch.dailyLoadingDetails, user, tx)
42
-
43
- return dailyLoading
44
- }
45
- }
46
-
47
- export async function updateDailyLoadingDetail(
48
- domain: Domain,
49
- dailyLoading: DailyLoading,
50
- dailyLoadingDetailPatches: any[],
51
- user: User,
52
- tx?: EntityManager
53
- ): Promise<void> {
54
- const truckRepo: Repository<Truck> = tx?.getRepository(Truck) || getRepository(Truck)
55
- const blockRepo: Repository<Block> = tx?.getRepository(Block) || getRepository(Block)
56
- const rampRepo: Repository<Ramp> = tx?.getRepository(Ramp) || getRepository(Ramp)
57
- const dailyLoadingDetailRepo: Repository<DailyLoadingDetail> =
58
- tx?.getRepository(DailyLoadingDetail) || getRepository(DailyLoadingDetail)
59
-
60
- let updatedDailyLoadingDetails: any[] = []
61
- const dailyLoadingDetails: DailyLoadingDetail[] = dailyLoading.dailyLoadingDetails
62
- // for existing data row
63
- const existingDailyLoadingDetails: DailyLoadingDetail[] = dailyLoadingDetailPatches.filter(
64
- detail => detail.name !== null
65
- )
66
-
67
- // new row added in client side
68
- const newDailyLoadingDetail: DailyLoadingDetail[] = dailyLoadingDetailPatches.filter(detail => detail.name === null)
69
-
70
- if (existingDailyLoadingDetails?.length > 0) {
71
- updatedDailyLoadingDetails = await Promise.all(
72
- dailyLoadingDetails.map(async (existingRecord: DailyLoadingDetail) => {
73
- const foundDailyLoadingDetailPatch = dailyLoadingDetailPatches.find(
74
- detail => detail.name === existingRecord.name
75
- )
76
-
77
- if (foundDailyLoadingDetailPatch.totalBunchWeight !== existingRecord.totalBunchWeight) {
78
- await updatePlantationInventory(domain, dailyLoading, foundDailyLoadingDetailPatch, existingRecord, user, tx)
79
- }
80
-
81
- return {
82
- ...existingRecord,
83
- dailyLoading,
84
- truck: await truckRepo.findOneBy({ id: existingRecord.truck.id }),
85
- block: await blockRepo.findOneBy({ id: existingRecord.block.id }),
86
- ramp: await rampRepo.findOneBy({ id: existingRecord.ramp.id }),
87
- totalBunchLoaded: foundDailyLoadingDetailPatch?.totalBunchLoaded || 0,
88
- totalBunchWeight: foundDailyLoadingDetailPatch?.totalBunchWeight || 0,
89
- remark: foundDailyLoadingDetailPatch?.remark || null,
90
- updater: user
91
- }
92
- })
93
- )
94
- updatedDailyLoadingDetails = await dailyLoadingDetailRepo.save(updatedDailyLoadingDetails)
95
- }
96
-
97
- if (newDailyLoadingDetail?.length > 0) {
98
- await Promise.all(
99
- newDailyLoadingDetail.map(async (dailyLoadingDetail: DailyLoadingDetail) => {
100
- let newDailyLoadingDetail: DailyLoadingDetail = new DailyLoadingDetail()
101
- newDailyLoadingDetail.domain = domain
102
- newDailyLoadingDetail.name = NoGenerator.dailyLoadingDetail()
103
- newDailyLoadingDetail.truck = await truckRepo.findOneBy({ id: dailyLoadingDetail.truck.id })
104
- newDailyLoadingDetail.block = await blockRepo.findOneBy({ id: dailyLoadingDetail.block.id })
105
- newDailyLoadingDetail.ramp = await rampRepo.findOneBy({ id: dailyLoadingDetail.ramp.id })
106
- newDailyLoadingDetail.totalBunchLoaded = dailyLoadingDetail?.totalBunchLoaded || 0
107
- newDailyLoadingDetail.totalBunchWeight = dailyLoadingDetail?.totalBunchWeight || 0
108
- newDailyLoadingDetail.remark = dailyLoadingDetail?.remark || null
109
- newDailyLoadingDetail.creator = user
110
- newDailyLoadingDetail.dailyLoading = dailyLoading
111
-
112
- await dailyLoadingDetailRepo.save(newDailyLoadingDetail)
113
- })
114
- )
115
- }
116
- }
117
-
118
- export async function updatePlantationInventory(
119
- domain: Domain,
120
- dailyLoading: DailyLoading,
121
- foundDailyLoadingDetailPatch: any,
122
- existingRecord: DailyLoadingDetail,
123
- user: User,
124
- tx?: EntityManager
125
- ): Promise<void> {
126
- const plantationInvRepo: Repository<PlantationInventory> =
127
- tx?.getRepository(PlantationInventory) || getRepository(PlantationInventory)
128
-
129
- let existingRampTonnage: PlantationInventory = await plantationInvRepo.findOne({
130
- where: { domain: { id: domain.id }, type: INVENTORY_TYPE.RAMP_TONNAGE, ramp: { id: existingRecord.ramp.id } },
131
- relations: ['domain', 'block', 'ramp']
132
- })
133
-
134
- if (existingRampTonnage) {
135
- const tonnageChanges: number = foundDailyLoadingDetailPatch.totalBunchWeight - existingRecord.totalBunchWeight
136
- existingRampTonnage.totalTonnage = existingRampTonnage.totalTonnage + tonnageChanges
137
- existingRampTonnage.updater = user
138
- await plantationInvRepo.save(existingRampTonnage)
139
-
140
- await generateTransactionHistory(
141
- existingRampTonnage.block,
142
- domain,
143
- existingRampTonnage.ramp,
144
- dailyLoading.id,
145
- dailyLoading.name,
146
- TRANSACTION_TYPE.LOADING_ADJUSTMENT,
147
- dailyLoading.loadingDate,
148
- 0,
149
- tonnageChanges,
150
- user,
151
- tx
152
- )
153
- }
154
- }
@@ -1,35 +0,0 @@
1
- import { EntityManager, IsNull } from 'typeorm'
2
-
3
- import { buildQuery, Domain, ListParam } from '@things-factory/shell'
4
-
5
- import { DailyLoadingDetail as DailyLoadingDetailEntity } from '../../../entities'
6
-
7
- export const Query = {
8
- async dailyLoadingDetail(_: any, { name }, context: ResolverContext) {
9
- const { domain, tx } = context.state
10
-
11
- return await tx.getRepository(DailyLoadingDetailEntity).findOne({
12
- where: { domain: { id: domain.id }, name, deletedAt: IsNull() },
13
- relations: ['domain', 'creator', 'updater']
14
- })
15
- },
16
-
17
- async dailyLoadingDetails(_: any, params: ListParam, context: ResolverContext) {
18
- const { tx } = context.state
19
-
20
- const queryBuilder = tx.getRepository(DailyLoadingDetailEntity).createQueryBuilder()
21
- buildQuery(queryBuilder, params, context)
22
-
23
- queryBuilder
24
- .leftJoinAndSelect('DailyLoadingDetail.domain', 'Domain')
25
- .leftJoinAndSelect('DailyLoadingDetail.creator', 'Creator')
26
- .leftJoinAndSelect('DailyLoadingDetail.updater', 'Updater')
27
-
28
- if (params.filters?.length > 0) queryBuilder.andWhere('DailyLoadingDetail.deletedAt IS NULL')
29
- else queryBuilder.where('DailyLoadingDetail.deletedAt IS NULL')
30
-
31
- const [items, total] = await queryBuilder.getManyAndCount()
32
-
33
- return { items, total }
34
- }
35
- }
@@ -1,6 +0,0 @@
1
- import { Query } from './daily-loading-detail-query'
2
-
3
- export const DailyLoadingDetailResolver = {
4
- Query,
5
- Mutation: {}
6
- }
@@ -1,34 +0,0 @@
1
- import { EntityManager, IsNull } from 'typeorm'
2
-
3
- import { buildQuery, Domain, ListParam } from '@things-factory/shell'
4
-
5
- import { DailyLoadingRamp as DailyLoadingRampEntity } from '../../../entities'
6
-
7
- export const Query = {
8
- async dailyLoadingRamp(_: any, { name }, context: ResolverContext) {
9
- const { domain, tx } = context.state
10
-
11
- return await tx.getRepository(DailyLoadingRampEntity).findOne({
12
- where: { domain: { id: domain.id }, name, deletedAt: IsNull() },
13
- relations: ['domain', 'dailyLoading', 'ramp', 'creator', 'updater']
14
- })
15
- },
16
-
17
- async dailyLoadingRamps(_: any, params: ListParam, context: ResolverContext) {
18
- const { tx } = context.state
19
-
20
- const queryBuilder = tx.getRepository(DailyLoadingRampEntity).createQueryBuilder()
21
- buildQuery(queryBuilder, params, context)
22
-
23
- queryBuilder
24
- .leftJoinAndSelect('DailyLoadingRamp.domain', 'Domain')
25
- .leftJoinAndSelect('DailyLoadingRamp.dailyLoading', 'DailyLoading')
26
- .leftJoinAndSelect('DailyLoadingRamp.ramp', 'Ramp')
27
- .leftJoinAndSelect('DailyLoadingRamp.creator', 'Creator')
28
- .leftJoinAndSelect('DailyLoadingRamp.updater', 'Updater')
29
-
30
- const [items, total] = await queryBuilder.getManyAndCount()
31
-
32
- return { items, total }
33
- }
34
- }