Browse Source

Improve PDF style and cleanup HTML markup.

opi 8 years ago
parent
commit
5a1d088ab5
1 changed files with 198 additions and 163 deletions
  1. 198 163
      coin/billing/templates/billing/invoice_pdf.html

+ 198 - 163
coin/billing/templates/billing/invoice_pdf.html

@@ -1,170 +1,205 @@
 {% load static isptags %}
 <html>
-	<head>
-		<title>Facture N°{{ invoice.number }}</title>
-
-		<style>
-        @page {
-          margin: 0; padding: 40pt;
-        }
-
-        header {
-          position: fixed;
-          top: 0;
-          right: 0;
-          width: 100%;
-        }
-        header table {
-          width: 100%;
-        }
-
-        aside {
-          margin-top: 60pt;
-        }
-
-        h1 {
-          font-size: 12pt;
-        }
-
-        header img {
-          height: 50pt;
-        }
-
-        header td {
-          width: 50%;
-        }
-
-        footer {
-          position: fixed;
-          bottom: 0;
-        }
-
-        footer img {
-          height: 20pt;
-        }
-        html {
-          box-sizing: border-box;
-        }
-        *, *:before, *:after {
-          box-sizing: inherit;
-        }
-
-		    body {
-		  font-size: 9pt;
-          font-family: sans-serif;
-		    }
-		    #coordonnees_isp {
-		    	font-size:9pt;
-		    }
-		    #coordonnees_client {
-		    	vertical-align: top;
-		    }
-        table {
-          border-collapse: collapse;
-        }
-		    table#details {
-		    	width: 100%;
-		    }
-	    th.cell {border:0px;}
-		    .cell.result {border:0px; font-weight: bold}
-		    .cell { padding:2pt; border:1px solid #DDD; }
-		    .cell.label { width: 73%;}
-		.cell.quantity,
-        .cell.quantity,
-        .cell.total {width: 9%;}
-
-		    .period {color:#888;}
-
-		    #paiements {
-		    	background-color:#EEE;
-		    	padding:5pt;
-		    	font-size:80%;
-		    }
-		    #page_number {
-		    	float:right;
-		    }
-		</style>
-
-	</head>
+<head>
+  <title>Facture N°{{ invoice.number }}</title>
+
+  <style>
+  @page {
+    margin: 0; padding: 40pt;
+  }
+
+  html {
+    box-sizing: border-box;
+  }
+  *, *:before, *:after {
+    box-sizing: inherit;
+  }
+
+  body {
+    font-size: 9pt;
+    font-family: sans-serif;
+    color: #111;
+    padding: 0;
+  }
+  a {
+    color: #111;
+    text-decoration: none;
+  }
+
+  p {
+    margin: 0;
+  }
+  p + p {
+    margin-top: 10pt;
+  }
+  table {
+    border-collapse: collapse;
+    width: 100%;
+    margin: 40pt 0;
+  }
+
+  h1 {
+    font-size: 12pt;
+  }
+
+  header {
+    margin: 0 0 60pt 0;
+  }
+
+  header .logo {
+    height: 35pt;
+    margin: 0 auto 20pt;
+  }
+
+  footer {
+    position: fixed;
+    bottom: 0;
+    width: 100%;
+  }
+
+  footer .logo {
+    height: 20pt;
+  }
+
+  #coordonnees {}
+
+  #coordonnees td {
+    width: 50%;
+    vertical-align: top;
+  }
+
+  #details {}
+
+  #details th,
+  #details td {
+    padding: 5pt;
+    border:1px solid #ddd;
+  }
+  #details th.cell--empty,
+  #details td.cell--empty {border: 0;}
+
+  /* details cell layout */
+  .cell-label {width: 70%;}
+  .cell-quantity {width: 5%;}
+  .cell-amount {width: 10%;}
+  .cell-total {width: 15%;}
+
+  /* details cell style */
+  .cell-result {
+    font-weight: bold;
+  }
+  .cell-quantity {
+    text-align: center;
+  }
+  .cell--money {
+    text-align: right;
+  }
+
+  .cell-label p + p {
+    margin-top: 5pt;
+  }
+  .period {
+    color:#888;
+  }
+
+  #paiements {
+    margin-top: 40pt;
+    background-color: #f0f0f0;
+    padding: 10pt;
+    font-size: x-small;
+  }
+
+  footer {
+    font-size: xx-small;
+  }
+  .pagination {
+    float: right;
+  }
+  </style>
+</head>
 <body>
+
   <header>
-    <table>
-    <tr>
-				<td><img id="logo" src="{{ branding.logoURL }}" height="70" /></td>
-				<td><h1>Facture N°{{ invoice.number }}</h1>
-					Le {{ invoice.date }}</td>
-			</tr>
-		</table>
+    <img class="logo" src="{{ branding.logoURL }}" />
+    <h1>Facture N°{{ invoice.number }}</h1>
+    <p>Le {{ invoice.date }}</p>
   </header>
-  <aside>
-	<table>
-		<tr>
-			<td id="coordonnees_isp">
-				<p>
-                {% multiline_isp_addr branding %}
-				<p>{{ branding.email }}<br/>
-				<a href="{{ branding.website }}">{{ branding.website }}</a><br />
-				{{ branding.phone_number }}
-				</p>
-			</td>
-			<td id="coordonnees_client">
-				<strong>Facturé à :</strong><br/>
-                {% with member=invoice.member %}
-                    {{ member.last_name }} {{ member.first_name }}<br />
-                    {% if member.organization_name != "" %}{{ member.organization_name }}<br />{% endif %}
-                    {% if member.address %}{{member.address}}<br />{% endif %}
-                    {% if member.postal_code and member.city %}
-                        {{ member.postal_code }} {{ member.city }}
-                    {% endif %}
-                {% endwith %}
-			</td>
-		</tr>
-	</table>
-    </aside>
-
-	<hr />
-	Facture N°{{ invoice.number }}
-
-	<table id="details" repeat="1">
-		<thead>
-			<tr>
-				<th class="cell label"></th>
-				<th class="cell quantity">Quantité</th>
-				<th class="cell amount">PU</th>
-				<th class="cell total">Total</th>
-			</tr>
-		</thead>
-		<tbody>
-			{% for detail in invoice.details.all %}
-			<tr>
-				<td class="cell label">{{ detail.label }}
-					{% if detail.period_from and detail.period_to %}<br/><span class="period">Pour la période du {{ detail.period_from }} au {{ detail.period_to }}{% endif %}</span></td>
-				<td class="cell quantity">{{ detail.quantity }}</td>
-				<td class="cell amount">{{ detail.amount }}€</td>
-				<td class="cell total">{{ detail.total }}€</td>
-			</tr>
-			{% endfor %}
-			<tr>
-				<td class="cell result"></td>
-				<td class="cell result total_ttc" colspan="2">Total TTC</td>
-				<td class="cell result invoice_amount">{{ invoice.amount }}€</td>
-			</tr>
-		</tbody>
-	</table>
-	<div id="paiements">
-        {% include "billing/payment_howto.html" %}
-	</div>
-	<footer>
-		<hr />
-		<table>
-			<tr>
-				<td width="50"><img id="logo" src="{{ branding.logoURL }}" height="20" /></td>
-				<td>{{ branding.shortname|upper }}, association loi de 1901 à but non lucratif - SIRET : {{ branding.registeredoffice.siret }}</td>
-				<td width="20"><pdf:pagenumber>
-					/<pdf:pagecount>
-				</td>
-			</tr>
-		</table>
-	</footer>
+
+  <table id="coordonnees">
+    <tr>
+      <td id="coordonnees_isp">
+        <p>
+        {% multiline_isp_addr branding %}
+        </p>
+        <p>
+        <a href="mailto:{{ branding.email }}">{{ branding.email }}</a><br/>
+        <a href="{{ branding.website }}">{{ branding.website }}</a><br />
+        {{ branding.phone_number }}
+        </p>
+      </td>
+      <td id="coordonnees_client">
+        <p>
+        <strong>Facturé à :</strong><br/>
+        {% with member=invoice.member %}
+        {{ member.last_name }} {{ member.first_name }}<br />
+        {% if member.organization_name != "" %}{{ member.organization_name }}<br />{% endif %}
+        {% if member.address %}{{member.address}}<br />{% endif %}
+        {% if member.postal_code and member.city %}
+        {{ member.postal_code }} {{ member.city }}
+        {% endif %}
+        {% endwith %}
+        </p>
+      </td>
+    </tr>
+  </table>
+
+  <table id="details" repeat="1">
+    <thead>
+      <tr>
+        <th class="cell-label cell--empty"></th>
+        <th class="cell-quantity">Quantité</th>
+        <th class="cell-amount cell--money">PU</th>
+        <th class="cell-total cell--money">Total</th>
+      </tr>
+    </thead>
+    <tbody>
+      {% for detail in invoice.details.all %}
+      <tr>
+        <td class="cell-label">
+          <p>
+          {{ detail.label }}
+          {% if detail.offersubscription %}
+            <br/>
+            <span class="subscription">{{ detail.offersubscription.offer }}
+            {% if detail.offersubscription.offer.reference %} ({{ detail.offersubscription.get_subscription_reference }}){% endif %}
+            </span>
+          {% endif %}
+          </p>
+          {% if detail.period_from and detail.period_to %}
+          <p class="period">Pour la période du {{ detail.period_from }} au {{ detail.period_to }}</p>
+          {% endif %}
+        </td>
+        <td class="cell-quantity">{{ detail.quantity }}</td>
+        <td class="cell-amount cell--money">{{ detail.amount }}€</td>
+        <td class="cell-total cell--money">{{ detail.total }}€</td>
+      </tr>
+      {% endfor %}
+      <tr>
+        <td class="cell-result cell--empty"></td>
+        <td class="cell-result result-label" colspan="2">Total TTC</td>
+        <td class="cell-result result-total cell--money">{{ invoice.amount }}€</td>
+      </tr>
+    </tbody>
+  </table>
+
+  <div id="paiements">
+  {% include "billing/payment_howto.html" %}
+  </div>
+
+  <footer>
+    <img class="logo" src="{{ branding.logoURL }}" />
+    <p class="pagination"><pdf:pagenumber>/<pdf:pagecount></p>
+    <p>{{ branding.shortname|upper }}, association loi de 1901 à but non lucratif - SIRET : {{ branding.registeredoffice.siret }}</p>
+  </footer>
 </body>
 </html>