📄 inv_enter_whtowh_d.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 + -