public static bool WriteSingleUpsPackage(ref XmlTextWriter xw, ref Package p) { bool result = true; decimal dGirth = 0; decimal dLength = 0; decimal dHeight = 0; decimal dwidth = 0; SortedList sar = new SortedList(2); sar.Add(1, p.Length); sar.Add(2, p.Width); sar.Add(3, p.Height); IDictionaryEnumerator myEnumerator = sar.GetEnumerator(); int place = 0; while (myEnumerator.MoveNext()) { place += 1; switch (place) { case 1: dLength = Convert.ToDecimal(myEnumerator.Value); break; case 2: dwidth = Convert.ToDecimal(myEnumerator.Value); break; case 3: dHeight = Convert.ToDecimal(myEnumerator.Value); break; } } myEnumerator = null; dGirth = dwidth + dwidth + dHeight + dHeight; //-------------------------------------------- // Package xw.WriteStartElement("Package"); xw.WriteStartElement("PackagingType"); string packagingCode = Convert.ToInt32(p.Packaging).ToString(); if (packagingCode.Length < 2) { packagingCode = "0" + packagingCode; } xw.WriteElementString("Code", packagingCode); if (p.Description != string.Empty) { xw.WriteElementString("Description", p.Description); } xw.WriteEndElement(); if (p.Packaging == PackagingType.CustomerSupplied) { if (dLength > 0 | dHeight > 0 | dwidth > 0) { xw.WriteStartElement("Dimensions"); xw.WriteStartElement("UnitOfMeasure"); switch (p.DimensionalUnits) { case UnitsType.Imperial: xw.WriteElementString("Code", "IN"); break; case UnitsType.Metric: xw.WriteElementString("Code", "CM"); break; default: xw.WriteElementString("Code", "IN"); break; } xw.WriteEndElement(); xw.WriteElementString("Length", Math.Round(dLength, 0).ToString()); xw.WriteElementString("Width", Math.Round(dwidth, 0).ToString()); xw.WriteElementString("Height", Math.Round(dHeight, 0).ToString()); xw.WriteEndElement(); } } // Weight if (p.Weight > 0) { xw.WriteStartElement("PackageWeight"); xw.WriteStartElement("UnitOfMeasure"); switch (p.WeightUnits) { case UnitsType.Imperial: xw.WriteElementString("Code", "LBS"); break; case UnitsType.Metric: xw.WriteElementString("Code", "KGS"); break; default: xw.WriteElementString("Code", "LBS"); break; } xw.WriteEndElement(); xw.WriteElementString("Weight", Math.Round(p.Weight, 1).ToString()); xw.WriteEndElement(); } // Oversize Checks decimal oversizeCheck = dGirth + dLength; if (oversizeCheck > 84) { if (oversizeCheck < 108 & p.Weight < 30) { xw.WriteElementString("OversizePackage", "1"); } else { if (p.Weight < 70) { xw.WriteElementString("OversizePackage", "2"); } else { xw.WriteElementString("OversizePackage", "0"); } } } // ReferenceNumber if (p.ReferenceNumber != string.Empty) { xw.WriteStartElement("ReferenceNumber"); string codeType = ConvertReferenceNumberCodeToString(p.ReferenceNumberType); xw.WriteElementString("Code", codeType); xw.WriteElementString("Value", XmlTools.TrimToLength(p.ReferenceNumber, 35)); xw.WriteEndElement(); } // ReferenceNumber2 if (p.ReferenceNumber2 != string.Empty) { xw.WriteStartElement("ReferenceNumber"); string codeType = ConvertReferenceNumberCodeToString(p.ReferenceNumber2Type); xw.WriteElementString("Code", codeType); xw.WriteElementString("Value", XmlTools.TrimToLength(p.ReferenceNumber2, 35)); xw.WriteEndElement(); } // Additional Handling if (p.AdditionalHandlingIsRequired == true) { xw.WriteElementString("AdditionalHandling", ""); } //------------------------------------------- // Start Service Options xw.WriteStartElement("PackageServiceOptions"); // Delivery Confirmation if (p.DeliveryConfirmation == true) { xw.WriteStartElement("DeliveryConfirmation"); xw.WriteElementString("DCISType", Convert.ToInt32(p.DeliveryConfirmationType).ToString()); if (p.DeliveryConfirmationControlNumber != string.Empty) { xw.WriteElementString("DCISNumber", XmlTools.TrimToLength(p.DeliveryConfirmationControlNumber, 11)); } xw.WriteEndElement(); } // InsuredValue if (p.InsuredValue > 0) { xw.WriteStartElement("InsuredValue"); xw.WriteElementString("MonetaryValue", p.InsuredValue.ToString()); xw.WriteElementString("CurrencyCode", XmlTools.ConvertCurrencyCodeToString(p.InsuredValueCurrency)); xw.WriteEndElement(); } // COD if (p.COD == true) { xw.WriteStartElement("COD"); xw.WriteElementString("CODCode", "3"); xw.WriteElementString("CODFundsCode", Convert.ToInt32(p.CODPaymentType).ToString()); xw.WriteStartElement("CODAmount"); xw.WriteElementString("CurrencyCode", XmlTools.ConvertCurrencyCodeToString(p.CODCurrencyCode)); xw.WriteElementString("MonetaryValue", p.CODAmount.ToString()); xw.WriteEndElement(); xw.WriteEndElement(); } // Verbal Confirmation if (p.VerbalConfirmation == true) { xw.WriteStartElement("VerbalConfirmation"); xw.WriteStartElement("ContactInfo"); if (p.VerbalConfirmationName != string.Empty) { xw.WriteElementString("Name", p.VerbalConfirmationName); } if (p.VerbalConfirmationPhoneNumber != string.Empty) { xw.WriteElementString("PhoneNumber", p.VerbalConfirmationPhoneNumber); } xw.WriteEndElement(); xw.WriteEndElement(); } xw.WriteEndElement(); // End Service Options //------------------------------------------- xw.WriteEndElement(); // End Package //-------------------------------------------- return result; }
public bool AddPackage(ref Package p) { bool result = false; _Packages.Add(p); result = true; return result; }