Untitled
unknown
ruby
a year ago
4.2 kB
17
Indexable
Instrumentation::Instrumentation.execute_with_metrics('POST_warehouses_warehouse_id_transfer_list_list_id_confirm_and_close_tote') do outbound_request_status = false transfer_list_status = ResourceLock.hold!('transfer_list', {:transfer_list => @params.list_id}) do BaseModel.transaction do # tote_label was added as a new parameter in the payload to handle empty tote close tote_label = @input[:tote_label] transfer_list_service = BusinessServiceFactory.get_transfer_list_service(@params.warehouse_id) transfer_list = transfer_list_service.get_vo_by_display_id(@params.list_id) movement_request_service = BusinessServiceFactory.get_movement_request_service(@params.warehouse_id) movement_request_vo = movement_request_service.get_vos_by_ids([transfer_list.movement_request_id]).first is_flolite_v2_enabled = transfer_list_service.is_flolite_v2_enabled( transfer_list.assigned_to , @params.warehouse_id ) if is_flolite_v2_enabled && movement_request_vo.group_type == MovementRequestGroupTypeEnum::CUSTOMER_OUTBOUND raise SupplyChainError.new(:message => "Customer Outbound Picking is enabled on Flolite 2.0. Pls refresh your app") end if WarehouseService.settings.kalash_warehouses.include?(@params.warehouse_id) && movement_request_vo.group_type == MovementRequestGroupTypeEnum::MERGE_AREA_TRANSFER raise SupplyChainError.new(:message => "Merge Area Picking is enabled on Flolite 2.0. Please follow the correct SOP") end outbound_request_status = if @input[:pickable_items].present? transfer_list_service.batch_pick(@params.list_id, @input) else false end unless @input[:lost_items].blank? logger.info "KLIWIT | confirm_and_close_tote api controller | Calling transfer_list_service.mark_lost method" transfer_list_service.mark_lost(@params.list_id, @input, tote_label) end if tote_label.present? tote_handler_input = ToteHandlerInput.new(@params.warehouse_id, tote_label, ToteEntityTypeEnum::TRANSFER_LIST_ID, @params.list_id, nil, nil, nil) ToteHandler.new.close_for_transfer_list(tote_handler_input) else is_iwit_containerisation_enabled_TL = false if movement_request_vo.group_type == MovementRequestGroupTypeEnum::OUTBOUND_REQUEST outbound_request_service = BusinessServiceFactory.get_outbound_request_service(@params.warehouse_id) outbound_request = outbound_request_service.get_vos_by_ids([movement_request_vo.group_id]).first is_iwit_containerisation_enabled_TL = outbound_request_service.is_iwit_containerisation_enabled_process?(@params.warehouse_id, outbound_request.outbound_request_type, outbound_request.id) end pickable_items_totes = @input[:pickable_items].present? ? @input[:pickable_items].collect{|item| item[:tote]}.compact.uniq : [] if pickable_items_totes.present? and pickable_items_totes.size > 1 logger.info "CLOSE_TOTE_BAD_INPUT : close tote for #{@params.list_id} : there are more than one totes for pickable items : #{pickable_items_totes.join(',')} " end transfer_list_service.close_tote(@params.list_id, {:is_iwit_containerisation_enabled_TL => is_iwit_containerisation_enabled_TL, :pickable_items_totes => pickable_items_totes}) end transfer_list_service.transfer_list_status(@params.list_id) end end return {:status => transfer_list_status, :outbound_request_cancelled => outbound_request_status} end
Editor is loading...
Leave a Comment