quinta-feira, 18 de outubro de 2007

Impostos no AX - Class Tax - Parte 1

Como foi dito no post anterior a classe Tax é o motor de impostos do sistema, sendo uma das mais importantes se tratando de localização brasileira.

Alguns métodos importantes, por ordem de execução (macro) e alguns comentários para cada método:

protected void insertIntersection(TaxGroup _taxGroup,
Neste método, primeiro a ser chamado quando se trata de calcular impostos, nenhum valor é tratado e sim é feita a interseção dos dois grupos de impostos (TaxGroupData e TaxOnItem) e inicializada a tabela temporária tmpTaxWorkTrans, esta tabela tem extrema importancia no manuseio dos impostos no AX, e dela que se deve extrair as imformações enquanto a nota fiscal não é efetivamente registrada, como ela é temporaria e esta dentro da classe tax, deve ser tomado um cuidado especial quando tentar usala em um escopo fora desta classe, sempre acessando o método tmpTaxWorkTrans(), que retorna a tabela.


protected void insertLineInInternal(TaxBase _baseAmount,
Ao meu ver, o melhor lugar para se "trabalhar" com as bases dos impostos, é o primeiro lugar em que se pode alterar de qualquer maneira a base dos impostos sem que haja consequencias para o post dos impostos, da nota fiscal ou que quebre o método de calculo, calculo do limite mínimo ou máximo, etc... do imposto.


TaxAmount calcTax()
Método que efetivamente faz os impostos serem calculados, a principio tem uma maniera um pouco estranha de trabalhar ja que a tabela que é utilizada nesse escopo é a TmpTax e não a TmpTaxWorkTrans, o método organiza a sequencia de calculo, isto é, impostos que tem usa base de cálculo baseada no valor "net" são calculados primeiro que impostos que tem a base baseada no "gross", em outro momento posto sobre meu entendimento de "net" e "gross" aplicado as bases de impostos aqui no Brasil.
Quem efetivamente calcula os impostos é a propria tabela de imposto através do método TaxTable.calcTaxSimple e .calcTax, um ponto importante para a localização brasileira é que regras de negócio importantes estão definidas dentro desses métodos como a redução na ase de impostos e aumento da base de impostos, aplicada a substituição tributária.


public void saveAndPost()
Método que cria as transações de impostos e registra os lançamentos contábeis relativos aos impostos.


protected void post(TaxDirection _taxDirection,
Chamado pelo método saveAndPost, contém a lógica do registro no objeto LedgerVoucher.

Nenhum comentário: