invoiceninja/database/migrations/2017_06_19_111515_update_dark_mode.php
2017-07-11 13:22:11 +03:00

108 lines
4.0 KiB
PHP

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class UpdateDarkMode extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function ($table) {
$table->boolean('dark_mode')->default(true)->change();
});
Schema::table('accounts', function ($table) {
$table->integer('credit_number_counter')->default(0)->nullable();
$table->text('credit_number_prefix')->nullable();
$table->text('credit_number_pattern')->nullable();
});
DB::statement('update users set dark_mode = 1');
// update invoice_item_type_id for task invoice items
DB::statement('update invoice_items
left join invoices on invoices.id = invoice_items.invoice_id
set invoice_item_type_id = 2
where invoices.has_tasks = 1
and invoice_item_type_id = 1');
Schema::create('recurring_expenses', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->softDeletes();
$table->unsignedInteger('account_id')->index();
$table->unsignedInteger('vendor_id')->nullable();
$table->unsignedInteger('user_id');
$table->unsignedInteger('client_id')->nullable();
$table->boolean('is_deleted')->default(false);
$table->decimal('amount', 13, 2);
$table->text('private_notes');
$table->text('public_notes');
$table->unsignedInteger('invoice_currency_id')->nullable()->index();
$table->unsignedInteger('expense_currency_id')->nullable()->index();
$table->boolean('should_be_invoiced')->default(true);
$table->unsignedInteger('expense_category_id')->nullable()->index();
$table->string('tax_name1')->nullable();
$table->decimal('tax_rate1', 13, 3);
$table->string('tax_name2')->nullable();
$table->decimal('tax_rate2', 13, 3);
$table->unsignedInteger('frequency_id');
$table->date('start_date')->nullable();
$table->date('end_date')->nullable();
$table->timestamp('last_sent_date')->nullable();
// Relations
$table->foreign('account_id')->references('id')->on('accounts')->onDelete('cascade');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('invoice_currency_id')->references('id')->on('currencies');
$table->foreign('expense_currency_id')->references('id')->on('currencies');
$table->foreign('expense_category_id')->references('id')->on('expense_categories')->onDelete('cascade');
// Indexes
$table->unsignedInteger('public_id')->index();
$table->unique(['account_id', 'public_id']);
});
Schema::table('expenses', function ($table) {
$table->unsignedInteger('recurring_expense_id')->nullable();
});
Schema::table('bank_accounts', function ($table) {
$table->mediumInteger('app_version')->default(DEFAULT_BANK_APP_VERSION);
$table->mediumInteger('ofx_version')->default(DEFAULT_BANK_OFX_VERSION);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('recurring_expenses');
Schema::table('expenses', function ($table) {
$table->dropColumn('recurring_expense_id');
});
Schema::table('accounts', function ($table) {
$table->dropColumn('credit_number_counter');
$table->dropColumn('credit_number_prefix');
$table->dropColumn('credit_number_pattern');
});
Schema::table('bank_accounts', function ($table) {
$table->dropColumn('app_version');
$table->dropColumn('ofx_version');
});
}
}