Exemplo n.º 1
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.º 2
0
        public void WriteHeader(Prism820Context context, Type820Header header)
        {
            var line = string.Format("SH|{0}|{1}|O|", context.TradingPartnerId, header.TraceReferenceNbr);

            context.AppendLine(line);
            logger.TraceFormat("Wrote 820 \"SH\" PRISM line for Header {0}", header.HeaderKey);
        }
Exemplo n.º 3
0
        public void WriteDetail(Prism820Context context, Type820Header header)
        {
            if (!header.HeaderKey.HasValue)
            {
                return;
            }

            var headerKey = header.HeaderKey.Value;
            var details   = marketDataAccess.ListDetails(headerKey);

            if (details == null || details.Length == 0)
            {
                return;
            }

            foreach (var detail in details)
            {
                if (!detail.DetailKey.HasValue)
                {
                    continue;
                }

                var premiseNumber = IdentifyEsiId(context, detail);
                var membershipId  = IdentifyLdcAccountNumber(context, detail);

                var line = string.Format("20|{0}|{5}||{1}|||||{2}||||{3}|||{4}|", context.TradingPartnerId,
                                         detail.PaymentAmount, detail.CrossReferenceNbr, detail.ReferenceNbr, premiseNumber, membershipId);

                context.AppendLine(line);
                logger.TraceFormat("Wrote 820 \"20\" PRISM line for Header {0}", header.HeaderKey);
            }
        }
Exemplo n.º 4
0
        public Type820Header[] ListUnprocessed(string ldcDuns, string duns, int providerId)
        {
            using (var connection = new SqlConnection(connectionString))
                using (var command = connection.CreateCommand("esp_820ExportList"))
                {
                    command.AddIfNotEmptyOrDbNull("@CrDuns", duns)
                    .AddIfNotEmptyOrDbNull("@TdspDuns", ldcDuns);

                    if (connection.State != ConnectionState.Open)
                    {
                        connection.Open();
                    }

                    var collection = new List <Type820Header>();
                    using (var reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var item = new Type820Header
                            {
                                HeaderKey   = reader.GetInt32("820_Key"),
                                ProcessFlag = reader.GetBoolean("ProcessFlag"),
                                Direction   = reader.GetBoolean("Direction"),
                            };

                            reader.TryGetInt32("MarketFileId", x => item.MarketFileId          = x);
                            reader.TryGetString("TransactionSetId", x => item.TransactionSetId = x);
                            reader.TryGetString("TransactionSetControlNbr", x => item.TransactionSetControlNbr = x);
                            reader.TryGetString("TransactionTypeCode", x => item.TransactionTypeCode           = x);
                            reader.TryGetString("TransactionNbr", x => item.TransactionNbr               = x);
                            reader.TryGetString("TransactionDate", x => item.TransactionDate             = x);
                            reader.TryGetString("TotalAmount", x => item.TotalAmount                     = x);
                            reader.TryGetString("CreditDebitFlag", x => item.CreditDebitFlag             = x);
                            reader.TryGetString("PaymentMethodCode", x => item.PaymentMethodCode         = x);
                            reader.TryGetString("TraceReferenceNbr", x => item.TraceReferenceNbr         = x);
                            reader.TryGetString("TdspDunsStructureCode", x => item.TdspDunsStructureCode = x);
                            reader.TryGetString("TdspDuns", x => item.TdspDuns                  = x);
                            reader.TryGetString("TdspName", x => item.TdspName                  = x);
                            reader.TryGetString("CrDuns", x => item.CrDuns                      = x);
                            reader.TryGetString("CrName", x => item.CrName                      = x);
                            reader.TryGetDateTime("ProcessDate", x => item.ProcessDate          = x);
                            reader.TryGetInt32("TransactionTypeID", x => item.TransactionTypeId = x);
                            reader.TryGetInt32("MarketID", x => item.MarketId                   = x);
                            reader.TryGetInt32("ProviderID", x => item.ProviderId               = x);
                            reader.TryGetString("ESPUtilityAccountNumber", x => item.ESPUtilityAccountNumber = x);
                            reader.TryGetString("CreateDate", x => item.CreateDate = x);

                            collection.Add(item);
                        }

                        return(collection.ToArray());
                    }
                }
        }
Exemplo n.º 5
0
        public void WritePayment(Prism820Context context, Type820Header header)
        {
            var partnerId = context.TradingPartnerId;
            var stateId   = partnerId.Substring(3, 2);

            var line = string.Format("01|{0}|{1}|{2}|{3}|{4}||||||||{5}|{6}|{7}|{8}|{9}|{10}|{11}||||", partnerId,
                                     stateId, header.TransactionTypeCode, header.TotalAmount, header.PaymentMethodCode,
                                     header.TransactionDate, header.TraceReferenceNbr, header.CrName, header.CrDuns, header.TdspName,
                                     header.TdspDuns, header.CreditDebitFlag);

            context.AppendLine(line);
            logger.TraceFormat("Wrote 820 \"01\" PRISM line for Header {0}", header.HeaderKey);
        }
Exemplo n.º 6
0
        public int InsertHeader(Type820Header model)
        {
            using (var connection = new SqlConnection(connectionString))
                using (var command = connection.CreateCommand("csp820HeaderInsert"))
                {
                    SqlParameter keyParameter;

                    command.AddWithValue("@MarketFileId", model.MarketFileId)
                    .AddWithValue("@TransactionSetId", model.TransactionSetId)
                    .AddWithValue("@TransactionSetControlNbr", model.TransactionSetControlNbr)
                    .AddWithValue("@TransactionTypeCode", model.TransactionTypeCode)
                    .AddIfNotEmptyOrDbNull("@TransactionNbr", model.TransactionNbr)
                    .AddIfNotEmptyOrDbNull("@TransactionDate", model.TransactionDate)
                    .AddIfNotEmptyOrDbNull("@TotalAmount", model.TotalAmount)
                    .AddWithValue("@CreditDebitFlag", model.CreditDebitFlag)
                    .AddIfNotEmptyOrDbNull("@PaymentMethodCode", model.PaymentMethodCode)
                    .AddIfNotEmptyOrDbNull("@TraceReferenceNbr", model.TraceReferenceNbr)
                    .AddWithValue("@TdspDunsStructureCode", model.TdspDunsStructureCode)
                    .AddIfNotEmptyOrDbNull("@TdspDuns", model.TdspDuns)
                    .AddIfNotEmptyOrDbNull("@TdspName", model.TdspName)
                    .AddWithValue("@CrDuns", model.CrDuns)
                    .AddWithValue("@CrName", model.CrName)
                    .AddWithValue("@Direction", true)
                    .AddWithValue("@ProviderID", model.ProviderId)
                    .AddWithValue("@MarketID", model.MarketId)
                    .AddWithValue("@TransactionTypeID", model.TransactionTypeId)
                    .AddWithValue("@ESPUtilityAccountNumber", model.ESPUtilityAccountNumber)
                    .AddWithValue("@CreateDate", model.CreateDate)
                    .AddOutParameter("@Key", SqlDbType.Int, out keyParameter);

                    if (connection.State != ConnectionState.Open)
                    {
                        connection.Open();
                    }

                    command.ExecuteNonQuery();

                    if (keyParameter.Value == null)
                    {
                        throw new Exception();
                    }

                    var headerKey = (int)keyParameter.Value;
                    model.HeaderKey = headerKey;

                    return(headerKey);
                }
        }
Exemplo n.º 7
0
        public Type820Header ParseHeader(XElement element, IDictionary <string, XNamespace> namespaces)
        {
            XNamespace empty;

            if (!namespaces.TryGetValue(string.Empty, out empty))
            {
                empty = XNamespace.None;
            }

            var model = new Type820Header
            {
                CrDuns                   = element.GetChildText(empty + "CrDuns"),
                CreateDate               = element.GetChildText(empty + "CreateDate"),
                CreditDebitFlag          = element.GetChildText(empty + "CreditDebitFlag"),
                CrName                   = element.GetChildText(empty + "CrName"),
                ESPUtilityAccountNumber  = element.GetChildText(empty + "ESPUtilityAccountNumber"),
                PaymentMethodCode        = element.GetChildText(empty + "PaymentMethodCode"),
                TdspDuns                 = element.GetChildText(empty + "TdspDuns"),
                TdspDunsStructureCode    = element.GetChildText(empty + "TdspDunsStructureCode"),
                TdspName                 = element.GetChildText(empty + "TdspName"),
                TotalAmount              = element.GetChildText(empty + "TotalAmount"),
                TraceReferenceNbr        = element.GetChildText(empty + "TraceReferenceNbr"),
                TransactionDate          = element.GetChildText(empty + "TransactionDate"),
                TransactionNbr           = element.GetChildText(empty + "TransactionNbr"),
                TransactionSetControlNbr = element.GetChildText(empty + "TransactionSetControlNbr"),
                TransactionSetId         = element.GetChildText(empty + "TransactionSetId"),
                TransactionTypeCode      = element.GetChildText(empty + "TransactionTypeCode"),
            };

            var detailLoopElement = element.Element(empty + "DetailLoop");

            if (detailLoopElement != null)
            {
                var nameElements = detailLoopElement.Elements(empty + "Detail");
                foreach (var nameElement in nameElements)
                {
                    var detailModel = ParseDetail(nameElement, namespaces);
                    model.AddDetail(detailModel);
                }
            }

            return(model);
        }
Exemplo n.º 8
0
        public void WriteHeader(XContainer container, Type820Header header)
        {
            if (header == null)
            {
                return;
            }

            if (!header.HeaderKey.HasValue)
            {
                return;
            }

            var headerKey = header.HeaderKey.Value;
            var element   = new XElement("Header",
                                         new XElement("HeaderKey", headerKey));

            element.TryAddElement("TransactionSetId", header.TransactionSetId);
            element.TryAddElement("TransactionSetControlNbr", header.TransactionSetControlNbr);
            element.TryAddElement("TransactionDate", header.TransactionDate);
            element.TryAddElement("TransactionNbr", header.TransactionNbr);
            element.TryAddElement("TotalAmount", header.TotalAmount);
            element.TryAddElement("CreditDebitFlag", header.CreditDebitFlag);
            element.TryAddElement("PaymentMethodCode", header.PaymentMethodCode);
            element.TryAddElement("TraceReferenceNbr", header.TraceReferenceNbr);
            element.TryAddElement("TdspDunsStructureCode", header.TdspDunsStructureCode);
            element.TryAddElement("TdspName", header.TdspName);
            element.TryAddElement("TdspDuns", header.TdspDuns);
            element.TryAddElement("CrName", header.CrName);
            element.TryAddElement("CrDuns", header.CrDuns);
            element.TryAddElement("ESPUtilityAccountNumber", header.ESPUtilityAccountNumber);
            element.TryAddElement("CreateDate", header.CreateDate);
            container.Add(element);
            logger.TraceFormat("Added 820 \"Header\" XML element for Header {0}", headerKey);

            var details = exportDataAccess.ListDetails(headerKey);

            WriteDetail(element, details);
        }
Exemplo n.º 9
0
        public void SaveHeader(Type820Header header)
        {
            logger.Trace("Start inserting header.");

            var headerKey = marketDataAccess.InsertHeader(header);

            logger.DebugFormat("Inserted Header \"{0}\".", headerKey);

            if (header.HeaderKey > 0)
            {
                foreach (var detail in header.Details)
                {
                    detail.HeaderKey = headerKey;
                    var detailKey = marketDataAccess.InsertDetail(detail);
                    logger.DebugFormat("Inserted Detail \"{0}\" for Header \"{1}\".", detailKey, headerKey);
                }
            }
            else
            {
                logger.WarnFormat("Inserted Header returned Header Key: {0}. Failed duplicate check in insert stored procedure.");
            }

            logger.Trace("Completed inserting header.");
        }
Exemplo n.º 10
0
 public void SaveHeader(Type820Header header, int marketFileId)
 {
     header.MarketFileId = marketFileId;
     SaveHeader(header);
 }
Exemplo n.º 11
0
 public void AddHeader(Type820Header item)
 {
     headers.Add(item);
 }