Hoje vou mostrar como calcular os impostos, usando como base as tabelas de Orçamento de Venda (SCJ e SCK).
Eu fiz um artigo no passado, mostrando como calcular impostos em um pedido de venda – https://terminaldeinformacao.com/2017/01/17/funcao-retorna-total-pedido-de-vendas-com-impostos-em-advpl/
Acontece, que um dos meus alunos me perguntou como fazer o cálculo, mas usando as tabelas de Orçamentos. Basicamente jovens, o processo é o mesmo, só é invertido a tabela SC5 pela SCJ e a SC6 pela SCK, e os campos que não existem, você pode informar um valor default.
Então por exemplo, supondo que eu queira saber a alíquota de IPI ou de ICMS de um item, eu teria que usar o MaFisIni passando o tipo do cliente, depois o MaFisAdd, adicionando o item (ou os itens) da SCK, e depois de tudo, conseguir usar o MaFisRet para buscar o valor, e encerrar com o MaFisEnd. Abaixo o código de exemplo:
//Posiciona no cliente atual DbSelectArea("SA1") SA1->(DbSeek(FWxFilial("SA1") + SCJ->CJ_CLIENTE + SCJ->CJ_LOJA)) //Define o valor das variáveis que serão usadas cTipoCli := SA1->A1_TIPO nQuant := SCK->CK_QTDVEN nVlUnit := SCK->CK_PRCVEN nVlrTotal := SCK->CK_VALOR //Inicializa a função fiscal para poder simular os valores dos impostos MaFisIni(SA1->A1_COD, SA1->A1_LOJA, "C", "S", cTipoCli, , , .F., "SB1") //Posiciona no produto atual DbSelectArea("SB1") SB1->(DbSeek(FWxFilial("SB1") + SCK->CK_PRODUTO)) //Adicionando o produto para o cálculo dos impostos MaFisAdd(SB1->B1_COD, SCK->CK_TES, nQuant, nVlUnit, 0, "", "", , 0, 0, 0, 0, nVlrTotal, 0, SB1->(RecNo())) //Retorna a alíquota de IPI e de ICMS do item 1 nAliqIPI := MaFisRet(1, 'IT_ALIQIPI') nAliqICM := MaFisRet(1, 'IT_ALIQICM') //Se tiver alíquota de IPI If(nAlqIPI > 0) cMensIPI := "IPI Não Incluso" EndIf //Encerra a função fiscal MaFisEnd()
Bom pessoal, por hoje é só.
Abraços e até a próxima.