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

📄 udminv.pas

📁 成本系统三层结构源码 开发工具:Delphi 7.0+SQLServer 2005 主要技术:Midas、COM+ 所用第三方控件: FastReport V2.47 D7 Inforp
💻 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 + -