Compare commits
18 Commits
14e8f345c3
...
4b64f39337
Author | SHA1 | Date |
---|---|---|
Nicolas Roche | 4b64f39337 | |
Nicolas Roche | a61f858ebe | |
Nicolas Roche | f467587386 | |
Nicolas Roche | 761391c484 | |
Benjamin Dauvergne | c8c54b50cb | |
Nicolas Roche | 6322b75699 | |
Nicolas Roche | 5b043a4030 | |
Emmanuel Cazenave | d656b273c9 | |
Emmanuel Cazenave | 5a44fdcdeb | |
Emmanuel Cazenave | 255933f904 | |
Benjamin Dauvergne | 57d2bb06a9 | |
Benjamin Dauvergne | c7dcc2a510 | |
Benjamin Dauvergne | 2de6325c6d | |
Benjamin Dauvergne | 1f93f5506d | |
Benjamin Dauvergne | 9c85b556f2 | |
Benjamin Dauvergne | 2fbfeedb14 | |
Benjamin Dauvergne | 64456cde9f | |
Nicolas Roche | 1fa564c70d |
|
@ -15,6 +15,9 @@ from zeep.helpers import serialize_object
|
|||
FAMILY_PAYLOAD = {
|
||||
'category': 'BI',
|
||||
'situation': 'MARI',
|
||||
'nbChild': '3',
|
||||
'nbTotalChild': '4',
|
||||
'nbAES': '1',
|
||||
'rl1': {
|
||||
'civility': 'MME',
|
||||
'firstname': 'Marge',
|
||||
|
@ -327,6 +330,7 @@ def remove_id_on_rlg(conn, rlg):
|
|||
rlg['lastname'] = 'N/A'
|
||||
remove_extra_indicators(conn, rlg['indicatorList'], 'rl-indicator')
|
||||
rlg['indicatorList'].sort(key=lambda x: x['code'])
|
||||
rlg['quotientList'].sort(key=lambda x: (x['yearRev'], x['dateStart']))
|
||||
del rlg['indicators'] # order may change
|
||||
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
{
|
||||
"id": "AVS",
|
||||
"code": "AVS",
|
||||
"text": "Auxiliaire de Vie scolaire",
|
||||
"libelle": "Auxiliaire de Vie scolaire ",
|
||||
"text": "Assistant de Vie scolaire",
|
||||
"libelle": "Assistant de Vie scolaire ",
|
||||
"typeDesc": "NONE",
|
||||
"isActive": false
|
||||
},
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"dateBirth": "2016-05-09T00:00:00+02:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": null,
|
||||
"bPhoto": false,
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
"category": "BI",
|
||||
"situation": "MARI",
|
||||
"flagCom": true,
|
||||
"nbChild": null,
|
||||
"nbTotalChild": null,
|
||||
"nbAES": null,
|
||||
"nbChild": 3,
|
||||
"nbTotalChild": 4,
|
||||
"nbAES": "1",
|
||||
"RL1": {
|
||||
"num": "N/A",
|
||||
"firstname": "MARGE",
|
||||
|
@ -17,7 +17,8 @@
|
|||
"dateBirth": "1950-10-01T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"adresse": {
|
||||
"idStreet": "2317",
|
||||
|
@ -57,7 +58,8 @@
|
|||
"dateBirth": "2014-04-01T00:00:00+02:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_AV",
|
||||
"bPhoto": true,
|
||||
|
@ -186,7 +188,8 @@
|
|||
"dateBirth": "2018-12-17T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_PAI",
|
||||
"bPhoto": false,
|
||||
|
@ -219,7 +222,8 @@
|
|||
"dateBirth": "2018-04-01T00:00:00+02:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_AV",
|
||||
"bPhoto": false,
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
"dateBirth": "1956-05-12T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"adresse": {
|
||||
"idStreet": null,
|
||||
|
|
|
@ -1,4 +1,12 @@
|
|||
[
|
||||
{
|
||||
"id": "AVS",
|
||||
"code": "AVS",
|
||||
"text": "Assistant de Vie scolaire",
|
||||
"libelle": "Assistant de Vie scolaire ",
|
||||
"typeDesc": "NONE",
|
||||
"choiceList": []
|
||||
},
|
||||
{
|
||||
"id": "AUTRE",
|
||||
"code": "AUTRE",
|
||||
|
@ -15,14 +23,6 @@
|
|||
"typeDesc": "NONE",
|
||||
"choiceList": []
|
||||
},
|
||||
{
|
||||
"id": "AVS",
|
||||
"code": "AVS",
|
||||
"text": "Auxiliaire de Vie scolaire",
|
||||
"libelle": "Auxiliaire de Vie scolaire ",
|
||||
"typeDesc": "NONE",
|
||||
"choiceList": []
|
||||
},
|
||||
{
|
||||
"id": "ETABSPEC",
|
||||
"code": "ETABSPEC",
|
||||
|
|
|
@ -219,7 +219,7 @@
|
|||
{
|
||||
"id": "37",
|
||||
"code": "37",
|
||||
"rang": "FAMILY",
|
||||
"rang": "PERSON",
|
||||
"text": "D\u00e9claration conjointe sign\u00e9e des parents",
|
||||
"libelle": "D\u00e9claration conjointe sign\u00e9e des parents"
|
||||
},
|
||||
|
@ -261,14 +261,14 @@
|
|||
{
|
||||
"id": "64",
|
||||
"code": "64",
|
||||
"rang": "FAMILY",
|
||||
"rang": "PERSON",
|
||||
"text": "Jugement des affaires familiales",
|
||||
"libelle": "Jugement des affaires familiales"
|
||||
},
|
||||
{
|
||||
"id": "65",
|
||||
"code": "65",
|
||||
"rang": "FAMILY",
|
||||
"rang": "PERSON",
|
||||
"text": "Jugement mise sous tutelle",
|
||||
"libelle": "Jugement mise sous tutelle"
|
||||
},
|
||||
|
|
|
@ -1,4 +1,12 @@
|
|||
[
|
||||
{
|
||||
"id": "AVS",
|
||||
"code": "AVS",
|
||||
"text": "Assistant de Vie scolaire",
|
||||
"libelle": "Assistant de Vie scolaire ",
|
||||
"typeDesc": "NONE",
|
||||
"choiceList": []
|
||||
},
|
||||
{
|
||||
"id": "AVL",
|
||||
"code": "AVL",
|
||||
|
@ -7,14 +15,6 @@
|
|||
"typeDesc": "NONE",
|
||||
"choiceList": []
|
||||
},
|
||||
{
|
||||
"id": "AVS",
|
||||
"code": "AVS",
|
||||
"text": "Auxiliaire de Vie scolaire",
|
||||
"libelle": "Auxiliaire de Vie scolaire ",
|
||||
"typeDesc": "NONE",
|
||||
"choiceList": []
|
||||
},
|
||||
{
|
||||
"id": "ETABSPEC",
|
||||
"code": "ETABSPEC",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -10,8 +10,8 @@
|
|||
{
|
||||
"id": "AVS",
|
||||
"code": "AVS",
|
||||
"text": "Auxiliaire de Vie scolaire",
|
||||
"libelle": "Auxiliaire de Vie scolaire ",
|
||||
"text": "Assistant de Vie scolaire",
|
||||
"libelle": "Assistant de Vie scolaire ",
|
||||
"typeDesc": "NONE",
|
||||
"isActive": false
|
||||
},
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"dateBirth": "1970-01-01T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_AV",
|
||||
"bPhoto": false,
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
"category": "BI",
|
||||
"situation": "MARI",
|
||||
"flagCom": true,
|
||||
"nbChild": null,
|
||||
"nbTotalChild": null,
|
||||
"nbAES": null,
|
||||
"nbChild": 3,
|
||||
"nbTotalChild": 4,
|
||||
"nbAES": "1",
|
||||
"RL1": {
|
||||
"num": "N/A",
|
||||
"firstname": "MARGE",
|
||||
|
@ -17,7 +17,8 @@
|
|||
"dateBirth": "1950-10-01T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"adresse": {
|
||||
"idStreet": "2317",
|
||||
|
@ -56,7 +57,8 @@
|
|||
"dateBirth": "1956-05-12T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"adresse": {
|
||||
"idStreet": null,
|
||||
|
@ -127,7 +129,8 @@
|
|||
"dateBirth": "2014-04-01T00:00:00+02:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_AV",
|
||||
"bPhoto": true,
|
||||
|
@ -250,7 +253,8 @@
|
|||
"dateBirth": "2016-05-09T00:00:00+02:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_SV",
|
||||
"bPhoto": false,
|
||||
|
@ -283,7 +287,8 @@
|
|||
"dateBirth": "2018-12-17T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_PAI",
|
||||
"bPhoto": false,
|
||||
|
@ -316,7 +321,8 @@
|
|||
"dateBirth": "2018-04-01T00:00:00+02:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_AV",
|
||||
"bPhoto": false,
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
"category": "AUTR",
|
||||
"situation": "AUTR",
|
||||
"flagCom": true,
|
||||
"nbChild": null,
|
||||
"nbTotalChild": null,
|
||||
"nbAES": null,
|
||||
"nbChild": 0,
|
||||
"nbTotalChild": 0,
|
||||
"nbAES": "0",
|
||||
"RL1": {
|
||||
"num": "N/A",
|
||||
"firstname": "MARGE",
|
||||
|
@ -17,7 +17,8 @@
|
|||
"dateBirth": "1950-10-01T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"adresse": {
|
||||
"idStreet": null,
|
||||
|
@ -55,7 +56,8 @@
|
|||
"dateBirth": "1956-05-12T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"adresse": {
|
||||
"idStreet": null,
|
||||
|
@ -111,7 +113,8 @@
|
|||
"dateBirth": "1970-01-01T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": null,
|
||||
"bPhoto": false,
|
||||
|
@ -183,7 +186,8 @@
|
|||
"dateBirth": "2016-05-09T00:00:00+02:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_SV",
|
||||
"bPhoto": false,
|
||||
|
@ -216,7 +220,8 @@
|
|||
"dateBirth": "2018-12-17T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_PAI",
|
||||
"bPhoto": false,
|
||||
|
@ -249,7 +254,8 @@
|
|||
"dateBirth": "2018-04-01T00:00:00+02:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"dietcode": "MENU_AV",
|
||||
"bPhoto": false,
|
||||
|
|
|
@ -1,13 +1,4 @@
|
|||
[
|
||||
{
|
||||
"yearRev": 2021,
|
||||
"dateStart": "2022-01-02T00:00:00+01:00",
|
||||
"dateEnd": "2022-12-31T00:00:00+01:00",
|
||||
"mtt": 1500.33,
|
||||
"cdquo": "1",
|
||||
"codeUti": null,
|
||||
"cdquo_text": "Revenus fiscaux"
|
||||
},
|
||||
{
|
||||
"yearRev": 2020,
|
||||
"dateStart": "2022-01-02T00:00:00+01:00",
|
||||
|
@ -25,5 +16,14 @@
|
|||
"cdquo": "1",
|
||||
"codeUti": null,
|
||||
"cdquo_text": "Revenus fiscaux"
|
||||
},
|
||||
{
|
||||
"yearRev": 2021,
|
||||
"dateStart": "2022-01-02T00:00:00+01:00",
|
||||
"dateEnd": "2022-12-31T00:00:00+01:00",
|
||||
"mtt": 1500.33,
|
||||
"cdquo": "1",
|
||||
"codeUti": null,
|
||||
"cdquo_text": "Revenus fiscaux"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
"dateBirth": "1950-10-01T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"adresse": {
|
||||
"idStreet": "2317",
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
"dateBirth": "1956-05-12T00:00:00+01:00",
|
||||
"place": null,
|
||||
"communeCode": null,
|
||||
"countryCode": null
|
||||
"countryCode": null,
|
||||
"cdDepartment": null
|
||||
},
|
||||
"adresse": {
|
||||
"idStreet": null,
|
||||
|
|
|
@ -34,4 +34,5 @@ def test_referentials(conn, referentials, ref):
|
|||
for item in res['data']:
|
||||
assert 'id' in item
|
||||
assert 'text' in item
|
||||
assert diff(res['data'], 'test_read_%s_list.json' % ref)
|
||||
if ref not in ['street']:
|
||||
assert diff(res['data'], 'test_read_%s_list.json' % ref)
|
||||
|
|
|
@ -9,6 +9,9 @@ from .conftest import diff, diff_child, diff_family, diff_rlg, link, read_family
|
|||
FAMILY_RESET_PAYLOAD = {
|
||||
'category': 'AUTR',
|
||||
'situation': 'AUTR',
|
||||
'nbChild': '',
|
||||
'nbTotalChild': '',
|
||||
'nbAES': '',
|
||||
'rl1': {
|
||||
'civility': 'MR', # no effect
|
||||
'firstname': 'Marge', # must be
|
||||
|
@ -230,7 +233,7 @@ def test_create_family(conn, create_data, update_data):
|
|||
res = resp.json()
|
||||
assert res['err'] == 1
|
||||
assert 'Il existe déjà un Responsable Légal correspondant' in res['err_desc']
|
||||
assert res['err_class'] == 'passerelle.utils.soap.SOAPFault'
|
||||
assert res['err_class'] == 'passerelle.utils.jsonresponse.APIError'
|
||||
|
||||
# RL1 already exists (on update_data, as RL2) error
|
||||
payload['rl1']['firstname'] = 'Homer'
|
||||
|
@ -240,7 +243,7 @@ def test_create_family(conn, create_data, update_data):
|
|||
res = resp.json()
|
||||
assert res['err'] == 1
|
||||
assert 'Il existe déjà un Responsable Légal correspondant' in res['err_desc']
|
||||
assert res['err_class'] == 'passerelle.utils.soap.SOAPFault'
|
||||
assert res['err_class'] == 'passerelle.utils.jsonresponse.APIError'
|
||||
|
||||
|
||||
def test_is_rl_exists(conn, update_data):
|
||||
|
@ -918,7 +921,7 @@ def test_add_supplied_document(conn, create_data):
|
|||
res = resp.json()
|
||||
assert res['err'] == 0
|
||||
|
||||
# push on childe
|
||||
# push on child
|
||||
payload['numPerson'] = create_data['bart_num']
|
||||
url = conn + '/add-supplied-document?NameID=%s' % create_data['name_id']
|
||||
resp = requests.post(url, json=payload)
|
||||
|
|
|
@ -9,7 +9,7 @@ def test_direct_debit_order(conn, create_data):
|
|||
|
||||
url = conn + '/add-rl1-direct-debit-order?NameID=%s' % create_data['name_id']
|
||||
payload = {
|
||||
'codeRegie': '1',
|
||||
'codeRegie': '102',
|
||||
'bank/bankBIC': 'BDFEFR2T',
|
||||
'bank/bankIBAN': 'FR7630001007941234567890185',
|
||||
'bank/bankRUM': 'xxx',
|
||||
|
@ -26,7 +26,7 @@ def test_direct_debit_order(conn, create_data):
|
|||
|
||||
url = conn + '/get-rl1-direct-debit-order?NameID=%s' % create_data['name_id']
|
||||
params = {
|
||||
'codeRegie': '1',
|
||||
'codeRegie': '102',
|
||||
'dateRef': '2023-01-01',
|
||||
}
|
||||
resp = requests.get(url, params=params)
|
||||
|
|
|
@ -432,64 +432,7 @@ class APIEntreprise(BaseResource):
|
|||
},
|
||||
)
|
||||
def exercices(self, request, siret, **kwargs):
|
||||
return self.get('v2/exercices/%s/' % siret, **kwargs)
|
||||
|
||||
@endpoint(
|
||||
perm='can_access',
|
||||
pattern=r'(?P<siren>\w+)/$',
|
||||
example_pattern='{siren}/',
|
||||
description=_('Get firm\'s annual workforce data'),
|
||||
parameters={
|
||||
'siren': SIREN_PARAM,
|
||||
'object': OBJECT_PARAM,
|
||||
'context': CONTEXT_PARAM,
|
||||
'recipient': RECIPIENT_PARAM,
|
||||
},
|
||||
)
|
||||
def effectifs_annuels_acoss_covid(self, request, siren, **kwargs):
|
||||
if len(siren) != 9:
|
||||
raise APIError(_('invalid SIREN length (must be 9 characters)'))
|
||||
return self.get('v2/effectifs_annuels_acoss_covid/%s/' % siren, **kwargs)
|
||||
|
||||
@endpoint(
|
||||
perm='can_access',
|
||||
pattern=r'(?P<year>\w+)/(?P<month>\w+)/(?P<siren>\w+)/$',
|
||||
description=_('Get firm\'s monthly workforce data, by SIREN'),
|
||||
parameters={
|
||||
'year': YEAR_PARAM,
|
||||
'month': MONTH_PARAM,
|
||||
'siren': SIREN_PARAM,
|
||||
'object': OBJECT_PARAM,
|
||||
'context': CONTEXT_PARAM,
|
||||
'recipient': RECIPIENT_PARAM,
|
||||
},
|
||||
)
|
||||
def entreprise_effectifs_mensuels_acoss_covid(self, request, year, month, siren, **kwargs):
|
||||
if len(siren) != 9:
|
||||
raise APIError(_('invalid SIREN length (must be 9 characters)'))
|
||||
month = month.zfill(2)
|
||||
return self.get(
|
||||
'v2/effectifs_mensuels_acoss_covid/%s/%s/entreprise/%s/' % (year, month, siren), **kwargs
|
||||
)
|
||||
|
||||
@endpoint(
|
||||
perm='can_access',
|
||||
pattern=r'(?P<year>\w+)/(?P<month>\w+)/(?P<siret>\w+)/$',
|
||||
description=_('Get firm\'s monthly workforce data, by SIRET'),
|
||||
parameters={
|
||||
'year': YEAR_PARAM,
|
||||
'month': MONTH_PARAM,
|
||||
'siret': SIRET_PARAM,
|
||||
'object': OBJECT_PARAM,
|
||||
'context': CONTEXT_PARAM,
|
||||
'recipient': RECIPIENT_PARAM,
|
||||
},
|
||||
)
|
||||
def etablissement_effectifs_mensuels_acoss_covid(self, request, year, month, siret, **kwargs):
|
||||
month = month.zfill(2)
|
||||
return self.get(
|
||||
'v2/effectifs_mensuels_acoss_covid/%s/%s/etablissement/%s/' % (year, month, siret), **kwargs
|
||||
)
|
||||
return self.get('v3/dgfip/etablissements/%s/chiffres_affaires' % siret, raw=True, **kwargs)
|
||||
|
||||
@endpoint(
|
||||
perm='can_access',
|
||||
|
@ -511,18 +454,17 @@ class APIEntreprise(BaseResource):
|
|||
def match_mandataire_social(
|
||||
self, request, siren, first_name, last_name, birthdate, method='simple', **kwargs
|
||||
):
|
||||
entreprise = self.get(
|
||||
'v2/entreprises/%s/' % siren,
|
||||
raw=True,
|
||||
**kwargs,
|
||||
)
|
||||
mandataires = self.get(
|
||||
'v3/infogreffe/rcs/unites_legales/%s/mandataires_sociaux' % siren, raw=True, **kwargs
|
||||
).get('data', [])
|
||||
|
||||
methods = {
|
||||
'simple': simple_match,
|
||||
'levenshtein': levenshtein_match,
|
||||
}
|
||||
if method not in methods:
|
||||
return {'err': 1, 'err_desc': 'method %s not implemented' % method}
|
||||
for mandataire in entreprise.get('entreprise', {}).get('mandataires_sociaux', []):
|
||||
for mandataire in mandataires:
|
||||
if methods[method](mandataire, first_name, last_name, birthdate):
|
||||
return {'err': 0, 'data': mandataire}
|
||||
return {'err': 0, 'data': {}}
|
||||
|
|
|
@ -21,10 +21,8 @@ import urllib
|
|||
import lxml.etree
|
||||
from django.db import models
|
||||
from django.utils import dateformat, dateparse
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from zeep import helpers
|
||||
from zeep.exceptions import Fault
|
||||
|
||||
from passerelle.base.models import BaseResource
|
||||
from passerelle.utils.api import endpoint
|
||||
|
@ -58,10 +56,7 @@ class ATALConnector(BaseResource):
|
|||
|
||||
def _soap_call(self, wsdl, method, **kwargs):
|
||||
client = self._soap_client(wsdl=wsdl)
|
||||
try:
|
||||
return getattr(client.service, method)(**kwargs)
|
||||
except Fault as e:
|
||||
raise APIError(force_str(e))
|
||||
return getattr(client.service, method)(**kwargs)
|
||||
|
||||
def _basic_ref(self, wsdl, method):
|
||||
soap_res = self._soap_call(wsdl=wsdl, method=method)
|
||||
|
|
|
@ -27,7 +27,6 @@ from xml.etree import ElementTree as etree
|
|||
|
||||
import pdfrw
|
||||
import pdfrw.findobjs
|
||||
import zeep.exceptions
|
||||
import zeep.helpers as zeep_helpers
|
||||
from Cryptodome.Cipher import AES
|
||||
from django.conf import settings
|
||||
|
@ -45,6 +44,7 @@ from passerelle.base.models import BaseResource
|
|||
from passerelle.base.signature import sign_url
|
||||
from passerelle.utils.api import endpoint
|
||||
from passerelle.utils.jsonresponse import APIError, JSONEncoder
|
||||
from passerelle.utils.soap import SOAPFault
|
||||
|
||||
|
||||
def cartads_file_location(instance, filename):
|
||||
|
@ -326,7 +326,7 @@ class AbstractCartaDSCS(BaseResource):
|
|||
for dossier in CartaDSDossier.objects.filter(cartads_id_dossier__isnull=False, deleted=False):
|
||||
try:
|
||||
dossier.cartads_steps_cache = {'steps': self.get_dossier_steps(client, token, dossier)}
|
||||
except zeep.exceptions.Fault as e:
|
||||
except SOAPFault as e:
|
||||
if "n'existe pas" in str(e):
|
||||
dossier.deleted = True
|
||||
dossier.save()
|
||||
|
@ -336,7 +336,7 @@ class AbstractCartaDSCS(BaseResource):
|
|||
dossier.cartads_cache_code_acces = client_suivi.service.GetMotPasse(
|
||||
self.get_token(), dossier.cartads_id_dossier
|
||||
)
|
||||
except zeep.exceptions.Fault as e:
|
||||
except SOAPFault as e:
|
||||
self.logger.exception('error getting access code (%s) (%s)', dossier.id, e)
|
||||
try:
|
||||
infos_dossier = client_dossier.service.GetInfosDossier(
|
||||
|
@ -347,7 +347,7 @@ class AbstractCartaDSCS(BaseResource):
|
|||
dossier.cartads_cache_infos = json.loads(
|
||||
json.dumps(zeep_helpers.serialize_object(infos_dossier), cls=JSONEncoder)
|
||||
)
|
||||
except zeep.exceptions.Fault as e:
|
||||
except SOAPFault as e:
|
||||
self.logger.exception('error getting dossier infos (%s) (%s)', dossier.id, e)
|
||||
dossier.save()
|
||||
self.sync_subscribers_role(dossier)
|
||||
|
@ -951,7 +951,7 @@ class AbstractCartaDSCS(BaseResource):
|
|||
),
|
||||
},
|
||||
)
|
||||
except zeep.exceptions.Fault as e:
|
||||
except SOAPFault as e:
|
||||
self.logger.exception('error pushing file item %d (%s)', piece.id, e)
|
||||
continue
|
||||
else:
|
||||
|
@ -994,7 +994,7 @@ class AbstractCartaDSCS(BaseResource):
|
|||
),
|
||||
},
|
||||
)
|
||||
except zeep.exceptions.Fault as e:
|
||||
except SOAPFault as e:
|
||||
self.logger.exception('error pushing file item %d (%s)', piece.id, e)
|
||||
else:
|
||||
assert resp is None
|
||||
|
@ -1047,7 +1047,7 @@ class AbstractCartaDSCS(BaseResource):
|
|||
'InformationsComplementaires': key_value_of_stringstring(infos),
|
||||
},
|
||||
)
|
||||
except zeep.exceptions.Fault as e:
|
||||
except SOAPFault as e:
|
||||
self.logger.exception('error pushing daact file item %d (%s)', piece.id, e)
|
||||
else:
|
||||
assert resp is None
|
||||
|
@ -1177,7 +1177,7 @@ class AbstractCartaDSCS(BaseResource):
|
|||
resp = client.service.ActiverServiceSuiviNumerique(
|
||||
self.get_token(), dossier_number, dossier_password
|
||||
)
|
||||
except zeep.exceptions.Fault as e:
|
||||
except SOAPFault as e:
|
||||
self.logger.error('error joining dossier %s (%s)', dossier_number, e)
|
||||
raise APIError('error joining dossier (wrong password?)')
|
||||
id_dossier = int(resp)
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
# Generated by Django 1.11.29 on 2020-09-29 13:56
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('base', '0022_auto_20200715_1033'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Link',
|
||||
fields=[
|
||||
(
|
||||
'id',
|
||||
models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
('name_id', models.CharField(max_length=256)),
|
||||
('family_id', models.CharField(max_length=128)),
|
||||
('created', models.DateTimeField(auto_now_add=True)),
|
||||
('updated', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Maelis',
|
||||
fields=[
|
||||
(
|
||||
'id',
|
||||
models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
('title', models.CharField(max_length=50, verbose_name='Title')),
|
||||
('slug', models.SlugField(unique=True, verbose_name='Identifier')),
|
||||
('description', models.TextField(verbose_name='Description')),
|
||||
(
|
||||
'base_url',
|
||||
models.URLField(
|
||||
default='http://www3.sigec.fr/entrouvertws/services/', verbose_name='Base API URL'
|
||||
),
|
||||
),
|
||||
('login', models.CharField(max_length=256, verbose_name='API Login')),
|
||||
('password', models.CharField(max_length=256, verbose_name='API Password')),
|
||||
(
|
||||
'users',
|
||||
models.ManyToManyField(
|
||||
blank=True, related_name='_maelis_users_+', related_query_name='+', to='base.ApiUser'
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Maélis',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='link',
|
||||
name='resource',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='maelis.Maelis'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='link',
|
||||
unique_together={('resource', 'name_id')},
|
||||
),
|
||||
]
|
|
@ -1,678 +0,0 @@
|
|||
# Copyright (C) 2020 Entr'ouvert
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Affero General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from collections import defaultdict
|
||||
from urllib.parse import urljoin
|
||||
|
||||
import zeep
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils.dateparse import parse_date
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from zeep.helpers import serialize_object
|
||||
from zeep.wsse.username import UsernameToken
|
||||
|
||||
from passerelle.base.models import BaseResource
|
||||
from passerelle.utils.api import endpoint
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
|
||||
from . import utils
|
||||
|
||||
LINK_SCHEMA = {
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"title": "Maelis",
|
||||
"description": "",
|
||||
"type": "object",
|
||||
"required": ["family_id", "password"],
|
||||
"properties": {
|
||||
"family_id": {
|
||||
"description": "family_id",
|
||||
"type": "string",
|
||||
},
|
||||
"password": {
|
||||
"description": "family password",
|
||||
"type": "string",
|
||||
},
|
||||
"school_year": {
|
||||
"description": "school year",
|
||||
"type": "string",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
COORDINATES_SCHEMA = {
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"title": "Maelis",
|
||||
"description": "Person Coordinates",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"num": {"description": "number", "type": "string", "pattern": "^[0-9]*$"},
|
||||
"street": {
|
||||
"description": "street",
|
||||
"type": "string",
|
||||
},
|
||||
"zipcode": {
|
||||
"description": "zipcode",
|
||||
"type": "string",
|
||||
},
|
||||
"town": {
|
||||
"description": "town",
|
||||
"type": "string",
|
||||
},
|
||||
"phone": {
|
||||
"description": "phone",
|
||||
"type": "string",
|
||||
},
|
||||
"mobile": {
|
||||
"description": "mobile",
|
||||
"type": "string",
|
||||
},
|
||||
"mail": {
|
||||
"description": "mail",
|
||||
"type": "string",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
class Maelis(BaseResource):
|
||||
base_url = models.URLField(_('Base API URL'), default='http://www3.sigec.fr/entrouvertws/services/')
|
||||
login = models.CharField(_('API Login'), max_length=256)
|
||||
password = models.CharField(_('API Password'), max_length=256)
|
||||
|
||||
category = _('Business Process Connectors')
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Maélis'
|
||||
|
||||
@classmethod
|
||||
def get_verbose_name(cls):
|
||||
return cls._meta.verbose_name
|
||||
|
||||
def check_status(self):
|
||||
response = self.requests.get(self.base_url)
|
||||
response.raise_for_status()
|
||||
|
||||
def get_client(self, wsdl_name):
|
||||
wsse = UsernameToken(self.login, self.password)
|
||||
wsdl_url = urljoin(self.base_url, wsdl_name)
|
||||
return self.soap_client(wsdl_url=wsdl_url, wsse=wsse)
|
||||
|
||||
def call(self, wsdl_name, service, **kwargs):
|
||||
client = self.get_client(wsdl_name)
|
||||
method = getattr(client.service, service)
|
||||
try:
|
||||
return method(**kwargs)
|
||||
except zeep.exceptions.Fault as e:
|
||||
raise APIError(e)
|
||||
|
||||
def get_link(self, name_id):
|
||||
try:
|
||||
return self.link_set.get(name_id=name_id)
|
||||
except Link.DoesNotExist:
|
||||
raise APIError('User not linked to family', err_code='not-found')
|
||||
|
||||
def get_family_data(self, family_id, school_year=None):
|
||||
if not school_year:
|
||||
# fallback to current year if not provided
|
||||
school_year = utils.get_school_year()
|
||||
family_data = serialize_object(
|
||||
self.call('FamilyService?wsdl', 'readFamily', dossierNumber=family_id, schoolYear=school_year)
|
||||
)
|
||||
for child in family_data['childInfoList']:
|
||||
utils.normalize_person(child)
|
||||
return family_data
|
||||
|
||||
def get_child_info(self, NameID, childID):
|
||||
link = self.get_link(NameID)
|
||||
family_data = self.get_family_data(link.family_id)
|
||||
|
||||
for child in family_data.get('childInfoList', []):
|
||||
if child['num'] == childID:
|
||||
return child
|
||||
|
||||
raise APIError('Child not found', err_code='not-found')
|
||||
|
||||
def get_invoices(self, regie_id, name_id):
|
||||
family_id = self.get_link(name_id).family_id
|
||||
return [
|
||||
utils.normalize_invoice(i)
|
||||
for i in self.call(
|
||||
'InvoiceService?wsdl', 'readInvoices', numDossier=family_id, codeRegie=regie_id
|
||||
)
|
||||
]
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Family'),
|
||||
display_order=1,
|
||||
description=_('Create link between user and family'),
|
||||
perm='can_access',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
},
|
||||
post={'request_body': {'schema': {'application/json': LINK_SCHEMA}}},
|
||||
)
|
||||
def link(self, request, NameID, post_data):
|
||||
if 'school_year' not in post_data:
|
||||
# fallback to default year if not provided
|
||||
post_data['school_year'] = utils.get_school_year()
|
||||
r = self.call(
|
||||
'FamilyService?wsdl',
|
||||
'readFamilyByPassword',
|
||||
dossierNumber=post_data['family_id'],
|
||||
password=post_data['password'],
|
||||
schoolYear=post_data['school_year'],
|
||||
)
|
||||
if not r.number:
|
||||
raise APIError('Family not found', err_code='not-found')
|
||||
Link.objects.update_or_create(resource=self, name_id=NameID, defaults={'family_id': r.number})
|
||||
return {'data': serialize_object(r)}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Family'),
|
||||
display_order=2,
|
||||
description=_('Delete link between user and family'),
|
||||
methods=['post'],
|
||||
perm='can_access',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
},
|
||||
)
|
||||
def unlink(self, request, NameID):
|
||||
link = self.get_link(NameID)
|
||||
link_id = link.pk
|
||||
link.delete()
|
||||
return {'link': link_id, 'deleted': True, 'family_id': link.family_id}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Family'),
|
||||
display_order=4,
|
||||
description=_("Get information about user's family"),
|
||||
name='family-info',
|
||||
perm='can_access',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
},
|
||||
)
|
||||
def family_info(self, request, NameID):
|
||||
link = self.get_link(NameID)
|
||||
family_data = self.get_family_data(link.family_id)
|
||||
return {'data': family_data}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Family'),
|
||||
display_order=6,
|
||||
description=_("Get information about children"),
|
||||
perm='can_access',
|
||||
name='children-info',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
},
|
||||
)
|
||||
def children_info(self, request, NameID):
|
||||
link = self.get_link(NameID)
|
||||
family_data = self.get_family_data(link.family_id)
|
||||
return {'data': family_data['childInfoList']}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Family'),
|
||||
display_order=7,
|
||||
description=_("Get information about adults"),
|
||||
perm='can_access',
|
||||
name='adults-info',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
},
|
||||
)
|
||||
def adults_info(self, request, NameID):
|
||||
link = self.get_link(NameID)
|
||||
family_data = self.get_family_data(link.family_id)
|
||||
adults = []
|
||||
if family_data.get('rl1InfoBean'):
|
||||
adults.append(utils.normalize_person(family_data['rl1InfoBean']))
|
||||
if family_data.get('rl2InfoBean'):
|
||||
adults.append(utils.normalize_person(family_data['rl2InfoBean']))
|
||||
return {'data': adults}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Family'),
|
||||
display_order=7,
|
||||
description=_("Get information about a child"),
|
||||
perm='can_access',
|
||||
name='child-info',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'childID': {'description': _('Child ID')},
|
||||
},
|
||||
)
|
||||
def child_info(self, request, NameID, childID):
|
||||
return {'data': self.get_child_info(NameID, childID)}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Family'),
|
||||
display_order=7,
|
||||
description=_('Update coordinates'),
|
||||
perm='can_access',
|
||||
name='update-coordinates',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'personID': {'description': _('Person ID')},
|
||||
},
|
||||
post={'request_body': {'schema': {'application/json': COORDINATES_SCHEMA}}},
|
||||
)
|
||||
def update_coordinates(self, request, NameID, personID, post_data):
|
||||
link = self.get_link(NameID)
|
||||
params = defaultdict(dict)
|
||||
for address_param in ('num', 'zipcode', 'town'):
|
||||
if address_param in post_data:
|
||||
params['adresse'][address_param] = post_data[address_param]
|
||||
if 'street' in post_data:
|
||||
params['adresse']['street1'] = post_data['street']
|
||||
|
||||
for contact_param in ('phone', 'mobile', 'mail'):
|
||||
if contact_param in post_data:
|
||||
params['contact'][contact_param] = post_data[contact_param]
|
||||
|
||||
r = self.call(
|
||||
'FamilyService?wsdl', 'updateCoordinate', numDossier=link.family_id, numPerson=personID, **params
|
||||
)
|
||||
return serialize_object(r)
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Invoices'),
|
||||
display_order=1,
|
||||
name='regie',
|
||||
perm='can_access',
|
||||
pattern=r'^(?P<regie_id>[\w-]+)/invoices/?$',
|
||||
example_pattern='{regie_id}/invoices',
|
||||
description=_("Get invoices to pay"),
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'regie_id': {'description': _('Regie identifier'), 'example_value': '42-42'},
|
||||
},
|
||||
)
|
||||
def invoices(self, request, regie_id, NameID):
|
||||
invoices = [i for i in self.get_invoices(regie_id=regie_id, name_id=NameID) if not i['paid']]
|
||||
return {'data': invoices}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Invoices'),
|
||||
display_order=2,
|
||||
name='regie',
|
||||
perm='can_access',
|
||||
pattern=r'^(?P<regie_id>[\w-]+)/invoices/history/?$',
|
||||
example_pattern='{regie_id}/invoices/history',
|
||||
description=_("Get invoices already paid"),
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'regie_id': {'description': _('Regie identifier'), 'example_value': '42-42'},
|
||||
},
|
||||
)
|
||||
def invoices_history(self, request, regie_id, NameID):
|
||||
invoices = [i for i in self.get_invoices(regie_id=regie_id, name_id=NameID) if i['paid']]
|
||||
return {'data': invoices}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Invoices'),
|
||||
display_order=3,
|
||||
name='regie',
|
||||
perm='can_access',
|
||||
pattern=r'^(?P<regie_id>[\w-]+)/invoice/(?P<invoice_id>(historical-)?\w+-\d+)/?$',
|
||||
example_pattern='{regie_id}/invoice/{invoice_id}',
|
||||
description=_('Get invoice details'),
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'regie_id': {'description': _('Regie identifier'), 'example_value': '1'},
|
||||
'invoice_id': {'description': _('Invoice identifier'), 'example_value': '42-42'},
|
||||
},
|
||||
)
|
||||
def invoice(self, request, regie_id, invoice_id, NameID):
|
||||
for invoice in self.get_invoices(regie_id=regie_id, name_id=NameID):
|
||||
if invoice['id'] == invoice_id:
|
||||
return {'data': invoice}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Invoices'),
|
||||
display_order=4,
|
||||
name='regie',
|
||||
perm='can_access',
|
||||
pattern=r'^(?P<regie_id>[\w-]+)/invoice/(?P<invoice_id>(historical-)?\w+-\d+)/pdf/?$',
|
||||
example_pattern='{regie_id}/invoice/{invoice_id}/pdf',
|
||||
description=_('Get invoice as a PDF file'),
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'regie_id': {'description': _('Regie identifier'), 'example_value': '1'},
|
||||
'invoice_id': {'description': _('Invoice identifier'), 'example_value': '42-42'},
|
||||
},
|
||||
)
|
||||
def invoice_pdf(self, request, regie_id, invoice_id, **kwargs):
|
||||
# TODO to implement
|
||||
pass
|
||||
|
||||
@endpoint(
|
||||
perm='can_access',
|
||||
description=_('Get activity list'),
|
||||
name='activity-list',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'personID': {'description': _('Person ID')},
|
||||
'school_year': {'description': _('School year')},
|
||||
},
|
||||
)
|
||||
def activity_list(
|
||||
self, request, NameID, personID, school_year=None, start_datetime=None, end_datetime=None
|
||||
):
|
||||
link = self.get_link(NameID)
|
||||
family_data = self.get_family_data(link.family_id)
|
||||
if personID not in [c['id'] for c in family_data['childInfoList']]:
|
||||
raise APIError('Child not found', err_code='not-found')
|
||||
if not school_year:
|
||||
school_year = utils.get_school_year()
|
||||
if not start_datetime:
|
||||
start_datetime = timezone.now()
|
||||
if not end_datetime:
|
||||
end_datetime = start_datetime + timezone.timedelta(days=62)
|
||||
r = self.call(
|
||||
'ActivityService?wsdl',
|
||||
'readActivityList',
|
||||
schoolyear=school_year,
|
||||
numPerson=personID,
|
||||
dateStartCalend=start_datetime,
|
||||
dateEndCalend=end_datetime,
|
||||
)
|
||||
activities = serialize_object(r)
|
||||
return {'data': [utils.normalize_activity(a) for a in activities]}
|
||||
|
||||
def get_activities_dates(self, query_date):
|
||||
if query_date:
|
||||
try:
|
||||
start_date = parse_date(query_date)
|
||||
except ValueError as exc:
|
||||
raise APIError('input is well formatted but not a valid date: %s' % exc)
|
||||
if not start_date:
|
||||
raise APIError("input isn't well formatted, YYYY-MM-DD expected: %s" % query_date)
|
||||
else:
|
||||
start_date = timezone.now().date()
|
||||
if start_date.strftime('%m-%d') >= '05-01':
|
||||
# start displaying next year activities on may
|
||||
school_year = start_date.year
|
||||
else:
|
||||
school_year = start_date.year - 1
|
||||
end_date = utils.get_datetime('%s-07-31' % (school_year + 1)).date()
|
||||
return school_year, start_date, end_date
|
||||
|
||||
def get_child_activities(self, childID, school_year, start_date, end_date):
|
||||
r = self.call(
|
||||
'ActivityService?wsdl',
|
||||
'readActivityList',
|
||||
schoolyear=school_year,
|
||||
numPerson=childID,
|
||||
dateStartCalend=start_date,
|
||||
dateEndCalend=end_date,
|
||||
)
|
||||
return serialize_object(r)
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Activities'),
|
||||
perm='can_access',
|
||||
display_order=2,
|
||||
description=_('Get child activities'),
|
||||
name='child-activities',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'childID': {'description': _('Child ID')},
|
||||
'subscribePublication': {'description': _('string including E, N or L (default to "E")')},
|
||||
'subscribingStatus': {'description': _('subscribed, not-subscribed or None')},
|
||||
'queryDate': {'description': _('Optional querying date (YYYY-MM-DD)')},
|
||||
},
|
||||
)
|
||||
def child_activities(
|
||||
self, request, NameID, childID, subscribePublication='E', subscribingStatus=None, queryDate=None
|
||||
):
|
||||
if subscribingStatus and subscribingStatus not in ('subscribed', 'not-subscribed'):
|
||||
raise APIError('wrong value for subscribingStatus: %s' % subscribingStatus)
|
||||
school_year, start_date, end_date = self.get_activities_dates(queryDate)
|
||||
child_info = self.get_child_info(NameID, childID)
|
||||
activities = self.get_child_activities(childID, school_year, start_date, end_date)
|
||||
flatted_activities = utils.flatten_activities(activities, start_date, end_date)
|
||||
utils.mark_subscribed_flatted_activities(flatted_activities, child_info)
|
||||
data = utils.flatted_activities_as_list(
|
||||
flatted_activities, subscribePublication, subscribingStatus, start_date
|
||||
)
|
||||
return {'data': data}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Activities'),
|
||||
perm='can_access',
|
||||
display_order=3,
|
||||
description=_('Get bus lines (units)'),
|
||||
name='bus-lines',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'childID': {'description': _('Child ID')},
|
||||
'activityID': {'description': _('Activity ID')},
|
||||
'unitID': {'description': _('Unit ID')},
|
||||
'queryDate': {'description': _('Optional querying date (YYYY-MM-DD)')},
|
||||
'direction': {'description': _('aller, retour or None')},
|
||||
},
|
||||
)
|
||||
def bus_lines(self, request, NameID, childID, activityID, unitID, queryDate=None, direction=None):
|
||||
if direction and direction.lower() not in ('aller', 'retour'):
|
||||
raise APIError('wrong value for direction: %s' % direction)
|
||||
school_year, start_date, end_date = self.get_activities_dates(queryDate)
|
||||
self.get_child_info(NameID, childID)
|
||||
activities = self.get_child_activities(childID, school_year, start_date, end_date)
|
||||
flatted_activities = utils.flatten_activities(activities, start_date, end_date)
|
||||
legacy_activity_info = flatted_activities[activityID]['info']
|
||||
legacy_unit_info = flatted_activities[activityID]['units'][unitID]['info']
|
||||
|
||||
bus_lines = []
|
||||
bus_activity_id = legacy_activity_info['bus_activity_id']
|
||||
for bus_unit_id in legacy_activity_info['bus_unit_ids']:
|
||||
bus_unit_info = flatted_activities[bus_activity_id]['units'][bus_unit_id]['info']
|
||||
if direction and direction.lower() not in bus_unit_info['unit_text']:
|
||||
continue
|
||||
unit_calendar_letter = bus_unit_info['unit_calendar_letter']
|
||||
unit_weekly_planning = ""
|
||||
for letter in legacy_activity_info['activity_weekly_planning_mask']:
|
||||
if letter == '0':
|
||||
unit_weekly_planning += unit_calendar_letter
|
||||
else:
|
||||
unit_weekly_planning += '1'
|
||||
bus_lines.append(
|
||||
{
|
||||
'id': bus_unit_info['unit_id'],
|
||||
'text': bus_unit_info['unit_text'],
|
||||
'unit_id': bus_unit_info['unit_id'],
|
||||
'activity_id': bus_activity_id,
|
||||
'unit_calendar_letter': unit_calendar_letter,
|
||||
'unit_weekly_planning': unit_weekly_planning,
|
||||
'subscribe_start_date': legacy_unit_info['unit_start_date'],
|
||||
'subscribe_end_date': legacy_unit_info['unit_end_date'],
|
||||
}
|
||||
)
|
||||
return {'data': bus_lines}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Activities'),
|
||||
perm='can_access',
|
||||
display_order=4,
|
||||
description=_('Get bus stops (places)'),
|
||||
name='bus-stops',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'childID': {'description': _('Child ID')},
|
||||
'busActivityID': {'description': _('Activity ID')},
|
||||
'busUnitID': {'description': _('Bus Unit ID')},
|
||||
'queryDate': {'description': _('Optional querying date (YYYY-MM-DD)')},
|
||||
},
|
||||
)
|
||||
def bus_stops(self, request, NameID, childID, busActivityID, busUnitID, queryDate=None):
|
||||
school_year, start_date, end_date = self.get_activities_dates(queryDate)
|
||||
self.get_child_info(NameID, childID)
|
||||
activities = self.get_child_activities(childID, school_year, start_date, end_date)
|
||||
|
||||
for activity in activities:
|
||||
if activity['activityPortail']['idAct'] != busActivityID:
|
||||
continue
|
||||
break
|
||||
else:
|
||||
raise APIError('Bus activity not found: %s' % busActivityID, err_code='not-found')
|
||||
|
||||
for unit in activity['unitPortailList']:
|
||||
if unit['idUnit'] != busUnitID:
|
||||
continue
|
||||
break
|
||||
else:
|
||||
raise APIError('Bus unit not found: %s' % busUnitID, err_code='not-found')
|
||||
|
||||
bus_stops = []
|
||||
for place in unit['placeList']:
|
||||
bus_stops.append(
|
||||
{
|
||||
'id': place['id'],
|
||||
'text': ' '.join([w.capitalize() for w in place['lib'].split(' ')]),
|
||||
}
|
||||
)
|
||||
if bus_stops:
|
||||
bus_stops[0]['disabled'] = True # hide terminus
|
||||
return {'data': bus_stops}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Activities'),
|
||||
perm='can_access',
|
||||
display_order=3,
|
||||
description=_('Read child planning'),
|
||||
name='child-planning',
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'childID': {'description': _('Child ID')},
|
||||
'start_date': {'description': _('Start date (YYYY-MM-DD format)')},
|
||||
'end_date': {'description': _('End date (YYYY-MM-DD format)')},
|
||||
'legacy': {'description': _('Decompose events related to parts of the day if set')},
|
||||
},
|
||||
)
|
||||
def child_planning(self, request, NameID, childID, start_date=None, end_date=None, legacy=None):
|
||||
"""Return an events list sorted by id"""
|
||||
link = self.get_link(NameID)
|
||||
family_data = self.get_family_data(link.family_id)
|
||||
if childID not in [c['id'] for c in family_data['childInfoList']]:
|
||||
raise APIError('Child not found', err_code='not-found')
|
||||
if start_date and end_date:
|
||||
start = utils.get_datetime(start_date)
|
||||
end = utils.get_datetime(end_date)
|
||||
else:
|
||||
start, end = utils.week_boundaries_datetimes(start_date)
|
||||
school_year = utils.get_school_year(start.date())
|
||||
|
||||
r = self.call(
|
||||
'ActivityService?wsdl',
|
||||
'readActivityList',
|
||||
schoolyear=school_year,
|
||||
numPerson=childID,
|
||||
dateStartCalend=start,
|
||||
dateEndCalend=end,
|
||||
)
|
||||
activities = serialize_object(r)
|
||||
events = {key: value for a in activities for (key, value) in utils.get_events(a, start, end)}
|
||||
|
||||
for date in utils.month_range(start, end):
|
||||
r = self.call(
|
||||
'ActivityService?wsdl',
|
||||
'readChildMonthPlanning',
|
||||
year=date.year,
|
||||
numMonth=date.month,
|
||||
numPerson=childID,
|
||||
)
|
||||
planning = serialize_object(r['calendList'])
|
||||
for schedule in planning:
|
||||
utils.book_event(events, schedule, start, end)
|
||||
|
||||
if not legacy:
|
||||
events = {
|
||||
x['id']: x # dictionary is used de remove dupplicated events
|
||||
for e in events.values()
|
||||
for x in utils.decompose_event(e)
|
||||
}
|
||||
return {'data': [s[1] for s in sorted(events.items())]}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Family'),
|
||||
perm='can_access',
|
||||
display_order=10,
|
||||
description=_('Subscribe'),
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'childID': {'description': _('Child ID')},
|
||||
'activityID': {'description': _('Activity ID')},
|
||||
'unitID': {'description': _('Unit ID')},
|
||||
'placeID': {'description': _('Place ID')},
|
||||
'weeklyPlanning': {'description': _('Week planning (7 chars)')},
|
||||
'start_date': {'description': _('Start date of the unit (YYYY-MM-DD)')},
|
||||
'end_date': {'description': _('End date of the unit (YYYY-MM-DD)')},
|
||||
},
|
||||
)
|
||||
def subscribe(
|
||||
self, request, NameID, childID, activityID, unitID, placeID, weeklyPlanning, start_date, end_date
|
||||
):
|
||||
self.get_child_info(NameID, childID)
|
||||
client = self.get_client('FamilyService?wsdl')
|
||||
trigram_type = client.get_type('ns1:activityUnitPlaceBean')
|
||||
trigram = trigram_type(idActivity=activityID, idUnit=unitID, idPlace=placeID)
|
||||
subscription_type = client.get_type('ns1:subscribeActivityRequestBean')
|
||||
subpscription = subscription_type(
|
||||
personNumber=childID,
|
||||
activityUnitPlace=trigram,
|
||||
weeklyPlanning=weeklyPlanning,
|
||||
dateStart=start_date,
|
||||
dateEnd=end_date,
|
||||
)
|
||||
r = self.call('FamilyService?wsdl', 'subscribeActivity', subscribeActivityRequestBean=subpscription)
|
||||
return {'data': serialize_object(r)}
|
||||
|
||||
@endpoint(
|
||||
display_category=_('Family'),
|
||||
perm='can_access',
|
||||
display_order=11,
|
||||
description=_('Unsubscribe'),
|
||||
parameters={
|
||||
'NameID': {'description': _('Publik ID')},
|
||||
'childID': {'description': _('Child ID')},
|
||||
'activityID': {'description': _('Activity ID')},
|
||||
'start_date': {'description': _('Start date of the unit (YYYY-MM-DD)')},
|
||||
},
|
||||
)
|
||||
def unsubscribe(self, request, NameID, childID, activityID, start_date):
|
||||
self.get_child_info(NameID, childID)
|
||||
r = self.call(
|
||||
'FamilyService?wsdl',
|
||||
'deletesubscribe',
|
||||
numPerson=childID,
|
||||
idActivite=activityID,
|
||||
dateRefDelete=start_date,
|
||||
)
|
||||
return {'data': serialize_object(r)}
|
||||
|
||||
|
||||
class Link(models.Model):
|
||||
resource = models.ForeignKey(Maelis, on_delete=models.CASCADE)
|
||||
name_id = models.CharField(blank=False, max_length=256)
|
||||
family_id = models.CharField(blank=False, max_length=128)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('resource', 'name_id')
|
|
@ -1,352 +0,0 @@
|
|||
# passerelle - uniform access to multiple data sources and services
|
||||
# Copyright (C) 2020 Entr'ouvert
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Affero General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
import re
|
||||
from copy import copy, deepcopy
|
||||
from datetime import datetime
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from django.utils import timezone
|
||||
from django.utils.dateparse import parse_date
|
||||
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
|
||||
DATE_FORMAT = '%Y-%m-%d'
|
||||
TIME_FORMAT = '%H:%M:%S'
|
||||
DATETIME_FORMAT = DATE_FORMAT + ' ' + TIME_FORMAT
|
||||
|
||||
COMPONENTS = {
|
||||
'PART01': {
|
||||
'text': 'Matinée',
|
||||
'time': '08:00:00',
|
||||
},
|
||||
'PART02': {
|
||||
'text': 'Repas',
|
||||
'time': '12:00:00',
|
||||
},
|
||||
'PART03': {
|
||||
'text': 'Après-midi',
|
||||
'time': '14:00:00',
|
||||
},
|
||||
}
|
||||
|
||||
COMPOSED_UNITS = {
|
||||
'A10003132034': { # JOURNEE
|
||||
'virtual_unit': 'EO0001',
|
||||
'components': ['PART01', 'PART02', 'PART03'],
|
||||
},
|
||||
'A10003132036': { # MATIN
|
||||
'virtual_unit': 'EO0001',
|
||||
'components': ['PART01'],
|
||||
},
|
||||
'A10003132038': { # MATIN ET REPAS
|
||||
'virtual_unit': 'EO0001',
|
||||
'components': ['PART01', 'PART02'],
|
||||
},
|
||||
'A10003132040': { # APRES MIDI
|
||||
'virtual_unit': 'EO0001',
|
||||
'components': ['PART03'],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def normalize_invoice(invoice):
|
||||
data = {
|
||||
'id': '%s-%s' % (invoice.numFamily, invoice.numInvoice),
|
||||
'display_id': str(invoice.numInvoice),
|
||||
'label': invoice.TTFInfo.libelle,
|
||||
'created': invoice.dateInvoice.strftime(DATETIME_FORMAT),
|
||||
'amount': invoice.amountInvoice - invoice.amountPaid,
|
||||
'paid': invoice.amountInvoice == invoice.amountPaid,
|
||||
'total_amount': invoice.amountInvoice,
|
||||
'pay_limit_date': invoice.dateDeadline.strftime(DATETIME_FORMAT),
|
||||
'has_pdf': bool(invoice.pdfName),
|
||||
'amount_paid': invoice.amountPaid,
|
||||
}
|
||||
if invoice.amountInvoice == invoice.amountPaid:
|
||||
data.update({'amount': 0, 'pay_limit_date': '', 'online_payment': False})
|
||||
return data
|
||||
|
||||
|
||||
def normalize_activity(activity):
|
||||
activity['id'] = activity['activityPortail']['idAct']
|
||||
activity['text'] = activity['activityPortail']['label']
|
||||
return activity
|
||||
|
||||
|
||||
def normalize_person(person):
|
||||
person['id'] = person['num']
|
||||
person['text'] = '{} {}'.format(person['firstname'], person['lastname']).strip()
|
||||
return person
|
||||
|
||||
|
||||
def get_school_year(date=None):
|
||||
if not date:
|
||||
date = timezone.now().date()
|
||||
if date.strftime('%m-%d') >= '07-31':
|
||||
return date.year
|
||||
else:
|
||||
return date.year - 1
|
||||
|
||||
|
||||
def week_boundaries_datetimes(date_string=None):
|
||||
"""Return start and end of the week including the provided date,
|
||||
or the current week if no date is provided."""
|
||||
if date_string:
|
||||
date = parse_date(date_string)
|
||||
else:
|
||||
date = timezone.now().date()
|
||||
week_date_string = date.strftime('%Y-W%W')
|
||||
monday_datetime = timezone.make_aware(datetime.strptime(week_date_string + '-1', "%Y-W%W-%w"))
|
||||
sunday_datetime = timezone.make_aware(datetime.strptime(week_date_string + '-0', "%Y-W%W-%w"))
|
||||
return monday_datetime, sunday_datetime
|
||||
|
||||
|
||||
def get_datetime(date_string):
|
||||
return datetime.combine(parse_date(date_string), datetime.min.time())
|
||||
|
||||
|
||||
def month_range(start_datetime, end_datetime):
|
||||
"""Generate first days of month for the provided date range."""
|
||||
if end_datetime < start_datetime:
|
||||
return
|
||||
date_time = start_datetime.replace(day=1)
|
||||
while date_time.strftime('%Y-%m') <= end_datetime.strftime('%Y-%m'):
|
||||
yield date_time
|
||||
date_time = date_time + relativedelta(months=1)
|
||||
|
||||
|
||||
def get_events(activity, start_datetime, end_datetime):
|
||||
"""Generate events from activity's open days
|
||||
the events looks like the chrono ones : /api/agenda/agenda-evenement/datetimes/
|
||||
(https://doc-publik.entrouvert.com/dev/api-chrono/#exemple)"""
|
||||
activity_id = activity['activityPortail']['idAct']
|
||||
for unit in activity['unitPortailList']:
|
||||
unit_id = unit['idUnit']
|
||||
for date_time in activity['openDayList']:
|
||||
|
||||
# readActivityList may return more days than requested
|
||||
if not start_datetime <= date_time <= end_datetime:
|
||||
continue
|
||||
|
||||
date_string = date_time.strftime(DATE_FORMAT)
|
||||
time_string = date_time.strftime(TIME_FORMAT)
|
||||
event_id = '%s-%s-%s' % (date_string, activity_id, unit_id)
|
||||
yield event_id, {
|
||||
'id': event_id,
|
||||
'category_id': activity_id,
|
||||
'slot_id': unit_id,
|
||||
'datetime': '%s %s' % (date_string, time_string),
|
||||
'category': activity['activityPortail']['label'],
|
||||
'text': unit['label'],
|
||||
'user_booking_status': 'not-booked',
|
||||
}
|
||||
|
||||
|
||||
def book_event(events, schedule, start_date, end_date):
|
||||
"""Book event matching the provided schedule."""
|
||||
activity_id = schedule['unit']['idActivity']
|
||||
unit_id = schedule['unit']['id']
|
||||
for day in schedule['listDays']:
|
||||
if not start_date <= day['datePlanning'] <= end_date:
|
||||
continue
|
||||
|
||||
date_string = day['datePlanning'].strftime(DATE_FORMAT)
|
||||
event_id = '%s-%s-%s' % (date_string, activity_id, unit_id)
|
||||
|
||||
# database may be corrupted by using updateScheduleCalendars
|
||||
try:
|
||||
event = events[event_id]
|
||||
except KeyError:
|
||||
raise APIError('The planning returns an unknow day on activities: %s' % day['datePlanning'])
|
||||
|
||||
event['user_booking_status'] = 'booked'
|
||||
|
||||
|
||||
def decompose_event(event):
|
||||
"""Break down 'JOURNEE', 'MATIN', 'MATIN ET REPAS' and APRES MIDI' units
|
||||
into 'Matin', 'Repas' and 'Après-midi' virtual units."""
|
||||
if event['slot_id'] not in COMPOSED_UNITS:
|
||||
yield event
|
||||
return
|
||||
|
||||
date_time = datetime.strptime(event['datetime'], DATETIME_FORMAT)
|
||||
date_string = date_time.strftime(DATE_FORMAT)
|
||||
composition = COMPOSED_UNITS[event['slot_id']]
|
||||
|
||||
for component_id in composition['components']:
|
||||
component = COMPONENTS[component_id]
|
||||
new_event = copy(event)
|
||||
new_event['datetime'] = '%s %s' % (date_string, component['time'])
|
||||
new_event['slot_id'] = "%s%s" % (composition['virtual_unit'], component_id)
|
||||
new_event['id'] = '%s-%s-%s' % (date_string, event['category_id'], new_event['slot_id'])
|
||||
new_event['text'] = component['text']
|
||||
yield new_event
|
||||
|
||||
|
||||
def flatten_activities(activities, start_date, end_date):
|
||||
regex = re.compile('^([0-9] ){0,1}2[0-9]{3}-2[0-9]{3} ') # prefix to remove
|
||||
data = {}
|
||||
for activity in activities:
|
||||
if activity.get('openDayList'):
|
||||
del activity['openDayList']
|
||||
activity_id = activity['activityPortail']['idAct']
|
||||
activity_text = activity_text_legacy = activity['activityPortail']['label']
|
||||
match = regex.match(activity_text)
|
||||
if match:
|
||||
activity_text = activity_text[match.end() :].strip()
|
||||
activity_text = activity_text.capitalize()
|
||||
activity_obj = deepcopy(activity)
|
||||
del activity_obj['unitPortailList']
|
||||
if not activity_obj['activityPortail']['activityType']:
|
||||
activity_obj['activityPortail']['activityType'] = {
|
||||
"code": "?",
|
||||
"libelle": "Inconnu",
|
||||
"natureSpec": {"code": "?", "libelle": "Inconnu"},
|
||||
}
|
||||
|
||||
# compute weekly planning mask parameter to use for subscribing
|
||||
planning_masks = []
|
||||
for year in range(start_date.year, end_date.year + 1):
|
||||
for item in activity['activityPortail']['weeklyCalendarActivityList']:
|
||||
if item['yearCalendar'] == year:
|
||||
planning_masks.append(item['weeklyCalendarStr'])
|
||||
break
|
||||
if planning_masks:
|
||||
activity_weekly_planning_mask = ""
|
||||
for letters in zip(*planning_masks):
|
||||
if '1' in letters:
|
||||
activity_weekly_planning_mask += '1'
|
||||
else:
|
||||
activity_weekly_planning_mask += '0'
|
||||
else:
|
||||
activity_weekly_planning_mask = "0000000"
|
||||
bus_unit_ids = []
|
||||
bus_activity_id = None
|
||||
if activity['activityPortail'].get('activityBusList'):
|
||||
bus_activity_id = activity['activityPortail']['activityBusList'][0]['activity']['id']
|
||||
for bus_unit in activity['activityPortail']['activityBusList'][0]['unitList']:
|
||||
bus_unit_ids.append(bus_unit['idUnit'])
|
||||
activity_info = {
|
||||
'activity_id': activity_id,
|
||||
'activity_text': activity_text,
|
||||
'activity_object': activity_obj,
|
||||
'activity_weekly_planning_mask': activity_weekly_planning_mask,
|
||||
'bus_activity_id': bus_activity_id,
|
||||
'bus_unit_ids': bus_unit_ids,
|
||||
}
|
||||
|
||||
units = {}
|
||||
for unit in activity['unitPortailList']:
|
||||
unit_id = unit['idUnit']
|
||||
unit_text = unit_text_legacy = unit['label']
|
||||
match = regex.match(unit_text)
|
||||
if match:
|
||||
unit_text = unit_text[match.end() :].strip()
|
||||
unit_text = unit_text.capitalize()
|
||||
text_first_part = activity_text
|
||||
if activity_text != unit_text:
|
||||
text_first_part += ' / ' + unit_text
|
||||
unit_obj = deepcopy(unit)
|
||||
del unit_obj['placeList']
|
||||
|
||||
# compute subscribing parameters
|
||||
unit_start_date = unit['dateStart']
|
||||
unit_end_date = unit['dateEnd'] or datetime.combine(end_date, datetime.min.time())
|
||||
unit_calendar_letter = unit['calendarLetter']
|
||||
unit_weekly_planning = ""
|
||||
for letter in activity_weekly_planning_mask:
|
||||
if letter == '0':
|
||||
unit_weekly_planning += unit_calendar_letter
|
||||
else:
|
||||
unit_weekly_planning += '1'
|
||||
unit_info = {
|
||||
'unit_id': unit_id,
|
||||
'unit_text': unit_text,
|
||||
'text_first_part': text_first_part,
|
||||
'unit_object': unit_obj,
|
||||
'unit_start_date': unit_start_date,
|
||||
'unit_end_date': unit_end_date,
|
||||
'unit_calendar_letter': unit_calendar_letter,
|
||||
'unit_weekly_planning': unit_weekly_planning,
|
||||
}
|
||||
|
||||
places = {}
|
||||
for place in unit['placeList']:
|
||||
place_id = place['id']
|
||||
place_text_legacy = place['lib']
|
||||
place_text = ' '.join([w.capitalize() for w in place_text_legacy.split(' ')])
|
||||
|
||||
places[place_text_legacy] = {
|
||||
'id': '%s-%s-%s' % (activity_id, unit_id, place_id),
|
||||
'text_legacy': '%s / %s / %s'
|
||||
% (activity_text_legacy, unit_text_legacy, place_text_legacy),
|
||||
'text_first_part': text_first_part,
|
||||
'text': "%s / %s" % (text_first_part, place_text),
|
||||
'activity_id': activity_id,
|
||||
'unit_id': unit_id,
|
||||
'place_id': place_id,
|
||||
'activity_text': activity_text,
|
||||
'unit_text': unit_text,
|
||||
'place_text': place_text,
|
||||
'activity_weekly_planning_mask': activity_weekly_planning_mask,
|
||||
'subscribe_start_date': unit_start_date,
|
||||
'subscribe_end_date': unit_end_date,
|
||||
'unit_calendar_letter': unit_calendar_letter,
|
||||
'unit_weekly_planning': unit_weekly_planning,
|
||||
'activity_object': activity_obj,
|
||||
'unit_object': unit_obj,
|
||||
'place_object': place,
|
||||
}
|
||||
units[unit_id] = {'info': unit_info, 'places': places}
|
||||
data[activity_id] = {'info': activity_info, 'units': units}
|
||||
return data
|
||||
|
||||
|
||||
def mark_subscribed_flatted_activities(flatted_activities, child_info):
|
||||
for child_activity in child_info['subscribeActivityList']:
|
||||
activity = flatted_activities[child_activity['idActivity']]
|
||||
for child_unit in child_activity['subscribesUnit']:
|
||||
unit = activity['units'].get(child_unit['idUnit'])
|
||||
if not unit: # generic unit for bus line is not described on the catalog
|
||||
continue
|
||||
place = unit['places'][child_activity['place']]
|
||||
place['user_subscribing_status'] = 'subscribed'
|
||||
place['unsubscribe_start_date'] = child_unit['dateStart']
|
||||
|
||||
|
||||
def flatted_activities_as_list(flatted_activities, publication_filter, subscribe_filter, query_date):
|
||||
data = []
|
||||
for activity in [a[1] for a in sorted(flatted_activities.items())]:
|
||||
for unit in [u[1] for u in sorted(activity['units'].items())]:
|
||||
unit_info = unit['info']
|
||||
if unit_info['unit_object']['subscribePublication'] not in publication_filter:
|
||||
continue
|
||||
if query_date > unit_info['unit_end_date'].date():
|
||||
continue
|
||||
is_unit_subscribed = False
|
||||
for place in unit['places'].values():
|
||||
if place.get('user_subscribing_status'):
|
||||
is_unit_subscribed = True
|
||||
else:
|
||||
place['user_subscribing_status'] = 'not-subscribed'
|
||||
if subscribe_filter == 'not-subscribed' and is_unit_subscribed:
|
||||
continue
|
||||
for place in sorted(unit['places'].values(), key=lambda p: p['place_id']):
|
||||
if not subscribe_filter or place['user_subscribing_status'] == subscribe_filter:
|
||||
data.append(place)
|
||||
return data
|
|
@ -17,7 +17,6 @@
|
|||
import collections
|
||||
|
||||
import zeep
|
||||
import zeep.exceptions
|
||||
import zeep.helpers
|
||||
import zeep.xsd
|
||||
from django.db import models
|
||||
|
@ -127,16 +126,7 @@ class SOAPConnector(BaseResource, HTTPResource):
|
|||
payload[k] = value[0]
|
||||
payload.update(post_data or {})
|
||||
payload = unflatten(payload)
|
||||
try:
|
||||
soap_response = getattr(self.client.service, method_name)(**payload)
|
||||
except zeep.exceptions.Fault as e:
|
||||
fault_details = {}
|
||||
for attrib in ['actor', 'code', 'message', 'subcode']:
|
||||
fault_details[attrib] = getattr(e, attrib, None)
|
||||
raise APIError('soap:Fault', data=fault_details)
|
||||
except zeep.exceptions.ValidationError as e:
|
||||
e.status_code = 400
|
||||
raise e
|
||||
soap_response = getattr(self.client.service, method_name)(**payload)
|
||||
serialized = zeep.helpers.serialize_object(soap_response)
|
||||
json_response = jsonify(serialized)
|
||||
return {'err': 0, 'data': json_response}
|
||||
|
|
|
@ -24,7 +24,6 @@ from django.core.cache import cache
|
|||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from zeep.exceptions import Fault as WebFault
|
||||
from zeep.helpers import serialize_object
|
||||
|
||||
from passerelle.base.models import BaseResource
|
||||
|
@ -227,12 +226,7 @@ class DPark(BaseResource):
|
|||
def call(self, operation, *args, **kwargs):
|
||||
service = get_service(self)
|
||||
bypass_erroneous_reply = kwargs.pop('bypass_erroneous_reply', False)
|
||||
try:
|
||||
reply = getattr(service, operation)(*args, **kwargs)
|
||||
except (WebFault,) as exc:
|
||||
raise APIError('ServiceError: %s' % exc)
|
||||
except (Exception,) as exc:
|
||||
raise APIError('Error: %s' % exc)
|
||||
reply = getattr(service, operation)(*args, **kwargs)
|
||||
reply_code = getattr(reply, 'CodeRetour', None) or getattr(reply, 'Code_Retour', None)
|
||||
reply_message = getattr(reply, 'MessageRetour', None) or getattr(reply, 'Lib_Retour', None)
|
||||
if reply_code != '01' and not bypass_erroneous_reply:
|
||||
|
|
|
@ -55,6 +55,7 @@ class ToulouseAxel(BaseResource):
|
|||
max_length=128, blank=False, verbose_name=_('WSDL URL'), help_text=_('Toulouse Axel WSDL URL')
|
||||
)
|
||||
|
||||
log_error = False
|
||||
category = _('Business Process Connectors')
|
||||
|
||||
_category_ordering = ['DUI', 'CAN-CLA', _('Invoices')]
|
||||
|
|
|
@ -76,10 +76,7 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
def call(self, wsdl_short_name, service, **kwargs):
|
||||
client = self.get_client(wsdl_short_name)
|
||||
method = getattr(client.service, service)
|
||||
try:
|
||||
response = method(**kwargs)
|
||||
except zeep.exceptions.Fault as e:
|
||||
raise APIError(e.message)
|
||||
response = method(**kwargs)
|
||||
return serialize_object(response)
|
||||
|
||||
def check_status(self):
|
||||
|
@ -3226,6 +3223,15 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
nurseries = [n for n in nurseries if n['activityType']['code'] == activity_type]
|
||||
if code_psu:
|
||||
nurseries = [n for n in nurseries if code_psu in [u['typeAcc'] for u in n['unitList']]]
|
||||
|
||||
for item in nurseries:
|
||||
item['activity_id'] = item['idActivity']
|
||||
item['place_id'] = item['place']['idPlace']
|
||||
item['unit_ids'] = {}
|
||||
for unit in item['unitList'] or []:
|
||||
item['unit_ids'][unit['typeAcc']] = unit['idUnit']
|
||||
if code_psu:
|
||||
item['unit_id'] = item['unit_ids'].get(code_psu)
|
||||
return {'data': nurseries}
|
||||
|
||||
@endpoint(
|
||||
|
@ -3285,6 +3291,23 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
post={'request_body': {'schema': {'application/json': family_schemas.NURSERY_DEMAND_SCHEMA}}},
|
||||
)
|
||||
def create_nursery_demand(self, request, post_data):
|
||||
apeIndicators = self.get_referential('ApeIndicator')
|
||||
for group in apeIndicators:
|
||||
if group['id'] == 'INDI_APE_ENF':
|
||||
key = 'child_indicators'
|
||||
elif group['id'] == 'INDI_APE_FAM':
|
||||
key = 'family_indicators'
|
||||
else:
|
||||
key = 'demand_indicators'
|
||||
expected_codes = [x['code'] for x in group['indicatorList']]
|
||||
for i, item in enumerate(post_data.get(key) or []):
|
||||
if item['code'] not in expected_codes:
|
||||
raise APIError(
|
||||
"%s/%i/code key value '%s' do not belong to APE '%s' indicators"
|
||||
% (key, i, item['code'], group['id'][-3:])
|
||||
)
|
||||
item['isActive'] = self.encode_bool(item['isActive'])
|
||||
|
||||
child_data = {}
|
||||
if post_data.get('child_id'):
|
||||
child_data['numPerson'] = post_data['child_id']
|
||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Passerelle 0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-03-16 23:49+0100\n"
|
||||
"POT-Creation-Date: 2023-03-21 18:37+0100\n"
|
||||
"PO-Revision-Date: 2023-03-16 23:52+0100\n"
|
||||
"Last-Translator: Frederic Peters <fpeters@entrouvert.com>\n"
|
||||
"Language: fr\n"
|
||||
|
@ -108,8 +108,8 @@ msgstr "valeur par défaut"
|
|||
#: apps/bbb/models.py apps/bdp/models.py apps/clicrdv/models.py
|
||||
#: apps/esabora/models.py apps/esirius/models.py apps/family/models.py
|
||||
#: apps/gdc/models.py apps/gesbac/models.py apps/litteralis/models.py
|
||||
#: apps/maelis/models.py apps/okina/models.py apps/signal_arretes/models.py
|
||||
#: apps/soap/models.py apps/solis/models.py apps/vivaticket/models.py
|
||||
#: apps/okina/models.py apps/signal_arretes/models.py apps/soap/models.py
|
||||
#: apps/solis/models.py apps/vivaticket/models.py
|
||||
#: contrib/caluire_axel/models.py contrib/dpark/models.py
|
||||
#: contrib/esirius_swi/models.py contrib/fake_family/models.py
|
||||
#: contrib/gdema/models.py contrib/greco/models.py
|
||||
|
@ -731,7 +731,7 @@ msgstr "Récupérer les moyens d’appairage de l’association"
|
|||
msgid "Association ID"
|
||||
msgstr "Identifiant de l’association"
|
||||
|
||||
#: apps/astregs/models.py apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: apps/astregs/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Publik ID"
|
||||
msgstr "Publik NameID"
|
||||
|
@ -2335,7 +2335,7 @@ msgstr "Id de transaction du paiement"
|
|||
msgid "PDF file not found"
|
||||
msgstr "Fichier PDF non trouvé"
|
||||
|
||||
#: apps/family/templates/family/genericfamily_detail.html apps/maelis/models.py
|
||||
#: apps/family/templates/family/genericfamily_detail.html
|
||||
msgid "Family"
|
||||
msgstr "Famille"
|
||||
|
||||
|
@ -2359,7 +2359,7 @@ msgstr "Récupérer les adultes :"
|
|||
msgid "Get family children:"
|
||||
msgstr "Récupérer les enfants :"
|
||||
|
||||
#: apps/family/templates/family/genericfamily_detail.html apps/maelis/models.py
|
||||
#: apps/family/templates/family/genericfamily_detail.html
|
||||
#: contrib/caluire_axel/models.py contrib/stub_invoices/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Invoices"
|
||||
|
@ -2830,182 +2830,6 @@ msgstr "Récupérer le statut d’une demande"
|
|||
msgid "Get submission decree"
|
||||
msgstr "Récupérer l’acte d’une demande"
|
||||
|
||||
#: apps/maelis/models.py apps/signal_arretes/models.py
|
||||
#: contrib/esirius_swi/models.py
|
||||
msgid "Base API URL"
|
||||
msgstr "URL de base"
|
||||
|
||||
#: apps/maelis/models.py apps/vivaticket/models.py
|
||||
msgid "API Login"
|
||||
msgstr "Login pour l’API"
|
||||
|
||||
#: apps/maelis/models.py apps/vivaticket/models.py
|
||||
msgid "API Password"
|
||||
msgstr "Mot de passe pour l’API"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Create link between user and family"
|
||||
msgstr "Lier un compte usager à une famille"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Delete link between user and family"
|
||||
msgstr "Supprimer une liaison entre un compte usager et une famille"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Get information about user's family"
|
||||
msgstr "Obtenir les informations famille d’un usager"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Get information about children"
|
||||
msgstr "Obtenir la liste des enfants"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Get information about adults"
|
||||
msgstr "Obtenir les informations concernant un enfant"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Get information about a child"
|
||||
msgstr "Obtenir les informations concernant un enfant"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Child ID"
|
||||
msgstr "Identifiant de l’enfant"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Update coordinates"
|
||||
msgstr "Mettre à jour les coordonnées"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Person ID"
|
||||
msgstr "Identifiant de la personne"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Get invoices to pay"
|
||||
msgstr "Obtenir les factures à payer"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Regie identifier"
|
||||
msgstr "Identifiant de la régie"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Get invoices already paid"
|
||||
msgstr "Obtenir les factures déjà payées"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/stub_invoices/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Get invoice details"
|
||||
msgstr "Obtenir les détails d’une facture"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/stub_invoices/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Invoice identifier"
|
||||
msgstr "Identifiant de facture"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
#: contrib/stub_invoices/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Get invoice as a PDF file"
|
||||
msgstr "Obtenir une facture au format PDF"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Get activity list"
|
||||
msgstr "Obtenir les activités"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "School year"
|
||||
msgstr "Année scolaire"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Activities"
|
||||
msgstr "Activités"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Get child activities"
|
||||
msgstr "Obtenir les activités d’un enfant"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "string including E, N or L (default to \"E\")"
|
||||
msgstr "chaîne de caractère contenant E, N ou L (« E » par défaut)"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "subscribed, not-subscribed or None"
|
||||
msgstr "subscribed, not-subscribed ou vide"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Optional querying date (YYYY-MM-DD)"
|
||||
msgstr "Date de requête optionnelle (YYYY-MM-DD)"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Get bus lines (units)"
|
||||
msgstr "Obtenir la liste des lignes de bus (unités)"
|
||||
|
||||
#: apps/maelis/models.py contrib/caluire_axel/models.py
|
||||
msgid "Activity ID"
|
||||
msgstr "Identifiant de l’activité"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Unit ID"
|
||||
msgstr "Identifiant de l’unité"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "aller, retour or None"
|
||||
msgstr "aller, retour ou None"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Get bus stops (places)"
|
||||
msgstr "Obtenir la liste des arrêts de bus (lieux)"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Bus Unit ID"
|
||||
msgstr "Identifiant de l’unité de la ligne de bus"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Read child planning"
|
||||
msgstr "Obtenir le planning de l’enfant"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Start date (YYYY-MM-DD format)"
|
||||
msgstr "Date de début (YYYY-MM-DD)"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "End date (YYYY-MM-DD format)"
|
||||
msgstr "Date de fin (YYYY-MM-DD)"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Decompose events related to parts of the day if set"
|
||||
msgstr ""
|
||||
"Décompose les événements reliés à des parties de journées si positionné"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Subscribe"
|
||||
msgstr "Inscription"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Place ID"
|
||||
msgstr "Identifiant du lieu"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Week planning (7 chars)"
|
||||
msgstr "Planning hebdomadaire de fréquentation (sur 7 caractères)"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Start date of the unit (YYYY-MM-DD)"
|
||||
msgstr "Date de début de l’unité (YYYY-MM-DD)"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "End date of the unit (YYYY-MM-DD)"
|
||||
msgstr "Date de fin de l’unité (YYYY-MM-DD)"
|
||||
|
||||
#: apps/maelis/models.py
|
||||
msgid "Unsubscribe"
|
||||
msgstr "Désinscription"
|
||||
|
||||
#: apps/mdel/models.py
|
||||
msgid "SFTP server for outgoing files"
|
||||
msgstr "Serveur SFTP pour les fichiers sortants"
|
||||
|
@ -3742,7 +3566,8 @@ msgstr "gabarit de texte, valeurs possibles %s"
|
|||
#: apps/pdf/forms.py
|
||||
#, python-format
|
||||
msgid "text template, possibles values <a href=\"%s\">data source</a>"
|
||||
msgstr "gabarit de texte, <a href=\"%s\">source de donnée</a> des valeurs possibles"
|
||||
msgstr ""
|
||||
"gabarit de texte, <a href=\"%s\">source de donnée</a> des valeurs possibles"
|
||||
|
||||
#: apps/pdf/forms.py
|
||||
#, python-brace-format
|
||||
|
@ -3820,7 +3645,8 @@ msgstr ""
|
|||
|
||||
#: apps/pdf/models.py
|
||||
msgid "Return possible values for PDF's combo or list form fields"
|
||||
msgstr "Renvoie les valeurs possibles pour un champ liste à choix d'un formulaire PDF"
|
||||
msgstr ""
|
||||
"Renvoie les valeurs possibles pour un champ liste à choix d'un formulaire PDF"
|
||||
|
||||
#: apps/pdf/models.py
|
||||
msgid "Identifier of the field"
|
||||
|
@ -4318,6 +4144,10 @@ msgstr "Date de fin de l'occupation"
|
|||
msgid "Comment"
|
||||
msgstr "Commentaire :"
|
||||
|
||||
#: apps/signal_arretes/models.py contrib/esirius_swi/models.py
|
||||
msgid "Base API URL"
|
||||
msgstr "URL de base"
|
||||
|
||||
#: apps/signal_arretes/models.py
|
||||
msgid "Get cities available in Signal Arrêtés"
|
||||
msgstr "Récupérer les communes disponibles dans Signal Arrêtés"
|
||||
|
@ -4648,6 +4478,14 @@ msgstr ""
|
|||
msgid "Account Sid"
|
||||
msgstr "Identifiant de compte"
|
||||
|
||||
#: apps/vivaticket/models.py
|
||||
msgid "API Login"
|
||||
msgstr "Login pour l’API"
|
||||
|
||||
#: apps/vivaticket/models.py
|
||||
msgid "API Password"
|
||||
msgstr "Mot de passe pour l’API"
|
||||
|
||||
#: apps/vivaticket/models.py
|
||||
msgid "Get event categories"
|
||||
msgstr "Récupérer les catégories d’événements"
|
||||
|
@ -4979,6 +4817,22 @@ msgstr "Lier un compte usager à Caluire Axel"
|
|||
msgid "Delete link between user and Caluire Axel"
|
||||
msgstr "Supprimer une liaison entre un compte usager et Caluire Axel"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Get information about user's family"
|
||||
msgstr "Obtenir les informations famille d’un usager"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Get information about children"
|
||||
msgstr "Obtenir la liste des enfants"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Get information about a child"
|
||||
msgstr "Obtenir les informations concernant un enfant"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Child ID"
|
||||
msgstr "Identifiant de l’enfant"
|
||||
|
||||
#: contrib/caluire_axel/models.py
|
||||
msgid "Upload attachments for child or family"
|
||||
msgstr "Transférer des pièces jointes pour un enfant ou une famille"
|
||||
|
@ -5027,6 +4881,10 @@ msgstr "Inscrire un enfant à une activité"
|
|||
msgid "Get agenda for an activity and a child"
|
||||
msgstr "Récupérer l’agenda pour une activité et un enfant"
|
||||
|
||||
#: contrib/caluire_axel/models.py
|
||||
msgid "Activity ID"
|
||||
msgstr "Identifiant de l’activité"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Start date of the period"
|
||||
msgstr "Date de début de la période"
|
||||
|
@ -5055,10 +4913,37 @@ msgstr "Répercuter les modifications de l’agenda sur un autre enfant"
|
|||
msgid "Set activity agenda for a child with a typical week"
|
||||
msgstr "Définir l’agenda d’un enfant pour une semaine type"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Get invoices to pay"
|
||||
msgstr "Obtenir les factures à payer"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Regie identifier"
|
||||
msgstr "Identifiant de la régie"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Get invoices already paid"
|
||||
msgstr "Obtenir les factures déjà payées"
|
||||
|
||||
#: contrib/caluire_axel/models.py
|
||||
msgid "Number of months of history"
|
||||
msgstr "Nombre de mois dans l’historique"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/stub_invoices/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Get invoice details"
|
||||
msgstr "Obtenir les détails d’une facture"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/stub_invoices/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Invoice identifier"
|
||||
msgstr "Identifiant de facture"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/stub_invoices/models.py
|
||||
#: contrib/toulouse_axel/models.py
|
||||
msgid "Get invoice as a PDF file"
|
||||
msgstr "Obtenir une facture au format PDF"
|
||||
|
||||
#: contrib/caluire_axel/models.py contrib/toulouse_axel/models.py
|
||||
msgid "Notify an invoice as paid"
|
||||
msgstr "Notifier le paiement de la facture"
|
||||
|
|
|
@ -156,7 +156,6 @@ INSTALLED_APPS = (
|
|||
'passerelle.apps.jsondatastore',
|
||||
'passerelle.apps.ldap',
|
||||
'passerelle.apps.litteralis',
|
||||
'passerelle.apps.maelis',
|
||||
'passerelle.apps.mdel',
|
||||
'passerelle.apps.mdel_ddpacs',
|
||||
'passerelle.apps.mobyt',
|
||||
|
|
|
@ -152,7 +152,6 @@ li.connector.okina a::before {
|
|||
|
||||
li.connector.fakefamily a::before,
|
||||
li.connector.genericfamily a::before,
|
||||
li.connector.maelis a::before,
|
||||
li.connector.teamnetaxel a::before {
|
||||
content: "\f0c0"; /* users */
|
||||
}
|
||||
|
|
|
@ -38,6 +38,8 @@ class Rect(typing.NamedTuple):
|
|||
|
||||
@classmethod
|
||||
def from_pdf_annotation(cls, annotation):
|
||||
if not annotation.Rect:
|
||||
raise ValueError('annotation has no rect')
|
||||
return cls(*map(float, annotation.Rect))
|
||||
|
||||
|
||||
|
@ -99,6 +101,7 @@ class Widget:
|
|||
self.field_type == pdfrw.PdfName.Btn
|
||||
and self.field_flags.is_radio
|
||||
and not self.field_flags.is_push_button
|
||||
and self.kids
|
||||
):
|
||||
return 'radio'
|
||||
elif (
|
||||
|
@ -119,14 +122,23 @@ class Widget:
|
|||
|
||||
@property
|
||||
def rect(self):
|
||||
return self.rects[0]
|
||||
rects = self.rects
|
||||
return self.rects[0] if rects else Rect(9999, 9999, 9999, 9999)
|
||||
|
||||
@property
|
||||
def rects(self):
|
||||
annotations = []
|
||||
if self.widget_type == 'radio':
|
||||
return [Rect.from_pdf_annotation(kid) for kid in self.kids_ordered_by_rect]
|
||||
annotations = self.kids_ordered_by_rect
|
||||
else:
|
||||
return [Rect.from_pdf_annotation(self.annotation)]
|
||||
annotations = [self.annotation]
|
||||
rects = []
|
||||
for annotation in annotations:
|
||||
try:
|
||||
rects.append(Rect.from_pdf_annotation(annotation))
|
||||
except ValueError:
|
||||
pass
|
||||
return rects
|
||||
|
||||
@property
|
||||
def digest_id(self):
|
||||
|
@ -150,10 +162,14 @@ class Widget:
|
|||
true_values.remove(pdfrw.PdfName.Off)
|
||||
return true_values[0]
|
||||
|
||||
@property
|
||||
def kids(self):
|
||||
return self.annotation.Kids or []
|
||||
|
||||
@property
|
||||
def kids_ordered_by_rect(self):
|
||||
assert self.widget_type == 'radio'
|
||||
kids = list(self.annotation.Kids or [])
|
||||
kids = list(self.kids)
|
||||
|
||||
def compare(kid1, kid2):
|
||||
return rect_compare(Rect.from_pdf_annotation(kid1), Rect.from_pdf_annotation(kid2))
|
||||
|
|
|
@ -21,7 +21,7 @@ from requests import RequestException
|
|||
from zeep import Client
|
||||
from zeep.cache import InMemoryCache
|
||||
from zeep.exceptions import Error as ZeepError
|
||||
from zeep.exceptions import Fault, TransportError
|
||||
from zeep.exceptions import Fault, TransportError, ValidationError
|
||||
from zeep.proxy import OperationProxy, ServiceProxy
|
||||
from zeep.transports import Transport
|
||||
|
||||
|
@ -49,17 +49,24 @@ class SOAPFault(SOAPError):
|
|||
log_error = False
|
||||
|
||||
def __init__(self, client, fault):
|
||||
dico = fault.__dict__
|
||||
if isinstance(dico.get('detail'), etree._Element):
|
||||
dico['detail'] = etree.tostring(dico['detail']).decode()
|
||||
detail = fault.detail
|
||||
if isinstance(detail, etree._Element):
|
||||
fault.detail = etree.tostring(detail).decode()
|
||||
elif isinstance(detail, bytes):
|
||||
fault.detail = detail.decode()
|
||||
super().__init__(
|
||||
f'SOAP service at {client.wsdl.location} returned an error "{fault.message or fault.code}"',
|
||||
data={
|
||||
'soap_fault': dico,
|
||||
'soap_fault': fault.__dict__,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
class SOAPValidationError(SOAPError):
|
||||
log_error = False
|
||||
http_status = 400
|
||||
|
||||
|
||||
class OperationProxyWrapper(OperationProxy):
|
||||
def __call__(self, *args, **kwargs):
|
||||
client = self._proxy._client
|
||||
|
@ -69,6 +76,8 @@ class OperationProxyWrapper(OperationProxy):
|
|||
raise SOAPServiceUnreachable(client, transport_error)
|
||||
except Fault as fault:
|
||||
raise SOAPFault(client, fault)
|
||||
except ValidationError as validation_error:
|
||||
raise SOAPValidationError(validation_error)
|
||||
except ZeepError as zeep_error:
|
||||
raise SOAPError(str(zeep_error))
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@ import hashlib
|
|||
import inspect
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import uuid
|
||||
from urllib.parse import quote
|
||||
|
||||
|
@ -637,13 +636,4 @@ class GenericExportConnectorView(GenericConnectorMixin, DetailView):
|
|||
class MediaView(View):
|
||||
def get(self, request, path, *args, **kwargs):
|
||||
document_root = DefaultStorage().location
|
||||
filename = DefaultStorage().path(path)
|
||||
filename = os.path.realpath(filename)
|
||||
if (
|
||||
not os.path.isabs(filename)
|
||||
or not filename.startswith(document_root)
|
||||
or not os.path.exists(filename)
|
||||
or not os.path.isfile(filename)
|
||||
):
|
||||
raise Http404()
|
||||
return serve(request, path, document_root=document_root, show_indexes=False)
|
||||
|
|
|
@ -1,676 +0,0 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="ActivityService" targetNamespace="activity.ws.maelis.sigec.com" xmlns:ns1="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="activity.ws.maelis.sigec.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<wsdl:types>
|
||||
<xs:schema targetNamespace="bean.persistence.ws.maelis.sigec.com" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:complexType name="weeklyCalendarActivityBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="yearCalendar" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="weeklyCalendarStr" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="personInfoBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idMaelis" type="xs:string" />
|
||||
<xs:element name="num" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="lastname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="firstname" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="personInfoLightBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="num" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="lastname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="firstname" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
<xs:schema targetNamespace="bean.persistence.activity.ws.maelis.sigec.com" version="1.0" xmlns:ns1="activity.ws.maelis.sigec.com" xmlns:ns2="bean.persistence.ws.maelis.sigec.com" xmlns:tns="bean.persistence.activity.ws.maelis.sigec.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:import namespace="activity.ws.maelis.sigec.com" />
|
||||
<xs:import namespace="bean.persistence.ws.maelis.sigec.com" />
|
||||
<xs:complexType name="updateRealCalendarsRequestBean">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="unitPersonDayInfoList" nillable="true" type="tns:unitPersonDayInfoBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="unitPersonDayInfoBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="idAct" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="idUni" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="date" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="action" type="ns1:dayInfoAction" />
|
||||
<xs:element minOccurs="0" name="idPlace" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="updateRealCalendarsResultBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="result" type="xs:boolean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="unitPersonDayInfoList" nillable="true" type="tns:unitPersonDayInfoErrorBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="unitPersonDayInfoErrorBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="errorMessage" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="unitPersonDayInfoBean" type="tns:unitPersonDayInfoBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="readActivityPortailListResultBean">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="activityUnitPlacePortailList" nillable="true" type="tns:activityUnitPlacePortailBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityUnitPlacePortailBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="activityPortail" type="tns:activityPortailBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="openDayList" nillable="true" type="xs:dateTime" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="unitPortailList" nillable="true" type="tns:unitPortailBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityPortailBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idAct" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="label" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="code" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="dateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEnd" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="birthControl" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="email" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="schoolYear" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="calendarGeneration" type="ns1:activityCalendarGenerationBean" />
|
||||
<xs:element minOccurs="0" name="dateStartPubli" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEndPubli" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="schoolControl" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="calendarMode" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="activityType" type="tns:activityTypeBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="weeklyCalendarActivityList" nillable="true" type="ns2:weeklyCalendarActivityBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="activityPeriodList" nillable="true" type="tns:activityPeriodCapacityBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="activityBusList" nillable="true" type="ns1:activityUnitPlaceBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityTypeBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="code" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="natureSpec" type="tns:activityNatureBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityNatureBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="code" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityPeriodCapacityBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ns1:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="period" type="ns1:periodBean" />
|
||||
<xs:element minOccurs="0" name="capacity" type="xs:int" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="calendCapacityExceptList" nillable="true" type="ns1:calendCapacityBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="placeBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="id" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="lib" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="lib2" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="adresse" type="tns:adressBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="activityPeriscolList" nillable="true" type="tns:activityPeriscolBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="adressBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="num" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="street1" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="street2" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="idStreet" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="zipcode" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="town" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityPeriscolBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ns1:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="activity" type="ns1:activityBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="activityPeriodList" nillable="true" type="tns:activityPeriodCapacityBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="unitList" nillable="true" type="tns:unitPeriscolBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="unitPeriscolBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ns1:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idUnit" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="label" type="xs:string" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="periodList" nillable="true" type="ns1:periodBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="unitPortailBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idUnit" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="label" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="codeExt" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="dateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEnd" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="birthDateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="birthDateEnd" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="calendarLetter" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="subscribePublication" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="dateStartSubscribe" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEndSubscribe" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="numOrder" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="calendarPublication" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="recordAbsence" type="xs:string" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="calendList" nillable="true" type="tns:calendPortailBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="placeList" nillable="true" type="tns:placeBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="periodList" nillable="true" type="ns1:periodBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="calendPortailBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="dateConso" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateMin" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateMax" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateMinVisu" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateMaxVisu" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateMaxMajPrev" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateMaxAddPres" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="dayBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="datePlanning" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dayType" type="tns:dayTypeBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="dayTypeBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="code" type="ns1:code" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="resultCalendarListBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="person" type="ns2:personInfoBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="calendList" nillable="true" type="tns:calendarUnitDayBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="calendarUnitDayBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="unit" type="tns:unitBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="listDays" nillable="true" type="tns:dayBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="unitBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="id" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="idActivity" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="motif" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="childActivityUnitPlaceBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ns1:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="child" type="ns2:personInfoLightBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="activityList" nillable="true" type="tns:activityUnitPlaceLightBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityUnitPlaceLightBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ns1:abstractSpecResultBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="activity" type="ns1:idLabelBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="unitList" nillable="true" type="tns:unitPlaceLightBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="unitPlaceLightBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ns1:idLabelBean">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="placeList" nillable="true" type="ns1:idLabelBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="updateScheduleCalendarsRequestBean">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="unitPersonDayInfoList" nillable="true" type="tns:unitPersonDayInfoBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="updateScheduleCalendarsResultBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="result" type="xs:boolean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="unitPersonDayInfoList" nillable="true" type="tns:unitPersonDayInfoErrorBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="activity.ws.maelis.sigec.com" xmlns:ns1="bean.persistence.activity.ws.maelis.sigec.com" xmlns:ns2="bean.persistence.ws.maelis.sigec.com" xmlns:tns="activity.ws.maelis.sigec.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:import namespace="bean.persistence.activity.ws.maelis.sigec.com" />
|
||||
<xs:import namespace="bean.persistence.ws.maelis.sigec.com" />
|
||||
<xs:complexType name="activityCalendarGenerationBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="code" type="tns:activityCalendarGenerationMode" />
|
||||
<xs:element minOccurs="0" name="value" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityUnitPlace2KernelBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="activityKernel" type="xs:anyType" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="unitKernelList" nillable="true" type="xs:anyType" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="codeLabelKernelBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="code" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="label" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="consoTarifKernelBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="commune" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="consoKernelBean" type="tns:codeLabelKernelBean" />
|
||||
<xs:element minOccurs="0" name="tarifKernelBean" type="tns:codeLabelKernelBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityPeriodCapacityKernelBean">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="calendCapacityExceptKernelList" nillable="true" type="tns:calendCapacityKernelBean" />
|
||||
<xs:element minOccurs="0" name="capacity" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="periodKernel" type="tns:codeLabelKernelBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="calendCapacityKernelBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="capacity" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="dayDate" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType abstract="true" name="abstractSpecBean">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="periodBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="code" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="label" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="calendCapacityBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="capacity" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="dayDate" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityUnitPlaceBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="activity" type="tns:activityBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="unitList" nillable="true" type="tns:unitPlaceBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="id" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="label" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="unitPlaceBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idUnit" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="label" type="xs:string" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="placeList" nillable="true" type="ns1:placeBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="readChildListActivityListResultBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecResultBean">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="childActivityUnitPlaceList" nillable="true" type="ns1:childActivityUnitPlaceBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType abstract="true" name="abstractSpecResultBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="idLabelBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="id" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="label" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="dayInfoAction">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="ADD_PRES_PREVI" />
|
||||
<xs:enumeration value="DEL_PRES_PREVI" />
|
||||
<xs:enumeration value="ADD_ABSENCE" />
|
||||
<xs:enumeration value="DEL_ABSENCE" />
|
||||
<xs:enumeration value="ADD_PRES_REAL" />
|
||||
<xs:enumeration value="DEL_PRES_REAL" />
|
||||
<xs:enumeration value="ADD_DEDUCTED_ABSENCE" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="activityCalendarGenerationMode">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="REQUIRED" />
|
||||
<xs:enumeration value="FORBIDDEN" />
|
||||
<xs:enumeration value="NOT_REQUIRED" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="code">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AM" />
|
||||
<xs:enumeration value="PM" />
|
||||
<xs:enumeration value="DAY" />
|
||||
<xs:enumeration value="NONE" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:element name="MaelisActivityException" type="tns:MaelisActivityException" />
|
||||
<xs:complexType name="MaelisActivityException">
|
||||
<xs:sequence>
|
||||
<xs:element name="message" nillable="true" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateRealCalendars" type="tns:updateRealCalendars" />
|
||||
<xs:complexType name="updateRealCalendars">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="updateRealCalendarsRequestBean" type="ns1:updateRealCalendarsRequestBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateRealCalendarsResponse" type="tns:updateRealCalendarsResponse" />
|
||||
<xs:complexType name="updateRealCalendarsResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="return" type="ns1:updateRealCalendarsResultBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateWeekCalendar" type="tns:updateWeekCalendar" />
|
||||
<xs:complexType name="updateWeekCalendar">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idActivity" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="dateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEnd" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="weeklyPlanningAM" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="weeklyPlanningPM" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateWeekCalendarResponse" type="tns:updateWeekCalendarResponse" />
|
||||
<xs:complexType name="updateWeekCalendarResponse">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:element name="readActivityList" type="tns:readActivityList" />
|
||||
<xs:complexType name="readActivityList">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="schoolyear" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="dateStartCalend" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEndCalend" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readActivityListResponse" type="tns:readActivityListResponse" />
|
||||
<xs:complexType name="readActivityListResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="ReadActivityPortailListResultBean" type="ns1:readActivityPortailListResultBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readChildMonthPlanning" type="tns:readChildMonthPlanning" />
|
||||
<xs:complexType name="readChildMonthPlanning">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="idActivity" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="idUnit" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="year" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="numMonth" type="xs:int" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readChildMonthPlanningResponse" type="tns:readChildMonthPlanningResponse" />
|
||||
<xs:complexType name="readChildMonthPlanningResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="ResultCalendarList" type="ns1:resultCalendarListBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readChildListActivityList" type="tns:readChildListActivityList" />
|
||||
<xs:complexType name="readChildListActivityList">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="schoolyear" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="dateStartCalend" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEndCalend" type="xs:dateTime" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="numPersonList" type="xs:int" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readChildListActivityListResponse" type="tns:readChildListActivityListResponse" />
|
||||
<xs:complexType name="readChildListActivityListResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="ReadChildListActivityListResultBean" type="tns:readChildListActivityListResultBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateScheduleCalendars" type="tns:updateScheduleCalendars" />
|
||||
<xs:complexType name="updateScheduleCalendars">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="updateScheduleCalendarsRequestBean" type="ns1:updateScheduleCalendarsRequestBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateScheduleCalendarsResponse" type="tns:updateScheduleCalendarsResponse" />
|
||||
<xs:complexType name="updateScheduleCalendarsResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="return" type="ns1:updateScheduleCalendarsResultBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
</wsdl:types>
|
||||
<wsdl:message name="updateScheduleCalendarsResponse">
|
||||
<wsdl:part element="tns:updateScheduleCalendarsResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readActivityList">
|
||||
<wsdl:part element="tns:readActivityList" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readChildMonthPlanning">
|
||||
<wsdl:part element="tns:readChildMonthPlanning" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readActivityListResponse">
|
||||
<wsdl:part element="tns:readActivityListResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readChildListActivityList">
|
||||
<wsdl:part element="tns:readChildListActivityList" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="MaelisActivityException">
|
||||
<wsdl:part element="tns:MaelisActivityException" name="MaelisActivityException">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateScheduleCalendars">
|
||||
<wsdl:part element="tns:updateScheduleCalendars" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateRealCalendars">
|
||||
<wsdl:part element="tns:updateRealCalendars" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateWeekCalendarResponse">
|
||||
<wsdl:part element="tns:updateWeekCalendarResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateWeekCalendar">
|
||||
<wsdl:part element="tns:updateWeekCalendar" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readChildListActivityListResponse">
|
||||
<wsdl:part element="tns:readChildListActivityListResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readChildMonthPlanningResponse">
|
||||
<wsdl:part element="tns:readChildMonthPlanningResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateRealCalendarsResponse">
|
||||
<wsdl:part element="tns:updateRealCalendarsResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:portType name="ActivityService">
|
||||
<wsdl:operation name="updateRealCalendars">
|
||||
<wsdl:input message="tns:updateRealCalendars" name="updateRealCalendars">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:updateRealCalendarsResponse" name="updateRealCalendarsResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisActivityException" name="MaelisActivityException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateWeekCalendar">
|
||||
<wsdl:input message="tns:updateWeekCalendar" name="updateWeekCalendar">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:updateWeekCalendarResponse" name="updateWeekCalendarResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisActivityException" name="MaelisActivityException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readActivityList">
|
||||
<wsdl:input message="tns:readActivityList" name="readActivityList">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:readActivityListResponse" name="readActivityListResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisActivityException" name="MaelisActivityException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readChildMonthPlanning">
|
||||
<wsdl:input message="tns:readChildMonthPlanning" name="readChildMonthPlanning">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:readChildMonthPlanningResponse" name="readChildMonthPlanningResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisActivityException" name="MaelisActivityException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readChildListActivityList">
|
||||
<wsdl:input message="tns:readChildListActivityList" name="readChildListActivityList">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:readChildListActivityListResponse" name="readChildListActivityListResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisActivityException" name="MaelisActivityException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateScheduleCalendars">
|
||||
<wsdl:input message="tns:updateScheduleCalendars" name="updateScheduleCalendars">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:updateScheduleCalendarsResponse" name="updateScheduleCalendarsResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisActivityException" name="MaelisActivityException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
</wsdl:portType>
|
||||
<wsdl:binding name="ActivityServiceSoapBinding" type="tns:ActivityService">
|
||||
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
|
||||
<wsdl:operation name="updateRealCalendars">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="updateRealCalendars">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="updateRealCalendarsResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisActivityException">
|
||||
<soap:fault name="MaelisActivityException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateWeekCalendar">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="updateWeekCalendar">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="updateWeekCalendarResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisActivityException">
|
||||
<soap:fault name="MaelisActivityException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readActivityList">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="readActivityList">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="readActivityListResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisActivityException">
|
||||
<soap:fault name="MaelisActivityException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readChildMonthPlanning">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="readChildMonthPlanning">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="readChildMonthPlanningResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisActivityException">
|
||||
<soap:fault name="MaelisActivityException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readChildListActivityList">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="readChildListActivityList">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="readChildListActivityListResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisActivityException">
|
||||
<soap:fault name="MaelisActivityException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateScheduleCalendars">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="updateScheduleCalendars">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="updateScheduleCalendarsResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisActivityException">
|
||||
<soap:fault name="MaelisActivityException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:service name="ActivityService">
|
||||
<wsdl:port binding="tns:ActivityServiceSoapBinding" name="ActivityServiceImplPort">
|
||||
<soap:address location="http://www3.sigec.fr/entrouvertws/services/ActivityService" />
|
||||
</wsdl:port>
|
||||
</wsdl:service>
|
||||
</wsdl:definitions>
|
|
@ -1,947 +0,0 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="FamilyService" targetNamespace="ws.maelis.sigec.com" xmlns:ns1="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="ws.maelis.sigec.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<wsdl:types>
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="ws.maelis.sigec.com" xmlns:ns0="bean.persistence.school.ws.maelis.sigec.com" xmlns:ns1="bean.persistence.ws.maelis.sigec.com" xmlns:ns2="bean.persistence.activity.ws.maelis.sigec.com" xmlns:ns3="bean.persistence.family.ws.maelis.sigec.com" xmlns:tns="ws.maelis.sigec.com" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:import namespace="bean.persistence.ws.maelis.sigec.com" />
|
||||
<xs:import namespace="bean.persistence.activity.ws.maelis.sigec.com" />
|
||||
<xs:import namespace="bean.persistence.family.ws.maelis.sigec.com" />
|
||||
<xs:import namespace="http://www.w3.org/2005/05/xmlmime" />
|
||||
<xs:import namespace="bean.persistence.school.ws.maelis.sigec.com" />
|
||||
<xs:complexType name="familyQuotientRedvBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="year" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="yearRev" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="dateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEnd" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="mtt" type="xs:double" />
|
||||
<xs:element minOccurs="0" name="cdquo" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="codeUti" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="authorizedPersonListBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecRequestBean">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="personList" nillable="true" type="tns:familyPersonBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType abstract="true" name="abstractSpecRequestBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType abstract="true" name="abstractSpecBean">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="familyPersonBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="civility" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="firstname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="lastname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="dateBirth" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="quality" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="contact" type="tns:contactLightBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="contactLightBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="phone" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="mobile" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="mail" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StreetBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idStreet" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelleStreet" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="indicatorValueKernelBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="active" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="idFamily" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="indicatorKernel" type="xs:anyType" />
|
||||
<xs:element minOccurs="0" name="indicatorValeu" type="xs:anyType" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="familyBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="number" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="category" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="situation" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="nbChild" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="nbAES" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="nbTotalChild" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="flagCom" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="rl1InfoBean" type="tns:rlInfoBean" />
|
||||
<xs:element minOccurs="0" name="rl2InfoBean" type="tns:rlInfoBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="childInfoList" nillable="true" type="ns1:childInfoBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="authorizedPersonList" nillable="true" type="tns:familyPersonBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="rlInfoBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="num" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="civility" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="lastname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="firstname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="quality" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="profession" type="ns1:professionBean" />
|
||||
<xs:element minOccurs="0" name="contact" type="ns1:contactBean" />
|
||||
<xs:element minOccurs="0" name="address" type="ns1:addressBean" />
|
||||
<xs:element minOccurs="0" name="cafInfo" type="tns:cafInfoBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="quotientRedvList" nillable="true" type="tns:familyQuotientRedvBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="cafInfoBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="num" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="organ" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="birthInfoBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="dateBirth" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="countryCode" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="communeCode" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="place" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="subscribeSchoolBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="year" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="schoolName" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="phone" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="adress" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headmaster" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="level" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="preSubscribeDate" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="isWaitList" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="codeWait" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libWait" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="requestSchool1" type="tns:schoolInfoBean" />
|
||||
<xs:element minOccurs="0" name="requestSchool2" type="tns:schoolInfoBean" />
|
||||
<xs:element minOccurs="0" name="requestSchool3" type="tns:schoolInfoBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="schoolInfoBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idSchool" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="schoolName" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="subscribeActivityBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="typeIns" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelleTypeIns" type="xs:string" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="subscribesUnit" nillable="true" type="tns:subscribeUnitBean" />
|
||||
<xs:element minOccurs="0" name="place" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="planningHebdomadaire" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="typeConsum" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelleTypeConsum" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="comment" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="idActivity" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="typeActivity" type="ns2:activityTypeBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="subscribeUnitBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idUnit" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="bUniStd" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="dateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEnd" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="addressBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="num" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="numComp" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="street1" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="idStreet" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="street2" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="zipcode" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="town" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="isCommune" type="xs:boolean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="subscribeSchoolResultBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="schoolYear" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="schoolName" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="level" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="phone" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="adress" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headmaster" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="getActivityRateRequestBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecRequestBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idSubscribe" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="idUnit" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="typeConsum" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="flagCom" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="idUtilisat" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="referenceYear" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="incomeYear" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="calculationDate" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="getActivityRateResultBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecResultBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="rate" type="xs:double" />
|
||||
<xs:element name="isCESU" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="calculationDate" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType abstract="true" name="abstractSpecResultBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="addSuppliedDocumentRequestBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecRequestBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numDossier" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="documentList" nillable="true" type="ns3:suppliedDocumentBean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="fileHandler">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="dataHandler" type="xs:base64Binary" xmime:expectedContentTypes="application/octet-stream" />
|
||||
<xs:element minOccurs="0" name="fileType" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="name" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="MaelisFamilyException" type="tns:MaelisFamilyException" />
|
||||
<xs:complexType name="MaelisFamilyException">
|
||||
<xs:sequence>
|
||||
<xs:element name="message" nillable="true" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="createUpdateQuotient" type="tns:createUpdateQuotient" />
|
||||
<xs:complexType name="createUpdateQuotient">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="dossierNumber" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="personNumber" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="quotient" type="tns:familyQuotientRedvBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="createUpdateQuotientResponse" type="tns:createUpdateQuotientResponse" />
|
||||
<xs:complexType name="createUpdateQuotientResponse">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:element name="updateFamilyAuthorizedPersonList" type="tns:updateFamilyAuthorizedPersonList" />
|
||||
<xs:complexType name="updateFamilyAuthorizedPersonList">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numDossier" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="authorizedPersonList" type="tns:authorizedPersonListBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateFamilyAuthorizedPersonListResponse" type="tns:updateFamilyAuthorizedPersonListResponse" />
|
||||
<xs:complexType name="updateFamilyAuthorizedPersonListResponse">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:element name="readStreetList" type="tns:readStreetList" />
|
||||
<xs:complexType name="readStreetList">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:element name="readStreetListResponse" type="tns:readStreetListResponse" />
|
||||
<xs:complexType name="readStreetListResponse">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="streetList" type="tns:StreetBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readFamilyByPassword" type="tns:readFamilyByPassword" />
|
||||
<xs:complexType name="readFamilyByPassword">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="dossierNumber" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="password" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="schoolYear" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="incomeYear" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="referenceYear" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readFamilyByPasswordResponse" type="tns:readFamilyByPasswordResponse" />
|
||||
<xs:complexType name="readFamilyByPasswordResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="familyBean" type="tns:familyBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateFamilySituation" type="tns:updateFamilySituation" />
|
||||
<xs:complexType name="updateFamilySituation">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numDossier" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="category" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="situation" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="nbChild" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="nbTotalChild" type="xs:int" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateFamilySituationResponse" type="tns:updateFamilySituationResponse" />
|
||||
<xs:complexType name="updateFamilySituationResponse">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:element name="updateCoordinate" type="tns:updateCoordinate" />
|
||||
<xs:complexType name="updateCoordinate">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numDossier" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="adresse" type="tns:addressBean" />
|
||||
<xs:element minOccurs="0" name="contact" type="ns1:contactBean" />
|
||||
<xs:element minOccurs="0" name="profession" type="ns1:professionBean" />
|
||||
<xs:element minOccurs="0" name="CAFInfo" type="tns:cafInfoBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateCoordinateResponse" type="tns:updateCoordinateResponse" />
|
||||
<xs:complexType name="updateCoordinateResponse">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:element name="subscribeSchool" type="tns:subscribeSchool" />
|
||||
<xs:complexType name="subscribeSchool">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="subcribeSchoolRequestBean" type="ns0:subscribeSchoolRequestBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="subscribeSchoolResponse" type="tns:subscribeSchoolResponse" />
|
||||
<xs:complexType name="subscribeSchoolResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="subscribeSchoolResultBean" type="tns:subscribeSchoolResultBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readFamily" type="tns:readFamily" />
|
||||
<xs:complexType name="readFamily">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="dossierNumber" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="schoolYear" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="incomeYear" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="referenceYear" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readFamilyResponse" type="tns:readFamilyResponse" />
|
||||
<xs:complexType name="readFamilyResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="familyResult" type="tns:familyBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="subscribeActivity" type="tns:subscribeActivity" />
|
||||
<xs:complexType name="subscribeActivity">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="subscribeActivityRequestBean" type="ns1:subscribeActivityRequestBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="subscribeActivityResponse" type="tns:subscribeActivityResponse" />
|
||||
<xs:complexType name="subscribeActivityResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="subscribeActivityResultBean" type="ns1:subscribeActivityResultBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateChildAutorization" type="tns:updateChildAutorization" />
|
||||
<xs:complexType name="updateChildAutorization">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="updateChildAutorizationRequest" type="ns1:updateChildAutorizationRequestBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="updateChildAutorizationResponse" type="tns:updateChildAutorizationResponse" />
|
||||
<xs:complexType name="updateChildAutorizationResponse">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:element name="deletesubscribe" type="tns:deletesubscribe" />
|
||||
<xs:complexType name="deletesubscribe">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="idActivite" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="dateRefDelete" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="deletesubscribeResponse" type="tns:deletesubscribeResponse" />
|
||||
<xs:complexType name="deletesubscribeResponse">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:element name="getActivityRate" type="tns:getActivityRate" />
|
||||
<xs:complexType name="getActivityRate">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="getActivityRateRequestBean" type="tns:getActivityRateRequestBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="getActivityRateResponse" type="tns:getActivityRateResponse" />
|
||||
<xs:complexType name="getActivityRateResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="getActivityRateResultBean" type="tns:getActivityRateResultBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="addSuppliedDocument" type="tns:addSuppliedDocument" />
|
||||
<xs:complexType name="addSuppliedDocument">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="addSuppliedDocumentRequestBean" type="tns:addSuppliedDocumentRequestBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="addSuppliedDocumentResponse" type="tns:addSuppliedDocumentResponse" />
|
||||
<xs:complexType name="addSuppliedDocumentResponse">
|
||||
<xs:sequence>
|
||||
<xs:element name="isAdded" type="xs:boolean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
<xs:schema targetNamespace="bean.persistence.ws.maelis.sigec.com" version="1.0" xmlns:ns1="ws.maelis.sigec.com" xmlns:ns2="bean.persistence.activity.ws.maelis.sigec.com" xmlns:ns3="bean.persistence.school.ws.maelis.sigec.com" xmlns:tns="bean.persistence.ws.maelis.sigec.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:import namespace="ws.maelis.sigec.com" />
|
||||
<xs:import namespace="bean.persistence.activity.ws.maelis.sigec.com" />
|
||||
<xs:import namespace="bean.persistence.school.ws.maelis.sigec.com" />
|
||||
<xs:complexType name="addressBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="num" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="numComp" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="street1" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="idStreet" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="street2" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="zipcode" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="town" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="addressStreetBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="civelCode" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="id" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="street" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="professionBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="codeCSP" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="profession" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="employerName" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="phone" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="addressProf" type="tns:addressProfBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="addressProfBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="num" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="street1" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="zipcode" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="town" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="contactBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="phone" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="mobile" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="profPhone" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="mail" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="isContactMail" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="isContactSms" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="isInvoicePdf" type="xs:boolean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="childInfoBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="num" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="sexe" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="lastname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="firstname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="birthInfoBean" type="ns1:birthInfoBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="subscribeSchoolList" nillable="true" type="ns1:subscribeSchoolBean" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="subscribeActivityList" nillable="true" type="ns1:subscribeActivityBean" />
|
||||
<xs:element minOccurs="0" name="bPhoto" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="bLeaveAlone" type="xs:boolean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="subscribeActivityRequestBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="personNumber" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="schoolYear" type="xs:int" />
|
||||
<xs:element name="activityUnitPlace" type="tns:activityUnitPlaceBean" />
|
||||
<xs:element minOccurs="0" name="dateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEnd" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateSubscribe" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="datePreSubscribe" type="xs:dateTime" />
|
||||
<xs:element name="weeklyPlanning" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="typeConsum" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityUnitPlaceBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="idActivity" type="xs:string" />
|
||||
<xs:element name="idUnit" type="xs:string" />
|
||||
<xs:element name="idPlace" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="subscribeActivityResultBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="activity" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="dateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEnd" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="datePreSubscribe" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateSubscribe" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="typeConsum" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="place" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="state" type="ns3:stateBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="updateChildAutorizationRequestBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ns1:abstractSpecRequestBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="bLeaveAlone" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="bPhoto" type="xs:boolean" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
<xs:schema targetNamespace="bean.persistence.school.ws.maelis.sigec.com" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:complexType name="subscribeSchoolRequestBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="personNumber" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="schoolYear" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="dateSubscribe" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="stateBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="isWaitState" type="xs:boolean" />
|
||||
<xs:element minOccurs="0" name="idState" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
<xs:schema targetNamespace="bean.persistence.family.ws.maelis.sigec.com" version="1.0" xmlns:ns1="ws.maelis.sigec.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:import namespace="ws.maelis.sigec.com" />
|
||||
<xs:complexType name="suppliedDocumentBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ns1:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="idDocument" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="depositDate" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="filename" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="fileSupplied" type="ns1:fileHandler" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
<xs:schema targetNamespace="bean.persistence.activity.ws.maelis.sigec.com" version="1.0" xmlns:tns="bean.persistence.activity.ws.maelis.sigec.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:complexType name="activityTypeBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="code" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="natureSpec" type="tns:activityNatureBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="activityNatureBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="code" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
</wsdl:types>
|
||||
<wsdl:message name="createUpdateQuotient">
|
||||
<wsdl:part element="tns:createUpdateQuotient" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="createUpdateQuotientResponse">
|
||||
<wsdl:part element="tns:createUpdateQuotientResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readFamilyByPasswordResponse">
|
||||
<wsdl:part element="tns:readFamilyByPasswordResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="subscribeSchoolResponse">
|
||||
<wsdl:part element="tns:subscribeSchoolResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateFamilySituation">
|
||||
<wsdl:part element="tns:updateFamilySituation" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="getActivityRateResponse">
|
||||
<wsdl:part element="tns:getActivityRateResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateCoordinate">
|
||||
<wsdl:part element="tns:updateCoordinate" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="subscribeSchool">
|
||||
<wsdl:part element="tns:subscribeSchool" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="addSuppliedDocumentResponse">
|
||||
<wsdl:part element="tns:addSuppliedDocumentResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateCoordinateResponse">
|
||||
<wsdl:part element="tns:updateCoordinateResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="MaelisFamilyException">
|
||||
<wsdl:part element="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="subscribeActivityResponse">
|
||||
<wsdl:part element="tns:subscribeActivityResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readFamily">
|
||||
<wsdl:part element="tns:readFamily" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateChildAutorization">
|
||||
<wsdl:part element="tns:updateChildAutorization" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateFamilySituationResponse">
|
||||
<wsdl:part element="tns:updateFamilySituationResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readFamilyResponse">
|
||||
<wsdl:part element="tns:readFamilyResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="deletesubscribe">
|
||||
<wsdl:part element="tns:deletesubscribe" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateFamilyAuthorizedPersonList">
|
||||
<wsdl:part element="tns:updateFamilyAuthorizedPersonList" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateFamilyAuthorizedPersonListResponse">
|
||||
<wsdl:part element="tns:updateFamilyAuthorizedPersonListResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readStreetList">
|
||||
<wsdl:part element="tns:readStreetList" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readFamilyByPassword">
|
||||
<wsdl:part element="tns:readFamilyByPassword" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readStreetListResponse">
|
||||
<wsdl:part element="tns:readStreetListResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="subscribeActivity">
|
||||
<wsdl:part element="tns:subscribeActivity" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="updateChildAutorizationResponse">
|
||||
<wsdl:part element="tns:updateChildAutorizationResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="deletesubscribeResponse">
|
||||
<wsdl:part element="tns:deletesubscribeResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="getActivityRate">
|
||||
<wsdl:part element="tns:getActivityRate" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="addSuppliedDocument">
|
||||
<wsdl:part element="tns:addSuppliedDocument" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:portType name="FamilyService">
|
||||
<wsdl:operation name="createUpdateQuotient">
|
||||
<wsdl:input message="tns:createUpdateQuotient" name="createUpdateQuotient">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:createUpdateQuotientResponse" name="createUpdateQuotientResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateFamilyAuthorizedPersonList">
|
||||
<wsdl:input message="tns:updateFamilyAuthorizedPersonList" name="updateFamilyAuthorizedPersonList">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:updateFamilyAuthorizedPersonListResponse" name="updateFamilyAuthorizedPersonListResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readStreetList">
|
||||
<wsdl:input message="tns:readStreetList" name="readStreetList">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:readStreetListResponse" name="readStreetListResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readFamilyByPassword">
|
||||
<wsdl:input message="tns:readFamilyByPassword" name="readFamilyByPassword">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:readFamilyByPasswordResponse" name="readFamilyByPasswordResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateFamilySituation">
|
||||
<wsdl:input message="tns:updateFamilySituation" name="updateFamilySituation">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:updateFamilySituationResponse" name="updateFamilySituationResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateCoordinate">
|
||||
<wsdl:input message="tns:updateCoordinate" name="updateCoordinate">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:updateCoordinateResponse" name="updateCoordinateResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="subscribeSchool">
|
||||
<wsdl:input message="tns:subscribeSchool" name="subscribeSchool">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:subscribeSchoolResponse" name="subscribeSchoolResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readFamily">
|
||||
<wsdl:input message="tns:readFamily" name="readFamily">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:readFamilyResponse" name="readFamilyResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="subscribeActivity">
|
||||
<wsdl:input message="tns:subscribeActivity" name="subscribeActivity">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:subscribeActivityResponse" name="subscribeActivityResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateChildAutorization">
|
||||
<wsdl:input message="tns:updateChildAutorization" name="updateChildAutorization">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:updateChildAutorizationResponse" name="updateChildAutorizationResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="deletesubscribe">
|
||||
<wsdl:input message="tns:deletesubscribe" name="deletesubscribe">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:deletesubscribeResponse" name="deletesubscribeResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="getActivityRate">
|
||||
<wsdl:input message="tns:getActivityRate" name="getActivityRate">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:getActivityRateResponse" name="getActivityRateResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="addSuppliedDocument">
|
||||
<wsdl:input message="tns:addSuppliedDocument" name="addSuppliedDocument">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:addSuppliedDocumentResponse" name="addSuppliedDocumentResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisFamilyException" name="MaelisFamilyException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
</wsdl:portType>
|
||||
<wsdl:binding name="FamilyServiceSoapBinding" type="tns:FamilyService">
|
||||
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
|
||||
<wsdl:operation name="createUpdateQuotient">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="createUpdateQuotient">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="createUpdateQuotientResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateFamilyAuthorizedPersonList">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="updateFamilyAuthorizedPersonList">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="updateFamilyAuthorizedPersonListResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readFamilyByPassword">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="readFamilyByPassword">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="readFamilyByPasswordResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readStreetList">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="readStreetList">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="readStreetListResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateFamilySituation">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="updateFamilySituation">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="updateFamilySituationResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateCoordinate">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="updateCoordinate">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="updateCoordinateResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="subscribeSchool">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="subscribeSchool">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="subscribeSchoolResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readFamily">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="readFamily">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="readFamilyResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="subscribeActivity">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="subscribeActivity">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="subscribeActivityResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="updateChildAutorization">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="updateChildAutorization">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="updateChildAutorizationResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="deletesubscribe">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="deletesubscribe">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="deletesubscribeResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="getActivityRate">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="getActivityRate">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="getActivityRateResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="addSuppliedDocument">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="addSuppliedDocument">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="addSuppliedDocumentResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisFamilyException">
|
||||
<soap:fault name="MaelisFamilyException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:service name="FamilyService">
|
||||
<wsdl:port binding="tns:FamilyServiceSoapBinding" name="FamilyServiceImplPort">
|
||||
<soap:address location="http://www3.sigec.fr/entrouvertws/services/FamilyService" />
|
||||
</wsdl:port>
|
||||
</wsdl:service>
|
||||
</wsdl:definitions>
|
|
@ -1,310 +0,0 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="InvoiceService" targetNamespace="ws.maelis.sigec.com" xmlns:ns1="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="ws.maelis.sigec.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<wsdl:types>
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="ws.maelis.sigec.com" xmlns:ns0="bean.persistence.ws.maelis.sigec.com" xmlns:tns="ws.maelis.sigec.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:import namespace="bean.persistence.ws.maelis.sigec.com" />
|
||||
<xs:complexType abstract="true" name="abstractSpecBean">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ttfKernelBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="footerLine1" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="footerLine2" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="footerLine3" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="footerLine4" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="footerLine5" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine1" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine2" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine3" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine4" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine5" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ttfBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="tns:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="footerLine1" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="footerLine2" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="footerLine3" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="footerLine4" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="footerLine5" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine1" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine2" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine3" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine4" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="headerLine5" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:element name="MaelisAccountException" type="tns:MaelisAccountException" />
|
||||
<xs:complexType name="MaelisAccountException">
|
||||
<xs:sequence>
|
||||
<xs:element name="message" nillable="true" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="payInvoices" type="tns:payInvoices" />
|
||||
<xs:complexType name="payInvoices">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numFamily" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="lastName" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="firstName" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="codeRegie" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="amount" type="xs:double" />
|
||||
<xs:element minOccurs="0" name="datePaiement" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="refTransaction" type="xs:string" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="numInvoices" type="xs:int" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="payInvoicesResponse" type="tns:payInvoicesResponse" />
|
||||
<xs:complexType name="payInvoicesResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numReglement" type="xs:int" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="getDirectDebitOrder" type="tns:getDirectDebitOrder" />
|
||||
<xs:complexType name="getDirectDebitOrder">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="dossierNumber" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="codeRegie" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="datRef" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="getDirectDebitOrderResponse" type="tns:getDirectDebitOrderResponse" />
|
||||
<xs:complexType name="getDirectDebitOrderResponse">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="return" type="ns0:personBankBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="addDirectDebitOrder" type="tns:addDirectDebitOrder" />
|
||||
<xs:complexType name="addDirectDebitOrder">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="dossierNumber" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="numPerson" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="bank" type="ns0:personBankBean" />
|
||||
<xs:element minOccurs="0" name="codeRegie" type="xs:int" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="addDirectDebitOrderResponse" type="tns:addDirectDebitOrderResponse" />
|
||||
<xs:complexType name="addDirectDebitOrderResponse">
|
||||
<xs:sequence />
|
||||
</xs:complexType>
|
||||
<xs:element name="readInvoices" type="tns:readInvoices" />
|
||||
<xs:complexType name="readInvoices">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numDossier" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="codeRegie" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="datStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="datEnd" type="xs:dateTime" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:element name="readInvoicesResponse" type="tns:readInvoicesResponse" />
|
||||
<xs:complexType name="readInvoicesResponse">
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="invoiceList" type="ns0:invoiceQIBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
<xs:schema targetNamespace="bean.persistence.ws.maelis.sigec.com" version="1.0" xmlns:ns1="ws.maelis.sigec.com" xmlns:tns="bean.persistence.ws.maelis.sigec.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:import namespace="ws.maelis.sigec.com" />
|
||||
<xs:complexType name="personBankBean">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="ns1:abstractSpecBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="bankBIC" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="bankIBAN" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="bankRUM" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="dateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="bankAddress" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="civility" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="lastName" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="firstName" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="invoiceQIBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="numInvoice" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="TTFInfo" type="ns1:ttfBean" />
|
||||
<xs:element minOccurs="0" name="regie" type="tns:regieBean" />
|
||||
<xs:element minOccurs="0" name="numFamily" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="name" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="payer" type="tns:payerBean" />
|
||||
<xs:element minOccurs="0" name="refTIPI" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="amountInvoice" type="xs:decimal" />
|
||||
<xs:element minOccurs="0" name="amountPaid" type="xs:decimal" />
|
||||
<xs:element minOccurs="0" name="amountPaidTG" type="xs:decimal" />
|
||||
<xs:element minOccurs="0" name="dateInvoice" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateStartPayment" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateDeadline" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateDeadlinePayment" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateTIPI" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="authTIPI" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="pdfName" type="xs:string" />
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="lineInvoiceList" nillable="true" type="tns:lineInvoiceBean" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="regieBean">
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="code" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="libelle" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="payerBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="num" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="lastname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="firstname" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="sexe" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="civility" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="lineInvoiceBean">
|
||||
<xs:sequence>
|
||||
<xs:element name="numLine" type="xs:int" />
|
||||
<xs:element minOccurs="0" name="numPers" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="idActivity" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="idUnit" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="libelleLine" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="name" type="xs:string" />
|
||||
<xs:element minOccurs="0" name="dateStart" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="dateEnd" type="xs:dateTime" />
|
||||
<xs:element minOccurs="0" name="quantity" type="xs:double" />
|
||||
<xs:element minOccurs="0" name="unitPrice" type="xs:double" />
|
||||
<xs:element minOccurs="0" name="amountLine" type="xs:decimal" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
</wsdl:types>
|
||||
<wsdl:message name="payInvoices">
|
||||
<wsdl:part element="tns:payInvoices" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="getDirectDebitOrder">
|
||||
<wsdl:part element="tns:getDirectDebitOrder" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="getDirectDebitOrderResponse">
|
||||
<wsdl:part element="tns:getDirectDebitOrderResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="addDirectDebitOrder">
|
||||
<wsdl:part element="tns:addDirectDebitOrder" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readInvoices">
|
||||
<wsdl:part element="tns:readInvoices" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="payInvoicesResponse">
|
||||
<wsdl:part element="tns:payInvoicesResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="MaelisAccountException">
|
||||
<wsdl:part element="tns:MaelisAccountException" name="MaelisAccountException">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="readInvoicesResponse">
|
||||
<wsdl:part element="tns:readInvoicesResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="addDirectDebitOrderResponse">
|
||||
<wsdl:part element="tns:addDirectDebitOrderResponse" name="parameters">
|
||||
</wsdl:part>
|
||||
</wsdl:message>
|
||||
<wsdl:portType name="InvoiceService">
|
||||
<wsdl:operation name="payInvoices">
|
||||
<wsdl:input message="tns:payInvoices" name="payInvoices">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:payInvoicesResponse" name="payInvoicesResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisAccountException" name="MaelisAccountException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="getDirectDebitOrder">
|
||||
<wsdl:input message="tns:getDirectDebitOrder" name="getDirectDebitOrder">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:getDirectDebitOrderResponse" name="getDirectDebitOrderResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisAccountException" name="MaelisAccountException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="addDirectDebitOrder">
|
||||
<wsdl:input message="tns:addDirectDebitOrder" name="addDirectDebitOrder">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:addDirectDebitOrderResponse" name="addDirectDebitOrderResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisAccountException" name="MaelisAccountException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readInvoices">
|
||||
<wsdl:input message="tns:readInvoices" name="readInvoices">
|
||||
</wsdl:input>
|
||||
<wsdl:output message="tns:readInvoicesResponse" name="readInvoicesResponse">
|
||||
</wsdl:output>
|
||||
<wsdl:fault message="tns:MaelisAccountException" name="MaelisAccountException">
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
</wsdl:portType>
|
||||
<wsdl:binding name="InvoiceServiceSoapBinding" type="tns:InvoiceService">
|
||||
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
|
||||
<wsdl:operation name="payInvoices">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="payInvoices">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="payInvoicesResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisAccountException">
|
||||
<soap:fault name="MaelisAccountException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="getDirectDebitOrder">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="getDirectDebitOrder">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="getDirectDebitOrderResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisAccountException">
|
||||
<soap:fault name="MaelisAccountException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="addDirectDebitOrder">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="addDirectDebitOrder">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="addDirectDebitOrderResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisAccountException">
|
||||
<soap:fault name="MaelisAccountException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
<wsdl:operation name="readInvoices">
|
||||
<soap:operation soapAction="" style="document" />
|
||||
<wsdl:input name="readInvoices">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:input>
|
||||
<wsdl:output name="readInvoicesResponse">
|
||||
<soap:body use="literal" />
|
||||
</wsdl:output>
|
||||
<wsdl:fault name="MaelisAccountException">
|
||||
<soap:fault name="MaelisAccountException" use="literal" />
|
||||
</wsdl:fault>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:service name="InvoiceService">
|
||||
<wsdl:port binding="tns:InvoiceServiceSoapBinding" name="InvoiceServiceImplPort">
|
||||
<soap:address location="http://www3.sigec.fr/entrouvertws/services/InvoiceService" />
|
||||
</wsdl:port>
|
||||
</wsdl:service>
|
||||
</wsdl:definitions>
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
"data": [
|
||||
{
|
||||
"activity_id": "A10003151396",
|
||||
"id": "A10003151403",
|
||||
"subscribe_end_date": "2020-12-31T00:00:00+01:00",
|
||||
"subscribe_start_date": "2020-12-28T00:00:00+01:00",
|
||||
"text": "Ligne mistral / retour",
|
||||
"unit_calendar_letter": "B",
|
||||
"unit_id": "A10003151403",
|
||||
"unit_weekly_planning": "BBBBB11"
|
||||
},
|
||||
{
|
||||
"activity_id": "A10003151396",
|
||||
"id": "A10003151402",
|
||||
"subscribe_end_date": "2020-12-31T00:00:00+01:00",
|
||||
"subscribe_start_date": "2020-12-28T00:00:00+01:00",
|
||||
"text": "Ligne mistral/ aller",
|
||||
"unit_calendar_letter": "A",
|
||||
"unit_id": "A10003151402",
|
||||
"unit_weekly_planning": "AAAAA11"
|
||||
}
|
||||
],
|
||||
"err": 0
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
{
|
||||
"data": [
|
||||
{
|
||||
"disabled": true,
|
||||
"id": "A10002132200",
|
||||
"text": "Alsh Mistral"
|
||||
},
|
||||
{
|
||||
"id": "A10003144173",
|
||||
"text": "Arret 1"
|
||||
},
|
||||
{
|
||||
"id": "A10003144174",
|
||||
"text": "Arret 2"
|
||||
},
|
||||
{
|
||||
"id": "A10003144175",
|
||||
"text": "Arret 3"
|
||||
},
|
||||
{
|
||||
"id": "A10003144176",
|
||||
"text": "Arret 4"
|
||||
},
|
||||
{
|
||||
"id": "A10003144177",
|
||||
"text": "Arret 5"
|
||||
}
|
||||
],
|
||||
"err": 0
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,383 +0,0 @@
|
|||
{
|
||||
"data" : [
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "1 2020-2021 GARDERIE MATIN",
|
||||
"category_id" : "A10003121692",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003121692-A10003121694",
|
||||
"slot_id" : "A10003121694",
|
||||
"text" : "1 2020-2021 GARDERIE MATIN",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"category_id" : "A10003123490",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003123490-A10003123492",
|
||||
"slot_id" : "A10003123492",
|
||||
"text" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "3 2020-2021 GARDERIE SOIR",
|
||||
"category_id" : "A10003123507",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003123507-A10003123509",
|
||||
"slot_id" : "A10003123509",
|
||||
"text" : "3 2020-2021 GARDERIE SOIR",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "ATELIER D'EXPRESSION THEATRALE",
|
||||
"category_id" : "A10003132293",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003132293-A10003132295",
|
||||
"slot_id" : "A10003132295",
|
||||
"text" : "ATELIER D'EXPRESSION THEATRALE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "1 2020-2021 GARDERIE MATIN",
|
||||
"category_id" : "A10003121692",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10003121692-A10003121694",
|
||||
"slot_id" : "A10003121694",
|
||||
"text" : "1 2020-2021 GARDERIE MATIN",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"category_id" : "A10003123490",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10003123490-A10003123492",
|
||||
"slot_id" : "A10003123492",
|
||||
"text" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "3 2020-2021 GARDERIE SOIR",
|
||||
"category_id" : "A10003123507",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10003123507-A10003123509",
|
||||
"slot_id" : "A10003123509",
|
||||
"text" : "3 2020-2021 GARDERIE SOIR",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"category_id" : "A10003132030",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10003132030-A10003132032",
|
||||
"slot_id" : "A10003132032",
|
||||
"text" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"category_id" : "A10003132030",
|
||||
"datetime" : "2020-12-16 08:00:00",
|
||||
"id" : "2020-12-16-A10003132030-EO0001PART01",
|
||||
"slot_id" : "EO0001PART01",
|
||||
"text" : "Matinée",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"category_id" : "A10003132030",
|
||||
"datetime" : "2020-12-16 12:00:00",
|
||||
"id" : "2020-12-16-A10003132030-EO0001PART02",
|
||||
"slot_id" : "EO0001PART02",
|
||||
"text" : "Repas",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"category_id" : "A10003132030",
|
||||
"datetime" : "2020-12-16 14:00:00",
|
||||
"id" : "2020-12-16-A10003132030-EO0001PART03",
|
||||
"slot_id" : "EO0001PART03",
|
||||
"text" : "Après-midi",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "1 2020-2021 GARDERIE MATIN",
|
||||
"category_id" : "A10003121692",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10003121692-A10003121694",
|
||||
"slot_id" : "A10003121694",
|
||||
"text" : "1 2020-2021 GARDERIE MATIN",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"category_id" : "A10003123490",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10003123490-A10003123492",
|
||||
"slot_id" : "A10003123492",
|
||||
"text" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "3 2020-2021 GARDERIE SOIR",
|
||||
"category_id" : "A10003123507",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10003123507-A10003123509",
|
||||
"slot_id" : "A10003123509",
|
||||
"text" : "3 2020-2021 GARDERIE SOIR",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "1 2020-2021 GARDERIE MATIN",
|
||||
"category_id" : "A10003121692",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10003121692-A10003121694",
|
||||
"slot_id" : "A10003121694",
|
||||
"text" : "1 2020-2021 GARDERIE MATIN",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"category_id" : "A10003123490",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10003123490-A10003123492",
|
||||
"slot_id" : "A10003123492",
|
||||
"text" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "3 2020-2021 GARDERIE SOIR",
|
||||
"category_id" : "A10003123507",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10003123507-A10003123509",
|
||||
"slot_id" : "A10003123509",
|
||||
"text" : "3 2020-2021 GARDERIE SOIR",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
}
|
||||
],
|
||||
"err" : 0
|
||||
}
|
|
@ -1,392 +0,0 @@
|
|||
{
|
||||
"data" : [
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "1 2020-2021 GARDERIE MATIN",
|
||||
"category_id" : "A10003121692",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003121692-A10003121694",
|
||||
"slot_id" : "A10003121694",
|
||||
"text" : "1 2020-2021 GARDERIE MATIN",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"category_id" : "A10003123490",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003123490-A10003123492",
|
||||
"slot_id" : "A10003123492",
|
||||
"text" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "3 2020-2021 GARDERIE SOIR",
|
||||
"category_id" : "A10003123507",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003123507-A10003123509",
|
||||
"slot_id" : "A10003123509",
|
||||
"text" : "3 2020-2021 GARDERIE SOIR",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "ATELIER D'EXPRESSION THEATRALE",
|
||||
"category_id" : "A10003132293",
|
||||
"datetime" : "2020-12-14 00:00:00",
|
||||
"id" : "2020-12-14-A10003132293-A10003132295",
|
||||
"slot_id" : "A10003132295",
|
||||
"text" : "ATELIER D'EXPRESSION THEATRALE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "1 2020-2021 GARDERIE MATIN",
|
||||
"category_id" : "A10003121692",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10003121692-A10003121694",
|
||||
"slot_id" : "A10003121694",
|
||||
"text" : "1 2020-2021 GARDERIE MATIN",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"category_id" : "A10003123490",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10003123490-A10003123492",
|
||||
"slot_id" : "A10003123492",
|
||||
"text" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "3 2020-2021 GARDERIE SOIR",
|
||||
"category_id" : "A10003123507",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10003123507-A10003123509",
|
||||
"slot_id" : "A10003123509",
|
||||
"text" : "3 2020-2021 GARDERIE SOIR",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-15 00:00:00",
|
||||
"id" : "2020-12-15-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"category_id" : "A10003132030",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10003132030-A10003132032",
|
||||
"slot_id" : "A10003132032",
|
||||
"text" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"category_id" : "A10003132030",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10003132030-A10003132034",
|
||||
"slot_id" : "A10003132034",
|
||||
"text" : "JOURNEE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"category_id" : "A10003132030",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10003132030-A10003132036",
|
||||
"slot_id" : "A10003132036",
|
||||
"text" : "MATIN",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"category_id" : "A10003132030",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10003132030-A10003132038",
|
||||
"slot_id" : "A10003132038",
|
||||
"text" : "MATIN ET REPAS",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "2020-2021 CENTRE DE LOISIRS MERCREDI",
|
||||
"category_id" : "A10003132030",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10003132030-A10003132040",
|
||||
"slot_id" : "A10003132040",
|
||||
"text" : "APRES MIDI",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-16 00:00:00",
|
||||
"id" : "2020-12-16-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "1 2020-2021 GARDERIE MATIN",
|
||||
"category_id" : "A10003121692",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10003121692-A10003121694",
|
||||
"slot_id" : "A10003121694",
|
||||
"text" : "1 2020-2021 GARDERIE MATIN",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"category_id" : "A10003123490",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10003123490-A10003123492",
|
||||
"slot_id" : "A10003123492",
|
||||
"text" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "3 2020-2021 GARDERIE SOIR",
|
||||
"category_id" : "A10003123507",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10003123507-A10003123509",
|
||||
"slot_id" : "A10003123509",
|
||||
"text" : "3 2020-2021 GARDERIE SOIR",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-17 00:00:00",
|
||||
"id" : "2020-12-17-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10000003840-A10000003844",
|
||||
"slot_id" : "A10000003844",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "MULTI ACCUEIL LES OLIVIERS",
|
||||
"category_id" : "A10000003840",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10000003840-A10000003845",
|
||||
"slot_id" : "A10000003845",
|
||||
"text" : "MULTI ACCUEIL LES OLIVIERS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10000006100-A10000006104",
|
||||
"slot_id" : "A10000006104",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Réguliers",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "HALTE GARDERIE LES MAGNOLIAS",
|
||||
"category_id" : "A10000006100",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10000006100-A10000006105",
|
||||
"slot_id" : "A10000006105",
|
||||
"text" : "HALTE GARDERIE LES MAGNOLIAS - Occasionnels",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "1 2020-2021 GARDERIE MATIN",
|
||||
"category_id" : "A10003121692",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10003121692-A10003121694",
|
||||
"slot_id" : "A10003121694",
|
||||
"text" : "1 2020-2021 GARDERIE MATIN",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"category_id" : "A10003123490",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10003123490-A10003123492",
|
||||
"slot_id" : "A10003123492",
|
||||
"text" : "2 2020-2021 RESTAURATION SCOLAIRE",
|
||||
"user_booking_status" : "booked"
|
||||
},
|
||||
{
|
||||
"category" : "3 2020-2021 GARDERIE SOIR",
|
||||
"category_id" : "A10003123507",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10003123507-A10003123509",
|
||||
"slot_id" : "A10003123509",
|
||||
"text" : "3 2020-2021 GARDERIE SOIR",
|
||||
"user_booking_status" : "not-booked"
|
||||
},
|
||||
{
|
||||
"category" : "COURS DE DANSE",
|
||||
"category_id" : "A10003132090",
|
||||
"datetime" : "2020-12-18 00:00:00",
|
||||
"id" : "2020-12-18-A10003132090-A10003132091",
|
||||
"slot_id" : "A10003132091",
|
||||
"text" : "COURS DE DANSE",
|
||||
"user_booking_status" : "not-booked"
|
||||
}
|
||||
],
|
||||
"err" : 0
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,209 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns1:readChildMonthPlanningResponse xmlns:ns1="activity.ws.maelis.sigec.com">
|
||||
<ResultCalendarList>
|
||||
<person>
|
||||
<idMaelis>W20885</idMaelis>
|
||||
<num>21293</num>
|
||||
<lastname>JOHANN</lastname>
|
||||
<firstname>AURELIE</firstname>
|
||||
</person>
|
||||
<calendList>
|
||||
<unit>
|
||||
<id>A10003121694</id>
|
||||
<idActivity>A10003121692</idActivity>
|
||||
<libelle>1 2020-2021 GARDERIE MATIN</libelle>
|
||||
<motif>X</motif>
|
||||
</unit>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-01T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-03T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-04T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-07T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-08T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-10T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-11T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-14T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-15T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-17T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-18T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
</calendList>
|
||||
<calendList>
|
||||
<unit>
|
||||
<id>A10003123492</id>
|
||||
<idActivity>A10003123490</idActivity>
|
||||
<libelle>2 2020-2021 RESTAURATION SCOLAIRE</libelle>
|
||||
<motif>X</motif>
|
||||
</unit>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-01T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-03T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-04T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-07T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-08T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-10T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-11T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-14T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-15T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-17T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-18T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
</calendList>
|
||||
<calendList>
|
||||
<unit>
|
||||
<id>A10003132032</id>
|
||||
<idActivity>A10003132030</idActivity>
|
||||
<libelle>2020-2021 CENTRE DE LOISIRS MERCREDI</libelle>
|
||||
<motif>X</motif>
|
||||
</unit>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-02T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-09T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-16T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
</calendList>
|
||||
<calendList>
|
||||
<unit>
|
||||
<id>A10003132038</id>
|
||||
<idActivity>A10003132030</idActivity>
|
||||
<libelle>MATIN ET REPAS</libelle>
|
||||
<motif>C</motif>
|
||||
</unit>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-23T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
<listDays>
|
||||
<datePlanning>2020-12-25T02:50:44.508+01:00</datePlanning>
|
||||
<dayType>
|
||||
<code>DAY</code>
|
||||
</dayType>
|
||||
</listDays>
|
||||
</calendList>
|
||||
</ResultCalendarList>
|
||||
</ns1:readChildMonthPlanningResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns1:deletesubscribeResponse xmlns:ns1="ws.maelis.sigec.com"/>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
File diff suppressed because it is too large
Load Diff
|
@ -1,78 +0,0 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns1:readFamilyResponse xmlns:ns1="ws.maelis.sigec.com">
|
||||
<familyResult>
|
||||
<number>3264</number><category>MONO</category><situation>SEPA</situation><nbChild>1</nbChild><nbAES>0</nbAES><nbTotalChild>1</nbTotalChild><flagCom>true</flagCom>
|
||||
<rl1InfoBean>
|
||||
<num>21292</num><civility>MME</civility><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><quality>MERE</quality>
|
||||
<profession>
|
||||
<codeCSP>SANS</codeCSP><addressProf/>
|
||||
</profession>
|
||||
<contact>
|
||||
<phone>04 84 48 45 11</phone><mobile>06 01 02 03 04</mobile><mail>dominique.lefeuvre@sigec.fr</mail><isContactMail>false</isContactMail><isContactSms>false</isContactSms><isInvoicePdf>false</isInvoicePdf>
|
||||
</contact>
|
||||
<address>
|
||||
<num>3450</num><street1>BOULEVARD GENERAL LECLERC</street1><idStreet>197</idStreet><zipcode>83160</zipcode><town>LA VALETTE-DU-VAR</town>
|
||||
</address>
|
||||
<cafInfo>
|
||||
<num>2791735</num><organ>A10000216060</organ>
|
||||
</cafInfo>
|
||||
</rl1InfoBean>
|
||||
<childInfoList>
|
||||
<num>21293</num><sexe>F</sexe><lastname>JOHANN</lastname><firstname>AURELIE</firstname>
|
||||
<birthInfoBean>
|
||||
<dateBirth>2011-09-02T00:00:00+02:00</dateBirth><countryCode>100</countryCode><place>LA SEYNE SUR MER</place>
|
||||
</birthInfoBean>
|
||||
<subscribeSchoolList>
|
||||
<year>2020</year><schoolName>2 FRANCOIS FABIE</schoolName><adress> AVENUE ARISTIDE BRIAND</adress><headmaster> </headmaster><level>COURS MOYEN 1</level><preSubscribeDate>2020-08-01T00:00:00+02:00</preSubscribeDate><isWaitList>false</isWaitList>
|
||||
</subscribeSchoolList>
|
||||
<subscribeActivityList>
|
||||
<libelle>1 2020-2021 GARDERIE MATIN</libelle><typeIns>DEF</typeIns><libelleTypeIns>DEFINITIVE</libelleTypeIns>
|
||||
<subscribesUnit>
|
||||
<idUnit>A10003121694</idUnit><libelle>1 2020-2021 GARDERIE MATIN</libelle><bUniStd>true</bUniStd><dateStart>2020-09-01T00:00:00+02:00</dateStart><dateEnd>2021-07-06T00:00:00+02:00</dateEnd>
|
||||
</subscribesUnit>
|
||||
<place>2 FRANCOIS FABIE</place><planningHebdomadaire>0000000</planningHebdomadaire><typeConsum>ENF</typeConsum><libelleTypeConsum>ENFANT</libelleTypeConsum><idActivity>A10003121692</idActivity>
|
||||
<typeActivity>
|
||||
<code>ACCMAT</code><libelle>Accueil du matin</libelle>
|
||||
<natureSpec>
|
||||
<code>A</code><libelle>Accueil Périscolaire</libelle>
|
||||
</natureSpec>
|
||||
</typeActivity>
|
||||
</subscribeActivityList>
|
||||
<subscribeActivityList>
|
||||
<libelle>2 2020-2021 RESTAURATION SCOLAIRE</libelle><typeIns>DEF</typeIns><libelleTypeIns>DEFINITIVE</libelleTypeIns>
|
||||
<subscribesUnit>
|
||||
<idUnit>A10003123492</idUnit><libelle>2 2020-2021 RESTAURATION SCOLAIRE</libelle><bUniStd>true</bUniStd><dateStart>2020-09-02T00:00:00+02:00</dateStart><dateEnd>2021-07-03T00:00:00+02:00</dateEnd>
|
||||
</subscribesUnit>
|
||||
<place>2 FRANCOIS FABIE</place><planningHebdomadaire>0010011</planningHebdomadaire><typeConsum>ENF</typeConsum><libelleTypeConsum>ENFANT</libelleTypeConsum><idActivity>A10003123490</idActivity>
|
||||
<typeActivity>
|
||||
<code>RESTSCOL</code><libelle>Restauration scolaire</libelle>
|
||||
<natureSpec>
|
||||
<code>R</code><libelle>Restauration Scolaire</libelle>
|
||||
</natureSpec>
|
||||
</typeActivity>
|
||||
</subscribeActivityList>
|
||||
<bPhoto>false</bPhoto><bLeaveAlone>false</bLeaveAlone>
|
||||
</childInfoList>
|
||||
<authorizedPersonList>
|
||||
<numPerson>23870</numPerson><civility>MME</civility><firstname>VIRGINIE</firstname><lastname>DEVOILLE</lastname><quality>GMERE</quality>
|
||||
<contact>
|
||||
<phone>04 05 06 07 08</phone><mobile>06 01 02 03 04</mobile><mail>dominique.lefeuvre@sigec.fr</mail>
|
||||
</contact>
|
||||
</authorizedPersonList>
|
||||
<authorizedPersonList>
|
||||
<numPerson>23872</numPerson><civility>M. ET</civility><firstname>YANNIS</firstname><lastname>BAILLY</lastname><quality>GP</quality>
|
||||
<contact>
|
||||
<phone>04 05 06 07 08</phone><mobile>06 01 02 03 04</mobile><mail>dominique.lefeuvre@sigec.fr</mail>
|
||||
</contact>
|
||||
</authorizedPersonList>
|
||||
<authorizedPersonList>
|
||||
<numPerson>24481</numPerson><civility>MR</civility><firstname>JEAN-MICHEL</firstname><lastname>HEMIDY</lastname><quality>PERE</quality>
|
||||
<contact>
|
||||
<mobile>06 01 02 03 04</mobile><mail>dominique.lefeuvre@sigec.fr</mail>
|
||||
</contact>
|
||||
</authorizedPersonList>
|
||||
</familyResult>
|
||||
</ns1:readFamilyResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -1,12 +0,0 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Server</faultcode><faultstring>E204 : Le mot de passe est incorrect</faultstring>
|
||||
<detail>
|
||||
<ns1:MaelisFamilyException xmlns:ns1="ws.maelis.sigec.com">
|
||||
<message>E204 : Le mot de passe est incorrect</message>
|
||||
</ns1:MaelisFamilyException>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -1,78 +0,0 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns1:readFamilyByPasswordResponse xmlns:ns1="ws.maelis.sigec.com">
|
||||
<familyBean>
|
||||
<number>3264</number><category>MONO</category><situation>SEPA</situation><nbChild>1</nbChild><nbAES>0</nbAES><nbTotalChild>1</nbTotalChild><flagCom>true</flagCom>
|
||||
<rl1InfoBean>
|
||||
<num>21292</num><civility>MME</civility><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><quality>MERE</quality>
|
||||
<profession>
|
||||
<codeCSP>SANS</codeCSP><addressProf/>
|
||||
</profession>
|
||||
<contact>
|
||||
<phone>04 84 48 45 11</phone><mobile>06 01 02 03 04</mobile><mail>dominique.lefeuvre@sigec.fr</mail><isContactMail>false</isContactMail><isContactSms>false</isContactSms><isInvoicePdf>false</isInvoicePdf>
|
||||
</contact>
|
||||
<address>
|
||||
<num>3450</num><street1>BOULEVARD GENERAL LECLERC</street1><idStreet>197</idStreet><zipcode>83160</zipcode><town>LA VALETTE-DU-VAR</town>
|
||||
</address>
|
||||
<cafInfo>
|
||||
<num>2791735</num><organ>A10000216060</organ>
|
||||
</cafInfo>
|
||||
</rl1InfoBean>
|
||||
<childInfoList>
|
||||
<num>21293</num><sexe>F</sexe><lastname>JOHANN</lastname><firstname>AURELIE</firstname>
|
||||
<birthInfoBean>
|
||||
<dateBirth>2011-09-02T00:00:00+02:00</dateBirth><countryCode>100</countryCode><place>LA SEYNE SUR MER</place>
|
||||
</birthInfoBean>
|
||||
<subscribeSchoolList>
|
||||
<year>2020</year><schoolName>2 FRANCOIS FABIE</schoolName><adress> AVENUE ARISTIDE BRIAND</adress><headmaster> </headmaster><level>COURS MOYEN 1</level><preSubscribeDate>2020-08-01T00:00:00+02:00</preSubscribeDate><isWaitList>false</isWaitList>
|
||||
</subscribeSchoolList>
|
||||
<subscribeActivityList>
|
||||
<libelle>1 2020-2021 GARDERIE MATIN</libelle><typeIns>DEF</typeIns><libelleTypeIns>DEFINITIVE</libelleTypeIns>
|
||||
<subscribesUnit>
|
||||
<idUnit>A10003121694</idUnit><libelle>1 2020-2021 GARDERIE MATIN</libelle><bUniStd>true</bUniStd><dateStart>2020-09-01T00:00:00+02:00</dateStart><dateEnd>2021-07-06T00:00:00+02:00</dateEnd>
|
||||
</subscribesUnit>
|
||||
<place>2 FRANCOIS FABIE</place><planningHebdomadaire>0000000</planningHebdomadaire><typeConsum>ENF</typeConsum><libelleTypeConsum>ENFANT</libelleTypeConsum><idActivity>A10003121692</idActivity>
|
||||
<typeActivity>
|
||||
<code>ACCMAT</code><libelle>Accueil du matin</libelle>
|
||||
<natureSpec>
|
||||
<code>A</code><libelle>Accueil Périscolaire</libelle>
|
||||
</natureSpec>
|
||||
</typeActivity>
|
||||
</subscribeActivityList>
|
||||
<subscribeActivityList>
|
||||
<libelle>2 2020-2021 RESTAURATION SCOLAIRE</libelle><typeIns>DEF</typeIns><libelleTypeIns>DEFINITIVE</libelleTypeIns>
|
||||
<subscribesUnit>
|
||||
<idUnit>A10003123492</idUnit><libelle>2 2020-2021 RESTAURATION SCOLAIRE</libelle><bUniStd>true</bUniStd><dateStart>2020-09-02T00:00:00+02:00</dateStart><dateEnd>2021-07-03T00:00:00+02:00</dateEnd>
|
||||
</subscribesUnit>
|
||||
<place>2 FRANCOIS FABIE</place><planningHebdomadaire>0010011</planningHebdomadaire><typeConsum>ENF</typeConsum><libelleTypeConsum>ENFANT</libelleTypeConsum><idActivity>A10003123490</idActivity>
|
||||
<typeActivity>
|
||||
<code>RESTSCOL</code><libelle>Restauration scolaire</libelle>
|
||||
<natureSpec>
|
||||
<code>R</code><libelle>Restauration Scolaire</libelle>
|
||||
</natureSpec>
|
||||
</typeActivity>
|
||||
</subscribeActivityList>
|
||||
<bPhoto>false</bPhoto><bLeaveAlone>false</bLeaveAlone>
|
||||
</childInfoList>
|
||||
<authorizedPersonList>
|
||||
<numPerson>23870</numPerson><civility>MME</civility><firstname>VIRGINIE</firstname><lastname>DEVOILLE</lastname><quality>GMERE</quality>
|
||||
<contact>
|
||||
<phone>04 05 06 07 08</phone><mobile>06 01 02 03 04</mobile><mail>dominique.lefeuvre@sigec.fr</mail>
|
||||
</contact>
|
||||
</authorizedPersonList>
|
||||
<authorizedPersonList>
|
||||
<numPerson>23872</numPerson><civility>M. ET</civility><firstname>YANNIS</firstname><lastname>BAILLY</lastname><quality>GP</quality>
|
||||
<contact>
|
||||
<phone>04 05 06 07 08</phone><mobile>06 01 02 03 04</mobile><mail>dominique.lefeuvre@sigec.fr</mail>
|
||||
</contact>
|
||||
</authorizedPersonList>
|
||||
<authorizedPersonList>
|
||||
<numPerson>24481</numPerson><civility>MR</civility><firstname>JEAN-MICHEL</firstname><lastname>HEMIDY</lastname><quality>PERE</quality>
|
||||
<contact>
|
||||
<mobile>06 01 02 03 04</mobile><mail>dominique.lefeuvre@sigec.fr</mail>
|
||||
</contact>
|
||||
</authorizedPersonList>
|
||||
</familyBean>
|
||||
</ns1:readFamilyByPasswordResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -1,308 +0,0 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns1:readInvoicesResponse xmlns:ns1="ws.maelis.sigec.com">
|
||||
<invoiceList>
|
||||
<numInvoice>53186</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION SEPTEMBRE 2014</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>7.52</amountInvoice><amountPaid>7.52</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2014-10-24T00:00:00+02:00</dateInvoice><dateStartPayment>2014-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2014-10-24T00:00:00+02:00</dateDeadline>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2014-09-01T00:00:00+02:00</dateStart><dateEnd>2014-09-30T00:00:00+02:00</dateEnd><quantity>4.0</quantity><unitPrice>1.88</unitPrice><amountLine>7.52</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>54654</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION OCTOBRE 2014</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>1.88</amountInvoice><amountPaid>1.88</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2014-11-21T00:00:00+02:00</dateInvoice><dateStartPayment>2014-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2014-11-21T00:00:00+02:00</dateDeadline>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>REGULARISATION MALADIE SEPTEMBRE</libelleLine><name>JOHANN AURELIE</name><dateStart>2014-10-01T00:00:00+02:00</dateStart><dateEnd>2014-10-31T00:00:00+02:00</dateEnd><quantity>-2.0</quantity><unitPrice>1.88</unitPrice><amountLine>-3.76</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>2</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2014-10-01T00:00:00+02:00</dateStart><dateEnd>2014-10-31T00:00:00+02:00</dateEnd><quantity>3.0</quantity><unitPrice>1.88</unitPrice><amountLine>5.64</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>56106</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION NOVEMBRE 2014</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>7.52</amountInvoice><amountPaid>7.52</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2014-12-19T00:00:00+02:00</dateInvoice><dateStartPayment>2014-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2014-12-19T00:00:00+02:00</dateDeadline>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2014-11-01T00:00:00+02:00</dateStart><dateEnd>2014-11-30T00:00:00+02:00</dateEnd><quantity>4.0</quantity><unitPrice>1.88</unitPrice><amountLine>7.52</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>57572</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION DECEMBRE 2014</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>5.64</amountInvoice><amountPaid>5.64</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2015-01-16T00:00:00+02:00</dateInvoice><dateStartPayment>2008-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2015-01-16T00:00:00+02:00</dateDeadline>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2014-12-01T00:00:00+02:00</dateStart><dateEnd>2014-12-31T00:00:00+02:00</dateEnd><quantity>3.0</quantity><unitPrice>1.88</unitPrice><amountLine>5.64</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>59032</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION JANVIER 2015</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>7.52</amountInvoice><amountPaid>7.52</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2015-02-16T00:00:00+02:00</dateInvoice><dateStartPayment>2008-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2015-02-16T00:00:00+02:00</dateDeadline>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2015-01-01T00:00:00+02:00</dateStart><dateEnd>2015-01-31T00:00:00+02:00</dateEnd><quantity>4.0</quantity><unitPrice>1.88</unitPrice><amountLine>7.52</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>60502</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION FEVRIER 2015</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>3.76</amountInvoice><amountPaid>3.76</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2015-03-16T00:00:00+02:00</dateInvoice><dateStartPayment>2014-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2015-03-16T00:00:00+02:00</dateDeadline>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>ENSEIGNANT ABS RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2015-02-01T00:00:00+02:00</dateStart><dateEnd>2015-02-28T00:00:00+02:00</dateEnd><quantity>-1.0</quantity><unitPrice>1.88</unitPrice><amountLine>-1.88</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>2</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2015-02-01T00:00:00+02:00</dateStart><dateEnd>2015-02-28T00:00:00+02:00</dateEnd><quantity>3.0</quantity><unitPrice>1.88</unitPrice><amountLine>5.64</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>61980</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION MARS 2015</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>5.64</amountInvoice><amountPaid>5.64</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2015-04-16T00:00:00+02:00</dateInvoice><dateStartPayment>2015-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2015-04-23T00:00:00+02:00</dateDeadline><dateDeadlinePayment>2015-05-01T00:00:00+02:00</dateDeadlinePayment>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2015-03-01T00:00:00+02:00</dateStart><dateEnd>2015-03-31T00:00:00+02:00</dateEnd><quantity>3.0</quantity><unitPrice>1.88</unitPrice><amountLine>5.64</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>64954</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION AVRIL 2015</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>7.52</amountInvoice><amountPaid>7.52</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2015-05-16T00:00:00+02:00</dateInvoice><dateStartPayment>2015-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2015-05-16T00:00:00+02:00</dateDeadline><dateDeadlinePayment>2015-07-01T00:00:00+02:00</dateDeadlinePayment>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2015-04-01T00:00:00+02:00</dateStart><dateEnd>2015-04-30T00:00:00+02:00</dateEnd><quantity>4.0</quantity><unitPrice>1.88</unitPrice><amountLine>7.52</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>66441</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION MAI 2015</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>5.64</amountInvoice><amountPaid>5.64</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2015-06-19T00:00:00+02:00</dateInvoice><dateStartPayment>2015-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2015-06-19T00:00:00+02:00</dateDeadline><dateDeadlinePayment>2015-07-01T00:00:00+02:00</dateDeadlinePayment>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2015-05-01T00:00:00+02:00</dateStart><dateEnd>2015-05-31T00:00:00+02:00</dateEnd><quantity>3.0</quantity><unitPrice>1.88</unitPrice><amountLine>5.64</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>67904</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION JUIN 2015</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>7.52</amountInvoice><amountPaid>7.52</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2015-07-21T00:00:00+02:00</dateInvoice><dateStartPayment>2015-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2015-07-21T00:00:00+02:00</dateDeadline><dateDeadlinePayment>2015-09-01T00:00:00+02:00</dateDeadlinePayment>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2015-06-01T00:00:00+02:00</dateStart><dateEnd>2015-06-30T00:00:00+02:00</dateEnd><quantity>4.0</quantity><unitPrice>1.88</unitPrice><amountLine>7.52</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>69360</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>FACTURATION JUILLET 2015</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>1.88</amountInvoice><amountPaid>1.88</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2015-08-21T00:00:00+02:00</dateInvoice><dateStartPayment>2015-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2015-08-21T00:00:00+02:00</dateDeadline><dateDeadlinePayment>2015-09-01T00:00:00+02:00</dateDeadlinePayment>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10001852712</idActivity><idUnit>A10001852713</idUnit><libelleLine>Calendrier RESTAURATION SCOLAIRE 2014-2015</libelleLine><name>JOHANN AURELIE</name><dateStart>2015-07-01T00:00:00+02:00</dateStart><dateEnd>2015-07-31T00:00:00+02:00</dateEnd><quantity>1.0</quantity><unitPrice>1.88</unitPrice><amountLine>1.88</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>72367</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>PERISCOLAIRE JANVIER 2017</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>70.02</amountInvoice><amountPaid>0</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2017-02-28T00:00:00+02:00</dateInvoice><dateStartPayment>2017-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2017-02-15T00:00:00+02:00</dateDeadline><dateDeadlinePayment>2018-12-31T00:00:00+02:00</dateDeadlinePayment>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10002890790</idActivity><idUnit>A10002890792</idUnit><libelleLine>Calendrier 2016-2017 GARDERIE MATIN</libelleLine><name>JOHANN AURELIE</name><dateStart>2017-01-01T00:00:00+02:00</dateStart><dateEnd>2017-01-31T00:00:00+02:00</dateEnd><quantity>9.0</quantity><unitPrice>2.7</unitPrice><amountLine>24.3</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>2</numLine><numPers>21293</numPers><idActivity>A10002890794</idActivity><idUnit>A10002890796</idUnit><libelleLine>Calendrier 2016-2017 GARDERIE SOIR</libelleLine><name>JOHANN AURELIE</name><dateStart>2017-01-01T00:00:00+02:00</dateStart><dateEnd>2017-01-31T00:00:00+02:00</dateEnd><quantity>9.0</quantity><unitPrice>3.2</unitPrice><amountLine>28.8</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>3</numLine><numPers>21293</numPers><idActivity>A10002883950</idActivity><idUnit>A10002883952</idUnit><libelleLine>Calendrier 2016-2017 RESTAURATION SCOLAIRE</libelleLine><name>JOHANN AURELIE</name><dateStart>2017-01-01T00:00:00+02:00</dateStart><dateEnd>2017-01-31T00:00:00+02:00</dateEnd><quantity>9.0</quantity><unitPrice>1.88</unitPrice><amountLine>16.92</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>73594</numInvoice>
|
||||
<TTFInfo>
|
||||
<libelle>PERISCOLAIRE AVRIL 2017</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>31.12</amountInvoice><amountPaid>0</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2017-04-27T00:00:00+02:00</dateInvoice><dateStartPayment>2017-01-01T00:00:00+02:00</dateStartPayment><dateDeadline>2017-05-15T00:00:00+02:00</dateDeadline><dateDeadlinePayment>2018-12-31T00:00:00+02:00</dateDeadlinePayment>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10002883950</idActivity><idUnit>A10002883952</idUnit><libelleLine>Calendrier 2016-2017 RESTAURATION SCOLAIRE</libelleLine><name>JOHANN AURELIE</name><dateStart>2017-04-01T00:00:00+02:00</dateStart><dateEnd>2017-04-30T00:00:00+02:00</dateEnd><quantity>4.0</quantity><unitPrice>1.88</unitPrice><amountLine>7.52</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>2</numLine><numPers>21293</numPers><idActivity>A10002890794</idActivity><idUnit>A10002890796</idUnit><libelleLine>Calendrier 2016-2017 GARDERIE SOIR</libelleLine><name>JOHANN AURELIE</name><dateStart>2017-04-01T00:00:00+02:00</dateStart><dateEnd>2017-04-30T00:00:00+02:00</dateEnd><quantity>4.0</quantity><unitPrice>3.2</unitPrice><amountLine>12.8</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>3</numLine><numPers>21293</numPers><idActivity>A10002890790</idActivity><idUnit>A10002890792</idUnit><libelleLine>Calendrier 2016-2017 GARDERIE MATIN</libelleLine><name>JOHANN AURELIE</name><dateStart>2017-04-01T00:00:00+02:00</dateStart><dateEnd>2017-04-30T00:00:00+02:00</dateEnd><quantity>4.0</quantity><unitPrice>2.7</unitPrice><amountLine>10.8</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>75471</numInvoice>
|
||||
<TTFInfo>
|
||||
<headerLine1>Votre portail famille évolue : vous pouvez désormais effectuer vos réservations en ligne.</headerLine1><libelle>FACTURATION OCTOBRE 2018</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>108.92</amountInvoice><amountPaid>0</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2018-10-29T00:00:00+02:00</dateInvoice><dateStartPayment>2018-10-29T00:00:00+02:00</dateStartPayment><dateDeadline>2018-11-15T00:00:00+02:00</dateDeadline><dateDeadlinePayment>2020-12-31T00:00:00+02:00</dateDeadlinePayment>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10003009270</idActivity><idUnit>A10003009272</idUnit><libelleLine>Calendrier 2018-2019 RESTAURATION SCOLAIRE</libelleLine><name>JOHANN AURELIE</name><dateStart>2018-10-01T00:00:00+02:00</dateStart><dateEnd>2018-10-31T00:00:00+02:00</dateEnd><quantity>14.0</quantity><unitPrice>1.88</unitPrice><amountLine>26.32</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>2</numLine><numPers>21293</numPers><idActivity>A10003009290</idActivity><idUnit>A10003009292</idUnit><libelleLine>Calendrier 2018-2019 GARDERIE MATIN</libelleLine><name>JOHANN AURELIE</name><dateStart>2018-10-01T00:00:00+02:00</dateStart><dateEnd>2018-10-31T00:00:00+02:00</dateEnd><quantity>14.0</quantity><unitPrice>2.7</unitPrice><amountLine>37.8</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>3</numLine><numPers>21293</numPers><idActivity>A10003009296</idActivity><idUnit>A10003009298</idUnit><libelleLine>Calendrier 2018-2019 GARDERIE SOIR</libelleLine><name>JOHANN AURELIE</name><dateStart>2018-10-01T00:00:00+02:00</dateStart><dateEnd>2018-10-31T00:00:00+02:00</dateEnd><quantity>14.0</quantity><unitPrice>3.2</unitPrice><amountLine>44.8</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>76287</numInvoice>
|
||||
<TTFInfo>
|
||||
<headerLine1>Votre portail famille évolue :</headerLine1><headerLine2>vous pouvez désormais effectuer vos réservations en ligne.</headerLine2><libelle>FACTURATION NOVEMBRE 2018</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>99.26</amountInvoice><amountPaid>0</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2018-12-07T00:00:00+02:00</dateInvoice><dateDeadline>2018-12-22T00:00:00+02:00</dateDeadline>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10003009290</idActivity><idUnit>A10003009292</idUnit><libelleLine>Calendrier 2018-2019 GARDERIE MATIN</libelleLine><name>JOHANN AURELIE</name><dateStart>2018-11-01T00:00:00+02:00</dateStart><dateEnd>2018-11-30T00:00:00+02:00</dateEnd><quantity>13.0</quantity><unitPrice>2.7</unitPrice><amountLine>35.1</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>2</numLine><numPers>21293</numPers><idActivity>A10003009270</idActivity><idUnit>A10003009272</idUnit><libelleLine>Calendrier 2018-2019 RESTAURATION SCOLAIRE</libelleLine><name>JOHANN AURELIE</name><dateStart>2018-11-01T00:00:00+02:00</dateStart><dateEnd>2018-11-30T00:00:00+02:00</dateEnd><quantity>12.0</quantity><unitPrice>1.88</unitPrice><amountLine>22.56</amountLine>
|
||||
</lineInvoiceList>
|
||||
<lineInvoiceList>
|
||||
<numLine>3</numLine><numPers>21293</numPers><idActivity>A10003009296</idActivity><idUnit>A10003009298</idUnit><libelleLine>Calendrier 2018-2019 GARDERIE SOIR</libelleLine><name>JOHANN AURELIE</name><dateStart>2018-11-01T00:00:00+02:00</dateStart><dateEnd>2018-11-30T00:00:00+02:00</dateEnd><quantity>13.0</quantity><unitPrice>3.2</unitPrice><amountLine>41.6</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
<invoiceList>
|
||||
<numInvoice>77107</numInvoice>
|
||||
<TTFInfo>
|
||||
<headerLine1>Les inscriptions aux séjours des vacances d'été pourront être réalisées sur votre portail famille :</headerLine1><headerLine2>http://sigecville.fr</headerLine2><libelle>RESTAURATION JUIN 2019</libelle>
|
||||
</TTFInfo>
|
||||
<regie>
|
||||
<code>1</code><libelle>REGIE CENTRALE DES RECETTES</libelle>
|
||||
</regie>
|
||||
<numFamily>3264</numFamily><name>BAILLY CAROLINE</name>
|
||||
<payer>
|
||||
<num>21292</num><lastname>BAILLY</lastname><firstname>CAROLINE</firstname><sexe>F</sexe><civility>MME</civility>
|
||||
</payer>
|
||||
<amountInvoice>22.56</amountInvoice><amountPaid>0</amountPaid><amountPaidTG>0</amountPaidTG><dateInvoice>2019-06-28T00:00:00+02:00</dateInvoice><dateDeadline>2019-07-10T00:00:00+02:00</dateDeadline>
|
||||
<lineInvoiceList>
|
||||
<numLine>1</numLine><numPers>21293</numPers><idActivity>A10003009270</idActivity><idUnit>A10003009272</idUnit><libelleLine>Calendrier 2018-2019 RESTAURATION SCOLAIRE</libelleLine><name>JOHANN AURELIE</name><dateStart>2019-06-01T00:00:00+02:00</dateStart><dateEnd>2019-06-30T00:00:00+02:00</dateEnd><quantity>12.0</quantity><unitPrice>1.88</unitPrice><amountLine>22.56</amountLine>
|
||||
</lineInvoiceList>
|
||||
</invoiceList>
|
||||
</ns1:readInvoicesResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -1,21 +0,0 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns1:subscribeActivityResponse xmlns:ns1="ws.maelis.sigec.com">
|
||||
<subscribeActivityResultBean>
|
||||
<numPerson>18288</numPerson>
|
||||
<activity>3 2020-2021 GARDERIE SOIR</activity>
|
||||
<dateStart>2020-09-02T00:00:00+01:00</dateStart>
|
||||
<dateEnd>2021-07-03T00:00:00+01:00</dateEnd>
|
||||
<datePreSubscribe>2021-01-08T18:46:25+01:00</datePreSubscribe>
|
||||
<dateSubscribe>2021-01-08T18:46:25+01:00</dateSubscribe>
|
||||
<typeConsum>ENF</typeConsum>
|
||||
<place>2 FRANCOIS FABIE</place>
|
||||
<state>
|
||||
<isWaitState>false</isWaitState>
|
||||
<idState>1</idState>
|
||||
<libelle>Confirmé</libelle>
|
||||
</state>
|
||||
</subscribeActivityResultBean>
|
||||
</ns1:subscribeActivityResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -1,12 +0,0 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<soap:Fault>
|
||||
<faultcode>soap:Server</faultcode><faultstring>E16 : Le code postal est obligatoire</faultstring>
|
||||
<detail>
|
||||
<ns1:MaelisFamilyException xmlns:ns1="ws.maelis.sigec.com">
|
||||
<message>E16 : Le code postal est obligatoire</message>
|
||||
</ns1:MaelisFamilyException>
|
||||
</detail>
|
||||
</soap:Fault>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -1,5 +0,0 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap:Body>
|
||||
<ns1:updateCoordinateResponse xmlns:ns1="ws.maelis.sigec.com"></ns1:updateCoordinateResponse>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
|
@ -64,90 +64,6 @@ ETABLISSEMENTS_RESPONSE = {
|
|||
"gateway_error": False,
|
||||
}
|
||||
|
||||
ENTREPRISES_RESPONSE = {
|
||||
"entreprise": {
|
||||
"siren": "418166096",
|
||||
"capital_social": 459356,
|
||||
"numero_tva_intracommunautaire": "FR16418166096",
|
||||
"forme_juridique": "SA à directoire (s.a.i.)",
|
||||
"forme_juridique_code": "5699",
|
||||
"nom_commercial": "OCTO-TECHNOLOGY",
|
||||
"procedure_collective": False,
|
||||
"naf_entreprise": "6202A",
|
||||
"libelle_naf_entreprise": "Conseil en systèmes et logiciels informatiques",
|
||||
"raison_sociale": "OCTO-TECHNOLOGY",
|
||||
"siret_siege_social": "41816609600051",
|
||||
"code_effectif_entreprise": "31",
|
||||
"date_creation": 891381600,
|
||||
"categorie_entreprise": "PME",
|
||||
"diffusable_commercialement": True,
|
||||
"tranche_effectif_salarie_entreprise": {
|
||||
"de": 200,
|
||||
"a": 249,
|
||||
"code": "31",
|
||||
"date_reference": "2014",
|
||||
"intitule": "200 à 249 salariés",
|
||||
},
|
||||
"mandataires_sociaux": [
|
||||
{
|
||||
"nom": "HISQUIN",
|
||||
"prenom": "FRANCOIS",
|
||||
"fonction": "PRESIDENT DU DIRECTOIRE",
|
||||
"dirigeant": True,
|
||||
"date_naissance": "1965-01-27",
|
||||
"raison_sociale": "",
|
||||
"identifiant": "",
|
||||
"type": "PP",
|
||||
},
|
||||
{
|
||||
"nom": "",
|
||||
"prenom": "",
|
||||
"fonction": "COMMISSAIRE AUX COMPTES SUPPLEANT",
|
||||
"dirigeant": True,
|
||||
"date_naissance": "",
|
||||
"date_naissance_timestamp": 0,
|
||||
"raison_sociale": "BCRH & ASSOCIES - SOCIETE A RESPONSABILITE LIMITEE A ASSOCIE UNIQUE",
|
||||
"identifiant": "490092574",
|
||||
"type": "PM",
|
||||
},
|
||||
],
|
||||
"etat_administratif": {
|
||||
"value": "C", # A (actif) ou C (cessé)
|
||||
"date_cessation": 1315173600, # null quand actif (A), un timestamp (un entier) quand cessé (C )
|
||||
},
|
||||
},
|
||||
"etablissement_siege": {
|
||||
"siege_social": True,
|
||||
"siret": "41816609600051",
|
||||
"naf": "6202A",
|
||||
"libelle_naf": "Conseil en systèmes et logiciels informatiques",
|
||||
"date_mise_a_jour": 1449183600,
|
||||
"tranche_effectif_salarie_etablissement": {
|
||||
"de": 200,
|
||||
"a": 249,
|
||||
"code": "31",
|
||||
"date_reference": "2014",
|
||||
"intitule": "200 à 249 salariés",
|
||||
},
|
||||
"date_creation_etablissement": 1108594800,
|
||||
"region_implantation": {"code": "11", "value": "Île-de-France"},
|
||||
"commune_implantation": {"code": "75108", "value": "PARIS 8"},
|
||||
"adresse": {
|
||||
"l1": "OCTO TECHNOLOGY",
|
||||
"l4": "50 AVENUE DES CHAMPS ELYSEES",
|
||||
"l6": "75008 PARIS",
|
||||
"l7": "FRANCE",
|
||||
"numero_voie": "50",
|
||||
"type_voie": "AV",
|
||||
"nom_voie": "DES CHAMPS ELYSEES",
|
||||
"code_postal": "75008",
|
||||
"localite": "PARIS 8",
|
||||
"code_insee_localite": "75108",
|
||||
},
|
||||
"etat_administratif": {"value": "F", "date_fermeture": 1315173600},
|
||||
},
|
||||
"gateway_error": False,
|
||||
}
|
||||
|
||||
UNITES_LEGALES_RESPONSE = {
|
||||
"data": {
|
||||
|
@ -293,43 +209,12 @@ DOCUMENTS_ASSOCIATION_RESPONSE = {
|
|||
}
|
||||
|
||||
|
||||
EFFECTIFS_ANNUELS_ACOSS_COVID = {"siren": "418166096", "annee": "2019", "effectifs_annuels": 100.5}
|
||||
|
||||
|
||||
ENTREPRISE_EFFECTIFS_MENSUELS_ACOSS_COVID = {
|
||||
"siren": "418166096",
|
||||
"annee": "2019",
|
||||
"mois": "02",
|
||||
"effectifs_mensuels": 100.5,
|
||||
}
|
||||
|
||||
|
||||
ETABLISSEMENT_EFFECTIFS_MENSUELS_ACOSS_COVID = {
|
||||
"siret": "41816609600051",
|
||||
"annee": "2019",
|
||||
"mois": "02",
|
||||
"effectifs_mensuels": 100.5,
|
||||
}
|
||||
|
||||
|
||||
EXERCICES_RESPONSE = {
|
||||
"exercices": [
|
||||
{
|
||||
"ca": "648374448",
|
||||
"date_fin_exercice": "2016-12-31T00:00:00+01:00",
|
||||
"date_fin_exercice_timestamp": 1483138800,
|
||||
},
|
||||
{
|
||||
"ca": "491463386",
|
||||
"date_fin_exercice": "2015-12-31T00:00:00+01:00",
|
||||
"date_fin_exercice_timestamp": 1451516400,
|
||||
},
|
||||
{
|
||||
"ca": "473899061",
|
||||
"date_fin_exercice": "2014-12-31T00:00:00+01:00",
|
||||
"date_fin_exercice_timestamp": 1419980400,
|
||||
},
|
||||
]
|
||||
"data": [
|
||||
{"data": {"chiffre_affaires": 900001, "date_fin_exercice": "2015-12-01"}, "links": {}, "meta": {}}
|
||||
],
|
||||
"meta": {},
|
||||
"links": {},
|
||||
}
|
||||
|
||||
|
||||
|
@ -435,7 +320,10 @@ def test_simple_match_mandataire_social(app, resource):
|
|||
params.update(REQUEST_PARAMS)
|
||||
|
||||
with responses.RequestsMock() as rsps:
|
||||
rsps.get('https://entreprise.api.gouv.fr/v2/entreprises/443170139/', json=ENTREPRISES_RESPONSE)
|
||||
rsps.get(
|
||||
'https://entreprise.api.gouv.fr/v3/infogreffe/rcs/unites_legales/443170139/mandataires_sociaux',
|
||||
json=RCS_UNITES_LEGALES_MANDATAIRES_SOCIAUX_RESPONSE,
|
||||
)
|
||||
url = '/api-entreprise/test/match_mandataire_social/443170139/'
|
||||
response = app.get(url, params=params)
|
||||
|
||||
|
@ -479,7 +367,10 @@ def test_levenshtein_match_mandataire_social(app, resource):
|
|||
params.update(REQUEST_PARAMS)
|
||||
|
||||
with responses.RequestsMock() as rsps:
|
||||
rsps.get('https://entreprise.api.gouv.fr/v2/entreprises/443170139/', json=ENTREPRISES_RESPONSE)
|
||||
rsps.get(
|
||||
'https://entreprise.api.gouv.fr/v3/infogreffe/rcs/unites_legales/443170139/mandataires_sociaux',
|
||||
json=RCS_UNITES_LEGALES_MANDATAIRES_SOCIAUX_RESPONSE,
|
||||
)
|
||||
|
||||
url = '/api-entreprise/test/match_mandataire_social/443170139/'
|
||||
response = app.get(url, params=params)
|
||||
|
@ -688,70 +579,18 @@ def test_document_association(app, resource, freezer):
|
|||
app.get(document['url'], status=404)
|
||||
|
||||
|
||||
def test_effectifs_annuels_acoss_covid(app, resource):
|
||||
with responses.RequestsMock() as rsps:
|
||||
rsps.get(
|
||||
'https://entreprise.api.gouv.fr/v2/effectifs_annuels_acoss_covid/418166096/',
|
||||
json=EFFECTIFS_ANNUELS_ACOSS_COVID,
|
||||
)
|
||||
|
||||
response = app.get(
|
||||
'/api-entreprise/test/effectifs_annuels_acoss_covid/418166096/', params=REQUEST_PARAMS
|
||||
)
|
||||
data = response.json['data']
|
||||
assert data['siren'] == '418166096'
|
||||
assert data['annee'] == '2019'
|
||||
assert data['effectifs_annuels'] == 100.5
|
||||
|
||||
|
||||
def test_entreprise_effectifs_mensuels_acoss_covid(app, resource):
|
||||
with responses.RequestsMock() as rsps:
|
||||
rsps.get(
|
||||
'https://entreprise.api.gouv.fr/v2/effectifs_mensuels_acoss_covid/2019/02/entreprise/418166096/',
|
||||
json=ENTREPRISE_EFFECTIFS_MENSUELS_ACOSS_COVID,
|
||||
)
|
||||
|
||||
response = app.get(
|
||||
'/api-entreprise/test/entreprise_effectifs_mensuels_acoss_covid/2019/02/418166096/',
|
||||
params=REQUEST_PARAMS,
|
||||
)
|
||||
|
||||
data = response.json['data']
|
||||
assert data['siren'] == '418166096'
|
||||
assert data['annee'] == '2019'
|
||||
assert data['mois'] == '02'
|
||||
assert data['effectifs_mensuels'] == 100.5
|
||||
|
||||
|
||||
def test_etablissment_effectifs_mensuels_acoss_covid(app, resource):
|
||||
with responses.RequestsMock() as rsps:
|
||||
rsps.get(
|
||||
'https://entreprise.api.gouv.fr/v2/effectifs_mensuels_acoss_covid/2019/02/etablissement/418166096/',
|
||||
json=ETABLISSEMENT_EFFECTIFS_MENSUELS_ACOSS_COVID,
|
||||
)
|
||||
|
||||
response = app.get(
|
||||
'/api-entreprise/test/etablissement_effectifs_mensuels_acoss_covid/2019/02/418166096/',
|
||||
params=REQUEST_PARAMS,
|
||||
)
|
||||
data = response.json['data']
|
||||
assert data['siret'] == '41816609600051'
|
||||
assert data['annee'] == '2019'
|
||||
assert data['mois'] == '02'
|
||||
assert data['effectifs_mensuels'] == 100.5
|
||||
|
||||
|
||||
def test_exercices(app, resource):
|
||||
with responses.RequestsMock() as rsps:
|
||||
rsps.get('https://entreprise.api.gouv.fr/v2/exercices/418166096/', json=EXERCICES_RESPONSE)
|
||||
rsps.get(
|
||||
'https://entreprise.api.gouv.fr/v3/dgfip/etablissements/418166096/chiffres_affaires',
|
||||
json=EXERCICES_RESPONSE,
|
||||
)
|
||||
response = app.get('/api-entreprise/test/exercices/418166096/', params=REQUEST_PARAMS)
|
||||
data = response.json['data']
|
||||
assert len(data['exercices']) == 3
|
||||
exercice = data['exercices'][0]
|
||||
assert exercice['ca'] == '648374448'
|
||||
assert exercice['date_fin_exercice'] == '2016-12-31T00:00:00+01:00'
|
||||
assert exercice['date_fin_exercice_timestamp'] == 1483138800
|
||||
assert exercice['date_fin_exercice_datetime'] == '2016-12-30T23:00:00Z'
|
||||
assert len(data) == 1
|
||||
exercice = data[0]['data']
|
||||
assert exercice['chiffre_affaires'] == 900001
|
||||
assert exercice['date_fin_exercice'] == '2015-12-01'
|
||||
|
||||
|
||||
def test_error_500(app, resource):
|
||||
|
|
|
@ -5,12 +5,11 @@ from unittest import mock
|
|||
|
||||
import pytest
|
||||
from django.utils.encoding import force_str
|
||||
from zeep.exceptions import Fault as WebFault
|
||||
from zeep.exceptions import TransportError
|
||||
|
||||
from passerelle.contrib.dpark.models import DPark, Pairing
|
||||
from passerelle.utils.conversion import to_pdf
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
from passerelle.utils.soap import SOAPError
|
||||
from tests.utils import ResponsesSoap, make_resource
|
||||
|
||||
SLUG = 'test'
|
||||
|
@ -71,10 +70,6 @@ class ReplyDataClass(dict):
|
|||
super().__init__(**kwargs)
|
||||
|
||||
|
||||
class WebFaultHavingLatin1(WebFault):
|
||||
pass
|
||||
|
||||
|
||||
class MockedService:
|
||||
def __init__(self, success=True, error_class=None, replydata=None):
|
||||
self.success = success
|
||||
|
@ -82,20 +77,14 @@ class MockedService:
|
|||
self.replydata = replydata
|
||||
|
||||
def raise_error(self):
|
||||
if self.error_class is WebFault:
|
||||
raise self.error_class(mock.Mock(faulstring='Error %s raised' % self.error_class.__name__), None)
|
||||
if self.error_class is TransportError:
|
||||
raise self.error_class('connection error occured', None)
|
||||
if self.error_class is WebFaultHavingLatin1:
|
||||
raise WebFault(message='éêè')
|
||||
raise Exception('random error')
|
||||
if self.error_class:
|
||||
raise self.error_class
|
||||
|
||||
def return_response(self, *args, **kwargs):
|
||||
return ReplyDataClass(**self.replydata)
|
||||
|
||||
def __getattr__(self, name):
|
||||
if self.error_class:
|
||||
self.raise_error()
|
||||
self.raise_error()
|
||||
return self.return_response
|
||||
|
||||
|
||||
|
@ -106,18 +95,9 @@ def get_service():
|
|||
|
||||
|
||||
def test_call_service_error(dpark, app, get_service):
|
||||
get_service.return_value = MockedService(error_class=WebFault)
|
||||
get_service.return_value = MockedService(error_class=SOAPError('boom!'))
|
||||
resp = app.get('/dpark/test/ping/')
|
||||
assert 'ServiceError: ' in resp.json['err_desc']
|
||||
get_service.return_value = MockedService(error_class=TransportError)
|
||||
resp = app.get('/dpark/test/ping/')
|
||||
assert 'Error: connection error occured' in resp.json['err_desc']
|
||||
get_service.return_value = MockedService(error_class=Exception)
|
||||
resp = app.get('/dpark/test/ping/')
|
||||
assert 'Error: random error' in resp.json['err_desc']
|
||||
get_service.return_value = MockedService(error_class=WebFaultHavingLatin1)
|
||||
resp = app.get('/dpark/test/ping/')
|
||||
assert 'ServiceError: éêè' in resp.json['err_desc']
|
||||
assert 'boom!' in resp.json['err_desc']
|
||||
|
||||
|
||||
def test_ping(dpark, app, get_service):
|
||||
|
|
|
@ -1,554 +0,0 @@
|
|||
import json
|
||||
import os
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
from django.test import override_settings
|
||||
from django.utils.dateparse import parse_date
|
||||
|
||||
import tests.utils
|
||||
from passerelle.apps.maelis.models import Link, Maelis
|
||||
from passerelle.apps.maelis.utils import (
|
||||
decompose_event,
|
||||
get_school_year,
|
||||
month_range,
|
||||
week_boundaries_datetimes,
|
||||
)
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
TEST_BASE_DIR = os.path.join(os.path.dirname(__file__), 'data', 'maelis')
|
||||
|
||||
|
||||
def get_xml_file(filename):
|
||||
with open(os.path.join(TEST_BASE_DIR, filename), 'rb') as desc:
|
||||
return desc.read()
|
||||
|
||||
|
||||
def get_json_file(filename):
|
||||
with open(os.path.join(TEST_BASE_DIR, "%s.json" % filename)) as fd:
|
||||
return json.load(fd)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def family_service_wsdl():
|
||||
return get_xml_file('FamilyService.wsdl')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def invoice_service_wsdl():
|
||||
return get_xml_file('InvoiceService.wsdl')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def activity_service_wsdl():
|
||||
return get_xml_file('ActivityService.wsdl')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def catalog_mocked_get(activity_service_wsdl, family_service_wsdl):
|
||||
return (
|
||||
tests.utils.FakedResponse(
|
||||
content=family_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
tests.utils.FakedResponse(
|
||||
content=activity_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def catalog_mocked_post():
|
||||
return (
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('readFamily.xml'), status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('readActivityListResponse.xml'),
|
||||
status_code=200,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def connector(db):
|
||||
return tests.utils.setup_access_rights(
|
||||
Maelis.objects.create(
|
||||
slug='test', login='foo', password='bar', base_url='http://www3.sigec.fr/entrouvertws/services/'
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_link_unlink(mocked_post, mocked_get, family_service_wsdl, connector, app):
|
||||
mocked_get.return_value = mock.Mock(content=family_service_wsdl)
|
||||
mocked_post.return_value = mock.Mock(
|
||||
content=get_xml_file('readFamilyByPasswordError.xml'),
|
||||
status_code=500,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
)
|
||||
assert Link.objects.count() == 0
|
||||
resp = app.post_json(
|
||||
'/maelis/test/link?NameID=local',
|
||||
params={'family_id': '3264', 'password': 'wrong', 'school_year': '2020'},
|
||||
)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'E204 : Le mot de passe est incorrect'
|
||||
assert not resp.json['data']
|
||||
assert Link.objects.count() == 0
|
||||
|
||||
resp = app.post_json('/maelis/test/unlink?NameID=local')
|
||||
assert resp.json['err']
|
||||
assert resp.json['err_desc'] == 'User not linked to family'
|
||||
|
||||
mocked_post.return_value = mock.Mock(
|
||||
content=get_xml_file('readFamilyByPasswordResult.xml'),
|
||||
status_code=200,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
)
|
||||
resp = app.post_json('/maelis/test/link?NameID=local', params={'family_id': '3264', 'password': '123456'})
|
||||
assert resp.json['err'] == 0
|
||||
assert resp.json['data']
|
||||
assert resp.json['data']['number'] == 3264
|
||||
assert Link.objects.count() == 1
|
||||
link = Link.objects.get()
|
||||
assert link.name_id == 'local'
|
||||
assert link.family_id == '3264'
|
||||
|
||||
resp = app.post_json('/maelis/test/unlink?NameID=local')
|
||||
assert resp.json['err'] == 0
|
||||
assert Link.objects.count() == 0
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_family_info(mocked_post, mocked_get, family_service_wsdl, connector, app):
|
||||
mocked_get.return_value = mock.Mock(content=family_service_wsdl)
|
||||
mocked_post.return_value = mock.Mock(
|
||||
content=get_xml_file('readFamily.xml'), status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
)
|
||||
assert Link.objects.count() == 0
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
resp = app.get('/maelis/test/family-info?NameID=local')
|
||||
assert resp.json['data']["number"] == 3264
|
||||
assert resp.json['data']['rl1InfoBean']
|
||||
assert resp.json['data']['childInfoList']
|
||||
|
||||
resp = app.get('/maelis/test/children-info?NameID=local')
|
||||
assert resp.json['data']
|
||||
for child in resp.json['data']:
|
||||
assert child['id']
|
||||
assert child['text']
|
||||
|
||||
resp = app.get('/maelis/test/child-info?NameID=local&childID=21293')
|
||||
assert resp.json['data']
|
||||
assert resp.json['data']['num'] == '21293'
|
||||
assert resp.json['data']['id'] == '21293'
|
||||
|
||||
resp = app.get('/maelis/test/adults-info?NameID=local')
|
||||
assert resp.json['data']
|
||||
for child in resp.json['data']:
|
||||
assert child['id']
|
||||
assert child['text']
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_activity_list(mocked_post, mocked_get, catalog_mocked_get, catalog_mocked_post, connector, app):
|
||||
mocked_get.side_effect = catalog_mocked_get
|
||||
mocked_post.side_effect = catalog_mocked_post
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
resp = app.get('/maelis/test/activity-list?NameID=local&personID=21293')
|
||||
assert resp.json['data']
|
||||
for activity in resp.json['data']:
|
||||
assert activity['id']
|
||||
assert activity['text']
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_update_coordinates(mocked_post, mocked_get, family_service_wsdl, connector, app):
|
||||
mocked_get.return_value = mock.Mock(content=family_service_wsdl)
|
||||
mocked_post.side_effect = (
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('updateCoordinatesResponse.xml'),
|
||||
status_code=200,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
),
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('updateCoordinatesError.xml'),
|
||||
status_code=200,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
),
|
||||
)
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
resp = app.post_json(
|
||||
'/maelis/test/update-coordinates?NameID=local&personID=21293', params={'mail': 'foo@example.com'}
|
||||
)
|
||||
assert resp.content is not None
|
||||
|
||||
resp = app.post_json(
|
||||
'/maelis/test/update-coordinates?NameID=local&personID=21293', params={'town': 'Paris', 'num': '169'}
|
||||
)
|
||||
assert resp.json['err']
|
||||
assert resp.json['err_desc'] == 'E16 : Le code postal est obligatoire'
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_list_invoices(mocked_post, mocked_get, invoice_service_wsdl, connector, app):
|
||||
mocked_get.return_value = mock.Mock(content=invoice_service_wsdl)
|
||||
mocked_post.return_value = mock.Mock(
|
||||
content=get_xml_file('readInvoicesResponse.xml'),
|
||||
status_code=200,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
)
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
resp = app.get('/maelis/test/regie/1/invoices?NameID=local')
|
||||
assert resp.json['data']
|
||||
for invoice in resp.json['data']:
|
||||
assert invoice['display_id']
|
||||
assert invoice['label']
|
||||
assert invoice['total_amount']
|
||||
assert not invoice['paid']
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_get_invoice_details(mocked_post, mocked_get, invoice_service_wsdl, connector, app):
|
||||
mocked_get.return_value = mock.Mock(content=invoice_service_wsdl)
|
||||
mocked_post.return_value = mock.Mock(
|
||||
content=get_xml_file('readInvoicesResponse.xml'),
|
||||
status_code=200,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
)
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
resp = app.get('/maelis/test/regie/1/invoice/3264-53186?NameID=local')
|
||||
assert resp.json['data']
|
||||
assert resp.json['data']['label'] == 'FACTURATION SEPTEMBRE 2014'
|
||||
assert resp.json['data']['display_id'] == '53186'
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'date, schoolyear',
|
||||
[
|
||||
('2020-07-30', 2019),
|
||||
('2020-07-31', 2020),
|
||||
],
|
||||
)
|
||||
def test_get_school_year(date, schoolyear):
|
||||
date = parse_date(date)
|
||||
assert schoolyear == get_school_year(date)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'date, monday, sunday',
|
||||
[
|
||||
('2020-12-27', '2020-12-21', '2020-12-27'),
|
||||
('2020-12-28', '2020-12-28', '2021-01-03'),
|
||||
('2020-12-31', '2020-12-28', '2021-01-03'),
|
||||
('2021-01-01', '2020-12-28', '2021-01-03'),
|
||||
('2021-01-03', '2020-12-28', '2021-01-03'),
|
||||
],
|
||||
)
|
||||
def test_week_boundaries(date, monday, sunday):
|
||||
start, end = week_boundaries_datetimes(date)
|
||||
assert start.strftime('%Y-%m-%d') == monday
|
||||
assert end.strftime('%Y-%m-%d') == sunday
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'start, end, items',
|
||||
[
|
||||
('2020-10-22', '2020-12-06', ['2020-10-01', '2020-11-01', '2020-12-01']),
|
||||
('2020-12-31', '2021-01-03', ['2020-12-01', '2021-01-01']),
|
||||
('2020-12-28', '2020-12-28', ['2020-12-01']),
|
||||
('2021-01-03', '2020-12-01', []),
|
||||
],
|
||||
)
|
||||
def test_month_range(start, end, items):
|
||||
start = parse_date(start)
|
||||
end = parse_date(end)
|
||||
assert [x.strftime('%Y-%m-%d') for x in month_range(start, end)] == items
|
||||
|
||||
|
||||
def test_decompose_event():
|
||||
resp = get_json_file('child_planning_before_decomposition')
|
||||
data = resp['data']
|
||||
assert len(data) == 43
|
||||
assert data[22]['text'] == 'JOURNEE'
|
||||
assert data[23]['text'] == 'MATIN'
|
||||
assert data[24]['text'] == 'MATIN ET REPAS'
|
||||
assert data[25]['text'] == 'APRES MIDI'
|
||||
assert not [x for x in data if x['text'] == 'REPAS']
|
||||
|
||||
# unit is break down into its components
|
||||
assert [x['text'] for x in decompose_event(data[22])] == ['Matinée', 'Repas', 'Après-midi']
|
||||
assert [x['text'] for x in decompose_event(data[23])] == ['Matinée']
|
||||
assert [x['text'] for x in decompose_event(data[24])] == ['Matinée', 'Repas']
|
||||
assert [x['text'] for x in decompose_event(data[25])] == ['Après-midi']
|
||||
|
||||
# child_planning function use a dict to remove dupplicated components
|
||||
data = {x['id']: x for e in data for x in decompose_event(e)}.values()
|
||||
assert len(data) == 42
|
||||
assert len([x for x in data if x['text'] == 'Repas']) == 1
|
||||
assert len([x for x in data if 'EO0001' in x['slot_id']]) == 3
|
||||
|
||||
|
||||
@override_settings(TIME_ZONE='Europe/Paris')
|
||||
@pytest.mark.parametrize(
|
||||
'legacy, nb_events, nb_booked, response',
|
||||
[
|
||||
('please', 43, 9, 'child_planning_before_decomposition'),
|
||||
('', 42, 9, 'child_planning_after_decomposition'),
|
||||
],
|
||||
)
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_get_child_planning(
|
||||
mocked_post,
|
||||
mocked_get,
|
||||
legacy,
|
||||
nb_events,
|
||||
nb_booked,
|
||||
response,
|
||||
family_service_wsdl,
|
||||
activity_service_wsdl,
|
||||
app,
|
||||
connector,
|
||||
):
|
||||
mocked_get.side_effect = (
|
||||
tests.utils.FakedResponse(
|
||||
content=family_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
tests.utils.FakedResponse(
|
||||
content=activity_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
tests.utils.FakedResponse(
|
||||
content=activity_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
)
|
||||
mocked_post.side_effect = (
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('readFamily.xml'), status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('child_planning_readActivityListResponse.xml'),
|
||||
status_code=200,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
),
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('child_planning_readChildMonthPlanningResponse.xml'),
|
||||
status_code=200,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
),
|
||||
)
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
url = '/maelis/test/child-planning?NameID=local&childID=21293&start_date=2020-12-19'
|
||||
url += '&legacy=' + legacy
|
||||
resp = app.get(url)
|
||||
data = resp.json['data']
|
||||
previous_event = {}
|
||||
for event in data:
|
||||
assert event['category']
|
||||
assert event['text']
|
||||
if previous_event:
|
||||
assert previous_event['id'] <= event['id']
|
||||
previous_event = event
|
||||
assert len(data) == nb_events
|
||||
assert len([s for s in data if s['user_booking_status'] == 'booked']) == nb_booked
|
||||
assert resp.json == get_json_file(response)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'parameters, nb_subscribed, nb_not_subscribed',
|
||||
[
|
||||
('&subscribingStatus=', 2, 18),
|
||||
('&subscribingStatus=subscribed', 2, 0),
|
||||
('&subscribingStatus=not-subscribed', 0, 17),
|
||||
('&subscribePublication=ELN', 2, 48),
|
||||
],
|
||||
)
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_child_activities(
|
||||
mocked_post,
|
||||
mocked_get,
|
||||
parameters,
|
||||
nb_subscribed,
|
||||
nb_not_subscribed,
|
||||
catalog_mocked_get,
|
||||
catalog_mocked_post,
|
||||
connector,
|
||||
app,
|
||||
):
|
||||
mocked_get.side_effect = catalog_mocked_get
|
||||
mocked_post.side_effect = catalog_mocked_post
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
url = '/maelis/test/child-activities?NameID=local&childID=21293&queryDate=2020-12-15'
|
||||
url += parameters
|
||||
resp = app.get(url)
|
||||
if parameters == '&subscribingStatus=':
|
||||
assert resp.json == get_json_file('child_activities')
|
||||
status = [x['user_subscribing_status'] for x in resp.json['data']]
|
||||
assert len([x for x in status if x == 'subscribed']) == nb_subscribed
|
||||
assert len([x for x in status if x == 'not-subscribed']) == nb_not_subscribed
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'parameters, err_desc',
|
||||
[
|
||||
('&childID=99999', 'Child not found'),
|
||||
('&subscribingStatus=not-a-status', 'wrong value for subscribingStatus'),
|
||||
("&queryDate=2020-02-31", 'not a valid date'),
|
||||
("&queryDate=not-a-date", 'YYYY-MM-DD expected'),
|
||||
],
|
||||
)
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_child_activities_errors(
|
||||
mocked_post, mocked_get, parameters, err_desc, catalog_mocked_get, catalog_mocked_post, connector, app
|
||||
):
|
||||
mocked_get.side_effect = catalog_mocked_get
|
||||
mocked_post.side_effect = catalog_mocked_post
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
url = '/maelis/test/child-activities?NameID=local&childID=21293'
|
||||
url += parameters
|
||||
resp = app.get(url)
|
||||
assert resp.json['err']
|
||||
assert err_desc in resp.json['err_desc']
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_subscribe(mocked_post, mocked_get, family_service_wsdl, connector, app):
|
||||
mocked_get.return_value = mock.Mock(content=family_service_wsdl)
|
||||
mocked_post.side_effect = (
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('readFamily.xml'), status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('subscribeActivityResult.xml'),
|
||||
status_code=200,
|
||||
headers={'Content-Type': 'text/xml'},
|
||||
),
|
||||
)
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
resp = app.get(
|
||||
'/maelis/test/subscribe/?NameID=local&childID=21293'
|
||||
+ '&activityID=A10003123507&unitID=A10003123507&placeID=A10000000211'
|
||||
+ '&weeklyPlanning=XX1XX11&start_date=2020-08-01&end_date=2021-07-31'
|
||||
)
|
||||
assert not resp.json['err']
|
||||
assert resp.json['data']['state'] == {"idState": "1", "isWaitState": False, "libelle": "Confirmé"}
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_unsubscribe(mocked_post, mocked_get, family_service_wsdl, connector, app):
|
||||
mocked_get.return_value = mock.Mock(content=family_service_wsdl)
|
||||
mocked_post.side_effect = (
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('readFamily.xml'), status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
tests.utils.FakedResponse(
|
||||
content=get_xml_file('deletesubscribe.xml'), status_code=200, headers={'Content-Type': 'text/xml'}
|
||||
),
|
||||
)
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
resp = app.get(
|
||||
'/maelis/test/unsubscribe/?NameID=local&childID=21293'
|
||||
+ '&activityID=A10003121692&start_date=2020-08-01'
|
||||
)
|
||||
assert not resp.json['err']
|
||||
assert resp.json['data'] is None
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'parameters, nb_bus_lines',
|
||||
[
|
||||
('&direction=', 2),
|
||||
('&direction=Aller', 1),
|
||||
('&direction=retour', 1),
|
||||
],
|
||||
)
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_bus_lines(
|
||||
mocked_post, mocked_get, parameters, nb_bus_lines, catalog_mocked_get, catalog_mocked_post, connector, app
|
||||
):
|
||||
mocked_get.side_effect = catalog_mocked_get
|
||||
mocked_post.side_effect = catalog_mocked_post
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
url = '/maelis/test/bus-lines?NameID=local&childID=21293'
|
||||
url += '&activityID=A10003131850&unitID=A10003131903&queryDate=2020-12-15'
|
||||
url += parameters
|
||||
resp = app.get(url)
|
||||
if parameters == '&direction=':
|
||||
assert resp.json == get_json_file('bus_lines')
|
||||
assert len(resp.json['data']) == nb_bus_lines
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'parameters, err_desc',
|
||||
[
|
||||
('&childID=99999', 'Child not found'),
|
||||
('&queryDate=2020-02-31', 'not a valid date'),
|
||||
('&queryDate=not-a-date', 'YYYY-MM-DD expected'),
|
||||
('&direction=heaven', 'wrong value for direction'),
|
||||
],
|
||||
)
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_bus_lines_errors(
|
||||
mocked_post, mocked_get, parameters, err_desc, catalog_mocked_get, catalog_mocked_post, connector, app
|
||||
):
|
||||
mocked_get.side_effect = catalog_mocked_get
|
||||
mocked_post.side_effect = catalog_mocked_post
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
url = '/maelis/test/bus-lines?NameID=local&childID=21293&activityID=1&unitID=2'
|
||||
url += parameters
|
||||
resp = app.get(url)
|
||||
assert resp.json['err']
|
||||
assert err_desc in resp.json['err_desc']
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_bus_stops(mocked_post, mocked_get, catalog_mocked_get, catalog_mocked_post, connector, app):
|
||||
mocked_get.side_effect = catalog_mocked_get
|
||||
mocked_post.side_effect = catalog_mocked_post
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
url = '/maelis/test/bus-stops?NameID=local&childID=21293'
|
||||
url += '&busActivityID=A10003151396&busUnitID=A10003151402&queryDate=2020-12-15'
|
||||
resp = app.get(url)
|
||||
assert resp.json == get_json_file('bus_stops')
|
||||
assert len(resp.json['data']) == 6
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'parameters, err_desc',
|
||||
[
|
||||
('&childID=99999', 'Child not found'),
|
||||
('&queryDate=2020-02-31', 'not a valid date'),
|
||||
('&queryDate=not-a-date', 'YYYY-MM-DD expected'),
|
||||
('&busActivityID=1', 'Bus activity not found: 1'),
|
||||
('&busUnitID=2', 'Bus unit not found: 2'),
|
||||
],
|
||||
)
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@mock.patch('passerelle.utils.Request.post')
|
||||
def test_bus_stops_errors(
|
||||
mocked_post, mocked_get, parameters, err_desc, catalog_mocked_get, catalog_mocked_post, connector, app
|
||||
):
|
||||
mocked_get.side_effect = catalog_mocked_get
|
||||
mocked_post.side_effect = catalog_mocked_post
|
||||
Link.objects.create(resource=connector, family_id='3264', name_id='local')
|
||||
url = '/maelis/test/bus-stops?NameID=local&childID=21293'
|
||||
url += '&busActivityID=A10003151396&busUnitID=A10003151402'
|
||||
url += parameters
|
||||
resp = app.get(url)
|
||||
assert resp.json['err']
|
||||
assert err_desc in resp.json['err_desc']
|
|
@ -307,7 +307,7 @@ def test_say_hello_method_validation_error(connector, soap, app):
|
|||
resp = app.get('/soap/test/method/sayHello/')
|
||||
assert resp.json == {
|
||||
"err": 1,
|
||||
"err_class": "passerelle.utils.soap.SOAPError",
|
||||
"err_class": "passerelle.utils.soap.SOAPValidationError",
|
||||
"err_desc": soap.VALIDATION_ERROR,
|
||||
"data": None,
|
||||
}
|
||||
|
|
|
@ -7627,6 +7627,41 @@ def test_read_nursery_list(con, app):
|
|||
|
||||
resp = app.get(url, params={'code_psu': 'REGULAR'})
|
||||
assert len(resp.json['data']) == 9
|
||||
assert resp.json['data'][0] == {
|
||||
'id': 'M10000000001',
|
||||
'activity_id': 'M10000000001',
|
||||
'unit_id': 'M10053212402',
|
||||
'place_id': 'M10053212401',
|
||||
'unit_ids': {'OCCASIONAL': 'M10053212403', 'REGULAR': 'M10053212402'},
|
||||
'obs1': 'Quartier 1.2',
|
||||
'obs2': 'Secteur 1',
|
||||
'text': 'CC AMIDONNIERS',
|
||||
'place': {
|
||||
'address': {
|
||||
'num': 29,
|
||||
'town': 'TOULOUSE',
|
||||
'street1': 'ALL DE BRIENNE',
|
||||
'street2': None,
|
||||
'zipcode': '31000',
|
||||
'idStreet': None,
|
||||
},
|
||||
'idPlace': 'M10053212401',
|
||||
'libelle': 'CC AMIDONNIERS',
|
||||
'latitude': 43.606099,
|
||||
'libelle2': None,
|
||||
'longitude': 1.430282,
|
||||
},
|
||||
'libelle': 'CC AMIDONNIERS',
|
||||
'libelle2': None,
|
||||
'manager1': {'phone': '0561615590', 'poste': 'CCAS', 'lastname': 'THOMAS', 'firstname': 'GUYLAINE'},
|
||||
'manager2': None,
|
||||
'unitList': [
|
||||
{'idUnit': 'M10053212402', 'libelle': 'CC AMIDONNIERS - Réguliers', 'typeAcc': 'REGULAR'},
|
||||
{'idUnit': 'M10053212403', 'libelle': 'CC AMIDONNIERS - Occasionnels', 'typeAcc': 'OCCASIONAL'},
|
||||
],
|
||||
'idActivity': 'M10000000001',
|
||||
'activityType': {'code': 'CRECHCO', 'libelle': 'Crèche collective'},
|
||||
}
|
||||
|
||||
|
||||
def test_get_nursery_geojson(con, app):
|
||||
|
@ -7704,7 +7739,20 @@ def test_get_nursery_geojson(con, app):
|
|||
|
||||
|
||||
def test_create_nursery_demand(ape_service, con, app):
|
||||
ape_service.add_soap_response('addApeBook', get_xml_file('R_create_nursery_demand.xml'))
|
||||
def request_check(request):
|
||||
assert [(x['code'], x['isActive']) for x in request.child['indiPersList']] == [
|
||||
('APE_ALLO', True),
|
||||
('APE-MINE', False),
|
||||
]
|
||||
assert [(x['code'], x['isActive']) for x in request.apeBook['indiResapeList']] == [
|
||||
('APE_FIRSTC', True),
|
||||
('APE_FRAT', False),
|
||||
]
|
||||
assert [(x['code'], x['isActive']) for x in request['indiFamList']] == [('APE_COMPO1', False)]
|
||||
|
||||
ape_service.add_soap_response(
|
||||
'addApeBook', get_xml_file('R_create_nursery_demand.xml'), request_check=request_check
|
||||
)
|
||||
data = {
|
||||
'family_id': '322425',
|
||||
'accept_other_nurseries': False,
|
||||
|
@ -7717,14 +7765,14 @@ def test_create_nursery_demand(ape_service, con, app):
|
|||
'number_of_days': '1',
|
||||
'child_indicators/0/code': 'APE_ALLO',
|
||||
'child_indicators/0/isActive': True,
|
||||
'child_indicators/1/code': 'code2',
|
||||
'child_indicators/1/code': 'APE-MINE',
|
||||
'child_indicators/1/isActive': False,
|
||||
'demand_indicators/0/code': 'APE_ALLO',
|
||||
'demand_indicators/0/isActive': True,
|
||||
'demand_indicators/1/code': 'APE_ALLO',
|
||||
'demand_indicators/1/isActive': False,
|
||||
'family_indicators/0/code': 'APE_ALLO',
|
||||
'family_indicators/0/isActive': False,
|
||||
'demand_indicators/0/code': 'APE_FIRSTC',
|
||||
'demand_indicators/0/isActive': 'Oui',
|
||||
'demand_indicators/1/code': 'APE_FRAT',
|
||||
'demand_indicators/1/isActive': 0,
|
||||
'family_indicators/0/code': 'APE_COMPO1',
|
||||
'family_indicators/0/isActive': 'False',
|
||||
'start_hour_Mon': '09:00',
|
||||
'end_hour_Mon': '18:00',
|
||||
'nursery1/idActivity': 'M10000000004',
|
||||
|
@ -7739,3 +7787,20 @@ def test_create_nursery_demand(ape_service, con, app):
|
|||
data['start_hour_Tue'] = ''
|
||||
resp = app.post_json(url, params=data)
|
||||
assert resp.json['err'] == 0
|
||||
|
||||
|
||||
def test_create_nursery_demand_wrong_referential_key_error(con, app):
|
||||
url = get_endpoint('create-nursery-demand')
|
||||
params = {
|
||||
'family_id': '322425',
|
||||
'start_date': '2023-04-01',
|
||||
'family_indicators/0/code': 'APE_ALLO',
|
||||
'family_indicators/0/isActive': 'False',
|
||||
}
|
||||
|
||||
resp = app.post_json(url, params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert (
|
||||
resp.json['err_desc']
|
||||
== "family_indicators/0/code key value 'APE_ALLO' do not belong to APE 'FAM' indicators"
|
||||
)
|
||||
|
|
|
@ -18,6 +18,7 @@ from unittest import mock
|
|||
|
||||
import pytest
|
||||
import requests
|
||||
import responses
|
||||
from django.utils.encoding import force_bytes
|
||||
from zeep import Settings
|
||||
from zeep.exceptions import Fault, TransportError, XMLParseError
|
||||
|
@ -25,7 +26,7 @@ from zeep.plugins import Plugin
|
|||
|
||||
from passerelle.utils import Request
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
from passerelle.utils.soap import SOAPClient
|
||||
from passerelle.utils.soap import SOAPClient, SOAPFault
|
||||
|
||||
WSDL = 'tests/data/soap.wsdl'
|
||||
|
||||
|
@ -155,3 +156,30 @@ def test_api_error(mocked_send, caplog):
|
|||
operation_proxy_call.side_effect = XMLParseError('Unexpected element')
|
||||
with pytest.raises(APIError, match=r'Unexpected element'):
|
||||
client.service.GetLastTradePrice(tickerSymbol='banana')
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_fault_detail_on_500():
|
||||
from passerelle.utils.jsonresponse import to_json
|
||||
|
||||
responses.add(
|
||||
responses.POST,
|
||||
'http://example.com/stockquote',
|
||||
body=b'''<?xml version='1.0' encoding='utf-8'?>
|
||||
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<soap-env:Body>
|
||||
<ns0:TradePrice xmlns:ns0="http://example.com/stockquote.xsd">
|
||||
<skipMe>1.2</skipMe>
|
||||
<price>4.20</price>
|
||||
</ns0:TradePrice>
|
||||
</soap-env:Body>
|
||||
</soap-env:Envelope>''',
|
||||
status=500,
|
||||
)
|
||||
soap_resource = SOAPResource()
|
||||
client = SOAPClient(soap_resource, api_error=True)
|
||||
with pytest.raises(SOAPFault) as exc:
|
||||
client.service.GetLastTradePrice(tickerSymbol='banana')
|
||||
response = to_json().err_to_response(exc.value)
|
||||
assert response['err'] == 1
|
||||
assert 'xmlns:soap' in response['data']['soap_fault']['detail']
|
||||
|
|
Loading…
Reference in New Issue