📄 invbomcheck.pas
字号:
ListViewBomInfo.Items.BeginUpdate;
//FQueryList.Sort(TListSortCompare(@ListSortCompare));
FOnMakeItemCaption := True;
try
for i := 0 to FQueryList.Count-1 do begin
lcP := FQueryList.Items[i];
Item := ListViewBomInfo.Items.Add;
for j := 0 to FColCnt-1 do Item.Subitems.Add('');
lcP^.ITEM := Item;
Item.Data := lcP;
MakeItemCaption(Item);
end;
finally
FOnMakeItemCaption := False;
ListViewBomInfo.Items.EndUpdate;
if ListViewBomInfo.Items.Count > 0 then ListViewBomInfo.TopItem.Selected := True;
Screen.Cursor := crDefault;
end;
end;
function TfrmBomCheck.SetListColumn(sListView: TListView): Integer;
var
Column: TListColumn;
begin
sListView.Columns.Clear;
FColCnt := 0;
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := 'SerialNum';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := 'Mold ID';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := 'Part ID/NO';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := 'Material Code';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := 'Material Name';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 8;
Column.Caption := 'Material';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := 'Standard';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 6;
Column.Caption := 'Unit';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 8;
Column.Caption := 'Quantity';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 8;
Column.Caption := 'Require Date';
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := 'Notes';
Inc(FColCnt);
end;
procedure TfrmBomCheck.MakeItemCaption(Item: TListItem);
//-- Init int value and '' to 0 value
function IntToStrNull(INum: Integer): string;
begin
if INum = 0 then Result := ''
else Result := IntToStr(INum);
end;
var lcP: PBomCheckInfo;
begin
if Item = nil then Exit;
if Item.Data = nil then Exit;
lcP := Item.Data;
Item.Caption := intToStr(lcp^.rec_id);
Item.SubItems[00] := dm_inventory.GetOrderNo(lcP^.mold_id);
Item.SubItems[01] := dm_inventory.GetPartCode(lcp^.mold_id,lcp^.part_id);
Item.SubItems[02] := dm_inventory.GetMaterialCode(lcp^.shizai_rec_id);
Item.SubItems[03] := dm_inventory.GetMaterialName(lcp^.shizai_rec_id);
Item.SubItems[04] := strpas(lcp^.Material);
Item.SubItems[05] := lcP^.standard;
Item.SubItems[06] := dm_inventory.GetUnitTypeName(lcp^.shizai_rec_id);
Item.SubItems[07] := formatfloat('#,##0.00',lcp^.quantity);
Item.SubItems[08] := '';//formatdatetime('yy/mm/dd',lcp^.require_date);
Item.SubItems[09] := '';//(lcp^.Notes);
end;
Procedure TfrmBomCheck.DrawSafeStockImage;
var
SExplains: array[0..1] of string;
i, x, y, TextW: Integer;
begin
SExplains[0] := '-->Buy Material';
SExplains[1] := '-->Inventory Out';
with Image1.Canvas do begin
TextW := TextWidth(SExplains[0]);
if TextW < TextWidth(SExplains[1]) then
TextW := TextWidth(SExplains[1]);
Pen.Color := clBlack;
Brush.Color := clBtnFace;
FillRect(ClientRect);
y := 5;
for i:= 0 to 1 do begin
x := i * (ImageList.Width+4 + TextW);
ImageList.Draw(Image1.Canvas, x, y, i);
TextOut(x+17, y+2, SExplains[i]);
end;
end;
end;
procedure TfrmBomCheck.rdoGroupByClick(Sender: TObject);
begin
Read_BomCheckInfoList;
end;
procedure TfrmBomCheck.ListViewBomInfoColumnClick(Sender: TObject;
Column: TListColumn);
begin
//if Column.Index=1 then
end;
procedure TfrmBomCheck.ListViewBomInfoSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
begin
// if ListViewBomInfo.Selected.Checked then ListViewBomInfo.Selected.ImageIndex:=1;
end;
procedure TfrmBomCheck.btnInvQueryClick(Sender: TObject);
function SetQryCheck(lcP: PBALANCE): Boolean;
var i: Integer;
WMtlCode: array[0..1] of string;
begin
Result := True;
//--
if trim(edtMatCode.Text)<>'' then
if not(dm_Inventory.GetMaterialRID(trim(edtMatCode.Text))=lcp^.CODE) then begin
result := false;
exit;
end;
end;
var FCurrInventory: TList;
i,j: integer;
lcp: PBALANCE;
ITEM: TListItem;
begin
FCurrInventory := TList.Create;
FCurrInventory.Clear;
Screen.Cursor := crHourGlass;
with ListViewMRP.Items do begin
BeginUpdate;
Clear;
EndUpdate;
end;
SetMRPListColumn(ListViewMRP, 0);
dm_inventory.Read_CurrInventoryInfo(FCurrInventory);
//--
ListViewMRP.Items.BeginUpdate;
FOnMakeItemCaption := True;
try
for i := 0 to FCurrInventory.Count-1 do begin
lcP := FCurrInventory.Items[i];
if not SetQryCheck(lcp) then continue;
Item := ListViewMRP.Items.Add;
for j :=0 to FColumnCnt-2 do Item.Subitems.Add('');
lcP^.ITEM := Item;
Item.Data := lcP;
MakeMRPItemCaption(Item, 0);
end;
finally
FOnMakeItemCaption := False;
ListViewMRP.Items.EndUpdate;
Screen.Cursor := crDefault;
end;
end;
function TfrmBomCheck.SetMRPListColumn(sListView: TGradLineListView; imode: integer): Integer;
var
Column: TListColumn;
begin
sListView.Columns.Clear;
FColumnCnt := 0;
case imode of
0: begin
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 6;
Column.Caption := '仓库';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := 'Material Code';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := 'Material Name';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 8;
Column.Caption := 'Guage ID';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := 'Guage Name';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 6;
Column.Caption := 'Unit';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := 'Quantity';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := 'PCS';
Inc(FColumnCnt);
end;
1: begin
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := 'Material Code';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := 'Material Name';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := 'Guage ID';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := 'Guage Name';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 6;
Column.Caption := 'Unit';
Inc(FColumnCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := '建议采购量';
Inc(FColumnCnt);
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := '采购时间';
Inc(FColumnCnt);
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := '需求时间';
Inc(FColumnCnt);
end;
end; //-- end case
end;
procedure TfrmBomCheck.MakeMRPItemCaption(Item: TListItem; imode: integer);
function IntToStrNull(INum: Integer): string;
begin
if INum = 0 then Result := ''
else Result := IntToStr(INum);
end;
var lcP: PBALANCE;
lcpA: PMRPInfo;
begin
if Item = nil then Exit;
if Item.Data = nil then Exit;
case imode of
0:begin
lcP := Item.Data;
Item.Caption := (lcp^.STK_ID);
Item.SubItems[00] := dm_inventory.GetMaterialCode(lcp^.CODE);
Item.SubItems[01] := dm_inventory.GetMaterialName(lcp^.CODE);
Item.SubItems[02] := inttostr(lcp^.GUAGE_ID);
Item.SubItems[03] := dm_inventory.Get_GuageName(lcp^.CODE,lcp^.GUAGE_ID);
Item.SubItems[04] := dm_inventory.GetUnitTypeName(lcp^.CODE);
Item.SubItems[05] := formatfloat('###0.00',lcp^.quantity);
Item.SubItems[06] := formatfloat('###0.00',lcp^.QUANTITY);
end;
1:begin
lcPA := Item.Data;
Item.Caption := dm_inventory.GetMaterialCode(lcPA^.mat_rec_id);
Item.SubItems[00] := dm_inventory.GetMaterialName(lcPA^.mat_rec_id);
Item.SubItems[01] := inttostr(lcpA^.guage_id);
Item.SubItems[02] := dm_inventory.Get_GuageName(lcPA^.mat_rec_id,lcpA^.guage_id);
Item.SubItems[03] := dm_inventory.GetUnitTypeName(lcpA^.mat_rec_id);
Item.SubItems[04] := formatfloat('###0.00',lcpA^.need_quantity);
Item.SubItems[05] := formatdatetime('yy/mm/dd',lcpA^.cacu_order_date);
Item.SubItems[06] := formatdatetime('yy/mm/dd',lcpA^.require_date);
end;
end;
end;
////////////////////////////////////////////////////////////////////
procedure TfrmBomCheck.btnMRPClick(Sender: TObject);
var FMRPList: TList;
i,j: integer;
lcp: PMRPInfo;
ITEM: TListItem;
ifix,ibom: integer;
begin
FMRPList := TList.Create;
FMRPList.Clear;
Screen.Cursor := crHourGlass;
with ListViewMRP.Items do begin
BeginUpdate;
Clear;
EndUpdate;
end;
if rdoMRP.ItemIndex=0 then begin
ifix := 0;
ibom := 0;
end
else begin
ifix := 1;
ibom := 1;
end;
SetMRPListColumn(ListViewMRP, 1);
dm_inventory.Read_MRPInfo(FMRPList, ifix, ibom);
//--
ListViewMRP.Items.BeginUpdate;
FOnMakeItemCaption := True;
try
for i := 0 to FMRPList.Count-1 do begin
lcP := FMRPList.Items[i];
Item := ListViewMRP.Items.Add;
for j :=0 to FColumnCnt-2 do Item.Subitems.Add('');
lcP^.ITEM := Item;
Item.Data := lcP;
MakeMRPItemCaption(Item, 1);
end;
finally
FOnMakeItemCaption := False;
ListViewMRP.Items.EndUpdate;
Screen.Cursor := crDefault;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -