The goal of this project is to create an accounting system that allows users to manage DL (Detail Ledger) and SL (Subsidiary Ledger) entities and use them to issue accounting vouchers. The system includes full CRUD functionality for each entity, validation rules, and tests to ensure proper behavior.
-
Fields:
Code (string)Title (string)
-
Validation Rules:
CodeandTitlecannot be empty.- Maximum length: 64 characters for both
CodeandTitle. - Both
CodeandTitlemust be unique. - Deletion is not allowed if referenced in a voucher.
-
Fields:
Code (string)Title (string)IsDetailable (boolean)
-
Validation Rules:
CodeandTitlecannot be empty.- Maximum length: 64 characters for both
CodeandTitle. - Both
CodeandTitlemust be unique. - Deletion or editing is not allowed if referenced in a voucher.
-
Fields:
Number (string)
-
Validation Rules:
Numbercannot be empty.- Maximum length: 64 characters.
Numbermust be unique.
-
Fields:
SummaryID (int)DetailID (nullable int)Debit (int)Credit (int)
-
Validation Rules:
SummaryIDis mandatory and must reference an existing record.- If
SummaryIDis detailable, selecting aDetailIDis mandatory. - If
SummaryIDis not detailable,DetailIDmust be empty. - If
DetailIDis selected, it must reference an existing record. - Either
DebitorCreditmust be greater than 0 (but not both). - A voucher must have a minimum of 2 and a maximum of 500 items.
- All voucher items must balance, meaning the total
Debitequals the totalCredit.
-
Code Quality & Testing:
The correctness of the program, clean code, and comprehensive testing are critical. -
Validation Messages:
Error messages must be clear and descriptive. -
Versioning:
Use aVersionfield in entities (DL, SL, Voucher) to ensure consistency during updates and deletions. -
Testing Requirements:
- Tests should not rollback database changes, allowing repeated test execution without errors.
- BDD tests must avoid mocking the database.
-
Submission Requirements:
- Upload the project files, along with an explanatory voice or video recording, as a single zipped file.