public void WriteHeader(XContainer container, Type810Header header) { if (header == null) { return; } if (!header.HeaderKey.HasValue) { return; } var headerKey = header.HeaderKey.Value; var element = new XElement("Header", new XElement("HeaderKey", headerKey), new XElement("MarketFileId", header.MarketFileId)); element.TryAddElement("TransactionSetId", header.TransactionSetId); element.TryAddElement("TransactionSetControlNbr", header.TransactionSetControlNbr); element.TryAddElement("TransactionDate", header.TransactionDate); element.TryAddElement("InvoiceNbr", header.InvoiceNbr); element.Add(new XElement("ReleaseNbr", header.ReleaseNbr)); element.TryAddElement("TransactionTypeCode", header.TransactionTypeCode); element.TryAddElement("TransactionSetPurposeCode", header.TransactionSetPurposeCode); element.TryAddElement("OriginalInvoiceNbr", header.OriginalInvoiceNbr); element.TryAddElement("EsiId", header.EsiId); if (string.IsNullOrEmpty(header.AlternateEsiId)) { element.TryAddElement("AlternateEsiId", header.EsiId); } else { element.TryAddElement("AlternateEsiId", header.AlternateEsiId); } element.TryAddElement("CRAccountNumber", header.CrAccountNumber); element.TryAddElement("PaymentDueDate", header.PaymentDueDate); element.TryAddElement("TdspDuns", header.TdspDuns); element.TryAddElement("TdspName", header.TdspName); element.TryAddElement("CrDuns", header.CrDuns); element.TryAddElement("CrName", header.CrName); decimal totalAmount; if (decimal.TryParse(header.TotalAmount, out totalAmount)) { totalAmount *= 100; } else { totalAmount = 0M; } element.TryAddElement("TotalAmount", totalAmount.ToString("0")); element.TryAddElement("CustNoForESCO", header.CustNoForESCO); element.TryAddElement("PreviousUtilityAccountNumber", header.PreviousUtilityAccountNumber); element.TryAddElement("BillPresenter", header.BillPresenter); element.TryAddElement("BillCalculator", header.BillCalculator); element.TryAddElement("GasPoolId", header.GasPoolId); element.TryAddElement("CustomerDUNS", header.CustomerDUNS); element.TryAddElement("ServiceDeliveryPoint", header.ServiceDeliveryPoint); container.Add(element); logger.TraceFormat("Added 810 \"Header\" XML element for Header {0}", headerKey); var balances = exportDataAccess.ListBalances(headerKey); WriteBalance(element, balances); var details = exportDataAccess.ListDetails(headerKey); WriteDetail(element, details); var names = exportDataAccess.ListNames(headerKey); WriteName(element, names); var summaries = exportDataAccess.ListSummaries(headerKey); WriteSummary(element, summaries); var messages = exportDataAccess.ListMessages(headerKey); WriteMessage(element, messages); if (clientDataAccess.ShouldExportMeterData(header.TdspDuns)) { WriteMeter(element, details[0].Items); } }