iif 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +2 -0
- data/.gitignore +22 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/CHANGELOG.md +48 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +189 -0
- data/Rakefile +6 -0
- data/bin/rake +16 -0
- data/config.ru +9 -0
- data/lib/riif.rb +6 -0
- data/lib/riif/dsl/accnt.rb +15 -0
- data/lib/riif/dsl/base.rb +51 -0
- data/lib/riif/dsl/bud.rb +14 -0
- data/lib/riif/dsl/ctype.rb +9 -0
- data/lib/riif/dsl/cust.rb +51 -0
- data/lib/riif/dsl/emp.rb +31 -0
- data/lib/riif/dsl/invitem.rb +32 -0
- data/lib/riif/dsl/invmemo.rb +9 -0
- data/lib/riif/dsl/klass.rb +9 -0
- data/lib/riif/dsl/othername.rb +25 -0
- data/lib/riif/dsl/paymeth.rb +9 -0
- data/lib/riif/dsl/shipmeth.rb +10 -0
- data/lib/riif/dsl/spl.rb +29 -0
- data/lib/riif/dsl/terms.rb +13 -0
- data/lib/riif/dsl/timeact.rb +17 -0
- data/lib/riif/dsl/timerhdr.rb +14 -0
- data/lib/riif/dsl/trns.rb +56 -0
- data/lib/riif/dsl/vend.rb +39 -0
- data/lib/riif/dsl/vtype.rb +9 -0
- data/lib/riif/iif.rb +60 -0
- data/lib/riif/rails/renderer.rb +15 -0
- data/lib/riif/rails/template_handler.rb +20 -0
- data/lib/riif/railtie.rb +17 -0
- data/lib/riif/version.rb +3 -0
- data/riif.gemspec +29 -0
- data/spec/controllers/invoices_controller_spec.rb +26 -0
- data/spec/fixtures/accnt.iif +2 -0
- data/spec/fixtures/bud.iif +2 -0
- data/spec/fixtures/ctype.iif +2 -0
- data/spec/fixtures/cust.iif +2 -0
- data/spec/fixtures/emp.iif +2 -0
- data/spec/fixtures/invitem.iif +2 -0
- data/spec/fixtures/invmemo.iif +2 -0
- data/spec/fixtures/klass.iif +2 -0
- data/spec/fixtures/mixed.iif +13 -0
- data/spec/fixtures/othername.iif +2 -0
- data/spec/fixtures/paymeth.iif +2 -0
- data/spec/fixtures/rails/invoices.iif +6 -0
- data/spec/fixtures/shipmeth.iif +2 -0
- data/spec/fixtures/terms.iif +2 -0
- data/spec/fixtures/timeact.iif +4 -0
- data/spec/fixtures/trns.iif +7 -0
- data/spec/fixtures/vend.iif +2 -0
- data/spec/fixtures/vtype.iif +2 -0
- data/spec/internal/app/controllers/invoices_controller.rb +10 -0
- data/spec/internal/app/views/invoices/index.iif.riif +27 -0
- data/spec/internal/config/database.yml +3 -0
- data/spec/internal/config/routes.rb +3 -0
- data/spec/internal/db/schema.rb +3 -0
- data/spec/internal/log/.gitignore +1 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/riif/dsl/accnt_spec.rb +22 -0
- data/spec/riif/dsl/bud_spec.rb +28 -0
- data/spec/riif/dsl/ctype_spec.rb +19 -0
- data/spec/riif/dsl/cust_spec.rb +20 -0
- data/spec/riif/dsl/emp_spec.rb +24 -0
- data/spec/riif/dsl/invitem_spec.rb +21 -0
- data/spec/riif/dsl/invmemo_spec.rb +19 -0
- data/spec/riif/dsl/klass_spec.rb +20 -0
- data/spec/riif/dsl/othername_spec.rb +23 -0
- data/spec/riif/dsl/paymeth_spec.rb +19 -0
- data/spec/riif/dsl/shipmeth_spec.rb +19 -0
- data/spec/riif/dsl/terms_spec.rb +23 -0
- data/spec/riif/dsl/timeact_spec.rb +35 -0
- data/spec/riif/dsl/trns_spec.rb +54 -0
- data/spec/riif/dsl/vend_spec.rb +21 -0
- data/spec/riif/dsl/vtype_spec.rb +19 -0
- data/spec/riif/iif_spec.rb +61 -0
- data/spec/spec_helper.rb +21 -0
- metadata +295 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
module Riif
|
2
|
+
module Rails
|
3
|
+
class TemplateHandler
|
4
|
+
cattr_accessor :default_format
|
5
|
+
self.default_format = Mime[:iif]
|
6
|
+
|
7
|
+
def self.call(template)
|
8
|
+
<<-RUBY
|
9
|
+
iif = ::Riif::IIF.new
|
10
|
+
|
11
|
+
#{template.source}
|
12
|
+
|
13
|
+
iif.output
|
14
|
+
RUBY
|
15
|
+
end
|
16
|
+
|
17
|
+
ActionView::Template.register_template_handler :riif, self
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/riif/railtie.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module Riif
|
4
|
+
class Railtie < ::Rails::Railtie
|
5
|
+
initializer 'riif' do
|
6
|
+
::ActiveSupport.on_load(:action_view) do
|
7
|
+
unless ::Mime::Type.lookup_by_extension(:iif)
|
8
|
+
::Mime::Type.register "application/qbooks", :iif,
|
9
|
+
%w(application/qbookspro text/iif)
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'riif/rails/template_handler'
|
13
|
+
require 'riif/rails/renderer'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/riif/version.rb
ADDED
data/riif.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'riif/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "iif"
|
8
|
+
gem.version = Riif::VERSION
|
9
|
+
gem.authors = ["Jun Lin"]
|
10
|
+
gem.email = ["linjunpop@gmail.com"]
|
11
|
+
gem.description = "Clone of riif gem with latest updates"
|
12
|
+
gem.summary = "As soon as riif > 0.6.0 is released, stop using this"
|
13
|
+
gem.homepage = "https://github.com/linjunpop/riif"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_development_dependency 'pry'
|
21
|
+
gem.add_development_dependency 'rails', '~> 5.0'
|
22
|
+
gem.add_development_dependency 'rspec', '~> 3.5'
|
23
|
+
gem.add_development_dependency 'rspec-rails', '~> 3.5'
|
24
|
+
gem.add_development_dependency 'rspec-its', '~> 1.2'
|
25
|
+
gem.add_development_dependency 'rails-controller-testing', '~> 1.0'
|
26
|
+
gem.add_development_dependency 'combustion', '~> 0.3.1'
|
27
|
+
gem.add_development_dependency 'fuubar'
|
28
|
+
gem.add_development_dependency 'coveralls'
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe InvoicesController do
|
4
|
+
render_views
|
5
|
+
|
6
|
+
let(:expected) { File.read('spec/fixtures/rails/invoices.iif') }
|
7
|
+
|
8
|
+
describe '#index' do
|
9
|
+
|
10
|
+
before do
|
11
|
+
get :index, format: 'iif'
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'respond with rendered iif' do
|
15
|
+
response.body.should eq expected
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'respond with QuickBooks content type' do
|
19
|
+
response.header['Content-Type'].should eq 'application/qbooks'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'respond with filename: batman.iif' do
|
23
|
+
response.header['Content-Disposition'].should =~ /filename="batman\.iif"/
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,2 @@
|
|
1
|
+
!CUST NAME BADDR1 BADDR2 BADDR3 BADDR4 BADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 PHONE1 PHONE2 FAXNUM CONT1 CONT2 CTYPE TERMS TAXABLE LIMIT RESALENUM REP TAXITEM NOTEPAD SALUTATION COMPANYNAME FIRSTNAME MIDINIT LASTNAME CUSTFLD1 CUSTFLD2 CUSTFLD3 CUSTFLD4 CUSTFLD5 CUSTFLD6 CUSTFLD7 JOBDESC JOBTYPE JOBSTATUS JOBSTART JOBPROJEND JOBEND NOTE
|
2
|
+
CUST Jun Lin 12312323242
|
@@ -0,0 +1,13 @@
|
|
1
|
+
!CUST NAME BADDR1 BADDR2 BADDR3 BADDR4 BADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 PHONE1 PHONE2 FAXNUM CONT1 CONT2 CTYPE TERMS TAXABLE LIMIT RESALENUM REP TAXITEM NOTEPAD SALUTATION COMPANYNAME FIRSTNAME MIDINIT LASTNAME CUSTFLD1 CUSTFLD2 CUSTFLD3 CUSTFLD4 CUSTFLD5 CUSTFLD6 CUSTFLD7 JOBDESC JOBTYPE JOBSTATUS JOBSTART JOBPROJEND JOBEND NOTE
|
2
|
+
CUST Batman Amoy
|
3
|
+
CUST Joker Amoy
|
4
|
+
!BUD ACCNT PERIOD AMOUNT STARTDATE CLASS CUSTOMER
|
5
|
+
BUD Accounts Receivable MONTH foo 3/14/12
|
6
|
+
BUD Accounts Payable MONTH 123 3/15/12
|
7
|
+
!TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR TOPRINT ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 DUEDATE TERMS PAID PAYMETH SHIPDATE REP PONUM INVTITLE INVMEMO
|
8
|
+
!SPL SPLID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR QNTY PRICE INVITEM PAYMETH TAXABLE REIMBEXP EXTRA
|
9
|
+
!ENDTRNS
|
10
|
+
TRNS foo
|
11
|
+
SPL joker
|
12
|
+
SPL foobar
|
13
|
+
ENDTRNS
|
@@ -0,0 +1,6 @@
|
|
1
|
+
!TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR TOPRINT ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 DUEDATE TERMS PAID PAYMETH SHIPDATE REP PONUM INVTITLE INVMEMO
|
2
|
+
!SPL SPLID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR QNTY PRICE INVITEM PAYMETH TAXABLE REIMBEXP EXTRA
|
3
|
+
!ENDTRNS
|
4
|
+
TRNS 12345 BILL 3/14/1984 Accounts Payable Bender -300 12345 N
|
5
|
+
SPL 1 BILL 3/14/1984 Payable CMA 300 foo 3 150 Base Rate
|
6
|
+
ENDTRNS
|
@@ -0,0 +1,7 @@
|
|
1
|
+
!TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR TOPRINT ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 DUEDATE TERMS PAID PAYMETH SHIPDATE REP PONUM INVTITLE INVMEMO
|
2
|
+
!SPL SPLID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR QNTY PRICE INVITEM PAYMETH TAXABLE REIMBEXP EXTRA
|
3
|
+
!ENDTRNS
|
4
|
+
TRNS 123 INVOICE 8/31/1988 Accounts Receivable Customer 20 1 N N Baker Customer Watson Recipient BOB
|
5
|
+
SPL 777 INVOICE 8/31/1988 Income Account -20 N -2 10 Sales Item N
|
6
|
+
SPL 888
|
7
|
+
ENDTRNS
|
@@ -0,0 +1,27 @@
|
|
1
|
+
iif.trns do
|
2
|
+
row do
|
3
|
+
trnsid 12345
|
4
|
+
trnstype 'BILL'
|
5
|
+
date '3/14/1984'
|
6
|
+
accnt 'Accounts Payable'
|
7
|
+
name awesome
|
8
|
+
amount -300
|
9
|
+
docnum 12345
|
10
|
+
clear 'N'
|
11
|
+
end
|
12
|
+
|
13
|
+
spl do
|
14
|
+
row do
|
15
|
+
splid 001
|
16
|
+
trnstype 'BILL'
|
17
|
+
date '3/14/1984'
|
18
|
+
accnt 'Payable'
|
19
|
+
invitem 'Base Rate'
|
20
|
+
name 'CMA'
|
21
|
+
amount 300
|
22
|
+
memo "foo"
|
23
|
+
qnty 3
|
24
|
+
price 150
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
*.log
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Riif::DSL::Accnt do
|
4
|
+
|
5
|
+
let(:expected) { File.read('spec/fixtures/accnt.iif') }
|
6
|
+
|
7
|
+
let(:accnt) {
|
8
|
+
Riif::IIF.new do
|
9
|
+
accnt do
|
10
|
+
row do
|
11
|
+
name 'Jun Lin'
|
12
|
+
accnttype 'AR'
|
13
|
+
accnum 47
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
}
|
18
|
+
|
19
|
+
subject { accnt }
|
20
|
+
|
21
|
+
its(:output) { should eq expected }
|
22
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
class Invoice
|
3
|
+
attr_accessor :name
|
4
|
+
def initialize(n)
|
5
|
+
@name = n
|
6
|
+
end
|
7
|
+
end
|
8
|
+
describe Riif::DSL::Bud do
|
9
|
+
|
10
|
+
let(:expected) { File.read('spec/fixtures/bud.iif') }
|
11
|
+
|
12
|
+
let(:bud) {
|
13
|
+
Riif::IIF.new do
|
14
|
+
bud do
|
15
|
+
row do
|
16
|
+
accnt 'Accounts Receivable'
|
17
|
+
period 'MONTH'
|
18
|
+
amount 'foo'
|
19
|
+
startdate '3/14/12'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
}
|
24
|
+
|
25
|
+
subject { bud }
|
26
|
+
|
27
|
+
its(:output) { should eq expected }
|
28
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Riif::DSL::Ctype do
|
4
|
+
let(:expected) { File.read('spec/fixtures/ctype.iif') }
|
5
|
+
|
6
|
+
let(:ctype) {
|
7
|
+
Riif::IIF.new do
|
8
|
+
ctype do
|
9
|
+
row do
|
10
|
+
name 'Bar'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
}
|
15
|
+
|
16
|
+
subject { ctype }
|
17
|
+
|
18
|
+
its(:output) { should eq expected }
|
19
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Riif::DSL::Cust do
|
4
|
+
let(:expected) { File.read('spec/fixtures/cust.iif') }
|
5
|
+
|
6
|
+
let(:cust) {
|
7
|
+
Riif::IIF.new do
|
8
|
+
cust do
|
9
|
+
row do
|
10
|
+
name 'Jun Lin'
|
11
|
+
phone1 '12312323242'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
}
|
16
|
+
|
17
|
+
subject { cust }
|
18
|
+
|
19
|
+
its(:output) { should eq expected }
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Riif::DSL::Emp do
|
4
|
+
|
5
|
+
let(:expected) { File.read('spec/fixtures/emp.iif') }
|
6
|
+
|
7
|
+
let(:emp) {
|
8
|
+
Riif::IIF.new do
|
9
|
+
emp do
|
10
|
+
row do
|
11
|
+
name 'Alfred'
|
12
|
+
init 'Master'
|
13
|
+
addr1 'Backer'
|
14
|
+
addr2 '37'
|
15
|
+
salutation 'Doctor'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
}
|
20
|
+
|
21
|
+
subject { emp }
|
22
|
+
|
23
|
+
its(:output) { should eq expected }
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Riif::DSL::Invitem do
|
4
|
+
let(:expected) { File.read('spec/fixtures/invitem.iif') }
|
5
|
+
|
6
|
+
let(:invitem) {
|
7
|
+
Riif::IIF.new do
|
8
|
+
invitem do
|
9
|
+
row do
|
10
|
+
name 'invitem 1'
|
11
|
+
invitemtype 'INVENTORY'
|
12
|
+
dep_type 1
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
}
|
17
|
+
|
18
|
+
subject { invitem }
|
19
|
+
|
20
|
+
its(:output) { should eq expected }
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Riif::DSL::Invmemo do
|
4
|
+
let(:expected) { File.read('spec/fixtures/invmemo.iif') }
|
5
|
+
|
6
|
+
let(:invmemo) {
|
7
|
+
Riif::IIF.new do
|
8
|
+
invmemo do
|
9
|
+
row do
|
10
|
+
name 'invmemo 1'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
}
|
15
|
+
|
16
|
+
subject { invmemo }
|
17
|
+
|
18
|
+
its(:output) { should eq expected }
|
19
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Riif::DSL::Klass do
|
4
|
+
|
5
|
+
let(:expected) { File.read('spec/fixtures/klass.iif') }
|
6
|
+
|
7
|
+
let(:klass) {
|
8
|
+
Riif::IIF.new do
|
9
|
+
klass do
|
10
|
+
row do
|
11
|
+
name 'Foo'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
}
|
16
|
+
|
17
|
+
subject { klass }
|
18
|
+
|
19
|
+
its(:output) { should eq expected }
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Riif::DSL::Othername do
|
4
|
+
|
5
|
+
let(:expected) { File.read('spec/fixtures/othername.iif') }
|
6
|
+
|
7
|
+
let(:othername) {
|
8
|
+
Riif::IIF.new do
|
9
|
+
othername do
|
10
|
+
row do
|
11
|
+
name 'Alfred'
|
12
|
+
baddr1 'Backer'
|
13
|
+
baddr2 '37'
|
14
|
+
faxnum '123'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
}
|
19
|
+
|
20
|
+
subject { othername }
|
21
|
+
|
22
|
+
its(:output) { should eq expected }
|
23
|
+
end
|