diff --git a/src/asquare.py b/src/asquare.py index 7118e2c..1a36d8c 100644 --- a/src/asquare.py +++ b/src/asquare.py @@ -84,10 +84,7 @@ async def get_item_by_id(item_id: str) -> dict: return { "id": obj["id"], - "name": item_data.get("name", ""), - "description": item_data.get("description", ""), - "category_id": item_data.get("category_id"), - "variations": item_data.get("variations", []), + "item_data": item_data, # Return the entire item_data object "updated_at": obj.get("updated_at"), "version": obj.get("version"), } @@ -309,18 +306,21 @@ async def update_itm(item_id: str, lego_set: dict, item_data: dict = None): if variation_version is not None: variation_obj["version"] = variation_version - # Build item object - omit location fields to preserve existing settings - # Square will keep the current location configuration if we don't specify it + # Get the full existing item_data and modify only what we need + # This preserves ALL existing fields (location settings, tax, etc) + existing_item_data = fresh_item.get("item_data", {}) + + # Update only the fields we want to change + existing_item_data["name"] = pw_name + existing_item_data["description"] = f"{set_name} - {set_theme}" + existing_item_data["category_id"] = category_id + existing_item_data["variations"] = [variation_obj] + item_obj = { "type": "ITEM", "id": item_id, "version": current_version, - "item_data": { - "name": pw_name, - "description": f"{set_name} - {set_theme}", - "category_id": category_id, - "variations": [variation_obj], - }, + "item_data": existing_item_data, } upsert_body = {