onoma 0.3.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +3 -0
- data/.gitlab-ci.yml +14 -0
- data/Gemfile +2 -0
- data/Rakefile +3 -6
- data/bin/rake +29 -0
- data/config/locales/arb.yml +0 -35
- data/config/locales/cmn.yml +0 -32
- data/config/locales/deu.yml +0 -15
- data/config/locales/eng.yml +178 -84
- data/config/locales/fra.yml +273 -283
- data/config/locales/ita.yml +0 -22
- data/config/locales/jpn.yml +0 -32
- data/config/locales/por.yml +0 -21
- data/config/locales/spa.yml +0 -30
- data/db/migrate/20170904223101_add_cultivable_zone_registry.xml +4 -0
- data/db/migrate/20190718130243_remove_services_expenses.xml +5 -0
- data/db/migrate/20190801142431_remove_accounts_from_pcg82.xml +5 -0
- data/db/migrate/20190807125202_add_nature_to_product_natures.xml +326 -0
- data/db/migrate/20190823091727_fix-cubic-meter-per-hectare-symbol.xml +5 -0
- data/db/migrate/20190909150402_add_staff_supply_stock_account.xml +4 -0
- data/db/migrate/20190913102036_add_caliber_indicator.xml +4 -0
- data/db/migrate/20190917161215_add_missing_mass_area_density_units.xml +21 -0
- data/db/migrate/20190917161216_update_quintal_symbol.xml +4 -0
- data/db/migrate/20190917161217_adds_more_info_to_units.xml +133 -0
- data/db/migrate/20190918074757_add_new_accounts.xml +8 -0
- data/db/migrate/20191001122750_add_accounts_fixed_assets_related.xml +10 -0
- data/db/migrate/20191016152118_add_missing_document_templates.xml +6 -0
- data/db/migrate/20191028175001_add_short_balance_sheet.xml +4 -0
- data/db/migrate/20191029131921_add_vine_equipments.xml +117 -0
- data/db/migrate/20191112132413_remove_roller_from_product_natures.xml +5 -0
- data/db/migrate/20191113134626_add_nature_to_new_product_natures.xml +11 -0
- data/db/migrate/20191125133327_add_missing_units_and_indicators.xml +5 -0
- data/db/migrate/20200107095554_add_signed_field_to_document_nature.xml +9 -0
- data/db/migrate/20200305160358_add_varieties_for_phytosanitary.xml +11 -0
- data/db/migrate/20200421123503_add_type_to_categories_and_variants.xml +1136 -0
- data/db/migrate/20200514092205_add_liter_per_hectoliter_unit.xml +4 -0
- data/db/migrate/20200722091859_triticale_derivative_of.xml +5 -0
- data/db/migrate/20200826000010_add_area_units.xml +4 -0
- data/db/migrate/20200826000020_change_trailer_indicators.xml +5 -0
- data/db/migrate/20200826000030_add_new_production_systems.xml +6 -0
- data/db/migrate/20200826000040_add_viti_abilities.xml +6 -0
- data/db/migrate/20200826000060_create_vine_farming_activity_famillies.xml +4 -0
- data/db/migrate/20200826000070_remove_certifications_and_vitis_varieties.xml +55 -0
- data/db/migrate/20200826000080_add_new_indicators.xml +14 -0
- data/db/migrate/20200826000100_add_viti_procedure_actions.xml +19 -0
- data/db/migrate/20200826000110_add_vine_puning_systems.xml +9 -0
- data/db/migrate/20200826000120_add_vine_procedure_categories.xml +10 -0
- data/db/migrate/20200826000130_update_viti_product_nauture_variant.xml +10 -0
- data/db/reference.xml +1479 -1356
- data/lib/onoma.rb +82 -24
- data/lib/onoma/item.rb +19 -3
- data/lib/onoma/migration/actions/base.rb +1 -5
- data/lib/onoma/migration/actions/item_change.rb +1 -5
- data/lib/onoma/migration/actions/item_creation.rb +2 -6
- data/lib/onoma/migration/actions/item_merging.rb +1 -5
- data/lib/onoma/migration/actions/item_removal.rb +1 -1
- data/lib/onoma/migration/actions/nomenclature_change.rb +1 -1
- data/lib/onoma/migration/actions/nomenclature_creation.rb +1 -1
- data/lib/onoma/migration/actions/nomenclature_removal.rb +1 -5
- data/lib/onoma/migration/actions/property_creation.rb +4 -4
- data/lib/onoma/migration/base.rb +38 -0
- data/lib/onoma/migrator.rb +13 -0
- data/lib/onoma/migrator/reference.rb +71 -0
- data/lib/onoma/migrator/translation.rb +76 -0
- data/lib/onoma/models/ability.rb +4 -0
- data/lib/onoma/models/account.rb +4 -0
- data/lib/onoma/models/accounting_system.rb +12 -0
- data/lib/onoma/models/activity_family.rb +4 -0
- data/lib/onoma/models/administrative_area.rb +4 -0
- data/lib/onoma/models/administrative_area_nature.rb +4 -0
- data/lib/onoma/models/analysis_nature.rb +4 -0
- data/lib/onoma/models/animal_life_state.rb +4 -0
- data/lib/onoma/models/cation_exchange_capacity_analysis_method.rb +4 -0
- data/lib/onoma/models/chemical_classification.rb +4 -0
- data/lib/onoma/models/chemical_element.rb +4 -0
- data/lib/onoma/models/country.rb +4 -0
- data/lib/onoma/models/crop_set.rb +4 -0
- data/lib/onoma/models/currency.rb +4 -0
- data/lib/onoma/models/delivery_mode.rb +4 -0
- data/lib/onoma/models/dimension.rb +4 -0
- data/lib/onoma/models/document_category.rb +4 -0
- data/lib/onoma/models/document_nature.rb +4 -0
- data/lib/onoma/models/entity_link_nature.rb +4 -0
- data/lib/onoma/models/event_nature.rb +4 -0
- data/lib/onoma/models/fence_perimeter.rb +4 -0
- data/lib/onoma/models/figure.rb +4 -0
- data/lib/onoma/models/fiscal_position.rb +4 -0
- data/lib/onoma/models/guide_nature.rb +4 -0
- data/lib/onoma/models/identifier_nature.rb +4 -0
- data/lib/onoma/models/indicator.rb +7 -0
- data/lib/onoma/models/issue_nature.rb +4 -0
- data/lib/onoma/models/language.rb +4 -0
- data/lib/onoma/models/mammalia_birth_condition.rb +4 -0
- data/lib/onoma/models/mammalia_reproduction_state.rb +4 -0
- data/lib/onoma/models/molecule.rb +4 -0
- data/lib/onoma/models/net_service.rb +4 -0
- data/lib/onoma/models/opportunity_origin.rb +4 -0
- data/lib/onoma/models/phosphorus_analysis_method.rb +4 -0
- data/lib/onoma/models/plant_life_state.rb +4 -0
- data/lib/onoma/models/plant_reproduction_state.rb +4 -0
- data/lib/onoma/models/plants_growth_level.rb +4 -0
- data/lib/onoma/models/procedure_action.rb +4 -0
- data/lib/onoma/models/procedure_category.rb +4 -0
- data/lib/onoma/models/procedure_nature.rb +4 -0
- data/lib/onoma/models/procedure_role.rb +4 -0
- data/lib/onoma/models/product_nature.rb +4 -0
- data/lib/onoma/models/product_nature_category.rb +4 -0
- data/lib/onoma/models/product_nature_variant.rb +4 -0
- data/lib/onoma/models/production_nature.rb +4 -0
- data/lib/onoma/models/production_system.rb +4 -0
- data/lib/onoma/models/production_usage.rb +4 -0
- data/lib/onoma/models/residue_elimination_method.rb +4 -0
- data/lib/onoma/models/role.rb +4 -0
- data/lib/onoma/models/running_cost.rb +4 -0
- data/lib/onoma/models/sex.rb +4 -0
- data/lib/onoma/models/soil_cultural_state.rb +4 -0
- data/lib/onoma/models/soil_nature.rb +4 -0
- data/lib/onoma/models/spatial_reference_system.rb +4 -0
- data/lib/onoma/models/tax.rb +4 -0
- data/lib/onoma/models/tax_nature.rb +4 -0
- data/lib/onoma/models/unit.rb +4 -0
- data/lib/onoma/models/variety.rb +31 -0
- data/lib/onoma/models/working_set.rb +4 -0
- data/lib/onoma/nomenclature.rb +19 -23
- data/lib/onoma/{database.rb → nomenclature_set.rb} +25 -57
- data/lib/onoma/{property.rb → property_nature.rb} +5 -8
- data/lib/onoma/record/base.rb +15 -0
- data/lib/onoma/reflection.rb +3 -3
- data/lib/onoma/version.rb +3 -1
- data/onoma.gemspec +16 -17
- metadata +126 -30
- data/db/db.xml +0 -0
- data/lib/onoma/migration.rb +0 -122
- data/lib/onoma/migration/actions.rb +0 -9
@@ -0,0 +1,76 @@
|
|
1
|
+
module Onoma
|
2
|
+
module Migrator
|
3
|
+
class Translation
|
4
|
+
class << self
|
5
|
+
def run(migration)
|
6
|
+
puts "Migration #{migration.name}"
|
7
|
+
I18n.available_locales.each do |locale|
|
8
|
+
file = Onoma.root.join('config', 'locales', "#{locale.to_s}.yml")
|
9
|
+
hash = yaml_to_hash(file)
|
10
|
+
migration.each_action do |action|
|
11
|
+
ref = hash[locale.to_sym][:nomenclatures]
|
12
|
+
ref[action.nomenclature.to_sym] ||= {}
|
13
|
+
ref[action.nomenclature.to_sym][:items] ||= {}
|
14
|
+
if action.is_a?(Onoma::Migration::Actions::ItemChange) && action.new_name?
|
15
|
+
ref[action.nomenclature.to_sym][:items][action.new_name.to_sym] ||= ref[action.nomenclature.to_sym][:items].delete(action.name.to_sym)
|
16
|
+
elsif action.is_a?(Onoma::Migration::Actions::ItemMerging)
|
17
|
+
# ref[action.nomenclature.to_sym][:items][action.into.to_sym] ||= ref[action.nomenclature.to_sym][:items].delete(action.name.to_sym)
|
18
|
+
ref[action.nomenclature.to_sym][:items].delete(action.name.to_sym)
|
19
|
+
elsif action.is_a?(Onoma::Migration::Actions::NomenclatureChange) && action.changes[:name]
|
20
|
+
ref[action.changes[:name].to_sym] = ref.delete(action.nomenclature.to_sym)
|
21
|
+
elsif action.is_a?(Onoma::Migration::Actions::NomenclatureRemoval)
|
22
|
+
ref.delete(action.nomenclature.to_sym)
|
23
|
+
elsif !action.is_a?(Onoma::Migration::Actions::Base)
|
24
|
+
raise "Cannot handle: #{action.inspect}"
|
25
|
+
end
|
26
|
+
File.write(file, hash_to_yaml(hash))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def yaml_to_hash(filename)
|
34
|
+
hash = YAML.safe_load(IO.read(filename).gsub(/^(\s*)(no|yes|false|true):(.*)$/, '\1__\2__:\3'), [], [], true)
|
35
|
+
hash.deep_symbolize_keys
|
36
|
+
end
|
37
|
+
|
38
|
+
def hash_to_yaml(hash, depth = nil)
|
39
|
+
code = hash.sort_by { |a| a[0].to_s.tr('_', ' ').strip }.map do |k, v|
|
40
|
+
next unless v
|
41
|
+
pair_to_yaml(k, v)
|
42
|
+
end.join("\n")
|
43
|
+
code = "\n" + code.indent(depth).gsub(/^\s+$/, '') unless depth.nil?
|
44
|
+
code
|
45
|
+
end
|
46
|
+
|
47
|
+
def value_to_yaml(value)
|
48
|
+
if value.is_a?(Array)
|
49
|
+
'[' + value.map { |x| value_to_yaml(x) }.join(', ') + ']'
|
50
|
+
elsif value.is_a?(Symbol)
|
51
|
+
':' + value.to_s
|
52
|
+
elsif value.is_a?(Hash)
|
53
|
+
hash_to_yaml(value)
|
54
|
+
elsif value.is_a?(Numeric)
|
55
|
+
value.to_s
|
56
|
+
else
|
57
|
+
v = value.to_s.gsub("\\u00A0", '\\_')
|
58
|
+
value =~ /\n/ ? "|\n" + v.strip.indent : '"' + v + '"'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def pair_to_yaml(k, v)
|
63
|
+
if v.is_a?(Hash)
|
64
|
+
k.to_s + ":\n" + indent(hash_to_yaml(v))
|
65
|
+
else
|
66
|
+
k.to_s + ': ' + value_to_yaml(v)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def indent(string, depth = 1)
|
71
|
+
string.gsub(/^/, ' ' * depth)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Onoma
|
2
|
+
class AccountingSystem < Onoma::Record::Base
|
3
|
+
class << self
|
4
|
+
def with_fiscal_position
|
5
|
+
Onoma::FiscalPosition.items.values
|
6
|
+
.reduce(Set.new) {|acc, fp| acc << fp.accounting_system}
|
7
|
+
.map {|e| Onoma::AccountingSystem[e]}
|
8
|
+
.compact
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Onoma
|
2
|
+
class Variety < Onoma::Record::Base
|
3
|
+
TOPLEVEL_VARIETIES = %w[bioproduct immatter matter product product_group].freeze
|
4
|
+
|
5
|
+
class << self
|
6
|
+
def parent_variety(variety)
|
7
|
+
v = find(variety)
|
8
|
+
|
9
|
+
if v.nil?
|
10
|
+
nil
|
11
|
+
elsif (toplevel = toplevel_parent(v)).present?
|
12
|
+
toplevel.name
|
13
|
+
else
|
14
|
+
v.name
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def toplevel_parent(variety)
|
19
|
+
ancestors(variety).last
|
20
|
+
end
|
21
|
+
|
22
|
+
def ancestors(variety)
|
23
|
+
if variety.parent.nil? || TOPLEVEL_VARIETIES.include?(variety.parent.name)
|
24
|
+
[]
|
25
|
+
else
|
26
|
+
[variety.parent, *ancestors(variety.parent)]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|