@things-factory/operato-mms 7.0.1-beta.0 → 7.0.1-beta.10
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/client/components/category-selector-popup.js +4 -4
- package/client/components/marketplace-order-max-weight.js +2 -2
- package/client/components/mms-home-cards.js +2 -2
- package/client/components/stock-allocation-ratio.js +2 -2
- package/client/components/variant-option-editor.js +2 -2
- package/client/pages/order/logistics/order-shipping-items.js +2 -2
- package/client/pages/reports/sales-by-platform/home.js +1 -1
- package/client/themes/app-theme.css +12 -12
- package/dist-server/controllers/index.d.ts +0 -0
- package/dist-server/entities/index.d.ts +2 -0
- package/dist-server/graphql/index.d.ts +6 -0
- package/dist-server/graphql/resolvers/index.d.ts +32 -0
- package/dist-server/graphql/resolvers/interface-with-hub/add-release-order.d.ts +6 -0
- package/dist-server/graphql/resolvers/interface-with-hub/add-release-order.js +1 -0
- package/dist-server/graphql/resolvers/interface-with-hub/add-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/interface-with-hub/auto-add-release-order.d.ts +5 -0
- package/dist-server/graphql/resolvers/interface-with-hub/auto-add-release-order.js +1 -0
- package/dist-server/graphql/resolvers/interface-with-hub/auto-add-release-order.js.map +1 -1
- package/dist-server/graphql/resolvers/interface-with-hub/auto-update-all-marketplace-product-variation-quantity.d.ts +6 -0
- package/dist-server/graphql/resolvers/interface-with-hub/auto-update-all-marketplace-product-variation-quantity.js.map +1 -1
- package/dist-server/graphql/resolvers/interface-with-hub/generate-replenishment-order.d.ts +6 -0
- package/dist-server/graphql/resolvers/interface-with-hub/index.d.ts +22 -0
- package/dist-server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.d.ts +18 -0
- package/dist-server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.js.map +1 -1
- package/dist-server/graphql/resolvers/shipping-provider/index.d.ts +8 -0
- package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.d.ts +9 -0
- package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -1
- package/dist-server/graphql/resolvers/warehouse-product/auto-link-warehouse-marketplace-product-variations.d.ts +6 -0
- package/dist-server/graphql/resolvers/warehouse-product/auto-link-warehouse-marketplace-product-variations.js.map +1 -1
- package/dist-server/graphql/resolvers/warehouse-product/index.d.ts +6 -0
- package/dist-server/graphql/types/index.d.ts +3 -0
- package/dist-server/graphql/types/interface-with-hub/index.d.ts +3 -0
- package/dist-server/graphql/types/interface-with-hub/new-stock-replenishment.d.ts +1 -0
- package/dist-server/graphql/types/interface-with-hub/replenishment-order-product.d.ts +1 -0
- package/dist-server/graphql/types/interface-with-hub/stock-replenishment-list.d.ts +1 -0
- package/dist-server/graphql/types/interface-with-hub/stock-replenishment.d.ts +1 -0
- package/dist-server/graphql/types/interface-with-hub/warehouse-inventory.d.ts +1 -0
- package/dist-server/graphql/types/interface-with-hub/warehouse-marketplace-product-list.d.ts +1 -0
- package/dist-server/graphql/types/interface-with-hub/warehouse-marketplace-product.d.ts +1 -0
- package/dist-server/graphql/types/shipping-provider/index.d.ts +2 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider-list.d.ts +1 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider.d.ts +1 -0
- package/dist-server/graphql/types/warehouse-product/index.d.ts +2 -0
- package/dist-server/graphql/types/warehouse-product/warehouse-product.d.ts +1 -0
- package/dist-server/index.d.ts +4 -0
- package/dist-server/middlewares/index.d.ts +0 -0
- package/dist-server/migrations/1599732967233-SeedCommonCode.d.ts +5 -0
- package/dist-server/migrations/1608009991075-SeedUser.d.ts +5 -0
- package/dist-server/migrations/1608009991075-SeedUser.js.map +1 -1
- package/dist-server/migrations/index.d.ts +1 -0
- package/dist-server/routers/etrax-router.d.ts +1 -0
- package/dist-server/routers/etrax-router.js.map +1 -1
- package/dist-server/routers/shopify-pos-public-router.d.ts +1 -0
- package/dist-server/routers/shopify-pos-public-router.js.map +1 -1
- package/dist-server/routes.d.ts +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/util/interface-helper.d.ts +6 -0
- package/dist-server/util/interface-helper.js.map +1 -1
- package/dist-server/util/no-generator.d.ts +4 -0
- package/package.json +61 -61
package/dist-server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warehouse-marketplace-products.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, getCompanyBizplace, getMyBizplace } from '@things-factory/biz-base'\nimport { Domain, ListParam } from '@things-factory/shell'\n\nexport const warehouseMarketplaceProductsResolver = {\n async warehouseMarketplaceProducts(_: any, params: ListParam, context: ResolverContext): Promise<any> {\n try {\n const { domain, user, tx } = context.state\n return warehouseMarketplaceProduct(params, domain, user, tx)\n } catch (error) {\n throw error\n }\n }\n}\n\nexport async function warehouseMarketplaceProduct(params: ListParam, domain: Domain, user: User, tx?: EntityManager) {\n const productFilters = params.filters.filter(x => x.name == 'product_info')\n const filters = params.filters.filter(x => x.name != 'product_info')\n\n const companyBizplace: Bizplace = await getCompanyBizplace(domain, user)\n const myBizplace: Bizplace = await getMyBizplace(domain, user)\n\n params.filters = [...filters, { name: 'bizplace_id', operator: 'in', value: [companyBizplace.id, myBizplace.id] }]\n\n const bizplaceIds: string = params.filters\n .find((filter: any) => filter.name === 'bizplace_id')\n .value.map((id: string) => `'${id}'`)\n .join()\n\n let productQuery = ''\n if (productFilters && productFilters.length > 0) {\n let productInfo = productFilters[0]\n productQuery = ` AND (\n Lower(\"Product\".\"sku\") LIKE '${productInfo.value.toLowerCase()}'\n OR Lower(\"Product\".\"name\") LIKE '${productInfo.value.toLowerCase()}'\n OR Lower(\"Product\".\"description\") LIKE '${productInfo.value.toLowerCase()}')`\n }\n\n await tx.query(`\n CREATE TEMP TABLE \"temp_products\" ON COMMIT DROP AS (\n SELECT * FROM (\n SELECT \"Product\".\"id\" AS \"product_id\", \"Product\".\"sku\" AS \"product_sku\", \"Product\".\"name\" AS \"product_name\", \n \"Product\".\"description\" AS \"product_description\", \"Product\".\"creator_id\", \"Product\".\"updater_id\", \n \"Product\".\"bizplace_id\" AS \"product_bizplace_id\", 'PRODUCT' AS \"type\" \n FROM products \"Product\" \n WHERE 1=1\n AND \"Product\".\"deleted_at\" IS NULL \n AND \"Product\".\"bizplace_id\" IN (${bizplaceIds})\n ${productQuery}\n ) d1\n UNION ALL\n SELECT * FROM\n (\n SELECT \"Product\".\"id\" AS \"product_id\", \"Product\".\"sku\" AS \"product_sku\", \"Product\".\"name\" AS \"product_name\",\n \"Product\".\"description\" AS \"product_description\", \"Product\".\"creator_id\", \"Product\".\"updater_id\", \n \"Product\".\"bizplace_id\" AS \"product_bizplace_id\", 'BUNDLE' AS \"type\" \n FROM product_bundles \"Product\" \n WHERE 1 = 1\n AND \"Product\".\"status\" = 'ACTIVATED'\n AND \"Product\".\"bizplace_id\" IN (${bizplaceIds})\n ${productQuery}\n ) d2\n )\n `)\n\n await tx.query(\n `\n CREATE TEMP TABLE \"temp_order_inventories\" ON COMMIT DROP AS (\t\n SELECT\n SUM(oi.release_qty) AS release_qty, SUM(oi.release_uom_value) AS release_uom_value, oi.batch_id, oi.batch_id_ref, \n oi.product_id, p.product_name, oi.packing_type, oi.packing_size, oi.uom\n FROM\n order_inventories oi\n LEFT JOIN\n temp_products p ON oi.product_id = p.product_id\n INNER JOIN \n domains d2 on d2.id = oi.domain_id and d2.ext_type ='warehouse'\n INNER JOIN \n fulfillment_centers fc ON fc.center_id = d2.subdomain \n WHERE\n fc.domain_id = $1\n AND (oi.status = 'PENDING' or oi.status = 'PENDING_RECEIVE' or oi.status = 'PENDING_WORKSHEET' or oi.status = 'PENDING_SPLIT')\n AND oi.batch_id NOTNULL AND oi.product_id NOTNULL AND oi.packing_type NOTNULL AND oi.packing_size NOTNULL AND oi.inventory_id IS NULL \n GROUP BY\n oi.batch_id, oi.batch_id_ref, oi.product_id, oi.packing_type,\n oi.packing_size, oi.uom, p.product_name\n );\n `,\n [domain.id]\n )\n\n await tx.query(\n `\n CREATE TEMP TABLE \"temp_inventory\" ON COMMIT DROP AS (\t\n select \"i2\".*, coalesce(\"oi\".release_qty,0) + coalesce(\"i2\".locked_qty,0) as \"inventory_locked_qty\" from (\n select \"fc\".\"id\" as \"fulfillment_id\", \"fc\".\"name\" as \"fulfillment_name\",\n \"i2\".\"product_id\", sum(coalesce(\"locked_qty\",0)) as \"locked_qty\", sum(coalesce(\"qty\",0)) as \"inventory_qty\",\n \"i2\".\"domain_id\", \"i2\".\"packing_type\", \"i2\".\"packing_size\", \"i2\".\"uom\"\n from inventories \"i2\"\n inner join warehouses \"w\" on \"w\".\"id\" = \"i2\".\"warehouse_id\" \n inner join domains \"d2\" on \"d2\".\"id\" = \"w\".\"domain_id\" and \"d2\".\"ext_type\" ='warehouse'\n inner join fulfillment_centers \"fc\" ON \"fc\".\"center_id\" = \"d2\".\"subdomain\" \n inner join (\n select \"Product\".\"product_id\" from (\n select case when \"Product\".\"type\" = 'PRODUCT' then \"Product\".\"product_id\" else \"pbs\".\"product_id\" end as \"product_id\"\n from temp_products \"Product\" \n left join product_bundles \"pb\" on \"pb\".\"id\" = \"Product\".\"product_id\" \n left join product_bundle_settings \"pbs\" on \"pbs\".\"product_bundle_id\" = \"pb\".\"id\"\n ) \"Product\" \n group by \"Product\".\"product_id\"\n ) \"Product\" on \"Product\".\"product_id\" = \"i2\".\"product_id\" \n where \"fc\".\"domain_id\" = $1\n and \"i2\".\"status\" = 'STORED'\n group by \"i2\".\"domain_id\", \"fc\".\"id\", \"fc\".\"name\", \"i2\".\"product_id\", \"i2\".\"packing_type\", \"i2\".\"packing_size\", \"i2\".\"uom\"\n ) as \"i2\"\n left join temp_order_inventories \"oi\" on \"i2\".\"product_id\" = \"oi\".\"product_id\" \n AND \"i2\".\"packing_type\" = \"oi\".\"packing_type\" \n AND \"i2\".\"packing_size\" = \"oi\".\"packing_size\" \n AND \"i2\".\"uom\" = \"oi\".\"uom\"\n )\n `,\n [domain.id]\n )\n\n await tx.query(`\n CREATE TEMP TABLE \"temp_json_warehouse_marketplace_products\" ON COMMIT DROP AS (\n select \"product_id\", array_to_json(array_agg(row_to_json(dt))) AS \"Json_marketplaceProducts\" FROM (\n select \"dt\".\"marketplace_store_id\", \"dt\".\"product_id\", \"dt\".\"sku\", array_agg(row_to_json(dt)) as product_variation\n from (\n select \"mp\".\"marketplace_store_id\" as \"marketplace_store_id\", \"mpv\".\"sku\", \"mpv\".\"id\" as \"marketplace_product_variation_id\",\n concat(\"mpv\".\"variation_sku\", ' (', \"mpv\".\"name\", ')') as \"name\", \"mpv\".\"qty\" as \"qty\", \"mpv\".\"reserve_qty\" as \"reserve_qty\",\n \"Product\".\"product_id\" AS \"product_id\"\n from marketplace_product_variations \"mpv\"\n inner join marketplace_products \"mp\" on \"mp\".\"id\" = \"mpv\".\"marketplace_product_id\"\n inner join temp_products \"Product\" on \"mpv\".\"sku\" = \"Product\".\"product_sku\"\n ) as \"dt\"\n group by \"dt\".\"marketplace_store_id\", \"dt\".\"sku\", \"dt\".\"product_id\"\n ) \"dt\" group by \"dt\".\"product_id\"\n )\n `)\n\n await tx.query(\n `\n CREATE TEMP TABLE temp_json_warehouse_inventory ON COMMIT DROP AS (\n select \"product_id\", array_to_json(array_agg((row_to_json(\"dt\")))) AS \"Json_warehouseInventory\" from(\n select \"domain_id\", \"fulfillment_id\", \"fulfillment_name\",\n \"product_id\", \"inventory_locked_qty\", \"inventory_qty\"\n from temp_inventory\n union \n select \"bundledInv\".\"domain_id\", \"bundledInv\".\"fulfillment_id\", \"bundledInv\".\"fulfillment_name\", \"bundledInv\".\"product_id\", \n max(\"bundledInv\".\"inventory_locked_qty\") as \"inventory_locked_qty\", min(\"bundledInv\".\"inventory_qty\") as \"inventory_qty\" from (\n select \"Product\".\"product_id\", fc.domain_id, \"fc\".\"id\" as \"fulfillment_id\", \"fc\".\"name\" as \"fulfillment_name\",\n \"pbs\".\"bundle_qty\",\n case when \"pbs\".\"bundle_qty\" <= 0 then 0 else floor(greatest(\"i2\".\"inventory_qty\", 0)/ \"pbs\".\"bundle_qty\")- floor((greatest(\"i2\".\"inventory_qty\", 0) - greatest(\"i2\".\"inventory_locked_qty\",0)) / \"pbs\".\"bundle_qty\") end AS \"inventory_locked_qty\",\n case when \"pbs\".\"bundle_qty\" <= 0 then 0 else floor(greatest(\"i2\".\"inventory_qty\", 0)/ \"pbs\".\"bundle_qty\") end AS \"inventory_qty\"\n from temp_products \"Product\" \n inner join product_bundle_settings pbs ON pbs.product_bundle_id = \"Product\".\"product_id\"\n inner join products p on p.id = pbs.product_id \n cross join fulfillment_centers fc \n inner join domains \"d2\" on \"d2\".\"ext_type\" ='warehouse' and \"fc\".\"center_id\" = \"d2\".\"subdomain\"\n left join temp_inventory i2 ON i2.product_id = pbs.product_id and \"d2\".\"id\" = \"i2\".\"domain_id\" \n where \"fc\".\"domain_id\" = $1\n order by fc.id, \"Product\".\"product_sku\", p.sku\n ) \"bundledInv\"\n group by \"domain_id\",\"fulfillment_id\",\"fulfillment_name\",\"product_id\"\n ) \"dt\" group by \"dt\".\"product_id\"\n )\n `,\n [domain.id]\n )\n\n await tx.query(`\n CREATE TEMP TABLE temp_warehouse_marketplace_products ON COMMIT DROP as (\n SELECT \"Product\".\"product_id\" AS \"Product_id\", \"Product\".\"product_sku\" AS \"Product_sku\", \n \"Product\".\"product_name\" AS \"Product_name\", \"Product\".\"product_description\" AS \"Product_description\", \n \"Product\".\"product_bizplace_id\" AS \"Product_bizplace_id\", \n \"Product\".\"creator_id\" AS \"Product_creator_id\", \"Product\".\"updater_id\" AS \"Product_updater_id\", \n \"Bizplace\".\"name\" AS \"Bizplace_name\", \"Bizplace\".\"description\" AS \"Bizplace_description\", \"Bizplace\".\"address\" AS \"Bizplace_address\", \"Bizplace\".\"postal_code\" AS \"Bizplace_postal_code\", \n \"Bizplace\".\"latlng\" AS \"Bizplace_latlng\", \"Bizplace\".\"status\" AS \"Bizplace_status\", \"Bizplace\".\"created_at\" AS \"Bizplace_created_at\", \"Bizplace\".\"updated_at\" AS \"Bizplace_updated_at\", \n \"Bizplace\".\"domain_id\" AS \"Bizplace_domain_id\", \"Bizplace\".\"company_id\" AS \"Bizplace_company_id\", \"Bizplace\".\"creator_id\" AS \"Bizplace_creator_id\", \"Bizplace\".\"updater_id\" AS \"Bizplace_updater_id\", \n \"Creator\".\"id\" AS \"Creator_id\", \"Creator\".\"name\" AS \"Creator_name\", \"Creator\".\"description\" AS \"Creator_description\", \"Creator\".\"email\" AS \"Creator_email\",\n \"Updater\".\"id\" AS \"Updater_id\", \"Updater\".\"name\" AS \"Updater_name\", \"Updater\".\"description\" AS \"Updater_description\", \"Updater\".\"email\" AS \"Updater_email\"\n ,COALESCE(\"whInv\".\"Json_warehouseInventory\", null) AS \"Json_warehouseInventory\"\n ,COALESCE(\"mktPrd\".\"Json_marketplaceProducts\", null) AS \"Json_marketplaceProducts\"\n FROM \"temp_products\" \"Product\"\n LEFT JOIN \"bizplaces\" \"Bizplace\" ON \"Bizplace\".\"id\" = \"Product\".\"product_bizplace_id\"\n LEFT JOIN \"users\" \"Creator\" ON \"Creator\".\"id\"=\"Product\".\"creator_id\" \n LEFT JOIN \"users\" \"Updater\" ON \"Updater\".\"id\"=\"Product\".\"updater_id\"\n LEFT JOIN \"temp_json_warehouse_inventory\" \"whInv\" ON \"whInv\".\"product_id\" = \"Product\".\"product_id\"\n LEFT JOIN \"temp_json_warehouse_marketplace_products\" \"mktPrd\" ON \"mktPrd\".\"product_id\" = \"Product\".\"product_id\"\n )\n `)\n\n const offsetQuery: string = params?.pagination\n ? `OFFSET ${(params.pagination.page - 1) * params.pagination.limit} LIMIT ${params.pagination.limit}`\n : ''\n\n const total: any = await tx.query(`select count(*) from temp_warehouse_marketplace_products`)\n\n const items: any[] = await tx.query(\n `\n select * from temp_warehouse_marketplace_products ${offsetQuery}\n `\n )\n\n return {\n items: items.map((itm, index) => {\n return {\n seq: index + (params?.pagination ? (params.pagination.page - 1) * params.pagination.limit + 1 : 0),\n id: itm.Product_id,\n sku: itm.Product_sku,\n name: itm.Product_name,\n description: itm.Product_description,\n marketplaceProduct: itm.Json_marketplaceProducts\n ? itm.Json_marketplaceProducts.map(product => {\n return {\n marketplaceStore: { id: product.marketplace_store_id },\n marketplaceProductVariations: product.product_variation.map(variation => {\n return {\n id: variation.marketplace_product_variation_id,\n name: variation.name,\n qty: variation.qty,\n reserveQty: variation.reserve_qty\n }\n })\n }\n })\n : null,\n warehouseInventory: itm.Json_warehouseInventory\n ? itm.Json_warehouseInventory.map(inventory => {\n return {\n bizplace: { id: inventory.fulfillment_id, name: inventory.fulfillment_name },\n product: { id: inventory.product_id },\n qty: inventory.inventory_qty,\n lockedQty: inventory.inventory_locked_qty ? inventory.inventory_locked_qty : 0,\n remainQty:\n inventory.inventory_qty - (inventory.inventory_locked_qty ? inventory.inventory_locked_qty : 0)\n }\n })\n : null\n }\n }),\n total: total[0].count\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"warehouse-marketplace-products.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, getCompanyBizplace, getMyBizplace } from '@things-factory/biz-base'\nimport { Domain, ListParam } from '@things-factory/shell'\n\nexport const warehouseMarketplaceProductsResolver = {\n async warehouseMarketplaceProducts(_: any, params: ListParam, context: ResolverContext): Promise<any> {\n try {\n const { domain, user, tx } = context.state\n return warehouseMarketplaceProduct(params, domain, user, tx)\n } catch (error) {\n throw error\n }\n }\n}\n\nexport async function warehouseMarketplaceProduct(params: ListParam, domain: Domain, user: User, tx?: EntityManager) {\n const productFilters = params.filters.filter(x => x.name == 'product_info')\n const filters = params.filters.filter(x => x.name != 'product_info')\n\n const companyBizplace: Bizplace = await getCompanyBizplace(domain, user)\n const myBizplace: Bizplace = await getMyBizplace(domain, user)\n\n params.filters = [...filters, { name: 'bizplace_id', operator: 'in', value: [companyBizplace.id, myBizplace.id] }]\n\n const bizplaceIds: string = params.filters\n .find((filter: any) => filter.name === 'bizplace_id')\n .value.map((id: string) => `'${id}'`)\n .join()\n\n let productQuery = ''\n if (productFilters && productFilters.length > 0) {\n let productInfo = productFilters[0]\n productQuery = ` AND (\n Lower(\"Product\".\"sku\") LIKE '${productInfo.value.toLowerCase()}'\n OR Lower(\"Product\".\"name\") LIKE '${productInfo.value.toLowerCase()}'\n OR Lower(\"Product\".\"description\") LIKE '${productInfo.value.toLowerCase()}')`\n }\n\n await tx.query(`\n CREATE TEMP TABLE \"temp_products\" ON COMMIT DROP AS (\n SELECT * FROM (\n SELECT \"Product\".\"id\" AS \"product_id\", \"Product\".\"sku\" AS \"product_sku\", \"Product\".\"name\" AS \"product_name\", \n \"Product\".\"description\" AS \"product_description\", \"Product\".\"creator_id\", \"Product\".\"updater_id\", \n \"Product\".\"bizplace_id\" AS \"product_bizplace_id\", 'PRODUCT' AS \"type\" \n FROM products \"Product\" \n WHERE 1=1\n AND \"Product\".\"deleted_at\" IS NULL \n AND \"Product\".\"bizplace_id\" IN (${bizplaceIds})\n ${productQuery}\n ) d1\n UNION ALL\n SELECT * FROM\n (\n SELECT \"Product\".\"id\" AS \"product_id\", \"Product\".\"sku\" AS \"product_sku\", \"Product\".\"name\" AS \"product_name\",\n \"Product\".\"description\" AS \"product_description\", \"Product\".\"creator_id\", \"Product\".\"updater_id\", \n \"Product\".\"bizplace_id\" AS \"product_bizplace_id\", 'BUNDLE' AS \"type\" \n FROM product_bundles \"Product\" \n WHERE 1 = 1\n AND \"Product\".\"status\" = 'ACTIVATED'\n AND \"Product\".\"bizplace_id\" IN (${bizplaceIds})\n ${productQuery}\n ) d2\n )\n `)\n\n await tx.query(\n `\n CREATE TEMP TABLE \"temp_order_inventories\" ON COMMIT DROP AS (\t\n SELECT\n SUM(oi.release_qty) AS release_qty, SUM(oi.release_uom_value) AS release_uom_value, oi.batch_id, oi.batch_id_ref, \n oi.product_id, p.product_name, oi.packing_type, oi.packing_size, oi.uom\n FROM\n order_inventories oi\n LEFT JOIN\n temp_products p ON oi.product_id = p.product_id\n INNER JOIN \n domains d2 on d2.id = oi.domain_id and d2.ext_type ='warehouse'\n INNER JOIN \n fulfillment_centers fc ON fc.center_id = d2.subdomain \n WHERE\n fc.domain_id = $1\n AND (oi.status = 'PENDING' or oi.status = 'PENDING_RECEIVE' or oi.status = 'PENDING_WORKSHEET' or oi.status = 'PENDING_SPLIT')\n AND oi.batch_id NOTNULL AND oi.product_id NOTNULL AND oi.packing_type NOTNULL AND oi.packing_size NOTNULL AND oi.inventory_id IS NULL \n GROUP BY\n oi.batch_id, oi.batch_id_ref, oi.product_id, oi.packing_type,\n oi.packing_size, oi.uom, p.product_name\n );\n `,\n [domain.id]\n )\n\n await tx.query(\n `\n CREATE TEMP TABLE \"temp_inventory\" ON COMMIT DROP AS (\t\n select \"i2\".*, coalesce(\"oi\".release_qty,0) + coalesce(\"i2\".locked_qty,0) as \"inventory_locked_qty\" from (\n select \"fc\".\"id\" as \"fulfillment_id\", \"fc\".\"name\" as \"fulfillment_name\",\n \"i2\".\"product_id\", sum(coalesce(\"locked_qty\",0)) as \"locked_qty\", sum(coalesce(\"qty\",0)) as \"inventory_qty\",\n \"i2\".\"domain_id\", \"i2\".\"packing_type\", \"i2\".\"packing_size\", \"i2\".\"uom\"\n from inventories \"i2\"\n inner join warehouses \"w\" on \"w\".\"id\" = \"i2\".\"warehouse_id\" \n inner join domains \"d2\" on \"d2\".\"id\" = \"w\".\"domain_id\" and \"d2\".\"ext_type\" ='warehouse'\n inner join fulfillment_centers \"fc\" ON \"fc\".\"center_id\" = \"d2\".\"subdomain\" \n inner join (\n select \"Product\".\"product_id\" from (\n select case when \"Product\".\"type\" = 'PRODUCT' then \"Product\".\"product_id\" else \"pbs\".\"product_id\" end as \"product_id\"\n from temp_products \"Product\" \n left join product_bundles \"pb\" on \"pb\".\"id\" = \"Product\".\"product_id\" \n left join product_bundle_settings \"pbs\" on \"pbs\".\"product_bundle_id\" = \"pb\".\"id\"\n ) \"Product\" \n group by \"Product\".\"product_id\"\n ) \"Product\" on \"Product\".\"product_id\" = \"i2\".\"product_id\" \n where \"fc\".\"domain_id\" = $1\n and \"i2\".\"status\" = 'STORED'\n group by \"i2\".\"domain_id\", \"fc\".\"id\", \"fc\".\"name\", \"i2\".\"product_id\", \"i2\".\"packing_type\", \"i2\".\"packing_size\", \"i2\".\"uom\"\n ) as \"i2\"\n left join temp_order_inventories \"oi\" on \"i2\".\"product_id\" = \"oi\".\"product_id\" \n AND \"i2\".\"packing_type\" = \"oi\".\"packing_type\" \n AND \"i2\".\"packing_size\" = \"oi\".\"packing_size\" \n AND \"i2\".\"uom\" = \"oi\".\"uom\"\n )\n `,\n [domain.id]\n )\n\n await tx.query(`\n CREATE TEMP TABLE \"temp_json_warehouse_marketplace_products\" ON COMMIT DROP AS (\n select \"product_id\", array_to_json(array_agg(row_to_json(dt))) AS \"Json_marketplaceProducts\" FROM (\n select \"dt\".\"marketplace_store_id\", \"dt\".\"product_id\", \"dt\".\"sku\", array_agg(row_to_json(dt)) as product_variation\n from (\n select \"mp\".\"marketplace_store_id\" as \"marketplace_store_id\", \"mpv\".\"sku\", \"mpv\".\"id\" as \"marketplace_product_variation_id\",\n concat(\"mpv\".\"variation_sku\", ' (', \"mpv\".\"name\", ')') as \"name\", \"mpv\".\"qty\" as \"qty\", \"mpv\".\"reserve_qty\" as \"reserve_qty\",\n \"Product\".\"product_id\" AS \"product_id\"\n from marketplace_product_variations \"mpv\"\n inner join marketplace_products \"mp\" on \"mp\".\"id\" = \"mpv\".\"marketplace_product_id\"\n inner join temp_products \"Product\" on \"mpv\".\"sku\" = \"Product\".\"product_sku\"\n ) as \"dt\"\n group by \"dt\".\"marketplace_store_id\", \"dt\".\"sku\", \"dt\".\"product_id\"\n ) \"dt\" group by \"dt\".\"product_id\"\n )\n `)\n\n await tx.query(\n `\n CREATE TEMP TABLE temp_json_warehouse_inventory ON COMMIT DROP AS (\n select \"product_id\", array_to_json(array_agg((row_to_json(\"dt\")))) AS \"Json_warehouseInventory\" from(\n select \"domain_id\", \"fulfillment_id\", \"fulfillment_name\",\n \"product_id\", \"inventory_locked_qty\", \"inventory_qty\"\n from temp_inventory\n union \n select \"bundledInv\".\"domain_id\", \"bundledInv\".\"fulfillment_id\", \"bundledInv\".\"fulfillment_name\", \"bundledInv\".\"product_id\", \n max(\"bundledInv\".\"inventory_locked_qty\") as \"inventory_locked_qty\", min(\"bundledInv\".\"inventory_qty\") as \"inventory_qty\" from (\n select \"Product\".\"product_id\", fc.domain_id, \"fc\".\"id\" as \"fulfillment_id\", \"fc\".\"name\" as \"fulfillment_name\",\n \"pbs\".\"bundle_qty\",\n case when \"pbs\".\"bundle_qty\" <= 0 then 0 else floor(greatest(\"i2\".\"inventory_qty\", 0)/ \"pbs\".\"bundle_qty\")- floor((greatest(\"i2\".\"inventory_qty\", 0) - greatest(\"i2\".\"inventory_locked_qty\",0)) / \"pbs\".\"bundle_qty\") end AS \"inventory_locked_qty\",\n case when \"pbs\".\"bundle_qty\" <= 0 then 0 else floor(greatest(\"i2\".\"inventory_qty\", 0)/ \"pbs\".\"bundle_qty\") end AS \"inventory_qty\"\n from temp_products \"Product\" \n inner join product_bundle_settings pbs ON pbs.product_bundle_id = \"Product\".\"product_id\"\n inner join products p on p.id = pbs.product_id \n cross join fulfillment_centers fc \n inner join domains \"d2\" on \"d2\".\"ext_type\" ='warehouse' and \"fc\".\"center_id\" = \"d2\".\"subdomain\"\n left join temp_inventory i2 ON i2.product_id = pbs.product_id and \"d2\".\"id\" = \"i2\".\"domain_id\" \n where \"fc\".\"domain_id\" = $1\n order by fc.id, \"Product\".\"product_sku\", p.sku\n ) \"bundledInv\"\n group by \"domain_id\",\"fulfillment_id\",\"fulfillment_name\",\"product_id\"\n ) \"dt\" group by \"dt\".\"product_id\"\n )\n `,\n [domain.id]\n )\n\n await tx.query(`\n CREATE TEMP TABLE temp_warehouse_marketplace_products ON COMMIT DROP as (\n SELECT \"Product\".\"product_id\" AS \"Product_id\", \"Product\".\"product_sku\" AS \"Product_sku\", \n \"Product\".\"product_name\" AS \"Product_name\", \"Product\".\"product_description\" AS \"Product_description\", \n \"Product\".\"product_bizplace_id\" AS \"Product_bizplace_id\", \n \"Product\".\"creator_id\" AS \"Product_creator_id\", \"Product\".\"updater_id\" AS \"Product_updater_id\", \n \"Bizplace\".\"name\" AS \"Bizplace_name\", \"Bizplace\".\"description\" AS \"Bizplace_description\", \"Bizplace\".\"address\" AS \"Bizplace_address\", \"Bizplace\".\"postal_code\" AS \"Bizplace_postal_code\", \n \"Bizplace\".\"latlng\" AS \"Bizplace_latlng\", \"Bizplace\".\"status\" AS \"Bizplace_status\", \"Bizplace\".\"created_at\" AS \"Bizplace_created_at\", \"Bizplace\".\"updated_at\" AS \"Bizplace_updated_at\", \n \"Bizplace\".\"domain_id\" AS \"Bizplace_domain_id\", \"Bizplace\".\"company_id\" AS \"Bizplace_company_id\", \"Bizplace\".\"creator_id\" AS \"Bizplace_creator_id\", \"Bizplace\".\"updater_id\" AS \"Bizplace_updater_id\", \n \"Creator\".\"id\" AS \"Creator_id\", \"Creator\".\"name\" AS \"Creator_name\", \"Creator\".\"description\" AS \"Creator_description\", \"Creator\".\"email\" AS \"Creator_email\",\n \"Updater\".\"id\" AS \"Updater_id\", \"Updater\".\"name\" AS \"Updater_name\", \"Updater\".\"description\" AS \"Updater_description\", \"Updater\".\"email\" AS \"Updater_email\"\n ,COALESCE(\"whInv\".\"Json_warehouseInventory\", null) AS \"Json_warehouseInventory\"\n ,COALESCE(\"mktPrd\".\"Json_marketplaceProducts\", null) AS \"Json_marketplaceProducts\"\n FROM \"temp_products\" \"Product\"\n LEFT JOIN \"bizplaces\" \"Bizplace\" ON \"Bizplace\".\"id\" = \"Product\".\"product_bizplace_id\"\n LEFT JOIN \"users\" \"Creator\" ON \"Creator\".\"id\"=\"Product\".\"creator_id\" \n LEFT JOIN \"users\" \"Updater\" ON \"Updater\".\"id\"=\"Product\".\"updater_id\"\n LEFT JOIN \"temp_json_warehouse_inventory\" \"whInv\" ON \"whInv\".\"product_id\" = \"Product\".\"product_id\"\n LEFT JOIN \"temp_json_warehouse_marketplace_products\" \"mktPrd\" ON \"mktPrd\".\"product_id\" = \"Product\".\"product_id\"\n )\n `)\n\n const offsetQuery: string = params?.pagination\n ? `OFFSET ${(params.pagination.page - 1) * params.pagination.limit} LIMIT ${params.pagination.limit}`\n : ''\n\n const total: any = await tx.query(`select count(*) from temp_warehouse_marketplace_products`)\n\n const items: any[] = await tx.query(\n `\n select * from temp_warehouse_marketplace_products ${offsetQuery}\n `\n )\n\n return {\n items: items.map((itm, index) => {\n return {\n seq: index + (params?.pagination ? (params.pagination.page - 1) * params.pagination.limit + 1 : 0),\n id: itm.Product_id,\n sku: itm.Product_sku,\n name: itm.Product_name,\n description: itm.Product_description,\n marketplaceProduct: itm.Json_marketplaceProducts\n ? itm.Json_marketplaceProducts.map(product => {\n return {\n marketplaceStore: { id: product.marketplace_store_id },\n marketplaceProductVariations: product.product_variation.map(variation => {\n return {\n id: variation.marketplace_product_variation_id,\n name: variation.name,\n qty: variation.qty,\n reserveQty: variation.reserve_qty\n }\n })\n }\n })\n : null,\n warehouseInventory: itm.Json_warehouseInventory\n ? itm.Json_warehouseInventory.map(inventory => {\n return {\n bizplace: { id: inventory.fulfillment_id, name: inventory.fulfillment_name },\n product: { id: inventory.product_id },\n qty: inventory.inventory_qty,\n lockedQty: inventory.inventory_locked_qty ? inventory.inventory_locked_qty : 0,\n remainQty:\n inventory.inventory_qty - (inventory.inventory_locked_qty ? inventory.inventory_locked_qty : 0)\n }\n })\n : null\n }\n }),\n total: total[0].count\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shipping-providers.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/shipping-provider/shipping-providers.ts"],"names":[],"mappings":";;;AAAA,uEAAmE;AACnE,iDAAgE;AAEnD,QAAA,iBAAiB,GAAG;IAC/B,KAAK,CAAC,iBAAiB,CACrB,CAAM,EACN,MAA6D,EAC7D,OAAwB;QAExB,IAAI;
|
|
1
|
+
{"version":3,"file":"shipping-providers.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/shipping-provider/shipping-providers.ts"],"names":[],"mappings":";;;AAAA,uEAAmE;AACnE,iDAAgE;AAEnD,QAAA,iBAAiB,GAAG;IAC/B,KAAK,CAAC,iBAAiB,CACrB,CAAM,EACN,MAA6D,EAC7D,OAAwB;QAExB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAEhC,IAAI,YAAY,GAAG,EAAE,CAAA;YACrB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,YAAY,GAAG,kBAAkB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACvD,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;gBACtB,CAAC,CAAC,GAAG,CAAA;YACP,CAAC;YAED,IAAI,KAAK,GAAU,MAAM,IAAA,qBAAa,EAAC,mCAAgB,CAAC,CAAC,KAAK,CAC5D;uFAC+E,MAAM,CAAC,EAAE,iCAAiC,MAAM,CAAC,OAAO;OACxI,GAAG,YAAY,CACf,CAAA;YAED,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACpB,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAA;gBAEjD,OAAO;oBACL,gBAAgB;iBACjB,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,EAAE,KAAK,EAAE,CAAA;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF,CAAA","sourcesContent":["import { MarketplaceOrder } from '@things-factory/marketplace-base'\nimport { getRepository, ListParam } from '@things-factory/shell'\n\nexport const shippingProviders = {\n async shippingProviders(\n _: any,\n params: ListParam & { statuses?: string[]; storeId?: string },\n context: ResolverContext\n ) {\n try {\n const { domain } = context.state\n\n let statusFilter = ``\n if (params.statuses) {\n statusFilter = `AND status in (${params.statuses.map(e => {\n return `'` + e + `'`\n })})`\n }\n\n let items: any[] = await getRepository(MarketplaceOrder).query(\n `\n SELECT DISTINCT shipping_provider FROM marketplace_orders WHERE domain_id = '${domain.id}' AND marketplace_store_id = '${params.storeId}' AND shipping_provider IS NOT null AND shipping_provider != ''\n ` + statusFilter\n )\n\n items = items.map(e => {\n const { shipping_provider: shippingProvider } = e\n\n return {\n shippingProvider\n }\n })\n\n return { items }\n } catch (error) {\n throw error\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const autoLinkWarehouseMarketplaceProductVariationsResolver: {
|
|
2
|
+
autoLinkWarehouseMarketplaceProductVariations(_: any, { marketplaceStoreIds, isCheckedSku }: {
|
|
3
|
+
marketplaceStoreIds: any;
|
|
4
|
+
isCheckedSku: any;
|
|
5
|
+
}, context: ResolverContext): Promise<Boolean>;
|
|
6
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-link-warehouse-marketplace-product-variations.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/warehouse-product/auto-link-warehouse-marketplace-product-variations.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAEpC,uEAAkG;AAClG,iDAAuD;AAEvD,yGAAkG;AAErF,QAAA,qDAAqD,GAAG;IACnE,KAAK,CAAC,6CAA6C,CACjD,CAAM,EACN,EAAE,mBAAmB,EAAE,YAAY,EAAE,EACrC,OAAwB;QAExB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE1C,MAAM,GAAG,GAAG,uBAAuB,CAAA;QAEnC,MAAM,gCAAgC,CAAC;YACrC,MAAM;YACN,IAAI;YACJ,GAAG;YACH,mBAAmB;YACnB,YAAY;YACZ,EAAE;SACH,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAED,KAAK,UAAU,gCAAgC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,mBAAmB,EAAE,YAAY,EAAE,EAAE,EAAE;IAC1G,IAAI;
|
|
1
|
+
{"version":3,"file":"auto-link-warehouse-marketplace-product-variations.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/warehouse-product/auto-link-warehouse-marketplace-product-variations.ts"],"names":[],"mappings":"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","sourcesContent":["import { In, IsNull } from 'typeorm'\n\nimport { MarketplaceProduct, MarketplaceProductVariation } from '@things-factory/marketplace-base'\nimport { publishProgress } from '@things-factory/shell'\n\nimport { warehouseMarketplaceProduct } from '../interface-with-hub/warehouse-marketplace-products'\n\nexport const autoLinkWarehouseMarketplaceProductVariationsResolver = {\n async autoLinkWarehouseMarketplaceProductVariations(\n _: any,\n { marketplaceStoreIds, isCheckedSku },\n context: ResolverContext\n ): Promise<Boolean> {\n const { domain, user, tx } = context.state\n\n const tag = `progress-link-product`\n\n await linkMarketplaceProductVariations({\n domain,\n user,\n tag,\n marketplaceStoreIds,\n isCheckedSku,\n tx\n })\n\n return true\n }\n}\n\nasync function linkMarketplaceProductVariations({ domain, user, tag, marketplaceStoreIds, isCheckedSku, tx }) {\n try {\n const params: any = { filters: [], sortings: [] }\n const warehouseMarketplaceProducts = await warehouseMarketplaceProduct(params, domain, user, tx)\n\n const marketplaceProducts: MarketplaceProduct[] = await tx.getRepository(MarketplaceProduct).find({\n where: { domain: { id: domain.id }, marketplaceStore: In(marketplaceStoreIds) }\n })\n\n let marketplaceProductVariations: MarketplaceProductVariation[] = await tx\n .getRepository(MarketplaceProductVariation)\n .find({\n where: {\n domain: { id: domain.id },\n marketplaceProduct: In(marketplaceProducts.map(product => product.id)),\n sku: IsNull()\n }\n })\n\n let total: number = marketplaceProductVariations?.length\n\n const linkedProductVariations: MarketplaceProductVariation[] = await Promise.all(\n marketplaceProductVariations.map((productVariation: MarketplaceProductVariation, idx) => {\n let foundSku: any\n\n if (isCheckedSku) {\n foundSku = warehouseMarketplaceProducts.items.find(\n warehouseProd => warehouseProd.sku === productVariation.variationSku\n )\n }\n\n productVariation.sku = foundSku?.sku ? foundSku.sku : null\n productVariation.updater = user\n\n publishProgress({\n domain: { id: domain.id },\n tag,\n progress: Math.floor((idx / total) * 100),\n message: `${idx} / ${total}`\n })\n\n return productVariation\n })\n )\n\n await tx.getRepository(MarketplaceProductVariation).save(linkedProductVariations)\n } catch (ex) {\n publishProgress({\n domain,\n tag,\n progress: -1,\n message: 'failed'\n })\n\n throw ex\n }\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const Mutation = "\n addReleaseOrder(marketplaceOrderIds: [String]!, warehouseId: String!): Boolean @transaction\n autoAddReleaseOrder(warehouseId: String): Boolean @transaction\n generateReplenishmentOrder(stockReplenishmentId: String!, warehouseId: String!): StockReplenishment @transaction\n autoUpdateAllMarketplaceProductVariationQuantity(companyDomainId: String, warehouseId: String): Boolean @transaction\n";
|
|
2
|
+
export declare const Query = "\n warehouseMarketplaceProducts(filters: [Filter], pagination: Pagination, sortings: [Sorting]): WarehouseMarketplaceProductList @transaction\n";
|
|
3
|
+
export declare const Types: import("graphql/language/ast").DocumentNode[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const NewStockReplenishment: import("graphql/language/ast").DocumentNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ReplenishmentOrderProduct: import("graphql/language/ast").DocumentNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const StockReplenishmentList: import("graphql/language/ast").DocumentNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const StockReplenishment: import("graphql/language/ast").DocumentNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WarehouseInventory: import("graphql/language/ast").DocumentNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WarehouseMarketplaceProductList: import("graphql/language/ast").DocumentNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WarehouseMarketplaceProduct: import("graphql/language/ast").DocumentNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ShippingProviderList: import("graphql/language/ast").DocumentNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ShippingProvider: import("graphql/language/ast").DocumentNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WarehouseProduct: import("graphql/language/ast").DocumentNode;
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1608009991075-SeedUser.js","sourceRoot":"","sources":["../../server/migrations/1608009991075-SeedUser.ts"],"names":[],"mappings":";;;AAEA,yDAA4D;AAE5D,iDAA6D;AAE7D,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,oBAAoB;IAC3B,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,sBAAU,CAAC,SAAS;CAC7B,CAAA;AACD,MAAa,qBAAqB;IACzB,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,cAAc,GAAqB,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAA;QAC5D,MAAM,gBAAgB,GAAuB,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAA;QAElE,IAAI,SAAS,GAAS,MAAM,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAChH,IAAI,YAAY,GAAW,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAE1F,IAAI,CAAC,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"1608009991075-SeedUser.js","sourceRoot":"","sources":["../../server/migrations/1608009991075-SeedUser.ts"],"names":[],"mappings":";;;AAEA,yDAA4D;AAE5D,iDAA6D;AAE7D,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,oBAAoB;IAC3B,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,sBAAU,CAAC,SAAS;CAC7B,CAAA;AACD,MAAa,qBAAqB;IACzB,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,cAAc,GAAqB,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAA;QAC5D,MAAM,gBAAgB,GAAuB,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAA;QAElE,IAAI,SAAS,GAAS,MAAM,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAChH,IAAI,YAAY,GAAW,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAE1F,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,gBAAI,CAAC,YAAY,EAAE,CAAA;YAEhC,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,iCAChC,UAAU,KACb,IAAI,EACJ,QAAQ,EAAE,gBAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,IAChD,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAA;YAC3B,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,OAAO,GAAG,SAAS,CAAA;YAChC,MAAM,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,YAAY,GAAY;YAC5B,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,WAAW,EAAE,YAAY,CAAC,WAAW,IAAI,IAAI;YAC7C,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,EAAE;YACf,GAAG,EAAE,EAAE;SACD,CAAA;IACV,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,cAAc,GAAG,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAA;QAC1C,MAAM,gBAAgB,GAAG,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAA;QAE9C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC/E,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAE5C,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QACpF,MAAM,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAA;IACxD,CAAC;CACF;AA9CD,sDA8CC","sourcesContent":["import { MigrationInterface, QueryRunner, Repository } from 'typeorm'\n\nimport { User, UserStatus } from '@things-factory/auth-base'\nimport { Company } from '@things-factory/biz-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nconst ADMIN_USER = {\n name: 'Admin',\n email: 'admin@hatiolab.com',\n password: 'admin',\n userType: 'user',\n status: UserStatus.ACTIVATED\n}\nexport class SeedUser1608009991075 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<any> {\n const userRepository: Repository<User> = getRepository(User)\n const domainRepository: Repository<Domain> = getRepository(Domain)\n\n let adminUser: User = await userRepository.findOne({ where: { name: ADMIN_USER.name }, relations: ['domains'] })\n let systemDomain: Domain = await domainRepository.findOne({ where: { systemFlag: true } })\n\n if (!adminUser) {\n const salt = User.generateSalt()\n\n adminUser = await userRepository.save({\n ...ADMIN_USER,\n salt,\n password: User.encode(ADMIN_USER.password, salt)\n })\n } else {\n adminUser.userType = 'user'\n await userRepository.save(adminUser)\n }\n\n if (systemDomain) {\n systemDomain.extType = 'company'\n await domainRepository.save(systemDomain)\n }\n\n const companyInput: Company = {\n name: systemDomain.name,\n description: systemDomain.description || null,\n address: '',\n postalCode: '',\n countryCode: '',\n brn: ''\n } as any\n }\n\n public async down(queryRunner: QueryRunner): Promise<any> {\n const userRepository = getRepository(User)\n const domainRepository = getRepository(Domain)\n\n const user = await userRepository.findOne({ where: { name: ADMIN_USER.name } })\n await userRepository.delete({ id: user.id })\n\n const systemDomain = await domainRepository.findOne({ where: { systemFlag: true } })\n await domainRepository.delete({ id: systemDomain.id })\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare var migrations: any[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const etraxRouter: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"etrax-router.js","sourceRoot":"","sources":["../../server/routers/etrax-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\n\nimport { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'\nimport { FulfillmentAPI, FulfillmentCenter } from '@things-factory/integration-fulfillment'\nimport { Etrax, LastMileDelivery } from '@things-factory/integration-lmd'\nimport { MarketplaceStore, MarketplaceTransporter, StoreAPI } from '@things-factory/integration-marketplace'\nimport {\n MarketplaceOrder,\n MarketplaceOrderItem,\n MarketplaceOrderShipping,\n MarketplaceOrderShippingItem\n} from '@things-factory/marketplace-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nconst debug = require('debug')('things-factory:jest.config')\nexport const etraxRouter = new Router()\n\netraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {\n const repo = getRepository(LastMileDelivery)\n const requestBody = context.request.body\n debug('etrax_status_update/context: ', context)\n\n const bodyToken = requestBody.Token\n const bodyTimestamp = requestBody.TimeStamp\n const bodySourceID = requestBody.SourceID\n const extOrderNo = requestBody.ExtOrderNo\n const trackingNo = requestBody.TrackingNo\n const status = requestBody.Status\n const awbUrl = requestBody.AWBurl\n\n const customerCode = bodySourceID\n const lmd: LastMileDelivery = await repo.findOne({\n where: { clientName: customerCode, platform: 'eTrax' }\n })\n debug(lmd)\n\n const secretKey = lmd.secretKey\n\n if (customerCode === '' || secretKey === '') {\n //Cant find the correct record\n return\n }\n\n const etrax = new Etrax(customerCode)\n debug('RequestBody: ', requestBody)\n //Validate Token\n const validate = await etrax.validateToken(bodyToken, 'UPDATE_STATUS', bodyTimestamp)\n debug('IsAuthenticated: ', validate)\n\n if (!validate) {\n //Return unauthorized\n const resp = {\n Status: 'ERROR',\n Code: 302,\n Message: 'Validate failed',\n OrderNo: extOrderNo,\n ExtOrderNo: extOrderNo,\n TrackingNo: trackingNo\n }\n context.type = 'application/json'\n context.body = JSON.stringify(resp)\n return\n }\n\n //TAS - Transporter Assignment Success\n if (status === 'TAS') {\n //Update DB if Validate Success\n const orderRepo = getRepository(MarketplaceOrder)\n const orderShippingRepo = getRepository(MarketplaceOrderShipping)\n\n let order: MarketplaceOrder = await orderRepo.findOne({\n where: { orderNo: extOrderNo },\n relations: [\n 'domain',\n 'marketplaceStore',\n 'marketplaceOrderItems',\n 'marketplaceOrderItems.marketplaceOrderShippingItems',\n 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',\n 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping.fulfillmentCenter',\n 'marketplaceOrderItems.marketplaceProductVariation'\n ]\n })\n let orderItems: MarketplaceOrderItem[] = order.marketplaceOrderItems\n\n const marketplaceStore: MarketplaceStore = order.marketplaceStore\n\n const marketplaceTransporter: MarketplaceTransporter = await getRepository(MarketplaceTransporter).findOne({\n where: { marketplaceStore: { id: marketplaceStore.id } },\n relations: ['pickupTransporter']\n })\n\n for (const orderItem of orderItems) {\n if (orderItem.marketplaceOrderShippingItems[0].marketplaceOrderShipping !== null) {\n const orderShippingItems: MarketplaceOrderShippingItem[] = orderItem.marketplaceOrderShippingItems\n const orderShipping: MarketplaceOrderShipping = orderShippingItems[0].marketplaceOrderShipping\n const fulfillmentCenter: FulfillmentCenter = orderShipping?.fulfillmentCenter\n\n const centerId: string = fulfillmentCenter.centerId\n const warehouseDomain: Domain = await getRepository(Domain).findOne({ where: { subdomain: centerId } })\n const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)\n const customerBizplaceId: string = customerBizplaces.find(\n customerBizplace => customerBizplace.company.domain.id == order?.domain.id\n ).id\n\n let patch = {\n id: orderShipping.releaseOrderId,\n trackingNo: trackingNo,\n transporter: marketplaceTransporter?.pickupTransporter.name\n }\n\n FulfillmentAPI.updateReleaseGoodDetails(fulfillmentCenter, {\n customerBizplaceId,\n releaseOrder: { ...patch },\n shippingOrder: null\n })\n\n await orderShippingRepo.update({ id: orderShipping.id }, {\n trackingNo: trackingNo,\n airwayBill: awbUrl,\n updatedAt: new Date(),\n transporter: marketplaceTransporter?.pickupTransporter.name || orderShipping.transporter\n } as any)\n }\n }\n\n // to-do update tracking no to every marketplaces\n if (marketplaceStore.platform === 'woocommerce' || marketplaceStore.platform === 'shopify') {\n const note = 'http://ets.sntglobal.com/?mod=tracking&action=index&orders=' + trackingNo\n let orderInfo: MarketplaceOrder = await getRepository(MarketplaceOrder).findOne({\n where: {\n name: order.name\n },\n relations: ['marketplaceOrderItems', 'marketplaceOrderItems.marketplaceProductVariation']\n })\n const result = await StoreAPI.setStoreOrderStatusReadyToShip(marketplaceStore, {\n orderId: order.name,\n trackingUrl: note,\n trackingNo,\n order: orderInfo,\n note,\n transporter: marketplaceTransporter?.pickupTransporter.name\n })\n\n if (marketplaceStore.platform === 'woocommerce') {\n await StoreAPI.updateOrderStatus(marketplaceStore, {\n orderId: order.name,\n status: 'DELIVERED'\n })\n }\n }\n\n try {\n const updatedOrder = await StoreAPI.getStoreOrder(marketplaceStore, { orderId: order.name })\n\n order.status = updatedOrder.status\n order.orderUpdatedAt = updatedOrder.orderUpdatedAt\n order.trackingNo = updatedOrder.trackingNo\n order.shippingProvider = updatedOrder.shippingProvider\n await getRepository(MarketplaceOrder).save(order)\n\n for (let idx = 0; idx < order.marketplaceOrderItems.length; idx++) {\n let matchItem = updatedOrder.orderItems.find(\n i => i.variationId == order.marketplaceOrderItems[idx].marketplaceProductVariation.variationId\n )\n\n if (matchItem) {\n let targetMarketplaceOrderItem = {\n ...order.marketplaceOrderItems[idx],\n shippingProvider: matchItem.shippingProvider,\n trackingCode: matchItem.trackingNo,\n status: matchItem.status\n }\n\n await getRepository(MarketplaceOrderItem).save(targetMarketplaceOrderItem)\n }\n }\n } catch (e) {}\n\n const resp = {\n Status: 'SUCCESS',\n Code: 200,\n Message: 'Updated',\n OrderNo: order.orderNo,\n ExtOrderNo: extOrderNo,\n TrackingNo: trackingNo\n }\n context.type = 'application/json'\n context.body = JSON.stringify(resp)\n }\n})\n"]}
|
|
1
|
+
{"version":3,"file":"etrax-router.js","sourceRoot":"","sources":["../../server/routers/etrax-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\n\nimport { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'\nimport { FulfillmentAPI, FulfillmentCenter } from '@things-factory/integration-fulfillment'\nimport { Etrax, LastMileDelivery } from '@things-factory/integration-lmd'\nimport { MarketplaceStore, MarketplaceTransporter, StoreAPI } from '@things-factory/integration-marketplace'\nimport {\n MarketplaceOrder,\n MarketplaceOrderItem,\n MarketplaceOrderShipping,\n MarketplaceOrderShippingItem\n} from '@things-factory/marketplace-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nconst debug = require('debug')('things-factory:jest.config')\nexport const etraxRouter = new Router()\n\netraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {\n const repo = getRepository(LastMileDelivery)\n const requestBody = context.request.body\n debug('etrax_status_update/context: ', context)\n\n const bodyToken = requestBody.Token\n const bodyTimestamp = requestBody.TimeStamp\n const bodySourceID = requestBody.SourceID\n const extOrderNo = requestBody.ExtOrderNo\n const trackingNo = requestBody.TrackingNo\n const status = requestBody.Status\n const awbUrl = requestBody.AWBurl\n\n const customerCode = bodySourceID\n const lmd: LastMileDelivery = await repo.findOne({\n where: { clientName: customerCode, platform: 'eTrax' }\n })\n debug(lmd)\n\n const secretKey = lmd.secretKey\n\n if (customerCode === '' || secretKey === '') {\n //Cant find the correct record\n return\n }\n\n const etrax = new Etrax(customerCode)\n debug('RequestBody: ', requestBody)\n //Validate Token\n const validate = await etrax.validateToken(bodyToken, 'UPDATE_STATUS', bodyTimestamp)\n debug('IsAuthenticated: ', validate)\n\n if (!validate) {\n //Return unauthorized\n const resp = {\n Status: 'ERROR',\n Code: 302,\n Message: 'Validate failed',\n OrderNo: extOrderNo,\n ExtOrderNo: extOrderNo,\n TrackingNo: trackingNo\n }\n context.type = 'application/json'\n context.body = JSON.stringify(resp)\n return\n }\n\n //TAS - Transporter Assignment Success\n if (status === 'TAS') {\n //Update DB if Validate Success\n const orderRepo = getRepository(MarketplaceOrder)\n const orderShippingRepo = getRepository(MarketplaceOrderShipping)\n\n let order: MarketplaceOrder = await orderRepo.findOne({\n where: { orderNo: extOrderNo },\n relations: [\n 'domain',\n 'marketplaceStore',\n 'marketplaceOrderItems',\n 'marketplaceOrderItems.marketplaceOrderShippingItems',\n 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',\n 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping.fulfillmentCenter',\n 'marketplaceOrderItems.marketplaceProductVariation'\n ]\n })\n let orderItems: MarketplaceOrderItem[] = order.marketplaceOrderItems\n\n const marketplaceStore: MarketplaceStore = order.marketplaceStore\n\n const marketplaceTransporter: MarketplaceTransporter = await getRepository(MarketplaceTransporter).findOne({\n where: { marketplaceStore: { id: marketplaceStore.id } },\n relations: ['pickupTransporter']\n })\n\n for (const orderItem of orderItems) {\n if (orderItem.marketplaceOrderShippingItems[0].marketplaceOrderShipping !== null) {\n const orderShippingItems: MarketplaceOrderShippingItem[] = orderItem.marketplaceOrderShippingItems\n const orderShipping: MarketplaceOrderShipping = orderShippingItems[0].marketplaceOrderShipping\n const fulfillmentCenter: FulfillmentCenter = orderShipping?.fulfillmentCenter\n\n const centerId: string = fulfillmentCenter.centerId\n const warehouseDomain: Domain = await getRepository(Domain).findOne({ where: { subdomain: centerId } })\n const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)\n const customerBizplaceId: string = customerBizplaces.find(\n customerBizplace => customerBizplace.company.domain.id == order?.domain.id\n ).id\n\n let patch = {\n id: orderShipping.releaseOrderId,\n trackingNo: trackingNo,\n transporter: marketplaceTransporter?.pickupTransporter.name\n }\n\n FulfillmentAPI.updateReleaseGoodDetails(fulfillmentCenter, {\n customerBizplaceId,\n releaseOrder: { ...patch },\n shippingOrder: null\n })\n\n await orderShippingRepo.update({ id: orderShipping.id }, {\n trackingNo: trackingNo,\n airwayBill: awbUrl,\n updatedAt: new Date(),\n transporter: marketplaceTransporter?.pickupTransporter.name || orderShipping.transporter\n } as any)\n }\n }\n\n // to-do update tracking no to every marketplaces\n if (marketplaceStore.platform === 'woocommerce' || marketplaceStore.platform === 'shopify') {\n const note = 'http://ets.sntglobal.com/?mod=tracking&action=index&orders=' + trackingNo\n let orderInfo: MarketplaceOrder = await getRepository(MarketplaceOrder).findOne({\n where: {\n name: order.name\n },\n relations: ['marketplaceOrderItems', 'marketplaceOrderItems.marketplaceProductVariation']\n })\n const result = await StoreAPI.setStoreOrderStatusReadyToShip(marketplaceStore, {\n orderId: order.name,\n trackingUrl: note,\n trackingNo,\n order: orderInfo,\n note,\n transporter: marketplaceTransporter?.pickupTransporter.name\n })\n\n if (marketplaceStore.platform === 'woocommerce') {\n await StoreAPI.updateOrderStatus(marketplaceStore, {\n orderId: order.name,\n status: 'DELIVERED'\n })\n }\n }\n\n try {\n const updatedOrder = await StoreAPI.getStoreOrder(marketplaceStore, { orderId: order.name })\n\n order.status = updatedOrder.status\n order.orderUpdatedAt = updatedOrder.orderUpdatedAt\n order.trackingNo = updatedOrder.trackingNo\n order.shippingProvider = updatedOrder.shippingProvider\n await getRepository(MarketplaceOrder).save(order)\n\n for (let idx = 0; idx < order.marketplaceOrderItems.length; idx++) {\n let matchItem = updatedOrder.orderItems.find(\n i => i.variationId == order.marketplaceOrderItems[idx].marketplaceProductVariation.variationId\n )\n\n if (matchItem) {\n let targetMarketplaceOrderItem = {\n ...order.marketplaceOrderItems[idx],\n shippingProvider: matchItem.shippingProvider,\n trackingCode: matchItem.trackingNo,\n status: matchItem.status\n }\n\n await getRepository(MarketplaceOrderItem).save(targetMarketplaceOrderItem)\n }\n }\n } catch (e) {}\n\n const resp = {\n Status: 'SUCCESS',\n Code: 200,\n Message: 'Updated',\n OrderNo: order.orderNo,\n ExtOrderNo: extOrderNo,\n TrackingNo: trackingNo\n }\n context.type = 'application/json'\n context.body = JSON.stringify(resp)\n }\n})\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const shopifyPosPublicRouter: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify-pos-public-router.js","sourceRoot":"","sources":["../../server/routers/shopify-pos-public-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,uDAA4D;AAC5D,6CAA4C;AAC5C,qFAAmF;AACnF,uEAA8E;AAC9E,+DAAsD;AACtD,iDAA6D;AAC7D,mEAKuC;AAEvC,MAAM,aAAa,GAAG,YAAM,CAAC,GAAG,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAA;AACrE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,aAAa,CAAA;AAE9B,QAAA,sBAAsB,GAAG,IAAI,oBAAM,EAAE,CAAA;AAElD,8BAAsB,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACpF,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,CAAA;IAE9B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACvD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,IAAI,iCAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAExD,MAAM,gBAAgB,GAAqB,MAAM,IAAA,qBAAa,EAAC,0CAAgB,CAAC,CAAC,OAAO,CAAC;QACvF,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC1C,SAAS,EAAE,CAAC,QAAQ,CAAC;KACtB,CAAC,CAAA;IACF,IAAI,CAAC,gBAAgB,EAAE;
|
|
1
|
+
{"version":3,"file":"shopify-pos-public-router.js","sourceRoot":"","sources":["../../server/routers/shopify-pos-public-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\n\nimport { Bizplace, Company } from '@things-factory/biz-base'\nimport { config } from '@things-factory/env'\nimport { MarketplaceStore, Shopify } from '@things-factory/integration-marketplace'\nimport { MarketplaceProductVariation } from '@things-factory/marketplace-base'\nimport { Product } from '@things-factory/product-base'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport {\n generateInventoryHistory,\n Inventory,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE\n} from '@things-factory/warehouse-base'\n\nconst shopifyConfig = config.get('marketplaceIntegrationShopify', {})\nconst { apiKey, apiSecret } = shopifyConfig\n\nexport const shopifyPosPublicRouter = new Router()\n\nshopifyPosPublicRouter.post('/webhook-shopify/orders/create', async (context, next) => {\n const { request, t } = context\n\n const hmac = request.get('x-shopify-hmac-sha256')\n const shopDomain = request.get('x-shopify-shop-domain')\n const shop = shopDomain.replace('.myshopify.com', '')\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n\n const marketplaceStore: MarketplaceStore = await getRepository(MarketplaceStore).findOne({\n where: { storeId: shop, status: 'ACTIVE' },\n relations: ['domain']\n })\n if (!marketplaceStore) {\n context.status = 404\n context.body = t('error.unable to find store account')\n return\n }\n\n const webhookKey: string = marketplaceStore.webhookKey\n\n const verifyMerchant: boolean = shopify.verifyWebhook(request, hmac, webhookKey)\n if (!verifyMerchant) {\n context.status = 404\n context.body = t('error.unable to verify webhook origin')\n return\n }\n\n const data = request.body\n if (data.source_name === 'pos') {\n const domainCompany: Company = await getRepository(Company).findOne({\n where: { domain: { id: marketplaceStore.domain.id } }\n })\n\n const bizplaces: Bizplace[] = await getRepository(Bizplace).find({\n where: { company: { id: domainCompany.id } },\n relations: ['domain']\n })\n\n const warehouseDomains: Domain[] = bizplaces.map((bizplace: Bizplace) => bizplace.domain)\n\n const selectedWarehouseDomain: Domain[] = warehouseDomains.filter(\n domain => domain.description === 'default' && domain.extType === 'warehouse'\n )\n\n const refOrder: any = { id: data.id, name: data.order_number }\n\n const lineItems = data.line_items\n for (var i = 0; i < lineItems.length; i++) {\n const variationId: string = lineItems[i].variant_id\n var itemQty: number = lineItems[i].quantity\n var itemUomValue: number = 0\n\n const marketplaceProductVariation: MarketplaceProductVariation = await getRepository(\n MarketplaceProductVariation\n ).findOne({\n where: {\n variationId,\n domain: { id: marketplaceStore.domain.id }\n }\n })\n\n const warehouseProduct: Product = await getRepository(Product).findOne({\n where: {\n sku: marketplaceProductVariation.sku\n },\n relations: ['bizplace']\n })\n\n const inventories: Inventory[] = await getRepository(Inventory).find({\n where: {\n product: { id: warehouseProduct.id },\n domain: selectedWarehouseDomain[0],\n status: 'STORED'\n },\n relations: ['domain', 'bizplace', 'product', 'warehouse', 'location']\n })\n\n for (var j = 0; j < inventories.length; j++) {\n var inventory: Inventory = inventories[j]\n\n if (inventory.qty >= itemQty) {\n itemUomValue = (inventory.uomValue / inventory.qty) * itemQty\n inventory.qty -= itemQty\n inventory.uomValue -= itemUomValue\n\n await generateInventoryHistory(\n inventory,\n refOrder,\n INVENTORY_TRANSACTION_TYPE.SALES_ADJUSTMENT,\n -itemQty,\n -itemUomValue,\n null\n )\n\n if (inventory.qty === 0) {\n inventory.status = INVENTORY_STATUS.TERMINATED\n\n await generateInventoryHistory(inventory, refOrder, INVENTORY_STATUS.TERMINATED, 0, 0, null)\n }\n itemQty = 0\n } else {\n itemQty -= inventory.qty\n itemUomValue = (inventory.uomValue / inventory.qty) * itemQty\n inventory.qty -= itemQty\n inventory.uomValue -= itemUomValue\n\n await generateInventoryHistory(\n inventory,\n refOrder,\n INVENTORY_TRANSACTION_TYPE.SALES_ADJUSTMENT,\n -itemQty,\n -itemUomValue,\n null\n )\n\n if (inventory.qty === 0) {\n inventory.status = INVENTORY_STATUS.TERMINATED\n\n await generateInventoryHistory(inventory, refOrder, INVENTORY_STATUS.TERMINATED, 0, 0, null)\n }\n }\n\n if (itemQty == 0) {\n break\n }\n }\n }\n }\n\n context.status = 200\n})\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|