Prvni verze

This commit is contained in:
2025-05-21 21:06:33 +02:00
parent a976e7392e
commit fedc940ac4
189 changed files with 72374 additions and 17 deletions

View File

@ -0,0 +1,12 @@
DECLARE @currDat DATETIME=GETDATE()
IF (COL_LENGTH(N'dbo.TabAdvKPDavky_EXT', N'_MnozstviKs') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabAdvKPDavky', @NazevAtrSys=N'_MnozstviKs', @Skupina=N'Plugin Pl<50>nov<6F>n<EFBFBD>', @NazevAtrVer=N'Mno<EFBFBD>stv<EFBFBD> pl<70>nu (ks)',
@NazevAtrVerZkr=N'', @TypAtr=N'NUMERIC', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'A', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'NUMERIC(19,6)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'Mno<EFBFBD>stv<EFBFBD> ks zobrazen<65> v pluginu Pl<50>nov<6F>n<EFBFBD>', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1
IF (COL_LENGTH(N'dbo.TabAdvKPDavky_EXT', N'_VazbaPlgPlan') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabAdvKPDavky', @NazevAtrSys=N'_VazbaPlgPlan', @Skupina=N'Plugin Pl<50>nov<6F>n<EFBFBD>', @NazevAtrVer=N'ID pl<70>nu pluginu',
@NazevAtrVerZkr=N'', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'N', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'ID sady d<>vek zalo<6C>en<65>ch v pluginu Pl<50>nov<6F>n<EFBFBD>', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=0

View File

@ -0,0 +1,14 @@
DECLARE @currDat DATETIME=GETDATE()
IF (COL_LENGTH(N'dbo.TabPrikaz_EXT', N'_PlanZahajeni') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrikaz', @NazevAtrSys=N'_PlanZahajeni', @Skupina=N'Plugin Pl<50>nov<6F>n<EFBFBD>', @NazevAtrVer=N'Pl<EFBFBD>novan<EFBFBD> zah<61>jen<65>',
@NazevAtrVerZkr=N'', @TypAtr=N'DATETIME', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'DATETIME', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'Pl<EFBFBD>novan<EFBFBD> zah<61>jen<65> z pluginu Pl<50>nov<6F>n<EFBFBD>', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1
IF (COL_LENGTH(N'dbo.TabPrikaz_EXT', N'_PlanUkonceni') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrikaz', @NazevAtrSys=N'_PlanUkonceni', @Skupina=N'Plugin Pl<50>nov<6F>n<EFBFBD>', @NazevAtrVer=N'Pl<EFBFBD>novan<EFBFBD> ukon<6F>en<65>',
@NazevAtrVerZkr=N'', @TypAtr=N'DATETIME', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'DATETIME', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'Pl<EFBFBD>novan<EFBFBD> ukon<6F>en<65> z pluginu Pl<50>nov<6F>n<EFBFBD>', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1

View File

@ -0,0 +1,4 @@
@echo off
"C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" PluginHDCRTNPlanResource.rc

4766
_plgPlan/datMod2.dfm Normal file

File diff suppressed because it is too large Load Diff

821
_plgPlan/datMod2.pas Normal file
View File

@ -0,0 +1,821 @@
unit datMod2;
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, FireDAC.Comp.DataSet,
FireDAC.Comp.Client,
frmPlan, frmRamcovyPlan, Vcl.BaseImageCollection, Vcl.ImageCollection, System.ImageList, Vcl.ImgList,
Vcl.VirtualImageList, Vcl.Controls;
{$I iConsts.inc}
type
TGridColWidthKoefs = record
fieldName: string;
widthKoef: Extended;
end;
TDavkaPrikazOdv = record
cislo: integer;
idPrikaz: integer;
idDavka: integer;
mnozOdvPrikaz: extended;
mnozZapsane: Extended;
mnozOdvPredchozi: extended;
end;
Tdm2 = class(TDataModule)
vtRozpis: TFDMemTable;
dsRozpis: TDataSource;
dsKalendar: TDataSource;
vtKalendar: TFDMemTable;
vtRozpiscolDatum: TDateField;
vtRozpiscolID: TIntegerField;
vtRozpiscolHodOd: TSmallintField;
vtRozpiscolHodDo: TSmallintField;
vtRozpiscolSkupZbo: TStringField;
vtRozpiscolRegCis: TStringField;
vtRozpiscolNazev: TStringField;
vtRozpiscolPrikaz: TStringField;
vtRozpiscolMnoz: TSmallintField;
vtRozpiscolMnozHotovo: TSmallintField;
vtKalendarcolIDStroj: TIntegerField;
vtKalendarcolStroj: TStringField;
vtKalendarcolNe: TSmallintField;
vtKalendarcolPo: TSmallintField;
vtKalendarcolUt: TSmallintField;
vtKalendarcolSt: TSmallintField;
vtKalendarcolCt: TSmallintField;
vtKalendarcolPa: TSmallintField;
vtKalendarcolSo: TSmallintField;
vtKalendarcolKodStroj: TStringField;
dsKmen: TDataSource;
vtKmen: TFDMemTable;
vtKmencolID: TIntegerField;
vtKmencolSZ: TStringField;
vtKmencolRegCis: TStringField;
vtKmencolNazev1: TStringField;
vtKmencolMJEvid: TStringField;
vtKmencolDilec: TBooleanField;
vtKmencolMaterial: TBooleanField;
vtKmencolSluzba: TBooleanField;
vtKmencolSKP: TStringField;
imgCol: TImageCollection;
imgList: TVirtualImageList;
ImageList1: TImageList;
vtKmenIDZaklad: TIntegerField;
vtKmencolZaklad: TStringField;
vtKmencolIDStroj: TIntegerField;
vtKmencolStroj: TStringField;
vtKmencolKSvKA: TIntegerField;
vtKmencolKAnaPAL: TIntegerField;
vtKmencolKSnaPAL: TIntegerField;
vtKmencolIDZakModif: TIntegerField;
dsZavady: TDataSource;
vtZavady: TFDMemTable;
vtZavadycolID: TIntegerField;
vtZavadycolKod: TStringField;
vtZavadycolTyp: TIntegerField;
vtZavadycolNazev: TStringField;
vtRozpiscolIDDavkaAdvPlan: TIntegerField;
vtRozpiscolIdKmen: TIntegerField;
vtRozpiscolIdPrikaz: TIntegerField;
vtVyrobniTyden: TFDMemTable;
dsVyrobniTyden: TDataSource;
vtVyrobniTydencolTyden: TIntegerField;
vtVyrobniTydencolDatumOd: TDateField;
vtVyrobniTydencolDatumDo: TDateField;
vtVyrobniTydencolRok: TIntegerField;
dsRamcovyPlan: TDataSource;
vtRamcovyPlan: TFDMemTable;
vtRamcovyPlanID: TIntegerField;
vtRamcovyPlanIDKmen: TIntegerField;
vtRamcovyPlanSZ: TStringField;
vtRamcovyPlanRegCis: TStringField;
vtRamcovyPlanNazev1: TStringField;
vtRamcovyPlanMJ: TStringField;
vtRamcovyPlanKs: TIntegerField;
vtRamcovyPlanKA: TIntegerField;
vtRamcovyPlanCisloOrg: TIntegerField;
vtRamcovyPlanM01: TIntegerField;
vtRamcovyPlanM02: TIntegerField;
vtRamcovyPlanM03: TIntegerField;
vtRamcovyPlanM04: TIntegerField;
vtRamcovyPlanM05: TIntegerField;
vtRamcovyPlanM06: TIntegerField;
vtRamcovyPlanM07: TIntegerField;
vtRamcovyPlanM08: TIntegerField;
vtRamcovyPlanM09: TIntegerField;
vtRamcovyPlanM10: TIntegerField;
vtRamcovyPlanM11: TIntegerField;
vtRamcovyPlanM12: TIntegerField;
vtRamcovyPlanSumace: TIntegerField;
vtRamcovyPlanVyroba: TIntegerField;
vtRamcovyPlanZbyva: TIntegerField;
vtRamcovyPlanSklRoo: TIntegerField;
vtRamcovyPlanSklTvin: TIntegerField;
vtRamcovyPlanSklAlter: TIntegerField;
vtRamcovyPlanSklMimoPlan: TBooleanField;
dsRPlanAlter: TDataSource;
vtRPlanAlter: TFDMemTable;
vtRPlanAlterID: TIntegerField;
vtRPlanAlterKalibr: TStringField;
vtRPlanAlterDelkaJm: TFloatField;
vtRPlanAlterStroj: TStringField;
vtRPlanAlterIDStroj: TIntegerField;
dsPlanPL: TDataSource;
vtPlanPL: TFDMemTable;
vtPlanPLIDVCPrikaz: TIntegerField;
vtPlanPLCisloPL: TStringField;
vtPlanPLDatVyrobaZadano: TDateTimeField;
vtPlanPLDatVyrobaStart: TDateTimeField;
vtPlanPLDatExpedice: TDateTimeField;
vtPlanPLKAnaPal: TFloatField;
vtPlanPLKusu: TIntegerField;
vtPlanPLIDPrikaz: TIntegerField;
vtPlanPLDatExpirace: TDateTimeField;
vtRozpiscolIDPlan: TIntegerField;
vtPlanPLCisloExtZak: TStringField;
vtRozpiscolJeUdrzba: TSmallintField;
vtZavadycolIDPrikaz: TIntegerField;
procedure DataModuleCreate (Sender: TObject);
procedure vtKmenCalcFields(DataSet: TDataSet);
private
public
Helios: IHelios;
function VratPrepocetMJ (idKmen: integer; hlavniMJ, odvozenaMJ: string; sloupec: string='PocetOdvozene'): Extended;
procedure VymazRozpis (f: TformPlan); safecall;
procedure NactiRozpis (f: TformPlan; prazdny: boolean=false); safecall;
procedure NactiDavkyPlanu (f: TformPlan; idStroj: Integer=0); safecall;
procedure GenerujRozpis (odData: TDateTime; pocetDnu: integer=14); safecall;
procedure NactiKalendar (f: TformPlan; idStroj: integer=0); safecall;
procedure NactiKmenZbozi (podm: string=''); safecall;
procedure NactiUdrzbu (kodModif: string=''; podm: string=''); safecall;
procedure NactiVyrobniTydny (rok: integer);
procedure PlanPalListyNactiSarzePrikazu (idPrikaz, ksVKA: integer; var externiZak: string);
end;
var
dm2: Tdm2;
dmCreated, apiMod: boolean;
apiServer, phServer, url, sqlLang: string;
idAdvKPl, bidPalety: integer;
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}
uses System.Variants, System.StrUtils, Winapi.Windows, System.DateUtils,
helTabsBIDs, helUtils;
{$R *.dfm}
procedure Tdm2.DataModuleCreate (Sender: TObject);
begin
dmCreated:= true;
end;
function Tdm2.VratPrepocetMJ (idKmen: integer; hlavniMJ, odvozenaMJ: string; sloupec: string='PocetOdvozene'): Extended;
var lSQL: string;
begin
result:= 0;
sloupec:= sqlSanitize (sloupec);
lSQL:= 'SELECT ' + sloupec + ' FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKmen.ToString + ' AND LOWER(KodMJ1)=N' + hlavniMJ.ToLower.QuotedString
+ ' AND LOWER(KodMJ2)=N' + odvozenaMJ.ToLower.QuotedString;
try
result:= helUtils.getHeliosFloatVal (Helios, 0, lSQL);
finally
end;
end;
procedure Tdm2.NactiUdrzbu (kodModif: string=''; podm: string='');
var lSQL, kod: string;
idPrPost: Integer;
begin
if not(vtZavady.Active) then
vtZavady.Open;
// lehka sanitizace SQL
podm:= podm.Replace(';', '').Replace('--','');
lSQL:= 'SELECT TOP(1) pp.ID, pp.Nazev, pp.IDPrikaz, pp.operace FROM ' + tblPrPost + ' pp INNER JOIN ' + tblVPr + ' vp ON (vp.ID=pp.IDPrikaz AND pp.IDOdchylkyDo IS NULL AND pp.priorita=0)'
+ ' INNER JOIN ' + tblZakazModif + ' m ON (m.ID=vp.IDZakazModif) INNER JOIN ' + tblPrikazRada + ' vpr ON (vpr.Rada=vp.Rada) WHERE pp.Typ=0 AND vp.StavPrikazu=30 AND m.Kod=N'
+ kodModif.QuotedString + ' AND vpr.nazev LIKE N''%<25>dr<64>b%''';
{ lSQL:= 'SELECT ID, Kod, Nazev, Typ FROM ' + tblCZavad;
if (podm<>'') then
lSQL:= lSQL + ' WHERE ' + podm;
}
lSQL:= lSQL + ' ORDER BY pp.Nazev';
try
with Helios.OpenSQL (lSQL) do
begin
First;
while not(EOF) do
begin
vtZavady.Append;
idPrPost:= VarToStr(FieldByNameValues('ID')).ToInteger;
vtZavady.FieldByName('colID').AsInteger:= idPrPost;
vtZavady.FieldByName('colNazev').AsString:= VarToStr(FieldByNameValues('Nazev'));
vtZavady.FieldByName('colIDPrikaz').AsInteger:= VarToStr(FieldByNameValues('IDPrikaz')).ToInteger;
vtZavady.FieldByName('colKod').AsString:= VarToStr(FieldByNameValues('operace')).Trim;
// vtZavady.FieldByName('colTyp').AsInteger:= VarToStr(FieldByNameValues('Typ')).ToInteger;
vtZavady.Post;
Next;
end;
end;
finally
end;
end;
procedure Tdm2.NactiKmenZbozi (podm: string='');
var lSQL, mjEvid: string;
idKZ, idZakazModif, idZakazModifDilce: Integer;
begin
if not(vtKmen.Active) then
vtKmen.Open;
// lehka sanitizace SQL
podm:= podm.Replace(';', '').Replace('--','');
lSQL:= 'SELECT k.ID, k.SkupZbo, k.RegCis, k.Nazev1, k.SKP, k.MJEvidence, k.Material, k.Dilec, k.Sluzba, zm.Nazev AS NazevModif, zmd.ID AS IdZMD, zm.ID AS IdZM'
+ ', ISNULL( (SELECT TOP(1) kN.Nazev1 FROM ' + tblKVaz + ' v INNER JOIN ' + tblKZ + ' kN ON (kN.ID=v.nizsi) WHERE v.vyssi=k.ID'
+ ' AND v.ZmenaDo IS NULL AND v.IDZakazModif=zm.ID AND kN.SkupZbo=N''702''), N'''') AS Zaklad'
+ ' FROM ' + tblZakazModifDilce + ' zmd INNER JOIN ' + tblZakazModif + ' zm ON (zm.ID=zmd.IDZakazModif) INNER JOIN ' + tblKZ
+ ' k ON (k.ID=zmd.IDKmenZbozi)';
if (podm<>'') then
lSQL:= lSQL + ' WHERE ' + podm;
lSQL:= lSQL + ' ORDER BY k.SkupZbo, k.RegCis, zm.Nazev';
try
with Helios.OpenSQL (lSQL) do
begin
First;
while not(EOF) do
begin
vtKmen.Append;
idKZ:= VarToStr(FieldByNameValues('ID')).ToInteger;
vtKmen.FieldByName('colID').AsInteger:= idKZ;
vtKmen.FieldByName('colSZ').AsString:= VarToStr(FieldByNameValues('SkupZbo'));
vtKmen.FieldByName('colRegCis').AsString:= VarToStr(FieldByNameValues('RegCis'));
vtKmen.FieldByName('colNazev1').AsString:= VarToStr(FieldByNameValues('Nazev1'));
vtKmen.FieldByName('colSKP').AsString:= VarToStr(FieldByNameValues('SKP'));
mjEvid:= VarToStr(FieldByNameValues('MJEvidence'));
vtKmen.FieldByName('colMJEvid').AsString:= mjEvid;
vtKmen.FieldByName('colMaterial').AsBoolean:= FieldByNameValues('Material');
vtKmen.FieldByName('colDilec').AsString:= FieldByNameValues('Dilec'); // TrueBoolStrs
vtKmen.FieldByName('colSluzba').AsBoolean:= FieldByNameValues('Sluzba');
vtKmen.FieldByName('colZaklad').AsString:= VarToStr(FieldByNameValues('Zaklad'));
if (mjEvid='KA') then
begin
lSQL:= 'SELECT PocetOdvozene FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKZ.ToString + ' AND KodMJ1=N''KA'' AND KodMJ2=N''ks''';
vtKmen.FieldByName('colKSvKA').AsInteger:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
lSQL:= 'SELECT PocetHlavni FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=' + idKZ.ToString + ' AND KodMJ1=N''KA'' AND KodMJ2=N''Pal''';
vtKmen.FieldByName('colKAnaPAL').AsInteger:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
end;
vtKmen.FieldByName('colIDZakModifDilce').AsInteger:= VarToStr(FieldByNameValues('IdZMD')).ToInteger;
vtKmen.FieldByName('colIDZakModif').AsInteger:= VarToStr(FieldByNameValues('IdZM')).ToInteger;
vtKmen.FieldByName('colZakModif').AsString:= VarToStr(FieldByNameValues('NazevModif'));
vtKmen.Post;
Next;
end;
end;
finally
end;
end;
procedure Tdm2.NactiKalendar (f: TformPlan; idStroj: Integer=0);
var lSQL: string;
dStart, dAkt, dNedele, dTesty, dNow, d1: TDateTime;
datumNe, datumTesty: string;
dAktD, dAktM, dAktR, dTestD, dTestM, dTestR: integer;
i, cnt, cntNe, cntPo, cntUt, cntSt, cntCt, cntPa, cntSo: integer;
begin
if not(vtKalendar.Active) then
vtKalendar.Open;
vtKalendar.EmptyDataSet;
idAdvKPl:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT TOP(1) ID FROM ' + tblAdvKPlan + ' WHERE Kod=N''99''');
dNedele:= 0;
dNow:= Now;
d1:= dNow;
if (f.sgCas.Cells[2,1]<>'') then // datumOd
begin
d1:= StrToDateTime(f.sgCas.Cells[2,1]);
dNedele:= d1;
end;
dStart:= StartOfTheWeek (d1);
if (dNow=d1) and (dNedele=0) then
dNedele:= IncDay (dStart, -1);
dAkt:= d1;
dAktD:= DayOf (dAkt);
dAktM:= MonthOf (dAkt);
dAktR:= YearOf (dAkt);
lSQL:= 'SELECT cs.ID, cs.Kod, cs.Nazev FROM ' + tblCStroju + ' cs LEFT JOIN ' + tblCStrojuE + ' cse ON (cse.ID=cs.ID) WHERE cs.Blokovano=0';
lSQL:= lSQL + IfThen(idStroj>0, ' AND cs.ID=' + idStroj.ToString, '') + ' AND ISNULL(cse._Planovani,0)=1 ORDER BY cs.Nazev';
try
with Helios.OpenSQL (lSQL) do
begin
First;
while not(EOF) do
begin
dTesty:= dNedele;
vtKalendar.Append;
idStroj:= VarToStr(FieldByNameValues('ID')).ToInteger;
vtKalendar.FieldByName('colIDStroj').AsInteger:= idStroj;
vtKalendar.FieldByName('colKodStroj').AsString:= VarToStr(FieldByNameValues('Kod'));
vtKalendar.FieldByName('colStroj').AsString:= VarToStr(FieldByNameValues('Nazev'));
for i:=0 to 6 do
begin
// datumTesty:= FormatDateTime ('dd.MM.yyyy', dTesty);
dTestD:= DayOf (dTesty);
dTestM:= MonthOf (dTesty);
dTestR:= YearOf (dTesty);
lSQL:= 'SELECT COUNT(d.ID) FROM ' + tblAdvKPlanDavky + ' d INNER JOIN ' + tblVPr + ' p ON (p.ID=d.IDPrikaz) WHERE d.IdAdvKapacPlan=' + idAdvKPl.ToString
+ IfThen(idStroj=0, '', ' AND d.IDStroje=' + idStroj.ToString) + ' AND p.StavPrikazu IN (30,40) AND d.CasOd_D=' + dTestD.ToString
+ ' AND d.CasOd_M=' + dTestM.ToString + ' AND d.CasOd_Y=' + dTestR.ToString;
cnt:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
case i of
0: begin vtKalendar.FieldByName('colNe').AsInteger:= cnt; cntNe:= cnt; end;
1: begin vtKalendar.FieldByName('colPo').AsInteger:= cnt; cntPo:= cnt; end;
2: begin vtKalendar.FieldByName('colUt').AsInteger:= cnt; cntUt:= cnt; end;
3: begin vtKalendar.FieldByName('colSt').AsInteger:= cnt; cntSt:= cnt; end;
4: begin vtKalendar.FieldByName('colCt').AsInteger:= cnt; cntCt:= cnt; end;
5: begin vtKalendar.FieldByName('colPa').AsInteger:= cnt; cntPa:= cnt; end;
6: begin vtKalendar.FieldByName('colSo').AsInteger:= cnt; cntSo:= cnt; end;
end;
dTesty:= IncDay (dTesty, 1);
end;
vtKalendar.Post;
Next;
end;
end;
finally
end;
end;
procedure Tdm2.VymazRozpis (f: TformPlan);
var i: integer;
d: string;
h: integer;
begin
if not(vtRozpis.Active) then
vtRozpis.Open;
d:= FormatDateTime ('dd.MM.yyyy', Now);
h:= HourOf(Now);
vtRozpis.DisableControls;
vtRozpis.First;
while not(vtRozpis.Eof) do
begin
vtRozpis.Edit;
vtRozpis.FieldByName('colID').AsInteger:= 0;
vtRozpis.FieldByName('colIDDavkaAdvPlan').AsInteger:= 0;
vtRozpis.FieldByName('colPrikaz').AsString:= '';
vtRozpis.FieldByName('colSkupZbo').AsString:= '';
vtRozpis.FieldByName('colRegCis').AsString:= '';
vtRozpis.FieldByName('colNazev').AsString:= '';
vtRozpis.FieldByName('colMnoz').AsInteger:= 0;
vtRozpis.Post;
vtRozpis.Next;
end;
vtRozpis.EnableControls;
vtRozpis.Locate ('colDatum;colHodOd', VarArrayOf ([d, h]), []);
end;
procedure Tdm2.NactiDavkyPlanu (f: TformPlan; idStroj: Integer = 0);
var lSQL: string;
datum, hodiny, radaPrikaz, prikaz, mj, sz, regCis, nazev1, altPrP, nazevOper: string;
prvniDatum, prvniHod: string;
colID, idVPr, idKmen, idVPrOld, casOd, doklPrP, doklPrPOld, jeUdrzba: integer;
cislo, iTemp: integer;
mnoz, kusyCisteVPr, mnozOdv, mnozProZapis, mnozZapsane, ksVKA: extended;
fnd: boolean;
d, d2: TDateTime;
aDavkaVPrOdv: TArray<TDavkaPrikazOdv>;
function SumaZapsanehoMnozstviPred (a: TArray<TDavkaPrikazOdv>; idPrikaz: integer; predCislem: integer=0): extended;
var i, c: integer;
begin
result:= 0;
for i:=0 to Length(a)-1 do
begin
if (a[i].idPrikaz=idPrikaz) then
if (a[i].cislo<predCislem) then
result:= result + a[i].mnozZapsane;
end;
end;
begin
idVPrOld:= 0;
doklPrPOld:= 0;
mnozZapsane:= 0;
iTemp:= 0;
d:= 0;
if (f.sgCas.Cells[2,1]<>'') then
d:= StrToDate(f.sgCas.Cells[2,1]);
GenerujRozpis (d, 7);
vtRozpis.EmptyDataSet;
prvniDatum:= '';
prvniHod:= '';
lSQL:= 'SELECT MIN(da.CasOd) FROM ' + tblAdvKPlanDavky + ' da INNER JOIN ' + tblAdvKPlan + ' kp ON (kp.ID=da.IDAdvKapacPlan) INNER JOIN '
+ tblVPr + ' vp ON (vp.ID=da.IDPrikaz) WHERE kp.Kod=N''99'' AND da.IDStroje=' + idStroj.ToString + ' AND vp.StavPrikazu IN (30,40)';
if (f.sgCas.Cells[2,1]<>'') then
lSQL:= lSQL + ' AND dbo.hf_TruncDate(da.CasOd)>=dbo.hf_TruncDate(CONVERT(datetime, N' + f.sgCas.Cells[2,1].QuotedString + ',104))';
if (f.sgCas.Cells[3,1]<>'') then
lSQL:= lSQL + ' AND dbo.hf_TruncDate(da.CasOd)<=dbo.hf_TruncDate(CONVERT(datetime, N' + f.sgCas.Cells[3,1].QuotedString + ',104))';
datum:= helUtils.getHeliosDateTimeVal (Helios, 0, lSQL).ToString;
if (datum<>'30.12.1899') then
begin
if (datum.IndexOf(' ')>-1) then
begin
prvniDatum:= LeftStr(datum, datum.IndexOf(' '));
prvniHod:= MidStr(datum, datum.IndexOf(' ')+1, 255);
if (prvniHod.IndexOf(':')>-1) then
prvniHod:= LeftStr(prvniHod, prvniHod.IndexOf(':')).Trim;
end
else
begin
prvniDatum:= datum;
prvniHod:= '0';
end;
if (datum.IndexOf(' ')>-1) then
datum:= LeftStr(datum, datum.IndexOf(' '));
GenerujRozpis (StrToDateTime(datum), 7);
vtRozpis.IndexFieldNames:= 'colDatum;colHodOd';
vtRozpis.Refresh;
NactiRozpis (f);
vtRozpis.Refresh;
end;
lSQL:= 'SELECT da.ID, da.CasOd, da.CasDo, ISNULL(dae._MnozstviKs,0) AS MnozstviKs, vp.RadaPrikaz, vp.Prikaz, vp.ID AS IDPrikaz, k.ID AS IDKmen'
+ ', k.SkupZbo, k.RegCis, k.Nazev1, ISNULL(vp.IDPlan,0) AS IDPlan, da.DokladPrPostup, da.AltPrPostup'
+ ', CONVERT(int, CASE WHEN vpr.nazev LIKE N''%<25>dr<64>b%'' THEN 1 ELSE 0 END) AS JeUdrzba'
+ ' FROM ' + tblAdvKPlanDavky + ' da LEFT JOIN ' + tblAdvKPlanDavky_E
+ ' dae ON (dae.ID=da.ID) INNER JOIN ' + tblAdvKPlan + ' kp ON (kp.ID=da.IDAdvKapacPlan) INNER JOIN ' + tblVPr + ' vp ON (vp.ID=da.IDPrikaz) INNER JOIN '
+ tblPrikazRada + ' vpr ON (vpr.Rada=vp.Rada) INNER JOIN '
+ tblKZ + ' k ON (k.ID=vp.IDTabKmen) WHERE kp.Kod=N''99'' AND da.IDStroje=' + idStroj.ToString + ' AND vp.StavPrikazu IN (30,40)';
if (f.sgCas.Cells[2,1]<>'') then
lSQL:= lSQL + ' AND dbo.hf_TruncDate(da.CasOd)>=dbo.hf_TruncDate(CONVERT(datetime, N' + f.sgCas.Cells[2,1].QuotedString + ',104))';
if (f.sgCas.Cells[3,1]<>'') then
lSQL:= lSQL + ' AND dbo.hf_TruncDate(da.CasOd)<=dbo.hf_TruncDate(CONVERT(datetime, N' + f.sgCas.Cells[3,1].QuotedString + ',104))';
lSQL:= lSQL + ' ORDER BY da.CasOd';
with Helios.OpenSQL (lSQL) do
begin
First;
while not(EOF) do
begin
colID:= FieldByNameValues('ID');
datum:= VarToStr(FieldByNameValues('CasOd'));
idVPr:= VarToStr(FieldByNameValues('IDPrikaz')).ToInteger;
doklPrP:= VarToStr(FieldByNameValues('DokladPrPostup')).ToInteger;
altPrP:= VarToStr(FieldByNameValues('AltPrPostup'));
lSQL:= 'SELECT TOP(1) nazev FROM ' + tblPrPost + ' WHERE IDPrikaz=' + idVpr.ToString + ' AND Doklad=' + doklPrP.ToString + ' AND Alt=N' + altPrP.QuotedString
+ ' AND IDOdchylkyDo IS NULL AND Priorita=0';
nazevOper:= helUtils.getHeliosStrVal(Helios, '', lSQL);
Inc(cislo);
if (idVPr<>idVPrOld) then
begin
cislo:= 1;
idKmen:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDTabKmen FROM ' + tblVPr + ' WHERE ID=' + idVPr.ToString);
mj:= helUtils.getHeliosStrVal (Helios, '', 'SELECT MJEvidence FROM ' + tblKZ + ' WHERE ID=' + idKmen.ToString);
ksVKA:= helUtils.getHeliosFloatVal (Helios, 0, 'SELECT dbo.ef_Kmen_VratPocetKsVKartonu (' + idKmen.ToString + ')');
kusyCisteVPr:= helUtils.getHeliosFloatVal (Helios, 0, 'SELECT kusy_ciste FROM ' + tblVPr + ' WHERE ID=' + idVPr.ToString);
lSQL:= 'SELECT SUM(kusy_odv+kusy_zmet_opr+kusy_zmet_neopr) FROM ' + tblPMZ + ' WHERE IDPrikaz=' + idVPr.ToString + ' AND DokladPrPostup=' + doklPrP.ToString;
mnozOdv:= helUtils.getHeliosFloatVal (Helios, 0, lSQL);
if (mj.ToUpper='KA') then
begin
kusyCisteVPr:= kusyCisteVPr * ksVKA;
mnozOdv:= mnozOdv * ksVKA;
end;
idVPrOld:= idVPr;
end;
// idVPrOld:= idVPr;
{
mnoz:= FieldByNameValues('MnzstviKs');
radaPrikaz:= FieldByNameValues('RadaPrikaz');
prikaz:= FieldByNameValues('Prikaz');
regCis:= FieldByNameValues('RegCis');
nazev1:= FieldByNameValues('Nazev1');
}
if (datum<>'') then
begin
if (datum.IndexOf(' ')=-1) then
datum:= datum + ' 00:00:00';
if (datum.IndexOf(' ')>-1) then
begin
hodiny:= MidStr(datum, datum.IndexOf(' ')+1, 255).Trim;
casOd:= LeftStr(hodiny, hodiny.IndexOf(':')).ToInteger;
datum:= LeftStr(datum, datum.IndexOf(' '));
mnozProZapis:= VarToStr(FieldByNameValues('MnozstviKs')).ToExtended;
SetLength (aDavkaVPrOdv, iTemp+1);
aDavkaVPrOdv[iTemp].idPrikaz:= idVPr;
aDavkaVPrOdv[iTemp].cislo:= cislo;
aDavkaVPrOdv[iTemp].idDavka:= colID;
fnd:= vtRozpis.Locate ('colIDDavkaAdvPlan', VarArrayOf ([colID]), []); // colID / colDatum / colHodOd
if not(fnd) then
begin
fnd:= vtRozpis.Locate ('colDatum;colHodOd', VarArrayOf ([datum, casOd]), []);
if (fnd) then
begin
vtRozpis.Edit;
vtRozpis.FieldByName('colID').AsInteger:= colID;
vtRozpis.FieldByName('colIDDavkaAdvPlan').AsInteger:= colID;
vtRozpis.FieldByName('colIdKmen').AsString:= VarToStr (FieldByNameValues('IDKmen'));
vtRozpis.FieldByName('colPrikaz').AsString:= VarToStr (FieldByNameValues('RadaPrikaz'));
vtRozpis.FieldByName('colIdPrikaz').AsString:= VarToStr (FieldByNameValues('IDPrikaz'));
vtRozpis.FieldByName('colSkupZbo').AsString:= VarToStr (FieldByNameValues('SkupZbo'));
vtRozpis.FieldByName('colRegCis').AsString:= VarToStr (FieldByNameValues('RegCis'));
vtRozpis.FieldByName('colNazev').AsString:= VarToStr (FieldByNameValues('Nazev1'));
vtRozpis.FieldByName('colMnoz').AsExtended:= mnozProZapis;
vtRozpis.FieldByName('colIDPlan').AsInteger:= VarToStr (FieldByNameValues('IDPlan')).ToInteger;
jeUdrzba:= VarToStr(FieldByNameValues('JeUdrzba')).ToInteger;
vtRozpis.FieldByName('colJeUdrzba').AsInteger:= jeUdrzba;
if (jeUdrzba=1) then
vtRozpis.FieldByName('colNazev').AsString:= nazevOper;
if (mnozOdv>0) then
begin
mnozZapsane:= SumaZapsanehoMnozstviPred (aDavkaVPrOdv, idVPr, cislo);
mnozOdv:= mnozOdv - mnozZapsane;
if (mnozOdv>mnozProZapis) then
begin
vtRozpis.FieldByName('colMnozHotovo').AsExtended:= mnozProZapis;
aDavkaVPrOdv[iTemp].cislo:= cislo;
aDavkaVPrOdv[iTemp].idPrikaz:= idVPr;
aDavkaVPrOdv[iTemp].mnozZapsane:= mnozProZapis;
end
else
begin
vtRozpis.FieldByName('colMnozHotovo').AsExtended:= mnozOdv;
aDavkaVPrOdv[iTemp].cislo:= cislo;
aDavkaVPrOdv[iTemp].idPrikaz:= idVPr;
aDavkaVPrOdv[iTemp].mnozZapsane:= mnozOdv;
mnozOdv:= 0;
end;
Inc (iTemp);
end;
vtRozpis.Post;
end;
end;
end;
end;
Next;
end;
end;
if (vtRozpis.RecordCount=0) then
NactiRozpis (f, true);
vtRozpis.Locate ('colDatum;colHodOd', VarArrayOf ([FormatDateTime ('dd.MM.yyyy', d), HourOf(d)]), []);
if (prvniDatum<>'') and (prvniHod<>'') then
vtRozpis.Locate('colDatum;colHodOd', VarArrayOf ([prvniDatum, prvniHod]), []);
end;
procedure Tdm2.NactiVyrobniTydny (rok: integer);
var i: integer;
d: TDateTime;
den1ledna: byte;
begin
den1ledna:= DayOfWeek(EncodeDate(rok, 1, 1));
if not(vtVyrobniTyden.Active) then
vtVyrobniTyden.Open;
for i:=1 to WeeksInAYear(rok) do
begin
vtVyrobniTyden.Append;
vtVyrobniTyden.FieldByName('colRok').AsInteger:= rok;
vtVyrobniTyden.FieldByName('colTyden').AsInteger:= i;
d:= IncDay(StartOfAWeek (rok, i, 1), -1);
vtVyrobniTyden.FieldByName('colDatumOd').AsDateTime:= d;
vtVyrobniTyden.FieldByName('colDatumDo').AsDateTime:= IncDay(d, 6);
vtVyrobniTyden.Post;
end;
end;
procedure Tdm2.NactiRozpis (f: TformPlan; prazdny: boolean=false);
var lSQL, where, datum: string;
hDo, casOd: integer;
fnd: boolean;
begin
if not(vtRozpis.Active) then
vtRozpis.Open;
// lSQL:= 'SELECT Datum FROM ' + tblPlanRozpad + ' WHERE Datum>=DATEADD(day, -2, dbo.hf_TruncDate(GETDATE())) ORDER BY Datum';
where:= '';
lSQL:= 'SELECT Datum, CasOd FROM ' + tblPlanRozpad;
if not(prazdny) then
begin
where:= 'Datum>=dbo.hf_TruncDate( ISNULL( (SELECT MIN(d.CasOd) FROM ' + tblAdvKPlanDavky + ' d INNER JOIN ' + tblVPr;
where:= where + ' p ON (p.ID=d.IDPrikaz) WHERE p.StavPrikazu IN (30,40) AND d.IdAdvKapacPlan=' + idAdvKPl.ToString + '), DATEADD(day, -2, dbo.hf_TruncDate(GETDATE()))) )';
end;
if (f.sgCas.Cells[2,1]<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'dbo.hf_TruncDate(Datum)>=dbo.hf_TruncDate(CONVERT(datetime, N' + f.sgCas.Cells[2,1].QuotedString + ',104))';
if (f.sgCas.Cells[3,1]<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'dbo.hf_TruncDate(Datum)<=dbo.hf_TruncDate(CONVERT(datetime, N' + f.sgCas.Cells[3,1].QuotedString + ',104))';
if (where<>'') then
lSQL:= lSQL + ' WHERE ' + where;
lSQL:= lSQL + ' ORDER BY Datum, CasOd';
try
with Helios.OpenSQL (lSQL) do
begin
First;
while not(EOF) do
begin
datum:= VarToStr(FieldByNameValues('Datum'));
if (datum.IndexOf(' ')>-1) then
datum:= LeftStr(datum, datum.IndexOf(' '));
casOd:= VarToStr(FieldByNameValues('CasOd')).ToInteger;
fnd:= vtRozpis.Locate ('colDatum;colHodOd', VarArrayOf ([datum, casOd]), []);
if not(fnd) then
begin
vtRozpis.Append;
vtRozpis.FieldByName('colDatum').AsString:= datum; // FormatDateTime('dd.mm.yyyy', FieldByNameValues('Datum'));
vtRozpis.FieldByName('colHodOd').AsInteger:= casOd; // FormatDateTime('h', FieldByNameValues('Datum'));
// hDo:= vtRozpis.FieldByName('colHodOd').AsInteger + 1;
hDo:= casOd + 1;
// if (hDo>=24) then hDo:= 0;
vtRozpis.FieldByName('colHodDo').AsInteger:= hDo;
vtRozpis.Post;
end;
Next;
end;
end;
finally
end;
end;
procedure Tdm2.vtKmenCalcFields (DataSet: TDataSet);
var ksVKar, karNaPal: integer;
begin
ksVKar:= 0;
if not (DataSet.FieldByName('colKSvKA').IsNull) then
ksVKar:= DataSet.FieldByName('colKSvKA').AsInteger;
karNaPal:= 0;
if not (DataSet.FieldByName('colKAnaPAL').IsNull) then
karNaPal:= DataSet.FieldByName('colKAnaPAL').AsInteger;
DataSet.FieldByName('colKSnaPAL').AsInteger:= ksVKar * karNaPal;
end;
procedure Tdm2.GenerujRozpis (odData: TDateTime; pocetDnu: integer=14);
var lSQL, d: string;
c: integer;
begin
if (pocetDnu<0) or (pocetDnu>14) then
pocetDnu:= 14;
if (helUtils.SQLObjectExists (Helios, 'dbo.ef_Vyroba_GenerujRozpadCasu'))
and (helUtils.SQLObjectExists (Helios, tblPlanRozpad)) then
begin
// rozpad na 14 dnu dopredu, po 60 minutach
lSQL:= 'DECLARE @d DATETIME=NULL' + CRLF + 'DROP TABLE IF EXISTS #Tab' + CRLF + 'CREATE TABLE #Tab (Datum DATETIME)' + CRLF
+ IfThen(odData>0, 'SET @d = CONVERT(datetime, N' + FormatDateTime ('dd.mm.yyyy', odData).QuotedString + ', 104)', '') + CRLF
+ 'INSERT #Tab (Datum) SELECT * FROM dbo.ef_Vyroba_GenerujRozpadCasu (@d, ' + pocetDnu.ToString + ', 60)' + CRLF
+ 'SELECT CAST(Datum AS DATETIME) AS Datum FROM #Tab ORDER BY Datum';
try
with Helios.OpenSQL (lSQL) do
if (RecordCount>0) then
begin
First;
while not(EOF) do
begin
d:= VarToStr(FieldByNameValues('Datum'));
if not(d.Contains('00:00')) then
d:= d + ' 00:00:00';
c:= MidStr(d, d.IndexOf(' ')+1, 20).Length;
if (c=8) then
d:= d.Replace(' ', ' 0');
lSQL:= 'IF NOT EXISTS (SELECT 1 FROM ' + tblPlanRozpad + ' WHERE Datum=CONVERT(datetime, N' + d.QuotedString + ', 104) )' + CRLF
+ 'INSERT ' + tblPlanRozpad + ' (Datum) SELECT CONVERT(datetime, N' + d.QuotedString + ', 104)';
Helios.ExecSQL (lSQL);
Next;
end;
end;
finally
end;
end;
end;
procedure Tdm2.PlanPalListyNactiSarzePrikazu (idPrikaz, ksVKA: Integer; var externiZak: string);
var lSQL: string;
idVC: integer;
begin
if not(vtPlanPL.Active) then
vtPlanPL.Open;
vtPlanPL.EmptyDataSet;
lSQL:= 'SELECT ID, VyrCislo, Popis, DatExpirace, Mnozstvi FROM ' + tblPrikazVC + ' WHERE IDPrikaz=' + idPrikaz.ToString + ' ORDER BY VyrCislo';
try
with Helios.OpenSQL (lSQL) do
if (RecordCount>0) then
begin
First;
while not(EOF) do
begin
vtPlanPL.Append;
vtPlanPL.FieldByName('idPrikaz').AsInteger:= idPrikaz;
idVC:= VarToStr(FieldByNameValues('ID')).ToInteger;
vtPlanPL.FieldByName('IDVCPrikaz').AsInteger:= idVC;
vtPlanPL.FieldByName('CisloPL').AsString:= VarToStr(FieldByNameValues('VyrCislo'));
vtPlanPL.FieldByName('KAnaPal').AsInteger:= VarToStr(FieldByNameValues('Mnozstvi')).ToInteger;
vtPlanPL.FieldByName('kusu').AsInteger:= vtPlanPL.FieldByName('KAnaPal').AsInteger * ksVKA;
vtPlanPL.FieldByName('DatExpirace').AsString:= VarToStr(FieldByNameValues('DatExpirace'));
externiZak:= VarToStr(FieldByNameValues('Popis'));
with Helios.OpenSQL('SELECT DatZahajeni FROM ' + tblPalety + ' WHERE IDVyrCisPrikaz=' + idVC.ToString) do
if (RecordCount=1) then
begin
vtPlanPL.FieldByName('DatVyrobaZadano').AsString:= VarToStr(FieldByNameValues('DatZahajeni'));
end;
vtPlanPL.Post;
Next;
end;
end;
finally
end;
end;
end.

View File

@ -0,0 +1,10 @@
-- dbo.ep_Vyroba_AdvPlan_ArchivujDavky
CREATE PROCEDURE dbo.ep_Vyroba_AdvPlan_ArchivujDavky
@IDAdvKapacPlan INT=NULL
AS
SET NOCOUNT ON
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu pro planovani

View File

@ -0,0 +1,556 @@
-- dbo.ep_Vyroba_AdvPlan_ZapisDavkyPrikazu
CREATE PROCEDURE dbo.ep_Vyroba_AdvPlan_ZapisDavkyPrikazu
@datumStart DATETIME=NULL,
@casOd TINYINT=NULL
AS
SET NOCOUNT ON
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu pro planovani
IF OBJECT_ID('tempdb..#TabPrikazyProKapacPlan', 'U') IS NULL
RETURN
DECLARE
@errMsg NVARCHAR(500),
@tranPred INT,
@majorSqlVer TINYINT,
@jeSql2022 BIT=0,
@cnt INT,
@canCont BIT=0,
@sql NVARCHAR(max),
@debugXml XML
DECLARE
@idSadaDavek INT,
@idVPr INT,
@pocetVlastOper INT,
@dokl INT,
@alt NCHAR(1),
@dilec INT,
@mjEvid NVARCHAR(10),
@kodZakazModif NVARCHAR(20),
@idZakazModif INT,
@idStroj INT=NULL,
@idKalendarStroje INT,
@cntOpProZapis INT,
@doklProZapis INT,
@altProZapis NCHAR(1),
@ksZaHod NUMERIC(19,6),
@kaZaHod NUMERIC(19,6),
@kusyZad NUMERIC(19,6),
@mnozKs NUMERIC(19,6),
@mnozKa NUMERIC(19,6),
@mnozKsVKA NUMERIC(19,6),
@mnozKAnaPal NUMERIC(19,6),
@mnoz NUMERIC(19,6),
@pocetDavek INT,
@cisloDavky INT,
@locId INT,
@planStartPrikaz DATETIME,
@planKonecPrikaz DATETIME,
@secCnt INT,
@planStart DATETIME,
@prepoctiPlanStart BIT,
@planStartEnd DATETIME,
@planKonec DATETIME,
@ksZbytek NUMERIC(19,6),
@cas DATETIME,
@jeTesto BIT=0
DECLARE
@idAdvKPl INT,
@idDavky INT,
@idVypoctu INT,
@idPrac INT,
@podm NVARCHAR(80),
@idDavkyOld INT,
@startOdOld DATETIME,
@poradCislo INT
DECLARE
@jeUdrzba BIT,
@pocetHodUdrzba NUMERIC(19,6),
@idPrPUdrzba INT -- TabPrPostup.ID z prikazu udrzby
DECLARE @davky TABLE (ID INT NOT NULL, CasOd DATETIME, CasDo DATETIME, Zamek BIT DEFAULT 0, PoradoveCislo INT)
BEGIN TRY
SET @tranPred = @@TRANCOUNT
IF (@tranPred=0)
BEGIN TRAN
-- cisteni SQL seedu
SET @cnt = ISNULL( (SELECT MAX(ID) FROM dbo.TabAdvKPVypocty), 1)
DBCC CHECKIDENT(TabAdvKPVypocty, RESEED, @cnt)
SET @cnt = ISNULL( (SELECT MAX(ID) FROM dbo.TabAdvKPDavky), 1)
DBCC CHECKIDENT(TabAdvKPDavky, RESEED, @cnt)
SET @majorSqlVer = CONVERT(tinyint, SERVERPROPERTY('ProductMajorVersion'))
SET @jeSql2022 = CONVERT(bit, IIF(@majorSqlVer>=16, 1, 0))
SELECT @idAdvKPl=ID FROM dbo.TabAdvKapacPlan WHERE Kod=N'99'
SET @idVypoctu=(SELECT TOP(1) ID FROM dbo.TabAdvKPVypocty WHERE IDAdvKapacPlan=@idAdvKPl ORDER BY CisloVypoctu DESC)
IF (@idVypoctu IS NULL)
BEGIN
INSERT dbo.TabAdvKPVypocty (IDAdvKapacPlan, CisloVypoctu, Akce, IDLastMzdy) VALUES (@idAdvKPl, 1, 3, 0)
SET @idVypoctu = SCOPE_IDENTITY()
END
SET @casOd = ISNULL(@casOd, 0)
SET @idSadaDavek = 1 + ISNULL( (SELECT MAX(_VazbaPlgPlan) FROM dbo.TabAdvKPDavky_EXT WHERE _VazbaPlgPlan IS NOT NULL), 0)
DECLARE c CURSOR LOCAL FOR
SELECT ID, JeUdrzba, PocetHodin, IDPrPostup FROM #TabPrikazyProKapacPlan
OPEN c
WHILE (1=1)
BEGIN
FETCH NEXT FROM c INTO @idVPr, @jeUdrzba, @pocetHodUdrzba, @idPrPUdrzba
IF (@@FETCH_STATUS<>0) BREAK
IF (@jeUdrzba=1)
BEGIN
SET @idPrPUdrzba = ISNULL(@idPrPUdrzba, 0)
SET @pocetHodUdrzba = ISNULL(@pocetHodUdrzba, 0)
IF (@idPrPUdrzba>0) AND (@pocetHodUdrzba>0)
BEGIN
IF (@datumStart IS NOT NULL)
SET @planStart = DATEADD(hour, @casOd, dbo.hf_TruncDate(@datumStart))
ELSE
SET @planStart = DATEADD(hour, @casOd, dbo.hf_TruncDate(GETDATE()))
SELECT @idVPr=IDPrikaz, @doklProZapis=Doklad, @altProZapis=Alt, @idPrac=pracoviste, @idStroj=IDStroje
FROM dbo.TabPrPostup WHERE ID=@idPrPUdrzba AND IDOdchylkyDo IS NULL
SELECT @dilec=IdTabKmen, @idZakazModif=IdZakazModif, @kusyZad=Kusy_zad
FROM dbo.TabPrikaz WHERE ID=@idVPr
SET @idKalendarStroje = (SELECT IDPlanKalend FROM dbo.TabCisStroju WHERE ID=@idStroj)
SET @pocetDavek = @pocetHodUdrzba
SET @cisloDavky = 1
-- pokud neni nektera davka daneho prikazu uzamcena, smaz je vsechny
-- jinak nastav aby se planovani toho prikazu pri privnim pruchodu WHILE ukoncilo
/*
IF NOT EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDPrikaz=@idVPr AND IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1)
DELETE FROM dbo.TabAdvKPDavky WHERE IDPrikaz=@idVPr AND IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj
ELSE
SET @cisloDavky=@pocetDavek
*/
WHILE (1=1)
BEGIN
IF (@cisloDavky>@pocetDavek) BREAK
DELETE FROM @davky
IF EXISTS (SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND CasOd>=@planStart AND Zamek=0)
BEGIN
;WITH d AS (
SELECT ROW_NUMBER() OVER (ORDER BY CasOd) AS AutoInc,
ID, CasOd, CasDo, Zamek
FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND CasOd>=@planStart AND Zamek=0
)
INSERT @davky (ID, CasOd, CasDo, Zamek, PoradoveCislo)
SELECT ID, CasOd, CasDo, Zamek, AutoInc FROM d;
END
SET @debugXml = (SELECT * FROM @davky FOR XML AUTO)
-- begin: test data/casu zahajeni na kalendar stroje
IF (@idKalendarStroje IS NULL) -- pokud kalendar nemam, per to tam
BEGIN
SET @cnt = 0
WHILE EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1 AND @planStart BETWEEN CasOd AND CasDo)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @planStart = DATEADD(hour, 1, @planStart)
SET @cnt = @cnt + 1
END
SET @planStartEnd = DATEADD(second, -1, DATEADD(hour, 1, @planStart))
END
ELSE
BEGIN -- pokud kalendar mam, zkontroluj jestli neni na dany datum/cas vyjimka
SET @cnt = 0
WHILE (EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1 AND @planStart BETWEEN CasOd AND CasDo)
OR EXISTS(SELECT 1 FROM dbo.TabPlanKalendPol WHERE IDStroje=@idStroj AND @planStart BETWEEN CasOd AND CasDo)
)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @planStart = DATEADD(hour, 1, @planStart)
SET @cnt = @cnt + 1
END
SET @planStartEnd = DATEADD(second, -1, DATEADD(hour, 1, @planStart))
END
-- end: test data/casu zahajeni na kalendar stroje
IF OBJECT_ID('dbo.ep_Vyroba_AdvPlan_ArchivujDavky', 'P') IS NOT NULL
EXEC dbo.ep_Vyroba_AdvPlan_ArchivujDavky @IDAdvKapacPlan=@idAdvKPl
SET @podm = N'IdAdvKapacPlan=' + CONVERT(nvarchar, @idAdvKPl)
EXEC @locId=dbo.hp_NajdiPrvniVolny @Tabulka=N'TabAdvKPDavky', @Atribut=N'LocalID', @Where=@podm, @Odkud=1, @Kam=999999999, @Returnem=1
SET @mnoz = 0
INSERT dbo.TabAdvKPDavky (IDAdvKapacPlan, LocalID, IDVypoctu, ZpusobVznikuDavkyKP, DatumPripadu, IDPrikaz, Dilec, DokladPrPostup, AltPrPostup,
IDPrac, IDStroje, CasOd, CasDo, Mnozstvi, PrepravniCas, MeziOperCas, DeadTime, BlokaceZdroje, ProcSplneni, Mnozstvi_Zive)
SELECT @idAdvKPl, @locId, @idVypoctu, 0, @planStart, @idVPr, @dilec, @doklProZapis, @altProZapis, @idPrac, @idStroj, @planStart, @planStartEnd,
@mnoz, 0, 0, 0, 1, 0, @mnoz
SET @idDavky = SCOPE_IDENTITY()
IF (@idDavky IS NOT NULL)
BEGIN
IF NOT EXISTS (SELECT 1 FROM dbo.TabAdvKPDavky_EXT WHERE ID=@idDavky)
INSERT dbo.TabAdvKPDavky_EXT (ID) VALUES (@idDavky)
UPDATE dbo.TabAdvKPDavky_EXT SET _VazbaPlgPlan=@idSadaDavek WHERE ID=@idDavky
END
-- begin: posun nasledujicich davek
DECLARE dav CURSOR LOCAL FOR
SELECT ID, CasOd, PoradoveCislo
FROM @davky
OPEN dav
WHILE (1=1)
BEGIN
FETCH NEXT FROM dav INTO @idDavkyOld, @startOdOld, @poradCislo
IF (@@FETCH_STATUS<>0) BREAK
IF (@poradCislo=1)
SET @startOdOld = DATEADD(hour, 1, @planStart)
ELSE
SET @startOdOld = DATEADD(hour, 1, (SELECT CasOd FROM @davky WHERE PoradoveCislo=@poradCislo-1))
IF (@idKalendarStroje IS NULL)
BEGIN
SET @cnt = 0
WHILE EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1 AND @startOdOld BETWEEN CasOd AND CasDo)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @startOdOld = DATEADD(hour, 1, @startOdOld)
SET @cnt = @cnt + 1
END
END
ELSE
BEGIN
SET @cnt = 0
WHILE (EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1 AND @startOdOld BETWEEN CasOd AND CasDo)
OR EXISTS(SELECT 1 FROM dbo.TabPlanKalendPol WHERE IDStroje=@idStroj AND @planStart BETWEEN CasOd AND CasDo)
)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @startOdOld = DATEADD(hour, 1, @startOdOld)
SET @cnt = @cnt + 1
END
END
UPDATE @davky SET CasOd=@startOdOld, CasDo=DATEADD(second, -1, DATEADD(hour, 1, @startOdOld)) WHERE PoradoveCislo=@poradCislo
UPDATE dbo.TabAdvKPDavky SET CasOd=@startOdOld, CasDo=DATEADD(second, -1, DATEADD(hour, 1, @startOdOld)) WHERE ID=@idDavkyOld
END
CLOSE dav
DEALLOCATE dav
-- end: posun nasledujicich davek
SET @cisloDavky = @cisloDavky + 1
END
END -- @idPrPUdrzba>0
END
ELSE
BEGIN -- @jeUdrzba=0
SET @pocetVlastOper = ISNULL( (SELECT COUNT(ID) FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND priorita=0 AND typ<2), 0)
SELECT @dilec=IdTabKmen, @idZakazModif=IdZakazModif, @kusyZad=Kusy_zad, @planStart=Plan_zadani, @planKonec=Plan_Ukonceni
FROM dbo.TabPrikaz WHERE ID=@idVPr
SET @planStartPrikaz = @planStart
SET @planKonecPrikaz = @planKonec
IF (@planStartPrikaz<GETDATE())
BEGIN
SET @secCnt = DATEDIFF(second, @planStart, @planKonec)
IF (@jeSql2022=1)
BEGIN
SET @sql = 'SET @planStartPrikaz = DATEADD(hour, 0, DATETRUNC(hour, GETDATE()))'
EXEC sp_executesql @sql, N'@planStartPrikaz DATETIME OUT', @planStartPrikaz=@planStartPrikaz OUT
END
ELSE
SET @planStartPrikaz = DATEADD(hour, DATEDIFF(hour, 0, DATEADD(minute, 30, GETDATE())), 0)
SET @planKonecPrikaz = DATEADD(second, @secCnt, @planStartPrikaz)
END
SET @jeTesto=0
IF EXISTS (SELECT 1 FROM dbo.TabKmenZbozi WHERE ID=@dilec AND SkupZbo=N'701')
SET @jeTesto=1
IF (@jeTesto=1)
CONTINUE
SELECT @dokl=Doklad, @alt=Alt, @idPrac=pracoviste, @idStroj=IDStroje FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND Odvadeci=1 AND IDOdchylkyDo IS NULL
SET @idKalendarStroje = (SELECT IDPlanKalend FROM dbo.TabCisStroju WHERE ID=@idStroj)
SELECT @mjEvid=MJEvidence FROM dbo.TabKmenZbozi WHERE ID=@dilec
SET @mnoz = 0
SET @mnozKs = 0
SET @mnozKa = 0
SET @mnozKsVKA = 0
SET @mnozKAnaPal = 0
SET @mjEvid=LOWER(@mjEvid)
IF (@mjEvid=N'ka')
BEGIN
SET @mnozKsVKA = ISNULL( (SELECT PocetOdvozene FROM dbo.TabMJZbozi WHERE IDKmenZbozi=@dilec AND LOWER(KodMJ1)=N'KA' AND LOWER(KodMJ2)=N'ks'), 1)
SET @mnozKAnaPal = ISNULL( (SELECT PocetHlavni FROM dbo.TabMJZbozi WHERE IDKmenZbozi=@dilec AND LOWER(KodMJ1)=N'ka' AND LOWER(KodMJ2)=N'pal'), 0)
SET @mnozKa = @kusyZad
SET @mnozKs = @kusyZad * @mnozKsVKA
END
IF (@mjEvid=N'ks')
BEGIN
SET @mnozKs = @kusyZad
END
SET @ksZaHod=0
IF (@idZakazModif IS NOT NULL)
BEGIN
SET @kodZakazModif = (SELECT Kod FROM dbo.TabZakazModif WHERE ID=@idZakazModif)
IF (@kodZakazModif IS NOT NULL)
BEGIN
SET @idStroj = (SELECT ID FROM dbo.TabCisStroju WHERE Kod=LEFT(@kodZakazModif,10) AND Blokovano=0)
IF (@idStroj IS NOT NULL)
SET @ksZaHod = ISNULL( (SELECT _KapacitaKsZaHod FROM dbo.TabCisStroju_EXT WHERE ID=@idStroj), 0)
END
END -- @idZakazModif IS NOT NULL
SET @doklProZapis=NULL
SET @altProZapis=NULL
SET @cntOpProZapis = (SELECT COUNT(ID) FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND priorita=0)
IF (@cntOpProZapis=1)
BEGIN
SELECT TOP(1) @doklProZapis=pp.Doklad, @altProZapis=pp.Alt, @ksZaHod=ISNULL(ppe._RychlostOperKsHod,0)
FROM dbo.TabPrPostup pp LEFT JOIN dbo.TabPrPostup_EXT ppe ON (ppe.ID=pp.ID)
WHERE pp.IDPrikaz=@idVPr AND pp.IDOdchylkyDo IS NULL AND pp.priorita=0
END
ELSE
BEGIN
-- peceni - pozor, diakritika dela obcas problem, proto pres LIKE
IF EXISTS(SELECT 1 FROM dbo.TabPrPostup WHERE Nazev LIKE N'Pe_en<EFBFBD>' AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND priorita=0)
SELECT TOP(1) @doklProZapis=pp.Doklad, @altProZapis=pp.Alt, @ksZaHod=ISNULL(ppe._RychlostOperKsHod,0)
FROM dbo.TabPrPostup pp LEFT JOIN dbo.TabPrPostup_EXT ppe ON (ppe.ID=pp.ID)
WHERE pp.Nazev LIKE N'Pe_en<EFBFBD>' AND pp.IDPrikaz=@idVPr AND pp.IDOdchylkyDo IS NULL AND pp.priorita=0
-- maceni, diakritika dela obcas problem, proto pres LIKE
IF EXISTS(SELECT 1 FROM dbo.TabPrPostup WHERE Nazev LIKE N'M<EFBFBD>_en<EFBFBD>' AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND priorita=0)
SELECT TOP(1) @doklProZapis=pp.Doklad, @altProZapis=pp.Alt, @ksZaHod=ISNULL(ppe._RychlostOperKsHod,0)
FROM dbo.TabPrPostup pp LEFT JOIN dbo.TabPrPostup_EXT ppe ON (ppe.ID=pp.ID)
WHERE pp.Nazev LIKE N'M<EFBFBD>_en<EFBFBD>' AND pp.IDPrikaz=@idVPr AND pp.IDOdchylkyDo IS NULL AND pp.priorita=0
-- maceni, diakritika dela obcas problem, proto pres LIKE
IF EXISTS(SELECT 1 FROM dbo.TabPrPostup WHERE Nazev LIKE N'Pol<EFBFBD>v<EFBFBD>n<EFBFBD>' AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND priorita=0)
SELECT TOP(1) @doklProZapis=pp.Doklad, @altProZapis=pp.Alt, @ksZaHod=ISNULL(ppe._RychlostOperKsHod,0)
FROM dbo.TabPrPostup pp LEFT JOIN dbo.TabPrPostup_EXT ppe ON (ppe.ID=pp.ID)
WHERE pp.Nazev LIKE N'Pol<EFBFBD>v<EFBFBD>n<EFBFBD>' AND pp.IDPrikaz=@idVPr AND pp.IDOdchylkyDo IS NULL AND pp.priorita=0
END
IF (@ksZaHod<>0) AND (@doklProZapis IS NOT NULL)
BEGIN
SET @kaZaHod=0
IF (@mjEvid=N'ka')
SET @kaZaHod = ROUND(@ksZaHod/@mnozKsVKA, 2)
-- SET @planStart=NULL
IF (COL_LENGTH('dbo.TabPrikaz_EXT', '_PlanZahajeni') IS NOT NULL)
SET @planStart=(SELECT _PlanZahajeni FROM dbo.TabPrikaz_EXT WHERE ID=@idVPr)
IF (@planStart IS NULL)
BEGIN
/*
IF (@jeSql2022=1)
SET @planStart=DATEADD(hour, 1, DATETRUNC(hour,GETDATE()))
ELSE
*/
SET @planStart=DATEADD(hour, 1, CONVERT(datetime, FORMAT(@planStartPrikaz, 'dd.MM.yyyy HH', 'de-de') + N':00:00', 104))
SET @prepoctiPlanStart=1
END
SET @prepoctiPlanStart=0
IF (@datumStart IS NOT NULL)
SET @planStart = DATEADD(hour, @casOd, dbo.hf_TruncDate(@datumStart))
-- SET @planKonec=NULL
IF (COL_LENGTH('dbo.TabPrikaz_EXT', '_PlanUkonceni') IS NOT NULL)
SET @planKonec=(SELECT _PlanUkonceni FROM dbo.TabPrikaz_EXT WHERE ID=@idVPr)
IF (@planKonec IS NULL)
SET @planKonec=DATEADD(minute, 60.0 * ROUND(@mnozKs/@ksZaHod,2), @planStart)
IF (@prepoctiPlanStart=1)
/*
BEGIN
IF (@jeSql2022=1)
SET @planKonec=DATEADD(second, -1, DATEADD(hour, 1, DATETRUNC(hour,@planKonec)))
ELSE
*/
-- SET @planStart=DATEADD(hour, 1, CEILING(DATEDIFF(hour, 0, @planKonec)/60.0)*60)
SET @planStart=DATEADD(hour, 1, CONVERT(datetime, FORMAT(@planKonec, 'dd.MM.yyyy HH', 'de-de') + N':00:00', 104))
-- END
SET @pocetDavek = CEILING(@mnozKs/@ksZaHod)
IF (@pocetDavek>0)
BEGIN
SET @cisloDavky = 1
-- pokud neni nektera davka daneho prikazu uzamcena, smaz je vsechny
-- jinak nastav aby se planovani toho prikazu pri privnim pruchodu WHILE ukoncilo
IF NOT EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDPrikaz=@idVPr AND IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1)
DELETE FROM dbo.TabAdvKPDavky WHERE IDPrikaz=@idVPr AND IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj
ELSE
SET @cisloDavky=@pocetDavek
WHILE (1=1)
BEGIN
IF (@cisloDavky>@pocetDavek) BREAK
DELETE FROM @davky
IF EXISTS (SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND CasOd>=@planStart AND Zamek=0)
BEGIN
;WITH d AS (
SELECT ROW_NUMBER() OVER (ORDER BY CasOd) AS AutoInc,
ID, CasOd, CasDo, Zamek
FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND CasOd>=@planStart AND Zamek=0
)
INSERT @davky (ID, CasOd, CasDo, Zamek, PoradoveCislo)
SELECT ID, CasOd, CasDo, Zamek, AutoInc FROM d;
END
SET @debugXml = (SELECT * FROM @davky FOR XML AUTO)
-- begin: test data/casu zahajeni na kalendar stroje
IF (@idKalendarStroje IS NULL) -- pokud kalendar nemam, per to tam
BEGIN
SET @cnt = 0
WHILE EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1 AND @planStart BETWEEN CasOd AND CasDo)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @planStart = DATEADD(hour, 1, @planStart)
SET @cnt = @cnt + 1
END
SET @planStartEnd = DATEADD(second, -1, DATEADD(hour, 1, @planStart))
END
ELSE
BEGIN -- pokud kalendar mam, zkontroluj jestli neni na dany datum/cas vyjimka
SET @cnt = 0
WHILE (EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1 AND @planStart BETWEEN CasOd AND CasDo)
OR EXISTS(SELECT 1 FROM dbo.TabPlanKalendPol WHERE IDStroje=@idStroj AND @planStart BETWEEN CasOd AND CasDo)
)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @planStart = DATEADD(hour, 1, @planStart)
SET @cnt = @cnt + 1
END
SET @planStartEnd = DATEADD(second, -1, DATEADD(hour, 1, @planStart))
END
-- end: test data/casu zahajeni na kalendar stroje
IF (@cisloDavky=@pocetDavek)
BEGIN
SET @ksZaHod = @mnozKs - ( @ksZaHod * (@cisloDavky-1))
SET @kaZaHod = ROUND(@ksZaHod/@mnozKsVKA, 2)
END
SET @mnoz = CASE @mjEvid WHEN N'ka' THEN @kaZaHod WHEN N'ks' THEN @ksZaHod END
IF OBJECT_ID('dbo.ep_Vyroba_AdvPlan_ArchivujDavky', 'P') IS NOT NULL
EXEC dbo.ep_Vyroba_AdvPlan_ArchivujDavky @IDAdvKapacPlan=@idAdvKPl
SET @podm = N'IdAdvKapacPlan=' + CONVERT(nvarchar, @idAdvKPl)
EXEC @locId=dbo.hp_NajdiPrvniVolny @Tabulka=N'TabAdvKPDavky', @Atribut=N'LocalID', @Where=@podm, @Odkud=1, @Kam=999999999, @Returnem=1
INSERT dbo.TabAdvKPDavky (IDAdvKapacPlan, LocalID, IDVypoctu, ZpusobVznikuDavkyKP, DatumPripadu, IDPrikaz, Dilec, DokladPrPostup, AltPrPostup,
IDPrac, IDStroje, CasOd, CasDo, Mnozstvi, PrepravniCas, MeziOperCas, DeadTime, BlokaceZdroje, ProcSplneni, Mnozstvi_Zive)
SELECT @idAdvKPl, @locId, @idVypoctu, 0, @planStart, @idVPr, @dilec, @doklProZapis, @altProZapis, @idPrac, @idStroj, @planStart, @planStartEnd,
@mnoz, 0, 0, 0, 1, 0, @mnoz
SET @idDavky = SCOPE_IDENTITY()
IF (@idDavky IS NOT NULL)
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky_EXT WHERE ID=@idDavky)
INSERT dbo.TabAdvKPDavky_EXT (ID) VALUES (@idDavky)
UPDATE dbo.TabAdvKPDavky_EXT SET _VazbaPlgPlan=@idSadaDavek WHERE ID=@idDavky
END
IF NOT EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky_EXT WHERE ID=@idDavky)
INSERT dbo.TabAdvKPDavky_EXT (ID) VALUES (@idDavky)
UPDATE dbo.TabAdvKPDavky_EXT SET _MnozstviKs=CASE @mjEvid WHEN N'ka' THEN @ksZaHod WHEN N'ks' THEN @ksZaHod ELSE NULL END WHERE ID=@idDavky
-- begin: posun nasledujicich davek
DECLARE dav CURSOR LOCAL FOR
SELECT ID, CasOd, PoradoveCislo
FROM @davky
OPEN dav
WHILE (1=1)
BEGIN
FETCH NEXT FROM dav INTO @idDavkyOld, @startOdOld, @poradCislo
IF (@@FETCH_STATUS<>0) BREAK
IF (@poradCislo=1)
SET @startOdOld = DATEADD(hour, 1, @planStart)
ELSE
SET @startOdOld = DATEADD(hour, 1, (SELECT CasOd FROM @davky WHERE PoradoveCislo=@poradCislo-1))
IF (@idKalendarStroje IS NULL)
BEGIN
SET @cnt = 0
WHILE EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1 AND @startOdOld BETWEEN CasOd AND CasDo)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @startOdOld = DATEADD(hour, 1, @startOdOld)
SET @cnt = @cnt + 1
END
END
ELSE
BEGIN
SET @cnt = 0
WHILE (EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKPl AND IDStroje=@idStroj AND Zamek=1 AND @startOdOld BETWEEN CasOd AND CasDo)
OR EXISTS(SELECT 1 FROM dbo.TabPlanKalendPol WHERE IDStroje=@idStroj AND @planStart BETWEEN CasOd AND CasDo)
)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @startOdOld = DATEADD(hour, 1, @startOdOld)
SET @cnt = @cnt + 1
END
END
UPDATE @davky SET CasOd=@startOdOld, CasDo=DATEADD(second, -1, DATEADD(hour, 1, @startOdOld)) WHERE PoradoveCislo=@poradCislo
UPDATE dbo.TabAdvKPDavky SET CasOd=@startOdOld, CasDo=DATEADD(second, -1, DATEADD(hour, 1, @startOdOld)) WHERE ID=@idDavkyOld
END
CLOSE dav
DEALLOCATE dav
-- end: posun nasledujicich davek
SET @planStart = DATEADD(hour, 1, @planStart)
SET @cisloDavky = @cisloDavky + 1
END
END
END -- @ksZaHod<>0
END -- @jeUdrzba=0
END
CLOSE c
DEALLOCATE c
IF (@tranPred=0) AND (@@TRANCOUNT>0)
COMMIT TRAN
END TRY
BEGIN CATCH
IF (@tranPred=0) AND (@@TRANCOUNT>0)
ROLLBACK TRAN
SET @errMsg = ERROR_MESSAGE()
END CATCH

View File

@ -0,0 +1,133 @@
-- dbo.ep_Vyroba_ZapisDoPlanu
CREATE PROCEDURE dbo.ep_Vyroba_ZapisDoPlanu
@dilec INT=NULL,
@idZakazModif INT=NULL,
@datum NVARCHAR(15)=N'',
@hodinaOd TINYINT=0,
@pocetKs NUMERIC(19,6)=0.0,
@pocetKA NUMERIC(19,6)=0.0,
@pocetPal NUMERIC(19,6)=0.0,
@datumPlanKonec DATETIME=NULL OUT,
@errMsg NVARCHAR(500)=N'' OUT
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu pro planovani
SET NOCOUNT ON
DECLARE
@idPlan INT,
@datumPlanStart DATETIME,
@planHodin NUMERIC(19,6),
@radaPlanu NVARCHAR(10),
@mjEvid NVARCHAR(10),
@mnoz NUMERIC(19,6),
@mnozKs NUMERIC(19,6)
DECLARE
@kodZakazModif NVARCHAR(20),
@idStroj INT,
@ksZaHod NUMERIC(19,6),
@ksVKA NUMERIC(19,6)
IF (@dilec IS NULL)
RETURN
SET @pocetKs = ISNULL(@pocetKs, 0)
SET @pocetKA = ISNULL(@pocetKA, 0)
SET @pocetPal = ISNULL(@pocetPal, 0)
IF (@pocetKs=0) AND (@pocetKA=0) AND (@pocetPal=0)
RETURN
BEGIN TRY
SET @datum = TRIM(ISNULL(@datum, N''))
SET @hodinaOd = ISNULL(@hodinaOd, 0)
IF (@datum=N'')
SET @datumPlanStart = GETDATE()
ELSE
SET @datumPlanStart = ISNULL( TRY_CONVERT(DATETIME, @datum), GETDATE())
SET @datumPlanStart = DATEADD(hour, @hodinaOd, dbo.hf_TruncDate(@datumPlanStart) )
END TRY
BEGIN CATCH
SET @datumPlanStart = DATEADD(hour, @hodinaOd, dbo.hf_TruncDate(GETDATE()) )
END CATCH
SET @idStroj = NULL
SET @ksZaHod = 0
SET @kodZakazModif = (SELECT Kod FROM dbo.TabZakazModif WHERE ID=@idZakazModif)
IF (@kodZakazModif IS NOT NULL)
BEGIN
SET @idStroj = (SELECT ID FROM dbo.TabCisStroju WHERE Kod=LEFT(@kodZakazModif,10) AND Blokovano=0)
IF (@idStroj IS NOT NULL)
SET @ksZaHod = ISNULL( (SELECT _KapacitaKsZaHod FROM dbo.TabCisStroju_EXT WHERE ID=@idStroj), 0)
END
SET @mnoz = 0
SET @mnozKs = 0
SET @ksVKA = 0
IF (@pocetKs>0)
SET @mnozKs = @pocetKs
SELECT @mjEvid=MJEvidence FROM dbo.TabKmenZbozi WHERE ID=@dilec
IF (@mjEvid=N'KA')
BEGIN
SET @ksVKA = ISNULL( (SELECT PocetOdvozene FROM dbo.TabMJZbozi WHERE IDKmenZbozi=@dilec AND LOWER(KodMJ1)=N'KA' AND LOWER(KodMJ2)=N'ks'), 1)
IF (@pocetKA>0)
BEGIN
SET @mnoz = @pocetKA
SET @mnozKs = @mnoz * @ksVKA
END
END
IF (@mnoz=0)
BEGIN
IF (@pocetKs>0) AND (@mjEvid=N'KA')
SET @mnoz = CEILING(@pocetKs / @ksVKA)
IF (@pocetPal>0) AND (@mjEvid=N'KA')
BEGIN
SET @mnoz = CEILING(@pocetPal * ISNULL( (SELECT PocetHlavni FROM dbo.TabMJZbozi WHERE IDKmenZbozi=@dilec AND LOWER(KodMJ1)=N'ka' AND LOWER(KodMJ2)=N'pal'), 0))
SET @mnozKs = @mnoz * @ksVKA
END
END -- mnoz=0, najdi prepocet ks a pal
IF (@datumPlanKonec IS NULL)
BEGIN
SET @planHodin = 0
IF (@ksZaHod<>0)
SET @planHodin = ROUND(@mnozKs/@ksZaHod, 2)
IF (@planHodin=0)
EXEC dbo.hp_GetPlanovanyTerminDokonceniVyroby @IDFinal=@dilec, @IDZakazModif=@idZakazModif, @Mnozstvi=@mnoz,
@DatumZahajeni=@datumPlanStart, @DatumUkonceni=@datumPlanKonec OUT
ELSE
SET @datumPlanKonec=DATEADD(minute, @planHodin*60.0, @datumPlanStart)
END
SET @radaPlanu=(SELECT ISNULL(pkz.RadaVyrPlanu,sz.ParD_RadaVyrPlanu) FROM dbo.TabKmenZbozi k
INNER JOIN dbo.TabParKmZ pkz ON (pkz.IDKmenZbozi=k.ID)
INNER JOIN dbo.TabSkupinyZbozi sz ON (sz.SkupZbo=k.SkupZbo)
WHERE k.ID=@dilec)
SET @idPlan=0
IF (@radaPlanu IS NOT NULL) AND (@mnoz>0)
BEGIN
BEGIN TRY
EXEC @idPlan=dbo.hp_NewVyrobniPlan @Rada=@radaPlanu, @IDDilce=@dilec, @IDZakazModif=@idZakazModif, @mnozstvi=@mnoz, @PlanUkonceni=@datumPlanKonec
END TRY
BEGIN CATCH
SET @errMsg=ERROR_MESSAGE()
SET @idPlan=0
END CATCH
END
RETURN @idPlan

View File

@ -0,0 +1,198 @@
-- dbo.ep_Vyroba_ZrusZakazkuPlanuDleFinPrikazu
CREATE PROCEDURE dbo.ep_Vyroba_ZrusZakazkuPlanuDleFinPrikazu
@idAdvKP INT=NULL,
@idVPrFin INT=NULL,
@idStroj INT=NULL,
@jeUdrzba BIT=0,
@idSadaDavek INT=NULL,
@errorMsg NVARCHAR(500)=N'' OUT
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu pro planovani
SET NOCOUNT ON
IF (@idAdvKP IS NULL)
BEGIN
SET @errorMsg = N'Neni speficikovan kapacitni plan'
RETURN
END
IF (@idStroj IS NULL)
BEGIN
SET @errorMsg = N'Neni specifikovan stroj'
RETURN
END
DECLARE
@tranPred INT,
@cnt INT,
@iTemp INT,
@xml XML,
@retVal INT,
@idVPr INT,
@idPlan INT,
@minCasDo DATETIME=NULL,
@maxCasDo DATETIME=NULL,
@idDavka INT,
@casOd DATETIME,
@casOdNew DATETIME,
@casDo DATETIME,
@idKalendarStroje INT
DECLARE @davkyZa TABLE (ID INT, IDPrikaz INT, Mnozstvi NUMERIC(19,6), CasOd DATETIME, CasDo DATETIME)
DECLARE @sadaDavek TABLE (ID INT NOT NULL)
SET @idKalendarStroje = (SELECT IDPlanKalend FROM dbo.TabCisStroju WHERE ID=@idStroj)
SET @maxCasDo = CONVERT(datetime, N'1.1.2020', 104)
SET @maxCasDo = @minCasDo -- CONVERT(datetime, N'1.1.2020', 104)
DELETE FROM @sadaDavek
IF (@idSadaDavek IS NOT NULL)
INSERT @sadaDavek (ID) SELECT ID FROM dbo.TabAdvKPDavky_EXT WHERE _VazbaPlgPlan=@idSadaDavek
BEGIN TRY
SET @tranPred=@@TRANCOUNT
IF( @tranPred=0)
BEGIN TRAN
DECLARE vp CURSOR LOCAL FOR
SELECT ID, IDPlan
FROM dbo.TabPrikaz
WHERE IDPrikazRidici=@idVPrFin
AND StavPrikazu<40
ORDER BY UrovenVnoreni DESC
OPEN vp
WHILE (1=1)
BEGIN
FETCH NEXT FROM vp INTO @idVPr, @idPlan
IF (@@FETCH_STATUS<>0) BREAK
IF EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE Zamek=1 AND IDAdvKapacPlan=@idAdvKP AND IDPrikaz=@idVPr AND IDStroje=@idStroj)
CONTINUE
IF EXISTS(SELECT ID FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKP AND IDPrikaz=@idVPr AND IDStroje=@idStroj AND CasDo>@maxCasDo)
SET @maxCasDo = (SELECT MAX(CasDo) FROM dbo.TabAdvKPDavky WHERE Zamek=0 AND IDAdvKapacPlan=@idAdvKP AND IDPrikaz=@idVPr AND IDStroje=@idStroj AND CasDo>@maxCasDo)
-- zkontroluje zda je neco z prikazu uz odvedeno a pripadne smaze vsechny vazby (kusovnik, operace, VC, naradi, OPN, davky advKP, kalk/plan naklady...)
EXEC @retVal = dbo.hp_TabPrikaz_TriggerBeforeDelete @ID=@idVPr, @PouzeTestPredZrusenimStavuZadano=0
IF (@@ERROR=0) AND (@retVal=0)
DELETE FROM dbo.TabPrikaz WHERE ID=@idVPr
-- EXEC @retVal=dbo.hp_TabPlan_TriggerBeforeDelete @ID=@idPlan
-- IF (@@ERROR=0) AND (@retVal=0)
-- IF NOT EXISTS (SELECT 1 FROM dbo.TabPrikaz WHERE IDPlan=@idPlan)
-- DELETE FROM dbo.TabPlan WHERE ID=@idPlan
END
CLOSE vp
DEALLOCATE vp
SET @minCasDo = DATEADD(hour, 1, DATEADD(hour, DATEDIFF(hour, 0, @minCasDo), 0))
-- SET @maxCasDo = @minCasDo -- CONVERT(datetime, N'1.1.2020', 104)
IF EXISTS (SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKP AND IDStroje=@idStroj AND CasDo<@maxCasDo)
BEGIN
SELECT @minCasDo=MAX(CasDo) FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKP AND IDStroje=@idStroj AND CasDo<@maxCasDo
SET @casOdNew = DATEADD(second, 1, @minCasDo)
END
IF EXISTS (SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKP AND IDPrikaz=@idVPrFin AND IDStroje=@idStroj AND CasDo>@maxCasDo)
SET @maxCasDo = (SELECT MAX(CasDo) FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKP AND IDPrikaz=@idVPrFin AND IDStroje=@idStroj AND CasDo>@maxCasDo)
SELECT @idPlan=IDPlan FROM dbo.TabPrikaz WHERE ID=@idVPrFin
-- zkontroluje zda je neco z prikazu uz odvedeno a pripadne smaze vsechny vazby (kusovnik, operace, VC, naradi, OPN, davky advKP, kalk/plan naklady...)
EXEC @retVal = dbo.hp_TabPrikaz_TriggerBeforeDelete @ID=@idVPrFin, @PouzeTestPredZrusenimStavuZadano=0
DELETE FROM dbo.TabPrikaz WHERE ID=@idVPrFin
EXEC @retVal=dbo.hp_TabPlan_TriggerBeforeDelete @ID=@idPlan
IF (@@ERROR=0) AND (@retVal=0)
DELETE FROM dbo.TabPlan WHERE ID=@idPlan
-- nasledujici neblokovane davky
INSERT @davkyZa (ID, CasOd, CasDo)
SELECT ID, CasOd, CasDo FROM dbo.TabAdvKPDavky WHERE Zamek=0 AND IDAdvKapacPlan=@idAdvKP AND IDStroje=@idStroj AND CasOd>@maxCasDo
SET @xml=(SELECT * FROM @davkyZa FOR XML AUTO)
-- presun je dopredu, na konec predchozi prace na tom samem stroji, pokud ma stroj kalendar, koukej i na nej
DECLARE dav CURSOR LOCAL FOR
SELECT ID, CasOd, CasDo
FROM @davkyZa
ORDER BY CasOd
OPEN dav
WHILE (1=1)
BEGIN
FETCH NEXT FROM dav INTO @idDavka, @casOd, @casDo
IF (@@FETCH_STATUS<>0) BREAK
SET @casOd = @casOdNew
-- begin: test data/casu zahajeni na kalendar stroje
IF (@idKalendarStroje IS NULL) -- pokud kalendar nemam, per to tam
BEGIN
SET @cnt = 0
WHILE EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKP AND IDStroje=@idStroj AND Zamek=1 AND @casOd BETWEEN CasOd AND CasDo)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @casOd = DATEADD(hour, 1, @casOd)
SET @cnt = @cnt + 1
END
SET @casDo = DATEADD(second, -1, DATEADD(hour, 1, @casOd))
END
ELSE
BEGIN -- pokud kalendar mam, zkontroluj jestli neni na dany datum/cas vyjimka
SET @cnt = 0
WHILE (EXISTS(SELECT 1 FROM dbo.TabAdvKPDavky WHERE IDAdvKapacPlan=@idAdvKP AND IDStroje=@idStroj AND Zamek=1 AND @casOd BETWEEN CasOd AND CasDo)
OR EXISTS(SELECT 1 FROM dbo.TabPlanKalendPol WHERE IDStroje=@idStroj AND @casOd BETWEEN CasOd AND CasDo)
)
AND (@cnt<=3000) -- kvuli zamrznuti
BEGIN
SET @casOd = DATEADD(hour, 1, @casOd)
SET @cnt = @cnt + 1
END
SET @casDo = DATEADD(second, -1, DATEADD(hour, 1, @casOd))
END
-- end: test data/casu zahajeni na kalendar stroje
UPDATE dbo.TabAdvKPDavky SET CasOd=@casOd, CasDo=@casDo WHERE ID=@idDavka
END
CLOSE dav
DEALLOCATE dav
IF (@tranPred=0) AND (@@TRANCOUNT>0)
COMMIT TRAN
END TRY
BEGIN CATCH
IF (@tranPred=0) AND (@@TRANCOUNT>0)
ROLLBACK TRAN
SET @errorMsg = ERROR_MESSAGE()
IF (CURSOR_STATUS('local','dav')>=-1)
BEGIN
CLOSE dav
DEALLOCATE dav
END
IF (CURSOR_STATUS('local','vp')>=-1)
BEGIN
CLOSE vp
DEALLOCATE vp
END
END CATCH

294
_plgPlan/frmKmen.dfm Normal file
View File

@ -0,0 +1,294 @@
object formKmen: TformKmen
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
Caption = ' Vyberte polo'#382'ku do pl'#225'nu'
ClientHeight = 800
ClientWidth = 1203
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Segoe UI'
Font.Style = []
Position = poOwnerFormCenter
OnClose = FormClose
OnShow = FormShow
TextHeight = 21
object grd1: TGridPanel
Left = 0
Top = 0
Width = 1203
Height = 800
Align = alClient
Caption = 'grd1'
ColumnCollection = <
item
Value = 100.000000000000000000
end>
ControlCollection = <
item
Column = 0
Control = Panel1
Row = 1
end
item
Column = 0
Control = grd2
Row = 0
end>
RowCollection = <
item
Value = 5.000000000000000000
end
item
Value = 95.000000000000000000
end>
TabOrder = 0
object Panel1: TPanel
Left = 1
Top = 41
Width = 1201
Height = 758
Align = alClient
Anchors = []
TabOrder = 0
object grdKmen: TJvDBGrid
Left = 1
Top = 1
Width = 1199
Height = 756
Align = alClient
DataSource = dm2.dsKmen
DrawingStyle = gdsClassic
Options = [dgTitles, dgIndicator, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgConfirmDelete, dgCancelOnExit, dgTitleClick, dgTitleHotTrack]
ReadOnly = True
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -16
TitleFont.Name = 'Segoe UI'
TitleFont.Style = []
OnDrawColumnCell = grdKmenDrawColumnCell
OnDblClick = grdKmenDblClick
ScrollBars = ssVertical
SelectColumnsDialogStrings.Caption = 'Vyberte sloupce'
SelectColumnsDialogStrings.OK = '&OK'
SelectColumnsDialogStrings.NoSelectionWarning = 'Mus'#237' b'#253't viditeln'#253' aspo'#328' jeden sloupec !'
CanDelete = False
EditControls = <>
RowsHeight = 25
TitleRowHeight = 25
Columns = <
item
Expanded = False
FieldName = 'colID'
Visible = False
end
item
Alignment = taCenter
Expanded = False
FieldName = 'colSZ'
Title.Alignment = taCenter
Title.Caption = 'SK'
Width = 35
Visible = True
end
item
Alignment = taCenter
Expanded = False
FieldName = 'colRegCis'
Title.Alignment = taCenter
Title.Caption = 'Reg. '#269#237'slo'
Width = 109
Visible = True
end
item
Expanded = False
FieldName = 'colNazev1'
Title.Alignment = taCenter
Title.Caption = 'N'#225'zev'
Width = 352
Visible = True
end
item
Expanded = False
FieldName = 'colZaklad'
Title.Alignment = taCenter
Title.Caption = 'Z'#225'klad'
Width = 232
Visible = True
end
item
Expanded = False
FieldName = 'colZakModif'
Title.Alignment = taCenter
Title.Caption = 'Stroj'
Width = 135
Visible = True
end
item
Expanded = False
FieldName = 'colKSvKA'
Title.Alignment = taCenter
Title.Caption = 'Ks v KA'
Width = 74
Visible = True
end
item
Expanded = False
FieldName = 'colKAnaPAL'
Title.Alignment = taCenter
Title.Caption = 'KA na Pal'
Width = 76
Visible = True
end
item
Expanded = False
FieldName = 'colKSnaPAL'
Title.Alignment = taCenter
Title.Caption = 'KS na Pal'
Width = 83
Visible = True
end
item
Alignment = taCenter
Expanded = False
FieldName = 'colMJEvid'
Title.Alignment = taCenter
Title.Caption = 'bal'
Width = 54
Visible = True
end>
end
end
object grd2: TGridPanel
AlignWithMargins = True
Left = 4
Top = 4
Width = 1195
Height = 34
Align = alClient
ColumnCollection = <
item
Value = 4.000000000000000000
end
item
Value = 9.199999999999999000
end
item
Value = 29.400000000000000000
end
item
Value = 19.700000000000000000
end
item
Value = 11.200000000000000000
end
item
Value = 26.500000000000000000
end>
ControlCollection = <
item
Column = 0
Control = btnClear
Row = 0
end
item
Column = 1
Control = edtRegCis
Row = 0
end
item
Column = 2
Control = edtNazev
Row = 0
end
item
Column = 3
Control = edtZaklad
Row = 0
end
item
Column = 4
Control = edtStroj
Row = 0
end>
RowCollection = <
item
Value = 100.000000000000000000
end>
TabOrder = 1
object btnClear: TBitBtn
AlignWithMargins = True
Left = 4
Top = 4
Width = 42
Height = 26
Align = alClient
ImageIndex = 3
ImageName = 'Item4'
Images = dm2.imgList
TabOrder = 0
OnClick = btnClearClick
end
object edtRegCis: TRzEdit
AlignWithMargins = True
Left = 52
Top = 4
Width = 103
Height = 26
Text = ''
Align = alClient
Color = clSkyBlue
MaxLength = 30
TabOrder = 1
OnChange = edtRegCisChange
OnKeyPress = edtRegCisKeyPress
ExplicitHeight = 29
end
object edtNazev: TRzEdit
AlignWithMargins = True
Left = 161
Top = 4
Width = 345
Height = 26
Text = ''
Align = alClient
Color = clSkyBlue
MaxLength = 100
TabOrder = 2
OnChange = edtNazevChange
ExplicitHeight = 29
end
object edtZaklad: TRzEdit
AlignWithMargins = True
Left = 512
Top = 4
Width = 229
Height = 26
Text = ''
Align = alClient
Color = clSkyBlue
MaxLength = 100
TabOrder = 3
OnChange = edtZakladChange
ExplicitHeight = 29
end
object edtStroj: TRzEdit
AlignWithMargins = True
Left = 747
Top = 4
Width = 128
Height = 26
Text = ''
Align = alClient
Color = clSkyBlue
MaxLength = 50
TabOrder = 4
OnChange = edtStrojChange
ExplicitHeight = 29
end
end
end
end

226
_plgPlan/frmKmen.pas Normal file
View File

@ -0,0 +1,226 @@
unit frmKmen;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, JvExDBGrids,
JvDBGrid, ddPlugin_TLB, Vcl.ComCtrls, JvExComCtrls, JvHeaderControl, Vcl.StdCtrls, Vcl.Buttons,
Vcl.Mask, RzEdit;
type
TformKmen = class(TForm)
Panel1: TPanel;
grdKmen: TJvDBGrid;
grd1: TGridPanel;
grd2: TGridPanel;
btnClear: TBitBtn;
edtRegCis: TRzEdit;
edtNazev: TRzEdit;
edtZaklad: TRzEdit;
edtStroj: TRzEdit;
procedure FormShow (Sender: TObject);
procedure grdKmenDblClick (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure btnClearClick (Sender: TObject);
procedure edtStrojChange (Sender: TObject);
procedure edtRegCisKeyPress (Sender: TObject; var Key: Char);
procedure grdKmenDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure edtRegCisChange (Sender: TObject);
procedure edtNazevChange (Sender: TObject);
procedure edtZakladChange (Sender: TObject);
private
procedure Filtruj;
public
Helios: IHelios;
retVal: integer;
idKmen: integer;
idZakModif: integer;
filtrKodStroj: string;
end;
var
formKmen: TformKmen;
implementation
uses System.StrUtils,
helUtils, datMod2;
{$R *.dfm}
procedure TformKmen.edtNazevChange (Sender: TObject);
begin
Filtruj;
end;
procedure TformKmen.edtRegCisChange (Sender: TObject);
begin
Filtruj;
end;
procedure TformKmen.edtRegCisKeyPress (Sender: TObject; var Key: Char);
begin
Filtruj;
end;
procedure TformKmen.edtStrojChange (Sender: TObject);
begin
Filtruj;
end;
procedure TformKmen.edtZakladChange (Sender: TObject);
begin
Filtruj;
end;
procedure TformKmen.Filtruj;
var filtr: string;
begin
filtr:= '';
if (edtRegCis.Text<>'') then
filtr:= 'UPPER(colRegCis) LIKE ''%' + edtRegCis.Text.ToUpper + '%''';
if (edtNazev.Text<>'') then
filtr:= filtr + IfThen(filtr<>'', ' AND ', '') + 'UPPER(colNazev1) LIKE ''%' + edtNazev.Text.ToUpper + '%''';
if (edtZaklad.Text<>'') then
filtr:= filtr + IfThen(filtr<>'', ' AND ', '') + 'UPPER(colZaklad) LIKE ''%' + edtZaklad.Text.ToUpper + '%''';
if (edtStroj.Text<>'') then
filtr:= filtr + IfThen(filtr<>'', ' AND ', '') + 'UPPER(colZakModif) LIKE ''%' + edtStroj.Text.ToUpper + '%''';
grdKmen.LockDrawing;
dm2.vtKmen.Filtered:= false;
if (filtr<>'') then
begin
dm2.vtKmen.Filter:= filtr;
dm2.vtKmen.Filtered:= true;
end;
grdKmen.UnlockDrawing;
end;
procedure TformKmen.btnClearClick (Sender: TObject);
begin
edtRegCis.Text:= '';
edtNazev.Text:= '';
edtZaklad.Text:= '';
edtStroj.Text:= '';
Filtruj;
end;
procedure TformKmen.FormClose (Sender: TObject; var Action: TCloseAction);
begin
Action:= TCloseAction.caFree;
end;
procedure TformKmen.FormShow (Sender: TObject);
var pomHandle: THandle;
filtr: string;
begin
retVal:= 0;
pomHandle:= THandle(Helios.MainApplicationHandle);
if (pomHandle<>Application.Handle) then
Application.Handle:= pomHandle;
pomHandle:= THandle(Helios.MainApplicationIconHandle);
if (pomHandle<>Application.Icon.Handle) then
Application.Icon.Handle:= pomHandle;
with Application.DefaultFont do
begin
Name:= Helios.Font;
Height:= Helios.FontHeight;
Charset:= Helios.Charset;
Screen.MenuFont.Charset:= Charset;
Screen.MenuFont.Name:= Name;
Screen.MenuFont.Height:= Height;
end;
self.Font:= Application.DefaultFont;
if not(dm2.vtKmen.Active) then
dm2.vtKmen.Open;
dm2.vtKmen.EmptyDataSet;
dm2.vtKmen.Filtered:= false;
grdKmen.LockDrawing;
filtr:= 'k.Dilec=1 AND k.MJEvidence=N''KA''';
if (filtrKodStroj<>'') then
filtr:= filtr + ' AND k.ID IN (SELECT zmd.IDKmenZbozi FROM ' + tblZakazModifDilce + ' zmd INNER JOIN ' + tblZakazModif
+ ' zm ON (zm.ID=zmd.IDZakazModif) WHERE zm.Schvaleno=1 AND zm.Kod=N' + filtrKodStroj.QuotedString + ')';
dm2.NactiKmenZbozi (filtr);
dm2.vtKmen.First;
grdKmen.UnlockDrawing;
helUtils.waitEnd;
end;
procedure TformKmen.grdKmenDblClick (Sender: TObject);
var i, zm: integer;
sz,rc,naz: string;
begin
i:= dm2.vtKmen.FieldByName('colID').AsInteger;
sz:= dm2.vtKmen.FieldByName('colSZ').AsString;
rc:= dm2.vtKmen.FieldByName('colRegCis').AsString;
naz:= dm2.vtKmen.FieldByName('colNazev1').AsString;
zm:= dm2.vtKmen.FieldByName('colIDZakModif').AsInteger;
if (Helios.YesNo('Chcete vybrat ' + sz + ' ' + rc + ' ' + naz, true)) then
begin
idKmen:= i;
idZakModif:= zm;
retVal:= 10;
Close;
end;
end;
procedure TformKmen.grdKmenDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
TJvDBGrid(Sender).Canvas.Brush.Color:= $00B8C4C8; // RGB C8C4B8 - seda
if (Column.FieldName='colNazev1') then
TJvDBGrid(Sender).Canvas.Brush.Color:= $00C6FECF; // RGB CFFEC6 - svetle zelena
if (gdSelected in State) then
TJvDBGrid(Sender).Canvas.Font.Color:= clBlack;
TJvDBGrid(Sender).DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
end.

1500
_plgPlan/frmPlan.dfm Normal file

File diff suppressed because it is too large Load Diff

1436
_plgPlan/frmPlan.pas Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,312 @@
unit frmPlanPaletListy;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, JvExDBGrids,
JvDBGrid, Vcl.StdCtrls, ddPlugin_TLB;
type
TformPlanPaletListy = class(TForm)
GridPanel1: TGridPanel;
GridPanel2: TGridPanel;
GridPanel3: TGridPanel;
grdPL: TJvDBGrid;
GridPanel4: TGridPanel;
GridPanel5: TGridPanel;
pnlKATiskSarzeAno: TPanel;
pnlKATiskSarzeNe: TPanel;
rbKATiskSarzeAno: TRadioButton;
rbKATiskSarzeNe: TRadioButton;
pnlKATiskExpiraceAno: TPanel;
rbKATiskExpiraceAno: TRadioButton;
rbKATiskExpiraceNe: TRadioButton;
pnlKATiskExpiraceNe: TPanel;
btnKATisk: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
lblPaPopis1: TLabel;
lblPaPopis2: TLabel;
btnTiskPA1: TButton;
btnTiskPA2: TButton;
GridPanel6: TGridPanel;
GridPanel7: TGridPanel;
GridPanel8: TGridPanel;
GridPanel9: TGridPanel;
Label5: TLabel;
Label6: TLabel;
edtZakazka: TEdit;
edtExtZakazka: TEdit;
Label7: TLabel;
edtNazev: TEdit;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
edtBarvaStitku: TEdit;
edtStitkuNaA4: TEdit;
edtRegCis: TEdit;
edtSZ: TEdit;
GridPanel10: TGridPanel;
Button3: TButton;
GridPanel11: TGridPanel;
Label12: TLabel;
Label13: TLabel;
btnKonec: TButton;
procedure btnKonecClick (Sender: TObject);
procedure FormShow (Sender: TObject);
procedure rbKATiskSarzeAnoClick (Sender: TObject);
procedure rbKATiskSarzeNeClick (Sender: TObject);
procedure rbKATiskExpiraceAnoClick (Sender: TObject);
procedure rbKATiskExpiraceNeClick (Sender: TObject);
procedure pnlKATiskSarzeAnoClick (Sender: TObject);
procedure pnlKATiskSarzeNeClick (Sender: TObject);
procedure pnlKATiskExpiraceAnoClick (Sender: TObject);
procedure pnlKATiskExpiraceNeClick (Sender: TObject);
procedure grdPLCellClick (Column: TColumn);
procedure btnKATiskClick (Sender: TObject);
private
procedure BarvyTlacitekDleRB;
public
Helios: IHelios;
cisloZbo, nazev, cisloPrikazu: string;
idRadekAdvPL, idPrikaz: integer;
ksVKA: integer;
KAnaPal: integer;
end;
var
formPlanPaletListy: TformPlanPaletListy;
idKZ, selIdVCPrikaz: integer;
idStitekKA, idStitekPL, idPLList: integer;
implementation
uses System.DateUtils, System.StrUtils, System.Math,
frmKmen, frmZavady, frmVyrobniTyden,
uUtils, datMod2, helUtils;
{$R *.dfm}
procedure TformPlanPaletListy.BarvyTlacitekDleRB;
begin
if (rbKATiskExpiraceAno.Checked) then
begin
pnlKATiskExpiraceAno.Color:= clMoneyGreen;
rbKATiskSarzeAno.Color:= clMoneyGreen;
end
else
begin
pnlKATiskExpiraceAno.Color:= clBtnFace;
rbKATiskSarzeAno.Color:= clBtnFace;
end;
if (rbKATiskExpiraceNe.Checked) then
begin
pnlKATiskExpiraceNe.Color:= $005B5BFF;
rbKATiskExpiraceNe.Color:= $005B5BFF;
end
else
begin
pnlKATiskExpiraceNe.Color:= clBtnFace;
rbKATiskExpiraceNe.Color:= clBtnFace;
end;
if (rbKATiskSarzeAno.Checked) then
begin
pnlKATiskSarzeAno.Color:= clMoneyGreen;
rbKATiskSarzeAno.Color:= clMoneyGreen;
end
else
begin
pnlKATiskSarzeAno.Color:= clBtnFace;
rbKATiskSarzeAno.Color:= clBtnFace;
end;
if (rbKATiskSarzeNe.Checked) then
begin
pnlKATiskSarzeNe.Color:= $005B5BFF;
rbKATiskSarzeNe.Color:= $005B5BFF;
end
else
begin
pnlKATiskSarzeNe.Color:= clBtnFace;
rbKATiskSarzeNe.Color:= clBtnFace;
end;
end;
procedure TformPlanPaletListy.btnKATiskClick (Sender: TObject);
var lSQL: string;
begin
if (selIdVCPrikaz>0) then
begin
lSQL:= 'IF OBJECT_ID(N''tempdb..#TabParamTiskStitkuKA'', N''U'') IS NOT NULL INSERT #TabParamTiskStitkuKA (TiskSarze, TiskExpirace) SELECT '
+ IfThen(rbKATiskSarzeAno.Checked, '1', '0') + ', ' + IfThen(rbKATiskExpiraceAno.Checked, '1', '0');
Helios.ExecSQL (lSQL);
if (idStitekKA>0) then
Helios.PrintForm3 (datMod2.bidPalety, idStitekKA, 'hvw_Vyroba_Palety.IDVyrCisPrikaz=' + selIdVCPrikaz.ToString);
end;
end;
procedure TformPlanPaletListy.btnKonecClick (Sender: TObject);
begin
Close;
end;
procedure TformPlanPaletListy.FormShow (Sender: TObject);
var lSQL, externiZak: string;
begin
selIdVCPrikaz:= 0;
idStitekKA:= 0;
idStitekPL:= 0;
idPLList:= 0;
lSQL:= 'DROP TABLE IF EXISTS #TabParamTiskStitkuKA' + CRLF + 'CREATE TABLE #TabParamTiskStitkuKA (ID INT IDENTITY(1,1) NOT NULL'
+ ', PocetKopii SMALLINT DEFAULT 1 NOT NULL, TiskSarze BIT DEFAULT 1 NOT NULL, TiskExpirace BIT DEFAULT 1 NOT NULL)';
Helios.ExecSQL (lSQL);
edtNazev.Text:= nazev;
if (cisloZbo<>'') then
begin
edtSZ.Text:= LeftStr(cisloZbo,3);
edtRegCis.Text:= MidStr(cisloZbo, 5, 30);
end;
edtZakazka.Text:= cisloPrikazu;
externiZak:= '';
if (idPrikaz>0) then
begin
dm2.PlanPalListyNactiSarzePrikazu (idPrikaz, ksVKA, externiZak);
idKZ:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idPrikaz.ToString);
if (idKZ>0) then
begin
with Helios.OpenSQL('SELECT * FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString) do
begin
end;
with Helios.OpenSQL('SELECT * FROM ' + tblKZe + ' WHERE ID=' + idKZ.ToString) do
begin
edtBarvaStitku.Text:= VarToStr(FieldByNameValues('_ASOL_BarvaStitku'));
edtStitkuNaA4.Text:= VarToStr(FieldByNameValues('_ASOL_PocetA4'));
// KA stitek
if not(TryStrToInt (VarToStr(FieldByNameValues('_KL')), idStitekKA)) then
idStitekKA:= 0;
// PL stitek
if not(TryStrToInt (VarToStr(FieldByNameValues('_PalStitek')), idStitekPL)) then
idStitekPL:= 0;
// PL list
if not(TryStrToInt (VarToStr(FieldByNameValues('_PLKK')), idPLList)) then
idPLList:= 0;
end;
end;
end;
if (externiZak<>'') then
edtExtZakazka.Text:= externiZak;
// edtStitkuNaA4.Text:=
end;
procedure TformPlanPaletListy.grdPLCellClick (Column: TColumn);
begin
selIdVCPrikaz:= grdPL.DataSource.DataSet.FieldByName('IDVCPrikaz').AsInteger;
end;
procedure TformPlanPaletListy.pnlKATiskExpiraceAnoClick (Sender: TObject);
begin
rbKATiskExpiraceAno.Checked:= not rbKATiskExpiraceAno.Checked;
rbKATiskExpiraceNe.Checked:= not rbKATiskExpiraceNe.Checked;
end;
procedure TformPlanPaletListy.pnlKATiskExpiraceNeClick (Sender: TObject);
begin
rbKATiskExpiraceAno.Checked:= not rbKATiskExpiraceAno.Checked;
rbKATiskExpiraceNe.Checked:= not rbKATiskExpiraceNe.Checked;
end;
procedure TformPlanPaletListy.pnlKATiskSarzeAnoClick (Sender: TObject);
begin
rbKATiskSarzeAno.Checked:= not rbKATiskSarzeAno.Checked;
rbKATiskSarzeNe.Checked:= not rbKATiskSarzeNe.Checked;
end;
procedure TformPlanPaletListy.pnlKATiskSarzeNeClick (Sender: TObject);
begin
rbKATiskSarzeAno.Checked:= not rbKATiskSarzeAno.Checked;
rbKATiskSarzeNe.Checked:= not rbKATiskSarzeNe.Checked;
end;
procedure TformPlanPaletListy.rbKATiskExpiraceAnoClick (Sender: TObject);
begin
if (rbKATiskExpiraceAno.Checked) then
rbKATiskExpiraceNe.Checked:= false;
BarvyTlacitekDleRB;
end;
procedure TformPlanPaletListy.rbKATiskExpiraceNeClick (Sender: TObject);
begin
if (rbKATiskExpiraceNe.Checked) then
rbKATiskExpiraceAno.Checked:= false;
BarvyTlacitekDleRB;
end;
procedure TformPlanPaletListy.rbKATiskSarzeAnoClick (Sender: TObject);
begin
if (rbKATiskSarzeAno.Checked) then
rbKATiskSarzeNe.Checked:= false;
BarvyTlacitekDleRB;
end;
procedure TformPlanPaletListy.rbKATiskSarzeNeClick (Sender: TObject);
begin
if (rbKATiskSarzeNe.Checked) then
rbKATiskSarzeAno.Checked:= false;
BarvyTlacitekDleRB;
end;
end.

1245
_plgPlan/frmRamcovyPlan.dfm Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,63 @@
unit frmRamcovyPlan;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, RzCmboBx, Vcl.Buttons, Data.DB,
Vcl.Grids, Vcl.DBGrids, JvExDBGrids, JvDBGrid, ddPlugin_TLB;
type
TformRamcovyPlan = class(TForm)
GridPanel1: TGridPanel;
GridPanel2: TGridPanel;
GridPanel3: TGridPanel;
Label1: TLabel;
cbAkce: TRzComboBox;
GridPanel4: TGridPanel;
Label2: TLabel;
cbSezona: TRzComboBox;
GridPanel5: TGridPanel;
Label3: TLabel;
BitBtn1: TBitBtn;
grdAlternativy: TJvDBGrid;
JvDBGrid1: TJvDBGrid;
edtKalibr: TEdit;
edtDelkaJm: TEdit;
edtStroj: TEdit;
Label4: TLabel;
GridPanel6: TGridPanel;
edtSK: TEdit;
edtRegCis: TEdit;
edtNazev1: TEdit;
edtMJ: TEdit;
edtKs: TEdit;
edtKA: TEdit;
edtOdber: TEdit;
edtM01: TEdit;
edtM02: TEdit;
edtM03: TEdit;
edtM04: TEdit;
edtM05: TEdit;
edtM06: TEdit;
edtM07: TEdit;
edtM08: TEdit;
edtM09: TEdit;
edtM10: TEdit;
edtM11: TEdit;
edtM12: TEdit;
private
public
Helios: IHelios;
end;
var
formRamcovyPlan: TformRamcovyPlan;
implementation
uses System.StrUtils,
datMod2, helUtils;
{$R *.dfm}
end.

View File

@ -0,0 +1,93 @@
object formVyberTydne: TformVyberTydne
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
BorderStyle = bsSingle
Caption = ' V'#253'robn'#237' t'#253'den'
ClientHeight = 473
ClientWidth = 311
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Segoe UI'
Font.Style = []
Position = poOwnerFormCenter
OnClose = FormClose
OnShow = FormShow
TextHeight = 21
object grdTydny: TJvDBGrid
Left = 4
Top = 51
Width = 303
Height = 395
DataSource = dm2.dsVyrobniTyden
Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgConfirmDelete, dgCancelOnExit, dgTitleHotTrack]
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -16
TitleFont.Name = 'Segoe UI'
TitleFont.Style = []
OnDblClick = grdTydnyDblClick
ScrollBars = ssVertical
SelectColumnsDialogStrings.Caption = 'Select columns'
SelectColumnsDialogStrings.OK = '&OK'
SelectColumnsDialogStrings.NoSelectionWarning = 'At least one column must be visible!'
EditControls = <>
RowsHeight = 25
TitleRowHeight = 25
Columns = <
item
Expanded = False
FieldName = 'colRok'
Visible = False
end
item
Alignment = taCenter
Color = 13041359
Expanded = False
FieldName = 'colTyden'
Title.Alignment = taCenter
Title.Caption = 'T'#253'den'
Width = 59
Visible = True
end
item
Alignment = taCenter
Expanded = False
FieldName = 'colDatumOd'
Title.Alignment = taCenter
Title.Caption = 'Datum od'
Width = 100
Visible = True
end
item
Alignment = taCenter
Expanded = False
FieldName = 'colDatumDo'
Title.Alignment = taCenter
Title.Caption = 'Datum do'
Width = 107
Visible = True
end>
end
object cbRok: TComboBox
Left = 8
Top = 12
Width = 99
Height = 29
Style = csDropDownList
TabOrder = 1
OnChange = cbRokChange
end
object btnDnes: TButton
Left = 196
Top = 8
Width = 105
Height = 36
Caption = 'Dnes'
TabOrder = 2
OnClick = btnDnesClick
end
end

View File

@ -0,0 +1,118 @@
unit frmVyrobniTyden;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.Grids, Vcl.DBGrids, JvExDBGrids, JvDBGrid,
Vcl.StdCtrls;
type
TformVyberTydne = class(TForm)
grdTydny: TJvDBGrid;
cbRok: TComboBox;
btnDnes: TButton;
procedure FormShow (Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure grdTydnyDblClick(Sender: TObject);
procedure cbRokChange(Sender: TObject);
procedure btnDnesClick(Sender: TObject);
private
procedure NactiKalendar (rok: integer; tyden: byte=0; autoIns: boolean=false);
public
rok, tyden: integer;
datOd, datDo: string;
retVal: integer;
end;
var
formVyberTydne: TformVyberTydne;
implementation
uses System.DateUtils,
helUtils, datMod2;
{$R *.dfm}
procedure TformVyberTydne.btnDnesClick (Sender: TObject);
var t: integer;
begin
t:= System.DateUtils.WeekOf(Now);
grdTydny.DataSource.DataSet.Locate('colRok;colTyden', VarArrayOf([cbRok.Text, t]), []);
end;
procedure TformVyberTydne.cbRokChange (Sender: TObject);
begin
NactiKalendar (cbRok.Text.ToInteger);
end;
procedure TformVyberTydne.FormClose (Sender: TObject; var Action: TCloseAction);
begin
Action:= TCloseAction.caFree;
end;
procedure TformVyberTydne.NactiKalendar (rok: Integer; tyden: byte=0; autoIns: boolean=false);
var rNow, m: integer;
begin
retVal:= 0;
datOd:= '';
datDo:= '';
rNow:= YearOf(Now);
if (autoIns) then
begin
cbRok.Items.Clear;
cbRok.Items.Add((rok-1).ToString);
cbRok.Items.Add(rok.ToString);
cbRok.Items.Add((rok+1).ToString);
cbRok.ItemIndex:= cbRok.Items.IndexOf(rok.ToString);
end;
if (Assigned(datMod2.dm2)) then
begin
if (dm2.vtVyrobniTyden<>nil) then
dm2.NactiVyrobniTydny (rok);
if (rok=rNow) then
m:= WeekOf(Now)
else
m:= System.DateUtils.WeeksInAYear (rok);
if (tyden>0) then
m:= tyden;
dm2.vtVyrobniTyden.Locate ('colRok;colTyden', VarArrayOf ([rok, m]), []);
end;
end;
procedure TformVyberTydne.FormShow (Sender: TObject);
begin
NactiKalendar (YearOf(Now), tyden, true);
end;
procedure TformVyberTydne.grdTydnyDblClick (Sender: TObject);
begin
retVal:= 10;
tyden:= dm2.vtVyrobniTyden.FieldByName('colTyden').AsInteger;
rok:= dm2.vtVyrobniTyden.FieldByName('colRok').AsInteger;
datOd:= dm2.vtVyrobniTyden.FieldByName('colDatumOd').AsString;
datDo:= dm2.vtVyrobniTyden.FieldByName('colDatumDo').AsString;
Close;
end;
end.

113
_plgPlan/frmZavady.dfm Normal file
View File

@ -0,0 +1,113 @@
object formZavady: TformZavady
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
Caption = ' Vyberte '#250'dr'#382'bu'
ClientHeight = 470
ClientWidth = 482
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Segoe UI'
Font.Style = []
Position = poOwnerFormCenter
OnClose = FormClose
OnShow = FormShow
TextHeight = 21
object grd1: TGridPanel
Left = 0
Top = 0
Width = 482
Height = 470
Align = alClient
Caption = 'grd1'
ColumnCollection = <
item
Value = 100.000000000000000000
end>
ControlCollection = <
item
Column = 0
Control = Panel1
Row = 1
end>
RowCollection = <
item
Value = 5.000000000000000000
end
item
Value = 95.000000000000000000
end>
TabOrder = 0
object Panel1: TPanel
Left = 1
Top = 24
Width = 480
Height = 445
Align = alClient
Anchors = []
TabOrder = 0
object grdZavady: TJvDBGrid
Left = 1
Top = 1
Width = 478
Height = 443
Align = alClient
DataSource = dm2.dsZavady
DrawingStyle = gdsClassic
Options = [dgTitles, dgIndicator, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgConfirmDelete, dgCancelOnExit, dgTitleClick, dgTitleHotTrack]
ReadOnly = True
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -16
TitleFont.Name = 'Segoe UI'
TitleFont.Style = []
OnDrawColumnCell = grdZavadyDrawColumnCell
OnDblClick = grdZavadyDblClick
ScrollBars = ssVertical
SelectColumnsDialogStrings.Caption = 'Vyberte sloupce'
SelectColumnsDialogStrings.OK = '&OK'
SelectColumnsDialogStrings.NoSelectionWarning = 'Mus'#237' b'#253't viditeln'#253' aspo'#328' jeden sloupec !'
CanDelete = False
EditControls = <>
RowsHeight = 25
TitleRowHeight = 25
Columns = <
item
Expanded = False
FieldName = 'colID'
Visible = False
end
item
Expanded = False
FieldName = 'colTyp'
Visible = False
end
item
Alignment = taCenter
Expanded = False
FieldName = 'colKod'
Title.Alignment = taCenter
Title.Caption = 'Kod'
Width = 98
Visible = True
end
item
Expanded = False
FieldName = 'colNazev'
Title.Alignment = taCenter
Title.Caption = 'N'#225'zev'
Width = 352
Visible = True
end
item
Expanded = False
FieldName = 'colIDPrikaz'
Visible = False
end>
end
end
end
end

124
_plgPlan/frmZavady.pas Normal file
View File

@ -0,0 +1,124 @@
unit frmZavady;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Data.DB, Vcl.Grids, Vcl.DBGrids, JvExDBGrids,
JvDBGrid, ddPlugin_TLB, Vcl.ComCtrls, JvExComCtrls, JvHeaderControl, Vcl.StdCtrls, Vcl.Buttons,
Vcl.Mask, RzEdit;
type
TformZavady = class(TForm)
Panel1: TPanel;
grdZavady: TJvDBGrid;
grd1: TGridPanel;
procedure FormShow (Sender: TObject);
procedure grdZavadyDblClick (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure grdZavadyDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
public
Helios: IHelios;
retVal: integer;
idPrP: integer;
nazev: string;
kodModif: string;
end;
var
formZavady: TformZavady;
implementation
uses System.StrUtils,
helUtils, datMod2;
{$R *.dfm}
procedure TformZavady.FormClose (Sender: TObject; var Action: TCloseAction);
begin
Action:= TCloseAction.caFree;
end;
procedure TformZavady.FormShow (Sender: TObject);
var pomHandle: THandle;
begin
retVal:= 0;
pomHandle:= THandle(Helios.MainApplicationHandle);
if (pomHandle<>Application.Handle) then
Application.Handle:= pomHandle;
pomHandle:= THandle(Helios.MainApplicationIconHandle);
if (pomHandle<>Application.Icon.Handle) then
Application.Icon.Handle:= pomHandle;
with Application.DefaultFont do
begin
Name:= Helios.Font;
Height:= Helios.FontHeight;
Charset:= Helios.Charset;
Screen.MenuFont.Charset:= Charset;
Screen.MenuFont.Name:= Name;
Screen.MenuFont.Height:= Height;
end;
self.Font:= Application.DefaultFont;
if not(dm2.vtZavady.Active) then
dm2.vtZavady.Open;
dm2.vtZavady.EmptyDataSet;
dm2.vtZavady.Filtered:= false;
grdZavady.LockDrawing;
dm2.NactiUdrzbu (kodModif, 'Typ=3'); // prostoj stroje
dm2.vtZavady.First;
grdZavady.UnlockDrawing;
helUtils.waitEnd;
end;
procedure TformZavady.grdZavadyDblClick (Sender: TObject);
var i, zm: integer;
sz,rc,naz: string;
begin
i:= dm2.vtZavady.FieldByName('colID').AsInteger;
naz:= dm2.vtZavady.FieldByName('colNazev').AsString;
if (Helios.YesNo('Chcete vybrat ' + #1 + naz + #1 + ' ?', true)) then
begin
idPrP:= i;
nazev:= naz;
retVal:= 10;
Close;
end;
end;
procedure TformZavady.grdZavadyDrawColumnCell (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (gdSelected in State) then
grdZavady.Canvas.Font.Color:= clBlack;
grdZavady.Canvas.Brush.Color:= $00B8C4C8; // RGB C8C4B8 - seda
if (Assigned(Column.Field) and (SameText(Column.FieldName, 'colNazev'))) then
// if (Column.FieldName='colNazev') then
grdZavady.Canvas.Brush.Color:= $00C6FECF; // RGB CFFEC6 - svetle zelena
grdZavady.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
end.

4
_plgPlan/iConsts.inc Normal file
View File

@ -0,0 +1,4 @@
const
CRLF = #13#10;
tblPalety = '[dbo].[_TabVyroba_Palety]';
tblPlanRozpad = '[dbo].[_TabVyroba_PlanRozpad]';

View File

@ -0,0 +1,21 @@
IF OBJECT_ID(N'dbo._TabVyroba_PlanRozpad', N'U') IS NULL
CREATE TABLE dbo._TabVyroba_PlanRozpad (
ID int IDENTITY(1, 1) NOT NULL,
Datum DATETIME NOT NULL,
CasOd AS DATEPART(hour, Datum),
Datum_D AS DATEPART(day, Datum),
Datum_M AS DATEPART(month ,Datum),
Datum_Y AS DATEPART(year, Datum),
Datum_W AS DATEPART(week, Datum),
Datum_V AS DATEPART(iso_week, Datum),
Datum_Y_ISO AS DATEPART(year, DATEADD(day, 26-DATEPART(iso_week, Datum), Datum)),
IDAdvKPDavka int NULL,
IDPrikaz int NULL,
DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(),
Autor NVARCHAR(80) NOT NULL DEFAULT SUSER_SNAME(),
CONSTRAINT PK__TabVyroba_PlanRozpad PRIMARY KEY CLUSTERED (ID DESC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
DROP INDEX IF EXISTS EI__TabVyroba_PlanRozpad_Datum ON dbo._TabVyroba_PlanRozpad
CREATE NONCLUSTERED INDEX EI__TabVyroba_PlanRozpad_Datum ON dbo._TabVyroba_PlanRozpad (Datum)
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)

View File

@ -0,0 +1,23 @@
-- dbo.ET_TabAdvKPDavky_HDC_D
CREATE TRIGGER dbo.ET_TabAdvKPDavky_HDC_D ON dbo.TabAdvKPDavky
WITH EXECUTE AS CALLER
FOR DELETE
AS
BEGIN
SET NOCOUNT ON
DECLARE
@id INT
-- cisteni
IF EXISTS (SELECT 1 FROM dbo.TabAdvKPDavky)
BEGIN
SELECT @id=MAX(ID) FROM dbo.TabAdvKPDavky
DBCC CHECKIDENT (TabAdvKPDavky, RESEED, @id)
END
END

View File

@ -0,0 +1,23 @@
-- dbo.ET_TabPlan_HDC_D
CREATE TRIGGER dbo.ET_TabPlan_HDC_D ON dbo.TabPlan
WITH EXECUTE AS CALLER
FOR DELETE
AS
BEGIN
SET NOCOUNT ON
DECLARE
@id INT
-- cisteni
IF EXISTS (SELECT 1 FROM dbo.TabPlan)
BEGIN
SELECT @id=MAX(ID) FROM dbo.TabPlan
DBCC CHECKIDENT (TabPlan, RESEED, @id)
END
END