📄 othermatout.~pas
字号:
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 + -