Projet

Général

Profil

Télécharger (7,69 ko) Statistiques
| Branche: | Tag: | Révision:

root / facturier / templates / facturier / tipi.html @ f82ab4b8

1
{% extends 'base-cms.html' %}
2
{% load i18n facturier_tags %}
3

    
4
{% block breadcrumbs %}
5
<li><a href="/factures/">Mes factures</a></li>
6
<li class="separ">&nbsp;/&nbsp;</li>
7
<li class="last">Détails de la facture n°{{ invoice.id }}</li>
8
{% endblock %}
9

    
10
{% block sidebar %}
11
{{ block.super }}
12
{% if perms.facturier %}
13
<p>
14
  <em>Les informations ci-dessous sont visibles car vous avec
15
    les droits "staff" sur l'application. Un utilisateur habituel
16
    ne verra rien.</em>
17
</p>
18

    
19
<div class="blocProgram">
20
  <h2 class="title">Mode test</h2>
21
  <div class="rteContent">
22
    <p>
23
      En tant qu'utilisateur {{ request.user }} vous pouvez lancer un faux paiement (test)
24
      en cochant cette case :<br /><label><input type="checkbox" name="test" id="test" />
25
        <strong>appeler TIPI en mode test</strong></label>
26
    </p>
27
  </div>
28
  {% if user.is_superuser %}
29
  <h2 class="title">Infos techniques</h2>
30
  <div class="rteContent">
31
    <p>
32
      {% for k,v in invoice.items %}
33
      <strong>{{ k }}</strong>:&nbsp;{{ v }}<br />
34
      {% endfor %}
35
    </p>
36
  </div>
37
  {% endif %}
38
</div>
39

    
40
{% endif %}
41
{% endblock sidebar %}
42

    
43
{% block content %}
44
    <h1>Facture n° {{ invoice.id }}</h1>
45
    <div class="rteContent col">
46
      <div class="wrapSpecial">
47
    {% if invoice.paid_amount and invoice.total_amount != invoice.paid_amount %}
48
    <h2>Facture réglée partiellement</h2>
49
    {% endif %}
50
    <h2>Montant de la facture : {{ invoice.total_amount }} €</h2>
51
    <h2>Montant restant à régler : {{ invoice.amount }} €</h2>
52

    
53
    <p>Facture émise le
54
      {{ invoice.creation_date|date:"j F Y" }}
55
      {% if invoice.prelevement_automatique %}
56
      <br />
57
      Prélèvement automatique
58
      {% if invoice.amount %}
59
                              prévu le {{ invoice.expiration_date|date:"j F Y" }}
60
                              {% else %}
61
                              effectué le {{ invoice.paid_date|date:"j F Y" }}
62
                              {% endif %}
63
                              {% endif %}
64
                              </p>
65

    
66
    <h2>Détails de la facture</h2>
67

    
68
    <p id="download">
69
      {% if invoice.download_url %}
70
      <a href="{{ invoice.download_url }}#{{invoice.id}}.pdf"
71
         title="facture_{{ invoice.id }}.pdf"
72
         download="facture_{{ invoice.id }}.pdf"
73
         target="_blank"
74
         class="download">Télécharger la version PDF complète de la facture</a>
75
      {% else %}
76
      {% if user.is_authenticated %}
77
      Cette facture n’est pas accessible en ligne.
78
      {% else %}
79
      Pour voir les détails de cette facture, vous devez vous
80
      connecter à votre compte citoyen. Sans être connecté,
81
      vous pouvez uniquement la payer en ligne.
82
      {% endif %}
83
      {% endif %}
84
    </p>
85

    
86
    <h2>Paiement en ligne</h2>
87

    
88
    {% if invoice.prelevement_automatique %}
89
    <p>Facture en prélévement automatique, vous ne pouvez pas la payer en ligne.</p>
90

    
91
    {% elif invoice.paid %}
92
    <p>
93
      Cette facture a été réglée
94
      {% if invoice.paid_date %}le {{ invoice.paid_date|date:"j F Y" }}
95
      {% elif invoice.tipi_paid_date %} le {{ invoice.tipi_paid_date|date:"j F Y" }} {% endif %}
96
    </p>
97

    
98
    {% elif invoice.expired %}
99
    <p>
100
      {% if invoice.date_passage_perception %}
101
      Cette facture est passée en perception : vous ne pouvez pas la payer en
102
      ligne
103
      {% else %}
104
      Cette facture passera prochainement en perception &nbsp;:
105
      vous ne pouvez plus la payer en ligne.
106
      {% endif %}
107
    </p>
108

    
109
    {% elif invoice.amount|decimal < 1.0 %}
110
                                     <p>
111
                                       Le montant de cette facture est inférieur à 1 € (un euro), vous ne
112
                                       pouvez pas la payer en ligne. Les lieux de paiement sont mentionnés
113
                                       dans votre facture.
114
                                     </p>
115
    <p>
116
      Il s'agit d'une contrainte imposée par le système de paiement
117
      «TIPI» de la Direction Générale des Finances Publiques.
118
    </p>
119

    
120
    {% else %}
121

    
122
    <p>
123
      Si vous désirez régler cette facture en ligne, indiquez d'abord votre
124
      adresse mail ci-dessous, puis cliquez sur le bouton «régler en ligne».
125
    </p>
126
    <p>
127
      <label>Votre adresse mail :</label>
128
      <input type="email" name="email" id="email" placeholder="nom@domaine.fr" 
129
             {% if request.user.email %}
130
             value="{{ request.user.email }}"
131
             {% else %}
132
             placeholder="nom@domaine.fr"
133
             {% endif %}
134
             />
135
      <span id="error" style="display: none; color: red;">
136
        Adresse mail invalide ! Vous devez indiquer votre adresse mail correcte
137
        pour payer.
138
      </span>
139
    </p>
140

    
141
    <div id="pay">
142
      <p>
143
        <button style="font-size: 1.2em;" onclick="tipi()">Régler cette facture en ligne</button>
144
      </p>
145
      <p>
146
        En cliquant sur ce bouton, vous allez être redirigé vers le site TIPI
147
        de la Direction générale des Finances publiques (DGFiP), qui vous permettra de
148
        régler cette facture.
149
      </p>
150
      <p>
151
        <strong>Attention : le système de paiement va s'ouvrir dans une fenêtre «popup»&nbsp;:
152
          avant de cliquer, veillez à désactiver tout bloqueur de fenêtre publicitaire
153
          (système «anti-pop-up»).</strong>
154
      </p>
155
    </div>
156
    <div id="pay-open" style="display: none;">
157
      <p>
158
        Vous avez cliqué sur le bouton de paiement. Si la fenêtre de paiement
159
        n'apparait pas, vérifiez qu'elle n'est pas bloquée par un système
160
        «anti-publicité» ou tout autre système «anti-pop-up».
161
      </p>
162
    </div>
163
    <div id="pay-close" style="display: none;">
164
      <p>
165
        Vous venez de fermer la fenêtre du paiement.
166
        La ville est désormais en attente de
167
        validation du paiement de la part de la DGFiP.
168
      </p>
169
      <p>
170
        Note : si vous n'avez pas réussi à effectuer le paiement ou si vous avez
171
        fermé la fenêtre avant de le terminer, vous pouvez
172
        <a href="#" onclick="tipi()">relancer le paiement</a>.
173
      </p>
174
    </div>
175

    
176
<script>
177
  var popup;
178
  var timer;
179

    
180
  var error = document.getElementById('error');
181
  var pay = document.getElementById('pay');
182
  var pay_open = document.getElementById('pay-open');
183
  var pay_close = document.getElementById('pay-close');
184

    
185
  function validateEmail(email) {
186
  var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
187
      return re.test(email);
188
      }
189

    
190
      function tipi() {
191
      var email = document.getElementById('email');
192
      var test = document.getElementById('test');
193

    
194
      pay_close.style.display='none';
195

    
196
      var url = '{{ invoice.url|safe }}';
197
      if (url.indexOf('?') == -1) {
198
      url = url + '?';
199
      } else {
200
      url = url + '&';
201
      }
202

    
203
      if (validateEmail(email.value)) {
204
      url +='email=' + email.value;
205
      error.style.display='none';
206
      } else {
207
      error.style.display='block';
208
      return false;
209
      }
210

    
211
      if (test)
212
      if (test.checked)
213
      url += '&saisie=T';
214

    
215
      pay.innerHTML = '<p><strong>Paiement en cours.</strong></p>';
216
      pay_open.style.display='block';
217

    
218
      popup = window.open(url, 'tipi', 'height=800, width=900, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, directories=no, status=no');
219
      timer = setInterval(checkChild, 500);
220
      return false;
221
      }
222

    
223
      function checkChild() {
224
      if (popup.closed) {
225
      pay_open.style.display='none';
226
      pay_close.style.display='block';
227
      document.getElementById('pay').innerHTML = '<p><strong>Fenêtre de paiement fermée.</strong></p>';
228
      clearInterval(timer);
229
      }
230
      }
231

    
232
</script>
233

    
234
{% endif %}
235
  </div>
236
</div>
237
{% endblock %}
(2-2/3)