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

📄 inv_consistency.pas

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

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, AdODB, ComCtrls, ToolWin, ExtCtrls, StdCtrls, Buttons, Mask;

Type
  TFrm_Inv_Consistency = Class(TForm)
    AdoQry_Main: TAdoQuery;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn4: TBitBtn;
    GroupBox1: TGroupBox;
    REdt_Detail: TRichEdit;
    GroupBox2: TGroupBox;
    Splitter1: TSplitter;
    LB_Err: TListBox;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    ErrNum:TstrinGlist;
    procedure ShowP;
    procedure FlashP;
    function Check01:Boolean;
    function Check02:Boolean;
    function Check03:Boolean;
    function check04:Boolean;
    function check05:Boolean;
    function check06:Boolean;
    function check07:Boolean;
    { Private declarations }
  public
    procedure InitForm(AdOConnection:TAdOConnection;UserCode:string);
    { Public declarations }
  end;

var
  Frm_Inv_Consistency: TFrm_Inv_Consistency;
  MessageWord,YYMM:string;
  Sql_Txt01:string;
  Sql_Txt02:string;
  Sql_Txt03:string;
  Sql_Txt04:string;
  Sql_Txt05:string;
  Sql_Txt06:string;
  Sql_Txt07:string;
  Sql_Txt08:string;
implementation
uses Sys_Global,Inv_Consistency_D;
{$R *.DFM}

{ TFrm_Consistency }

function TFrm_Inv_Consistency.Check01: Boolean;
begin
{  Sql_Txt01:='select '+
           '      Item.ItemCode+'' ''+Item.ItemName as 物料标识 ,'+
           '      CurrentonhandInv 可用库存|当前库存,'+
           '      c.onhandInv 可用库存|物料主文件,'+
           '      CurrentonhandInv-c.onhandInv 可用库存|差异 ,'+
           '      CurrentonCheckInv 待检库存|当前库存,'+
           '      c.onCheckInv 待检库存|物料主文件,'+
           '      CurrentonCheckInv-c.onCheckInv 待检库存|差异,'+
           '      CurrentfreezeInv 冻结库存|当前库存,'+
           '      c.freezeInv 冻结库存|物料主文件,'+
           '      CurrentfreezeInv-c.freezeInv 冻结库存|差异,'+
           '      CurrentwasterInv 废品库存|当前库存,'+
           '      c.wasterInv 废品库存|物料主文件,'+
           '      CurrentwasterInv-c.wasterInv 废品库存|差异,'+
           '      CurrentonShipInv 在运库存|当前库存,'+
           '      c.onShipInv 在运库存|物料主文件,'+
           '      CurrentonShipInv-c.onShipInv 在运库存|差异 '+
           '  from Item '+
           '  left join '+
           '       (select ItemCode,sum(onhandInv) onhandInv,sum(onCheckInv) onCheckInv,'+
           '               sum(freezeInv) freezeInv,sum(wasterInv) wasterInv,sum(onShipInv) onShipInv '+
           '          from CurrentInv '+
           '         group by ItemCode) c '+
           '       on Item.ItemCode=c.ItemCode '+
           '  where (CurrentonCheckInv-c.onCheckInv<>0) or (CurrentonCheckInv-c.onCheckInv<>0) or (CurrentfreezeInv-c.freezeInv<>0) or (CurrentwasterInv-c.wasterInv<>0) or (CurrentonShipInv-c.onShipInv<>0) ';}
  Sql_Txt01:='select '+
           '      Item.ItemCode+'' ''+Item.ItemName as Itemflag ,'+
           '      CurrentonhandInv, '+
           '      c.onhandInv,'+
           '      CurrentonhandInv-c.onhandInv DiffrentonhandInv,'+
           '      CurrentonCheckInv,'+
           '      c.onCheckInv,'+
           '      CurrentonCheckInv-c.onCheckInv DiffrentonCheckInv,'+
           '      CurrentfreezeInv,'+
           '      c.freezeInv,'+
           '      CurrentfreezeInv-c.freezeInv DiffrentfreezeInv,'+
           '      CurrentwasterInv,'+
           '      c.wasterInv,'+
           '      CurrentwasterInv-c.wasterInv DiffrentwasterInv,'+
           '      CurrentonShipInv,'+
           '      c.onShipInv,'+
           '      CurrentonShipInv-c.onShipInv DiffrentonShipInv '+
           '  from Item '+
           '  left join '+
           '       (select ItemCode,sum(onhandInv) onhandInv,sum(onCheckInv) onCheckInv,'+
           '               sum(freezeInv) freezeInv,sum(wasterInv) wasterInv,sum(onShipInv) onShipInv '+
           '          from CurrentInv '+
           '         group by ItemCode) c '+
           '       on Item.ItemCode=c.ItemCode '+
           '  where (CurrentonCheckInv-c.onCheckInv<>0) or (CurrentonCheckInv-c.onCheckInv<>0) or (CurrentfreezeInv-c.freezeInv<>0) or (CurrentwasterInv-c.wasterInv<>0) or (CurrentonShipInv-c.onShipInv<>0) ';
  with AdoQry_Main do
  begin
    Close;
    sql.clear;
    sql.Add(sql_txt01);
    open;
    if Not IsEmpty then
    Result:=False
    else Result:=True;
  end;
end;

procedure TFrm_Inv_Consistency.InitForm(AdOConnection: TAdOConnection;UserCode:string);
var
  sql_txt:string;
begin
  //**************请在此处添加UserCode权限判断。******************
  ErrNum:=TstrinGlist.Create;
  AdoQry_Main.Connection:=AdOConnection;
  sql_TXt:='select Invstatus '+
            'from   Invstatus '+
            'where InvstatusName=''clsperiod''';
  with AdoQry_Main do
  begin
    Close;
    sql.clear;
    sql.Add(sql_txt);
    open;
    YYMM:=fieldbyname('Invstatus').asstring;
  end;

end;

procedure TFrm_Inv_Consistency.BitBtn1Click(Sender: TObject);
var
  Book:integer;
begin
  LB_Err.Items.clear;
  with REdt_Detail do
  begin
    lines.clear;
    PAraGraph.Numbering := nsBullet;
    font.Color:=clBlue;
    font.Size:=10;
    Lines.Add('开始检查...');

    MessageWord:='①当前库存与物料主文件的检验...';
    Lines.Add(MessageWord);
    Repaint;
    if Check01 then
    begin
      FlashP;
      MessageWord:='①当前库存与物料主文件的检验...OK!';
      Lines.Add(MessageWord);
    end
    else
    begin
      FlashP;
      MessageWord:='①当前库存与物料主文件的检验...有错误!';
      Lines.Add(MessageWord);
      ShowP;
      LB_Err.Items.Add(MessageWord);
      LB_Err.Refresh;
      ErrNum.Add('1');
    end;

    MessageWord:='②当前待检库存与待检单据的检验...';
    Lines.Add(MessageWord);
    Repaint;
    if Check02 then
    begin
      FlashP;
      MessageWord:='②当前待检库存与待检单据的检验...OK!';
      Lines.Add(MessageWord);
    end
    else
    begin
      FlashP;
      MessageWord:='②当前待检库存与待检单据的检验...有错误!';
      Lines.Add(MessageWord);
      ShowP;
      LB_Err.Items.Add(MessageWord);
      LB_Err.Refresh;
      ErrNum.Add('2');
    end;

    MessageWord:='③委外库存与出入库单据的检验...';
    Lines.Add(MessageWord);
    Repaint;
    if Check03 then
    begin
      FlashP;
      MessageWord:='③委外库存与出入库单据的检验...OK!';
      Lines.Add(MessageWord);
    end
    else
    begin
      FlashP;
      MessageWord:='③委外库存与出入库单据的检验...有错误!';
      Lines.Add(MessageWord);
      ShowP;
      LB_Err.Items.Add(MessageWord);
      LB_Err.Refresh;
      ErrNum.Add('3');
    end;

    MessageWord:='④PO完成情况检验...';
    Lines.Add(MessageWord);
    Repaint;
    if Check04 then
    begin
      FlashP;
      MessageWord:='④PO完成情况检验...OK!';
      Lines.Add(MessageWord);
    end
    else
    begin
      FlashP;
      MessageWord:='④PO完成情况检验...有错误!';
      Lines.Add(MessageWord);
      ShowP;
      LB_Err.Items.Add(MessageWord);
      LB_Err.Refresh;      
      ErrNum.Add('4');
    end;

    MessageWord:='⑤正式入库与PO一致性...';
    Lines.Add(MessageWord);
    Repaint;
    if Check05 then
    begin
      FlashP;
      MessageWord:='⑤正式入库与PO一致性...OK!';
      Lines.Add(MessageWord);
    end
    else
    begin
      FlashP;
      MessageWord:='⑤正式入库与PO一致性...有错误!';
      Lines.Add(MessageWord);
      ShowP;
      LB_Err.Items.Add(MessageWord);
      LB_Err.Refresh;      
      ErrNum.Add('5');
    end;

    MessageWord:='⑥当前库存与出入库单据...';
    Lines.Add(MessageWord);
    Repaint;
    if Check06 then
    begin
      FlashP;
      MessageWord:='⑥当前库存与出入库单据...OK!';
      Lines.Add(MessageWord);
    end
    else
    begin
      FlashP;
      MessageWord:='⑥当前库存与出入库单据...有错误!';
      Lines.Add(MessageWord);
      ShowP;
      LB_Err.Items.Add(MessageWord);
      LB_Err.Refresh;      
      ErrNum.Add('6');
    end;

    MessageWord:='⑦生产领料单据与领料清单...';
    Lines.Add(MessageWord);
    Repaint;
    if Check07 then
    begin
      FlashP;
      MessageWord:='⑦生产领料单据与领料清单...OK!';
      Lines.Add(MessageWord);
    end
    else
    begin
      FlashP;
      MessageWord:='⑦生产领料单据与领料清单...有错误!';
      Lines.Add(MessageWord);
      ShowP;
      LB_Err.Items.Add(MessageWord);
      LB_Err.Refresh;      
      ErrNum.Add('7');
    end;
    Lines.Add('检查完成!(双击错误列表查看明细)');
    with REdt_Detail do
    begin
      Book:=FindText('检查完成!(双击错误列表查看明细)',0,Length(REdt_Detail.text),[stMatchCase]);
      SelStArt := Book;
      SelLength := Length('检查完成!(双击错误列表查看明细)');
      SelAttributes.Size:=10;
      SelAttributes.Color := ClBlack;
    end;

  end;
end;

procedure TFrm_Inv_Consistency.ShowP;
var
  Book:integer;
begin
  with REdt_Detail do
  begin
    Book:=FindText(MessageWord,0,Length(REdt_Detail.text),[stMatchCase]);
    SelStArt := Book;
    SelLength := Length(MessageWord);
    SelAttributes.Size:=10;
    SelAttributes.Color := Clred;
  end;
  BitBtn4.enabled:=True;
end;

procedure TFrm_Inv_Consistency.FlashP;
begin
  with REdt_Detail do
  begin
    Lines.Delete(Lines.IndexOf(MessageWord));
  end;
end;

function TFrm_Inv_Consistency.Check02: Boolean;
begin
  Sql_Txt02:='select a.Itemflag 物料标识,'+
                   ' a.whCode+'' ''+w.whName 仓库标识,'+
                   ' a.onCheckInv 待检库存,'+
                   ' a.oncheckqty 单据数量,'+
                   ' a.onCheckInv-a.oncheckqty 差异 '+

⌨️ 快捷键说明

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