Add SupplierCategory

This allows the categorization of suppliers. For a better reporting
it is necessary to split the expenses of the invoices.
E.g. we want to be able to generate independent sums of general cost
like the rent or electricity and the cost of the bought articles.
This commit is contained in:
Patrick Gansterer 2019-11-17 11:41:34 +01:00
parent f5bbe0d5ae
commit d90d188dbf
11 changed files with 90 additions and 25 deletions

View file

@ -0,0 +1,25 @@
class CreateSupplierCategories < ActiveRecord::Migration
class FinancialTransactionClass < ActiveRecord::Base; end
class SupplierCategory < ActiveRecord::Base; end
class Supplier < ActiveRecord::Base; end
def change
create_table :supplier_categories do |t|
t.string :name, null: false
t.string :description
t.references :financial_transaction_class, null: false
end
add_reference :suppliers, :supplier_category
reversible do |dir|
dir.up do
ftc = FinancialTransactionClass.first
sc = SupplierCategory.create name: 'Other', financial_transaction_class_id: ftc.id
Supplier.update_all supplier_category_id: sc.id
end
end
change_column_null :suppliers, :supplier_category_id, false
end
end

View file

@ -488,24 +488,31 @@ ActiveRecord::Schema.define(version: 20181205010000) do
t.datetime "created_at"
end
create_table "supplier_categories", force: :cascade do |t|
t.string "name", limit: 255, null: false
t.string "description", limit: 255
t.integer "financial_transaction_class_id", limit: 4
end
create_table "suppliers", force: :cascade do |t|
t.string "name", limit: 255, default: "", null: false
t.string "address", limit: 255, default: "", null: false
t.string "phone", limit: 255, default: "", null: false
t.string "phone2", limit: 255
t.string "fax", limit: 255
t.string "email", limit: 255
t.string "url", limit: 255
t.string "contact_person", limit: 255
t.string "customer_number", limit: 255
t.string "delivery_days", limit: 255
t.string "order_howto", limit: 255
t.string "note", limit: 255
t.integer "shared_supplier_id", limit: 4
t.string "min_order_quantity", limit: 255
t.string "name", limit: 255, default: "", null: false
t.string "address", limit: 255, default: "", null: false
t.string "phone", limit: 255, default: "", null: false
t.string "phone2", limit: 255
t.string "fax", limit: 255
t.string "email", limit: 255
t.string "url", limit: 255
t.string "contact_person", limit: 255
t.string "customer_number", limit: 255
t.string "delivery_days", limit: 255
t.string "order_howto", limit: 255
t.string "note", limit: 255
t.integer "shared_supplier_id", limit: 4
t.string "min_order_quantity", limit: 255
t.datetime "deleted_at"
t.string "shared_sync_method", limit: 255
t.string "iban", limit: 255
t.string "shared_sync_method", limit: 255
t.string "iban", limit: 255
t.integer "supplier_category_id", limit: 4
end
add_index "suppliers", ["name"], name: "index_suppliers_on_name", unique: true, using: :btree

View file

@ -27,4 +27,5 @@ financial_transaction_class = FinancialTransactionClass.create(:name => "Other")
FinancialTransactionType.create(:name => "Foodcoop", :financial_transaction_class_id => financial_transaction_class.id)
# First entry for article categories
SupplierCategory.create(:name => "Other")
ArticleCategory.create(:name => "Other", :description => "other, misc, unknown")

View file

@ -2,11 +2,13 @@ require_relative 'seed_helper.rb'
## Suppliers & articles
SupplierCategory.create(:id => 1, :name => "Other")
Supplier.create([
{:id => 1, :name => "Beautiful bakery", :address => "Smallstreet 1, Cookilage", :phone => "0123456789", :email => "info@bbakery.test", :min_order_quantity => "100"},
{:id => 2, :name => "Chocolatiers", :address => "Multatuliroad 1, Amsterdam", :phone => "0123456789", :email => "info@chocolatiers.test", :url => "http://www.chocolatiers.test/", :contact_person => "Max Pure", :delivery_days => "Tue, Fr (Amsterdam)"},
{:id => 3, :name => "Cheesemaker", :address => "Cheesestreet 5, London", :phone => "0123456789", :url => "http://www.cheesemaker.test/"},
{:id => 4, :name => "The Nuthome", :address => "Alexanderplatz, Berlin", :phone => "0123456789", :email => "info@thenuthome.test", :url => "http://www.thenuthome.test/", :note => "delivery in Berlin; €9 delivery costs for orders under €123"}
{:id => 1, :name => "Beautiful bakery", :supplier_category_id => 1, :address => "Smallstreet 1, Cookilage", :phone => "0123456789", :email => "info@bbakery.test", :min_order_quantity => "100"},
{:id => 2, :name => "Chocolatiers", :supplier_category_id => 1, :address => "Multatuliroad 1, Amsterdam", :phone => "0123456789", :email => "info@chocolatiers.test", :url => "http://www.chocolatiers.test/", :contact_person => "Max Pure", :delivery_days => "Tue, Fr (Amsterdam)"},
{:id => 3, :name => "Cheesemaker", :supplier_category_id => 1, :address => "Cheesestreet 5, London", :phone => "0123456789", :url => "http://www.cheesemaker.test/"},
{:id => 4, :name => "The Nuthome", :supplier_category_id => 1, :address => "Alexanderplatz, Berlin", :phone => "0123456789", :email => "info@thenuthome.test", :url => "http://www.thenuthome.test/", :note => "delivery in Berlin; €9 delivery costs for orders under €123"}
])
ArticleCategory.create(:id => 1, :name => "Other", :description => "other, misc, unknown")

View file

@ -2,11 +2,13 @@ require_relative 'seed_helper.rb'
## Suppliers & articles
SupplierCategory.create(:id => 1, :name => "Other")
Supplier.create([
{:id => 1, :name => "Koekenbakker", :address => "Dorpsstraat 1, Koekange", :phone => "012 3456789", :email => "info@dekoekenbakker.test", :min_order_quantity => "100"},
{:id => 2, :name => "Chocolademakkers", :address => "Multatuliweg 1, Amsterdam", :phone => "012 3456789", :email => "info@chocolademakkers.test", :url => "http://www.chocolademakkers.test/", :contact_person => "Max Puur", :delivery_days => "di, vr (Amsterdam)"},
{:id => 3, :name => "Kaasmaker", :address => "Waagplein, Alkmaar", :phone => "012 3456789", :url => "http://www.kaaskamer.test/"},
{:id => 4, :name => "Notenhuis", :address => "Damrak 1, Amsterdam", :phone => "012 3456789", :email => "info@notenhuis.test", :url => "http://www.notenhuis.test/", :note => "leveren in Amsterdam; €9 leverkosten bij bestellingen onder €123"}
{:id => 1, :name => "Koekenbakker", :supplier_category_id => 1, :address => "Dorpsstraat 1, Koekange", :phone => "012 3456789", :email => "info@dekoekenbakker.test", :min_order_quantity => "100"},
{:id => 2, :name => "Chocolademakkers", :supplier_category_id => 1, :address => "Multatuliweg 1, Amsterdam", :phone => "012 3456789", :email => "info@chocolademakkers.test", :url => "http://www.chocolademakkers.test/", :contact_person => "Max Puur", :delivery_days => "di, vr (Amsterdam)"},
{:id => 3, :name => "Kaasmaker", :supplier_category_id => 1, :address => "Waagplein, Alkmaar", :phone => "012 3456789", :url => "http://www.kaaskamer.test/"},
{:id => 4, :name => "Notenhuis", :supplier_category_id => 1, :address => "Damrak 1, Amsterdam", :phone => "012 3456789", :email => "info@notenhuis.test", :url => "http://www.notenhuis.test/", :note => "leveren in Amsterdam; €9 leverkosten bij bestellingen onder €123"}
])
ArticleCategory.create(:id => 1, :name => "Other", :description => "overig, anders, onbekend")