📄 csh510_02.pas.svn-base
字号:
unit Csh510_02;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Bas200_13, DB, ADODB, ActnList, Menus, ComCtrls, ToolWin,
StdCtrls, Buttons, wwdbdatetimepicker, dxCntner, dxEditor, dxExEdtr,
dxEdLib, Mask, wwdbedit, Wwdotdot, Grids, Wwdbigrd, Wwdbgrid, Wwdbcomb,
wwdblook, DBCtrls;
type
TCsh510_02Form = class(TBas200_13Form)
lblAcct: TLabel;
cbAcct: TComboBox;
lblType: TLabel;
cbType: TComboBox;
lblFrom: TLabel;
cbFrom: TComboBox;
lblObj: TLabel;
cbObj: TComboBox;
edtPerson: TEdit;
sbPerson: TSpeedButton;
edtPersonName: TEdit;
lblCust: TLabel;
edtCust: TEdit;
sbCust: TSpeedButton;
edtCustName: TEdit;
lblAmount: TLabel;
lblDate: TLabel;
edtDate: TwwDBDateTimePicker;
lblOrgCode: TLabel;
PageControl1: TPageControl;
tsItem: TTabSheet;
wwDBGrid1: TwwDBGrid;
edtItem: TwwDBComboDlg;
lblPerson: TLabel;
edtAmount: TEdit;
dsCsh510B: TDataSource;
adsCsh510B: TADODataSet;
qryCsh510B: TADOQuery;
adsCsh510BFCode: TStringField;
adsCsh510BFLineNo: TIntegerField;
adsCsh510BFInvCode: TStringField;
adsCsh510BFInvLineNo: TIntegerField;
adsCsh510BFRecAmount: TFloatField;
adsCsh510BFAmount: TFloatField;
adsCsh510BFTasCode: TStringField;
adsCsh510BFRemark: TStringField;
lblBillNo: TLabel;
edtBillNo: TEdit;
memRemark: TMemo;
adsCsh510BFClass: TStringField;
adsCsh510BFClassNo: TIntegerField;
adsCsh510BFProject: TStringField;
adsCsh510BFProjectNo: TIntegerField;
adsCsh510BFDept: TStringField;
adsCsh510BFDeptNo: TIntegerField;
qryClass: TADOQuery;
qryProject: TADOQuery;
qryDept: TADOQuery;
qryDeptH100_001: TAutoIncField;
qryDeptH100_002: TWideStringField;
qryDeptH100_003: TIntegerField;
qryDeptH100_004: TBooleanField;
qryProjectC150_001: TAutoIncField;
qryProjectC150_002: TWideStringField;
qryProjectC150_003: TIntegerField;
qryProjectC150_004: TBooleanField;
qryClassC140_001: TAutoIncField;
qryClassC140_002: TWideStringField;
qryClassC140_003: TSmallintField;
qryClassC140_004: TIntegerField;
qryClassC140_005: TBooleanField;
qryCsh550: TADOQuery;
qryCsh550C550_001: TAutoIncField;
qryCsh550C550_002: TWideStringField;
qryCsh550C550_003: TWideStringField;
qryCsh550C550_004: TSmallintField;
qryCsh550C550_005: TIntegerField;
qryCsh550C550_006: TIntegerField;
qryCsh550C550_007: TDateTimeField;
qryCsh550C550_008: TFloatField;
qryItems: TADOQuery;
qryHrm150: TADOQuery;
AutoIncField1: TAutoIncField;
WideStringField1: TWideStringField;
WideStringField2: TWideStringField;
qryOrd150: TADOQuery;
qryOrd150FNo: TAutoIncField;
qryOrd150FCode: TWideStringField;
qryOrd150FName: TWideStringField;
ADODataSet1: TADODataSet;
edtOrgCode: TEdit;
qryCsh140: TADOQuery;
ADOQuery1C510A_001: TWideStringField;
ADOQuery1C510A_002: TIntegerField;
ADOQuery1C510A_003: TIntegerField;
ADOQuery1C510A_004: TSmallintField;
ADOQuery1C510A_005: TSmallintField;
ADOQuery1C510A_006: TSmallintField;
ADOQuery1C510A_007: TSmallintField;
ADOQuery1C510A_008: TIntegerField;
ADOQuery1C510A_009: TFloatField;
ADOQuery1C510A_010: TDateTimeField;
ADOQuery1C510A_011: TWideStringField;
ADOQuery1C510A_012: TIntegerField;
ADOQuery1C510A_013: TFloatField;
ADOQuery1C510A_014: TWideStringField;
ADOQuery1C510A_015: TWideStringField;
ADOQuery1C510A_016: TDateTimeField;
ADOQuery1C510A_017: TWideStringField;
ADOQuery1C510A_018: TDateTimeField;
ADOQuery1C510A_019: TWideStringField;
ADOQuery1C550_002: TWideStringField;
ADOQuery1H150_002: TWideStringField;
ADOQuery1H150_003: TWideStringField;
qryCsh510BC510B_001: TWideStringField;
qryCsh510BC510B_002: TIntegerField;
qryCsh510BC510B_003: TWideStringField;
qryCsh510BC510B_004: TIntegerField;
qryCsh510BC510B_005: TFloatField;
qryCsh510BC510B_006: TFloatField;
qryCsh510BC510B_007: TIntegerField;
qryCsh510BC510B_008: TIntegerField;
qryCsh510BC510B_009: TIntegerField;
qryCsh510BC510B_010: TWideStringField;
qryCsh510BC510B_011: TWideStringField;
dsClass: TDataSource;
dsProject: TDataSource;
dsDept: TDataSource;
cbClass: TDBLookupComboBox;
cbProject: TDBLookupComboBox;
cbDept: TDBLookupComboBox;
procedure edtItemCustomDlg(Sender: TObject);
procedure sbCustClick(Sender: TObject);
procedure sbPersonClick(Sender: TObject);
procedure wwDBGrid1ColExit(Sender: TObject);
procedure wwDBGrid1Exit(Sender: TObject);
procedure wwDBGrid1Enter(Sender: TObject);
procedure wwDBGrid1UpdateFooter(Sender: TObject);
procedure adsCsh510BNewRecord(DataSet: TDataSet);
procedure adsCsh510BAfterScroll(DataSet: TDataSet);
procedure adsCsh510BBeforePost(DataSet: TDataSet);
procedure edtPersonExit(Sender: TObject);
procedure edtCustExit(Sender: TObject);
procedure cbObjChange(Sender: TObject);
procedure cbTypeChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure cbFromChange(Sender: TObject);
private
{ Private declarations }
AType:String;
ALastNo:Integer;
ABusy,AIsChanged:Boolean;
procedure CheckItem;
procedure SetDBGridA(AFrom:Integer);
procedure setqryClass(AFlag:Integer);
procedure GetDetailData;
function GetCurrNo(ACurrNo:Integer):Integer;
public
{ Public declarations }
procedure OpenData(ACode:String);
procedure SetInterface; override;
procedure GetDataInfo; override;
procedure InsertEvent; override;
procedure UpdateEvent; override;
procedure DeleteEvent; override;
procedure SetEmptyInit; override;
procedure TableBeforePost; override;
procedure TableAfterPost; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
end;
var
Csh510_02Form: TCsh510_02Form;
implementation
uses SYSDATA, CommFun, CshComm, HwSelData, HwSelDataA;
{$R *.dfm}
{ TCsh510_06Form }
procedure TCsh510_02Form.DeleteEvent;
var
AAccNo:Integer;
ADate:TDateTime;
AAmount:Double;
AObjType,ABillNo,ACustNo:Integer;
ACode:string;
begin
Screen.Cursor:=crHourGlass;
ACode:=edtCode.Text;
//删除旧记录
AAccNo:=ADOQuery1.FieldByName('C510A_003').Value; //帐户编号
ADate:=ADOQuery1.FieldByName('C510A_010').Value; //收支日期
ABillNo:=ADOQuery1.FieldByName('C510A_002').Value; //顺序编号
AObjType:=ADOQuery1.FieldByName('C510A_007').Value; //对象类型
ACustNo:=ADOQuery1.FieldByName('C510A_008').Value; //对象编号
AAmount:=ADOQuery1.FieldByName('C510A_009').Value; //收支金额
if cbFrom.ItemIndex=1 then //销售
begin
//反写销售发票ACR510B的已收支金额
UpdateACR510B(AAccNo,ADate,ABillNo,'DEL');
//反写销售定单ORD510B的已收支金额
UpdateORD510B(AAccNo,ADate,ABillNo,'O510B_027','DEL');
end else
if cbFrom.ItemIndex=2 then //采购
begin
//反写采购发票ACR510B的已收支金额
UpdateACP510B(AAccNo,ADate,ABillNo,'DEL');
//反写采购定单PUR510B的已收支金额
UpdatePUR510B(AAccNo,ADate,ABillNo,'P510B_027','DEL');
end;
//更新债权债务帐本表的余额字段
if cbType.ItemIndex in [2,3,4,5] then
begin
UpdateCSH610(AObjType,ACustNo,AAccNo,0,0,ABillNo,0,ADate,AAmount,'','','DEL');
end;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH510B where C510B_001='+''''+ACode+'''');
SYSDM.qryQuery.ExecSQL;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH510A where C510A_001='+''''+ACode+'''');
SYSDM.qryQuery.ExecSQL;
//取上条记录的日期&编号
GetPriorRecord(AAccNo,ADate,ABillNo,ADate,ABillNo);
//计算余额
ReCalcBalance(AAccNo, ADate, ABillNo);
end;
procedure TCsh510_02Form.GetDataInfo;
begin
inherited;
//主界面
//收支类型(1=收入单,2=支出单,3=转帐单,4=借入单,5=借出单,6=还入单,7=还出单)
edtCode.Text:=ADOQuery1.fieldByName('C510A_001').AsString; //收支单号
cbAcct.ItemIndex:=cbAcct.Items.IndexOf(ADOQuery1.fieldByName('C550_002').AsString); //帐户名称
case ADOQuery1.FieldByName('C510A_004').AsInteger of
1:cbType.ItemIndex:=0;
2:cbType.ItemIndex:=1;
4:cbType.ItemIndex:=2;
5:cbType.ItemIndex:=3;
6:cbType.ItemIndex:=4;
7:cbType.ItemIndex:=5;
end;
cbTypeChange(cbType);
edtBillNo.Text:=ADOQuery1.fieldByName('C510A_002').AsString; //顺序编号
cbFrom.ItemIndex:=ADOQuery1.FieldByName('C510A_006').Value; //来源类型(0=手工输入,1=销售定单,2=采购定单,3=任务工单)
cbFromChange(cbFrom);
edtDate.Date:=ADOQuery1.FieldByName('C510A_010').Value; //日期
edtPerson.Text:=ADOQuery1.FieldByName('H150_002').Value; //录入员工
edtPersonName.Text:=ADOQuery1.FieldByName('H150_003').Value; //录入员工
qryHrm150.Locate('H150_002',edtPerson.Text,[]); //调整数据
edtOrgCode.Text:=ADOQuery1.FieldByName('C510A_014').AsString; //原始单号
cbObj.ItemIndex:=ADOQuery1.FieldByName('C510A_007').AsInteger; //对象类型(0=客户,1=员工,2=空白)
cbObjChange(cbObj);
edtAmount.Text:=ADOQuery1.FieldByName('C510A_009').AsString; //金额
memRemark.Text:=ADOQuery1.FieldByName('C510A_015').AsString; //备注
if edtCust.Enabled then
begin
if qryOrd150.Locate('FNo',ADOQuery1.FieldByName('C510A_008').Value,[]) then
begin
edtCust.Text:=qryOrd150.FieldByName('FCode').AsString; //编号
edtCustName.Text:=qryOrd150.FieldByName('FName').AsString; //名称
end else
begin
edtCust.Text:='';
edtCustName.Text:='';
end;
end;
//明细表
GetDetailData;
edtCreateDate.Text:=ADOQuery1.fieldByName('C510A_016').AsString;
edtCreateBy.Text:=ADOQuery1.fieldByName('C510A_017').AsString;
edtUpdateDate.Text:=ADOQuery1.fieldByName('C510A_018').AsString;
edtUpdateBy.Text:=ADOQuery1.fieldByName('C510A_019').AsString;
end;
procedure TCsh510_02Form.InsertEvent;
begin
inherited;
//新增时更新界面
edtCode.Text:='';
cbAcct.ItemIndex:=-1;
cbType.ItemIndex:=0;
cbTypeChange(cbType);
//取单据编号
edtDate.Date:=GetServerDate;
edtBillNo.Text:=GetBillNo(edtDate.Date);
cbFrom.ItemIndex:=0;
edtPerson.Text:='';
edtPersonName.Text:='';
edtOrgCode.Text:='';
cbObj.ItemIndex:=0;
edtCust.Text:='';
edtCustName.Text:='';
edtAmount.Text:='0.0';
memRemark.Text:='';
adsCsh510B.Close;
adsCsh510B.CreateDataSet;
SetDBGridA(cbFrom.ItemIndex);
edtCreateDate.Text:=FormatDateTime('yyyy-mm-dd hh:mm:ss',GetServerDate);
edtCreateBy.Text:=AUserName;
edtUpdateDate.Text:=FormatDateTime('yyyy-mm-dd hh:mm:ss',GetServerDate);
edtUpdateBy.Text:=AUserName;
end;
procedure TCsh510_02Form.OpenData(ACode: String);
begin
if ACode='' then AMode:='ADD' else AMode:='UPD';
ADOQuery1.DisableControls;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select A.*,B.C550_002,C.H150_002,C.H150_003');
ADOQuery1.SQL.Add(' from CSH510A A,CSH550 B,HRM150 C');
ADOQuery1.SQL.Add(' where C510A_003=C550_001 and A.C510A_012=C.H150_001');
ADOQuery1.SQL.Add(' Order By C510A_001');
ADOQuery1.Open;
ADOQuery1.Locate('C510A_001',ACode,[]);
ADOQuery1.EnableControls;
// ADOQuery1AfterScroll(ADOQuery1);
end;
procedure TCsh510_02Form.ReportGetValue(const ParName: String;
var ParValue: Variant);
begin
inherited;
end;
//取票据编号
//ADateTime:日期
function GetBillNo(ADateTime:TDateTime):string;
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
//可能需要修改
SYSDM.qryQuery.SQL.Add('select max(C500_004) from CSH500 where C500_002<>0 and C500_003='+GetDateString(ADateTime));
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.Fields[0].IsNull then
Result:='1'
else
Result:=IntToStr(SYSDM.qryQuery.Fields[0].Value+1);
SYSDM.qryQuery.Close;
end;
procedure TCsh510_02Form.SetEmptyInit;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -