590 lines
21 KiB
C#
590 lines
21 KiB
C#
using System;
|
|
using System.Xml;
|
|
using System.IO;
|
|
|
|
namespace AyaNova.PlugIn.QBOI
|
|
{
|
|
/// <summary>
|
|
/// Case 299
|
|
/// QBIDataEx replaces original QBIData which was not
|
|
/// designed for expansion
|
|
/// </summary>
|
|
[Serializable]
|
|
public class QBIDataEx
|
|
{
|
|
|
|
|
|
#region fields
|
|
private Guid _PreWOStatus = Guid.Empty;
|
|
private Guid _PostWOStatus = Guid.Empty;
|
|
private string _OutsideServiceChargeAs = "";
|
|
private string _WorkorderItemLoanChargeAs = "";
|
|
private string _MiscExpenseChargeAs = "";
|
|
private string _QBInvoiceTemplate = "";
|
|
private bool _SetMemoField = true;
|
|
private string _TransactionClass = "";
|
|
private bool _ToBePrinted = true;
|
|
private bool _ToBeEmailed = true;
|
|
private string _InvoiceHeaderTemplate = "";
|
|
private string _InvoiceFooterTemplate = "";
|
|
private string _InvoiceUnitTemplate = "";
|
|
private string _InvoiceServiceTemplate = "";
|
|
private string _InvoiceTravelTemplate = "";
|
|
private string _InvoiceOutsideServiceTemplate = "";
|
|
private string _InvoiceMiscExpenseTemplate = "";
|
|
private string _InvoiceLoanItemTemplate = "";
|
|
|
|
//Case 7
|
|
private bool _AutoClose = true;
|
|
|
|
#region Case 632
|
|
//Default qb accounts to use when importing inventory and service items
|
|
//from ayanova to QuickBooks
|
|
private string _QBInventoryIncomeAccountReference = "";
|
|
public string QBInventoryIncomeAccountReference
|
|
{
|
|
get { return _QBInventoryIncomeAccountReference; }
|
|
set { if (_QBInventoryIncomeAccountReference != value) { _QBInventoryIncomeAccountReference = value; IsDirty = true; } }
|
|
}
|
|
|
|
private string _QBInventoryCOGSAccountRef = "";
|
|
public string QBInventoryCOGSAccountRef
|
|
{
|
|
get { return _QBInventoryCOGSAccountRef; }
|
|
set { if (_QBInventoryCOGSAccountRef != value) { _QBInventoryCOGSAccountRef = value; IsDirty = true; } }
|
|
}
|
|
|
|
private string _QBInventoryAssetAccountRef = "";
|
|
public string QBInventoryAssetAccountRef
|
|
{
|
|
get { return _QBInventoryAssetAccountRef; }
|
|
set { if (_QBInventoryAssetAccountRef != value) { _QBInventoryAssetAccountRef = value; IsDirty = true; } }
|
|
}
|
|
|
|
|
|
private string _QBServiceIncomeAccountRef = "";
|
|
public string QBServiceIncomeAccountRef
|
|
{
|
|
get { return _QBServiceIncomeAccountRef; }
|
|
set { if (_QBServiceIncomeAccountRef != value) { _QBServiceIncomeAccountRef = value; IsDirty = true; } }
|
|
}
|
|
#endregion
|
|
|
|
//Case 519
|
|
private string _TermsDefault = "";
|
|
public string TermsDefault
|
|
{
|
|
get { return _TermsDefault; }
|
|
set { if (_TermsDefault != value) { _TermsDefault = value; IsDirty = true; } }
|
|
}
|
|
|
|
|
|
|
|
public bool IsDirty = false;
|
|
#endregion
|
|
|
|
#region Properties
|
|
public Guid PreWOStatus
|
|
{
|
|
get { return _PreWOStatus; }
|
|
set
|
|
{
|
|
if (_PreWOStatus != value)
|
|
{
|
|
_PreWOStatus = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public Guid PostWOStatus
|
|
{
|
|
get { return _PostWOStatus; }
|
|
set
|
|
{
|
|
if (_PostWOStatus != value)
|
|
{
|
|
_PostWOStatus = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string OutsideServiceChargeAs
|
|
{
|
|
get { return _OutsideServiceChargeAs; }
|
|
set
|
|
{
|
|
if (_OutsideServiceChargeAs != value)
|
|
{
|
|
_OutsideServiceChargeAs = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
public string MiscExpenseChargeAs
|
|
{
|
|
get { return _MiscExpenseChargeAs; }
|
|
set
|
|
{
|
|
if (_MiscExpenseChargeAs != value)
|
|
{
|
|
_MiscExpenseChargeAs = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string WorkorderItemLoanChargeAs
|
|
{
|
|
get { return _WorkorderItemLoanChargeAs; }
|
|
set
|
|
{
|
|
if (_WorkorderItemLoanChargeAs != value)
|
|
{
|
|
_WorkorderItemLoanChargeAs = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
public string QBInvoiceTemplate
|
|
{
|
|
get { return _QBInvoiceTemplate; }
|
|
set
|
|
{
|
|
if (_QBInvoiceTemplate != value)
|
|
{
|
|
_QBInvoiceTemplate = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
public bool SetMemoField
|
|
{
|
|
get { return _SetMemoField; }
|
|
set
|
|
{
|
|
if (_SetMemoField != value)
|
|
{
|
|
_SetMemoField = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string TransactionClass
|
|
{
|
|
get { return _TransactionClass; }
|
|
set
|
|
{
|
|
if (_TransactionClass != value)
|
|
{
|
|
_TransactionClass = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool ToBePrinted
|
|
{
|
|
get { return _ToBePrinted; }
|
|
set
|
|
{
|
|
if (_ToBePrinted != value)
|
|
{
|
|
_ToBePrinted = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool ToBeEmailed
|
|
{
|
|
get { return _ToBeEmailed; }
|
|
set
|
|
{
|
|
if (_ToBeEmailed != value)
|
|
{
|
|
_ToBeEmailed = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public string InvoiceHeaderTemplate
|
|
{
|
|
get { return _InvoiceHeaderTemplate; }
|
|
set
|
|
{
|
|
if (_InvoiceHeaderTemplate != value)
|
|
{
|
|
_InvoiceHeaderTemplate = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string InvoiceFooterTemplate
|
|
{
|
|
get { return _InvoiceFooterTemplate; }
|
|
set
|
|
{
|
|
if (_InvoiceFooterTemplate != value)
|
|
{
|
|
_InvoiceFooterTemplate = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string InvoiceUnitTemplate
|
|
{
|
|
get { return _InvoiceUnitTemplate; }
|
|
set
|
|
{
|
|
if (_InvoiceUnitTemplate != value)
|
|
{
|
|
_InvoiceUnitTemplate = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string InvoiceServiceTemplate
|
|
{
|
|
get { return _InvoiceServiceTemplate; }
|
|
set
|
|
{
|
|
if (_InvoiceServiceTemplate != value)
|
|
{
|
|
_InvoiceServiceTemplate = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string InvoiceTravelTemplate
|
|
{
|
|
get { return _InvoiceTravelTemplate; }
|
|
set
|
|
{
|
|
if (_InvoiceTravelTemplate != value)
|
|
{
|
|
_InvoiceTravelTemplate = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string InvoiceOutsideServiceTemplate
|
|
{
|
|
get { return _InvoiceOutsideServiceTemplate; }
|
|
set
|
|
{
|
|
if (_InvoiceOutsideServiceTemplate != value)
|
|
{
|
|
_InvoiceOutsideServiceTemplate = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string InvoiceMiscExpenseTemplate
|
|
{
|
|
get { return _InvoiceMiscExpenseTemplate; }
|
|
set
|
|
{
|
|
if (_InvoiceMiscExpenseTemplate != value)
|
|
{
|
|
_InvoiceMiscExpenseTemplate = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string InvoiceLoanItemTemplate
|
|
{
|
|
get { return _InvoiceLoanItemTemplate; }
|
|
set
|
|
{
|
|
if (_InvoiceLoanItemTemplate != value)
|
|
{
|
|
_InvoiceLoanItemTemplate = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public bool HasInvoiceHeaderTemplate
|
|
{
|
|
get
|
|
{
|
|
return _InvoiceHeaderTemplate != "";
|
|
}
|
|
}
|
|
|
|
public bool HasAnyInvoiceFooterTemplateFields
|
|
{
|
|
get
|
|
{
|
|
if (this._InvoiceFooterTemplate != "" ||
|
|
this._InvoiceUnitTemplate != "" ||
|
|
this._InvoiceServiceTemplate != "" ||
|
|
this._InvoiceTravelTemplate != "" ||
|
|
this._InvoiceLoanItemTemplate != "" ||
|
|
this._InvoiceMiscExpenseTemplate != "" ||
|
|
this._InvoiceOutsideServiceTemplate != ""
|
|
)
|
|
return true;
|
|
else
|
|
return false;
|
|
|
|
}
|
|
}
|
|
|
|
//Case 7
|
|
public bool AutoClose
|
|
{
|
|
get { return _AutoClose; }
|
|
set
|
|
{
|
|
if (_AutoClose != value)
|
|
{
|
|
_AutoClose = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//QBOI stuff
|
|
|
|
private string _CustomerTaxCodeDefault = Util.TAX_CODE_ID_NO_TAX;
|
|
public string CustomerTaxCodeDefault
|
|
{
|
|
get { return _CustomerTaxCodeDefault; }
|
|
set { if (_CustomerTaxCodeDefault != value) { _CustomerTaxCodeDefault = value; IsDirty = true; } }
|
|
}
|
|
|
|
private bool _ImportItemTaxable = true;
|
|
public bool ImportItemTaxable
|
|
{
|
|
get { return _ImportItemTaxable; }
|
|
set
|
|
{
|
|
if (_ImportItemTaxable != value)
|
|
{
|
|
_ImportItemTaxable = value;
|
|
IsDirty = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// Flag indicating whether user has configured
|
|
/// QBI at all yet, this is used to present a description
|
|
/// of the configuration that is about to take place to the user
|
|
///
|
|
/// If this is false then any missing option is considered a one-off
|
|
/// and no general initial description is given to the user about setting
|
|
/// up QBI
|
|
/// </summary>
|
|
public bool NothingSet
|
|
{
|
|
get
|
|
{
|
|
if (_PreWOStatus == Guid.Empty &&
|
|
_PostWOStatus == Guid.Empty &&
|
|
_OutsideServiceChargeAs == "" &&
|
|
_WorkorderItemLoanChargeAs == "" &&
|
|
_MiscExpenseChargeAs == "" &&
|
|
_TransactionClass == "" &&
|
|
_QBInvoiceTemplate == "") return true;
|
|
return false;
|
|
|
|
}
|
|
}
|
|
#endregion props
|
|
|
|
public QBIDataEx()
|
|
{
|
|
//
|
|
//
|
|
}
|
|
|
|
|
|
#region XML in/out
|
|
|
|
/// <summary>
|
|
/// Set - Sets the fields in this object based on the contents of the xml string
|
|
/// Get - Get's the fields of this object in the format of an xml string
|
|
/// </summary>
|
|
public string XMLData
|
|
{
|
|
get
|
|
{
|
|
System.Text.StringBuilder sb = new System.Text.StringBuilder();
|
|
|
|
System.Xml.XmlTextWriter w = new System.Xml.XmlTextWriter(new StringWriter(sb));
|
|
w.Formatting = System.Xml.Formatting.Indented;
|
|
|
|
w.WriteStartDocument(true);
|
|
w.WriteStartElement("QBISettings");
|
|
|
|
w.WriteElementString("PreWOStatus", XmlConvert.ToString(_PreWOStatus));
|
|
w.WriteElementString("PostWOStatus", XmlConvert.ToString(_PostWOStatus));
|
|
w.WriteElementString("OutsideServiceChargeAs", _OutsideServiceChargeAs);
|
|
w.WriteElementString("WorkorderItemLoanChargeAs", _WorkorderItemLoanChargeAs);
|
|
w.WriteElementString("MiscExpenseChargeAs", _MiscExpenseChargeAs);
|
|
w.WriteElementString("QBInvoiceTemplate", _QBInvoiceTemplate);
|
|
w.WriteElementString("SetMemoField", XmlConvert.ToString(_SetMemoField));
|
|
w.WriteElementString("TransactionClass", _TransactionClass);
|
|
w.WriteElementString("ToBePrinted", XmlConvert.ToString(_ToBePrinted));
|
|
w.WriteElementString("ToBeEmailed", XmlConvert.ToString(_ToBeEmailed));
|
|
w.WriteElementString("InvoiceHeaderTemplate", _InvoiceHeaderTemplate);
|
|
w.WriteElementString("InvoiceFooterTemplate", _InvoiceFooterTemplate);
|
|
w.WriteElementString("InvoiceUnitTemplate", _InvoiceUnitTemplate);
|
|
w.WriteElementString("InvoiceServiceTemplate", _InvoiceServiceTemplate);
|
|
w.WriteElementString("InvoiceTravelTemplate", _InvoiceTravelTemplate);
|
|
w.WriteElementString("InvoiceOutsideServiceTemplate", _InvoiceOutsideServiceTemplate);
|
|
w.WriteElementString("InvoiceMiscExpenseTemplate", _InvoiceMiscExpenseTemplate);
|
|
w.WriteElementString("InvoiceLoanItemTemplate", _InvoiceLoanItemTemplate);
|
|
|
|
//Case 7
|
|
w.WriteElementString("AutoClose", XmlConvert.ToString(_AutoClose));
|
|
|
|
//Case 632
|
|
w.WriteElementString("QBInventoryIncomeAccountReference", _QBInventoryIncomeAccountReference);
|
|
w.WriteElementString("QBInventoryCOGSAccountRef", _QBInventoryCOGSAccountRef);
|
|
w.WriteElementString("QBInventoryAssetAccountRef", _QBInventoryAssetAccountRef);
|
|
w.WriteElementString("QBServiceIncomeAccountRef", _QBServiceIncomeAccountRef);
|
|
//Case 519
|
|
w.WriteElementString("TermsDefault", _TermsDefault);
|
|
|
|
//qboi stuff
|
|
w.WriteElementString("CustomerTaxCodeDefault", _CustomerTaxCodeDefault);
|
|
w.WriteElementString("ImportItemTaxable", XmlConvert.ToString(_ImportItemTaxable));
|
|
|
|
w.WriteEndElement();
|
|
w.WriteEndDocument();
|
|
w.Flush();
|
|
w.Close();
|
|
|
|
return sb.ToString();
|
|
}
|
|
set
|
|
{
|
|
|
|
XmlDocument xmldoc = new XmlDocument();
|
|
try
|
|
{
|
|
xmldoc.LoadXml(value);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new ApplicationException("Error: exception in QBIDataEx::XMLData.set()->LoadXml:\r\n." + ex.Message, ex.InnerException);
|
|
|
|
}
|
|
|
|
_PreWOStatus = XmlConvert.ToGuid(xmldoc.SelectSingleNode("/QBISettings/PreWOStatus").InnerText);
|
|
_PostWOStatus = XmlConvert.ToGuid(xmldoc.SelectSingleNode("/QBISettings/PostWOStatus").InnerText);
|
|
_OutsideServiceChargeAs = xmldoc.SelectSingleNode("/QBISettings/OutsideServiceChargeAs").InnerText;
|
|
_WorkorderItemLoanChargeAs = xmldoc.SelectSingleNode("/QBISettings/WorkorderItemLoanChargeAs").InnerText;
|
|
_MiscExpenseChargeAs = xmldoc.SelectSingleNode("/QBISettings/MiscExpenseChargeAs").InnerText;
|
|
_QBInvoiceTemplate = xmldoc.SelectSingleNode("/QBISettings/QBInvoiceTemplate").InnerText;
|
|
_SetMemoField = XmlConvert.ToBoolean(xmldoc.SelectSingleNode("/QBISettings/SetMemoField").InnerText);
|
|
_TransactionClass = xmldoc.SelectSingleNode("/QBISettings/TransactionClass").InnerText;
|
|
_ToBePrinted = XmlConvert.ToBoolean(xmldoc.SelectSingleNode("/QBISettings/ToBePrinted").InnerText);
|
|
|
|
if (xmldoc.SelectSingleNode("/QBISettings/ToBeEmailed") != null)
|
|
_ToBeEmailed = XmlConvert.ToBoolean(xmldoc.SelectSingleNode("/QBISettings/ToBeEmailed").InnerText);
|
|
|
|
_InvoiceHeaderTemplate = xmldoc.SelectSingleNode("/QBISettings/InvoiceHeaderTemplate").InnerText;
|
|
_InvoiceFooterTemplate = xmldoc.SelectSingleNode("/QBISettings/InvoiceFooterTemplate").InnerText;
|
|
_InvoiceUnitTemplate = xmldoc.SelectSingleNode("/QBISettings/InvoiceUnitTemplate").InnerText;
|
|
_InvoiceServiceTemplate = xmldoc.SelectSingleNode("/QBISettings/InvoiceServiceTemplate").InnerText;
|
|
_InvoiceTravelTemplate = xmldoc.SelectSingleNode("/QBISettings/InvoiceTravelTemplate").InnerText;
|
|
_InvoiceOutsideServiceTemplate = xmldoc.SelectSingleNode("/QBISettings/InvoiceOutsideServiceTemplate").InnerText;
|
|
_InvoiceMiscExpenseTemplate = xmldoc.SelectSingleNode("/QBISettings/InvoiceMiscExpenseTemplate").InnerText;
|
|
_InvoiceLoanItemTemplate = xmldoc.SelectSingleNode("/QBISettings/InvoiceLoanItemTemplate").InnerText;
|
|
|
|
//Case 7
|
|
_AutoClose = XmlConvert.ToBoolean(xmldoc.SelectSingleNode("/QBISettings/AutoClose").InnerText);
|
|
|
|
|
|
if (xmldoc.SelectSingleNode("/QBISettings/ImportItemTaxable") != null)
|
|
_ImportItemTaxable = XmlConvert.ToBoolean(xmldoc.SelectSingleNode("/QBISettings/ImportItemTaxable").InnerText);
|
|
|
|
if (xmldoc.SelectSingleNode("/QBISettings/CustomerTaxCodeDefault") != null)
|
|
_CustomerTaxCodeDefault = xmldoc.SelectSingleNode("/QBISettings/CustomerTaxCodeDefault").InnerText;
|
|
|
|
|
|
//Case 632
|
|
//Check if the case 632 items exist in the document:
|
|
if (xmldoc.SelectSingleNode("/QBISettings/QBInventoryIncomeAccountReference") != null)
|
|
{
|
|
//Yup, so fetch them all now
|
|
_QBInventoryIncomeAccountReference = xmldoc.SelectSingleNode("/QBISettings/QBInventoryIncomeAccountReference").InnerText;
|
|
_QBInventoryCOGSAccountRef = xmldoc.SelectSingleNode("/QBISettings/QBInventoryCOGSAccountRef").InnerText;
|
|
_QBInventoryAssetAccountRef = xmldoc.SelectSingleNode("/QBISettings/QBInventoryAssetAccountRef").InnerText;
|
|
_QBServiceIncomeAccountRef = xmldoc.SelectSingleNode("/QBISettings/QBServiceIncomeAccountRef").InnerText;
|
|
|
|
|
|
}
|
|
|
|
//Case 519
|
|
if (xmldoc.SelectSingleNode("/QBISettings/TermsDefault") != null)
|
|
_TermsDefault = xmldoc.SelectSingleNode("/QBISettings/TermsDefault").InnerText;
|
|
|
|
//FUTURE: items are going to have to check for presence of nodes before attempting to retrieve them
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region Case 299 convert from object format to xml format
|
|
/// <summary>
|
|
/// Case 299
|
|
/// </summary>
|
|
/// <param name="o"></param>
|
|
/// <returns></returns>
|
|
internal void convertFromObjectFormat(object o)
|
|
{
|
|
QBIData old = (QBIData)o;
|
|
this._InvoiceFooterTemplate = old.InvoiceFooterTemplate;
|
|
this._PreWOStatus = old.PreWOStatus;
|
|
this._PostWOStatus = old.PostWOStatus;
|
|
this._OutsideServiceChargeAs = old.OutsideServiceChargeAs;
|
|
this._WorkorderItemLoanChargeAs = old.WorkorderItemLoanChargeAs;
|
|
this._MiscExpenseChargeAs = old.MiscExpenseChargeAs;
|
|
this._QBInvoiceTemplate = old.QBInvoiceTemplate;
|
|
this._SetMemoField = old.SetMemoField;
|
|
this._TransactionClass = old.TransactionClass;
|
|
this._ToBePrinted = old.ToBePrinted;
|
|
this._InvoiceHeaderTemplate = old.InvoiceHeaderTemplate;
|
|
this._InvoiceFooterTemplate = old.InvoiceFooterTemplate;
|
|
this._InvoiceUnitTemplate = old.InvoiceUnitTemplate;
|
|
this._InvoiceServiceTemplate = old.InvoiceServiceTemplate;
|
|
this._InvoiceTravelTemplate = old.InvoiceTravelTemplate;
|
|
this._InvoiceOutsideServiceTemplate = old.InvoiceOutsideServiceTemplate;
|
|
this._InvoiceMiscExpenseTemplate = old.InvoiceMiscExpenseTemplate;
|
|
this._InvoiceLoanItemTemplate = old.InvoiceLoanItemTemplate;
|
|
|
|
//Case 7
|
|
//Default is for consistency with original method
|
|
this._AutoClose = true;
|
|
|
|
}
|
|
#endregion
|
|
}
|
|
}
|