klarna-xmlrpc 0.2.0
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.
- checksums.yaml +7 -0
- data/.travis.yml +13 -0
- data/Gemfile +14 -0
- data/Guardfile +16 -0
- data/MIT-LICENSE +20 -0
- data/README.textile +139 -0
- data/Rakefile +22 -0
- data/TODO +30 -0
- data/examples/Gemfile +8 -0
- data/examples/config/initializer.rb +15 -0
- data/examples/console.rb +71 -0
- data/examples/public/images/klarna.png +0 -0
- data/examples/public/images/ruby.png +0 -0
- data/examples/views/_address.haml +22 -0
- data/examples/views/_articles.haml +21 -0
- data/examples/views/checkout_page_example.haml +2 -0
- data/examples/views/essential/add_transaction/_form.haml +32 -0
- data/examples/views/essential/add_transaction/result.haml +7 -0
- data/examples/views/essential/calculate_monthly_cost/_form.haml +16 -0
- data/examples/views/essential/calculate_monthly_cost/result.haml +7 -0
- data/examples/views/essential/get_addresses/_form.haml +9 -0
- data/examples/views/essential/get_addresses/result.haml +8 -0
- data/examples/views/index.haml +296 -0
- data/examples/views/layout.haml +48 -0
- data/examples/views/payment_terms_example.haml +102 -0
- data/examples/views/product_page_example.haml +2 -0
- data/examples/views/reservation/activate_reservation/_form.haml +54 -0
- data/examples/views/reservation/activate_reservation/result.haml +7 -0
- data/examples/views/reservation/cancel_reservation/_form.haml +8 -0
- data/examples/views/reservation/cancel_reservation/result.haml +7 -0
- data/examples/views/reservation/change_reservation/_form.haml +10 -0
- data/examples/views/reservation/change_reservation/result.haml +7 -0
- data/examples/views/reservation/reserve_amount/_form.haml +58 -0
- data/examples/views/reservation/reserve_amount/result.haml +7 -0
- data/examples/views/reservation/reserve_ocr_numbers/_form.haml +8 -0
- data/examples/views/reservation/reserve_ocr_numbers/result.haml +7 -0
- data/examples/views/reservation/split_reservation/_form.haml +14 -0
- data/examples/views/reservation/split_reservation/result.haml +7 -0
- data/examples/views/special/get_pclasses/_form.haml +8 -0
- data/examples/views/special/get_pclasses/result.haml +7 -0
- data/examples/views/special/invoice_address/_form.haml +8 -0
- data/examples/views/special/invoice_address/result.haml +7 -0
- data/examples/views/special/invoice_amount/_form.haml +8 -0
- data/examples/views/special/invoice_amount/result.haml +7 -0
- data/examples/views/special/is_invoice_paid/_form.haml +8 -0
- data/examples/views/special/is_invoice_paid/result.haml +7 -0
- data/examples/views/special/update_charge_amount/_form.haml +15 -0
- data/examples/views/special/update_charge_amount/result.haml +7 -0
- data/examples/views/special/update_goods_quantity/_form.haml +17 -0
- data/examples/views/special/update_goods_quantity/result.haml +7 -0
- data/examples/views/special/update_order_number/_form.haml +10 -0
- data/examples/views/special/update_order_number/result.haml +7 -0
- data/examples/views/useful/activate_invoice/_form.haml +9 -0
- data/examples/views/useful/activate_invoice/result.haml +7 -0
- data/examples/views/useful/credit_invoice/_form.haml +11 -0
- data/examples/views/useful/credit_invoice/result.haml +7 -0
- data/examples/views/useful/delete_invoice/_form.haml +9 -0
- data/examples/views/useful/delete_invoice/result.haml +7 -0
- data/examples/views/useful/email_invoice/_form.haml +9 -0
- data/examples/views/useful/email_invoice/result.haml +7 -0
- data/examples/views/useful/has_account/_form.haml +9 -0
- data/examples/views/useful/has_account/result.haml +7 -0
- data/examples/views/useful/return_amount/_form.haml +15 -0
- data/examples/views/useful/return_amount/result.haml +7 -0
- data/examples/views/useful/send_invoice/_form.haml +9 -0
- data/examples/views/useful/send_invoice/result.haml +7 -0
- data/examples/web.rb +349 -0
- data/klarna.gemspec +34 -0
- data/lib/klarna.rb +171 -0
- data/lib/klarna/api.rb +187 -0
- data/lib/klarna/api/client.rb +126 -0
- data/lib/klarna/api/constants.rb +647 -0
- data/lib/klarna/api/errors.rb +154 -0
- data/lib/klarna/api/methods.rb +16 -0
- data/lib/klarna/api/methods/cost_calculations.rb +134 -0
- data/lib/klarna/api/methods/invoicing.rb +304 -0
- data/lib/klarna/api/methods/reservation.rb +188 -0
- data/lib/klarna/api/methods/standard.rb +126 -0
- data/lib/klarna/version.rb +5 -0
- data/test/fixtures/api/companies.yml +97 -0
- data/test/fixtures/api/pclasses.yml +37 -0
- data/test/fixtures/api/persons.yml +144 -0
- data/test/fixtures/api/stores.yml +6 -0
- data/test/fixtures/klarna.yml +10 -0
- data/test/klarna/api/client_test.rb +288 -0
- data/test/klarna/api/errors_test.rb +34 -0
- data/test/klarna/api/methods/cost_calculations_test.rb +78 -0
- data/test/klarna/api/methods/invoicing_test.rb +409 -0
- data/test/klarna/api/methods/reservation_test.rb +66 -0
- data/test/klarna/api/methods/standard_test.rb +244 -0
- data/test/klarna/api_test.rb +184 -0
- data/test/klarna_test.rb +204 -0
- data/test/support/assertions_helper.rb +40 -0
- data/test/test_helper.rb +55 -0
- metadata +335 -0
@@ -0,0 +1,188 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Klarna
|
4
|
+
module API
|
5
|
+
module Methods
|
6
|
+
module Reservation
|
7
|
+
|
8
|
+
# Reserve a purchase amount for a specific customer. The reservation is valid, by default, for 7 days.
|
9
|
+
# Pass cellphone no. instead of Pno for SMS payments.
|
10
|
+
#
|
11
|
+
def reserve_amount(params)
|
12
|
+
|
13
|
+
xmlrpc_params = [
|
14
|
+
::Klarna::API::PROTOCOL_VERSION,
|
15
|
+
::XMLRPC::Client::USER_AGENT,
|
16
|
+
params[:pno],
|
17
|
+
params[:gender] || 0,
|
18
|
+
params[:amount],
|
19
|
+
params[:reference] || '',
|
20
|
+
params[:reference_code] || '',
|
21
|
+
params[:order_id],
|
22
|
+
params[:order_id],
|
23
|
+
params[:delivery_address],
|
24
|
+
params[:billing_address],
|
25
|
+
params[:client_ip] || '0.0.0.0',
|
26
|
+
params[:flags] || 0,
|
27
|
+
params[:currency],
|
28
|
+
params[:country],
|
29
|
+
params[:language],
|
30
|
+
self.store_id,
|
31
|
+
self.digest(params[:pno], params[:amount]),
|
32
|
+
params[:pno_encoding],
|
33
|
+
(params[:pclass] || ::Klarna::API::DEFAULTS[:PCLASS]),
|
34
|
+
params[:goods_list],
|
35
|
+
params[:comment] || '',
|
36
|
+
params[:shipmentinfo] || { delay_adjust: 1 },
|
37
|
+
params[:travelinfo] || [],
|
38
|
+
params[:income_expense] || [::Klarna::API::DEFAULTS[:YSALARY]],
|
39
|
+
params[:bankinfo] || [],
|
40
|
+
params[:session_id] || [],
|
41
|
+
params[:extra_info] || []
|
42
|
+
]
|
43
|
+
|
44
|
+
self.call(:reserve_amount, *xmlrpc_params).tap do |result|
|
45
|
+
result = result.first
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def check_order_status(id)
|
50
|
+
xmlrpc_params = [
|
51
|
+
::Klarna::API::PROTOCOL_VERSION,
|
52
|
+
::XMLRPC::Client::USER_AGENT,
|
53
|
+
self.store_id.to_i,
|
54
|
+
self.digest(id.to_s),
|
55
|
+
id.to_s,
|
56
|
+
0
|
57
|
+
]
|
58
|
+
self.call(:check_order_status, *xmlrpc_params)
|
59
|
+
end
|
60
|
+
# Activate purchases which have been previously reserved with the reserve_amount function.
|
61
|
+
#
|
62
|
+
def activate_reservation(params)
|
63
|
+
|
64
|
+
xmlrpc_params = [
|
65
|
+
::Klarna::API::PROTOCOL_VERSION,
|
66
|
+
::XMLRPC::Client::USER_AGENT,
|
67
|
+
params[:reservation_id],
|
68
|
+
params[:ocr] || '',
|
69
|
+
params[:pno],
|
70
|
+
params[:gender] || 0,
|
71
|
+
params[:reference] || '',
|
72
|
+
params[:reference_code] || '',
|
73
|
+
params[:order_id_1],
|
74
|
+
params[:order_id_2],
|
75
|
+
params[:delivery_address],
|
76
|
+
params[:billing_address],
|
77
|
+
params[:client_ip] || '0.0.0.0',
|
78
|
+
params[:flags] || 0,
|
79
|
+
params[:currency],
|
80
|
+
params[:country],
|
81
|
+
params[:language],
|
82
|
+
self.store_id,
|
83
|
+
self.digest(params[:pno], params[:goods_list].map{ |goods| goods[:goods][:artno]+':'+goods[:qty].to_s } ),
|
84
|
+
params[:pno_encoding],
|
85
|
+
(params[:pclass] || ::Klarna::API::DEFAULTS[:PCLASS]),
|
86
|
+
params[:goods_list],
|
87
|
+
params[:comment] || '',
|
88
|
+
params[:shipmentinfo] || { delay_adjust: 1 },
|
89
|
+
params[:travelinfo] || [],
|
90
|
+
params[:income_expense] || [::Klarna::API::DEFAULTS[:YSALARY]],
|
91
|
+
params[:session_id] || [],
|
92
|
+
params[:extra_info] || []
|
93
|
+
]
|
94
|
+
|
95
|
+
xmlrpc_params = [xmlrpc_params] # Klarna needs all values to be in first param for activate_reservation only
|
96
|
+
|
97
|
+
self.call(:activate_reservation, *xmlrpc_params)
|
98
|
+
end
|
99
|
+
|
100
|
+
# Cancel a reservation.
|
101
|
+
#
|
102
|
+
def cancel_reservation(params)
|
103
|
+
xmlrpc_params = [
|
104
|
+
::Klarna::API::PROTOCOL_VERSION,
|
105
|
+
::XMLRPC::Client::USER_AGENT,
|
106
|
+
params[:reservation_id],
|
107
|
+
self.store_id,
|
108
|
+
self.digest(params[:reservation_id])
|
109
|
+
]
|
110
|
+
self.call(:cancel_reservation, *xmlrpc_params)
|
111
|
+
end
|
112
|
+
|
113
|
+
# Split a reservation due to for example outstanding articles.
|
114
|
+
#
|
115
|
+
def split_reservation(params)
|
116
|
+
|
117
|
+
xmlrpc_params = [
|
118
|
+
::Klarna::API::PROTOCOL_VERSION,
|
119
|
+
::XMLRPC::Client::USER_AGENT,
|
120
|
+
params[:reservation_id],
|
121
|
+
params[:split_amount],
|
122
|
+
params[:order_id_1],
|
123
|
+
params[:order_id_2],
|
124
|
+
params[:flags].to_i || 0,
|
125
|
+
self.store_id,
|
126
|
+
self.digest(params[:reservation_id], params[:split_amount])
|
127
|
+
]
|
128
|
+
self.call(:split_reservation, *xmlrpc_params).tap do |result|
|
129
|
+
result = result.first
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# Change a reservation.
|
134
|
+
#
|
135
|
+
def change_reservation(params)
|
136
|
+
|
137
|
+
xmlrpc_params = [
|
138
|
+
::Klarna::API::PROTOCOL_VERSION,
|
139
|
+
::XMLRPC::Client::USER_AGENT,
|
140
|
+
params[:reservation_id],
|
141
|
+
params[:new_amount],
|
142
|
+
self.store_id,
|
143
|
+
self.digest(params[:reservation_id], params[:new_amount])
|
144
|
+
]
|
145
|
+
self.call(:change_reservation, *xmlrpc_params).tap do |result|
|
146
|
+
result = result.first
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
# Reserves one or more OCR numbers for your store.
|
151
|
+
#
|
152
|
+
def reserve_ocr_numbers(number_of_ocrs)
|
153
|
+
# params = [
|
154
|
+
# ::Klarna::API::PROTOCOL_VERSION,
|
155
|
+
# ::XMLRPC::Client::USER_AGENT,
|
156
|
+
# number_of_ocrs,
|
157
|
+
# self.store_id,
|
158
|
+
# self.digest(number_of_ocrs)
|
159
|
+
# ]
|
160
|
+
# self.call(:reserve_ocr_nums, *params)
|
161
|
+
raise NotImplementedError
|
162
|
+
end
|
163
|
+
|
164
|
+
# Create addresses for arguments such as the +activate_reservation+ function.
|
165
|
+
#
|
166
|
+
def make_reservation_address(params)
|
167
|
+
{
|
168
|
+
:email => (params[:email] || ''),
|
169
|
+
:telno => (params[:telno] || ''),
|
170
|
+
:cellno => (params[:cellno] || ''),
|
171
|
+
:fname => (params[:fname] || ''),
|
172
|
+
:lname => (params[:lname] || ''),
|
173
|
+
:company => (params[:company] || ''),
|
174
|
+
:careof => (params[:careof] || ''),
|
175
|
+
:street => (params[:street] || ''),
|
176
|
+
:zip => (params[:zip] || ''),
|
177
|
+
:city => (params[:city] || ''),
|
178
|
+
:country => (::Klarna::API.id_for(:country, params[:country]) || ''),
|
179
|
+
:house_number => (params[:house_number] || ''),
|
180
|
+
:house_extension => (params[:house_extension] || '')
|
181
|
+
}.with_indifferent_access
|
182
|
+
end
|
183
|
+
alias :mk_reservation_address :make_reservation_address
|
184
|
+
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Klarna
|
4
|
+
module API
|
5
|
+
module Methods
|
6
|
+
module Standard
|
7
|
+
|
8
|
+
# Retrieve a customer’s address(es). Using this, the customer is not required to enter
|
9
|
+
# any information – only confirm the one presented to him/her.
|
10
|
+
# Can also be used for companies: If the customer enters a company number,
|
11
|
+
# it will return all the addresses where the company is registered at.
|
12
|
+
#
|
13
|
+
# == Note:
|
14
|
+
#
|
15
|
+
# ONLY allowed to be used for Swedish persons with the following conditions:
|
16
|
+
#
|
17
|
+
# * It can be only used if invoice or part payment is the default payment method
|
18
|
+
# * It has to disappear if the customer chooses another payment method
|
19
|
+
# * The button is not allowed to be called get address ("hämta adress"), but continue ("fortsätt")
|
20
|
+
# or it can be picked up automatically when all the numbers have been typed.
|
21
|
+
#
|
22
|
+
# In the other Nordic countries you will have to have input fields for name, last name, street name,
|
23
|
+
# zip code and city so that the customer can enter this information by himself.
|
24
|
+
#
|
25
|
+
def get_addresses(pno, pno_encoding, address_type = :GIVEN)
|
26
|
+
pno = pno.to_s.gsub(/[\W]/, '')
|
27
|
+
pno_encoding = ::Klarna::API.id_for(:pno_format, pno_encoding)
|
28
|
+
address_type = ::Klarna::API.id_for(:address_format, address_type)
|
29
|
+
params = [
|
30
|
+
::Klarna::API::PROTOCOL_VERSION,
|
31
|
+
::XMLRPC::Client::USER_AGENT,
|
32
|
+
pno,
|
33
|
+
self.store_id,
|
34
|
+
self.digest(pno),
|
35
|
+
pno_encoding,
|
36
|
+
address_type,
|
37
|
+
self.client_ip
|
38
|
+
]
|
39
|
+
self.call(:get_addresses, *params).tap do |result|
|
40
|
+
result = result.first
|
41
|
+
country_id = ::Klarna::API.id_for(:country, result[5])
|
42
|
+
result[5] = ::Klarna::API::COUNTRIES.key(country_id)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Same as +get_addresses+ but returns only first address.
|
47
|
+
#
|
48
|
+
def get_address(*args)
|
49
|
+
self.get_addresses(*args).first
|
50
|
+
end
|
51
|
+
|
52
|
+
# Create addresses (i.e. the +address+ argument to the +add_transaction+ method).
|
53
|
+
#
|
54
|
+
def make_address(co_address, street_address, zip, city, country, phone, cell_phone, email,
|
55
|
+
house_number = nil, house_extension = nil)
|
56
|
+
country = ::Klarna::API.id_for(:country, country)
|
57
|
+
phone = phone.to_s.gsub(/[\W\s\t]/, '')
|
58
|
+
cell_phone = cell_phone.to_s.gsub(/[\W\s\t]/, '')
|
59
|
+
{
|
60
|
+
:careof => co_address,
|
61
|
+
:street => street_address,
|
62
|
+
:postno => zip,
|
63
|
+
:city => city,
|
64
|
+
:country => country,
|
65
|
+
:telno => phone,
|
66
|
+
:cellno => cell_phone,
|
67
|
+
:email => email
|
68
|
+
}.with_indifferent_access
|
69
|
+
end
|
70
|
+
alias :mk_address :make_address
|
71
|
+
|
72
|
+
# Create an inventory (i.e. the +goods_list+ argument) to the +add_transaction+ function.
|
73
|
+
#
|
74
|
+
# == Flags:
|
75
|
+
#
|
76
|
+
# Argument +flags+ can be used to set the precision of the article, to indicate a shipment
|
77
|
+
# or a fee or sending the price with VAT.
|
78
|
+
#
|
79
|
+
# By using either +PRINT_1000+, +PRINT_100+, or +PRINT_10+, the +flags+
|
80
|
+
# function can be used to set article quantity (+quantity+). Unit is either +1/10+, +1/100+
|
81
|
+
# or +1/1000+. This is useful for goods measured in meters or kilograms, rather than number of items.
|
82
|
+
#
|
83
|
+
# By using the +IS_SHIPMENT+ or +IS_HANDLING+ flags a shipping or handling fee can
|
84
|
+
# be applied. The fees are sent excluding VAT with the arguments +shipping_fee+ or +handling_fee+.
|
85
|
+
#
|
86
|
+
# By using the +INC_VAT+ flag, you can send the price including VAT.
|
87
|
+
#
|
88
|
+
# == Note:
|
89
|
+
#
|
90
|
+
# If you are implementing sales with Euros, use the function mk_goods_flags instead
|
91
|
+
# since using this method can result in round off problems. With +mk_goods_flags+ you
|
92
|
+
# are able to send the price with VAT.
|
93
|
+
#
|
94
|
+
def make_goods(quantity, article_no, title, price, vat, discount = nil, flags = nil)
|
95
|
+
flags = ::Klarna::API.parse_flags(:GOODS, flags)
|
96
|
+
goods = {
|
97
|
+
:goods => {
|
98
|
+
:artno => article_no,
|
99
|
+
:title => title,
|
100
|
+
:price => price.to_i,
|
101
|
+
:vat => vat.to_f.round(2),
|
102
|
+
:discount => discount.to_f.round(2),
|
103
|
+
},
|
104
|
+
:qty => quantity.to_i
|
105
|
+
}
|
106
|
+
goods[:goods].merge!(:flags => flags.to_i) # if flags.present?
|
107
|
+
goods.with_indifferent_access
|
108
|
+
end
|
109
|
+
alias :mk_goods :make_goods
|
110
|
+
alias :mk_goods_flags :make_goods
|
111
|
+
|
112
|
+
# Check if a user has an account.
|
113
|
+
#
|
114
|
+
def has_account?(pno, pno_encoding)
|
115
|
+
params = [
|
116
|
+
self.store_id,
|
117
|
+
self.digest(pno),
|
118
|
+
pno_encoding
|
119
|
+
]
|
120
|
+
self.call(:has_account, *params)
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
# Here are Klarnas test COMPANIES.
|
2
|
+
# All approved persons have unlimited credit and the system will never accept purchases from the not approved ones.
|
3
|
+
#
|
4
|
+
# Purchases done with the test persons will be displayed in Klarna Online as regular invoices, although they will
|
5
|
+
# unvisible unless you have "Yes" selected next to "Display test invoices" when searching for invoices.
|
6
|
+
#
|
7
|
+
# We will not pay for the invoices created with the test persons nor companies and we will not collect any fees as well.
|
8
|
+
|
9
|
+
companies:
|
10
|
+
se:
|
11
|
+
approved:
|
12
|
+
cno: "6020310139"
|
13
|
+
name: "Kalle Anka AB"
|
14
|
+
street_address: "Storgatan 1"
|
15
|
+
postal_code: "12345"
|
16
|
+
city: "Ankeborg"
|
17
|
+
street_address_2: "Lillgatan 99"
|
18
|
+
postal_code_2: "77777"
|
19
|
+
city_2: "Ankeborg"
|
20
|
+
country: "SE"
|
21
|
+
cell_phone: "076 526 00 00"
|
22
|
+
currency: "SEK"
|
23
|
+
language: "SV"
|
24
|
+
unapproved:
|
25
|
+
cno: "6720217931"
|
26
|
+
name: "Björnligan AB"
|
27
|
+
street_address: "Fulgatan 1"
|
28
|
+
postal_code: "12345"
|
29
|
+
city: "Ankeborg"
|
30
|
+
street_address_2: "Bakgatan 99"
|
31
|
+
postal_code_2: "77777"
|
32
|
+
city_2: "Ankeborg"
|
33
|
+
country: "SE"
|
34
|
+
cell_phone: "076 526 00 00"
|
35
|
+
currency: "SEK"
|
36
|
+
language: "SV"
|
37
|
+
|
38
|
+
no:
|
39
|
+
# N/A
|
40
|
+
|
41
|
+
dk:
|
42
|
+
approved:
|
43
|
+
pno: "27968880"
|
44
|
+
first_name: ""
|
45
|
+
last_name: "Onbase ApS"
|
46
|
+
street_address: "Centrumgaden 37"
|
47
|
+
postal_code: "2750"
|
48
|
+
city: "Ballerup"
|
49
|
+
country: "DK"
|
50
|
+
cell_phone: "20 123 456"
|
51
|
+
currency: "DKK"
|
52
|
+
language: "DA"
|
53
|
+
unapproved:
|
54
|
+
pno: "99999993"
|
55
|
+
first_name: ""
|
56
|
+
last_name: "Larsen & Olsen Contracters ApS"
|
57
|
+
street_address: "Glarmestervej 2"
|
58
|
+
postal_code: "8600"
|
59
|
+
city: "Silkeborg"
|
60
|
+
street_address: "Kristianiagade 9"
|
61
|
+
postal_code: "2100"
|
62
|
+
city: "København Ø"
|
63
|
+
country: "DK"
|
64
|
+
cell_phone: "20 123 456"
|
65
|
+
currency: "DKK"
|
66
|
+
language: "DA"
|
67
|
+
|
68
|
+
fi:
|
69
|
+
approved:
|
70
|
+
pno: "10891871"
|
71
|
+
first_name: ""
|
72
|
+
last_name: "Porin Mies-Laulu r.y."
|
73
|
+
street_address: "Vapaudenkatu 10"
|
74
|
+
postal_code: "28100"
|
75
|
+
city: "Pori"
|
76
|
+
country: "FI"
|
77
|
+
cell_phone: "040 123 45 67"
|
78
|
+
currency: "EUR"
|
79
|
+
language: "FI"
|
80
|
+
|
81
|
+
unapproved:
|
82
|
+
pno: "07527622"
|
83
|
+
first_name: ""
|
84
|
+
last_name: "Mankalan Perhekodit Oy"
|
85
|
+
street_address: "Porrassalmenkatu 19 B"
|
86
|
+
postal_code: "50100"
|
87
|
+
city: "Parikkala"
|
88
|
+
country: "FI"
|
89
|
+
cell_phone: "040 123 45 67"
|
90
|
+
currency: "EUR"
|
91
|
+
language: "FI"
|
92
|
+
|
93
|
+
de:
|
94
|
+
# N/A
|
95
|
+
|
96
|
+
nl:
|
97
|
+
# N/A
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Pclass id number, Description, Amount of months for part payment, Start fee, Invoice fee, Interest rate, Minimum purchase amount for pclass
|
2
|
+
|
3
|
+
pclasses:
|
4
|
+
sek:
|
5
|
+
390:
|
6
|
+
pclass_id: 390
|
7
|
+
description: "Konto"
|
8
|
+
months: 24
|
9
|
+
start_fee: 0
|
10
|
+
invoice_fee: 2900
|
11
|
+
interest_rate: 1950
|
12
|
+
minimum_purchase_amount: 100
|
13
|
+
121:
|
14
|
+
pclass_id: 121
|
15
|
+
description: "6 m\303\245n"
|
16
|
+
months: 6
|
17
|
+
start_fee: 19500
|
18
|
+
invoice_fee: 2900
|
19
|
+
interest_rate: 0
|
20
|
+
minimum_purchase_amount: 100000
|
21
|
+
120:
|
22
|
+
pclass_id: 120
|
23
|
+
description: "3 m\303\245n"
|
24
|
+
months: 3
|
25
|
+
start_fee: 9500
|
26
|
+
invoice_fee: 2900
|
27
|
+
interest_rate: 0
|
28
|
+
minimum_purchase_amount: 100000
|
29
|
+
|
30
|
+
nok:
|
31
|
+
# Not available (for some reason)
|
32
|
+
|
33
|
+
dkk:
|
34
|
+
# Not available (for some reason)
|
35
|
+
|
36
|
+
eur:
|
37
|
+
# Not available (for some reason)
|