📄 csh510_02.pas.svn-base
字号:
inherited;
edtCode.Text:='';
cbAcct.ItemIndex:=-1;
cbType.ItemIndex:=0;
cbTypeChange(cbType);
//取单据编号
edtDate.Date:=GetServerDate;
edtBillNo.Text:=GetBillNo(edtDate.Date);
edtPerson.Text:='';
edtPersonName.Text:='';
edtOrgCode.Text:='';
cbObj.ItemIndex:=0;
edtCust.Text:='';
edtCustName.Text:='';
edtAmount.Text:='0.0';
memRemark.Text:='';
cbFrom.ItemIndex:=0;
adsCsh510B.Close;
adsCsh510B.CreateDataSet;
SetDBGridA(cbFrom.ItemIndex);
end;
procedure TCsh510_02Form.SetInterface;
begin
inherited;
Caption:=GetDBString('COM00009032'); //收支单维护
lblCode.Caption:=GetDBString('COM00009033'); //收支单号
lblAcct.Caption:=GetDBString('CSH51002003'); //帐户名称
lblFrom.Caption:=GetDBString('CSH51002004'); //来源类型
lblObj.Caption:=GetDBString('CSH51002005'); //对象类型
lblCust.Caption:=GetDBString('CSH51002006'); //对象编号
lblBillNo.Caption:=GetDBString('CSH51002009'); //单据编号
lblDate.Caption:=GetDBString('CSH51002010'); //收支日期
lblAmount.Caption:=GetDBString('CSH51002011'); //收支金额
cbType.Items.Clear;
cbType.Items.Add(GetDBString('CSH51002014')); //收入单
cbType.Items.Add(GetDBString('CSH51002015')); //支出单
cbType.Items.Add(GetDBString('CSH51002017')); //借入单
cbType.Items.Add(GetDBString('CSH51002018')); //借出单
cbType.Items.Add(GetDBString('CSH51002019')); //还入单
cbType.Items.Add(GetDBString('CSH51002020')); //还出单
cbType.ItemIndex:=0;
cbTypeChange(cbType);
cbFrom.Items.Clear;
cbFrom.Items.Add(GetDBString('CSH51002021')); //手工输入
cbFrom.Items.Add(GetDBString('CSH51002022')); //销售定单
cbFrom.Items.Add(GetDBString('CSH51002023')); //采购定单
cbFrom.Items.Add(GetDBString('CSH51002016')); //任务工单
cbFrom.ItemIndex:=0;
SetDBGridA(cbFrom.ItemIndex);
cbObj.Items.Clear;
cbObj.Items.Add(GetDBString('CSH51002024')); //客户
cbObj.Items.Add(GetDBString('CSH51002025')); //员工
cbObj.Items.Add(GetDBString('CSH51002026')); //空白
cbObj.ItemIndex:=2;
lblPerson.Caption:=GetDBString('CSH51002034'); //录入员工
lblBillNo.Caption:=GetDBString('CSH51002035'); //顺序编号
wwDBGrid1.ColumnByName('FCode').DisplayLabel:=GetDBString('CSH51002036'); //收支单号
wwDBGrid1.ColumnByName('FLineNo').DisplayLabel:=GetDBString('CSH51002037'); //收支行号
wwDBGrid1.ColumnByName('FInvCode').DisplayLabel:=GetDBString('CSH51002038'); //发票编号
wwDBGrid1.ColumnByName('FInvLineNo').DisplayLabel:=GetDBString('CSH51002039'); //发票行号
wwDBGrid1.ColumnByName('FRecAmount').DisplayLabel:=GetDBString('CSH51002040'); //应收金额
wwDBGrid1.ColumnByName('FAmount').DisplayLabel:=GetDBString('CSH51002041'); //实收金额
wwDBGrid1.ColumnByName('FClass').DisplayLabel:=GetDBString('CSH51002042'); //业务分类
wwDBGrid1.ColumnByName('FProject').DisplayLabel:=GetDBString('CSH51002043'); //项目编号
wwDBGrid1.ColumnByName('FDept').DisplayLabel:=GetDBString('CSH51002044'); //部门编号
wwDBGrid1.ColumnByName('FTasCode').DisplayLabel:=GetDBString('CSH51002045'); //任务工单
wwDBGrid1.ColumnByName('FRemark').DisplayLabel:=GetDBString('CSH51002046'); //备注说明
//帐户名称
cbAcct.Items.Clear;
qryCsh550.Close;
qryCsh550.Open;
qryCsh550.First;
while not qryCsh550.Eof do
begin
cbAcct.Items.Add(qryCsh550.FieldByName('C550_002').Value);
qryCsh550.Next;
end;
edtDate.Date:=GetServerDate; //收支日期
end;
procedure TCsh510_02Form.TableAfterPost;
var
ACode:string;
AAmount:Double;
ADate:TDateTime;
AAccNo,ACustNo,ABillNo,AObjType:Integer;
begin
inherited;
//收支类型(1=收入单,2=支出单,3=转帐单,4=借入单,5=借出单,6=还入单,7=还出单)
ACode:=edtCode.Text;
qryCsh510B.Close;
qryCsh510B.SQL.Clear;
qryCsh510B.SQL.Add('select * from CSH510B where C510B_001='+''''+edtCode.Text+'''');
qryCsh510B.Open;
if adsCsh510B.State in [dsInsert,dsEdit] then adsCsh510B.Post;
adsCsh510B.First;
while not adsCsh510B.Eof do
begin
qryCsh510B.Append;
qryCsh510B.FieldByName('C510B_001').Value:=edtCode.Text; //收支单号
qryCsh510B.FieldByName('C510B_002').Value:=adsCsh510B.FieldByName('FLineNo').Value; //收支行号
qryCsh510B.FieldByName('C510B_003').Value:=adsCsh510B.FieldByName('FInvCode').Value; //发票编号
qryCsh510B.FieldByName('C510B_004').Value:=adsCsh510B.FieldByName('FInvLineNo').Value; //发票行号
qryCsh510B.FieldByName('C510B_005').Value:=adsCsh510B.FieldByName('FRecAmount').Value; //应收金额
qryCsh510B.FieldByName('C510B_006').Value:=adsCsh510B.FieldByName('FAmount').Value; //实收金额
qryCsh510B.FieldByName('C510B_007').Value:=adsCsh510B.FieldByName('FClassNo').Value; //业务分类
qryCsh510B.FieldByName('C510B_008').Value:=adsCsh510B.FieldByName('FProjectNo').Value; //项目编号
qryCsh510B.FieldByName('C510B_009').Value:=adsCsh510B.FieldByName('FDeptNo').Value; //部门编号
qryCsh510B.FieldByName('C510B_010').Value:=adsCsh510B.FieldByName('FTasCode').Value; //任务工单
qryCsh510B.FieldByName('C510B_011').Value:=adsCsh510B.FieldByName('FRemark').Value; //备注说明
qryCsh510B.Post;
adsCsh510B.Next;
end;
//更新相关记录
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,'ADD');
//反写销售定单ORD510B的已收支金额
UpdateORD510B(AAccNo,ADate,ABillNo,'O510B_027','ADD');
end else
if cbFrom.ItemIndex=2 then //采购
begin
//反写采购发票ACR510B的已收支金额
UpdateACP510B(AAccNo,ADate,ABillNo,'ADD');
//反写采购定单PUR510B的已收支金额
UpdatePUR510B(AAccNo,ADate,ABillNo,'P510B_027','ADD');
end;
//更新债权债务帐本表的余额字段
if cbType.ItemIndex in [2,3,4,5] then
begin
UpdateCSH610(AObjType,ACustNo,AAccNo,0,0,ABillNo,0,ADate,AAmount,'','','ADD');
end;
//取上条记录的日期&编号
GetPriorRecord(AAccNo,ADate,ABillNo,ADate,ABillNo);
//计算余额
ReCalcBalance(AAccNo, ADate, ABillNo);
end;
procedure TCsh510_02Form.TableBeforePost;
var
ACode:string;
AAccNo,APerson:Integer;
ADate:TDateTime;
AAmount:Double;
AObjType,ABillNo,AInOut,ATypeNo,ACustNo:Integer;
begin
inherited;
//验证数据的有效性,并保存主表
//校验
Screen.Cursor:=crHourGlass;
ACode:=edtCode.Text;
if not qryHrm150.Locate('H150_002',edtPerson.Text,[]) then
begin
ShowMsg('UMS10000698'); //输入的录入人员无效
edtPerson.Text:='';
edtPersonName.Text:='';
edtPerson.SetFocus;
Abort;
end;
if edtCust.Enabled then
begin
if not qryOrd150.Locate('FCode',edtCust.Text,[]) then
begin
ShowMsg('UMS10000589'); //输入的对象编号无效,请重新输入
edtCust.Text:='';
edtCustName.Text:='';
edtCust.SetFocus;
Abort;
end;
end;
//收支类型(1=收入单,2=支出单,3=转帐单,4=借入单,5=借出单,6=还入单,7=还出单)
ATypeNo:=1;
case cbType.ItemIndex of
0:ATypeNo:=1;
1:ATypeNo:=2;
2:ATypeNo:=4;
3:ATypeNo:=5;
4:ATypeNo:=6;
5:ATypeNo:=7;
end;
AInOut:=0;
case cbType.ItemIndex of
0,2,4:AInOut:=0;
1,3,5:AInOut:=1;
end;
//删除旧记录
if AMode='UPD' then
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from CSH510A where C510A_001='+''''+edtCode.Text+'''');
SYSDM.qryQuery.Open;
AAccNo:=SYSDM.qryQuery.FieldByName('C510A_003').value; //帐户编号
ADate:=SYSDM.qryQuery.FieldByName('C510A_010').value; //收支日期
ABillNo:=SYSDM.qryQuery.FieldByName('C510A_002').value; //顺序编号
AObjType:=SYSDM.qryQuery.FieldByName('C510A_007').value; //对象类型
ACustNo:=SYSDM.qryQuery.FieldByName('C510A_008').AsInteger; //对象编号
AAmount:=SYSDM.qryQuery.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;
//取上条记录的日期&编号
GetPriorRecord(AAccNo,ADate,ABillNo,ADate,ABillNo);
//计算余额
ReCalcBalance(AAccNo, ADate, ABillNo);
end;
APerson:=qryHrm150.FieldByName('H150_001').Value;
qryCsh550.Locate('C550_002',cbAcct.Text,[]);
AAccNo:=qryCsh550.FieldByName('C550_001').Value;
if adsCsh510B.State in [dsInsert,dsEdit] then adsCsh510B.Post;
if AMode='ADD' then
begin
ADOQuery1.Append;
ADOQuery1.FieldByName('C510A_016').AsString:=edtCreateDate.Text; //制单日期
ADOQuery1.FieldByName('C510A_017').AsString:=edtCreateBy.Text; //制单人员
ADOQuery1.FieldByName('C510A_018').AsString:=edtUpdateDate.Text; //修改日期
ADOQuery1.FieldByName('C510A_019').AsString:=edtUpdateBy.Text; //修改人员
end else
begin
ADate:=GetServerDate;
ADOQuery1.Edit;
ADOQuery1.FieldByName('C510A_018').AsString:=edtUpdateDate.Text; //修改日期
ADOQuery1.FieldByName('C510A_019').AsString:=edtUpdateBy.Text; //修改人员
end;
ADOQuery1.FieldByName('C510A_002').Value:=strtoint(edtBillNo.Text); //顺序编号
ADOQuery1.FieldByName('C510A_003').Value:=AAccNo; //帐户编号
ADOQuery1.FieldByName('C510A_004').Value:=ATypeNo; //单据类型
ADOQuery1.FieldByName('C510A_005').Value:=AInOut; //收入支出
ADOQuery1.FieldByName('C510A_006').Value:=cbFrom.ItemIndex; //来源类型
ADOQuery1.FieldByName('C510A_007').Value:=cbObj.ItemIndex; //对象类型
ADOQuery1.FieldByName('C510A_008').Value:=ACurrNo; //对象编号
ADOQuery1.FieldByName('C510A_009').Value:=strtofloat(edtAmount.Text);//收支金额
ADOQuery1.FieldByName('C510A_010').Value:=edtDate.DateTime; //收支日期
// ADOQuery1.FieldByName('C510A_011').Value:=edtCOrder.Text; //票据编号 没有使用
ADOQuery1.FieldByName('C510A_012').Value:=APerson; //经办人员 没有使用
ADOQuery1.FieldByName('C510A_013').Value:=0; //帐户余额 需要经过自身调整
ADOQuery1.FieldByName('C510A_014').Value:=edtOrgCode.Text; //原始单号
ADOQuery1.FieldByName('C510A_015').Value:=memRemark.Text; //摘要说明
end;
procedure TCsh510_02Form.UpdateEvent;
begin
inherited;
end;
procedure TCsh510_02Form.edtItemCustomDlg(Sender: TObject);
var
ACustNo:Integer;
begin
inherited;
ACustNo:=0;
//产品编号
if edtCust.Enabled then
begin
if not qryOrd150.Locate('FCode',edtCust.Text,[]) then
begin
ShowMsg('UMS10000266'); //必须先输入正确的客户编号
edtCust.SetFocus;
Abort;
end;
end;
case cbFrom.ItemIndex of
0:AType:='CSH510A'; //手工输入
1:AType:='CSH510B'; //销售定单
2:AType:='CSH510C'; //采购定单
3:AType:='CSH510D'; //任务工单
end;
HwSelDataAForm:=THwSelDataAForm.Create(Application);
HwSelDataAForm.OpenData(AType,0,ACustNo,0,'',GetCurrNo(qryCsh550.FieldByName('C550_001').AsInteger));
if HwSelDataAForm.ShowModal=1 then
begin
Update;
ABusy:=True;
Screen.Cursor:=crHourGlass;
wwDBGrid1.OnUpdateFooter:=nil;
with HwSelDataAForm do
begin
adsInv150.DisableControls;
adsInv150.First;
while adsInv150.Locate('FSel',-1,[]) do
begin
//显示发票的信息
adsCsh510B.Append;
if AType='CSH510D' then
begin
adsCsh510B.FieldByName('FTasCode').Value:=adsInv150.FieldByName('FTaskCode').Value;
end else
begin
// adsCsh510B.FieldByName('FCode').Value:=adsInv150.FieldByName('FCode').Value;
// adsCsh510B.FieldByName('FLineNo').Value:=adsInv150.FieldByName('FLineNo').Value;
adsCsh510B.FieldByName('FInvCode').Value:=adsInv150.FieldByName('FInvCode').Value;
adsCsh510B.FieldByName('FInvLineNo').Value:=adsInv150.FieldByName('FInvLineNo').Value;
// adsCsh510B.FieldByName('FItemID').Value:=adsInv150.FieldByName('FItemID').Value;
// adsCsh510B.FieldByName('FItemName').Value:=adsInv150.FieldByName('FItemName').Value;
// adsCsh510B.FieldByName('FItemSpec').Value:=adsInv150.FieldByName('FItemSpec').Value;
// adsCsh510B.FieldByName('FUnitName').Value:=adsInv150.FieldByName('FUnitName').Value;
adsCsh510B.FieldByName('FRecAmount').Value:=adsInv150.FieldByName('FRecAmount').Value;
// adsCsh510B.FieldByName('FAmount').Value:=adsInv150.FieldByName('FAmount').Value;
// adsCsh510B.FieldByName('FTasCode').Value:=adsInv150.FieldByName('FTaskCode').Value;
end;
adsCsh510B.Post;
adsInv150.Edit;
adsInv150.FieldByName('FSel').Value:=0;
adsInv150.Post;
end;
adsInv150.EnableControls;
end;
wwDBGrid1.OnUpdateFooter:=wwDBGrid1UpdateFooter;
AIsChanged:=True;
ABusy:=False;
wwDBGrid1UpdateFooter(wwDBGrid1);
Screen.Cursor:=crDefault;
end;
ABusy:=False;
end;
procedure TCsh510_02Form.sbCustClick(Sender: TObject);
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -