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

📄 inv_enter_whtowh_d.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Inv_Enter_WhToWh_D;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Detail, Db, AdODB, ExtCtrls, StdCtrls, ExtEdit, linkedit;

Type
  TFrm_Inv_Enter_WhToWh_D = Class(TFrm_Base_Entry_Detail)
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edt_BillQty: TEdit;
    Edt_RemArk: TEdit;
    Label1: TLabel;
    Edt_LineNo: TEdit;
    Edt_ItemName: TEdit;
    Edt_UomName: TEdit;
    LEdt_ItemCode: TLinkEdit;
    LEdt_BatchNo: TLinkEdit;
    procedure Edt_BillQtyExit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure LEdt_BatchNoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure LEdt_BatchNoButtonClick(Sender: TObject);
    procedure LEdt_BatchNoExit(Sender: TObject);
    procedure LEdt_ItemCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure LEdt_ItemCodeButtonClick(Sender: TObject);
    procedure InOutItemCodeCheck(Sender: TObject);
  private
    { Private declarations }
     LineCount,LineNo:Integer;
     FwhCode,FwhpostionCode:string;
  public
    { Public declarations }
    procedure InitControls; Override;
    procedure SaveBodyData; Override;
    procedure SetStatus(CurrentStatus:String;var EnableControls:String); Override;
    procedure SetUserParam1(Param1,Param2: String);
  end;

var
  Frm_Inv_Enter_WhToWh_D: TFrm_Inv_Enter_WhToWh_D;

implementation

uses Sys_Global, Inv_Global, Inv_Enter_WhToWh;

{$R *.DFM}

{ TFrm_Inv_Enter_WhToWh_D }

procedure TFrm_Inv_Enter_WhToWh_D.InitControls;
begin
  inherited;
  //Edt_Line.text:=AdoQry_Head.fieldbyname('PoNo').AsString;
  //AdoQry_Head.feildby
  with AdoQry_Body do
  begin
    lEdt_ItemCode.Text:=fieldbyname('ItemCode').AsString;
    edt_ItemName.text:=fieldbyname('ItemName').AsString;
    edt_UomName.text:=fieldbyname('UomName').AsString;
    lEdt_BatchNo.Text:=fieldbyname('BatchNo').AsString;
    Edt_RemArk.Text:=fieldbyname('BillLineRemArk').AsString;
    if (Status='Add')and(AdoQry_Body.IsEmpty) then
    begin
      Edt_BillQty.Text:='0';
    end
    else
    begin
      Edt_BillQty.Text:=fieldbyname('InvBillQty').AsString;
    end;
    {if (Status='Add') then
    begin
      {if  isempty then
        LineNo:=1
      else
        LineNo:=LineNo+1;
     //Edt_LineNo.text:=inttostr(LineNo);
    end
    else
      Edt_LineNo.text:=fieldbyname('InvBillLineNo').asstring;}
  end;
  Edt_LineNo.enabled:=False;
  edt_ItemName.enabled:=False;
  edt_UomName.enabled:=False;
end;

procedure TFrm_Inv_Enter_WhToWh_D.SaveBodyData;
begin
  inherited;
  with AdoQry_Body do
  begin
    //fieldbyname('InvBillLineNo').AsString:=Edt_LineNo.Text;
    fieldbyname('ItemCode').AsString:=LEdt_ItemCode.Text;
    fieldbyname('ItemName').AsString:=Edt_ItemName.text;
    fieldbyname('UomName').AsString:=Edt_UomName.text;
    fieldbyname('BatchNo').AsString:=LEdt_BatchNo.Text;
    fieldbyname('InvBillQty').AsString:=Edt_BillQty.Text;
    fieldbyname('BillLineRemArk').AsString:=Edt_RemArk.Text;
    Post;
  end;
end;

procedure TFrm_Inv_Enter_WhToWh_D.SetStatus(CurrentStatus: String;
  var EnableControls: String);
begin
  inherited;
  if CurrentStatus='Add' then
  begin
    if LineCount=-1 then
    begin
      AdoQry_Tmp.Close;
      AdoQry_Tmp.SQL.Text:='Select BillLines'
        +' From BillType'
        +' Where BillTypeCode='+'''1101''';
      AdoQry_Tmp.Open;
      LineCount:=AdoQry_Tmp.fieldbyname('BillLines').AsInteger;
    end;
    if AdoQry_Body.RecordCount>=LineCount then
    begin
      //EnableControls:='None';
      DispInfo('本单据最多只允许输入'+IntToStr(LineCount)+'条单据行',3);
    end
    else
     // EnableControls:='Edt_BillQty,Edt_RemArk,Edt_BatchNo,LEdt_ItemCode';
  end;
end;

procedure TFrm_Inv_Enter_WhToWh_D.Edt_BillQtyExit(Sender: TObject);
var
  NeedChangePrice:Boolean;
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  if TEdit(Sender).Text='0' then
  begin
    DispInfo(' 移动数量不允许为零!',3);
    TWinControl(Sender).SetFocus;
    Abort;
  end;
  if (not AdoQry_Body.IsEmpty)and(AdoQry_Body.fieldbyname('InvBillQty').AsFloat
    *StrToFloat(TEdit(Sender).Text)<0) then
  begin
    DispInfo('同一次移动,不能出现正负数量混合的情况!',3);
    TWinControl(Sender).SetFocus;
    Abort;
  end;
  NeedChangePrice:=NeedChangeAveragePrice(AdoQry_Tmp,FormatDateTime('yyyy.mm',
    AdoQry_Head.fieldbyname('BillDate').AsDateTime));
  if InvQtyCheck(NeedChangePrice,AdoQry_Body,AdoQry_Tmp,AdoQry_Head.fieldbyname('WHCode').AsString,
    AdoQry_Head.fieldbyname('WhPositionCode').AsString,LEdt_ItemCode.Text,
    'InvBillQty',StrToFloat(TEdit(Sender).Text),False,Status='Add')=False then
  begin
    TWinControl(Sender).SetFocus;
    Abort;
  end;
  if InvQtyCheck(NeedChangePrice,AdoQry_Body,AdoQry_Tmp,AdoQry_Head.fieldbyname('WHCode').AsString,
    AdoQry_Head.fieldbyname('TOWhPositionCode').AsString,LEdt_ItemCode.Text,
    'InvBillQty',StrToFloat(TEdit(Sender).Text),True,Status='Add')=False then
  begin
    TWinControl(Sender).SetFocus;
    Abort;
  end;
end;

procedure TFrm_Inv_Enter_WhToWh_D.FormCreate(Sender: TObject);
begin
  inherited;
  LineCount:=-1;
  SetFocus_Control:=LEdt_ItemCode;
end;

procedure TFrm_Inv_Enter_WhToWh_D.LEdt_BatchNoKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if(Key=120)and(TEdit(Sender).ReadOnly=False)then
    TEdit(Sender).Text:=BatchHint(DBConnect,LEdt_ItemCode.Text
      ,'',AdoQry_Head.fieldbyname('WHCode').AsString
      ,AdoQry_Head.fieldbyname('WhPositionCode').AsString);
end;

procedure TFrm_Inv_Enter_WhToWh_D.LEdt_BatchNoButtonClick(Sender: TObject);
begin
  inherited;
  if (TEdit(Sender).ReadOnly=False)then
    TEdit(Sender).Text:=BatchHint(DBConnect,LEdt_ItemCode.Text
      ,'',AdoQry_Head.fieldbyname('WHCode').AsString
      ,AdoQry_Head.fieldbyname('WhPositionCode').AsString);
end;

procedure TFrm_Inv_Enter_WhToWh_D.LEdt_BatchNoExit(Sender: TObject);
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  if TEdit(Sender).ReadOnly=False then
  begin
    if not BatchNoCheck(AdoQry_Tmp,TEdit(Sender).Text,LEdt_ItemCode.Text
      ,'',AdoQry_Head.fieldbyname('InvBillDate').AsString) then
    begin
      TWinControl(Sender).SetFocus;
      Abort;
    end;
  end;
end;

procedure TFrm_Inv_Enter_WhToWh_D.LEdt_ItemCodeKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if(Key=120)then
    {CommonHint(Sender,AdoQry_Tmp,'ItemName','物料名称','ItemCode',
      '物料代码','Item','ItemUsable=1 and ItemType in (0,2)');}
   CommOnHint(Sender,AdoQry_Tmp,'ItemName','物料描述                        |当前库存','ItemCode',
             '物料代码',' (select ItemCode, convert(chAr(40),substring(ItemName,1,50)) +''|''+convert(varchAr,CurrentonhandInv) as ItemName from Item '
             +' where ItemUsable=1 and ItemType in (0,2)  and ItemCode in (select ItemCode from CurrentInv '
             +' where WhCode='+quotedstr(FwhCode)+' and WhPositionCode='+Quotedstr(FwhpostionCode)+')   ) as tmp ');
             //+' where WhCode=''09'' and WhPositionCode=''0901'')   ) as tmp ');

end;

procedure TFrm_Inv_Enter_WhToWh_D.LEdt_ItemCodeButtonClick(
  Sender: TObject);
begin
  inherited;
  {CommonHint(Sender,AdoQry_Tmp,'ItemName','物料名称','ItemCode',
    '物料代码','Item','ItemUsable=1 and ItemType in (0,2)');}
   CommOnHint(Sender,AdoQry_Tmp,'ItemName','物料描述                        |当前库存','ItemCode',
             '物料代码',' (select ItemCode, convert(chAr(40),substring(ItemName,1,50)) +''|''+convert(varchAr,CurrentonhandInv) as ItemName from Item '
             +' where ItemUsable=1 and ItemType in (0,2)  and ItemCode in (select ItemCode from CurrentInv '
             +' where WhCode='+quotedstr(FwhCode)+' and WhPositionCode='+Quotedstr(FwhpostionCode)+')   ) as tmp ');
end;

procedure TFrm_Inv_Enter_WhToWh_D.InOutItemCodeCheck(Sender: TObject);
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Exit;
  with AdoQry_Tmp do
  begin
    Close;
    SQL.clear;
    SQL.text:=' Select Item.ItemName,Uom.UomName From Item Join Uom On Item.UomCode=Uom.UomCode '+
              ' Where Item.ItemCode='''+TEdit(Sender).Text+'''';
    Open;
    Edt_ItemName.text:=fieldbyname('ItemName').AsString;
    Edt_UomName.text:=fieldbyname('UomName').AsString;
  end;
  if not BatchCtrl(AdoQry_Tmp,LEdt_ItemCode.Text) then
  begin
    LEdt_BatchNo.Text:='';
    LEdt_BatchNo.ReadOnly:=True;
  end
  else
  begin
    LEdt_BatchNo.ReadOnly:=False;
  end;

end;

procedure TFrm_Inv_Enter_WhToWh_D.SetUserParam1(Param1, Param2: String);
begin
  inherited;
  FwhCode:=Param1;
  FwhpostionCode:=Param2;
end;

end.

⌨️ 快捷键说明

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