Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package com.spice.profitmandi.common.document.tax;

import com.spice.profitmandi.common.model.CustomOrderItem;

import java.util.List;

/**
 * Renders the tax portion of the item table in the folded style (rate folded into each amount
 * cell). The state axis is the extension point: {@link IntraStateTaxColumns} emits CGST + SGST,
 * {@link InterStateTaxColumns} emits IGST. Adding a new tax presentation (e.g. UTGST, cess) means
 * adding an implementation here — no section or document change.
 */
public interface TaxColumns {

    /** Column header labels, one per tax column (e.g. {@code ["CGST","SGST"]} or {@code ["IGST"]}). */
    List<String> headerLabels();

    /** Per-line cells, one per tax column, each amount with its rate folded below. */
    List<String> lineCells(CustomOrderItem item);

    /** Adds this line's tax amounts to the running totals. */
    void accumulate(TaxTotals totals, CustomOrderItem item);

    /** Total-row cells, one per tax column. */
    List<String> totalCells(TaxTotals totals);
}