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

📄 pm_pc_entry_b1.pas

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

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_B1 = 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;
    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 Act_SaveExecute(Sender: TObject);
    procedure Act_ModifyExecute(Sender: TObject);
    procedure Act_InsertLineExecute(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Act_FilterExecute(Sender: TObject);
  private
    deleteflag:boolean;
    { Private declarations }
  public
    status1:string;
    { 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
  end;

var
  Frm_Pm_Pc_Entry_B1: TFrm_Pm_Pc_Entry_B1;

implementation

uses Pm_Pc_Entry_D,Sys_Global;

{$R *.DFM}

{ TFrm_Pm_Pc_Entry_D }

procedure TFrm_Pm_Pc_Entry_B1.InitControls;
var
  Bill_ID:String;
begin
  status1:=status;
  if (showflag=False) and (status1<>'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='Edit' then   status1:='Add';
  if Status1='Add' then
    SetFocus_Control:=MEdt_BillDate//ExtEdt_VendorCode
  else
    SetFocus_Control:=Edt_RemArk;
  ExtendCaption:=False;
  inherited;
  if Status1='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';
//  Bill_id:='';
//  status1:='Add';
  with AdoQry_Head do
  begin
//    Edt_PcNo.Text:=Bill_ID;
//    if status1='Add' then edt_Pcno.Text:='';
    ExtEdt_VendorCode.Text:=fieldbyname('VendorCode').AsString;
    Lbl_VendorName.Caption:=fieldbyname('VendorName').AsString;
    Edt_VendorName.Text :=fieldbyname('VendorName').AsString;
    if Status1='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;
  if status<>'ReadOnly' then
  begin
//    edt_Pcno.Enabled:=True;
    medt_Billdate.Enabled:=True;
    edt_remArk.Enabled:=True;
  end;
  
  Edt_VendorName.Enabled := False;
  Edt_CurrencyCode.Enabled := False;
  Edt_CurrencyName.Enabled := False;
  Edt_TaxRate.Enabled := False;
end;

procedure TFrm_Pm_Pc_Entry_B1.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_B1.SetStatus(CurrentStatus: String;
  var AnswerStatus, EnableControls: String);
begin
  inherited;
  EnableControls:='Edt_RemArk,';
end;

procedure TFrm_Pm_Pc_Entry_B1.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_B1.SaveData;
var
  Bill_No,ItemCode,DispStr,StatusStr:String;
  StArtQty,endQty:Double;
  StArtDate,endDate:TDateTime;
begin
  inherited;

  If AdoQry_Body.RecordCount=0 Then
  begin
    DispInfo('没有行数据,不能保存!',1);
    Abort;
  end;

  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+''''
        +')';
      AdoQry_Tmp.ExecSQL;
    end;
    AdoQry_Body.First;
    while(not AdoQry_Body.Eof)do
    begin
      if ItemCode=AdoQry_Body.fieldbyname('ItemCode').AsString then
      begin
        if(StArtDate=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)
          and(endDate=AdoQry_Body.fieldbyname('PcendDate').AsDateTime)then
        begin
          if endQty=0 then
          begin
            DispStr:='同一时间段 重复的输入';
            Abort;
          end
          else if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>endQty then
          begin
            DispStr:='起始数量不能跟上面的衔接';
            Abort;
          end
          else
          begin
            StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
            endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
          end;
        end
        else if (FormatDateTime('yyyymmdd',AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)
          =FormatDateTime('yyyymmdd',endDate+1)) then
        begin
          if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>0 then
          begin
            DispStr:='新的日期时段起始数量必须从零开始!';
            Abort;
          end
          else
          begin
            StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
            endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
            StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
            endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
          end;
        end
        else
        begin
          if(StArtDate=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime)then
            DispStr:='终止日期不能跟上面的衔接'
          else
            DispStr:='起始日期不能跟上面的衔接';
          Abort;
        end;
      end
      else
      begin
        if AdoQry_Body.fieldbyname('PcStArtQty').AsFloat<>0 then
        begin
          DispStr:='新的日期时段起始数量必须从零开始!';
          Abort;
        end
        else
        begin
          ItemCode:=AdoQry_Body.fieldbyname('ItemCode').AsString;
          StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
          endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
          StArtQty:=AdoQry_Body.fieldbyname('PcStArtQty').AsFloat;
          endQty:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
        end;
      end;
      AdoQry_Tmp.Close;

⌨️ 快捷键说明

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