@things-factory/operato-pms 4.3.591 → 4.3.601

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 (68) hide show
  1. package/client/pages/harvesting/harvesting-create-record.js +5 -2
  2. package/client/pages/loading/edit-loading-record.js +2 -0
  3. package/client/pages/report/report-daily-ffb-dispatch-and-production.js +19 -23
  4. package/dist-server/entities/daily-dispatch.js +2 -2
  5. package/dist-server/entities/daily-dispatch.js.map +1 -1
  6. package/dist-server/entities/ramp-block-history.js.map +1 -1
  7. package/dist-server/graphql/resolvers/daily-dispatch/delete-daily-dispatch.js +49 -1
  8. package/dist-server/graphql/resolvers/daily-dispatch/delete-daily-dispatch.js.map +1 -1
  9. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js +124 -112
  10. package/dist-server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.js.map +1 -1
  11. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js +51 -2
  12. package/dist-server/graphql/resolvers/daily-dispatch/update-daily-dispatch.js.map +1 -1
  13. package/dist-server/graphql/resolvers/daily-harvest/delete-daily-harvest.js +5 -7
  14. package/dist-server/graphql/resolvers/daily-harvest/delete-daily-harvest.js.map +1 -1
  15. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js +3 -3
  16. package/dist-server/graphql/resolvers/daily-harvest/generate-daily-harvest.js.map +1 -1
  17. package/dist-server/graphql/resolvers/daily-loading/delete-daily-loading.js +6 -0
  18. package/dist-server/graphql/resolvers/daily-loading/delete-daily-loading.js.map +1 -1
  19. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js +68 -52
  20. package/dist-server/graphql/resolvers/daily-loading/generate-daily-loading.js.map +1 -1
  21. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js +16 -22
  22. package/dist-server/graphql/resolvers/daily-loading/update-daily-loading.js.map +1 -1
  23. package/dist-server/graphql/resolvers/report/daily-ffb-dispatch-production-reports.js +50 -19
  24. package/dist-server/graphql/resolvers/report/daily-ffb-dispatch-production-reports.js.map +1 -1
  25. package/dist-server/graphql/resolvers/report/daily-production-reports.js +96 -67
  26. package/dist-server/graphql/resolvers/report/daily-production-reports.js.map +1 -1
  27. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js +1 -0
  28. package/dist-server/graphql/resolvers/report/daily-staff-harvest-reports.js.map +1 -1
  29. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js +7 -2
  30. package/dist-server/graphql/resolvers/report/monthly-block-dispatch-reports.js.map +1 -1
  31. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js +11 -5
  32. package/dist-server/graphql/resolvers/report/monthly-dispatch-summary-reports.js.map +1 -1
  33. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js +21 -9
  34. package/dist-server/graphql/resolvers/report/monthly-ffb-sale-reports.js.map +1 -1
  35. package/dist-server/graphql/resolvers/report/monthly-production-reports.js +5 -2
  36. package/dist-server/graphql/resolvers/report/monthly-production-reports.js.map +1 -1
  37. package/dist-server/graphql/resolvers/report/yearly-production-reports.js +5 -2
  38. package/dist-server/graphql/resolvers/report/yearly-production-reports.js.map +1 -1
  39. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js +2 -0
  40. package/dist-server/graphql/types/daily-loading-detail/daily-loading-detail-patch.js.map +1 -1
  41. package/dist-server/utils/transaction-util.js +32 -53
  42. package/dist-server/utils/transaction-util.js.map +1 -1
  43. package/package.json +3 -3
  44. package/server/entities/daily-dispatch.ts +2 -2
  45. package/server/entities/ramp-block-history.ts +2 -5
  46. package/server/graphql/resolvers/daily-dispatch/delete-daily-dispatch.ts +69 -2
  47. package/server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.ts +179 -141
  48. package/server/graphql/resolvers/daily-dispatch/update-daily-dispatch.ts +68 -5
  49. package/server/graphql/resolvers/daily-harvest/delete-daily-harvest.ts +9 -26
  50. package/server/graphql/resolvers/daily-harvest/generate-daily-harvest.ts +3 -3
  51. package/server/graphql/resolvers/daily-loading/delete-daily-loading.ts +11 -1
  52. package/server/graphql/resolvers/daily-loading/generate-daily-loading.ts +95 -98
  53. package/server/graphql/resolvers/daily-loading/update-daily-loading.ts +44 -47
  54. package/server/graphql/resolvers/report/daily-ffb-dispatch-production-reports.ts +61 -26
  55. package/server/graphql/resolvers/report/daily-production-reports.ts +103 -72
  56. package/server/graphql/resolvers/report/daily-staff-harvest-reports.ts +5 -2
  57. package/server/graphql/resolvers/report/monthly-block-dispatch-reports.ts +20 -9
  58. package/server/graphql/resolvers/report/monthly-dispatch-summary-reports.ts +16 -12
  59. package/server/graphql/resolvers/report/monthly-ffb-sale-reports.ts +26 -12
  60. package/server/graphql/resolvers/report/monthly-production-reports.ts +5 -3
  61. package/server/graphql/resolvers/report/yearly-production-reports.ts +5 -2
  62. package/server/graphql/types/daily-loading-detail/daily-loading-detail-patch.ts +2 -0
  63. package/server/utils/transaction-util.ts +36 -56
  64. package/translations/en.json +1 -1
  65. package/translations/ja.json +1 -1
  66. package/translations/ko.json +1 -1
  67. package/translations/ms.json +1 -1
  68. package/translations/zh.json +1 -1
@@ -232,8 +232,11 @@ class HarvestingCreateRecord extends localize(i18next)(PageView) {
232
232
  const changedColumn = event.detail.column.name
233
233
  let { totalBunchHarvested, totalTonnageHarvested } = changeRecord
234
234
 
235
- if (changedColumn === 'totalBunchHarvested' && (!totalBunchHarvested || totalBunchHarvested < 0)) {
236
- throw new Error(i18next.t('text.total_no_of_bunches_should_be_positive'))
235
+ if (changedColumn === 'totalBunchHarvested') {
236
+ // Check if the value is a positive integer
237
+ if (!totalBunchHarvested || totalBunchHarvested < 0 || !Number.isInteger(totalBunchHarvested)) {
238
+ throw new Error(i18next.t('text.total_no_of_bunches_should_be_positive_and_whole_number'))
239
+ }
237
240
  }
238
241
 
239
242
  if (changedColumn === 'totalTonnageHarvested' && totalTonnageHarvested < 0) {
@@ -370,6 +370,8 @@ class EditLoadingRecord extends localize(i18next)(PageView) {
370
370
  ramp: { id: record.ramp.id, name: record.ramp.name },
371
371
  totalBunchLoaded: Number(record?.totalBunchLoaded || 0),
372
372
  totalBunchWeight: Number(record.totalBunchWeight),
373
+ prevTotalBunchLoaded: Number(record.__origin__.totalBunchLoaded),
374
+ prevTotalBunchWeight: Number(record.__origin__.totalBunchWeight),
373
375
  remark: record?.remark ? record.remark : null
374
376
  }
375
377
 
@@ -225,19 +225,19 @@ class ReportDailyFfbDispatchAndProduction extends connect(store)(localize(i18nex
225
225
  width: 130
226
226
  }
227
227
  }),
228
- {
229
- type: 'string',
230
- name: 'unknown',
231
- header: 'UNKNOWN',
232
- record: { editable: false, align: 'center' },
233
- imex: {
234
- header: 'UNKNOWN',
235
- key: 'unknown',
236
- width: 30,
237
- type: 'string'
238
- },
239
- width: 130
240
- },
228
+ // {
229
+ // type: 'string',
230
+ // name: 'unknown',
231
+ // header: 'UNKNOWN',
232
+ // record: { editable: false, align: 'center' },
233
+ // imex: {
234
+ // header: 'UNKNOWN',
235
+ // key: 'unknown',
236
+ // width: 30,
237
+ // type: 'string'
238
+ // },
239
+ // width: 130
240
+ // },
241
241
  {
242
242
  type: 'string',
243
243
  name: 'today',
@@ -314,15 +314,11 @@ class ReportDailyFfbDispatchAndProduction extends connect(store)(localize(i18nex
314
314
 
315
315
  const response = await client.query({
316
316
  query: gql`
317
- query ramps($filters: [Filter], $pagination: Pagination) {
318
- ramps(filters: $filters, pagination: $pagination) {
317
+ query blocks($filters: [Filter], $pagination: Pagination) {
318
+ blocks(filters: $filters, pagination: $pagination) {
319
319
  items {
320
320
  id
321
321
  name
322
- block {
323
- id
324
- name
325
- }
326
322
  }
327
323
  }
328
324
  }
@@ -331,11 +327,11 @@ class ReportDailyFfbDispatchAndProduction extends connect(store)(localize(i18nex
331
327
  })
332
328
 
333
329
  if (!response.errors) {
334
- return response.data.ramps.items.reduce((acc, ramp) => {
335
- if (!acc.find(itm => itm.id == ramp.block.id) && !ramp.block.deletedAt)
330
+ return response.data.blocks.items.reduce((acc, block) => {
331
+ if (!acc.find(itm => itm.id == block.id) && !block.deletedAt)
336
332
  acc.push({
337
- id: ramp.block.id,
338
- name: ramp.block.name
333
+ id: block.id,
334
+ name: block.name
339
335
  })
340
336
 
341
337
  return acc
@@ -66,8 +66,8 @@ __decorate([
66
66
  __metadata("design:type", entities_1.Organization)
67
67
  ], DailyDispatch.prototype, "dispatchTo", void 0);
68
68
  __decorate([
69
- (0, typeorm_1.Column)({ nullable: true }),
70
- __metadata("design:type", Date)
69
+ (0, typeorm_1.Column)({ type: 'timestamp', nullable: true }),
70
+ __metadata("design:type", Object)
71
71
  ], DailyDispatch.prototype, "dispatchAt", void 0);
72
72
  __decorate([
73
73
  (0, typeorm_1.Column)({ nullable: true }),
@@ -1 +1 @@
1
- {"version":3,"file":"daily-dispatch.js","sourceRoot":"","sources":["../../server/entities/daily-dispatch.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCASgB;AAEhB,yDAAgD;AAChD,iDAA8C;AAE9C,0CAAyF;AAMlF,IAAM,aAAa,GAAnB,MAAM,aAAa;CAwEzB,CAAA;AAvEC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;yCACrB;AAEV;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;kDAClB,cAAM,oBAAN,cAAM;6CAAA;AAEd;IAAC,IAAA,gBAAM,GAAE;;2CACG;AAEZ;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACR;AAEnB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,4BAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACjD,4BAAiB;6CAAA;AAEzB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACL;AAEtB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAClC,gBAAK;gDAAA;AAEhB;IAAC,IAAA,gBAAM,GAAE;;kDACU;AAEnB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DACC;AAE5B;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;0DACX;AAE3B;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,8BAAmB,EAAE,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,CAAC,aAAa,CAAC;;2DACtD;AAE3C;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,uBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACxC,uBAAY;iDAAA;AAExB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACf,IAAI;iDAAA;AAEhB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACP;AAGpB;IAAC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;6CACV;AAGd;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACpC;AAElB;IAAC,IAAA,gBAAM,GAAE;;6CACK;AAEd;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChB,IAAI;gDAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;8BACR,IAAI;gDAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;8BACR,IAAI;gDAAA;AAEf;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;8CAAA;AAEb;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;8CAAA;AAvEF,aAAa;IAJzB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,qBAAqB,EAAE,CAAC,aAA4B,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE;QACxG,MAAM,EAAE,IAAI;KACb,CAAC;GACW,aAAa,CAwEzB;AAxEY,sCAAa"}
1
+ {"version":3,"file":"daily-dispatch.js","sourceRoot":"","sources":["../../server/entities/daily-dispatch.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCASgB;AAEhB,yDAAgD;AAChD,iDAA8C;AAE9C,0CAAyF;AAMlF,IAAM,aAAa,GAAnB,MAAM,aAAa;CAwEzB,CAAA;AAvEC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;yCACrB;AAEV;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;kDAClB,cAAM,oBAAN,cAAM;6CAAA;AAEd;IAAC,IAAA,gBAAM,GAAE;;2CACG;AAEZ;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACR;AAEnB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,4BAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACjD,4BAAiB;6CAAA;AAEzB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACL;AAEtB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAClC,gBAAK;gDAAA;AAEhB;IAAC,IAAA,gBAAM,GAAE;;kDACU;AAEnB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DACC;AAE5B;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;0DACX;AAE3B;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,8BAAmB,EAAE,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,CAAC,aAAa,CAAC;;2DACtD;AAE3C;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,uBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACxC,uBAAY;iDAAA;AAExB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACrB;AAEzB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACP;AAGpB;IAAC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;6CACV;AAGd;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACpC;AAElB;IAAC,IAAA,gBAAM,GAAE;;6CACK;AAEd;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChB,IAAI;gDAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;8BACR,IAAI;gDAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;8BACR,IAAI;gDAAA;AAEf;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;8CAAA;AAEb;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;8CAAA;AAvEF,aAAa;IAJzB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,qBAAqB,EAAE,CAAC,aAA4B,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE;QACxG,MAAM,EAAE,IAAI;KACb,CAAC;GACW,aAAa,CAwEzB;AAxEY,sCAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"ramp-block-history.js","sourceRoot":"","sources":["../../server/entities/ramp-block-history.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,yDAAgD;AAChD,iDAA8C;AAC9C,qCAAsH;AACtH,0CAA6E;AAQtE,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAyD5B,CAAA;AAxDC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;4CACrB;AAEV;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAChB;AAEX;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;kDAClB,cAAM,oBAAN,cAAM;gDAAA;AAEd;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACtC,gBAAK;+CAAA;AAEZ;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,eAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACtC,eAAI;8CAAA;AAEV;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,wBAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACtC,wBAAa;uDAAA;AAE5B;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;gDACxB;AAEd;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;wDAChB;AAEtB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;uDACjB;AAOrB;IAAC,IAAA,gBAAM,GAAE;;yDACc;AAEvB;IAAC,IAAA,gBAAM,GAAE;;yDACc;AAEvB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChB,IAAI;mDAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;8BACR,IAAI;mDAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;8BACR,IAAI;mDAAA;AAEf;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;iDAAA;AAEb;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;iDAAA;AAxDF,gBAAgB;IAN5B,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EACJ,yBAAyB,EACzB,CAAC,gBAAkC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAC7D,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB;GACY,gBAAgB,CAyD5B;AAzDY,4CAAgB"}
1
+ {"version":3,"file":"ramp-block-history.js","sourceRoot":"","sources":["../../server/entities/ramp-block-history.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,yDAAgD;AAChD,iDAA8C;AAC9C,qCAAsH;AACtH,0CAA6E;AAItE,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CA0D5B,CAAA;AAzDC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;4CACrB;AAEV;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAChB;AAEX;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;kDAClB,cAAM,oBAAN,cAAM;gDAAA;AAEd;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACtC,gBAAK;+CAAA;AAEZ;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,eAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACtC,eAAI;8CAAA;AAEV;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,wBAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACtC,wBAAa;uDAAA;AAE5B;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;gDACxB;AAEd;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;wDAChB;AAEtB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;uDACjB;AAQrB;IAAC,IAAA,gBAAM,GAAE;;yDACc;AAEvB;IAAC,IAAA,gBAAM,GAAE;;yDACc;AAEvB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChB,IAAI;mDAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;8BACR,IAAI;mDAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;8BACR,IAAI;mDAAA;AAEf;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;iDAAA;AAEb;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;iDAAA;AAzDF,gBAAgB;IAF5B,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,yBAAyB,EAAE,CAAC,gBAAkC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;GACrG,gBAAgB,CA0D5B;AA1DY,4CAAgB"}
@@ -5,22 +5,70 @@ const typeorm_1 = require("typeorm");
5
5
  const entities_1 = require("../../../entities");
6
6
  exports.deleteDailyDispatch = {
7
7
  async deleteDailyDispatch(_, { name }, context) {
8
- const { domain, tx } = context.state;
8
+ const { user, domain, tx } = context.state;
9
+ // Step 1: Fetch the daily dispatch record
9
10
  const dailyDispatch = await tx
10
11
  .getRepository(entities_1.DailyDispatch)
11
12
  .findOneOrFail({ where: { name, deletedAt: (0, typeorm_1.IsNull)() }, relations: ['dailyDispatchDetails'] });
13
+ // Step 2: Soft delete the daily dispatch record
12
14
  await tx.getRepository(entities_1.DailyDispatch).update({
13
15
  domain,
14
16
  name
15
17
  }, {
16
18
  deletedAt: new Date()
17
19
  });
20
+ // Step 3: Soft delete related daily dispatch details
18
21
  await tx.getRepository(entities_1.DailyDispatchDetail).update({
19
22
  domain,
20
23
  dailyDispatch: dailyDispatch
21
24
  }, {
22
25
  deletedAt: new Date()
23
26
  });
27
+ // Step 4: Soft delete related record transactions
28
+ await tx.getRepository(entities_1.RecordTransaction).update({
29
+ domain,
30
+ refActionID: dailyDispatch.id
31
+ }, {
32
+ deletedAt: new Date()
33
+ });
34
+ // Step 5: Reverse the effects of the dispatch in ramp_block_histories
35
+ await reverseRampBlockHistories(domain, user, dailyDispatch, tx);
24
36
  }
25
37
  };
38
+ // Helper function to reverse ramp block histories
39
+ async function reverseRampBlockHistories(domain, user, dailyDispatch, tx) {
40
+ const rampBlockHistoryRepo = tx.getRepository(entities_1.RampBlockHistory);
41
+ // Fetch all ramp block histories related to this dispatch
42
+ const rampBlockHistories = await rampBlockHistoryRepo.find({
43
+ where: {
44
+ domain,
45
+ dailyDispatch: dailyDispatch.id,
46
+ transactionType: 'DISPATCH'
47
+ },
48
+ relations: ['ramp', 'block', 'domain']
49
+ });
50
+ // Reverse the effects of each ramp block history record
51
+ for (const history of rampBlockHistories) {
52
+ // Create a new ramp block history record to reverse the dispatch
53
+ await rampBlockHistoryRepo.save({
54
+ weight: -history.weight,
55
+ previousWeight: history.previousWeight,
56
+ currentWeight: parseFloat((history.previousWeight + -history.weight).toFixed(4)),
57
+ transactionType: 'REVERSE_DISPATCH',
58
+ transactionDate: dailyDispatch.dispatchDate,
59
+ domain: history.domain,
60
+ block: history.block,
61
+ ramp: history.ramp,
62
+ dailyDispatch,
63
+ creator: user,
64
+ updater: user
65
+ });
66
+ // Soft delete the original ramp block history record
67
+ await rampBlockHistoryRepo.update({
68
+ id: history.id
69
+ }, {
70
+ deletedAt: new Date()
71
+ });
72
+ }
73
+ }
26
74
  //# sourceMappingURL=delete-daily-dispatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete-daily-dispatch.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/daily-dispatch/delete-daily-dispatch.ts"],"names":[],"mappings":";;;AACA,qCAA+C;AAC/C,gDAAsE;AAEzD,QAAA,mBAAmB,GAAG;IACjC,KAAK,CAAC,mBAAmB,CAAC,CAAM,EAAE,EAAE,IAAI,EAAE,EAAE,OAAY;QACtD,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAA0C,OAAO,CAAC,KAAK,CAAA;QAC3E,MAAM,aAAa,GAAG,MAAM,EAAE;aAC3B,aAAa,CAAC,wBAAa,CAAC;aAC5B,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAA,gBAAM,GAAE,EAAE,EAAE,SAAS,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAA;QAE/F,MAAM,EAAE,CAAC,aAAa,CAAC,wBAAa,CAAC,CAAC,MAAM,CAC1C;YACE,MAAM;YACN,IAAI;SACL,EACD;YACE,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CACF,CAAA;QAED,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAmB,CAAC,CAAC,MAAM,CAChD;YACE,MAAM;YACN,aAAa,EAAE,aAAa;SAC7B,EACD;YACE,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CACF,CAAA;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"delete-daily-dispatch.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/daily-dispatch/delete-daily-dispatch.ts"],"names":[],"mappings":";;;AAEA,qCAA+C;AAC/C,gDAA2G;AAE9F,QAAA,mBAAmB,GAAG;IACjC,KAAK,CAAC,mBAAmB,CAAC,CAAM,EAAE,EAAE,IAAI,EAAE,EAAE,OAAY;QACtD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,0CAA0C;QAC1C,MAAM,aAAa,GAAG,MAAM,EAAE;aAC3B,aAAa,CAAC,wBAAa,CAAC;aAC5B,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAA,gBAAM,GAAE,EAAE,EAAE,SAAS,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAA;QAE/F,gDAAgD;QAChD,MAAM,EAAE,CAAC,aAAa,CAAC,wBAAa,CAAC,CAAC,MAAM,CAC1C;YACE,MAAM;YACN,IAAI;SACL,EACD;YACE,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CACF,CAAA;QAED,qDAAqD;QACrD,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAmB,CAAC,CAAC,MAAM,CAChD;YACE,MAAM;YACN,aAAa,EAAE,aAAa;SAC7B,EACD;YACE,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CACF,CAAA;QAED,kDAAkD;QAClD,MAAM,EAAE,CAAC,aAAa,CAAC,4BAAiB,CAAC,CAAC,MAAM,CAC9C;YACE,MAAM;YACN,WAAW,EAAE,aAAa,CAAC,EAAE;SAC9B,EACD;YACE,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CACF,CAAA;QAED,sEAAsE;QACtE,MAAM,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;IAClE,CAAC;CACF,CAAA;AAED,kDAAkD;AAClD,KAAK,UAAU,yBAAyB,CACtC,MAAc,EACd,IAAU,EACV,aAA4B,EAC5B,EAAkB;IAElB,MAAM,oBAAoB,GAAG,EAAE,CAAC,aAAa,CAAC,2BAAgB,CAAC,CAAA;IAE/D,0DAA0D;IAC1D,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC;QACzD,KAAK,EAAE;YACL,MAAM;YACN,aAAa,EAAE,aAAa,CAAC,EAAE;YAC/B,eAAe,EAAE,UAAU;SAC5B;QACD,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;KACvC,CAAC,CAAA;IAEF,wDAAwD;IACxD,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE;QACxC,iEAAiE;QACjE,MAAM,oBAAoB,CAAC,IAAI,CAAC;YAC9B,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM;YACvB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,aAAa,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChF,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,aAAa,CAAC,YAAY;YAC3C,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,aAAa;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,qDAAqD;QACrD,MAAM,oBAAoB,CAAC,MAAM,CAC/B;YACE,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,EACD;YACE,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CACF,CAAA;KACF;AACH,CAAC"}
@@ -1,132 +1,144 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateDispatchTransaction = exports.addDailyDispatchDetail = exports.generateDailyDispatch = void 0;
4
- const typeorm_1 = require("typeorm");
3
+ exports.generateDailyDispatch = void 0;
5
4
  const constants_1 = require("../../../constants");
6
5
  const entities_1 = require("../../../entities");
7
6
  const utils_1 = require("../../../utils");
8
7
  exports.generateDailyDispatch = {
9
8
  async generateDailyDispatch(_, { dailyDispatch }, context) {
10
9
  const { domain, user, tx } = context.state;
11
- let dailyDispatchDetails = dailyDispatch.dailyDispatchDetails;
12
- let driver;
13
- let transport;
14
- let dispatchTo;
15
- if (dailyDispatch === null || dailyDispatch === void 0 ? void 0 : dailyDispatch.driver) {
16
- driver = await tx.getRepository(entities_1.OrganizationStaff).findOne({
17
- where: { id: dailyDispatch.driver.id }
10
+ try {
11
+ const { dailyDispatchDetails, driver, transport, dispatchTo, dispatchAt, chitNo, percentage } = dailyDispatch;
12
+ // Validate input data
13
+ if (!dailyDispatchDetails || dailyDispatchDetails.length === 0) {
14
+ throw new Error('Daily dispatch details are required.');
15
+ }
16
+ // Fetch related entities
17
+ const driverEntity = driver ? await fetchEntity(tx.getRepository(entities_1.OrganizationStaff), driver.id) : null;
18
+ const transportEntity = transport ? await fetchEntity(tx.getRepository(entities_1.Truck), transport.id) : null;
19
+ const dispatchToEntity = dispatchTo ? await fetchEntity(tx.getRepository(entities_1.Organization), dispatchTo.id) : null;
20
+ // Calculate total tonnage released
21
+ const totalTonnageRelease = dailyDispatchDetails.reduce((sum, detail) => sum + detail.collectedRampWeight, 0);
22
+ // Create daily dispatch record
23
+ const newDailyDispatch = await createDailyDispatch({
24
+ domain,
25
+ transport: transportEntity,
26
+ driver: driverEntity,
27
+ dispatchTo: dispatchToEntity,
28
+ totalTonnageRelease,
29
+ chitNo,
30
+ percentage,
31
+ dispatchAt,
32
+ user,
33
+ tx
18
34
  });
35
+ // Create daily dispatch details
36
+ const createdDetails = await addDailyDispatchDetail(domain, newDailyDispatch, dailyDispatchDetails, user, tx);
37
+ // Generate transaction history and ramp block histories
38
+ await generateDispatchTransaction(domain, newDailyDispatch, createdDetails, user, tx);
39
+ return newDailyDispatch;
19
40
  }
20
- if (dailyDispatch === null || dailyDispatch === void 0 ? void 0 : dailyDispatch.transport) {
21
- transport = await tx.getRepository(entities_1.Truck).findOne({
22
- where: { id: dailyDispatch.transport.id }
23
- });
24
- }
25
- if (dailyDispatch === null || dailyDispatch === void 0 ? void 0 : dailyDispatch.dispatchTo) {
26
- dispatchTo = await tx.getRepository(entities_1.Organization).findOne({
27
- where: { id: dailyDispatch.dispatchTo.id }
28
- });
41
+ catch (error) {
42
+ console.error('Error generating daily dispatch:', error);
43
+ throw new Error('Failed to generate daily dispatch.');
29
44
  }
30
- const totalTonnageRelease = dailyDispatchDetails.reduce(function (prev, cur) {
31
- return prev + cur.collectedRampWeight;
32
- }, 0);
33
- // 1. Create daily dispatchment
34
- let newDailyDispatch = new entities_1.DailyDispatch();
35
- newDailyDispatch.name = utils_1.NoGenerator.dailyDispatch();
36
- newDailyDispatch.domain = domain;
37
- newDailyDispatch.transport = transport;
38
- newDailyDispatch.transportNo = transport.name;
39
- newDailyDispatch.driver = driver;
40
- newDailyDispatch.driverIdentification = (driver === null || driver === void 0 ? void 0 : driver.idNumber) ? driver.idNumber : null;
41
- newDailyDispatch.externalDriver = (driver === null || driver === void 0 ? void 0 : driver.name) ? driver === null || driver === void 0 ? void 0 : driver.name : null;
42
- newDailyDispatch.totalTonnageRelease = totalTonnageRelease;
43
- newDailyDispatch.chitNo = dailyDispatch === null || dailyDispatch === void 0 ? void 0 : dailyDispatch.chitNo;
44
- newDailyDispatch.percentage = dailyDispatch === null || dailyDispatch === void 0 ? void 0 : dailyDispatch.percentage;
45
- newDailyDispatch.dispatchTo = dispatchTo;
46
- newDailyDispatch.dispatchDate = dailyDispatch.dispatchAt.split('T')[0];
47
- newDailyDispatch.dispatchAt = dailyDispatch.dispatchAt;
48
- newDailyDispatch.status = constants_1.RECORD_STATUS.STORED;
49
- newDailyDispatch.creator = user;
50
- newDailyDispatch = await tx.getRepository(entities_1.DailyDispatch).save(newDailyDispatch);
51
- // 2. Create daily dispatch detail
52
- dailyDispatchDetails = await addDailyDispatchDetail(domain, newDailyDispatch, dailyDispatchDetails.map((record) => {
53
- return Object.assign({}, record);
54
- }), user, tx);
55
- await generateDispatchTransaction(domain, newDailyDispatch, dailyDispatchDetails, user, tx);
56
- return newDailyDispatch;
57
45
  }
58
46
  };
59
- async function addDailyDispatchDetail(domain, newDailyDispatch, dailyDispatchDetails, user, tx) {
60
- const rampRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(entities_1.Ramp)) || (0, typeorm_1.getRepository)(entities_1.Ramp);
61
- const dailyDispatchDetailRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(entities_1.DailyDispatchDetail)) || (0, typeorm_1.getRepository)(entities_1.DailyDispatchDetail);
62
- dailyDispatchDetails = await Promise.all(dailyDispatchDetails.map(async (dailyDispatchDetail) => {
63
- return Object.assign(Object.assign({}, dailyDispatchDetail), { domain, name: utils_1.NoGenerator.dailyDispatchDetail(), ramp: await rampRepo.findOne({ id: dailyDispatchDetail.ramp.id }), dailyDispatch: newDailyDispatch, creator: user, updater: user });
47
+ // Helper function to fetch an entity by ID
48
+ async function fetchEntity(repository, id) {
49
+ const entity = await repository.findOne({ where: { id } });
50
+ if (!entity) {
51
+ throw new Error(`Entity with ID ${id} not found.`);
52
+ }
53
+ return entity;
54
+ }
55
+ // Helper function to create a daily dispatch record
56
+ async function createDailyDispatch({ domain, transport, driver, dispatchTo, totalTonnageRelease, chitNo, percentage, dispatchAt, user, tx }) {
57
+ const dailyDispatchRepo = tx.getRepository(entities_1.DailyDispatch);
58
+ // Convert dispatchAt to a string if it's a Date object
59
+ const dispatchDate = typeof dispatchAt === 'string' ? dispatchAt.split('T')[0] : dispatchAt.toISOString().split('T')[0];
60
+ const newDailyDispatch = dailyDispatchRepo.create({
61
+ name: utils_1.NoGenerator.dailyDispatch(),
62
+ domain,
63
+ transport,
64
+ transportNo: (transport === null || transport === void 0 ? void 0 : transport.name) || null,
65
+ driver,
66
+ driverIdentification: (driver === null || driver === void 0 ? void 0 : driver.idNumber) || null,
67
+ externalDriver: (driver === null || driver === void 0 ? void 0 : driver.name) || null,
68
+ totalTonnageRelease,
69
+ chitNo,
70
+ percentage,
71
+ dispatchTo,
72
+ dispatchDate,
73
+ dispatchAt: typeof dispatchAt === 'string' ? dispatchAt : dispatchAt.toISOString(),
74
+ status: constants_1.RECORD_STATUS.STORED,
75
+ creator: user
76
+ });
77
+ return await dailyDispatchRepo.save(newDailyDispatch);
78
+ }
79
+ // Helper function to add daily dispatch details
80
+ async function addDailyDispatchDetail(domain, dailyDispatch, details, user, tx) {
81
+ const rampRepo = tx.getRepository(entities_1.Ramp);
82
+ const detailRepo = tx.getRepository(entities_1.DailyDispatchDetail);
83
+ // Extract unique ramp IDs from details
84
+ // const uniqueRampIds = new Set(details.map(detail => detail.ramp.id))
85
+ // Validate opening quantities for all unique ramps
86
+ // for (const rampId of uniqueRampIds) {
87
+ // const ramp = await fetchEntity(rampRepo, rampId)
88
+ // await validateOpeningQuantities(domain, ramp, tx)
89
+ // }
90
+ // Create and save daily dispatch details
91
+ const createdDetails = await Promise.all(details.map(async (detail) => {
92
+ const ramp = await fetchEntity(rampRepo, detail.ramp.id);
93
+ return detailRepo.create(Object.assign(Object.assign({}, detail), { domain, name: utils_1.NoGenerator.dailyDispatchDetail(), ramp,
94
+ dailyDispatch, creator: user, updater: user }));
64
95
  }));
65
- return await dailyDispatchDetailRepo.save(dailyDispatchDetails);
96
+ return await detailRepo.save(createdDetails);
66
97
  }
67
- exports.addDailyDispatchDetail = addDailyDispatchDetail;
68
- async function generateDispatchTransaction(domain, newDailyDispatch, dailyDispatchDetails, user, tx) {
69
- const blockRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(entities_1.Block)) || (0, typeorm_1.getRepository)(entities_1.Block);
70
- for (let dailyDispatch of dailyDispatchDetails) {
71
- const dispatchedTonnage = dailyDispatch.collectedRampWeight;
72
- const dispatchDate = newDailyDispatch.dispatchAt.toString().split('T')[0];
73
- const ramp = dailyDispatch.ramp;
74
- await (0, utils_1.generateTransactionHistory)(null, domain, dailyDispatch.ramp, newDailyDispatch.id, newDailyDispatch.name, constants_1.TRANSACTION_TYPE.DISPATCHMENT, dispatchDate, 0, -dispatchedTonnage, user, tx);
75
- let rampBlockHistory = await tx.query(`
76
- SELECT * FROM (
77
- SELECT *, ROW_NUMBER () OVER (PARTITION BY ramp_id, block_id ORDER BY transaction_date desc, transaction_type) AS rn FROM ramp_block_histories
78
- WHERE ramp_id =$1 AND transaction_date <= $2
79
- ) foo WHERE rn = 1
98
+ async function generateDispatchTransaction(domain, dailyDispatch, // Ensure this is passed correctly
99
+ details, user, tx) {
100
+ const blockRepo = tx.getRepository(entities_1.Block);
101
+ for (const detail of details) {
102
+ const dispatchedTonnage = detail.collectedRampWeight;
103
+ const dispatchDate = typeof dailyDispatch.dispatchAt === 'string'
104
+ ? dailyDispatch.dispatchAt.split('T')[0]
105
+ : dailyDispatch.dispatchAt.toISOString().split('T')[0];
106
+ const ramp = detail.ramp;
107
+ // Generate transaction history
108
+ await (0, utils_1.generateTransactionHistory)(null, domain, ramp, dailyDispatch.id, dailyDispatch.name, constants_1.TRANSACTION_TYPE.DISPATCHMENT, dispatchDate, 0, -dispatchedTonnage, user, tx);
109
+ // Fetch the latest ramp block histories
110
+ const rampBlockHistories = await tx.query(`
111
+ SELECT * FROM (
112
+ SELECT *, ROW_NUMBER () OVER (PARTITION BY ramp_id, block_id ORDER BY transaction_date DESC, transaction_type) AS rn
113
+ FROM ramp_block_histories
114
+ WHERE ramp_id = $1 AND transaction_date <= $2
115
+ ) foo WHERE rn = 1
80
116
  `, [ramp.id, dispatchDate]);
81
- let totalRampWeight = rampBlockHistory.reduce((total, currentValue) => {
82
- total += currentValue.previous_weight + currentValue.weight;
83
- return total;
84
- }, 0);
85
- for (let index = 0; index < rampBlockHistory.length; index++) {
86
- const dt2 = rampBlockHistory[index];
87
- const block = await blockRepo.findOne({ id: dt2.block_id });
88
- let currentRampBlockWeight = dt2.previous_weight + dt2.weight;
89
- let percentage = parseFloat((currentRampBlockWeight / totalRampWeight).toFixed(4));
90
- let weight = (-dispatchedTonnage * percentage).toFixed(4);
91
- // // insert into ramp_block_histories (id,transaction_type, creator_id, updater_id, transaction_date, created_at, updated_at, weight, domain_id, block_id, ramp_id)
92
- // let processedData = await tx.query(
93
- // `
94
- // insert into ramp_block_histories (id, seq, transaction_type, creator_id, updater_id, transaction_date, created_at, updated_at, domain_id, ramp_id, weight, previous_weight, current_weight, block_id, daily_dispatch_id)
95
- // SELECT uuid_generate_v4() AS id, (select seq from ramp_block_histories where ramp_id = '${ramp.id}' and domain_id = '${domain.id}' order by seq desc limit 1) + 1,'DISPATCH' AS transaction_type,
96
- // '0933baea-e099-494b-9791-3dfe805731f0' AS creator_id, '0933baea-e099-494b-9791-3dfe805731f0' AS updater_id,
97
- // $1 AS transaction_date, $2 AS created_at, $3 AS updated_at,
98
- // $4 AS domain_id, $5 AS ramp_id,
99
- // $6 AS weight,
100
- // $7 AS previous_weight,
101
- // $8 AS current_weight,
102
- // $9 AS block_id,
103
- // $10 AS daily_dispatch_id
104
- // `,
105
- // [
106
- // dispatchDate,
107
- // dt2.created_at,
108
- // dt2.updated_at,
109
- // domain.id,
110
- // ramp.id,
111
- // parseFloat(weight),
112
- // parseFloat(currentRampBlockWeight),
113
- // parseFloat(currentRampBlockWeight) + parseFloat(weight),
114
- // dt2.block_id,
115
- // newDailyDispatch.id
116
- // ]
117
- // )
118
- await (0, utils_1.generateRampBlockHistories)(block, domain, ramp, 'DISPATCH', dispatchDate, parseFloat(weight), user, null, newDailyDispatch, tx);
119
- // await txMgr.query(`
120
- // SELECT * FROM (
121
- // SELECT *, ROW_NUMBER () OVER (PARTITION BY ramp_id, block_id ORDER BY transaction_date desc) AS rn FROM ramp_block_histories
122
- // WHERE ramp_id =$1 AND transaction_date <= $2
123
- // ) foo WHERE rn = 1
124
- // `, [dt.ramp_id, dt.transaction_date]
125
- // )
126
- let x = dt2;
117
+ // Calculate total ramp weight
118
+ const totalRampWeight = rampBlockHistories.reduce((total, history) => total + history.previous_weight + history.weight, 0);
119
+ // Distribute dispatched tonnage across blocks
120
+ for (const history of rampBlockHistories) {
121
+ const block = await fetchEntity(blockRepo, history.block_id);
122
+ const currentRampBlockWeight = history.previous_weight + history.weight;
123
+ const percentage = parseFloat((currentRampBlockWeight / totalRampWeight).toFixed(4));
124
+ const weight = parseFloat((-dispatchedTonnage * percentage).toFixed(4));
125
+ await (0, utils_1.generateRampBlockHistories)(block, domain, ramp, 'DISPATCH', dispatchDate, weight, user, null, dailyDispatch, // Pass dailyDispatch object
126
+ tx);
127
127
  }
128
- let x = rampBlockHistory;
129
128
  }
130
129
  }
131
- exports.generateDispatchTransaction = generateDispatchTransaction;
130
+ // async function validateOpeningQuantities(domain: Domain, ramp: Ramp, tx: EntityManager): Promise<void> {
131
+ // const rampBlockHistoryRepo = tx.getRepository(RampBlockHistory)
132
+ // const blocks = await tx.getRepository(Block).find({ where: { ramp } })
133
+ // for (const block of blocks) {
134
+ // const history = await rampBlockHistoryRepo.findOne({
135
+ // where: { domain, ramp, block, transactionType: 'OPENING_QUANTITY' }
136
+ // })
137
+ // if (!history) {
138
+ // throw new Error(
139
+ // `No opening quantity defined for block ${block.id} in ramp ${ramp.id}. Please set an opening quantity before creating dispatch records.`
140
+ // )
141
+ // }
142
+ // }
143
+ // }
132
144
  //# sourceMappingURL=generate-daily-dispatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-daily-dispatch.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-daily-dispatch.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/daily-dispatch/generate-daily-dispatch.ts"],"names":[],"mappings":"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"}
@@ -8,16 +8,65 @@ exports.updateDailyDispatch = {
8
8
  const repository = tx.getRepository(entities_1.DailyDispatch);
9
9
  const dailyDispatch = await repository.findOne({
10
10
  where: { domain, name },
11
- relations: ['dailyDispatchDetails']
11
+ relations: ['dailyDispatchDetails', 'dailyDispatchDetails.ramp']
12
12
  });
13
+ if (!dailyDispatch) {
14
+ throw new Error('Daily dispatch record not found.');
15
+ }
16
+ // Step 1: Update daily dispatch details
13
17
  let foundDailyDispatchDetails = dailyDispatch.dailyDispatchDetails;
14
18
  foundDailyDispatchDetails = foundDailyDispatchDetails.map(record => {
15
19
  const matchedDispatchDetail = dailyDispatchDetails.find(dispatchDetail => dispatchDetail.name === record.name);
16
20
  return Object.assign(Object.assign(Object.assign({}, record), matchedDispatchDetail), { updater: user });
17
21
  });
18
22
  await tx.getRepository(entities_1.DailyDispatchDetail).save(foundDailyDispatchDetails);
19
- return await repository.save(Object.assign(Object.assign({}, dailyDispatch), { chitNo,
23
+ // Step 2: Update daily dispatch record
24
+ const updatedDailyDispatch = await repository.save(Object.assign(Object.assign({}, dailyDispatch), { chitNo,
20
25
  percentage, updater: user }));
26
+ // Step 3: Handle tonnage variance for ramp block histories
27
+ await handleTonnageVariance(domain, dailyDispatch, foundDailyDispatchDetails, user, tx);
28
+ return updatedDailyDispatch;
21
29
  }
22
30
  };
31
+ // Helper function to handle tonnage variance
32
+ async function handleTonnageVariance(domain, dailyDispatch, dailyDispatchDetails, user, tx) {
33
+ const rampBlockHistoryRepo = tx.getRepository(entities_1.RampBlockHistory);
34
+ for (const detail of dailyDispatchDetails) {
35
+ const { collectedRampWeight, adjustedWeight } = detail;
36
+ // Calculate the variance
37
+ const variance = adjustedWeight - collectedRampWeight;
38
+ if (variance === 0) {
39
+ continue; // No variance, skip adjustment
40
+ }
41
+ // Fetch the original ramp block histories for this dispatch detail
42
+ const rampBlockHistories = await rampBlockHistoryRepo.find({
43
+ where: {
44
+ domain,
45
+ dailyDispatch: dailyDispatch.id,
46
+ ramp: detail.ramp,
47
+ transactionType: 'DISPATCH'
48
+ },
49
+ relations: ['ramp', 'block']
50
+ });
51
+ // Adjust the ramp block histories based on the variance
52
+ for (const history of rampBlockHistories) {
53
+ // Calculate the proportional adjustment for this block
54
+ const blockAdjustment = parseFloat((variance * (history.weight / collectedRampWeight)).toFixed(4));
55
+ // Create a new ramp block history record to reflect the adjustment
56
+ await rampBlockHistoryRepo.save({
57
+ domain,
58
+ block: history.block,
59
+ ramp: history.ramp,
60
+ transactionType: 'TONNAGE_VARIANCE',
61
+ transactionDate: dailyDispatch.dispatchDate,
62
+ weight: blockAdjustment,
63
+ previousWeight: history.previousWeight,
64
+ currentWeight: parseFloat((history.previousWeight + blockAdjustment).toFixed(4)),
65
+ dailyDispatch,
66
+ creator: user,
67
+ updater: user
68
+ });
69
+ }
70
+ }
71
+ }
23
72
  //# sourceMappingURL=update-daily-dispatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-daily-dispatch.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/daily-dispatch/update-daily-dispatch.ts"],"names":[],"mappings":";;;AAKA,gDAAsE;AAEzD,QAAA,mBAAmB,GAAG;IACjC,KAAK,CAAC,mBAAmB,CAAC,CAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE,OAAY;QAChG,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,wBAAa,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;YACvB,SAAS,EAAE,CAAC,sBAAsB,CAAC;SACpC,CAAC,CAAA;QAEF,IAAI,yBAAyB,GAA0B,aAAa,CAAC,oBAAoB,CAAA;QAEzF,yBAAyB,GAAG,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjE,MAAM,qBAAqB,GAAQ,oBAAoB,CAAC,IAAI,CAC1D,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CACtD,CAAA;YAED,qDACK,MAAM,GACN,qBAAqB,KACxB,OAAO,EAAE,IAAI,IACd;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAmB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;QAE3E,OAAO,MAAM,UAAU,CAAC,IAAI,iCACvB,aAAa,KAChB,MAAM;YACN,UAAU,EACV,OAAO,EAAE,IAAI,IACb,CAAA;IACJ,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"update-daily-dispatch.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/daily-dispatch/update-daily-dispatch.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deleteDailyHarvest = void 0;
4
4
  const typeorm_1 = require("typeorm");
5
- const constants_1 = require("../../../constants");
6
5
  const entities_1 = require("../../../entities");
7
- const utils_1 = require("../../../utils");
8
6
  exports.deleteDailyHarvest = {
9
7
  async deleteDailyHarvest(_, { name }, context) {
10
8
  try {
@@ -24,12 +22,12 @@ exports.deleteDailyHarvest = {
24
22
  }, {
25
23
  deletedAt: new Date()
26
24
  });
27
- const foundPlantationInv = await tx.getRepository(entities_1.PlantationInventory).findOne({
28
- where: { domain, block: dailyHarvest.block, type: constants_1.INVENTORY_TYPE.FIELD_BUNCHES },
29
- relations: ['domain', 'block']
25
+ await tx.getRepository(entities_1.RecordTransaction).update({
26
+ domain,
27
+ refActionID: dailyHarvest.id
28
+ }, {
29
+ deletedAt: new Date()
30
30
  });
31
- await tx.getRepository(entities_1.PlantationInventory).save(Object.assign(Object.assign({}, foundPlantationInv), { totalBunches: foundPlantationInv.totalBunches - dailyHarvest.totalBunchHarvested, updater: user }));
32
- await (0, utils_1.generateTransactionHistory)(dailyHarvest.block, domain, null, dailyHarvest.id, dailyHarvest.name, constants_1.TRANSACTION_TYPE.HARVEST, dailyHarvest.harvestDate, -dailyHarvest.totalBunchHarvested, 0, user, tx);
33
31
  return true;
34
32
  }
35
33
  catch (error) {