@things-factory/sales-base 5.0.13 → 5.0.15
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/service/arrival-notice/arrival-notice-mutation.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice.js.map +1 -1
- package/dist-server/service/claim/claim-mutation.js.map +1 -1
- package/dist-server/service/claim/claim-query.js.map +1 -1
- package/dist-server/service/claim/claim-types.js.map +1 -1
- package/dist-server/service/claim/claim.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail-mutation.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail-query.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail-types.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail.js.map +1 -1
- package/dist-server/service/claim-order/claim-order-mutation.js.map +1 -1
- package/dist-server/service/claim-order/claim-order-query.js.map +1 -1
- package/dist-server/service/claim-order/claim-order-types.js.map +1 -1
- package/dist-server/service/claim-order/claim-order.js.map +1 -1
- package/dist-server/service/collection-order/collection-order-mutation.js.map +1 -1
- package/dist-server/service/collection-order/collection-order-query.js.map +1 -1
- package/dist-server/service/collection-order/collection-order-types.js.map +1 -1
- package/dist-server/service/collection-order/collection-order.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-mutation.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-types.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note-query.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note-types.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check-mutation.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check-query.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check-types.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check.js.map +1 -1
- package/dist-server/service/invoice/invoice-mutation.js.map +1 -1
- package/dist-server/service/invoice/invoice-query.js.map +1 -1
- package/dist-server/service/invoice/invoice-types.js.map +1 -1
- package/dist-server/service/invoice/invoice.js.map +1 -1
- package/dist-server/service/invoice-product/invoice-product-mutation.js.map +1 -1
- package/dist-server/service/invoice-product/invoice-product-query.js.map +1 -1
- package/dist-server/service/invoice-product/invoice-product-types.js.map +1 -1
- package/dist-server/service/invoice-product/invoice-product.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-mutation.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-query.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-types.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet.js.map +1 -1
- package/dist-server/service/manifest/manifest-mutation.js.map +1 -1
- package/dist-server/service/manifest/manifest-query.js.map +1 -1
- package/dist-server/service/manifest/manifest-type.js.map +1 -1
- package/dist-server/service/manifest/manifest.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-mutation.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-query.js +12 -26
- package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
- package/dist-server/service/order-product/order-product-mutation.js.map +1 -1
- package/dist-server/service/order-product/order-product-query.js.map +1 -1
- package/dist-server/service/order-product/order-product-types.js.map +1 -1
- package/dist-server/service/order-product/order-product.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-mutation.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-query.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-types.js.map +1 -1
- package/dist-server/service/order-tote/order-tote.js.map +1 -1
- package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +1 -1
- package/dist-server/service/order-tote-item/order-tote-item-query.js.map +1 -1
- package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -1
- package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -1
- package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +1 -1
- package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +1 -1
- package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +1 -1
- package/dist-server/service/order-tote-seal/order-tote-seal.js.map +1 -1
- package/dist-server/service/order-vas/order-vas-mutation.js.map +1 -1
- package/dist-server/service/order-vas/order-vas-query.js.map +1 -1
- package/dist-server/service/order-vas/order-vas-types.js.map +1 -1
- package/dist-server/service/order-vas/order-vas.js +2 -1
- package/dist-server/service/order-vas/order-vas.js.map +1 -1
- package/dist-server/service/others/other-query.js.map +1 -1
- package/dist-server/service/others/other-types.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-mutation.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-query.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-types.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order.js.map +1 -1
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.js.map +1 -1
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-query.js.map +1 -1
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-types.js.map +1 -1
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge.js.map +1 -1
- package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/release-good/release-good-types.js.map +1 -1
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-query.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-types.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js.map +1 -1
- package/dist-server/service/return-order/return-order-mutation.js.map +1 -1
- package/dist-server/service/return-order/return-order-query.js.map +1 -1
- package/dist-server/service/return-order/return-order-types.js.map +1 -1
- package/dist-server/service/return-order/return-order.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-type.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-mutation.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-query.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-types.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-mutation.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-query.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-types.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order.js.map +1 -1
- package/dist-server/service/vas/vas-mutation.js.map +1 -1
- package/dist-server/service/vas/vas-query.js.map +1 -1
- package/dist-server/service/vas/vas-types.js.map +1 -1
- package/dist-server/service/vas/vas.js.map +1 -1
- package/dist-server/service/vas-order/vas-order-mutation.js.map +1 -1
- package/dist-server/service/vas-order/vas-order-query.js.map +1 -1
- package/dist-server/service/vas-order/vas-order-types.js.map +1 -1
- package/dist-server/service/vas-order/vas-order.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -13
- package/server/service/order-inventory/order-inventory-query.ts +13 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrival-notice-mutation.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-mutation.ts"],"names":[],"mappings":";;;;AACA,+FAA2D;AAC3D,+CAAsE;AACtE,qCAAqF;AAErF,qEAA+E;AAC/E,yDAAsD;AACtD,uDAOiC;AACjC,+DAAyD;AACzD,+DAA+D;AAC/D,+DAAsD;AACtD,+DAAsD;AAGtD,+CAOwB;AACxB,qEAAiE;AACjE,yCAA8C;AAC9C,uEAAiE;AACjE,2EAAsE;AACtE,sDAAiD;AACjD,wEAAkE;AAClE,kEAA6D;AAC7D,8EAAyF;AACzF,sDAAiD;AACjD,+DAA0D;AAC1D,iFAAgH;AAChH,oCAAgC;AAChC,yBAAuD;AACvD,qDAAgD;AAChD,iEAAkH;AAElH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,6CAA6C,CAAC,CAAA;AAG7E,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAIhC,KAAK,CAAC,mBAAmB,CAAc,IAAY,EAAS,OAAY;QACtE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,OAAO,MAAM,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC1D,CAAC;IAKD,KAAK,CAAC,qBAAqB,CAClB,OAAY,EAC6B,aAA+B,EACpB,KAAoB;QAE/E,MAAM,EAAE,EAAE,EAAE,GAA0B,OAAO,CAAC,KAAK,CAAA;QACnD,MAAM,oBAAoB,GAAkB,MAAM,6BAA6B,CAC7E,IAAI,EACJ,aAAa,EACb,KAAK,EACL,OAAO,EACP,EAAE,CACH,CAAA;QAED,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAKD,KAAK,CAAC,oBAAoB,CAAc,IAAY,EAAS,OAAY;QACvE,MAAM,EAAE,EAAE,EAAE,GAA0B,OAAO,CAAC,KAAK,CAAA;QACnD,MAAM,aAAa,GAAkB,MAAM,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAE1F,mCAAmC;QACnC,IAAI,aAAa,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE;gBACtF,SAAS,EAAE,CAAC,aAAa,CAAC;aAC3B,CAAC,CAAA;YAEF,uFAAuF;YACvF,IAAI,WAAW,CAAC,MAAM,KAAK,wBAAY,CAAC,eAAe,EAAE;gBACvD,MAAM,IAAA,0CAAkB,EAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;aACpD;SACF;QAED,OAAO,aAAa,CAAA;IACtB,CAAC;IAKD,KAAK,CAAC,oBAAoB,CAAc,IAAY,EAAS,OAAY;QACvE,MAAM,oBAAoB,GAAkB,MAAM,4BAA4B,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAEnG,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAKD,KAAK,CAAC,kBAAkB,CAAc,IAAY,EAAS,OAAY;QACrE,MAAM,EAAE,EAAE,EAAE,GAA0B,OAAO,CAAC,KAAK,CAAA;QAEnD,OAAO,MAAM,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;IAC5D,CAAC;IAKD,KAAK,CAAC,mBAAmB,CACV,IAAY,EACiB,KAAyB,EAC5D,OAAY;QAEnB,MAAM,EAAE,EAAE,EAAE,GAA0B,OAAO,CAAC,KAAK,CAAA;QAEnD,MAAM,aAAa,GAAkB,MAAM,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAE/F,IAAI,aAAa,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,WAAW,EAAE,GAAiC,MAAM,EAAE;iBAC3D,aAAa,CAAC,8BAAa,CAAC;iBAC5B,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE;gBACzB,SAAS,EAAE,CAAC,aAAa,CAAC;aAC3B,CAAC,CAAA;YAEJ,IAAI,WAAW,CAAC,MAAM,KAAK,wBAAY,CAAC,QAAQ,EAAE;gBAChD,MAAM,IAAA,yCAAiB,EAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aACrE;SACF;QAED,OAAO,aAAa,CAAA;IACtB,CAAC;IAKD,KAAK,CAAC,4BAA4B,CACzB,OAAY,EACL,KAAa,EAC6C,gBAAoC,EAE5G,qBAA2C;;QAE3C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,IAAI,aAAa,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC;YAC/E,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACtB,SAAS,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;SACzC,CAAC,CAAA;QAEF,aAAa,CAAC,MAAM,GAAG,wBAAY,CAAC,gBAAgB,CAAA;QACpD,aAAa,CAAC,OAAO,GAAG,IAAI,CAAA;QAC5B,aAAa,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEzE,KAAK,CAAC,wBAAwB,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAA;QACxD,IAAI,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,IAAG,CAAC;YAAE,MAAM,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAEnH,KAAK,CAAC,6BAA6B,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAA;QAClE,IAAI,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,MAAM,IAAG,CAAC;YAAE,MAAM,yBAAyB,CAAC,qBAAqB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAEvG,sBAAsB;QACtB,MAAM,KAAK,GAAU,MAAM,IAAA,yBAAc,EAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;QACtE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAErB,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAI,MAAA,OAAO,CAAC,MAAM,0CAAE,OAAO,CAAA,EAAE;YAC5C,MAAM,SAAS,GAAU,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnD,MAAM,GAAG,GAAG;gBACV,KAAK,EAAE,iCAAiC,aAAa,CAAC,IAAI,EAAE;gBAC5D,IAAI,EAAE,uDAAuD;gBAC7D,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;gBAC3B,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;aACtC,CAAA;YACD,MAAM,IAAA,+BAAgB,EAAC;gBACrB,SAAS;gBACT,OAAO,oBAAO,GAAG,CAAE;aACpB,CAAC,CAAA;SACH;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAKD,KAAK,CAAC,gBAAgB,CACb,OAAY,EAC6B,aAA+B,EACvB,IAAiB;QAEzE,MAAM,EAAE,EAAE,EAAE,GAA0B,OAAO,CAAC,KAAK,CAAA;QACnD,MAAM,UAAU,GAAkB,MAAM,6BAA6B,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAE7G,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;QAE/B,MAAM,YAAY,GAAkB,MAAM,4BAA4B,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAEpG,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;QAEnC,OAAO,YAAY,CAAA;IACrB,CAAC;IAKD,KAAK,CAAC,0BAA0B,CACvB,OAAY,EAC+B,aAAiC;QAEnF,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QACpC,IAAI,qBAAqB,GAAG,MAAM,EAAE;aACjC,aAAa,CAAC,8BAAa,CAAC;aAC5B,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QAE3D,IAAI,CAAC,qBAAqB,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;SACtD;QAED,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;QACrF,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAA;IAChF,CAAC;IAKD,KAAK,CAAC,0BAA0B,CACvB,OAAY,EACuD,iBAAqC,EAC5E,UAAkB;QAErD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,IAAI,uBAAuB,GAAa,EAAE,EACxC,sBAAsB,GAAa,EAAE,EACrC,YAAY,GAAU,EAAE,EACxB,sBAAsB,GAAoB,EAAE,CAAA;QAE9C,MAAM,aAAa,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAEpF,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAExD,0CAA0C;QAC1C,MAAM,uBAAuB,GAAuB,MAAM,IAAA,qCAAkC,EAC1F,iBAAiB,EACjB,UAAU,EACV,EAAE,CACH,CAAA;QAED,wCAAwC;QACxC,MAAM,YAAY,GAAY,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,OAAO,CAAC;YACpE,KAAK,EAAE;gBACL,MAAM;gBACN,IAAI,EAAE,oCAAwB,CAAC,eAAe;aAC/C;SACF,CAAC,CAAA;QAEF,kEAAkE;QAClE,IAAI,cAAc,GAA6B,qBAAqB,CAAC,uBAAuB,CAAC,CAAA;QAE7F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACrD,IAAI;gBACF,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;oBAChD,wBAAwB;oBACxB,MAAM,uBAAuB,GAAkB,MAAM,OAAO,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC;wBAChG,KAAK,EAAE;4BACL,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK;4BAC9B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM;4BAChC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM;4BAChC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO;4BAClC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO;4BAClC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW;4BAC1C,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa;4BAC9C,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;4BACtC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW;yBAC3C;qBACF,CAAC,CAAA;oBAEF,IAAI,uBAAuB,EAAE;wBAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAA;qBACnE;oBAED,0BAA0B;oBAC1B,MAAM,oBAAoB,GAAkB,MAAM,OAAO,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,iCACtF,cAAc,CAAC,CAAC,CAAC,KACpB,IAAI,EAAE,YAAY;4BAChB,CAAC,CAAC,MAAM,IAAA,yBAAU,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAsB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;4BACjF,CAAC,CAAC,qCAAgB,CAAC,aAAa,EAAE,EACpC,MAAM,EACN,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,wBAAY,CAAC,OAAO,EAC5B,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;oBAEF,0BAA0B;oBAC1B,IAAI,oBAAoB,GAAmB,MAAM,OAAO,CAAC,GAAG,CAC1D,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,EAAgB,EAAE,EAAE;wBAC7D,uCACK,EAAE,KACL,MAAM,EACN,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,qCAAgB,CAAC,YAAY,EAAE;4BACrC,wEAAwE;4BACxE,MAAM,EAAE,gCAAoB,CAAC,OAAO,EACpC,aAAa,EAAE,oBAAoB,EACnC,OAAO,EAAE,IAAI,IACd;oBACH,CAAC,CAAC,CACH,CAAA;oBACD,oBAAoB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBAE3F,wBAAwB;oBACxB,MAAM,IAAA,qCAAgB,EAAC,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAA;oBAEnE,iEAAiE;oBACjE,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAA;oBACrD,sBAAsB,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;gBACvE,CAAC,CAAC,CAAA;aACH;YAAC,OAAO,KAAK,EAAE;gBACd,kDAAkD;gBAClD,IAAI,iBAAiB,GAAuB,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;gBACnG,YAAY,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAA;aACxC;SACF;QAED,IAAI,uBAAuB,CAAC,MAAM,IAAI,sBAAsB,CAAC,MAAM,EAAE;YACnE,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;gBAChD,kDAAkD;gBAClD,MAAM,OAAO;qBACV,aAAa,CAAC,8BAAa,CAAC;qBAC5B,MAAM,CAAC,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,wBAAY,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;gBAEvG,iDAAiD;gBACjD,MAAM,OAAO;qBACV,aAAa,CAAC,4BAAY,CAAC;qBAC3B,MAAM,CAAC,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,gCAAoB,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;gBAE9G,sBAAsB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,CAAC;oBACvE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,uBAAuB,CAAC,EAAE;oBAC1C,SAAS,EAAE,CAAC,eAAe,EAAE,uBAAuB,EAAE,UAAU,CAAC;iBAClE,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;SACH;QAED,IAAI,YAAY,CAAC,MAAM,EAAE;YACvB,uFAAuF;YACvF,MAAM,IAAI,wBAAe,iCACpB,wBAAe,CAAC,WAAW,CAAC,kBAAkB,KACjD,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAC9C,CAAA;SACH;QAED,oDAAoD;QACpD,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IACpD,CAAC;CACF,CAAA;AAzTC;IAHC,IAAA,wBAAS,EAAC,+DAA+D,CAAC;IAC1E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;IACF,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IAAgB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;gEAI1D;AAKD;IAHC,IAAA,wBAAS,EAAC,+DAA+D,CAAC;IAC1E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,CAAC;IAEhC,mBAAA,IAAA,kBAAG,GAAE,CAAA;IACL,mBAAA,IAAA,kBAAG,EAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,uCAAgB,CAAC,CAAA;IAC9C,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,0BAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;qDADK,uCAAgB;;kEAahF;AAKD;IAHC,IAAA,wBAAS,EAAC,+DAA+D,CAAC;IAC1E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,CAAC;IACP,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IAAgB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;iEAiB3D;AAKD;IAHC,IAAA,wBAAS,EAAC,gEAAgE,CAAC;IAC3E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,CAAC;IACP,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IAAgB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;iEAI3D;AAKD;IAHC,IAAA,wBAAS,EAAC,gEAAgE,CAAC;IAC3E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,CAAC;IACT,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IAAgB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;+DAIzD;AAKD;IAHC,IAAA,wBAAS,EAAC,gEAAgE,CAAC;IAC3E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,CAAC;IAEhC,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IACX,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,yCAAkB,CAAC,CAAA;IACxC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;qDAD2C,yCAAkB;;gEAoBpE;AAKD;IAHC,IAAA,wBAAS,EAAC,gEAAgE,CAAC;IAC3E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;IAE1B,mBAAA,IAAA,kBAAG,GAAE,CAAA;IACL,mBAAA,IAAA,kBAAG,EAAC,OAAO,CAAC,CAAA;IACZ,mBAAA,IAAA,kBAAG,EAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,qCAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACtE,mBAAA,IAAA,kBAAG,EAAC,uBAAuB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,uCAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;;;yEAuC/E;AAKD;IAHC,IAAA,wBAAS,EAAC,+DAA+D,CAAC;IAC1E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,CAAC;IAEhC,mBAAA,IAAA,kBAAG,GAAE,CAAA;IACL,mBAAA,IAAA,kBAAG,EAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,uCAAgB,CAAC,CAAA;IAC9C,mBAAA,IAAA,kBAAG,EAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,0BAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;qDADQ,uCAAgB;;6DAahF;AAKD;IAHC,IAAA,wBAAS,EAAC,+DAA+D,CAAC;IAC1E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,CAAC;IAEhC,mBAAA,IAAA,kBAAG,GAAE,CAAA;IACL,mBAAA,IAAA,kBAAG,EAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,yCAAkB,CAAC,CAAA;;qDAAgB,yCAAkB;;uEAapF;AAKD;IAHC,IAAA,wBAAS,EAAC,+DAA+D,CAAC;IAC1E,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,wCAAiB,CAAC;IAEpC,mBAAA,IAAA,kBAAG,GAAE,CAAA;IACL,mBAAA,IAAA,kBAAG,EAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,uCAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACxE,mBAAA,IAAA,kBAAG,EAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;;;;uEA6HnC;AA5TU,qBAAqB;IADjC,IAAA,uBAAQ,EAAC,8BAAa,CAAC;GACX,qBAAqB,CA6TjC;AA7TY,sDAAqB;AA+T3B,KAAK,UAAU,mBAAmB,CACvC,EAAiB,EACjB,IAAY,EACZ,IAAU,EACV,MAAc;;IAEd,IAAI,kBAAkB,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC;QACpF,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QACvB,SAAS,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,CAAC;KAC/G,CAAC,CAAA;IAEF,IAAI,CAAC,kBAAkB;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IAE1E,MAAM,OAAO,GAAa,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAQ,CAAC,CAAC,OAAO,CAAC;QACjE,KAAK,EAAE;YACL,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;YACrC,kBAAkB,EAAE,kBAAkB,CAAC,IAAI;SAC5C;KACF,CAAC,CAAA;IAEF,IAAI,OAAO;QAAE,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAA;IAErG,MAAM,QAAQ,GAAmB,kBAAkB,CAAC,aAAa,CAAA;IACjE,MAAM,QAAQ,GAAe,kBAAkB,CAAC,SAAS,CAAA;IAEzD,2BAA2B;IAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAqB,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACtE,IAAI,UAAU,CAAC,MAAM,EAAE;QACrB,MAAM,EAAE,CAAC,aAAa,CAAC,4BAAY,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,UAAU,CAAC,EAAE,CAAC,CAAA;KACpE;IAED,uBAAuB;IACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACtD,IAAI,MAAM,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,MAAM,CAAC,EAAE,CAAC,CAAA;KAC5D;IAED,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,iCACrC,kBAAkB,KACrB,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,mDAAmD;IACnD,IAAI,kBAAkB,CAAC,YAAY,KAAI,MAAA,kBAAkB,CAAC,WAAW,0CAAE,EAAE,CAAA,EAAE;QACzE,IAAI,WAAW,GAAgB,kBAAkB,CAAC,WAAW,CAAA;QAC7D,WAAW,CAAC,aAAa,GAAG,IAAI,CAAA;QAChC,WAAW,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAEnE,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9D,MAAM,IAAA,yCAAiB,EAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;KAC5D;SAAM;QACL,gBAAgB;QAChB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;KAC/D;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAvDD,kDAuDC;AAEM,KAAK,UAAU,6BAA6B,CACjD,CAAM,EACN,aAAkB,EAClB,KAAmB,EACnB,OAAY,EACZ,EAAkB;IAElB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAmC,OAAO,CAAC,KAAK,CAAA;IACtE,IAAI,aAAa,GAAmB,aAAa,CAAC,aAAa,CAAA;IAC/D,IAAI,SAAS,GAAe,aAAa,CAAC,SAAS,CAAA;IACnD,IAAI,UAAoB,CAAA;IACxB,IAAI,OAAO,GAAW,EAAE,CAAA;IAExB,MAAM,WAAW,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,sBAAO,CAAC,KAAI,IAAA,uBAAa,EAAC,sBAAO,CAAC,CAAA;IAE7F,IAAI,aAAa,CAAC,QAAQ;QAAE,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAA;SAC1D,IAAI,aAAa,CAAC,kBAAkB,EAAE;QACzC,MAAM,kBAAkB,GAAe,MAAM,IAAA,gCAAqB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAChF,IAAI,sBAAsB,GAAa,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,aAAa,CAAC,kBAAkB,CAAC,CAAA;QAEjH,IAAI,CAAC,sBAAsB;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAE7F,UAAU,GAAG,aAAa,CAAC,kBAAkB,CAAA;KAC9C;SAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE;QAC1C,MAAM,kBAAkB,GAAe,MAAM,IAAA,gCAAqB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAChF,IAAI,sBAAsB,GAAa,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAA;QAEhH,IAAI,CAAC,sBAAsB;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAE7F,UAAU,GAAG,aAAa,CAAC,iBAAiB,CAAA;KAC7C;SAAM,IAAI,aAAa,CAAC,WAAW;QAAE,UAAU,GAAG,MAAM,IAAA,4BAAiB,EAAC,aAAa,CAAC,WAAW,CAAC,CAAA;;QAChG,UAAU,GAAG,MAAM,IAAA,wBAAa,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAEnD,IAAI,aAAa,CAAC,QAAQ,EAAE;QAC1B,MAAM,QAAQ,GAAiB,MAAM,EAAE;aACpC,aAAa,CAAC,uBAAY,CAAC;aAC3B,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAE3F,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAE9D,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAA;KAClC;IACD,+BAA+B;IAC/B,MAAM,YAAY,GAAY,MAAM,WAAW,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,MAAM;YACN,IAAI,EAAE,oCAAwB,CAAC,eAAe;SAC/C;KACF,CAAC,CAAA;IAEF,IAAI,YAAY,EAAE;QAChB,OAAO,GAAG,MAAM,IAAA,yBAAU,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAsB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;KAC1F;SAAM;QACL,OAAO,GAAG,qCAAgB,CAAC,aAAa,EAAE,CAAA;KAC3C;IAED,2BAA2B;IAC3B,MAAM,oBAAoB,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,iCACjF,aAAa,KAChB,IAAI,EAAE,OAAO,EACb,MAAM,EACN,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,EAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EACrE,MAAM,EAAE,wBAAY,CAAC,OAAO,EAC5B,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,mCAAmC;IACnC,MAAM,wBAAwB,CAC5B,MAAM,EACN,oBAAoB,EACpB,aAAa,CAAC,GAAG,CAAC,CAAC,EAAgB,EAAE,EAAE;QACrC,uCAAY,EAAE,KAAE,MAAM,EAAE,gCAAoB,CAAC,OAAO,IAAE;IACxD,CAAC,CAAC,EACF,IAAI,EACJ,EAAE,CACH,CAAA;IAED,MAAM,IAAA,qCAAgB,EAAC,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAA;IAE9D,+BAA+B;IAC/B,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,EAAE;QACrB,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAY,EAAE,EAAE;YACnC,IAAI,EAAE,CAAC,aAAa,EAAE;gBACpB,EAAE,CAAC,aAAa,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;aAChF;YAED,uCACK,EAAE,KACL,MAAM,EACN,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,qCAAgB,CAAC,QAAQ,EAAE,EACjC,GAAG,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,SAAG,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EACnE,IAAI,EAAE,uBAAW,CAAC,cAAc,EAChC,aAAa,EAAE,oBAAoB,EACnC,MAAM,EAAE,4BAAgB,CAAC,OAAO,EAChC,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACd;QACH,CAAC,CAAC,CACH,CAAA;QACD,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;KACjD;IAED,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;QACjB,MAAM,WAAW,GAAiB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACvD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,iCAAe,CAAC,GAAG;gBAC5B,KAAK,EAAE,oBAAoB,CAAC,EAAE;gBAC9B,QAAQ,EAAE,iCAAe,CAAC,GAAG,CAAC,sBAAsB;aACrD,CAAA;QACH,CAAC,CAAC,CAAA;QACF,MAAM,IAAA,mCAAiB,EAAC,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,CAAA;KACrD;IAED,OAAO,oBAAoB,CAAA;AAC7B,CAAC;AAvHD,sEAuHC;AAEM,KAAK,UAAU,4BAA4B,CAChD,IAAY,EACZ,OAAY,EACZ,EAAkB;;IAElB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAmC,OAAO,CAAC,KAAK,CAAA;IAEtE,MAAM,kBAAkB,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC;QACtF,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAY,CAAC,OAAO,EAAE;QACrD,SAAS,EAAE;YACT,UAAU;YACV,aAAa;YACb,eAAe;YACf,uBAAuB;YACvB,WAAW;YACX,eAAe;YACf,SAAS;YACT,SAAS;SACV;KACF,CAAC,CAAA;IAEF,IAAI,QAAQ,GAAmB,kBAAkB,CAAC,aAAa,CAAA;IAC/D,IAAI,QAAQ,GAAe,kBAAkB,CAAC,SAAS,CAAA;IACvD,IAAI,gBAAgB,GAAa,kBAAkB,CAAC,QAAQ,CAAA;IAE5D,IAAI,CAAC,kBAAkB;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IAE1E,oDAAoD;IACpD,MAAM,aAAa,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,iCAC1E,kBAAkB,KACrB,MAAM,EAAE,wBAAY,CAAC,eAAe,EACpC,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAgB,EAAE,EAAE;QAC3C,uCAAY,EAAE,KAAE,MAAM,EAAE,gCAAoB,CAAC,eAAe,IAAE;IAChE,CAAC,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,aAAa,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEnD,2CAA2C;IAC3C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC/B,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAY,EAAE,EAAE;YACvC,uCAAY,EAAE,KAAE,MAAM,EAAE,4BAAgB,CAAC,eAAe,IAAE;QAC5D,CAAC,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KAChD;IAED,sBAAsB;IACtB,yBAAyB;IACzB,IAAI,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,IAAI,KAAI,KAAK,EAAE;QACjC,MAAM,KAAK,GAAU,MAAM,EAAE;aAC1B,aAAa,CAAC,aAAa,CAAC;aAC5B,kBAAkB,CAAC,IAAI,CAAC;aACxB,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC;aAC3B,KAAK,CAAC,EAAE,CAAC,EAAE;YACV,MAAM,QAAQ,GAAG,EAAE;iBAChB,QAAQ,EAAE;iBACV,MAAM,CAAC,SAAS,CAAC;iBACjB,IAAI,CAAC,gBAAI,EAAE,MAAM,CAAC;iBAClB,KAAK,CAAC,4BAA4B,CAAC;iBACnC,QAAQ,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBAC3D,QAAQ,EAAE,CAAA;YACb,OAAO,iBAAiB,GAAG,QAAQ,CAAA;QACrC,CAAC,CAAC;aACD,UAAU,EAAE,CAAA;QAEf,0CAA0C;QAC1C,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAI,MAAA,OAAO,CAAC,MAAM,0CAAE,OAAO,CAAA,EAAE;YAC5C,MAAM,SAAS,GAAU,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnD,MAAM,GAAG,GAAG;gBACV,KAAK,EAAE,2BAA2B,gBAAgB,CAAC,IAAI,EAAE;gBACzD,IAAI,EAAE,uBAAuB,kBAAkB,CAAC,IAAI,2BAA2B;gBAC/E,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;gBAC3B,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;aACtC,CAAA;YAED,MAAM,IAAA,+BAAgB,EAAC;gBACrB,SAAS;gBACT,OAAO,oBAAO,GAAG,CAAE;aACpB,CAAC,CAAA;SACH;KACF;IAED,OAAO,aAAa,CAAA;AACtB,CAAC;AArFD,oEAqFC;AAEM,KAAK,UAAU,4BAA4B,CAAC,CAAM,EAAE,IAAY,EAAE,OAAY;;IACnF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;IAC7F,IAAI;QACF,MAAM,kBAAkB,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC;YACtF,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAY,CAAC,eAAe,EAAE;YAC7D,SAAS,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,CAAC;SAC1E,CAAC,CAAA;QAEF,IAAI,CAAC,kBAAkB;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAE1E,IAAI,QAAQ,GAAmB,kBAAkB,CAAC,aAAa,CAAA;QAC/D,IAAI,QAAQ,GAAe,kBAAkB,CAAC,SAAS,CAAA;QACvD,IAAI,QAAQ,GAAsB,MAAM,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAC,IAAI,CAAC;YAC7E,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,IAAI,EAAE;SAClD,CAAC,CAAA;QAEF,oEAAoE;QACpE,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAgB,EAAE,EAAE;YAC3C,uCACK,EAAE,KACL,MAAM,EAAE,gCAAoB,CAAC,SAAS,EACtC,OAAO,EAAE,IAAI,IACd;QACH,CAAC,CAAC,CAAA;QACF,MAAM,EAAE,CAAC,aAAa,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEnD,6EAA6E;QAC7E,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC/B,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAY,EAAE,EAAE;gBACvC,uCACK,EAAE,KACL,MAAM,EAAE,4BAAgB,CAAC,SAAS,EAClC,OAAO,EAAE,IAAI,IACd;YACH,CAAC,CAAC,CAAA;YACF,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAChD;QAED,2GAA2G;QAC3G,IAAI,QAAQ,EAAE;YACZ,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAmB,EAAE,EAAE;gBAC9C,uCACK,EAAE,KACL,MAAM,EAAE,wBAAY,CAAC,iBAAiB,EACtC,OAAO,EAAE,IAAI,IACd;YACH,CAAC,CAAC,CAAA;SACH;QAED,sBAAsB;QACtB,MAAM,KAAK,GAAU,MAAM,IAAA,yBAAc,EAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;QAE3E,sCAAsC;QACtC,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAI,MAAA,OAAO,CAAC,MAAM,0CAAE,OAAO,CAAA,EAAE;YAC5C,MAAM,SAAS,GAAU,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnD,MAAM,GAAG,GAAG;gBACV,KAAK,EAAE,qBAAqB,kBAAkB,CAAC,IAAI,EAAE;gBACrD,IAAI,EAAE,+CAA+C,MAAM,CAAC,IAAI,EAAE;gBAClE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;gBAC3B,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;aACtC,CAAA;YACD,MAAM,IAAA,+BAAgB,EAAC;gBACrB,SAAS;gBACT,OAAO,oBAAO,GAAG,CAAE;aACpB,CAAC,CAAA;SACH;QAED,oEAAoE;QACpE,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,iCACrC,kBAAkB,KACrB,MAAM,EAAE,wBAAY,CAAC,SAAS,EAC9B,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,IAAI,IAAI,EAAE,EACtB,OAAO,EAAE,IAAI,IACb,CAAA;QAEF,OAAO,kBAAkB,CAAA;KAC1B;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,CAAA;KACR;AACH,CAAC;AAhFD,oEAgFC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,IAAY,EACZ,OAAY,EACZ,EAAkB;;IAElB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAmC,OAAO,CAAC,KAAK,CAAA;IACtE,IAAI;QACF,MAAM,kBAAkB,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC;YACtF,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAY,CAAC,SAAS,EAAE;YACvD,SAAS,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,CAAC;SAC1E,CAAC,CAAA;QAEF,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAA;QAExC,IAAI,CAAC,kBAAkB;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAE1E,0DAA0D;QAC1D,MAAM,QAAQ,GAAsB,kBAAkB,CAAC,gBAAgB,CAAA;QACvE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAmB,EAAE,EAAE;gBACnC,IAAI,EAAE,CAAC,MAAM,KAAK,wBAAY,CAAC,IAAI,EAAE;oBACnC,MAAM,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC,IAAI,uBAAuB,CAAC,CAAA;iBACrE;YACH,CAAC,CAAC,CAAA;SACH;QAED,IAAI,QAAQ,GAAmB,kBAAkB,CAAC,aAAa,CAAA;QAC/D,IAAI,QAAQ,GAAe,kBAAkB,CAAC,SAAS,CAAA;QAEvD,4DAA4D;QAC5D,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAgB,EAAE,EAAE;YAC3C,uCACK,EAAE,KACL,MAAM,EAAE,gCAAoB,CAAC,OAAO,EACpC,OAAO,EAAE,IAAI,IACd;QACH,CAAC,CAAC,CAAA;QACF,MAAM,EAAE,CAAC,aAAa,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEnD,qEAAqE;QACrE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC/B,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAY,EAAE,EAAE;gBACvC,uCACK,EAAE,KACL,MAAM,EAAE,4BAAgB,CAAC,OAAO,EAChC,OAAO,EAAE,IAAI,IACd;YACH,CAAC,CAAC,CAAA;YACF,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAChD;QAED,4DAA4D;QAC5D,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,iCACrC,kBAAkB,KACrB,MAAM,EAAE,wBAAY,CAAC,OAAO,EAC5B,OAAO,EAAE,IAAI,IACb,CAAA;QAEF,sBAAsB;QACtB,MAAM,KAAK,GAAU,MAAM,IAAA,yBAAc,EAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;QAE3E,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAI,MAAA,OAAO,CAAC,MAAM,0CAAE,OAAO,CAAA,EAAE;YAC5C,MAAM,SAAS,GAAU,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnD,MAAM,GAAG,GAAG;gBACV,KAAK,EAAE,qBAAqB,kBAAkB,CAAC,IAAI,EAAE;gBACrD,IAAI,EAAE,oCAAoC,MAAM,CAAC,IAAI,EAAE;gBACvD,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;gBAC3B,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;aACtC,CAAA;YACD,MAAM,IAAA,+BAAgB,EAAC;gBACrB,SAAS;gBACT,OAAO,oBAAO,GAAG,CAAE;aACpB,CAAC,CAAA;SACH;QAED,OAAO,kBAAkB,CAAA;KAC1B;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,CAAA;KACR;AACH,CAAC;AA/ED,gEA+EC;AAEM,KAAK,UAAU,mBAAmB,CACvC,EAAiB,EACjB,IAAY,EACZ,MAAc,EACd,OAAY;;IAEZ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAmC,OAAO,CAAC,KAAK,CAAA;IAEtE,MAAM,kBAAkB,GAAkB,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC;QACtF,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAY,CAAC,eAAe,EAAE;QAC7D,SAAS,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,CAAC;KAC1E,CAAC,CAAA;IAEF,IAAI,CAAC,kBAAkB;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IAC1E,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAEpD,IAAI,QAAQ,GAAmB,kBAAkB,CAAC,aAAa,CAAA;IAC/D,IAAI,QAAQ,GAAe,kBAAkB,CAAC,SAAS,CAAA;IACvD,IAAI,QAAQ,GAAsB,kBAAkB,CAAC,gBAAgB,CAAA;IAErE,mEAAmE;IACnE,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAgB,EAAE,EAAE;QAC3C,EAAE,CAAC,MAAM,GAAG,gCAAoB,CAAC,QAAQ,CAAA;QACzC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAA;QACjB,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,aAAa,CAAC,4BAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEnD,4EAA4E;IAC5E,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC/B,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAY,EAAE,EAAE;YACvC,EAAE,CAAC,MAAM,GAAG,4BAAgB,CAAC,QAAQ,CAAA;YACrC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAA;YACjB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;QACF,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KAChD;IAED,kGAAkG;IAClG,IAAI,QAAQ,EAAE;QACZ,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAmB,EAAE,EAAE;YAC9C,EAAE,CAAC,MAAM,GAAG,wBAAY,CAAC,QAAQ,CAAA;YACjC,EAAE,CAAC,OAAO,GAAG,IAAI,CAAA;YACjB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;QACF,MAAM,EAAE,CAAC,aAAa,CAAC,kCAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KACvD;IAED,kBAAkB,CAAC,MAAM,GAAG,MAAM,CAAA;IAClC,kBAAkB,CAAC,MAAM,GAAG,wBAAY,CAAC,QAAQ,CAAA;IACjD,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAA;IACjC,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAE9D,sBAAsB;IACtB,MAAM,KAAK,GAAU,MAAM,IAAA,yBAAc,EAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IAE3E,sCAAsC;IACtC,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAI,MAAA,OAAO,CAAC,MAAM,0CAAE,OAAO,CAAA,EAAE;QAC5C,MAAM,SAAS,GAAU,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACnD,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,qBAAqB,kBAAkB,CAAC,IAAI,EAAE;YACrD,IAAI,EAAE,6BAA6B;YACnC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;YAC3B,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;SACtC,CAAA;QAED,MAAM,IAAA,+BAAgB,EAAC;YACrB,SAAS;YACT,OAAO,oBAAO,GAAG,CAAE;SACpB,CAAC,CAAA;KACH;IAED,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AAzED,kDAyEC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,MAAc,EACd,aAA4B,EAC5B,gBAAuB,EACvB,IAAU,EACV,EAAkB;;IAElB,MAAM,WAAW,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,sBAAO,CAAC,KAAI,IAAA,uBAAa,EAAC,sBAAO,CAAC,CAAA;IAC7F,MAAM,gBAAgB,GAA6B,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,4BAAY,CAAC,KAAI,IAAA,uBAAa,EAAC,4BAAY,CAAC,CAAA;IAEjH,IAAI,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,CAAA,IAAI,CAAC,CAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,MAAM,CAAA,EAAE;QACrE,aAAa,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,OAAO,CAAC;YAC5D,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE;YAC3C,SAAS,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;SACzC,CAAC,CAAA;KACH;IAED,MAAM,oBAAoB,GAAmB,MAAM,OAAO,CAAC,GAAG,CAC5D,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAgB,EAAE,EAAE;QAC9C,uCACK,EAAE,KACL,MAAM,EACN,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAChC,IAAI,EAAE,qCAAgB,CAAC,YAAY,EAAE,EACrC,OAAO,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACjD,aAAa,EACb,OAAO,EAAE,IAAI,IACd;IACH,CAAC,CAAC,CACH,CAAA;IAED,KAAK,CAAC,4BAA4B,EAAE,oBAAoB,CAAC,CAAA;IACzD,MAAM,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;AACnD,CAAC;AAjCD,4DAiCC;AAEM,KAAK,UAAU,yBAAyB,CAC7C,qBAA2D,EAC3D,IAAU,EACV,EAAkB;IAElB,MAAM,gBAAgB,GAA6B,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,4BAAY,CAAC,KAAI,IAAA,uBAAa,EAAC,4BAAY,CAAC,CAAA;IAEjH,MAAM,oBAAoB,GAAmB,MAAM,OAAO,CAAC,GAAG,CAC5D,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAgB,EAAE,EAAE;QACnD,uCACK,EAAE,KACL,MAAM,EAAE,gCAAoB,CAAC,MAAM,EACnC,OAAO,EAAE,IAAI,IACd;IACH,CAAC,CAAC,CACH,CAAA;IAED,KAAK,CAAC,4BAA4B,EAAE,oBAAoB,CAAC,CAAA;IACzD,MAAM,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;AACnD,CAAC;AAnBD,8DAmBC;AAED,SAAS,qBAAqB,CAAC,iBAAiB;IAC9C,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,GAAG,EAAE,EAAE;QACtD,4DAA4D;QAC5D,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,eAAe;YAAE,OAAM;QAElD,MAAM,GAAG,GAAW,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YAChD,wDAAwD;YACxD,MAAM,UAAU,GAAG;gBACjB,QAAQ;gBACR,QAAQ;gBACR,SAAS;gBACT,cAAc;gBACd,WAAW;gBACX,aAAa;gBACb,eAAe;gBACf,WAAW;gBACX,aAAa;aACd,CAAA;YAED,IAAI,CAAC,GAAQ,EAAE,EACb,CAAC,GAAQ,EAAE,CAAA;YAEb,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBACtB,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;oBACpB,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;oBACf,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;iBACf;YACH,CAAC,CAAC,CAAA;YAEF,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAChE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAEhE,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,GAAY,MAAM,CAAC,MAAM,CAAC,IAAI,sBAAO,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QAC1F,MAAM,YAAY,GAA0B;YAC1C,OAAO;YACP,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,eAAe,EAAE,GAAG,CAAC,eAAe;SACrC,CAAA;QAED,IAAI,GAAG,IAAI,CAAC,EAAE;YACZ,MAAM,eAAe,GAAW,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,SAAS,CACzE,EAAE,CAAC,EAAE,CACH,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;gBAClB,EAAE,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW;gBAClC,EAAE,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW;gBAClC,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,CAC7B,CAAA;YAED,IAAI,eAAe,IAAI,CAAC;gBAAE,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAA;;gBAC9F,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;SAC1D;aAAM;YACL,cAAc,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,aAAa,EAAE,CAAC,YAAY,CAAC;aAC9B,CAAC,CAAA;SACH;QAED,OAAO,cAAc,CAAA;IACvB,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;AAED,SAAS,qBAAqB,CAAC,aAAa,EAAE,QAAQ;IACpD,IAAI,iBAAiB,GAAG,EAAE,CAAA;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAClE,IAAI,gBAAgB,iDACf,aAAa,GACb,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,KACjC,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAC/C,QAAQ,GACT,CAAA;QAED,OAAO,gBAAgB,CAAC,aAAa,CAAA;QACrC,OAAO,gBAAgB,CAAC,OAAO,CAAA;QAE/B,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;KACzC;IACD,OAAO,iBAAiB,CAAA;AAC1B,CAAC","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, getConnection, getRepository, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport {\n Bizplace,\n ContactPoint,\n getDomainUsers,\n getMyBizplace,\n getOutletBizplace,\n getPermittedBizplaces\n} from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { sendNotification } from '@things-factory/notification'\nimport { Product } from '@things-factory/product-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\n\nimport {\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS\n} from '../../constants'\nimport { ATTACHMENT_TYPE } from '../../constants/attachment-type'\nimport { ValidationError } from '../../errors'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { CollectionOrder } from '../collection-order/collection-order'\nimport { JobSheet } from '../job-sheet/job-sheet'\nimport { generateJobSheet } from '../job-sheet/job-sheet-mutation'\nimport { OrderProduct } from '../order-product/order-product'\nimport { NewOrderProduct, OrderProductPatch } from '../order-product/order-product-types'\nimport { OrderVas } from '../order-vas/order-vas'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { confirmReleaseGood, deleteReleaseGood, rejectReleaseGood } from '../release-good/release-good-mutation'\nimport { Vas } from '../vas/vas'\nimport { validateBulkArrivalNoticesFunction } from './'\nimport { ArrivalNotice } from './arrival-notice'\nimport { ArrivalNoticeList, ArrivalNoticePatch, NewArrivalNotice, RawArrivalNotice } from './arrival-notice-types'\n\nconst debug = require('debug')('things-factory:operato-wms:addArrivalNotice')\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<Boolean> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n return await deleteArrivalNotice(tx, name, user, domain)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async generateArrivalNotice(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload[]\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const createdArrivalNotice: ArrivalNotice = await generateArrivalNoticeFunction(\n null,\n arrivalNotice,\n files,\n context,\n tx\n )\n\n return createdArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async confirmArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const arrivalNotice: ArrivalNotice = await confirmArrivalNoticeFunction(name, context, tx)\n\n // If current GAN has cross docking\n if (arrivalNotice.crossDocking) {\n const { releaseGood } = await tx.getRepository(ArrivalNotice).findOne(arrivalNotice.id, {\n relations: ['releaseGood']\n })\n\n // If status of related RO is not equal to PENDING_RECEIVE (i.e. Wasn't confirmed yet.)\n if (releaseGood.status !== ORDER_STATUS.PENDING_RECEIVE) {\n await confirmReleaseGood(releaseGood.name, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async receiveArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const receiveArrivalNotice: ArrivalNotice = await receiveArrivalNoticeFunction(null, name, context)\n\n return receiveArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async checkArrivedNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n\n return await checkArrivedNoticeFunction(name, context, tx)\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async rejectArrivalNotice(\n @Arg('name') name: string,\n @Arg('patch', type => ArrivalNoticePatch) patch: ArrivalNoticePatch,\n @Ctx() context: any\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n\n const arrivalNotice: ArrivalNotice = await rejectArrivalNotice(tx, name, patch.remark, context)\n\n if (arrivalNotice.crossDocking) {\n const { releaseGood }: { releaseGood: ReleaseGood } = await tx\n .getRepository(ArrivalNotice)\n .findOne(arrivalNotice.id, {\n relations: ['releaseGood']\n })\n\n if (releaseGood.status !== ORDER_STATUS.REJECTED) {\n await rejectReleaseGood(tx, releaseGood.name, patch.remark, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async addEditArrivalNoticeProducts(\n @Ctx() context: any,\n @Arg('ganNo') ganNo: string,\n @Arg('newOrderProducts', type => [NewOrderProduct], { nullable: true }) newOrderProducts?: NewOrderProduct[],\n @Arg('existingOrderProducts', type => [OrderProductPatch], { nullable: true })\n existingOrderProducts?: OrderProductPatch[]\n ): Promise<Boolean> {\n const { user, domain, tx }: { user: User; domain: Domain; tx: EntityManager } = context.state\n\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { name: ganNo },\n relations: ['bizplace', 'orderProducts']\n })\n\n arrivalNotice.status = ORDER_STATUS.PENDING_APPROVAL\n arrivalNotice.updater = user\n arrivalNotice = await tx.getRepository(ArrivalNotice).save(arrivalNotice)\n\n debug('gan-new-order-products', ganNo, newOrderProducts)\n if (newOrderProducts?.length > 0) await addArrivalNoticeProducts(domain, arrivalNotice, newOrderProducts, user, tx)\n\n debug('gan-existing-order-products', ganNo, existingOrderProducts)\n if (existingOrderProducts?.length > 0) await editArrivalNoticeProducts(existingOrderProducts, user, tx)\n\n // notification logics\n const users: any[] = await getDomainUsers(arrivalNotice?.bizplace, tx)\n debug('users', users)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Products are added/edited for ${arrivalNotice.name}`,\n body: `Warehouse need your review for changes to be approved`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async addArrivalNotice(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, arrivalNotice, file, context, tx)\n\n debug('createdGAN', createdGAN)\n\n const confirmedGAN: ArrivalNotice = await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n debug('confirmedGAN', confirmedGAN)\n\n return confirmedGAN\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async updateArrivalNoticeDetails(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => ArrivalNoticePatch) arrivalNotice: ArrivalNoticePatch\n ): Promise<ArrivalNotice> {\n const { domain, tx } = context.state\n let existingArrivalNotice = await tx\n .getRepository(ArrivalNotice)\n .findOne({ where: { name: arrivalNotice.name, domain } })\n\n if (!existingArrivalNotice) {\n throw new Error('Existing Arrival Notice not found.')\n }\n\n await tx.getRepository(ArrivalNotice).update(existingArrivalNotice.id, arrivalNotice)\n return await tx.getRepository(ArrivalNotice).findOne(existingArrivalNotice.id)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNoticeList)\n async bulkGenerateArrivalNotices(\n @Ctx() context: any,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<ArrivalNoticeList> {\n const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state\n let createdArrivalNoticeIds: string[] = [],\n createdOrderProductIds: string[] = [],\n errorsCaught: any[] = [],\n finalArrivalNoticeList: ArrivalNotice[] = []\n\n const foundBizplace: Bizplace = await tx.getRepository(Bizplace).findOne(bizplaceId)\n\n if (!foundBizplace) throw new Error('company not found')\n\n // to check whether the raw data are valid\n const validatedArrivalNotices: RawArrivalNotice[] = await validateBulkArrivalNoticesFunction(\n rawArrivalNotices,\n bizplaceId,\n tx\n )\n\n // check for custom GAN order no setting\n const ganNoSetting: Setting = await tx.getRepository(Setting).findOne({\n where: {\n domain,\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n // extract rawArrivalNotices data into normal ArrivalNotice format\n let arrivalNotices: Partial<ArrivalNotice[]> = extractArrivalNotices(validatedArrivalNotices)\n\n for (let i = 0, l = arrivalNotices.length; i < l; i++) {\n try {\n await getConnection().transaction(async childTx => {\n // check for duplication\n const duplicatedArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).findOne({\n where: {\n refNo: arrivalNotices[i].refNo,\n refNo2: arrivalNotices[i].refNo2,\n refNo3: arrivalNotices[i].refNo3,\n etaDate: arrivalNotices[i].etaDate,\n truckNo: arrivalNotices[i].truckNo,\n containerNo: arrivalNotices[i].containerNo,\n containerSize: arrivalNotices[i].containerSize,\n looseItem: arrivalNotices[i].looseItem,\n importCargo: arrivalNotices[i].importCargo\n }\n })\n\n if (duplicatedArrivalNotice) {\n throw new Error(`duplicated with ${duplicatedArrivalNotice.name}`)\n }\n\n // save new arrival notice\n const createdArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).save({\n ...arrivalNotices[i],\n name: ganNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n : OrderNoGenerator.arrivalNotice(),\n domain,\n bizplace: foundBizplace,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // save new order products\n let createdOrderProducts: OrderProduct[] = await Promise.all(\n arrivalNotices[i].orderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: foundBizplace,\n name: OrderNoGenerator.orderProduct(),\n // product: await childTx.getRepository(Product).findOne(op.product.id),\n status: ORDER_PRODUCT_STATUS.PENDING,\n arrivalNotice: createdArrivalNotice,\n creator: user\n }\n })\n )\n createdOrderProducts = await childTx.getRepository(OrderProduct).save(createdOrderProducts)\n\n // generate new jobsheet\n await generateJobSheet(domain, user, createdArrivalNotice, childTx)\n\n // push arrivalNotice and orderProducts IDs if successfully saved\n createdArrivalNoticeIds.push(createdArrivalNotice.id)\n createdOrderProductIds.push(...createdOrderProducts.map(op => op.id))\n })\n } catch (error) {\n // collect the arrivalNotice details and its error\n let rawArrivalNotices: RawArrivalNotice[] = formRawArrivalNotices(arrivalNotices[i], error.message)\n errorsCaught.push(...rawArrivalNotices)\n }\n }\n\n if (createdArrivalNoticeIds.length && createdOrderProductIds.length) {\n await getConnection().transaction(async childTx => {\n // update arrivalNotices status to PENDING_RECEIVE\n await childTx\n .getRepository(ArrivalNotice)\n .update({ id: In(createdArrivalNoticeIds) }, { status: ORDER_STATUS.PENDING_RECEIVE, updater: user })\n\n // update orderProducts status to PENDING_RECEIVE\n await childTx\n .getRepository(OrderProduct)\n .update({ id: In(createdOrderProductIds) }, { status: ORDER_PRODUCT_STATUS.PENDING_RECEIVE, updater: user })\n\n finalArrivalNoticeList = await childTx.getRepository(ArrivalNotice).find({\n where: { id: In(createdArrivalNoticeIds) },\n relations: ['orderProducts', 'orderProducts.product', 'bizplace']\n })\n })\n }\n\n if (errorsCaught.length) {\n // should return this error list in the grist so that user know which gan need to amend\n throw new ValidationError({\n ...ValidationError.ERROR_CODES.INVALID_DATA_FOUND,\n detail: { data: JSON.stringify(errorsCaught) }\n })\n }\n\n // return arrivalNotices with its orderProducts list\n return { items: finalArrivalNoticeList, total: 0 }\n }\n}\n\nexport async function deleteArrivalNotice(\n tx: EntityManager,\n name: string,\n user: User,\n domain: Domain\n): Promise<boolean> {\n let foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name },\n relations: ['bizplace', 'releaseGood', 'orderProducts', 'orderVass', 'collectionOrders', 'creator', 'updater']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n const foundJS: JobSheet = await tx.getRepository(JobSheet).findOne({\n where: {\n bizplace: foundArrivalNotice.bizplace,\n arrivalNoticeRefNo: foundArrivalNotice.name\n }\n })\n\n if (foundJS) await tx.getRepository(JobSheet).delete({ arrivalNoticeRefNo: foundArrivalNotice.name })\n\n const foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n const foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 1. delete order products\n const productIds = foundOPs.map((product: OrderProduct) => product.id)\n if (productIds.length) {\n await tx.getRepository(OrderProduct).delete({ id: In(productIds) })\n }\n\n // 2. delete order vass\n const vasIds = foundOVs.map((vas: OrderVas) => vas.id)\n if (vasIds.length) {\n await tx.getRepository(OrderVas).delete({ id: In(vasIds) })\n }\n\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n updater: user\n })\n\n // 4. Remove relation with RO if it's cross docking\n if (foundArrivalNotice.crossDocking && foundArrivalNotice.releaseGood?.id) {\n let releaseGood: ReleaseGood = foundArrivalNotice.releaseGood\n releaseGood.arrivalNotice = null\n releaseGood = await tx.getRepository(ReleaseGood).save(releaseGood)\n\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n await deleteReleaseGood(tx, releaseGood.name, user, domain)\n } else {\n // 5. delete GAN\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n }\n return true\n}\n\nexport async function generateArrivalNoticeFunction(\n _: any,\n arrivalNotice: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { domain, user }: { domain: Domain; user: User } = context.state\n let orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n let orderVass: OrderVas[] = arrivalNotice.orderVass\n let myBizplace: Bizplace\n let orderNo: string = ''\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (arrivalNotice.bizplace) myBizplace = arrivalNotice.bizplace\n else if (arrivalNotice.customerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.customerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.customerBizplaceId\n } else if (arrivalNotice.partnerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.partnerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.partnerBizplaceId\n } else if (arrivalNotice.warehouseId) myBizplace = await getOutletBizplace(arrivalNotice.warehouseId)\n else myBizplace = await getMyBizplace(domain, user)\n\n if (arrivalNotice.supplier) {\n const supplier: ContactPoint = await tx\n .getRepository(ContactPoint)\n .findOne({ where: { bizplace: arrivalNotice.supplier, domain }, relation: ['bizplace'] })\n\n if (!supplier) throw new Error('contact point does not exist')\n\n arrivalNotice.supplier = supplier\n }\n // find GAN number rule setting\n const ganNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain,\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n if (ganNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.arrivalNotice()\n }\n\n // 1. Create arrival notice\n const createdArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...arrivalNotice,\n name: orderNo,\n domain,\n bizplace: myBizplace,\n looseItem: arrivalNotice?.looseItem ? arrivalNotice.looseItem : false,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // 2. Create arrival notice product\n await addArrivalNoticeProducts(\n domain,\n createdArrivalNotice,\n orderProducts.map((op: OrderProduct) => {\n return { ...op, status: ORDER_PRODUCT_STATUS.PENDING }\n }),\n user,\n tx\n )\n\n await generateJobSheet(domain, user, createdArrivalNotice, tx)\n\n // 3. Create arrival notice vas\n if (orderVass?.length) {\n orderVass = await Promise.all(\n orderVass.map(async (ov: OrderVas) => {\n if (ov.targetProduct) {\n ov.targetProduct = await tx.getRepository(Product).findOne(ov.targetProduct.id)\n }\n\n return {\n ...ov,\n domain,\n bizplace: myBizplace,\n name: OrderNoGenerator.orderVas(),\n vas: await tx.getRepository(Vas).findOne({ domain, id: ov.vas.id }),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: createdArrivalNotice,\n status: ORDER_VAS_STATUS.PENDING,\n creator: user,\n updater: user\n }\n })\n )\n await tx.getRepository(OrderVas).save(orderVass)\n }\n\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.GAN,\n refBy: createdArrivalNotice.id,\n category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdArrivalNotice\n}\n\nexport async function confirmArrivalNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. GAN Status change (PENDING => PENDING_RECEIVE)\n const arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.PENDING_RECEIVE,\n updater: user\n })\n\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return { ...op, status: ORDER_PRODUCT_STATUS.PENDING_RECEIVE }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update order vas status if it exists.\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return { ...ov, status: ORDER_VAS_STATUS.PENDING_RECEIVE }\n })\n\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // notification logics\n // get Office Admin Users\n if (context?.state?.type != 'api') {\n const users: any[] = await tx\n .getRepository('users_roles')\n .createQueryBuilder('ur')\n .select('ur.users_id', 'id')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .select('role.id')\n .from(Role, 'role')\n .where(\"role.name = 'Office Admin'\")\n .andWhere('role.domain_id = :domain', { domain: domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n // send notification to Office Admin Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `New Arrival Notice from ${customerBizplace.name}`,\n body: `New incoming order, ${foundArrivalNotice.name} is pending for receiving`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n }\n\n return arrivalNotice\n}\n\nexport async function receiveArrivalNoticeFunction(_: any, name: String, context: any): Promise<ArrivalNotice> {\n const { user, domain, tx }: { user: User; domain: Domain; tx: EntityManager } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = await tx.getRepository(CollectionOrder).find({\n where: { domain, refNo: foundArrivalNotice.name }\n })\n\n // 1. Update status of order products (PENDING_RECEIVE => INTRANSIT)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.INTRANSIT,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => INTRANSIT)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.INTRANSIT,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => READY_TO_DISPATCH)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n return {\n ...co,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n updater: user\n }\n })\n }\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been received and processed by ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n // 4. Update status of arrival notice (PENDING_RECEIVE => INTRANSIT)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.INTRANSIT,\n acceptedBy: user,\n acceptedAt: new Date(),\n updater: user\n })\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function checkArrivedNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.INTRANSIT },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n debug('ganNo', name, foundArrivalNotice)\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Check wheter related collection order is done or not\n const foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n if (foundCOs && foundCOs.length) {\n foundCOs.map((co: CollectionOrder) => {\n if (co.status !== ORDER_STATUS.DONE) {\n throw new Error(`Collection Order: ${co.name} is not finished yet.`)\n }\n })\n }\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 2. Update status of order products (INTRANSIT => ARRIVED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 3. Update status of order vass if it exists (INTRANSIT => ARRIVED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 4. Update status of arrival notice (INTRANSIT => ARRIVED)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.ARRIVED,\n updater: user\n })\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your goods has safely arrived at ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function rejectArrivalNotice(\n tx: EntityManager,\n name: string,\n remark: string,\n context: any\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'orderProducts', 'orderVass', 'collectionOrders']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n if (!remark) throw new Error('Remark is not exist.')\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n\n // 1. Update status of order products (PENDING_RECEIVE => REJECTED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n op.status = ORDER_PRODUCT_STATUS.REJECTED\n op.updater = user\n return op\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => REJECTED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n ov.status = ORDER_VAS_STATUS.REJECTED\n ov.updater = user\n return ov\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => REJECTED)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n co.status = ORDER_STATUS.REJECTED\n co.updater = user\n return co\n })\n await tx.getRepository(CollectionOrder).save(foundCOs)\n }\n\n foundArrivalNotice.remark = remark\n foundArrivalNotice.status = ORDER_STATUS.REJECTED\n foundArrivalNotice.updater = user\n await tx.getRepository(ArrivalNotice).save(foundArrivalNotice)\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been rejected.`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return foundArrivalNotice\n}\n\nexport async function addArrivalNoticeProducts(\n domain: Domain,\n arrivalNotice: ArrivalNotice,\n newOrderProducts: any[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n if (!arrivalNotice?.bizplace || !arrivalNotice?.orderProducts?.length) {\n arrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name: arrivalNotice.name },\n relations: ['bizplace', 'orderProducts']\n })\n }\n\n const createdOrderProducts: OrderProduct[] = await Promise.all(\n newOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: arrivalNotice.bizplace,\n name: OrderNoGenerator.orderProduct(),\n product: await productRepo.findOne(op.product.id),\n arrivalNotice,\n creator: user\n }\n })\n )\n\n debug('gan-created-order-products', createdOrderProducts)\n await orderProductRepo.save(createdOrderProducts)\n}\n\nexport async function editArrivalNoticeProducts(\n existingOrderProducts: (OrderProduct | OrderProductPatch)[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n const updatedOrderProducts: OrderProduct[] = await Promise.all(\n existingOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.EDITED,\n updater: user\n }\n })\n )\n\n debug('gan-updated-order-products', updatedOrderProducts)\n await orderProductRepo.save(updatedOrderProducts)\n}\n\nfunction extractArrivalNotices(rawArrivalNotices): Partial<ArrivalNotice[]> {\n return rawArrivalNotices.reduce((arrivalNotices, raw) => {\n // discard the item that has no productId or productDetailId\n if (!raw.productId || !raw.productDetailId) return\n\n const idx: number = arrivalNotices.findIndex(an => {\n // consider these attributes if they are exist in \"item\"\n const comparison = [\n 'refNo2',\n 'refNo3',\n 'truckNo',\n 'ownTransport',\n 'container',\n 'containerNo',\n 'containerSize',\n 'looseItem',\n 'importCargo'\n ]\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc] !== null) {\n a[cc] = raw[cc]\n b[cc] = an[cc]\n }\n })\n\n a = JSON.stringify(Object.fromEntries(Object.entries(a).sort()))\n b = JSON.stringify(Object.fromEntries(Object.entries(b).sort()))\n\n return an.refNo == raw.refNo && an.etaDate == raw.etaDate && a === b\n })\n\n const product: Product = Object.assign(new Product(), { id: raw.productId, sku: raw.sku })\n const orderProduct: Partial<OrderProduct> = {\n product,\n batchId: raw.batchId,\n batchIdRef: raw.batchIdRef,\n packingType: raw.packingType,\n packingSize: raw.packingSize,\n packQty: raw.packQty,\n uomValue: raw.uomValue,\n uom: raw.uom,\n totalUomValue: raw.totalUomValue,\n palletQty: raw.palletQty,\n unitPrice: raw.unitPrice,\n manufactureDate: raw.manufactureDate\n }\n\n if (idx >= 0) {\n const duplicateSkuIdx: number = arrivalNotices[idx].orderProducts.findIndex(\n op =>\n op.sku === raw.sku &&\n op.packingType === raw.packingType &&\n op.packingSize === raw.packingSize &&\n op.batchId === raw.batchId\n )\n\n if (duplicateSkuIdx >= 0) arrivalNotices[idx].orderProducts[duplicateSkuIdx].packQty += raw.packQty\n else arrivalNotices[idx].orderProducts.push(orderProduct)\n } else {\n arrivalNotices.push({\n refNo: raw.refNo,\n refNo2: raw.refNo2,\n refNo3: raw.refNo3,\n etaDate: raw.etaDate,\n truckNo: raw.truckNo,\n ownTransport: raw.ownTransport,\n container: raw.container,\n containerNo: raw.containerNo,\n containerSize: raw.containerSize,\n importCargo: raw.importCargo,\n looseItem: raw.looseItem,\n orderProducts: [orderProduct]\n })\n }\n\n return arrivalNotices\n }, [])\n}\n\nfunction formRawArrivalNotices(arrivalNotice, errorMsg) {\n let rawArrivalNotices = []\n for (let i = 0, l = arrivalNotice.orderProducts.length; i < l; i++) {\n let rawArrivalNotice = {\n ...arrivalNotice,\n ...arrivalNotice.orderProducts[i],\n sku: arrivalNotice.orderProducts[i].product.sku,\n errorMsg\n }\n\n delete rawArrivalNotice.orderProducts\n delete rawArrivalNotice.product\n\n rawArrivalNotices.push(rawArrivalNotice)\n }\n return rawArrivalNotices\n}\n"]}
|
|
1
|
+
{"version":3,"file":"arrival-notice-mutation.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, getConnection, getRepository, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport {\n Bizplace,\n ContactPoint,\n getDomainUsers,\n getMyBizplace,\n getOutletBizplace,\n getPermittedBizplaces\n} from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { sendNotification } from '@things-factory/notification'\nimport { Product } from '@things-factory/product-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\n\nimport {\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS\n} from '../../constants'\nimport { ATTACHMENT_TYPE } from '../../constants/attachment-type'\nimport { ValidationError } from '../../errors'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { CollectionOrder } from '../collection-order/collection-order'\nimport { JobSheet } from '../job-sheet/job-sheet'\nimport { generateJobSheet } from '../job-sheet/job-sheet-mutation'\nimport { OrderProduct } from '../order-product/order-product'\nimport { NewOrderProduct, OrderProductPatch } from '../order-product/order-product-types'\nimport { OrderVas } from '../order-vas/order-vas'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { confirmReleaseGood, deleteReleaseGood, rejectReleaseGood } from '../release-good/release-good-mutation'\nimport { Vas } from '../vas/vas'\nimport { validateBulkArrivalNoticesFunction } from './'\nimport { ArrivalNotice } from './arrival-notice'\nimport { ArrivalNoticeList, ArrivalNoticePatch, NewArrivalNotice, RawArrivalNotice } from './arrival-notice-types'\n\nconst debug = require('debug')('things-factory:operato-wms:addArrivalNotice')\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<Boolean> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n return await deleteArrivalNotice(tx, name, user, domain)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async generateArrivalNotice(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload[]\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const createdArrivalNotice: ArrivalNotice = await generateArrivalNoticeFunction(\n null,\n arrivalNotice,\n files,\n context,\n tx\n )\n\n return createdArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async confirmArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const arrivalNotice: ArrivalNotice = await confirmArrivalNoticeFunction(name, context, tx)\n\n // If current GAN has cross docking\n if (arrivalNotice.crossDocking) {\n const { releaseGood } = await tx.getRepository(ArrivalNotice).findOne(arrivalNotice.id, {\n relations: ['releaseGood']\n })\n\n // If status of related RO is not equal to PENDING_RECEIVE (i.e. Wasn't confirmed yet.)\n if (releaseGood.status !== ORDER_STATUS.PENDING_RECEIVE) {\n await confirmReleaseGood(releaseGood.name, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async receiveArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const receiveArrivalNotice: ArrivalNotice = await receiveArrivalNoticeFunction(null, name, context)\n\n return receiveArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async checkArrivedNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n\n return await checkArrivedNoticeFunction(name, context, tx)\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async rejectArrivalNotice(\n @Arg('name') name: string,\n @Arg('patch', type => ArrivalNoticePatch) patch: ArrivalNoticePatch,\n @Ctx() context: any\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n\n const arrivalNotice: ArrivalNotice = await rejectArrivalNotice(tx, name, patch.remark, context)\n\n if (arrivalNotice.crossDocking) {\n const { releaseGood }: { releaseGood: ReleaseGood } = await tx\n .getRepository(ArrivalNotice)\n .findOne(arrivalNotice.id, {\n relations: ['releaseGood']\n })\n\n if (releaseGood.status !== ORDER_STATUS.REJECTED) {\n await rejectReleaseGood(tx, releaseGood.name, patch.remark, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async addEditArrivalNoticeProducts(\n @Ctx() context: any,\n @Arg('ganNo') ganNo: string,\n @Arg('newOrderProducts', type => [NewOrderProduct], { nullable: true }) newOrderProducts?: NewOrderProduct[],\n @Arg('existingOrderProducts', type => [OrderProductPatch], { nullable: true })\n existingOrderProducts?: OrderProductPatch[]\n ): Promise<Boolean> {\n const { user, domain, tx }: { user: User; domain: Domain; tx: EntityManager } = context.state\n\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { name: ganNo },\n relations: ['bizplace', 'orderProducts']\n })\n\n arrivalNotice.status = ORDER_STATUS.PENDING_APPROVAL\n arrivalNotice.updater = user\n arrivalNotice = await tx.getRepository(ArrivalNotice).save(arrivalNotice)\n\n debug('gan-new-order-products', ganNo, newOrderProducts)\n if (newOrderProducts?.length > 0) await addArrivalNoticeProducts(domain, arrivalNotice, newOrderProducts, user, tx)\n\n debug('gan-existing-order-products', ganNo, existingOrderProducts)\n if (existingOrderProducts?.length > 0) await editArrivalNoticeProducts(existingOrderProducts, user, tx)\n\n // notification logics\n const users: any[] = await getDomainUsers(arrivalNotice?.bizplace, tx)\n debug('users', users)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Products are added/edited for ${arrivalNotice.name}`,\n body: `Warehouse need your review for changes to be approved`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async addArrivalNotice(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, arrivalNotice, file, context, tx)\n\n debug('createdGAN', createdGAN)\n\n const confirmedGAN: ArrivalNotice = await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n debug('confirmedGAN', confirmedGAN)\n\n return confirmedGAN\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async updateArrivalNoticeDetails(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => ArrivalNoticePatch) arrivalNotice: ArrivalNoticePatch\n ): Promise<ArrivalNotice> {\n const { domain, tx } = context.state\n let existingArrivalNotice = await tx\n .getRepository(ArrivalNotice)\n .findOne({ where: { name: arrivalNotice.name, domain } })\n\n if (!existingArrivalNotice) {\n throw new Error('Existing Arrival Notice not found.')\n }\n\n await tx.getRepository(ArrivalNotice).update(existingArrivalNotice.id, arrivalNotice)\n return await tx.getRepository(ArrivalNotice).findOne(existingArrivalNotice.id)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNoticeList)\n async bulkGenerateArrivalNotices(\n @Ctx() context: any,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<ArrivalNoticeList> {\n const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state\n let createdArrivalNoticeIds: string[] = [],\n createdOrderProductIds: string[] = [],\n errorsCaught: any[] = [],\n finalArrivalNoticeList: ArrivalNotice[] = []\n\n const foundBizplace: Bizplace = await tx.getRepository(Bizplace).findOne(bizplaceId)\n\n if (!foundBizplace) throw new Error('company not found')\n\n // to check whether the raw data are valid\n const validatedArrivalNotices: RawArrivalNotice[] = await validateBulkArrivalNoticesFunction(\n rawArrivalNotices,\n bizplaceId,\n tx\n )\n\n // check for custom GAN order no setting\n const ganNoSetting: Setting = await tx.getRepository(Setting).findOne({\n where: {\n domain,\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n // extract rawArrivalNotices data into normal ArrivalNotice format\n let arrivalNotices: Partial<ArrivalNotice[]> = extractArrivalNotices(validatedArrivalNotices)\n\n for (let i = 0, l = arrivalNotices.length; i < l; i++) {\n try {\n await getConnection().transaction(async childTx => {\n // check for duplication\n const duplicatedArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).findOne({\n where: {\n refNo: arrivalNotices[i].refNo,\n refNo2: arrivalNotices[i].refNo2,\n refNo3: arrivalNotices[i].refNo3,\n etaDate: arrivalNotices[i].etaDate,\n truckNo: arrivalNotices[i].truckNo,\n containerNo: arrivalNotices[i].containerNo,\n containerSize: arrivalNotices[i].containerSize,\n looseItem: arrivalNotices[i].looseItem,\n importCargo: arrivalNotices[i].importCargo\n }\n })\n\n if (duplicatedArrivalNotice) {\n throw new Error(`duplicated with ${duplicatedArrivalNotice.name}`)\n }\n\n // save new arrival notice\n const createdArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).save({\n ...arrivalNotices[i],\n name: ganNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n : OrderNoGenerator.arrivalNotice(),\n domain,\n bizplace: foundBizplace,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // save new order products\n let createdOrderProducts: OrderProduct[] = await Promise.all(\n arrivalNotices[i].orderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: foundBizplace,\n name: OrderNoGenerator.orderProduct(),\n // product: await childTx.getRepository(Product).findOne(op.product.id),\n status: ORDER_PRODUCT_STATUS.PENDING,\n arrivalNotice: createdArrivalNotice,\n creator: user\n }\n })\n )\n createdOrderProducts = await childTx.getRepository(OrderProduct).save(createdOrderProducts)\n\n // generate new jobsheet\n await generateJobSheet(domain, user, createdArrivalNotice, childTx)\n\n // push arrivalNotice and orderProducts IDs if successfully saved\n createdArrivalNoticeIds.push(createdArrivalNotice.id)\n createdOrderProductIds.push(...createdOrderProducts.map(op => op.id))\n })\n } catch (error) {\n // collect the arrivalNotice details and its error\n let rawArrivalNotices: RawArrivalNotice[] = formRawArrivalNotices(arrivalNotices[i], error.message)\n errorsCaught.push(...rawArrivalNotices)\n }\n }\n\n if (createdArrivalNoticeIds.length && createdOrderProductIds.length) {\n await getConnection().transaction(async childTx => {\n // update arrivalNotices status to PENDING_RECEIVE\n await childTx\n .getRepository(ArrivalNotice)\n .update({ id: In(createdArrivalNoticeIds) }, { status: ORDER_STATUS.PENDING_RECEIVE, updater: user })\n\n // update orderProducts status to PENDING_RECEIVE\n await childTx\n .getRepository(OrderProduct)\n .update({ id: In(createdOrderProductIds) }, { status: ORDER_PRODUCT_STATUS.PENDING_RECEIVE, updater: user })\n\n finalArrivalNoticeList = await childTx.getRepository(ArrivalNotice).find({\n where: { id: In(createdArrivalNoticeIds) },\n relations: ['orderProducts', 'orderProducts.product', 'bizplace']\n })\n })\n }\n\n if (errorsCaught.length) {\n // should return this error list in the grist so that user know which gan need to amend\n throw new ValidationError({\n ...ValidationError.ERROR_CODES.INVALID_DATA_FOUND,\n detail: { data: JSON.stringify(errorsCaught) }\n })\n }\n\n // return arrivalNotices with its orderProducts list\n return { items: finalArrivalNoticeList, total: 0 }\n }\n}\n\nexport async function deleteArrivalNotice(\n tx: EntityManager,\n name: string,\n user: User,\n domain: Domain\n): Promise<boolean> {\n let foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name },\n relations: ['bizplace', 'releaseGood', 'orderProducts', 'orderVass', 'collectionOrders', 'creator', 'updater']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n const foundJS: JobSheet = await tx.getRepository(JobSheet).findOne({\n where: {\n bizplace: foundArrivalNotice.bizplace,\n arrivalNoticeRefNo: foundArrivalNotice.name\n }\n })\n\n if (foundJS) await tx.getRepository(JobSheet).delete({ arrivalNoticeRefNo: foundArrivalNotice.name })\n\n const foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n const foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 1. delete order products\n const productIds = foundOPs.map((product: OrderProduct) => product.id)\n if (productIds.length) {\n await tx.getRepository(OrderProduct).delete({ id: In(productIds) })\n }\n\n // 2. delete order vass\n const vasIds = foundOVs.map((vas: OrderVas) => vas.id)\n if (vasIds.length) {\n await tx.getRepository(OrderVas).delete({ id: In(vasIds) })\n }\n\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n updater: user\n })\n\n // 4. Remove relation with RO if it's cross docking\n if (foundArrivalNotice.crossDocking && foundArrivalNotice.releaseGood?.id) {\n let releaseGood: ReleaseGood = foundArrivalNotice.releaseGood\n releaseGood.arrivalNotice = null\n releaseGood = await tx.getRepository(ReleaseGood).save(releaseGood)\n\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n await deleteReleaseGood(tx, releaseGood.name, user, domain)\n } else {\n // 5. delete GAN\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n }\n return true\n}\n\nexport async function generateArrivalNoticeFunction(\n _: any,\n arrivalNotice: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { domain, user }: { domain: Domain; user: User } = context.state\n let orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n let orderVass: OrderVas[] = arrivalNotice.orderVass\n let myBizplace: Bizplace\n let orderNo: string = ''\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (arrivalNotice.bizplace) myBizplace = arrivalNotice.bizplace\n else if (arrivalNotice.customerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.customerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.customerBizplaceId\n } else if (arrivalNotice.partnerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.partnerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.partnerBizplaceId\n } else if (arrivalNotice.warehouseId) myBizplace = await getOutletBizplace(arrivalNotice.warehouseId)\n else myBizplace = await getMyBizplace(domain, user)\n\n if (arrivalNotice.supplier) {\n const supplier: ContactPoint = await tx\n .getRepository(ContactPoint)\n .findOne({ where: { bizplace: arrivalNotice.supplier, domain }, relation: ['bizplace'] })\n\n if (!supplier) throw new Error('contact point does not exist')\n\n arrivalNotice.supplier = supplier\n }\n // find GAN number rule setting\n const ganNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain,\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n if (ganNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.arrivalNotice()\n }\n\n // 1. Create arrival notice\n const createdArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...arrivalNotice,\n name: orderNo,\n domain,\n bizplace: myBizplace,\n looseItem: arrivalNotice?.looseItem ? arrivalNotice.looseItem : false,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // 2. Create arrival notice product\n await addArrivalNoticeProducts(\n domain,\n createdArrivalNotice,\n orderProducts.map((op: OrderProduct) => {\n return { ...op, status: ORDER_PRODUCT_STATUS.PENDING }\n }),\n user,\n tx\n )\n\n await generateJobSheet(domain, user, createdArrivalNotice, tx)\n\n // 3. Create arrival notice vas\n if (orderVass?.length) {\n orderVass = await Promise.all(\n orderVass.map(async (ov: OrderVas) => {\n if (ov.targetProduct) {\n ov.targetProduct = await tx.getRepository(Product).findOne(ov.targetProduct.id)\n }\n\n return {\n ...ov,\n domain,\n bizplace: myBizplace,\n name: OrderNoGenerator.orderVas(),\n vas: await tx.getRepository(Vas).findOne({ domain, id: ov.vas.id }),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: createdArrivalNotice,\n status: ORDER_VAS_STATUS.PENDING,\n creator: user,\n updater: user\n }\n })\n )\n await tx.getRepository(OrderVas).save(orderVass)\n }\n\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.GAN,\n refBy: createdArrivalNotice.id,\n category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdArrivalNotice\n}\n\nexport async function confirmArrivalNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. GAN Status change (PENDING => PENDING_RECEIVE)\n const arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.PENDING_RECEIVE,\n updater: user\n })\n\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return { ...op, status: ORDER_PRODUCT_STATUS.PENDING_RECEIVE }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update order vas status if it exists.\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return { ...ov, status: ORDER_VAS_STATUS.PENDING_RECEIVE }\n })\n\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // notification logics\n // get Office Admin Users\n if (context?.state?.type != 'api') {\n const users: any[] = await tx\n .getRepository('users_roles')\n .createQueryBuilder('ur')\n .select('ur.users_id', 'id')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .select('role.id')\n .from(Role, 'role')\n .where(\"role.name = 'Office Admin'\")\n .andWhere('role.domain_id = :domain', { domain: domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n // send notification to Office Admin Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `New Arrival Notice from ${customerBizplace.name}`,\n body: `New incoming order, ${foundArrivalNotice.name} is pending for receiving`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n }\n\n return arrivalNotice\n}\n\nexport async function receiveArrivalNoticeFunction(_: any, name: String, context: any): Promise<ArrivalNotice> {\n const { user, domain, tx }: { user: User; domain: Domain; tx: EntityManager } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = await tx.getRepository(CollectionOrder).find({\n where: { domain, refNo: foundArrivalNotice.name }\n })\n\n // 1. Update status of order products (PENDING_RECEIVE => INTRANSIT)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.INTRANSIT,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => INTRANSIT)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.INTRANSIT,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => READY_TO_DISPATCH)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n return {\n ...co,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n updater: user\n }\n })\n }\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been received and processed by ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n // 4. Update status of arrival notice (PENDING_RECEIVE => INTRANSIT)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.INTRANSIT,\n acceptedBy: user,\n acceptedAt: new Date(),\n updater: user\n })\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function checkArrivedNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.INTRANSIT },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n debug('ganNo', name, foundArrivalNotice)\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Check wheter related collection order is done or not\n const foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n if (foundCOs && foundCOs.length) {\n foundCOs.map((co: CollectionOrder) => {\n if (co.status !== ORDER_STATUS.DONE) {\n throw new Error(`Collection Order: ${co.name} is not finished yet.`)\n }\n })\n }\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 2. Update status of order products (INTRANSIT => ARRIVED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 3. Update status of order vass if it exists (INTRANSIT => ARRIVED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 4. Update status of arrival notice (INTRANSIT => ARRIVED)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.ARRIVED,\n updater: user\n })\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your goods has safely arrived at ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function rejectArrivalNotice(\n tx: EntityManager,\n name: string,\n remark: string,\n context: any\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'orderProducts', 'orderVass', 'collectionOrders']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n if (!remark) throw new Error('Remark is not exist.')\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n\n // 1. Update status of order products (PENDING_RECEIVE => REJECTED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n op.status = ORDER_PRODUCT_STATUS.REJECTED\n op.updater = user\n return op\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => REJECTED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n ov.status = ORDER_VAS_STATUS.REJECTED\n ov.updater = user\n return ov\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => REJECTED)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n co.status = ORDER_STATUS.REJECTED\n co.updater = user\n return co\n })\n await tx.getRepository(CollectionOrder).save(foundCOs)\n }\n\n foundArrivalNotice.remark = remark\n foundArrivalNotice.status = ORDER_STATUS.REJECTED\n foundArrivalNotice.updater = user\n await tx.getRepository(ArrivalNotice).save(foundArrivalNotice)\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been rejected.`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return foundArrivalNotice\n}\n\nexport async function addArrivalNoticeProducts(\n domain: Domain,\n arrivalNotice: ArrivalNotice,\n newOrderProducts: any[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n if (!arrivalNotice?.bizplace || !arrivalNotice?.orderProducts?.length) {\n arrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name: arrivalNotice.name },\n relations: ['bizplace', 'orderProducts']\n })\n }\n\n const createdOrderProducts: OrderProduct[] = await Promise.all(\n newOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: arrivalNotice.bizplace,\n name: OrderNoGenerator.orderProduct(),\n product: await productRepo.findOne(op.product.id),\n arrivalNotice,\n creator: user\n }\n })\n )\n\n debug('gan-created-order-products', createdOrderProducts)\n await orderProductRepo.save(createdOrderProducts)\n}\n\nexport async function editArrivalNoticeProducts(\n existingOrderProducts: (OrderProduct | OrderProductPatch)[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n const updatedOrderProducts: OrderProduct[] = await Promise.all(\n existingOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.EDITED,\n updater: user\n }\n })\n )\n\n debug('gan-updated-order-products', updatedOrderProducts)\n await orderProductRepo.save(updatedOrderProducts)\n}\n\nfunction extractArrivalNotices(rawArrivalNotices): Partial<ArrivalNotice[]> {\n return rawArrivalNotices.reduce((arrivalNotices, raw) => {\n // discard the item that has no productId or productDetailId\n if (!raw.productId || !raw.productDetailId) return\n\n const idx: number = arrivalNotices.findIndex(an => {\n // consider these attributes if they are exist in \"item\"\n const comparison = [\n 'refNo2',\n 'refNo3',\n 'truckNo',\n 'ownTransport',\n 'container',\n 'containerNo',\n 'containerSize',\n 'looseItem',\n 'importCargo'\n ]\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc] !== null) {\n a[cc] = raw[cc]\n b[cc] = an[cc]\n }\n })\n\n a = JSON.stringify(Object.fromEntries(Object.entries(a).sort()))\n b = JSON.stringify(Object.fromEntries(Object.entries(b).sort()))\n\n return an.refNo == raw.refNo && an.etaDate == raw.etaDate && a === b\n })\n\n const product: Product = Object.assign(new Product(), { id: raw.productId, sku: raw.sku })\n const orderProduct: Partial<OrderProduct> = {\n product,\n batchId: raw.batchId,\n batchIdRef: raw.batchIdRef,\n packingType: raw.packingType,\n packingSize: raw.packingSize,\n packQty: raw.packQty,\n uomValue: raw.uomValue,\n uom: raw.uom,\n totalUomValue: raw.totalUomValue,\n palletQty: raw.palletQty,\n unitPrice: raw.unitPrice,\n manufactureDate: raw.manufactureDate\n }\n\n if (idx >= 0) {\n const duplicateSkuIdx: number = arrivalNotices[idx].orderProducts.findIndex(\n op =>\n op.sku === raw.sku &&\n op.packingType === raw.packingType &&\n op.packingSize === raw.packingSize &&\n op.batchId === raw.batchId\n )\n\n if (duplicateSkuIdx >= 0) arrivalNotices[idx].orderProducts[duplicateSkuIdx].packQty += raw.packQty\n else arrivalNotices[idx].orderProducts.push(orderProduct)\n } else {\n arrivalNotices.push({\n refNo: raw.refNo,\n refNo2: raw.refNo2,\n refNo3: raw.refNo3,\n etaDate: raw.etaDate,\n truckNo: raw.truckNo,\n ownTransport: raw.ownTransport,\n container: raw.container,\n containerNo: raw.containerNo,\n containerSize: raw.containerSize,\n importCargo: raw.importCargo,\n looseItem: raw.looseItem,\n orderProducts: [orderProduct]\n })\n }\n\n return arrivalNotices\n }, [])\n}\n\nfunction formRawArrivalNotices(arrivalNotice, errorMsg) {\n let rawArrivalNotices = []\n for (let i = 0, l = arrivalNotice.orderProducts.length; i < l; i++) {\n let rawArrivalNotice = {\n ...arrivalNotice,\n ...arrivalNotice.orderProducts[i],\n sku: arrivalNotice.orderProducts[i].product.sku,\n errorMsg\n }\n\n delete rawArrivalNotice.orderProducts\n delete rawArrivalNotice.product\n\n rawArrivalNotices.push(rawArrivalNotice)\n }\n return rawArrivalNotices\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrival-notice-query.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-query.ts"],"names":[],"mappings":";;;;;AAAA,+CAA8F;AAC9F,qCAA8E;AAE9E,qEAA4D;AAC5D,yDAAwE;AACxE,uDAAgG;AAChG,+DAA4D;AAC5D,iDAAqE;AAErE,2BAA2E;AAC3E,+CAA+D;AAE/D,qDAAgD;AAGhD,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAG7B,KAAK,CAAC,aAAa,CACV,OAAY,EACc,IAAa,EACZ,KAAc;;QAEhD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAuD,OAAO,CAAC,KAAK,CAAA;QAEpG,IAAI,KAAK,GAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,YAAE,EAAC,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAA;QAE5G,IAAI,IAAI;YAAE,KAAK,mCAAQ,KAAK,KAAE,IAAI,GAAE,CAAA;aAC/B,IAAI,KAAK;YAAE,KAAK,mCAAQ,KAAK,KAAE,KAAK,GAAE,CAAA;;YACtC,OAAM;QAEX,IAAI,QAAQ,GAAkB,MAAM,IAAA,uBAAa,EAAC,8BAAa,CAAC,CAAC,OAAO,CAAC;YACvE,KAAK,oBAAO,KAAK,CAAE;YACnB,SAAS,EAAE;gBACT,QAAQ;gBACR,UAAU;gBACV,iBAAiB;gBACjB,aAAa;gBACb,eAAe;gBACf,8BAA8B;gBAC9B,eAAe;gBACf,uBAAuB;gBACvB,kBAAkB;gBAClB,4BAA4B;gBAC5B,oCAAoC;gBACpC,qCAAqC;gBACrC,WAAW;gBACX,eAAe;gBACf,yBAAyB;gBACzB,UAAU;gBACV,SAAS;gBACT,SAAS;aACV;SACF,CAAC,CAAA;QAEF,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAA;QAEpF,IAAI,QAAQ,EAAE;YACZ,MAAM,gBAAgB,GAAiB,MAAM,IAAA,uBAAa,EAAC,4BAAU,CAAC,CAAC,IAAI,CAAC;gBAC1E,KAAK,EAAE;oBACL,MAAM;oBACN,KAAK,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE;oBACnB,QAAQ,EAAE,2BAAe,CAAC,GAAG;iBAC9B;aACF,CAAC,CAAA;YAEF,MAAM,kBAAkB,GAAiB,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,0CAAE,EAAE;gBAClE,CAAC,CAAC,MAAM,IAAA,uBAAa,EAAC,4BAAU,CAAC,CAAC,IAAI,CAAC;oBACnC,KAAK,EAAE;wBACL,MAAM;wBACN,KAAK,EAAE,MAAA,QAAQ,CAAC,aAAa,0CAAE,EAAE;wBACjC,QAAQ,EAAE,2BAAe,CAAC,EAAE;qBAC7B;iBACF,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAA;YAEN,kDAAkD;YAClD,QAAQ,CAAC,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACxC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,YAA0B,EAAE,EAAE;gBAC9D,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,IAAA,uBAAa,EAAC,4BAAa,CAAC,CAAC,IAAI,CAAC;oBAC/E,KAAK,EAAE;wBACL,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE;wBAChC,WAAW,EAAE,YAAY,CAAC,WAAW;wBACrC,WAAW,EAAE,YAAY,CAAC,WAAW;qBACtC;iBACF,CAAC,CAAA;gBACF,OAAO,YAAY,CAAA;YACrB,CAAC,CAAC,CACH,CAAA;YAED,yFAAyF;YACzF,IAAI,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBACjE,QAAQ,CAAC,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3C,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,cAA8B,EAAE,EAAE;oBACrE,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,IAAA,uBAAa,EAAC,4BAAa,CAAC,CAAC,IAAI,CAAC;wBAC3F,KAAK,EAAE;4BACL,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;4BAC5C,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC,WAAW;4BACjD,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC,WAAW;yBAClD;qBACF,CAAC,CAAA;oBACF,OAAO,cAAc,CAAA;gBACvB,CAAC,CAAC,CACH,CAAA;aACF;YAED,uCACK,QAAQ,KACX,UAAU,EAAE,CAAC,GAAG,kBAAkB,EAAE,GAAG,gBAAgB,CAAC,IACzD;SACF;aAAM;YACL,OAAM;SACP;IACH,CAAC;IAID,KAAK,CAAC,cAAc,CAAQ,OAAY,EAAU,MAAiB;QACjE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAmC,OAAO,CAAC,KAAK,CAAA;QAEtE,IAAI,MAAM,IAAA,kCAAsB,EAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE;gBAClG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,CAAC,wBAAY,CAAC,OAAO,EAAE,wBAAY,CAAC,OAAO,CAAC;oBACnD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;aACH;SACF;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE;YACrE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;gBAClD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;SACH;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QACrF,IAAI,gBAAgB,IAAI,CAAC,EAAE;YACzB,IAAI,WAAW,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAA;YAClE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA;YAE1C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE;gBAChC,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;SACH;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;QACjF,IAAI,cAAc,IAAI,CAAC,EAAE;YACvB,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAA;YAC9D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;YAExC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBACzE,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;SACH;QAED,MAAM,EAAE,GAAsC,IAAA,uBAAa,EAAC,8BAAa,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACnG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,EAAE,CAAC,SAAS,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAA;QACjD,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAC3C,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;QAC/C,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;QAC5C,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;QAC7C,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;QAC7C,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;QACjD,EAAE,CAAC,QAAQ,CACT,QAAQ,CAAC,EAAE;YACT,OAAO,QAAQ;iBACZ,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;iBAC1B,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC;iBAC/B,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;iBAClC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC;iBACjC,KAAK,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBAC3D,QAAQ,CAAC,0BAA0B,CAAC,CAAA;QACzC,CAAC,EACD,IAAI,EACJ,uBAAuB,CACxB,CAAA;QAED,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,CAAA;QACrC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CACzC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,iCACV,GAAG,KACN,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAChH,EACF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CACvE,CAAA;QAED,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAEhB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAA;QAEjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;IAID,KAAK,CAAC,qBAAqB,CAAS,MAAiB,EAAS,OAAY;QACxE,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAmC,OAAO,CAAC,KAAK,CAAA;YACtE,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAClE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;YAEhF,IAAI,CAAC,YAAY,EAAE;gBACjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,CAAC,wBAAY,CAAC,OAAO,EAAE,wBAAY,CAAC,OAAO,CAAC;oBACnD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;aACH;YAED,IAAI,CAAC,cAAc,EAAE;gBACnB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;oBAClD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;aACH;YAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;YACrF,IAAI,gBAAgB,IAAI,CAAC,EAAE;gBACzB,IAAI,WAAW,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAA;gBAClE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA;gBAE1C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE;oBAChC,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;aACH;YAED,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YACjF,IAAI,cAAc,IAAI,CAAC,EAAE;gBACvB,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAA;gBAC9D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;gBAExC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;oBACzE,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;aACH;YAED,MAAM,EAAE,GAAsC,IAAA,uBAAa,EAAC,8BAAa,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;YACnG,IAAA,kBAAU,EAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YAC/B,EAAE,CAAC,SAAS,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAA;YACjD,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC3C,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;YAC/C,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;YAC5C,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;YAC7C,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;YAC7C,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;YACjD,EAAE,CAAC,QAAQ,CACT,QAAQ,CAAC,EAAE;gBACT,OAAO,QAAQ;qBACZ,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;qBAC1B,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC;qBAC/B,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;qBAClC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC;qBACjC,KAAK,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;qBAC3D,QAAQ,CAAC,0BAA0B,CAAC,CAAA;YACzC,CAAC,EACD,IAAI,EACJ,uBAAuB,CACxB,CAAA;YAED,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CACzC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,iCACV,GAAG,KACN,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;oBAC7F,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,KAAK,IACT,EACF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CACvE,CAAA;YAED,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAEhB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAA;YAEjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;SACxB;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAID,KAAK,CAAC,0BAA0B,CACvB,OAAY,EACuD,iBAAqC,EAC5E,UAAkB;QAErD,MAAM,EAAE,GAAkB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;QAC1C,OAAO,MAAM,kCAAkC,CAAC,iBAAiB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;IACpF,CAAC;IAGD,KAAK,CAAC,MAAM,CAAS,aAA4B;QAC/C,OAAO,MAAM,IAAA,uBAAa,EAAC,cAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IACpE,CAAC;IAGD,KAAK,CAAC,OAAO,CAAS,aAA4B;QAChD,OAAO,MAAM,IAAA,uBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IACnE,CAAC;IAGD,KAAK,CAAC,OAAO,CAAS,aAA4B;QAChD,OAAO,MAAM,IAAA,uBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IACnE,CAAC;CACF,CAAA;AApTC;IAFC,IAAA,wBAAS,EAAC,mDAAmD,CAAC;IAC9D,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,CAAC;IAE7B,mBAAA,IAAA,kBAAG,GAAE,CAAA;IACL,mBAAA,IAAA,kBAAG,EAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/B,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;;;uDA4FlC;AAID;IAFC,IAAA,wBAAS,EAAC,4DAA4D,CAAC;IACvE,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,qBAAiB,CAAC;IACd,mBAAA,IAAA,kBAAG,GAAE,CAAA;IAAgB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;yEAAS,iBAAS,oBAAT,iBAAS;;wDAsFlE;AAID;IAFC,IAAA,wBAAS,EAAC,6DAA6D,CAAC;IACxE,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,qBAAiB,CAAC;IACP,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;iEAAjB,iBAAS,oBAAT,iBAAS;;+DA4FpD;AAID;IAFC,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,oBAAgB,CAAC,CAAC;IAElC,mBAAA,IAAA,kBAAG,GAAE,CAAA;IACL,mBAAA,IAAA,kBAAG,EAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACxE,mBAAA,IAAA,kBAAG,EAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;;;;oEAInC;AAGD;IADC,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IAChB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAgB,8BAAa;;gDAEhD;AAGD;IADC,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAgB,8BAAa;;iDAEjD;AAGD;IADC,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAgB,8BAAa;;iDAEjD;AAtTU,kBAAkB;IAD9B,IAAA,uBAAQ,EAAC,8BAAa,CAAC;GACX,kBAAkB,CAuT9B;AAvTY,gDAAkB;AAyTxB,KAAK,UAAU,kCAAkC,CACtD,iBAAqC,EACrC,UAAkB,EAClB,MAAqB;IAErB,MAAM,eAAe,GAAa,MAAM,IAAA,6BAAkB,EAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IAElF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAC5B,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC1B,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI;YACzB,QAAQ,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;YAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;YAC5B,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;YAC7B,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;YAC7B,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK;YACrC,UAAU,EAAE,GAAG,CAAC,SAAS,IAAI,KAAK;YAClC,YAAY,EAAE,GAAG,CAAC,WAAW,IAAI,KAAK;YACtC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,KAAK;YAC9D,YAAY,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;YACrC,cAAc,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;YACzC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI;YACpB,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;YAC7B,YAAY,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;YACpC,YAAY,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;YACrC,YAAY,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;YACrC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI;YACpB,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;YAC7B,UAAU,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;YACjC,UAAU,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;YACjC,gBAAgB,EAAE,GAAG,CAAC,eAAe,IAAI,IAAI;SAC9C,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IAED,MAAM,MAAM,CAAC,KAAK,CAChB;;;;;;;;;;;;;;;;;;;;;;;;KAwBC,CACF,CAAA;IAED,MAAM,MAAM,CAAC,KAAK,CAChB;;;;;;;;;;;;;;;;;;;;KAoBC,EACD,CAAC,OAAO,CAAC,CACV,CAAA;IAED,MAAM,MAAM,CAAC,KAAK,CAChB;;;;;;;;;KASC,EACD,CAAC,OAAO,CAAC,CACV,CAAA;IAED,MAAM,YAAY,GAAU,MAAM,MAAM,CAAC,KAAK,CAAC;;KAE5C,CAAC,CAAA;IAEJ,IAAI,cAAc,GAAG,MAAM,MAAM,CAAC,KAAK,CACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsEC,EACD,CAAC,eAAe,CAAC,EAAE,CAAC,CACrB,CAAA;IAED,MAAM,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAE9D,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;YAChC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU;YAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,eAAe,EAAE,IAAI,CAAC,iBAAiB;YACvC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,UAAU,EAAE,IAAI,CAAC,YAAY;YAC7B,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,aAAa,EAAE,IAAI,CAAC,eAAe;YACnC,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAtND,gFAsNC","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { EntityManager, getRepository, In, SelectQueryBuilder } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { checkUserBelongsDomain, User } from '@things-factory/auth-base'\nimport { Bizplace, getCompanyBizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ProductDetail } from '@things-factory/product-base'\nimport { buildQuery, Domain, ListParam } from '@things-factory/shell'\n\nimport { ArrivalNoticeList, NewArrivalNotice, RawArrivalNotice } from '../'\nimport { ATTACHMENT_TYPE, ORDER_STATUS } from '../../constants'\nimport { OrderInventory, OrderProduct } from '../../service'\nimport { ArrivalNotice } from './arrival-notice'\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeQuery {\n @Directive('@privilege(category: \"order\", privilege: \"query\")')\n @Query(returns => ArrivalNotice)\n async arrivalNotice(\n @Ctx() context: any,\n @Arg('name', { nullable: true }) name?: string,\n @Arg('refNo', { nullable: true }) refNo?: string\n ): Promise<ArrivalNotice> {\n const { domain, user, bizplace }: { domain: Domain; user: User; bizplace: Bizplace } = context.state\n\n let param: any = { domain, bizplace: bizplace ? bizplace : In(await getPermittedBizplaceIds(domain, user)) }\n\n if (name) param = { ...param, name }\n else if (refNo) param = { ...param, refNo }\n else return\n\n let foundGAN: ArrivalNotice = await getRepository(ArrivalNotice).findOne({\n where: { ...param },\n relations: [\n 'domain',\n 'bizplace',\n 'bizplace.domain',\n 'releaseGood',\n 'purchaseOrder',\n 'purchaseOrder.bufferLocation',\n 'orderProducts',\n 'orderProducts.product',\n 'orderInventories',\n 'orderInventories.inventory',\n 'orderInventories.inventory.product',\n 'orderInventories.inventory.location',\n 'orderVass',\n 'orderVass.vas',\n 'orderVass.targetProduct',\n 'supplier',\n 'creator',\n 'updater'\n ]\n })\n\n if (name && !foundGAN) throw new Error(`Failed to find arrival notice with ${name}`)\n\n if (foundGAN) {\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain,\n refBy: foundGAN?.id,\n category: ATTACHMENT_TYPE.GAN\n }\n })\n\n const foundPOAttachments: Attachment[] = foundGAN?.purchaseOrder?.id\n ? await getRepository(Attachment).find({\n where: {\n domain,\n refBy: foundGAN.purchaseOrder?.id,\n category: ATTACHMENT_TYPE.PO\n }\n })\n : []\n\n // add productDetails data to orderProduct.product\n foundGAN.orderProducts = await Promise.all(\n foundGAN.orderProducts.map(async (orderProduct: OrderProduct) => {\n orderProduct.product['productDetails'] = await getRepository(ProductDetail).find({\n where: {\n product: orderProduct.product.id,\n packingType: orderProduct.packingType,\n packingSize: orderProduct.packingSize\n }\n })\n return orderProduct\n })\n )\n\n // add productDetails data to orderInventory.inventory.product if orderInventory is exist\n if (foundGAN.orderInventories && foundGAN.orderInventories.length) {\n foundGAN.orderInventories = await Promise.all(\n foundGAN.orderInventories.map(async (orderInventory: OrderInventory) => {\n orderInventory.inventory.product['productDetails'] = await getRepository(ProductDetail).find({\n where: {\n product: orderInventory.inventory.product.id,\n packingType: orderInventory.inventory.packingType,\n packingSize: orderInventory.inventory.packingSize\n }\n })\n return orderInventory\n })\n )\n }\n\n return {\n ...foundGAN,\n attachment: [...foundPOAttachments, ...foundAttachments]\n }\n } else {\n return\n }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Query(returns => ArrivalNoticeList)\n async arrivalNotices(@Ctx() context: any, @Args() params: ListParam): Promise<ArrivalNoticeList> {\n const { domain, user }: { domain: Domain; user: User } = context.state\n\n if (await checkUserBelongsDomain(domain, user)) {\n if (!params.filters.some(e => e.name === 'status') && !params.filters.some(e => e.name === 'name')) {\n params.filters.push({\n name: 'status',\n operator: 'notin',\n value: [ORDER_STATUS.PENDING, ORDER_STATUS.EDITING],\n relation: false\n })\n }\n }\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')\n if (fromDateParamIdx >= 0) {\n let fromDateVal = new Date(params.filters[fromDateParamIdx].value)\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'gte',\n value: fromDateVal.toISOString(),\n relation: false\n })\n }\n\n const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')\n if (toDateParamIdx >= 0) {\n let toDateVal = new Date(params.filters[toDateParamIdx].value)\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'lt',\n value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 9999)', 'rank')\n qb.leftJoinAndSelect('an.domain', 'domain')\n qb.leftJoinAndSelect('an.bizplace', 'bizplace')\n qb.leftJoinAndSelect('an.releaseGood', 'ro')\n qb.leftJoinAndSelect('an.creator', 'creator')\n qb.leftJoinAndSelect('an.updater', 'updater')\n qb.leftJoinAndSelect('an.acceptedBy', 'accepter')\n qb.leftJoin(\n subQuery => {\n return subQuery\n .select(`ccd.rank`, 'rank')\n .addSelect(`ccd.name`, 'status')\n .from(`common_code_details`, 'ccd')\n .innerJoin(`ccd.commonCode`, 'cc')\n .where(`ccd.domain_id = :domainId`, { domainId: domain.id })\n .andWhere(`cc.name = 'ORDER_STATUS'`)\n },\n 'cc',\n 'cc.status = an.status'\n )\n\n const arrChildSortData = ['bizplace']\n const sort = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'an.' + sort.name]: sort.desc ? 'DESC' : 'ASC'\n }),\n !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"query\")')\n @Query(returns => ArrivalNoticeList)\n async arrivalNoticeRequests(@Args() params: ListParam, @Ctx() context: any): Promise<ArrivalNoticeList> {\n try {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const statusFilter = params.filters.some(e => e.name === 'status')\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\n\n if (!statusFilter) {\n params.filters.push({\n name: 'status',\n operator: 'notin',\n value: [ORDER_STATUS.PENDING, ORDER_STATUS.EDITING],\n relation: false\n })\n }\n\n if (!bizplaceFilter) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')\n if (fromDateParamIdx >= 0) {\n let fromDateVal = new Date(params.filters[fromDateParamIdx].value)\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'gte',\n value: fromDateVal.toISOString(),\n relation: false\n })\n }\n\n const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')\n if (toDateParamIdx >= 0) {\n let toDateVal = new Date(params.filters[toDateParamIdx].value)\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'lt',\n value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 9999)', 'rank')\n qb.leftJoinAndSelect('an.domain', 'domain')\n qb.leftJoinAndSelect('an.bizplace', 'bizplace')\n qb.leftJoinAndSelect('an.releaseGood', 'ro')\n qb.leftJoinAndSelect('an.creator', 'creator')\n qb.leftJoinAndSelect('an.updater', 'updater')\n qb.leftJoinAndSelect('an.acceptedBy', 'accepter')\n qb.leftJoin(\n subQuery => {\n return subQuery\n .select(`ccd.rank`, 'rank')\n .addSelect(`ccd.name`, 'status')\n .from(`common_code_details`, 'ccd')\n .innerJoin(`ccd.commonCode`, 'cc')\n .where(`ccd.domain_id = :domainId`, { domainId: domain.id })\n .andWhere(`cc.name = 'ORDER_STATUS'`)\n },\n 'cc',\n 'cc.status = an.status'\n )\n\n const arrChildSortData = ['bizplace']\n const sort = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'an.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n\n return { items, total }\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@transaction')\n @Query(returns => [RawArrivalNotice])\n async validateBulkArrivalNotices(\n @Ctx() context: any,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<RawArrivalNotice[]> {\n const tx: EntityManager = context.state.tx\n return await validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId, tx)\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() arrivalNotice: ArrivalNotice): Promise<Domain> {\n return await getRepository(Domain).findOne(arrivalNotice.domainId)\n }\n\n @FieldResolver(type => User)\n async creator(@Root() arrivalNotice: ArrivalNotice): Promise<User> {\n return await getRepository(User).findOne(arrivalNotice.creatorId)\n }\n\n @FieldResolver(type => User)\n async updater(@Root() arrivalNotice: ArrivalNotice): Promise<User> {\n return await getRepository(User).findOne(arrivalNotice.updaterId)\n }\n}\n\nexport async function validateBulkArrivalNoticesFunction(\n rawArrivalNotices: NewArrivalNotice[],\n bizplaceId: string,\n trxMgr: EntityManager\n): Promise<RawArrivalNotice[]> {\n const companyBizplace: Bizplace = await getCompanyBizplace(null, null, bizplaceId)\n\n const json_oi = JSON.stringify(\n rawArrivalNotices.map(raw => {\n return {\n ref_no: raw.refNo || null,\n ref_no_2: raw.refNo2 || null,\n ref_no_3: raw.refNo3 || null,\n eta_date: raw.etaDate || null,\n truck_no: raw.truckNo || null,\n own_transport: !!raw.truckNo || false,\n loose_item: raw.looseItem || false,\n import_cargo: raw.importCargo || false,\n container: (!!raw.containerNo && !!raw.containerSize) || false,\n container_no: raw.containerNo || null,\n container_size: raw.containerSize || null,\n sku: raw.sku || null,\n batch_id: raw.batchId || null,\n batch_id_ref: raw.batchIdRef || null,\n packing_type: raw.packingType || null,\n packing_size: raw.packingSize || null,\n uom: raw.uom || null,\n pack_qty: raw.packQty || null,\n pallet_qty: raw.palletQty || null,\n unit_price: raw.unitPrice || null,\n manufacture_date: raw.manufactureDate || null\n }\n })\n )\n\n await trxMgr.query(\n `\n CREATE TEMP TABLE raw_arrival_notices(\n ref_no VARCHAR(150),\n ref_no_2 VARCHAR(150),\n ref_no_3 VARCHAR(150),\n eta_date VARCHAR(24),\n truck_no VARCHAR(10),\n own_transport BOOLEAN,\n container BOOLEAN,\n container_no VARCHAR(50),\n container_size VARCHAR(24),\n import_cargo BOOLEAN,\n loose_item BOOLEAN,\n sku VARCHAR(150),\n batch_id VARCHAR(100),\n batch_id_ref VARCHAR(100),\n packing_type VARCHAR(50),\n packing_size INT,\n uom VARCHAR(10),\n pack_qty INT,\n pallet_qty INT,\n unit_price FLOAT8,\n manufacture_date DATE\n );\n `\n )\n\n await trxMgr.query(\n `\n CREATE TEMP TABLE temp_gan AS (\n SELECT an.name, an.ref_no, an.ref_no_2, an.ref_no_3, an.eta_date, an.truck_no, an.own_transport, an.container, an.container_no, an.container_size, an.import_cargo, an.loose_item\n FROM arrival_notices an\n WHERE EXISTS (\n SELECT raw.* FROM\n JSON_POPULATE_RECORDSET(NULL:: arrival_notices, $1) raw\n WHERE raw.ref_no = an.ref_no \n AND raw.ref_no_2 = an.ref_no_2\n AND raw.ref_no_3 = an.ref_no_3\n AND raw.eta_date::date = an.eta_date::date\n AND raw.truck_no = an.truck_no\n AND raw.own_transport = an.own_transport\n AND raw.container = an.container\n AND raw.container_no = an.container_no\n AND raw.container_size = an.container_size\n AND raw.loose_item = an.loose_item\n AND raw.import_cargo = an.import_cargo\t\t\t\n )\n )\n `,\n [json_oi]\n )\n\n await trxMgr.query(\n `\n INSERT INTO raw_arrival_notices \n SELECT \n js.ref_no, js.ref_no_2, js.ref_no_3, js.eta_date, js.truck_no, js.own_transport, js.container,\n js.container_no, js.container_size, js.import_cargo, js.loose_item, js.sku, js.batch_id,\n js.batch_id_ref, js.packing_type, js.packing_size, js.uom, js.pack_qty, js.pallet_qty,\n js.unit_price, js.manufacture_date\n FROM \n JSON_POPULATE_RECORDSET(NULL:: raw_arrival_notices, $1) js;\n `,\n [json_oi]\n )\n\n const insertResult: any[] = await trxMgr.query(`\n SELECT * from raw_arrival_notices\n `)\n\n let validatedItems = await trxMgr.query(\n `\n WITH foo AS (\n\t SELECT \n\t \tan.name AS gan_name,\n\t \tan.ref_no AS gan_ref_no,\n\t raw.ref_no, \n\t raw.ref_no_2, \n\t raw.ref_no_3, \n\t raw.eta_date, \n\t raw.truck_no, \n\t raw.own_transport, \n\t raw.container, \n\t raw.container_no, \n\t raw.container_size, \n\t raw.import_cargo, \n\t raw.loose_item, \n\t pr.id AS product_id, \n\t pd.id AS product_detail_id, \n\t raw.sku AS sku, \n\t CASE WHEN pr.description NOT IN (NULL, '', '-') THEN CONCAT(pr.name, '(', pr.description, ')') ELSE pr.name END AS product_info, \n\t raw.batch_id,\n\t raw.batch_id_ref,\n\t pd.packing_type, \n\t pd.packing_size, \n\t sum(raw.pack_qty) AS pack_qty, \n\t sum(pd.uom_value) AS uom_value,\n\t pd.uom, \n\t sum(raw.pallet_qty) AS pallet_qty, \n\t raw.unit_price, \n\t raw.manufacture_date\n\t FROM \n\t raw_arrival_notices raw \n\t LEFT JOIN temp_gan an ON raw.ref_no = an.ref_no \n\t AND raw.ref_no_2 = an.ref_no_2\n\t AND raw.ref_no_3 = an.ref_no_3\n\t AND raw.eta_date::date = an.eta_date::date\n\t AND raw.truck_no = an.truck_no\n\t AND raw.own_transport = an.own_transport\n\t AND raw.container = an.container\n\t AND raw.container_no = an.container_no\n\t AND raw.container_size = an.container_size\n\t AND raw.loose_item = an.loose_item\n\t AND raw.import_cargo = an.import_cargo \n\t LEFT JOIN products pr ON LOWER(pr.sku) = LOWER(raw.sku)\n\t LEFT JOIN product_details pd ON pr.id = pd.product_id\n\t AND pr.bizplace_id = $1\n\t AND CASE WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom NOTNULL\n\t THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.uom = raw.uom \n\t WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom ISNULL\n\t THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.is_default IS TRUE\n\t WHEN raw.packing_type ISNULL AND raw.packing_size ISNULL AND raw.uom NOTNULL\n\t THEN pd.uom = raw.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE\n\t END\n\t GROUP BY raw.ref_no, raw.ref_no_2, raw.ref_no_3, raw.eta_date, raw.truck_no, raw.own_transport, raw.container, raw.container_no, raw.container_size, raw.import_cargo, raw.loose_item,\n\t pr.id, pd.id, raw.sku, pr.name, pr.description, raw.batch_id, raw.batch_id_ref, raw.packing_type, raw.packing_size, raw.uom, raw.unit_price, raw.manufacture_date, an.ref_no, an.name\n ) SELECT foo.*, \n\t CONCAT(COALESCE(ROUND(foo.uom_value:: numeric, 2), 0) * COALESCE(foo.pack_qty, 0), ' ', foo.uom) AS total_uom_value,\n CASE WHEN foo.gan_ref_no NOTNULL THEN concat('order duplicated with ', foo.gan_name)\n WHEN foo.manufacture_date > current_date THEN 'invalid manufacture date'\n WHEN foo.product_id ISNULL OR foo.product_detail_id ISNULL OR foo.sku ISNULL THEN 'product not found'\n WHEN foo.pack_qty ISNULL OR foo.pack_qty <= 0 THEN 'invalid pack qty'\n WHEN foo.batch_id ISNULL THEN 'batch no. is required'\n WHEN foo.ref_no ISNULL OR foo.ref_no = '' THEN 'ref no. is required'\n WHEN foo.eta_date ISNULL THEN 'eta date is required'\n WHEN foo.container_no NOTNULL AND foo.container_size ISNULL OR foo.container_no ISNULL AND foo.container_size NOTNULL THEN 'incomplete container information'\n WHEN foo.unit_price < 0 THEN 'invalid unit price'\n WHEN foo.pallet_qty < 0 THEN 'invalid pallet qty'\n ELSE '' END AS error_msg\n FROM foo\n ORDER BY foo.ref_no, foo.ref_no_2, foo.ref_no_3, foo.sku\n `,\n [companyBizplace.id]\n )\n\n await trxMgr.query('DROP TABLE raw_arrival_notices, temp_gan')\n\n return validatedItems.map(item => {\n return {\n refNo: item.ref_no,\n refNo2: item.ref_no_2,\n refNo3: item.ref_no_3,\n etaDate: item.eta_date,\n truckNo: item.truck_no,\n ownTransport: !!item.own_transport,\n container: item.container,\n containerNo: item.container_no,\n containerSize: item.container_size,\n importCargo: !!item.import_cargo,\n looseItem: !!item.loose_item,\n productId: item.product_id,\n productDetailId: item.product_detail_id,\n sku: item.sku,\n productInfo: item.product_info,\n batchId: item.batch_id,\n batchIdRef: item.batch_id_ref,\n packingType: item.packing_type,\n packingSize: item.packing_size,\n uom: item.uom,\n packQty: item.pack_qty,\n uomValue: item.uom_value,\n totalUomValue: item.total_uom_value,\n palletQty: item.pallet_qty,\n unitPrice: item.unit_price,\n manufactureDate: item.manufacture_date,\n errorMsg: item.error_msg\n }\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"arrival-notice-query.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { EntityManager, getRepository, In, SelectQueryBuilder } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { checkUserBelongsDomain, User } from '@things-factory/auth-base'\nimport { Bizplace, getCompanyBizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ProductDetail } from '@things-factory/product-base'\nimport { buildQuery, Domain, ListParam } from '@things-factory/shell'\n\nimport { ArrivalNoticeList, NewArrivalNotice, RawArrivalNotice } from '../'\nimport { ATTACHMENT_TYPE, ORDER_STATUS } from '../../constants'\nimport { OrderInventory, OrderProduct } from '../../service'\nimport { ArrivalNotice } from './arrival-notice'\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeQuery {\n @Directive('@privilege(category: \"order\", privilege: \"query\")')\n @Query(returns => ArrivalNotice)\n async arrivalNotice(\n @Ctx() context: any,\n @Arg('name', { nullable: true }) name?: string,\n @Arg('refNo', { nullable: true }) refNo?: string\n ): Promise<ArrivalNotice> {\n const { domain, user, bizplace }: { domain: Domain; user: User; bizplace: Bizplace } = context.state\n\n let param: any = { domain, bizplace: bizplace ? bizplace : In(await getPermittedBizplaceIds(domain, user)) }\n\n if (name) param = { ...param, name }\n else if (refNo) param = { ...param, refNo }\n else return\n\n let foundGAN: ArrivalNotice = await getRepository(ArrivalNotice).findOne({\n where: { ...param },\n relations: [\n 'domain',\n 'bizplace',\n 'bizplace.domain',\n 'releaseGood',\n 'purchaseOrder',\n 'purchaseOrder.bufferLocation',\n 'orderProducts',\n 'orderProducts.product',\n 'orderInventories',\n 'orderInventories.inventory',\n 'orderInventories.inventory.product',\n 'orderInventories.inventory.location',\n 'orderVass',\n 'orderVass.vas',\n 'orderVass.targetProduct',\n 'supplier',\n 'creator',\n 'updater'\n ]\n })\n\n if (name && !foundGAN) throw new Error(`Failed to find arrival notice with ${name}`)\n\n if (foundGAN) {\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain,\n refBy: foundGAN?.id,\n category: ATTACHMENT_TYPE.GAN\n }\n })\n\n const foundPOAttachments: Attachment[] = foundGAN?.purchaseOrder?.id\n ? await getRepository(Attachment).find({\n where: {\n domain,\n refBy: foundGAN.purchaseOrder?.id,\n category: ATTACHMENT_TYPE.PO\n }\n })\n : []\n\n // add productDetails data to orderProduct.product\n foundGAN.orderProducts = await Promise.all(\n foundGAN.orderProducts.map(async (orderProduct: OrderProduct) => {\n orderProduct.product['productDetails'] = await getRepository(ProductDetail).find({\n where: {\n product: orderProduct.product.id,\n packingType: orderProduct.packingType,\n packingSize: orderProduct.packingSize\n }\n })\n return orderProduct\n })\n )\n\n // add productDetails data to orderInventory.inventory.product if orderInventory is exist\n if (foundGAN.orderInventories && foundGAN.orderInventories.length) {\n foundGAN.orderInventories = await Promise.all(\n foundGAN.orderInventories.map(async (orderInventory: OrderInventory) => {\n orderInventory.inventory.product['productDetails'] = await getRepository(ProductDetail).find({\n where: {\n product: orderInventory.inventory.product.id,\n packingType: orderInventory.inventory.packingType,\n packingSize: orderInventory.inventory.packingSize\n }\n })\n return orderInventory\n })\n )\n }\n\n return {\n ...foundGAN,\n attachment: [...foundPOAttachments, ...foundAttachments]\n }\n } else {\n return\n }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Query(returns => ArrivalNoticeList)\n async arrivalNotices(@Ctx() context: any, @Args() params: ListParam): Promise<ArrivalNoticeList> {\n const { domain, user }: { domain: Domain; user: User } = context.state\n\n if (await checkUserBelongsDomain(domain, user)) {\n if (!params.filters.some(e => e.name === 'status') && !params.filters.some(e => e.name === 'name')) {\n params.filters.push({\n name: 'status',\n operator: 'notin',\n value: [ORDER_STATUS.PENDING, ORDER_STATUS.EDITING],\n relation: false\n })\n }\n }\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')\n if (fromDateParamIdx >= 0) {\n let fromDateVal = new Date(params.filters[fromDateParamIdx].value)\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'gte',\n value: fromDateVal.toISOString(),\n relation: false\n })\n }\n\n const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')\n if (toDateParamIdx >= 0) {\n let toDateVal = new Date(params.filters[toDateParamIdx].value)\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'lt',\n value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 9999)', 'rank')\n qb.leftJoinAndSelect('an.domain', 'domain')\n qb.leftJoinAndSelect('an.bizplace', 'bizplace')\n qb.leftJoinAndSelect('an.releaseGood', 'ro')\n qb.leftJoinAndSelect('an.creator', 'creator')\n qb.leftJoinAndSelect('an.updater', 'updater')\n qb.leftJoinAndSelect('an.acceptedBy', 'accepter')\n qb.leftJoin(\n subQuery => {\n return subQuery\n .select(`ccd.rank`, 'rank')\n .addSelect(`ccd.name`, 'status')\n .from(`common_code_details`, 'ccd')\n .innerJoin(`ccd.commonCode`, 'cc')\n .where(`ccd.domain_id = :domainId`, { domainId: domain.id })\n .andWhere(`cc.name = 'ORDER_STATUS'`)\n },\n 'cc',\n 'cc.status = an.status'\n )\n\n const arrChildSortData = ['bizplace']\n const sort = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'an.' + sort.name]: sort.desc ? 'DESC' : 'ASC'\n }),\n !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"query\")')\n @Query(returns => ArrivalNoticeList)\n async arrivalNoticeRequests(@Args() params: ListParam, @Ctx() context: any): Promise<ArrivalNoticeList> {\n try {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const statusFilter = params.filters.some(e => e.name === 'status')\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\n\n if (!statusFilter) {\n params.filters.push({\n name: 'status',\n operator: 'notin',\n value: [ORDER_STATUS.PENDING, ORDER_STATUS.EDITING],\n relation: false\n })\n }\n\n if (!bizplaceFilter) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')\n if (fromDateParamIdx >= 0) {\n let fromDateVal = new Date(params.filters[fromDateParamIdx].value)\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'gte',\n value: fromDateVal.toISOString(),\n relation: false\n })\n }\n\n const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')\n if (toDateParamIdx >= 0) {\n let toDateVal = new Date(params.filters[toDateParamIdx].value)\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'lt',\n value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 9999)', 'rank')\n qb.leftJoinAndSelect('an.domain', 'domain')\n qb.leftJoinAndSelect('an.bizplace', 'bizplace')\n qb.leftJoinAndSelect('an.releaseGood', 'ro')\n qb.leftJoinAndSelect('an.creator', 'creator')\n qb.leftJoinAndSelect('an.updater', 'updater')\n qb.leftJoinAndSelect('an.acceptedBy', 'accepter')\n qb.leftJoin(\n subQuery => {\n return subQuery\n .select(`ccd.rank`, 'rank')\n .addSelect(`ccd.name`, 'status')\n .from(`common_code_details`, 'ccd')\n .innerJoin(`ccd.commonCode`, 'cc')\n .where(`ccd.domain_id = :domainId`, { domainId: domain.id })\n .andWhere(`cc.name = 'ORDER_STATUS'`)\n },\n 'cc',\n 'cc.status = an.status'\n )\n\n const arrChildSortData = ['bizplace']\n const sort = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'an.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n\n return { items, total }\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@transaction')\n @Query(returns => [RawArrivalNotice])\n async validateBulkArrivalNotices(\n @Ctx() context: any,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<RawArrivalNotice[]> {\n const tx: EntityManager = context.state.tx\n return await validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId, tx)\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() arrivalNotice: ArrivalNotice): Promise<Domain> {\n return await getRepository(Domain).findOne(arrivalNotice.domainId)\n }\n\n @FieldResolver(type => User)\n async creator(@Root() arrivalNotice: ArrivalNotice): Promise<User> {\n return await getRepository(User).findOne(arrivalNotice.creatorId)\n }\n\n @FieldResolver(type => User)\n async updater(@Root() arrivalNotice: ArrivalNotice): Promise<User> {\n return await getRepository(User).findOne(arrivalNotice.updaterId)\n }\n}\n\nexport async function validateBulkArrivalNoticesFunction(\n rawArrivalNotices: NewArrivalNotice[],\n bizplaceId: string,\n trxMgr: EntityManager\n): Promise<RawArrivalNotice[]> {\n const companyBizplace: Bizplace = await getCompanyBizplace(null, null, bizplaceId)\n\n const json_oi = JSON.stringify(\n rawArrivalNotices.map(raw => {\n return {\n ref_no: raw.refNo || null,\n ref_no_2: raw.refNo2 || null,\n ref_no_3: raw.refNo3 || null,\n eta_date: raw.etaDate || null,\n truck_no: raw.truckNo || null,\n own_transport: !!raw.truckNo || false,\n loose_item: raw.looseItem || false,\n import_cargo: raw.importCargo || false,\n container: (!!raw.containerNo && !!raw.containerSize) || false,\n container_no: raw.containerNo || null,\n container_size: raw.containerSize || null,\n sku: raw.sku || null,\n batch_id: raw.batchId || null,\n batch_id_ref: raw.batchIdRef || null,\n packing_type: raw.packingType || null,\n packing_size: raw.packingSize || null,\n uom: raw.uom || null,\n pack_qty: raw.packQty || null,\n pallet_qty: raw.palletQty || null,\n unit_price: raw.unitPrice || null,\n manufacture_date: raw.manufactureDate || null\n }\n })\n )\n\n await trxMgr.query(\n `\n CREATE TEMP TABLE raw_arrival_notices(\n ref_no VARCHAR(150),\n ref_no_2 VARCHAR(150),\n ref_no_3 VARCHAR(150),\n eta_date VARCHAR(24),\n truck_no VARCHAR(10),\n own_transport BOOLEAN,\n container BOOLEAN,\n container_no VARCHAR(50),\n container_size VARCHAR(24),\n import_cargo BOOLEAN,\n loose_item BOOLEAN,\n sku VARCHAR(150),\n batch_id VARCHAR(100),\n batch_id_ref VARCHAR(100),\n packing_type VARCHAR(50),\n packing_size INT,\n uom VARCHAR(10),\n pack_qty INT,\n pallet_qty INT,\n unit_price FLOAT8,\n manufacture_date DATE\n );\n `\n )\n\n await trxMgr.query(\n `\n CREATE TEMP TABLE temp_gan AS (\n SELECT an.name, an.ref_no, an.ref_no_2, an.ref_no_3, an.eta_date, an.truck_no, an.own_transport, an.container, an.container_no, an.container_size, an.import_cargo, an.loose_item\n FROM arrival_notices an\n WHERE EXISTS (\n SELECT raw.* FROM\n JSON_POPULATE_RECORDSET(NULL:: arrival_notices, $1) raw\n WHERE raw.ref_no = an.ref_no \n AND raw.ref_no_2 = an.ref_no_2\n AND raw.ref_no_3 = an.ref_no_3\n AND raw.eta_date::date = an.eta_date::date\n AND raw.truck_no = an.truck_no\n AND raw.own_transport = an.own_transport\n AND raw.container = an.container\n AND raw.container_no = an.container_no\n AND raw.container_size = an.container_size\n AND raw.loose_item = an.loose_item\n AND raw.import_cargo = an.import_cargo\t\t\t\n )\n )\n `,\n [json_oi]\n )\n\n await trxMgr.query(\n `\n INSERT INTO raw_arrival_notices \n SELECT \n js.ref_no, js.ref_no_2, js.ref_no_3, js.eta_date, js.truck_no, js.own_transport, js.container,\n js.container_no, js.container_size, js.import_cargo, js.loose_item, js.sku, js.batch_id,\n js.batch_id_ref, js.packing_type, js.packing_size, js.uom, js.pack_qty, js.pallet_qty,\n js.unit_price, js.manufacture_date\n FROM \n JSON_POPULATE_RECORDSET(NULL:: raw_arrival_notices, $1) js;\n `,\n [json_oi]\n )\n\n const insertResult: any[] = await trxMgr.query(`\n SELECT * from raw_arrival_notices\n `)\n\n let validatedItems = await trxMgr.query(\n `\n WITH foo AS (\n\t SELECT \n\t \tan.name AS gan_name,\n\t \tan.ref_no AS gan_ref_no,\n\t raw.ref_no, \n\t raw.ref_no_2, \n\t raw.ref_no_3, \n\t raw.eta_date, \n\t raw.truck_no, \n\t raw.own_transport, \n\t raw.container, \n\t raw.container_no, \n\t raw.container_size, \n\t raw.import_cargo, \n\t raw.loose_item, \n\t pr.id AS product_id, \n\t pd.id AS product_detail_id, \n\t raw.sku AS sku, \n\t CASE WHEN pr.description NOT IN (NULL, '', '-') THEN CONCAT(pr.name, '(', pr.description, ')') ELSE pr.name END AS product_info, \n\t raw.batch_id,\n\t raw.batch_id_ref,\n\t pd.packing_type, \n\t pd.packing_size, \n\t sum(raw.pack_qty) AS pack_qty, \n\t sum(pd.uom_value) AS uom_value,\n\t pd.uom, \n\t sum(raw.pallet_qty) AS pallet_qty, \n\t raw.unit_price, \n\t raw.manufacture_date\n\t FROM \n\t raw_arrival_notices raw \n\t LEFT JOIN temp_gan an ON raw.ref_no = an.ref_no \n\t AND raw.ref_no_2 = an.ref_no_2\n\t AND raw.ref_no_3 = an.ref_no_3\n\t AND raw.eta_date::date = an.eta_date::date\n\t AND raw.truck_no = an.truck_no\n\t AND raw.own_transport = an.own_transport\n\t AND raw.container = an.container\n\t AND raw.container_no = an.container_no\n\t AND raw.container_size = an.container_size\n\t AND raw.loose_item = an.loose_item\n\t AND raw.import_cargo = an.import_cargo \n\t LEFT JOIN products pr ON LOWER(pr.sku) = LOWER(raw.sku)\n\t LEFT JOIN product_details pd ON pr.id = pd.product_id\n\t AND pr.bizplace_id = $1\n\t AND CASE WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom NOTNULL\n\t THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.uom = raw.uom \n\t WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom ISNULL\n\t THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.is_default IS TRUE\n\t WHEN raw.packing_type ISNULL AND raw.packing_size ISNULL AND raw.uom NOTNULL\n\t THEN pd.uom = raw.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE\n\t END\n\t GROUP BY raw.ref_no, raw.ref_no_2, raw.ref_no_3, raw.eta_date, raw.truck_no, raw.own_transport, raw.container, raw.container_no, raw.container_size, raw.import_cargo, raw.loose_item,\n\t pr.id, pd.id, raw.sku, pr.name, pr.description, raw.batch_id, raw.batch_id_ref, raw.packing_type, raw.packing_size, raw.uom, raw.unit_price, raw.manufacture_date, an.ref_no, an.name\n ) SELECT foo.*, \n\t CONCAT(COALESCE(ROUND(foo.uom_value:: numeric, 2), 0) * COALESCE(foo.pack_qty, 0), ' ', foo.uom) AS total_uom_value,\n CASE WHEN foo.gan_ref_no NOTNULL THEN concat('order duplicated with ', foo.gan_name)\n WHEN foo.manufacture_date > current_date THEN 'invalid manufacture date'\n WHEN foo.product_id ISNULL OR foo.product_detail_id ISNULL OR foo.sku ISNULL THEN 'product not found'\n WHEN foo.pack_qty ISNULL OR foo.pack_qty <= 0 THEN 'invalid pack qty'\n WHEN foo.batch_id ISNULL THEN 'batch no. is required'\n WHEN foo.ref_no ISNULL OR foo.ref_no = '' THEN 'ref no. is required'\n WHEN foo.eta_date ISNULL THEN 'eta date is required'\n WHEN foo.container_no NOTNULL AND foo.container_size ISNULL OR foo.container_no ISNULL AND foo.container_size NOTNULL THEN 'incomplete container information'\n WHEN foo.unit_price < 0 THEN 'invalid unit price'\n WHEN foo.pallet_qty < 0 THEN 'invalid pallet qty'\n ELSE '' END AS error_msg\n FROM foo\n ORDER BY foo.ref_no, foo.ref_no_2, foo.ref_no_3, foo.sku\n `,\n [companyBizplace.id]\n )\n\n await trxMgr.query('DROP TABLE raw_arrival_notices, temp_gan')\n\n return validatedItems.map(item => {\n return {\n refNo: item.ref_no,\n refNo2: item.ref_no_2,\n refNo3: item.ref_no_3,\n etaDate: item.eta_date,\n truckNo: item.truck_no,\n ownTransport: !!item.own_transport,\n container: item.container,\n containerNo: item.container_no,\n containerSize: item.container_size,\n importCargo: !!item.import_cargo,\n looseItem: !!item.loose_item,\n productId: item.product_id,\n productDetailId: item.product_detail_id,\n sku: item.sku,\n productInfo: item.product_info,\n batchId: item.batch_id,\n batchIdRef: item.batch_id_ref,\n packingType: item.packing_type,\n packingSize: item.packing_size,\n uom: item.uom,\n packQty: item.pack_qty,\n uomValue: item.uom_value,\n totalUomValue: item.total_uom_value,\n palletQty: item.pallet_qty,\n unitPrice: item.unit_price,\n manufactureDate: item.manufacture_date,\n errorMsg: item.error_msg\n }\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrival-notice-types.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-types.ts"],"names":[],"mappings":";;;;;AAAA,+CAMqB;AAErB,iDAAiD;AAEjD,8EAAsE;AACtE,kEAA0D;AAC1D,qDAAgD;AAGhD,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;CAM7B,CAAA;AAJC;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,8BAAa,CAAC,CAAC;;gDACT;AAGtB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;gDACN;AALF,iBAAiB;IAD7B,IAAA,yBAAU,GAAE;GACA,iBAAiB,CAM7B;AANY,8CAAiB;AAS9B,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;CA+G5B,CAAA;AA7GC;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CACd;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACR;AAGlB;IADC,IAAA,oBAAK,GAAE;;sDACa;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sDACL;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACR;AAGlB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACf;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACf;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACX;AAGf;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACX;AAGf;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qCAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACrB;AAGhC;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,6BAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACzB;AAGxB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACH;AAGvB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACL;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4DACA;AAG1B;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DACD;AAGzB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACf;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACrB;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACzB;AAGhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACxB;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACd;AAGZ;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACrB;AAGlB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACvB;AAGlB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACF;AAGxB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACV;AA9GL,gBAAgB;IAD5B,IAAA,wBAAS,GAAE;GACC,gBAAgB,CA+G5B;AA/GY,4CAAgB;AAkH7B,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;CA8E9B,CAAA;AA5EC;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACd;AAGZ;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;0DACnC,iBAAS,oBAAT,iBAAS;oDAAA;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACR;AAGlB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wDACL;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wDACL;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACf;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACf;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACL;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACR;AAGlB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACX;AAGf;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACX;AAGf;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACZ;AAGd;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACrB;AAG1B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACzB;AAGtB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4DAClB;AAG7B;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DACH;AA7EZ,kBAAkB;IAD9B,IAAA,wBAAS,GAAE;GACC,kBAAkB,CA8E9B;AA9EY,gDAAkB;AAiF/B,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;CAuF5B,CAAA;AArFC;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACf;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACZ;AAGd;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACX;AAGf;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACX;AAGf;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACV;AAGhB;IADC,IAAA,oBAAK,GAAE;;sDACa;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACR;AAGlB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACJ;AAGtB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACL;AAGrB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACF;AAGxB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACd;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACP;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACrB;AAGpB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACzB;AAGhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACxB;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uDACJ;AAGtB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACd;AAGZ;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACrB;AAGlB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACvB;AAGlB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACF;AAGxB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACT;AAtFN,gBAAgB;IAD5B,IAAA,yBAAU,GAAE;GACA,gBAAgB,CAuF5B;AAvFY,4CAAgB","sourcesContent":["import {\n Field,\n Float,\n InputType,\n Int,\n ObjectType\n} from 'type-graphql'\n\nimport { ObjectRef } from '@things-factory/shell'\n\nimport { NewOrderProduct } from '../order-product/order-product-types'\nimport { NewOrderVas } from '../order-vas/order-vas-types'\nimport { ArrivalNotice } from './arrival-notice'\n\n@ObjectType()\nexport class ArrivalNoticeList {\n @Field(type => [ArrivalNotice])\n items: ArrivalNotice[]\n\n @Field(type => Int)\n total: number\n}\n\n@InputType()\nexport class NewArrivalNotice {\n @Field({ nullable: true })\n name: string\n\n @Field({ nullable: true })\n description: string\n\n @Field({ nullable: true })\n containerNo: string\n\n @Field({ nullable: true })\n container: boolean\n\n @Field()\n ownTransport: boolean\n\n @Field({ nullable: true })\n crossDocking: boolean\n\n @Field({ nullable: true })\n importCargo: boolean\n\n @Field({ nullable: true })\n looseItem: boolean\n\n @Field({ nullable: true })\n ata: string\n\n @Field({ nullable: true })\n eta: string\n\n @Field({ nullable: true })\n etaDate: string\n\n @Field({ nullable: true })\n truckNo: string\n\n @Field({ nullable: true })\n refNo: string\n\n @Field({ nullable: true })\n refNo2: string\n\n @Field({ nullable: true })\n refNo3: string\n\n @Field({ nullable: true })\n status: string\n\n @Field({ nullable: true })\n remark: string\n\n @Field(type => [NewOrderProduct], { nullable: true })\n orderProducts: NewOrderProduct[]\n\n @Field(type => [NewOrderVas], { nullable: true })\n orderVass: NewOrderVas[]\n\n @Field({ nullable: true })\n deliveryOrderNo: string\n\n @Field({ nullable: true })\n containerSize: string\n\n @Field({ nullable: true })\n warehouseId: string // outletID\n\n @Field({ nullable: true })\n supplier: string\n\n @Field({ nullable: true })\n customerBizplaceId: string // customerID\n\n @Field({ nullable: true })\n partnerBizplaceId: string\n\n @Field({ nullable: true })\n sku: string\n\n @Field({ nullable: true })\n batchId?: string\n\n @Field({ nullable: true })\n batchIdRef?: string\n\n @Field({ nullable: true })\n packingType?: string\n\n @Field(type => Float, { nullable: true })\n packingSize?: number\n\n @Field(type => Float, { nullable: true })\n packQty?: number\n\n @Field(type => Float, { nullable: true })\n uomValue?: number\n\n @Field({ nullable: true })\n uom?: string\n\n @Field(type => Int, { nullable: true })\n palletQty?: number\n\n @Field(type => Float, { nullable: true })\n unitPrice?: number\n\n @Field({ nullable: true })\n manufactureDate?: string\n\n @Field({ nullable: true })\n errorMsg: string\n}\n\n@InputType()\nexport class ArrivalNoticePatch {\n @Field({ nullable: true })\n name: string\n\n @Field(type => ObjectRef, { nullable: true })\n bizplace: ObjectRef\n\n @Field({ nullable: true })\n description: string\n\n @Field({ nullable: true })\n containerNo: string\n\n @Field({ nullable: true })\n container: boolean\n\n @Field({ nullable: true })\n ownTransport: boolean\n\n @Field({ nullable: true })\n crossDocking: boolean\n\n @Field({ nullable: true })\n importCargo: boolean\n\n @Field({ nullable: true })\n eta: string\n\n @Field({ nullable: true })\n ata: string\n\n @Field({ nullable: true })\n containerSize: string\n\n @Field({ nullable: true })\n looseItem: boolean\n\n @Field({ nullable: true })\n fromDate: string\n\n @Field({ nullable: true })\n toDate: string\n\n @Field({ nullable: true })\n mtDate: string\n\n @Field({ nullable: true })\n etaDate: string\n\n @Field({ nullable: true })\n truckNo: string\n\n @Field({ nullable: true })\n refNo: string\n\n @Field({ nullable: true })\n refNo2: string\n\n @Field({ nullable: true })\n refNo3: string\n\n @Field({ nullable: true })\n remark: string\n\n @Field({ nullable: true })\n status: string\n\n @Field(type => [ObjectRef], { nullable: true })\n orderProducts: ObjectRef[]\n\n @Field(type => [ObjectRef], { nullable: true })\n orderVass: ObjectRef[]\n\n @Field(type => [ObjectRef], { nullable: true })\n collectionOrders: ObjectRef[]\n\n @Field({ nullable: true })\n deliveryOrderNo: string\n}\n\n@ObjectType()\nexport class RawArrivalNotice {\n @Field({ nullable: true })\n id?: string\n\n @Field({ nullable: true })\n name?: string\n\n @Field({ nullable: true })\n refNo?: string\n\n @Field({ nullable: true })\n refNo2?: string\n\n @Field({ nullable: true })\n refNo3?: string\n\n @Field({ nullable: true })\n etaDate?: string\n\n @Field({ nullable: true })\n truckNo?: string\n\n @Field()\n ownTransport: boolean\n\n @Field({ nullable: true })\n productId?: string\n\n @Field({ nullable: true })\n container?: boolean\n\n @Field({ nullable: true })\n containerNo?: string\n\n @Field({ nullable: true })\n containerSize?: string\n\n @Field({ nullable: true })\n looseItem?: boolean\n\n @Field({ nullable: true })\n importCargo?: boolean\n\n @Field({ nullable: true })\n productDetailId?: string\n\n @Field({ nullable: true })\n sku?: string\n\n @Field({ nullable: true })\n productInfo?: string\n\n @Field({ nullable: true })\n batchId?: string\n\n @Field({ nullable: true })\n batchIdRef?: string\n\n @Field({ nullable: true })\n packingType?: string\n\n @Field(type => Float, { nullable: true })\n packingSize?: number\n\n @Field(type => Float, { nullable: true })\n packQty?: number\n\n @Field(type => Float, { nullable: true })\n uomValue?: number\n\n @Field({ nullable: true })\n totalUomValue?: string\n\n @Field({ nullable: true })\n uom?: string\n\n @Field(type => Int, { nullable: true })\n palletQty?: number\n\n @Field(type => Float, { nullable: true })\n unitPrice?: number\n\n @Field({ nullable: true })\n manufactureDate?: string\n\n @Field({ nullable: true })\n errorMsg?: string\n}\n"]}
|
|
1
|
+
{"version":3,"file":"arrival-notice-types.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-types.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Field,\n Float,\n InputType,\n Int,\n ObjectType\n} from 'type-graphql'\n\nimport { ObjectRef } from '@things-factory/shell'\n\nimport { NewOrderProduct } from '../order-product/order-product-types'\nimport { NewOrderVas } from '../order-vas/order-vas-types'\nimport { ArrivalNotice } from './arrival-notice'\n\n@ObjectType()\nexport class ArrivalNoticeList {\n @Field(type => [ArrivalNotice])\n items: ArrivalNotice[]\n\n @Field(type => Int)\n total: number\n}\n\n@InputType()\nexport class NewArrivalNotice {\n @Field({ nullable: true })\n name: string\n\n @Field({ nullable: true })\n description: string\n\n @Field({ nullable: true })\n containerNo: string\n\n @Field({ nullable: true })\n container: boolean\n\n @Field()\n ownTransport: boolean\n\n @Field({ nullable: true })\n crossDocking: boolean\n\n @Field({ nullable: true })\n importCargo: boolean\n\n @Field({ nullable: true })\n looseItem: boolean\n\n @Field({ nullable: true })\n ata: string\n\n @Field({ nullable: true })\n eta: string\n\n @Field({ nullable: true })\n etaDate: string\n\n @Field({ nullable: true })\n truckNo: string\n\n @Field({ nullable: true })\n refNo: string\n\n @Field({ nullable: true })\n refNo2: string\n\n @Field({ nullable: true })\n refNo3: string\n\n @Field({ nullable: true })\n status: string\n\n @Field({ nullable: true })\n remark: string\n\n @Field(type => [NewOrderProduct], { nullable: true })\n orderProducts: NewOrderProduct[]\n\n @Field(type => [NewOrderVas], { nullable: true })\n orderVass: NewOrderVas[]\n\n @Field({ nullable: true })\n deliveryOrderNo: string\n\n @Field({ nullable: true })\n containerSize: string\n\n @Field({ nullable: true })\n warehouseId: string // outletID\n\n @Field({ nullable: true })\n supplier: string\n\n @Field({ nullable: true })\n customerBizplaceId: string // customerID\n\n @Field({ nullable: true })\n partnerBizplaceId: string\n\n @Field({ nullable: true })\n sku: string\n\n @Field({ nullable: true })\n batchId?: string\n\n @Field({ nullable: true })\n batchIdRef?: string\n\n @Field({ nullable: true })\n packingType?: string\n\n @Field(type => Float, { nullable: true })\n packingSize?: number\n\n @Field(type => Float, { nullable: true })\n packQty?: number\n\n @Field(type => Float, { nullable: true })\n uomValue?: number\n\n @Field({ nullable: true })\n uom?: string\n\n @Field(type => Int, { nullable: true })\n palletQty?: number\n\n @Field(type => Float, { nullable: true })\n unitPrice?: number\n\n @Field({ nullable: true })\n manufactureDate?: string\n\n @Field({ nullable: true })\n errorMsg: string\n}\n\n@InputType()\nexport class ArrivalNoticePatch {\n @Field({ nullable: true })\n name: string\n\n @Field(type => ObjectRef, { nullable: true })\n bizplace: ObjectRef\n\n @Field({ nullable: true })\n description: string\n\n @Field({ nullable: true })\n containerNo: string\n\n @Field({ nullable: true })\n container: boolean\n\n @Field({ nullable: true })\n ownTransport: boolean\n\n @Field({ nullable: true })\n crossDocking: boolean\n\n @Field({ nullable: true })\n importCargo: boolean\n\n @Field({ nullable: true })\n eta: string\n\n @Field({ nullable: true })\n ata: string\n\n @Field({ nullable: true })\n containerSize: string\n\n @Field({ nullable: true })\n looseItem: boolean\n\n @Field({ nullable: true })\n fromDate: string\n\n @Field({ nullable: true })\n toDate: string\n\n @Field({ nullable: true })\n mtDate: string\n\n @Field({ nullable: true })\n etaDate: string\n\n @Field({ nullable: true })\n truckNo: string\n\n @Field({ nullable: true })\n refNo: string\n\n @Field({ nullable: true })\n refNo2: string\n\n @Field({ nullable: true })\n refNo3: string\n\n @Field({ nullable: true })\n remark: string\n\n @Field({ nullable: true })\n status: string\n\n @Field(type => [ObjectRef], { nullable: true })\n orderProducts: ObjectRef[]\n\n @Field(type => [ObjectRef], { nullable: true })\n orderVass: ObjectRef[]\n\n @Field(type => [ObjectRef], { nullable: true })\n collectionOrders: ObjectRef[]\n\n @Field({ nullable: true })\n deliveryOrderNo: string\n}\n\n@ObjectType()\nexport class RawArrivalNotice {\n @Field({ nullable: true })\n id?: string\n\n @Field({ nullable: true })\n name?: string\n\n @Field({ nullable: true })\n refNo?: string\n\n @Field({ nullable: true })\n refNo2?: string\n\n @Field({ nullable: true })\n refNo3?: string\n\n @Field({ nullable: true })\n etaDate?: string\n\n @Field({ nullable: true })\n truckNo?: string\n\n @Field()\n ownTransport: boolean\n\n @Field({ nullable: true })\n productId?: string\n\n @Field({ nullable: true })\n container?: boolean\n\n @Field({ nullable: true })\n containerNo?: string\n\n @Field({ nullable: true })\n containerSize?: string\n\n @Field({ nullable: true })\n looseItem?: boolean\n\n @Field({ nullable: true })\n importCargo?: boolean\n\n @Field({ nullable: true })\n productDetailId?: string\n\n @Field({ nullable: true })\n sku?: string\n\n @Field({ nullable: true })\n productInfo?: string\n\n @Field({ nullable: true })\n batchId?: string\n\n @Field({ nullable: true })\n batchIdRef?: string\n\n @Field({ nullable: true })\n packingType?: string\n\n @Field(type => Float, { nullable: true })\n packingSize?: number\n\n @Field(type => Float, { nullable: true })\n packQty?: number\n\n @Field(type => Float, { nullable: true })\n uomValue?: number\n\n @Field({ nullable: true })\n totalUomValue?: string\n\n @Field({ nullable: true })\n uom?: string\n\n @Field(type => Int, { nullable: true })\n palletQty?: number\n\n @Field(type => Float, { nullable: true })\n unitPrice?: number\n\n @Field({ nullable: true })\n manufactureDate?: string\n\n @Field({ nullable: true })\n errorMsg?: string\n}\n"]}
|