diff --git a/commerce_coordinator/apps/commercetools/clients.py b/commerce_coordinator/apps/commercetools/clients.py index e63df58d..a76a9a29 100644 --- a/commerce_coordinator/apps/commercetools/clients.py +++ b/commerce_coordinator/apps/commercetools/clients.py @@ -620,7 +620,7 @@ def update_line_item_transition_state_on_fulfillment( handle_commercetools_error(err, f"Unable to update LineItemState of order {order_id}", True) return None - def update_all_line_items_transition_state_on_fulfillment( + def update_line_items_transition_state( self, order_id: str, order_version: int, @@ -644,8 +644,10 @@ def update_all_line_items_transition_state_on_fulfillment( from_state_key = self.get_state_by_id(from_state_id).key logger.info( - f"[CommercetoolsAPIClient] - Transitioning all line item states for order with ID {order_id} " - f"from {from_state_key} to {new_state_key}" + f"[CommercetoolsAPIClient] - Transitioning line item states for order ID '{order_id}'. " + f"From State: '{from_state_key}' " + f"To State: '{new_state_key}' " + f"Line Item IDs: {', '.join(item.id for item in line_items)}" ) try: @@ -660,13 +662,11 @@ def update_all_line_items_transition_state_on_fulfillment( for item in line_items ] - updated_fulfillment_line_item_order = self.base_client.orders.update_by_id( + return self.base_client.orders.update_by_id( id=order_id, version=order_version, actions=actions, ) - - return updated_fulfillment_line_item_order else: logger.info( f"All line items already have the correct state {new_state_key}. " @@ -675,7 +675,12 @@ def update_all_line_items_transition_state_on_fulfillment( return self.get_order_by_id(order_id) except CommercetoolsError as err: # Logs & ignores version conflict errors due to duplicate Commercetools messages - handle_commercetools_error(err, f"Unable to update all LineItemStates of order {order_id}", True) + handle_commercetools_error( + err, + f"Failed to update LineItemStates for order ID '{order_id}'. " + f"Line Item IDs: {', '.join(item.id for item in line_items)}", + True + ) return None def retire_customer_anonymize_fields( diff --git a/commerce_coordinator/apps/commercetools/sub_messages/tasks.py b/commerce_coordinator/apps/commercetools/sub_messages/tasks.py index bf19aed0..41a821f6 100644 --- a/commerce_coordinator/apps/commercetools/sub_messages/tasks.py +++ b/commerce_coordinator/apps/commercetools/sub_messages/tasks.py @@ -101,7 +101,7 @@ def fulfill_order_placed_message_signal_task( logger.info( f"[CT-{tag}] Transitioning all line items for order {order.id} to {TwoUKeys.PROCESSING_FULFILMENT_STATE}" ) - updated_order = client.update_all_line_items_transition_state_on_fulfillment( + updated_order = client.update_line_items_transition_state( order_id=order.id, order_version=order.version, line_items=get_edx_items(order), diff --git a/commerce_coordinator/apps/commercetools/tests/sub_messages/test_tasks.py b/commerce_coordinator/apps/commercetools/tests/sub_messages/test_tasks.py index a0594b4a..4ca0ebaf 100644 --- a/commerce_coordinator/apps/commercetools/tests/sub_messages/test_tasks.py +++ b/commerce_coordinator/apps/commercetools/tests/sub_messages/test_tasks.py @@ -87,7 +87,7 @@ def __init__(self, *args, **kwargs): self.get_state_by_key = self.state_by_key_mock self.get_payment_by_key = self.payment_mock self.update_line_item_transition_state_on_fulfillment = self.updated_line_item_mock - self.update_all_line_items_transition_state_on_fulfillment = self.updated_line_item_mock + self.update_line_items_transition_state = self.updated_line_item_mock self.create_return_for_order = self.create_return_item_mock self.create_return_payment_transaction = self.payment_mock self.update_return_payment_state_after_successful_refund = self.order_mock diff --git a/commerce_coordinator/apps/commercetools/tests/test_clients.py b/commerce_coordinator/apps/commercetools/tests/test_clients.py index c3983e52..300f7eed 100644 --- a/commerce_coordinator/apps/commercetools/tests/test_clients.py +++ b/commerce_coordinator/apps/commercetools/tests/test_clients.py @@ -717,7 +717,7 @@ def test_successful_order_all_line_items_state_update(self, mock_state_by_id): status_code=200 ) - result = self.client_set.client.update_all_line_items_transition_state_on_fulfillment( + result = self.client_set.client.update_line_items_transition_state( mock_order.id, mock_order.version, mock_order.line_items, @@ -754,7 +754,7 @@ def test_update_all_line_items_state_exception(self, mock_state_by_id): ) with patch('commerce_coordinator.apps.commercetools.clients.logging.Logger.info') as log_mock: - self.client_set.client.update_all_line_items_transition_state_on_fulfillment( + self.client_set.client.update_line_items_transition_state( mock_order.id, mock_order.version, mock_order.line_items, @@ -763,8 +763,8 @@ def test_update_all_line_items_state_exception(self, mock_state_by_id): ) expected_message = ( - f"[CommercetoolsError] Unable to update all LineItemStates " - f"of order mock_order_id " + f"[CommercetoolsError] Failed to update LineItemStates " + f"for order ID 'mock_order_id'. Line Item IDs: {mock_order.line_items[0].id} " f"- Correlation ID: {mock_error_response['correlation_id']}, " f"Details: {mock_error_response['errors']}" )