public override StringBuilder ConvertDocumentsToStandardFile()
        {
            var res = new StringBuilder();
            try
            {
                var groupedDocuments = Documents.GroupBy(s => (s.Header as MasterDataDocumentHeader).VendorId);
                var preVendor = new MasterDataDocumentHeader();
                foreach (var documents in groupedDocuments)
                {
                    int i = 0;
                    foreach (var doc in documents)
                    {
                        var header = (doc.Header as MasterDataDocumentHeader);
                        if (i == 0 || string.IsNullOrWhiteSpace(header.VendorId))
                        {
                            res.Append($"VR,{header.VendorId.Trim().EscapeCSV()},{header.VendorName.Trim().EscapeCSV()},1,0,MAIN,MAIN,0");
                            res.Append(Environment.NewLine + $"AR,MAIN,{header.VendorAddress1?.Trim().EscapeCSV()},{header.VendorAddress2?.Trim().EscapeCSV()},{header.VendorAddress3?.Trim().EscapeCSV()},{header.VendorCity?.Trim().EscapeCSV()},{header.VendorState?.Trim().EscapeCSV()},{header.VendorZip?.Trim().EscapeCSV()},{header.VendorPhone?.Trim().EscapeCSV()}" + Environment.NewLine);
                        }
                        else
                        {
                            res.Append(Environment.NewLine + $"AR,REMIT TO {i},{header.VendorAddress1?.Trim().EscapeCSV()},{header.VendorAddress2?.Trim().EscapeCSV()},{header.VendorAddress3?.Trim().EscapeCSV()},{header.VendorCity?.Trim().EscapeCSV()},{header.VendorState?.Trim().EscapeCSV()},{header.VendorZip?.Trim().EscapeCSV()},{header.VendorPhone?.Trim().EscapeCSV()}" + Environment.NewLine);
                        }
                        i++;
                    }
                }

            }
            catch (Exception ex)
            {
                ListErrors.Add(ex.Message);
            }

            return res;
        }
 protected void AddError(string property, string error)
 {
     DelError(property);
     ListErrors.Add(new KeyValue()
     {
         Key = property, Value = error
     });
 }
Esempio n. 3
0
        public override List <Page> FillData(byte[] inputFile)
        {
            var pages = new List <Page>();
            var page  = new Page
            {
                FromRow = Map.DataFromLine
            };
            var i = 1;

            try
            {
                var dataTable = inputFile.ReadDataFromExcel();
                foreach (DataRow dataTableRow in dataTable.Rows)
                {
                    if (i < Map.DataFromLine)
                    {
                        i++; continue;
                    }
                    foreach (var o in dataTableRow.ItemArray)
                    {
                        page.Rows.Add(o.ToString());
                    }
                    if (page.Rows.Count != 0)
                    {
                        pages.Add(page);
                    }
                    page = new Page
                    {
                        FromRow = i
                    };
                    i++;
                }
            }
            catch (Exception ex)
            {
                if (string.IsNullOrEmpty(Map.MapHeader.FieldKey))
                {
                    if (page != null)
                    {
                        ListErrors.Add(
                            $"Read file error: Line {page.FromRow} - {page.ToRow}, rows - {page.Rows.Count} : {ex.Message}{Environment.NewLine}");
                    }
                }
                else if (page != null)
                {
                    ListErrors.Add(
                        $"Read file error: Line {page.FromRow} - {page.ToRow}, {Map.MapHeader.FieldKey} - {page.Key}, Rows - {page.Rows.Count} : {ex.Message}{Environment.NewLine}");
                }
            }
            if (pages.Count == 0)
            {
                ListErrors.Add("The input file contains INVALID DATA");
            }
            return(pages);
        }
Esempio n. 4
0
 private void ProcessAfterProcessDataFile()
 {
     try
     {
         ProcessAfterConvertDocumentsToStandardFile();
     }
     catch (Exception ex)
     {
         ListErrors.Add(ex.Message);
     }
 }
Esempio n. 5
0
 private void BeforeConvertDataToStandardFile()
 {
     try
     {
         ProcessBeforeConvertDocumentsToStandardFile();
     }
     catch (Exception ex)
     {
         ListErrors.Add(ex.Message);
     }
 }
Esempio n. 6
0
 private StringBuilder ConvertDataToStandardFile()
 {
     try
     {
         return(ConvertDocumentsToStandardFile());
     }
     catch (Exception ex)
     {
         ListErrors.Add(ex.Message);
         return(new StringBuilder());
     }
 }
Esempio n. 7
0
 void Properties_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
 {
     if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
     {
         int n1 = ListErrors.Count;
         int n2 = Properties.Count;
         for (int i = n1; i < n2; i++)
         {
             ListErrors.Add(null);
             FuncValues.Add(null);
         }
     }
 }
Esempio n. 8
0
        protected override StringBuilder ConvertDocumentsToStandardFile()
        {
            var res = new StringBuilder();

            try
            {
                res.Append(string.Join(Environment.NewLine, Documents.Select(doc => doc.ToString())));
                return(res);
            }
            catch (Exception ex)
            {
                ListErrors.Add(ex.Message);
            }
            return(res);
        }
        public override StringBuilder BuildStandardFileHeader()
        {
            //throw new NotImplementedException();
            var res = new StringBuilder();
            try
            {
                res.AppendLine("VR,VendorId,Name,Status,Is1099,MainAddressId,DefaultRemitToId,HoldStatus");
                res.AppendLine("AR,AddressName,Address1,Address2,Address3,City,StateProvince,PostalCode,PhoneNumber");

                return res;
            }
            catch (Exception ex)
            {
                ListErrors.Add(ex.Message);
            }

            return res;
        }
Esempio n. 10
0
        protected virtual List <Page> FillData(byte[] inputFile)
        {
            var pages = new List <Page>();
            var page  = new Page
            {
                FromRow = Map.DataFromLine
            };
            var i = 1;

            try
            {
                using (var stream = new MemoryStream(inputFile))
                    using (var reader = new StreamReader(stream))
                    {
                        while (!reader.EndOfStream)
                        {
                            var dataLine = reader.ReadLine();
                            if (Map.NewPageCondition.Count > 0 &&
                                CheckCondition(Map.NewPageCondition, dataLine))
                            {
                                // truong hop ko co ky tu ket thuc page thi dong 1 page cu truoc khi bat dau 1 page moi
                                if (page != null && page.Rows.Count > 0)
                                {
                                    page.ToRow = i - 1;
                                    SetKeyAndOverflow(page);
                                    pages.Add(page);
                                }

                                page = new Page
                                {
                                    FromRow = i
                                };
                            }

                            if (page == null || i < page.FromRow)
                            {
                                i++;
                                continue;
                            }

                            page.Rows.Add(dataLine);
                            if ((Map.BreakPageCondition.Count == 0 && Map.BreakPageLine == 0 && dataLine == "\f")
                                ||
                                (Map.BreakPageCondition.Count > 0 &&
                                 CheckCondition(Map.BreakPageCondition, dataLine)) ||
                                i == page.FromRow + Map.BreakPageLine - 1)
                            {
                                page.ToRow = i;
                                SetKeyAndOverflow(page);

                                pages.Add(page);
                                page = null;

                                // khong kiem tra ky tu bat dau 1 page moi thi tao new page moi luon
                                if (Map.NewPageCondition.Count == 0)
                                {
                                    page = new Page
                                    {
                                        FromRow = i + 1
                                    };
                                }
                            }
                            i++;
                        }
                    }
            }
            catch (Exception ex)
            {
                if (string.IsNullOrEmpty(Map.MapHeader.FieldKey))
                {
                    if (page != null)
                    {
                        ListErrors.Add(
                            $"Read file error: Line {page.FromRow} - {page.ToRow}, rows - {page.Rows.Count} : {ex.Message}{Environment.NewLine}");
                    }
                }
                else if (page != null)
                {
                    ListErrors.Add(
                        $"Read file error: Line {page.FromRow} - {page.ToRow}, {Map.MapHeader.FieldKey} - {page.Key}, Rows - {page.Rows.Count} : {ex.Message}{Environment.NewLine}");
                }
            }

            if (page != null && page.Rows.Count > 0)
            {
                page.ToRow = i - 1;
                SetKeyAndOverflow(page);
                pages.Add(page);
            }

            #region for last page don't match with above condition to break page

            if (page != null && page.Rows.Count > 0 && page.Rows.Count < Map.BreakPageLine)
            {
                // insert more line up to BreakPageLine
                for (var index = page.Rows.Count; index < Map.BreakPageLine; index++)
                {
                    page.Rows.Add("");
                }

                // check overflow
                if (Map.MapOverflow != null && Map.MapOverflow.Line > 0 &&
                    !string.IsNullOrEmpty(Map.MapOverflow.Key))
                {
                    if (page.Rows.Count >= Map.MapOverflow.Line &&
                        !string.IsNullOrEmpty(page.Rows[Map.MapOverflow.Line - 1]))
                    {
                        page.HasOver = page.Rows[Map.MapOverflow.Line - 1].Trim().Contains(Map.MapOverflow.Key.Trim());
                    }
                }

                // set page key
                var mapkey = Map.MapHeader.MapFields.FirstOrDefault(e => e.FieldName == Map.MapHeader.FieldKey);
                if (mapkey != null && page.Rows.Count >= mapkey.Line)
                {
                    if (!string.IsNullOrEmpty(Map.Delimiter))
                    {
                        var rowItems =
                            page.Rows[mapkey.Line - 1].Split(new[] { Map.Delimiter }, StringSplitOptions.None).
                            ToList();
                        if (rowItems.Count >= mapkey.Start)
                        {
                            page.Key = rowItems[mapkey.Start - 1];
                        }
                    }
                    else
                    {
                        page.Key = page.Rows[mapkey.Line - 1].TMid(mapkey.Start, mapkey.Length);
                    }
                }
            }

            #endregion

            if (!string.IsNullOrEmpty(Map.MapHeader.FieldKey))
            {
                if (pages.Any(e => (string.IsNullOrEmpty(e.Key) && !e.HasOver)))
                {
                    throw new Exception("The input file contains INVALID DATA");
                }
                pages = pages.Where(e => (!string.IsNullOrEmpty(e.Key) && !e.HasOver) || e.HasOver).ToList();
            }
            if (pages.Count == 0)
            {
                ListErrors.Add("The input file contains INVALID DATA");
            }
            else
            {
                if (Map.ValidatePosition.Count > 0)
                {
                    if (!ValidateFileFormatBySpecificPos(pages[0], Map.ValidatePosition, ""))
                    {
                        ListErrors.Add("The input file is INCORRECT format.\r\n");
                    }
                }
            }
            return(pages);
        }