async void ReadOIOUBL() { readingOIOUBL = true; #if !SILVERLIGHT try { var sfd = UtilDisplay.LoadOpenFileDialog; sfd.Filter = UtilFunctions.GetFilteredExtensions(FileextensionsTypes.XML); var userClickedSave = sfd.ShowDialog(); if (userClickedSave != true) { return; } using (var stream = File.Open(sfd.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { var sr = new StreamReader(stream); var oioublText = sr.ReadToEnd(); var order = await OIOUBL.ReadInvoiceCreditNoteOrOrder(oioublText, creditors, api, true); if (order == null) { ClearFields(initialOrder); return; } order.SetMaster(api.CompanyEntity); //PriceLookup?.OrderChanged(order); var orderLines = order.Lines; order.Lines = null; ClearFields(order); int countLine = 0; foreach (var line in orderLines) { line.SetMaster(order); line._LineNumber = ++countLine; } dgCreditorOrderLineGrid.ItemsSource = orderLines; if (order.DocumentRef != 0) { UpdateVoucher(Order); } } readingOIOUBL = false; } catch (Exception e) { readingOIOUBL = false; if (e.StackTrace.IndexOf("xmlserializer", StringComparison.CurrentCultureIgnoreCase) >= 0) { UnicontaMessageBox.Show("The file is not a valid XSD schemas. For more information (validation info) use www.oioubl.net/validator/", Uniconta.ClientTools.Localization.lookup("Information")); } else { UnicontaMessageBox.Show(e, Uniconta.ClientTools.Localization.lookup("Information")); } } #endif }
public async void ReadOIOUBL(bool oneOrMultiple) { #if !SILVERLIGHT try { if (creditorCache == null) { creditorCache = api.GetCache(typeof(Uniconta.DataModel.Creditor)) ?? await api.LoadCache(typeof(Uniconta.DataModel.Creditor)); } var orderlist = dgCreditorOrdersGrid.ItemsSource as List <CreditorOrderClient>; if (!oneOrMultiple) { var orderlistToAddToGrid = new List <CreditorOrderClient>(); string listOfFailedFiles = null; var openFolderDialog = UtilDisplay.LoadFolderBrowserDialog; if (openFolderDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } string[] files = Directory.GetFiles(openFolderDialog.SelectedPath); foreach (string file in files) { var xmlText = File.ReadAllText(file); var order = await OIOUBL.ReadInvoiceCreditNoteOrOrder(xmlText, creditorCache, api, oneOrMultiple); if (order == null) { listOfFailedFiles += string.Format("{0}: {1}", Uniconta.ClientTools.Localization.lookup("ViewerFailed"), file + Environment.NewLine); continue; } var orderlines = order.Lines; order.Lines = null; var err = await api.Insert(order); if (err != ErrorCodes.Succes) { listOfFailedFiles += string.Format("{0}: {1}", Uniconta.ClientTools.Localization.lookup("ViewerFailed"), file + Environment.NewLine); continue; } int countLine = 0; foreach (var line in orderlines) { line.SetMaster(order); line._LineNumber = ++countLine; } var err2 = await api.Insert(orderlines); if (err2 != ErrorCodes.Succes) { listOfFailedFiles += string.Format("{0}: {1}", Uniconta.ClientTools.Localization.lookup("ViewerFailed"), file + Environment.NewLine); continue; } order.Lines = orderlines; orderlistToAddToGrid.Add(order); } if (orderlist == null || orderlist.Count == 0) { orderlist = orderlistToAddToGrid; } else { orderlist.AddRange(orderlistToAddToGrid); } dgCreditorOrdersGrid.ItemsSource = orderlist; if (listOfFailedFiles != null) { listOfFailedFiles = listOfFailedFiles + Uniconta.ClientTools.Localization.lookup("RunFileIndividual"); UnicontaMessageBox.Show(listOfFailedFiles, Uniconta.ClientTools.Localization.lookup("Error")); } } else { var sfd = UtilDisplay.LoadOpenFileDialog; sfd.Filter = UtilFunctions.GetFilteredExtensions(FileextensionsTypes.XML); var userClickedSave = sfd.ShowDialog(); if (userClickedSave != true) { return; } using (var stream = File.Open(sfd.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { var sr = new StreamReader(stream); var oioublText = await sr.ReadToEndAsync(); stream.Close(); var order = await OIOUBL.ReadInvoiceCreditNoteOrOrder(oioublText, creditorCache, api, oneOrMultiple); if (order == null) { return; } var orderlines = order.Lines; order.Lines = null; var err = await api.Insert(order); if (err != ErrorCodes.Succes) { UtilDisplay.ShowErrorCode(err); return; } int countLine = 0; foreach (var line in orderlines) { line.SetMaster(order); line._LineNumber = ++countLine; } err = await api.Insert(orderlines); if (err != ErrorCodes.Succes) { UtilDisplay.ShowErrorCode(err); return; } if (orderlist == null || orderlist.Count == 0) { orderlist = new List <CreditorOrderClient>(); } orderlist.Add(order); dgCreditorOrdersGrid.ItemsSource = orderlist; } } } catch (Exception ex) { UnicontaMessageBox.Show(ex); } #endif }