📄 inv_consistency.pas
字号:
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 + -