You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

235 lines
5.9 KiB
Plaintext

unit ExpVouItemsu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGridEh, ExtCtrls, Buttons, StdCtrls, DB, kbmMemTable,
SlDateu, DBTables;
type
TfrmExpVou = class(TForm)
Panel1: TPanel;
Bevel1: TBevel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Panel2: TPanel;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
BitBtn1: TBitBtn;
memTblVouitems: TkbmMemTable;
dsrVouitems: TDataSource;
SlDate: TSlDate;
DataSource1: TDataSource;
Query1: TQuery;
CheckBox1: TCheckBox;
DBGridCarriageSum: TDBGridEh;
SaveDialog1: TSaveDialog;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SlDateDateChanged(Sender: TObject; FromDate,
ToDate: TDateTime; sFromDate, sToDate: String; MonthDay: TMonthDay);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
private
procedure GetVouitems;
procedure CreateMemTbl;
procedure SetCarriageSum(Sel : Boolean);
{ Private declarations }
public
{ Public declarations }
end;
var
frmExpVou: TfrmExpVou;
implementation
uses NetConstu, DSMainfrmu;
{$R *.dfm}
procedure TfrmExpVou.CreateMemTbl;
begin
memTblVouitems.Close;
memTblVouitems.Fields.Clear;
with memTblVouitems.FieldDefs do begin
Clear;
Add('Selected', ftsmallint, 0, false);
Add('VOUDATE', ftDate, 0, false);
Add('AccMonth', ftsmallint, 0, false);
Add('VKNO', ftsmallint, 0, false);
Add('ORDNO', ftinteger, 0, false);
Add('LineNO', ftinteger, 0, false);
Add('ExPlan', ftString, 60, false);
Add('ACCID',ftString,16,false);
Add('ACCNAME',ftString,30,false);
Add('MBLNO',ftString,20,false);
Add('CorpID',ftString,20,false);
Add('FCY',ftString,2,false);
Add('FCYEXRATE', ftFloat, 0, false);
Add('DC',ftString,2,false);
Add('FCYDR', ftFloat, 0, false);
Add('FCYCR', ftFloat, 0, false);
Add('AMTDR', ftFloat, 0, false);
Add('AMTCR', ftFloat, 0, false);
Add('PREPARED', ftString,10, false);
memTblVouitems.CreateTable;
end;
end;
procedure TfrmExpVou.SetCarriageSum(Sel : Boolean);
var BK : TBookmark;
NoteNoTag : SmallInt;
begin
if not memTblVouitems.Active then exit;
if Sel then NoteNoTag:=1 else NoteNoTag:=0;
BK:=memTblVouitems.getbookmark;
with memTblVouitems do
try
DisableControls;
First;
while not Eof do begin
if FieldByName('Selected').AsInteger<>NoteNoTag then begin
Edit;
FieldByName('Selected').AsInteger:=NoteNoTag;
Post;
end;
Next;
end;
finally
GotoBookmark(BK);
FreeBookmark(BK);
EnableControls;
end;
end;
procedure TfrmExpVou.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TfrmExpVou.FormShow(Sender: TObject);
begin
CreateMemTbl;
slDate.Today:=LoginInfo.LoginDate;
slDate.BeginChange;
end;
procedure TfrmExpVou.GetVouitems;
var
aQuery:TQuery;
s:String;
begin
if SlDate.DateKind<>dkAll then begin
S:=Format(' and (v.VouDate>=''%s'' and v.VouDate<=''%s'')',[SlDate.FromDateAsString,SlDate.ToDateAsString]);
end else S:='';
aQuery:=CreateQuery;
try
with aQuery do begin
Close;SQL.Clear;
SQL.Add('Select 0 selected,V.* from V_Vouitems V where 1=1 ');
if not CheckBox1.Checked then
SQL.Add(' AND V.STATUS=0');
if S<>'' then
SQL.Add(S);
Open;
end;
memTblVouitems.LoadFromDataSet(aQuery,[]);
finally
freeAndNil(aQuery);
end;
end;
procedure TfrmExpVou.FormCreate(Sender: TObject);
begin
// CreateMemTbl;
end;
procedure TfrmExpVou.SlDateDateChanged(Sender: TObject; FromDate,
ToDate: TDateTime; sFromDate, sToDate: String; MonthDay: TMonthDay);
begin
GetVouitems;
end;
procedure TfrmExpVou.SpeedButton3Click(Sender: TObject);
begin
SetCarriageSum(true);
end;
procedure TfrmExpVou.SpeedButton4Click(Sender: TObject);
begin
SetCarriageSum(false);
end;
procedure TfrmExpVou.SpeedButton2Click(Sender: TObject);
var
aQuery:TQuery;
SL:TStrings;
S:String;
begin
if not memtblVouitems.Active then exit;
// DatabaseVouitems.Connected:=true;
// tblVouitems.Active:=true;
memtblVouitems.First;
aQuery:=CreateQuery;
aQuery.SQL.Add('Update Vouitems set Status=1 where ordno=:OrdNo and lineNo=:lineNo');
sl:=TStringList.Create;
sl.Add('<27><><EFBFBD><EFBFBD>ƾ֤,V800');
try
while not memtblVouitems.Eof do begin
if memtblVouitems.FieldByName('Selected').AsInteger=1 then begin
S:='';
S:=S+FormatDateTime('YY-MM-DD',memTblVouitems.FieldByName('VouDate').AsDateTime)+',';
if memTblVouitems.FieldByName('VKNO').AsInteger=1 then
S:=S+'ת,';
S:=S+memTblVouitems.fieldByName('ORDNO').AsString+',';
S:=S+'1'+',';
S:=S+memTblVouitems.fieldByName('Explan').AsString+',';
S:=S+memTblVouitems.fieldByName('ACCID').AsString+',';
S:=S+memTblVouitems.fieldByName('AMTDR').AsString+',';
S:=S+memTblVouitems.fieldByName('AMTCR').AsString+',,';
S:=S+FloattoStr(memTblVouitems.fieldByName('FCYDR').AsFloat+memTblVouitems.fieldByName('FCYCR').AsFloat)+',';
S:=S+memTblVouitems.fieldByName('FCYExRate').AsString+',,,,,,,';
S:=S+memTblVouitems.fieldByName('CORPID').AsString+',,';
SL.Add(S);
end;
memTblVouitems.Next;
end;
if sl.Count<>1 then begin
if SaveDialog1.Execute then begin
sl.SaveToFile(SaveDialog1.FileName);
end;
end;
finally
FreeAndNil(aQuery);
FreeAndNil(Sl);
end;
end;
procedure TfrmExpVou.SpeedButton1Click(Sender: TObject);
begin
GetVouitems;
end;
procedure TfrmExpVou.CheckBox1Click(Sender: TObject);
begin
GetVouitems;
end;
end.