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.
quinta-feira, 18 de outubro de 2007
Impostos no AX - Class Tax - Parte 1
Postado por
Matiazo
às
02:36
0
comentários
Impostos no AX - Visão geral
O termo Imposto é usado em 10 de 10 conversas sobre ERPs no Brasil, e claro, é foco de preocupações quando se fala de ERPs internacionais.
Tecnicamente falando, os impostos no AX são dividos em 2 classes básicas:
1. Tax
2. TaxWithhold
class Tax
A classe Tax é a base do potente motor de impostos do AX ela é responsável por descobrir que impostos devem ser calculados, trabalhar em cima das bases dos impostos até chegar na base final, que vai ser usada para efetivamente o calculo dos impostos e finalmente e registrar-los contabilmente.
Essa classe é utilizada em todos os lugares do sistema onde se vê Impostos sobre Vendas (Sales Tax), isto é, atua no momento que uma nota fiscal (seja ela se vendas, compras, projetos) é postada no sistema.
class TaxWithhold
Esta classe trabalha no famigerado calculo de impostos retidos no pagamento (seja ele de clientes ou fornecedores). Diferente dos impostos sobre vendas, os impostos aqui são calculados com base em um único grupo de impostos e não a interseção (união de 2 grupos) de grupos de impostos. A classe cumpre a tarefa de descobrir a base do imposto, calculá-la e registra-la contabilmente.
Um detalhe importante é que diferente da classe Tax. a classe TaxWithhold não é uma super classe totalmente genérica, criada para a retenção de impostos (ou um único imposto) no pagamento a fornecedores para a Itália, foi estendida para o Brasil para também tratar pagamentos recebidos de clientes, para isso, temos a classe:
TaxWithhold_CustPaym extends TaxWithhold, onde os métodos mais importantes da classe TaxWithhold são sobrescritos para tratar os impostos com base na tabela CustTrans e não VendTrans.
Histórico sobre retenção no pagamento:
Criada pela lei 10.833 de 2003 que diz que para uma serie de serviços, quem contrata o serviço é obrigado a reter, no ato do pagamento (e não do faturamento) o imposto, com o detalhe que ele so começa a ser retido após após o pagamento a partir 5000,00 e pior ainda, cumulativo, isto é, para um pagamento de 3000,00, não há impostos, para outro pagamento, no mesmo mes de 3000,00, deve ser retido os impostos com base em 6000,00 e a partir daí, todos os pagamentos devem ter o imposto retido.
Postado por
Matiazo
às
01:41
12
comentários
Marcadores: Classes, Impostos, Tax, TaxWithhold
segunda-feira, 8 de outubro de 2007
Job para verificar labels em um arquivo XPO
Para quem desenvolve modificações "localizadas", isto é, em mais de um idioma, eu criei um pequeno job, muito simples na verdade, que verifica, em um arquivo XPO, as propriedades "label", "helptext", "caption" e mostra a linha e o conteúdo caso não encontre o @ necessário para toda etiqueta.
Utilize as constantes para procurar pelas propriedades pré-definidas, esse job pode ser estendido para refinar o review dessas propriedades.
A ideia é facilitar o code review antes de um build para teste ou deploy em um cliente.
Até mais,
Matiazo
static void VerifyLabels(Args _args)
{
#define.label('Label #')
#define.menu('MENU #')
#define.helptext('HelpText #')
#define.caption('Caption #')
AsciiIo f = new AsciiIo('C:\\exported.xpo', 'r');
container line;
int pos;
str a;
int linenum=1;
int arroba;
;
f.inFieldDelimiter('\n');
f.inRecordDelimiter('\n');
while(!f.status())
{
line = f.read();
a = con2str(line);
pos = strscan(a,#label,0,strlen(a));
if(pos)
{
arroba = strscan(a,'@',0,strlen(a));
if(!arroba)
{
info(strfmt('%3 (%1) -> %2',pos, substr(a,pos,50),linenum));
}
}
pos = 0;
linenum++;
}
}
Postado por
Matiazo
às
23:07
0
comentários
segunda-feira, 27 de agosto de 2007
Relações entre tabelas no Report Wizard
Quando se deseja fazer um relatório utilizando o Report Wizard, após selecionar a tabela desejada no field tree "All Tables" pode ser que o field tree "Tables that are related to the selected tables" não seja preechido corretamente ou mesmo não apareça uma relação recem criada.
Para resolver o problema, é necessário acessar o Cross Reference e atualizar o data model. Para isso, acesse Tools>Development Tools>Cross-Reference>Periodic>Update
Clique em Update Data Model e aperte ok.
O Ax vai então atualizar o data model e as relações aparecerão corretamente tanto no report wizard como nos filtros avançados. Para os que usam a localização do Brasil, as relações também aparecerão corretamente no Cofigurador (feature que ajuda a criar layouts de arquivos para exportação, voltada a usuários avançados ou consultores).
Abs,
Rodrigo
Postado por
Matiazo
às
18:18
0
comentários
Marcadores: Configurador, Filtros, Query, Report Wizard
quarta-feira, 1 de agosto de 2007
Dicas e Truques - Pesquisa Global
Olá a todos,
Mais um post, agora visando a utilização de um novo recurso introduzido na versão 4.0 do Dynamics AX chamada Pesquisa Global. Essa pesquisa auxilia o usuário a rastrear informações de maneira simples e rápida, porém para utilizar esse recurso é preciso antes ter em mente quais os tipos de rastreamento que o usuário final poderá executar. Criarei abaixo um cenário para que o entendimento sejá mais fácil.
José trabalha no departamento de compras de uma empresa, e recebe um telefonema de seu gerente perguntando sobre quais pedidos de compra foram feitos para o item MP001 e qual o saldo atual de estoque.
O caminho normal seria abrir o sistema, clicar na guia de contas a pagar e em seguida em ordem de compra. Por final, um procedimento parecido deveria ser feito no item para checar seu saldo em estoque. Por sua vez com a procura global, deveríamos previamente configurar as respectivas tabelas para esse exemplo, que são:
- purchLine
- inventTable
1 - Configurar as Tabelas em :
Basico > Rastreamento de Dados : Configuração de Tabela
2 - Iniciar o Rastreador em :
Basico > Rastreamento de Dados : Rastreador de Dados
3 - Realizar a consulta utilizando a pesquisa global. Podemos inciciar a pesquisa clicando em Editar > Localizar ou simplesmente usando as teclas Ctrl + F.
No caso citado utilizei como fonte de pesquisa o item MP001 e a pesquisa como podemos ver, nos retorna a quantidade de registros e suas respectivas categorias e ao invés de se fazer todo o caminho, podemos simplesmente clicar nos link´s e ter acesso diretamente a informação requisitada.
Por hora é só. Até o próximo post.
Postado por
Daniel Zanni
às
11:56
0
comentários
terça-feira, 31 de julho de 2007
Mercado - Visão geral de recursos disponíveis no sistema.
Bom, começamos o blog tratando de aspectos técnicos e históricos do ERP Microsoft Dynamics AX.
As dicas e tutoriais auxiliam na área técnica, mas se você não pertence a esse contexto, certamente deseja saber o que o Dynamics AX possui que pode agregar valor à sua empresa.
O Dynamics tem sua origem no chão de fábrica. O seu módulo de produção é talvez um dos mais complexos disponíveis no mercado.
Através de uma boa implantação, é possível integrar as inúmeras variáveis existentes no universo da manufatura, gerenciamento de estoques, supply chain management, MRP e MPRII, WMS e CRM, todos eles interligados, gerando impacto na gestão financeira.
Os resultados podem ser analisados através de relatórios comuns, cubos OLAP e balanced scorecards.
Outro ponto forte é a navegabilidade. Para um usuário autorizado, é possível através de uma nota-fiscal, visualizar os movimentos contábeis em dois ou três cliques. Ainda é possível buscar os dados da lista de materiais utilizada no processo e consequentemente visualizar item a item, os custos de produção de determinado bem ou serviço.
Essa visibilidade possibilita que os usuários tenham as informações em mãos sem a necessidade de conhecer caminhos complicados ou códigos de nomes de tela, como é encontrado em outros ERPs no mercado.
Com todas as ferramentas integradas, o Microsoft Dynamics AX, aliado ao Microsoft Office pode se tornar ao mesmo tempo um sistema para controle de operações, utilizando o seu potencial WMS, gerenciar a demanda de materiais, através do MRP, consolidar as operações de custeio e determinação dos preços de venda, através do seu módulo Financeiro/Contábil, e por fim, gerar relatórios de Business Intelligence customizáveis às necessidades.


Postado por
André dos R. Santos
às
10:25
0
comentários
Componentes COM
Olá.
Hoje eu irei falar sobre a integração do Microsoft Dynamics AX com componentes COM, que não foram construídos sobre o .NET framework. (C++, Visual Basic 6, etc..)
Hoje irei mostrar os primeiros passos, através do COM Class Wrapper Wizard.
Esse assistente já faz todo o trabalho: Importa o arquivo, declara as classes e já faz referência ao seu registro no Windows.
Para acessá-lo, vá ao menu Tools > Development Tools > Wizards > COM Class Wrapper Wizard.
Passo 1: Selecione o componente da lista, como é feito na maioria das IDE's.
Passo 2: Selecione uma máscara a ser adicionada aos nomes das classes, para que você possa futuramente distinguir dos objetos do sistema. EX:
Passo 4: Os elementos são exibidos e estão prontos para utilização.
Postado por
André dos R. Santos
às
08:41
0
comentários
sexta-feira, 27 de julho de 2007
Dicas e Truques - "Tunando" o Axapta
Olá a todos,
Primeiro post considerado "polêmico" pelo pessoal aqui. Muitos não gostam da ideia de add-ins como os feitos no firefox e já falaram pra eu não ficar fuçando muito nas classes de sistema, mas em alguns casos acho válido, já que uma das caracteristicas principais do Axapta é justamente o fato de você poder modificar uns 90% do sistema em si.
Pois bem, estou fazendo uns testes com 2 ferramentas de desenvolvimento. São elas:
- TabAX ( Que cria uma nova barra com funções das mais diversas e introduz um conceito de abas para os forms já abertos e diversos atalhos como compare e outros)
- SysTableBrowser (Que na verdade é uma melhoria da SysTableBrowser tradicional, onde são implementadas novas possibilidades como a seleção dos campos que serão exibidos na grid.)
SysTableBrowser
Standard

Tunado

TabAX
Até o próximo post.
fonte: Axaptapedia
download do TabAX
download do SysTableBrowser
Postado por
Daniel Zanni
às
18:45
0
comentários
Nome da instância na barra de títulos
Olá a todos!
Essa dica é bem simples.
Quando se trabalha com várias instâncias do Dynamics AX simultaneamente, como por exemplo, um application em produção e outro para base de testes, é interessante ter o nome das instâncias à vista, para diferenciá-las de maneira rápida.
Utilizando o código citado abaixo, o application instance configuration name será exibido na barra de títulos, juntamente com as informações de licença. Isso é tratado pela classe Info, conforme exemplo:
void workspaceWindowCreated(int _hWnd)
{
;
// Put workspace window specific initialization here.
WinAPI::SetWindowText(_hWnd, strFmt("%1 - %2",WinAPI::getWindowText(_hWnd), xInfo::configuration()));
}
Na barra de títulos, o caption ficará:
[Título pré-existente] - AX_PRODUCAO.
ou
[Título pré-existente] - AX_BASE_TESTES.
Hope it helps!
Fonte do código: www.axaptapedia.com
Postado por
André dos R. Santos
às
08:00
0
comentários
quinta-feira, 26 de julho de 2007
Primeiro post.
Criamos este blog para realizar uma troca de idéias sobre o ERP Microsoft® Dynamics AX.
Começarei colocando um link para o histórico do Microsoft Dynamics AX, que já foi Microsoft Business Solutions Axapta, Navision Axapta, Damgaard Axapta e por aí vai.
Link: MBS Advisor - Histórico AX.
(em inglês).
Postado por
Axapta Brasil
às
08:10
3
comentários