📄 ap_enter_purchasepaymenth.pas
字号:
unit Ap_Enter_PurchasePaymenth;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Entry_Head, Menus, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
ExtCtrls, ComCtrls, ToolWin, jpeg, ExtPrintReport;
Type
TFrm_Ap_Enter_PurchasePaymenth = Class(TFrm_Base_Entry_Head)
AdoQry_HeadPayJournalID: TFloatField;
AdoQry_HeadVendorCode: TStringField;
AdoQry_HeadCURRENCYCode: TStringField;
AdoQry_HeadEmployeeCode: TStringField;
AdoQry_HeadPayModeCode: TStringField;
AdoQry_HeadPayDATE: TDateTimeField;
AdoQry_HeadPayAmount: TFloatField;
AdoQry_HeadPayBillNO: TStringField;
AdoQry_HeadPayRemArk: TStringField;
AdoQry_HeadPayInputdate: TDateTimeField;
AdoQry_HeadRemArkNo: TStringField;
AdoQry_HeadExchRate: TFloatField;
AdoQry_HeadPayAmountC: TFloatField;
AdoQry_HeadCreateDate: TDateTimeField;
AdoQry_HeadCreateEmployeeCode: TStringField;
AdoQry_HeadEditDate: TDateTimeField;
AdoQry_HeadEdItEmployeeCode: TStringField;
AdoQry_HeadISCredence: TIntegerField;
AdoQry_HeadVendorName: TStringField;
AdoQry_HeadPayModeName: TStringField;
AdoQry_HeadcurrencyName: TStringField;
AdoQry_HeadEmployeeName: TStringField;
procedure Act_DeleteExecute(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Act_ModifyExecute(Sender: TObject);
private
{ Private declarations }
function ApCheckout(Month: String): Boolean; //结算日期检查
procedure Delete_Backup(Action_flag:string); //插入删除日志文件
public
{ Public declarations }
procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
function SetDeleteSql:String;Override;
end;
var
Frm_Ap_Enter_PurchasePaymenth: TFrm_Ap_Enter_PurchasePaymenth;
implementation
uses Ap_Enter_PurchasePayment, Sys_Global;
{$R *.DFM}
{ TFrm_Ap_Enter_PurchasePaymenth }
procedure TFrm_Ap_Enter_PurchasePaymenth.InitForm(
AdOConnection: TAdOConnection; ReadOnly: Boolean);
begin
inherited;
//Act_Modify.Enabled :=False;
//Act_Modify.Visible :=False;
SelectFromSQL:='select PayJournal.*,'+
//' PayJournal.VendorCode,'+
' Vendor.VendorName,'+
//' PayJournal.PayModeCode,'+
' PayMode.PayModeName ,'+
//' PayJournal.ExchRate,'+
' currency.currencyName,'+
' Employee.EmployeeName'+
//' PayJournal.PayModeCode'+
' from PayJournal left join Vendor '+
' on PayJournal.VendorCode=Vendor.VendorCode '+
' left join PayMode '+
' on PayJournal.PayModeCode=PayMode.PayModeCode '+
' left join currency '+
' on PayJournal.currencyCode=currency.currencyCode join '+
' Employee on Employee.EmployeeCode=PayJournal.EmployeeCode';
OrderByFields:='VendorCode,PayDate';
GetData;
Frm_Entry_Body:=TFrm_Ap_Enter_PurchasePayment.Create(Self);
end;
function TFrm_Ap_Enter_PurchasePaymenth.SetDeleteSql: String;
begin
Result:=' delete PayJournal where PayBillno='''+AdoQry_Head.fieldbyname('PayBillno').asstring+'''' ;
end;
procedure TFrm_Ap_Enter_PurchasePaymenth.Act_DeleteExecute(
Sender: TObject);
var
tmpAdoQry:TAdoQuery;
Billid:string;
begin
//inherited;
if (not AdoQry_Head.IsEmpty)and (DispInfo(' 真的删除当前记录吗? ',2)='y')then
begin
if not ApCheckout(copy (AdoQry_Head.fieldbyname('PayInputdate').asString,1,7)) then
begin
DispInfo('不允许删除已结帐月份记录!',1);
abort;
end;
Executesql(AdoQry_tmp,'select PayJournalId from PayJournal where PayBillno='''+AdoQry_Head.fieldbyname('PayBillno').asstring+'''',0);
Billid:=AdoQry_tmp.fieldbyname('PayJournalId').asstring;
if Billid='' then
begin
//dispinof('',3);
abort;
end;
dbconnect.beginTrans ;
try
{ Executesql(AdoQry_tmp,' update ApInvoice'
+' set ApInvoice.ApPayFlag=2, '
+'ApInvoice.ApPayedAmount=ApInvoice.ApPayedAmount-PayJournalline.PayedAmount'
+' from '
+'(select PayJournalline.ApInvoiceid'
+',PayJournalline.PayedAmount'
+' from PayJournal left join PayJournalline'
+' on PayJournal.PayJournalid=PayJournalline.PayJournalid'
+' where PayJournal.PayBillNo='''+doQry_Head.fieldbyname('PayBillNo').asstring+''''+')'
+' PayJournalline'
+' where PayJournalline.ApInvoiceId=ApInvoice.ApInvoiceId',1);}
tmpAdoQry:=TAdoQuery.Create(nil);
try
tmpAdoQry.EnableBCD :=False;
tmpAdoQry.Connection :=AdoQry_tmp.Connection ;
{ //如果有预付款,先删除预付款的发票;
Executesql(AdoQry_tmp,'delete from ApInvoice where ApInvoiceno='+quotedstr(AdoQry_Head.fieldbyname('PayBillNO').asstring+'/Y'),1);}
with tmpAdoQry do
begin
Close;
sql.clear;
sql.text:=' select PayJournalline.ApInvoiceid '
+' ,PayJournalline.PayedAmount'
+' from PayJournalline left join PayJournal '
+' on PayJournal.PayJournalid=PayJournalline.PayJournalid'
+' where PayJournal.PayBillNo='''+AdoQry_Head.fieldbyname('PayBillNo').asstring+'''' ;
open;
tmpAdoQry.First;
while not tmpAdoQry.eof do
begin
AdoQry_tmp.Close;
AdoQry_tmp.SQL.clear ;
AdoQry_tmp.SQL.text:=' update ApInvoice set ApPayFlag= case '+
' when ApPayedAmount-('+tmpAdoQry.fieldbyname('PayedAmount').asstring+')'+'<=0 then 2'+
' else 1 end ,'
+' ApPayedAmount=ApPayedAmount-('+tmpAdoQry.fieldbyname('PayedAmount').asstring+')'
+' ,ApPayedAmountc=ApPayedAmountc-('+floattostr(tmpAdoQry.fieldbyname('PayedAmount').asfloat*
AdoQry_Head.fieldbyname('ExchRate').asfloat)+')'
+' where ApInvoiceId='+tmpAdoQry.fieldbyname('ApInvoiceId').asstring;
AdoQry_tmp.execSQL;
tmpAdoQry.next;
end;
end;
finally
tmpAdoQry.Free;
end;
AdoQry_tmp.Close;
AdoQry_tmp.SQL.clear ;
AdoQry_tmp.SQL.Text:=' delete from PayJournalline where PayJournalid='+Billid
+' delete from PayJournal where PayJournalid='+Billid;
AdoQry_tmp.ExecSQL;
AdoQry_Head.Delete;
Delete_Backup('D'); //插入删除日志文件
dbconnect.CommitTrans ;
except
dbconnect.RollBackTrans ;
DispInfo(' 无法删除当前记录,可能已经被其他数据表引用!',1);
Abort;
end;
end;
end;
procedure TFrm_Ap_Enter_PurchasePaymenth.FormDestroy(Sender: TObject);
begin
inherited;
Frm_Ap_Enter_PurchasePaymenth:=nil;
end;
procedure TFrm_Ap_Enter_PurchasePaymenth.Act_ModifyExecute(
Sender: TObject);
var
PayAmountH,PayAmountB:double;
PayBillid:string;
begin
PayAmountH:=0.00;
PayAmountB:=0.00;
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=' select PayJournalID from PayJournal '+
' where PayJournal.PayBillNO='''+AdoQry_Head.fieldbyname('PayBillNO').asstring+'''';
open;
PayBillid:=fieldbyname('PayJournalID').asstring;
end;
with AdoQry_tmp do
begin
Close;
sql.clear;
sql.text:=' select sum(isnull(PayJournalLine.PayedAmount,0)) as PayAmountb'+
' from PayJournalLine '+
' where PayJournalLine.PayJournalID='+PayBillid;
open;
PayAmountB:=fieldbyname('PayAmountb').asfloat;
Close;
sql.clear;
sql.text:=' select PayAmount from PayJournal where PayJournalID='+PayBillid;
open;
PayAmounth:=fieldbyname('PayAmount').asfloat;
end;
if PayAmountH-PayAmountB<=0 then
begin
DispInfo('付款余额小于等于零不能修改!',3);
abort;
end;
inherited;
end;
function TFrm_Ap_Enter_PurchasePaymenth.ApCheckout(Month: String): Boolean;
var
str,str1:string;
begin
Result:=True;
With AdoQry_Tmp do
begin
Close;
sql.clear;
sql.Add('select ApParamValuec '+
' from ApParam '+
' where ApParamCode=''clsperiod''');
open;
str:=fieldbyname('ApParamValuec').asstring;
if str<>'' then
begin
if strtodate(Month+'.01') >strtodate(str+'.01') then
Result:=True
else
Result:=False;
end;
end;
end;
procedure TFrm_Ap_Enter_PurchasePaymenth.Delete_Backup(
Action_flag: string);
var
Sql_Txt:string;
begin
with AdoQry_Head do
Sql_Txt:='insert into PayJournalLog(LogDate,'+
'LogOperatorCode,'+
'LogAction,'+
'PayJournalId,'+
'VendorCode,'+
'CurrencyCode,'+
'EmployeeCode,'+
'PayModeCode,'+
'PayDate,'+
'PayAmount,'+
'PayBillNo,'+
'PayRemArk) '+
'Values(getdate(),'+
' '''+fieldbyname('EmployeeCode').asstring+''','+
format('''%s''',[action_flag])+','+
' '''+fieldbyname('PayJournalId').asstring+''','+
' '''+fieldbyname('VendorCode').asstring+''','+
' '''+fieldbyname('CurrencyCode').asstring+''','+
' '''+fieldbyname('EmployeeCode').asstring+''','+
' '''+fieldbyname('PayModeCode').asstring+''','+
' '''+fieldbyname('PayDate').asstring+''','+
' '''+fieldbyname('PayAmount').asstring+''','+
' '''+fieldbyname('PayBillNo').asstring+''','+
' '''+fieldbyname('PayRemArk').asstring+''')';
with AdoQry_tmp do
begin
Close;
sql.clear ;
sql.text:=sql_Txt;
execsql;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -