diff --git a/Gemfile b/Gemfile
index 49dd319c2..7d42b0589 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,6 +1,6 @@
source 'https://rubygems.org'
-gem 'rails', '~> 4.2'
+gem 'rails', '4.2.4'
gem 'bcrypt'
gem 'jquery-rails'
diff --git a/Gemfile.lock b/Gemfile.lock
index bb8dbe5ad..a593ab9d0 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,43 +1,43 @@
GEM
remote: https://rubygems.org/
specs:
- actionmailer (4.2.5)
- actionpack (= 4.2.5)
- actionview (= 4.2.5)
- activejob (= 4.2.5)
+ actionmailer (4.2.4)
+ actionpack (= 4.2.4)
+ actionview (= 4.2.4)
+ activejob (= 4.2.4)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
- actionpack (4.2.5)
- actionview (= 4.2.5)
- activesupport (= 4.2.5)
+ actionpack (4.2.4)
+ actionview (= 4.2.4)
+ activesupport (= 4.2.4)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
- actionview (4.2.5)
- activesupport (= 4.2.5)
+ actionview (4.2.4)
+ activesupport (= 4.2.4)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
- activejob (4.2.5)
- activesupport (= 4.2.5)
+ activejob (4.2.4)
+ activesupport (= 4.2.4)
globalid (>= 0.3.0)
- activemodel (4.2.5)
- activesupport (= 4.2.5)
+ activemodel (4.2.4)
+ activesupport (= 4.2.4)
builder (~> 3.1)
- activerecord (4.2.5)
- activemodel (= 4.2.5)
- activesupport (= 4.2.5)
+ activerecord (4.2.4)
+ activemodel (= 4.2.4)
+ activesupport (= 4.2.4)
arel (~> 6.0)
- activesupport (4.2.5)
+ activesupport (4.2.4)
i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
arel (6.0.3)
- ast (2.1.0)
+ ast (2.2.0)
axlsx (2.0.1)
htmlentities (~> 4.3.1)
nokogiri (>= 1.4.1)
@@ -50,13 +50,15 @@ GEM
cocoon (1.2.6)
codeclimate-test-reporter (0.4.8)
simplecov (>= 0.7.1, < 1.0.0)
- coffee-rails (4.1.0)
+ coffee-rails (4.1.1)
coffee-script (>= 2.2.0)
- railties (>= 4.0.0, < 5.0)
+ railties (>= 4.0.0, < 5.1.x)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.10.0)
+ commonjs (0.2.7)
+ concurrent-ruby (1.0.0)
countries (1.2.2)
currencies (~> 0.4.2)
i18n_data (~> 0.7.0)
@@ -64,7 +66,7 @@ GEM
countries (~> 1.2.0)
sort_alphabetical (~> 1.0)
currencies (0.4.2)
- dalli (2.7.4)
+ dalli (2.7.5)
date_validator (0.8.1)
activemodel
docile (1.1.5)
@@ -82,7 +84,7 @@ GEM
execjs (2.6.0)
fakeredis (0.5.0)
redis (~> 3.0)
- gli (2.13.3)
+ gli (2.13.4)
globalid (0.3.6)
activesupport (>= 4.1.0)
highline (1.7.8)
@@ -90,7 +92,7 @@ GEM
http-cookie (1.0.2)
domain_name (~> 0.5)
i18n (0.7.0)
- i18n-tasks (0.9.1)
+ i18n-tasks (0.9.2)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
easy_translate (>= 0.5.0)
@@ -101,15 +103,22 @@ GEM
term-ansicolor (>= 1.3.2)
terminal-table (>= 1.5.1)
i18n_data (0.7.0)
- jquery-rails (4.0.5)
+ jquery-rails (4.1.0)
rails-dom-testing (~> 1.0)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json (1.8.3)
+ less (2.6.0)
+ commonjs (~> 0.2.7)
+ less-rails (2.7.1)
+ actionpack (>= 4.0)
+ less (~> 2.6.0)
+ sprockets (> 2, < 4)
+ tilt
libv8 (3.16.14.13)
lightbox2-rails (2.7.1)
railties (>= 3.1)
- localeapp (0.9.3)
+ localeapp (1.0.2)
gli
i18n
json
@@ -120,15 +129,15 @@ GEM
nokogiri (>= 1.5.9)
mail (2.6.3)
mime-types (>= 1.16, < 3)
- mime-types (2.6.2)
- mini_portile (0.6.2)
+ mime-types (2.99)
+ mini_portile2 (2.0.0)
minitest (5.8.3)
mono_logger (1.1.0)
multi_json (1.11.2)
mysql2 (0.3.20)
netrc (0.11.0)
- nokogiri (1.6.6.4)
- mini_portile (~> 0.6.0)
+ nokogiri (1.6.7.1)
+ mini_portile2 (~> 2.0.0.rc2)
parser (2.2.3.0)
ast (>= 1.1, < 3.0)
pdfkit (0.8.2)
@@ -137,16 +146,16 @@ GEM
rack
rack-test (0.6.3)
rack (>= 1.0)
- rails (4.2.5)
- actionmailer (= 4.2.5)
- actionpack (= 4.2.5)
- actionview (= 4.2.5)
- activejob (= 4.2.5)
- activemodel (= 4.2.5)
- activerecord (= 4.2.5)
- activesupport (= 4.2.5)
+ rails (4.2.4)
+ actionmailer (= 4.2.4)
+ actionpack (= 4.2.4)
+ actionview (= 4.2.4)
+ activejob (= 4.2.4)
+ activemodel (= 4.2.4)
+ activerecord (= 4.2.4)
+ activesupport (= 4.2.4)
bundler (>= 1.3.0, < 2.0)
- railties (= 4.2.5)
+ railties (= 4.2.4)
sprockets-rails
rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha)
@@ -156,17 +165,17 @@ GEM
rails-deprecated_sanitizer (>= 1.0.1)
rails-html-sanitizer (1.0.2)
loofah (~> 2.0)
- railties (4.2.5)
- actionpack (= 4.2.5)
- activesupport (= 4.2.5)
+ railties (4.2.4)
+ actionpack (= 4.2.4)
+ activesupport (= 4.2.4)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
- rake (10.4.2)
+ rake (10.5.0)
redis (3.2.2)
redis-namespace (1.5.2)
redis (~> 3.0, >= 3.0.4)
ref (2.0.0)
- request_store (1.2.1)
+ request_store (1.3.0)
resque (1.25.2)
mono_logger (~> 1.0)
multi_json (~> 1.0)
@@ -187,19 +196,19 @@ GEM
nokogiri
rubyzip
spreadsheet (> 0.6.4)
- ruby-ole (1.2.11.8)
+ ruby-ole (1.2.12)
rubyzip (1.0.0)
- sass (3.4.19)
+ sass (3.4.21)
sass-rails (5.0.4)
railties (>= 4.0.0, < 5.0)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
- simple_form (3.2.0)
- actionpack (~> 4.0)
- activemodel (~> 4.0)
- simplecov (0.10.0)
+ simple_form (3.2.1)
+ actionpack (> 4, < 5.1)
+ activemodel (> 4, < 5.1)
+ simplecov (0.11.1)
docile (~> 1.1.0)
json (~> 1.8)
simplecov-html (~> 0.10.0)
@@ -210,14 +219,15 @@ GEM
tilt (>= 1.3, < 3)
sort_alphabetical (1.0.2)
unicode_utils (>= 1.2.2)
- spreadsheet (1.0.9)
+ spreadsheet (1.1.1)
ruby-ole (>= 1.0)
- sprockets (3.4.0)
+ sprockets (3.5.2)
+ concurrent-ruby (~> 1.0)
rack (> 1, < 3)
- sprockets-rails (2.3.3)
- actionpack (>= 3.0)
- activesupport (>= 3.0)
- sprockets (>= 2.8, < 4.0)
+ sprockets-rails (3.0.0)
+ actionpack (>= 4.0)
+ activesupport (>= 4.0)
+ sprockets (>= 3.0.0)
term-ansicolor (1.3.2)
tins (~> 1.0)
terminal-table (1.5.2)
@@ -227,15 +237,15 @@ GEM
thor (0.19.1)
thread (0.2.2)
thread_safe (0.3.5)
- tilt (2.0.1)
- tins (1.7.0)
+ tilt (2.0.2)
+ tins (1.8.1)
turbolinks (2.5.3)
coffee-rails
- twitter-bootstrap-rails (3.2.0)
- actionpack (~> 4.1)
- execjs (~> 2.2)
- rails (~> 4.1)
- railties (~> 4.1)
+ twitter-bootstrap-rails (3.2.2)
+ actionpack (>= 3.1)
+ execjs (>= 2.2.2, >= 2.2)
+ less-rails (>= 2.5.0)
+ railties (>= 3.1)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (2.7.2)
@@ -247,7 +257,7 @@ GEM
unicode_utils (1.4.0)
vegas (0.1.11)
rack (>= 1.0.0)
- wicked_pdf (1.0.1)
+ wicked_pdf (1.0.3)
ya2yaml (0.31)
PLATFORMS
@@ -272,7 +282,7 @@ DEPENDENCIES
minitest
mysql2 (~> 0.3.18)
pdfkit
- rails (~> 4.2)
+ rails (= 4.2.4)
rake
request_store
resque
diff --git a/app/assets/stylesheets/static/pupesoft.scss b/app/assets/stylesheets/static/pupesoft.scss
index f1c3dccf0..f8f1798e0 100644
--- a/app/assets/stylesheets/static/pupesoft.scss
+++ b/app/assets/stylesheets/static/pupesoft.scss
@@ -267,3 +267,8 @@ table.responsive td input[type=text] {
width: 70%;
}
}
+
+.fixed-height {
+ max-height: 200px;
+ overflow-y: scroll;
+}
diff --git a/app/assets/stylesheets/static/pupesoft_legacy.css b/app/assets/stylesheets/static/pupesoft_legacy.css
index a9d9e2943..ff84b2402 100644
--- a/app/assets/stylesheets/static/pupesoft_legacy.css
+++ b/app/assets/stylesheets/static/pupesoft_legacy.css
@@ -72,3 +72,8 @@ ul.list-unstyled {
.del {
text-decoration: line-through;
}
+
+.fixed-height {
+ max-height: 200px;
+ overflow-y: scroll;
+}
diff --git a/app/classes/postal_official_legend.rb b/app/classes/postal_official_legend.rb
new file mode 100644
index 000000000..fd13e5e82
--- /dev/null
+++ b/app/classes/postal_official_legend.rb
@@ -0,0 +1,246 @@
+class PostalOfficialLegend
+ def self.options
+ [
+ [ "Pupesoft / Itella", [
+ [ "Itella Express City 00", "Express City 00" ],
+ [ "Itella Express Morning 9", "Express Morning 9" ],
+ [ "Itella Express Business Day 14", "Express Business Day 14" ],
+ [ "Itella Express Point 00/16", "Express Point 00/16" ],
+ [ "Itella Express Flex 21", "Express Flex 21" ],
+ [ "Itella Economy 16", "Economy 16" ],
+ [ "Itella Customer Return", "Customer Return" ],
+ [ "Itella Undelivered Shipment", "Undelivered Shipment" ],
+ [ "Itella Lisäarvokuljetus", "Lisäarvokuljetus" ],
+ [ "Itella Priority Ulkomaan lähetys", "Priority Ulkomaa" ]
+ ]],
+ [ "Unifaun / Itella", [
+ [ "Itella Economy Letter", "ITELLAMAILEC" ],
+ [ "Itella Economy Parcel", "IT16" ],
+ [ "Itella Express Business Day", "IT14" ],
+ [ "Itella Express Business Day kuljetusyksikkö", "ITKY14" ],
+ [ "Itella Express Business Day pallet (Ulkomaa)", "ITKY14I" ],
+ [ "Itella Express Business Day parcel (Ulkomaa)", "IT14I" ],
+ [ "Itella Express City", "ITEXPC" ],
+ [ "Itella Express City kuljetusyksikkö", "ITKYEXPC" ],
+ [ "Itella Express Flex", "IT21" ],
+ [ "Itella Express Flex kuljetusyksikkö", "ITKY21" ],
+ [ "Itella Express Morning", "IT09" ],
+ [ "Itella Express Morning kuljetusyksikkö", "ITKY09" ],
+ [ "Itella Logistics Oy, Kappaletavara", "TPSTD" ],
+ [ "Itella Logistics Oy, Kotimaan Rahti", "ITELLALOGKR" ],
+ [ "Itella Priority Letter", "ITELLAMAILPR" ],
+ [ "Itella Priority Parcel", "ITPR" ],
+ [ "Itella SmartPOST", "ITSP" ],
+ [ "Itella VAK/ADR", "ITVAK" ],
+ [ "Itella VAK/ADR kuljetusyksikkö", "ITKYVAK" ]
+ ]],
+ [ "Unifaun / Bring", [
+ [ "Bring CarryOn Budget", "PNL359" ],
+ [ "Bring CarryOn Business", "PNL330" ],
+ [ "Bring CarryOn Business 09.00", "PNL335" ],
+ [ "Bring CarryOn Business BulkReturn", "PNL333" ],
+ [ "Bring CarryOn Business BulkSplit", "PNL332" ],
+ [ "Bring CarryOn Business BulkSplit 09.00", "PNL334" ],
+ [ "Bring CarryOn Business Pallet", "PNL336" ],
+ [ "Bring CarryOn Business Pallet 09.00", "PNL339" ],
+ [ "Bring CarryOn Business Return", "PNL331" ],
+ [ "Bring CarryOn HomeShopping", "PNL340" ],
+ [ "Bring CarryOn HomeShopping BulkReturn", "PNL343" ],
+ [ "Bring CarryOn HomeShopping BulkSplit", "PNL342" ],
+ [ "Bring CarryOn HomeShopping BulkSplit Home", "PNL349" ],
+ [ "Bring CarryOn HomeShopping BulkSplit Mini", "PNL345" ],
+ [ "Bring CarryOn HomeShopping Return", "PNL341" ],
+ [ "Bring CarryOn Waybill", "PNLWAY" ],
+ [ "Bring Express Business Distribution", "BOXBD" ],
+ [ "Bring Express Business Distribution Pallet", "BOXBDP" ],
+ [ "Bring Express Courier Ad-Hoc", "BOXCA" ],
+ [ "Bring Express Courier Distribution", "BOXCD" ],
+ [ "Bring Express Home Delivery", "BOXHD" ],
+ [ "Bring Express Home Delivery Return", "BOXHDR" ],
+ [ "Bring Express QuickPack", "BOXQP" ],
+ [ "Bring Express Store Home Delivery", "BOXSHD" ],
+ [ "Bring Express Store Home Delivery Return", "BOXSHDR" ]
+ ]],
+ [ "Unifaun / Dachser", [
+ [ "Dachser Targofix", "DACTFIX" ],
+ [ "Dachser Targofix 10:00", "DACTFIX10" ],
+ [ "Dachser Targofix 12:00", "DACTFIX12" ],
+ [ "Dachser Targoflex", "DACTFLEX" ],
+ [ "Dachser Targospeed", "DACTSPEED" ],
+ [ "Dachser Targospeed 10:00", "DACTSPEED10" ],
+ [ "Dachser Targospeed 12:00", "DACTSPEED12" ],
+ [ "Dachser Targospeed Plus", "DACTSPEEDPLUS" ]
+ ]],
+ [ "Unifaun / DANX", [
+ [ "DANX", "DANXSTD" ]
+ ]],
+ [ "Unifaun / DB Schenker", [
+ [ "DB SCHENKER Express (Finland)", "SBTLFIEXP" ],
+ [ "DB SCHENKER Finland System", "SBTLFISY" ],
+ [ "DB SCHENKERbudget", "BBU" ],
+ [ "DB SCHENKERcoldsped - Europa", "BCSI" ],
+ [ "DB SCHENKERcoldsped - Sverige", "BCS" ],
+ [ "DB SCHENKERdirect", "BDI" ],
+ [ "DB SCHENKERparcel", "BPA" ],
+ [ "DB SCHENKERprivpak - Hem Dag (utan avisering och kvittens)", "BPHDP" ],
+ [ "DB SCHENKERprivpak - Hem Dag med avisering (och kvittens) (Paket)", "BPHDAP" ],
+ [ "DB SCHENKERprivpak - Hem Kväll med avisering (och kvittens)", "BPHKAP" ],
+ [ "DB SCHENKERprivpak - Ombud Standard (1 kolli, <20 kg)", "BHP" ],
+ [ "DB SCHENKERprivpak - Terminal", "BPOSG" ],
+ [ "DB SCHENKERprivpak - Till Jobbet", "BPTJP" ],
+ [ "DB SCHENKERsystem", "BCF" ]
+ ]],
+ [ "Unifaun / DHL", [
+ [ "DHL Euroconnect", "ASU" ],
+ [ "DHL Euroconnect Plus", "ASUP" ],
+ [ "DHL Express 09:00 (Tullinalainen)", "DASECD" ],
+ [ "DHL Express 09:00 (Tullivapaa)", "DASE" ],
+ [ "DHL Express 10:30 (Tullinalainen)", "DATDM" ],
+ [ "DHL Express 10:30 (Tullivapaa)", "DATDL" ],
+ [ "DHL Express 12:00 (Tullinalainen)", "DAMECD" ],
+ [ "DHL Express 12:00 (Tullivapaa)", "DAME" ],
+ [ "DHL Express Envelope (Tullivapaa)", "DAXPD" ],
+ [ "DHL Express Worldwide (Kotimaa)", "DADOM" ],
+ [ "DHL Express Worldwide (Tullinalainen)", "DAWPX" ],
+ [ "DHL Express Worldwide (Tullivapaa EU:ssa)", "DAECX" ],
+ [ "DHL Express Worldwide (Tullivapaa, Ei-EU)", "DADOX" ],
+ [ "DHL Freight Domestic EE", "DHLFREIGHTESTDOM" ],
+ [ "DHL Freight Euroconnect EE", "DHLFREIGHTESTEC" ],
+ [ "DHL Freight Euroconnect FI", "DHLFREIGHTFIEC" ],
+ [ "DHL Freight Kotimaa", "DHLFREIGHTFIKT" ],
+ [ "DHL Global Forwarding Air Freight", "DGFAIR" ],
+ [ "DHL Global Forwarding Air Freight PLUS", "DGFAIRPLUS" ],
+ [ "DHL Paket", "AEX" ],
+ [ "DHL Pall", "ASP2" ],
+ [ "DHL Parti", "ASWP2" ],
+ [ "DHL Service Point", "ASPO" ],
+ [ "DHL Service Point C.O.D.", "ASPOC" ],
+ [ "DHL Service Point Retur", "ASPOR" ],
+ [ "DHL Stycke", "ASWS2" ],
+ [ "DHL Swednet Partigods", "ASWP" ],
+ [ "DHL Swednet Styckegods", "ASWS" ]
+ ]],
+ [ "Unifaun / DSV", [
+ [ "DSV Road Kappaletavara", "DSVFIGRP" ],
+ [ "DSV Road Osakuorma", "DSVFIFULL" ]
+ ]],
+ [ "Unifaun / Fennoway", [
+ [ "Fennoway Fennorahti", "FENNORAHTI" ]
+ ]],
+ [ "Unifaun / GLS", [
+ [ "GLS Suomi INTERNATIONAL", "GLSFIINT" ]
+ ]],
+ [ "Unifaun / Kaukokiito", [
+ [ "Kaukokiito", "KKSTD" ]
+ ]],
+ [ "Unifaun / Kiitolinja", [
+ [ "KIITOLINJA kappaletavara", "KLGRP" ]
+ ]],
+ [ "Unifaun / KN Road", [
+ [ "KN Road", "KUEHNENAGELROAD" ]
+ ]],
+ [ "Unifaun / Tyvi", [
+ [ "Kuljetusliike Tyvi Oy", "KTYVI" ]
+ ]],
+ [ "Unifaun / Matkahuolto", [
+ [ "Matkahuolto Ahvenanmaan Jakopaketti", "MH68" ],
+ [ "Matkahuolto Baltian Paketti", "MH63" ],
+ [ "Matkahuolto Bussipaketti", "MH10" ],
+ [ "Matkahuolto Dokumenttikuori", "MH43" ],
+ [ "Matkahuolto Jakopaketti/Paikallispaketti", "MH3050" ],
+ [ "Matkahuolto Lavarahti", "MH57" ],
+ [ "Matkahuolto Lähellä-paketin palautus", "MH81" ],
+ [ "Matkahuolto Lähellä-paketti", "MH80" ],
+ [ "Matkahuolto Mannermaan Jakopaketti", "MH75" ],
+ [ "Matkahuolto Mannermaan Paketti", "MH74" ],
+ [ "Matkahuolto Pikapaketti", "MH20" ],
+ [ "Matkahuolto Postaalipaketti", "MH82" ],
+ [ "Matkahuolto Postaalipaketti palautus", "MH83" ],
+ [ "Matkahuolto Rahtipussi", "MH40" ],
+ [ "Matkahuolto Rahtipussi jakopaketti", "MH42" ]
+ ]],
+ [ "Unifaun / Neutraali", [
+ [ "Neutraali Kappaletavarapalvelu (osoitekortti + rahtikirja)", "FREEG" ],
+ [ "Neutraali Kappaletavarapalvelu (osoitekortti + rahtikirja): Transpori Oy", "FREEG_793" ],
+ [ "Neutraali Kappaletavarapalvelu (osoitekortti + rahtikirja): AJ Laine Oy", "FREEG_794" ],
+ [ "Neutraali Kirjepalvelu", "FREEB" ],
+ [ "Neutraali pakettipalvelu (osoitekortti)", "FREEP" ]
+ ]],
+ [ "Unifaun / Posten Brev", [
+ [ "Posten Brev - Brevpostförskott", "PAF" ],
+ [ "Posten Brev - Express (kotimaa)", "BEXPD" ],
+ [ "Posten Brev - Normaali", "BREV" ],
+ [ "Posten Brev - Priority+", "BEXPI" ],
+ [ "Posten Brev - Värde", "BVAL" ],
+ [ "Posten Brev Kirjattu kirje (BREKD)", "BREKD" ],
+ [ "Posten Brev Kirjattu kirje (BREKI)", "BREKI" ],
+ [ "Posten EMS (brev/dokument)", "EMSD2" ],
+ [ "Posten EMS (paket/varor)", "EMSP2" ]
+ ]],
+ [ "Unifaun / PostNord", [
+ [ "PostNord DPD Classic (Suomi)", "DPDFI" ],
+ [ "PostNord Logistics DPD Företagspaket", "P15" ],
+ [ "PostNord Logistics DPD Företagspaket 12.00", "P14" ],
+ [ "PostNord Logistics DPD Utrikes", "DPD" ],
+ [ "PostNord Logistics Express - Express 07.00", "P42" ],
+ [ "PostNord Logistics Hempaket", "P32" ],
+ [ "PostNord Logistics Hjemlevering (Norge)", "DTPGHD" ],
+ [ "PostNord Logistics InNight", "H48" ],
+ [ "PostNord Logistics Kundretur", "P31" ],
+ [ "PostNord Logistics MyPack", "P19" ],
+ [ "PostNord Logistics MyPack (Suomi)", "P19FI" ],
+ [ "PostNord Logistics MyPack (Norja)", "P19NO" ],
+ [ "PostNord Logistics MyPack return", "P24" ],
+ [ "PostNord Logistics MyPack return (Suomi)", "P24FI" ],
+ [ "PostNord Logistics MyPack Return (Norja)", "P24NO" ],
+ [ "PostNord Logistics PALL.ETT", "P52" ],
+ [ "PostNord Logistics Partifrakt (Norja)", "DTPGPF" ],
+ [ "PostNord Logistics Postpaket Utrikes", "P91" ],
+ [ "PostNord Logistics Stykkgods (Norja)", "DTPGSG" ]
+ ]],
+ [ "Unifaun / Privpak", [
+ [ "Privpak Finland (normaali & palautus)", "PPFITRRET" ],
+ [ "Privpak Finland (normaali)", "PPFITR" ]
+ ]],
+ [ "Unifaun / R & P", [
+ [ "R & P Kuljetus Pakettipalvelu", "RPPP" ]
+ ]],
+ [ "Unifaun / TK Logistik", [
+ [ "TK Logistik Gods", "TKLOGGODS" ]
+ ]],
+ [ "Unifaun / TNT", [
+ [ "TNT 08:00 Express (Domestic Docs)", "TNT08DOMD" ],
+ [ "TNT 08:00 Express (Domestic Non Docs)", "TNT08DOMN" ],
+ [ "TNT 09:00 Express (Docs)", "TNT09D" ],
+ [ "TNT 09:00 Express (Domestic Docs)", "TNT09DOMD" ],
+ [ "TNT 09:00 Express (Domestic Non Docs)", "TNT09DOMN" ],
+ [ "TNT 09:00 Express (Domestic)", "TNT09" ],
+ [ "TNT 09:00 Express (Non Docs)", "TNT09N" ],
+ [ "TNT 10:00 Express (Docs)", "TNT10D" ],
+ [ "TNT 10:00 Express (Domestic Docs)", "TNT10DOMD" ],
+ [ "TNT 10:00 Express (Domestic Non Docs)", "TNT10DOMN" ],
+ [ "TNT 10:00 Express (Domestic)", "TNT10" ],
+ [ "TNT 10:00 Express (Non Docs)", "TNT10N" ],
+ [ "TNT 12:00 Economy Express (Non Docs)", "TNT412" ],
+ [ "TNT 12:00 Express (Docs)", "TNT12D" ],
+ [ "TNT 12:00 Express (Domestic Docs)", "TNT12DOMD" ],
+ [ "TNT 12:00 Express (Domestic Non Docs)", "TNT12DOMN" ],
+ [ "TNT 12:00 Express (Domestic)", "TNT12" ],
+ [ "TNT 12:00 Express (Non Docs)", "TNT12N" ],
+ [ "TNT Economy Express (Non Docs)", "TNT48N" ],
+ [ "TNT Express (Docs)", "TNT15D" ],
+ [ "TNT Express (Domestic Docs)", "TNT15DOMD" ],
+ [ "TNT Express (Domestic Non Docs)", "TNT15DOMN" ],
+ [ "TNT Express (Domestic)", "TNT15" ],
+ [ "TNT Express (Non Docs)", "TNT15N" ],
+ [ "TNT Special Economy Express", "TNT728" ]
+ ]],
+ [ "Unifaun / UPK", [
+ [ "Uudenmaan Pikakuljetus Oy Erikoisaikataulu", "UPKE" ],
+ [ "Uudenmaan Pikakuljetus Oy Kotijakelu", "UPKK" ],
+ [ "Uudenmaan Pikakuljetus Oy Normal 24h", "UPK24" ],
+ [ "Uudenmaan Pikakuljetus Oy Normal 24h AVI", "UPK24A" ]
+ ]]
+ ]
+ end
+end
diff --git a/app/controllers/administration/delivery_methods_controller.rb b/app/controllers/administration/delivery_methods_controller.rb
new file mode 100644
index 000000000..55deb5765
--- /dev/null
+++ b/app/controllers/administration/delivery_methods_controller.rb
@@ -0,0 +1,105 @@
+class Administration::DeliveryMethodsController < AdministrationController
+ def index
+ @delivery_methods = DeliveryMethod.search_like(search_params).order(order_params)
+ end
+
+ def show
+ render :edit
+ end
+
+ def edit
+ end
+
+ def new
+ @delivery_method = DeliveryMethod.new
+ render :edit
+ end
+
+ def create
+ @delivery_method = DeliveryMethod.new delivery_method_params
+
+ if @delivery_method.save
+ redirect_to delivery_methods_path, notice: t('.create_success')
+ else
+ render :edit
+ end
+ end
+
+ def update
+ if @delivery_method.update delivery_method_params
+
+ msg = []
+ msg << t('.update_success')
+
+ if @delivery_method.flash_notice.present?
+ msg << @delivery_method.flash_notice
+ end
+
+ redirect_to delivery_methods_path, notice: msg.join(', ')
+ else
+ render :edit
+ end
+ end
+
+ def destroy
+ if @delivery_method.destroy
+ redirect_to delivery_methods_path, notice: t('.destroy_success')
+ else
+ render :edit
+ end
+ end
+
+ private
+ def delivery_method_params
+ alustat = params[:delivery_method][:sallitut_alustat]
+ params[:delivery_method][:sallitut_alustat] = alustat.reject(&:empty?).join(',') if alustat
+
+ params.require(:delivery_method).permit(
+ :aktiivinen_kuljetus, :aktiivinen_kuljetus_kansallisuus, :ei_pakkaamoa,
+ :erikoispakkaus_kielto, :erilliskasiteltavakulu, :erittely, :extranet,
+ :jarjestys, :jvkielto, :jvkulu, :kauppatapahtuman_luonne, :kontti,
+ :kuljetusmuoto, :kuljetusvakuutus, :kuljetusvakuutus_tuotenumero,
+ :kuljetusvakuutus_tyyppi, :kuljyksikko, :kuluprosentti, :lahdon_selite,
+ :lajittelupiste, :lauantai, :lisakulu, :lisakulu_summa, :logy_rahtikirjanumerot,
+ :maa_maara, :merahti, :nouto, :osoitelappu, :poistumistoimipaikka_koodi,
+ :rahdinkuljettaja, :rahti_tuotenumero, :rahtikirja, :rahtikirjakopio_email,
+ :sallitut_alustat, :sallitut_maat, :selite, :sisamaan_kuljetus,
+ :sisamaan_kuljetus_kansallisuus, :sisamaan_kuljetusmuoto, :sopimusnro,
+ :toim_maa, :toim_nimi, :toim_nimitark, :toim_osoite, :toim_ovttunnus,
+ :toim_postino, :toim_postitp, :tulostustapa, :ulkomaanlisa, :uudet_pakkaustiedot,
+ :vaihtoehtoinen_vak_toimitustapa, :vak_kielto, :virallinen_selite,
+ location_ids: [],
+ translations_attributes: [:id, :kieli, :selitetark, :_destroy],
+ departures_attributes: [
+ :id,
+ :kerailyn_aloitusaika,
+ :lahdon_viikonpvm,
+ :lahdon_kellonaika,
+ :viimeinen_tilausaika,
+ :terminaalialue,
+ :asiakasluokka,
+ :varasto,
+ :aktiivi,
+ :ohjausmerkki,
+ :_destroy,
+ alkupvm: [:day, :month, :year],
+ ],
+ )
+ end
+
+ def searchable_columns
+ [
+ :jarjestys,
+ :selite,
+ :sopimusnro,
+ ]
+ end
+
+ def find_resource
+ @delivery_method = DeliveryMethod.find params[:id]
+ end
+
+ def sortable_columns
+ searchable_columns
+ end
+end
diff --git a/app/helpers/administration/departure_helper.rb b/app/helpers/administration/departure_helper.rb
new file mode 100644
index 000000000..fb76e76e3
--- /dev/null
+++ b/app/helpers/administration/departure_helper.rb
@@ -0,0 +1,35 @@
+module Administration::DepartureHelper
+ ROOT = 'administration.delivery_methods.departures'
+
+ def day_of_the_week_options
+ Date::DAYS_INTO_WEEK.inject([]) do |result, day|
+ index = day.first == :sunday ? 0 : day.second + 1
+ result << [t("#{ROOT}.day_of_the_week_options.#{day.first}"), index]
+ end
+ end
+
+ def terminal_area_options
+ Keyword::TerminalArea.order(:label, :code).pluck(:label, :code) do |c|
+ [ c.label, c.code ]
+ end
+ end
+
+ def customer_group_options
+ Keyword::CustomerGroup.order(:label, :code).pluck(:label, :code) do |c|
+ [ c.label, c.code ]
+ end
+ end
+
+ def warehouse_options
+ Warehouse.order(:nimitys).pluck(:nimitys, :tunnus) do |c|
+ [ c.nimitys, c.tunnus ]
+ end
+ end
+
+ def status_options
+ [
+ [ t("#{ROOT}.status_options.in_use"), :in_use ],
+ [ t("#{ROOT}.status_options.not_in_use"), :not_in_use ],
+ ]
+ end
+end
diff --git a/app/helpers/carrier_helper.rb b/app/helpers/carrier_helper.rb
index 0dd24b6b3..9ae22884f 100644
--- a/app/helpers/carrier_helper.rb
+++ b/app/helpers/carrier_helper.rb
@@ -7,6 +7,10 @@ def neutraali_options
end
end
+ def carrier_options
+ Carrier.order(:nimi, :koodi).pluck(:nimi, :koodi)
+ end
+
def rahdinkuljettaja_options
Carrier.all.map do |c|
[ c.nimi, c.koodi ]
diff --git a/app/helpers/delivery_method_helper.rb b/app/helpers/delivery_method_helper.rb
new file mode 100644
index 000000000..89e9a0931
--- /dev/null
+++ b/app/helpers/delivery_method_helper.rb
@@ -0,0 +1,139 @@
+module DeliveryMethodHelper
+ ROOT = 'administration.delivery_methods'
+
+ def adr_prohibition_options
+ options = [
+ [ t("administration.delivery_methods.adr_prohibition_options.permit_adr"), "" ],
+ [ t("administration.delivery_methods.adr_prohibition_options.adr_prohibition"), "K" ]
+ ]
+
+ text = t("administration.delivery_methods.adr_prohibition_options.adr_shipment")
+
+ options = options + adr_options(text)
+ options.reject { |i,_| i.empty? }
+ end
+
+ def alternative_adr_delivery_method_options
+ options = [
+ [ t("administration.delivery_methods.alternative_adr_delivery_method_options.adr_products_transfer_prohibition"), "" ],
+ ]
+
+ text = t("administration.delivery_methods.alternative_adr_delivery_method_options.adr_products_transfer_permit")
+
+ options = options + adr_options(text)
+ options.reject { |i,_| i.empty? }
+ end
+
+ def adr_options(text)
+ DeliveryMethod.permit_adr.shipment.map do |i|
+ [ "#{text} #{i.selite}", i.selite ]
+ end
+ end
+
+ def label_options
+ options = DeliveryMethod.osoitelappus.map do |key,_|
+ [ t("#{ROOT}.label_options.#{key}"), key ]
+ end
+
+ options.reject { |_,key| !Current.company.parameter.collection_batch_based_on_dimensions? && key == 'simple_label' }
+ end
+
+ def pickup_options
+ DeliveryMethod.noutos.map do |key,_|
+ [ t("#{ROOT}.pickup_options.#{key}"), key ]
+ end
+ end
+
+ def saturday_delivery_options
+ DeliveryMethod.lauantais.map do |key,_|
+ [ t("#{ROOT}.saturday_delivery_options.#{key}"), key ]
+ end
+ end
+
+ def transport_unit_options
+ DeliveryMethod.kuljyksikkos.map do |key,_|
+ [ t("#{ROOT}.transport_unit_options.#{key}"), key ]
+ end
+ end
+
+ def print_method_options
+ DeliveryMethod.tulostustapas.map do |key,_|
+ [ t("#{ROOT}.print_method_options.#{key}"), key ]
+ end
+ end
+
+ def freight_contract_options
+ DeliveryMethod.merahtis.map do |key,_|
+ [ t("#{ROOT}.freight_contract_options.#{key}"), key ]
+ end
+ end
+
+ def logy_waybill_number_options
+ DeliveryMethod.logy_rahtikirjanumerots.map do |key,_|
+ [ t("#{ROOT}.logy_waybill_number_options.#{key}"), key ]
+ end
+ end
+
+ def extranet_options
+ DeliveryMethod.extranets.map do |key,_|
+ [ t("#{ROOT}.extranet_options.#{key}"), key ]
+ end
+ end
+
+ def container_options
+ DeliveryMethod.konttis.map do |key,_|
+ [ t("#{ROOT}.container_options.#{key}"), key ]
+ end
+ end
+
+ def cash_on_delivery_prohibition_options
+ DeliveryMethod.jvkieltos.map do |key,_|
+ [ t("#{ROOT}.cash_on_delivery_prohibition_options.#{key}"), key ]
+ end
+ end
+
+ def special_packaging_prohibition_options
+ DeliveryMethod.erikoispakkaus_kieltos.map do |key,_|
+ [ t("#{ROOT}.special_packaging_prohibition_options.#{key}"), key ]
+ end
+ end
+
+ def packing_line_prohibition_options
+ DeliveryMethod.ei_pakkaamoas.map do |key,_|
+ [ t("#{ROOT}.packing_line_prohibition_options.#{key}"), key ]
+ end
+ end
+
+ def waybill_specification_options
+ DeliveryMethod.erittelies.map do |key,_|
+ [ t("#{ROOT}.waybill_specification_options.#{key}"), key ]
+ end
+ end
+
+ def new_packaging_information_options
+ DeliveryMethod.uudet_pakkaustiedots.map do |key,_|
+ [ t("#{ROOT}.new_packaging_information_options.#{key}"), key ]
+ end
+ end
+
+ def transportation_insurance_type_options
+ DeliveryMethod.kuljetusvakuutus_tyyppis.map do |key,_|
+ [ t("#{ROOT}.transportation_insurance_type_options.#{key}"), key ]
+ end
+ end
+
+ def waybill_options
+ [
+ [ t('administration.delivery_methods.waybill_options.generic_a4'), :generic_a4 ],
+ [ t('administration.delivery_methods.waybill_options.itella_a5'), :itella_a5 ],
+ [ t('administration.delivery_methods.waybill_options.itella_thermal'), :itella_thermal ],
+ [ t('administration.delivery_methods.waybill_options.itella_priority_foreign'), :itella_priority_foreign ],
+ [ t('administration.delivery_methods.waybill_options.unifaun_online'), :unifaun_online ],
+ [ t('administration.delivery_methods.waybill_options.unifaun_print_server'), :unifaun_print_server ],
+ [ t('administration.delivery_methods.waybill_options.dpd_waybill'), :dpd_waybill ],
+ [ t('administration.delivery_methods.waybill_options.dpd_ftp'), :dpd_ftp ],
+ [ t('administration.delivery_methods.waybill_options.ups_ftp'), :ups_ftp ],
+ [ t('administration.delivery_methods.waybill_options.no_waybill'), :no_waybill ],
+ ]
+ end
+end
diff --git a/app/helpers/keyword_helper.rb b/app/helpers/keyword_helper.rb
index 9bb385985..f252c0ae7 100644
--- a/app/helpers/keyword_helper.rb
+++ b/app/helpers/keyword_helper.rb
@@ -28,4 +28,20 @@ def translatable_locales_options
[ 'Venäjä', 'ru' ],
]
end
+
+ def mode_of_transport_options
+ Keyword::ModeOfTransport.pluck(:selitetark, :selite)
+ end
+
+ def nature_of_transaction_options
+ Keyword::NatureOfTransaction.pluck(:selitetark, :selite)
+ end
+
+ def customs_options
+ Keyword::Customs.pluck("CONCAT(selite, ' ', selitetark)", :selite)
+ end
+
+ def sorting_point_options
+ Keyword::SortingPoint.pluck(:selitetark, :selite)
+ end
end
diff --git a/app/models/company.rb b/app/models/company.rb
index 9d01b55bd..780de1393 100644
--- a/app/models/company.rb
+++ b/app/models/company.rb
@@ -8,9 +8,13 @@ class Company < ActiveRecord::Base
o.has_many :carriers
o.has_many :cash_registers
o.has_many :currencies
+ o.has_many :customer_keywords
o.has_many :customers
+ o.has_many :delivery_methods
o.has_many :factorings
o.has_many :fiscal_years
+ o.has_many :freight_contracts
+ o.has_many :freights
o.has_many :keywords
o.has_many :locations
o.has_many :package_codes
@@ -22,6 +26,7 @@ class Company < ActiveRecord::Base
o.has_many :terms_of_payments
o.has_many :users
o.has_many :warehouses
+ o.has_many :waybills
o.has_many :products
o.has_many :brands, class_name: 'Product::Brand'
@@ -39,18 +44,23 @@ class Company < ActiveRecord::Base
o.has_many :heads
o.has_many :manufacture_orders, class_name: 'ManufactureOrder::Order'
+ o.has_many :offer_orders, class_name: 'OfferOrder::Order'
+ o.has_many :preorders, class_name: 'Preorder::Order'
+ o.has_many :project_orders, class_name: 'ProjectOrder::Order'
o.has_many :purchase_invoices_approval, class_name: 'Head::PurchaseInvoice::Approval'
o.has_many :purchase_invoices_approved, class_name: 'Head::PurchaseInvoice::Approved'
o.has_many :purchase_invoices_paid, class_name: 'Head::PurchaseInvoice::Paid'
o.has_many :purchase_invoices_ready_for_transfer, class_name: 'Head::PurchaseInvoice::Transfer'
o.has_many :purchase_invoices_waiting_for_payment, class_name: 'Head::PurchaseInvoice::Waiting'
o.has_many :purchase_orders, class_name: 'PurchaseOrder::Order'
+ o.has_many :reclamation_orders, class_name: 'ReclamationOrder::Order'
o.has_many :sales_invoices, class_name: 'Head::SalesInvoice'
o.has_many :sales_order_drafts, class_name: 'SalesOrder::Draft'
o.has_many :sales_orders, class_name: 'SalesOrder::Order'
+ o.has_many :stock_transfers, class_name: 'StockTransfer::Order'
o.has_many :voucher_rows, through: :vouchers, class_name: 'Head::VoucherRow', source: :rows
o.has_many :vouchers, class_name: 'Head::Voucher'
- o.has_many :stock_transfers, class_name: 'StockTransfer::Order'
+ o.has_many :work_orders, class_name: 'WorkOrder::Order'
o.has_many :qualifiers
o.has_many :cost_centers, class_name: 'Qualifier::CostCenter'
@@ -62,8 +72,8 @@ class Company < ActiveRecord::Base
has_many :commodities, class_name: 'FixedAssets::Commodity'
has_many :commodity_rows, through: :commodities, class_name: 'FixedAssets::CommodityRow'
- has_many :transports, as: :transportable
has_many :customer_transports, through: :customers, source: :transports
+ has_many :transports, as: :transportable
self.table_name = :yhtio
self.primary_key = :tunnus
diff --git a/app/models/customer.rb b/app/models/customer.rb
index af125ce45..2831a3d51 100644
--- a/app/models/customer.rb
+++ b/app/models/customer.rb
@@ -1,16 +1,15 @@
class Customer < BaseModel
+ belongs_to :category, foreign_key: :osasto, primary_key: :selite, class_name: 'Keyword::CustomerCategory'
+ belongs_to :delivery_method, foreign_key: :toimitustapa, primary_key: :selite
+ belongs_to :group, foreign_key: :luokka, primary_key: :selite, class_name: 'Keyword::CustomerGroup'
+ belongs_to :subcategory, foreign_key: :ryhma, primary_key: :selite, class_name: 'Keyword::CustomerSubcategory'
belongs_to :terms_of_payment, foreign_key: :maksuehto
- belongs_to :category,
- class_name: 'Keyword::CustomerCategory',
- foreign_key: :osasto,
- primary_key: :selite
- belongs_to :subcategory,
- class_name: 'Keyword::CustomerSubcategory',
- foreign_key: :ryhma,
- primary_key: :selite
- has_many :transports, as: :transportable
+
+ has_many :customer_keywords, foreign_key: :liitostunnus
has_many :prices, foreign_key: :asiakas, class_name: 'CustomerPrice'
has_many :products, through: :prices
+ has_many :transports
+ has_many :transports, as: :transportable
default_scope { where.not(laji: %w(P R)) }
diff --git a/app/models/customer_keyword.rb b/app/models/customer_keyword.rb
new file mode 100644
index 000000000..a9dbf4b75
--- /dev/null
+++ b/app/models/customer_keyword.rb
@@ -0,0 +1,7 @@
+class CustomerKeyword < BaseModel
+ belongs_to :delivery_method, foreign_key: :avainsana, primary_key: :selite
+ belongs_to :customer, foreign_key: :liitostunnus
+
+ self.table_name = :asiakkaan_avainsanat
+ self.primary_key = :tunnus
+end
diff --git a/app/models/delivery_method.rb b/app/models/delivery_method.rb
new file mode 100644
index 000000000..99b70637e
--- /dev/null
+++ b/app/models/delivery_method.rb
@@ -0,0 +1,294 @@
+class DeliveryMethod < BaseModel
+ include AttributeSanitator
+ include Searchable
+
+ attr_accessor :flash_notice
+
+ with_options foreign_key: :selite do |o|
+ o.has_many :customs, primary_key: :poistumistoimipaikka_koodi, class_name: 'Keyword::Customs'
+ o.has_many :mode_of_transports, primary_key: :kuljetusmuoto, class_name: 'Keyword::ModeOfTransport'
+ o.has_many :nature_of_transactions, primary_key: :kauppatapahtuman_luonne, class_name: 'Keyword::NatureOfTransaction'
+ o.has_many :sorting_point, primary_key: :lajittelupiste, class_name: 'Keyword::SortingPoint'
+ o.has_many :translations, class_name: 'Keyword::DeliveryMethodTranslation'
+ end
+
+ with_options foreign_key: :toimitustapa, primary_key: :selite do |o|
+ o.has_many :customers, class_name: 'Customer'
+ o.has_many :freight_contracts
+ o.has_many :freights
+ o.has_many :manufacture_orders, class_name: 'ManufactureOrder::Order'
+ o.has_many :offer_orders, class_name: 'OfferOrder::Order'
+ o.has_many :preorders, class_name: 'Preorder::Order'
+ o.has_many :project_orders, class_name: 'ProjectOrder::Order'
+ o.has_many :reclamation_orders, class_name: 'ReclamationOrder::Order'
+ o.has_many :sales_order_drafts, class_name: 'SalesOrder::Draft'
+ o.has_many :sales_orders, class_name: 'SalesOrder::Order'
+ o.has_many :stock_transfers, class_name: 'StockTransfer::Order'
+ o.has_many :waybills
+ o.has_many :work_orders, class_name: 'WorkOrder::Order'
+ end
+
+ has_many :customer_keywords, foreign_key: :avainsana, primary_key: :selite
+ has_many :departures, foreign_key: :liitostunnus, class_name: 'DeliveryMethod::Departure'
+
+ has_and_belongs_to_many :locations, join_table: :toimitustavat_toimipaikat, association_foreign_key: :toimipaikka_tunnus, foreign_key: :toimitustapa_tunnus
+
+ validates :aktiivinen_kuljetus_kansallisuus, :maa_maara, :sisamaan_kuljetus_kansallisuus, inclusion: { in: Country.pluck(:koodi) }, allow_blank: true
+ validates :jarjestys, numericality: { only_integer: true }, allow_blank: true
+ validates :lahdon_selite, :sallitut_alustat, length: { maximum: 150 }
+ validates :rahti_tuotenumero, :rahtikirjakopio_email, :kuljetusvakuutus_tuotenumero, :toim_nimi, :toim_nimitark, length: { maximum: 60 }
+ validates :selite, uniqueness: true, presence: true, length: { maximum: 150 }
+ validates :sisamaan_kuljetus, :aktiivinen_kuljetus, length: { maximum: 30 }
+ validates :sopimusnro, :sallitut_maat, length: { maximum: 50 }
+ validates :toim_osoite, length: { maximum: 55 }
+ validates :toim_ovttunnus, length: { maximum: 25 }
+ validates :toim_postino, length: { maximum: 15 }
+ validates :toim_postitp, :toim_maa, length: { maximum: 35 }
+
+ validate :adr_handling
+ validate :alternative_adr_delivery_method
+ validate :cargo_insurance_sku
+ validate :freight_sku
+ validate :unifaun_parameters
+
+ before_save :defaults
+ before_destroy :check_relations
+
+ after_save :update_relations
+
+ float_columns :jvkulu, :erilliskasiteltavakulu, :kuljetusvakuutus, :kuluprosentti, :ulkomaanlisa,
+ :lisakulu, :lisakulu_summa
+
+ accepts_nested_attributes_for :departures, allow_destroy: true
+ accepts_nested_attributes_for :translations, allow_destroy: true
+
+ scope :permit_adr, -> { where(vak_kielto: '') }
+
+ self.table_name = :toimitustapa
+ self.primary_key = :tunnus
+
+ enum nouto: {
+ shipment: '',
+ pickup: 'o'
+ }
+
+ enum lauantai: {
+ not_saturday_delivery: '',
+ saturday_delivery: 'o'
+ }
+
+ enum kuljyksikko: {
+ not_transport_unit: '',
+ transport_unit: 'o'
+ }
+
+ enum tulostustapa: {
+ batch: 'E',
+ instant: 'H',
+ collective_instant: 'K',
+ collective_batch: 'L',
+ skip_print: 'X'
+ }
+
+ enum merahti: {
+ receiver_freight_contract: '',
+ sender_freight_contract: 'K',
+ }
+
+ enum rahtikirja: {
+ generic_a4: 'rahtikirja_pdf.inc',
+ itella_a5: 'rahtikirja_postitarra_pdf.inc',
+ itella_priority_foreign: 'rahtikirja_postitarra_ulkomaa_pdf.inc',
+ itella_thermal: 'rahtikirja_postitarra.inc',
+ unifaun_online: 'rahtikirja_unifaun_uo_siirto.inc',
+ unifaun_print_server: 'rahtikirja_unifaun_ps_siirto.inc',
+ dpd_waybill: 'rahtikirja_dpd.inc',
+ dpd_ftp: 'rahtikirja_dpd_siirto.inc',
+ ups_ftp: 'rahtikirja_ups_siirto.inc',
+ no_waybill: 'rahtikirja_tyhja.inc',
+ }
+
+ enum logy_rahtikirjanumerot: {
+ not_using_logy_waybill_numbers: '',
+ use_logy_waybill_numbers: 'K'
+ }
+
+ enum extranet: {
+ only_in_sales: '',
+ only_in_extranet: 'K',
+ both_in_sales_and_extranet: 'M'
+ }
+
+ enum kontti: {
+ not_including_container: '0',
+ includes_container: '1',
+ }
+
+ enum jvkielto: {
+ cash_on_delivery_permitted: '',
+ cash_on_delivery_prohibition: 'o'
+ }
+
+ enum erikoispakkaus_kielto: {
+ special_packaging_permitted: '',
+ special_packaging_prohibition: 'K'
+ }
+
+ enum ei_pakkaamoa: {
+ reserve_packing_line: '0',
+ not_reserving_packing_line: '1'
+ }
+
+ enum erittely: {
+ no_waybill_specification: '',
+ print_waybill_specification: 't',
+ print_waybill_specification_per_customer: 'k'
+ }
+
+ enum uudet_pakkaustiedot: {
+ package_info_entry_denied: '',
+ package_info_entry_allowed: 'K'
+ }
+
+ enum kuljetusvakuutus_tyyppi: {
+ use_company_default: '',
+ no_transportation_insurance: 'E',
+ currency_based_insurance: 'A',
+ percentage_based_insurance: 'B',
+ currency_based_insurance_with_discount: 'F',
+ percentage_based_insurance_with_discount: 'G'
+ }
+
+ enum osoitelappu: {
+ normal_label: '',
+ intrade_label: 'intrade',
+ compact_label: 'tiivistetty',
+ simple_label: 'oslap_mg'
+ }
+
+ def translated_locales
+ translations.map(&:kieli)
+ end
+
+ def name_translated(locale)
+ translations.find_by(kieli: locale).try(:selitetark) || selite
+ end
+
+ private
+
+ def freight_sku
+ return unless rahti_tuotenumero.present?
+
+ cnt = company.products.no_inventory_management.where(tuoteno: rahti_tuotenumero).count
+ errors.add :rahti_tuotenumero, I18n.t('errors.delivery_method.product_not_in_inventory_management') if cnt.zero?
+ end
+
+ def cargo_insurance_sku
+ return unless kuljetusvakuutus_tuotenumero.present?
+
+ cnt = company.products.no_inventory_management.where(tuoteno: kuljetusvakuutus_tuotenumero).count
+ errors.add :kuljetusvakuutus_tuotenumero, I18n.t('errors.delivery_method.product_not_in_inventory_management') if cnt.zero?
+ end
+
+ def update_relations
+ msg = []
+
+ if selite_was.present? && selite_changed?
+ update_list = [
+ { count: company.delivery_methods.where(vak_kielto: selite_was).update_all(vak_kielto: selite), msg: 'delivery_methods' },
+ { count: company.delivery_methods.where(vaihtoehtoinen_vak_toimitustapa: selite_was).update_all(vaihtoehtoinen_vak_toimitustapa: selite), msg: 'alternative_adr_delivery_methods' },
+ { count: company.customers.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'customers' },
+ { count: company.customer_keywords.where(avainsana: selite_was).update_all(avainsana: selite), msg: 'customer_keywords' },
+ { count: company.sales_orders.not_delivered.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'not_delivered_sales_orders' },
+ { count: company.sales_order_drafts.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'sales_order_drafts' },
+ { count: company.stock_transfers.not_delivered.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'not_delivered_stock_transfers' },
+ { count: company.preorders.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'preorders' },
+ { count: company.offer_orders.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'offer_orders' },
+ { count: company.manufacture_orders.not_manufactured.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'not_manufactured_manufacture_orders' },
+ { count: company.work_orders.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'work_orders' },
+ { count: company.project_orders.active.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'project_orders' },
+ { count: company.reclamation_orders.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'reclamation_orders' },
+ { count: company.freights.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'freights' },
+ { count: company.freight_contracts.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'freight_contracts' },
+ { count: company.waybills.not_printed.where(toimitustapa: selite_was).update_all(toimitustapa: selite), msg: 'not_printed_waybills' },
+ ]
+
+ update_list.each do |update|
+ count = update[:count]
+ error = I18n.t "administration.delivery_methods.update.#{update[:msg]}", count: count
+ msg << error unless count.zero?
+ end
+ end
+
+ self.flash_notice = msg.to_sentence
+ end
+
+ def unifaun_parameters
+ # Koontierätulostus ei toimi Unifaunin kanssa ilman "uusia pakkaustietoja"
+ return unless unifaun_online? || unifaun_print_server?
+
+ if !package_info_entry_allowed? && collective_batch?
+ errors.add :base, I18n.t("errors.delivery_method.unifaun_info_missing")
+ end
+ end
+
+ def adr_handling
+ allowed = company.delivery_methods.permit_adr.shipment.pluck(:selite) + [ '', 'K' ]
+
+ unless allowed.include? vak_kielto
+ errors.add :vak_kielto, I18n.t('errors.messages.inclusion')
+ end
+
+ if vak_kielto_changed? && vak_kielto == 'K'
+ count = company.delivery_methods.where(vaihtoehtoinen_vak_toimitustapa: selite).count
+
+ if count > 0
+ errors.add :vak_kielto, I18n.t('errors.delivery_method.in_use_adr')
+ end
+ end
+ end
+
+ def alternative_adr_delivery_method
+ allowed = company.delivery_methods.permit_adr.shipment.pluck(:selite) + [ '' ]
+
+ unless allowed.include? vaihtoehtoinen_vak_toimitustapa
+ errors.add :vaihtoehtoinen_vak_toimitustapa, I18n.t('errors.messages.inclusion')
+ end
+ end
+
+ def check_relations
+ checklist = [
+ { count: customers.count, error: "in_use_customers" },
+ { count: sales_orders.not_delivered.count, error: "in_use_sales_orders" },
+ { count: sales_order_drafts.count, error: "in_use_sales_order_drafts" },
+ { count: freights.count, error: "in_use_freights" },
+ { count: freight_contracts.count, error: "in_use_freight_contracts" },
+ { count: customer_keywords.count, error: "in_use_customer_keywords" },
+ { count: stock_transfers.not_delivered.count, error: "in_use_stock_transfers" },
+ { count: preorders.count, error: "in_use_preorders" },
+ { count: offer_orders.count, error: "in_use_offer_orders" },
+ { count: manufacture_orders.count, error: "in_use_manufacture_orders" },
+ { count: work_orders.count, error: "in_use_work_orders" },
+ { count: project_orders.count, error: "in_use_project_orders" },
+ { count: reclamation_orders.count, error: "in_use_reclamation_orders" },
+ { count: waybills.not_printed.count, error: "in_use_waybills" },
+ { count: company.delivery_methods.where(vak_kielto: selite).count, error: "in_use_delivery_method" },
+ { count: company.delivery_methods.where(vaihtoehtoinen_vak_toimitustapa: selite).count, error: "in_use_delivery_method" },
+ ]
+
+ checklist.each do |check|
+ count = check[:count]
+ error = I18n.t "errors.delivery_method.#{check[:error]}", count: count
+
+ errors.add(:base, error) unless count.zero?
+ end
+
+ checklist.all? { |check| check[:count].zero? }
+ end
+
+ def defaults
+ self.kauppatapahtuman_luonne ||= 0
+ self.kuljetusmuoto ||= 0
+ self.sisamaan_kuljetusmuoto ||= 0
+ end
+end
diff --git a/app/models/delivery_method/departure.rb b/app/models/delivery_method/departure.rb
new file mode 100644
index 000000000..2c737f78b
--- /dev/null
+++ b/app/models/delivery_method/departure.rb
@@ -0,0 +1,24 @@
+class DeliveryMethod::Departure < BaseModel
+ include SplittableDates
+
+ belongs_to :delivery_method, foreign_key: :liitostunnus
+ belongs_to :warehouse, foreign_key: :varasto
+ has_many :terminal_area, primary_key: :terminaalialue, foreign_key: :selite, class_name: 'Keyword::TerminalArea'
+
+ validates :kerailyn_aloitusaika, :lahdon_kellonaika, :viimeinen_tilausaika,
+ format: { with: /\d{2}:\d{2}:\d{2}/i }
+ validates :lahdon_viikonpvm, :varasto, numericality: { only_integer: true }
+ validates :terminaalialue, length: { within: 1..150 }, allow_blank: true
+ validates :asiakasluokka, length: { within: 1..50 }, allow_blank: true
+ validates :ohjausmerkki, length: { within: 1..70 }, allow_blank: true
+
+ splittable_dates :alkupvm
+
+ self.table_name = :toimitustavan_lahdot
+ self.primary_key = :tunnus
+
+ enum aktiivi: {
+ in_use: '',
+ not_in_use: 'E'
+ }
+end
diff --git a/app/models/freight.rb b/app/models/freight.rb
new file mode 100644
index 000000000..e101d6753
--- /dev/null
+++ b/app/models/freight.rb
@@ -0,0 +1,6 @@
+class Freight < BaseModel
+ belongs_to :delivery_method, foreign_key: :toimitustapa, primary_key: :selite
+
+ self.table_name = :rahtimaksut
+ self.primary_key = :tunnus
+end
diff --git a/app/models/freight_contract.rb b/app/models/freight_contract.rb
new file mode 100644
index 000000000..ab9c8f7a0
--- /dev/null
+++ b/app/models/freight_contract.rb
@@ -0,0 +1,6 @@
+class FreightContract < BaseModel
+ belongs_to :delivery_method, foreign_key: :toimitustapa, primary_key: :selite
+
+ self.table_name = :rahtisopimukset
+ self.primary_key = :tunnus
+end
diff --git a/app/models/head.rb b/app/models/head.rb
index 14009ba20..37ed33c13 100644
--- a/app/models/head.rb
+++ b/app/models/head.rb
@@ -20,6 +20,9 @@ def self.default_child_instance
def self.child_class_names
{
+ 'A' => WorkOrder::Order,
+ 'C' => ReclamationOrder::Order,
+ 'E' => Preorder::Order,
'G' => StockTransfer::Order,
'H' => Head::PurchaseInvoice::Approval,
'L' => SalesOrder::Order,
@@ -28,6 +31,8 @@ def self.child_class_names
'O' => PurchaseOrder::Order,
'P' => Head::PurchaseInvoice::Transfer,
'Q' => Head::PurchaseInvoice::Waiting,
+ 'R' => ProjectOrder::Order,
+ 'T' => OfferOrder::Order,
'U' => Head::SalesInvoice,
'V' => ManufactureOrder::Order,
'X' => Head::Voucher,
diff --git a/app/models/keyword.rb b/app/models/keyword.rb
index e629a3ea2..208af2825 100644
--- a/app/models/keyword.rb
+++ b/app/models/keyword.rb
@@ -13,22 +13,29 @@ def self.default_child_instance
def self.child_class_names
{
- ALV: Keyword::Vat,
- ALVULK: Keyword::ForeignVat,
- ASIAKASOSASTO: Keyword::CustomerCategory,
- ASIAKASRYHMA: Keyword::CustomerSubcategory,
- ASIAKHIN_ATTR: Keyword::CustomerPriceListAttribute,
- LISATIETO: Keyword::ProductInformationType,
- MAKSUEHTOKV: Keyword::TermsOfPaymentTranslation,
- MYSQLALIAS: Keyword::CustomAttribute,
- OSASTO: Product::Category,
- PAKKAUSKV: Keyword::PackageTranslation,
- PARAMETRI: Keyword::ProductParameterType,
- REVENUEREP: Keyword::RevenueExpenditure,
- S: Product::Status,
- TRY: Product::Subcategory,
- TUOTEMERKKI: Product::Brand,
- TUOTEULK: Keyword::ProductKeywordType,
+ ALV: Keyword::Vat,
+ ALVULK: Keyword::ForeignVat,
+ ASIAKASLUOKKA: Keyword::CustomerGroup,
+ ASIAKASOSASTO: Keyword::CustomerCategory,
+ ASIAKASRYHMA: Keyword::CustomerSubcategory,
+ ASIAKHIN_ATTR: Keyword::CustomerPriceListAttribute,
+ KM: Keyword::ModeOfTransport,
+ KT: Keyword::NatureOfTransaction,
+ LISATIETO: Keyword::ProductInformationType,
+ MAKSUEHTOKV: Keyword::TermsOfPaymentTranslation,
+ MYSQLALIAS: Keyword::CustomAttribute,
+ OSASTO: Product::Category,
+ PAKKAUSKV: Keyword::PackageTranslation,
+ PARAMETRI: Keyword::ProductParameterType,
+ REVENUEREP: Keyword::RevenueExpenditure,
+ S: Product::Status,
+ TERMINAALIALUE: Keyword::TerminalArea,
+ TOIMTAPAKV: Keyword::DeliveryMethodTranslation,
+ TOIMTAPALP: Keyword::SortingPoint,
+ TRY: Product::Subcategory,
+ TULLI: Keyword::Customs,
+ TUOTEMERKKI: Product::Brand,
+ TUOTEULK: Keyword::ProductKeywordType,
}.stringify_keys
end
end
diff --git a/app/models/keyword/customer_category.rb b/app/models/keyword/customer_category.rb
index b7cd896fc..e3033deff 100644
--- a/app/models/keyword/customer_category.rb
+++ b/app/models/keyword/customer_category.rb
@@ -1,6 +1,11 @@
class Keyword::CustomerCategory < Keyword
has_many :customers, foreign_key: :osasto, primary_key: :selite
+ validates :selitetark, presence: true
+
+ alias_attribute :code, :selite
+ alias_attribute :label, :selitetark
+
def to_s
selitetark
end
diff --git a/app/models/keyword/customer_group.rb b/app/models/keyword/customer_group.rb
new file mode 100644
index 000000000..8f20aaa8f
--- /dev/null
+++ b/app/models/keyword/customer_group.rb
@@ -0,0 +1,12 @@
+class Keyword::CustomerGroup < Keyword
+ has_many :customers, foreign_key: :luokka, primary_key: :selite
+
+ validates :selitetark, presence: true
+
+ alias_attribute :code, :selite
+ alias_attribute :label, :selitetark
+
+ def self.sti_name
+ :ASIAKASLUOKKA
+ end
+end
diff --git a/app/models/keyword/customs.rb b/app/models/keyword/customs.rb
new file mode 100644
index 000000000..0a523242b
--- /dev/null
+++ b/app/models/keyword/customs.rb
@@ -0,0 +1,9 @@
+class Keyword::Customs < Keyword
+ validates :selite, length: 1..3
+ validates :selitetark, presence: true
+
+ # Rails requires sti_name method to return type column (laji) value
+ def self.sti_name
+ 'TULLI'
+ end
+end
diff --git a/app/models/keyword/delivery_method_translation.rb b/app/models/keyword/delivery_method_translation.rb
new file mode 100644
index 000000000..478073445
--- /dev/null
+++ b/app/models/keyword/delivery_method_translation.rb
@@ -0,0 +1,12 @@
+class Keyword::DeliveryMethodTranslation < Keyword
+ belongs_to :delivery_method, foreign_key: :selite
+
+ validates :selitetark, presence: true
+ validates :kieli, inclusion: { in: Dictionary.locales }
+ validates :kieli, uniqueness: { scope: [:yhtio, :selite] }
+
+ # Rails requires sti_name method to return type column (laji) value
+ def self.sti_name
+ 'TOIMTAPAKV'
+ end
+end
diff --git a/app/models/keyword/mode_of_transport.rb b/app/models/keyword/mode_of_transport.rb
new file mode 100644
index 000000000..60152afa3
--- /dev/null
+++ b/app/models/keyword/mode_of_transport.rb
@@ -0,0 +1,8 @@
+class Keyword::ModeOfTransport < Keyword
+ validates :selitetark, presence: true
+
+ # Rails requires sti_name method to return type column (laji) value
+ def self.sti_name
+ 'KM'
+ end
+end
diff --git a/app/models/keyword/nature_of_transaction.rb b/app/models/keyword/nature_of_transaction.rb
new file mode 100644
index 000000000..91b2a1a4b
--- /dev/null
+++ b/app/models/keyword/nature_of_transaction.rb
@@ -0,0 +1,8 @@
+class Keyword::NatureOfTransaction < Keyword
+ validates :selitetark, presence: true
+
+ # Rails requires sti_name method to return type column (laji) value
+ def self.sti_name
+ 'KT'
+ end
+end
diff --git a/app/models/keyword/sorting_point.rb b/app/models/keyword/sorting_point.rb
new file mode 100644
index 000000000..69705b3b3
--- /dev/null
+++ b/app/models/keyword/sorting_point.rb
@@ -0,0 +1,8 @@
+class Keyword::SortingPoint < Keyword
+ validates :selitetark, presence: true
+
+ # Rails requires sti_name method to return type column (laji) value
+ def self.sti_name
+ 'TOIMTAPALP'
+ end
+end
diff --git a/app/models/keyword/terminal_area.rb b/app/models/keyword/terminal_area.rb
new file mode 100644
index 000000000..54ca9de64
--- /dev/null
+++ b/app/models/keyword/terminal_area.rb
@@ -0,0 +1,11 @@
+class Keyword::TerminalArea < Keyword
+ validates :selitetark, presence: true
+
+ alias_attribute :code, :selite
+ alias_attribute :label, :selitetark
+
+ # Rails requires sti_name method to return type column (laji) value
+ def self.sti_name
+ 'TERMINAALIALUE'
+ end
+end
diff --git a/app/models/location.rb b/app/models/location.rb
index 6ce74b9c4..27a2b5c18 100644
--- a/app/models/location.rb
+++ b/app/models/location.rb
@@ -1,4 +1,6 @@
class Location < BaseModel
+ has_and_belongs_to_many :delivery_methods, join_table: :toimitustavat_toimipaikat, association_foreign_key: :toimitustapa_tunnus, foreign_key: :toimipaikka_tunnus
+
self.table_name = :yhtion_toimipaikat
self.primary_key = :tunnus
diff --git a/app/models/manufacture_order/order.rb b/app/models/manufacture_order/order.rb
index 81168ab8b..f48d460cf 100644
--- a/app/models/manufacture_order/order.rb
+++ b/app/models/manufacture_order/order.rb
@@ -5,6 +5,8 @@ class ManufactureOrder::Order < Head
validates :tila, inclusion: { in: ['V'] }
+ scope :not_manufactured, -> { where(alatila: ['', :K, :J, :A, :C]) }
+
# Rails requires sti_name method to return type column (tyyppi) value
def self.sti_name
"V"
diff --git a/app/models/offer_order/order.rb b/app/models/offer_order/order.rb
new file mode 100644
index 000000000..96ff0e832
--- /dev/null
+++ b/app/models/offer_order/order.rb
@@ -0,0 +1,12 @@
+class OfferOrder::Order < Head
+ has_many :rows, foreign_key: :otunnus, class_name: 'OfferOrder::Row'
+
+ validates :tila, inclusion: { in: ['T'] }
+
+ scope :printed_and_accepted, -> { where(alatila: ['', :A, :B]) }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "T"
+ end
+end
diff --git a/app/models/offer_order/row.rb b/app/models/offer_order/row.rb
new file mode 100644
index 000000000..da1bb110a
--- /dev/null
+++ b/app/models/offer_order/row.rb
@@ -0,0 +1,10 @@
+class OfferOrder::Row < Row
+ belongs_to :order, foreign_key: :otunnus, class_name: 'OfferOrder::Order'
+
+ validates :tyyppi, inclusion: { in: ['L'] }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "T"
+ end
+end
diff --git a/app/models/package.rb b/app/models/package.rb
index 643422b44..993269cce 100644
--- a/app/models/package.rb
+++ b/app/models/package.rb
@@ -37,6 +37,12 @@ def dimensions_are_mandatory?
company.parameter.varastopaikkojen_maarittely == "M"
end
+ def translated_description(locale)
+ return pakkauskuvaus if locale.downcase == Current.company.kieli.downcase
+
+ translations.find_by(kieli: locale).try(:selitetark) || pakkauskuvaus
+ end
+
private
def initial_values
diff --git a/app/models/parameter.rb b/app/models/parameter.rb
index be6898f80..a9b9c8a5b 100644
--- a/app/models/parameter.rb
+++ b/app/models/parameter.rb
@@ -2,6 +2,13 @@ class Parameter < BaseModel
self.table_name = :yhtion_parametrit
self.primary_key = :tunnus
+ enum kerayserat: {
+ collection_batch_not_in_use: '',
+ collection_batch_based_on_dimensions: 'K',
+ collection_batch_based_on_weight: 'P',
+ collection_batch_based_on_weight_if_customer_permit: 'A'
+ }
+
enum saldo_kasittely: {
default_stock_management: '',
stock_management_by_pick_date: 'T',
diff --git a/app/models/preorder/order.rb b/app/models/preorder/order.rb
new file mode 100644
index 000000000..1b115e314
--- /dev/null
+++ b/app/models/preorder/order.rb
@@ -0,0 +1,10 @@
+class Preorder::Order < Head
+ has_many :rows, foreign_key: :otunnus, class_name: 'Preorder::Row'
+
+ validates :tila, inclusion: { in: ['E'] }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "E"
+ end
+end
diff --git a/app/models/preorder/row.rb b/app/models/preorder/row.rb
new file mode 100644
index 000000000..f5c49a186
--- /dev/null
+++ b/app/models/preorder/row.rb
@@ -0,0 +1,10 @@
+class Preorder::Row < Row
+ belongs_to :order, foreign_key: :otunnus, class_name: 'Preorder::Order'
+
+ validates :tyyppi, inclusion: { in: ['L'] }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "E"
+ end
+end
diff --git a/app/models/project_order/order.rb b/app/models/project_order/order.rb
new file mode 100644
index 000000000..9b1cdfad7
--- /dev/null
+++ b/app/models/project_order/order.rb
@@ -0,0 +1,12 @@
+class ProjectOrder::Order < Head
+ has_many :rows, foreign_key: :otunnus, class_name: 'ProjectOrder::Row'
+
+ validates :tila, inclusion: { in: ['R'] }
+
+ scope :active, -> { where(alatila: ['', :A]) }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "R"
+ end
+end
diff --git a/app/models/project_order/row.rb b/app/models/project_order/row.rb
new file mode 100644
index 000000000..828706d17
--- /dev/null
+++ b/app/models/project_order/row.rb
@@ -0,0 +1,10 @@
+class ProjectOrder::Row < Row
+ belongs_to :order, foreign_key: :otunnus, class_name: 'ProjectOrder::Order'
+
+ validates :tyyppi, inclusion: { in: ['L'] }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "R"
+ end
+end
diff --git a/app/models/reclamation_order/order.rb b/app/models/reclamation_order/order.rb
new file mode 100644
index 000000000..bd14eed51
--- /dev/null
+++ b/app/models/reclamation_order/order.rb
@@ -0,0 +1,10 @@
+class ReclamationOrder::Order < Head
+ has_many :rows, foreign_key: :otunnus, class_name: 'ReclamationOrder::Row'
+
+ validates :tila, inclusion: { in: ['C'] }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "C"
+ end
+end
diff --git a/app/models/reclamation_order/row.rb b/app/models/reclamation_order/row.rb
new file mode 100644
index 000000000..5449c113e
--- /dev/null
+++ b/app/models/reclamation_order/row.rb
@@ -0,0 +1,10 @@
+class ReclamationOrder::Row < Row
+ belongs_to :order, foreign_key: :otunnus, class_name: 'ReclamationOrder::Order'
+
+ validates :tyyppi, inclusion: { in: ['L'] }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "C"
+ end
+end
diff --git a/app/models/row.rb b/app/models/row.rb
index 7da69eb59..e4d2dbfe2 100644
--- a/app/models/row.rb
+++ b/app/models/row.rb
@@ -11,10 +11,15 @@ def self.default_child_instance
def self.child_class_names
{
+ 'A' => WorkOrder::Row,
+ 'C' => ReclamationOrder::Row,
+ 'E' => Preorder::Row,
'G' => StockTransfer::Row,
'L' => SalesOrder::Row,
'M' => ManufactureOrder::RecursiveCompositeRow,
'O' => PurchaseOrder::Row,
+ 'R' => ProjectOrder::Row,
+ 'T' => OfferOrder::Row,
'V' => ManufactureOrder::Row,
'W' => ManufactureOrder::CompositeRow,
}
diff --git a/app/models/sales_order/order.rb b/app/models/sales_order/order.rb
index a5532cfa4..c62d0372c 100644
--- a/app/models/sales_order/order.rb
+++ b/app/models/sales_order/order.rb
@@ -1,7 +1,7 @@
class SalesOrder::Order < SalesOrder::Base
validates :tila, inclusion: { in: ['L'] }
- scope :not_delivered, -> { where(alatila: %w(A C)) }
+ scope :not_delivered, -> { where(alatila: %w(A B C)) }
scope :invoiced, -> { where(alatila: 'X') }
# Rails requires sti_name method to return type column (tyyppi) value
diff --git a/app/models/stock_transfer/order.rb b/app/models/stock_transfer/order.rb
index 6b336d014..b14c7539c 100644
--- a/app/models/stock_transfer/order.rb
+++ b/app/models/stock_transfer/order.rb
@@ -3,6 +3,8 @@ class StockTransfer::Order < Head
validates :tila, inclusion: { in: ['G'] }
+ scope :not_delivered, -> { where(alatila: ['', :J, :KJ, :A, :C, :T, :P]) }
+
# Rails requires sti_name method to return type column (tyyppi) value
def self.sti_name
"G"
diff --git a/app/models/warehouse.rb b/app/models/warehouse.rb
index b6cc7c768..6a1aa105c 100644
--- a/app/models/warehouse.rb
+++ b/app/models/warehouse.rb
@@ -1,6 +1,7 @@
class Warehouse < BaseModel
has_many :packing_areas, foreign_key: :varasto
has_many :shelf_locations, foreign_key: :varasto
+ has_many :departures, foreign_key: :varasto, class_name: 'DeliveryMethod::Departure'
scope :active, -> { where.not(tyyppi: 'P') }
diff --git a/app/models/waybill.rb b/app/models/waybill.rb
new file mode 100644
index 000000000..5f2debfd9
--- /dev/null
+++ b/app/models/waybill.rb
@@ -0,0 +1,8 @@
+class Waybill < BaseModel
+ belongs_to :delivery_method, foreign_key: :toimitustapa, primary_key: :selite
+
+ scope :not_printed, -> { where(tulostettu: 0) }
+
+ self.table_name = :rahtikirjat
+ self.primary_key = :tunnus
+end
diff --git a/app/models/work_order/order.rb b/app/models/work_order/order.rb
new file mode 100644
index 000000000..c7c5dcaf0
--- /dev/null
+++ b/app/models/work_order/order.rb
@@ -0,0 +1,10 @@
+class WorkOrder::Order < Head
+ has_many :rows, foreign_key: :otunnus, class_name: 'WorkOrder::Row'
+
+ validates :tila, inclusion: { in: ['A'] }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "A"
+ end
+end
diff --git a/app/models/work_order/row.rb b/app/models/work_order/row.rb
new file mode 100644
index 000000000..7f708b2bd
--- /dev/null
+++ b/app/models/work_order/row.rb
@@ -0,0 +1,10 @@
+class WorkOrder::Row < Row
+ belongs_to :order, foreign_key: :otunnus, class_name: 'WorkOrder::Order'
+
+ validates :tyyppi, inclusion: { in: ['L'] }
+
+ # Rails requires sti_name method to return type column (tyyppi) value
+ def self.sti_name
+ "A"
+ end
+end
diff --git a/app/views/administration/delivery_methods/_basic.html.erb b/app/views/administration/delivery_methods/_basic.html.erb
new file mode 100644
index 000000000..247dc2ab0
--- /dev/null
+++ b/app/views/administration/delivery_methods/_basic.html.erb
@@ -0,0 +1,254 @@
+
+
+ | <%= f.label :selite %> |
+ <%= f.text_field :selite, class: :large %> |
+
+
+ | <%= f.label :lahdon_selite %> |
+ <%= f.text_field :lahdon_selite, class: :large %> |
+
+
+ | <%= f.label :virallinen_selite %> |
+
+ <%= f.select :virallinen_selite,
+ grouped_options_for_select(PostalOfficialLegend.options, @delivery_method.virallinen_selite),
+ { include_blank: t('administration.delivery_methods.edit.no_select') }, class: 'chosen-select' %>
+ |
+
+
+ | <%= f.label :tulostustapa %> |
+ <%= f.select :tulostustapa, print_method_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :rahtikirja %> |
+ <%= f.select :rahtikirja, waybill_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :logy_rahtikirjanumerot %> |
+ <%= f.select :logy_rahtikirjanumerot, logy_waybill_number_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :osoitelappu %> |
+ <%= f.select :osoitelappu, label_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :rahdinkuljettaja %> |
+ <%= f.select :rahdinkuljettaja, carrier_options,
+ { include_blank: t('administration.delivery_methods.edit.no_select') }, class: 'chosen-select' %> |
+
+
+ | <%= f.label :rahti_tuotenumero %> |
+ <%= f.text_field :rahti_tuotenumero, class: :large %> |
+
+
+ | <%= f.label :sopimusnro %> |
+ <%= f.text_field :sopimusnro, class: :large %> |
+
+
+ | <%= f.label :rahtikirjakopio_email %> |
+ <%= f.text_field :rahtikirjakopio_email, class: :large %> |
+
+
+ | <%= f.label :toim_ovttunnus %> |
+ <%= f.text_field :toim_ovttunnus, class: :large %> |
+
+
+ | <%= f.label :toim_nimi %> |
+ <%= f.text_field :toim_nimi, class: :large %> |
+
+
+ | <%= f.label :toim_nimitark %> |
+ <%= f.text_field :toim_nimitark, class: :large %> |
+
+
+ | <%= f.label :toim_osoite %> |
+ <%= f.text_field :toim_osoite, class: :large %> |
+
+
+ | <%= f.label :toim_postino %> |
+ <%= f.text_field :toim_postino, class: :large %> |
+
+
+ | <%= f.label :toim_postitp %> |
+ <%= f.text_field :toim_postitp, class: :large %> |
+
+
+ | <%= f.label :toim_maa %> |
+ <%= f.text_field :toim_maa, class: :large %> |
+
+
+ | <%= f.label :jvkulu %> |
+ <%= f.text_field :jvkulu, class: :large %> |
+
+
+ | <%= f.label :jvkielto %> |
+ <%= f.select :jvkielto, cash_on_delivery_prohibition_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :kuljetusvakuutus_tuotenumero %> |
+ <%= f.text_field :kuljetusvakuutus_tuotenumero, class: :large %> |
+
+
+ | <%= f.label :kuljetusvakuutus %> |
+ <%= f.text_field :kuljetusvakuutus, class: :large %> |
+
+
+ | <%= f.label :kuljetusvakuutus_tyyppi %> |
+ <%= f.select :kuljetusvakuutus_tyyppi, transportation_insurance_type_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :vak_kielto %> |
+ <%= f.select :vak_kielto, adr_prohibition_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :vaihtoehtoinen_vak_toimitustapa %> |
+ <%= f.select :vaihtoehtoinen_vak_toimitustapa, alternative_adr_delivery_method_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :erikoispakkaus_kielto %> |
+ <%= f.select :erikoispakkaus_kielto, special_packaging_prohibition_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :nouto %> |
+ <%= f.select :nouto, pickup_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :lauantai %> |
+ <%= f.select :lauantai, saturday_delivery_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :kuljyksikko %> |
+ <%= f.select :kuljyksikko, transport_unit_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :erilliskasiteltavakulu %> |
+ <%= f.text_field :erilliskasiteltavakulu, class: :large %> |
+
+
+ | <%= f.label :merahti %> |
+ <%= f.select :merahti, freight_contract_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :extranet %> |
+ <%= f.select :extranet, extranet_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :ei_pakkaamoa %> |
+ <%= f.select :ei_pakkaamoa, packing_line_prohibition_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :erittely %> |
+ <%= f.select :erittely, waybill_specification_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :kuluprosentti %> |
+ <%= f.text_field :kuluprosentti, class: :large %> |
+
+
+ | <%= f.label :sallitut_maat %> |
+ <%= f.text_field :sallitut_maat, class: :large %> |
+
+
+ | <%= f.label :uudet_pakkaustiedot %> |
+ <%= f.select :uudet_pakkaustiedot, new_packaging_information_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :lajittelupiste %> |
+ <%= f.select :lajittelupiste, sorting_point_options,
+ { include_blank: t('administration.delivery_methods.edit.no_select') }, class: 'chosen-select' %> |
+
+
+ | <%= f.label :maa_maara %> |
+ <%= f.text_field :maa_maara, class: :large %> |
+
+
+ | <%= f.label :sisamaan_kuljetus %> |
+ <%= f.text_field :sisamaan_kuljetus, class: :large %> |
+
+
+ | <%= f.label :sisamaan_kuljetus_kansallisuus %> |
+ <%= f.text_field :sisamaan_kuljetus_kansallisuus, class: :large %> |
+
+
+ | <%= f.label :sisamaan_kuljetusmuoto %> |
+ <%= f.select :sisamaan_kuljetusmuoto, mode_of_transport_options,
+ { include_blank: t('administration.delivery_methods.edit.no_select') }, class: 'chosen-select' %> |
+
+
+ | <%= f.label :kontti %> |
+ <%= f.select :kontti, container_options, {}, class: 'chosen-select' %> |
+
+
+ | <%= f.label :aktiivinen_kuljetus %> |
+ <%= f.text_field :aktiivinen_kuljetus, class: :large %> |
+
+
+ | <%= f.label :aktiivinen_kuljetus_kansallisuus %> |
+ <%= f.text_field :aktiivinen_kuljetus_kansallisuus, class: :large %> |
+
+
+ | <%= f.label :kauppatapahtuman_luonne %> |
+ <%= f.select :kauppatapahtuman_luonne, nature_of_transaction_options,
+ { include_blank: t('administration.delivery_methods.edit.no_select') }, class: 'chosen-select' %> |
+
+
+ | <%= f.label :kuljetusmuoto %> |
+ <%= f.select :kuljetusmuoto, mode_of_transport_options,
+ { include_blank: t('administration.delivery_methods.edit.no_select') }, class: 'chosen-select' %> |
+
+
+ | <%= f.label :poistumistoimipaikka_koodi %> |
+ <%= f.select :poistumistoimipaikka_koodi, customs_options,
+ { include_blank: t('administration.delivery_methods.edit.no_select') }, class: 'chosen-select' %> |
+
+
+ | <%= f.label :ulkomaanlisa %> |
+ <%= f.text_field :ulkomaanlisa, class: :large %> |
+
+
+ | <%= f.label :sallitut_alustat %> |
+
+
+ <%= f.collection_check_boxes :sallitut_alustat, Package.all, :tunnus, :pakkauskuvaus,
+ checked: @delivery_method.sallitut_alustat.split(',') do |b| %>
+
+ <%= b.check_box %>
+ <%= b.label { b.object.pakkaus + " " + b.object.translated_description(current_user.locale) } %>
+
+ <% end %>
+
+ |
+
+
+ <% if current_company.locations.present? %>
+
+ |
+ <%= f.label :locations %>
+ |
+
+ <%= f.collection_check_boxes :location_ids, current_company.locations, :tunnus, :nimi do |b| %>
+
+ <%= b.check_box %>
+ <%= b.label %>
+
+ <% end %>
+ |
+
+ <% end %>
+
+
+ | <%= f.label :lisakulu %> |
+ <%= f.text_field :lisakulu, class: :large %> |
+
+
+ | <%= f.label :lisakulu_summa %> |
+ <%= f.text_field :lisakulu_summa, class: :large %> |
+
+
+ | <%= f.label :jarjestys %> |
+ <%= f.text_field :jarjestys, class: :large %> |
+
+
+<%= render 'administration/resource_timestamps_and_users', resource: @delivery_method %>
+
+
diff --git a/app/views/administration/delivery_methods/_departure_fields.html.erb b/app/views/administration/delivery_methods/_departure_fields.html.erb
new file mode 100644
index 000000000..78b8ea5db
--- /dev/null
+++ b/app/views/administration/delivery_methods/_departure_fields.html.erb
@@ -0,0 +1,46 @@
+
+ |
+ <%= f.select :lahdon_viikonpvm, day_of_the_week_options, { include_blank: t('administration.delivery_methods.departures.no_selected.day') }, class: 'chosen-select' %>
+ |
+
+
+ <%= f.time_select :lahdon_kellonaika, ignore_date: true, class: :large %>
+ |
+
+
+ <%= f.time_select :viimeinen_tilausaika, ignore_date: true, class: :large %>
+ |
+
+
+ <%= f.time_select :kerailyn_aloitusaika, ignore_date: true, class: :large %>
+ |
+
+
+ <%= f.select :terminaalialue, terminal_area_options, { include_blank: t('administration.delivery_methods.departures.no_selected.terminal_area') }, class: 'chosen-select' %>
+ |
+
+
+ <%= f.select :asiakasluokka, customer_group_options, { include_blank: t('administration.delivery_methods.departures.no_selected.customer_group') }, class: 'chosen-select' %>
+ |
+
+
+ <%= f.select :varasto, warehouse_options, { include_blank: t('administration.delivery_methods.departures.no_selected.warehouse') }, class: 'chosen-select' %>
+ |
+
+
+ <%= f.select :aktiivi, status_options, {}, class: 'chosen-select' %>
+ |
+
+
+ <%= f.text_field :ohjausmerkki, class: :large %>
+ |
+
+
+ <%= f.pupenext_date_field :alkupvm %>
+ |
+
+
+ <%= f.check_box :_destroy %>
+ |
+
+
diff --git a/app/views/administration/delivery_methods/_departures.html.erb b/app/views/administration/delivery_methods/_departures.html.erb
new file mode 100644
index 000000000..fc57e5a1f
--- /dev/null
+++ b/app/views/administration/delivery_methods/_departures.html.erb
@@ -0,0 +1,25 @@
+
+
+ | <%= label_tag t('administration.delivery_methods.departures.day_of_the_week') %> |
+ <%= label_tag t('administration.delivery_methods.departures.time') %> |
+ <%= label_tag t('administration.delivery_methods.departures.last_ordering_time') %> |
+ <%= label_tag t('administration.delivery_methods.departures.collecting_start_time') %> |
+ <%= label_tag t('administration.delivery_methods.departures.terminal_area') %> |
+ <%= label_tag t('administration.delivery_methods.departures.customer_group') %> |
+ <%= label_tag t('administration.delivery_methods.departures.warehouse') %> |
+ <%= label_tag t('administration.delivery_methods.departures.status') %> |
+ <%= label_tag t('administration.delivery_methods.departures.control_character') %> |
+ <%= label_tag t('administration.delivery_methods.departures.start_date') %> |
+ <%= label_tag t('helpers.submit.destroy', model: '') %> |
+
+
+ <%= f.fields_for :departures do |departure| %>
+ <%= render 'departure_fields', f: departure %>
+ <% end %>
+
+
+
+
+<%= link_to_add_association t('administration.delivery_methods.departures.link_new'), f, :departures,
+ data: { association_insertion_method: :append, association_insertion_node: '#departures'},
+ partial: 'departure_fields' %>
diff --git a/app/views/administration/delivery_methods/_form.html.erb b/app/views/administration/delivery_methods/_form.html.erb
new file mode 100644
index 000000000..af44c8091
--- /dev/null
+++ b/app/views/administration/delivery_methods/_form.html.erb
@@ -0,0 +1,25 @@
+<%= render "administration/form_errors", resource: @delivery_method %>
+
+<%= form_for @delivery_method do |f| %>
+
+
+ <%= render 'basic', f: f %>
+
+
+
+ <%= render "administration/header", text: t('administration.delivery_methods.edit.translations.header') %>
+ <%= render 'administration/translations', f: f %>
+
+
+ <% if current_company.parameter.collection_batch_based_on_dimensions? %>
+
+ <%= render "administration/header", text: t('administration.delivery_methods.edit.departures.header') %>
+ <%= render 'departures', f: f %>
+
+ <% end %>
+
+
+ <%= render 'administration/actions', f: f %>
+
+
+<% end %>
diff --git a/app/views/administration/delivery_methods/edit.html.erb b/app/views/administration/delivery_methods/edit.html.erb
new file mode 100644
index 000000000..d9c3619de
--- /dev/null
+++ b/app/views/administration/delivery_methods/edit.html.erb
@@ -0,0 +1,15 @@
+<%= return_link t('administration.delivery_methods.index.header'), delivery_methods_path %>
+
+
+
+<%= render "administration/header", text: t('administration.delivery_methods.edit.header') %>
+<%= render 'form' %>
+
+<% if @delivery_method.persisted? && update_access? %>
+
+
+ <%= button_to(t('.button_remove'),
+ delivery_method_path(@delivery_method.id),
+ data: { confirm: t('administration.delivery_methods.edit.confirm_remove') },
+ method: "delete") %>
+<% end %>
diff --git a/app/views/administration/delivery_methods/index.html.erb b/app/views/administration/delivery_methods/index.html.erb
new file mode 100644
index 000000000..724874252
--- /dev/null
+++ b/app/views/administration/delivery_methods/index.html.erb
@@ -0,0 +1,60 @@
+<%= render "administration/header", text: t('.header') %>
+<%= render "administration/notice" %>
+
+<%= button_to_new :delivery_method %>
+
+
+
+<%= form_tag delivery_methods_path, method: :get do %>
+
+
+
+
+ <%= sortable "selite", DeliveryMethod.human_attribute_name(:selite) %>
+
+ <%= text_field_tag :selite, params[:selite] %>
+ |
+
+
+ <%= sortable "sopimusnro", DeliveryMethod.human_attribute_name(:sopimusnro) %>
+
+ <%= text_field_tag :sopimusnro, params[:sopimusnro] %>
+ |
+
+
+ <%= sortable "jarjestys", DeliveryMethod.human_attribute_name(:jarjestys) %>
+
+ <%= text_field_tag :jarjestys, params[:jarjestys] %>
+ |
+
+
+ <%= submit_tag t('.button_search') %>
+ |
+
+
+ <% @delivery_methods.each do |delivery_method| %>
+
+ |
+ <%= link_to delivery_method.selite, edit_delivery_method_path(delivery_method.id) %>
+ |
+
+
+ <%= delivery_method.sopimusnro %>
+ |
+
+
+ <%= delivery_method.jarjestys %>
+ |
+
+
+ |
+
+ <% end %>
+
+
+
+<% end %>
+
+
+
+<%= button_to_new :delivery_method %>
diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml
index af0a5275d..a5e501008 100644
--- a/config/i18n-tasks.yml
+++ b/config/i18n-tasks.yml
@@ -38,5 +38,7 @@ ignore_unused:
- 'administration.printers.{mediatyyppi_options,merkisto_options}.*'
- 'administration.sum_levels.{kayttotarkoitus_options,kumulatiivinen_options}.*'
- 'administration.qualifiers.{kaytossa_options}.*'
+- 'administration.delivery_methods.{*_options}.*'
+- 'administration.delivery_methods.update.*'
- 'administration.packages.{erikoispakkaus_options,yksin_eraan_options}.*'
- 'simple_form.*'
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 78be91bdc..017a80b2c 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -3,69 +3,69 @@ de:
activerecord:
attributes:
account:
- alv_taso:
- kohde:
- kustp:
+ alv_taso:
+ kohde:
+ kustp:
laatija: Erstellt von
luontiaika: Erstellt am
muutospvm: "Änderungszeit"
- muuttaja:
+ muuttaja:
nimi: Name
- projekti:
- sisainen_taso:
+ projekti:
+ sisainen_taso:
tilino: Kontonummer
- tiliointi_tarkistus:
- toimijaliitos:
- ulkoinen_taso:
+ tiliointi_tarkistus:
+ toimijaliitos:
+ ulkoinen_taso:
accounting/fixed_assets/commodity:
- evl_poistotyyppi:
+ evl_poistotyyppi:
kayttoonottopvm: Inbetriebnahmedatum
bank_account:
- asiakastunnus:
+ asiakastunnus:
bic: SWIFT / BIC
- factoring:
- hyvak:
- iban:
+ factoring:
+ hyvak:
+ iban:
kaytossa: Status
maksulimitti: Zahlungslimit
nimi: Name
- oletus_kohde:
- oletus_kulutili:
- oletus_kustp:
- oletus_projekti:
- oletus_rahatili:
- oletus_selvittelytili:
+ oletus_kohde:
+ oletus_kulutili:
+ oletus_kustp:
+ oletus_projekti:
+ oletus_rahatili:
+ oletus_selvittelytili:
tilino: Kontonummer
- tilinylitys:
+ tilinylitys:
valkoodi: Währung
bank_detail:
laatija: Erstellt von
luontiaika: Erstellt am
- muutospvm:
- muuttaja:
+ muutospvm:
+ muuttaja:
nimitys: Bezeichnung
- pankkiiban1:
- pankkiiban2:
- pankkiiban3:
- pankkinimi1:
- pankkinimi2:
- pankkinimi3:
- pankkiswift1:
- pankkiswift2:
- pankkiswift3:
+ pankkiiban1:
+ pankkiiban2:
+ pankkiiban3:
+ pankkinimi1:
+ pankkinimi2:
+ pankkinimi3:
+ pankkiswift1:
+ pankkiswift2:
+ pankkiswift3:
pankkitili1: Kontonummer
pankkitili2: Kontonummer
pankkitili3: Kontonummer
- viite:
+ viite:
carrier:
- koodi:
+ koodi:
luontiaika: Erstellt am
- luottokortti:
+ luottokortti:
muutospvm: "Änderungsdatum"
- muuttaja:
- neutraali:
+ muuttaja:
+ neutraali:
nimi: Name
- pakkauksen_sarman_minimimitta:
+ pakkauksen_sarman_minimimitta:
cash_register:
kassa: Kasse
kassaerotus: Kassendifferenz
@@ -85,10 +85,10 @@ de:
email: E-Mailadresse
factoringsaamiset: Factoringforderungen aus Lieferungen und Leistungen
fax: Fax
- int_koodi:
- intrastat_sarjanro:
+ int_koodi:
+ intrastat_sarjanro:
jarjestys: Sortierung
- karhuerapvm:
+ karhuerapvm:
kassa: Barverkauf
kassaale: Rabatte der Einkäufe
kassaerotus: "Übereinstimmungsdifferenzen der Barverkaufskasse"
@@ -111,40 +111,40 @@ de:
luottotappiot: Verkaufskreditverluste
maa: Land
matkalla_olevat: Umlaufvermögensrechnungen, die unterwegs sind
- muutkulut:
+ muutkulut:
myynninkassaale: Rabatte des Verkaufs
myynninvaluuttaero: Währungskursdifferenzen des Verkaufs
myynti: Verkauf
myynti_ei_eu: Verkauf außerhalb der Gemeinschaft
myynti_eu: Gemeinschaftsverkauf
- myynti_kaanteinen:
+ myynti_kaanteinen:
myynti_kohde: Standardziel des Verkaufs
myynti_kustp: Standardkostenstelle des Verkaufs
myynti_marginaali: Verkauf, Gebrauchtwaren
myynti_projekti: Standardprojekt des Verkaufs
- myyntireskontrakausi_alku:
- myyntireskontrakausi_loppu:
+ myyntireskontrakausi_alku:
+ myyntireskontrakausi_loppu:
myyntisaamiset: Forderungen aus Lieferungen und Leistungen
nimi: Name
osoite: Adresse
osto_marginaali: Einkauf, Gebrauchtwaren (in Verbindung mit Verkauf)
- ostoreskontrakausi_alku:
- ostoreskontrakausi_loppu:
+ ostoreskontrakausi_alku:
+ ostoreskontrakausi_loppu:
ostovelat: Verbindlichkeiten aus Lieferungen und Leistungen
ovttunnus: EDI-Kennzeichen
- pankkiiban1:
- pankkiiban2:
- pankkiiban3:
+ pankkiiban1:
+ pankkiiban2:
+ pankkiiban3:
pankkikortti: Barverkauf Bankkartenzahlungen
- pankkinimi1:
- pankkinimi2:
- pankkinimi3:
- pankkiswift1:
- pankkiswift2:
- pankkiswift3:
- pankkitili1:
- pankkitili2:
- pankkitili3:
+ pankkinimi1:
+ pankkinimi2:
+ pankkinimi3:
+ pankkiswift1:
+ pankkiswift2:
+ pankkiswift3:
+ pankkitili1:
+ pankkitili2:
+ pankkitili3:
postino: Postleitzahl
postitp: Poststelle
puhelin: Telefon
@@ -155,404 +155,497 @@ de:
siirtosaamiset: ARAP-Konto für die Periodisierung der Einkaufsrechnung
siirtovelka: PRAP-Konto für die Periodisierung der Verkaufsrechnung
tilastotullikamari: statistikzollkammer
- tilikauden_tulos:
- tilikausi_alku:
- tilikausi_loppu:
- tilino_triang:
- tulli_lisattava_era:
- tulli_vahennettava_era:
+ tilikauden_tulos:
+ tilikausi_alku:
+ tilikausi_loppu:
+ tilino_triang:
+ tulli_lisattava_era:
+ tulli_vahennettava_era:
tullikamari: zollkammer
- tullin_asiaknro:
- tullin_lupanro:
+ tullin_asiaknro:
+ tullin_lupanro:
tullipaate: zollterminal
valkoodi: Währung
valuuttaero: Währungskursdifferenzen der Einkäufe
varasto: Waren/Lager
varastonmuutos: Lageränderung
- varastonmuutos_epakurantti:
- varastonmuutos_inventointi:
- varastonmuutos_rahti:
+ varastonmuutos_epakurantti:
+ varastonmuutos_inventointi:
+ varastonmuutos_rahti:
varastonmuutos_valmistuksesta: Lageränderung der Fertigung
- viivastyskorko:
+ viivastyskorko:
www: www
ytunnus: Steuernummer
+ delivery_method:
+ aktiivinen_kuljetus: Standard aktiver Transport
+ aktiivinen_kuljetus_kansallisuus: Standard Nationalität des aktiven Transport
+ jarjestys: Sortierung
+ jvkulu: Nachnahmekosten
+ kauppatapahtuman_luonne: Standard Geschäftsart
+ kontti: Standard Container
+ kuljetusmuoto: Standard Transportart
+ kuluprosentti: Kostenprozent
+ lisakulu: Zusatzkosten
+ maa_maara: Standard Zielland
+ merahti: Frachtvertrag
+ poistumistoimipaikka_koodi: Standard Code des Abtrittgeschäftsstelle
+ rahtikirja: Frachtbrieftyp
+ selite: Bezeichnung
+ sisamaan_kuljetus: Standard Inlandtransport
+ sisamaan_kuljetus_kansallisuus: Standard Nationalität des Inlandtransport
+ sisamaan_kuljetusmuoto: Standard Inlandtransportart
+ tulostustapa: Ausdruckart
keyword:
jarjestys: Sortierung
kieli: Sprache
laji: Art
selite: Erklärung
- selitetark:
- selitetark_2:
- selitetark_3:
+ selitetark:
+ selitetark_2:
+ selitetark_3:
keyword/custom_attribute:
- database_field:
- default_value:
- help_text:
- label:
- required:
- set_name:
- visibility:
+ database_field:
+ default_value:
+ help_text:
+ label:
+ required:
+ set_name:
+ visibility:
keyword/revenue_expenditure:
selitetark_2: Anzahl
package:
- erikoispakkaus:
+ erikoispakkaus:
jarjestys: Sortierung
- kayttoprosentti:
+ kayttoprosentti:
kieli: Sprache
korkeus: Höhe
laji: Art
leveys: Breite
- minimi_paino:
+ minimi_paino:
paino: Gewicht
- pakkaus:
+ pakkaus:
pakkauskuvaus: Verpackungsbeschreibung
- pakkausveloitus_tuotenumero:
- puukotus_kerroin:
+ pakkausveloitus_tuotenumero:
+ puukotus_kerroin:
selite: Erklärung
- selitetark:
- selitetark_2:
- selitetark_3:
- syvyys:
- yksin_eraan:
+ selitetark:
+ selitetark_2:
+ selitetark_3:
+ syvyys:
+ yksin_eraan:
package_code:
- koodi:
- rahdinkuljettaja:
+ koodi:
+ rahdinkuljettaja:
package_codes:
- koodi:
- rahdinkuljettaja:
+ koodi:
+ rahdinkuljettaja:
packing_area:
lokero: Fach
nimi: Name
- pakkaamon_prio:
+ pakkaamon_prio:
printteri0: Auswahlliste
printteri1: Versandpapier
printteri2: Artikeletiketten
printteri3: Adressetikett
printteri4: Frachtbrief A5
printteri6: Frachtbrief A4
- printteri7:
+ printteri7:
prio: Prio
varasto: Lager
+ pending_updates:
+ value: Wert
printer:
ip: ip
jarjestys: Sortierung
kirjoitin: Drucker
komento: befehl
- mediatyyppi:
+ mediatyyppi:
mediatyyppi_types:
- A4:
- A5:
- LS149X104:
- LS59X40:
- LSN149X104:
- LSN59X40:
- kuittitulostin:
+ A4:
+ A5:
+ LS149X104:
+ LS59X40:
+ LSN149X104:
+ LSN59X40:
+ kuittitulostin:
merkisto: zeichensatz
merkisto_types:
- '1':
- '2':
- '3':
- '4':
- '5':
+ '1':
+ '2':
+ '3':
+ '4':
+ '5':
nimi: Name
osoite: Adresse
postino: Postleitzahl
postitp: Poststelle
puhelin: Telefon
- unifaun_nimi:
+ unifaun_nimi:
yhteyshenkilo: Kontaktperson
qualifier:
- isa_tarkenne:
+ isa_tarkenne:
kaytossa: Wird benutzt
- koodi:
+ koodi:
nimi: Name
tunnus: Kennzeichen
tyyppi: Typ
terms_of_payment:
abs_pvm: Zahlungsdatum
- erapvmkasin:
- factoring:
- itsetulostus:
- jaksotettu:
+ erapvmkasin:
+ factoring:
+ itsetulostus:
+ jaksotettu:
jarjestys: Sortierung
jv: Nachnahme
- kassa_abspvm:
+ kassa_abspvm:
kassa_alepros: Kassenrabattsprozent
- kassa_relpvm:
+ kassa_relpvm:
kateinen: Barzahlung
kaytossa: Wird benutzt
laatija: Erstellt von
luontiaika: Erstellt am
- muutospvm:
- muuttaja:
+ muutospvm:
+ muuttaja:
pankkiyhteystiedot: Bankverbindungsdaten
- rel_pvm:
- sallitut_maat:
- teksti:
+ rel_pvm:
+ sallitut_maat:
+ teksti:
translations:
- kieli:
- selitetark:
+ kieli:
+ selitetark:
+ transport:
+ customer: Kunde
+ password: Passwort
+ username: Benutzername
models:
account: Konto
bank_account: Bankkonto
- bank_detail:
- carrier:
- cash_register:
+ bank_detail:
+ carrier:
+ cash_register:
currency: Währung
+ delivery_method: Versandart
fiscal_year: Rechnungsjahr
- head/purchase_invoice/approval:
- head/purchase_invoice/approved:
- head/purchase_invoice/paid:
- head/purchase_invoice/transfer:
- head/purchase_invoice/waiting:
+ head/purchase_invoice/approval:
+ head/purchase_invoice/approved:
+ head/purchase_invoice/paid:
+ head/purchase_invoice/transfer:
+ head/purchase_invoice/waiting:
head/purchase_order: Kaufauftrag
head/sales_invoice: Verkaufsrechnung
head/sales_order: Auftrag
head/sales_order_draft: Aufrag nicht abgeschlossen
- head/voucher:
- keyword/custom_attribute:
+ head/voucher:
+ keyword/custom_attribute:
package: Verpackung
- package_code:
+ package_code:
packing_area: Packraum/Verpackungsabteilung
printer: Drucker
+ product/keyword: Schlüsselwörter des Artikels
qualifier: Ergänzung
qualifier/cost_center: Kostenstelle
qualifier/project: Projekt
qualifier/target: Ziel
sum_level: Ebene
- sum_level/commodity:
+ sum_level/commodity:
sum_level/external: Extern
sum_level/internal: Intern
- sum_level/profit:
+ sum_level/profit:
sum_level/vat: Umsatzsteuer
terms_of_payment: Zahlungsbedingung
administration:
accounts:
create:
- create_success:
+ create_success:
destroy:
- destroy_success:
+ destroy_success:
edit:
button_remove: Konto löschen
- confirm_remove:
+ confirm_remove:
header: Konto
no_cost_center: Keine Kostenstelle
no_project: Kein Projekt
- no_sum_level:
+ no_sum_level:
no_target: Kein Ziel
- no_vat:
+ no_vat:
index:
button_search: Suchen
header: Kontotabelle
manuaali_esto_options:
- editing_disabled:
- editing_enabled:
+ editing_disabled:
+ editing_enabled:
tiliointi_tarkistus_options:
- mandatory_cs:
- mandatory_cs_project:
- mandatory_cs_target:
- mandatory_cs_target_project:
- mandatory_project:
- mandatory_target:
- mandatory_target_project:
- no_mandatory_fields:
+ mandatory_cs:
+ mandatory_cs_project:
+ mandatory_cs_target:
+ mandatory_cs_target_project:
+ mandatory_project:
+ mandatory_target:
+ mandatory_target_project:
+ no_mandatory_fields:
toimijaliitos_options:
- relation_not_required:
- relation_required:
+ relation_not_required:
+ relation_required:
update:
- update_success:
+ update_success:
actions:
- button_saving:
+ button_saving:
bank_accounts:
create:
- create_success:
+ create_success:
edit:
header: Bankkonto
factoring_options:
factoring_disabled: Wird nicht factoriert
- factoring_enabled:
+ factoring_enabled:
index:
button_search: Suchen
- header:
- show_active:
+ header:
+ show_active:
show_inactive: Gelöschte anzeigen
kaytossa_options:
active: Wird benutzt
inactive: Gelöscht / Wird nicht benutzt
tilinylitys_options:
- limit_override_allowed:
- limit_override_denied:
+ limit_override_allowed:
+ limit_override_denied:
update:
- update_success:
+ update_success:
bank_details:
edit:
- header:
+ header:
index:
header: Bankverbindungsdaten
bank_details_helper:
- empty:
+ empty:
finnish: Finnisch
swedish: Schwedisch
carriers:
edit:
- header:
+ header:
index:
button_search: Suchen
- header:
+ header:
neutraali_options:
neutral: Ja
not_neutral: Nein
cash_registers:
create:
- create_success:
+ create_success:
edit:
- header:
+ header:
no_select: Beliebig
index:
button_search: Suchen
header: Kassen
update:
- update_success:
+ update_success:
currencies:
create:
- create_success:
+ create_success:
edit:
header: Währung
index:
button_search: Suchen
header: Währungen
update:
- update_success:
+ update_success:
custom_attributes:
edit:
- button_remove:
- confirm_remove:
- header:
+ button_remove:
+ confirm_remove:
+ header:
index:
button_search: Suchen
- header:
+ header:
required_options:
- mandatory:
- optional:
+ mandatory:
+ optional:
visibility_options:
- hidden:
- visible:
+ hidden:
+ visible:
+ delivery_methods:
+ adr_prohibition_options:
+ adr_prohibition: Liefern der ADR-Produkte nicht erlaubt bei der Lieferart
+ adr_shipment: ADR-Produkte werden geliefert mit der Lieferart
+ permit_adr: Liefern der ADR-Produkte erlaubt bei der Lieferart
+ cash_on_delivery_prohibition_options:
+ cash_on_delivery_permitted: Liefern der Nachnahmen erlaubt bei der Lieferart
+ cash_on_delivery_prohibition: Liefern der Nachnahmen nicht erlaubt bei der Lieferart
+ container_options:
+ includes_container: Ja
+ not_including_container: Nein
+ departures:
+ customer_group: Kundenklasse
+ day_of_the_week_options:
+ friday: Freitag
+ monday: Montag
+ saturday: Samstag
+ sunday: Sonntag
+ thursday: Donnerstag
+ tuesday: Dienstag
+ wednesday: Mittwoch
+ no_selected:
+ warehouse: Kein Lager
+ status: Status
+ status_options:
+ in_use: Wird benutzt
+ not_in_use: Wird nicht benutzt
+ warehouse: Lager
+ edit:
+ header: Versandart
+ no_select: Beliebig
+ extranet_options:
+ both_in_sales_and_extranet: Lieferart wird in beiden angezeigt
+ only_in_extranet: Lieferart wird nur im Extranet angezeigt
+ only_in_sales: Lieferart wird nur im Verkauf angezeigt
+ index:
+ button_search: Suchen
+ header: Lieferarten
+ label_options:
+ compact_label: Komprimiert
+ intrade_label: Intrade
+ normal_label: Normal
+ packing_line_prohibition_options:
+ not_reserving_packing_line: Aufträge der Lieferart reservieren kein Packraum-/Verpackungsabteilungsfach
+ reserve_packing_line: Aufträge der Lieferart reservieren Packraum-/Verpackungsabteilungsfach
+ pickup_options:
+ pickup: Der Kunde holt die Aufträge ab
+ shipment: Aufträge werden an den Kunden geliefert
+ print_method_options:
+ batch: Losausdrucken
+ collective_batch: Sammel-Losausdrucken
+ collective_instant: Sammel-Sofortausdrucken
+ instant: Sofortausdrucken
+ skip_print: Frachbriefeingabe und -ausdrucken werden überholt
+ saturday_delivery_options:
+ not_saturday_delivery: Keine Samstagsdistribution
+ special_packaging_prohibition_options:
+ special_packaging_permitted: Liefern der Spezialverpackungen erlaubt bei der Lieferart
+ special_packaging_prohibition: Liefern der Spezialverpackungen nicht erlaubt bei der Lieferart
+ transport_unit_options:
+ not_transport_unit: Keinen Transporteinheittransport
+ transportation_insurance_type_options:
+ use_company_default: Standard der Firma
+ waybill_specification_options:
+ no_waybill_specification: Keine Frachtbriefspezifikation für die Lieferart ausdrucken
+ print_waybill_specification: Frachtbriefspezifikation für die Lieferart ausdrucken
fiscal_years:
create:
- create_success:
+ create_success:
edit:
header: Rechnungsjahr
index:
button_search: Suchen
- header:
+ header:
update:
- update_success:
+ update_success:
packages:
create:
- create_success:
+ create_success:
edit:
header: Verpackung
erikoispakkaus_options:
- not_special:
- special:
+ not_special:
+ special:
index:
button_search: Suchen
- header:
+ header:
package_codes:
- link_new:
+ link_new:
update:
- update_success:
+ update_success:
yksin_eraan_options:
- combined_parcel:
+ combined_parcel:
separate_parcel: Normalbehandlung
packing_areas:
create:
- create_success:
+ create_success:
destroy:
- destroy_success:
+ destroy_success:
edit:
- button_remove:
- confirm_remove:
+ button_remove:
+ confirm_remove:
header: Packraum/Verpackungsabteilung
index:
button_search: Suchen
header: Packräume/Verpackungsabteilungen
update:
- update_success:
+ update_success:
printers:
create:
- create_success:
+ create_success:
destroy:
- destroy_success:
+ destroy_success:
edit:
- button_remove:
- confirm_remove:
+ button_remove:
+ confirm_remove:
header: Drucker
index:
button_search: Suchen
header: Ausdrucker
mediatyyppi_options:
- media_a4:
- media_a5:
+ media_a4:
+ media_a5:
media_default: Beliebig
- media_receipt:
- media_thermal1:
- media_thermal2:
- media_thermal3:
- media_thermal4:
+ media_receipt:
+ media_thermal1:
+ media_thermal2:
+ media_thermal3:
+ media_thermal4:
merkisto_options:
- charset_7bit:
- charset_ansi:
+ charset_7bit:
+ charset_ansi:
charset_default: Beliebig
- charset_dos:
- charset_scandic_off:
- charset_utf8:
+ charset_dos:
+ charset_scandic_off:
+ charset_utf8:
update:
- update_success:
+ update_success:
qualifiers:
create:
- create_success:
+ create_success:
edit:
- header:
+ header:
index:
button_search: Suchen
- button_show_active:
+ button_show_active:
button_show_removed: Gelöschte anzeigen
- header:
+ header:
kaytossa_options:
in_use: Ja
not_in_use: Nein
update:
- update_success:
+ update_success:
sum_levels:
create:
- create_success:
+ create_success:
destroy:
- destroy_success:
+ destroy_success:
edit:
button_remove: Ebene löschen
- confirm_remove:
- header:
+ confirm_remove:
+ header:
index:
button_search: Suchen
- header:
+ header:
kayttotarkoitus_options:
normal: Beliebig
- purchases:
+ purchases:
turnover: Umsatz
kumulatiivinen_options:
- cumulative:
+ cumulative:
not_cumulative: Nein
update:
- update_success:
+ update_success:
terms_of_payments:
cash_options:
- cash:
- credit_card:
- debit_card:
- not_cash:
+ cash:
+ credit_card:
+ debit_card:
+ not_cash:
create:
- create_success:
+ create_success:
edit:
header: Zahlungsbedingung
no_factoring: Wird nicht factoriert
@@ -562,22 +655,26 @@ de:
inactive: Gelöscht / Wird nicht benutzt
index:
button_search: Suchen
- button_show_active:
- button_show_removed:
- header:
+ button_show_active:
+ button_show_removed:
+ header:
update:
- update_success:
+ update_success:
translations:
language: Sprache
link_new: Neue Übersetzung hinzufügen
- text:
+ text:
update_access:
- forbidden:
+ forbidden:
application:
access_control:
- forbidden:
+ forbidden:
authorize:
- unauthorized:
+ unauthorized:
+ data_export:
+ product_keywords:
+ generate: Excel speichern
+ header: Schlüsselwörter des Artikels
date:
abbr_day_names:
- So
@@ -588,7 +685,7 @@ de:
- Fr
- Sa
abbr_month_names:
- -
+ -
- Jan
- Feb
- Mär
@@ -614,7 +711,7 @@ de:
long: "%e. %B %Y"
short: "%e. %b"
month_names:
- -
+ -
- Januar
- Februar
- März
@@ -674,21 +771,25 @@ de:
month: Monat
second: Sekunde
year: Jahr //all are in singular now
+ downloads:
+ index:
+ created_at: Erstellt am
+ destroy: Löschen
errors:
cash_register:
- kassa_missing:
- kassaerotus_missing:
- kateisotto_missing:
- kateistilitys_missing:
- luottokortti_missing:
- pankkikortti_missing:
+ kassa_missing:
+ kassaerotus_missing:
+ kateisotto_missing:
+ kateistilitys_missing:
+ luottokortti_missing:
+ pankkikortti_missing:
format: "%{attribute} %{message}"
messages:
accepted: muss akzeptiert werden
- after:
- after_or_equal_to:
- before:
- before_or_equal_to:
+ after:
+ after_or_equal_to:
+ before:
+ before_or_equal_to:
blank: muss ausgefüllt werden
confirmation: stimmt nicht mit %{attribute} überein
empty: muss ausgefüllt werden
@@ -701,7 +802,7 @@ de:
invalid: ist nicht gültig
less_than: muss kleiner als %{count} sein
less_than_or_equal_to: muss kleiner oder gleich %{count} sein
- not_a_date:
+ not_a_date:
not_a_number: ist keine Zahl
not_an_integer: muss ganzzahlig sein
odd: muss ungerade sein
@@ -722,89 +823,89 @@ de:
one: hat die falsche Länge (muss genau 1 Zeichen haben)
other: hat die falsche Länge (muss genau %{count} Zeichen haben)
packing_area:
- duplicate_cells:
+ duplicate_cells:
qualifier:
- accounts_found:
+ accounts_found:
sum_level:
- begin_with_error:
- invalid_char:
- not_same_type:
+ begin_with_error:
+ invalid_char:
+ not_same_type:
template:
body: 'Bitte überprüfen Sie die folgenden Felder:'
header:
one: 'Konnte %{model} nicht speichern: ein Fehler.'
other: 'Konnte %{model} nicht speichern: %{count} Fehler.'
terms_of_payment:
- in_use_customers:
- in_use_sales_order_drafts:
- in_use_sales_orders:
+ in_use_customers:
+ in_use_sales_order_drafts:
+ in_use_sales_orders:
fixed_assets:
commodities:
activate:
- activation_failure:
- activation_success:
+ activation_failure:
+ activation_success:
commodity_rows:
button_show_hide: Anzeigen / Verstecken
- commodity_row_amount:
- header:
+ commodity_row_amount:
+ header:
confirm_sale:
- sale_failure:
- sale_success:
+ sale_failure:
+ sale_success:
create:
- create_success:
+ create_success:
depreciations:
button_show_hide: Anzeigen / Verstecken
- depreciation_difference_amount:
- depreciation_rows_amount:
- header:
+ depreciation_difference_amount:
+ depreciation_rows_amount:
+ header:
edit:
- button_activate:
- button_add_invoice_rows:
- button_add_voucher_rows:
- button_create:
- button_sell:
- header:
+ button_activate:
+ button_add_invoice_rows:
+ button_add_voucher_rows:
+ button_create:
+ button_sell:
+ header:
form:
- bookkeeping_value:
- bookkeeping_value_now:
+ bookkeeping_value:
+ bookkeeping_value_now:
index:
- button_search:
- header:
+ button_search:
+ header:
link_order:
- link_order_success:
+ link_order_success:
link_voucher:
- link_voucher_success:
+ link_voucher_success:
link_voucher_row:
- cannot_link_row:
- row_already_linked:
+ cannot_link_row:
+ row_already_linked:
new:
- header:
+ header:
procurement_rows:
- button_remove:
- header:
+ button_remove:
+ header:
purchase_orders:
- button_add:
- button_search:
- header:
+ button_add:
+ button_search:
+ header:
sell:
- confirm_sale:
- header:
+ confirm_sale:
+ header:
unlink:
- unlink_success:
+ unlink_success:
unlink_voucher_row:
- cannot_unlink:
+ cannot_unlink:
update:
- update_success:
+ update_success:
vouchers:
- button_add:
- button_search:
- header:
+ button_add:
+ button_search:
+ header:
helpers:
select:
prompt: Bitte wählen
submit:
create: "%{model} erstellen"
- destroy:
+ destroy:
new: Neu %{model}
submit: "%{model} speichern"
update: "%{model} aktualisieren"
@@ -852,6 +953,32 @@ de:
percentage:
format:
format: "%n %"
+ pending_product_updates:
+ index:
+ deleted: Status
+ label: Bezeichnung
+ search: Suchen
+ sku: Artikelnummer
+ suppliers_sku: Artikelnummer des Lieferanten
+ list:
+ label: Bezeichnung
+ price: Preis
+ save: "Änderungen speichern"
+ sku: Artikelnummer
+ list_of_changes:
+ not_found: Kein Artikel gefunden
+ pending_columns_options:
+ sales_price: Verkaufspreis
+ short_description: Kurzbeschreibung
+ pending_price_options:
+ sales_price: Verkaufspreis
+ pending_update_fields:
+ delete: Löschen
+ products:
+ categories_selection:
+ brand: Marke
+ category: Abteilung
+ subcategory: Gruppe
reports:
revenue_expenditure:
index:
@@ -862,6 +989,27 @@ de:
concern_accounts_receivable: Konzernforderungen aus Lieferungen und Leistungen
summary: Gesamt
week: Woche
+ stock_availability:
+ form:
+ button_run: Pdf
+ constraints: Begrenzung
+ show_data:
+ past: Verspätet
+ product: Artikel
+ purchases: Bestellt, noch nicht erhalten
+ stock: Lagerbestand
+ total: Gesamt
+ week: Woche
+ view_connected_sales_orders:
+ information: Referenz
+ order_number: Auftragsnummer
+ ordered_amount: Bestellt
+ product_info: Artikelnummer
+ shipping_address: Lieferadresse
+ total_amount: Gesamtsumme der Rechnung
+ stock_listing_csv:
+ index:
+ run: Bericht ausführen
shared:
excel:
company: Firmendaten
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 5db322da4..fb8db3f14 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -176,6 +176,9 @@ en:
viivastyskorko: Penalty interest rate
www: www
ytunnus: VAT nr
+ delivery_method:
+ merahti: Freight contract
+ selite: Product name
keyword:
jarjestys:
kieli:
@@ -233,6 +236,8 @@ en:
printteri7:
prio:
varasto: Storage
+ pending_updates:
+ value: Value excl VAT
printer:
ip: Ip
jarjestys: Order
@@ -292,6 +297,10 @@ en:
translations:
kieli:
selitetark:
+ transport:
+ customer: Customer
+ password: Passwd
+ username: User
models:
account: Account
bank_account:
@@ -299,6 +308,7 @@ en:
carrier:
cash_register: Kassa
currency: Currency
+ delivery_method: Delivery
fiscal_year: Fiscal year
head/purchase_invoice/approval:
head/purchase_invoice/approved:
@@ -437,6 +447,24 @@ en:
visibility_options:
hidden:
visible:
+ delivery_methods:
+ container_options:
+ includes_container: 'Yes'
+ not_including_container: 'No'
+ departures:
+ day_of_the_week_options:
+ friday: Friday
+ monday: Monday
+ thursday: Thursday
+ tuesday: Tuesday
+ wednesday: Wednesday
+ status: Status
+ warehouse: Storage
+ edit:
+ header: Delivery
+ no_select: Any
+ index:
+ button_search: Search
fiscal_years:
create:
create_success:
@@ -674,6 +702,10 @@ en:
month: Month
second: Seconds
year: Year
+ downloads:
+ index:
+ created_at: Date of creation
+ destroy: Delete
errors:
cash_register:
kassa_missing:
@@ -848,11 +880,51 @@ en:
percentage:
format:
format: "%n%"
+ pending_product_updates:
+ index:
+ deleted: Status
+ label: Product name
+ search: Search
+ sku: Product number
+ suppliers_sku: Vendor product nr
+ list:
+ label: Product name
+ price: price
+ sku: Product number
+ list_of_changes:
+ not_found: No products found
+ pending_columns_options:
+ sales_price: Sales price
+ short_description: Short description
+ pending_price_options:
+ sales_price: Sales price
+ pending_update_fields:
+ delete: Delete
+ products:
+ categories_selection:
+ brand: Brand
+ category: Department
reports:
revenue_expenditure:
index:
accounts_receivable: Accounts receivable
summary: Total
+ stock_availability:
+ show_data:
+ product: Product
+ purchases: Ordered, not received
+ total: Total
+ view_connected_sales_orders:
+ delivery_date: Delivery Date
+ information: Reference text
+ order_number: Order number
+ ordered_amount: Ordered
+ product_info: Product number
+ shipping_address: Delivery customer
+ total_amount: Amount
+ stock_listing_csv:
+ index:
+ run: Execute report
shared:
excel:
user: User
diff --git a/config/locales/et.yml b/config/locales/et.yml
index 18389e686..8ee155899 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -176,6 +176,13 @@ et:
viivastyskorko: Viivise protsent
www: WWW
ytunnus: KMKR Nr.
+ delivery_method:
+ jarjestys: Järjekord
+ jvkulu: Lunamaksekulu
+ kuluprosentti: Kuluprotsent
+ merahti: Veoleping
+ selite: Nimetus
+ tulostustapa: Väljastamisviis
keyword:
jarjestys: Järjekord
kieli: Keel
@@ -233,6 +240,8 @@ et:
printteri7:
prio:
varasto: Ladu
+ pending_updates:
+ value: Väärtus
printer:
ip: ip
jarjestys: Järjekord
@@ -292,6 +301,10 @@ et:
translations:
kieli:
selitetark:
+ transport:
+ customer: Klient
+ password: Parool
+ username: Kasutajatunnus
models:
account: Arve
bank_account: Pangakonto
@@ -299,6 +312,7 @@ et:
carrier:
cash_register: Kassa
currency: Valuuta
+ delivery_method: Kohaletoimetamise viis
fiscal_year: Aruandeperiood
head/purchase_invoice/approval:
head/purchase_invoice/approved:
@@ -315,6 +329,7 @@ et:
package_code:
packing_area:
printer: Printer
+ product/keyword: Toote märksonad
qualifier: Täpsustus
qualifier/cost_center: Kulukoht
qualifier/project: Projekt
@@ -437,6 +452,32 @@ et:
visibility_options:
hidden:
visible:
+ delivery_methods:
+ container_options:
+ includes_container: Jah
+ not_including_container: Ei
+ departures:
+ day_of_the_week_options:
+ friday: Reede
+ monday: Esmaspäev
+ saturday: Laupäev
+ sunday: Pyhapäev
+ thursday: Neljapäev
+ tuesday: Teisipäev
+ wednesday: Kolmapäev
+ status: Staatus
+ status_options:
+ in_use: Kasutusel
+ not_in_use: Ei ole kasutusel
+ warehouse: Ladu
+ edit:
+ header: Kohaletoimetamise viis
+ no_select: Valikut ei ole
+ index:
+ button_search: Otsi
+ header: Tarnimisviisid
+ label_options:
+ normal_label: Normaalne
fiscal_years:
create:
create_success:
@@ -578,6 +619,9 @@ et:
forbidden:
authorize:
unauthorized:
+ data_export:
+ product_keywords:
+ header: Toote märksonad
date:
abbr_day_names:
- P
@@ -674,6 +718,10 @@ et:
month: Kuu
second: Sekundit
year: Aasta
+ downloads:
+ index:
+ created_at: Koostamise aeg
+ destroy: Kustuta
errors:
cash_register:
kassa_missing:
@@ -840,12 +888,54 @@ et:
percentage:
format:
format:
+ pending_product_updates:
+ index:
+ deleted: Staatus
+ label: Nimetus
+ search: Otsi
+ sku: Tootenumber
+ suppliers_sku: Tarnija tootenumber
+ list:
+ label: Nimetus
+ price: hind
+ save: Salvesta muudatused
+ sku: Tootenumber
+ list_of_changes:
+ not_found: Yhtki toodet ei leitud
+ pending_columns_options:
+ sales_price: Myygihind
+ pending_price_options:
+ sales_price: Myygihind
+ pending_update_fields:
+ delete: Kustuta
+ products:
+ categories_selection:
+ brand: Märk
+ category: Osakond
reports:
revenue_expenditure:
index:
accounts_receivable: Laekumised myygist
summary: Kokku
week: Nädal
+ stock_availability:
+ form:
+ constraints: Piiritlemine
+ show_data:
+ product: Toode
+ stock: Laosaldo
+ total: Kokku
+ week: Nädal
+ view_connected_sales_orders:
+ information: Tellimuse viide
+ order_number: Tellimuse number
+ ordered_amount: Tellitud
+ product_info: Tootenumber
+ shipping_address: Tarne sihtaadress
+ total_amount: Arve summa
+ stock_listing_csv:
+ index:
+ run: Käita aruannet
shared:
excel:
user: Kasutaja
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 5929b0af3..77cc7fd0c 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -183,6 +183,61 @@ fi:
asiakasnumero: Asiakasnumero
maksuehto: Maksuehto
toimitustapa: Toimitustapa
+ delivery_method:
+ aktiivinen_kuljetus: Oletus aktiivinen kuljetus
+ aktiivinen_kuljetus_kansallisuus: Oletus aktiivisen kuljetuksen kansallisuus
+ ei_pakkaamoa: Pakkaamokäsittely
+ erikoispakkaus_kielto: Erikoispakkauskäsittely
+ erilliskasiteltavakulu: Erilliskäsiteltäväkulu
+ erittely: Rahtikirjaerittely
+ extranet: Extranet-toimitustapa
+ jarjestys: Järjestys
+ jvkielto: Jälkivaatimukset
+ jvkulu: Jälkivaatimuskulu
+ kauppatapahtuman_luonne: Oletus kauppatapahtuman luonne
+ kontti: Oletus kontti
+ kuljetusmuoto: Oletus kuljetusmuoto
+ kuljetusvakuutus: Kuljetusvakuutus
+ kuljetusvakuutus_tuotenumero: Kuljetusvakuutus tuote
+ kuljetusvakuutus_tyyppi: Kuljetusvakuutustyyppi
+ kuljyksikko: Itella kuljetusyksikkö
+ kuluprosentti: Kuluprosentti
+ lahdon_selite: Nimitys Lähtöjen hallinnassa
+ lajittelupiste: Lajittelupiste
+ lauantai: Lauantaijakelu
+ lisakulu: Lisäkulu
+ lisakulu_summa: Lisäkulusumma
+ locations: Sallitut toimipaikat
+ logy_rahtikirjanumerot: LOGY rahtikirjanumerot
+ maa_maara: Oletus määrämaa
+ merahti: Rahtisopimus
+ nouto: Nouto
+ osoitelappu: Osoitelapputyyppi
+ poistumistoimipaikka_koodi: Oletus poistumistoimipaikan koodi
+ rahdinkuljettaja: Kuljetusyhtiö
+ rahti_tuotenumero: Rahtiveloitus tuotenumero
+ rahtikirja: Rahtikirjatyyppi
+ rahtikirjakopio_email:
+ sallitut_alustat: Sallitut keräilyalustat
+ sallitut_maat: Sallitut maat
+ selite: Nimitys
+ sisamaan_kuljetus: Oletus sisämaan kuljetus
+ sisamaan_kuljetus_kansallisuus: Oletus sisämaan kuljetuksen kansallisuus
+ sisamaan_kuljetusmuoto: Oletus sisämaan kuljetusmuoto
+ sopimusnro: Rahtisopimusnumero
+ toim_maa: Koontirahtikirjan maa
+ toim_nimi: Koontirahtikirjan nimi
+ toim_nimitark: Koontirahtikirjan nimitarkenne
+ toim_osoite: Koontirahtikirjan osoite
+ toim_ovttunnus: Koontirahtikirjan OVT-tunnus
+ toim_postino: Koontirahtikirjan postinumero
+ toim_postitp: Koontirahtikirjan postitoimipaikka
+ tulostustapa: Tulostustapa
+ ulkomaanlisa: Rahtikulujen ulkomaanlisä
+ uudet_pakkaustiedot: Koontirahtikirjan pakkaustiedot
+ vaihtoehtoinen_vak_toimitustapa: VAK-tuotteet omalle tilaukselle
+ vak_kielto: VAK-käsittely
+ virallinen_selite: Virallinen nimi
keyword:
jarjestys: Järjestys
kieli: Kieli
@@ -327,6 +382,7 @@ fi:
cash_register: Kassalipas
currency: Valuutta
customer: Asiakas
+ delivery_method: Toimitustapa
fiscal_year: Tilikausi
fixed_assets/commodity: Käyttöomaisuuden hyödyke
head/purchase_invoice/approval: Ostolasku hyväksyttävänä
@@ -341,6 +397,7 @@ fi:
head/voucher: Tosite
keyword/custom_attribute: Ylläpitonäkymän kenttä
keyword/customer_category: Asiakasosasto
+ keyword/customer_group: Asiakasluokka
keyword/customer_subcategory: Asiakasryhmä
keyword/revenue_expenditure: Vaihtoehtoinen meno
package: Pakkaus
@@ -478,6 +535,175 @@ fi:
visibility_options:
hidden: Kenttää ei näytetä näkymässä
visible: Kenttä näytetään näkymässä
+ delivery_methods:
+ adr_prohibition_options:
+ adr_prohibition: Toimitustavalla ei saa toimittaa VAK-tuotteita
+ adr_shipment: VAK-tuotteet toimitetaan toimitustavalla
+ permit_adr: Toimitustavalla saa toimittaa VAK-tuotteita
+ alternative_adr_delivery_method_options:
+ adr_products_transfer_permit: VAK-tuotteet siirretään omalle tilaukselleen toimitustavalla
+ adr_products_transfer_prohibition: VAK-tuotteita ei siirretä omalle tilaukselleen
+ cash_on_delivery_prohibition_options:
+ cash_on_delivery_permitted: Toimitustavalla saa toimittaa jälkivaatimuksia
+ cash_on_delivery_prohibition: Toimitustavalla ei saa toimittaa jälkivaatimuksia
+ container_options:
+ includes_container: Kyllä
+ not_including_container: Ei
+ create:
+ create_success: Toimitustapa luotiin onnistuneesti
+ departures:
+ collecting_start_time: Keräilyn aloitusaika
+ control_character: Ohjausmerkki
+ customer_group: Asiakasluokka
+ day_of_the_week: Lähdön viikonpäivä
+ day_of_the_week_options:
+ friday: Perjantai
+ monday: Maanantai
+ saturday: Lauantai
+ sunday: Sunnuntai
+ thursday: Torstai
+ tuesday: Tiistai
+ wednesday: Keskiviikko
+ last_ordering_time: Viimeinen tilausaika
+ link_new: Lisää uusi lähtö
+ no_selected:
+ customer_group: Ei asiakasluokkaa
+ day: Ei valittua päivää
+ terminal_area: Ei terminaalialuetta
+ warehouse: Ei varastoa
+ start_date: Alkamispäivämäärä
+ status: Tila
+ status_options:
+ in_use: Käytössä
+ not_in_use: Ei käytössä
+ terminal_area: Terminaalialue
+ time: Lähdön kellonaika
+ warehouse: Varasto
+ destroy:
+ destroy_success: Toimitustapa poistettiin onnistuneesti
+ edit:
+ button_remove: Poista toimitustapa
+ confirm_remove: Oletko varma, että haluat poistaa toimitustavan?
+ departures:
+ header: Toimitustavan lähdöt
+ header: Toimitustapa
+ no_select: Ei valintaa
+ translations:
+ header: Toimitustavan käännökset
+ extranet_options:
+ both_in_sales_and_extranet: Toimitustapa näytetään molemmissa
+ only_in_extranet: Toimitustapa näytetään vain extranetissä
+ only_in_sales: Toimitustapa näytetään vain myynnissä
+ freight_contract_options:
+ receiver_freight_contract: Käytetään vastaanottajan rahtisopimusta
+ sender_freight_contract: Käytetään lähettäjän rahtisopimusta
+ index:
+ button_search: Etsi
+ header: Toimitustavat
+ label_options:
+ compact_label: Tiivistetty
+ intrade_label: Intrade
+ normal_label: Normaali
+ simple_label: Yksinkertainen, tulostusmedia valitaan kirjoittimen takaa
+ logy_waybill_number_options:
+ not_using_logy_waybill_numbers: Ei käytetä LOGY-rahtikirjanumeroita
+ use_logy_waybill_numbers: Käytetään LOGY-rahtikirjanumeroita
+ new_packaging_information_options:
+ package_info_entry_allowed: Koonti-erätulostuksessa voi syöttää uudet pakkaustiedot ennen tulostusta
+ package_info_entry_denied: Koonti-erätulostuksessa ei voi syöttää uusia pakkaustietoja ennen tulostusta
+ packing_line_prohibition_options:
+ not_reserving_packing_line: Toimitustavan tilaukaset eivät varaa pakkaamolokeroa
+ reserve_packing_line: Toimitustavan tilaukset varaavat pakkaamolokeron
+ pickup_options:
+ pickup: Asiakas noutaa tilaukset
+ shipment: Tilaukset toimitetaan asiakkaalle
+ print_method_options:
+ batch: Erätulostus
+ collective_batch: Koonti-erätulostus
+ collective_instant: Koonti-hetitulostus
+ instant: Hetitulostus
+ skip_print: Rahtikirjansyöttö ja -tulostus ohitetaan
+ saturday_delivery_options:
+ not_saturday_delivery: Ei lauantaijakelua
+ saturday_delivery: Itella lisäpalvelu - Lauantaijakelu
+ special_packaging_prohibition_options:
+ special_packaging_permitted: Toimitustavalla saa toimittaa erikoispakkauksia
+ special_packaging_prohibition: Toimitustavalla ei saa toimittaa erikoispakkauksia
+ transport_unit_options:
+ not_transport_unit: Ei kuljetusyksikkökuljetusta
+ transport_unit: Itella lisäpalvelu - Kuljetusyksikkökuljetus
+ transportation_insurance_type_options:
+ currency_based_insurance: Valuuttamääräinen kuljetusvakuutus lisätään
+ currency_based_insurance_with_discount: Valuuttamääräinen kuljetusvakuutus lisätään. Käytetään kuljetusvakuutustuotteen asiakashintaa ja alennusta
+ no_transportation_insurance: Ei kuljetusvakuutusta
+ percentage_based_insurance: Prosentuaalinen kuljetusvakuutus lisätään
+ percentage_based_insurance_with_discount: Prosentuaalinen kuljetusvakuutus lisätään. Käytetään kuljetusvakuutustuotteen asiakasalennusta
+ use_company_default: Yhtiön oletus
+ update:
+ alternative_adr_delivery_methods:
+ one: Päivitettiin %{count} vaihtoehtoista vak toimitustapa
+ other: Päivitettiin %{count} vaihtoehtoista vak toimitustapaa
+ customer_keywords:
+ one: Päivitettiin %{count} asiakkaan avainsana
+ other: Päivitettiin %{count} asiakkaan avainsanaa
+ customers:
+ one: Päivitettiin %{count} asiakas
+ other: Päivitettiin %{count} asiakasta
+ delivery_methods:
+ one: Päivitettiin %{count} toimitustapa
+ other: Päivitettiin %{count} toimitustapaa
+ freight_contracts:
+ one: Päivitettiin %{count} rahtisopimus
+ other: Päivitettiin %{count} rahtisopimusta
+ freights:
+ one: Päivitettiin %{count} rahtimaksu
+ other: Päivitettiin %{count} rahtimaksua
+ not_delivered_sales_orders:
+ one: Päivitettiin %{count} myyntitilauksen otsikko
+ other: Päivitettiin %{count} myyntitilauksen otsikkoa
+ not_delivered_stock_transfers:
+ one: Päivitettiin %{count} siirtolistan otsikko
+ other: Päivitettiin %{count} siirtolistan otsikkoa
+ not_manufactured_manufacture_orders:
+ one: Päivitettiin %{count} valmistuksen otsikko
+ other: Päivitettiin %{count} valmistuksen otsikkoa
+ not_printed_waybills:
+ one: Päivitettiin %{count} tulostamaton rahtikirja
+ other: Päivitettiin %{count} tulostamatonta rahtikirjaa
+ offer_orders:
+ one: Päivitettiin %{count} tarjouksen otsikko
+ other: Päivitettiin %{count} tarjouksen otsikkoa
+ preorders:
+ one: Päivitettiin %{count} ennakkotilauksen otsikko
+ other: Päivitettiin %{count} ennakkotilauksen otsikkoa
+ project_orders:
+ one: Päivitettiin %{count} projektin otsikko
+ other: Päivitettiin %{count} projektin otsikkoa
+ reclamation_orders:
+ one: Päivitettiin %{count} reklamaation otsikko
+ other: Päivitettiin %{count} reklamaation otsikkoa
+ sales_order_drafts:
+ one: Päivitettiin %{count} kesken oleva myyntitilauksen otsikko
+ other: Päivitettiin %{count} kesken olevaa myyntitilauksen otsikkoa
+ update_success: Toimitustapa päivitettiin onnistuneesti
+ work_orders:
+ one: Päivitettiin %{count} työmääräyksen otsikko
+ other: Päivitettiin %{count} työmääräyksen otsikkoa
+ waybill_options:
+ dpd_ftp: DPD ftp-siirto
+ dpd_waybill: DPD A5 PDF-rahtikirja
+ generic_a4: Yleisrahtikirja A4 PDF
+ itella_a5: Postin A5 PDF-rahtikirja
+ itella_priority_foreign: Itella Priority Ulkomaa
+ itella_thermal: Postin lämpösiirto-rahtikirja
+ no_waybill: Rahtikirjaa ei tulosteta
+ unifaun_online: Unifaun Online
+ unifaun_print_server: Unifaun Print Server
+ ups_ftp: UPS ftp-siirto
+ waybill_specification_options:
+ no_waybill_specification: Toimitustavalle ei tulosteta rahtikirjaerittelyä
+ print_waybill_specification: Toimitustavalle tulostetaan rahtikirjaerittely
+ print_waybill_specification_per_customer: Toimitustavalle tulostetaan rahtikirjaerittely per asiakas
fiscal_years:
create:
create_success: Tilikausi perustettiin onnistuneesti
@@ -757,6 +983,25 @@ fi:
kateistilitys_missing: Käteistilitystili puuttuu tai sitä ei löydy
luottokortti_missing: Luottokorttitili puuttuu tai sitä ei löydy
pankkikortti_missing: Pankkikorttitili puuttuu tai sitä ei löydy
+ delivery_method:
+ in_use_adr: 'HUOM: Et voi asettaa toimitustavalle VAK-kieltoa, sillä muut toimitustavat käyttävät tätä toimitustapaa vaihtoehtoisena VAK-toimitustapana'
+ in_use_customer_keywords: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} asiakkaan avainsanassa'
+ in_use_customers: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} asiakkaalla'
+ in_use_delivery_method: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} toimitustavalla'
+ in_use_freight_contracts: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} rahtisopimuksella'
+ in_use_freights: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} rahtimaksulla'
+ in_use_manufacture_orders: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} valmistuksella'
+ in_use_offer_orders: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} tarjouksella'
+ in_use_preorders: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} ennakkotilauksella'
+ in_use_project_orders: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} projektilla'
+ in_use_reclamation_orders: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} reklamaatiolla'
+ in_use_sales_order_drafts: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} keskeneräisellä myyntitilauksella'
+ in_use_sales_orders: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} toimittamattomalla myyntitilauksella'
+ in_use_stock_transfers: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} siirtolistalla'
+ in_use_waybills: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} rahtikirjalla'
+ in_use_work_orders: 'HUOM: Toimitustapaa ei voi poistaa, koska se on käytössä %{count} työmääräyksellä'
+ product_not_in_inventory_management: Tuotetta ei löydy / tuote pitää olla saldoton
+ unifaun_info_missing: 'HUOM: Koontierätulostus ei toimi Unifaun Online rahtikirjan kanssa ilman koontirahtikirjan pakkaustietoja'
format: "%{attribute} %{message}"
import:
action_incorrect: Virheellinen toiminto! Sarakkeen arvo tulee olla joko "lisää" tai "muokkaa".
@@ -835,6 +1080,9 @@ fi:
depreciation_difference_amount: Poistoerorivit
depreciation_rows_amount: Poistorivit
header: Poistorivit
+ destroy_commodity:
+ destroy_failure: Hyödykkeen poisto epäonnistui
+ destroy_success: Hyödykkeen poisto onnistui
edit:
button_activate: Aktivoi hyödyke
button_add_invoice_rows: Liitä ostolaskurivejä
@@ -900,9 +1148,6 @@ fi:
button_add: Liitä
button_search: Etsi
header: Liitä tositerivejä
- destroy_commodity:
- destroy_success: Hyödykkeen poisto onnistui
- destroy_failure: Hyödykkeen poisto epäonnistui
helpers:
select:
prompt: Valitse
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 65834b0e4..e6b4abdf4 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -3,581 +3,625 @@ sv:
activerecord:
attributes:
account:
- alv_taso:
- kohde:
- kustp:
+ alv_taso:
+ kohde:
+ kustp:
laatija: Skapare
luontiaika: Skapad
- muutospvm:
- muuttaja:
+ muutospvm:
+ muuttaja:
nimi: Namn
- projekti:
- sisainen_taso:
+ projekti:
+ sisainen_taso:
tilino: Kontonummer
- tiliointi_tarkistus:
- toimijaliitos:
- ulkoinen_taso:
+ tiliointi_tarkistus:
+ toimijaliitos:
+ ulkoinen_taso:
accounting/fixed_assets/commodity:
- evl_poistotyyppi:
+ evl_poistotyyppi:
kayttoonottopvm: Ibruktagningsdatum
bank_account:
asiakastunnus: Org.nummer
- bic:
- factoring:
- hyvak:
- iban:
+ bic:
+ factoring:
+ hyvak:
+ iban:
kaytossa: Status
- maksulimitti:
+ maksulimitti:
nimi: Namn
- oletus_kohde:
- oletus_kulutili:
- oletus_kustp:
- oletus_projekti:
- oletus_rahatili:
- oletus_selvittelytili:
+ oletus_kohde:
+ oletus_kulutili:
+ oletus_kustp:
+ oletus_projekti:
+ oletus_rahatili:
+ oletus_selvittelytili:
tilino: Kontonummer
- tilinylitys:
+ tilinylitys:
valkoodi: Valuta
bank_detail:
laatija: Skapare
luontiaika: Skapad
- muutospvm:
- muuttaja:
+ muutospvm:
+ muuttaja:
nimitys: Benämning
- pankkiiban1:
- pankkiiban2:
- pankkiiban3:
- pankkinimi1:
- pankkinimi2:
- pankkinimi3:
- pankkiswift1:
- pankkiswift2:
- pankkiswift3:
+ pankkiiban1:
+ pankkiiban2:
+ pankkiiban3:
+ pankkinimi1:
+ pankkinimi2:
+ pankkinimi3:
+ pankkiswift1:
+ pankkiswift2:
+ pankkiswift3:
pankkitili1: Kontonummer
pankkitili2: Kontonummer
pankkitili3: Kontonummer
- viite:
+ viite:
carrier:
- koodi:
+ koodi:
luontiaika: Skapad
- luottokortti:
+ luottokortti:
muutospvm: "ändringsdatum"
- muuttaja:
- neutraali:
+ muuttaja:
+ neutraali:
nimi: Namn
- pakkauksen_sarman_minimimitta:
+ pakkauksen_sarman_minimimitta:
cash_register:
kassa: Kassa
- kassaerotus:
- kateisotto:
- kateistilitys:
+ kassaerotus:
+ kateisotto:
+ kateistilitys:
kustp: Kostnadsställe
laatija: Skapare
luontiaika: Skapad
- luottokortti:
+ luottokortti:
muutospvm: "ändringsdatum"
muuttaja: omvandlare
nimi: Namn
- pankkikortti:
+ pankkikortti:
toimipaikka: Verksamhetsställe
company:
alv: Moms
- email:
- factoringsaamiset:
+ email:
+ factoringsaamiset:
fax: Fax
- int_koodi:
- intrastat_sarjanro:
+ int_koodi:
+ intrastat_sarjanro:
jarjestys: Ordning
- karhuerapvm:
- kassa:
- kassaale:
- kassaerotus:
- kateistilitys:
+ karhuerapvm:
+ kassa:
+ kassaale:
+ kassaerotus:
+ kateistilitys:
kieli: Språk
konserni: Koncern
konsernimyyntisaamiset: koncernförsäljningsfordringar
konserniostovelat: koncernköpskulder
- konsernisaamiset:
- konsernivelat:
+ konsernisaamiset:
+ konsernivelat:
kotipaikka: Hemplats
kotitullauslupa: hemförtullningstillstånd
kuluprosentti: Kostprocent
- laskutus_maa:
- laskutus_nimi:
- laskutus_osoite:
- laskutus_postino:
- laskutus_postitp:
- luottokortti:
- luottotappiot:
+ laskutus_maa:
+ laskutus_nimi:
+ laskutus_osoite:
+ laskutus_postino:
+ laskutus_postitp:
+ luottokortti:
+ luottotappiot:
maa: Land
- matkalla_olevat:
- muutkulut:
- myynninkassaale:
- myynninvaluuttaero:
+ matkalla_olevat:
+ muutkulut:
+ myynninkassaale:
+ myynninvaluuttaero:
myynti: Försäljning
- myynti_ei_eu:
- myynti_eu:
- myynti_kaanteinen:
- myynti_kohde:
- myynti_kustp:
- myynti_marginaali:
- myynti_projekti:
- myyntireskontrakausi_alku:
- myyntireskontrakausi_loppu:
+ myynti_ei_eu:
+ myynti_eu:
+ myynti_kaanteinen:
+ myynti_kohde:
+ myynti_kustp:
+ myynti_marginaali:
+ myynti_projekti:
+ myyntireskontrakausi_alku:
+ myyntireskontrakausi_loppu:
myyntisaamiset: Försäljningsfordringar
nimi: Namn
osoite: Adress
- osto_marginaali:
- ostoreskontrakausi_alku:
- ostoreskontrakausi_loppu:
+ osto_marginaali:
+ ostoreskontrakausi_alku:
+ ostoreskontrakausi_loppu:
ostovelat: leverantörsskulder
- ovttunnus:
- pankkiiban1:
- pankkiiban2:
- pankkiiban3:
- pankkikortti:
- pankkinimi1:
- pankkinimi2:
- pankkinimi3:
- pankkiswift1:
- pankkiswift2:
- pankkiswift3:
- pankkitili1:
- pankkitili2:
- pankkitili3:
+ ovttunnus:
+ pankkiiban1:
+ pankkiiban2:
+ pankkiiban3:
+ pankkikortti:
+ pankkinimi1:
+ pankkinimi2:
+ pankkinimi3:
+ pankkiswift1:
+ pankkiswift2:
+ pankkiswift3:
+ pankkitili1:
+ pankkitili2:
+ pankkitili3:
postino: Postnummer
postitp: Postanstalt
puhelin: Tel.
- pyoristys:
- raaka_ainevarasto:
- raaka_ainevarastonmuutos:
- selvittelytili:
- siirtosaamiset:
- siirtovelka:
+ pyoristys:
+ raaka_ainevarasto:
+ raaka_ainevarastonmuutos:
+ selvittelytili:
+ siirtosaamiset:
+ siirtovelka:
tilastotullikamari: statistiktullkammare
- tilikauden_tulos:
- tilikausi_alku:
- tilikausi_loppu:
- tilino_triang:
- tulli_lisattava_era:
- tulli_vahennettava_era:
+ tilikauden_tulos:
+ tilikausi_alku:
+ tilikausi_loppu:
+ tilino_triang:
+ tulli_lisattava_era:
+ tulli_vahennettava_era:
tullikamari: tullkammare
- tullin_asiaknro:
- tullin_lupanro:
+ tullin_asiaknro:
+ tullin_lupanro:
tullipaate: tullterminal
valkoodi: valuta
- valuuttaero:
- varasto:
+ valuuttaero:
+ varasto:
varastonmuutos: Lagerförändring
- varastonmuutos_epakurantti:
- varastonmuutos_inventointi:
- varastonmuutos_rahti:
- varastonmuutos_valmistuksesta:
- viivastyskorko:
+ varastonmuutos_epakurantti:
+ varastonmuutos_inventointi:
+ varastonmuutos_rahti:
+ varastonmuutos_valmistuksesta:
+ viivastyskorko:
www: web
ytunnus: Org.Nr
+ delivery_method:
+ jarjestys: Ordning
+ jvkulu: Postförskottsavgift
+ kuluprosentti: Kostprocent
+ merahti: Fraktkontrakt
+ selite: Benämning
+ tulostustapa: Utskriftsmetod
keyword:
jarjestys: Ordning
kieli: Språk
- laji:
+ laji:
selite: Benämning
- selitetark:
- selitetark_2:
- selitetark_3:
+ selitetark:
+ selitetark_2:
+ selitetark_3:
keyword/custom_attribute:
- database_field:
- default_value:
- help_text:
- label:
- required:
- set_name:
- visibility:
+ database_field:
+ default_value:
+ help_text:
+ label:
+ required:
+ set_name:
+ visibility:
keyword/revenue_expenditure:
selitetark_2: Antal
package:
- erikoispakkaus:
+ erikoispakkaus:
jarjestys: Ordning
- kayttoprosentti:
+ kayttoprosentti:
kieli: Språk
- korkeus:
- laji:
- leveys:
- minimi_paino:
+ korkeus:
+ laji:
+ leveys:
+ minimi_paino:
paino: Vikt
- pakkaus:
+ pakkaus:
pakkauskuvaus: Paketbeskrivning
- pakkausveloitus_tuotenumero:
- puukotus_kerroin:
+ pakkausveloitus_tuotenumero:
+ puukotus_kerroin:
selite: Benämning
- selitetark:
- selitetark_2:
- selitetark_3:
- syvyys:
- yksin_eraan:
+ selitetark:
+ selitetark_2:
+ selitetark_3:
+ syvyys:
+ yksin_eraan:
package_code:
- koodi:
- rahdinkuljettaja:
+ koodi:
+ rahdinkuljettaja:
package_codes:
- koodi:
- rahdinkuljettaja:
+ koodi:
+ rahdinkuljettaja:
packing_area:
- lokero:
+ lokero:
nimi: Namn
- pakkaamon_prio:
+ pakkaamon_prio:
printteri0: Plocklista
printteri1: Följesedel
printteri2: Artikeletiketter
printteri3: adresslapp
printteri4: Fraktsedel A5
printteri6: Fraktsedel A4
- printteri7:
+ printteri7:
prio: Prio
varasto: Lager
+ pending_updates:
+ value: Värde
printer:
ip: ip
jarjestys: Ordning
kirjoitin: Skrivare
komento: kommando
- mediatyyppi:
+ mediatyyppi:
mediatyyppi_types:
- A4:
- A5:
- LS149X104:
- LS59X40:
- LSN149X104:
- LSN59X40:
- kuittitulostin:
+ A4:
+ A5:
+ LS149X104:
+ LS59X40:
+ LSN149X104:
+ LSN59X40:
+ kuittitulostin:
merkisto: charset
merkisto_types:
- '1':
- '2':
- '3':
- '4':
- '5':
+ '1':
+ '2':
+ '3':
+ '4':
+ '5':
nimi: Namn
osoite: Adress
postino: Post Nr
postitp: Postadress
puhelin: Tel.
- unifaun_nimi:
+ unifaun_nimi:
yhteyshenkilo: Kontaktperson
qualifier:
- isa_tarkenne:
- kaytossa:
- koodi:
+ isa_tarkenne:
+ kaytossa:
+ koodi:
nimi: Namn
- tunnus:
+ tunnus:
tyyppi: Typ
terms_of_payment:
abs_pvm: Betalningsdag
- erapvmkasin:
- factoring:
- itsetulostus:
- jaksotettu:
+ erapvmkasin:
+ factoring:
+ itsetulostus:
+ jaksotettu:
jarjestys: Ordning
jv: Efterkrav
- kassa_abspvm:
- kassa_alepros:
- kassa_relpvm:
+ kassa_abspvm:
+ kassa_alepros:
+ kassa_relpvm:
kateinen: Kontant
- kaytossa:
+ kaytossa:
laatija: Skapare
luontiaika: Skapad
- muutospvm:
- muuttaja:
+ muutospvm:
+ muuttaja:
pankkiyhteystiedot: Bankuppgifter
- rel_pvm:
- sallitut_maat:
- teksti:
+ rel_pvm:
+ sallitut_maat:
+ teksti:
translations:
- kieli:
- selitetark:
+ kieli:
+ selitetark:
+ transport:
+ customer: Kund
+ password: Lösenord
+ username: Användarnamn
models:
account: Konto
bank_account: Bankkonto
- bank_detail:
- carrier:
- cash_register:
+ bank_detail:
+ carrier:
+ cash_register:
currency: Valuta
+ delivery_method: Leveranssätt
fiscal_year: Räkenskapsår
- head/purchase_invoice/approval:
- head/purchase_invoice/approved:
- head/purchase_invoice/paid:
- head/purchase_invoice/transfer:
- head/purchase_invoice/waiting:
+ head/purchase_invoice/approval:
+ head/purchase_invoice/approved:
+ head/purchase_invoice/paid:
+ head/purchase_invoice/transfer:
+ head/purchase_invoice/waiting:
head/purchase_order: Inköpsorder
head/sales_invoice: Försäljningsfaktura
head/sales_order: Försäljningsorder
head/sales_order_draft: "Öppen försäljningsorder"
- head/voucher:
- keyword/custom_attribute:
+ head/voucher:
+ keyword/custom_attribute:
package: Förpackning
- package_code:
- packing_area:
+ package_code:
+ packing_area:
printer: Skrivare
+ product/keyword: Nyckelord Artiklar
qualifier: Specifikation
qualifier/cost_center: Kostnadsställe
qualifier/project: Projekt
qualifier/target: Objekt
sum_level: Nivå
- sum_level/commodity:
- sum_level/external:
+ sum_level/commodity:
+ sum_level/external:
sum_level/internal: Intern
- sum_level/profit:
+ sum_level/profit:
sum_level/vat: Moms
terms_of_payment: Betalningsvillkor
administration:
accounts:
create:
- create_success:
+ create_success:
destroy:
- destroy_success:
+ destroy_success:
edit:
button_remove: Radera konto
- confirm_remove:
+ confirm_remove:
header: Konto
no_cost_center: Inget kostnadsställe
no_project: Inget projekt
- no_sum_level:
+ no_sum_level:
no_target: Inget objekt
- no_vat:
+ no_vat:
index:
button_search: Sök
header: Kontotabell
manuaali_esto_options:
- editing_disabled:
- editing_enabled:
+ editing_disabled:
+ editing_enabled:
tiliointi_tarkistus_options:
- mandatory_cs:
- mandatory_cs_project:
- mandatory_cs_target:
- mandatory_cs_target_project:
- mandatory_project:
- mandatory_target:
- mandatory_target_project:
- no_mandatory_fields:
+ mandatory_cs:
+ mandatory_cs_project:
+ mandatory_cs_target:
+ mandatory_cs_target_project:
+ mandatory_project:
+ mandatory_target:
+ mandatory_target_project:
+ no_mandatory_fields:
toimijaliitos_options:
- relation_not_required:
- relation_required:
+ relation_not_required:
+ relation_required:
update:
- update_success:
+ update_success:
actions:
- button_saving:
+ button_saving:
bank_accounts:
create:
- create_success:
+ create_success:
edit:
header: Bankkonto
factoring_options:
factoring_disabled: Ej factoring
- factoring_enabled:
+ factoring_enabled:
index:
button_search: Sök
- header:
- show_active:
+ header:
+ show_active:
show_inactive: Visa raderade
kaytossa_options:
- active:
+ active:
inactive: Borttagit / Inte i bruk
tilinylitys_options:
- limit_override_allowed:
- limit_override_denied:
+ limit_override_allowed:
+ limit_override_denied:
update:
- update_success:
+ update_success:
bank_details:
edit:
- header:
+ header:
index:
header: Bankuppgifter
bank_details_helper:
- empty:
+ empty:
finnish: Finska
swedish: Svenska
carriers:
edit:
- header:
+ header:
index:
button_search: Sök
- header:
+ header:
neutraali_options:
neutral: Ja
not_neutral: Nej
cash_registers:
create:
- create_success:
+ create_success:
edit:
- header:
+ header:
no_select: Inget val
index:
button_search: Sök
- header:
+ header:
update:
- update_success:
+ update_success:
currencies:
create:
- create_success:
+ create_success:
edit:
header: Valuta
index:
button_search: Sök
header: Valutor
update:
- update_success:
+ update_success:
custom_attributes:
edit:
- button_remove:
- confirm_remove:
- header:
+ button_remove:
+ confirm_remove:
+ header:
index:
button_search: Sök
- header:
+ header:
required_options:
- mandatory:
- optional:
+ mandatory:
+ optional:
visibility_options:
- hidden:
- visible:
+ hidden:
+ visible:
+ delivery_methods:
+ container_options:
+ includes_container: Ja
+ not_including_container: Nej
+ departures:
+ customer_group: kundklass
+ day_of_the_week_options:
+ friday: Fredag
+ monday: Måndag
+ saturday: Lördag
+ sunday: Söndag
+ thursday: Torsdag
+ tuesday: Tisdag
+ wednesday: Onsdag
+ status: Status
+ status_options:
+ not_in_use: ej i bruk
+ warehouse: Lager
+ edit:
+ header: Leveranssätt
+ no_select: Inget val
+ index:
+ button_search: Sök
+ header: Leveranssätt
+ label_options:
+ normal_label: Normal
fiscal_years:
create:
- create_success:
+ create_success:
edit:
header: Räkenskapsår
index:
button_search: Sök
header: Räkenskapsåren
update:
- update_success:
+ update_success:
packages:
create:
- create_success:
+ create_success:
edit:
header: Förpackning
erikoispakkaus_options:
- not_special:
- special:
+ not_special:
+ special:
index:
button_search: Sök
- header:
+ header:
package_codes:
- link_new:
+ link_new:
update:
- update_success:
+ update_success:
yksin_eraan_options:
- combined_parcel:
+ combined_parcel:
separate_parcel: Normal behandling
packing_areas:
create:
- create_success:
+ create_success:
destroy:
- destroy_success:
+ destroy_success:
edit:
- button_remove:
- confirm_remove:
- header:
+ button_remove:
+ confirm_remove:
+ header:
index:
button_search: Sök
- header:
+ header:
update:
- update_success:
+ update_success:
printers:
create:
- create_success:
+ create_success:
destroy:
- destroy_success:
+ destroy_success:
edit:
- button_remove:
- confirm_remove:
+ button_remove:
+ confirm_remove:
header: Skrivare
index:
button_search: Sök
header: Skrivare
mediatyyppi_options:
- media_a4:
- media_a5:
+ media_a4:
+ media_a5:
media_default: Inget val
- media_receipt:
- media_thermal1:
- media_thermal2:
- media_thermal3:
- media_thermal4:
+ media_receipt:
+ media_thermal1:
+ media_thermal2:
+ media_thermal3:
+ media_thermal4:
merkisto_options:
- charset_7bit:
- charset_ansi:
+ charset_7bit:
+ charset_ansi:
charset_default: Inget val
- charset_dos:
- charset_scandic_off:
- charset_utf8:
+ charset_dos:
+ charset_scandic_off:
+ charset_utf8:
update:
- update_success:
+ update_success:
qualifiers:
create:
- create_success:
+ create_success:
edit:
- header:
+ header:
index:
button_search: Sök
- button_show_active:
+ button_show_active:
button_show_removed: Visa raderade
- header:
+ header:
kaytossa_options:
in_use: Ja
not_in_use: Nej
update:
- update_success:
+ update_success:
sum_levels:
create:
- create_success:
+ create_success:
destroy:
- destroy_success:
+ destroy_success:
edit:
button_remove: Radera nivå
- confirm_remove:
- header:
+ confirm_remove:
+ header:
index:
button_search: Sök
- header:
+ header:
kayttotarkoitus_options:
normal: Inget val
- purchases:
+ purchases:
turnover: Omsättning
kumulatiivinen_options:
- cumulative:
+ cumulative:
not_cumulative: Nej
update:
- update_success:
+ update_success:
terms_of_payments:
cash_options:
- cash:
- credit_card:
- debit_card:
- not_cash:
+ cash:
+ credit_card:
+ debit_card:
+ not_cash:
create:
- create_success:
+ create_success:
edit:
header: Betalningsvillkor
no_factoring: Ej factoring
- use_company_defaults:
+ use_company_defaults:
in_use_options:
active: i bruk
inactive: Borttagit / Inte i bruk
index:
button_search: Sök
- button_show_active:
- button_show_removed:
- header:
+ button_show_active:
+ button_show_removed:
+ header:
update:
- update_success:
+ update_success:
translations:
language: Språk
- link_new:
- text:
+ link_new:
+ text:
update_access:
- forbidden:
+ forbidden:
application:
access_control:
- forbidden:
+ forbidden:
authorize:
- unauthorized:
+ unauthorized:
+ data_export:
+ product_keywords:
+ header: Nyckelord Artiklar
date:
abbr_day_names:
- sön
@@ -588,7 +632,7 @@ sv:
- fre
- lör
abbr_month_names:
- -
+ -
- jan
- feb
- mar
@@ -614,7 +658,7 @@ sv:
long: "%e %B %Y"
short: "%e %b"
month_names:
- -
+ -
- januari
- februari
- mars
@@ -674,21 +718,25 @@ sv:
month: Månad
second: Sekund
year: "År"
+ downloads:
+ index:
+ created_at: Skapad
+ destroy: Radera
errors:
cash_register:
- kassa_missing:
- kassaerotus_missing:
- kateisotto_missing:
- kateistilitys_missing:
- luottokortti_missing:
- pankkikortti_missing:
+ kassa_missing:
+ kassaerotus_missing:
+ kateisotto_missing:
+ kateistilitys_missing:
+ luottokortti_missing:
+ pankkikortti_missing:
format: "%{attribute} %{message}"
messages:
accepted: måste vara accepterad
- after:
- after_or_equal_to:
- before:
- before_or_equal_to:
+ after:
+ after_or_equal_to:
+ before:
+ before_or_equal_to:
blank: måste anges
confirmation: stämmer inte överens %{attribute}
empty: får ej vara tom
@@ -701,7 +749,7 @@ sv:
invalid: har fel format
less_than: måste vara mindre än %{count}
less_than_or_equal_to: måste vara mindre än eller lika med %{count}
- not_a_date:
+ not_a_date:
not_a_number: "är inte ett nummer"
not_an_integer: måste vara ett heltal
odd: måste vara udda
@@ -716,89 +764,89 @@ sv:
too_short: "är för kort (minimum är %{count} tecken)"
wrong_length: har fel längd (ska vara %{count} tecken)
packing_area:
- duplicate_cells:
+ duplicate_cells:
qualifier:
- accounts_found:
+ accounts_found:
sum_level:
- begin_with_error:
- invalid_char:
- not_same_type:
+ begin_with_error:
+ invalid_char:
+ not_same_type:
template:
body: 'Det var problem med följande fält:'
header:
one: Ett fel förhindrade denna %{model} från att sparas
other: "%{count} fel förhindrade denna %{model} från att sparas"
terms_of_payment:
- in_use_customers:
- in_use_sales_order_drafts:
- in_use_sales_orders:
+ in_use_customers:
+ in_use_sales_order_drafts:
+ in_use_sales_orders:
fixed_assets:
commodities:
activate:
- activation_failure:
- activation_success:
+ activation_failure:
+ activation_success:
commodity_rows:
button_show_hide: Visa / Dölj
- commodity_row_amount:
- header:
+ commodity_row_amount:
+ header:
confirm_sale:
- sale_failure:
- sale_success:
+ sale_failure:
+ sale_success:
create:
- create_success:
+ create_success:
depreciations:
button_show_hide: Visa / Dölj
- depreciation_difference_amount:
- depreciation_rows_amount:
- header:
+ depreciation_difference_amount:
+ depreciation_rows_amount:
+ header:
edit:
- button_activate:
- button_add_invoice_rows:
- button_add_voucher_rows:
- button_create:
- button_sell:
- header:
+ button_activate:
+ button_add_invoice_rows:
+ button_add_voucher_rows:
+ button_create:
+ button_sell:
+ header:
form:
- bookkeeping_value:
- bookkeeping_value_now:
+ bookkeeping_value:
+ bookkeeping_value_now:
index:
- button_search:
- header:
+ button_search:
+ header:
link_order:
- link_order_success:
+ link_order_success:
link_voucher:
- link_voucher_success:
+ link_voucher_success:
link_voucher_row:
- cannot_link_row:
- row_already_linked:
+ cannot_link_row:
+ row_already_linked:
new:
- header:
+ header:
procurement_rows:
- button_remove:
- header:
+ button_remove:
+ header:
purchase_orders:
- button_add:
- button_search:
- header:
+ button_add:
+ button_search:
+ header:
sell:
- confirm_sale:
- header:
+ confirm_sale:
+ header:
unlink:
- unlink_success:
+ unlink_success:
unlink_voucher_row:
- cannot_unlink:
+ cannot_unlink:
update:
- update_success:
+ update_success:
vouchers:
- button_add:
- button_search:
- header:
+ button_add:
+ button_search:
+ header:
helpers:
select:
prompt: Välj
submit:
create: Skapa %{model}
- destroy:
+ destroy:
new: Ny %{model}
submit: Spara %{model}
update: "Ändra %{model}"
@@ -842,12 +890,61 @@ sv:
percentage:
format:
format: "%n%"
+ pending_product_updates:
+ index:
+ deleted: Status
+ label: Benämning
+ search: Sök
+ sku: Artikelnummer
+ suppliers_sku: Leverantörs Art Nr
+ list:
+ label: Benämning
+ price: Pris
+ save: Spara ändringarna
+ sku: Artikelnummer
+ list_of_changes:
+ not_found: Inga artiklar hittades
+ pending_columns_options:
+ sales_price: "ÅfNetto"
+ shop_price: Butikpris
+ short_description: Kort beskrivning
+ pending_price_options:
+ sales_price: "ÅfNetto"
+ shop_price: Butikpris
+ pending_update_fields:
+ delete: Radera
+ products:
+ categories_selection:
+ brand: Märke
+ category: Avdelning
+ subcategory: Grupp
reports:
revenue_expenditure:
index:
accounts_receivable: Försäljningsfordringar
summary: Totalt
week: Vecka
+ stock_availability:
+ form:
+ constraints: Begränsning
+ show_data:
+ past: Försenat
+ product: Artikel
+ purchases: På kommande
+ stock: Lagersaldo
+ total: Totalt
+ week: Vecka
+ view_connected_sales_orders:
+ delivery_date: Leveransdatum
+ information: Orderreferens
+ order_number: Ordernummer
+ ordered_amount: Beställda
+ product_info: Artikelnummer
+ shipping_address: Leveransadress
+ total_amount: Fakturabelopp
+ stock_listing_csv:
+ index:
+ run: Kör rapport
shared:
excel:
time: Körtid
@@ -862,9 +959,9 @@ sv:
two_words_connector: " och "
words_connector: ", "
time:
- am:
+ am:
formats:
default: "%a, %e %b %Y %H:%M:%S %z"
long: "%e %B %Y %H:%M"
short: "%e %b %H:%M"
- pm:
+ pm:
diff --git a/config/routes.rb b/config/routes.rb
index f58775f25..182e58392 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -36,6 +36,7 @@
resources :currencies, except: :destroy
resources :custom_attributes
resources :customer_transports
+ resources :delivery_methods
resources :fiscal_years, except: :destroy
resources :packages
resources :packing_areas
diff --git a/db/migrate/20150916134159_update_delivery_method_permissions.rb b/db/migrate/20150916134159_update_delivery_method_permissions.rb
new file mode 100644
index 000000000..63ad8c6f8
--- /dev/null
+++ b/db/migrate/20150916134159_update_delivery_method_permissions.rb
@@ -0,0 +1,18 @@
+require File.expand_path('test/permission_helper')
+include PermissionHelper
+
+class UpdateDeliveryMethodPermissions < ActiveRecord::Migration
+ def up
+ PermissionHelper.add_item(
+ program: 'Ylläpito',
+ name: 'Toimitustavat',
+ uri: 'pupenext/delivery_methods'
+ )
+ end
+
+ def down
+ PermissionHelper.remove_all(
+ uri: 'pupenext/delivery_methods'
+ )
+ end
+end
diff --git a/db/migrate/20151106095621_remove_fields_from_toimitustavat_toimipaikat.rb b/db/migrate/20151106095621_remove_fields_from_toimitustavat_toimipaikat.rb
new file mode 100644
index 000000000..58d55f6e2
--- /dev/null
+++ b/db/migrate/20151106095621_remove_fields_from_toimitustavat_toimipaikat.rb
@@ -0,0 +1,24 @@
+class RemoveFieldsFromToimitustavatToimipaikat < ActiveRecord::Migration
+ def up
+ remove_column :toimitustavat_toimipaikat, :yhtio
+ remove_column :toimitustavat_toimipaikat, :laatija
+ remove_column :toimitustavat_toimipaikat, :muuttaja
+ remove_column :toimitustavat_toimipaikat, :luontiaika
+ remove_column :toimitustavat_toimipaikat, :muutospvm
+
+ add_index :toimitustavat_toimipaikat, :toimitustapa_tunnus
+ add_index :toimitustavat_toimipaikat, :toimipaikka_tunnus
+ end
+
+ def down
+ add_column :toimitustavat_toimipaikat, :yhtio, :string, limit: 5, default: '', null: false
+ add_column :toimitustavat_toimipaikat, :laatija, :string, limit: 50, default: '', null: false, after: :yhtio
+ add_column :toimitustavat_toimipaikat, :muuttaja, :string, limit: 50, default: '', null: false, after: :yhtio
+ add_column :toimitustavat_toimipaikat, :luontiaika, :datetime, after: :yhtio
+ add_column :toimitustavat_toimipaikat, :muutospvm, :datetime, after: :yhtio
+
+ remove_index :toimitustavat_toimipaikat, column: :toimitustapa_tunnus
+ remove_index :toimitustavat_toimipaikat, column: :toimipaikka_tunnus
+ add_index :toimitustavat_toimipaikat, :yhtio, name: 'yhtio_index'
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 1d862153b..ee671213d 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -2645,16 +2645,12 @@
end
create_table "toimitustavat_toimipaikat", primary_key: "tunnus", force: :cascade do |t|
- t.string "yhtio", limit: 5, default: "", null: false
- t.integer "toimitustapa_tunnus", limit: 4, null: false
- t.integer "toimipaikka_tunnus", limit: 4, null: false
- t.string "laatija", limit: 50, default: "", null: false
- t.datetime "luontiaika", null: false
- t.datetime "muutospvm", null: false
- t.string "muuttaja", limit: 50, default: "", null: false
+ t.integer "toimitustapa_tunnus", limit: 4, null: false
+ t.integer "toimipaikka_tunnus", limit: 4, null: false
end
- add_index "toimitustavat_toimipaikat", ["yhtio"], name: "yhtio_index", using: :btree
+ add_index "toimitustavat_toimipaikat", ["toimipaikka_tunnus"], name: "index_toimitustavat_toimipaikat_on_toimipaikka_tunnus", using: :btree
+ add_index "toimitustavat_toimipaikat", ["toimitustapa_tunnus"], name: "index_toimitustavat_toimipaikat_on_toimitustapa_tunnus", using: :btree
create_table "transports", force: :cascade do |t|
t.integer "transportable_id", limit: 4
diff --git a/test/classes/postal_official_legend_test.rb b/test/classes/postal_official_legend_test.rb
new file mode 100644
index 000000000..8a17997cf
--- /dev/null
+++ b/test/classes/postal_official_legend_test.rb
@@ -0,0 +1,8 @@
+require 'test_helper'
+
+class PostalOfficialLegendTest < ActiveSupport::TestCase
+ test 'should get proper legend' do
+ legends = PostalOfficialLegend.options
+ assert_equal Array, legends.class
+ end
+end
diff --git a/test/controllers/administration/delivery_method_controller_test.rb b/test/controllers/administration/delivery_method_controller_test.rb
new file mode 100644
index 000000000..1c4de14b4
--- /dev/null
+++ b/test/controllers/administration/delivery_method_controller_test.rb
@@ -0,0 +1,210 @@
+require 'test_helper'
+
+class Administration::DeliveryMethodsControllerTest < ActionController::TestCase
+ fixtures %w(
+ delivery_methods
+ delivery_method/departures
+ packages
+ locations
+ )
+
+ def setup
+ login users(:bob)
+ @delivery_method = delivery_methods(:kaukokiito)
+ end
+
+ test 'should get index' do
+ get :index
+ assert_response :success
+
+ assert_template "index", "Template should be index"
+ end
+
+ test 'should get edit' do
+ get :edit, id: @delivery_method.tunnus
+ assert_response :success
+ end
+
+ test 'show should be edit' do
+ get :show, id: @delivery_method.tunnus
+ assert_response :success
+ end
+
+ test 'should create delivery method' do
+ assert_difference('DeliveryMethod.count', 1, response.body) do
+
+ params = {
+ selite: "Random delivery method",
+ tulostustapa: 'H',
+ sopimusnro: '',
+ nouto: :shipment,
+ ei_pakkaamoa: '1',
+ extranet: :only_in_sales,
+ rahtikirja: 'generic_a4',
+ jarjestys: 1
+ }
+
+ post :create, delivery_method: params
+ assert_redirected_to delivery_methods_path
+ end
+ end
+
+ test 'should not create delivery method' do
+ assert_no_difference('DeliveryMethod.count') do
+
+ params = {
+ not_existing_column: true,
+ nouto: ''
+ }
+
+ post :create, delivery_method: params
+ assert_template "edit", "Template should be edit"
+ end
+ end
+
+ test 'should update delivery method' do
+ params = { tulostustapa: :collective_batch }
+
+ patch :update, id: @delivery_method.id, delivery_method: params
+ assert_redirected_to delivery_methods_path
+ end
+
+ test 'should not update delivery method' do
+ params = { selite: 'Kiitolinja' }
+
+ patch :update, id: @delivery_method.id, delivery_method: params
+ assert_template "edit", "Template should be edit"
+ end
+
+ test "should delete delivery method" do
+ deli2 = delivery_methods :kiitolinja
+
+ assert_difference("DeliveryMethod.count", -1) do
+ delete :destroy, id: deli2.id
+ end
+
+ assert_redirected_to delivery_methods_path
+ end
+
+ test 'should save sallitut_alustat array as string' do
+ package_one = packages(:steel_barrel).id
+ package_two = packages(:oak_barrel).id
+
+ params = { sallitut_alustat: [ package_one, package_two, '' ] }
+
+ patch :update, id: @delivery_method.id, delivery_method: params
+ assert_redirected_to delivery_methods_path
+
+ assert_equal "#{package_one},#{package_two}", @delivery_method.reload.sallitut_alustat
+ end
+
+ test "should add translations" do
+ params = {
+ translations_attributes: [
+ { kieli: 'no', selitetark: 'Kaukokiito Transports' }
+ ]
+ }
+
+ assert_difference 'Keyword::DeliveryMethodTranslation.count' do
+ patch :update, id: @delivery_method.id, delivery_method: params
+ end
+ end
+
+ test "should update and destroy translations" do
+ translated = keywords :deliverymethod_locale_en
+
+ params = {
+ translations_attributes: [
+ { id: translated.id, selitetark: 'a translation' }
+ ]
+ }
+
+ assert_no_difference('Keyword::DeliveryMethodTranslation.count') do
+ patch :update, id: translated.delivery_method.id, delivery_method: params
+ end
+
+ assert_equal 'a translation', translated.reload.selitetark
+
+ params = {
+ translations_attributes: [
+ { id: translated.id, _destroy: 'true' }
+ ]
+ }
+
+ assert_difference('Keyword::DeliveryMethodTranslation.count', -1) do
+ patch :update, id: translated.delivery_method.id, delivery_method: params
+ end
+ end
+
+ test "should update departure date" do
+ params = {
+ departures_attributes: [
+ { id: @delivery_method.departures.first.id, alkupvm: { day: '12', month: '10', year: '2015' } }
+ ]
+ }
+
+ patch :update, id: @delivery_method.id, delivery_method: params
+
+ assert_equal '2015-10-12', @delivery_method.departures.first.reload.alkupvm.to_s
+ end
+
+ test "should create departure" do
+ params = {
+ departures_attributes: [
+ {
+ alkupvm: { day: '12', month: '10', year: '2015' },
+ kerailyn_aloitusaika: '12:00:00',
+ lahdon_kellonaika: '13:20:56',
+ viimeinen_tilausaika: '23:59:59',
+ lahdon_viikonpvm: 1,
+ varasto: 10
+ }
+ ]
+ }
+
+ assert_difference('DeliveryMethod::Departure.count', 1) do
+ patch :update, id: @delivery_method.id, delivery_method: params
+ end
+ end
+
+ test 'should destroy departure' do
+ params = {
+ departures_attributes: [
+ { id: @delivery_method.departures.first.id, _destroy: 'true' }
+ ]
+ }
+
+ assert_difference('DeliveryMethod::Departure.count', -1) do
+ patch :update, id: @delivery_method.id, delivery_method: params
+ end
+ end
+
+ test 'should add locations' do
+ @delivery_method.locations.delete_all
+
+ params = {
+ id: @delivery_method.id,
+ delivery_method: {
+ location_ids: [@delivery_method.company.locations.first.id]
+ }
+ }
+
+ assert_difference('@delivery_method.locations.count', 1) do
+ patch :update, params
+ end
+ end
+
+ test 'should remove locations' do
+ assert_equal 1, @delivery_method.locations.count
+
+ params = {
+ id: @delivery_method.id,
+ delivery_method: {
+ location_ids: []
+ }
+ }
+
+ patch :update, params
+ assert_equal 0, @delivery_method.locations.count
+ end
+end
diff --git a/test/controllers/data_export_controller_test.rb b/test/controllers/data_export_controller_test.rb
index a719d4c32..283457aae 100644
--- a/test/controllers/data_export_controller_test.rb
+++ b/test/controllers/data_export_controller_test.rb
@@ -44,7 +44,7 @@ class DataExportControllerTest < ActionController::TestCase
header = ["Tuoteno", "Malliston nimi", "Tuotteen väri"]
assert_equal header, excel.row(1)
- row = ["hammer123", "Aluminium", " "]
+ row = ["non_inventory_manageable_product", " ", " "]
assert_equal row, excel.row(2)
end
end
diff --git a/test/fixtures/customer_keywords.yml b/test/fixtures/customer_keywords.yml
new file mode 100644
index 000000000..859ff6d84
--- /dev/null
+++ b/test/fixtures/customer_keywords.yml
@@ -0,0 +1,10 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ luontiaika: <%= Time.now %>
+ laatija: joe
+ muutospvm: <%= Time.now %>
+ muuttaja: joe
+
+keyword_1:
+ avainsana: Kaukokiito
+ <<: *DEFAULTS
diff --git a/test/fixtures/customers.yml b/test/fixtures/customers.yml
index b5baafc52..7a2f33a99 100644
--- a/test/fixtures/customers.yml
+++ b/test/fixtures/customers.yml
@@ -1,8 +1,14 @@
-stubborn_customer:
- asiakasnro: 100
+DEFAULTS: &DEFAULTS
yhtio: acme
+ luontiaika: <%= Time.now %>
+ laatija: joe
+ muutospvm: <%= Time.now %>
+ muuttaja: joe
+
+stubborn_customer:
ytunnus: FI12345678
ovttunnus: 003712345678
+ asiakasnro: 100
nimi: Very stubborn customer
osoite: Street 1
postino: 00100
@@ -13,9 +19,8 @@ stubborn_customer:
kieli: fi
valkoodi: eur
terms_of_payment: sixty_days_net
+ toimitustapa: Kaukokiito
osasto: 1
ryhma: 10
- laatija: joe
- luontiaika: <%= Date.today %>
- muutospvm: <%= Date.today %>
- muuttaja: joe
+ luokka: 100
+ <<: *DEFAULTS
diff --git a/test/fixtures/delivery_method/departures.yml b/test/fixtures/delivery_method/departures.yml
new file mode 100644
index 000000000..a8408f751
--- /dev/null
+++ b/test/fixtures/delivery_method/departures.yml
@@ -0,0 +1,14 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ luontiaika: <%= Time.now %>
+ laatija: joe
+ muutospvm: <%= Time.now %>
+ muuttaja: joe
+
+# Ostotilaus
+departure_one:
+ liitostunnus: <%= ActiveRecord::FixtureSet.identify(:kaukokiito) %>
+ kerailyn_aloitusaika: '12:00:00'
+ lahdon_kellonaika: '13:24:59'
+ alkupvm: 0
+ <<: *DEFAULTS
diff --git a/test/fixtures/delivery_methods.yml b/test/fixtures/delivery_methods.yml
new file mode 100644
index 000000000..120568421
--- /dev/null
+++ b/test/fixtures/delivery_methods.yml
@@ -0,0 +1,25 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ muuttaja: joe
+ laatija: joe
+ luontiaika: <%= Time.now %>
+ muutospvm: <%= Time.now %>
+
+kaukokiito:
+ kauppatapahtuman_luonne: 11
+ poistumistoimipaikka_koodi: FI0
+ lajittelupiste: FIVAT
+ kuljetusmuoto: 1
+ osoitelappu: tiivistetty
+ rahdinkuljettaja: Kaukokiito
+ rahtikirja: rahtikirja.inc
+ selite: Kaukokiito
+ tulostustapa: H
+ <<: *DEFAULTS
+
+kiitolinja:
+ rahdinkuljettaja: Kiitolinja
+ rahtikirja: rahtikirja_pdf.inc
+ selite: Kiitolinja
+ tulostustapa: H
+ <<: *DEFAULTS
diff --git a/test/fixtures/freight_contracts.yml b/test/fixtures/freight_contracts.yml
new file mode 100644
index 000000000..909c5e096
--- /dev/null
+++ b/test/fixtures/freight_contracts.yml
@@ -0,0 +1,7 @@
+kaukokiito_freight_contract:
+ yhtio: acme
+ toimitustapa: Kaukokiito
+ laatija: joe
+ luontiaika: <%= Date.today %>
+ muutospvm: <%= Date.today %>
+ muuttaja: joe
diff --git a/test/fixtures/freights.yml b/test/fixtures/freights.yml
new file mode 100644
index 000000000..d7ee4c6c3
--- /dev/null
+++ b/test/fixtures/freights.yml
@@ -0,0 +1,7 @@
+kaukokiito_freight:
+ yhtio: acme
+ toimitustapa: Kaukokiito
+ laatija: joe
+ luontiaika: <%= Date.today %>
+ muutospvm: <%= Date.today %>
+ muuttaja: joe
diff --git a/test/fixtures/keyword/customer_groups.yml b/test/fixtures/keyword/customer_groups.yml
new file mode 100644
index 000000000..2fce0b0c6
--- /dev/null
+++ b/test/fixtures/keyword/customer_groups.yml
@@ -0,0 +1,15 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ luontiaika: <%= Time.now %>
+ muutospvm: <%= Time.now %>
+ laji: ASIAKASLUOKKA
+
+reipas:
+ selite: 100
+ selitetark: Reipas
+ <<: *DEFAULTS
+
+laiska:
+ selite: 200
+ selitetark: Laiska
+ <<: *DEFAULTS
diff --git a/test/fixtures/keywords.yml b/test/fixtures/keywords.yml
index a985fffb9..39884be96 100644
--- a/test/fixtures/keywords.yml
+++ b/test/fixtures/keywords.yml
@@ -1,24 +1,22 @@
DEFAULTS: &DEFAULTS
+ yhtio: acme
muuttaja: joe
laatija: joe
luontiaika: <%= Time.now %>
muutospvm: <%= Time.now %>
vat:
- yhtio: acme
selite: 24
laji: ALV
<<: *DEFAULTS
foreign_vat:
- yhtio: acme
selite: 5.5
selitetark_2: SE
laji: ALV
<<: *DEFAULTS
category_tools:
- yhtio: acme
selite: 1000
selitetark: Tools
kieli: fi
@@ -26,7 +24,6 @@ category_tools:
<<: *DEFAULTS
category_gears:
- yhtio: acme
selite: 1001
selitetark: Gears
kieli: fi
@@ -34,7 +31,6 @@ category_gears:
<<: *DEFAULTS
category_winter:
- yhtio: acme
selite: 1005
selitetark: Winter
kieli: fi
@@ -42,7 +38,6 @@ category_winter:
<<: *DEFAULTS
subcategory_tools:
- yhtio: acme
selite: 2000
selitetark: Power tools
kieli: fi
@@ -50,7 +45,6 @@ subcategory_tools:
<<: *DEFAULTS
subcategory_gears:
- yhtio: acme
selite: 2001
selitetark: Full-face helmet
kieli: fi
@@ -58,21 +52,48 @@ subcategory_gears:
<<: *DEFAULTS
brand_tools:
- yhtio: acme
selite: Bosch
kieli: fi
laji: TUOTEMERKKI
<<: *DEFAULTS
brand_gears:
- yhtio: acme
selite: Alpinestars
kieli: fi
laji: TUOTEMERKKI
<<: *DEFAULTS
+mode_of_transport:
+ selite: 1
+ selitetark: 1 - Merikuljetus (ml. auto- ja junalauttakuljetus)
+ laji: KM
+ <<: *DEFAULTS
+
+nature_of_transaction:
+ selite: 11
+ selitetark: 11 - Suora osto/myynti
+ laji: KT
+ <<: *DEFAULTS
+
+terminal_area:
+ selite: LASTAUS
+ selitetark: Lastauslaituri
+ laji: TERMINAALIALUE
+ <<: *DEFAULTS
+
+customs:
+ selite: FI0
+ selitetark: Helsinki Postitulli
+ laji: TULLI
+ <<: *DEFAULTS
+
+sorting_point:
+ selite: FIVAT
+ selitetark: FIVAT
+ laji: TOIMTAPALP
+ <<: *DEFAULTS
+
top_locale_se:
- yhtio: acme
selite: <%= ActiveRecord::FixtureSet.identify(:sixty_days_net) %>
selitetark: 60 dagar netto
kieli: se
@@ -80,15 +101,20 @@ top_locale_se:
<<: *DEFAULTS
top_locale_en:
- yhtio: acme
selite: <%= ActiveRecord::FixtureSet.identify(:sixty_days_net) %>
selitetark: 60 days net
kieli: en
laji: MAKSUEHTOKV
<<: *DEFAULTS
+deliverymethod_locale_en:
+ selite: <%= ActiveRecord::FixtureSet.identify(:kaukokiito) %>
+ selitetark: Kaukokiito Logistics
+ kieli: en
+ laji: TOIMTAPAKV
+ <<: *DEFAULTS
+
mysql_alias_1:
- yhtio: acme
laji: MYSQLALIAS
selite: asiakas.nimi
selitetark: Nimiskuukkeli
@@ -100,7 +126,6 @@ mysql_alias_1:
<<: *DEFAULTS
mysql_alias_2:
- yhtio: acme
laji: MYSQLALIAS
selite: asiakas.nimi
selitetark: Kumisniikkeli
@@ -112,7 +137,6 @@ mysql_alias_2:
<<: *DEFAULTS
package_locale_en:
- yhtio: acme
selite: <%= ActiveRecord::FixtureSet.identify(:steel_barrel) %>
selitetark: Steel Barrel
kieli: en
@@ -120,7 +144,6 @@ package_locale_en:
<<: *DEFAULTS
weekly_alternative_expenditure_one:
- yhtio: acme
laji: REVENUEREP
selite: 38 / 2015
selitetark: Palkat
@@ -128,7 +151,6 @@ weekly_alternative_expenditure_one:
<<: *DEFAULTS
status_active:
- yhtio: acme
selite: A
selitetark: Aktiivi
laji: S
diff --git a/test/fixtures/locations.yml b/test/fixtures/locations.yml
new file mode 100644
index 000000000..6dd1360ad
--- /dev/null
+++ b/test/fixtures/locations.yml
@@ -0,0 +1,13 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ muuttaja: joe
+ laatija: joe
+ luontiaika: <%= Time.now %>
+ muutospvm: <%= Time.now %>
+
+tokyo:
+ nimi: Acme Tokyo Headquarters
+ osoite: Shibuya
+ maa: JP
+ delivery_methods: kaukokiito, kiitolinja
+ <<: *DEFAULTS
diff --git a/test/fixtures/manufacture_order/orders.yml b/test/fixtures/manufacture_order/orders.yml
index 43942e617..bd306153c 100644
--- a/test/fixtures/manufacture_order/orders.yml
+++ b/test/fixtures/manufacture_order/orders.yml
@@ -1,4 +1,5 @@
DEFAULTS: &DEFAULTS
+ yhtio: acme
luontiaika: <%= Time.now %>
laatija: joe
muutospvm: <%= Time.now %>
@@ -22,6 +23,6 @@ DEFAULTS: &DEFAULTS
popvm: <%= Time.now %>
mo_one:
- yhtio: acme
tila: V
+ toimitustapa: Kaukokiito
<<: *DEFAULTS
diff --git a/test/fixtures/offer_order/orders.yml b/test/fixtures/offer_order/orders.yml
new file mode 100644
index 000000000..01c232e24
--- /dev/null
+++ b/test/fixtures/offer_order/orders.yml
@@ -0,0 +1,29 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ luontiaika: <%= Time.now %>
+ laatija: joe
+ muutospvm: <%= Time.now %>
+ muuttaja: joe
+ tapvm: <%= Time.now %>
+ lapvm: <%= Time.now %>
+ kapvm: <%= Time.now %>
+ erpcm: <%= Time.now %>
+ olmapvm: <%= Time.now %>
+ kerayspvm: <%= Time.now %>
+ toimaika: <%= Time.now %>
+ maksuaika: <%= Time.now %>
+ lahetepvm: <%= Time.now %>
+ laskutettu: <%= Time.now %>
+ h1time: <%= Time.now %>
+ h2time: <%= Time.now %>
+ h3time: <%= Time.now %>
+ h4time: <%= Time.now %>
+ h5time: <%= Time.now %>
+ mapvm: <%= Time.now %>
+ popvm: <%= Time.now %>
+
+# Tarjoustilaus
+offer_one:
+ tila: T
+ toimitustapa: Kaukokiito
+ <<: *DEFAULTS
diff --git a/test/fixtures/packages.yml b/test/fixtures/packages.yml
index 49a69f90c..3ee89ea48 100644
--- a/test/fixtures/packages.yml
+++ b/test/fixtures/packages.yml
@@ -10,3 +10,16 @@ steel_barrel:
muutospvm: <%= Time.now %>
laatija: joe
muuttaja: joe
+
+oak_barrel:
+ yhtio: acme
+ pakkaus: 2A
+ pakkauskuvaus: Tammitynnyri
+ leveys: 10
+ korkeus: 10
+ syvyys: 10
+ paino: 10
+ luontiaika: <%= Time.now %>
+ muutospvm: <%= Time.now %>
+ laatija: joe
+ muuttaja: joe
diff --git a/test/fixtures/parameters.yml b/test/fixtures/parameters.yml
index 47a6d262a..9efead190 100644
--- a/test/fixtures/parameters.yml
+++ b/test/fixtures/parameters.yml
@@ -2,6 +2,7 @@ acme:
yhtio: acme
css: "* { font-family: sans-serif }"
maventa_aikaleima: <%= Time.now %>
+ kerayserat: K
varastopaikkojen_maarittely: M
muuttaja: joe
laatija: joe
diff --git a/test/fixtures/permissions.yml b/test/fixtures/permissions.yml
index fb983706e..877dc4cf5 100644
--- a/test/fixtures/permissions.yml
+++ b/test/fixtures/permissions.yml
@@ -16,6 +16,7 @@
customers
data_export
data_import
+ delivery_methods
depreciation_difference
downloads
fiscal_years
diff --git a/test/fixtures/preorder/orders.yml b/test/fixtures/preorder/orders.yml
new file mode 100644
index 000000000..1d691541a
--- /dev/null
+++ b/test/fixtures/preorder/orders.yml
@@ -0,0 +1,29 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ luontiaika: <%= Time.now %>
+ laatija: joe
+ muutospvm: <%= Time.now %>
+ muuttaja: joe
+ tapvm: <%= Time.now %>
+ lapvm: <%= Time.now %>
+ kapvm: <%= Time.now %>
+ erpcm: <%= Time.now %>
+ olmapvm: <%= Time.now %>
+ kerayspvm: <%= Time.now %>
+ toimaika: <%= Time.now %>
+ maksuaika: <%= Time.now %>
+ lahetepvm: <%= Time.now %>
+ laskutettu: <%= Time.now %>
+ h1time: <%= Time.now %>
+ h2time: <%= Time.now %>
+ h3time: <%= Time.now %>
+ h4time: <%= Time.now %>
+ h5time: <%= Time.now %>
+ mapvm: <%= Time.now %>
+ popvm: <%= Time.now %>
+
+# Ennakkotilaus
+pre_one:
+ tila: E
+ toimitustapa: Kaukokiito
+ <<: *DEFAULTS
diff --git a/test/fixtures/products.yml b/test/fixtures/products.yml
index 74b112713..8b193a690 100644
--- a/test/fixtures/products.yml
+++ b/test/fixtures/products.yml
@@ -47,3 +47,10 @@ pr1:
nimitys: Päiväraha
tuotetyyppi: A
<<: *DEFAULTS
+
+non_manageable:
+ yhtio: acme
+ tuoteno: non_inventory_manageable_product
+ nimitys: Jarrusatula
+ ei_saldoa: o
+ <<: *DEFAULTS
diff --git a/test/fixtures/project_order/orders.yml b/test/fixtures/project_order/orders.yml
new file mode 100644
index 000000000..7420fa1e1
--- /dev/null
+++ b/test/fixtures/project_order/orders.yml
@@ -0,0 +1,29 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ luontiaika: <%= Time.now %>
+ laatija: joe
+ muutospvm: <%= Time.now %>
+ muuttaja: joe
+ tapvm: <%= Time.now %>
+ lapvm: <%= Time.now %>
+ kapvm: <%= Time.now %>
+ erpcm: <%= Time.now %>
+ olmapvm: <%= Time.now %>
+ kerayspvm: <%= Time.now %>
+ toimaika: <%= Time.now %>
+ maksuaika: <%= Time.now %>
+ lahetepvm: <%= Time.now %>
+ laskutettu: <%= Time.now %>
+ h1time: <%= Time.now %>
+ h2time: <%= Time.now %>
+ h3time: <%= Time.now %>
+ h4time: <%= Time.now %>
+ h5time: <%= Time.now %>
+ mapvm: <%= Time.now %>
+ popvm: <%= Time.now %>
+
+# Projektitilaus
+project_one:
+ tila: R
+ toimitustapa: Kaukokiito
+ <<: *DEFAULTS
diff --git a/test/fixtures/reclamation_order/orders.yml b/test/fixtures/reclamation_order/orders.yml
new file mode 100644
index 000000000..9ad7906e6
--- /dev/null
+++ b/test/fixtures/reclamation_order/orders.yml
@@ -0,0 +1,29 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ luontiaika: <%= Time.now %>
+ laatija: joe
+ muutospvm: <%= Time.now %>
+ muuttaja: joe
+ tapvm: <%= Time.now %>
+ lapvm: <%= Time.now %>
+ kapvm: <%= Time.now %>
+ erpcm: <%= Time.now %>
+ olmapvm: <%= Time.now %>
+ kerayspvm: <%= Time.now %>
+ toimaika: <%= Time.now %>
+ maksuaika: <%= Time.now %>
+ lahetepvm: <%= Time.now %>
+ laskutettu: <%= Time.now %>
+ h1time: <%= Time.now %>
+ h2time: <%= Time.now %>
+ h3time: <%= Time.now %>
+ h4time: <%= Time.now %>
+ h5time: <%= Time.now %>
+ mapvm: <%= Time.now %>
+ popvm: <%= Time.now %>
+
+# Reklamaatiotilaus
+reclamation_one:
+ tila: C
+ toimitustapa: Kaukokiito
+ <<: *DEFAULTS
diff --git a/test/fixtures/sales_order/drafts.yml b/test/fixtures/sales_order/drafts.yml
index e97349b57..5776295a4 100644
--- a/test/fixtures/sales_order/drafts.yml
+++ b/test/fixtures/sales_order/drafts.yml
@@ -1,4 +1,5 @@
DEFAULTS: &DEFAULTS
+ yhtio: acme
luontiaika: <%= Time.now %>
laatija: joe
muutospvm: <%= Time.now %>
@@ -22,8 +23,8 @@ DEFAULTS: &DEFAULTS
popvm: <%= Time.now %>
not_finished_order:
- yhtio: acme
tila: N
alatila: ''
terms_of_payment: hundred_days_net
+ toimitustapa: Kaukokiito
<<: *DEFAULTS
diff --git a/test/fixtures/sales_order/orders.yml b/test/fixtures/sales_order/orders.yml
index e94effb5e..e4f74225b 100644
--- a/test/fixtures/sales_order/orders.yml
+++ b/test/fixtures/sales_order/orders.yml
@@ -1,4 +1,5 @@
DEFAULTS: &DEFAULTS
+ yhtio: acme
luontiaika: <%= Time.now %>
laatija: joe
muutospvm: <%= Time.now %>
@@ -23,20 +24,17 @@ DEFAULTS: &DEFAULTS
# Myyntitilaus
so_one:
- yhtio: acme
tila: L
<<: *DEFAULTS
-
not_delivered_order_1:
- yhtio: acme
tila: L
alatila: A
terms_of_payment: eighty_days_net
+ toimitustapa: Kaukokiito
<<: *DEFAULTS
not_delivered_order_2:
- yhtio: acme
tila: L
alatila: C
terms_of_payment: ninety_days_net
diff --git a/test/fixtures/stock_transfer/orders.yml b/test/fixtures/stock_transfer/orders.yml
index fb4f9271d..00d0a755a 100644
--- a/test/fixtures/stock_transfer/orders.yml
+++ b/test/fixtures/stock_transfer/orders.yml
@@ -24,4 +24,5 @@ DEFAULTS: &DEFAULTS
st_one:
yhtio: acme
tila: G
+ toimitustapa: Kaukokiito
<<: *DEFAULTS
diff --git a/test/fixtures/waybills.yml b/test/fixtures/waybills.yml
new file mode 100644
index 000000000..56ba245af
--- /dev/null
+++ b/test/fixtures/waybills.yml
@@ -0,0 +1,7 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+
+waybill_one:
+ toimitustapa: Kaukokiito
+ tulostettu: 0
+ <<: *DEFAULTS
diff --git a/test/fixtures/work_order/orders.yml b/test/fixtures/work_order/orders.yml
new file mode 100644
index 000000000..c4bc30d34
--- /dev/null
+++ b/test/fixtures/work_order/orders.yml
@@ -0,0 +1,29 @@
+DEFAULTS: &DEFAULTS
+ yhtio: acme
+ luontiaika: <%= Time.now %>
+ laatija: joe
+ muutospvm: <%= Time.now %>
+ muuttaja: joe
+ tapvm: <%= Time.now %>
+ lapvm: <%= Time.now %>
+ kapvm: <%= Time.now %>
+ erpcm: <%= Time.now %>
+ olmapvm: <%= Time.now %>
+ kerayspvm: <%= Time.now %>
+ toimaika: <%= Time.now %>
+ maksuaika: <%= Time.now %>
+ lahetepvm: <%= Time.now %>
+ laskutettu: <%= Time.now %>
+ h1time: <%= Time.now %>
+ h2time: <%= Time.now %>
+ h3time: <%= Time.now %>
+ h4time: <%= Time.now %>
+ h5time: <%= Time.now %>
+ mapvm: <%= Time.now %>
+ popvm: <%= Time.now %>
+
+# Työmääräystilaus
+work_one:
+ tila: A
+ toimitustapa: Kaukokiito
+ <<: *DEFAULTS
diff --git a/test/helpers/carrier_helper_test.rb b/test/helpers/carrier_helper_test.rb
index 60e1eb9db..cbfb2c97f 100644
--- a/test/helpers/carrier_helper_test.rb
+++ b/test/helpers/carrier_helper_test.rb
@@ -1,6 +1,8 @@
require 'test_helper'
class CarrierHelperTest < ActionView::TestCase
+ fixtures %w(carriers)
+
test "returns translated neutraali options valid for collection" do
assert neutraali_options.is_a? Array
@@ -8,4 +10,9 @@ class CarrierHelperTest < ActionView::TestCase
assert_equal text, neutraali_options.first.first
assert_equal 'neutral', neutraali_options.first.second
end
+
+ test "should get carrier options" do
+ assert_kind_of Array, carrier_options
+ assert_equal 'HIT', carrier_options.first.second
+ end
end
diff --git a/test/helpers/delivery_method_helper_test.rb b/test/helpers/delivery_method_helper_test.rb
new file mode 100644
index 000000000..0a2bd5d7a
--- /dev/null
+++ b/test/helpers/delivery_method_helper_test.rb
@@ -0,0 +1,148 @@
+require 'test_helper'
+
+class DeliveryMethodHelperTest < ActionView::TestCase
+ fixtures %w(delivery_methods)
+
+ test "returns translated pickup options valid for collection" do
+ assert pickup_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.pickup_options.shipment'
+ assert_equal text, pickup_options.first.first
+ assert_equal 'shipment', pickup_options.first.second
+ end
+
+ test "returns translated saturday delivery options valid for collection" do
+ assert saturday_delivery_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.saturday_delivery_options.saturday_delivery'
+ assert_equal text, saturday_delivery_options.second.first
+ assert_equal 'saturday_delivery', saturday_delivery_options.second.second
+ end
+
+ test "returns translated transport unit options valid for collection" do
+ assert transport_unit_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.transport_unit_options.transport_unit'
+ assert_equal text, transport_unit_options.second.first
+ assert_equal 'transport_unit', transport_unit_options.second.second
+ end
+
+ test "returns translated print method options valid for collection" do
+ assert print_method_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.print_method_options.batch'
+ assert_equal text, print_method_options.first.first
+ assert_equal 'batch', print_method_options.first.second
+ end
+
+ test "returns translated freight contract options valid for collection" do
+ assert freight_contract_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.freight_contract_options.receiver_freight_contract'
+ assert_equal text, freight_contract_options.first.first
+ assert_equal 'receiver_freight_contract', freight_contract_options.first.second
+ end
+
+ test "returns translated logy waybill number options valid for collection" do
+ assert logy_waybill_number_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.logy_waybill_number_options.use_logy_waybill_numbers'
+ assert_equal text, logy_waybill_number_options.second.first
+ assert_equal 'use_logy_waybill_numbers', logy_waybill_number_options.second.second
+ end
+
+ test "returns translated extranet options valid for collection" do
+ assert extranet_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.extranet_options.only_in_sales'
+ assert_equal text, extranet_options.first.first
+ assert_equal 'only_in_sales', extranet_options.first.second
+ end
+
+ test "returns translated container options valid for collection" do
+ assert container_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.container_options.not_including_container'
+ assert_equal text, container_options.first.first
+ assert_equal 'not_including_container', container_options.first.second
+ end
+
+ test "returns translated cash on delivery prohibition options valid for collection" do
+ assert cash_on_delivery_prohibition_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.cash_on_delivery_prohibition_options.cash_on_delivery_permitted'
+ assert_equal text, cash_on_delivery_prohibition_options.first.first
+ assert_equal 'cash_on_delivery_permitted', cash_on_delivery_prohibition_options.first.second
+ end
+
+ test "returns translated special packaging prohibition options valid for collection" do
+ assert special_packaging_prohibition_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.special_packaging_prohibition_options.special_packaging_permitted'
+ assert_equal text, special_packaging_prohibition_options.first.first
+ assert_equal 'special_packaging_permitted', special_packaging_prohibition_options.first.second
+ end
+
+ test "returns translated packing line prohibition options valid for collection" do
+ assert packing_line_prohibition_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.packing_line_prohibition_options.reserve_packing_line'
+ assert_equal text, packing_line_prohibition_options.first.first
+ assert_equal 'reserve_packing_line', packing_line_prohibition_options.first.second
+ end
+
+ test "returns translated waybill specification options valid for collection" do
+ assert waybill_specification_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.waybill_specification_options.print_waybill_specification'
+ assert_equal text, waybill_specification_options.second.first
+ assert_equal 'print_waybill_specification', waybill_specification_options.second.second
+ end
+
+ test "returns translated new packaging information options for collection" do
+ assert new_packaging_information_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.new_packaging_information_options.package_info_entry_denied'
+ assert_equal text, new_packaging_information_options.first.first
+ assert_equal 'package_info_entry_denied', new_packaging_information_options.first.second
+ end
+
+ test "returns translated transportation insurance type options for collection" do
+ assert transportation_insurance_type_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.transportation_insurance_type_options.currency_based_insurance'
+ assert_equal text, transportation_insurance_type_options.third.first
+ assert_equal 'currency_based_insurance', transportation_insurance_type_options.third.second
+ end
+
+ test "should get label options" do
+ Current.company.parameter.kerayserat = ''
+
+ assert_kind_of Array, label_options
+ assert_equal 'Tiivistetty', label_options.third.first
+ refute label_options.any? { |_,key| key == 'simple_label' }
+
+ Current.company.parameter.kerayserat = 'K'
+
+ assert_kind_of Array, label_options
+ assert label_options.any? { |_,key| key == 'simple_label' }
+ end
+
+ test "should get adr prohibition options" do
+ assert_kind_of Array, adr_prohibition_options
+ assert_operator 2, '<', adr_prohibition_options.count
+ assert_equal 'Kaukokiito', adr_prohibition_options.third.second
+
+ text = I18n.t 'administration.delivery_methods.adr_prohibition_options.permit_adr'
+ assert_equal text, adr_prohibition_options.first.first
+ end
+
+ test "should get alternative adr delivery method options" do
+ assert_kind_of Array, alternative_adr_delivery_method_options
+ assert_operator 2, '<', alternative_adr_delivery_method_options.count
+ assert_equal 'Kaukokiito', alternative_adr_delivery_method_options.second.second
+
+ text = I18n.t 'administration.delivery_methods.alternative_adr_delivery_method_options.adr_products_transfer_prohibition'
+ assert_equal text, alternative_adr_delivery_method_options.first.first
+ end
+end
diff --git a/test/helpers/departure_helper_test.rb b/test/helpers/departure_helper_test.rb
new file mode 100644
index 000000000..065fd45eb
--- /dev/null
+++ b/test/helpers/departure_helper_test.rb
@@ -0,0 +1,44 @@
+require 'test_helper'
+
+class Administration::DepartureHelperTest < ActionView::TestCase
+ fixtures %w(
+ keyword/customer_groups
+ warehouses
+ )
+
+ test "returns translated departure options valid for collection" do
+ assert day_of_the_week_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.departures.day_of_the_week_options.monday', :fi
+ assert_equal text, day_of_the_week_options.first.first
+ assert_equal 1, day_of_the_week_options.first.second
+ end
+
+ test "returns terminal area options valid for collection" do
+ assert terminal_area_options.is_a? Array
+
+ assert_equal 'Lastauslaituri', terminal_area_options.first.first
+ assert_equal 'LASTAUS', terminal_area_options.first.second
+ end
+
+ test "returns customer group options valid for collection" do
+ assert customer_group_options.is_a? Array
+
+ assert_equal 'Laiska', customer_group_options.first.first
+ assert_equal '200', customer_group_options.first.second
+ end
+
+ test "returns warehouse options valid for collection" do
+ assert warehouse_options.is_a? Array
+
+ assert_equal 'Veikkolan varasto', warehouse_options.first.first
+ end
+
+ test "returns status options valid for collection" do
+ assert status_options.is_a? Array
+
+ text = I18n.t 'administration.delivery_methods.departures.status_options.not_in_use', :fi
+ assert_equal text, status_options.second.first
+ assert_equal :not_in_use, status_options.second.second
+ end
+end
diff --git a/test/helpers/keyword_helper_test.rb b/test/helpers/keyword_helper_test.rb
new file mode 100644
index 000000000..3a3483f1f
--- /dev/null
+++ b/test/helpers/keyword_helper_test.rb
@@ -0,0 +1,23 @@
+require 'test_helper'
+
+class KeywordHelperTest < ActionView::TestCase
+ test "should get mode of transport options" do
+ assert_kind_of Array, mode_of_transport_options
+ assert_equal '1 - Merikuljetus (ml. auto- ja junalauttakuljetus)', mode_of_transport_options.first.first
+ end
+
+ test "should get nature of transaction options" do
+ assert_kind_of Array, nature_of_transaction_options
+ assert_equal '11 - Suora osto/myynti', nature_of_transaction_options.first.first
+ end
+
+ test "should get customs options" do
+ assert_kind_of Array, customs_options
+ assert_equal 'FI0', customs_options.first.second
+ end
+
+ test "should get sorting point options" do
+ assert_kind_of Array, sorting_point_options
+ assert_equal 'FIVAT', sorting_point_options.first.second
+ end
+end
diff --git a/test/integration/browser_detection_test.rb b/test/integration/browser_detection_test.rb
index 229dc3932..f9634137e 100644
--- a/test/integration/browser_detection_test.rb
+++ b/test/integration/browser_detection_test.rb
@@ -4,18 +4,18 @@ class BrowserDetectionTest < ActionDispatch::IntegrationTest
include LoginHelper
test "browsers are detected correctly" do
- bob = users(:bob)
+ bob = users :bob
+ bob.update! kayttoliittyma: "U"
+ login bob
- bob.update(kayttoliittyma: "U")
- login users(:bob)
-
- { "Firefox" => "pupesoft_mozilla.css",
- "Trident Windows" => "pupesoft_ms_ie.css",
- "Chrome Windows" => "pupesoft_ms_chrome.css" }.each do |browser, css_file|
+ # use regex because css file contains random assets pipeline part: filename-[randompart].css
+ { "Firefox" => /pupesoft_mozilla\-.+\.css/,
+ "Trident Windows" => /pupesoft_ms_ie\-.+\.css/,
+ "Chrome Windows" => /pupesoft_ms_chrome\-.+\.css/ }.each do |browser, css_file|
get "/accounts", {}, { "User-Agent" => browser }
- assert_includes(response.body, css_file)
+ assert_match css_file, response.body, "#{browser} does not include #{css_file}"
end
end
end
diff --git a/test/models/company_test.rb b/test/models/company_test.rb
index 92ead2020..20614d193 100644
--- a/test/models/company_test.rb
+++ b/test/models/company_test.rb
@@ -23,10 +23,12 @@ class CompanyTest < ActiveSupport::TestCase
assert @acme.commodities.count > 0
assert @acme.cost_centers.count > 0
assert @acme.currencies.count > 0
+ assert @acme.customer_transports.count > 0
assert @acme.customers.count > 0
assert @acme.factorings.count > 0
assert @acme.fiscal_years.count > 0
assert @acme.keywords.count > 0
+ assert @acme.locations.count > 0
assert @acme.manufacture_orders.count > 0
assert @acme.package_codes.count > 0
assert @acme.packages.count > 0
@@ -43,8 +45,7 @@ class CompanyTest < ActiveSupport::TestCase
assert @acme.suppliers.count > 0
assert @acme.targets.count > 0
assert @acme.terms_of_payments.count > 0
- assert_equal 1, @acme.transports.count
- assert_equal 2, @acme.customer_transports.count
+ assert @acme.transports.count > 0
assert @acme.users.count > 0
assert @acme.warehouses.count > 0
end
diff --git a/test/models/customer_test.rb b/test/models/customer_test.rb
index 237ed5534..2dfc84bbb 100644
--- a/test/models/customer_test.rb
+++ b/test/models/customer_test.rb
@@ -5,6 +5,7 @@ class CustomerTest < ActiveSupport::TestCase
customer_prices
customers
keyword/customer_categories
+ keyword/customer_groups
keyword/customer_subcategories
products
transports
@@ -17,6 +18,7 @@ class CustomerTest < ActiveSupport::TestCase
@ski = products :ski
@customer_category_1 = keyword_customer_categories :customer_category_1
@customer_subcategory_1 = keyword_customer_subcategories :customer_subcategory_1
+ @reipas = keyword_customer_groups :reipas
end
test 'fixtures are valid' do
@@ -27,6 +29,7 @@ class CustomerTest < ActiveSupport::TestCase
assert_equal 2, @one.transports.count
assert_equal @customer_category_1, @one.category
assert_equal @customer_subcategory_1, @one.subcategory
+ assert_equal @reipas, @one.group
assert @one.prices.count > 0
assert @one.products.count > 0
end
diff --git a/test/models/delivery_method_test.rb b/test/models/delivery_method_test.rb
new file mode 100644
index 000000000..776644b0d
--- /dev/null
+++ b/test/models/delivery_method_test.rb
@@ -0,0 +1,392 @@
+require 'test_helper'
+
+class DeliveryMethodTest < ActiveSupport::TestCase
+ fixtures %w(
+ customer_keywords
+ customers
+ delivery_method/departures
+ delivery_methods
+ freight_contracts
+ freights
+ heads
+ locations
+ manufacture_order/orders
+ offer_order/orders
+ preorder/orders
+ products
+ project_order/orders
+ reclamation_order/orders
+ sales_order/drafts
+ sales_order/orders
+ stock_transfer/orders
+ waybills
+ work_order/orders
+ )
+
+ def setup
+ @kaukokiito = delivery_methods :kaukokiito
+ @kiitolinja = delivery_methods :kiitolinja
+ @departure = delivery_method_departures :departure_one
+
+ # setup fixtures for all delivery method relations
+ @cust = customers :stubborn_customer
+ @cust_key = customer_keywords :keyword_1
+ @order = sales_order_orders :not_delivered_order_1
+ @draft = sales_order_drafts :not_finished_order
+ @stock = stock_transfer_orders :st_one
+ @preorder = preorder_orders :pre_one
+ @offer = offer_order_orders :offer_one
+ @manufacture = manufacture_order_orders :mo_one
+ @work = work_order_orders :work_one
+ @project = project_order_orders :project_one
+ @reclamation = reclamation_order_orders :reclamation_one
+ @freight = freights :kaukokiito_freight
+ @contract = freight_contracts :kaukokiito_freight_contract
+ @waybill = waybills :waybill_one
+ end
+
+ test 'relations' do
+ assert @kaukokiito.customer_keywords.count > 0
+ assert @kaukokiito.customers.count > 0
+ assert @kaukokiito.customs.count > 0
+ assert @kaukokiito.departures.count > 0
+ assert @kaukokiito.freight_contracts.count > 0
+ assert @kaukokiito.freights.count > 0
+ assert @kaukokiito.locations.count > 0
+ assert @kaukokiito.manufacture_orders.count > 0
+ assert @kaukokiito.mode_of_transports.count > 0
+ assert @kaukokiito.nature_of_transactions.count > 0
+ assert @kaukokiito.offer_orders.count > 0
+ assert @kaukokiito.preorders.count > 0
+ assert @kaukokiito.project_orders.count > 0
+ assert @kaukokiito.reclamation_orders.count > 0
+ assert @kaukokiito.sales_order_drafts.count > 0
+ assert @kaukokiito.sales_orders.not_delivered.count > 0
+ assert @kaukokiito.sorting_point.count > 0
+ assert @kaukokiito.stock_transfers.not_delivered.count > 0
+ assert @kaukokiito.translations.count > 0
+ assert @kaukokiito.waybills.count > 0
+ assert @kaukokiito.work_orders.count > 0
+ end
+
+ test "fixtures should be valid" do
+ assert @kaukokiito.valid?, @kaukokiito.errors.messages
+ assert @departure.valid?, @departure.errors.full_messages
+ end
+
+ test "selite should be unique" do
+ error = I18n.t 'errors.messages.taken'
+ @kaukokiito.selite = @kiitolinja.selite
+
+ refute @kaukokiito.valid?
+ assert_equal error, @kaukokiito.errors[:selite].first
+ end
+
+ test 'valid vak_kielto values' do
+ @kaukokiito.vak_kielto = ''
+ assert @kaukokiito.valid?
+
+ @kaukokiito.vak_kielto = 'K'
+ assert @kaukokiito.valid?
+
+ @kaukokiito.vak_kielto = 'not valid'
+ refute @kaukokiito.valid?
+
+ # should allow the name of any other delivery method that accepts adr
+ dm = delivery_methods :kiitolinja
+ dm.update! vak_kielto: ''
+
+ @kaukokiito.vak_kielto = dm.selite
+ assert @kaukokiito.valid?
+
+ # should NOT allow the name of delivery method if it does not accept adr
+ dm.update! vak_kielto: 'K'
+
+ refute @kaukokiito.valid?
+ end
+
+ test 'should not allow changing vak_kielto if used as alternative adr method' do
+ # set kaukokiito to allow adr shipments
+ @kaukokiito.update! vak_kielto: ''
+
+ # set kiitolinja to have kaukokiito as alternative adr shipping method
+ @kiitolinja.update! vaihtoehtoinen_vak_toimitustapa: @kaukokiito.selite
+
+ # try to change kaukokiito to deny adr shipments
+ @kaukokiito.vak_kielto = 'K'
+
+ # should not be allowed
+ error = I18n.t 'errors.delivery_method.in_use_adr'
+ refute @kaukokiito.valid?
+ assert_equal error, @kaukokiito.errors.messages[:vak_kielto].first
+ end
+
+ test 'should validate freight sku' do
+ @kaukokiito.rahti_tuotenumero = 'non_inventory_manageable_product'
+ assert @kaukokiito.valid?
+
+ error = I18n.t 'errors.delivery_method.product_not_in_inventory_management'
+ @kaukokiito.rahti_tuotenumero = 'hammer123'
+
+ refute @kaukokiito.valid?
+ assert_equal error, @kaukokiito.errors.messages[:rahti_tuotenumero].first
+ end
+
+ test 'should validate cargo insurance sku' do
+ @kaukokiito.kuljetusvakuutus_tuotenumero = 'non_inventory_manageable_product'
+ assert @kaukokiito.valid?
+
+ error = I18n.t 'errors.delivery_method.product_not_in_inventory_management'
+ @kaukokiito.kuljetusvakuutus_tuotenumero = 'hammer123'
+
+ refute @kaukokiito.valid?
+ assert_equal error, @kaukokiito.errors.messages[:kuljetusvakuutus_tuotenumero].first
+ end
+
+ test 'should validate alternative adr prohibition' do
+ @kaukokiito.vaihtoehtoinen_vak_toimitustapa = ''
+ assert @kaukokiito.valid?
+
+ error = I18n.t 'errors.messages.inclusion'
+ @kaukokiito.vaihtoehtoinen_vak_toimitustapa = 'neko'
+ refute @kaukokiito.valid?
+ assert_equal error, @kaukokiito.errors[:vaihtoehtoinen_vak_toimitustapa].first
+ end
+
+ test 'unifaun info is present' do
+ error = I18n.t 'errors.delivery_method.unifaun_info_missing'
+
+ # If we have collective_batch and package_info_entry_denied we cannot use unifaun online
+ @kaukokiito.tulostustapa = :collective_batch
+ @kaukokiito.uudet_pakkaustiedot = :package_info_entry_denied
+ @kaukokiito.rahtikirja = :unifaun_online
+
+ refute @kaukokiito.valid?
+ assert_equal error, @kaukokiito.errors.messages[:base].first
+
+ # If we have collective_batch and package_info_entry_denied we cannot use unifaun print server
+ @kaukokiito.rahtikirja = :unifaun_print_server
+ refute @kaukokiito.valid?
+ assert_equal error, @kaukokiito.errors.messages[:base].first
+
+ # Not using unifaun is ok
+ @kaukokiito.rahtikirja = :generic_a4
+ assert @kaukokiito.valid?
+
+ # Unifaun with package_info_entry_allowed is ok
+ @kaukokiito.rahtikirja = :unifaun_print_server
+ @kaukokiito.uudet_pakkaustiedot = :package_info_entry_allowed
+ assert @kaukokiito.valid?
+
+ # Unifaun with batch is ok
+ @kaukokiito.uudet_pakkaustiedot = :package_info_entry_denied
+ @kaukokiito.tulostustapa = :batch
+ assert @kaukokiito.valid?
+ end
+
+ test 'do not delete delivery method if it is in use' do
+ # set kiitolinja delivery method for all available relations
+ dm_name = @kiitolinja.selite
+ @kaukokiito.update! vak_kielto: '', vaihtoehtoinen_vak_toimitustapa: ''
+ @cust.update! toimitustapa: dm_name
+ @cust_key.update! avainsana: dm_name
+ @order.update! toimitustapa: dm_name
+ @draft.update! toimitustapa: dm_name
+ @stock.update! toimitustapa: dm_name
+ @preorder.update! toimitustapa: dm_name
+ @offer.update! toimitustapa: dm_name
+ @manufacture.update! toimitustapa: dm_name
+ @work.update! toimitustapa: dm_name
+ @project.update! toimitustapa: dm_name
+ @reclamation.update! toimitustapa: dm_name
+ @freight.update! toimitustapa: dm_name
+ @contract.update! toimitustapa: dm_name
+ @waybill.update! toimitustapa: dm_name
+
+ kaukokiito = @kaukokiito.dup
+
+ # We should be able to destroy kaukokiito, it's not used anywhere
+ assert_difference('DeliveryMethod.count', -1) do
+ @kaukokiito.destroy
+ end
+
+ # Let's get kaukokiito back
+ kaukokiito.save!
+ dm_name = kaukokiito.selite
+
+ # Set kaukokiito as alternative adr for kiitolinja
+ @kiitolinja.update! vak_kielto: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_delivery_method', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito as alternative adr for kiitolinja
+ @kiitolinja.update! vak_kielto: '', vaihtoehtoinen_vak_toimitustapa: dm_name
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito as default for customer
+ @kiitolinja.update! vak_kielto: '', vaihtoehtoinen_vak_toimitustapa: ''
+ @cust.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_customers', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito as default for customer keyword
+ @cust.update! toimitustapa: ''
+ @cust_key.update! avainsana: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_customer_keywords', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an order
+ @cust_key.update! avainsana: ''
+ @order.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_sales_orders', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an order draft
+ @order.update! toimitustapa: ''
+ @draft.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_sales_order_drafts', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an stock transfer
+ @draft.update! toimitustapa: ''
+ @stock.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_stock_transfers', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an preorder
+ @stock.update! toimitustapa: ''
+ @preorder.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_preorders', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an offer
+ @preorder.update! toimitustapa: ''
+ @offer.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_offer_orders', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an manufacture order
+ @offer.update! toimitustapa: ''
+ @manufacture.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_manufacture_orders', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an workorder
+ @manufacture.update! toimitustapa: ''
+ @work.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_work_orders', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an project
+ @work.update! toimitustapa: ''
+ @project.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_project_orders', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an reclamation
+ @project.update! toimitustapa: ''
+ @reclamation.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_reclamation_orders', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an freight
+ @reclamation.update! toimitustapa: ''
+ @freight.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_freights', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an freight contract
+ @freight.update! toimitustapa: ''
+ @contract.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_freight_contracts', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+
+ # Set kaukokiito to an waybill
+ @contract.update! toimitustapa: ''
+ @waybill.update! toimitustapa: dm_name
+ error = I18n.t 'errors.delivery_method.in_use_waybills', count: 1
+
+ refute kaukokiito.destroy
+ assert_equal error, kaukokiito.errors.messages[:base].last
+ end
+
+ test 'should update relations when updating selite' do
+ # set delivery method to all available relations
+ @kiitolinja.update! vak_kielto: @kaukokiito.selite, vaihtoehtoinen_vak_toimitustapa: @kaukokiito.selite
+ @cust.update! toimitustapa: @kaukokiito.selite
+ @cust_key.update! avainsana: @kaukokiito.selite
+ @order.update! toimitustapa: @kaukokiito.selite
+ @draft.update! toimitustapa: @kaukokiito.selite
+ @stock.update! toimitustapa: @kaukokiito.selite
+ @preorder.update! toimitustapa: @kaukokiito.selite
+ @offer.update! toimitustapa: @kaukokiito.selite
+ @manufacture.update! toimitustapa: @kaukokiito.selite
+ @work.update! toimitustapa: @kaukokiito.selite
+ @project.update! toimitustapa: @kaukokiito.selite
+ @reclamation.update! toimitustapa: @kaukokiito.selite
+ @freight.update! toimitustapa: @kaukokiito.selite
+ @contract.update! toimitustapa: @kaukokiito.selite
+ @waybill.update! toimitustapa: @kaukokiito.selite
+
+ # change the delivery method name
+ new_name = 'Kaukokiito kakkoinen'
+ @kaukokiito.update! selite: new_name
+
+ # we should have a flash notice
+ assert_not_empty @kaukokiito.flash_notice
+
+ # should change everywhere
+ assert_equal new_name, @kiitolinja.reload.vak_kielto
+ assert_equal new_name, @kiitolinja.vaihtoehtoinen_vak_toimitustapa
+ assert_equal new_name, @cust.reload.toimitustapa
+ assert_equal new_name, @cust_key.reload.avainsana
+ assert_equal new_name, @order.reload.toimitustapa
+ assert_equal new_name, @draft.reload.toimitustapa
+ assert_equal new_name, @stock.reload.toimitustapa
+ assert_equal new_name, @preorder.reload.toimitustapa
+ assert_equal new_name, @offer.reload.toimitustapa
+ assert_equal new_name, @manufacture.reload.toimitustapa
+ assert_equal new_name, @work.reload.toimitustapa
+ assert_equal new_name, @project.reload.toimitustapa
+ assert_equal new_name, @reclamation.reload.toimitustapa
+ assert_equal new_name, @freight.reload.toimitustapa
+ assert_equal new_name, @contract.reload.toimitustapa
+ assert_equal new_name, @waybill.reload.toimitustapa
+
+ # change something else than the delivery method name
+ @kaukokiito.update! virallinen_selite: new_name
+
+ # we should not have a flash notice
+ assert_empty @kaukokiito.flash_notice
+ end
+end
diff --git a/test/models/keyword/customer_category_test.rb b/test/models/keyword/customer_category_test.rb
index 241b76d94..99c8a02f4 100644
--- a/test/models/keyword/customer_category_test.rb
+++ b/test/models/keyword/customer_category_test.rb
@@ -13,6 +13,7 @@ class Keyword::CustomerCategoryTest < ActiveSupport::TestCase
test 'fixtures are valid' do
assert @one.valid?, @one.errors.full_messages
+ assert @two.valid?, @two.errors.full_messages
end
test 'associations work' do
diff --git a/test/models/keyword/customer_group_test.rb b/test/models/keyword/customer_group_test.rb
new file mode 100644
index 000000000..df3e6d2c2
--- /dev/null
+++ b/test/models/keyword/customer_group_test.rb
@@ -0,0 +1,23 @@
+require 'test_helper'
+
+class Keyword::CustomerGroupTest < ActiveSupport::TestCase
+ fixtures %w(
+ customers
+ keyword/customer_groups
+ )
+
+ setup do
+ @reipas = keyword_customer_groups :reipas
+ @laiska = keyword_customer_groups :laiska
+ end
+
+ test 'fixtures are valid' do
+ assert @reipas.valid?, @reipas.errors.full_messages
+ assert @laiska.valid?, @laiska.errors.full_messages
+ end
+
+ test 'associations work' do
+ assert_equal 1, @reipas.customers.count
+ assert_equal 0, @laiska.customers.count
+ end
+end
diff --git a/test/models/keyword_test.rb b/test/models/keyword_test.rb
index 6d402fd5b..9515fd49b 100644
--- a/test/models/keyword_test.rb
+++ b/test/models/keyword_test.rb
@@ -4,42 +4,61 @@ class KeywordTest < ActiveSupport::TestCase
fixtures %w(keywords)
setup do
- @vat = keywords(:vat)
- @foreign_vat = keywords(:foreign_vat)
- @top_translation = keywords(:top_locale_se)
+ @vat = keywords :vat
+ @foreign_vat = keywords :foreign_vat
+ @terminal_area = keywords :terminal_area
+ @top_translation = keywords :top_locale_se
+ @dm_translation = keywords :deliverymethod_locale_en
end
test "fixtures are valid" do
assert @vat.valid?, @vat.errors.full_messages
assert @foreign_vat.valid?, @foreign_vat.errors.full_messages
+ assert @terminal_area.valid?, @terminal_area.errors.full_messages
assert @top_translation.valid?, @top_translation.errors.full_messages
+ assert @dm_translation.valid?, @dm_translation.errors.full_messages
assert keywords(:top_locale_en).valid?
+ assert keywords(:deliverymethod_locale_en).valid?
end
- test 'top translation relation' do
+ test 'translation relation' do
assert TermsOfPayment, @top_translation.terms_of_payment.class
+ assert DeliveryMethod, @dm_translation.delivery_method.class
end
- test 'top translation scope' do
+ test 'translation scope' do
# translations :kieli is scoped [:yhtio, :selite]
new_translation = @top_translation.dup
+ dm_new_translation = @dm_translation.dup
refute new_translation.valid?
+ refute dm_new_translation.valid?
error_message = [:kieli, I18n.t('errors.messages.taken')]
assert_equal error_message, new_translation.errors.first
+ assert_equal error_message, dm_new_translation.errors.first
# changing yhtio should make it valid
new_translation.yhtio = 'esto'
+ dm_new_translation.yhtio = 'esto'
assert new_translation.valid?
+ assert dm_new_translation.valid?
# changing selite should make it valid
new_translation = @top_translation.dup
new_translation.selite = 324
assert new_translation.valid?
+ dm_new_translation = @dm_translation.dup
+ dm_new_translation.selite = 324
+ assert dm_new_translation.valid?
+
# or changing kieli should make it valid
new_translation = @top_translation.dup
new_translation.kieli = 'no'
assert new_translation.valid?
+
+ dm_new_translation = @dm_translation.dup
+ dm_new_translation.kieli = 'no'
+ assert dm_new_translation.valid?
end
end
diff --git a/test/models/location_test.rb b/test/models/location_test.rb
new file mode 100644
index 000000000..244086cd4
--- /dev/null
+++ b/test/models/location_test.rb
@@ -0,0 +1,21 @@
+require 'test_helper'
+
+class LocationTest < ActiveSupport::TestCase
+ fixtures %w(
+ delivery_methods
+ locations
+ )
+
+ setup do
+ @tokyo = locations :tokyo
+ end
+
+ test 'fixtures are valid' do
+ assert @tokyo.valid?
+ end
+
+ test 'relations' do
+ assert_equal 'Acme Corporation', @tokyo.company.nimi
+ assert @tokyo.delivery_methods.count > 0
+ end
+end
diff --git a/test/models/package_test.rb b/test/models/package_test.rb
index e2cae39e0..84f1d5679 100644
--- a/test/models/package_test.rb
+++ b/test/models/package_test.rb
@@ -60,4 +60,9 @@ class PackageTest < ActiveSupport::TestCase
assert_equal 100, Package.new.kayttoprosentti
end
+
+ test "translated description" do
+ assert_equal "Terästynnyri", @package.translated_description(:fi)
+ assert_equal "Steel Barrel", @package.translated_description(:en)
+ end
end
diff --git a/test/models/supplier_test.rb b/test/models/supplier_test.rb
index 74450d4ed..c94b389e5 100644
--- a/test/models/supplier_test.rb
+++ b/test/models/supplier_test.rb
@@ -1,7 +1,11 @@
require 'test_helper'
class SupplierTest < ActiveSupport::TestCase
- fixtures %w(suppliers products product/suppliers)
+ fixtures %w(
+ product/suppliers
+ products
+ suppliers
+ )
setup do
@supplier = suppliers :domestic_supplier