Files
EMPolar-plgEMPDeleniTrubek/datModul.pas
2025-09-13 09:14:20 +02:00

1546 lines
51 KiB
ObjectPascal

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;
/// <summary>
/// Zjištuje zda je naskenovaný materiál materiálem už na pile používaným nebo je alternativa používaného materiálu
/// </summary>
/// <param name="idMatSken">
/// ID kmenové karty naskenovaného materiálu
/// </param>
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 (poz<poz2) then
Inc(result);
tbl.Next;
end;
tbl.GotoBookmark(bmrk);
tbl.FreeBookmark(bmrk);
tbl.EnableControls;
end;
end;
function Tdm.PocetNepovolenychPredeMnou (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 (poz2<poz) do
begin
poz2:= tbl.FieldByName('colPozice').AsInteger;
if not((tbl.FieldByName('colPovoleno').AsBoolean) or not(tbl.FieldByName('colPokracujVTisku').AsBoolean)) and (poz>poz2) 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 (poz2<poz) do
begin
poz2:= tbl.FieldByName('colPozice').AsInteger;
if ((tbl.FieldByName('colPovoleno').AsBoolean) or (tbl.FieldByName('colPokracujVTisku').AsBoolean)) and (poz>poz2) 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 (poz2<poz) do
begin
poz2:= tbl.FieldByName('colPozice').AsInteger;
if (tbl.FieldByName('colPovoleno').AsBoolean) and (poz>poz2) 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.RecNo<i) do
begin
idP:= tbl.FieldByName('colIDPolozka').AsInteger;
idM:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ISNULL(IdMzdy,0) FROM ' + tblRezPredpisR + ' WHERE ID=' + idP.ToString);
if (idM=0) then
result:= false;
tbl.Next;
end;
tbl.RecNo:= i;
tbl.EnableControls;
end;
function Tdm.PocetMezdPredeMnou (tbl: TVirtualTable): Integer;
var i, idP, idM: integer;
begin
result:= 0;
i:= tbl.RecNo;
tbl.DisableControls;
tbl.First;
while (tbl.RecNo<i) do
begin
idP:= tbl.FieldByName('colIDPolozka').AsInteger;
idM:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ISNULL(IdMzdy,0) FROM ' + tblRezPredpisR + ' WHERE ID=' + idP.ToString);
if (idM>0) then
Inc (result);
tbl.Next;
end;
tbl.RecNo:= i;
tbl.EnableControls;
end;
function Tdm.IDckaRezPredpisR (tbl: TVirtualTable): string;
var i: integer;
begin
result:= '0';
i:= tbl.RecNo;
tbl.DisableControls;
tbl.First;
while not(tbl.Eof) do
begin
result:= result + tbl.FieldByName('colIDPolozka').AsString + ',';
tbl.Next;
end;
if (RightStr(Result,1)=',') then
result:= LeftStr(result, Length(Result)-1);
tbl.RecNo:= i;
tbl.EnableControls;
end;
function Tdm.SoucetDelekOznacenychVeFronte: Extended;
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
result:= Result + tblFronta.FieldByName('colDelkaCelkem').AsExtended;
tblFronta.Next;
end;
tblFronta.RecNo:= i;
tblFronta.EnableControls;
end;
end;
function Tdm.PocetVybranychMaterialuFronty: Integer;
var arrMat: TArray<string>;
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.