Bestimmen Sie mithilfe von Python voneinander abhängige Personen an Bord von Strukturen

Definition von voneinander abhängigen Personen nach Art. 105.1 der Abgabenordnung der Russischen Föderation ist für einen Unternehmensanwalt eine eher triviale Aufgabe.

Normalerweise ist dies unkompliziert und es scheint, warum gibt es etwas zu automatisieren?
Das ist richtig, wenn eine Gesellschaft zwei oder drei ihre Zusammensetzung von Diabetes vergleichen, gibt es kein Problem. Aber wenn es mehr als zwei Dutzend Unternehmen gibt und gleichzeitig verschiedene Unternehmen unterschiedliche Zusammensetzung der Direktoren haben, einschließlich der Anzahl der Mitglieder? Hier muss man schon Zeit verbringen. Wir werden es für ein Programm ausgeben, das für uns verbundene Parteien berechnet und die Zusammensetzung des Verwaltungsrates analysiert.

Einige Definitionen


Erinnern Sie sich daran, dass voneinander abhängige Personen durch eine Reihe von Kriterien bestimmt werden, die in der Abgabenordnung der Russischen Föderation festgelegt sind.

In Absatz 2 der Kunst. 105.1 der Abgabenordnung der Russischen Föderation listet die Gründe auf, aus denen Personen als voneinander abhängig anerkannt werden. Aus steuerlichen Gründen sind die verbundenen Parteien also:

  • Organisation, wenn eine Organisation direkt und (oder) indirekt an einer anderen Organisation teilnimmt und der Anteil dieser Beteiligung mehr als 25% beträgt;
  • eine Person und eine Organisation für den Fall, dass eine solche Person direkt und (oder) indirekt an einer solchen Organisation teilnimmt und der Anteil dieser Beteiligung mehr als 25% beträgt;
  • Organisationen, wenn dieselbe Person direkt und (oder) indirekt an diesen Organisationen teilnimmt und der Anteil dieser Beteiligung an jeder Organisation mehr als 25% beträgt;
  • Organisation und Person (einschließlich einer Person zusammen mit ihrem Ehepartner (Ehepartner), Eltern (einschließlich Adoptiveltern), Kindern (einschließlich Adoptiveltern), Voll- und Halbbrüdern und -schwestern, Erziehungsberechtigten (Treuhändern) und Gemeinden) mit Autorität durch Ernennung (Wahl) des alleinigen Exekutivorgans dieser Organisation oder durch Ernennung (Wahl) von mindestens 50% der Zusammensetzung des kollegialen Exekutivorgans oder des Verwaltungsrates (Aufsichtsrat) dieser Organisation;
  • Organisationen, deren alleinige Exekutivorgane oder mindestens 50% des kollegialen Exekutivorgans oder des Verwaltungsrates (Aufsichtsrat) durch Entscheidung derselben Person (Einzelperson zusammen mit ihrem Ehepartner), Eltern (einschließlich Adoptiveltern) ernannt oder gewählt werden ), Kinder (einschließlich Adoptivkinder), Voll- und Halbbrüder und -schwestern, Erziehungsberechtigte (Treuhänder) und Schutzzauber);
  • Organisationen, in denen mehr als 50% des kollegialen Exekutivorgans oder des Verwaltungsrates (Aufsichtsrat) dieselben Personen sind, zusammen mit ihrem Ehepartner, ihren Eltern (einschließlich Adoptiveltern), ihren Kindern (einschließlich Adoptiveltern) und vollwertigen Personen und Halbbrüder und Halbschwestern, Wächter (Treuhänder) und Schutzzauber;
  • Organisation und Person, die die Befugnisse ihres einzigen Exekutivorgans ausübt;
  • Organisationen, in denen die Befugnisse des alleinigen Exekutivorgans von derselben Person ausgeübt werden;
  • Organisationen und (oder) Einzelpersonen, falls der Anteil der direkten Beteiligung jeder vorherigen Person an jeder nachfolgenden Organisation mehr als 50% beträgt;
  • Einzelpersonen für den Fall, dass eine Person aufgrund ihrer offiziellen Position einer anderen Person untergeordnet ist;
  • eine Person, ihr Ehepartner, Eltern (einschließlich Adoptiveltern), Kinder (einschließlich Adoptiveltern), Halbbrüder und Halbbrüder und -schwestern, ein Vormund (Treuhänder) und eine Gemeinde.

Komm auf den Punkt


Es gibt viele Gründe, aber wir interessieren uns für einen davon, nämlich:
- Organisationen, in denen mehr als 50% des Verwaltungsrates dieselben Personen sind.

Diese Grundlage unterscheidet sich vom Rest darin, dass der Anwalt die gesamte Zusammensetzung des Verwaltungsrates in den Unternehmen mit einem Zufall von mehr als 50% seiner Mitglieder vergleichen muss.

Angenommen, die gesamte Zusammensetzung des Verwaltungsrates haben wir in einer Excel-Tabelle mit Verwaltungsräten und einer Gesamtzahl von Unternehmen über zwanzig zusammengefasst:



Wir brauchen unser Programm, das der Tabelle folgt, um Unternehmen auszuwählen, wenn mehr als 50% der Gesamtzahl der Vorstandsmitglieder zusammenfallen. Als nächstes sollte das Programm das Ergebnis entweder auf dem Bildschirm oder in einer Datei anzeigen.

Logischerweise führt das Programm den folgenden Algorithmus aus. Nachdem sie den Namen der Direktoren vom Benutzer erhalten hat, vergleicht sie diese mit jeder Excel-Zeile, die den Namen der Direktoren für jedes Unternehmen enthält. Das heißt, alle drei von fünf Benutzer-SD-Mitgliedern werden mit jeweils drei von fünf in der Tabelle verglichen. Zu diesem Zeitpunkt analysiert das Programm keine CDs mit mehr als 5 Mitgliedern und überspringt sie.

Die ersten Zeilen unseres Programms werden Standard sein:

import openpyxl wb = openpyxl.load_workbook('sd3.xlsx') sheet=wb.get_active_sheet() 

Hier haben wir das Modul für die Arbeit mit Excel importiert und die Datei mit unserer Tabelle geöffnet.

Jetzt bieten wir dem Benutzer an, fünf Mitglieder des Verwaltungsrates einzutragen, die das Programm in Gesellschaften zum Vergleich weiter suchen wird. Wir schreiben alle vom Benutzer eingegebenen Mitglieder des SD in die Variablen a, b, c, e, f:

 a=str(input("-1: ")) b=str(input("-2: ")) c=str(input("-3: ")) e=str(input("-4: ")) f=str(input("-5: ")) 

Dies ist ein wichtiger Punkt. Der Name des Direktors muss ohne Leerzeichen eingegeben werden, z. B. Ivanov I.I. In derselben Form müssen die vollständigen Namen der Direktoren in der Excel-Tabelle vorhanden sein.

Lassen Sie uns zwei Listen erstellen. Einer ist leer, der zweite ist bei Gesellschaften, in denen der Verwaltungsrat mehr als 5 Mitglieder hat:

 found = [] found2=[1,10,11,12,13,14,18,27,31,32] #    sd3,   5 . h = open('55555.txt','a') 

Wir haben auch die Textdatei 55555.txt geöffnet, in der wir die Ergebnisse speichern. Die Übereinstimmung des SD um mehr als 50% bedeutet, dass 3 von 5 Mitgliedern übereinstimmen müssen. Das Programm sollte also 10 Überprüfungen auf übereinstimmende Namen durchführen. So viele Kombinationen können für Diabetes von 5 Mitgliedern sein.

Um den gleichen Code nicht zehnmal zu schreiben, was das Programm umständlich macht, erstellen wir eine Funktion und rufen sie dann zehnmal auf (führen sie aus).

Ladefunktion


Hier ist unsere Funktion:

 def myfun(x,y,z): for rowOfCellObjects in sheet['B2':'L36']: for cellObj in rowOfCellObjects: if cellObj.value ==None: continue #print (cellObj) if cellObj.value == x: for cellObj in rowOfCellObjects: if cellObj.value == y: for cellObj in rowOfCellObjects: if cellObj.value == z: d = list(cellObj.coordinate) d[0]='A' dd=d[0]+d[1] if len(d)>2: dd=d[0]+d[1]+d[2] i=sheet[str(dd)].value #   ,   3-  q = cellObj.row if i not in found and i not in found2: found.append(i) h.write (str(i)+'\n') 

Lassen Sie uns den Code analysieren.

Wir legen die Grenzen der Tabelle für B2: L36 fest. Wenn die Zelle leer ist, wird sie übersprungen.

Als nächstes berücksichtigt die Funktion den Namen des 1. Direktors. Wenn der Name in der Zelle dem vom Benutzer eingegebenen Namen entspricht, geht die Funktion weiter und vergleicht den 2. und dann den 3. Direktor. Am Ende bildet die Funktion eine Liste von Unternehmen und schreibt jedes von ihnen in die Datei 55555.txt.
Nachdem eine Funktion geschrieben wurde, wird sie vom Programm nicht automatisch ausgeführt.

Es muss heißen:

 myfun(a,b,c) 

Aber hier haben wir die Funktion nur für die ersten drei Direktoren aufgerufen. Für die restlichen Kombinationen muss der Funktionsaufruf wiederholt werden:

 myfun(a,b,e) myfun(a,b,f) myfun(a,e,f) myfun(a,c,e) myfun(a,c,f) myfun(b,c,e) myfun(b,c,f) myfun(b,e,f) myfun(c,e,f) h.close() 

Wir starten


Führen Sie das Programm aus und geben Sie im Python-Interpreter-Fenster 5 Namen von Direktoren ein
diejenigen, die mindestens einmal in der Excel-Tabelle gefunden werden:



Schauen Sie sich nach der Ausführung des Programms die Datei an, die das Programm erstellen wird.
55555.txt:



In der Datei - Nummern der Unternehmen, in denen Übereinstimmungen gefunden wurden. Es ist zu beachten, dass dies Gesellschaftsnummern aus Spalte A sind, keine Excel-Zeilennummern:



Das Programm ist fertig, aber es muss beachtet werden, dass es die Zusammensetzung des Vorstands mit Mitgliedern von mehr als 5 Personen nicht analysiert!

Laden Sie hier den Programmcode herunter.

Laden Sie hier die Testkarte herunter.

PS: Alle Übereinstimmungen in der Tabelle mit echten Persönlichkeiten sind zufällig.

Source: https://habr.com/ru/post/de462643/


All Articles