unit datModul; {$I plgEMPDeleniTrubek.inc} interface uses System.SysUtils, System.Classes, ddPlugin_TLB, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, Data.DB, MemDS, VirtualTable, FireDAC.Comp.DataSet, FireDAC.Comp.Client, VCL.Buttons, VCL.Forms, VirtualDataSet, Winapi.WinSpool, Vcl.Printers {$IFDEF OMNITHREAD} , OtlComm, OtlCommon, OtlThreadPool, OtlTaskControl {$ENDIF} ; const tblRezPredpis = '[dbo].[_hdc_TabRezaciPredpis]'; tblRezPredpisR = '[dbo].[_hdc_TabRezaciPredpisR]'; tblRezPredpisPily = '[dbo].[_hdc_TabRezaciPredpisPily]'; tblRezPredpisTisky = '[dbo].[_hdc_TabRezaciPredpisTisky]'; tblRezPredpisEvidPrace = '[dbo].[_hdc_TabRezaciPredpisEvidPrace]'; tblMatDavkyH = '[dbo].[_hdc_TabRezaciPredpisDavkyPlan]'; tblMatDavkyR = '[dbo].[_hdc_TabRezaciPredpisDavkyPlanPol]'; idTiskFormStitek = 78; type { TZaznamPily = class private FIndex: integer; FSkupZbo, FRegCis, FCisloZbozi: string; FNadoba: string; FRadaPrikaz: string; FDeleni: string; FPocetKs: integer; FDelka: extended; public constructor Create (AIndex: integer=0; ASkupZbo: string=''; ARegCis: string=''; APocetKs: integer=0; ADelka: Extended=0; ANadoba: string=''; ARadaPrikaz: string=''); property AIndex: Integer read FIndex write FIndex; property SkupZbo: string read FSkupZbo write FSkupZbo; property RegCis: string read FRegCis write FRegCis; property CisloZbozi: string read FCisloZbozi; property RadaPrikaz: string read FRadaPrikaz write FRadaPrikaz; property Nadoba: string read FNadoba write FNadoba; property PocteKs: integer read FPocetKs write FPocetKs; property Delka: Extended read FDelka write FDelka; property Deleni: string read FDeleni; end; } TZamestnanec = class private FId: Integer; FCislo: integer; FPrijmeni: string; FJmeno: string; FPrijmeniJmeno: string; public constructor Create (const AID: integer = 0; const ACislo: Integer = 0; const H: IHelios = nil); property Id: Integer read FId write FId; property Cislo: integer read FCislo write FCislo; property Jmeno: string read FJmeno write FJmeno; property Prijmeni: string read FPrijmeni write FPrijmeni; property PrijmeniJmeno: string read FPrijmeniJmeno write FPrijmeniJmeno; end; Tdm = class(TDataModule) tblFronta: TVirtualTable; tblFrontacolIDPrKVazby: TIntegerField; tblFrontacolOperace: TStringField; tblFrontacolRegCis: TStringField; tblFrontacolNazev1: TStringField; tblFrontacolKs: TFloatField; tblFrontacolDelka: TFloatField; tblFrontacolNadoba: TStringField; tblFrontacolVykresFin: TStringField; tblFrontacolIDPrPostup: TIntegerField; tblFrontacolVybran: TBooleanField; tblFrontacolRozmer: TStringField; tblFrontacolDatum: TDateTimeField; tblFrontacolPomocSort: TIntegerField; tblFrontacolPozice: TStringField; tblPila: TVirtualTable; IntegerField1: TIntegerField; IntegerField2: TIntegerField; StringField1: TStringField; StringField2: TStringField; StringField3: TStringField; FloatField1: TFloatField; FloatField2: TFloatField; StringField4: TStringField; StringField5: TStringField; BooleanField1: TBooleanField; StringField6: TStringField; DateTimeField1: TDateTimeField; tblPlan: TVirtualTable; IntegerField4: TIntegerField; IntegerField5: TIntegerField; StringField8: TStringField; StringField9: TStringField; StringField10: TStringField; FloatField3: TFloatField; FloatField4: TFloatField; StringField11: TStringField; StringField12: TStringField; BooleanField2: TBooleanField; StringField13: TStringField; DateTimeField2: TDateTimeField; IntegerField6: TIntegerField; StringField14: TStringField; tblFrontacolDelkaCelkem: TFloatField; tblFrontacolSmazat: TBooleanField; tblPilacolSmazat: TBooleanField; tblPlancolSmazat: TBooleanField; tblFrontacolRadaPrikaz: TStringField; tblPilacolRadaPrikaz: TStringField; tblPlancolRadaPrikaz: TStringField; tblFrontacolSZ: TStringField; tblPilacolSZ: TStringField; tblPlancolSZ: TStringField; tblFrontacolJakostMat: TStringField; tblPilacolJakostMat: TStringField; tblPlancolJakostMat: TStringField; tblFrontacolSilaMat: TStringField; tblPilacolSilaMat: TStringField; tblPlancolSilaMat: TStringField; tblFrontacolCisloZbozi: TStringField; tblPilacolCisloZboziMat: TStringField; tblPlancolCisloZboziMat: TStringField; tblPlancolIDHlavicka: TIntegerField; tblPilacolIDHlavicka: TIntegerField; tblPilacolIDPolozka: TIntegerField; tblPilacolTisk: TBooleanField; tblPlancolIDPolozka: TIntegerField; tblFrontacolPovoleno: TBooleanField; tblPilacolPovoleno: TBooleanField; tblPlancolPovoleno: TBooleanField; tblFrontacolPrumer: TStringField; tblFrontacolProfil: TStringField; tblFrontacolDN: TStringField; tblPilacolPrumer: TStringField; tblPilacolProfil: TStringField; tblPilacolDN: TStringField; tblPlancolPrumer: TStringField; tblPlancolProfil: TStringField; tblPlancolDN: TStringField; tblFrontacolRegCisPrikaz: TStringField; tblPilacolRegCisPrikaz: TStringField; tblPlancolRegCisPrikaz: TStringField; tblFrontacolIDKmenMat: TIntegerField; tblPlancolIDKmenMat: TIntegerField; tblPilacolIDKmenMat: TIntegerField; tblFrontacolZakazka: TStringField; tblFrontacolSZPrikaz: TStringField; tblFrontacolDatPlan: TDateTimeField; tblPlancolZakazka: TStringField; tblPilacolZakazka: TStringField; tblPilacolIDPlanR: TIntegerField; tblPilacolIDPlanH: TIntegerField; tblPlancolDatPlan: TDateTimeField; tblPilacolDatPlan: TDateTimeField; tblPlancolSZPrikaz: TStringField; tblPilacolSZPrikaz: TStringField; tblPilacolDelkaCelkem: TFloatField; tblPlancolDelkaCelkem: TFloatField; tblMatDavky: TVirtualTable; tblMatDavkycolID: TIntegerField; tblMatDavkycolPlanVyroby: TDateTimeField; tblMatDavkycolCislo: TIntegerField; tblMatDavkycolIDKmenMat: TIntegerField; tblMatDavkycolSZMat: TStringField; tblMatDavkycolRCMat: TStringField; tblMatDavkycolNazev1Mat: TStringField; tblMatDavkycolPoznamka: TStringField; tblMatDavkycolSplneno: TBooleanField; tblMatDavkycolOznaceno: TBooleanField; tblMatDavkycolPlanCasMin: TFloatField; tblPolozkyMD: TVirtualTable; IntegerField3: TIntegerField; IntegerField7: TIntegerField; StringField7: TStringField; StringField15: TStringField; StringField16: TStringField; FloatField5: TFloatField; FloatField6: TFloatField; FloatField7: TFloatField; StringField17: TStringField; StringField18: TStringField; BooleanField3: TBooleanField; StringField19: TStringField; DateTimeField3: TDateTimeField; IntegerField8: TIntegerField; StringField20: TStringField; BooleanField4: TBooleanField; StringField21: TStringField; StringField22: TStringField; StringField23: TStringField; StringField24: TStringField; StringField25: TStringField; IntegerField9: TIntegerField; IntegerField10: TIntegerField; BooleanField5: TBooleanField; BooleanField6: TBooleanField; StringField26: TStringField; StringField27: TStringField; StringField28: TStringField; StringField29: TStringField; StringField30: TStringField; IntegerField11: TIntegerField; StringField31: TStringField; DateTimeField4: TDateTimeField; IntegerField12: TIntegerField; IntegerField13: TIntegerField; tblMatDavkycolPocetRadku: TSmallintField; tblPolozkyMDcolPokracujVTisku: TBooleanField; tblPilacolPokracujVTisku: TBooleanField; tblPilacolIDMzdy: TIntegerField; tblPolozkyMDcolIDMzdy: TIntegerField; tblPilacolIDPrKVazbyAlter: TIntegerField; tblPlancolIDPrKVazbyAlter: TIntegerField; tblPolozkyMDcolIDPrKVazbyAlter: TIntegerField; tblPilacolSplneno: TBooleanField; tblPolozkyMDcolSplneno: TBooleanField; tblPilacolPoziceInt: TIntegerField; tblPolozkyMDcolPoziceInt: TIntegerField; tblMatDavkycolPrumerDM: TStringField; tblMatDavkycolTloustkaS1: TStringField; tblMatDavkycolRozmer: TStringField; tblMatDavkycolNormaMat: TStringField; tblPilacolNormaMat: TStringField; tblPlancolNormaMat: TStringField; tblPolozkyMDcolNormaMat: TStringField; tblFrontacolNormaMat: TStringField; procedure DataModuleCreate (Sender: TObject); private public Helios: IHelios; function ZjistiDeviceID : string; function VratMaterialPrvniOznacenyVeFronte: string; function PocetOznacenychVeFronte: integer; function SoucetDelekOznacenychVeFronte: Extended; function PocetVybranychMaterialuFronty: integer; function RadekFrontyUzNaPile (recNoFronta: integer; plan: boolean): boolean; function CopyRecord (tblFrom, tblTo: TVirtualTable; const copyRecNo: Integer=0): Boolean; function VratIdPrKVazebNaPile (plan: boolean): string; function VratIdRadekPlanuNaPile: string; function IDckaRezPredpisR (tbl: TVirtualTable): string; function PrecislujPoziceFronty (tbl: TVirtualTable; dozadu: Boolean=false): boolean; function MaxPoziceTab (tbl: TVirtualTable): integer; function KolikZbyvaKTisku: integer; function MaterialNaPile (plan: boolean): string; /// /// Zjištuje zda je naskenovaný materiál materiálem už na pile používaným nebo je alternativa používaného materiálu /// /// /// ID kmenové karty naskenovaného materiálu /// function NaskenovanyMaterialJeOK (const idMatSken: integer; nacitaniRozprac: Boolean=false): boolean; function VybranyMaterialFronta: string; function PocetPovolenych (tbl: TVirtualTable): integer; function PocetPovolenychPredeMnou (tbl: TVirtualTable): integer; function PocetPovolenychZaMnou (tbl: TVirtualTable): integer; function PocetNepovolenychPredeMnou (tbl: TVirtualTable): integer; function PocetMezdPredeMnou (tbl: TVirtualTable): Integer; function PocetNepovolenychZaMnou (tbl: TVirtualTable): integer; function VsePredeMnouMaMzdu (tbl: TVirtualTable): boolean; function IsPrinterActive (PrinterName: string): boolean; function IsPrinterActiveFrmId (PrinterName: string = ''; idTiskForm: integer = 0): boolean; procedure FrontaOdznacitVse; procedure FrontaOznacitVse; procedure NactiIkonuProButton (btn: TSpeedButton; icoNazev: string); procedure NactiFrontu (const idPrac: integer; f: TForm); procedure NactiMaterialoveDavky (f: TForm; oldRecId: integer=0); function SumaDelkyMatDavky (const idMD: integer): extended; procedure NactiPolozkyMatDavky (const idMD: integer; f: TForm); end; var dm: Tdm; sklMat: string='1030'; devID, sqlUserName, pilaSZ, pilaRC, pilaSarze, planSZ, planRC, planSarze, tiskarnaNazev: string; idTiskForm, idPracovistePila, idPila, idPilaForce, cisloPily, idHlavPila, idHlavPlan: integer; idMatDavka, idKmenMaterialPila, idKmenMaterialPlan, idMatDavkaKmen, pilaKZ, planKZ: integer; tiskJeAktivni, tiskJenPlgRP: Boolean; {$IFDEF OMNITHREAD} task1, task2, task3: IOmniTaskControl; {$ENDIF} implementation uses System.StrUtils, VCL.Dialogs, DateTimeHelper, VCL.ControlList, VCL.StdCtrls, WinApi.Windows, VCL.Graphics, Winapi.ShellAPI, uSMBIOS, IdHTTP, System.IOUtils, IdHash, IdHashMessageDigest, System.Variants, helUtils; var idMD5: TIdHashMessageDigest5; {%CLASSGROUP 'Vcl.Controls.TControl'} {$R *.dfm} function Tdm.ZjistiDeviceID : string; var sID: string; i: integer; SMBios: TSMBios; LMemoryDevice: TMemoryDeviceInformation; LProcessorInfo: TProcessorInformation; LBaseBoard: TBaseBoardInformation; begin result:= TPath.GetFileNameWithoutExtension(Application.ExeName); sID:= ''; if (helUtils.DetectRemoteSession) then sId:= helUtils.GetClientComputerName else begin SMBios:= TSMBios.Create; if SMBios.HasPhysicalMemoryArrayInfo then for LMemoryDevice in SMBios.MemoryDeviceInfo do sID:= sID + Trim(LMemoryDevice.ManufacturerStr) + '/' + Trim(LMemoryDevice.PartNumberStr) + '/' + Trim(LMemoryDevice.SerialNumberStr) + '/'; if SMBios.HasProcessorInfo then for i:=Low(SMBios.ProcessorInfo) to High(SMBios.ProcessorInfo) do begin LProcessorInfo:= SMBios.ProcessorInfo[I]; sID:= sID + LProcessorInfo.ProcessorManufacturerStr + '/' + LProcessorInfo.SerialNumberStr + '/' + LProcessorInfo.PartNumberStr + '/'; end; if SMBios.HasBaseBoardInfo then for LBaseBoard in SMBios.BaseBoardInfo do sID:= sID + LBaseBoard.ProductStr + '/' + LBaseBoard.SerialNumberStr + '/'; end; sID:= sID + Helios.UserId.ToString; idMD5:= TIdHashMessageDigest5.Create; result:= idMD5.HashStringAsHex(sID); {$IF CompilerVersion>=34} // Sydney a vys idMD5.Free; SMBios.Free; {$ENDIF} end; { constructor TZaznamPily.Create (AIndex: integer=0; ASkupZbo: string=''; ARegCis: string=''; APocetKs: integer=0; ADelka: Extended=0; ANadoba: string=''; ARadaPrikaz: string=''); begin FIndex:= AIndex; FSkupZbo:= ASkupZbo; FRegCis:= ARegCis; FCisloZbozi:= ASkupZbo + ARegCis; FNadoba:= ANadoba; FPocetKs:= APocetKs; FDelka:= ADelka; FDeleni:= APocetKs.ToString + ' x ' + ADelka.ToString; end; } constructor TZamestnanec.Create (const AID: Integer = 0; const ACislo: Integer = 0; const H: IHelios = nil); begin FID:= AID; FCislo:= ACislo; if (FID=0) and (FCislo>0) and (H<>nil) then FID:= helUtils.getHeliosIntVal(H, 0, 'SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + FCislo.ToString); if (FID>0) and (H<>nil) then begin FCislo:= helUtils.getHeliosIntVal(H, 0, 'SELECT Cislo FROM ' + tblCZam + ' WHERE ID=' + FID.ToString); FJmeno:= helUtils.getHeliosStrVal(H, '', 'SELECT Jmeno FROM ' + tblCZam + ' WHERE ID=' + FID.ToString).Trim; FPrijmeni:= helUtils.getHeliosStrVal(H, '', 'SELECT Prijmeni FROM ' + tblCZam + ' WHERE ID=' + FID.ToString).Trim; FPrijmeniJmeno:= (FPrijmeni + ' ' + FJmeno).Trim; end; end; function Tdm.IsPrinterActiveFrmId (PrinterName: string=''; idTiskForm: Integer=0): Boolean; var lSQL: string; begin result:= false; //colPokracujVTisku if (PrinterName='') and (idTiskForm<>0) then begin lSQL:= 'SELECT TOP(1) TiskFronta FROM ' + tblTiskDef + ' WHERE FormDefID=' + idTiskForm.ToString; lSQL:= lSQL + ' AND Implicitni=0 AND LoginName IS NULL OR LoginName=SUSER_SNAME() ORDER BY ISNULL(LoginName, N'''')'; PrinterName:= helUtils.getHeliosStrVal(Helios, '', lSQL); end; if (PrinterName<>'') then if (dm.IsPrinterActive(PrinterName)) then result:= true; end; function Tdm.IsPrinterActive (PrinterName: string): Boolean; var lSQL: string; PrinterHandle: THandle; PrinterInfo: PPrinterInfo2; Needed, Returned: DWORD; i: integer; begin result:= false; if (PrinterName='') then if (Printer.Printers.Count>0) then PrinterName:= Printer.Printers[0] else Exit; if (OpenPrinter(PChar(PrinterName), PrinterHandle, nil)) then begin try // Získejte velikost potřebnou pro strukturu PRINTER_INFO_2 GetPrinter(PrinterHandle, 2, nil, 0, @Needed); if (Needed = 0) then Exit; // Alokujte paměť pro strukturu PRINTER_INFO_2 GetMem(PrinterInfo, Needed); try // Získejte informace o tiskárně if GetPrinter(PrinterHandle, 2, PrinterInfo, Needed, @Returned) then begin // Kontrolujte stav tiskárny result:= (PrinterInfo^.Status = 0); end; finally FreeMem(PrinterInfo); end; finally ClosePrinter(PrinterHandle); end; end; end; function Tdm.VybranyMaterialFronta: string; var r: integer; sF: string; bF: boolean; begin result:= ''; if (tblFronta.RecordCount>0) then begin r:= tblFronta.RecNo; tblFronta.DisableControls; sF:= tblFronta.Filter; bF:= tblFronta.Filtered; tblFronta.Filter:= 'colVybran=1'; tblFronta.Filtered:= true; if (tblFronta.RecordCount>0) then result:= tblFronta.FieldByName('colSZ').AsString + tblFronta.FieldByName('colRegCis').AsString; tblFronta.Filter:= sF; tblFronta.Filtered:= bF; tblFronta.RecNo:= r; tblFronta.EnableControls; end; end; function Tdm.KolikZbyvaKTisku: Integer; var i: integer; begin result:= 0; if (tblPila.RecordCount>0) then begin i:= tblPila.RecNo; tblPila.DisableControls; tblPila.First; while not(tblPila.Eof) do begin if not(tblPila.FieldByName('colTisk').AsBoolean) then Inc(Result); tblPila.Next; end; tblPila.RecNo:= i; tblPila.EnableControls; end; end; procedure Tdm.NactiIkonuProButton (btn: TSpeedButton; icoNazev: string); var sl: TStringList; hndl: NativeUInt; i: integer; icn: TIcon; function ResourceNameToString(lpszName: PChar): string; begin if Is_IntResource(lpszName) then Result:= '#' + IntToStr(NativeUInt(lpszName)) else Result:= lpszName; end; function ResourceTypeToString(lpszType: PChar): string; begin case NativeUInt(lpszType) of NativeUInt(RT_CURSOR): Result := 'RT_CURSOR'; NativeUInt(RT_BITMAP): Result := 'RT_BITMAP'; NativeUInt(RT_RCDATA): Result := 'RT_RCDATA'; NativeUInt(RT_GROUP_ICON): Result:= 'RT_GROUP_ICON'; else Result := ResourceNameToString(lpszType); end; end; function EnumResNameProc(hModule: HMODULE; lpszType, lpszName: PChar; lParam: NativeInt): BOOL; stdcall; begin TStrings(lParam).Add(ResourceNameToString(lpszName)); result:= true; end; begin i:= -1; sl:= TStringList.Create; try hndl:= GetModuleHandle(PChar(Application.ExeName)); EnumResourceNames(hndl, RT_GROUP_ICON, @EnumResNameProc, NativeInt(sl)); i:= sl.IndexOf(icoNazev); finally sl.Free; end; if (i>-1) then begin try icn:= TIcon.Create; icn.Handle:= ExtractIcon(hndl, PChar(Application.ExeName), i); if (btn.ImageIndex>-1) then begin btn.ImageIndex:= -1; btn.ImageName:= ''; btn.Glyph:= nil; end; btn.Glyph.Assign(icn); btn.Invalidate; finally icn.Free; end; end; end; function Tdm.MaxPoziceTab (tbl: TVirtualTable): integer; var ii: integer; begin result:= 0; tbl.DisableControls; ii:= tbl.RecNo; tbl.First; while not(tbl.Eof) do begin if (tbl.FieldByName('colPozice').AsInteger>result) then result:= tbl.FieldByName('colPozice').AsInteger; tbl.Next; end; tbl.RecNo:= ii; tbl.EnableControls; end; function Tdm.PrecislujPoziceFronty (tbl: TVirtualTable; dozadu: Boolean=false): Boolean; var i, i2, iPol: integer; begin result:= false; if (tbl.RecordCount>0) then begin tbl.DisableControls; i:= tbl.RecNo; if (dozadu) then for i2:=tbl.RecordCount downto 1 do begin tbl.RecNo:= i2; try tbl.Edit; tbl.FieldByName('colPozice').AsInteger:= (i2+1) * 10; tbl.FieldByName('colPoziceInt').AsInteger:= tbl.FieldByName('colPozice').AsInteger; tbl.Post; except begin tbl.Cancel; result:= false; end; end; end; for i2:=1 to tbl.RecordCount do begin tbl.RecNo:= i2; iPol:= 0; if (tbl.FindField('colIDPolozka')<>nil) then iPol:= tbl.FieldByName('colIDPolozka').AsInteger; try tbl.Edit; tbl.FieldByName('colPozice').AsInteger:= i2 * 10; if (iPol>0) then Helios.ExecSQL('UPDATE ' + tblRezPredpisR + ' SET Pozice=' + (i2*10).ToString + ' WHERE ID=' + iPol.ToString); tbl.FieldByName('colPoziceInt').AsInteger:= tbl.FieldByName('colPozice').AsInteger; tbl.Post; except begin tbl.Cancel; result:= false; end; end; end; tbl.RecNo:= i; tbl.EnableControls; end; end; function Tdm.CopyRecord (tblFrom, tblTo: TVirtualTable; const copyRecNo: Integer=0): Boolean; var i, i2: Integer; tF, tT, fN, msg: string; FieldFrom, FieldTo: TField; begin result:= false; tF:= tblFrom.Name; tT:= tblTo.Name; if not(tblFrom.Active) then tblFrom.Open; if not(tblTo.Active) then tblTo.Open; i2:= tblFrom.RecNo; tblFrom.DisableControls; tblFrom.RecNo:= copyRecNo; try for i:=0 to tblFrom.FieldCount - 1 do begin FieldFrom:= tblFrom.Fields[i]; // fN:= FieldFrom.FieldName; FieldTo:= tblTo.FindField(FieldFrom.FieldName); if Assigned(FieldTo) then begin FieldTo.Value := FieldFrom.Value; if (tblTo.Name='tblFronta') and (FieldFrom.Name='colPovoleno') then FieldTo.Value:= true; result:= true; end; end; except on E:Exception do msg:= E.Message; end; tblFrom.RecNo:= i2; tblFrom.EnableControls; end; function Tdm.PocetNepovolenychZaMnou (tbl: TVirtualTable): Integer; var i, poz, poz2: integer; bmrk: TBookmark; begin result:= 0; if (tbl.Eof) then Exit; i:= tbl.RecNo; bmrk:= tbl.GetBookmark; poz:= tbl.FieldByName('colPozice').AsInteger; tbl.DisableControls; if (tbl.RecNo+1<=tbl.RecordCount) then begin tbl.RecNo:= i+1; while not(tbl.Eof) do begin poz2:= tbl.FieldByName('colPozice').AsInteger; if not((tbl.FieldByName('colPovoleno').AsBoolean) or not(tbl.FieldByName('colPokracujVTisku').AsBoolean)) and (pozpoz2) then Inc(result); tbl.Next; end; tbl.GotoBookmark(bmrk); tbl.FreeBookmark(bmrk); // tbl.RecNo:= i; tbl.EnableControls; end; function Tdm.PocetPovolenych (tbl: TVirtualTable): Integer; var i, poz, poz2: integer; bmrk: TBookmark; begin result:= 0; // i:= tbl.RecNo; bmrk:= tbl.GetBookmark; tbl.DisableControls; tbl.First; while not(tbl.Eof) do begin if ((tbl.FieldByName('colPovoleno').AsBoolean) or (tbl.FieldByName('colPokracujVTisku').AsBoolean)) then Inc(result); tbl.Next; end; tbl.GotoBookmark(bmrk); tbl.FreeBookmark(bmrk); // tbl.RecNo:= i; tbl.EnableControls; end; function Tdm.PocetPovolenychZaMnou (tbl: TVirtualTable): Integer; var i, poz, poz2: integer; bmrk: TBookmark; begin result:= 0; // i:= tbl.RecNo; bmrk:= tbl.GetBookmark; poz:= tbl.FieldByName('colPozice').AsInteger; poz2:= 0; tbl.DisableControls; tbl.First; while (poz2poz2) then Inc(result); tbl.Next; end; tbl.GotoBookmark(bmrk); tbl.FreeBookmark(bmrk); // tbl.RecNo:= i; tbl.EnableControls; end; function Tdm.PocetPovolenychPredeMnou (tbl: TVirtualTable): Integer; var i, poz, poz2: integer; bmrk: TBookmark; begin result:= 0; // i:= tbl.RecNo; bmrk:= tbl.GetBookmark; poz:= tbl.FieldByName('colPozice').AsInteger; poz2:= 0; tbl.DisableControls; tbl.First; while (poz2poz2) then Inc(result); tbl.Next; end; tbl.GotoBookmark(bmrk); tbl.FreeBookmark(bmrk); // tbl.RecNo:= i; tbl.EnableControls; end; function Tdm.VsePredeMnouMaMzdu (tbl: TVirtualTable): boolean; var i, idP, idM: integer; begin result:= true; i:= tbl.RecNo; tbl.DisableControls; tbl.First; while (tbl.RecNo0) then begin i:= tblFronta.RecNo; tblFronta.DisableControls; tblFronta.First; while not(tblFronta.Eof) do begin if (tblFronta.FieldByName('colVybran').AsBoolean) then result:= Result + tblFronta.FieldByName('colDelkaCelkem').AsExtended; tblFronta.Next; end; tblFronta.RecNo:= i; tblFronta.EnableControls; end; end; function Tdm.PocetVybranychMaterialuFronty: Integer; var arrMat: TArray; rc: string; i: integer; begin result:= 0; SetLength(arrMat, 0); if (tblFronta.RecordCount>0) then begin i:= tblFronta.RecNo; tblFronta.DisableControls; tblFronta.First; while not(tblFronta.Eof) do begin rc:= tblFronta.FieldByName('colRegCis').AsString; if (tblFronta.FieldByName('colVybran').AsBoolean) then if (Length(arrMat)>0) then begin if not(MatchStr(rc, arrMat)) then begin SetLength(arrMat, Length(arrMat)+1); arrMat[High(arrMat)]:= rc; end; end else begin SetLength(arrMat, Length(arrMat)+1); arrMat[High(arrMat)]:= rc; end; tblFronta.Next; end; tblFronta.RecNo:= i; tblFronta.EnableControls; end; result:= Length(arrMat); end; function Tdm.NaskenovanyMaterialJeOK (const idMatSken: integer; nacitaniRozprac: Boolean=false): Boolean; var lSQL: string; begin result:= false; if (idMatSken<=0) then Exit; if (idKmenMaterialPila>0) then begin result:= (idMatSken=idKmenMaterialPila); if not(result) then begin lSQL:= 'SELECT 1 FROM ' + tblAlterKZ + ' WITH(NOLOCK) WHERE IDKmeneZbozi=' + idKmenMaterialPila.ToString + ' AND IDKZNahrada=' + idMatSken.ToString; if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then result:= true; if (nacitaniRozprac) and not(result) then begin lSQL:= 'SELECT 1 FROM ' + tblAlterKZ + ' WITH(NOLOCK) WHERE IDKZNahrada=' + idKmenMaterialPila.ToString + ' AND IDKmeneZbozi=' + idMatSken.ToString; if (helUtils.sqlExistsTestGeneral(Helios, lSQL)) then result:= true; end; end; end; end; function Tdm.MaterialNaPile (plan: boolean): string; begin result:= ''; if not(plan) and (tblPila.RecordCount>0) then result:= tblPila.FieldByName('colSZ').AsString + tblPila.FieldByName('colRegCis').AsString; if (plan) and (tblPlan.RecordCount>0) then result:= tblPlan.FieldByName('colSZ').AsString + tblPlan.FieldByName('colRegCis').AsString; end; function Tdm.VratIdRadekPlanuNaPile: string; var i: integer; begin result:= '0'; if (tblPila.RecordCount>0) then begin i:= tblPila.RecNo; tblPila.DisableControls; tblPila.First; while not(tblPila.Eof) do begin if (tblPila.FieldByName('colIDPlanR').AsString<>'') then result:= result + ',' + tblPila.FieldByName('colIDPlanR').AsString; tblPila.Next; end; tblPila.RecNo:= i; tblPila.EnableControls; end; end; function Tdm.VratIdPrKVazebNaPile (plan: boolean): string; var i: integer; begin result:= '0'; if not(plan) and (tblPila.RecordCount>0) then begin i:= tblPila.RecNo; tblPila.DisableControls; tblPila.First; while not(tblPila.Eof) do begin result:= result + ',' + tblPila.FieldByName('colIDPrKVazby').AsString; tblPila.Next; end; tblPila.RecNo:= i; tblPila.EnableControls; end; if (plan) and (tblPlan.RecordCount>0) then begin i:= tblPlan.RecNo; tblPlan.DisableControls; tblPlan.First; while not(tblPlan.Eof) do begin result:= result + ', ' + tblPlan.FieldByName('colIDPrKVazby').AsString; tblPlan.Next; end; tblPlan.RecNo:= i; tblPlan.EnableControls; end; end; function Tdm.RadekFrontyUzNaPile (recNoFronta: integer; plan: boolean): boolean; var i, i2, idPrKV: integer; begin result:= false; if not(tblFronta.Active) then tblFronta.Open; if not(plan) then begin if not(tblPila.Active) then tblPila.Open; if (tblFronta.RecordCount>0) and (tblPila.RecordCount>0) then begin i:= tblFronta.RecNo; tblFronta.DisableControls; tblFronta.RecNo:= recNoFronta; idPrKV:= tblFronta.FieldByName('colIDPrKVazby').AsInteger; tblPila.DisableControls; tblPila.First; while not(tblPila.Eof) do begin if (tblPila.FieldByName('colIDPrKVazby').AsInteger=idPrKV) then result:= true; tblPila.Next; end; tblPila.EnableControls; tblFronta.RecNo:= i; tblFronta.EnableControls; end; end; if (plan) then begin if not(tblPlan.Active) then tblPlan.Open; if (tblFronta.RecordCount>0) and (tblPlan.RecordCount>0) then begin i:= tblFronta.RecNo; tblFronta.DisableControls; tblFronta.RecNo:= recNoFronta; idPrKV:= tblFronta.FieldByName('colIDPrKVazby').AsInteger; tblPlan.DisableControls; tblPlan.First; while not(tblPlan.Eof) do begin if (tblPlan.FieldByName('colIDPrKVazby').AsInteger=idPrKV) then result:= true; tblPlan.Next; end; tblPlan.EnableControls; tblFronta.RecNo:= i; tblFronta.EnableControls; end; end; end; procedure Tdm.DataModuleCreate (Sender: TObject); begin idHlavPila:= 0; idHlavPlan:= 0; end; procedure Tdm.FrontaOdznacitVse; var i: integer; begin if not(tblFronta.Active) then tblFronta.Open; if (tblFronta.RecordCount>0) then begin i:= tblFronta.RecNo; tblFronta.DisableControls; tblFronta.First; while not(tblFronta.Eof) do begin tblFronta.Edit; tblFronta.FieldByName('colVybran').AsBoolean:= false; tblFronta.Post; tblFronta.Next; end; tblFronta.RecNo:= i; tblFronta.EnableControls; end; end; procedure Tdm.FrontaOznacitVse; var i: integer; begin if not(tblFronta.Active) then tblFronta.Open; if (tblFronta.RecordCount>0) then begin i:= tblFronta.RecNo; tblFronta.DisableControls; tblFronta.First; while not(tblFronta.Eof) do begin tblFronta.Edit; tblFronta.FieldByName('colVybran').AsBoolean:= true; tblFronta.Post; tblFronta.Next; end; tblFronta.RecNo:= i; tblFronta.EnableControls; end; end; function Tdm.VratMaterialPrvniOznacenyVeFronte: string; var i: integer; begin result:= ''; if not(tblFronta.Active) then tblFronta.Open; if (tblFronta.RecordCount>0) then begin i:= tblFronta.RecNo; tblFronta.DisableControls; tblFronta.First; while not(tblFronta.Eof) and (result='') do begin if (tblFronta.FieldByName('colVybran').AsBoolean) then result:= tblFronta.FieldByName('colCisloZboziMat').asString; tblFronta.Next; end; tblFronta.RecNo:= i; tblFronta.EnableControls; end; end; function Tdm.PocetOznacenychVeFronte: Integer; var i: integer; begin result:= 0; if not(tblFronta.Active) then tblFronta.Open; if (tblFronta.RecordCount>0) then begin i:= tblFronta.RecNo; tblFronta.DisableControls; tblFronta.First; while not(tblFronta.Eof) do begin if (tblFronta.FieldByName('colVybran').AsBoolean) then Inc(Result); tblFronta.Next; end; tblFronta.RecNo:= i; tblFronta.EnableControls; end; end; function Tdm.SumaDelkyMatDavky (const idMD: integer): extended; var bmrk: TBookmark; begin result:= 0; if not(tblPolozkyMD.Active) then tblPolozkyMD.Open; bmrk:= tblPolozkyMD.GetBookmark; tblPolozkyMD.DisableControls; tblPolozkyMD.First; while not(tblPolozkyMD.Eof) do begin result:= result + tblPolozkyMD.FieldByName('colDelkaCelkem').AsExtended; tblPolozkyMD.Next; end; tblPolozkyMD.GotoBookmark(bmrk); tblPolozkyMD.FreeBookmark(bmrk); tblPolozkyMD.EnableControls; end; procedure Tdm.NactiPolozkyMatDavky (const idMD: integer; f: TForm); var lSQL: string; idMDR, idPP, cnt, poz: integer; begin if not(tblPolozkyMD.Active) then tblPolozkyMD.Open; tblPolozkyMD.Clear; lSQL:= 'SELECT mr.ID, pp.ID AS IDPrP, mr.IDPrKVazbyAlt, mvaz.ID AS IDMVaz, kzvp.SkupZbo, kzvp.RegCis, kzvp.Nazev1, kzmvaz.ID AS IDKmenMat, kzmvaz.SkupZbo AS SkupZboMat, kzmvaz.RegCis AS RegCisMat'; lSQL:= lSQL + ', kzmvaz.Nazev1 AS Nazev1Mat, mvaz.pozice'; lSQL:= lSQL + ', zak.Nazev AS CisloNadoby, kzf.Nazev1 AS Nazev1Fin, kzf.Vykres, pp.operace, mvaz.mnozstvi*1000 AS MnozMat, mvaz.mnoz_Nevydane*1000 AS MnozMatCelkem'; lSQL:= lSQL + ', ISNULL(mvazv.mnoz_Nevydane, (mvaz.mnoz_Nevydane/mvaz.mnozstvi)) AS MnozVys, vp.RadaPrikaz, ISNULL(kzmvazE._Rozmer, N'''') AS Rozmer'; lSQL:= lSQL + ', ISNULL(pp.Plan_zadani, vp.Plan_zadani) AS Datum, vpf.RadaPrikaz AS RadaPrikazFin, ISNULL(kzmvazE._JakostMaterialu, N'''') AS JakostMat'; lSQL:= lSQL + ', ISNULL(kzmvazE._S1_X, N'''') AS SilaMat, ISNULL(kzmvazE._Dm1_X, 0) AS Prumer, ISNULL(kzmvazE._DN1, N'''') AS DN'; lSQL:= lSQL + ', ISNULL(kzmvazE._NormaMat, N'''') AS NormaMAT'; lSQL:= lSQL + ' FROM ' + tblMatDavkyR + ' mr WITH(NOLOCK) INNER JOIN ' + tblMatDavkyH + ' mh WITH(NOLOCK) ON (mh.ID=mr.IDHlava) INNER JOIN ' + tblPrPost + ' pp WITH(NOLOCK) ON (pp.ID=mr.IDPrPostup)'; lSQL:= lSQL + ' INNER JOIN ' + tblPrikaz + ' vp WITH(NOLOCK) ON (vp.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ + ' kzvp WITH(NOLOCK) ON (kzvp.ID=vp.IdTabKmen)'; lSQL:= lSQL + ' INNER JOIN ' + tblPrPostE + ' ppe WITH(NOLOCK) ON (ppe.ID=pp.ID)'; lSQL:= lSQL + ' LEFT JOIN ' + tblPrikaz + ' vpv WITH(NOLOCK) ON (vpv.ID=vp.IDPrikazVyssi) LEFT JOIN ' + tblPrikaz + ' vpf WITH(NOLOCK) ON (vpf.ID=vp.IDPrikazRidici)'; lSQL:= lSQL + ' INNER JOIN ' + tblPrVaz + ' mvaz WITH(NOLOCK) ON (mvaz.Splneno=0 AND mvaz.Prednastaveno=1 AND mvaz.IDPrikaz=vp.ID AND mvaz.operace=pp.operace AND mvaz.IDOdchylkyDo IS NULL)'; lSQL:= lSQL + ' LEFT JOIN ' + tblZak + ' zak ON (zak.ID=vpf.IDZakazka) LEFT JOIN ' + tblKZ + ' kzf WITH(NOLOCK) ON (kzf.ID=vpf.IdTabKmen)'; lSQL:= lSQL + ' LEFT JOIN ' + tblPrKVaz + ' mvazv WITH(NOLOCK) ON (mvazv.IDPrikaz=vpv.ID AND mvazv.IDOdchylkyDo IS NULL AND mvazv.nizsi=mvaz.vyssi)'; lSQL:= lSQL + ' LEFT JOIN ' + tblKZ + ' kzmvaz WITH(NOLOCK) ON (kzmvaz.ID=mvaz.nizsi) LEFT JOIN ' + tblKZe + ' kzmvazE WITH(NOLOCK) ON (kzmvazE.ID=kzmvaz.ID)'; lSQL:= lSQL + ' WHERE mr.IDHlava=' + idMD.ToString + ' AND mr.Splneno=0' ;; // AND mr.NaPile=0'; lSQL:= lSQL + ' AND mr.ID NOT IN (' + VratIdRadekPlanuNaPile + ') AND mr.NeplatnyPostup=0'; lSQL:= lSQL + ' ORDER BY mr.ID'; poz:= 10; try with Helios.OpenSQL(lSQL) do begin if (RecordCount>0) then begin while not(EOF) do begin tblPolozkyMD.Append; try tblPolozkyMD.FieldByName('colIDPlanH').AsInteger:= idMD; idMDR:= VarToStr(FieldByNameValues('ID')).ToInteger; tblPolozkyMD.FieldByName('colIDPlanR').AsInteger:= idMDR; idPP:= VarToStr(FieldByNameValues('IDPrP')).ToInteger; tblPolozkyMD.FieldByName('colIDPrPostup').AsInteger:= idPP; tblPolozkyMD.FieldByName('colIDPrKVazby').AsInteger:= VarToStr(FieldByNameValues('IDMVaz')).ToInteger; if not VarIsNull(FieldByNameValues('IDPrKVazbyAlt')) then tblPolozkyMD.FieldByName('colIDPrKVazbyAlter').AsInteger:= VarToStr(FieldByNameValues('IDPrKVazbyAlt')).ToInteger else tblPolozkyMD.FieldByName('colIDPrKVazbyAlter').AsInteger:= 0; tblPolozkyMD.FieldByName('colOperace').AsString:= VarToStr(FieldByNameValues('operace')).Trim; tblPolozkyMD.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCisMat')).Trim; // RegCis materialu tblPolozkyMD.FieldByName('colIDKmenMat').AsString:= VarToStr(FieldByNameValues('IDKmenMat')).Trim; tblPolozkyMD.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim; // SZ materialu tblPolozkyMD.FieldByName('colCisloZboziMat').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim + VarToStr(FieldByNameValues('RegCisMat')).Trim; tblPolozkyMD.FieldByName('colRozmer').AsString:= VarToStr(FieldByNameValues('Rozmer')).Trim; tblPolozkyMD.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1Mat')).Trim; tblPolozkyMD.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozVys')).ToExtended; tblPolozkyMD.FieldByName('colDelka').AsExtended:= VarToStr(FieldByNameValues('MnozMat')).ToExtended; tblPolozkyMD.FieldByName('colDelkaCelkem').AsExtended:= tblPolozkyMD.FieldByName('colKs').AsExtended * tblPolozkyMD.FieldByName('colDelka').AsExtended; // * VarToStr(FieldByNameValues('MnozMat')).ToExtended; tblPolozkyMD.FieldByName('colNadoba').AsString:= VarToStr(FieldByNameValues('CisloNadoby')).Trim; tblPolozkyMD.FieldByName('colVykresFin').AsString:= VarToStr(FieldByNameValues('Vykres')).Trim; tblPolozkyMD.FieldByName('colPozice').AsInteger:= poz; tblPolozkyMD.FieldByName('colPoziceInt').AsInteger:= poz; tblPolozkyMD.FieldByName('colJakostMat').AsString:= VarToStr(FieldByNameValues('JakostMat')).Trim; tblPolozkyMD.FieldByName('colSilaMat').AsString:= VarToStr(FieldByNameValues('SilaMat')).Trim; tblPolozkyMD.FieldByName('colDatum').AsDateTime:= FieldByNameValues('Datum'); tblPolozkyMD.FieldByName('colVybran').AsBoolean:= false; tblPolozkyMD.FieldByName('colSmazat').AsBoolean:= false; tblPolozkyMD.FieldByName('colPovoleno').AsBoolean:= false; tblPolozkyMD.FieldByName('colPokracujVTisku').AsBoolean:= false; tblPolozkyMD.FieldByName('colRadaPrikaz').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ', '').Trim; tblPolozkyMD.FieldByName('colSZPrikaz').AsString:= VarToStr(FieldByNameValues('SkupZbo')).Trim; // SZ dilce vyrobniho prikazu tblPolozkyMD.FieldByName('colRegCisPrikaz').AsString:= VarToStr(FieldByNameValues('RegCis')).Trim; // RegCis dilce vyrobniho prikazu tblPolozkyMD.FieldByName('colPrumer').AsString:= VarToStr(FieldByNameValues('Prumer')).Trim; tblPolozkyMD.FieldByName('colDN').AsString:= VarToStr(FieldByNameValues('DN')).Trim; tblPolozkyMD.FieldByName('colNormaMat').AsString:= VarToStr(FieldByNameValues('NormaMAT')).Trim; except on E:Exception do Helios.Error('Chyba: ' + E.Message + ' > idPP ' + idPP.ToString); end; tblPolozkyMD.Post; poz:= poz + 10; Next; end; end else Helios.Error(#1'Ve vybrané dávce není žádná položka ke zpracování'#1 + CRLF + #1'(není navázána operace na materiál, položka je splněna/uzavřena)'#1) end; except end; end; procedure Tdm.NactiMaterialoveDavky (f: TForm; oldRecId: integer=0); var lSQL: string; hlavaID, pocetPol: integer; begin tiskJeAktivni:= IsPrinterActiveFrmId('', idTiskFormStitek); if not(tblMatDavky.Active) then tblMatDavky.Open; tblMatDavky.DisableControls; tblMatDavky.Clear; lSQL:= 'SELECT h.ID, h.Cislo, h.PlanDatum, h.Poznamka, h.IDKmenZboziMat, k.SkupZbo, k.RegCis, k.Nazev1, ISNULL(ke._Dm1_X, N'''') AS PrumerDM, ISNULL(ke._S1_X, N'''') AS SilaS1'; lSQL:= lSQL + ', ISNULL(ke._Rozmer,N'''') AS Rozmer, ISNULL(ke._NormaMAT,N'''') AS NormaMAT'; lSQL:= lSQL + ' FROM ' + tblMatDavkyH + ' h WITH(NOLOCK) INNER JOIN ' + tblKZ + ' k WITH(NOLOCK) ON (h.IDKmenZboziMat=k.ID) LEFT JOIN ' + tblKZe + ' ke WITH(NOLOCK) ON (ke.ID=k.ID)'; lSQL:= lSQL + ' WHERE h.Splneno=0 AND h.Neplatne=0 AND h.NaPile=0 AND (h.LoginNameReq IS NULL OR h.LoginNameReq=SUSER_SNAME())'; lSQL:= lSQL + ' AND h.ID IN (SELECT IDHlava FROM ' + tblMatDavkyR + ' WHERE Splneno=0 AND NeplatnyPostup=0 AND NaPile=0)'; lSQL:= lSQL + ' AND 0<>ISNULL( (SELECT COUNT(vX.ID) FROM ' + tblPrKVaz + ' vX INNER JOIN ' + tblPrikaz + ' vpX ON (vpX.ID=vX.IDPrikaz) INNER JOIN ' + tblKZ + ' knX ON (knX.ID=vX.nizsi) INNER JOIN ' + tblSZ + ' szX ON (szX.SkupZbo=knX.SkupZbo) INNER JOIN ' + tblSZe + ' szeX ON (szeX.ID=szX.ID) INNER JOIN ' + tblPrPost + ' ppX ON (ppX.IDPrikaz=vpX.ID AND ppX.IDOdchylkyDo IS NULL' + ' AND ppX.operace=vX.operace) INNER JOIN ' + tblPrPostE + ' ppeX ON (ppeX.ID=ppX.ID) INNER JOIN ' + tblCPrac + ' prX ON (prX.ID=ppX.pracoviste) WHERE vX.ID IN (SELECT IDPrKVazby FROM ' + tblMatDavkyR + ' WHERE NaPile=0 AND Splneno=0 AND NeplatnyPostup=0 AND IDHlava=h.ID) AND vX.IDOdchylkyDo IS NULL AND vX.priorita=0 AND ppeX._PlanVyroby IS NOT NULL' + ' AND szeX._MaterialProPilu=1 AND prX.Pracoviste=N''30'' AND vX.Splneno=0 AND vpX.StavPrikazu=30 AND ISNULL(vX.Operace,N'''')<>N'''' AND ppX.Splneno=0), 0)'; lSQL:= lSQL + ' ORDER BY dbo.hf_TruncDate(h.PlanDatum), h.Cislo'; try with Helios.OpenSQL(lSQL) do begin if (RecordCount>0) then begin First; while not(EOF) do begin hlavaID:= VarToStr(FieldByNameValues('ID')).ToInteger; tblMatDavky.Append; tblMatDavky.FieldByName('colID').AsInteger:= hlavaID; tblMatDavky.FieldByName('colPlanVyroby').AsDateTime:= StrToDateTime(VarToStr(FieldByNameValues('PlanDatum'))); tblMatDavky.FieldByName('colCislo').AsInteger:= VarToStr(FieldByNameValues('Cislo')).ToInteger; tblMatDavky.FieldByName('colIDKmenMat').AsInteger:= VarToStr(FieldByNameValues('IDKmenZboziMat')).ToInteger; tblMatDavky.FieldByName('colSZMat').AsString:= VarToStr(FieldByNameValues('SkupZbo')).Trim; tblMatDavky.FieldByName('colRCMat').AsString:= VarToStr(FieldByNameValues('RegCis')).Trim; tblMatDavky.FieldByName('colNazev1Mat').AsString:= VarToStr(FieldByNameValues('Nazev1')).Trim; tblMatDavky.FieldByName('colPoznamka').AsString:= VarToStr(FieldByNameValues('Poznamka')).Trim; tblMatDavky.FieldByName('colSplneno').AsBoolean:= false; tblMatDavky.FieldByName('colOznaceno').AsBoolean:= false; tblMatDavky.FieldByName('colPocetRadku').AsInteger:= 0; tblMatDavky.FieldByName('colPrumerDM').AsString:= VarToStr(FieldByNameValues('PrumerDM')).Trim; tblMatDavky.FieldByName('colTloustkaS1').AsString:= VarToStr(FieldByNameValues('SilaS1')).Trim; tblMatDavky.FieldByName('colRozmer').AsString:= VarToStr(FieldByNameValues('Rozmer')).Trim; tblMatDavky.FieldByName('colNormaMat').AsString:= VarToStr(FieldByNameValues('NormaMAT')).Trim; tblMatDavky.Post; Next; end; end; end; except end; tblMatDavky.EnableControls; if (oldRecId>0) then tblMatDavky.Locate('colID', VarArrayOf([oldRecId]), [loCaseInsensitive]); end; procedure Tdm.NactiFrontu (const idPrac: integer; f: TForm); var lSQL: string; idPP: integer; begin // hvw_RezaciPredpisFronta lSQL:= 'SELECT pp.ID, mvaz.ID AS IDMVaz, kzvp.SkupZbo, kzvp.RegCis, kzvp.Nazev1, kzmvaz.ID AS IDKmenMat, kzmvaz.SkupZbo AS SkupZboMat, kzmvaz.RegCis AS RegCisMat, kzmvaz.Nazev1 AS Nazev1Mat, mvaz.pozice'; lSQL:= lSQL + ', zak.Nazev AS CisloNadoby, kzf.Nazev1 AS Nazev1Fin, kzf.Vykres, pp.operace, mvaz.mnozstvi*1000 AS MnozMat, mvaz.mnoz_Nevydane*1000 AS MnozMatCelkem'; lSQL:= lSQL + ', ISNULL(mvazv.mnoz_Nevydane, (mvaz.mnoz_Nevydane/mvaz.mnozstvi)) AS MnozVys, vp.RadaPrikaz, ISNULL(kzmvazE._Rozmer, N'''') AS Rozmer'; lSQL:= lSQL + ', ISNULL(pp.Plan_zadani, vp.Plan_zadani) AS Datum, vpf.RadaPrikaz AS RadaPrikazFin, ISNULL(kzmvazE._JakostMaterialu, N'''') AS JakostMat'; lSQL:= lSQL + ', ISNULL(kzmvazE._S1_X, N'''') AS SilaMat, ISNULL(kzmvazE._Dm1_X, 0) AS Prumer, ISNULL(kzmvazE._DN1, N'''') AS DN'; lSQL:= lSQL + ', ISNULL(kzmvazE._NormaMat, N'''') AS NormaMAT'; lSQL:= lSQL + ' FROM ' + tblPrPost + ' pp WITH(NOLOCK) INNER JOIN ' + tblPrikaz + ' vp WITH(NOLOCK) ON (vp.ID=pp.IDPrikaz) INNER JOIN ' + tblKZ + ' kzvp WITH(NOLOCK) ON (kzvp.ID=vp.IdTabKmen)'; lSQL:= lSQL + ' INNER JOIN ' + tblPrPostE + ' ppe WITH(NOLOCK) ON (ppe.ID=pp.ID)'; lSQL:= lSQL + ' LEFT JOIN ' + tblPrikaz + ' vpv WITH(NOLOCK) ON (vpv.ID=vp.IDPrikazVyssi) LEFT JOIN ' + tblPrikaz + ' vpf WITH(NOLOCK) ON (vpf.ID=vp.IDPrikazRidici)'; lSQL:= lSQL + ' INNER JOIN ' + tblPrVaz + ' mvaz WITH(NOLOCK) ON (mvaz.IDPrikaz=vp.ID AND mvaz.operace=pp.operace AND mvaz.IDOdchylkyDo IS NULL AND mvaz.prednastaveno=1)'; lSQL:= lSQL + ' LEFT JOIN ' + tblZak + ' zak WITH(NOLOCK) ON (zak.ID=vpf.IDZakazka) LEFT JOIN ' + tblKZ + ' kzf WITH(NOLOCK) ON (kzf.ID=vpf.IdTabKmen)'; lSQL:= lSQL + ' LEFT JOIN ' + tblPrKVaz + ' mvazv WITH(NOLOCK) ON (mvazv.IDPrikaz=vpv.ID AND mvazv.IDOdchylkyDo IS NULL AND mvazv.nizsi=mvaz.vyssi)'; lSQL:= lSQL + ' LEFT JOIN ' + tblKZ + ' kzmvaz WITH(NOLOCK) ON (kzmvaz.ID=mvaz.nizsi) LEFT JOIN ' + tblKZe + ' kzmvazE WITH(NOLOCK) ON (kzmvazE.ID=kzmvaz.ID)'; lSQL:= lSQL + ' WHERE ISNULL(vpf.StavPrikazu,30)=30 AND vp.StavPrikazu=30 AND pp.prednastaveno=1 AND pp.splneno=0 AND pp.IDOdchylkyDo IS NULL AND pp.pracoviste=' + idPrac.ToString; if (tblPila.RecordCount>0) then lSQL:= lSQL + ' AND mvaz.ID NOT IN (' + VratIdPrKVazebNaPile (false) + ')'; if (tblPlan.RecordCount>0) then lSQL:= lSQL + ' AND mvaz.ID NOT IN (' + VratIdPrKVazebNaPile (true) + ')'; lSQL:= lSQL + ' ORDER BY ppe._PlanVyroby'; try with Helios.OpenSQL(lSQL) do begin if (RecordCount>0) then begin if not(tblFronta.Active) then tblFronta.Open; tblFronta.Clear; // .EmptyDataSet; while not(EOF) do begin tblFronta.Append; try idPP:= VarToStr(FieldByNameValues('ID')).ToInteger; tblFronta.FieldByName('colIDPrPostup').AsInteger:= idPP; tblFronta.FieldByName('colIDPrKVazby').AsInteger:= VarToStr(FieldByNameValues('IDMVaz')).ToInteger; tblFronta.FieldByName('colOperace').AsString:= VarToStr(FieldByNameValues('operace')).Trim; tblFronta.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCisMat')).Trim; // RegCis materialu tblFronta.FieldByName('colIDKmenMat').AsString:= VarToStr(FieldByNameValues('IDKmenMat')).Trim; tblFronta.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim; // SZ materialu tblFronta.FieldByName('colCisloZboziMat').AsString:= VarToStr(FieldByNameValues('SkupZboMat')).Trim + VarToStr(FieldByNameValues('RegCisMat')).Trim; tblFronta.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1Mat')).Trim; tblFronta.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('MnozVys')).ToExtended; tblFronta.FieldByName('colDelka').AsExtended:= VarToStr(FieldByNameValues('MnozMat')).ToExtended; tblFronta.FieldByName('colDelkaCelkem').AsExtended:= tblFronta.FieldByName('colKs').AsExtended * VarToStr(FieldByNameValues('MnozMat')).ToExtended; tblFronta.FieldByName('colNadoba').AsString:= VarToStr(FieldByNameValues('CisloNadoby')).Trim; tblFronta.FieldByName('colVykresFin').AsString:= VarToStr(FieldByNameValues('Vykres')).Trim; tblFronta.FieldByName('colPozice').AsString:= VarToStr(FieldByNameValues('pozice')).Trim; tblFronta.FieldByName('colJakostMat').AsString:= VarToStr(FieldByNameValues('JakostMat')).Trim; tblFronta.FieldByName('colSilaMat').AsString:= VarToStr(FieldByNameValues('SilaMat')).Trim; tblFronta.FieldByName('colDatum').AsDateTime:= FieldByNameValues('Datum'); tblFronta.FieldByName('colVybran').AsBoolean:= false; tblFronta.FieldByName('colSmazat').AsBoolean:= false; tblFronta.FieldByName('colRadaPrikaz').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ', '').Trim; tblFronta.FieldByName('colSZPrikaz').AsString:= VarToStr(FieldByNameValues('SkupZbo')).Trim; // SZ dilce vyrobniho prikazu tblFronta.FieldByName('colRegCisPrikaz').AsString:= VarToStr(FieldByNameValues('RegCis')).Trim; // RegCis dilce vyrobniho prikazu tblFronta.FieldByName('colPrumer').AsString:= VarToStr(FieldByNameValues('Prumer')).Trim; tblFronta.FieldByName('colDN').AsString:= VarToStr(FieldByNameValues('DN')).Trim; tblFronta.FieldByName('colRozmer').AsString:= VarToStr(FieldByNameValues('Rozmer')).Trim; tblFronta.FieldByName('colNormaMat').AsString:= VarToStr(FieldByNameValues('NormaMAT')).Trim; except on E:Exception do Helios.Error('Chyba: ' + E.Message + ' > idPP ' + idPP.ToString); end; tblFronta.Post; Next; end; TControlList(f.FindComponent('ctrlFronta')).ItemCount:= tblFronta.RecordCount; end else Helios.Error(#1'Žádný hutní materiál, požadovaný na zadaných výrobních příkazech,'#1 + CRLF + #1'na sobě nemá navázanou operaci.'#1) end; except end; // TLabel(f.FindComponent('lblRecCount')).Caption:= 'Počet: ' + tblFronta.RecordCount.ToString; end; end.