@things-factory/operato-wms 4.3.661 → 4.3.663
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/pages/order/arrival-notice/edit-product-popup.js +1 -1
- package/dist-server/graphql/index.js +33 -0
- package/dist-server/graphql/index.js.map +1 -0
- package/dist-server/graphql/resolvers/board-setting/board-settings.js +78 -0
- package/dist-server/graphql/resolvers/board-setting/board-settings.js.map +1 -0
- package/dist-server/graphql/resolvers/board-setting/index.js +6 -0
- package/dist-server/graphql/resolvers/board-setting/index.js.map +1 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js +87 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-collection-report.js.map +1 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js +138 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-daily-order-inventory-report.js.map +1 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js +124 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-pallet-detail-report.js.map +1 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js +159 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-report.js.map +1 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js +90 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-inventory-history-summary-report.js.map +1 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js +34 -0
- package/dist-server/graphql/resolvers/custom/elccl/elccl-onhand-inventory-counter.js.map +1 -0
- package/dist-server/graphql/resolvers/custom/elccl/index.js +11 -0
- package/dist-server/graphql/resolvers/custom/elccl/index.js.map +1 -0
- package/dist-server/graphql/resolvers/custom/kimeda/index.js +6 -0
- package/dist-server/graphql/resolvers/custom/kimeda/index.js.map +1 -0
- package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js +40 -0
- package/dist-server/graphql/resolvers/custom/kimeda/kimeda-onhand-inventory-counter.js.map +1 -0
- package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js +36 -0
- package/dist-server/graphql/resolvers/dashboard/arrival-notices-by-status.js.map +1 -0
- package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js +24 -0
- package/dist-server/graphql/resolvers/dashboard/collection-orders-by-status.js.map +1 -0
- package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js +24 -0
- package/dist-server/graphql/resolvers/dashboard/delivery-orders-by-status.js.map +1 -0
- package/dist-server/graphql/resolvers/dashboard/index.js +12 -0
- package/dist-server/graphql/resolvers/dashboard/index.js.map +1 -0
- package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js +65 -0
- package/dist-server/graphql/resolvers/dashboard/inventory-expiry-monitor.js.map +1 -0
- package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js +22 -0
- package/dist-server/graphql/resolvers/dashboard/outbound-order-by-status.js.map +1 -0
- package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js +36 -0
- package/dist-server/graphql/resolvers/dashboard/release-goods-by-status.js.map +1 -0
- package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js +56 -0
- package/dist-server/graphql/resolvers/dashboard/unit-inbounded-outbounded.js.map +1 -0
- package/dist-server/graphql/resolvers/index.js +58 -0
- package/dist-server/graphql/resolvers/index.js.map +1 -0
- package/dist-server/graphql/resolvers/inventory-comparison/index.js +6 -0
- package/dist-server/graphql/resolvers/inventory-comparison/index.js.map +1 -0
- package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js +78 -0
- package/dist-server/graphql/resolvers/inventory-comparison/inventory-comparison-list.js.map +1 -0
- package/dist-server/graphql/resolvers/opa-menu/index.js +6 -0
- package/dist-server/graphql/resolvers/opa-menu/index.js.map +1 -0
- package/dist-server/graphql/resolvers/opa-menu/opa-menus.js +73 -0
- package/dist-server/graphql/resolvers/opa-menu/opa-menus.js.map +1 -0
- package/dist-server/graphql/resolvers/other/add-release-good-products.js +309 -0
- package/dist-server/graphql/resolvers/other/add-release-good-products.js.map +1 -0
- package/dist-server/graphql/resolvers/other/index.js +8 -0
- package/dist-server/graphql/resolvers/other/index.js.map +1 -0
- package/dist-server/graphql/resolvers/other/page-settings.js +135 -0
- package/dist-server/graphql/resolvers/other/page-settings.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/complete-load.js +114 -0
- package/dist-server/graphql/resolvers/outbound/complete-load.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/find-loadable-release-good-by-bin.js +148 -0
- package/dist-server/graphql/resolvers/outbound/find-loadable-release-good-by-bin.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/find-loadable-release-good.js +114 -0
- package/dist-server/graphql/resolvers/outbound/find-loadable-release-good.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/get-delivery-orders.js +46 -0
- package/dist-server/graphql/resolvers/outbound/get-delivery-orders.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/get-loading-task.js +100 -0
- package/dist-server/graphql/resolvers/outbound/get-loading-task.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/index.js +17 -0
- package/dist-server/graphql/resolvers/outbound/index.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/load-by-qty.js +121 -0
- package/dist-server/graphql/resolvers/outbound/load-by-qty.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/loading-worksheet-v2.js +158 -0
- package/dist-server/graphql/resolvers/outbound/loading-worksheet-v2.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/my-loading-assignment-status.js +32 -0
- package/dist-server/graphql/resolvers/outbound/my-loading-assignment-status.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/sort-item.js +66 -0
- package/dist-server/graphql/resolvers/outbound/sort-item.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/undo-load.js +72 -0
- package/dist-server/graphql/resolvers/outbound/undo-load.js.map +1 -0
- package/dist-server/graphql/resolvers/outbound/warehouse-return.js +101 -0
- package/dist-server/graphql/resolvers/outbound/warehouse-return.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/analysis-picking-packing-report.js +128 -0
- package/dist-server/graphql/resolvers/reports/analysis-picking-packing-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/billing-module-report.js +355 -0
- package/dist-server/graphql/resolvers/reports/billing-module-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/costing-report.js +166 -0
- package/dist-server/graphql/resolvers/reports/costing-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/cycle-count-report.js +311 -0
- package/dist-server/graphql/resolvers/reports/cycle-count-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js +215 -0
- package/dist-server/graphql/resolvers/reports/inbound-order-details-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js +140 -0
- package/dist-server/graphql/resolvers/reports/inbound-serial-number-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/index.js +21 -0
- package/dist-server/graphql/resolvers/reports/index.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/manifest-report.js +98 -0
- package/dist-server/graphql/resolvers/reports/manifest-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/non-loaded-inventory-report.js +143 -0
- package/dist-server/graphql/resolvers/reports/non-loaded-inventory-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js +290 -0
- package/dist-server/graphql/resolvers/reports/outbound-order-details-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js +143 -0
- package/dist-server/graphql/resolvers/reports/outbound-serial-number-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/pg-udf-query.js +70 -0
- package/dist-server/graphql/resolvers/reports/pg-udf-query.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/product-label-report.js +57 -0
- package/dist-server/graphql/resolvers/reports/product-label-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/release-inventory-report.js +180 -0
- package/dist-server/graphql/resolvers/reports/release-inventory-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/shortage-report.js +165 -0
- package/dist-server/graphql/resolvers/reports/shortage-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/tote-loading-qc-report.js +129 -0
- package/dist-server/graphql/resolvers/reports/tote-loading-qc-report.js.map +1 -0
- package/dist-server/graphql/resolvers/reports/vas-report.js +386 -0
- package/dist-server/graphql/resolvers/reports/vas-report.js.map +1 -0
- package/dist-server/graphql/resolvers/shipping-provider/index.js +6 -0
- package/dist-server/graphql/resolvers/shipping-provider/index.js.map +1 -0
- package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +24 -0
- package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +1 -0
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/index.js +6 -0
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/index.js.map +1 -0
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js +97 -0
- package/dist-server/graphql/resolvers/warehouse-inventory-adjustment/warehouse-intentory-adjustment.js.map +1 -0
- package/dist-server/graphql/resolvers/zone-worksheet/activate-zone-worksheet.js +91 -0
- package/dist-server/graphql/resolvers/zone-worksheet/activate-zone-worksheet.js.map +1 -0
- package/dist-server/graphql/resolvers/zone-worksheet/assign-sorter.js +36 -0
- package/dist-server/graphql/resolvers/zone-worksheet/assign-sorter.js.map +1 -0
- package/dist-server/graphql/resolvers/zone-worksheet/generate-zone-worksheet.js +106 -0
- package/dist-server/graphql/resolvers/zone-worksheet/generate-zone-worksheet.js.map +1 -0
- package/dist-server/graphql/resolvers/zone-worksheet/get-zone-picking-task.js +108 -0
- package/dist-server/graphql/resolvers/zone-worksheet/get-zone-picking-task.js.map +1 -0
- package/dist-server/graphql/resolvers/zone-worksheet/index.js +12 -0
- package/dist-server/graphql/resolvers/zone-worksheet/index.js.map +1 -0
- package/dist-server/graphql/resolvers/zone-worksheet/zone-picking.js +346 -0
- package/dist-server/graphql/resolvers/zone-worksheet/zone-picking.js.map +1 -0
- package/dist-server/graphql/resolvers/zone-worksheet/zone-worksheet.js +146 -0
- package/dist-server/graphql/resolvers/zone-worksheet/zone-worksheet.js.map +1 -0
- package/dist-server/graphql/types/board-setting/board-setting.js +16 -0
- package/dist-server/graphql/types/board-setting/board-setting.js.map +1 -0
- package/dist-server/graphql/types/board-setting/index.js +9 -0
- package/dist-server/graphql/types/board-setting/index.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report-list.js +14 -0
- package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report-list.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report.js +30 -0
- package/dist-server/graphql/types/custom/elccl/elccl-daily-collection-report.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report-list.js +14 -0
- package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report-list.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report.js +25 -0
- package/dist-server/graphql/types/custom/elccl/elccl-daily-order-inventory-report.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js +22 -0
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-report.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report-list.js +14 -0
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report-list.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report.js +23 -0
- package/dist-server/graphql/types/custom/elccl/elccl-inventory-summary-report.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/elccl-pallet-detail-report.js +22 -0
- package/dist-server/graphql/types/custom/elccl/elccl-pallet-detail-report.js.map +1 -0
- package/dist-server/graphql/types/custom/elccl/index.js +30 -0
- package/dist-server/graphql/types/custom/elccl/index.js.map +1 -0
- package/dist-server/graphql/types/custom/kimeda/index.js +7 -0
- package/dist-server/graphql/types/custom/kimeda/index.js.map +1 -0
- package/dist-server/graphql/types/dashboard/index.js +17 -0
- package/dist-server/graphql/types/dashboard/index.js.map +1 -0
- package/dist-server/graphql/types/dashboard/inventory-expiry-counter.js +16 -0
- package/dist-server/graphql/types/dashboard/inventory-expiry-counter.js.map +1 -0
- package/dist-server/graphql/types/dashboard/inventory-expiry-status.js +14 -0
- package/dist-server/graphql/types/dashboard/inventory-expiry-status.js.map +1 -0
- package/dist-server/graphql/types/dashboard/order-status-counter.js +14 -0
- package/dist-server/graphql/types/dashboard/order-status-counter.js.map +1 -0
- package/dist-server/graphql/types/index.js +70 -0
- package/dist-server/graphql/types/index.js.map +1 -0
- package/dist-server/graphql/types/inventory-comparison/index.js +13 -0
- package/dist-server/graphql/types/inventory-comparison/index.js.map +1 -0
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js +14 -0
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison-list.js.map +1 -0
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js +18 -0
- package/dist-server/graphql/types/inventory-comparison/inventory-comparison.js.map +1 -0
- package/dist-server/graphql/types/opa-menu/index.js +9 -0
- package/dist-server/graphql/types/opa-menu/index.js.map +1 -0
- package/dist-server/graphql/types/opa-menu/opa-menu.js +45 -0
- package/dist-server/graphql/types/opa-menu/opa-menu.js.map +1 -0
- package/dist-server/graphql/types/other/index.js +21 -0
- package/dist-server/graphql/types/other/index.js.map +1 -0
- package/dist-server/graphql/types/other/page-setting.js +37 -0
- package/dist-server/graphql/types/other/page-setting.js.map +1 -0
- package/dist-server/graphql/types/outbound/delivery-order-info-list.js +14 -0
- package/dist-server/graphql/types/outbound/delivery-order-info-list.js.map +1 -0
- package/dist-server/graphql/types/outbound/index.js +24 -0
- package/dist-server/graphql/types/outbound/index.js.map +1 -0
- package/dist-server/graphql/types/outbound/loading-assignment.js +15 -0
- package/dist-server/graphql/types/outbound/loading-assignment.js.map +1 -0
- package/dist-server/graphql/types/outbound/loading-worksheet-type.js +25 -0
- package/dist-server/graphql/types/outbound/loading-worksheet-type.js.map +1 -0
- package/dist-server/graphql/types/reports/analysis-picking-packing-report-list.js +14 -0
- package/dist-server/graphql/types/reports/analysis-picking-packing-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/analysis-picking-packing-report.js +18 -0
- package/dist-server/graphql/types/reports/analysis-picking-packing-report.js.map +1 -0
- package/dist-server/graphql/types/reports/billing-module-report-list.js +14 -0
- package/dist-server/graphql/types/reports/billing-module-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/billing-module-report.js +15 -0
- package/dist-server/graphql/types/reports/billing-module-report.js.map +1 -0
- package/dist-server/graphql/types/reports/costing-report-list.js +14 -0
- package/dist-server/graphql/types/reports/costing-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/costing-report.js +19 -0
- package/dist-server/graphql/types/reports/costing-report.js.map +1 -0
- package/dist-server/graphql/types/reports/cycle-count-report-list.js +14 -0
- package/dist-server/graphql/types/reports/cycle-count-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/cycle-count-report.js +35 -0
- package/dist-server/graphql/types/reports/cycle-count-report.js.map +1 -0
- package/dist-server/graphql/types/reports/inbound-order-details-report-list.js +14 -0
- package/dist-server/graphql/types/reports/inbound-order-details-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/inbound-order-details-report.js +60 -0
- package/dist-server/graphql/types/reports/inbound-order-details-report.js.map +1 -0
- package/dist-server/graphql/types/reports/inbound-serial-number-report-list.js +14 -0
- package/dist-server/graphql/types/reports/inbound-serial-number-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/inbound-serial-number-report.js +23 -0
- package/dist-server/graphql/types/reports/inbound-serial-number-report.js.map +1 -0
- package/dist-server/graphql/types/reports/index.js +89 -0
- package/dist-server/graphql/types/reports/index.js.map +1 -0
- package/dist-server/graphql/types/reports/loading-qc-report-list.js +14 -0
- package/dist-server/graphql/types/reports/loading-qc-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/loading-qc-report.js +24 -0
- package/dist-server/graphql/types/reports/loading-qc-report.js.map +1 -0
- package/dist-server/graphql/types/reports/manifest-report-list.js +14 -0
- package/dist-server/graphql/types/reports/manifest-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/manifest-report-type.js +23 -0
- package/dist-server/graphql/types/reports/manifest-report-type.js.map +1 -0
- package/dist-server/graphql/types/reports/non-loaded-inventory-report-list.js +14 -0
- package/dist-server/graphql/types/reports/non-loaded-inventory-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/non-loaded-inventory-report.js +23 -0
- package/dist-server/graphql/types/reports/non-loaded-inventory-report.js.map +1 -0
- package/dist-server/graphql/types/reports/outbound-order-details-report-list.js +14 -0
- package/dist-server/graphql/types/reports/outbound-order-details-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/outbound-order-details-report.js +79 -0
- package/dist-server/graphql/types/reports/outbound-order-details-report.js.map +1 -0
- package/dist-server/graphql/types/reports/outbound-serial-number-report-list.js +14 -0
- package/dist-server/graphql/types/reports/outbound-serial-number-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/outbound-serial-number-report.js +25 -0
- package/dist-server/graphql/types/reports/outbound-serial-number-report.js.map +1 -0
- package/dist-server/graphql/types/reports/pg-udf-query-list.js +13 -0
- package/dist-server/graphql/types/reports/pg-udf-query-list.js.map +1 -0
- package/dist-server/graphql/types/reports/product-label-report-list.js +14 -0
- package/dist-server/graphql/types/reports/product-label-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/product-label-report.js +16 -0
- package/dist-server/graphql/types/reports/product-label-report.js.map +1 -0
- package/dist-server/graphql/types/reports/release-inventory-report-list.js +14 -0
- package/dist-server/graphql/types/reports/release-inventory-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/release-inventory-report.js +29 -0
- package/dist-server/graphql/types/reports/release-inventory-report.js.map +1 -0
- package/dist-server/graphql/types/reports/shortage-report-list.js +14 -0
- package/dist-server/graphql/types/reports/shortage-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/shortage-report-type.js +26 -0
- package/dist-server/graphql/types/reports/shortage-report-type.js.map +1 -0
- package/dist-server/graphql/types/reports/vas-report-list.js +20 -0
- package/dist-server/graphql/types/reports/vas-report-list.js.map +1 -0
- package/dist-server/graphql/types/reports/vas-report.js +29 -0
- package/dist-server/graphql/types/reports/vas-report.js.map +1 -0
- package/dist-server/graphql/types/shipping-provider/index.js +10 -0
- package/dist-server/graphql/types/shipping-provider/index.js.map +1 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js +13 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js.map +1 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider.js +13 -0
- package/dist-server/graphql/types/shipping-provider/shipping-provider.js.map +1 -0
- package/dist-server/graphql/types/warehouse-inventory-adjustment/index.js +9 -0
- package/dist-server/graphql/types/warehouse-inventory-adjustment/index.js.map +1 -0
- package/dist-server/graphql/types/zone-worksheet/index.js +22 -0
- package/dist-server/graphql/types/zone-worksheet/index.js.map +1 -0
- package/dist-server/graphql/types/zone-worksheet/zone-picking-worksheet.js +18 -0
- package/dist-server/graphql/types/zone-worksheet/zone-picking-worksheet.js.map +1 -0
- package/dist-server/graphql/types/zone-worksheet/zone-worksheet-overview-list.js +13 -0
- package/dist-server/graphql/types/zone-worksheet/zone-worksheet-overview-list.js.map +1 -0
- package/dist-server/graphql/types/zone-worksheet/zone-worksheet-overview.js +16 -0
- package/dist-server/graphql/types/zone-worksheet/zone-worksheet-overview.js.map +1 -0
- package/dist-server/index.js +20 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/migrations/1568858861188-SeedSetting.js +51 -0
- package/dist-server/migrations/1568858861188-SeedSetting.js.map +1 -0
- package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js +35 -0
- package/dist-server/migrations/1623308919899-SeedLocationRecommendSetting.js.map +1 -0
- package/dist-server/migrations/1623381200659-SeedStoringRule.js +33 -0
- package/dist-server/migrations/1623381200659-SeedStoringRule.js.map +1 -0
- package/dist-server/migrations/1687413760311-UpdateProductDetailStockQty.js +36 -0
- package/dist-server/migrations/1687413760311-UpdateProductDetailStockQty.js.map +1 -0
- package/dist-server/migrations/1687415141200-InsertNewProductDetailStock.js +32 -0
- package/dist-server/migrations/1687415141200-InsertNewProductDetailStock.js.map +1 -0
- package/dist-server/migrations/index.js +12 -0
- package/dist-server/migrations/index.js.map +1 -0
- package/dist-server/opa-app-setting-constants.js +15 -0
- package/dist-server/opa-app-setting-constants.js.map +1 -0
- package/dist-server/routes.js +3 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/utils/index.js +18 -0
- package/dist-server/utils/index.js.map +1 -0
- package/dist-server/utils/report-query-util.js +42 -0
- package/dist-server/utils/report-query-util.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findLoadableReleaseGoodByBin = void 0;
|
|
4
|
+
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
5
|
+
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
+
/**
|
|
7
|
+
* Custom error class for outbound order related errors
|
|
8
|
+
* Covers both ReleaseGood and OrderInventory related errors
|
|
9
|
+
*/
|
|
10
|
+
class OutboundOrderError extends Error {
|
|
11
|
+
constructor(message, code) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.code = code;
|
|
14
|
+
this.name = 'OutboundOrderError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Builds a query to find a release good by order number
|
|
19
|
+
*/
|
|
20
|
+
const buildfindReleaseGoodByNameQuery = (tx, domainId, orderNo) => {
|
|
21
|
+
return tx
|
|
22
|
+
.getRepository(sales_base_1.ReleaseGood)
|
|
23
|
+
.createQueryBuilder('releaseGood')
|
|
24
|
+
.leftJoinAndSelect('releaseGood.bizplace', 'bizplace')
|
|
25
|
+
.where('releaseGood.domain_id = :domainId', { domainId })
|
|
26
|
+
.andWhere('releaseGood.name = :orderNo', { orderNo })
|
|
27
|
+
.andWhere('releaseGood.status IN (:...status)', {
|
|
28
|
+
status: [sales_base_1.ORDER_STATUS.LOADING, sales_base_1.ORDER_STATUS.PROCESSING, sales_base_1.ORDER_STATUS.PARTIAL_PROCESSING, sales_base_1.ORDER_STATUS.DONE]
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Builds a query to find order inventories by bin location
|
|
33
|
+
*/
|
|
34
|
+
const buildOrderInventoryQuery = (tx, domainId, locationId) => {
|
|
35
|
+
return tx
|
|
36
|
+
.getRepository(sales_base_1.OrderInventory)
|
|
37
|
+
.createQueryBuilder('orderInventory')
|
|
38
|
+
.leftJoinAndSelect('orderInventory.inventory', 'inventory')
|
|
39
|
+
.leftJoinAndSelect('inventory.product', 'product')
|
|
40
|
+
.leftJoinAndSelect('inventory.productDetail', 'productDetail')
|
|
41
|
+
.leftJoinAndSelect('orderInventory.binLocation', 'binLocation')
|
|
42
|
+
.where('orderInventory.domain_id = :domainId', { domainId })
|
|
43
|
+
.andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
|
|
44
|
+
orderInventoryStatus: [
|
|
45
|
+
sales_base_1.ORDER_INVENTORY_STATUS.SORTING,
|
|
46
|
+
sales_base_1.ORDER_INVENTORY_STATUS.LOADING,
|
|
47
|
+
sales_base_1.ORDER_INVENTORY_STATUS.LOADED
|
|
48
|
+
]
|
|
49
|
+
})
|
|
50
|
+
.andWhere('orderInventory.bin_location_id = :locationId', { locationId })
|
|
51
|
+
.orderBy('orderInventory.createdAt', 'ASC');
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Transforms order inventory data into the required worksheet format
|
|
55
|
+
*/
|
|
56
|
+
const transformToWorksheetFormat = (orderInventories) => {
|
|
57
|
+
if (!orderInventories.length)
|
|
58
|
+
return null;
|
|
59
|
+
// Extract unique bin location names
|
|
60
|
+
const uniqueBinLocations = [...new Set(orderInventories.map(oi => { var _a; return (_a = oi.binLocation) === null || _a === void 0 ? void 0 : _a.name; }).filter(Boolean))];
|
|
61
|
+
return {
|
|
62
|
+
worksheetInfo: {
|
|
63
|
+
worksheet: {
|
|
64
|
+
id: null,
|
|
65
|
+
name: null,
|
|
66
|
+
type: null,
|
|
67
|
+
status: null
|
|
68
|
+
},
|
|
69
|
+
bizplaceName: null,
|
|
70
|
+
startedAt: null,
|
|
71
|
+
releaseGood: null,
|
|
72
|
+
binLocationName: uniqueBinLocations.join(', ') // Join multiple bin locations with comma
|
|
73
|
+
},
|
|
74
|
+
worksheetDetailInfos: orderInventories.map(oi => {
|
|
75
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
76
|
+
return ({
|
|
77
|
+
id: null,
|
|
78
|
+
name: null,
|
|
79
|
+
batchId: oi.batchId,
|
|
80
|
+
releaseQty: oi.releaseQty,
|
|
81
|
+
pickedQty: oi.pickedQty,
|
|
82
|
+
sortedQty: oi.sortedQty,
|
|
83
|
+
status: oi.status,
|
|
84
|
+
packingType: oi.packingType,
|
|
85
|
+
packingSize: oi.packingSize,
|
|
86
|
+
expirationDate: (_a = oi.inventory) === null || _a === void 0 ? void 0 : _a.expirationDate,
|
|
87
|
+
binLocation: {
|
|
88
|
+
name: (_b = oi.binLocation) === null || _b === void 0 ? void 0 : _b.name
|
|
89
|
+
},
|
|
90
|
+
productName: (_d = (_c = oi.inventory) === null || _c === void 0 ? void 0 : _c.product) === null || _d === void 0 ? void 0 : _d.name,
|
|
91
|
+
productSku: (_f = (_e = oi.inventory) === null || _e === void 0 ? void 0 : _e.product) === null || _f === void 0 ? void 0 : _f.sku,
|
|
92
|
+
relatedOrderInv: {
|
|
93
|
+
id: oi.id,
|
|
94
|
+
batchId: oi.batchId,
|
|
95
|
+
packingType: oi.packingType,
|
|
96
|
+
product: ((_g = oi.inventory) === null || _g === void 0 ? void 0 : _g.product)
|
|
97
|
+
? {
|
|
98
|
+
id: oi.inventory.product.id,
|
|
99
|
+
sku: oi.inventory.product.sku,
|
|
100
|
+
name: oi.inventory.product.name
|
|
101
|
+
}
|
|
102
|
+
: null,
|
|
103
|
+
productDetail: ((_h = oi.inventory) === null || _h === void 0 ? void 0 : _h.productDetail)
|
|
104
|
+
? {
|
|
105
|
+
id: oi.inventory.productDetail.id
|
|
106
|
+
}
|
|
107
|
+
: null
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
})
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Finds loadable release goods by bin location
|
|
115
|
+
* @param _ - GraphQL resolver parent object
|
|
116
|
+
* @param orderNo - The order number or bin location name to search for
|
|
117
|
+
* @param context - GraphQL context containing domain and transaction manager
|
|
118
|
+
* @returns Promise<Object> - Transformed worksheet data structure
|
|
119
|
+
* @throws OutboundOrderError if order is DONE or if no items found in bin
|
|
120
|
+
*/
|
|
121
|
+
exports.findLoadableReleaseGoodByBin = {
|
|
122
|
+
async findLoadableReleaseGoodByBin(_, { orderNo }, context) {
|
|
123
|
+
const { domain, tx } = context.state;
|
|
124
|
+
let orderInventoryByBin = [];
|
|
125
|
+
let foundReleaseGood = await buildfindReleaseGoodByNameQuery(tx, domain.id, orderNo).getOne();
|
|
126
|
+
if (foundReleaseGood && foundReleaseGood.status == sales_base_1.ORDER_STATUS.DONE) {
|
|
127
|
+
throw new OutboundOrderError('This order is DONE', 'ORDER_DONE');
|
|
128
|
+
}
|
|
129
|
+
else if (foundReleaseGood) {
|
|
130
|
+
throw new OutboundOrderError('You are scanning using order number. Your setting for QC by BIN is enabled. Please contact your administrator.', 'QC_BY_BIN_ENABLED');
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const binLocation = await tx.getRepository(warehouse_base_1.Location).findOne({
|
|
134
|
+
where: { domain, name: orderNo }
|
|
135
|
+
});
|
|
136
|
+
if (binLocation) {
|
|
137
|
+
orderInventoryByBin = await buildOrderInventoryQuery(tx, domain.id, binLocation.id).getMany();
|
|
138
|
+
}
|
|
139
|
+
if (orderInventoryByBin.length > 0) {
|
|
140
|
+
return transformToWorksheetFormat(orderInventoryByBin);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
throw new OutboundOrderError('There is no item in this bin', 'NO_ITEMS_IN_BIN');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=find-loadable-release-good-by-bin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-loadable-release-good-by-bin.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/find-loadable-release-good-by-bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findLoadableReleaseGood = void 0;
|
|
4
|
+
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
5
|
+
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
+
exports.findLoadableReleaseGood = {
|
|
7
|
+
async findLoadableReleaseGood(_, { orderNo, tabName }, context) {
|
|
8
|
+
const { domain, tx } = context.state;
|
|
9
|
+
let releaseGoods = [];
|
|
10
|
+
//put query in util same as find-loadable-release-good-by-bin.ts
|
|
11
|
+
//jiahhao
|
|
12
|
+
let foundReleaseGood = await tx
|
|
13
|
+
.getRepository(sales_base_1.ReleaseGood)
|
|
14
|
+
.createQueryBuilder('releaseGood')
|
|
15
|
+
.where('releaseGood.domain_id = :domainId', { domainId: domain.id })
|
|
16
|
+
.andWhere('releaseGood.name = :orderNo', { orderNo })
|
|
17
|
+
.andWhere('releaseGood.status IN (:...status)', {
|
|
18
|
+
status: [sales_base_1.ORDER_STATUS.LOADING, sales_base_1.ORDER_STATUS.PROCESSING, sales_base_1.ORDER_STATUS.PARTIAL_PROCESSING, sales_base_1.ORDER_STATUS.DONE]
|
|
19
|
+
})
|
|
20
|
+
.getOne();
|
|
21
|
+
if (foundReleaseGood && foundReleaseGood.status == sales_base_1.ORDER_STATUS.DONE) {
|
|
22
|
+
throw new Error('This order is DONE');
|
|
23
|
+
}
|
|
24
|
+
else if (foundReleaseGood) {
|
|
25
|
+
// Get counts for single release good
|
|
26
|
+
const counts = await tx
|
|
27
|
+
.getRepository(sales_base_1.OrderInventory)
|
|
28
|
+
.createQueryBuilder('orderInventory')
|
|
29
|
+
.select('COUNT(*)', 'total')
|
|
30
|
+
.addSelect(`SUM(CASE WHEN orderInventory.status IN (:...completedStatuses) THEN 1 ELSE 0 END)`, 'completed')
|
|
31
|
+
.where('orderInventory.release_good_id = :releaseGoodId', { releaseGoodId: foundReleaseGood.id })
|
|
32
|
+
.andWhere('orderInventory.domain_id = :domainId', { domainId: domain.id })
|
|
33
|
+
.setParameter('completedStatuses', tabName === 'QC'
|
|
34
|
+
? [sales_base_1.ORDER_INVENTORY_STATUS.LOADING, sales_base_1.ORDER_INVENTORY_STATUS.LOADED]
|
|
35
|
+
: tabName === 'LOADING'
|
|
36
|
+
? [sales_base_1.ORDER_INVENTORY_STATUS.LOADED]
|
|
37
|
+
: [sales_base_1.ORDER_INVENTORY_STATUS.LOADED])
|
|
38
|
+
.getRawOne();
|
|
39
|
+
foundReleaseGood['itemCounts'] = {
|
|
40
|
+
total: parseInt(counts.total) || 0,
|
|
41
|
+
pending: parseInt(counts.completed) || 0
|
|
42
|
+
};
|
|
43
|
+
releaseGoods.push(foundReleaseGood);
|
|
44
|
+
return releaseGoods;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const binLocation = await tx.getRepository(warehouse_base_1.Location).findOne({
|
|
48
|
+
where: { domain, name: orderNo }
|
|
49
|
+
});
|
|
50
|
+
if (binLocation) {
|
|
51
|
+
// First get all matching release goods
|
|
52
|
+
const orderInventoryByBin = await tx
|
|
53
|
+
.getRepository(sales_base_1.OrderInventory)
|
|
54
|
+
.createQueryBuilder('orderInventory')
|
|
55
|
+
.innerJoinAndSelect('orderInventory.releaseGood', 'releaseGood')
|
|
56
|
+
.innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
|
|
57
|
+
.innerJoinAndSelect('bizplace.domain', 'domain')
|
|
58
|
+
.leftJoinAndSelect('releaseGood.sortedBy', 'sortedBy')
|
|
59
|
+
.where('orderInventory.domain_id = :domainId', { domainId: domain.id })
|
|
60
|
+
.andWhere('orderInventory.status = :orderInventoryStatus', {
|
|
61
|
+
orderInventoryStatus: tabName === 'QC'
|
|
62
|
+
? sales_base_1.ORDER_INVENTORY_STATUS.SORTING
|
|
63
|
+
: tabName === 'LOADING'
|
|
64
|
+
? sales_base_1.ORDER_INVENTORY_STATUS.LOADING
|
|
65
|
+
: sales_base_1.ORDER_INVENTORY_STATUS.LOADED
|
|
66
|
+
})
|
|
67
|
+
.andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
|
|
68
|
+
.andWhere('releaseGood.status IN (:...status)', {
|
|
69
|
+
status: [sales_base_1.ORDER_STATUS.LOADING, sales_base_1.ORDER_STATUS.PROCESSING, sales_base_1.ORDER_STATUS.PARTIAL_PROCESSING]
|
|
70
|
+
})
|
|
71
|
+
.orderBy('releaseGood.createdAt', 'ASC')
|
|
72
|
+
.getMany();
|
|
73
|
+
// Get unique release goods
|
|
74
|
+
releaseGoods = orderInventoryByBin.reduce((acc, oi) => {
|
|
75
|
+
if (!acc.some(rg => rg.id === oi.releaseGood.id)) {
|
|
76
|
+
acc.push(oi.releaseGood);
|
|
77
|
+
}
|
|
78
|
+
return acc;
|
|
79
|
+
}, []);
|
|
80
|
+
// Get counts for each release good
|
|
81
|
+
for (const releaseGood of releaseGoods) {
|
|
82
|
+
const counts = await tx
|
|
83
|
+
.getRepository(sales_base_1.OrderInventory)
|
|
84
|
+
.createQueryBuilder('orderInventory')
|
|
85
|
+
.select('COUNT(*)', 'total')
|
|
86
|
+
.addSelect(`SUM(CASE WHEN orderInventory.status IN (:...completedStatuses) THEN 1 ELSE 0 END)`, 'completed')
|
|
87
|
+
.where('orderInventory.release_good_id = :releaseGoodId', { releaseGoodId: releaseGood.id })
|
|
88
|
+
.andWhere('orderInventory.domain_id = :domainId', { domainId: domain.id })
|
|
89
|
+
.setParameter('completedStatuses', tabName === 'LOADING'
|
|
90
|
+
? [sales_base_1.ORDER_INVENTORY_STATUS.LOADING]
|
|
91
|
+
: tabName === 'LOADED'
|
|
92
|
+
? [sales_base_1.ORDER_INVENTORY_STATUS.LOADED]
|
|
93
|
+
: [sales_base_1.ORDER_INVENTORY_STATUS.LOADED])
|
|
94
|
+
.getRawOne();
|
|
95
|
+
releaseGood['itemCounts'] = {
|
|
96
|
+
total: parseInt(counts.total) || 0,
|
|
97
|
+
pending: parseInt(counts.completed) || 0
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (releaseGoods.length > 0)
|
|
102
|
+
return releaseGoods;
|
|
103
|
+
else {
|
|
104
|
+
const errorMessage = tabName === 'QC'
|
|
105
|
+
? 'No items pending QC verification'
|
|
106
|
+
: tabName === 'LOADING'
|
|
107
|
+
? 'No items pending loading'
|
|
108
|
+
: 'No items pending dispatch';
|
|
109
|
+
throw new Error(errorMessage);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=find-loadable-release-good.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-loadable-release-good.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/find-loadable-release-good.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDeliveryOrders = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
+
const setting_base_1 = require("@things-factory/setting-base");
|
|
7
|
+
const SETTINGS = {
|
|
8
|
+
QC_SKU: 'qc-sku'
|
|
9
|
+
};
|
|
10
|
+
exports.getDeliveryOrders = {
|
|
11
|
+
async getDeliveryOrders(_, { releaseGoodNo }, context) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
const { domain, tx } = context.state;
|
|
14
|
+
const releaseGood = await (0, typeorm_1.getRepository)(sales_base_1.ReleaseGood).findOne({
|
|
15
|
+
where: { domain, name: releaseGoodNo },
|
|
16
|
+
relations: ['orderInventories']
|
|
17
|
+
});
|
|
18
|
+
if (!releaseGood) {
|
|
19
|
+
throw new Error(`ReleaseGood with name ${releaseGoodNo} not found`);
|
|
20
|
+
}
|
|
21
|
+
const complete_status = [sales_base_1.ORDER_INVENTORY_STATUS.LOADED, sales_base_1.ORDER_INVENTORY_STATUS.TERMINATED, sales_base_1.ORDER_INVENTORY_STATUS.RETURNING, sales_base_1.ORDER_INVENTORY_STATUS.MISSING];
|
|
22
|
+
const completable = (_a = releaseGood.orderInventories) === null || _a === void 0 ? void 0 : _a.every(oi => complete_status.includes(oi.status));
|
|
23
|
+
const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, typeorm_1.getRepository)(setting_base_1.Setting);
|
|
24
|
+
const qcSetting = await settingRepo.findOne({
|
|
25
|
+
where: { domain, name: SETTINGS.QC_SKU }
|
|
26
|
+
});
|
|
27
|
+
const useQcSku = ((_b = qcSetting === null || qcSetting === void 0 ? void 0 : qcSetting.value) === null || _b === void 0 ? void 0 : _b.toString().toLowerCase().trim()) === 'true';
|
|
28
|
+
let deliveryOrders = await (0, typeorm_1.getRepository)(sales_base_1.DeliveryOrder).find({
|
|
29
|
+
where: { releaseGood },
|
|
30
|
+
relations: ['orderInventories', 'orderInventories.inventory', 'orderInventories.product']
|
|
31
|
+
});
|
|
32
|
+
if (useQcSku) {
|
|
33
|
+
deliveryOrders = deliveryOrders
|
|
34
|
+
.map((do_) => {
|
|
35
|
+
const liveOIs = do_.orderInventories.filter((oi) => oi.status !== sales_base_1.ORDER_INVENTORY_STATUS.TERMINATED);
|
|
36
|
+
return Object.assign(Object.assign({}, do_), { orderInventories: liveOIs });
|
|
37
|
+
})
|
|
38
|
+
.filter((do_) => do_.orderInventories.length > 0);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
completable: completable,
|
|
42
|
+
deliveryOrders: deliveryOrders
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=get-delivery-orders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-delivery-orders.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/get-delivery-orders.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAGlE,2DAA+F;AAC/F,+DAAsD;AAEtD,MAAM,QAAQ,GAAG;IACf,MAAM,EAAE,QAAQ;CACjB,CAAA;AAEY,QAAA,iBAAiB,GAAG;IAC/B,KAAK,CAAC,iBAAiB,CAAC,CAAM,EAAE,EAAE,aAAa,EAAE,EAAE,OAAY;;QAC7D,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAA0C,OAAO,CAAC,KAAK,CAAA;QAE3E,MAAM,WAAW,GAAgB,MAAM,IAAA,uBAAa,EAAC,wBAAW,CAAC,CAAC,OAAO,CAAC;YACxE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;YACtC,SAAS,EAAE,CAAC,kBAAkB,CAAC;SAChC,CAAC,CAAA;QAEF,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,aAAa,YAAY,CAAC,CAAA;SACpE;QAED,MAAM,eAAe,GAAG,CAAC,mCAAsB,CAAC,MAAM,EAAE,mCAAsB,CAAC,UAAU,EAAE,mCAAsB,CAAC,SAAS,EAAE,mCAAsB,CAAC,OAAO,CAAC,CAAA;QAC5J,MAAM,WAAW,GAAG,MAAA,WAAW,CAAC,gBAAgB,0CAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;QAElG,MAAM,WAAW,GAAwB,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,sBAAO,CAAC,KAAI,IAAA,uBAAa,EAAC,sBAAO,CAAC,CAAA;QAC7F,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC;YAC1C,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE;SACzC,CAAC,CAAA;QAEF,MAAM,QAAQ,GACZ,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,0CAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,EAAE,MAAK,MAAM,CAAA;QAE9D,IAAI,cAAc,GAAoB,MAAM,IAAA,uBAAa,EAAC,0BAAa,CAAC,CAAC,IAAI,CAAC;YAC5E,KAAK,EAAE,EAAE,WAAW,EAAE;YACtB,SAAS,EAAE,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,0BAA0B,CAAC;SAC1F,CAAC,CAAA;QAEF,IAAI,QAAQ,EAAE;YACZ,cAAc,GAAG,cAAc;iBAC9B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,CACzC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,mCAAsB,CAAC,UAAU,CACxD,CAAA;gBACD,uCAAY,GAAG,KAAE,gBAAgB,EAAE,OAAO,IAAE;YAC9C,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;SAClD;QAED,OAAO;YACL,WAAW,EAAE,WAAW;YACxB,cAAc,EAAE,cAAc;SAC/B,CAAA;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLoadingTask = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
|
+
const worksheet_base_1 = require("@things-factory/worksheet-base");
|
|
7
|
+
const loading_worksheet_v2_1 = require("./loading-worksheet-v2");
|
|
8
|
+
exports.getLoadingTask = {
|
|
9
|
+
async getLoadingTask(_, {}, context) {
|
|
10
|
+
const { tx, domain, user } = context.state;
|
|
11
|
+
if (process.env.NODE_ENV == 'development') {
|
|
12
|
+
console.time('getLoadingTask');
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
// 1. Find assigned worksheet
|
|
16
|
+
let worksheet = await tx
|
|
17
|
+
.getRepository(worksheet_base_1.Worksheet)
|
|
18
|
+
.createQueryBuilder('ws')
|
|
19
|
+
.innerJoinAndSelect('ws.bizplace', 'biz')
|
|
20
|
+
.innerJoinAndSelect('ws.releaseGood', 'rg')
|
|
21
|
+
.innerJoin('ws.worksheetDetails', 'wsd')
|
|
22
|
+
.where({
|
|
23
|
+
domain,
|
|
24
|
+
type: worksheet_base_1.WORKSHEET_TYPE.LOADING,
|
|
25
|
+
sorter: user,
|
|
26
|
+
status: (0, typeorm_1.In)([worksheet_base_1.WORKSHEET_STATUS.EXECUTING, worksheet_base_1.WORKSHEET_STATUS.DEACTIVATED])
|
|
27
|
+
})
|
|
28
|
+
.andWhere('rg.status IN (:...status)', {
|
|
29
|
+
status: [sales_base_1.ORDER_STATUS.LOADING, sales_base_1.ORDER_STATUS.PROCESSING, sales_base_1.ORDER_STATUS.PARTIAL_PROCESSING]
|
|
30
|
+
})
|
|
31
|
+
.andWhere('wsd.status NOT IN (:...status)', { status: [worksheet_base_1.WORKSHEET_STATUS.DONE, worksheet_base_1.WORKSHEET_STATUS.DEACTIVATED] })
|
|
32
|
+
.getOne();
|
|
33
|
+
// 2. If no assigned worksheet, find and assign next available one
|
|
34
|
+
if (!worksheet) {
|
|
35
|
+
let updatedWorksheets = await (0, typeorm_1.getConnection)().transaction(async (tx2) => {
|
|
36
|
+
let x = await tx2.query(`
|
|
37
|
+
UPDATE worksheets ws SET
|
|
38
|
+
sorter_id = $2,
|
|
39
|
+
updated_at = NOW(),
|
|
40
|
+
updater_id = $2
|
|
41
|
+
FROM (
|
|
42
|
+
SELECT ws.id
|
|
43
|
+
FROM worksheets ws
|
|
44
|
+
INNER JOIN release_goods rg ON rg.id = ws.release_good_id
|
|
45
|
+
INNER JOIN worksheet_details wsd ON wsd.worksheet_id = ws.id
|
|
46
|
+
WHERE ws.domain_id = $1
|
|
47
|
+
AND ws.type = 'LOADING'
|
|
48
|
+
AND ws.status IN ('EXECUTING', 'DEACTIVATED')
|
|
49
|
+
AND ws.sorter_id IS NULL
|
|
50
|
+
AND rg.status IN ('LOADING', 'PROCESSING', 'PARTIAL_PROCESSING')
|
|
51
|
+
AND wsd.status NOT IN ('DONE', 'DEACTIVATED')
|
|
52
|
+
AND (rg.sorted_by_id = $2 OR rg.sorted_by_id IS NULL)
|
|
53
|
+
ORDER BY rg.created_at
|
|
54
|
+
LIMIT 1
|
|
55
|
+
) src
|
|
56
|
+
WHERE src.id = ws.id
|
|
57
|
+
RETURNING ws.id
|
|
58
|
+
`, [domain.id, user.id]);
|
|
59
|
+
return x[0];
|
|
60
|
+
});
|
|
61
|
+
if (updatedWorksheets.length == 0)
|
|
62
|
+
throw new Error('no suitable worksheet found');
|
|
63
|
+
//fetch updated ws
|
|
64
|
+
worksheet = await tx
|
|
65
|
+
.getRepository(worksheet_base_1.Worksheet)
|
|
66
|
+
.createQueryBuilder('ws')
|
|
67
|
+
.innerJoinAndSelect('ws.releaseGood', 'rg')
|
|
68
|
+
.where('ws.id = :id', { id: updatedWorksheets[0].id })
|
|
69
|
+
.andWhere('ws.sorter_id = :sorter', { sorter: user.id })
|
|
70
|
+
.getOne();
|
|
71
|
+
}
|
|
72
|
+
//validate worksheet is assigned to user
|
|
73
|
+
if (!worksheet)
|
|
74
|
+
throw new Error('Please try again by clicking the "Get Task" button');
|
|
75
|
+
if (worksheet.status == worksheet_base_1.WORKSHEET_STATUS.DEACTIVATED) {
|
|
76
|
+
await tx.getRepository(worksheet_base_1.Worksheet).update(worksheet.id, {
|
|
77
|
+
status: worksheet_base_1.WORKSHEET_STATUS.EXECUTING,
|
|
78
|
+
startedAt: new Date()
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//update ro sorter if its null
|
|
82
|
+
if ((worksheet === null || worksheet === void 0 ? void 0 : worksheet.releaseGood.sortedBy) == null) {
|
|
83
|
+
await tx.getRepository(sales_base_1.ReleaseGood).update(worksheet.releaseGood.id, {
|
|
84
|
+
sortedBy: user
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return loading_worksheet_v2_1.loadingWorksheetv2.loadingWorksheetv2(_, { orderNo: worksheet.releaseGood.name, filter: 'all' }, context);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error(error);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
if (process.env.NODE_ENV == 'development') {
|
|
95
|
+
console.timeEnd('getLoadingTask');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=get-loading-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-loading-task.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/get-loading-task.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Mutation = exports.Query = void 0;
|
|
4
|
+
const get_loading_task_1 = require("./get-loading-task");
|
|
5
|
+
const sort_item_1 = require("./sort-item");
|
|
6
|
+
const find_loadable_release_good_1 = require("./find-loadable-release-good");
|
|
7
|
+
const find_loadable_release_good_by_bin_1 = require("./find-loadable-release-good-by-bin");
|
|
8
|
+
const loading_worksheet_v2_1 = require("./loading-worksheet-v2");
|
|
9
|
+
const load_by_qty_1 = require("./load-by-qty");
|
|
10
|
+
const my_loading_assignment_status_1 = require("./my-loading-assignment-status");
|
|
11
|
+
const get_delivery_orders_1 = require("./get-delivery-orders");
|
|
12
|
+
const undo_load_1 = require("./undo-load");
|
|
13
|
+
const warehouse_return_1 = require("./warehouse-return");
|
|
14
|
+
const complete_load_1 = require("./complete-load");
|
|
15
|
+
exports.Query = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, find_loadable_release_good_1.findLoadableReleaseGood), find_loadable_release_good_by_bin_1.findLoadableReleaseGoodByBin), loading_worksheet_v2_1.loadingWorksheetv2), my_loading_assignment_status_1.myLoadingAssignmentStatus), get_delivery_orders_1.getDeliveryOrders);
|
|
16
|
+
exports.Mutation = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, get_loading_task_1.getLoadingTask), sort_item_1.sortItem), load_by_qty_1.loadByQty), undo_load_1.undoLoad), warehouse_return_1.warehouseReturn), complete_load_1.completeLoad);
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/index.ts"],"names":[],"mappings":";;;AAAA,yDAAmD;AACnD,2CAAsC;AACtC,6EAAsE;AACtE,2FAAkF;AAClF,iEAA2D;AAC3D,+CAAyC;AACzC,iFAA0E;AAC1E,+DAAyD;AACzD,2CAAsC;AACtC,yDAAoD;AACpD,mDAA8C;AAEjC,QAAA,KAAK,6EACb,oDAAuB,GACvB,gEAA4B,GAC5B,yCAAkB,GAClB,wDAAyB,GACzB,uCAAiB,EACrB;AAEY,QAAA,QAAQ,2FAChB,iCAAc,GACd,oBAAQ,GACR,uBAAS,GACT,oBAAQ,GACR,kCAAe,GACf,4BAAY,EAChB"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadByQty = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
const uuid_1 = require("uuid");
|
|
6
|
+
const sales_base_1 = require("@things-factory/sales-base");
|
|
7
|
+
const worksheet_base_1 = require("@things-factory/worksheet-base");
|
|
8
|
+
const warehouse_base_1 = require("@things-factory/warehouse-base");
|
|
9
|
+
exports.loadByQty = {
|
|
10
|
+
async loadByQty(_, { worksheetDetailPatch }, context) {
|
|
11
|
+
var _a;
|
|
12
|
+
try {
|
|
13
|
+
const { domain, user, tx } = context.state;
|
|
14
|
+
console.time('load');
|
|
15
|
+
const updatedWorksheetDetails = worksheetDetailPatch.orderInventories;
|
|
16
|
+
const releaseGoodNo = worksheetDetailPatch.releaseGoodNo;
|
|
17
|
+
const releaseGood = await tx.getRepository(sales_base_1.ReleaseGood).findOne({
|
|
18
|
+
where: { domain, name: releaseGoodNo },
|
|
19
|
+
relations: ['bizplace', 'orderInventories']
|
|
20
|
+
});
|
|
21
|
+
if (!releaseGood) {
|
|
22
|
+
throw new Error('Release good not found');
|
|
23
|
+
}
|
|
24
|
+
const worksheet = await tx.getRepository(worksheet_base_1.Worksheet).findOne({
|
|
25
|
+
where: {
|
|
26
|
+
domain,
|
|
27
|
+
releaseGood,
|
|
28
|
+
type: worksheet_base_1.WORKSHEET_TYPE.LOADING,
|
|
29
|
+
status: (0, typeorm_1.In)([
|
|
30
|
+
worksheet_base_1.WORKSHEET_STATUS.EXECUTING,
|
|
31
|
+
worksheet_base_1.WORKSHEET_STATUS.PARTIAL_EXECUTING
|
|
32
|
+
])
|
|
33
|
+
},
|
|
34
|
+
relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.domain']
|
|
35
|
+
});
|
|
36
|
+
if (!worksheet) {
|
|
37
|
+
throw new Error('No loading worksheet found for order ' + releaseGoodNo);
|
|
38
|
+
}
|
|
39
|
+
const oiIds = worksheet.worksheetDetails.map((wsd) => wsd.targetInventory.id);
|
|
40
|
+
const orderInventories = await tx.getRepository(sales_base_1.OrderInventory).find({
|
|
41
|
+
where: { id: (0, typeorm_1.In)(oiIds) },
|
|
42
|
+
relations: [
|
|
43
|
+
'inventory',
|
|
44
|
+
'domain',
|
|
45
|
+
'bizplace',
|
|
46
|
+
'releaseGood',
|
|
47
|
+
'product',
|
|
48
|
+
'productDetail',
|
|
49
|
+
'binLocation',
|
|
50
|
+
'orderProduct'
|
|
51
|
+
]
|
|
52
|
+
});
|
|
53
|
+
const updatedOrderInventories = [];
|
|
54
|
+
for (const wsd of updatedWorksheetDetails) {
|
|
55
|
+
//find the respective wsd and oi to update
|
|
56
|
+
const foundWorksheetDetail = worksheet.worksheetDetails.find(foundWsd => foundWsd.name === wsd.name);
|
|
57
|
+
let orderInventory = orderInventories.find(oi => oi.id === foundWorksheetDetail.targetInventory.id);
|
|
58
|
+
//validate oi status and do is not yet generated
|
|
59
|
+
if (orderInventory.status === sales_base_1.ORDER_INVENTORY_STATUS.LOADED || orderInventory.deliveryOrderId !== null) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// compare with sort qty
|
|
63
|
+
if (wsd.loadedQty > orderInventory.pickedQty) {
|
|
64
|
+
throw new Error('Load qty is more than picked qty for sku ' + wsd.productSku);
|
|
65
|
+
}
|
|
66
|
+
else if (wsd.loadedQty == orderInventory.releaseQty) {
|
|
67
|
+
//compare load qty to release, if order is partially picked, has to split oi
|
|
68
|
+
//update oi
|
|
69
|
+
orderInventory = Object.assign(Object.assign({}, orderInventory), { status: sales_base_1.ORDER_INVENTORY_STATUS.LOADED, updater: user, updatedAt: new Date() });
|
|
70
|
+
//update wsd
|
|
71
|
+
await tx.getRepository(worksheet_base_1.WorksheetDetail).update(foundWorksheetDetail.id, {
|
|
72
|
+
status: worksheet_base_1.WORKSHEET_STATUS.DONE,
|
|
73
|
+
updater: user,
|
|
74
|
+
updatedAt: new Date()
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
else if (wsd.loadedQty < orderInventory.releaseQty) {
|
|
78
|
+
//split oi
|
|
79
|
+
//create new order inventory with remaining quantity
|
|
80
|
+
const remainingQty = orderInventory.releaseQty - wsd.loadedQty;
|
|
81
|
+
const newOrderInventory = tx.getRepository(sales_base_1.OrderInventory).create(Object.assign(Object.assign({}, orderInventory), { id: undefined, name: sales_base_1.OrderNoGenerator.orderInventory(), releaseQty: remainingQty, releaseUomValue: (orderInventory.releaseUomValue / orderInventory.releaseQty) * remainingQty, pickedQty: orderInventory.pickedQty - wsd.loadedQty, sortedQty: orderInventory.sortedQty === 0 ? 0 : orderInventory.sortedQty - wsd.loadedQty, status: orderInventory.status, updater: user, updatedAt: new Date() }));
|
|
82
|
+
await tx.getRepository(sales_base_1.OrderInventory).save(newOrderInventory);
|
|
83
|
+
//create new worksheet detail for the new order inventory
|
|
84
|
+
const newWorksheetDetail = tx.getRepository(worksheet_base_1.WorksheetDetail).create(Object.assign(Object.assign({}, foundWorksheetDetail), { id: undefined, name: `LOAD-DETAIL-` + (0, uuid_1.v4)(), worksheet: worksheet, targetInventory: newOrderInventory, status: worksheet_base_1.WORKSHEET_STATUS.EXECUTING, updater: user, updatedAt: new Date() }));
|
|
85
|
+
await tx.getRepository(worksheet_base_1.WorksheetDetail).save(newWorksheetDetail);
|
|
86
|
+
//update current order inventory to loaded with loaded quantity
|
|
87
|
+
orderInventory = Object.assign(Object.assign({}, orderInventory), { status: sales_base_1.ORDER_INVENTORY_STATUS.LOADED, releaseUomValue: (orderInventory.releaseUomValue / orderInventory.releaseQty) * wsd.loadedQty, releaseQty: wsd.loadedQty, pickedQty: wsd.loadedQty, sortedQty: wsd.loadedQty, updater: user, updatedAt: new Date() });
|
|
88
|
+
//update current wsd
|
|
89
|
+
await tx.getRepository(worksheet_base_1.WorksheetDetail).update(foundWorksheetDetail.id, {
|
|
90
|
+
status: worksheet_base_1.WORKSHEET_STATUS.DONE,
|
|
91
|
+
updater: user,
|
|
92
|
+
updatedAt: new Date()
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const inventory = await tx.getRepository(warehouse_base_1.Inventory).findOne({
|
|
96
|
+
where: { id: orderInventory.inventoryId }
|
|
97
|
+
});
|
|
98
|
+
// generate inventory history
|
|
99
|
+
await (0, warehouse_base_1.generateInventoryHistory)(inventory, releaseGood, warehouse_base_1.INVENTORY_TRANSACTION_TYPE.LOADING, 0, 0, user, tx);
|
|
100
|
+
updatedOrderInventories.push(orderInventory);
|
|
101
|
+
}
|
|
102
|
+
if (updatedOrderInventories.length < 1) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
const deliveryOrder = {
|
|
107
|
+
truckNo: worksheetDetailPatch === null || worksheetDetailPatch === void 0 ? void 0 : worksheetDetailPatch.vehicleNo,
|
|
108
|
+
ownCollection: worksheetDetailPatch === null || worksheetDetailPatch === void 0 ? void 0 : worksheetDetailPatch.ownCollection,
|
|
109
|
+
totalPalletQty: worksheetDetailPatch === null || worksheetDetailPatch === void 0 ? void 0 : worksheetDetailPatch.palletQty,
|
|
110
|
+
contactPointRefId: ((_a = releaseGood.deliverTo) === null || _a === void 0 ? void 0 : _a.id) || null
|
|
111
|
+
};
|
|
112
|
+
const createdDo = await (0, sales_base_1.generateDeliveryOrder)(deliveryOrder, updatedOrderInventories, releaseGood.bizplace, releaseGood, domain, user, tx);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
throw e;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
//# sourceMappingURL=load-by-qty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-by-qty.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/outbound/load-by-qty.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,+BAAmC;AAInC,2DAQmC;AACnC,mEAA6G;AAC7G,mEAAgH;AAEnG,QAAA,SAAS,GAAG;IACvB,KAAK,CAAC,SAAS,CAAC,CAAM,EAAE,EAAE,oBAAoB,EAAE,EAAE,OAAY;;QAC5D,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;YAC7F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACpB,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,gBAAgB,CAAA;YACrE,MAAM,aAAa,GAAG,oBAAoB,CAAC,aAAa,CAAA;YACxD,MAAM,WAAW,GAAgB,MAAM,EAAE,CAAC,aAAa,CAAC,wBAAW,CAAC,CAAC,OAAO,CAAC;gBAC3E,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;gBACtC,SAAS,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;aAC5C,CAAC,CAAA;YAEF,IAAI,CAAC,WAAW,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;aAC1C;YAED,MAAM,SAAS,GAAc,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,OAAO,CAAC;gBACrE,KAAK,EAAE;oBACL,MAAM;oBACN,WAAW;oBACX,IAAI,EAAE,+BAAc,CAAC,OAAO;oBAC5B,MAAM,EAAE,IAAA,YAAE,EAAC;wBACT,iCAAgB,CAAC,SAAS;wBAC1B,iCAAgB,CAAC,iBAAiB;qBACnC,CAAC;iBACH;gBACD,SAAS,EAAE,CAAC,kBAAkB,EAAE,kCAAkC,EAAE,yBAAyB,CAAC;aAC/F,CAAC,CAAA;YAEF,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,aAAa,CAAC,CAAA;aACzE;YAED,MAAM,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;YAC9F,MAAM,gBAAgB,GAAqB,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,CAAC;gBACrF,KAAK,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,KAAK,CAAC,EAAE;gBACxB,SAAS,EAAE;oBACT,WAAW;oBACX,QAAQ;oBACR,UAAU;oBACV,aAAa;oBACb,SAAS;oBACT,eAAe;oBACf,aAAa;oBACb,cAAc;iBACf;aACF,CAAC,CAAA;YAEF,MAAM,uBAAuB,GAAqB,EAAE,CAAA;YACpD,KAAK,MAAM,GAAG,IAAI,uBAAuB,EAAE;gBACzC,0CAA0C;gBAC1C,MAAM,oBAAoB,GAAoB,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAC3E,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CACvC,CAAA;gBACD,IAAI,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,oBAAoB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;gBAEnG,gDAAgD;gBAChD,IAAI,cAAc,CAAC,MAAM,KAAK,mCAAsB,CAAC,MAAM,IAAI,cAAc,CAAC,eAAe,KAAK,IAAI,EAAE;oBACtG,SAAQ;iBACT;gBAED,wBAAwB;gBACxB,IAAI,GAAG,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE;oBAC5C,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,GAAG,CAAC,UAAU,CAAC,CAAA;iBAC9E;qBAAM,IAAI,GAAG,CAAC,SAAS,IAAI,cAAc,CAAC,UAAU,EAAE;oBACrD,4EAA4E;oBAE5E,WAAW;oBACX,cAAc,mCACT,cAAc,KACjB,MAAM,EAAE,mCAAsB,CAAC,MAAM,EACrC,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,IAAI,IAAI,EAAE,GACtB,CAAA;oBAED,YAAY;oBACZ,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAe,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE;wBACtE,MAAM,EAAE,iCAAgB,CAAC,IAAI;wBAC7B,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,IAAI,IAAI,EAAE;qBACtB,CAAC,CAAA;iBACH;qBAAM,IAAI,GAAG,CAAC,SAAS,GAAG,cAAc,CAAC,UAAU,EAAE;oBACpD,UAAU;oBACV,oDAAoD;oBACpD,MAAM,YAAY,GAAG,cAAc,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAA;oBAC9D,MAAM,iBAAiB,GAAG,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,MAAM,iCAC5D,cAAc,KACjB,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,6BAAgB,CAAC,cAAc,EAAE,EACvC,UAAU,EAAE,YAAY,EACxB,eAAe,EAAE,CAAC,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,YAAY,EAC5F,SAAS,EAAE,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,EACnD,SAAS,EAAE,cAAc,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,EACxF,MAAM,EAAE,cAAc,CAAC,MAAM,EAC7B,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,IAAI,IAAI,EAAE,IACrB,CAAA;oBAEF,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;oBAE9D,yDAAyD;oBACzD,MAAM,kBAAkB,GAAG,EAAE,CAAC,aAAa,CAAC,gCAAe,CAAC,CAAC,MAAM,iCAC9D,oBAAoB,KACvB,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,cAAc,GAAG,IAAA,SAAM,GAAE,EAC/B,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,iBAAiB,EAClC,MAAM,EAAE,iCAAgB,CAAC,SAAS,EAClC,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,IAAI,IAAI,EAAE,IACrB,CAAA;oBAEF,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAe,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;oBAEhE,+DAA+D;oBAC/D,cAAc,mCACT,cAAc,KACjB,MAAM,EAAE,mCAAsB,CAAC,MAAM,EACrC,eAAe,EAAE,CAAC,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,SAAS,EAC7F,UAAU,EAAE,GAAG,CAAC,SAAS,EACzB,SAAS,EAAE,GAAG,CAAC,SAAS,EACxB,SAAS,EAAE,GAAG,CAAC,SAAS,EACxB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,IAAI,IAAI,EAAE,GACtB,CAAA;oBAED,oBAAoB;oBACpB,MAAM,EAAE,CAAC,aAAa,CAAC,gCAAe,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE;wBACtE,MAAM,EAAE,iCAAgB,CAAC,IAAI;wBAC7B,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,IAAI,IAAI,EAAE;qBACtB,CAAC,CAAA;iBACH;gBAED,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,OAAO,CAAC;oBAC1D,KAAK,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,WAAW,EAAE;iBAC1C,CAAC,CAAA;gBAEF,6BAA6B;gBAC7B,MAAM,IAAA,yCAAwB,EAAC,SAAS,EAAE,WAAW,EAAE,2CAA0B,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;gBAC1G,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;aAC7C;YAED,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtC,OAAO,KAAK,CAAA;aACb;iBAAM;gBACL,MAAM,aAAa,GAAuB;oBACxC,OAAO,EAAE,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,SAAS;oBACxC,aAAa,EAAE,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,aAAa;oBAClD,cAAc,EAAE,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,SAAS;oBAC/C,iBAAiB,EAAE,CAAA,MAAA,WAAW,CAAC,SAAS,0CAAE,EAAE,KAAI,IAAI;iBACrD,CAAA;gBAED,MAAM,SAAS,GAAG,MAAM,IAAA,kCAAqB,EAC3C,aAAa,EACb,uBAAuB,EACvB,WAAW,CAAC,QAAQ,EACpB,WAAW,EACX,MAAM,EACN,IAAI,EACJ,EAAE,CACH,CAAA;gBACD,OAAO,IAAI,CAAA;aACZ;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAA;SACR;IACH,CAAC;CACF,CAAA"}
|