; Autor: WinDUO Team

Name('Hromadné změna provázání')      ; 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á změna provázaných služeb')  ;popis sestavy, tento text bude v bublince

UsageFilter(Program.Sklady and Program.Strediska);

DeclareRec('Sklad');
DeclareRec('KeySklad2');
DeclareRec('KeySklad10');
KartaSluzbyOld:Sklad;
KartaSluzbyNew:Sklad;

Veta:LongInt;
LocL:LongInt;
LocL2:LongInt;
LocL3:LongInt;
LocL4:LongInt;

WnsType(-1);

Sklad_Old:Word;
Sluzba_Old:String[14];
Mnozstvi_Old:Real=1;

Sklad_New:Word;
Sluzba_New:String[14];
Mnozstvi_New:Real=1;

Pocitat:Boolean=True;

Dialog:

DefDialog('Nastavení přiřazení',260,310)
DlgShade(-1,'Původní provázaná služba',4,4,250,104)
DlgStatic(-1,'&Sklad',12,30,88)
DlgEdit(101,Sklad_Old,100,26,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,56,88)
DlgEdit(102,Sluzba_Old,100,52,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,82,88)
DlgEdit(103,Mnozstvi_Old,100,78,108,,14,es_Right|es_UpperCase,'.0123456789');
DlgOnlineHelp(103,'Zde zadáte množství provázané služby');
DlgStatic(-1,'m.j.',216,84,32)

DlgShade(-1,'Nově provázat se službou',4,112,250,104)
DlgStatic(-1,'&Sklad',12,138,88)
DlgEdit(201,Sklad_New,100,134,42,,10,es_Right,'0123456789');
DlgOnlineHelp(201,'Zde zadáte číslo skladu skladové karty služby, se kterou budete provazovat');
DlgStatic(-1,'S&lužba číslo',12,164,88)
DlgEdit(202,Sluzba_New,100,160,146,,14,es_Left|es_UpperCase,' /-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ');
DlgOnlineHelp(202,'Zde zadáte číslo skladové karty služby, se kterou budete provazovat');
DlgStatic(-1,'Množství',12,190,88)
DlgEdit(203,Mnozstvi_New,100,186,108,,14,es_Right|es_UpperCase,'.0123456789');
DlgOnlineHelp(203,'Zde zadáte množství provázané služby');
DlgStatic(-1,'m.j.',216,192,32)

DlgCheckBox(301,Pocitat,8,218,242,,'Nejdříve spočítat počet změn');
DlgDivider(8,238,242,0);

DlgButton(id_OK,,122,244);
DlgButton(id_Cancel,,188,244);
if(DlgExecute(True)<>id_OK)
   Halt;

if(Length(Sluzba_New)=0)
  begin
    Message('Skladové číslo provazované služby musí být vyplněno !!!',mb_IconStop);
    GoTo(Dialog)
  end;
if(Mnozstvi_New<=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_New);
StrToChars(KeySklad2.Material,Sluzba_New,' ');
if(FindKey(KeySklad2,Veta))
  begin
    ReadRec(KartaSluzbyNew,Veta);
    if(KartaSluzbyNew.TypKarty<>1)
      begin
        Message('Zadaná karta č. '+Sluzba_New+' není kartou služby ',mb_IconStop);
        GoTo(Dialog)
      end;
  end else
  begin
    Message('Nebyla nalezena služba č. '+Sluzba_New,mb_IconStop);
    GoTo(Dialog)
  end;
if(Length(Sluzba_Old)=0)
  begin
    ClearRec(KartaSluzbyOld);
  end else
  begin
    KeySklad2.Length=SizeOf(KeySklad2)-1;
    KeySklad2.Sklad=Swap(Sklad_Old);
    StrToChars(KeySklad2.Material,Sluzba_Old,' ');
    if(FindKey(KeySklad2,Veta))
      begin
        ReadRec(KartaSluzbyOld,Veta);
        if(KartaSluzbyOld.TypKarty<>1)
          begin
            Message('Zadaná karta č. '+Sluzba_Old+' není kartou služby ',mb_IconStop);
            GoTo(Dialog)
          end;
      end else
      begin
        Message('Nebyla nalezena služba č. '+Sluzba_Old,mb_IconStop);
        GoTo(Dialog)
      end;
  end;

if(Pocitat)
  begin
    InitStatus(UsedKeys(KeySklad10),'Počítám věty');
    ClearKey(KeySklad10);
    While(NextKey(KeySklad10,Veta))
      begin
        ReadRec(Sklad,Veta);
        if(InFilter(Sklad))
          begin
            if((Sklad.NavaznaSluzba=KartaSluzbyOld.Cislo)and(Sklad.BindMnozstvi=Mnozstvi_Old))
              Inc(LocL3);
          end;
        Inc(LocL2);
        SetStatus(LocL2);
      end;
    if(LocL3=0)
      begin
        Message('Nenalezena žádná položka vhodná ke změně provázání',mb_IconInformation);
        Exit;
      end;
    if(not Question('Bylo nalezeno položek ke změně provázání: '+Str(LocL3)+#13+'Mám provést změnu provázání ?'))
      begin
        Exit;
      end;
  end;

InitStatus(UsedKeys(KeySklad10),'Provádím změnu provázání');

LocL2=0;

ModifyMode(True);

Beru:Boolean

ClearKey(KeySklad10);
While(NextKey(KeySklad10,Veta))
  begin
    ReadRec(Sklad,Veta);
    if(InFilter(Sklad))
      begin
        if((Sklad.NavaznaSluzba=KartaSluzbyOld.Cislo)and(Sklad.BindMnozstvi=Mnozstvi_Old))
          begin
            Sklad.NavaznaSluzba=KartaSluzbyNew.Cislo;
            Sklad.BindMnozstvi=Mnozstvi_New;
            ModifyRec(Sklad,Veta);
            Inc(LocL4);
          end;
      end;
    Inc(LocL2);
    SetStatus(LocL2);
  end;

Message('Služba č. '+KartaSluzbyNew.Material+' v množství: '+StrQuantity(Mnozstvi_New)+' byla úspěšně provázána na položek: '+Str(LocL4),mb_IconInformation);

END