nanterre-2023: new theme (#81756)
gitea/publik-base-theme/pipeline/head This commit looks good Details

This commit is contained in:
Thomas Jund 2023-10-02 16:38:23 +02:00 committed by Thomas Jund
parent 850048c08a
commit d5a3147a5b
35 changed files with 3112 additions and 0 deletions

View File

@ -0,0 +1,685 @@
//
// utils
//
@mixin bg-to-the-edge($position) {
--ref-width: #{$mobile-width};
@media($min-desktop-viewport) {
--ref-width: #{$width};
}
@if ($position == 'left' or $position == 'both') {
margin-left: Min(#{-$theme-edge-gutter)}, calc(-50vw + var(--ref-width) / 2));
padding-left: Max(#{$theme-edge-gutter)}, calc(50vw - var(--ref-width) / 2));
}
@if ($position == 'right' or $position == 'both') {
margin-right: Min(#{-$theme-edge-gutter)}, calc(-50vw + var(--ref-width) / 2));
padding-right: Max(#{$theme-edge-gutter)}, calc(50vw - var(--ref-width) / 2));
}
}
//
// dots
//
.regulars-dots {
--dot-color: #{$font-color};
background-color: transparent;
background-image: radial-gradient(var(--dot-color) 2px,transparent 2px);
background-size: 8px 8px;
background-position: top left;
}
.alternates-dots {
--dot-color: #{$font-color};
background-color: transparent;
background-image:
radial-gradient(var(--dot-color) 2px,transparent 2px),
radial-gradient(var(--dot-color) 2px,transparent 2px);
background-size: 10px 10px;
background-position: 2px 2px, 7px 7px;
}
//
// Typo
//
h1, h2, h3, h4,
.h1, .h2, .h3, .h4 {
font-family: $title-ff;
font-weight: 800;
}
h1, .h1 {
font-size: $fz-1;
}
h2, .h2 {
font-size: $fz-2;
}
h3, .h3 {
font-size: $fz-3;
}
h4, .h4 {
font-size: $fz-4;
}
.button-label {
font-size: $fz-xsmall;
text-transform: uppercase;
font-weight: 400;
line-height: #{$font-line-height}rem !important;
}
label {
font-weight: bold;
}
//
// Buttons
//
%button {
box-shadow: none;
@extend .button-label;
font-weight: bold;
// add long-arrow-right icon;
&:hover {
box-shadow: none;
border-color: transparent;
}
}
.button-with-arrow {
@include button-with-icon(left, '\f178') {
--icon-color: #{$red};
}
}
.button-with-left-arrow {
@include button-with-icon(left, '\f177') {
--icon-color: #{$red};
}
}
%submit-button {
--color: white;
--background: #{$font-color};
@extend .button-with-arrow;
}
%cancel-button {
--background: #{$gray-light};
border-color: var(--background);
}
%delete-button {
--background: #{$red};
--color: white;
}
//
// Icons
//
.black-rounded-icon {
--size: 80px;
--disc-color: #{$font-color};
--circle-size: 10px;
--icon-color: white;
--circle-color: white;
background-color: var(--disc-color) !important;
box-shadow:
0 0 0 var(--circle-size) var(--circle-color),
0 0 0 calc(var(--circle-size) + 1px) var(--disc-color);
color: --icon-color;
height: var(--size);
width: var(--size);
border-radius: 50%;
border: var(--circle-size) solid var(--disc-color);
margin: calc(var(--circle-size) + 1px);
> img {
width: 100%;
height: 100%;
object-fit: contain;
}
}
//
// Layout
//
// add edge-gutter
.page-width,
.header-width,
.nav-width,
.footer-width,
div#header {
@if $theme-edge-gutter {
box-sizing: content-box;
padding-left: var(--edge-gutter, #{$theme-edge-gutter});
padding-right: var(--edge-gutter, #{$theme-edge-gutter});
width: auto !important;
@media ($max-mobile-viewport) {
--edge-gutter: 1em;
}
}
}
@media ($max-mobile-viewport) {
.central-content #sidebar {
margin: 0;
}
#columns-wrapper {
padding: 0;
}
}
//
// Header
//
$menu-item-desktop-size: 130px;
.header-link {
display: flex;
align-items: center;
justify-content: center;
text-align: center;
line-height: inherit;
background-color: $nav-item-background;
color: $nav-color;
height: $menu-item-desktop-size;
min-width: $menu-item-desktop-size;
flex: 1 1 $menu-item-desktop-size;
padding: 1em;
border-left: 1px solid #3d3d3D;
&:hover {
background-color: $nav-item-selected-background;
}
}
.site-header {
box-shadow: 0 .3rem .4rem hsla(0, 0%, 13.7%,.2);
@media($min-desktop-viewport) {
position: sticky;
top: 0;
z-index: 1;
}
}
#top {
min-height: 100px;
display: flex;
align-items: center;
@media ($min-desktop-viewport) {
@include bg-to-the-edge(right);
padding-right: 0;
justify-items: right;
}
}
// Logo
#logo {
flex-grow: 1;
padding-left: 0;
position: relative;
&.has-logo a {
display: flex;
background-position: left center;
&::before {
width: 100%;
@media ($max-mobile-viewport) {
height: 40px;
}
}
}
// dots
&::before {
content: "";
width: 56px;
height: 30px;
position: absolute;
right: calc(100% + 20px);
top: 0;
bottom: 0;
left: auto;
margin: auto;
@extend .regulars-dots;
}
}
// nav
.site-nav {
flex: 0;
}
div.gru-nav {
> ul {
display: flex;
margin: 0;
> li {
flex-basis: $menu-item-desktop-size;
vertical-align: top;
a {
@extend .header-link;
}
}
@media ($max-mobile-viewport) {
padding: 1em;
li:not(:last-child) {
border-bottom: 1px solid $gray-light;
}
li > a {
display: block;
min-height: 0;
height: auto;
font-size: $fz-small;
background-color: white;
text-align: left;
padding: 1em 2em;
border: none;
}
}
}
}
div.gru-nav .gru-nav-button {
@extend .black-rounded-icon;
--size: 40px;
--circle-size: 5px;
&:hover {
--disc-color: #{$red};
}
&.toggled {
--disc-color: #{$gray-light};
--icon-color: #{$font-color};
--circle-color: var(--disc-color);
.icon-bar {
background-color: var(--icon-color);
}
}
top: auto;
left: 75%;
right: 0;
bottom: 35px;
margin: auto;
&:after {
content: "Menu";
display: block;
position: absolute;
top: calc(100% + 5px);
left: 50%;
transform: translateX(-50%);
margin: auto;
@extend .button-label;
font-weight: 800;
}
+ ul {
@media ($max-mobile-viewport) {
width: 100%;
max-width: 30em;
}
}
}
.menu--item.selected .menu--label {
position: relative;
display: block;
&::after {
content: "";
display: block;
position: absolute;
width: 100%;
height: 4px;
bottom: -10px;
left: 0;
background-color: white;
}
}
// toplinks
#toplinks {
position: static;
a {
@extend .header-link;
@extend .button-label;
&.account-link {
width: min-content;
}
}
@media($max-mobile-viewport) {
display: none;
}
}
.toplinks--list {
display: flex;
}
//
// Main
//
div#main-content-wrapper {
z-index: auto;
}
.theme-page-header {
background-color: $red;
border-top: 1px solid transparent;
min-height: 15rem;
display: flex;
@include bg-to-the-edge('both');
@media ($min-desktop-viewport) {
background-color: $gray-light;
border-left-width: Max(#{$theme-edge-gutter)}, calc(50vw - var(--ref-width) / 2));
border-left-color: $red;
border-left-style: solid;
padding-left: 0;
}
}
.theme-page-title {
background-color: $red;
color: white;
margin: 0;
display: flex;
align-items: center;
font-size: 28em / $base-font;
position: relative;
@media ($min-desktop-viewport) {
font-size: $fz-1;
width: 40%;
min-width: 8em;
position: relative;
&::after {
content: "";
width: 125px;
height: 100%;
background-color: $red;
border-top-right-radius: 125px 100%;
position: absolute;
left: 100%;
}
}
// dots
&::before {
content: "";
width: 125px;
height: 75px;
position: absolute;
right: calc(100% + 20px);
top: 0;
bottom: 0;
left: auto;
margin: auto;
@extend .alternates-dots;
--dot-color: white;
}
}
.central-content {
margin-top: $central-content-top;
@media ($min-desktop-viewport) {
align-items: flex-start;
}
}
//
// Cells
//
.gru-content div.cell {
margin-bottom: 2rem;
}
.menu-with-icons {
.gru-content &.cell {
overflow: hidden;
.links-list ul {
@extend .fx-grid;
@media ($min-grid-desktop-viewport) {
--nb-cols: 2;
--grid-gutter: 2px;
}
& > li:not(:last-child) {
border-bottom-color: $cell-background;
}
.menu-with-icons--link {
background-color: white;
border-radius: 0;
align-items: center;
@media ($min-desktop-viewport) {
justify-content: flex-end;
}
&:hover {
.menu-with-icons--icon {
--disc-color: #{$red};
}
}
}
.menu-with-icons--icon {
@extend .black-rounded-icon;
padding: var(--circle-size);
}
.menu-with-icons--label {
font-weight: bold;
margin-left: 1em;
@media ($min-desktop-viewport) {
flex: 0 1 30%;
margin-right: 20%;
}
}
}
}
}
.tracking-code-input-cell {
form button {
@extend %submit-button;
}
@media ($min-desktop-viewport) {
&.two-columns form {
column-count: 2;
p {
break-inside: avoid;
break-before: avoid;
}
button {
display: block;
}
}
}
}
// Black sidebar
.central-content #sidebar {
background-color: $font-color;
color: white;
@media ($min-desktop-viewport) {
@include bg-to-the-edge(left);
box-sizing: content-box;
border-radius: 0 $cell-border-radius $cell-border-radius 0;
}
@media ($max-mobile-viewport) {
@include bg-to-the-edge(both);
box-sizing: content-box;
}
a:not([class*="pk-button"]) {
color: currentColor;
text-decoration: underline;
}
.cell {
background-color: transparent;
border: none;
h2:first-child, .cell--title {
color: currentColor;
}
}
}
//
// WCS & FORMS
//
// black sidebar
.form-content--sidebox {
background-color: $font-color;
color: white;
padding-top: $central-content-top;
@media ($min-desktop-viewport) {
@include bg-to-the-edge(left);
box-sizing: content-box;
border-radius: 0 $cell-border-radius $cell-border-radius 0;
}
@media ($max-mobile-viewport) {
@include bg-to-the-edge(both);
box-sizing: content-box;
margin-top: -$central-content-top;
}
}
// Steps
.wcs-steps {
font-size: 30em / $base-font;
font-weight: bold;
font-family: $title-ff;
@media ($mq-max--wcs-steps-small-layout) {
font-size: $fz-4;
}
}
.wcs-step {
&--marker {
border: 5px solid $font-color;
outline: 1px solid white;
}
&.current &--marker {
outline-color: $gray;
}
@media ($mq-max--wcs-steps-small-layout) {
justify-content: center;
}
}
// WCS tracking code
.tracking-code-part {
font-weight: bold;
font-family: $title-ff;
font-size: $fz-4;
color: white;
background-color: $red;
position: 1em;
border-radius: 10em;
display: inline-block;
padding: 1em;
}
div#tracking-code {
text-align: center;
margin-bottom: $central-content-top;
h3, a {
font-size: 1em;
color: inherit;
display: inline;
padding: 0;
}
h3::after {
content: " :";
}
a {
text-decoration: underline;
}
.form-discard-draft {
all: inherit;
font-size: $fz-small;
text-decoration: underline;
width: 100%;
}
}
// typo
div#rub_service {
h3 {
border-bottom: 4px solid $red;
}
}
// widgets on error
.widget-with-error input {
border-color: $error-color;
border-width: 1px;
}
.previous-button button {
@extend .button-with-left-arrow;
}
//
// Notif
//
.errornotice, .warningnotice, .successnotice, .infonotice {
border-radius: $widget-border-radius;
a:not(.pk-button) {
font-weight: bold;
}
}
.errornotice {
color: white;
}
//
// Footer
//
#footer > * {
font-size: $fz-small;
}
#footer-wrapper {
position: relative;
overflow: hidden;
min-height: 500px;
border-top: 1px solid $gray;
background-color: transparent;
@media ($max-mobile-viewport) {
min-height: 200px;
}
&::before{
content: '';
display: block;
width: 954px;
height: 888px;
position: absolute;
z-index: -1;
left: calc(100% - 225px);
top: calc(100% - 500px);
background-size: contain;
background-repeat: no-repeat;
background-color: $red;
clip-path:ellipse(50% 50% at 50% 50%);
@media ($max-mobile-viewport) {
width: 430px;
height: 380px;
left: calc(100% - 130px);
top: calc(100% - 200px);
}
@media (max-width: $very-small-limit) {
content: none;
}
}
}
//
// PWA
//
.pwa-navigation {
padding-right: 25%;
div > ul li {
--disc-color: #{$font-color};
background-image:
radial-gradient(
circle at 50% 35px,
var(--disc-color) 18px,
white 19px,
white 23px,
var(--disc-color) 24px,
white 25px);
// background-size: 50px;
background-repeat: no-repeat;
background-position: 50%;
&:hover, &.selected{
--disc-color: #{$red};
}
}
div > ul li a {
background-size: 22px 22px;
background-position: 50% 25px;
padding-top: 60px;
font-family: $title-ff;
font-weight: 800;
span {
font-size: $fz-xsmall;
}
}
}

View File

@ -0,0 +1,117 @@
// Colors
$red: #E61E50;
$green: #C7F7D2;
$salmon: #FFDCBD;
$gray-dark: #232323;
$gray: #565656;
$gray-light: #F2F2F2;
// Typo
$base-font: 18;
$fz-1: 54em / $base-font;
$fz-2: 34em / $base-font;
$fz-3: 30em / $base-font;
$fz-4: 22em / $base-font;
$fz-small: 16em / $base-font;
$fz-xsmall: 12em / $base-font;
$title-ff: Inter, sans-serif;
// Layout
$theme-edge-gutter: 2em;
$central-content-top: 2rem;
// Core vars
$width: 1400em / $base-font;
$sidebar-width: 22em;
$columns-gutter: 2.8em;
$sidebar-columns-gutter: $columns-gutter;
$mobile-limit: 64em;
$very-small-limit: 35em;
$font-size: 100% / ( 16 / $base-font );
$font-size-small: $fz-small;
$font-size-xsmall: $fz-xsmall;
$font-family: Montserrat, sans-serif;
$font-color: $gray-dark;
$header-background-color: white;
$header-logo-size: 260px 72px;
$primary-color: $red;
$toplinks-style: none;
$responsive-menu: left-to-right;
$nav-border-color: none;
$nav-after-image: false;
$nav-item-background: $gray-dark;
$nav-color: white;
$nav-item-selected-background: $red;
$nav-mobile-menu-background: white;
$nav-mobile-menu-item-hover-background: $nav-mobile-menu-background;
$nav-mobile-menu-item-color: $font-color;
$nav-mobile-menu-item-hover-color: $red;
$responsive-menu-mask: true;
$cell-background: $gray-light;
$cell-border: 2px solid $gray-light;
$cell-border-radius: 35px;
$cell-title-cover-border: false;
$cell-entry-color: $font-color;
$cell-entry-hover-color: $red;
$cell-entry-border: 2px solid $gray;
$title-background: transparent;
$title-color: $font-color;
$title-font-family: $title-ff;
$title-font-size: $fz-2;
$title-weight: 800;
$title-padding: 2rem 1rem 1rem 1rem;
$button-background: white;
$button-color: $font-color;
$button-border: 1px solid $font-color;
$button-border-radius: 100em;
$button-hover-background: $red;
$button-hover-color: white;
$buttons-order: cancel, previous (grow), submit;
$form-accent-color: $red;
$form-title-style: none;
$form-sidebar-width: $sidebar-width;
$form-sidebar-gutter: $sidebar-columns-gutter;
$wcs-steps-small-layout-limit: $mobile-limit;
$wcs-steps-spacing: 1rem;
$wcs-step-color: white;
$wcs-step-border-bottom: none;
$wcs-step-marker-color: $font-color;
$wcs-step-current-marker-color: white;
$wcs-step-current-label-color: white;
$wcs-step-marker-background: white;
$wcs-step-current-marker-background: $gray;
$wcs-step-marker-type: disc;
$widget-unique-checkbox-position: left;
$widget-border: 1px solid currentColor;
$widget-border-radius: 15px;
$widget-focus-border: 1px solid black;
$widget-focus-color: black;
$widget-padding: 1rem 1.5rem;
$notification_error_color: #E61E50;
$notification_warning_color: #FFDCBD;
$notification_success_color: #C7F7D2;
$notification_info_color: #F2F2F2;
$footer-background: white;
$footer-color: $font-color;
$nav-mobile-bottom-bar-height: 90px;
$nav-mobile-bottom-bar-background: white;
$nav-mobile-bottom-bar-color: $font-color;
$nav-mobile-bottom-bar-item-hover-background: transparent;
$nav-mobile-bottom-bar-item-selected-background: transparent;
$nav-mobile-bottom-bar-item-hover-color: $red;
$nav-mobile-bottom-bar-item-selected-color: $red;

View File

@ -0,0 +1,24 @@
{
"label": "Nanterre (2023)",
"variables": {
"theme_color": "#E61E50",
"email_header_asset": "emails:logo"
},
"settings": {
"combo": {
"COMBO_ASSET_SLOTS.update": {
"header:logo": { "label": "Têtière : logo" },
"emails:logo": {"label": "Emails : logo"}
},
"COMBO_CELL_TEMPLATES.update" : {
"data_menucell" : {
"menu-with-icon" : {
"extra-css-classes" : "menu-with-icons",
"label" : "Avec icônes",
"template" : "combo/cells/menu-with-icons/menu-cell.html"
}
}
}
}
}
}

View File

@ -0,0 +1,7 @@
@charset "UTF-8";
@import '../includes/fonts/montserrat';
@import '../includes/fonts/inter';
@import 'vars';
@import '../includes/publik';
@import 'custom';

View File

@ -0,0 +1,8 @@
{% extends "authentic2/password_change_body.html" %}
{% block warn_if_not_requested %}
<p>
Si vous nêtes pas à lorigine de cette demande, contactez-nous imédiatement
via le formulaire de réclamation ou appelez le 0147295050.
</p>
{% endblock %}

View File

@ -0,0 +1,6 @@
{% extends "authentic2/password_change_body.txt" %}
{% block warn_if_not_requested %}
Si vous nêtes pas à lorigine de cette demande, contactez-nous imédiatement
via le formulaire de réclamation ou appelez le 0147295050.
{% endblock %}

View File

@ -0,0 +1,18 @@
{% load assets %}
<div>
<div class="links-list">
<ul>
{% for menuitem in menuitems %}
<li>
<a class="menu-with-icons--link" href="{{menuitem.page.get_online_url}}">
<span class="menu-with-icons--icon">
<img src="{% asset_url menuitem.page.picture size="1000" crop="center" %}" />
</span>
<span class="menu-with-icons--label">{{ menuitem.page.title }}</span>
</a>
</li>
{% endfor %}
</ul>
</div>
</div>

View File

@ -0,0 +1,35 @@
{% load i18n %}
<div class="wcs-forms-of-category-{{slug}}">
<h2 class="cell--title">{{ title }}</h2>
{% if category_description %}
<div class="intro">
{{ category_description|safe }}
</div>
{% endif %}
<div class="links-list">
<ul>
{% for form in forms %}
<li class="{% if form.authentication_required %}required-authentication{% endif %}
{% for context in form.required_authentication_contexts %}required-{{context}}-authentication {% endfor %}
{% if form.redirection %}is-redirection{% endif %}"
><a href="{{ form.url }}tryauth?{% for key, value in request.GET.items %}{% if key|slice:":4" == "rsu_" %}service_var_{{key}}={{value}}{% endif %}{% endfor %}">{{ form.title }}</a>
{% if form.description %}<div class="description">{{ form.description|safe }}</div>{% endif %}
</li>
{% endfor %}
{% if more_forms %}
<li class="more-items"><a>+</a></li>
{% for form in more_forms %}
<li style="display: none" class="additional-form {% if form.authentication_required %}required-authentication{% endif %}
{% for context in form.required_authentication_contexts %}required-{{context}}-authentication {% endfor %}
{% if form.redirection %}is-redirection{% endif %}"
><a href="{{ form.url }}tryauth?{% for key, value in request.GET.items %}{% if key|slice:":4" == "rsu_" %}service_var_{{key}}={{value}}{% endif %}{% endfor %}">{{ form.title }}</a>
{% if form.description %}<div class="description">{{ form.description|safe }}</div>{% endif %}
</li>
{% endfor %}
{% endif %}
</ul>
</div>
</div>

View File

@ -0,0 +1,29 @@
<h2>Résultat du paiement</h2>
{% with data=request.session.saga_retour_synchrone %}
{% if data.etat == 'paye' %}
<div id="messages">
<ul class="messages">
<li class="success">Paiement accepté</li>
</ul>
</div>
<div>
{% if data.factures %}
<table class="invoices pk-data-table pk-table-zebra">
<thead>
<tr><th>N° de facture</th><th>Montant<th></tr>
</thead>
<tbody>
{% for facture in data.factures %}
<tr><td>{{ facture.num }}</td><td>{{ facture.montant_initial|floatformat:2 }} €</td></tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
{% endif %}
{% endwith %}
{{cell.text|safe}}

View File

@ -0,0 +1,91 @@
{% load i18n combo %}
<style>
aside#sidebar { /* to get search results to be absolutely positioned in main content */
position: static;
}
</style>
{% if request.GET.q %}
{% if results.data %}
<p>
Nombre dindividus trouvés : {{ results.data|length }}
{% if request.user|has_role:"RSU création" %}
<a class="mini-ts" style="float:right;" href="{{ eservices_url }}backoffice/submission/creation-d-une-fiche-adulte/?cancelurl={{ portal_agent_url }}">Pas de résultat pertinent : créer un nouvel individu</a>
{% endif %}
</p>
<table class="search-users">
<tbody>
{% for user in results.data %}
<tr class="clickable-row"
data-href="?rsu_adult={{ user.id }}">
<td class="individu-{{ user.genre }}-{{ user.statut_legal }}"></td>
<td>
<a href="?rsu_adult={{ user.id }}">
<strong>{{ user.nom_de_naissance }} {% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}</strong>
{{ user.prenoms }}
<br />
<small>#{{ user.id }}</small></a>
{% if user.union %}
<br />
<small>conjoint : {{ user.union.nom_de_naissance }} {% if user.union.nom_d_usage %}({{ user.union.nom_d_usage }}){% endif %} {{ user.union.prenoms }}</small>
{% endif %}
{% if user.enfants or user.union%}
<br />
<small>{{ user.enfants|length }} enfant{% if user.enfants|length > 1 %}s{% endif %}</small>
{% endif %}
</td>
<td>
{{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"d/m/Y" }}
<br />{{ user.age_label }}
</td>
<td>
Courriel : {{ user.email|default:"inconnu" }}
{% for adresse in user.adresses|dictsort:"principale" %}
<p>
{% if adresse.streetnumber %}{{ adresse.streetnumber }}{% endif %}
{% if adresse.streetnumberext %}{{ adresse.streetnumberext }}{% endif %}
{{ adresse.streetname }}<br/>
{% if adresse.ext1 %}{{ adresse.ext1 }}<br />{% endif %}
{% if adresse.ext2 %}{{ adresse.ext2 }}<br />{% endif %}
{% if adresse.at %}{{ adresse.at }}<br />{% endif %}
{{ adresse.zipcode }} {{ adresse.city }}
{% if adresse.country != "FR" %}({{ adresse.country }}){% endif %}
</p>
{% endfor %}
</td>
<td>
{% for soft,id in user.cles_de_federation.items %}{% if soft != 'authentic' %}
{{ soft }} #{{ id }}<br />
{% endif %}
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
<script>
$(function($) {
$("tr.clickable-row").click(function() {
window.location = $(this).data("href");
});
});
</script>
{% else %}
<p>
Aucun individu trouvé.
{% if request.user|has_role:"RSU création" %}
<a class="mini-ts" style="float: right;" href="{{ eservices_url }}backoffice/submission/creation-d-une-fiche-adulte/?cancelurl={{ portal_agent_url }}">Aucun résultat : créer un nouvel individu</a>
{% endif %}
</p>
{% endif %}
{% endif %}

View File

@ -0,0 +1,84 @@
{% load i18n combo %}
<style>
aside#sidebar { /* to get search results to be absolutely positioned in main content */
position: static;
}
</style>
{% if request.GET.q %}
<h2><span style="font-weight: lighter;">Recherche denfant : « <strong>{{ request.GET.q }}</strong> »</span></h2>
{% if results.data %}
<p>
Nombre dindividus trouvés : {{ results.data|length }}
<a class="mini-ts" style="float: right;" href="{{ eservices_url }}backoffice/submission/declaration-de-responsabilite-sur-un-enfant-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&session_var_rsu_child=&cancelurl={{ portal_agent_url }}">Pas de résultat pertinent : responsabilité sur un nouvel enfant</a>
</p>
<table class="search-users">
<tbody>
{% for user in results.data %}
<tr class="clickable-row"
data-href="?rsu_child={{ user.id }}{% if request.GET.rsu_adult %}&rsu_adult={{ request.GET.rsu_adult }}{% endif %}{% if request.GET.rsu_spoose %}&rsu_spoose={{ request.GET.rsu_spoose }}{% endif %}">
<td class="individu-{{ user.genre }}-{{ user.statut_legal }}"></td>
<td>
<a href="?rsu_child={{ user.id }}{% if request.GET.rsu_adult %}&rsu_adult={{ request.GET.rsu_adult }}{% endif %}{% if request.GET.rsu_spoose %}&rsu_spoose={{ request.GET.rsu_spoose }}{% endif %}">
<strong>{{ user.nom_de_naissance }} {% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}</strong>
{{ user.prenoms }}
<br />
<small>#{{ user.id }}</small></a>
</td>
<td>
{{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"d/m/Y" }}
<br />{{ user.age_label }}
</td>
<td>
Courriel : {{ user.email|default:"inconnu" }}
{% for adresse in user.adresses|dictsort:"principale" %}
<p>
{% if adresse.streetnumber %}{{ adresse.streetnumber }}{% endif %}
{% if adresse.streetnumberext %}{{ adresse.streetnumberext }}{% endif %}
{{ adresse.streetname }}<br/>
{% if adresse.ext1 %}{{ adresse.ext1 }}<br />{% endif %}
{% if adresse.ext2 %}{{ adresse.ext2 }}<br />{% endif %}
{% if adresse.at %}{{ adresse.at }}<br />{% endif %}
{{ adresse.zipcode }} {{ adresse.city }}
{% if adresse.country != "FR" %}({{ adresse.country }}){% endif %}
</p>
{% endfor %}
</td>
<td>
{% for soft,id in user.cles_de_federation.items %}{% if soft != 'authentic' %}
{{ soft }} #{{ id }}<br />
{% endif %}
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
<script>
$(function($) {
$("tr.clickable-row").click(function() {
window.location = $(this).data("href");
});
});
</script>
{% else %}
Aucun résultat
<a class="mini-ts" style="float: right;" href="{{ eservices_url }}backoffice/submission/declaration-de-responsabilite-sur-un-enfant-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&session_var_rsu_child=&cancelurl={{ portal_agent_url }}">Aucun résultat : responsabilité sur un nouvel enfant</a>
{% endif %}
<div class="vfill"></div>
{% endif %}

View File

@ -0,0 +1,99 @@
{% load i18n combo %}
<style>
aside#sidebar { /* to get search results to be absolutely positioned in main content */
position: static;
}
</style>
{% if request.GET.q %}
<h2><span style="font-weight: lighter;">Recherche de conjoint : « <strong>{{ request.GET.q }}</strong> »</span></h2>
{% if results.data %}
<p>
Nombre dindividus trouvés : {{ results.data|length }}
{% if request.user|has_role:"RSU création" %}
<a class="mini-ts" style="float:right;" href="{{ eservices_url }}backoffice/submission/creation-d-une-fiche-adulte/?cancelurl={{ portal_agent_url }}">Pas de résultat pertinent : créer dabord un nouvel individu</a>
{% endif %}
</p>
<table class="search-users">
<tbody>
{% for user in results.data %}
{% if request.GET.rsu_adult != user.id|lower %}{# use lower because user.id is an int #}
<tr class="clickable-row"
data-href="?rsu_spoose={{ user.id }}{% if request.GET.rsu_adult %}&rsu_adult={{ request.GET.rsu_adult }}{% endif %}{% if request.GET.rsu_child %}&rsu_child={{ request.GET.rsu_child }}{% endif %}">
<td class="individu-{{ user.genre }}-{{ user.statut_legal }}"></td>
<td>
<a href="?rsu_spoose={{ user.id }}{% if request.GET.rsu_adult %}&rsu_adult={{ request.GET.rsu_adult }}{% endif %}{% if request.GET.rsu_child %}&rsu_child={{ request.GET.rsu_child }}{% endif %}">
<strong>{{ user.nom_de_naissance }} {% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}</strong>
{{ user.prenoms }}
<br />
<small>#{{ user.id }}</small></a>
{% if user.union %}
<br />
<small>conjoint : {{ user.union.nom_de_naissance }} {% if user.union.nom_d_usage %}({{ user.union.nom_d_usage }}){% endif %} {{ user.union.prenoms }}</small>
{% endif %}
{% if user.enfants or user.union%}
<br />
<small>{{ user.enfants|length }} enfant{% if user.enfants|length > 1 %}s{% endif %}</small>
{% endif %}
</td>
<td>
{{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"d/m/Y" }}
<br />{{ user.age_label }}
</td>
<td>
Courriel : {{ user.email|default:"inconnu" }}
{% for adresse in user.adresses|dictsort:"principale" %}
<p>
{% if adresse.streetnumber %}{{ adresse.streetnumber }}{% endif %}
{% if adresse.streetnumberext %}{{ adresse.streetnumberext }}{% endif %}
{{ adresse.streetname }}<br/>
{% if adresse.ext1 %}{{ adresse.ext1 }}<br />{% endif %}
{% if adresse.ext2 %}{{ adresse.ext2 }}<br />{% endif %}
{% if adresse.at %}{{ adresse.at }}<br />{% endif %}
{{ adresse.zipcode }} {{ adresse.city }}
{% if adresse.country != "FR" %}({{ adresse.country }}){% endif %}
</p>
{% endfor %}
</td>
<td>
{% for soft,id in user.cles_de_federation.items %}{% if soft != 'authentic' %}
{{ soft }} #{{ id }}<br />
{% endif %}
{% endfor %}
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
<script>
$(function($) {
$("tr.clickable-row").click(function() {
window.location = $(this).data("href");
});
});
</script>
{% else %}
<p>
Aucun individu trouvé.
{% if request.user|has_role:"RSU création" %}
<a class="mini-ts" style="float: right;" href="{{ eservices_url }}backoffice/submission/creation-d-une-fiche-adulte/?cancelurl={{ portal_agent_url }}">Aucun résultat : créer un nouvel individu</a>
{% endif %}
</p>
{% endif %}
<div class="vfill"></div>
{% endif %}

View File

@ -0,0 +1,25 @@
{% load combo %}
{% if json.data %}
<ul class="messages">
<li class="error">
<h2>Détection de doublons</h2>
{% for doublon in json.data %}
<p>
<a href="doublons/?ids={{ doublon.individu_1.id }} {{ doublon.individu_2.id }}">Doublon {{ doublon.individu_1.id }}+{{ doublon.individu_2.id }}</a> <strong>{{ doublon.score }}&nbsp;%</strong>
<br />
{% if doublon.individu_1.id|floatformat == rsu_adult %}{# use floatformat as string cast #}
{{ doublon.individu_2.text }}<br />
{% else %}
{{ doublon.individu_1.text }}<br />
{% endif %}
</p>
{% endfor %}
</li>
</ul>
{% else %}
<p>Aucun doublon détecté.</p>
{% endif %}

View File

@ -0,0 +1,106 @@
{% load combo %}
{% if facture_num %} {# une seule facture #}
{% if json.data %}
{% for facture in json.data %}{% if facture.num == facture_num %} {# pour trouver facture avec lid #}
<div class="invoice">
<p>
</p>
<h3>Détail dune facture</h3>
<div class="grid-1-3"><p>Numéro de facture</p></div>
<div class="grid-2-3"><p>{{ facture.num }}</p></div>
<div class="grid-1-3"><p>Débiteur</p></div>
<div class="grid-2-3"><p>{{ facture.extra.redevable }}</p></div>
<div class="grid-1-3"><p>Date démission</p></div>
<div class="grid-2-3"><p>{{ facture.date_facture|strptime:"%Y-%m-%d"|date:"d F Y" }}</p></div>
<div class="grid-1-3"><p>Date limite de paiement</p></div>
<div class="grid-2-3"><p>{{ facture.date_limite_recouvrement|strptime:"%Y-%m-%d"|date:"d F Y"}}</p></div>
<div class="grid-1-3"><p>Montant facturé</p></div>
<div class="grid-2-3"><p>{{ facture.montant_initial }} €</p></div>
<div class="grid-1-3"><p>Montant restant à payer</p></div>
<div class="grid-2-3"><p>{{ facture.reste_a_payer }} €</p></div>
<table class="main"><tbody>
<tr><th>Libellé</th><th>Montant</th></tr>
{% for creance in facture.creances %}
<tr><td>{{ creance.libelle }}</td><td>{{ creance.montant }} €</td></tr>
{% endfor %}
</tbody></table>
<div class="newline"></div>
<a class="button" href="./?rsu_adult={{ rsu_adult }}">Retour à la liste des factures</a>
</div>
{% endif %}{% endfor %} {# pour trouver facture avec lid #}
{% endif %}
{% else %} {# liste des factures #}
<div class="invoices">
<p>
</p>
{% if json.data %}
{% with factures=json.data|dictsort:"date_limite_recouvrement"|dictsort:"etat" %}
<table class="main"><tbody>
<tr>
<th>État</th>
<th>N° de facture</th>
<th>Libellé</th>
<th>Débiteur</th>
<th>Date de la facture</th>
<th>Date limite avant recouvrement</th>
<th>Montant initial</th>
<th>Reste à payer</th>
<th>Détail</th>
</tr>
{% for facture in factures %}
<tr>
<td>{{ facture.etat }}</td>
<td>{{ facture.num }}</td>
<td>{% with creance=facture.creances|first %}{{ creance.libelle }}{% endwith %}</td>
<td>{{ facture.extra.redevable }}</td>
<td>{{ facture.date_facture|strptime:"%Y-%m-%d"|date:"d F Y" }}</td>
<td>{{ facture.date_limite_recouvrement|strptime:"%Y-%m-%d"|date:"d F Y" }}</td>
<td>{{ facture.montant_initial }} €</td>
<td>{{ facture.reste_a_payer }} €</td>
<td><a class="icon-view" href="./?rsu_adult={{ rsu_adult }}&facture_num={{ facture.num }}">détails</a></td>
</tr>
{% endfor %}
</tbody></table>
{% endwith %}
{% else %}
{# pas de json.data, on cherche pourquoi #}
{% if json.err %}
<ul>
{% for error in json.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% else %}
<p>Pas de facture disponible.</p>
{% endif %}
{% endif %}
</div>
{% endif %}

View File

@ -0,0 +1,29 @@
{% load combo humanize %}
<div class="rsu-log-errors">
{% now "Ymd" as today %}
<dl>
{% for log in json.data %}
{% if log.content.error %}
{% ifchanged %}
<dt>
{{ log.timestamp|parse_datetime|naturalday:"j F Y" }},
{{ log.timestamp|parse_datetime|naturaltime }}
</dt>
{% endifchanged %}
<dd
{% if log.timestamp|parse_datetime|date:"Ymd" == today %}
style="color:red;"
{% endif %}>
{{ log.timestamp|parse_datetime|time:"H:i" }} : {{ log.content.text }}
<br />
<a href="{{ log.content.meta.form_url }}">{{ log.content.meta.form_name }}</a>
({{ log.content.meta.form_number }})
</dd>
{% endif %}
{% endfor %}
</dl>
</div>

View File

@ -0,0 +1,151 @@
{% load combo %}
<div id="journal">
{% for log in json.data %}
<h3>{{ log.timestamp|parse_datetime }}
— {{ log.content.text }}</h3>
{% if log.content.meta %}{% with meta=log.content.meta %}
<p>
Démarche <a href="{{ meta.form_url }}">{{ meta.form_name }}</a>
(n° {{ meta.form_number }})
<br />
Opérée par {{ meta.session_user_display_name }}
&lt;{{meta.session_user_email }}&gt;
</p>
{% endwith %}
{% else %}
<p>Pas de données «méta» pour cette entrée</p>
{% endif %}
<ul>
{% if log.content.enfant_id %}
<li>Enfant concerné : {{ log.content.enfant_text }} (#{{ log.content.enfant_id }})</li>
{% endif %}
{% if log.content.left_id %}
<li>Individu 1 (left) : {{ log.content.left_text }} (#{{ log.content.left_id }})</li>
{% endif %}
{% if log.content.right_id %}
<li>Individu 2 (right) : {{ log.content.right_text }} (#{{ log.content.right_id }})</li>
{% endif %}
{% if log.content.conjoint_id %}
<li>Conjoint concerné : {{ log.content.conjoint_text }} (#{{ log.content.conjoint_id }})</li>
{% endif %}
{% if log.content.faux_positif %}
<li>Doublon traité comme faux positif avec <a href="/?rsu_adult={{ log.content.faux_positif }}">#{{ log.content.faux_positif }}</a></li>
{% endif %}
</ul>
{% if log.content.job_url %}
<p>Trame technique : <a href="{{ zoo_url_no_slash }}{{ log.content.job_url }}">{{ log.content.job_url }}</a></p>
{% endif %}
{% if log.content.error %}
{% if log.content.error.code %}
<p>
Erreur technique : code {{ log.content.error.code }} (status-code {{ log.content.error|get:"status-code" }})<br />
<small>{{ log.content.error.detail }}</small>
</p>
{% endif %}
{% if log.content.error.content.metier or log.content.error.content.technique %}
<p>
Erreur métier : {{ log.content.error.content.metier }}<br />
<small>{{ log.content.error.content.technique }}</small>
</p>
{% endif %}
{% endif %}
{% if request.user.is_staff or request.user.is_superuser %}
<span style="color:#bbb;">
<p>Données brutes :</p>
<ul>
<li>timestamp : {{ log.timestamp }}</li>
{% for k,v in log.content.items %}
<li>{{ k }} : {{ v }}</li>
{% endfor %}
</ul>
</li>
</span>
{% endif %}
{% endfor %}
{% comment %}
{% if 1 or json.cookie %}
<style>
.spinner {
margin: 100px auto;
width: 50px;
height: 40px;
text-align: center;
font-size: 10px;
}
#fin-du-journal {
text-align: center;
}
.spinner > div {
background-color: #333;
height: 100%;
width: 6px;
display: inline-block;
-webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;
animation: sk-stretchdelay 1.2s infinite ease-in-out;
}
.spinner .rect2 {
-webkit-animation-delay: -1.1s;
animation-delay: -1.1s;
}
.spinner .rect3 {
-webkit-animation-delay: -1.0s;
animation-delay: -1.0s;
}
.spinner .rect4 {
-webkit-animation-delay: -0.9s;
animation-delay: -0.9s;
}
.spinner .rect5 {
-webkit-animation-delay: -0.8s;
animation-delay: -0.8s;
}
@-webkit-keyframes sk-stretchdelay {
0%, 40%, 100% { -webkit-transform: scaleY(0.4) }
20% { -webkit-transform: scaleY(1.0) }
}
@keyframes sk-stretchdelay {
0%, 40%, 100% {
transform: scaleY(0.4);
-webkit-transform: scaleY(0.4);
} 20% {
transform: scaleY(1.0);
-webkit-transform: scaleY(1.0);
}
}
</style>
<div id="loading" data-url="?rsu_adult={{ rsu_adult }}&cookie={{ json.cookie }}">
<div class="spinner">
<div class="rect1"></div>
<div class="rect2"></div>
<div class="rect3"></div>
<div class="rect4"></div>
<div class="rect5"></div>
Chargement du reste du journal
</div>
</div>
{% endcomment %}
{% if json.cookie %}
<a href="?rsu_adult={{ rsu_adult }}&cookie={{ json.cookie }}">Suite du journal</a>
{% else %}
<h2>Fin du journal</h2>
{% endif %}
</div>

View File

@ -0,0 +1,52 @@
{% load combo %}
{% if json_status != 200 %}
<p json_status="{{ json_status }}">
Le service est momentanément indisponible. Veuillez contacter lAssistance Informatique DSIT.
</p>
{% elif json.err == 1 and json.errors %}
{% for error in json.errors %}
{% if error.metier %}
<p error="{{ error|pprint }}">
Erreur retournée par Implicit : {{ error.metier }}
</p>
{% else %}
<p data-json="{{ json|pprint }}">
Le service est momentanément indisponible.
</p>
{% endif %}
<p>
Veuillez contacter lAssistance Informatique DSIT.
</p>
{% endfor %}
{% elif json.err == 1 %}
<p data-json="{{ json|pprint }}">
Le service est momentanément indisponible. Veuillez contacter lAssistance Informatique DSIT.
</p>
{% else %}
{% for qf in json.data %}
<h3>Millésime {{ qf|get:"nom-quotient" }}</h3>
<p>
<strong>Montant : {{ qf.montant }}</strong>
<br />
Nature : {{ qf|get:"nature-qf" }}
<br/>
Valable du {{ qf|get:"date-debut-validite"|strptime:"%Y-%m-%d"|date:"d F Y" }}
au <strong>{{ qf|get:"date-fin-validite"|strptime:"%Y-%m-%d"|date:"d F Y" }}</strong>
<br/>
Calculé le {{ qf|get:"date-calcul"|parse_datetime|date:"d F Y" }}
<br/>
<a href="{% url 'nanterre-qf-carte-famille' qf_id=qf|get:"id-qf" %}?rsu_id={{ rsu_adult }}" download="carte-famille-{{ rsu_adult }}-{{ qf|get:"id-qf" }}.pdf">→ rééditer la carte</a>
{% empty %}
<p data-json="{{ json|pprint }}">
Pas de QF disponible.
</p>
{% endfor %}
{% if request.user|has_role:parameters.role_qf %}
<p>
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/calcul-de-quotient-familial-bo/?session_var_rsu_adult={{ rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ rsu_adult }}">Calcul dun nouveau QF</a>
</p>
{% endif %}
{% endif %}

View File

@ -0,0 +1,16 @@
{% load combo %}
{% with user=json.data %}
<h2>
{{ parameters.prefix }}
<a href="../?rsu_adult={{ user.id }}"><strong>{{ user.nom_de_naissance }}
{% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}
</strong> {{ user.prenoms }}
<small>— individu {{ user.statut_legal }}</small>
<small>— RSU #{{ user.id }}</a></small>
{% if user.date_de_deces %}— décès le {{ user.date_de_deces|strptime:"%Y-%m-%d"|date:"j F Y" }}{% endif %}
</a>
</h2>
{% endwith %}

View File

@ -0,0 +1,279 @@
{% load combo %}
{% if json.data %}
{% with user=json.data %}
<!-- un individu s'affiche : on cache la barre de recherche -->
<script> $(function() { $('div.searchcell.rsu-adult').hide(); }); </script>
<!-- si union : on cache la recherche d'un conjoint -->
{% if user.union %}
<script> $(function() { $('div.rsu-spoose').hide(); }); </script>
{% endif %}
<!-- si individu mineur : on cache la barre latérale (ni conjoint ni enfant) -->
{% if user.statut_legal == "mineur" %}
<!-- script> $(function() { $('aside#sidebar').hide(); }); </script -->
<script> $(function() { $('div.rsu-qf').hide(); }); </script>
<script> $(function() { $('div.rsu-child').hide(); }); </script>
<script> $(function() { $('div.rsu-spoose').hide(); }); </script>
{% endif %}
<!-- pas de droit de gestion du réseau : ni conjoint ni enfant -->
{% if not request.user|has_role:parameters.role_gestion_reseau %}
<script> $(function() { $('div.rsu-child').hide(); }); </script>
<script> $(function() { $('div.rsu-spoose').hide(); }); </script>
{% endif %}
<div class="grid-5-6">
<h2>
<strong>{{ user.nom_de_naissance }}
{% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}
</strong> {{ user.prenoms }}
<small>— individu {{ user.statut_legal }}</small>
<small>— RSU #{{ user.id }}</small>
{% if user.date_de_deces %}— décès le {{ user.date_de_deces|strptime:"%Y-%m-%d"|date:"j F Y" }}{% endif %}
</h2>
</div>
<div class="grid-1-6">
{% if request.user|has_role:parameters.role_journal %}
<a class="mini-ts" href="/journal/?rsu_adult={{ rsu_adult }}&cookie=">Journal</a>
{% endif %}
<a class="mini-ts" href="./">Autre recherche</a>
</div>
<div class="grid-1-2 bloc-rsu">
<h3>Identité</h3>
{% include "rsu/identite.html" with user=user %}
{% if request.user|has_role:parameters.role_modification %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/mise-a-jour-d-identite-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Modifier</a>
{% endif %}
{% if not user.date_de_deces and request.user|has_role:parameters.role_deces %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/declaration-d-un-deces-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Déclarer le décès</a>
{% endif %}
</div>
<div class="grid-1-2 bloc-rsu">
<h3>Adresse</h3>
{% include "rsu/adresses.html" with adresses=user.adresses %}
{% if user.statut_legal == 'majeur' %}
{% if request.user|has_role:parameters.role_modification %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/mise-a-jour-de-l-adresse-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Modifier</a>
{% endif %}
{% elif user.adresses|length > 1 %}
{% if request.user|has_role:parameters.role_separation %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/mise-a-jour-de-la-residence-d-un-enfant-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Choisir l'adresse principale</a>
{% endif %}
{% endif %}
</div>
<div class="grid-1-2 newline bloc-rsu">
<h3>Informations de contact</h3>
{% include "rsu/contacts.html" with email=user.email telephones=user.telephones %}
{% if request.user|has_role:parameters.role_modification %}
{% if user.statut_legal == 'majeur' or request.user|has_role:parameters.role_contact_mineur %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/mise-a-jour-des-informations-de-contact-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Modifier</a>
{% endif %}
{% endif %}
</div>
<div class="grid-1-2 bloc-rsu">
<h3>Fédérations</h3>
<table><tbody>
{% if request.user|has_role:parameters.role_visualisation_federation_technocarte %}
<tr>
<td>Technocarte (Famille) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.technocarte }}">{{ user.cles_de_federation.technocarte|default:"×" }}</td>
<td>
{% if request.user|has_role:parameters.role_gestion_manuelle_federation_technocarte %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/modification-manuelle-de-federation-technocarte/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}"></a>
{% endif %}
{% if request.user|has_role:parameters.role_gestion_federation_technocarte %}
{% if user.cles_de_federation.technocarte %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/synchronisation-technocarte/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}"></a>
{% else %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/gestion-de-federation-technocarte/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Créer</a>
{% endif %}
{% endif %}
</td>
</tr>
{% endif %}
{% if request.user|has_role:parameters.role_visualisation_federation_implicit %}
<tr>
<td>Implicit (QF) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.implicit }}">{{ user.cles_de_federation.implicit|default:"×" }}</td>
<td>
{% if request.user|has_role:parameters.role_gestion_manuelle_federation_implicit %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/modification-manuelle-de-federation-implicit/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}"></a>
{% endif %}
{% if request.user|has_role:parameters.role_gestion_federation_implicit %}
{% if user.cles_de_federation.implicit %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/synchronisation-implicit/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}"></a>
{% else %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/calcul-de-quotient-familial-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Créer</a>
{% endif %}
{% endif %}
</td>
</tr>
{% endif %}
{% if request.user|has_role:parameters.role_visualisation_federation_saga %}
<tr>
<td>SAGA (factures) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.saga }}">{{ user.cles_de_federation.saga|default:"×" }}</td>
<td>
{% if request.user|has_role:parameters.role_gestion_manuelle_federation_saga %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/modification-manuelle-de-federation-saga/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}"></a>
{% endif %}
{% if request.user|has_role:parameters.role_gestion_federation_saga %}
{% if user.cles_de_federation.saga %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/synchronisation-saga/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}"></a>
{% else %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/creation-de-federations-saga/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Créer</a>
{% endif %}
{% endif %}
</td>
</tr>
<tr>
<td>Tiers SAGA (factures) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.saga_tiers }}">{{ user.cles_de_federation.saga_tiers|default:"×" }}</td>
<td>
</td>
</tr>
{% endif %}
{% if request.user|has_role:parameters.role_visualisation_federation_infor %}
<tr>
<td>Infor (Médiathèque) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.infor }}">{{ user.cles_de_federation.infor|default:"×" }}</td>
<td>
{% if request.user|has_role:parameters.role_gestion_manuelle_federation_infor %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/modification-manuelle-de-federation-infor/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}"></a>
{% endif %}
{% if request.user|has_role:parameters.role_gestion_federation_infor %}
{% if user.cles_de_federation.infor %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/synchronisation-infor/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}"></a>
{% else %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/gestion-de-federation-infor/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Créer</a>
{% endif %}
{% endif %}
</td>
</tr>
{% endif %}
{% if request.user|has_role:parameters.role_visualisation_federation_authentic %}
<tr>
<td>Compte internaute :</td>
<td class="federation-key" title="{{ user.cles_de_federation.authentic }}">{{ user.cles_de_federation.authentic|default:"×" }}</td>
<td>
{% if request.user|has_role:parameters.role_gestion_manuelle_federation_authentic %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/creer-un-compte-en-ligne-pour-l-usager-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Créer/modifier/supprimer</a>
{% elif not user.cles_de_federation.authentic and request.user|has_role:parameters.role_gestion_federation_authentic %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/creer-un-compte-en-ligne-pour-l-usager-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Lier à un compte internaute</a>
{% endif %}
</td>
</tr>
{% endif %}
</tbody></table>
</div>
{% if user.union %}
<div class="grid-1-1 newline"><hr /></div>
<div class="grid-1-1 newline">
<h3>Conjoint — {% include "rsu/union_statut.html" with union_statut=user.union_statut %}</h3>
<div class="grid-1-2 newline bloc-rsu">
{% include "rsu/identite-mini.html" with user=user.union %}
{% if request.user|has_role:parameters.role_separation %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/declaration-d-une-separation-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Déclarer la séparation</a>
{% endif %}
{% if request.user|has_role:parameters.role_gestion_reseau %}
{% if user.union_statut == "unionlibre" %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/relation-maritale-simple-passage-d-union-libre-a-mariage-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Passer dunion libre à PACS/mariage</a>
{% endif %}
{% endif %}
{% if request.user|has_role:parameters.role_erreur_statut_marital %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/correction-d-une-relation-maritale-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Erreur sur le type de relation</a>
{% endif %}
</div>
</div>
{% endif %}
<div class="grid-1-1 newline"><hr /></div>
{% if user.enfants or not user.parents %}
<div class="grid-1-1 newline">
<h3>Enfants ({{ user.enfants|length }})</h3>
{% for user in user.enfants|dictsort:"date_de_naissance" %}
<div class="grid-1-2 bloc-rsu">
{% include "rsu/identite-mini.html" with user=user %}
{% if request.user|has_role:parameters.role_gestion_reseau %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/suppression-du-lien-de-responsabilite-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&session_var_rsu_child={{ user.id }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Suppression de la responsabilité</a>
{% endif %}
</div>
{% empty %}
<p>Pas denfants</p>
{% endfor %}
</div>
{% endif %}{# not user.parents #}
{% if user.parents or not user.enfants %}
<div class="grid-1-1 newline">
<h3>Parents ({{ user.parents|length }})</h3>
{% for user in user.parents|dictsort:"date_de_naissance" %}
<div class="grid-1-2">
{% include "rsu/identite-mini.html" with user=user %}
</div>
{% empty %}
<p>Pas de parents</p>
{% endfor %}
</div>
{% endif %}{# not user.enfants #}
{% if request.user|has_role:parameters.role_suppression_fiche %}
<div class="grid-1-1 newline"><hr /></div>
<div class="grid-1-1 newline">
<h3>Suppression de cette fiche #{{ user.id }}</h3>
{% if user.parents or user.enfants or user.union or user.cles_de_federation.technocarte or user.cles_de_federation.implicit or user.cles_de_federation.infor or user.cles_de_federation.authentic %}
<p>
Vous avez le droit de supprimer des fiches, mais celle-ci ne peut être supprimée :
<ul>
{% if user.parents %}<li>cette fiche est liée à au moins un parent</li>{% endif %}
{% if user.enfants %}<li>cette fiche est liée à au moins un enfant</li>{% endif %}
{% if user.union %}<li>cette fiche est liée à un conjoint</li>{% endif %}
{% if user.cles_de_federation %}<li>cette fiche est fédérée avec au moins un système</li>{% endif %}
</ul>
</p>
{% else %}
<a class="mini-ts" style="background: red; color: black;" href="{{ eservices_url }}backoffice/submission/suppression-fiche-rsu/?session_var_rsu_adult={{ request.GET.rsu_adult }}&cancelurl={{ portal_agent_url }}?rsu_adult={{ request.GET.rsu_adult }}">Supprimer cette fiche</a>
{% endif %}
</div>
{% endif %}
{% endwith %}
{% else %}{# not json.data #}
<!-- pas d'individy affiché : on cache la barre latérale (recherche conjoint ou enfant) -->
<script> $(function() { $('aside#sidebar').hide(); }); </script>
{% endif %}

View File

@ -0,0 +1,43 @@
{% load combo %}
{% if json.data %}
{% with user=json.data %}
<div class="newline grid-1-1">
{% include "rsu/identite-mini.html" with user=user %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/declaration-de-responsabilite-sur-un-enfant-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&session_var_rsu_child={{ user.id }}&cancelurl={{ portal_agent_url }}?{{ request.META.QUERY_STRING|urlencode:"" }}">Responsabilité sur cet enfant</a>
<a class="mini-ts" href="?{% if request.GET.rsu_adult %}rsu_adult={{ request.GET.rsu_adult }}&{% endif %}{% if request.GET.rsu_spoose %}rsu_spoose={{ request.GET.rsu_spoose }}{% endif %}">Autre recherche</a>
</div>
{% if user.parents %}
<div class="grid-1-1">
<h3>Parents</h3>
</div>
{% for user in user.parents|dictsort:"date_de_naissance" %}
<div class="grid-1-1">
{% include "rsu/identite-mini.html" with user=user %}
</div>
{% endfor %}
{% endif %}
<div class="grid-1-1">
<p><!-- un peu d'espace -->&nbsp;</p>
</div>
<script>
$(function() {
$('div.searchcell.rsu-child').hide();
$('aside#sidebar div.rsu-spoose').hide();
});
</script>
{% endwith %}
{% else %}
<p>
Pour ajouter un enfant à lindividu affiché ci-contre,
utiliser la recherche ci-dessus.
</p>
{% endif %}

View File

@ -0,0 +1,484 @@
{% load combo %}
{% if json.data.individu_1 %}
<div id="doublon">
<div class="newline grid-5-6">
<h2>Doublon {{json.data.individu_1.id}}+{{json.data.individu_2.id}}</h2>
</div>
<div class="grid-1-6">
<p><a class="mini-ts" href="?limit={{ limit }}&cookie={{ cookie|urlencode }}">Retour à la liste</a></p>
</div>
<div class="newline">
<p>
{% if json.data.state == "nouveau" %}
{% if request.user|has_role:parameters.role_traitement %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-rsu-faux-positif/?session_var_rsu_adult={{ json.data.individu_1.id }}&session_var_rsu_duplicate={{ json.data.individu_2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Déclarer comme faux positif</a>
<em>si les deux fiches sont deux personnes différentes.</em>
{% endif %}
{% else %}
<ul class="messages">
<li class="error">
Ce doublon est déclaré « {{ json.data.state }} »
</li>
</ul>
{% endif %}
</div>
{% with user=json.data.individu_1 %}
<div class="grid-1-2 bloc-rsu bloc-rsu-no-border">
<h3>
<a href="../?rsu_adult={{ user.id }}"><strong>{{ user.nom_de_naissance }}
{% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}
</strong> {{ user.prenoms }}
<small>— individu {{ user.statut_legal }}</small>
<small>— #{{ user.id }}</a></small>
{% if user.date_de_deces %}— décès le {{ user.date_de_deces|strptime:"%Y-%m-%d"|date:"j F Y" }}{% endif %}
</a>
</h3>
<p>
<em>Créée le {{ user.date_de_creation|parse_datetime }}</em><br />
<em>Modifiée le {{ user.date_de_modification|parse_datetime }}</em>
</p>
</div>
{% endwith %}
{% with user=json.data.individu_2 %}
<div class="grid-1-2 bloc-rsu bloc-rsu-no-border">
<h3>
<a href="../?rsu_adult={{ user.id }}"><strong>{{ user.nom_de_naissance }}
{% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}
</strong> {{ user.prenoms }}
<small>— individu {{ user.statut_legal }}</small>
<small>— #{{ user.id }}</a></small>
{% if user.date_de_deces %}— décès le {{ user.date_de_deces|strptime:"%Y-%m-%d"|date:"j F Y" }}{% endif %}
</a>
</h3>
<p>
<em>Créée le {{ user.date_de_creation|parse_datetime }}</em><br />
<em>Modifiée le {{ user.date_de_modification|parse_datetime }}</em>
</p>
</div>
{% endwith %}
{% if json.data.individu_1.statut_legal != json.data.individu_2.statut_legal %}
<div class="newline grid-1-1 bloc-rsu bloc-rsu-no-border">
<ul class="messages"><li class="warning">
Attention, les deux individus nont pas le même statut légal.
</li></ul>
</div>
{% endif %}
{% if json.data.individu_1.cles_de_federation and json.data.individu_2.cles_de_federation and json.data.state == "nouveau" %}
<div class="newline grid-1-1 bloc-rsu bloc-rsu-no-border">
<ul class="messages"><li class="warning">
Transférer les fédérations vers la fiche à conserver.
</li></ul>
</div>
{% endif %}
{% if json.data.state == "nouveau" %}
{% with user=json.data.individu_1 user2=json.data.individu_2 %}
<div class="newline grid-1-2 bloc-rsu bloc-rsu-no-border">
<ul class="messages">
{% if not user.cles_de_federation %}
<li class="info">
<strong>Fiche à supprimer (doublon)</strong>, nest plus reliée à aucun système tiers.
{% if user.parents or user.enfants or user.union %}
</li>
<li class="warning">
Pour pouvoir la supprimer, supprimer ses liens (conjoint, parents, enfants).
{% else %}
{% if request.user|has_role:parameters.role_traitement %}
<br />
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/suppression-fiche-rsu/?session_var_rsu_adult={{ user.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Supprimer cette fiche</a>
{% endif %}
{% endif %}
</li>
{% elif not user2.cles_de_federation %}
<li class="info">
<strong>Fiche à conserver.</strong>
Vérifier que toutes <a href="../?rsu_adult={{ user.id }}">les données de cette
fiche #{{ user.id }}</a> sont bien à jour.
</li>
{% endif %}
</ul>
</div>
{% endwith %}
{% with user=json.data.individu_2 user2=json.data.individu_1 %}
<div class="grid-1-2 bloc-rsu bloc-rsu-no-border">
<ul class="messages">
{% if not user.cles_de_federation %}
<li class="info">
<strong>Fiche à supprimer (doublon)</strong>, nest plus reliée à aucun système tiers.
{% if user.parents or user.enfants or user.union %}
</li>
<li class="warning">
Pour pouvoir la supprimer, supprimer ses liens (conjoint, parents, enfants).
{% else %}
{% if request.user|has_role:parameters.role_traitement %}
<br />
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/suppression-fiche-rsu/?session_var_rsu_adult={{ user.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Supprimer cette fiche</a>
{% endif %}
{% endif %}
</li>
{% elif not user2.cles_de_federation %}
<li class="info">
<strong>Fiche à conserver.</strong>
Vérifier que toutes <a href="../?rsu_adult={{ user.id }}">les données de cette
fiche #{{ user.id }}</a> sont bien à jour.
</li>
{% endif %}
</ul>
</div>
{% endwith %}
{% endif %}
<div class="newline grid-1-2 bloc-rsu">
{% with user=json.data.individu_1 user2=json.data.individu_2 %}
<h3>
Fédérations
</h3>
<table class="federations"><tbody>
<tr>
<td>Technocarte (Famille) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.technocarte }}">{{ user.cles_de_federation.technocarte|default:"×" }}</td>
{% if json.data.state == "nouveau" %}
<td class="federation-action-left">
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.technocarte and user2.cles_de_federation.technocarte %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=technocarte&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% elif user.cles_de_federation.technocarte and not user2.cles_de_federation.technocarte %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult={{ user2.id }}&session_var_rsu_application=technocarte&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Transférer →</a>
{% endif %}
{% endif %}
</td>
{% endif %}
</tr>
<tr>
<td>Implicit (QF) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.implicit }}">{{ user.cles_de_federation.implicit|default:"×" }}</td>
{% if json.data.state == "nouveau" %}
<td class="federation-action-left">
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.implicit and user2.cles_de_federation.implicit %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=implicit&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% elif user.cles_de_federation.implicit and not user2.cles_de_federation.implicit %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult={{ user2.id }}&session_var_rsu_application=implicit&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Transférer →</a>
{% endif %}
{% endif %}
</td>
{% endif %}
</tr>
<tr>
<td>SAGA (factures) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.saga }}">{{ user.cles_de_federation.saga|default:"×" }}</td>
{% if json.data.state == "nouveau" %}
<td class="federation-action-left">
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.saga %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=saga&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% endif %}
{% endif %}
</td>
{% endif %}
</tr>
<tr>
<td>Tiers SAGA (factures) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.saga_tiers }}">{{ user.cles_de_federation.saga_tiers|default:"×" }}</td>
{% if json.data.state == "nouveau" %}
<td class="federation-action-left">
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.saga_tiers %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=saga_tiers&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% endif %}
{% endif %}
</td>
{% endif %}
</tr>
<tr>
<td>Infor (Médiathèque) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.infor }}">{{ user.cles_de_federation.infor|default:"×" }}</td>
{% if json.data.state == "nouveau" %}
<td class="federation-action-left">
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.infor and user2.cles_de_federation.infor %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=infor&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% elif user.cles_de_federation.infor and not user2.cles_de_federation.infor %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult={{ user2.id }}&session_var_rsu_application=infor&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Transférer →</a>
{% endif %}
{% endif %}
</td>
{% endif %}
</tr>
<tr>
<td>Compte internaute :</td>
<td class="federation-key" title="{{ user.cles_de_federation.authentic }}">{{ user.cles_de_federation.authentic|default:"×" }}</td>
{% if json.data.state == "nouveau" %}
<td class="federation-action-left">
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.authentic and user2.cles_de_federation.authentic %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=authentic&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% elif user.cles_de_federation.authentic and not user2.cles_de_federation.authentic %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult={{ user2.id }}&session_var_rsu_application=authentic&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Transférer →</a>
{% endif %}
{% endif %}
</td>
{% endif %}
</tr>
</tbody></table>
{% endwith %}
</div>
<div class="grid-1-2 bloc-rsu">
{% with user=json.data.individu_2 user2=json.data.individu_1 %}
<h3>
Fédérations
</h3>
<table class="federations"><tbody>
<tr>
{% if json.data.state == "nouveau" %}
<td>
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.technocarte and user2.cles_de_federation.technocarte %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=technocarte&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% elif user.cles_de_federation.technocarte and not user2.cles_de_federation.technocarte %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult={{ user2.id }}&session_var_rsu_application=technocarte&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">← Transférer</a>
{% endif %}
{% endif %}
</td>
{% endif %}
<td>Technocarte (Famille) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.technocarte }}">{{ user.cles_de_federation.technocarte|default:"×" }}</td>
</tr>
<tr>
{% if json.data.state == "nouveau" %}
<td>
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.implicit and user2.cles_de_federation.implicit %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=implicit&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% elif user.cles_de_federation.implicit and not user2.cles_de_federation.implicit %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult={{ user2.id }}&session_var_rsu_application=implicit&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">← Transférer</a>
{% endif %}
{% endif %}
</td>
{% endif %}
<td>Implicit (QF) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.implicit }}">{{ user.cles_de_federation.implicit|default:"×" }}</td>
</tr>
<tr>
{% if json.data.state == "nouveau" %}
<td>
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.saga %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=saga&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% endif %}
{% endif %}
</td>
{% endif %}
<td>SAGA (factures) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.saga }}">{{ user.cles_de_federation.saga|default:"×" }}</td>
</tr>
<tr>
{% if json.data.state == "nouveau" %}
<td>
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.saga_tiers %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=saga_tiers&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% endif %}
{% endif %}
</td>
{% endif %}
<td>Tiers SAGA (factures) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.saga_tiers }}">{{ user.cles_de_federation.saga_tiers|default:"×" }}</td>
</tr>
<tr>
{% if json.data.state == "nouveau" %}
<td>
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.infor and user2.cles_de_federation.infor %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=infor&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% elif user.cles_de_federation.infor and not user2.cles_de_federation.infor %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult={{ user2.id }}&session_var_rsu_application=infor&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">← Transférer</a>
{% endif %}
{% endif %}
</td>
{% endif %}
<td>Infor (Médiathèque) :</td>
<td class="federation-key" title="{{ user.cles_de_federation.infor }}">{{ user.cles_de_federation.infor|default:"×" }}</td>
</tr>
<tr>
{% if json.data.state == "nouveau" %}
<td>
{% if request.user|has_role:parameters.role_traitement %}
{% if user.cles_de_federation.authentic and user2.cles_de_federation.authentic %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult=&session_var_rsu_application=authentic&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">Effacer</a>
{% elif user.cles_de_federation.authentic and not user2.cles_de_federation.authentic %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/doublon-federation/?session_var_rsu_duplicate={{ user.id }}&session_var_rsu_adult={{ user2.id }}&session_var_rsu_application=authentic&session_var_rsu_duplicate_ids={{ user.id }} {{ user2.id }}&cancelurl={{ portal_agent_url }}doublons/?{{ request.META.QUERY_STRING|urlencode:"" }}">← Transférer</a>
{% endif %}
{% endif %}
</td>
{% endif %}
<td>Compte internaute :</td>
<td class="federation-key" title="{{ user.cles_de_federation.authentic }}">{{ user.cles_de_federation.authentic|default:"×" }}</td>
</tr>
</tbody></table>
{% endwith %}
</div>
<div class="newline grid-1-2 bloc-rsu">
<h3>Identité</h3>
{% include "rsu/identite.html" with user=json.data.individu_1 %}
</div>
<div class="grid-1-2 bloc-rsu">
<h3>Identité</h3>
{% include "rsu/identite.html" with user=json.data.individu_2 %}
</div>
<div class="newline grid-1-2 bloc-rsu">
<h3>Adresse</h3>
{% include "rsu/adresses.html" with adresses=json.data.individu_1.adresses %}
</div>
<div class="grid-1-2 bloc-rsu">
<h3>Adresse</h3>
{% include "rsu/adresses.html" with adresses=json.data.individu_2.adresses %}
</div>
<div class="newline grid-1-2 newline bloc-rsu">
<h3>Informations de contact</h3>
{% include "rsu/contacts.html" with email=json.data.individu_1.email telephones=json.data.individu_1.telephones %}
</div>
<div class="grid-1-2 bloc-rsu">
<h3>Informations de contact</h3>
{% include "rsu/contacts.html" with email=json.data.individu_2.email telephones=json.data.individu_2.telephones %}
</div>
{% if json.data.individu_1.enfants or json.data.individu_2.enfants %}
<div class="newline grid-1-2 bloc-rsu">
<h3>Enfants</h3>
{% for enfant in json.data.individu_1.enfants|dictsort:"date_de_naissance" %}
<div class="newline grid-1-1">
{% include "rsu/identite-mini.html" with user=enfant root="../" %}
</div>
{% empty %}
<p>Pas denfant</p>
{% endfor %}
</div>
<div class="grid-1-2 bloc-rsu">
<h3>Enfants</h3>
{% for enfant in json.data.individu_2.enfants|dictsort:"date_de_naissance" %}
<div class="newline grid-1-1">
{% include "rsu/identite-mini.html" with user=enfant root="../" %}
</div>
{% empty %}
<p>Pas denfant</p>
{% endfor %}
</div>
{% endif %}
{% if json.data.individu_1.union or json.data.individu_2.union %}
<div class="newline grid-1-2 bloc-rsu">
{% if json.data.individu_1.union %}
<h3>Conjoint — {% include "rsu/union_statut.html" with union_statut=json.data.individu_1.union_statut %}</h3>
{% include "rsu/identite-mini.html" with user=json.data.individu_1.union root="../" %}
{% else %}
<h3>Conjoint</h3><p>Pas de conjoint</p>
{% endif %}
</div>
<div class="grid-1-2 bloc-rsu">
{% if json.data.individu_2.union %}
<h3>Conjoint — {% include "rsu/union_statut.html" with union_statut=json.data.individu_2.union_statut %}</h3>
{% include "rsu/identite-mini.html" with user=json.data.individu_2.union root="../" %}
{% else %}
<h3>Conjoint</h3><p>Pas de conjoint</p>
{% endif %}
</div>
{% endif %}
{% if json.data.individu_1.parents or json.data.individu_2.parents %}
<div class="newline grid-1-2 bloc-rsu">
<h3>Parents</h3>
{% for parent in json.data.individu_1.parents|dictsort:"date_de_naissance" %}
<div class="newline grid-1-1">
{% include "rsu/identite-mini.html" with user=parent root="../" %}
</div>
{% empty %}
<p>Pas de parent</p>
{% endfor %}
</div>
<div class="grid-1-2 bloc-rsu">
<h3>Parents</h3>
{% for parent in json.data.individu_2.parents|dictsort:"date_de_naissance" %}
<div class="newline grid-1-1 bloc-rsu">
{% include "rsu/identite-mini.html" with user=parent root="../" %}
</div>
{% empty %}
<p>Pas de parent</p>
{% endfor %}
</div>
{% endif %}
<p>
<a href="?limit={{ limit }}&cookie={{ cookie|urlencode }}">Retour à la liste</a>
</p>
</div>
</div>
{% else %}
<div id="doublons">
<p align="right">
{% if cookie %}<a href="?limit={{ limit }}&cookie=">Première page</a> |{% endif %}
<a href="?limit={{ limit }}&cookie={{ json.cookie|urlencode }}">Page suivante</a>
</p>
{% for doublon in json.data %}
<p>
<a href="?ids={{ doublon.individu_1.id }} {{ doublon.individu_2.id }}&cookie={{ cookie|urlencode }}&limit={{ limit }}">{{ doublon.individu_1.id }}+{{ doublon.individu_2.id }}</a>
<strong>{{ doublon.score }}&nbsp;%</strong>
<small>détecté le {{ doublon.created|parse_datetime }} ({{doublon.state}})</small>
<ul>
{% with user=doublon.individu_1 %}
<li><strong>{{ user.nom_de_naissance }}
{% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}
</strong> {{ user.prenoms }}
<small>— naissance le {{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"j F Y" }}</small>
<small>— individu {{ user.statut_legal }}</small>
<small>— RSU <a href="../?rsu_adult={{ user.id }}">#{{ user.id }}</a></small>
{% if user.date_de_deces %}— décès le {{ user.date_de_deces|strptime:"%Y-%m-%d"|date:"j F Y" }}{% endif %}
{% endwith %}
{% with user=doublon.individu_2 %}
<li><strong>{{ user.nom_de_naissance }}
{% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}
</strong> {{ user.prenoms }}
<small>— naissance le {{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"j F Y" }}</small>
<small>— individu {{ user.statut_legal }}</small>
<small>— RSU <a href="../?rsu_adult={{ user.id }}">#{{ user.id }}</a></small>
{% if user.date_de_deces %}— décès le {{ user.date_de_deces|strptime:"%Y-%m-%d"|date:"j F Y" }}{% endif %}
{% endwith %}
</ul>
</p>
{% endfor %}
<p align="right">
{% if cookie %}<a href="?limit={{ limit }}&cookie=">Première page</a> |{% endif %}
<a href="?limit={{ limit }}&cookie={{ json.cookie|urlencode }}">Page suivante</a>
</p>
</div>
{% endif %}

View File

@ -0,0 +1,7 @@
{% load combo %}
{% if json.data.cles_de_federation|get:keyname or keyname == "test" %}
<p class="rsu-frontoffice-app-{{ keyname }}">
<a href="{{ href }}"><span>{{ text }}</span></a>
</p>
<script>$(function() { $('div.rsu-frontoffice-app-title').show(); });</script>
{% endif %}

View File

@ -0,0 +1,202 @@
{% load combo %}
{% if json.data %}
{% if id %} {# une seule facture #}
{% for facture in json.data %}{% if facture.num == id %} {# pour trouver facture avec lid #}
<div class="invoice">
<p></p>
<h3>Détail dune facture</h3>
<div class="grid-1-3"><p>Numéro de facture</p></div>
<div class="grid-2-3"><p>{{ facture.num }}</p></div>
<div class="grid-1-3"><p>Débiteur</p></div>
<div class="grid-2-3"><p>{{ facture.extra.redevable }}</p></div>
<div class="grid-1-3"><p>Date démission</p></div>
<div class="grid-2-3"><p>{{ facture.date_facture|strptime:"%Y-%m-%d"|date:"d F Y" }}</p></div>
<div class="grid-1-3"><p>Date limite de paiement</p></div>
<div class="grid-2-3"><p>{{ facture.date_limite_recouvrement|strptime:"%Y-%m-%d"|date:"d F Y"}}</p></div>
<div class="grid-1-3"><p>Montant facturé</p></div>
<div class="grid-2-3"><p>{{ facture.montant_initial }} €</p></div>
<div class="grid-1-3"><p>Montant restant à payer</p></div>
<div class="grid-2-3"><p>{{ facture.reste_a_payer }} €</p></div>
<div class="grid-1-3"><p>État</p></div>
<div class="grid-2-3"><p>{{ facture.etat|upper }}</p></div>
<table class="invoices pk-data-table pk-table-zebra"><tbody>
<tr><th>Libellé</th><th>Montant</th></tr>
{% for creance in facture.creances %}
<tr><td>{{ creance.libelle }}</td><td>{{ creance.montant }} €</td></tr>
{% endfor %}
</tbody></table>
<div class="newline"></div>
<div class="links-list">
<ul><li><a href="./">Retour à la liste</a></li></ul>
</div>
</div>
{% endif %}{% endfor %} {# pour trouver facture avec lid #}
{% else %} {# liste des factures #}
<div class="invoices">
{% with factures=json.data|dictsort:"date_limite_recouvrement" %}
{% if factures %}
{% if parameters.paiement_actif %}
<form method="POST" action="/_plugin/nanterre/saga-transaction/">
<input type="hidden" name="error_url" value="{{ cell.page.get_online_url }}">
{% endif %}
<table class="invoices pk-data-table pk-table-zebra"><tbody>
<tr>
{% if parameters.paiement_actif %}<th></th>{% endif %}
<th>N° de facture</th>
<th>Libellé</th>
<th>Débiteur</th>
{% if etat == 'en cours' %}<th>Date limite de paiement</th>{% endif %}
<th>Montant</th>
<th>Détail</th>
</tr>
{% for facture in factures %}
<tr>
{% if parameters.paiement_actif %}
<td><input type="checkbox" name="num_factures" value="{{ facture.num }}"
data-value="{{ facture.reste_a_payer|stringformat:"s" }}"/></td>
{% endif %}
<td>{{ facture.num }}</td>
<td>{% with creance=facture.creances|first %}{{ creance.libelle }}{% endwith %}</td>
<td>{{ facture.extra.redevable }}</td>
{% if etat == 'en cours' %}
<td>{{ facture.date_limite_recouvrement|strptime:"%Y-%m-%d"|date:"d F Y" }}</td>
<td>{{ facture.reste_a_payer|floatformat:2 }} €</td>
{% else %}
<td>{{ facture.montant_initial|floatformat:2 }} €</td>
{% endif %}
<td><a class="icon-view" href="./?id={{ facture.num }}">détails</a></td>
</tr>
{% endfor %}
{% if parameters.paiement_actif %}
<tr>
<td><input type="checkbox" id="checkall"></td>
<td colspan="4" align="right">Montant total des factures sélectionnées</td>
<td><strong><span id="totalamount">0,00</span> €</strong></td>
<td></td>
</tr>
{% endif %}
</tbody></table>
{% if parameters.paiement_actif %}
{# Adresse pour paiement : <input type="email" name="email" value="{{ request.user.email }}"/> #}
<div class="buttons">
<button name="submit" value="Payer les factures sélectionnées" disabled="disabled">Payer les factures sélectionnées</button>
</div>
</form>
<script>
$(document).ready(function(){
// somme des factures checkées
$("input[name='num_factures']").on('click', function () {
var sum = 0;
$("input:checked[name='num_factures']").each(function(index, elem){
sum += parseFloat(elem.getAttribute("data-value"));
});
$("span#totalamount").text(sum.toFixed(2).replace('.', ','));
if (sum > 0.0) {
$("button[name=submit]").attr("disabled", null);
} else {
$("button[name=submit]").attr("disabled", "disabled");
}
});
$("input#checkall").on('click', function (event) {
event.preventDefault();
$("input[name='num_factures']").click();
});
// on évite les double-clic en désactivant le bouton au premier clic
$('form').on('submit', function(event) {
var $form = $(this);
$form.addClass('disabled-during-submit');
});
});
</script>
{% endif %}
{% else %}
{% if etat == 'en cours' %}
<p><em>Aucune facture nest à payer.</em></p>
{% else %}
<p><em>Aucune facture disponible.</em></p>
{% endif %}
{% endif %}
{% endwith %}
</div>
{% endif %} {# une seule ou plusieurs factures #}
{% else %} {# json.data vide, quelle est l'erreur ? #}
{% if rsu_status == 500 %}
<div>
<p>Un problème sest produit lors de lappel au service de facturation.</p>
<p>Veuillez réessayer dans quelques minutes et, si le problème persiste appeler le 0147295050.</p>
<p style="display: none">Lerreur est la suivante : ERREUR 500 (crash Zoo)</p>
</div>
{% elif rsu_status == 404 %}
<div>
<p>
Pour consulter et régler vos factures en ligne, vous devez dabord
<a href="/tableau-de-bord/profil/">demander laccès à votre dossier administratif</a>.
</p>
</div>
{% elif json.err %}
<div>
{% if "l'individu n'a pas de code tiers SAGA" in json.errors %}
<p><em>Votre dossier administratif ne présente pas de lien avec des factures.</em></p>
{% elif "référencé dans la régie" in json.errors.0 %} {# fédération inconnue car pas encore de facture #}
<p><em>Aucune facture nest à payer.</em></p>
{% else %}
<p>Un problème sest produit lors de lappel au service de facturation.</p>
<p>Veuillez réessayer dans quelques minutes et, si le problème persiste appeler le 0147295050.</p>
<p style="display: none">Lerreur est la suivante :</p>
<ul style="display: none">
{% for error in json.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</div>
{% else %}
<div>
{% if json %}
{% if etat == 'en cours' %}
<p><em>Aucune facture nest à payer.</em></p>
{% else %}
<p><em>Aucune facture disponible.</em></p>
{% endif %}
{% else %} {# en fait c'est une 404 et le json est complétement vide #}
<p><strong>Vous devez dabord disposer dun
<a href="/tableau-de-bord/profil/">dossier administratif.</strong></em></p>
{% endif %}
</div>
{% endif %}
{% endif %}

View File

@ -0,0 +1,73 @@
{% load combo %}
<h2 data-rsu="{{ rsu|pprint }}" data-json="{{ json }}" data-rsu-status="{{ rsu_status }}">
Quotient familial — Carte famille
</h2>
{% if rsu_status == 404 %}
<div>
<p>
Pour consulter, rééditer ou demander une carte famille en ligne, vous devez
dabord demander <a href="../profil/">laccès à votre dossier administratif</a>.
</p>
</div>
{% elif json_status != 200 or json.errors and json.errors|first != "pas de clé métier" %}
<div>
<p>
Le service est momentanément indisponible.
Veuillez réessayer dans quelques minutes, merci de votre compréhension.
</p>
{% for error in json.errors %}{% if error.metier %}
<p>Pour information voici lerreur reçue : <i>{{ error.metier }}</i></p>
{% endif %}{% endfor %}
</div>
{% else %}
{% if not json.data %}
<div>
<p>
Aucun quotient familial nest disponible.
</p>
</div>
{% else %}
{% with qfs=json.data %}
<div>
<p>
Ci-dessous la liste des quotients familiaux liés à votre dossier
administratif
(numéro de dossier {{ rsu.data.id }}, {{ rsu.data.nom_de_naissance }} {{ rsu.data.prenoms }})
</p>
</div>
{% for qf in qfs %}
<div class="part qf">
<h3>Quotient familial millésime {{ qf|get:"nom-quotient" }}</h3>
<a class="edit-button" href="{% url 'nanterre-qf-carte-famille' qf_id=qf|get:"id-qf" %}"
download="carte-famille-{{ rsu_adult }}-{{ qf|get:"id-qf" }}.pdf">Ré-éditer la carte famille (PDF)</a>
<table><tbody>
<tr><td>  Montant</td><td><strong>{{ qf.montant }}</strong></td></tr>
<tr><td>  Nature</td><td>{{ qf|get:"nature-qf" }}</td></tr>
<tr><td>  Calculé le</td><td>{{qf|get:"date-calcul"|parse_datetime|date:"d F Y"}}</td></tr>
<tr><td>  Valable à partir du</td><td>{{ qf|get:"date-debut-validite"|strptime:"%Y-%m-%d"|date:"d F Y" }}</td></tr>
<tr><td>  Valable jusquau</td><td>{{ qf|get:"date-fin-validite"|strptime:"%Y-%m-%d"|date:"d F Y" }}</td></tr>
</tbody></table>
</div>
{% endfor %}
{% endwith %}
{% endif %}
<div class="part">
<a class="edit-button" href="{{ eservices_url }}calcul-de-quotient-familial/">Calcul de quotient familial</a>
<p>&nbsp;</p>
</div>
{% endif %}

View File

@ -0,0 +1,276 @@
{% load combo %}
<h2>
Mon dossier administratif
</h2>
{% if json_status == 404 %}
<div>
<h3>Votre dossier administratif nest pas disponible.</h3>
<p><em>Votre compte en ligne nest probablement pas encore relié à votre dossier administratif.</em></p>
<div class="part">
<div class="grid-1-2">
<a class="edit-button" href="{{ eservices_url }}acceder-a-mon-dossier-administratif/">Accéder à mon dossier administratif</a>
</div>
<div class="grid-1-2">
<p>
Vous devez en demander laccès en cliquant sur le bouton ci-contre,
<strong>uniquement si vous avez déjà des prestations fournies par la Ville
(enfants en multi-accueils ou scolarisés, carte famille, carte
lecteur)</strong>.
</p>
</div>
<div class="newline"></div>
</div>
</div>
{% elif json.errors %}
<div>
Une erreur a eu lieu lors de la consultation de votre dossier administratif.
Veuillez réessayer dans quelques minutes, merci de votre compréhension.
</div>
{% elif not json.data %}
<div>
Une erreur a eu lieu lors de la consultation de votre dossier administratif.
Veuillez réessayer dans quelques minutes, merci de votre compréhension.
</div>
{% elif json.data %}
{% with user=json.data %}
<div>
<p>
Voici votre dossier administratif, cest-à-dire les informations connues par
la ville de Nanterre. Vous pouvez en demander modification en cliquant sur les
différents boutons.
</p>
</div>
<div class="part identite">
<h3>Identité</h3>
<a class="edit-button" href="{{ eservices_url }}mise-a-jour-d-identite/?session_var_rsu_id={{ user.id }}">Mise à jour didentité</a>
<div class="grid-1-3"><p>Nom de naissance</p></div>
<div class="grid-2-3"><p>{{ user.nom_de_naissance|default:"<em>inconnu</em>" }}</p></div>
{% if user.nom_d_usage %}
<div class="grid-1-3"><p>Nom dusage</p></div>
<div class="grid-2-3"><p>{{ user.nom_d_usage }}</p></div>
{% endif %}
<div class="grid-1-3"><p>Prénom</p></div>
<div class="grid-2-3"><p>{{ user.prenoms }}</p></div>
<div class="grid-1-3"><p>Date de naissance</p></div>
<div class="grid-2-3"><p>{{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"j F Y" }} ({{ user.age_label }})</p></div>
<div class="grid-1-3"><p>Sexe</p></div>
<div class="grid-2-3"><p>{{ user.genre|title }}</p></div>
<div class="newline"></div>
</div>
<div class="part contact">
<h3>Contact</h3>
<a class="edit-button" href="{{ eservices_url }}mise-a-jour-des-informations-de-contact/?session_var_rsu_id={{ user.id }}">Mise à jour des informations de contact</a>
{% for tel in user.telephones %}
<div class="grid-1-3"><p>Téléphone {{ tel.type }}</p></div>
<div class="grid-2-3"><p>{{ tel.numero }}</p></div>
{% endfor %}
<div class="grid-1-3"><p>Email</p></div>
<div class="grid-2-3"><p>{{ user.email|default:"inconnu" }}</p></div>
<div class="newline"></div>
</div>
<div class="part adresse">
<h3>Adresse</h3>
<a class="edit-button" href="{{ eservices_url }}mise-a-jour-d-adresse/">Mise à jour dadresse</a>
{% for adresse in user.adresses|dictsort:"principale" %}
<div class="grid-1-3"><p>Adresse</p></div>
<div class="grid-2-3"><p>
{% if adresse.streetnumber %}{{ adresse.streetnumber }}{% endif %}
{% if adresse.streetnumberext %}{{ adresse.streetnumberext }}{% endif %}
{{ adresse.streetname }}<br/>
{% if adresse.ext1 %}{{ adresse.ext1 }}<br />{% endif %}
{% if adresse.ext2 %}{{ adresse.ext2 }}<br />{% endif %}
{% if adresse.at %}{{ adresse.at }}<br />{% endif %}
{{ adresse.zipcode }} {{ adresse.city }}
{% if adresse.country != "FR" %}({{ adresse.country }}){% endif %}
</p></div>
{% endfor %}
<div class="newline"></div>
</div>
<div class="part general">
<a class="edit-button" href="{{ eservices_url }}supprimer-l-acces-a-mon-dossier-administratif/">Supprimer laccès à mon dossier administratif</a>
<div class="grid-1-3"><p>Numéro du dossier</p></div>
<div class="grid-2-3"><p>{{ user.id }}</p></div>
<div class="grid-1-3"><p>Numéro de tiers SAGA</p></div>
<div class="grid-2-3"><p>{{ user.cles_de_federation.saga_tiers|default:"inconnu" }}</p></div>
<div class="grid-1-3"><p>Date de création de la fiche</p></div>
<div class="grid-2-3"><p>{{ user.date_de_creation|strptime:"%Y-%m-%dT%H:%M:%S.%f+00:00"|date:"j F Y" }}</p></div>
<div class="newline"></div>
</div>
{% if user.union %}
<div class="part general" style="padding: 0;">
<h2>Votre conjoint{% if user.union.genre|first == 'f' %}e{% endif %}</h2>
</div>
{% with user=user.union %}
<div class="part general">
<h3>Identité</h3>
<a class="edit-button" href="{{ eservices_url }}mise-a-jour-d-identite/?session_var_rsu_id={{ user.id }}">Mise à jour didentité</a>
<div class="grid-1-3"><p>Nom de naissance</p></div>
<div class="grid-2-3"><p>{{ user.nom_de_naissance|default:"<em>inconnu</em>" }}</p></div>
{% if user.nom_d_usage %}
<div class="grid-1-3"><p>Nom dusage</p></div>
<div class="grid-2-3"><p>{{ user.nom_d_usage }}</p></div>
{% endif %}
<div class="grid-1-3"><p>Prénom</p></div>
<div class="grid-2-3"><p>{{ user.prenoms }}</p></div>
<div class="grid-1-3"><p>Date de naissance</p></div>
<div class="grid-2-3"><p>{{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"j F Y" }} ({{ user.age_label }})</p></div>
<div class="grid-1-3"><p>Sexe</p></div>
<div class="grid-2-3"><p>{{ user.genre|title }}</p></div>
<div class="newline"></div>
</div>
<div class="part contact">
<h3>Contact</h3>
<a class="edit-button" href="{{ eservices_url }}mise-a-jour-des-informations-de-contact/?session_var_rsu_id={{ user.id }}">Mise à jour des informations de contact</a>
{% for tel in user.telephones %}
<div class="grid-1-3"><p>Téléphone {{ tel.type }}</p></div>
<div class="grid-2-3"><p>{{ tel.numero }}</p></div>
{% endfor %}
<div class="grid-1-3"><p>Email</p></div>
<div class="grid-2-3"><p>{{ user.email|default:"inconnu" }}</p></div>
<div class="newline"></div>
</div>
{% endwith %}
<div class="part contact">
<h3>Type dunion</h3>
{% if user.union_statut == 'unionlibre' %}
<a class="edit-button" href="{{ eservices_url }}declarer-un-pacs-ou-un-mariage/">Déclarer un mariage ou un P.A.C.S.</a>
{% endif %}
<div class="grid-1-3"><p>Type dunion</p></div>
<div class="grid-2-3"><p>
{% if user.union_statut == "unionlibre" %}Union libre{% else %}Mariage ou P.A.C.S.{% endif %}
</p></div>
<div class="newline"></div>
</div>
{% endif %}
{% if user.enfants %}
<div class="part general" style="padding: 0;">
<h2>{% if user.enfants|length > 1%}Vos enfants{% else %}Votre enfant{% endif %}</h2>
</div>
{% for user in user.enfants|dictsort:"date_de_naissance" %}
<div class="part general" style="padding: 0;">
<h2 style="background: #E05E76; font-weight: normal;">
{% if user.prenoms == "A NAITRE" %}
Enfant dont la naissance doit être confirmée
{% else %}
{{ user.prenoms }}
{% endif %}
</h2>
</div>
<div class="part general">
<h3>Identité</h3>
{% if user.prenoms != "A NAITRE" %}
<a class="edit-button" href="{{ eservices_url }}mise-a-jour-d-identite/?session_var_rsu_id={{ user.id }}">Mise à jour didentité</a>
{% endif %}
<div class="grid-1-3"><p>Nom de naissance</p></div>
<div class="grid-2-3"><p>{{ user.nom_de_naissance|default:"<em>inconnu</em>" }}</p></div>
{% if user.nom_d_usage %}
<div class="grid-1-3"><p>Nom dusage</p></div>
<div class="grid-2-3"><p>{{ user.nom_d_usage }}</p></div>
{% endif %}
<div class="grid-1-3"><p>Prénom</p></div>
<div class="grid-2-3"><p>
{% if user.prenoms == "A NAITRE" %}
<em>Prénom à indiquer lors de la confirmation de naissance</em>
{% else %}
{{ user.prenoms }}
{% endif %}
</p></div>
<div class="grid-1-3"><p>Date de naissance</p></div>
<div class="grid-2-3"><p>{{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"j F Y" }} ({{ user.age_label }})</p></div>
<div class="grid-1-3"><p>Sexe</p></div>
<div class="grid-2-3"><p>
{% if user.genre == "homme" %}Garçon
{% elif user.genre == "femme" %}Fille
{% else %}Autre
{% endif %}
</p></div>
<div class="newline"></div>
</div>
{% if user.prenoms != "A NAITRE" %}
<div class="part contact">
<h3>Contact</h3>
{% if user.prenoms != "A NAITRE" %}
<a class="edit-button" href="{{ eservices_url }}mise-a-jour-des-informations-de-contact/?session_var_rsu_id={{ user.id }}">Mise à jour des informations de contact</a>
{% endif %}
{% for tel in user.telephones %}
<div class="grid-1-3"><p>Téléphone {{ tel.type }}</p></div>
<div class="grid-2-3"><p>{{ tel.numero }}</p></div>
{% endfor %}
<div class="grid-1-3"><p>Email</p></div>
<div class="grid-2-3"><p>{{ user.email|default:"inconnu" }}</p></div>
<div class="newline"></div>
</div>
{% endif %}{# a naitre = pas de contact #}
{% endfor %}
{% endif %}
{% endwith %}
{% endif %}

View File

@ -0,0 +1,52 @@
{% load combo %}
{% if json.data %}
{% with user=json.data %}
{% include "rsu/identite-mini.html" with user=user %}
{% if request.GET.rsu_adult %}
<p>
{% if not user.union %}
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/declaration-d-une-union-bo/?session_var_rsu_adult={{ request.GET.rsu_adult }}&session_var_rsu_spoose={{ user.id }}&cancelurl={{ portal_agent_url }}">Déclarer cette union</a>
{% else %}
<strong>Déjà en union</strong> avec
{{ user.union.nom_de_naissance }}
{% if user.union.nom_d_usage %}({{ user.union.nom_d_usage }}){% endif %}
{{ user.union.prenoms }} <a href="/?rsu_adult={{ user.union.id }}">#{{ user.union.id }}</a>
<br />
{% endif %}
<a class="mini-ts" href="?{% if request.GET.rsu_adult %}rsu_adult={{ request.GET.rsu_adult }}&{% endif %}{% if request.GET.rsu_child %}rsu_child={{ request.GET.rsu_child }}{% endif %}">Autre recherche</a>
</p>
{% endif %}
{% if user.enfants %}
<div class="newline grid-1-1">
<h3>Enfants</h3>
</div>
{% for user in user.enfants|dictsort:"date_de_naissance" %}
<div class="newline grid-1-1">
{% include "rsu/identite-mini.html" with user=user %}
</div>
{% endfor %}
{% endif %}
<div class="newline grid-1-1">
<p><!-- un peu d'espace -->&nbsp;</p>
</div>
<script>
$(function() {
$('div.searchcell.rsu-spoose').hide();
$('aside#sidebar div.rsu-child').hide();
});
</script>
{% endwith %}
{% else %}
<p>
Pour ajouter un conjoint à lindividu affiché ci-contre, utiliser la recherche ci-dessus.
</p>
{% endif %}

View File

@ -0,0 +1,3 @@
<div class="wcs-form-{{slug}}">
<a class="mini-ts" href="{{ eservices_url }}backoffice/submission/{{ slug }}/?session_var_rsu_adult={{ request.GET.rsu_adult }}&session_var_rsu_spoose={{ request.GET.rsu_spoose }}&session_var_rsu_child={{ request.GET.rsu_child }}&cancelurl={{ portal_agent_url }}?{{ request.META.QUERY_STRING|urlencode:"" }}">{{ title }}</a>
</div>

View File

@ -0,0 +1,28 @@
{% for adresse in adresses|dictsortreversed:"principale" %}
<table>
<tbody>
{% if adresse.principale %}<tr><td colspan="2">Adresse principale</td></tr>{% endif %}
<tr><td colspan="2"><strong>
{% if adresse.streetnumber %}{{ adresse.streetnumber }}{% endif %}
{% if adresse.streetnumberext %}{{ adresse.streetnumberext }}{% endif %}
{{ adresse.streetname }}
{% if adresse.streetmatriculation %}
</strong>
<small style="color: #656551; float: right;"> (code voie #{{ adresse.streetmatriculation }})</small>
<strong>
{% endif %}
{% if adresse.at %}<br />{{ adresse.at }}{% endif %}
{% if adresse.ext1 %}<br />{{ adresse.ext1 }}{% endif %}
{% if adresse.ext2 %}<br />{{ adresse.ext2 }}{% endif %}
<br />
{{ adresse.zipcode }} {{ adresse.city }}
{% if adresse.country != 'FR' %}({{ adresse.country }}){% endif %}
</strong>
{% if adresse.inseecode %}
<small style="color: #656551; float: right;"> (code ville #{{ adresse.inseecode }})</small>
{% endif %}
<br /><small style="color: #656551;"> [adresse #{{ adresse.id}}]</small>
</td></tr>
</tboby>
</table>
{% endfor %}

View File

@ -0,0 +1,10 @@
<table>
<tbody>
{% if email %}
<tr><td>Courriel :</td><td><strong>{{ email }}</strong></td></tr>
{% endif %}
{% for tel in telephones|dictsortreversed:"type" %}
<tr><td>Téléphone {{ tel.type }} :</td><td><strong>{{ tel.numero }}</strong></td></tr>
{% endfor %}
</tbody>
</table>

View File

@ -0,0 +1,8 @@
{% if statut_legal == "mineur" %}
{% if genre == "homme" %}garçon
{% elif genre == "femme" %}fille
{% else %}{{ genre }}
{% endif %}
{% else %}
{{ genre }}
{% endif %}

View File

@ -0,0 +1,16 @@
{% load combo %}
<table><tbody>
<tr><td colspan="2"><a href="{{ root }}?rsu_adult={{ user.id }}">
<strong>{{ user.nom_de_naissance }}
{% if user.nom_d_usage %}({{ user.nom_d_usage }}){% endif %}
</strong>
{{ user.prenoms }}
<small>#{{ user.id }}</small></a></td></tr>
<tr><td>Date de naissance :</td>
<td><strong>{{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"j F Y" }}</strong> ({{ user.age_label }})</td></tr>
<tr><td>Genre :</td>
<td><strong>{% include "rsu/genre.html" with genre=user.genre statut_legal=user.statut_legal %}</strong></td></tr>
{% if user.responsabilite_legale %}
<tr><td>Liaison de responsabilité :</td><td>{{ user.responsabilite_legale }}</td></tr>
{% endif %}
</tbody></table>

View File

@ -0,0 +1,19 @@
{% load combo %}
<table>
<tbody>
<tr><td>Nom de naissance :</td>
<td><strong>{{ user.nom_de_naissance }}</strong></td></tr>
<tr><td>Nom dusage :</td>
<td><strong>{{ user.nom_d_usage }}</strong></td></tr>
<tr><td>Prénoms :</td>
<td><strong>{{ user.prenoms }}</strong></td></tr>
<tr><td>Date de naissance :</td>
<td><strong>{{ user.date_de_naissance|strptime:"%Y-%m-%d"|date:"j F Y" }}</strong> ({{ user.age_label }})</td></tr>
{% if user.date_de_deces %}
<tr><td>Date de décès :</td>
<td><strong>{{ user.date_de_deces|strptime:"%Y-%m-%d"|date:"j F Y" }}</strong></td></tr>
{% endif %}
<tr><td>Genre :</td>
<td><strong>{% include "rsu/genre.html" with genre=user.genre statut_legal=user.statut_legal %}</strong></td></tr>
</tbody>
</table>

View File

@ -0,0 +1,4 @@
{% if union_statut == 'unionlibre' %}union libre
{% elif union_statut == 'pacs/mariage' %}mariage/PACS
{% else %}type dunion inconnu ({{ union_statut }})
{% endif %}

View File

@ -0,0 +1,22 @@
{% extends "theme.html" %}
{% block header-content %}
{% block nav %}{% endblock %}
{{ block.super }}
{% endblock %}
{% block after-header %}{% endblock %}
{% block content-pre %}
{% skeleton_extra_placeholder page_header %}
{% if custom_page_title != "None" %}
{% firstof custom_page_title page.title title as page_title %}
{% if page_title %}
<header class="theme-page-header">
<h1 class="theme-page-title">
{{ page_title }}
</h1>
</header>
{% endif %}
{% endif %}
{% end_skeleton_extra_placeholder %}
{% endblock %}

View File

@ -0,0 +1,4 @@
{% extends "wcs/base.html" %}
{# remove default form title (displayed via theme.html page_header) #}
{% block wcs-form-title %}{% endblock %}