📄 upayment.pas
字号:
//收款金额
dmData.sdsPublic.Edit;
dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat:=
dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat+
BillBodyData.Fieldbyname('CURRENTSUM').asFloat;
//如果有折扣金额
if (BillBodyData.RecordCount=BillBodyData.RecNo)
and (AgioSum>0) then
dmData.sdsPublic.FieldByName('AGIOSUM').asFloat:=
dmData.sdsPublic.FieldByName('AGIOSUM').asFloat+AgioSum;
if (dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat+
dmData.sdsPublic.FieldByName('AGIOSUM').asFloat)>=
dmData.sdsPublic.FieldByName('TOTALSUM').asFloat then
begin
dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat:=
dmData.sdsPublic.FieldByName('TOTALSUM').asFloat-
dmData.sdsPublic.FieldByName('AGIOSUM').asFloat;
dmData.sdsPublic.FieldByName('ISACCEPT').asString:='1';
end;
dmData.sdsPublic.ApplyUpdates(-1);
end;
BillBodyData.Next;
end;
s:='Update Filialeinfo Set OUTPUTSUM=OUTPUTSUM-'+
FloatToStr(BillHandData.Fieldbyname('TOTALSUM').asFloat+DBCurrencyEdit.Value)+
' where FilialeCode='+#39+BillHandData.Fieldbyname('OTHERUNITCODE').asString+#39;
end
else
if BillHandData.FieldByName('BillModelCode').asString='1' then
begin
while not BillBodyData.Eof do
begin
s:='select BILLCODE, TOTALSUM, ACCEPTSUM, AGIOSUM, '+
' ISACCEPT From REIMBURSEBILLHAND where BILLCODE='+
#39+Trim(BillBodyData.FieldByName('PAYBILLCODE').asstring)+#39;
OpenData(s, dmData.sdsPublic);
if not dmData.sdsPublic.IsEmpty then
begin
//付款金额
dmData.sdsPublic.Edit;
dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat:=
dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat+
BillBodyData.Fieldbyname('CURRENTSUM').asFloat;
//如果有折扣金额
if (BillBodyData.RecordCount=BillBodyData.RecNo)
and (AgioSum>0) then
dmData.sdsPublic.FieldByName('AGIOSUM').asFloat:=
dmData.sdsPublic.FieldByName('AGIOSUM').asFloat+AgioSum;
if (dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat+
dmData.sdsPublic.FieldByName('AGIOSUM').asFloat)>=
dmData.sdsPublic.FieldByName('TOTALSUM').asFloat then
begin
dmData.sdsPublic.FieldByName('ACCEPTSUM').asFloat:=
dmData.sdsPublic.FieldByName('TOTALSUM').asFloat-
dmData.sdsPublic.FieldByName('AGIOSUM').asFloat;
dmData.sdsPublic.FieldByName('ISACCEPT').asString:='1';
end;
dmData.sdsPublic.ApplyUpdates(-1);
end;
BillBodyData.Next;
end;
s:='Update ClientInfo Set REIMBURSESUM=REIMBURSESUM-'+
FloatToStr(BillHandData.Fieldbyname('TOTALSUM').asFloat+DBCurrencyEdit.Value);
//如果有使用预付款,则减预收金额
if Application.MessageBox('是否把本次所付的退货款转成预收款?',Hintinfo,$24)=idYes then
begin
s:=s+',PREPAYSUM=PREPAYSUM+'+FloatToStr(BillHandData.FieldByName('TOTALSUM').asFloat);
BillHandData.Edit;
BillHandData.Fieldbyname('Memo').asstring:='本次所付的退货款转成预收款。'+
BillHandData.Fieldbyname('Memo').asstring;
BillHandData.Fieldbyname('PAYMENTWHITHER').asstring:='1';
end;
//未收金额
s:=s+', PAYMENTSUM=ARREARAGESUM-PREPAYSUM-REIMBURSESUM '+
'where Code='+#39+BillHandData.Fieldbyname('OTHERUNITCODE').asString+#39;
end
else
if BillHandData.FieldByName('BillModelCode').asString='2' then
begin
s:='Update ProviderInfo Set PREPAYSUM=PREPAYSUM+'+
FloatToStr(BillHandData.Fieldbyname('TOTALSUM').asFloat)+
', PAYMENTSUM=ARREARAGESUM-PREPAYSUM-REIMBURSESUM '+
'where Code='+#39+BillHandData.Fieldbyname('OTHERUNITCODE').asString+#39;
end;
with dmData.SQLQuery do
begin
Close;
SQL.Text:=S;
ExecSQL;
end;
BillHandData.ApplyUpdates(-1);
Auditing.Visible:=True;
BillHandData.ReadOnly:=True;
Application.MessageBox('审核提交数据成功。',Hintinfo,$30);
BillBodyData.First;
except
Application.MessageBox('审核单据不成功。',Errorinfo,$10);
end;
end;
procedure TfrmPayment.FormShow(Sender: TObject);
begin
SetView;
isStateEdit:=False;
OpenData('Select * from PayMentHand where BillType='''+'2'''+' Order by BillCode DESC',BillHandData);
end;
procedure TfrmPayment.FormActivate(Sender: TObject);
begin
GetWindowsItem(Caption, Self);
end;
procedure TfrmPayment.FormDestroy(Sender: TObject);
begin
WindowItem.Delete(WindowItem.IndexOfObject(Self));
BillHandData.Close;
BillBodyData.Close;
end;
procedure TfrmPayment.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
frmPayment:=Nil;
end;
procedure TfrmPayment.BillHandDataAfterScroll(DataSet: TDataSet);
begin
OpenData('select * from PayMentBody where BillCode='+#39+
BillHandData.Fieldbyname('BillCode').asstring+#39,
BillBodyData);
PayTypeView;
if BillHandData.FieldByName('isAuditing').AsString='1' then
Auditing.Visible:=True
else
Auditing.Visible:=False;
end;
procedure TfrmPayment.LBEditButton1Click(Sender: TObject);
begin
if not isStateEdit then Exit;
OpposingCode:=BillHandData.FieldByName('OtherUnitCode').asstring;
case AcceptBillModel of
0,2:
SelectProvider;
1:
SelectClient;
end;
if OpposingCode<>'' then
begin
BillHandData.Edit;
BillHandData.FieldByName('OtherUnitCode').asstring :=OpposingCode;
OtherUnitDBEdit.Text:=OpposingCode;
CURRENTSUMEdit.SetFocus;
end;
end;
procedure TfrmPayment.Action1Execute(Sender: TObject);
begin
SelectBillType:=1;
SelectPaymentType;
if isSelectPayMentModel=False then Exit;
AcceptBillModel:=PayMentType;
SetView;
FilialeinfoName.Visible:=False;
OTHERUNITDBEdit.Visible:=True;
OtherUnitDBEdit.SetFocus;
OtherUnitDBEdit.DataField:='OtherUnitCode';
BillBodyData.ReadOnly:=False;
BillHandData.ReadOnly:=False;
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;
PayTypeView;
isEdit:=False;
isStateEdit:=True;
Sum:=0;
BillInfoLabel.Caption:='';
OldOtherUnitCode:='';
end;
procedure TfrmPayment.Action2Execute(Sender: TObject);
begin
if BillHandData.IsEmpty then
begin
Application.MessageBox('没有可修改的付款单。',Hintinfo,$30);
Exit;
end;
if BillHandData.FieldByName('isAuditing').asstring='1' then
begin
Application.MessageBox('此付款单已审核,不可修改。',Hintinfo,$30);
Exit;
end;
SetView;
OtherUnitDBEdit.SetFocus;
OtherUnitDBEdit.DataField:='OtherUnitCode';
OldOtherUnitCode:=Trim(OtherUnitDBEdit.Text);
try
BillHandData.ReadOnly:=False;
BillBodyData.ReadOnly:=False;
BillHandData.Edit;
BillBodyData.Edit;
except
SetView;
Application.MessageBox('修改数据错误。',Hintinfo,$10);
OtherUnitDBEdit.DataField:='OtherUnitName';
Exit;
end;
Sum:=BillHandData.FieldByName('TOTALSUM').AsFloat;
AcceptBillModel:=BillHandData.FieldByName('BILLMODELCODE').asInteger;
isEdit:=True;
isStateEdit:=True;
end;
procedure TfrmPayment.Action3Execute(Sender: TObject);
var
BillCode: string;
begin
if BillHandData.IsEmpty then
begin
Application.MessageBox('没有可删除的付款单。',Hintinfo,$30);
Exit;
end;
if BillHandData.FieldByName('isAuditing').asstring='1' then
begin
Application.MessageBox('此付款单已审核,不可删除。',Hintinfo,$30);
Exit;
end;
if Application.MessageBox('确定在要删除当前付款单吗?',Hintinfo,$24)=idYes then
begin
BillHandData.ReadOnly:=False;
BillCode:=BillHandData.Fieldbyname('BillCode').asstring;
try
BillHandData.Delete;
BillHandData.ApplyUpdates(-1);
DeleteBillBody('Delete From PayMentBody where BillCode='+#39+BillCode+#39);
OpenData('select * from PayMentHand Order by BillCode DESC',
BillHandData);
except
Application.MessageBox('删除数据不成功。',Errorinfo,$10);
end;
BillHandData.ReadOnly:=True;
end;
end;
procedure TfrmPayment.Action4Execute(Sender: TObject);
begin
PrintView('RepPayment'+BillHandData.Fieldbyname('BILLMODELCODE').asstring+
'.frf', Report);
end;
procedure TfrmPayment.Action5Execute(Sender: TObject);
begin
if BillHandData.IsEmpty then
begin
Application.MessageBox('没有可审核的单据。',Hintinfo,$30);
Exit;
end;
if BillHandData.FieldByName('isAuditing').AsString='1' then
begin
Application.MessageBox('此单据已审核。',Hintinfo,$30);
Exit;
end;
if Application.MessageBox('确定要审核此付款单吗?',Hintinfo,$24)=idYes then
SetAuditing;
end;
procedure TfrmPayment.Action6Execute(Sender: TObject);
var
sql: string;
begin
SelectBillCode:='';
OpposingCode:=BillHandData.Fieldbyname('OTHERUNITCODE').asstring;
frmSelectPayment:=TfrmSelectPayment.Create(Application);
frmSelectPayment.ShowModal;
frmSelectPayment.Free;
if SelectBillCode<>'' then
begin
sql:='Select * from PayMentHand where'+
' BillCode='+#39+SelectBillCode+#39+
'Order by BillCode DESC';
OpenData(sql,BillHandData);
end;
end;
procedure TfrmPayment.Action7Execute(Sender: TObject);
begin
OpenData('select * from PayMentHand where BillType='''+'2'''+' Order by BillCode DESC',BillHandData);
end;
procedure TfrmPayment.Action8Execute(Sender: TObject);
var
i:integer;
AGIOSUM, DelSum: Extended;
begin
i:=0;
DelSum:=0;
DBCtrlGrid.SetFocus;
Sum:=BillHandData.FieldbyName('CANUSESUM').asFloat;
AGIOSUM:=BillHandData.FieldbyName('AGIOSUM').asFloat;
if BillHandData.FieldByName('OTHERUNITCODE').AsString='' then
begin
Application.MessageBox('对方单位不能为空,请输入。',Hintinfo,$30);
OTHERUNITDBEdit.SetFocus;
Exit;
end;
if BillHandData.FieldByName('BillDate').AsString='' then
begin
Application.MessageBox('付款日期不能为空,请输入。',Hintinfo,$30);
BillDateDBEdit.SetFocus;
Exit;
end;
if Sum<=0 then
begin
Application.MessageBox('本次付款金额为零,不可保存。',Hintinfo, $30);
CURRENTSUMEdit.SetFocus;
Exit;
end;
if not isEdit then
begin
BillHandData.Edit;
BillHandData.Fieldbyname('BILLCode').asstring:=ComDepotCode+'-'+'FK'+'-'+
GetBillID('42', BillHandData.Fieldbyname('BILLDATE').asstring);
BillHandData.Fieldbyname('BILLMODELCODE').asInteger:=AcceptBillModel;
end;
if AcceptBillModel<>2 then
begin
if BillHandData.FieldByName('BALANCE').AsFloat>0 then
begin
if (AcceptBillModel=0) then
begin
if Application.MessageBox('余额是否转为预付款?',Hintinfo,$24)=idYes then
begin
BillHandData.FieldByName('BALANCEWHITHER').AsString:='转预付款';
BillHandData.Fieldbyname('ISBALANCETO').asstring:='1';
end
else
BillHandData.FieldByName('BALANCEWHITHER').AsString:='找零'
end
else
BillHandData.FieldByName('BALANCEWHITHER').AsString:='找零';
end
else
BillHandData.FieldByName('BALANCEWHITHER').AsString:='无';
BillBodyData.Edit;
BillBodyData.Post;
with BillBodyData do
begin
First;
while not Eof do
begin
if Fieldbyname('PAYBILLCODE').asstring<>'' then
begin
Edit;
Fieldbyname('ID').asinteger:=i+1;
Fieldbyname('BILLCode').asstring:=BillHandData.Fieldbyname('BILLCode').asstring;
if Sum>0 then
begin
if Fieldbyname('OUGHTPAYSUM').asfloat<=Sum+AGIOSUM then
begin
Fieldbyname('CURRENTSUM').asfloat:=
Fieldbyname('OUGHTPAYSUM').asfloat-AGIOSUM;
Fieldbyname('ISPAYSUM').asString:='True';
Sum:=Sum-Fieldbyname('OUGHTPAYSUM').asfloat;
end
else
begin
Fieldbyname('CURRENTSUM').asfloat:=Sum;
Fieldbyname('ISPAYSUM').asString:='False';
Sum:=0;
end;
i:=i+1;
Next;
end
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -