@things-factory/operato-hub 5.0.13 → 6.0.0-alpha.1
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/controllers/bizplace-initializer/dataset/codes.js +9 -0
- package/dist-server/controllers/bizplace-initializer/dataset/codes.js.map +1 -1
- package/dist-server/controllers/bizplace-initializer/dataset/settings.js +5 -0
- package/dist-server/controllers/bizplace-initializer/dataset/settings.js.map +1 -1
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain-roles.js +3 -3
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain-roles.js.map +1 -1
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain.js +2 -2
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain.js.map +1 -1
- package/dist-server/controllers/bizplace-initializer/menus.js +2 -2
- package/dist-server/controllers/bizplace-initializer/menus.js.map +1 -1
- package/dist-server/controllers/company-initializer/business-register.js +6 -7
- package/dist-server/controllers/company-initializer/business-register.js.map +1 -1
- package/dist-server/controllers/company-initializer/generate-company-roles.js +4 -4
- package/dist-server/controllers/company-initializer/generate-company-roles.js.map +1 -1
- package/dist-server/controllers/invitation.js +9 -9
- package/dist-server/controllers/invitation.js.map +1 -1
- package/dist-server/controllers/utils/save-invitation-token.js +2 -2
- package/dist-server/controllers/utils/save-invitation-token.js.map +1 -1
- package/dist-server/graphql/resolvers/generators/generate-bizplace.js.map +1 -1
- package/dist-server/graphql/resolvers/generators/generate-company.js +4 -3
- package/dist-server/graphql/resolvers/generators/generate-company.js.map +1 -1
- 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 +6 -6
- package/dist-server/graphql/resolvers/invitations/partner-invitation.js.map +1 -1
- package/dist-server/graphql/resolvers/oauth2/company-roles-by-scope.js +5 -2
- package/dist-server/graphql/resolvers/oauth2/company-roles-by-scope.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.js +149 -0
- package/dist-server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.js.map +1 -0
- package/dist-server/graphql/resolvers/synchronization/create-dat-shipments.js +58 -0
- package/dist-server/graphql/resolvers/synchronization/create-dat-shipments.js.map +1 -0
- package/dist-server/graphql/resolvers/synchronization/fetch-sync-products.js +3 -3
- package/dist-server/graphql/resolvers/synchronization/fetch-sync-products.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/index.js +6 -2
- package/dist-server/graphql/resolvers/synchronization/index.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js +68 -0
- package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js.map +1 -0
- package/dist-server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.js +35 -0
- package/dist-server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.js.map +1 -0
- package/dist-server/graphql/resolvers/synchronization/sync-products-from-account.js +1 -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 +1 -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 +4 -2
- package/dist-server/graphql/resolvers/synchronization/sync-products-to-sellercraft.js.map +1 -1
- package/dist-server/graphql/types/synchronization/index.js +4 -0
- package/dist-server/graphql/types/synchronization/index.js.map +1 -1
- package/dist-server/index.js +5 -5
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/business-middleware.js +2 -3
- package/dist-server/middlewares/business-middleware.js.map +1 -1
- package/dist-server/middlewares/store-middleware.js +2 -2
- package/dist-server/middlewares/store-middleware.js.map +1 -1
- package/dist-server/middlewares/warehouse-middleware.js +3 -2
- package/dist-server/middlewares/warehouse-middleware.js.map +1 -1
- package/dist-server/migrations/1597668478399-SeedBusinessDomain.js +2 -3
- package/dist-server/migrations/1597668478399-SeedBusinessDomain.js.map +1 -1
- package/dist-server/migrations/1597668478401-SeedBusinessRoles.js +2 -2
- package/dist-server/migrations/1597668478401-SeedBusinessRoles.js.map +1 -1
- package/dist-server/migrations/1608009991065-SeedUser.js +5 -6
- package/dist-server/migrations/1608009991065-SeedUser.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js +2 -1
- 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 +5 -4
- 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 +5 -2
- package/dist-server/routers/api/restful-apis/unstable/add-marketplace-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-products.js +32 -16
- package/dist-server/routers/api/restful-apis/unstable/add-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-release-order.js +149 -40
- package/dist-server/routers/api/restful-apis/unstable/add-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/cancel-release-order.js +4 -4
- package/dist-server/routers/api/restful-apis/unstable/cancel-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-delivery-orders.js +27 -11
- package/dist-server/routers/api/restful-apis/unstable/get-delivery-orders.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-goods-received-notes.js +9 -2
- package/dist-server/routers/api/restful-apis/unstable/get-goods-received-notes.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-onhand-inventories.js +2 -2
- package/dist-server/routers/api/restful-apis/unstable/get-onhand-inventories.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-partners.js +5 -4
- package/dist-server/routers/api/restful-apis/unstable/get-partners.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-products.js +1 -0
- package/dist-server/routers/api/restful-apis/unstable/get-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-warehouses.js +2 -2
- package/dist-server/routers/api/restful-apis/unstable/get-warehouses.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/update-release-order-details.js +2 -2
- package/dist-server/routers/api/restful-apis/unstable/update-release-order-details.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js +6 -5
- 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 +8 -5
- package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-products.js +32 -16
- package/dist-server/routers/api/restful-apis/v1/add-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-release-order.js +8 -6
- package/dist-server/routers/api/restful-apis/v1/add-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js +4 -4
- package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js +27 -11
- package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js +9 -2
- package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js +2 -2
- package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-partners.js +5 -4
- package/dist-server/routers/api/restful-apis/v1/get-partners.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-products.js +1 -0
- package/dist-server/routers/api/restful-apis/v1/get-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-warehouses.js +2 -2
- package/dist-server/routers/api/restful-apis/v1/get-warehouses.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js +2 -2
- package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js +6 -5
- 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 +8 -5
- package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-products.js +32 -16
- package/dist-server/routers/api/restful-apis/v2/add-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-release-order.js +8 -6
- package/dist-server/routers/api/restful-apis/v2/add-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js +4 -4
- package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js +27 -11
- package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js +9 -2
- package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js +2 -2
- package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-partners.js +5 -4
- package/dist-server/routers/api/restful-apis/v2/get-partners.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-products.js +1 -0
- package/dist-server/routers/api/restful-apis/v2/get-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-warehouses.js +2 -2
- package/dist-server/routers/api/restful-apis/v2/get-warehouses.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js +2 -2
- package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js.map +1 -1
- package/dist-server/routers/auth-invitation-router.js +2 -2
- package/dist-server/routers/auth-invitation-router.js.map +1 -1
- package/dist-server/routers/business/bizplace-register-router.js +3 -3
- package/dist-server/routers/business/bizplace-register-router.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/get-warehouses.js +15 -11
- package/dist-server/utils/get-warehouses.js.map +1 -1
- package/openapi/unstable/product.yaml +9 -3
- package/openapi/v1/product.yaml +9 -3
- package/openapi/v2/product.yaml +9 -3
- package/package.json +47 -47
- package/server/controllers/bizplace-initializer/dataset/codes.ts +9 -0
- package/server/controllers/bizplace-initializer/dataset/settings.ts +5 -0
- package/server/controllers/bizplace-initializer/generate-bizplace-domain-roles.ts +4 -2
- package/server/controllers/bizplace-initializer/generate-bizplace-domain.ts +4 -3
- package/server/controllers/bizplace-initializer/menus.ts +4 -2
- package/server/controllers/company-initializer/business-register.ts +5 -3
- package/server/controllers/company-initializer/generate-company-roles.ts +4 -3
- package/server/controllers/invitation.ts +11 -7
- package/server/controllers/utils/save-invitation-token.ts +1 -1
- package/server/graphql/resolvers/generators/generate-bizplace.ts +1 -1
- package/server/graphql/resolvers/generators/generate-company.ts +5 -4
- package/server/graphql/resolvers/generators/update-domain-extType.ts +7 -5
- package/server/graphql/resolvers/invitations/partner-invitation.ts +5 -5
- package/server/graphql/resolvers/oauth2/company-roles-by-scope.ts +8 -6
- package/server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.ts +180 -0
- package/server/graphql/resolvers/synchronization/create-dat-shipments.ts +64 -0
- package/server/graphql/resolvers/synchronization/fetch-sync-products.ts +3 -2
- package/server/graphql/resolvers/synchronization/index.ts +10 -2
- package/server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.ts +91 -0
- package/server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.ts +39 -0
- package/server/graphql/resolvers/synchronization/sync-products-from-account.ts +4 -4
- package/server/graphql/resolvers/synchronization/sync-products-to-account.ts +4 -4
- package/server/graphql/resolvers/synchronization/sync-products-to-sellercraft.ts +19 -12
- package/server/graphql/types/synchronization/index.ts +4 -0
- package/server/index.ts +7 -7
- package/server/middlewares/business-middleware.ts +1 -2
- package/server/middlewares/store-middleware.ts +1 -1
- package/server/middlewares/warehouse-middleware.ts +3 -2
- package/server/migrations/1597668478399-SeedBusinessDomain.ts +3 -2
- package/server/migrations/1597668478401-SeedBusinessRoles.ts +2 -2
- package/server/migrations/1608009991065-SeedUser.ts +5 -3
- package/server/routers/api/restful-apis/unstable/add-draft-release-order.ts +2 -1
- package/server/routers/api/restful-apis/unstable/add-inbound-order.ts +3 -2
- package/server/routers/api/restful-apis/unstable/add-marketplace-order.ts +13 -2
- package/server/routers/api/restful-apis/unstable/add-products.ts +40 -16
- package/server/routers/api/restful-apis/unstable/add-release-order.ts +98 -48
- package/server/routers/api/restful-apis/unstable/cancel-release-order.ts +2 -2
- package/server/routers/api/restful-apis/unstable/get-delivery-orders.ts +27 -11
- package/server/routers/api/restful-apis/unstable/get-goods-received-notes.ts +9 -2
- package/server/routers/api/restful-apis/unstable/get-onhand-inventories.ts +1 -1
- package/server/routers/api/restful-apis/unstable/get-partners.ts +4 -2
- package/server/routers/api/restful-apis/unstable/get-products.ts +1 -0
- package/server/routers/api/restful-apis/unstable/get-warehouses.ts +3 -2
- package/server/routers/api/restful-apis/unstable/update-release-order-details.ts +1 -1
- package/server/routers/api/restful-apis/v1/add-inbound-order.ts +4 -3
- package/server/routers/api/restful-apis/v1/add-marketplace-order.ts +17 -5
- package/server/routers/api/restful-apis/v1/add-products.ts +40 -16
- package/server/routers/api/restful-apis/v1/add-release-order.ts +10 -6
- package/server/routers/api/restful-apis/v1/cancel-release-order.ts +2 -2
- package/server/routers/api/restful-apis/v1/get-delivery-orders.ts +27 -11
- package/server/routers/api/restful-apis/v1/get-goods-received-notes.ts +9 -2
- package/server/routers/api/restful-apis/v1/get-onhand-inventories.ts +1 -1
- package/server/routers/api/restful-apis/v1/get-partners.ts +4 -2
- package/server/routers/api/restful-apis/v1/get-products.ts +1 -0
- package/server/routers/api/restful-apis/v1/get-warehouses.ts +3 -2
- package/server/routers/api/restful-apis/v1/update-release-order-details.ts +1 -1
- package/server/routers/api/restful-apis/v2/add-inbound-order.ts +4 -3
- package/server/routers/api/restful-apis/v2/add-marketplace-order.ts +17 -5
- package/server/routers/api/restful-apis/v2/add-products.ts +40 -16
- package/server/routers/api/restful-apis/v2/add-release-order.ts +10 -6
- package/server/routers/api/restful-apis/v2/cancel-release-order.ts +2 -2
- package/server/routers/api/restful-apis/v2/get-delivery-orders.ts +27 -11
- package/server/routers/api/restful-apis/v2/get-goods-received-notes.ts +9 -2
- package/server/routers/api/restful-apis/v2/get-onhand-inventories.ts +1 -1
- package/server/routers/api/restful-apis/v2/get-partners.ts +4 -2
- package/server/routers/api/restful-apis/v2/get-products.ts +1 -0
- package/server/routers/api/restful-apis/v2/get-warehouses.ts +3 -2
- package/server/routers/api/restful-apis/v2/update-release-order-details.ts +1 -1
- package/server/routers/auth-invitation-router.ts +2 -2
- package/server/routers/business/bizplace-register-router.ts +3 -1
- package/server/utils/get-warehouses.ts +46 -36
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-company.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/generators/generate-company.ts"],"names":[],"mappings":";;;AAAA,yDAAgD;AAChD,uDAAkD;AAClD,iDAA8C;AAC9C,iDAA+C;AAE/C,oFAAsE;AACtE,4GAAuG;AAE1F,QAAA,eAAe,GAAG;IAC7B,KAAK,CAAC,eAAe,CAAC,CAAM,EAAE,EAAE,YAAY,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"generate-company.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/generators/generate-company.ts"],"names":[],"mappings":";;;AAAA,yDAAgD;AAChD,uDAAkD;AAClD,iDAA8C;AAC9C,iDAA+C;AAE/C,oFAAsE;AACtE,4GAAuG;AAE1F,QAAA,eAAe,GAAG;IAC7B,KAAK,CAAC,eAAe,CAAC,CAAM,EAAE,EAAE,YAAY,EAAE,EAAE,OAAwB;QACtE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAClC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,YAAY,CAAA;QAEvE,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,CAAA;QAE/B,WAAW;QACX,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,kBAAO,CAAC,CAAC,OAAO,CAAC;YACzD,KAAK,EAAE;gBACL,IAAI;aACL;SACF,CAAC,CAAA;QAEF,IAAI,UAAU,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC9C;QAED,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,OAAO,CAAC;YACvD,KAAK,EAAE;gBACL,IAAI;aACL;SACF,CAAC,CAAA;QAEF,IAAI,SAAS,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;SAC3C;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAW,MAAM,EAAE,CAAC,aAAa,CAAC,cAAM,CAAC,CAAC,IAAI,CAAC;YACzD,SAAS;YACT,IAAI;YACJ,OAAO,EAAE,SAAS;SACnB,CAAC,CAAA;QAEF,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,IAAA,8CAAqB,EAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAE3D,MAAM,OAAO,GAAY,MAAM,EAAE,CAAC,aAAa,CAAC,kBAAO,CAAC,CAAC,IAAI,iCACxD,YAAY,KACf,KAAK,EAAE,IAAI,EACX,MAAM,IACN,CAAA;QAEF,MAAM,eAAe,GAAS,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,OAAO,CAAC;YACjE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAC5B,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;SAChC,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAA;QAE3F,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvC,MAAM,IAAA,iCAAU,EAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAE5B,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,kBAAO,CAAC,CAAC,IAAI,CAAC;YAC1C,IAAI;YACJ,WAAW;YACX,OAAO;YACP,UAAU;YACV,MAAM;YACN,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;IACJ,CAAC;CACF,CAAA","sourcesContent":["import { User } from '@things-factory/auth-base'\nimport { Company } from '@things-factory/biz-base'\nimport { Domain } from '@things-factory/shell'\nimport { slugger } from '@things-factory/utils'\n\nimport { initGroups } from '../../../controllers/bizplace-initializer'\nimport { generateBusinessRoles } from '../../../controllers/company-initializer/generate-company-roles'\n\nexport const generateCompany = {\n async generateCompany(_: any, { companyInput }, context: ResolverContext) {\n const { tx, user } = context.state\n const { name, description, address, postalCode, latlng } = companyInput\n\n const subdomain = slugger(name)\n\n /* check */\n const oldCompany = await tx.getRepository(Company).findOne({\n where: {\n name\n }\n })\n\n if (oldCompany) {\n throw new Error('company name is duplicated')\n }\n\n const oldDomain = await tx.getRepository(Domain).findOne({\n where: {\n name\n }\n })\n\n if (oldDomain) {\n throw new Error('subdomain is duplicated')\n }\n\n /* create company */\n const domain: Domain = await tx.getRepository(Domain).save({\n subdomain,\n name,\n extType: 'company'\n })\n\n /* create roles */\n const domainRoles = await generateBusinessRoles(domain, tx)\n\n const company: Company = await tx.getRepository(Company).save({\n ...companyInput,\n owner: user,\n domain\n })\n\n const userHavingRoles: User = await tx.getRepository(User).findOne({\n where: { email: user.email },\n relations: ['domains', 'roles']\n })\n\n user.domains = [...user.domains, domain]\n user.roles = [...userHavingRoles.roles, domainRoles.find(r => r.name === 'BUSINESS-OWNER')]\n\n await tx.getRepository(User).save(user)\n\n await initGroups(tx, domain)\n\n return await tx.getRepository(Company).save({\n name,\n description,\n address,\n postalCode,\n latlng,\n updater: user,\n creator: user\n })\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateDomainExtType = void 0;
|
|
4
|
-
const shell_1 = require("@things-factory/shell");
|
|
5
4
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
5
|
+
const shell_1 = require("@things-factory/shell");
|
|
6
6
|
const bizplace_initializer_1 = require("../../../controllers/bizplace-initializer");
|
|
7
7
|
const generate_bizplace_domain_roles_1 = require("../../../controllers/bizplace-initializer/generate-bizplace-domain-roles");
|
|
8
8
|
exports.updateDomainExtType = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-domain-extType.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/generators/update-domain-extType.ts"],"names":[],"mappings":";;;
|
|
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;IAChE,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 } })\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"]}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.partnerInvitationResolver = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
4
5
|
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
6
|
const shell_1 = require("@things-factory/shell");
|
|
6
|
-
const typeorm_1 = require("typeorm");
|
|
7
7
|
exports.partnerInvitationResolver = {
|
|
8
8
|
async partnerInvitation(_, { bizplaceName }, context) {
|
|
9
9
|
const { domain, user } = context.state;
|
|
10
10
|
// Check whether bizplace exists or not
|
|
11
|
-
const partnerBizplace = await (0,
|
|
11
|
+
const partnerBizplace = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOne({
|
|
12
12
|
where: {
|
|
13
13
|
name: (0, typeorm_1.Raw)(alias => `LOWER(${alias}) LIKE '${bizplaceName.toLowerCase()}'`)
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
|
-
const partnerDomain = await (0,
|
|
16
|
+
const partnerDomain = await (0, shell_1.getRepository)(shell_1.Domain).findOne({
|
|
17
17
|
where: {
|
|
18
18
|
name: partnerBizplace.name
|
|
19
19
|
}
|
|
@@ -27,14 +27,14 @@ exports.partnerInvitationResolver = {
|
|
|
27
27
|
if (domain.name === partnerBizplace.name) {
|
|
28
28
|
throw new Error(context.t('error.failed to find x', { x: context.t('field.bizplace') }));
|
|
29
29
|
}
|
|
30
|
-
const domainBizplace = await (0,
|
|
30
|
+
const domainBizplace = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOne({
|
|
31
31
|
where: { domain }
|
|
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
|
-
const partner = await (0,
|
|
37
|
+
const partner = await (0, shell_1.getRepository)(biz_base_1.Partner).findOne({
|
|
38
38
|
where: { domainBizplace, partnerBizplace }
|
|
39
39
|
});
|
|
40
40
|
if (partner) {
|
|
@@ -46,7 +46,7 @@ exports.partnerInvitationResolver = {
|
|
|
46
46
|
newPartner.partnerBizplace = partnerBizplace;
|
|
47
47
|
newPartner.requester = user;
|
|
48
48
|
newPartner.approver = user;
|
|
49
|
-
await (0,
|
|
49
|
+
await (0, shell_1.getRepository)(biz_base_1.Partner).save(newPartner);
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
//# sourceMappingURL=partner-invitation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partner-invitation.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/invitations/partner-invitation.ts"],"names":[],"mappings":";;;
|
|
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;SAClB,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;SAC3C,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 }\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, partnerBizplace }\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"]}
|
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.companyRolesByScopeResolver = void 0;
|
|
4
4
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
5
|
-
const
|
|
5
|
+
const shell_1 = require("@things-factory/shell");
|
|
6
6
|
exports.companyRolesByScopeResolver = {
|
|
7
7
|
async companyRolesByScope(_, { scope }, context) {
|
|
8
8
|
let { user } = context.state;
|
|
9
9
|
const userDomains = await (0, auth_base_1.getUserDomains)(user);
|
|
10
10
|
const availableDomains = userDomains.filter((domain) => scope.indexOf(domain.extType) >= 0);
|
|
11
11
|
const availableDomainIDs = availableDomains.map((domain) => domain.id);
|
|
12
|
-
user = await (0,
|
|
12
|
+
user = await (0, shell_1.getRepository)(auth_base_1.User).findOne({
|
|
13
|
+
where: { id: user.id },
|
|
14
|
+
relations: ['roles', 'roles.domain']
|
|
15
|
+
});
|
|
13
16
|
const availableRoles = user.roles.filter((role) => availableDomainIDs.indexOf(role.domain.id) >= 0);
|
|
14
17
|
const companyRoleMap = new Map();
|
|
15
18
|
availableRoles.forEach((role) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"company-roles-by-scope.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/oauth2/company-roles-by-scope.ts"],"names":[],"mappings":";;;AAAA,yDAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"company-roles-by-scope.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/oauth2/company-roles-by-scope.ts"],"names":[],"mappings":";;;AAAA,yDAAsE;AACtE,iDAA6D;AAOhD,QAAA,2BAA2B,GAAG;IACzC,KAAK,CAAC,mBAAmB,CAAC,CAAO,EAAE,EAAE,KAAK,EAAuB,EAAE,OAAwB;QACzF,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC5B,MAAM,WAAW,GAAa,MAAM,IAAA,0BAAc,EAAC,IAAI,CAAC,CAAA;QACxD,MAAM,gBAAgB,GAAa,WAAW,CAAC,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7G,MAAM,kBAAkB,GAAa,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACxF,IAAI,GAAG,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC;YACvC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YACtB,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC;SACrC,CAAC,CAAA;QAEF,MAAM,cAAc,GAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjH,MAAM,cAAc,GAAwB,IAAI,GAAG,EAAkB,CAAA;QACrE,cAAc,CAAC,OAAO,CAAC,CAAC,IAAU,EAAE,EAAE;YACpC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;gBACtC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aAC9C;iBAAM;gBACL,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;aAC3C;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,YAAY,GAAkB,EAAE,CAAA;QACpC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YACvC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,OAAO,YAAY,CAAA;IACrB,CAAC;CACF,CAAA","sourcesContent":["import { getUserDomains, Role, User } from '@things-factory/auth-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\ntype CompanyRole = {\n domain: Domain\n roles: Role[]\n}\n\nexport const companyRolesByScopeResolver = {\n async companyRolesByScope(_: void, { scope }: { scope: string[] }, context: ResolverContext): Promise<CompanyRole[]> {\n let { user } = context.state\n const userDomains: Domain[] = await getUserDomains(user)\n const availableDomains: Domain[] = userDomains.filter((domain: Domain) => scope.indexOf(domain.extType) >= 0)\n const availableDomainIDs: string[] = availableDomains.map((domain: Domain) => domain.id)\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles', 'roles.domain']\n })\n\n const availableRoles: Role[] = user.roles.filter((role: Role) => availableDomainIDs.indexOf(role.domain.id) >= 0)\n\n const companyRoleMap: Map<string, Role[]> = new Map<string, Role[]>()\n availableRoles.forEach((role: Role) => {\n if (companyRoleMap.has(role.domain.id)) {\n companyRoleMap.get(role.domain.id).push(role)\n } else {\n companyRoleMap.set(role.domain.id, [role])\n }\n })\n\n let companyRoles: CompanyRole[] = []\n companyRoleMap.forEach((roles: Role[]) => {\n companyRoles.push({ domain: roles[0].domain, roles })\n })\n\n return companyRoles\n }\n}\n"]}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.autoUpdateAllMarketplaceProductVariationQuantityResolver = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const env_1 = require("@things-factory/env");
|
|
6
|
+
const integration_fulfillment_1 = require("@things-factory/integration-fulfillment");
|
|
7
|
+
const integration_marketplace_1 = require("@things-factory/integration-marketplace");
|
|
8
|
+
const marketplace_base_1 = require("@things-factory/marketplace-base");
|
|
9
|
+
const product_base_1 = require("@things-factory/product-base");
|
|
10
|
+
const shell_1 = require("@things-factory/shell");
|
|
11
|
+
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
12
|
+
exports.autoUpdateAllMarketplaceProductVariationQuantityResolver = {
|
|
13
|
+
async autoUpdateAllMarketplaceProductVariationQuantity(_, { companyDomainId, warehouseId }, context) {
|
|
14
|
+
const companyDomain = await (0, typeorm_1.getRepository)(shell_1.Domain).findOne(companyDomainId);
|
|
15
|
+
const marketplaceStores = await (0, typeorm_1.getRepository)(integration_marketplace_1.MarketplaceStore).find({
|
|
16
|
+
where: { domain: companyDomain, status: 'ACTIVE' },
|
|
17
|
+
relations: ['marketplaceDistributors']
|
|
18
|
+
});
|
|
19
|
+
const fulfilmentCenter = await integration_fulfillment_1.FulfillmentAPI.getFulfillmentCenter(warehouseId);
|
|
20
|
+
const centerId = fulfilmentCenter.centerId;
|
|
21
|
+
const warehouseDomain = await (0, typeorm_1.getRepository)(shell_1.Domain).findOne({ where: { subdomain: centerId } });
|
|
22
|
+
let products = await (0, typeorm_1.getRepository)(product_base_1.Product).find({
|
|
23
|
+
where: { domain: companyDomain },
|
|
24
|
+
relations: ['productDetails']
|
|
25
|
+
});
|
|
26
|
+
let inventoryProducts = await Promise.all(products.map(async (product) => {
|
|
27
|
+
const productDetails = product.productDetails;
|
|
28
|
+
const defaultProductDetail = productDetails.filter(productDetail => productDetail.isDefault)[0];
|
|
29
|
+
let qb = await (0, typeorm_1.getRepository)(warehouse_base_1.Inventory).createQueryBuilder('inv');
|
|
30
|
+
qb.leftJoinAndSelect('inv.location', 'loc')
|
|
31
|
+
.andWhere('"inv"."domain_id" = :domainId')
|
|
32
|
+
.andWhere('"inv"."product_id" = :productId')
|
|
33
|
+
.andWhere('"inv"."status" != :status')
|
|
34
|
+
.andWhere('"loc"."type" NOT IN (:...locationTypes)')
|
|
35
|
+
.setParameters({
|
|
36
|
+
domainId: warehouseDomain.id,
|
|
37
|
+
productId: product.id,
|
|
38
|
+
status: warehouse_base_1.INVENTORY_STATUS.TERMINATED,
|
|
39
|
+
locationTypes: [warehouse_base_1.LOCATION_TYPE.QUARANTINE, warehouse_base_1.LOCATION_TYPE.RESERVE]
|
|
40
|
+
});
|
|
41
|
+
let inventories = await qb.getMany();
|
|
42
|
+
const inventoryQty = inventories.reduce((total, currentValue) => {
|
|
43
|
+
total += currentValue.qty;
|
|
44
|
+
return total;
|
|
45
|
+
}, 0);
|
|
46
|
+
const inventoryLockedQty = inventories.reduce((total, currentValue) => {
|
|
47
|
+
total += currentValue.lockedQty;
|
|
48
|
+
return total;
|
|
49
|
+
}, 0);
|
|
50
|
+
return {
|
|
51
|
+
product,
|
|
52
|
+
sku: product.sku,
|
|
53
|
+
name: product.name,
|
|
54
|
+
packingType: defaultProductDetail.packingType,
|
|
55
|
+
packingSize: defaultProductDetail.packingSize,
|
|
56
|
+
uom: defaultProductDetail.uom,
|
|
57
|
+
qty: inventoryQty - inventoryLockedQty
|
|
58
|
+
};
|
|
59
|
+
}));
|
|
60
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
61
|
+
let bundleProductInventories = await (0, warehouse_base_1.getProductBundleInventory)(warehouseDomain, companyDomain, inventoryProducts, tx);
|
|
62
|
+
bundleProductInventories.map(bundleProductInventory => {
|
|
63
|
+
inventoryProducts.push(bundleProductInventory);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
for (let i = 0; i < marketplaceStores.length; i++) {
|
|
67
|
+
try {
|
|
68
|
+
const marketplaceStore = marketplaceStores[i];
|
|
69
|
+
const marketplaceSetting = await (0, typeorm_1.getRepository)(integration_marketplace_1.MarketplaceSetting).findOne({
|
|
70
|
+
where: { marketplaceStore, category: 'stock_allocation' }
|
|
71
|
+
});
|
|
72
|
+
for (let j = 0; j < inventoryProducts.length; j++) {
|
|
73
|
+
try {
|
|
74
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
const inventoryProduct = inventoryProducts[j];
|
|
77
|
+
const marketplaceProductVariations = await tx
|
|
78
|
+
.getRepository(marketplace_base_1.MarketplaceProductVariation)
|
|
79
|
+
.find({
|
|
80
|
+
where: { domain: companyDomain, sku: inventoryProduct.sku },
|
|
81
|
+
relations: ['marketplaceProduct', 'marketplaceProduct.marketplaceStore']
|
|
82
|
+
});
|
|
83
|
+
let storeProductVariations = marketplaceProductVariations.filter(productVariation => productVariation.marketplaceProduct.marketplaceStore.id === marketplaceStore.id);
|
|
84
|
+
let percentageValue = 100;
|
|
85
|
+
if (storeProductVariations) {
|
|
86
|
+
for (let k = 0; k < storeProductVariations.length; k++) {
|
|
87
|
+
let storeProductVariation = storeProductVariations[k];
|
|
88
|
+
if (marketplaceSetting) {
|
|
89
|
+
percentageValue = parseInt(marketplaceSetting.value);
|
|
90
|
+
}
|
|
91
|
+
let remainQty = Math.floor((inventoryProduct.qty - storeProductVariation.reserveQty) * (percentageValue / 100));
|
|
92
|
+
if (remainQty < 0)
|
|
93
|
+
remainQty = 0;
|
|
94
|
+
let productVariationLocationId = storeProductVariation === null || storeProductVariation === void 0 ? void 0 : storeProductVariation.locationId;
|
|
95
|
+
let adjustQty = remainQty;
|
|
96
|
+
if (marketplaceStore.platform === 'shopify') {
|
|
97
|
+
let locationIds = JSON.parse(productVariationLocationId);
|
|
98
|
+
adjustQty = adjustQty - storeProductVariation.qty;
|
|
99
|
+
if ((_a = locationIds[0]) === null || _a === void 0 ? void 0 : _a.location_id)
|
|
100
|
+
productVariationLocationId = locationIds[0].location_id;
|
|
101
|
+
}
|
|
102
|
+
let validMarketplaceDistributors = [];
|
|
103
|
+
if (marketplaceStore.marketplaceDistributors) {
|
|
104
|
+
validMarketplaceDistributors = marketplaceStore.marketplaceDistributors.filter(distributor => distributor.status === 'ACTIVE');
|
|
105
|
+
}
|
|
106
|
+
const hasVariation = (_b = storeProductVariation === null || storeProductVariation === void 0 ? void 0 : storeProductVariation.marketplaceProduct) === null || _b === void 0 ? void 0 : _b.hasVariation;
|
|
107
|
+
if (hasVariation) {
|
|
108
|
+
await integration_marketplace_1.StoreAPI.updateStoreProductVariationStock(marketplaceStore, [
|
|
109
|
+
{
|
|
110
|
+
itemId: storeProductVariation.marketplaceProduct.itemId,
|
|
111
|
+
variationId: storeProductVariation.variationId,
|
|
112
|
+
variationSku: storeProductVariation.variationSku,
|
|
113
|
+
qty: adjustQty,
|
|
114
|
+
locationId: productVariationLocationId,
|
|
115
|
+
inventoryItemId: storeProductVariation.inventoryItemId,
|
|
116
|
+
distributors: validMarketplaceDistributors
|
|
117
|
+
}
|
|
118
|
+
]);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
await integration_marketplace_1.StoreAPI.updateStoreProductStock(marketplaceStore, [
|
|
122
|
+
{
|
|
123
|
+
itemId: storeProductVariation.marketplaceProduct.itemId,
|
|
124
|
+
variationId: storeProductVariation.variationId,
|
|
125
|
+
variationSku: storeProductVariation.variationSku,
|
|
126
|
+
qty: adjustQty,
|
|
127
|
+
distributors: validMarketplaceDistributors
|
|
128
|
+
}
|
|
129
|
+
]);
|
|
130
|
+
}
|
|
131
|
+
storeProductVariation.qty = remainQty;
|
|
132
|
+
await tx.getRepository(marketplace_base_1.MarketplaceProductVariation).save(storeProductVariation);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
env_1.logger.error(`interface-with-hub[autoUpdateAllMarketplaceProductVariationQuantity]inventoryProducts: ${error}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
env_1.logger.error(`interface-with-hub[autoUpdateAllMarketplaceProductVariationQuantity]marketplaceStores: ${e}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=auto-update-all-marketplace-product-variation-quantity.js.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDatShipments = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
|
+
const env_1 = require("@things-factory/env");
|
|
7
|
+
const integration_sftp_1 = require("@things-factory/integration-sftp");
|
|
8
|
+
const sales_base_1 = require("@things-factory/sales-base");
|
|
9
|
+
const shell_1 = require("@things-factory/shell");
|
|
10
|
+
exports.createDatShipments = {
|
|
11
|
+
async createDatShipments(_, {}, context) {
|
|
12
|
+
try {
|
|
13
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
14
|
+
const currentTime = new Date();
|
|
15
|
+
const batchSize = 80;
|
|
16
|
+
let sftps = await tx.getRepository(integration_sftp_1.Sftp).find({
|
|
17
|
+
where: { status: 'ACTIVE' },
|
|
18
|
+
relations: ['domain', 'fulfillmentCenter']
|
|
19
|
+
});
|
|
20
|
+
for (let sftp of sftps) {
|
|
21
|
+
let warehouseDomain = await tx.getRepository(shell_1.Domain).findOne({
|
|
22
|
+
where: { subdomain: sftp.fulfillmentCenter.centerId }
|
|
23
|
+
});
|
|
24
|
+
let bizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({
|
|
25
|
+
where: { domain: sftp.domain }
|
|
26
|
+
});
|
|
27
|
+
let releaseGoods = await tx.getRepository(sales_base_1.ReleaseGood).find({
|
|
28
|
+
where: {
|
|
29
|
+
domain: warehouseDomain,
|
|
30
|
+
bizplace: bizplace,
|
|
31
|
+
status: 'DONE',
|
|
32
|
+
updatedAt: (0, typeorm_1.MoreThan)(sftp.lastTimeSync)
|
|
33
|
+
},
|
|
34
|
+
relations: ['orderInventories', 'orderInventories.product']
|
|
35
|
+
});
|
|
36
|
+
while (releaseGoods.length > 0) {
|
|
37
|
+
let releaseGoodBatch = releaseGoods.splice(0, releaseGoods.length >= batchSize ? batchSize : releaseGoods.length);
|
|
38
|
+
const responseFileTypes = JSON.parse(sftp.responseFileTypes);
|
|
39
|
+
if (releaseGoodBatch.length > 0) {
|
|
40
|
+
if (responseFileTypes.enableShipment) {
|
|
41
|
+
let shipmentResult = await integration_sftp_1.SftpAPI.createShipment(sftp, {
|
|
42
|
+
releaseGoods: releaseGoodBatch,
|
|
43
|
+
sftp: sftp
|
|
44
|
+
});
|
|
45
|
+
shipmentResult.lastTimeSync = currentTime;
|
|
46
|
+
sftp = await tx.getRepository(integration_sftp_1.Sftp).save(shipmentResult);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
env_1.logger.error(`createDatShipment: ${e}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=create-dat-shipments.js.map
|
|
@@ -0,0 +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;qBAC/B,CAAC,CAAA;oBAEF,IAAI,YAAY,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,wBAAW,CAAC,CAAC,IAAI,CAAC;wBACzE,KAAK,EAAE;4BACL,MAAM,EAAE,eAAe;4BACvB,QAAQ,EAAE,QAAQ;4BAClB,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: sftp.domain }\n })\n\n let releaseGoods: ReleaseGood[] = await tx.getRepository(ReleaseGood).find({\n where: {\n domain: warehouseDomain,\n bizplace: bizplace,\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"]}
|
|
@@ -4,15 +4,15 @@ exports.getAccountingProducts = exports.fetchSyncProductsResolver = void 0;
|
|
|
4
4
|
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
5
|
const integration_accounting_1 = require("@things-factory/integration-accounting");
|
|
6
6
|
const product_base_1 = require("@things-factory/product-base");
|
|
7
|
-
const
|
|
7
|
+
const shell_1 = require("@things-factory/shell");
|
|
8
8
|
const build_map_1 = require("../../../utils/build-map");
|
|
9
9
|
exports.fetchSyncProductsResolver = {
|
|
10
10
|
async fetchSyncProducts(_, { accountId, bizplaceId, pagination }, context) {
|
|
11
11
|
try {
|
|
12
12
|
const platformProducts = await getAccountingProducts(accountId);
|
|
13
13
|
const platformProductsMap = (0, build_map_1.buildMap)(platformProducts, 'sku');
|
|
14
|
-
const bizplace = await (0,
|
|
15
|
-
const bizplaceProducts = await (0,
|
|
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({ where: { bizplace } });
|
|
16
16
|
const bizplaceProductsMap = (0, build_map_1.buildMap)(bizplaceProducts, 'sku');
|
|
17
17
|
let items = [];
|
|
18
18
|
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,
|
|
1
|
+
{"version":3,"file":"fetch-sync-products.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/fetch-sync-products.ts"],"names":[],"mappings":"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","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({ where: { bizplace } })\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"]}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Mutation = exports.Query = void 0;
|
|
4
|
+
const fetch_sync_invoices_1 = require("./fetch-sync-invoices");
|
|
4
5
|
const fetch_sync_products_1 = require("./fetch-sync-products");
|
|
5
6
|
const fetch_sync_purchase_orders_1 = require("./fetch-sync-purchase-orders");
|
|
6
|
-
const
|
|
7
|
+
const sellercraft_pack_marketplace_order_1 = require("./sellercraft-pack-marketplace-order");
|
|
8
|
+
const sync_all_products_to_sellercraft_1 = require("./sync-all-products-to-sellercraft");
|
|
7
9
|
const sync_products_from_account_1 = require("./sync-products-from-account");
|
|
8
10
|
const sync_products_to_account_1 = require("./sync-products-to-account");
|
|
9
11
|
const sync_products_to_sellercraft_1 = require("./sync-products-to-sellercraft");
|
|
12
|
+
const create_dat_shipments_1 = require("./create-dat-shipments");
|
|
13
|
+
const auto_update_all_marketplace_product_variation_quantity_1 = require("./auto-update-all-marketplace-product-variation-quantity");
|
|
10
14
|
exports.Query = Object.assign(Object.assign(Object.assign({}, fetch_sync_products_1.fetchSyncProductsResolver), fetch_sync_purchase_orders_1.fetchSyncPurchaseOrdersResolver), fetch_sync_invoices_1.fetchSyncInvoicesResolver);
|
|
11
|
-
exports.Mutation = Object.assign(Object.assign(Object.assign({}, sync_products_to_sellercraft_1.syncProductsToSellercraftResolver), sync_products_from_account_1.syncProductsFromAccountResolver), sync_products_to_account_1.syncProductsToAccountResolver);
|
|
15
|
+
exports.Mutation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, sync_products_to_sellercraft_1.syncProductsToSellercraftResolver), sync_products_from_account_1.syncProductsFromAccountResolver), sync_products_to_account_1.syncProductsToAccountResolver), sync_all_products_to_sellercraft_1.syncAllProductsToSellercraftResolver), sellercraft_pack_marketplace_order_1.sellercraftPackMarketplaceOrderResolver), create_dat_shipments_1.createDatShipments), auto_update_all_marketplace_product_variation_quantity_1.autoUpdateAllMarketplaceProductVariationQuantityResolver);
|
|
12
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/index.ts"],"names":[],"mappings":";;;AAAA,+DAAiE;AACjE,6EAA8E;AAC9E
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/index.ts"],"names":[],"mappings":";;;AAAA,+DAAiE;AACjE,+DAAiE;AACjE,6EAA8E;AAC9E,6FAA8F;AAC9F,yFAAyF;AACzF,6EAA8E;AAC9E,yEAA0E;AAC1E,iFAAkF;AAClF,iEAA2D;AAC3D,qIAAmI;AAEtH,QAAA,KAAK,iDACb,+CAAyB,GACzB,4DAA+B,GAC/B,+CAAyB,EAC7B;AAEY,QAAA,QAAQ,yGAChB,gEAAiC,GACjC,4DAA+B,GAC/B,wDAA6B,GAC7B,uEAAoC,GACpC,4EAAuC,GACvC,yCAAkB,GAClB,iHAAwD,EAC5D","sourcesContent":["import { fetchSyncInvoicesResolver } from './fetch-sync-invoices'\nimport { fetchSyncProductsResolver } from './fetch-sync-products'\nimport { fetchSyncPurchaseOrdersResolver } from './fetch-sync-purchase-orders'\nimport { sellercraftPackMarketplaceOrderResolver } from './sellercraft-pack-marketplace-order'\nimport { syncAllProductsToSellercraftResolver } from './sync-all-products-to-sellercraft'\nimport { syncProductsFromAccountResolver } from './sync-products-from-account'\nimport { syncProductsToAccountResolver } from './sync-products-to-account'\nimport { syncProductsToSellercraftResolver } from './sync-products-to-sellercraft'\nimport { createDatShipments } from './create-dat-shipments'\nimport { autoUpdateAllMarketplaceProductVariationQuantityResolver } from './auto-update-all-marketplace-product-variation-quantity'\n\nexport const Query = {\n ...fetchSyncProductsResolver,\n ...fetchSyncPurchaseOrdersResolver,\n ...fetchSyncInvoicesResolver\n}\n\nexport const Mutation = {\n ...syncProductsToSellercraftResolver,\n ...syncProductsFromAccountResolver,\n ...syncProductsToAccountResolver,\n ...syncAllProductsToSellercraftResolver,\n ...sellercraftPackMarketplaceOrderResolver,\n ...createDatShipments,\n ...autoUpdateAllMarketplaceProductVariationQuantityResolver\n}\n"]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sellercraftPackMarketplaceOrderResolver = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
|
+
const env_1 = require("@things-factory/env");
|
|
7
|
+
const integration_base_1 = require("@things-factory/integration-base");
|
|
8
|
+
const integration_sellercraft_1 = require("@things-factory/integration-sellercraft");
|
|
9
|
+
const sales_base_1 = require("@things-factory/sales-base");
|
|
10
|
+
exports.sellercraftPackMarketplaceOrderResolver = {
|
|
11
|
+
async sellercraftPackMarketplaceOrder(_, {}, context) {
|
|
12
|
+
try {
|
|
13
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
14
|
+
const sellercrafts = await tx
|
|
15
|
+
.getRepository(integration_sellercraft_1.Sellercraft)
|
|
16
|
+
.find({ where: { status: integration_sellercraft_1.SellercraftStatus.ACTIVE }, relations: ['domain'] });
|
|
17
|
+
for (const sellercraft of sellercrafts) {
|
|
18
|
+
try {
|
|
19
|
+
const sellercraftDomain = sellercraft.domain;
|
|
20
|
+
const bizplace = await tx
|
|
21
|
+
.getRepository(biz_base_1.Bizplace)
|
|
22
|
+
.findOne({ where: { domain: sellercraftDomain } });
|
|
23
|
+
let releaseGoodsWithoutPackageId = await tx.getRepository(sales_base_1.ReleaseGood).find({
|
|
24
|
+
where: {
|
|
25
|
+
bizplace,
|
|
26
|
+
type: 'b2c',
|
|
27
|
+
packageId: (0, typeorm_1.IsNull)(),
|
|
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]))
|
|
29
|
+
},
|
|
30
|
+
relations: ['domain', 'orderProducts', 'orderProducts.product']
|
|
31
|
+
});
|
|
32
|
+
if ((releaseGoodsWithoutPackageId === null || releaseGoodsWithoutPackageId === void 0 ? void 0 : releaseGoodsWithoutPackageId.length) > 0) {
|
|
33
|
+
await Promise.all(releaseGoodsWithoutPackageId.map(async (releaseGood) => {
|
|
34
|
+
const orderProducts = releaseGood.orderProducts;
|
|
35
|
+
let sellercraftOPs = [];
|
|
36
|
+
sellercraftOPs = orderProducts.map(orderProduct => {
|
|
37
|
+
const product = orderProduct.product;
|
|
38
|
+
return {
|
|
39
|
+
sku: product.sku,
|
|
40
|
+
releaseQty: orderProduct.releaseQty,
|
|
41
|
+
uom: 'EA'
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
const orderInformation = {
|
|
45
|
+
accountId: sellercraft.accountId,
|
|
46
|
+
orderId: releaseGood.refNo2,
|
|
47
|
+
sellercraftOPs
|
|
48
|
+
};
|
|
49
|
+
const packageId = await integration_sellercraft_1.SellercraftAPI.packMarketplaceOrder(sellercraft, Object.assign(Object.assign({}, orderInformation), { context: { state: { domain: releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.domain, user: null } } }));
|
|
50
|
+
(0, integration_base_1.createPayloadLog)(sellercraft.accountId, `/order/pack`, orderInformation, packageId, context, integration_base_1.PayloadType.EGESTION, 'scheduler');
|
|
51
|
+
if (packageId) {
|
|
52
|
+
await tx.getRepository(sales_base_1.ReleaseGood).update({ id: releaseGood.id }, { packageId: packageId });
|
|
53
|
+
}
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
env_1.logger.error(`sellercraftPackMarketplaceOrder: ${e}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
env_1.logger.error(`sellercraftPackMarketplaceOrder: ${e}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=sellercraft-pack-marketplace-order.js.map
|
package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
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: sellercraftDomain } })\n\n let releaseGoodsWithoutPackageId: ReleaseGood[] = await tx.getRepository(ReleaseGood).find({\n where: {\n bizplace,\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"]}
|