0001-astregs-update-payload-params-names-for-association-.patch
passerelle/apps/astregs/models.py | ||
---|---|---|
32 | 32 |
"description": "", |
33 | 33 |
"type": "object", |
34 | 34 |
"properties": { |
35 |
"family_code": {
|
|
36 |
"description": "association family code",
|
|
35 |
"Financier": {
|
|
36 |
"description": "financial association",
|
|
37 | 37 |
"type": "string", |
38 |
"required": True |
|
38 |
"required": True, |
|
39 |
"enum": ["True", "False"] |
|
39 | 40 |
}, |
40 |
"category": {
|
|
41 |
"CodeFamille": {
|
|
41 | 42 |
"description": "association family code", |
42 | 43 |
"type": "string", |
43 | 44 |
"required": True |
44 | 45 |
}, |
45 |
"name": { |
|
46 |
"description": "association name", |
|
47 |
"type": "string", |
|
48 |
"required": True |
|
49 |
}, |
|
50 |
"siren": { |
|
51 |
"description": "SIREN number", |
|
46 |
"CatTiers": { |
|
47 |
"description": "association category", |
|
52 | 48 |
"type": "string", |
53 | 49 |
"required": True |
54 | 50 |
}, |
55 |
"nic": {
|
|
56 |
"description": "NIC number",
|
|
51 |
"NomEnregistrement": {
|
|
52 |
"description": "association name",
|
|
57 | 53 |
"type": "string", |
58 | 54 |
"required": True |
59 | 55 |
}, |
60 |
"organism": { |
|
61 |
"description": "association organism", |
|
62 |
"type": "string", |
|
63 |
"required": False |
|
64 |
}, |
|
65 |
"financial": { |
|
66 |
"description": "financial association", |
|
67 |
"type": "bool", |
|
68 |
"required": False, |
|
69 |
}, |
|
70 |
"type": { |
|
71 |
"description": "association type", |
|
72 |
"type": "string", |
|
73 |
"required": False |
|
74 |
}, |
|
75 |
"status": { |
|
56 |
"StatutTiers": { |
|
76 | 57 |
"description": "association status", |
77 | 58 |
"type": "string", |
78 |
"required": False,
|
|
59 |
"required": True,
|
|
79 | 60 |
"enum": ["PROPOSE", "VALIDE", "REFUSE", "BLOQUE", "A COMPLETER"] |
80 | 61 |
}, |
81 |
"address": { |
|
82 |
"description": "association address", |
|
83 |
"type": "string", |
|
84 |
"required": True |
|
85 |
}, |
|
86 |
"address_complement": { |
|
87 |
"description": "association address complement", |
|
88 |
"type": "string", |
|
89 |
"required": False |
|
90 |
}, |
|
91 |
"zipcode": { |
|
92 |
"description": "association address zipcode", |
|
93 |
"type": "string", |
|
94 |
"required": False |
|
95 |
}, |
|
96 |
"city": { |
|
97 |
"description": "association city", |
|
62 |
"Type": { |
|
63 |
"description": "association type", |
|
98 | 64 |
"type": "string", |
99 |
"required": False |
|
65 |
"required": True, |
|
66 |
"enum": ["D", "F", "*"] |
|
100 | 67 |
}, |
101 |
"country": {
|
|
102 |
"description": "association address zipcode",
|
|
68 |
"NumeroSiret": {
|
|
69 |
"description": "SIREN number",
|
|
103 | 70 |
"type": "string", |
104 |
"required": False
|
|
71 |
"required": True
|
|
105 | 72 |
}, |
106 |
"email": {
|
|
107 |
"description": "association email",
|
|
73 |
"NumeroSiretFin": {
|
|
74 |
"description": "NIC number",
|
|
108 | 75 |
"type": "string", |
109 |
"required": False
|
|
76 |
"required": True
|
|
110 | 77 |
}, |
111 |
"website": { |
|
112 |
"description": "association website", |
|
78 |
"AdresseTitre": { |
|
113 | 79 |
"type": "string", |
114 |
"required": False
|
|
80 |
"required": True
|
|
115 | 81 |
}, |
116 |
"comment": { |
|
117 |
"description": "comment for association", |
|
82 |
"AdresseIsAdresseDeCommande": { |
|
118 | 83 |
"type": "string", |
119 |
"required": False |
|
84 |
"required": True, |
|
85 |
"enum": ["True", "False"] |
|
120 | 86 |
}, |
121 |
"contact_id": { |
|
122 |
"description": "association contact id", |
|
87 |
"AdresseIsAdresseDeFacturation": { |
|
123 | 88 |
"type": "string", |
124 |
"required": False |
|
89 |
"required": True, |
|
90 |
"enum": ["True", "False"] |
|
125 | 91 |
} |
126 | 92 |
} |
127 | 93 |
} |
... | ... | |
415 | 381 |
'text': '%s - %s' % (item.Numero_SIRET, item.Nom_enregistrement)}) |
416 | 382 |
return {'data': data} |
417 | 383 | |
384 | ||
418 | 385 |
@endpoint(perm='can_access', name='create-association', |
419 | 386 |
post={ |
420 | 387 |
'description': _('Creates an association'), |
... | ... | |
426 | 393 |
} |
427 | 394 |
) |
428 | 395 |
def create_association(self, request, post_data): |
429 |
tiers = {'Financier': post_data.get('financial', False), |
|
430 |
'CodeFamille': post_data['family_code'], |
|
431 |
'CatTiers': post_data['category'], |
|
432 |
'NomEnregistrement': post_data['name'], |
|
433 |
'Organisme': post_data.get('organism', 'CG06'), # defaults to CG06 |
|
434 |
'NumeroSiret': post_data['siren'], |
|
435 |
'NumeroSiretFin': post_data['nic'], |
|
436 |
# can be D (débiteur), F (fournisseur) or * (both) |
|
437 |
'Type': post_data.get('type', '*'), |
|
438 |
'StatutTiers': post_data.get('status', 'PROPOSE'), |
|
439 |
'AdresseIsAdresseDeFacturation': True, |
|
440 |
'AdresseIsAdresseDeCommande': True, |
|
441 |
'AdresseTitre': 'AdressePrincipale', |
|
442 |
'AdresseDestinataire': post_data['name'], |
|
443 |
'AdresseLibelleRue': post_data['address'] |
|
444 | ||
445 |
} |
|
446 |
optional_attributes = { |
|
447 |
'address_complement': 'AdresseComplementVoie', |
|
448 |
'zipcode': 'AdresseCodePostal', |
|
449 |
'city': 'Libelle_Postale', |
|
450 |
'country': 'AdresseLibellePays', |
|
451 |
'email': 'Mail', |
|
452 |
'website': 'SiteWeb', |
|
453 |
'contact_id': 'EncodeKeyContact', |
|
454 |
'comment': 'Commentaire' |
|
455 |
} |
|
456 |
for param, attribute in optional_attributes.items(): |
|
457 |
if post_data.get(param): |
|
458 |
tiers[attribute] = post_data[param] |
|
459 | ||
460 |
r = self.call('Tiers', 'Creation', Tiers=tiers) |
|
396 |
r = self.call('Tiers', 'Creation', Tiers=post_data) |
|
461 | 397 |
return {'data': serialize_object(r)} |
462 | 398 | |
463 | 399 |
@endpoint(description=_('Get association informations'), |
tests/data/astregs/TiersCreationResponse.xml | ||
---|---|---|
1 |
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:creationResponse xmlns:ns1="http://gfi.astre.webservices/gf/tiers"><ns1:response><ns1:TiersReturn><ns1:Financier>false</ns1:Financier><ns1:CodeTiers>487464</ns1:CodeTiers><ns1:CodeFamille>51</ns1:CodeFamille><ns1:CatTiers>42</ns1:CatTiers><ns1:CodeCivilite></ns1:CodeCivilite><ns1:NomEnregistrement>My association</ns1:NomEnregistrement><ns1:Nom></ns1:Nom><ns1:Prenom></ns1:Prenom><ns1:Sigle></ns1:Sigle><ns1:Organisme>CG06</ns1:Organisme><ns1:RaisonSociale3></ns1:RaisonSociale3><ns1:RaisonSociale4></ns1:RaisonSociale4><ns1:RaisonSociale5></ns1:RaisonSociale5><ns1:RaisonSociale6></ns1:RaisonSociale6><ns1:LibelleCourrier></ns1:LibelleCourrier><ns1:EncodeKeyNatjur></ns1:EncodeKeyNatjur><ns1:CodeAPE></ns1:CodeAPE><ns1:NumeroSiret>112233445</ns1:NumeroSiret><ns1:NumeroSiretFin>00024</ns1:NumeroSiretFin><ns1:Commentaire></ns1:Commentaire><ns1:AdresseDestinataire>My association</ns1:AdresseDestinataire><ns1:AdresseTitre>AdressePrincipale</ns1:AdresseTitre><ns1:IdentifiantAdresse>785772</ns1:IdentifiantAdresse><ns1:AdresseIsAdresseDeFacturation>false</ns1:AdresseIsAdresseDeFacturation><ns1:AdresseIsAdresseDeCommande>false</ns1:AdresseIsAdresseDeCommande><ns1:AdresseComplementDestinataire></ns1:AdresseComplementDestinataire><ns1:AdresseComplementaire></ns1:AdresseComplementaire><ns1:AdresseLibelleRue>169, rue du Château</ns1:AdresseLibelleRue><ns1:AdresseComplementVoie></ns1:AdresseComplementVoie><ns1:AdresseCodePostal>75014</ns1:AdresseCodePostal><ns1:AdresseBureauDistributeur></ns1:AdresseBureauDistributeur><ns1:AdresseCodePays></ns1:AdresseCodePays><ns1:AdresseLibellePays>France</ns1:AdresseLibellePays><ns1:NumeroTelephone></ns1:NumeroTelephone><ns1:NumeroFax></ns1:NumeroFax><ns1:Mail>foo@example.com</ns1:Mail><ns1:SiteWeb>http://example.com</ns1:SiteWeb><ns1:CodeTiersReprise></ns1:CodeTiersReprise><ns1:StatutTiers>PROPOSE</ns1:StatutTiers><ns1:Type>*</ns1:Type><ns1:Permanent>false</ns1:Permanent><ns1:IndSeuil>false</ns1:IndSeuil><ns1:DelaiSuiviFacture>0</ns1:DelaiSuiviFacture><ns1:Remise>0,00</ns1:Remise><ns1:DeclarationFiscale>false</ns1:DeclarationFiscale><ns1:IndicateurTiersSubrogatoire>false</ns1:IndicateurTiersSubrogatoire><ns1:ValeurIdentifiant0></ns1:ValeurIdentifiant0><ns1:ValeurIdentifiant1></ns1:ValeurIdentifiant1><ns1:ValeurIdentifiant2></ns1:ValeurIdentifiant2><ns1:ValeurIdentifiant3></ns1:ValeurIdentifiant3><ns1:ValeurIdentifiant4></ns1:ValeurIdentifiant4><ns1:ValeurIdentifiant5></ns1:ValeurIdentifiant5><ns1:ValeurIdentifiant6></ns1:ValeurIdentifiant6><ns1:ValeurIdentifiant7></ns1:ValeurIdentifiant7><ns1:ValeurIdentifiant8></ns1:ValeurIdentifiant8><ns1:ValeurIdentifiant9></ns1:ValeurIdentifiant9><ns1:NoDeclarationPref></ns1:NoDeclarationPref><ns1:TiersContactId></ns1:TiersContactId><ns1:EncodeKeyContact>4242</ns1:EncodeKeyContact><ns1:EncodeKeyFonction></ns1:EncodeKeyFonction><ns1:LibelleFonction></ns1:LibelleFonction><ns1:DateDebutFonction></ns1:DateDebutFonction><ns1:DateFinFonction></ns1:DateFinFonction></ns1:TiersReturn></ns1:response></ns1:creationResponse></soapenv:Body></soapenv:Envelope> |
|
1 |
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:creationResponse xmlns:ns1="http://gfi.astre.webservices/gf/tiers"><ns1:response><ns1:TiersReturn><ns1:Financier>false</ns1:Financier><ns1:CodeTiers>487464</ns1:CodeTiers><ns1:CodeFamille>51</ns1:CodeFamille><ns1:CatTiers>42</ns1:CatTiers><ns1:CodeCivilite></ns1:CodeCivilite><ns1:NomEnregistrement>My association</ns1:NomEnregistrement><ns1:Nom></ns1:Nom><ns1:Prenom></ns1:Prenom><ns1:Sigle>EO</ns1:Sigle><ns1:Organisme>CG06</ns1:Organisme><ns1:RaisonSociale3></ns1:RaisonSociale3><ns1:RaisonSociale4></ns1:RaisonSociale4><ns1:RaisonSociale5></ns1:RaisonSociale5><ns1:RaisonSociale6></ns1:RaisonSociale6><ns1:LibelleCourrier></ns1:LibelleCourrier><ns1:EncodeKeyNatjur></ns1:EncodeKeyNatjur><ns1:CodeAPE></ns1:CodeAPE><ns1:NumeroSiret>112233445</ns1:NumeroSiret><ns1:NumeroSiretFin>00024</ns1:NumeroSiretFin><ns1:Commentaire></ns1:Commentaire><ns1:AdresseDestinataire>My association</ns1:AdresseDestinataire><ns1:AdresseTitre>AdressePrincipale</ns1:AdresseTitre><ns1:IdentifiantAdresse>785772</ns1:IdentifiantAdresse><ns1:AdresseIsAdresseDeFacturation>false</ns1:AdresseIsAdresseDeFacturation><ns1:AdresseIsAdresseDeCommande>false</ns1:AdresseIsAdresseDeCommande><ns1:AdresseComplementDestinataire></ns1:AdresseComplementDestinataire><ns1:AdresseComplementaire></ns1:AdresseComplementaire><ns1:AdresseLibelleRue>169, rue du Château</ns1:AdresseLibelleRue><ns1:AdresseComplementVoie></ns1:AdresseComplementVoie><ns1:AdresseCodePostal>75014</ns1:AdresseCodePostal><ns1:AdresseBureauDistributeur></ns1:AdresseBureauDistributeur><ns1:AdresseCodePays></ns1:AdresseCodePays><ns1:AdresseLibellePays>France</ns1:AdresseLibellePays><ns1:NumeroTelephone></ns1:NumeroTelephone><ns1:NumeroFax></ns1:NumeroFax><ns1:Mail>foo@example.com</ns1:Mail><ns1:SiteWeb>http://example.com</ns1:SiteWeb><ns1:CodeTiersReprise></ns1:CodeTiersReprise><ns1:StatutTiers>PROPOSE</ns1:StatutTiers><ns1:Type>*</ns1:Type><ns1:Permanent>false</ns1:Permanent><ns1:IndSeuil>false</ns1:IndSeuil><ns1:DelaiSuiviFacture>0</ns1:DelaiSuiviFacture><ns1:Remise>0,00</ns1:Remise><ns1:DeclarationFiscale>false</ns1:DeclarationFiscale><ns1:IndicateurTiersSubrogatoire>false</ns1:IndicateurTiersSubrogatoire><ns1:ValeurIdentifiant0></ns1:ValeurIdentifiant0><ns1:ValeurIdentifiant1></ns1:ValeurIdentifiant1><ns1:ValeurIdentifiant2></ns1:ValeurIdentifiant2><ns1:ValeurIdentifiant3></ns1:ValeurIdentifiant3><ns1:ValeurIdentifiant4></ns1:ValeurIdentifiant4><ns1:ValeurIdentifiant5></ns1:ValeurIdentifiant5><ns1:ValeurIdentifiant6></ns1:ValeurIdentifiant6><ns1:ValeurIdentifiant7></ns1:ValeurIdentifiant7><ns1:ValeurIdentifiant8></ns1:ValeurIdentifiant8><ns1:ValeurIdentifiant9></ns1:ValeurIdentifiant9><ns1:NoDeclarationPref></ns1:NoDeclarationPref><ns1:TiersContactId></ns1:TiersContactId><ns1:EncodeKeyContact>4242</ns1:EncodeKeyContact><ns1:EncodeKeyFonction></ns1:EncodeKeyFonction><ns1:LibelleFonction></ns1:LibelleFonction><ns1:DateDebutFonction></ns1:DateDebutFonction><ns1:DateFinFonction></ns1:DateFinFonction></ns1:TiersReturn></ns1:response></ns1:creationResponse></soapenv:Body></soapenv:Envelope> |
tests/test_astregs.py | ||
---|---|---|
184 | 184 |
@mock.patch('passerelle.utils.Request.post') |
185 | 185 |
def test_association_creation(mocked_post, mocked_get, tiers_creation_response, |
186 | 186 |
tiers_creation_error_response, connector, app): |
187 |
payload = {'family_code': '51', |
|
188 |
'category': '42', |
|
189 |
'name': 'My association', |
|
190 |
'siren': '112233445', |
|
191 |
'nic': '00024', |
|
192 |
'address': '169, rue du Château', |
|
193 |
'zipcode': '75014', |
|
194 |
'city': 'Paris', |
|
195 |
'country': 'France', |
|
196 |
'email': 'foo@example.com', |
|
197 |
'website': 'http://example.com', |
|
198 |
'contact_id': '4242' |
|
187 |
payload = { |
|
188 |
'CodeFamille': '51', |
|
189 |
'CatTiers': '42', |
|
190 |
'EncodeKeyContact': '4242', |
|
191 |
'Sigle': 'EO', |
|
192 |
'NomEnregistrement': 'My association', |
|
193 |
'Organisme': 'CG06', |
|
194 |
'NumeroSiret': '112233445', |
|
195 |
'NumeroSiretFin': '00024', |
|
196 |
'StatutTiers': 'PROPOSE', |
|
197 |
'Type': '*', |
|
198 |
'AdresseTitre': 'AdressePrincipale', |
|
199 |
'AdresseLibelleRue': '169, rue du Château', |
|
200 |
'Sigle': 'EO', |
|
201 |
'Financier': 'True', |
|
202 |
'AdresseIsAdresseDeFacturation': 'False', |
|
203 |
'AdresseIsAdresseDeCommande': 'False' |
|
199 | 204 |
} |
200 | 205 |
mocked_post.return_value = mock.Mock(content=tiers_creation_response, status_code=200, |
201 | 206 |
headers={'Content-Type': 'text/xml'}) |
... | ... | |
214 | 219 |
assert data['Type'] == '*' |
215 | 220 |
assert data['AdresseTitre'] == 'AdressePrincipale' |
216 | 221 |
assert data['AdresseLibelleRue'] == force_text('169, rue du Château') |
222 |
assert data['Sigle'] == 'EO' |
|
223 |
assert data['AdresseIsAdresseDeCommande'] == 'false' |
|
224 |
assert data['AdresseIsAdresseDeFacturation'] == 'false' |
|
217 | 225 | |
218 | 226 |
mocked_post.return_value = mock.Mock(content=tiers_creation_error_response, |
219 | 227 |
status_code=500, |
220 |
- |