# abacus_event

## Description

<details>
<summary><strong>Table Definition</strong></summary>

```sql
CREATE TABLE `abacus_event` (
  `abacus_event_id` mediumint unsigned NOT NULL AUTO_INCREMENT,
  `statement_period_id` mediumint unsigned DEFAULT NULL,
  `event_name` varchar(32) COLLATE utf8mb4_general_ci NOT NULL,
  `target_type` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `target_id` mediumint unsigned NOT NULL,
  `event_date` datetime(6) NOT NULL,
  `previous_abacus_event_id` mediumint unsigned DEFAULT NULL,
  `rolled_back_at` datetime DEFAULT NULL,
  `created_by` varchar(180) COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'default_user_id',
  PRIMARY KEY (`abacus_event_id`),
  KEY `fk_abacus_event_statement_period` (`statement_period_id`),
  CONSTRAINT `fk_abacus_event_statement_period` FOREIGN KEY (`statement_period_id`) REFERENCES `statement_period` (`statement_period_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=[Redacted by tbls] DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
```

</details>

## Columns

| Name                     | Type               | Default         | Nullable | Extra Definition | Children                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Parents                                 | Comment |
| ------------------------ | ------------------ | --------------- | -------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------- |
| abacus_event_id          | mediumint unsigned |                 | false    | auto_increment   | [ledger_account](ledger_account.md) [ledger_account_contract](ledger_account_contract.md) [ledger_accounting_run_balance](ledger_accounting_run_balance.md) [ledger_accounting_run_vat](ledger_accounting_run_vat.md) [ledger_adjustment](ledger_adjustment.md) [ledger_adjustment_applied](ledger_adjustment_applied.md) [ledger_contract_advance_applied](ledger_contract_advance_applied.md) [ledger_correction](ledger_correction.md) [ledger_deposit](ledger_deposit.md) [ledger_reserve_release](ledger_reserve_release.md) [ledger_reserve_release_schedule](ledger_reserve_release_schedule.md) [ledger_reserve_taken](ledger_reserve_taken.md) [ledger_vat_summary](ledger_vat_summary.md) [worksheet_account_contract_closing_balance](worksheet_account_contract_closing_balance.md) [worksheet_account_contract_payable_after_tax](worksheet_account_contract_payable_after_tax.md) [worksheet_account_contract_taxable_revenue](worksheet_account_contract_taxable_revenue.md) [worksheet_adjustment](worksheet_adjustment.md) |                                         |         |
| created_by               | varchar(180)       | default_user_id | false    |                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |                                         |         |
| event_date               | datetime(6)        |                 | false    |                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |                                         |         |
| event_name               | varchar(32)        |                 | false    |                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |                                         |         |
| previous_abacus_event_id | mediumint unsigned |                 | true     |                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |                                         |         |
| rolled_back_at           | datetime           |                 | true     |                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |                                         |         |
| statement_period_id      | mediumint unsigned |                 | true     |                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | [statement_period](statement_period.md) |         |
| target_id                | mediumint unsigned |                 | false    |                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |                                         |         |
| target_type              | varchar(64)        |                 | true     |                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |                                         |         |

## Constraints

| Name                             | Type        | Definition                                                                          |
| -------------------------------- | ----------- | ----------------------------------------------------------------------------------- |
| PRIMARY                          | PRIMARY KEY | PRIMARY KEY (abacus_event_id)                                                       |
| fk_abacus_event_statement_period | FOREIGN KEY | FOREIGN KEY (statement_period_id) REFERENCES statement_period (statement_period_id) |

## Indexes

| Name                             | Definition                                                             |
| -------------------------------- | ---------------------------------------------------------------------- |
| PRIMARY                          | PRIMARY KEY (abacus_event_id) USING BTREE                              |
| fk_abacus_event_statement_period | KEY fk_abacus_event_statement_period (statement_period_id) USING BTREE |

## Triggers

| Name                       | Definition                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| before_insert_abacus_event | CREATE TRIGGER before_insert_abacus_event BEFORE INSERT ON abacus_event<br />FOR EACH ROW<br />BEGIN<br />    IF NEW.statement_period_id IS NULL THEN<br />        SET NEW.statement_period_id = COALESCE(<br />            (SELECT statement_period_id FROM statement_period WHERE statement_period_status = 'current'),<br />            (SELECT MIN(statement_period_id) FROM statement_period WHERE statement_period_status = 'open')<br />        );<br />    END IF;<br />END |

## Relations

![er](abacus_event.svg)

---

> Generated by [tbls](https://github.com/k1LoW/tbls)
