1546 lines
51 KiB
ObjectPascal
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.
|