📄 uwipdm.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 + -