2053 lines
74 KiB
ObjectPascal
2053 lines
74 KiB
ObjectPascal
unit frmHrOdvOper;
|
||
|
||
{
|
||
28.11.2023 - lze skenovat poradove cislo dokladu prijemky, davka se bude postupne rusit kvuli zmene odvadeni P12 z vosku primo na sklad obalovny
|
||
}
|
||
|
||
|
||
interface
|
||
|
||
uses
|
||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls,
|
||
Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Mask,
|
||
ddPlugin_TLB,
|
||
// KControls, KGrids,
|
||
Buttons, RzEdit, RzBtnEdt, RxToolEdit, NxCustomGrid6, NxGrid6, NxColumns6, NxTypes6, NxGridView6,
|
||
NxControls6, NxVirtualGrid6;
|
||
|
||
const
|
||
errPlg = 'plgKdynium';
|
||
tblEvidOper = '[dbo].[_hdc_TabHromEvidOper]';
|
||
tblEvidOpPolozky = '[dbo].[_hdc_TabHromEvidOperPol]';
|
||
tblDavky = '[dbo].[_hdc_TabDavky]';
|
||
|
||
type
|
||
TOper = record
|
||
Operace: shortString;
|
||
Koef: extended;
|
||
IdPostup: integer;
|
||
NormCas: Extended;
|
||
SkutCas: Extended;
|
||
zmetky: integer;
|
||
end;
|
||
|
||
TformHrOdvOper = class(TForm)
|
||
grpZam: TGroupBox;
|
||
edtOsCislo: TComboEdit;
|
||
edtJmeno: TComboEdit;
|
||
lbl1: TLabel;
|
||
lbl2: TLabel;
|
||
lbl3: TLabel;
|
||
lblUvazek: TLabel;
|
||
grpPrikaz: TGroupBox;
|
||
edtPrikaz: TComboEdit;
|
||
edtNazevZbozi: TEdit;
|
||
grpSmena: TGroupBox;
|
||
edtSmena: TComboEdit;
|
||
lbl12: TLabel;
|
||
lblVyrobeneKs: TLabel;
|
||
edtKusy: TRzNumericEdit;
|
||
lbl14: TLabel;
|
||
lbl15: TLabel;
|
||
lblZbyvCas: TLabel;
|
||
lbl18: TLabel;
|
||
lbl19: TLabel;
|
||
btnOpAdd1: TButton;
|
||
btnOpAddVse: TButton;
|
||
btnOpDel1: TButton;
|
||
btnOpDelVse: TButton;
|
||
lblCasNormVP: TLabel;
|
||
lblCasNormEvid: TLabel;
|
||
dtDatum: TRzDateTimeEdit;
|
||
btnOK: TBitBtn;
|
||
btnQuit: TBitBtn;
|
||
Label1: TLabel;
|
||
lblEvid: TLabel;
|
||
Label2: TLabel;
|
||
lblKmenStred: TLabel;
|
||
edtCasHod: TRzNumericEdit;
|
||
edtCasMin: TRzNumericEdit;
|
||
Label5: TLabel;
|
||
Label4: TLabel;
|
||
btnDalsiPrikaz: TBitBtn;
|
||
Label3: TLabel;
|
||
gridOperEvid: TNextGrid6;
|
||
colOpEvidCislo: TNxNumberColumn6;
|
||
colOpEvidPopis: TNxTextColumn6;
|
||
colOpEvidCasM: TNxNumberColumn6;
|
||
gridOperPrikaz: TNextGrid6;
|
||
gridAllEvid: TNextGrid6;
|
||
colEvidOdlitek: TNxTextColumn6;
|
||
colEvidPopis: TNxTextColumn6;
|
||
colEvidKs: TNxNumberColumn6;
|
||
colEvidCasM: TNxNumberColumn6;
|
||
colEvidPlneni: TNxNumberColumn6;
|
||
colOpCasS: TNxNumberColumn6;
|
||
colOpCasM: TNxNumberColumn6;
|
||
colOpEvidCasS: TNxNumberColumn6;
|
||
colOpIdPostup: TNxNumberColumn6;
|
||
colOpEvidIdPostup: TNxNumberColumn6;
|
||
lblPlneni: TLabel;
|
||
colOpSkutCasS: TNxDateColumn6;
|
||
colOpEvidSkutCasS: TNxDateColumn6;
|
||
colOpEvidIdEvidOp: TNxNumberColumn6;
|
||
colOpIdEvidOp: TNxNumberColumn6;
|
||
view1: TNxReportGridView6;
|
||
view2: TNxReportGridView6;
|
||
view3: TNxReportGridView6;
|
||
colOpEvidZmetky: TNxNumberColumn6;
|
||
colOpPopis: TNxTextColumn6;
|
||
colOpCislo: TNxNumberColumn6;
|
||
btnClearVP: TBitBtn;
|
||
lblZbytekKs: TLabel;
|
||
lblZbyvaKs: TLabel;
|
||
colOpMnoz: TNxNumberColumn6;
|
||
colOpEvidMnoz: TNxNumberColumn6;
|
||
colOpEvidZive: TNxNumberColumn6;
|
||
colOpEvidMnozOrig: TNxNumberColumn6;
|
||
lblNormaKs: TLabel;
|
||
colOpNormaMin: TNxNumberColumn6;
|
||
colOpEvidNormaMin: TNxNumberColumn6;
|
||
btnDalsiClovek: TBitBtn;
|
||
colOpEvidKodZavady: TNxNumberColumn6;
|
||
grpDavka: TGroupBox;
|
||
edtDavka: TComboEdit;
|
||
grpMnozCas: TGroupBox;
|
||
edtObalovna: TEdit;
|
||
Label6: TLabel;
|
||
edtObalovnaDavka: TEdit;
|
||
Label7: TLabel;
|
||
colOpMnozZive: TNxNumberColumn6;
|
||
procedure btnQuitClick (Sender: TObject);
|
||
procedure FormShow (Sender: TObject);
|
||
procedure edtOsCisloButtonClick (Sender: TObject);
|
||
procedure edtSmenaButtonClick (Sender: TObject);
|
||
procedure btnOpAdd1Click (Sender: TObject);
|
||
procedure btnOpAddVseClick (Sender: TObject);
|
||
procedure gridOperPrikazMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
procedure gridOperPrikazDragOver (Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
|
||
procedure gridOperPrikazDragDrop (Sender, Source: TObject; X, Y: Integer);
|
||
procedure gridOperPrikazChanged (Sender: TObject; ACol, ARow: Integer);
|
||
procedure gridOperEvidDragOver (Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
|
||
procedure gridOperEvidDragDrop (Sender, Source: TObject; X, Y: Integer);
|
||
procedure gridOperEvidMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
procedure gridOperEvidResize (Sender: TObject);
|
||
procedure btnOpDel1Click (Sender: TObject);
|
||
procedure btnUkazOperClick (Sender: TObject);
|
||
procedure btnOpDelVseClick (Sender: TObject);
|
||
procedure edtKusyExit (Sender: TObject);
|
||
procedure edtPrikazButtonClick (Sender: TObject);
|
||
procedure edtVyrobekClick (Sender: TObject);
|
||
procedure edtPrikazExit (Sender: TObject);
|
||
procedure edtPrikazKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
procedure edtOsCisloExit (Sender: TObject);
|
||
procedure dtDatumChange (Sender: TObject);
|
||
procedure btnOKClick (Sender: TObject);
|
||
procedure edtOsCisloKeyPress (Sender: TObject; var Key: Char);
|
||
procedure btnDalsiPrikazClick (Sender: TObject);
|
||
procedure FormMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
procedure FormActivate (Sender: TObject);
|
||
procedure gridOperPrikazResize (Sender: TObject);
|
||
procedure FormResize(Sender: TObject);
|
||
procedure gridOperPrikazCellDblClick(Sender: TObject; ACol, ARow: Integer);
|
||
procedure gridOperEvidCellDblClick(Sender: TObject; ACol, ARow: Integer);
|
||
procedure edtCasHodExit(Sender: TObject);
|
||
procedure edtCasMinExit(Sender: TObject);
|
||
procedure edtJmenoButtonClick(Sender: TObject);
|
||
procedure gridOperPrikazSelect(Sender: TObject; ACol, ARow: Integer);
|
||
procedure gridOperEvidSelect(Sender: TObject; ACol, ARow: Integer);
|
||
procedure btnClearVPClick(Sender: TObject);
|
||
procedure gridOperEvidCellChange(Sender: TObject; ACol, ARow: Integer);
|
||
procedure gridOperEvidCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton);
|
||
procedure gridOperPrikazCellChange(Sender: TObject; ACol, ARow: Integer);
|
||
procedure edtKusyChange(Sender: TObject);
|
||
procedure btnDalsiClovekClick(Sender: TObject);
|
||
procedure edtDavkaExit(Sender: TObject);
|
||
procedure edtDavkaButtonClick(Sender: TObject);
|
||
private
|
||
procedure OnMsg (var Msg: TMsg; var Handled: Boolean);
|
||
function CasDleTPV (var casS,casM,casH: Extended): boolean;
|
||
function NactiOperace: boolean;
|
||
procedure FixGridCols (const grid: TNextGrid6);
|
||
procedure VyplnDataDleKZ;
|
||
procedure VyplnDataDleVPr;
|
||
procedure PrepoctiCasVP;
|
||
procedure PrepoctiCasEvid;
|
||
procedure NastavGridy;
|
||
procedure UdajeZamest (cZam,idZamest: integer; zbytekUvaz: boolean);
|
||
procedure NactiJizEvidOperace;
|
||
procedure NactiEvidenci;
|
||
public
|
||
Helios: IHelios;
|
||
filtrRada: string;
|
||
jeTest: Boolean;
|
||
jeEditace: boolean;
|
||
idHromEvidOp: integer; // ID z tabulky _TabEvidOperaci (pro editaci)
|
||
end;
|
||
|
||
var
|
||
verText, evidMJ: ShortString;
|
||
formHrOdvOper: TformHrOdvOper;
|
||
oVar1, oVar2: OleVariant;
|
||
bidDavky, bidHDCLog: integer;
|
||
evidDavka: boolean;
|
||
|
||
radaPrikP12Vosk, sklP12Obal, radaOdvP12Vosk: string;
|
||
|
||
idZam, idVPr, idVPrOld, idKZ, idMObd, idDavka, idDokladOZ: integer;
|
||
vicPrikazu, davkaObal, dataUlozena: boolean;
|
||
sumCas_S, sumCas_M, sumCas_H, odvKs, zmetKs, zbytekKs, ksDavka: Extended;
|
||
casSk_S, casSk_M, casSk_H: extended;
|
||
opVPsel,opEvidsel: integer; // cislo vybraneho radku
|
||
novyVyr, novyClovek, hromAkce: Boolean;
|
||
|
||
idOperaci: TArray<integer>;
|
||
|
||
dragRow,dragCol: integer;
|
||
|
||
implementation
|
||
uses System.StrUtils, System.DateUtils, System.RegularExpressions, frmInputNum, frmHrOdvOperZmetky, myUtils, helUtils;
|
||
|
||
{$R *.dfm}
|
||
|
||
procedure TformHrOdvOper.OnMsg (var Msg: tagMSG; var Handled: Boolean);
|
||
begin
|
||
if (Msg.hwnd=edtJmeno.Handle) and (Msg.message=WM_KEYDOWN) then
|
||
case Msg.wParam of
|
||
VK_TAB: begin
|
||
edtJmeno.Text:= Trim(edtJmeno.Text);
|
||
edtJmenoButtonClick(nil);
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.NactiEvidenci;
|
||
var lSQL, idOps: string;
|
||
i,idx,cnt: integer;
|
||
begin
|
||
idKZ:= 0;
|
||
lSQL:= 'SELECT IdKmenZbozi, CisloZamest, Mnozstvi, Datum, CasHod, CasMin, ISNULL(IDDavka,0) FROM ' + tblEvidOper + ' WHERE ID=' + IntToStR(idHromEvidOp);
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount>0) then
|
||
begin
|
||
edtDavka.Text:= '';
|
||
idDavka:= StrToInt(VarToStr(FieldValues(6)));
|
||
if (idDavka>0) then
|
||
edtDavka.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT KodDavky FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString);
|
||
edtOsCislo.Text:= VarToStr(FieldValues(1));
|
||
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
||
with Helios.OpenSQL('SELECT ID FROM ' + tblCZam + ' WHERE Cislo=' + edtOsCislo.Text) do
|
||
if not(VarIsNull(FieldValues(0))) then
|
||
idZam:= StrToInt(VarToStr(FieldValues(0)));
|
||
edtOsCisloExit(nil);
|
||
edtKusy.Value:= StrToFloat(VarToStr(FieldValues(2)));
|
||
dtDatum.Date:= StrToDateTime(VarToStr(FieldValues(3)));
|
||
edtCasHod.Value:= StrToFloat(VarToStr(FieldValues(4)));
|
||
edtCasMin.Value:= StrToFloat(VarToStr(FieldValues(5)));
|
||
VyplnDataDleKZ;
|
||
|
||
cnt:= 0;
|
||
SetLength(idOperaci,0);
|
||
idOps:= '';
|
||
with Helios.OpenSQL('SELECT ID FROM ' + tblEvidOpPolozky + ' WHERE IdEvidOper=' + IntToStr(idHromEvidOp)) do
|
||
if (RecordCount>0) then
|
||
begin
|
||
SetLength(idOperaci, RecordCount);
|
||
cnt:= 1;
|
||
First;
|
||
while not(EOF) do
|
||
begin
|
||
idOperaci[cnt-1]:= StrToInt(VarToStr(FieldValues(0)));
|
||
Inc(i);
|
||
Next;
|
||
end;
|
||
idOps:= ArrayIntToStr(idOperaci);
|
||
end;
|
||
if (cnt>0) then
|
||
begin
|
||
idx:= 0;
|
||
gridOperEvid.ClearRows;
|
||
gridOperEvid.RowCount:= cnt;
|
||
while (idx<cnt) do
|
||
begin
|
||
lSQL:= 'SELECT op.idPostup, op.Mnozstvi, op.Operace, op.Popis, op.NormCas_S, op.SkutCas_S, p.typ, op.id FROM ' + tblEvidOpPolozky;
|
||
lSQL:= lSQL + ' op LEFT JOIN ' + tblPrPost + ' p ON (op.IdPostup=p.id) WHERE op.id=' + IntTOStr(idOperaci[idx]);
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount=1) then
|
||
begin
|
||
gridOperEvid.Cell[0,idx].AsString:= Trim(VarToStr(FieldValues(2))); // Operace
|
||
gridOperEvid.Cell[1,idx].AsString:= Trim(VarToStr(FieldValues(3))); // Popis
|
||
gridOperEvid.Cell[2,idx].AsFloat:= RoundToEx(StrToFloat(VarToStr(FieldValues(4)))/60/edtKusy.Value,-2); // NormCas(v min)
|
||
gridOperEvid.Cell[3,idx].AsFloat:= RoundToEx(StrToFloat(VarToStr(FieldValues(4)))/edtKusy.Value,-2); // NormCas(v sek)
|
||
gridOperEvid.Cell[4,idx].AsInteger:= StrToInt(VarToStr(FieldValues(0))); // IdPostup
|
||
gridOperEvid.Cell[5,idx].AsFloat:= StrToFloat(VarToStr(FieldValues(5))); // SkutCas(s)
|
||
gridOperEvid.Cell[6,idx].AsInteger:= StrToInt(VarToStr(FieldValues(7))); // idEvidOperPol
|
||
if VarIsNull(FieldValues(6)) then // neni provazanost mezi zaevidovanym IdPostup a IdPostup v TPV -> typ=null
|
||
gridOperEvid.Cell[1,idx].AsString:= '! Operace byla v TPV smaz<61>na !';
|
||
end;
|
||
Inc(idx);
|
||
end;
|
||
if (gridOperPrikaz.RowCount>0) then
|
||
begin
|
||
for idx:=0 to gridOperEvid.RowCount-1 do
|
||
begin
|
||
for i:=0 to gridOperPrikaz.RowCount-1 do
|
||
if (gridOperEvid.Cell[4,idx]=gridOperPrikaz.Cell[4,i]) then
|
||
begin
|
||
gridOperPrikaz.DeleteRow(i);
|
||
Break;
|
||
end;
|
||
end;
|
||
PrepoctiCasVP;
|
||
end;
|
||
PrepoctiCasEvid;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.FixGridCols(const grid: TNextGrid6);
|
||
var i : integer;
|
||
TotWidth : integer;
|
||
VarWidth : integer;
|
||
ResizableColumnCount : integer;
|
||
AColumn : TNxColumn6;
|
||
begin
|
||
//total width of all columns before resize
|
||
TotWidth := 0;
|
||
//how to divide any extra space in the grid
|
||
VarWidth := 0;
|
||
//how many columns need to be auto-resized
|
||
ResizableColumnCount:= 0;
|
||
for i:=0 to -1 + grid.Columns.Count do
|
||
begin
|
||
TotWidth := TotWidth + grid.Columns[i].Width;
|
||
if grid.Columns[i].Tag <> 0 then
|
||
Inc(ResizableColumnCount);
|
||
end;
|
||
|
||
//add 1px for the column separator line
|
||
// if dgColLines in grid.Options then
|
||
TotWidth:= TotWidth + grid.Columns.Count;
|
||
|
||
//add indicator column width
|
||
// if dgIndicator in grid.Options then
|
||
// TotWidth:= TotWidth + IndicatorWidth;
|
||
|
||
//width vale "left"
|
||
VarWidth:= grid.ClientWidth - TotWidth;
|
||
|
||
//Equally distribute VarWidth
|
||
//to all auto-resizable columns
|
||
if (ResizableColumnCount>0) then
|
||
VarWidth:= varWidth div ResizableColumnCount;
|
||
|
||
for i:=0 to -1 + grid.Columns.Count do
|
||
begin
|
||
AColumn := grid.Columns[i];
|
||
if (AColumn.Tag<>0) then
|
||
begin
|
||
AColumn.Width:= AColumn.Width + VarWidth;
|
||
if (AColumn.Width<AColumn.Tag) then
|
||
AColumn.Width:= AColumn.Tag;
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.NactiJizEvidOperace;
|
||
var sql: string;
|
||
idx: integer;
|
||
begin
|
||
if (edtOsCislo.Text<>'') then
|
||
begin
|
||
gridAllEvid.ClearRows;
|
||
sql:= 'SELECT kz.RegCis, kz.Nazev1, e.Mnozstvi, (e.CasHod*60)+e.CasMin, ROUND(ep.Plneni,1) FROM ' + tblEvidOper;
|
||
sql:= sql + ' e INNER JOIN ' + tblKZ + ' kz ON (e.IdKmenZbozi=kz.id) INNER JOIN ';
|
||
sql:= sql + '(SELECT IdEvidOper, AVG(Plneni) As [Plneni] FROM ' + tblEvidOpPolozky;
|
||
sql:= sql + ' GROUP BY IdEvidOper) ep ON (e.id=ep.IdEvidOper) WHERE e.CisloZamest=' + edtOsCislo.Text;
|
||
sql:= sql + ' AND CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,e.Datum)))=CONVERT(datetime,N';
|
||
sql:= sql + QuotedStr(DateTimeToStr(dtDatum.Date)) + ',104) ORDER BY e.DatPorizeni DESC';
|
||
with Helios.OpenSQL(sql) do
|
||
if RecordCount>0 then
|
||
begin
|
||
gridAllEvid.RowCount:= RecordCount;
|
||
idx:= 0;
|
||
First;
|
||
while not(EOF) do
|
||
begin
|
||
gridAllEvid.Cell[colEvidOdlitek.Index, idx].AsString:= VarHodnota(FieldValues(0),''); // odlitek
|
||
gridAllEvid.Cell[colEvidPopis.Index, idx].AsString:= VarHodnota(FieldValues(1),''); // nazev odlitku
|
||
gridAllEvid.Cell[colEvidKs.Index, idx].AsFloat:= VarHodnota(FieldValues(2),0.0); // ks
|
||
gridAllEvid.Cell[colEvidCasM.Index, idx].AsInteger:= VarHodnota(FieldValues(3),0); // cas min
|
||
gridAllEvid.Cell[colEvidPlneni.Index, idx].AsFloat:= VarHodnota(FieldValues(4),0.0); // plneni
|
||
Inc(idx);
|
||
Next;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnClearVPClick(Sender: TObject);
|
||
begin
|
||
idKZ:= 0;
|
||
idVPr:= 0;
|
||
lblKmenStred.Caption:= '';
|
||
edtKusy.Value:= 0;
|
||
lblZbytekKs.Caption:= '';
|
||
edtCasHod.Value:= 0;
|
||
edtCasMin.Value:= 0;
|
||
edtPrikaz.Text:= '';
|
||
edtNazevZbozi.Text:= '';
|
||
gridOperPrikaz.ClearRows;
|
||
gridOperEvid.ClearRows;
|
||
lblCasNormVP.Caption:= '0.0 min)';
|
||
lblCasNormEvid.Caption:= '0.0 min)';
|
||
lblNormaKs.Caption:= '';
|
||
edtPrikaz.SetFocus;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnDalsiClovekClick(Sender: TObject);
|
||
begin
|
||
novyClovek:= true;
|
||
btnDalsiPrikazClick(Sender);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnDalsiPrikazClick (Sender: TObject);
|
||
var i: integer;
|
||
begin
|
||
idHromEvidOp:= 0;
|
||
novyVyr:= true;
|
||
if (novyClovek) then
|
||
novyVyr:= false;
|
||
btnOKClick(Sender);
|
||
if not(dataUlozena) then
|
||
Exit;
|
||
|
||
if (novyVyr) then
|
||
begin
|
||
edtPrikaz.Text:= '';
|
||
edtNazevZbozi.Text:= '';
|
||
lblKmenStred.Caption:= '';
|
||
edtObalovna.Text:= '';
|
||
edtObalovnaDavka.Text:= '';
|
||
edtDavka.Text:= '';
|
||
edtDavka.SetFocus;
|
||
end
|
||
else
|
||
begin
|
||
edtPrikazExit(Sender);
|
||
edtOsCislo.SetFocus;
|
||
end;
|
||
|
||
novyVyr:= false;
|
||
novyClovek:= false;
|
||
|
||
gridOperPrikaz.ClearRows;
|
||
gridOperEvid.ClearRows;
|
||
gridAllEvid.ClearRows;
|
||
NastavGridy;
|
||
|
||
NactiOperace;
|
||
|
||
lblCasNormVP.Caption:= '0.0 min)';
|
||
lblNormaKs.Caption:= '';
|
||
lblCasNormEvid.Caption:= '0.0 min)';
|
||
i:= 0;
|
||
while (i<=Self.ComponentCount-1) do
|
||
begin
|
||
if (Self.Components[i] is TRzNumericEdit) then
|
||
(Self.Components[i] as TRzNumericEdit).Text:= '0';
|
||
Inc(i);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnOKClick (Sender: TObject);
|
||
var pIdx, oIdx, idx, ppIdx, idx2, idPMZ, iDokl: integer;
|
||
lSQL, msg: string;
|
||
Vpr: IHeQuery;
|
||
dt, doklad: string;
|
||
zbytek, opZbytek, OpCas, AllCas, CCas, EvidCas, odvOp, koefKS, ks, ksOdv, AllKsOdv: Extended;
|
||
mn, mnZ: Extended;
|
||
chyba, jeNovaEvid: boolean;
|
||
Operace: TArray<TOper>;
|
||
idEvidOperPol: string;
|
||
begin
|
||
edtPrikaz.Text:= Trim(edtPrikaz.Text);
|
||
|
||
if (idZam=0) then
|
||
begin
|
||
Helios.Error(#1'Chybn<62> zad<61>n zam<61>stnanec.'#1);
|
||
edtOsCislo.SetFocus;
|
||
Exit;
|
||
end;
|
||
|
||
with Helios.OpenSQL('SELECT Cislo FROM ' + tblCZam + ' WHERE Cislo=' + edtOsCislo.Text) do
|
||
if (RecordCount=0) then
|
||
begin
|
||
Helios.Error(#1'Chybn<62> zad<61>n zam<61>stnanec.'#1);
|
||
edtOsCislo.SetFocus;
|
||
Exit;
|
||
end;
|
||
|
||
if (edtOsCislo.Text='') then
|
||
begin
|
||
Helios.Error(#1'Pro evidenci nen<65> zad<61>n zam<61>stnanec.'#1);
|
||
edtOsCislo.SetFocus;
|
||
Exit;
|
||
end;
|
||
|
||
if (edtPrikaz.Text='') then
|
||
begin
|
||
Helios.Error(#1'Pro evidenci nen<65> zad<61>n V<>robn<62> p<><70>kaz.'#1);
|
||
edtPrikaz.SetFocus;
|
||
Exit;
|
||
end;
|
||
{
|
||
if (edtCasHod.Value=0) and (edtCasMin.Value=0) then
|
||
begin
|
||
Helios.Error(#1'Nen<65> zad<61>n <20>as evidovan<61>ch operac<61>.'#1);
|
||
edtCasHod.SetFocus;
|
||
Exit;
|
||
end;
|
||
}
|
||
if (gridOperEvid.RowCount=0) then
|
||
begin
|
||
Helios.Error(#1'K evidenci nejsou vybr<62>ny <20><>dn<64> operace.'#1);
|
||
Exit;
|
||
end;
|
||
|
||
|
||
// if (gridOperEvid.RowCount=0) and not(novyVyr) then
|
||
// btnQuitClick(Sender);
|
||
|
||
if (idVPr>0) or (idDavka>0) then
|
||
begin
|
||
ReseedTable(Helios,tblEvidOper);
|
||
ReseedTable(Helios,tblEvidOpPolozky);
|
||
|
||
jeNovaEvid:= (idHromEvidOp=0);
|
||
|
||
if (idHromEvidOp=0) then
|
||
begin
|
||
lSQL:= 'INSERT ' + tblEvidOper + ' (IdKmenZbozi, IdPrikaz, Mnozstvi, CisloZamest, Datum, CasHod, CasMin, Poznamka, ' + IfThen(evidDavka, 'IdDavka', 'IDDokladOZ') + ') SELECT ';
|
||
if (idKZ>0) and (idDavka=0) then
|
||
lSQL:= lSQL + IntToStr(idKZ)
|
||
else
|
||
lSQL:= lSQL + 'null';
|
||
lSQL:= lSQL + ', ' + IfThen(idVPr>0, idVPr.ToString, 'NULL');
|
||
lSQL:= lSQL + ', ' + StringReplace(FloatToStr(edtKusy.Value),',','.',[rfReplaceAll]) + ',';
|
||
if (idZam>0) then
|
||
lSQL:= lSQL + edtOsCislo.Text
|
||
else
|
||
lSQL:= lSQL + 'null';
|
||
lSQL:= lSQL + ',CONVERT(datetime,N' + QuotedStr(DateToStr(dtDatum.Date) + ' ' + TimeToStr(Now)) + ',104)';
|
||
lSQL:= lSQL + ', ' + StringReplace(FloatToStr(edtCasHod.Value),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ', ' + StringReplace(FloatToStr(edtCasMin.Value),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ', N'+ QuotedStr(verText) + ', ' + IfThen(idDavka>0, idDavka.ToString, idDokladOZ.ToString);
|
||
lSQL:= lSQL + CRLF + 'SELECT SCOPE_IDENTITY()';
|
||
try
|
||
with Helios.OpenSQL(lSQL) do
|
||
if not TryStrToInt(VarToStr(FieldValues(0)),idHromEvidOp) then
|
||
idHromEvidOp:= 0;
|
||
|
||
if (idHromEvidOp>0) then
|
||
begin
|
||
if (davkaObal) then
|
||
begin
|
||
edtObalovna.Text:= TRegEx.Replace(Trim(edtObalovna.Text), '\D', '');
|
||
edtObalovnaDavka.Text:= TRegEx.Replace(Trim(edtObalovnaDavka.Text), '\D', '');
|
||
Helios.ExecSQL('UPDATE ' + tblEvidOper + ' SET Obalovna=N' + QuotedStr(edtObalovna.Text) + ' WHERE ID='+ idHromEvidOp.ToString);
|
||
Helios.ExecSQL('UPDATE ' + tblEvidOper + ' SET ObalovnaDavka=' + edtObalovnaDavka.Text + ' WHERE ID='+ idHromEvidOp.ToString);
|
||
end;
|
||
end;
|
||
|
||
except on E:Exception do
|
||
begin
|
||
Helios.Error(#1'Nelze ulo<6C>it hlavi<76>ku Hromadn<64> evidence operac<61>.'#1 + CRLF + E.Message);
|
||
Exit;
|
||
end;
|
||
end;
|
||
if (idHromEvidOp=0) then
|
||
begin
|
||
Helios.Error(#1'Nelze ulo<6C>it hlavi<76>ku Hromadn<64> evidence operac<61>.'#1);
|
||
Exit;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
if (jeEditace) then
|
||
begin
|
||
// zkus nejdriv pred updatem smazat neplatne evidovane operace (ty co jsem pri oprave zrusil)
|
||
idEvidOperPol:= '';
|
||
for pIdx:=0 to gridOperEvid.RowCount-1 do
|
||
if (gridOperEvid.Cell[colOpEvidIdEvidOp.Index, pIdx].AsInteger<>0) then
|
||
idEvidOperPol:= idEvidOperPol + gridOperEvid.Cell[colOpEvidIdEvidOp.Index, pIdx].AsString + ',';
|
||
|
||
if (RightStr(idEvidOperPol,1)=',') then
|
||
idEvidOperPol:= LeftStr(idEvidOperPol, Length(idEvidOperPol)-1);
|
||
|
||
lSQL:= 'DELETE FROM ' + tblEvidOpPolozky + ' WHERE IdEvidOper=' + IntToStr(idHromEvidOp) + ' AND id NOT IN (' + idEvidOperPol + ')';
|
||
try
|
||
Helios.ExecSQL(lSQL);
|
||
except on E:Exception do
|
||
begin
|
||
Helios.Error(#1'Chyba p<>i maz<61>n<EFBFBD> neplatn<74>ch polo<6C>kek Hromadn<64> evidence operac<61>.'#1 + CRLF + E.Message);
|
||
Exit;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
lSQL:= 'UPDATE ' + tblEvidOper + ' SET Mnozstvi=' + StringReplace(FloatToStr(edtKusy.Value),',','.',[rfReplaceAll]);
|
||
if (idZam>0) then
|
||
lSQL:= lSQL + ', CisloZamest=' + edtOsCislo.Text;
|
||
lSQL:= lSQL + ', Datum=CONVERT(datetime, N' + QuotedStr(DateToStr(dtDatum.Date) + ' ' + TimeToStr(Now)) + ', 104)';
|
||
lSQL:= lSQL + ', CasHod=' + StringReplace(FloatToStr(edtCasHod.Value),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ', CasMin=' + StringReplace(FloatToStr(edtCasMin.Value),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ', Poznamka=N' + QuotedStr(verText);
|
||
lSQL:= lSQL + ' WHERE ID=' + idHromEvidOp.ToString;
|
||
try
|
||
Helios.ExecSQL(lSQL);
|
||
except on E:Exception do
|
||
begin
|
||
Helios.Error(#1'Nelze zm<7A>nit hlavi<76>ku Hromadn<64> evidence operac<61>.'#1 + CRLF + E.Message);
|
||
Exit;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
SetLength(Operace, gridOperEvid.RowCount);
|
||
CCas:= 0;
|
||
for pIdx:=0 to gridOperEvid.RowCount-1 do
|
||
CCas:= CCas + gridOperEvid.Cell[colOpEvidCasS.Index, pIdx].AsFloat; // cas operace v sekundach za 1 ks/str
|
||
|
||
AllCas:= edtCasHod.Value * 3600 + edtCasMin.Value * 60;
|
||
|
||
for pIdx:=0 to gridOperEvid.RowCount-1 do
|
||
begin
|
||
mn:= gridOperEvid.Cell[colOpEvidMnoz.Index, pIdx].AsFloat;
|
||
mnZ:= gridOperEvid.Cell[colOpEvidZmetky.Index, pIdx].AsFloat;
|
||
|
||
Operace[pIdx].NormCas:= gridOperEvid.Cell[colOpEvidNormaMin.Index, pIdx].asFloat; // norma v min na 1 ks/str
|
||
Operace[pIdx].IdPostup:= gridOperEvid.Cell[colOpEvidIdPostup.Index, pIdx].AsInteger;
|
||
Operace[pIdx].Operace:= Trim(gridOperEvid.Cell[colOpEvidCislo.Index, pIdx].AsString);
|
||
if (CCas>0) then
|
||
Operace[pIdx].Koef:= RoundToEx((Operace[pIdx].NormCas*60)/CCas,-4)
|
||
else
|
||
Operace[pIdx].Koef:= 0;
|
||
|
||
lSQL:= '';
|
||
if (jeNovaEvid) then
|
||
begin
|
||
lSQL:= 'INSERT ' + tblEvidOpPolozky + ' (Mnozstvi, MnozstviZmetku, KodZmetku, IdPostup, Operace, Popis, NormCas_S, SkutCas_S, IdEvidOper) SELECT ';
|
||
lSQL:= lSQL + mn.ToString.Replace(',', '.') + ', ';
|
||
lSQL:= lSQL + mnZ.ToString.Replace(',', '.') + ', N';
|
||
lSQL:= lSQL + QuotedStr(gridOperEvid.Cell[colOpEvidKodZavady.Index, pIdx].AsString) + ', ';
|
||
lSQL:= lSQL + gridOperEvid.Cell[colOpEvidIdPostup.Index, pIdx].AsString + ', N' + QuotedStr(gridOperEvid.Cell[colOpEvidCislo.Index, pIdx].AsString) + ',N';
|
||
lSQL:= lSQL + QuotedStr(gridOperEvid.Cell[colOpEvidPopis.Index, pIdx].AsString) + ', ';
|
||
lSQL:= lSQL + StringReplace(FloatToStr(edtKusy.Value * Operace[pIdx].NormCas),',','.',[rfReplaceAll]) + ', ';
|
||
lSQL:= lSQL + StringReplace(FloatToStr(AllCas * Operace[pIdx].Koef),',','.',[rfReplaceAll]) + ', ';
|
||
lSQL:= lSQL + IntToStr(idHromEvidOp);
|
||
end
|
||
else
|
||
begin
|
||
lSQL:= 'UPDATE ' + tblEvidOpPolozky + ' SET Mnozstvi=' + gridOperEvid.Cell[colOpEvidMnoz.Index, pIdx].AsFloat.ToString.Replace(',', '.');
|
||
lSQL:= lSQL + ', MnozstviZmetku=' + gridOperEvid.Cell[colOpEvidZmetky.Index, pIdx].AsFloat.ToString.Replace(',', '.');
|
||
lSQL:= lSQL + ', KodZmetku=N' + QuotedStr(gridOperEvid.Cell[colOpEvidKodZavady.Index, pIdx].AsString);
|
||
lSQL:= lSQL + ', NormCas_S=' + StringReplace(FloatToStr((mn+mnZ) * Operace[pIdx].NormCas),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ', SkutCas_S=' + StringReplace(FloatToStr(AllCas * Operace[pIdx].Koef),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ' WHERE IdEvidOper=' + IntToStr(idHromEvidOp) + ' AND ID=' + gridOperEvid.Cell[colOpEvidIdEvidOp.Index ,pIdx].AsString;
|
||
end;
|
||
try
|
||
if (lSQL<>'') then
|
||
Helios.ExecSQL(lSQL);
|
||
except on E:Exception do
|
||
Helios.Error(#1'Chyba p<>i ukl<6B>d<EFBFBD>n<EFBFBD> polo<6C>ky Hromadn<64> evidence operac<61>.'#1 + CRLF + E.Message);
|
||
end;
|
||
end;
|
||
|
||
dataUlozena:= false;
|
||
if not(jeTest) then
|
||
begin
|
||
lSQL:= 'IF OBJECT_ID(N''dbo.ep_HDC_EvidOper_Hromadna'') IS NOT NULL EXEC dbo.ep_HDC_EvidOper_Hromadna @IdEvidOper=' + IntToStr(idHromEvidOp);
|
||
try
|
||
Helios.ExecSQL(lSQL);
|
||
dataUlozena:= true;
|
||
except on E:Exception do
|
||
Helios.Error(#1'Chyba p<>i evidenci operace Hromadn<64> evidence.'#1 + CRLF + E.Message);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
with Helios.OpenSQL('SELECT * FROM dbo._hdc_TabLog WHERE Typ=10 AND IDPomoc=' + idHromEvidOp.ToString) do
|
||
if (RecordCount>0) and (bidHDCLog>0) then
|
||
Helios.OpenBrowse(bidHDCLog, 'hvw_HDCLog.Typ=10 AND hvw_HDCLog.IDPomoc='+ idHromEvidOp.ToString);
|
||
|
||
if (dataUlozena) then
|
||
begin
|
||
if not(novyVyr or novyClovek) then
|
||
btnQuitClick(Sender)
|
||
else
|
||
begin
|
||
idHromEvidOp:= 0;
|
||
if (novyVyr) then
|
||
begin
|
||
edtPrikaz.Text:= '';
|
||
idVPr:= 0;
|
||
lblKmenStred.Caption:= '';
|
||
lblZbytekKs.Caption:= '';
|
||
edtKusy.Value:= 0;
|
||
edtCasHod.Value:= 0;
|
||
edtCasMin.Value:= 0;
|
||
novyClovek:= true;
|
||
gridOperEvid.ClearRows;
|
||
gridOperPrikaz.ClearRows;
|
||
gridAllEvid.ClearRows;
|
||
end;
|
||
if (novyClovek) then
|
||
begin
|
||
edtOsCislo.Text:= '';
|
||
edtJmeno.Text:= '';
|
||
lblUvazek.Caption:= '0,00';
|
||
lblZbyvCas.Caption:= '0h 00m';
|
||
lblCasNormVP.Caption:= '0.0 min)';
|
||
idZam:= 0;
|
||
end;
|
||
if (novyVyr) then
|
||
edtPrikaz.SetFocus
|
||
else
|
||
if (novyClovek) then
|
||
begin
|
||
edtPrikazExit(Sender);
|
||
edtOsCislo.SetFocus;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnOpAdd1Click(Sender: TObject);
|
||
var i: Integer;
|
||
begin
|
||
if (opVPsel>=0) then
|
||
begin
|
||
if (gridOperPrikaz.Cells[colOpCislo.Index, opVPsel]<>'') then
|
||
begin
|
||
hromAkce:= true;
|
||
gridOperEvid.RowCount:= gridOperEvid.RowCount + 1;
|
||
i:= gridOperEvid.RowCount -1;
|
||
gridOperEvid.Cell[colOpEvidCislo.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpCislo.Index, opVPsel].AsInteger;
|
||
gridOperEvid.Cell[colOpEvidPopis.Index, i].AsString:= gridOperPrikaz.Cell[colOpPopis.Index, opVPsel].AsString;
|
||
gridOperEvid.Cell[colOpEvidIdPostup.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdPostup.Index, opVPsel].AsInteger;
|
||
gridOperEvid.Cell[colOpEvidCasM.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasM.Index, opVPsel].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasS.Index, opVPsel].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidIdEvidOp.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdEvidOp.Index, opVPsel].AsInteger;
|
||
gridOperEvid.Cell[colOpEvidSkutCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpSkutCasS.Index, opVPsel].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, opVPsel].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidZive.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, opVPsel].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidMnozOrig.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, opVPsel].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidNormaMin.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpNormaMin.Index, opVPsel].AsFloat; // norma v min
|
||
|
||
gridOperEvid.Cell[colOpEvidZmetky.Index, i].AsFloat:= 0;
|
||
gridOperEvid.Cell[colOpEvidKodZavady.Index, i].AsString:= '';
|
||
|
||
gridOperPrikaz.DeleteRow(opVPsel);
|
||
gridOperEvid.Sort(colOpEvidCislo.Index, skAscending);
|
||
hromAkce:= false;
|
||
opVPsel:= -1;
|
||
end;
|
||
end;
|
||
PrepoctiCasVP;
|
||
PrepoctiCasEvid;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnOpDel1Click(Sender: TObject);
|
||
var lSQL: string;
|
||
i: Integer;
|
||
ksZad, ksEvid: Extended;
|
||
begin
|
||
if (opEvidSel>=0) then
|
||
begin
|
||
if (gridOperEvid.Cell[colOpEvidCislo.Index,opEvidSel].AsString<>'') then
|
||
begin
|
||
gridOperPrikaz.RowCount:= gridOperPrikaz.RowCount + 1;
|
||
i:= gridOperPrikaz.RowCount-1;
|
||
|
||
gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= edtKusy.Value;
|
||
gridOperPrikaz.Cell[colOpNormaMin.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidNormaMin.Index, opEvidSel].AsFloat; // norma v min
|
||
|
||
gridOperPrikaz.Cell[colOpCislo.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidCislo.Index, opEvidSel].AsInteger;
|
||
gridOperPrikaz.Cell[colOpPopis.Index, i].AsString:= gridOperEvid.Cell[colOpEvidPopis.Index, opEvidSel].AsString;
|
||
gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdPostup.Index, opEvidSel].AsInteger;
|
||
gridOperPrikaz.Cell[colOpCasM.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasM.Index, opEvidSel].AsFloat;
|
||
gridOperPrikaz.Cell[colOpCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasS.Index, opEvidSel].AsFloat;
|
||
gridOperPrikaz.Cell[colOpIdEvidOp.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdEvidOp.Index, opEvidSel].AsInteger;
|
||
gridOperPrikaz.Cell[colOpSkutCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidSkutCasS.Index, opEvidSel].AsFloat;
|
||
|
||
ksZad:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrPost + ' WHERE ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsString);
|
||
lSQL:= 'SELECT SUM(pmz.kusy_odv+pmz.kusy_zmet_neopr) FROM ' + tblPMZ + ' pmz INNER JOIN ' + tblPrPost + ' pp ON (pp.Alt=pmz.AltPrPostup';
|
||
lSQL:= lSQL + ' AND pp.Doklad=pmz.DokladPrPostup AND pp.IDPrikaz=pmz.IDPrikaz) WHERE pp.ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsString;
|
||
ksEvid:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
||
gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat:= ksZad - ksEvid;
|
||
|
||
if (gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat < gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat) then
|
||
gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat;
|
||
|
||
gridOperEvid.DeleteRow(opEvidSel);
|
||
gridOperPrikaz.Sort(colOpCislo.Index, skAscending);
|
||
opEvidSel:= -1;
|
||
end;
|
||
end;
|
||
PrepoctiCasVP;
|
||
PrepoctiCasEvid;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnOpDelVseClick(Sender: TObject);
|
||
var i, vpRadek, evRadek: integer;
|
||
lSQL: string;
|
||
ksZad, ksEvid: Extended;
|
||
begin
|
||
edtKusy.Enabled:= true;
|
||
for evRadek:=0 to gridOperEvid.RowCount-1 do
|
||
begin
|
||
gridOperPrikaz.RowCount:= gridOperPrikaz.RowCount + 1;
|
||
i:= gridOperPrikaz.RowCount-1;
|
||
|
||
gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= edtKusy.Value;
|
||
gridOperPrikaz.Cell[colOpNormaMin.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidNormaMin.Index, evRadek].AsFloat; // norma v min
|
||
|
||
gridOperPrikaz.Cell[colOpCislo.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidCislo.Index, evRadek].AsInteger;
|
||
gridOperPrikaz.Cell[colOpPopis.Index, i].AsString:= gridOperEvid.Cell[colOpEvidPopis.Index, evRadek].AsString;
|
||
gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdPostup.Index, evRadek].AsInteger;
|
||
gridOperPrikaz.Cell[colOpCasM.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasM.Index, evRadek].AsFloat;
|
||
gridOperPrikaz.Cell[colOpCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasS.Index, evRadek].AsFloat;
|
||
gridOperPrikaz.Cell[colOpIdEvidOp.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdEvidOp.Index, evRadek].AsInteger;
|
||
gridOperPrikaz.Cell[colOpSkutCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidSkutCasS.Index, evRadek].AsFloat;
|
||
|
||
ksZad:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT kusy_zad FROM ' + tblPrPost + ' WHERE ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsString);
|
||
lSQL:= 'SELECT SUM(pmz.kusy_odv+pmz.kusy_zmet_neopr) FROM ' + tblPMZ + ' pmz INNER JOIN ' + tblPrPost + ' pp ON (pp.Alt=pmz.AltPrPostup';
|
||
lSQL:= lSQL + ' AND pp.Doklad=pmz.DokladPrPostup AND pp.IDPrikaz=pmz.IDPrikaz) WHERE pp.ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsString;
|
||
ksEvid:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
||
gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat:= ksZad - ksEvid;
|
||
|
||
if (gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat < gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat) then
|
||
gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat;
|
||
|
||
end;
|
||
gridOperEvid.ClearRows;
|
||
NastavGridy;
|
||
gridOperPrikaz.Sort(colOpCislo.Index, skAscending);
|
||
PrepoctiCasVP;
|
||
PrepoctiCasEvid;
|
||
opEvidSel:= -1;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnOpAddVseClick(Sender: TObject);
|
||
var i, vpRadek, evRadek: integer;
|
||
begin
|
||
hromAkce:= true;
|
||
edtKusy.Enabled:= false;
|
||
for vpRadek:=0 to gridOperPrikaz.RowCount-1 do
|
||
begin
|
||
gridOperEvid.RowCount:= gridOperEvid.RowCount + 1;
|
||
i:= gridOperEvid.RowCount-1;
|
||
gridOperEvid.Cell[colOpEvidCislo.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpCislo.Index, vpRadek].AsInteger;
|
||
gridOperEvid.Cell[colOpEvidPopis.Index, i].AsString:= gridOperPrikaz.Cell[colOpPopis.Index, vpRadek].AsString;
|
||
gridOperEvid.Cell[colOpEvidIdPostup.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdPostup.Index, vpRadek].AsInteger;
|
||
gridOperEvid.Cell[colOpEvidCasM.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasM.Index, vpRadek].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidNormaMin.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpNormaMin.Index, vpRadek].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasS.Index, vpRadek].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidIdEvidOp.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdEvidOp.Index, vpRadek].AsInteger;
|
||
gridOperEvid.Cell[colOpEvidSkutCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpSkutCasS.Index, vpRadek].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, vpRadek].AsFloat;
|
||
// gridOperEvid.Cell[colOpEvidZive.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, vpRadek].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidMnozOrig.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, vpRadek].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidZmetky.Index, i].AsFloat:= 0;
|
||
gridOperEvid.Cell[colOpEvidKodZavady.Index, i].AsString:= '';
|
||
end;
|
||
gridOperPrikaz.ClearRows;
|
||
NastavGridy;
|
||
gridOperEvid.Sort(colOpEvidCislo.Index, skAscending);
|
||
PrepoctiCasVP;
|
||
PrepoctiCasEvid;
|
||
opVPsel:= -1;
|
||
hromAkce:= false;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnQuitClick(Sender: TObject);
|
||
begin
|
||
Close;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.btnUkazOperClick(Sender: TObject);
|
||
begin
|
||
if (idZam>0) then
|
||
Helios.OpenBrowse(bidEvidOp,'Datum=CONVERT(datetime,N' + QuotedStr(DateToStr(dtDatum.Date)) + ',104) AND Zamestnanec=' + IntToStr(idZam));
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtCasHodExit(Sender: TObject);
|
||
begin
|
||
PrepoctiCasVP;
|
||
// PrepoctiCasEvid;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtCasMinExit(Sender: TObject);
|
||
begin
|
||
PrepoctiCasVP;
|
||
// PrepoctiCasEvid;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtDavkaButtonClick(Sender: TObject);
|
||
var podm, lSQL, oldSkl: string;
|
||
begin
|
||
idDokladOZ:= 0;
|
||
if (Helios.YesNo('Vyb<79>r<EFBFBD>te doklad P<>EVODKY (P<>) ?', true)) then
|
||
begin
|
||
oVar1:= edtDavka.Text;
|
||
|
||
oldSkl:= Helios.Sklad;
|
||
Helios.SetSklad(sklP12Obal);
|
||
podm:= 'TabDokladyZbozi.DruhPohybuZbo=0 AND TabDokladyZbozi.RadaDokladu=N' + radaOdvP12Vosk.QuotedString + ' AND TabDokladyZbozi.IDSklad=N' + sklP12Obal.QuotedString;
|
||
podm:= podm + ' AND DATEDIFF(day, TabDokladyZbozi.DatPorizeni, GETDATE())<8 AND TabDokladyZbozi.Realizovano=1 AND TabDokladyZbozi.Uctovano=0';
|
||
if Helios.Prenos2(bidDZPrij, 'TabDokladyZbozi.ID', 'TabDokladyZbozi.DatPorizeni', oVar1, oVar2, podm, 'Vyberte p<><70>jemku P12', true, false, false, 1) then
|
||
begin
|
||
evidDavka:= false;
|
||
idDokladOZ:= VarToStr(oVar1).ToInteger;
|
||
edtDavka.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT PoradoveCislo FROM ' + tblDZ + ' WHERE ID=' + idDokladOZ.ToString);
|
||
edtDavkaExit(Sender);
|
||
end;
|
||
Helios.SetSklad(oldSkl);
|
||
end
|
||
else
|
||
begin
|
||
oVar2:= edtDavka.Text;
|
||
if Helios.Prenos2(bidDavky, 'hvw_Davky.ID', 'hvw_Davky.KodDavky', oVar1, oVar2, '', 'Vyberte v<>robn<62> D<>vku', true, false, false, 1) then
|
||
begin
|
||
evidDavka:= true;
|
||
edtDavka.Text:= VarToStr(oVar2);
|
||
edtDavkaExit(Sender);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtDavkaExit (Sender: TObject);
|
||
var idDavkaRodic, i: integer;
|
||
lSQL: string;
|
||
begin
|
||
idDavka:= 0;
|
||
idVPr:= 0;
|
||
idVPrOld:= 0;
|
||
davkaObal:= false;
|
||
edtDavka.Text:= Trim(edtDavka.Text);
|
||
edtDavka.Text:= TRegEx.Replace(edtDavka.Text, '\D', '');
|
||
if (edtDavka.Text<>'') then
|
||
begin
|
||
if (edtDavka.Text.Length=6) or (idDokladOZ>0) then
|
||
begin
|
||
i:= 0;
|
||
vicPrikazu:= false;
|
||
if not(TryStrToInt(edtDavka.Text, i)) then
|
||
i:= 0;
|
||
if (i>0) then
|
||
begin
|
||
if (idDokladOZ=0) then
|
||
begin
|
||
lSQL:= 'SELECT ID FROM ' + tblDZ + ' WHERE IDSklad=N' + sklP12Obal.QuotedString + ' AND RadaDokladu=N' + radaOdvP12Vosk.QuotedString + ' AND PoradoveCislo=' + i.ToString;
|
||
idDokladOZ:= helUtils.getHeliosIntVal(Helios, 0, lSQL);
|
||
end;
|
||
|
||
if (idDokladOZ>0) then
|
||
lSQL:= 'SELECT IDPrikaz FROM ' + tblDZ + ' WHERE ID=' + idDokladOZ.ToString
|
||
else
|
||
begin
|
||
lSQL:= 'SELECT d.IDPrikaz FROM ' + tblDZ + ' d INNER JOIN ' + tblVPr + ' vpr ON (vpr.ID=d.IDPrikaz) INNER JOIN ' + tblPrikazRada + ' rvpr ON (rvpr.Rada=vpr.Rada)';
|
||
lSQL:= lSQL + ' WHERE rvpr.RadaDokl_OdvedeniPrikazu=d.RadaDokladu AND rvpr.PrijemVyrDil_SkladProGenHlavDZ=d.IDSklad AND rvpr.Rada=N' + radaPrikP12Vosk.QuotedString;
|
||
lSQL:= lSQL + ' AND d.PoradoveCislo=' + i.ToString;
|
||
end;
|
||
idVPrOld:= helUtils.getHeliosIntVal (Helios, 0, lSQL);
|
||
idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikazVyssi FROM ' + tblVPr + ' WHERE ID=' + idVPrOld.ToString);
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
idVPr:= 0;
|
||
vicPrikazu:= false;
|
||
idDavkaRodic:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDRodic FROM ' + tblDavky + ' WHERE KodDavky=' + edtDavka.Text);
|
||
if (idDavkaRodic=0) then
|
||
idDavka:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT ID FROM ' + tblDavky + ' WHERE KodDavky=' + edtDavka.Text);
|
||
if (LeftStr(edtDavka.Text,3)='120') then
|
||
begin
|
||
davkaObal:= true;
|
||
with Helios.OpenSQL('SELECT ID FROM ' + tblDavky + ' WHERE IDRodic=' + idDavka.ToString) do
|
||
if (RecordCount=0) then
|
||
idVPr:= helUtils.getHeliosIntVal (Helios, 0, 'SELECT IDPrikazVyssi FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString)
|
||
else
|
||
begin
|
||
vicPrikazu:= true;
|
||
idVPr:= 0;
|
||
idVPrOld:= 0;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
if not(vicPrikazu) and (idVPr>0) then
|
||
begin
|
||
edtPrikaz.Text:= helUtils.getHeliosStrVal (Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString);
|
||
edtPrikazExit (Sender);
|
||
end
|
||
else
|
||
if (edtPrikaz.CanFocus) then
|
||
edtPrikaz.SetFocus;
|
||
end
|
||
else
|
||
begin
|
||
edtPrikaz.Text:= '';
|
||
edtNazevZbozi.Text:= '';
|
||
lblKmenStred.Caption:= '';
|
||
lblZbytekKs.Caption:= '';
|
||
idVPr:= 0;
|
||
idVPrOld:= 0;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtJmenoButtonClick (Sender: TObject);
|
||
var z: integer;
|
||
podm: ShortString;
|
||
begin
|
||
podm:= '';
|
||
if (edtJmeno.Text<>'') and (edtOsCislo.Text='') then
|
||
podm:= 'TabCisZam.Prijmeni LIKE N' + QuotedStr(Trim(edtJmeno.Text) + '%');
|
||
if Helios.Prenos(bidCisZam, 'Cislo', oVar1, podm, 'Vyberte zam<61>stnance', true) then
|
||
begin
|
||
z:= VarToStr(oVar1).ToInteger;
|
||
edtOsCislo.Text:= StringOfChar('0',6-Length(IntToStr(z))) + IntToStr(z);
|
||
idZam:= 0;
|
||
with Helios.OpenSQL('SELECT id FROM TabCisZam WHERE Cislo=' + edtOsCislo.Text) do
|
||
if (RecordCount>0) then
|
||
idZam:= StrToInt(VarToStr(FieldValues(0)));
|
||
if (idZam>0) then
|
||
begin
|
||
UdajeZamest(0,idZam,true);
|
||
if (edtKusy.CanFocus) then
|
||
edtKusy.SetFocus;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
edtOsCislo.Text:= '';
|
||
edtJmeno.Text:= '';
|
||
idZam:= 0;
|
||
Helios.Error('Nebyl vybr<62>n <20><>dn<64> zam<61>stnanec.');
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtKusyChange(Sender: TObject);
|
||
var zb: extended;
|
||
begin
|
||
if (lblZbytekKs.Caption<>'') then
|
||
begin
|
||
if not(TryStrToFloat(lblZbytekKs.Caption, zb)) then
|
||
zb:= 0;
|
||
if (edtKusy.Value>zb) or (edtKusy.Value<0) then
|
||
begin
|
||
Helios.Error(#1'Chybn<62> zadan<61> odv<64>d<EFBFBD>n<EFBFBD> mno<6E>stv<74>.'#1);
|
||
edtKusy.SetFocus;
|
||
edtKusy.SelectAll;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtKusyExit(Sender: TObject);
|
||
var i: integer;
|
||
begin
|
||
if (edtKusy.Modified) then
|
||
begin
|
||
if (gridOperEvid.RowCount=0) and (gridOperPrikaz.RowCount>0) then
|
||
begin
|
||
for i:=0 to gridOperPrikaz.RowCount-1 do
|
||
begin
|
||
gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= edtKusy.Value;
|
||
if (gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat > gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat) then
|
||
gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnozZive.Index, i].AsFloat;
|
||
end;
|
||
end;
|
||
if (gridOperEvid.RowCount>0) then
|
||
Helios.Error(#1'Zm<5A>na mno<6E>stv<74> nen<65> mo<6D>n<EFBFBD> pokud m<>te vybr<62>ny evidovan<61> operace'#1);
|
||
PrepoctiCasVP;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
function ZiskejCasMin(txt: ShortString): Extended;
|
||
var h,m: ShortString;
|
||
begin
|
||
h:= LeftStr(txt,Pos('h',txt)-1);
|
||
m:= MidStr(txt,Pos(' ',txt)+1,255);
|
||
m:= LeftStr(m,Pos('m',m)-1);
|
||
result:= (StrToInt(h)*60) + StrToInt(m);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.UdajeZamest(cZam, idZamest: integer; zbytekUvaz: boolean);
|
||
var prjm: string;
|
||
lSQL: string;
|
||
cas: Extended;
|
||
casH: integer;
|
||
begin
|
||
prjm:= '';
|
||
if (cZam>0) then
|
||
with Helios.OpenSQL('SELECT PrijmeniJmeno,id FROM ' + tblCZam + ' WHERE Cislo=' + IntToStr(cZam)) do
|
||
if (RecordCount=1) then
|
||
begin
|
||
if (idZamest=0) then
|
||
begin
|
||
idZamest:= StrToInt(VarToStr(FieldValues(1)));
|
||
idZam:= idZamest;
|
||
end;
|
||
prjm:= VarToStr(FieldValues(0));
|
||
end;
|
||
|
||
if (idZamest>0) then
|
||
begin
|
||
with Helios.OpenSQL('SELECT ISNULL(DenniUvazek,0) FROM ' + tblZamMzd + ' WHERE IdObdobi=' + IntToStr(idMObd) + ' AND ZamestnanecID=' + IntToStr(idZamest)) do
|
||
if (RecordCount=1) then
|
||
lblUvazek.Caption:= FormatFloat('#0.00',StrToFloat(VarToStr(FieldValues(0))));
|
||
|
||
with Helios.OpenSQL('SELECT PrijmeniJmeno FROM ' + tblCZam + ' WHERE id=' + IntToStr(idZamest)) do
|
||
if (RecordCount=1) then
|
||
prjm:= VarToStr(FieldValues(0));
|
||
end;
|
||
if (idZamest>0) or (cZam>0) then
|
||
edtJmeno.Text:= prjm;
|
||
|
||
if (zbytekUvaz) and (idZam>0) and (dtDatum.Text<>'') and (edtOsCislo.Text<>'') then
|
||
begin
|
||
lblEvid.Caption:= '0h 00m';
|
||
lSQL:= 'SELECT ISNULL(SUM(CasHod*60+CasMin),0) FROM ' + tblEvidOper + ' WHERE CisloZamest=' + edtOsCislo.Text;
|
||
lSQL:= lSQL + ' AND CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,Datum)))=CONVERT(datetime,N';
|
||
lSQL:= lSQL + QuotedStr(DateTimeToStr(dtDatum.Date)) + ',104)';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if RecordCount>0 then
|
||
if not VarIsNull(FieldValues(0)) then
|
||
begin
|
||
cas:= StrToFloat(VarToStr(FieldValues(0)));
|
||
casH:= Trunc(cas/60);
|
||
lblEvid.Caption:= IntToStr(casH) + 'h ' + IntToStr(Trunc(cas-casH*60)) + 'm';
|
||
cas:= StrToFloat(lblUvazek.Caption)*60 - ZiskejCasMin(lblEvid.Caption);
|
||
casH:= Trunc(cas/60);
|
||
lblZbyvCas.Caption:= IntToStr(casH) + 'h ' + IntToStr(Trunc(cas-casH*60)) + 'm';
|
||
end;
|
||
end;
|
||
NactiJizEvidOperace;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtOsCisloButtonClick(Sender: TObject);
|
||
var z: integer;
|
||
begin
|
||
if Helios.Prenos(bidCisZam, 'Cislo', oVar1, '', 'Vyberte zam<61>stnance', True) then
|
||
begin
|
||
z:= VarToStr(oVar1).ToInteger;
|
||
edtOsCislo.Text:= StringOfChar('0', 6-Length(IntToStr(z))) + IntToStr(z);
|
||
idZam:= 0;
|
||
with Helios.OpenSQL('SELECT id FROM TabCisZam WHERE Cislo=' + edtOsCislo.Text) do
|
||
if (RecordCount>0) then
|
||
idZam:= StrToInt(VarToStr(FieldValues(0)));
|
||
if (idZam>0) then
|
||
UdajeZamest(0,idZam,true);
|
||
end
|
||
else
|
||
Helios.Error('Nebyl vybr<62>n <20><>dn<64> zam<61>stnanec.');
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtOsCisloExit(Sender: TObject);
|
||
var z: integer;
|
||
begin
|
||
edtOsCislo.Text:= Trim(edtOsCislo.Text);
|
||
if (edtOsCislo.Text<>'') then
|
||
begin
|
||
try
|
||
z:= StrToInt(edtOsCislo.Text);
|
||
edtOsCislo.Text:= StringOfChar('0', 6-Length(IntToStr(z))) + IntToStr(z);
|
||
if (edtOsCislo.Text<>'') then
|
||
UdajeZamest(StrToInt(edtOsCislo.Text), 0, true);
|
||
except
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
idZam:= 0;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtOsCisloKeyPress(Sender: TObject; var Key: Char);
|
||
begin
|
||
if not(Key in ['0'..'9',Chr(VK_BACK),Chr(VK_PRIOR),Chr(VK_NEXT)]) then
|
||
Key:= #0;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtSmenaButtonClick(Sender: TObject);
|
||
begin
|
||
if Helios.Prenos(bidCSmen, 'kod', oVar1, '', 'Vyberte Sm<53>nu', True) then
|
||
begin
|
||
edtSmena.Text:= VarToStr(oVar1);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
function TformHrOdvOper.CasDleTPV(var casS,casM,casH: Extended): boolean;
|
||
var lSQL: WideString;
|
||
begin
|
||
Result:= false;
|
||
lSQL:= 'ISNULL(SUM(p.TAC_P_S+p.TBC_P_S+p.TEC_P_S),0), ISNULL(SUM(p.TAC_P_N+p.TBC_P_N+p.TEC_P_N),0), ';
|
||
lSQL:= lSQL + 'ISNULL(SUM(p.TAC_P_H+p.TBC_P_H+p.TEC_P_H),0)';
|
||
lSQL:= 'SELECT ' + lSQL + ' FROM ' + tblPrikaz + ' p WHERE ';
|
||
if (idKZ>0) then
|
||
begin
|
||
lSQL:= lSQL + 'p.IDTabKmen=' + IntToStr(idKZ);
|
||
lSQL:= lSQL + ' AND p.StavPrikazu IN (30,40) AND p.kusy_zive>0';
|
||
end
|
||
else
|
||
lSQL:= '';
|
||
if (lSQL<>'') then
|
||
with Helios.OpenSQL(lSQL) do
|
||
begin
|
||
casS:= StrToFloat(VarToStr(FieldValues(0)));
|
||
casM:= StrToFloat(VarToStr(FieldValues(1)));
|
||
casH:= StrToFloat(VarToStr(FieldValues(2)));
|
||
result:= true;
|
||
end;
|
||
end;
|
||
|
||
procedure TformHrOdvOper.dtDatumChange(Sender: TObject);
|
||
var sql: WideString;
|
||
begin
|
||
sql:= 'SELECT IdObdobi FROM ' + tblMzdObd + ' WHERE Rok=' + IntToStr(YearOf(dtDatum.Date));
|
||
sql:= sql + ' AND Mesic=' + IntToStr(MonthOf(dtDatum.Date));
|
||
with Helios.OpenSQL(sql) do
|
||
if RecordCount=1 then
|
||
idMObd:= StrToInt(VarToStr(FieldValues(0)));
|
||
if (idZam>0) then
|
||
UdajeZamest(0,idZam,true);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.PrepoctiCasVP;
|
||
var c: Extended;
|
||
i: integer;
|
||
begin
|
||
c:= 0;
|
||
if (gridOperPrikaz.RowCount>0) and (gridOperPrikaz.Columns.Count>0) then
|
||
for i:=0 to gridOperPrikaz.RowCount-1 do
|
||
c:= c + gridOperPrikaz.Cell[colOpNormaMin.Index, i].AsFloat;
|
||
lblCasNormVP.Caption:= FormatFloat('##,##0.##',c * edtKusy.Value) + ' min = ' + FormatFloat('##,##0.##', helUtils.RoundToEX(((c * edtKusy.Value)/60),-2)) + ' hod)';
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.PrepoctiCasEvid;
|
||
var c, norma, normaEvid: extended;
|
||
i, ksRadek: integer;
|
||
begin
|
||
c:= 0;
|
||
norma:= 0;
|
||
normaEvid:= 0;
|
||
if (gridOperEvid.RowCount>0) and (gridOperEvid.Columns.Count>0) then
|
||
for i:=0 to gridOperEvid.RowCount-1 do
|
||
begin
|
||
c:= c + gridOperEvid.Cell[colOpEvidNormaMin.Index, i].AsFloat; // norma v min
|
||
norma:= norma + gridOperEvid.Cell[colOpEvidCasS.Index, i].AsFloat; // norma v sek
|
||
ksRadek:= gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsInteger + gridOperEvid.Cell[colOpEvidZmetky.Index, i].AsInteger;
|
||
normaEvid:= normaEvid + (gridOperEvid.Cell[colOpEvidNormaMin.Index, i].AsFloat * ksRadek);
|
||
end;
|
||
norma:= norma * edtKusy.Value;
|
||
lblCasNormEvid.Caption:= FormatFloat('##,##0.##', normaEvid) + ' min = ' + FormatFloat('##,##0.##', helUtils.RoundToEX(((normaEvid)/60),-2)) + ' hod)';
|
||
if (edtCasHod.Value<>0) or (edtCasMin.Value<>0) then
|
||
lblPlneni.Caption:= FloatToStr(RoundToEx((normaEvid/((edtCasHod.Value*3600) + (edtCasMin.Value)*60))*100,0)) + ' %';
|
||
end;
|
||
|
||
|
||
|
||
function TformHrOdvOper.NactiOperace;
|
||
var lSQL: string;
|
||
tStr: string;
|
||
idx, vpOper, idPrP: integer;
|
||
casMJMin, prumSazba, mzdaNorm, n, ksEvid, operMin, ksZiv, ksZad: Extended;
|
||
begin
|
||
result:= false;
|
||
if (idVPr=0) then
|
||
Exit;
|
||
|
||
lblCasNormVP.Caption:= '0.0 min = 0.0 hod)';
|
||
{
|
||
if CasDleTPV(sumCas_S,sumCas_M,sumCas_H) then
|
||
begin
|
||
if (sumCas_H<=0.1) then
|
||
begin
|
||
if (sumCas_M<=0.1) then
|
||
begin
|
||
edtCasCelkemMJ.Value:= RoundToEX(sumCas_S, -2);
|
||
lbl8.Caption:= 'sek';
|
||
end
|
||
else
|
||
begin
|
||
edtCasCelkemMJ.Value:= RoundToEX(sumCas_M, -2);
|
||
lbl8.Caption:= 'min';
|
||
end
|
||
end
|
||
else
|
||
begin
|
||
edtCasCelkemMJ.Value:= RoundToEX(sumCas_H, -2);
|
||
lbl8.Caption:= 'hod';
|
||
end;
|
||
end;
|
||
}
|
||
mzdaNorm:= 0;
|
||
n:= 0;
|
||
lSQL:= 'SELECT LTRIM(RTRIM(pp.Operace)), pp.Nazev, pp.TAC_N, pp.TAC_Obsluhy_S, pp.ID, pp.kusy_zive, pp.kusy_zad FROM ' + tblPrPost + ' pp INNER JOIN ' + tblPostup;
|
||
lSQL:= lSQL + ' p ON (p.Operace=pp.Operace AND pp.typ=p.typ AND pp.Nazev=p.Nazev AND pp.dilec=p.dilec AND p.ZmenaDo IS NULL)';
|
||
lSQL:= lSQL + ' WHERE pp.IDOdchylkyDo IS NULL AND pp.dilec=' + idKZ.ToString + ' AND pp.IDPrikaz=' + idVPr.ToString;
|
||
lSQL:= lSQL + ' AND pp.kusy_zad>ISNULL( (SELECT SUM(pmz.kusy_odv+pmz.kusy_zmet_neopr) FROM ' + tblPMZ + ' pmz WHERE pmz.IDPrikaz=' + idVPr.ToString;
|
||
lSQL:= lSQL + ' AND pmz.DokladPrPostup=pp.Doklad AND pmz.AltPrPostup=pp.Alt), 0)';
|
||
lSQL:= lSQL + ' ORDER BY TRY_PARSE(LTRIM(RTRIM(pp.Operace)) AS INT)';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount>0) then
|
||
begin
|
||
gridOperPrikaz.ClearRows;
|
||
gridOperPrikaz.RowCount:= RecordCount;
|
||
First;
|
||
vpOper:= 0;
|
||
while not(EOF) do
|
||
begin
|
||
idPrP:= VarHodnota(FieldValues(4), 0);
|
||
ksZiv:= VarHodnota(FieldValues(5), 0.0);
|
||
ksZad:= VarHodnota(FieldValues(6), 0.0);
|
||
operMin:= VarHodnota(FieldValues(2), 0.0);
|
||
if (idDavka>0) then
|
||
begin
|
||
if (ksZiv>ksDavka) then
|
||
ksZiv:= ksDavka;
|
||
if (ksZad>ksDavka) then
|
||
ksZad:= ksDavka;
|
||
end;
|
||
gridOperPrikaz.Cell[colOpMnoz.Index, vpOper].AsFloat:= ksZiv; // ks zive na operaci
|
||
gridOperPrikaz.Cell[colOpCislo.Index, vpOper].AsString:= VarHodnota(FieldValues(0), ''); // cislo operace
|
||
gridOperPrikaz.Cell[colOpPopis.Index, vpOper].AsString:= VarHodnota(FieldValues(1), ''); // nazev
|
||
gridOperPrikaz.Cell[colOpCasM.Index, vpOper].AsFloat:= operMin; // cas za operaci v min
|
||
gridOperPrikaz.Cell[colOpNormaMin.Index, vpOper].AsFloat:= operMin; // cas za operaci v min
|
||
n:= n + gridOperPrikaz.Cell[colOpCasM.Index, vpOper].AsFloat;
|
||
gridOperPrikaz.Cell[colOpCasS.Index, vpOper].AsFloat:= VarHodnota(FieldValues(3), 0.0); // cas za operaci v sec
|
||
gridOperPrikaz.Cell[colOpIdPostup.Index, vpOper].AsInteger:= idPrP; // idPostup v TPV
|
||
gridOperPrikaz.Cell[colOpIdEvidOp.Index, vpOper].AsInteger:= 0; // idEvidOperPol=0 pri importu operaci z TPV
|
||
|
||
lSQL:= 'SELECT SUM(pmz.kusy_odv+pmz.kusy_zmet_neopr) FROM ' + tblPMZ + ' pmz INNER JOIN ' + tblPrPost + ' pp ON (pp.Alt=pmz.AltPrPostup';
|
||
lSQL:= lSQL + ' AND pp.Doklad=pmz.DokladPrPostup AND pp.IDPrikaz=pmz.IDPrikaz) WHERE pp.ID=' + gridOperPrikaz.Cell[colOpIdPostup.Index, vpOper].AsString;
|
||
if (idDavka>0) then
|
||
lSQL:= lSQL + ' AND pmz.ID IN (SELECT ID FROM ' + tblPMZE + ' WHERE _Davka=N' + QuotedStr(edtDavka.Text) + ')';
|
||
ksEvid:= helUtils.getHeliosFloatVal(Helios, 0, lSQL);
|
||
gridOperPrikaz.Cell[colOpMnozZive.Index, vpOper].AsFloat:= ksZad - ksEvid;
|
||
|
||
if (gridOperPrikaz.Cell[colOpMnozZive.Index, vpOper].AsFloat < gridOperPrikaz.Cell[colOpMnoz.Index, vpOper].AsFloat) then
|
||
gridOperPrikaz.Cell[colOpMnoz.Index, vpOper].AsFloat:= gridOperPrikaz.Cell[colOpMnozZive.Index, vpOper].AsFloat;
|
||
|
||
if (gridOperPrikaz.Cell[colOpMnozZive.Index, vpOper].AsFloat>0) then
|
||
Inc(vpOper);
|
||
Next;
|
||
end;
|
||
gridOperPrikaz.RowCount:= vpOper-1;
|
||
result:= true;
|
||
gridOperPrikaz.Visible:= true;
|
||
lblNormaKs.Caption:= '(norma ' + FormatFloat('##,##0.###', n) + ' min / ' + helUtils.getHeliosStrVal(Helios, '', 'SELECT MJevidence FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString) + ')';
|
||
end;
|
||
|
||
// edtKusy.SelStart:= 0;
|
||
// edtKusy.SelLength:= Length(edtKusy.Text);
|
||
// edtKusy.SetFocus;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtPrikazButtonClick(Sender: TObject);
|
||
var podm: string;
|
||
begin
|
||
idKZ:= 0;
|
||
podm:= 'TabPrikaz.StavPrikazu=30';
|
||
if (filtrRada<>'') then
|
||
podm:= podm + ' AND TabPrikaz.Rada=N' + filtrRada.QuotedString;
|
||
|
||
if (idDavka>0) and (davkaObal) then
|
||
begin
|
||
podm:= podm + ' AND TabPrikaz.ID';
|
||
if not(vicPrikazu) then
|
||
podm:= podm + '=' + idVPr.ToString
|
||
else
|
||
podm:= podm + ' IN (SELECT IDPrikazVyssi FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString + ' OR IDRodic=' + idDavka.ToString + ')';
|
||
end;
|
||
idVPr:= 0;
|
||
|
||
if Helios.Prenos(bidVyrPrik,'ID', oVar1, podm, 'Vyberte V<>robn<62> p<><70>kaz',True) then
|
||
begin
|
||
idVPr:= VarToStr(oVar1).ToInteger;
|
||
edtPrikaz.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString);
|
||
idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString);
|
||
VyplnDataDleKZ;
|
||
end;
|
||
if (edtOsCislo.CanFocus) then
|
||
edtOsCislo.SetFocus;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtVyrobekClick(Sender: TObject);
|
||
begin
|
||
edtPrikazButtonClick(Sender);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.VyplnDataDleKZ;
|
||
var lSQL,msg: string;
|
||
tStr: ShortString;
|
||
idx,idx2,i: integer;
|
||
begin
|
||
msg:= '';
|
||
if (idKZ>0) then
|
||
begin
|
||
gridOperPrikaz.ClearRows;
|
||
gridOperEvid.ClearRows;
|
||
NastavGridy;
|
||
lSQL:= 'SELECT SkupZbo, RegCis, Nazev1, ISNULL(KmenoveStredisko,' + QuotedStr('') + ') FROM ' + tblKZ;
|
||
lSQL:= lSQL + ' WHERE id=' + IntToStr(idKZ);
|
||
with Helios.OpenSQL(lSQL) do
|
||
begin
|
||
edtNazevZbozi.Text:= VarToStr(FieldValues(0)) + ' ' + VarToStr(FieldValues(1)) + ' ' + VarToStr(FieldValues(2));
|
||
lblKmenStred.Caption:= VarToStr(FieldValues(3));
|
||
end;
|
||
NactiOperace;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.VyplnDataDleVPr;
|
||
var lSQL,msg: string;
|
||
tStr: ShortString;
|
||
idx,idx2,i: integer;
|
||
begin
|
||
msg:= '';
|
||
if (idVPr>0) then
|
||
begin
|
||
idKZ:= helUtils.getHeliosIntVal(Helios, 0 ,'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString);
|
||
gridOperPrikaz.ClearRows;
|
||
gridOperEvid.ClearRows;
|
||
NastavGridy;
|
||
lSQL:= 'SELECT RegCis, Nazev1, ISNULL(KmenoveStredisko, N'''') FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString;
|
||
with Helios.OpenSQL(lSQL) do
|
||
begin
|
||
edtNazevZbozi.Text:= VarToStr(FieldValues(0)) + ' / ' + VarToStr(FieldValues(1));
|
||
lblKmenStred.Caption:= VarToStr(FieldValues(2));
|
||
end;
|
||
NactiOperace;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtPrikazExit (Sender: TObject);
|
||
var sql: string;
|
||
begin
|
||
idVPr:= 0;
|
||
edtPrikaz.Text:= Trim(edtPrikaz.Text);
|
||
edtPrikaz.Text:= UpperCase(edtPrikaz.Text);
|
||
if (edtPrikaz.Text<>'') then
|
||
begin
|
||
if (IsNumeric(edtPrikaz.Text)) then
|
||
idVPr:= StrToInt(edtPrikaz.Text);
|
||
if (Pos('-',edtPrikaz.Text)>0) and (idVPr=0) then
|
||
idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrikaz + ' WHERE RadaPrikaz=N' + QuotedStr(edtPrikaz.Text));
|
||
if (LeftStr(edtPrikaz.Text,1).ToUpper='P') and (filtrRada<>'') then
|
||
if (IsNumeric(MidStr(edtPrikaz.Text,2,25))) then
|
||
idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT ID FROM ' + tblPrikaz + ' WHERE ID=' + MidStr(edtPrikaz.Text,2,25) + ' AND Rada=N' + filtrRada.QuotedString);
|
||
|
||
if (idVPr>0) and (helUtils.HeliosExistsTest(Helios, tblPrikaz, 'ID=' + idVPr.ToString + IfThen(filtrRada<>'', ' AND Rada=N' + filtrRada.QuotedString, ''))) then
|
||
begin
|
||
if (idVPr<>idVPrOld) then
|
||
edtKusy.Value:=0;
|
||
idVPrOld:= idVPr;
|
||
|
||
edtPrikaz.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT RadaPrikaz FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString);
|
||
zbytekKs:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT kusy_zive FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString);
|
||
|
||
ksDavka:= 0;
|
||
if (idDavka>0) then
|
||
ksDavka:= helUtils.getHeliosFloatVal(Helios, 0, 'SELECT Mnozstvi FROM ' + tblDavky + ' WHERE ID=' + idDavka.ToString);
|
||
|
||
if (idDokladOZ>0) and (radaOdvP12Vosk<>'') then
|
||
begin
|
||
idVPrOld:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikaz FROM ' + tblDZ + ' WHERE ID=' + idDokladOZ.ToString);
|
||
idVPr:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDPrikazVyssi FROM ' + tblVPr + ' WHERE ID=' + idVPrOld.ToString);
|
||
|
||
sql:= 'SELECT ISNULL(SUM(p.Mnozstvi),0) FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE d.DruhPohybuZbo=0 AND p.IDPrikaz=' + idVPrOld.ToString;
|
||
sql:= sql + ' AND d.IDSklad=N' + sklP12Obal.QuotedString + ' AND d.RadaDokladu=N' + radaOdvP12Vosk.QuotedString + ' AND d.Realizovano=1 AND p.TypVyrobnihoDokladu=0';
|
||
|
||
sql:= 'SELECT ISNULL(SUM(Mnozstvi),0) FROM ' + tblEvidOper + ' WHERE IDPrikaz=' + idVPr.ToString;
|
||
|
||
ksDavka:= helUtils.getHeliosFloatVal(Helios, 0, sql);
|
||
end;
|
||
if (zbytekKs>ksDavka) and (ksDavka>0) then
|
||
zbytekKs:= ksDavka;
|
||
|
||
lblZbytekKs.Caption:= FormatFloat('##,##0.#', zbytekKs);
|
||
gridOperPrikaz.ClearRows;
|
||
gridOperEvid.ClearRows;
|
||
NastavGridy;
|
||
PrepoctiCasEvid;
|
||
idKZ:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT IDTabKmen FROM ' + tblPrikaz + ' WHERE ID=' + idVPr.ToString);
|
||
edtNazevZbozi.Text:= helUtils.getHeliosStrVal(Helios, '', 'SELECT Nazev1 FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString);
|
||
evidMJ:= helUtils.getHeliosStrVal(Helios, '', 'SELECT MJevidence FROM ' + tblKZ + ' WHERE ID=' + idKZ.ToString);
|
||
lblZbyvaKs.Caption:= 'Zb<5A>v<EFBFBD> (' + evidMJ + ')';
|
||
lblVyrobeneKs.Caption:= 'Vyroben<65> ' + evidMJ + ' v<>. zmetk<74>:';
|
||
colOpEvidMnoz.Header.Caption:= evidMJ + ' Dobr<62>';
|
||
VyplnDataDleVPr;
|
||
end;
|
||
if (edtOsCislo.CanFocus) then
|
||
edtOsCislo.SetFocus;
|
||
// SendMessage(Handle, WM_NEXTDLGCTL, WPARAM(edtOsCislo.Handle), MakeLParam(Ord(True), 0));
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.edtPrikazKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
begin
|
||
if Key=VK_RETURN then
|
||
edtPrikazExit(Sender);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.NastavGridy;
|
||
var i:integer;
|
||
begin
|
||
{
|
||
gridOperPrikaz.Font.Name:= Helios.Font;
|
||
gridOperPrikaz.Font.Size:= lbl1.Font.Size;
|
||
for i:=0 to gridOperPrikaz.Columns.Count-1 do
|
||
begin
|
||
gridOperPrikaz.Columns[i].Font.Name:= Helios.Font;
|
||
gridOperPrikaz.Columns[i].Font.Size:= lbl1.Font.Size;
|
||
end;
|
||
|
||
gridOperEvid.Font.Name:= Helios.Font;
|
||
gridOperEvid.Font.Size:= lbl1.Font.Size;
|
||
for i:=0 to gridOperEvid.Columns.Count-1 do
|
||
begin
|
||
gridOperEvid.Columns[i].Font.Name:= Helios.Font;
|
||
gridOperEvid.Columns[i].Font.Size:= lbl1.Font.Size;
|
||
end;
|
||
|
||
gridAllEvid.Font.Name:= Helios.Font;
|
||
gridAllEvid.Font.Size:= lbl1.Font.Size;
|
||
for i:=0 to gridAllEvid.Columns.Count-1 do
|
||
begin
|
||
gridAllEvid.Columns[i].Font.Name:= Helios.Font;
|
||
gridAllEvid.Columns[i].Font.Size:= lbl1.Font.Size;
|
||
end;
|
||
}
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.FormActivate(Sender: TObject);
|
||
var i:integer;
|
||
begin
|
||
// Self.Width:= Round(Self.Width*1.12);
|
||
|
||
if (idHromEvidOp>0) then
|
||
begin
|
||
edtPrikaz.Enabled:= false;
|
||
Self.Caption:= Self.Caption + ' (EDITACE)';
|
||
end;
|
||
|
||
dtDatum.Date:= Now;
|
||
verText:= GetFileVersion2(GetModuleName(HInstance));
|
||
if Length(verText)=12 then
|
||
verText:= LeftStr(verText,9) + '0' + RightStr(verText,3);
|
||
|
||
if (edtDavka.CanFocus) then
|
||
edtDavka.SetFocus;
|
||
edtJmeno.Text:= '';
|
||
Self.Caption:= Self.Caption + ' (verze ' + verText + ')';
|
||
|
||
i:= 0;
|
||
while (i<Self.ComponentCount-1) do
|
||
begin
|
||
if (Self.Components[i] is TEdit) then
|
||
(Self.Components[i] AS TEdit).Font.Name:= Helios.Font;
|
||
if (Self.Components[i] is TRzEdit) then
|
||
(Self.Components[i] AS TRzEdit).Font.Name:= Helios.Font;
|
||
if (Self.Components[i] is TRzButtonEdit) then
|
||
(Self.Components[i] AS TRzButtonEdit).Font.Name:= Helios.Font;
|
||
if (Self.Components[i] is TComboEdit) then
|
||
(Self.Components[i] AS TComboEdit).Font.Name:= Helios.Font;
|
||
if (Self.Components[i] is TEdit) then
|
||
(Self.Components[i] AS TEdit).Font.Name:= Helios.Font;
|
||
if (Self.Components[i] is TLabel) then
|
||
(Self.Components[i] AS TLabel).Font.Name:= Helios.Font;
|
||
if (Self.Components[i] is TNextGrid6) then
|
||
(Self.Components[i] AS TNextGrid6).Font.Name:= Helios.Font;
|
||
if (Self.Components[i] is TNxTextColumn6) then
|
||
(Self.Components[i] AS TNxTextColumn6).Font.Name:= Helios.Font;
|
||
if (Self.Components[i] is TNxNumberColumn6) then
|
||
(Self.Components[i] AS TNxNumberColumn6).Font.Name:= Helios.Font;
|
||
Inc(i);
|
||
end;
|
||
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
begin
|
||
if (Button=mbLeft) and (ssShift in Shift) then
|
||
Helios.Info(#1'Rozm<7A>ry formu (w/h): '#1 + IntToStr(Self.Width) + 'px / ' + IntToStr(Self.Height) + 'px');
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.FormResize(Sender: TObject);
|
||
begin
|
||
FixGridCols(gridOperPrikaz);
|
||
FixGridCols(gridOperEvid);
|
||
FixGridCols(gridAllEvid);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.FormShow(Sender: TObject);
|
||
var lSQL: WideString;
|
||
koef: extended;
|
||
i: integer;
|
||
begin
|
||
Application.Handle:= Helios.MainApplicationHandle;
|
||
Application.Icon.Handle:= Helios.MainApplicationIconHandle;
|
||
Application.OnMessage:= OnMsg;
|
||
|
||
// DefFontData.CharSet:= Helios.Charset;
|
||
DefFontData.Name:= Helios.Font;
|
||
// DefFontData.Height:= Helios.FontHeight;
|
||
|
||
// Screen.MenuFont.CharSet:= DefFontData.CharSet;
|
||
Screen.MenuFont.Name:= DefFontData.Name;
|
||
// Screen.MenuFont.Height:= DefFontData.Height;
|
||
|
||
ReseedTable(Helios,tblMzdZm);
|
||
with Helios.OpenSQL('SELECT IDObdobi FROM ' + tblMzdObd + ' WHERE Stav=1') do
|
||
if (RecordCount>0) then
|
||
idMObd:= StrToInt(VarToStr(FieldValues(0)))
|
||
else
|
||
begin
|
||
raise Exception.Create('Nelze zjistit aktu<74>ln<6C> mzdov<6F> obdob<6F>.');
|
||
Exit;
|
||
end;
|
||
|
||
for i:=0 to gridOperPrikaz.Columns.Count-1 do
|
||
gridOperPrikaz.Columns[i].Tag:= gridOperPrikaz.Columns[i].Width;
|
||
for i:=0 to gridOperEvid.Columns.Count-1 do
|
||
gridOperEvid.Columns[i].Tag:= gridOperEvid.Columns[i].Width;
|
||
for i:=0 to gridAllEvid.Columns.Count-1 do
|
||
gridAllEvid.Columns[i].Tag:= gridAllEvid.Columns[i].Width;
|
||
|
||
idDokladOZ:= 0;
|
||
radaOdvP12Vosk:= '';
|
||
|
||
bidDavky:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_Davky''');
|
||
bidHDCLog:= helUtils.getHeliosIntVal(Helios, 0, 'SELECT DPBID FROM ' + tblObecPrehled + ' WHERE NazevSys=N''hvw_HDCLog''');
|
||
|
||
NastavGridy;
|
||
edtJmeno.Text:= '';
|
||
|
||
opVPsel:= 0;
|
||
opEvidsel:= 0;
|
||
novyVyr:= false;
|
||
novyClovek:= false;
|
||
|
||
|
||
radaPrikP12Vosk:= '221-12';
|
||
radaOdvP12Vosk:= '712';
|
||
sklP12Obal:= '00100100222200';
|
||
lSQL:= 'SELECT RadaDokl_OdvedeniPrikazu, PrijemVyrDil_SkladProGenHlavDZ FROM ' + tblPrikazRada + ' WHERE Rada=N' + radaPrikP12Vosk.QuotedString;
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount=1) then
|
||
begin
|
||
radaOdvP12Vosk:= VarTOStr(FieldByNameValues('RadaDokl_OdvedeniPrikazu'));
|
||
sklP12Obal:= VarTOStr(FieldByNameValues('PrijemVyrDil_SkladProGenHlavDZ'));
|
||
end;
|
||
|
||
|
||
|
||
|
||
// SQL2012 with Helios.OpenSQL('SELECT FORMAT(GETDATE(),''d.M.yyyy'',''cs-CZ'')') do
|
||
try
|
||
// with Helios.OpenSQL('SELECT (CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,dbo.ef_GetPreviousWeekDay(GETDATE())))))') do
|
||
lSQL:= 'DECLARE @dt DATETIME' + CRLF;
|
||
lSQL:= lSQL + 'SET @dt=CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,dbo.ef_GetPreviousWeekDay(GETDATE()))))' + CRLF;
|
||
lSQL:= lSQL + 'IF EXISTS(SELECT IsWorkDay FROM dbo._hdc_TabKalendar WHERE isWorkDay=1 AND Datum=@dt) SELECT @dt ELSE ';
|
||
lSQL:= lSQL + 'SELECT TOP(1) CONVERT(DATETIME,CONVERT(INT,CONVERT(FLOAT,CONVERT(datetime,Datum,104)))) FROM';
|
||
lSQL:= lSQL + ' dbo._hdc_TabKalendar WHERE IsWorkDay=1 AND Datum<@dt ORDER BY Datum DESC';
|
||
with Helios.OpenSQL(lSQL) do
|
||
dtDatum.Date:= StrToDate(VarToStr(FieldValues(0)))
|
||
except on E:Exception do
|
||
begin
|
||
// Helios.Error(#1'Chyba p<>i z<>sk<73>v<EFBFBD>n<EFBFBD> datumu ze serveru...'#1 + CRLF + E.ClassName + CRLF + E.Message);
|
||
raise Exception.Create('Chyba p<>i z<>sk<73>v<EFBFBD>n<EFBFBD> data ze serveru...' + CRLF + E.ClassName + CRLF + E.Message);
|
||
Close;
|
||
end;
|
||
end;
|
||
|
||
with Helios.OpenSQL('SELECT kod FROM ' + tblCSmen + ' WHERE Blokovano=0') do
|
||
if (RecordCount>0) then
|
||
begin
|
||
First;
|
||
edtSmena.Text:= VarToStr(FieldValues(0));
|
||
end;
|
||
|
||
if (idHromEvidOp>0) then
|
||
NactiEvidenci;
|
||
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperEvidCellChange(Sender: TObject; ACol, ARow: Integer);
|
||
var i: integer;
|
||
m: Extended;
|
||
begin
|
||
if (ACol=colOpEvidMnoz.Index) and not(hromAkce) then
|
||
begin
|
||
m:= gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat;
|
||
if (gridOperEvid.RowCount>=ARow+1) and (gridOperEvid.Cell[colOpEvidZive.Index, ARow].AsFloat>=m) then
|
||
for i:=ARow+1 to gridOperEvid.RowCount-1 do
|
||
gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= m;
|
||
PrepoctiCasEvid;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperEvidCellClick(Sender: TObject; ACol, ARow: Integer; Button: TMouseButton);
|
||
var x, y: Extended;
|
||
f: TformInputNum;
|
||
i,kodZav: integer;
|
||
zmenaMnoz: boolean;
|
||
begin
|
||
zmenaMnoz:= false;
|
||
|
||
if (ACol=colOpEvidMnoz.Index) then
|
||
begin
|
||
f:= TformInputNum.Create(nil);
|
||
try
|
||
f.titulek:= 'Evidence operace';
|
||
f.edtPopis:= 'Dobr<62>ch stromk<6D>:';
|
||
f.edtNum2.Enabled:=false;
|
||
f.ShowModal;
|
||
x:= f.value;
|
||
if (x>=0) then
|
||
begin
|
||
hromAkce:= true;
|
||
y:= gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat:= x;
|
||
// gridOperEvid.Cell[colOpEvidZmetky.Index, ARow].AsFloat:= y-x;
|
||
if (gridOperEvid.RowCount>=ARow+1) and (gridOperEvid.Cell[colOpEvidMnozOrig.Index, ARow].AsFloat>=x) then
|
||
for i:=ARow+1 to gridOperEvid.RowCount-1 do
|
||
gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= x;
|
||
hromAkce:= false;
|
||
zmenaMnoz:= true;
|
||
end;
|
||
finally
|
||
f.Free;
|
||
end;
|
||
end;
|
||
|
||
if (ACol=colOpEvidZmetky.Index) then
|
||
begin
|
||
f:= TformInputNum.Create(nil);
|
||
try
|
||
f.titulek:= 'Evidence operace';
|
||
f.edtPopis:= 'Po<50>et zmetk<74>:';
|
||
f.edtNum.Alignment:= TAlignment.taCenter;
|
||
f.edtPopis2:= 'K<>d z<>vady:';
|
||
f.edtNum2.Alignment:= TAlignment.taCenter;
|
||
f.ShowModal;
|
||
x:= f.value;
|
||
if (x>=0) then
|
||
begin
|
||
hromAkce:= true;
|
||
kodZav:= f.value2.ToString.ToInteger;
|
||
|
||
gridOperEvid.Cell[colOpEvidZmetky.Index, ARow].AsFloat:= x;
|
||
gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat:= gridOperEvid.Cell[colOpEvidMnozOrig.Index, ARow].AsFloat - x;
|
||
gridOperEvid.Cell[colOpEvidKodZavady.Index, ARow].AsInteger:= kodZav;
|
||
|
||
if (gridOperEvid.RowCount>=ARow+1) then
|
||
for i:=ARow+1 to gridOperEvid.RowCount-1 do
|
||
if (i<=gridOperEvid.RowCount) then
|
||
if (gridOperEvid.Cell[colOpEvidMnozOrig.Index, i].AsFloat>=x) then
|
||
gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidMnozOrig.Index, i].AsFloat - x;
|
||
|
||
// if (gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat-x>=0) then
|
||
// gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat:= gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat - x;
|
||
// if (gridOperEvid.Cell[colOpEvidZive.Index, ARow].AsFloat>=x) then
|
||
// gridOperEvid.Cell[colOpEvidZive.Index, ARow].AsFloat:= gridOperEvid.Cell[colOpEvidZive.Index, ARow].AsFloat - x;
|
||
|
||
// if (gridOperEvid.RowCount>=ARow+1) and (gridOperEvid.Cell[colOpEvidMnoz.Index, ARow].AsFloat>=x) then
|
||
// for i:=ARow+1 to gridOperEvid.RowCount-1 do
|
||
// if (gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat-x>=0) then
|
||
// gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat - x;
|
||
|
||
hromAkce:= false;
|
||
zmenaMnoz:= true;
|
||
end;
|
||
finally
|
||
f.Free;
|
||
end;
|
||
end;
|
||
|
||
if (zmenaMnoz) then
|
||
PrepoctiCasEvid;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperEvidCellDblClick(Sender: TObject; ACol, ARow: Integer);
|
||
begin
|
||
btnOpDel1Click(Sender);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperPrikazCellChange(Sender: TObject; ACol, ARow: Integer);
|
||
begin
|
||
if (ACol=colOpMnoz.Index) then
|
||
gridOperPrikaz.Cell[colOpCasM.Index, ARow].AsFloat:= gridOperPrikaz.Cell[colOpNormaMin.Index, ARow].AsFloat * gridOperPrikaz.Cell[colOpMnoz.Index, ARow].AsFloat;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperPrikazCellDblClick(Sender: TObject; ACol, ARow: Integer);
|
||
begin
|
||
btnOpAdd1Click(Sender);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperPrikazChanged(Sender: TObject; ACol, ARow: Integer);
|
||
var i: integer;
|
||
c: extended;
|
||
begin
|
||
c:= 0;
|
||
if (ARow>0) and (ACol>0) then
|
||
for i:=0 to gridOperEvid.RowCount-1 do
|
||
c:= c + gridOperEvid.Cell[3,i].AsFloat;
|
||
lblCasNormEvid.Caption:= FloatToStr(c) + '0.0 min)';
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperEvidDragDrop(Sender, Source: TObject; X, Y: Integer);
|
||
var i, maxRad, r, c: integer;
|
||
p: TPoint;
|
||
begin
|
||
Exit;
|
||
p:= TPoint.Create(x,y);
|
||
r:= gridOperEvid.SelectedCell.RowIndex; // .GetRowAtPos(x,y);
|
||
c:= gridOperEvid.SelectedCell.ColIndex; // .GetColumnAtPos(p).Index;
|
||
if (gridOperPrikaz.Cells[1,r]='') or (r=0) then
|
||
Exit;
|
||
{
|
||
maxRad:= 0;
|
||
while not (gridOperEvid.Cells[0,maxRad]='') do
|
||
Inc(maxRad);
|
||
if maxRad=gridOperEvid.RowCount then
|
||
}
|
||
gridOperEvid.RowCount:= gridOperEvid.RowCount + 1;
|
||
i:= gridOperEvid.RowCount-1;
|
||
gridOperEvid.Cell[colOpEvidCislo.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpCislo.Index, r].AsInteger;
|
||
gridOperEvid.Cell[colOpEvidPopis.Index, i].AsString:= gridOperPrikaz.Cell[colOpPopis.Index, r].AsString;
|
||
gridOperEvid.Cell[colOpEvidIdPostup.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdPostup.Index, r].AsInteger;
|
||
gridOperEvid.Cell[colOpEvidCasM.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasM.Index, r].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpCasS.Index, r].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidIdEvidOp.Index, i].AsInteger:= gridOperPrikaz.Cell[colOpIdEvidOp.Index, r].AsInteger;
|
||
gridOperEvid.Cell[colOpEvidSkutCasS.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpSkutCasS.Index, r].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidMnoz.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, r].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidZive.Index, i].AsFloat:= gridOperPrikaz.Cell[colOpMnoz.Index, r].AsFloat;
|
||
gridOperEvid.Cell[colOpEvidZmetky.Index, i].AsFloat:= 0;
|
||
gridOperEvid.Cell[colOpEvidKodZavady.Index, i].AsString:= '';
|
||
|
||
gridOperPrikaz.DeleteRow(r);
|
||
gridOperEvid.Sort(colOpEvidCislo.Index, skAscending);
|
||
PrepoctiCasEvid;
|
||
PrepoctiCasVP;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperPrikazDragDrop(Sender, Source: TObject; X, Y: Integer);
|
||
var i, maxRad, r, c: integer;
|
||
p: TPoint;
|
||
begin
|
||
Exit;
|
||
p:= TPoint.Create(x,y);
|
||
r:= gridOperPrikaz.SelectedCell.RowIndex; // GetRowAtPos(x,y);
|
||
c:= gridOperPrikaz.SelectedCell.ColIndex; // GetColumnAtPos(p).Index;
|
||
if (gridOperEvid.Cells[1,r]='') or (r=0) then
|
||
Exit;
|
||
{
|
||
maxRad:= 0;
|
||
while not (gridOperPrikaz.Cells[0,maxRad]='') do
|
||
Inc(maxRad);
|
||
if maxRad=gridOperPrikaz.RowCount then
|
||
}
|
||
gridOperPrikaz.RowCount:= gridOperPrikaz.RowCount + 1;
|
||
i:= gridOperPrikaz.RowCount-1;
|
||
gridOperPrikaz.Cell[colOpCislo.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidCislo.Index, r].AsInteger;
|
||
gridOperPrikaz.Cell[colOpPopis.Index, i].AsString:= gridOperEvid.Cell[colOpEvidPopis.Index, r].AsString;
|
||
gridOperPrikaz.Cell[colOpIdPostup.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdPostup.Index, r].AsInteger;
|
||
gridOperPrikaz.Cell[colOpCasM.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasM.Index, r].AsFloat;
|
||
gridOperPrikaz.Cell[colOpCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidCasS.Index, r].AsFloat;
|
||
gridOperPrikaz.Cell[colOpIdEvidOp.Index, i].AsInteger:= gridOperEvid.Cell[colOpEvidIdEvidOp.Index, r].AsInteger;
|
||
gridOperPrikaz.Cell[colOpSkutCasS.Index, i].AsFloat:= gridOperEvid.Cell[colOpEvidSkutCasS.Index, r].AsFloat;
|
||
gridOperPrikaz.Cell[colOpMnoz.Index, i].AsFloat:= edtKusy.Value;
|
||
|
||
gridOperEvid.DeleteRow(r);
|
||
gridOperPrikaz.Sort(colOpCislo.Index, skAscending);
|
||
PrepoctiCasVP;
|
||
PrepoctiCasEvid;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperEvidDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
|
||
begin
|
||
Accept:= Source is TNextGrid6;
|
||
Accept:= false;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperPrikazDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
|
||
begin
|
||
Accept:= Source is TNextGrid6;
|
||
Accept:= false;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperEvidMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
var p: TPoint;
|
||
begin
|
||
{
|
||
p:= TPoint.Create(x,y);
|
||
dragRow:= gridOperEvid.SelectedRow; // GetRowAtPos(x,y);
|
||
dragCol:= gridOperEvid.SelectedCol; // GetColumnAtPos(p).Index;
|
||
if (dragCol>0) and (dragRow>0) then
|
||
gridOperEvid.BeginDrag(False,3);
|
||
}
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperEvidResize(Sender: TObject);
|
||
begin
|
||
// gridOperEvid.Font.Size:= lbl1.Font.Size;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperPrikazMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
var c,r: integer;
|
||
p: TPoint;
|
||
begin
|
||
{
|
||
p:= TPoint.Create(x,y);
|
||
dragRow:= gridOperPrikaz.SelectedRow; // GetRowAtPos(x,y);
|
||
dragCol:= gridOperPrikaz.SelectedCol; // GetColumnAtPos(p).Index;
|
||
if (dragCol>0) and (dragRow>0) then
|
||
gridOperPrikaz.BeginDrag(False,3);
|
||
}
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperPrikazResize(Sender: TObject);
|
||
begin
|
||
// gridOperPrikaz.Font.Size:= lbl1.Font.Size;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperPrikazSelect(Sender: TObject; ACol, ARow: Integer);
|
||
begin
|
||
opVPsel:= ARow;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformHrOdvOper.gridOperEvidSelect(Sender: TObject; ACol, ARow: Integer);
|
||
begin
|
||
opEvidsel:= ARow;
|
||
end;
|
||
|
||
|
||
end.
|