using System; using System.Xml; using System.IO; namespace AyaNova.PlugIn.QBI { /// /// Case 299 /// QBIDataEx replaces original QBIData which was not /// designed for expansion /// [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 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 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; } } } /// /// 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 /// public bool NothingSet { get { if(_PreWOStatus==Guid.Empty && _PostWOStatus==Guid.Empty && _OutsideServiceChargeAs=="" && _WorkorderItemLoanChargeAs=="" && _MiscExpenseChargeAs=="" && _TransactionClass=="" && _QBInvoiceTemplate=="") return true; return false; } } #endregion props public QBIDataEx() { // // TODO: Add constructor logic here // } #region XML in/out /// /// 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 /// 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("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); 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); _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); //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 /// /// Case 299 /// /// /// 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 } }