CakeAccounting/config/Migrations/20241028020434_CreateTransa...

278 lines
8.8 KiB
PHP
Raw Normal View History

2025-08-09 21:07:39 +00:00
<?php
declare(strict_types=1);
use Migrations\AbstractMigration;
class CreateTransactionTables extends AbstractMigration
{
/**
* Change Method.
*
* More information on this method is available here:
* https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
* @return void
*/
public function change(): void
{
// de_accounts
$table = $this->table('de_external_accounts', ['id' => false, 'primary_key' => ['external_account_number']]);
$table->addColumn('external_account_number', 'uuid', [
'default' => null,
'limit' => 11,
'null' => false,
]);
$table->addColumn('entity_type_code', 'string', [
'default' => null,
'limit' => 2,
'null' => false,
]);
$table->addColumn('created', 'datetime', [
'default' => null,
'null' => false,
]);
$table->addColumn('related_model', 'string', [
'default' => null,
'limit' => 255,
'null' => true,
]);
$table->addColumn('related_model_fk', 'integer', [
'default' => null,
'limit' => 11,
'null' => true,
]);
// $table->addForeignKey(
// 'entity_type_code',
// 'de_entity_types',
// 'entity_type_code',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_accounts_entity_type_fk'
// ]
// );
$table->create();
// de_account_statements
$table = $this->table('de_external_account_statements', ['id' => false, 'primary_key' => 'external_account_statement_id']);
$table->addColumn('external_account_statement_id', 'uuid', [
'default' => null,
'null' => false,
]);
$table->addColumn('external_account_number', 'uuid', [
'default' => null,
'null' => false,
]);
$table->addColumn('statement_date', 'date', [
'default' => null,
'null' => false,
]);
$table->addColumn('closing_balance', 'decimal', [
'default' => null,
'precision' => 15,
'scale' => 6,
'null' => false,
]);
$table->addColumn('total_credit', 'decimal', [
'default' => null,
'precision' => 15,
'scale' => 6,
'null' => false,
]);
$table->addColumn('total_debit', 'decimal', [
'default' => null,
'precision' => 15,
'scale' => 6,
'null' => false,
]);
// $table->addForeignKey(
// 'external_account_number',
// 'de_external_accounts',
// 'external_account_number',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_ext_acct_statements_ext_account_number_fk',
// ]
// );
$table->create();
// de_journal_types
$table = $this->table('de_journal_types', ['id' => false, 'primary_key' => 'de_journal_type_code']);
$table->addColumn('de_journal_type_code', 'string', [
'default' => null,
'limit' => 5,
'null' => false,
]);
$table->create();
// de_journals
$table = $this->table('de_journals');
$table->addColumn('name', 'string', [
'default' => null,
'limit' => 45,
'null' => false,
]);
$table->addColumn('short_code', 'string', [
'default' => null,
'limit' => 5,
'null' => false,
]);
$table->addColumn('default_account_number_credit', 'integer', [
'default' => null,
'limit' => 11,
'null' => true,
]);
$table->addColumn('default_account_number_debit', 'integer', [
'default' => null,
'limit' => 11,
'null' => true,
]);
$table->addColumn('de_journal_type_code', 'string', [
'default' => null,
'limit' => 5,
'null' => false,
]);
// $table->addForeignKey(
// 'default_account_number_credit',
// 'de_ledgers',
// 'account_number',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_journals_default_credit_account_number_fk',
// ]
// );
// $table->addForeignKey(
// 'default_account_number_debit',
// 'de_ledgers',
// 'account_number',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_journals_default_debit_account_number_fk',
// ]
// );
// $table->addForeignKey(
// 'de_journal_type_code',
// 'de_journal_types',
// 'de_journal_type_code',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_journal_types_for_journals_fk',
// ]
// );
$table->create();
// de_journal_entries
$table = $this->table('de_journal_entries');
$table->addColumn('de_journal_id', 'integer', [
'default' => null,
'limit' => 11,
'null' => false,
]);
$table->addColumn('user_id', 'integer', [
'default' => null,
'limit' => 11,
'null' => true,
]);
$table->addColumn('created', 'datetime', [
'default' => null,
'null' => false,
]);
$table->addColumn('notes', 'text', [
'default' => null,
'null' => true,
]);
$table->create();
// de_journal_items
$table = $this->table('de_journal_items');
$table->addColumn('account_number_credit', 'integer', [
'default' => null,
'limit' => 11,
'null' => false,
]);
$table->addColumn('account_number_debit', 'integer', [
'default' => null,
'limit' => 11,
'null' => false,
]);
$table->addColumn('external_account_number_credit', 'uuid', [
'default' => null,
'null' => true,
]);
$table->addColumn('external_account_number_debit', 'uuid', [
'default' => null,
'null' => true,
]);
$table->addColumn('de_journal_entry_id', 'integer', [
'default' => null,
'limit' => 11,
'null' => false,
]);
$table->addColumn('amount', 'decimal', [
'default' => null,
'precision' => 15,
'scale' => 6,
'null' => false,
]);
$table->addColumn('created', 'datetime', [
'default' => null,
'null' => false,
]);
// $table->addForeignKey(
// 'de_journal_entry_id',
// 'de_journal_entries',
// 'id',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_journal_items_journal_entry_id_fk',
// ]
// );
// $table->addForeignKey(
// 'account_number_credit',
// 'de_ledgers',
// 'account_number',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_journal_items_account_number_credit_fk',
// ]
// );
// $table->addForeignKey(
// 'account_number_debit',
// 'de_ledgers',
// 'account_number',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_journal_items_account_number_debit_fk',
// ]
// );
// $table->addForeignKey(
// 'external_account_number_credit',
// 'de_external_accounts',
// 'external_account_number',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_journal_items_external_account_number_credit_fk',
// ]
// );
// $table->addForeignKey(
// 'external_account_number_debit',
// 'de_external_accounts',
// 'external_account_number',
// [
// 'update' => 'RESTRICT',
// 'delete' => 'RESTRICT',
// 'constraint' => 'de_journal_items_external_account_number_debit_fk',
// ]
// );
$table->create();
}
}