@machinemetrics/mm-erp-sdk 0.1.9-beta.2 → 0.1.9-beta.3
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.
- package/dist/index.d.ts +42 -42
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/knexfile.js +18 -0
- package/dist/knexfile.js.map +1 -0
- package/dist/migrations/20241015162631_create_cache_table.d.ts +4 -0
- package/dist/migrations/20241015162631_create_cache_table.d.ts.map +1 -0
- package/dist/migrations/20241015162631_create_cache_table.js +11 -15
- package/dist/migrations/20241015162631_create_cache_table.js.map +1 -1
- package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts +4 -0
- package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts.map +1 -0
- package/dist/migrations/20241015162632_create_sdk_cache_table.js +11 -15
- package/dist/migrations/20241015162632_create_sdk_cache_table.js.map +1 -1
- package/dist/migrations/20250103162631_create_record_tracking_table.d.ts +4 -0
- package/dist/migrations/20250103162631_create_record_tracking_table.d.ts.map +1 -0
- package/dist/migrations/20250103162631_create_record_tracking_table.js +14 -15
- package/dist/migrations/20250103162631_create_record_tracking_table.js.map +1 -1
- package/dist/services/caching-service/batch-cache-manager.d.ts +1 -1
- package/dist/services/caching-service/batch-cache-manager.d.ts.map +1 -1
- package/dist/services/caching-service/batch-cache-manager.js +84 -0
- package/dist/services/caching-service/batch-cache-manager.js.map +1 -0
- package/dist/services/caching-service/hashed-cache-manager.d.ts +2 -2
- package/dist/services/caching-service/hashed-cache-manager.d.ts.map +1 -1
- package/dist/services/caching-service/hashed-cache-manager.js +223 -0
- package/dist/services/caching-service/hashed-cache-manager.js.map +1 -0
- package/dist/services/caching-service/index.d.ts +1 -1
- package/dist/services/caching-service/index.d.ts.map +1 -1
- package/dist/services/caching-service/index.js +2 -0
- package/dist/services/caching-service/index.js.map +1 -0
- package/dist/services/caching-service/record-tracking-manager.d.ts +1 -1
- package/dist/services/caching-service/record-tracking-manager.d.ts.map +1 -1
- package/dist/services/caching-service/record-tracking-manager.js +28 -0
- package/dist/services/caching-service/record-tracking-manager.js.map +1 -0
- package/dist/services/data-sync-service/configuration-manager.d.ts +1 -1
- package/dist/services/data-sync-service/configuration-manager.d.ts.map +1 -1
- package/dist/services/data-sync-service/configuration-manager.js +163 -0
- package/dist/services/data-sync-service/configuration-manager.js.map +1 -0
- package/dist/services/data-sync-service/data-sync-service.d.ts.map +1 -1
- package/dist/services/data-sync-service/data-sync-service.js +95 -0
- package/dist/services/data-sync-service/data-sync-service.js.map +1 -0
- package/dist/services/data-sync-service/index.d.ts +3 -3
- package/dist/services/data-sync-service/index.d.ts.map +1 -1
- package/dist/services/data-sync-service/index.js +10 -0
- package/dist/services/data-sync-service/index.js.map +1 -0
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js +40 -39
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js.map +1 -1
- package/dist/services/data-sync-service/jobs/from-erp.js +48 -43
- package/dist/services/data-sync-service/jobs/from-erp.js.map +1 -1
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js +36 -35
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js.map +1 -1
- package/dist/services/data-sync-service/jobs/run-migrations.js +22 -21
- package/dist/services/data-sync-service/jobs/run-migrations.js.map +1 -1
- package/dist/services/data-sync-service/jobs/to-erp.js +48 -42
- package/dist/services/data-sync-service/jobs/to-erp.js.map +1 -1
- package/dist/services/erp-api-services/errors.d.ts +1 -1
- package/dist/services/erp-api-services/errors.d.ts.map +1 -1
- package/dist/services/erp-api-services/errors.js +83 -0
- package/dist/services/erp-api-services/errors.js.map +1 -0
- package/dist/services/erp-api-services/graphql/graphql-service.d.ts +2 -2
- package/dist/services/erp-api-services/graphql/graphql-service.d.ts.map +1 -1
- package/dist/services/erp-api-services/graphql/graphql-service.js +102 -0
- package/dist/services/erp-api-services/graphql/graphql-service.js.map +1 -0
- package/dist/services/erp-api-services/graphql/types.js +6 -0
- package/dist/services/erp-api-services/graphql/types.js.map +1 -0
- package/dist/services/erp-api-services/index.d.ts +8 -8
- package/dist/services/erp-api-services/index.d.ts.map +1 -1
- package/dist/services/erp-api-services/index.js +13 -0
- package/dist/services/erp-api-services/index.js.map +1 -0
- package/dist/services/erp-api-services/oauth-client.js +41 -0
- package/dist/services/erp-api-services/oauth-client.js.map +1 -0
- package/dist/services/erp-api-services/rest/get-query-params.js +23 -0
- package/dist/services/erp-api-services/rest/get-query-params.js.map +1 -0
- package/dist/services/erp-api-services/rest/rest-api-service.d.ts +2 -2
- package/dist/services/erp-api-services/rest/rest-api-service.d.ts.map +1 -1
- package/dist/services/erp-api-services/rest/rest-api-service.js +163 -0
- package/dist/services/erp-api-services/rest/rest-api-service.js.map +1 -0
- package/dist/services/erp-api-services/types.d.ts +2 -2
- package/dist/services/erp-api-services/types.d.ts.map +1 -1
- package/dist/services/erp-api-services/types.js +2 -0
- package/dist/services/erp-api-services/types.js.map +1 -0
- package/dist/services/mm-api-service/index.d.ts +6 -6
- package/dist/services/mm-api-service/index.d.ts.map +1 -1
- package/dist/services/mm-api-service/index.js +15 -0
- package/dist/services/mm-api-service/index.js.map +1 -0
- package/dist/services/mm-api-service/mm-api-service.d.ts +7 -7
- package/dist/services/mm-api-service/mm-api-service.d.ts.map +1 -1
- package/dist/services/mm-api-service/mm-api-service.js +519 -0
- package/dist/services/mm-api-service/mm-api-service.js.map +1 -0
- package/dist/services/mm-api-service/token-mgr.js +113 -0
- package/dist/services/mm-api-service/token-mgr.js.map +1 -0
- package/dist/services/mm-api-service/types/checkpoint.js +2 -0
- package/dist/services/mm-api-service/types/checkpoint.js.map +1 -0
- package/dist/services/mm-api-service/types/entity-transformer.d.ts +2 -2
- package/dist/services/mm-api-service/types/entity-transformer.d.ts.map +1 -1
- package/dist/services/mm-api-service/types/entity-transformer.js +186 -0
- package/dist/services/mm-api-service/types/entity-transformer.js.map +1 -0
- package/dist/services/mm-api-service/types/mm-response-interfaces.js +34 -0
- package/dist/services/mm-api-service/types/mm-response-interfaces.js.map +1 -0
- package/dist/services/mm-api-service/types/receive-types.js +55 -0
- package/dist/services/mm-api-service/types/receive-types.js.map +1 -0
- package/dist/services/mm-api-service/types/send-types.js +337 -0
- package/dist/services/mm-api-service/types/send-types.js.map +1 -0
- package/dist/services/psql-erp-service/configuration.js +2 -0
- package/dist/services/psql-erp-service/configuration.js.map +1 -0
- package/dist/services/psql-erp-service/index.d.ts +3 -3
- package/dist/services/psql-erp-service/index.d.ts.map +1 -1
- package/dist/services/psql-erp-service/index.js +10 -0
- package/dist/services/psql-erp-service/index.js.map +1 -0
- package/dist/services/psql-erp-service/internal/types/psql-types.js +5 -0
- package/dist/services/psql-erp-service/internal/types/psql-types.js.map +1 -0
- package/dist/services/psql-erp-service/psql-helpers.js +99 -0
- package/dist/services/psql-erp-service/psql-helpers.js.map +1 -0
- package/dist/services/psql-erp-service/psql-service.d.ts +2 -2
- package/dist/services/psql-erp-service/psql-service.d.ts.map +1 -1
- package/dist/services/psql-erp-service/psql-service.js +187 -0
- package/dist/services/psql-erp-service/psql-service.js.map +1 -0
- package/dist/services/reporting-service/index.d.ts +1 -1
- package/dist/services/reporting-service/index.d.ts.map +1 -1
- package/dist/services/reporting-service/index.js +5 -0
- package/dist/services/reporting-service/index.js.map +1 -0
- package/dist/services/reporting-service/logger.js +217 -0
- package/dist/services/reporting-service/logger.js.map +1 -0
- package/dist/services/sql-server-erp-service/configuration.js +2 -0
- package/dist/services/sql-server-erp-service/configuration.js.map +1 -0
- package/dist/services/sql-server-erp-service/index.d.ts +3 -3
- package/dist/services/sql-server-erp-service/index.d.ts.map +1 -1
- package/dist/services/sql-server-erp-service/index.js +11 -0
- package/dist/services/sql-server-erp-service/index.js.map +1 -0
- package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.d.ts +2 -2
- package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.d.ts.map +1 -1
- package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.js +50 -0
- package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.js.map +1 -0
- package/dist/services/sql-server-erp-service/internal/sql-server-config.js +40 -0
- package/dist/services/sql-server-erp-service/internal/sql-server-config.js.map +1 -0
- package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js +36 -0
- package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js.map +1 -0
- package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js +2 -0
- package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js.map +1 -0
- package/dist/services/sql-server-erp-service/sql-server-helpers.d.ts +3 -3
- package/dist/services/sql-server-erp-service/sql-server-helpers.d.ts.map +1 -1
- package/dist/services/sql-server-erp-service/sql-server-helpers.js +66 -0
- package/dist/services/sql-server-erp-service/sql-server-helpers.js.map +1 -0
- package/dist/services/sql-server-erp-service/sql-server-service.d.ts +2 -2
- package/dist/services/sql-server-erp-service/sql-server-service.d.ts.map +1 -1
- package/dist/services/sql-server-erp-service/sql-server-service.js +154 -0
- package/dist/services/sql-server-erp-service/sql-server-service.js.map +1 -0
- package/dist/services/sql-server-erp-service/types/sql-input-param.js +2 -0
- package/dist/services/sql-server-erp-service/types/sql-input-param.js.map +1 -0
- package/dist/services/sqlite-service/index.d.ts +1 -1
- package/dist/services/sqlite-service/index.d.ts.map +1 -1
- package/dist/services/sqlite-service/index.js +2 -0
- package/dist/services/sqlite-service/index.js.map +1 -0
- package/dist/services/sqlite-service/sqlite-coordinator.js +60 -0
- package/dist/services/sqlite-service/sqlite-coordinator.js.map +1 -0
- package/dist/types/erp-connector.d.ts +1 -1
- package/dist/types/erp-connector.d.ts.map +1 -1
- package/dist/types/erp-connector.js +2 -0
- package/dist/types/erp-connector.js.map +1 -0
- package/dist/types/erp-types.js +13 -0
- package/dist/types/erp-types.js.map +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/application-initializer.js +55 -0
- package/dist/utils/application-initializer.js.map +1 -0
- package/dist/utils/cleanup-numbers.js +6 -0
- package/dist/utils/cleanup-numbers.js.map +1 -0
- package/dist/utils/connector-factory.d.ts +1 -1
- package/dist/utils/connector-factory.d.ts.map +1 -1
- package/dist/utils/connector-factory.js +34 -0
- package/dist/utils/connector-factory.js.map +1 -0
- package/dist/utils/connector-log/log-deduper.d.ts +1 -1
- package/dist/utils/connector-log/log-deduper.d.ts.map +1 -1
- package/dist/utils/connector-log/log-deduper.js +240 -0
- package/dist/utils/connector-log/log-deduper.js.map +1 -0
- package/dist/utils/connector-log/mm-connector-logger-example.d.ts +1 -0
- package/dist/utils/connector-log/mm-connector-logger-example.js +88 -0
- package/dist/utils/connector-log/mm-connector-logger-example.js.map +1 -0
- package/dist/utils/connector-log/mm-connector-logger.d.ts +1 -1
- package/dist/utils/connector-log/mm-connector-logger.d.ts.map +1 -1
- package/dist/utils/connector-log/mm-connector-logger.js +151 -0
- package/dist/utils/connector-log/mm-connector-logger.js.map +1 -0
- package/dist/utils/data-transformation.js +38 -0
- package/dist/utils/data-transformation.js.map +1 -0
- package/dist/utils/erp-type-from-entity.d.ts +1 -1
- package/dist/utils/erp-type-from-entity.d.ts.map +1 -1
- package/dist/utils/erp-type-from-entity.js +6 -0
- package/dist/utils/erp-type-from-entity.js.map +1 -0
- package/dist/utils/error-utils.js +21 -0
- package/dist/utils/error-utils.js.map +1 -0
- package/dist/utils/http-client.js +186 -0
- package/dist/utils/http-client.js.map +1 -0
- package/dist/utils/index.d.ts +33 -33
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +65 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/local-data-store/database-lock.js +68 -0
- package/dist/utils/local-data-store/database-lock.js.map +1 -0
- package/dist/utils/local-data-store/jobs-shared-data.js +116 -0
- package/dist/utils/local-data-store/jobs-shared-data.js.map +1 -0
- package/dist/utils/mm-labor-ticket-helpers.d.ts +1 -1
- package/dist/utils/mm-labor-ticket-helpers.d.ts.map +1 -1
- package/dist/utils/mm-labor-ticket-helpers.js +23 -0
- package/dist/utils/mm-labor-ticket-helpers.js.map +1 -0
- package/dist/utils/removeExtraneousFields.d.ts +1 -1
- package/dist/utils/removeExtraneousFields.d.ts.map +1 -1
- package/dist/utils/removeExtraneousFields.js +16 -0
- package/dist/utils/removeExtraneousFields.js.map +1 -0
- package/dist/utils/removeIdFieldFromPayload.d.ts +1 -1
- package/dist/utils/removeIdFieldFromPayload.d.ts.map +1 -1
- package/dist/utils/removeIdFieldFromPayload.js +16 -0
- package/dist/utils/removeIdFieldFromPayload.js.map +1 -0
- package/dist/utils/resource-group.d.ts +1 -1
- package/dist/utils/resource-group.d.ts.map +1 -1
- package/dist/utils/resource-group.js +59 -0
- package/dist/utils/resource-group.js.map +1 -0
- package/dist/utils/standard-process-drivers/error-processor.d.ts +3 -3
- package/dist/utils/standard-process-drivers/error-processor.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/error-processor.js +262 -0
- package/dist/utils/standard-process-drivers/error-processor.js.map +1 -0
- package/dist/utils/standard-process-drivers/index.d.ts +3 -3
- package/dist/utils/standard-process-drivers/index.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/index.js +4 -0
- package/dist/utils/standard-process-drivers/index.js.map +1 -0
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts +1 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js +164 -0
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js.map +1 -0
- package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts +4 -4
- package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/mm-entity-processor.js +168 -0
- package/dist/utils/standard-process-drivers/mm-entity-processor.js.map +1 -0
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts +4 -4
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/standard-process-drivers.js +324 -0
- package/dist/utils/standard-process-drivers/standard-process-drivers.js.map +1 -0
- package/dist/utils/time-utils.js +96 -0
- package/dist/utils/time-utils.js.map +1 -0
- package/dist/utils/timezone.js +105 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/trimObjectValues.js +11 -0
- package/dist/utils/trimObjectValues.js.map +1 -0
- package/dist/utils/uniqueRows.js +35 -0
- package/dist/utils/uniqueRows.js.map +1 -0
- package/package.json +5 -6
- package/src/index.ts +42 -42
- package/src/services/caching-service/batch-cache-manager.ts +2 -2
- package/src/services/caching-service/hashed-cache-manager.ts +5 -5
- package/src/services/caching-service/index.ts +1 -1
- package/src/services/caching-service/record-tracking-manager.ts +2 -2
- package/src/services/data-sync-service/configuration-manager.ts +2 -2
- package/src/services/data-sync-service/data-sync-service.ts +9 -3
- package/src/services/data-sync-service/index.ts +3 -3
- package/src/services/data-sync-service/jobs/clean-up-expired-cache.ts +3 -3
- package/src/services/data-sync-service/jobs/from-erp.ts +3 -3
- package/src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts +2 -2
- package/src/services/data-sync-service/jobs/run-migrations.ts +2 -2
- package/src/services/data-sync-service/jobs/to-erp.ts +2 -2
- package/src/services/erp-api-services/errors.ts +3 -3
- package/src/services/erp-api-services/graphql/graphql-service.ts +5 -5
- package/src/services/erp-api-services/index.ts +8 -8
- package/src/services/erp-api-services/rest/rest-api-service.ts +4 -4
- package/src/services/erp-api-services/types.ts +2 -2
- package/src/services/mm-api-service/index.ts +6 -6
- package/src/services/mm-api-service/mm-api-service.ts +10 -10
- package/src/services/mm-api-service/token-mgr.ts +4 -4
- package/src/services/mm-api-service/types/entity-transformer.ts +3 -3
- package/src/services/psql-erp-service/index.ts +3 -3
- package/src/services/psql-erp-service/psql-service.ts +4 -4
- package/src/services/reporting-service/index.ts +1 -1
- package/src/services/sql-server-erp-service/index.ts +3 -3
- package/src/services/sql-server-erp-service/internal/sql-labor-ticket-operations.ts +2 -2
- package/src/services/sql-server-erp-service/internal/sql-transaction-manager.ts +1 -1
- package/src/services/sql-server-erp-service/sql-server-helpers.ts +6 -6
- package/src/services/sql-server-erp-service/sql-server-service.ts +4 -4
- package/src/services/sqlite-service/index.ts +1 -1
- package/src/services/sqlite-service/sqlite-coordinator.ts +2 -2
- package/src/types/erp-connector.ts +1 -1
- package/src/types/index.ts +2 -2
- package/src/utils/application-initializer.ts +5 -5
- package/src/utils/connector-factory.ts +2 -2
- package/src/utils/connector-log/log-deduper.ts +2 -2
- package/src/utils/connector-log/mm-connector-logger.ts +3 -3
- package/src/utils/erp-type-from-entity.ts +1 -1
- package/src/utils/http-client.ts +1 -1
- package/src/utils/index.ts +33 -33
- package/src/utils/local-data-store/database-lock.ts +1 -1
- package/src/utils/mm-labor-ticket-helpers.ts +2 -2
- package/src/utils/removeExtraneousFields.ts +1 -1
- package/src/utils/removeIdFieldFromPayload.ts +1 -1
- package/src/utils/resource-group.ts +2 -2
- package/src/utils/standard-process-drivers/error-processor.ts +5 -5
- package/src/utils/standard-process-drivers/index.ts +3 -3
- package/src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts +6 -6
- package/src/utils/standard-process-drivers/mm-entity-processor.ts +7 -7
- package/src/utils/standard-process-drivers/standard-process-drivers.ts +6 -6
- package/src/utils/time-utils.ts +3 -3
- package/src/utils/timezone.ts +2 -2
- package/dist/config-Bax6Ofp5.js +0 -418
- package/dist/config-Bax6Ofp5.js.map +0 -1
- package/dist/connector-factory-BaMIlES8.js +0 -30
- package/dist/connector-factory-BaMIlES8.js.map +0 -1
- package/dist/hashed-cache-manager-C1u9jQgY.js +0 -322
- package/dist/hashed-cache-manager-C1u9jQgY.js.map +0 -1
- package/dist/index-BkVlW0ZW.js +0 -192
- package/dist/index-BkVlW0ZW.js.map +0 -1
- package/dist/knexfile-Bng2Ru9c.js +0 -20
- package/dist/knexfile-Bng2Ru9c.js.map +0 -1
- package/dist/logger-DW5fyhVS.js +0 -17593
- package/dist/logger-DW5fyhVS.js.map +0 -1
- package/dist/mm-erp-sdk.js +0 -4266
- package/dist/mm-erp-sdk.js.map +0 -1
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { ERPObjType } from "../../types/erp-types.js";
|
|
2
|
+
import { EntityTransformer } from "../../services/mm-api-service/types/entity-transformer.js";
|
|
3
|
+
import logger from "../../services/reporting-service/logger.js";
|
|
4
|
+
/**
|
|
5
|
+
* Handles error processing and record management utilities for MM API operations
|
|
6
|
+
*/
|
|
7
|
+
export class ErrorProcessor {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a set of primary keys for all failed records from batch errors
|
|
10
|
+
* @param entityType The type of entity being processed
|
|
11
|
+
* @param batchErrors Array of batch errors containing failed entities
|
|
12
|
+
* @returns Set of primary keys for failed records
|
|
13
|
+
*/
|
|
14
|
+
static createFailedRecordKeySet(entityType, batchErrors) {
|
|
15
|
+
const failedKeySet = new Set();
|
|
16
|
+
batchErrors.forEach((batchError) => {
|
|
17
|
+
batchError.affectedEntities.forEach((affectedEntity) => {
|
|
18
|
+
try {
|
|
19
|
+
const primaryKey = EntityTransformer.extractPrimaryKey(entityType, affectedEntity);
|
|
20
|
+
failedKeySet.add(primaryKey);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
logger.warn(`Failed to extract primary key from error entity: ${error}`);
|
|
24
|
+
// Continue processing other records even if one fails
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
return failedKeySet;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Filters out failed records, returning only successful ones
|
|
32
|
+
* @param entityType The type of entity being processed
|
|
33
|
+
* @param allRecords All records (typed objects) that were sent to the API
|
|
34
|
+
* @param failedKeySet Set of primary keys for records that failed
|
|
35
|
+
* @returns Array of records that succeeded
|
|
36
|
+
*/
|
|
37
|
+
static filterSuccessfulRecords(entityType, allRecords, failedKeySet) {
|
|
38
|
+
const successfulRecords = [];
|
|
39
|
+
allRecords.forEach((record) => {
|
|
40
|
+
try {
|
|
41
|
+
const primaryKey = EntityTransformer.extractPrimaryKey(entityType, record);
|
|
42
|
+
if (!failedKeySet.has(primaryKey)) {
|
|
43
|
+
successfulRecords.push(record);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
logger.warn(`Failed to extract primary key from record during filtering: ${error}`);
|
|
48
|
+
// If we can't extract the key, we can't determine if it failed, so skip it
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return successfulRecords;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Orchestrates the caching of successful records on partial failure
|
|
55
|
+
* @param entityType The type of entity being processed
|
|
56
|
+
* @param toProcess All records that were sent to the API (all are now guaranteed to be typed objects)
|
|
57
|
+
* @param batchErrors Array of batch errors containing failed entities
|
|
58
|
+
* @param batchCacheManager The cache manager instance
|
|
59
|
+
*/
|
|
60
|
+
static async cacheSuccessfulRecordsOnPartialFailure(entityType, toProcess, batchErrors, batchCacheManager) {
|
|
61
|
+
// Create a set of failed record keys for efficient lookup
|
|
62
|
+
const failedKeySet = this.createFailedRecordKeySet(entityType, batchErrors);
|
|
63
|
+
// Filter to get only successful records
|
|
64
|
+
const successfulRecords = this.filterSuccessfulRecords(entityType, toProcess, failedKeySet);
|
|
65
|
+
logger.info(`Caching ${successfulRecords.length} successful records out of ${toProcess.length} total records`);
|
|
66
|
+
// All records are now guaranteed to be typed objects, so we can cache them directly
|
|
67
|
+
if (successfulRecords.length > 0) {
|
|
68
|
+
await batchCacheManager.storeBatch(entityType, successfulRecords);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Extracts error count and batch errors from MM API response for partial failures (HTTP 207)
|
|
73
|
+
* This supports all entities, including the slightly different format for labor tickets.
|
|
74
|
+
* In case of labor tickets, the updateErrors and insertErrors arrays are combined into affectedEntities.
|
|
75
|
+
* @param mmApiResponse The full MM API response object
|
|
76
|
+
* @param entityType The type of entity being processed (determines response structure)
|
|
77
|
+
* @returns Object containing errorCount and batchErrors
|
|
78
|
+
* See MM207NonLaborTicketResponse and MM207LaborTicketResponse for response structure details
|
|
79
|
+
*/
|
|
80
|
+
static extractErrorDetails(mmApiResponse, entityType) {
|
|
81
|
+
// Type the data property with the expected structure for HTTP 207 responses
|
|
82
|
+
const data = mmApiResponse.data;
|
|
83
|
+
let allErrors = [];
|
|
84
|
+
if (entityType === ERPObjType.LABOR_TICKETS) {
|
|
85
|
+
// Labor tickets: combine updateErrors and insertErrors
|
|
86
|
+
const updateErrors = data?.updateErrors || [];
|
|
87
|
+
const insertErrors = data?.insertErrors || [];
|
|
88
|
+
// Defensive validation with actionable warnings
|
|
89
|
+
if (!data?.updateErrors && !data?.insertErrors) {
|
|
90
|
+
logger.warn("Labor tickets partial success response missing both updateErrors and insertErrors arrays");
|
|
91
|
+
}
|
|
92
|
+
allErrors = [...updateErrors, ...insertErrors];
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Regular entities: use errors array
|
|
96
|
+
const errors = data?.errors || [];
|
|
97
|
+
// Defensive validation
|
|
98
|
+
if (!data?.errors) {
|
|
99
|
+
logger.warn(`${entityType} partial success response missing errors array`);
|
|
100
|
+
}
|
|
101
|
+
allErrors = errors;
|
|
102
|
+
}
|
|
103
|
+
const batchErrors = allErrors
|
|
104
|
+
.filter((error) => {
|
|
105
|
+
return error.batchData && error.batchData.length > 0;
|
|
106
|
+
})
|
|
107
|
+
.map((error) => {
|
|
108
|
+
// Reconstruct typed objects from plain data
|
|
109
|
+
const typedErrorEntities = (error.batchData || []).map((entity) => {
|
|
110
|
+
if (typeof entity === "object" &&
|
|
111
|
+
entity !== null &&
|
|
112
|
+
"toRESTApiObject" in entity &&
|
|
113
|
+
typeof entity.toRESTApiObject === "function") {
|
|
114
|
+
// It's already a typed object, return as-is
|
|
115
|
+
return entity;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
// It's plain data, reconstruct as typed object
|
|
119
|
+
return EntityTransformer.reconstructFromPlainData(entityType, entity);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
return {
|
|
123
|
+
message: error.message,
|
|
124
|
+
affectedEntities: typedErrorEntities,
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
const errorCount = batchErrors.reduce((total, batchError) => {
|
|
128
|
+
return total + batchError.affectedEntities.length;
|
|
129
|
+
}, 0);
|
|
130
|
+
return {
|
|
131
|
+
errorCount,
|
|
132
|
+
batchErrors,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Extracts error details from a 500 HTTP exception when it contains structured error data
|
|
137
|
+
* @param exception The caught exception from MM API call
|
|
138
|
+
* @param entityType The type of entity being processed
|
|
139
|
+
* @returns Object containing errorCount and batchErrors, or null if not a structured 500 error
|
|
140
|
+
* See MM500NonLaborTicketException and MM500LaborTicketException for exception structure details
|
|
141
|
+
*/
|
|
142
|
+
static extractErrorDetailsFrom500Exception(exception, entityType) {
|
|
143
|
+
try {
|
|
144
|
+
// Cast exception to expected structure for easier access
|
|
145
|
+
const ex = exception;
|
|
146
|
+
const data = ex?.data;
|
|
147
|
+
// Add diagnostic logging to understand the 500 error structure
|
|
148
|
+
logger.info("writeEntitiesToMM: Analyzing 500 exception structure for diagnostic purposes", {
|
|
149
|
+
status: ex?.status,
|
|
150
|
+
code: ex?.code,
|
|
151
|
+
hasResponseData: !!data,
|
|
152
|
+
responseDataKeys: data ? Object.keys(data) : [],
|
|
153
|
+
errorMessage: data?.error,
|
|
154
|
+
hasMessageObject: !!data?.message,
|
|
155
|
+
messageObjectKeys: data?.message
|
|
156
|
+
? Object.keys(data.message)
|
|
157
|
+
: [],
|
|
158
|
+
entityType,
|
|
159
|
+
exceptionType: typeof exception,
|
|
160
|
+
exceptionKeys: ex ? Object.keys(ex) : [],
|
|
161
|
+
});
|
|
162
|
+
// Check if this is a structured 500 error
|
|
163
|
+
if (ex?.status !== 500 ||
|
|
164
|
+
typeof data?.error !== "string" ||
|
|
165
|
+
!data.error.startsWith("Failed to import")) {
|
|
166
|
+
logger.info("writeEntitiesToMM: Not a structured 500 error - will re-throw exception as-is", {
|
|
167
|
+
status: ex?.status,
|
|
168
|
+
errorMessage: data?.error,
|
|
169
|
+
expectedStatus: 500,
|
|
170
|
+
expectedMessagePrefix: "Failed to import",
|
|
171
|
+
});
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
logger.info("writeEntitiesToMM: Detected structured 500 error - extracting error details");
|
|
175
|
+
const messageObject = data?.message;
|
|
176
|
+
if (!messageObject) {
|
|
177
|
+
logger.warn("writeEntitiesToMM: Structured 500 error missing message object");
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
let allErrors = [];
|
|
181
|
+
if (entityType === ERPObjType.LABOR_TICKETS) {
|
|
182
|
+
// Labor tickets: combine updateErrors and insertErrors
|
|
183
|
+
const updateErrors = Array.isArray(messageObject?.updateErrors)
|
|
184
|
+
? messageObject.updateErrors
|
|
185
|
+
: [];
|
|
186
|
+
const insertErrors = Array.isArray(messageObject?.insertErrors)
|
|
187
|
+
? messageObject.insertErrors
|
|
188
|
+
: [];
|
|
189
|
+
logger.info("writeEntitiesToMM: Processing labor tickets 500 error", {
|
|
190
|
+
updateErrorsCount: updateErrors.length,
|
|
191
|
+
insertErrorsCount: insertErrors.length,
|
|
192
|
+
});
|
|
193
|
+
if (updateErrors.length === 0 && insertErrors.length === 0) {
|
|
194
|
+
logger.warn("writeEntitiesToMM: Labor tickets 500 error missing both updateErrors and insertErrors arrays");
|
|
195
|
+
}
|
|
196
|
+
allErrors = [...updateErrors, ...insertErrors];
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
// Regular entities: use errors array
|
|
200
|
+
const errors = Array.isArray(messageObject?.errors)
|
|
201
|
+
? messageObject.errors
|
|
202
|
+
: [];
|
|
203
|
+
logger.info("writeEntitiesToMM: Processing regular entity 500 error", {
|
|
204
|
+
errorsCount: errors.length,
|
|
205
|
+
});
|
|
206
|
+
if (errors.length === 0) {
|
|
207
|
+
logger.warn(`writeEntitiesToMM: ${entityType} 500 error missing errors array`);
|
|
208
|
+
}
|
|
209
|
+
allErrors = errors;
|
|
210
|
+
}
|
|
211
|
+
const batchErrors = allErrors
|
|
212
|
+
.filter((error) => {
|
|
213
|
+
const err = error;
|
|
214
|
+
return Array.isArray(err?.batchData) && err.batchData.length > 0;
|
|
215
|
+
})
|
|
216
|
+
.map((error) => {
|
|
217
|
+
const err = error;
|
|
218
|
+
const batchData = err?.batchData;
|
|
219
|
+
// Reconstruct typed objects from plain data
|
|
220
|
+
const typedErrorEntities = (batchData || []).map((entity) => {
|
|
221
|
+
if (typeof entity === "object" &&
|
|
222
|
+
entity !== null &&
|
|
223
|
+
"toRESTApiObject" in entity &&
|
|
224
|
+
typeof entity.toRESTApiObject === "function") {
|
|
225
|
+
// It's already a typed object, return as-is
|
|
226
|
+
return entity;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
// It's plain data, reconstruct as typed object
|
|
230
|
+
return EntityTransformer.reconstructFromPlainData(entityType, entity);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
return {
|
|
234
|
+
message: typeof err?.message === "string" ? err.message : "Unknown error",
|
|
235
|
+
affectedEntities: typedErrorEntities,
|
|
236
|
+
};
|
|
237
|
+
});
|
|
238
|
+
const errorCount = batchErrors.reduce((total, batchError) => {
|
|
239
|
+
return total + batchError.affectedEntities.length;
|
|
240
|
+
}, 0);
|
|
241
|
+
logger.info("writeEntitiesToMM: Extracted 500 error details", {
|
|
242
|
+
batchErrorsCount: batchErrors.length,
|
|
243
|
+
totalErrorCount: errorCount,
|
|
244
|
+
entityType,
|
|
245
|
+
});
|
|
246
|
+
return {
|
|
247
|
+
errorCount,
|
|
248
|
+
batchErrors,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
// If we can't even parse the structure safely, log what we can and return null
|
|
253
|
+
logger.error("writeEntitiesToMM: Failed to parse 500 exception structure safely", {
|
|
254
|
+
error: error instanceof Error ? error.message : String(error),
|
|
255
|
+
exceptionType: typeof exception,
|
|
256
|
+
entityType,
|
|
257
|
+
});
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=error-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-processor.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/error-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { StandardProcessDrivers } from "./standard-process-drivers";
|
|
2
|
-
export type { WriteEntitiesToMMResult } from "./standard-process-drivers";
|
|
3
|
-
export { MMBatchValidationError } from "./standard-process-drivers";
|
|
1
|
+
export { StandardProcessDrivers } from "./standard-process-drivers.js";
|
|
2
|
+
export type { WriteEntitiesToMMResult } from "./standard-process-drivers.js";
|
|
3
|
+
export { MMBatchValidationError } from "./standard-process-drivers.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labor-ticket-erp-synchronizer.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"labor-ticket-erp-synchronizer.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAOtE;;GAEG;AACH,qBAAa,0BAA0B;IACrC;;OAEG;WACU,SAAS,CACpB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IA4GhB;;OAEG;WACU,WAAW,CACtB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;mBA+DK,sBAAsB;mBAetB,kBAAkB;CAkDxC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { MMApiClient } from "../../services/mm-api-service/mm-api-service.js";
|
|
2
|
+
import { convertLaborTicketToLocalTimezone } from "../mm-labor-ticket-helpers.js";
|
|
3
|
+
import { getCachedTimezoneOffset } from "../local-data-store/jobs-shared-data.js";
|
|
4
|
+
import logger from "../../services/reporting-service/logger.js";
|
|
5
|
+
/**
|
|
6
|
+
* Handles synchronization of labor tickets between MachineMetrics and ERP systems
|
|
7
|
+
*/
|
|
8
|
+
export class LaborTicketERPSynchronizer {
|
|
9
|
+
/**
|
|
10
|
+
* Synchronizes updated labor tickets from MachineMetrics to an ERP system
|
|
11
|
+
*/
|
|
12
|
+
static async syncToERP(connectorType, connector) {
|
|
13
|
+
try {
|
|
14
|
+
const mmApiClient = new MMApiClient();
|
|
15
|
+
const failedLaborTicketRefs = [];
|
|
16
|
+
await mmApiClient.initializeCheckpoint({
|
|
17
|
+
system: connectorType,
|
|
18
|
+
table: "labor_tickets",
|
|
19
|
+
checkpointType: "export",
|
|
20
|
+
checkpointValue: {
|
|
21
|
+
timestamp: new Date().toISOString(),
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const fallbackTimestamp = new Date().toISOString();
|
|
25
|
+
const laborTicketsUpdates = await mmApiClient.fetchLaborTicketUpdates({
|
|
26
|
+
system: connectorType,
|
|
27
|
+
checkpointType: "export",
|
|
28
|
+
});
|
|
29
|
+
if (laborTicketsUpdates.length === 0) {
|
|
30
|
+
logger.info("syncLaborTicketsToERP:No updated labor tickets found");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
logger.info(`ToERP: Found ${laborTicketsUpdates.length} Labor Ticket Ids and Refs to process`, {
|
|
34
|
+
laborTickets: laborTicketsUpdates.map((ticket) => ({
|
|
35
|
+
ref: ticket.laborTicketRef,
|
|
36
|
+
id: ticket.laborTicketId,
|
|
37
|
+
})),
|
|
38
|
+
});
|
|
39
|
+
// Find the most recent updatedAt timestamp from labor tickets. This will be used to update
|
|
40
|
+
// the checkpoint to ensure there is no gap of time for the next sync.
|
|
41
|
+
const mostRecentUpdate = laborTicketsUpdates.reduce((latest, ticket) => {
|
|
42
|
+
if (!latest || !ticket.updatedAt)
|
|
43
|
+
return latest;
|
|
44
|
+
return new Date(ticket.updatedAt) > new Date(latest)
|
|
45
|
+
? ticket.updatedAt
|
|
46
|
+
: latest;
|
|
47
|
+
}, null);
|
|
48
|
+
await Promise.all(laborTicketsUpdates.map(async (laborTicket) => {
|
|
49
|
+
if (!laborTicket.laborTicketRef) {
|
|
50
|
+
logger.error("syncLaborTicketsToERP: laborTicketRef is not set for laborTicket pulled from MM:", { laborTicket });
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
return await this.processLaborTicket(connector, mmApiClient, laborTicket);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
failedLaborTicketRefs.push(laborTicket.laborTicketRef);
|
|
58
|
+
logger.error(`syncLaborTicketsToERP: Error processing laborTicketRef ${laborTicket.laborTicketRef}:`, { error });
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
}));
|
|
62
|
+
logger.info(`syncLaborTicketsToERP: ${failedLaborTicketRefs.length} failed labor ticket ids`);
|
|
63
|
+
if (failedLaborTicketRefs.length > 0) {
|
|
64
|
+
logger.info(`syncLaborTicketsToERP: Reporting ${failedLaborTicketRefs.length} labor ticket failures:`, {
|
|
65
|
+
failedLaborTicketRefs,
|
|
66
|
+
});
|
|
67
|
+
const addFailedResult = await mmApiClient.addFailedLaborTicketRefs(connectorType, failedLaborTicketRefs);
|
|
68
|
+
logger.info("syncLaborTicketsToERP: addFailedResult:", {
|
|
69
|
+
addFailedResult,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
mmApiClient.saveCheckpoint({
|
|
73
|
+
system: connectorType,
|
|
74
|
+
table: "labor_tickets",
|
|
75
|
+
checkpointType: "export",
|
|
76
|
+
checkpointValue: {
|
|
77
|
+
timestamp: mostRecentUpdate || fallbackTimestamp,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
logger.error("syncLaborTicketsToERP: Error:", error);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Retries labor tickets that have failed to be created or updated in the ERP during the sync
|
|
87
|
+
*/
|
|
88
|
+
static async retryFailed(connectorType, connector) {
|
|
89
|
+
try {
|
|
90
|
+
const mmApiClient = new MMApiClient();
|
|
91
|
+
const successLaborTicketIds = [];
|
|
92
|
+
const laborTickets = await mmApiClient.fetchFailedLaborTickets(connectorType);
|
|
93
|
+
if (laborTickets.length === 0) {
|
|
94
|
+
logger.info("retryFailedLaborTickets: No failed labor tickets found");
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
logger.info("retryFailedLaborTickets: Failed Labor Tickets count:" +
|
|
98
|
+
laborTickets.length);
|
|
99
|
+
await Promise.all(laborTickets.map(async (laborTicket) => {
|
|
100
|
+
if (!laborTicket.laborTicketRef) {
|
|
101
|
+
logger.error("retryFailedLaborTickets: laborTicketRef is not set for laborTicket pulled from MM:", { laborTicket });
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const laborTicketResult = await this.processLaborTicket(connector, mmApiClient, laborTicket);
|
|
106
|
+
successLaborTicketIds.push(laborTicket.laborTicketRef);
|
|
107
|
+
return laborTicketResult;
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
logger.error("retryFailedLaborTickets: Error processing laborTicketRef:", { laborTicketRef: laborTicket.laborTicketRef, error });
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
}));
|
|
114
|
+
if (successLaborTicketIds.length > 0) {
|
|
115
|
+
logger.info("Deleting failed labor ticket ids:", {
|
|
116
|
+
successLaborTicketIds,
|
|
117
|
+
});
|
|
118
|
+
const deleteFailedResult = await mmApiClient.deleteFailedLaborTicketIds(connectorType, successLaborTicketIds);
|
|
119
|
+
logger.info("deleteFailedResult:", { deleteFailedResult });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
logger.error("retryFailedLaborTickets: Error:", error);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// PRIVATE HELPER METHODS
|
|
128
|
+
// ============================================================================
|
|
129
|
+
static async writeLaborTicketIdToMM(mmApiClient, laborTicket, laborTicketResult) {
|
|
130
|
+
const updateRefAPIResponse = await mmApiClient.updateLaborTicketIdByRef(laborTicket.laborTicketRef, laborTicketResult.laborTicketId);
|
|
131
|
+
logger.info(`Updated laborTicketId ${laborTicketResult.laborTicketId} for laborTicketRef ${laborTicket.laborTicketRef} in MM:`, { updateRefAPIResponse });
|
|
132
|
+
}
|
|
133
|
+
static async processLaborTicket(connector, mmApiClient, laborTicket) {
|
|
134
|
+
let laborTicketResult;
|
|
135
|
+
laborTicketResult = convertLaborTicketToLocalTimezone(laborTicket, getCachedTimezoneOffset());
|
|
136
|
+
logger.info(`processing laborTicket, id=${laborTicket.laborTicketId}, ref=${laborTicket.laborTicketRef}`);
|
|
137
|
+
logger.debug({ laborTicket });
|
|
138
|
+
// MLW TODO: Should we always swap out the resource ID for the machine group ID if it is found?
|
|
139
|
+
// Or use a flag? What about the default resource ID as used by syteline? A Rutherford consultation is in order.
|
|
140
|
+
/**
|
|
141
|
+
* Swapping out the resource ID for the group id corresponding to the
|
|
142
|
+
* resource ID in the ERP would be done like so:
|
|
143
|
+
* const machineGroupId = await mmApiClient.getResourceERPGroupId(laborTicket.resourceId);
|
|
144
|
+
* if(machineGroupId) {
|
|
145
|
+
* laborTicket.resourceId = machineGroupId;
|
|
146
|
+
* }
|
|
147
|
+
*/
|
|
148
|
+
if (!laborTicket.laborTicketId) {
|
|
149
|
+
const { laborTicket: laborTicketResult, erpUid } = await connector.createLaborTicketInERP(laborTicket);
|
|
150
|
+
laborTicketResult.laborTicketId = erpUid;
|
|
151
|
+
await this.writeLaborTicketIdToMM(mmApiClient, laborTicket, laborTicketResult);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
laborTicketResult = await connector.updateLaborTicketInERP(laborTicket);
|
|
155
|
+
}
|
|
156
|
+
logger.info("ToERP: laborTicket update result:", {
|
|
157
|
+
laborTicketResult: laborTicketResult || "Failed to create/update labor ticket",
|
|
158
|
+
laborTicketRef: laborTicket.laborTicketRef,
|
|
159
|
+
operation: laborTicket.laborTicketId ? "update" : "create",
|
|
160
|
+
});
|
|
161
|
+
return laborTicketResult;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=labor-ticket-erp-synchronizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labor-ticket-erp-synchronizer.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ERPObjType } from "../../types/erp-types";
|
|
2
|
-
import { BatchCacheManager } from "../../services/caching-service/batch-cache-manager";
|
|
3
|
-
import { IToRESTApiObject } from "../../services/mm-api-service";
|
|
4
|
-
import { WriteEntitiesToMMResult } from "./standard-process-drivers";
|
|
1
|
+
import { ERPObjType } from "../../types/erp-types.js";
|
|
2
|
+
import { BatchCacheManager } from "../../services/caching-service/batch-cache-manager.js";
|
|
3
|
+
import { IToRESTApiObject } from "../../services/mm-api-service/index.js";
|
|
4
|
+
import { WriteEntitiesToMMResult } from "./standard-process-drivers.js";
|
|
5
5
|
/**
|
|
6
6
|
* Handles processing of entities to the MachineMetrics API
|
|
7
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mm-entity-processor.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/mm-entity-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mm-entity-processor.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/mm-entity-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAcjB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EACL,uBAAuB,EAExB,MAAM,+BAA+B,CAAC;AAGvC;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;WACU,aAAa,CACxB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAiCnC;;;;;OAKG;mBACkB,iBAAiB;IA+BtC;;OAEG;mBACkB,UAAU;IAsC/B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAgC/B;;;;;;;OAOG;mBACkB,eAAe;CAuErC"}
|