/// <summary>
        /// Adds capacity relative fields.
        /// </summary>
        /// <param name="capacityInfos">Capacities informations.</param>
        /// <param name="info">Field information with data settings.</param>
        private void _AddCapacityRelativeFields(CapacitiesInfo capacityInfos, FieldInfo info)
        {
            for (int index = 0; index < capacityInfos.Count; ++index)
            {
                FieldInfo infoRealtion = (FieldInfo)info.Clone();

                CapacityInfo capacityInfo = capacityInfos[index];
                _UpdateInfoWithInfoName(capacityInfo.Name, info, ref infoRealtion);

                // format description
                if (!string.IsNullOrEmpty(infoRealtion.Description))
                {
                    if ((infoRealtion.Description == Properties.Resources.ExportFieldDescriptionCapacity) ||
                        (infoRealtion.Description == Properties.Resources.ExportFieldDescriptionRelativeCapacity))
                    {
                        infoRealtion.Description =
                            _FormatCapacityDescription(capacityInfo, infoRealtion.Description);
                    }

                    else if (infoRealtion.Description == Properties.Resources.ExportFieldDescriptionTotal)
                    {
                        infoRealtion.Description =
                            _FormatCapacityDescriptionTotal(capacityInfo, infoRealtion.Description);
                    }

                    else if (infoRealtion.Description == Properties.Resources.ExportFieldDescriptionUtilization)
                    {
                        infoRealtion.Description =
                            _FormatCapacityDescriptionUtilization(capacityInfo, infoRealtion.Description);
                    }

                    // else Do nothing - use without modification
                }

                Debug.Assert(!string.IsNullOrEmpty(infoRealtion.Name));
                _fieldsMap.Add(infoRealtion.Name, infoRealtion);
            }
        }
        /// <summary>
        /// Adds custom order property relative fields.
        /// </summary>
        /// <param name="orderCustomPropertyInfos">Order custom order properties info information.</param>
        /// <param name="info">Field information with data settings.</param>
        private void _AddCustomOrderPropertyRelativeFields(
            OrderCustomPropertiesInfo orderCustomPropertyInfos,
            FieldInfo info)
        {
            for (int index = 0; index < orderCustomPropertyInfos.Count; ++index)
            {
                FieldInfo infoRealtion = (FieldInfo)info.Clone();

                OrderCustomProperty prorety = orderCustomPropertyInfos[index];
                _UpdateInfoWithInfoName(prorety.Name, info, ref infoRealtion);
                infoRealtion.Description = prorety.Description;

                Debug.Assert(!string.IsNullOrEmpty(infoRealtion.Name));

                // NOTE: special issue
                //  support numeric custom order propertiy - need change type description
                if (orderCustomPropertyInfos[index].Type == OrderCustomPropertyType.Numeric)
                {
                    infoRealtion.Type = OleDbType.Double;
                    infoRealtion.Size = 0;
                    infoRealtion.Scale = 2;
                    infoRealtion.Precision = 14;
                }

                _fieldsMap.Add(infoRealtion.Name, infoRealtion);
            }
        }
        /// <summary>
        /// Add address relative fields.
        /// </summary>
        /// <param name="addressFields">Address fields.</param>
        /// <param name="info">Field information with data settings.</param>
        private void _AddAddressRelativeFields(AddressField[] addressFields, FieldInfo info)
        {
            for (int index = 0; index < addressFields.Length; ++index)
            {
                AddressField adress = addressFields[index];

                FieldInfo infoRealtion = (FieldInfo)info.Clone();
                infoRealtion.Name = infoRealtion.LongName = adress.Title;
                infoRealtion.ShortName = (SHORT_NAME_LENGTH < infoRealtion.LongName.Length) ?
                        infoRealtion.LongName.Substring(0, SHORT_NAME_LENGTH) :
                        infoRealtion.LongName;
                infoRealtion.NameFormat = adress.Type.ToString();
                Debug.Assert(string.IsNullOrEmpty(infoRealtion.Description));
                if (string.IsNullOrEmpty(infoRealtion.Description))
                    infoRealtion.Description = adress.Description;

                Debug.Assert(!string.IsNullOrEmpty(infoRealtion.Name));
                _fieldsMap.Add(infoRealtion.Name, infoRealtion);
            }
        }