📄 matout.~pas
字号:
for j := 0 to FColCnt-1 do Item.Subitems.Add('');
lcP^.ITEM := Item;
Item.Data := lcP;
MakeItemCaption(Item);
end;
finally
FOnMakeItemCaption := False;
ListViewMatIN.Items.EndUpdate;
if ListViewMatIN.Items.Count > 0 then ListViewMatIN.TopItem.Selected := True;
Screen.Cursor := crDefault;
end;
end;
function TfrmMatOUT.SetListColumn(sListView: TGradLineListView): Integer;
var
Column: TListColumn;
begin
sListView.Columns.Clear;
FColCnt := 0;
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 7;
Column.Caption := GetMultiLingalMsg(90027, 'Stock ID');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := GetMultiLingalMsg(90063, 'Mold Code');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := GetMultiLingalMsg(90028, 'Material Code');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := GetMultiLingalMsg(90029, 'Material Name');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := GetMultiLingalMsg(90081, 'Out Guage');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 6;
Column.Caption := GetMultiLingalMsg(90032, 'Unit Name');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 7;
Column.Caption := GetMultiLingalMsg(90033, 'Unit Price');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 7;
Column.Caption := GetMultiLingalMsg(90082, 'out Quantity');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 9;
Column.Caption := GetMultiLingalMsg(90083, 'Out Amount');
Inc(FColCnt);
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := GetMultiLingalMsg(90084, 'Use Guage');
Inc(FColCnt);
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 7;
Column.Caption := GetMultiLingalMsg(90085, 'Use Quantity');
Inc(FColCnt);
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 9;
Column.Caption := GetMultiLingalMsg(90086, 'Use Amount');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 8;
Column.Caption := GetMultiLingalMsg(90057, 'Suplier');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 8;
Column.Caption := GetMultiLingalMsg(90058, 'Maker');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 10;
Column.Caption := GetMultiLingalMsg(90064, 'Part Code');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 8;
Column.Caption := GetMultiLingalMsg(90052, 'Out Date');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := GetMultiLingalMsg(90239, 'Out Paper');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 12;
Column.Caption := GetMultiLingalMsg(90236,'Issure Paper');
Inc(FColCnt);
//--
Column := sListView.Columns.Add;
Column.Width := sListView.Font.Size * 16;
Column.Caption := GetMultiLingalMsg(90065, 'Remarks');
Inc(FColCnt);
end;
procedure TfrmMatOUT.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: PINVENTORY;
begin
if Item = nil then Exit;
if Item.Data = nil then Exit;
lcP := Item.Data;
Item.ImageIndex := lcP^.KIND;
Item.Caption := lcp^.STK_ID;
Item.SubItems[00] := dm_inventory.GetOrderNo(lcp^.ODR_RID);
Item.SubItems[01] := dm_inventory.GetMaterialCode(lcP^.MAT_RID);
Item.SubItems[02] := lcP^.MAT_NM;
Item.SubItems[03] := dm_inventory.Get_GuageName(lcP^.MAT_RID,lcp^.GUAGE_ID);
Item.SubItems[04] := dm_inventory.GetUnitTypeName(lcP^.MAT_RID);
Item.SubItems[05] := FormatFloat('#,##0.00',abs(RoundTo(lcP^.UNT_PRICE,-2)));
Item.SubItems[06] := FormatFloat('#,##0.00',abs(RoundTo(lcP^.QUANTITY,-2)));
Item.SubItems[07] := FormatFloat('#,##0.00',abs(UserDecimalDefine(lcP^.TTL_PRICE,-2)));
Item.SubItems[08] := lcp^.USE_GUAGE;
Item.SubItems[09] := FormatFloat('#,##0.00',abs(RoundTo(lcP^.USE_QUANTITY,-2)));
Item.SubItems[10] := FormatFloat('#,##0.00',abs(RoundTo(lcP^.USE_AMOUNT,-2)));
Item.SubItems[11] := dm_inventory.GetShigenName(lcp^.SUP_CD);
Item.SubItems[12] := dm_inventory.GetShigenName(lcp^.MAK_CD);
Item.SubItems[13] := dm_inventory.GetPartCode(lcp^.ODR_RID,lcp^.PAT_RID);
Item.SubItems[14] := formatDatetime('yy/mm/dd',lcp^.DATE);
Item.SubItems[15] := lcp^.PAPERNO;
Item.SubItems[16] := lcp^.ISS_PAPERNO;
Item.SubItems[17] := lcp^.NOTE;
end;
procedure TfrmMatOUT.rdoGroupByClick(Sender: TObject);
begin
Read_IOChangedList;
end;
procedure TfrmMatOUT.tabsGroupChange(Sender: TObject);
begin
inherited;
dm_Inventory.Read_IOHistory(FMatIOList,trim(edtStkID.Text),1,sFDate,sEDate);
Set_QueryedList(FQueryList);
Set_QryList_FromTabs(TabsGroup.TabIndex, FQueryList);
SetListView;
if ListViewMatIN.Items.Count>0 then begin
ListViewMatIN.ToPItem.Selected := False;
ListViewMatIN.ToPItem.Selected := True;
end;
end;
procedure TfrmMatOUT.cbxStkChange(Sender: TObject);
begin
inherited;
edtStkID.Text := Get_PosBeforeStr(cbxStk.Text,'_');
edtStkName.Text := Get_PosAfterStr(cbxStk.Text,'_');
edtStkID.SetFocus;
end;
procedure TfrmMatOUT.cbxOutGuageDropDown(Sender: TObject);
begin
inherited;
dm_Inventory.Read_GuageInfoToCbx(edtMatCode,cbxOutGuage);
end;
procedure TfrmMatOUT.cbxOutGuageChange(Sender: TObject);
var lcp: PInventory;
View: TInventory;
begin
inherited;
lcp := Selected;
edtIssGuageID.Value := StrToInt(Get_PosBeforeStr(cbxOutGuage.Text,'_'));
edtIssGuageName.Text := Get_PosAfterStr(cbxOutGuage.Text,'_');
edtIssGuageID.SetFocus;
lcp^.GUAGE_ID := StrToIntDef(edtIssGuageID.Text,0);
SetUpdateList(lcP^.REC_ID, @lcP^.GUAGE_ID, LongInt(@View.GUAGE_ID)-LongInt(@View), 0, lcP);
strPCopy(lcp^.USE_GUAGE,dm_Inventory.Get_GuageName(lcp^.MAT_RID,Trunc(edtIssGuageID.Value)));
SetUpdateList(lcP^.REC_ID, @lcP^.USE_GUAGE, LongInt(@View.USE_GUAGE)-LongInt(@View), 0, lcP);
end;
procedure TfrmMatOUT.cbxUseGuageDropDown(Sender: TObject);
begin
inherited;
dm_Inventory.Read_GuageInfoToCbx2(edtMatCode,cbxUseGuage);
end;
procedure TfrmMatOUT.cbxUseGuageChange(Sender: TObject);
var lcp: PInventory;
View: TInventory;
begin
inherited;
lcp := Selected;
cbxUseGuage.SetFocus;
strPCopy(lcp^.USE_GUAGE, trim(cbxUseGuage.Text));
SetUpdateList(lcP^.REC_ID, @lcP^.USE_GUAGE, LongInt(@View.USE_GUAGE)-LongInt(@View), 0, lcP);
end;
procedure TfrmMatOUT.cbxMatOutDropDown(Sender: TObject);
begin
inherited;
dm_inventory.Read_IOIDInfo_ToCbx(cbxMatOut,2);
end;
procedure TfrmMatOUT.cbxMatOutChange(Sender: TObject);
var lcp: PInventory;
View: TInventory;
begin
inherited;
lcp := Selected;
edtMatOutID.Text := Get_PosBeforeStr(cbxMatOut.Text,'_');
edtOutIDName.Text := Get_PosAfterStr(cbxMatOut.Text,'_');
edtMatOutID.SetFocus;
strPCopy(lcp^.INOUT_ID,trim(edtMatOutID.Text));
SetUpdateList(lcP^.REC_ID, @lcP^.INOUT_ID, LongInt(@View.INOUT_ID)-LongInt(@View), 0, lcP);
end;
procedure TfrmMatOUT.cbxRecDropDown(Sender: TObject);
begin
inherited;
dm_inventory.Read_EmpInfoToCbx(cbxRec);
end;
procedure TfrmMatOUT.cbxRecChange(Sender: TObject);
var lcp: PInventory;
View: TInventory;
begin
inherited;
lcp := Selected;
edtRecEmpID.Text := Get_PosBeforeStr(cbxRec.Text,'_');
edtRecEmpName.Text := Get_PosAfterStr(cbxRec.Text,'_');
edtRecEmpID.SetFocus;
strPCopy(lcp^.RECIEVE_EMPID,trim(edtRecEmpID.Text));
SetUpdateList(lcP^.REC_ID, @lcP^.RECIEVE_EMPID, LongInt(@View.RECIEVE_EMPID)-LongInt(@View), 0, lcP);
end;
procedure TfrmMatOUT.cbxInputDropDown(Sender: TObject);
begin
inherited;
dm_inventory.Read_EmpInfoToCbx(cbxInput);
end;
procedure TfrmMatOUT.cbxInputChange(Sender: TObject);
var lcp: PInventory;
View: TInventory;
begin
inherited;
lcp := Selected;
edtInputEmpID.Text := Get_PosBeforeStr(cbxInput.Text,'_');
edtInputEmpName.Text := Get_PosAfterStr(cbxInput.Text,'_');
edtInputEmpID.SetFocus;
strPCopy(lcp^.INPUT_EMPID,trim(edtInputEmpID.Text));
SetUpdateList(lcP^.REC_ID, @lcP^.INPUT_EMPID, LongInt(@View.INPUT_EMPID)-LongInt(@View), 0, lcP);
end;
//////////////////////////////////////////////////////////////
function TfrmMatOUT.SetInventoryCnt(rec_id,mat_rec_id,guage_id: LongInt; stk_id: string; DT: TDateTime; var Cnt: Double): Double;
var List: TList;
i: Integer;
lcP: PBalance;
begin
Screen.Cursor := crSqlWait;
Cnt := 0;
Result := 0;
List := TList.Create;
dm_inventory.ReadInventory3(FList, mat_rec_id, stk_id);
SetBalanceList(rec_id, List, DT);
for i:=0 to List.Count-1 do begin
lcP := List[i];
if ((lcP^.CODE = mat_rec_id) and (lcp^.GUAGE_ID=guage_id) and(lcp^.STK_ID=stk_id)) then begin
Cnt := lcP^.QUANTITY;
Result := lcP^.U_PRICE;
Break;
end;
end;
for i:=0 to List.Count-1 do Dispose(List[i]);
List.Clear;
List.Free;
Screen.Cursor := crDefault;
end;
procedure TfrmMatOUT.SetBalanceList(RID: LongInt; List: TList; DT: TDateTime);
var i, j, UPriceType: Integer;
STS: Boolean;
lcP: PINVENTORY;
lcBalP: PBALANCE;
begin
for i:=0 to List.Count-1 do Dispose(List[i]);
List.Clear;
UPriceType := StrToIntDef(frmMain.IniData.OutPrice, 0);
for i:=0 to FList.Count-1 do begin
lcP := FList[i];
if lcP^.REC_ID = RID then Continue;
if (DT>=strtodatetime(formatDatetime('yy/mm/dd',lcP^.DATE)+' 00:00'))and (lcP^.DATE > 2) then begin
STS := False;
for j:=0 to List.Count-1 do begin
lcBalP := List[j];
if ((lcp^.STK_ID=lcBalP^.STK_ID)and(lcP^.MAT_RID=lcBalP^.CODE)and(lcp^.GUAGE_ID=lcBalP^.GUAGE_ID)) then begin
lcBalP^.QUANTITY := lcBalP^.QUANTITY + lcP^.QUANTITY;
//-- get 4 mode unit_price
if (lcP^.KIND=0)and(UPriceType in [1, 2]) then begin
if UPriceType = 1 then STS := (lcBalP^.DATE < lcP^.DATE)
else STS := (lcBalP^.DATE > lcP^.DATE);
if STS then begin
lcBalP^.Date := lcP^.DATE;
lcBalP^.U_PRICE := lcP^.UNT_PRICE;
end;
end;
lcBalP^.T_PRICE := lcBalP^.T_PRICE + lcP^.TTL_PRICE;
//-- 判断当前存量是否小于安全存量
//lcBalP^.SAFE_QTY := 1;
if lcBalP^.QUANTITY < dm_inventory.Get_MatGuageSafety(lcP^.MAT_RID,lcp^.GUAGE_ID) then
lcBalP^.IS_SAFETY := 0
else
lcBalP^.IS_SAFETY := 1;
STS := True;
Break;
end;
end;
if not(STS) then begin
New(lcBalP);
ZeroMemory(lcBalP, Sizeof(TBALANCE));
lcBalP^.STK_ID := lcp^.STK_ID;
lcBalP^.DATE := lcP^.DATE;
lcBalP^.CODE := lcP^.MAT_RID;
StrPCopy(lcBalP^.NAME, lcP^.MAT_NM);
lcBalP^.GUAGE_ID := lcp^.GUAGE_ID;
str
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -