onoma 0.3.3 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitlab-ci.yml +14 -0
  4. data/Gemfile +2 -0
  5. data/Rakefile +3 -6
  6. data/bin/rake +29 -0
  7. data/config/locales/arb.yml +0 -35
  8. data/config/locales/cmn.yml +0 -32
  9. data/config/locales/deu.yml +0 -15
  10. data/config/locales/eng.yml +51 -51
  11. data/config/locales/fra.yml +92 -254
  12. data/config/locales/ita.yml +0 -22
  13. data/config/locales/jpn.yml +0 -32
  14. data/config/locales/por.yml +0 -21
  15. data/config/locales/spa.yml +0 -30
  16. data/db/migrate/20190807125202_add_nature_to_product_natures.xml +326 -0
  17. data/db/migrate/20190909150402_add_staff_supply_stock_account.xml +4 -0
  18. data/db/migrate/20190913102036_add_caliber_indicator.xml +4 -0
  19. data/db/migrate/20191016152118_add_missing_document_templates.xml +6 -0
  20. data/db/migrate/20191113134626_add_nature_to_new_product_natures.xml +11 -0
  21. data/db/migrate/20191125133327_add_missing_units_and_indicators.xml +5 -0
  22. data/db/migrate/20200107095554_add_signed_field_to_document_nature.xml +9 -0
  23. data/db/migrate/20200421123503_add_type_to_categories_and_variants.xml +1136 -0
  24. data/db/migrate/20200514092205_add_liter_per_hectoliter_unit.xml +4 -0
  25. data/db/migrate/20200722091859_triticale_derivative_of.xml +5 -0
  26. data/db/migrate/20200826000010_add_area_units.xml +4 -0
  27. data/db/migrate/20200826000020_change_trailer_indicators.xml +5 -0
  28. data/db/migrate/20200826000030_add_new_production_systems.xml +6 -0
  29. data/db/migrate/20200826000040_add_viti_abilities.xml +6 -0
  30. data/db/migrate/20200826000060_create_vine_farming_activity_famillies.xml +4 -0
  31. data/db/migrate/20200826000070_remove_certifications_and_vitis_varieties.xml +55 -0
  32. data/db/migrate/20200826000080_add_new_indicators.xml +14 -0
  33. data/db/migrate/20200826000100_add_viti_procedure_actions.xml +19 -0
  34. data/db/migrate/20200826000110_add_vine_puning_systems.xml +9 -0
  35. data/db/migrate/20200826000120_add_vine_procedure_categories.xml +10 -0
  36. data/db/migrate/20200826000130_update_viti_product_nauture_variant.xml +10 -0
  37. data/db/migrate/20200925153320_fix_outgoing_payment_list_document_nature.xml +7 -0
  38. data/db/reference.xml +1001 -1041
  39. data/lib/onoma.rb +82 -24
  40. data/lib/onoma/item.rb +19 -3
  41. data/lib/onoma/migration/actions/base.rb +1 -5
  42. data/lib/onoma/migration/actions/item_change.rb +1 -5
  43. data/lib/onoma/migration/actions/item_creation.rb +2 -6
  44. data/lib/onoma/migration/actions/item_merging.rb +1 -5
  45. data/lib/onoma/migration/actions/item_removal.rb +1 -1
  46. data/lib/onoma/migration/actions/nomenclature_change.rb +1 -1
  47. data/lib/onoma/migration/actions/nomenclature_creation.rb +1 -1
  48. data/lib/onoma/migration/actions/nomenclature_removal.rb +1 -5
  49. data/lib/onoma/migration/actions/property_creation.rb +4 -4
  50. data/lib/onoma/migration/base.rb +38 -0
  51. data/lib/onoma/migrator.rb +13 -0
  52. data/lib/onoma/migrator/reference.rb +71 -0
  53. data/lib/onoma/migrator/translation.rb +76 -0
  54. data/lib/onoma/models/ability.rb +4 -0
  55. data/lib/onoma/models/account.rb +4 -0
  56. data/lib/onoma/models/accounting_system.rb +12 -0
  57. data/lib/onoma/models/activity_family.rb +4 -0
  58. data/lib/onoma/models/administrative_area.rb +4 -0
  59. data/lib/onoma/models/administrative_area_nature.rb +4 -0
  60. data/lib/onoma/models/analysis_nature.rb +4 -0
  61. data/lib/onoma/models/animal_life_state.rb +4 -0
  62. data/lib/onoma/models/cation_exchange_capacity_analysis_method.rb +4 -0
  63. data/lib/onoma/models/chemical_classification.rb +4 -0
  64. data/lib/onoma/models/chemical_element.rb +4 -0
  65. data/lib/onoma/models/country.rb +4 -0
  66. data/lib/onoma/models/crop_set.rb +4 -0
  67. data/lib/onoma/models/currency.rb +4 -0
  68. data/lib/onoma/models/delivery_mode.rb +4 -0
  69. data/lib/onoma/models/dimension.rb +4 -0
  70. data/lib/onoma/models/document_category.rb +4 -0
  71. data/lib/onoma/models/document_nature.rb +4 -0
  72. data/lib/onoma/models/entity_link_nature.rb +4 -0
  73. data/lib/onoma/models/event_nature.rb +4 -0
  74. data/lib/onoma/models/fence_perimeter.rb +4 -0
  75. data/lib/onoma/models/figure.rb +4 -0
  76. data/lib/onoma/models/fiscal_position.rb +4 -0
  77. data/lib/onoma/models/guide_nature.rb +4 -0
  78. data/lib/onoma/models/identifier_nature.rb +4 -0
  79. data/lib/onoma/models/indicator.rb +7 -0
  80. data/lib/onoma/models/issue_nature.rb +4 -0
  81. data/lib/onoma/models/language.rb +4 -0
  82. data/lib/onoma/models/mammalia_birth_condition.rb +4 -0
  83. data/lib/onoma/models/mammalia_reproduction_state.rb +4 -0
  84. data/lib/onoma/models/molecule.rb +4 -0
  85. data/lib/onoma/models/net_service.rb +4 -0
  86. data/lib/onoma/models/opportunity_origin.rb +4 -0
  87. data/lib/onoma/models/phosphorus_analysis_method.rb +4 -0
  88. data/lib/onoma/models/plant_life_state.rb +4 -0
  89. data/lib/onoma/models/plant_reproduction_state.rb +4 -0
  90. data/lib/onoma/models/plants_growth_level.rb +4 -0
  91. data/lib/onoma/models/procedure_action.rb +4 -0
  92. data/lib/onoma/models/procedure_category.rb +4 -0
  93. data/lib/onoma/models/procedure_nature.rb +4 -0
  94. data/lib/onoma/models/procedure_role.rb +4 -0
  95. data/lib/onoma/models/product_nature.rb +4 -0
  96. data/lib/onoma/models/product_nature_category.rb +4 -0
  97. data/lib/onoma/models/product_nature_variant.rb +4 -0
  98. data/lib/onoma/models/production_nature.rb +4 -0
  99. data/lib/onoma/models/production_system.rb +4 -0
  100. data/lib/onoma/models/production_usage.rb +4 -0
  101. data/lib/onoma/models/residue_elimination_method.rb +4 -0
  102. data/lib/onoma/models/role.rb +4 -0
  103. data/lib/onoma/models/running_cost.rb +4 -0
  104. data/lib/onoma/models/sex.rb +4 -0
  105. data/lib/onoma/models/soil_cultural_state.rb +4 -0
  106. data/lib/onoma/models/soil_nature.rb +4 -0
  107. data/lib/onoma/models/spatial_reference_system.rb +4 -0
  108. data/lib/onoma/models/tax.rb +4 -0
  109. data/lib/onoma/models/tax_nature.rb +4 -0
  110. data/lib/onoma/models/unit.rb +4 -0
  111. data/lib/onoma/models/variety.rb +31 -0
  112. data/lib/onoma/models/working_set.rb +4 -0
  113. data/lib/onoma/nomenclature.rb +19 -23
  114. data/lib/onoma/{database.rb → nomenclature_set.rb} +25 -57
  115. data/lib/onoma/{property.rb → property_nature.rb} +5 -8
  116. data/lib/onoma/record/base.rb +15 -0
  117. data/lib/onoma/reflection.rb +3 -3
  118. data/lib/onoma/version.rb +3 -1
  119. data/onoma.gemspec +16 -17
  120. metadata +110 -24
  121. data/lib/onoma/migration.rb +0 -122
  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,4 @@
1
+ module Onoma
2
+ class Ability < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Account < Onoma::Record::Base
3
+ end
4
+ 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,4 @@
1
+ module Onoma
2
+ class ActivityFamily < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class AdministrativeArea < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class AdministrativeAreaNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class AnalysisNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class AnimalLifeState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class CationExchangeCapacityAnalysisMethod < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ChemicalClassification < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ChemicalElement < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Country < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class CropSet < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Currency < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class DeliveryMode < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Dimension < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class DocumentCategory < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class DocumentNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class EntityLinkNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class EventNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class FencePerimeter < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Figure < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class FiscalPosition < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class GuideNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class IdentifierNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,7 @@
1
+ module Onoma
2
+ class Indicator < Onoma::Record::Base
3
+ class << self
4
+ delegate :each, to: :all
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class IssueNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Language < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class MammaliaBirthCondition < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class MammaliaReproductionState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Molecule < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class NetService < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class OpportunityOrigin < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class PhosphorusAnalysisMethod < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class PlantLifeState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class PlantReproductionState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class PlantsGrowthLevel < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProcedureAction < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProcedureCategory < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProcedureNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProcedureRole < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductNatureCategory < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductNatureVariant < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductionNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductionSystem < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ProductionUsage < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class ResidueEliminationMethod < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Role < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class RunningCost < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Sex < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class SoilCulturalState < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class SoilNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class SpatialReferenceSystem < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Tax < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class TaxNature < Onoma::Record::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Onoma
2
+ class Unit < Onoma::Record::Base
3
+ end
4
+ 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