Exemplo n.º 1
0
        public void ParseHeader(Prism810Context context, string[] marketFields)
        {
            var model = new Type810Header
            {
                TransactionSetId          = "810",
                TransactionSetPurposeCode = marketFields.AtIndex(7),
                InvoiceNbr          = marketFields.AtIndex(4),
                TransactionDate     = marketFields.AtIndex(3),
                ReleaseNbr          = marketFields.AtIndex(5),
                TransactionTypeCode = marketFields.AtIndex(6),
                OriginalInvoiceNbr  = marketFields.AtIndex(12),
                EsiId          = marketFields.AtIndex(53),
                PaymentDueDate = marketFields.AtIndex(25),
                TdspDuns       = marketFields.AtIndex(20),
                TdspName       = marketFields.AtIndex(19),
                CrDuns         = marketFields.AtIndex(22),
                CrName         = marketFields.AtIndex(21),
                Direction      = true,
            };

            var identifiedMarket = clientDataAccess.IdentifyMarket(model.TdspDuns);

            if (identifiedMarket.HasValue)
            {
                context.SetMarket(identifiedMarket.Value);
            }

            model.MarketId   = context.MarketId;
            model.ProviderId = 1;

            context.PushModel(model);
        }
Exemplo n.º 2
0
        public IMarketFileExportResult[] Export(CancellationToken token)
        {
            var cspDunsPorts = clientDataAccess.ListCspDunsPort();
            var prismPorts   = cspDunsPorts
                               .Where(x => x.ProviderId == 1)
                               .ToArray();

            var context = new Prism650Context();

            foreach (var prismPort in prismPorts)
            {
                if (token.IsCancellationRequested)
                {
                    break;
                }

                var headers = marketDataAccess.ListUnprocessed(prismPort.LdcDuns, prismPort.Duns, 1);
                if (headers.Length == 0)
                {
                    logger.TraceFormat("Zero 650 Prism records found to export for TDSP Duns \"{0}\" and CR Duns \"{1}\".",
                                       prismPort.LdcDuns, prismPort.Duns);
                    continue;
                }

                logger.DebugFormat("Exporting {0} unprocessed 650 record(s) for TDSP Duns \"{1}\" and CR Duns \"{2}\".",
                                   headers.Length, prismPort.LdcDuns, prismPort.Duns);

                foreach (var header in headers)
                {
                    if (!header.HeaderKey.HasValue)
                    {
                        continue;
                    }

                    if (token.IsCancellationRequested)
                    {
                        break;
                    }

                    var headerKey = header.HeaderKey.Value;
                    context.Initialize();

                    var identifiedMarket = clientDataAccess.IdentifyMarket(header.TdspDuns);
                    if (identifiedMarket.HasValue)
                    {
                        context.SetMarket(identifiedMarket.Value);
                    }

                    context.SetFileProperties(prismPort, header.TdspDuns, "MTR");
                    context.SetHeaderId(headerKey);
                    context.TransactionSetPurposeCode = header.TransactionSetPurposeCode;

                    WriteHeader(context, header);
                    WriteAccount(context, header);
                    WriteService(context, header);
                }
            }

            return(context.Models);
        }
Exemplo n.º 3
0
        public void ParseHeader(Prism820Context context, string[] marketFields)
        {
            var model = new Type820Header
            {
                TotalAmount       = marketFields.AtIndex(4),
                PaymentMethodCode = marketFields.AtIndex(5),
                TransactionDate   = marketFields.AtIndex(13),
                TraceReferenceNbr = marketFields.AtIndex(14),
                TdspName          = marketFields.AtIndex(15),
                TdspDuns          = marketFields.AtIndex(16),
                CrName            = marketFields.AtIndex(17),
                CrDuns            = marketFields.AtIndex(18),
                CreditDebitFlag   = marketFields.AtIndex(19),
            };

            var identifiedMarket = clientDataAccess.IdentifyMarket(model.TdspDuns);

            if (identifiedMarket.HasValue)
            {
                context.SetMarket(identifiedMarket.Value);
            }

            model.MarketId   = context.MarketId;
            model.ProviderId = 1;

            context.PushModel(model);
        }
Exemplo n.º 4
0
        public void ParseTransaction(Prism824Context context, string[] marketFields)
        {
            var model = new Type824Header
            {
                TransactionDate   = context.TransactionDate,
                TransactionNbr    = context.TransactionNumber,
                ActionCode        = context.TransactionTypeCode,
                CrDuns            = context.CrDuns,
                CrName            = context.CrName,
                TdspDuns          = context.TdspDuns,
                TdspName          = context.TdspName,
                AppAckCode        = marketFields.AtIndex(2),
                TransactionSetNbr = marketFields.AtIndex(4),
                ReferenceNbr      = marketFields.AtIndex(3),
            };

            var identifiedMarket = clientDataAccess.IdentifyMarket(model.TdspDuns);

            if (identifiedMarket.HasValue)
            {
                context.SetMarket(identifiedMarket.Value);
            }

            model.MarketId   = context.MarketId;
            model.ProviderId = 1;

            model.EsiId = context.PremiseNumber;
            if (context.Market == MarketOptions.Texas)
            {
                model.EsiId = marketFields.AtIndex(9);
            }

            context.PushModel(model);
        }
Exemplo n.º 5
0
        public void ParseHeader(Prism650Context context, string[] marketFields)
        {
            var headerModel = new Type650Header
            {
                TransactionSetPurposeCode = marketFields.AtIndex(3),
                TransactionDate           = marketFields.AtIndex(4),
                TransactionNbr            = marketFields.AtIndex(5),
                ReferenceNbr              = marketFields.AtIndex(6),
                TransactionType           = marketFields.AtIndex(7),
                ActionCode                = marketFields.AtIndex(8),
                TdspName                  = marketFields.AtIndex(20),
                TdspDuns                  = marketFields.AtIndex(21),
                CrName                    = marketFields.AtIndex(22),
                CrDuns                    = marketFields.AtIndex(23),
                ProcessedReceivedDateTime = marketFields.AtIndex(24),
            };

            var identifiedMarket = clientDataAccess.IdentifyMarket(headerModel.TdspDuns);

            if (identifiedMarket.HasValue)
            {
                context.SetMarket(identifiedMarket.Value);
            }

            headerModel.MarketId   = context.MarketId;
            headerModel.ProviderId = 1;

            context.PushModel(headerModel);

            var hasEntityName  = false;
            var hasContactName = false;

            marketFields.TryAtIndex(9, x => hasEntityName   = true);
            marketFields.TryAtIndex(17, x => hasContactName = true);

            if (!hasEntityName || !hasContactName)
            {
                return;
            }

            var nameModel = new Type650Name
            {
                EntityName       = marketFields.AtIndex(9),
                EntityName2      = marketFields.AtIndex(10),
                EntityName3      = marketFields.AtIndex(11),
                Address1         = marketFields.AtIndex(12),
                Address2         = marketFields.AtIndex(13),
                City             = marketFields.AtIndex(14),
                State            = marketFields.AtIndex(15),
                PostalCode       = marketFields.AtIndex(16),
                ContactName      = marketFields.AtIndex(17),
                ContactPhoneNbr1 = marketFields.AtIndex(18),
                ContactPhoneNbr2 = marketFields.AtIndex(19),
            };

            headerModel.AddName(nameModel);
        }
Exemplo n.º 6
0
        public void ParseHeader(Prism814Context context, string[] marketFields)
        {
            var model = new Type814Header
            {
                TransactionSetPurposeCode = "11",
                TransactionSetId          = marketFields.AtIndex(16),
                TransactionNbr            = marketFields.AtIndex(4),
                TransactionDate           = marketFields.AtIndex(11),
                ReferenceNbr = marketFields.AtIndex(5),
                TdspDuns     = marketFields.AtIndex(6),
                TdspName     = marketFields.AtIndex(7),
                CrDuns       = marketFields.AtIndex(8),
                CrName       = marketFields.AtIndex(9),
            };

            marketFields.TryAtIndex(3, x => model.TransactionSetPurposeCode = x);

            var identifiedMarket = clientDataAccess.IdentifyMarket(model.TdspDuns);

            if (identifiedMarket.HasValue)
            {
                context.SetMarket(identifiedMarket.Value);
            }
            else
            {
                context.SetMarket((int)MarketOptions.Texas);
            }

            model.MarketId   = context.MarketId;
            model.ProviderId = 1;

            model.ActionCode = context.Alias;
            if (context.Market == MarketOptions.Texas)
            {
                model.ActionCode = marketFields.AtIndex(16);
            }

            context.PushModel(model);
        }
Exemplo n.º 7
0
        private void ParseHeader(Prism867Context context, string[] marketFields)
        {
            context.TransactionNumber = marketFields.AtIndex(6);
            context.ReportTypeCode    = marketFields.AtIndex(4);

            // since we are going to end up with the value at 16
            // if the value in 35 is null or empty...
            context.EsiId = marketFields.AtIndex(16);

            // let's try to the value at 35
            // if there it will overwrite what we already have
            marketFields.TryAtIndex(35, x => context.EsiId = x);

            var model = new Type867Header
            {
                DirectionFlag          = true,
                TransactionSetId       = context.Alias,
                TransactionNbr         = context.TransactionNumber,
                TransactionDate        = marketFields.AtIndex(12),
                ReportTypeCode         = context.ReportTypeCode,
                EsiId                  = context.EsiId,
                ActionCode             = marketFields.AtIndex(5),
                PowerRegion            = marketFields.AtIndex(38),
                OriginalTransactionNbr = marketFields.AtIndex(7),
                ReferenceNbr           = marketFields.AtIndex(39),
                TdspDuns               = marketFields.AtIndex(8),
                TdspName               = marketFields.AtIndex(9),
                CrDuns                 = marketFields.AtIndex(10),
                CrName                 = marketFields.AtIndex(11),
                UtilityAccountNumber   = marketFields.AtIndex(16),
                EstimationReason       = marketFields.AtIndex(48),
                EstimationDescription  = marketFields.AtIndex(49),
                DoorHangerFlag         = marketFields.AtIndex(50),
                EsnCount               = marketFields.AtIndex(51),
                QoCount                = marketFields.AtIndex(52)
            };

            marketFields.TryAtIndex(3, x => model.TransactionSetPurposeCode = x);

            if (!string.IsNullOrEmpty(model.TransactionDate) && model.TransactionDate.Length > 8)
            {
                model.TransactionDate = model.TransactionDate.Substring(0, 8);
            }

            var identifiedMarket = clientDataAccess.IdentifyMarket(model.TdspDuns);

            if (identifiedMarket.HasValue)
            {
                context.SetMarket(identifiedMarket.Value);
            }
            else
            {
                context.MarkAsInvalid(string.Format("Failed to load LDC Record for DUNS \"{0}\".", model.TdspDuns ?? "(null)"));
                return;
            }

            model.MarketID     = context.MarketId;
            model.MarketFileId = context.MarketFileId;

            context.PushModel(model);
        }
Exemplo n.º 8
0
        public IMarketFileExportResult[] Export(CancellationToken token)
        {
            var cspDunsPorts = clientDataAccess.ListCspDunsPort();
            var prismPorts   = cspDunsPorts
                               .Where(x => x.ProviderId == 1)
                               .ToArray();

            var context = new Prism814Context();

            foreach (var prismPort in prismPorts)
            {
                if (token.IsCancellationRequested)
                {
                    break;
                }

                var headers = exportDataAccess.ListUnprocessed(prismPort.LdcDuns, prismPort.Duns, 1);
                if (headers.Length == 0)
                {
                    logger.TraceFormat("Zero 814 Prism records found to export for TDSP Duns \"{0}\" and CR Duns \"{1}\".",
                                       prismPort.LdcDuns, prismPort.Duns);
                    continue;
                }

                logger.DebugFormat("Exporting {0} unprocessed 814 record(s) for TDSP Duns \"{1}\" and CR Duns \"{2}\".",
                                   headers.Length, prismPort.LdcDuns, prismPort.Duns);

                foreach (var header in headers)
                {
                    if (!header.HeaderKey.HasValue)
                    {
                        continue;
                    }

                    if (token.IsCancellationRequested)
                    {
                        break;
                    }

                    var headerKey = header.HeaderKey.Value;

                    context.Initialize();
                    context.ActionCode = header.ActionCode;

                    var identifiedMarket = clientDataAccess.IdentifyMarket(header.TdspDuns);
                    if (identifiedMarket.HasValue)
                    {
                        context.SetMarket(identifiedMarket.Value);
                    }

                    if (context.ActionCode.Equals("PC", StringComparison.Ordinal) ||
                        context.ActionCode.Equals("PD", StringComparison.Ordinal) ||
                        context.Market != MarketOptions.Texas)
                    {
                        context.SetFileProperties(prismPort, header.TdspDuns, "ENR");
                    }
                    else
                    {
                        context.SetFileProperties(prismPort, "183529049", "ENR");
                    }

                    context.SetHeaderId(headerKey);
                    var services = exportDataAccess.ListServices(headerKey);
                    WriteHeader(context, header, services);
                    WriteAccount(context, header);
                    WriteName(context, header);
                    WriteService(context, header, services);
                }
            }

            return(context.Models);
        }