Purpose
Purpose of this article is to describe how to setup and send system output (tickets and invoices) which are in accordance with French regulation.
Tickets
When a POS transaction is performed in MXTS Front Office Manager, the receipt printer is automatically triggered once the payment is processed. The receipt cannot be reprinted.
The content of the receipt is configurable by Maxxton to our clients liking, to hold for instance text as 'thank you for your purchase'. To comply with French regulation, it is important the cash receipt holds the following tags which fetch data dynamically from the database:
...
Tag
...
Purpose
...
$document_id
...
Shows sequential document number on ticket
...
$document_type
...
Shows the document type. I.e. 'TICKET' (cash register sales) or 'INVOICE' (checked_out reservations)
...
$operation_type
...
Shows operation type on ticket. I.e. 'SALE' for positive transaction, 'REFUND' for negative transaction.
...
$company_details
...
Shows legal entity details of the company the ticket is issued by
...
$signature
...
Shows the signature extract on the ticket (3rd, 7th, 13th and 19th position of the signature)
...
$reservation_bill_lines
...
Shows transaction details
...
$employee_name
...
Seller name
...
$employee_id
...
Objectif
Le but de cet article est de décrire comment configurer et envoyer les sorties du système (tickets et factures) qui sont conformes à la réglementation française.
Tickets
Lorsqu'une transaction POS est effectuée dans MXTS Front Office Manager, l'imprimante de reçus est automatiquement déclenchée une fois le paiement traité. Le reçu ne peut pas être réimprimé.
Le contenu du reçu est configurable par Maxxton au gré de nos clients, pour contenir par exemple le texte "merci pour votre achat". Pour se conformer à la réglementation française, il est important que le ticket de caisse contienne les balises suivantes qui récupèrent les données dynamiquement depuis la base de données :
Tag | Objectif |
---|
$document_id | Affiche le numéro séquentiel du document sur le ticket |
$document_type | Indique le type de document. Par exemple, 'TICKET' (ventes en caisse) ou 'INVOICE' (réservations checked_out). |
$operation_type | Indique le type d'opération sur le ticket. Par exemple, 'SALE' pour une transaction positive, 'REFUND' pour une transaction négative. |
$company_details | Indique les détails de l'entité juridique de la société qui a émis le ticket. |
$signature | Affiche l'extrait de signature sur le billet (3ème, 7ème, 13ème et 19ème position de la signature). |
$nf525_version | NF525 version |
$reservation_bill_lines | Affiche les détails de la transaction |
$employee_name | Nom du vendeur |
$employee_id | Code du vendeur |
$bill_line_resource_count |
Number of bill lines for the Nombre de lignes de facturation pour le ticket |
$reservation_bill_lines_with_quantity |
Bill line data including quantity and unit price incl. TVADonnées de la ligne de facture, y compris la quantité et le prix unitaire, TVA comprise. |
$nf525ReservationTaxList with child tags |
Display Affichage du montant total du ticket |
amount including TVA and total ticket amount excluding TVA, TVA comprise, et du montant total du ticket, TVA non comprise. |
$resourceTotalPerTaxList with child tags $tax_percentage $resource_total
|
Display total amount including Affichage du montant total incluant la TVA, |
per rateDefault template
Expand |
---|
title | Default ticket template |
---|
|
Nom du caissier : $employee_name ID du caissier : $employee_id Nombre de lignes : $bill_line_resource_count $separator $document_type $operation_type | B525/0420 -1 | $signature | 1.1$nf525_version $separator $company_details #if($has_customer) $customer_name $customer_address $customer_zipcode_city $separator #end #if($reservation_type == "c") $legal_name | au capital de $social_capital | Siège social $company_details $rcs_city_of_registration $rcs | SIRET: $siret | APE: $ape_code | Nr TVA intracommunautaire: $vat_number $separator Numéro de ticket : $document_id Numéro d'impression $no_of_prints #else Numéro de réservation : $reservation_number #if($reservation_type == "r") Hébergement : $object_names Arrivée : $arrival_date $checkin_time Départ : $departure_date $checkout_time #end #end $separator $reservation_bill_lines_with_quantity $separator $total_resource_amount_incl_tax $total_resource_amount_excl_tax $resourceAmountInclPerTax $resourceAmountExclPerTax $separator
|
Invoices
...
Factures
Lorsqu'une réservation est mise à jour en statut check_out, the service is delivered and therefore the revenue is final. Updating a reservation to status checked_out is the trigger to store the document type and sequential ID, which can then be displayed on the invoice. The invoice should therefore always be sent once the service is delivered, i.e. when the reservation is updated to checked_out.
The content of invoice is configurable by Maxxton to our clients liking, to hold client specific text and logo's. To comply with French regulation, it is important the invoice template holds the following tags which fetch data dynamically from the database:
...
Tag
...
Purpose
...
$document_id
...
Shows sequential document number on invoice
...
$document_type
...
Shows document type on invoice. This is always 'INVOICE'. (As for cancelled bookings also costs can apply which are invoiced to customers)
...
$reservation_resort
...
Display holiday resort name
...
$reservation_resortaddress1
...
Display holiday resort address
...
$reservation_resortzipcode
...
Display holiday resort zipcode
...
$reservation_resort_country
...
le service est délivré et le revenu est donc définitif. La mise à jour d'une réservation au statut checked_out est le déclencheur pour enregistrer le type de document et l'ID séquentiel, qui peuvent ensuite être affichés sur la facture. La facture doit donc toujours être envoyée une fois le service fourni, c'est-à-dire lorsque la réservation est mise à jour en check_out.
Le contenu de la facture peut être configuré par Maxxton à la convenance de nos clients, pour contenir du texte et des logos spécifiques au client. Pour se conformer à la réglementation française, il est important que le modèle de facture contienne les balises suivantes qui récupèrent les données dynamiquement depuis la base de données :
Tag | Objectif |
---|
$document_id | Affiche le numéro séquentiel du document sur la facture |
$document_type | Indique le type de document sur la facture. Il s'agit toujours de "FACTURE". (Comme pour les réservations annulées, des frais peuvent également être appliqués et sont facturés aux clients). |
$reservation_resort | Afficher le nom du centre de vacances |
$reservation_resortaddress1 | Affichage de l'adresse du lieu de villégiature |
$reservation_resortzipcode | Afficher le code postal du lieu de villégiature |
$reservation_resort_country | Afficher le pays du lieu de villégiature |
$resort_siret (dynamic field) |
Display holiday resort SIRET numberAffichage du numéro SIRET du centre de vacances |
$customer.firstname |
Customer firstnamePrénom du client |
$customer.lastname |
Customer lastnameNom du client |
$customer.address.address1 |
Customer addressAdresse du client |
$customer.address.housenumber |
Customer housenumberNuméro d'habitation du client |
$customer.address.housenumberSuffix |
Customer housenumber suffixSuffixe du numéro d'habitation du client |
$customer.address.zipcode |
Customer zipcodeCode postal du client |
$customer.address.city |
Customer cityVille du client |
$customer.address.countryName |
Customer addressAdresse du client |
$customer.companyName |
Company name (if applicableNom de la société (le cas échéant) |
$reservation_bill_lines |
Shows invoice detailsAffiche les détails de la facture |
$bill_value_excl_vat |
Show unit price excluding Afficher le prix unitaire hors TVA |
$bill_total_vat |
Show Affichage du montant total de la TVA |
amountShows the signature extract on the Affiche l'extrait de signature sur le ticket ( |
3rd 7th, 13th and 19th position of the signature)$company_details | Shows legal entity details of the company the invoice is issued by |
Default template
Customer_bill
Main templates
...
title | NF_invoice_email (customer) |
---|
...
7ème, 13ème et 19ème position de la signature) |
$admin_organisation_legal_name | Nom de l'entreprise émettrice |
$admin_organisation_social_capital | Capital social de l'émetteur |
$reservation_resortaddress1 | Adresse de l'émetteur |
$reservation_resortzipcode | Code postal de l'émetteur |
$reservation_resortcity | Ville de l'émetteur |
$reservation_resort_country | Pays de l'émetteur |
$admin_organisation_rcs_city_of_registration | Ville d'enregistrement RCS de l'émetteur |
$admin_organisation_rcs | Numéro RCS de l'émetteur |
$admin_organisation_siret | Siret de l'émetteur |
$admin_organisation_ape_code | Code APE de l'émetteur |
$admin_organisation_vat_number | Numéro de TVA de l'émetteur |
Default template
Customer_bill
Main templates
Expand |
---|
title | NF_invoice_email (customer) |
---|
|
<table width="650" cellpadding="0" cellspacing="0" border="0" > <tbody style="color:#333; text-decoration:none; font:12px Arial, Helvetica, sans-serif"> <tr> <td> Dear client, </td> </tr> <tr> <td> </td> </tr> <tr> <td> Please find the invoice of your holiday attached. </td> </tr> <tr> <td> </td> </tr> <tr> <td> Best regards, </td> </tr> <tr> <td> </td> </tr> <tr> <td> Client team<br/> </td> </tr> </tbody> </table>
|
...
Expand |
---|
title | NF_invoice_PDF (customer) |
---|
|
#foreach($acco in $accommodationList) #set($intime = $acco.accommodation_checkintime ) #set($outtime = $acco.accommodation_checkouttime ) #end #foreach( $bill in $groupedBillList ) #if($bill.bill_resource_type == "accommodationtype") #set($acco_total = $bill.bill_total ) #end #if($bill.bill_resource_type == "special") #set($acco_special = $bill.bill_type ) #set($acco_total_special = $bill.bill_total ) #set($chk = 1) #end #if($bill.bill_linetype == "70") #set($acco_all_total = $bill.bill_total) #end #end #foreach( $bill in $billList ) #if($bill.bill_linetype == "70") #set($all_total = $bill.bill_total) #end #end #* Bill total excluding resource type special *# #set($billtotal= 0) #foreach($bill in $billList ) #if #if($bill.bill_payer_type == "c") #if($bill.bill_linetype == "10") #if #if($bill.bill_resource_type !="special") #set($bill_total = $bill.bill_total.replaceAll(",", "")) #set($billtotal= #set($billtotal= $billtotal + $convert.toNumber($bill_total)) #end #end #end #end #set($billtotal = $billtotal + "") Code Block |
---|
#end
#end
#end
#end
#set($billtotal = $billtotal + "")
#set($final="") |
#if($billtotal.indexOf(',') != -1 || $billtotal.indexOf('.') != -1) |
#set($leftpart = $billtotal.substring(0,$billtotal.indexOf('.'))) |
#set($in = $billtotal.indexOf('.')+1) |
#set($rightpart = $billtotal.substring($in)) |
#else #set($leftpart = $billtotal) #end
#else
#set($leftpart = $billtotal)
#end
#if($leftpart.length() > | 3) 3)
#set($end = $leftpart.length() - | 4) 0) 0)
#set($range = [$end..$beg]) |
$range) 1) 1)
#set($final = $leftpart.substring(0,$j)+","+$leftpart.substring($j)) |
$final) 3) #end #end 3)
#end
#end
#if($rightpart.length() == | 0) 0)
#set($rightpart = "00") |
#elseif($rightpart.length()== | 1) 1)
#set($rightpart = $rightpart + "0") |
#end #set($final = $leftpart + "." + $rightpart) #
#end
#set($final = $leftpart + "." + $rightpart) |
#* Bill total excluding resource type special end *# #set #set($dueAmount= "") #foreach( $bill in $billList ) #if #if($bill.bill_payer_type == "c") #if ($bill.bill_linetype == "90") #set($billTotal= $convert.toNumber($bill.bill_total)) #if($billTotal > 0) #set($dueAmount= "true") #end #end #end #end <html> <head> <title></title> </head> <body style="padding-left:25px"> #if($environment == "") #else <span style="font-size:16px"><b>TEST ENVIRONMENT INVOICE</b></span> #end #foreach ($doc in $documentTagList) #if($convert.toNumber($doc.printed_count) > 1) <br/><br/> <b>Duplicate </b> #end #end <table width="625" border="0" cellspacing="0" cellpadding="0"> <tbody style="font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#3B3131; line-height:18px"> <tr> <td colspan="3" align="right" style="padding-right:10px"><img src="CUSTOMER LOGO" /> </td> </tr> <tr> <td width="10" > </td> <td> <table width="595" border="0" cellspacing="0" cellpadding="0"> <tbody Code Block |
---|
#if($billTotal > 0)
#set($dueAmount= "true")
#end
#end
#end |
#end Code Block |
---|
<table width="625" border="0" cellspacing="0" cellpadding="0">
<tbody style="font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#3B3131; line-height:18px">
<tr>
<td width="10" > </td>
<td>
<table width="595" border="0" cellspacing="0" cellpadding="0">
<tbody style="font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#3B3131; line-height:18px"> |
<tr> <td colspan="3"> <table width="595" border="0" cellspacing="0" cellpadding="0"> <tbody style="font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#3B3131; line-height:18px"> <tr> <td valign="top"> <b> $customer_title $customer_firstname $customer_middlename $customer_lastname </b><br/> $customer_housenumber $customer_address1<br/> $customer_zipcode $customer_city<br/> $customer_country<br/><br/><br/> #foreach ($doc in $documentTagList) #if( $doc.document_id != "") Invoice number: $doc.document_id<br/> #end #break #end Invoice Date: $current_date <br/> Reservation number: $reservation_reservationnumber<br/> </td> <td valign="top"> #if( $!paying_customer_company_name) $paying_customer_company_name #end </td> </tr> </tbody> </table> </td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3" style="padding-bottom:8px"><b>YOUR HOLIDAY DETAILS:</b></td> </tr> <tr> <td colspan="3"> <hr style="border-bottom:1px solid #e5e5e5" /></td> </tr> <tr> <td width="160" height="25" valign="top"><b>Village Name:</b></td> <td valign="top">$reservation_resortname </td> <td> </td> </tr> <tr> <td width="250" valign="top"><b>Unit Type:</b></td> <td valign="top"> <table width="400" border="0" cellspacing="0" cellpadding="0"> <tbody> #foreach($acco in $accommodationList) #if (!$acco.accommodation_is_imply) <tr> <td valign="top" height="25"> $acco.accommodation_name#if($acco.object_preference == "1"), $acco.accommodation_object #end <br/> </td> </tr> #set( $prevAcco = $acco.accommodation_object_forced ) #end #end </tbody> </table> </td> <td> </td> </tr> <tr> <td width="160" height="25" valign="top"><b>Passenger Information:</b></td> <td valign="top"> $reservation_numberofpersons, #foreach( $subject in $travelList ) #if( $subject.firstname != "" || $subject.lastname != "") $subject.firstname $subject.lastname, #end #end </td> <td> </td> </tr> <tr> <td width="160" height="25" valign="top"><b>Arrival date: </b></td> <td valign="top">$reservation_arrivaldate </td> <td> </td> </tr> <tr> <td width="160" height="25" valign="top"><b>Departure Date: </b></td> <td valign="top">$reservation_departuredate </td> <td> </td> </tr> <tr> <td colspan="3"> </td> </tr> #foreach($res in $resourceList) <tr> <td colspan="3" style="padding-bottom:10px"> $res.infotext </td> </tr> #end #foreach( $memo in $memoList ) <tr> <td colspan="3" style="padding-bottom:10px"> <b>$memo.content</b></td> </tr> #end <tr> <td colspan="3" style="padding-bottom:8px"><b>Invoice details:</b></td> </tr> <tr> <td colspan="3"> <hr style="border-bottom:1px solid #e5e5e5" /></td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3">${templateTool.parseTemplate(1254004)} #*VAT Bill Customer*#</td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"> ${templateTool.parseTemplate(1254003)} #*VAT Calculation*# </td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"> Siblu Europe Limited on the behalf of </td> </tr> <tr> <td colspan="3"> <hr style="border-bottom:1px solid #e5e5e5" /></td> </tr> <tr> <td colspan="3"> CUSTOMER AO DETAIL FIELDS </td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3" align="center"> #foreach ($doc in $documentTagList) $doc.document_type B525/0420 $doc.signature V1.1 #end </td> </tr> </tbody> </table> </td> <td width="10"> </td> </tr> </tbody> </table> </body> </html>
<tr>
<td> </td>
</tr>
<tr>
<td style="font-size: 35px;"><b>Facture</b></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td colspan="3">
<table width="595" border="0" cellspacing="0" cellpadding="0">
<tbody style="font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#3B3131; line-height:18px">
#set ( $currentDate = "$current_date")
<tr>
<td valign="top">
#if($customer_companyname !="")
$customer_companyname
#end
#if($customer_company_identification_number != "") $customer_company_identification_number #end
#if($customer_vat_number != "")$customer_vat_number #end <br/>
<b> $customer_title $customer_firstname $customer_middlename $customer_lastname </b><br/>
$customer_housenumber $customer_address1<br/>
$customer_zipcode $customer_city<br/>
$customer_country<br/><br/><br/>
#foreach ($doc in $documentTagList)
#if( $doc.document_id != "")
Numéro de facture: $doc.document_id<br/>
#end
#break
#end
Date de facturation: $dateFormatter.format("currentDate" , "dd-MM-yyyy") <br/>
Numéro de réservation: $reservation_reservationnumber<br/>
</td>
<td valign="top">
<!-- #if( $!paying_customer_company_name) $paying_customer_company_name #end -->
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3" style="padding-bottom:8px"><b>VOTRE SÉJOUR:</b></td>
</tr>
<tr>
<td colspan="3"> <hr style="border-bottom:1px solid #e5e5e5" /></td>
</tr>
<tr>
<td width="160" height="25" valign="top"><b>Nom du camping:</b></td>
<td valign="top">$reservation_resortname </td>
<td> </td>
</tr>
<tr>
<td width="250" valign="top"><b>Type d'hébergement:</b></td>
<td valign="top">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tbody>
#foreach($acco in $accommodationList)
#if (!$acco.accommodation_is_imply)
<tr>
<td valign="top" height="25"> $acco.accommodation_name#if($acco.object_preference == "1"), $acco.accommodation_object #end
<br/>
</td>
</tr>
#set( $prevAcco = $acco.accommodation_object_forced )
#end
#end
</tbody>
</table>
</td>
<td> </td>
</tr>
<tr>
<td width="160" height="25" valign="top"><b>Nombre et nom des participants:</b></td>
<td valign="top">
$reservation_numberofpersons,
#foreach( $subject in $travelList )
#if( $subject.firstname != "" || $subject.lastname != "")
$subject.firstname $subject.lastname,
#end
#end
</td>
<td> </td>
</tr>
<tr>
<td width="160" height="25" valign="top"><b>Date d'arrivée: </b></td>
<td valign="top">$reservation_arrivaldate
</td>
<td> </td>
</tr>
<tr>
<td width="160" height="25" valign="top"><b>Date de départ: </b></td>
<td valign="top">$reservation_departuredate
</td>
<td> </td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
#foreach($res in $resourceList)
<tr>
<td colspan="3" style="padding-bottom:10px"> $res.infotext </td>
</tr>
#end
#foreach( $memo in $memoList )
<tr>
<td colspan="3" style="padding-bottom:10px"> <b>$memo.content</b></td>
</tr>
#end
<tr>
<td colspan="3" style="padding-bottom:8px"><b>Détails des prestations:</b></td>
</tr>
<tr>
<td colspan="3"> <hr style="border-bottom:1px solid #e5e5e5" /></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3">
${templateTool.parseTemplate(210006)} #*VAT Bill Customer*#
</td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
#if($customer_companyname !="")
<tr>
<td colspan="3">
Article L441-6 du code de commerce : tout retard de paiement donnera lieu à l’application d’une pénalité égale à
trois fois le taux d’intérêt légal de l’année en cours et une indemnité forfaitaire pour frais de recouvrement de 40 €
</td>
</tr>
#end
<tr>
<td colspan="3" style="padding-bottom:8px"><b>Répartition de la TVA:</b></td>
</tr>
<tr>
<td colspan="3">
${templateTool.parseTemplate(210007)} #*VAT Calculation*#
</td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3">
#foreach ($doc in $documentTagList)
$admin_organisation_legal_name | au capital de $admin_organisation_social_capital | Siège social $reservation_resortaddress1 $reservation_resortzipcode $reservation_resortcity $reservation_resort_country
| $admin_organisation_rcs_city_of_registration $admin_organisation_rcs | SIRET: $admin_organisation_siret | APE: $admin_organisation_ape_code | N° TVA intracommunautaire: $admin_organisation_vat_number
#break
#end
</td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<td colspan="3">
</td>
<tr>
<td colspan="3" align="center">
#foreach ($doc in $documentTagList)
FACTURE B525/0420 $doc.signature V$nf525_version
#end
</td>
</tr>
</tbody>
</table>
</td>
<td width="10"> </td>
</tr>
</tbody>
</table> |
|
Subtemplates
Expand |
---|
|
<table width="625" border="0" cellspacing="0" cellpadding="0"> <tbody style="font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#3B3131; line-height:18px"> <tr> <td width="625" valign="top" style="font-size:0; line-height:0"> <table width="625" cellpadding="0" cellspacing="0" border="0"> <tbody style="font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#3B3131; line-height:18px"> <tr> <td width="250" style="color:#0078bf;"><strong>SPECIFICATION</strong></td> <td width="80" align="right"> </td> <td width="90" > </td> <td width="90" align="right">VAT % </td> <td width="110" align="right">Excl. VAT</td> <td width="100" align="right">VAT</td> <td width="180" align="right">Total incl. VAT</td> </tr> <tr> <td colspan="7" width="625" style="line-height:5px;border-top:1px solid #000000;"> </td> </tr> #set($total_AllExcl_BTW = 0 ) #set($total_BTW_Amount = 0) #set($billTotal_Amount = 0) #set($total_BTW_Amount_total = 0) #set($bill_Vat_ValueTotal= 0) #set($Final_BTW_Amount_total = 0) #set($exclTaxVal="") #foreach($bill in $billList ) #if($bill.bill_payer_type == "c") #if ($bill.bill_linetype !="-10" && $bill.bill_linetype != "0" && $bill.bill_linetype != "60" && $bill.bill_linetype != "40" && $bill.bill_linetype != "200" && $bill.bill_linetype != "20" && $bill.bill_linetype != "-20" && $bill.bill_linetype != "30" && $bill.bill_linetype != "80" && $bill.bill_linetype != "90" && $bill.bill_linetype != "70" ) <tr> <td width="90">$bill.bill_type </td> <td width="80" align="right">$bill.bill_quantity_multiplier X </td> <td width="90" align="right"> $reservation_dc_currency_symbol $bill.bill_value </td> <td width="90" align="right"> #if($bill.bill_vat_rate == "0.0" || $bill.bill_vat_rate == "0,0" || $bill.bill_vat_rate == "0,0" || $bill.bill_vat_rate == "") 0 #else $convert.toNumber($bill.bill_vat_rate) #end </td> <td width="110" align="right"> $reservation_dc_currency_symbol $bill.bill_total_excl_vat <!-- Logic Total Excl Tax--> #set($total_AllExcl_BTW =$convert.toDouble($total_AllExcl_BTW) + $convert.toDouble($bill.bill_total_excl_vat_without_format)) <!--End Logic Total Excl Tax--> </td> <td width="80" align="right"> #if($bill.bill_total_without_format != $bill.bill_total_excl_vat_without_format) #set($bill_Vat_Value = $convert.toDouble($bill.bill_total_without_format) - $convert.toDouble($bill.bill_total_excl_vat_without_format)) #set($exclTaxVal="$bill_Vat_Value") #if($exclTaxVal.contains("-")) #set( $totalVal = $number.currency($bill_Vat_Value).replace("$", "") ) $reservation_dc_currency_symbol -$totalVal.replace("(","").replace(")","") #else #set( $totalVal = $number.currency($bill_Vat_Value).replace("$", "") ) $reservation_dc_currency_symbol $totalVal #end <!--Logic BTW Bedrag--> #set($bill_Vat_ValueTotal = $convert.toDouble($bill.bill_total_without_format) - $convert.toDouble($bill.bill_total_excl_vat_without_format)) #set($total_BTW_Amount_total = $convert.toDouble($total_BTW_Amount_total) + $convert.toDouble($bill_Vat_ValueTotal)) #set( $total_BTW_Amount_total = $number.currency($total_BTW_Amount_total).replace("$", "") ) <!--End Logic BTW Bedrag--> #end </td> <td width="125" align="right"> $reservation_dc_currency_symbol $bill.bill_total <!-- Bill Total--> #set($billTotal_Amount = $convert.toDouble($billTotal_Amount) + $convert.toDouble($bill.bill_total_without_format )) <!-- End --> </td> </tr> #end #end #end <tr> <td colspan="7" width="625" style="line-height:5px;border-top:1px solid #000000;"> </td> </tr> <tr> <td width="200"><strong>Total</strong></td> <td width="40"> </td> <td width="90" > </td> <td width="90"> </td> <td width="110" align="right"> <!--$total_AllExcl_BTW--> $reservation_dc_currency_symbol $number.currency($total_AllExcl_BTW).replace("$", "") </td> <td width="80" align="right"> <!--$total_BTW_Amount_total --> $reservation_dc_currency_symbol $number.currency($total_BTW_Amount_total).replace("$", "") </td> <td width="125" align="right"> <!-- $billTotal_Amount --> $reservation_dc_currency_symbol $number.currency($billTotal_Amount).replace("$", "") </td> </tr> #foreach($bill in $billList ) #if($bill.bill_payer_type == "c") #if($bill.bill_linetype == "80") <tr> <td width="200">Paid</td> <td width="40"> </td> <td width="90" > </td> <td width="90"> </td> <td width="110"> </td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $bill.bill_total </td> </tr> #end #end #end #foreach($bill in $billList ) #if($bill.bill_payer_type == "c") #if($bill.bill_linetype == "90") <tr> <td width="200"> #if($convert.toDouble($bill.bill_total) < 0) To receive #else To be paid #end </td> <td width="40"> </td> <td width="90" > </td> <td width="90"> </td> <td width="110"> </td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $bill.bill_total </td> </tr> #end #end #end #foreach($bill in $billList ) #if($bill.bill_payer_type == "c") #if($bill.bill_linetype == "60") <tr> <td width="200"> $bill.bill_type </td> <td width="40"> </td> <td width="90" > </td> <td width="90"> </td> <td width="110"> </td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $bill.bill_total </td> </tr> #end #end #end <tr> <td colspan="7" style="background: #ffffff;" bgColor="#ffffff"> </td> </tr> #foreach( $receivedPayment in $receivedPaymentList) #if($receivedPayment.payerType == "c") #if( $receivedPayment.amount != "0,00" || $receivedPayment.amount != "0.00" ) #set($pay_date = $receivedPayment.statementDate) <tr> <td width="200"> Received payments </td> <td width="140" colspan="2">$receivedPayment.statementDate.split(',')[1]</td> <td width="200" colspan="2">$receivedPayment.bankname</td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $receivedPayment.amount </td> </tr> #end #end #end #set($dueamount= 0) #set($Duetotal= 0) #foreach( $term in $termList ) #if($term.term_payertype == "c") #if ($term.term_due != "0,00" && $term.term_due != "0.00") #if($reservation_language == "nl" || $reservation_language == "de" ) #set($term_value = $term.term_value.replaceAll("\.", "")) #set($term_value = $term_value.replaceAll(",", "\.")) #set($term_paid = $term.term_paid.replaceAll("\.", "")) #set($term_paid = $term_paid.replaceAll(",", "\.")) #elseif($reservation_language == "en") #set($term_value = $term.term_value.replaceAll(",", "")) #set($term_paid = $term.term_paid.replaceAll(",", "")) #end #set($Duetotal= $convert.toNumber($term_value) - $convert.toNumber($term_paid)) #set($dueamount= $math.roundTo(2, $Duetotal)) #set($finalDue = $numberFormatter.format($dueamount)) #if( $term.term_status == "o" || $term.term_status == "p" && $term.term_status =="p") <tr> <td width="200"> $term.term_name </td> <td width="140" colspan="2">$term.term_duedate.split(',')[1]</td> <td width="200" colspan="2"> </td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $term.term_due </td> </tr> #end #end #end #end </tbody> </table> </td> </tr> </tbody> </table>
|
...
Expand |
---|
title | NF_invoice_PDF (paying customer) |
---|
|
#foreach($acco in $accommodationList) #set($intime = $acco.accommodation_checkintime ) #set($outtime = $acco.accommodation_checkouttime ) #end
#foreach( $bill in $groupedBillList ) #if($bill.bill_resource_type == "accommodationtype") #set($acco_total = $bill.bill_total ) #end #if($bill.bill_resource_type == "special") #set($acco_special = $bill.bill_type ) #set($acco_total_special = $bill.bill_total ) #set($chk = 1) #end #if($bill.bill_linetype == "70") #set($acco_all_total = $bill.bill_total) #end #end #foreach( $bill in $billList ) #if($bill.bill_linetype == "70") #set($all_total = $bill.bill_total) #end #end #* Bill total excluding resource type special *# #set($billtotal= 0) #foreach($bill in $billList ) #if($bill.bill_payer_type == "p") #if($bill.bill_linetype == "10") #if($bill.bill_resource_type !="special") #set($bill_total = $bill.bill_total.replaceAll(",", "")) #set($billtotal= $billtotal + $convert.toNumber($bill_total)) #end #end #end #end #set($billtotal = $billtotal + "") #set($final="") #set($leftpart="") #set($rightpart="") #if($billtotal.indexOf(',') != -1 || $billtotal.indexOf('.') != -1) #set($leftpart = $billtotal.substring(0,$billtotal.indexOf('.'))) #set($in = $billtotal.indexOf('.')+1) #set($rightpart = $billtotal.substring($in)) #else #set($leftpart = $billtotal) #end #if($leftpart.length() > 3) #set($end = $leftpart.length() - 4) #set($beg = 0) #set($range = [$end..$beg]) #foreach($i in $range) #set($j = $i + 1) #set($final = $leftpart.substring(0,$j)+","+$leftpart.substring($j)) #set($leftpart = $final) #set($i = $i - 3) #end #end #if($rightpart.length() == 0) #set($rightpart = "00") #elseif($rightpart.length()== 1) #set($rightpart = $rightpart + "0") #end #set($final = $leftpart + "." + $rightpart) #* Bill total excluding resource type special end *# #set($dueAmount= "") #foreach( $bill in $billList ) #if($bill.bill_payer_type == "p") #if ($bill.bill_linetype == "90") #set($billTotal= $convert.toNumber($bill.bill_total)) #if($billTotal > 0) #set($dueAmount= "true") #end #end #end #end
<html> <head> <title></title> </head> <body style="padding-left:25px"> #if($environment == "") #else <span style="font-size:16px"><b>TEST ENVIRONMENT INVOICE</b></span> #end #foreach ($doc in $documentTagList) #if($convert.toNumber($doc.printed_count) > 1) <br/><br/> <b>Duplicate </b> #end #end <table width="625" border="0" cellspacing="0" cellpadding="0"> <tbody style="font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#3B3131; line-height:18px"> <tr> <td colspan="3" align="right" style="padding-right:10px"><img src="https://static.newyse.org/email/siblu/siblu-logo.jpg" /> </td> </tr> <tr> <td width="10" > </td> <td> <table width="595" border="0" cellspacing="0" cellpadding="0"> <tbody style="font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#3B3131; line-height:18px"> <tr> <td colspan="3"> <table width="595" border="0" cellspacing="0" cellpadding="0"> <tbody style="font-family:Arial, Helvetica, sans-serif; font-size:13px; color:#3B3131; line-height:18px"> <tr> <td valign="top"> <b>#if( $!paying_customer_company_name) $paying_customer_company_name #end #if($!paying_customer_vat_number) / $paying_customer_vat_number #end</b><br/> $paying_customer_title $paying_customer_firstname $paying_customer_middlename $paying_customer_lastname<br/> #if($paying_customer_address1 !="" || $paying_customer_housenumber !="" || $paying_customer_housenumbersuffix != "") $paying_customer_address1 $paying_customer_housenumber $paying_customer_housenumbersuffix <br/> #end #if( $paying_customer_zipcode !="" || $paying_customer_city != "") $paying_customer_zipcode $paying_customer_city <br/> #end #if($paying_customer_country != "") $paying_customer_country<br/> #end<br/> #foreach ($doc in $documentTagList) #if( $doc.document_id != "") Invoice number: $doc.document_id<br/> #end #break #end Invoice Date: $current_date <br/> Reservation number: $reservation_reservationnumber<br/> </td> <td valign="top"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3" style="padding-bottom:8px"><b>YOUR HOLIDAY DETAILS:</b></td> </tr> <tr> <td colspan="3"> <hr style="border-bottom:1px solid #e5e5e5" /></td> </tr> <tr> <td width="160" height="25" valign="top"><b>Village Name:</b></td> <td valign="top">$reservation_resortname </td> <td> </td> </tr> <tr> <td width="250" valign="top"><b>Unit Type:</b></td> <td valign="top"> <table width="400" border="0" cellspacing="0" cellpadding="0"> <tbody> #foreach($acco in $accommodationList) #if (!$acco.accommodation_is_imply) <tr> <td valign="top" height="25"> $acco.accommodation_name#if($acco.object_preference == "1"), $acco.accommodation_object #end <br/> </td> </tr> #set( $prevAcco = $acco.accommodation_object_forced ) #end #end </tbody> </table> </td> <td> </td> </tr> <tr> <td width="160" height="25" valign="top"><b>Passenger Information:</b></td> <td valign="top"> $reservation_numberofpersons, #foreach( $subject in $travelList ) #if( $subject.firstname != "" || $subject.lastname != "") $subject.firstname $subject.lastname, #end #end </td> <td> </td> </tr> <tr> <td width="160" height="25" valign="top"><b>Arrival date: </b></td> <td valign="top">$reservation_arrivaldate </td> <td> </td> </tr> <tr> <td width="160" height="25" valign="top"><b>Departure Date: </b></td> <td valign="top">$reservation_departuredate </td> <td> </td> </tr> <tr> <td colspan="3"> </td> </tr> #foreach($res in $resourceList) <tr> <td colspan="3" style="padding-bottom:10px"> $res.infotext </td> </tr> #end #foreach( $memo in $memoList ) <tr> <td colspan="3" style="padding-bottom:10px"> <b>$memo.content</b></td> </tr> #end <tr> <td colspan="3" style="padding-bottom:8px"><b>Invoice details:</b></td> </tr> <tr> <td colspan="3"> <hr style="border-bottom:1px solid #e5e5e5" /></td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"> ${templateTool.parseTemplate(1504003)} #*VAT Bill Paying Customer*# </td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"> ${templateTool.parseTemplate(1504004)} #*VAT Calculation Paying Customer*# </td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"> CLIENT on the behalf of </td> </tr> <tr> <td colspan="3"> <hr style="border-bottom:1px solid #e5e5e5" /></td> </tr> <tr> <td colspan="3"> CLIENT DETAILS </td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3" align="center"> #foreach ($doc in $documentTagList) $doc.document_type B525/0420-1 $doc.signature V1.1 #end </td> </tr> </tbody> </table> </td> <td width="10"> </td> </tr> </tbody> </table> </body> </html> |
Subtemplates
Expand |
---|
title | VAT Bill (paying customer) |
---|
|
<table width="625" border="0" cellspacing="0" cellpadding="0"> <tbody style="font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#3B3131; line-height:18px"> <tr> <td width="625" valign="top" style="font-size:0; line-height:0"> <table width="625" cellpadding="0" cellspacing="0" border="0"> <tbody style="font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#3B3131; line-height:18px"> <tr> <td width="250" style="color:#0078bf;"><strong>SPECIFICATION</strong></td> <td width="80" align="right"> </td> <td width="90" > </td> <td width="90" align="right">VAT % </td> <td width="110" align="right">Excl. VAT</td> <td width="100" align="right">VAT</td> <td width="180" align="right">Total incl. VAT</td> </tr> <tr> <td colspan="7" width="625" style="line-height:5px;border-top:1px solid #000000;"> </td> </tr> #set($total_AllExcl_BTW = 0 ) #set($total_BTW_Amount = 0) #set($billTotal_Amount = 0) #set($total_BTW_Amount_total = 0) #set($bill_Vat_ValueTotal= 0) #set($Final_BTW_Amount_total = 0) #set($exclTaxVal="") #foreach($bill in $billList ) #if($bill.bill_payer_type == "p") #if ($bill.bill_linetype !="-10" && $bill.bill_linetype != "0" && $bill.bill_linetype != "60" && $bill.bill_linetype != "40" && $bill.bill_linetype != "200" && $bill.bill_linetype != "20" && $bill.bill_linetype != "-20" && $bill.bill_linetype != "30" && $bill.bill_linetype != "80" && $bill.bill_linetype != "90" && $bill.bill_linetype != "70" ) <tr> <td width="90">$bill.bill_type </td> <td width="80" align="right">$bill.bill_quantity_multiplier X </td> <td width="90" align="right"> $reservation_dc_currency_symbol $bill.bill_value </td> <td width="90" align="right"> #if($bill.bill_vat_rate == "0.0" || $bill.bill_vat_rate == "0,0" || $bill.bill_vat_rate == "0,0" || $bill.bill_vat_rate == "") 0 #else $convert.toNumber($bill.bill_vat_rate) #end </td> <td width="110" align="right"> $reservation_dc_currency_symbol $bill.bill_total_excl_vat <!-- Logic Total Excl Tax--> #set($total_AllExcl_BTW =$convert.toDouble($total_AllExcl_BTW) + $convert.toDouble($bill.bill_total_excl_vat_without_format)) <!--End Logic Total Excl Tax--> </td> <td width="80" align="right"> #if($bill.bill_total_without_format != $bill.bill_total_excl_vat_without_format) #set($bill_Vat_Value = $convert.toDouble($bill.bill_total_without_format) - $convert.toDouble($bill.bill_total_excl_vat_without_format)) #set($exclTaxVal="$bill_Vat_Value") #if($exclTaxVal.contains("-")) #set( $totalVal = $number.currency($bill_Vat_Value).replace("$", "") ) $reservation_dc_currency_symbol -$totalVal.replace("(","").replace(")","") #else #set( $totalVal = $number.currency($bill_Vat_Value).replace("$", "") ) $reservation_dc_currency_symbol $totalVal #end <!--Logic BTW Bedrag--> #set($bill_Vat_ValueTotal = $convert.toDouble($bill.bill_total_without_format) - $convert.toDouble($bill.bill_total_excl_vat_without_format)) #set($total_BTW_Amount_total = $convert.toDouble($total_BTW_Amount_total) + $convert.toDouble($bill_Vat_ValueTotal)) #set( $total_BTW_Amount_total = $number.currency($total_BTW_Amount_total).replace("$", "") ) <!--End Logic BTW Bedrag--> #end </td> <td width="125" align="right"> $reservation_dc_currency_symbol $bill.bill_total <!-- Bill Total--> #set($billTotal_Amount = $convert.toDouble($billTotal_Amount) + $convert.toDouble($bill.bill_total_without_format )) <!-- End --> </td> </tr> #end #end #end <tr> <td colspan="7" width="625" style="line-height:5px;border-top:1px solid #000000;"> </td> </tr> <tr> <td width="200"><strong>Total</strong></td> <td width="40"> </td> <td width="90" > </td> <td width="90"> </td> <td width="110" align="right"> <!--$total_AllExcl_BTW--> $reservation_dc_currency_symbol $number.currency($total_AllExcl_BTW).replace("$", "") </td> <td width="80" align="right"> <!--$total_BTW_Amount_total --> $reservation_dc_currency_symbol $number.currency($total_BTW_Amount_total).replace("$", "") </td> <td width="125" align="right"> <!-- $billTotal_Amount --> $reservation_dc_currency_symbol $number.currency($billTotal_Amount).replace("$", "") </td> </tr> #foreach($bill in $billList ) #if($bill.bill_payer_type == "p") #if($bill.bill_linetype == "80") <tr> <td width="200">Paid</td> <td width="40"> </td> <td width="90" > </td> <td width="90"> </td> <td width="110"> </td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $bill.bill_total </td> </tr> #end #end #end #foreach($bill in $billList ) #if($bill.bill_payer_type == "p") #if($bill.bill_linetype == "90") <tr> <td width="200"> #if($convert.toDouble($bill.bill_total) < 0) To receive #else To be paid #end </td> <td width="40"> </td> <td width="90" > </td> <td width="90"> </td> <td width="110"> </td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $bill.bill_total </td> </tr> #end #end #end #foreach($bill in $billList ) #if($bill.bill_payer_type == "p") #if($bill.bill_linetype == "60") <tr> <td width="200"> $bill.bill_type </td> <td width="40"> </td> <td width="90" > </td> <td width="90"> </td> <td width="110"> </td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $bill.bill_total </td> </tr> #end #end #end <tr> <td colspan="7" style="background: #ffffff;" bgColor="#ffffff"> </td> </tr> #foreach( $receivedPayment in $receivedPaymentList) #if($receivedPayment.payerType == "p") #if( $receivedPayment.amount != "0,00" || $receivedPayment.amount != "0.00" ) #set($pay_date = $receivedPayment.statementDate) <tr> <td width="200"> Received payments </td> <td width="140" colspan="2">$receivedPayment.statementDate.split(',')[1]</td> <td width="200" colspan="2">$receivedPayment.bankname</td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $receivedPayment.amount </td> </tr> #end #end #end #set($dueamount= 0) #set($Duetotal= 0) #foreach( $term in $termList ) #if($term.term_payertype == "p") #if ($term.term_due != "0,00" && $term.term_due != "0.00") #if($reservation_language == "nl" || $reservation_language == "de" ) #set($term_value = $term.term_value.replaceAll("\.", "")) #set($term_value = $term_value.replaceAll(",", "\.")) #set($term_paid = $term.term_paid.replaceAll("\.", "")) #set($term_paid = $term_paid.replaceAll(",", "\.")) #elseif($reservation_language == "en") #set($term_value = $term.term_value.replaceAll(",", "")) #set($term_paid = $term.term_paid.replaceAll(",", "")) #end #set($Duetotal= $convert.toNumber($term_value) - $convert.toNumber($term_paid)) #set($dueamount= $math.roundTo(2, $Duetotal)) #set($finalDue = $numberFormatter.format($dueamount)) #if( $term.term_status == "o" || $term.term_status == "p" && $term.term_status =="p") <tr> <td width="200"> $term.term_name </td> <td width="140" colspan="2">$term.term_duedate.split(',')[1]</td> <td width="200" colspan="2"> </td> <td width="80"> </td> <td width="125" align="right"> $reservation_dc_currency_symbol $term.term_due </td> </tr> #end #end #end #end </tbody> </table> </td> </tr> </tbody> </table> |
...