Exemplo n.º 1
0
        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);
            }
        }