Need to implement TaxProvider for Movement

56 views
Skip to first unread message

shiju01

unread,
Feb 28, 2018, 8:06:34 AM2/28/18
to iDempiere
Hi Community

In INDIA after the implementation of GST  all Stock Transfer ie. Inventory Move across Region/States are Taxable Supplies

Therefore we need calculate tax on the cost Price of the Products in Movement Line table.

What is the best practice to implement TaxProvider


If we extend ITaxProvider as follows then core will generate the following error

Error: org.compiere.model.StandardTaxProvider cannot be cast to com.cattleya.model.ITaxProvider_CAT

MMovementLine_CAT

    protected boolean afterSave (boolean newRecord, boolean success)
    {
        if (!success)
            return success;
        MTax tax = new MTax(getCtx(), getC_Tax_ID(), get_TrxName());
        MTaxProvider provider = new MTaxProvider(tax.getCtx(), tax.getC_TaxProvider_ID(), tax.get_TrxName());
 
      ITaxProvider_CAT calculator = (ITaxProvider_CAT) Core.getTaxProvider(provider);

        if (calculator == null)
            throw new AdempiereException(Msg.getMsg(getCtx(), "TaxNoProvider"));
        return calculator.recalculateTax(provider, this, newRecord);
    }    //    afterSave

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ITAXPROVIDER_CAT

package com.cattleya.model;
 
import org.adempiere.model.ITaxProvider;
import org.compiere.model.MTaxProvider;
 
import org.compiere.model.MMovement;
import org.compiere.model.MMovementLine;
 
import com.cattleya.model.MMovement_CAT;
import com.cattleya.model.MMovementLine_CAT;
 
public interface ITaxProvider_CAT extends org.adempiere.model.ITaxProvider {
         
    public boolean calculateMovementTaxTotal(MTaxProvider provider, MMovement_CAT movement);
     
    public boolean updateMovementTax(MTaxProvider provider, MMovementLine_CAT line);
 
    public boolean recalculateTax(MTaxProvider provider, MMovementLine_CAT line, boolean newRecord);
 
    public boolean updateHeaderTax(MTaxProvider provider, MMovementLine_CAT line);
     
}

shiju01

unread,
Mar 12, 2018, 10:23:58 AM3/12/18
to iDempiere

I want extend the  Tax Provider   for Movement and MovementLine table

By following similar OrderTax, InvoiceTax i defined a new table MovementTax and added to a custom model package - com.cattleya.model.

Now the issue is

Error: org.compiere.model.StandardTaxProvider cannot be cast to com.cattleya.model.CAT_ITaxProvider


Ths issue is   Core.getTaxProvider(provider) cannot be assigned to an extented ITaxProvider as below

CAT_ITaxProvider calculator = (CAT_ITaxProvider) Core.getTaxProvider(provider);

on the other hand following also will not work

CAT_ITaxProvider calculator = Core.getTaxProvider(provider);

error: Type mismatch: cannot convert from ITaxProvider to CAT_ITaxProvider

Now stuck got stuck .. .what is the way forward ?


Reply all
Reply to author
Forward
0 new messages