Déterminer les individus interdépendants à bord des structures à l'aide de python

Définition des personnes interdépendantes selon l'art. 105.1 du Code des impôts de la Fédération de Russie est une tâche plutôt banale pour un juriste d'entreprise.

Habituellement, c'est simple et il semble, pourquoi y a-t-il quelque chose à automatiser?
C'est vrai, si une société deux ou trois compare leur composition du diabète, il n'y a pas de problème. Mais, s'il y a plus de deux douzaines de sociétés et en même temps différentes sociétés ont une composition d'administrateurs différente, y compris le nombre de membres? Ici, vous devez déjà passer du temps. Nous le consacrerons à un programme qui calculera pour nous les parties liées, analysant la composition du conseil d'administration.

Quelques définitions


Rappelons que les personnes interdépendantes sont déterminées par un certain nombre de critères énoncés dans le Code fiscal de la Fédération de Russie.

Au paragraphe 2 de l'art. 105.1 du Code fiscal de la Fédération de Russie énumère les motifs pour lesquels les individus sont reconnus comme interdépendants. Ainsi, à des fins fiscales, les parties liées sont:

  • organisation, si une organisation participe directement et (ou) indirectement à une autre organisation et que la proportion de cette participation est supérieure à 25%;
  • un individu et une organisation dans le cas où un tel individu participe directement et (ou) indirectement à une telle organisation et que la proportion de cette participation est supérieure à 25%;
  • les organisations, si la même personne participe directement et (ou) indirectement à ces organisations et si la proportion de cette participation dans chaque organisation est supérieure à 25%;
  • organisation et personne (y compris une personne avec son conjoint (conjoint), parents (y compris les parents adoptifs), enfants (y compris les adoptés), frères et sœurs et frères et sœurs, tuteurs (curateurs) et pupilles), avec autorité par nomination (élection) de l'organe exécutif unique de cette organisation ou par nomination (élection) d'au moins 50% de la composition de l'organe exécutif collégial ou du conseil d'administration (conseil de surveillance) de cette organisation;
  • les organisations dont les seuls organes exécutifs ou au moins 50% de l'organe exécutif collégial ou du conseil d'administration (conseil de surveillance) sont nommés ou élus par décision de la même personne (individu avec son conjoint), parents (y compris parents adoptifs) ), les enfants (y compris les adoptés), les frères et sœurs et demi-frères et tuteurs légaux, les tuteurs et les pupilles);
  • organisations dans lesquelles plus de 50% de l'organe exécutif collégial ou du conseil d'administration (conseil de surveillance) sont les mêmes personnes avec leur conjoint, leurs parents (y compris les parents adoptifs), les enfants (y compris les adoptés), à part entière et demi-frères et sœurs, tuteurs (curateurs) et pupilles;
  • organisation et personne exerçant les pouvoirs de son unique organe exécutif;
  • les organisations dans lesquelles les pouvoirs du seul organe exécutif sont exercés par la même personne;
  • organisations et (ou) individus dans le cas où la part de la participation directe de chaque personne précédente dans chaque organisation suivante est supérieure à 50%;
  • les individus dans le cas où un individu est subordonné à un autre par sa position officielle;
  • un individu, son conjoint, ses parents (y compris les parents adoptifs), ses enfants (y compris les adoptés), ses demi-frères et demi-frères et sœurs, un tuteur (curateur) et un pupille.

Aller droit au but


Il existe de nombreuses raisons, mais nous nous intéressons à l'une d'entre elles, à savoir:
- les organisations dont plus de 50% des membres du conseil d'administration sont les mêmes personnes.

Cette base diffère du reste en ce que l'avocat doit comparer toute la composition du conseil d'administration dans les entreprises avec une coïncidence de plus de 50% de leurs membres.

Supposons toute la composition du conseil d'administration que nous avons résumée dans un tableau Excel avec des conseils d'administration et un nombre total de sociétés de plus de vingt:



Nous avons besoin de notre programme, selon le tableau, pour sélectionner les entreprises s'il y a une coïncidence de plus de 50% du nombre total de membres du conseil d'administration. Ensuite, le programme devrait afficher le résultat à l'écran ou dans un fichier.

Logiquement, le programme exécutera l'algorithme suivant. Ayant reçu le nom complet des administrateurs de l'utilisateur, elle les comparera avec chaque ligne d'Excel, qui contient les noms complets des administrateurs de chaque entreprise. C'est-à-dire que tous les trois membres SD sur 5 utilisateurs sont comparés à tous les 3 sur 5 dans le tableau. À ce stade, le programme n'analysera pas les CD de plus de 5 membres, en les ignorant.

Les premières lignes de notre programme seront standard:

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

Ici, nous avons importé le module pour travailler avec Excel et ouvert le fichier avec notre table.

Nous allons maintenant proposer à l'utilisateur de saisir cinq membres du conseil d'administration, que le programme cherchera plus avant dans les sociétés pour comparaison. Nous écrivons tous les membres de la SD entrés par l'utilisateur dans les variables 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: ")) 

Ceci est un point important. Le nom du réalisateur doit être entré sans espaces, par exemple, Ivanov I.I. Dans le même formulaire, les noms complets des administrateurs doivent être présents dans le tableau Excel.

Créons deux listes. L'un est vide, le second concerne les sociétés où le conseil d'administration compte plus de 5 membres:

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

Nous avons également ouvert le fichier texte 55555.txt, dans lequel nous allons enregistrer les résultats.La coïncidence de la SD de plus de 50% signifie que 3 membres sur 5 doivent correspondre. Le programme doit donc effectuer 10 vérifications pour les noms correspondants. C'est combien de combinaisons peuvent être pour le diabète de 5 membres.

Par conséquent, afin de ne pas écrire le même code 10 fois, ce qui rend le programme encombrant, nous allons créer une fonction puis l'appeler (l'exécuter) 10 fois.

Fonction de charge


Voici notre fonction:

 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') 

Analysons le code.

Nous définissons les limites du tableau pour B2: L36. Si la cellule est vide, elle sera ignorée.

Ensuite, la fonction considérera le nom du 1er directeur, si le nom dans la cellule correspond au nom entré par l'utilisateur, la fonction va plus loin et compare le 2ème, puis le 3ème directeur. À la fin, la fonction forme une liste d'entreprises et écrit chacune d'elles dans le fichier 55555.txt.
Une fois une fonction écrite, elle ne sera pas exécutée automatiquement par le programme.

Il faut l'appeler:

 myfun(a,b,c) 

Mais ici, nous avons appelé la fonction uniquement pour les trois premiers administrateurs. Il est nécessaire de répéter l'appel de fonction pour les combinaisons restantes:

 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() 

Nous lançons


Exécutez le programme et entrez dans la fenêtre de l'interpréteur python 5 noms de directeurs à partir de
ceux qui se trouvent au moins une fois dans le tableau Excel:



Une fois le programme exécuté, regardez le fichier que le programme va créer -
55555.txt:



Dans le fichier - numéros des entreprises où des correspondances ont été trouvées. Il convient de noter que ce sont les numéros de société de la colonne A, pas les numéros de ligne Excel:



Le programme est prêt, mais il faut se rappeler qu'il n'analyse pas la composition du conseil d'administration avec des membres de plus de 5 personnes!

Téléchargez le code du programme - ici .

Téléchargez le tableau des tests ici .

PS: tous les matchs du tableau avec de vraies personnalités sont aléatoires.

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


All Articles