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

📄 invhistory.pas

📁 文件包含程序源原文件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
        //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 + -