📄 upayment.pas
字号:
begin
DelSum:=DelSum+BillBodyData.Fieldbyname('OUGHTPAYSUM').AsFloat;
Delete;
if BillBodyData.RecNo=BillBodyData.RecordCount then
Next;
end;
end
else
begin
DelSum:=DelSum+BillBodyData.Fieldbyname('OUGHTPAYSUM').AsFloat;
Delete;
if BillBodyData.RecNo=BillBodyData.RecordCount then
Next;
end;
end;
end;
end;
Try
BillHandData.Edit;
BillHandData.Fieldbyname('PAYTOTALSUM').asFloat:=
BillHandData.Fieldbyname('PAYTOTALSUM').asFloat-DelSum;
BillBodyData.ApplyUpdates(-1);
BillHandData.ApplyUpDates(-1);
Application.MessageBox('保存数据成功。',Hintinfo,$30);
if Application.MessageBox('是否现在审核单据(审核后单据不可修改)?',Hintinfo, $24)=idYes then
SetAuditing;
except
Application.MessageBox('保存数据错误。',Errorinfo,$10);
BillBodyData.CancelUpdates;
BillHandData.CancelUpdates;
end;
BillBodyData.First;
Sum:=0;
isStateEdit:=False;
SetView;
BillBodyData.ReadOnly:=True;
BillHandData.ReadOnly:=True;
end;
procedure TfrmPayment.Action9Execute(Sender: TObject);
begin
DBCtrlGrid.SetFocus;
BillBodyData.CancelUpdates;
BillHandData.CancelUpdates;
BillBodyData.First;
Sum:=0;
isStateEdit:=False;
SetView;
BillBodyData.ReadOnly:=True;
BillHandData.ReadOnly:=True;
end;
procedure TfrmPayment.OTHERUNITDBEditEnter(Sender: TObject);
begin
if isStateEdit then
begin
OtherUnitDBEdit.DataField:='OtherUnitCode';
OldOtherUnitCode:=Trim(OtherUnitDBEdit.Text);
end;
end;
procedure TfrmPayment.OTHERUNITDBEditExit(Sender: TObject);
var
s: string;
begin
case AcceptBillModel of
0,2:
s:='select Code, ProviderName, PREPAYSUM from Providerinfo where Code='+
#39+Trim(OtherUnitDBEdit.Text)+#39;
1:
s:='select Code, ClientName, PREPAYSUM From ClientInfo where Code='+
#39+Trim(OtherUnitDBEdit.Text)+#39;
end;
if (Trim(OtherUnitDBEdit.Text)<>'') and (isStateEdit) and
(Trim(OtherUnitDBEdit.Text)<>OldOtherUnitCode) then
begin
OpenData(s, dmData.sdsPublic);
if dmData.sdsPublic.IsEmpty then
begin
Application.MessageBox(PChar('没有编号为“'+Trim(OtherUnitDBEdit.Text)+
'”的对方单位,请重新输入。'),Hintinfo, $30);
BillHandData.Edit;
BillHandData.FieldByName('OtherUnitCode').asstring:=OldOtherUnitCode;
OtherUnitDBEdit.SetFocus;
Exit;
end;
BillHandData.Edit;
BillHandData.FieldByName('OtherUnitName').asstring:=
dmData.sdsPublic.Fields[1].AsString;
BillHandData.FieldByName('PREPAYSUM').asfloat:=
dmData.sdsPublic.Fields[2].asFloat;
Sum:=0;
//如果是预付款则退出
if AcceptBillModel<>2 then
begin
BillBodyData.CancelUpdates;
BillHandData.FieldByName('PAYTOTALSUM').AsFloat:=0;
BillHandData.FieldByName('TOTALSUM').AsFloat:=0;
BillHandData.FieldByName('BIGSUM').AsString:='';
//查找所有未付款的单据
case AcceptBillModel of
0:
s:='select BILLCODE, BILLDATE, TOTALSUM, ACCEPTSUM, AGIOSUM, '+
' ISACCEPT From PARTSINPUTHAND where PROVIDERCODE='+
#39+Trim(BillHandData.FieldByName('OtherUnitCode').asstring)+#39+
' and ISACCEPT='''+'0'''+' and ISAUDITING='''+'1'''+
' and InPutType='''+'3'''+' Order by BillCode DESC';
1:
s:='select BILLCODE, BILLDATE, TOTALSUM, ACCEPTSUM, AGIOSUM, '+
' ISACCEPT From REIMBURSEBILLHAND where PROVIDERCODE='+
#39+Trim(BillHandData.FieldByName('OtherUnitCode').asstring)+#39+
' and isAccept='''+'0'''+' and ISAUDITING='''+'1'''+' Order by BillCode DESC';
end;
OpenData(s, dmData.sdsPublic);
while not dmData.sdsPublic.Eof do
begin
BillBodyData.Append;
BillBodyData.FieldByName('BillCode').asstring:='新单据';
BillBodyData.Fieldbyname('ID').asInteger:=BillBOdyData.RecordCount+1;
BillBodyData.Fieldbyname('PAYBILLCODE').asString:=
dmData.sdsPublic.Fieldbyname('BillCode').asString;
BillBodyData.Fieldbyname('PAYBILLDATE').asDateTime:=
dmData.sdsPublic.Fieldbyname('BILLDATE').asDateTime;
//总金额
BillBodyData.Fieldbyname('PAYTOTALSUM').asFloat:=
dmData.sdsPublic.Fieldbyname('TOTALSUM').asFloat;
//已收金额
BillBodyData.Fieldbyname('ALREADYPAYSUM').asFloat:=
dmData.sdsPublic.Fieldbyname('ACCEPTSUM').asFloat;
//应收金额
BillBodyData.Fieldbyname('OUGHTPAYSUM').asFloat:=
dmData.sdsPublic.Fieldbyname('TOTALSUM').asFloat-
dmData.sdsPublic.Fieldbyname('ACCEPTSUM').asFloat-
dmData.sdsPublic.Fieldbyname('AGIOSUM').asFloat;
BillBodyData.Fieldbyname('ISPAYSUM').asString:='False';
ISPAYSUMCheck.Checked:=False;
Sum:=Sum+BillBodyData.Fieldbyname('OUGHTPAYSUM').asFloat;
dmData.sdsPublic.Next;
end;
BillHandData.Edit;
BillHandData.Fieldbyname('PAYTOTALSUM').asFloat:=Sum;
GetSum;
end;
end
else
if (Trim(OTHERUNITDBEdit.Text)='') and
(Trim(OtherUnitDBEdit.Text)<>OldOtherUnitCode) then
begin
BillHandData.CancelUpdates;
BillBodyData.CancelUpdates;
BillHandData.Append;
BillHandData.Fieldbyname('BillCode').asstring:='新单据';
BillHandData.FieldByName('Operator').asstring:=UserName;
BillHandData.Fieldbyname('BILLDATE').asDateTime:=Date;
BillHandData.Fieldbyname('BILLMODEL').asstring:=PayMentModel;
BillHandData.FieldByName('PayType').asstring:='现金';
BillHandData.Fieldbyname('BILLTYPE').asstring:='2';
BillHandData.FieldByName('ISUSEPREPAYSUM').asstring:='False';
isPREPAYSUMCheck.Checked:=False;
Sum:=0;
OldOtherUnitCode:='';
end;
OtherUnitDBEdit.DataField:='OtherUnitName';
end;
procedure TfrmPayment.OTHERUNITDBEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and( Key=13) then
begin
LBEditButton1Click(Nil);
Exit;
end;
if key=13 then Perform(WM_NEXTDLGCTL,0,0);
end;
procedure TfrmPayment.LBEditButton2Click(Sender: TObject);
begin
if not isStateEdit then Exit;
GetXoY(LBEditButton2);
if BillHandData.Fieldbyname('BillDate').asDateTime>0 then
sDate:=BillHandData.Fieldbyname('BillDate').asDateTime
else
sDate:=Date;
SelectDate;
BillHandData.Edit;
BillHandData.FieldByName('BillDate').AsDateTime:=SDate;
end;
procedure TfrmPayment.BillDateDBEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key=13) then
begin
LBEditButton2Click(Nil);
Exit;
end;
if key=13 then Perform(WM_NEXTDLGCTL,0,0);
end;
procedure TfrmPayment.CurrentsumEditExit(Sender: TObject);
begin
if isStateEdit=False then Exit;
if CurrentsumEdit.Value<0 then
begin
Application.MessageBox('付款金额不能小于零。',Hintinfo,$30);
DBCtrlGrid.SetFocus;
CurrentsumEdit.SetFocus;
Exit;
end;
BillHandData.Edit;
if AcceptBillModel=2 then
begin
BillHandData.FieldByName('CANUSESUM').asFloat:=CurrentsumEdit.Value;
BillHandData.FieldByName('TOTALSUM').asFloat:=
BillHandData.FieldByName('CURRENTSUM').asFloat;
BillHandData.FieldByName('BigSum').asstring:=
SumSmallTOBig(BillHandData.FieldByName('TotalSum').Asfloat);
Exit;
end;
GetSum;
end;
procedure TfrmPayment.CurrentsumEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then Perform(WM_NEXTDLGCTL,0,0);
end;
procedure TfrmPayment.DBCurrencyEditExit(Sender: TObject);
begin
if isStateEdit=False Then Exit;
if (BillHandData.FieldByName('CANUSESUM').asFloat-
BillHandData.FieldByName('PAYTOTALSUM').asFloat>=0)
and (DBCurrencyEdit.Value>0) then
begin
Application.MessageBox('不存在让利金额。',Hintinfo,$30);
BillHandData.FieldByName('AGIOSUM').asFloat:=0;
Exit;
end;
if DBCurrencyEdit.Value>MaxAGIOSUM then
begin
Application.MessageBox('让利金额不可超出最大让利金额。',Hintinfo, $30);
DBCtrlGrid.SetFocus;
DBCurrencyEdit.SetFocus;
Exit;
end;
if (DBCurrencyEdit.Value>BillHandData.FieldByName('PAYTOTALSUM').asFloat-
BillHandData.FieldByName('CANUSESUM').asFloat)
and (DBCurrencyEdit.Value>0) then
begin
Application.MessageBox('让利金额不可大于未收金额。',Hintinfo,$30);
BillHandData.FieldByName('AGIOSUM').asFloat:=
BillHandData.FieldByName('PAYTOTALSUM').asFloat-
BillHandData.FieldByName('CANUSESUM').asFloat;
DBCtrlGrid.SetFocus;
DBCurrencyEdit.SetFocus;
Exit;
end;
end;
procedure TfrmPayment.isPrepaySumCheckClick(Sender: TObject);
begin
if isStateEdit then GetSum;
end;
procedure TfrmPayment.BillNextButtonClick(Sender: TObject);
begin
if isStateEdit then Exit;
BillHandData.Next;
if BillHandData.RecNo=1 then
BillHandData.Next;
if BillHandData.RecordCount=BillHandData.RecNo then
begin
if BillHandData.GetNextPacket=0 then
BillInfoLabel.Caption:='已经是移到第一张单据了!'
else
BillInfoLabel.Caption:='';
BillHandData.Next;
end
else
BillInfoLabel.Caption:='';
end;
procedure TfrmPayment.BillPriorButtonClick(Sender: TObject);
begin
if isStateEdit then Exit;
BillHandData.Prior;
if BillHandData.RecNo=1 then
BillHandData.Prior;
if BillHandData.Bof then
BillInfoLabel.Caption:='已经是移到最后一张单据了!'
else
BillInfoLabel.Caption:='';
end;
procedure TfrmPayment.FilialeinfoNameChange(Sender: TObject);
begin
if isStateEdit then CurrentsumEdit.SetFocus;
end;
procedure TfrmPayment.FilialeinfoNameDropDown(Sender: TObject);
begin
if Not isStateEdit then Exit;
OldOtherUnitCode:=Trim(FilialeinfoName.Text);
SetIndexListData('select FilialeCode, FilialeName From FilialeInfo', FilialeinfoName, 'FilialeCode','FilialeName');
end;
procedure TfrmPayment.FilialeinfoNameExit(Sender: TObject);
var
s: string;
begin
if not isStateEdit then Exit;
if (Trim(FilialeinfoName.Text)<>'')
and (Trim(FilialeinfoName.Text)<> OldOtherUnitCode) and
(FilialeinfoName.Items.Count>0) then
begin
TObject(List):=FilialeinfoName.Items.Objects[FilialeinfoName.ItemIndex];
BillHandData.Edit;
BillHandData.FieldByName('OtherUnitCode').asstring:=List.Code;
Sum:=0;
//如果是预付款则退出
if AcceptBillModel<>2 then
begin
BillBodyData.CancelUpdates;
BillHandData.FieldByName('PAYTOTALSUM').AsFloat:=0;
BillHandData.FieldByName('TOTALSUM').AsFloat:=0;
BillHandData.FieldByName('BIGSUM').AsString:='';
//查找所有未收款的单据
if AcceptBillModel=3 then
s:='select BILLCODE, BILLDATE, TOTALSUM, ACCEPTSUM, AGIOSUM, '+
' ISACCEPT From PARTSINPUTHAND where PROVIDERCODE='+
#39+Trim(BillHandData.FieldByName('OtherUnitCode').asstring)+#39+
' and isAccept='''+'0'''+' and ISAUDITING='''+'1'''+
' and InPutType='''+'4'''+' Order by BillCode DESC';
OpenData(s, dmData.sdsPublic);
while not dmData.sdsPublic.Eof do
begin
BillBodyData.Append;
BillBodyData.FieldByName('BillCode').asstring:='新单据';
BillBodyData.Fieldbyname('ID').asInteger:=BillBOdyData.RecordCount+1;
BillBodyData.Fieldbyname('PAYBILLCODE').asString:=
dmData.sdsPublic.Fieldbyname('BillCode').asString;
BillBodyData.Fieldbyname('PAYBILLDATE').asDateTime:=
dmData.sdsPublic.Fieldbyname('BILLDATE').asDateTime;
//总金额
BillBodyData.Fieldbyname('PAYTOTALSUM').asFloat:=
dmData.sdsPublic.Fieldbyname('TOTALSUM').asFloat;
//已收金额
BillBodyData.Fieldbyname('ALREADYPAYSUM').asFloat:=
dmData.sdsPublic.Fieldbyname('ACCEPTSUM').asFloat;
//应收金额
BillBodyData.Fieldbyname('OUGHTPAYSUM').asFloat:=
dmData.sdsPublic.Fieldbyname('TOTALSUM').asFloat-
dmData.sdsPublic.Fieldbyname('ACCEPTSUM').asFloat-
dmData.sdsPublic.Fieldbyname('AGIOSUM').asFloat;
BillBodyData.Fieldbyname('ISPAYSUM').asString:='False';
ISPAYSUMCheck.Checked:=False;
Sum:=Sum+BillBodyData.Fieldbyname('OUGHTPAYSUM').asFloat;
dmData.sdsPublic.Next;
end;
BillHandData.Edit;
BillHandData.Fieldbyname('PAYTOTALSUM').asFloat:=Sum;
GetSum;
end;
end;
end;
procedure TfrmPayment.FilialeinfoNameKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=13 then CurrentsumEdit.SetFocus;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -