From 83625693f679d140ec324bf882b06f5accf20707 Mon Sep 17 00:00:00 2001
From: Remi <remi@le-filament.com>
Date: Mon, 21 Oct 2019 18:43:07 +0200
Subject: [PATCH] Ajout checks raison sociale / SIRET / SIREN

---
 models/res_partner.py | 41 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 40 insertions(+), 1 deletion(-)

diff --git a/models/res_partner.py b/models/res_partner.py
index 00ff6bc..c899fb1 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -397,13 +397,52 @@ class ScopPartner(models.Model):
                     coop.seed_end = datetime.today().date() + timedelta(2556)
             else:
                 coop.seed_end = False
-                
 
     @api.onchange('organization_type_id')
     def onchange_organization_type_id(self):
         for partner in self:
             partner.organization_subtype_id = False
 
+    @api.onchange('name')
+    def onchange_name(self):
+        if self.search_count([('name', '=ilike', self.name)]) > 0:
+            return {
+                'warning': {
+                    'title': "Attention",
+                    'message': "Ce nom / cette raison sociale existe déjà, "
+                               + "merci de vérifier que vous n'êtes pas en "
+                               + "train de créer un doublon"}}
+
+    @api.constrains('siret')
+    def _check_siret(self):
+        if self.siret:
+            siren = self.siret[:9]
+            if (self.search_count([('siret', '=like', siren+"%"),
+                                   ('is_cooperative', "=", True)]) > 1):
+                raise ValidationError(
+                    "Ce SIREN existe déjà parmi les coopératives")
+            elif self.search_count([('siret', '=', self.siret)]) > 1:
+                raise ValidationError("Ce SIRET existe déjà")
+
+    @api.onchange('siret')
+    def onchange_siret(self):
+        if self.siret:
+            siren = self.siret[:9]
+            if self.search_count([('siret', '=like', self.siret)]) > 0:
+                return {
+                    'warning': {
+                        'title': "Attention",
+                        'message': "Ce SIRET existe déjà, merci de vérifier "
+                                   + "que vous n'êtes pas en train de créer un"
+                                   + " doublon"}}
+            elif self.search_count([('siret', '=like', siren+"%")]) > 0:
+                return {
+                    'warning': {
+                        'title': "Attention",
+                        'message': "Ce SIREN existe déjà, merci de vérifier "
+                                   + "que vous n'êtes pas en train de créer un"
+                                   + " doublon"}}
+
     def _create_period(self, partner):
         new_period = self.env['scop.period'].create({
             'partner_id': partner.id,
-- 
GitLab