This commit is contained in:
2022-07-12 21:41:03 +00:00
parent 42c0555923
commit d611304fa3
3 changed files with 224 additions and 211 deletions

View File

@@ -57,10 +57,11 @@ namespace AyaNovaQBI
Initialize();
gridAya.ClearSelection();
gridQB.ClearSelection();
this.Text = "Customers";
lblQuickBooksGridTitle.Text = "QuickBooks - Customers";
lblAyaNovaGridTitle.Text = "AyaNova - Customers";
}
#region EXPORT
private async void exportSelectedItemsToolStripMenuItem_Click(object sender, EventArgs e)
{
@@ -655,6 +656,191 @@ namespace AyaNovaQBI
}
#endregion link manually
#region UPDATE
private async void updateSelectedItemsToolStripMenuItem_Click(object sender, EventArgs e)
{
if (gridAya.SelectedRows.Count == 0 && gridQB.SelectedRows.Count == 0) return;
bool IsAyaGrid = false;
IsAyaGrid = gridAya.SelectedRows.Count > 0;
string sFrom = IsAyaGrid ? "QuickBooks" : "AyaNova";
string sTo = IsAyaGrid ? "AyaNova" : "QuickBooks";
MapApproveUpdateSelectedItems s = new MapApproveUpdateSelectedItems();
string sType = "";
switch (_Type)
{
case AyaType.Customer:
sType = "Customers";
break;
case AyaType.Vendor:
sType = "Vendors";
break;
case AyaType.Part:
sType = "Parts";
s.ShowUpdatePriceCostOnlyCheckBox = true;
break;
}
s.UpdateMessage = $"Update selected {sTo} {sType} from {sFrom} ";
if (s.ShowDialog() == DialogResult.Cancel)
return;
bool PricesOnly = s.PriceOnly;
s.Dispose();
Waiting w = new Waiting();
w.Show();
w.Ops = $"Updating {sTo} {sType} from {sFrom}...";
try
{
menuStrip1.Enabled = gridQB.Enabled = gridAya.Enabled = false;
bool SaveIntegration = false;
if (IsAyaGrid)
{
#region AyaGrid so UPDATE AYANOVA FROM QB
switch (_Type)
{
case AyaType.Customer:
await util.PopulateQBClientCacheAsync();
break;
case AyaType.Vendor:
await util.PopulateQBVendorCacheAsync();
break;
case AyaType.Part:
await util.PopulateQBItemCacheAsync();
break;
}
foreach (DataGridViewRow r in gridAya.SelectedRows)
{
string AyaName = r.Cells[0].Value.ToString();
long AyaId = (long)r.Cells[1].Value;
//only linked items can be updated
IntegrationItem im = util.QBIntegration.Items.FirstOrDefault(z => z.ObjectId == AyaId && z.AType == _Type);
if (im != null)
{
w.Step = AyaName;
switch (_Type)
{
case AyaType.Customer:
await util.RefreshAyaNovaCustomerFromQBAsync(im);
break;
case AyaType.Vendor:
await util.RefreshAyaNovaVendorFromQBAsync(im);
break;
case AyaType.Part:
await util.RefreshAyaNovaPartFromQBAsync(im, PricesOnly);
break;
}
SaveIntegration = true;
}
}
switch (_Type)
{
case AyaType.Customer:
w.Step = "Refreshing AyaNova Customers cache";
await util.PopulateAyaClientList();
break;
case AyaType.Vendor:
w.Step = "Refreshing AyaNova Vendors cache";
await util.PopulateAyaVendorList();
break;
case AyaType.Part:
w.Step = "Refreshing AyaNova Parts cache";
await util.PopulateAyaPartList();
break;
}
#endregion AyaGrid
}
else
{
#region QB GRID
foreach (DataGridViewRow r in gridQB.SelectedRows)
{
var QBItemName = r.Cells[0].Value.ToString();
var QBItemId = r.Cells[1].Value.ToString();
//only linked items can be updated
IntegrationItem im = util.QBIntegration.Items.FirstOrDefault(z => z.IntegrationItemId == QBItemId && z.AType == _Type);
if (im != null)
{
w.Step = QBItemName;
switch (_Type)
{
case AyaType.Customer:
await util.RefreshQBCustomerFromAyaNovaAsync(im);
break;
case AyaType.Vendor:
await util.RefreshQBVendorFromAyaNovaAsync(im);
break;
case AyaType.Part:
await util.RefreshQBPartFromAyaNova(im, PricesOnly);
break;
}
SaveIntegration = true;
}
}
switch (_Type)
{
case AyaType.Customer:
w.Step = "Refreshing QB Customers cache";
await util.PopulateQBClientCacheAsync();
break;
case AyaType.Vendor:
w.Step = "Refreshing QB Vendors cache";
await util.PopulateQBVendorCacheAsync();
break;
case AyaType.ServiceRate:
case AyaType.TravelRate:
case AyaType.Part:
w.Step = "Refreshing QB Items cache";
await util.PopulateQBItemCacheAsync();
break;
}
#endregion qb grid
}
if (SaveIntegration)
{
await util.SaveIntegrationObject();
Initialize();
}
}
catch (Exception ex)
{
w.Visible = false;
await util.CrackDisplayAndIntegrationLogException(ex, "QBI:Map:UpdateSelectedItems");
}
finally
{
w.Close();
menuStrip1.Enabled = gridQB.Enabled = gridAya.Enabled = true;
}
}//eof
#endregion update
#region Initialize stuff
/// <summary>
/// Determine if row should be added to grid or now
@@ -892,6 +1078,8 @@ namespace AyaNovaQBI
if (_Type == AyaType.Customer) return;
_Type = AyaType.Customer;
this.Text = "Customers";
lblQuickBooksGridTitle.Text = "QuickBooks - Customers";
lblAyaNovaGridTitle.Text = "AyaNova - Customers";
updateSelectedItemsToolStripMenuItem.Visible = true;
Initialize();
}
@@ -902,6 +1090,8 @@ namespace AyaNovaQBI
if (_Type == AyaType.ServiceRate) return;
_Type = AyaType.ServiceRate;
this.Text = "Service rates";
lblQuickBooksGridTitle.Text = "QuickBooks - Service / Other items";
lblAyaNovaGridTitle.Text = "AyaNova - Service rates";
updateSelectedItemsToolStripMenuItem.Visible = false;
Initialize();
}
@@ -912,6 +1102,8 @@ namespace AyaNovaQBI
if (_Type == AyaType.TravelRate) return;
_Type = AyaType.TravelRate;
this.Text = "Travel rates";
lblQuickBooksGridTitle.Text = "QuickBooks - Service / Other items";
lblAyaNovaGridTitle.Text = "AyaNova - Travel rates";
updateSelectedItemsToolStripMenuItem.Visible = false;
Initialize();
}
@@ -922,6 +1114,8 @@ namespace AyaNovaQBI
if (_Type == AyaType.Part) return;
_Type = AyaType.Part;
this.Text = "Parts";
lblQuickBooksGridTitle.Text = "QuickBooks - Inventory / non-inventory / assembly items";
lblAyaNovaGridTitle.Text = "AyaNova - Parts";
updateSelectedItemsToolStripMenuItem.Visible = true;
Initialize();
if (!util.QBIntegration.Items.Any(z => z.AType == AyaType.Vendor))
@@ -943,6 +1137,8 @@ namespace AyaNovaQBI
if (_Type == AyaType.Vendor) return;
_Type = AyaType.Vendor;
this.Text = "Vendors";
lblQuickBooksGridTitle.Text = "QuickBooks - Vendors";
lblAyaNovaGridTitle.Text = "AyaNova - Vendors";
updateSelectedItemsToolStripMenuItem.Visible = true;
Initialize();
}
@@ -991,187 +1187,5 @@ namespace AyaNovaQBI
private async void updateSelectedItemsToolStripMenuItem_Click(object sender, EventArgs e)
{
if (gridAya.SelectedRows.Count == 0 && gridQB.SelectedRows.Count == 0) return;
bool IsAyaGrid = false;
IsAyaGrid = gridAya.SelectedRows.Count > 0;
string sFrom = IsAyaGrid ? "QuickBooks" : "AyaNova";
string sTo = IsAyaGrid ? "AyaNova" : "QuickBooks";
MapApproveUpdateSelectedItems s = new MapApproveUpdateSelectedItems();
string sType = "";
switch (_Type)
{
case AyaType.Customer:
sType = "Customers";
break;
case AyaType.Vendor:
sType = "Vendors";
break;
case AyaType.Part:
sType = "Parts";
s.ShowUpdatePriceCostOnlyCheckBox = true;
break;
}
s.UpdateMessage = $"Update selected {sTo} {sType} from {sFrom} ";
if (s.ShowDialog() == DialogResult.Cancel)
return;
bool PricesOnly = s.PriceOnly;
s.Dispose();
Waiting w = new Waiting();
w.Show();
w.Ops = $"Updating {sTo} {sType} from {sFrom}...";
try
{
menuStrip1.Enabled = gridQB.Enabled = gridAya.Enabled = false;
bool SaveIntegration = false;
if (IsAyaGrid)
{
#region AyaGrid so UPDATE AYANOVA FROM QB
switch (_Type)
{
case AyaType.Customer:
await util.PopulateQBClientCacheAsync();
break;
case AyaType.Vendor:
await util.PopulateQBVendorCacheAsync();
break;
case AyaType.Part:
await util.PopulateQBItemCacheAsync();
break;
}
foreach (DataGridViewRow r in gridAya.SelectedRows)
{
string AyaName = r.Cells[0].Value.ToString();
long AyaId = (long)r.Cells[1].Value;
//only linked items can be updated
IntegrationItem im = util.QBIntegration.Items.FirstOrDefault(z => z.ObjectId == AyaId && z.AType == _Type);
if (im != null)
{
w.Step = AyaName;
switch (_Type)
{
case AyaType.Customer:
await util.RefreshAyaNovaCustomerFromQBAsync(im);
break;
case AyaType.Vendor:
await util.RefreshAyaNovaVendorFromQBAsync(im);
break;
case AyaType.Part:
await util.RefreshAyaNovaPartFromQBAsync(im, PricesOnly);
break;
}
SaveIntegration = true;
}
}
switch (_Type)
{
case AyaType.Customer:
w.Step = "Refreshing AyaNova Customers cache";
await util.PopulateAyaClientList();
break;
case AyaType.Vendor:
w.Step = "Refreshing AyaNova Vendors cache";
await util.PopulateAyaVendorList();
break;
case AyaType.Part:
w.Step = "Refreshing AyaNova Parts cache";
await util.PopulateAyaPartList();
break;
}
#endregion AyaGrid
}
else
{
#region QB GRID
foreach (DataGridViewRow r in gridQB.SelectedRows)
{
var QBItemName = r.Cells[0].Value.ToString();
var QBItemId = r.Cells[1].Value.ToString();
//only linked items can be updated
IntegrationItem im = util.QBIntegration.Items.FirstOrDefault(z => z.IntegrationItemId == QBItemId && z.AType == _Type);
if (im != null)
{
w.Step = QBItemName;
switch (_Type)
{
case AyaType.Customer:
await util.RefreshQBCustomerFromAyaNovaAsync(im);
break;
case AyaType.Vendor:
await util.RefreshQBVendorFromAyaNovaAsync(im);
break;
case AyaType.Part:
await util.RefreshQBPartFromAyaNova(im, PricesOnly);
break;
}
SaveIntegration = true;
}
}
switch (_Type)
{
case AyaType.Customer:
w.Step = "Refreshing QB Customers cache";
await util.PopulateQBClientCacheAsync();
break;
case AyaType.Vendor:
w.Step = "Refreshing QB Vendors cache";
await util.PopulateQBVendorCacheAsync();
break;
case AyaType.ServiceRate:
case AyaType.TravelRate:
case AyaType.Part:
w.Step = "Refreshing QB Items cache";
await util.PopulateQBItemCacheAsync();
break;
}
#endregion qb grid
}
if (SaveIntegration)
{
await util.SaveIntegrationObject();
Initialize();
}
}
catch (Exception ex)
{
w.Visible = false;
await util.CrackDisplayAndIntegrationLogException(ex, "QBI:Map:UpdateSelectedItems");
}
finally
{
w.Close();
menuStrip1.Enabled = gridQB.Enabled = gridAya.Enabled = true;
}
}//eof
}//eoc
}//eons