misc: remove maelis connector (#75649)

This commit is contained in:
Benjamin Dauvergne 2023-03-21 18:35:32 +01:00 committed by Gitea
parent 2de6325c6d
commit c7dcc2a510
27 changed files with 0 additions and 16558 deletions

View File

@ -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')},
),
]

View File

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

View File

@ -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

View File

@ -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',

View File

@ -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 */
}

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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
}

View File

@ -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

View File

@ -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
}

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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&#xE9;</libelle>
</state>
</subscribeActivityResultBean>
</ns1:subscribeActivityResponse>
</soap:Body>
</soap:Envelope>

View File

@ -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>

View File

@ -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>

View File

@ -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']