/// <summary> /// Salva a coleção de códigos CFOP em arquivo Json. /// </summary> /// <param name="cfops">A coleção de códigos CFOP.</param> /// <param name="path">O local do salvamento.</param> public static void SaveToJson(this CfopCollection cfops, string path) { string json = JsonConvert.SerializeObject(cfops); DateTime dateTime = DateTime.Now; string fileName = $"CodeMiner_CFOP_{ dateTime.Year }_{ dateTime.Month }_{ dateTime.Day }_{ dateTime.Hour }_{ dateTime.Minute }_{ dateTime.Second }.json"; string fullFilePath = Path.Combine(path, fileName); File.WriteAllText(fullFilePath, json, Encoding.Default); }
/// <summary> /// Obtém uma coleção de códigos CFOP. /// </summary> /// <param name="lines">As linhas com os códigos CFOP.</param> /// <param name="log">O arquivo de Log.</param> /// <returns>A coleção de códigos CFOP.</returns> public static CfopCollection GetCfopCollection(this string[] lines, Log log) { CfopCollection cfops = new CfopCollection(); for (int i = 1; i < lines.Length; i++) { TryAdd(lines[i], cfops, log); } return(cfops); }
/// <summary> /// Caso possível, adiciona o código CFOP da linha à coleção. /// </summary> /// <param name="line">A linha para adição.</param> /// <param name="cfops">A coleção.</param> /// <param name="log">O arquivo de Log.</param> static void TryAdd(string line, CfopCollection cfops, Log log) { string[] parts = line.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length < 3 || parts.Length > 4) { throw new InvalidDataException("A linha é inválida."); } string value = parts[0]; string description = parts[1]; if (!Validate(value, parts, log)) { return; } Cfop cfop = new Cfop() { Description = description, Value = value }; cfops.Add(cfop); }