feat: import mostovik exchange sections
All checks were successful
CI/CD Pipeline / Run Tests (push) Successful in 6m12s
CI/CD Pipeline / Code Quality Checks (push) Successful in 6m19s
CI/CD Pipeline / Build Docker Images (push) Successful in 2m21s
CI/CD Pipeline / Push to Gitea Registry (push) Successful in 1s
CI/CD Pipeline / Deploy to Server (push) Successful in 1s

This commit is contained in:
2026-05-27 23:13:40 +02:00
parent bd8e1a8400
commit d1b0cd7945
49 changed files with 1831 additions and 319 deletions

View File

@@ -51,7 +51,21 @@ class RegisterImportServiceTest(TestCase):
self.registry = Register.objects.create(name="Реестр предприятий ОПК")
def test_sync_registry_memberships_creates_snapshot(self):
"""First upload creates organizations, upload fact and active periods."""
"""First upload links only organizations already loaded from Mostovik."""
Organization.objects.create(
name="АО Альфа",
inn="7707083893",
ogrn="1027700132195",
okpo="12345678",
kpp="770701001",
)
Organization.objects.create(
name="АО Бета",
inn="7707083894",
ogrn="1027700132196",
okpo="12345679",
kpp="770701002",
)
uploaded_file = build_registry_upload(
"registry.xlsx",
[
@@ -79,7 +93,9 @@ class RegisterImportServiceTest(TestCase):
)
self.assertEqual(result["rows_in_file"], 2)
self.assertEqual(result["organizations_created"], 2)
self.assertEqual(result["organizations_created"], 0)
self.assertEqual(result["organizations_updated"], 0)
self.assertEqual(result["organizations_skipped"], 0)
self.assertEqual(result["opened_periods"], 2)
self.assertEqual(Organization.objects.count(), 2)
self.assertEqual(RegisterUpload.objects.count(), 1)
@@ -88,8 +104,22 @@ class RegisterImportServiceTest(TestCase):
2,
)
def test_sync_registry_memberships_closes_missing_and_opens_new(self):
"""Next snapshot closes missing orgs and opens periods for new ones."""
def test_sync_registry_memberships_closes_missing_and_skips_unknown_orgs(self):
"""Next snapshot closes missing orgs but does not create unknown ones."""
Organization.objects.create(
name="АО Альфа",
inn="7707083893",
ogrn="1027700132195",
okpo="12345678",
kpp="770701001",
)
Organization.objects.create(
name="АО Бета",
inn="7707083894",
ogrn="1027700132196",
okpo="12345679",
kpp="770701002",
)
first_upload = build_registry_upload(
"registry-1.xlsx",
[
@@ -140,14 +170,14 @@ class RegisterImportServiceTest(TestCase):
actual_date=date(2026, 4, 1),
)
self.assertEqual(result["organizations_created"], 1)
self.assertEqual(result["organizations_updated"], 1)
self.assertEqual(result["opened_periods"], 1)
self.assertEqual(result["organizations_created"], 0)
self.assertEqual(result["organizations_updated"], 0)
self.assertEqual(result["organizations_skipped"], 1)
self.assertEqual(result["opened_periods"], 0)
self.assertEqual(result["closed_periods"], 1)
alpha = Organization.objects.get(inn="7707083893")
beta = Organization.objects.get(inn="7707083894")
gamma = Organization.objects.get(inn="7707083895")
alpha_period = RegistryMembershipPeriod.objects.get(
registry=self.registry,
@@ -158,15 +188,10 @@ class RegisterImportServiceTest(TestCase):
organization=beta,
ended_at__isnull=True,
)
gamma_period = RegistryMembershipPeriod.objects.get(
registry=self.registry,
organization=gamma,
ended_at__isnull=True,
)
self.assertEqual(alpha_period.ended_at, date(2026, 4, 1))
self.assertEqual(beta_period.started_at, date(2026, 3, 1))
self.assertEqual(gamma_period.started_at, date(2026, 4, 1))
self.assertFalse(Organization.objects.filter(inn="7707083895").exists())
beta.refresh_from_db()
self.assertEqual(beta.name, "АО Бета обновлённое")
self.assertEqual(beta.kpp, "770701099")
self.assertEqual(beta.name, "АО Бета")
self.assertEqual(beta.kpp, "770701002")