Name('Import skladu ze SETO');
Designed('Skl_Man#1');
Descr('Importuje skladové karty z exportního souboru skladového programu SETO')

WnsType(-1)
ModifyMode(True)

DeclareRec('Sklad')
DeclareRec('KeySklad2')
DeclareRec('Program')
Veta:LongInt
Pos:LongInt
ValidCena:String='0123456789,.-'
ValidId:String=' /-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'];


ImpFileName:String=GetIni('IMPORT','SETO');
ImpFileName=GetFileName(ImpFileName);
if(Length(ImpFileName)=0)
  Halt;
SetIni('IMPORT','SETO',ImpFileName)

PF:TextFile;

Open(PF,ImpFileName)

LoadTranslateTab(Trans_Kamenicti);
SetTranslate(PF,True);

LocStr:String;
LocStr2:String;
LocW:Word;
LocL:LongInt;
Nacteno:LongInt;
Pridano:LongInt;

NizsiSazbaDPH:Byte=SazbaDPH(False,GetDate());

SetStatusText('Importuji karty ...');

While(not EOF(PF)) do
  begin
    LocStr=ReadLn(PF);

    ClearRec(Sklad);
    Sklad.Material=ValidateStr(XTrim(UpcaseNoCS(PickString(LocStr))),ValidID); {cislo polozky}
    if(Length(Sklad.Material)<>0)
      begin
        SetStatusRemark(Sklad.Material);
        Inc(Nacteno);
        VezmiSpecStr;
        Sklad.Nazev=LocStr2;    {nazev}
        Sklad.Druh=PickNum(LocStr);        {skupina}
        Sklad.Sklad=1
        Sklad.MJ=PickString(LocStr);       {jednotka}
        Sklad.Kod=PickString(LocStr);      {EAN}
        PickString(LocStr);                {cislo harmonickeho systemu}
        Sklad.Minimum=PickString(LocStr);  {minimalni stav}
        LocW=PickNum(LocStr);              {sazba DPH}
        if(LocW=0)
          begin
            Sklad.SazbaDPH=2
          end else
        if(LocW=NizsiSazbaDPH)
          begin
            Sklad.SazbaDPH=1
          end;
        Sklad.PocStav=PickNum(LocStr);      {ucetni stav}
        Sklad.PocStavKc=PickNum(LocStr);    {celkova nakupni cena}
        PickNum(LocStr);                    {pocatecni ucetni stav}
        PickNum(LocStr);                    {pocatecni celkova nakupni cena}
        Sklad.CenaA=PickNum(LocStr);        {1 prodejni cena}
        PickNum(LocStr);                    {1 prodejni cena s DPH}
        Sklad.CenaB=PickNum(LocStr);        {2 prodejni cena}
        PickNum(LocStr);                    {2 prodejni cena s DPH}
        Sklad.CenaC=PickNum(LocStr);        {3 prodejni cena}
        PickNum(LocStr);                    {3 prodejni cena s DPH}
        Sklad.CenaD=PickNum(LocStr);        {4 prodejni cena}
        PickNum(LocStr);                    {4 prodejni cena s DPH}
        PickString(LocStr);                 {odkaz na nasledujici seskupenou polozku}
        VezmiSpecStr;
        Sklad.Poznamka=LocStr2;  {Poznamka}
        KeySklad2.Length=16
        KeySklad2.Sklad=Swap(Sklad.Sklad)
        StrToChars(KeySklad2.Material,Sklad.Material,' ');
        if(not FindKey(KeySklad2,LocL))
          begin
            Sklad.Cislo=GetNewIdent()
            LocL=AddRec(Sklad);
            if(LocL=0)
              Halt('Nepodařilo se přidat skladovou kartu');
            Inc(Pridano);
          end else
	  begin
            Message(Sklad.Material,mb_iconinformation);
	  end;
      end;
  end;

Message('Načteno záznamů: '+Str(Nacteno)+#13+'Přidáno karet: '+Str(Pridano),mb_IconInformation);

Procedure VezmiSpecStr;
  LocStr2=PickString(LocStr);
  While(CompareStr(Copy(LocStr2,Length(LocStr2),1),'\'))
    begin
      LocStr2=Copy(LocStr2,1,Length(LocStr2)-1)+','+PickString(LocStr);
    end;
end;

END