qbwc_requests 0.0.1 → 0.0.1.01

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c7c569a7bf82b699c1caa556ed79041ada8a3260
4
- data.tar.gz: 2a8447dbd33e0a7272467bd50a5971a7baa0a6fb
3
+ metadata.gz: bdfecbcbe855bfafb745d3e2addba58d4f1ea206
4
+ data.tar.gz: 701dfe42d1de2495ccf0640d24fecf1dc0aa6336
5
5
  SHA512:
6
- metadata.gz: 2eadbeda559a1f7b9c65a91d20a9841e1e9047ddc0494604c3869ef828dd01316870b50be8b3926fb89bd792c114033b759bb45fcd9b99cf028732e37778b66d
7
- data.tar.gz: eadd9a14ea6b7b1e14278eda5f990c67b3ac2537d3fb6d1be53ac034ef58677ff0d49c7348fc25bcfa6e6b198d67a215f5b76d968491a0ff05163538182c27e9
6
+ metadata.gz: 7ba7f54481db9c1026a783ddb1d01a59f8b9dfecc181594684db0f31841db7fadb9aaeddf4f5df2f0d063bd35c12bcf8a0d52c0f7793191075ac2b423340c918
7
+ data.tar.gz: 0ee7e5d7cb28482f87adc07266dff3bb3f18591209a5854ff27d90a48a69e84a8cab45e8fee3a6bf71aff14559d06d4f728747d9f13057609dd8057d2e91aae4
data/Gemfile CHANGED
@@ -2,7 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in qbwc_requests.gemspec
4
4
  gem 'rspec'
5
- gem 'activemodel'
6
- gem 'qbxml'
7
5
  gem 'pry'
8
6
  gemspec
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # QbwcRequests
2
2
 
3
- TODO: Write a gem description
3
+ With qbwc_requests you have an easy way to create Qbxml requests.
4
4
 
5
5
  ## Installation
6
6
 
@@ -18,7 +18,85 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ * Query Requisitions
22
+
23
+ ```ruby
24
+ Qbwc::Request::V07::Account.query
25
+ ```
26
+
27
+ result
28
+
29
+ ```xml
30
+ <?xml version='1.0' encoding='utf-8'?>
31
+ <?qbxml version="7.0"?>
32
+ <QBXML>
33
+ <QBXMLMsgsRq onError="stopOnError">
34
+ <AccountQueryRq>
35
+ <MaxReturned>2000</MaxReturned>
36
+ </AccountQueryRq>
37
+ </QBXMLMsgsRq>
38
+ </QBXML>
39
+ ```
40
+
41
+ That will create an Account query for the qbxml version 7.0
42
+
43
+ * Add Requisitions
44
+
45
+ ```ruby
46
+ Qbwc::Request::V07::Account.new(name: 'Some Account name').add
47
+ ```
48
+
49
+ result
50
+
51
+ ```xml
52
+ <?xml version='1.0' encoding='utf-8'?>
53
+ <?qbxml version="7.0"?>
54
+ <QBXML>
55
+ <QBXMLMsgsRq onError="stopOnError">
56
+ <AccountAddRq requestID="2">
57
+ <AccountAdd>
58
+ <Name>Some Account name</Name>
59
+ </AccountAdd>
60
+ </AccountAddRq>
61
+ </QBXMLMsgsRq>
62
+ </QBXML>
63
+ ```
64
+
65
+ That will create an account xml add requisition.
66
+ Note that <tt>name</tt> is mandatory in order to create an Account.
67
+ If no name is provided, the result will be a hash of errors.
68
+
69
+ You can also call <tt>valid?</tt> on the object to see the required fields.
70
+
71
+ * Delete Requisitions
72
+
73
+ Not Implemented
74
+
75
+ * Update Requisitions
76
+
77
+ Not Implemented
78
+
79
+
80
+ Right now we just have the following models on this gem.
81
+
82
+ - Customers
83
+ - Jobs
84
+ - Account
85
+ - Items
86
+ - Discount Item
87
+ - Non Inventory Item
88
+ - Other Charge Item
89
+ - Payment Item
90
+ - Service Item
91
+ - Subtotal Item
92
+ - Group Item
93
+ - Vendors
94
+ - Purchase Orders
95
+ - Invoices
96
+ - Estimates
97
+
98
+ The Qbxml version for this models is the 7.0.
99
+
22
100
 
23
101
  ## Contributing
24
102
 
@@ -26,4 +104,4 @@ TODO: Write usage instructions here
26
104
  2. Create your feature branch (`git checkout -b my-new-feature`)
27
105
  3. Commit your changes (`git commit -am 'Add some feature'`)
28
106
  4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
107
+ 5. Create new Pull Request
data/lib/qbwc_requests.rb CHANGED
@@ -1,5 +1,9 @@
1
1
  require "qbwc_requests/version"
2
2
  require "active_model"
3
+ require "qbxml"
4
+
5
+ Dir["#{File.dirname(__FILE__)}/qbwc_requests/qbwc/*.rb"].each {|f| require f}
6
+ Dir["#{File.dirname(__FILE__)}/qbwc_requests/qbwc/request/*.rb"].each {|f| require f}
3
7
  Dir["#{File.dirname(__FILE__)}/qbwc_requests/qbwc/**/*.rb"].each {|f| require f}
4
8
 
5
9
  module QbwcRequests
@@ -7,8 +7,9 @@ module Qbwc
7
7
  include ActiveModel::Validations
8
8
  include ActiveModel::Conversion
9
9
 
10
- def self.query_all amount = 2000
11
- XmlActions.query("#{underscore self.name.demodulize}_query_rq", amount)
10
+ def self.query options = nil
11
+ options = { max_returned: 2000 } if options == nil or options.empty?
12
+ XmlActions.query "#{underscore self.name.demodulize}_query_rq", options
12
13
  end
13
14
 
14
15
  def add
@@ -42,6 +43,7 @@ module Qbwc
42
43
 
43
44
  def compact opts={}
44
45
  # I pass two times to avoid {v: '1',k: {}}, gotta find a better algorithm (recursive)
46
+ return {} if opts.nil?
45
47
  proc = Proc.new { |k, v| v.kind_of?(Hash) ? (v.delete_if(&proc); nil) : v.empty? };
46
48
  hash = opts.delete_if(&proc)
47
49
  hash.delete_if { |k, v| v.empty? }
@@ -58,4 +60,4 @@ module Qbwc
58
60
 
59
61
  end
60
62
  end
61
- end
63
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class Account < Base
4
+ class Account < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
 
@@ -10,4 +10,4 @@ module Qbwc
10
10
  end
11
11
  end
12
12
  end
13
- end
13
+ end
@@ -0,0 +1,9 @@
1
+ module Qbwc
2
+ module Request
3
+ module V07
4
+ class Bill < Qbwc::Request::Base
5
+ field :vendor_ref
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class Customer < Base
4
+ class Customer < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
  field :is_active
@@ -26,4 +26,4 @@ module Qbwc
26
26
  end
27
27
  end
28
28
  end
29
- end
29
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class Estimate < Base
4
+ class Estimate < Qbwc::Request::Base
5
5
 
6
6
  field :customer_ref
7
7
  field :estimate_line_add
@@ -11,4 +11,4 @@ module Qbwc
11
11
  end
12
12
  end
13
13
  end
14
- end
14
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class Invoice < Base
4
+ class Invoice < Qbwc::Request::Base
5
5
 
6
6
  field :customer_ref
7
7
  field :invoice_line_add
@@ -12,4 +12,4 @@ module Qbwc
12
12
  end
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -2,10 +2,10 @@ module Qbwc
2
2
  module Request
3
3
  module V07
4
4
  class Item
5
- def self.query_all
6
- XmlActions.query "item_query_rq", 2000
5
+ def self.query
6
+ XmlActions.query "item_query_rq", max_returned: 2000
7
7
  end
8
8
  end
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class ItemDiscount < Base
4
+ class ItemDiscount < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
  field :is_active
@@ -12,4 +12,4 @@ module Qbwc
12
12
  end
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class ItemGroup < Base
4
+ class ItemGroup < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
  field :is_active
@@ -11,4 +11,4 @@ module Qbwc
11
11
  end
12
12
  end
13
13
  end
14
- end
14
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class ItemNonInventory < Base
4
+ class ItemNonInventory < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
  field :is_active
@@ -12,4 +12,4 @@ module Qbwc
12
12
  end
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class ItemOtherCharge < Base
4
+ class ItemOtherCharge < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
  field :is_active
@@ -13,4 +13,4 @@ module Qbwc
13
13
  end
14
14
  end
15
15
  end
16
- end
16
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class ItemPayment < Base
4
+ class ItemPayment < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
  field :is_active
@@ -11,4 +11,4 @@ module Qbwc
11
11
  end
12
12
  end
13
13
  end
14
- end
14
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class ItemService < Base
4
+ class ItemService < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
  field :is_active
@@ -12,4 +12,4 @@ module Qbwc
12
12
  end
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class ItemSubtotal < Base
4
+ class ItemSubtotal < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
  field :is_active
@@ -12,4 +12,4 @@ module Qbwc
12
12
  end
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -1,12 +1,33 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class PurchaseOrder < Base
4
+ class PurchaseOrder < Qbwc::Request::Base
5
5
 
6
6
  field :vendor_ref
7
+ field :class_ref
8
+ field :ship_to_entity_ref
9
+ field :template_ref
10
+ field :txn_date
11
+ field :ref_number
12
+ field :vendor_address
13
+ field :ship_address
14
+ field :terms_ref
15
+ field :due_date
16
+ field :expected_date
17
+ field :ship_method_ref
18
+ field :FOB
19
+ field :memo
20
+ field :vendor_msg
21
+ field :is_to_be_printed
22
+ field :is_to_be_emailed
23
+ field :is_tax_included
24
+ field :sales_tax_code_ref
25
+ field :other1
26
+ field :other2
7
27
  field :purchase_order_line_add
28
+ field :purchase_order_line_group_add
8
29
 
9
30
  end
10
31
  end
11
32
  end
12
- end
33
+ end
@@ -1,7 +1,7 @@
1
1
  module Qbwc
2
2
  module Request
3
3
  module V07
4
- class Vendor < Base
4
+ class Vendor < Qbwc::Request::Base
5
5
 
6
6
  field :name
7
7
  field :is_active
@@ -22,4 +22,4 @@ module Qbwc
22
22
  end
23
23
  end
24
24
  end
25
- end
25
+ end
@@ -1,18 +1,17 @@
1
1
  module Qbwc
2
2
  module XmlActions
3
3
 
4
- def self.query req, max_returned
4
+ def self.query req, options
5
5
  hash = {"qbxml"=>
6
6
  {"xml_attributes"=>{},
7
7
  "qbxml_msgs_rq"=>
8
8
  {"xml_attributes"=>{"onError"=>"stopOnError"},
9
9
  "#{req}"=>
10
- {"xml_attributes"=>{},
11
- "max_returned"=> max_returned}
10
+ {"xml_attributes"=>{}}.merge(options)
12
11
  }
13
12
  }
14
13
  }
15
- to_xml(hash)
14
+ self.to_xml(hash)
16
15
  end
17
16
 
18
17
  def self.header
@@ -28,4 +27,4 @@ module Qbwc
28
27
  end
29
28
 
30
29
  end
31
- end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module QbwcRequests
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.1.01"
3
3
  end
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_runtime_dependency "qbxml", "~> 0.1.6"
22
+ spec.add_runtime_dependency "activemodel"
21
23
  spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
24
+ spec.add_development_dependency "rake", "~> 10.3"
23
25
  end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ class GenericBase < Qbwc::Request::Base
4
+
5
+ end
6
+
7
+ describe GenericBase do
8
+
9
+ describe '#initialize' do
10
+
11
+ it 'should deal with nil values' do
12
+ expect {
13
+ GenericBase.new(nil)
14
+ }.to_not raise_error
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Qbwc::Request::V07::Bill do
4
+
5
+ it_behaves_like 'queryable'
6
+
7
+ describe "add" do
8
+
9
+ let(:bill){ Qbwc::Request::V07::Bill.new() }
10
+
11
+ it "should create an add bill xml" do
12
+ xml = <<-XML
13
+ <?xml version='1.0' encoding='utf-8'?>
14
+ <?qbxml version="7.0"?>
15
+ <QBXML>
16
+ <QBXMLMsgsRq onError="stopOnError">
17
+ <BillAddRq requestID="2">
18
+ <BillAdd>
19
+ </BillAdd>
20
+ </BillAddRq>
21
+ </QBXMLMsgsRq>
22
+ </QBXML>
23
+ XML
24
+ expect( bill.add ).to be_xml_equal_to xml
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -16,7 +16,7 @@ RSpec.shared_examples 'queryable' do
16
16
  end
17
17
 
18
18
  it 'should create a query xml' do
19
- expect(described_class.query_all).to be_xml_equal_to xml
19
+ expect(described_class.query).to be_xml_equal_to xml
20
20
  end
21
21
 
22
22
  end
metadata CHANGED
@@ -1,43 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qbwc_requests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.1.01
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Mondaini Calvão
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-28 00:00:00.000000000 Z
11
+ date: 2015-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: qbxml
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.6
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: activemodel
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
- - - ~>
45
+ - - "~>"
18
46
  - !ruby/object:Gem::Version
19
47
  version: '1.3'
20
48
  type: :development
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
- - - ~>
52
+ - - "~>"
25
53
  - !ruby/object:Gem::Version
26
54
  version: '1.3'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: rake
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
- - - '>='
59
+ - - "~>"
32
60
  - !ruby/object:Gem::Version
33
- version: '0'
61
+ version: '10.3'
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
- - - '>='
66
+ - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: '0'
68
+ version: '10.3'
41
69
  description: A qbxml request generator
42
70
  email:
43
71
  - apotema@gmail.com
@@ -45,8 +73,8 @@ executables: []
45
73
  extensions: []
46
74
  extra_rdoc_files: []
47
75
  files:
48
- - .gitignore
49
- - .rspec
76
+ - ".gitignore"
77
+ - ".rspec"
50
78
  - Gemfile
51
79
  - LICENSE
52
80
  - LICENSE.txt
@@ -57,6 +85,7 @@ files:
57
85
  - lib/qbwc_requests/qbwc/qbwc.rb
58
86
  - lib/qbwc_requests/qbwc/request/base.rb
59
87
  - lib/qbwc_requests/qbwc/request/v07/account.rb
88
+ - lib/qbwc_requests/qbwc/request/v07/bill.rb
60
89
  - lib/qbwc_requests/qbwc/request/v07/customer.rb
61
90
  - lib/qbwc_requests/qbwc/request/v07/estimate.rb
62
91
  - lib/qbwc_requests/qbwc/request/v07/invoice.rb
@@ -123,7 +152,9 @@ files:
123
152
  - quickbook/xml/qbxml/examples/xmlfiles/legacy/VendorAddRq.xml
124
153
  - quickbook/xml/qbxmlops130.xml
125
154
  - quickbook/xml/qbxmlops70.xml
155
+ - spec/qbwc/request/base_spec.rb
126
156
  - spec/qbwc/request/v07/account_spec.rb
157
+ - spec/qbwc/request/v07/bill_spec.rb
127
158
  - spec/qbwc/request/v07/customer_spec.rb
128
159
  - spec/qbwc/request/v07/estimate_spec.rb
129
160
  - spec/qbwc/request/v07/invoice_spec.rb
@@ -151,22 +182,24 @@ require_paths:
151
182
  - lib
152
183
  required_ruby_version: !ruby/object:Gem::Requirement
153
184
  requirements:
154
- - - '>='
185
+ - - ">="
155
186
  - !ruby/object:Gem::Version
156
187
  version: '0'
157
188
  required_rubygems_version: !ruby/object:Gem::Requirement
158
189
  requirements:
159
- - - '>='
190
+ - - ">="
160
191
  - !ruby/object:Gem::Version
161
192
  version: '0'
162
193
  requirements: []
163
194
  rubyforge_project:
164
- rubygems_version: 2.0.6
195
+ rubygems_version: 2.4.2
165
196
  signing_key:
166
197
  specification_version: 4
167
198
  summary: This gem helps you generate Qbxml requests
168
199
  test_files:
200
+ - spec/qbwc/request/base_spec.rb
169
201
  - spec/qbwc/request/v07/account_spec.rb
202
+ - spec/qbwc/request/v07/bill_spec.rb
170
203
  - spec/qbwc/request/v07/customer_spec.rb
171
204
  - spec/qbwc/request/v07/estimate_spec.rb
172
205
  - spec/qbwc/request/v07/invoice_spec.rb