Untitled
unknown
ruby
a year ago
4.2 kB
21
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}
endEditor is loading...
Leave a Comment