1017 lines
37 KiB
ObjectPascal
1017 lines
37 KiB
ObjectPascal
unit frmUnit6;
|
||
|
||
interface
|
||
|
||
uses
|
||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ToolWin, Vcl.Mask, ddPlugin_TLB,
|
||
RzEdit, RzBtnEdt, helUtils, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles, cxCustomData,
|
||
cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxClasses, cxGridCustomView,
|
||
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, RzButton, Vcl.ExtCtrls, RzPanel,
|
||
MemDS, VirtualTable, Vcl.ImgList, Vcl.ButtonGroup, Vcl.Buttons, cxLabel, Vcl.Menus;
|
||
|
||
type
|
||
TformVydejka = class(TForm)
|
||
pgControl: TPageControl;
|
||
tBar: TToolBar;
|
||
tBtn1: TToolButton;
|
||
tBtn2: TToolButton;
|
||
pgHlavicka: TTabSheet;
|
||
btnOK: TButton;
|
||
btnCanel: TButton;
|
||
GroupBox1: TGroupBox;
|
||
Label1: TLabel;
|
||
selCisOrg: TRzButtonEdit;
|
||
selOdber: TRzButtonEdit;
|
||
Label2: TLabel;
|
||
selCisOrgMisto: TRzButtonEdit;
|
||
selOdberMisto: TRzButtonEdit;
|
||
pgPolozky: TTabSheet;
|
||
GroupBox2: TGroupBox;
|
||
edtDatPrip: TRzDateTimeEdit;
|
||
Label3: TLabel;
|
||
GroupBox3: TGroupBox;
|
||
viewPol: TcxGridDBTableView;
|
||
lvPol: TcxGridLevel;
|
||
gridPol: TcxGrid;
|
||
GroupBox4: TGroupBox;
|
||
vTabPol: TVirtualTable;
|
||
dsPol: TDataSource;
|
||
imgList: TImageList;
|
||
btnPolAdd: TSpeedButton;
|
||
btnPolEdit: TSpeedButton;
|
||
btnPolDel: TSpeedButton;
|
||
colIdSS: TcxGridDBColumn;
|
||
colIdKZ: TcxGridDBColumn;
|
||
colSZ: TcxGridDBColumn;
|
||
colRegCis: TcxGridDBColumn;
|
||
colNazev1: TcxGridDBColumn;
|
||
colNazev2: TcxGridDBColumn;
|
||
colMnoz: TcxGridDBColumn;
|
||
colJCbezDaniKc: TcxGridDBColumn;
|
||
colCCbezDPH: TcxGridDBColumn;
|
||
colMJ: TcxGridDBColumn;
|
||
pgSklad: TTabSheet;
|
||
viewSklad: TcxGridDBTableView;
|
||
lvSklad: TcxGridLevel;
|
||
gridSklad: TcxGrid;
|
||
dsSklad: TDataSource;
|
||
vTabSklad: TVirtualTable;
|
||
colIdSS2: TcxGridDBColumn;
|
||
colIdKZ2: TcxGridDBColumn;
|
||
colSZ2: TcxGridDBColumn;
|
||
colRegCis2: TcxGridDBColumn;
|
||
colNazev12: TcxGridDBColumn;
|
||
colNazev22: TcxGridDBColumn;
|
||
colMJ2: TcxGridDBColumn;
|
||
colJCbezDaniKc2: TcxGridDBColumn;
|
||
colCCbezDPH2: TcxGridDBColumn;
|
||
colMnoz2: TcxGridDBColumn;
|
||
Label4: TLabel;
|
||
cbMena: TComboBox;
|
||
colIdPZ: TcxGridDBColumn;
|
||
selKurz: TRzButtonEdit;
|
||
Label5: TLabel;
|
||
pmSklad: TPopupMenu;
|
||
pmSklad1: TMenuItem;
|
||
procedure WMGetMinMaxInfo(var AMsg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
|
||
procedure selOdberButtonClick(Sender: TObject);
|
||
procedure selCisOrgButtonClick(Sender: TObject);
|
||
procedure selCisOrgMistoButtonClick(Sender: TObject);
|
||
procedure selOdberMistoButtonClick(Sender: TObject);
|
||
procedure selCisOrgExit(Sender: TObject);
|
||
procedure FormShow(Sender: TObject);
|
||
procedure btnCanelClick(Sender: TObject);
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure selCisOrgMistoExit(Sender: TObject);
|
||
procedure btnPolAddClick(Sender: TObject);
|
||
procedure viewPolColumnHeaderClick(Sender: TcxGridTableView; AColumn: TcxGridColumn);
|
||
procedure FormActivate(Sender: TObject);
|
||
procedure pgControlChange(Sender: TObject);
|
||
procedure vTabPolCalcFields(DataSet: TDataSet);
|
||
procedure btnOKClick(Sender: TObject);
|
||
procedure btnPolDelClick(Sender: TObject);
|
||
procedure btnPolEditClick(Sender: TObject);
|
||
procedure viewPolCellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
|
||
AShift: TShiftState; var AHandled: Boolean);
|
||
procedure selKurzButtonClick(Sender: TObject);
|
||
procedure viewSkladCellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
|
||
AShift: TShiftState; var AHandled: Boolean);
|
||
procedure pmSklad1Click(Sender: TObject);
|
||
private
|
||
cfCelkemDef: TFieldDef;
|
||
cfCelkem: TField;
|
||
procedure NovyDoklad;
|
||
procedure NactiDoklad;
|
||
procedure VytvorGrid;
|
||
function GetSklad: ShortString;
|
||
procedure NaplnSkladKoop;
|
||
function LzeUlozit: boolean;
|
||
function ZjistiKurzDleMeny(mena: shortString): Extended;
|
||
public
|
||
Helios: IHelios;
|
||
idDZ: integer;
|
||
radaV, druhV: ShortString;
|
||
vstCena: integer;
|
||
end;
|
||
|
||
var
|
||
formVydejka: TformVydejka;
|
||
sql: WideString;
|
||
oVar1, oVar2: OleVariant;
|
||
wherePodm: WideString;
|
||
radaPopis, cDokl, idDDZ, idSS, idKZ, DZshift, cOrg, idSklad: ShortString;
|
||
HeliosImages: THeliosImages;
|
||
|
||
implementation
|
||
uses cxGridStrs, System.StrUtils;
|
||
|
||
{$R *.dfm}
|
||
|
||
procedure TformVydejka.WMGetMinMaxInfo(var AMsg: TWMGetMinMaxInfo);
|
||
begin
|
||
inherited;
|
||
with AMsg.MinMaxInfo^ do
|
||
begin
|
||
ptMinTrackSize := Point(Constraints.MinWidth, Constraints.MinHeight);
|
||
ptMaxTrackSize := Point(Constraints.MaxWidth, Constraints.MaxHeight);
|
||
end;
|
||
end;
|
||
|
||
procedure TformVydejka.NaplnSkladKoop;
|
||
var sql: WideString;
|
||
begin
|
||
if not vTabSklad.Active then
|
||
vTabSklad.Open;
|
||
vTabSklad.Clear;
|
||
sql:= 'SELECT ss.Id,kz.Id,kz.SkupZbo,kz.RegCis,kz.Nazev1,kz.Nazev2,kz.MJEvidence,ss.Mnozstvi,ss.Prumer,ss.StavSkladu FROM ';
|
||
sql:= sql + tblKZ + ' kz INNER JOIN ' + tblSS + ' ss ON (ss.IDKmenZbozi=kz.id AND ss.IDSklad=N' + QuotedStr(idSklad)+ ') WHERE kz.id IN';
|
||
sql:= sql + ' (SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(idSklad) + ' ORDER BY kz.SkupZbo,kz.RegCis';
|
||
with Helios.OpenSQL(sql) do
|
||
if RecordCount>0 then
|
||
begin
|
||
First;
|
||
while not(EOF) do
|
||
begin
|
||
vTabSklad.Append;
|
||
vTabSklad.Fields.Fields[0].AsInteger:= StrToInt(VarToStr(FieldValues(0)));
|
||
vTabSklad.Fields.Fields[1].AsInteger:= StrToInt(VarToStr(FieldValues(1)));
|
||
vTabSklad.Fields.Fields[2].AsString:= VarToStr(FieldValues(2));
|
||
vTabSklad.Fields.Fields[3].AsString:= VarToStr(FieldValues(3));
|
||
vTabSklad.Fields.Fields[4].AsString:= VarToStr(FieldValues(4));
|
||
vTabSklad.Fields.Fields[5].AsString:= VarToStr(FieldValues(5));
|
||
vTabSklad.Fields.Fields[6].AsString:= VarToStr(FieldValues(6));
|
||
vTabSklad.Fields.Fields[7].AsExtended:= StrToFloat(VarToStr(FieldValues(7)));
|
||
vTabSklad.Fields.Fields[8].AsExtended:= StrToFloat(VarToStr(FieldValues(8)));
|
||
vTabSklad.Fields.Fields[9].AsExtended:= StrToFloat(VarToStr(FieldValues(9)));
|
||
vTabSklad.Post;
|
||
Next;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TformVydejka.VytvorGrid;
|
||
var idx: integer;
|
||
begin
|
||
with vTabPol do
|
||
begin
|
||
with FieldDefs do
|
||
begin
|
||
Clear;
|
||
Add('idSS', ftInteger, 0, true);
|
||
Add('idKZ', ftInteger, 0, true);
|
||
Add('SkupZbo', ftString, 3, false);
|
||
Add('RegCis', ftString, 20, false);
|
||
Add('Nazev1', ftString, 100, false);
|
||
Add('Nazev2', ftString, 100, false);
|
||
Add('MJ', ftString, 10, false);
|
||
Add('Mnozstvi', ftFloat, 0, false);
|
||
Add('JCbezDaniKC', ftFloat, 0, false);
|
||
Add('CCbezDPH', ftFloat, 0, false);
|
||
Add('idPZ', ftInteger, 0, false);
|
||
end;
|
||
end;
|
||
for idx:=0 to vTabPol.FieldDefs.Count-1 do
|
||
begin
|
||
cfCelkemDef:= vTabPol.FieldDefs.Items[idx];
|
||
cfCelkem:= cfCelkemDef.CreateField(vTabPol);
|
||
if (cfCelkem.FieldName='CCbezDPH') then // oznac Pocitane pole
|
||
cfCelkem.FieldKind:= fkCalculated;
|
||
end;
|
||
|
||
with viewPol.Columns[0] do
|
||
begin
|
||
DataBinding.FieldName:= 'idSS';
|
||
DataBinding.ValueTypeClass:= TcxIntegerValueType;
|
||
Visible:= false;
|
||
Width:= 1;
|
||
end;
|
||
with viewPol.Columns[1] do
|
||
begin
|
||
DataBinding.FieldName:= 'idKZ';
|
||
DataBinding.ValueTypeClass:= TcxIntegerValueType;
|
||
Visible:= false;
|
||
Width:= 1;
|
||
end;
|
||
with viewPol.Columns[2] do
|
||
begin
|
||
DataBinding.FieldName:= 'SkupZbo';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'SZ';
|
||
Width:= 40;
|
||
end;
|
||
with viewPol.Columns[3] do
|
||
begin
|
||
DataBinding.FieldName:= 'RegCis';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'Reg.<2E><>slo';
|
||
Width:= 80;
|
||
end;
|
||
with viewPol.Columns[4] do
|
||
begin
|
||
DataBinding.FieldName:= 'Nazev1';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'N<>zev';
|
||
Width:= 280;
|
||
end;
|
||
with viewPol.Columns[5] do
|
||
begin
|
||
DataBinding.FieldName:= 'Nazev2';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'N<>zev 2';
|
||
Width:= 230;
|
||
end;
|
||
with viewPol.Columns[6] do
|
||
begin
|
||
DataBinding.FieldName:= 'MJ';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'MJ';
|
||
Width:= 40;
|
||
end;
|
||
with viewPol.Columns[7] do
|
||
begin
|
||
DataBinding.FieldName:= 'Mnozstvi';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'Mno<6E>stv<74>';
|
||
Width:= 70;
|
||
end;
|
||
with viewPol.Columns[8] do
|
||
begin
|
||
DataBinding.FieldName:= 'JCbezDaniKC';
|
||
DataBinding.ValueTypeClass:= TcxFloatValueType;
|
||
Caption:= 'JC bez DPH';
|
||
Width:= 75;
|
||
end;
|
||
with viewPol.Columns[9] do
|
||
begin
|
||
DataBinding.FieldName:= 'CCbezDPH';
|
||
DataBinding.ValueTypeClass:= TcxFloatValueType;
|
||
Caption:= 'CC bez DPH';
|
||
Width:= 80;
|
||
end;
|
||
with viewPol.Columns[10] do
|
||
begin
|
||
DataBinding.FieldName:= 'idPZ';
|
||
DataBinding.ValueTypeClass:= TcxIntegerValueType;
|
||
Visible:= false;
|
||
Width:= 1;
|
||
end;
|
||
|
||
with vTabSklad do
|
||
begin
|
||
with FieldDefs do
|
||
begin
|
||
Clear;
|
||
Add('idSS', ftInteger, 0, true);
|
||
Add('idKZ', ftInteger, 0, true);
|
||
Add('SkupZbo', ftString, 3, false);
|
||
Add('RegCis', ftString, 20, false);
|
||
Add('Nazev1', ftString, 100, false);
|
||
Add('Nazev2', ftString, 100, false);
|
||
Add('MJ', ftString, 10, false);
|
||
Add('Mnozstvi', ftFloat, 0, false);
|
||
Add('Prumer', ftFloat, 0, false); // prumerna JC
|
||
Add('CCbezDPH', ftFloat, 0, false);
|
||
end;
|
||
end;
|
||
for idx:=0 to vTabSklad.FieldDefs.Count-1 do
|
||
begin
|
||
cfCelkemDef:= vTabSklad.FieldDefs.Items[idx];
|
||
cfCelkem:= cfCelkemDef.CreateField(vTabSklad);
|
||
if (cfCelkem.FieldName='CCbezDPH') then // oznac Pocitane pole
|
||
cfCelkem.FieldKind:= fkCalculated;
|
||
end;
|
||
|
||
with viewSklad.Columns[0] do
|
||
begin
|
||
DataBinding.FieldName:= 'idSS';
|
||
DataBinding.ValueTypeClass:= TcxIntegerValueType;
|
||
Visible:= false;
|
||
Width:= 1;
|
||
end;
|
||
with viewSklad.Columns[1] do
|
||
begin
|
||
DataBinding.FieldName:= 'idKZ';
|
||
DataBinding.ValueTypeClass:= TcxIntegerValueType;
|
||
Visible:= false;
|
||
Width:= 1;
|
||
end;
|
||
with viewSklad.Columns[2] do
|
||
begin
|
||
DataBinding.FieldName:= 'SkupZbo';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'SZ';
|
||
Width:= 40;
|
||
end;
|
||
with viewSklad.Columns[3] do
|
||
begin
|
||
DataBinding.FieldName:= 'RegCis';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'Reg.<2E><>slo';
|
||
Width:= 80;
|
||
end;
|
||
with viewSklad.Columns[4] do
|
||
begin
|
||
DataBinding.FieldName:= 'Nazev1';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'N<>zev';
|
||
Width:= 280;
|
||
end;
|
||
with viewSklad.Columns[5] do
|
||
begin
|
||
DataBinding.FieldName:= 'Nazev2';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'N<>zev 2';
|
||
Width:= 230;
|
||
end;
|
||
with viewSklad.Columns[6] do
|
||
begin
|
||
DataBinding.FieldName:= 'MJ';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'MJ';
|
||
Width:= 45;
|
||
end;
|
||
with viewSklad.Columns[7] do
|
||
begin
|
||
DataBinding.FieldName:= 'Mnozstvi';
|
||
DataBinding.ValueTypeClass:= TcxStringValueType;
|
||
Caption:= 'Mno<6E>stv<74>';
|
||
Width:= 70;
|
||
end;
|
||
with viewSklad.Columns[8] do
|
||
begin
|
||
DataBinding.FieldName:= 'Prumer';
|
||
DataBinding.ValueTypeClass:= TcxFloatValueType;
|
||
Caption:= 'Pr<50>m<EFBFBD>rn<72> JC';
|
||
Width:= 80;
|
||
end;
|
||
with viewSklad.Columns[9] do
|
||
begin
|
||
DataBinding.FieldName:= 'StavSkladu';
|
||
DataBinding.ValueTypeClass:= TcxFloatValueType;
|
||
Caption:= 'Fin.stav';
|
||
Width:= 80;
|
||
end;
|
||
end;
|
||
|
||
function TformVydejka.GetSklad: shortString;
|
||
begin
|
||
result:= '';
|
||
if selCisOrg.Text<>'' then
|
||
begin
|
||
idSklad:= '';
|
||
sql:= 'SELECT s.Cislo FROM ' + tblStromE + ' se INNER JOIN ' + tblStrom + ' s ON (se.id=s.id)' ;
|
||
sql:= sql + ' WHERE se._CisloOrg=' + selCisOrg.Text;
|
||
with Helios.OpenSQL(sql) do
|
||
if RecordCount>0 then
|
||
result:= VarToStr(FieldValues(0));
|
||
end;
|
||
idSklad:= result;
|
||
if idSklad<>'' then
|
||
NaplnSkladKoop;
|
||
end;
|
||
|
||
procedure TformVydejka.btnCanelClick(Sender: TObject);
|
||
begin
|
||
Close;
|
||
end;
|
||
|
||
function TformVydejka.LzeUlozit: boolean;
|
||
begin
|
||
result:= true;
|
||
if edtDatPrip.Text='' then
|
||
result:= false;
|
||
end;
|
||
|
||
procedure TformVydejka.btnOKClick(Sender: TObject);
|
||
var idPZ, idKZ, idSS, polIdx: integer;
|
||
PZtka, sqlInsPZ: WideString;
|
||
sIdPZ,sz,regcis,sMnoz,sJC: ShortString;
|
||
begin
|
||
if LzeUlozit then
|
||
begin
|
||
if (idDZ>0) then
|
||
begin
|
||
// hlavicka
|
||
sql:= 'DECLARE @dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,' + QuotedStr(DateToStr(edtDatPrip.Date)) + ',104)';
|
||
sql:= sql + 'UPDATE ' + tblDZ + ' SET DatPorizeni=@dt WHERE id=' + IntToStr(idDZ);
|
||
Helios.ExecSQL(sql);
|
||
|
||
// polozky
|
||
if vTabPol.RecordCount>0 then
|
||
begin
|
||
// zjisti idPZ jiz ulozenych polozek v dokladu
|
||
PZtka:= IDckaTabulky(vTabPol,'idPZ');
|
||
if PZtka<>'' then
|
||
sql:= ' AND id NOT IN (' + PZtka + ')';
|
||
Helios.ExecSQL('DELETE FROM ' + tblPZ + ' WHERE IDDoklad=' + IntToStr(idDZ) + sql);
|
||
vTabPol.First;
|
||
while not(vTabPol.Eof) do
|
||
begin
|
||
sz:= vTabPol.Fields.Fields[2].AsString;
|
||
regCis:= vTabPol.Fields.Fields[3].AsString;
|
||
sMnoz:= vTabPol.Fields.Fields[7].AsString;
|
||
sJC:= vTabPol.Fields.Fields[8].AsString;
|
||
sIdPZ:= vTabPol.Fields.Fields[10].AsString;
|
||
if sIdPZ<>'' then
|
||
begin
|
||
// uloz zmeny polozek ve starem dokladu
|
||
sql:= 'UPDATE ' + tblPZ + ' SET Mnozstvi=' + StringReplace(vTabPol.FieldByName('Mnozstvi').AsString,',','.',[rfReplaceAll]);
|
||
sql:= sql + ',JCbezDaniKC=' + StringReplace(vTabPol.FieldByName('JCbezDaniKc').AsString,',','.',[rfReplaceAll]);
|
||
sql:= sql + ' WHERE id=' + sIdPZ;
|
||
try
|
||
Helios.ExecSQL(sql);
|
||
except on E:Exception do
|
||
Helios.Error('Nelze aktualizovat polo<6C>ku dokladu: ' + sz + ':' + regCis + CRLF + E.Message + CRLF + sql);
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
// uloz nove radky do dokladu
|
||
sql:= 'DECLARE @idPZ INT' + CRLF;
|
||
sql:= sql + 'EXEC dbo.hp_InsertPolozkyOZ @idPZ OUT,@IDDoklad=' + IntToStr(idDZ) + ',@DruhPohybu=' + druhV;
|
||
sql:= sql + ',@CisloOrg=' + selCisOrg.Text + ',@IDZboSklad=' + VarToStr(vTabPol.Fields.Fields[0].AsString) + ',@Kurz=1';
|
||
sql:= sql + ',@JednotkaMeny=1,@KurzEuro=1,@SazbaSD=0,@SazbaDPH=0,@ZakazanoDPH=0,@Mena=N' + QuotedStr(cbMena.Text);
|
||
sql:= sql + ',@Selectem=0,@PovolitDuplicitu=1,@VstupniCena=' + IntToStr(vstCena);
|
||
sql:= sql + ',@Mnozstvi=' + StringReplace(vTabPol.FieldByName('Mnozstvi').AsString,',','.',[rfReplaceAll]);
|
||
sql:= sql + ',@JCbezDaniKC=' + StringReplace(vTabPol.FieldByName('JCbezDaniKc').AsString,',','.',[rfReplaceAll]);
|
||
sql:= sql + ',@MJ=N' + QuotedStr(vTabPol.FieldByName('MJ').AsString) + CRLF + 'SELECT @idPZ';
|
||
|
||
try
|
||
with Helios.OpenSQL(sql) do
|
||
idPZ:= StrToInt(VarToStr(FieldValues(0)));
|
||
except on E:Exception do
|
||
Helios.Error(#1'Nelze ulo<6C>it polo<6C>ku dokladu, kontaktujte spr<70>vce.'#1 + CRLF + E.Message + CRLF + sql);
|
||
end;
|
||
if idPZ>0 then
|
||
begin
|
||
vTabPol.Edit;
|
||
vTabPol.Fields.Fields[10].AsInteger:= idPZ;
|
||
vTabPol.Post;
|
||
sql:= 'UPDATE ' + tblPZ + ' SET CCbezDaniKc=' + StringReplace(vTabPol.FieldByName('CCbezDPH').AsString,',','.',[rfReplaceAll]);
|
||
if Pos('CZK',cbMena.Text)=0 then
|
||
sql:= sql + ',CCbezDaniVal=' + StringReplace(vTabPol.FieldByName('CCbezDPH').AsString,',','.',[rfReplaceAll]);
|
||
sql:= sql + ' WHERE id=' + IntToStr(idPZ);
|
||
end;
|
||
end;
|
||
vTabPol.Next;
|
||
end;
|
||
end
|
||
else
|
||
Helios.ExecSQL('DELETE FROM ' + tblPZ + ' WHERE IDDoklad=' + IntToStr(idDZ));
|
||
end
|
||
else
|
||
begin
|
||
idDZ:= 0;
|
||
sql:= 'DECLARE @dt DATETIME,@idDZ INT' + CRLF;
|
||
sql:= sql + 'SET @dt=CONVERT(datetime,' + QuotedStr(DateToStr(edtDatPrip.Date)) + ',104)' + CRLF;
|
||
sql:= sql + 'EXEC dbo.hp_InsertHlavickyOZ @idDZ OUT,@Sklad=N' + QuotedStr(Helios.Sklad) + ',@Mena=N' + QuotedStr(cbMena.Text);
|
||
sql:= sql + ',@DruhPohybu=' + druhV + ',@RadaDokladu=N' + QuotedStr(radaV) + ',@Insert=1,@CisloOrg=' + selCisOrg.Text + ',@PC=' + cDokl;
|
||
sql:= sql + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @idDZ';
|
||
try
|
||
with Helios.OpenSQL(sql) do
|
||
idDZ:= StrToInt(VarToStr(FieldValues(0)));
|
||
except on E:Exception do
|
||
Helios.Error(#1'Nelze ulo<6C>it hlavi<76>ku dokladu, kontaktujte spr<70>vce.'#1 + CRLF + E.Message + CRLF + sql);
|
||
end;
|
||
if idDZ>0 then
|
||
begin
|
||
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=' + IntToStr(Helios.UserId) + ' WHERE id=' + IntToStr(idDZ));
|
||
if vTabPol.RecordCount>0 then
|
||
begin
|
||
polIdx:= viewPol.DataController.FocusedRecordIndex; // uloz index zaznamu pro zpetne oznaceni
|
||
vTabPol.First;
|
||
while not(vTabPol.Eof) do
|
||
begin
|
||
idPZ:= 0;
|
||
|
||
sql:= 'DECLARE @idPZ INT' + CRLF;
|
||
sql:= sql + 'EXEC dbo.hp_InsertPolozkyOZ @idPZ OUT,@IDDoklad=' + IntToStr(idDZ) + ',@DruhPohybu=' + druhV;
|
||
sql:= sql + ',@CisloOrg=' + selCisOrg.Text + ',@IDZboSklad=' + VarToStr(vTabPol.Fields.Fields[0].AsString) + ',@Kurz=1';
|
||
sql:= sql + ',@JednotkaMeny=1,@KurzEuro=1,@SazbaSD=0,@SazbaDPH=0,@ZakazanoDPH=0,@Mena=N' + QuotedStr(cbMena.Text);
|
||
sql:= sql + ',@Selectem=0,@PovolitDuplicitu=1,@VstupniCena=' + IntToStr(vstCena);
|
||
sql:= sql + ',@Mnozstvi=' + StringReplace(vTabPol.FieldByName('Mnozstvi').AsString,',','.',[rfReplaceAll]);
|
||
sql:= sql + ',@JCbezDaniKC=' + StringReplace(vTabPol.FieldByName('JCbezDaniKc').AsString,',','.',[rfReplaceAll]);
|
||
sql:= sql + ',@MJ=N' + QuotedStr(vTabPol.FieldByName('MJ').AsString) + CRLF + 'SELECT @idPZ';
|
||
|
||
try
|
||
with Helios.OpenSQL(sql) do
|
||
idPZ:= StrToInt(VarToStr(FieldValues(0)));
|
||
except on E:Exception do
|
||
Helios.Error(#1'Nelze ulo<6C>it polo<6C>ku dokladu, kontaktujte spr<70>vce.'#1 + CRLF + E.Message + CRLF + sql);
|
||
end;
|
||
if idPZ>0 then
|
||
begin
|
||
vTabPol.Edit;
|
||
vTabPol.Fields.Fields[10].AsInteger:= idPZ;
|
||
vTabPol.Post;
|
||
sql:= 'UPDATE ' + tblPZ + ' SET CCbezDaniKc=' + StringReplace(vTabPol.FieldByName('CCbezDPH').AsString,',','.',[rfReplaceAll]);
|
||
if vstCena in [4,5,6,7] then
|
||
sql:= sql + ',CCbezDaniVal=' + StringReplace(vTabPol.FieldByName('CCbezDPH').AsString,',','.',[rfReplaceAll]);
|
||
sql:= sql + ' WHERE id=' + IntToStr(idPZ);
|
||
end;
|
||
vTabPol.Next;
|
||
end;
|
||
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZ) + ',@AktualizaceSlev=1');
|
||
viewPol.DataController.FocusedRecordIndex:= polIdx; // obnov oznaceny zaznam
|
||
end;
|
||
end;
|
||
end;
|
||
Close;
|
||
end
|
||
else
|
||
Helios.Error(#1'Nelze ulo<6C>it doklad, nepro<72>el form<72>ln<6C> kontrolou.'#1);
|
||
end;
|
||
|
||
procedure TformVydejka.btnPolAddClick(Sender: TObject);
|
||
var idKZ: ShortString;
|
||
sql: WideString;
|
||
polKZ: IHeQuery;
|
||
mnoz,jc: Extended;
|
||
begin
|
||
if (idSklad='') then
|
||
begin
|
||
idKZ:= '';
|
||
wherePodm:= 'TabKmenZbozi.Id IN (SELECT IDKmenZbozi FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(Helios.Sklad) + ')';
|
||
if Helios.Prenos(bidKZ, 'id', oVar1, wherePodm, '', True) then
|
||
idKZ:= VarToStr(oVar1);
|
||
if idKZ<>'' then
|
||
begin
|
||
sql:= 'SELECT id FROM ' + tblSS + ' WHERE IDKmenZbozi=' + idKZ + ' AND IDSklad=N' + QuotedStr(Helios.Sklad);
|
||
with Helios.OpenSQL(sql) do
|
||
if RecordCount>0 then
|
||
begin
|
||
mnoz:= 0;
|
||
jc:= 0;
|
||
if not vTabPol.Active then
|
||
vTabPol.Open;
|
||
vTabPol.Append;
|
||
vTabPol.Fields.Fields[0].AsInteger:= StrToInt(VarToStr(FieldValues(0)));
|
||
sql:= 'SELECT * FROM ' + tblKZ + ' WHERE id=' + idKZ;
|
||
polKZ:= Helios.OpenSQL(sql);
|
||
vTabPol.Fields.Fields[1].AsInteger:= StrToInt(VarToStr(idKZ));
|
||
vTabPol.Fields.Fields[2].AsString:= VarToStr(polKZ.FieldByNameValues('SkupZbo'));
|
||
vTabPol.Fields.Fields[3].AsString:= VarToStr(polKZ.FieldByNameValues('RegCis'));
|
||
vTabPol.Fields.Fields[4].AsString:= VarToStr(polKZ.FieldByNameValues('Nazev1'));
|
||
vTabPol.Fields.Fields[5].AsString:= VarToStr(polKZ.FieldByNameValues('Nazev2'));
|
||
if not VarIsNull(polKZ.FieldByNameValues('MJevidence')) then
|
||
vTabPol.Fields.Fields[6].AsString:= VarToStr(polKZ.FieldByNameValues('MJevidence'));
|
||
vTabPol.Fields.Fields[7].AsFloat:= 0;
|
||
vTabPol.Fields.Fields[8].AsFloat:= 0;
|
||
if FormMnozstviCena('',mnoz,jc,false) then
|
||
begin
|
||
vTabPol.Fields.Fields[7].AsFloat:= mnoz;
|
||
vTabPol.Fields.Fields[8].AsFloat:= jc;
|
||
end;
|
||
vTabPol.Post;
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
Helios.Error(#1'Kooperant<6E>m lze vyd<79>vat pouze p<>ednastaven<65> materi<72>ly' + CRLF + '(z<>lo<6C>ka 3-Sklady kooperant<6E>).'#1);
|
||
end;
|
||
|
||
procedure TformVydejka.btnPolDelClick(Sender: TObject);
|
||
var p: ShortString;
|
||
idxR: integer;
|
||
begin
|
||
idxR:= viewPol.DataController.FocusedRowIndex;
|
||
p:= VarToStr(viewPol.ViewData.Rows[idxR].Values[4]);
|
||
p:= p + ' (' + VarToStr(viewPol.ViewData.Rows[idxR].Values[7]) + ' ';
|
||
p:= p + VarToStr(viewPol.ViewData.Rows[idxR].Values[6]) + ')';
|
||
if Helios.YesNo('Opravdu chcete z dokladu smazat polo<6C>ku '#1 + p + #1' ?',false) then
|
||
begin
|
||
vTabPol.RecNo:= viewPol.DataController.FocusedRecordIndex;
|
||
vTabPol.Delete;
|
||
vTabPol.Refresh;
|
||
end;
|
||
end;
|
||
|
||
procedure TformVydejka.btnPolEditClick(Sender: TObject);
|
||
var m,c: Extended;
|
||
idx: integer;
|
||
begin
|
||
idx:= viewPol.DataController.FocusedRecordIndex;
|
||
vTabPol.RecNo:= idx;
|
||
m:= vTabPol.Fields.FieldByName('Mnozstvi').AsExtended;
|
||
c:= vTabPol.Fields.FieldByName('JCbezDaniKC').AsExtended;
|
||
if FormMnozstviCena('',m,c,false) then
|
||
begin
|
||
vTabPol.Edit;
|
||
vTabPol.Fields.FieldByName('Mnozstvi').AsExtended:= m;
|
||
vTabPol.Fields.FieldByName('JCbezDaniKC').AsExtended:= c;
|
||
vTabPol.Post;
|
||
end;
|
||
viewPol.DataController.FocusedRecordIndex:= idx;
|
||
end;
|
||
|
||
procedure TformVydejka.FormActivate(Sender: TObject);
|
||
begin
|
||
selCisOrg.SetFocus;
|
||
end;
|
||
|
||
procedure TformVydejka.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
if vTabSklad.Active then
|
||
vTabSklad.Close;
|
||
if vTabPol.Active then
|
||
vTabPol.Close;
|
||
if idDZ>0 then
|
||
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=null WHERE id=' + IntToStr(idDZ));
|
||
Helios.Refresh(true);
|
||
Action:= caFree;
|
||
end;
|
||
|
||
procedure TformVydejka.NactiDoklad;
|
||
var dz: IHeQuery;
|
||
idx: Integer;
|
||
pol: IHeQuery;
|
||
begin
|
||
sql:= 'SELECT * FROM ' + tblDZ + ' WHERE id=' + IntToStr(idDZ);
|
||
dz:= Helios.OpenSQL(sql);
|
||
if dz.RecordCount=1 then
|
||
begin
|
||
cDokl:= VarToStr(dz.FieldByNameValues('PoradoveCislo'));
|
||
cOrg:= VarToStr(dz.FieldByNameValues('CisloOrg'));
|
||
selKurz.Text:= Format('%3.4f',[StrToFloat(VarToStr(dz.FieldByNameValues('Kurz')))]);
|
||
selCisOrg.Text:= cOrg;
|
||
selCisOrgExit(Self);
|
||
Self.Caption:= Helios.Sklad + ' ' + radaPopis + ' ' + radaV + ' ' + StringOfChar('0',6 - Length(cDokl)) + cDokl;
|
||
edtDatPrip.Date:= StrToDate(VarToStr(dz.FieldByNameValues('DatPorizeni_X')));
|
||
pol:= Helios.OpenSQL('SELECT * FROM ' + tblPZ + ' WHERE IDDoklad=' + IntToStr(idDZ) + ' ORDER BY SkupZbo,RegCis');
|
||
if pol.RecordCount>0 then
|
||
begin
|
||
if not vTabPol.Active then
|
||
vTabPol.Open;
|
||
vTabPol.Clear;
|
||
pol.First;
|
||
while not(pol.EOF) do
|
||
begin
|
||
vTabPol.Append;
|
||
idSS:= VarToStr(pol.FieldByNameValues('IdZboSklad'));
|
||
vTabPol.Fields.Fields[0].AsInteger:= StrToInt(idSS);
|
||
with Helios.OpenSQL('SELECT idKmenZbozi FROM ' + tblSS + ' WHERE id=' + idSS) do
|
||
idKZ:= VarToStr(FieldValues(0));
|
||
vTabPol.Fields.Fields[1].AsInteger:= StrToInt(idKZ);
|
||
vTabPol.Fields.Fields[2].AsString:= VarToStr(pol.FieldByNameValues('SkupZbo'));
|
||
vTabPol.Fields.Fields[3].AsString:= VarToStr(pol.FieldByNameValues('RegCis'));
|
||
vTabPol.Fields.Fields[4].AsString:= VarToStr(pol.FieldByNameValues('Nazev1'));
|
||
vTabPol.Fields.Fields[5].AsString:= VarToStr(pol.FieldByNameValues('Nazev2'));
|
||
vTabPol.Fields.Fields[6].AsString:= VarToStr(pol.FieldByNameValues('MJ'));
|
||
vTabPol.Fields.Fields[7].AsFloat:= StrToFloat(VarToStr(pol.FieldByNameValues('Mnozstvi')));
|
||
vTabPol.Fields.Fields[8].AsFloat:= StrToFloat(VarToStr(pol.FieldByNameValues('JCbezDaniKC')));
|
||
vTabPol.Fields.Fields[10].AsFloat:= StrToInt(VarToStr(pol.FieldByNameValues('Id')));
|
||
vTabPol.Post;
|
||
pol.Next;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TformVydejka.NovyDoklad;
|
||
begin
|
||
cDokl:= '';
|
||
dzShift:= '';
|
||
sql:= 'SELECT dzd.PosledniPC FROM ' + tblDDZdef + ' dzd INNER JOIN ' + tblDDZ + ' dz ON';
|
||
sql:= sql + ' (dz.ID=dzd.idDruhDZ) WHERE dzd.IdObdobi=' + IntToStr(Helios.Obdobi);
|
||
sql:= sql + ' AND dz.DruhPohybuZbo=' + druhV + ' AND dz.RadaDokladu=N' + QuotedStr(radaV);
|
||
with Helios.OpenSQL(sql) do
|
||
if RecordCount>0 then
|
||
dzShift:= VarToStr(FieldValues(0));
|
||
if DZshift= '' then
|
||
DZshift:= '1';
|
||
|
||
sql:= 'DECLARE @Cislo INT' + CRLF + 'EXEC @Cislo=dbo.hp_NajdiPrvniVolny ' + QuotedStr('TabDokladyZbozi') + ',' + QuotedStr('PoradoveCislo');
|
||
sql:= sql + ',' + DZshift + ',999999,N' + QuotedStr('RadaDokladu=N' + QuotedStr(radaV) + ' AND IDSklad=N' + QuotedStr(Helios.Sklad) + ' AND DruhPohybuZbo=' + druhV);
|
||
with Helios.OpenSQL(sql) do
|
||
cDokl:= VarToStr(FieldValues(0));
|
||
if cDokl=DZshift then
|
||
cDokl:= IntToStr(StrToInt(cDokl) + 1);
|
||
Self.Caption:= Helios.Sklad + ' ' + radaPopis + ' ' + radaV + ' ' + StringOfChar('0',6 - Length(cDokl)) + cDokl;
|
||
edtDatPrip.Date:= Now;
|
||
if vstCena in [4,5,6,7] then
|
||
selKurz.Enabled:= true
|
||
else
|
||
selKurz.Enabled:= false;
|
||
selKurz.Text:= '1.0';
|
||
end;
|
||
|
||
procedure TformVydejka.pgControlChange(Sender: TObject);
|
||
begin
|
||
if pgControl.ActivePageIndex=2 then
|
||
pgSklad.Visible:= idSklad<>'';
|
||
end;
|
||
|
||
procedure TformVydejka.pmSklad1Click(Sender: TObject);
|
||
begin
|
||
if idSklad<>'' then
|
||
NaplnSkladKoop;
|
||
end;
|
||
|
||
procedure TformVydejka.FormShow(Sender: TObject);
|
||
var idx: Integer;
|
||
helParam: THeliosParams;
|
||
begin
|
||
Self.Constraints.MaxWidth:= Self.Width;
|
||
Self.Constraints.MinWidth:= Self.Width;
|
||
Self.Constraints.MaxHeight:= Self.Height;
|
||
Self.Constraints.MinHeight:= Self.Height;
|
||
|
||
Self.Icon.Handle:= Helios.MainApplicationIconHandle;
|
||
Self.Font.Name:= Helios.Font;
|
||
helUtils.NactiParametryHeliosu(Helios, helParam);
|
||
pgControl.ActivePageIndex:= 0;
|
||
|
||
cxSetResourceString(@scxGridGroupByBoxCaption,'Sem p<>et<65>hn<68>te z<>hlav<61> sloupc<70>, podle kter<65>ch chcete p<>ehled seskupit.');
|
||
viewPol.OptionsView.NoDataToDisplayInfoText:= '';
|
||
viewPol.OptionsView.GroupByBox:= False;
|
||
viewSklad.OptionsView.NoDataToDisplayInfoText:= '';
|
||
viewSklad.OptionsView.GroupByBox:= False;
|
||
|
||
idx:= 0;
|
||
while idx<Self.ComponentCount-1 do
|
||
begin
|
||
if (Self.Components[idx] is TLabel) then
|
||
begin
|
||
TLabel(Self.Components[idx]).Font.Name:= Helios.Font;
|
||
TLabel(Self.Components[idx]).Font.Height:= Helios.FontHeight;
|
||
end;
|
||
|
||
if (Self.Components[idx] is TButton) then
|
||
begin
|
||
TButton(Self.Components[idx]).Font.Name:= Helios.Font;
|
||
TButton(Self.Components[idx]).Font.Height:= Helios.FontHeight;
|
||
end;
|
||
|
||
if (Self.Components[idx] is TRzDateTimeEdit) then
|
||
begin
|
||
TRzDateTimeEdit(Self.Components[idx]).Font.Name:= Helios.Font;
|
||
TRzDateTimeEdit(Self.Components[idx]).Font.Height:= Helios.FontHeight;
|
||
if helParam.podbarveni then
|
||
TRzDateTimeEdit(Self.Components[idx]).FocusColor:= helParam.colBg;
|
||
end;
|
||
|
||
if (Self.Components[idx] is TRzEdit) then
|
||
begin
|
||
TRzEdit(Self.Components[idx]).Font.Name:= Helios.Font;
|
||
TRzEdit(Self.Components[idx]).Font.Height:= Helios.FontHeight;
|
||
if helParam.podbarveni then
|
||
TRzEdit(Self.Components[idx]).FocusColor:= helParam.colBg;
|
||
end;
|
||
|
||
if (Self.Components[idx] is TRzButtonEdit) then
|
||
begin
|
||
TRzButtonEdit(Self.Components[idx]).Font.Name:= Helios.Font;
|
||
TRzButtonEdit(Self.Components[idx]).Font.Height:= Helios.FontHeight;
|
||
if helParam.podbarveni then
|
||
TRzButtonEdit(Self.Components[idx]).FocusColor:= helParam.colBg;
|
||
end;
|
||
|
||
if (Self.Components[idx] is TcxGrid) then
|
||
begin
|
||
TcxGrid(Self.Components[idx]).Font.Name:= Helios.Font;
|
||
TcxGrid(Self.Components[idx]).Font.Height:= Helios.FontHeight;
|
||
end;
|
||
|
||
Inc(idx);
|
||
end;
|
||
|
||
HeliosImages:= THeliosImages.Create;
|
||
imgList:= HeliosImages.ImageList32;
|
||
|
||
tBar.Images:= imgList;
|
||
tBtn1.ImageIndex:= 1;
|
||
tBtn2.ImageIndex:= 2;
|
||
|
||
tBtn1.Enabled:= false;
|
||
tBtn2.Enabled:= false;
|
||
|
||
imgList.GetBitmap(3, btnPolAdd.Glyph);
|
||
imgList.GetBitmap(4, btnPolEdit.Glyph);
|
||
imgList.GetBitmap(5, btnPolDel.Glyph);
|
||
|
||
if Pos('N',radaV)>0 then
|
||
begin
|
||
radaV:= MidStr(radaV,2,5);
|
||
radaV:= StringReplace(radaV,'''','',[rfReplaceAll]);
|
||
end;
|
||
|
||
with Helios.OpenSQL('SELECT Nazev FROM ' + tblDDZ + ' WHERE RadaDokladu=N' + QuotedStr(radaV) + ' AND DruhPohybuZbo=' + druhV) do
|
||
radaPopis:= VarToStr(FieldValues(0));
|
||
|
||
pgSklad.Visible:= false;
|
||
pgSklad.TabVisible:= false;
|
||
|
||
cbMena.Clear;
|
||
cbMena.Items.Add('CZK');
|
||
with Helios.OpenSQL('SELECT DISTINCT(Mena) FROM ' + tblKList + ' ORDER BY Mena') do
|
||
if RecordCount>0 then
|
||
begin
|
||
First;
|
||
while not(EOF) do
|
||
begin
|
||
cbMena.Items.Add(VarToStr(FieldValues(0)));
|
||
Next;
|
||
end;
|
||
end;
|
||
cbMena.ItemIndex:= 0;
|
||
|
||
VytvorGrid;
|
||
if idDZ=0 then
|
||
NovyDoklad
|
||
else
|
||
NactiDoklad;
|
||
end;
|
||
|
||
function TformVydejka.ZjistiKurzDleMeny(mena: ShortString): Extended;
|
||
begin
|
||
result:= 1;
|
||
if mena<>'' then
|
||
begin
|
||
sql:= 'DECLARE @dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,' + QuotedStr(edtDatPrip.Text) + ',104)' + CRLF;
|
||
sql:= sql + 'SELECT Kurz FROM ' + tblKList + ' WHERE Datum<=@dt AND Mena=N' + QuotedStr(mena) + ' ORDER BY Datum DESC';
|
||
with Helios.OpenSQL(sql) do
|
||
result:= StrToFloat(VarToStr(FieldValues(0)));
|
||
cbMena.Enabled:= true;
|
||
end;
|
||
end;
|
||
|
||
procedure TformVydejka.selCisOrgButtonClick(Sender: TObject);
|
||
var mena: ShortString;
|
||
sql: WideString;
|
||
begin
|
||
if Helios.Prenos2(bidCisOrg,'CisloOrg','Nazev', oVar1, oVar2,'','Vyberte organizaci',true,false,false,1) then
|
||
begin
|
||
if (vTabPol.RecordCount=0) or (idSklad='') then
|
||
begin
|
||
selCisOrg.Text:= VarToStr(oVar1);
|
||
mena:= '';
|
||
with Helios.OpenSQL('SELECT Mena FROM ' + tblCOrg + ' WHERE CisloOrg=' + selCisOrg.Text) do
|
||
if RecordCount=1 then
|
||
mena:= VarToStr(FieldValues(0));
|
||
if mena<>'' then
|
||
cbMena.ItemIndex:= cbMena.Items.IndexOf(mena)
|
||
else
|
||
cbMena.ItemIndex:= cbMena.Items.IndexOf('CZK');
|
||
selKurz.Text:= FloatToStr(ZjistiKurzDleMeny(mena));
|
||
idSklad:= GetSklad;
|
||
pgSklad.TabVisible:= idSklad<>'';
|
||
selOdber.Text:= VarToStr(oVar2);
|
||
end
|
||
else
|
||
Helios.Error(#1'Na dokladu jsou ji<6A> zadan<61> polo<6C>ky vybran<61>ho Kooperanta, nelze m<>nit Odb<64>ratele.'#1);
|
||
end;
|
||
if not pgSklad.TabVisible then
|
||
vTabSklad.Clear;
|
||
end;
|
||
|
||
procedure TformVydejka.selCisOrgExit(Sender: TObject);
|
||
var mena: ShortString;
|
||
begin
|
||
selCisOrg.Text:= Trim(selCisOrg.Text);
|
||
if (vTabPol.RecordCount=0) or (idSklad='') then
|
||
begin
|
||
if (selCisOrg.Text<>'') then
|
||
with Helios.OpenSQL('SELECT Nazev,Mena FROM ' + tblCOrg + ' WHERE CisloOrg=' + selCisOrg.Text) do
|
||
if RecordCount>0 then
|
||
begin
|
||
idSklad:= GetSklad;
|
||
pgSklad.TabVisible:= idSklad<>'';
|
||
if not VarIsNull(FieldValues(0)) then
|
||
selOdber.Text:= VarToStr(FieldValues(0));
|
||
mena:= '';
|
||
if not VarIsNull(FieldValues(1)) then
|
||
mena:= VarToStr(FieldValues(1));
|
||
if mena<>'' then
|
||
cbMena.ItemIndex:= cbMena.Items.IndexOf(mena)
|
||
else
|
||
cbMena.ItemIndex:= cbMena.Items.IndexOf('CZK');
|
||
selKurz.Text:= FormatFloat('###,##0.0###',ZjistiKurzDleMeny(mena));
|
||
end;
|
||
end
|
||
else
|
||
Helios.Error(#1'Na dokladu jsou ji<6A> zadan<61> polo<6C>ky vybran<61>ho Kooperanta, nelze m<>nit Odb<64>ratele.'#1);
|
||
if not pgSklad.TabVisible then
|
||
vTabSklad.Clear;
|
||
end;
|
||
|
||
procedure TformVydejka.selCisOrgMistoButtonClick(Sender: TObject);
|
||
begin
|
||
if Helios.Prenos2(bidCisOrg,'CisloOrg','Nazev', oVar1, oVar2,'','Vyberte organizaci',true,false,false,1) then
|
||
begin
|
||
selCisOrgMisto.Text:= VarToStr(oVar1);
|
||
selOdberMisto.Text:= VarToStr(oVar2);
|
||
end;
|
||
end;
|
||
|
||
procedure TformVydejka.selCisOrgMistoExit(Sender: TObject);
|
||
begin
|
||
selCisOrgMisto.Text:= Trim(selCisOrgMisto.Text);
|
||
if (selCisOrgMisto.Text<>'') and (selOdberMisto.Text='') then
|
||
with Helios.OpenSQL('SELECT Nazev FROM ' + tblCOrg + ' WHERE CisloOrg=' + selCisOrgMisto.Text) do
|
||
if RecordCount>0 then
|
||
begin
|
||
if not VarIsNull(FieldValues(0)) then
|
||
selOdberMisto.Text:= VarToStr(FieldValues(0));
|
||
end;
|
||
NaplnSkladKoop;
|
||
end;
|
||
|
||
procedure TformVydejka.selKurzButtonClick(Sender: TObject);
|
||
begin
|
||
if cbMena.Text<>'CZK' then
|
||
begin
|
||
if Helios.Prenos(bidKList,'Kurz',oVar1,'Mena=N' + QuotedStr(cbMena.Text),'Kurzovn<76> l<>stek',True) then
|
||
selKurz.Text:= FormatFloat('###,##0.0###',StrToFloat(VarToStr(oVar1)))
|
||
else
|
||
selKurz.Text:= '1,0';
|
||
end
|
||
else
|
||
Helios.Error(#1'Jako m<>na jsou vybran<61> koruny, vyberte ciz<69> m<>nu.'#1);
|
||
end;
|
||
|
||
procedure TformVydejka.selOdberButtonClick(Sender: TObject);
|
||
begin
|
||
selCisOrgButtonClick(Sender);
|
||
end;
|
||
|
||
procedure TformVydejka.selOdberMistoButtonClick(Sender: TObject);
|
||
begin
|
||
selCisOrgMistoButtonClick(Sender);
|
||
end;
|
||
|
||
procedure TformVydejka.viewPolCellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
|
||
AShift: TShiftState; var AHandled: Boolean);
|
||
var idx: integer;
|
||
begin
|
||
idx:= ACellViewInfo.RecordViewInfo.Index;
|
||
btnPolEditClick(Sender);
|
||
end;
|
||
|
||
procedure TformVydejka.viewPolColumnHeaderClick(Sender: TcxGridTableView; AColumn: TcxGridColumn);
|
||
begin
|
||
ShowMessage('<27><><EFBFBD>ka: ' + IntToStr(AColumn.Width));
|
||
end;
|
||
|
||
procedure TformVydejka.viewSkladCellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
|
||
AShift: TShiftState; var AHandled: Boolean);
|
||
var m,c: Extended;
|
||
begin
|
||
if vTabSklad.RecordCount>0 then
|
||
begin
|
||
if not vTabPol.Active then
|
||
vTabPol.Open;
|
||
vTabPol.Append;
|
||
vTabPol.Fields.FieldByName('idSS').AsInteger:= vTabSklad.Fields.FieldByName('idSS').AsInteger;
|
||
vTabPol.Fields.FieldByName('idKZ').AsInteger:= vTabSklad.Fields.FieldByName('idKZ').AsInteger;
|
||
vTabPol.Fields.FieldByName('SkupZbo').AsString:= vTabSklad.Fields.FieldByName('SkupZbo').AsString;
|
||
vTabPol.Fields.FieldByName('regCis').AsString:= vTabSklad.Fields.FieldByName('regCis').AsString;
|
||
vTabPol.Fields.FieldByName('Nazev1').AsString:= vTabSklad.Fields.FieldByName('Nazev1').AsString;
|
||
vTabPol.Fields.FieldByName('Nazev2').AsString:= vTabSklad.Fields.FieldByName('Nazev2').AsString;
|
||
vTabPol.Fields.FieldByName('MJ').AsString:= vTabSklad.Fields.FieldByName('MJ').AsString;
|
||
m:= vTabSklad.Fields.FieldByName('Mnozstvi').AsExtended;
|
||
c:= vTabSklad.Fields.FieldByName('Prumer').AsExtended;
|
||
vTabPol.Fields.FieldByName('Mnozstvi').AsExtended:= m;
|
||
vTabPol.Fields.FieldByName('JCbezDaniKc').AsExtended:= c;
|
||
if FormMnozstviCena('',m,c,false) then
|
||
begin
|
||
vTabPol.Fields.FieldByName('Mnozstvi').AsExtended:= m;
|
||
vTabPol.Fields.FieldByName('JCbezDaniKc').AsExtended:= c;
|
||
end;
|
||
vTabPol.Post;
|
||
end;
|
||
end;
|
||
|
||
procedure TformVydejka.vTabPolCalcFields(DataSet: TDataSet);
|
||
var jc,mn: Extended;
|
||
begin
|
||
if DataSet.RecordCount<>0 then
|
||
begin
|
||
mn:= DataSet.FieldByName('Mnozstvi').AsFloat;
|
||
jc:= DataSet.FieldByName('JCbezDaniKc').AsFloat;
|
||
DataSet.FieldByName('CCbezDPH').AsFloat:= RoundToEx(mn*jc,-2);
|
||
end;
|
||
end;
|
||
|
||
end.
|