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

📄 sal_enter_salecontract.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit Sal_Enter_SaleContract;
Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Body, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
  ExtCtrls, ComCtrls, ToolWin, ExtEdit, DBCtrls, Mask, ExtPrintReport,
  linkedit, jpeg;

Type
  TFrm_Sal_Enter_SaleContract = Class(TFrm_Base_Entry_Body)
    Label5: TLabel;
    Edt_RemArk: TEdit;
    Label7: TLabel;
    DBTxt_ItemName: TDBText;
    ActionList1: TActionList;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label6: TLabel;
    Edt_CustomerName: TEdit;
    Edt_PayTermName: TEdit;
    Edt_SlcLineAddressName: TEdit;
    Edt_TaxRate_Percent: TEdit;
    Edt_SlcAddress: TEdit;
    MEdt_SlcDate: TMaskEdit;
    Edt_DeptName: TEdit;
    Edt_SaleEmployeeName: TEdit;
    Edt_CurrencyName: TEdit;
    AdoQry_BodySlcNo: TStringField;
    AdoQry_BodySlcLineNo: TIntegerField;
    AdoQry_BodyItemCode: TStringField;
    AdoQry_BodyStArtDate: TDateTimeField;
    AdoQry_BodyendDate: TDateTimeField;
    AdoQry_BodyStArtQty: TFloatField;
    AdoQry_BodyendQty: TFloatField;
    AdoQry_BodyNoTaxPrice: TFloatField;
    AdoQry_BodyTaxPrice: TFloatField;
    AdoQry_BodyReferencedPrice: TIntegerField;
    AdoQry_BodyLinestatus: TIntegerField;
    AdoQry_BodySlcLineRemArk: TStringField;
    AdoQry_BodyLastOperationTime: TDateTimeField;
    AdoQry_BodyCheckFlag: TIntegerField;
    AdoQry_BodyItemName: TStringField;
    AdoQry_BodyUomName: TStringField;
    Edt_SaleTypeName: TEdit;
    Edt_CustomerCode: TLinkEdit;
    Edt_CurrencyCode: TLinkEdit;
    Edt_SlcLineAddresSCode: TLinkEdit;
    Edt_PayTermCode: TLinkEdit;
    Edt_SaleTypeCode: TLinkEdit;
    Edt_DeptCode: TLinkEdit;
    Edt_SaleEmployeeCode: TLinkEdit;
    chb_Overdue: TCheckBox;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Act_DeleteLineExecute(Sender: TObject);
    procedure IntegerCheck(Sender: TObject);
    procedure Act_PreviewExecute(Sender: TObject);
    procedure Edt_SaleTypeCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edt_SaleTypeCodeExit(Sender: TObject);
    procedure Edt_PayTermCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);  
    procedure Edt_PayTermCodeExit(Sender: TObject);
    procedure Edt_SlcLineAddresSCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edt_CustomerCodeExit(Sender: TObject);
    procedure Edt_DeptCodeExit(Sender: TObject);
    procedure Edt_SlcLineAddresSCodeExit(Sender: TObject);
    procedure Edt_SaleEmployeeCodeExit(Sender: TObject);
    procedure Edt_CurrencyCodeExit(Sender: TObject);
    procedure Act_InsertLineExecute(Sender: TObject);
    procedure Act_ModifyExecute(Sender: TObject);
    procedure Edt_CustomerCodeEnter(Sender: TObject);
    procedure Edt_SlcLineAddresSCodeButtonClick(Sender: TObject);
    procedure LinkEdit1ButtonClick(Sender: TObject);
    procedure Edt_PayTermCodeButtonClick(Sender: TObject);
    procedure Edt_SaleTypeCodeButtonClick(Sender: TObject);
    procedure chb_OverdueClick(Sender: TObject);
    procedure Act_SaveExecute(Sender: TObject);
  private
    Enter_CustomerCode:String;
    procedure GetCustomerItem(CustomerCode:String);
    { Private declarations }
  public
    { Public declarations }
    StrinGlist:TstrinGlist;
    procedure SetStatus(CurrentStatus:String;var AnswerStatus,
      EnableControls:String); Override;//设置各种状态下那些控件Enable
    procedure InitControls; Override;//初始化Form上所有控件
    procedure SaveData; Override;//把表头控件写入缓存,不要Post
  end;

var
  Frm_Sal_Enter_SaleContract: TFrm_Sal_Enter_SaleContract;
  TaxRate_Percent:String;

implementation

uses Sal_Enter_SaleContract_D,Sys_Global;

{$R *.DFM}

{ TFrm_Pm_Pc_Entry_D }

procedure TFrm_Sal_Enter_SaleContract.InitControls;
var
  SlcNo,SqlText:string;
begin
  if Status='Add' then
    SetFocus_Control:=Edt_CustomerCode
  else
    SetFocus_Control:=Edt_RemArk;
//  ExtendCaption:=False;
  inherited;
  Edt_CustomerName.Enabled := False;
  Edt_DeptName.Enabled :=False;
  Edt_SlcLineAddressName.Enabled :=False;
  Edt_SaleEmployeeName.Enabled :=False;
  Edt_PayTermName.Enabled :=False;
  Edt_CurrencyName.Enabled :=False;
  Edt_SaleTypeName.Enabled :=False;

  if Status<>'Add' then
     SlcNo:=AdoQry_Head.fieldbyname('SlcNo').AsString
  else
     SlcNo:='';
  With AdoQry_Head do
  begin
    if Status<>'Add' then
    begin
      Act_InsertLine.Enabled := True;
      if Status='ReadOnly'  then 
      Act_InsertLine.Enabled := False;
      MEdt_SlcDate.Text := fieldbyname('SlcDate').asstring;
      Edt_TaxRate_Percent.Text := fieldbyname('TaxRate_Percent').asstring;
      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_RemArk.Text := fieldbyname('RemArk').asstring;
    end
    else
    begin
      Act_InsertLine.Enabled := True;
      MEdt_SlcDate.Text := Formatdatetime('yyyy.mm.dd',Date());
      Edt_SaleTypeCode.Text := '';
      Edt_TaxRate_Percent.Text := '';
      Edt_CustomerCode.Text := '';
      Edt_CustomerName.Text := '';
      Edt_SlcLineAddresSCode.Text := '';
      Edt_SlcLineAddressName.Text := '';
      Edt_SaleEmployeeCode.Text := '';
      Edt_SaleEmployeeName.Text := '';
      Edt_PayTermCode.Text := '';
      Edt_PayTermName.Text := '';

      Edt_CurrencyCode.Text := '';
      Edt_CurrencyName.Text := '';
      Edt_SlcAddress.Text := '';
      Edt_RemArk.Text := '';
      Edt_SaleTypeName.Text :='';
    end;
  end;

  AdoQry_Body.Close;
  if UpperCase(Status)=upperCase('Add') then
  begin
    SqlText:=' Select Top 0 Sa_SaleContractLine.* ,Item.ItemName,Uom.UomName '
            +'    From Sa_SaleContractLine '
            +'    Join Item '
            +'      On Item.ItemCode=Sa_SaleContractLine.ItemCode '
            +'    Join Uom '
            +'      On Item.UomCode=Uom.UomCode';
  end
  else
  begin
    SqlText:=' Select Sa_SaleContractLine.* ,Item.ItemName,Uom.UomName '
            +'    From Sa_SaleContractLine '
            +'    Join Item '
            +'      On Item.ItemCode=Sa_SaleContractLine.ItemCode '
            +'    Join Uom '
            +'      On Item.UomCode=Uom.UomCode '
            +' Where SlcNo='''+SlcNo+''' ';
  end;
  AdoQry_Body.Close;
  AdoQry_Body.SQL.Text:=SqlText;
  AdoQry_Body.Open;
  if status<>'Add' then 
  begin
    chb_Overdue.Enabled:=True;
  end;
end;

procedure TFrm_Sal_Enter_SaleContract.SetStatus(CurrentStatus: String;
  var AnswerStatus, EnableControls: String);
begin
  inherited;
  IF Status='Add' then
    EnableControls:=' MEdt_SlcDate,Edt_SaleTypeCode,'
                   +' Edt_TaxRate_Percent, Edt_CustomerCode, Edt_DeptCode,'
                   +' Edt_SlcLineAddresSCode, Edt_SaleEmployeeCode, Edt_PayTermCode,'
                   +' Edt_CurrencyCode, Edt_SlcAddress, Edt_RemArk,';
end;

procedure TFrm_Sal_Enter_SaleContract.FormCreate(Sender: TObject);
begin
  inherited;
  Frm_Sal_Enter_SaleContract_D:=TFrm_Sal_Enter_SaleContract_D.Create(Self);//设置弹出Detail
  Frm_Entry_Detail:=Frm_Sal_Enter_SaleContract_D;//设置弹出Detail
  StrinGlist:=TStrinGlist.Create;
end;

procedure TFrm_Sal_Enter_SaleContract.SaveData;
var
  SqlText:String;
  i:integer;
  SlcNo : String;
begin
  inherited;
  If Status='Add' then 
  begin
    SqlText := 'select * from Sa_SaleContract '
              +' where CustomerCode='+QuotedStr(Edt_CustomerCode.Text);
    ExecuteSQl(AdoQry_Tmp,SqlText,0);
    if AdoQry_Tmp.RecordCount>0 then 
    begin
      DispInfo('已存在该客户的销售价格表!',3);
      Edt_CustomerCode.SetFocus;
      abort;
    end;
  end;
  if (Status='Add')  then
     SlcNo := GetAllTypeOrderNo(DbConnect,1)
  else SlcNo := AdoQry_Head.fieldbyname('SlcNo').AsString;

  if (Status='Add') then
    begin
      if Trim(edt_CustomerCode.text)  ='' then 
        begin
          DispInfo('销售客户不能为空!',3);
          edt_CustomerCode.SetFocus;
          abort;
        end;
      if Trim(edt_taxrate_Percent.Text)='' then
        begin
          DispInfo('销售税率不能为空!',3);
          edt_taxrate_Percent.SetFocus;
          abort;
        end;
      if Trim(edt_CurrencyCode.text)='' then
        begin
          DispInfo('货币不能为空!',3);
          edt_CurrencyCode.SetFocus;
          abort;
        end;
    end;
  IF (AdoQry_Body.RecordCount=0) And (status='Add')  Then
  begin
    DispInfo('没有订单行数据,不能保存!',1);
    Abort;
  end;

  DbConnect.beginTrans;
  Try
    AdoQry_Tmp.Close;
    If (Status='Add') Then
    begin
      Application.ProcessMessages;

      SqlText:='Insert Sa_SaleContract '
              +' (SlcNo,CustomerCode,'
              +'  CurrencyCode, '
              +'  SlcDate,RemArk,CreateDate,'
              +'  CreateEmployeeCode,EditDate, '
              +'  EdItEmployeeCode,TaxRate_Percent)'
              +'  Values('
              +''''+SlcNo+''','
              +''''+Trim(Edt_CustomerCode.Text)+''','
              +''''+Trim(Edt_CurrencyCode.Text)+''','
              +''''+Trim(MEdt_SlcDate.Text)+''','
              +''''+Trim(Edt_RemArk.Text)+''','
              +''''+Formatdatetime('yyyy.mm.dd',Date())+''','
              +''''+UserCode+''','
              +''''+Formatdatetime('yyyy.mm.dd',Date())+''','
              +''''+UserCode+''','
              +''''+Trim(Edt_TaxRate_Percent.Text)+''')';
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:=SqlText;
      AdoQry_Tmp.ExecSQL;   // Insert Sa_SaleContract Table
      saveSalContractHistory(dbconnect,SlcNo,userCode,0);
      AdoQry_Body.First;

      While Not AdoQry_Body.Eof Do
      begin
        SqlText:='Insert Sa_SaleContractLine '
                +' (SlcNo,SlcLineNo,ItemCode,StArtDate,endDate,StArtQty,endQty,'
                +' NoTaxPrice,TaxPrice,ReferencedPrice,Linestatus,'
                +' SlcLineRemArk,Lastoperationtime,CheckFlag)'
                +'Values('
                +''''+SlcNo+''','
                +''''+IntToStr(AdoQry_Body.fieldbyname('SlcLineNo').AsInteger)+''','
                +''''+AdoQry_Body.fieldbyname('ItemCode').AsString+''','
                +''''+DatetimeToStr(AdoQry_Body.fieldbyname('StArtDate').AsDateTime)+''','
                +''''+DatetimeToStr(AdoQry_Body.fieldbyname('endDate').AsDateTime)+''','

⌨️ 快捷键说明

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