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

  1. Configure your DbContext - Implement IAccountingDbContext<TKey> to connect to your database
  2. Set up base logic classes - Inherit from the provided base classes for your business logic
  3. 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 utilities
  • BaseGLHeaderLogic<TKey> - General ledger journal entry management
  • BaseARHeaderLogic<TKey> - Sales invoice and customer management
  • BaseAPHeaderLogic<TKey> - Purchase invoice and vendor management
  • BaseSOHeaderLogic<TKey> - Sales order processing
  • BasePOHeaderLogic<TKey> - Purchase order management
  • BaseItemMasterLogic<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 entries
  • IARHeaderViewModel<TKey> / IARDetailViewModel<TKey> - Sales invoices
  • IAPHeaderViewModel<TKey> - Purchase invoices
  • ISOHeaderViewModel<TKey> / ISODetailViewModel<TKey> - Sales orders
  • IPOHeaderViewModel<TKey> / IPODetailViewModel<TKey> - Purchase orders
  • IItemMasterViewModel<TKey> - Inventory items
  • ICompanyViewModel<TKey> - Customer and vendor information

Workflow Actions

Automate business processes with built-in workflow actions:

  • SendSOConfirmationEmail<TKey> - Automatically email sales order confirmations
  • SendShippingNotificationEmail<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

  1. Inherit from Base Classes - Don't reinvent accounting logic, extend the provided base classes
  2. Use LINQ Query Syntax - Follow the library's pattern of using query syntax over method chaining
  3. Implement Proper Validation - Use the built-in validation patterns for data integrity
  4. Handle Workflow States - Respect status fields to maintain proper accounting controls
  5. 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

.NET 8.0

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