|
|
|
@using Yavsc.Helpers
|
|
|
|
@using System.IO
|
|
|
|
@using System.Globalization
|
|
|
|
@model IBillable
|
|
|
|
@{
|
|
|
|
Layout = null;
|
|
|
|
var pro = ViewBag.PerformerProfile;
|
|
|
|
var from = ViewBag.Performer;
|
|
|
|
var to = ViewBag.Client;
|
|
|
|
var PostalAddress = ViewBag.ClientAddress;
|
|
|
|
var proaddr = ViewBag.PerformerOrganizationAddress;
|
|
|
|
var isestimate = !ViewBag.AsBill;
|
|
|
|
var prosign = new FileInfo($"{ViewBag.BillsDir}/sign-{ViewBag.BillingCode}-{Model.Id}.png");
|
|
|
|
var clisign = new FileInfo($"{ViewBag.BillsDir}/sign-{ViewBag.BillingCode}-{Model.Id}.png");
|
|
|
|
var activity = ViewBag.ActivityLabel;
|
|
|
|
var bill = Model.GetBillItems();
|
|
|
|
string validationDate = null ;
|
|
|
|
if (Model.ValidationDate.HasValue) {
|
|
|
|
validationDate = Model.ValidationDate.Value.ToString("dddd dd MMMM yyyy", CultureInfo.CreateSpecificCulture("fr-FR"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
\documentclass[french,11pt]{article}
|
|
|
|
\usepackage{eurosym}
|
|
|
|
\usepackage{textcomp}
|
|
|
|
\usepackage{babel}
|
|
|
|
\usepackage[T1]{fontenc}
|
|
|
|
\usepackage[utf8]{inputenc}
|
|
|
|
\usepackage[a4paper]{geometry}
|
|
|
|
\usepackage{units}
|
|
|
|
\usepackage{graphicx}
|
|
|
|
\usepackage{fancyhdr}
|
|
|
|
\usepackage{fp}
|
|
|
|
|
|
|
|
\def\TVA{20} % Taux de la TVA
|
|
|
|
|
|
|
|
\def\TotalHT{0}
|
|
|
|
\def\TotalTVA{0}
|
|
|
|
|
|
|
|
\newcommand{\AjouterService}[3]{% Arguments : Désignation, quantité, prix
|
|
|
|
\FPround{\prix}{#3}{2}
|
|
|
|
\FPeval{\montant}{#2 * #3}
|
|
|
|
\FPround{\montant}{\montant}{2}
|
|
|
|
\FPadd{\TotalHT}{\TotalHT}{\montant}
|
|
|
|
\eaddto\ListeProduits{#1 & \prix & #2 & \montant \cr}
|
|
|
|
}
|
|
|
|
|
|
|
|
\newcommand{\AfficheResultat}{%
|
|
|
|
\ListeProduits
|
|
|
|
\FPeval{\TotalTVA}{\TotalHT * \TVA / 100}
|
|
|
|
\FPadd{\TotalTTC}{\TotalHT}{\TotalTVA}
|
|
|
|
\FPround{\TotalHT}{\TotalHT}{2}
|
|
|
|
\FPround{\TotalTVA}{\TotalTVA}{2}
|
|
|
|
\FPround{\TotalTTC}{\TotalTTC}{2}
|
|
|
|
\global\let\TotalHT\TotalHT
|
|
|
|
\global\let\TotalTVA\TotalTVA
|
|
|
|
\global\let\TotalTTC\TotalTTC
|
|
|
|
\cr
|
|
|
|
\hline
|
|
|
|
\textbf{Total} & & & \TotalHT
|
|
|
|
}
|
|
|
|
|
|
|
|
\newcommand*\eaddto[2]{% version développée de \addto
|
|
|
|
\edef\tmp{#2}%
|
|
|
|
\expandafter\addto
|
|
|
|
\expandafter#1%
|
|
|
|
\expandafter{\tmp}%
|
|
|
|
}
|
|
|
|
|
|
|
|
\newcommand{\ListeProduits}{}
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%% A MODIFIER DANS LA FACTURE %%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
\def\FactureNum {@Model.Id.ToString()} % Numéro de facture
|
|
|
|
\def\FactureAcquittee {@(ViewBag.Acquitted?"oui":"non")} % Facture acquittée : oui/non
|
|
|
|
\def\FactureLieu {@proaddr} % Lieu de l'édition de la facture
|
|
|
|
\def\FactureObjet {@(new HtmlString(isestimate?"Devis":"Facture")) en @TeXHelpers.ToTeX(activity)} % Objet du document
|
|
|
|
% Description de la facture
|
|
|
|
\def\FactureDescr {
|
|
|
|
@TeXHelpers.ToTeX(Model.GetDescription())
|
|
|
|
}
|
|
|
|
|
|
|
|
% Infos Client
|
|
|
|
\def\ClientNom{@TeXHelpers.ToTeX(to.UserName)} % Nom du client
|
|
|
|
|
|
|
|
\def\ClientAdresse{
|
|
|
|
% Adresse du client
|
|
|
|
@PostalAddress @if (!string.IsNullOrWhiteSpace(to.PhoneNumber)) {<text>\\
|
|
|
|
@TeXHelpers.ToTeX(to.PhoneNumber)
|
|
|
|
</text>}\\
|
|
|
|
E-mail: @TeXHelpers.ToTeX(to.Email)
|
|
|
|
}
|
|
|
|
|
|
|
|
% Liste des produits facturés : Désignation, prix
|
|
|
|
@foreach (var line in bill) {
|
|
|
|
<text>\AjouterService{@TeXHelpers.ToTeXCell(line.Description)}{@line.Count}{@line.UnitaryCost.ToString("F2",CultureInfo.InvariantCulture)}
|
|
|
|
</text>}
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\geometry{verbose,tmargin=4em,bmargin=8em,lmargin=6em,rmargin=6em}
|
|
|
|
\setlength{\parindent}{0pt}
|
|
|
|
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
|
|
|
|
|
|
|
|
\thispagestyle{fancy}
|
|
|
|
\pagestyle{fancy}
|
|
|
|
\setlength{\parindent}{0pt}
|
|
|
|
|
|
|
|
\renewcommand{\headrulewidth}{0pt}
|
|
|
|
\cfoot{ @TeXHelpers.ToTeX(from.UserName) - @ViewBag.FooterPerformerOrganizationAddress \\
|
|
|
|
\small{ E-mail: @TeXHelpers.ToTeX(from.Email) @if (!string.IsNullOrWhiteSpace(from.PhoneNumber)) { <text> - Téléphone : @TeXHelpers.ToTeX(from.PhoneNumber) </text> }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
\begin{document}
|
|
|
|
|
|
|
|
% Logo de la société
|
|
|
|
@if (from.Avatar != null) {
|
|
|
|
<text>\includegraphics[height=60pt]{@(ViewBag.AvatarsDir)/@(from.UserName).png}
|
|
|
|
</text>
|
|
|
|
} else {
|
|
|
|
<text>%\includegraphics{logo.png}
|
|
|
|
</text>
|
|
|
|
}
|
|
|
|
% Nom et adresse de la société
|
|
|
|
@TeXHelpers.ToTeX(from.UserName) \\
|
|
|
|
@proaddr
|
|
|
|
|
|
|
|
@(isestimate?"Devis":"Facture") n\textdegree\FactureNum
|
|
|
|
|
|
|
|
|
|
|
|
{\addtolength{\leftskip}{10.5cm} %in ERT
|
|
|
|
\textbf{\ClientNom} \\
|
|
|
|
\ClientAdresse \\
|
|
|
|
|
|
|
|
} %in ERT
|
|
|
|
|
|
|
|
|
|
|
|
\hspace*{10.5cm}
|
|
|
|
\FactureLieu, le \today
|
|
|
|
|
|
|
|
~\\~\\
|
|
|
|
|
|
|
|
\textbf{Objet : \FactureObjet \\}
|
|
|
|
|
|
|
|
\textnormal{\FactureDescr}
|
|
|
|
|
|
|
|
~\\
|
|
|
|
|
|
|
|
\begin{center}
|
|
|
|
\begin{tabular}{lrrr}
|
|
|
|
\textbf{Désignation ~~~~~~} & \textbf{Prix unitaire} & \textbf{Quantité} & \textbf{Montant (\euro)} \\
|
|
|
|
\hline
|
|
|
|
\AfficheResultat{}
|
|
|
|
\end{tabular}
|
|
|
|
\end{center}
|
|
|
|
|
|
|
|
\begin{flushright}
|
|
|
|
\textit{Auto entreprise en franchise de TVA}\\
|
|
|
|
|
|
|
|
\end{flushright}
|
|
|
|
~\\
|
|
|
|
@if (ViewBag.AsBill) {
|
|
|
|
if (ViewBag.Acquitted) {
|
|
|
|
<text>
|
|
|
|
\ifthenelse{\equal{\FactureAcquittee}{oui}}{
|
|
|
|
Facture acquittée.
|
|
|
|
}
|
|
|
|
</text>
|
|
|
|
} else {
|
|
|
|
var bi = from.BankInfo;
|
|
|
|
if (bi==null){
|
|
|
|
<text>À régler sur site, en utilisant le paiment PayPal:\\
|
|
|
|
Le relevé d'identité bancaire de ce prestaire n'est pas renseigné.
|
|
|
|
</text>
|
|
|
|
} else {
|
|
|
|
<text>À régler par chèque ou par virement bancaire :
|
|
|
|
|
|
|
|
\begin{center}
|
|
|
|
\begin{tabular}{|c c c c|}
|
|
|
|
@if (!string.IsNullOrWhiteSpace(bi.BankCode) && !string.IsNullOrWhiteSpace(bi.WicketCode)
|
|
|
|
&& !string.IsNullOrWhiteSpace(bi.AccountNumber) ) {
|
|
|
|
<text>\hline \textbf{Code banque} & \textbf{Code guichet} & \textbf{N\textdegree de Compte} & \textbf{Clé RIB} \\
|
|
|
|
@bi.BankCode & @bi.WicketCode & @bi.AccountNumber & @bi.BankedKey \\
|
|
|
|
</text>
|
|
|
|
}
|
|
|
|
@if (!string.IsNullOrWhiteSpace(@bi.IBAN) && !string.IsNullOrWhiteSpace(@bi.BIC)) {
|
|
|
|
<text>
|
|
|
|
\hline \textbf{IBAN N\textdegree} & \multicolumn{3}{|l|}{ @bi.IBAN } \\
|
|
|
|
\hline \textbf{Code BIC} & \multicolumn{3}{|l|}{ @bi.BIC }
|
|
|
|
</text>
|
|
|
|
} \\
|
|
|
|
\hline
|
|
|
|
\end{tabular}
|
|
|
|
\end{center}</text>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@if (validationDate!=null) {
|
|
|
|
<text>
|
|
|
|
\begin{flushright}
|
|
|
|
@(new TeXString(isestimate?"Devis demandé le ":"Facture suite à la demande du ")+
|
|
|
|
TeXHelpers.ToTeX(validationDate))
|
|
|
|
\end{flushright}
|
|
|
|
@if (prosign.Exists) {
|
|
|
|
<text>
|
|
|
|
\begin{center}
|
|
|
|
\hspace{263pt}
|
|
|
|
\includegraphics[height=60pt]{@(ViewBag.BillsDir)/{ViewBag.BillingCode}-prosign-@(Model.Id).png}
|
|
|
|
\end{center}
|
|
|
|
</text>
|
|
|
|
}
|
|
|
|
|
|
|
|
@if (clisign.Exists) {
|
|
|
|
<text>
|
|
|
|
\begin{center}
|
|
|
|
\hspace{263pt}
|
|
|
|
\includegraphics[height=60pt]{@(ViewBag.BillsDir)/{ViewBag.BillingCode}-clisign-@(Model.Id).png}
|
|
|
|
\end{center}
|
|
|
|
</text>
|
|
|
|
}
|
|
|
|
|
|
|
|
</text>
|
|
|
|
}
|
|
|
|
\end{document}
|