Ola a todos,
Estava revirando meus jobs hoje e encontrei um que pode ser útil para alguns que ainda sofrem na hora de calcular os impostos de uma ordem de venda em aberto. Para isso, vamos usar a classe SalesTotals.
Acredito que ela seja bem familiar para aqueles que geralmente customizam o modulo de contas a receber no AX. Mas para os que ainda não a conhecem: a classe SalesTotals é responsavel pelos calculos dos totais de uma ordem de venda. Atraves dela são calculados os totais de encargos, peso, volume, quantidade, frete, seguro e etc.
Voltando ao nosso assunto…
Com a classe SalesTotals conseguimos tambem obter os valores de impostos que serão lançados para uma ordem de venda. Vamos analisar o código abaixo:
static void Teste_SalesTotals(Args _args) { // Localiza a ordem de venda e passa o buffer preenchido para o método construct SalesTable salesTable = SalesTable::find("OV_00172494"); SalesTotals salesTotals = SalesTotals::construct(salesTable); TmpTaxWorkTrans tmpTaxWorkTrans; ; // Atribui o retorno do método .tax().tmpTaxWorkTrans() para a tabela temporária tmpTaxWorkTrans.setTmpData(salesTotals.tax().tmpTaxWorkTrans()); while select tmpTaxWorkTrans index TaxCodeIdx { info(strfmt("Código do imposto: %1 | Valor: %2",tmpTaxWorkTrans.TaxCode,tmpTaxWorkTrans.SourceTaxAmountCur)); } } |
Passamos para o método construct da classe SalesTotals o table buffer da ordem de venda que queremos calcular os impostos. Este método contem 6 parametros, mas gostaria de destacar apenas 2. O primeiro, como já disse, trata-se do table buffer da ordem de venda. O segundo especifica a quantidade da atualização que gostariamos de calcular os impostos. Caso uma ordem de venda tenha 10 itens, mas temos a intenção de faturar apenas 2 itens, podemos especificar isso para a classe passando como parametro umas das opções do base enum SalesUpdate(Tudo, Separado, Entregar agora ou Guia de remessa).
Depois de instanciar nosso objeto, é preciso chamar o método salesTotals.tax().tmpTaxWorkTrans() e atribuir o seu retorno para uma variavel da tabela TmpTaxWorkTrans.
Pronto. Agora você tem uma tabela temporária preenchida com todos os impostos pertinentes aquela ordem de venda. Basta selecionar os registros de acordo com sua necessidade.
Abs,
Anderson Joyle
One Response
Patricia Santos
29|Jan|2014 1Bom dia,
Estamos com dificuldades no controle de frete, ja que o AX não vincula os conhecimentos de transporte com a nota fiscal.
Por gentileza, alguem teria uma solução para essa questão?
Aguardo.
Obrigada,
Patrícia Santos
Leave a reply