erp_base_erp_svcs 3.1.5 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/app/controllers/erp_base_erp_svcs/shared/units_of_measurement_controller.rb +32 -0
- data/app/models/compass_ae_instance.rb +2 -0
- data/app/models/contact.rb +4 -0
- data/app/models/email_address.rb +4 -1
- data/app/models/facility.rb +12 -0
- data/app/models/facility_type.rb +8 -0
- data/app/models/fixed_asset.rb +8 -0
- data/app/models/fixed_asset_party_role.rb +8 -0
- data/app/models/fixed_asset_type.rb +9 -0
- data/app/models/individual.rb +10 -14
- data/app/models/party.rb +138 -51
- data/app/models/party_unit_of_measurement.rb +6 -0
- data/app/models/phone_number.rb +5 -1
- data/app/models/postal_address.rb +5 -1
- data/app/models/unit_of_measurement.rb +16 -0
- data/config/initializers/root_loader.rb +9 -0
- data/config/routes.rb +5 -0
- data/db/migrate/20080805000020_base_erp_services.rb +1 -29
- data/db/migrate/20130522125404_create_facilities.rb +114 -0
- data/db/migrate/20130621182047_create_unit_of_measurements.rb +18 -0
- data/db/migrate/20130909163912_add_iid_index_to_role_types.rb +9 -0
- data/db/migrate/20130926023541_add_domain_to_unit_of_measure.rb +13 -0
- data/db/migrate/20130929025342_add_type_semantics_to_uom.rb +54 -0
- data/db/migrate/20131112013047_add_primary_to_contacts.rb +13 -0
- data/db/migrate/20131112013048_add_erp_base_erp_svcs_missing_indexes.rb +33 -0
- data/db/migrate/20131211180831_add_postal_address_to_facility.rb +5 -0
- data/db/migrate/20140102154311_create_fixed_asset_party_roles.rb +12 -0
- data/db/migrate/20140401072612_add_custom_fields_to_party.rb +12 -0
- data/lib/erp_base_erp_svcs.rb +5 -5
- data/lib/erp_base_erp_svcs/engine.rb +5 -3
- data/lib/erp_base_erp_svcs/extensions.rb +3 -0
- data/lib/erp_base_erp_svcs/extensions/active_record/acts_as_facility.rb +54 -0
- data/lib/erp_base_erp_svcs/extensions/active_record/acts_as_fixed_asset.rb +54 -0
- data/lib/erp_base_erp_svcs/extensions/active_record/has_contact.rb +25 -12
- data/lib/erp_base_erp_svcs/extensions/active_record/has_notes.rb +25 -2
- data/lib/erp_base_erp_svcs/extensions/active_record/has_tracked_status.rb +58 -6
- data/lib/erp_base_erp_svcs/extensions/active_record/to_hash.rb +12 -12
- data/lib/erp_base_erp_svcs/extensions/core/acts_as_aspector_on.rb +73 -0
- data/lib/erp_base_erp_svcs/extensions/core/object.rb +7 -0
- data/lib/erp_base_erp_svcs/version.rb +7 -3
- data/lib/tasks/compass_backup.rake +11 -6
- data/lib/tasks/erp_base_erp_svcs_tasks.rake +22 -9
- data/spec/models/party_spec.rb +9 -1
- metadata +80 -113
- data/app/assets/javascripts/erp_base_erp_svcs/application.js +0 -9
- data/app/assets/stylesheets/erp_base_erp_svcs/application.css +0 -7
- data/app/controllers/erp_base_erp_svcs/application_controller.rb +0 -4
- data/app/views/layouts/erp_base_erp_svcs/application.html.erb +0 -14
- data/spec/dummy/db/data_migrations/20110525001935_add_usd_currency.erp_base_erp_svcs.rb +0 -12
- data/spec/dummy/db/data_migrations/20110609150135_add_iso_codes.erp_base_erp_svcs.rb +0 -19
- data/spec/dummy/db/data_migrations/20110913145838_setup_compass_ae_instance.erp_base_erp_svcs.rb +0 -12
- data/spec/dummy/db/data_migrations/20130422154233_upgrade_compass_ae_instances_data.erp_base_erp_svcs.rb +0 -19
- data/spec/dummy/db/data_migrations/20130422154234_add_guid_to_instances.erp_base_erp_svcs.rb +0 -10
- data/spec/dummy/db/migrate/20130105143821_base_erp_services.erp_base_erp_svcs.rb +0 -461
- data/spec/dummy/db/migrate/20130422154229_add_txn_status.erp_base_erp_svcs.rb +0 -37
- data/spec/dummy/db/migrate/20130422154230_upgrade_compass_ae_instances.erp_base_erp_svcs.rb +0 -34
- data/spec/dummy/db/migrate/20130422154231_add_uuid_compass_ae_instance.erp_base_erp_svcs.rb +0 -17
- data/spec/dummy/db/migrate/20130422154232_add_long_lat_to_address.erp_base_erp_svcs.rb +0 -16
- data/spec/dummy/db/schema.rb +0 -435
- data/spec/dummy/db/spec.sqlite3 +0 -0
data/app/models/phone_number.rb
CHANGED
@@ -14,9 +14,13 @@ class PostalAddress < ActiveRecord::Base
|
|
14
14
|
if block_given?
|
15
15
|
block.call(self)
|
16
16
|
else
|
17
|
-
"#{description} : #{
|
17
|
+
"#{description} : #{to_s}"
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
"#{address_line_1}, #{city}, #{state} - #{zip}"
|
23
|
+
end
|
20
24
|
|
21
25
|
def zip_eql_to?(zip)
|
22
26
|
self.zip.downcase.gsub(/[^a-zA-Z0-9]/, "")[0..4] == zip.to_s.downcase.gsub(/[^a-zA-Z0-9]/,"")[0..4]
|
@@ -0,0 +1,9 @@
|
|
1
|
+
if Rails.application.config.cache_classes
|
2
|
+
Rails.application.config.after_initialize do
|
3
|
+
ErpBaseErpSvcs.load_root_compass_ae_framework_extensions
|
4
|
+
end
|
5
|
+
else
|
6
|
+
Rails.application.config.to_prepare do
|
7
|
+
ErpBaseErpSvcs.load_root_compass_ae_framework_extensions
|
8
|
+
end
|
9
|
+
end
|
data/config/routes.rb
CHANGED
@@ -83,6 +83,7 @@ class BaseErpServices < ActiveRecord::Migration
|
|
83
83
|
t.column :external_id_source, :string
|
84
84
|
t.timestamps
|
85
85
|
end
|
86
|
+
add_index :role_types, :internal_identifier, :name => "role_types_iid_idx"
|
86
87
|
end
|
87
88
|
|
88
89
|
# Create relationship_types table
|
@@ -275,35 +276,6 @@ class BaseErpServices < ActiveRecord::Migration
|
|
275
276
|
end
|
276
277
|
end
|
277
278
|
|
278
|
-
unless table_exists?(:party_search_facts)
|
279
|
-
create_table :party_search_facts do |t|
|
280
|
-
t.column :party_id, :integer
|
281
|
-
t.column :eid, :string
|
282
|
-
t.column :type, :string
|
283
|
-
t.column :roles, :text
|
284
|
-
t.column :party_description, :string
|
285
|
-
t.column :party_business_party_type, :string
|
286
|
-
t.column :user_login, :string
|
287
|
-
t.column :individual_current_last_name, :string
|
288
|
-
t.column :individual_current_first_name, :string
|
289
|
-
t.column :individual_current_middle_name, :string
|
290
|
-
t.column :individual_birth_date, :string
|
291
|
-
t.column :individual_ssn, :string
|
292
|
-
t.column :party_phone_number, :string
|
293
|
-
t.column :party_email_address, :string
|
294
|
-
t.column :party_address_1, :string
|
295
|
-
t.column :party_address_2, :string
|
296
|
-
t.column :party_primary_address_city, :string
|
297
|
-
t.column :party_primary_address_state, :string
|
298
|
-
t.column :party_primary_address_zip, :string
|
299
|
-
t.column :party_primary_address_country, :string
|
300
|
-
t.column :user_enabled, :boolean
|
301
|
-
t.column :user_type, :string
|
302
|
-
t.column :reindex, :boolean
|
303
|
-
t.timestamps
|
304
|
-
end
|
305
|
-
end
|
306
|
-
|
307
279
|
unless table_exists?(:money)
|
308
280
|
create_table :money do |t|
|
309
281
|
t.string :description
|
@@ -0,0 +1,114 @@
|
|
1
|
+
class CreateFacilities < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
|
4
|
+
unless table_exists?(:facilities)
|
5
|
+
create_table :facilities do |t|
|
6
|
+
|
7
|
+
t.string :description
|
8
|
+
t.string :internal_identifier
|
9
|
+
t.integer :facility_type_id
|
10
|
+
|
11
|
+
#polymorphic columns
|
12
|
+
t.integer :facility_record_id
|
13
|
+
t.integer :facility_record_type
|
14
|
+
|
15
|
+
t.timestamps
|
16
|
+
end
|
17
|
+
|
18
|
+
add_index :facilities, [:facility_record_id, :facility_record_type], :name => "facility_record_idx"
|
19
|
+
end
|
20
|
+
|
21
|
+
unless table_exists?(:facility_types)
|
22
|
+
create_table :facility_types do |t|
|
23
|
+
|
24
|
+
t.string :description
|
25
|
+
t.string :internal_identifier
|
26
|
+
t.string :external_identifier
|
27
|
+
t.string :external_identifer_source
|
28
|
+
|
29
|
+
#these columns are required to support the behavior of the plugin 'awesome_nested_set'
|
30
|
+
t.integer :parent_id
|
31
|
+
t.integer :lft
|
32
|
+
t.integer :rgt
|
33
|
+
|
34
|
+
t.timestamps
|
35
|
+
end
|
36
|
+
|
37
|
+
add_index :facility_types, [:parent_id, :lft, :rgt], :name => "facility_types_nested_set_idx"
|
38
|
+
end
|
39
|
+
|
40
|
+
##********************************************************************************************
|
41
|
+
## Infrastructure and Accounting
|
42
|
+
##********************************************************************************************
|
43
|
+
## TODO Move to a basic accounting engine
|
44
|
+
unless table_exists?(:fixed_assets)
|
45
|
+
create_table :fixed_assets do |t|
|
46
|
+
|
47
|
+
#foreign key references
|
48
|
+
t.references :fixed_asset_type
|
49
|
+
|
50
|
+
#custom columns go here
|
51
|
+
t.string :description
|
52
|
+
t.string :comments
|
53
|
+
t.string :internal_identifier
|
54
|
+
t.string :external_identifier
|
55
|
+
t.string :external_id_source
|
56
|
+
|
57
|
+
#polymorphic columns
|
58
|
+
t.string :fixed_asset_record_type
|
59
|
+
t.integer :fixed_asset_record_id
|
60
|
+
|
61
|
+
t.timestamps
|
62
|
+
end
|
63
|
+
|
64
|
+
add_index :fixed_assets, [:fixed_asset_record_type, :fixed_asset_record_id], :name => "fixed_assets_record_idx"
|
65
|
+
add_index :fixed_assets, :fixed_asset_type_id, :name => "fixed_assets_fixed_asset_type_idx"
|
66
|
+
end
|
67
|
+
|
68
|
+
unless table_exists?(:fixed_asset_types)
|
69
|
+
create_table :fixed_asset_types do |t|
|
70
|
+
#these columns are required to support the behavior of the plugin 'awesome_nested_set'
|
71
|
+
t.integer :parent_id
|
72
|
+
t.integer :lft
|
73
|
+
t.integer :rgt
|
74
|
+
|
75
|
+
#custom columns go here
|
76
|
+
t.string :description
|
77
|
+
t.string :comments
|
78
|
+
t.string :internal_identifier
|
79
|
+
t.string :external_identifier
|
80
|
+
t.string :external_id_source
|
81
|
+
|
82
|
+
t.timestamps
|
83
|
+
end
|
84
|
+
|
85
|
+
add_index :fixed_asset_types, [:parent_id, :lft, :rgt], :name => "fixed_asset_types_nested_set_idx"
|
86
|
+
end
|
87
|
+
|
88
|
+
##Not a relationship with work_effort, but stores which fixed assets are assigned to or checked-out by parties
|
89
|
+
unless table_exists?(:party_fixed_asset_assignments)
|
90
|
+
create_table :party_fixed_asset_assignments do |t|
|
91
|
+
#foreign key references
|
92
|
+
t.references :party
|
93
|
+
t.references :fixed_asset
|
94
|
+
|
95
|
+
t.datetime :assigned_from
|
96
|
+
t.datetime :assigned_thru
|
97
|
+
t.integer :allocated_cost_money_id
|
98
|
+
|
99
|
+
t.timestamps
|
100
|
+
end
|
101
|
+
|
102
|
+
add_index :party_fixed_asset_assignments, [:party_id, :fixed_asset_id], :name => "party_fixed_asset_assign_idx"
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
def down
|
108
|
+
drop_table :facilities
|
109
|
+
drop_table :facility_types
|
110
|
+
drop_table :fixed_assets
|
111
|
+
drop_table :fixed_asset_types
|
112
|
+
drop_table :party_fixed_asset_assignments
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateUnitOfMeasurements < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
unless table_exists?(:unit_of_measurements)
|
4
|
+
create_table :unit_of_measurements do |t|
|
5
|
+
t.column :description, :string
|
6
|
+
t.timestamps
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
[:unit_of_measurements].each do |tbl|
|
13
|
+
if table_exists?(tbl)
|
14
|
+
drop_table tbl
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class AddIidIndexToRoleTypes < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
add_index :role_types, :internal_identifier, :name => "role_types_iid_idx" unless indexes(:role_types).collect {|i| i.name}.include?('role_types_iid_idx')
|
4
|
+
end
|
5
|
+
|
6
|
+
def down
|
7
|
+
remove_index :role_types, :internal_identifier if indexes(:role_types).collect {|i| i.name}.include?('role_types_iid_idx')
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class AddDomainToUnitOfMeasure < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
unless columns(:unit_of_measurements).collect {|c| c.name}.include?('domain')
|
4
|
+
add_column :unit_of_measurements, :domain, :string
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def down
|
9
|
+
if columns(:unit_of_measurements).collect {|c| c.name}.include?('domain')
|
10
|
+
remove_column :unit_of_measurements, :domain
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
class AddTypeSemanticsToUom < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
|
4
|
+
#Nested set fields
|
5
|
+
unless columns(:unit_of_measurements).collect {|c| c.name}.include?('lft')
|
6
|
+
add_column :unit_of_measurements, :lft, :integer
|
7
|
+
end
|
8
|
+
unless columns(:unit_of_measurements).collect {|c| c.name}.include?('rgt')
|
9
|
+
add_column :unit_of_measurements, :rgt, :integer
|
10
|
+
end
|
11
|
+
unless columns(:unit_of_measurements).collect {|c| c.name}.include?('parent_id')
|
12
|
+
add_column :unit_of_measurements, :parent_id, :integer
|
13
|
+
end
|
14
|
+
unless columns(:unit_of_measurements).collect {|c| c.name}.include?('internal_identifier')
|
15
|
+
add_column :unit_of_measurements, :internal_identifier, :string
|
16
|
+
end
|
17
|
+
unless columns(:unit_of_measurements).collect {|c| c.name}.include?('comments')
|
18
|
+
add_column :unit_of_measurements, :comments, :text
|
19
|
+
end
|
20
|
+
|
21
|
+
#External Identifier fields
|
22
|
+
unless columns(:unit_of_measurements).collect {|c| c.name}.include?('external_identifier')
|
23
|
+
add_column :unit_of_measurements, :external_identifier, :string
|
24
|
+
end
|
25
|
+
unless columns(:unit_of_measurements).collect {|c| c.name}.include?('external_id_source')
|
26
|
+
add_column :unit_of_measurements, :external_id_source, :string
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
def down
|
32
|
+
if columns(:unit_of_measurements).collect {|c| c.name}.include?('lft')
|
33
|
+
remove_column :unit_of_measurements, :lft
|
34
|
+
end
|
35
|
+
if columns(:unit_of_measurements).collect {|c| c.name}.include?('rgt')
|
36
|
+
remove_column :unit_of_measurements, :rgt
|
37
|
+
end
|
38
|
+
if columns(:unit_of_measurements).collect {|c| c.name}.include?('parent_id')
|
39
|
+
remove_column :unit_of_measurements, :rgt
|
40
|
+
end
|
41
|
+
if columns(:unit_of_measurements).collect {|c| c.name}.include?('internal_identifier')
|
42
|
+
remove_column :unit_of_measurements, :rgt
|
43
|
+
end
|
44
|
+
if columns(:unit_of_measurements).collect {|c| c.name}.include?('comments')
|
45
|
+
remove_column :unit_of_measurements, :rgt
|
46
|
+
end
|
47
|
+
if columns(:unit_of_measurements).collect {|c| c.name}.include?('external_identifier')
|
48
|
+
remove_column :unit_of_measurements, :rgt
|
49
|
+
end
|
50
|
+
if columns(:unit_of_measurements).collect {|c| c.name}.include?('external_id_source')
|
51
|
+
remove_column :unit_of_measurements, :rgt
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class AddPrimaryToContacts < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
unless columns(:contacts).collect {|c| c.name}.include?('is_primary')
|
4
|
+
add_column :contacts, :is_primary, :boolean
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def down
|
9
|
+
if columns(:contacts).collect {|c| c.name}.include?('is_primary')
|
10
|
+
remove_column :contacts, :is_primary
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class AddErpBaseErpSvcsMissingIndexes < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
if indexes(:relationship_types).select { |index| index.name == 'relationship_types_parent_id_idx' }.empty?
|
4
|
+
add_index :relationship_types, :parent_id, :name => 'relationship_types_parent_id_idx'
|
5
|
+
add_index :relationship_types, :internal_identifier, :name => 'relationship_types_internal_identifier_idx'
|
6
|
+
add_index :contact_types, :internal_identifier, :name => 'contact_types_internal_identifier_idx'
|
7
|
+
add_index :contact_purposes, :internal_identifier, :name => 'contact_purposes_internal_identifier_idx'
|
8
|
+
add_index :categories, :internal_identifier, :name => 'categories_internal_identifier_idx'
|
9
|
+
add_index :categories, :parent_id, :name => 'categories_parent_id_idx'
|
10
|
+
add_index :category_classifications, :category_id, :name => 'category_classifications_category_id_idx'
|
11
|
+
add_index :descriptive_assets, :internal_identifier, :name => 'descriptive_assets_internal_identifier_idx'
|
12
|
+
add_index :view_types, :internal_identifier, :name => 'view_types_internal_identifier_idx'
|
13
|
+
add_index :note_types, :parent_id, :name => 'note_types_parent_id_idx'
|
14
|
+
add_index :note_types, :internal_identifier, :name => 'note_types_internal_identifier_idx'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def down
|
19
|
+
unless indexes(:relationship_types).select { |index| index.name == 'relationship_types_parent_id_idx' }.empty?
|
20
|
+
remove_index :relationship_types, :parent_id
|
21
|
+
remove_index :relationship_types, :internal_identifier
|
22
|
+
remove_index :contact_types, :internal_identifier
|
23
|
+
remove_index :contact_purposes, :internal_identifier
|
24
|
+
remove_index :categories, :internal_identifier
|
25
|
+
remove_index :categories, :parent_id
|
26
|
+
remove_index :category_classifications, :category_id
|
27
|
+
remove_index :descriptive_assets, :internal_identifier
|
28
|
+
remove_index :view_types, :internal_identifier
|
29
|
+
remove_index :note_types, :parent_id
|
30
|
+
remove_index :note_types, :internal_identifier
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class AddCustomFieldsToParty < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
if ::ActiveRecord::Base.connection.instance_values["config"][:adapter] == 'postgresql'
|
4
|
+
execute('CREATE EXTENSION IF NOT EXISTS hstore;')
|
5
|
+
|
6
|
+
add_column :parties, :custom_fields, :hstore
|
7
|
+
add_hstore_index :parties, :custom_fields
|
8
|
+
else
|
9
|
+
add_column :parties, :custom_fields, :text
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/erp_base_erp_svcs.rb
CHANGED
@@ -6,7 +6,8 @@ require "erp_base_erp_svcs/non_escape_json_string"
|
|
6
6
|
|
7
7
|
module ErpBaseErpSvcs
|
8
8
|
class << self
|
9
|
-
|
9
|
+
@@root_engine_loaded = false
|
10
|
+
|
10
11
|
def installed_engines
|
11
12
|
ErpBaseErpSvcs::Config.compass_ae_engines
|
12
13
|
end
|
@@ -33,14 +34,13 @@ module ErpBaseErpSvcs
|
|
33
34
|
|
34
35
|
def register_as_compass_ae_engine(config, engine)
|
35
36
|
setup_compass_ae_callback(config, engine) do |engine|
|
36
|
-
ErpBaseErpSvcs.load_compass_ae_engine(engine)
|
37
|
+
ErpBaseErpSvcs.load_compass_ae_engine(engine)
|
37
38
|
end
|
38
39
|
end
|
39
40
|
|
40
41
|
def load_compass_ae_engine(engine)
|
41
42
|
installed_engines << engine unless installed_engines.include?(engine)
|
42
43
|
load_compass_ae_extensions(engine)
|
43
|
-
load_root_compass_ae_framework_extensions
|
44
44
|
end
|
45
45
|
|
46
46
|
#forces rails to reload model extensions and framework extensions
|
@@ -112,7 +112,7 @@ module ErpBaseErpSvcs
|
|
112
112
|
end
|
113
113
|
|
114
114
|
def load_root_compass_ae_framework_extensions
|
115
|
-
Dir.glob(File.join(Rails.root,"lib/extensions/compass_ae/**/*.rb")).each do |file|
|
115
|
+
Dir.glob(File.join(Rails.root,"lib/extensions/compass_ae/**/*.rb")).sort.each do |file|
|
116
116
|
load file
|
117
117
|
end
|
118
118
|
end
|
@@ -121,4 +121,4 @@ module ErpBaseErpSvcs
|
|
121
121
|
end
|
122
122
|
|
123
123
|
#load the engine after this module is defined
|
124
|
-
require "erp_base_erp_svcs/engine"
|
124
|
+
require "erp_base_erp_svcs/engine"
|