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

📄 matout.~pas

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