public
Description: Simplying working with models that rely on parsing QuickBooks SDK qbXML messages
Homepage:
Clone URL: git://github.com/zackchandler/acts_as_quickbooks_model.git
name age message
file .gitignore Sat May 17 12:36:03 -0700 2008 tests, auto-build has_many associations [zackchandler]
file README.markdown Sat May 17 12:36:03 -0700 2008 tests, auto-build has_many associations [zackchandler]
file Rakefile Fri May 02 00:03:32 -0700 2008 add auto-generated note, qb:all rake task [zackchandler]
directory definitions/ Fri Feb 13 12:04:18 -0800 2009 Add SalesTaxCode definitions [zackchandler]
file init.rb Thu May 01 15:35:26 -0700 2008 first commit [zackchandler]
directory lib/ Mon Jan 05 14:04:32 -0800 2009 don't inadvertently set has_many model if it's ... [zackchandler]
directory migrations/ Fri Feb 13 12:04:18 -0800 2009 Add SalesTaxCode definitions [zackchandler]
directory model_maps/ Fri Feb 13 12:04:18 -0800 2009 Add SalesTaxCode definitions [zackchandler]
directory test/ Mon Jan 05 14:04:32 -0800 2009 don't inadvertently set has_many model if it's ... [zackchandler]
README.markdown

Introduction

This plugin simplifies the parsing of qbXML messages into ActiveRecord model attributes.

Usage

class Customer < ActiveRecord::Base
  acts_as_quickbooks_model
end

xml = <<-XML
<CustomerRet>
  <ListID>150000-933272658</ListID>
  <Name>Abercrombie, Kristy</Name>
  <BillAddress>
    <Addr1>Kristy Abercrombie</Addr1>
    <Addr2>5647 Cypress Hill Rd</Addr2>
    <City>Bayshore</City>
    <State>CA</State>
    <PostalCode>94326</PostalCode>
  </BillAddress>
</CustomerRet>
XML

customer = Customer.new(:qbxml => xml)
customer.list_id # => "150000-933272658"
customer.name # => "Abercrombie, Kristy"
customer.bill_address_city # => "Bayshore"
...

Auto-builds has_many associations

class Invoice < ActiveRecord::Base
  acts_as_quickbooks_model
  has_many :invoice_lines
  has_many :invoice_line_groups
end
class InvoiceLine < ActiveRecord::Base
  acts_as_quickbooks_model
  belongs_to :invoice
end
class InvoiceLineGroup < ActiveRecord::Base
  acts_as_quickbooks_model
  belongs_to :invoice
end

xml = <<-XML
<InvoiceRet>
  <TxnID>123</TxnID>
  <InvoiceLineRet>
    <TxnLineID>456</TxnLineID>
    <ItemRef>
      <ListID>789</ListID>
    </ItemRef>
  </InvoiceLineRet>
  <InvoiceLineRet>
    <TxnLineID>012</TxnLineID>
    <ItemRef>
      <ListID>567</ListID>
    </ItemRef>
  </InvoiceLineRet>
  <InvoiceLineGroupRet>
    <TxnLineID>321</TxnLineID>
    <ItemGroupRef>
      <ListID>987</ListID>
    </ItemGroupRef>
  </InvoiceLineGroupRet>
</InvoiceRet>
XML

invoice = Invoice.create(:qbxml => xml)
invoice.txn_id # => "123"
invoice.invoice_lines.count # => 2
invoice.invoice_line_groups.count # => 1
invoice.invoice_lines.first.txn_line_id # => "456"
invoice.invoice_line_groups.first.txn_line_id # => "321"
...

References

QuickBooks SDK Reference