示例#1
0
        public void ParseServiceMeter(Prism814Context context, string[] marketFields)
        {
            var current = context.Current;

            if (current == null || current.ModelType != Type814Types.Service)
            {
                throw new InvalidOperationException();
            }

            var service = current as Type814Service;

            if (service == null)
            {
                throw new InvalidOperationException();
            }

            var model = new Type814ServiceMeter
            {
                EntityIdCode          = marketFields.AtIndex(4),
                MeterNumber           = marketFields.AtIndex(2),
                MeterType             = marketFields.AtIndex(5),
                LoadProfile           = marketFields.AtIndex(8),
                RateClass             = marketFields.AtIndex(6),
                RateSubClass          = marketFields.AtIndex(7),
                MeterCycle            = marketFields.AtIndex(10),
                MeterCycleDayOfMonth  = marketFields.AtIndex(36),
                SpecialNeedsIndicator = marketFields.AtIndex(21),
                OldMeterNumber        = marketFields.AtIndex(3),
                MeterOwnerIndicator   = marketFields.AtIndex(23),
                AmsIndicator          = marketFields.AtIndex(51),
                SummaryInterval       = marketFields.AtIndex(51),
            };

            service.AddMeter(model);
            context.PushModel(model);

            marketFields.TryAtIndex(11, x => context.ProductType        = x);
            marketFields.TryAtIndex(13, x => context.UnmeterQuantity    = x);
            marketFields.TryAtIndex(14, x => context.UnmeterDescription = x);

            var hasIntervalType = false;
            var hasProductType  = false;

            marketFields.TryAtIndex(5, x => hasIntervalType = true);
            marketFields.TryAtIndex(11, x => hasProductType = true);

            if (hasIntervalType || !hasProductType)
            {
                return;
            }

            var meterTypeModel = new Type814ServiceMeterType
            {
                ProductType = marketFields.AtIndex(11),
                UnmeteredNumberOfDevices = marketFields.AtIndex(13),
                UnmeteredDescription     = marketFields.AtIndex(37),
            };

            model.AddType(meterTypeModel);
        }
示例#2
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);
        }
示例#3
0
        public void ParseService(Prism814Context context, string[] marketFields)
        {
            var current = context.Current;

            if (current == null || current.ModelType != Type814Types.Header)
            {
                throw new InvalidOperationException();
            }

            var header = current as Type814Header;

            if (header == null)
            {
                throw new InvalidOperationException();
            }

            var model = new Type814Service
            {
                AssignId                   = marketFields.AtIndex(5),
                ServiceType1               = marketFields.AtIndex(2),
                ServiceTypeCode1           = string.Empty,
                ServiceType2               = marketFields.AtIndex(3),
                ServiceTypeCode2           = string.Empty,
                ServiceType3               = marketFields.AtIndex(4),
                ServiceTypeCode3           = string.Empty,
                ServiceType4               = marketFields.AtIndex(42),
                ServiceTypeCode4           = string.Empty,
                ActionCode                 = marketFields.AtIndex(7),
                DistributionLossFactorCode = marketFields.AtIndex(44),
                PremiseType                = marketFields.AtIndex(47),
                BillType                   = marketFields.AtIndex(30),
                StationId                  = marketFields.AtIndex(33),
                EnergizedFlag              = marketFields.AtIndex(46),
                PriorityCode               = marketFields.AtIndex(45),
                PermitIndicator            = marketFields.AtIndex(23),
                MembershipId               = marketFields.AtIndex(9),
                PolrClass                  = marketFields.AtIndex(14),
                LdcBillingCycle            = marketFields.AtIndex(28),
                LdcBudgetBillingStatus     = marketFields.AtIndex(32),
                SpecialNeedsIndicator      = marketFields.AtIndex(66),
                HumanNeeds                 = marketFields.AtIndex(54),
                SwitchHoldStatusIndicator  = marketFields.AtIndex(60),
                SpecialMeterConfig         = marketFields.AtIndex(69),
                MaximumGeneration          = marketFields.AtIndex(70),
                DaysInArrears              = marketFields.AtIndex(71),
            };

            marketFields.TryAtIndex(2, x => model.ServiceTypeCode1  = "SH");
            marketFields.TryAtIndex(3, x => model.ServiceTypeCode2  = "SH");
            marketFields.TryAtIndex(4, x => model.ServiceTypeCode3  = "SH");
            marketFields.TryAtIndex(42, x => model.ServiceTypeCode4 = "SH");

            if (context.Market == MarketOptions.Texas)
            {
                model.BillCalculator = string.Empty;
                model.EsiId          = marketFields.AtIndex(43);

                var alias = context.Alias.TrimStart('0');
                switch (alias)
                {
                case "19":
                    model.MaintenanceTypeCode = marketFields.AtIndex(6);
                    break;

                case "8":
                case "9":
                case "11":
                case "14":
                case "28":
                    model.MaintenanceTypeCode = marketFields.AtIndex(8);
                    break;

                case "20":
                    model.MaintenanceTypeCode = marketFields.AtIndex(24);
                    break;
                }
            }

            if (context.Market == MarketOptions.Maryland)
            {
                model.BillCalculator      = marketFields.AtIndex(31);
                model.EsiId               = marketFields.AtIndex(9);
                model.MaintenanceTypeCode = marketFields.AtIndex(6);
            }

            if (context.Market == MarketOptions.Maryland)
            {
                if (header.ActionCode.Equals("E", StringComparison.Ordinal) &&
                    model.ServiceType2.Equals("HU", StringComparison.Ordinal))
                {
                    header.ActionCode   = "HU";
                    header.ReferenceNbr = model.AssignId;
                }
            }

            header.AddService(model);
            context.PushModel(model);
        }