shoppe 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
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