diff --git a/apps/sage_intacct/utils.py b/apps/sage_intacct/utils.py index bbccdb72..efc50dc4 100644 --- a/apps/sage_intacct/utils.py +++ b/apps/sage_intacct/utils.py @@ -1180,6 +1180,8 @@ def get_or_create_vendor(self, vendor_name: str, email: str = None, create: bool try: if create: vendor_id = self.sanitize_vendor_name(vendor_name) + if not vendor_id: + return None if len(vendor_id) > 20: vendor_id = vendor_id[:17] + str(random.randint(100, 999)) created_vendor = self.post_vendor(vendor_id, vendor_name, email) diff --git a/tests/test_sageintacct/test_utils.py b/tests/test_sageintacct/test_utils.py index c416f506..312c49a5 100644 --- a/tests/test_sageintacct/test_utils.py +++ b/tests/test_sageintacct/test_utils.py @@ -1398,6 +1398,24 @@ def test_get_or_create_vendor(mocker, db): assert vendor.destination_id == 'non exiSting VENDOR iN intacct UsE aLl CaSeS' +def test_get_or_create_vendor_with_none_sanitized_name(mocker, db): + """ + Test get or create vendor returns None when sanitize_vendor_name returns None + """ + workspace_id = 1 + mocker.patch( + 'sageintacctsdk.apis.Vendors.get', + return_value={} + ) + + intacct_credentials = SageIntacctCredential.objects.get(workspace_id=workspace_id) + sage_intacct_connection = SageIntacctConnector(credentials_object=intacct_credentials, workspace_id=workspace_id) + + # Test with vendor name that becomes empty after sanitization (only special chars) + vendor = sage_intacct_connection.get_or_create_vendor('!@#$%^&*()', create=True) + assert vendor is None + + def test_get_or_create_employee(mocker, db): """ Test get or create employee