⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ar_enter_eachinvoice.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Ar_Enter_EachInvoice;
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_EachInvoice = 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_BodyTotalAmount: TFloatField;
    AdoQry_BodyReMainTotalAmount: TFloatField;
    AdoQry_BodyThiSCancelAmount: TFloatField;
    AdoQry_BodyEachInvoiceNo: TStringField;
    AdoQry_BodyInvoiceNo: TStringField;
    AdoQry_BodyInvoiceType: TIntegerField;
    edt_CustomerCode: TLinkEdit;
    edt_CurrencyCode: TLinkEdit;
    cmb_Invoiceno: TLinkEdit;
    AdoQry_BodyBilldate: TDateTimeField;
    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 Act_InsertLineExecute(Sender: TObject);
    procedure cmb_InvoicenoButtonClick(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_EachInvoice: TFrm_Ar_Enter_EachInvoice;
  deletedMoLine:string;

implementation

uses  Ar_Enter_EachInvoice_D, Sys_Global;

{$R *.DFM}
function  TFrm_Ar_Enter_EachInvoice.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_EachInvoice.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;
  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;
    edt_TotalAmount.Text:=FloatToStr(fieldbyname('TotaltaxAmount').AsFloat);
    edt_CancelAmount.Text:=FloatToStr(fieldbyname('CancelTotalAmount').AsFloat);
    edt_rate.Text:=fieldbyname('ExchangeRate').asstring;
    cmb_Invoiceno.Text:=fieldbyname('Invoiceno').asstring;
    if Status<>'Add' then
    begin
      Edt_ArApNo.Text:=fieldbyname('EachInvoiceno').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_EachInvoiceline.*, '
                     +'  sa_SaleInvoice.BillDate '
              +'  from sa_EachInvoiceline     '
              +'  join  sa_SaleInvoice on sa_EachInvoiceline.Invoiceno=sa_SaleInvoice.Invoiceno '
  else
    SqlText:='select  sa_EachInvoiceline.*, '
                     +'  sa_SaleInvoice.BillDate '
              +'  from sa_EachInvoiceline     '
              +'  join  sa_SaleInvoice on sa_EachInvoiceline.Invoiceno=sa_SaleInvoice.Invoiceno '
              +' where sa_EachInvoiceline.EachInvoiceno='+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_EachInvoice.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_EachInvoice.FormCreate(Sender: TObject);
begin
  inherited;
  ExtendCaption:=False;
  //Frm_Entry_Detail:=TFrm_Mrp_Enter_Mo_D.Create(Self);
  Frm_Ar_Enter_EachInvoice_D:=TFrm_Ar_Enter_EachInvoice_D.Create(Self);
  Frm_Ar_Enter_EachInvoice_D.permitBackflush:=1;
  Frm_Entry_Detail:=Frm_Ar_Enter_EachInvoice_D;
  deletedMoLine:=quotedstr('yyyyyyyy');
  
end;
                  

procedure TFrm_Ar_Enter_EachInvoice.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;
      Executesql(AdoQry_tmp,'select * from sa_EachInvoice where EachInvoiceno='+quotedstr(Trim(edt_ArApno.text)),0)   ;
      if AdoQry_tmp.RecordCount>0 then 
        begin
          DispInfo('已存在对冲序号为'+quotedstr(Trim(edt_ArApno.text))+'的对冲记录!',3);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -