UNPKG

channelape-sdk

Version:
83 lines 3.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RestService_1 = require("../../service/RestService"); const Q = require("q"); const Resource_1 = require("../../model/Resource"); const Version_1 = require("../../model/Version"); const SubResource_1 = require("../../model/SubResource"); const uuidV4 = require("uuid/v4"); const GenerateApiError_1 = require("./../../utils/GenerateApiError"); const InventoryBatchAdjustmentsService_1 = require("./InventoryBatchAdjustmentsService"); class InventoryQuantitiesService extends RestService_1.default { constructor(client, inventoriesService, locationsService) { super(); this.client = client; this.inventoriesService = inventoriesService; this.locationsService = locationsService; this.EXPECTED_POST_STATUS = 201; this.EXPECTED_GET_STATUS = 200; this.inventoryBatchAdjustmentsService = new InventoryBatchAdjustmentsService_1.InventoryBatchAdjustmentsService(this, this.inventoriesService, this.locationsService); } adjust(adjustmentRequest) { return this.createQuantityAdjustment(adjustmentRequest, SubResource_1.default.ADJUSTS); } adjustBatch(adjustmentsBySku) { return this.inventoryBatchAdjustmentsService.adjustBatch(adjustmentsBySku); } setBatch(adjustmentsBySku) { return this.inventoryBatchAdjustmentsService.setBatch(adjustmentsBySku); } set(adjustmentRequest) { return this.createQuantityAdjustment(adjustmentRequest, SubResource_1.default.SETS); } retrieve(inventoryItemId) { return this.retrieveInventoryItemQuantities(inventoryItemId); } retrieveInventoryItemQuantities(inventoryItemId) { return new Promise((resolve) => { const requestUrl = `/${Version_1.default.V1}${Resource_1.default.INVENTORIES}/${inventoryItemId}/${SubResource_1.default.QUANTITIES}`; this.client.get(requestUrl, {}, (error, response, body) => { const requestResponse = { error, response, body }; resolve(this.mapInventoryItemsQuantitiesPromise(requestUrl, requestResponse, this.EXPECTED_GET_STATUS)); }); }); } createQuantityAdjustment(adjustmentRequest, operation) { const deferred = Q.defer(); const inventoryItemId = adjustmentRequest.inventoryItemId; const requestUrl = `/${Version_1.default.V1}${Resource_1.default.INVENTORIES}/${inventoryItemId}/${SubResource_1.default.QUANTITIES}/${operation}`; let idempotentKey = uuidV4(); if (adjustmentRequest.idempotentKey) { idempotentKey = adjustmentRequest.idempotentKey; } const options = { data: adjustmentRequest, headers: { 'X-Channel-Ape-Idempotent-Key': idempotentKey } }; this.client.post(requestUrl, options, (error, response, body) => this.mapResponseToPromise(requestUrl, deferred, error, response, body, this.EXPECTED_POST_STATUS)); return deferred.promise; } mapInventoryItemsQuantitiesPromise(requestUrl, requestCallbackParams, expectedStatusCode) { return new Promise((resolve, reject) => { if (requestCallbackParams.error) { reject(requestCallbackParams.error); } else if (requestCallbackParams.response.status === expectedStatusCode) { const data = requestCallbackParams.body; resolve(data.quantities); } else { const channelApeErrorResponse = (0, GenerateApiError_1.default)(requestUrl, requestCallbackParams.response, requestCallbackParams.body, this.EXPECTED_GET_STATUS); reject(channelApeErrorResponse); } }); } } exports.default = InventoryQuantitiesService; //# sourceMappingURL=InventoryItemQuantitiesService.js.map