Files
2020-05-06 19:19:16 +00:00

281 lines
8.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AyaNova.PlugIn;
using System.Windows.Forms;
using GZTW.AyaNova.BLL;
using System.Threading;
namespace AyaNova.PlugIn.PTI
{
class PTIPlugin : IAyaNovaPlugin
{
private static bool bLicensed = false;
private static bool bPFCDone = false;
private static List<RootObjectTypes> ObjectsWeCanDealWith = null;
#region IAyaNovaPlugin Members
#region Interface Properties
public string PluginName
{
get { return "AyaNova PTI"; }
}
public Guid PluginID
{
get { return new Guid("{0B937F64-7BC4-4b7d-A1CF-46BD14F49918}"); }
}
public System.Drawing.Image PluginSmallIcon
{
get
{
return Resource.PTI16;
}
}
public System.Drawing.Image PluginLargeIcon
{
get
{
return Resource.PTI32;
}
}
public string PluginVersion
{
get { return "7.6"; }
}
public string About
{
get
{
return
"AyaNova PTI plugin";
}
}
public System.Resources.ResourceManager AyaNovaResourceManager
{
set
{
Util.AyaResource = value;
}
}
#endregion interface props
#region Initialization and close
public bool Initialize(Version AyaNovaVersion, LocalizedTextTable localizedText)
{
Util.LocaleText = localizedText;
//case 1841
//if (AyaBizUtils.Trial)
//{
// //case 1031
// //MessageBox.Show("AyaNova PTI can not be used with a trial AyaNova database");
// return false;
//}
//case 1590
// bLicensed = (!string.IsNullOrEmpty(AyaBizUtils.PluginLicensedVersion("PTI - Peachtree interface")));
//case 2094
//First, handle fuckery related to having two different licensed plugin names for this one plugin
//Old style name by default
string sPluginKeyName = "PTI - Peachtree interface";
//if the old name doesn't exist then assume new name,
//if it doesn't either then no worries it's not licensed either way
if (!AyaBizUtils.PluginSubscriptionExists(sPluginKeyName))
sPluginKeyName = "PTI - US Sage 50/Peachtree interface";
bLicensed = AyaBizUtils.PluginAllowed(sPluginKeyName, AyaNova.PlugIn.PTI.Timestamp.BuildAt);
if (!bLicensed && AyaBizUtils.PluginTooNew(sPluginKeyName, AyaNova.PlugIn.PTI.Timestamp.BuildAt))
{
MessageBox.Show(
"NOT LICENSED!\r\n\r\nThis PTI plugin was built " +
AyaNova.PlugIn.PTI.Timestamp.BuildAt.ToString() + "\r\n" +
"but your license subscription for it ended " +
AyaBizUtils.PluginSubscriptionDate(sPluginKeyName).ToString() + "\r\n" +
"\r\nDowngrade back to your previous version or purchase a subscription to use this plugin.");
return false;
}
if (AyaNovaVersion.Major != 7)
{
MessageBox.Show("This AyaNovaPTI plugin requires AyaNova version 7");
return false;
}
Util.GlobalSettings = AyaBizUtils.GlobalSettings;
ObjectsWeCanDealWith = new List<RootObjectTypes>();
ObjectsWeCanDealWith.Add(RootObjectTypes.Nothing);
// ObjectsWeCanDealWith.Add(RootObjectTypes.Client);
return true;
}
public void Close()
{
;
}
#endregion init and close
#region Show menu?
public bool SingleObjectMenuShow(RootObjectTypes objectType)
{
return (ObjectsWeCanDealWith.Contains(objectType));
}
public bool MultipleObjectsMenuShow(RootObjectTypes objectType)
{
return (ObjectsWeCanDealWith.Contains(objectType));
}
#endregion Show menu
#region menu options
public List<AyaNovaPluginMenuItem> SingleObjectMenuOptions(RootObjectTypes objectType, object ayaNovaObject)
{
if (!ObjectsWeCanDealWith.Contains(objectType)) return null;
if (!bLicensed)
{
MessageBox.Show("An AyaNova PTI license is required to use this Peachtree integration plugin\r\n");
return null;
}
if (!DoPFC()) return null;
List<AyaNovaPluginMenuItem> list = new List<AyaNovaPluginMenuItem>();
switch (objectType)
{
case RootObjectTypes.Nothing:
list.Add(new AyaNovaPluginMenuItem("MAIN", "PTI Main", Resource.PTI32, Resource.PTI16));
if(bPFCDone)
list.Add(new AyaNovaPluginMenuItem("RESCANQB", "Refresh Peachtree connection", null,null));
break;
//case RootObjectTypes.Client:
// list.Add(new AyaNovaPluginMenuItem("CLIENTLINKREFRESH", "Link / Refresh", null, null));
// break;
}
return list;
//if (objectType == RootObjectTypes.Client)
//{
//List<AyaNovaPluginMenuItem> list = new List<AyaNovaPluginMenuItem>();
//list.Add(new AyaNovaPluginMenuItem("KEY1", "Command1 for " + ayaNovaObject.ToString(), Resource.UnLink32, Resource.OK16));
//list.Add(new AyaNovaPluginMenuItem("KEY2", "My command 2 no icon", null, null));
//return list;
////}
//else
// return null;
}
public List<AyaNovaPluginMenuItem> MultipleObjectsMenuOptions(RootObjectTypes objectType)
{
return null;
//if (!ObjectsWeCanDealWith.Contains(objectType)) return null;
//if (!bLicensed)
//{
// MessageBox.Show("An AyaNova PTI license is required to use this Peachtree integration plugin\r\n");
// return null;
//}
//if (!DoPFC()) return null;
//List<AyaNovaPluginMenuItem> list = new List<AyaNovaPluginMenuItem>();
//list.Add(new AyaNovaPluginMenuItem("KEY1", "List Command1 for " + objectType.ToString(), null,null));
//list.Add(new AyaNovaPluginMenuItem("KEY2", "Multiple command 2 no icon", null, null));
//return list;
}
#endregion menu options
#region Commands
public bool CommandSelectedForList(string commandKey, RootObjectTypes objectType, List<Guid> objectIDList, object listObject)
{
return false;
//if (!ObjectsWeCanDealWith.Contains(objectType)) return false;
//MessageBox.Show("Command for list:" + commandKey + " ObjectType:" + objectType.ToString() + " Count selected: " + objectIDList.Count.ToString());
//return true;
}
public void CommandSelectedForSingleObject(string commandKey, RootObjectTypes objectType, object ayaNovaObject)
{
if (!ObjectsWeCanDealWith.Contains(objectType)) return;
switch (commandKey)
{
case "MAIN":
MainForm mf = new MainForm();
mf.Show();
break;
case "RESCANQB":
Util.PopulatePTListCache();
Util.PopulateAyaListCache();
break;
}
//string sObject = "NULL";
//if (ayaNovaObject != null)
// sObject = ayaNovaObject.ToString();
//MessageBox.Show("Command:" + commandKey + " ObjectType:" + objectType.ToString() + " Object: " + sObject);
}
#endregion commands
#endregion
#region Pre flight check
private bool DoPFC()
{
if (bPFCDone) return true;
if (Util.PreFlightCheck() != Util.pfstat.OK)
{
IntegrationLog.Log(Util.PTID, "PTI Preflight check failed, shutting down");
bPFCDone = false;
return false;
}
bPFCDone = true;
return true;
}
#endregion
}
}