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

📄 othermatout.pas

📁 文件包含程序源原文件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    iBool: Boolean;
begin
  inherited;
  if OnTabChange then Exit;
  if Selected = nil then Exit;
  lcP := Selected;
  try    CtrlList := GetCtrlListTarget(Sender as TWinControl);
  except
    Exit;
  end;

  if CtrlList = nil then Exit;
  if not FOnUndo then SetUndoBuffer(Sender as TWinControl);
  SetUpdateList(lcP^.REC_ID, CtrlList^.Address, CtrlList^.UpdateIndex, 0, lcP);

  //////////////////////////////////
  if Sender = edtStkID then begin
    edtStkName.Text := dm_Inventory.GetStockName(trim(edtStkID.Text));
  end;

  /////////////////////////////////
  if Sender = edtMatOutID then begin
      edtOutIDName.Text := dm_Inventory.Get_IOIDName(trim(edtMatOutID.Text),2);
    end;

    if Sender = edtRecEmpID then begin
      edtRecEmpName.Text := dm_Inventory.Get_EmpName(trim(edtRecEmpID.Text));
    end;
  if Sender = edtInputEmpID then begin
      edtInputEmpName.Text := dm_Inventory.Get_EmpName(trim(edtInputEmpID.Text));
    end;

  /////////////////////////////////
  if Sender = edtMatCode then begin
      WRID             := dm_Inventory.GetMaterialRID(TEdit(Sender).Text);
      edtMatName.Text  := dm_Inventory.GetMaterialName(WRID);
      lblUType.Caption := dm_Inventory.GetUnitTypeName(WRID);
      //////////////////////////
      lcp^.MAT_RID := WRID;
      lcp^.GUAGE_ID := trunc(edtIssGuageID.Value);
      edtIssGuageName.Text := dm_Inventory.Get_GuageName(WRID,Trunc(edtIssGuageID.Value));
      SetUpdateList(lcP^.REC_ID, @lcP^.GUAGE_ID, LongInt(@View.GUAGE_ID)-LongInt(@View), 0, lcP);

      strPCopy(lcp^.USE_GUAGE, dm_Inventory.Get_GuageName(WRID,Trunc(edtIssGuageID.Value)));
      SetUpdateList(lcP^.REC_ID, @lcP^.USE_GUAGE, LongInt(@View.USE_GUAGE)-LongInt(@View), 0, lcP);
      SetTabCaption(lcP);
    end;

  /////////////////////////////////
  if Sender = edtIssGuageID then begin
    edtIssGuageName.Text := dm_Inventory.Get_GuageName(lcp^.MAT_RID,Trunc(edtIssGuageID.Value));
    WRID                 := dm_Inventory.GetMaterialRID(edtMatCode.Text);
    strPCopy(lcp^.USE_GUAGE, dm_Inventory.Get_GuageName(WRID,Trunc(edtIssGuageID.Value)));
    SetUpdateList(lcP^.REC_ID, @lcP^.USE_GUAGE, LongInt(@View.USE_GUAGE)-LongInt(@View), 0, lcP);
  end;

  if (Sender = edtPrice)or(Sender = edtIssWeight) then begin
    lblTPrice.Caption := FormatFloat('#,##0.00', UserDecimalDefine(RoundTo(edtPrice.Value,-2)*RoundTo(edtIssWeight.Value,-2),2));
    lcp^.USE_QUANTITY := edtIssWeight.Value;
    SetUpdateList(lcP^.REC_ID, @lcP^.USE_QUANTITY, LongInt(@View.USE_QUANTITY)-LongInt(@View), 0, lcP);
    lcp^.USE_AMOUNT := (RoundTo(edtPrice.Value,-2) * RoundTo(edtIssWeight.Value,-2));
    SetUpdateList(lcP^.REC_ID, @lcP^.USE_AMOUNT, LongInt(@View.USE_AMOUNT)-LongInt(@View), 0, lcP);
  end;


  if Sender = edtSuplierCode then
    lblSupplierNM.Text := dm_Inventory.GetShigenName(Trunc(edtSuplierCode.Value));

  if Sender = edtMakerCode then
    lblMakerNM.Text := dm_Inventory.GetShigenName(Trunc(edtMakerCode.Value));
  /////////////////////////////////
end;

procedure TfrmOtherMatOut.ControlExit(Sender: TObject);
var CtrlList: PCONTROL_LIST;
    lcP: Pointer;
begin
  inherited;
  if FExitSkip then Exit;
  if Selected = nil then Exit;
  lcP := Selected;
  try
    CtrlList := GetCtrlListTarget(Sender as TWinControl);
  except
    Exit;
  end;

  if (CtrlList = nil)or((CtrlList<>nil)and(CtrlList^.Address=nil)) then Exit;
  if not ReturnValueToVariable(lcP, CtrlList, True) then
  begin
    ReturnValueFromTag(CtrlList);
    try
      CtrlList^.Target.SetFocus;
    except
      Exit;
    end;
  end;
end;

procedure TfrmOtherMatOut.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;
      edtNote.SetFocus;
      Exit;
    end;
  ControlKeyDown(Sender, Key, Shift);
end;

procedure TfrmOtherMatOut.edtNoteKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var WK: Word;
begin
  WK := Key;
  ControlKeyDown(Sender, Key, Shift);
  if (WK=VK_RETURN)and not(ssShift in Shift) then
    if ckbNew.Checked then begin
      FExitSkip := True;
      try
        btnNewClick(Sender);
      finally
        FExitSkip := False;
      end;
    end;
end;

procedure TfrmOtherMatOut.TabControlChanging(Sender: TObject;
  var AllowChange: Boolean);
begin
  inherited;
  AllowChange := True;
  if ErrorCheck(Selected) <> 0 then AllowChange := False
  else UpdateCheck;
end;

{**********************************************************************************}
{**********************************************************************************}
function  TfrmOtherMatOut.ReturnValueToVariable(lcP: PINVENTORY; CtrlList: PCONTROL_LIST; Msg: Boolean): Boolean;

  function SetUPrice(iMode: Integer): Boolean;
  var View: TINVENTORY;
      DBL: Double;
  begin
    Result := True;
    ////////////////////////////
    if (iMode in[0,1,2,3]) then
    begin        //-- 0:动态平均;1:先进后出;2:先进先出;3:标准单价
      DBL := Abs(SetInventoryCnt(lcP^.REC_ID,lcP^.MAT_RID,lcp^.GUAGE_ID,lcp^.STK_ID,lcP^.DATE,InvCnt));
    end
    else if iMode=4 then begin   //-- 4: 入库时的订单价格; 5: 手动输入单价
      DBL := dm_Inventory.GetHatNoUnitPrice(lcp^.HAT_RID);
    end
    else if iMode=5 then begin
      DBL  := edtPrice.Value;
    end;

    lblCurrQty.Caption := FormatFloat('#,##0.00',RoundTo(InvCnt,-2));
    edtPrice.Value := DBL;
    if DBL = lcP^.UNT_PRICE then begin
      Result := False;
      Exit;
    end;
    lcP^.UNT_PRICE := DBL;
    SetUpdateList(lcP^.REC_ID, @lcP^.UNT_PRICE, LongInt(@View.UNT_PRICE)-LongInt(@View), 0, lcP);
  end;
  //--
  procedure SetTPrice;
  var View: TINVENTORY;
  begin
    SetInventoryCnt(lcP^.REC_ID,lcP^.MAT_RID,lcp^.GUAGE_ID,lcp^.STK_ID,lcP^.DATE,InvCnt);
    lblCurrQty.Caption := FormatFloat('#,##0.00',InvCnt);
    lcP^.TTL_PRICE    := RoundTo(lcP^.UNT_PRICE,-2) * RoundTo(lcP^.QUANTITY,-2)+RoundTo(lcp^.MAK_PRICE,-2);
    lcp^.USE_QUANTITY := lcp^.QUANTITY;
    lblTPrice.Caption := FormatFloat('#,##0.00', Abs(UserDecimalDefine(lcP^.TTL_PRICE,2)));
    SetUpdateList(lcP^.REC_ID, @lcP^.TTL_PRICE, LongInt(@View.TTL_PRICE)-LongInt(@View), 0, lcP);

    lcp^.USE_AMOUNT      := RoundTo(lcp^.UNT_PRICE,-2) * RoundTo(lcp^.USE_QUANTITY,-2)+RoundTo(lcp^.MAK_PRICE,-2);
    SetUpdateList(lcP^.REC_ID, @lcP^.USE_QUANTITY, LongInt(@View.USE_QUANTITY)-LongInt(@View), 0, lcP);
    SetUpdateList(lcP^.REC_ID, @lcP^.USE_AMOUNT, LongInt(@View.USE_AMOUNT)-LongInt(@View), 0, lcP);
  end;

var View: TINVENTORY;
    WDate: TDateTime;
    WRID:  LongInt;
    WCD:   Integer;
    WTmpStr: string;
begin
  Result := True;
  //-- Get Field Text
  if CtrlList^.UpdateIndex = Longint(@View.STK_ID)-Longint(@View) then
  begin
    WTmpStr := (CtrlList^.Target as TCustomEdit).Text;
    Result := dm_Inventory.Get_StockCheck(WTmpStr,edtStkName);
    if not(Result) then Exit;
    StrPCopy(PChar(CtrlList^.Address), WTmpStr);
    if SetUPrice(StrToIntDef(edtUPID.Text,-1)) then SetTPrice;
  end else
  if CtrlList^.UpdateIndex = Longint(@View.ISS_PAPERNO)-Longint(@View) then
    StrPCopy(PChar(CtrlList^.Address), (CtrlList^.Target as TCustomEdit).Text)
  else
  if CtrlList^.UpdateIndex = Longint(@View.Inout_id)-Longint(@View) then
  begin
    WTmpStr := (CtrlList^.Target as TCustomEdit).Text;
    Result := dm_Inventory.InOut_IDProc(WTmpStr,2, edtOutIDName);
    if not(Result) then Exit;
    StrPCopy(PChar(CtrlList^.Address), WTmpStr)
  end else
  if CtrlList^.UpdateIndex=Longint(@View.RECIEVE_EMPID)-Longint(@View) then
  begin
    WTmpStr := (CtrlList^.Target as TCustomEdit).Text;
    Result := dm_Inventory.Emp_IDProc(WTmpStr, edtRecEmpName);
    if not(Result) then Exit;
    StrPCopy(PChar(CtrlList^.Address), WTmpStr)
  end else
  if CtrlList^.UpdateIndex=Longint(@View.input_empid)-Longint(@View) then
  begin
    WTmpStr := (CtrlList^.Target as TCustomEdit).Text;
    Result := dm_Inventory.Emp_IDProc(WTmpStr, edtInputEmpName);
    if not(Result) then Exit;
    StrPCopy(PChar(CtrlList^.Address), WTmpStr)
  end else
  if CtrlList^.UpdateIndex = Longint(@View.PAPERNO)-Longint(@View) then
    StrPCopy(PChar(CtrlList^.Address), (CtrlList^.Target as TCustomEdit).Text)
  else
  if CtrlList^.UpdateIndex = Longint(@View.DATE)-Longint(@View) then
  begin
    Result := dm_Inventory.DateProc((CtrlList^.Target as TEdit), WDate);
    if not(Result) then Exit;
    TDateTime(CtrlList^.Address^) := WDate;
    if SetUPrice(StrToIntDef(edtUPID.Text,-1)) then SetTPrice;
  end else
  if CtrlList^.UpdateIndex = Longint(@View.MAT_RID)-Longint(@View) then begin
    Result := dm_Inventory.REC_IDProc(0, (CtrlList^.Target as TEdit), WRID, -1);
    if not(Result) then Exit;
    LongInt(CtrlList^.Address^) := WRID;
    MatRID := WRID;
    SetTabCaption(lcP);

    if SetUPrice(StrToIntDef(edtUPID.Text,-1)) then SetTPrice;
    edtMatName.Text     := dm_Inventory.GetMaterialName(WRID);
    lblUType.Caption    := dm_Inventory.GetUnitTypeName(WRID);
    if StrComp(lcP^.MAT_NM, PChar(edtMatName.Text)) = 0 then Exit;
    StrPCopy(lcP^.MAT_NM, edtMatName.Text);
    SetUpdateList(lcP^.REC_ID, @lcP^.MAT_NM, LongInt(@View.MAT_NM)-LongInt(@View), 0, lcP);
  end else
  if CtrlList^.UpdateIndex = Longint(@View.GUAGE_ID)-Longint(@View) then begin
    WCD := Trunc((CtrlList^.Target as TEx2NumEdit).Value);
    MatRID := dm_inventory.GetMaterialRID(trim(edtMatCode.Text));
    Result := dm_Inventory.Get_GuageCheck(MatRID,WCD, edtIssGuageName);
    if not(Result) then Exit;
    LongInt(CtrlList^.Address^) := WCD;

    SetInventoryCnt(lcP^.REC_ID,lcP^.MAT_RID,lcp^.GUAGE_ID,lcp^.STK_ID,lcP^.DATE,InvCnt);
    lblCurrQty.Caption := FormatFloat('#,##0.00',InvCnt);

    if SetUPrice(StrToIntDef(edtUPID.Text,-1)) then SetTPrice;
  end else
  if CtrlList^.UpdateIndex = Longint(@View.UNT_PRICE)-Longint(@View) then
    SetUPrice(StrToIntDef(edtUPID.Text,-1))
  else
  if CtrlList^.UpdateIndex = Longint(@View.QUANTITY)-Longint(@View) then begin
    Double(CtrlList^.Address^):=(CtrlList^.Target as TEx2NumEdit).Value * -1;
    SetTPrice;
  end
  else
  if CtrlList^.UpdateIndex = Longint(@View.USE_GUAGE)-Longint(@View) then begin
    StrPCopy(PChar(CtrlList^.Address), (CtrlList^.Target as TCustomEdit).Text)
  end else
  if CtrlList^.UpdateIndex = Longint(@View.USE_QUANTITY)-Longint(@View) then begin
    Double(CtrlList^.Address^):=(CtrlList^.Target as TEx2NumEdit).Value * -1;
    SetTPrice;
  end
  else
  if CtrlList^.UpdateIndex=Longint(@View.ODR_RID)-Longint(@View) then begin
    Result := dm_Inventory.REC_IDProc(1, (CtrlList^.Target as TEdit), WRID, -1);
    if not(Result) then Exit;
    LongInt(CtrlList^.Address^) := WRID;
  end else
  if CtrlList^.UpdateIndex=Longint(@View.PAT_RID)-Longint(@View) then begin
      Result := dm_Inventory.REC_IDProc(2, (CtrlList^.Target as TEdit), WRID, lcP^.ODR_RID);
      if not(Result) then Exit;
      LongInt(CtrlList^.Address^) := WRID;
  end else //--
  if CtrlList^.UpdateIndex = Longint(@View.SEQUAL_NO)-Longint(@View) then
    StrPCopy(PChar(CtrlList^.Address), (CtrlList^.Target as TCustomEdit).Text)
  else
  if CtrlList^.UpdateIndex=Longint(@View.HAT_RID)-Longint(@View) then begin
      Result := dm_Inventory.REC_IDProc(3, (CtrlList^.Target as TEdit), WRID, -1);
      if not(Result) then Exit;
      LongInt(CtrlList^.Address^) := WRID;
  end else
  if CtrlList^.UpdateIndex = Longint(@View.HAT_CODE)-Longint(@View) then
    StrPCopy(PChar(CtrlList^.Address), (CtrlList^.Target as TCustomEdit).Text)
  else
  if CtrlList^.UpdateIndex = Longint(@View.SUP_CD)-Longint(@View) then begin
    WCD := Trunc((CtrlList^.Target as TEx2NumEdit).Value);
    Result := dm_Inventory.MasterProc(WCD, lblSupplierNM);
    if not(Result) then Exit;
    LongInt(CtrlList^.Address^) := WCD;
  end else
  if CtrlList^.UpdateIndex = Longint(@View.MAK_CD)-Longint(@View) then begin
    WCD := Trunc((CtrlList^.Target as TEx2NumEdit).Value);
    Result := dm_Inventory.MasterProc(WCD, lblMakerNM);
    if not(Result) then Exit;
    LongInt(CtrlList^.Address^) := WCD;
  end else
  if CtrlList^.UpdateIndex = Longint(@View.MAK_PRICE)-Longint(@View) then begin
    Double(CtrlList^.Address^):=(CtrlList^.Target as TEx2NumEdit).Value*-1;
    SetTPrice;
  end
  else
  if CtrlList^.UpdateIndex = Longint(@View.NOTE)-Longint(@View) then
    StrPCopy(PChar(CtrlList^.Address), (CtrlList^.Target as TCustomEdit).Text);
  ///////////////////////////////////////////////////////////////////
end;

procedure TfrmOtherMatOut.SetData(Item: Pointer);
var lcP: PINVENTORY;
begin
  lcP := Item;
  Selected := Item;

  edtStkID.Text         := lcp^.STK_ID;
  edtStkName.Text       := dm_Inventory.GetStockName(trim(edtStkID.Text));
  edtIssPaperNO.Text    := lcp^.ISS_PAPERNO;
  edtMatOutID.Text      := lcp^.Inout_ID;
  edtOutIDName.Text     := dm_Inventory.Get_IOIDName(trim(edtMatOutID.Text),2);
  edtRecEmpID.Text      := lcp^.RECIEVE_EMPID;
  edtRecEmpName.Text    := dm_Inventory.Get_EmpName(trim(edtRecEmpID.Text));
  edtInputEmpID.Text    := lcp^.input_empid;
  edtInputEmpName.Text  := dm_Inventory.Get_EmpName(trim(edtInputEmpID.Text));
  edtPaperNo.Text       := lcp^.PaperNo;

  if (lcP^.DATE<=2) then
    edtDate.Text        := FormatDatetime('yy/mm/dd',Now)
  else
    edtDate.Text        := FormatDateTime('yy/mm/dd', lcP^.DATE);

  edtMatCode.Text       := dm_Inventory.GetMaterialCode(lcP^.MAT_RID);
  edtMatName.Text       := lcP^.MAT_NM;
  edtIssGuageID.Value   := lcp^.GUAGE_ID;
  edtIssGuageName.Text  := dm_Inventory.Get_GuageName(lcp^.MAT_RID,lcp^.GUAGE_ID);
  edtPrice.Value        := RoundTo(lcP^.UNT_PRICE,-2);
  edtIssWeight.Value    := abs(RoundTo(lcP^.QUANTITY,-2));
  lblUType.Caption      := dm_Inventory.GetUnitTypeName(lcP^.MAT_RID);
  lblTPrice.Caption     := FormatFloat('#,##0.00', abs(UserDecimalDefine(lcP^.TTL_PRICE,2)));

  edtMoldID.Text      := dm_Inventory.GetOrderNo(lcP^.ODR_RID);
  edtPartID.Text      := dm_Inventory.GetPartCode(lcP^.ODR_RID, lcP^.PAT_RID);
  edtSequalNo.Text    := lcp^.SEQUAL_NO;
  if lcP^.HAT_RID <= 0 then edtOrderSerial.Text := ''
  else edtOrderSerial.Text  := Format('%d', [lcP^.HAT_RID]);
  edtHatCode.Text       := lcp^.HAT_CODE;
  edtSuplierCode.Value  := lcP^.SUP_CD;
  lblSupplierNM.Text    := dm_Inventory.GetShigenName(lcP^.SUP_CD);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -