protected override bool onButtonClick(NbtButtonData ButtonData) { if (null != ButtonData.NodeTypeProp) { string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName(); switch (OCPPropName) { case PropertyName.Request: if (_CswNbtResources.Permit.can(CswEnumNbtActionName.Submit_Request)) { ButtonData.Action = CswEnumNbtButtonAction.request; CswNbtActRequesting RequestAct = new CswNbtActRequesting(_CswNbtResources); CswNbtObjClassRequestItem RequestItem = RequestAct.makeEnterprisePartRequestItem(this, ButtonData); ButtonData.Data["titleText"] = "Add to Cart: " + RequestItem.Type.Value; ButtonData.Data["requestItemProps"] = RequestAct.getRequestItemAddProps(RequestItem.Node); ButtonData.Data["requestItemNodeTypeId"] = RequestItem.NodeTypeId; } else { throw new CswDniException(CswEnumErrorType.Warning, "You do not have permission to the Submit Request action.", "You do not have permission to the Submit Request action."); } break; } } return(true); }
}//afterPopulateProps() protected override bool onButtonClick(NbtButtonData ButtonData) { if (null != ButtonData.NodeTypeProp) { //Remember: Save is an OCP too if (PropertyName.RunNow == ButtonData.NodeTypeProp.getObjectClassPropName()) { if (DueDateInterval.getStartDate() < DateTime.Now) //if the button was clicked after the first due date { NextDueDate.DateTimeValue = DateTime.Now; Node.postChanges(false); ButtonData.Action = CswEnumNbtButtonAction.refresh; } else { _CswNbtResources.Messages.Add(new CswWebSvcReturnBase.ErrorMessage() { ShowError = true, Type = CswEnumErrorType.Warning, Message = "A mail report cannot be run before its first scheduled due date.", Detail = "Run now is invalid before initial due date." }); } } } return(true); }
protected override bool onButtonClick(NbtButtonData ButtonData) { bool Ret = false; if (null != ButtonData.NodeTypeProp) { //Remember: Save is an OCP too switch (ButtonData.NodeTypeProp.getObjectClassPropName()) { case PropertyName.Fulfill: switch (ButtonData.SelectedText) { case FulfillMenu.Cancel: Status.Value = Statuses.Cancelled; Fulfill.State = FulfillMenu.Cancel; Fulfill.MenuOptions = ""; ButtonData.Action = CswEnumNbtButtonAction.refresh; break; case FulfillMenu.Complete: Status.Value = Statuses.Completed; Fulfill.State = FulfillMenu.Complete; Fulfill.MenuOptions = ""; ButtonData.Action = CswEnumNbtButtonAction.refresh; break; } break; } Ret = onPropertySetButtonClick(ButtonData); postChanges(ForceUpdate: false); } return(Ret); }
/// <summary> /// Abstract override to be called on onButtonClick /// </summary> public override bool onPropertySetButtonClick(NbtButtonData ButtonData) { if (null != ButtonData.NodeTypeProp) { //Remember: Save is an OCP too switch (ButtonData.NodeTypeProp.getObjectClassPropName()) { case PropertyName.Fulfill: CswNbtObjClassContainer NodeAsContainer = null; switch (ButtonData.SelectedText) { case FulfillMenu.Dispense: NodeAsContainer = _CswNbtResources.Nodes.GetNode(Container.RelatedNodeId); if (null != NodeAsContainer && null != NodeAsContainer.Dispense.NodeTypeProp) { NbtButtonData DispenseData = new NbtButtonData(NodeAsContainer.Dispense.NodeTypeProp); NodeAsContainer.triggerOnButtonClick(DispenseData); ButtonData.clone(DispenseData); } else { ButtonData.Data["containernodetypeid"] = Container.TargetId; ButtonData.Data["containerobjectclassid"] = Container.TargetId; JObject InitialQuantity = null; if (null != Size.RelatedNodeId && Int32.MinValue != Size.RelatedNodeId.PrimaryKey) { CswNbtObjClassSize NodeAsSize = _CswNbtResources.Nodes[Size.RelatedNodeId]; if (null != NodeAsSize) { InitialQuantity = new JObject(); NodeAsSize.InitialQuantity.ToJSON(InitialQuantity); ButtonData.Data["initialQuantity"] = InitialQuantity; } } else if (false == Quantity.Empty) { InitialQuantity = new JObject(); Quantity.ToJSON(InitialQuantity); } if (null != InitialQuantity) { ButtonData.Data["initialQuantity"] = InitialQuantity; } ButtonData.Action = CswEnumNbtButtonAction.dispense; } break; } //switch( ButtonData.SelectedText ) _getNextStatus(ButtonData.SelectedText); ButtonData.Data["requestitem"] = ButtonData.Data["requestitem"] ?? new JObject(); ButtonData.Data["requestitem"]["requestitemid"] = NodeId.ToString(); ButtonData.Data["requestitem"]["materialid"] = (Material.RelatedNodeId ?? new CswPrimaryKey()).ToString(); ButtonData.Data["requestitem"]["containerid"] = (Container.RelatedNodeId ?? new CswPrimaryKey()).ToString(); ButtonData.Data["requestitem"]["locationid"] = (Location.SelectedNodeId ?? new CswPrimaryKey()).ToString(); break; //case PropertyName.Fulfill: } } return(true); }
} //afterPopulateProps() protected override bool onButtonClick(NbtButtonData ButtonData) { if (null != ButtonData && null != ButtonData.NodeTypeProp) { /*Do Something*/ } return(true); }
}//afterPopulateProps() /// <summary> /// /// </summary> public override bool onPropertySetButtonClick(NbtButtonData ButtonData) { if (null != ButtonData.NodeTypeProp) { //Remember: Save is an OCP too switch (ButtonData.NodeTypeProp.getObjectClassPropName()) { case PropertyName.Fulfill: //If we do this here, we'll override the Actions for other options managed by the Property Set //ButtonData.Action = NbtButtonAction.nothing; switch (ButtonData.SelectedText) { case FulfillMenu.Create: ButtonData.Action = CswEnumNbtButtonAction.nothing; if (PotentialMaterial().existsInDb(ForceRecalc: true)) { ButtonData.Message = "The requested Material has already been created: " + PotentialMaterial().existingMaterial().Node.NodeLink; } else { CswNbtPropertySetMaterial NewMaterial = PotentialMaterial().commit(); //See Case 28310. We do not want to upversion this node. The Create Material Wizard will do that for us. bool Success = null != NewMaterial; if (Success) { ButtonData.Action = CswEnumNbtButtonAction.creatematerial; Material.RelatedNodeId = NewMaterial.NodeId; Fulfill.State = FulfillMenu.Create; ButtonData.Data["state"] = new JObject(); ButtonData.Data["state"]["materialType"] = new JObject(); ButtonData.Data["state"]["materialType"]["name"] = PotentialMaterial().NodeTypeName; ButtonData.Data["state"]["materialType"]["val"] = PotentialMaterial().NodeTypeId; ButtonData.Data["state"]["materialId"] = NewMaterial.NodeId.ToString(); ButtonData.Data["state"]["tradeName"] = PotentialMaterial().TradeName; ButtonData.Data["state"]["supplier"] = new JObject(); ButtonData.Data["state"]["supplier"]["val"] = PotentialMaterial().SupplierId.ToString(); ButtonData.Data["state"]["supplier"]["name"] = PotentialMaterial().SupplierName; ButtonData.Data["state"]["partNo"] = NewMaterialPartNo.Text; } else { ButtonData.Message = "The requested Material cannot not be created."; } ButtonData.Data["success"] = Success; } break; } //switch( ButtonData.SelectedText ) _getNextStatus(ButtonData.SelectedText); ButtonData.Data["requestitem"] = ButtonData.Data["requestitem"] ?? new JObject(); ButtonData.Data["requestitem"]["requestitemid"] = NodeId.ToString(); ButtonData.Data["requestitem"]["materialid"] = (Material.RelatedNodeId ?? new CswPrimaryKey()).ToString(); break; //case PropertyName.Fulfill: } } return(true); }
protected override bool onButtonClick(NbtButtonData ButtonData) { bool Ret = false; if (null != ButtonData.NodeTypeProp) { Ret = onPropertySetButtonClick(ButtonData); } return(Ret); }//afterPopulateProps()
}//afterPopulateProps() protected override bool onButtonClick( NbtButtonData ButtonData ) { if( null != ButtonData && null != ButtonData.NodeTypeProp ) { string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName(); //Remember: Save is an OCP too if( PropertyName.LoadUserContext == OCPPropName ) { ButtonData.Data["action"] = OCPPropName; ButtonData.Data["type"] = "view"; //assume it's a view unless it's an action CswEnumNbtActionName ActionName = CswNbtAction.ActionNameStringToEnum( Action.Text ); if( CswResources.UnknownEnum != ActionName ) { if( null != _CswNbtResources.Actions[ActionName] ) { CswNbtAction action = _CswNbtResources.Actions[ActionName]; ButtonData.Data["type"] = "action"; ButtonData.Data["actionname"] = action.Name.ToString(); ButtonData.Data["actionid"] = action.ActionId.ToString(); ButtonData.Data["actionurl"] = action.Url.ToString(); } } else { ButtonData.Data["selectedNodeId"] = SelectedNodeId.Text; if( null != CurrentViewMode ) { ButtonData.Data["viewmode"] = CurrentViewMode.Text; } //CswNbtViewId delimitedViewId = new CswNbtViewId( CswConvert.ToInt32( View.SelectedViewIds.ToString() ) ); CswNbtViewId delimitedViewId = View.ViewId; if( null != delimitedViewId ) { ButtonData.Data["viewid"] = delimitedViewId.ToString(); } if( null != Author.RelatedNodeId ) { if( _CswNbtResources.CurrentNbtUser.UserId != Author.RelatedNodeId ) { ButtonData.Data["userid"] = Author.RelatedNodeId.ToString(); CswNbtObjClassUser userNode = _CswNbtResources.Nodes[Author.RelatedNodeId]; if( null != userNode ) { ButtonData.Data["username"] = userNode.Username; } } } } ButtonData.Action = CswEnumNbtButtonAction.loadView; } } return true; }
protected override bool onButtonClick(NbtButtonData ButtonData) { if (null != ButtonData.NodeTypeProp) { if (PropertyName.BtnRun == ButtonData.NodeTypeProp.getObjectClassPropName()) { ButtonData.Action = CswEnumNbtButtonAction.popup; ButtonData.Data["url"] = ReportUrl; } } return(true); }
protected override bool onButtonClick( NbtButtonData ButtonData ) { if( null != ButtonData.NodeTypeProp ) { //Remember: Save is an OCP too if( PropertyName.Login == ButtonData.NodeTypeProp.getObjectClassPropName() ) { ButtonData.Action = CswEnumNbtButtonAction.reauthenticate; } } return true; }
protected override bool onButtonClick(NbtButtonData ButtonData) { if (null != ButtonData && null != ButtonData.NodeTypeProp) { string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName(); switch (OCPPropName) { case PropertyName.ViewCofA: getCofA(ButtonData); break; } } return(true); }
/// <summary> /// Abstract override to be called on onButtonClick /// </summary> public override bool onPropertySetButtonClick(NbtButtonData ButtonData) { if (null != ButtonData.NodeTypeProp) { //Remember: Save is an OCP too switch (ButtonData.NodeTypeProp.getObjectClassPropName()) { case PropertyName.Fulfill: CswNbtObjClassContainer NodeAsContainer = null; switch (ButtonData.SelectedText) { case FulfillMenu.Dispose: NodeAsContainer = _CswNbtResources.Nodes.GetNode(Container.RelatedNodeId); if (null != NodeAsContainer) { NodeAsContainer.DisposeContainer(); NodeAsContainer.postChanges(true); Status.Value = Statuses.Completed; } ButtonData.Action = CswEnumNbtButtonAction.refresh; break; case FulfillMenu.Move: if (null != Container.RelatedNodeId) { NodeAsContainer = _CswNbtResources.Nodes.GetNode(Container.RelatedNodeId); if (null != NodeAsContainer) { NodeAsContainer.Location.SelectedNodeId = Location.SelectedNodeId; NodeAsContainer.Location.CachedNodeName = Location.CachedNodeName; NodeAsContainer.Location.CachedPath = Location.CachedPath; NodeAsContainer.postChanges(false); Status.Value = Statuses.Completed; ButtonData.Action = CswEnumNbtButtonAction.refresh; } } break; } //switch( ButtonData.SelectedText ) _getNextStatus(ButtonData.SelectedText); ButtonData.Data["requestitem"] = ButtonData.Data["requestitem"] ?? new JObject(); ButtonData.Data["requestitem"]["requestitemid"] = NodeId.ToString(); ButtonData.Data["requestitem"]["containerid"] = (Container.RelatedNodeId ?? new CswPrimaryKey()).ToString(); ButtonData.Data["requestitem"]["locationid"] = (Location.SelectedNodeId ?? new CswPrimaryKey()).ToString(); break; }//case PropertyName.Fulfill: } return(true); }
/// <summary> /// Gets the url for the active C of A Document attached to this ReceiptLot node. /// </summary> /// <param name="ButtonData">Data required for the client to open the file</param> public void getCofA(NbtButtonData ButtonData) { if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.ManufacturerLotInfo)) { if (ButtonData.SelectedText.Equals(PropertyName.ViewCofA)) { CswNbtObjClassCofADocument CofADoc = CswNbtObjClassCofADocument.getActiveCofADocument(_CswNbtResources, NodeId); if (null != CofADoc) { string url = ""; switch (CofADoc.FileType.Value) { case CswNbtPropertySetDocument.CswEnumDocumentFileTypes.File: url = CswNbtNodePropBlob.getLink(CofADoc.File.JctNodePropId, CofADoc.NodeId); break; case CswNbtPropertySetDocument.CswEnumDocumentFileTypes.Link: url = CswNbtNodePropLink.GetFullURL(CofADoc.Link.Prefix, CofADoc.Link.Href, CofADoc.Link.Suffix); break; } ButtonData.Data["url"] = url; ButtonData.Action = CswEnumNbtButtonAction.popup; } else { ButtonData.Message = "There are no active C of A assigned to this " + NodeType.NodeTypeName; ButtonData.Action = CswEnumNbtButtonAction.nothing; } } else { CswNbtView AssignedCofADocsView = CswNbtObjClassCofADocument.getAssignedCofADocumentsView(_CswNbtResources, NodeId); if (null != AssignedCofADocsView) { AssignedCofADocsView.SaveToCache(IncludeInQuickLaunch: false, UpdateCache: true); ButtonData.Data["viewid"] = AssignedCofADocsView.SessionViewId.ToString(); ButtonData.Data["title"] = AssignedCofADocsView.ViewName; ButtonData.Data["nodeid"] = NodeId.ToString(); ButtonData.Data["nodetypeid"] = NodeTypeId.ToString(); ButtonData.Action = CswEnumNbtButtonAction.griddialog; } else { ButtonData.Message = "Could not find the Assigned C of A prop"; ButtonData.Action = CswEnumNbtButtonAction.nothing; } } } }
protected override bool onButtonClick(NbtButtonData ButtonData) { if (null != ButtonData && null != ButtonData.NodeTypeProp) { if (PropertyName.ManageLocations == ButtonData.NodeTypeProp.getObjectClassPropName()) { ButtonData.Action = CswEnumNbtButtonAction.managelocations; JObject ActionOptioinsJObj = new JObject(); ActionOptioinsJObj["ivgnodeid"] = NodeId.ToString(); ButtonData.Data["ActionOptions"] = ActionOptioinsJObj; }//if clicked button is manage locations } return(true); }
/// <summary> /// After the Object Class Button Click Event is triggered, determine whether any properties were part of the request. If so, return the updated properties for the provided tabs, if any. /// </summary> private void _onAfterButtonClickSaveProps(string TabId, NbtButtonData ButtonData) { Int32 TabIdAsInt = CswConvert.ToInt32(TabId); JObject SelectedTab = null; if (null != ButtonData.PropsToSave && ButtonData.PropsToSave.HasValues) { SelectedTab = CswConvert.ToJObject(ButtonData.PropsToSave[TabId]); } if (TabIdAsInt > 0 || (null != SelectedTab && SelectedTab.HasValues)) { CswNbtSdTabsAndProps Sd = new CswNbtSdTabsAndProps(_CswNbtResources); ButtonData.PropsToReturn = Sd.getProps(NodeId.ToString(), null, TabId, NodeTypeId, null, null, ForceReadOnly: false); } }
private void _setCofAData( NbtButtonData ButtonData ) { bool canAddCofA = false; CswNbtMetaDataObjectClass CofADocOC = _CswNbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.CofADocumentClass ); if( _CswNbtResources.Modules.IsModuleEnabled( CswEnumNbtModuleName.ManufacturerLotInfo ) ) { CswNbtMetaDataNodeType CofANT = CofADocOC.FirstNodeType; canAddCofA = _CswNbtResources.Permit.canNodeType( CswEnumNbtNodeTypePermission.Create, CofANT ); if( canAddCofA ) { CswNbtMetaDataObjectClass ReceiptLotOC = _CswNbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.ReceiptLotClass ); ButtonData.Data["state"]["cofaDocTypeId"] = CofANT.NodeTypeId; ButtonData.Data["state"]["receiptLotTypeId"] = ReceiptLotOC.FirstNodeType.NodeTypeId; } } ButtonData.Data["state"]["canAddCofA"] = canAddCofA; }
/// <summary> /// Save any properties before the Object Class Button Click Event is triggered /// </summary> private void _onBeforeButtonClickSaveProps(string TabId, NbtButtonData ButtonData) { Int32 TabIdAsInt = CswConvert.ToInt32(TabId); JObject SelectedTab = null; if (null != ButtonData.PropsToSave && ButtonData.PropsToSave.HasValues) { SelectedTab = CswConvert.ToJObject(ButtonData.PropsToSave[TabId]); } if (TabIdAsInt > 0 || (null != SelectedTab && SelectedTab.HasValues)) { if (canSave(TabId)) { CswNbtSdTabsAndProps Sd = new CswNbtSdTabsAndProps(_CswNbtResources); ButtonData.Action = CswEnumNbtButtonAction.refresh; Sd.saveProps(this.NodeId, TabIdAsInt, SelectedTab, this.NodeTypeId, null, false); } } }
} //afterPopulateProps() protected override bool onButtonClick(NbtButtonData ButtonData) { if (null != ButtonData && null != ButtonData.NodeTypeProp) { string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName(); switch (OCPPropName) { case PropertyName.ViewNodesButton: CswNbtView DefaultView = RelationalNodeType.CreateDefaultView(includeDefaultFilters: true); DefaultView.ViewName = NodeTypeName.Text + " Default View"; DefaultView.SaveToCache(IncludeInQuickLaunch: true); ButtonData.Action = CswEnumNbtButtonAction.loadView; ButtonData.Data["viewid"] = DefaultView.SessionViewId.ToString(); ButtonData.Data["viewmode"] = DefaultView.ViewMode.ToString(); ButtonData.Data["type"] = "view"; break; } } return(true); }
protected override bool onButtonClick( NbtButtonData ButtonData ) { bool HasPermission = true; if( null != ButtonData.NodeTypeProp ) { HasPermission = false; string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName(); switch( OCPPropName ) { case PropertyName.OpenFile: HasPermission = true; string url = ""; if( FileType.Value.Equals( CswEnumDocumentFileTypes.File ) ) { url = File.Href; } else if( FileType.Value.Equals( CswEnumDocumentFileTypes.Link ) ) { url = Link.GetFullURL(); } else if( FileType.Value.Equals( CswNbtObjClassSDSDocument.CswEnumDocumentFileTypes.ChemWatch ) ) { if( CswEnumNbtObjectClass.SDSDocumentClass == Node.ObjClass.ObjectClass.ObjectClass ) { CswNbtObjClassSDSDocument SDSDocNode = Node; if( null != SDSDocNode.ChemWatch && false == string.IsNullOrEmpty( SDSDocNode.ChemWatch.Text ) ) { url = "Services/ChemWatch/GetSDSDocument?filename=" + SDSDocNode.ChemWatch.Text; } } } ButtonData.Data["url"] = url; ButtonData.Action = CswEnumNbtButtonAction.popup; break; } } return HasPermission; }
public void clone(NbtButtonData DataToCopy) { if (null != DataToCopy) { if (null != DataToCopy.Action) { Action = DataToCopy.Action; } if (null != DataToCopy.SelectedText) { SelectedText = DataToCopy.SelectedText; } if (null != DataToCopy.Data) { Data = DataToCopy.Data; } if (null != DataToCopy.Message) { Message = DataToCopy.Message; } } }
/// <summary> /// Button click event for derived classes to implement /// </summary> public virtual bool onPropertySetButtonClick( NbtButtonData ButtonData ) { return true; }
public override void onReceiveButtonClick( NbtButtonData ButtonData ) { ButtonData.Data["state"]["canAddSDS"] = false; }
/// <summary> /// ObjectClass-specific logic to execute after clicking an object-class button (including the Save button) /// </summary> protected virtual bool onButtonClick(NbtButtonData ButtonData) { return(true); }
public bool triggerOnButtonClick(NbtButtonData ButtonData) { bool Ret = false; //1: We have Button Data if (null != ButtonData) { //2: Before the Button Click, Save the Node if any tabs and properties have been provided Collection <Int32> TabIds = new Collection <int>(); if (null != ButtonData.TabIds) { TabIds = ButtonData.TabIds.ToIntCollection(ExcludeMinVal: true, ExcludeDuplicates: true); } if (TabIds.Count > 0) { foreach (Int32 TabId in TabIds) { _onBeforeButtonClickSaveProps(CswConvert.ToString(TabId), ButtonData); } } else { if (_CswNbtResources.EditMode == CswEnumNbtNodeEditMode.Add) { //Client-side, we are defining a tabid as EditMode + '_tab'. This isn't great, but it's what we've got right now. _onBeforeButtonClickSaveProps(CswEnumNbtNodeEditMode.Add + "_tab", ButtonData); } } //3: If we're adding, we're always refreshing on add as the default option if (_CswNbtResources.EditMode == CswEnumNbtNodeEditMode.Add) { ButtonData.Action = CswEnumNbtButtonAction.refreshonadd; } //4: If this is the Save property, we're done; else execute the click event if (null != ButtonData.NodeTypeProp && ButtonData.NodeTypeProp.IsSaveProp) { Ret = true; } else { Ret = onButtonClick(ButtonData); } //5: If we had tabs or props coming in, we should get the current values to send back (they probably changed after the button click) if (TabIds.Count > 0) { foreach (Int32 TabId in TabIds) { _onAfterButtonClickSaveProps(CswConvert.ToString(TabId), ButtonData); } if (ButtonData.NodeIds.Count > 1) { Collection <CswPrimaryKey> MultiNodePks = new Collection <CswPrimaryKey>(); foreach (string CopyToNodeId in ButtonData.NodeIds) { CswPrimaryKey MultiNodePk = CswConvert.ToPrimaryKey(CopyToNodeId); if (null != MultiNodePk && MultiNodePk != NodeId) { MultiNodePks.Add(MultiNodePk); } } if (ButtonData.NodeIds.Count >= CswNbtBatchManager.getBatchThreshold(_CswNbtResources)) { if (ButtonData.PropIds.Count > 0) { Collection <Int32> NodeTypePropIds = new Collection <Int32>(); foreach (string PropIdAttrStr in ButtonData.PropIds) { CswPropIdAttr PropIdAttr = new CswPropIdAttr(PropIdAttrStr); NodeTypePropIds.Add(PropIdAttr.NodeTypePropId); } CswNbtBatchOpMultiEdit op = new CswNbtBatchOpMultiEdit(_CswNbtResources); CswNbtObjClassBatchOp Batch = op.makeBatchOp(Node, MultiNodePks, NodeTypePropIds); ButtonData.Action = CswEnumNbtButtonAction.batchop; ButtonData.Data["batch"] = Batch.Node.NodeLink; } if (ButtonData.MultiClick && null != ButtonData.NodeTypeProp) { CswNbtBatchOpMultiButtonClick op = new CswNbtBatchOpMultiButtonClick(_CswNbtResources); CswNbtObjClassBatchOp Batch = op.makeBatchOp(MultiNodePks, ButtonData.NodeTypeProp.PropId); ButtonData.Action = CswEnumNbtButtonAction.batchop; ButtonData.Data["batch"] = Batch.Node.NodeLink; } } else { if (ButtonData.PropIds.Count > 0) { CswNbtSdTabsAndProps Sd = new CswNbtSdTabsAndProps(_CswNbtResources); Sd.copyPropValues(Node, ButtonData.NodeIds, ButtonData.PropIds); } if (ButtonData.MultiClick) { foreach (CswPrimaryKey MultiNodeId in MultiNodePks) { CswNbtNode MultiNode = _CswNbtResources.Nodes[MultiNodeId]; if (null != MultiNode) { MultiNode.ObjClass.onButtonClick(ButtonData); } } } } } } else { if (_CswNbtResources.EditMode == CswEnumNbtNodeEditMode.Add) { _onAfterButtonClickSaveProps(CswEnumNbtNodeEditMode.Add + "_tab", ButtonData); } } } return(Ret); }
} //afterPopulateProps() public override bool onPropertySetButtonClick(NbtButtonData ButtonData) { if (null != ButtonData && null != ButtonData.NodeTypeProp) /*Do Something*/ } {
} //afterPopulateProps() public override bool onPropertySetButtonClick(NbtButtonData ButtonData) { if (null != ButtonData && null != ButtonData.NodeTypeProp) { switch (ButtonData.NodeTypeProp.getObjectClassPropName()) { case PropertyName.Finish: if (false == _CswNbtResources.IsSystemUser) { InspectionDate.DateTimeValue = DateTime.Now; Inspector.RelatedNodeId = _CswNbtResources.CurrentNbtUser.UserId; } if (_InspectionState.AllAnswered) { if (_InspectionState.Deficient) { ButtonData.Message = "Inspection is deficient and requires further action."; this.Status.Value = CswEnumNbtInspectionStatus.ActionRequired; } else { string StatusValue = _InspectionState.AllAnsweredInTime ? CswEnumNbtInspectionStatus.Completed : CswEnumNbtInspectionStatus.CompletedLate; ButtonData.Message = "Inspection marked " + StatusValue + "."; this.Status.Value = StatusValue; ButtonData.Action = CswEnumNbtButtonAction.refresh; } } // if( _allAnswered ) else { ButtonData.Message = "Inspection can not be finished until all questions are answered. Questions remaining: " + _InspectionState.UnAnsweredQuestions.ToString(); } break; case PropertyName.Cancel: ButtonData.Message = "Inspection has been cancelled."; this.Status.Value = CswEnumNbtInspectionStatus.Cancelled; ButtonData.Action = CswEnumNbtButtonAction.refresh; break; case PropertyName.SetPreferred: CswNbtPropEnmrtrFiltered QuestionsFlt = Node.Properties[(CswEnumNbtFieldType)CswEnumNbtFieldType.Question]; int NumOfQuestionsSetToPreferredAnswer = 0; foreach (CswNbtNodePropWrapper PropWrapper in QuestionsFlt) { CswNbtNodePropQuestion QuestionProp = PropWrapper; // don't refactor this into the foreach. it doesn't work. case 28300. if (string.IsNullOrEmpty(QuestionProp.Answer.Trim())) { QuestionProp.Answer = QuestionProp.PreferredAnswer; NumOfQuestionsSetToPreferredAnswer++; } } ButtonData.Message = NumOfQuestionsSetToPreferredAnswer + " unanswered questions have been set to their preferred answer."; _toggleButtonVisibility(SetPreferred, IsVisible: false, SaveToDb: true); ButtonData.Action = CswEnumNbtButtonAction.refresh; break; case CswNbtObjClass.PropertyName.Save: break; } this.postChanges(false); } // if( null != NodeTypeProp ) return(true); }
/// <summary> /// ObjectClass-specific data for Receive button click /// </summary> public abstract void onReceiveButtonClick( NbtButtonData ButtonData );
protected override bool onButtonClick( NbtButtonData ButtonData ) { if( null != ButtonData.NodeTypeProp ) { bool HasPermission = false; string OCPPropName = ButtonData.NodeTypeProp.getObjectClassPropName(); switch( OCPPropName ) { case PropertyName.Request: if( _CswNbtResources.Permit.can( CswEnumNbtActionName.Submit_Request ) ) { // Case CIS-52280 if( Obsolete.Checked == CswEnumTristate.True ) { throw new CswDniException( CswEnumErrorType.Warning, "Can't request Material " + TradeName + " because it is obsolete.", "Material is obsolete" ); } HasPermission = true; CswNbtActRequesting RequestAct = new CswNbtActRequesting( _CswNbtResources ); CswNbtObjClassRequestItem RequestItem = RequestAct.makeMaterialRequestItem( this, ButtonData ); ButtonData.Data["requestaction"] = ButtonData.SelectedText; //ButtonData.Data["requestaction"] = OCPPropName; //Case 31298: Default Option Text "Request" != "Request By Bulk" if( ButtonData.SelectedText == "Request" ) { ButtonData.SelectedText = CswEnumRequestOption.Bulk; } ButtonData.Data["titleText"] = ButtonData.SelectedText + " for " + TradeName.Text; ButtonData.Data["requestItemProps"] = RequestAct.getRequestItemAddProps( RequestItem.Node ); ButtonData.Data["requestItemNodeTypeId"] = RequestItem.NodeTypeId; ButtonData.Data["relatednodeid"] = NodeId.ToString(); ButtonData.Action = CswEnumNbtButtonAction.request; } break; case PropertyName.Receive: if( _CswNbtResources.Permit.can( CswEnumNbtActionName.Receiving ) ) { // Case CIS-52280 if( Obsolete.Checked == CswEnumTristate.True ) { throw new CswDniException( CswEnumErrorType.Warning, "Can't receive Material " + TradeName + " because it is obsolete.", "Material is obsolete" ); } HasPermission = true; CswNbtActReceiving Act = new CswNbtActReceiving( _CswNbtResources, NodeId ); _CswNbtResources.setAuditActionContext( CswEnumNbtActionName.Receiving ); Action<CswNbtNode> After = delegate( CswNbtNode NewNode ) { CswNbtObjClassContainer newContainer = NewNode; //Case 29436 if( newContainer.isLocationInAccessibleInventoryGroup( _CswNbtResources.CurrentNbtUser.DefaultLocationId ) ) { newContainer.Location.SelectedNodeId = _CswNbtResources.CurrentNbtUser.DefaultLocationId; } newContainer.Owner.RelatedNodeId = _CswNbtResources.CurrentNbtUser.UserId; DateTime ExpirationDate = getDefaultExpirationDate( DateTime.Now ); if( DateTime.MinValue != ExpirationDate ) { newContainer.ExpirationDate.DateTimeValue = ExpirationDate; } //Container.postChanges( false ); }; CswNbtObjClassContainer Container = Act.makeContainer( After ); ButtonData.Data["state"] = new JObject(); ButtonData.Data["state"]["materialId"] = NodeId.ToString(); ButtonData.Data["state"]["materialNodeTypeId"] = NodeTypeId; ButtonData.Data["state"]["tradeName"] = TradeName.Text; ButtonData.Data["state"]["nodeName"] = NodeName; Int32 ContainerLimit = CswConvert.ToInt32( _CswNbtResources.ConfigVbls.getConfigVariableValue( CswEnumNbtConfigurationVariables.container_receipt_limit.ToString() ) ); ButtonData.Data["state"]["containerlimit"] = ContainerLimit; ButtonData.Data["state"]["containerNodeId"] = Container.NodeId.ToString(); ButtonData.Data["state"]["containerNodeTypeId"] = Container.NodeTypeId; bool customBarcodes = CswConvert.ToBoolean( _CswNbtResources.ConfigVbls.getConfigVariableValue( CswEnumNbtConfigurationVariables.custom_barcodes.ToString() ) ); ButtonData.Data["state"]["customBarcodes"] = customBarcodes; ButtonData.Data["state"]["nodetypename"] = this.NodeType.NodeTypeName; ButtonData.Data["state"]["containerAddLayout"] = Act.getContainerAddProps( Container ); onReceiveButtonClick( ButtonData ); _setCofAData( ButtonData ); ButtonData.Action = CswEnumNbtButtonAction.receive; } break; case CswNbtObjClass.PropertyName.Save: HasPermission = true; break; } HasPermission = HasPermission || onPropertySetButtonClick( ButtonData ); if( false == HasPermission ) { throw new CswDniException( CswEnumErrorType.Warning, "You do not have permission to the " + OCPPropName + " action.", "You do not have permission to the " + OCPPropName + " action." ); } } return true; }
}//afterPopulateProps() /// <summary> /// /// </summary> public override bool onPropertySetButtonClick(NbtButtonData ButtonData) { if (null != ButtonData.NodeTypeProp) { //Remember: Save is an OCP too switch (ButtonData.NodeTypeProp.getObjectClassPropName()) { case PropertyName.Fulfill: switch (ButtonData.SelectedText) { case FulfillMenu.Order: ButtonData.Action = CswEnumNbtButtonAction.editprop; ButtonData.Data["nodeid"] = NodeId.ToString(); CswPropIdAttr OrdIdAttr = new CswPropIdAttr(Node, ExternalOrderNumber.NodeTypeProp); ButtonData.Data["propidattr"] = OrdIdAttr.ToString(); ButtonData.Data["title"] = "Enter the External Order Number"; break; case FulfillMenu.Receive: CswNbtPropertySetMaterial NodeAsMaterial = _CswNbtResources.Nodes.GetNode(Material.RelatedNodeId); if (null != NodeAsMaterial) { if (null != NodeAsMaterial.Receive.NodeTypeProp) { NbtButtonData ReceiveData = new NbtButtonData(NodeAsMaterial.Receive.NodeTypeProp); NodeAsMaterial.triggerOnButtonClick(ReceiveData); ButtonData.clone(ReceiveData); if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.SDS)) { CswNbtMetaDataObjectClass SDSDocOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.SDSDocumentClass); Int32 SDSNodeTypeId = SDSDocOC.FirstNodeType.NodeTypeId; if (Int32.MinValue != SDSNodeTypeId) { ButtonData.Data["documenttypeid"] = SDSNodeTypeId; } } } } break; case FulfillMenu.Dispense: JObject InitialQuantity = null; if (false == Quantity.Empty) { InitialQuantity = new JObject(); Quantity.ToJSON(InitialQuantity); } if (null != InitialQuantity) { ButtonData.Data["initialQuantity"] = InitialQuantity; } string Title = "Fulfill Request for " + Quantity.Gestalt + " of " + Material.Gestalt; if (TotalDispensed.Quantity > 0) { Title += " (" + TotalDispensed.Gestalt + ") dispensed."; } ButtonData.Data["title"] = Title; ButtonData.Action = CswEnumNbtButtonAction.dispense; break; case FulfillMenu.Move: ButtonData.Data["title"] = "Fulfill Request for " + Count.Value + " x " + Size.Gestalt + " of " + Material.Gestalt; ButtonData.Data["sizeid"] = Size.RelatedNodeId.ToString(); ButtonData.Data["location"] = Location.Gestalt; ButtonData.Action = CswEnumNbtButtonAction.move; break; } //switch( ButtonData.SelectedText ) _getNextStatus(ButtonData.SelectedText); ButtonData.Data["requestitem"] = ButtonData.Data["requestitem"] ?? new JObject(); ButtonData.Data["requestitem"]["requestMode"] = Type.Value.ToLower(); ButtonData.Data["requestitem"]["requestitemid"] = NodeId.ToString(); ButtonData.Data["requestitem"]["inventorygroupid"] = (InventoryGroup.RelatedNodeId ?? new CswPrimaryKey()).ToString(); ButtonData.Data["requestitem"]["materialid"] = (Material.RelatedNodeId ?? new CswPrimaryKey()).ToString(); ButtonData.Data["requestitem"]["locationid"] = (Location.SelectedNodeId ?? new CswPrimaryKey()).ToString(); break; //case PropertyName.Fulfill: } } return(true); }
/// <summary> /// Button click event for derived classes to implement /// </summary> public abstract bool onPropertySetButtonClick(NbtButtonData ButtonData);