Wednesday, June 14, 2023

Add additional total discounts to the sales total form using x++

Add additional total discounts to the sales total form using x++.

/// <summary>
/// extension class to apply total discounts on sales total forms
/// </summary>
[ExtensionOf(classstr(TradeTotals))]
public final class TradeTotals_Extension
{
    /// <summary>
    /// adds additional total discounts to the sales total form
    /// </summary>
    /// <returns>total discount</returns>
    public DiscAmount totalEndDisc()
    {
        endDisc = next totalEndDisc();

        if (orderTable.tableID == tableNum(SalesTable))
        {
            SalesTable salestableloc = orderTable;

            if (salestableloc.TotalDiscountAmount && salestableloc.SalesStatus != SalesStatus::Invoiced && balance)
            {
                return endDisc + ((balance / 100) * salestableloc.TotalDiscPercentage);

               // return endDisc + salestableloc.TotalDiscountAmount;
            }
        }
        return endDisc;
    }

    //public TaxAmountCur  totalTaxAmount()
    //{
    //    TaxAmountCur tax;
    //    tax = next totalTaxAmount();
	
    //    if (orderTable.tableID == tableNum(SalesTable))
    //    {
    //        SalesTable salestableloc = orderTable;
    //        if (salestableloc.TotalDiscountAmount && salestableloc.SalesStatus != SalesStatus::Invoiced)
    //        {
    //            return tax - salestableloc.TotalDiscountAmount ;
    //        }
    //    }
    //     return tax;
    //}

    public TaxAmountCur getInclTaxAmount_IN(Common _buffer)
    {
        TaxAmountCur  taxAmount;

        taxAmount = next getInclTaxAmount_IN(_buffer);

        if (orderTable.tableID == tableNum(SalesTable))
        {
            SalesTable salestableloc = orderTable;

            if (salestableloc.TotalDiscountAmount && salestableloc.SalesStatus != SalesStatus::Invoiced && balance)
            {
                return taxAmount - ((balance / 100) * salestableloc.TotalDiscPercentage);
            }
        }
        return taxAmount;
    }
}


/// <summary>
/// Retrieves the line amount excluding tax and adding total discount to line.
/// </summary>
[ExtensionOf(classStr(TaxSales))]
final class TaxSales_Extension
{
    /// <summary>
    /// Retrieves the line amount excluding tax (base amount) from the <c>SalesFormLetter</c> instance.
    /// </summary>
    /// <param name = "_lineAmount">Line amount.</param>
    /// <returns>The line amount excluding tax.</returns>
    [Replaceable]
    protected TaxBaseCur retrieveBaseAmount(AmountCur _lineAmount)
    {
        AmountCur       lineAmount;
        SalesTable      salesTableLoc;

        lineAmount = next retrieveBaseAmount(_lineAmount);

        salesTableLoc = salesLine.Salestable();

        if (salesTableLoc.TotalDiscountAmount != 0 && salesTableLoc.SalesStatus != SalesStatus::Invoiced)
        {
            lineAmount -= ((lineAmount / 100) * salesTableLoc.TotalDiscPercentage);
        }

        return lineAmount;
    }
}

Keep Daxing!!


No comments:

Post a Comment