mercator_mesonic 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +674 -0
- data/README.rdoc +16 -0
- data/Rakefile +34 -0
- data/app/assets/javascripts/mercator_mesonic/application.js +13 -0
- data/app/assets/stylesheets/mercator_mesonic/application.css +13 -0
- data/app/controllers/mercator_mesonic/application_controller.rb +4 -0
- data/app/helpers/mercator_mesonic/application_helper.rb +4 -0
- data/app/models/mercator_mesonic/akt_mandant.rb +27 -0
- data/app/models/mercator_mesonic/base.rb +7 -0
- data/app/models/mercator_mesonic/belegart.rb +17 -0
- data/app/models/mercator_mesonic/kontakte_stamm.rb +60 -0
- data/app/models/mercator_mesonic/kontenstamm.rb +63 -0
- data/app/models/mercator_mesonic/kontenstamm_adresse.rb +66 -0
- data/app/models/mercator_mesonic/kontenstamm_fakt.rb +35 -0
- data/app/models/mercator_mesonic/kontenstamm_fibu.rb +37 -0
- data/app/models/mercator_mesonic/order.rb +131 -0
- data/app/models/mercator_mesonic/order_item.rb +101 -0
- data/app/models/mercator_mesonic/price.rb +51 -0
- data/app/models/mercator_mesonic/webartikel.rb +140 -0
- data/app/models/mercator_mesonic/zahlungsart.rb +25 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20140319161842_add_erp_updated_at_to_inventory.rb +9 -0
- data/db/migrate/20140325093328_add_erp_contact_nr_erp_account_nr_to_user.rb +15 -0
- data/lib/mercator_mesonic/engine.rb +5 -0
- data/lib/mercator_mesonic/version.rb +3 -0
- data/lib/mercator_mesonic.rb +4 -0
- data/lib/tasks/mercator_mesonic_tasks.rake +4 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/fixtures/mercator_mesonic/bases.yml +11 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/mercator_mesonic_test.rb +7 -0
- data/test/models/mercator_mesonic/base_test.rb +9 -0
- data/test/test_helper.rb +15 -0
- metadata +172 -0
data/README.rdoc
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
= MercatorMesonic
|
2
|
+
|
3
|
+
Mercator_Mesonic provides Mesonic ERP integration for the Mercator Guided Selling Application.
|
4
|
+
|
5
|
+
This project uses the GPL V3 license. See file LICENSE in the same directory for details about the GPL V3.
|
6
|
+
|
7
|
+
# Installation instructions
|
8
|
+
|
9
|
+
1. Put in your Gemfile
|
10
|
+
'''ruby
|
11
|
+
gem "mercator_mesonic"
|
12
|
+
'''
|
13
|
+
2 Get all migrations into your app by running in your ipp directory
|
14
|
+
'''ruby
|
15
|
+
rake mercator_mesonic:install:migrations
|
16
|
+
'''
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'MercatorMesonic'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Bundler::GemHelper.install_tasks
|
23
|
+
|
24
|
+
require 'rake/testtask'
|
25
|
+
|
26
|
+
Rake::TestTask.new(:test) do |t|
|
27
|
+
t.libs << 'lib'
|
28
|
+
t.libs << 'test'
|
29
|
+
t.pattern = 'test/**/*_test.rb'
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
task default: :test
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require_tree .
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
10
|
+
*
|
11
|
+
*= require_self
|
12
|
+
*= require_tree .
|
13
|
+
*/
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module MercatorMesonic
|
2
|
+
class AktMandant < Base
|
3
|
+
|
4
|
+
self.table_name = "AktMandant"
|
5
|
+
self.primary_key = "mesocomp"
|
6
|
+
|
7
|
+
# --- Class Methods --- #
|
8
|
+
|
9
|
+
def self.mesocomp
|
10
|
+
self.first.mesocomp
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.mesoyear
|
14
|
+
self.first.mesoyear
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.mesocomp_and_year
|
18
|
+
[self.first.mesocomp, self.first.mesoyear]
|
19
|
+
end
|
20
|
+
|
21
|
+
# --- Instance Methods --- #
|
22
|
+
|
23
|
+
def readonly? # prevents unintentional changes
|
24
|
+
true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module MercatorMesonic
|
2
|
+
class Belegart < Base
|
3
|
+
|
4
|
+
self.table_name = "T357"
|
5
|
+
self.primary_key = "C000"
|
6
|
+
|
7
|
+
scope :mesoyear, -> { where(mesoyear: AktMandant.mesoyear) }
|
8
|
+
scope :mesocomp, -> { where(mesocomp: AktMandant.mesocomp) }
|
9
|
+
default_scope { mesocomp.mesoyear }
|
10
|
+
|
11
|
+
# --- Instance Methods --- #
|
12
|
+
|
13
|
+
def readonly? # prevents unintentional changes
|
14
|
+
true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module MercatorMesonic
|
2
|
+
class KontakteStamm < Base
|
3
|
+
|
4
|
+
self.table_name = "T045"
|
5
|
+
self.primary_key = "mesoprim"
|
6
|
+
|
7
|
+
attr_accessible :c039, :id, :c000, :c025, :c033, :c035, :c040, :c042, :c043, :c054,
|
8
|
+
:c059, :c060, :C061, :mesocomp, :mesoyear, :mesoprim
|
9
|
+
|
10
|
+
scope :mesoyear, -> { where(mesoyear: AktMandant.mesoyear) }
|
11
|
+
scope :mesocomp, -> { where(mesocomp: AktMandant.mesocomp) }
|
12
|
+
default_scope { mesocomp.mesoyear }
|
13
|
+
|
14
|
+
scope :by_email, ->(email) { where(c025: email) }
|
15
|
+
|
16
|
+
alias_attribute :email,:c025
|
17
|
+
alias_attribute :kontonummer, :c039
|
18
|
+
alias_attribute :account_number ,:c039
|
19
|
+
alias_attribute :uid_number, :c038
|
20
|
+
|
21
|
+
belongs_to :kontenstamm, :class_name => "Kontenstamm", :foreign_key => 'c039'
|
22
|
+
belongs_to :kontenstamm_adresse, :class_name => "KontenstammAdresse", :foreign_key => 'c039'
|
23
|
+
belongs_to :kontenstamm_fakt, :class_name => "KontenstammFakt", :foreign_key => 'c039'
|
24
|
+
belongs_to :kontenstamm_fibu, :class_name => "KontenstammFibu", :foreign_key => "c039"
|
25
|
+
|
26
|
+
delegate :kunde?, :interessent?, to: :kontenstamm
|
27
|
+
delegate :telephone, :fax, :uid_number, to: :kontenstamm_adresse
|
28
|
+
|
29
|
+
# --- Class Methods --- #
|
30
|
+
|
31
|
+
def self.next_kontaktenummer
|
32
|
+
last_kontaktenummer = self.select(:c000).order(c000: :desc).limit(1).first.c000.to_i
|
33
|
+
while kontaktenummer_exists?( last_kontaktenummer )
|
34
|
+
last_kontaktenummer += 1
|
35
|
+
end
|
36
|
+
last_kontaktenummer
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.kontaktenummer_exists?(n)
|
40
|
+
self.where(c000: n).any?
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.initialize_mesonic(user: nil, kontonummer: nil, kontaktenummer: nil)
|
44
|
+
self.new(c033: 0, c035: 0, c040: 1, c042: 0, c043: 0, c054: 0, c059: 0, c060: 0,
|
45
|
+
c039: kontonummer,
|
46
|
+
id: kontaktenummer,
|
47
|
+
c000: kontaktenummer,
|
48
|
+
c025: user.email_address.to_s,
|
49
|
+
C061: kontaktenummer,
|
50
|
+
mesocomp: AktMandant.mesocomp,
|
51
|
+
mesoyear: AktMandant.mesoyear,
|
52
|
+
mesoprim: kontaktenummer.to_s + "-" + AktMandant.mesocomp + "-" + AktMandant.mesoyear.to_s)
|
53
|
+
end
|
54
|
+
|
55
|
+
# --- Instance Methods --- #
|
56
|
+
def full_name
|
57
|
+
self.c001 + "-" + self.c002
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module MercatorMesonic
|
2
|
+
class Kontenstamm < Base
|
3
|
+
|
4
|
+
self.table_name = "T055"
|
5
|
+
self.primary_key = "mesoprim"
|
6
|
+
|
7
|
+
attr_accessible :c002, :c004, :c003, :c084, :c086, :c102, :c103, :c127, :c069, :c146, :c155, :c156, :c172,
|
8
|
+
:C253, :C254, :mesosafe, :mesocomp, :mesoyear, :mesoprim
|
9
|
+
|
10
|
+
alias_attribute :name, :c003
|
11
|
+
alias_attribute :firma, :name
|
12
|
+
alias_attribute :kontonummer, :c002
|
13
|
+
|
14
|
+
scope :mesoyear, -> { where(mesoyear: AktMandant.mesoyear) }
|
15
|
+
scope :mesocomp, -> { where(mesocomp: AktMandant.mesocomp) }
|
16
|
+
default_scope { mesocomp.mesoyear }
|
17
|
+
|
18
|
+
scope :interessenten, -> { where("[T055].[mesoprim] LIKE ?", "1I%").select(:c002).order(c002: :desc).limit(1) }
|
19
|
+
scope :interessent, -> { where("[T055].[mesoprim] LIKE ?", "1I%") }
|
20
|
+
|
21
|
+
has_one :kontenstamm_adresse, :class_name => "KontenstammAdresse", :foreign_key => "C001", :primary_key => "c002"
|
22
|
+
|
23
|
+
# --- Class Methods --- #
|
24
|
+
|
25
|
+
def self.next_kontonummer
|
26
|
+
last_kontonummer = self.interessenten.first.c002.split("I").last.to_i
|
27
|
+
while kontonummer_exists?( "1I#{last_kontonummer}" )
|
28
|
+
last_kontonummer += 1
|
29
|
+
end
|
30
|
+
"1I#{last_kontonummer}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.kontonummer_exists?( k )
|
34
|
+
self.where(c002: k).any?
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.initialize_mesonic(user: nil, kontonummer: nil, timestamp: nil)
|
38
|
+
self.new(c146: 0, c155: 0, c156: 0, c172: 0, C253: 0, C254: 0, mesosafe: 0,
|
39
|
+
c002: kontonummer,
|
40
|
+
c004: "4",
|
41
|
+
c003: user.name,
|
42
|
+
c084: "",
|
43
|
+
c086: timestamp,
|
44
|
+
c102: kontonummer,
|
45
|
+
c103: kontonummer,
|
46
|
+
c127: "050-",
|
47
|
+
c069: 2, ## KZ Änderungen durchgeführt ????
|
48
|
+
mesocomp: AktMandant.mesocomp,
|
49
|
+
mesoyear: AktMandant.mesoyear,
|
50
|
+
mesoprim: kontonummer.to_s + "-" + AktMandant.mesocomp + "-" + AktMandant.mesoyear.to_s)
|
51
|
+
end
|
52
|
+
|
53
|
+
# --- Instance Methods --- #
|
54
|
+
|
55
|
+
def kunde?
|
56
|
+
self.c004.to_i == 2 # 2... Kunde, 4 ... Interessent
|
57
|
+
end
|
58
|
+
|
59
|
+
def interessent?
|
60
|
+
!self.kunde?
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module MercatorMesonic
|
2
|
+
class KontenstammAdresse < Base
|
3
|
+
|
4
|
+
self.table_name = "T051"
|
5
|
+
self.primary_key = "mesoprim"
|
6
|
+
|
7
|
+
attr_accessible :firstname, :lastname, :c001, :c116, :c157, :c180, :c181, :c182, :C241, :c050,
|
8
|
+
:c051, :c052, :c123, :mesocomp, :mesoyear, :mesoprim
|
9
|
+
|
10
|
+
scope :mesoyear, -> { where(mesoyear: AktMandant.mesoyear) }
|
11
|
+
scope :mesocomp, -> { where(mesocomp: AktMandant.mesocomp) }
|
12
|
+
default_scope { mesocomp.mesoyear }
|
13
|
+
|
14
|
+
alias_attribute :street, :c050
|
15
|
+
alias_attribute :city, :c052
|
16
|
+
alias_attribute :to_hand, :c053
|
17
|
+
alias_attribute :postal, :c051
|
18
|
+
alias_attribute :land, :c123
|
19
|
+
alias_attribute :firstname, :c180
|
20
|
+
alias_attribute :lastname, :c181
|
21
|
+
alias_attribute :tel_land, :c140
|
22
|
+
alias_attribute :tel_city, :c141
|
23
|
+
alias_attribute :telephone, :c019
|
24
|
+
alias_attribute :fax, :c020
|
25
|
+
alias_attribute :email, :c116
|
26
|
+
alias_attribute :web , :c128
|
27
|
+
|
28
|
+
attr_accessor :name
|
29
|
+
|
30
|
+
validates_presence_of :name, :on => :create
|
31
|
+
validates_presence_of :street
|
32
|
+
validates_presence_of :city
|
33
|
+
validates_presence_of :postal
|
34
|
+
|
35
|
+
# --- Instance Methods --- #
|
36
|
+
|
37
|
+
def full_name
|
38
|
+
[ self.firstname, self.lastname ].join(" ")
|
39
|
+
end
|
40
|
+
|
41
|
+
def telephone_full
|
42
|
+
[ self.tel_land, self.tel_city, self.telephone ].join(" ")
|
43
|
+
end
|
44
|
+
|
45
|
+
def fax_full
|
46
|
+
[ self.tel_land, self.tel_city, self.fax ].join(" ")
|
47
|
+
end
|
48
|
+
|
49
|
+
#--- Class Methods --- #
|
50
|
+
|
51
|
+
def self.initialize_mesonic(billing_address: nil, kontonummer: nil)
|
52
|
+
self.new(c157: 0, c182: 0, C241: 0,
|
53
|
+
c050: billing_address.street,
|
54
|
+
c051: billing_address.postalcode,
|
55
|
+
c052: billing_address.city,
|
56
|
+
c123: billing_address.country,
|
57
|
+
c180: billing_address.name.split(/\s/).first,
|
58
|
+
c181: billing_address.name.split(/\s/).last,
|
59
|
+
c001: kontonummer,
|
60
|
+
c116: billing_address.email_address.to_s,
|
61
|
+
mesocomp: AktMandant.mesocomp,
|
62
|
+
mesoyear: AktMandant.mesoyear,
|
63
|
+
mesoprim: kontonummer.to_s + "-" + AktMandant.mesocomp + "-" + AktMandant.mesoyear.to_s)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module MercatorMesonic
|
2
|
+
class KontenstammFakt < Base
|
3
|
+
|
4
|
+
self.table_name = "T054"
|
5
|
+
self.primary_key = "mesoprim"
|
6
|
+
|
7
|
+
attr_accessible :c060, :c062, :c066, :c065, :c068, :c070, :c071, :c072, :c077, :c107, :c108, :c109, :c110, :c111, :c112, :c113, :c120,
|
8
|
+
:c121, :c132, :c133, :c134, :c148, :c149, :c150, :c171, :c183, :C184, :mesocomp, :mesoyear, :mesoprim
|
9
|
+
|
10
|
+
scope :mesoyear, -> { where(mesoyear: AktMandant.mesoyear) }
|
11
|
+
scope :mesocomp, -> { where(mesocomp: AktMandant.mesocomp) }
|
12
|
+
default_scope { mesocomp.mesoyear }
|
13
|
+
|
14
|
+
scope :by_kontonummer, ->(account_number) { where(c112: account_number) }
|
15
|
+
|
16
|
+
has_one :belegart, :class_name => "Belegart", :foreign_key => "c030", :primary_key => "c077"
|
17
|
+
has_many :zahlungsarten, :class_name => "Zahlungsart", :foreign_key => "c000", :primary_key => "c077"
|
18
|
+
|
19
|
+
# --- Class Methods --- #
|
20
|
+
|
21
|
+
def self.initialize_mesonic(kontonummer: nil)
|
22
|
+
self.new(c060: 0, c062: 0, c068: 0, c070: 0, c071: 0, c072: 0, c108: 0, c109: 0, c110: 0, c111: 0,
|
23
|
+
c113: 0, c120: "0", c132: 0, c133: 0, c134: 0, c148: 0, c149: 0, c150: 0, c171: 0, c183: 0,
|
24
|
+
C184: 0,
|
25
|
+
c065: 99,
|
26
|
+
c066: 3,
|
27
|
+
c077: "21",
|
28
|
+
c107: "017",
|
29
|
+
c112: kontonummer,
|
30
|
+
mesocomp: AktMandant.mesocomp,
|
31
|
+
mesoyear: AktMandant.mesoyear,
|
32
|
+
mesoprim: kontonummer.to_s + "-" + AktMandant.mesocomp + "-" + AktMandant.mesoyear.to_s)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module MercatorMesonic
|
2
|
+
class KontenstammFibu < Base
|
3
|
+
|
4
|
+
self.table_name = "T058"
|
5
|
+
self.primary_key = "mesoprim"
|
6
|
+
|
7
|
+
attr_accessible :c005, :c012, :c007, :c008, :c100, :c104, :c009, :c163, :c174, :C185, :c153, :c164, :c175,
|
8
|
+
:c176, :C186, :c067, :C189, :c058, :c124, :c135, :C190, :c057, :c059, :c114, :c136, :c115,
|
9
|
+
:c137, :c006, :c061, :c063, :c151, :c173, :c177, :mesocomp, :mesoyear, :mesoprim
|
10
|
+
|
11
|
+
scope :mesoyear, -> { where(mesoyear: AktMandant.mesoyear) }
|
12
|
+
scope :mesocomp, -> { where(mesocomp: AktMandant.mesocomp) }
|
13
|
+
default_scope { mesocomp.mesoyear }
|
14
|
+
|
15
|
+
alias_attribute :bkz1, :c007
|
16
|
+
alias_attribute :bkz2, :c008
|
17
|
+
alias_attribute :zahlungskondition_fibu, :c100
|
18
|
+
alias_attribute :kontonummer, :c104
|
19
|
+
|
20
|
+
# --- Class Methods --- #
|
21
|
+
|
22
|
+
def self.initialize_mesonic(kontonummer: nil)
|
23
|
+
self.new(c005: 0, c006: 0, c009: 0, c012: 0, c057: 0, c058: 0, c059: 0, c061: 0, c063: 0, c067: 0,
|
24
|
+
c114: 0, c115: 0, c124: 0, c135: 0, c136: 0, c137: 0, c151: 0, c153: 0, c164: 0, c173: 0,
|
25
|
+
c174: 0, c175: 0, c176: 0, C185: 0, C186: 0, C189: 0, C190: 0,
|
26
|
+
c007: "1300",
|
27
|
+
c008: "1300",
|
28
|
+
c100: "017",
|
29
|
+
c104: kontonummer,
|
30
|
+
c177: kontonummer,
|
31
|
+
c163: -1,
|
32
|
+
mesocomp: AktMandant.mesocomp,
|
33
|
+
mesoyear: AktMandant.mesoyear,
|
34
|
+
mesoprim: kontonummer.to_s + "-" + AktMandant.mesocomp + "-" + AktMandant.mesoyear.to_s)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
module MercatorMesonic
|
2
|
+
class Order < Base
|
3
|
+
|
4
|
+
self.table_name = "t025"
|
5
|
+
self.primary_key = "C000"
|
6
|
+
|
7
|
+
scope :mesoyear, -> { where(mesoyear: AktMandant.mesoyear) }
|
8
|
+
scope :mesocomp, -> { where(mesocomp: AktMandant.mesocomp) }
|
9
|
+
default_scope { mesocomp.mesoyear }
|
10
|
+
|
11
|
+
# --- Class Methods --- #
|
12
|
+
|
13
|
+
def self.initialize_mesonic(order: nil, custom_order_number: nil)
|
14
|
+
|
15
|
+
customer = order.customer
|
16
|
+
timestamp = Time.now
|
17
|
+
mesonic_kontenstamm_fakt = customer.mesonic_kontenstamm_fakt
|
18
|
+
custom_order_number |= timestamp.strftime('%y%m%d%H%M%S') + timestamp.usec # timestamp, if custom order number not provided
|
19
|
+
kontonummer = @customer.mesonic_kontenstamm.try(:kunde?) ? @customer.mesonic_kontenstamm.kontonummer : "09WEB"
|
20
|
+
usernummer = customer.erp_contact_nr ? customer.erp_contact_nr : customer.id
|
21
|
+
billing_method = order.billing_method.to_i == 1004 ?
|
22
|
+
mesonic_kontenstamm_fakt.c107 : IvellioVellin::Order.payment_methods2[ :"#{order.billing_method}" ].try(:to_i) #HAS 20140325 FIXME
|
23
|
+
|
24
|
+
self.new(c000: kontonummer + "-" + custom_order_number,
|
25
|
+
c004: order.billing_name,
|
26
|
+
c005: order.billing_detail,
|
27
|
+
c006: order.billing_street,
|
28
|
+
c007: order.billing_postalcode,
|
29
|
+
c008: order.billing_city,
|
30
|
+
c010: order.shipping_name,
|
31
|
+
c011: order.shipping_detail,
|
32
|
+
c012: order.shipping_street,
|
33
|
+
c013: order.shipping_postal,
|
34
|
+
c014: order.shipping_postalcode,
|
35
|
+
c017: order.billing_state_code,
|
36
|
+
c019: order.shipping_state_code,
|
37
|
+
c020: usernummer,
|
38
|
+
c021: kontonummer,
|
39
|
+
c022: custom_order_number,
|
40
|
+
c023: "N", # druckstatus angebot
|
41
|
+
c024: "N", # druckstatus auftragsbestätigung
|
42
|
+
c025: "N", # durckstatus lieferschein
|
43
|
+
c026: "N", # druckstatus faktura
|
44
|
+
c027: timestamp, # datum angebot
|
45
|
+
c030: customer.erp_account_nr, #### konto-lieferadresse
|
46
|
+
c034: mesonic_kontenstamm_fakt.belegart.c014, # #### belegart
|
47
|
+
c035: mesonic_kontenstamm_fakt.c077, # belegart
|
48
|
+
c036: mesonic_kontenstamm_fakt.c065, # vertreternummer
|
49
|
+
c037: 0, # nettotage
|
50
|
+
c038: 0, # skonto%1
|
51
|
+
c039: 0, # skontotage1
|
52
|
+
c040: 0, # summenrabatt
|
53
|
+
c041: 0, # fw-zeile
|
54
|
+
c047: mesonic_kontenstamm_fakt.c066, # preisliste
|
55
|
+
c049: 0, # fw einheit
|
56
|
+
c050: 0, # fw-faktor
|
57
|
+
c051: billing_method
|
58
|
+
c053: mesonic_kontenstamm_fakt.c122, # kostentraeger
|
59
|
+
c054: 400, # kostenstelle
|
60
|
+
c056: 0, # skonto%2
|
61
|
+
c057: 0, # skontotage2
|
62
|
+
c059: timestamp, # datum d. erstanlage
|
63
|
+
c074: 0, # kennzeichen f FW-Umrechung
|
64
|
+
c075: 0, # flag für Webinterface
|
65
|
+
c076: 0, # Dokumenten ID
|
66
|
+
c077: 0, # FW-Notierungsflag
|
67
|
+
c078: 0, # xml-erweiterung
|
68
|
+
c080: 0, # filler
|
69
|
+
c081: nil, #HAS 20140325 FIXME: order.billing_name2 Adresse erweitern
|
70
|
+
c082: nil, #HAS 20140325 FIXME: order.shipping_name2 Adresse erweitern
|
71
|
+
c086: 0, # teilliefersperre
|
72
|
+
c088: 0, # priorität
|
73
|
+
c089: order.shipping_method.to_i #HAS 20140325 FIXME
|
74
|
+
c090: 0, # freier text 2
|
75
|
+
c091: 0, # freier text 3
|
76
|
+
c092: 0, # freier text 4
|
77
|
+
c093: 0, # sammelrechnung
|
78
|
+
c094: 0, # methode
|
79
|
+
c095: 0, # ausprägung 1
|
80
|
+
c096: 0, # ausprägung 2
|
81
|
+
c097: order.billing_method.to_i #HAS 20140325 FIXME
|
82
|
+
c098: 101, # freigabekontrolle angebot
|
83
|
+
c099: order.sum_incl_vat, # kumulierter zahlungsbetrag
|
84
|
+
c100: order.sum_incl_vat, # endbetrag
|
85
|
+
c102: 0, # rohertrag
|
86
|
+
c103: timestamp + 3.days, #
|
87
|
+
c104: 0, # ansprechpartner rechnungsadresse
|
88
|
+
c105: 0, # ansprechpartner lieferadresse
|
89
|
+
c106: 0, # fremdwährungskurs
|
90
|
+
c109: -1, # kontrakttyp
|
91
|
+
c111: 2, # exim durchgeführte änderungen
|
92
|
+
c113: c021, # c113: "09WEB" # konto rechnungsadresse
|
93
|
+
c114: 0, # anzahlungsbetrag
|
94
|
+
c115: 101, # freigabekontrolle auftrag
|
95
|
+
c116: 101, # freigabekontrolle lieferschein
|
96
|
+
c117: 101, # freigabekontrolle faktura
|
97
|
+
c118: 0, # euro rohertrag
|
98
|
+
c120: 0, # fw-einheit für storno
|
99
|
+
c121: 0, # sortierung
|
100
|
+
c123: 0, # textkennzeichen konto
|
101
|
+
c126: 0, # aktionsplanzeile
|
102
|
+
c127: 0, # karenztage
|
103
|
+
c137: 2,
|
104
|
+
c139: 0,
|
105
|
+
c140: 0,
|
106
|
+
c141: 0,
|
107
|
+
c142: 0,
|
108
|
+
c143: 0,
|
109
|
+
C151: 8,
|
110
|
+
C152: "900001",
|
111
|
+
C153: 0,
|
112
|
+
C154: 0,
|
113
|
+
C155: 0,
|
114
|
+
C156: 0,
|
115
|
+
C157: 0,
|
116
|
+
C158: 0,
|
117
|
+
C159: 0,
|
118
|
+
C160: 0,
|
119
|
+
mesocomp: AktMandant.mesocomp,
|
120
|
+
mesoyear: AktMandant.mesoyear,
|
121
|
+
mesoprim: c000 + "-" + AktMandant.mesocomp + "-" + AktMandant.mesoyear )
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# --- Instance Methods --- #
|
126
|
+
|
127
|
+
def readonly? # prevents unintentional changes
|
128
|
+
true
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module MercatorMesonic
|
2
|
+
class OrderItem < Base
|
3
|
+
|
4
|
+
self.table_name = "T026"
|
5
|
+
self.primary_key = "c000"
|
6
|
+
|
7
|
+
belongs_to :inventory, :foreign_key => "C003"
|
8
|
+
|
9
|
+
attr_accessor :cart_item
|
10
|
+
attr_accessor :mesonic_order
|
11
|
+
|
12
|
+
# --- Class Methods --- #
|
13
|
+
|
14
|
+
def self.initialize_mesonic(mesonic_order: nil, lineitem: nil, customer: nil, index: nil)
|
15
|
+
id = mesonic_order.C000 + "-" + "%06d" % (index + 1 )
|
16
|
+
self.new(c000: id,
|
17
|
+
c003: lineitem.inventory.article_number,
|
18
|
+
c004: lineitem.inventory.Bezeichnung,
|
19
|
+
c005: lineitem.menge, # menge bestellt
|
20
|
+
c006: lineitem.menge, # menge geliefert
|
21
|
+
c007: lineitem.einzelpreis, # einzelpreis
|
22
|
+
c008: 0, # zeilenrabatt 1 und 2
|
23
|
+
c009: 4002, # erlöskonto
|
24
|
+
c010: lineitem.inventory.Steuersatzzeile, # umsatzsteuer prozentsatz #FIXME
|
25
|
+
c011: 1, # statistikkennzeichen
|
26
|
+
c012: lineitem.inventory.ArtGruppe, # artikelgruppe #FIXME
|
27
|
+
c013: 0, # liefertage
|
28
|
+
c014: lineitem.inventory.Provisionscode, # provisionscode #FIXME
|
29
|
+
c015: nil, # colli
|
30
|
+
c016: 0, # menge bereits geliefert
|
31
|
+
c018: 0, # faktor 1 nach formeleingabe
|
32
|
+
c019: 0, # faktor 2 nach formeleingabe
|
33
|
+
c020: 0, # faktor 3 nach formeleingabe
|
34
|
+
c021: 0, # zeilenrabatt %1
|
35
|
+
c022: 0, # zeilenrabatt %2
|
36
|
+
c023: 0, # einstandspreis
|
37
|
+
c024: nil, # umstatzsteuercode
|
38
|
+
c025: mesonic_order.c027, # lieferdatum
|
39
|
+
c026: 400, # kostenstelle
|
40
|
+
c027: 0, # lieferwoche
|
41
|
+
c031: lineitem.gesamtwert, # gesamtwert #FIXME
|
42
|
+
c032: 0, # positionslevel
|
43
|
+
c033: nil, # positionsnummer text
|
44
|
+
c034: lineitem.inventory.Gewicht, # gewicht #FIXME
|
45
|
+
c035: 0, # einstandspreis KZ
|
46
|
+
c042: 1, # datentyp
|
47
|
+
c044: mesonic_order.c021, # kontonummer
|
48
|
+
c045: mesonic_order.c022, # laufnummer
|
49
|
+
c046: 99, # vertreternummer
|
50
|
+
c047: nil, # prodflag
|
51
|
+
c048: mesonic_order.c027.year, # lieferjahr
|
52
|
+
c052: 0, # stat. wert
|
53
|
+
c054: 0, # bewertungspreis editieren
|
54
|
+
c055: lineitem.inventory.Auspraegungsflag, #FIXME
|
55
|
+
c056: customer.erp_account_nr, # interessentenkontonummer
|
56
|
+
c057: 0, # lagerbestand ändern J/N
|
57
|
+
c058: 0, # key für dispozeile
|
58
|
+
c059: 0, # zeilennummer d kundenauftrags
|
59
|
+
c060: 0, # temp gridzeilennumer
|
60
|
+
c061: 0, # zeilennummer des auftrages
|
61
|
+
c062: 0, # key handels stückliste
|
62
|
+
c063: 0, # flag für update ( telesales )
|
63
|
+
c068: 1, # lieferantenartikelnummer
|
64
|
+
c070: 0, # colli faktor
|
65
|
+
c071: 0, # umrechnungsfaktor colli
|
66
|
+
c072: 0, # umrechnungsfaktor menge 2
|
67
|
+
c073: 1, # preisartenflag
|
68
|
+
c074: 0, # flag für aufgeteilte hauptartikel
|
69
|
+
c075: 0, # flag v lieferantenlieferung aufteilen
|
70
|
+
c077: 0, # preisupdateflag
|
71
|
+
c078: index + 1, # zeilennummer (intern)
|
72
|
+
c081: 0, # nummer des kontraktpreises
|
73
|
+
c082: 0, # menge 2
|
74
|
+
c083: lineitem.inventory.Steuersatzzeile * 10, #FIXME
|
75
|
+
c085: 2, # exim durchgeführt änderungen
|
76
|
+
c086: 0, # EURO einstandspreis
|
77
|
+
c087: 0, # bnk-prozent
|
78
|
+
c088: 0, # ausgebuchte menge
|
79
|
+
c091: 0, # textkennzeichen artikel
|
80
|
+
c092: 0, # betrag bezugskosten
|
81
|
+
c098: 0, # flag reservierung
|
82
|
+
c099: 0, # rückstandsmenge
|
83
|
+
c100: 0,
|
84
|
+
c101: 0,
|
85
|
+
c104: 0,
|
86
|
+
mesocomp: AktMandant.mesocomp,
|
87
|
+
mesoyear: AktMandant.mesoyear,
|
88
|
+
mesoprim: id + "-" + AktMandant.mesocomp + "-" + AktMandant.mesoyear,
|
89
|
+
C106: "",
|
90
|
+
C107: 0,
|
91
|
+
C108: "",
|
92
|
+
C109: 0 )
|
93
|
+
end
|
94
|
+
|
95
|
+
# --- Instance Methods --- #
|
96
|
+
|
97
|
+
def readonly? # prevents unintentional changes
|
98
|
+
true
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|