public CswNbtActDispenseContainer(CswNbtResources CswNbtResources, string SourceContainerNodeId, string DispenseTransactionId = null, string DispenseTransactionProperties = null) { _CswNbtResources = CswNbtResources; _CswNbtSdTabsAndProps = new CswNbtSdTabsAndProps(_CswNbtResources); if (false == String.IsNullOrEmpty(SourceContainerNodeId)) { CswPrimaryKey SourceContainerPK = new CswPrimaryKey(); SourceContainerPK.FromString(SourceContainerNodeId); _SourceContainer = _CswNbtResources.Nodes.GetNode(SourceContainerPK); if (false == String.IsNullOrEmpty(DispenseTransactionId)) { CswPrimaryKey ContainerDispenseTransactionId = new CswPrimaryKey(); ContainerDispenseTransactionId.FromString(DispenseTransactionId); _TempDispenseTransaction = _CswNbtResources.Nodes.GetNode(ContainerDispenseTransactionId); if (null != _TempDispenseTransaction) { _CswNbtSdTabsAndProps.saveProps(_TempDispenseTransaction.NodeId, Int32.MinValue, CswConvert.ToJObject(DispenseTransactionProperties), _TempDispenseTransaction.NodeTypeId, null, IsIdentityTab: false, setIsTempToFalse: false); } _SourceContainer.Dispenser = new CswNbtContainerDispenser(_CswNbtResources, new CswNbtContainerDispenseTransactionBuilder(_CswNbtResources, _TempDispenseTransaction), _SourceContainer); } } else { throw new CswDniException(CswEnumErrorType.Error, "Cannot execute dispense contianer action with an undefined Source Container.", "Attempted to constuct CswNbtActDispenseContainer without a valid Source Container."); } if (false == _CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.CISPro)) { throw new CswDniException(CswEnumErrorType.Error, "Cannot use the Dispense action without the required module.", "Attempted to constuct CswNbtActSubmitRequest without the required module."); } }
/// <summary> /// Instance a new EnterprisePart Request Item /// </summary> public CswNbtObjClassRequestItem makeEnterprisePartRequestItem(CswNbtObjClassEnterprisePart EnterprisePart, CswNbtObjClass.NbtButtonData ButtonData) { checkForCentralInventoryGroups(_CswNbtResources); CswNbtObjClassRequestItem RequestItem = null; CswNbtMetaDataObjectClass RequestItemOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass); CswNbtMetaDataNodeType RequestItemNT = RequestItemOC.getNodeTypes().FirstOrDefault(); CswNbtSdTabsAndProps PropsAction = new CswNbtSdTabsAndProps(_CswNbtResources); if (null != RequestItemNT) { RequestItem = PropsAction.getAddNodeAndPostChanges(RequestItemNT, delegate(CswNbtNode NewNode) { CswNbtObjClassRequestItem RequestItemNode = NewNode; RequestItemNode.EnterprisePart.RelatedNodeId = EnterprisePart.NodeId; RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.EnterprisePart; if (null != _ThisUser.DefaultLocationId) { CswNbtObjClassLocation DefaultAsLocation = _CswNbtResources.Nodes.GetNode(_ThisUser.DefaultLocationId); if (null != DefaultAsLocation) { RequestItemNode.Location.SelectedNodeId = DefaultAsLocation.NodeId; RequestItemNode.Location.CachedNodeName = DefaultAsLocation.Location.CachedNodeName; RequestItemNode.Location.CachedPath = DefaultAsLocation.Location.CachedPath; } } }); } return(RequestItem); }
public CswNbtActReceiving(CswNbtResources CswNbtResources, CswPrimaryKey MaterialNodeId) { _CswNbtResources = CswNbtResources; _CswNbtSdTabsAndProps = new CswNbtSdTabsAndProps(_CswNbtResources); if (false == _CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.Containers)) { throw new CswDniException(CswEnumErrorType.Error, "Cannot use the Receive Material action without the required module.", "Attempted to constuct CswNbtActReceiving without the required module."); } _MaterialId = MaterialNodeId; _ContainerOc = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass); }
/// <summary> /// Instance a new Container Request Item based on the selected button option - the type will either be Dispense, Move, or Dispose. /// </summary> public CswNbtObjClassRequestItem makeContainerRequestItem(CswNbtObjClassContainer Container, CswNbtObjClass.NbtButtonData ButtonData) { checkForCentralInventoryGroups(_CswNbtResources); CswNbtObjClassRequestItem RequestItem; CswNbtMetaDataObjectClass RequestItemOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass); CswNbtMetaDataNodeType RequestItemNT = RequestItemOC.getNodeTypes().FirstOrDefault(); CswNbtSdTabsAndProps PropsAction = new CswNbtSdTabsAndProps(_CswNbtResources); RequestItem = PropsAction.getAddNodeAndPostChanges(RequestItemNT, delegate(CswNbtNode NewNode) { CswNbtObjClassRequestItem RequestItemNode = NewNode; if (null != getCurrentRequestNodeId() && null != Container) { RequestItemNode.Container.RelatedNodeId = Container.NodeId; RequestItemNode.Material.RelatedNodeId = Container.Material.RelatedNodeId; CswPrimaryKey SelectedLocationId = CswTools.IsPrimaryKey(_ThisUser.DefaultLocationId) ? _ThisUser.DefaultLocationId : Container.Location.SelectedNodeId; ButtonData.Action = CswEnumNbtButtonAction.request; switch (ButtonData.SelectedText) { case CswEnumNbtContainerRequestMenu.Dispense: RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.ContainerDispense; RequestItemNode.Quantity.UnitId = Container.Quantity.UnitId; RequestItemNode.Size.RelatedNodeId = Container.Size.RelatedNodeId; RequestItemNode.Location.SelectedNodeId = SelectedLocationId; //Scope available units of measure on Quantity based on the Container's Material CswNbtNode MaterialNode = _CswNbtResources.Nodes[Container.Material.RelatedNodeId]; if (null != MaterialNode) { CswNbtUnitViewBuilder Vb = new CswNbtUnitViewBuilder(_CswNbtResources); Vb.setQuantityUnitOfMeasureView(MaterialNode, RequestItemNode.Quantity); } break; case CswEnumNbtContainerRequestMenu.Dispose: RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.ContainerDispose; RequestItemNode.Location.SelectedNodeId = Container.Location.SelectedNodeId; break; case CswEnumNbtContainerRequestMenu.Move: RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.ContainerMove; RequestItemNode.Location.SelectedNodeId = SelectedLocationId; break; } RequestItemNode.Location.RefreshNodeName(); } }); if (null == RequestItem) { throw new CswDniException(CswEnumErrorType.Error, "Could not generate a new request item.", "Failed to create a new Request Item node."); } return(RequestItem); }
/// <summary> /// Get the Add Layout Properties for the given RequestItem /// </summary> public JObject getRequestItemAddProps(CswNbtNode RequestItemNode) { CswEnumNbtNodeEditMode PrevMode = _CswNbtResources.EditMode; _CswNbtResources.EditMode = CswEnumNbtNodeEditMode.Add; CswNbtSdTabsAndProps PropsAction = new CswNbtSdTabsAndProps(_CswNbtResources); JObject Ret = PropsAction.getProps(RequestItemNode, "", null, CswEnumNbtLayoutType.Add); _CswNbtResources.EditMode = PrevMode; return(Ret); }
/// <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 JObject _tryCreateTempMaterial(Int32 MaterialNodeTypeId, CswPrimaryKey SupplierId, string TradeName, string PartNo, string NodeId, bool IsConstituent) { JObject Ret = new JObject(); NewMaterial PotentialMaterial = new NewMaterial(_CswNbtResources, MaterialNodeTypeId, TradeName, SupplierId, IsConstituent, PartNo, NodeId); bool MaterialExists = PotentialMaterial.existsInDb(); Ret["materialexists"] = MaterialExists; if (false == MaterialExists) { CswNbtPropertySetMaterial NodeAsMaterial = PotentialMaterial.Node; if (null == NodeAsMaterial) { NodeAsMaterial = PotentialMaterial.commit(); } if (null != NodeAsMaterial) { Ret["materialid"] = NodeAsMaterial.NodeId.ToString(); Ret["tradename"] = NodeAsMaterial.TradeName.Text; Ret["partno"] = NodeAsMaterial.PartNumber.Text; Ret["supplier"] = false == IsConstituent ? NodeAsMaterial.Supplier.CachedNodeName : ""; Ret["supplierid"] = false == IsConstituent?SupplierId.ToString() : ""; Ret["nodetypeid"] = NodeAsMaterial.NodeTypeId; NodeAsMaterial.Save.setHidden(value: true, SaveToDb: true); CswNbtSdTabsAndProps SdProps = new CswNbtSdTabsAndProps(_CswNbtResources); Ret["properties"] = SdProps.getProps(NodeAsMaterial.Node, string.Empty, null, CswEnumNbtLayoutType.Add); if (_CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.SDS)) { CswNbtMetaDataObjectClass SDSDocOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.SDSDocumentClass); CswNbtMetaDataNodeType SDSNodeType = SDSDocOC.FirstNodeType; if (null != SDSNodeType) { Ret["documenttypeid"] = SDSNodeType.NodeTypeId; } } Ret["noderef"] = NodeAsMaterial.Node.NodeLink; //for the link } } else { CswNbtPropertySetMaterial ExisitingMaterial = PotentialMaterial.existingMaterial(); Ret["noderef"] = ExisitingMaterial.Node.NodeLink; } return(Ret); }
public void getUniqueRow_Test() { Dictionary <Int32, Collection <Int32> > RowsAndCols = new Dictionary <int, Collection <int> >(); //(1,1) Assert.AreEqual(CswNbtSdTabsAndProps.getUniqueRow(Int32.MinValue, Int32.MinValue, RowsAndCols), 1); //(2,1) Assert.AreEqual(CswNbtSdTabsAndProps.getUniqueRow(Int32.MinValue, Int32.MinValue, RowsAndCols), 2); //(3,1) Assert.AreEqual(CswNbtSdTabsAndProps.getUniqueRow(Int32.MinValue, Int32.MinValue, RowsAndCols), 3); //(4,1) Assert.AreEqual(CswNbtSdTabsAndProps.getUniqueRow(3, Int32.MinValue, RowsAndCols), 4); //(5,1) Assert.AreEqual(CswNbtSdTabsAndProps.getUniqueRow(Int32.MinValue, 1, RowsAndCols), 5); //(1,2) Assert.AreEqual(CswNbtSdTabsAndProps.getUniqueRow(Int32.MinValue, 2, RowsAndCols), 1); //(2,2) Assert.AreEqual(CswNbtSdTabsAndProps.getUniqueRow(Int32.MinValue, 2, RowsAndCols), 2); }
/// <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); } } }
/// <summary> /// Instance a new Material Request Item based on the selected button option - the type will either be By Bulk or By Size. /// </summary> public CswNbtObjClassRequestItem makeMaterialRequestItem(CswNbtPropertySetMaterial Material, CswNbtObjClass.NbtButtonData ButtonData) { checkForCentralInventoryGroups(_CswNbtResources); CswNbtObjClassRequestItem RequestItem = null; CswNbtMetaDataObjectClass RequestItemOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass); CswNbtMetaDataNodeType RequestItemNT = RequestItemOC.getNodeTypes().FirstOrDefault(); CswNbtSdTabsAndProps PropsAction = new CswNbtSdTabsAndProps(_CswNbtResources); if (null != RequestItemNT) { RequestItem = PropsAction.getAddNodeAndPostChanges(RequestItemNT, delegate(CswNbtNode NewNode) { CswNbtObjClassRequestItem RequestItemNode = NewNode; RequestItemNode.Material.RelatedNodeId = Material.NodeId; if (null != _ThisUser.DefaultLocationId) { CswNbtObjClassLocation DefaultAsLocation = _CswNbtResources.Nodes.GetNode(_ThisUser.DefaultLocationId); if (null != DefaultAsLocation) { RequestItemNode.Location.SelectedNodeId = DefaultAsLocation.NodeId; RequestItemNode.Location.CachedNodeName = DefaultAsLocation.Location.CachedNodeName; RequestItemNode.Location.CachedPath = DefaultAsLocation.Location.CachedPath; } } switch (ButtonData.SelectedText) { case CswNbtPropertySetMaterial.CswEnumRequestOption.Size: RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.MaterialSize; break; default: //Request by Bulk RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.MaterialBulk; break; } }); } return(RequestItem); }
public JObject saveMaterialProps(CswPrimaryKey NodePk, JObject PropsObj, Int32 NodeTypeId) { JObject Ret = new JObject(); if (CswTools.IsPrimaryKey(NodePk)) { CswNbtPropertySetMaterial MaterialNode = _CswNbtResources.Nodes.GetNode(NodePk); CswNbtSdTabsAndProps SdTabsAndProps = new CswNbtSdTabsAndProps(_CswNbtResources); SdTabsAndProps.saveNodeProps(MaterialNode.Node, PropsObj); switch (MaterialNode.ObjectClass.ObjectClass) { case CswEnumNbtObjectClass.ChemicalClass: CswNbtObjClassChemical ChemicalNode = MaterialNode.Node; Ret["PhysicalState"] = ChemicalNode.PhysicalState.Value; // Add more properties here if you want. break; case CswEnumNbtObjectClass.NonChemicalClass: Ret["PhysicalState"] = CswNbtPropertySetMaterial.CswEnumPhysicalState.NA; // Add properties here! break; case CswEnumNbtObjectClass.BiologicalClass: CswNbtObjClassBiological BioNode = MaterialNode.Node; Ret["PhysicalState"] = BioNode.PhysicalState.Value; break; } } return(Ret); }
public CswNbtActReceiving(CswNbtResources CswNbtResources) { _CswNbtResources = CswNbtResources; _CswNbtSdTabsAndProps = new CswNbtSdTabsAndProps(_CswNbtResources); }
private CswNbtNode _commitMaterialNode(JObject MaterialObj) { CswNbtNode Ret = null; Int32 MaterialNodeTypeId = CswConvert.ToInt32(MaterialObj["materialnodetypeid"]); if (Int32.MinValue != MaterialNodeTypeId) { CswNbtMetaDataNodeType MaterialNt = _CswNbtResources.MetaData.getNodeType(MaterialNodeTypeId); if (null != MaterialNt) { Ret = _CswNbtResources.Nodes[CswConvert.ToString(MaterialObj["materialId"])]; if (null != Ret) { // Set the Vendor node property isTemp = false if necessary bool IsConstituent = CswConvert.ToBoolean(MaterialObj["isConstituent"]); CswPrimaryKey VendorNodePk = CswConvert.ToPrimaryKey(CswConvert.ToString(MaterialObj["supplierid"])); if (CswTools.IsPrimaryKey(VendorNodePk) && false == IsConstituent) { CswNbtObjClassVendor VendorNode = _CswNbtResources.Nodes.GetNode(VendorNodePk); if (null != VendorNode && VendorNode.IsTemp) { VendorNode.PromoteTempToReal(); } } //Ret.IsTemp = false; JObject MaterialProperties = (JObject)MaterialObj["properties"]; CswNbtSdTabsAndProps SdTabsAndProps = new CswNbtSdTabsAndProps(_CswNbtResources); SdTabsAndProps.saveProps(Ret.NodeId, Int32.MinValue, MaterialProperties, Ret.NodeTypeId, null, IsIdentityTab: false, setIsTempToFalse: false); NewMaterial FinalMaterial = new NewMaterial(_CswNbtResources, Ret); FinalMaterial.TradeName = CswConvert.ToString(MaterialObj["tradename"]); if (false == IsConstituent) { FinalMaterial.SupplierId = CswConvert.ToPrimaryKey(CswConvert.ToString(MaterialObj["supplierid"])); FinalMaterial.PartNo = CswConvert.ToString(MaterialObj["partno"]); } CswNbtPropertySetMaterial NodeAsMaterial = FinalMaterial.commit(); NodeAsMaterial.Save.setHidden(value: false, SaveToDb: true); JObject RequestObj = CswConvert.ToJObject(MaterialObj["request"]); if (RequestObj.HasValues) { _processRequest(CswConvert.ToString(RequestObj["requestitemid"]), NodeAsMaterial); } CswNbtActReceiving Receiving = new CswNbtActReceiving(_CswNbtResources); CswPrimaryKey SDSNodeId = new CswPrimaryKey(); if (null != MaterialObj["sdsDocId"]) { SDSNodeId.FromString(MaterialObj["sdsDocId"].ToString()); JObject SDSProps = CswConvert.ToJObject(MaterialObj["sdsDocProperties"]); Receiving.commitSDSDocNode(NodeAsMaterial.NodeId, SDSNodeId, SDSProps); } Ret.PromoteTempToReal(); } } if (null == Ret) { throw new CswDniException(CswEnumErrorType.Error, "Failed to create new material.", "Attempted to call _commitMaterialNode failed."); } } return(Ret); }
public CswNbtWebServiceTabsAndProps(CswNbtResources CswNbtResources, CswNbtStatisticsEvents CswNbtStatisticsEvents, bool Multi = false, bool ConfigMode = false) { _TabsPropsSd = new CswNbtSdTabsAndProps(CswNbtResources, CswNbtStatisticsEvents, Multi, ConfigMode); }
public CswNbtActDispenseContainer(CswNbtResources CswNbtResources) { _CswNbtResources = CswNbtResources; _CswNbtSdTabsAndProps = new CswNbtSdTabsAndProps(_CswNbtResources); }
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); }