示例#1
0
        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
        }
示例#2
0
        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
        }