diff --git a/connect/cli/plugins/product/export.py b/connect/cli/plugins/product/export.py index 2d34fa90..7563ee3b 100644 --- a/connect/cli/plugins/product/export.py +++ b/connect/cli/plugins/product/export.py @@ -402,7 +402,7 @@ def _fill_item_row(ws, row_idx, item): ws.cell(row_idx, 5, value=item['description']) ws.cell(row_idx, 6, value=item['type']) ws.cell(row_idx, 7, value=item['precision']) - ws.cell(row_idx, 8, value=item['unit']['id']) + ws.cell(row_idx, 8, value=item['unit']['name']) period = item.get('period', 'monthly') if period.startswith('years_'): period = f'{period.rsplit("_")[-1]} years' diff --git a/connect/cli/plugins/product/sync/items.py b/connect/cli/plugins/product/sync/items.py index d062e64b..a012f5a1 100644 --- a/connect/cli/plugins/product/sync/items.py +++ b/connect/cli/plugins/product/sync/items.py @@ -32,7 +32,15 @@ class ItemSynchronizer(ProductSynchronizer): def __init__(self, client, progress, stats): - self._units = list(client.ns('settings').units.all()) + self._units = [] + self._shared_units = [] + + for unit in client.ns('settings').units.all(): + if 'owner' in unit: + self._units.append(unit) + else: + self._shared_units.append(unit) + self._mstats = stats['Items'] super().__init__(client, progress) @@ -274,6 +282,12 @@ def _get_or_create_unit(self, data): if unit['type'] == data.type and unit['description'] == data.unit: return unit['id'] + for unit in self._shared_units: + if unit['id'] == data.unit: + return unit['id'] + if unit['type'] == data.type and unit['description'] == data.unit: + return unit['id'] + created = create_unit( self._client, { @@ -306,6 +320,7 @@ def _get_item_payload(self, data): 'period': self._get_billing_period(data), 'ui': {'visibility': True}, } + print(payload) if data.type == 'reservation': payload.update(commitment) diff --git a/tests/fixtures/comparation_product.xlsx b/tests/fixtures/comparation_product.xlsx index a5c09417..a497a258 100644 Binary files a/tests/fixtures/comparation_product.xlsx and b/tests/fixtures/comparation_product.xlsx differ diff --git a/tests/fixtures/units_response.json b/tests/fixtures/units_response.json index 7076ff0d..cb762a55 100644 --- a/tests/fixtures/units_response.json +++ b/tests/fixtures/units_response.json @@ -250,5 +250,13 @@ "description": "Websites", "type": "reservation", "cumulative": false + }, + { + "id": "CU-000-000", + "unit": "unit", + "description": "Units", + "type": "reservation", + "cumulative": false, + "owner": {"id": "VA-000-000"} } ] \ No newline at end of file