deltavista_crif_dva_interface 0.0.23 → 0.0.24

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.
@@ -0,0 +1,113 @@
1
+ module DeltavistaCrifDvaInterface
2
+ class CollectionCheck < XmlConverter
3
+ attr_reader :logger
4
+
5
+ DEFAULT_OPTIONS = {
6
+ :encoding => 'UTF-8',
7
+ :request_type => 'CollectionCheck'
8
+ }.freeze
9
+
10
+ PRIVATE_NODE = 'private'
11
+ PRIVATE_KEYS = %w(title lastName firstName maidenName street house poBox zip city country phone birthDate sex)
12
+ PRIVATE_RESPONSE_KEYS = PRIVATE_KEYS.unshift('addressId')
13
+
14
+ COMPANY_NODE = 'company'
15
+ COMPANY_KEYS = %w(legalForm name street house poBox zip city country phone)
16
+ COMPANY_RESPONSE_KEYS = COMPANY_KEYS.unshift('addressId')
17
+
18
+ PAYLOAD_NODE = 'payLoad'
19
+ PAYLOAD_RESPONSE_KEYS = %w(personStatus score decision hasDebt decisionComment)
20
+
21
+ # unique id for each request
22
+ @@reference_id = 1000
23
+
24
+ def initialize(options)
25
+ @config = {}
26
+ if options.is_a? Hash
27
+ @config = DEFAULT_OPTIONS.merge(options)
28
+ @logger = options[:logger] ? options[:logger] : Logger.new(STDOUT)
29
+ else
30
+ @config[:username] = options.username
31
+ @config[:password] = options.password
32
+ @logger = options.logger ? options.logger : Logger.new(STDOUT)
33
+ @config = DEFAULT_OPTIONS.merge(@config)
34
+ end
35
+ end
36
+
37
+ def to_xml(address, collection)
38
+ builder = Nokogiri::XML::Builder.new(:encoding => @config[:encoding]) do |xml|
39
+ xml.getCollectionCheck {
40
+ xml.identity {
41
+ xml.username @config[:username]
42
+ xml.password @config[:password]
43
+ }
44
+ xml.reference @@reference_id
45
+ xml.requestType @config[:request_type]
46
+ # Company Flag (to be set in the address scope)
47
+ if address['is_company']
48
+ keys = COMPANY_KEYS
49
+ node = COMPANY_NODE
50
+ else
51
+ keys = PRIVATE_KEYS
52
+ node = PRIVATE_NODE
53
+ end
54
+ xml.addressDescription {
55
+ xml.__send__(node) {
56
+ keys.each do |key|
57
+ xml.send(key, address[key.downcase]) if address[key.downcase] && !address[key.downcase].empty?
58
+ end
59
+ }
60
+ }
61
+ xml.collectionInfo {
62
+ xml.amountTotal collection[:amount_total]
63
+ xml.amountOpen collection[:amount_open]
64
+ xml.caseStatus collection[:case_status]
65
+ xml.dateBill collection[:date_bill].strftime('%Y-%m-%d')
66
+ xml.dateCase collection[:date_case].strftime('%Y-%m-%d')
67
+ }
68
+ }
69
+ end
70
+ @@reference_id += 1
71
+ result = builder.to_xml
72
+ logger.debug result if logger.debug?
73
+ result
74
+ end
75
+
76
+ def to_hash(xml_body)
77
+ logger.debug xml_body if logger.debug?
78
+ xml_doc = Nokogiri.XML(xml_body, nil, @config[:encoding])
79
+ if valid_response? xml_doc
80
+ # private tag
81
+ address = {}
82
+ if xml_doc.xpath("//dvaCheckResponse/#{PRIVATE_NODE}")
83
+ node = PRIVATE_NODE
84
+ keys = PRIVATE_RESPONSE_KEYS
85
+ elsif xml_doc.xpath("//dvaCheckResponse/#{COMPANY_NODE}")
86
+ node = COMPANY_NODE
87
+ keys = COMPANY_RESPONSE_KEYS
88
+ else
89
+ logger.error 'Neither company nor private Node were found in the DVA Response'
90
+ raise NotFoundError.new response_code(xml_doc), response_text(xml_doc)
91
+ end
92
+ xml_doc.xpath("//dvaCheckResponse/#{node}").each do |private_node|
93
+ keys.each do |key|
94
+ if key == 'country'
95
+ address[key.downcase.to_sym] = convert_country get_value(private_node, key)
96
+ else
97
+ address[key.downcase.to_sym] = get_value(private_node, key)
98
+ end
99
+ end
100
+ end
101
+ xml_doc.xpath("//dvaCheckResponse/#{node}/#{PAYLOAD_NODE}").each do |payload_node|
102
+ PAYLOAD_RESPONSE_KEYS.each do |key|
103
+ address[key.downcase.to_sym] = get_value(payload_node, key)
104
+ end
105
+ end
106
+ address
107
+ else
108
+ raise NotFoundError.new response_code(xml_doc), response_text(xml_doc)
109
+ end
110
+ end
111
+ end
112
+ end
113
+
@@ -1,3 +1,3 @@
1
1
  module DeltavistaCrifDvaInterface
2
- VERSION = '0.0.23'
2
+ VERSION = '0.0.24'
3
3
  end
@@ -7,4 +7,5 @@ require "deltavista_crif_dva_interface/restful_service"
7
7
  require "deltavista_crif_dva_interface/delta_vista_service"
8
8
  require "deltavista_crif_dva_interface/xml_converter"
9
9
  require "deltavista_crif_dva_interface/credit_check_short_v02"
10
+ require "deltavista_crif_dva_interface/collection_check"
10
11
  require "deltavista_crif_dva_interface/address_update"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deltavista_crif_dva_interface
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.23
4
+ version: 0.0.24
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-04-26 00:00:00.000000000 Z
13
+ date: 2013-05-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -86,6 +86,7 @@ extensions: []
86
86
  extra_rdoc_files: []
87
87
  files:
88
88
  - lib/deltavista_crif_dva_interface/address_update.rb
89
+ - lib/deltavista_crif_dva_interface/collection_check.rb
89
90
  - lib/deltavista_crif_dva_interface/config.rb
90
91
  - lib/deltavista_crif_dva_interface/credit_check_short_v02.rb
91
92
  - lib/deltavista_crif_dva_interface/delta_vista_service.rb