📄 invhistory.~pas
字号:
//lcBalP^.SAFE_QTY := 1;
List.Add(lcBalP);
end;
end;
end;
if UPriceType = 0 then
begin
for i:=0 to List.Count-1 do begin
lcBalP := List[i];
if lcBalP^.QUANTITY = 0 then lcBalP^.U_PRICE := 0
else lcBalP^.U_PRICE := lcBalP^.T_PRICE / lcBalP^.QUANTITY;
end;
end;
if UPriceType = 3 then //-- standard Price
begin
for i := 0 to List.Count-1 do begin
lcBalP := List[i];
lcBalP^.U_PRICE := dm_inventory.GetStdUnitPrice(lcBalP^.CODE);
//lcBalP^.T_PRICE := lcBalP^.U_PRICE * lcBalP^.QUANTITY;
end;
end;
end;
///////////////////////////////////////////////////////////////
procedure TfrmInvHistory.MakeItemCaption(Item: TListItem);
var lcP: PINVENTORY;
begin
if Item = nil then Exit;
if Item.Data = nil then Exit;
lcP := Item.Data;
Item.ImageIndex := lcP^.KIND;
case lcP^.KIND of
0: Item.Caption :=GetMultiLingalMsg(90104, 'In');
1: Item.Caption := GetMultiLingalMsg(90105, 'Out');
2: Item.Caption := GetMultiLingalMsg(90098, 'Return');
3: Item.Caption := GetMultiLingalMsg(90099, 'Tune');
4: Item.Caption := GetMultiLingalMsg(90248, 'Balance');
else Item.Caption := '';
end;
Item.SubItems[00] := lcp^.STK_ID;
if lcP^.DATE <= 2 then Item.SubItems[01] := ''
else Item.SubItems[01] := FormatDateTime('yy/mm/dd', lcP^.DATE);
Item.SubItems[02] := dm_inventory.GetOrderNo(lcP^.ODR_RID);
Item.SubItems[03] := dm_inventory.GetMaterialCode(lcP^.MAT_RID);
Item.SubItems[04] := lcP^.MAT_NM;
Item.SubItems[05] := dm_inventory.Get_GuageName(lcp^.MAT_RID,trunc(lcp^.GUAGE_ID));
Item.SubItems[06] := dm_inventory.GetUnitTypeName(lcP^.MAT_RID);
Item.SubItems[07] := FormatFloat('#,##0.00', RoundTo(lcP^.UNT_PRICE,-2));
Item.SubItems[08] := FormatFloat('#,##0.00', Abs(RoundTo(lcP^.QUANTITY,-2)));
Item.SubItems[09] := FormatFloat('#,##0.00', Abs(RoundTo(lcP^.MAK_PRICE,-2)));
Item.SubItems[10] := FormatFloat('#,##0.00', Abs(UserDecimalDefine(lcP^.TTL_PRICE,-2)));
Item.SubItems[11] := lcp^.USE_GUAGE;
if lcp^.KIND = 3 then Item.SubItems[12] := FormatFloat('#,##0.00', RoundTo(lcP^.USE_QUANTITY,-2))
else Item.SubItems[12] := FormatFloat('#,##0.00', Abs(RoundTo(lcP^.USE_QUANTITY,-2)));
Item.SubItems[13] := FormatFloat('#,##0.00', Abs(RoundTo(lcP^.USE_AMOUNT,-2)));
if lcP^.HAT_RID <= 0 then Item.SubItems[14] := ''
else Item.SubItems[14] := Format('%d', [lcP^.HAT_RID]);
Item.SubItems[15] := lcP^.HAT_CODE;
Item.SubItems[16] := dm_inventory.GetPartCode(lcP^.ODR_RID, lcP^.PAT_RID);
Item.SubItems[17] := lcP^.SEQUAL_NO;
Item.SubItems[18] := dm_Inventory.GetShigenName(lcP^.SUP_CD);
Item.SubItems[19] := IntToStr(lcP^.MAK_CD);
Item.SubItems[20] := lcp^.PAPERNO;
case lcp^.KIND of
0: Item.SubItems[21] := dm_inventory.Get_IOIDName(lcP^.INOUT_ID,1);
1: Item.SubItems[21] := dm_inventory.Get_IOIDName(lcP^.INOUT_ID,2);
2: Item.SubItems[21] := dm_inventory.Get_IOIDName(lcP^.INOUT_ID,3);
3: Item.SubItems[21] := dm_inventory.Get_IOIDName(lcP^.INOUT_ID,4);
end;
Item.SubItems[22] := dm_inventory.Get_EmpName(lcp^.recieve_EmpID);
Item.SubItems[23] := dm_inventory.Get_EmpName(lcP^.input_empid);
Item.SubItems[24] := lcP^.invoice_no;
Item.SubItems[25] := lcP^.ISS_PAPERNO;
Item.SubItems[26] := lcP^.NOTE;
end;
procedure TfrmInvHistory.SetNew;
var lcP: PINVENTORY;
Item: TListItem;
i: Integer;
begin
lcP := MakeNewRecord;
lcP^.REC_ID := FNewRecid;
Item := ListView.Items.Add;
for i:=0 to FColumnCount-2 do Item.Subitems.Add('');
lcP^.Item := Item;
Item.Data := lcP;
MakeItemCaption(Item);
SetSelectOne(Item);
FList.Add(lcP);
end;
procedure TfrmInvHistory.SetKomoku(Item:TListItem);
begin
FSelectedItem := nil;
if (Item = nil) or ((Item <> nil) and (Item.Data = nil)) then
SetNull
else begin
SetData(Item.Data);
FSelectedItem := Item;
end;
end;
function TfrmInvHistory.NewErrorCheck:Boolean;
begin
result := true;
end;
procedure TfrmInvHistory.edtDateKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var WDate: TDateTime;
begin
if (Key=VK_RETURN)and(ssShift in Shift)then
if not(dm_inventory.DateErrorCheck(edtDate.Text, WDate)) then begin
Key := 0;
edtStkID.SetFocus;
Exit;
end;
ControlKeyDown(Sender, Key, Shift);
end;
procedure TfrmInvHistory.edtOrderSerialKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var WRID: LongInt;
begin
inherited;
if Key=VK_RETURN then
if edtOrderSerial.Text <>'' then
if not(dm_Inventory.REC_IDProc(3, edtOrderSerial, WRID, -1))then begin
Key := 0;
edtMoldID.SetFocus;
Exit;
end;
ControlKeyDown(Sender, Key, Shift);
end;
procedure TfrmInvHistory.btnFilterClick(Sender: TObject);
var frmIOQry: TfrmIOQry;
i,j: Integer;
lcP: PInventory;
Item: TListItem;
begin
frmIOQry := TfrmIOQry.Create(self);
frmIOQry.ShowModal;
if frmIOQry.ModalResult = 1 then
begin
Screen.Cursor := crHourGlass;
tmpWdate[0] := frmIOQry.FDate;
tmpWdate[1] := frmIOQry.EDate;
dm_inventory.ListFreeMemory(FList);
dm_inventory.Read_IOHistoryQuery(FList,frmIOQry.FDate,frmIOQry.EDate,
frmIOQry.stk_id,frmIOQry.sup_cd,frmIOQry.iss_paperno,
frmIOQry.mat_rec_id,frmIOQry.order_rec_id,
frmIOQry.paperno,frmIOQry.order_code,frmIOQry.iKind);
with ListView.Items do begin
BeginUpdate;
Clear;
EndUpdate;
end;
//--
ListView.Items.BeginUpdate;
try
ListSortKey := 1;
FList.Sort(TListSortCompare(@ListSortCompare));
for i :=0 to FList.Count-1 do
begin
lcP := FList.Items[i];
Item := ListView.Items.Add;
for j :=0 to FColumnCount-2 do Item.Subitems.Add('');
Item.Data := lcP;
MakeItemCaption(Item);
end;
finally
ListView.Items.EndUpdate;
if ListView.Items.Count > 0 then
begin
ListView.TopItem.Selected := True;
ListView.Selected.Selected := true;
end;
stsBarCnt.Panels[0].Text := '符合条件的记录有:'+ IntToStr(ListView.Items.Count)+' 条';
Screen.Cursor := crDefault;
end;
end;
{
if frmIOQry.ModalResult = 1 then
begin
Screen.Cursor := crHourGlass;
tmpWdate[0] := frmIOQry.edtFDate.Date;
tmpWdate[1] := frmIOQry.edtEDate.Date;
dm_inventory.ReadInventory2(True, FList, tmpWdate[0],tmpWdate[1]);
//dm_inventory.ReadInventory(true, FList);
with ListView.Items do begin
BeginUpdate;
Clear;
EndUpdate;
end;
//--
ListView.Items.BeginUpdate;
try
//ListSortKey := frmIOQry.iSortKey;
//FList.Sort(TListSortCompare(@ListSortCompare));
for i :=0 to FList.Count-1 do begin
lcP := FList.Items[i];
if not frmIOQry.Set_QryCondition(lcp) then continue;
Item := ListView.Items.Add;
for j :=0 to FColumnCount-2 do Item.Subitems.Add('');
Item.Data := lcP;
MakeItemCaption(Item);
end;
finally
ListView.Items.EndUpdate;
if ListView.Items.Count > 0 then
begin
ListView.TopItem.Selected := True;
ListView.Selected.Selected := true;
end;
stsBarCnt.Panels[0].Text := '符合条件的记录有:'+ IntToStr(ListView.Items.Count)+' 条';
Screen.Cursor := crDefault;
end;
end; }
end;
procedure TfrmInvHistory.btnReViewClick(Sender: TObject);
begin
inherited;
tmpWdate[0] := strtodatetime('2000/01/01 00:00:00');
tmpWdate[1] := strtodatetime(formatdatetime('yyyy/mm/dd',Now)+' 23:59:59');
ReViewProc;
end;
procedure TfrmInvHistory.btnExitClick(Sender: TObject);
begin
CLOSE;
end;
procedure TfrmInvHistory.ListViewColumnClick(Sender: TObject; Column: TListColumn);
////////////////////////////////////////
function GetKindCode(S: string): Integer;
var
SIn, SOut, SRtn, STun, SBala: string;
begin
SIn := GetMultiLingalMsg(90104, 'In');
SOut := GetMultiLingalMsg(90105, 'Out');
SRtn := GetMultiLingalMsg(90098, 'Return');
STun := GetMultiLingalMsg(90099, 'Tune');
SBala := GetMultiLingalMsg(90248,'Balance');
if S = SIn then Result := 0
else if S = SOut then Result := 1
else if S = SRtn then Result := 2
else if S = STun then Result := 3
else if S = SBala then Result := 4
else Result := -1;
end;
//-- StrToFloat
function StrToFloatEx(S: string): Double;
begin
S := StringReplace(S, ',', '', [rfReplaceAll]);
S := StringReplace(S, '\', '', [rfReplaceAll]);
try Result := Abs(StrToFloat(S));
except Result := 0;
end;
end;
var WKRID: LongInt;
SelNo: Integer;
WSB_Pos: Integer;
begin
if ListView.Items.Count = 0 then Exit;
//--
WKRID := -1;
if ListView.Selected <> nil then
WKRID := PINVENTORY(ListView.Selected.Data)^.REC_ID; //PSHIZAI(ListView.Selected.Data)^.REC_ID;
WSB_Pos := GetScrollPos(ListView.Handle, SB_HORZ);
//--
ListSortKey := Column.Index + 1;
with ListView do
case ListSortKey of
1: if GetKindCode(Items[0].Caption) <
GetKindCode(Items[Items.Count-1].Caption) then
ListSortKey := ListSortKey * -1;
9..11: //--
if StrToFloatEx(Items[0].SubItems[ListSortKey-2]) <
StrToFloatEx(Items[Items.Count-1].SubItems[ListSortKey-2]) then
ListSortKey := ListSortKey * -1;
else if Items[0].SubItems[ListSortKey-2] <
Items[Items.Count-1].SubItems[ListSortKey-2] then
ListSortKey := ListSortKey * -1;
end;
//--
FList.Sort(TListSortCompare(@ListSortCompare));
ListView.Selected := nil;
SelNo := SetListView(0, WKRID);
if WKRID < 0 then SelNo := 0;
ListView.Selected := ListView.Items[SelNo];
ListView.Selected.MakeVisible(false);
ListView.Scroll(WSB_Pos, 0);
SetData(ListView.Items.Item[SelNo].Data);
end;
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
procedure TfrmInvHistory.btnReturnGoodsClick(Sender: TObject);
var ReGoods: Double;
inputEmp,rtncause,rtnTid: string;
lcp: PInventory;
Item: TListItem;
begin
if frmMain.IniData.isCheckQty then begin
MessageDlg(GetMultiLingalMsg(90254,'Now is Checked Status...this Funtion None Use!'),mtError,[mbOK],0);
Exit;
end
else begin
if not(ListSelCheck) then Exit;
ReGoods := 0;
Item := ListView.Selected;
lcp := ListView.Selected.Data;
if ((lcp = nil) or (Item.Data =nil)) then begin
MessageDlg('Please selected One Record!',mtError,[mbOK],0);
SetNull;
Exit;
end
else begin
//////////////////////////////////////////////////////////////
if ((lcp^.IS_CLOSE=1)or(lcp^.IS_ACCOUNT=1)) then
begin
MessageDlg('该入库记录已经月结或发票已结算!',mtError,[mbOK],0);
Exit;
end;
with TfrmEdit.Create(Self) do begin
DlgMode := 0;
Caption := GetMultiLingalMsg(90205, 'Return Manager');
lblMsg.Caption := GetMultiLingalMsg(90206, 'Please Input Return Information');
edtStkID.Text := lcp^.STK_ID;
edtStkName.Text := dm_Inventory.GetStockName(trim(edtStkID.Text));
edtDate.Text := FormatDatetime('yy/mm/dd',lcp^.DATE);
edtPaperNo.Text := lcp^.PAPERNO;
edtCode.Text := dm_inventory.GetMaterialCode(lcp^.MAT_RID);
edtName.Text := dm_inventory.GetMaterialName(lcp^.MAT_RID);
edtIssGuageID.Value := lcp^.GUAGE_ID;
edtIssGuageName.Text := dm_inventory.Get_GuageName(lcp^.MAT_RID,lcp^.GUAGE_ID);
edtUPrice.Value := RoundTo(lcp^.UNT_PRICE,-2);
edtQuantity.Value := RoundTo(lcp^.QUANTITY,-2);
lblUType.Caption := dm_inventory.GetUnitTypeName(lcp^.MAT_RID);
lblTPrice.Caption := FormatFloat('#,##0.00',UserDecimalDefine(lcp^.TTL_PRICE,-2));
edtSuplierCode.Value := lcp^.SUP_CD;
lblSupplierNM.Caption := dm_inventory.GetShigenName(lcp^.SUP_CD);
edtMakerCode.Value := lcp^.MAK_CD;
lblMakerNM.Caption := dm_inventory.GetShigenName(lcp^.MAK_CD);
if lcp^.HAT_RID = 0 then edtOrderSerial.Text
else edtOrderSerial.Text := IntToStr(lcp^.HAT_RID
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -