ci_power 0.0.2
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/lib/ci_power/address.rb +95 -0
- data/lib/ci_power/communication.rb +19 -0
- data/lib/ci_power/debt_claim.rb +72 -0
- data/lib/ci_power/dossier_data.rb +89 -0
- data/lib/ci_power/export.rb +61 -0
- data/lib/ci_power/record.rb +27 -0
- data/lib/ci_power/version.rb +3 -0
- data/lib/ci_power.rb +9 -0
- data/lib/generators/ci_power/ci_power_generator.rb +12 -0
- data/lib/generators/ci_power/templates/cip_export.rb +13 -0
- data/lib/tasks/ci_power.rake +24 -0
- metadata +77 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
module CiPower
|
|
2
|
+
class Address < Record
|
|
3
|
+
attr_accessor :new_order_id,
|
|
4
|
+
:address_type_company,
|
|
5
|
+
:title,
|
|
6
|
+
:salutation,
|
|
7
|
+
:lastname,
|
|
8
|
+
:firstname,
|
|
9
|
+
:name_affix,
|
|
10
|
+
:address,
|
|
11
|
+
:po_box,
|
|
12
|
+
:postal_code,
|
|
13
|
+
:city,
|
|
14
|
+
:country,
|
|
15
|
+
:contact_salutation,
|
|
16
|
+
:contact_lastname,
|
|
17
|
+
:contact_firstname,
|
|
18
|
+
:language,
|
|
19
|
+
:method_of_payment,
|
|
20
|
+
:account_no,
|
|
21
|
+
:commercial_register_no,
|
|
22
|
+
:vat_no,
|
|
23
|
+
:industry,
|
|
24
|
+
:region,
|
|
25
|
+
:reserve_field,
|
|
26
|
+
:customer_specific_field_1,
|
|
27
|
+
:customer_specific_field_2,
|
|
28
|
+
:customer_specific_field_3,
|
|
29
|
+
:customer_specific_field_4,
|
|
30
|
+
:customer_specific_field_5,
|
|
31
|
+
:customer_specific_field_6,
|
|
32
|
+
:customer_specific_field_7,
|
|
33
|
+
:customer_specific_field_8,
|
|
34
|
+
:customer_specific_field_9,
|
|
35
|
+
:customer_specific_field_10,
|
|
36
|
+
:customer_specific_field_11,
|
|
37
|
+
:customer_specific_field_12,
|
|
38
|
+
:customer_specific_field_13,
|
|
39
|
+
:customer_specific_field_14,
|
|
40
|
+
:customer_specific_field_15,
|
|
41
|
+
:customer_specific_field_16
|
|
42
|
+
|
|
43
|
+
def initialize(attributes = {})
|
|
44
|
+
if attributes.is_a? Hash
|
|
45
|
+
attributes.merge! :record_type => '01'
|
|
46
|
+
attributes.each do |key, value|
|
|
47
|
+
self.send("#{key}=".to_sym, value) if self.respond_to?("#{key}=")
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def to_cip
|
|
53
|
+
cip_default_data << fill_up(
|
|
54
|
+
address_type_company => 1,
|
|
55
|
+
title => 32,
|
|
56
|
+
salutation => 10,
|
|
57
|
+
lastname => 32,
|
|
58
|
+
firstname => 32,
|
|
59
|
+
name_affix => 32,
|
|
60
|
+
address => 32,
|
|
61
|
+
po_box => 32,
|
|
62
|
+
postal_code => 10,
|
|
63
|
+
city => 32,
|
|
64
|
+
country => 10,
|
|
65
|
+
contact_salutation => 10,
|
|
66
|
+
contact_lastname => 32,
|
|
67
|
+
contact_firstname => 32,
|
|
68
|
+
language => 10,
|
|
69
|
+
method_of_payment => 10,
|
|
70
|
+
account_no => 32,
|
|
71
|
+
commercial_register_no => 15,
|
|
72
|
+
vat_no => 15,
|
|
73
|
+
industry => 10,
|
|
74
|
+
region => 10,
|
|
75
|
+
reserve_field => 10,
|
|
76
|
+
customer_specific_field_1 => 10,
|
|
77
|
+
customer_specific_field_2 => 10,
|
|
78
|
+
customer_specific_field_3 => 10,
|
|
79
|
+
customer_specific_field_4 => 32,
|
|
80
|
+
customer_specific_field_5 => 32,
|
|
81
|
+
customer_specific_field_6 => 64,
|
|
82
|
+
customer_specific_field_7 => 64,
|
|
83
|
+
customer_specific_field_8 => 64,
|
|
84
|
+
customer_specific_field_9 => 64,
|
|
85
|
+
customer_specific_field_10 => 64,
|
|
86
|
+
customer_specific_field_11 => 64,
|
|
87
|
+
customer_specific_field_12 => 64,
|
|
88
|
+
customer_specific_field_13 => 64,
|
|
89
|
+
customer_specific_field_14 => 64,
|
|
90
|
+
customer_specific_field_15 => 64,
|
|
91
|
+
customer_specific_field_16 => 64
|
|
92
|
+
)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module CiPower
|
|
2
|
+
class Communication < Record
|
|
3
|
+
attr_accessor :type,
|
|
4
|
+
:text
|
|
5
|
+
|
|
6
|
+
def initialize(attributes = {})
|
|
7
|
+
if attributes.is_a? Hash
|
|
8
|
+
attributes.merge! :record_type => '02'
|
|
9
|
+
attributes.each do |key, value|
|
|
10
|
+
self.send("#{key}=".to_sym, value) if self.respond_to?("#{key}=")
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def to_cip
|
|
16
|
+
cip_default_data << fill_up(type => 10, text => 32)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
module CiPower
|
|
2
|
+
class DebtClaim < Record
|
|
3
|
+
attr_accessor :op_no,
|
|
4
|
+
:amount_type,
|
|
5
|
+
:value_date,
|
|
6
|
+
:amount,
|
|
7
|
+
:invoice_date,
|
|
8
|
+
:invoice_text,
|
|
9
|
+
:dossier_currency,
|
|
10
|
+
:exchange_rate,
|
|
11
|
+
:customer_specific_field_1,
|
|
12
|
+
:customer_specific_field_2,
|
|
13
|
+
:customer_specific_field_3,
|
|
14
|
+
:customer_specific_field_4,
|
|
15
|
+
:customer_specific_field_5,
|
|
16
|
+
:customer_specific_field_6,
|
|
17
|
+
:customer_specific_field_7,
|
|
18
|
+
:customer_specific_field_8,
|
|
19
|
+
:customer_specific_field_9,
|
|
20
|
+
:customer_specific_field_10,
|
|
21
|
+
:customer_specific_field_11,
|
|
22
|
+
:customer_specific_field_12,
|
|
23
|
+
:customer_specific_field_13,
|
|
24
|
+
:customer_specific_field_14,
|
|
25
|
+
:customer_specific_field_15
|
|
26
|
+
|
|
27
|
+
def initialize(attributes = {})
|
|
28
|
+
if attributes.is_a? Hash
|
|
29
|
+
attributes.merge! :record_type => '11'
|
|
30
|
+
attributes.each do |key, value|
|
|
31
|
+
self.send("#{key}=".to_sym, value) if self.respond_to?("#{key}=")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def amount
|
|
37
|
+
@amount.abs
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def amount_type
|
|
41
|
+
@amount_type ||= @amount < 0 ? 'GU-GL' : 'RG-GL'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def to_cip
|
|
45
|
+
cip_default_data << fill_up(
|
|
46
|
+
op_no => 25,
|
|
47
|
+
amount_type => 10,
|
|
48
|
+
value_date => 10,
|
|
49
|
+
amount => 15,
|
|
50
|
+
invoice_date => 10,
|
|
51
|
+
invoice_text => 32,
|
|
52
|
+
customer_specific_field_1 => 32,
|
|
53
|
+
customer_specific_field_2 => 32,
|
|
54
|
+
dossier_currency => 10,
|
|
55
|
+
exchange_rate => 15,
|
|
56
|
+
customer_specific_field_3 => 32,
|
|
57
|
+
customer_specific_field_4 => 32,
|
|
58
|
+
customer_specific_field_5 => 32,
|
|
59
|
+
customer_specific_field_6 => 32,
|
|
60
|
+
customer_specific_field_7 => 32,
|
|
61
|
+
customer_specific_field_8 => 32,
|
|
62
|
+
customer_specific_field_9 => 32,
|
|
63
|
+
customer_specific_field_10 => 32,
|
|
64
|
+
customer_specific_field_11 => 32,
|
|
65
|
+
customer_specific_field_12 => 32,
|
|
66
|
+
customer_specific_field_13 => 32,
|
|
67
|
+
customer_specific_field_14 => 32,
|
|
68
|
+
customer_specific_field_15 => 32
|
|
69
|
+
)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
module CiPower
|
|
2
|
+
class DossierData < Record
|
|
3
|
+
attr_accessor :debt_claim_reason,
|
|
4
|
+
:reference_1,
|
|
5
|
+
:ikv,
|
|
6
|
+
:feature_1,
|
|
7
|
+
:feature_2,
|
|
8
|
+
:interest_rate,
|
|
9
|
+
:currency,
|
|
10
|
+
:notes,
|
|
11
|
+
:external_dossier_no,
|
|
12
|
+
:reference_2,
|
|
13
|
+
:reference_3,
|
|
14
|
+
:reference_4,
|
|
15
|
+
:customer_specific_field_1,
|
|
16
|
+
:customer_specific_field_2,
|
|
17
|
+
:customer_specific_field_3,
|
|
18
|
+
:customer_specific_field_4,
|
|
19
|
+
:customer_specific_field_5,
|
|
20
|
+
:customer_specific_field_6,
|
|
21
|
+
:customer_specific_field_7,
|
|
22
|
+
:customer_specific_field_8,
|
|
23
|
+
:customer_specific_field_9,
|
|
24
|
+
:customer_specific_field_10,
|
|
25
|
+
:customer_specific_field_11,
|
|
26
|
+
:customer_specific_field_12,
|
|
27
|
+
:customer_specific_field_13,
|
|
28
|
+
:customer_specific_field_14,
|
|
29
|
+
:customer_specific_field_15,
|
|
30
|
+
:customer_specific_field_16,
|
|
31
|
+
:customer_specific_field_17,
|
|
32
|
+
:customer_specific_field_18,
|
|
33
|
+
:customer_specific_field_19,
|
|
34
|
+
:customer_specific_field_20
|
|
35
|
+
|
|
36
|
+
def initialize(attributes = {})
|
|
37
|
+
if attributes.is_a? Hash
|
|
38
|
+
attributes.merge! :record_type => '10'
|
|
39
|
+
attributes.each do |key, value|
|
|
40
|
+
self.send("#{key}=".to_sym, value) if self.respond_to?("#{key}=")
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def to_cip
|
|
46
|
+
fill_up(
|
|
47
|
+
record_type => 2,
|
|
48
|
+
group_no => 7,
|
|
49
|
+
address_identification_debtee => 25,
|
|
50
|
+
'' => 25,
|
|
51
|
+
address_identification_debtor => 25,
|
|
52
|
+
debt_claim_reason => 64,
|
|
53
|
+
reference_1 => 32,
|
|
54
|
+
ikv => 10,
|
|
55
|
+
feature_1 => 10,
|
|
56
|
+
'' => 22,
|
|
57
|
+
feature_2 => 10,
|
|
58
|
+
'' => 22,
|
|
59
|
+
interest_rate => 10,
|
|
60
|
+
currency => 10,
|
|
61
|
+
notes => 240,
|
|
62
|
+
external_dossier_no => 32,
|
|
63
|
+
reference_2 => 32,
|
|
64
|
+
reference_3 => 32,
|
|
65
|
+
reference_4 => 32,
|
|
66
|
+
customer_specific_field_1 => 10,
|
|
67
|
+
customer_specific_field_2 => 10,
|
|
68
|
+
customer_specific_field_3 => 10,
|
|
69
|
+
customer_specific_field_4 => 32,
|
|
70
|
+
customer_specific_field_5 => 32,
|
|
71
|
+
customer_specific_field_6 => 32,
|
|
72
|
+
customer_specific_field_7 => 32,
|
|
73
|
+
customer_specific_field_8 => 32,
|
|
74
|
+
customer_specific_field_9 => 32,
|
|
75
|
+
customer_specific_field_10 => 32,
|
|
76
|
+
customer_specific_field_11 => 32,
|
|
77
|
+
customer_specific_field_12 => 32,
|
|
78
|
+
customer_specific_field_13 => 32,
|
|
79
|
+
customer_specific_field_14 => 32,
|
|
80
|
+
customer_specific_field_15 => 32,
|
|
81
|
+
customer_specific_field_16 => 32,
|
|
82
|
+
customer_specific_field_17 => 32,
|
|
83
|
+
customer_specific_field_18 => 32,
|
|
84
|
+
customer_specific_field_19 => 32,
|
|
85
|
+
customer_specific_field_20 => 32
|
|
86
|
+
)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
module CiPower
|
|
2
|
+
module Export
|
|
3
|
+
attr :output
|
|
4
|
+
attr :group_no
|
|
5
|
+
attr :date_format, true
|
|
6
|
+
|
|
7
|
+
def output
|
|
8
|
+
@output ||= []
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def group_no
|
|
12
|
+
@group_no ||= 0
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def date_format
|
|
16
|
+
@date_format ||= '%Y%m%d'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def dossier_data_record(attributes)
|
|
20
|
+
record CiPower::DossierData.new, attributes
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def address_record(attributes)
|
|
24
|
+
record CiPower::Address.new, attributes
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def communication_record(attributes)
|
|
28
|
+
record CiPower::Communication.new, attributes
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def debt_claim_record(attributes)
|
|
32
|
+
record CiPower::DebtClaim.new, attributes
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def export_customer(records)
|
|
36
|
+
records.each do |record|
|
|
37
|
+
raise "Export class must be sub class of CiPower::Record" unless record.kind_of? CiPower::Record
|
|
38
|
+
output << record
|
|
39
|
+
end
|
|
40
|
+
increment_group_no
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def convert_date(date)
|
|
44
|
+
date.strftime(date_format) if date.kind_of? Date
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
def record(record, attributes)
|
|
49
|
+
attributes.merge! :group_no => group_no
|
|
50
|
+
attributes.each do |key, value|
|
|
51
|
+
method_name = "#{key}=".to_sym
|
|
52
|
+
record.send(method_name, value) if record.respond_to? method_name
|
|
53
|
+
end
|
|
54
|
+
record
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def increment_group_no
|
|
58
|
+
@group_no = group_no + 1
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module CiPower
|
|
2
|
+
class Record
|
|
3
|
+
attr_accessor :record_type,
|
|
4
|
+
:group_no,
|
|
5
|
+
:address_identification_debtee,
|
|
6
|
+
:address_identification_debtor
|
|
7
|
+
|
|
8
|
+
def cip_default_data
|
|
9
|
+
fill_up(record_type => 2, group_no => 7, address_identification_debtee => 25, address_identification_debtor => 25)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def fill_up(data)
|
|
13
|
+
line = ""
|
|
14
|
+
if data.is_a? Hash
|
|
15
|
+
data.each do |field, length|
|
|
16
|
+
field = field.to_s unless field.is_a? String
|
|
17
|
+
line << field.ljust(length)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
line + line_terminator
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def line_terminator
|
|
24
|
+
"\n"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/ci_power.rb
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module CiPower
|
|
2
|
+
module Generators
|
|
3
|
+
class CiPowerGenerator < Rails::Generators::Base
|
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
5
|
+
|
|
6
|
+
desc "This generator creates a model file at app/models"
|
|
7
|
+
def generate_cip_export
|
|
8
|
+
copy_file "cip_export.rb", "app/models/cip_export.rb"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class CipExport
|
|
2
|
+
include CiPower::Export
|
|
3
|
+
|
|
4
|
+
def initialize(output)
|
|
5
|
+
# Define mapping for CI-Power export here. For example:
|
|
6
|
+
#
|
|
7
|
+
# Add dossier_data
|
|
8
|
+
# output << dossier_data(:reference_1 => '99999', :interest_rate => '15')
|
|
9
|
+
#
|
|
10
|
+
# Add communication
|
|
11
|
+
# output << communication(:type => 'T1', :text => '0812502850')
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
namespace :ci_power do
|
|
2
|
+
OUTPUT_FILE = 'tmp/ci_power_export.txt'
|
|
3
|
+
|
|
4
|
+
desc 'Extract data from application'
|
|
5
|
+
task :extract_data => :environment do
|
|
6
|
+
@content = CipExport.new.output.sort_by { |a| [a.group_no, a.record_type] }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
desc 'Export data into output file'
|
|
10
|
+
task :export => :extract_data do
|
|
11
|
+
File.open(OUTPUT_FILE, "w+") do |file|
|
|
12
|
+
@content.each do |line|
|
|
13
|
+
file.puts line.to_cip
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
desc 'Removes output file'
|
|
19
|
+
task :clean do
|
|
20
|
+
rm OUTPUT_FILE
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
task :default => "ci_power:export"
|
|
24
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: ci_power
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease:
|
|
5
|
+
version: 0.0.2
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Maik Duff
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
|
|
13
|
+
date: 2011-12-02 00:00:00 +01:00
|
|
14
|
+
default_executable:
|
|
15
|
+
dependencies:
|
|
16
|
+
- !ruby/object:Gem::Dependency
|
|
17
|
+
name: rspec
|
|
18
|
+
prerelease: false
|
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
20
|
+
none: false
|
|
21
|
+
requirements:
|
|
22
|
+
- - ">="
|
|
23
|
+
- !ruby/object:Gem::Version
|
|
24
|
+
version: "0"
|
|
25
|
+
type: :development
|
|
26
|
+
version_requirements: *id001
|
|
27
|
+
description: Creates input files for CI-Power interface
|
|
28
|
+
email:
|
|
29
|
+
- md@impac.ch
|
|
30
|
+
executables: []
|
|
31
|
+
|
|
32
|
+
extensions: []
|
|
33
|
+
|
|
34
|
+
extra_rdoc_files: []
|
|
35
|
+
|
|
36
|
+
files:
|
|
37
|
+
- lib/ci_power.rb
|
|
38
|
+
- lib/ci_power/address.rb
|
|
39
|
+
- lib/ci_power/communication.rb
|
|
40
|
+
- lib/ci_power/debt_claim.rb
|
|
41
|
+
- lib/ci_power/dossier_data.rb
|
|
42
|
+
- lib/ci_power/export.rb
|
|
43
|
+
- lib/ci_power/record.rb
|
|
44
|
+
- lib/ci_power/version.rb
|
|
45
|
+
- lib/generators/ci_power/ci_power_generator.rb
|
|
46
|
+
- lib/generators/ci_power/templates/cip_export.rb
|
|
47
|
+
- lib/tasks/ci_power.rake
|
|
48
|
+
has_rdoc: true
|
|
49
|
+
homepage: ""
|
|
50
|
+
licenses: []
|
|
51
|
+
|
|
52
|
+
post_install_message:
|
|
53
|
+
rdoc_options: []
|
|
54
|
+
|
|
55
|
+
require_paths:
|
|
56
|
+
- lib
|
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
|
+
none: false
|
|
59
|
+
requirements:
|
|
60
|
+
- - ">="
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: "0"
|
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
|
+
none: false
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: "0"
|
|
69
|
+
requirements: []
|
|
70
|
+
|
|
71
|
+
rubyforge_project: ci_power
|
|
72
|
+
rubygems_version: 1.5.1
|
|
73
|
+
signing_key:
|
|
74
|
+
specification_version: 3
|
|
75
|
+
summary: CI-Power Interface
|
|
76
|
+
test_files: []
|
|
77
|
+
|