@things-factory/operato-hub 6.0.0-alpha.6 → 6.0.0-alpha.8
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-server/graphql/resolvers/generators/update-domain-extType.js +1 -1
- package/dist-server/graphql/resolvers/generators/update-domain-extType.js.map +1 -1
- package/dist-server/graphql/resolvers/invitations/partner-invitation.js +2 -2
- package/dist-server/graphql/resolvers/invitations/partner-invitation.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.js +4 -4
- package/dist-server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/create-dat-shipments.js +3 -3
- package/dist-server/graphql/resolvers/synchronization/create-dat-shipments.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/fetch-sync-products.js +3 -1
- package/dist-server/graphql/resolvers/synchronization/fetch-sync-products.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js +2 -2
- package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.js +1 -1
- package/dist-server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-from-account.js +3 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-from-account.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-to-account.js +3 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-to-account.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-to-sellercraft.js +3 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-to-sellercraft.js.map +1 -1
- package/dist-server/index.js +1 -1
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/business-middleware.js +5 -2
- package/dist-server/middlewares/business-middleware.js.map +1 -1
- package/dist-server/middlewares/store-middleware.js +1 -1
- package/dist-server/middlewares/store-middleware.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js +3 -2
- package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js +6 -3
- package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-marketplace-order.js +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-marketplace-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-release-order.js +13 -4
- package/dist-server/routers/api/restful-apis/unstable/add-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-partners.js +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-partners.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-partners.js +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-partners.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-partners.js +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-partners.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +46 -46
- package/server/graphql/resolvers/generators/update-domain-extType.ts +1 -1
- package/server/graphql/resolvers/invitations/partner-invitation.ts +2 -2
- package/server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.ts +4 -4
- package/server/graphql/resolvers/synchronization/create-dat-shipments.ts +3 -3
- package/server/graphql/resolvers/synchronization/fetch-sync-products.ts +3 -1
- package/server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.ts +2 -2
- package/server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.ts +1 -1
- package/server/graphql/resolvers/synchronization/sync-products-from-account.ts +3 -1
- package/server/graphql/resolvers/synchronization/sync-products-to-account.ts +3 -1
- package/server/graphql/resolvers/synchronization/sync-products-to-sellercraft.ts +3 -1
- package/server/index.ts +1 -1
- package/server/middlewares/business-middleware.ts +5 -2
- package/server/middlewares/store-middleware.ts +1 -1
- package/server/routers/api/restful-apis/unstable/add-draft-release-order.ts +3 -2
- package/server/routers/api/restful-apis/unstable/add-inbound-order.ts +6 -3
- package/server/routers/api/restful-apis/unstable/add-marketplace-order.ts +1 -1
- package/server/routers/api/restful-apis/unstable/add-release-order.ts +12 -4
- package/server/routers/api/restful-apis/unstable/get-partners.ts +1 -1
- package/server/routers/api/restful-apis/v1/add-inbound-order.ts +1 -1
- package/server/routers/api/restful-apis/v1/add-marketplace-order.ts +1 -1
- package/server/routers/api/restful-apis/v1/get-partners.ts +1 -1
- package/server/routers/api/restful-apis/v2/add-inbound-order.ts +1 -1
- package/server/routers/api/restful-apis/v2/add-marketplace-order.ts +1 -1
- package/server/routers/api/restful-apis/v2/get-partners.ts +1 -1
|
@@ -29,7 +29,7 @@ async function createRelations(tx, domain, email) {
|
|
|
29
29
|
const userRepo = tx.getRepository(auth_base_1.User);
|
|
30
30
|
const user = await userRepo.findOne({ where: { email }, relations: ['domains', 'roles'] });
|
|
31
31
|
const roleRepo = tx.getRepository(auth_base_1.Role);
|
|
32
|
-
const role = await roleRepo.findOne({ where: { domain } });
|
|
32
|
+
const role = await roleRepo.findOne({ where: { domain: { id: domain.id } }, relations: ['domain'] });
|
|
33
33
|
const privilegeRepo = tx.getRepository(auth_base_1.Privilege);
|
|
34
34
|
const privileges = await privilegeRepo.find();
|
|
35
35
|
const domains = user.domains;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-domain-extType.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/generators/update-domain-extType.ts"],"names":[],"mappings":";;;AAEA,yDAAiE;AACjE,iDAA8C;AAE9C,oFAA0G;AAC1G,6HAAsH;AAEzG,QAAA,mBAAmB,GAAG;IACjC,KAAK,CAAC,gBAAgB,CAAC,CAAM,EAAE,EAAE,eAAe,EAAE,EAAE,OAAwB;QAC1E,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAClC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAoC,eAAe,CAAA;QAExE,IAAI,MAAM,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9E,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;QAExB,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpD,MAAM,IAAA,4DAA2B,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC7C,MAAM,IAAA,gCAAS,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC3B,MAAM,IAAA,gCAAS,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC3B,MAAM,IAAA,mCAAY,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC9B,MAAM,IAAA,iCAAU,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAE5B;;;WAGG;QACH,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAE7C,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAED,KAAK,UAAU,eAAe,CAAC,EAAiB,EAAE,MAAc,EAAE,KAAa;IAC7E,MAAM,QAAQ,GAAqB,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAA;IACzD,MAAM,IAAI,GAAS,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChG,MAAM,QAAQ,GAAqB,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAA;IACzD,MAAM,IAAI,GAAS,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"update-domain-extType.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/generators/update-domain-extType.ts"],"names":[],"mappings":";;;AAEA,yDAAiE;AACjE,iDAA8C;AAE9C,oFAA0G;AAC1G,6HAAsH;AAEzG,QAAA,mBAAmB,GAAG;IACjC,KAAK,CAAC,gBAAgB,CAAC,CAAM,EAAE,EAAE,eAAe,EAAE,EAAE,OAAwB;QAC1E,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAClC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAoC,eAAe,CAAA;QAExE,IAAI,MAAM,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9E,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;QAExB,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpD,MAAM,IAAA,4DAA2B,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC7C,MAAM,IAAA,gCAAS,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC3B,MAAM,IAAA,gCAAS,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC3B,MAAM,IAAA,mCAAY,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC9B,MAAM,IAAA,iCAAU,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAE5B;;;WAGG;QACH,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAE7C,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAED,KAAK,UAAU,eAAe,CAAC,EAAiB,EAAE,MAAc,EAAE,KAAa;IAC7E,MAAM,QAAQ,GAAqB,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAA;IACzD,MAAM,IAAI,GAAS,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChG,MAAM,QAAQ,GAAqB,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAA;IACzD,MAAM,IAAI,GAAS,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1G,MAAM,aAAa,GAA0B,EAAE,CAAC,aAAa,CAAC,qBAAS,CAAC,CAAA;IACxE,MAAM,UAAU,GAAgB,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;IAE1D,MAAM,OAAO,GAAa,IAAI,CAAC,OAAO,CAAA;IACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAEtB,MAAM,KAAK,GAAW,MAAM,IAAI,CAAC,KAAK,CAAA;IACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IAElB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAE5B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC","sourcesContent":["import { EntityManager, Repository } from 'typeorm'\n\nimport { Privilege, Role, User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\n\nimport { initCodes, initGroups, initMenus, initSettings } from '../../../controllers/bizplace-initializer'\nimport { generateBizplaceDomainRoles } from '../../../controllers/bizplace-initializer/generate-bizplace-domain-roles'\n\nexport const updateDomainExtType = {\n async updateDomainType(_: any, { domainTypeInput }, context: ResolverContext) {\n const { tx, user } = context.state\n const { id, extType }: { id: string; extType: string } = domainTypeInput\n\n let domain: Domain = await tx.getRepository(Domain).findOne({ where: { id } })\n domain.extType = extType\n\n domain = await tx.getRepository(Domain).save(domain)\n\n await generateBizplaceDomainRoles(domain, tx)\n await initMenus(tx, domain)\n await initCodes(tx, domain)\n await initSettings(tx, domain)\n await initGroups(tx, domain)\n\n /* Creating relations\n * 1) users_domains table\n * 2) users_roles table\n */\n await createRelations(tx, domain, user.email)\n\n return domain\n }\n}\n\nasync function createRelations(tx: EntityManager, domain: Domain, email: string) {\n const userRepo: Repository<User> = tx.getRepository(User)\n const user: User = await userRepo.findOne({ where: { email }, relations: ['domains', 'roles'] })\n const roleRepo: Repository<Role> = tx.getRepository(Role)\n const role: Role = await roleRepo.findOne({ where: { domain: { id: domain.id } }, relations: ['domain'] })\n const privilegeRepo: Repository<Privilege> = tx.getRepository(Privilege)\n const privileges: Privilege[] = await privilegeRepo.find()\n\n const domains: Domain[] = user.domains\n domains.push(domain)\n user.domains = domains\n\n const roles: Role[] = await user.roles\n roles.push(role)\n user.roles = roles\n\n role.privileges = privileges\n\n await userRepo.save(user)\n await roleRepo.save(role)\n}\n"]}
|
|
@@ -28,14 +28,14 @@ exports.partnerInvitationResolver = {
|
|
|
28
28
|
throw new Error(context.t('error.failed to find x', { x: context.t('field.bizplace') }));
|
|
29
29
|
}
|
|
30
30
|
const domainBizplace = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOne({
|
|
31
|
-
where: { domain }
|
|
31
|
+
where: { domain: { id: domain.id } }
|
|
32
32
|
});
|
|
33
33
|
if (!domainBizplace) {
|
|
34
34
|
throw new Error(context.t('error.failed to find x', { x: 'domain bizplace' }));
|
|
35
35
|
}
|
|
36
36
|
// Check whether the bizplace is partner already or not
|
|
37
37
|
const partner = await (0, shell_1.getRepository)(biz_base_1.Partner).findOne({
|
|
38
|
-
where: { domainBizplace, partnerBizplace }
|
|
38
|
+
where: { domainBizplace: { id: domainBizplace.id }, partnerBizplace: { id: partnerBizplace.id } }
|
|
39
39
|
});
|
|
40
40
|
if (partner) {
|
|
41
41
|
throw new Error(context.t('error.x already exists in y', { x: partnerBizplace.name, y: context.t('field.partner') }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partner-invitation.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/invitations/partner-invitation.ts"],"names":[],"mappings":";;;AAAA,qCAA6B;AAE7B,uDAA4D;AAC5D,iDAA6D;AAEhD,QAAA,yBAAyB,GAAG;IACvC,KAAK,CAAC,iBAAiB,CAAC,CAAM,EAAE,EAAE,YAAY,EAA4B,EAAE,OAAwB;QAClG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,uCAAuC;QACvC,MAAM,eAAe,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;YACtE,KAAK,EAAE;gBACL,IAAI,EAAE,IAAA,aAAG,EAAC,KAAK,CAAC,EAAE,CAAC,SAAS,KAAK,WAAW,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC;aAC3E;SACF,CAAC,CAAA;QAEF,MAAM,aAAa,GAAW,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,OAAO,CAAC;YAChE,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe,CAAC,IAAI;aAC3B;SACF,CAAC,CAAA;QAEF,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE;YACxD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAA;SAChE;QAED,IAAI,CAAC,eAAe,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;SACzF;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;SACzF;QAED,MAAM,cAAc,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;YACrE,KAAK,EAAE,EAAE,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"partner-invitation.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/invitations/partner-invitation.ts"],"names":[],"mappings":";;;AAAA,qCAA6B;AAE7B,uDAA4D;AAC5D,iDAA6D;AAEhD,QAAA,yBAAyB,GAAG;IACvC,KAAK,CAAC,iBAAiB,CAAC,CAAM,EAAE,EAAE,YAAY,EAA4B,EAAE,OAAwB;QAClG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,uCAAuC;QACvC,MAAM,eAAe,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;YACtE,KAAK,EAAE;gBACL,IAAI,EAAE,IAAA,aAAG,EAAC,KAAK,CAAC,EAAE,CAAC,SAAS,KAAK,WAAW,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC;aAC3E;SACF,CAAC,CAAA;QAEF,MAAM,aAAa,GAAW,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,OAAO,CAAC;YAChE,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe,CAAC,IAAI;aAC3B;SACF,CAAC,CAAA;QAEF,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,SAAS,EAAE;YACxD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAA;SAChE;QAED,IAAI,CAAC,eAAe,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;SACzF;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;SACzF;QAED,MAAM,cAAc,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;YACrE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE;SACrC,CAAC,CAAA;QAEF,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAA;SAC/E;QAED,uDAAuD;QACvD,MAAM,OAAO,GAAY,MAAM,IAAA,qBAAa,EAAC,kBAAO,CAAC,CAAC,OAAO,CAAC;YAC5D,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE;SAClG,CAAC,CAAA;QAEF,IAAI,OAAO,EAAE;YACX,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,CAAC,CAAC,6BAA6B,EAAE,EAAE,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CACrG,CAAA;SACF;QAED,IAAI,UAAU,GAAY,IAAI,kBAAO,EAAE,CAAA;QACvC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAA;QAC5B,UAAU,CAAC,cAAc,GAAG,cAAc,CAAA;QAC1C,UAAU,CAAC,eAAe,GAAG,eAAe,CAAA;QAC5C,UAAU,CAAC,SAAS,GAAG,IAAI,CAAA;QAC3B,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAA;QAC1B,MAAM,IAAA,qBAAa,EAAC,kBAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC/C,CAAC;CACF,CAAA","sourcesContent":["import { Raw } from 'typeorm'\n\nimport { Bizplace, Partner } from '@things-factory/biz-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nexport const partnerInvitationResolver = {\n async partnerInvitation(_: any, { bizplaceName }: { bizplaceName: string }, context: ResolverContext): Promise<void> {\n const { domain, user } = context.state\n\n // Check whether bizplace exists or not\n const partnerBizplace: Bizplace = await getRepository(Bizplace).findOne({\n where: {\n name: Raw(alias => `LOWER(${alias}) LIKE '${bizplaceName.toLowerCase()}'`)\n }\n })\n\n const partnerDomain: Domain = await getRepository(Domain).findOne({\n where: {\n name: partnerBizplace.name\n }\n })\n\n if (partnerDomain && partnerDomain.extType === 'company') {\n throw new Error(context.t('error.business cannot be invited.'))\n }\n\n if (!partnerBizplace) {\n throw new Error(context.t('error.failed to find x', { x: context.t('field.bizplace') }))\n }\n\n if (domain.name === partnerBizplace.name) {\n throw new Error(context.t('error.failed to find x', { x: context.t('field.bizplace') }))\n }\n\n const domainBizplace: Bizplace = await getRepository(Bizplace).findOne({\n where: { domain: { id: domain.id } }\n })\n\n if (!domainBizplace) {\n throw new Error(context.t('error.failed to find x', { x: 'domain bizplace' }))\n }\n\n // Check whether the bizplace is partner already or not\n const partner: Partner = await getRepository(Partner).findOne({\n where: { domainBizplace: { id: domainBizplace.id }, partnerBizplace: { id: partnerBizplace.id } }\n })\n\n if (partner) {\n throw new Error(\n context.t('error.x already exists in y', { x: partnerBizplace.name, y: context.t('field.partner') })\n )\n }\n\n let newPartner: Partner = new Partner()\n newPartner.type = 'CUSTOMER'\n newPartner.domainBizplace = domainBizplace\n newPartner.partnerBizplace = partnerBizplace\n newPartner.requester = user\n newPartner.approver = user\n await getRepository(Partner).save(newPartner)\n }\n}\n"]}
|
|
@@ -13,14 +13,14 @@ exports.autoUpdateAllMarketplaceProductVariationQuantityResolver = {
|
|
|
13
13
|
async autoUpdateAllMarketplaceProductVariationQuantity(_, { companyDomainId, warehouseId }, context) {
|
|
14
14
|
const companyDomain = await (0, typeorm_1.getRepository)(shell_1.Domain).findOne(companyDomainId);
|
|
15
15
|
const marketplaceStores = await (0, typeorm_1.getRepository)(integration_marketplace_1.MarketplaceStore).find({
|
|
16
|
-
where: { domain: companyDomain, status: 'ACTIVE' },
|
|
16
|
+
where: { domain: { id: companyDomain.id }, status: 'ACTIVE' },
|
|
17
17
|
relations: ['marketplaceDistributors']
|
|
18
18
|
});
|
|
19
19
|
const fulfilmentCenter = await integration_fulfillment_1.FulfillmentAPI.getFulfillmentCenter(warehouseId);
|
|
20
20
|
const centerId = fulfilmentCenter.centerId;
|
|
21
21
|
const warehouseDomain = await (0, typeorm_1.getRepository)(shell_1.Domain).findOne({ where: { subdomain: centerId } });
|
|
22
22
|
let products = await (0, typeorm_1.getRepository)(product_base_1.Product).find({
|
|
23
|
-
where: { domain: companyDomain },
|
|
23
|
+
where: { domain: { id: companyDomain.id } },
|
|
24
24
|
relations: ['productDetails']
|
|
25
25
|
});
|
|
26
26
|
let inventoryProducts = await Promise.all(products.map(async (product) => {
|
|
@@ -67,7 +67,7 @@ exports.autoUpdateAllMarketplaceProductVariationQuantityResolver = {
|
|
|
67
67
|
try {
|
|
68
68
|
const marketplaceStore = marketplaceStores[i];
|
|
69
69
|
const marketplaceSetting = await (0, typeorm_1.getRepository)(integration_marketplace_1.MarketplaceSetting).findOne({
|
|
70
|
-
where: { marketplaceStore, category: 'stock_allocation' }
|
|
70
|
+
where: { marketplaceStore: { id: marketplaceStore.id }, category: 'stock_allocation' }
|
|
71
71
|
});
|
|
72
72
|
for (let j = 0; j < inventoryProducts.length; j++) {
|
|
73
73
|
try {
|
|
@@ -77,7 +77,7 @@ exports.autoUpdateAllMarketplaceProductVariationQuantityResolver = {
|
|
|
77
77
|
const marketplaceProductVariations = await tx
|
|
78
78
|
.getRepository(marketplace_base_1.MarketplaceProductVariation)
|
|
79
79
|
.find({
|
|
80
|
-
where: { domain: companyDomain, sku: inventoryProduct.sku },
|
|
80
|
+
where: { domain: { id: companyDomain.id }, sku: inventoryProduct.sku },
|
|
81
81
|
relations: ['marketplaceProduct', 'marketplaceProduct.marketplaceStore']
|
|
82
82
|
});
|
|
83
83
|
let storeProductVariations = marketplaceProductVariations.filter(productVariation => productVariation.marketplaceProduct.marketplaceStore.id === marketplaceStore.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update-all-marketplace-product-variation-quantity.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.ts"],"names":[],"mappings":"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","sourcesContent":["import { getConnection, getRepository } from 'typeorm'\n\nimport { logger } from '@things-factory/env'\nimport { FulfillmentAPI } from '@things-factory/integration-fulfillment'\nimport { MarketplaceSetting, MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'\nimport { MarketplaceProductVariation } from '@things-factory/marketplace-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\nimport { getProductBundleInventory, Inventory, INVENTORY_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nexport const autoUpdateAllMarketplaceProductVariationQuantityResolver = {\n async autoUpdateAllMarketplaceProductVariationQuantity(_: any, { companyDomainId, warehouseId }, context: any) {\n const companyDomain: Domain = await getRepository(Domain).findOne(companyDomainId)\n\n const marketplaceStores: MarketplaceStore[] = await getRepository(MarketplaceStore).find({\n where: { domain: companyDomain, status: 'ACTIVE' },\n relations: ['marketplaceDistributors']\n })\n\n const fulfilmentCenter = await FulfillmentAPI.getFulfillmentCenter(warehouseId)\n const centerId: string = fulfilmentCenter.centerId\n const warehouseDomain: Domain = await getRepository(Domain).findOne({ where: { subdomain: centerId } })\n\n let products: Product[] = await getRepository(Product).find({\n where: { domain: companyDomain },\n relations: ['productDetails']\n })\n\n let inventoryProducts: any[] = await Promise.all(\n products.map(async product => {\n const productDetails: ProductDetail[] = product.productDetails\n const defaultProductDetail: ProductDetail = productDetails.filter(productDetail => productDetail.isDefault)[0]\n\n let qb = await getRepository(Inventory).createQueryBuilder('inv')\n qb.leftJoinAndSelect('inv.location', 'loc')\n .andWhere('\"inv\".\"domain_id\" = :domainId')\n .andWhere('\"inv\".\"product_id\" = :productId')\n .andWhere('\"inv\".\"status\" != :status')\n .andWhere('\"loc\".\"type\" NOT IN (:...locationTypes)')\n .setParameters({\n domainId: warehouseDomain.id,\n productId: product.id,\n status: INVENTORY_STATUS.TERMINATED,\n locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]\n })\n\n let inventories: Inventory[] = await qb.getMany()\n\n const inventoryQty: number = inventories.reduce((total, currentValue) => {\n total += currentValue.qty\n return total\n }, 0)\n\n const inventoryLockedQty: number = inventories.reduce((total, currentValue) => {\n total += currentValue.lockedQty\n return total\n }, 0)\n\n return {\n product,\n sku: product.sku,\n name: product.name,\n packingType: defaultProductDetail.packingType,\n packingSize: defaultProductDetail.packingSize,\n uom: defaultProductDetail.uom,\n qty: inventoryQty - inventoryLockedQty\n }\n })\n )\n\n await getConnection().transaction(async tx => {\n let bundleProductInventories: any[] = await getProductBundleInventory(\n warehouseDomain,\n companyDomain,\n inventoryProducts,\n tx\n )\n\n bundleProductInventories.map(bundleProductInventory => {\n inventoryProducts.push(bundleProductInventory)\n })\n })\n\n for (let i = 0; i < marketplaceStores.length; i++) {\n try {\n const marketplaceStore: MarketplaceStore = marketplaceStores[i]\n\n const marketplaceSetting: MarketplaceSetting = await getRepository(MarketplaceSetting).findOne({\n where: { marketplaceStore, category: 'stock_allocation' }\n })\n\n for (let j = 0; j < inventoryProducts.length; j++) {\n try {\n await getConnection().transaction(async tx => {\n const inventoryProduct = inventoryProducts[j]\n const marketplaceProductVariations: MarketplaceProductVariation[] = await tx\n .getRepository(MarketplaceProductVariation)\n .find({\n where: { domain: companyDomain, sku: inventoryProduct.sku },\n relations: ['marketplaceProduct', 'marketplaceProduct.marketplaceStore']\n })\n\n let storeProductVariations: MarketplaceProductVariation[] = marketplaceProductVariations.filter(\n productVariation => productVariation.marketplaceProduct.marketplaceStore.id === marketplaceStore.id\n )\n\n let percentageValue: number = 100\n if (storeProductVariations) {\n for (let k = 0; k < storeProductVariations.length; k++) {\n let storeProductVariation: MarketplaceProductVariation = storeProductVariations[k]\n if (marketplaceSetting) {\n percentageValue = parseInt(marketplaceSetting.value)\n }\n\n let remainQty: number = Math.floor(\n (inventoryProduct.qty - storeProductVariation.reserveQty) * (percentageValue / 100)\n )\n if (remainQty < 0) remainQty = 0\n\n let productVariationLocationId = storeProductVariation?.locationId\n let adjustQty: number = remainQty\n\n if (marketplaceStore.platform === 'shopify') {\n let locationIds: any[] = JSON.parse(productVariationLocationId)\n adjustQty = adjustQty - storeProductVariation.qty\n if (locationIds[0]?.location_id) productVariationLocationId = locationIds[0].location_id\n }\n\n let validMarketplaceDistributors: any[] = []\n if (marketplaceStore.marketplaceDistributors) {\n validMarketplaceDistributors = marketplaceStore.marketplaceDistributors.filter(\n distributor => distributor.status === 'ACTIVE'\n )\n }\n\n const hasVariation: boolean = storeProductVariation?.marketplaceProduct?.hasVariation\n\n if (hasVariation) {\n await StoreAPI.updateStoreProductVariationStock(marketplaceStore, [\n {\n itemId: storeProductVariation.marketplaceProduct.itemId,\n variationId: storeProductVariation.variationId,\n variationSku: storeProductVariation.variationSku,\n qty: adjustQty,\n locationId: productVariationLocationId,\n inventoryItemId: storeProductVariation.inventoryItemId,\n distributors: validMarketplaceDistributors\n }\n ])\n } else {\n await StoreAPI.updateStoreProductStock(marketplaceStore, [\n {\n itemId: storeProductVariation.marketplaceProduct.itemId,\n variationId: storeProductVariation.variationId,\n variationSku: storeProductVariation.variationSku,\n qty: adjustQty,\n distributors: validMarketplaceDistributors\n }\n ])\n }\n\n storeProductVariation.qty = remainQty\n await tx.getRepository(MarketplaceProductVariation).save(storeProductVariation)\n }\n }\n })\n } catch (error) {\n logger.error(\n `interface-with-hub[autoUpdateAllMarketplaceProductVariationQuantity]inventoryProducts: ${error}`\n )\n }\n }\n } catch (e) {\n logger.error(`interface-with-hub[autoUpdateAllMarketplaceProductVariationQuantity]marketplaceStores: ${e}`)\n }\n }\n\n return true\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"auto-update-all-marketplace-product-variation-quantity.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.ts"],"names":[],"mappings":"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","sourcesContent":["import { getConnection, getRepository } from 'typeorm'\n\nimport { logger } from '@things-factory/env'\nimport { FulfillmentAPI } from '@things-factory/integration-fulfillment'\nimport { MarketplaceSetting, MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'\nimport { MarketplaceProductVariation } from '@things-factory/marketplace-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\nimport { getProductBundleInventory, Inventory, INVENTORY_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nexport const autoUpdateAllMarketplaceProductVariationQuantityResolver = {\n async autoUpdateAllMarketplaceProductVariationQuantity(_: any, { companyDomainId, warehouseId }, context: any) {\n const companyDomain: Domain = await getRepository(Domain).findOne(companyDomainId)\n\n const marketplaceStores: MarketplaceStore[] = await getRepository(MarketplaceStore).find({\n where: { domain: { id: companyDomain.id }, status: 'ACTIVE' },\n relations: ['marketplaceDistributors']\n })\n\n const fulfilmentCenter = await FulfillmentAPI.getFulfillmentCenter(warehouseId)\n const centerId: string = fulfilmentCenter.centerId\n const warehouseDomain: Domain = await getRepository(Domain).findOne({ where: { subdomain: centerId } })\n\n let products: Product[] = await getRepository(Product).find({\n where: { domain: { id: companyDomain.id } },\n relations: ['productDetails']\n })\n\n let inventoryProducts: any[] = await Promise.all(\n products.map(async product => {\n const productDetails: ProductDetail[] = product.productDetails\n const defaultProductDetail: ProductDetail = productDetails.filter(productDetail => productDetail.isDefault)[0]\n\n let qb = await getRepository(Inventory).createQueryBuilder('inv')\n qb.leftJoinAndSelect('inv.location', 'loc')\n .andWhere('\"inv\".\"domain_id\" = :domainId')\n .andWhere('\"inv\".\"product_id\" = :productId')\n .andWhere('\"inv\".\"status\" != :status')\n .andWhere('\"loc\".\"type\" NOT IN (:...locationTypes)')\n .setParameters({\n domainId: warehouseDomain.id,\n productId: product.id,\n status: INVENTORY_STATUS.TERMINATED,\n locationTypes: [LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]\n })\n\n let inventories: Inventory[] = await qb.getMany()\n\n const inventoryQty: number = inventories.reduce((total, currentValue) => {\n total += currentValue.qty\n return total\n }, 0)\n\n const inventoryLockedQty: number = inventories.reduce((total, currentValue) => {\n total += currentValue.lockedQty\n return total\n }, 0)\n\n return {\n product,\n sku: product.sku,\n name: product.name,\n packingType: defaultProductDetail.packingType,\n packingSize: defaultProductDetail.packingSize,\n uom: defaultProductDetail.uom,\n qty: inventoryQty - inventoryLockedQty\n }\n })\n )\n\n await getConnection().transaction(async tx => {\n let bundleProductInventories: any[] = await getProductBundleInventory(\n warehouseDomain,\n companyDomain,\n inventoryProducts,\n tx\n )\n\n bundleProductInventories.map(bundleProductInventory => {\n inventoryProducts.push(bundleProductInventory)\n })\n })\n\n for (let i = 0; i < marketplaceStores.length; i++) {\n try {\n const marketplaceStore: MarketplaceStore = marketplaceStores[i]\n\n const marketplaceSetting: MarketplaceSetting = await getRepository(MarketplaceSetting).findOne({\n where: { marketplaceStore: { id: marketplaceStore.id }, category: 'stock_allocation' }\n })\n\n for (let j = 0; j < inventoryProducts.length; j++) {\n try {\n await getConnection().transaction(async tx => {\n const inventoryProduct = inventoryProducts[j]\n const marketplaceProductVariations: MarketplaceProductVariation[] = await tx\n .getRepository(MarketplaceProductVariation)\n .find({\n where: { domain: { id: companyDomain.id }, sku: inventoryProduct.sku },\n relations: ['marketplaceProduct', 'marketplaceProduct.marketplaceStore']\n })\n\n let storeProductVariations: MarketplaceProductVariation[] = marketplaceProductVariations.filter(\n productVariation => productVariation.marketplaceProduct.marketplaceStore.id === marketplaceStore.id\n )\n\n let percentageValue: number = 100\n if (storeProductVariations) {\n for (let k = 0; k < storeProductVariations.length; k++) {\n let storeProductVariation: MarketplaceProductVariation = storeProductVariations[k]\n if (marketplaceSetting) {\n percentageValue = parseInt(marketplaceSetting.value)\n }\n\n let remainQty: number = Math.floor(\n (inventoryProduct.qty - storeProductVariation.reserveQty) * (percentageValue / 100)\n )\n if (remainQty < 0) remainQty = 0\n\n let productVariationLocationId = storeProductVariation?.locationId\n let adjustQty: number = remainQty\n\n if (marketplaceStore.platform === 'shopify') {\n let locationIds: any[] = JSON.parse(productVariationLocationId)\n adjustQty = adjustQty - storeProductVariation.qty\n if (locationIds[0]?.location_id) productVariationLocationId = locationIds[0].location_id\n }\n\n let validMarketplaceDistributors: any[] = []\n if (marketplaceStore.marketplaceDistributors) {\n validMarketplaceDistributors = marketplaceStore.marketplaceDistributors.filter(\n distributor => distributor.status === 'ACTIVE'\n )\n }\n\n const hasVariation: boolean = storeProductVariation?.marketplaceProduct?.hasVariation\n\n if (hasVariation) {\n await StoreAPI.updateStoreProductVariationStock(marketplaceStore, [\n {\n itemId: storeProductVariation.marketplaceProduct.itemId,\n variationId: storeProductVariation.variationId,\n variationSku: storeProductVariation.variationSku,\n qty: adjustQty,\n locationId: productVariationLocationId,\n inventoryItemId: storeProductVariation.inventoryItemId,\n distributors: validMarketplaceDistributors\n }\n ])\n } else {\n await StoreAPI.updateStoreProductStock(marketplaceStore, [\n {\n itemId: storeProductVariation.marketplaceProduct.itemId,\n variationId: storeProductVariation.variationId,\n variationSku: storeProductVariation.variationSku,\n qty: adjustQty,\n distributors: validMarketplaceDistributors\n }\n ])\n }\n\n storeProductVariation.qty = remainQty\n await tx.getRepository(MarketplaceProductVariation).save(storeProductVariation)\n }\n }\n })\n } catch (error) {\n logger.error(\n `interface-with-hub[autoUpdateAllMarketplaceProductVariationQuantity]inventoryProducts: ${error}`\n )\n }\n }\n } catch (e) {\n logger.error(`interface-with-hub[autoUpdateAllMarketplaceProductVariationQuantity]marketplaceStores: ${e}`)\n }\n }\n\n return true\n }\n}\n"]}
|
|
@@ -22,12 +22,12 @@ exports.createDatShipments = {
|
|
|
22
22
|
where: { subdomain: sftp.fulfillmentCenter.centerId }
|
|
23
23
|
});
|
|
24
24
|
let bizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
|
|
25
|
-
where: { domain: sftp.domain }
|
|
25
|
+
where: { domain: { id: sftp.domain.id } }
|
|
26
26
|
});
|
|
27
27
|
let releaseGoods = await tx.getRepository(sales_base_1.ReleaseGood).find({
|
|
28
28
|
where: {
|
|
29
|
-
domain: warehouseDomain,
|
|
30
|
-
bizplace: bizplace,
|
|
29
|
+
domain: { id: warehouseDomain.id },
|
|
30
|
+
bizplace: { id: bizplace.id },
|
|
31
31
|
status: 'DONE',
|
|
32
32
|
updatedAt: (0, typeorm_1.MoreThan)(sftp.lastTimeSync)
|
|
33
33
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-dat-shipments.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/create-dat-shipments.ts"],"names":[],"mappings":";;;AAAA,qCAAiD;AAEjD,uDAAmD;AACnD,6CAA4C;AAC5C,uEAAgE;AAChE,2DAAwD;AACxD,iDAA8C;AAEjC,QAAA,kBAAkB,GAAG;IAChC,KAAK,CAAC,kBAAkB,CAAC,CAAO,EAAE,EAAE,EAAE,OAAwB;QAC5D,IAAI;YACF,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;gBAC3C,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;gBAC9B,MAAM,SAAS,GAAG,EAAE,CAAA;gBACpB,IAAI,KAAK,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,uBAAI,CAAC,CAAC,IAAI,CAAC;oBACpD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;oBAC3B,SAAS,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC;iBAC3C,CAAC,CAAA;gBAEF,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;oBACtB,IAAI,eAAe,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,OAAO,CAAC;wBACnE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;qBACtD,CAAC,CAAA;oBAEF,IAAI,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;wBAChE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"create-dat-shipments.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/create-dat-shipments.ts"],"names":[],"mappings":";;;AAAA,qCAAiD;AAEjD,uDAAmD;AACnD,6CAA4C;AAC5C,uEAAgE;AAChE,2DAAwD;AACxD,iDAA8C;AAEjC,QAAA,kBAAkB,GAAG;IAChC,KAAK,CAAC,kBAAkB,CAAC,CAAO,EAAE,EAAE,EAAE,OAAwB;QAC5D,IAAI;YACF,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;gBAC3C,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;gBAC9B,MAAM,SAAS,GAAG,EAAE,CAAA;gBACpB,IAAI,KAAK,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,uBAAI,CAAC,CAAC,IAAI,CAAC;oBACpD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;oBAC3B,SAAS,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC;iBAC3C,CAAC,CAAA;gBAEF,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;oBACtB,IAAI,eAAe,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,OAAO,CAAC;wBACnE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;qBACtD,CAAC,CAAA;oBAEF,IAAI,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;wBAChE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE;qBAC1C,CAAC,CAAA;oBAEF,IAAI,YAAY,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,wBAAW,CAAC,CAAC,IAAI,CAAC;wBACzE,KAAK,EAAE;4BACL,MAAM,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE;4BAClC,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;4BAC7B,MAAM,EAAE,MAAM;4BACd,SAAS,EAAE,IAAA,kBAAQ,EAAC,IAAI,CAAC,YAAY,CAAC;yBACvC;wBACD,SAAS,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;qBAC5D,CAAC,CAAA;oBAEF,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC9B,IAAI,gBAAgB,GAAG,YAAY,CAAC,MAAM,CACxC,CAAC,EACD,YAAY,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CACnE,CAAA;wBAED,MAAM,iBAAiB,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;wBAEjE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC/B,IAAI,iBAAiB,CAAC,cAAc,EAAE;gCACpC,IAAI,cAAc,GAAS,MAAM,0BAAO,CAAC,cAAc,CAAC,IAAI,EAAE;oCAC5D,YAAY,EAAE,gBAAgB;oCAC9B,IAAI,EAAE,IAAI;iCACX,CAAC,CAAA;gCACF,cAAc,CAAC,YAAY,GAAG,WAAW,CAAA;gCACzC,IAAI,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,uBAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;6BACzD;yBACF;qBACF;iBACF;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAO,CAAC,EAAE;YACV,YAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAA;SACxC;IACH,CAAC;CACF,CAAA","sourcesContent":["import { getConnection, MoreThan } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { Sftp, SftpAPI } from '@things-factory/integration-sftp'\nimport { ReleaseGood } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\n\nexport const createDatShipments = {\n async createDatShipments(_: void, {}, context: ResolverContext): Promise<void> {\n try {\n await getConnection().transaction(async tx => {\n const currentTime = new Date()\n const batchSize = 80\n let sftps: Sftp[] = await tx.getRepository(Sftp).find({\n where: { status: 'ACTIVE' },\n relations: ['domain', 'fulfillmentCenter']\n })\n\n for (let sftp of sftps) {\n let warehouseDomain: Domain = await tx.getRepository(Domain).findOne({\n where: { subdomain: sftp.fulfillmentCenter.centerId }\n })\n\n let bizplace: Bizplace = await tx.getRepository(Bizplace).findOne({\n where: { domain: { id: sftp.domain.id } }\n })\n\n let releaseGoods: ReleaseGood[] = await tx.getRepository(ReleaseGood).find({\n where: {\n domain: { id: warehouseDomain.id },\n bizplace: { id: bizplace.id },\n status: 'DONE',\n updatedAt: MoreThan(sftp.lastTimeSync)\n },\n relations: ['orderInventories', 'orderInventories.product']\n })\n\n while (releaseGoods.length > 0) {\n let releaseGoodBatch = releaseGoods.splice(\n 0,\n releaseGoods.length >= batchSize ? batchSize : releaseGoods.length\n )\n\n const responseFileTypes: any = JSON.parse(sftp.responseFileTypes)\n\n if (releaseGoodBatch.length > 0) {\n if (responseFileTypes.enableShipment) {\n let shipmentResult: Sftp = await SftpAPI.createShipment(sftp, {\n releaseGoods: releaseGoodBatch,\n sftp: sftp\n })\n shipmentResult.lastTimeSync = currentTime\n sftp = await tx.getRepository(Sftp).save(shipmentResult)\n }\n }\n }\n }\n })\n } catch (e) {\n logger.error(`createDatShipment: ${e}`)\n }\n }\n}\n"]}
|
|
@@ -12,7 +12,9 @@ exports.fetchSyncProductsResolver = {
|
|
|
12
12
|
const platformProducts = await getAccountingProducts(accountId);
|
|
13
13
|
const platformProductsMap = (0, build_map_1.buildMap)(platformProducts, 'sku');
|
|
14
14
|
const bizplace = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOneBy({ id: bizplaceId });
|
|
15
|
-
const bizplaceProducts = await (0, shell_1.getRepository)(product_base_1.Product).find({
|
|
15
|
+
const bizplaceProducts = await (0, shell_1.getRepository)(product_base_1.Product).find({
|
|
16
|
+
where: { bizplace: { id: bizplace.id } }
|
|
17
|
+
});
|
|
16
18
|
const bizplaceProductsMap = (0, build_map_1.buildMap)(bizplaceProducts, 'sku');
|
|
17
19
|
let items = [];
|
|
18
20
|
if (platformProductsMap.size) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-sync-products.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/fetch-sync-products.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,mFAAsE;AACtE,+DAAsD;AACtD,iDAAqD;AAErD,wDAAmD;AAEtC,QAAA,yBAAyB,GAAG;IACvC,KAAK,CAAC,iBAAiB,CACrB,CAAO,EACP,EACE,SAAS,EACT,UAAU,EACV,UAAU,EAC6E,EACzF,OAAY;QAEZ,IAAI;YACF,MAAM,gBAAgB,GAAc,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAA;YAC1E,MAAM,mBAAmB,GAAyB,IAAA,oBAAQ,EAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;YAEnF,MAAM,QAAQ,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;YACtF,MAAM,gBAAgB,GAAc,MAAM,IAAA,qBAAa,EAAC,sBAAO,CAAC,CAAC,IAAI,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"fetch-sync-products.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/fetch-sync-products.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,mFAAsE;AACtE,+DAAsD;AACtD,iDAAqD;AAErD,wDAAmD;AAEtC,QAAA,yBAAyB,GAAG;IACvC,KAAK,CAAC,iBAAiB,CACrB,CAAO,EACP,EACE,SAAS,EACT,UAAU,EACV,UAAU,EAC6E,EACzF,OAAY;QAEZ,IAAI;YACF,MAAM,gBAAgB,GAAc,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAA;YAC1E,MAAM,mBAAmB,GAAyB,IAAA,oBAAQ,EAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;YAEnF,MAAM,QAAQ,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;YACtF,MAAM,gBAAgB,GAAc,MAAM,IAAA,qBAAa,EAAC,sBAAO,CAAC,CAAC,IAAI,CAAC;gBACpE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE;aACzC,CAAC,CAAA;YACF,MAAM,mBAAmB,GAAyB,IAAA,oBAAQ,EAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;YAEnF,IAAI,KAAK,GAA6D,EAAE,CAAA;YAExE,IAAI,mBAAmB,CAAC,IAAI,EAAE;gBAC5B,mBAAmB,CAAC,OAAO,CAAC,CAAC,eAAwB,EAAE,EAAE;oBACvD,MAAM,EAAE,GAAG,EAAE,GAAY,eAAe,CAAA;oBAExC,IAAI,eAAe,GAAY,EAAE,CAAA;oBAEjC,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBAChC,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;wBAC9C,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;qBAChC;oBAED,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAE/B,KAAK,CAAC,IAAI,CAAC;wBACT,eAAe;wBACf,eAAe;qBAChB,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;aACH;YAED,IAAI,mBAAmB,CAAC,IAAI,EAAE;gBAC5B,mBAAmB,CAAC,OAAO,CAAC,CAAC,eAAwB,EAAE,EAAE;oBACvD,MAAM,EAAE,GAAG,EAAE,GAAY,eAAe,CAAA;oBAExC,IAAI,eAAe,GAAY,EAAE,CAAA;oBAEjC,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBAChC,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;wBAC9C,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;qBAChC;oBAED,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAE/B,KAAK,CAAC,IAAI,CAAC;wBACT,eAAe;wBACf,eAAe;qBAChB,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;aACH;YAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAoC,UAAU,CAAA;YACnE,MAAM,QAAQ,GAAW,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;YAC3C,MAAM,MAAM,GAAW,IAAI,GAAG,KAAK,CAAA;YAEnC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;YAC1B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAErC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;SACxB;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAA;SACR;IACH,CAAC;CACF,CAAA;AAED,SAAS,SAAS,CAAC,QAAmB;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE;QAC9C,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;YAAE,OAAO,CAAC,CAAA;QAC3B,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC,CAAA;QAC5B,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,SAAiB;IAC3D,IAAI;QACF,MAAM,UAAU,GAAkB,MAAM,sCAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAC9E,OAAO,MAAM,sCAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;KAChD;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;KAC9B;AACH,CAAC;AAPD,sDAOC","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { AccountingAPI } from '@things-factory/integration-accounting'\nimport { Product } from '@things-factory/product-base'\nimport { getRepository } from '@things-factory/shell'\n\nimport { buildMap } from '../../../utils/build-map'\n\nexport const fetchSyncProductsResolver = {\n async fetchSyncProducts(\n _: void,\n {\n accountId,\n bizplaceId,\n pagination\n }: { accountId: string; bizplaceId: string; pagination: { page: number; limit: number } },\n context: any\n ): Promise<{ items: { bizplaceProduct: Product; platformProduct: Product }[]; total: number }> {\n try {\n const platformProducts: Product[] = await getAccountingProducts(accountId)\n const platformProductsMap: Map<string, Product> = buildMap(platformProducts, 'sku')\n\n const bizplace: Bizplace = await getRepository(Bizplace).findOneBy({ id: bizplaceId })\n const bizplaceProducts: Product[] = await getRepository(Product).find({\n where: { bizplace: { id: bizplace.id } }\n })\n const bizplaceProductsMap: Map<string, Product> = buildMap(bizplaceProducts, 'sku')\n\n let items: { bizplaceProduct: Product; platformProduct: Product }[] = []\n\n if (platformProductsMap.size) {\n platformProductsMap.forEach((platformProduct: Product) => {\n const { sku }: Product = platformProduct\n\n let bizplaceProduct: Product = {}\n\n if (bizplaceProductsMap.has(sku)) {\n bizplaceProduct = bizplaceProductsMap.get(sku)\n bizplaceProductsMap.delete(sku)\n }\n\n platformProductsMap.delete(sku)\n\n items.push({\n bizplaceProduct,\n platformProduct\n })\n })\n }\n\n if (bizplaceProductsMap.size) {\n bizplaceProductsMap.forEach((bizplaceProduct: Product) => {\n const { sku }: Product = bizplaceProduct\n\n let platformProduct: Product = {}\n\n if (platformProductsMap.has(sku)) {\n platformProduct = platformProductsMap.get(sku)\n platformProductsMap.delete(sku)\n }\n\n bizplaceProductsMap.delete(sku)\n\n items.push({\n bizplaceProduct,\n platformProduct\n })\n })\n }\n\n const { page, limit }: { page: number; limit: number } = pagination\n const startIdx: number = (page - 1) * limit\n const endIdx: number = page * limit\n\n const total = items.length\n items = items.slice(startIdx, endIdx)\n\n return { items, total }\n } catch (e) {\n throw e\n }\n }\n}\n\nfunction sortBySku(products: Product[]): Product[] {\n return products.sort((a: Product, b: Product) => {\n if (a.sku > b.sku) return 1\n if (a.sku < b.sku) return -1\n return 0\n })\n}\n\nexport async function getAccountingProducts(accountId: string): Promise<Product[]> {\n try {\n const accounting: AccountingAPI = await AccountingAPI.getAccounting(accountId)\n return await AccountingAPI.getItems(accounting)\n } catch (e) {\n throw new Error(e.statusText)\n }\n}\n"]}
|
|
@@ -19,10 +19,10 @@ exports.sellercraftPackMarketplaceOrderResolver = {
|
|
|
19
19
|
const sellercraftDomain = sellercraft.domain;
|
|
20
20
|
const bizplace = await tx
|
|
21
21
|
.getRepository(biz_base_1.Bizplace)
|
|
22
|
-
.findOne({ where: { domain: sellercraftDomain } });
|
|
22
|
+
.findOne({ where: { domain: { id: sellercraftDomain.id } } });
|
|
23
23
|
let releaseGoodsWithoutPackageId = await tx.getRepository(sales_base_1.ReleaseGood).find({
|
|
24
24
|
where: {
|
|
25
|
-
bizplace,
|
|
25
|
+
bizplace: { id: bizplace.id },
|
|
26
26
|
type: 'b2c',
|
|
27
27
|
packageId: (0, typeorm_1.IsNull)(),
|
|
28
28
|
status: (0, typeorm_1.Not)((0, typeorm_1.In)([sales_base_1.ORDER_STATUS.CANCELLED, sales_base_1.ORDER_STATUS.PENDING_CANCEL, sales_base_1.ORDER_STATUS.DONE]))
|
package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sellercraft-pack-marketplace-order.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.ts"],"names":[],"mappings":";;;AAAA,qCAAoE;AAEpE,uDAAmD;AACnD,6CAA4C;AAC5C,uEAAgF;AAChF,qFAAwG;AAExG,2DAAoF;AAGvE,QAAA,uCAAuC,GAAG;IACrD,KAAK,CAAC,+BAA+B,CAAC,CAAO,EAAE,EAAE,EAAE,OAAwB;QACzE,IAAI;YACF,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;gBAC3C,MAAM,YAAY,GAAkB,MAAM,EAAE;qBACzC,aAAa,CAAC,qCAAW,CAAC;qBAC1B,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,2CAAiB,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;gBAE/E,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;oBACtC,IAAI;wBACF,MAAM,iBAAiB,GAAW,WAAW,CAAC,MAAM,CAAA;wBACpD,MAAM,QAAQ,GAAa,MAAM,EAAE;6BAChC,aAAa,CAAC,mBAAQ,CAAC;6BACvB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"sellercraft-pack-marketplace-order.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.ts"],"names":[],"mappings":"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","sourcesContent":["import { getConnection, In, IsNull, Not, Repository } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { createPayloadLog, PayloadType } from '@things-factory/integration-base'\nimport { Sellercraft, SellercraftAPI, SellercraftStatus } from '@things-factory/integration-sellercraft'\nimport { Product } from '@things-factory/product-base'\nimport { ORDER_STATUS, OrderProduct, ReleaseGood } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\n\nexport const sellercraftPackMarketplaceOrderResolver = {\n async sellercraftPackMarketplaceOrder(_: void, {}, context: ResolverContext): Promise<void> {\n try {\n await getConnection().transaction(async tx => {\n const sellercrafts: Sellercraft[] = await tx\n .getRepository(Sellercraft)\n .find({ where: { status: SellercraftStatus.ACTIVE }, relations: ['domain'] })\n\n for (const sellercraft of sellercrafts) {\n try {\n const sellercraftDomain: Domain = sellercraft.domain\n const bizplace: Bizplace = await tx\n .getRepository(Bizplace)\n .findOne({ where: { domain: { id: sellercraftDomain.id } } })\n\n let releaseGoodsWithoutPackageId: ReleaseGood[] = await tx.getRepository(ReleaseGood).find({\n where: {\n bizplace: { id: bizplace.id },\n type: 'b2c',\n packageId: IsNull(),\n status: Not(In([ORDER_STATUS.CANCELLED, ORDER_STATUS.PENDING_CANCEL, ORDER_STATUS.DONE]))\n },\n relations: ['domain', 'orderProducts', 'orderProducts.product']\n })\n\n if (releaseGoodsWithoutPackageId?.length > 0) {\n await Promise.all(\n releaseGoodsWithoutPackageId.map(async releaseGood => {\n const orderProducts: OrderProduct[] = releaseGood.orderProducts\n let sellercraftOPs: any[] = []\n\n sellercraftOPs = orderProducts.map(orderProduct => {\n const product: Product = orderProduct.product\n\n return {\n sku: product.sku,\n releaseQty: orderProduct.releaseQty,\n uom: 'EA'\n }\n })\n\n const orderInformation: any = {\n accountId: sellercraft.accountId,\n orderId: releaseGood.refNo2,\n sellercraftOPs\n }\n\n const packageId: string = await SellercraftAPI.packMarketplaceOrder(sellercraft, {\n ...orderInformation,\n context: { state: { domain: releaseGood?.domain, user: null } }\n })\n\n createPayloadLog(\n sellercraft.accountId,\n `/order/pack`,\n orderInformation,\n packageId,\n context,\n PayloadType.EGESTION,\n 'scheduler'\n )\n\n if (packageId) {\n await (tx.getRepository(ReleaseGood) as Repository<ReleaseGood>).update(\n { id: releaseGood.id },\n { packageId: packageId }\n )\n }\n })\n )\n }\n } catch (e) {\n logger.error(`sellercraftPackMarketplaceOrder: ${e}`)\n }\n }\n })\n } catch (e) {\n logger.error(`sellercraftPackMarketplaceOrder: ${e}`)\n }\n }\n}\n"]}
|
|
@@ -21,7 +21,7 @@ exports.syncAllProductsToSellercraftResolver = {
|
|
|
21
21
|
for (const sellercraft of sellercrafts) {
|
|
22
22
|
const companyBizplace = await (0, biz_base_1.getCompanyBizplace)(null, null, sellercraft.bizplace_id, tx);
|
|
23
23
|
const fulfillmentCenter = await tx.getRepository(integration_fulfillment_1.FulfillmentCenter).find({
|
|
24
|
-
where: { domain: companyBizplace.domain }
|
|
24
|
+
where: { domain: { id: companyBizplace.domain.id } }
|
|
25
25
|
});
|
|
26
26
|
await sync_products_to_sellercraft_1.syncProductsToSellercraftResolver.syncProductsToSellercraft(null, { sellercraftId: sellercraft.id, fulfillmentCenterId: fulfillmentCenter.id, toCreateSku: false }, context);
|
|
27
27
|
}
|
package/dist-server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-all-products-to-sellercraft.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC,uDAAuE;AACvE,qFAA2E;AAC3E,qFAAqE;AAErE,iFAA8F;AAEjF,QAAA,oCAAoC,GAAG;IAClD,KAAK,CAAC,4BAA4B,CAAC,CAAM,EAAE,EAAE,EAAE,OAAwB;QACrE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC9B,IAAI;YACF,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;gBAC3C,MAAM,EAAE,GAAG,MAAM,EAAE;qBAChB,aAAa,CAAC,qCAAW,CAAC;qBAC1B,kBAAkB,CAAC,aAAa,CAAC;qBACjC,kBAAkB,CAAC,oBAAoB,EAAE,QAAQ,CAAC;qBAClD,kBAAkB,CAAC,mBAAQ,EAAE,UAAU,EAAE,gCAAgC,CAAC;qBAC1E,KAAK,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAE9D,MAAM,YAAY,GAAkB,MAAM,EAAE,CAAC,UAAU,EAAE,CAAA;gBAEzD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;oBACtC,MAAM,eAAe,GAAa,MAAM,IAAA,6BAAkB,EAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;oBACnG,MAAM,iBAAiB,GAAsB,MAAM,EAAE,CAAC,aAAa,CAAC,2CAAiB,CAAC,CAAC,IAAI,CAAC;wBAC1F,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"sync-all-products-to-sellercraft.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC,uDAAuE;AACvE,qFAA2E;AAC3E,qFAAqE;AAErE,iFAA8F;AAEjF,QAAA,oCAAoC,GAAG;IAClD,KAAK,CAAC,4BAA4B,CAAC,CAAM,EAAE,EAAE,EAAE,OAAwB;QACrE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC9B,IAAI;YACF,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;gBAC3C,MAAM,EAAE,GAAG,MAAM,EAAE;qBAChB,aAAa,CAAC,qCAAW,CAAC;qBAC1B,kBAAkB,CAAC,aAAa,CAAC;qBACjC,kBAAkB,CAAC,oBAAoB,EAAE,QAAQ,CAAC;qBAClD,kBAAkB,CAAC,mBAAQ,EAAE,UAAU,EAAE,gCAAgC,CAAC;qBAC1E,KAAK,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAE9D,MAAM,YAAY,GAAkB,MAAM,EAAE,CAAC,UAAU,EAAE,CAAA;gBAEzD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;oBACtC,MAAM,eAAe,GAAa,MAAM,IAAA,6BAAkB,EAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;oBACnG,MAAM,iBAAiB,GAAsB,MAAM,EAAE,CAAC,aAAa,CAAC,2CAAiB,CAAC,CAAC,IAAI,CAAC;wBAC1F,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE;qBACrD,CAAC,CAAA;oBACF,MAAM,gEAAQ,CAAC,yBAAyB,CACtC,IAAI,EACJ,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAChG,OAAO,CACR,CAAA;iBACF;YACH,CAAC,CAAC,CAAA;SACH;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;SACf;IACH,CAAC;CACF,CAAA","sourcesContent":["import { getConnection } from 'typeorm'\n\nimport { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'\nimport { FulfillmentCenter } from '@things-factory/integration-fulfillment'\nimport { Sellercraft } from '@things-factory/integration-sellercraft'\n\nimport { syncProductsToSellercraftResolver as resolver } from './sync-products-to-sellercraft'\n\nexport const syncAllProductsToSellercraftResolver = {\n async syncAllProductsToSellercraft(_: any, {}, context: ResolverContext): Promise<void> {\n const { user } = context.state\n try {\n await getConnection().transaction(async tx => {\n const qb = await tx\n .getRepository(Sellercraft)\n .createQueryBuilder('sellercraft')\n .innerJoinAndSelect('sellercraft.domain', 'domain')\n .innerJoinAndSelect(Bizplace, 'bizplace', 'bizplace.domain_id = domain.id')\n .where('sellercraft.status = :status', { status: 'ACTIVE' })\n\n const sellercrafts: Sellercraft[] = await qb.getRawMany()\n\n for (const sellercraft of sellercrafts) {\n const companyBizplace: Bizplace = await getCompanyBizplace(null, null, sellercraft.bizplace_id, tx)\n const fulfillmentCenter: FulfillmentCenter = await tx.getRepository(FulfillmentCenter).find({\n where: { domain: { id: companyBizplace.domain.id } }\n })\n await resolver.syncProductsToSellercraft(\n null,\n { sellercraftId: sellercraft.id, fulfillmentCenterId: fulfillmentCenter.id, toCreateSku: false },\n context\n )\n }\n })\n } catch (e) {\n console.log(e)\n }\n }\n}\n"]}
|
|
@@ -12,7 +12,9 @@ exports.syncProductsFromAccountResolver = {
|
|
|
12
12
|
let platformProducts = await (0, fetch_sync_products_1.getAccountingProducts)(accountId);
|
|
13
13
|
const bizplace = await tx.getRepository(biz_base_1.Bizplace).findOneBy({ id: bizplaceId });
|
|
14
14
|
const platformProductsMap = (0, build_map_1.buildMap)(platformProducts, 'sku');
|
|
15
|
-
let bizplaceProducts = await tx
|
|
15
|
+
let bizplaceProducts = await tx
|
|
16
|
+
.getRepository(product_base_1.Product)
|
|
17
|
+
.find({ where: { bizplace: { id: bizplace.id } } });
|
|
16
18
|
const updateTargetProducts = bizplaceProducts
|
|
17
19
|
.filter(({ sku }) => platformProductsMap.has(sku))
|
|
18
20
|
.map((bizplaceProduct) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-products-from-account.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sync-products-from-account.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,+DAAsD;AAEtD,wDAAmD;AACnD,+DAA6D;AAEhD,QAAA,+BAA+B,GAAG;IAC7C,KAAK,CAAC,uBAAuB,CAC3B,CAAO,EACP,EAAE,SAAS,EAAE,UAAU,EAA6C,EACpE,OAAwB;QAExB,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAC5B,IAAI,gBAAgB,GAAc,MAAM,IAAA,2CAAqB,EAAC,SAAS,CAAC,CAAA;YACxE,MAAM,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;YACzF,MAAM,mBAAmB,GAAyB,IAAA,oBAAQ,EAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;YAEnF,IAAI,gBAAgB,GAAc,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"sync-products-from-account.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sync-products-from-account.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,+DAAsD;AAEtD,wDAAmD;AACnD,+DAA6D;AAEhD,QAAA,+BAA+B,GAAG;IAC7C,KAAK,CAAC,uBAAuB,CAC3B,CAAO,EACP,EAAE,SAAS,EAAE,UAAU,EAA6C,EACpE,OAAwB;QAExB,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAC5B,IAAI,gBAAgB,GAAc,MAAM,IAAA,2CAAqB,EAAC,SAAS,CAAC,CAAA;YACxE,MAAM,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;YACzF,MAAM,mBAAmB,GAAyB,IAAA,oBAAQ,EAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;YAEnF,IAAI,gBAAgB,GAAc,MAAM,EAAE;iBACvC,aAAa,CAAC,sBAAO,CAAC;iBACtB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAErD,MAAM,oBAAoB,GAAc,gBAAgB;iBACrD,MAAM,CAAC,CAAC,EAAE,GAAG,EAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC1D,GAAG,CAAC,CAAC,eAAwB,EAAE,EAAE;gBAChC,MAAM,eAAe,GAAY,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;gBAE7E,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;oBACnD,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;gBACzF,CAAC,CAAC,CAAA;gBAEF,OAAO,eAAe,CAAA;YACxB,CAAC,CAAC,CAAA;YAEJ,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;SAC3E;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAA;SACR;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { Product } from '@things-factory/product-base'\n\nimport { buildMap } from '../../../utils/build-map'\nimport { getAccountingProducts } from './fetch-sync-products'\n\nexport const syncProductsFromAccountResolver = {\n async syncProductsFromAccount(\n _: void,\n { accountId, bizplaceId }: { accountId: string; bizplaceId: string },\n context: ResolverContext\n ): Promise<void> {\n try {\n const { tx } = context.state\n let platformProducts: Product[] = await getAccountingProducts(accountId)\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({ id: bizplaceId })\n const platformProductsMap: Map<string, Product> = buildMap(platformProducts, 'sku')\n\n let bizplaceProducts: Product[] = await tx\n .getRepository(Product)\n .find({ where: { bizplace: { id: bizplace.id } } })\n\n const updateTargetProducts: Product[] = bizplaceProducts\n .filter(({ sku }: Product) => platformProductsMap.has(sku))\n .map((bizplaceProduct: Product) => {\n const platformProduct: Product = platformProductsMap.get(bizplaceProduct.sku)\n\n Object.keys(platformProduct).forEach((key: string) => {\n bizplaceProduct[key] = platformProduct[key] === undefined ? null : platformProduct[key]\n })\n\n return bizplaceProduct\n })\n\n await tx.getRepository(Product).save(updateTargetProducts, { chunk: 500 })\n } catch (e) {\n throw e\n }\n }\n}\n"]}
|
|
@@ -11,7 +11,9 @@ exports.syncProductsToAccountResolver = {
|
|
|
11
11
|
try {
|
|
12
12
|
const { tx } = context.state;
|
|
13
13
|
const bizplace = await tx.getRepository(biz_base_1.Bizplace).findOneBy({ id: bizplaceId });
|
|
14
|
-
const bizplaceProducts = await tx
|
|
14
|
+
const bizplaceProducts = await tx
|
|
15
|
+
.getRepository(product_base_1.Product)
|
|
16
|
+
.find({ where: { bizplace: { id: bizplace.id } } });
|
|
15
17
|
let platformProducts = await (0, fetch_sync_products_1.getAccountingProducts)(accountId);
|
|
16
18
|
let platformProductsMap = (0, build_map_1.buildMap)(platformProducts, 'sku');
|
|
17
19
|
const updateTargetProducts = bizplaceProducts.map((bizplaceProduct) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-products-to-account.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sync-products-to-account.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,mFAAsE;AACtE,+DAAsD;AAEtD,wDAAmD;AACnD,+DAA6D;AAEhD,QAAA,6BAA6B,GAAG;IAC3C,KAAK,CAAC,qBAAqB,CACzB,CAAO,EACP,EAAE,SAAS,EAAE,UAAU,EAA6C,EACpE,OAAwB;QAExB,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAE5B,MAAM,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;YACzF,MAAM,gBAAgB,GAAc,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"sync-products-to-account.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sync-products-to-account.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,mFAAsE;AACtE,+DAAsD;AAEtD,wDAAmD;AACnD,+DAA6D;AAEhD,QAAA,6BAA6B,GAAG;IAC3C,KAAK,CAAC,qBAAqB,CACzB,CAAO,EACP,EAAE,SAAS,EAAE,UAAU,EAA6C,EACpE,OAAwB;QAExB,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAE5B,MAAM,QAAQ,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;YACzF,MAAM,gBAAgB,GAAc,MAAM,EAAE;iBACzC,aAAa,CAAC,sBAAO,CAAC;iBACtB,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAErD,IAAI,gBAAgB,GAAc,MAAM,IAAA,2CAAqB,EAAC,SAAS,CAAC,CAAA;YACxE,IAAI,mBAAmB,GAAyB,IAAA,oBAAQ,EAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;YAEjF,MAAM,oBAAoB,GAAc,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAwB,EAAE,EAAE;gBACxF,IAAI,eAAe,GAAY,EAAE,CAAA;gBACjC,IAAI,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;oBAChD,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;iBAC/D;gBAED,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;oBACnD,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;gBAC7C,CAAC,CAAC,CAAA;gBAEF,OAAO,eAAe,CAAA;YACxB,CAAC,CAAC,CAAA;YAEF,MAAM,eAAe,GAAgB,UAAU,CAAC,oBAAoB,CAAC,CAAA;YACrE,MAAM,UAAU,GAAkB,MAAM,sCAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;YAE9E,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvD,MAAM,QAAQ,GAAc,eAAe,CAAC,CAAC,CAAC,CAAA;gBAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;gBACvB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;gBACvB,IAAI;oBACF,MAAM,sCAAa,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;iBACjD;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;iBAC9B;aACF;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAA;SACR;IACH,CAAC;CACF,CAAA;AAED,SAAS,UAAU,CAAI,IAAS,EAAE,UAAkB,GAAG;IACrD,IAAI,UAAU,GAAU,EAAE,CAAA;IAC1B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACtB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;KACzC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { AccountingAPI } from '@things-factory/integration-accounting'\nimport { Product } from '@things-factory/product-base'\n\nimport { buildMap } from '../../../utils/build-map'\nimport { getAccountingProducts } from './fetch-sync-products'\n\nexport const syncProductsToAccountResolver = {\n async syncProductsToAccount(\n _: void,\n { accountId, bizplaceId }: { accountId: string; bizplaceId: string },\n context: ResolverContext\n ): Promise<void> {\n try {\n const { tx } = context.state\n\n const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({ id: bizplaceId })\n const bizplaceProducts: Product[] = await tx\n .getRepository(Product)\n .find({ where: { bizplace: { id: bizplace.id } } })\n\n let platformProducts: Product[] = await getAccountingProducts(accountId)\n let platformProductsMap: Map<string, Product> = buildMap(platformProducts, 'sku')\n\n const updateTargetProducts: Product[] = bizplaceProducts.map((bizplaceProduct: Product) => {\n let platformProduct: Product = {}\n if (platformProductsMap.has(bizplaceProduct.sku)) {\n platformProduct = platformProductsMap.get(bizplaceProduct.sku)\n }\n\n Object.keys(bizplaceProduct).forEach((key: string) => {\n platformProduct[key] = bizplaceProduct[key]\n })\n\n return platformProduct\n })\n\n const chunkedProducts: Product[][] = splitChunk(updateTargetProducts)\n const accounting: AccountingAPI = await AccountingAPI.getAccounting(accountId)\n\n for (let i: number = 0; i < chunkedProducts.length; i++) {\n const products: Product[] = chunkedProducts[i]\n const req = context.req\n req.products = products\n try {\n await AccountingAPI.updateItems(accounting, req)\n } catch (e) {\n throw new Error(e.statusText)\n }\n }\n } catch (e) {\n throw e\n }\n }\n}\n\nfunction splitChunk<T>(data: T[], unitCnt: number = 100): T[][] {\n let splitChunk: T[][] = []\n while (data.length > 0) {\n splitChunk.push(data.splice(0, unitCnt))\n }\n\n return splitChunk\n}\n"]}
|
|
@@ -18,7 +18,9 @@ exports.syncProductsToSellercraftResolver = {
|
|
|
18
18
|
.findOne({ where: { id: sellercraftId }, relations: ['domain'] });
|
|
19
19
|
const customerDomain = sellercraft.domain;
|
|
20
20
|
const fulfilmentCenter = await integration_fulfillment_1.FulfillmentAPI.getFulfillmentCenter(fulfillmentCenterId);
|
|
21
|
-
const customerBizplace = await tx
|
|
21
|
+
const customerBizplace = await tx
|
|
22
|
+
.getRepository(biz_base_1.Bizplace)
|
|
23
|
+
.findOne({ where: { domain: { id: customerDomain.id } } });
|
|
22
24
|
await tx.query(`
|
|
23
25
|
create temp table temp_warehouse_product_inventory ON COMMIT DROP as (
|
|
24
26
|
select p.id, p.sku as product_sku, p.name as product_name, p.description as product_description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-products-to-sellercraft.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sync-products-to-sellercraft.ts"],"names":[],"mappings":"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","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { FulfillmentAPI, FulfillmentCenter } from '@things-factory/integration-fulfillment'\nimport { Sellercraft, SellercraftAPI } from '@things-factory/integration-sellercraft'\nimport { ProductDetail } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\n\nexport const syncProductsToSellercraftResolver = {\n async syncProductsToSellercraft(\n _: void,\n {\n sellercraftId,\n fulfillmentCenterId\n }: { sellercraftId: string; fulfillmentCenterId: string; toCreateSku: boolean },\n context: any\n ): Promise<void> {\n try {\n const { domain, tx } = context.state\n\n let page: number = 0\n let hasMorePage: boolean = true\n const limit: number = 50\n\n const sellercraft: Sellercraft = await tx\n .getRepository(Sellercraft)\n .findOne({ where: { id: sellercraftId }, relations: ['domain'] })\n const customerDomain: Domain = sellercraft.domain\n const fulfilmentCenter: FulfillmentCenter = await FulfillmentAPI.getFulfillmentCenter(fulfillmentCenterId)\n const customerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: customerDomain } })\n\n await tx.query(\n `\n create temp table temp_warehouse_product_inventory ON COMMIT DROP as (\n select p.id, p.sku as product_sku, p.name as product_name, p.description as product_description, \n pd.gtin, pd.uom, pd.packing_size, coalesce(pd.nett_weight, 0) as nett_weight, pd.width, pd.\"depth\", pd.height,\n coalesce(src.qty, 0) as available_qty, coalesce(src.qty - src.\"remainQty\", 0) as reserved_qty, coalesce(src.\"remainQty\",0) as remain_qty\n from bizplaces b\n inner join companies c on c.id = b.company_id \n inner join domains d on d.id = c.domain_id\n inner join products p on p.domain_id = b.domain_id or p.domain_id = c.domain_id \n inner join product_details pd on pd.product_id = p.id\n left join (\n select wboi.* from warehouse_bizplace_onhand_inventories wboi \n inner join domains d on d.id = wboi.\"domainId\"\n inner join fulfillment_centers fc on d.subdomain = fc.center_id \n where fc.id= $1 \n and wboi.\"bizplaceId\" = $2 and \"groupType\" = 'SINGLE'\n ) src on src.\"productId\" = pd.\"product_id\" \n and src.\"packingType\" = pd.\"packing_type\" \n and src.\"packingSize\" = pd.\"packing_size\" \n and src.\"uom\" = pd.\"uom\" \n where b.id = $2\n )\n `,\n [fulfilmentCenter.id, customerBizplace.id]\n )\n\n let total = await tx.query(`\n select count(*) from temp_warehouse_product_inventory \n `)\n\n while (hasMorePage) {\n hasMorePage = false\n try {\n // const { items, total } = await FulfillmentAPI.getInventoryProductGroupOpenAPI(fulfilmentCenter, {\n // warehouseId: customerBizplace.id,\n // paginationEntriesPerPage: limit,\n // paginationOffset: page\n // })\n\n const items = await tx.query(\n `\n select * from temp_warehouse_product_inventory limit $1 offset $2\n `,\n [limit, page * limit]\n )\n\n let sellercraftInv: any[] = []\n\n items.map(async item => {\n let packingSize: number = 1\n\n sellercraftInv.push({\n sku: item.product_sku,\n gtin: item.gtin,\n stock: {\n quantity_total: item.available_qty * packingSize < 0 ? 0 : item.available_qty * packingSize,\n quantity_reserved: item.reserved_qty * packingSize < 0 ? 0 : item.reserved_qty * packingSize,\n unit_of_measure: 'EA'\n },\n package_weight_gm: item.nett_weight <= 0 ? 1 : item.nett_weight,\n package_dimensions: {\n length_mm: item.depth <= 0 ? 1 : item.depth,\n width_mm: item.width <= 0 ? 1 : item.width,\n height_mm: item.height <= 0 ? 1 : item.height\n }\n })\n })\n\n const delay = (ms: number) => {\n return new Promise(resolve => setTimeout(resolve, ms))\n }\n\n await delay(500)\n\n await SellercraftAPI.updateProduct(sellercraft, { context, accountId: sellercraft.accountId, sellercraftInv })\n\n page++\n hasMorePage = (total[0]?.count || 0) > page * limit\n } catch (e) {\n logger.error(\n `[syncProductsToSellercraftResolver] sellercraftID:${sellercraftId} fulfillmentCenterId:${fulfillmentCenterId} page:${page} - ${e}`\n )\n }\n }\n } catch (e) {\n logger.error(`syncProductsToSellercraftResolver: ${e}`)\n }\n }\n}\n\n/**\n * @summary Check for product child qty at any scanned level\n * @description It will check every level of product detail by comparing scanned level and GAN registered level.\n * By getting the level that has relation, child qty will be retrieved\n * 1st level: PALLET -> 2 CARTONS (scan), 2nd level: CARTON -> 6 BAGS, 3rd level: BAG -> 10 UNITS, lowest: UNIT (order registered packing type)\n */\nexport async function getChildPackingSize(\n productDetails: ProductDetail[],\n defaultProductDetail: ProductDetail,\n unmatchingProductDetail: ProductDetail\n): Promise<number> {\n let hasChildRelation: boolean = Boolean(unmatchingProductDetail?.childProductDetail)\n let hasMatchingChild: boolean\n let packingSize: number = 1\n let currentChildProductDetail: ProductDetail\n\n if (hasChildRelation) {\n currentChildProductDetail = productDetails.find(\n (productDetail: ProductDetail) => productDetail.id === unmatchingProductDetail.childProductDetail.id\n )\n\n if (!currentChildProductDetail) {\n throw new Error(`Unable to find matching packing type for GTIN (${unmatchingProductDetail.gtin})`)\n }\n\n hasMatchingChild = Boolean(defaultProductDetail.id === currentChildProductDetail.id)\n if (hasMatchingChild) {\n packingSize = unmatchingProductDetail.packingSize\n } else {\n packingSize = unmatchingProductDetail.packingSize * packingSize\n }\n } else {\n throw new Error(`No child product result for GTIN (${unmatchingProductDetail.gtin})`)\n }\n\n while (hasChildRelation && !hasMatchingChild) {\n if (hasMatchingChild) {\n packingSize = currentChildProductDetail.packingSize * packingSize // 12 x 10\n } else if (!hasMatchingChild && hasChildRelation) {\n packingSize = currentChildProductDetail.packingSize * packingSize // 12 x 10\n currentChildProductDetail = productDetails.find(\n (productDetail: ProductDetail) => productDetail.id === currentChildProductDetail.childProductDetail.id\n )\n\n hasChildRelation = Boolean(currentChildProductDetail?.childProductDetail)\n hasMatchingChild = Boolean(defaultProductDetail.id === currentChildProductDetail.id)\n } else if (!hasChildRelation && !hasMatchingChild) {\n throw new Error(`Unable to find matching packing type for GTIN (${unmatchingProductDetail.gtin})`)\n }\n }\n\n return packingSize\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sync-products-to-sellercraft.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/sync-products-to-sellercraft.ts"],"names":[],"mappings":"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","sourcesContent":["import { Bizplace } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { FulfillmentAPI, FulfillmentCenter } from '@things-factory/integration-fulfillment'\nimport { Sellercraft, SellercraftAPI } from '@things-factory/integration-sellercraft'\nimport { ProductDetail } from '@things-factory/product-base'\nimport { Domain } from '@things-factory/shell'\n\nexport const syncProductsToSellercraftResolver = {\n async syncProductsToSellercraft(\n _: void,\n {\n sellercraftId,\n fulfillmentCenterId\n }: { sellercraftId: string; fulfillmentCenterId: string; toCreateSku: boolean },\n context: any\n ): Promise<void> {\n try {\n const { domain, tx } = context.state\n\n let page: number = 0\n let hasMorePage: boolean = true\n const limit: number = 50\n\n const sellercraft: Sellercraft = await tx\n .getRepository(Sellercraft)\n .findOne({ where: { id: sellercraftId }, relations: ['domain'] })\n const customerDomain: Domain = sellercraft.domain\n const fulfilmentCenter: FulfillmentCenter = await FulfillmentAPI.getFulfillmentCenter(fulfillmentCenterId)\n const customerBizplace: Bizplace = await tx\n .getRepository(Bizplace)\n .findOne({ where: { domain: { id: customerDomain.id } } })\n\n await tx.query(\n `\n create temp table temp_warehouse_product_inventory ON COMMIT DROP as (\n select p.id, p.sku as product_sku, p.name as product_name, p.description as product_description, \n pd.gtin, pd.uom, pd.packing_size, coalesce(pd.nett_weight, 0) as nett_weight, pd.width, pd.\"depth\", pd.height,\n coalesce(src.qty, 0) as available_qty, coalesce(src.qty - src.\"remainQty\", 0) as reserved_qty, coalesce(src.\"remainQty\",0) as remain_qty\n from bizplaces b\n inner join companies c on c.id = b.company_id \n inner join domains d on d.id = c.domain_id\n inner join products p on p.domain_id = b.domain_id or p.domain_id = c.domain_id \n inner join product_details pd on pd.product_id = p.id\n left join (\n select wboi.* from warehouse_bizplace_onhand_inventories wboi \n inner join domains d on d.id = wboi.\"domainId\"\n inner join fulfillment_centers fc on d.subdomain = fc.center_id \n where fc.id= $1 \n and wboi.\"bizplaceId\" = $2 and \"groupType\" = 'SINGLE'\n ) src on src.\"productId\" = pd.\"product_id\" \n and src.\"packingType\" = pd.\"packing_type\" \n and src.\"packingSize\" = pd.\"packing_size\" \n and src.\"uom\" = pd.\"uom\" \n where b.id = $2\n )\n `,\n [fulfilmentCenter.id, customerBizplace.id]\n )\n\n let total = await tx.query(`\n select count(*) from temp_warehouse_product_inventory \n `)\n\n while (hasMorePage) {\n hasMorePage = false\n try {\n // const { items, total } = await FulfillmentAPI.getInventoryProductGroupOpenAPI(fulfilmentCenter, {\n // warehouseId: customerBizplace.id,\n // paginationEntriesPerPage: limit,\n // paginationOffset: page\n // })\n\n const items = await tx.query(\n `\n select * from temp_warehouse_product_inventory limit $1 offset $2\n `,\n [limit, page * limit]\n )\n\n let sellercraftInv: any[] = []\n\n items.map(async item => {\n let packingSize: number = 1\n\n sellercraftInv.push({\n sku: item.product_sku,\n gtin: item.gtin,\n stock: {\n quantity_total: item.available_qty * packingSize < 0 ? 0 : item.available_qty * packingSize,\n quantity_reserved: item.reserved_qty * packingSize < 0 ? 0 : item.reserved_qty * packingSize,\n unit_of_measure: 'EA'\n },\n package_weight_gm: item.nett_weight <= 0 ? 1 : item.nett_weight,\n package_dimensions: {\n length_mm: item.depth <= 0 ? 1 : item.depth,\n width_mm: item.width <= 0 ? 1 : item.width,\n height_mm: item.height <= 0 ? 1 : item.height\n }\n })\n })\n\n const delay = (ms: number) => {\n return new Promise(resolve => setTimeout(resolve, ms))\n }\n\n await delay(500)\n\n await SellercraftAPI.updateProduct(sellercraft, { context, accountId: sellercraft.accountId, sellercraftInv })\n\n page++\n hasMorePage = (total[0]?.count || 0) > page * limit\n } catch (e) {\n logger.error(\n `[syncProductsToSellercraftResolver] sellercraftID:${sellercraftId} fulfillmentCenterId:${fulfillmentCenterId} page:${page} - ${e}`\n )\n }\n }\n } catch (e) {\n logger.error(`syncProductsToSellercraftResolver: ${e}`)\n }\n }\n}\n\n/**\n * @summary Check for product child qty at any scanned level\n * @description It will check every level of product detail by comparing scanned level and GAN registered level.\n * By getting the level that has relation, child qty will be retrieved\n * 1st level: PALLET -> 2 CARTONS (scan), 2nd level: CARTON -> 6 BAGS, 3rd level: BAG -> 10 UNITS, lowest: UNIT (order registered packing type)\n */\nexport async function getChildPackingSize(\n productDetails: ProductDetail[],\n defaultProductDetail: ProductDetail,\n unmatchingProductDetail: ProductDetail\n): Promise<number> {\n let hasChildRelation: boolean = Boolean(unmatchingProductDetail?.childProductDetail)\n let hasMatchingChild: boolean\n let packingSize: number = 1\n let currentChildProductDetail: ProductDetail\n\n if (hasChildRelation) {\n currentChildProductDetail = productDetails.find(\n (productDetail: ProductDetail) => productDetail.id === unmatchingProductDetail.childProductDetail.id\n )\n\n if (!currentChildProductDetail) {\n throw new Error(`Unable to find matching packing type for GTIN (${unmatchingProductDetail.gtin})`)\n }\n\n hasMatchingChild = Boolean(defaultProductDetail.id === currentChildProductDetail.id)\n if (hasMatchingChild) {\n packingSize = unmatchingProductDetail.packingSize\n } else {\n packingSize = unmatchingProductDetail.packingSize * packingSize\n }\n } else {\n throw new Error(`No child product result for GTIN (${unmatchingProductDetail.gtin})`)\n }\n\n while (hasChildRelation && !hasMatchingChild) {\n if (hasMatchingChild) {\n packingSize = currentChildProductDetail.packingSize * packingSize // 12 x 10\n } else if (!hasMatchingChild && hasChildRelation) {\n packingSize = currentChildProductDetail.packingSize * packingSize // 12 x 10\n currentChildProductDetail = productDetails.find(\n (productDetail: ProductDetail) => productDetail.id === currentChildProductDetail.childProductDetail.id\n )\n\n hasChildRelation = Boolean(currentChildProductDetail?.childProductDetail)\n hasMatchingChild = Boolean(defaultProductDetail.id === currentChildProductDetail.id)\n } else if (!hasChildRelation && !hasMatchingChild) {\n throw new Error(`Unable to find matching packing type for GTIN (${unmatchingProductDetail.gtin})`)\n }\n }\n\n return packingSize\n}\n"]}
|
package/dist-server/index.js
CHANGED
|
@@ -18,7 +18,7 @@ process.on('bootstrap-module-start', async ({ app, config, schema }) => {
|
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
20
|
const { company } = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOne({
|
|
21
|
-
where: { domain },
|
|
21
|
+
where: { domain: { id: domain.id } },
|
|
22
22
|
relations: ['company', 'company.domain']
|
|
23
23
|
});
|
|
24
24
|
const companyDomain = company.domain;
|
package/dist-server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,yBAAsB;AACtB,oBAAiB;AAGjB,uDAAmD;AACnD,iDAA6D;AAE7D,oDAAyB;AACzB,wDAA6B;AAC7B,uDAA4B;AAU5B,OAAO,CAAC,EAAE,CAAC,wBAA+B,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAO,EAAE,EAAE;IACjF,OAAO,CAAC,gBAAgB,GAAG,KAAK,EAAE,MAAc,EAAE,IAAU,EAAoB,EAAE;QAChF,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE;YACpB,OAAO,KAAK,CAAA;SACb;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAA;SAChC;aAAM;YACL,MAAM,EAAE,OAAO,EAAE,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;gBAClE,KAAK,EAAE,EAAE,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,yBAAsB;AACtB,oBAAiB;AAGjB,uDAAmD;AACnD,iDAA6D;AAE7D,oDAAyB;AACzB,wDAA6B;AAC7B,uDAA4B;AAU5B,OAAO,CAAC,EAAE,CAAC,wBAA+B,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAO,EAAE,EAAE;IACjF,OAAO,CAAC,gBAAgB,GAAG,KAAK,EAAE,MAAc,EAAE,IAAU,EAAoB,EAAE;QAChF,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE;YACpB,OAAO,KAAK,CAAA;SACb;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAA;SAChC;aAAM;YACL,MAAM,EAAE,OAAO,EAAE,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;gBAClE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE;gBACpC,SAAS,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;aACzC,CAAC,CAAA;YACF,MAAM,aAAa,GAAW,OAAO,CAAC,MAAM,CAAA;YAC5C,OAAO,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAA;SACvC;IACH,CAAC,CAAA;AACH,CAAC,CAAC,CAAA","sourcesContent":["import './routers/api'\nimport './routes'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nexport * from './graphql'\nexport * from './middlewares'\nexport * from './migrations'\n\ndeclare global {\n namespace NodeJS {\n interface Process {\n superUserGranted: (domain: Domain, user: User) => Promise<boolean>\n }\n }\n}\n\nprocess.on('bootstrap-module-start' as any, async ({ app, config, schema }: any) => {\n process.superUserGranted = async (domain: Domain, user: User): Promise<boolean> => {\n if (!domain || !user) {\n return false\n }\n\n if (domain.extType === 'company') {\n return domain.owner === user.id\n } else {\n const { company }: Bizplace = await getRepository(Bizplace).findOne({\n where: { domain: { id: domain.id } },\n relations: ['company', 'company.domain']\n })\n const companyDomain: Domain = company.domain\n return companyDomain.owner === user.id\n }\n }\n})\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.businessMiddleware = void 0;
|
|
4
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
4
5
|
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
6
|
const shell_1 = require("@things-factory/shell");
|
|
6
7
|
const debug = require('debug')('things-factory:operato-hub:business-middleware');
|
|
@@ -9,18 +10,20 @@ async function businessMiddleware(context, next) {
|
|
|
9
10
|
debug('user', user === null || user === void 0 ? void 0 : user.email);
|
|
10
11
|
if (user) {
|
|
11
12
|
const domain = await (0, shell_1.getDomainFromURL)(context);
|
|
13
|
+
const application = await (0, shell_1.getRepository)(auth_base_1.Application).findOne({ where: { id: user.reference } });
|
|
12
14
|
let company;
|
|
13
15
|
if (domain.extType === 'company') {
|
|
14
|
-
company = await (0, shell_1.getRepository)(biz_base_1.Company).findOne({ where: { domain }, relations: ['domain'] });
|
|
16
|
+
company = await (0, shell_1.getRepository)(biz_base_1.Company).findOne({ where: { domain: { id: domain.id } }, relations: ['domain'] });
|
|
15
17
|
}
|
|
16
18
|
else {
|
|
17
19
|
const bizplace = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOne({
|
|
18
|
-
where: { domain },
|
|
20
|
+
where: { domain: { id: domain.id } },
|
|
19
21
|
relations: ['company', 'domain']
|
|
20
22
|
});
|
|
21
23
|
company = bizplace.company;
|
|
22
24
|
}
|
|
23
25
|
context.state.business = company;
|
|
26
|
+
context.state.application = application;
|
|
24
27
|
}
|
|
25
28
|
await next();
|
|
26
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"business-middleware.js","sourceRoot":"","sources":["../../server/middlewares/business-middleware.ts"],"names":[],"mappings":";;;AAAA,uDAA4D;AAC5D,iDAA+E;AAE/E,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,gDAAgD,CAAC,CAAA;AAEzE,KAAK,UAAU,kBAAkB,CAAC,OAAO,EAAE,IAAI;IACpD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE9B,KAAK,CAAC,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,CAAA;IAE1B,IAAI,IAAI,EAAE;QACR,MAAM,MAAM,GAAW,MAAM,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"business-middleware.js","sourceRoot":"","sources":["../../server/middlewares/business-middleware.ts"],"names":[],"mappings":";;;AAAA,yDAAuD;AACvD,uDAA4D;AAC5D,iDAA+E;AAE/E,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,gDAAgD,CAAC,CAAA;AAEzE,KAAK,UAAU,kBAAkB,CAAC,OAAO,EAAE,IAAI;IACpD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE9B,KAAK,CAAC,MAAM,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,CAAA;IAE1B,IAAI,IAAI,EAAE;QACR,MAAM,MAAM,GAAW,MAAM,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAA;QACtD,MAAM,WAAW,GAAgB,MAAM,IAAA,qBAAa,EAAC,uBAAW,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAE5G,IAAI,OAAgB,CAAA;QACpB,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO,GAAG,MAAM,IAAA,qBAAa,EAAC,kBAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;SAChH;aAAM;YACL,MAAM,QAAQ,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;gBAC/D,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE;gBACpC,SAAS,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;aACjC,CAAC,CAAA;YACF,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;SAC3B;QAED,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAA;QAChC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAA;KACxC;IAED,MAAM,IAAI,EAAE,CAAA;AACd,CAAC;AAzBD,gDAyBC","sourcesContent":["import { Application } from '@things-factory/auth-base'\nimport { Bizplace, Company } from '@things-factory/biz-base'\nimport { Domain, getDomainFromURL, getRepository } from '@things-factory/shell'\n\nconst debug = require('debug')('things-factory:operato-hub:business-middleware')\n\nexport async function businessMiddleware(context, next) {\n const { user } = context.state\n\n debug('user', user?.email)\n\n if (user) {\n const domain: Domain = await getDomainFromURL(context)\n const application: Application = await getRepository(Application).findOne({ where: { id: user.reference } })\n\n let company: Company\n if (domain.extType === 'company') {\n company = await getRepository(Company).findOne({ where: { domain: { id: domain.id } }, relations: ['domain'] })\n } else {\n const bizplace: Bizplace = await getRepository(Bizplace).findOne({\n where: { domain: { id: domain.id } },\n relations: ['company', 'domain']\n })\n company = bizplace.company\n }\n\n context.state.business = company\n context.state.application = application\n }\n\n await next()\n}\n"]}
|
|
@@ -16,7 +16,7 @@ async function storeMiddleware(context, next) {
|
|
|
16
16
|
}
|
|
17
17
|
if (storeId) {
|
|
18
18
|
marketplaceStore = await (0, shell_1.getRepository)(integration_marketplace_1.MarketplaceStore).findOne({
|
|
19
|
-
where: { domain: business.domain, name: storeId, status: 'ACTIVE' },
|
|
19
|
+
where: { domain: { id: business.domain.id }, name: storeId, status: 'ACTIVE' },
|
|
20
20
|
relations: ['domain']
|
|
21
21
|
});
|
|
22
22
|
debug('marketplace-store', storeId, (_a = marketplaceStore === null || marketplaceStore === void 0 ? void 0 : marketplaceStore.domain) === null || _a === void 0 ? void 0 : _a.subdomain);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-middleware.js","sourceRoot":"","sources":["../../server/middlewares/store-middleware.ts"],"names":[],"mappings":";;;AAAA,qFAAoG;AACpG,iDAAqD;AAErD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,6CAA6C,CAAC,CAAA;AAEtE,KAAK,UAAU,eAAe,CAAC,OAAO,EAAE,IAAI;;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAClC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAA;IAErB,IAAI,gBAAwC,CAAA;IAE5C,KAAK,CAAC,mBAAmB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAE7C,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAA;KACjD;IAED,IAAI,OAAO,EAAE;QACX,gBAAgB,GAAG,MAAM,IAAA,qBAAa,EAAC,0CAAsB,CAAC,CAAC,OAAO,CAAC;YACrE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"store-middleware.js","sourceRoot":"","sources":["../../server/middlewares/store-middleware.ts"],"names":[],"mappings":";;;AAAA,qFAAoG;AACpG,iDAAqD;AAErD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,6CAA6C,CAAC,CAAA;AAEtE,KAAK,UAAU,eAAe,CAAC,OAAO,EAAE,IAAI;;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAClC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAA;IAErB,IAAI,gBAAwC,CAAA;IAE5C,KAAK,CAAC,mBAAmB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAE7C,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAA;KACjD;IAED,IAAI,OAAO,EAAE;QACX,gBAAgB,GAAG,MAAM,IAAA,qBAAa,EAAC,0CAAsB,CAAC,CAAC,OAAO,CAAC;YACrE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC9E,SAAS,EAAE,CAAC,QAAQ,CAAC;SACtB,CAAC,CAAA;QACF,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,0CAAE,SAAS,CAAC,CAAA;QAExE,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAA;SACnE;KACF;SAAM;QACL,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;KAClD;IAED,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IAEjD,MAAM,IAAI,EAAE,CAAA;AACd,CAAC;AA9BD,0CA8BC","sourcesContent":["import { MarketplaceStore as MarketplaceStoreEntity } from '@things-factory/integration-marketplace'\nimport { getRepository } from '@things-factory/shell'\n\nconst debug = require('debug')('things-factory:operato-hub:store-middleware')\n\nexport async function storeMiddleware(context, next) {\n const { storeId } = context.params\n const { business } = context.state\n const { t } = context\n\n let marketplaceStore: MarketplaceStoreEntity\n\n debug('company and store', business, storeId)\n\n if (!business) {\n context.throw(404, t('error.company not found'))\n }\n\n if (storeId) {\n marketplaceStore = await getRepository(MarketplaceStoreEntity).findOne({\n where: { domain: { id: business.domain.id }, name: storeId, status: 'ACTIVE' },\n relations: ['domain']\n })\n debug('marketplace-store', storeId, marketplaceStore?.domain?.subdomain)\n\n if (!marketplaceStore) {\n context.throw(404, t('error.operato marketplace store not found'))\n }\n } else {\n context.throw(404, t('error.store id not found'))\n }\n\n context.state.marketplaceStore = marketplaceStore\n\n await next()\n}\n"]}
|