|
|
@@ -1,159 +1,543 @@
|
|
|
--- Database initialization script for Docker container
|
|
|
--- This script will be executed when the MySQL container starts for the first time
|
|
|
+CREATE DATABASE IF NOT EXISTS inventory_db;
|
|
|
|
|
|
--- Create database if it doesn't exist
|
|
|
-CREATE DATABASE IF NOT EXISTS inventory_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
-
|
|
|
--- Use the database
|
|
|
USE inventory_db;
|
|
|
|
|
|
--- Create users table
|
|
|
-CREATE TABLE IF NOT EXISTS users (
|
|
|
- id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- first_name VARCHAR(100) NOT NULL,
|
|
|
- last_name VARCHAR(100) NOT NULL,
|
|
|
- email VARCHAR(255) NOT NULL UNIQUE,
|
|
|
- phone VARCHAR(20),
|
|
|
- password VARCHAR(255) NOT NULL,
|
|
|
- role ENUM('admin', 'user') DEFAULT 'user',
|
|
|
+CREATE TABLE IF NOT EXISTS items (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ name VARCHAR(255) NOT NULL,
|
|
|
+ description TEXT,
|
|
|
+ serial_number VARCHAR(100) NULL,
|
|
|
+ picture VARCHAR(255) NULL,
|
|
|
+ quantity INT(11) NOT NULL DEFAULT 0,
|
|
|
+ price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
);
|
|
|
|
|
|
--- Create clients table
|
|
|
+CREATE TABLE IF NOT EXISTS rental_prices (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ item_id INT(11) NOT NULL,
|
|
|
+ client_id INT(11) NULL,
|
|
|
+ start_date DATE NOT NULL,
|
|
|
+ end_date DATE NOT NULL,
|
|
|
+ daily_price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ FOREIGN KEY (item_id) REFERENCES items(id) ON DELETE CASCADE,
|
|
|
+ FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE SET NULL,
|
|
|
+ INDEX idx_item_dates (item_id, start_date, end_date)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS attachments (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ item_id INT(11) NOT NULL,
|
|
|
+ filename VARCHAR(255) NOT NULL,
|
|
|
+ original_name VARCHAR(255) NOT NULL,
|
|
|
+ file_type ENUM('receipt', 'warranty', 'other') NOT NULL DEFAULT 'other',
|
|
|
+ file_path VARCHAR(255) NOT NULL,
|
|
|
+ file_size INT(11) NOT NULL,
|
|
|
+ mime_type VARCHAR(100) NOT NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ FOREIGN KEY (item_id) REFERENCES items(id) ON DELETE CASCADE,
|
|
|
+ INDEX idx_item_type (item_id, file_type)
|
|
|
+);
|
|
|
+
|
|
|
CREATE TABLE IF NOT EXISTS clients (
|
|
|
- id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- y_tunnus VARCHAR(255),
|
|
|
- company_name VARCHAR(255),
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ company_name VARCHAR(255) NULL,
|
|
|
+ y_tunnus VARCHAR(255) NULL,
|
|
|
first_name VARCHAR(100) NOT NULL,
|
|
|
last_name VARCHAR(100) NOT NULL,
|
|
|
email VARCHAR(255) NOT NULL UNIQUE,
|
|
|
- phone VARCHAR(20),
|
|
|
- address VARCHAR(255),
|
|
|
- city VARCHAR(100),
|
|
|
- state VARCHAR(100),
|
|
|
- postal_code VARCHAR(20),
|
|
|
- country VARCHAR(100),
|
|
|
- notes TEXT,
|
|
|
- hour_price DECIMAL(10,2) DEFAULT 0.00,
|
|
|
+ phone VARCHAR(20) NULL,
|
|
|
+ address VARCHAR(255) NULL,
|
|
|
+ city VARCHAR(100) NULL,
|
|
|
+ state VARCHAR(100) NULL,
|
|
|
+ postal_code VARCHAR(20) NULL,
|
|
|
+ country VARCHAR(100) NULL,
|
|
|
+ notes TEXT NULL,
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- INDEX idx_last_name (last_name)
|
|
|
+ INDEX idx_email (email),
|
|
|
+ INDEX idx_name (last_name, first_name),
|
|
|
+ INDEX idx_y_tunnus (y_tunnus)
|
|
|
);
|
|
|
|
|
|
--- Create contact_persons table
|
|
|
CREATE TABLE IF NOT EXISTS contact_persons (
|
|
|
- id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- client_id INT NOT NULL,
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ client_id INT(11) NOT NULL,
|
|
|
first_name VARCHAR(100) NOT NULL,
|
|
|
last_name VARCHAR(100) NOT NULL,
|
|
|
- email VARCHAR(255),
|
|
|
- phone VARCHAR(20),
|
|
|
- position VARCHAR(100),
|
|
|
- department VARCHAR(100),
|
|
|
+ email VARCHAR(255) NULL,
|
|
|
+ phone VARCHAR(20) NULL,
|
|
|
+ position VARCHAR(100) NULL,
|
|
|
is_primary BOOLEAN DEFAULT FALSE,
|
|
|
- notes TEXT,
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE CASCADE
|
|
|
+ FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE CASCADE,
|
|
|
+ INDEX idx_client_primary (client_id, is_primary),
|
|
|
+ INDEX idx_name (last_name, first_name)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS invoices (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ client_id INT(11) NOT NULL,
|
|
|
+ invoice_number VARCHAR(50) NOT NULL UNIQUE,
|
|
|
+ issue_date DATE NOT NULL,
|
|
|
+ due_date DATE NOT NULL,
|
|
|
+ status ENUM('draft', 'sent', 'paid', 'overdue', 'cancelled') DEFAULT 'draft',
|
|
|
+ subtotal DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
|
+ tax_amount DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
|
+ total_amount DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
|
+ notes TEXT NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE RESTRICT,
|
|
|
+ INDEX idx_client_status (client_id, status),
|
|
|
+ INDEX idx_invoice_number (invoice_number),
|
|
|
+ INDEX idx_due_date (due_date)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS invoice_items (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ invoice_id INT(11) NOT NULL,
|
|
|
+ item_id INT(11) NOT NULL,
|
|
|
+ description VARCHAR(255) NOT NULL,
|
|
|
+ quantity DECIMAL(10,2) NOT NULL DEFAULT 1.00,
|
|
|
+ unit_price DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
|
+ line_total DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ FOREIGN KEY (invoice_id) REFERENCES invoices(id) ON DELETE CASCADE,
|
|
|
+ FOREIGN KEY (item_id) REFERENCES items(id) ON DELETE RESTRICT,
|
|
|
+ INDEX idx_invoice (invoice_id),
|
|
|
+ INDEX idx_item (item_id)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS payments (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ invoice_id INT(11) NULL,
|
|
|
+ client_id INT(11) NOT NULL,
|
|
|
+ payment_date DATE NOT NULL,
|
|
|
+ amount DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
|
+ payment_method ENUM('cash', 'check', 'credit_card', 'bank_transfer', 'other') DEFAULT 'cash',
|
|
|
+ reference_number VARCHAR(50) NULL,
|
|
|
+ notes TEXT NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ FOREIGN KEY (invoice_id) REFERENCES invoices(id) ON DELETE SET NULL,
|
|
|
+ FOREIGN KEY (client_id) REFERENCES clients(id) ON DELETE RESTRICT,
|
|
|
+ INDEX idx_invoice (invoice_id),
|
|
|
+ INDEX idx_client (client_id),
|
|
|
+ INDEX idx_payment_date (payment_date)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS chart_of_accounts (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ account_number VARCHAR(20) NOT NULL UNIQUE,
|
|
|
+ account_name VARCHAR(255) NOT NULL,
|
|
|
+ account_type ENUM('asset', 'liability', 'equity', 'revenue', 'expense') NOT NULL,
|
|
|
+ parent_id INT(11) NULL,
|
|
|
+ description TEXT NULL,
|
|
|
+ opening_balance DECIMAL(10,2) DEFAULT 0.00,
|
|
|
+ current_balance DECIMAL(10,2) DEFAULT 0.00,
|
|
|
+ is_active BOOLEAN DEFAULT TRUE,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ FOREIGN KEY (parent_id) REFERENCES chart_of_accounts(id) ON DELETE SET NULL,
|
|
|
+ INDEX idx_account_type (account_type),
|
|
|
+ INDEX idx_parent (parent_id),
|
|
|
+ INDEX idx_account_number (account_number)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS journal_entries (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ entry_number VARCHAR(50) NOT NULL UNIQUE,
|
|
|
+ entry_date DATE NOT NULL,
|
|
|
+ description TEXT NULL,
|
|
|
+ reference_number VARCHAR(50) NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ INDEX idx_entry_date (entry_date),
|
|
|
+ INDEX idx_entry_number (entry_number)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS account_transactions (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ journal_entry_id INT(11) NOT NULL,
|
|
|
+ account_id INT(11) NOT NULL,
|
|
|
+ debit_amount DECIMAL(10,2) DEFAULT 0.00,
|
|
|
+ credit_amount DECIMAL(10,2) DEFAULT 0.00,
|
|
|
+ description TEXT NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ FOREIGN KEY (journal_entry_id) REFERENCES journal_entries(id) ON DELETE CASCADE,
|
|
|
+ FOREIGN KEY (account_id) REFERENCES chart_of_accounts(id) ON DELETE RESTRICT,
|
|
|
+ INDEX idx_journal_entry (journal_entry_id),
|
|
|
+ INDEX idx_account (account_id),
|
|
|
+ INDEX idx_debit_credit (debit_amount, credit_amount)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS users (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ username VARCHAR(50) NOT NULL UNIQUE,
|
|
|
+ email VARCHAR(255) NOT NULL UNIQUE,
|
|
|
+ password_hash VARCHAR(255) NOT NULL,
|
|
|
+ first_name VARCHAR(100) NOT NULL,
|
|
|
+ last_name VARCHAR(100) NOT NULL,
|
|
|
+ role ENUM('admin', 'manager', 'user') DEFAULT 'user',
|
|
|
+ is_active BOOLEAN DEFAULT TRUE,
|
|
|
+ last_login TIMESTAMP NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ INDEX idx_username (username),
|
|
|
+ INDEX idx_email (email),
|
|
|
+ INDEX idx_role (role),
|
|
|
+ INDEX idx_active (is_active)
|
|
|
);
|
|
|
|
|
|
--- Create projects table
|
|
|
CREATE TABLE IF NOT EXISTS projects (
|
|
|
- id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- name VARCHAR(255) NOT NULL,
|
|
|
- description TEXT,
|
|
|
- status ENUM('planning', 'active', 'completed', 'on_hold', 'cancelled') DEFAULT 'planning',
|
|
|
- customer_id INT,
|
|
|
- start_date DATE,
|
|
|
- end_date DATE,
|
|
|
- budget DECIMAL(12,2),
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ customer_id INT(11) NOT NULL,
|
|
|
+ project_name VARCHAR(255) NOT NULL,
|
|
|
+ description TEXT NULL,
|
|
|
+ status ENUM('planning', 'in_progress', 'completed', 'on_hold', 'cancelled') DEFAULT 'planning',
|
|
|
+ start_date DATE NULL,
|
|
|
+ end_date DATE NULL,
|
|
|
+ budget DECIMAL(10,2) NULL,
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- FOREIGN KEY (customer_id) REFERENCES clients(id) ON DELETE SET NULL
|
|
|
+ FOREIGN KEY (customer_id) REFERENCES clients(id) ON DELETE CASCADE,
|
|
|
+ INDEX idx_customer (customer_id),
|
|
|
+ INDEX idx_status (status),
|
|
|
+ INDEX idx_dates (start_date, end_date)
|
|
|
);
|
|
|
|
|
|
--- Create tasks table
|
|
|
-CREATE TABLE IF NOT EXISTS tasks (
|
|
|
- id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- title VARCHAR(255) NOT NULL,
|
|
|
- description TEXT,
|
|
|
- status ENUM('pending', 'in_progress', 'completed', 'on_hold', 'cancelled') DEFAULT 'pending',
|
|
|
- priority ENUM('low', 'medium', 'high', 'urgent') DEFAULT 'medium',
|
|
|
- project_id INT,
|
|
|
- assigned_to INT,
|
|
|
- due_date DATE,
|
|
|
+CREATE TABLE IF NOT EXISTS subprojects (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ project_id INT(11) NOT NULL,
|
|
|
+ subproject_name VARCHAR(255) NOT NULL,
|
|
|
+ description TEXT NULL,
|
|
|
+ status ENUM('planning', 'in_progress', 'completed', 'on_hold', 'cancelled') DEFAULT 'planning',
|
|
|
+ start_date DATE NULL,
|
|
|
+ end_date DATE NULL,
|
|
|
+ budget DECIMAL(10,2) NULL,
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
|
|
|
- FOREIGN KEY (assigned_to) REFERENCES users(id) ON DELETE SET NULL
|
|
|
+ INDEX idx_project (project_id),
|
|
|
+ INDEX idx_status (status),
|
|
|
+ INDEX idx_dates (start_date, end_date)
|
|
|
);
|
|
|
|
|
|
--- Create work_hours table
|
|
|
-CREATE TABLE IF NOT EXISTS work_hours (
|
|
|
+-- Accounting tables
|
|
|
+CREATE TABLE IF NOT EXISTS accounting_entries (
|
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- task_id INT NOT NULL,
|
|
|
- user_id INT NOT NULL,
|
|
|
- date DATE NOT NULL,
|
|
|
- hours DECIMAL(5,2) NOT NULL,
|
|
|
- description TEXT,
|
|
|
- rate DECIMAL(10,2),
|
|
|
- total_amount DECIMAL(10,2),
|
|
|
+ entry_date DATE NOT NULL,
|
|
|
+ description TEXT NOT NULL,
|
|
|
+ entry_type ENUM('Tulo', 'Kulu') NOT NULL,
|
|
|
+ category VARCHAR(100),
|
|
|
+ tax_free_amount DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ vat_percentage DECIMAL(5,2) DEFAULT 0.00,
|
|
|
+ vat_25_5 DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ vat_14 DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ vat_10 DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ total_amount DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ net_amount DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ vat_amount DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ reference_number VARCHAR(50),
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE,
|
|
|
- FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
- INDEX idx_task_date (task_id, date),
|
|
|
- INDEX idx_user_date (user_id, date)
|
|
|
+ INDEX idx_entry_date (entry_date),
|
|
|
+ INDEX idx_entry_type (entry_type),
|
|
|
+ INDEX idx_category (category)
|
|
|
);
|
|
|
|
|
|
--- Create items table
|
|
|
-CREATE TABLE IF NOT EXISTS items (
|
|
|
+CREATE TABLE IF NOT EXISTS accounting_categories (
|
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- name VARCHAR(255) NOT NULL,
|
|
|
- description TEXT,
|
|
|
- sku VARCHAR(100) UNIQUE,
|
|
|
- category VARCHAR(100),
|
|
|
- unit_price DECIMAL(10,2),
|
|
|
- quantity INT DEFAULT 0,
|
|
|
- min_quantity INT DEFAULT 0,
|
|
|
- location VARCHAR(100),
|
|
|
- supplier VARCHAR(255),
|
|
|
- purchase_price DECIMAL(10,2),
|
|
|
+ category_code VARCHAR(20) NOT NULL,
|
|
|
+ category_name VARCHAR(200) NOT NULL,
|
|
|
+ category_type ENUM('Tulo', 'Kulu') NOT NULL,
|
|
|
+ vat_percentage DECIMAL(5,2) DEFAULT 0.00,
|
|
|
+ is_active BOOLEAN DEFAULT TRUE,
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
+ UNIQUE KEY unique_category_code (category_code)
|
|
|
);
|
|
|
|
|
|
--- Create accounting_entries table
|
|
|
-CREATE TABLE IF NOT EXISTS accounting_entries (
|
|
|
+CREATE TABLE IF NOT EXISTS accounting_category_group_names (
|
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ category_group_code VARCHAR(3) NOT NULL,
|
|
|
+ category_group_name VARCHAR(200) NOT NULL,
|
|
|
+ description TEXT NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ UNIQUE KEY unique_category_group_code (category_group_code)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS monthly_summaries (
|
|
|
+ id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ year INT NOT NULL,
|
|
|
+ month INT NOT NULL,
|
|
|
+ total_income DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ total_expenses DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ net_result DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ vat_payable DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ vat_deductible DECIMAL(12,2) DEFAULT 0.00,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ UNIQUE KEY unique_year_month (year, month)
|
|
|
+);
|
|
|
+
|
|
|
+-- Additional tables for project management
|
|
|
+CREATE TABLE IF NOT EXISTS costs (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ description VARCHAR(255) NOT NULL,
|
|
|
+ amount DECIMAL(10,2) NOT NULL,
|
|
|
+ cost_date DATE NOT NULL,
|
|
|
+ category VARCHAR(100) NOT NULL DEFAULT 'other',
|
|
|
+ supplier VARCHAR(255) NULL,
|
|
|
+ invoice_number VARCHAR(100) NULL,
|
|
|
+ account_id INT(11) NULL,
|
|
|
+ payment_method VARCHAR(50) NULL,
|
|
|
+ receipt_number VARCHAR(100) NULL,
|
|
|
+ notes TEXT NULL,
|
|
|
+ created_by INT(11) NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ INDEX idx_cost_date (cost_date),
|
|
|
+ INDEX idx_category (category),
|
|
|
+ INDEX idx_supplier (supplier),
|
|
|
+ INDEX idx_account_id (account_id),
|
|
|
+ INDEX idx_created_by (created_by)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS timers (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ task_id INT(11) NULL,
|
|
|
+ user_id INT(11) NOT NULL,
|
|
|
+ start_time TIMESTAMP NULL,
|
|
|
+ end_time TIMESTAMP NULL,
|
|
|
+ duration VARCHAR(8) NULL,
|
|
|
+ description TEXT NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ INDEX idx_task_id (task_id),
|
|
|
+ INDEX idx_user_id (user_id),
|
|
|
+ INDEX idx_start_time (start_time)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS expense_categories (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ category_code VARCHAR(50) NOT NULL UNIQUE,
|
|
|
+ category_name VARCHAR(200) NOT NULL,
|
|
|
+ parent_id INT(11) NULL,
|
|
|
+ description TEXT NULL,
|
|
|
+ is_active TINYINT(1) DEFAULT 1,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ INDEX idx_parent_id (parent_id)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS income_categories (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ category_code VARCHAR(50) NOT NULL UNIQUE,
|
|
|
+ category_name VARCHAR(200) NOT NULL,
|
|
|
+ parent_id INT(11) NULL,
|
|
|
+ description TEXT NULL,
|
|
|
+ is_active TINYINT(1) DEFAULT 1,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ INDEX idx_parent_id (parent_id)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS incomes (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ description VARCHAR(255) NOT NULL,
|
|
|
+ amount DECIMAL(10,2) NOT NULL,
|
|
|
+ income_date DATE NOT NULL,
|
|
|
+ category VARCHAR(100) NOT NULL DEFAULT 'other',
|
|
|
+ client_id INT(11) NULL,
|
|
|
+ invoice_id INT(11) NULL,
|
|
|
+ account_id INT(11) NULL,
|
|
|
+ payment_method VARCHAR(50) NULL,
|
|
|
+ reference_number VARCHAR(100) NULL,
|
|
|
+ notes TEXT NULL,
|
|
|
+ created_by INT(11) NULL,
|
|
|
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
+ INDEX idx_income_date (income_date),
|
|
|
+ INDEX idx_category (category),
|
|
|
+ INDEX idx_client_id (client_id),
|
|
|
+ INDEX idx_invoice_id (invoice_id),
|
|
|
+ INDEX idx_account_id (account_id),
|
|
|
+ INDEX idx_created_by (created_by)
|
|
|
+);
|
|
|
+
|
|
|
+CREATE TABLE IF NOT EXISTS work_hours (
|
|
|
+ id INT(11) AUTO_INCREMENT PRIMARY KEY,
|
|
|
+ task_id INT(11) NOT NULL,
|
|
|
+ user_id INT(11) NOT NULL,
|
|
|
date DATE NOT NULL,
|
|
|
- description TEXT NOT NULL,
|
|
|
- account_number VARCHAR(20) NOT NULL,
|
|
|
- account_name VARCHAR(255) NOT NULL,
|
|
|
- category VARCHAR(100),
|
|
|
- debit DECIMAL(12,2) DEFAULT 0.00,
|
|
|
- credit DECIMAL(12,2) DEFAULT 0.00,
|
|
|
- balance DECIMAL(12,2) DEFAULT 0.00,
|
|
|
- entry_type ENUM('income', 'expense', 'opening_balance') DEFAULT 'expense',
|
|
|
- reference_number VARCHAR(100),
|
|
|
+ hours DECIMAL(5,2) NOT NULL,
|
|
|
+ description TEXT NULL,
|
|
|
+ rate DECIMAL(10,2) NULL,
|
|
|
+ total_amount DECIMAL(10,2) NULL,
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
- INDEX idx_date (date),
|
|
|
- INDEX idx_account (account_number),
|
|
|
- INDEX idx_category (category)
|
|
|
+ INDEX idx_task_id (task_id),
|
|
|
+ INDEX idx_user_id (user_id),
|
|
|
+ INDEX idx_date (date)
|
|
|
);
|
|
|
|
|
|
--- Insert default admin user (password: admin123)
|
|
|
-INSERT IGNORE INTO users (first_name, last_name, email, password, role)
|
|
|
-VALUES ('Admin', 'User', 'admin@inventory.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin');
|
|
|
+-- Insert wavium admin user
|
|
|
+INSERT INTO users (username, email, password_hash, first_name, last_name, role, is_active) VALUES
|
|
|
+('admin', 'admin@inventory.com', '$2y$10$lIA8wG6lU0l93lacHNBS0uSGSfwqaceQpGEupzSatNcN7oG/yowC2', 'Admin', 'User', 'admin', TRUE);
|
|
|
+
|
|
|
+-- Insert expense categories data
|
|
|
+INSERT IGNORE INTO expense_categories (category_code, category_name, parent_id, description, is_active) VALUES
|
|
|
+('333', 'Ostot ja ulkopuoliset palvelut', NULL, 'Purchases and external services', 1),
|
|
|
+('334', 'Henkilöstökulut', NULL, 'Personnel costs', 1),
|
|
|
+('335', 'Poistot, edustuskulut ja vuokrat', NULL, 'Depreciation, representation and rental costs', 1),
|
|
|
+('336', 'Muut vähennyskelpoiset kulut', NULL, 'Other deductible expenses', 1),
|
|
|
+('337', 'Rahoituskulut', NULL, 'Financing costs', 1),
|
|
|
+('341', 'Varausten muutokset', NULL, 'Asset changes', 1),
|
|
|
+('343', 'Varausten myynnit', NULL, 'Asset sales', 1),
|
|
|
+('344', 'Matkakulut', NULL, 'Travel expenses', 1),
|
|
|
+('344 Ajoneuvo', 'Matkakulut - Kulkuneuvo', NULL, 'Vehicle travel expenses', 1),
|
|
|
+('344 Kokous', 'Matkakulut - Kokous', NULL, 'Meeting travel expenses', 0),
|
|
|
+('344 Matka-auto', 'Matkakulut - Auto', NULL, 'Car travel expenses', 1),
|
|
|
+('344 Muu', 'Matkakulut - Muu', NULL, 'Other travel expenses', 1),
|
|
|
+('346', 'Muut kulut', NULL, 'Other expenses', 1),
|
|
|
+('349', 'Poistot', NULL, 'Depreciation', 1),
|
|
|
+('353', 'Varainsiirrot', NULL, 'Asset transfers', 1),
|
|
|
+('354', 'Vähennyskelvottomat kulut', NULL, 'Non-deductible expenses', 1),
|
|
|
+('365', 'Vakuutukset', NULL, 'Insurance', 1),
|
|
|
+('366', 'Verot ja maksut', NULL, 'Taxes and fees', 1),
|
|
|
+('367', 'Yhtiölainat ja muut rahoituskulut', NULL, 'Company loans and other financing costs', 1);
|
|
|
+
|
|
|
+-- Insert income categories data
|
|
|
+INSERT IGNORE INTO income_categories (category_code, category_name, parent_id, description, is_active) VALUES
|
|
|
+('300', 'Myynti - EU', NULL, 'Sales - EU', 1),
|
|
|
+('300 - 255', 'Myynti - EU 25,5%', NULL, 'Sales - EU 25,5%', 1),
|
|
|
+('301', 'Myynti - Muut maat', NULL, 'Sales - Other countries', 1),
|
|
|
+('302', 'Myynti - Käänteinen vero', NULL, 'Sales - Reverse VAT', 1),
|
|
|
+('303', 'Myynti - Suomi 0%', NULL, 'Sales - Finland 0%', 1),
|
|
|
+('303 - 255', 'Myynti - Suomi 25,5%', NULL, 'Sales - Finland 25,5%', 1),
|
|
|
+('308', 'Myyntitavarat', NULL, 'Sales of fixed assets', 1),
|
|
|
+('309', 'Osuuskorvaukset', NULL, 'Share compensation', 1),
|
|
|
+('310', 'Korkotulot ja muut rahoitustuotot', NULL, 'Interest income and other financial income', 1),
|
|
|
+('311', 'Voitonjako', NULL, 'Profit distribution', 1),
|
|
|
+('312', 'Sijoitustoiminnan tuotot', NULL, 'Investment income', 1),
|
|
|
+('313', 'Apurahat ja muut avustukset', NULL, 'Grants and other subsidies', 1),
|
|
|
+('314', 'Muu tuotto', NULL, 'Other income', 1);
|
|
|
|
|
|
--- Insert sample data for testing
|
|
|
-INSERT IGNORE INTO clients (first_name, last_name, email, company_name, y_tunnus, hour_price)
|
|
|
-VALUES ('Weikka', 'Valavuo', 'weikka@wavium.fi', 'Wavium', '3464619-2', 10.00);
|
|
|
+-- Insert default accounting categories
|
|
|
+INSERT IGNORE INTO accounting_categories (category_code, category_name, category_type, vat_percentage) VALUES
|
|
|
+('300 - E0', 'Myynti - EU 0%', 'Tulo', 0.00),
|
|
|
+('300 - E255', 'Myynti - EU 25,5%', 'Tulo', 25.50),
|
|
|
+('300 - K', 'Myynti - Käänteinen vero', 'Tulo', 0.00),
|
|
|
+('300 - M0', 'Myynti - Muut maat', 'Tulo', 0.00),
|
|
|
+('300 - S0', 'Myynti - Suomi 0%', 'Tulo', 0.00),
|
|
|
+('300 - S255', 'Myynti - Suomi 25,5%', 'Tulo', 25.50),
|
|
|
+('301', 'Muut tuotot', 'Tulo', 0.00),
|
|
|
+('312', 'Varausten vähennys', 'Tulo', 0.00),
|
|
|
+('313', 'Auton yksityiskäyttö', 'Tulo', 0.00),
|
|
|
+('314', 'Tavaroiden yksityiskäyttö', 'Tulo', 0.00),
|
|
|
+('315', 'Muu yksityiskäyttö', 'Tulo', 0.00),
|
|
|
+('317', 'Tuloslaskelman verovapaat tuotot', 'Tulo', 0.00),
|
|
|
+('318', 'Saadut avustukset ja tuet', 'Tulo', 0.00),
|
|
|
+('319', 'Saadut osingot', 'Tulo', 0.00),
|
|
|
+('320', 'Osinkojen veronalainen osuus', 'Tulo', 0.00),
|
|
|
+('323', 'Korkotuotot ja muut rahoitustuotot', 'Tulo', 0.00),
|
|
|
+('324', 'Muut veronalaiset tuotot', 'Tulo', 0.00),
|
|
|
+('333', 'Ostot ja varastojen muutokset', 'Kulu', 25.50),
|
|
|
+('334', 'Ulkopuoliset palvelut', 'Kulu', 25.50),
|
|
|
+('335', 'Palkat ja palkkiot', 'Kulu', 0.00),
|
|
|
+('336', 'Eläke- ja henkilösivukulut', 'Kulu', 0.00),
|
|
|
+('337', 'Poistot', 'Kulu', 0.00),
|
|
|
+('341', 'Edustuskulut', 'Kulu', 0.00),
|
|
|
+('343', 'Vuokrat', 'Kulu', 25.50),
|
|
|
+('344 - A', 'Ajoneuvokulut', 'Kulu', 25.50),
|
|
|
+('344 - K', 'Kokous- ja neuvottelukulut', 'Kulu', 25.50),
|
|
|
+('344 - M', 'Matkakulut', 'Kulu', 25.50),
|
|
|
+('344 - O', 'Muut vähennyskelpoiset kulut', 'Kulu', 25.50),
|
|
|
+('346', 'Korkokulut', 'Kulu', 0.00),
|
|
|
+('349', 'Muut rahoituskulut', 'Kulu', 0.00),
|
|
|
+('353', 'Varausten lisäykset', 'Kulu', 0.00),
|
|
|
+('354', 'Kirjanpidon ulkopuoliset vähennyskelpoiset kulut', 'Kulu', 0.00),
|
|
|
+('365', 'Välittömät verot', 'Kulu', 0.00),
|
|
|
+('366', 'Sakot ja muut rangaistusmaksut', 'Kulu', 0.00),
|
|
|
+('367', 'Muut vähennyskelvottomat kulut', 'Kulu', 0.00),
|
|
|
+('368', 'Julkinen liikenne', 'Kulu', 10.00);
|
|
|
|
|
|
-INSERT IGNORE INTO projects (name, description, status, customer_id)
|
|
|
-VALUES ('Inventory', 'Inventory Management System', 'active', 1);
|
|
|
+-- Insert default category groups
|
|
|
+INSERT IGNORE INTO accounting_category_group_names (category_group_code, category_group_name, description) VALUES
|
|
|
+('300', 'Tuotot ammatista', NULL),
|
|
|
+('301', 'Muut tuotot', NULL),
|
|
|
+('312', 'Varausten vähennys', NULL),
|
|
|
+('313', 'Auton yksityiskäyttö', NULL),
|
|
|
+('314', 'Tavaroiden yksityiskäyttö', NULL),
|
|
|
+('315', 'Muu yksityiskäyttö', NULL),
|
|
|
+('317', 'Tuloslaskelman verovapaat tuotot', NULL),
|
|
|
+('318', 'Saadut avustukset ja tuet', NULL),
|
|
|
+('319', 'Saadut osingot', NULL),
|
|
|
+('323', 'Korkotuotot ja muut rahoitustuotot', NULL),
|
|
|
+('324', 'Muut veronalaiset tuotot', NULL),
|
|
|
+('333', 'Ostot ja varastojen muutokset', NULL),
|
|
|
+('334', 'Ulkopuoliset palvelut', NULL),
|
|
|
+('335', 'Palkat ja palkkiot', NULL),
|
|
|
+('336', 'Eläke- ja henkilösivukulut', NULL),
|
|
|
+('337', 'Poistot', NULL),
|
|
|
+('341', 'Edustuskulut', NULL),
|
|
|
+('343', 'Vuokrat', NULL),
|
|
|
+('344', 'Matkakulut', NULL),
|
|
|
+('346', 'Korkokulut', NULL),
|
|
|
+('349', 'Muut rahoituskulut', NULL),
|
|
|
+('353', 'Varausten lisäykset', NULL),
|
|
|
+('354', 'Kirjanpidon ulkopuoliset vähennyskelpoiset kulut', NULL),
|
|
|
+('358', 'Elinkeinotoiminnan tulos', NULL),
|
|
|
+('359', 'Elinkeinotoiminnan tappio', NULL),
|
|
|
+('365', 'Välittömät verot', NULL),
|
|
|
+('366', 'Sakot ja muut rangaistusmaksut', NULL),
|
|
|
+('367', 'Muut vähennyskelvottomat kulut', NULL),
|
|
|
+('368', 'Julkinen liikenne', NULL);
|
|
|
|
|
|
-INSERT IGNORE INTO tasks (title, description, status, priority, project_id, assigned_to, due_date)
|
|
|
-VALUES ('Working hours', 'Tuntien kirjaamismahdollisuus', 'in_progress', 'medium', 1, 1, '2026-04-26');
|
|
|
+-- Insert chart of accounts
|
|
|
+INSERT IGNORE INTO chart_of_accounts (account_number, account_name, account_type, parent_id, description, opening_balance, current_balance, is_active) VALUES
|
|
|
+('1000', 'Käyttöpääoma', 'asset', NULL, 'Pääomaisuus', 0.00, 0.00, TRUE),
|
|
|
+('1100', 'Saamiset ja vaatimukset', 'asset', NULL, 'Tase-erät ja poistot', 0.00, 0.00, TRUE),
|
|
|
+('1200', 'Aineelliset vaihto-omaisuudet', 'asset', NULL, 'Varasto ja raaka-aineet', 0.00, 0.00, TRUE),
|
|
|
+('1300', 'Pitkän aikaiset sijoitukset', 'asset', NULL, 'Pitkän aikaiset sijoitukset', 0.00, 0.00, TRUE),
|
|
|
+('1400', 'Kiinteistöt', 'asset', NULL, 'Kiinteistöt ja rakennukset', 0.00, 0.00, TRUE),
|
|
|
+('1500', 'Koneet ja kalusto', 'asset', NULL, 'Koneet, kalusto ja laitteet', 0.00, 0.00, TRUE),
|
|
|
+('1600', 'Aineettomat varat', 'asset', NULL, 'Aineettomat varat', 0.00, 0.00, TRUE),
|
|
|
+('1700', 'Sijoitukset rahoituslaitoksissa', 'asset', NULL, 'Rahoituslaitokset', 0.00, 0.00, TRUE),
|
|
|
+('1800', 'Erityiset vaihto-omaisuudet', 'asset', NULL, 'Erityiset vaihto-omaisuudet', 0.00, 0.00, TRUE),
|
|
|
+('1900', 'Vaihto-omaisuudet luovutukseen', 'asset', NULL, 'Myyntikohteiset varat', 0.00, 0.00, TRUE),
|
|
|
+('2000', 'Oma pääoma', 'liability', NULL, 'Oma pääoma', 0.00, 0.00, TRUE),
|
|
|
+('2100', 'Pitkän aikaiset velat', 'liability', NULL, 'Pitkän aikaiset velat', 0.00, 0.00, TRUE),
|
|
|
+('2200', 'Verovelat', 'liability', NULL, 'Verovelat ja vakuudet', 0.00, 0.00, TRUE),
|
|
|
+('2300', 'Ostovelat ja saamiset', 'liability', NULL, 'Ostovelat ja saamiset', 0.00, 0.00, TRUE),
|
|
|
+('2400', 'Maksuvelat ja ennakot', 'liability', NULL, 'Maksuvelat ja saadut ennakot', 0.00, 0.00, TRUE),
|
|
|
+('2500', 'Verovelat konserneille', 'liability', NULL, 'Verovelat konserneille', 0.00, 0.00, TRUE),
|
|
|
+('2600', 'Muut velat', 'liability', NULL, 'Muut velat', 0.00, 0.00, TRUE),
|
|
|
+('2700', 'Siirrot konserninointiin', 'liability', NULL, 'Siirrot konserninointiin', 0.00, 0.00, TRUE),
|
|
|
+('2800', 'Tilikauden tuloverot', 'liability', NULL, 'Tilikauden tuloverot', 0.00, 0.00, TRUE),
|
|
|
+('3000', 'Osakepääoma', 'equity', NULL, 'Osakepääoma', 0.00, 0.00, TRUE),
|
|
|
+('3100', 'Sijoitetun pääoman rahastot', 'equity', NULL, 'Sijoitetun pääoman rahastot', 0.00, 0.00, TRUE),
|
|
|
+('3200', 'Muut pääomat rahastot', 'equity', NULL, 'Muut pääomat rahastot', 0.00, 0.00, TRUE),
|
|
|
+('3300', 'Tilikauden voitto', 'equity', NULL, 'Tilikauden voitto/tappio', 0.00, 0.00, TRUE),
|
|
|
+('4000', 'Myyntituotot', 'revenue', NULL, 'Myyntituotot', 0.00, 0.00, TRUE),
|
|
|
+('4100', 'Palvelutuotot', 'revenue', NULL, 'Palvelutuotot', 0.00, 0.00, TRUE),
|
|
|
+('4200', 'Vuokratuotot', 'revenue', NULL, 'Vuokratuotot', 0.00, 0.00, TRUE),
|
|
|
+('4300', 'Korko- ja valuuttatuotot', 'revenue', NULL, 'Korko- ja valuuttatuotot', 0.00, 0.00, TRUE),
|
|
|
+('4400', 'Muu tuotto', 'revenue', NULL, 'Muu tuotto', 0.00, 0.00, TRUE),
|
|
|
+('4500', 'Siirrot konserninointiin', 'revenue', NULL, 'Siirrot konserninointiin', 0.00, 0.00, TRUE),
|
|
|
+('5000', 'Aineelliset kulut', 'expense', NULL, 'Aineelliset kulut ja palvelut', 0.00, 0.00, TRUE),
|
|
|
+('5100', 'Henkilöstökulut', 'expense', NULL, 'Henkilöstökulut', 0.00, 0.00, TRUE),
|
|
|
+('5200', 'Poistot ja alennukset', 'expense', NULL, 'Poistot ja alennukset', 0.00, 0.00, TRUE),
|
|
|
+('5300', 'Vuokrat ja vuokrakulut', 'expense', NULL, 'Vuokrat ja vuokrakulut', 0.00, 0.00, TRUE),
|
|
|
+('5400', 'Korko- ja rahoituskulut', 'expense', NULL, 'Korko- ja rahoituskulut', 0.00, 0.00, TRUE),
|
|
|
+('5500', 'Tase-erät ja poistot', 'expense', NULL, 'Tase-erät ja poistot', 0.00, 0.00, TRUE),
|
|
|
+('5600', 'Arvonmäärityksen alennukset', 'expense', NULL, 'Arvonmäärityksen alennukset', 0.00, 0.00, TRUE),
|
|
|
+('5700', 'Verotukset ja maksut', 'expense', NULL, 'Verotukset ja maksut', 0.00, 0.00, TRUE),
|
|
|
+('5800', 'Muut kulut', 'expense', NULL, 'Muut kulut', 0.00, 0.00, TRUE),
|
|
|
+('5900', 'Siirrot konserninointiin', 'expense', NULL, 'Siirrot konserninointiin', 0.00, 0.00, TRUE);
|