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

📄 inv600_01.pas.svn-base

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BAS200_10, dxExEdtr, ActnList, DB, ADODB, Menus, dxCntner, dxTL,
  dxDBCtrl, dxDBGrid, ExtCtrls, ComCtrls, ToolWin, dxDBTLCl, dxGrClms,
  Buttons, StdCtrls, wwdbdatetimepicker, FR_DSet;

type
  TInv600_01Form = class(TBas200_10Form)
    lblDate: TLabel;
    lblClass: TLabel;
    Label1: TLabel;
    edtFromDate: TwwDBDateTimePicker;
    edtToDate: TwwDBDateTimePicker;
    sbSearch: TSpeedButton;
    ADOQuery1I600A_001: TWideStringField;
    ADOQuery1I600A_002: TWideStringField;
    ADOQuery1I600A_003: TSmallintField;
    ADOQuery1I100_002: TWideStringField;
    ADOQuery1I100_003: TWideStringField;
    ADOQuery1I600A_004: TIntegerField;
    ADOQuery1I600A_005: TDateTimeField;
    ADOQuery1I600A_006: TDateTimeField;
    ADOQuery1I600A_007: TDateTimeField;
    ADOQuery1I600A_008: TDateTimeField;
    ADOQuery1I600A_009: TIntegerField;
    ADOQuery1I600A_010: TDateTimeField;
    ADOQuery1I600A_011: TWideStringField;
    ADOQuery1I600A_012: TDateTimeField;
    ADOQuery1I600A_013: TWideStringField;
    ADOQuery1I600A_014: TMemoField;
    dxDBGrid1I600A_001: TdxDBGridColumn;
    dxDBGrid1I600A_002: TdxDBGridColumn;
    dxDBGrid1I600A_003: TdxDBGridMaskColumn;
    dxDBGrid1I100_002: TdxDBGridColumn;
    dxDBGrid1I100_003: TdxDBGridColumn;
    dxDBGrid1I600A_005: TdxDBGridDateColumn;
    dxDBGrid1I600A_006: TdxDBGridDateColumn;
    dxDBGrid1I600A_007: TdxDBGridDateColumn;
    dxDBGrid1I600A_008: TdxDBGridDateColumn;
    dxDBGrid1I600A_009: TdxDBGridMaskColumn;
    dxDBGrid1I600A_010: TdxDBGridDateColumn;
    dxDBGrid1I600A_011: TdxDBGridColumn;
    dxDBGrid1I600A_012: TdxDBGridDateColumn;
    dxDBGrid1I600A_013: TdxDBGridColumn;
    qryInv600B: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbSearchClick(Sender: TObject);
    procedure Action1Execute(Sender: TObject);
    procedure ADOQuery1I600A_003GetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    procedure ActPrintExecute(Sender: TObject);
    procedure ADOQuery1AfterScroll(DataSet: TDataSet);
  private
    AStatus:array [0..2] of string;
    procedure UpdatePrintData;
    { Private declarations }
  public
    procedure SetInterface; override;
    procedure InsertEvent; override;
    procedure UpdateEvent; override;
    procedure DeleteEvent; override;
    procedure BrowseEvent; override;
    procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
    { Public declarations }
  end;

var
  Inv600_01Form: TInv600_01Form;

implementation

uses SYSDATA, CommFun, Inv600_02, Inv600_03;

{$R *.dfm}

//更新盘点计划的库存数量
procedure UpdateInvQty;
var
  AWhsNo,ALocNo,AItemNo:String;
  AQuery:TADOQuery;
  AQty:Double;
begin
  AQuery:=TADOQuery.Create(nil);
  AQuery.Connection:=SYSDM.ADOC;
  AQuery.Close;
  AQuery.SQL.Clear;
  AQuery.SQL.Add('select * from INV600A, INV600B where I600A_001=I600B_001');
  AQuery.Open;
  while not AQuery.Eof do
  begin
    AWhsNo:=AQuery.FieldByName('I600A_004').AsString;
    ALocNo:=AQuery.FieldByName('I600B_004').AsString;
    AItemNo:=AQuery.FieldByName('I600B_003').AsString;
    if ALocNo='' then ALocNo:='0';
    //取得最新库存余额
    AQty:=GetValue('select I501_005 from INV501 where I501_001='+AWhsNo+' and I501_002='+ALocNo+' and I501_003='+AItemNo);
    AQuery.Edit;
    AQuery.FieldByName('I600B_005').Value:=AQty;
    AQuery.Post;
    AQuery.Next;
  end;
  AQuery.Close;
  AQuery.Free;
end;

//更新盘点计划的状态及实际开始日期
procedure TInv600_01Form.UpdatePrintData;
begin
  //设置盘点计划明细表的已打印字段=True
  ExecSQL('update INV600B set I600B_006='+GetBoolean(True)+' where I600B_001='+''''+ADOQuery1I600A_001.AsString+'''');
  //设置盘点计划状态为“执行”状态,实际开始日期=当前打印日期
  ExecSQL('update INV600A set I600A_003=1,I600A_007='+GetDateString(GetServerDate)+' where I600A_001='+''''+ADOQuery1I600A_001.AsString+'''');
end;

procedure TInv600_01Form.SetInterface;
begin
  inherited;
  Caption:=GetDBString('INV60001001');  //盘点计划维护
  ADOQuery1I600A_001.DisplayLabel:=GetDBString('INV60001002');  //盘点单号
  ADOQuery1I600A_002.DisplayLabel:=GetDBString('INV60001003');  //盘点名称
  ADOQuery1I600A_003.DisplayLabel:=GetDBString('INV60001004');  //盘点状态
  ADOQuery1I600A_004.DisplayLabel:=GetDBString('INV60001005');  //预计开始
  ADOQuery1I600A_005.DisplayLabel:=GetDBString('INV60001006');  //实际开始
  ADOQuery1I600A_006.DisplayLabel:=GetDBString('INV60001007');  //实际完成
  ADOQuery1I600A_007.DisplayLabel:=GetDBString('INV60001008');  //项目数量
  ADOQuery1I600A_008.DisplayLabel:=GetDBString('INV60001009');  //制单日期
  ADOQuery1I600A_009.DisplayLabel:=GetDBString('INV60001010');  //制单人员
  ADOQuery1I600A_010.DisplayLabel:=GetDBString('INV60001011');  //修改日期
  ADOQuery1I600A_011.DisplayLabel:=GetDBString('INV60001012');  //修改人员
  ADOQuery1I600A_012.DisplayLabel:=GetDBString('INV60001013');  //备注说明
  Action1.Caption:=GetDBString('INV60001014');  //生成
  Action1.Enabled:=ActInsert.Enabled;

  lblDate.Caption:=GetDBString('INV60001015');  //日期
  sbSearch.Caption:=GetDBString('INV60001016');  //查询
  AStatus[0]:=GetDBString('INV60002017');  //计划
  AStatus[1]:=GetDBString('INV60002018');  //执行
  AStatus[2]:=GetDBString('INV60002019');  //完成
end;

procedure TInv600_01Form.FormCreate(Sender: TObject);
var
  ADate:TDateTime;
begin
  inherited;
  SetInterface;
  ADate:=GetServerDate;
  edtFromDate.Date:=GetMonthFirstDate(ADate);
  edtToDate.Date:=GetMonthEndDate(ADate);
  sbSearch.Click;
end;

procedure TInv600_01Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
//
end;

procedure TInv600_01Form.sbSearchClick(Sender: TObject);
begin
  inherited;
//查询
  Screen.Cursor:=crHourGlass;
  ADOQuery1.DisableControls;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select * from INV600A,INV100 where I600A_004=I100_001');
  ADOQuery1.SQL.Add(' and I600A_005>='+GetDateString(edtFromDate.Date)+' and I600A_005<='+GetDateString(edtToDate.Date));
  ADOQuery1.SQL.Add('order by I600A_001');
  ADOQuery1.Open;
  ADOQuery1.EnableControls;
  ADOQuery1AfterScroll(ADOQuery1);
  Screen.Cursor:=crDefault;
end;

procedure TInv600_01Form.ReportGetValue(const ParName: String; var ParValue: Variant);
begin
  inherited;
  if ParName='ADate' then ParValue:=lblDate.Caption  //
  else if ParName='AFromDate' then ParValue:=edtFromDate.Text  //
  else if ParName='AToDate' then ParValue:=edtToDate.Text  //
  else if ParName='I600A_001' then ParValue:=ADOQuery1I600A_001.DisplayLabel  //
  else if ParName='I600A_002' then ParValue:=ADOQuery1I600A_002.DisplayLabel  //
  else if ParName='I600A_003' then ParValue:=ADOQuery1I600A_003.DisplayLabel  //
  else if ParName='I600A_004' then ParValue:=ADOQuery1I600A_004.DisplayLabel  //
  else if ParName='I600A_005' then ParValue:=ADOQuery1I600A_005.DisplayLabel  //
  else if ParName='I600A_006' then ParValue:=ADOQuery1I600A_006.DisplayLabel  //
  else if ParName='I600A_007' then ParValue:=ADOQuery1I600A_007.DisplayLabel  //
  else if ParName='I600A_008' then ParValue:=ADOQuery1I600A_008.DisplayLabel  //
  else if ParName='I600A_009' then ParValue:=ADOQuery1I600A_009.DisplayLabel  //
  else if ParName='I600A_010' then ParValue:=ADOQuery1I600A_010.DisplayLabel  //
  else if ParName='I600A_011' then ParValue:=ADOQuery1I600A_011.DisplayLabel  //
end;

procedure TInv600_01Form.Action1Execute(Sender: TObject);
begin
  inherited;
//生成
  Screen.Cursor:=crHourGlass;
  Inv600_03Form:=TInv600_03Form.Create(Application);
  Screen.Cursor:=crDefault;
  Inv600_03Form.ShowModal;
  sbSearch.Click;
end;

procedure TInv600_01Form.ADOQuery1I600A_003GetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  inherited;
  if ADOQuery1.IsEmpty then Exit;
  case Sender.AsInteger of
    0:Text:=AStatus[0];  //计划
    1:Text:=AStatus[1];  //执行
    2:Text:=AStatus[2];  //完成
  end;
end;

procedure TInv600_01Form.BrowseEvent;
begin
  inherited;
  Inv600_02Form:=TInv600_02Form.Create(Application);
  Inv600_02Form.OpenData(ADOQuery1I600A_001.Value);
  Inv600_02Form.ShowModal;
end;

procedure TInv600_01Form.DeleteEvent;
var
  ACode:string;
begin
  inherited;
//删除
  if ADOQuery1I600A_003.AsInteger=2 then
  begin
    ShowMsg('UMS10000435');  //不允许删除完成状态的盘点计划
    Abort;
  end;
  if IsExists('select 1 from INV610A where I610A_002='+''''+ADOQuery1I600A_001.AsString+'''') then
  begin
    ShowMsg('UMS10000514');  //不允许删除已汇报的盘点计划
    Abort;
  end;
  ACode:=ADOQuery1I600A_001.AsString;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('delete from INV600B where I600B_001='+''''+ACode+'''');
  SYSDM.qryQuery.ExecSQL;
  DeleteTableRecord(ADOQuery1,'INV600A','I600A_001='+''''+ACode+'''');
end;

procedure TInv600_01Form.InsertEvent;
begin
  inherited;
//新增
  Inv600_02Form:=TInv600_02Form.Create(Application);
  Inv600_02Form.OpenData('');
  Inv600_02Form.ActInsert.Execute;
  Inv600_02Form.ShowModal;
end;

procedure TInv600_01Form.UpdateEvent;
begin
  inherited;
//修改
  //0=计划,1=执行,2=完成
  if ADOQuery1I600A_003.AsInteger=1 then
  begin
    ShowMsg('UMS10000516');  //不允许修改执行状态的盘点计划
    Abort;
  end;
  if ADOQuery1I600A_003.AsInteger=2 then
  begin
    ShowMsg('UMS10000434');  //不允许修改完成状态的盘点计划
    Abort;
  end;
  Inv600_02Form:=TInv600_02Form.Create(Application);
  Inv600_02Form.OpenData(ADOQuery1I600A_001.Value);
  Inv600_02Form.ActUpdate.Execute;
  Inv600_02Form.ShowModal;
end;

procedure TInv600_01Form.ActPrintExecute(Sender: TObject);
begin
  if ADOQuery1I600A_003.AsInteger=2 then
  begin
    ShowMsg('UMS10000515');  //不允许打印完成状态的盘点计划
    Abort;
  end;
  //更新盘点计划的库存数量
  UpdateInvQty;
  try
    SYSDM.frReport2.OnPrintReport:=UpdatePrintData;
    SYSDM.frDBDataSet1.RangeBegin:=rbCurrent;
    SYSDM.frDBDataSet1.RangeEnd:=reCurrent;
    SYSDM.frDBDataSet2.DataSet:=qryInv600B;
    inherited;
  finally
    SYSDM.frDBDataSet1.RangeBegin:=rbFirst;
    SYSDM.frDBDataSet1.RangeEnd:=reLast;
    SYSDM.frReport2.OnPrintReport:=nil;
  end;
end;

procedure TInv600_01Form.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
  qryInv600B.Close;
  qryInv600B.SQL.Clear;
  qryInv600B.SQL.Add('select A.I600B_002 as FNo,A.I600B_003 as FItemNo,A.I600B_004 as FLocNo,A.I600B_005 as FQty,A.I600B_006 as FIsPrint,A.I600B_007 as FIsFinish,');
  qryInv600B.SQL.Add('  B.I110_003 as FLocID,B.I110_004 as FLocName,C.I150_002 as FItemID,C.I150_003 as FItemName,C.I150_004 as FItemSpec,D.I140_002 as FUnitID,D.I140_003 as FUnitName');
  qryInv600B.SQL.Add('from ((INV600B A left join INV110 B on A.I600B_004=B.I110_001) left join INV150 C on A.I600B_003=C.I150_001) left join INV140 D on C.I150_011=D.I140_001');
  qryInv600B.SQL.Add('where I600B_001='+''''+ADOQuery1I600A_001.AsString+'''');
  qryInv600B.SQL.Add('order by I600B_002');
  qryInv600B.Open;
  inherited;
end;

initialization
  RegisterClass(TInv600_01Form);

finalization
  UnRegisterClass(TInv600_01Form);

end.

⌨️ 快捷键说明

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