rvista 0.6.4 → 0.6.5
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.
- data/CHANGELOG +5 -2
- data/Rakefile +2 -1
- data/lib/rvista/poa_line_item.rb +46 -11
- data/lib/rvista.rb +1 -0
- data/test/unit/poa_line_item_test.rb +12 -0
- metadata +12 -2
data/CHANGELOG
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
v0.6.5 (16th January 2010)
|
2
|
+
- RVista::POA: handle invalid looking numbers sanely
|
3
|
+
|
1
4
|
v0.6.4 (18th November 2009)
|
2
5
|
- RVista::POA, RVista::Invoice
|
3
|
-
- Use correct vista date format (dd-mm-yy)
|
4
|
-
- return dates as ruby date objects
|
6
|
+
- Use correct vista date format (dd-mm-yy)
|
7
|
+
- return dates as ruby date objects
|
5
8
|
|
6
9
|
v0.6.3 (13th November 2009)
|
7
10
|
- RVista::PO
|
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ require 'rake/testtask'
|
|
5
5
|
require "rake/gempackagetask"
|
6
6
|
require "rubygems"
|
7
7
|
|
8
|
-
PKG_VERSION = "0.6.
|
8
|
+
PKG_VERSION = "0.6.5"
|
9
9
|
PKG_NAME = "rvista"
|
10
10
|
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
11
11
|
|
@@ -53,6 +53,7 @@ spec = Gem::Specification.new do |spec|
|
|
53
53
|
'--main' << 'README' << '-q'
|
54
54
|
spec.author = "James Healy"
|
55
55
|
spec.email = "jimmy@deefa.com"
|
56
|
+
spec.add_dependency('andand')
|
56
57
|
spec.add_dependency('chronic')
|
57
58
|
spec.description = <<END_DESC
|
58
59
|
rvista is a small library for reading Vista HDS order files.
|
data/lib/rvista/poa_line_item.rb
CHANGED
@@ -34,7 +34,7 @@ module RVista
|
|
34
34
|
item.demand_qty = data[15].to_i
|
35
35
|
item.rrp = BigDecimal.new(data[16]) unless data[16].nil?
|
36
36
|
item.discount_percent = BigDecimal.new(data[17]) unless data[17].nil?
|
37
|
-
item.availability_date = data[18] # TODO: convert this to a Date?
|
37
|
+
item.availability_date = data[18] # TODO: convert this to a Date?
|
38
38
|
item.text = data[19]
|
39
39
|
|
40
40
|
return item
|
@@ -75,21 +75,22 @@ module RVista
|
|
75
75
|
"UNKNOWN"
|
76
76
|
end
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
# output a string that represents this line item that meets the vista spec
|
80
80
|
def to_s
|
81
|
+
nil_numeric_values
|
82
|
+
normalise_numeric_values
|
83
|
+
|
81
84
|
msg = ""
|
82
|
-
msg << "D,"
|
85
|
+
msg << "D,"
|
83
86
|
msg << "#{line_num},"
|
84
87
|
msg << "#{ean},"
|
85
88
|
msg << ","
|
86
89
|
msg << "#{description},"
|
87
|
-
msg <<
|
88
|
-
msg << ","
|
90
|
+
msg << "#{formatted_nett_unit_price},"
|
89
91
|
msg << "1,"
|
90
92
|
msg << "#{qty_inners},"
|
91
|
-
msg <<
|
92
|
-
msg << ","
|
93
|
+
msg << "#{formatted_tax_rate},"
|
93
94
|
msg << ","
|
94
95
|
msg << "#{buying_location},"
|
95
96
|
msg << "#{buying_location_name},"
|
@@ -97,13 +98,47 @@ module RVista
|
|
97
98
|
msg << "#{delivered_qty},"
|
98
99
|
msg << "#{status_code},"
|
99
100
|
msg << "#{demand_qty},"
|
100
|
-
msg <<
|
101
|
-
msg << ","
|
102
|
-
msg << sprintf("%.2f", discount_percent) unless discount_percent.nil?
|
103
|
-
msg << ","
|
101
|
+
msg << "#{formatted_rrp},"
|
102
|
+
msg << "#{formatted_discount_percent},"
|
104
103
|
msg << "#{availability_date},"
|
105
104
|
msg << "#{text}"
|
106
105
|
return msg
|
107
106
|
end
|
107
|
+
|
108
|
+
private
|
109
|
+
|
110
|
+
# ensure all decimal attributes are BigDecimals
|
111
|
+
#
|
112
|
+
def nil_numeric_values
|
113
|
+
self.nett_unit_price = nil if self.nett_unit_price.to_s.size == 0
|
114
|
+
self.tax_rate = nil if self.tax_rate.to_s.size == 0
|
115
|
+
self.rrp = nil if self.rrp.to_s.size == 0
|
116
|
+
self.discount_percent = nil if self.discount_percent.to_s.size == 0
|
117
|
+
end
|
118
|
+
|
119
|
+
# set empty numerics to nil
|
120
|
+
#
|
121
|
+
def normalise_numeric_values
|
122
|
+
self.nett_unit_price = BigDecimal.new(self.nett_unit_price.to_s) unless self.nett_unit_price.nil?
|
123
|
+
self.tax_rate = BigDecimal.new(self.tax_rate.to_s) unless self.tax_rate.nil?
|
124
|
+
self.rrp = BigDecimal.new(self.rrp.to_s) unless self.rrp.nil?
|
125
|
+
self.discount_percent = BigDecimal.new(self.discount_percent.to_s) unless self.discount_percent.nil?
|
126
|
+
end
|
127
|
+
|
128
|
+
def formatted_nett_unit_price
|
129
|
+
self.nett_unit_price.nil? ? "" : "%.2f" % self.nett_unit_price
|
130
|
+
end
|
131
|
+
|
132
|
+
def formatted_tax_rate
|
133
|
+
self.tax_rate.nil? ? "" : "%.2f" % self.tax_rate
|
134
|
+
end
|
135
|
+
|
136
|
+
def formatted_rrp
|
137
|
+
self.rrp.nil? ? "" : "%.2f" % self.rrp
|
138
|
+
end
|
139
|
+
|
140
|
+
def formatted_discount_percent
|
141
|
+
self.discount_percent.nil? ? "" : "%.2f" % self.discount_percent
|
142
|
+
end
|
108
143
|
end
|
109
144
|
end
|
data/lib/rvista.rb
CHANGED
@@ -74,6 +74,18 @@ class POALineItemTest < Test::Unit::TestCase
|
|
74
74
|
assert_equal 20, arr.size
|
75
75
|
end
|
76
76
|
|
77
|
+
def test_to_s_with_invalid_decimals
|
78
|
+
item = RVista::POALineItem.load_from_array(@row)
|
79
|
+
item.nett_unit_price = ""
|
80
|
+
item.rrp = ""
|
81
|
+
item.tax_rate = ""
|
82
|
+
item.discount_percent = ""
|
83
|
+
|
84
|
+
str = item.to_s
|
85
|
+
arr = FasterCSV.parse(str).first
|
86
|
+
assert_equal 20, arr.size
|
87
|
+
end
|
88
|
+
|
77
89
|
end
|
78
90
|
|
79
91
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rvista
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Healy
|
@@ -9,9 +9,19 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-16 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: andand
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
15
25
|
- !ruby/object:Gem::Dependency
|
16
26
|
name: chronic
|
17
27
|
type: :runtime
|