2256 lines
89 KiB
ObjectPascal
2256 lines
89 KiB
ObjectPascal
unit datMod;
|
|
|
|
interface
|
|
|
|
uses
|
|
System.SysUtils, System.Classes, Data.DB, Datasnap.DBClient, System.ImageList, Vcl.Graphics, Vcl.ImgList,
|
|
Vcl.VirtualImageList, Vcl.BaseImageCollection, Vcl.ImageCollection, Vcl.Controls, Datasnap.Provider, Vcl.DBCGrids,
|
|
Vcl.Grids, JvExDBGrids, JvDBGrid, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS,
|
|
FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Comp.DataSet, FireDAC.Comp.Client, FireDAC.Stan.Intf,
|
|
ddPlugin_TLB, frmPekarna, frmKontrolaCCP1, frmKontrolaCCP1edt, frmPrijemNestandard, frmPredvyroba, frmPredvyrobaDetail,
|
|
frmVyrobniDenik, frmVyrobaMimoPlan, frmZahajeniVyrobyPalety, frmZasobaObjednavky, frmObjednavkaMat, frmOdpady, frmSeznamPalet,
|
|
frmPrehledMicharna, frmSpravaVzorku, frmSarzeVydej;
|
|
|
|
|
|
const
|
|
tblCCP1 = '[dbo].[_TabVyroba_KontrolyCCP1]';
|
|
constHvwVyrobaVyrobniDenik = 'hvw_Vyroba_VyrobniDenik';
|
|
constHvwVyrobaPalety = 'hvw_Vyroba_Palety';
|
|
|
|
|
|
type
|
|
recStrojZaznam = record
|
|
id: integer;
|
|
stroj, aktualPL, zakazka: string;
|
|
idKmen: integer;
|
|
ccp1: boolean;
|
|
{$IF CompilerVersion>=34} // Sydney a vys
|
|
class operator Initialize (out Dest: recStrojZaznam);
|
|
{$ENDIF}
|
|
end;
|
|
|
|
TPaleta = record
|
|
id: integer;
|
|
idVyrCisPrikaz: integer;
|
|
paletList: string;
|
|
sarze: string;
|
|
pocetKA: integer;
|
|
pocetKS: integer;
|
|
end;
|
|
|
|
TOperace = record
|
|
id: integer;
|
|
doklad: integer;
|
|
alt: string;
|
|
mnoz: Extended;
|
|
koef: Extended;
|
|
end;
|
|
|
|
|
|
|
|
Tdm = class(TDataModule)
|
|
dsPlanDnes: TDataSource;
|
|
vtPlanDnes: TFDMemTable;
|
|
vtPlanDnesfIDPlan2: TIntegerField;
|
|
vtPlanDnesfVyrobek: TStringField;
|
|
vtPlanDnesfHotovo: TFloatField;
|
|
vtPlanDnesfZakazka: TStringField;
|
|
dsStroje: TDataSource;
|
|
vtStroje: TFDMemTable;
|
|
vtStrojefIDStroj: TIntegerField;
|
|
vtStrojefStroj: TStringField;
|
|
vtStrojefVyrobek: TStringField;
|
|
vtStrojefAktPaletList: TStringField;
|
|
vtStrojefVyrobenoKA: TFloatField;
|
|
vtStrojefZakazka: TStringField;
|
|
vtStrojefCinnost: TStringField;
|
|
vtStrojefCCP: TBooleanField;
|
|
vtStrojefVZ: TSmallintField;
|
|
vtPlanZitra: TFDMemTable;
|
|
vtPlanZitrafIDPlan2: TIntegerField;
|
|
vtPlanZitrafVyrobek: TStringField;
|
|
vtPlanZitrafHotovo: TFloatField;
|
|
vtPlanZitrafZakazka: TStringField;
|
|
dsPlanZitra: TDataSource;
|
|
vtRozpracPL: TFDMemTable;
|
|
dsRozpracPL: TDataSource;
|
|
imgColl: TImageCollection;
|
|
imgList: TVirtualImageList;
|
|
imgList2: TImageList;
|
|
vtVyrobniPozn: TFDMemTable;
|
|
dsVyrobniPozn: TDataSource;
|
|
vtVyrobniPoznfID: TIntegerField;
|
|
vtVyrobniPoznfDatum: TDateTimeField;
|
|
vtVyrobniPoznfPoznamka: TStringField;
|
|
dsPrijemNestandard: TDataSource;
|
|
vtPrijemNestandard: TFDMemTable;
|
|
vtPrijemNestandardfID: TIntegerField;
|
|
vtPrijemNestandardfCislo: TIntegerField;
|
|
vtPrijemNestandardfSZ: TStringField;
|
|
vtPrijemNestandardfRegCis: TStringField;
|
|
vtPrijemNestandardfNazev1: TStringField;
|
|
vtPrijemNestandardfMJ: TStringField;
|
|
vtStrojefIDEvidRozpOper: TIntegerField;
|
|
vtStrojefIDPrikaz: TIntegerField;
|
|
vtStrojefVyrCisloZbozi: TStringField;
|
|
dsCCP1: TDataSource;
|
|
vtCCP1: TFDMemTable;
|
|
vtCCP1colID: TIntegerField;
|
|
vtCCP1colStroj: TStringField;
|
|
vtCCP1colSmena: TStringField;
|
|
vtCCP1colTeplota: TFloatField;
|
|
vtCCP1colRychlost: TFloatField;
|
|
vtCCP1colHmotnost: TFloatField;
|
|
vtCCP1colIDNorma: TIntegerField;
|
|
vtCCP1colDelka: TFloatField;
|
|
vtCCP1colPrumer: TFloatField;
|
|
vtCCP1colVyhovuje: TBooleanField;
|
|
vtCCP1colVyrobek: TStringField;
|
|
vtCCP1colNapravneOpatreni: TStringField;
|
|
vtCCP1colUzavreno: TBooleanField;
|
|
vtCCP1colDatum: TDateTimeField;
|
|
vtCCP1colIDStroj: TIntegerField;
|
|
vtRozpracPLfIDEvidRozp: TIntegerField;
|
|
vtRozpracPLfIDStroj: TIntegerField;
|
|
vtRozpracPLfStroj: TStringField;
|
|
vtRozpracPLfCisloZbozi: TStringField;
|
|
vtRozpracPLfAktPaletList: TStringField;
|
|
vtRozpracPLfDatStart: TDateTimeField;
|
|
vtRozpracPLfColR: TBooleanField;
|
|
vtStrojefIDKmen: TIntegerField;
|
|
vtPlanDnesfDatPlanZadani: TDateField;
|
|
vtPlanDnesfRegCis: TStringField;
|
|
vtRozpracPLfVyrobek: TStringField;
|
|
dsPLZakazky: TDataSource;
|
|
vtPLZakazky: TFDMemTable;
|
|
vtPLZakazkycolZakazka: TStringField;
|
|
vtPLZakazkycolDatVyroby: TDateField;
|
|
vtPLZakazkycolKANaPalete: TIntegerField;
|
|
vtPLZakazkycolKsNaPalete: TIntegerField;
|
|
dsVyrobniDenik: TDataSource;
|
|
vtVyrobniDenik: TFDMemTable;
|
|
vtVyrobniDenikcolIDKmen: TIntegerField;
|
|
vtVyrobniDenikcolNazev1: TStringField;
|
|
vtVyrobniDenikcolIDStroj: TIntegerField;
|
|
vtVyrobniDenikcolStroj: TStringField;
|
|
vtVyrobniDenikcolDatum: TDateField;
|
|
vtVyrobniDenikcolSmena: TSmallintField;
|
|
vtVyrobniDenikcolMnoz: TFloatField;
|
|
vtVyrobniDenikcolCisloZbozi: TStringField;
|
|
vtVyrobniDenikcolMnozPal: TFloatField;
|
|
vtPredvyroba: TFDMemTable;
|
|
vtPredvyrobacolIDKmen: TIntegerField;
|
|
vtPredvyrobacolSZ: TStringField;
|
|
vtPredvyrobacolNazev1: TStringField;
|
|
vtPredvyrobacolRegCis: TStringField;
|
|
vtPredvyrobacolMJ: TStringField;
|
|
vtPredvyrobacolStroj: TStringField;
|
|
vtPredvyrobacolBaleni: TIntegerField;
|
|
dsPredvyroba: TDataSource;
|
|
vtPredvyrobacolBaleni2: TIntegerField;
|
|
dsPredvyrobaDetail: TDataSource;
|
|
vtPredvyrobaDetail: TFDMemTable;
|
|
vtPredvyrobaDetailidPZ: TIntegerField;
|
|
vtPredvyrobaDetailcolSZ: TStringField;
|
|
vtPredvyrobaDetailcolRegCis: TStringField;
|
|
vtPredvyrobaDetailcolNazev1: TStringField;
|
|
vtPredvyrobaDetailcolCisloPL: TStringField;
|
|
vtPredvyrobaDetailcolKA: TIntegerField;
|
|
vtPredvyrobaDetailcolKs: TIntegerField;
|
|
vtPredvyrobaDetailcolStav: TSmallintField;
|
|
vtPredvyrobaDetailcolDatumVyroby: TDateTimeField;
|
|
vtPredvyrobaDetailcolDatumVyrazeni: TDateTimeField;
|
|
vtPredvyrobaDetailcolZpracDatVyr: TDateTimeField;
|
|
vtPredvyrobaDetailcolZpracDatVyraz: TDateTimeField;
|
|
vtPredvyrobaDetailcolIDPrikaz: TIntegerField;
|
|
vtPredvyrobaDetailcolCisloZakazky: TStringField;
|
|
vtVyrobaMimoPlan: TFDMemTable;
|
|
dsVyrobaMimoPlan: TDataSource;
|
|
vtVyrobaMimoPlancolIDKmen: TIntegerField;
|
|
vtVyrobaMimoPlancolSZ: TStringField;
|
|
vtVyrobaMimoPlancolRegCis: TStringField;
|
|
vtVyrobaMimoPlancolNazev1: TStringField;
|
|
vtVyrobaMimoPlancolZaklad: TStringField;
|
|
vtVyrobaMimoPlancolBaleni1: TIntegerField;
|
|
vtVyrobaMimoPlancolBaleni2: TIntegerField;
|
|
vtVyrobaMimoPlancolBaleni3: TIntegerField;
|
|
vtVyrobaMimoPlancolMJ: TStringField;
|
|
vtVyrobaMimoPlancolStroj: TStringField;
|
|
vtVyrobaMimoPlancolIDStroj: TIntegerField;
|
|
dsZahajeniVyrobyPalety: TDataSource;
|
|
vtZahajeniVyrobyPalety: TFDMemTable;
|
|
IntegerField1: TIntegerField;
|
|
StringField1: TStringField;
|
|
StringField2: TStringField;
|
|
StringField3: TStringField;
|
|
vtZahajeniVyrobyPaletycolIDPrikaz: TIntegerField;
|
|
vtZahajeniVyrobyPaletycolRada: TStringField;
|
|
vtZahajeniVyrobyPaletycolPrikaz: TIntegerField;
|
|
vtZahajeniVyrobyPaletycolDatPlanZahajeni: TDateField;
|
|
vtZahajeniVyrobyPaletycolMJ: TStringField;
|
|
vtZahajeniVyrobyPaletycolIDStroj: TIntegerField;
|
|
dsPaletListy: TDataSource;
|
|
vtPaletListy: TFDMemTable;
|
|
vtPaletListycolPaletList: TStringField;
|
|
vtPaletListycolDatPorizeni: TDateTimeField;
|
|
vtPaletListycolPoznamka: TStringField;
|
|
dsZasobyObjednavky: TDataSource;
|
|
vtZasobyObjednavky: TFDMemTable;
|
|
vtZasobyObjednavkycolIDKmen: TIntegerField;
|
|
vtZasobyObjednavkycolSZ: TStringField;
|
|
vtZasobyObjednavkycolRC: TStringField;
|
|
vtZasobyObjednavkycolNazev1: TStringField;
|
|
vtZasobyObjednavkycolMJ: TStringField;
|
|
vtZasobyObjednavkycolBaleni1: TIntegerField;
|
|
vtZasobyObjednavkycolBaleni2: TIntegerField;
|
|
vtZasobyObjednavkycolVyroba: TFloatField;
|
|
vtZasobyObjednavkycolNaCeste: TFloatField;
|
|
vtZasobyObjednavkycolSklad: TFloatField;
|
|
vtZasobyObjednavkycolCelkem: TFloatField;
|
|
vtZasobyObjednavkycolObjednano: TFloatField;
|
|
vtZasobyObjednavkycolPalet: TSmallintField;
|
|
dsObjednavkaMat: TDataSource;
|
|
vtObjednavkaMat: TFDMemTable;
|
|
vtObjednavkaMatcolCisloObj: TIntegerField;
|
|
vtObjednavkaMatcolMnozstvi: TFloatField;
|
|
vtObjednavkaMatcolPalet: TSmallintField;
|
|
vtObjednavkaMatcolDodano: TFloatField;
|
|
vtObjednavkaMatcolPalet2: TSmallintField;
|
|
vtObjednavkaMatcolDatum: TDateField;
|
|
vtObjednavkaMatcolObjednatel: TStringField;
|
|
vtObjednavkaMatcolNeaktivni: TStringField;
|
|
vtObjednavkaMatcolSplneno: TStringField;
|
|
vtObjednavkaMatcolStornovano: TStringField;
|
|
vtObjednavkaMatcolUzavreno: TStringField;
|
|
vtObjednavkaMatcolVratka: TStringField;
|
|
vtObjednavkaMatcolPoznamka: TStringField;
|
|
dsOdpady: TDataSource;
|
|
vtOdpady: TFDMemTable;
|
|
vtOdpadycolID: TIntegerField;
|
|
vtOdpadycolDatum: TDateField;
|
|
vtOdpadycolSmena: TSmallintField;
|
|
vtOdpadycolMokry: TFloatField;
|
|
vtOdpadycolSuchy: TFloatField;
|
|
vtOdpadycolPoznamka: TStringField;
|
|
vtOdpadycolStroj: TStringField;
|
|
dsSeznamPalet: TDataSource;
|
|
vtSeznamPalet: TFDMemTable;
|
|
vtSeznamPaletcolID: TIntegerField;
|
|
vtSeznamPaletcolPaletovyList: TStringField;
|
|
vtSeznamPaletcolDatum: TDateField;
|
|
vtSeznamPaletcolSmena: TSmallintField;
|
|
vtSeznamPaletcolDatPorizeni: TDateTimeField;
|
|
vtSeznamPaletcolPocetKA: TIntegerField;
|
|
vtVyrobniDenikcolUdalost: TStringField;
|
|
vtVyrobniDenikcolMJ: TStringField;
|
|
vtVyrobniDenikcolMnoz2: TFloatField;
|
|
vtSeznamPaletcolSZ: TStringField;
|
|
vtSeznamPaletcolRC: TStringField;
|
|
vtSeznamPaletcolNazev1: TStringField;
|
|
vtSeznamPaletcolMnozstvi: TFloatField;
|
|
dsPrehledMicharna: TDataSource;
|
|
vtPrehledMicharna: TFDMemTable;
|
|
dsDetailMicharna: TDataSource;
|
|
vtDetailMicharna: TFDMemTable;
|
|
vtDetailMicharnacolSZ: TStringField;
|
|
vtDetailMicharnacolRC: TStringField;
|
|
vtDetailMicharnacolNazev1: TStringField;
|
|
vtDetailMicharnacolMnozstvi: TFloatField;
|
|
vtDetailMicharnacolPridano: TFloatField;
|
|
vtPrehledMicharnacolIDPrikaz: TIntegerField;
|
|
vtPrehledMicharnacolIDStroj: TIntegerField;
|
|
vtPrehledMicharnacolStroj: TStringField;
|
|
vtPrehledMicharnacolTesto: TStringField;
|
|
vtPrehledMicharnacolStartMichani: TDateTimeField;
|
|
vtPrehledMicharnacolKonecMichani: TDateTimeField;
|
|
vtPrehledMicharnacolViskozita: TFloatField;
|
|
vtPrehledMicharnacolViskozita2: TFloatField;
|
|
vtPrehledMicharnacolIDPMZ: TIntegerField;
|
|
vtPrehledMicharnacolIDOperStartStop: TIntegerField;
|
|
dsSpravaVzorku: TDataSource;
|
|
vtSpravaVzorku: TFDMemTable;
|
|
vtSpravaVzorkucolID: TIntegerField;
|
|
vtSpravaVzorkucolIDArchiv: TIntegerField;
|
|
vtSpravaVzorkucolArchiv: TStringField;
|
|
vtSpravaVzorkucolStroj: TStringField;
|
|
vtSpravaVzorkucolSZ: TStringField;
|
|
vtSpravaVzorkucolRC: TStringField;
|
|
vtSpravaVzorkucolNazev1: TStringField;
|
|
vtSpravaVzorkucolKArchivaci: TBooleanField;
|
|
vtSpravaVzorkucolUkonceno: TBooleanField;
|
|
vtSpravaVzorkucolVyrazeno: TBooleanField;
|
|
vtSpravaVzorkucolDatPorizeni: TDateTimeField;
|
|
vtSpravaVzorkucolMistr: TStringField;
|
|
vtSeznamPaletcolSklad: TStringField;
|
|
vtRozpracPLfSZ: TStringField;
|
|
vtRozpracPLfRC: TStringField;
|
|
vtRozpracPLfRadaPrikaz: TStringField;
|
|
vtPlanDnesfMnozZive: TFloatField;
|
|
vtStrojefSarze: TStringField;
|
|
vtPrehledMicharnacolIDEvidRozpracOper: TIntegerField;
|
|
vtRozpracPLfIDPrikaz: TIntegerField;
|
|
dsSarze: TDataSource;
|
|
vtSarze: TFDMemTable;
|
|
vtSarzecolSarze: TStringField;
|
|
vtSarzecolSarze2: TStringField;
|
|
vtSarzecolMnoz: TFloatField;
|
|
vtSarzecolIDKmen: TIntegerField;
|
|
dsMaterial: TDataSource;
|
|
vtMaterial: TFDMemTable;
|
|
vtMaterialcolMnoz: TFloatField;
|
|
vtMaterialcolIDKmen: TIntegerField;
|
|
vtMaterialRegCis: TStringField;
|
|
vtMaterialcolSZ: TStringField;
|
|
vtMaterialcolNazev1: TStringField;
|
|
vtMaterialcolMJ: TStringField;
|
|
vtMaterialcolIDPrKVazba: TIntegerField;
|
|
vtMaterialcolMamSarzi: TBooleanField;
|
|
vtMaterialcolCisloZbozi: TStringField;
|
|
vtMaterialcolIDPohyb: TIntegerField;
|
|
vtSarzecolIDPohybOZ: TIntegerField;
|
|
vtStrojefIDPaleta: TIntegerField;
|
|
vtPlanZitrafIDPrikaz: TIntegerField;
|
|
vtPlanZitrafHodOd: TSmallintField;
|
|
vtPlanZitrafHodDo: TSmallintField;
|
|
vtPlanZitrafMnozstvi: TFloatField;
|
|
procedure DataModuleCreate (Sender: TObject);
|
|
procedure vtCCP1BeforeDelete (DataSet: TDataSet);
|
|
procedure vtCCP1BeforeInsert (DataSet: TDataSet);
|
|
private
|
|
public
|
|
dmCreated: boolean;
|
|
Helios: IHelios;
|
|
function VratStroj (const Helios: IHelios; cast: string; const AID: integer): string;
|
|
function VratNazevTabulky (tabName: string; inclSchema: Boolean = False): string;
|
|
function PocetStrojuSVyrobou: integer;
|
|
|
|
function apiVratServerReq (const url: string; typ: string; body: TStream): string;
|
|
function apiVratPaletoveListy (idKmen: integer): string;
|
|
|
|
// procedure DrawTextRotated(ACanvas: TCanvas; Angle, X, Y: Integer; ATextColor: TColor; AText: String);
|
|
|
|
procedure UkonciEvidRozpracOper (const idEvROp: integer; var errMsg: string);
|
|
|
|
procedure NactiVyrobuMimoPlan (const f: TformVyrobaMimoPlan);
|
|
|
|
procedure NactiZasobaObjednavky (const f: TformZasobaObjednavky);
|
|
procedure NactiObjednavkyPolozky (const idKmen: integer);
|
|
|
|
procedure NactiZahajeniVyrobyPalety (const f: TformZahajeniVyrobyPalety);
|
|
|
|
procedure NactiPredvyrobu (const f: TformPredvyroba);
|
|
procedure NactiPredvyrobuDetail (const f: TformPredvyrobaDetail; idKmen: integer);
|
|
|
|
procedure NactiDataPaneluStroje (const f: TformPekarna; var a: TArray<integer>);
|
|
procedure NactiStrojeAPraci (const f: TformPekarna);
|
|
procedure NactiVyrobniPoznamky (const f: TformPekarna);
|
|
|
|
procedure NactiCCP1 (const f: TformKontrolaCCP1);
|
|
procedure NactiCCP1ProNoveZaznamy (const f: TformKontrolaCCP1edt);
|
|
|
|
procedure NactiPlanStroje (const f: TformPekarna; const idStroj: integer; dnes: boolean=true);
|
|
procedure NactiRozpracovane (const f: TformPekarna; const idStroj: integer);
|
|
|
|
procedure NactiOdpadStroje (const f: TformPekarna);
|
|
procedure NactiOdpady (const f: TformOdpady);
|
|
|
|
procedure NactiVyrobkyNestandard (const f: TformPrijemNestandard);
|
|
procedure NactiPaletoveListy (const typ: integer);
|
|
function ZapisVyrobenePaletyNestandard (const f: TformPrijemNestandard; idKmen: integer; idStroj: integer): boolean;
|
|
|
|
procedure NactiVyrobniDenik (f: TformVyrobniDenik; den: TDateTime);
|
|
procedure NactiSeznamPalet (f: TformSeznamPalet; const typ: byte; IdKmen, IdStroj: integer; const dat: TDatetime);
|
|
|
|
procedure NactiVytvorenaTesta (f: TformPrehledMicharna);
|
|
procedure NactiDetailTesta (f: TformPrehledMicharna; idEvidRozpracOper: integer; idOperStartStop: integer);
|
|
|
|
procedure NactiVzorky (f: TformSpravaVzorku);
|
|
|
|
procedure NactiMaterialyProSarze (idVydejka: integer; sIdPohybyOZ: string);
|
|
procedure NactiSarzeProMaterial (idKmen: integer; idPohybOZ: integer);
|
|
|
|
end;
|
|
|
|
function getFirstWord (s: string): string;
|
|
function GetDBGridIndexByFieldName (aGrd: TJvDBGrid; aFld: string; jenVisible: boolean): integer;
|
|
function getDomainName (myURL: string): string;
|
|
// function GetDBGridIndexByFieldName (aGrid: TDBGrid; const fldName: string): integer;
|
|
procedure DrawTextRotated (ACanvas: TCanvas; Angle, X, Y: Integer; ATextColor: TColor; AText: String);
|
|
|
|
var
|
|
dm: Tdm;
|
|
apiMod: boolean;
|
|
apiServer, phServer, compName, url, sqlLang: string;
|
|
vyrobniDen: TDate;
|
|
aktIdStroj, aktIdKmen, aktIdPrikaz, aktIDPaleta, aktIdKmenPlan, aktIdKmenRozprac, idZamMistr, cisZamMistr: integer;
|
|
bmIdStroj, bmIdPlanDnes, bmIdPrikaz: integer; // bookmarky
|
|
aktZakazka: string;
|
|
|
|
|
|
{%CLASSGROUP 'Vcl.Controls.TControl'}
|
|
implementation
|
|
uses System.Variants, System.StrUtils, Winapi.Windows, System.DateUtils, IdHTTP, System.JSON, System.JSON.Writers,
|
|
IdSSLOpenSSL, IdURI, System.RegularExpressions,
|
|
helTabsBIDs, helUtils;
|
|
{$R *.dfm}
|
|
|
|
|
|
|
|
{$IF CompilerVersion>=34} // Sydney a vys
|
|
class operator recStrojZaznam.Initialize (out Dest: recStrojZaznam);
|
|
begin
|
|
Dest.id:= 0;
|
|
Dest.stroj:= '';
|
|
Dest.aktualPL:= '';
|
|
Dest.zakazka:= '';
|
|
Dest.idKmen:= 0;
|
|
Dest.ccp1:= false;
|
|
end;
|
|
{$ENDIF}
|
|
|
|
|
|
|
|
{
|
|
function GetDBGridIndexByFieldName (aGrid: Vcl.TDBGrid; const fldName: string): integer;
|
|
var i: integer;
|
|
begin
|
|
for i:=0 to aGrid.Columns.Count-1 do
|
|
if (aGrid.Columns.Items[i].FieldName=fldName) then
|
|
result:= i;
|
|
end;
|
|
}
|
|
|
|
|
|
|
|
|
|
procedure DrawTextRotated (ACanvas: TCanvas; Angle, X, Y: Integer; ATextColor: TColor; AText: String);
|
|
var NewX: Integer;
|
|
NewY: integer;
|
|
Escapement: Integer;
|
|
LogFont: TLogFont;
|
|
NewFontHandle: HFONT;
|
|
OldFontHandle: HFONT;
|
|
begin
|
|
if not Assigned(ACanvas) then
|
|
Exit;
|
|
|
|
// Get handle of font and prepare escapement
|
|
GetObject(ACanvas.Font.Handle, SizeOf(LogFont), @LogFont);
|
|
if Angle > 360 then
|
|
Angle := 0;
|
|
Escapement := Angle * 10;
|
|
|
|
// We must initialise all fields of the record structure
|
|
LogFont.lfWidth := 0;
|
|
LogFont.lfHeight := ACanvas.Font.Height;
|
|
LogFont.lfEscapement := Escapement;
|
|
LogFont.lfOrientation := 0;
|
|
if fsBold in ACanvas.Font.Style then
|
|
LogFont.lfWeight := FW_BOLD
|
|
else
|
|
LogFont.lfWeight := FW_NORMAL;
|
|
|
|
LogFont.lfItalic := Byte(fsItalic in ACanvas.Font.Style);
|
|
LogFont.lfUnderline := Byte(fsUnderline in ACanvas.Font.Style);
|
|
LogFont.lfStrikeOut := Byte(fsStrikeOut in ACanvas.Font.Style);
|
|
LogFont.lfCharSet := ACanvas.Font.Charset;
|
|
LogFont.lfOutPrecision := OUT_DEFAULT_PRECIS;
|
|
LogFont.lfClipPrecision := CLIP_DEFAULT_PRECIS;
|
|
LogFont.lfQuality := DEFAULT_QUALITY;
|
|
LogFont.lfPitchAndFamily := DEFAULT_PITCH;
|
|
StrPCopy(LogFont.lfFaceName, ACanvas.Font.Name);
|
|
|
|
// Create new font with rotation
|
|
NewFontHandle := CreateFontIndirect(LogFont);
|
|
try
|
|
// Set color of text
|
|
ACanvas.Font.Color := ATextColor;
|
|
|
|
// Select the new font into the canvas
|
|
OldFontHandle := SelectObject(ACanvas.Handle, NewFontHandle);
|
|
try
|
|
// Output result
|
|
ACanvas.Brush.Style := VCL.Graphics.bsClear;
|
|
try
|
|
ACanvas.TextOut(X, Y, AText);
|
|
finally
|
|
ACanvas.Brush.Style := VCL.Graphics.bsSolid;
|
|
end;
|
|
finally
|
|
// Restore font handle
|
|
NewFontHandle := SelectObject(ACanvas.Handle, OldFontHandle);
|
|
end;
|
|
finally
|
|
// Delete the deselected font object
|
|
DeleteObject(NewFontHandle);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
function getFirstWord (s: string): string;
|
|
begin
|
|
result:= s;
|
|
if (s.Contains(' ')) then
|
|
result:= LeftStr(s, s.IndexOf(' ')).Trim;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function GetDBGridIndexByFieldName (aGrd: TJvDBGrid; aFld: string; jenVisible: boolean): integer;
|
|
var i, ii: integer;
|
|
begin
|
|
result:= -1;
|
|
i:= -1;
|
|
ii:= -1;
|
|
while (i<aGrd.Columns.Count-1) do
|
|
begin
|
|
Inc(i);
|
|
if (jenVisible) then
|
|
begin
|
|
if (aGrd.Columns[i].Visible) then
|
|
begin
|
|
Inc(ii);
|
|
if (aGrd.Columns.Items[i].FieldName=aFld) then
|
|
result:= ii;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
if (aGrd.Columns.Items[i].FieldName=aFld) then
|
|
result:= i;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function getPlainTabName (s: string): string;
|
|
begin
|
|
result:= s.Replace('dbo.', '').Replace('[', '').Replace(']', '');
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function getDomainName (myURL: string): string;
|
|
var URI: TIdURI;
|
|
founditems: TMatchCollection;
|
|
founditem: TMatch;
|
|
myregex: string;
|
|
myhostname: string;
|
|
begin
|
|
result:= '';
|
|
URI:= TIdURI.Create (myurl); // https://www.mail.example.co.uk/test
|
|
try
|
|
myhostname:= URI.Host; // www.mail.example.co.uk
|
|
finally
|
|
URI.Free;
|
|
end;
|
|
myregex:= '([a-z0-9][a-z0-9\-]{0,63}\.[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$';
|
|
founditems:= TRegEx.Matches(myhostname, myregex, [roIgnoreCase]);
|
|
for founditem in founditems do
|
|
begin
|
|
//ListBox1.Items.Add(founditem.Value); // example.co.uk
|
|
result:= founditem.Value; // example.co.uk
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
function Tdm.apiVratServerReq (const url: string; typ: string; body: TStream): string;
|
|
var resp: string;
|
|
hc: TIdHTTP;
|
|
begin
|
|
if (apiServer<>'') and (url<>'') then
|
|
begin
|
|
hc:= TIdHTTP.Create(nil);
|
|
try
|
|
try
|
|
if (typ='') or (typ.ToLower='xml') then
|
|
hc.Request.Accept:= 'application/soap+xml';
|
|
if (typ.ToLower='json') then
|
|
hc.Request.Accept:= 'application/json';
|
|
hc.Request.ContentType:= hc.Request.Accept + '; charset=utf-8';
|
|
hc.HTTPOptions:= hc.HTTPOptions + [hoKeepOrigProtocol] + [hoNoProtocolErrorException];
|
|
resp:= hc.Post(url, body);
|
|
except on E:Exception do
|
|
begin
|
|
Helios.Error('Chyba API req: ' + E.Message);
|
|
end;
|
|
end;
|
|
except on E:Exception do
|
|
begin
|
|
end;
|
|
end;
|
|
hc.Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
function Tdm.apiVratPaletoveListy (idKmen: Integer): string;
|
|
var reqBody: TStream;
|
|
jFin: TJSONObject;
|
|
begin
|
|
result:= '';
|
|
jFin:= TJSONObject.Create;
|
|
jFin.AddPair (TJSONPair.Create('idKmen', idKmen));
|
|
try
|
|
result:= apiVratServerReq('/vratPL', 'json', TStringStream.Create(jFin.Value, TEncoding.UTF8));
|
|
except
|
|
end;
|
|
jFin.Free;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiSarzeProMaterial (idKmen: Integer; idPohybOZ: integer);
|
|
var lSQL: string;
|
|
lHTTP: TIdHTTP;
|
|
ssl: TIdSSLIOHandlerSocketOpenSSL;
|
|
lParamList, respStream: TStringStream;
|
|
resp, jsonTemp, val1, val2: string;
|
|
i_loop: integer;
|
|
joOut, joIn, itemsObj: TJSONObject;
|
|
ja: TJSONArray;
|
|
jv: TJSONValue;
|
|
begin
|
|
if not(vtSarze.Active) then
|
|
vtSarze.Open;
|
|
|
|
Exit;
|
|
|
|
vtSarze.EmptyDataset;
|
|
|
|
try
|
|
|
|
// http klient je stejny
|
|
lHTTP:= TIdHTTP.Create;
|
|
if (datMod.phServer.Contains('https')) then
|
|
begin
|
|
ssl:= TIdSSLIOHandlerSocketOpenSSL.Create(nil);
|
|
ssl.SSLOptions.Method:= sslvTLSv1_2;
|
|
ssl.SSLOptions.Mode:= sslmUnassigned;
|
|
lHTTP.IOHandler:= ssl;
|
|
end;
|
|
lHTTP.HTTPOptions:= [hoKeepOrigProtocol, hoForceEncodeParams, hoNoProtocolErrorException, hoWantProtocolErrorContent];
|
|
lHTTP.Request.ContentType := 'application/ld+json';
|
|
lHTTP.Request.Accept := 'application/ld+json, text/javascript, */*; q=0.01';
|
|
|
|
|
|
// param je stejny
|
|
lParamList:= TStringStream.Create('');
|
|
joOut:= TJSONObject.Create;
|
|
lSQL:= 'SELECT SkupZbo, RegCis FROM ' + tblKZ + ' WHERE ID=' + idKmen.ToString;
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
joOut.AddPair('skupzbo', VarToStr(FieldByNameValues('SkupZbo')));
|
|
joOut.AddPair('regcis', VarToStr(FieldByNameValues('RegCis')));
|
|
end;
|
|
joOut.AddPair('id', 0);
|
|
lParamList.WriteString(joOut.ToString);
|
|
|
|
|
|
jsonTemp:= '{"@context":"/api/contexts/Order","@id":"/api/orders/14","@type":"Order","id":14,"heliosId":null,"name":"Cukr krupice - big-bag - VPEK","skupzbo":"101","regcis":'
|
|
+ '"101002","paletovyList":"2010100200005","quantity":"4260.0000","items":[{"@id":"/api/material_order_items/12","@type":"MaterialOrderItem","id":12,"stockItem":{"@id":'
|
|
+ '"/api/stock_items/16","@type":"StockItem","id":16,"heliosId":40,"heliosPrijemkaId":1940},"stockItemFinal":null,"order":"/api/orders/14","name":"Cukr krupice - big-bag'
|
|
+ ' - VPEK","sarze":"645901","paletovyList":"2010100200005","quantity":"4260","dateExp":"2030-08-15T00:00:00+02:00","isCompleted":false,"completedAt":null}],"isCompleted"'
|
|
+ ':false,"isUserCompleted":false,"completedAt":null}';
|
|
|
|
respStream:= TStringStream.Create('');
|
|
lHTTP.Post (datMod.phServer + '/getbatch', lParamList, respStream);
|
|
resp:= respStream.DataString.Replace('\/', '/');
|
|
|
|
// resp:= jsonText;
|
|
if (resp<>'') and (resp.IndexOf('batches')>0) then
|
|
begin
|
|
joIn:= TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(resp), 0) as TJSONObject;
|
|
joIn.TryGetValue('batch', val1);
|
|
if (joIn.TryGetValue('id', ja) and (ja.Count > 0)) then
|
|
begin
|
|
for i_loop:=0 to ja.Count-1 do
|
|
begin
|
|
val2:= ja.Items[i_loop].GetValue<string>('id');
|
|
if (val2<>'') then
|
|
begin
|
|
dm.vtSarze.Append;
|
|
dm.vtSarze.FieldByName('colSarze').AsString:= '';
|
|
dm.vtSarze.FieldByName('colSarze2').AsString:= '';
|
|
dm.vtSarze.FieldByName('colMnoz').AsExtended:= 0;
|
|
dm.vtSarze.FieldByName('colIDKmen').AsInteger:= idKmen;
|
|
dm.vtSarze.Post;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
finally
|
|
lPAramList.Free;
|
|
joOut.Free;
|
|
if (ssl<>nil) then
|
|
ssl.Free;
|
|
lHTTP.Free;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiMaterialyProSarze (idVydejka: integer; sIdPohybyOZ: string);
|
|
var lSQL: string;
|
|
begin
|
|
if not(vtMaterial.Active) then
|
|
vtMaterial.Open;
|
|
vtMaterial.EmptyDataset;
|
|
|
|
lSQL:= 'SELECT p.ID, k.ID AS IDKmen, p.SkupZbo, p.RegCis, p.Nazev1, k.MJEvidence, p.Mnozstvi, k.CisloZbozi FROM ' + tblPZ + ' p INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ';
|
|
lSQL:= lSQL + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID) WHERE ke._Vyroba_ZadavatSarzi=1 AND ';
|
|
if (sIdPohybyOZ<>'') then
|
|
lSQL:= lSQL + 'p.ID IN (' + sIdPohybyOZ + ')'
|
|
else
|
|
lSQL:= lSQL + 'p.IDDoklad=' + idVydejka.ToString;
|
|
lSQL:= lSQL + ' ORDER BY k.CisloZbozi';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtMaterial.Append;
|
|
vtMaterial.FieldByName('colIDPohyb').AsString:= VarToStr(FieldByNameValues('ID'));
|
|
vtMaterial.FieldByName('colIDKmen').AsString:= VarToStr(FieldByNameValues('IDKmen'));
|
|
vtMaterial.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtMaterial.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtMaterial.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtMaterial.FieldByName('colMJ').AsString:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
vtMaterial.FieldByName('colCisloZbozi').AsString:= VarToStr(FieldByNameValues('CisloZbozi'));
|
|
vtMaterial.FieldByName('colMnoz').AsExtended:= VarToStr(FieldByNameValues('Mnozstvi')).Replace('.', ',').ToExtended;
|
|
vtMaterial.FieldByName('colMamSarzi').AsBoolean:= false;
|
|
vtMaterial.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
vtMaterial.First;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiVzorky (f: TformSpravaVzorku);
|
|
var lSQL: string;
|
|
begin
|
|
if not(vtSpravaVzorku.Active) then
|
|
vtSpravaVzorku.Open;
|
|
vtSpravaVzorku.EmptyDataset;
|
|
|
|
lSQL:= 'SELECT v.ID, v.IDArchiv, dbo.ef_Bit2Int(v.KArchivaci) AS KArchivaci, dbo.ef_Bit2Int(v.Ukonceno) AS Ukonceno, dbo.ef_Bit2Int(v.Vyrazeno) AS Vyrazeno, v.DatPorizeni';
|
|
lSQL:= lSQL + ', va.Archiv, k.SkupZbo, k.RegCis, k.Nazev1, s.Nazev, z.Prijmeni FROM ' + tblVzorky;
|
|
lSQL:= lSQL + ' v INNER JOIN ' + tblVzorkyArchiv + ' va ON (va.Id=v.IdArchiv) INNER JOIN ' + tblCStroju + ' s ON (s.Id=v.IdStroj)';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblKZ + ' k ON (k.Id=v.IdKmenZbozi) INNER JOIN ' + tblCisZam + ' z ON (z.Cislo=v.CisloZamMistr)';
|
|
lSQL:= lSQL + ' ORDER BY v.DatPorizeni DESC';
|
|
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtSpravaVzorku.Append;
|
|
vtSpravaVzorku.FieldByName('colID').AsString:= VarToStr(FieldByNameValues('ID'));
|
|
vtSpravaVzorku.FieldByName('colIDArchiv').AsString:= VarToStr(FieldByNameValues('IDArchiv'));
|
|
vtSpravaVzorku.FieldByName('colKArchivaci').AsBoolean:= VarToStr(FieldByNameValues('KArchivaci')).ToBoolean;
|
|
vtSpravaVzorku.FieldByName('colUkonceno').AsBoolean:= VarToStr(FieldByNameValues('Ukonceno')).ToBoolean;
|
|
vtSpravaVzorku.FieldByName('colVyrazeno').AsBoolean:= VarToStr(FieldByNameValues('Vyrazeno')).ToBoolean;
|
|
vtSpravaVzorku.FieldByName('colDatPorizeni').AsString:= VarToStr(FieldByNameValues('DatPorizeni'));
|
|
vtSpravaVzorku.FieldByName('colArchiv').AsString:= VarToStr(FieldByNameValues('Archiv'));
|
|
vtSpravaVzorku.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtSpravaVzorku.FieldByName('colRC').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtSpravaVzorku.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtSpravaVzorku.FieldByName('colStroj').AsString:= VarToStr(FieldByNameValues('Nazev'));
|
|
vtSpravaVzorku.FieldByName('colMistr').AsString:= VarToStr(FieldByNameValues('Prijmeni'));
|
|
vtSpravaVzorku.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
vtSpravaVzorku.First;
|
|
f.grdSpravaVzorku.Invalidate;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiVytvorenaTesta (f: TformPrehledMicharna);
|
|
var lSQL, datStr, idVPrV, idOperStartStop, idEvidRozpracOper, strojCil: string;
|
|
v1, v2: Extended;
|
|
mamExt: boolean;
|
|
begin
|
|
if not(vtPrehledMicharna.Active) then
|
|
vtPrehledMicharna.Open;
|
|
vtPrehledMicharna.EmptyDataset;
|
|
|
|
mamExt:= helUtils.SQLObjectExists(Helios, tblPMZE);
|
|
|
|
lSQL:= 'SELECT pmz.ID, pmz.IDPrikaz, pmz.IDStroje, s.Nazev, k.Nazev1, ISNULL(pmz.DatumZahajeniOp, pmz.Datum) AS DatStart, pmz.DatumUkonceniOp AS DatKonec';
|
|
lSQL:= lSQL + ', p.IDPrikazVyssi, ISNULL(oss.IDStroj, 0) AS IDStrojCil, ISNULL(oss.ID, 0) AS IDOperStartStop, ISNULL(oss.IDEvidRozpracOper,0) AS IDEvidRozpracOper';
|
|
if (mamExt) then
|
|
lSQL:= lSQL + ', ISNULL(pmze._TestoViskozita,-1) AS Viskozota1, ISNULL(pmze._TestoViskozita2,-1) AS Viskozota2';
|
|
lSQL:= lSQL + ' FROM ' + tblPMZ + ' pmz INNER JOIN ' + tblKZ + ' k ON (k.ID=pmz.IDTabKmen)';
|
|
lSQL:= lSQL + ' LEFT JOIN ' + tblCStroju + ' s ON (s.ID=pmz.IDStroje) LEFT JOIN ' + tblOperaceStartStop + ' oss ON (oss.IDMzda=pmz.ID)';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblVPr + ' p ON (p.ID=pmz.IDPrikaz)';
|
|
if (mamExt) then
|
|
lSQL:= lSQL + ' LEFT JOIN ' + tblPMZe + ' pmze ON (pmze.ID=pmz.ID)';
|
|
lSQL:= lSQL + ' WHERE k.SkupZbo=N''701'' ORDER BY ISNULL(DatumZahajeniOp, pmz.Datum) DESC';
|
|
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idVPrV:= VarToStr(FieldByNameValues('IDPrikazVyssi'));
|
|
strojCil:= VarToStr(FieldByNameValues('IDStrojCil'));
|
|
|
|
vtPrehledMicharna.Append;
|
|
vtPrehledMicharna.FieldByName('colIDPMZ').AsString:= VarToStr(FieldByNameValues('ID'));
|
|
vtPrehledMicharna.FieldByName('colIDPrikaz').AsString:= VarToStr(FieldByNameValues('IDPrikaz'));
|
|
|
|
idOperStartStop:= VarToStr(FieldByNameValues('IDOperStartStop'));
|
|
if (idOperStartStop<>'') and (idOperStartStop<>'0') then
|
|
vtPrehledMicharna.FieldByName('colIDOperStartStop').AsString:= idOperStartStop;
|
|
|
|
idEvidRozpracOper:= VarToStr(FieldByNameValues('IDEvidRozpracOper'));
|
|
if (idEvidRozpracOper='') then
|
|
idEvidRozpracOper:= '0';
|
|
vtPrehledMicharna.FieldByName('colIDEvidRozpracOper').AsString:= idEvidRozpracOper;
|
|
|
|
|
|
vtPrehledMicharna.FieldByName('colIDStroj').AsString:= strojCil;
|
|
if (strojCil<>'') and (strojCil<>'0') then
|
|
vtPrehledMicharna.FieldByName('colStroj').AsString:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblCStroju + ' WHERE ID=' + strojCil);
|
|
|
|
|
|
|
|
// vtPrehledMicharna.FieldByName('colIDStroj').AsString:= VarToStr(FieldByNameValues('IDStroje'));
|
|
// vtPrehledMicharna.FieldByName('colStroj').AsString:= VarToStr(FieldByNameValues('Nazev'));
|
|
vtPrehledMicharna.FieldByName('colTesto').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtPrehledMicharna.FieldByName('colStartMichani').AsString:= VarToStr(FieldByNameValues('DatStart'));
|
|
vtPrehledMicharna.FieldByName('colKonecMichani').AsString:= VarToStr(FieldByNameValues('DatKonec'));
|
|
if (mamExt) then
|
|
begin
|
|
v1:= VarToStr(FieldByNameValues('Viskozota1')).ToExtended;
|
|
v2:= VarToStr(FieldByNameValues('Viskozota2')).ToExtended;
|
|
if (v1>0) then
|
|
vtPrehledMicharna.FieldByName('colViskozita').AsExtended:= v1;
|
|
if (v2>0) then
|
|
vtPrehledMicharna.FieldByName('colViskozita2').AsExtended:= v2;
|
|
end;
|
|
vtPrehledMicharna.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
vtPrehledMicharna.First;
|
|
f.grdSeznamTesta.Invalidate;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiDetailTesta (f: TformPrehledMicharna; idEvidRozpracOper: integer; idOperStartStop: integer);
|
|
var lSQL, datStr, idDZ: string;
|
|
begin
|
|
if not(vtDetailMicharna.Active) then
|
|
vtDetailMicharna.Open;
|
|
vtDetailMicharna.EmptyDataset;
|
|
|
|
idDZ:= helUtils.getHeliosStrVal(Helios, '0', 'SELECT IDDokladOZ FROM ' + tblOperaceStartStop + ' WHERE IDDokladOZ IS NOT NULL AND ID=' + idOperStartStop.ToString);
|
|
if (idDZ<>'') then
|
|
begin
|
|
lSQL:= 'SELECT p.SkupZbo, p.RegCis, p.Nazev1, p.Mnozstvi, ISNULL(v.Mnozstvi-v.MnozstviPuvodni,0) AS Pridano FROM ' + tblPZ + ' p LEFT JOIN ' + tblOperaceStartStopVydej;
|
|
lSQL:= lSQL + ' v ON (v.IDPohybZbozi=p.ID) WHERE p.IDDoklad=' + idDZ + ' ORDER BY p.Poradi';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtDetailMicharna.Append;
|
|
vtDetailMicharna.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtDetailMicharna.FieldByName('colRC').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtDetailMicharna.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtDetailMicharna.FieldByName('colMnozstvi').AsExtended:= VarToStr(FieldByNameValues('Mnozstvi')).Replace('.', ',').ToExtended;
|
|
vtDetailMicharna.FieldByName('colPridano').AsExtended:= VarToStr(FieldByNameValues('Pridano')).Replace('.', ',').ToExtended;
|
|
vtDetailMicharna.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
vtDetailMicharna.First;
|
|
f.grdReceptura.Invalidate;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiSeznamPalet (f: TformSeznamPalet; const typ: byte; IdKmen, IdStroj: integer; const dat: TDatetime);
|
|
var lSQL, datStr, sz: string;
|
|
mn, ksPerKA, KAPerPal: Extended;
|
|
datPoriz: TDateTime;
|
|
begin
|
|
if not(vtSeznamPalet.Active) then
|
|
vtSeznamPalet.Open;
|
|
vtSeznamPalet.EmptyDataset;
|
|
|
|
|
|
lSQL:= '';
|
|
|
|
if (typ=1) then
|
|
begin
|
|
sz:= helUtils.getHeliosStrVal(Helios, '', 'SELECT SkupZbo FROM ' + tblKZ + ' WHERE ID=' + IdKmen.ToString);
|
|
ksPerKA:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT PocetOdvozene FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND KodMJ1=N''KA'' AND KodMJ2=N''Ks''');
|
|
KAPerPal:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT PocetHlavni FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND KodMJ1=N''KA'' AND KodMJ2=N''Pal''');
|
|
|
|
lSQL:= 'SELECT p.ID, p.Mnozstvi, vcs.Nazev1, ISNULL(vcp.Mnozstvi,-1) AS MnozVCP, p.DatPorizeni, s.IDKmenZbozi AS IDKmen, ISNULL(s.Mnozstvi,0) AS MnozSklad FROM ' + tblPZ;
|
|
lSQL:= lSQL + ' p INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad)';
|
|
lSQL:= lSQL + ' LEFT JOIN ' + tblVyrCP + ' vcp ON (vcp.IDPolozkaDokladu=p.ID) INNER JOIN ' + tblVyrCS + ' vcs ON (vcs.ID=vcp.IDVyrCis) WHERE p.DruhPohybuZbo=0';
|
|
lSQL:= lSQL + ' AND p.TypVyrobnihoDokladu=0' + IfThen(idKmen>0, ' AND s.IDKmenZbozi=' + IdKmen.ToString, '');
|
|
if (dat>0) then
|
|
begin
|
|
lSQL:= lSQL + ' AND p.DatPorizeni>=CONVERT(datetime, N' + (FormatDateTime('dd.mm.yyyy', dat.GetDate) + ' 06:00:00').QuotedString + ', 104)';
|
|
lSQL:= lSQL + ' AND p.DatPorizeni<=CONVERT(datetime, N' + (FormatDateTime('dd.mm.yyyy', IncDay(dat.GetDate)) + ' 05:59:59').QuotedString + ', 104)';
|
|
end;
|
|
lSQL:= lSQL + ' ORDER BY p.DatPorizeni DESC';
|
|
end;
|
|
|
|
|
|
|
|
|
|
if (lSQL<>'') then
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtSeznamPalet.Append;
|
|
datStr:= VarToStr(FieldByNameValues('DatPorizeni'));
|
|
if not(TryStrToDateTime(datStr, datPoriz)) then
|
|
datPoriz:= 0;
|
|
|
|
IdKmen:= VarToStr(FieldByNameValues('IDKmen')).ToInteger;
|
|
with Helios.OpenSQL('SELECT SkupZbo, RegCis, Nazev1 FROM ' + tblKZ + ' WHERE ID=' + IdKmen.ToString) do
|
|
begin
|
|
vtSeznamPalet.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtSeznamPalet.FieldByName('colRC').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtSeznamPalet.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
end;
|
|
ksPerKA:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT PocetOdvozene FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND KodMJ1=N''KA'' AND KodMJ2=N''Ks''');
|
|
KAPerPal:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT PocetHlavni FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND KodMJ1=N''KA'' AND KodMJ2=N''Pal''');
|
|
|
|
|
|
vtSeznamPalet.FieldByName('colID').AsInteger:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
vtSeznamPalet.FieldByName('colPaletovyList').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtSeznamPalet.FieldByName('colDatum').AsDateTime:= datPoriz.GetDate;
|
|
vtSeznamPalet.FieldByName('colSklad').AsString:= VarToStr(FieldByNameValues('MnozSklad'));
|
|
|
|
lSQL:= 'DECLARE @dat DATETIME' + CRLF + 'SET @dat=' + helUtils.SQLDatetimeConvert (datPoriz, false) + CRLF + 'SELECT Smena FROM dbo.ef_GetDatumASmenu (@dat)';
|
|
vtSeznamPalet.FieldByName('colSmena').AsInteger:= helUtils.getHeliosIntVal(Helios, 1, lSQL);
|
|
vtSeznamPalet.FieldByName('colDatPorizeni').AsDateTime:= datPoriz;
|
|
mn:= VarToStr(FieldByNameValues('MnozVCP')).ToExtended;
|
|
if (mn=-1) then
|
|
begin
|
|
vtSeznamPalet.FieldByName('colPocetKA').AsExtended:= VarToStr(FieldByNameValues('Mnozstvi')).ToExtended;
|
|
vtSeznamPalet.FieldByName('colMnozstvi').AsExtended:= VarToStr(FieldByNameValues('Mnozstvi')).ToExtended;
|
|
end
|
|
else
|
|
begin
|
|
vtSeznamPalet.FieldByName('colPocetKA').AsExtended:= mn;
|
|
vtSeznamPalet.FieldByName('colMnozstvi').AsExtended:= mn * ksPerKA;
|
|
end;
|
|
|
|
vtSeznamPalet.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
vtSeznamPalet.First;
|
|
f.grdSeznamPalet.Invalidate;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiOdpady (const f: TformOdpady);
|
|
var lSQL: string;
|
|
begin
|
|
lSQL:= 'SELECT o.ID, o.OdpadSuchy, o.OdpadMokry, o.Poznamka, s.Nazev, CONVERT(datetime, CONVERT(int, CONVERT(float, o.Datum))) AS Datum, o.Smena FROM ' + tblOdpadPek;
|
|
lSQL:= lSQL + ' o INNER JOIN ' + tblCStroju + ' s ON (o.IDStroje=s.ID) WHERE o.IDStroje=';
|
|
lSQL:= lSQL + aktIdStroj.ToString + ' ORDER BY o.DatPorizeni DESC';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
if (not(vtOdpady.Active)) then
|
|
vtOdpady.Open;
|
|
vtOdpady.EmptyDataset;
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtOdpady.Append;
|
|
vtOdpady.FieldByName('colID').AsInteger:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
vtOdpady.FieldByName('colStroj').AsString:= VarToStr(FieldByNameValues('Nazev'));
|
|
vtOdpady.FieldByName('colDatum').AsString:= VarToStr(FieldByNameValues('Datum'));
|
|
vtOdpady.FieldByName('colPoznamka').AsString:= VarToStr(FieldByNameValues('Poznamka'));
|
|
vtOdpady.FieldByName('colSmena').AsInteger:= VarToStr(FieldByNameValues('Smena')).ToInteger;
|
|
vtOdpady.FieldByName('colMokry').AsExtended:= VarToStr(FieldByNameValues('OdpadMokry')).ToExtended;
|
|
vtOdpady.FieldByName('colSuchy').AsExtended:= VarToStr(FieldByNameValues('OdpadSuchy')).ToExtended;
|
|
vtOdpady.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
vtOdpady.First;
|
|
f.grdOdpady.Invalidate;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiOdpadStroje (const f: TformPekarna);
|
|
var lSQL: string;
|
|
begin
|
|
lSQL:= 'SELECT OdpadSuchy, OdpadMokry, Poznamka FROM ' + tblOdpadPek + ' WHERE IDStroje=' + aktIdStroj.ToString + ' AND Datum=dbo.hf_TruncDate(GETDATE()) AND Smena=' + f.edtOdpadSmena.Text;
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
f.edtOdpadSuchy.Value:= VarToStr(FieldByNameValues('OdpadSuchy')).ToExtended;
|
|
f.edtOdpadMokry.Value:= VarToStr(FieldByNameValues('OdpadMokry')).ToExtended;
|
|
f.edtOdpadPoznamka.Text:= VarToStr(FieldByNameValues('Poznamka'));
|
|
end
|
|
else
|
|
begin
|
|
f.edtOdpadSuchy.Value:= 0;
|
|
f.edtOdpadMokry.Value:= 0;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiObjednavkyPolozky (const idKmen: integer);
|
|
var lSQL: string;
|
|
idObj: integer;
|
|
begin
|
|
if not(vtObjednavkaMat.Active) then
|
|
vtObjednavkaMat.Open;
|
|
vtObjednavkaMat.EmptyDataset;
|
|
lSQL:= 'SELECT o.ID, o.SkupZbo, o.RegCis, k.Nazev1, o.Mnozstvi, dbo.hf_TruncDate(o.DatPorizeni) AS DatPorizeni, o.Poznamka, o.Autor FROM ' + tblObjednavky;
|
|
lSQL:= lSQL + ' o INNER JOIN ' + tblKZ + ' k ON (k.ID=o.IdKmenZbozi) WHERE k.ID=' + idKmen.toString;
|
|
lSQL:= lSQL + ' ORDER BY o.DatPorizeni';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idObj:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
|
|
vtObjednavkaMat.Append;
|
|
vtObjednavkaMat.FieldByName('colCisloObj').AsInteger:= idObj;
|
|
vtObjednavkaMat.FieldByName('colMnozstvi').AsExtended:= VarToStr(FieldByNameValues('Mnozstvi')).ToExtended;
|
|
vtObjednavkaMat.FieldByName('colDatum').AsString:= VarToStr(FieldByNameValues('DatPorizeni'));
|
|
vtObjednavkaMat.FieldByName('colPoznamka').AsString:= VarToStr(FieldByNameValues('Poznamka'));
|
|
vtObjednavkaMat.FieldByName('colObjednatel').AsString:= VarToStr(FieldByNameValues('Autor'));
|
|
|
|
lSQL:= 'SELECT SUM(pzV.Mnozstvi) FROM ' + tblObjednavky + ' o INNER JOIN ' + tblObjednavkyPol + ' po ON (po.IDHlava=o.ID) INNER JOIN ';
|
|
lSQL:= lSQL + tblPZ + ' pzV ON (pzV.ID=po.IDPohybOZ AND pzV.DruhPohybuZbo=4) INNER JOIN ' + tblPZ + ' pzP ON (pzV.ID=pzP.IdOldPolozka AND pzP.DruhPohybuZbo=0)';
|
|
lSQL:= lSQL + ' WHERE pzP.SkutecneDatReal IS NOT NULL AND o.ID=' + idObj.ToString;
|
|
vtObjednavkaMat.FieldByName('colDodano').AsExtended:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
|
|
|
vtObjednavkaMat.Post;
|
|
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
vtObjednavkaMat.IndexFieldNames:= 'colCisloObj:D';
|
|
vtObjednavkaMat.First;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiZasobaObjednavky (const f: TformZasobaObjednavky);
|
|
var lSQL, regCis: string;
|
|
cnt, idKmen: integer;
|
|
begin
|
|
if not(vtZasobyObjednavky.Active) then
|
|
vtZasobyObjednavky.Open;
|
|
vtZasobyObjednavky.EmptyDataset;
|
|
{
|
|
lSQL:= 'SELECT ID, SkupZbo, RegCis, Nazev1, MJEvidence FROM ' + tblKZ + ' WHERE Material=1 OR ID IN (SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE IDSklad IN (N''211'',N''311''))';
|
|
lSQL:= lSQL + ' OR ID IN (SELECT IDKmenZbozi FROM ' + tblObjednavky + ') ORDER BY Nazev1';
|
|
}
|
|
lSQL:= 'SELECT k.ID, k.SkupZbo, k.RegCis, k.Nazev1, k.MJEvidence FROM ' + tblKZ + ' k INNER JOIN ' + tblKZe + ' ke ON (ke.ID=k.ID)'
|
|
+ ' WHERE ke._Vyroba_ProObjednavku=1 AND k.ID NOT IN (SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo=N''101'' AND RegCis IN (N''111000'', N''112000''))'
|
|
+ ' AND k.ID IN (SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE Mnozstvi>0 AND IDSklad=N''311'')';
|
|
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
helUtils.waitSetProgBarMax(RecordCount);
|
|
helUtils.waitSetProgBar(0);
|
|
cnt:= 0;
|
|
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idKmen:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
vtZasobyObjednavky.Append;
|
|
vtZasobyObjednavky.FieldByName('colIDKmen').AsInteger:= idKmen;
|
|
vtZasobyObjednavky.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
regCis:= VarToStr(FieldByNameValues('RegCis'));
|
|
if (regCis='012003') then
|
|
lSQL:= '';
|
|
vtZasobyObjednavky.FieldByName('colRC').AsString:= regCis;
|
|
vtZasobyObjednavky.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtZasobyObjednavky.FieldByName('colMJ').AsString:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
|
|
vtZasobyObjednavky.FieldByName('colSklad').AsExtended:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N''311'' AND IDKmenZbozi=' + idKmen.ToString);
|
|
|
|
|
|
lSQL:= 'SELECT SUM(pP.Mnozstvi) FROM ' + tblPZ + ' pV INNER JOIN ' + tblPZ + ' pP ON (pP.IDOldPolozka=pV.ID AND pP.DruhPohybuZbo=0) WHERE pP.SkutecneDatReal IS NULL';
|
|
lSQL:= lSQL + ' AND pV.ID (SELECT IDPohybOZ FROM ' + tblObjednavkyPol + ' WHERE IDHlava IN (SELECT ID FROM ' + tblObjednavky + ' WHERE IDKmenZbozi=' + idKmen.ToString + '))';
|
|
vtZasobyObjednavky.FieldByName('colNaCeste').AsExtended:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
|
|
|
|
|
lSQL:= 'SELECT ISNULL(SUM(o.Mnozstvi),0) FROM ' + tblObjednavky + ' o WHERE o.IDKmenZbozi=' + idKmen.ToString;
|
|
lSQL:= lSQL + ' AND NOT EXISTS(SELECT 1 FROM ' + tblObjednavkyPol + ' WHERE IDHlava=o.ID)';
|
|
// lSQL:= lSQL + ' OR EXISTS (SELECT 1 FROM ' + tblObjednavkyPol + ' op INNER JOIN ' + tblPZ + ' p ON (op.IDPohybOZ=p.ID) WHERE p.DruhPohybuZbo=4 AND p.SkutecneDatReal IS NULL AND op.IDHlava=o.ID)
|
|
vtZasobyObjednavky.FieldByName('colObjednano').AsExtended:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
|
|
|
vtZasobyObjednavky.Post;
|
|
|
|
Inc(cnt);
|
|
if (cnt mod 20=0) then
|
|
helUtils.waitSetProgBar(cnt);
|
|
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
helUtils.waitEnd;
|
|
vtZasobyObjednavky.First;
|
|
f.grdZasobaObjednavky.Invalidate;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiZahajeniVyrobyPalety (const f: TformZahajeniVyrobyPalety);
|
|
var lSQL, lSQL2: string;
|
|
cnt, idPrikaz, idKmen, idStroj: integer;
|
|
ksVKA, KAnaPal: extended;
|
|
begin
|
|
|
|
if not(vtZahajeniVyrobyPalety.Active) then
|
|
vtZahajeniVyrobyPalety.Open;
|
|
vtZahajeniVyrobyPalety.EmptyDataset;
|
|
lSQL:= 'SELECT p.ID, p.Rada, p.Prikaz, p.Plan_zadani, k.ID AS idKZ, k.SkupZbo, k.RegCis, k.Nazev1, k.MJEvidence FROM ' + tblVPr + ' p INNER JOIN ' + tblKZ + ' k ON (k.ID=p.IDTabKmen)';
|
|
lSQL:= lSQL + ' WHERE p.StavPrikazu=30 ORDER BY p.Plan_zadani';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
helUtils.waitSetProgBarMax(RecordCount);
|
|
helUtils.waitSetProgBar(0);
|
|
cnt:= 0;
|
|
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idPrikaz:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
idKmen:= VarToStr(FieldByNameValues('idKZ')).ToInteger;
|
|
|
|
vtZahajeniVyrobyPalety.Append;
|
|
vtZahajeniVyrobyPalety.FieldByName('colIDPrikaz').AsInteger:= idPrikaz;
|
|
vtZahajeniVyrobyPalety.FieldByName('colIDKmen').AsInteger:= idKmen;
|
|
vtZahajeniVyrobyPalety.FieldByName('colRada').AsString:= VarToStr(FieldByNameValues('Rada'));
|
|
vtZahajeniVyrobyPalety.FieldByName('colPrikaz').AsInteger:= VarToStr(FieldByNameValues('Prikaz')).ToInteger;
|
|
vtZahajeniVyrobyPalety.FieldByName('colDatPlanZahajeni').AsDateTime:= StrToDateTime(VarToStr(FieldByNameValues('Plan_zadani')));
|
|
|
|
vtZahajeniVyrobyPalety.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtZahajeniVyrobyPalety.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtZahajeniVyrobyPalety.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtZahajeniVyrobyPalety.FieldByName('colMJ').AsString:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
|
|
|
|
if (helUtils.SQLObjectExists(Helios, 'dbo.ef_DilecGetStroj')) then
|
|
begin
|
|
idStroj:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT dbo.ef_DilecGetStroj (' + idKmen.ToString + ', default)');
|
|
if (idStroj>0) then
|
|
vtZahajeniVyrobyPalety.FieldByName('colIDStroj').AsInteger:= idStroj;
|
|
end;
|
|
|
|
vtZahajeniVyrobyPalety.Post;
|
|
|
|
Inc(cnt);
|
|
if (cnt mod 20=0) then
|
|
helUtils.waitSetProgBar(cnt);
|
|
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
helUtils.waitEnd;
|
|
vtZahajeniVyrobyPalety.First;
|
|
f.grdZahajeniVyrobyPalety.Invalidate;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiVyrobuMimoPlan (const f: TformVyrobaMimoPlan);
|
|
var lSQL, lSQL2: string;
|
|
cnt, idKmen, idStroj: integer;
|
|
ksVKA, KAnaPal: extended;
|
|
begin
|
|
|
|
if not(vtVyrobaMimoPlan.Active) then
|
|
vtVyrobaMimoPlan.Open;
|
|
vtVyrobaMimoPlan.EmptyDataset;
|
|
lSQL:= 'SELECT ID, SkupZbo, RegCis, Nazev1, MJEvidence FROM ' + tblKZ + ' WHERE Dilec=1 AND ISNULL(TRY_PARSE(SkupZbo AS INT),0) BETWEEN 703 AND 799';
|
|
// lSQL:= lSQL + ' SkupZbo LIKE N''7%'' AND SkupZbo NOT LIKE N''70%'' AND SkupZbo NOT LIKE N''8%''';
|
|
lSQL:= lSQL + ' ORDER BY Nazev1';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
helUtils.waitSetProgBarMax(RecordCount);
|
|
helUtils.waitSetProgBar(0);
|
|
cnt:= 0;
|
|
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idKmen:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
|
|
vtVyrobaMimoPlan.Append;
|
|
vtVyrobaMimoPlan.FieldByName('colIDKmen').AsInteger:= idKmen;
|
|
vtVyrobaMimoPlan.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtVyrobaMimoPlan.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtVyrobaMimoPlan.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtVyrobaMimoPlan.FieldByName('colMJ').AsString:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
|
|
lSQL2:= 'SELECT PocetOdvozene FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND KodMJ1=''KA'' AND KodMJ2=N''ks''';
|
|
ksVKA:= helUtils.getHeliosFloatVal(Helios, 0, lSQL2);
|
|
vtVyrobaMimoPlan.FieldByName('colBaleni1').AsExtended:= ksVKA;
|
|
|
|
lSQL2:= 'SELECT PocetHlavni FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND KodMJ1=''KA'' AND KodMJ2=N''pal''';
|
|
KAnaPal:= helUtils.getHeliosFloatVal(Helios, 0, lSQL2);
|
|
vtVyrobaMimoPlan.FieldByName('colBaleni2').AsExtended:= KAnaPal;
|
|
|
|
vtVyrobaMimoPlan.FieldByName('colBaleni3').AsExtended:= ksVKA * KAnaPal;
|
|
|
|
if (helUtils.SQLObjectExists(Helios, 'dbo.ef_DilecGetStroj')) then
|
|
begin
|
|
idStroj:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT dbo.ef_DilecGetStroj (' + idKmen.ToString + ', default)');
|
|
if (idStroj>0) then
|
|
begin
|
|
vtVyrobaMimoPlan.FieldByName('colIDStroj').AsInteger:= idStroj;
|
|
vtVyrobaMimoPlan.FieldByName('colStroj').AsString:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev FROM ' + tblCStroju + ' WHERE ID=' + idStroj.ToString);
|
|
end;
|
|
end;
|
|
|
|
lSQL2:= 'SELECT 1 FROM ' + tblKVaz + ' WHERE vyssi=' + idKmen.ToString + ' AND nizsi IN (SELECT ID FROM ' + tblKZ + ' WHERE SkupZbo LIKE N''70%'')';
|
|
if (helUtils.sqlExistsTestGeneral(Helios, lSQL2)) then
|
|
begin
|
|
lSQL2:= 'SELECT TOP(1) n.Nazev1 FROM ' + tblKVaz + ' v INNER JOIN ' + tblKZ + ' n ON (n.ID=v.nizsi) WHERE v.vyssi=' + idKmen.ToString + ' AND n.SkupZbo LIKE N''70%''';
|
|
lSQL2:= lSQL2 + ' AND n.MJEvidence LIKE N''1000%''';
|
|
vtVyrobaMimoPlan.FieldByName('colZaklad').AsString:= helUtils.getHeliosStrVal(Helios, '', lSQL2);
|
|
end;
|
|
|
|
vtVyrobaMimoPlan.Post;
|
|
|
|
Inc(cnt);
|
|
if (cnt mod 20=0) then
|
|
helUtils.waitSetProgBar(cnt);
|
|
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
helUtils.waitEnd;
|
|
vtVyrobaMimoPlan.First;
|
|
f.grdVyrobaMimoPlan.Invalidate;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiPredvyrobuDetail (const f: TformPredvyrobaDetail; idKmen: Integer);
|
|
var lSQL, dVyr: string;
|
|
idPZ, pocetVC: integer;
|
|
ksVKA: extended;
|
|
begin
|
|
lSQL:= 'SELECT PocetOdvozene FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND KodMJ1=''KA'' AND KodMJ2=N''ks''';
|
|
ksVKA:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
|
|
|
if not(vtPredvyrobaDetail.Active) then
|
|
vtPredvyrobaDetail.Open;
|
|
vtPredvyrobaDetail.EmptyDataset;
|
|
lSQL:= 'SELECT p.ID, k.SkupZbo, k.RegCis, k.Nazev1, p.Mnozstvi, p.MJ, FORMAT(p.DatPorizeni, ''dd.MM.yyyy hh:mm'', ''de-de'') AS DatPorizeni FROM ' + tblPZ;
|
|
lSQL:= lSQL + ' p INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi)';
|
|
LSQL:= lSQL + ' WHERE k.ID=' + idKmen.ToString + ' ORDER BY p.DatPorizeni DESC';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtPredvyrobaDetail.Append;
|
|
idPZ:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
vtPredvyrobaDetail.FieldByName('colIDPZ').AsInteger:= idPZ;
|
|
vtPredvyrobaDetail.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtPredvyrobaDetail.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtPredvyrobaDetail.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtPredvyrobaDetail.FieldByName('colKA').AsExtended:= VarToStr(FieldByNameValues('Mnozstvi')).ToExtended;
|
|
vtPredvyrobaDetail.FieldByName('colKs').AsExtended:= VarToStr(FieldByNameValues('Mnozstvi')).ToExtended * ksVKA;
|
|
dVyr:= VarToStr(FieldByNameValues('DatPorizeni'));
|
|
vtPredvyrobaDetail.FieldByName('colDatumVyroby').AsString:= dVyr;
|
|
if (dVyr<>'') then
|
|
vtPredvyrobaDetail.FieldByName('colStav').AsInteger:= 0;
|
|
|
|
pocetVC:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT COUNT(ID) FROM ' + tblVyrCP + ' WHERE IDPolozkaDokladu=' + idPZ.ToString);
|
|
if (pocetVC=1) then
|
|
begin
|
|
lSQL:= 'SELECT TOP(1) vcs.Nazev1 FROM ' + tblVyrCP + ' vcp INNER JOIN ' + tblVyrCS + ' vcs ON (vcs.ID=vcp.IDVyrCis) WHERE vcp.IDPolozkaDokladu=' + idPZ.ToString;
|
|
vtPredvyrobaDetail.FieldByName('colCisloPL').AsString:= helUtils.getHeliosStrVal (Helios, '', lSQL);
|
|
end;
|
|
|
|
|
|
vtPredvyrobaDetail.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
vtPredvyrobaDetail.First;
|
|
f.grdPredvyrobaDetail.Invalidate;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiPredvyrobu (const f: TformPredvyroba);
|
|
var lSQL, lSQL2, stroj: string;
|
|
idKZ: integer;
|
|
bal: Extended;
|
|
begin
|
|
if not(vtPredvyroba.Active) then
|
|
vtPredvyroba.Open;
|
|
vtPredvyroba.EmptyDataset;
|
|
lSQL:= 'SELECT s.IDKmenZbozi, k.SkupZbo, k.RegCis, k.Nazev1, k.MJEvidence FROM ' + tblSS + ' s INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) WHERE s.IDSklad=N''211''';
|
|
lSQL:= lSQL + ' AND k.ID IN (SELECT ID FROM ' + tblKZ + ' WHERE Nazev1 LIKE N''%polotovar%'') ORDER BY k.CisloZbozi';
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idKZ:= VarToStr(FieldByNameValues('IDKmenZbozi')).ToInteger;
|
|
vtPredvyroba.Append;
|
|
vtPredvyroba.FieldByName('colIDKmen').AsInteger:= idKZ;
|
|
vtPredvyroba.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtPredvyroba.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtPredvyroba.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtPredvyroba.FieldByName('colMJ').AsString:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
|
|
lSQL2:= 'SELECT PocetOdvozene FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKZ.ToString + ' AND KodMJ1=''KA'' AND KodMJ2=N''ks''';
|
|
bal:= helUtils.getHeliosFloatVal(Helios, 0, lSQL2);
|
|
vtPredvyroba.FieldByName('colBaleni').AsExtended:= bal;
|
|
|
|
lSQL2:= 'SELECT PocetHlavni FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKZ.ToString + ' AND KodMJ1=''KA'' AND KodMJ2=N''pal''';
|
|
bal:= helUtils.getHeliosFloatVal(Helios, 0, lSQL2);
|
|
vtPredvyroba.FieldByName('colBaleni2').AsExtended:= bal;
|
|
|
|
vtPredvyroba.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
vtPredvyroba.First;
|
|
f.grdPredvyroba.Invalidate;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.UkonciEvidRozpracOper (const idEvROp: Integer; var errMsg: string);
|
|
var lSQL: string;
|
|
begin
|
|
errMsg:= '';
|
|
if (idEvROp>0) and (helUtils.HeliosExistsTestSQL(Helios, 'SELECT 1 FROM ' + tblRozpracOper + ' WHERE Stav<30 AND ID=' + idEvROp.ToString)) then
|
|
begin
|
|
lSQL:= 'DECLARE @casKonec=GETDATE(), @casStart DATETIME, @s INT' + CRLF + 'SELECT @casStart=CasZahajeni FROM ' + tblRozpracOper + ' WHERE ID=' + idEvROp.ToString + CRLF;
|
|
lSQL:= lSQL + 'SET @s = DATEDIFF(s, @casStart, @casKonec)' + CRLF;
|
|
lSQL:= lSQL + 'UPDATE ' + tblRozpracOper + ' SET CasUkonceni=@casKonec, CelkovyCas=ROUND(@s/60.0, 1) WHERE ID=' + idEvROp.ToString + CRLF;
|
|
lSQL:= lSQL + 'UPDATE ' + tblRozpracOperR + ' SET Sk_cas=@s, Sk_cas_Obsluhy=@s, Mnoz_odv=0 WHERE IDEvidRozpracOper=' + idEvROp.ToString;
|
|
lSQL:= lSQL + 'EXEC dbo.hp_EvidRozpracOper_Uzavreni @IDEvidRozpracOper=' + idEvROp.ToString + ', @GenerovatEvidenciOperaci=0' + CRLF;
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
except on E:Exception do
|
|
errMsg:= E.Message;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiVyrobniDenik (f: TformVyrobniDenik; den: TDateTime);
|
|
var lSQL, datReq, mjEvid: string;
|
|
bidXVyrobniDenik: integer;
|
|
kaNaPal, ksVKA: integer;
|
|
mnozKA: Extended;
|
|
h,m: byte;
|
|
begin
|
|
|
|
if not(vtVyrobniDenik.Active) then
|
|
vtVyrobniDenik.Open;
|
|
vtVyrobniDenik.EmptyDataset;
|
|
|
|
if (helUtils.SQLObjectExists (Helios, constHvwVyrobaVyrobniDenik)) then
|
|
begin
|
|
bidXVyrobniDenik:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N' + constHvwVyrobaVyrobniDenik.QuotedString);
|
|
if (bidXVyrobniDenik>0) then
|
|
begin
|
|
lSQL:= helUtils.getHeliosStrVal (Helios, '', 'SELECT DefView FROM ' + tblObecPrehled + ' WHERE NazevSys=N' + constHvwVyrobaVyrobniDenik.QuotedString);
|
|
if (den=0) then
|
|
den:= Now;
|
|
lSQL:= lSQL.Replace('1.1.1999', FormatDateTime ('dd.mm.yyyy', den.GetDate));
|
|
end;
|
|
end;
|
|
// else
|
|
// Helios.Error(#1'Neexistuje definovaný přehled ' + constHvwVyrobaVyrobniDenik + #1)
|
|
|
|
|
|
lSQL:= 'SELECT DISTINCT(s.Nazev) AS Stroj,'
|
|
+ ' dbo.hf_TruncDate(DATEADD(day, IIF(DATEPART(hour, dz.DatPorizeni)<6, -1, 0), dz.DatPorizeni)) AS Datum,'
|
|
+ ' dbo.ef_VyrobniDenik_GetSmenu(dz.DatPorizeni) AS Smena,'
|
|
+ ' k.ID AS idKZ, k.CisloZbozi, pz.RegCis, pz.Nazev1, SUM(pz.Mnozstvi) AS Mnozstvi, pz.MJEvidence'
|
|
+ ' FROM dbo.TabPrikazMzdyAZmetkyGenPZ pmzg'
|
|
+ ' INNER JOIN dbo.TabPrikazMzdyAZmetky pmz ON (pmz.ID=pmzg.IDMzdy)'
|
|
+ ' INNER JOIN ' + tblPZ + ' pz ON (pmzg.IDPohybu=pz.ID)'
|
|
+ ' INNER JOIN ' + tblSS + ' ss ON (ss.ID=pz.IDZboSklad)'
|
|
+ ' INNER JOIN ' + tblKZ + ' k ON (k.ID=ss.IDKmenZbozi)'
|
|
+ ' INNER JOIN ' + tblDZ + ' dz ON (dz.ID=pz.IDDoklad)'
|
|
+ ' INNER JOIN ' + tblCStroju + ' s ON (pmz.IDStroje=s.ID)'
|
|
+ ' WHERE dz.IDSklad IN (N''211'', N''312'')' // sklad pekarna + hlavni sklad vyrobky zbozi
|
|
+ ' AND dz.DruhPohybuZbo=0'
|
|
+ ' AND pz.TypVyrobnihoDokladu=0'
|
|
+ ' AND ((1=1) OR (dbo.hf_TruncDate(DATEADD(day, IIF(DATEPART(hour, dz.DatPorizeni)<6, -1, 0), dz.DatPorizeni))=CONVERT(datetime, N''1.1.1999'', 104) ) )'
|
|
+ ' GROUP BY s.Nazev,'
|
|
+ ' dbo.hf_TruncDate(DATEADD(day, IIF(DATEPART(hour, dz.DatPorizeni)<6, -1, 0), dz.DatPorizeni)),'
|
|
+ ' dbo.ef_VyrobniDenik_GetSmenu(dz.DatPorizeni),'
|
|
+ ' k.ID, k.CisloZbozi, pz.RegCis, pz.Nazev1, pz.MJEvidence';
|
|
|
|
if (den=0) then
|
|
den:= Now;
|
|
lSQL:= lSQL.Replace('1.1.1999', FormatDateTime ('dd.mm.yyyy', den.GetDate));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
h:= HourOf(Now);
|
|
m:= MinuteOf(Now);
|
|
|
|
lSQL:= 'DECLARE @datOd DATETIME, @datDo DATETIME' + CRLF;
|
|
|
|
if (h>=6) then
|
|
begin
|
|
lSQL:= lSQL + 'SET @datOd=DATEADD(hour, 6, dbo.hf_TruncDate(' + helUtils.SQLDatetimeConvert(den) + '))' + CRLF;
|
|
lSQL:= lSQL + 'SET @datDo=DATEADD(hour, 6, dbo.hf_TruncDate(' + helUtils.SQLDatetimeConvert(den+1) + '))' + CRLF;
|
|
end
|
|
else
|
|
begin
|
|
lSQL:= lSQL + 'SET @datOd=DATEADD(hour, 6, dbo.hf_TruncDate(' + helUtils.SQLDatetimeConvert(den-1) + '))' + CRLF;
|
|
lSQL:= lSQL + 'SET @datDo=DATEADD(hour, 6, dbo.hf_TruncDate(' + helUtils.SQLDatetimeConvert(den) + '))' + CRLF;
|
|
end;
|
|
|
|
lSQL:= lSQL + 'SELECT * FROM (';
|
|
lSQL:= lSQL + 'SELECT p.Mnozstvi, k.MJEvidence, k.ID AS idKZ, k.CisloZbozi, k.Nazev1, N'''' AS Udalost, p.DatPorizeni, (SELECT Smena FROM dbo.ef_GetDatumASmenu(p.DatPorizeni)) AS Smena';
|
|
lSQL:= lSQL + ', (SELECT Datum FROM dbo.ef_GetDatumASmenu(p.DatPorizeni)) AS Datum, st.Nazev AS Stroj FROM ' + tblPZ + ' p';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblSS + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblKZ + ' k ON (k.ID=s.IDKmenZbozi) LEFT JOIN ' + tblPMZGenPZ + ' pmzg ON (pmzg.IDPohybu=p.ID)';
|
|
lSQL:= lSQL + ' LEFT JOIN ' + tblPMZ + ' pmz ON (pmz.ID=pmzg.IDMzdy) LEFT JOIN ' + tblCStroju + ' st ON (st.ID=pmz.IDStroje)';
|
|
lSQL:= lSQL + ' WHERE k.Dilec=1 AND p.DatPorizeni BETWEEN @datOd AND @datDo'; // ORDER BY p.DatPorizeni';
|
|
lSQL:= lSQL + CRLF + 'UNION ALL' + CRLF;
|
|
lSQL:= lSQL + 'SELECT 0, N'''', 0, N'''', N'''', c.Cinnost, c.DatPorizeni, (SELECT Smena FROM dbo.ef_GetDatumASmenu(c.DatPorizeni)) AS Smena';
|
|
lSQL:= lSQL + ', (SELECT Datum FROM dbo.ef_GetDatumASmenu(c.DatPorizeni)) AS Datum, st.Nazev AS Stroj FROM ' + tblCinnostStr + ' c';
|
|
lSQL:= lSQL + ' LEFT JOIN ' + tblCStroju + ' st ON (st.ID=c.IDStroje)';
|
|
lSQL:= lSQL + ' WHERE c.DatPorizeni BETWEEN @datOd AND @datDo'; // ORDER BY c.DatPorizeni';
|
|
lSQL:= lSQL + ') x ORDER BY x.DatPorizeni';
|
|
|
|
|
|
if (lSQL<>'') then
|
|
begin
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
mjEvid:= VarToStr(FieldByNameValues('MJEvidence'));
|
|
idKZ:= VarToStr(FieldByNameValues('idKZ')).ToInteger;
|
|
mnozKA:= VarToStr(FieldByNameValues('Mnozstvi')).ToExtended;
|
|
kaNaPal:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT PocetHlavni FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKZ.ToString
|
|
+ ' AND KodMJ1=N''KA'' AND KodMJ2=N''pal'' AND PocetOdvozene=1');
|
|
ksVKA:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT PocetOdvozene FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKZ.ToString
|
|
+ ' AND KodMJ1=N''KA'' AND KodMJ2=N''Ks'' AND PocetHlavni=1');
|
|
|
|
vtVyrobniDenik.Append;
|
|
vtVyrobniDenik.FieldByName('colCisloZbozi').AsString:= VarToStr(FieldByNameValues('CisloZbozi'));
|
|
vtVyrobniDenik.FieldByName('colMJ').AsString:= mjEvid;
|
|
vtVyrobniDenik.FieldByName('colUdalost').AsString:= VarToStr(FieldByNameValues('Udalost'));
|
|
vtVyrobniDenik.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtVyrobniDenik.FieldByName('colStroj').AsString:= VarToStr(FieldByNameValues('Stroj'));
|
|
vtVyrobniDenik.FieldByName('colDatum').AsString:= VarToStr(FieldByNameValues('Datum'));
|
|
vtVyrobniDenik.FieldByName('colSmena').AsInteger:= VarToStr(FieldByNameValues('Smena')).ToInteger;
|
|
vtVyrobniDenik.FieldByName('colMnozKA').AsExtended:= 0;
|
|
vtVyrobniDenik.FieldByName('colMnozPal').AsExtended:= 0;
|
|
if (mjEvid='KA') then
|
|
begin
|
|
vtVyrobniDenik.FieldByName('colMnozKA').AsExtended:= mnozKA;
|
|
vtVyrobniDenik.FieldByName('colMnozPal').AsExtended:= (mnozKA / kaNaPal);
|
|
vtVyrobniDenik.FieldByName('colMnoz').AsExtended:= mnozKA * ksVKA;
|
|
end;
|
|
vtVyrobniDenik.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
vtVyrobniDenik.First;
|
|
f.grdVyrobniDenik.Invalidate;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function Tdm.ZapisVyrobenePaletyNestandard (const f: TformPrijemNestandard; idKmen: integer; idStroj: integer): boolean;
|
|
var lSQL: string;
|
|
begin
|
|
result:= true;
|
|
|
|
lSQL:= 'DROP TABLE IF EXISTS #TabPrijemNestandard' + CRLF + 'CREATE TABLE #TabPrijemNestandard (IDKmen INT, MnozstviKg NUMERIC(19,6) NOT NULL DEFAULT 0.0, PaletovyList NVARCHAR(50)';
|
|
lSQL:= lSQL + ', Sarze NVARCHAR(50), DatumVyroby DATETIME, DatumExpirace DATETIME, Smena TINYINT, IDStroje INT)' + CRLF;
|
|
lSQL:= lSQL + 'INSERT #TabPrijemNestandard (IDKmen, MnozstviKg, PaletovyList, Sarze, DatumVyroby, DatumExpirace, Smena, IDStroje) SELECT ' + idKmen.ToString;
|
|
lSQL:= lSQL + ', ' + f.edtKA.Value.ToString.Replace(',', '.') + ', N' + f.edtPaletList.Text.Trim.QuotedString + ', N' + f.edtSarze.Text.Trim.QuotedString;
|
|
lSQL:= lSQL + ', ' + helUtils.SQLDatetimeConvert (f.edtDatVyroba.DateTime, false) + ', ' + helUtils.SQLDatetimeConvert (f.edtDatSpotreba.DateTime, false);
|
|
lSQL:= lSQL + ', ' + f.edtSmena.Text.Trim + ', ' + idStroj.ToString + CRLF;
|
|
lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_Vyroba_PrijemNestandard'', N''P'') IS NOT NULL EXEC dbo.ep_Vyroba_PrijemNestandard';
|
|
try
|
|
Helios.ExecSQL(lSQL);
|
|
except on E: Exception do
|
|
begin
|
|
result:= false;
|
|
Helios.Error(#1'Chyba zápisu příjmu nestandardu:'#1 + CRLF + E.Message);
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiPaletoveListy (const typ: Integer);
|
|
var lSQL: string;
|
|
begin
|
|
if not(vtPaletListy.Active) then
|
|
vtPaletListy.Open;
|
|
vtPaletListy.EmptyDataset;
|
|
|
|
lSQL:= '';
|
|
if (typ=1) then
|
|
lSQL:= '';
|
|
|
|
if (lSQL<>'') then
|
|
with (Helios.OpenSQL(lSQL)) do
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtPaletListy.Append;
|
|
vtPaletListy.FieldByName('colPaletList').AsString:= '';
|
|
vtPaletListy.FieldByName('colDatPorizeni').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtPaletListy.FieldByName('colPoznamka').AsString:= '';
|
|
vtPaletListy.Post;
|
|
Next;
|
|
end;
|
|
vtPaletListy.First;
|
|
end;
|
|
vtPaletListy.First;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiVyrobkyNestandard (const f: TformPrijemNestandard);
|
|
var lSQL: string;
|
|
begin
|
|
if not(vtPrijemNestandard.Active) then
|
|
vtPrijemNestandard.Open;
|
|
|
|
vtPrijemNestandard.EmptyDataset;
|
|
|
|
lSQL:= 'SELECT ID, SkupZbo, RegCis, Nazev1, MJEvidence FROM ' + tblKZ + ' WHERE Dilec=1 AND SkupZbo NOT IN (N''701'') AND Nazev1 LIKE N''%nestandard%'' ORDER BY CisloZbozi';
|
|
with (f.Helios.OpenSQL(lSQL)) do
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtPrijemNestandard.Append;
|
|
vtPrijemNestandard.FieldByName('fID').AsString:= VarToStr(FieldByNameValues('ID'));
|
|
vtPrijemNestandard.FieldByName('fSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtPrijemNestandard.FieldByName('fRegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtPrijemNestandard.FieldByName('fNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtPrijemNestandard.Post;
|
|
Next;
|
|
end;
|
|
vtPrijemNestandard.First;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.DataModuleCreate(Sender: TObject);
|
|
begin
|
|
dmCreated:= true;
|
|
end;
|
|
|
|
|
|
|
|
|
|
function Tdm.VratStroj (const Helios: IHelios; cast: string; const AID: integer): string;
|
|
begin
|
|
cast:= sqlSanitize(cast);
|
|
result:= helUtils.getHeliosStrVal(Helios, '', 'SELECT ' + cast + ' FROM ' + tblCStroju + ' WHERE ID=' + AID.ToString);
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiPlanStroje (const f: TformPekarna; const idStroj: integer; dnes: boolean=true);
|
|
var lSQL: string;
|
|
begin
|
|
if (idStroj>0) then
|
|
begin
|
|
lSQL:= 'SELECT FROM ' + tblAdvKPlanDavky + ' WHERE DatumPripadu=' + IfThen(dnes, 'GETDATE()', '');
|
|
end;
|
|
|
|
|
|
|
|
if (idStroj>0) then
|
|
begin
|
|
lSQL:= 'SELECT ID FROM ' + tblVPr + ' WHERE StavPrikazu IN (20,30) AND ID NOT IN (SELECT r.IDPrikaz FROM ' + tblRozpracOper + ' h INNER JOIN ' + tblRozpracOperR;
|
|
lSQL:= lSQL + ' r ON (r.IDEvidRozpracOper=h.ID) INNER JOIN ' + tblCPrac + ' pr ON (pr.ID=h.IDPracoviste) WHERE h.Stav<30)';
|
|
lSQL:= lSQL + ' AND Rada NOT IN (SELECT Rada FROM ' + tblPrikazRada + ' WHERE nazev LIKE N''%údržb%'')';
|
|
|
|
lSQL:= 'SELECT vp.ID, k.ID AS idKZ, k.RegCis, k.SkupZbo + N'' '' + k.RegCis AS CisloZbozi2, k.Nazev1, dbo.hf_TruncDate(vp.Plan_zadani) AS Plan_zadani, vp.kusy_zad,'
|
|
+ ' vp.kusy_zive, vp.kusy_odved, ISNULL(z.CisloZakazky,N'''') AS CisloZakazky, vp.RadaPrikaz FROM ' + tblVPr + ' vp INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen) LEFT JOIN '
|
|
+ tblZak + ' z ON (z.ID=vp.IDZakazka) WHERE k.SkupZbo<>N''701'' AND vp.ID IN (' + lSQL + ')'
|
|
// + tblZak + ' z ON (z.ID=vp.IDZakazka) WHERE k.SkupZbo NOT LIKE N''70%'' AND vp.ID IN (' + lSQL + ')'
|
|
+ ' AND EXISTS(SELECT 1 FROM ' + tblPrPost + ' WHERE IDPrikaz=vp.ID AND IdOdchylkyDo IS NULL AND IDStroje=' + idStroj.ToString +') ORDER BY vp.Plan_zadani';
|
|
|
|
vtPlanDnes.DisableControls;
|
|
try
|
|
with (f.Helios.OpenSQL(lSQL)) do
|
|
begin
|
|
First;
|
|
if not(vtPlanDnes.Active) then
|
|
vtPlanDnes.Open;
|
|
vtPlanDnes.EmptyDataset;
|
|
|
|
aktIdKmenPlan:= 0;
|
|
|
|
while not(EOF) do // prikazy co nejsou nastartovane, ale zadane do vyroby
|
|
begin
|
|
vtPlanDnes.Append;
|
|
vtPlanDnes.FieldByName('fIDPlan').AsString:= VarToStr(FieldByNameValues('ID')); // ID prikaz
|
|
vtPlanDnes.FieldByName('fRegCis').AsString:= VarToStr(FieldByNameValues('CisloZbozi2'));
|
|
vtPlanDnes.FieldByName('fVyrobek').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtPlanDnes.FieldByName('fHotovo').AsExtended:= VarToStr(FieldByNameValues('kusy_odved')).ToExtended;
|
|
vtPlanDnes.FieldByName('fMnozZive').AsExtended:= VarToStr(FieldByNameValues('kusy_zive')).ToExtended;
|
|
vtPlanDnes.FieldByName('fZakazka').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ', '');
|
|
vtPlanDnes.FieldByName('fDatPlanZadani').AsString:= VarToStr(FieldByNameValues('Plan_zadani'));
|
|
vtPlanDnes.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
except on E:Exception do
|
|
lSQL:= E.Message;
|
|
end;
|
|
|
|
if (datMod.bmIdPlanDnes=0) then
|
|
vtPlanDnes.First
|
|
else
|
|
if not(vtPlanDnes.Locate('fIDPlan', VarArrayOf([datMod.bmIdPlanDnes]), [loPartialKey])) then
|
|
begin
|
|
datMod.bmIdPlanDnes:= 0;
|
|
vtPlanDnes.First;
|
|
end;
|
|
|
|
|
|
vtPlanDnes.EnableControls;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiRozpracovane (const f: TformPekarna; const idStroj: integer);
|
|
var lSQL: string;
|
|
idVPr, idH, idS, idK, radaPrikaz, cisloPL: string;
|
|
mnVCP, mnZbytVCPP: Extended;
|
|
i1, i2: integer;
|
|
begin
|
|
|
|
|
|
|
|
lSQL:= 'SELECT DISTINCT(vp.ID) FROM ' + tblPrPost + ' prp INNER JOIN ' + tblPrikaz + ' vp ON (vp.ID=prp.IDPrikaz)';
|
|
lSQL:= lSQL + ' WHERE vp.StavPrikazu=40 AND prp.IDOdchylkyDo IS NULL AND prp.typ<2 AND prp.IDStroje=' + aktIdStroj.ToString + ' GROUP BY vp.ID';
|
|
{
|
|
lSQL:= 'SELECT e.ID, e.CasZahajeni, e.IDStroje FROM ' + tblRozpracOper + ' e WHERE e.Stav<30 /*AND IDStroje=' + aktIdStroj.ToString + ' */';
|
|
lSQL:= lSQL + ' AND e.ID NOT IN (SELECT er.IDEvidRozpracOper FROM ' + tblRozpracOperR + ' er INNER JOIN ' + tblPrikaz + ' p ON (p.ID=er.IDPrikaz) INNER JOIN ' + tblKZ;
|
|
lSQL:= lSQL + ' k ON (k.ID=p.IDTabKmen) WHERE k.SkupZbo LIKE N''70%'')';
|
|
lSQL:= lSQL + 'ORDER BY e.DatPorizeni';
|
|
}
|
|
lSQL:= 'SELECT vp.ID, vp.IDTabKmen FROM ' + tblPrikaz + ' vp INNER JOIN '
|
|
+ tblKZ + ' kz ON (kz.ID=vp.IDTabKmen) WHERE vp.ID IN (' + lSQL + ') ORDER BY vp.DatPorizeni';
|
|
|
|
{
|
|
lSQL:= 'SELECT DISTINCT(vcp.VyrCislo), vcp.Popis, vcp.ID FROM ' + tblRozpracOperR + ' r INNER JOIN ' + tblRozpracOper + ' h ON (h.ID=r.IDEvidRozpracOper) INNER JOIN ' + tblPrikazVC + ' vcp ON (vcp.ID=r.IDVyrCis)'
|
|
+ ' INNER JOIN ' + tblPrikaz + ' vp ON (vcp.IDPrikaz=vp.ID) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen) WHERE h.DatumUzavreni IS NULL AND r.IDVyrCis IS NOT NULL GROUP BY vcp.VyrCislo';
|
|
}
|
|
lSQL:= 'SELECT DISTINCT(vp.ID) AS ID, vp.IDTabKmen FROM ' + tblRozpracOperR + ' r INNER JOIN ' + tblRozpracOper + ' h ON (h.ID=r.IDEvidRozpracOper) INNER JOIN ' + tblPrikazVC + ' vcp ON (vcp.ID=r.IDVyrCis)'
|
|
+ ' INNER JOIN ' + tblPrikaz + ' vp ON (vcp.IDPrikaz=vp.ID) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen) WHERE h.DatumUzavreni IS NULL AND r.IDVyrCis IS NOT NULL GROUP BY vp.ID, vp.IDTabKmen';
|
|
|
|
Helios.ExecSQL ('DELETE FROM ' + tblPalety + ' WHERE IDPrikaz NOT IN (SELECT ID FROM ' + tblVPr + ')');
|
|
Helios.ExecSQL ('MERGE ' + tblPalety + ' AS T USING ' + tblPaletyUkonceni + ' AS S ON (S.IDPalety=T.ID) WHEN MATCHED AND T.DatUkonceni IS NULL THEN UPDATE SET T.DatUkonceni=S.DatPorizeni;');
|
|
|
|
lSQL:= 'SELECT CisloPalety, IDPrikaz, DatZahajeni, IDStroj FROM ' + tblPalety + ' WHERE DatZahajeni IS NOT NULL AND DatUkonceni IS NULL';
|
|
|
|
|
|
with (f.Helios.OpenSQL(lSQL)) do
|
|
begin
|
|
if not(vtRozpracPL.Active) then
|
|
vtRozpracPL.Open;
|
|
vtRozpracPL.EmptyDataset;
|
|
aktIdKmenRozprac:= 0;
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
cisloPL:= VarToStr(FieldByNameValues('CisloPalety'));
|
|
idVPr:= VarToStr(FieldByNameValues('IDPrikaz'));
|
|
|
|
if (idVPr<>'') and (helUtils.IsNumeric(idVPr)) then
|
|
begin
|
|
if not(helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblVPr + ' WHERE ID=' + idVPr)) then
|
|
Next;
|
|
|
|
idK:= helUtils.getHeliosStrVal (Helios, '', 'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idVPr);
|
|
|
|
vtRozpracPL.Append;
|
|
vtRozpracPL.FieldByName('fIDPrikaz').AsString:= idVPr;
|
|
idS:= VarToStr(FieldByNameValues('IDStroj'));
|
|
vtRozpracPL.FieldByName('fIDStroj').AsString:= idS;
|
|
vtRozpracPL.FieldByName('fStroj').AsString:= helUtils.getHeliosStrVal(f.Helios, '', 'SELECT Nazev FROM ' + tblCStroju + ' WHERE ID=' + idS);
|
|
vtRozpracPL.FieldByName('fAktPaletList').AsString:= cisloPL;
|
|
vtRozpracPL.FieldByName('fDatStart').AsString:= VarToStr(FieldByNameValues('DatZahajeni'));
|
|
|
|
with Helios.OpenSQL('SELECT SkupZbo, RegCis, Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idK) do
|
|
begin
|
|
vtRozpracPL.FieldByName('fSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtRozpracPL.FieldByName('fRC').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtRozpracPL.FieldByName('fCisloZbozi').AsString:= vtRozpracPL.FieldByName('fSZ').AsString + ' ' + vtRozpracPL.FieldByName('fRC').AsString;
|
|
vtRozpracPL.FieldByName('fVyrobek').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
end;
|
|
|
|
vtRozpracPL.Post;
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
|
|
{
|
|
with (f.Helios.OpenSQL(lSQL)) do
|
|
begin
|
|
if not(vtRozpracPL.Active) then
|
|
vtRozpracPL.Open;
|
|
vtRozpracPL.EmptyDataset;
|
|
aktIdKmenRozprac:= 0;
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idVPr:= VarToStr(FieldByNameValues('ID'));
|
|
idK:= VarToStr(FieldByNameValues('IDTabKmen'));
|
|
radaPrikaz:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr);
|
|
|
|
idS:= '0';
|
|
if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblPrPost + ' WHERE IDPrikaz=' + idVPr + ' AND IdOdchylkyDo IS NULL AND IDStroje=' + datMod.bmIdStroj.ToString)) then
|
|
idS:= datMod.bmIdStroj.ToString;
|
|
|
|
cisloPL:= '';
|
|
mnVCP:= 0;
|
|
lSQL:= 'SELECT TOP(1) vcs.Nazev1, vcp.Mnozstvi FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) INNER JOIN ' + tblVPr + ' vp ON (vp.ID=p.IDPrikaz) INNER JOIN ' + tblSS;
|
|
lSQL:= lSQL + ' s ON (s.ID=p.IDZboSklad) INNER JOIN ' + tblVyrCS + ' vcs ON (vcs.IDStavSkladu=s.ID) INNER JOIN ' + tblVyrCP + ' vcp ON (vcp.IDPolozkaDokladu=p.ID AND vcp.IDVyrCis=vcs.ID)';
|
|
lSQL:= lSQL + ' WHERE p.DruhPohybuZbo=0 AND vp.ID=' + idVPr + ' AND p.TypVyrobnihoDokladu=0 ORDER BY p.DatPorizeni DESC';
|
|
with Helios.OpenSQL(lSQL) do
|
|
if (RecordCount=1) then
|
|
begin
|
|
cisloPL:= VarToStr(FieldByNameValues('Nazev1'));
|
|
mnVCP:= VarToStr(FieldByNameValues('Mnozstvi')).ToExtended;
|
|
end;
|
|
if not(TryStrToInt(cisloPL, i1)) then
|
|
i1:= 0;
|
|
|
|
mnZbytVCPP:= helUtils.getHeliosFloatVal(Helios, -1, 'SELECT MnozstviZive FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idVPr + ' AND VyrCislo=N' + cisloPL.QuotedString);
|
|
if (mnZbytVCPP<=0) then // nemam zbytek na VC, tj. paleta byla odvedena kompletni, pro rozpracovanost zkus dohledat dalsi v rade
|
|
begin
|
|
lSQL:= 'SELECT VyrCislo FROM ' + tblPrikazVC + ' WHERE MnozstviZive>0 AND IDPrikaz=' + idVPr + ' AND ISNULL(TRY_PARSE(VyrCislo AS INT),0)>' + i1.ToString;
|
|
lSQL:= lSQL + ' ORDER BY TRY_PARSE(VyrCislo AS INT)';
|
|
cisloPL:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
if (cisloPL<>'') then // pokud mam dalsi paletu, kolik je na ni zbytek pro vyrobu ?
|
|
mnZbytVCPP:= helUtils.getHeliosFloatVal(Helios, -1, 'SELECT MnozstviZive FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idVPr + ' AND VyrCislo=N' + cisloPL.QuotedString);
|
|
end;
|
|
|
|
vtRozpracPL.Append;
|
|
vtRozpracPL.FieldByName('fIDPrikaz').AsString:= idVPr;
|
|
vtRozpracPL.FieldByName('fIDEvidRozp').AsString:= '';
|
|
vtRozpracPL.FieldByName('fIDStroj').AsString:= idS;
|
|
vtRozpracPL.FieldByName('fRadaPrikaz').AsString:= radaPrikaz;
|
|
vtRozpracPL.FieldByName('fStroj').AsString:= helUtils.getHeliosStrVal(f.Helios, '', 'SELECT Nazev FROM ' + tblCStroju + ' WHERE ID=' + idS);
|
|
vtRozpracPL.FieldByName('fAktPaletList').AsString:= cisloPL;
|
|
lSQL:= 'SELECT TOP(1) Datum FROM ' + tblZmenLog + ' WHERE Tabulka=N' + getPlainTabName(tblPrikaz).QuotedString + ' AND IDvTab=' + idVPr + ' ORDER BY Datum DESC';
|
|
vtRozpracPL.FieldByName('fDatStart').AsString:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
vtRozpracPL.FieldByName('fColR').AsBoolean:= false; // rozpracovano ? Pokud TRUE, zobrazit tlacitko pro vyrazeni palety z vyroby
|
|
|
|
with Helios.OpenSQL('SELECT SkupZbo, RegCis, Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idK) do
|
|
begin
|
|
vtRozpracPL.FieldByName('fSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
|
|
vtRozpracPL.FieldByName('fRC').AsString:= VarToStr(FieldByNameValues('RegCis'));
|
|
vtRozpracPL.FieldByName('fCisloZbozi').AsString:= vtRozpracPL.FieldByName('fSZ').AsString + ' ' + vtRozpracPL.FieldByName('fRC').AsString;
|
|
vtRozpracPL.FieldByName('fVyrobek').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
end;
|
|
|
|
vtRozpracPL.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
}
|
|
|
|
vtRozpracPL.First;
|
|
f.grdRozpracovane.Invalidate;
|
|
end;
|
|
|
|
|
|
|
|
|
|
function Tdm.VratNazevTabulky (tabName: string; inclSchema: Boolean = False): string;
|
|
begin
|
|
result:= tabName;
|
|
result:= result.Replace(']', '').Replace('[', '');
|
|
if (not inclSchema) then
|
|
result:= result.Replace('dbo.', '');
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.vtCCP1BeforeDelete (DataSet: TDataSet);
|
|
begin
|
|
if (True) then
|
|
System.SysUtils.Abort;
|
|
{ Exclude dgConfirmDelete from DBGrid1.Options }
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.vtCCP1BeforeInsert (DataSet: TDataSet);
|
|
begin
|
|
if (DataSet.Tag=0) then
|
|
System.SysUtils.Abort;
|
|
end;
|
|
|
|
|
|
|
|
|
|
function Tdm.PocetStrojuSVyrobou: Integer;
|
|
var i: integer;
|
|
begin
|
|
result:= 0;
|
|
dm.vtStroje.DisableControls;
|
|
i:= dm.vtStroje.RecNo;
|
|
dm.vtStroje.First;
|
|
while not(dm.vtStroje.Eof) do
|
|
begin
|
|
if (dm.vtStroje.FieldByName('fCinnost').AsString='Výroba') then
|
|
Inc(Result);
|
|
dm.vtStroje.Next;
|
|
end;
|
|
dm.vtStroje.RecNo:= i;
|
|
dm.vtStroje.EnableControls;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiCCP1ProNoveZaznamy (const f: TformKontrolaCCP1edt);
|
|
var lSQL: string;
|
|
i, i2, hod, smena: Integer;
|
|
cas: TDateTime;
|
|
begin
|
|
if (apiMod) and (1=0) then
|
|
begin
|
|
url:= apiServer + IfThen(apiServer.EndsWith('/'), '', '/') + 'vyroba/ccp1/?den=';
|
|
end
|
|
else
|
|
begin
|
|
i:= vtStroje.RecNo;
|
|
vtStroje.DisableControls;
|
|
|
|
i2:= 0;
|
|
if not(vtStroje.Active) then
|
|
vtStroje.Open;
|
|
vtStroje.First;
|
|
while not(vtStroje.Eof) do
|
|
begin
|
|
|
|
if (vtStroje.FieldByName('fCinnost').AsString='Výroba') then
|
|
begin
|
|
f.grdCCP1.Cells[0, i2]:= vtStroje.FieldByName('fIDStroj').AsString;
|
|
f.grdCCP1.Cells[13, i2]:= vtStroje.FieldByName('fIDPrikaz').AsString;
|
|
|
|
f.grdCCP1.Cells[1, i2]:= vtStroje.FieldByName('fStroj').AsString;
|
|
cas:= Now;
|
|
hod:= HourOf(cas);
|
|
if (hod in [0..5]) then
|
|
smena:= 3
|
|
else
|
|
if (hod in [6..13]) then
|
|
smena:= 1
|
|
else
|
|
if (hod in [14..21]) then
|
|
smena:= 2
|
|
else
|
|
smena:= 3;
|
|
f.grdCCP1.Cells[3, i2]:= smena.ToString;
|
|
// if (smena=3) and (hod<6) then
|
|
// cas:= IncDay(cas, -1);
|
|
|
|
f.grdCCP1.Cells[2, i2]:= FormatDateTime('dd.mm.yyyy hh:nn', Now);
|
|
|
|
f.grdCCP1.Cells[10, i2]:= vtStroje.FieldByName('fVyrobek').AsString;
|
|
f.grdCCP1.Invalidate;
|
|
Inc(i2);
|
|
end;
|
|
f.grdCCP1.Refresh;
|
|
vtStroje.Next;
|
|
end;
|
|
|
|
vtStroje.RecNo:= i;
|
|
vtStroje.EnableControls;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiCCP1 (const f: TformKontrolaCCP1);
|
|
var lSQL: string;
|
|
i: Integer;
|
|
begin
|
|
if (apiMod) and (1=0) then
|
|
begin
|
|
url:= apiServer + IfThen(apiServer.EndsWith('/'), '', '/') + 'vyroba/ccp1/?den=';
|
|
end
|
|
else
|
|
begin
|
|
lSQL:= 'DECLARE @dat DATETIME=NULL' + CRLF + IfThen(vyrobniDen>0, 'SET @dat=CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy hh:nn:ss', vyrobniDen).QuotedString + ',104)' + CRLF, '');
|
|
lSQL:= lSQL + 'SELECT c.ID, c.Smena, c.Teplota, c.Rychlost, c.Hmotnost, c.Delka, c.Prumer, c.OdpovidaPredpisu, c.NapravneOpatreni, c.Uzavreno, c.Autor, s.Nazev AS NazevStroje';
|
|
lSQL:= lSQL + ', c.DatPorizeni, c.IDStroj, k.Nazev1, FORMAT(c.DatPorizeni, N''dd\.MM\.yyyy HH\.mm'') AS DatPorizeniFmt FROM ' + tblCCP1;
|
|
lSQL:= lSQL + ' c INNER JOIN ' + tblCStroju + ' s ON (s.ID=c.IDStroj) INNER JOIN ' + tblKZ + ' k ON (k.ID=c.IDKmenZbozi)';
|
|
if (vyrobniDen>0) then
|
|
lSQL:= lSQL + ' WHERE c.DatPorizeni_X=dbo.hf_TruncDate(@dat)';
|
|
lSQL:= lSQL + ' ORDER BY c.DatPorizeni';
|
|
with (f.Helios.OpenSQL(lSQL)) do
|
|
begin
|
|
f.grdCCP1.RowCount:= RecordCount + 1;
|
|
if (RecordCount>0) then
|
|
begin
|
|
i:= 0;
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
f.grdCCP1.Cells[0, i]:= VarToStr(FieldByNameValues('IDStroj'));
|
|
f.grdCCP1.Cells[1, i]:= VarToStr(FieldByNameValues('NazevStroje'));
|
|
f.grdCCP1.Cells[2, i]:= VarToStr(FieldByNameValues('DatPorizeniFmt'));
|
|
f.grdCCP1.Cells[3, i]:= VarToStr(FieldByNameValues('Smena'));
|
|
|
|
f.grdCCP1.Cells[4, i]:= VarToStr(FieldByNameValues('Teplota'));
|
|
f.grdCCP1.Cells[5, i]:= VarToStr(FieldByNameValues('Rychlost'));
|
|
f.grdCCP1.Cells[6, i]:= VarToStr(FieldByNameValues('Hmotnost'));
|
|
f.grdCCP1.Cells[7, i]:= VarToStr(FieldByNameValues('Delka'));
|
|
f.grdCCP1.Cells[8, i]:= VarToStr(FieldByNameValues('Prumer'));
|
|
|
|
f.grdCCP1.Cells[10, i]:= VarToStr(FieldByNameValues('Nazev1'));
|
|
f.grdCCP1.Cells[11, i]:= VarToStr(FieldByNameValues('NapravneOpatreni'));
|
|
|
|
Inc(i);
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
f.grdCCP1.Refresh;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiStrojeAPraci (const f: TformPekarna);
|
|
var lSQL, cisloPL, sarze: string;
|
|
idStroj, idVPr, cntVz: integer;
|
|
begin
|
|
lSQL:= 'SELECT st.ID, p.Pracoviste, st.Nazev, st.Kod FROM ' + tblCStroju + ' st INNER JOIN ' + tblCPrac + ' p ON (p.ID=IDPrac) WHERE p.IDTabStrom=N' + stredPekarna.ToString.QuotedString;
|
|
lSQL:= lSQL + ' AND p.Blokovano=0 AND st.Blokovano=0 ORDER BY st.Nazev';
|
|
|
|
dm.vtStroje.DisableControls;
|
|
|
|
if not(vtStroje.Active) then
|
|
vtStroje.Open;
|
|
vtStroje.EmptyDataset;
|
|
|
|
bmIdStroj:= aktIdStroj;
|
|
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtStroje.Append;
|
|
idStroj:= FieldByNameValues('ID');
|
|
if (BOF) then
|
|
datMod.aktIdStroj:= idStroj;
|
|
|
|
vtStroje.FieldByName('fIDStroj').AsString:= idStroj.ToString;
|
|
vtStroje.FieldByName('fStroj').AsString:= VarToStr(FieldByNameValues('Nazev'));
|
|
{
|
|
vtStroje.FieldByName('fCinnost').AsString:= datMod.getFirstWord (helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) Cinnost FROM ' + tblCinnostStr + ' WHERE IDStroje='
|
|
+ idStroj.ToString + ' ORDER BY DatPorizeni DESC'));
|
|
}
|
|
vtStroje.FieldByName('fCinnost').AsString:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) Cinnost FROM ' + tblCinnostStr + ' WHERE IDStroje=' + idStroj.ToString
|
|
+ ' AND DatKonec IS NULL ORDER BY DatPorizeni DESC');
|
|
vtStroje.FieldByName('fAktPaletList').AsString:= '';
|
|
vtStroje.FieldByName('fVyrobenoKA').AsExtended:= 0;
|
|
|
|
|
|
lSQL:= 'SELECT TOP(1) e.ID, vp.ID AS idVPr, ISNULL(z.CisloZakazky, N'''') AS CisloZakazky, k.CisloZbozi, k.ID AS IDKmen, k.Nazev1, k.MJEvidence, vp.RadaPrikaz';
|
|
lSQL:= lSQL + ', ISNULL(vc.VyrCislo, N'''') AS VyrCislo, ISNULL(eoe._Sarze, N'''') AS Sarze FROM ' + tblRozpracOper;
|
|
lSQL:= lSQL + ' e INNER JOIN ' + tblRozpracOperR + ' eo ON (eo.IDEvidRozpracOper=e.ID) INNER JOIN ' + tblVPr + ' vp ON (eo.IDPrikaz=vp.ID) LEFT JOIN ' + tblZak;
|
|
lSQL:= lSQL + ' z ON (z.ID=vp.IDZakazka) INNER JOIN ' + tblKZ + ' k ON (k.ID=vp.IDTabKmen) LEFT JOIN ' + tblPrikazVC + ' vc ON (vc.ID=eo.IDVyrCis)';
|
|
lSQL:= lSQL + ' LEFT JOIN ' + tblRozpracOperRE + ' eoe ON (eoe.ID=eo.ID)';
|
|
lSQL:= lSQL + ' WHERE e.DatumUzavreni IS NULL AND e.IDStroje=' + idStroj.ToString + ' AND vp.StavPrikazu=30 ORDER BY e.CasZahajeni DESC';
|
|
|
|
with Helios.OpenSQL(lSQL) do
|
|
begin
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtStroje.FieldByName('fVyrobek').AsString:= VarToStr(FieldByNameValues('Nazev1'));
|
|
vtStroje.FieldByName('fZakazka').AsString:= VarToStr(FieldByNameValues('RadaPrikaz')).Replace(' ','');
|
|
vtStroje.FieldByName('fIDEvidRozpOper').AsString:= VarToStr(FieldByNameValues('ID'));
|
|
idVPr:= VarToStr(FieldByNameValues('idVPr')).ToInteger;
|
|
vtStroje.FieldByName('fIDPrikaz').AsInteger:= idVPr;
|
|
vtStroje.FieldByName('fCisloZbozi').AsString:= VarToStr(FieldByNameValues('CisloZbozi'));
|
|
vtStroje.FieldByName('fIDKmen').AsString:= VarToStr(FieldByNameValues('IDKmen'));
|
|
vtStroje.FieldByName('fCinnost').AsString:= 'Výroba';
|
|
|
|
cisloPL:= VarToStr(FieldByNameValues('VyrCislo'));
|
|
vtStroje.FieldByName('fAktPaletList').AsString:= cisloPL;
|
|
sarze:= VarToStr(FieldByNameValues('Sarze'));
|
|
vtStroje.FieldByName('fSarze').AsString:= sarze;
|
|
|
|
if (cisloPL<>'') and (sarze<>'') and (idVPr>0) then
|
|
begin
|
|
lSQL:= 'SELECT TOP(1) ID FROM ' + tblPalety + ' WHERE IDPrikaz=' + idVPr.ToString + ' AND CisloPalety=N' + cisloPL.QuotedString
|
|
+ ' AND Sarze=N' + sarze.QuotedString + ' AND DatUkonceni IS NULL AND IDStroj=' + idStroj.ToString + ' ORDER BY ID';
|
|
vtStroje.FieldByName('fIDPaleta').AsInteger:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
|
end;
|
|
|
|
|
|
// vtRozpracPL.Append;
|
|
// dm.vtRozpracPL.FieldByName('')
|
|
// vtRozpracPL.Post;
|
|
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
if (helUtils.sqlExistsTestGeneral(Helios, 'SELECT 1 FROM ' + tblCCP1 + ' WHERE IDStroj=' + idStroj.ToString + ' AND DatPorizeni_X=' + helUtils.SQLDatetimeConvert(f.ledtVyrobniDen.DateTime))) then
|
|
vtStroje.FieldByName('fCCP1').AsBoolean:= true;
|
|
|
|
cntVz:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT COUNT(ID) FROM ' + tblVzorky + ' WHERE IDStroj=' + idStroj.ToString + ' AND Ukonceno=0');
|
|
if (cntVz>0) then
|
|
vtStroje.FieldByName('fVZ').AsInteger:= cntVz;
|
|
|
|
|
|
{
|
|
lSQL:= 'SELECT TOP(1) p.ID FROM ' + tblRozpracOper + ' ro INNER JOIN ' + tblRozpracOperR + ' ror ON (ror.IDEvidRozpracOper=ro.ID) INNER JOIN ' + tblPrPost;
|
|
lSQL:= lSQL + ' pp ON (pp.Alt=ror.AltPrPostup AND pp.Doklad=ror.DokladPrPostup AND pp.IDPrikaz=ror.IDPrikaz)';
|
|
lSQL:= lSQL + ' INNER JOIN ' + tblVPr + ' p ON (p.ID=pp.IDPrikaz) WHERE ro.CasUkonceni IS NULL AND ro.IDStroje=' + idStroj.ToString;
|
|
idVPr:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
|
|
dm.vtStroje.FieldByName('fVyrobek').AsString:= helUtils.getHeliosStrVal(Helios, '', lSQL);
|
|
}
|
|
|
|
|
|
vtStroje.Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
f.runTimerRozprac:= false;
|
|
f.timerPrehledTimer (f);
|
|
f.runTimerRozprac:= true;
|
|
|
|
if (datMod.bmIdStroj>0) then
|
|
dm.vtStroje.Locate('fIDStroj', VarArrayOf([datMod.bmIdStroj]), [loPartialKey]);
|
|
|
|
dm.vtStroje.EnableControls;
|
|
f.grdStroje.Invalidate;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiDataPaneluStroje (const f: TformPekarna; var a: TArray<integer>);
|
|
var lSQL: string;
|
|
idStroje: integer;
|
|
begin
|
|
|
|
f.grdStroje.DataSource.DataSet.DisableControls;
|
|
if (apiMod) and (1=0) then
|
|
begin
|
|
url:= apiServer + IfThen(apiServer.EndsWith('/'), '', '/') + 'ciselnik/tpv/stroj/?stredisko=211';
|
|
end
|
|
else
|
|
begin
|
|
lSQL:= 'SELECT ID, Kod, Nazev FROM ' + tblCStroju + ' ORDER BY Kod';
|
|
with f.Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
if not(vtStroje.Active) then
|
|
vtStroje.Open;
|
|
vtStroje.EmptyDataset;
|
|
|
|
SetLength(a, RecordCount);
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
idStroje:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
vtStroje.Append;
|
|
vtStroje.FieldByName('fIDStroj').AsInteger:= idStroje;
|
|
vtStroje.FieldByName('fStroj').AsString:= VarToStr(FieldByNameValues('Nazev'));
|
|
|
|
vtStroje.FieldByName('fCinnost').AsString:= helUtils.getHeliosStrVal(Helios, '', 'SELECT TOP(1) Cinnost FROM ' + tblCinnostStr + ' WHERE IDStroje='
|
|
+ idStroje.ToString + ' ORDER BY DatPorizeni DESC');
|
|
|
|
vtStroje.Post;
|
|
a[vtStroje.RecNo-1]:= VarToStr(FieldByNameValues('ID')).ToInteger;
|
|
Next;
|
|
end;
|
|
vtStroje.First;
|
|
end;
|
|
end;
|
|
|
|
f.grdStroje.DataSource.DataSet.EnableControls;
|
|
f.grdStroje.Invalidate;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure Tdm.NactiVyrobniPoznamky (const f: TformPekarna);
|
|
var lSQL: string;
|
|
begin
|
|
// if (Assigned(formPekarna)) then
|
|
begin
|
|
if (f.sgInfo.Cells[2, 1]<>'') then
|
|
begin
|
|
dsVyrobniPozn.DataSet.DisableControls;
|
|
lSQL:= 'SELECT ID, VyrobniDen, Poznamka FROM ' + tblVyrPozn + ' WHERE VyrobniDen_X=CONVERT(datetime, N' + f.sgInfo.Cells[2, 1].QuotedString + ', 104) ORDER BY ID';
|
|
with f.Helios.OpenSQL(lSQL) do
|
|
if (RecordCount>0) then
|
|
begin
|
|
if not(vtVyrobniPozn.Active) then
|
|
vtVyrobniPozn.Open;
|
|
First;
|
|
while not(EOF) do
|
|
begin
|
|
vtVyrobniPozn.Append;
|
|
vtVyrobniPozn.FieldByName('fID').AsInteger:= VarToStr(FieldByName('ID').Value).ToInteger;
|
|
vtVyrobniPozn.FieldByName('fDatum').AsString:= VarToStr(FieldByName('VyrobniDen').Value);
|
|
vtVyrobniPozn.FieldByName('fPoznamka').AsString:= VarToStr(FieldByName('Poznamka').Value);
|
|
vtVyrobniPozn.Post;
|
|
Next;
|
|
end;
|
|
vtVyrobniPozn.First;
|
|
end;
|
|
dsVyrobniPozn.DataSet.EnableControls;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
end.
|