@machinemetrics/mm-erp-sdk 0.8.0 → 0.9.0-beta.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 (112) hide show
  1. package/dist/index.d.ts +3 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/services/data-sync-service/data-sync-service.d.ts.map +1 -1
  6. package/dist/services/data-sync-service/data-sync-service.js +9 -0
  7. package/dist/services/data-sync-service/data-sync-service.js.map +1 -1
  8. package/dist/services/data-sync-service/jobs/from-erp.d.ts.map +1 -1
  9. package/dist/services/data-sync-service/jobs/from-erp.js +5 -4
  10. package/dist/services/data-sync-service/jobs/from-erp.js.map +1 -1
  11. package/dist/services/data-sync-service/jobs/to-erp.d.ts.map +1 -1
  12. package/dist/services/data-sync-service/jobs/to-erp.js +10 -1
  13. package/dist/services/data-sync-service/jobs/to-erp.js.map +1 -1
  14. package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts +30 -0
  15. package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts.map +1 -0
  16. package/dist/services/data-sync-service/nats-labor-ticket-listener.js +305 -0
  17. package/dist/services/data-sync-service/nats-labor-ticket-listener.js.map +1 -0
  18. package/dist/services/mm-api-service/company-info.d.ts +61 -0
  19. package/dist/services/mm-api-service/company-info.d.ts.map +1 -0
  20. package/dist/services/mm-api-service/company-info.js +184 -0
  21. package/dist/services/mm-api-service/company-info.js.map +1 -0
  22. package/dist/services/mm-api-service/index.d.ts +8 -3
  23. package/dist/services/mm-api-service/index.d.ts.map +1 -1
  24. package/dist/services/mm-api-service/index.js +5 -0
  25. package/dist/services/mm-api-service/index.js.map +1 -1
  26. package/dist/services/mm-api-service/mm-api-service.d.ts +6 -0
  27. package/dist/services/mm-api-service/mm-api-service.d.ts.map +1 -1
  28. package/dist/services/mm-api-service/mm-api-service.js +14 -2
  29. package/dist/services/mm-api-service/mm-api-service.js.map +1 -1
  30. package/dist/services/mm-api-service/types/custom-fields.d.ts +7 -0
  31. package/dist/services/mm-api-service/types/custom-fields.d.ts.map +1 -1
  32. package/dist/services/mm-api-service/types/custom-fields.js +10 -0
  33. package/dist/services/mm-api-service/types/custom-fields.js.map +1 -1
  34. package/dist/services/mm-api-service/types/entity-transformer.d.ts.map +1 -1
  35. package/dist/services/mm-api-service/types/entity-transformer.js +6 -1
  36. package/dist/services/mm-api-service/types/entity-transformer.js.map +1 -1
  37. package/dist/services/mm-api-service/types/receive-types.d.ts +3 -0
  38. package/dist/services/mm-api-service/types/receive-types.d.ts.map +1 -1
  39. package/dist/services/mm-api-service/types/receive-types.js +1 -0
  40. package/dist/services/mm-api-service/types/receive-types.js.map +1 -1
  41. package/dist/services/mm-api-service/types/send-types.d.ts +43 -27
  42. package/dist/services/mm-api-service/types/send-types.d.ts.map +1 -1
  43. package/dist/services/mm-api-service/types/send-types.js +32 -25
  44. package/dist/services/mm-api-service/types/send-types.js.map +1 -1
  45. package/dist/services/nats-service/nats-service.d.ts +114 -0
  46. package/dist/services/nats-service/nats-service.d.ts.map +1 -0
  47. package/dist/services/nats-service/nats-service.js +244 -0
  48. package/dist/services/nats-service/nats-service.js.map +1 -0
  49. package/dist/services/nats-service/test-nats-subscriber.d.ts +6 -0
  50. package/dist/services/nats-service/test-nats-subscriber.d.ts.map +1 -0
  51. package/dist/services/nats-service/test-nats-subscriber.js +79 -0
  52. package/dist/services/nats-service/test-nats-subscriber.js.map +1 -0
  53. package/dist/services/reporting-service/logger.d.ts.map +1 -1
  54. package/dist/services/reporting-service/logger.js +30 -1
  55. package/dist/services/reporting-service/logger.js.map +1 -1
  56. package/dist/utils/application-initializer.d.ts.map +1 -1
  57. package/dist/utils/application-initializer.js +4 -3
  58. package/dist/utils/application-initializer.js.map +1 -1
  59. package/dist/utils/erp-timezone-utils.js +1 -1
  60. package/dist/utils/erp-timezone-utils.js.map +1 -1
  61. package/dist/utils/error-formatter.d.ts +19 -0
  62. package/dist/utils/error-formatter.d.ts.map +1 -0
  63. package/dist/utils/error-formatter.js +184 -0
  64. package/dist/utils/error-formatter.js.map +1 -0
  65. package/dist/utils/iana-timezone-offset.d.ts +6 -0
  66. package/dist/utils/iana-timezone-offset.d.ts.map +1 -0
  67. package/dist/utils/iana-timezone-offset.js +10 -0
  68. package/dist/utils/iana-timezone-offset.js.map +1 -0
  69. package/dist/utils/index.d.ts +6 -1
  70. package/dist/utils/index.d.ts.map +1 -1
  71. package/dist/utils/index.js +5 -1
  72. package/dist/utils/index.js.map +1 -1
  73. package/dist/utils/local-data-store/jobs-shared-data.d.ts +9 -22
  74. package/dist/utils/local-data-store/jobs-shared-data.d.ts.map +1 -1
  75. package/dist/utils/local-data-store/jobs-shared-data.js +29 -36
  76. package/dist/utils/local-data-store/jobs-shared-data.js.map +1 -1
  77. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts.map +1 -1
  78. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js +1 -0
  79. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js.map +1 -1
  80. package/dist/utils/time-utils.d.ts +5 -9
  81. package/dist/utils/time-utils.d.ts.map +1 -1
  82. package/dist/utils/time-utils.js +7 -39
  83. package/dist/utils/time-utils.js.map +1 -1
  84. package/dist/utils/timezone.d.ts +1 -0
  85. package/dist/utils/timezone.d.ts.map +1 -1
  86. package/dist/utils/timezone.js +6 -35
  87. package/dist/utils/timezone.js.map +1 -1
  88. package/package.json +6 -3
  89. package/src/index.ts +6 -0
  90. package/src/services/data-sync-service/data-sync-service.ts +10 -0
  91. package/src/services/data-sync-service/jobs/from-erp.ts +5 -3
  92. package/src/services/data-sync-service/jobs/to-erp.ts +11 -2
  93. package/src/services/data-sync-service/nats-labor-ticket-listener.ts +362 -0
  94. package/src/services/mm-api-service/company-info.ts +228 -0
  95. package/src/services/mm-api-service/index.ts +32 -3
  96. package/src/services/mm-api-service/mm-api-service.ts +19 -2
  97. package/src/services/mm-api-service/types/custom-fields.ts +13 -0
  98. package/src/services/mm-api-service/types/entity-transformer.ts +8 -2
  99. package/src/services/mm-api-service/types/receive-types.ts +1 -0
  100. package/src/services/mm-api-service/types/send-types.ts +84 -45
  101. package/src/services/nats-service/nats-service.ts +351 -0
  102. package/src/services/nats-service/test-nats-subscriber.ts +96 -0
  103. package/src/services/reporting-service/logger.ts +39 -2
  104. package/src/utils/application-initializer.ts +4 -3
  105. package/src/utils/erp-timezone-utils.ts +1 -1
  106. package/src/utils/error-formatter.ts +205 -0
  107. package/src/utils/iana-timezone-offset.ts +14 -0
  108. package/src/utils/index.ts +10 -1
  109. package/src/utils/local-data-store/jobs-shared-data.ts +36 -40
  110. package/src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts +10 -8
  111. package/src/utils/time-utils.ts +6 -58
  112. package/src/utils/timezone.ts +6 -44
package/dist/index.d.ts CHANGED
@@ -16,7 +16,8 @@ export { MMReceiveWorkOrder } from "./services/mm-api-service/index.js";
16
16
  export type { MMReceiveLaborTicketReason, MMReceiveLaborTicketWorkOrderOperation, IToRESTApiObject, IToFullApiObject, } from "./services/mm-api-service/index.js";
17
17
  export { MMSendPerson, MMSendResource, MMSendPart, MMSendPartOperation, MMSendWorkOrder, MMSendWorkOrderOperation, MMSendReason, MMSendLaborTicket, } from "./services/mm-api-service/index.js";
18
18
  export type { MMSendWorkOrderBatch } from "./services/mm-api-service/index.js";
19
- export { getUniqueRows, removeExtraneousFields, getPayloadWithoutIDField, trimObjectValues, cleanupNumbers, addNewFieldFromExternalSource, addNewFieldFromLookupField, formatDateWithTZOffset, toISOWithOffset, applyTimezoneOffsetsToFields, calculateTimeDifferenceInHours, getSecondsOfDay, convertToLocalTime, convertUtcDateTimeToErpLocal, convertErpLocalDateTimeToUtc, getERPTimezone, getErrorType, } from "./utils/index.js";
19
+ export { getUniqueRows, removeExtraneousFields, getPayloadWithoutIDField, trimObjectValues, cleanupNumbers, addNewFieldFromExternalSource, addNewFieldFromLookupField, formatDateWithTZOffset, toISOWithOffset, applyTimezoneOffsetsToFields, calculateTimeDifferenceInHours, getSecondsOfDay, convertToLocalTime, convertUtcDateTimeToErpLocal, convertErpLocalDateTimeToUtc, getERPTimezone, getErrorType, formatError, formatErrorForLogging, } from "./utils/index.js";
20
+ export type { FormattedError } from "./utils/index.js";
20
21
  export { getInitialLoadComplete, setInitialLoadComplete } from "./utils/index.js";
21
22
  export { HTTPClientFactory } from "./utils/http-client.js";
22
23
  export { HTTPError } from "./utils/http-client.js";
@@ -25,7 +26,7 @@ export { ApplicationInitializer } from "./utils/application-initializer.js";
25
26
  export { runDataSyncService } from "./services/data-sync-service/index.js";
26
27
  export { logger } from "./services/reporting-service/index.js";
27
28
  export type { IERPLaborTicketHandler } from "./types/erp-connector.js";
28
- export { StandardProcessDrivers, getCachedTimezoneOffset, getCachedTimezoneName, } from "./utils/index.js";
29
+ export { StandardProcessDrivers, getCachedCompanyInfo, getCachedCompanyId, getCachedCompanyLocationRef, getCachedTimezoneOffset, getCachedTimezoneName, } from "./utils/index.js";
29
30
  export type { WriteEntitiesToMMResult } from "./utils/index.js";
30
31
  export { MMBatchValidationError } from "./utils/index.js";
31
32
  export type { APIResponse } from "./services/erp-api-services/types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ export { MMReceiveLaborTicket } from "./services/mm-api-service/index.js";
13
13
  export { MMReceiveWorkOrder } from "./services/mm-api-service/index.js";
14
14
  export { MMSendPerson, MMSendResource, MMSendPart, MMSendPartOperation, MMSendWorkOrder, MMSendWorkOrderOperation, MMSendReason, MMSendLaborTicket, } from "./services/mm-api-service/index.js";
15
15
  // Utility functions that are safe for client use
16
- export { getUniqueRows, removeExtraneousFields, getPayloadWithoutIDField, trimObjectValues, cleanupNumbers, addNewFieldFromExternalSource, addNewFieldFromLookupField, formatDateWithTZOffset, toISOWithOffset, applyTimezoneOffsetsToFields, calculateTimeDifferenceInHours, getSecondsOfDay, convertToLocalTime, convertUtcDateTimeToErpLocal, convertErpLocalDateTimeToUtc, getERPTimezone, getErrorType, } from "./utils/index.js";
16
+ export { getUniqueRows, removeExtraneousFields, getPayloadWithoutIDField, trimObjectValues, cleanupNumbers, addNewFieldFromExternalSource, addNewFieldFromLookupField, formatDateWithTZOffset, toISOWithOffset, applyTimezoneOffsetsToFields, calculateTimeDifferenceInHours, getSecondsOfDay, convertToLocalTime, convertUtcDateTimeToErpLocal, convertErpLocalDateTimeToUtc, getERPTimezone, getErrorType, formatError, formatErrorForLogging, } from "./utils/index.js";
17
17
  // Local data store
18
18
  export { getInitialLoadComplete, setInitialLoadComplete } from "./utils/index.js";
19
19
  // HTTP client factory and types for custom API integrations
@@ -26,7 +26,7 @@ export { runDataSyncService } from "./services/data-sync-service/index.js";
26
26
  // Logging service
27
27
  export { logger } from "./services/reporting-service/index.js";
28
28
  // Process drivers and utilities
29
- export { StandardProcessDrivers, getCachedTimezoneOffset, getCachedTimezoneName, } from "./utils/index.js";
29
+ export { StandardProcessDrivers, getCachedCompanyInfo, getCachedCompanyId, getCachedCompanyLocationRef, getCachedTimezoneOffset, getCachedTimezoneName, } from "./utils/index.js";
30
30
  export { MMBatchValidationError } from "./utils/index.js";
31
31
  export { RestAPIService } from "./services/erp-api-services/rest/rest-api-service.js";
32
32
  export { ErrorHandler, GraphQLError } from "./services/erp-api-services/errors.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAYlD,2BAA2B;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAG7F,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAQxE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,YAAY,EACZ,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAI5C,iDAAiD;AACjD,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,4BAA4B,EAC5B,8BAA8B,EAC9B,eAAe,EACf,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,mBAAmB;AACnB,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAElF,4DAA4D;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAOnD,uCAAuC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,oBAAoB;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E,kBAAkB;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAK/D,gCAAgC;AAChC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAKnF,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AAGxF,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAEtF,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,uDAAuD,CAAC;AAE/D,sBAAsB;AACtB,OAAO,EACL,gBAAgB,EAChB,eAAe,GAChB,MAAM,4CAA4C,CAAC;AAGpD,4BAA4B;AAC5B,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAG9C,2BAA2B;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAG9F,gBAAgB;AAChB,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE9D,uBAAuB;AACvB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,QAAQ,GAGT,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAYlD,2BAA2B;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAG7F,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAQxE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,YAAY,EACZ,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAI5C,iDAAiD;AACjD,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,4BAA4B,EAC5B,8BAA8B,EAC9B,eAAe,EACf,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,YAAY,EACZ,WAAW,EACX,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,mBAAmB;AACnB,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAElF,4DAA4D;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAOnD,uCAAuC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,oBAAoB;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E,kBAAkB;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAK/D,gCAAgC;AAChC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAKnF,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AAGxF,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAEtF,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,uDAAuD,CAAC;AAE/D,sBAAsB;AACtB,OAAO,EACL,gBAAgB,EAChB,eAAe,GAChB,MAAM,4CAA4C,CAAC;AAGpD,4BAA4B;AAC5B,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAG9C,2BAA2B;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAG9F,gBAAgB;AAChB,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE9D,uBAAuB;AACvB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,QAAQ,GAGT,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-sync-service.d.ts","sourceRoot":"","sources":["../../../src/services/data-sync-service/data-sync-service.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,kBAAkB,GAAU,eAAe,MAAM,kBAmG7D,CAAC"}
1
+ {"version":3,"file":"data-sync-service.d.ts","sourceRoot":"","sources":["../../../src/services/data-sync-service/data-sync-service.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,kBAAkB,GAAU,eAAe,MAAM,kBA2G7D,CAAC"}
@@ -4,10 +4,19 @@ import path from "path";
4
4
  import { fileURLToPath } from "url";
5
5
  import { CoreConfiguration } from "./configuration-manager.js";
6
6
  import { sdkLogger as logger } from "../reporting-service/logger.js";
7
+ import { createConnectorFromPath } from "../../utils/connector-factory.js";
8
+ import { NatsLaborTicketListener } from "./nats-labor-ticket-listener.js";
7
9
  const GracefulClass = Graceful;
8
10
  export const runDataSyncService = async (connectorPath) => {
9
11
  const config = CoreConfiguration.inst();
10
12
  try {
13
+ // Create connector instance
14
+ const connector = await createConnectorFromPath(connectorPath);
15
+ // Start NATS listener if enabled
16
+ if (process.env.NATS_ENABLED === "true") {
17
+ const natsListener = new NatsLaborTicketListener(connector);
18
+ await natsListener.start();
19
+ }
11
20
  // Find the SDK's node_modules directory and jobs path using ES module import
12
21
  const currentFileUrl = import.meta.url;
13
22
  const currentFilePath = fileURLToPath(currentFileUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"data-sync-service.js","sourceRoot":"","sources":["../../../src/services/data-sync-service/data-sync-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-sync-service.js","sourceRoot":"","sources":["../../../src/services/data-sync-service/data-sync-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"from-erp.d.ts","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/from-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAUvB,QAAA,MAAM,IAAI,qBA2BT,CAAC;AAoBF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"from-erp.d.ts","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/from-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAUvB,QAAA,MAAM,IAAI,qBA6BT,CAAC;AAoBF,eAAe,IAAI,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import "dotenv/config";
2
2
  import { sdkLogger as logger } from "../../../services/reporting-service/logger.js";
3
- import { SQLiteCoordinator } from "../../sqlite-service/index.js";
4
3
  import { createConnectorFromPath } from "../../../utils/connector-factory.js";
5
4
  import { getEnvString } from "../../../utils/env.js";
6
5
  import { summarizeError } from "../../../utils/error-utils.js";
@@ -16,13 +15,15 @@ const main = async () => {
16
15
  }
17
16
  // Create a new connector instance for this job
18
17
  const connector = await createConnectorFromPath(connectorPath);
19
- await SQLiteCoordinator.executeWithLock("from-erp", async () => {
20
- await connector.syncFromERP();
21
- });
18
+ // No lock needed: from-erp syncs ERP→MM which doesn't conflict with
19
+ // to-erp/NATS that sync MM→ERP. Removing the lock prevents blocking
20
+ // real-time NATS labor ticket requests during long sync operations.
21
+ await connector.syncFromERP();
22
22
  await connector.syncFromERPCompleted();
23
23
  logger.info("==========Completed from-erp job cycle==========");
24
24
  }
25
25
  catch (error) {
26
+ // Logger now handles circular references and error objects safely
26
27
  logger.error('Worker for job "from-erp" had an error', {
27
28
  error: summarizeError(error),
28
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"from-erp.js","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/from-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,kDAAkD;AAClD,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAE/D,uDAAuD;QACvD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAEjD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,+CAA+C;QAC/C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAE/D,MAAM,iBAAiB,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,oBAAoB,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;YACrD,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;SAC7B,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC,CAAC,yCAAyC;IACxD,CAAC;AACH,CAAC,CAAC;AAEF,6DAA6D;AAC7D,kFAAkF;AAClF,qEAAqE;AACrE,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5D,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,UAAU,eAAe,EAAE,CAAC,CAAC,CAAE,uCAAuC;IACtE,WAAW,eAAe,EAAE,CAAC,CAAE,gDAAgD;AACjF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC;AAEjD,IAAI,YAAY,EAAE,CAAC;IACjB,sDAAsD;IACtD,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,6CAA6C;IACrE,CAAC;AACH,CAAC;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"from-erp.js","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/from-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,kDAAkD;AAClD,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAE/D,uDAAuD;QACvD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAEjD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,+CAA+C;QAC/C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAE/D,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE;QACpE,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;QAE9B,MAAM,SAAS,CAAC,oBAAoB,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kEAAkE;QAClE,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;YACrD,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;SAC7B,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC,CAAC,yCAAyC;IACxD,CAAC;AACH,CAAC,CAAC;AAEF,6DAA6D;AAC7D,kFAAkF;AAClF,qEAAqE;AACrE,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5D,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,UAAU,eAAe,EAAE,CAAC,CAAC,CAAE,uCAAuC;IACtE,WAAW,eAAe,EAAE,CAAC,CAAE,gDAAgD;AACjF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC;AAEjD,IAAI,YAAY,EAAE,CAAC;IACjB,sDAAsD;IACtD,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,6CAA6C;IACrE,CAAC;AACH,CAAC;AAED,eAAe,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"to-erp.d.ts","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/to-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAsBvB,QAAA,MAAM,IAAI,qBA+BT,CAAC;AAoBF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"to-erp.d.ts","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/to-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAsBvB,QAAA,MAAM,IAAI,qBAwCT,CAAC;AAoBF,eAAe,IAAI,CAAC"}
@@ -30,7 +30,16 @@ const main = async () => {
30
30
  await ensureLocalDbMigrated();
31
31
  // Create a new connector instance for this job
32
32
  const connector = await createConnectorFromPath(connectorPath);
33
- await connector.syncToERP();
33
+ // Only use lock if NATS is enabled (to prevent concurrent processing)
34
+ // Otherwise, no lock needed - just run directly
35
+ if (process.env.NATS_ENABLED === "true") {
36
+ await SQLiteCoordinator.executeWithLock("to-erp", async () => {
37
+ await connector.syncToERP();
38
+ });
39
+ }
40
+ else {
41
+ await connector.syncToERP();
42
+ }
34
43
  await connector.syncToERPCompleted();
35
44
  });
36
45
  logger.info("==========Completed to-erp job cycle==========");
@@ -1 +1 @@
1
- {"version":3,"file":"to-erp.js","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/to-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,kDAAkD;AAClD,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,qBAAqB,GAAG,KAAK,IAAmB,EAAE;IACtD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAE7D,uDAAuD;QACvD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAEjD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,iBAAiB,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC3D,kFAAkF;YAClF,MAAM,qBAAqB,EAAE,CAAC;YAE9B,+CAA+C;YAC/C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,CAAC;YAE/D,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,SAAS,CAAC,kBAAkB,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;YACnD,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;YAC5B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;SAC1C,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC,CAAC,yCAAyC;IACxD,CAAC;AACH,CAAC,CAAC;AAEF,6DAA6D;AAC7D,kFAAkF;AAClF,qEAAqE;AACrE,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5D,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,UAAU,eAAe,EAAE,CAAC,CAAC,CAAE,uCAAuC;IACtE,WAAW,eAAe,EAAE,CAAC,CAAE,gDAAgD;AACjF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC;AAEjD,IAAI,YAAY,EAAE,CAAC;IACjB,sDAAsD;IACtD,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,6CAA6C;IACrE,CAAC;AACH,CAAC;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"to-erp.js","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/to-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,kDAAkD;AAClD,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,qBAAqB,GAAG,KAAK,IAAmB,EAAE;IACtD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAE7D,uDAAuD;QACvD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAEjD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,iBAAiB,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC3D,kFAAkF;YAClF,MAAM,qBAAqB,EAAE,CAAC;YAE9B,+CAA+C;YAC/C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,CAAC;YAEjE,sEAAsE;YACtE,gDAAgD;YAChD,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACxC,MAAM,iBAAiB,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;oBAC3D,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;gBAC9B,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;YAC9B,CAAC;YAED,MAAM,SAAS,CAAC,kBAAkB,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;YACnD,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;YAC5B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;SAC1C,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC,CAAC,yCAAyC;IACxD,CAAC;AACH,CAAC,CAAC;AAEF,6DAA6D;AAC7D,kFAAkF;AAClF,qEAAqE;AACrE,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5D,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,UAAU,eAAe,EAAE,CAAC,CAAC,CAAE,uCAAuC;IACtE,WAAW,eAAe,EAAE,CAAC,CAAE,gDAAgD;AACjF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC;AAEjD,IAAI,YAAY,EAAE,CAAC;IACjB,sDAAsD;IACtD,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,6CAA6C;IACrE,CAAC;AACH,CAAC;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Manages NATS-based real-time labor ticket processing
3
+ */
4
+ export declare class NatsLaborTicketListener {
5
+ private connector;
6
+ private natsService?;
7
+ constructor(connector: any);
8
+ /**
9
+ * Start listening for labor ticket events via NATS
10
+ */
11
+ start(): Promise<void>;
12
+ /**
13
+ * Register health check handler - responds immediately to let Dashboard know connector is online
14
+ */
15
+ private registerHealthCheckHandler;
16
+ /**
17
+ * Register labor ticket processing handler
18
+ */
19
+ private registerLaborTicketHandler;
20
+ /**
21
+ * Process labor ticket in ERP and then create MM entities with ERP ID attached
22
+ */
23
+ private processLaborTicket;
24
+ /**
25
+ * Update checkpoint to prevent to-erp polling job from reprocessing this ticket
26
+ * Only updates if the new timestamp is later than the current checkpoint (prevents moving backwards)
27
+ */
28
+ private updateCheckpoint;
29
+ }
30
+ //# sourceMappingURL=nats-labor-ticket-listener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-labor-ticket-listener.d.ts","sourceRoot":"","sources":["../../../src/services/data-sync-service/nats-labor-ticket-listener.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAC,CAAc;gBAEtB,SAAS,EAAE,GAAG;IAI1B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC5B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAoBlC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA+HlC;;OAEG;YACW,kBAAkB;IA6FhC;;;OAGG;YACW,gBAAgB;CA0C/B"}
@@ -0,0 +1,305 @@
1
+ import logger from "../reporting-service/logger.js";
2
+ import { formatError } from "../../utils/error-formatter.js";
3
+ import { NatsService } from "../nats-service/nats-service.js";
4
+ import { MMApiClient, MMReceiveLaborTicket, getCachedCompanyInfo, } from "../mm-api-service/index.js";
5
+ import { SQLiteCoordinator } from "../sqlite-service/index.js";
6
+ /**
7
+ * Manages NATS-based real-time labor ticket processing
8
+ */
9
+ export class NatsLaborTicketListener {
10
+ connector;
11
+ natsService;
12
+ constructor(connector) {
13
+ this.connector = connector;
14
+ }
15
+ /**
16
+ * Start listening for labor ticket events via NATS
17
+ */
18
+ async start() {
19
+ try {
20
+ const companyInfo = getCachedCompanyInfo();
21
+ const erpType = this.connector.type || "unknown";
22
+ logger.info("Starting NATS listener for labor tickets", {
23
+ locationRef: companyInfo.locationRef,
24
+ companyId: companyInfo.companyId,
25
+ erpType,
26
+ servers: process.env.NATS_SERVERS || "nats://localhost:4222",
27
+ });
28
+ this.natsService = new NatsService({
29
+ servers: process.env.NATS_SERVERS || "nats://localhost:4222",
30
+ name: `${erpType}-connector`,
31
+ locationRef: companyInfo.locationRef,
32
+ erpType,
33
+ enabled: true,
34
+ reconnect: true,
35
+ maxReconnectAttempts: -1,
36
+ reconnectTimeWait: 2000,
37
+ });
38
+ // Register health check handler
39
+ this.registerHealthCheckHandler(companyInfo.locationRef, erpType);
40
+ // Register labor ticket handler
41
+ this.registerLaborTicketHandler(companyInfo.locationRef, erpType);
42
+ // Connect to NATS
43
+ await this.natsService.connect();
44
+ logger.info("NATS listener started successfully", {
45
+ subject: `mm.16.${companyInfo.locationRef}.labor-ticket.*`,
46
+ });
47
+ }
48
+ catch (error) {
49
+ logger.error("Failed to start NATS listener", { error });
50
+ // Don't throw - allow REST polling to continue
51
+ }
52
+ }
53
+ /**
54
+ * Register health check handler - responds immediately to let Dashboard know connector is online
55
+ */
56
+ registerHealthCheckHandler(locationRef, erpType) {
57
+ if (!this.natsService)
58
+ return;
59
+ this.natsService.registerHandler({
60
+ subject: `mm.16.${locationRef}.health`,
61
+ description: "Health check - responds immediately to indicate connector is online",
62
+ handler: {
63
+ handle: async () => {
64
+ logger.debug("Health check received, sending pong");
65
+ return {
66
+ status: "online",
67
+ timestamp: new Date().toISOString(),
68
+ locationRef,
69
+ erpType,
70
+ };
71
+ },
72
+ },
73
+ });
74
+ }
75
+ /**
76
+ * Register labor ticket processing handler
77
+ */
78
+ registerLaborTicketHandler(locationRef, erpType) {
79
+ if (!this.natsService)
80
+ return;
81
+ this.natsService.registerHandler({
82
+ subject: `mm.16.${locationRef}.labor-ticket.*`,
83
+ description: "Process labor tickets in real-time from NATS",
84
+ handler: {
85
+ handle: async ({ data }, subject) => {
86
+ const action = subject.split(".").pop();
87
+ const { actionPayload } = data;
88
+ const startTime = Date.now();
89
+ const { laborTicketRef } = actionPayload;
90
+ logger.info("Received labor ticket via NATS", {
91
+ action,
92
+ requestId: data.requestId,
93
+ laborTicketRef,
94
+ endBehavior: actionPayload.endBehavior,
95
+ });
96
+ // Use the same lock as to-erp job to prevent concurrent processing
97
+ return await SQLiteCoordinator.executeWithLock("to-erp", async () => {
98
+ try {
99
+ let laborTicketData;
100
+ // Extract endBehavior from actionPayload for inclusion in customFields
101
+ const endBehavior = actionPayload.endBehavior;
102
+ if (laborTicketRef) {
103
+ // Fetch the full labor ticket data using the laborTicketRef
104
+ const mmApiClient = new MMApiClient();
105
+ const laborTicket = await mmApiClient.fetchLaborTicketByRef(laborTicketRef);
106
+ logger.info("Fetched labor ticket data from MM API", {
107
+ laborTicketRef,
108
+ laborTicketId: laborTicket.laborTicketId,
109
+ });
110
+ // Merge changed fields from actionPayload to ensure we process the actual changes
111
+ // Merge customFields, including endBehavior if present and ticket is being closed
112
+ laborTicketData = {
113
+ ...laborTicket,
114
+ ...actionPayload,
115
+ customFields: {
116
+ ...laborTicket.customFields,
117
+ ...actionPayload.customFields,
118
+ ...(endBehavior && actionPayload.clockOut && { endBehavior }),
119
+ },
120
+ };
121
+ }
122
+ else {
123
+ // No laborTicketRef provided, use the actionPayload directly
124
+ logger.info("No laborTicketRef provided, using actionPayload directly", {
125
+ requestId: data.requestId,
126
+ });
127
+ // Merge endBehavior into customFields if present and ticket is being closed
128
+ laborTicketData = {
129
+ ...actionPayload,
130
+ customFields: {
131
+ ...actionPayload.customFields,
132
+ ...(endBehavior && actionPayload.clockOut && { endBehavior }),
133
+ },
134
+ };
135
+ }
136
+ const mergedLaborTicket = new MMReceiveLaborTicket(laborTicketData);
137
+ // Process labor ticket: ERP operation first, then create MM entities with ERP ID
138
+ const result = await this.processLaborTicket(mergedLaborTicket, action || "unknown");
139
+ // Update checkpoint to prevent to-erp polling job from reprocessing this ticket
140
+ await this.updateCheckpoint(erpType, result);
141
+ // Return response with full labor ticket data for immediate frontend state update
142
+ return {
143
+ status: "success",
144
+ requestId: data.requestId,
145
+ action,
146
+ timestamp: new Date().toISOString(),
147
+ processingTimeMs: Date.now() - startTime,
148
+ laborTicketRef: result.laborTicketRef,
149
+ laborTicket: result.laborTicket,
150
+ };
151
+ }
152
+ catch (error) {
153
+ // Check if error was already formatted in inner catch block
154
+ const formattedError = error?._formatted || formatError(error);
155
+ // Debug logging
156
+ logger.debug("Error details", {
157
+ hasFormatted: !!error?._formatted,
158
+ isAxiosError: error?.isAxiosError,
159
+ errorMessage: error?.message,
160
+ responseStatus: error?.response?.status,
161
+ responseData: error?.response?.data,
162
+ });
163
+ logger.error("Error handling labor ticket from NATS", {
164
+ error: formattedError.message,
165
+ code: formattedError.code,
166
+ requestId: data.requestId,
167
+ laborTicketRef,
168
+ });
169
+ return {
170
+ status: "error",
171
+ requestId: data.requestId,
172
+ action,
173
+ timestamp: new Date().toISOString(),
174
+ processingTimeMs: Date.now() - startTime,
175
+ error: {
176
+ message: formattedError.message,
177
+ code: formattedError.code,
178
+ httpStatus: formattedError.httpStatus,
179
+ metadata: formattedError.metadata,
180
+ laborTicketRef,
181
+ },
182
+ };
183
+ }
184
+ });
185
+ },
186
+ },
187
+ });
188
+ }
189
+ /**
190
+ * Process labor ticket in ERP and then create MM entities with ERP ID attached
191
+ */
192
+ async processLaborTicket(laborTicket, action) {
193
+ const { MMEntityProcessor } = await import("../../utils/standard-process-drivers/mm-entity-processor.js");
194
+ const { ERPObjType } = await import("../../types/erp-types.js");
195
+ const { MMSendLaborTicket } = await import("../mm-api-service/index.js");
196
+ logger.info("Processing labor ticket: ERP first, then MM creation", {
197
+ laborTicketRef: laborTicket.laborTicketRef,
198
+ action,
199
+ hasLaborTicketId: !!laborTicket.laborTicketId,
200
+ });
201
+ try {
202
+ let erpResult;
203
+ if (action === "create" || !laborTicket.laborTicketId) {
204
+ // Create new labor ticket in ERP
205
+ erpResult = await this.connector.createLaborTicketInERP(laborTicket);
206
+ logger.info("Successfully created labor ticket in ERP", {
207
+ laborTicketRef: laborTicket.laborTicketRef,
208
+ erpUid: erpResult.erpUid,
209
+ });
210
+ }
211
+ else {
212
+ // Update existing labor ticket in ERP
213
+ erpResult = { laborTicket: await this.connector.updateLaborTicketInERP(laborTicket) };
214
+ logger.info("Successfully updated labor ticket in ERP", {
215
+ laborTicketRef: laborTicket.laborTicketRef,
216
+ });
217
+ }
218
+ // Now update MM entities with ERP ID attached
219
+ const laborTicketForMM = { ...laborTicket };
220
+ if (erpResult.erpUid) {
221
+ laborTicketForMM.laborTicketId = erpResult.erpUid;
222
+ // If this was a create (no initial laborTicketId) with a laborTicketRef,
223
+ // patch the existing orphaned MM record with the new ERP ID first
224
+ if (!laborTicket.laborTicketId && laborTicketForMM.laborTicketRef) {
225
+ const mmApiClient = new MMApiClient();
226
+ await mmApiClient.updateLaborTicketIdByRef(laborTicketForMM.laborTicketRef, erpResult.erpUid);
227
+ logger.info("Patched existing MM labor ticket with new ERP ID", {
228
+ laborTicketRef: laborTicketForMM.laborTicketRef,
229
+ laborTicketId: erpResult.erpUid,
230
+ });
231
+ }
232
+ }
233
+ // Set state based on clockOut before writing to MM
234
+ laborTicketForMM.state = laborTicketForMM.clockOut ? "CLOSED" : "OPEN";
235
+ // Write all fields to MM (this updates the existing record now that it has laborTicketId)
236
+ const mmLaborTicket = MMSendLaborTicket.fromPlainObject(laborTicketForMM);
237
+ const mmResult = await MMEntityProcessor.writeEntities(ERPObjType.LABOR_TICKETS, [mmLaborTicket], null // No caching for real-time operations
238
+ );
239
+ logger.info("Successfully updated MM entities after ERP operation", {
240
+ laborTicketRef: laborTicketForMM.laborTicketRef,
241
+ laborTicketId: laborTicketForMM.laborTicketId,
242
+ entitiesCreated: mmResult.upsertedEntities,
243
+ });
244
+ return {
245
+ laborTicketRef: laborTicketForMM.laborTicketRef,
246
+ laborTicket: laborTicketForMM,
247
+ };
248
+ }
249
+ catch (error) {
250
+ // Format error to preserve meaningful message
251
+ const formattedError = formatError(error);
252
+ logger.error("Failed to process labor ticket with MM creation", {
253
+ laborTicketRef: laborTicket.laborTicketRef,
254
+ action,
255
+ error: formattedError.message,
256
+ code: formattedError.code,
257
+ });
258
+ // Create enhanced error to propagate
259
+ const enhancedError = error;
260
+ enhancedError._formatted = formattedError;
261
+ throw enhancedError;
262
+ }
263
+ }
264
+ /**
265
+ * Update checkpoint to prevent to-erp polling job from reprocessing this ticket
266
+ * Only updates if the new timestamp is later than the current checkpoint (prevents moving backwards)
267
+ */
268
+ async updateCheckpoint(erpType, result) {
269
+ const mmApiClient = new MMApiClient();
270
+ const newTimestamp = new Date().toISOString();
271
+ const currentCheckpoint = await mmApiClient.getCheckpoint({
272
+ system: erpType,
273
+ table: "labor_tickets",
274
+ checkpointType: "export",
275
+ checkpointValue: {
276
+ timestamp: "",
277
+ },
278
+ });
279
+ const currentTimestamp = currentCheckpoint?.timestamp;
280
+ // Only update checkpoint if new timestamp is later than current (prevents moving backwards)
281
+ if (!currentTimestamp || new Date(newTimestamp) > new Date(currentTimestamp)) {
282
+ await mmApiClient.saveCheckpoint({
283
+ system: erpType,
284
+ table: "labor_tickets",
285
+ checkpointType: "export",
286
+ checkpointValue: {
287
+ timestamp: newTimestamp,
288
+ },
289
+ });
290
+ logger.debug("Updated export checkpoint after NATS processing", {
291
+ laborTicketRef: result.laborTicketRef,
292
+ previousCheckpoint: currentTimestamp,
293
+ newCheckpoint: newTimestamp,
294
+ });
295
+ }
296
+ else {
297
+ logger.debug("Skipped checkpoint update (timestamp not newer)", {
298
+ laborTicketRef: result.laborTicketRef,
299
+ currentCheckpoint: currentTimestamp,
300
+ ticketTimestamp: newTimestamp,
301
+ });
302
+ }
303
+ }
304
+ }
305
+ //# sourceMappingURL=nats-labor-ticket-listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-labor-ticket-listener.js","sourceRoot":"","sources":["../../../src/services/data-sync-service/nats-labor-ticket-listener.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ export interface CompanyInfo {
2
+ timezone: string;
3
+ locationRef: string;
4
+ companyId: string;
5
+ }
6
+ export interface EnsureCompanyInfoParams {
7
+ maxRetries: number;
8
+ retryIntervalMs: number;
9
+ }
10
+ /**
11
+ * Fetches company info from MM, updates in-memory cache and persisted job-state.
12
+ * Used by {@link ensureCompanyInfo} during startup so workers can read the same data from disk.
13
+ * If MM-side company data must be refreshed after deploy, that should be handled inside the SDK—not
14
+ * by connector code calling this routinely.
15
+ */
16
+ export declare const refreshCompanyInfoFromApi: () => Promise<CompanyInfo>;
17
+ /**
18
+ * Async resolution: memory, then persisted job-state, then a single API fetch if both are empty.
19
+ * Prefer {@link ensureCompanyInfo} at startup (with retries). Connector runtime code should normally
20
+ * use {@link getCachedCompanyInfo} after initialization succeeds—this exists for SDK-internal and
21
+ * edge paths (e.g. first caller before workers have disk).
22
+ */
23
+ export declare const getCompanyInfo: () => Promise<CompanyInfo>;
24
+ /**
25
+ * Invoked from SDK startup (`ApplicationInitializer.initialize`). Retries until {@link refreshCompanyInfoFromApi}
26
+ * succeeds or `maxRetries` is exceeded. On success, memory and job-state are updated; a successful
27
+ * round-trip also validates the MM bearer token for `/accounts/current`. Initialization aborts if this fails.
28
+ */
29
+ export declare const ensureCompanyInfo: (params?: EnsureCompanyInfoParams) => Promise<void>;
30
+ /**
31
+ * Full company info after successful SDK initialization (in-memory or same job-state file on disk).
32
+ * Intended for connector and SDK code paths that run once startup has populated data—not a substitute
33
+ * for calling `ApplicationInitializer.initialize()`.
34
+ * @throws Error if company info is not available in memory or job-state
35
+ */
36
+ export declare function getCachedCompanyInfo(): CompanyInfo;
37
+ /**
38
+ * `locationRef` — same contract as {@link getCachedCompanyInfo}.
39
+ * @throws Error if company info is not available in memory or job-state
40
+ */
41
+ export declare function getCachedCompanyLocationRef(): string;
42
+ /**
43
+ * MM company id — same contract as {@link getCachedCompanyInfo}.
44
+ * @throws Error if company info is not available in memory or job-state
45
+ */
46
+ export declare function getCachedCompanyId(): string;
47
+ /**
48
+ * Timezone offset in hours (IANA → offset at "now") — same contract as {@link getCachedCompanyInfo}.
49
+ * @throws Error if company info is not available in memory or job-state
50
+ */
51
+ export declare function getCachedCompanyTimezoneOffsetHours(): number;
52
+ /**
53
+ * IANA timezone name — same contract as {@link getCachedCompanyInfo}.
54
+ * @throws Error if company info is not available in memory or job-state
55
+ */
56
+ export declare function getCachedCompanyTimezoneName(): string;
57
+ /** @see getCachedCompanyTimezoneOffsetHours — legacy name, same strict startup contract. */
58
+ export declare function getCachedTimezoneOffset(): number;
59
+ /** @see getCachedCompanyTimezoneName — legacy name, same strict startup contract. */
60
+ export declare function getCachedTimezoneName(): string;
61
+ //# sourceMappingURL=company-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"company-info.d.ts","sourceRoot":"","sources":["../../../src/services/mm-api-service/company-info.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AA4BD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAAa,OAAO,CAAC,WAAW,CAsDrE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,WAAW,CAS1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAQ,uBAGP,KACA,OAAO,CAAC,IAAI,CAkBd,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,CAElD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,IAAI,MAAM,CAG5D;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,4FAA4F;AAC5F,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}