@isoftdata/ebay-utility 1.4.0 → 1.5.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.
- package/Readme.md +30 -45
- package/lib/adapters/ebay/EbayAdapter.d.ts +6 -1
- package/lib/adapters/ebay/EbayAdapter.d.ts.map +1 -1
- package/lib/adapters/ebay/EbayAdapter.js +4 -0
- package/lib/adapters/ebay/EbayAdapter.js.map +1 -1
- package/lib/adapters/ebay/WebEbayAdapter.d.ts +2 -1
- package/lib/adapters/ebay/WebEbayAdapter.d.ts.map +1 -1
- package/lib/adapters/ebay/WebEbayAdapter.js +4 -0
- package/lib/adapters/ebay/WebEbayAdapter.js.map +1 -1
- package/lib/adapters/itrack/ItrackAdapter.d.ts +18 -3
- package/lib/adapters/itrack/ItrackAdapter.d.ts.map +1 -1
- package/lib/adapters/itrack/ItrackAdapter.js +86 -26
- package/lib/adapters/itrack/ItrackAdapter.js.map +1 -1
- package/lib/entities/ebay/Address.d.ts +2 -0
- package/lib/entities/ebay/Address.d.ts.map +1 -1
- package/lib/entities/ebay/Address.js +11 -0
- package/lib/entities/ebay/Address.js.map +1 -1
- package/lib/entities/ebay/EbayInventoryLocationDTO.d.ts +9 -0
- package/lib/entities/ebay/EbayInventoryLocationDTO.d.ts.map +1 -0
- package/lib/entities/ebay/EbayInventoryLocationDTO.js +24 -0
- package/lib/entities/ebay/EbayInventoryLocationDTO.js.map +1 -0
- package/lib/entities/ebay/InventoryItem.d.ts +3 -3
- package/lib/entities/ebay/InventoryItem.d.ts.map +1 -1
- package/lib/entities/ebay/InventoryItem.js +1 -3
- package/lib/entities/ebay/InventoryItem.js.map +1 -1
- package/lib/entities/ebay/InventoryLocationStoreInput.d.ts +12 -0
- package/lib/entities/ebay/InventoryLocationStoreInput.d.ts.map +1 -0
- package/lib/entities/ebay/InventoryLocationStoreInput.js +2 -0
- package/lib/entities/ebay/InventoryLocationStoreInput.js.map +1 -0
- package/lib/entities/ebay/MerchantLocationKey.d.ts +1 -0
- package/lib/entities/ebay/MerchantLocationKey.d.ts.map +1 -1
- package/lib/entities/ebay/MerchantLocationKey.js +1 -0
- package/lib/entities/ebay/MerchantLocationKey.js.map +1 -1
- package/lib/entities/itrack/EcommercePartner.d.ts +46 -0
- package/lib/entities/itrack/EcommercePartner.d.ts.map +1 -0
- package/lib/entities/itrack/EcommercePartner.js +19 -0
- package/lib/entities/itrack/EcommercePartner.js.map +1 -0
- package/lib/index.d.ts +5 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -3
- package/lib/index.js.map +1 -1
- package/lib/infrastructure/HttpToRepoConverter.d.ts.map +1 -1
- package/lib/infrastructure/HttpToRepoConverter.js +10 -3
- package/lib/infrastructure/HttpToRepoConverter.js.map +1 -1
- package/lib/ports/EbayInterface.d.ts +2 -1
- package/lib/ports/EbayInterface.d.ts.map +1 -1
- package/lib/ports/ItrackInterface.d.ts +2 -2
- package/lib/ports/ItrackInterface.d.ts.map +1 -1
- package/lib/repositories/ebay/ImageUploadRepo.js +1 -1
- package/lib/repositories/ebay/ImageUploadRepo.js.map +1 -1
- package/lib/repositories/ebay/InventoryItemRepo.js +1 -1
- package/lib/repositories/ebay/InventoryItemRepo.js.map +1 -1
- package/lib/repositories/ebay/InventoryLocationRepo.d.ts +3 -1
- package/lib/repositories/ebay/InventoryLocationRepo.d.ts.map +1 -1
- package/lib/repositories/ebay/InventoryLocationRepo.js +15 -0
- package/lib/repositories/ebay/InventoryLocationRepo.js.map +1 -1
- package/lib/repositories/ebay/ListingRepo.js +1 -1
- package/lib/repositories/ebay/ListingRepo.js.map +1 -1
- package/lib/repositories/itrack/EbayLocationRepo.d.ts +16 -0
- package/lib/repositories/itrack/EbayLocationRepo.d.ts.map +1 -0
- package/lib/repositories/itrack/EbayLocationRepo.js +32 -0
- package/lib/repositories/itrack/EbayLocationRepo.js.map +1 -0
- package/lib/repositories/itrack/EcommercePartnerRepo.d.ts +9 -0
- package/lib/repositories/itrack/EcommercePartnerRepo.d.ts.map +1 -0
- package/lib/repositories/itrack/EcommercePartnerRepo.js +26 -0
- package/lib/repositories/itrack/EcommercePartnerRepo.js.map +1 -0
- package/lib/repositories/itrack/StoreRepo.d.ts +2 -2
- package/lib/repositories/itrack/StoreRepo.d.ts.map +1 -1
- package/lib/usecases/Agg_StoreEvent.d.ts +1 -10
- package/lib/usecases/Agg_StoreEvent.d.ts.map +1 -1
- package/lib/usecases/Agg_StoreEvent.js +3 -6
- package/lib/usecases/Agg_StoreEvent.js.map +1 -1
- package/lib/usecases/Location/PushInventoryLocationToEbay.d.ts +2 -2
- package/lib/usecases/Location/PushInventoryLocationToEbay.d.ts.map +1 -1
- package/lib/usecases/Location/PushInventoryLocations.d.ts +16 -0
- package/lib/usecases/Location/PushInventoryLocations.d.ts.map +1 -0
- package/lib/usecases/Location/PushInventoryLocations.js +56 -0
- package/lib/usecases/Location/PushInventoryLocations.js.map +1 -0
- package/lib/usecases/Location/ReconcileLocationToEbay.d.ts +18 -0
- package/lib/usecases/Location/ReconcileLocationToEbay.d.ts.map +1 -0
- package/lib/usecases/Location/ReconcileLocationToEbay.js +50 -0
- package/lib/usecases/Location/ReconcileLocationToEbay.js.map +1 -0
- package/lib/usecases/Location/SyncInventoryLocationToEbay.d.ts +19 -0
- package/lib/usecases/Location/SyncInventoryLocationToEbay.d.ts.map +1 -0
- package/lib/usecases/Location/SyncInventoryLocationToEbay.js +79 -0
- package/lib/usecases/Location/SyncInventoryLocationToEbay.js.map +1 -0
- package/lib/usecases/Location/SyncInventoryLocationsToEbay.d.ts +17 -0
- package/lib/usecases/Location/SyncInventoryLocationsToEbay.d.ts.map +1 -0
- package/lib/usecases/Location/SyncInventoryLocationsToEbay.js +69 -0
- package/lib/usecases/Location/SyncInventoryLocationsToEbay.js.map +1 -0
- package/lib/usecases/Location/SyncInventoryLocations_TODO.d.ts +13 -0
- package/lib/usecases/Location/SyncInventoryLocations_TODO.d.ts.map +1 -0
- package/lib/usecases/Location/SyncInventoryLocations_TODO.js +10 -0
- package/lib/usecases/Location/SyncInventoryLocations_TODO.js.map +1 -0
- package/package.json +5 -5
|
@@ -17,6 +17,10 @@ export class InventoryLocationRepo extends BaseRepo {
|
|
|
17
17
|
const request = InventoryLocationRepo.formatGetInventoryLocationsRequest(this.production, token, offset, limit);
|
|
18
18
|
return this.fetch(request);
|
|
19
19
|
};
|
|
20
|
+
this.update = async (token, key, location) => {
|
|
21
|
+
const request = InventoryLocationRepo.formatUpdateInventoryLocationRequest(this.production, token, key, location);
|
|
22
|
+
return this.fetch(request);
|
|
23
|
+
};
|
|
20
24
|
}
|
|
21
25
|
}
|
|
22
26
|
// https://developer.ebay.com/api-docs/sell/inventory/resources/location/methods/createInventoryLocation
|
|
@@ -38,6 +42,17 @@ InventoryLocationRepo.formatGetInventoryLocationRequest = (production, token, me
|
|
|
38
42
|
method: MethodEnum.Get,
|
|
39
43
|
url: `${getDomain(production)}/sell/inventory/v1/location/${merchantLocationKey}`,
|
|
40
44
|
});
|
|
45
|
+
// https://developer.ebay.com/api-docs/sell/inventory/resources/location/methods/updateInventoryLocation
|
|
46
|
+
InventoryLocationRepo.formatUpdateInventoryLocationRequest = (production, token, key, location) => ({
|
|
47
|
+
data: location,
|
|
48
|
+
headers: {
|
|
49
|
+
...HttpHeaders.Authorization(token),
|
|
50
|
+
...HttpHeaders.ContentLanguage,
|
|
51
|
+
...HttpHeaders.ContentType,
|
|
52
|
+
},
|
|
53
|
+
method: MethodEnum.Post,
|
|
54
|
+
url: `${getDomain(production)}/sell/inventory/v1/location/${key}/update_location_details`,
|
|
55
|
+
});
|
|
41
56
|
// https://developer.ebay.com/api-docs/sell/inventory/resources/location/methods/getInventoryLocations
|
|
42
57
|
InventoryLocationRepo.formatGetInventoryLocationsRequest = (production, token, offset, limit) => ({
|
|
43
58
|
headers: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InventoryLocationRepo.js","sourceRoot":"","sources":["../../../src/repositories/ebay/InventoryLocationRepo.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AASxC,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IAAnD;;QACQ,WAAM,GAAG,KAAK,EAAE,KAAa,EAAE,GAAW,EAAE,QAA+B,EAAE,EAAE;YACrF,MAAM,OAAO,GAAG,qBAAqB,CAAC,oCAAoC,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;YACjH,OAAO,IAAI,CAAC,KAAK,CAAO,OAAO,CAAC,CAAA;QACjC,CAAC,CAAA;QAEM,WAAM,GAAG,CAAC,KAAa,EAAE,mBAA2B,EAAE,EAAE;YAC9D,MAAM,OAAO,GAAG,qBAAqB,CAAC,iCAAiC,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAA;YACpH,OAAO,IAAI,CAAC,KAAK,CAA4B,OAAO,CAAC,CAAA;QACtD,CAAC,CAAA;QAEM,YAAO,GAAG,CAAC,KAAa,EAAE,MAAe,EAAE,KAAc,EAAE,EAAE;YACnE,MAAM,OAAO,GAAG,qBAAqB,CAAC,kCAAkC,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YAC/G,OAAO,IAAI,CAAC,KAAK,CAAmB,OAAO,CAAC,CAAA;QAC7C,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"InventoryLocationRepo.js","sourceRoot":"","sources":["../../../src/repositories/ebay/InventoryLocationRepo.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { HttpHeaders as H } from '../../entities/http/HttpHeaders.js';
|
|
|
2
2
|
import { MethodEnum } from '../../entities/http/HttpMethod.js';
|
|
3
3
|
import { getDomain } from '../../entities/ebay/url.js';
|
|
4
4
|
import { BaseRepo } from './BaseRepo.js';
|
|
5
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
import { v4 as uuidv4 } from '@lukeed/uuid';
|
|
6
6
|
/**
|
|
7
7
|
* Otherwise known as a 'Published Offer'
|
|
8
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListingRepo.js","sourceRoot":"","sources":["../../../src/repositories/ebay/ListingRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,CAAC,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAgB,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ListingRepo.js","sourceRoot":"","sources":["../../../src/repositories/ebay/ListingRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,CAAC,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAgB,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,cAAc,CAAA;AAe3C;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,QAAQ;IAAzC;;QACQ,WAAM,GAAG,KAAK,EAAE,OAAe,EAAE,KAAa,EAA+C,EAAE;YACrG,MAAM,IAAI,GAAG,MAAM,EAAE,CAAA;YACrB,MAAM,OAAO,GAAG,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YACtF,OAAO,MAAM,IAAI,CAAC,KAAK,CAAuB,OAAO,CAAC,CAAA;QACvD,CAAC,CAAA;QAEM,WAAM,GAAG,CAAC,OAAe,EAAE,KAAa,EAAE,EAAE;YAClD,MAAM,OAAO,GAAG,WAAW,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YACvF,OAAO,IAAI,CAAC,KAAK,CAAwB,OAAO,CAAC,CAAA;QAClD,CAAC,CAAA;IAuBF,CAAC;;AArBA,0FAA0F;AACnF,qCAAyB,GAAG,CAAC,UAAmB,EAAE,KAAa,EAAE,OAAe,EAAuB,EAAE,CAAC,CAAC;IACjH,OAAO,EAAE;QACR,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;QACzB,GAAG,CAAC,CAAC,eAAe;QACpB,GAAG,CAAC,CAAC,WAAW;QAChB,iBAAiB,EAAE,OAAO,EAAE,EAAE;KAC9B;IACD,MAAM,EAAE,UAAU,CAAC,IAAI;IACvB,GAAG,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,4BAA4B,OAAO,UAAU;CAC1E,CAAC,AAT8B,CAS9B;AAEF,2FAA2F;AACpF,sCAA0B,GAAG,CAAC,UAAmB,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC;IAC7F,MAAM,EAAE,UAAU,CAAC,IAAI;IACvB,GAAG,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,4BAA4B,OAAO,WAAW;IAC3E,OAAO,EAAE;QACR,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;QACzB,GAAG,CAAC,CAAC,WAAW;KAChB;CACD,CAAC,AAP+B,CAO/B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MysqlDatastore } from '../../infrastructure/mysql/MysqlDatastore.js';
|
|
2
|
+
import { InventoryLocationFull } from '../../entities/ebay/InventoryLocationFull.js';
|
|
3
|
+
export interface EbayLocationRow {
|
|
4
|
+
storeId: number;
|
|
5
|
+
ebayName: string;
|
|
6
|
+
details: InventoryLocationFull;
|
|
7
|
+
production: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class EbayLocationRepo {
|
|
10
|
+
private readonly db;
|
|
11
|
+
constructor(db: MysqlDatastore);
|
|
12
|
+
getByStoreId: (storeId: number, production: boolean) => Promise<EbayLocationRow | null>;
|
|
13
|
+
getAll: (production: boolean) => Promise<EbayLocationRow[]>;
|
|
14
|
+
upsert: (row: EbayLocationRow) => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=EbayLocationRepo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EbayLocationRepo.d.ts","sourceRoot":"","sources":["../../../src/repositories/itrack/EbayLocationRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAA;AAEpF,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,qBAAqB,CAAA;IAC9B,UAAU,EAAE,OAAO,CAAA;CACtB;AAiBD,qBAAa,gBAAgB;IACb,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAExC,YAAY,GAAU,SAAS,MAAM,EAAE,YAAY,OAAO,KAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAMlG;IAEM,MAAM,GAAU,YAAY,OAAO,KAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAMtE;IAEM,MAAM,GAAU,KAAK,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC,CAK1D;CACJ"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const convertToEbayLocationRow = (db) => ({
|
|
2
|
+
storeId: db.storeid,
|
|
3
|
+
ebayName: db.ebayname,
|
|
4
|
+
details: JSON.parse(db.details),
|
|
5
|
+
production: db.production === 'True',
|
|
6
|
+
});
|
|
7
|
+
export class EbayLocationRepo {
|
|
8
|
+
constructor(db) {
|
|
9
|
+
this.db = db;
|
|
10
|
+
this.getByStoreId = async (storeId, production) => {
|
|
11
|
+
const rows = await this.db.query({
|
|
12
|
+
sql: 'SELECT * FROM ebay_location WHERE storeid = ? AND production = ?',
|
|
13
|
+
values: [storeId, production ? 'True' : 'False'],
|
|
14
|
+
});
|
|
15
|
+
return rows[0] ? convertToEbayLocationRow(rows[0]) : null;
|
|
16
|
+
};
|
|
17
|
+
this.getAll = async (production) => {
|
|
18
|
+
const rows = await this.db.query({
|
|
19
|
+
sql: 'SELECT * FROM ebay_location WHERE production = ?',
|
|
20
|
+
values: [production ? 'True' : 'False'],
|
|
21
|
+
});
|
|
22
|
+
return rows.map(convertToEbayLocationRow);
|
|
23
|
+
};
|
|
24
|
+
this.upsert = async (row) => {
|
|
25
|
+
await this.db.query({
|
|
26
|
+
sql: 'INSERT INTO ebay_location (`storeid`, `ebayname`, `details`, `production`) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE ebayname = VALUES(ebayname), details = VALUES(details), production = VALUES(production)',
|
|
27
|
+
values: [row.storeId, row.ebayName, JSON.stringify(row.details), row.production ? 'True' : 'False'],
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=EbayLocationRepo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EbayLocationRepo.js","sourceRoot":"","sources":["../../../src/repositories/itrack/EbayLocationRepo.ts"],"names":[],"mappings":"AAkBA,MAAM,wBAAwB,GAAG,CAAC,EAAqB,EAAmB,EAAE,CAAC,CAAC;IAC1E,OAAO,EAAE,EAAE,CAAC,OAAO;IACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ;IACrB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAA0B;IACxD,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,MAAM;CACvC,CAAC,CAAA;AAEF,MAAM,OAAO,gBAAgB;IACzB,YAA6B,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;QAExC,iBAAY,GAAG,KAAK,EAAE,OAAe,EAAE,UAAmB,EAAmC,EAAE;YAClG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAsB;gBAClD,GAAG,EAAE,kEAAkE;gBACvE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;aACnD,CAAC,CAAA;YACF,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC7D,CAAC,CAAA;QAEM,WAAM,GAAG,KAAK,EAAE,UAAmB,EAA8B,EAAE;YACtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAsB;gBAClD,GAAG,EAAE,kDAAkD;gBACvD,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;aAC1C,CAAC,CAAA;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;QAC7C,CAAC,CAAA;QAEM,WAAM,GAAG,KAAK,EAAE,GAAoB,EAAiB,EAAE;YAC1D,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBAChB,GAAG,EAAE,gNAAgN;gBACrN,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;aACtG,CAAC,CAAA;QACN,CAAC,CAAA;IAvBiD,CAAC;CAwBtD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MysqlDatastore } from '../../infrastructure/mysql/MysqlDatastore.js';
|
|
2
|
+
import { EcommercePartnerConfiguration, EcommercePartnerDefaults } from '../../entities/itrack/EcommercePartner.js';
|
|
3
|
+
export declare class EcommercePartnerRepo {
|
|
4
|
+
private readonly db;
|
|
5
|
+
constructor(db: MysqlDatastore);
|
|
6
|
+
getByName: (name: string) => Promise<EcommercePartnerConfiguration | null>;
|
|
7
|
+
updateDefaults: (ecommercePartnerId: number, defaults: EcommercePartnerDefaults) => Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=EcommercePartnerRepo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EcommercePartnerRepo.d.ts","sourceRoot":"","sources":["../../../src/repositories/itrack/EcommercePartnerRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EACH,6BAA6B,EAC7B,wBAAwB,EAC3B,MAAM,2CAA2C,CAAA;AAkBlD,qBAAa,oBAAoB;IACjB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAExC,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAMrF;IAEM,cAAc,GACjB,oBAAoB,MAAM,EAC1B,UAAU,wBAAwB,KACnC,OAAO,CAAC,IAAI,CAAC,CAKf;CACJ"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const toRow = (db) => ({
|
|
2
|
+
ecommercePartnerId: db.ecommercepartnerid,
|
|
3
|
+
name: db.name,
|
|
4
|
+
externalId: db.externalid,
|
|
5
|
+
active: db.active === 'True',
|
|
6
|
+
defaults: JSON.parse(db.defaults),
|
|
7
|
+
});
|
|
8
|
+
export class EcommercePartnerRepo {
|
|
9
|
+
constructor(db) {
|
|
10
|
+
this.db = db;
|
|
11
|
+
this.getByName = async (name) => {
|
|
12
|
+
const rows = await this.db.query({
|
|
13
|
+
sql: 'SELECT * FROM ecommercepartner WHERE name = ?',
|
|
14
|
+
values: [name],
|
|
15
|
+
});
|
|
16
|
+
return rows[0] ? toRow(rows[0]) : null;
|
|
17
|
+
};
|
|
18
|
+
this.updateDefaults = async (ecommercePartnerId, defaults) => {
|
|
19
|
+
await this.db.query({
|
|
20
|
+
sql: 'UPDATE ecommercepartner SET defaults = ? WHERE ecommercepartnerid = ?',
|
|
21
|
+
values: [JSON.stringify(defaults), ecommercePartnerId],
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=EcommercePartnerRepo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EcommercePartnerRepo.js","sourceRoot":"","sources":["../../../src/repositories/itrack/EcommercePartnerRepo.ts"],"names":[],"mappings":"AAcA,MAAM,KAAK,GAAG,CAAC,EAAyB,EAAiC,EAAE,CAAC,CAAC;IACzE,kBAAkB,EAAE,EAAE,CAAC,kBAAkB;IACzC,IAAI,EAAE,EAAE,CAAC,IAAI;IACb,UAAU,EAAE,EAAE,CAAC,UAAU;IACzB,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM;IAC5B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAA6B;CAChE,CAAC,CAAA;AAEF,MAAM,OAAO,oBAAoB;IAC7B,YAA6B,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;QAExC,cAAS,GAAG,KAAK,EAAE,IAAY,EAAiD,EAAE;YACrF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAA0B;gBACtD,GAAG,EAAE,+CAA+C;gBACpD,MAAM,EAAE,CAAC,IAAI,CAAC;aACjB,CAAC,CAAA;YACF,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC1C,CAAC,CAAA;QAEM,mBAAc,GAAG,KAAK,EACzB,kBAA0B,EAC1B,QAAkC,EACrB,EAAE;YACf,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBAChB,GAAG,EAAE,uEAAuE;gBAC5E,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;aACzD,CAAC,CAAA;QACN,CAAC,CAAA;IAlBiD,CAAC;CAmBtD"}
|
|
@@ -2,7 +2,7 @@ import { MysqlDatastore } from '../../infrastructure/mysql/MysqlDatastore.js';
|
|
|
2
2
|
export interface StoreRow {
|
|
3
3
|
storeid: number;
|
|
4
4
|
dunsnumber: number;
|
|
5
|
-
|
|
5
|
+
companyname: string;
|
|
6
6
|
code: string;
|
|
7
7
|
number: string | null;
|
|
8
8
|
address: string;
|
|
@@ -19,7 +19,7 @@ export interface StoreRow {
|
|
|
19
19
|
remittancephone: string;
|
|
20
20
|
remittancecountry: string;
|
|
21
21
|
invoicememo: string | null;
|
|
22
|
-
|
|
22
|
+
website: string | null;
|
|
23
23
|
customlogo: string | null;
|
|
24
24
|
logofileid: number | null;
|
|
25
25
|
private: 'False' | 'True';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreRepo.d.ts","sourceRoot":"","sources":["../../../src/repositories/itrack/StoreRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAG7E,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,
|
|
1
|
+
{"version":3,"file":"StoreRepo.d.ts","sourceRoot":"","sources":["../../../src/repositories/itrack/StoreRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAG7E,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,OAAO,GAAG,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,aAAa,OAAO,KAAG,WAAW,IAAI,CAEjE,CAAA;AAeD,qBAAa,SAAS;IAGT,OAAO,CAAC,QAAQ,CAAC,EAAE;IAF/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0C;gBAExC,EAAE,EAAE,cAAc;IAWxC,MAAM,QAAa,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGH;IAE1C,OAAO,CAAC,SAAS,CAM4B;CAC7C"}
|
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
import { EbayAdapter } from '../adapters/ebay/EbayAdapter.js';
|
|
2
2
|
import { ItrackAdapter } from '../adapters/itrack/ItrackAdapter.js';
|
|
3
3
|
import { TokenManager } from '../infrastructure/TokenManager.js';
|
|
4
|
-
/**
|
|
5
|
-
* This use case is to mimic the behavior of the SyncInventoryLocations use case on a store event or something like that.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* This use case should get run on store inserts/updates?
|
|
9
|
-
* Ideally we should first retrieve all of the existing ebay locations
|
|
10
|
-
* Then compare incoming changes and determine if they should be changed
|
|
11
|
-
* If there are any changes, add/update ebay location?
|
|
12
|
-
* This should also get run on startup since inventory depends on location(s) existing
|
|
13
|
-
*/
|
|
14
4
|
interface Input {
|
|
15
5
|
ebayAdapter: EbayAdapter;
|
|
16
6
|
itrackAdapter: ItrackAdapter;
|
|
17
7
|
tokenManager: TokenManager;
|
|
8
|
+
production: boolean;
|
|
18
9
|
}
|
|
19
10
|
export declare const storeEvent: (params: Input) => Promise<void>;
|
|
20
11
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agg_StoreEvent.d.ts","sourceRoot":"","sources":["../../src/usecases/Agg_StoreEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"Agg_StoreEvent.d.ts","sourceRoot":"","sources":["../../src/usecases/Agg_StoreEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAKhE,UAAU,KAAK;IACX,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,EAAE,OAAO,CAAA;CACtB;AAED,eAAO,MAAM,UAAU,GAAU,QAAQ,KAAK,kBAM7C,CAAA"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
// On store insert or update event call syncInventoryLocations
|
|
3
|
-
// TODO: maybe we need a use case for retrieving existing, comparing incoming with existing
|
|
4
|
-
// TODO: confirm if we can change location info on ebay
|
|
1
|
+
import { syncInventoryLocationsToEbay } from './Location/SyncInventoryLocationsToEbay.js';
|
|
5
2
|
export const storeEvent = async (params) => {
|
|
6
|
-
await
|
|
3
|
+
await syncInventoryLocationsToEbay({
|
|
7
4
|
ebayAdapter: params.ebayAdapter,
|
|
8
5
|
itrackAdapter: params.itrackAdapter,
|
|
9
|
-
|
|
6
|
+
production: params.production,
|
|
10
7
|
});
|
|
11
8
|
};
|
|
12
9
|
//# sourceMappingURL=Agg_StoreEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agg_StoreEvent.js","sourceRoot":"","sources":["../../src/usecases/Agg_StoreEvent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Agg_StoreEvent.js","sourceRoot":"","sources":["../../src/usecases/Agg_StoreEvent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAA;AAWzF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,MAAa,EAAE,EAAE;IAC9C,MAAM,4BAA4B,CAAC;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,MAAM,CAAC,UAAU;KAChC,CAAC,CAAA;AACN,CAAC,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EbayInventoryLocationDTO } from '../../entities/ebay/EbayInventoryLocationDTO.js';
|
|
2
2
|
import { EbayInterface } from '../../ports/EbayInterface.js';
|
|
3
3
|
export interface PushLocationInput {
|
|
4
4
|
ebay: EbayInterface;
|
|
5
|
-
data:
|
|
5
|
+
data: EbayInventoryLocationDTO;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Checks if ebay location exists, creates if it doesn't
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PushInventoryLocationToEbay.d.ts","sourceRoot":"","sources":["../../../src/usecases/Location/PushInventoryLocationToEbay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PushInventoryLocationToEbay.d.ts","sourceRoot":"","sources":["../../../src/usecases/Location/PushInventoryLocationToEbay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAA;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAE5D,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,wBAAwB,CAAA;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAU,QAAQ,iBAAiB,kBAKpE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EbayInterface } from '../../ports/EbayInterface.js';
|
|
2
|
+
import { EbayInventoryLocationDTO } from '../../entities/ebay/EbayInventoryLocationDTO.js';
|
|
3
|
+
export interface PushInventoryLocationsInput {
|
|
4
|
+
ebayAdapter: EbayInterface;
|
|
5
|
+
data: EbayInventoryLocationDTO[];
|
|
6
|
+
}
|
|
7
|
+
export interface PushInventoryLocationsResult {
|
|
8
|
+
success: boolean;
|
|
9
|
+
errors: Array<{
|
|
10
|
+
storeId: number | null;
|
|
11
|
+
message: string;
|
|
12
|
+
details?: unknown;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export declare const pushInventoryLocations: (params: PushInventoryLocationsInput) => Promise<PushInventoryLocationsResult>;
|
|
16
|
+
//# sourceMappingURL=PushInventoryLocations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PushInventoryLocations.d.ts","sourceRoot":"","sources":["../../../src/usecases/Location/PushInventoryLocations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAA;AAE1F,MAAM,WAAW,2BAA2B;IAC3C,WAAW,EAAE,aAAa,CAAA;IAC1B,IAAI,EAAE,wBAAwB,EAAE,CAAA;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC5C,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAC7E;AAED,eAAO,MAAM,sBAAsB,GAClC,QAAQ,2BAA2B,KACjC,OAAO,CAAC,4BAA4B,CA+DtC,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { StoreTypeEnum } from '../../entities/ebay/InventoryLocationFull.js';
|
|
2
|
+
export const pushInventoryLocations = async (params) => {
|
|
3
|
+
try {
|
|
4
|
+
const locationsResponse = await params.ebayAdapter.getInventoryLocations();
|
|
5
|
+
if (!locationsResponse.success) {
|
|
6
|
+
return {
|
|
7
|
+
success: false,
|
|
8
|
+
errors: [{ storeId: null, message: 'Failed to retrieve inventory locations from eBay', details: locationsResponse }],
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
const ebayLocations = locationsResponse.data;
|
|
12
|
+
const errors = [];
|
|
13
|
+
for (const dto of params.data) {
|
|
14
|
+
const existingLocation = ebayLocations.find(l => l.merchantLocationKey === dto.key);
|
|
15
|
+
if (!existingLocation) {
|
|
16
|
+
const createResponse = await params.ebayAdapter.createInventoryLocation(dto);
|
|
17
|
+
if (!createResponse.success) {
|
|
18
|
+
errors.push({ storeId: dto.storeId, message: 'Failed to create inventory location on eBay', details: createResponse });
|
|
19
|
+
}
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const isWarehouse = existingLocation.locationTypes.includes(StoreTypeEnum.Warehouse);
|
|
23
|
+
const nameChanged = dto.location.name !== undefined && dto.location.name !== existingLocation.name;
|
|
24
|
+
const phoneChanged = dto.location.phone !== undefined && dto.location.phone !== existingLocation.phone;
|
|
25
|
+
let addressChanged = false;
|
|
26
|
+
if (isWarehouse) {
|
|
27
|
+
const incoming = dto.location.location.address;
|
|
28
|
+
const existing = existingLocation.location.address;
|
|
29
|
+
addressChanged =
|
|
30
|
+
incoming.addressLine1 !== existing.addressLine1 ||
|
|
31
|
+
incoming.postalCode !== existing.postalCode ||
|
|
32
|
+
incoming.city !== existing.city ||
|
|
33
|
+
incoming.stateOrProvince !== existing.stateOrProvince ||
|
|
34
|
+
incoming.country !== existing.country;
|
|
35
|
+
}
|
|
36
|
+
if (!nameChanged && !phoneChanged && !addressChanged) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const updatePayload = isWarehouse
|
|
40
|
+
? { name: dto.location.name, phone: dto.location.phone, location: { address: dto.location.location.address } }
|
|
41
|
+
: { name: dto.location.name, phone: dto.location.phone };
|
|
42
|
+
const updateResponse = await params.ebayAdapter.updateInventoryLocation({ key: dto.key, location: updatePayload });
|
|
43
|
+
if (!updateResponse.success) {
|
|
44
|
+
errors.push({ storeId: dto.storeId, message: 'Failed to update inventory location on eBay', details: updateResponse });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return { success: errors.length === 0, errors };
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return {
|
|
51
|
+
success: false,
|
|
52
|
+
errors: [{ storeId: null, message: error instanceof Error ? error.message : 'Unknown error', details: error }],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=PushInventoryLocations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PushInventoryLocations.js","sourceRoot":"","sources":["../../../src/usecases/Location/PushInventoryLocations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EbayInterface } from '../../ports/EbayInterface.js';
|
|
2
|
+
import { InventoryLocationFull } from '../../entities/ebay/InventoryLocationFull.js';
|
|
3
|
+
import { EbayInventoryLocationDTO } from '../../entities/ebay/EbayInventoryLocationDTO.js';
|
|
4
|
+
export interface ReconcileLocationInput {
|
|
5
|
+
ebayAdapter: EbayInterface;
|
|
6
|
+
dto: EbayInventoryLocationDTO;
|
|
7
|
+
existing: InventoryLocationFull | null;
|
|
8
|
+
}
|
|
9
|
+
export interface ReconcileLocationResult {
|
|
10
|
+
action: 'create' | 'update' | 'noop' | 'skip';
|
|
11
|
+
success: boolean;
|
|
12
|
+
error?: {
|
|
13
|
+
message: string;
|
|
14
|
+
details?: unknown;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare const reconcileLocationToEbay: (params: ReconcileLocationInput) => Promise<ReconcileLocationResult>;
|
|
18
|
+
//# sourceMappingURL=ReconcileLocationToEbay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReconcileLocationToEbay.d.ts","sourceRoot":"","sources":["../../../src/usecases/Location/ReconcileLocationToEbay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAiB,MAAM,8CAA8C,CAAA;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAA;AAG1F,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,aAAa,CAAA;IAC1B,GAAG,EAAE,wBAAwB,CAAA;IAC7B,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAA;CACzC;AAGD,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;IAC7C,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CACjD;AAED,eAAO,MAAM,uBAAuB,GAChC,QAAQ,sBAAsB,KAC/B,OAAO,CAAC,uBAAuB,CAoDjC,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { StoreTypeEnum } from '../../entities/ebay/InventoryLocationFull.js';
|
|
2
|
+
import { hasMinimumAddressFields } from '../../entities/ebay/Address.js';
|
|
3
|
+
export const reconcileLocationToEbay = async (params) => {
|
|
4
|
+
const { ebayAdapter, dto, existing } = params;
|
|
5
|
+
if (!existing) {
|
|
6
|
+
if (!hasMinimumAddressFields(dto.location.location.address)) {
|
|
7
|
+
return { action: 'skip', success: true };
|
|
8
|
+
}
|
|
9
|
+
const createResponse = await ebayAdapter.createInventoryLocation(dto);
|
|
10
|
+
if (!createResponse.success) {
|
|
11
|
+
return {
|
|
12
|
+
action: 'create',
|
|
13
|
+
success: false,
|
|
14
|
+
error: { message: 'Failed to create inventory location on eBay', details: createResponse },
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return { action: 'create', success: true };
|
|
18
|
+
}
|
|
19
|
+
const isWarehouse = existing.locationTypes.includes(StoreTypeEnum.Warehouse);
|
|
20
|
+
const nameChanged = dto.location.name !== undefined && dto.location.name !== existing.name;
|
|
21
|
+
const phoneChanged = dto.location.phone !== undefined && dto.location.phone !== existing.phone;
|
|
22
|
+
const webUrlChanged = dto.location.locationWebUrl !== undefined && dto.location.locationWebUrl !== existing.locationWebUrl;
|
|
23
|
+
let addressChanged = false;
|
|
24
|
+
if (isWarehouse) {
|
|
25
|
+
const incoming = dto.location.location.address;
|
|
26
|
+
const current = existing.location.address;
|
|
27
|
+
addressChanged =
|
|
28
|
+
incoming.addressLine1 !== current.addressLine1 ||
|
|
29
|
+
incoming.postalCode !== current.postalCode ||
|
|
30
|
+
incoming.city !== current.city ||
|
|
31
|
+
incoming.stateOrProvince !== current.stateOrProvince ||
|
|
32
|
+
incoming.country !== current.country;
|
|
33
|
+
}
|
|
34
|
+
if (!nameChanged && !phoneChanged && !webUrlChanged && !addressChanged) {
|
|
35
|
+
return { action: 'noop', success: true };
|
|
36
|
+
}
|
|
37
|
+
const updatePayload = isWarehouse
|
|
38
|
+
? { name: dto.location.name, phone: dto.location.phone, locationWebUrl: dto.location.locationWebUrl, location: { address: dto.location.location.address } }
|
|
39
|
+
: { name: dto.location.name, phone: dto.location.phone, locationWebUrl: dto.location.locationWebUrl };
|
|
40
|
+
const updateResponse = await ebayAdapter.updateInventoryLocation({ key: dto.key, location: updatePayload });
|
|
41
|
+
if (!updateResponse.success) {
|
|
42
|
+
return {
|
|
43
|
+
action: 'update',
|
|
44
|
+
success: false,
|
|
45
|
+
error: { message: 'Failed to update inventory location on eBay', details: updateResponse },
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return { action: 'update', success: true };
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=ReconcileLocationToEbay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReconcileLocationToEbay.js","sourceRoot":"","sources":["../../../src/usecases/Location/ReconcileLocationToEbay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EbayAdapter } from '../../adapters/ebay/EbayAdapter.js';
|
|
2
|
+
import { ItrackAdapter } from '../../adapters/itrack/ItrackAdapter.js';
|
|
3
|
+
import { EbayInventoryLocationDTO } from '../../entities/ebay/EbayInventoryLocationDTO.js';
|
|
4
|
+
export interface SyncInventoryLocationToEbayInput {
|
|
5
|
+
ebayAdapter: EbayAdapter;
|
|
6
|
+
itrackAdapter: ItrackAdapter;
|
|
7
|
+
production: boolean;
|
|
8
|
+
dto: EbayInventoryLocationDTO;
|
|
9
|
+
}
|
|
10
|
+
export interface SyncInventoryLocationToEbayResult {
|
|
11
|
+
success: boolean;
|
|
12
|
+
errors: Array<{
|
|
13
|
+
storeId: number | null;
|
|
14
|
+
message: string;
|
|
15
|
+
details?: unknown;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
export declare const syncInventoryLocationToEbay: (params: SyncInventoryLocationToEbayInput) => Promise<SyncInventoryLocationToEbayResult>;
|
|
19
|
+
//# sourceMappingURL=SyncInventoryLocationToEbay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncInventoryLocationToEbay.d.ts","sourceRoot":"","sources":["../../../src/usecases/Location/SyncInventoryLocationToEbay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAA;AAa1F,MAAM,WAAW,gCAAgC;IAC7C,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,UAAU,EAAE,OAAO,CAAA;IACnB,GAAG,EAAE,wBAAwB,CAAA;CAChC;AAED,MAAM,WAAW,iCAAiC;IAC9C,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAChF;AAED,eAAO,MAAM,2BAA2B,GACpC,QAAQ,gCAAgC,KACzC,OAAO,CAAC,iCAAiC,CA4E3C,CAAA"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { reconcileLocationToEbay } from './ReconcileLocationToEbay.js';
|
|
2
|
+
function formatEbayError(message, details) {
|
|
3
|
+
const d = details;
|
|
4
|
+
const statusPart = d?.status ? ` (HTTP ${d.status} ${d.statusText ?? ''})`.trimEnd() : '';
|
|
5
|
+
const ebayMessages = d?.data?.length
|
|
6
|
+
? ': ' + d.data.map(e => `[${e.errorId}] ${e.message}`).join('; ')
|
|
7
|
+
: '';
|
|
8
|
+
return `${message}${statusPart}${ebayMessages}`;
|
|
9
|
+
}
|
|
10
|
+
export const syncInventoryLocationToEbay = async (params) => {
|
|
11
|
+
const { ebayAdapter, itrackAdapter, production, dto } = params;
|
|
12
|
+
const errors = [];
|
|
13
|
+
const existing = await itrackAdapter.getEbayLocation(dto.storeId, production);
|
|
14
|
+
if (!existing.success) {
|
|
15
|
+
return {
|
|
16
|
+
success: false,
|
|
17
|
+
errors: [{
|
|
18
|
+
storeId: dto.storeId,
|
|
19
|
+
message: existing.error?.message ?? 'Failed to load cached eBay location',
|
|
20
|
+
details: existing,
|
|
21
|
+
}],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const result = await reconcileLocationToEbay({
|
|
25
|
+
ebayAdapter,
|
|
26
|
+
dto,
|
|
27
|
+
existing: existing.data ?? null,
|
|
28
|
+
});
|
|
29
|
+
if (!result.success) {
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
errors: [{
|
|
33
|
+
storeId: dto.storeId,
|
|
34
|
+
message: formatEbayError(result.error?.message ?? 'Reconciliation failed', result.error?.details),
|
|
35
|
+
details: result.error?.details,
|
|
36
|
+
}],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (result.action === 'noop' || result.action === 'skip') {
|
|
40
|
+
return { success: true, errors: [] };
|
|
41
|
+
}
|
|
42
|
+
const ebayName = dto.location.name;
|
|
43
|
+
if (!ebayName) {
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
errors: [{
|
|
47
|
+
storeId: dto.storeId,
|
|
48
|
+
message: 'DTO missing location.name; cannot persist to ebay_location',
|
|
49
|
+
}],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const upsertLocationResult = await itrackAdapter.upsertEbayLocation({
|
|
53
|
+
storeId: dto.storeId,
|
|
54
|
+
production,
|
|
55
|
+
ebayName,
|
|
56
|
+
details: dto.location,
|
|
57
|
+
});
|
|
58
|
+
if (!upsertLocationResult.success) {
|
|
59
|
+
errors.push({
|
|
60
|
+
storeId: dto.storeId,
|
|
61
|
+
message: upsertLocationResult.error?.message ?? 'Failed to upsert ebay_location',
|
|
62
|
+
details: upsertLocationResult,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const upsertSliceResult = await itrackAdapter.upsertEbayPartnerStoreSlice({
|
|
66
|
+
storeId: dto.storeId,
|
|
67
|
+
name: ebayName,
|
|
68
|
+
merchantLocationKey: dto.key,
|
|
69
|
+
});
|
|
70
|
+
if (!upsertSliceResult.success) {
|
|
71
|
+
errors.push({
|
|
72
|
+
storeId: dto.storeId,
|
|
73
|
+
message: upsertSliceResult.error?.message ?? 'Failed to upsert partner store slice',
|
|
74
|
+
details: upsertSliceResult,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return { success: errors.length === 0, errors };
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=SyncInventoryLocationToEbay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncInventoryLocationToEbay.js","sourceRoot":"","sources":["../../../src/usecases/Location/SyncInventoryLocationToEbay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { EbayAdapter } from '../../adapters/ebay/EbayAdapter.js';
|
|
2
|
+
import { ItrackAdapter } from '../../adapters/itrack/ItrackAdapter.js';
|
|
3
|
+
export interface SyncInventoryLocationsToEbayInput {
|
|
4
|
+
ebayAdapter: EbayAdapter;
|
|
5
|
+
itrackAdapter: ItrackAdapter;
|
|
6
|
+
production: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface SyncInventoryLocationsToEbayResult {
|
|
9
|
+
success: boolean;
|
|
10
|
+
errors: Array<{
|
|
11
|
+
storeId: number | null;
|
|
12
|
+
message: string;
|
|
13
|
+
details?: unknown;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export declare const syncInventoryLocationsToEbay: (params: SyncInventoryLocationsToEbayInput) => Promise<SyncInventoryLocationsToEbayResult>;
|
|
17
|
+
//# sourceMappingURL=SyncInventoryLocationsToEbay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncInventoryLocationsToEbay.d.ts","sourceRoot":"","sources":["../../../src/usecases/Location/SyncInventoryLocationsToEbay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAGtE,MAAM,WAAW,iCAAiC;IAC9C,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,UAAU,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,kCAAkC;IAC/C,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAChF;AAGD,eAAO,MAAM,4BAA4B,GACrC,QAAQ,iCAAiC,KAC1C,OAAO,CAAC,kCAAkC,CA0E5C,CAAA"}
|