2083 lines
70 KiB
ObjectPascal
2083 lines
70 KiB
ObjectPascal
unit frmBaliciListy;
|
||
|
||
interface
|
||
|
||
uses
|
||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ddPlugin_TLB, Vcl.StdCtrls, Vcl.Mask, RzEdit,
|
||
RzBtnEdt, DB, helUtils, Vcl.Buttons, RzCmboBx, Vcl.Menus, FireDAC.Comp.Client, FireDAC.Stan.Intf,
|
||
FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
|
||
FireDAC.Comp.DataSet, Vcl.ComCtrls, Vcl.Grids, Vcl.DBGrids, JvExDBGrids, JvDBGrid, JvExComCtrls, JvStatusBar;
|
||
|
||
const errPlg = #13#10 + '(plgLovato.frmBalListy)';
|
||
tblBL = '[dbo].[_TabBL]';
|
||
tblBLPol = '[dbo].[_TabBLPolozky]';
|
||
cOrgFinaly = '3';
|
||
VyrSkl = '200';
|
||
VyrFin = '210';
|
||
VyrRekl = '20000001';
|
||
|
||
type
|
||
Tkooperanti = record
|
||
Nazev, Sklad: string;
|
||
CisloOrg: Integer;
|
||
ItemIndex: Integer;
|
||
end;
|
||
|
||
TformBaliciListy = class(TForm)
|
||
Label1: TLabel;
|
||
Label2: TLabel;
|
||
Label3: TLabel;
|
||
selSZ: TRzButtonEdit;
|
||
GroupBox2: TGroupBox;
|
||
GroupBox3: TGroupBox;
|
||
selRegCis: TRzButtonEdit;
|
||
edtKS: TRzNumericEdit;
|
||
Label7: TLabel;
|
||
Label9: TLabel;
|
||
edtBox: TRzNumericEdit;
|
||
vTabBL: TFDMemTable;
|
||
dsBL: TDataSource;
|
||
btnOK: TButton;
|
||
btnCancel: TButton;
|
||
lblKarta: TLabel;
|
||
btnAddPol: TBitBtn;
|
||
Label4: TLabel;
|
||
edtDat: TRzDateTimeEdit;
|
||
Label5: TLabel;
|
||
cbOrg: TRzComboBox;
|
||
pMenu: TPopupMenu;
|
||
pmDelPol: TMenuItem;
|
||
cbVratka: TCheckBox;
|
||
Label6: TLabel;
|
||
edtPrikaz: TRzNumericEdit;
|
||
pmObnovNeulozene: TMenuItem;
|
||
N1: TMenuItem;
|
||
N2: TMenuItem;
|
||
pmSmazNeulozene: TMenuItem;
|
||
N3: TMenuItem;
|
||
pmImpReader: TMenuItem;
|
||
cbTypDokl: TRzComboBox;
|
||
cbReklamace: TCheckBox;
|
||
lblVerze: TLabel;
|
||
vTabBLidKZ: TIntegerField;
|
||
vTabBLidSS: TIntegerField;
|
||
vTabBLidPZ: TIntegerField;
|
||
vTabBLSkupZbo: TStringField;
|
||
vTabBLRegCis: TStringField;
|
||
vTabBLBox: TStringField;
|
||
vTabBLMnoz: TFloatField;
|
||
vTabBLCelkHmot: TFloatField;
|
||
vTabBLPrikaz: TIntegerField;
|
||
vTabBLIdBLPol: TIntegerField;
|
||
vTabBLIDSklad: TStringField;
|
||
vTabBLidSSCil: TIntegerField;
|
||
vTabBLIDSkladCil: TStringField;
|
||
grd: TJvDBGrid;
|
||
statBar: TJvStatusBar;
|
||
procedure FormShow(Sender: TObject);
|
||
procedure btnCancelClick(Sender: TObject);
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure selSZButtonClick(Sender: TObject);
|
||
procedure selRegCisButtonClick(Sender: TObject);
|
||
procedure selRegCisExit(Sender: TObject);
|
||
procedure selRegCisKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
procedure selSZKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
procedure edtKSExit(Sender: TObject);
|
||
procedure btnAddPolClick(Sender: TObject);
|
||
procedure btnOKClick(Sender: TObject);
|
||
procedure pmDelPolClick(Sender: TObject);
|
||
procedure cbOrgChange(Sender: TObject);
|
||
procedure FormActivate(Sender: TObject);
|
||
procedure cbVratkaClick(Sender: TObject);
|
||
procedure viewPolKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
procedure pmObnovNeulozeneClick(Sender: TObject);
|
||
procedure pmSmazNeulozeneClick(Sender: TObject);
|
||
procedure pmImpReaderClick(Sender: TObject);
|
||
procedure cbTypDoklChange(Sender: TObject);
|
||
procedure btnOKMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
procedure cbTypDoklEnter(Sender: TObject);
|
||
procedure cbOrgEnter(Sender: TObject);
|
||
procedure vTabBLAfterPost(DataSet: TDataSet);
|
||
procedure grdDblClick(Sender: TObject);
|
||
private
|
||
helParams: THeliosParams;
|
||
cfMnozBLDef: TFieldDef;
|
||
cfMnozBL: TField;
|
||
function JeLovato: boolean;
|
||
function JePrevodka: boolean;
|
||
function VratVyrFin: string;
|
||
function VratSumu (FieldName: string): Extended;
|
||
procedure VytvorTabulkyAGrid;
|
||
procedure TestRC;
|
||
procedure NastavEdity;
|
||
procedure NastavFonty;
|
||
procedure NactiBalList;
|
||
procedure WMGetMinMaxInfo(var AMsg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
|
||
procedure FocusRegCis;
|
||
procedure FocusKS;
|
||
procedure NajdiZdrojCil;
|
||
public
|
||
idDZ: integer;
|
||
edit: Boolean;
|
||
typ: byte; // 1=BL, 2=Prevodka, 3=Prijemka
|
||
Helios: IHelios;
|
||
end;
|
||
|
||
var
|
||
formBaliciListy: TformBaliciListy;
|
||
koop: TArray<Tkooperanti>;
|
||
oVar1,oVar2: OleVariant;
|
||
rDokl, cDokl, sIdSS, sIdSSCil, verText, sklZdroj, sklCil: string;
|
||
idPZDZ, idBL, idPZBL, idKZ: integer;
|
||
mnoz, hmotZ, hmotC: Extended;
|
||
iOdb: integer;
|
||
selVyber, jsemLov, jsemPrev, insData: boolean;
|
||
oldCBTyp, oldCBOdb: integer;
|
||
|
||
implementation
|
||
uses System.StrUtils, Vcl.Clipbrd;
|
||
|
||
{$R *.dfm}
|
||
|
||
function GetAveCharSize(Canvas: TCanvas): TPoint;
|
||
const Buffer: PChar = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||
var tm: TTextMetric;
|
||
begin
|
||
GetTextMetrics(Canvas.Handle, tm);
|
||
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
|
||
Result.X := (Result.X div 26 + 1) div 2;
|
||
Result.Y := tm.tmHeight;
|
||
end;
|
||
|
||
|
||
|
||
function FormMnozstviBox(const Helios: IHelios; Title: string; var mnoz: extended; var box: string): boolean;
|
||
var frm: TForm;
|
||
lbl1,lbl2: TLabel;
|
||
eMnoz,eBox: TEdit;
|
||
btnOK,btnCancel: TButton;
|
||
DialogUnits: TPoint;
|
||
ButtonWidth, ButtonHeight: Integer;
|
||
begin
|
||
result:= false;
|
||
frm:= TForm.Create(nil);
|
||
with frm do
|
||
try
|
||
Canvas.Font:= Font;
|
||
DialogUnits:= GetAveCharSize(Canvas);
|
||
BorderStyle:= bsDialog;
|
||
Caption:= Title;
|
||
ClientWidth:= MulDiv(180, DialogUnits.X, 4);
|
||
ClientHeight:= 150;
|
||
Position:= poScreenCenter;
|
||
lbl1:= TLabel.Create(frm);
|
||
with lbl1 do
|
||
begin
|
||
Parent:= frm;
|
||
Caption:= 'Mno<6E>stv<74>: ';
|
||
Left:= MulDiv(8, DialogUnits.X, 4);
|
||
Top:= MulDiv(8, DialogUnits.X, 4);
|
||
Constraints.MaxWidth:= MulDiv(164, DialogUnits.X, 4);
|
||
WordWrap:= True;
|
||
end;
|
||
lbl2:= TLabel.Create(frm);
|
||
with lbl2 do
|
||
begin
|
||
Parent:= frm;
|
||
Caption:= '<27><>slo boxu/krabice: ';
|
||
Left:= MulDiv(8, DialogUnits.X, 4);
|
||
Top:= lbl1.Top + lbl1.Height + 10;
|
||
Constraints.MaxWidth:= MulDiv(164, DialogUnits.X, 4);
|
||
WordWrap:= True;
|
||
end;
|
||
|
||
eMnoz:= TFloatEdit.Create(frm);
|
||
with eMnoz do
|
||
begin
|
||
Parent:= frm;
|
||
Left:= lbl2.Left + lbl2.Width + 25;
|
||
Top:= lbl1.Top;
|
||
Alignment:= taRightJustify;
|
||
Text:= FloatToStr(Mnoz);
|
||
end;
|
||
eBox:= TEdit.Create(frm);
|
||
with eBox do
|
||
begin
|
||
Parent:= frm;
|
||
Left:= lbl2.Left + lbl2.Width + 25;
|
||
Top:= lbl2.Top;
|
||
Alignment:= taRightJustify;
|
||
Text:= Box;
|
||
end;
|
||
|
||
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
|
||
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
|
||
with TButton.Create(frm) do
|
||
begin
|
||
Parent:= frm;
|
||
Caption:= 'OK';
|
||
ModalResult:= mrOK;
|
||
Default:= true;
|
||
SetBounds(MulDiv(20, DialogUnits.X, 4), 100, ButtonWidth, ButtonHeight);
|
||
end;
|
||
with TButton.Create(frm) do
|
||
begin
|
||
Parent:= frm;
|
||
Caption:= 'Zru<72>it';
|
||
ModalResult:= mrCancel;
|
||
Cancel:= True;
|
||
SetBounds(MulDiv(100, DialogUnits.X, 4), 100, ButtonWidth, ButtonHeight);
|
||
end;
|
||
|
||
if ShowModal=mrOK then
|
||
begin
|
||
result:= true;
|
||
mnoz:= StrToFloat(Trim(eMnoz.Text));
|
||
box:= Trim(eBox.Text);
|
||
end;
|
||
finally
|
||
frm.Free;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
function NajdiVKoop(vrat,podle: byte; fHodn: Variant): Variant;
|
||
var i: integer;
|
||
begin
|
||
case vrat of
|
||
1,3: result:= '';
|
||
else result:= -1;
|
||
end;
|
||
for i:=0 to Length(koop)-1 do
|
||
begin
|
||
case vrat of
|
||
// vrat Nazev
|
||
1: case podle of
|
||
2: if koop[i].CisloOrg=fHodn then
|
||
begin
|
||
result:= koop[i].Nazev;
|
||
Exit;
|
||
end;
|
||
3: if koop[i].Sklad=fHodn then
|
||
begin
|
||
result:= koop[i].Nazev;
|
||
Exit;
|
||
end;
|
||
4: if koop[i].ItemIndex=fHodn then
|
||
begin
|
||
result:= koop[i].Nazev;
|
||
Exit;
|
||
end;
|
||
end;
|
||
// vrat CisloOrg
|
||
2: case podle of
|
||
1: if koop[i].Nazev=fHodn then
|
||
begin
|
||
result:= koop[i].CisloOrg;
|
||
Exit;
|
||
end;
|
||
3: if koop[i].Sklad=fHodn then
|
||
begin
|
||
result:= koop[i].CisloOrg;
|
||
Exit;
|
||
end;
|
||
4: if koop[i].ItemIndex=fHodn then
|
||
begin
|
||
result:= koop[i].CisloOrg;
|
||
Exit;
|
||
end;
|
||
end;
|
||
// vrat Cislo skladu
|
||
3: case podle of
|
||
1: if koop[i].Nazev=fHodn then
|
||
begin
|
||
result:= koop[i].Sklad;
|
||
Exit;
|
||
end;
|
||
2: if koop[i].CisloOrg=fHodn then
|
||
begin
|
||
result:= koop[i].Sklad;
|
||
Exit;
|
||
end;
|
||
4: if koop[i].ItemIndex=fHodn then
|
||
begin
|
||
result:= koop[i].Sklad;
|
||
Exit;
|
||
end;
|
||
end;
|
||
// vrat ItemIndex
|
||
4: case podle of
|
||
1: if koop[i].Nazev=fHodn then
|
||
begin
|
||
result:= koop[i].ItemIndex;
|
||
Exit;
|
||
end;
|
||
2: if koop[i].CisloOrg=fHodn then
|
||
begin
|
||
result:= koop[i].ItemIndex;
|
||
Exit;
|
||
end;
|
||
3: if koop[i].Sklad=fHodn then
|
||
begin
|
||
result:= koop[i].ItemIndex;
|
||
Exit;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
function TformBaliciListy.VratVyrFin: string;
|
||
begin
|
||
result:= VyrFin;
|
||
with Helios.OpenSQL('SELECT Cislo FROM ' + tblStrom + ' WHERE Cislo LIKE N''2%'' AND TypStrediska=0') do
|
||
if (RecordCount=1) then
|
||
result:= VarToStr(FieldValues(0));
|
||
end;
|
||
|
||
|
||
|
||
function TformBaliciListy.VratSumu(FieldName: string): Extended;
|
||
var bmk: TBookmark;
|
||
begin
|
||
result:= 0;
|
||
|
||
if (Assigned(grd.DataSource)) then
|
||
if (grd.DataSource.DataSet.Active) then
|
||
begin
|
||
bmk:= vTabBL.GetBookmark;
|
||
vTabBL.DisableControls;
|
||
try
|
||
vTabBL.First;
|
||
while not(vTabBL.Eof) do
|
||
begin
|
||
if (vTabBL.FindField(FieldName)<>nil) then
|
||
if not(vTabBL.FieldByName(FieldName).IsNull) then
|
||
result:= result + vTabBL.FieldByName(FieldName).AsExtended;
|
||
vTabBL.Next;
|
||
end;
|
||
finally
|
||
if (vTabBL.BookmarkValid (bmk)) then
|
||
vTabBL.GotoBookmark (bmk);
|
||
vTabBL.FreeBookmark (bmk);
|
||
vTabBL.EnableControls;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.vTabBLAfterPost (DataSet: TDataSet);
|
||
begin
|
||
statBar.Panels.Items[1].Text:= FormatFloat('#,##0.##', self.VratSumu('Mnoz'));
|
||
statBar.Panels.Items[3].Text:= FormatFloat('#,##0.###', self.VratSumu('CelkHmot'));
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.NajdiZdrojCil;
|
||
begin
|
||
sklZdroj:= Helios.Sklad;
|
||
|
||
if (jsemLov) and (cbTypDokl.ItemIndex=3) then
|
||
sklZdroj:= VyrRekl;
|
||
|
||
if not(jsemLov) then
|
||
sklCil:= NajdiVKoop(3, 4, cbOrg.ItemIndex);
|
||
|
||
if (cbVratka.Checked) then
|
||
begin
|
||
sklZdroj:= NajdiVKoop(3, 4, cbOrg.ItemIndex);
|
||
sklCil:= VratVyrFin;
|
||
end;
|
||
|
||
if (cbTypDokl.Text='REKLAMACE') then
|
||
sklCil:= VyrRekl;
|
||
end;
|
||
|
||
|
||
|
||
function TformBaliciListy.JePrevodka: boolean;
|
||
var i: integer;
|
||
begin
|
||
result:= false;
|
||
for i:=0 to Length(koop)-1 do
|
||
if (koop[i].itemIndex=cbOrg.ItemIndex) then
|
||
if (koop[i].CisloOrg=0) then
|
||
result:= true;
|
||
jsemPrev:= result;
|
||
end;
|
||
|
||
|
||
|
||
function TformBaliciListy.JeLovato: boolean;
|
||
begin
|
||
result:= false;
|
||
if (Pos('it<69>lie',LowerCase(cbOrg.Text))>0) then
|
||
result:= true;
|
||
jsemLov:= result;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.FocusRegCis;
|
||
begin
|
||
selRegCis.SetFocus;
|
||
if Length(selRegCis.Text)=0 then
|
||
selRegCis.Text:= '%';
|
||
selRegCis.SelStart:= Length(selRegCis.Text);
|
||
selRegCis.SelLength:= 0;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.FocusKS;
|
||
begin
|
||
edtKS.SetFocus;
|
||
edtKS.SelStart:= 0;
|
||
edtKS.SelLength:= Length(edtKS.Text);
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.NactiBalList;
|
||
var pol: IHeQuery;
|
||
lSQL, tStr: string;
|
||
iTmp: integer;
|
||
begin
|
||
if (idDZ>0) then
|
||
begin
|
||
cbOrg.Enabled:= false;
|
||
edtDat.Enabled:= false;
|
||
edit:= false;
|
||
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblDZ + ' WHERE Realizovano=1 AND ID=' + IntToStr(idDZ)) do
|
||
if RecordCount>0 then
|
||
begin
|
||
edit:= true;
|
||
btnAddPol.Enabled:= False;
|
||
pMDelPol.Enabled:= false;
|
||
Helios.Error('Doklad byl realizov<6F>n, nelze editovat.');
|
||
btnOK.Enabled:= false;
|
||
end;
|
||
|
||
{
|
||
with Helios.OpenSQL('SELECT IDHlavicky FROM TabDokZboDodatek WHERE DatumTisku IS NOT NULL AND IDHlavicky=' + IntToStr(idDZ)) do
|
||
if RecordCount>0 then
|
||
begin
|
||
edit:= true;
|
||
btnAddPol.Enabled:= False;
|
||
pMDelPol.Enabled:= false;
|
||
Helios.Error('Doklad byl vytisknut<75>, nelze editovat.');
|
||
btnOK.Enabled:= false;
|
||
end;
|
||
}
|
||
|
||
lSQL:= 'SELECT co.CisloOrg,dz.DatPorizeni,dz.MistoUrceni FROM ' + tblDZ + ' dz INNER JOIN ' + tblCOrg + ' co ON (dz.CisloOrg=co.CisloOrg)';
|
||
lSQL:= lSQL + ' WHERE dz.id=' + IntToStr(idDZ);
|
||
with Helios.OpenSQL(lSQL) do
|
||
if RecordCount>0 then
|
||
begin
|
||
tStr:= VarToStr(FieldValues(1));
|
||
tStr:= LeftStr(tStr,Pos(' ',tStr)-1);
|
||
edtDat.Date:= StrToDate(tStr);
|
||
iTmp:= StrToInt(VarToStr(FieldValues(0)));
|
||
if (iTmp=1) then
|
||
cbOrg.ItemIndex:= 0
|
||
else
|
||
cbOrg.ItemIndex:= NajdiVKoop(4,2,iTmp);
|
||
cbTypDokl.Enabled:= true;
|
||
cbTypDokl.ItemIndex:= 0;
|
||
if (cbOrg.ItemIndex=0) then
|
||
begin
|
||
with Helios.OpenSQL('SELECT _TypBalicihoListu FROM ' + tblDZe + ' WHERE id=' + IntToStr(idDZ)) do
|
||
if not VarIsNull(FieldValues(0)) then
|
||
cbTypDokl.ItemIndex:= StrToInt(VarToStr(FieldValues(0))) - 1;
|
||
end;
|
||
lSQL:= 'SELECT pz.id,pz.IDZboSklad,pz.SkupZbo,pz.RegCis,pz.Mnozstvi,kz.id,pz.NazevSozNa1,pz.Hmotnost FROM ' + tblPZ + ' pz INNER JOIN ';
|
||
lSQL:= lSQL + tblKZ + ' kz ON (pz.RegCis=kz.RegCis AND pz.SkupZbo=kz.SkupZbo) WHERE pz.IDDoklad=' + IntToStr(idDZ);
|
||
// lSQL:= lSQL + ' ORDER BY pz.SkupZbo,pz.RegCis';
|
||
lSQL:= lSQL + ' ORDER BY pz.id';
|
||
pol:= Helios.OpenSQL(lSQL);
|
||
if pol.RecordCount>0 then
|
||
begin
|
||
if not vTabBL.Active then
|
||
vTabBL.Open;
|
||
vTabBL.EmptyDataSet;
|
||
pol.First;
|
||
while not(pol.EOF) do
|
||
begin
|
||
vTabBL.Insert;
|
||
vTabBL.FieldByName('idPZ').AsString:= VarToStr(pol.FieldValues(0));
|
||
vTabBL.FieldByName('idSS').AsString:= VarToStr(pol.FieldValues(1));
|
||
vTabBL.FieldByName('idKZ').AsString:= VarToStr(pol.FieldValues(5));
|
||
vTabBL.FieldByName('SkupZbo').AsString:= VarToStr(pol.FieldValues(2));
|
||
vTabBL.FieldByName('RegCis').AsString:= VarToStr(pol.FieldValues(3));
|
||
vTabBL.FieldByName('Box').AsString:= VarToStr(pol.FieldValues(6));
|
||
vTabBL.FieldByName('Mnoz').AsFloat:= StrToFloat(VarToStr(pol.FieldValues(4)));
|
||
vTabBL.FieldByName('CelkHmot').AsFloat:= RoundToEx(StrToFloat(VarToStr(pol.FieldValues(7))),-3);
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblBLPol + ' WHERE id=' + VarToStr(pol.FieldValues(0))) do
|
||
if RecordCount>0 then
|
||
vTabBL.FieldByName('IdBLPol').AsString:= VarToStr(FieldValues(0));
|
||
vTabBL.Post;
|
||
pol.Next;
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.TestRC;
|
||
var lSQL, podm, skl: string;
|
||
begin
|
||
jsemLov:= JeLovato;
|
||
if (jsemLov) and (cbTypDokl.ItemIndex=2) then
|
||
if (selSZ.Text<>'MAT') then
|
||
begin
|
||
Helios.Error(#1'Je vybr<62>n BL druh MATERI<52>L, nelze zadat d<>lce/polosestavy.'#1);
|
||
selSZ.Text:= '';
|
||
selRegCis.Text:= '';
|
||
edtKS.Value:= 0;
|
||
idKZ:= 0;
|
||
sIdSS:= '';
|
||
Exit;
|
||
end;
|
||
if (jsemLov) and (cbTypDokl.ItemIndex<2) then
|
||
if (Pos('POL_',selRegCis.Text)>0) or (selSZ.Text='MAT') then
|
||
begin
|
||
Helios.Error(#1'Je vybr<62>n BL druh FIN<49>LY/NEBALEN<45>, nelze zadat polosestavy <20>i materi<72>l.'#1);
|
||
selSZ.Text:= '';
|
||
selRegCis.Text:= '';
|
||
edtKS.Value:= 0;
|
||
idKZ:= 0;
|
||
sIdSS:= '';
|
||
Exit;
|
||
end;
|
||
|
||
if (sIdSS<>'') and (not selVyber) then
|
||
begin
|
||
if (idKZ>0) then
|
||
begin
|
||
lSQL:= 'SELECT Hmotnost FROM ' + tblKZ + ' WHERE id=' + IntToStr(idKZ);
|
||
with Helios.OpenSQL(lSQL) do
|
||
hmotZ:= StrToFloat(VarToStr(FieldValues(0)));
|
||
end;
|
||
lSQL:= 'SELECT id FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(sklCil) + ' AND IDKmenZbozi=(';
|
||
lSQL:= lSQL + 'SELECT IdKmenZbozi FROM ' + tblSS + ' WHERE id=' + sIdSS + ')';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount=1) then
|
||
if not(VarIsNull(FieldValues(0))) then
|
||
sIdSSCil:= VarToStr(FieldValues(0));
|
||
if (sIdSSCil='') and not(jsemLov) then
|
||
begin
|
||
Helios.Error(#1'Vybran<61> polo<6C>ka nen<65> ur<75>ena pro tohoto odb<64>ratele !'#1 + CRLF + 'Nejprve p<>i<EFBFBD>a<EFBFBD>te kartu na sklad.');
|
||
sIdSS:= '';
|
||
idKZ:= 0;
|
||
lblKarta.Caption:= '';
|
||
selSZ.Text:= '';
|
||
selRegCis.Text:= '%';
|
||
selRegCis.SetFocus;
|
||
Exit;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.grdDblClick (Sender: TObject);
|
||
var mnozZad, stav: Extended;
|
||
lSQL, box,skl: string;
|
||
chkStav: boolean;
|
||
clRow, clCol: integer;
|
||
fldName: string;
|
||
begin
|
||
// Z<>sk<73>n<EFBFBD> pozice kurzoru v gridu
|
||
clCol := grd.MouseCoord(Mouse.CursorPos.X - grd.ClientOrigin.X,
|
||
Mouse.CursorPos.Y - grd.ClientOrigin.Y).X;
|
||
clRow := grd.MouseCoord(Mouse.CursorPos.X - grd.ClientOrigin.X,
|
||
Mouse.CursorPos.Y - grd.ClientOrigin.Y).Y;
|
||
|
||
// Pokud je dvojklik na bu<62>ce, zjist<73>me jm<6A>no pole
|
||
if (clRow>0) and (clCol>0) then
|
||
begin
|
||
fldName:= grd.Columns[clCol-1].FieldName;
|
||
|
||
mnozZad:= vTabBL.FieldByName('Mnoz').AsFloat;
|
||
box:= vTabBL.FieldByName('Box').AsString;
|
||
if FormMnozstviBox(Helios, 'Zadejte opraven<65> mno<6E>stv<74>', mnozZad, box) then
|
||
begin
|
||
skl:= NajdiVKoop(3,4,cbOrg.ItemIndex);
|
||
if not(jsemLov) and (Helios.BrowseID=18) then
|
||
skl:= '200';
|
||
chkStav:= false;
|
||
if (Helios.BrowseID=18) then
|
||
chkStav:= true;
|
||
stav:= 0;
|
||
lSQL:= 'DECLARE @mn NUMERIC(19,6)' + CRLF + 'SET @mn=0' + CRlF;
|
||
lSQL:= lSQL + 'IF EXISTS(SELECT id FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(skl) + ' AND IdKmenZbozi=';
|
||
lSQL:= lSQL + vTabBL.FieldByName('idKZ').AsString + ')' + CRLF + 'SELECT @Mn=Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(skl);
|
||
lSQL:= lSQL + ' AND IdKmenZbozi=' + vTabBL.FieldByName('idKZ').AsString + CRLF + 'SELECT @mn';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if RecordCount>0 then
|
||
stav:= StrToFloat(VarToStr(FieldValues(0)));
|
||
if (stav<mnozZad) and not(jsemLov) and (chkStav) then
|
||
if Helios.YesNo(#1'Skladem je pouze ' + FloatToStr(stav) + ' kus<75>.' + CRLF + 'Chcete p<>ev<65>st JEN tento zbytek ?'#1,true) then
|
||
mnozZad:= stav;
|
||
|
||
vTabBL.Edit;
|
||
vTabBL.FieldByName('Mnoz').AsFloat:= mnozZad;
|
||
vTabBL.FieldByName('Box').AsString:= box;
|
||
vTabBL.Post;
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.viewPolKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
begin
|
||
if (Key=VK_DELETE) then
|
||
pMDelPolClick(Sender);
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.selRegCisButtonClick(Sender: TObject);
|
||
var podm, skl,bidTit: string;
|
||
cBid: integer;
|
||
begin
|
||
selVyber:= true;
|
||
|
||
NajdiZdrojCil;
|
||
|
||
if not(jsemLov) then
|
||
begin
|
||
podm:= 'IdSklad=N' + QuotedStr(sklZdroj);
|
||
// if not(JeLovato) and (Helios.BrowseID=18) then
|
||
// podm:= podm + QuotedStr(VyrSkl)
|
||
// else
|
||
// podm:= podm + QuotedStr(skl);
|
||
podm:= podm + ' AND IdKmenZbozi IN (SELECT idKmenZbozi FROM ' + tblSS + ' WHERE IDSklad=N';
|
||
podm:= podm + QuotedStr(sklCil) + ') AND Mnozstvi>0';
|
||
cBid:= 235;
|
||
end;
|
||
|
||
if (jsemLov) and (Helios.BrowseID=27) then
|
||
begin
|
||
podm:= 'IdSklad=N' + QuotedStr(sklZdroj) + ' AND IdKmenZbozi IN (SELECT id FROM ' + tblKZ + ' WHERE Material=';
|
||
if (cbTypDokl.ItemIndex=2) or (cbTypDokl.ItemIndex=3) then
|
||
podm:= podm + '1'
|
||
else
|
||
podm:= podm + '0';
|
||
podm:= podm + ' AND LEFT(RegCis,4)<>N' + QuotedStr('POL_') + ')';
|
||
cBid:= 235;
|
||
end;
|
||
|
||
bidTit:= 'Stavy skladu "' + sklZdroj +'"';
|
||
if (selRegCis.Text<>'%') and (selRegCis.Text<>'') then
|
||
podm:= podm + ' AND IdKmenZbozi IN (SELECT id FROM ' + tblKZ + ' WHERE RegCis LIKE N' + QuotedStr(selRegCis.Text + '%') + ')';
|
||
podm:= podm + ' AND IdKmenZbozi NOT IN (SELECT id FROM ' + tblKZ + ' WHERE Blokovano=1)';
|
||
if Helios.Prenos(cBid,'id',oVar1,podm,bidTit,true) then
|
||
begin
|
||
idKZ:= 0;
|
||
if (cBid=100050) or (cBid=235) then
|
||
begin
|
||
sIdSS:= VarToStr(oVar1); // zdroj
|
||
podm:= 'SELECT kz.SkupZbo,kz.RegCis,kz.id FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz ON (ss.IdKmenZbozi=kz.id)';
|
||
podm:= podm + ' WHERE ss.id=' + sIdSS;
|
||
with Helios.OpenSQL(podm) do
|
||
begin
|
||
selSZ.Text:= VarToStr(FieldValues(0));
|
||
selRegCis.Text:= VarToStr(FieldValues(1));
|
||
idKZ:= StrToInt(VarToStr(FieldValues(2)));
|
||
end;
|
||
end;
|
||
sIdSSCil:= '';
|
||
if (idKZ>0) then // and (skl<>VyrSkl)
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblSS + ' WHERE IDKmenZbozi=' + IntToStr(idKZ) + ' AND IDSklad=N' + QuotedStr(sklCil)) do
|
||
if (RecordCount=1) then
|
||
if not(VarIsNull(FieldValues(0))) then
|
||
sIdSSCil:= VarToStr(FieldValues(0));
|
||
if (sIdSSCil='') and not(jsemLov) then
|
||
begin
|
||
Helios.Error(#1'Tato polo<6C>ka nelze p<>ev<65>st na sklad ' + sklCil + #1 + CRLF + '(nen<65> vytvo<76>ena karta)');
|
||
Exit;
|
||
end;
|
||
|
||
if (cBid=bidKZ) then
|
||
begin
|
||
idKZ:= StrToInt(VarToStr(oVar1));
|
||
with Helios.OpenSQL('SELECT SkupZbo,RegCis FROM ' + tblKZ + ' WHERE id=' + IntToStr(idKZ)) do
|
||
begin
|
||
selSZ.Text:= VarToStr(FieldValues(0));
|
||
selRegCis.Text:= VarToStr(FieldValues(1));
|
||
end;
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblSS + ' WHERE IDKmenZbozi=' + IntToStr(idKZ) + ' AND IDSklad=N' + QuotedStr(skl)) do
|
||
if (RecordCount=1) then
|
||
sIdSS:= VarToStr(FieldValues(0));
|
||
end;
|
||
TestRC;
|
||
end;
|
||
{
|
||
if Helios.Prenos2(bidKZ,'SkupZbo','RegCis',oVar1,oVar2,podm,'Karty zbo<62><6F> a materi<72>lu',true,true,false,1) then
|
||
begin
|
||
selSZ.Text:= VarToStr(oVar1);
|
||
selSZ.Text:= StringReplace(selSZ.Text,'N''','',[rfReplaceAll]);
|
||
selSZ.Text:= StringReplace(selSZ.Text,'''','',[rfReplaceAll]);
|
||
selRegCis.Text:= VarToStr(oVar2);
|
||
selRegCis.Text:= StringReplace(selRegCis.Text,'N''','',[rfReplaceAll]);
|
||
if Length(selRegCis.Text)=2 then
|
||
selRegCis.Text:= selRegCis.Text + 'N';
|
||
selRegCis.Text:= StringReplace(selRegCis.Text,'''','',[rfReplaceAll]);
|
||
end;
|
||
}
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.selRegCisExit(Sender: TObject);
|
||
var lSQL, podm: string;
|
||
wild: boolean;
|
||
begin
|
||
jsemLov:= JeLovato;
|
||
jsemPrev:= JePrevodka;
|
||
if (selRegCis.Text<>'') and (selRegCis.Text<>'%') and not(selVyber) then
|
||
// KBN4L11P, %BGX5000 - final
|
||
// 4RF915 - nebalane
|
||
begin
|
||
NajdiZdrojCil;
|
||
sIdSS:= '';
|
||
sIdSSCil:= '';
|
||
if (selRegCis.Text[1]='%') then
|
||
begin
|
||
wild:= true;
|
||
selRegCis.Text:= MidStr(selRegCis.Text,2,255);
|
||
end;
|
||
|
||
lSQL:= 'SELECT ss.id FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz ON (ss.IdKmenZbozi=kz.id)';
|
||
lSQL:= lSQL + ' INNER JOIN ' + tblKZe + ' kze ON (kze.id=kz.id)';
|
||
lSQL:= lSQL + ' WHERE ss.IDSklad=N' + QuotedStr(sklZdroj) + ' AND kz.RegCis LIKE ' + QuotedStr('%' + selRegCis.Text + '%');
|
||
lSQL:= lSQL + ' AND kz.SkupZbo<>N' + QuotedStr('M00') + ' AND kz.SkupZbo IN (SELECT sz.SkupZbo FROM ';
|
||
lSQL:= lSQL + tblSZ + ' sz LEFT JOIN ' + tblSZe + ' sze ON (sz.id=sze.id) WHERE sze._JeVyroba=1)';
|
||
|
||
// finaly
|
||
if (cbTypDokl.ItemIndex=0) and (jsemLov) then
|
||
lSQL:= lSQL + ' AND kze._TypKartyVyroba IN (0,2)';
|
||
|
||
// nebalene
|
||
if (cbTypDokl.ItemIndex=1) and (jsemLov) then
|
||
lSQL:= lSQL + ' AND kze._TypKartyVyroba IN (1,2)';
|
||
|
||
{
|
||
with Helios.OpenSQL(lSQL + ' AND ss.Blokovano=1') do
|
||
begin
|
||
if (RecordCount>0) then
|
||
begin
|
||
Helios.Error(#1'N<>kter<65> odpov<6F>daj<61>c<EFBFBD> karta je na zdrojov<6F>m sklad<61> (' + sklZdroj + ') blokov<6F>na, pokud chcete' + CRLF + 'p<>ev<65>st blokovanou kartu, p<>evod se mus<75> ud<75>lat standardn<64>m editorem.'#1);
|
||
selRegCis.Text:= '%' + selRegCis.Text;
|
||
selRegCis.SetFocus;
|
||
idKZ:= 0;
|
||
sIdSS:= '';
|
||
sIdSSCil:= '';
|
||
end;
|
||
end;
|
||
}
|
||
|
||
with Helios.OpenSQL(lSQL) do
|
||
begin
|
||
case RecordCount of
|
||
0: begin
|
||
Helios.Error(#1'Nebyla nalezena <20><>dn<64> odpov<6F>daj<61>c<EFBFBD> karta zbo<62><6F>.'#1 + CRLF + 'Zkontrolujte typ na ext.informac<61>ch kmenov<6F> karty (Fin<69>l/Nebalen<65> apod.)');
|
||
selRegCis.Text:= '%';
|
||
selRegCis.SetFocus;
|
||
idKZ:= 0;
|
||
sIdSS:= '';
|
||
sIdSSCil:= '';
|
||
Exit;
|
||
end;
|
||
1: begin
|
||
sIdSS:= VarToStr(FieldValues(0)); // idSS zdroj
|
||
with Helios.OpenSQL('SELECT IdKmenZbozi FROM ' + tblSS + ' WHERE id=' + sIdSS) do
|
||
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
||
end;
|
||
else
|
||
begin
|
||
podm:= 'TabStavSkladu.IDSklad=N' + QuotedStr(sklZdroj) + ' AND TabStavSkladu.idKmenZbozi IN (SELECT id FROM ' + tblKZ;
|
||
podm:= podm + ' kz WHERE ';
|
||
if (jsemLov) and (cbTypDokl.ItemIndex<2) then
|
||
podm:= podm + 'SkupZbo<>N' + QuotedStr('MAT') + ' AND LEFT(RegCis,4)<>N' + QuotedStr('POL_');
|
||
if (Pos('MAT', podm))>0 then
|
||
podm:= podm + ' AND ';
|
||
podm:= podm + 'RegCis LIKE N' + QuotedStr(IfThen(selRegCis.Text[1]='%','','%') + selRegCis.Text + '%');
|
||
if (jsemLov) and (cbTypDokl.ItemIndex=2) then
|
||
podm:= podm + ' AND SkupZbo=N' + QuotedStr('MAT');
|
||
podm:= podm + ' AND Blokovano=0 AND SkupZbo IN (SELECT SkupZbo FROM dbo.TabSkupinyZbozi sz LEFT JOIN dbo.TabSkupinyZbozi_EXT';
|
||
podm:= podm + ' sze ON (sz.id=sze.id) WHERE sze._JeVyroba=1 AND RIGHT(SkupZbo,1)<>N''V''))';
|
||
if Helios.Prenos(235,'id',oVar1,podm,'Stav skladu ' + sklZdroj,true) then
|
||
begin
|
||
sIdSS:= VarToStr(oVar1);
|
||
with Helios.OpenSQL('SELECT IdKmenZbozi FROM ' + tblSS + ' WHERE id=' + sIdSS) do
|
||
idKZ:= StrToInt(VarToStr(FieldValues(0)));
|
||
end
|
||
else
|
||
sIdSS:= '';
|
||
end;
|
||
end;
|
||
end;
|
||
if (sIdSS<>'') then
|
||
begin
|
||
lSQL:= 'SELECT kz.SkupZbo,kz.RegCis,kz.Nazev1,kz.id FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz ON (ss.IdKmenZbozi=kz.id)';
|
||
lSQL:= lSQL + ' WHERE ss.id=' + sIdSS;
|
||
with Helios.OpenSQL(lSQL) do
|
||
begin
|
||
selSZ.Text:= VarToStr(FieldValues(0));
|
||
selRegCis.Text:= VarToStr(FieldValues(1));
|
||
lblKarta.Caption:= VarToStr(FieldValues(2));
|
||
idKZ:= StrToInt(VarToStr(FieldValues(3)));
|
||
end;
|
||
sIdSSCil:= '';
|
||
end;
|
||
end;
|
||
selVyber:= false;
|
||
if (sIdSS<>'') and (idKZ>0) then
|
||
begin
|
||
TestRC;
|
||
if (selRegCis.Text<>'%') then
|
||
FocusKS;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.selRegCisKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
begin
|
||
if Key=VK_ESCAPE then
|
||
selRegCis.Text:= '';
|
||
if (Key in [VK_RETURN,VK_TAB]) and (selRegCis.Text<>'') and (selRegCis.Text<>'%') then
|
||
begin
|
||
selRegCisButtonClick(Sender);
|
||
FocusKS;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.selSZButtonClick(Sender: TObject);
|
||
var podm: string;
|
||
begin
|
||
podm:= 'TabSkupinyZbozi.id IN (SELECT id FROM ' + tblSZe + ' WHERE _JeVyroba=1)';
|
||
|
||
if (JeLovato) and (cbTypDokl.ItemIndex=2) then
|
||
podm:= 'TabSkupinyZbozi.SkupZbo=N' + QuotedStr('MAT');
|
||
|
||
if Helios.Prenos(bidSZ,'SkupZbo',oVar1,podm,'Skupiny zbo<62><6F>',true) then
|
||
selSZ.Text:= VarToStr(oVar1);
|
||
selSZ.Text:= Trim(selSZ.Text);
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.selSZKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||
begin
|
||
selSZ.Text:= Trim(selSZ.Text);
|
||
if (Key in [VK_RETURN,VK_TAB]) and (selSZ.Text<>'') then
|
||
begin
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblSZ + ' WHERE SkupZbo=N' + QuotedStr(selSZ.Text)) do
|
||
if RecordCount=0 then
|
||
begin
|
||
Helios.Error(#1'Zadan<61> skupina zbo<62><6F> neexistuje.'#1);
|
||
selSZ.Text:= '';
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.pmDelPolClick(Sender: TObject);
|
||
var sTmp: string;
|
||
begin
|
||
if not edit then
|
||
begin
|
||
if vTabBL.RecordCount=0 then
|
||
Exit;
|
||
sTmp:= vTabBL.FieldByName('SkupZbo').AsString + ' : ' + vTabBL.FieldByName('RegCis').AsString;
|
||
if Helios.YesNo('Opravdu zru<72>it polo<6C>ku (' + sTmp + ') ?',False) then
|
||
begin
|
||
Clipboard.AsText:= vTabBL.FieldByName('Mnoz').AsString;
|
||
vTabBL.Delete;
|
||
FocusRegCis;
|
||
end;
|
||
end
|
||
else
|
||
Helios.Error('Na realizovan<61>m dokladu nelze mazat polo<6C>ky.');
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.pmImpReaderClick(Sender: TObject);
|
||
var fIn: TStringStream;
|
||
idx,pocet: Integer;
|
||
fName: string;
|
||
radky: TStringList;
|
||
begin
|
||
if OtevriSoubor('Soubor importovan<61>ch dat','Textov<6F> soubor','*.txt','',fName) then
|
||
begin
|
||
fIn:= TStringStream.Create;
|
||
try
|
||
fIn.LoadFromFile(fName);
|
||
pocet:= Length(fIn.DataString)-Length(StringReplace(fIn.DataString,#13,'',[rfReplaceAll]));
|
||
finally
|
||
fIn.Free;
|
||
end;
|
||
end
|
||
else
|
||
Helios.Error(#1'Nebyl vybr<62>n soubor pro import...'#1);
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.VytvorTabulkyAGrid;
|
||
var idx: integer;
|
||
begin
|
||
if not(vTabBL.Active) then
|
||
vTabBL.Open;
|
||
{
|
||
with vTabBL do
|
||
begin
|
||
with FieldDefs do
|
||
begin
|
||
Clear;
|
||
Add('idKZ', ftInteger, 0, true);
|
||
Add('idSS', ftInteger, 0, false);
|
||
Add('idPZ', ftInteger, 0, false);
|
||
Add('SkupZbo', ftString, 3, true);
|
||
Add('RegCis', ftString, 20, true);
|
||
Add('Box', ftString, 20, false);
|
||
Add('Mnoz', ftFloat, 0, true);
|
||
Add('CelkHmot', ftFloat, 0, false);
|
||
Add('Prikaz', ftInteger, 0, false);
|
||
Add('IdBLPol', ftInteger, 0, false);
|
||
Add('IDSklad', ftString, 30, false);
|
||
Add('idSSCil', ftInteger, 0, false);
|
||
Add('IDSkladCil', ftString, 30, false);
|
||
end;
|
||
end;
|
||
vTabBL.Open;
|
||
|
||
}
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.btnAddPolClick(Sender: TObject);
|
||
var lSQL, skl: string;
|
||
stav: Extended;
|
||
chkStav: Boolean;
|
||
begin
|
||
jsemLov:= JeLovato;
|
||
if (idKZ>0) and (sIdSS<>'') and ((sIdSSCil<>'') or (jsemLov)) then
|
||
begin
|
||
chkStav:= false;
|
||
if (Helios.BrowseID=18) then
|
||
chkStav:= true;
|
||
stav:= 0;
|
||
|
||
// skl:= VyrSkl;
|
||
// if (cbVratka.Checked) then
|
||
// skl:= NajdiVKoop(3,4,cbOrg.ItemIndex);
|
||
|
||
{
|
||
lSQL:= 'DECLARE @mn NUMERIC(19,6)' + CRLF + 'SET @mn=0' + CRLF;
|
||
lSQL:= lSQL + 'IF EXISTS(SELECT id FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(skl) + ' AND IdKmenZbozi=';
|
||
lSQL:= lSQL + IntToStr(idKZ) + ')' + CRLF + 'SELECT @mn=Mnozstvi FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(skl);
|
||
lSQL:= lSQL + ' AND IdKmenZbozi=' + IntToStr(idKZ) + CRLF + 'SELECT @mn';
|
||
}
|
||
lSQL:= 'DECLARE @mn NUMERIC(19,6)' + CRLF + 'DECLARE @skl NVARCHAR(30)' + CRLF + 'SET @mn=0' + CRLF + 'SET @skl=NULL' + CRLF;
|
||
lSQL:= lSQL + 'SELECT @mn=Mnozstvi-MnozstviKVydeji,@skl=IDSklad FROM ' + tblSS + ' WHERE id=' + sIdSS + CRLF + 'SELECT @mn,@skl';
|
||
with Helios.OpenSQL(lSQL) do
|
||
stav:= StrToFloat(VarToStr(FieldValues(0)));
|
||
if (stav<edtKS.Value) and not(jsemLov) and (chkStav) then
|
||
if Helios.YesNo(#1'Po realizaci v<>dej<65> bude skladem pouze ' + FormatFloat('##,##0.###',stav) + ' kus<75>.' + CRLF + 'Chcete p<>ev<65>st JEN tento ZBYTEK ?'#1, true) then
|
||
edtKS.Value:= stav
|
||
else
|
||
Exit;
|
||
if (edtKS.Value>0) then
|
||
begin
|
||
edtBox.Text:= Trim(edtBox.Text);
|
||
vTabBL.Append;
|
||
vTabBL.FieldByName('idKZ').AsInteger:= idKZ;
|
||
vTabBL.FieldByName('idSS').AsString:= sIdSS;
|
||
vTabBL.FieldByName('Mnoz').AsFloat:= edtKS.Value;
|
||
vTabBL.FieldByName('SkupZbo').AsString:= selSZ.Text;
|
||
vTabBL.FieldByName('RegCis').AsString:= selRegCis.Text;
|
||
vTabBL.FieldByName('Box').AsString:= edtBox.Text;
|
||
vTabBL.FieldByName('CelkHmot').AsFloat:= RoundToEX(hmotC,-3);
|
||
vTabBL.FieldByName('IDSklad').AsString:= sklZdroj;
|
||
vTabBL.FieldByName('IDSkladCil').AsString:= sklCil;
|
||
vTabBL.FieldByName('IdSSCil').AsString:= sIdSSCil;
|
||
|
||
lSQL:= 'INSERT ' + tblBLPol + ' (IdDoklad,IdStavSkladu,IdStavSkladuCil,Mnozstvi,Box) VALUES (';
|
||
lSQL:= lSQL + IntToStr(idBL) + ',' + sIdSS + ',';
|
||
if (sIdSSCil='') then
|
||
lSQL:= lSQL + '0'
|
||
else
|
||
lSQL:= lSQL + sIdSSCil;
|
||
lSQL:= lSQL + ',' + StringReplace(FloatToStr(edtKS.Value),',','.',[rfReplaceAll]) + ',N';
|
||
lSQL:= lSQL + QuotedStr(edtBox.Text) + ')' + CRLF + 'SELECT SCOPE_IDENTITY()';
|
||
try
|
||
with Helios.OpenSQL(lSQL) do
|
||
vTabBL.FieldByName('IdBLPol').AsString:= VarToStr(FieldValues(0));
|
||
except
|
||
end;
|
||
|
||
vTabBL.Post;
|
||
selSZ.Text:= '';
|
||
selRegCis.Text:= '';
|
||
edtKS.Value:= 0;
|
||
edtBox.Text:= '0';
|
||
idKZ:= 0;
|
||
sIdSS:= '';
|
||
sIdSSCil:= '';
|
||
lblKarta.Caption:= '';
|
||
FocusRegCis;
|
||
end;
|
||
end
|
||
else
|
||
Helios.Error(#1'Nen<65> vybran<61> polo<6C>ka.'#1);
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.btnCancelClick(Sender: TObject);
|
||
begin
|
||
if vTabBL.RecordCount=0 then
|
||
Helios.ExecSQL('DELETE FROM ' + tblBL + ' WHERE id=' + IntToStr(idBL));
|
||
Close;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.btnOKClick(Sender: TObject);
|
||
const rPrev = '250';
|
||
var idx, idKZ, idPZ, idSS, prikaz, idDZ2, idDZv, idDZp, idKJ: integer;
|
||
lSQL, wCond: string;
|
||
kurz, jcena, qty, hmot: Extended;
|
||
mena, mj, cOrg, cBL, rDoklBL, cSkl, dt, idObd, cZak: string;
|
||
idcka: string;
|
||
jeMat, realVyd, realPrij: boolean;
|
||
oldSkl, sklPrev: string;
|
||
begin
|
||
ReseedTable(Helios,tblDZ);
|
||
ReseedTable(Helios,tblPZ);
|
||
ReseedTable(Helios,tblBL);
|
||
ReseedTable(Helios,tblBLPol);
|
||
|
||
// ReseedTable(Helios,'[dbo].[_TamTempPolozkyBL]');
|
||
idObd:= '';
|
||
idDZv:= 0; // vydejka
|
||
idDZp:= 0; // prijemka
|
||
idKJ:= 0;
|
||
|
||
jsemLov:= JeLovato;
|
||
jsemPrev:= JePrevodka;
|
||
|
||
lSQL:= 'DECLARE @obd INT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(DateToStr(edtDat.Date)) + ',104)';
|
||
lSQL:= lSQL + CRLF + 'EXEC @obd=dbo.hp_GetObdobiDleDatumu @dt,0,null,null,0,0' + CRLF + 'SELECT @obd';
|
||
with Helios.OpenSQL(lSQL) do
|
||
idObd:= Trim(VarToStr(FieldValues(0)));
|
||
if (idObd='') then
|
||
begin
|
||
Helios.Error(#1'Podle zadan<61>ho data nebylo nalezeno Obdob<6F>, zkontrolujte nastaven<65> Heliosu.'#1);
|
||
end;
|
||
|
||
lSQL:= 'DELETE FROM dbo._TabStavPrevod WHERE DATEDIFF(month, DatPorizeni, GETDATE())>1';
|
||
Helios.ExecSQL(lSQL);
|
||
|
||
oldSkl:= Helios.Sklad;
|
||
// balici listy
|
||
cBL:= '11'; // druh pohybu Nabidkove sestavy
|
||
rDoklBL:= '200'; // rada dokladu
|
||
|
||
lSQL:= BoolToStr(jsemLov);
|
||
|
||
if not(jsemLov) then
|
||
begin
|
||
cBL:= '4'; // vydej v evid.cene
|
||
rDoklBL:= '450'; // vydejka-prevodka
|
||
end;
|
||
|
||
if (vTabBL.RecordCount>0) then
|
||
begin
|
||
// smaze z dokladu polozky smazane skladnikem v BL
|
||
idcka:= helUtils.IDckaTabulky(vTabBL,'idPZ');
|
||
if (idcka<>'') then
|
||
try
|
||
Helios.ExecSQL('DELETE FROM ' + tblPZ + ' WHERE idDoklad=' + IntToStr(idDZ) + ' AND id NOT IN (' + idcka + ')');
|
||
except on E:Exception do
|
||
Helios.Error(#1'Z Balic<69>ho listu nelze smazat "star<61>" <20><>dek.'#1 + CRLF + E.Message);
|
||
end;
|
||
|
||
if (jsemLov) then
|
||
cOrg:= '1' // Lovato IT
|
||
else
|
||
cOrg:= NajdiVKoop(2, 4, cbOrg.ItemIndex);
|
||
if (jsemPrev) then
|
||
cOrg:= '0'; // pri prevodce nastav vlastni organizaci
|
||
|
||
lSQL:= 'UPDATE ' + tblBL + ' SET CisloOrg=' + cOrg + ',Vratka=';
|
||
if cbVratka.Checked then
|
||
lSQL:= lSQL + '1'
|
||
else
|
||
lSQL:= lSQL + '0';
|
||
|
||
if (jsemLov) then
|
||
begin
|
||
lSQL:= lSQL + ',MistoUrceni=';
|
||
if (cbTypDokl.ItemIndex>0) then
|
||
begin lSQL:= lSQL + cOrg end
|
||
else
|
||
begin lSQL:= lSQL + cOrgFinaly; end;
|
||
end;
|
||
|
||
if (jsemLov) then
|
||
lSQL:= lSQL + ',TypBL=' + IntToStr(cbTypDokl.ItemIndex+1);
|
||
lSQL:= lSQL + ' WHERE id=' + IntToStr(idBL);
|
||
try
|
||
Helios.ExecSQL(lSQL);
|
||
except
|
||
end;
|
||
|
||
// pri reklamaci udelej zakazku
|
||
cZak:= '';
|
||
if (cbTypDokl.Text='REKLAMACE') then
|
||
begin
|
||
dt:= '200'; // rada zakazek Vyroba-Reklamace
|
||
lSQL:= 'SELECT REPLICATE(N''0'', (SELECT CisloDelka FROM dbo.TabZakazkaRada WHERE Rada=N' + QuotedStr(dt);
|
||
lSQL:= lSQL + ') - LEN(CONVERT(nvarchar, CONVERT(int, ( SELECT ISNULL';
|
||
lSQL:= lSQL + ' ( (SELECT MAX(CisloZakazky) FROM dbo.TabZakazka WHERE Rada=N' + QuotedStr(dt) + ') ,0))))))';
|
||
lSQL:= lSQL + ' + CONVERT(NVARCHAR,MAX(CONVERT(int,z.CisloZakazky))+1) FROM TabZakazka z WHERE z.Rada=N' + QuotedStr(dt);
|
||
with Helios.OpenSQL(lSQL) do
|
||
cZak:= VarToStr(FieldValues(0));
|
||
|
||
lSQL:= 'INSERT ' + tblZak + ' (Rada,CisloZakazky,Nazev) VALUES (N' + QuotedStr(dt) + ',N' + QuotedStr(cZak) + ',N';
|
||
dt:= 'Reklamace > ';
|
||
case StrToInt(cOrg) of
|
||
11: dt:= dt + 'VDST';
|
||
17: dt:= dt + 'Pikl';
|
||
25: dt:= dt + 'PCO';
|
||
end;
|
||
lSQL:= lSQL + QuotedStr(dt) + ')';
|
||
try
|
||
Helios.ExecSQL(lSQL);
|
||
except on E:Exception do
|
||
Helios.Error(#1'Nelze ulo<6C>it <20><>slo zak<61>zky pro reklamaci.'#1 + CRLF + E.Message);
|
||
end;
|
||
end;
|
||
|
||
{
|
||
vTabBL.First;
|
||
while not vTabBL.Eof do
|
||
begin
|
||
lSQL:= 'INSERT [dbo].[_TabTempPolozkyBL] (SkupZbo,RegCis,Mnoz,Box,CisloOrg) VALUES (N';
|
||
lSQL:= lSQL + QuotedStr(vTabBL.FieldByName('SkupZbo').AsString) + ',N' + QuotedStr(vTabBL.FieldByName('RegCis').AsString);
|
||
lSQL:= lSQL + ',' + StringReplace(vTabBL.FieldByName('Mnoz').AsString,',','.',[rfReplaceAll]) + ',N';
|
||
lSQL:= lSQL + QuotedStr(vTabBL.FieldByName('Box').AsString) + ',' + cOrg + ')';
|
||
try
|
||
Helios.ExecSQL(lSQL);
|
||
except
|
||
end;
|
||
vTabBL.Next;
|
||
end;
|
||
|
||
sklPrev:= NajdiVKoop(3,4,cbOrg.ItemIndex);
|
||
if (cbVratka.Checked) and not(jeLovato) then
|
||
begin
|
||
Helios.SetSklad(sklPrev);
|
||
sklPrev:= '200';
|
||
if (cbTypDokl.ItemIndex=1) and (cbReklamace.Checked) then
|
||
if Length(sklPrev)=3 then
|
||
begin sklPrev:= sklPrev + '00001' end
|
||
else
|
||
begin sklPrev:= sklPrev + '001' end
|
||
end;
|
||
}
|
||
|
||
dt:= DateTimeToStr(Now);
|
||
if (edtDat.Text<>'') then
|
||
dt:= DateToStr(edtDat.Date) + ' ' + TimeToStr(Now);
|
||
|
||
kurz:= 1;
|
||
mena:= 'CZK';
|
||
if (jsemLov) then
|
||
begin
|
||
mena:= 'EUR';
|
||
lSQL:= 'DECLARE @dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)';
|
||
lSQL:= lSQL + CRLF + 'SELECT kurz FROM ' + tblKList + ' WHERE Datum<=@dt AND Mena=N' + QuotedStr(mena) + ' ORDER BY Datum DESC';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount>0) then
|
||
kurz:= StrToFloat(VarToStr(FieldValues(0)));
|
||
end;
|
||
|
||
if (idDZ=0) then
|
||
begin
|
||
lSQL:= 'DECLARE @dt DATETIME,@Ident INT';
|
||
lSQL:= lSQL + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)';
|
||
lSQL:= lSQL + CRLF + 'EXEC dbo.hp_InsertHlavickyOZ @Ident OUT,@Sklad=N';
|
||
lSQL:= lSQL + QuotedStr(sklZdroj)+',@DruhPohybu=' + cBL + ',@RadaDokladu=N' + QuotedStr(rDoklBL);
|
||
lSQL:= lSQL +',@Insert=1,@PC=NULL,@CisloOrg=' + cOrg + ',@Mena=N' + QuotedStr(mena) + ',@DatumPorizeni=@dt';
|
||
lSQL:= lSQL + CRLF + 'SELECT @Ident';
|
||
idDZ:= 0;
|
||
try
|
||
with Helios.OpenSQL(lSQL) do
|
||
if VarIsNull(FieldValues(0)) then
|
||
idDZ:= 0
|
||
else
|
||
if not TryStrToInt(VarToStr(FieldValues(0)), idDZ) then
|
||
idDZ:= 0;
|
||
if (idDZ>0) and (cOrg<>'') and not(jeLovato) then
|
||
begin
|
||
idDZv:= idDZ;
|
||
lSQL:= 'UPDATE ' + tblDZ + ' SET Mena=' + QuotedStr('CZK') + ',IdSkladPrevodu=N' + QuotedStr(sklCil);
|
||
lSQL:= lSQL + ',BlokovaniEditoru=' + IntToStr(Helios.UserId) + ',TypPrevodky=N' + QuotedStr(rPrev);
|
||
lSQL:= lSQL + ',Text3=CONVERT(ntext,N' + QuotedStr('plgLOVATO') + '),DruhPohybuPrevod=0 WHERE id=' + IntToStr(idDZ);
|
||
if (cZak<>'') then
|
||
lSQL:= lSQL + CRLF + 'UPDATE ' + tblDZ + ' SET CisloZakazky=N' + QuotedStr(cZak) + ' WHERE id=' + IntToStr(idDZ);
|
||
Helios.ExecSQL(lSQL);
|
||
end;
|
||
except on E:Exception do
|
||
begin
|
||
Helios.Error(#1'Nelze ulo<6C>it nov<6F> Bal<61>c<EFBFBD> list/V<>dejku/Vratku.'#1 + CRLF + E.Message);
|
||
idKJ:= ZapisDoKJ(Helios,'HEO','','POR','','Plugin plgLOVATO','Nelze ulo<6C>it nov<6F> Bal<61>c<EFBFBD> list/V<>dejku/Vratku');
|
||
if idKJ>0 then
|
||
Helios.ExecSQL('INSERT ' + tblKJPozn + ' (IDKontJednani,Nazev,Poznamka) VALUES (' + IntToStr(idKJ) + ',N'
|
||
+ QuotedStr('Podrobnosti.baliciListy') + ',N' + QuotedStr(E.Message + CRLF + lSQL) + ')');
|
||
idKJ:= 0;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
if (idDZ>0) then
|
||
begin
|
||
if (jsemLov) then
|
||
begin
|
||
lSQL:= 'UPDATE ' + tblDZ + ' SET MistoUrceni=';
|
||
if (cOrg='1') then
|
||
if (cbTypDokl.ItemIndex>0) then
|
||
begin lSQL:= lSQL + cOrg end
|
||
else
|
||
begin lSQL:= lSQL + cOrgFinaly; end;
|
||
lSQL:= lSQL + ' WHERE id=' + IntToStr(idDZ);
|
||
Helios.ExecSQL(lSQL);
|
||
lSQL:= 'IF NOT EXISTS(SELECT id FROM ' + tblDZe + ' WHERE id=' + IntToStr(idDZ) + ')' + CRLF;
|
||
lSQL:= lSQL + 'INSERT ' + tblDZe + ' (id) VALUES (' + IntToStr(idDZ) + ')' + CRLF;
|
||
lSQL:= lSQL + 'UPDATE ' + tblDZe + ' SET _TypBalicihoListu=' + IntToStr(cbTypDokl.ItemIndex+1);
|
||
lSQL:= lSQL + ' WHERE id=' + IntToStr(idDZ);
|
||
Helios.ExecSQL(lSQL);
|
||
end;
|
||
|
||
with Helios.OpenSQL('SELECT Mena FROM ' + tblDZ + ' WHERE id=' + IntToStr(idDZ)) do
|
||
begin
|
||
if not VarIsNull(FieldValues(0)) then
|
||
mena:= VarToStr(FieldValues(0));
|
||
// if not VarIsNull(FieldValues(1)) then
|
||
// kurz:= StrToFloat(VarToStr(FieldValues(1)));
|
||
end;
|
||
vTabBL.DisableControls;
|
||
vTabBL.First;
|
||
while not(vTabBL.EOF) do
|
||
begin
|
||
qty:= vTabBL.FieldByName('Mnoz').AsFloat;
|
||
idKZ:= vTabBL.FieldByName('idKZ').AsInteger;
|
||
idSS:= vTabBL.FieldByName('idSS').AsInteger;
|
||
idPZ:= vTabBL.FieldByName('idPZ').AsInteger;
|
||
hmot:= vTabBL.FieldByName('CelkHmot').AsFloat;
|
||
hmot:= RoundToEx(hmot/qty,-3);
|
||
prikaz:= vTabBL.FieldByName('Prikaz').AsInteger;
|
||
jcena:= 0.1;
|
||
mj:= 'ks';
|
||
if (idKZ<>0) and (idPZ=0) then
|
||
with Helios.OpenSQL('SELECT MJevidence,Hmotnost FROM ' + tblKZ + ' WHERE id=' + IntToStr(idKZ)) do
|
||
begin
|
||
mj:= VarToStr(FieldValues(0));
|
||
if VarIsNull(FieldValues(1)) then
|
||
Helios.ExecSQL('UPDATE ' + tblKZ + ' SET Hmotnost=0 WHERE id=' + IntToStr(idKZ))
|
||
else
|
||
hmot:= StrToFloat(VarToStr(FieldValues(1)));
|
||
end;
|
||
if (idSS=0) and (idKZ<>0) and (idPZ=0) then
|
||
begin
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblSS + ' WHERE IDSklad=N' + QuotedStr(Helios.Sklad) + ' AND IDKMenZbozi=' + IntToStr(idKZ)) do
|
||
if RecordCount>0 then
|
||
idSS:= StrToInt(VarToStr(FieldValues(0)))
|
||
else
|
||
begin
|
||
lSQL:= 'INSERT ' + tblSS + ' (IDSklad,IDKmenZbozi) VALUES (N' + QuotedStr(Helios.Sklad);
|
||
lSQL:= lSQL + ',' + IntToStr(idKZ) + ')' + CRLF + 'SELECT SCOPE_IDENTITY()';
|
||
with Helios.OpenSQL(lSQL) do
|
||
idSS:= StrToInt(VarToStr(FieldValues(0)));
|
||
end;
|
||
end;
|
||
if (idSS>0) and (qty<>0) then
|
||
begin
|
||
// data pro kontrolu prevodu
|
||
lSQL:= 'INSERT dbo._TabStavPrevod(IDDoklad,IDZboSklad,Stav,Mnozstvi) VALUES (';
|
||
lSQL:= lSQL + IntToStr(idDZ) + ',' + IntToStR(idSS) + ',';
|
||
with Helios.OpenSQL('SELECT Mnozstvi FROM ' + tblSS + ' WHERE id=' + IntToStr(idSS)) do
|
||
lSQL:= lSQL + StringReplace(VarToStr(FieldValues(0)),',','.',[rfReplaceAll]) + ',';
|
||
lSQL:= lSQL + StringReplace(FloatToStr(qty),',','.',[rfReplaceAll]) + ')';
|
||
Helios.ExecSQL(lSQL);
|
||
|
||
with Helios.OpenSQL('SELECT EcJc FROM ' + tblJC + ' WHERE IDStavSkladu=' + IntToStr(idSS)) do
|
||
if (RecordCount>0) then
|
||
jcena:= StrToFloat(VarToStr(FieldValues(0)))
|
||
else
|
||
jcena:= 0.1;
|
||
jeMat:= false;
|
||
if (idKZ>0) then
|
||
begin
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblKZ + ' WHERE Material=1 AND id=' + IntToStr(idKZ)) do
|
||
if (RecordCount>0) then
|
||
jeMat:= true;
|
||
end;
|
||
|
||
// kalkulacni cena materialu na balici listy i vydejky kooperantum
|
||
// !! kalk.cena je v EURech !!
|
||
if (jeMat) then
|
||
begin
|
||
with Helios.OpenSQL('SELECT TOP(1) kc.Cena FROM ' + tblKalkCe + ' kc LEFT JOIN ' + tblCZmen + ' cz ON (kc.ZmenaOd=cz.id) WHERE kc.IDKmenZbozi=' + IntToStr(idKZ) + ' ORDER BY cz.datum DESC') do
|
||
if (RecordCount=1) then
|
||
jcena:= StrToFloat(VarToStr(FieldValues(0)));
|
||
end
|
||
else
|
||
begin
|
||
with Helios.OpenSQL('SELECT TOP(1) zk.Mat FROM ' + tblZaklKalk + ' zk LEFT JOIN ' + tblCZmen +' cz ON (zk.ZmenaOd=cz.id) WHERE zk.dilec=' + IntToStr(idKZ) + ' ORDER BY cz.Datum DESC') do
|
||
if (RecordCount=1) then
|
||
jcena:= StrToFloat(VarToStr(FieldValues(0)));
|
||
end;
|
||
|
||
jCena:= RoundToEx(jcena*Kurz,-4); // cena * Kurz
|
||
|
||
if (idPZ=0) then
|
||
begin
|
||
lSQL:= 'DECLARE @Ident INT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)';
|
||
lSQL:= lSQL + CRLF + 'EXEC dbo.hp_InsertPolozkyOZ @Ident OUT,@IDDoklad=';
|
||
lSQL:= lSQL + IntToStr(idDZ) + ',@DruhPohybu=' + cBL + ',@CisloOrg=' + cOrg + ',@IDZboSklad=' + IntToStr(idSS);
|
||
lSQL:= lSQL + ',@SazbaDPH=null,@Mnozstvi=' + StringReplace(FloatToStr(qty),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ',@MJ=N' + QuotedStr(mj) + ',@JCbezDaniKC=' + StringReplace(FloatToStr(jcena),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ',@DatPorizeni=@dt,@VstupniCena=';
|
||
if (cOrg='1') then
|
||
lSQL:= lSQL + '4,@Kurz=' + StringReplace(FloatToStr(kurz),',','.',[rfReplaceAll])
|
||
else
|
||
lSQL:= lSQL + '0,@Kurz=1';
|
||
lSQL:= lSQL + ',@PovolitDuplicitu=1,@SazbaSD=0,@ZakazanoDPH=0,@KurzEuro=0,@Mena=N' + QuotedStr(mena);
|
||
lSQL:= lSQL + ',@JednotkaMeny=1,@Selectem=0' + CRLF + 'SELECT @Ident';
|
||
end
|
||
else
|
||
begin
|
||
lSQL:= 'UPDATE ' + tblPZ + ' SET Mnozstvi=' + StringReplace(FloatToStr(qty),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ',VstupniCena=';
|
||
if cOrg='1' then
|
||
lSQL:= lSQL + '4,Kurz=' + StringReplace(FloatToStr(kurz),',','.',[rfReplaceAll])
|
||
else
|
||
lSQL:= lSQL + '0,Kurz=1';
|
||
lSQL:= lSQL + ',StredNaklad=N' + QuotedStr(VyrSkl) + ' WHERE id=' + IntToStr(idPZ);
|
||
end;
|
||
try
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (idPZ=0) then
|
||
if (RecordCount>0) then
|
||
if not VarIsNull(FieldValues(0)) then
|
||
if not TryStrToInt(VarToStr(FieldValues(0)),idPZ) then
|
||
idPZ:= 0;
|
||
except on E:Exception do
|
||
Helios.Error(#1'Nelze ulo<6C>it polo<6C>ku do Bal<61>c<EFBFBD>ho listu/V<>dejky !'#1 + CRLF + lSQL);
|
||
end;
|
||
if (idPZ>0) then
|
||
begin
|
||
if (vTabBL.FieldByName('idBLPol').AsString<>'') then
|
||
begin
|
||
lSQL:= 'UPDATE ' + tblBLPol + ' SET IdPolozkaOZ=' + IntToStr(idPZ) + ' WHERE id=';
|
||
lSQL:= lSQL + vTabBL.FieldByName('idBLPol').AsString;
|
||
Helios.ExecSQL(lSQL);
|
||
end;
|
||
|
||
lSQL:= 'UPDATE ' + tblPZ + ' SET NazevSozNa1=N' + QuotedStr(IfThen(jsemPrev, '', vTabBL.FieldByName('Box').AsString));
|
||
lSQL:= lSQL + ',JCbezDaniKC=Kurz*' + StringReplace(FloatToStr(jcena),',','.',[rfReplaceAll]);
|
||
lSQL:= lSQL + ',CCbezDaniKc=JCbezDaniKC*Mnozstvi,JCbezDaniVal=';
|
||
lSQL:= lSQL + StringReplace(FloatToStr(jcena),',','.',[rfReplaceAll]) + ',CCbezDaniVal=';
|
||
lSQL:= lSQL + 'JCbezDaniVal*Mnozstvi WHERE id=' + IntToStr(idPZ);
|
||
Helios.ExecSQL(lSQL);
|
||
if (prikaz>0) then
|
||
begin
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblPZe + ' WHERE id=' + IntToStr(idPZ)) do
|
||
if RecordCount=0 then
|
||
lSQL:= 'INSERT ' + tblPZe + ' (id,_VyrobniPrikaz) VALUES (' + IntToStr(idPZ) + ',' + IntToStr(prikaz) + ')'
|
||
else
|
||
lSQL:= 'UPDATE ' + tblPZe + ' SET _VyrobniPrikaz=' + IntToStr(prikaz) + ' WHERE id=' + IntToStr(idPZ);
|
||
Helios.ExecSQL(lSQL);
|
||
end;
|
||
end;
|
||
vTabBL.Next;
|
||
end;
|
||
end;
|
||
vTabBL.EnableControls;
|
||
|
||
Helios.ExecSQL('UPDATE ' + tblBL + ' SET IdDokladOZ=' + IntToStr(idDZ) + ' WHERE id=' + IntToStr(idBL));
|
||
Helios.ExecSQL('EXEC dbo.ep_DoplnKooperacniCenyVydejky @idDZ=' + IntToStr(idDZ));
|
||
Helios.ExecSQL('EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=' + IntToStr(idDZ) + ',@AktualizaceSlev=1');
|
||
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET BlokovaniEditoru=null WHERE id=' + IntToStr(idDZ));
|
||
if (cZak<>'') then
|
||
Helios.ExecSQL('UPDATE ' + tblPZ + ' SET CisloZakazky=N' + QuotedStr(cZak) + ' WHERE idDoklad=' + IntToStr(idDZ));
|
||
|
||
if not(jsemLov) and (Helios.BrowseID=bidDZPrij) then
|
||
begin
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblDZ + ' WHERE NavaznyDoklad IS NOT NULL AND id=' + IntToStR(idDZ)) do
|
||
if (RecordCount=0) then
|
||
begin
|
||
realVyd:= false;
|
||
// vytvor hlavicku nasledneho dokladu
|
||
if (rDoklBL='450') then
|
||
begin
|
||
rDoklBL:= '250';
|
||
cBL:= '0';
|
||
end;
|
||
// wCond:= 'IDSklad=N' + QuotedStr(sklCil);
|
||
// wCond:= wCond + ' AND Obdobi=' + idObd;
|
||
// wCond:= wCond + ' AND DruhPohybuZbo=' + cBL + ' AND RadaDokladu=N' + QuotedStr(rDoklBL);
|
||
// idDZ2:= helUtils.NajdiPrvniVolny(Helios,tblDZ,'PoradoveCislo',cBL,rDoklBL,idObd,wCond);
|
||
|
||
lSQL:= 'DECLARE @dt DATETIME,@Ident INT' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)';
|
||
lSQL:= lSQL + CRLF + 'EXEC dbo.hp_InsertHlavickyOZ @Ident OUT,@Sklad=N' + QuotedStr(sklCil);
|
||
lSQL:= lSQL + ',@DruhPohybu=' + cBL + ',@RadaDokladu=N' + QuotedStr(rDoklBL);
|
||
lSQL:= lSQL + ',@Insert=1,@PC=NULL,@CisloOrg=';
|
||
lSQL:= lSQL + cOrg + ',@Mena=N' + QuotedStr(mena) + ',@DatumPorizeni=@dt' + CRLF + 'SELECT @Ident';
|
||
idDZ2:= 0;
|
||
try
|
||
with Helios.OpenSQL(lSQL) do
|
||
if VarIsNull(FieldValues(0)) then
|
||
idDZ2:= 0
|
||
else
|
||
if not TryStrToInt(VarToStr(FieldValues(0)), idDZ2) then
|
||
idDZ2:= 0;
|
||
except on E:Exception do
|
||
Helios.Error(#1'Nelze vytvo<76>it n<>sledn<64> doklad.'#1 + CRLF + E.Message + errPlg);
|
||
end;
|
||
end;
|
||
if (idDZ2>0) then
|
||
idDZp:= idDZ2;
|
||
|
||
if (cZak<>'') and (idDZp>0) then
|
||
begin
|
||
lSQL:= 'UPDATE ' + tblDZ + ' SET CisloZakazky=N' + QuotedStr(cZak) + ' WHERE id=' + IntToStr(idDZp);
|
||
try
|
||
Helios.ExecSQL(lSQL);
|
||
except
|
||
end;
|
||
end;
|
||
|
||
// if cbVratka.Checked then
|
||
try
|
||
lSQL:= 'IF OBJECT_ID(N' + QuotedStr('tempdb..#TabTempUziv') + ') IS NULL CREATE TABLE #TabTempUziv(Tabulka';
|
||
lSQL:= lSQL + ' NVARCHAR(255) NOT NULL, SCOPE_IDENTITY INT NULL, Datum DATETIME NULL)' + CRLF;
|
||
lSQL:= lSQL + 'EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=' + IntToStr(idDZ2) + ',@IDDokladSrc=' + IntToStr(idDZ);
|
||
lSQL:= lSQL + ',@CisloOrgCil=' + cOrg + ',@MUcil=null,@KurzCil=1,@JednotkaMenyCil=1,@MenaCil=N' + QuotedStr('CZK');
|
||
lSQL:= lSQL + ',@Returnem=1,@KurzEuroCil=0,@CisloZakCil=null,@NOkruhCil=null,@StredNakladCil=N' + QuotedStr(VyrSkl) + ',@StredVynosCil=null';
|
||
lSQL:= lSQL + ',@FormaDopravyCil=null,@VozidloCil=null,@ObjednavkaCil=null,@PopisDodavkyCil=N' + QuotedStr('P<>evod materi<72>lu');
|
||
lSQL:= lSQL + ',@NavaznyDobropisCil=null,@ZamestnanecCil=null,@DodFakCil=null,@Nasobek=1,@SlevaCil=0,@VytvaretPolozkovouVazbu=1';
|
||
Helios.ExecSQL(lSQL);
|
||
except on E:Exception do
|
||
begin
|
||
Helios.ExecSQL('DELETE FROM ' + tblDZ + ' WHERE id=' + IntToStR(idDZp));
|
||
// idDZp:= 0;
|
||
Helios.Error(#1'Chyba p<>i generov<6F>n<EFBFBD> n<>vazn<7A>ho dokladu.'#1 + CRLF + E.Message + errPlg);
|
||
end;
|
||
end;
|
||
|
||
try
|
||
lSQL:= 'EXEC dbo.ep_PZ_KopirujCenyDleOldPolozky @IdDokladNew=' + IntTOStr(idDZ2);
|
||
Helios.ExecSQL(lSQL);
|
||
except on E:Exception do
|
||
begin
|
||
Helios.Error(#1'Chyba p<>i duplikaci cen na n<>vazn<7A> doklad.'#1 + CRLF + E.Message + errPlg);
|
||
end;
|
||
end;
|
||
|
||
{
|
||
// pokud je kalkulacni cena nulova, koukni se na posledni prijemku, cena v EURech
|
||
if jcena=0 then
|
||
with Helios.OpenSQL('SELECT TOP(1) JCbezDaniValPoS FROM ' + tblPZ + ' WHERE Mena=N''EUR'' AND DruhPohybuZbo=0 AND IdZboSklad=' + IntToStr(idSS) + ' ORDER BY pz.DatPorizeni DESC') do
|
||
if RecordCount=1 then
|
||
if not VarIsNull(FieldValues(0)) then
|
||
jcena:= StrToFloat(VarToStr(FieldValues(0)));
|
||
|
||
}
|
||
realVyd:= false;
|
||
if (idDZ>0) and (idDZp>0) and not(JeLovato) then
|
||
begin
|
||
realPrij:= false;
|
||
try
|
||
lSQL:= 'DECLARE @dt DATETIME,@chyba BIT' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)' + CRLF;
|
||
lSQL:= lSQL + 'SET @chyba=0' + CRLF + 'EXEC dbo.hp_Realizuj_Vydej ' + IntToStr(idDZ) + ',@dt,' + IntToStr(Helios.UserId) + ',0,@chyba OUT';
|
||
lSQL:= lSQL + CRLF + 'SELECT @chyba';
|
||
with Helios.OpenSQL(lSQL) do
|
||
begin
|
||
if not VarIsNull(FieldValues(0)) then
|
||
if (LowerCase(VarToStr(FieldValues(0)))='false') then
|
||
realVyd:= true;
|
||
end;
|
||
except on E:Exception do
|
||
begin
|
||
if (Pos('50024',E.Message))>0 then
|
||
Helios.Error(#1'Na v<>dejce nejsou polo<6C>ky, nelze realizovat.'#1)
|
||
else
|
||
Helios.Error(#1'Nelze realizovat v<>dejku !'#1 + CRLF + 'idVyd: ' + IntToStr(idDZ) + CRLF + E.Message + errPlg);
|
||
{
|
||
idKJ:= ZapisDoKJ(Helios,'HEO','','POR','','Plugin plgLOVATO','Nelze realizovat V<>dejku/Vratku');
|
||
if idKJ>0 then
|
||
Helios.ExecSQL('INSERT INTO ' + tblKJPozn + ' (IDKontJednani,Nazev,Poznamka) VALUES (' + IntToStr(idKJ) + ',N'
|
||
+ QuotedStr('Podrobnosti.unit7') + ',N' + QuotedStr(E.Message + CRLF + lSQL) + ')');
|
||
idKJ:= 0;
|
||
}
|
||
end;
|
||
end;
|
||
{
|
||
try
|
||
lSQL:= 'DECLARE @dt DATETIME,@chyba BIT' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)' + CRLF;
|
||
lSQL:= lSQL + 'EXEC dbo.hp_Realizuj_Prijem ' + IntToStr(idDZp) + ',@dt,' + IntToStr(Helios.UserId) + ',@chyba OUT';
|
||
lSQL:= lSQL + CRLF + 'SELECT @chyba';
|
||
with Helios.OpenSQL(lSQL) do
|
||
begin
|
||
if not VarIsNull(FieldValues(0)) then
|
||
if LowerCase(VarToStr(FieldValues(0)))='false' then
|
||
realPrij:= true;
|
||
end;
|
||
except on E:Exception do
|
||
Helios.Error(#1'Nelze realizovat v<>dejku/p<><70>jemku !'#1 + CRLF + 'idVyd: ' + IntToStr(idDZ) + CRLF + 'idPrij: ' + IntToStr(idDZp) + CRLF + E.Message + errPlg);
|
||
end;
|
||
}
|
||
end;
|
||
|
||
if (idDZp>0) and (realVyd) then
|
||
begin
|
||
realPrij:= false;
|
||
|
||
try
|
||
lSQL:= 'EXEC dbo.ep_PZ_KopirujCenyDleOldPolozky @IdDokladNew=' + IntTOStr(idDZp);
|
||
Helios.ExecSQL(lSQL);
|
||
except on E:Exception do
|
||
Helios.Error(#1'Chyba p<>i duplikaci cen na n<>vazn<7A> doklad.'#1 + CRLF + E.Message + errPlg);
|
||
end;
|
||
|
||
try
|
||
lSQL:= 'DECLARE @chyba BIT,@dt DATETIME' + CRLF + 'SET @dt=CONVERT(datetime,N' + QuotedStr(dt) + ',104)' + CRLF;
|
||
lSQL:= lSQL + 'EXEC dbo.hp_Realizuj_Prijem ' + IntToStr(idDZp) + ',@dt,' + IntToStr(Helios.UserId) + ',@chyba OUT';
|
||
lSQL:= lSQL + CRLF + 'SELECT @chyba';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if not VarIsNull(FieldValues(0)) then
|
||
if (LowerCase(VarToStr(FieldValues(0)))='false') then
|
||
realPrij:= true;
|
||
except on E:Exception do
|
||
Helios.Error(#1'Nelze realizovat n<>slednou p<><70>jemku !'#1 + CRLF + E.Message + errPlg);
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
if (idDZp>0) then
|
||
begin
|
||
lSQL:= 'FROM ' + tblPZ + ' WHERE IdDoklad=' + IntToStr(idDZp);
|
||
try
|
||
Helios.ExecSQL('DELETE FROM [dbo].[TabPohybyZboziSD] WHERE id IN (SELECT id ' + lSQL + ')');
|
||
Helios.ExecSQL('DELETE ' + lSQL);
|
||
Helios.ExecSQL('DELETE FROM [dbo].[TabDokZboDodatek] WHERE IDHlavicky=' + IntToStr(idDZp));
|
||
Helios.ExecSQL('UPDATE ' + tblDZ + ' SET NavaznyDoklad=null WHERE id='+ IntToStr(idDZv));
|
||
Helios.ExecSQL('DELETE FROM ' + tblDZ + ' WHERE Id=' + IntToStr(idDZp));
|
||
except on E:Exception do
|
||
Helios.Error('Chyba p<>i maz<61>n<EFBFBD> z<>znam<61>.' + CRLF + E.Message);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
Helios.Refresh(true);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.btnOKMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
var log: string;
|
||
begin
|
||
log:= 'SELECT DISTINCT(Stanice) FROM dbo._TabPlgUse WHERE PlgJmeno=N' + QuotedStr('plgLOVATO');
|
||
log:= log + ' AND DATEDIFF(day,GETDATE(),Datum)=0 GROUP BY Stanice';
|
||
if (ssCtrl in Shift) and (Button=mbRight) then
|
||
with Helios.OpenSQL(log) do
|
||
if (RecordCount>0) then
|
||
begin
|
||
log:= '';
|
||
First;
|
||
while not(EOF) do
|
||
begin
|
||
log:= log + VarToStr(FieldValues(0)) + CRLF;
|
||
Next;
|
||
end;
|
||
Helios.Info('Dnes plugin pou<6F><75>vali:' + CRLF + log);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.cbOrgChange(Sender: TObject);
|
||
var msg: string;
|
||
begin
|
||
jsemLov:= JeLovato;
|
||
jsemPrev:= JePrevodka;
|
||
|
||
if not(jsemLov) and (Helios.BrowseID<>27) then
|
||
Self.Caption:= ' V<>dejky / Vratky / P<>evodky'
|
||
else
|
||
Self.Caption:= ' Balic<69> listy';
|
||
|
||
if ((Helios.BrowseID=16) or (Helios.BrowseID=18)) and (JeLovato) then
|
||
begin
|
||
if (Helios.Sklad<>VyrRekl) then
|
||
begin
|
||
msg:= #1'V<>dejku pro LOVATO It<49>lie lze d<>lat pouze pro sklad V<>roba REKLAMACE.' + CRLF + 'Chcete p<>epnout sklad ?';
|
||
if Helios.YesNo(msg,true) then
|
||
begin
|
||
Self.Caption:= ' V<>dej do IT ze skladu V<>roba REKLAMACE';
|
||
Helios.SetSklad(VyrRekl);
|
||
end
|
||
end
|
||
else
|
||
begin
|
||
cbOrg.ItemIndex:= oldCBOdb;
|
||
Exit;
|
||
end;
|
||
end;
|
||
|
||
if (vTabBL.RecordCount>0) then
|
||
begin
|
||
Helios.Error(#1'Ve V<>dejce/p<>evodce jsou polo<6C>ky, nelze m<>nit Odb<64>ratele.'#1);
|
||
cbOrg.ItemIndex:= oldCBOdb;
|
||
end;
|
||
|
||
if (jsemLov) or (jsemPrev) then
|
||
cbVratka.Visible:= false;
|
||
|
||
selRegCis.Text:= Trim(selRegCis.Text);
|
||
if (selRegCis.Text='') or (selRegCis.Text='%') then
|
||
FocusRegCis;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.cbOrgEnter(Sender: TObject);
|
||
begin
|
||
oldCBOdb:= cbOrg.ItemIndex;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.cbTypDoklChange(Sender: TObject);
|
||
var sSkl, nSkl, msg: string;
|
||
begin
|
||
if (jsemLov) then
|
||
begin
|
||
if (vTabBL.RecordCount>0) then
|
||
begin
|
||
Helios.Error(#1'V bal<61>c<EFBFBD>m listu jsou zad<61>ny polo<6C>ky, nelze m<>nit typ BL.'#1);
|
||
cbTypDokl.ItemIndex:= oldCBTyp;
|
||
Exit;
|
||
end;
|
||
msg:= 'Tento druh BL lze vyd<79>vat jen ze skladu ';
|
||
case cbTypDokl.ItemIndex of
|
||
0: begin
|
||
sSkl:= VyrFin;
|
||
nSkl:= 'V<>roba sklad ' + sSkl;
|
||
end;
|
||
1,2: begin
|
||
sSkl:= VyrSkl;
|
||
nSkl:= 'V<>roba ' + sSkl;
|
||
end;
|
||
3: begin
|
||
sSkl:= VyrRekl;
|
||
nSkl:= 'V<>roba REKLAMACE';
|
||
end;
|
||
end;
|
||
if (Helios.Sklad<>sSkl) then
|
||
begin
|
||
Helios.Error(msg + #1 + nSkl + ',' + CRLF + 'aktu<74>ln<6C> sklad bude zm<7A>n<EFBFBD>n.'#1);
|
||
Helios.SetSklad(sSkl);
|
||
end;
|
||
end;
|
||
selRegCis.SetFocus;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.cbTypDoklEnter(Sender: TObject);
|
||
begin
|
||
oldCBTyp:= cbTypDokl.ItemIndex;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.cbVratkaClick(Sender: TObject);
|
||
begin
|
||
Self.Caption:= ' V<>dejky pro kooperanta';
|
||
if cbVratka.Checked then
|
||
Self.Caption:= ' Vratky materi<72>lu od kooperanta'
|
||
else
|
||
if (JeLovato) then
|
||
Self.Caption:= ' Bal<61>c<EFBFBD> listy';
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.edtKSExit(Sender: TObject);
|
||
begin
|
||
mnoz:= edtKS.Value;
|
||
hmotC:= hmotZ * mnoz;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.FormActivate(Sender: TObject);
|
||
begin
|
||
verText:= GetFileVersion2(GetModuleName(HInstance));
|
||
if Length(verText)=12 then
|
||
verText:= LeftStr(verText,9) + '0' + RightStr(verText,3);
|
||
lblVerze.Caption:= verText;
|
||
|
||
pmObnovNeulozene.Visible:= false;
|
||
pmSmazNeulozene.Visible:= false;
|
||
N1.Visible:= false;
|
||
N2.Visible:= false;
|
||
with Helios.OpenSQL('SELECT id FROM ' + tblBLPol + ' WHERE IdPolozkaOZ IS NULL') do
|
||
if (RecordCount>0) then
|
||
begin
|
||
pmObnovNeulozene.Visible:= true;
|
||
pmSmazNeulozene.Visible:= true;
|
||
N1.Visible:= true;
|
||
N2.Visible:= true;
|
||
end;
|
||
|
||
cbVratka.Enabled:= false;
|
||
cbVratka.Checked:= false;
|
||
cbOrg.ItemIndex:= 1;
|
||
edtBox.Enabled:= false;
|
||
edtPrikaz.Enabled:= false;
|
||
case Helios.BrowseID of
|
||
16: begin
|
||
Self.Caption:= ' P<><50>jemky od kooperanta';
|
||
cbVratka.Checked:= true;
|
||
// cbPolos.Visible:= true;
|
||
// cbPolos.Checked:= false;
|
||
// cbPolos.Caption:= 'REKLAMACE';
|
||
cbTypDokl.Items.Clear;
|
||
cbTypDokl.Items.Add('');
|
||
cbTypDokl.Items.Add('REKLAMACE');
|
||
cbTypDokl.ItemIndex:= 0;
|
||
cbTypDokl.Visible:= true;
|
||
cbTypDokl.Enabled:= true;
|
||
cbReklamace.Enabled:= true;
|
||
end;
|
||
18: begin
|
||
Self.Caption:= ' V<>dejky pro kooperanta/p<>evodka mezi sklady';
|
||
// cbPolos.Visible:= false;
|
||
cbTypDokl.Visible:= false;
|
||
cbTypDokl.Enabled:= false;
|
||
end;
|
||
else
|
||
begin
|
||
Self.Caption:= ' Bal<61>c<EFBFBD> listy';
|
||
cbOrg.Enabled:= false;
|
||
cbOrg.ItemIndex:= 0;
|
||
edtBox.Enabled:= true;
|
||
cbTypDokl.ItemIndex:= 0;
|
||
edtPrikaz.Enabled:= false;
|
||
if (idDZ>0) then
|
||
NactiBalList;
|
||
end;
|
||
end;
|
||
FocusRegCis;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
if (vTabBL.Active) then
|
||
vTabBL.Close;
|
||
Action:= caFree;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.NastavEdity;
|
||
var idx: integer;
|
||
begin
|
||
for idx:=0 to ComponentCount-1 do
|
||
begin
|
||
if (Self.Components[idx] is TRzEdit) then
|
||
(Self.Components[idx] as TRzEdit).FocusColor:= helParams.colBg;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.NastavFonty;
|
||
var idx: integer;
|
||
begin
|
||
idx:= 0;
|
||
while idx<Self.ComponentCount-1 do
|
||
begin
|
||
if (Self.Components[idx] is TLabel) then
|
||
begin
|
||
(Self.Components[idx] as TLabel).Font.Name:= Helios.Font;
|
||
(Self.Components[idx] as TLabel).Font.Height:= Helios.FontHeight;
|
||
end;
|
||
if (Self.Components[idx] is TButton) then
|
||
begin
|
||
(Self.Components[idx] as TButton).Font.Name:= Helios.Font;
|
||
(Self.Components[idx] as TButton).Font.Height:= Helios.FontHeight;
|
||
end;
|
||
if (Self.Components[idx] is TGroupBox) then
|
||
begin
|
||
(Self.Components[idx] as TGroupBox).Font.Name:= Helios.Font;
|
||
(Self.Components[idx] as TGroupBox).Font.Height:= Helios.FontHeight;
|
||
end;
|
||
if (Self.Components[idx] is TRzButtonEdit) then
|
||
begin
|
||
(Self.Components[idx] as TRzButtonEdit).Font.Name:= Helios.Font;
|
||
(Self.Components[idx] as TRzButtonEdit).Font.Height:= Helios.FontHeight;
|
||
end;
|
||
if (Self.Components[idx] is TRzEdit) then
|
||
begin
|
||
(Self.Components[idx] as TRzEdit).Font.Name:= Helios.Font;
|
||
(Self.Components[idx] as TRzEdit).Font.Height:= Helios.FontHeight;
|
||
end;
|
||
if (Self.Components[idx] is TRzDateTimeEdit) then
|
||
begin
|
||
(Self.Components[idx] as TRzDateTimeEdit).Font.Name:= Helios.Font;
|
||
(Self.Components[idx] as TRzDateTimeEdit).Font.Height:= Helios.FontHeight;
|
||
end;
|
||
Inc(idx);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
procedure TformBaliciListy.pmObnovNeulozeneClick(Sender: TObject);
|
||
var lSQL: string;
|
||
begin
|
||
lSQL:= 'SELECT * FROM ' + tblBLPol + ' WHERE IdPolozkaOZ IS NULL';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount>0) then
|
||
begin
|
||
if Helios.YesNo(#1'POZOR - Smazat zadan<61> polo<6C>ky ?'#1,false) then
|
||
vTabBL.EmptyDataSet;
|
||
Helios.ExecSQL('UPDATE ' + tblBLPol + ' SET IdDoklad=' + IntToStr(idBL) + ' WHERE IdPolozkaOZ IS NULL');
|
||
First;
|
||
while not(EOF) do
|
||
begin
|
||
vTabBL.Append;
|
||
vTabBL.FieldByName('idBLPol').AsString:= VarToStr(FieldByNameValues('Id'));
|
||
vTabBL.FieldByName('idSS').AsString:= VarToStr(FieldByNameValues('IdStavSkladu'));
|
||
vTabBL.FieldByName('Mnoz').AsFloat:= StrToFloat(VarToStr(FieldByNameValues('Mnozstvi')));
|
||
vTabBL.FieldByName('Box').AsString:= VarToStr(FieldByNameValues('Box'));
|
||
if VarIsNull(FieldByNameValues('IdPolozkaOZ')) then
|
||
vTabBL.FieldByName('idPZ').AsString:= ''
|
||
else
|
||
vTabBL.FieldByName('idPZ').AsString:= VarToStr(FieldByNameValues('IdPolozkaOZ'));
|
||
|
||
lSQL:= 'SELECT kz.SkupZbo,kz.RegCis,kz.id FROM ' + tblSS + ' ss INNER JOIN ' + tblKZ + ' kz';
|
||
lSQL:= lSQL + ' ON (ss.IdKmenZbozi=kz.id) WHERE ss.id=' + VarToStr(FieldByNameValues('IdStavSkladu'));
|
||
with Helios.OpenSQL(lSQL) do
|
||
if RecordCount>0 then
|
||
begin
|
||
vTabBL.FieldByName('SkupZbo').AsString:= VarToStr(FieldValues(0));
|
||
vTabBL.FieldByName('RegCis').AsString:= VarToStr(FieldValues(1));
|
||
vTabBL.FieldByName('idKZ').AsString:= VarToStr(FieldValues(2));
|
||
end;
|
||
|
||
vTabBL.Post;
|
||
Next;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.pmSmazNeulozeneClick (Sender: TObject);
|
||
begin
|
||
if Helios.YesNo(#1'POZOR - opravdu chcete smazat neulo<6C>en<65> polo<6C>ky ?'#1 + CRLF + '(tyto vzniknou nap<61>. p<>i n<>siln<6C>m vypnut<75> PC/Heliosu)',false) then
|
||
Helios.ExecSQL('DELETE FROM ' + tblBLPol + ' WHERE IdPolozkaOZ IS NULL');
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.FormShow (Sender: TObject);
|
||
var lSQL: string;
|
||
i: integer;
|
||
begin
|
||
// if (Helios.Sklad<>'200') then
|
||
// begin
|
||
// Helios.Error('Aktu<74>ln<6C> sklad nen<65> 200 - V<>roba, automaticky p<>ep<65>n<EFBFBD>m.');
|
||
// Helios.SetSklad('200');
|
||
// end;
|
||
|
||
{
|
||
SetThreadLocale(LOCALE_USER_DEFAULT);
|
||
GetFormatSettings;
|
||
ShortDateFormat:= 'dd.mm.yyyy';
|
||
}
|
||
Application.Handle:= Helios.MainApplicationHandle;
|
||
Application.Icon.Handle:= Helios.MainApplicationIconHandle;
|
||
// Self.Font.Name:= Helios.Font;
|
||
NactiParametryHeliosu(Helios, helParams);
|
||
if (helParams.podbarveni) then
|
||
NastavEdity;
|
||
// NastavFonty;
|
||
|
||
selVyber:= false;
|
||
cbOrg.Items.Clear;
|
||
cbOrg.Items.Add('LOVATO It<49>lie');
|
||
lSQL:= 'SELECT s.Nazev, se._CisloOrg, s.Cislo FROM ' + tblStrom + ' s INNER JOIN ' + tblStromE + ' se ON (se.id=s.id)';
|
||
lSQL:= lSQL + ' WHERE se._VydejZjednodusene=1 AND ISNULL(se._CisloOrg,-1)>=0 ORDER BY s.Cislo';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount>0) then
|
||
SetLength(koop,RecordCount);
|
||
i:= -1;
|
||
|
||
lSQL:= 'SELECT s.Nazev, se._CisloOrg, s.Cislo FROM ' + tblStrom + ' s INNER JOIN ' + tblStromE + ' se ON (se.id=s.id)';
|
||
lSQL:= lSQL + ' WHERE se._VydejZjednodusene=1 AND ISNULL(se._CisloOrg,-1)=0 ORDER BY s.Cislo';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount>0) and (Length(koop)>0) then
|
||
begin
|
||
First;
|
||
while not(EOF) do
|
||
begin
|
||
if (VarToStr(FieldValues(2))<>Helios.Sklad) then
|
||
begin
|
||
Inc(i);
|
||
koop[i].Nazev:= VarToStr(FieldValues(0));
|
||
koop[i].CisloOrg:= StrToInt(VarToStr(FieldValues(1)));
|
||
koop[i].Sklad:= VarToStr(FieldValues(2));
|
||
koop[i].ItemIndex:= i+1;
|
||
cbOrg.Items.Add(koop[i].Nazev);
|
||
end;
|
||
Next;
|
||
end;
|
||
end;
|
||
|
||
lSQL:= 'SELECT s.Nazev, se._CisloOrg, s.Cislo FROM ' + tblStrom + ' s INNER JOIN ' + tblStromE + ' se ON (se.id=s.id)';
|
||
lSQL:= lSQL + ' WHERE se._VydejZjednodusene=1 AND ISNULL(se._CisloOrg,-1)>0 ORDER BY s.Cislo';
|
||
with Helios.OpenSQL(lSQL) do
|
||
if (RecordCount>0) and (Length(koop)>0) then
|
||
begin
|
||
First;
|
||
while not(EOF) do
|
||
begin
|
||
if (VarToStr(FieldValues(2))<>Helios.Sklad) then
|
||
begin
|
||
Inc(i);
|
||
koop[i].Nazev:= VarToStr(FieldValues(0));
|
||
koop[i].CisloOrg:= StrToInt(VarToStr(FieldValues(1)));
|
||
koop[i].Sklad:= VarToStr(FieldValues(2));
|
||
koop[i].ItemIndex:= i+1;
|
||
cbOrg.Items.Add(koop[i].Nazev);
|
||
end;
|
||
Next;
|
||
end;
|
||
end;
|
||
|
||
i:= 0;
|
||
if (Length(koop)>0) then
|
||
begin
|
||
for i:=0 to Length(koop)-1 do
|
||
if (koop[i].Nazev='') then
|
||
Break;
|
||
end;
|
||
if (i>0) then
|
||
SetLength (koop,i);
|
||
|
||
edtDat.Date:= Now;
|
||
// viewPol.OptionsView.NoDataToDisplayInfoText:= '';
|
||
|
||
|
||
insData:= true;
|
||
VytvorTabulkyAGrid;
|
||
|
||
iOdb:= 0; // pocatecni index cbOrg
|
||
idBL:= 0;
|
||
|
||
|
||
if (idDZ>0) then
|
||
begin
|
||
// cbTypDokl.Enabled:= false;
|
||
NactiBalList
|
||
end
|
||
else
|
||
begin
|
||
lSQL:= 'INSERT ' + tblBL + ' (CisloOrg, Datum, Vratka) VALUES (';
|
||
case Helios.BrowseID of
|
||
27: lSQL:= lSQL + '1';
|
||
else lSQL:= lSQL + '11';
|
||
end;
|
||
lSQL:= lSQL + ',CONVERT(datetime,N' + QuotedStr(edtDat.Text) + ',104),0)' + CRLF + 'SELECT SCOPE_IDENTITY()';
|
||
with Helios.OpenSQL(lSQL) do
|
||
idBL:= StrToInt(VarToStr(FieldValues(0)));
|
||
end;
|
||
insData:= false;
|
||
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TformBaliciListy.WMGetMinMaxInfo (var AMsg: TWMGetMinMaxInfo);
|
||
begin
|
||
inherited;
|
||
{
|
||
with AMsg.MinMaxInfo^ do
|
||
begin
|
||
ptMinTrackSize:= Point(Self.Constraints.MinWidth, Self.Constraints.MinHeight);
|
||
ptMaxTrackSize:= Point(Self.Constraints.MaxWidth, Self.Constraints.MaxHeight);
|
||
end;
|
||
}
|
||
end;
|
||
|
||
|
||
end.
|
||
|