WnsType(-1);

Cesta:String='d:\zona\'

TF:TagFile;
LOG:TextFile;

LocBo:Boolean
Pocet:LongInt
Ignorovano:LongInt
Veta:LongInt
ProSklad:Word
DPHNizsi:Byte=SazbaDPH(False,GetDate())
DPHVyssi:Byte=SazbaDPH(True,GetDate())
SazbaMez:Byte=(DPHVyssi-DPHNizsi)/2+DPHNizsi;
LocB:Byte
LocStr:String
ValidID:String=' /-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
Chybne:LongInt;

DeclareRec('Sklad')
DeclareRec('KeySklad2');

ModifyMode(True);

ReWrite(Log,Cesta+'import.log');

XMLName:String=FindFirstFile(Cesta+'*.xml',faReadOnly|faArchive,True);

While(Length(XMLName)<>0)
  begin
    Pocet=0
    Ignorovano=0
    Inc(ProSklad)
    SetStatusText(XMLName)

    Open(TF,XMLName);
    LocBo=FindBranch(TF,'?xml','REPORT','Detail1','Detail1','Detail1','Detail1')
    While(LocBo)
      begin
        Inc(Pocet)
        ClearRec(Sklad)
        Sklad.Kod=GetBranch(TF,'_6')
        Sklad.LNCIPA=GetBranch(TF,'_12')
        Sklad.LNCIPAD=ValDate(GetBranch(TF,'_12'))
        LocB=GetBranch(TF,'_15')
        if(LocB=0)
          Sklad.SazbaDPH=2
        else
        if(LocB<SazbaMez)
          Sklad.SazbaDPH=1
        Sklad.MJ=XTrim(GetBranch(TF,'_4'))
        Sklad.PocStav=RoundQuantity(GetBranch(TF,'_1'))
        Sklad.PocStavKC=GetBranch(TF,'_2')
        LocStr=XTrim(GetBranch(TF,'_0'))
        Sklad.Nazev=LocStr
        if(Length(Sklad.Nazev)<>Length(LocStr))
          Sklad.LongText=LocStr
        Sklad.Poznamka=XTrim(GetBranch(TF,'_13'))
        Sklad.DisplayText=Trim(GetBranch(TF,'_3'))
        Sklad.Material=ValidateStr(XTrim(GetBranch(TF,'_5')),ValidID)
        if(Length(Sklad.Material)=0)
          begin
            Inc(Chybne)
            Sklad.Material='CHYBNE '+NulL(Chybne,6);
          end;

        Sklad.Sklad=ProSklad

        KeySklad2.Length=SizeOf(KeySklad2)-1
        KeySklad2.Sklad=Swap(Sklad.Sklad)
        StrToChars(KeySklad2.Material,Sklad.Material,' ')
        if(FindKey(KeySklad2,Veta))
          begin
            Inc(Ignorovano)
          end else
          begin
            Sklad.Cislo=GetNewIdent()
            AddRec(Sklad)
          end;

        LocBo=NextBranch(TF,'Detail1')
      end;

    Writeln(Log,'Sklad: ',Str(ProSklad,3),' soubor ',XMLName,' celkem polozek: ',Str(Pocet),' z toho ignorovano ',Str(Ignorovano),' a nacteno ',Str(Pocet-Ignorovano))
    XMLName=FindNextFile(True);
  end;

end;
