shoppe 0.0.10 → 0.0.11

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.
Files changed (36) hide show
  1. data/app/assets/javascripts/shoppe/application.coffee +1 -1
  2. data/app/assets/stylesheets/shoppe/application.scss +3 -3
  3. data/app/controllers/shoppe/application_controller.rb +4 -0
  4. data/app/controllers/shoppe/delivery_service_prices_controller.rb +1 -1
  5. data/app/controllers/shoppe/products_controller.rb +1 -1
  6. data/app/controllers/shoppe/tax_rates_controller.rb +47 -0
  7. data/app/models/shoppe/country.rb +14 -0
  8. data/app/models/shoppe/delivery_service_price.rb +1 -1
  9. data/app/models/shoppe/order.rb +3 -2
  10. data/app/models/shoppe/order_item.rb +5 -4
  11. data/app/models/shoppe/product.rb +1 -1
  12. data/app/models/shoppe/tax_rate.rb +23 -0
  13. data/app/views/layouts/shoppe/application.html.haml +1 -0
  14. data/app/views/shoppe/delivery_service_prices/_form.html.haml +2 -2
  15. data/app/views/shoppe/orders/show.html.haml +1 -1
  16. data/app/views/shoppe/products/_form.html.haml +2 -2
  17. data/app/views/shoppe/tax_rates/form.html.haml +22 -0
  18. data/app/views/shoppe/tax_rates/index.html.haml +17 -0
  19. data/config/routes.rb +1 -0
  20. data/db/countries.txt +252 -0
  21. data/db/migrate/20131017180920_create_shoppe_countries.rb +16 -0
  22. data/db/migrate/20131017183211_create_shoppe_tax_rates.rb +26 -0
  23. data/db/seeds.rb +29 -25
  24. data/lib/shoppe/country_importer.rb +15 -0
  25. data/lib/shoppe/version.rb +1 -1
  26. data/lib/tasks/shoppe.rake +12 -0
  27. data/test/dummy/config/database.yml +12 -11
  28. data/test/dummy/db/migrate/20131017165217_create_nifty_attachments_table.rb +16 -0
  29. data/test/dummy/db/migrate/20131017165222_create_nifty_key_value_store_table.rb +14 -0
  30. data/test/dummy/db/schema.rb +22 -1
  31. data/test/dummy/log/development.log +45 -0
  32. data/test/dummy/log/test.log +938 -0
  33. data/test/models/shoppe/basket_test.rb +1 -1
  34. data/test/models/shoppe/user_test.rb +11 -21
  35. data/test/test_helper.rb +5 -1
  36. metadata +32 -3
@@ -39,4 +39,4 @@ $ ->
39
39
 
40
40
  # Chosen
41
41
  $('select.chosen').chosen()
42
-
42
+ $('select.chosen-with-deselect').chosen({allow_single_deselect: true})
@@ -76,6 +76,7 @@ header.main {
76
76
  h2.products { background-image:image-url('shoppe/icons/tags.svg')}
77
77
  h2.orders { background-image:image-url('shoppe/icons/bag.svg'); background-position: 0 3px;}
78
78
  h2.delivery_services { background-image:image-url('shoppe/icons/box.svg'); background-position: 0 3px; background-size:20px;}
79
+ h2.tax_rates { background-image:image-url('shoppe/icons/currency.svg'); background-position: 0 2px; background-size:22px;}
79
80
  h2.users { background-image:image-url('shoppe/icons/id.svg'); background-position: 0 2px; background-size:22px;}
80
81
 
81
82
  }
@@ -169,7 +170,7 @@ header.main {
169
170
  margin-bottom:15px;
170
171
  legend {color:#5B6270; margin:0 25px; font-weight:300; font-size:1.5em;}
171
172
 
172
- .splitContainer { margin:0 25px; margin-bottom:15px;overflow:hidden;}
173
+ .splitContainer { margin:0 25px; margin-bottom:15px; height:50px;}
173
174
  .splitContainer:last-child { margin-bottom:0;}
174
175
 
175
176
  dl {
@@ -184,13 +185,12 @@ header.main {
184
185
  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
185
186
  -moz-box-sizing: border-box; /* Firefox, other Gecko */
186
187
  box-sizing: border-box; /* Opera/IE 8+ */
187
-
188
188
  font-size:1.1em;
189
189
  font-family:$font;
190
190
  &:focus { border-color:#9AC835; }
191
191
  &.short { width:100px;}
192
192
  }
193
- dd select { width:200px;}
193
+ dd select { width:100%;}
194
194
  dd textarea { height:80px; }
195
195
  dd p.help { margin-top:15px; color:#333; background:image-url('shoppe/icons/support.svg') no-repeat 0 1px; background-size:13px; padding-left:15px;}
196
196
  dd.checkbox { margin-top:14px; font-size:1.1em; color:#999;}
@@ -4,6 +4,10 @@ module Shoppe
4
4
  # Require that a user is logged in for all parts of the Shoppe admin
5
5
  # interface.
6
6
  before_filter :login_required
7
+
8
+ rescue_from ActiveRecord::DeleteRestrictionError do |e|
9
+ redirect_to request.referer || root_path, :alert => e.message
10
+ end
7
11
 
8
12
  private
9
13
 
@@ -36,7 +36,7 @@ class Shoppe::DeliveryServicePricesController < Shoppe::ApplicationController
36
36
  private
37
37
 
38
38
  def safe_params
39
- params[:delivery_service_price].permit(:price, :cost_price, :tax_rate, :min_weight, :max_weight, :code)
39
+ params[:delivery_service_price].permit(:price, :cost_price, :tax_rate_id, :min_weight, :max_weight, :code)
40
40
  end
41
41
 
42
42
  end
@@ -53,7 +53,7 @@ class Shoppe::ProductsController < Shoppe::ApplicationController
53
53
  private
54
54
 
55
55
  def safe_params
56
- params[:product].permit(:product_category_id, :title, :sku, :permalink, :description, :short_description, :weight, :price, :cost_price, :tax_rate, :stock_control, :default_image_file, :data_sheet_file, :active, :featured, :in_the_box, :product_attributes_array => [:key, :value, :searchable, :public])
56
+ params[:product].permit(:product_category_id, :title, :sku, :permalink, :description, :short_description, :weight, :price, :cost_price, :tax_rate_id, :stock_control, :default_image_file, :data_sheet_file, :active, :featured, :in_the_box, :product_attributes_array => [:key, :value, :searchable, :public])
57
57
  end
58
58
 
59
59
  end
@@ -0,0 +1,47 @@
1
+ class Shoppe::TaxRatesController < Shoppe::ApplicationController
2
+
3
+ before_filter { @active_nav = :tax_rates }
4
+ before_filter { params[:id] && @tax_rate = Shoppe::TaxRate.find(params[:id]) }
5
+
6
+ def index
7
+ @tax_rates = Shoppe::TaxRate.ordered.all
8
+ end
9
+
10
+ def new
11
+ @tax_rate = Shoppe::TaxRate.new
12
+ render :action => "form"
13
+ end
14
+
15
+ def create
16
+ @tax_rate = Shoppe::TaxRate.new(safe_params)
17
+ if @tax_rate.save
18
+ redirect_to :tax_rates, :flash => {:notice => "Tax rate has been created successfully"}
19
+ else
20
+ render :action => "form"
21
+ end
22
+ end
23
+
24
+ def edit
25
+ render :action => "form"
26
+ end
27
+
28
+ def update
29
+ if @tax_rate.update(safe_params)
30
+ redirect_to [:edit, @tax_rate], :flash => {:notice => "Tax rate has been updated successfully"}
31
+ else
32
+ render :action => "form"
33
+ end
34
+ end
35
+
36
+ def destroy
37
+ @tax_rate.destroy
38
+ redirect_to :tax_rates, :flash => {:notice => "Tax rate has been removed successfully"}
39
+ end
40
+
41
+ private
42
+
43
+ def safe_params
44
+ params[:tax_rate].permit(:name, :rate)
45
+ end
46
+
47
+ end
@@ -0,0 +1,14 @@
1
+ module Shoppe
2
+ class Country < ActiveRecord::Base
3
+
4
+ # Set the table name
5
+ self.table_name = 'shoppe_countries'
6
+
7
+ # Relationships
8
+ has_many :orders, :dependent => :restrict_with_exception
9
+
10
+ # Scopes
11
+ scope :ordered, -> { order('shoppe_countries.name asc') }
12
+
13
+ end
14
+ end
@@ -5,11 +5,11 @@ class Shoppe::DeliveryServicePrice < ActiveRecord::Base
5
5
 
6
6
  # Relationships
7
7
  belongs_to :delivery_service, :class_name => 'Shoppe::DeliveryService'
8
+ belongs_to :tax_rate, :class_name => "Shoppe::TaxRate"
8
9
 
9
10
  # Validations
10
11
  validates :price, :numericality => true
11
12
  validates :cost_price, :numericality => true, :allow_blank => true
12
- validates :tax_rate, :numericality => true
13
13
  validates :min_weight, :numericality => true
14
14
  validates :max_weight, :numericality => true
15
15
 
@@ -16,6 +16,7 @@ class Shoppe::Order < ActiveRecord::Base
16
16
 
17
17
  # Relationships
18
18
  belongs_to :delivery_service, :class_name => 'Shoppe::DeliveryService'
19
+ belongs_to :country, :class_name => 'Shoppe::Country'
19
20
  belongs_to :accepter, :class_name => 'Shoppe::User', :foreign_key => 'accepted_by'
20
21
  belongs_to :rejecter, :class_name => 'Shoppe::User', :foreign_key => 'rejected_by'
21
22
  belongs_to :shipper, :class_name => 'Shoppe::User', :foreign_key => 'shipped_by'
@@ -188,7 +189,7 @@ class Shoppe::Order < ActiveRecord::Base
188
189
  def delivery_tax_amount
189
190
  @delivery_tax_amount ||= begin
190
191
  read_attribute(:delivery_tax_amount) ||
191
- (delivery_service_price ? delivery_price / BigDecimal(100) * delivery_service_price.tax_rate : 0.0) ||
192
+ (delivery_service_price && delivery_service_price.tax_rate ? delivery_price / BigDecimal(100) * delivery_service_price.tax_rate.rate : 0.0) ||
192
193
  0.0
193
194
  end
194
195
  end
@@ -197,7 +198,7 @@ class Shoppe::Order < ActiveRecord::Base
197
198
  def delivery_tax_rate
198
199
  @delivery_tax_rate ||= begin
199
200
  read_attribute(:delivery_tax_rate) ||
200
- delivery_service_price.try(:tax_rate) ||
201
+ delivery_service_price.try(:tax_rate).try(:rate) ||
201
202
  0.0
202
203
  end
203
204
  end
@@ -14,10 +14,11 @@ class Shoppe::OrderItem < ActiveRecord::Base
14
14
  # Set some values based on the selected product on validation
15
15
  before_validation do
16
16
  if self.product
17
- self.unit_price = self.product.price if self.unit_price.blank?
18
- self.unit_cost_price = self.product.cost_price if self.unit_cost_price.blank?
19
- self.tax_rate = self.product.tax_rate if self.tax_rate.blank?
20
- if unit_price_changed? || quantity_changed?
17
+ self.unit_price = self.product.price if self.unit_price.blank?
18
+ self.unit_cost_price = self.product.cost_price if self.unit_cost_price.blank?
19
+ self.tax_rate = self.product.tax_rate.rate if self.tax_rate.blank? && self.product.tax_rate
20
+
21
+ if unit_price_changed? || quantity_changed? || tax_rate_changed?
21
22
  self.tax_amount = (self.sub_total / BigDecimal(100)) * self.tax_rate
22
23
  end
23
24
 
@@ -12,6 +12,7 @@ class Shoppe::Product < ActiveRecord::Base
12
12
 
13
13
  # Relationships
14
14
  belongs_to :product_category, :class_name => 'Shoppe::ProductCategory'
15
+ belongs_to :tax_rate, :class_name => "Shoppe::TaxRate"
15
16
  has_many :order_items, :dependent => :restrict_with_exception, :class_name => 'Shoppe::OrderItem'
16
17
  has_many :orders, :through => :order_items, :class_name => 'Shoppe::Order'
17
18
  has_many :stock_level_adjustments, :dependent => :destroy
@@ -26,7 +27,6 @@ class Shoppe::Product < ActiveRecord::Base
26
27
  validates :weight, :numericality => true
27
28
  validates :price, :numericality => true
28
29
  validates :cost_price, :numericality => true, :allow_blank => true
29
- validates :tax_rate, :numericality => true
30
30
 
31
31
  # Set the permalink
32
32
  before_validation { self.permalink = self.title.parameterize if self.permalink.blank? && self.title.is_a?(String) }
@@ -0,0 +1,23 @@
1
+ module Shoppe
2
+ class TaxRate < ActiveRecord::Base
3
+
4
+ # Set the table name
5
+ self.table_name = 'shoppe_tax_rates'
6
+
7
+ # Validations
8
+ validates :name, :presence => true
9
+ validates :rate, :numericality => true
10
+
11
+ # Relationships
12
+ has_many :products, :dependent => :restrict_with_exception
13
+ has_many :delivery_service_prices, :dependent => :restrict_with_exception
14
+
15
+ # Scopes
16
+ scope :ordered, -> { order("shoppe_tax_rates.id")}
17
+
18
+ def description
19
+ "#{name} (#{rate}%)"
20
+ end
21
+
22
+ end
23
+ end
@@ -19,6 +19,7 @@
19
19
  %li= link_to "Products", [:products], :class => @active_nav == :products ? 'active' : ''
20
20
  %li= link_to "Product Categories", :product_categories, :class => @active_nav == :product_categories ? 'active' : ''
21
21
  %li= link_to "Delivery Services", [:delivery_services], :class => @active_nav == :delivery_services ? 'active' : ''
22
+ %li= link_to "Tax Rates", :tax_rates, :class => @active_nav == :tax_rates ? 'active' : ''
22
23
  %li= link_to "Users", [:users], :class => @active_nav == :users ? 'active' : ''
23
24
  %li= link_to "Logout", [:logout], :method => :delete
24
25
 
@@ -22,8 +22,8 @@
22
22
  %dt= f.label :cost_price
23
23
  %dd= f.text_field :cost_price
24
24
  %dl.third
25
- %dt= f.label :tax_rate
26
- %dd= f.text_field :tax_rate
25
+ %dt= f.label :tax_rate_id
26
+ %dd= f.collection_select :tax_rate_id, Shoppe::TaxRate.ordered, :id, :description, {:include_blank => true}, {:class => 'chosen-with-deselect', :data => {:placeholder => "No tax"}}
27
27
 
28
28
  %p.submit
29
29
  - unless @delivery_service_price.new_record?
@@ -19,7 +19,7 @@
19
19
  %dd= @order.address4
20
20
  %dt Postcode
21
21
  %dd= @order.postcode
22
- %dd= @order.country
22
+ %dd= @order.country.try(:name)
23
23
  .right
24
24
  %dl
25
25
  %dt E-Mail Address
@@ -76,8 +76,8 @@
76
76
  %dt= f.label :cost_price
77
77
  %dd= f.text_field :cost_price
78
78
  %dl.third
79
- %dt= f.label :tax_rate
80
- %dd= f.text_field :tax_rate
79
+ %dt= f.label :tax_rate_id
80
+ %dd= f.collection_select :tax_rate_id, Shoppe::TaxRate.ordered, :id, :description, {:include_blank => true}, {:class => 'chosen-with-deselect', :data => {:placeholder => "No tax"}}
81
81
 
82
82
  = field_set_tag "Website Properties" do
83
83
  .splitContainer
@@ -0,0 +1,22 @@
1
+ - @page_title = "Tax Rates"
2
+ = content_for :header do
3
+ %p.buttons= link_to "Back to tax rates", :tax_rates, :class => 'button'
4
+ %h2.tax_rates Tax Rates
5
+
6
+ = form_for @tax_rate do |f|
7
+ = f.error_messages
8
+ = field_set_tag "Rate Details" do
9
+ .splitContainer
10
+ %dl.half
11
+ %dt= f.label :name
12
+ %dd= f.text_field :name, :class => 'focus'
13
+ %dl.half
14
+ %dt= f.label :rate
15
+ %dd= f.text_field :rate
16
+
17
+
18
+ %p.submit
19
+ - unless @tax_rate.new_record?
20
+ %span.right= link_to "Delete", @tax_rate, :class => 'button purple', :method => :delete, :data => {:confirm => "Are you sure you wish to remove this tax_rate?"}
21
+ = f.submit :class => 'button green'
22
+ = link_to "Cancel", :tax_rates, :class => 'button'
@@ -0,0 +1,17 @@
1
+ - @page_title = "Tax Rates"
2
+
3
+ = content_for :header do
4
+ %p.buttons=link_to "New tax rate", :new_tax_rate, :class => 'button green'
5
+ %h2.tax_rates Tax Rates
6
+
7
+ .table
8
+ %table.data
9
+ %thead
10
+ %tr
11
+ %th Name
12
+ %th Rate
13
+ %tbody
14
+ - for tax_rate in @tax_rates
15
+ %tr
16
+ %td= link_to tax_rate.name, [:edit, tax_rate]
17
+ %td= tax_rate.rate
@@ -15,6 +15,7 @@ Shoppe::Engine.routes.draw do
15
15
  resources :delivery_services do
16
16
  resources :delivery_service_prices
17
17
  end
18
+ resources :tax_rates
18
19
  resources :users
19
20
  resources :attachments, :only => :destroy
20
21
  get 'login' => 'sessions#new'
@@ -0,0 +1,252 @@
1
+ AD AND Andorra EU .ad EUR
2
+ AE ARE United Arab Emirates AS .ae AED
3
+ AF AFG Afghanistan AS .af AFN
4
+ AG ATG Antigua and Barbuda NA .ag XCD
5
+ AI AIA Anguilla NA .ai XCD
6
+ AL ALB Albania EU .al ALL
7
+ AM ARM Armenia AS .am AMD
8
+ AO AGO Angola AF .ao AOA
9
+ AQ ATA Antarctica AN .aq
10
+ AR ARG Argentina SA .ar ARS
11
+ AS ASM American Samoa OC .as USD
12
+ AT AUT Austria EU .at EUR
13
+ AU AUS Australia OC .au AUD
14
+ AW ABW Aruba NA .aw AWG
15
+ AX ALA Aland Islands EU .ax EUR
16
+ AZ AZE Azerbaijan AS .az AZN
17
+ BA BIH Bosnia and Herzegovina EU .ba BAM
18
+ BB BRB Barbados NA .bb BBD
19
+ BD BGD Bangladesh AS .bd BDT
20
+ BE BEL Belgium EU .be EUR
21
+ BF BFA Burkina Faso AF .bf XOF
22
+ BG BGR Bulgaria EU .bg BGN
23
+ BH BHR Bahrain AS .bh BHD
24
+ BI BDI Burundi AF .bi BIF
25
+ BJ BEN Benin AF .bj XOF
26
+ BL BLM Saint Barthelemy NA .gp EUR
27
+ BM BMU Bermuda NA .bm BMD
28
+ BN BRN Brunei AS .bn BND
29
+ BO BOL Bolivia SA .bo BOB
30
+ BQ BES Bonaire, Saint Eustatius and Saba NA .bq USD
31
+ BR BRA Brazil SA .br BRL
32
+ BS BHS Bahamas NA .bs BSD
33
+ BT BTN Bhutan AS .bt BTN
34
+ BV BVT Bouvet Island AN .bv NOK
35
+ BW BWA Botswana AF .bw BWP
36
+ BY BLR Belarus EU .by BYR
37
+ BZ BLZ Belize NA .bz BZD
38
+ CA CAN Canada NA .ca CAD
39
+ CC CCK Cocos Islands AS .cc AUD
40
+ CD COD Democratic Republic of the Congo AF .cd CDF
41
+ CF CAF Central African Republic AF .cf XAF
42
+ CG COG Republic of the Congo AF .cg XAF
43
+ CH CHE Switzerland EU .ch CHF
44
+ CI CIV Ivory Coast AF .ci XOF
45
+ CK COK Cook Islands OC .ck NZD
46
+ CL CHL Chile SA .cl CLP
47
+ CM CMR Cameroon AF .cm XAF
48
+ CN CHN China AS .cn CNY
49
+ CO COL Colombia SA .co COP
50
+ CR CRI Costa Rica NA .cr CRC
51
+ CU CUB Cuba NA .cu CUP
52
+ CV CPV Cape Verde AF .cv CVE
53
+ CW CUW Curacao NA .cw ANG
54
+ CX CXR Christmas Island AS .cx AUD
55
+ CY CYP Cyprus EU .cy EUR
56
+ CZ CZE Czech Republic EU .cz CZK
57
+ DE DEU Germany EU .de EUR
58
+ DJ DJI Djibouti AF .dj DJF
59
+ DK DNK Denmark EU .dk DKK
60
+ DM DMA Dominica NA .dm XCD
61
+ DO DOM Dominican Republic NA .do DOP
62
+ DZ DZA Algeria AF .dz DZD
63
+ EC ECU Ecuador SA .ec USD
64
+ EE EST Estonia EU .ee EUR
65
+ EG EGY Egypt AF .eg EGP
66
+ EH ESH Western Sahara AF .eh MAD
67
+ ER ERI Eritrea AF .er ERN
68
+ ES ESP Spain EU .es EUR
69
+ ET ETH Ethiopia AF .et ETB
70
+ FI FIN Finland EU .fi EUR
71
+ FJ FJI Fiji OC .fj FJD
72
+ FK FLK Falkland Islands SA .fk FKP
73
+ FM FSM Micronesia OC .fm USD
74
+ FO FRO Faroe Islands EU .fo DKK
75
+ FR FRA France EU .fr EUR
76
+ GA GAB Gabon AF .ga XAF
77
+ GB GBR United Kingdom EU .uk GBP
78
+ GD GRD Grenada NA .gd XCD
79
+ GE GEO Georgia AS .ge GEL
80
+ GF GUF French Guiana SA .gf EUR
81
+ GG GGY Guernsey EU .gg GBP
82
+ GH GHA Ghana AF .gh GHS
83
+ GI GIB Gibraltar EU .gi GIP
84
+ GL GRL Greenland NA .gl DKK
85
+ GM GMB Gambia AF .gm GMD
86
+ GN GIN Guinea AF .gn GNF
87
+ GP GLP Guadeloupe NA .gp EUR
88
+ GQ GNQ Equatorial Guinea AF .gq XAF
89
+ GR GRC Greece EU .gr EUR
90
+ GS SGS South Georgia and the South Sandwich Islands AN .gs GBP
91
+ GT GTM Guatemala NA .gt GTQ
92
+ GU GUM Guam OC .gu USD
93
+ GW GNB Guinea-Bissau AF .gw XOF
94
+ GY GUY Guyana SA .gy GYD
95
+ HK HKG Hong Kong AS .hk HKD
96
+ HM HMD Heard Island and McDonald Islands AN .hm AUD
97
+ HN HND Honduras NA .hn HNL
98
+ HR HRV Croatia EU .hr HRK
99
+ HT HTI Haiti NA .ht HTG
100
+ HU HUN Hungary EU .hu HUF
101
+ ID IDN Indonesia AS .id IDR
102
+ IE IRL Ireland EU .ie EUR
103
+ IL ISR Israel AS .il ILS
104
+ IM IMN Isle of Man EU .im GBP
105
+ IN IND India AS .in INR
106
+ IO IOT British Indian Ocean Territory AS .io USD
107
+ IQ IRQ Iraq AS .iq IQD
108
+ IR IRN Iran AS .ir IRR
109
+ IS ISL Iceland EU .is ISK
110
+ IT ITA Italy EU .it EUR
111
+ JE JEY Jersey EU .je GBP
112
+ JM JAM Jamaica NA .jm JMD
113
+ JO JOR Jordan AS .jo JOD
114
+ JP JPN Japan AS .jp JPY
115
+ KE KEN Kenya AF .ke KES
116
+ KG KGZ Kyrgyzstan AS .kg KGS
117
+ KH KHM Cambodia AS .kh KHR
118
+ KI KIR Kiribati OC .ki AUD
119
+ KM COM Comoros AF .km KMF
120
+ KN KNA Saint Kitts and Nevis NA .kn XCD
121
+ KP PRK North Korea AS .kp KPW
122
+ KR KOR South Korea AS .kr KRW
123
+ XK XKX Kosovo EU EUR
124
+ KW KWT Kuwait AS .kw KWD
125
+ KY CYM Cayman Islands NA .ky KYD
126
+ KZ KAZ Kazakhstan AS .kz KZT
127
+ LA LAO Laos AS .la LAK
128
+ LB LBN Lebanon AS .lb LBP
129
+ LC LCA Saint Lucia NA .lc XCD
130
+ LI LIE Liechtenstein EU .li CHF
131
+ LK LKA Sri Lanka AS .lk LKR
132
+ LR LBR Liberia AF .lr LRD
133
+ LS LSO Lesotho AF .ls LSL
134
+ LT LTU Lithuania EU .lt LTL
135
+ LU LUX Luxembourg EU .lu EUR
136
+ LV LVA Latvia EU .lv LVL
137
+ LY LBY Libya AF .ly LYD
138
+ MA MAR Morocco AF .ma MAD
139
+ MC MCO Monaco EU .mc EUR
140
+ MD MDA Moldova EU .md MDL
141
+ ME MNE Montenegro EU .me EUR
142
+ MF MAF Saint Martin NA .gp EUR
143
+ MG MDG Madagascar AF .mg MGA
144
+ MH MHL Marshall Islands OC .mh USD
145
+ MK MKD Macedonia EU .mk MKD
146
+ ML MLI Mali AF .ml XOF
147
+ MM MMR Myanmar AS .mm MMK
148
+ MN MNG Mongolia AS .mn MNT
149
+ MO MAC Macao AS .mo MOP
150
+ MP MNP Northern Mariana Islands OC .mp USD
151
+ MQ MTQ Martinique NA .mq EUR
152
+ MR MRT Mauritania AF .mr MRO
153
+ MS MSR Montserrat NA .ms XCD
154
+ MT MLT Malta EU .mt EUR
155
+ MU MUS Mauritius AF .mu MUR
156
+ MV MDV Maldives AS .mv MVR
157
+ MW MWI Malawi AF .mw MWK
158
+ MX MEX Mexico NA .mx MXN
159
+ MY MYS Malaysia AS .my MYR
160
+ MZ MOZ Mozambique AF .mz MZN
161
+ NA NAM Namibia AF .na NAD
162
+ NC NCL New Caledonia OC .nc XPF
163
+ NE NER Niger AF .ne XOF
164
+ NF NFK Norfolk Island OC .nf AUD
165
+ NG NGA Nigeria AF .ng NGN
166
+ NI NIC Nicaragua NA .ni NIO
167
+ NL NLD Netherlands EU .nl EUR
168
+ NO NOR Norway EU .no NOK
169
+ NP NPL Nepal AS .np NPR
170
+ NR NRU Nauru OC .nr AUD
171
+ NU NIU Niue OC .nu NZD
172
+ NZ NZL New Zealand OC .nz NZD
173
+ OM OMN Oman AS .om OMR
174
+ PA PAN Panama NA .pa PAB
175
+ PE PER Peru SA .pe PEN
176
+ PF PYF French Polynesia OC .pf XPF
177
+ PG PNG Papua New Guinea OC .pg PGK
178
+ PH PHL Philippines AS .ph PHP
179
+ PK PAK Pakistan AS .pk PKR
180
+ PL POL Poland EU .pl PLN
181
+ PM SPM Saint Pierre and Miquelon NA .pm EUR
182
+ PN PCN Pitcairn OC .pn NZD
183
+ PR PRI Puerto Rico NA .pr USD
184
+ PS PSE Palestinian Territory AS .ps ILS
185
+ PT PRT Portugal EU .pt EUR
186
+ PW PLW Palau OC .pw USD
187
+ PY PRY Paraguay SA .py PYG
188
+ QA QAT Qatar AS .qa QAR
189
+ RE REU Reunion AF .re EUR
190
+ RO ROU Romania EU .ro RON
191
+ RS SRB Serbia EU .rs RSD
192
+ RU RUS Russia EU .ru RUB
193
+ RW RWA Rwanda AF .rw RWF
194
+ SA SAU Saudi Arabia AS .sa SAR
195
+ SB SLB Solomon Islands OC .sb SBD
196
+ SC SYC Seychelles AF .sc SCR
197
+ SD SDN Sudan AF .sd SDG
198
+ SS SSD South Sudan AF SSP
199
+ SE SWE Sweden EU .se SEK
200
+ SG SGP Singapore AS .sg SGD
201
+ SH SHN Saint Helena AF .sh SHP
202
+ SI SVN Slovenia EU .si EUR
203
+ SJ SJM Svalbard and Jan Mayen EU .sj NOK
204
+ SK SVK Slovakia EU .sk EUR
205
+ SL SLE Sierra Leone AF .sl SLL
206
+ SM SMR San Marino EU .sm EUR
207
+ SN SEN Senegal AF .sn XOF
208
+ SO SOM Somalia AF .so SOS
209
+ SR SUR Suriname SA .sr SRD
210
+ ST STP Sao Tome and Principe AF .st STD
211
+ SV SLV El Salvador NA .sv USD
212
+ SX SXM Sint Maarten NA .sx ANG
213
+ SY SYR Syria AS .sy SYP
214
+ SZ SWZ Swaziland AF .sz SZL
215
+ TC TCA Turks and Caicos Islands NA .tc USD
216
+ TD TCD Chad AF .td XAF
217
+ TF ATF French Southern Territories AN .tf EUR
218
+ TG TGO Togo AF .tg XOF
219
+ TH THA Thailand AS .th THB
220
+ TJ TJK Tajikistan AS .tj TJS
221
+ TK TKL Tokelau OC .tk NZD
222
+ TL TLS East Timor OC .tl USD
223
+ TM TKM Turkmenistan AS .tm TMT
224
+ TN TUN Tunisia AF .tn TND
225
+ TO TON Tonga OC .to TOP
226
+ TR TUR Turkey AS .tr TRY
227
+ TT TTO Trinidad and Tobago NA .tt TTD
228
+ TV TUV Tuvalu OC .tv AUD
229
+ TW TWN Taiwan AS .tw TWD
230
+ TZ TZA Tanzania AF .tz TZS
231
+ UA UKR Ukraine EU .ua UAH
232
+ UG UGA Uganda AF .ug UGX
233
+ UM UMI United States Minor Outlying Islands OC .um USD
234
+ US USA United States NA .us USD
235
+ UY URY Uruguay SA .uy UYU
236
+ UZ UZB Uzbekistan AS .uz UZS
237
+ VA VAT Vatican EU .va EUR
238
+ VC VCT Saint Vincent and the Grenadines NA .vc XCD
239
+ VE VEN Venezuela SA .ve VEF
240
+ VG VGB British Virgin Islands NA .vg USD
241
+ VI VIR U.S. Virgin Islands NA .vi USD
242
+ VN VNM Vietnam AS .vn VND
243
+ VU VUT Vanuatu OC .vu VUV
244
+ WF WLF Wallis and Futuna OC .wf XPF
245
+ WS WSM Samoa OC .ws WST
246
+ YE YEM Yemen AS .ye YER
247
+ YT MYT Mayotte AF .yt EUR
248
+ ZA ZAF South Africa AF .za ZAR
249
+ ZM ZMB Zambia AF .zm ZMK
250
+ ZW ZWE Zimbabwe AF .zw ZWL
251
+ CS SCG Serbia and Montenegro EU .cs RSD
252
+ AN ANT Netherlands Antilles NA .an ANG