; Autor: WinDUO Team

Name('Hromadné provázání se službami')      ; pod tímto názvem bude sestava v menu
Designed('SKL_MAN#1')           ; sestava bude dostupná z okna Adrman
Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz')  ;informace o autorovi
Descr('Hromadné přiřazení provázaných služeb')  ;popis sestavy, tento text bude v bublince

UsageFilter(Program.Sklady and Program.Strediska);

DeclareRec('Sklad');
DeclareRec('KeySklad2');
DeclareRec('KeySklad10');
KartaSluzby:Sklad;

Veta:LongInt;
LocL:LongInt;
LocL2:LongInt;
LocL3:LongInt;
LocL4:LongInt;

WnsType(-1);

Sklad:Word;
Sluzba:String[14];
Mnozstvi:Real=1;
SCim:Byte;
if(GetSignsCount(Sklad)<>0)
  SCim=1

Dialog:

DefDialog('Nastavení přiřazení',288,198)
DlgShade(-1,'',4,4,278,126)
DlgStatic(-1,'&Sklad',12,12,88)
DlgEdit(101,Sklad,100,8,42,,10,es_Right,'0123456789');
DlgOnlineHelp(101,'Zde zadáte číslo skladu skladové karty služby, se kterou budete provazovat');
DlgStatic(-1,'S&lužba číslo',12,40,88)
DlgEdit(102,Sluzba,100,36,146,,14,es_Left|es_UpperCase,' /-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ');
DlgOnlineHelp(102,'Zde zadáte číslo skladové karty služby, se kterou budete provazovat');
DlgStatic(-1,'Množství',12,68,88)
DlgEdit(103,Mnozstvi,100,64,108,,14,es_Right|es_UpperCase,'.0123456789');
DlgOnlineHelp(103,'Zde zadáte množství provázané služby');
DlgStatic(-1,'m.j.',216,68,32)
DlgDivider(12,93,230,0);
DlgStatic(-1,'Provázat s',10,104,88)
DlgCombo(104,SCim,100,100,178,256,14,CBS_DropDownList,'položkami ve filtru','označenými položkami');

DlgButton(id_OK,,150,132);
DlgButton(id_Cancel,,216,132);
if(DlgExecute(True)<>id_OK)
   Halt;

if(Length(Sluzba)=0)
  begin
    Message('Skladové číslo provazované služby musí být vyplněno !!!',mb_IconStop);
    GoTo(Dialog)
  end;
if(Mnozstvi<=0)
  begin
    Message('Množství provazované služby musí být větší než nula !!!',mb_IconStop);
    GoTo(Dialog)
  end;

KeySklad2.Length=SizeOf(KeySklad2)-1;
KeySklad2.Sklad=Swap(Sklad);
StrToChars(KeySklad2.Material,Sluzba,' ');
if(FindKey(KeySklad2,Veta))
  begin
    ReadRec(KartaSluzby,Veta);
    if(KartaSluzby.TypKarty<>1)
      begin
        Message('Zadaná karta č. '+Sluzba+' není kartou služby ',mb_IconStop);
        GoTo(Dialog)
      end;
  end else
  begin
    Message('Nebyla nalezena služba č. '+Sluzba,mb_IconStop);
    GoTo(Dialog)
  end;

if(SCim=0)
  begin
    if(not IsFilter('Sklad'))
      begin
        if(not Question('Nemáte aktivován filtr do sestav !!!'+#13+'Opravdu chcete přiřadit službu ke všem skladovým kartám ?'))
          Exit;
      end;
    InitStatus(UsedKeys(KeySklad10),'Počítám věty');
    ClearKey(KeySklad10);
    While(NextKey(KeySklad10,Veta))
      begin
        ReadRec(Sklad,Veta);
        if(InFilter(Sklad))
          begin
            if(Sklad.TypKarty=0)
              Inc(LocL3);
          end;
        Inc(LocL2);
        SetStatus(LocL2);
      end;
  end else
if(SCim=1)
  begin
    if(GetSignsCount(Sklad)=0)
      begin
        Message('Nemáte označenou žádnou skladovou položku !!!'+#13+'(Označuje se CTRL+ popřípadě CTRLALT+)',mb_IconStop);
        Exit;
      end;
    InitStatus(UsedKeys(KeySklad10),'Počítám věty');
    ClearKey(KeySklad10);
    While(NextKey(KeySklad10,Veta))
      begin
        ReadRec(Sklad,Veta);
        if(IsSigned(Sklad))
          begin
            if(Sklad.TypKarty=0)
              Inc(LocL3);
          end;
        Inc(LocL2);
        SetStatus(LocL2);
      end;
  end;
if(LocL3=0)
  begin
    Message('Nenalezena žádná položka vhodná k provázání',mb_IconInformation);
    Exit;
  end;
if(not Question('Bylo nalezeno k provázání položek: '+Str(LocL3)+#13+'Mám položky provázat se zvolenou službou ?'))
  begin
    Exit;
  end;

InitStatus(UsedKeys(KeySklad10),'Provazuji položky');

LocL2=0;

ModifyMode(True);

Beru:Boolean

ClearKey(KeySklad10);
While(NextKey(KeySklad10,Veta))
  begin
    ReadRec(Sklad,Veta);
    if(SCim=0)
      begin
        beru=InFilter(Sklad)
      end else
    if(SCim=1)
      begin
        beru=IsSigned(Sklad)
      end else
      begin
        beru=false
      end;
    if(Beru)
      begin
        if(Sklad.TypKarty=0)
          begin
            Sklad.NavaznaSluzba=KartaSluzby.Cislo;
            Sklad.BindMnozstvi=Mnozstvi;
            ModifyRec(Sklad,Veta);
            Inc(LocL4);
          end;
      end;
    Inc(LocL2);
    SetStatus(LocL2);
  end;

Message('Služba č. '+KartaSluzby.Material+' v množství: '+StrQuantity(Mnozstvi)+' byla úspěšně provázána na položek: '+Str(LocL4),mb_IconInformation);

END