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

📄 pm_pc_entry_b.pas

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

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_Pm_Pc_Entry_B = Class(TFrm_Base_Entry_Body)
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Edt_RemArk: TEdit;
    Label7: TLabel;
    DBTxt_ItemName: TDBText;
    Label8: TLabel;
    Lbl_Currency: TLabel;
    ActionList1: TActionList;
    Label9: TLabel;
    MEdt_BillDate: TMaskEdit;
    Lbl_TaxRate: TLabel;
    ExtEdt_VendorCode: TLinkEdit;
    Lbl_VendorName: TLabel;
    Edt_VendorName: TEdit;
    Edt_CurrencyName: TEdit;
    Edt_TaxRate: TEdit;
    Edt_CurrencyCode: TEdit;
    chb_Overdue: TCheckBox;
    Label4: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Act_DeleteLineExecute(Sender: TObject);
    procedure ExtEdt_VendorCodeChange(Sender: TObject);
    procedure IntegerCheck(Sender: TObject);
    procedure AdoQueryAfterOpen(DataSet: TDataSet);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Act_PreviewExecute(Sender: TObject);
    procedure DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
    procedure ExtEdt_VendorCodeExit(Sender: TObject);
    procedure Act_ModifyExecute(Sender: TObject);
    procedure Act_InsertLineExecute(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure chb_OverdueClick(Sender: TObject);
    procedure Act_FilterExecute(Sender: TObject);
  private
    deleteflag:boolean;
    { Private declarations }
  public
    { Public declarations }
    procedure InitReport; Override;
    procedure SetStatus(CurrentStatus:String;var AnswerStatus,
      EnableControls:String); Override;//设置各种状态下那些控件Enable
    procedure InitControls; Override;//初始化Form上所有控件
    procedure SaveHeadData; Override;//把表头控件值写入缓存,不要Post
    procedure SaveData; Override;//把表头控件写入缓存,不要Post
    Function  ExistsSc(ItemCode:String) : Boolean; 
  end;

var
  Frm_Pm_Pc_Entry_B: TFrm_Pm_Pc_Entry_B;

implementation

uses Pm_Pc_Entry_D,Sys_Global;

{$R *.DFM}

{ TFrm_Pm_Pc_Entry_D }

procedure TFrm_Pm_Pc_Entry_B.InitControls;
var
  Bill_ID:String;
begin
  if (showflag=False) and (status<>'Query') then
  begin
    deleteflag:=True;
    try
      if deleteflag then
      begin
        AdoQry_Tmp.Close;
        AdoQry_Tmp.SQL.Text:='Drop Table #PcLine';
        AdoQry_Tmp.ExecSQL;
      end;
    except
    end;
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.Text:='Create Table #PcLine ('
      +' [PcNo] [varchAr] (16) NULL'
      +',[ItemCode] [varchAr] (16) NULL'
      +',[PcTaxPrice] [float] NULL'
      +',[PcNoTaxPrice] [float] NULL'
      +',[PcStArtDate] [smalldatetime] NULL'
      +',[PcendDate] [smalldatetime] NULL'
      +',[PcStArtQty] [float] NULL'
      +',[PcendQty] [float] NULL'
      +',[PcPriceType] [int] NULL'
//      +',[PCReferencedPrice] [int] NULL'
      +',[PcTaxPrice_Formal] [float] NULL'
      +',[PcNoTaxPrice_Formal] [float] NULL'
      +',[ReferencePricePass] [int] NULL'
      +',[FormalPricePass] [int] NULL'
      +')';
    AdoQry_Tmp.ExecSQL;
  end;
  if Status='Add' then
    SetFocus_Control:=ExtEdt_VendorCode
  else
    SetFocus_Control:=Edt_RemArk;
  ExtendCaption:=False;
  inherited;
  if Status='ReadOnly' then
  begin
    Caption:='采购价格表查询';
    Pnl_Title.Caption:='采购价格表查询';
  end
  else
  begin
    deleteflag:=True;
    Caption:='采购价格表';
    Pnl_Title.Caption:='采购价格表';
  end;
  if Status<>'Add' then
    Bill_ID:=AdoQry_Head.fieldbyname('PcNo').AsString
  else
    Bill_ID:='';
  PriceFields:='PcTaxPrice,PcNoTaxPrice,';
  AdoQry_Body.Close;
  AdoQry_Body.SQL.Text:='Select pcline.PcNo'
    +',PcLine.PcLineId'
    +',PcLine.ItemCode'
    +',Item.ItemName'
    +',PcLine.PcLineStatus'
    +',Uom.UomName'
    +',PcLine.PcTaxPrice'
    +',PcLine.PcNoTaxPrice'
    +',PcLine.PcStArtDate'
    +',PcLine.PcendDate'
    +',PcLine.PcStArtQty'
    +',PcLine.PcendQty'
    +',PcLine.PcPriceType'
    +',PcLine.PcTaxPrice_Formal '
    +',PcLine.PcNoTaxPrice_Formal '
    +',PcLine.ReferencePricePass '
    +',PcLine.FormalPricePass '
//    +',PcLine.PCReferencedPrice'
    +' From PcLine left Join Item On PcLine.ItemCode=Item.ItemCode'
    +' Left Outer Join Uom On Item.UomCode=Uom.UomCode'
    +' Where PcLine.PcNo='''+Bill_ID+''''
    +iifstring(chb_Overdue.Checked,'','   and pcline.pcenddate>=getdate() ');
    ;
  AdoQry_Body.Open;
  AdoQry_Body.Sort:='ItemCode,PcStArtDate,PcStArtQty';

  with AdoQry_Head do
  begin
//    Edt_PcNo.Text:=Bill_ID;
    ExtEdt_VendorCode.Text:=fieldbyname('VendorCode').AsString;
    Lbl_VendorName.Caption:=fieldbyname('VendorName').AsString;
    Edt_VendorName.Text :=fieldbyname('VendorName').AsString;
    if Status='Add' then
      MEdt_BillDate.Text:=FormatDateTime('yyyy.mm.dd',Now)
    else
      MEdt_BillDate.Text:=fieldbyname('PCDate').AsString;
    Lbl_Currency.Caption:=fieldbyname('CurrencyCode').AsString+' '
      +fieldbyname('CurrencyName').AsString;
    Lbl_TaxRate.Caption:=fieldbyname('PCTaxRate_Percent').AsString;
    Edt_CurrencyName.Text := fieldbyname('CurrencyName').AsString;
    Edt_TaxRate.Text :=fieldbyname('PCTaxRate_Percent').AsString;
    Edt_RemArk.Text:=fieldbyname('RemArk').AsString;
  end;
  try
    if deleteflag then
    begin
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Delete #PcLine';
      AdoQry_Tmp.ExecSQL;
    end;
  except
  end;
//  Extedt_VendorCode.OnExit(Extedt_VendorCode);
  Edt_VendorName.Enabled := False;
  Edt_CurrencyCode.Enabled := False;
  Edt_CurrencyName.Enabled := False;
  Edt_TaxRate.Enabled := False;
  if Trim(edt_taxrate.text)='0' then edt_taxrate.Enabled:=True;
  if status<>'Add' then 
  begin
    chb_Overdue.Enabled:=True;
  end;
  
end;

procedure TFrm_Pm_Pc_Entry_B.SaveHeadData;
begin
  inherited;
  with AdoQry_Head do
  begin
    fieldbyname('VendorCode').AsString:=ExtEdt_VendorCode.Text;
    fieldbyname('VendorName').AsString:=Edt_VendorName.Text;
    fieldbyname('PCTaxRate_Percent').AsString:=Edt_TaxRate.Text;
    fieldbyname('CurrencyCode').AsString:=GetCode(Lbl_Currency.Caption);
    fieldbyname('CurrencyName').AsString:=GetName(Lbl_Currency.Caption);
    fieldbyname('RemArk').AsString:=Edt_RemArk.Text;
    fieldbyname('PCDate').AsString:=MEdt_BillDate.Text;
  end;
end;

procedure TFrm_Pm_Pc_Entry_B.SetStatus(CurrentStatus: String;
  var AnswerStatus, EnableControls: String);
begin
  inherited;
  EnableControls:='Edt_RemArk,';
end;

procedure TFrm_Pm_Pc_Entry_B.FormCreate(Sender: TObject);
begin
  inherited;
  Frm_Pm_Pc_Entry_D:=TFrm_Pm_Pc_Entry_D.Create(Self);
  Frm_Entry_Detail:=Frm_Pm_Pc_Entry_D;//设置弹出Detail
end;

procedure TFrm_Pm_Pc_Entry_B.SaveData;
var
  Bill_No,ItemCode,DispStr,StatusStr:String;
  StArtQty,endQty:Double;
  SqlText : String;
  StArtDate,endDate:TDateTime;
  IsPriceRequestPass : Integer ;//采购价格是否需要批准 0:不需要 1:需要
begin
  inherited;

  If AdoQry_Body.RecordCount=0 Then
  begin
    DispInfo('没有行数据,不能保存!',1);
    Abort;
  end;
  ExecuteSql(AdoQry_Tmp,'Select * from PmParam '
                       +' where PmParamCode=''ISPriceRequestPass''',0);
  IsPriceRequestPass := AdoQry_Tmp.fieldbyname('PmParamValueN').AsInteger;                       

  DBConnect.beginTrans;
  DispStr:=' 保存失败,请重试 ';
  try
    if(Status<>'Add')then
    begin
      Bill_No:=AdoQry_Head.fieldbyname('PcNo').AsString;
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Delete From PcLine Where PcNo='''+Bill_No+'''';
      AdoQry_Tmp.ExecSQL;
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Update Pc Set'
        +' VendorCode='''+AdoQry_Head.fieldbyname('VendorCode').AsString+''''
        +',RemArk='''+AdoQry_Head.fieldbyname('RemArk').AsString+''''
        +' Where PcNo='''+Bill_No+'''';
      AdoQry_Tmp.ExecSQL;
    end
    else
    begin
      Bill_No:=GetNo(DBConnect,FormatDateTime('yymm',Now),'Pc');
      AdoQry_Head.fieldbyname('PcNo').AsString:=Bill_No;
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Insert pc'+
        '(PcNo,VendorCode,PCTaxRate_Percent,RemArk,CurrencyCode,PCDate)'+
        'Values('''+Bill_No+''''
        +','''+AdoQry_Head.fieldbyname('VendorCode').AsString+''''
        +','+AdoQry_Head.fieldbyname('PCTaxRate_Percent').AsString+''
        +','''+AdoQry_Head.fieldbyname('RemArk').AsString+''''
        +','''+AdoQry_Head.fieldbyname('CurrencyCode').AsString+''''
        +','''+AdoQry_Head.fieldbyname('PcDate').AsString+''''
        +')';

⌨️ 快捷键说明

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