Class: RVista::InvoiceLineItem

Inherits:
Object
  • Object
show all
Defined in:
lib/rvista/invoice_line_item.rb

Overview

represents a single line on an invoice. Has attributes like price, qty and description

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#descriptionObject

Returns the value of attribute description.



11
12
13
# File 'lib/rvista/invoice_line_item.rb', line 11

def description
  @description
end

#discount_percentObject

Returns the value of attribute discount_percent.



12
13
14
# File 'lib/rvista/invoice_line_item.rb', line 12

def discount_percent
  @discount_percent
end

#discount_valueObject

Returns the value of attribute discount_value.



14
15
16
# File 'lib/rvista/invoice_line_item.rb', line 14

def discount_value
  @discount_value
end

#eanObject

Returns the value of attribute ean.



11
12
13
# File 'lib/rvista/invoice_line_item.rb', line 11

def ean
  @ean
end

#firm_saleObject

Returns the value of attribute firm_sale.



14
15
16
# File 'lib/rvista/invoice_line_item.rb', line 14

def firm_sale
  @firm_sale
end

#gstObject

Returns the value of attribute gst.



14
15
16
# File 'lib/rvista/invoice_line_item.rb', line 14

def gst
  @gst
end

#gst_inclusiveObject

Returns the value of attribute gst_inclusive.



13
14
15
# File 'lib/rvista/invoice_line_item.rb', line 13

def gst_inclusive
  @gst_inclusive
end

#line_numObject

Returns the value of attribute line_num.



11
12
13
# File 'lib/rvista/invoice_line_item.rb', line 11

def line_num
  @line_num
end

#nett_unit_priceObject

Returns the value of attribute nett_unit_price.



13
14
15
# File 'lib/rvista/invoice_line_item.rb', line 13

def nett_unit_price
  @nett_unit_price
end

#nett_valueObject

Returns the value of attribute nett_value.



14
15
16
# File 'lib/rvista/invoice_line_item.rb', line 14

def nett_value
  @nett_value
end

#po_numberObject

Returns the value of attribute po_number.



11
12
13
# File 'lib/rvista/invoice_line_item.rb', line 11

def po_number
  @po_number
end

#qtyObject

Returns the value of attribute qty.



12
13
14
# File 'lib/rvista/invoice_line_item.rb', line 12

def qty
  @qty
end

#qualifierObject

Returns the value of attribute qualifier.



11
12
13
# File 'lib/rvista/invoice_line_item.rb', line 11

def qualifier
  @qualifier
end

#rrpObject

Returns the value of attribute rrp.



12
13
14
# File 'lib/rvista/invoice_line_item.rb', line 12

def rrp
  @rrp
end

#unit_measureObject

Returns the value of attribute unit_measure.



12
13
14
# File 'lib/rvista/invoice_line_item.rb', line 12

def unit_measure
  @unit_measure
end

#valueObject

Returns the value of attribute value.



13
14
15
# File 'lib/rvista/invoice_line_item.rb', line 13

def value
  @value
end

Class Method Details

.load_from_array(data) ⇒ Object

returns a new RVista::POALineItem object using the data passed in as an array. The array should have exactly 14 items in it. Refer to the Vista standard to see what those 14 items should be.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rvista/invoice_line_item.rb', line 19

def self.load_from_array(data)
  item = self.new
  raise InvalidLineItemError, 'incorrect number of data points' unless data.size == 17

  item.line_num = data[1].to_i
  item.po_number = data[2]
  item.qualifier = data[3]
  item.ean = data[4]
  item.description = data[5]
  item.qty = data[6].to_i
  item.unit_measure = data[7]
  item.rrp = BigDecimal.new(data[8]) unless data[8].nil?
  item.discount_percent = BigDecimal.new(data[9]) unless data[9].nil?
  item.nett_unit_price = BigDecimal.new(data[10]) unless data[10].nil?
  if data[11].eql?("Y")
    item.gst_inclusive = true
  else
    item.gst_inclusive = false
  end
  item.value = BigDecimal.new(data[12]) unless data[12].nil?
  item.discount_value = BigDecimal.new(data[13]) unless data[13].nil?
  item.nett_value = BigDecimal.new(data[14]) unless data[14].nil?
  item.gst = BigDecimal.new(data[15]) unless data[15].nil?
  if data[16].eql?("F")
    item.firm_sale = true
  else
    item.firm_sale = false
  end

  return item
end

Instance Method Details

#to_sObject

output a string that represents this line item that meets the vista spec



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/rvista/invoice_line_item.rb', line 52

def to_s
  msg = ""
  msg << "D," 
  msg << "#{line_num.to_s[0,6]},"
  msg << "#{po_number.to_s[0,14]},"
  msg << "#{qualifier.to_s[0,3]},"
  msg << "#{ean.to_s[0,35]},"
  msg << "#{description.to_s[0,35]},"
  msg << "#{qty.to_s[0,17]},"
  msg << "#{unit_measure.to_s[0,3]},"
  msg << sprintf("%.0f", rrp) unless rrp.nil?
  msg << ","
  msg << sprintf("%.0f", discount_percent) unless discount_percent.nil?
  msg << ","
  msg << sprintf("%.0f", nett_unit_price) unless nett_unit_price.nil?
  msg << ","
  if gst_inclusive
    msg << "Y,"
  else
    msg << ","
  end
  msg << sprintf("%.0f", value) unless value.nil?
  msg << ","
  msg << sprintf("%.0f", discount_value) unless discount_value.nil?
  msg << ","
  msg << sprintf("%.0f", nett_value) unless nett_value.nil?
  msg << ","
  msg << sprintf("%.0f", gst) unless gst.nil?
  msg << ","
  if firm_sale
    msg << "F"
  end

  return msg
end