📄 ar_enter_arap.pas
字号:
unit Ar_Enter_ArAp;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Entry_Body, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
ExtCtrls, ComCtrls, ToolWin, Mask, ExtEdit,QuickRpt, DBCtrls,
ExtPrintReport, linkedit, jpeg;
Type
TFrm_Ar_Enter_ArAp = Class(TFrm_Base_Entry_Body)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edt_ArApno: TEdit;
Medt_Createdate: TMaskEdit;
Label4: TLabel;
Edt_MoRemArk: TEdit;
Lbl_DeptName: TLabel;
Label6: TLabel;
edt_CancelAmount: TEdit;
Lbl_SaleType: TLabel;
edt_TotalAmount: TExtEdit;
Label8: TLabel;
edt_CustomerName: TEdit;
Label5: TLabel;
Label11: TLabel;
edt_CurrencyName: TEdit;
Label12: TLabel;
edt_rate: TEdit;
AdoQry_BodyArApNo: TStringField;
AdoQry_BodyApInvOICENO: TStringField;
AdoQry_BodyTotalAmount: TFloatField;
AdoQry_BodyReMainTotalAmount: TFloatField;
AdoQry_BodyThiSCancelAmount: TFloatField;
AdoQry_BodyApInvoicedate: TDateTimeField;
edt_CustomerCode: TLinkEdit;
edt_CurrencyCode: TLinkEdit;
cmb_Invoiceno: TLinkEdit;
procedure FormCreate(Sender: TObject);
procedure Act_SaveExecute(Sender: TObject);
procedure DateCheck(Sender: TObject);
procedure Act_DeleteLineExecute(Sender: TObject);
procedure Act_ExcelExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edt_CustomerCodeExit(Sender: TObject);
procedure cmb_InvoicenoKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure cmb_InvoicenoExit(Sender: TObject);
procedure cmb_InvoicenoButtonClick(Sender: TObject);
procedure edt_CurrencyCodeExit(Sender: TObject);
private
CurrentFormStatus:String;//当前窗体状态
{ Private declarations }
public
procedure SetStatus(CurrentStatus:String;var AnswerStatus,EnableControls:String); Override;
procedure InitControls; Override;
procedure SaveData; Override;
function getreMainAmount(Invoiceno:string):real;
{ Public declarations }
end;
var
Frm_Ar_Enter_ArAp: TFrm_Ar_Enter_ArAp;
deletedMoLine:string;
implementation
uses Ar_Enter_ArAp_D, Sys_Global;
{$R *.DFM}
function TFrm_Ar_Enter_ArAp.getreMainAmount(Invoiceno:string):real;
begin
Result:=0;
Executesql(AdoQry_tmp,'select * from sa_SaleInvoice where Invoiceno='+quotedstr(Invoiceno),0);
Result:=AdoQry_tmp.fieldbyname('TotaltaxAmount').asfloat-AdoQry_tmp.fieldbyname('CancelAmount').asfloat;
end;
function checksymbol(Source:string;disptext:string):boolean; //检查输入中是否有单引号
var
i:integer;
s:string;
begin
s:=Trim(Source);
for i:=1 to length(s) do
if s[i]='''' then
begin
DispInfo(disptext+'中不能使用单引号!',1);
Result:=False;
exit;
end;
Result:=True;
end;
procedure TFrm_Ar_Enter_ArAp.InitControls;
var
SqlText:string;
begin
If Status<>'Add' then
begin
CurrentFormStatus:='PArtEdit';
SetFocus_Control:=edt_MoremArk;
tlbtn_Modify.Action:=act_Modify;
end
Else
begin
CurrentFormStatus:='Add';
SetFocus_Control:=Edt_ArApno;
end;
If Status='Query' Then
begin
// Caption:='生产订单明细';
// Pnl_Title.Caption:='生产订单明细';
end;
inherited;
if Status='PArtEdit' then
Act_Modify.Enabled:=False;
Application.ProcessMessages;
With AdoQry_Head do
begin
Edt_CustomerCode.Text:=fieldbyname('customerCode').asstring;
Edt_CustomerName.Text:=fieldbyname('customerName').AsString;
Edt_CurrencyCode.Text:=fieldbyname('currencyCode').AsString;
Edt_CurrencyName.Text:=fieldbyname('currencyName').AsString;
Cmb_InvoiceNO.Text := IIFString(Status='Add','',fieldbyname('InvoiceNo').AsString);
Edt_Rate.Text := fieldbyname('ExchangeRate').AsString;
Edt_CancelAmount.Text := IIFString(Status='Add','0',FloatToStr(fieldbyname('CancelTotalAmount').AsFloat));
Edt_TotalAmount.Text := IIFString(Status='Add','0',FloatToStr(fieldbyname('TotalTaxAmount').AsFloat));
if Status<>'Add' then
begin
Edt_ArApNo.Text:=fieldbyname('ArApNo').AsString;
MEdt_Createdate.Text:=Formatdatetime('yyyy.mm.dd',fieldbyname('createdate').asdatetime);
Edt_MoReMArk.Text:=fieldbyname('RemArk').AsString;
end
Else
begin
Edt_ArApNo.Text:='';
MEdt_Createdate.Text:=Formatdatetime('yyyy.mm.dd',Date);
Edt_MoReMArk.Text:=fieldbyname('RemArk').AsString;
end;
end;
AdoQry_Body.Close;
if UpperCase(Status)=UpperCase('Add') then
SqlText:='select top 0 sa_ArApline.*, '
+' ApInvoice.ApInvoicedate '
+' from sa_ArApline '
+' join ApInvoice on sa_ArApline.ApInvoiceno=ApInvoice.ApInvoiceno '
else
SqlText:='select sa_ArApline.*, '
+' ApInvoice.ApInvoicedate '
+' from sa_ArApline '
+' join ApInvoice on sa_ArApline.ApInvoiceno=ApInvoice.ApInvoiceno '
+' where sa_ArApline.ArApno='+quotedstr(Trim(edt_ArApno.text));
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:=SqlText;
AdoQry_Body.Open;
// Edt_DeptName.Enabled:=False;
//Edt_SysParamValuec.Enabled:=False;
end;
procedure TFrm_Ar_Enter_ArAp.SetStatus(CurrentStatus: String;
var AnswerStatus, EnableControls: String); //用来叛断哪些控件可用
begin
inherited;
if Currentstatus='Add' then
begin
AnswerStatus:='Add';
EnableControls:='Edt_ArApno,Medt_Createdate,Edt_MoRemArk,';
end
Else If Pos('Edit',CurrentStatus)>0 Then
begin
AnswerStatus:='PArtEdit';
EnableControls:='Edt_MoRemArk,'
end;
end;
procedure TFrm_Ar_Enter_ArAp.FormCreate(Sender: TObject);
begin
inherited;
ExtendCaption:=False;
//Frm_Entry_Detail:=TFrm_Mrp_Enter_Mo_D.Create(Self);
Frm_Ar_Enter_ArAp_D:=TFrm_Ar_Enter_ArAp_D.Create(Self);
Frm_Ar_Enter_ArAp_D.permitBackflush:=1;
Frm_Entry_Detail:=Frm_Ar_Enter_ArAp_D;
deletedMoLine:=quotedstr('yyyyyyyy');
end;
procedure TFrm_Ar_Enter_ArAp.SaveData;
var
SqlText,MoNo:String;
TotalCancelAmount:real;
begin
inherited;
if Trim(edt_ArApno.text)='' then
begin
DispInfo('对冲序号不能为空!',3);
edt_ArApno.setfocus;
abort;
end;
If AdoQry_Body.RecordCount=0 Then
begin
DispInfo('没有行数据,不能保存!',1);
Abort;
end;
TotalCancelAmount:=0;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
TotalCancelAmount:=TotalCancelAmount+AdoQry_Body.fieldbyname('thiSCancelAmount').asfloat;
AdoQry_Body.Next;
end; //校验数据
if TotalCancelAmount>getreMainAmount(cmb_Invoiceno.text) then
begin
DispInfo('对冲金额必须小于等于该销售发票的余额!',3);
abort;
end;
DbConnect.beginTrans;
Try
AdoQry_Tmp.Close;
If CurrentFormStatus='Add' Then
begin
Application.ProcessMessages;
SqlText:='Insert sa_ArAp '
+' (ArApno,Invoiceno,CancelTotalAmount,ReMArk,createdate,createEmployeeCode,editdate,edItEmployeeCode)'
+' Values('
+quotedstr(Trim(edt_ArApno.text))+','
+quotedstr(cmb_Invoiceno.text)+','
+floattostr(TotalCancelAmount)+','
+quotedstr(Trim(edt_MoremArk.text))+','
+quotedstr(GetServerDateTime(dbconnect))+','
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -