📄 udminv.pas
字号:
unit udminv;
interface
uses
SysUtils, Classes, DB, DBClient;
type
TDMINV = class(TDataModule)
CInvMonth: TClientDataSet;
CInventory: TClientDataSet;
CInvInitial: TClientDataSet;
CInOutMas: TClientDataSet;
CInOutSub: TClientDataSet;
CCheckMas: TClientDataSet;
CCheckSub: TClientDataSet;
CInvStat: TClientDataSet;
CCheckMasCheckNo: TStringField;
CCheckMasStatus: TStringField;
CCheckMasCheckDate: TDateTimeField;
CCheckMasStockID: TStringField;
CCheckMasChecker: TStringField;
CCheckMasApprover: TStringField;
CCheckMasApproveDate: TDateTimeField;
CCheckMasConfirmer: TStringField;
CCheckMasConfirmDate: TDateTimeField;
CCheckMasRemark: TStringField;
CCheckMasCreater: TStringField;
CCheckMasCreateDate: TDateTimeField;
CCheckMasUpdater: TStringField;
CCheckMasUpdateDate: TDateTimeField;
CCheckMasQCheckSub: TDataSetField;
CCheckSubCheckNo: TStringField;
CCheckSubPartNo: TStringField;
CCheckSubUnitID: TStringField;
CCheckSubQty: TBCDField;
CCheckSubFactQty: TBCDField;
CCheckSubDifferQty: TBCDField;
CCheckSubCounter: TStringField;
CCheckSubRemark: TStringField;
CMoveMas: TClientDataSet;
CMoveMasMoveNo: TStringField;
CMoveMasMoveDate: TDateTimeField;
CMoveMasStockID1: TStringField;
CMoveMasStockID2: TStringField;
CMoveMasStatus: TStringField;
CMoveMasRemark: TStringField;
CMoveMasConfirmer: TStringField;
CMoveMasConfirmDate: TDateTimeField;
CMoveMasApprover: TStringField;
CMoveMasApproveDate: TDateTimeField;
CMoveMasCreater: TStringField;
CMoveMasCreateDate: TDateTimeField;
CMoveMasUpdater: TStringField;
CMoveMasUpdateDate: TDateTimeField;
CMoveMasQMoveSub: TDataSetField;
CMoveSub: TClientDataSet;
CInventoryStockId: TStringField;
CInventoryStockName: TStringField;
CInventoryCategoryId: TStringField;
CInventoryCategoryName: TStringField;
CInventoryPartNo: TStringField;
CInventoryPartNameE: TStringField;
CInventoryPartNameC: TStringField;
CInventoryModel: TStringField;
CInventoryColor: TStringField;
CInventoryUnitId: TStringField;
CInventoryUnitName: TStringField;
CInventoryPrice: TFloatField;
CInventoryQty: TFloatField;
CInvInitialStockID: TStringField;
CInvInitialPartNo: TStringField;
CInvInitialQty: TFloatField;
CInvInitialPrice: TFloatField;
CInvInitialTotal: TFloatField;
CMoveSubMoveNo: TStringField;
CMoveSubPartNo: TStringField;
CMoveSubUnitID: TStringField;
CMoveSubQty: TBCDField;
CMoveSubRemark: TStringField;
CCheckMasStockName: TStringField;
CCheckSubPartNameC: TStringField;
CCheckSubPartNameE: TStringField;
CCheckSubModel: TStringField;
CCheckSubColor: TStringField;
CCheckSubUnitName: TStringField;
CMoveMasStock1Name: TStringField;
CMoveMasStock2Name: TStringField;
CMoveSubPartNameC: TStringField;
CMoveSubPartNameE: TStringField;
CMoveSubModel: TStringField;
CMoveSubColor: TStringField;
CMoveSubUnitName: TStringField;
CInvInitialStockName: TStringField;
CInvInitialPartNameC: TStringField;
CInvInitialPartNameE: TStringField;
CInvInitialModel: TStringField;
CInvInitialColor: TStringField;
CInvInitialUnitName: TStringField;
CInvInitialCategoryName: TStringField;
CInvInitialUnitID: TStringField;
CVPO: TClientDataSet;
CVPOPoNo: TStringField;
CVPOVenderID: TStringField;
CVPOShortName: TStringField;
CVPOFullName: TStringField;
CVPOOrderDate: TDateTimeField;
CVPOShipDate: TDateTimeField;
CVPORemark: TStringField;
CInOutMasInOutType: TStringField;
CInOutMasInOutNo: TStringField;
CInOutMasStockID: TStringField;
CInOutMasStatus: TStringField;
CInOutMasInOutDate: TDateTimeField;
CInOutMasCurrencyID: TStringField;
CInOutMasRate: TBCDField;
CInOutMasVendorID: TStringField;
CInOutMasPONo: TStringField;
CInOutMasDeptID: TStringField;
CInOutMasHandler: TStringField;
CInOutMasRemark: TStringField;
CInOutMasCreater: TStringField;
CInOutMasCreateDate: TDateTimeField;
CInOutMasUpdater: TStringField;
CInOutMasUpdateDate: TDateTimeField;
CInOutMasApprover: TStringField;
CInOutMasApproveDate: TDateTimeField;
CInOutMasConfirmer: TStringField;
CInOutMasConfirmDate: TDateTimeField;
CInOutMasQInOutSub: TDataSetField;
CInOutMasStockName: TStringField;
CInOutMasDeptName: TStringField;
CInOutMasVendorName: TStringField;
CInOutSubInOutNo: TStringField;
CInOutSubOrderNo: TStringField;
CInOutSubPartNo: TStringField;
CInOutSubUnitID: TStringField;
CInOutSubRemark: TStringField;
CInOutSubPartNameC: TStringField;
CInOutSubPartNameE: TStringField;
CInOutSubModel: TStringField;
CInOutSubColor: TStringField;
CInOutSubUnitName: TStringField;
CInOutSubQty: TFloatField;
CInOutSubPrice: TFloatField;
CInventoryLocked: TBooleanField;
CMoveMasHandler: TStringField;
procedure CCheckSubNewRecord(DataSet: TDataSet);
procedure CInOutSubNewRecord(DataSet: TDataSet);
procedure CInOutMasNewRecord(DataSet: TDataSet);
procedure CMoveSubNewRecord(DataSet: TDataSet);
procedure CCheckMasNewRecord(DataSet: TDataSet);
procedure CMoveMasNewRecord(DataSet: TDataSet);
procedure CInOutMasInOutDateValidate(Sender: TField);
procedure CCheckMasCheckDateValidate(Sender: TField);
procedure CMoveMasMoveDateValidate(Sender: TField);
procedure CInOutSubOrderNoValidate(Sender: TField);
procedure CInOutSubPartNoValidate(Sender: TField);
procedure CCheckSubPartNoValidate(Sender: TField);
procedure CMoveSubPartNoValidate(Sender: TField);
procedure CInvInitialPartNoValidate(Sender: TField);
procedure CInOutSubPartNoChange(Sender: TField);
procedure CCheckSubPartNoChange(Sender: TField);
procedure CMoveSubPartNoChange(Sender: TField);
procedure CInvInitialPartNoChange(Sender: TField);
procedure CInOutMasReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
procedure CCheckMasReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
procedure CMoveMasReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
procedure CCheckSubQtyChange(Sender: TField);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DMINV: TDMINV;
implementation
uses udmbase, udata, SherryLib;
{$R *.dfm}
procedure TDMINV.CCheckSubNewRecord(DataSet: TDataSet);
begin
CCheckSub['CheckNO']:=CCheckMas['CheckNO']
end;
procedure TDMINV.CInOutSubNewRecord(DataSet: TDataSet);
begin
CInOutSub['InOutNo']:=CInOutMas['InOutNo'];
CInOutSub['Price'] := 0;
end;
procedure TDMINV.CInOutMasNewRecord(DataSet: TDataSet);
begin
if Exists('Select 1 from InvInOutMas Having Count(*)>1000') then Warn('演示版本最多只能录入1000张仓库单据!');
CInOutMas['InOutType']:=CInOutMas.Params.ParamValues['@InOutType'];
CInOutMas['Status']:='0';
CInOutMas['InOutDate']:=Date;
DMINV.CInOutMas['InOutNo']:=AutoInOutNo(StrToInt(CInOutMas.Params.ParamValues['@InOutType'])+2);
CInOutMas['Rate']:=1;
CInOutMas['CurrencyID']:=CurrencyID;
CInOutMas['StockID']:=DMBase.CStock['StockID'];
end;
procedure TDMINV.CMoveSubNewRecord(DataSet: TDataSet);
begin
CMoveSub['MoveNo']:=CMoveMas['MoveNo'];
end;
procedure TDMINV.CCheckMasNewRecord(DataSet: TDataSet);
begin
CCheckMas['Status']:='0';
CCheckMas['CheckDate']:=Date;
CCheckMas['CheckNo']:=AutoCheckNo;
CCheckMas['StockID']:=DMBase.CStock['StockID'];
end;
procedure TDMINV.CMoveMasNewRecord(DataSet: TDataSet);
begin
CMoveMas['Status']:='0';
CMoveMas['MoveDate']:=Date;
CMoveMas['MoveNo']:=AutoMoveNo;
CMoveMas['StockID1']:=DMBase.CStock['StockID'];
end;
procedure TDMINV.CInOutMasInOutDateValidate(Sender: TField);
begin
CheckDate(TField(Sender).AsDateTime);
end;
procedure TDMINV.CCheckMasCheckDateValidate(Sender: TField);
begin
CheckDate(TField(Sender).AsDateTime);
end;
procedure TDMINV.CMoveMasMoveDateValidate(Sender: TField);
begin
CheckDate(TField(Sender).AsDateTime);
end;
procedure TDMINV.CInOutSubOrderNoValidate(Sender: TField);
begin
CheckOrderNo(TField(Sender).Value);
end;
procedure TDMINV.CInOutSubPartNoValidate(Sender: TField);
begin
CheckPartNo(TField(Sender).Value);
end;
procedure TDMINV.CCheckSubPartNoValidate(Sender: TField);
begin
CheckPartNo(TField(Sender).Value);
end;
procedure TDMINV.CMoveSubPartNoValidate(Sender: TField);
begin
CheckPartNo(TField(Sender).Value);
end;
procedure TDMINV.CInvInitialPartNoValidate(Sender: TField);
begin
CheckPartNo(TField(Sender).Value);
end;
procedure TDMINV.CInOutSubPartNoChange(Sender: TField);
begin
CInOutSub['UnitID']:=DMBase.CVMateriel['UnitID'];
end;
procedure TDMINV.CCheckSubPartNoChange(Sender: TField);
begin
CCheckSub['UnitID']:=DMBase.CVMateriel['UnitID'];
CCheckSub['Qty']:=DMBase.CVMateriel['TotalQty'];
end;
procedure TDMINV.CMoveSubPartNoChange(Sender: TField);
begin
CMoveSub['UnitID']:=DMBase.CVMateriel['UnitID'];
end;
procedure TDMINV.CInvInitialPartNoChange(Sender: TField);
begin
CInvInitial['UnitID']:=DMBase.CVMateriel['UnitID'];
end;
procedure TDMINV.CInOutMasReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
If (UpdateKind=ukInsert) and (Pos(UpperCase('PK_InvInOutMas'),UpperCase(E.Message))>0) then
begin
Action:=raCorrect;
CInOutMas.Edit;
CInOutMas['InOutNo']:=AutoInOutNo(Integer(CInOutMas.Params.ParamValues['@InOutType'])+2);
CInOutMas.Post;
CInOutMas.ApplyUpdates(0);
Info(Format('当前单号【%s】已经被占用,系统将自动变更为【%s】!',[DataSet.FieldByName('InOutNo').OldValue,CInOutMas.FieldByName('InOutNo').NewValue]));
end
else if (UpdateKind=ukModify) and (E.ErrorCode=3604) then Begin CInOutMas.UndoLastChange(True); Error(E.Message) end
else AppException(E);
//if Pos('not found or changed',E.Message)=0 then
end;
procedure TDMINV.CCheckMasReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
If (UpdateKind=ukInsert) and (Pos(UpperCase('PK_InvCheckMas'),UpperCase(E.Message))>0) then
begin
Action:=raCorrect;
CCheckMas.Edit;
CCheckMas['CheckNo']:=AutoCheckNo;
CCheckMas.Post;
CCheckMas.ApplyUpdates(0);
Info(Format('当前单号【%s】已经被占用,系统将自动变更为【%s】!',[DataSet.FieldByName('CheckNo').OldValue,CCheckMas.FieldByName('CheckNo').NewValue]));
end
else if (UpdateKind=ukModify) and (E.ErrorCode=3604) then Begin CCheckMas.UndoLastChange(True); Error(E.Message) end
else AppException(E);
//if Pos('not found or changed',E.Message)=0 then
end;
procedure TDMINV.CMoveMasReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
If (UpdateKind=ukInsert) and (Pos(UpperCase('PK_InvMoveMas'),UpperCase(E.Message))>0) then
begin
Action:=raCorrect;
CMoveMas.Edit;
CMoveMas['MoveNo']:=AutoMoveNo;
CMoveMas.Post;
CMoveMas.ApplyUpdates(0);
Info(Format('当前单号【%s】已经被占用,系统将自动变更为【%s】!',[DataSet.FieldByName('MoveNo').OldValue,CMoveMas.FieldByName('MoveNo').NewValue]));
end
else if (UpdateKind=ukModify) and (E.ErrorCode=3604) then Begin CMoveMas.UndoLastChange(True); Error(E.Message) end
else AppException(E);
//if Pos('not found or changed',E.Message)=0 then
end;
procedure TDMINV.CCheckSubQtyChange(Sender: TField);
begin
CCheckSub['FactQty']:= CCheckSub['Qty'];
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -