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

📄 inv610_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
unit Inv610_02;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BAS200_13, Grids, Wwdbigrd, Wwdbgrid, Mask, wwdbedit, Wwdotdot,
  DB, ADODB, wwdbdatetimepicker, StdCtrls, Buttons, ActnList, Menus,
  ComCtrls, ToolWin;

type
  TInv610_02Form = class(TBas200_13Form)
    lblCount: TLabel;
    lblPerson: TLabel;
    lblCheckDate: TLabel;
    sbPerson: TSpeedButton;
    sbCount: TSpeedButton;
    lblChecker: TLabel;
    edtPerson: TEdit;
    memRemark: TMemo;
    edtCountName: TEdit;
    edtCount: TEdit;
    edtCheckDate: TwwDBDateTimePicker;
    edtChecker: TEdit;
    edtFromDate: TwwDBDateTimePicker;
    lblFromDate: TLabel;
    lblRemark: TLabel;
    dsInv610B: TDataSource;
    qryInv610B: TADOQuery;
    pmInv610B: TPopupMenu;
    mmiAdd: TMenuItem;
    mmiEdit: TMenuItem;
    mmiDel: TMenuItem;
    edtItemID: TwwDBComboDlg;
    wwDBGrid1: TwwDBGrid;
    qryInv600: TADOQuery;
    adsInv610B: TADODataSet;
    adsInv610BFItemID: TWideStringField;
    adsInv610BFItemName: TWideStringField;
    adsInv610BFItemSpec: TWideStringField;
    adsInv610BFUnitName: TWideStringField;
    adsInv610BFLocID: TWideStringField;
    adsInv610BFLocName: TWideStringField;
    adsInv610BFQty: TFloatField;
    adsInv610BFNo: TIntegerField;
    adsInv610BFCount: TFloatField;
    adsInv610BFBanlance: TFloatField;
    lblToDate: TLabel;
    edtToDate: TwwDBDateTimePicker;
    ADOQuery1I610A_001: TWideStringField;
    ADOQuery1I610A_002: TWideStringField;
    ADOQuery1I600A_002: TWideStringField;
    ADOQuery1I610A_003: TDateTimeField;
    ADOQuery1I610A_004: TDateTimeField;
    ADOQuery1I610A_007: TWideStringField;
    ADOQuery1I610A_008: TDateTimeField;
    ADOQuery1I610A_009: TWideStringField;
    ADOQuery1I610A_010: TDateTimeField;
    ADOQuery1I610A_011: TWideStringField;
    ADOQuery1I610A_012: TDateTimeField;
    ADOQuery1I610A_013: TWideStringField;
    ADOQuery1I610A_014: TMemoField;
    ADOQuery1I610A_005: TWideStringField;
    ADOQuery1I610A_006: TWideStringField;
    qryInv600I600A_001: TWideStringField;
    qryInv600I600A_002: TWideStringField;
    qryHrm150: TADOQuery;
    qryHrm150H150_001: TAutoIncField;
    qryHrm150H150_002: TWideStringField;
    qryHrm150H150_003: TWideStringField;
    adsInv610BFRemark: TStringField;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbCountClick(Sender: TObject);
    procedure edtCountExit(Sender: TObject);
    procedure Action1Execute(Sender: TObject);
    procedure edtItemIDCustomDlg(Sender: TObject);
    procedure wwDBGrid1Enter(Sender: TObject);
    procedure wwDBGrid1Exit(Sender: TObject);
    procedure pmInv610BPopup(Sender: TObject);
    procedure sbPersonClick(Sender: TObject);
    procedure edtPersonEnter(Sender: TObject);
    procedure edtPersonExit(Sender: TObject);
    procedure wwDBGrid1FieldChanged(Sender: TObject; Field: TField);
  private
    ALastNo:Integer;
    AOldCount:String;
    ANoStrList,ANameStrList,ACodeStrList:TStringList;
    procedure GetDetailData;
    procedure SetPersonByEmpNo(APersonNo:string);
    procedure SetPersonByEmpID(APersonID:string);
    { Private declarations }
  public
    procedure OpenData(ACode:String);
    procedure SetInterface; override;
    procedure GetDataInfo; override;
    procedure InsertEvent; override;
    procedure UpdateEvent; override;
    procedure DeleteEvent; override;
    procedure SetEmptyInit; override;
    procedure TableBeforePost; override;
    procedure TableAfterPost; override;
    procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
    { Public declarations }
  end;

var
  Inv610_02Form: TInv610_02Form;

implementation

uses SYSDATA, CommFun, InvComm, HwSelData, HwSelDataA, Inv610_03;

{$R *.dfm}

//检查输入的执行人员是否合法(用编辑格式)
function CheckPerson(APersonID:string):Boolean;
var
  AStringList:TStringList;
  I:Integer;
  S:string;
begin
  Result:=True;
  if APersonID='' then Exit;
  AStringList:=TStringList.Create;
  for I:=1 to Length(APersonID) do
  begin
    if Copy(APersonID,I,1)=',' then
    begin
      AStringList.Add(trim(S));
      S:='';
    end else
      S:=S+Copy(APersonID,I,1);
    if I=Length(APersonID) then AStringList.Add(trim(S));
  end;
  for I:=0 to AStringList.Count-1 do
  begin
    if AStringList[I]='' then
    begin
      Result:=False;
      AStringList.Free;
      Exit;
    end;
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('select 1 from HRM150 where H150_002='+''''+AStringList[I]+'''');
    SYSDM.qryQuery.Open;
    if SYSDM.qryQuery.IsEmpty then
    begin
      Result:=False;
      AStringList.Free;
      Exit;
    end;
  end;
  AStringList.Free;
end;

//取得盘点人员显示、编辑、保存的字符串
//显示时:员工姓名1,员工姓名2...
//编辑时:员工编号1,员工编号2...
//保存时:[电脑编号1],[电脑编号2]...
//AType:类型,0=不加入其他字串,1=加入'['和']'字串
function GetPerson(AStringList:TStringList;AType:Integer=0):string;
var
  I:Integer;
  S:String;
begin
  for I:=0 to AStringList.Count-1 do
  begin
    if AType=0 then S:=S+','+AStringList[I] else S:=S+','+'['+AStringList[I]+']';
  end;
  Delete(S,1,1);  //删除第一个字符串','
  Result:=S;
end;

procedure TInv610_02Form.SetInterface;
begin
  inherited;
  Caption:=GetDBString('INV61002001');  //盘点进度汇报
  ADOQuery1I610A_001.DisplayLabel:=GetDBString('INV61002002');  //汇报单号
  ADOQuery1I610A_002.DisplayLabel:=GetDBString('INV61002003');  //盘点单号
  ADOQuery1I600A_002.DisplayLabel:=GetDBString('INV61002004');  //盘点名称
  ADOQuery1I610A_003.DisplayLabel:=GetDBString('INV61002005');  //开始日期
  ADOQuery1I610A_004.DisplayLabel:=GetDBString('INV61002006');  //结束日期
  ADOQuery1I610A_007.DisplayLabel:=GetDBString('INV61002007');  //盘点人员
  ADOQuery1I610A_008.DisplayLabel:=GetDBString('INV61002008');  //审核日期
  ADOQuery1I610A_009.DisplayLabel:=GetDBString('INV61002009');  //审核人员
  ADOQuery1I610A_010.DisplayLabel:=GetDBString('INV61002010');  //制单日期
  ADOQuery1I610A_011.DisplayLabel:=GetDBString('INV61002011');  //制单人员
  ADOQuery1I610A_012.DisplayLabel:=GetDBString('INV61002012');  //修改日期
  ADOQuery1I610A_013.DisplayLabel:=GetDBString('INV61002013');  //修改人员
  ADOQuery1I610A_014.DisplayLabel:=GetDBString('INV61002014');  //备注说明
  adsInv610B.FieldByName('FItemID').DisplayLabel:=GetDBString('INV61002015');  //料品编号
  adsInv610B.FieldByName('FItemName').DisplayLabel:=GetDBString('INV61002016');  //料品名称
  adsInv610B.FieldByName('FItemSpec').DisplayLabel:=GetDBString('INV61002017');  //规格型号
//  adsInv610B.FieldByName('FUnitID').DisplayLabel:=GetDBString('INV61002018');  //单位编号
  adsInv610B.FieldByName('FUnitName').DisplayLabel:=GetDBString('INV61002019');  //单位名称
  adsInv610B.FieldByName('FLocID').DisplayLabel:=GetDBString('INV61002020');  //库位编号
  adsInv610B.FieldByName('FLocName').DisplayLabel:=GetDBString('INV61002021');  //库位名称
  adsInv610B.FieldByName('FQty').DisplayLabel:=GetDBString('INV61002022');  //库存数量
  adsInv610B.FieldByName('FCount').DisplayLabel:=GetDBString('INV61002023');  //盘点数量
  adsInv610B.FieldByName('FBanlance').DisplayLabel:=GetDBString('INV61002024');  //盈亏数量
  adsInv610B.FieldByName('FRemark').DisplayLabel:=GetDBString('INV61002014');  //备注说明
  lblCode.Caption:=GetDBString('INV61002030');  //汇报单号
  lblCount.Caption:=GetDBString('INV61002031');  //盘点单号
  lblFromDate.Caption:=GetDBString('INV61002032');  //开始日期
  lblToDate.Caption:=GetDBString('INV61002033');  //结束日期
  lblPerson.Caption:=GetDBString('INV61002034');  //盘点人员
  lblCheckDate.Caption:=GetDBString('INV61002035');  //审核日期
  lblChecker.Caption:=GetDBString('INV61002036');  //审核人员
  qryInv600I600A_001.DisplayLabel:=GetDBString('INV61002037');  //盘点单号
  qryInv600I600A_002.DisplayLabel:=GetDBString('INV61002038');  //盘点名称
end;

procedure TInv610_02Form.FormCreate(Sender: TObject);
begin
  inherited;
  ANoStrList:=TStringList.Create;
  ANameStrList:=TStringList.Create;
  ACodeStrList:=TStringList.Create;
  ATableName:='INV610A';
  AFieldName:='I610A_001';
  SetInterface;
  qryInv600.Open;
  qryHrm150.Open;
end;

procedure TInv610_02Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  ANoStrList.Free;
  ANameStrList.Free;
  ACodeStrList.Free;
  qryInv600.Close;
  qryHrm150.Close;
end;

procedure TInv610_02Form.OpenData(ACode: String);
begin
  inherited;
  ADOQuery1.DisableControls;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select * from INV610A,INV600A where I610A_002=I600A_001 order by I610A_001');
  ADOQuery1.Open;
  ADOQuery1.Locate('I610A_001',ACode,[]);
  ADOQuery1.EnableControls;
  ADOQuery1AfterScroll(ADOQuery1);
end;

procedure TInv610_02Form.GetDataInfo;
begin
  inherited;
  edtCode.Text         :=ADOQuery1.FieldByName('I610A_001').AsString;  //汇报单号
  edtCount.Text        :=ADOQuery1.FieldByName('I610A_002').AsString;  //盘点单号
  edtCountName.Text    :=ADOQuery1.FieldByName('I600A_002').AsString;  //盘点名称
  edtFromDate.Date     :=ADOQuery1.FieldByName('I610A_003').Value;  //开始日期
  edtToDate.Date       :=ADOQuery1.FieldByName('I610A_004').Value;  //结束日期

  edtPerson.Text       :=ADOQuery1.FieldByName('I610A_005').AsString;  //盘点人员电脑编号
  edtPerson.Text       :=ADOQuery1.FieldByName('I610A_006').AsString;  //盘点人员员工编号
  edtPerson.Text       :=ADOQuery1.FieldByName('I610A_007').AsString;  //盘点人员
  if ADOQuery1.FieldByName('I610A_008').AsString<>'' then
    edtCheckDate.Date     :=ADOQuery1.FieldByName('I610A_008').Value;  //审核日期
  edtChecker.Text      :=ADOQuery1.FieldByName('I610A_009').AsString;  //审核人员
  edtCreateDate.Text   :=ADOQuery1.FieldByName('I610A_010').AsString;  //制单日期
  edtCreateBy.Text     :=ADOQuery1.FieldByName('I610A_011').AsString;  //制单人员
  edtUpdateDate.Text   :=ADOQuery1.FieldByName('I610A_012').AsString;  //修改日期
  edtUpdateBy.Text     :=ADOQuery1.FieldByName('I610A_013').AsString;  //修改人员
  memRemark.Text       :=ADOQuery1.FieldByName('I610A_014').AsString;  //备注说明
  AOldCount:=edtCount.Text;
  //取得明细表数据
  GetDetailData;
end;

procedure TInv610_02Form.GetDetailData;
begin
  ALastNo:=0;
  adsInv610B.Close;
  adsInv610B.CreateDataSet;
  qryInv610B.Close;
  qryInv610B.SQL.Clear;
  qryInv610B.SQL.Add('select AA.*,BB.I110_003,BB.I110_004 from');
  qryInv610B.SQL.Add('  (select A.*,C.*,D.I150_002,D.I150_003,D.I150_004,E.I140_003');
  qryInv610B.SQL.Add('   from INV610B A,INV610A B,INV600B C,INV150 D,INV140 E');
  qryInv610B.SQL.Add('   where I610B_001=I610A_001 and I610A_002=I600B_001 and');
  qryInv610B.SQL.Add('   I610B_002=I600B_002 and I600B_003=I150_001 and');
  qryInv610B.SQL.Add('   I150_011=I140_001 and I610B_001='+''''+edtCode.Text+'''');
  qryInv610B.SQL.Add('   ) AA left join INV110 BB on AA.I600B_004=BB.I110_001');
  qryInv610B.SQL.Add('order by AA.I600B_002');
  qryInv610B.Open;
  while not qryInv610B.Eof do
  begin
    adsInv610B.Append;
    adsInv610B.FieldByName('FNo').Value:=qryInv610B.FieldByName('I610B_002').Value;
    adsInv610B.FieldByName('FItemID').Value:=qryInv610B.FieldByName('I150_002').Value;
    adsInv610B.FieldByName('FItemName').Value:=qryInv610B.FieldByName('I150_003').Value;
    adsInv610B.FieldByName('FItemSpec').Value:=qryInv610B.FieldByName('I150_004').Value;
    adsInv610B.FieldByName('FUnitName').Value:=qryInv610B.FieldByName('I140_003').Value;
    adsInv610B.FieldByName('FLocID').Value:=qryInv610B.FieldByName('I110_003').Value;
    adsInv610B.FieldByName('FLocName').Value:=qryInv610B.FieldByName('I110_004').Value;
    adsInv610B.FieldByName('FQty').Value:=qryInv610B.FieldByName('I610B_003').Value;
    adsInv610B.FieldByName('FCount').Value:=qryInv610B.FieldByName('I610B_004').Value;
    adsInv610B.FieldByName('FBanlance').Value:=qryInv610B.FieldByName('I610B_005').Value;
    adsInv610B.FieldByName('FRemark').Value:=qryInv610B.FieldByName('I610B_006').Value;
    adsInv610B.Post;
    ALastNo:=qryInv610B.FieldByName('I610B_002').AsInteger;
    qryInv610B.Next;
  end;
end;

procedure TInv610_02Form.ReportGetValue(const ParName: String;
  var ParValue: Variant);
begin
  inherited;

end;

procedure TInv610_02Form.SetEmptyInit;
begin
  inherited;
  edtCode.Text:='';
  edtCount.Text:='';
  edtCountName.Text:='';
  edtFromDate.Clear;
  edtToDate.Clear;
  edtPerson.Text:='';
  edtCheckDate.Clear;
  edtChecker.Text:='';
  memRemark.Text:='';
  edtCreateDate.Text:='';
  edtCreateBy.Text:='';
  edtUpdateDate.Text:='';
  edtUpdateBy.Text:='';
  ALastNo:=0;
  adsInv610B.Close;
  adsInv610B.CreateDataSet;
  ANoStrList.Clear;
  ANameStrList.Clear;
  ACodeStrList.Clear;
end;

procedure TInv610_02Form.TableAfterPost;
begin
  inherited;
  qryInv610B.Close;
  qryInv610B.SQL.Clear;
  qryInv610B.SQL.Add('select * from INV610B where I610B_001='+''''+edtCode.Text+'''');
  qryInv610B.Open;
  adsInv610B.First;
  while not adsInv610B.Eof do
  begin
    qryInv610B.Append;
    qryInv610B.FieldByName('I610B_001').Value:=edtCode.Text;
    qryInv610B.FieldByName('I610B_002').Value:=adsInv610B.FieldByName('FNo').Value;
    qryInv610B.FieldByName('I610B_003').Value:=adsInv610B.FieldByName('FQty').Value;
    qryInv610B.FieldByName('I610B_004').Value:=adsInv610B.FieldByName('FCount').Value;
    qryInv610B.FieldByName('I610B_005').Value:=adsInv610B.FieldByName('FBanlance').Value;
    qryInv610B.FieldByName('I610B_006').Value:=adsInv610B.FieldByName('FRemark').Value;
    qryInv610B.Post;
    adsInv610B.Next;
  end;
  UpdateCountFlag(edtCode.Text,True);

  //反写料品资料表中的盘点日期字段  INV150.I150_038=INV610A.I610A_004
  UpdateLastDate('INV610',edtCode.Text);
end;

procedure TInv610_02Form.TableBeforePost;
var
  ADate:TDateTime;
  S:String;
  I,J:Integer;
begin

⌨️ 快捷键说明

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