Ticomix.Accounting.V20 2026.10.19.1
Ticomix.Accounting
A practical .NET library for small to medium businesses that need straightforward accounting functionality without the complexity of enterprise solutions.
Overview
Ticomix.Accounting provides essential accounting features that growing businesses need: sales and purchase management, general ledger operations, inventory tracking, and automated workflows. This library helps you build accounting systems that focus on getting work done efficiently rather than overwhelming users with unnecessary features.
Key Features
Core Accounting
- General Ledger Management - Journal entries, account management, bank reconciliation, and period closing
- Accounts Receivable - Sales invoices, credit memos, customer balance tracking, and automated email notifications
- Accounts Payable - Purchase invoices, vendor management, payment processing, and approval workflows
- Inventory Management - Item master maintenance, stock adjustments, work orders, and lot/serial tracking
Business Operations
- Sales Order Processing - Quote-to-order workflow with automated confirmation emails
- Purchase Order Management - PO creation, receiving, and three-way matching
- Cash Management - Cash receipts, payments, and bank reconciliation
- Company Management - Customer and vendor setup with payment terms and credit limits
Automation & Reporting
- Workflow Actions - Automated email notifications for sales confirmations and shipping
- PDF Generation - Professional invoices, statements, and reports via Telerik Reporting
- Email Integration - Template-based email system with attachment support
- Data Import/Export - Excel integration for bulk operations
Installation
Install the NuGet package:
dotnet add package Ticomix.Accounting
Quick Start
Basic Setup
- Configure your DbContext - Implement
IAccountingDbContext<TKey>to connect to your database - Set up base logic classes - Inherit from the provided base classes for your business logic
- Create view models - Implement the provided interfaces for your UI layer
Example: Creating a Sales Invoice
// Initialize your logic class
var arLogic = new YourARHeaderLogic(dbContext, accountingLogic, logger);
// Create a new invoice
var invoice = arLogic.NewARHeader<YourARHeaderViewModel>();
invoice.BillToCompanyID = customerId;
invoice.InvoiceDate = DateTime.Today;
invoice.DueDate = DateTime.Today.AddDays(30);
// Save the invoice
var invoiceId = await arLogic.AddSalesInvoice(invoice);
// Add line items
var lineItem = arLogic.NewARDetail<YourARDetailViewModel>(invoiceId);
lineItem.ItemMasterID = productId;
lineItem.Quantity = 5;
lineItem.UnitPrice = 29.99m;
await arLogic.SaveSalesInvoiceDetail(lineItem);
// Process and email the invoice
await arLogic.SaveSalesInvoice(invoice, "Accepted");
await arLogic.SendSalesInvoiceEmail<YourEmailViewModel>(
invoice, reportsPath, attachments, emailClient, telerikHelper, logger);
Example: Processing General Ledger Entries
var glLogic = new YourGLHeaderLogic(dbContext, baseAccountingLogic);
// Create a journal entry
var journal = glLogic.NewGLHeader<YourGLHeaderViewModel>();
journal.Description = "Monthly depreciation entry";
journal.PostDate = DateTime.Today;
var journalId = await glLogic.AddGLHeader(journal);
// Add debit entry
var debitEntry = glLogic.NewGLDetail<YourGLDetailViewModel>(journalId);
debitEntry.GLAccountID = depreciationExpenseAccountId;
debitEntry.GLDetailTypeSys = "Debit";
debitEntry.Amount = 1500.00m;
await glLogic.SaveGLDetail(debitEntry);
// Add credit entry
var creditEntry = glLogic.NewGLDetail<YourGLDetailViewModel>(journalId);
creditEntry.GLAccountID = accumulatedDepreciationAccountId;
creditEntry.GLDetailTypeSys = "Credit";
creditEntry.Amount = 1500.00m;
await glLogic.SaveGLDetail(creditEntry);
// Post the journal entry
await glLogic.SaveGLHeader(journal, "POST");
Core Components
Logic Classes
The library provides base logic classes that handle common accounting operations:
BaseAccountingLogic<TKey>- Core accounting calculations and utilitiesBaseGLHeaderLogic<TKey>- General ledger journal entry managementBaseARHeaderLogic<TKey>- Sales invoice and customer managementBaseAPHeaderLogic<TKey>- Purchase invoice and vendor managementBaseSOHeaderLogic<TKey>- Sales order processingBasePOHeaderLogic<TKey>- Purchase order managementBaseItemMasterLogic<TKey>- Inventory item management
View Model Interfaces
Implement these interfaces in your view models to work with the logic classes:
IGLHeaderViewModel<TKey>/IGLDetailViewModel<TKey>- General ledger entriesIARHeaderViewModel<TKey>/IARDetailViewModel<TKey>- Sales invoicesIAPHeaderViewModel<TKey>- Purchase invoicesISOHeaderViewModel<TKey>/ISODetailViewModel<TKey>- Sales ordersIPOHeaderViewModel<TKey>/IPODetailViewModel<TKey>- Purchase ordersIItemMasterViewModel<TKey>- Inventory itemsICompanyViewModel<TKey>- Customer and vendor information
Workflow Actions
Automate business processes with built-in workflow actions:
SendSOConfirmationEmail<TKey>- Automatically email sales order confirmationsSendShippingNotificationEmail<TKey>- Notify customers when orders ship
Database Requirements
Your database context must implement IAccountingDbContext<TKey> and provide access to these entities:
Financial Tables:
- GLHeader, GLDetail, GLAccount, GLPeriod
- ARHeader, ARDetail, APHeader
- CashReceiptHeader, CashPaymentHeader
Operations Tables:
- SOHeader, SODetail, POHeader, PODetail
- ItemMaster, ItemLocation, ItemTransaction
- Company, Contact, SalesRep, PaymentTerm
System Tables:
- SysARHeaderType, SysARHeaderStatus
- SysGLAccount, SysGLPeriod
Integration Points
Email System
The library integrates with Ticomix.EmailNote for template-based email functionality. Configure your email templates for:
- Sales invoice notifications
- Sales order confirmations
- Shipping notifications
- Purchase order communications
Reporting
Uses Ticomix.TelerikReporting for PDF generation. Set up report templates for:
- Sales invoices and statements
- Purchase orders and receipts
- Financial reports and journals
Excel Integration
Leverages Ticomix.Excel for data import/export operations:
- Bulk inventory adjustments
- General ledger imports
- Customer and vendor data updates
Common Patterns
Generic Type Parameter
All classes use a generic TKey parameter to support different primary key types (int, Guid, etc.):
public class YourARLogic : BaseARHeaderLogic<int>
{
// Your implementation
}
Validation and Error Handling
The library uses ModelStateTracker for validation and returns descriptive error messages:
var result = await glLogic.SaveGLHeader(journal, "POST");
if (result == null)
{
// Handle validation errors - journal entries must balance
}
Status Management
Most transactions use system status fields for workflow control:
- Pending - Draft mode, allows editing
- Accepted/Posted - Committed to GL, read-only
- Void - Cancelled with reversing entries
Best Practices
- Inherit from Base Classes - Don't reinvent accounting logic, extend the provided base classes
- Use LINQ Query Syntax - Follow the library's pattern of using query syntax over method chaining
- Implement Proper Validation - Use the built-in validation patterns for data integrity
- Handle Workflow States - Respect status fields to maintain proper accounting controls
- Test Financial Calculations - Always verify that debits equal credits and balances are correct
Support
This library is designed to grow with your business. Start with the core features you need and expand functionality as your requirements evolve. The modular design makes it easy to customize without breaking existing functionality.
For questions about implementation or extending functionality, refer to the provided interfaces and base class documentation.
No packages depend on Ticomix.Accounting.V20.
.NET 10.0
- Ticomix.CodeMaintenance (>= 2026.10.19.1)
- Ticomix.Company (>= 2026.10.19.1)
- Ticomix.EFCore (>= 2026.10.19.1)
- Ticomix.EmailNote (>= 2026.10.19.1)
- Ticomix.Excel (>= 2026.10.19.1)
- Ticomix.TelerikReporting.V20 (>= 2026.10.19.1)
- Ticomix.Workflow (>= 2026.10.19.1)
- Reinforced.Typings (>= 1.6.3.21)
.NET 8.0
- Ticomix.CodeMaintenance (>= 2026.10.19.1)
- Ticomix.Company (>= 2026.10.19.1)
- Ticomix.EFCore (>= 2026.10.19.1)
- Ticomix.EmailNote (>= 2026.10.19.1)
- Ticomix.Excel (>= 2026.10.19.1)
- Ticomix.TelerikReporting.V20 (>= 2026.10.19.1)
- Ticomix.Workflow (>= 2026.10.19.1)
- Reinforced.Typings (>= 1.6.3.21)
| Version | Downloads | Last updated |
|---|---|---|
| 2026.10.19.1 | 1 | 10/19/2026 |
| 2026.10.16.1 | 1 | 10/16/2026 |
| 2026.10.9.1 | 1 | 10/9/2026 |