public void Update(NBrightInfo info) { var localfields = info.GetXmlProperty("genxml/hidden/localizedfields").Split(','); foreach (var f in localfields) { if (f == "genxml/edt/message") { // special processing for editor, to place code in standard place. if (DataLangRecord.XMLDoc.SelectSingleNode("genxml/edt") == null) { DataLangRecord.AddSingleNode("edt", "", "genxml"); } if (info.GetXmlProperty("genxml/textbox/message") == "") { DataLangRecord.SetXmlProperty(f, info.GetXmlProperty("genxml/edt/message")); } else { DataLangRecord.SetXmlProperty(f, info.GetXmlProperty("genxml/textbox/message")); // ajax on ckeditor (Ajax diesn't work for telrik) } } else { DataLangRecord.SetXmlProperty(f, info.GetXmlProperty(f)); } DataRecord.RemoveXmlNode(f); } var fields = info.GetXmlProperty("genxml/hidden/fields").Split(','); foreach (var f in fields) { DataRecord.SetXmlProperty(f, info.GetXmlProperty(f)); // if we have a image field then we need to create the imageurl field if (info.GetXmlProperty(f.Replace("textbox/", "hidden/hidinfo")) == "Img=True") { DataRecord.SetXmlProperty(f.Replace("textbox/", "hidden/") + "url", StoreSettings.Current.FolderImages + "/" + info.GetXmlProperty(f.Replace("textbox/", "hidden/hid"))); DataRecord.SetXmlProperty(f.Replace("textbox/", "hidden/") + "path", StoreSettings.Current.FolderImagesMapPath + "\\" + info.GetXmlProperty(f.Replace("textbox/", "hidden/hid"))); } if (f == "genxml/dropdownlist/ddlparentcatid") { var parentitemid = info.GetXmlProperty(f); if (!Utils.IsNumeric(parentitemid)) { parentitemid = "0"; } if (DataRecord.ParentItemId != Convert.ToInt32(parentitemid)) { _oldcatcascadeid = DataRecord.ParentItemId; _doCascadeIndex = true; DataRecord.ParentItemId = Convert.ToInt32(parentitemid); } } DataLangRecord.RemoveXmlNode(f); } }
private static NBrightInfo UpdateLangNodeFields(String xmlname, NBrightInfo baseInfo, NBrightInfo dlang) { var nodList3I = baseInfo.XMLDoc.SelectNodes("genxml/" + xmlname + "/genxml"); if (nodList3I != null) { for (int i = 1; i <= nodList3I.Count; i++) { var nodList3 = baseInfo.XMLDoc.SelectNodes("genxml/" + xmlname + "/genxml[" + i + "]/textbox/*"); if (nodList3 != null) { foreach (XmlNode nod in nodList3) { if (nod.InnerText.Trim() != "") { if (dlang.GetXmlProperty("genxml/" + xmlname + "/genxml[" + i + "]/textbox/" + nod.Name) == "") { if (dlang.XMLDoc.SelectSingleNode("genxml/" + xmlname + "/genxml[" + i + "]") == null) { var baseXml = baseInfo.XMLDoc.SelectSingleNode("genxml/" + xmlname + "/genxml[" + i + "]"); if (baseXml != null) { if (dlang.XMLDoc.SelectSingleNode("genxml/" + xmlname) == null) { dlang.AddSingleNode(xmlname, "", "genxml"); } dlang.AddXmlNode(baseXml.OuterXml, "genxml", "genxml/" + xmlname); } } dlang.SetXmlProperty("genxml/" + xmlname + "/genxml[" + i + "]/textbox/" + nod.Name, nod.InnerText); } } } } } } return(dlang); }
public void Update(NBrightInfo info) { // build list of xpath fields that need processing. var updatefields = new List <String>(); var fieldList = NBrightBuyUtils.GetAllFieldxPaths(info); foreach (var xpath in fieldList) { if (info.GetXmlProperty(xpath + "/@update") == "lang") { updatefields.Add(xpath); } } foreach (var f in updatefields) { if (f.EndsWith("/message")) { // special processing for editor, to place code in standard place. if (DataLangRecord.XMLDoc.SelectSingleNode("genxml/edt") == null) { DataLangRecord.AddSingleNode("edt", "", "genxml"); } if (info.GetXmlProperty("genxml/textbox/message") == "") { DataLangRecord.SetXmlProperty("genxml/edt/message", info.GetXmlPropertyRaw("genxml/edt/message")); } else { DataLangRecord.SetXmlProperty("genxml/edt/message", info.GetXmlPropertyRaw("genxml/textbox/message")); // ajax on ckeditor (Ajax diesn't work for telrik) } } else { DataLangRecord.RemoveXmlNode(f); var xpathDest = f.Split('/'); if (xpathDest.Count() >= 2) { DataLangRecord.AddXmlNode(info.XMLData, f, xpathDest[0] + "/" + xpathDest[1]); } } var datatype = info.GetXmlProperty(f + "/@datatype"); if (datatype == "date") { DataLangRecord.SetXmlProperty(f, info.GetXmlProperty(f), TypeCode.DateTime); } else if (datatype == "double") { DataLangRecord.SetXmlPropertyDouble(f, info.GetXmlProperty(f)); } else if (datatype == "html") { DataLangRecord.SetXmlProperty(f, info.GetXmlPropertyRaw(f)); } else { DataLangRecord.SetXmlProperty(f, info.GetXmlProperty(f).Trim()); } DataRecord.RemoveXmlNode(f); } updatefields = new List <String>(); fieldList = NBrightBuyUtils.GetAllFieldxPaths(info); foreach (var xpath in fieldList) { var id = xpath.Split('/').Last(); if (info.GetXmlProperty(xpath + "/@update") == "save") { updatefields.Add(xpath); } } foreach (var f in updatefields) { var datatype = info.GetXmlProperty(f + "/@datatype"); if (datatype == "date") { DataRecord.SetXmlProperty(f, info.GetXmlProperty(f), TypeCode.DateTime); } else if (datatype == "double") { DataRecord.SetXmlPropertyDouble(f, info.GetXmlProperty(f)); } else if (datatype == "html") { DataRecord.SetXmlProperty(f, info.GetXmlPropertyRaw(f)); } else { DataRecord.SetXmlProperty(f, info.GetXmlProperty(f)); } // if we have a image field then we need to create the imageurl field if (info.GetXmlProperty(f.Replace("textbox/", "hidden/hidinfo")) == "Img=True") { DataRecord.SetXmlProperty(f.Replace("textbox/", "hidden/") + "url", StoreSettings.Current.FolderImages + "/" + info.GetXmlProperty(f.Replace("textbox/", "hidden/hid"))); DataRecord.SetXmlProperty(f.Replace("textbox/", "hidden/") + "path", StoreSettings.Current.FolderImagesMapPath + "\\" + info.GetXmlProperty(f.Replace("textbox/", "hidden/hid"))); } if (f == "genxml/dropdownlist/ddlparentcatid") { var parentitemid = info.GetXmlProperty(f); if (!Utils.IsNumeric(parentitemid)) { parentitemid = "0"; } if (DataRecord.ParentItemId != Convert.ToInt32(parentitemid)) { _oldcatcascadeid = DataRecord.ParentItemId; _doCascadeIndex = true; DataRecord.ParentItemId = Convert.ToInt32(parentitemid); } } DataLangRecord.RemoveXmlNode(f); } }
public String AddSingleItem(String strproductid, String strmodelId, String strqtyId, NBrightInfo objInfoIn, Boolean debugMode = false, int replaceIndex = -1) { if (!Utils.IsNumeric(strqtyId) || Convert.ToInt32(strqtyId) <= 0) return ""; if (StoreSettings.Current.DebugModeFileOut) objInfoIn.XMLDoc.Save(PortalSettings.Current.HomeDirectoryMapPath + "debug_addtobasket.xml"); var objInfo = new NBrightInfo(); objInfo.XMLData = "<genxml></genxml>"; // get productid if (Utils.IsNumeric(strproductid)) { var itemcode = ""; // The itemcode var is used to decide if a cart item is new or already existing in the cart. var productData = ProductUtils.GetProductData(Convert.ToInt32(strproductid), Utils.GetCurrentCulture()); if (productData.Info == null) return ""; // we may have a invalid productid that has been saved by a cookie, but since has been deleted. var modelInfo = productData.GetModel(strmodelId); if (modelInfo == null) return ""; // no valid model objInfo.AddSingleNode("productid", strproductid, "genxml"); itemcode += strproductid + "-"; objInfo.AddSingleNode("modelid", strmodelId, "genxml"); itemcode += strmodelId + "-"; // Get Qty objInfo.AddSingleNode("qty", strqtyId, "genxml"); #region "Get model and product data" objInfo.AddSingleNode("productname", productData.Info.GetXmlPropertyRaw("genxml/lang/genxml/textbox/txtproductname"), "genxml"); objInfo.AddSingleNode("summary", productData.Info.GetXmlPropertyRaw("genxml/lang/genxml/textbox/txtsummary"), "genxml"); objInfo.AddSingleNode("modelref", modelInfo.GetXmlPropertyRaw("genxml/textbox/txtmodelref"), "genxml"); objInfo.AddSingleNode("modeldesc", modelInfo.GetXmlPropertyRaw("genxml/lang/genxml/textbox/txtmodelname"), "genxml"); objInfo.AddSingleNode("modelextra", modelInfo.GetXmlPropertyRaw("genxml/lang/genxml/textbox/txtextra"), "genxml"); objInfo.AddSingleNode("unitcost", modelInfo.GetXmlPropertyRaw("genxml/textbox/txtunitcost"), "genxml"); objInfo.AddSingleNode("dealercost", modelInfo.GetXmlPropertyRaw("genxml/textbox/txtdealercost"), "genxml"); objInfo.AddSingleNode("taxratecode", modelInfo.GetXmlPropertyRaw("genxml/dropdownlist/taxrate"), "genxml"); objInfo.AddSingleNode("saleprice", modelInfo.GetXmlPropertyRaw("genxml/textbox/txtsaleprice"), "genxml"); objInfo.AddSingleNode("basecost", modelInfo.GetXmlPropertyRaw("genxml/textbox/txtunitcost"), "genxml"); // flag if dealer var userInfo = UserController.Instance.GetCurrentUserInfo(); if (userInfo != null && userInfo.IsInRole(StoreSettings.DealerRole) && StoreSettings.Current.Get("enabledealer") == "True") objInfo.SetXmlProperty("genxml/isdealer", "True"); else objInfo.SetXmlProperty("genxml/isdealer", "False"); //move all product and model data into cart item, so we can display bespoke fields. objInfo.AddSingleNode("productxml", productData.Info.XMLData, "genxml"); #endregion #region "Get option Data" //build option data for cart Double additionalCosts = 0; var strXmlIn = ""; var optionDataList = new Dictionary<String, String>(); if (objInfoIn.XMLDoc != null) { var nodList = objInfoIn.XMLDoc.SelectNodes("genxml/textbox/*[starts-with(name(), 'optiontxt')]"); if (nodList != null) foreach (XmlNode nod in nodList) { strXmlIn = "<option>"; var idx = nod.Name.Replace("optiontxt", ""); var optionid = objInfoIn.GetXmlProperty("genxml/hidden/optionid" + idx); var optionInfo = productData.GetOption(optionid); var optvaltext = nod.InnerText; strXmlIn += "<optid>" + optionid + "</optid>"; strXmlIn += "<optvaltext>" + optvaltext + "</optvaltext>"; itemcode += optionid + "-" + Utils.GetUniqueKey() + "-"; strXmlIn += "<optname>" + optionInfo.GetXmlProperty("genxml/lang/genxml/textbox/txtoptiondesc") + "</optname>"; strXmlIn += "</option>"; if (!optionDataList.ContainsKey(idx)) optionDataList.Add(idx, strXmlIn); } nodList = objInfoIn.XMLDoc.SelectNodes("genxml/dropdownlist/*[starts-with(name(), 'optionddl')]"); if (nodList != null) foreach (XmlNode nod in nodList) { strXmlIn = "<option>"; var idx = nod.Name.Replace("optionddl", ""); var optionid = objInfoIn.GetXmlProperty("genxml/hidden/optionid" + idx); var optionvalueid = nod.InnerText; var optionValueInfo = productData.GetOptionValue(optionid, optionvalueid); var optionInfo = productData.GetOption(optionid); strXmlIn += "<optid>" + optionid + "</optid>"; strXmlIn += "<optvalueid>" + optionvalueid + "</optvalueid>"; itemcode += optionid + ":" + optionvalueid + "-"; strXmlIn += "<optname>" + optionInfo.GetXmlProperty("genxml/lang/genxml/textbox/txtoptiondesc") + "</optname>"; strXmlIn += "<optvalcost>" + optionValueInfo.GetXmlProperty("genxml/textbox/txtaddedcost") + "</optvalcost>"; strXmlIn += "<optvaltext>" + optionValueInfo.GetXmlProperty("genxml/lang/genxml/textbox/txtoptionvaluedesc") + "</optvaltext>"; strXmlIn += "</option>"; additionalCosts += optionValueInfo.GetXmlPropertyDouble("genxml/textbox/txtaddedcost"); if (!optionDataList.ContainsKey(idx)) optionDataList.Add(idx, strXmlIn); } nodList = objInfoIn.XMLDoc.SelectNodes("genxml/checkbox/*[starts-with(name(), 'optionchk')]"); if (nodList != null) foreach (XmlNode nod in nodList) { strXmlIn = "<option>"; var idx = nod.Name.Replace("optionchk", ""); var optionid = objInfoIn.GetXmlProperty("genxml/hidden/optionid" + idx); var optionvalueid = nod.InnerText; var optionValueInfo = productData.GetOptionValue(optionid, ""); // checkbox does not have optionvalueid var optionInfo = productData.GetOption(optionid); strXmlIn += "<optid>" + optionid + "</optid>"; strXmlIn += "<optvalueid>" + optionvalueid + "</optvalueid>"; itemcode += optionid + ":" + optionvalueid + "-"; strXmlIn += "<optname>" + optionInfo.GetXmlProperty("genxml/lang/genxml/textbox/txtoptiondesc") + "</optname>"; strXmlIn += "<optvalcost>" + optionValueInfo.GetXmlProperty("genxml/textbox/txtaddedcost") + "</optvalcost>"; strXmlIn += "<optvaltext>" + optionValueInfo.GetXmlProperty("genxml/lang/genxml/textbox/txtoptionvaluedesc") + "</optvaltext>"; strXmlIn += "</option>"; if (nod.InnerText.ToLower() == "true") additionalCosts += optionValueInfo.GetXmlPropertyDouble("genxml/textbox/txtaddedcost"); if (!optionDataList.ContainsKey(idx)) optionDataList.Add(idx, strXmlIn); } } // we need to save the options in the same order as in product, so index works correct on the template tokens. var strXmlOpt = "<options>"; for (int i = 1; i <= optionDataList.Count; i++) { if (optionDataList.ContainsKey(i.ToString(""))) { strXmlOpt += optionDataList[i.ToString("")]; } } strXmlOpt += "</options>"; objInfo.AddXmlNode(strXmlOpt, "options", "genxml"); #endregion //add additional costs from optionvalues (Add to both dealer and unit cost) if (additionalCosts > 0) { objInfo.SetXmlPropertyDouble("genxml/additionalcosts", additionalCosts); var uc = objInfo.GetXmlPropertyDouble("genxml/unitcost"); var dc = objInfo.GetXmlPropertyDouble("genxml/dealercost"); uc += additionalCosts; if (dc > 0) dc += additionalCosts; // only calc dealer cost if it's > zero (active) objInfo.SetXmlPropertyDouble("genxml/unitcost", uc); objInfo.SetXmlPropertyDouble("genxml/dealercost", dc); } objInfo.AddSingleNode("itemcode", itemcode.TrimEnd('-'), "genxml"); // check if we have a client file upload var clientfileuopload = objInfoIn.GetXmlProperty("genxml/textbox/optionfilelist") != ""; //replace the item if it's already in the list. var nodItem = PurchaseInfo.XMLDoc.SelectSingleNode("genxml/items/genxml[itemcode='" + itemcode.TrimEnd('-') + "']"); if (nodItem == null || clientfileuopload) { #region "Client Files" if (clientfileuopload) { // client has uploaded files, so save these to client upload folder and create link in cart data. var flist = objInfoIn.GetXmlProperty("genxml/textbox/optionfilelist").TrimEnd(','); var fprefix = objInfoIn.GetXmlProperty("genxml/hidden/optionfileprefix") + "_"; var fileXml = "<clientfiles>"; foreach (var f in flist.Split(',')) { var fullName = StoreSettings.Current.FolderTempMapPath.TrimEnd(Convert.ToChar("\\")) + "\\" + fprefix + f; var extension = Path.GetExtension(fullName); if (File.Exists(fullName)) { var newDocFileName = StoreSettings.Current.FolderClientUploadsMapPath.TrimEnd(Convert.ToChar("\\")) + "\\" + Guid.NewGuid() + extension; File.Copy(fullName, newDocFileName, true); File.Delete(fullName); var docurl = StoreSettings.Current.FolderClientUploads.TrimEnd('/') + "/" + Path.GetFileName(newDocFileName); fileXml += "<file>"; fileXml += "<mappath>" + newDocFileName + "</mappath>"; fileXml += "<url>" + docurl + "</url>"; fileXml += "<name>" + f + "</name>"; fileXml += "<prefix>" + fprefix + "</prefix>"; fileXml += "</file>"; } } fileXml += "</clientfiles>"; objInfo.AddXmlNode(fileXml, "clientfiles", "genxml"); } #endregion if (replaceIndex >= 0 && replaceIndex < _itemList.Count) _itemList[replaceIndex] = objInfo; //replace else _itemList.Add(objInfo); //add as new item } else { //replace item var qty = nodItem.SelectSingleNode("qty"); if (qty != null && Utils.IsNumeric(qty.InnerText) && Utils.IsNumeric(strqtyId)) { var userqtylimit = objInfoIn.GetXmlPropertyInt("genxml/hidden/userqtylimit"); if (userqtylimit > 0 && Convert.ToInt32(qty.InnerText) >= userqtylimit) return ""; //add new qty and replace item PurchaseInfo.RemoveXmlNode("genxml/items/genxml[itemcode='" + itemcode.TrimEnd('-') + "']"); _itemList = GetCartItemList(); var newQty = Convert.ToString(Convert.ToInt32(qty.InnerText) + Convert.ToInt32(strqtyId)); objInfo.SetXmlProperty("genxml/qty", newQty, TypeCode.String, false); _itemList.Add(objInfo); } } //add nodes for any fields that might exist in cart template objInfo.AddSingleNode("textbox", "", "genxml"); objInfo.AddSingleNode("dropdownlist", "", "genxml"); objInfo.AddSingleNode("radiobuttonlist", "", "genxml"); objInfo.AddSingleNode("checkbox", "", "genxml"); SavePurchaseData(); // need to save after each add, so it exists in data when we check it already exists for updating. // return the message status code in textData, non-critical (usually empty) return objInfo.TextData; } return ""; }
/// <summary> /// Get CartID from cookie or session /// </summary> /// <returns></returns> protected int PopulatePurchaseData(int entryId) { _entryId = entryId; //populate cart data var modCtrl = new NBrightBuyController(); PurchaseInfo = modCtrl.Get(Convert.ToInt32(_entryId)); if (PurchaseInfo == null) { PurchaseInfo = new NBrightInfo(true); PurchaseInfo.TypeCode = PurchaseTypeCode; //add items node so we can add items PurchaseInfo.AddSingleNode("items","","genxml"); if (entryId == -1) { PurchaseInfo.UserId = UserController.Instance.GetCurrentUserInfo().UserID; // new cart created from front office, so give current userid. EditMode = ""; } } PurchaseTypeCode = PurchaseInfo.TypeCode; UserId = PurchaseInfo.UserId; //retain theuserid, if created by a manager for a client. var currentuserInfo = UserController.Instance.GetCurrentUserInfo(); if (UserId > 0 && EditMode != "") // 0 is default userid for new cart { PurchaseInfo.SetXmlProperty("genxml/clientmode", "True", TypeCode.String, false); PurchaseInfo.SetXmlProperty("genxml/clientdisplayname", currentuserInfo.DisplayName); } else { PurchaseInfo.SetXmlProperty("genxml/clientmode", "False", TypeCode.String, false); PurchaseInfo.SetXmlProperty("genxml/clientdisplayname", ""); } //build item list PopulateItemList(); return Convert.ToInt32(_entryId); }
private List<NBrightInfo> BuildModelList(NBrightInfo dataItemObj,Boolean addSalePrices = false) { // see if we have a cart record var xpathprefix = ""; var cartrecord = dataItemObj.GetXmlProperty("genxml/productid") != ""; // if we have a productid node, then is datarecord is a cart item if (cartrecord) xpathprefix = "genxml/productxml/"; //build models list var objL = new List<NBrightInfo>(); var nodList = dataItemObj.XMLDoc.SelectNodes(xpathprefix + "genxml/models/*"); if (nodList != null) { #region "Init" var isDealer = CmsProviderManager.Default.IsInRole(StoreSettings.DealerRole); #endregion var lp = 1; foreach (XmlNode nod in nodList) { // check if Deleted var selectDeletedFlag = nod.SelectSingleNode("checkbox/chkdeleted"); if ((selectDeletedFlag == null) || selectDeletedFlag.InnerText != "True") { // check if hidden var selectHiddenFlag = nod.SelectSingleNode("checkbox/chkishidden"); if ((selectHiddenFlag == null) || selectHiddenFlag.InnerText != "True") { // check if dealer var selectDealerFlag = nod.SelectSingleNode("checkbox/chkdealeronly"); if (((selectDealerFlag == null) || (!isDealer && (selectDealerFlag.InnerText != "True"))) | isDealer) { // get modelid var nodModelId = nod.SelectSingleNode("hidden/modelid"); var modelId = ""; if (nodModelId != null) modelId = nodModelId.InnerText; //Build NBrightInfo class for model var o = new NBrightInfo(); o.XMLData = nod.OuterXml; #region "Add Lanaguge Data" var nodLang = dataItemObj.XMLDoc.SelectSingleNode(xpathprefix + "genxml/lang/genxml/models/genxml[" + lp.ToString("") + "]"); if (nodLang != null) { o.AddSingleNode("lang", "", "genxml"); o.AddXmlNode(nodLang.OuterXml, "genxml", "genxml/lang"); } #endregion #region "Prices" if (addSalePrices) { var uInfo = UserController.GetCurrentUserInfo(); if (uInfo != null) { o.SetXmlPropertyDouble("genxml/hidden/saleprice", "-1"); // set to -1 so unitcost is displayed (turns off saleprice) //[TODO: convert to new promotion provider] //var objPromoCtrl = new PromoController(); //var objPCtrl = new ProductController(); //var objM = objPCtrl.GetModel(modelId, Utils.GetCurrentCulture()); //var salePrice = objPromoCtrl.GetSalePrice(objM, uInfo); //o.AddSingleNode("saleprice", salePrice.ToString(CultureInfo.GetCultureInfo("en-US")), "genxml/hidden"); } } #endregion // product data for display in modellist o.SetXmlProperty("genxml/lang/genxml/textbox/txtproductname", dataItemObj.GetXmlProperty(xpathprefix + "genxml/lang/genxml/textbox/txtproductname")); o.SetXmlProperty("genxml/textbox/txtproductref", dataItemObj.GetXmlProperty(xpathprefix + "genxml/textbox/txtproductref")); if (cartrecord) o.SetXmlProperty("genxml/hidden/productid", dataItemObj.GetXmlProperty("genxml/productid")); else o.SetXmlProperty("genxml/hidden/productid", dataItemObj.ItemID.ToString("")); objL.Add(o); } } } lp += 1; } } return objL; }
private NBrightInfo ValidateCartItem(int portalId, int userId, NBrightInfo cartItemInfo, Boolean removeZeroQtyItems = false) { #region "get cart values" cartItemInfo = NBrightBuyUtils.ProcessEventProvider(EventActions.ValidateCartItemBefore, cartItemInfo); var modelid = cartItemInfo.GetXmlProperty("genxml/modelid"); var prdid = cartItemInfo.GetXmlPropertyInt("genxml/productid"); var qty = cartItemInfo.GetXmlPropertyDouble("genxml/qty"); var lang = cartItemInfo.GetXmlProperty("genxml/lang"); if (removeZeroQtyItems && qty == 0) { return(null); // Remove zero qty item } if (lang == "") { lang = Utils.GetCurrentCulture(); } var prd = ProductUtils.GetProductData(prdid, lang); if (!prd.Exists || prd.Disabled) { return(null); //Invalid product remove from cart } // update product xml data on cart (product may have change via plugin so always replace) cartItemInfo.RemoveXmlNode("genxml/productxml"); // add entitytype for validation methods prd.Info.SetXmlProperty("genxml/entitytypecode", prd.Info.TypeCode); cartItemInfo.AddSingleNode("productxml", prd.Info.XMLData, "genxml"); var prdModel = prd.GetModel(modelid); if (prdModel == null) { return(null); // Invalid Model remove from cart } // check if dealer (for tax calc) if (NBrightBuyUtils.IsDealer()) { cartItemInfo.SetXmlProperty("genxml/isdealer", "True"); } else { cartItemInfo.SetXmlProperty("genxml/isdealer", "False"); } // check for price change var unitcost = prdModel.GetXmlPropertyDouble("genxml/textbox/txtunitcost"); var dealercost = prdModel.GetXmlPropertyDouble("genxml/textbox/txtdealercost"); var saleprice = prdModel.GetXmlPropertyDouble("genxml/textbox/txtsaleprice"); var dealersalecost = prdModel.GetXmlPropertyDouble("genxml/textbox/txtdealersale"); // always make sale price best price if (unitcost > 0 && (unitcost < saleprice || saleprice <= 0)) { saleprice = unitcost; } // if we have a promoprice use it as saleprice (This is passed in via events provider like "Multi-Buy promotions") if (cartItemInfo.GetXmlPropertyDouble("genxml/promoprice") > 0 && cartItemInfo.GetXmlPropertyDouble("genxml/promoprice") < saleprice) { saleprice = cartItemInfo.GetXmlPropertyDouble("genxml/promoprice"); } // always assign the dealercost the best price. if (dealersalecost > 0 && dealersalecost < dealercost) { dealercost = dealersalecost; } if (saleprice > 0 && (saleprice < dealercost || dealercost <= 0)) { dealercost = saleprice; } if (unitcost > 0 && (unitcost < dealercost || dealercost <= 0)) { dealercost = unitcost; } // calc sell price // sellcost = the calculated cost of the item. var sellcost = unitcost; if (saleprice > 0 && saleprice < sellcost) { sellcost = saleprice; } if (NBrightBuyUtils.IsDealer()) { if (dealercost > 0 && dealercost < sellcost) { sellcost = dealercost; } } // -------------------------------------------- #endregion if (prdModel != null) { #region "Stock Control" var stockon = prdModel.GetXmlPropertyBool("genxml/checkbox/chkstockon"); var stocklevel = prdModel.GetXmlPropertyDouble("genxml/textbox/txtqtyremaining"); var minStock = prdModel.GetXmlPropertyDouble("genxml/textbox/txtqtyminstock"); if (minStock == 0) { minStock = StoreSettings.Current.GetInt("minimumstocklevel"); } var maxStock = prdModel.GetXmlPropertyDouble("genxml/textbox/txtqtystockset"); var weight = prdModel.GetXmlPropertyDouble("genxml/textbox/weight"); if (stockon) { stocklevel = stocklevel - minStock; stocklevel = stocklevel - prd.GetModelTransQty(modelid, _cartId); if (stocklevel < qty) { qty = stocklevel; if (qty <= 0) { qty = 0; cartItemInfo.SetXmlProperty("genxml/validatecode", "OUTOFSTOCK"); } else { cartItemInfo.SetXmlProperty("genxml/validatecode", "STOCKADJ"); } base.SetValidated(false); cartItemInfo.SetXmlPropertyDouble("genxml/qty", qty.ToString("")); } } #endregion #region "Addtional options costs" Double additionalCosts = 0; var optNods = cartItemInfo.XMLDoc.SelectNodes("genxml/options/*"); if (optNods != null) { var lp = 1; foreach (XmlNode nod in optNods) { var optid = nod.SelectSingleNode("optid"); if (optid != null) { var optvalueid = nod.SelectSingleNode("optvalueid"); if (optvalueid != null && optvalueid.InnerText != "False") { XmlNode optvalcostnod; if (optvalueid.InnerText == "True") { optvalcostnod = cartItemInfo.XMLDoc.SelectSingleNode("genxml/productxml/genxml/optionvalues[@optionid='" + optid.InnerText + "']/genxml/textbox/txtaddedcost"); } else { optvalcostnod = cartItemInfo.XMLDoc.SelectSingleNode("genxml/productxml/genxml/optionvalues/genxml[./hidden/optionvalueid='" + optvalueid.InnerText + "']/textbox/txtaddedcost"); } if (optvalcostnod != null) { var optvalcost = optvalcostnod.InnerText; if (Utils.IsNumeric(optvalcost)) { cartItemInfo.SetXmlPropertyDouble("genxml/options/option[" + lp + "]/optvalcost", optvalcost); var optvaltotal = Convert.ToDouble(optvalcost, CultureInfo.GetCultureInfo("en-US")) * qty; cartItemInfo.SetXmlPropertyDouble("genxml/options/option[" + lp + "]/optvaltotal", optvaltotal); additionalCosts += optvaltotal; } } else { cartItemInfo.SetXmlPropertyDouble("genxml/options/option[" + lp + "]/optvalcost", "0"); cartItemInfo.SetXmlPropertyDouble("genxml/options/option[" + lp + "]/optvaltotal", "0"); } } } lp += 1; } } if (qty > 0) // can't devide by zero { unitcost += (additionalCosts / qty); if (dealercost > 0) { dealercost += (additionalCosts / qty); // zero turns off } if (saleprice > 0) { saleprice += (additionalCosts / qty); // zero turns off } sellcost += (additionalCosts / qty); } #endregion var totalcost = qty * unitcost; var totalsellcost = qty * sellcost; var totalweight = weight * qty; cartItemInfo.SetXmlPropertyDouble("genxml/unitcost", unitcost); cartItemInfo.SetXmlPropertyDouble("genxml/dealercost", dealercost); cartItemInfo.SetXmlPropertyDouble("genxml/saleprice", saleprice); cartItemInfo.SetXmlPropertyDouble("genxml/totalweight", totalweight.ToString("")); cartItemInfo.SetXmlPropertyDouble("genxml/totalcost", totalcost); cartItemInfo.SetXmlPropertyDouble("genxml/totaldealerbonus", (totalcost - (qty * dealercost))); Double salediscount = 0; Double discountcodeamt = 0; Double totaldiscount = 0; //add update genxml/discountcodeamt var discountcode = PurchaseInfo.GetXmlProperty("genxml/extrainfo/genxml/textbox/promocode"); if (discountcode != "") { cartItemInfo = DiscountCodeInterface.UpdateItemPercentDiscountCode(PortalId, UserId, cartItemInfo, discountcode); discountcodeamt = cartItemInfo.GetXmlPropertyDouble("genxml/discountcodeamt"); if (discountcodeamt > 0) { PurchaseInfo.SetXmlProperty("genxml/discountprocessed", "False"); } } if (NBrightBuyUtils.IsDealer()) { salediscount = (unitcost - dealercost); } else { salediscount = (unitcost - saleprice); } totaldiscount = (salediscount * qty) + discountcodeamt; // add on any promo code amount if (totaldiscount < 0) { totaldiscount = 0; } // if we have a promodiscount use it if (cartItemInfo.GetXmlPropertyDouble("genxml/promodiscount") > 0) { totaldiscount = cartItemInfo.GetXmlPropertyDouble("genxml/promodiscount"); totalcost = totalcost - totaldiscount; if (totalcost < 0) { totalcost = 0; } cartItemInfo.SetXmlPropertyDouble("genxml/appliedtotalcost", totalcost); } cartItemInfo.SetXmlPropertyDouble("genxml/totaldiscount", totaldiscount); // if product is on sale then we need to display the sale price in the cart, and any discount codes don;t show at this cart item level, only on the order total. cartItemInfo.SetXmlPropertyDouble("genxml/appliedtotalcost", totalsellcost); cartItemInfo.SetXmlPropertyDouble("genxml/appliedcost", sellcost); // calc tax for item var taxproviderkey = PurchaseInfo.GetXmlProperty("genxml/hidden/taxproviderkey"); var taxprov = TaxInterface.Instance(taxproviderkey); if (taxprov != null) { var nbi = (NBrightInfo)cartItemInfo.Clone(); cartItemInfo.SetXmlPropertyDouble("genxml/taxcost", taxprov.CalculateItemTax(nbi)); } } cartItemInfo = NBrightBuyUtils.ProcessEventProvider(EventActions.ValidateCartItemAfter, cartItemInfo); return(cartItemInfo); }
private void PopulateClientData(int userId) { _clientInfo = new NBrightInfo(true); _clientInfo.ItemID = userId; _clientInfo.UserId = userId; _clientInfo.PortalId = PortalId; _userInfo = UserController.GetUserById(PortalId, userId); if (_userInfo != null) { Exists = true; _clientInfo.ModifiedDate = _userInfo.Membership.CreatedDate; foreach (var propertyInfo in _userInfo.GetType().GetProperties()) { if (propertyInfo.CanRead) { var pv = propertyInfo.GetValue(_userInfo, null); if (pv == null) { pv = ""; } _clientInfo.SetXmlProperty("genxml/textbox/" + propertyInfo.Name.ToLower(), pv.ToString()); } } foreach (DotNetNuke.Entities.Profile.ProfilePropertyDefinition p in _userInfo.Profile.ProfileProperties) { _clientInfo.SetXmlProperty("genxml/textbox/" + p.PropertyName.ToLower(), p.PropertyValue); } _clientInfo.AddSingleNode("membership", "", "genxml"); foreach (var propertyInfo in _userInfo.Membership.GetType().GetProperties()) { if (propertyInfo.CanRead) { var pv = propertyInfo.GetValue(_userInfo.Membership, null); if (pv != null) { _clientInfo.SetXmlProperty("genxml/membership/" + propertyInfo.Name.ToLower(), pv.ToString()); } } } if (_userInfo.IsInRole(StoreSettings.ClientEditorRole)) { _clientInfo.SetXmlProperty("genxml/checkbox/clienteditorrole", "True"); } else { _clientInfo.SetXmlProperty("genxml/checkbox/clienteditorrole", "False"); } var objCtrl = new NBrightBuyController(); DataRecord = objCtrl.GetByType(PortalId, -1, "CLIENT", _userInfo.UserID.ToString("")); if (DataRecord == null) { DataRecord = new NBrightInfo(true); DataRecord.ItemID = -1; DataRecord.UserId = _userInfo.UserID; DataRecord.PortalId = PortalId; DataRecord.ModuleId = -1; DataRecord.TypeCode = "CLIENT"; } DiscountCodes = GetEntityList("discountcodes"); VoucherCodes = GetEntityList("vouchercodes"); } }
private NBrightInfo ValidateCartItem(int portalId, int userId, NBrightInfo cartItemInfo) { cartItemInfo = NBrightBuyUtils.ProcessEventProvider(EventActions.ValidateCartItemBefore, cartItemInfo); var modelid = cartItemInfo.GetXmlProperty("genxml/modelid"); var prdid = cartItemInfo.GetXmlPropertyInt("genxml/productid"); var qty = cartItemInfo.GetXmlPropertyDouble("genxml/qty"); var prd = ProductUtils.GetProductData(prdid, Utils.GetCurrentCulture()); if (!prd.Exists || prd.Disabled) return null; //Invalid product remove from cart var prdModel = prd.GetModel(modelid); if (prdModel == null) return null; // Invalid Model remove from cart // check if dealer (for tax calc) var userInfo = UserController.GetUserById(portalId, userId); if (userInfo != null && userInfo.IsInRole(StoreSettings.DealerRole) && StoreSettings.Current.Get("enabledealer") == "True") cartItemInfo.SetXmlProperty("genxml/isdealer", "True"); else cartItemInfo.SetXmlProperty("genxml/isdealer", "False"); // check for price change var unitcost = prdModel.GetXmlPropertyDouble("genxml/textbox/txtunitcost"); var dealercost = prdModel.GetXmlPropertyDouble("genxml/textbox/txtdealercost"); var saleprice = prdModel.GetXmlPropertyDouble("genxml/textbox/txtsaleprice"); // calc sale price var sellcost = unitcost; if (saleprice > 0 && saleprice < sellcost) sellcost = saleprice; //stock control if (prdModel != null) { var stockon = prdModel.GetXmlPropertyBool("genxml/checkbox/chkstockon"); var stocklevel = prdModel.GetXmlPropertyDouble("genxml/textbox/txtqtyremaining"); var minStock = prdModel.GetXmlPropertyDouble("genxml/textbox/txtqtyminstock"); if (minStock == 0) minStock = StoreSettings.Current.GetInt("minimumstocklevel"); var maxStock = prdModel.GetXmlPropertyDouble("genxml/textbox/txtqtystockset"); var weight = prdModel.GetXmlPropertyDouble("genxml/textbox/weight"); if (stockon) { stocklevel = stocklevel - minStock; stocklevel = stocklevel - prd.GetModelTransQty(modelid, _cartId); if (stocklevel < qty) { qty = stocklevel; if (qty <= 0) { qty = 0; cartItemInfo.SetXmlProperty("genxml/validatecode", "OUTOFSTOCK"); } else { cartItemInfo.SetXmlProperty("genxml/validatecode", "STOCKADJ"); } base.SetValidated(false); cartItemInfo.SetXmlPropertyDouble("genxml/qty", qty.ToString("")); } } Double additionalCosts = 0; var optNods = cartItemInfo.XMLDoc.SelectNodes("genxml/options/*"); if (optNods != null) { var lp = 1; foreach (XmlNode nod in optNods) { var optid = nod.SelectSingleNode("optid"); if (optid != null) { var optvalueid = nod.SelectSingleNode("optvalueid"); if (optvalueid != null && optvalueid.InnerText != "False") { XmlNode optvalcostnod; if (optvalueid.InnerText == "True") optvalcostnod = cartItemInfo.XMLDoc.SelectSingleNode("genxml/productxml/genxml/optionvalues[@optionid='" + optid.InnerText + "']/genxml/textbox/txtaddedcost"); else optvalcostnod = cartItemInfo.XMLDoc.SelectSingleNode("genxml/productxml/genxml/optionvalues/genxml[./hidden/optionvalueid='" + optvalueid.InnerText + "']/textbox/txtaddedcost"); if (optvalcostnod != null) { var optvalcost = optvalcostnod.InnerText; if (Utils.IsNumeric(optvalcost)) { cartItemInfo.SetXmlPropertyDouble("genxml/options/option[" + lp + "]/optvalcost", optvalcost); var optvaltotal = Convert.ToDouble(optvalcost, CultureInfo.GetCultureInfo("en-US"))*qty; cartItemInfo.SetXmlPropertyDouble("genxml/options/option[" + lp + "]/optvaltotal", optvaltotal); additionalCosts += optvaltotal; } } else { cartItemInfo.SetXmlPropertyDouble("genxml/options/option[" + lp + "]/optvalcost", "0"); cartItemInfo.SetXmlPropertyDouble("genxml/options/option[" + lp + "]/optvaltotal", "0"); } } } lp += 1; } } if (qty > 0) // can't devide by zero { unitcost += (additionalCosts / qty); if (dealercost > 0) dealercost += (additionalCosts / qty); // zero turns off if (saleprice > 0) saleprice += (additionalCosts / qty); // zero turns off sellcost += (additionalCosts / qty); } var totalcost = qty * sellcost; var totaldealercost = qty * dealercost; var totalweight = weight * qty; if (unitcost != cartItemInfo.GetXmlPropertyDouble("genxml/unitcost") || dealercost != cartItemInfo.GetXmlPropertyDouble("genxml/dealercost") || saleprice != cartItemInfo.GetXmlPropertyDouble("genxml/saleprice")) { cartItemInfo.SetXmlPropertyDouble("genxml/unitcost", unitcost); cartItemInfo.SetXmlPropertyDouble("genxml/dealercost", dealercost); cartItemInfo.SetXmlPropertyDouble("genxml/saleprice", saleprice); cartItemInfo.RemoveXmlNode("genxml/productxml"); cartItemInfo.AddSingleNode("productxml", prd.Info.XMLData, "genxml"); } cartItemInfo.SetXmlPropertyDouble("genxml/totalweight", totalweight.ToString("")); cartItemInfo.SetXmlPropertyDouble("genxml/totalcost", totalcost); cartItemInfo.SetXmlPropertyDouble("genxml/totaldealercost", totaldealercost); cartItemInfo.SetXmlPropertyDouble("genxml/totaldealerbonus", (totalcost - totaldealercost)); Double salediscount = 0; Double dealerdiscount = 0; Double discountcodeamt = 0; Double totaldiscount = 0; //add update genxml/discountcodeamt if (saleprice == 0) // discount codes are only valid for items not on sale { var discountcode = PurchaseInfo.GetXmlProperty("genxml/extrainfo/genxml/textbox/promocode"); cartItemInfo = DiscountCodeInterface.UpdateItemPercentDiscountCode(PortalId, UserId, cartItemInfo, discountcode); discountcodeamt = cartItemInfo.GetXmlPropertyDouble("genxml/discountcodeamt"); if (discountcodeamt > 0) PurchaseInfo.SetXmlProperty("genxml/discountprocessed", "False"); totaldiscount = discountcodeamt; } else { salediscount = (unitcost - saleprice); totaldiscount = salediscount * qty; } var totalsalediscount = salediscount * qty; var totaldealerdiscount = dealerdiscount * qty; cartItemInfo.SetXmlPropertyDouble("genxml/totaldiscount", totaldiscount); cartItemInfo.SetXmlPropertyDouble("genxml/salediscount", totalsalediscount); cartItemInfo.SetXmlPropertyDouble("genxml/totaldealerdiscount", totaldealerdiscount); cartItemInfo.SetXmlPropertyDouble("genxml/appliedtotalcost", AppliedCost(portalId, userId, totalcost, totaldealercost)); cartItemInfo.SetXmlPropertyDouble("genxml/appliedcost", AppliedCost(portalId, userId, sellcost, dealercost)); // calc tax for item var taxproviderkey = PurchaseInfo.GetXmlProperty("genxml/hidden/taxproviderkey"); var taxprov = TaxInterface.Instance(taxproviderkey); if (taxprov != null) { var nbi = (NBrightInfo)cartItemInfo.Clone(); cartItemInfo.SetXmlPropertyDouble("genxml/taxcost", taxprov.CalculateItemTax(nbi)); } } cartItemInfo = NBrightBuyUtils.ProcessEventProvider(EventActions.ValidateCartItemAfter, cartItemInfo); return cartItemInfo; }
public List<NBrightInfo> GetOptionValuesById(String optionid) { var l = new List<NBrightInfo>(); if (Info != null) { var xmlNodList = Info.XMLDoc.SelectNodes("genxml/optionvalues[@optionid='" + optionid + "']/*"); if (xmlNodList != null && xmlNodList.Count > 0) { var lp = 1; foreach (XmlNode xNod in xmlNodList) { var obj = new NBrightInfo(); obj.XMLData = xNod.OuterXml; var nodLang = "<genxml>" + Info.GetXmlNode("genxml/lang/genxml/optionvalues[@optionid='" + optionid + "']/genxml[" + lp + "]") + "</genxml>"; if (nodLang != "") { obj.SetXmlProperty("genxml/hidden/productid", Info.ItemID.ToString("")); obj.SetXmlProperty("genxml/hidden/lang", Info.Lang.Trim()); obj.SetXmlProperty("genxml/hidden/optionid", optionid); var selectSingleNode = xNod.SelectSingleNode("hidden/optionvalueid"); if (selectSingleNode != null) obj.SetXmlProperty("genxml/hidden/optionvalueid", selectSingleNode.InnerText); obj.AddSingleNode("lang", "", "genxml"); obj.AddXmlNode(nodLang, "genxml", "genxml/lang"); } obj.ParentItemId = Info.ItemID; l.Add(obj); lp += 1; } } } return l; }
private List<NBrightInfo> GetEntityList(String entityName) { var l = new List<NBrightInfo>(); if (Info != null && Info.XMLDoc != null) { var xmlNodList = Info.XMLDoc.SelectNodes("genxml/" + entityName + "/*"); // build generic list to bind to rpModelsLang List if (xmlNodList != null && xmlNodList.Count > 0) { var lp = 1; foreach (XmlNode xNod in xmlNodList) { var obj = new NBrightInfo(); obj.XMLData = xNod.OuterXml; obj.ItemID = lp; obj.Lang = Info.Lang; var nodLang = "<genxml>" + Info.GetXmlNode("genxml/lang/genxml/" + entityName + "/genxml[" + lp.ToString("") + "]") + "</genxml>"; if (nodLang != "") { obj.AddSingleNode("lang", "", "genxml"); obj.AddXmlNode(nodLang, "genxml", "genxml/lang"); } obj.ParentItemId = Info.ItemID; l.Add(obj); lp += 1; } } } return l; }
private int AddNew() { var nbi = new NBrightInfo(true); if (StoreSettings.Current.Get("shareproducts") == "True") // option in storesetting to share products created here across all portals. _portalId = -1; else _portalId = PortalSettings.Current.PortalId; nbi.PortalId = _portalId; nbi.TypeCode = "PRD"; nbi.ModuleId = -1; nbi.ItemID = -1; nbi.SetXmlProperty("genxml/checkbox/chkishidden", "True"); nbi.AddSingleNode("models", "<genxml><hidden><modelid>" + Utils.GetUniqueKey() + "</modelid></hidden></genxml>", "genxml"); var objCtrl = new NBrightBuyController(); var itemId = objCtrl.Update(nbi); foreach (var lang in DnnUtils.GetCultureCodeList(_portalId)) { nbi = new NBrightInfo(true); nbi.PortalId = _portalId; nbi.TypeCode = "PRDLANG"; nbi.ModuleId = -1; nbi.ItemID = -1; nbi.Lang = lang; nbi.ParentItemId = itemId; objCtrl.Update(nbi); } return itemId; }
private void PopulateClientData(int userId) { _clientInfo = new NBrightInfo(true); _clientInfo.ItemID = userId; _clientInfo.UserId = userId; _clientInfo.PortalId = PortalId; _userInfo = UserController.GetUserById(PortalId, userId); if (_userInfo != null) { Exists = true; _clientInfo.ModifiedDate = _userInfo.Membership.CreatedDate; foreach (var propertyInfo in _userInfo.GetType().GetProperties()) { if (propertyInfo.CanRead) { var pv = propertyInfo.GetValue(_userInfo, null); if (pv == null) pv = ""; _clientInfo.SetXmlProperty("genxml/textbox/" + propertyInfo.Name.ToLower(), pv.ToString()); } } foreach (DotNetNuke.Entities.Profile.ProfilePropertyDefinition p in _userInfo.Profile.ProfileProperties) { _clientInfo.SetXmlProperty("genxml/textbox/" + p.PropertyName.ToLower(), p.PropertyValue); } _clientInfo.AddSingleNode("membership", "", "genxml"); foreach (var propertyInfo in _userInfo.Membership.GetType().GetProperties()) { if (propertyInfo.CanRead) { var pv = propertyInfo.GetValue(_userInfo.Membership, null); if (pv != null) _clientInfo.SetXmlProperty("genxml/membership/" + propertyInfo.Name.ToLower(), pv.ToString()); } } if (_userInfo.IsInRole(StoreSettings.ClientEditorRole)) { _clientInfo.SetXmlProperty("genxml/checkbox/clienteditorrole", "True"); } else { _clientInfo.SetXmlProperty("genxml/checkbox/clienteditorrole", "False"); } var objCtrl = new NBrightBuyController(); DataRecord = objCtrl.GetByType(PortalId, -1, "CLIENT", _userInfo.UserID.ToString("")); if (DataRecord == null) { DataRecord = new NBrightInfo(true); DataRecord.ItemID = -1; DataRecord.UserId = _userInfo.UserID; DataRecord.PortalId = PortalId; DataRecord.ModuleId = -1; DataRecord.TypeCode = "CLIENT"; } DiscountCodes = GetEntityList("discountcodes"); VoucherCodes = GetEntityList("vouchercodes"); } }
private static NBrightInfo UpdateLangNodeFields(String xmlname, NBrightInfo baseInfo, NBrightInfo dlang) { var nodList3I = baseInfo.XMLDoc.SelectNodes("genxml/" + xmlname + "/genxml"); if (nodList3I != null) { for (int i = 1; i <= nodList3I.Count; i++) { var nodList3 = baseInfo.XMLDoc.SelectNodes("genxml/" + xmlname + "/genxml[" + i + "]/textbox/*"); if (nodList3 != null) { foreach (XmlNode nod in nodList3) { if (nod.InnerText.Trim() != "") { if (dlang.GetXmlProperty("genxml/" + xmlname + "/genxml[" + i + "]/textbox/" + nod.Name) == "") { if (dlang.XMLDoc.SelectSingleNode("genxml/" + xmlname + "/genxml[" + i + "]") == null) { var baseXml = baseInfo.XMLDoc.SelectSingleNode("genxml/" + xmlname + "/genxml[" + i + "]"); if (baseXml != null) { if (dlang.XMLDoc.SelectSingleNode("genxml/" + xmlname) == null) { dlang.AddSingleNode(xmlname, "", "genxml"); } dlang.AddXmlNode(baseXml.OuterXml, "genxml", "genxml/" + xmlname); } } dlang.SetXmlProperty("genxml/" + xmlname + "/genxml[" + i + "]/textbox/" + nod.Name, nod.InnerText); } } } } } } return dlang; }