انتقل إلى المحتوى الرئيسي

Return Invoice Posting - Voucher Entry Creation

Overview

Return invoice posting in the General Ledger module creates journal entries that reverse the original sales transaction when customers return products. The system automatically determines which posting strategies to apply based on return data and what was originally posted. This document explains what entries are created for each scenario and how different return features affect the final voucher.

Architecture

The return invoice posting system uses a modular reversal strategy pattern with the following main components:

Core Strategy Calculator

  • ReturnInvoicePostingStrategyCalculator: Main orchestrator that coordinates all reversal sub-strategies
  • ReturnInvoiceTransactionData: Comprehensive data structure containing all return information
  • PostingCalculationContext: Configuration context with posting profiles and master data

Individual Reversal Strategy Calculators

  1. ReturnEntriesPostingStrategyCalculator: Creates AR credit and Revenue debit reversals
  2. CostOfGoodsSoldReversalPostingStrategyCalculator: Creates COGS credit and Inventory debit reversals
  3. DiscountReversalPostingStrategyCalculator: Creates discount credit reversals
  4. VatReversalPostingStrategyCalculator: Creates VAT debit reversals

Posting Strategy Flow


Key Business Principle: Complete Reversal

Critical Concept: Return invoices create entries that are exactly opposite to the original sales invoice entries. Every debit becomes a credit, every credit becomes a debit.

Original Sales vs Return Comparison:

Original Sales TransactionReturn Transaction
DR Accounts ReceivableCR Accounts Receivable
CR RevenueDR Revenue
DR COGSCR COGS
CR InventoryDR Inventory
DR DiscountsCR Discounts
CR VAT PayableDR VAT Payable

Return Invoice Posting Scenarios

1. Basic Return Invoice (No COGS, No Discounts, No Tax)

Original Sales Invoice:

DR  Accounts Receivable - ACME Corp    $1,000
CR Revenue - Services $1,000

Return Invoice Data:

  • Customer: ACME Corp
  • Returned Service: $1,000
  • Return Reason: Customer Cancellation

Return Voucher Entries Created:

CR  Accounts Receivable - ACME Corp    $1,000   (Reduces customer balance)
DR Revenue - Services $1,000 (Reverses original revenue)

Strategy Applied: Return Entries only

Business Impact: Customer's outstanding balance reduced by $1,000, revenue reduced by $1,000.


2. Product Return with Cost of Goods Sold Reversal

Original Sales Invoice:

DR  Accounts Receivable - ACME Corp    $1,500
CR Revenue - Product A $1,500

DR Cost of Goods Sold - Product A $900
CR Inventory - Product A $900

Return Invoice Data:

  • Customer: ACME Corp
  • Returned Product A: $1,500 (original cost: $900)
  • Return Disposition: Returned to Stock

Return Voucher Entries Created:

# Revenue Reversal
CR Accounts Receivable - ACME Corp $1,500 (Reduces customer balance)
DR Revenue - Product A $1,500 (Reverses original revenue)

# COGS Reversal
DR Inventory - Product A $900 (Restores inventory asset)
CR Cost of Goods Sold - Product A $900 (Reverses original expense)

Strategies Applied: Return Entries + COGS Reversal

Business Impact:

  • Customer balance reduced by $1,500
  • Revenue reduced by $1,500
  • Inventory restored by $900
  • COGS expense reduced by $900

3. Return with Line Item Discount Reversal

Original Sales Invoice:

DR  Accounts Receivable - ACME Corp    $1,800
DR Sales Discount - Product A $200 (Line discount)
CR Revenue - Product A $2,000 (Full revenue)

Return Invoice Data:

  • Customer: ACME Corp
  • Returned Product A: $2,000, Discount: $200
  • Net Original Sale: $1,800, Return: $1,800

Return Voucher Entries Created:

# Revenue and AR Reversal
CR Accounts Receivable - ACME Corp $1,800 (Reduces net receivable)
DR Revenue - Product A $2,000 (Reverses full revenue)
CR Sales Discount - Product A $200 (Reverses discount debit)

Strategies Applied: Return Entries + Discount Reversal

Key Business Rule: The discount reversal creates a credit to the discount account, effectively reversing the original discount expense.


4. Return with Cash Discount Reversal

Original Sales Invoice:

DR  Accounts Receivable - ACME Corp    $1,960   (Net after cash discount)
DR Cash Discount - ACME Corp $40 (2% cash discount)
CR Revenue - Products $2,000 (Full revenue)

Return Invoice Data:

  • Customer: ACME Corp
  • Returned Products: $2,000
  • Cash Discount: $40 (2% reversal)

Return Voucher Entries Created:

CR  Accounts Receivable - ACME Corp    $1,960   (Reduces net receivable)
DR Revenue - Products $2,000 (Reverses revenue)
CR Cash Discount - ACME Corp $40 (Reverses discount expense)

Strategy Applied: Return Entries + Cash Discount Reversal


5. Return with VAT Reversal (Tax-Exclusive)

Original Sales Invoice:

DR  Accounts Receivable - ACME Corp    $1,200   (Including VAT)
CR Revenue - Products $1,000 (Revenue excluding VAT)
CR VAT Payable $200 (20% VAT liability)

Return Invoice Data:

  • Customer: ACME Corp
  • Returned Products: $1,000 (tax-exclusive)
  • VAT: $200 (20% VAT reversal)
  • Total Return: $1,200

Return Voucher Entries Created:

CR  Accounts Receivable - ACME Corp    $1,200   (Reduces receivable including VAT)
DR VAT Payable $200 (Reduces VAT liability)
DR Revenue - Products $1,000 (Reverses revenue)

Strategies Applied: Return Entries + VAT Reversal

Critical Business Rule: VAT reversal creates a debit to VAT Payable, reducing the company's VAT liability to tax authorities.


6. Return with VAT Reversal (Tax-Inclusive)

Original Sales Invoice:

DR  Accounts Receivable - ACME Corp    $1,000   (Tax-inclusive total)
CR Revenue - Products $833 (Revenue net of embedded VAT)
CR VAT Payable $167 (Embedded 20% VAT)

Return Invoice Data:

  • Customer: ACME Corp
  • Returned Products: $1,000 (tax-inclusive)
  • Embedded VAT: $167 (20% embedded VAT reversal)

Return Voucher Entries Created:

CR  Accounts Receivable - ACME Corp    $1,000   (Total return amount)
DR VAT Payable $167 (Reduces embedded VAT liability)
DR Revenue - Products $833 (Reverses net revenue)

Strategy Applied: Return Entries + VAT Reversal


7. Comprehensive Return Invoice (All Features)

Original Sales Invoice:

# Revenue and AR Posting
DR Accounts Receivable - ACME Corp $2,176 (Net total)
DR Cash Discount - ACME Corp $44 (Cash discount)
DR Sales Discount - Product A $50 (Line discount)
DR Sales Discount - Product B $100 (Line discount)
CR Revenue - Product A $1,000 (Full revenue)
CR Revenue - Product B $1,000 (Full revenue)
CR VAT Payable $370 (Tax liability)

# COGS Posting
DR Cost of Goods Sold - Product A $600 (COGS expense)
DR Cost of Goods Sold - Product B $600 (COGS expense)
CR Inventory - Product A $600 (Inventory relief)
CR Inventory - Product B $600 (Inventory relief)

Return Invoice Data:

  • Customer: ACME Corp
  • All products returned with costs, discounts, and VAT

Return Voucher Entries Created:

# Return Entries and Discount Reversals
CR Accounts Receivable - ACME Corp $2,176 (Reduces receivable)
DR VAT Payable $370 (Reduces VAT liability)
DR Revenue - Product A $1,000 (Reverses revenue)
DR Revenue - Product B $1,000 (Reverses revenue)
CR Cash Discount - ACME Corp $44 (Reverses cash discount)
CR Sales Discount - Product A $50 (Reverses line discount)
CR Sales Discount - Product B $100 (Reverses line discount)

# COGS Reversal
DR Inventory - Product A $600 (Restores inventory)
DR Inventory - Product B $600 (Restores inventory)
CR Cost of Goods Sold - Product A $600 (Reverses COGS)
CR Cost of Goods Sold - Product B $600 (Reverses COGS)

All Strategies Applied: Return Entries + COGS Reversal + Discount Reversals + VAT Reversal

Total Debit Balance: $4,450 Total Credit Balance: $4,450


Strategy Selection Logic

The system automatically determines which reversal strategies to apply:

Return Entries Strategy (Always Applied)

  • Condition: Return has lines
  • Purpose: Create AR credit and Revenue debit reversals

COGS Reversal Strategy

  • Condition: transactionData.HasItemCosts (any line has ItemCost > 0)
  • Purpose: Create COGS credit and inventory debit entries to restore inventory

Discount Reversal Strategy

  • Condition: transactionData.HasDiscounts (TotalDiscountAmount > 0 OR CashDiscountAmount > 0)
  • Purpose: Create discount credit entries to reverse original discount debits

VAT Reversal Strategy

  • Condition: transactionData.HasTax (TotalTaxAmount > 0)
  • Purpose: Create VAT payable debit entries to reduce tax liability

Return Disposition Handling

Return to Stock (Sellable)

DR  Inventory - Product A (Sellable)   $600
CR Cost of Goods Sold $600

Business Impact: Items returned to sellable inventory at original cost.

Return to Stock (Damaged)

DR  Inventory - Product A (Damaged)    $400     (Reduced value)
DR Inventory Write-Down $200 (Loss recognition)
CR Cost of Goods Sold $600 (Original cost reversal)

Business Impact: Items returned at reduced value with loss recognition.

Return - Scrap/Dispose

DR  Disposal Expense                   $600
CR Cost of Goods Sold $600

Business Impact: Items written off as disposal expense, no inventory restoration.


Account Resolution & Traceability

Hierarchical Account Lookup

Returns use the same posting profile as sales to ensure reversals use identical accounts:

  1. Item-Specific Account: Same account used in original sale
  2. Category-Specific Account: Same account used in original sale
  3. Default Account: Same account used in original sale

Posting Types Used

  • PostingType.SalesRevenue: Same revenue accounts as original sale
  • PostingType.CostOfGoodsSold: Same COGS accounts as original sale
  • PostingType.CostOfUnits: Same inventory accounts as original sale
  • PostingType.SalesDiscount: Same discount accounts as original sale

Traceability Features

  • Original Invoice Number: Links return to original transaction
  • Original Line Numbers: Links return lines to original invoice lines
  • Return Reason Codes: Categorizes returns for analytics
  • Return Disposition Codes: Tracks what happens to returned items

Business Impact Analysis

Financial Statement Impact

Account TypeOriginal SaleReturnNet Effect
Accounts Receivable+$1,200 (DR)-$1,200 (CR)$0
Revenue+$1,000 (CR)-$1,000 (DR)$0
VAT Payable+$200 (CR)-$200 (DR)$0
Inventory-$600 (CR)+$600 (DR)$0
COGS+$600 (DR)-$600 (CR)$0

Result: Complete reversal returns all accounts to pre-sale positions.

Partial Returns

For partial returns, only the returned portion is reversed:

Example: 50% Return

  • Original Sale: $1,000 revenue, $600 COGS
  • 50% Return: $500 revenue reversal, $300 COGS reversal
  • Net Position: $500 revenue, $300 COGS remaining

Dimensional Accounting Integration

Default Dimensions

  • Customer Dimensions: Same as original sale for consistency
  • Item Dimensions: Same as original sale for proper tracking
  • Return-Specific Dimensions: Return reason, disposition tracking

Example with Dimensions

# Original Sale
DR AR - ACME [Dept:Sales, Region:East] $1,200
CR Revenue [Dept:Sales, Product:A] $1,000
CR VAT [Dept:Sales, Region:East] $200

# Return Reversal
CR AR - ACME [Dept:Sales, Region:East] $1,200
DR VAT [Dept:Sales, Region:East] $200
DR Revenue [Dept:Sales, Product:A] $1,000

Technical References

Business Process References

Cross-Reference Documentation


Last Updated: [2025-09-19] | Version: 1.0 | Status: Active Development