public string ConvertDeposit <T>(List <T> items)
        {
            string xml = "";

            Type t = typeof(T);

            QuickbooksDepositAttribute qbDepositAttribute = (QuickbooksDepositAttribute)Attribute.GetCustomAttribute(t, typeof(QuickbooksDepositAttribute));

            string linesXml = "";

            foreach (var item in items)
            {
                linesXml += ConvertDepositLine(item);
            }

            var template = GetTemplateText(DepositTemplate);

            if (template != null)
            {
                xml = template
                      .Replace("{{Date}}", DateTime.Now.ToString("yyyy-MM-dd"))
                      .Replace("{{DepositToAccount}}", "Operating Account - 3363")
                      .Replace("{{Memo}}", "Deposit")
                      .Replace("{{DepositLines}}", linesXml);
            }

            return(xml);
        }
        public string ConvertDepositLine <T>(T item)
        {
            string xml = "";

            Type t = typeof(T);

            QuickbooksDepositAttribute qbDepositAttribute = (QuickbooksDepositAttribute)Attribute.GetCustomAttribute(t, typeof(QuickbooksDepositAttribute));

            var fields = GetQuickbooksFieldValues(item, t);

            if (FieldsAreValidForDepositAdd(fields))
            {
                var template = GetTemplateText(DepositLineTemplate);

                if (template != null)
                {
                    xml = template
                          .Replace("{{DepositLineEntityFullName}}", fields["DepositLineEntityFullName"].ToXmlString())
                          .Replace("{{FromAccount}}", fields["AccountRef"].ToXmlString())
                          .Replace("{{DepositLineMemo}}", fields["Memo"].ToXmlString())
                          .Replace("{{CheckNumber}}", fields["CheckNumber"].ToXmlString())
                          .Replace("{{Amount}}", ((decimal)fields["Amount"]).ToString("F2").ToXmlString());
                }
            }

            return(xml);
        }