unit ugeneration;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, DB, Dialogs,
 Mask, ToolEdit, Buttons, IBCustomDataSet, IBQuery ;


type
  Tfrmgeneration = class(TForm)
    Ds_Parametre: TDataSource;
    BtnOk: TBitBtn;
    BtnAnnuler: TBitBtn;
    Label1: TLabel;
    DirectoryEdit1: TDirectoryEdit;
    Label4: TLabel;
    Label5: TLabel;
    Label2: TLabel;
    montanttransactions: TIBQuery;
    montanttransactionsMFISCAL: TIBStringField;
    montanttransactionsEXERCICE: TIntegerField;
    montanttransactionsLG: TIntegerField;
    montanttransactionsTYPEMONTANT: TIBStringField;
    montanttransactionsNATUREOPERATIONS: TIBStringField;
    montanttransactionsAUTRESNATURESOPERATIONS: TIBStringField;
    montanttransactionsACHATS: TIBBCDField;
    montanttransactionsVENTES: TIBBCDField;
    montanttransactionsMATRICULEFISCAL: TIBStringField;
    montanttransactionsAUTREIDENTIFIANT: TIBStringField;
    montanttransactionsETATTERRITORIAL: TIBStringField;
    montanttransactionsRAISONSOCIALE: TIBStringField;
    montanttransactionsQUALITE: TIBStringField;
    montanttransactionsAUTREQUALITE: TIBStringField;
    montanttransactionsNATURRELATION: TIBStringField;
    montanttransactionsAUTRENATURERELATIONS: TIBStringField;
    montanttransactionsMETHODE: TIBStringField;
    montanttransactionsAUTREMETHODE: TBlobField;
    montanttransactionsCHANGEMENTMETHODE: TIBStringField;
    montanttransactionsCHANGEMENTAUTREMETRHODE: TIBStringField;
    Empruntsprets: TIBQuery;
    EmpruntspretsMFISCAL: TIBStringField;
    EmpruntspretsEXERCICE: TIntegerField;
    EmpruntspretsLG: TIntegerField;
    EmpruntspretsTYPEPRETEMPRUNT: TIBStringField;
    EmpruntspretsMATRICULEFISCAL: TIBStringField;
    EmpruntspretsAUTREIDENTIFIANT: TIBStringField;
    EmpruntspretsETATTERRITORIAL: TIBStringField;
    EmpruntspretsRAISONSOCIALE: TIBStringField;
    EmpruntspretsQUALITE: TIBStringField;
    EmpruntspretsAUTREQUALITE: TIBStringField;
    EmpruntspretsNATURERELATION: TIBStringField;
    EmpruntspretsAUTRENATURE: TIBStringField;
    EmpruntspretsSOLDEOUVERTURE: TIBBCDField;
    EmpruntspretsDEVISE: TIBStringField;
    EmpruntspretsAUGMENTATIONS: TIBBCDField;
    EmpruntspretsDIMINUTIONS: TIBBCDField;
    EmpruntspretsSOLDECLOTURE: TIBBCDField;
    EmpruntspretsPRETINTERET: TIBStringField;
    EmpruntspretsTAUXINTERET: TIBBCDField;
    operationssanscontre: TIBQuery;
    operationssanscontreMFISCAL: TIBStringField;
    operationssanscontreEXERCICE: TIntegerField;
    operationssanscontreLG: TIntegerField;
    operationssanscontreMATRICULEFISCAL: TIBStringField;
    operationssanscontreAUTREIDENTIFIANT: TIBStringField;
    operationssanscontreETATTERRITORIAL: TIBStringField;
    operationssanscontreRAISONSOCIALE: TIBStringField;
    operationssanscontreQUALITE: TIBStringField;
    operationssanscontreAUTREQUALITE: TIBStringField;
    operationssanscontreNATURERELATION: TIBStringField;
    operationssanscontreAUTRENATURE: TIBStringField;
    operationssanscontreNATUREBIENSERVICE: TIBStringField;
    operationssanscontreNATURECONTREPARTIE: TIBStringField;
    operationssanscontreAVECCONTREOUINON: TIBStringField;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure BtnOkClick(Sender: TObject);
    procedure GenXml;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
  Sigle,Societe,Adresse,CPostal,Ville,Tel,Fax,Telex,
  Rc,MF,Tva,Banque,Du,Au,Arreter,Attente,Resultat,
  JrnNouv,JRNVENTE,JRNOD,JRNACHATEtat,Monnaie,ACTIVITE:String;
    { Public declarations }
  end;

var
  frmgeneration: Tfrmgeneration;

implementation

uses UDataprix;

{$R *.DFM}

procedure Tfrmgeneration.FormKeyPress(Sender: TObject; var Key: Char);
begin
//if Key = #13 then
// Begin
//    Key := #0;
//    Perform(WM_NEXTDLGCTL, 0, 0);
//  end
//Else if Key = #27 then
//  Close;

end;


procedure Tfrmgeneration.BtnOkClick(Sender: TObject);
begin
 GenXml;
end;

procedure Tfrmgeneration.FormCreate(Sender: TObject);
begin
 DirectoryEdit1.Text:=GetCurrentDir;
 Label2.Caption:='Exercice:'+Dataprix.societeEXERCICE.Text;
 if  Dataprix.societeCODEACTE.Text='0' then label4.Caption:='Acte de dépôt: 0 : Initiale';
 if  Dataprix.societeCODEACTE.Text='1' then label4.Caption:='Acte de dépôt: 1 : Rectificative';
 if  Dataprix.societeCODEACTE.Text='4' then label4.Caption:='Acte de dépôt: 4 : Cessation d’activité';

 if  Dataprix.societeTYPEDECLARATION.Text='P' then label5.Caption:='Nature de dépôt:  P : Déclaration provisoire';
 if  Dataprix.societeTYPEDECLARATION.Text='D' then label5.Caption:='Nature de dépôt:  D : Déclaration définitive';

end;

procedure Tfrmgeneration.GenXml;
VAR LIGNEDEC,MatriculeFiscal,MFiscal,Activite,Adresse,Exercice:STRING;
    FICHIER:TEXTFILE;
    Resultat: Integer;  T1,T2,T3:REAL;
begin

 MFiscal  :=Dataprix.societeMFISCAL.Text+Dataprix.societeCLE.Text;
 Exercice:=Dataprix.societeEXERCICE.Text;
 AssignFile(FICHIER,DirectoryEdit1.text+'\FDPT-'+MFiscal+'-'+Exercice+'.xml');
 Rewrite(FICHIER);
 Writeln(FICHIER,'<?xml version="1.0" encoding="UTF-8"?>');
 Writeln(FICHIER,'<PrixTransfert xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  VersionDocument="1.0" xsi:noNamespaceSchemaLocation="FDPT.xsd">');
 //Writeln(FICHIER,'VersionDocument="1.0" xsi:noNamespaceSchemaLocation="FDPT.xsd">');
 Writeln(FICHIER,'<Entete>');
 Writeln(FICHIER,'<CodeActe>'+Dataprix.societeCODEACTE.value+'</CodeActe>');
 Writeln(FICHIER,'<Exercice>'+Dataprix.societeexercice.text+'</Exercice>');
 Writeln(FICHIER,'<MatriculeFiscalDeclarant>'+mfiscal+'</MatriculeFiscalDeclarant>');
 Writeln(FICHIER,'<CodeTVA>'+Dataprix.societetva.text+'</CodeTVA>');
 Writeln(FICHIER,'<CodeCategorie>'+Dataprix.societecategorie.text+'</CodeCategorie>');
 Writeln(FICHIER,'<TypeDeclaration>'+Dataprix.societetypedeclaration.text+'</TypeDeclaration>');
 Writeln(FICHIER,'<DateDebutExercice>'+Dataprix.societedatedebut.text+'</DateDebutExercice>');
 Writeln(FICHIER,'<DateFinExercice NatureDateFin="'+Dataprix.societenaturedatefin.text+'">'+Dataprix.societedatefin.text+'</DateFinExercice>');
 Writeln(FICHIER,'</Entete>');
 Writeln(FICHIER,'<IdentificationEntrepriseDeclarante>');
 Writeln(FICHIER,'<RaisonSociale>'+trim(Dataprix.societeraisonsociale.text)+'</RaisonSociale>');
 Writeln(FICHIER,'<FormeJuridique>'+trim(Dataprix.societeformejuridique.text)+'</FormeJuridique>');
 Writeln(FICHIER,'<Nationalite>'+trim(Dataprix.societenationalite.text)+'</Nationalite>');
 Writeln(FICHIER,'<AdresseSiegeSocialEtablissementTunisie>'+trim(Dataprix.societeadresse.text)+'</AdresseSiegeSocialEtablissementTunisie>');
 Writeln(FICHIER,'<CodePostal>'+formatfloat('0000',Dataprix.societecodepostal.value)+'</CodePostal>');
 Writeln(FICHIER,'<ActivitePrincipale>'+trim(Dataprix.societeactiviteprincipale.text)+'</ActivitePrincipale>');
 IF trim(Dataprix.societeactivitesecondaire.text)<>'' then  Writeln(FICHIER,'<ActiviteSecondaire>'+trim(Dataprix.societeactivitesecondaire.text)+'</ActiviteSecondaire>');
 Writeln(FICHIER,'<ChiffreAffaireAnnuel>'+formatfloat('###############0####',Dataprix.societechiffreaffaireannuel.Value)+'</ChiffreAffaireAnnuel>');
 Writeln(FICHIER,'</IdentificationEntrepriseDeclarante>');
 Writeln(FICHIER,'<InformationsEntrepriseDeclarante>');
 Writeln(FICHIER,'<QualiteEntrepriseDeclarante>');
 if  trim(Dataprix.societequalite.text)<>'' then   Writeln(FICHIER,'<Qualite>'+Dataprix.societequalite.text+'</Qualite>')
 else
 if trim(Dataprix.societeautresqualite.text)<>'' then  Writeln(FICHIER,'<AutreQualite>'+trim(Dataprix.societeautresqualite.text)+'</AutreQualite>');

 Writeln(FICHIER,'</QualiteEntrepriseDeclarante>');
 Writeln(FICHIER,'<DescriptionActivitesPrincipales>'+trim(Dataprix.societedescriptionactivitesprincipales.text)+'</DescriptionActivitesPrincipales>');
 Writeln(FICHIER,'<ChangementsActiviteAuCoursExercice>');
 Writeln(FICHIER,'<Affirmation>'+Dataprix.societeaffirmation.text+'</Affirmation>');
 if trim(Dataprix.societedescription.text)<>'' then  Writeln(FICHIER,'<Description>'+Dataprix.societedescription.text+'</Description>');
 Writeln(FICHIER,'</ChangementsActiviteAuCoursExercice>');
 Writeln(FICHIER,'<LiensCapital>');

 Dataprix.capitallie.Close;
 Dataprix.capitallie.Params[0].Value:=mfiscal;
 Dataprix.capitallie.Params[1].Value:=exercice;
 Dataprix.capitallie.open;
 Dataprix.capitallie.first;
 if not(Dataprix.capitallie.Eof) then
 begin
  Writeln(FICHIER,'<ParticipationLiee>');
  while not(Dataprix.capitallie.Eof) do
   begin
    Writeln(FICHIER,'<LigneParticipationLiee>');
    Writeln(FICHIER,'<IdentifiantEntreprise>');
    Writeln(FICHIER,'<MatriculeFiscal>'+Dataprix.capitalliemfiscallie.text+'</MatriculeFiscal>');
    Writeln(FICHIER,'</IdentifiantEntreprise>');
    Writeln(FICHIER,'<RaisonSociale>'+Dataprix.capitallieraisonsociale.text+'</RaisonSociale>');
    Writeln(FICHIER,'<QualiteEntreprise>');
    if trim(Dataprix.capitalliequalite.text)<>'' then  Writeln(FICHIER,'<Qualite>'+Dataprix.capitalliequalite.text+'</Qualite>')
    else Writeln(FICHIER,'<AutreQualite>'+Dataprix.capitallieautrequalite.text+'</AutreQualite>');
    Writeln(FICHIER,'</QualiteEntreprise>');
    Writeln(FICHIER,'<PourcentageDetentionCapital>'+formatfloat('#0###',Dataprix.capitalliePOURCENTCAPITAL.value)+'</PourcentageDetentionCapital>');
    Writeln(FICHIER,'<PourcentageDetentionDroitsVote>'+formatfloat('#0###',Dataprix.capitalliepourvenvote.value)+'</PourcentageDetentionDroitsVote>');
    Writeln(FICHIER,'</LigneParticipationLiee>');
    Dataprix.capitallie.Next;
   end;
   Writeln(FICHIER,'</ParticipationLiee>');
  end;
 Dataprix.capitaldeclarante.Close;
 Dataprix.capitaldeclarante.Params[0].Value:=mfiscal;
 Dataprix.capitaldeclarante.Params[1].Value:=exercice;
 Dataprix.capitaldeclarante.open;
 Dataprix.capitaldeclarante.first;
 if not(Dataprix.capitaldeclarante.eof) then
  begin
   Writeln(FICHIER,'<ParticipationDeclarante>');
   while not( Dataprix.capitaldeclarante.Eof) do
    begin
     Writeln(FICHIER,'<LigneParticipationDeclarante>');
     Writeln(FICHIER,'<IdentifiantEntreprise>');
     Writeln(FICHIER,'<MatriculeFiscal>'+Dataprix.capitaldeclarantemfiscallie.text+'</MatriculeFiscal>');
     Writeln(FICHIER,'</IdentifiantEntreprise>');
     Writeln(FICHIER,'<RaisonSociale>'+Dataprix.capitaldeclaranteraisonsociale.text+'</RaisonSociale>');
     Writeln(FICHIER,'<QualiteEntreprise>');
     if trim(Dataprix.capitaldeclarantequalite.text)<>'' then  Writeln(FICHIER,'<Qualite>'+Dataprix.capitaldeclarantequalite.text+'</Qualite>')
     else   Writeln(FICHIER,'<AutreQualite>'+Dataprix.capitaldeclaranteAutrequalite.text+'</AutreQualite>');
     Writeln(FICHIER,'</QualiteEntreprise>');
     Writeln(FICHIER,'<PourcentageDetentionCapital>'+formatfloat('#0###',Dataprix.CapitaldeclarantePOURCENTCAPITAL.value)+'</PourcentageDetentionCapital>');
     Writeln(FICHIER,'<PourcentageDetentionDroitsVote>'+formatfloat('#0###',Dataprix.capitaldeclarantepourvenvote.value)+'</PourcentageDetentionDroitsVote>');
     Writeln(FICHIER,'</LigneParticipationDeclarante>');
     Dataprix.capitaldeclarante.Next;
    end;
   Writeln(FICHIER,'</ParticipationDeclarante>');
  end;
 Writeln(FICHIER,'<ModificationLiensCapitalAuCoursExercice>');
 Writeln(FICHIER,'<Affirmation>'+Dataprix.societeAFFIRMATIONCHANGEMENTCAPITAL.text+'</Affirmation>');
 if trim(Dataprix.societeDESCRIPTIONCHANGCAPITAL.text)<>'' then  Writeln(FICHIER,'<Description>'+Dataprix.societeDESCRIPTIONCHANGCAPITAL.text+'</Description>');
 Writeln(FICHIER,'</ModificationLiensCapitalAuCoursExercice>');
 Writeln(FICHIER,'</LiensCapital>');
 Writeln(FICHIER,'</InformationsEntrepriseDeclarante>');

 Writeln(FICHIER,'<InformationsGroupeEntreprises>');
 Writeln(FICHIER,'<InformationsEntiteMereUltime>');
 Writeln(FICHIER,'<IdentifiantEntreprise>');

 Dataprix.INFOGROUPE.Close;
 Dataprix.INFOGROUPE.Params[0].Value:=mfiscal;
 Dataprix.INFOGROUPE.Params[1].Value:=exercice;
 Dataprix.INFOGROUPE.open;
 IF TRIM(Dataprix.INFOGROUPEmfiscalmere.text)<>'' THEN  Writeln(FICHIER,'<MatriculeFiscal>'+Dataprix.INFOGROUPEmfiscalmere.text+'</MatriculeFiscal>');
 IF TRIM(Dataprix.INFOGROUPEAUTREMFISCAL.text)<>'' THEN
   BEGIN
      Writeln(FICHIER,'<AutreIdentifiant>');
      Writeln(FICHIER,'<Identifiant>'+trim(Dataprix.INFOGROUPEAUTREMFISCAL.text)+'</Identifiant>');
      Writeln(FICHIER,'<EtatTerritoire>'+trim(Dataprix.INFOGROUPEETATTERRITORIAL.text)+'</EtatTerritoire>');
      Writeln(FICHIER,'</AutreIdentifiant>');
   END;

 Writeln(FICHIER,'</IdentifiantEntreprise>');
 Writeln(FICHIER,'<RaisonSociale>'+Dataprix.INFOGROUPEraisonsociale.text+'</RaisonSociale>');
 Writeln(FICHIER,'<AdresseSiegeSocial>'+Dataprix.INFOGROUPEadresse.text+'</AdresseSiegeSocial>');
 Writeln(FICHIER,'</InformationsEntiteMereUltime>');
 Writeln(FICHIER,'<DescriptionPrincipalesActivites>'+Dataprix.INFOGROUPEDESCRIPTIONACTIVITE.text+'</DescriptionPrincipalesActivites>');
 Writeln(FICHIER,'<DescriptionGeneralePolitiquePrixTransfert>'+Dataprix.INFOGROUPEDESCRIPTIONPOLITIQUE.text+'</DescriptionGeneralePolitiquePrixTransfert>');

 Dataprix.actifincorporel.Close;
 Dataprix.actifincorporel.Params[0].Value:=mfiscal;
 Dataprix.actifincorporel.Params[1].Value:=exercice;
 Dataprix.actifincorporel.open;
 Dataprix.actifincorporel.first;
 if not(Dataprix.actifincorporel.eof) then
 begin
   Writeln(FICHIER,'<ListeActifsIncorporels>');
   while not( Dataprix.actifincorporel.Eof) do
    begin
     Writeln(FICHIER,'<LigneActifIncorporel>');
     Writeln(FICHIER,'<ActifIncorporel>');
     Writeln(FICHIER,'<NatureActifIncorporel>'+Dataprix.actifincorporelnatureactif.text+'</NatureActifIncorporel>');
     Writeln(FICHIER,'</ActifIncorporel>');
     Writeln(FICHIER,'<OnereuxGratuit>'+Dataprix.actifincorporelonereuxgratuit.text+'</OnereuxGratuit>');
     Writeln(FICHIER,'<IdentifiantEntreprise>');
     Writeln(FICHIER,'<MatriculeFiscal>'+Dataprix.actifincorporelmatriculefiscal.text+'</MatriculeFiscal>');
     Writeln(FICHIER,'</IdentifiantEntreprise>');
     Writeln(FICHIER,'<RaisonSociale>'+Dataprix.actifincorporelraisonsociale.text+'</RaisonSociale>');
     Writeln(FICHIER,'<QualiteEntreprise>');
     if trim(Dataprix.actifincorporelqualite.text)<>'' then Writeln(FICHIER,'<Qualite>'+Dataprix.actifincorporelqualite.text+'</Qualite>')
     else   Writeln(FICHIER,'<AutreQualite>'+Dataprix.actifincorporelAutrequalite.text+'</AutreQualite>');
     Writeln(FICHIER,'</QualiteEntreprise>');
     Writeln(FICHIER,'<NatureRelationEntreprise>');
     Writeln(FICHIER,'<NatureRelation>'+Dataprix.actifincorporelnaturerelation.value+'</NatureRelation>');
     Writeln(FICHIER,'</NatureRelationEntreprise>');
     Writeln(FICHIER,'</LigneActifIncorporel>');
     Dataprix.actifincorporel.Next;
    end;
   Writeln(FICHIER,'</ListeActifsIncorporels>');
  end;
 Dataprix.actifcorporel.Close;
 Dataprix.actifcorporel.Params[0].Value:=mfiscal;
 Dataprix.actifcorporel.Params[1].Value:=exercice;
 Dataprix.actifcorporel.open;
 Dataprix.actifcorporel.first;
 if not(Dataprix.actifcorporel.Eof) THEN
 BEGIN
  Writeln(FICHIER,'<ListeActifsCorporels>');
  while not( Dataprix.actifcorporel.Eof) do
   begin
    Writeln(FICHIER,'<LigneActifCorporel>');
    Writeln(FICHIER,'<ActifCorporel>');
    Writeln(FICHIER,'<NatureActifCorporel>'+Dataprix.actifcorporelnatureactif.text+'</NatureActifCorporel>');
    Writeln(FICHIER,'</ActifCorporel>');
    Writeln(FICHIER,'<IdentifiantEntreprise>');
    Writeln(FICHIER,'<MatriculeFiscal>'+Dataprix.actifcorporelmatriculefiscal.text+'</MatriculeFiscal>');
    Writeln(FICHIER,'</IdentifiantEntreprise>');
    Writeln(FICHIER,'<RaisonSociale>'+Dataprix.actifcorporelraisonsociale.text+'</RaisonSociale>');
    Writeln(FICHIER,'<QualiteEntreprise>');
    if trim(Dataprix.actifcorporelqualite.text)<>'' then     Writeln(FICHIER,'<Qualite>'+Dataprix.actifcorporelqualite.text+'</Qualite>')
    else  Writeln(FICHIER,'<AutreQualite>'+Dataprix.actifcorporelAutrequalite.text+'</AutreQualite>');
    Writeln(FICHIER,'</QualiteEntreprise>');
    Writeln(FICHIER,'<NatureRelationEntreprise>');
    Writeln(FICHIER,'<NatureRelation>'+Dataprix.actifcorporelnaturerelation.value+'</NatureRelation>');
    Writeln(FICHIER,'</NatureRelationEntreprise>');
    Writeln(FICHIER,'</LigneActifCorporel>');
    Dataprix.actifincorporel.Next;
   end;
  Writeln(FICHIER,'</ListeActifsCorporels>');
 end;

 Writeln(FICHIER,'<RestructurationsGroupeEntreprises>');
 if  trim(Dataprix.INFOGROUPEAFFIRMATOINRESTRUCTURATION.value)='Oui' then
   Writeln(FICHIER,'<Affirmation>O</Affirmation>')
   else Writeln(FICHIER,'<Affirmation>N</Affirmation>') ;
 if trim(Dataprix.INFOGROUPEAFFIRMATOINRESTRUCTURATION.value)='Oui' then
  begin
   Writeln(FICHIER,'<Description>'+Dataprix.infogroupedescriptionrestructuration.value+'</Description>');
  end;
 Writeln(FICHIER,'</RestructurationsGroupeEntreprises>');
 Writeln(FICHIER,'</InformationsGroupeEntreprises>');

 Writeln(FICHIER,'<InformationsOperations>');

 Dataprix.montanttransactions.Close;
 Dataprix.montanttransactions.Params[0].Value:=mfiscal;
 Dataprix.montanttransactions.Params[1].Value:=exercice;
 Dataprix.montanttransactions.open;
 Dataprix.montanttransactions.First;
if not(Dataprix.montanttransactions.Eof) then
 begin

 Writeln(FICHIER,'<MontantTransactionsMethodeDeterminationPrixTransfert>');

 montanttransactions.Close;
 montanttransactions.Params[0].Value:=mfiscal;
 montanttransactions.Params[1].Value:=exercice;
 montanttransactions.Params[2].Value:='1';
 montanttransactions.open;
 montanttransactions.first;
 if not(montanttransactions.Eof) then
  begin
   Writeln(FICHIER,'<InformationsValeursExploitation>');
   T1:=0;T2:=0;
   Writeln(FICHIER,'<ValeursExploitation>');
   while not( montanttransactions.Eof) do
    begin
    if montanttransactionsTYPEMONTANT.Value='1'  then
     begin
      T1:=T1+montanttransactionsachats.VALUE;
      T2:=T2+montanttransactionsVENTES.VALUE;
      Writeln(FICHIER,'<LigneValeurExploitation>');
      Writeln(FICHIER,'<NatureOperationValeurExploitation>');
      Writeln(FICHIER,'<NatureOperation>'+montanttransactionsnatureoperations.text+'</NatureOperation>');
      Writeln(FICHIER,'</NatureOperationValeurExploitation>');
      Writeln(FICHIER,'<AchatsDepenses>'+FORMATFLOAT('##############0####',montanttransactionsachats.VALUE)+'</AchatsDepenses>');
      Writeln(FICHIER,'<VentesRevenus>'+FORMATFLOAT('##############0####',montanttransactionsventes.VALUE)+'</VentesRevenus>');
      Writeln(FICHIER,'<IdentifiantEntreprise>');
      if trim(montanttransactionsmatriculefiscal.text)<>'' then
           Writeln(FICHIER,'<MatriculeFiscal>'+trim(montanttransactionsmatriculefiscal.text)+'</MatriculeFiscal>')
      else
       begin
        if trim(montanttransactionsAUTREIDENTIFIANT.text)<>'' then
         begin
          Writeln(FICHIER,'<AutreIdentifiant>');
          Writeln(FICHIER,'<Identifiant>'+trim(montanttransactionsAUTREIDENTIFIANT.text)+'</Identifiant>');
          Writeln(FICHIER,'<EtatTerritoire>'+trim(montanttransactionsETATTERRITORIAL.text)+'</EtatTerritoire>');
          Writeln(FICHIER,'</AutreIdentifiant>');
         end;
       end;
      Writeln(FICHIER,'</IdentifiantEntreprise>');
      Writeln(FICHIER,'<RaisonSociale>'+montanttransactionsraisonsociale.text+'</RaisonSociale>');
      Writeln(FICHIER,'<QualiteEntreprise>');
      if trim(montanttransactionsqualite.text)<>'' then  Writeln(FICHIER,'<Qualite>'+montanttransactionsqualite.text+'</Qualite>')
      else  Writeln(FICHIER,'<AutreQualite>'+montanttransactionsAutrequalite.text+'</AutreQualite>');
      Writeln(FICHIER,'</QualiteEntreprise>');
      Writeln(FICHIER,'<NatureRelationEntreprise>');
      if montanttransactionsNATURRELATION.value<>'' then
        Writeln(FICHIER,'<NatureRelation>'+montanttransactionsNATURRELATION.value+'</NatureRelation>')
      else
         begin
           Writeln(FICHIER,'<AutreNatureRelation>'+montanttransactionsAUTRENATURERELATIONS.value+'</AutreNatureRelation>')
         end;
      Writeln(FICHIER,'</NatureRelationEntreprise>');
      Writeln(FICHIER,'<MethodePrixTransfert>');
      Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsmethode.value)+'</MethodeDeterminationPrixTransfert>');
      Writeln(FICHIER,'</MethodePrixTransfert>');
      if  trim(montanttransactionsCHANGEMENTMETHODE.value)<>'' then
       begin
        Writeln(FICHIER,'<ChangementMethodePrixTransfert>');
        Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+montanttransactionsCHANGEMENTMETHODE.value+'</MethodeDeterminationPrixTransfert>');
        Writeln(FICHIER,'</ChangementMethodePrixTransfert>');
       end;
      Writeln(FICHIER,'</LigneValeurExploitation>');
     end;
     montanttransactions.Next;
    end;
   Writeln(FICHIER,'</ValeursExploitation>');
   Writeln(FICHIER,'<TotalAchatsDepensesValeursExploitation>'+FORMATFLOAT('##############0####',T1)+'</TotalAchatsDepensesValeursExploitation>');
   Writeln(FICHIER,'<TotalVentesRevenusValeursExploitation>'+FORMATFLOAT('##############0####',T2)+'</TotalVentesRevenusValeursExploitation>');
   Writeln(FICHIER,'</InformationsValeursExploitation>');
  end; // valeurs d'exploitations

 T1:=0;T2:=0;

 montanttransactions.Close;
 montanttransactions.Params[0].Value:=mfiscal;
 montanttransactions.Params[1].Value:=exercice;
 montanttransactions.Params[2].Value:='2';
 montanttransactions.open;
 montanttransactions.first;
 if not(montanttransactions.Eof) then
  begin
  Writeln(FICHIER,'<InformationsRemunerationsBiensCorporelsIncorporels>');
  Writeln(FICHIER,'<RemunerationsBiensCorporelsIncorporels>');
  while not(montanttransactions.Eof) do
   begin
   if montanttransactionsTYPEMONTANT.Value='2'  then
    begin
     T1:=T1+montanttransactionsachats.VALUE;
     T2:=T2+montanttransactionsVENTES.VALUE;
     Writeln(FICHIER,'<LigneRemunerationBiens>');
     Writeln(FICHIER,'<NatureOperationRemunerationBiens>');
     Writeln(FICHIER,'<NatureOperation>'+montanttransactionsnatureoperations.text+'</NatureOperation>');
     Writeln(FICHIER,'</NatureOperationRemunerationBiens>');
     Writeln(FICHIER,'<AchatsDepenses>'+FORMATFLOAT('##############0####',montanttransactionsachats.VALUE)+'</AchatsDepenses>');
     Writeln(FICHIER,'<VentesRevenus>'+FORMATFLOAT('##############0####',montanttransactionsventes.VALUE)+'</VentesRevenus>');
     Writeln(FICHIER,'<IdentifiantEntreprise>');
     if trim(montanttransactionsmatriculefiscal.text)<>'' then
           Writeln(FICHIER,'<MatriculeFiscal>'+trim(montanttransactionsmatriculefiscal.text)+'</MatriculeFiscal>')
      else
       begin
        if trim(montanttransactionsAUTREIDENTIFIANT.text)<>'' then
         begin
          Writeln(FICHIER,'<AutreIdentifiant>');
          Writeln(FICHIER,'<Identifiant>'+trim(montanttransactionsAUTREIDENTIFIANT.text)+'</Identifiant>');
          Writeln(FICHIER,'<EtatTerritoire>'+trim(montanttransactionsETATTERRITORIAL.text)+'</EtatTerritoire>');
          Writeln(FICHIER,'</AutreIdentifiant>');
         end;
       end;
     Writeln(FICHIER,'</IdentifiantEntreprise>');
     Writeln(FICHIER,'<RaisonSociale>'+montanttransactionsraisonsociale.text+'</RaisonSociale>');
     Writeln(FICHIER,'<QualiteEntreprise>');
     if trim(montanttransactionsqualite.text)<>'' then  Writeln(FICHIER,'<Qualite>'+montanttransactionsqualite.text+'</Qualite>')
      else  Writeln(FICHIER,'<AutreQualite>'+montanttransactionsAutrequalite.text+'</AutreQualite>');
     Writeln(FICHIER,'</QualiteEntreprise>');
     Writeln(FICHIER,'<NatureRelationEntreprise>');
      if montanttransactionsNATURRELATION.value<>'' then
        Writeln(FICHIER,'<NatureRelation>'+montanttransactionsNATURRELATION.value+'</NatureRelation>')
      else
         begin
           Writeln(FICHIER,'<AutreNatureRelation>'+montanttransactionsAUTRENATURERELATIONS.value+'</AutreNatureRelation>')
         end;
     Writeln(FICHIER,'</NatureRelationEntreprise>');
     Writeln(FICHIER,'<MethodePrixTransfert>');
     Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsmethode.value)+'</MethodeDeterminationPrixTransfert>');
     Writeln(FICHIER,'</MethodePrixTransfert>');
     if  trim(montanttransactionsCHANGEMENTMETHODE.value)<>'' then
       begin
       Writeln(FICHIER,'<ChangementMethodePrixTransfert>');
       Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsCHANGEMENTMETHODE.value)+'</MethodeDeterminationPrixTransfert>');
       Writeln(FICHIER,'</ChangementMethodePrixTransfert>');
      end;
     Writeln(FICHIER,'</LigneRemunerationBiens>');
    end;
    montanttransactions.Next;
   end;
   Writeln(FICHIER,'</RemunerationsBiensCorporelsIncorporels>');
   Writeln(FICHIER,'<TotalAchatsDepensesRemunerationsBiensCorporelsIncorporels>'+FORMATFLOAT('##############0####',T1)+'</TotalAchatsDepensesRemunerationsBiensCorporelsIncorporels>');
   Writeln(FICHIER,'<TotalVentesRevenusRemunerationsBiensCorporelsIncorporels>'+FORMATFLOAT('##############0####',T2)+'</TotalVentesRevenusRemunerationsBiensCorporelsIncorporels>');
   Writeln(FICHIER,'</InformationsRemunerationsBiensCorporelsIncorporels>');
  end;// fin 2remunérations biens corporels incorporels

  T1:=0;T2:=0;

 montanttransactions.Close;
 montanttransactions.Params[0].Value:=mfiscal;
 montanttransactions.Params[1].Value:=exercice;
 montanttransactions.Params[2].Value:='3';
 montanttransactions.open;
 montanttransactions.first;
 if not(montanttransactions.Eof) then
  begin
  Writeln(FICHIER,'<InformationsServices>');
  Writeln(FICHIER,'<Services>');
  while not( montanttransactions.Eof) do
   begin
   if montanttransactionsTYPEMONTANT.Value='3'  then
    begin
    T1:=T1+montanttransactionsachats.VALUE;
    T2:=T2+montanttransactionsVENTES.VALUE;
    Writeln(FICHIER,'<LigneService>');
    Writeln(FICHIER,'<NatureOperationService>');
    Writeln(FICHIER,'<NatureOperation>'+montanttransactionsnatureoperations.text+'</NatureOperation>');
    Writeln(FICHIER,'</NatureOperationService>');
    Writeln(FICHIER,'<AchatsDepenses>'+FORMATFLOAT('##############0####',montanttransactionsachats.VALUE)+'</AchatsDepenses>');
    Writeln(FICHIER,'<VentesRevenus>'+FORMATFLOAT('##############0####',montanttransactionsventes.VALUE)+'</VentesRevenus>');
    Writeln(FICHIER,'<IdentifiantEntreprise>');
    if trim(montanttransactionsmatriculefiscal.text)<>'' then
           Writeln(FICHIER,'<MatriculeFiscal>'+trim(montanttransactionsmatriculefiscal.text)+'</MatriculeFiscal>')
      else
       begin
        if trim(montanttransactionsAUTREIDENTIFIANT.text)<>'' then
         begin
          Writeln(FICHIER,'<AutreIdentifiant>');
          Writeln(FICHIER,'<Identifiant>'+trim(montanttransactionsAUTREIDENTIFIANT.text)+'</Identifiant>');
          Writeln(FICHIER,'<EtatTerritoire>'+trim(montanttransactionsETATTERRITORIAL.text)+'</EtatTerritoire>');
          Writeln(FICHIER,'</AutreIdentifiant>');
         end;
       end;
    Writeln(FICHIER,'</IdentifiantEntreprise>');
    Writeln(FICHIER,'<RaisonSociale>'+montanttransactionsraisonsociale.text+'</RaisonSociale>');
    Writeln(FICHIER,'<QualiteEntreprise>');
    if trim(montanttransactionsqualite.text)<>'' then  Writeln(FICHIER,'<Qualite>'+montanttransactionsqualite.text+'</Qualite>')
      else  Writeln(FICHIER,'<AutreQualite>'+montanttransactionsAutrequalite.text+'</AutreQualite>');
    Writeln(FICHIER,'</QualiteEntreprise>');
    Writeln(FICHIER,'<NatureRelationEntreprise>');
     if montanttransactionsNATURRELATION.value<>'' then
        Writeln(FICHIER,'<NatureRelation>'+montanttransactionsNATURRELATION.value+'</NatureRelation>')
      else
         begin
           Writeln(FICHIER,'<AutreNatureRelation>'+montanttransactionsAUTRENATURERELATIONS.value+'</AutreNatureRelation>')
         end;
    Writeln(FICHIER,'</NatureRelationEntreprise>');
    Writeln(FICHIER,'<MethodePrixTransfert>');
    Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsmethode.value)+'</MethodeDeterminationPrixTransfert>');
    Writeln(FICHIER,'</MethodePrixTransfert>');
    if  trim(montanttransactionsCHANGEMENTMETHODE.value)<>'' then
      begin
       Writeln(FICHIER,'<ChangementMethodePrixTransfert>');
       Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsCHANGEMENTMETHODE.value)+'</MethodeDeterminationPrixTransfert>');
       Writeln(FICHIER,'</ChangementMethodePrixTransfert>');
      end;
    Writeln(FICHIER,'</LigneService>');
    end;
    montanttransactions.Next;
   end;
   Writeln(FICHIER,'</Services>');
   Writeln(FICHIER,'<TotalAchatsDepensesServices>'+FORMATFLOAT('##############0####',T1)+'</TotalAchatsDepensesServices>');
   Writeln(FICHIER,'<TotalVentesRevenusServices>'+FORMATFLOAT('##############0####',T2)+'</TotalVentesRevenusServices>');
   Writeln(FICHIER,'</InformationsServices>');
  end;  // fin 3 informations services


 T1:=0;T2:=0;
 montanttransactions.Close;
 montanttransactions.Params[0].Value:=mfiscal;
 montanttransactions.Params[1].Value:=exercice;
 montanttransactions.Params[2].Value:='4';
 montanttransactions.open;
 montanttransactions.first;
 if not(montanttransactions.Eof) then
 begin
  Writeln(FICHIER,'<InformationsOperationsFinancieres>');
  Writeln(FICHIER,'<OperationsFinancieres>');
  while not(montanttransactions.Eof) do
   begin
   if montanttransactionsTYPEMONTANT.Value='4'  then
    begin
     T1:=T1+montanttransactionsachats.VALUE;
     T2:=T2+montanttransactionsVENTES.VALUE;
     Writeln(FICHIER,'<LigneOperationFinanciere>');
     Writeln(FICHIER,'<NatureOperationFinanciere>');
     Writeln(FICHIER,'<NatureOperation>'+montanttransactionsnatureoperations.text+'</NatureOperation>');
     Writeln(FICHIER,'</NatureOperationFinanciere>');
     Writeln(FICHIER,'<AchatsDepenses>'+FORMATFLOAT('##############0####',montanttransactionsachats.VALUE)+'</AchatsDepenses>');
     Writeln(FICHIER,'<VentesRevenus>'+FORMATFLOAT('##############0####',montanttransactionsventes.VALUE)+'</VentesRevenus>');
     Writeln(FICHIER,'<IdentifiantEntreprise>');
     if trim(montanttransactionsmatriculefiscal.text)<>'' then
           Writeln(FICHIER,'<MatriculeFiscal>'+trim(montanttransactionsmatriculefiscal.text)+'</MatriculeFiscal>')
      else
       begin
        if trim(montanttransactionsAUTREIDENTIFIANT.text)<>'' then
         begin
          Writeln(FICHIER,'<AutreIdentifiant>');
          Writeln(FICHIER,'<Identifiant>'+trim(montanttransactionsAUTREIDENTIFIANT.text)+'</Identifiant>');
          Writeln(FICHIER,'<EtatTerritoire>'+trim(montanttransactionsETATTERRITORIAL.text)+'</EtatTerritoire>');
          Writeln(FICHIER,'</AutreIdentifiant>');
         end;
       end;
     Writeln(FICHIER,'</IdentifiantEntreprise>');
     Writeln(FICHIER,'<RaisonSociale>'+montanttransactionsraisonsociale.text+'</RaisonSociale>');
     Writeln(FICHIER,'<QualiteEntreprise>');
     if trim(montanttransactionsqualite.text)<>'' then  Writeln(FICHIER,'<Qualite>'+montanttransactionsqualite.text+'</Qualite>')
      else  Writeln(FICHIER,'<AutreQualite>'+montanttransactionsAutrequalite.text+'</AutreQualite>');
     Writeln(FICHIER,'</QualiteEntreprise>');
     Writeln(FICHIER,'<NatureRelationEntreprise>');
      if montanttransactionsNATURRELATION.value<>'' then
        Writeln(FICHIER,'<NatureRelation>'+montanttransactionsNATURRELATION.value+'</NatureRelation>')
      else
         begin
           Writeln(FICHIER,'<AutreNatureRelation>'+montanttransactionsAUTRENATURERELATIONS.value+'</AutreNatureRelation>')
         end;
     Writeln(FICHIER,'</NatureRelationEntreprise>');
     Writeln(FICHIER,'<MethodePrixTransfert>');
     Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsmethode.value)+'</MethodeDeterminationPrixTransfert>');
     Writeln(FICHIER,'</MethodePrixTransfert>');
     if  trim(montanttransactionsCHANGEMENTMETHODE.value)<>'' then
       begin
        Writeln(FICHIER,'<ChangementMethodePrixTransfert>');
        Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsCHANGEMENTMETHODE.value)+'</MethodeDeterminationPrixTransfert>');
        Writeln(FICHIER,'</ChangementMethodePrixTransfert>');
       end;
     Writeln(FICHIER,'</LigneOperationFinanciere>');
    end;
    montanttransactions.Next;
   end;
   Writeln(FICHIER,'</OperationsFinancieres>');
   Writeln(FICHIER,'<TotalAchatsDepensesOperationsFinancieres>'+FORMATFLOAT('##############0####',T1)+'</TotalAchatsDepensesOperationsFinancieres>');
   Writeln(FICHIER,'<TotalVentesRevenusOperationsFinanciere>'+FORMATFLOAT('##############0####',T2)+'</TotalVentesRevenusOperationsFinanciere>');
   Writeln(FICHIER,'</InformationsOperationsFinancieres>');
  end;  //fin 4  info opérations financières

 T1:=0;T2:=0;
 montanttransactions.Close;
 montanttransactions.Params[0].Value:=mfiscal;
 montanttransactions.Params[1].Value:=exercice;
 montanttransactions.Params[2].Value:='5';
 montanttransactions.open;
 montanttransactions.first;
 if not(montanttransactions.Eof) then
 begin
  Writeln(FICHIER,'<InformationsCessionsAcquisitionsActifs>');
  Writeln(FICHIER,'<CessionsAcquisitionsActifs>');
  while not( montanttransactions.Eof) do
   begin
   if montanttransactionsTYPEMONTANT.Value='5'  then
    begin
     T1:=T1+montanttransactionsachats.VALUE;
     T2:=T2+montanttransactionsVENTES.VALUE;
     Writeln(FICHIER,'<LigneCessionAcquisitionActif>');
     Writeln(FICHIER,'<NatureOperationCessionAcquisitionActif>');
     Writeln(FICHIER,'<NatureOperation>'+montanttransactionsnatureoperations.text+'</NatureOperation>');
     Writeln(FICHIER,'</NatureOperationCessionAcquisitionActif>');
     Writeln(FICHIER,'<AchatsDepenses>'+FORMATFLOAT('##############0####',montanttransactionsachats.VALUE)+'</AchatsDepenses>');
     Writeln(FICHIER,'<VentesRevenus>'+FORMATFLOAT('##############0####',montanttransactionsventes.VALUE)+'</VentesRevenus>');
     Writeln(FICHIER,'<IdentifiantEntreprise>');
     if trim(montanttransactionsmatriculefiscal.text)<>'' then
           Writeln(FICHIER,'<MatriculeFiscal>'+trim(montanttransactionsmatriculefiscal.text)+'</MatriculeFiscal>')
      else
       begin
        if trim(montanttransactionsAUTREIDENTIFIANT.text)<>'' then
         begin
          Writeln(FICHIER,'<AutreIdentifiant>');
          Writeln(FICHIER,'<Identifiant>'+trim(montanttransactionsAUTREIDENTIFIANT.text)+'</Identifiant>');
          Writeln(FICHIER,'<EtatTerritoire>'+trim(montanttransactionsETATTERRITORIAL.text)+'</EtatTerritoire>');
          Writeln(FICHIER,'</AutreIdentifiant>');
         end;
       end;
     Writeln(FICHIER,'</IdentifiantEntreprise>');
     Writeln(FICHIER,'<RaisonSociale>'+montanttransactionsraisonsociale.text+'</RaisonSociale>');
     Writeln(FICHIER,'<QualiteEntreprise>');
     if trim(montanttransactionsqualite.text)<>'' then  Writeln(FICHIER,'<Qualite>'+montanttransactionsqualite.text+'</Qualite>')
      else  Writeln(FICHIER,'<AutreQualite>'+montanttransactionsAutrequalite.text+'</AutreQualite>');
     Writeln(FICHIER,'</QualiteEntreprise>');
     Writeln(FICHIER,'<NatureRelationEntreprise>');
      if montanttransactionsNATURRELATION.value<>'' then
         Writeln(FICHIER,'<NatureRelation>'+montanttransactionsNATURRELATION.value+'</NatureRelation>')
      else
         begin
           Writeln(FICHIER,'<AutreNatureRelation>'+montanttransactionsAUTRENATURERELATIONS.value+'</AutreNatureRelation>')
         end;
     Writeln(FICHIER,'</NatureRelationEntreprise>');
     Writeln(FICHIER,'<MethodePrixTransfert>');
     Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsmethode.value)+'</MethodeDeterminationPrixTransfert>');
     Writeln(FICHIER,'</MethodePrixTransfert>');
     if  trim(montanttransactionsCHANGEMENTMETHODE.value)<>'' then
       begin
        Writeln(FICHIER,'<ChangementMethodePrixTransfert>');
        Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsCHANGEMENTMETHODE.value)+'</MethodeDeterminationPrixTransfert>');
        Writeln(FICHIER,'</ChangementMethodePrixTransfert>');
       end;
     Writeln(FICHIER,'</LigneCessionAcquisitionActif>');
    end;
    montanttransactions.Next;
   end;
   Writeln(FICHIER,'</CessionsAcquisitionsActifs>');
   Writeln(FICHIER,'<TotalAchatsDepensesCessionsAcquisitionsActifs>'+FORMATFLOAT('##############0####',T1)+'</TotalAchatsDepensesCessionsAcquisitionsActifs>');
   Writeln(FICHIER,'<TotalVentesRevenusCessionsAcquisitionsActifs>'+FORMATFLOAT('##############0####',T2)+'</TotalVentesRevenusCessionsAcquisitionsActifs>');
   Writeln(FICHIER,'</InformationsCessionsAcquisitionsActifs>');
  end;   // fin 5 cessions acquisitions

 T1:=0;T2:=0;

 montanttransactions.Close;
 montanttransactions.Params[0].Value:=mfiscal;
 montanttransactions.Params[1].Value:=exercice;
 montanttransactions.Params[2].Value:='6';
 montanttransactions.open;
 montanttransactions.first;
 if not(montanttransactions.Eof) then
  begin
   Writeln(FICHIER,'<InformationsAutresOperations>');
   Writeln(FICHIER,'<AutresOperations>');
   while not( montanttransactions.Eof) do
   begin
    if montanttransactionsTYPEMONTANT.Value='6'  then
     begin
      T1:=T1+montanttransactionsachats.VALUE;
      T2:=T2+montanttransactionsVENTES.VALUE;
      Writeln(FICHIER,'<LigneAutreOperation>');
      Writeln(FICHIER,'<NatureAutreOperation>');
      Writeln(FICHIER,'<NatureOperation>'+montanttransactionsnatureoperations.text+'</NatureOperation>');
      Writeln(FICHIER,'</NatureAutreOperation>');
      Writeln(FICHIER,'<AchatsDepenses>'+FORMATFLOAT('##############0####',montanttransactionsachats.VALUE)+'</AchatsDepenses>');
      Writeln(FICHIER,'<VentesRevenus>'+FORMATFLOAT('##############0####',montanttransactionsventes.VALUE)+'</VentesRevenus>');
      Writeln(FICHIER,'<IdentifiantEntreprise>');
      if trim(montanttransactionsmatriculefiscal.text)<>'' then
           Writeln(FICHIER,'<MatriculeFiscal>'+trim(montanttransactionsmatriculefiscal.text)+'</MatriculeFiscal>')
      else
       begin
        if trim(montanttransactionsAUTREIDENTIFIANT.text)<>'' then
         begin
          Writeln(FICHIER,'<AutreIdentifiant>');
          Writeln(FICHIER,'<Identifiant>'+trim(montanttransactionsAUTREIDENTIFIANT.text)+'</Identifiant>');
          Writeln(FICHIER,'<EtatTerritoire>'+trim(montanttransactionsETATTERRITORIAL.text)+'</EtatTerritoire>');
          Writeln(FICHIER,'</AutreIdentifiant>');
         end;
       end;
      Writeln(FICHIER,'</IdentifiantEntreprise>');
      Writeln(FICHIER,'<RaisonSociale>'+montanttransactionsraisonsociale.text+'</RaisonSociale>');
      Writeln(FICHIER,'<QualiteEntreprise>');
      if trim(montanttransactionsqualite.text)<>'' then  Writeln(FICHIER,'<Qualite>'+montanttransactionsqualite.text+'</Qualite>')
      else  Writeln(FICHIER,'<AutreQualite>'+montanttransactionsAutrequalite.text+'</AutreQualite>');
      Writeln(FICHIER,'</QualiteEntreprise>');
      Writeln(FICHIER,'<NatureRelationEntreprise>');
       if montanttransactionsNATURRELATION.value<>'' then
        Writeln(FICHIER,'<NatureRelation>'+montanttransactionsNATURRELATION.value+'</NatureRelation>')
      else
         begin
           Writeln(FICHIER,'<AutreNatureRelation>'+montanttransactionsAUTRENATURERELATIONS.value+'</AutreNatureRelation>')
         end;
      Writeln(FICHIER,'</NatureRelationEntreprise>');
      Writeln(FICHIER,'<MethodePrixTransfert>');
      Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsmethode.value)+'</MethodeDeterminationPrixTransfert>');
      Writeln(FICHIER,'</MethodePrixTransfert>');
      if  trim(montanttransactionsCHANGEMENTMETHODE.value)<>'' then
       begin
        Writeln(FICHIER,'<ChangementMethodePrixTransfert>');
        Writeln(FICHIER,'<MethodeDeterminationPrixTransfert>'+trim(montanttransactionsCHANGEMENTMETHODE.value)+'</MethodeDeterminationPrixTransfert>');
        Writeln(FICHIER,'</ChangementMethodePrixTransfert>');
       end;
      Writeln(FICHIER,'</LigneAutreOperation>');
     end;
     montanttransactions.Next;
    end;
    Writeln(FICHIER,'</AutresOperations>');
    Writeln(FICHIER,'<TotalAchatsDepensesAutresOperations>'+FORMATFLOAT('##############0####',T1)+'</TotalAchatsDepensesAutresOperations>');
    Writeln(FICHIER,'<TotalVentesRevenusAutresOperations>'+FORMATFLOAT('##############0####',T2)+'</TotalVentesRevenusAutresOperations>');
    Writeln(FICHIER,'</InformationsAutresOperations>');
   end;  // fin infor autres opérations

     if  trim(Dataprix.societeDESCRIPTIONREGIMEFISCAL.value)<>'' then
        Writeln(FICHIER,'<DescriptionTransactionsRegimeFiscalPrivilegie>'+Dataprix.societeDESCRIPTIONREGIMEFISCAL.value+'</DescriptionTransactionsRegimeFiscalPrivilegie>');

    Writeln(FICHIER,'</MontantTransactionsMethodeDeterminationPrixTransfert>');
  end;

 Dataprix.Empruntsprets.close;
 Dataprix.Empruntsprets.Params[0].value:=MFiscal;
 Dataprix.Empruntsprets.Params[1].value:=Exercice;
 Dataprix.Empruntsprets.open;
 Dataprix.Empruntsprets.first;
 if not(Dataprix.Empruntsprets.eof) then
 begin
  Writeln(FICHIER,'<InformationsPretsEmprunts>');
  Empruntsprets.close;
  Empruntsprets.Params[0].value:=MFiscal;
  Empruntsprets.Params[1].value:=Exercice;
  Empruntsprets.open;
  Empruntsprets.first;
  T1:=0;T2:=0; T3:=0;
   if not(Empruntsprets.Eof) then
    begin
     Writeln(FICHIER,'<PretsAccordes>');
     while not(Empruntsprets.Eof) do
       begin
       T1:=T1+EmpruntspretsAUGMENTATIONS.VALUE;
       T2:=T2+EmpruntspretsDIMINUTIONS.VALUE;
       T3:=T3+EmpruntspretsSOLDEOUVERTURE.VALUE;
       Writeln(FICHIER,'<LignePretAccorde>');
       Writeln(FICHIER,'<IdentifiantEntreprise>');
       Writeln(FICHIER,'<MatriculeFiscal>'+Empruntspretsmatriculefiscal.text+'</MatriculeFiscal>');
       Writeln(FICHIER,'</IdentifiantEntreprise>');
       Writeln(FICHIER,'<RaisonSociale>'+Empruntspretsraisonsociale.text+'</RaisonSociale>');
       Writeln(FICHIER,'<QualiteEntreprise>');
       if  trim(Empruntspretsqualite.text)<>'' then Writeln(FICHIER,'<Qualite>'+Empruntspretsqualite.text+'</Qualite>')
       else Writeln(FICHIER,'<AutreQualite>'+EmpruntspretsAutrequalite.text+'</AutreQualite>');
        Writeln(FICHIER,'</QualiteEntreprise>');
        Writeln(FICHIER,'<NatureRelationEntreprise>');
        Writeln(FICHIER,'<NatureRelation>'+Empruntspretsnaturerelation.value+'</NatureRelation>');
        Writeln(FICHIER,'</NatureRelationEntreprise>');
        Writeln(FICHIER,'<SoldeOuverture>'+formatfloat('##############0####',Empruntspretssoldeouverture.value)+'</SoldeOuverture>');
        Writeln(FICHIER,'<Devise>'+Dataprix.Empruntspretsdevise.text+'</Devise>');
        Writeln(FICHIER,'<MouvementsAugmentations>'+formatfloat('##############0####',Empruntspretsaugmentations.value)+'</MouvementsAugmentations>');
        Writeln(FICHIER,'<MouvementsDiminutions>'+formatfloat('##############0####',Empruntspretsdiminutions.value)+'</MouvementsDiminutions>');
        Writeln(FICHIER,'<SoldeCloture>'+formatfloat('##############0####',Empruntspretssoldecloture.value)+'</SoldeCloture>');
        Writeln(FICHIER,'<PretsInterets>'+Empruntspretssoldecloture.text+'</PretsInterets>');
        Writeln(FICHIER,'<TauxInterets>'+formatfloat('#0###',Empruntspretssoldecloture.value)+'</TauxInterets>');
        Writeln(FICHIER,'</LignePretAccorde>');
        Empruntsprets.Next;
       end;
      Writeln(FICHIER,'</PretsAccordes>');
    end;
     Empruntsprets.close;
     Empruntsprets.SQL.Clear;
     Empruntsprets.SQL.Add('select *   from   OPERATIONPRETEMPRUNT  where mfiscal=:mfiscal and exercice=:exercice and TYPEPRETEMPRUNT=''E'' order by   Matriculefiscal, AUTREIDENTIFIANT ');
     Empruntsprets.Params[0].value:=MFiscal;
     Empruntsprets.Params[1].value:=Exercice;
     Empruntsprets.open;
     Empruntsprets.first;
     T1:=0;T2:=0; T3:=0;
     if not(Empruntsprets.Eof) then
      begin
       Writeln(FICHIER,'<EmpruntsContractes>');
      while not(Empruntsprets.Eof) do
       begin
        T1:=T1+EmpruntspretsAUGMENTATIONS.VALUE;
        T2:=T2+EmpruntspretsDIMINUTIONS.VALUE;
        T3:=T3+EmpruntspretsSOLDEOUVERTURE.VALUE;
        Writeln(FICHIER,'<LigneEmpruntContracte>');
        Writeln(FICHIER,'<IdentifiantEntreprise>');
        Writeln(FICHIER,'<MatriculeFiscal>'+Empruntspretsmatriculefiscal.text+'</MatriculeFiscal>');
        Writeln(FICHIER,'</IdentifiantEntreprise>');
        Writeln(FICHIER,'<RaisonSociale>'+Empruntspretsraisonsociale.text+'</RaisonSociale>');
        Writeln(FICHIER,'<QualiteEntreprise>');
        if trim(Empruntspretsqualite.text)<>'' then  Writeln(FICHIER,'<Qualite>'+Empruntspretsqualite.text+'</Qualite>')
        else Writeln(FICHIER,'<AutreQualite>'+EmpruntspretsAutrequalite.text+'</AutreQualite>');
        Writeln(FICHIER,'</QualiteEntreprise>');
        Writeln(FICHIER,'<NatureRelationEntreprise>');
        Writeln(FICHIER,'<NatureRelation>'+Empruntspretsnaturerelation.value+'</NatureRelation>');
        Writeln(FICHIER,'</NatureRelationEntreprise>');
        Writeln(FICHIER,'<SoldeOuverture>'+formatfloat('##############0####',Empruntspretssoldeouverture.value)+'</SoldeOuverture>');
        Writeln(FICHIER,'<Devise>'+Dataprix.Empruntspretsdevise.text+'</Devise>');
        Writeln(FICHIER,'<MouvementsAugmentations>'+formatfloat('##############0####',Empruntspretsaugmentations.value)+'</MouvementsAugmentations>');
        Writeln(FICHIER,'<MouvementsDiminutions>'+formatfloat('##############0####',Empruntspretsdiminutions.value)+'</MouvementsDiminutions>');
        Writeln(FICHIER,'<SoldeCloture>'+formatfloat('##############0####',Empruntspretssoldecloture.value)+'</SoldeCloture>');
        Writeln(FICHIER,'<EmpruntInterets>'+Empruntspretssoldecloture.text+'</EmpruntInterets>');
        Writeln(FICHIER,'<TauxInterets>'+formatfloat('#0###',Empruntspretssoldecloture.value)+'</TauxInterets>');
        Writeln(FICHIER,'</LigneEmpruntContracte>');
        Empruntsprets.Next;
      end;
      Writeln(FICHIER,'</EmpruntsContractes>');
    end;
    Writeln(FICHIER,'</InformationsPretsEmprunts>');
   end;
  Writeln(FICHIER,'<OperationsSansContrepartieOuAvecContrepartieNonMonetaire>');
  Writeln(FICHIER,'<InformationsSurBiensOuServicesSansContrePartie>');
  if  Dataprix.societeaffirmationbienservice.value='Oui' then
      Writeln(FICHIER,'<Affirmation>O</Affirmation>')
  else  Writeln(FICHIER,'<Affirmation>N</Affirmation>');

  operationssanscontre.close;
  operationssanscontre.Params[0].Value:=mfiscal;
  operationssanscontre.params[1].Value:=exercice;
  operationssanscontre.params[2].Value:='S';
  operationssanscontre.open;
  operationssanscontre.first;
  if not(operationssanscontre.eof) then
  begin
   T1:=0;T2:=0; T3:=0;
   Writeln(FICHIER,'<BiensOuServicesSansContrePartie>');
   while not(operationssanscontre.Eof) do
    begin
     Writeln(FICHIER,'<LigneBiensOuServicesSansContrePartie>');
     Writeln(FICHIER,'<IdentifiantEntreprise>');
     Writeln(FICHIER,'<MatriculeFiscal>'+operationssanscontrematriculefiscal.text+'</MatriculeFiscal>');
     Writeln(FICHIER,'</IdentifiantEntreprise>');
     Writeln(FICHIER,'<RaisonSociale>'+operationssanscontreraisonsociale.text+'</RaisonSociale>');
     Writeln(FICHIER,'<QualiteEntreprise>');
     if trim(operationssanscontrequalite.text)<>'' then Writeln(FICHIER,'<Qualite>'+operationssanscontrequalite.text+'</Qualite>')
     else Writeln(FICHIER,'<AutreQualite>'+operationssanscontreAutrequalite.text+'</AutreQualite>');
     Writeln(FICHIER,'</QualiteEntreprise>');
     Writeln(FICHIER,'<NatureRelationEntreprise>');
     Writeln(FICHIER,'<NatureRelation>'+operationssanscontrenaturerelation.value+'</NatureRelation>');
     Writeln(FICHIER,'</NatureRelationEntreprise>');        
     Writeln(FICHIER,'<NatureBiensOuService>'+operationssanscontrenaturebienservice.value+'</NatureBiensOuService>');
     Writeln(FICHIER,'<NatureContrepartie>'+operationssanscontreNATURECONTREPARTIE.value+'</NatureContrepartie>');
     Writeln(FICHIER,'</LigneBiensOuServicesSansContrePartie>');
     operationssanscontre.Next;
  end;
   Writeln(FICHIER,'</BiensOuServicesSansContrePartie>');
 end;
   Writeln(FICHIER,'</InformationsSurBiensOuServicesSansContrePartie>');
  

 T1:=0;T2:=0; T3:=0;
 Writeln(FICHIER,'<InformationsSurContrepartieNonMonetairePourBiensOuServices>');
 if Dataprix.societeAFFIRMATIONBIENSERVICEAVECCONTR.value='Oui' then
     Writeln(FICHIER,'<Affirmation>O</Affirmation>')
  else  Writeln(FICHIER,'<Affirmation>N</Affirmation>');

  operationssanscontre.close;
  operationssanscontre.Params[0].Value:=mfiscal;
  operationssanscontre.params[1].Value:=exercice;
  operationssanscontre.params[2].Value:='A';
  operationssanscontre.open;
  operationssanscontre.first;
  if not(operationssanscontre.eof) then
  begin
    Writeln(FICHIER,'<ContrepartieNonMonetairePourBiensOuServices>');
    while not(operationssanscontre.eof)  do
     begin
      Writeln(FICHIER,'<LigneContrepartieNonMonetairePourBiensOuServices>');
      Writeln(FICHIER,'<IdentifiantEntreprise>');
      Writeln(FICHIER,'<MatriculeFiscal>'+operationssanscontrematriculefiscal.text+'</MatriculeFiscal>');
      Writeln(FICHIER,'</IdentifiantEntreprise>');
      Writeln(FICHIER,'<RaisonSociale>'+operationssanscontreraisonsociale.text+'</RaisonSociale>');
      Writeln(FICHIER,'<QualiteEntreprise>');
      if trim(operationssanscontrequalite.text)<>'' then Writeln(FICHIER,'<Qualite>'+operationssanscontrequalite.text+'</Qualite>')
      else Writeln(FICHIER,'<AutreQualite>'+operationssanscontreAutrequalite.text+'</AutreQualite>');
      Writeln(FICHIER,'</QualiteEntreprise>');
      Writeln(FICHIER,'<NatureRelationEntreprise>');
      Writeln(FICHIER,'<NatureRelation>'+operationssanscontrenaturerelation.value+'</NatureRelation>');
      Writeln(FICHIER,'</NatureRelationEntreprise>');
      Writeln(FICHIER,'<NatureBiensOuService>'+operationssanscontrenaturebienservice.value+'</NatureBiensOuService>');
      Writeln(FICHIER,'<NatureContrepartie>'+operationssanscontreNATURECONTREPARTIE.value+'</NatureContrepartie>');
      Writeln(FICHIER,'</LigneContrepartieNonMonetairePourBiensOuServices>');
      Dataprix.operationssanscontre.Next;
    end;
    Writeln(FICHIER,'</ContrepartieNonMonetairePourBiensOuServices>');
   end;
   Writeln(FICHIER,'</InformationsSurContrepartieNonMonetairePourBiensOuServices>');
   Writeln(FICHIER,'</OperationsSansContrepartieOuAvecContrepartieNonMonetaire>');

   Writeln(FICHIER,'<InformationsOperationsAccordsPrealablesOuRescritsFiscaux>');
   if  Dataprix.societeAFFIRMATIONACCORDPREALABLE.value='Oui' then
     Writeln(FICHIER,'<Affirmation>O</Affirmation>')
   else Writeln(FICHIER,'<Affirmation>N</Affirmation>');

   Dataprix.operationsaccord.close;
   Dataprix.operationsaccord.Params[0].Value:=mfiscal;
   Dataprix.operationsaccord.params[1].Value:=exercice;
   Dataprix.operationsaccord.open;
   Dataprix.operationsaccord.first;
 IF NOT(Dataprix.operationsaccord.eof) then
  begin
   Writeln(FICHIER,'<OperationsAccordsPrealablesOuRescritsFiscaux>');
   while not(Dataprix.operationsaccord.Eof) do
    begin
     Writeln(FICHIER,'<LigneOperationsAccordsPrealablesOuRescritsFiscaux>');
     Writeln(FICHIER,'<IdentifiantEntreprise>');
     Writeln(FICHIER,'<MatriculeFiscal>'+Dataprix.operationsaccordmatriculefiscal.text+'</MatriculeFiscal>');
     Writeln(FICHIER,'</IdentifiantEntreprise>');
     Writeln(FICHIER,'<RaisonSociale>'+Dataprix.operationsaccordraisonsociale.text+'</RaisonSociale>');
     Writeln(FICHIER,'<QualiteEntreprise>');
     if trim(Dataprix.operationsaccordqualite.text)<>'' then Writeln(FICHIER,'<Qualite>'+Dataprix.operationsaccordqualite.text+'</Qualite>')
     else Writeln(FICHIER,'<AutreQualite>'+Dataprix.operationsaccordAutrequalite.text+'</AutreQualite>');
     Writeln(FICHIER,'</QualiteEntreprise>');
     Writeln(FICHIER,'<NatureRelationEntreprise>');
     Writeln(FICHIER,'<NatureRelation>'+Dataprix.operationsaccordnaturerelation.value+'</NatureRelation>');
     Writeln(FICHIER,'</NatureRelationEntreprise>');
     Writeln(FICHIER,'<NatureOperation>'+Dataprix.operationsaccordNATUREOPERATION.value+'</NatureOperation>');
     Writeln(FICHIER,'<ExerciceDebut>'+Dataprix.operationsaccordexercicedebut.text+'</ExerciceDebut>');
     Writeln(FICHIER,'<ExerciceFin>'+Dataprix.operationsaccordexercicefin.text+'</ExerciceFin>');
     Writeln(FICHIER,'</LigneOperationsAccordsPrealablesOuRescritsFiscaux>');
     Dataprix.operationsaccord.Next;
    end;
    Writeln(FICHIER,'</OperationsAccordsPrealablesOuRescritsFiscaux>');
   end;
   Writeln(FICHIER,'</InformationsOperationsAccordsPrealablesOuRescritsFiscaux>');       
   Writeln(FICHIER,'</InformationsOperations>');
   if trim(Dataprix.societeAUTRESINFORMATIONS.text)<>''  then
   Writeln(FICHIER,'<AutresInformationsARenseignerSurDeclarationPrixTransfert>'+Dataprix.societeAUTRESINFORMATIONS.text+'</AutresInformationsARenseignerSurDeclarationPrixTransfert>');

   Writeln(FICHIER,'</PrixTransfert>');

 CloseFile(FICHIER); // ferme le fichier
 Showmessage('Fichier Xml Générer avec succés');

End;


end.

