Aller au contenu

Logiciel Pastèque/Scripts divers

Un livre de Wikilivres.

Pastèque Desktop

[modifier | modifier le wikicode]

Édition de facture A4

[modifier | modifier le wikicode]

Dans le dossier d’installation de Pastèque, créer un dossier reports/fr/pasteque/reports

Mettez y 3 fichiers :

  • invoice.jrxml,
  • ticket_lines.jrxml,
  • logo.png (votre logo).

Adaptez les fichiers à vos besoins (ils sont définis plus bas).

Dans la configuration avancée, ajoutez la ligne suivante dans Ticket.Buttons, entre les balises <configuration> et </configuration> : <event key="ticket.close" code="code.printinvoice"/>

Dans la configuration avancée, ajoutez une ressource appelée « code.printinvoice » et contenant la ligne suivante : sales.printReport("/fr/pasteque/reports/invoice");

<?xml version="1.0" encoding="UTF-8"  ?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
         name="ticket"
         columnCount="1"
         printOrder="Vertical"
         orientation="Portrait"
         pageWidth="595"
         pageHeight="842"
         columnWidth="535"
         columnSpacing="0"
         leftMargin="30"
         rightMargin="30"
         topMargin="20"
         bottomMargin="20"
         whenNoDataType="NoPages"
         isTitleNewPage="false"
         isSummaryNewPage="false">
    <property name="ireport.scriptlethandling" value="0" />
    <property name="ireport.encoding" value="UTF-8" />
    <import value="java.util.*" />
    <import value="net.sf.jasperreports.engine.*" />
    <import value="net.sf.jasperreports.engine.data.*" />
 
    <parameter name="SUBREPORT_DIR" isForPrompting="true" class="java.lang.String">
        <defaultValueExpression ><![CDATA["./"]]></defaultValueExpression>
    </parameter>
 
    <field name="TICKET" class="fr.pasteque.pos.ticket.TicketInfo"/>
    <field name="PLACE" class="java.lang.String"/>
    <field name="TAXESLOGIC" class="java.lang.Object"/>
 
        <background>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </background>

<!-- HEADER -->
        <title>
            <band height="85"  isSplitAllowed="true" >
		<staticText>
			<reportElement x="0" y="70" width="520" height="15" key="hautdepage-boutique" />
			<textElement textAlignment="Center" />
			<text><![CDATA[INFOS MAGASIN]]></text>
		</staticText>
            </band>
        </title>
        <pageHeader>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </pageHeader>
        <columnHeader>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </columnHeader>
<!-- BODY -->
        <detail>
            <band height="555"  isSplitAllowed="true" >
<!-- LOGO -->
                <image  scaleImage="RetainShape" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="0"
                        y="0"
                        width="115"
                        height="80"
                        key="logo" />
                    <box></box>
                    <graphicElement stretchType="NoStretch"/>
                    <imageExpression class="java.lang.String"><![CDATA["reports/fr/pasteque/reports/logo.png"]]></imageExpression>
                </image>
<!-- TOP LEFT -->
                <rectangle>
                    <reportElement
                        x="120"
                        y="7"
                        width="180"
                        height="77"
                        key="rectangle-hautgauche"/>
                    <graphicElement stretchType="NoStretch"/>
                </rectangle>
                <staticText>
                    <reportElement
                        x="130"
                        y="11"
                        width="109"
                        height="21"
                        key="staticText-3"/>
                    <box></box>
                    <textElement>
                        <font pdfFontName="Helvetica-Bold" isBold="true"/>
                    </textElement>
                <text><![CDATA[FACTURE N°]]></text>
                </staticText>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="200"
                        y="11"
                        width="156"
                        height="21"
                        key="textField-2"/>
                    <box></box>
                    <textElement>
                        <font pdfFontName="Helvetica-Bold" isBold="true"/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.printId()]]></textFieldExpression>
                </textField>
                <staticText>
                    <reportElement
                        x="130"
                        y="32"
                        width="109"
                        height="21"
                        key="staticText-4"/>
                    <box></box>
                    <textElement>
                        <font pdfFontName="Helvetica-Bold" isBold="true"/>
                    </textElement>
                <text><![CDATA[Date: ]]></text>
                </staticText>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="165"
                        y="32"
                        width="156"
                        height="21"
                        key="textField-3"/>
                    <box></box>
                    <textElement>
                        <font/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.printDate()]]></textFieldExpression>
                </textField>
                <staticText>
                    <reportElement
                        x="130"
                        y="55"
                        width="160"
                        height="21"
                        key="conditionsdepaiement"/>
                    <box></box>
                    <textElement>
                        <font pdfFontName="Helvetica-Bold" isBold="true"/>
                    </textElement>
                <text><![CDATA[CONDITIONS PAIEMENT]]></text>
                </staticText>
<!-- TOP RIGHT -->
                <rectangle>
                    <reportElement
                        x="300"
                        y="7"
                        width="220"
                        height="77"
                        key="rectangle-hautdroite"/>
                    <graphicElement stretchType="NoStretch"/>
                </rectangle>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="310"
                        y="15"
                        width="188"
                        height="19"
                        key="textField-4">
                            <printWhenExpression><![CDATA[Boolean.valueOf($F{TICKET}.getCustomer() != null)]]></printWhenExpression>
                        </reportElement>
                    <box></box>
                    <textElement>
                        <font/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.getCustomer().getName()]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="310"
                        y="25"
                        width="188"
                        height="19"
                        key="textField-CustInfo1">
                            <printWhenExpression><![CDATA[Boolean.valueOf($F{TICKET}.getCustomer() != null)]]></printWhenExpression>
                        </reportElement>
                    <box></box>
                    <textElement>
                        <font/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.getCustomer().getAddress()]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="310"
                        y="35"
                        width="188"
                        height="19"
                        key="textField-CustInfo2">
                            <printWhenExpression><![CDATA[Boolean.valueOf($F{TICKET}.getCustomer() != null)]]></printWhenExpression>
                        </reportElement>
                    <box></box>
                    <textElement>
                        <font/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.getCustomer().getAddress2()]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="310"
                        y="45"
                        width="188"
                        height="19"
                        key="textField-CustInfo3">
                            <printWhenExpression><![CDATA[Boolean.valueOf($F{TICKET}.getCustomer() != null)]]></printWhenExpression>
                        </reportElement>
                    <box></box>
                    <textElement>
                        <font/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.getCustomer().getPostal()]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="345"
                        y="45"
                        width="188"
                        height="19"
                        key="textField-CustInfo4">
                            <printWhenExpression><![CDATA[Boolean.valueOf($F{TICKET}.getCustomer() != null)]]></printWhenExpression>
                        </reportElement>
                    <box></box>
                    <textElement>
                        <font/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.getCustomer().getCity()]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="310"
                        y="55"
                        width="188"
                        height="19"
                        key="textField-CustInfo5">
                            <printWhenExpression><![CDATA[Boolean.valueOf($F{TICKET}.getCustomer() != null)]]></printWhenExpression>
                        </reportElement>
                    <box></box>
                    <textElement>
                        <font/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.getCustomer().getCountry()]]></textFieldExpression>
                </textField>
<!-- TICKET LINES -->
                <rectangle>
                    <reportElement
                        x="10"
                        y="100"
                        width="520"
                        height="270"
                        key="rectangle-lines"/>
                    <graphicElement stretchType="NoStretch"/>
                </rectangle>
                <subreport  isUsingCache="true">
                    <reportElement
                        x="10"
                        y="100"
                        width="520"
                        height="65"
                        key="subreport-1"/>
                    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(
$F{TICKET}.getLines()
)]]></dataSourceExpression>
                    <subreportExpression  class="net.sf.jasperreports.engine.JasperReport"><![CDATA[JasperCompileManager.compileReport(
net.sf.jasperreports.engine.xml.JRXmlLoader.load(getClass().getResourceAsStream(
"/fr/pasteque/reports/ticket_lines.jrxml"
))
)]]></subreportExpression>
                </subreport>
<!-- TOTAL -->
                <rectangle>
                    <reportElement
                        x="10"
                        y="370"
                        width="520"
                        height="120"
                        key="rectangle-total"/>
                    <graphicElement stretchType="NoStretch"/>
                </rectangle>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="324"
                        y="399"
                        width="188"
                        height="19"
                        key="textField-6"/>
                    <box></box>
                    <textElement textAlignment="Right">
                        <font pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.printTax()]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="324"
                        y="418"
                        width="188"
                        height="19"
                        key="textField-7"/>
                    <box></box>
                    <textElement textAlignment="Right">
                        <font pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.printTotal()]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="324"
                        y="380"
                        width="188"
                        height="19"
                        key="textField-8"/>
                    <box></box>
                    <textElement textAlignment="Right">
                        <font pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$F{TICKET}.printSubTotal()]]></textFieldExpression>
                </textField>
                <staticText>
                    <reportElement
                        x="164"
                        y="380"
                        width="160"
                        height="19"
                        key="staticText-6"/>
                    <box></box>
                    <textElement>
                        <font pdfFontName="Helvetica-Bold" isBold="true"/>
                    </textElement>
                <text><![CDATA[Total HT]]></text>
                </staticText>
                <staticText>
                    <reportElement
                        x="164"
                        y="399"
                        width="160"
                        height="19"
                        key="staticText-8"/>
                    <box></box>
                    <textElement>
                        <font pdfFontName="Helvetica-Bold" isBold="true"/>
                    </textElement>
                <text><![CDATA[TVA 20%]]></text>
                </staticText>
                <staticText>
                    <reportElement
                        x="164"
                        y="418"
                        width="160"
                        height="19"
                        key="staticText-9"/>
                    <box></box>
                    <textElement>
                        <font pdfFontName="Helvetica-Bold" isBold="true"/>
                    </textElement>
                <text><![CDATA[Total TTC]]></text>
                </staticText>
            </band>
        </detail>
        <columnFooter>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </columnFooter>
        <pageFooter>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </pageFooter>
        <summary>
            <band height="40"  isSplitAllowed="true" >
		<staticText>
			<reportElement x="0" y="0" width="520" height="19" key="basdepage-TVA" />
			<textElement textAlignment="Center" />
			<text><![CDATA[N° T.V.A. INTRACOMMUNAUTAIRE : XXXXXXXXXXXXXX]]></text>
		</staticText>
		<staticText>
			<reportElement x="0" y="20" width="520" height="19" key="basdepage-societe" />
			<textElement textAlignment="Center" />
			<text><![CDATA[PIED de page]]></text>
		</staticText>
            </band>
        </summary>
</jasperReport>
ticket_liens.jrxml
[modifier | modifier le wikicode]
<?xml version="1.0" encoding="UTF-8"  ?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
        name="ticket_lines"
        columnCount="1"
        printOrder="Vertical"
        orientation="Portrait"
        pageWidth="535"
        pageHeight="802"
        columnWidth="535"
        columnSpacing="0"
        leftMargin="0"
        rightMargin="0"
        topMargin="0"
        bottomMargin="0"
        whenNoDataType="NoPages"
        isTitleNewPage="false"
        isSummaryNewPage="false">
   <property name="ireport.scriptlethandling" value="0" />
   <property name="ireport.encoding" value="UTF-8" />
   <import value="java.util.*" />
   <import value="net.sf.jasperreports.engine.*" />
   <import value="net.sf.jasperreports.engine.data.*" />


   <field name="productName" class="java.lang.String"/>
   <field name="_THIS" class="fr.pasteque.pos.ticket.TicketLineInfo"/>

       <background>
           <band height="31"  isSplitAllowed="true" >
           </band>
       </background>
       <title>
           <band height="0"  isSplitAllowed="true" >
           </band>
       </title>
       <pageHeader>
           <band height="24"  isSplitAllowed="true" >
               <rectangle>
                   <reportElement
                       x="0"
                       y="0"
                       width="520"
                       height="24"
                       key="rectangle-haut"/>
                   <graphicElement stretchType="NoStretch"/>
               </rectangle>
               <staticText>
                   <reportElement
                       x="12"
                       y="5"
                       width="149"
                       height="14"
                       key="staticText-1"/>
                   <box></box>
                   <textElement>
                       <font pdfFontName="Helvetica-Bold" isBold="true"/>
                   </textElement>
               <text><![CDATA[Name]]></text>
               </staticText>
               <staticText>
                   <reportElement
                       x="176"
                       y="5"
                       width="113"
                       height="14"
                       key="staticText-2"/>
                   <box></box>
                   <textElement textAlignment="Right">
                       <font pdfFontName="Helvetica-Bold" isBold="true"/>
                   </textElement>
               <text><![CDATA[Price]]></text>
               </staticText>
               <staticText>
                   <reportElement
                       x="360"
                       y="5"
                       width="136"
                       height="14"
                       key="staticText-4"/>
                   <box></box>
                   <textElement textAlignment="Right">
                       <font pdfFontName="Helvetica-Bold" isBold="true"/>
                   </textElement>
               <text><![CDATA[Total]]></text>
               </staticText>
               <staticText>
                   <reportElement
                       x="289"
                       y="5"
                       width="71"
                       height="14"
                       key="staticText-5"/>
                   <box></box>
                   <textElement textAlignment="Right">
                       <font pdfFontName="Helvetica-Bold" isBold="true"/>
                   </textElement>
               <text><![CDATA[Units]]></text>
               </staticText>
           </band>
       </pageHeader>
       <columnHeader>
           <band height="0"  isSplitAllowed="true" >
           </band>
       </columnHeader>
       <detail>
           <band height="20"  isSplitAllowed="true" >
               <rectangle>
                   <reportElement
                       x="0"
                       y="0"
                       width="520"
                       height="20"
                       key="rectangle-bas"/>
                   <graphicElement stretchType="NoStretch"/>
               </rectangle>
               <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                   <reportElement
                       x="12"
                       y="3"
                       width="149"
                       height="15"
                       key="textField-1"/>
                   <box></box>
                   <textElement>
                       <font/>
                   </textElement>
               <textFieldExpression   class="java.lang.String"><![CDATA[$F{productName}]]></textFieldExpression>
               </textField>
               <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                   <reportElement
                       x="360"
                       y="3"
                       width="136"
                       height="15"
                       key="textField-2"/>
                   <box></box>
                   <textElement textAlignment="Right">
                       <font/>
                   </textElement>
               <textFieldExpression   class="java.lang.String"><![CDATA[$F{_THIS}.printValue()]]></textFieldExpression>
               </textField>
               <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                   <reportElement
                       x="176"
                       y="3"
                       width="113"
                       height="15"
                       key="textField-3"/>
                   <box></box>
                   <textElement textAlignment="Right">
                       <font/>
                   </textElement>
               <textFieldExpression   class="java.lang.String"><![CDATA[$F{_THIS}.printPriceTax()]]></textFieldExpression>
               </textField>
               <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                   <reportElement
                       x="289"
                       y="3"
                       width="71"
                       height="15"
                       key="textField-4"/>
                   <box></box>
                   <textElement textAlignment="Right">
                       <font/>
                   </textElement>
               <textFieldExpression   class="java.lang.String"><![CDATA[$F{_THIS}.printMultiply()]]></textFieldExpression>
               </textField>
           </band>
       </detail>
       <columnFooter>
           <band height="0"  isSplitAllowed="true" >
           </band>
       </columnFooter>
       <pageFooter>
           <band height="37"  isSplitAllowed="true" >
           </band>
       </pageFooter>
       <summary>
           <band height="0"  isSplitAllowed="true" >
           </band>
       </summary>
</jasperReport>

Rendu monnaie en pop-up

[modifier | modifier le wikicode]

Créer un fichier ressource à partir du compte administrateur

  • Aller dans « maintenance » puis « ressources »
  • Créer une nouvelle ressource (icône blanche avec point jaune)
  • Nommer la ressource « ticket.close »
  • Ajouter le code suivant :
import java.awt.Font; 
import javax.swing.plaf.FontUIResource; 
import com.openbravo.pos.payment.PaymentInfo;
import javax.swing.JOptionPane;
import javax.swing.JDialog;

boolean isCash = false;
String change = "";
PaymentInfo p = ticket.payments.getFirst();

if ("cash".equals(p.getName())) {
    isCash = true;
    change = p.printChange();
}

JOptionPane pane = new JOptionPane();
Font originalFont=pane.getFont();

UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font("ARIAL",Font.PLAIN,30)));
message = "A RENDRE: " + change;
 JLabel FontText = new JLabel(message);
 FontText.setFont (new Font ( "Arial", Font.BOLD, 40) );

if(isCash) {
     JOptionPane pane = new JOptionPane();
     pane.setMessage(FontText);
     pane.setPreferredSize( new Dimension(450,150));
     JDialog dialog = pane.createDialog("Rendre la monnaie");
    new Thread(new Runnable() { void run() {
        dialog.show();
    } }).start();
}

UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font(originalFont.getName(),originalFont.getStyle(),originalFont.getSize())));
  • Sauvegarder via l’icône en forme de disquette

Mettre en place le script pour que la fenêtre apparaisse à la fin de la vente

  • Dans la liste des ressources, choisir « Ticket.Buttons »
  • Sous la balise « configuration », ajouter :
<event key="ticket.close" code="ticket.close"/>
  • Sauvegarder

Relancez Pastèque pour que le changement soit pris en compte

Empêcher l’encaissement lors d’un pré-paiement si le client n’est pas défini

[modifier | modifier le wikicode]

Ce script pour le logiciel Pastèque interdit de passer à l’encaissement si le client n’est pas sélectionné quand un des produits du ticket est un prépaiement.

Dans Tickets.Buttons ajouter :

    <event key="ticket.total" code="event.PrepaidRequiresCustomer"/>

Créer une ressource event.PrepaidRequiresCustomer et mettre le code suivant :

import fr.pasteque.pos.forms.DataLogicSales;
import fr.pasteque.pos.ticket.ProductInfoExt;
import fr.pasteque.pos.ticket.TicketLineInfo;

DataLogicSales logic = new DataLogicSales();

for( int i = 0; i < ticket.getLinesCount(); i++ ) {
    line = ticket.getLine( i );
    product = logic.getProductInfo( line.getProductID() );
    productCategory = product.getCategoryID();
    customer = ticket.getCustomer();
    if(productCategory.equals("-1")) {
        if(customer == null){
            javax.swing.JOptionPane.showMessageDialog(null, "Vous devez choisir un client pour savoir à qui va le prépaiement", "Customer Warning", JOptionPane.WARNING_MESSAGE);
            return "Revenir en arrière";
        }
    }
}

Ce script exporte une base de données MySQL (sous la forme d'un fichier dump .sql), la compresse et l’envoie vers un serveur FTP pour la sauvegarder

@echo off
REM 7za.exe et mysqldump.exe doivent se trouver a la racine du ftp pour pouvoir être téléchargés

REM Définition du dossier dans lequel le script va travailler
set Folder=

REM Paramétrage des informations de connexion au serveur FTP
set FtpHost=
set FtpUser=
set FtpPass=

REM Paramétrage des informations de connexion à la base de donnée MySQL et de la base à sauvegarder
set DatabaseUser=
set DatabasePass=
set DatabaseName=

REM Creation de la variable DateTime et modification de celle-ci afin de pouvoir l utiliser dans un nom de fichier
set DateTime=%date%_%time%
set DateTime=%DateTime: =_%
set DateTime=%DateTime::=%
set DateTime=%DateTime:/=_%
set DateTime=%DateTime:.=_%
set DateTime=%DateTime:,=_%

REM Définition des variables pour les différents répertoires et fichiers utilises par le script
set TempFolder=%Folder%TEMP
set DestinationFolder=%Folder%ToSend
set LogFolder=%Folder%Log
set SQLSave=%Tempfolder%%USERNAME%_%DatabaseName%_%DateTime%.sql
set BakFile=%TempFolder%%USERNAME%_%DatabaseName%_%DateTime%.BAK
set ZipFile=%TempFolder%%USERNAME%_%DatabaseName%_%DateTime%.7z
set SevenExe=%TempFolder%7za.exe
set SQLDump=%TempFolder%mysqldump.exe
set LogSQL=%LogFolder%logsql.txt

REM Vérification de l'existence des répertoires et fichiers nécessaires et création si besoin
IF NOT EXIST %Folder% mkdir %Folder%
IF NOT EXIST %TempFolder% mkdir %Folder%TEMP
IF NOT EXIST %DestinationFolder% mkdir %Folder%ToSend
IF NOT EXIST %LogFolder% mkdir %Folder%Log
IF NOT EXIST %LogSQL% echo Fichier Log SQL > %LogFolder%logsql.txt

REM Téléchargement de 7z + MySQLDump depuis le serveur FTP
echo %SevenExe%
IF EXIST "%SevenExe%" AND %SQLDump% GOTO 7zaExeExists
echo open %FtpHost% > ftpcmd.txt
echo user %FtpUser% %FtpPass% >> ftpcmd.txt
echo lcd "%TempFolder%" >> ftpcmd.txt
echo hash >> ftpcmd.txt
echo bin >> ftpcmd.txt
echo get 7za.exe >> ftpcmd.txt
echo get mysqldump.exe >> ftpcmd.txt
echo bye >> ftpcmd.txt
ftp -i -n -v -s:ftpcmd.txt
:7zaExeExists

REM Export de la base
@%SQLDump% --user %DatabaseUser% --password="%DatabasePass%" %DatabaseName% > "%SQLSave%" 
@if %ERRORLEVEL% EQU 0 echo Reussi_%DateTime% >> %LogSQL% 
@if %ERRORLEVEL% GEQ 1 echo Echec_%DateTime% >> %LogSQL%


REM Compression
"%SevenExe%" a -mx5 "%ZipFile%" "%DestinationFolder%" "%SQLSave%"

REM Téléversement de la sauvegarde sur le serveur FTP
echo open %FtpHost% > ftpcmd.txt
echo user %FtpUser% %FtpPass% >> ftpcmd.txt
echo hash >> ftpcmd.txt
echo bin >> ftpcmd.txt
echo put "%ZipFile%" >> ftpcmd.txt
echo bye >> ftpcmd.txt
ftp -i -n -v -s:ftpcmd.txt

REM Ménage
del ftpcmd.txt
del "%SQLSave%"
del "%ZipFile%"
RD "%DestinationFolder%" /S /Q
shutdown -s -t 00