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

📄 uwipdm.pas

📁 成本系统三层结构源码 开发工具:Delphi 7.0+SQLServer 2005 主要技术:Midas、COM+ 所用第三方控件: FastReport V2.47 D7 Inforp
💻 PAS
字号:
unit uWIPDM;

interface

uses
  SysUtils, Classes, DB, DBClient, DateUtils;

type
  TDMWIP = class(TDataModule)
    CMachine: TClientDataSet;
    CMachineMachineID: TStringField;
    CMachineMachineName: TStringField;
    CMachineCategoryID: TStringField;
    CMachineCategoryName: TStringField;
    CMachineCostType: TStringField;
    CMachineCostRate: TFloatField;
    CMachineEntryDate: TDateTimeField;
    CVMachine: TClientDataSet;
    CSubContract: TClientDataSet;
    CSubContractProjectID: TStringField;
    CSubContractProjectName: TStringField;
    CSubContractCostType: TStringField;
    CSubContractUnitID: TStringField;
    CSubContractRemark: TStringField;
    CSubContractCreater: TStringField;
    CSubContractCreateDate: TDateTimeField;
    CSubContractUpdater: TStringField;
    CSubContractUpdateDate: TDateTimeField;
    CSubContractUnitName: TStringField;
    COutMas: TClientDataSet;
    CSubContractCurrencyID: TStringField;
    CSubContractPrice: TBCDField;
    CSubContractCurrencyName: TStringField;
    COutMasOutNo: TStringField;
    COutMasOutDate: TDateTimeField;
    COutMasStatus: TStringField;
    COutMasVendorID: TStringField;
    COutMasRemark: TStringField;
    COutMasCreater: TStringField;
    COutMasCreateDate: TDateTimeField;
    COutMasUpdater: TStringField;
    COutMasUpdateDate: TDateTimeField;
    COutMasApprover: TStringField;
    COutMasApproveDate: TDateTimeField;
    COutMasConfirmer: TStringField;
    COutMasConfirmDate: TDateTimeField;
    COutMasQOutSub: TDataSetField;
    COutMasVendorName: TStringField;
    COutSub: TClientDataSet;
    COutSubOutNo: TStringField;
    COutSubOrderNo: TStringField;
    COutSubProjectId: TStringField;
    COutSubQty: TBCDField;
    COutSubPrice: TBCDField;
    COutSubCostType: TStringField;
    COutSubRemark: TStringField;
    COutSubProjectName: TStringField;
    COutSubUnitID: TStringField;
    COutSubUnitName: TStringField;
    CProMas: TClientDataSet;
    CProMasProType: TStringField;
    CProMasProNo: TStringField;
    CProMasProDate: TDateTimeField;
    CProMasStatus: TStringField;
    CProMasCurrencyID: TStringField;
    CProMasRate: TBCDField;
    CProMasWorkgroup: TStringField;
    CProMasRemark: TStringField;
    CProMasCreater: TStringField;
    CProMasCreateDate: TDateTimeField;
    CProMasUpdater: TStringField;
    CProMasUpdateDate: TDateTimeField;
    CProMasQProSub: TDataSetField;
    CProSub: TClientDataSet;
    CUseRate: TClientDataSet;
    CStatWip: TClientDataSet;
    CMachineModel: TStringField;
    CMachineFactoryID: TStringField;
    CMachineInitValue: TFloatField;
    CMachineDepreciateYear: TIntegerField;
    CMachineAgent: TStringField;
    CMachineRemark: TStringField;
    CMachineCreater: TStringField;
    CMachineCreateDate: TDateTimeField;
    CMachineUpdater: TStringField;
    CMachineUpdateDate: TDateTimeField;
    CProMasDeptname: TStringField;
    CProSubProNo: TStringField;
    CProSubOrderNo: TStringField;
    CProSubCostType: TStringField;
    CProSubCostRate: TBCDField;
    CProSubMachineID: TStringField;
    CProSubEmployeeID: TStringField;
    CProSubReadyTime: TBCDField;
    CProSubTotalTime: TBCDField;
    CProSubRemark: TStringField;
    CProSubMachineName: TStringField;
    CVMachineMachineID: TStringField;
    CVMachineCategoryID: TStringField;
    CVMachineCategoryName: TStringField;
    CVMachineModel: TStringField;
    CVMachineFactoryID: TStringField;
    CVMachineRemark: TStringField;
    CProSubStartTime: TStringField;
    CProSubEndTime: TStringField;
    CProMasApprover: TStringField;
    CProMasApproveDate: TDateTimeField;
    CProMasConfirmer: TStringField;
    CProMasConfirmDate: TDateTimeField;
    CSubContractCostTypeName: TStringField;
    CMachineCostName: TStringField;
    COutMasCurrencyID: TStringField;
    COutMasRate: TFloatField;
    COutMasCarriage: TFloatField;
    COutMasTax: TFloatField;
    COutMasAdjust: TFloatField;
    COutMasTotalMoney: TFloatField;
    COutMasCurrencyName: TStringField;
    CWorkBill: TClientDataSet;
    CWorkBillBillName: TStringField;
    CWorkBillEnabled: TBooleanField;
    CWorkBillAutoNo: TBooleanField;
    CWorkBillPrefix: TStringField;
    CWorkBillLength: TIntegerField;
    CWorkBillByMachine: TBooleanField;
    CWorkBillRemark: TStringField;
    CWorkBillCreater: TStringField;
    CWorkBillCreateDate: TDateTimeField;
    CWorkBillUpdater: TStringField;
    CWorkBillUpdateDate: TDateTimeField;
    CWorkBillQBillAction: TDataSetField;
    CBillAction: TClientDataSet;
    CWorkAction: TClientDataSet;
    CBillActionActionID: TStringField;
    CWorkActionActionID: TStringField;
    CWorkActionActionName: TStringField;
    CWorkActionCostType: TStringField;
    CWorkActionCostRate: TBCDField;
    CWorkActionRemark: TStringField;
    CWorkActionCreater: TStringField;
    CWorkActionCreatedate: TDateTimeField;
    CWorkActionUpdater: TStringField;
    CWorkActionUpdatedate: TDateTimeField;
    CWorkActionCostTypeName: TStringField;
    CBillActionActionName: TStringField;
    CProSubActionID: TStringField;
    CProSubReserved1: TStringField;
    CProSubReserved2: TFloatField;
    CProSubTypeFlag: TStringField;
    CProSubActionName: TStringField;
    CMachineEnabled: TBooleanField;
    CWorkBillBillID: TStringField;
    CBillActionBillID: TStringField;
    CBillActionCostTypeName: TStringField;
    CWorkActionEnabled: TBooleanField;
    CSubContractEnabled: TBooleanField;
    CVMachineMachineName: TStringField;
    CWorkBillReserved1: TStringField;
    CWorkBillReserved2: TStringField;
    CStatOut: TClientDataSet;
    CVMachineCosttype: TStringField;
    CVMachineTypeLabel: TStringField;
    CVMachineCostRate: TFloatField;
    procedure COutMasNewRecord(DataSet: TDataSet);
    procedure COutSubNewRecord(DataSet: TDataSet);
    procedure COutSubOrderNoValidate(Sender: TField);
    procedure COutSubProjectIdValidate(Sender: TField);
    procedure CProSubNewRecord(DataSet: TDataSet);
    procedure CProMasNewRecord(DataSet: TDataSet);
    procedure CProSubOrderNoValidate(Sender: TField);
    procedure CProSubMachineIDValidate(Sender: TField);
    procedure COutSubProjectIdChange(Sender: TField);
    procedure CProSubBeforePost(DataSet: TDataSet);
    procedure COutMasCurrencyIDChange(Sender: TField);
    procedure CBillActionNewRecord(DataSet: TDataSet);
    procedure CProSubStartTimeValidate(Sender: TField);
    procedure CProSubActionIDValidate(Sender: TField);
    procedure CProMasReconcileError(DataSet: TCustomClientDataSet;
      E: EReconcileError; UpdateKind: TUpdateKind;
      var Action: TReconcileAction);
    procedure COutMasReconcileError(DataSet: TCustomClientDataSet;
      E: EReconcileError; UpdateKind: TUpdateKind;
      var Action: TReconcileAction);
    procedure CProSubMachineIDChange(Sender: TField);
    procedure CProSubActionIDChange(Sender: TField);
    procedure CMachineNewRecord(DataSet: TDataSet);
    procedure CWorkBillBeforeDelete(DataSet: TDataSet);
    procedure CWorkBillNewRecord(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DMWIP: TDMWIP;

implementation

uses udata, udmbase, SherryLib, udmcost;

{$R *.dfm}

procedure TDMWIP.COutMasNewRecord(DataSet: TDataSet);
begin
  COutMas['Status'] := '0';
  COutMas['OutDate'] := Date;
  COutMas['OutNo'] := AutoOutNo;
  DataSet['Rate']:=1;
  DataSet['CurrencyID']:=CurrencyID;  
end;

procedure TDMWIP.COutSubNewRecord(DataSet: TDataSet);
begin
  COutSub['OutNo'] := COutMas['OutNo'];
end;

procedure TDMWIP.COutSubOrderNoValidate(Sender: TField);
begin
  CheckOrderNo(TField(Sender).Value);
end;

procedure TDMWIP.COutSubProjectIdValidate(Sender: TField);
begin
  CheckProjectID(TField(Sender).Value);
end;

procedure TDMWIP.CProSubNewRecord(DataSet: TDataSet);
begin
  CProSub['ProNo'] := CProMas['ProNo'];
end;

procedure TDMWIP.CProMasNewRecord(DataSet: TDataSet);
begin
  DataSet['ProType'] := CProMas.Params.ParamValues['@ProType'];
  DataSet['Status'] := '0';
  DataSet['ProDate'] := Date;
  DataSet['Rate']:=1;
  DataSet['CurrencyID']:=CurrencyID;
  DataSet['ProNo'] := AutoProNo(CProMas.Params.ParamValues['@ProType']);
end;

procedure TDMWIP.CProSubOrderNoValidate(Sender: TField);
begin
  CheckOrderNo(TField(Sender).Value);
end;

procedure TDMWIP.CProSubMachineIDValidate(Sender: TField);
begin
  CheckMachineID(TField(Sender).Value);
end;

procedure TDMWIP.COutSubProjectIdChange(Sender: TField);
begin
  COutSub['UnitID']:=CSubContract['UnitID'];
  COutSub['Price']:=CSubContract['Price'];
end;

procedure TDMWIP.CProSubBeforePost(DataSet: TDataSet);
begin
  if CProSubMachineID.Visible then
  try
    if StrToTime(CProSub['StartTime']) > StrToTime(CProSub['EndTime']) then
      CProSub['TotalTime'] := MinuteSpan(StrToTime(CProSub['StartTime']), IncHour(StrToTime(CProSub['EndTime']), 24)) / 60.0
    else
      CProSub['TotalTime'] := MinuteSpan(StrToTime(CProSub['StartTime']), StrToTime(CProSub['EndTime'])) / 60.0
  except
    CProSub['TotalTime'] := 0;
  end;
end;

procedure TDMWIP.COutMasCurrencyIDChange(Sender: TField);
begin
  COutMas['Rate']:=DMBase.CCurrency['Rate'];
end;

procedure TDMWIP.CBillActionNewRecord(DataSet: TDataSet);
begin
  DataSet['BillId']:=CWorkBill['BillId']; 
end;

procedure TDMWIP.CProSubStartTimeValidate(Sender: TField);
begin
  Try StrToTime(TField(Sender).Value) Except Warn('非法的时间输入!') end;
end;

procedure TDMWIP.CProSubActionIDValidate(Sender: TField);
begin
  CheckActionID(TField(Sender).Value, CProMas.Params.ParamValues['@ProType']);
end;

procedure TDMWIP.CProMasReconcileError(DataSet: TCustomClientDataSet;
  E: EReconcileError; UpdateKind: TUpdateKind;
  var Action: TReconcileAction);
begin
  If (UpdateKind=ukInsert) and (Pos(UpperCase('PK_ProMas'),UpperCase(E.Message))>0) then
  begin
    Action:=raCorrect;
    CProMas.Edit;
    CProMas['ProNo']:=AutoProNo(CProMas.Params.ParamValues['@ProType']);
    CProMas.Post;
    CProMas.ApplyUpdates(0);
    Info(Format('当前单号【%s】已经被占用,系统将自动变更为【%s】!',[DataSet.FieldByName('ProNo').OldValue,CProMas.FieldByName('ProNo').NewValue]));
  end
  else AppException(E);
end;

procedure TDMWIP.COutMasReconcileError(DataSet: TCustomClientDataSet;
  E: EReconcileError; UpdateKind: TUpdateKind;
  var Action: TReconcileAction);
begin
  If (UpdateKind=ukInsert) and (Pos(UpperCase('PK_OutMas'),UpperCase(E.Message))>0) then
  begin
    Action:=raCorrect;
    COutMas.Edit;
    COutMas['OutNo']:=AutoOutNo;
    COutMas.Post;
    COutMas.ApplyUpdates(0);
    Info(Format('当前单号【%s】已经被占用,系统将自动变更为【%s】!',[DataSet.FieldByName('OutNo').OldValue,COutMas.FieldByName('OutNo').NewValue]));
  end
  else AppException(E);
end;

procedure TDMWIP.CProSubMachineIDChange(Sender: TField);
begin
  CProSub['CostType']:=CVMachine['CostType'];
  CProSub['CostRate']:=CVMachine['CostRate'];
end;

procedure TDMWIP.CProSubActionIDChange(Sender: TField);
begin
  CProSub['CostType']:=CWorkAction['CostType'];
  CProSub['CostRate']:=CWorkAction['CostRate'];
end;

procedure TDMWIP.CMachineNewRecord(DataSet: TDataSet);
begin
  CMachine['Enabled']:=True;
end;

procedure TDMWIP.CWorkBillBeforeDelete(DataSet: TDataSet);
begin
  while not CBillAction.IsEmpty do
  CBillAction.Delete;
end;

procedure TDMWIP.CWorkBillNewRecord(DataSet: TDataSet);
begin
  CWorkBill['Enabled']:=False;
  CWorkBill['AutoNo']:=False;
  CWorkBill['ByMachine']:=True;    
end;

end.


⌨️ 快捷键说明

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