# payment_group_payment

## Description

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

```sql
CREATE TABLE `payment_group_payment` (
  `payment_group_payment_id` mediumint unsigned NOT NULL AUTO_INCREMENT,
  `payment_group_id` mediumint unsigned NOT NULL,
  `statement_period_id` mediumint unsigned NOT NULL,
  `payment_name` varchar(180) COLLATE utf8mb4_general_ci NOT NULL,
  `created_at` datetime NOT NULL,
  `created_by` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `last_modified` datetime NOT NULL,
  `last_modified_by` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `deleted_at` datetime DEFAULT NULL,
  `deleted_by` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`payment_group_payment_id`),
  KEY `idx_payment_group_id` (`payment_group_id`),
  KEY `fk_payment_group_payment_statement_period` (`statement_period_id`),
  CONSTRAINT `fk_payment_group_id` FOREIGN KEY (`payment_group_id`) REFERENCES `payment_group` (`payment_group_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_payment_group_payment_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 |
| ------------------------ | ------------------ | ------- | -------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------- |
| created_at               | datetime           |         | false    |                  |                                                                                                                                                                                                 |                                         |         |
| created_by               | varchar(255)       |         | false    |                  |                                                                                                                                                                                                 |                                         |         |
| deleted_at               | datetime           |         | true     |                  |                                                                                                                                                                                                 |                                         |         |
| deleted_by               | varchar(255)       |         | true     |                  |                                                                                                                                                                                                 |                                         |         |
| last_modified            | datetime           |         | false    |                  |                                                                                                                                                                                                 |                                         |         |
| last_modified_by         | varchar(255)       |         | false    |                  |                                                                                                                                                                                                 |                                         |         |
| payment_group_id         | mediumint unsigned |         | false    |                  |                                                                                                                                                                                                 | [payment_group](payment_group.md)       |         |
| payment_group_payment_id | mediumint unsigned |         | false    | auto_increment   | [payment_group_payment_account](payment_group_payment_account.md) [payment_group_payment_batch](payment_group_payment_batch.md) [report_payment_group_payment](report_payment_group_payment.md) |                                         |         |
| payment_name             | varchar(180)       |         | false    |                  |                                                                                                                                                                                                 |                                         |         |
| statement_period_id      | mediumint unsigned |         | false    |                  |                                                                                                                                                                                                 | [statement_period](statement_period.md) |         |

## Constraints

| Name                                      | Type        | Definition                                                                          |
| ----------------------------------------- | ----------- | ----------------------------------------------------------------------------------- |
| PRIMARY                                   | PRIMARY KEY | PRIMARY KEY (payment_group_payment_id)                                              |
| fk_payment_group_id                       | FOREIGN KEY | FOREIGN KEY (payment_group_id) REFERENCES payment_group (payment_group_id)          |
| fk_payment_group_payment_statement_period | FOREIGN KEY | FOREIGN KEY (statement_period_id) REFERENCES statement_period (statement_period_id) |

## Indexes

| Name                                      | Definition                                                                      |
| ----------------------------------------- | ------------------------------------------------------------------------------- |
| PRIMARY                                   | PRIMARY KEY (payment_group_payment_id) USING BTREE                              |
| fk_payment_group_payment_statement_period | KEY fk_payment_group_payment_statement_period (statement_period_id) USING BTREE |
| idx_payment_group_id                      | KEY idx_payment_group_id (payment_group_id) USING BTREE                         |

## Triggers

| Name                                | Definition                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| before_insert_payment_group_payment | CREATE TRIGGER before_insert_payment_group_payment BEFORE INSERT ON payment_group_payment<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](payment_group_payment.svg)

---

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