fix: resolve parser organizations from directory only
This commit is contained in:
@@ -35,6 +35,10 @@ from tests.apps.parsers.factories import (
|
||||
ManufacturerRecordFactory,
|
||||
ParserLoadLogFactory,
|
||||
)
|
||||
from tests.apps.parsers.organization_helpers import (
|
||||
create_directory_organization,
|
||||
get_or_create_directory_organization,
|
||||
)
|
||||
from tests.apps.user.factories import UserFactory
|
||||
from tests.utils.fixtures import fake
|
||||
|
||||
@@ -46,7 +50,7 @@ def _digits(length: int) -> str:
|
||||
def RegisterOrganizationFactory(**kwargs) -> Organization:
|
||||
kwargs.setdefault("name", kwargs.get("pn_name") or fake.company())
|
||||
kwargs.setdefault("okpo", kwargs.get("mn_okpo") or _digits(8))
|
||||
return Organization.objects.create(**kwargs)
|
||||
return create_directory_organization(**kwargs)
|
||||
|
||||
|
||||
def RegistryMembershipPeriodFactory(
|
||||
@@ -113,7 +117,7 @@ def _save_source_record(
|
||||
if ogrn:
|
||||
query["ogrn"] = ogrn
|
||||
if not Organization.objects.filter(**query).exists():
|
||||
Organization.objects.create(
|
||||
create_directory_organization(
|
||||
name=organization_name,
|
||||
inn=inn,
|
||||
ogrn=ogrn,
|
||||
@@ -122,7 +126,7 @@ def _save_source_record(
|
||||
rn_key = organization_name or title or external_id
|
||||
rn = str(int(hashlib.sha256(rn_key.encode()).hexdigest()[:12], 16) % 10**12)
|
||||
payload.setdefault("rn", rn)
|
||||
Organization.objects.get_or_create(
|
||||
get_or_create_directory_organization(
|
||||
rn=rn,
|
||||
defaults={"name": organization_name},
|
||||
)
|
||||
@@ -281,7 +285,7 @@ class ParsersViewSetTest(APITestCase):
|
||||
def test_procurements_v1_enriches_missing_customer_fields_from_canonical_organization(
|
||||
self,
|
||||
):
|
||||
organization = Organization.objects.create(
|
||||
organization = create_directory_organization(
|
||||
name='ООО "КАНОНИЧЕСКИЙ ЗАКАЗЧИК"',
|
||||
inn="7701000101",
|
||||
kpp="770101001",
|
||||
@@ -323,13 +327,13 @@ class ParsersViewSetTest(APITestCase):
|
||||
self.assertEqual(detail_row["customer_ogrn"], organization.ogrn)
|
||||
|
||||
def test_procurements_v1_uses_customer_kpp_for_branch_enrichment(self):
|
||||
head = Organization.objects.create(
|
||||
head = create_directory_organization(
|
||||
name='ООО "КАНОНИЧЕСКИЙ ЗАКАЗЧИК"',
|
||||
inn="7701000101",
|
||||
kpp="770101001",
|
||||
ogrn="1027700000001",
|
||||
)
|
||||
branch = Organization.objects.create(
|
||||
branch = create_directory_organization(
|
||||
name='ООО "КАНОНИЧЕСКИЙ ЗАКАЗЧИК" ФИЛИАЛ',
|
||||
inn=head.inn,
|
||||
kpp="780101001",
|
||||
@@ -361,13 +365,13 @@ class ParsersViewSetTest(APITestCase):
|
||||
self.assertEqual(response.data["customer_kpp"], branch.kpp)
|
||||
|
||||
def test_procurements_v1_does_not_guess_branch_when_customer_kpp_is_missing(self):
|
||||
head = Organization.objects.create(
|
||||
head = create_directory_organization(
|
||||
name='ООО "КАНОНИЧЕСКИЙ ЗАКАЗЧИК"',
|
||||
inn="7701000101",
|
||||
kpp="770101001",
|
||||
ogrn="1027700000001",
|
||||
)
|
||||
Organization.objects.create(
|
||||
create_directory_organization(
|
||||
name='ООО "КАНОНИЧЕСКИЙ ЗАКАЗЧИК" ФИЛИАЛ',
|
||||
inn=head.inn,
|
||||
kpp="780101001",
|
||||
@@ -479,7 +483,7 @@ class ParsersViewSetTest(APITestCase):
|
||||
def test_parser_results_v1_enrich_missing_organization_fields_without_contract_change(
|
||||
self,
|
||||
):
|
||||
organization = Organization.objects.create(
|
||||
organization = create_directory_organization(
|
||||
name='ООО "КАНОНИЧЕСКИЙ ПОСТАВЩИК"',
|
||||
inn="7701000102",
|
||||
kpp="770102001",
|
||||
@@ -1199,7 +1203,7 @@ class ParsersViewSetTest(APITestCase):
|
||||
failed_dir = os.path.join(tmpdir, "failed")
|
||||
content = _build_fns_excel_bytes()
|
||||
ogrn = _digits(13)
|
||||
Organization.objects.create(name=f"ФНС {ogrn}", ogrn=ogrn)
|
||||
create_directory_organization(name=f"ФНС {ogrn}", ogrn=ogrn)
|
||||
upload = SimpleUploadedFile(
|
||||
f"fin_{_digits(5)}_{ogrn}.xlsx",
|
||||
content,
|
||||
@@ -1226,7 +1230,7 @@ class ParsersViewSetTest(APITestCase):
|
||||
failed_dir = os.path.join(tmpdir, "failed")
|
||||
content = _build_fns_excel_bytes()
|
||||
ogrn = _digits(13)
|
||||
Organization.objects.create(name=f"ФНС {ogrn}", ogrn=ogrn)
|
||||
create_directory_organization(name=f"ФНС {ogrn}", ogrn=ogrn)
|
||||
upload = SimpleUploadedFile(
|
||||
f"fin_{_digits(5)}_{ogrn}.xlsx",
|
||||
content,
|
||||
@@ -1250,7 +1254,7 @@ class ParsersViewSetTest(APITestCase):
|
||||
self.client.force_authenticate(self.admin)
|
||||
external_id = _digits(5)
|
||||
ogrn = _digits(13)
|
||||
Organization.objects.create(name=f"ФНС {ogrn}", ogrn=ogrn)
|
||||
create_directory_organization(name=f"ФНС {ogrn}", ogrn=ogrn)
|
||||
filename = f"fin_{external_id}_{ogrn}.xlsx"
|
||||
upload = SimpleUploadedFile(
|
||||
"fns_reports.zip",
|
||||
|
||||
Reference in New Issue
Block a user