diff --git a/AyaNovaQBI/Map.cs b/AyaNovaQBI/Map.cs index 94a8205..8c0947d 100644 --- a/AyaNovaQBI/Map.cs +++ b/AyaNovaQBI/Map.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -15,11 +16,7 @@ namespace AyaNovaQBI private AyaType _Type = AyaType.Customer; private DataTable _aya; private DataTable _qb; - - //private VendorTypes _currentVendorType = 0; private viewtypes _currentView = viewtypes.All; - //private RateTypes _currentRateType = 0; - //private long _MostLikelyRateUnitChargeDescriptionID = 0; private enum viewtypes { @@ -62,10 +59,250 @@ namespace AyaNovaQBI #region IMPORT - private void importSelectedItemsToolStripMenuItem_Click(object sender, EventArgs e) + private async void importSelectedItemsToolStripMenuItem_Click(object sender, EventArgs e) { + bool IsAyaGrid = false; + if (gridAya.SelectedRows.Count == 0 && gridQB.SelectedRows.Count == 0) return; + + IsAyaGrid = gridAya.SelectedRows.Count > 0; + + if (IsAyaGrid) + { + if (MessageBox.Show( + "Import and link the selected AyaNova objects into QuickBooks.\r\n\r\n" + + "Are you sure?", "Import AyaNova objects", MessageBoxButtons.YesNo, MessageBoxIcon.Question) + == DialogResult.No) return; + await ImportToQuickBooks(); + } + else + { + if (MessageBox.Show( + "Import and link the selected QuickBooks objects into AyaNova.\r\n\r\n" + + "Are you sure?", "Import QuickBooks objects", MessageBoxButtons.YesNo, MessageBoxIcon.Question) + == DialogResult.No) return; + await ImportToAyaNova(); + switch (_Type) + { + + case AyaType.Customer: + await util.PopulateAyaClientList(); + break; + case AyaType.Vendor: + await util.PopulateAyaVendorList(); + break; + case AyaType.ServiceRate: + await util.PopulateAyaServiceRateList(); + break; + case AyaType.TravelRate: + await util.PopulateAyaTravelRateList(); + break; + case AyaType.Part: + await util.PopulateAyaPartList(); + break; + } + } + } + + #region Import to AyaNova + + private async Task ImportToAyaNova() + { + this.Refresh(); + Cursor.Current = Cursors.WaitCursor; + ArrayList alErrors = new ArrayList(); + Waiting w = new Waiting(); + w.Show(); + w.Ops = "Importing from QuickBooks..."; + try + { + + switch (_Type) + { + case AyaType.Customer: + foreach (object o in moveData.Rows) + { + w.Step = ((QBNameID)o).Name; + + await util.ImportQBCustomer(((QBNameID)o).ID, alErrors); + } + break; + case AyaType.Vendor: + foreach (object o in moveData.Rows) + { + w.Step = ((QBNameID)o).Name; + + Util.ImportQBVendor(((QBNameID)o).ID, this._currentVendorType, alErrors); + } + break; + + case AyaType.Rate: + foreach (object o in moveData.Rows) + { + w.Step = ((QBNameID)o).Name; + + Util.ImportQBRate(((QBNameID)o).ID, this._currentRateType, _MostLikelyRateUnitChargeDescriptionID, alErrors); + } + break; + + + case AyaType.Part: + foreach (object o in moveData.Rows) + { + w.Step = ((QBNameID)o).Name; + + Util.ImportQBPart(((QBNameID)o).ID, alErrors); + } + break; + + default: + throw new System.NotSupportedException("ImportToAyaNova: NOT SUPPORTED (STUB): " + _Type.ToString()); + } + + //display errors if any + if (alErrors.Count != 0) + { + w.Visible = false; + + StringBuilder sb = new StringBuilder(); + sb.Append("Import completed with some errors:\r\n\r\n"); + foreach (object o in alErrors) + { + sb.Append((string)o); + sb.Append("\r\n************\r\n"); + + } + + + CopyableMessageBox cb = new CopyableMessageBox(sb.ToString()); + cb.ShowDialog(); + + + } + } + catch (Exception ex) + { + w.Visible = false; + Util.CrackDisplayAndIntegrationLogException(ex, "QBI:Map:ImportToAyaNova");//case 3717 + //CopyableMessageBox cb = new CopyableMessageBox("ImportToAyaNova error: \r\n" + Util.CrackException(ex)); + //cb.ShowDialog(); + + } + finally + { + + w.Close(); + } } + #endregion Import to AyaNova + + #region Import to QuickBooks + + private async Task ImportToQuickBooks() + { + this.Refresh(); + Cursor.Current = Cursors.WaitCursor; + ArrayList alErrors = new ArrayList(); + Waiting w = new Waiting(); + w.Show(); + w.Ops = "Importing from AyaNova..."; + try + { + + switch (_Type) + { + case AyaType.Customer: + foreach (object o in moveData.Rows) + { + w.Step = ((AyaNameID)o).Name; + + util.ImportAyaClient(((AyaNameID)o).ID, alErrors); + } + break; + case AyaType.Vendor: + foreach (object o in moveData.Rows) + { + w.Step = ((AyaNameID)o).Name; + + Util.ImportAyaVendor(((AyaNameID)o).ID, alErrors); + } + break; + case AyaType.Rate: + { + SetQBImportServiceRateAccounts s = new SetQBImportServiceRateAccounts(); + if (s.ShowDialog() != DialogResult.OK) + { + s.Dispose(); + return; + } + s.Dispose(); + RatePickList rpl = RatePickList.GetList(false); + foreach (object o in moveData.Rows) + { + w.Step = ((AyaNameID)o).Name; + + Util.ImportAyaRate(((AyaNameID)o).ID, rpl, alErrors); + } + } + break; + case AyaType.Part: + { + SetQBImportInventoryAccounts s = new SetQBImportInventoryAccounts(); + if (s.ShowDialog() != DialogResult.OK) + { + s.Dispose(); + return; + } + s.Dispose(); + foreach (object o in moveData.Rows) + { + w.Step = ((AyaNameID)o).Name; + + Util.ImportAyaPart(((AyaNameID)o).ID, alErrors); + } + } + break; + default: + throw new System.NotSupportedException("ImportToQuickBooks: NOT SUPPORTED (STUB): " + _Type.ToString()); + } + + //display errors if any + if (alErrors.Count != 0) + { + w.Visible = false; + + StringBuilder sb = new StringBuilder(); + sb.Append("Import completed with some errors:\r\n\r\n"); + foreach (object o in alErrors) + { + sb.Append((string)o); + sb.Append("\r\n************\r\n"); + + } + + CopyableMessageBox cb = new CopyableMessageBox(sb.ToString()); + cb.ShowDialog(); + cb.Dispose(); + + } + } + catch (Exception ex) + { + + //CopyableMessageBox cb=new CopyableMessageBox("ImportToQuickBooks error: " + ex.Message); + //cb.ShowDialog(); + //cb.Dispose(); + Util.CrackDisplayAndIntegrationLogException(ex, "QBI:Map:ImportToQuickBooks");//case 3717 + } + finally + { + + w.Close(); + } + } + #endregion importtoqb + + #endregion import #region AUTOMATIC LINK diff --git a/AyaNovaQBI/devinfo.txt b/AyaNovaQBI/devinfo.txt index dccedc1..40f390e 100644 --- a/AyaNovaQBI/devinfo.txt +++ b/AyaNovaQBI/devinfo.txt @@ -1,4 +1,6 @@ TODO: +REFRESH / UPDATE was previously done in v7 plugin in clients, parts grids etc, now needs to be added into qbi itself, maybe in the link form and then also need to rename the link form in the UI + as it's doing a *lot* of stuff, maybe just "Linking and updating", "Linked objects"? Test persisted form settings for server url (ONCE POSTED NEW BUILD OF AYANOVA TO TEST SERVER) Docs should not refer to autoclose anymore, it's status driven now DOCS UI use "Link" and do not use "map" anywhere