diff --git a/Gemfile b/Gemfile index 512ea260..1fda1f10 100644 --- a/Gemfile +++ b/Gemfile @@ -51,7 +51,7 @@ gem 'ice_cube' # At time of development 01-06-2022 mmddyyyy necessary fix for config_helper.rb form builder was not in rubygems so we pull from github, see: https://github.com/gregschmit/recurring_select/pull/152 gem 'recurring_select', git: 'https://github.com/gregschmit/recurring_select' # TODO: publish gem on github -gem 'foodsoft_article_import', git: 'https://git.local-it.org/Foodsoft/foodsoft_article_import', tag: 'v1.9' +gem 'foodsoft_article_import', git: 'https://git.local-it.org/Foodsoft/foodsoft_article_import', tag: 'v0.1' gem 'roo' gem 'roo-xls' gem 'spreadsheet' diff --git a/Gemfile.lock b/Gemfile.lock index 3387fb74..0c9eaf3d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,10 +1,11 @@ GIT remote: https://git.local-it.org/Foodsoft/foodsoft_article_import - revision: 573851e5497758e1d27d2199f03b939e6bda9e35 - tag: v1.9 + revision: c7e432c247ca6aa327ae889d22f78227efed2479 + tag: v0.1 specs: foodsoft_article_import (1.0.0) roo (~> 2.9.0) + simplecov GIT remote: https://github.com/gregschmit/recurring_select diff --git a/app/models/article.rb b/app/models/article.rb index 7e7d7fa5..76a68605 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -51,7 +51,7 @@ class Article < ApplicationRecord has_many :orders, through: :order_articles # Replace numeric seperator with database format - localize_input_of :price, :tax, :deposit, :price_per + localize_input_of :price, :tax, :deposit # Get rid of unwanted whitespace. {Unit#new} may even bork on whitespace. normalize_attributes :name, :unit, :note, :manufacturer, :origin, :order_number @@ -142,14 +142,7 @@ class Article < ApplicationRecord new_unit_quantity = new_article.unit_quantity new_unit = new_article.unit end - puts " - " + "______________" + " - " + "______________" + " - " + "_____oha_________" + " - " + "#{new_article.unit_symbol}" + " - " + "______________"+ " - " + "______________"+ " - " + "______________" + return Article.compare_attributes( { :name => [self.name, new_article.name], @@ -159,8 +152,6 @@ class Article < ApplicationRecord :price => [self.price.to_f.round(2), new_price.to_f.round(2)], :tax => [self.tax, new_article.tax], :deposit => [self.deposit.to_f.round(2), new_article.deposit.to_f.round(2)], - :price_per => [self.price_per.to_f.round(2), new_article.price_per.to_f.round(2)], - :unit_symbol => [self.unit_symbol, new_article.unit_symbol], # take care of different num-objects. :unit_quantity => [self.unit_quantity.to_s.to_f, new_unit_quantity.to_s.to_f], :note => [self.note.to_s, new_article.note.to_s] diff --git a/app/models/concerns/price_calculation.rb b/app/models/concerns/price_calculation.rb index b7a18415..03b9a7ad 100644 --- a/app/models/concerns/price_calculation.rb +++ b/app/models/concerns/price_calculation.rb @@ -12,14 +12,6 @@ module PriceCalculation add_percent(gross_price, FoodsoftConfig[:price_markup]) end - def fc_price_per - if price_per > 0 - add_percent(add_percent(price_per, tax), FoodsoftConfig[:price_markup]) - else - fc_price - end - end - private def add_percent(value, percent) diff --git a/app/models/group_order.rb b/app/models/group_order.rb index 73c0e5d1..c789ef4e 100644 --- a/app/models/group_order.rb +++ b/app/models/group_order.rb @@ -45,8 +45,6 @@ class GroupOrder < ApplicationRecord # Build hash with relevant data data[:order_articles][order_article.id] = { :price => order_article.article.fc_price, - :price_per => order_article.article.fc_price_per, - :unit_symbol => order_article.article.unit_symbol, :unit => order_article.article.unit_quantity, :quantity => (goa ? goa.quantity : 0), :others_quantity => order_article.quantity - (goa ? goa.quantity : 0), diff --git a/app/models/shared_article.rb b/app/models/shared_article.rb index c09a9ec0..238b48f0 100644 --- a/app/models/shared_article.rb +++ b/app/models/shared_article.rb @@ -19,10 +19,8 @@ class SharedArticle < ApplicationRecord :unit_quantity => unit_quantity, :order_number => number, :article_category => ArticleCategory.find_match(category), - :price_per => price_per, - :unit_symbol => unit_symbol, # convert to db-compatible-string - :shared_updated_on => updated_on.to_fs(:db) + :shared_updated_on => updated_on.to_formatted_s(:db) ) end end diff --git a/app/models/supplier.rb b/app/models/supplier.rb index 8ae5ef42..9d6cd8a5 100644 --- a/app/models/supplier.rb +++ b/app/models/supplier.rb @@ -88,6 +88,7 @@ class Supplier < ApplicationRecord new_attrs[:article_category] = ArticleCategory.find_match(new_attrs[:article_category]) new_attrs[:tax] ||= FoodsoftConfig[:tax_default] new_article = articles.build(new_attrs) + if status.nil? if article.nil? new_articles << new_article @@ -112,7 +113,6 @@ class Supplier < ApplicationRecord if options[:outlist_absent] outlisted_articles += articles.undeleted.where.not(order_number: all_order_numbers + [nil]) end - # TODO: change price_per to scale factor return [updated_article_pairs, outlisted_articles, new_articles] end diff --git a/app/views/articles/_form.html.haml b/app/views/articles/_form.html.haml index fbab5d48..7cbd64cd 100644 --- a/app/views/articles/_form.html.haml +++ b/app/views/articles/_form.html.haml @@ -1,6 +1,5 @@ = simple_form_for [@supplier, @article], :validate => true, :remote => true do |f| = f.hidden_field :shared_updated_on - = f.hidden_field :unit_symbol = f.hidden_field :supplier_id .modal-header = close_button :modal diff --git a/app/views/articles/_sync.html.haml b/app/views/articles/_sync.html.haml index 37584369..05945112 100644 --- a/app/views/articles/_sync.html.haml +++ b/app/views/articles/_sync.html.haml @@ -17,14 +17,14 @@ %i = t '.update.update_msg', count: @updated_article_pairs.size = t '.update.body' - = render 'sync_table', articles: @updated_article_pairs, field: 'articles', hidden_fields: %w(shared_updated_on unit_symbol) + = render 'sync_table', articles: @updated_article_pairs, field: 'articles', hidden_fields: %w(shared_updated_on) %hr/ - if @new_articles.any? %h2= t '.upnew.title' %p %i= t '.upnew.body_count', count: @new_articles.length - = render 'sync_table', articles: @new_articles, field: 'new_articles', hidden_fields: %w(shared_updated_on order_number availability unit_symbol) + = render 'sync_table', articles: @new_articles, field: 'new_articles', hidden_fields: %w(shared_updated_on order_number availability) %hr/ - if ignored_article_count > 0 diff --git a/app/views/articles/_sync_table.html.haml b/app/views/articles/_sync_table.html.haml index 4704ee79..ac17adfa 100644 --- a/app/views/articles/_sync_table.html.haml +++ b/app/views/articles/_sync_table.html.haml @@ -8,7 +8,6 @@ %th= heading_helper Article, :unit %th= heading_helper Article, :unit_quantity, short: true %th= heading_helper Article, :price - %th= heading_helper Article, :price_per %th= heading_helper Article, :tax %th= heading_helper Article, :deposit %th= heading_helper Article, :article_category @@ -24,7 +23,6 @@ %td= article.unit %td= article.unit_quantity %td= number_to_currency article.price - %td= number_to_currency article.price_per.round(2) %td= number_to_percentage article.tax %td= number_to_currency article.deposit %td= article.article_category.name if article.article_category @@ -43,10 +41,6 @@ .input-prepend %span.add-on= t 'number.currency.format.unit' = form.text_field 'price', class: 'input-mini', style: 'width: 45px' - %td{:style => highlight_new(attrs, :price_per)} - .input-prepend - %span.add-on= t 'number.currency.format.unit' - = form.text_field 'price_per', class: 'input-mini', style: 'width: 45px' %td{:style => highlight_new(attrs, :tax)} .input-append = form.text_field 'tax', class: 'input-mini', style: 'width: 45px' diff --git a/app/views/group_orders/_form.html.haml b/app/views/group_orders/_form.html.haml index 72e90584..3ffd583e 100644 --- a/app/views/group_orders/_form.html.haml +++ b/app/views/group_orders/_form.html.haml @@ -77,7 +77,6 @@ %th{style: 'width:120px'}= heading_helper StockArticle, :supplier %th{style: "width:13px;"} %th{style: "width:4.5em;"}= t '.price' - %th{style: "width:4.5em;"}= t '.price_per' %th{style: "width:4.5em;"}= heading_helper Article, :unit - unless @order.stockit? %th{style: "width:70px;"}= heading_helper OrderArticle, :missing_units, short: true @@ -101,7 +100,6 @@ %td= truncate order_article.article.supplier.name, length: 15 %td= h order_article.article.origin %td= number_to_currency(@ordering_data[:order_articles][order_article.id][:price]) - %td= "#{number_to_currency(@ordering_data[:order_articles][order_article.id][:price_per])}/#{@ordering_data[:order_articles][order_article.id][:unit_symbol]||@ordering_data[:order_articles][order_article.id][:unit]}" %td= order_article.article.unit %td - if @order.stockit? diff --git a/config/locales/de.yml b/config/locales/de.yml index ee96c7e9..5a1a5b35 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1052,7 +1052,6 @@ de: action_save: Bestellung speichern new_funds: Neuer Kontostand price: Preis - price_per: Preis je Mengeneinheit (ohne Pfand) reset_article_search: Suche zurücksetzen search_article: Artikel suchen... sum_amount: Gesamtbestellmenge bisher diff --git a/config/locales/en.yml b/config/locales/en.yml index 8a87ed2c..59e94385 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1054,7 +1054,6 @@ en: action_save: Save order new_funds: New account balance price: Price - price_per: Price per quantity unit (without deposit) reset_article_search: Reset search search_article: Search for articles... sum_amount: Current amount diff --git a/config/locales/es.yml b/config/locales/es.yml index 31372e7d..620ec3bb 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -929,7 +929,6 @@ es: action_save: Guardar pedido new_funds: Nuevo balance de cuenta price: Precio - price_per: Precio por unidad de cantidad (sin depósito) reset_article_search: Reinicia la búsqueda search_article: Busca artículos... sum_amount: Cantidad actual diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 07d9ab5f..4dbdb864 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -678,7 +678,6 @@ fr: action_save: Enregistrer ta commande new_funds: Nouveau solde price: Prix - price_per: Prix par unité de quantité (sans consigne) reset_article_search: Réinitialiser la recherche search_article: Rechercher des produits... sum_amount: Quantité déjà commandée diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 8da6126f..4c97dda4 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1024,7 +1024,6 @@ nl: action_save: Bestelling opslaan new_funds: Nieuw tegoed price: Prijs - price_per: Prijs per hoeveelheidseenheid (zonder statiegeld) reset_article_search: Alles tonen search_article: Artikelen zoeken... sum_amount: Huidig totaalbedrag diff --git a/db/migrate/20230220214408_add_price_per_to_articles.rb b/db/migrate/20230220214408_add_price_per_to_articles.rb deleted file mode 100644 index b4fad488..00000000 --- a/db/migrate/20230220214408_add_price_per_to_articles.rb +++ /dev/null @@ -1,6 +0,0 @@ -class AddPricePerToArticles < ActiveRecord::Migration[7.0] - def change - add_column :articles, :price_per, :float, default: 0.0 - add_column :articles, :unit_symbol, :string - end -end diff --git a/db/schema.rb b/db/schema.rb index 54a67861..50c24c41 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,17 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_02_20_214408) do - create_table "action_text_rich_texts", charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| - t.string "name", null: false - t.text "body", size: :long - t.string "record_type", null: false - t.bigint "record_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["record_type", "record_id", "name"], name: "index_action_text_rich_texts_uniqueness", unique: true - end - +ActiveRecord::Schema[7.0].define(version: 2023_01_06_144440) do create_table "active_storage_attachments", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.string "name", null: false t.string "record_type", null: false @@ -85,8 +75,6 @@ ActiveRecord::Schema[7.0].define(version: 2023_02_20_214408) do t.datetime "deleted_at", precision: nil t.string "type" t.integer "quantity", default: 0 - t.float "price_per", default: 0.0 - t.string "unit_symbol" t.index ["article_category_id"], name: "index_articles_on_article_category_id" t.index ["name", "supplier_id"], name: "index_articles_on_name_and_supplier_id" t.index ["supplier_id"], name: "index_articles_on_supplier_id" @@ -294,6 +282,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_02_20_214408) do create_table "messages", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.integer "sender_id" t.string "subject", null: false + t.text "body" t.boolean "private", default: false t.datetime "created_at", precision: nil t.integer "reply_to" diff --git a/spec/factories/article.rb b/spec/factories/article.rb index 87535b67..69e23d88 100644 --- a/spec/factories/article.rb +++ b/spec/factories/article.rb @@ -7,7 +7,6 @@ FactoryBot.define do tax { [6, 21].sample } deposit { rand(10) < 8 ? 0 : [0.0, 0.80, 1.20, 12.00].sample } unit_quantity { rand(5) < 3 ? 1 : rand(1..20) } - price_per { rand(0.1..26.0).round(2) } factory :article do sequence(:name) { |n| Faker::Lorem.words(number: rand(2..4)).join(' ') + " ##{n}" } diff --git a/spec/fixtures/bnn_file_01.bnn b/spec/fixtures/bnn_file_01.bnn index 11772352..177da7be 100644 --- a/spec/fixtures/bnn_file_01.bnn +++ b/spec/fixtures/bnn_file_01.bnn @@ -1,5 +1,5 @@ BNN;3;0;Naturkost Nord, Hamburg;T;Angebot Nr. 0922;EUR;20220905;20221001;20220825;837;1 -29932;;;;4280001958081;4280001958203;Walnoten (ongeroosterd);bio;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;;1;1 kg;1;N;930190;99260;;1,41;;;;1;;;4,49;2,34;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;Kg;1;; -28391;;;;4280001958081;4280001958203;Pijnboompitten;dem;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;;1;100 g;10;N;930190;99260;;1,41;;;;1;;;5,56;2.89;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;Kg;10;; -1829;;;;4280001958081;4280001958203;Appelsap (verpakt);;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;4x250 ml;10;4x250 ml;10;N;930190;99260;;3,21;;;;1;;;4,49;2.89;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;l;4;; -177813;;;;4280001958081;4280001958203;Tomaten;bio;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;;1;500 g;20;N;930190;99260;;1,20;;;;1;;;4,49;2.89;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;Kg;2;; +29932;;;;4280001958081;4280001958203;Walnoten (ongeroosterd);bio;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;;1;1 kg;1;N;930190;99260;;1,41;;;;1;;;4,49;2,34;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;Kg;28,571;; +28391;;;;4280001958081;4280001958203;Pijnboompitten;dem;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;;1;100 g;10;N;930190;99260;;1,41;;;;1;;;5,56;2.89;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;Kg;28,571;; +1829;;;;4280001958081;4280001958203;Appelsap (verpakt);;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;4x250 ml;10;4x250 ml;10;N;930190;99260;;3,21;;;;1;;;4,49;2.89;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;ml;28,571;; +177813;;;;4280001958081;4280001958203;Tomaten;bio;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;;1;500 g;20;N;930190;99260;;1,20;;;;1;;;4,49;2.89;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;g;28,571;; diff --git a/spec/fixtures/bnn_file_02.bnn b/spec/fixtures/bnn_file_02.bnn index dfcdd7a2..e3dba5bb 100644 --- a/spec/fixtures/bnn_file_02.bnn +++ b/spec/fixtures/bnn_file_02.bnn @@ -1,2 +1,2 @@ BNN;3;0;Naturkost Nord, Hamburg;T;Angebot Nr. 0922;EUR;20220905;20221001;20220825;837;1 -1;;;;4280001958081;4280001958203;Tomatoes;organic;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;;20;500 g;1;N;930190;99260;;1,41;;;;1;;;4,49;1,20;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;Kg;2;; \ No newline at end of file +1;;;;4280001958081;4280001958203;Tomatoes;organic;;;med;;GR;C%;DE-?KO-001;120;1302;10;55;;1;;20;500 g;1;N;930190;99260;;1,41;;;;1;;;4,49;1,20;J;;2;3;;;;;;;;;;;;;;;;;;;A;;;;;g;28,571;; \ No newline at end of file