/// <summary>
 /// Initializes a new instance of the X12EnvelopeSettings class.
 /// </summary>
 /// <param name="controlStandardsId">The controls standards id.</param>
 /// <param name="useControlStandardsIdAsRepetitionCharacter">The value
 /// indicating whether to use control standards id as repetition
 /// character.</param>
 /// <param name="senderApplicationId">The sender application
 /// id.</param>
 /// <param name="receiverApplicationId">The receiver application
 /// id.</param>
 /// <param name="controlVersionNumber">The control version
 /// number.</param>
 /// <param name="interchangeControlNumberLowerBound">The interchange
 /// control number lower bound.</param>
 /// <param name="interchangeControlNumberUpperBound">The interchange
 /// control number upper bound.</param>
 /// <param name="rolloverInterchangeControlNumber">The value indicating
 /// whether to rollover interchange control number.</param>
 /// <param name="enableDefaultGroupHeaders">The value indicating
 /// whether to enable default group headers.</param>
 /// <param name="groupControlNumberLowerBound">The group control number
 /// lower bound.</param>
 /// <param name="groupControlNumberUpperBound">The group control number
 /// upper bound.</param>
 /// <param name="rolloverGroupControlNumber">The value indicating
 /// whether to rollover group control number.</param>
 /// <param name="groupHeaderAgencyCode">The group header agency
 /// code.</param>
 /// <param name="groupHeaderVersion">The group header version.</param>
 /// <param name="transactionSetControlNumberLowerBound">The transaction
 /// set control number lower bound.</param>
 /// <param name="transactionSetControlNumberUpperBound">The transaction
 /// set control number upper bound.</param>
 /// <param name="rolloverTransactionSetControlNumber">The value
 /// indicating whether to rollover transaction set control
 /// number.</param>
 /// <param name="overwriteExistingTransactionSetControlNumber">The
 /// value indicating whether to overwrite existing transaction set
 /// control number.</param>
 /// <param name="groupHeaderDateFormat">The group header date format.
 /// Possible values include: 'NotSpecified', 'CCYYMMDD',
 /// 'YYMMDD'</param>
 /// <param name="groupHeaderTimeFormat">The group header time format.
 /// Possible values include: 'NotSpecified', 'HHMM', 'HHMMSS',
 /// 'HHMMSSdd', 'HHMMSSd'</param>
 /// <param name="usageIndicator">The usage indicator. Possible values
 /// include: 'NotSpecified', 'Test', 'Information',
 /// 'Production'</param>
 /// <param name="functionalGroupId">The functional group id.</param>
 /// <param name="transactionSetControlNumberPrefix">The transaction set
 /// control number prefix.</param>
 /// <param name="transactionSetControlNumberSuffix">The transaction set
 /// control number suffix.</param>
 public X12EnvelopeSettings(int controlStandardsId, bool useControlStandardsIdAsRepetitionCharacter, string senderApplicationId, string receiverApplicationId, string controlVersionNumber, int interchangeControlNumberLowerBound, int interchangeControlNumberUpperBound, bool rolloverInterchangeControlNumber, bool enableDefaultGroupHeaders, int groupControlNumberLowerBound, int groupControlNumberUpperBound, bool rolloverGroupControlNumber, string groupHeaderAgencyCode, string groupHeaderVersion, int transactionSetControlNumberLowerBound, int transactionSetControlNumberUpperBound, bool rolloverTransactionSetControlNumber, bool overwriteExistingTransactionSetControlNumber, X12DateFormat groupHeaderDateFormat, X12TimeFormat groupHeaderTimeFormat, UsageIndicator usageIndicator, string functionalGroupId = default(string), string transactionSetControlNumberPrefix = default(string), string transactionSetControlNumberSuffix = default(string))
 {
     ControlStandardsId = controlStandardsId;
     UseControlStandardsIdAsRepetitionCharacter = useControlStandardsIdAsRepetitionCharacter;
     SenderApplicationId   = senderApplicationId;
     ReceiverApplicationId = receiverApplicationId;
     ControlVersionNumber  = controlVersionNumber;
     InterchangeControlNumberLowerBound = interchangeControlNumberLowerBound;
     InterchangeControlNumberUpperBound = interchangeControlNumberUpperBound;
     RolloverInterchangeControlNumber   = rolloverInterchangeControlNumber;
     EnableDefaultGroupHeaders          = enableDefaultGroupHeaders;
     FunctionalGroupId                            = functionalGroupId;
     GroupControlNumberLowerBound                 = groupControlNumberLowerBound;
     GroupControlNumberUpperBound                 = groupControlNumberUpperBound;
     RolloverGroupControlNumber                   = rolloverGroupControlNumber;
     GroupHeaderAgencyCode                        = groupHeaderAgencyCode;
     GroupHeaderVersion                           = groupHeaderVersion;
     TransactionSetControlNumberLowerBound        = transactionSetControlNumberLowerBound;
     TransactionSetControlNumberUpperBound        = transactionSetControlNumberUpperBound;
     RolloverTransactionSetControlNumber          = rolloverTransactionSetControlNumber;
     TransactionSetControlNumberPrefix            = transactionSetControlNumberPrefix;
     TransactionSetControlNumberSuffix            = transactionSetControlNumberSuffix;
     OverwriteExistingTransactionSetControlNumber = overwriteExistingTransactionSetControlNumber;
     GroupHeaderDateFormat                        = groupHeaderDateFormat;
     GroupHeaderTimeFormat                        = groupHeaderTimeFormat;
     UsageIndicator = usageIndicator;
     CustomInit();
 }
 /// <summary>
 /// Initializes a new instance of the X12EnvelopeOverride class.
 /// </summary>
 /// <param name="targetNamespace">The target namespace on which this
 /// envelope settings has to be applied.</param>
 /// <param name="protocolVersion">The protocol version on which this
 /// envelope settings has to be applied.</param>
 /// <param name="messageId">The message id on which this envelope
 /// settings has to be applied.</param>
 /// <param name="responsibleAgencyCode">The responsible agency
 /// code.</param>
 /// <param name="headerVersion">The header version.</param>
 /// <param name="senderApplicationId">The sender application
 /// id.</param>
 /// <param name="receiverApplicationId">The receiver application
 /// id.</param>
 /// <param name="dateFormat">The date format. Possible values include:
 /// 'NotSpecified', 'CCYYMMDD', 'YYMMDD'</param>
 /// <param name="timeFormat">The time format. Possible values include:
 /// 'NotSpecified', 'HHMM', 'HHMMSS', 'HHMMSSdd', 'HHMMSSd'</param>
 /// <param name="functionalIdentifierCode">The functional identifier
 /// code.</param>
 public X12EnvelopeOverride(string targetNamespace, string protocolVersion, string messageId, string responsibleAgencyCode, string headerVersion, string senderApplicationId, string receiverApplicationId, X12DateFormat dateFormat, X12TimeFormat timeFormat, string functionalIdentifierCode = default(string))
 {
     TargetNamespace          = targetNamespace;
     ProtocolVersion          = protocolVersion;
     MessageId                = messageId;
     ResponsibleAgencyCode    = responsibleAgencyCode;
     HeaderVersion            = headerVersion;
     SenderApplicationId      = senderApplicationId;
     ReceiverApplicationId    = receiverApplicationId;
     FunctionalIdentifierCode = functionalIdentifierCode;
     DateFormat               = dateFormat;
     TimeFormat               = timeFormat;
     CustomInit();
 }
        internal static string ToSerializedValue(this X12TimeFormat value)
        {
            switch (value)
            {
            case X12TimeFormat.NotSpecified:
                return("NotSpecified");

            case X12TimeFormat.HHMM:
                return("HHMM");

            case X12TimeFormat.HHMMSS:
                return("HHMMSS");

            case X12TimeFormat.HHMMSSdd:
                return("HHMMSSdd");

            case X12TimeFormat.HHMMSSd:
                return("HHMMSSd");
            }
            return(null);
        }